发明内容
本发明提供一种人工智能集成电路,包括:一命令处理器,用以解析一命令队列以产生一或多个任务;多个处理组件,其中各处理组件为平行设置;一任务生成器,用以接收来自该命令处理器的该任务以产生多个线程(thread)以控制所述多个处理组件;一第一级(L1)高速缓存;以及一第二级(L2)高速缓存。各处理单元包括:多个算术逻辑单元,用以执行算术及逻辑运算;多个深度学习加速器,用以执行矩阵乘加运算、激励函数及池化;一通用缓存器组,用以储存所述多个算术逻辑单元及该深度学习加速器在运算时所需的数据及中间结果;以及一存取控制器,用以控制该L1高速缓存及L2高速缓存的数据读写操作。
在一些实施例中,该存取控制器用以控制该L1高速缓存及L2高速缓存动态预取储存于该人工智能集成电路外部的一存储器单元的数据以供所述多个深度学习加速器的矩阵乘加运算使用。该存储器单元为一动态随机存取存储器或与该人工智能集成电路电性连接的一主机中的主机缓存存储器。
在一些实施例中,该L1高速缓存包括一第一预取电路且该L2高速缓存包括一第二预取电路,且该第一预取电路及该第二预取电路分别由该L2高速缓存及该存储器单元预取数据。
在一些实施例中,当该存取控制器写入第一数据至该L1高速缓存时,该第一预取电路将该第一数据经由一第一数据压缩器进行第一数据压缩处理以产生第二数据,再将该第二数据写入该L2高速缓存,其中,该第二预取电路经由一第二数据压缩器进行第二数据压缩处理以产生第三数据,再将该第三数据写入该存储器单元。
在一些实施例中,该第一数据压缩处理使用用于展开矩阵数据的压缩算法,对该第一数据进行压缩以产生该第二数据,且该第二数据压缩处理使用基于残差的图像压缩算法及稀疏矩阵压缩算法,对来自该L2高速缓存的该第二数据进行压缩以产生该第三数据。
在一些实施例中,当该存取控制器欲读取储存于该存储器单元的该第三数据时,该第二预取电路经由一第二解压缩电路对该第三数据进行第二数据解压缩处理以得到该第二数据,并将该第二数据储存于该L2高速缓存,且该第一预取电路将储存于该L2高速缓存的该第二数据直接传送至各处理组件中的一第一解压缩电路以对该第二数据进行第一数据解压缩处理以得到该第一数据,并且将该第一数据储存于各处理组件的该通用缓存器组。
在一些实施例中,该深度学习加速器包括:一矩阵乘加器,用以对该第一数据进行矩阵乘加运算以产生一第一矩阵运算结果;一激励函数电路,用以对该第一矩阵运算结果进行激励以产生一第二矩阵运算结果;以及一池化电路,用以对该第二矩阵运算结果进行池化以产生一最终结果,并将该最终结果储存于该通用缓存器组。
在一些实施例中,响应于储存于该通用缓存器组中用于矩阵卷积运算的该第一数据就绪时,该深度学习加速器将该第一数据读取至该深度学习加速器内部的一缓存器组,并从该缓存器组将该第一数据读取至该矩阵乘加器以进行矩阵乘加运算。
在一些实施例中,该第一预取电路及该第二预取电路可被设定为一硬件模式或一软件模式,其中,当该第一预取电路及该第二预取电路被设定为该硬件模式时,该第一预取电路及该第二预取电路依据先前所抓取的数据进行地址预测,并依据预测的地址以分别从该L2高速缓存及该存储器单元预先抓取数据,其中,当该第一预取电路及该第二预取电路被设定为该软件模式时,该第一预取电路及该第二预取电路依据软件所提供的提示信息以分别从该L2高速缓存及该存储器单元预先抓取数据。
在一些实施例中,该矩阵乘加器支持任意规格的矩阵乘法以及稀疏矩阵的加速乘法,并且可根据矩阵规模及稀疏性以决定循环(loop)计算的方式。该激励函数电路支持整流线性单元(rectified linear unit,ReLU)、sigmoid及tanh函数。该池化电路对该第二矩阵运算结果进行平均池化或最大池化以产生该最终结果。
在一些实施例中,该人工智能集成电路支持OpenCL、CUDA、及DirectCompute的应用程序编程接口,并且不包括3D绘图功能模块。
具体实施方式
以下说明为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的发明内容必须参考之后的权利要求范围。
必须了解的是,使用于本说明书中的"包含"、"包括"等词,用以表示存在特定的技术特征、数值、方法步骤、作业处理、组件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。
于权利要求中使用如"第一"、"第二"、"第三"等词用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。
第1图显示依据本发明一实施例的人工智能集成电路的方块图。如第1图所示,人工智能集成电路100主要包括命令缓存器(command buffer)110、命令处理器(commandprocessor)120、任务生成器(task construct)130、多个处理组件(processing element,PE)140、第一级高速缓存(L1 cache)150、第二级高速缓存(L2 cache)160及混合转换单元170。
命令缓存器110用以接收来自一主机端的运算指令,并且以命令队列的方式依序储存上述运算指令。在一些实施例中,命令缓存器110例如可为一先进先出缓存器(first-in-first-out buffer),但本发明并不限于此。
命令处理器120用以检测在命令缓存器110的命令队列中的待处理命令,并且依据基于权重的调度算法以解析命令队列(例如包含项目1101~110N)中的命令,并且分发命令至任务生成器130以控制不同的处理组件140。任务生成器130依据来自命令处理器120的命令以生成各个处理组件140需执行的任务(task)或是线程(thread)。举例来说,命令处理器120可解析OpenCL、CUDA、或DirectCompute等等的通用GPU应用程序编程接口(applicationprogramming interface,API)的命令,并分发命令至任务生成器130。
各处理组件140包括多个计算单元141、多个数据解压缩器142、存储器控制器143、及存取控制器144,其中各计算单元141对应至各数据解压缩器142。此外,人工智能集成电路100支持虚拟化,且允许数十个不同的任务平行运行,例如各处理组件140可依据个别的线程进行平行运算。
各计算单元141包括算术逻辑单元(arithmetic logic unit,ALU)1411、深度学习加速器(deep learning accelerator,DLA)1412、通用缓存器组(common register file,CRF)1413。算术逻辑单元1411依据来自任务生成器130的线程以进行通用的算术及逻辑运算。深度学习加速器1412用以进行人工智能/深度学习的相关运算,例如任意规模的矩阵乘加运算(matrix multiplication-addition calculation,MAC)、稀疏矩阵加速乘法、激励函数(activation function)、及池化(pooling)。通用缓存器组1413用以储存算术逻辑单元1411及深度学习加速器1412的输入矩阵、运算结果或中间数值。
数据解压缩器142例如为一矩阵解压缩器,其用以对从L1高速缓存150所读取的压缩矩阵数据进行解压缩,并将解压缩后的矩阵数据储存于各计算单元141中的通用缓存器组1413或是深度学习加速器1412中的通用缓存器组(第1图未绘示)。各数据解压缩器142通过总线145而互相耦接。
存储器控制器143用以控制静态随机存取存储器(SRAM)148,且静态随机存取存储器148例如可储存各处理组件140进行计算时所需的暂存数值或数据。存取控制器144用以写入数据至存储器阶层或从存储器阶层读取数据,其中上述存储器阶层包括L1高速缓存150、L2高速缓存160、及动态随机存取存储器180。
L1高速缓存150电性连接至总线145。各数据解压缩器142可视运算的需求及一预定高速缓存机制而将数据储存至L1高速缓存150、L2高速缓存160、及/或动态随机存取存储器180(或是主机缓存存储器(host buffer memory,HBM)),其中上述预定高速缓存机制例如可由各处理组件140中的存储器控制器所控制。L1高速缓存150及L2高速缓存160可分别做为存储器阶层(memory hierarchy)中的第一级高速缓存及第二级高速缓存,且L1高速缓存150的储存容量小于L2高速缓存160。在一些实施例中,L1高速缓存150的储存容量例如为8K位(bits),且L2高速缓存160的储存容量例如为2K位(bits),但本发明并不限定于上述储存容量。
当各处理组件140进行数据储存时,会将在通用缓存器组1413中的第一数据(例如为影像数据或矩阵数据)写入至L1高速缓存150。当L1高速缓存150欲将第一数据储存至L2高速缓存160时,数据压缩器155(例如为一矩阵数据压缩器)执行第一数据压缩处理以压缩第一数据150以产生第二数据,再将第二数据写入L2高速缓存160。若L2高速缓存160欲再将第二数据写入至动态随机存取存储器180时,压缩器163使用第二数据压缩处理以压缩第二数据以产生第三数据,再将第三数据写入动态随机存取存储器180,其中第三数据即为经过二次压缩的数据。
在一些实施例中,因为人工智能/深度学习的矩阵运算需要使用大量展开的矩阵数据,故上述第一数据压缩处理可利用本发明领域中习知的矩阵压缩算法以压缩展开的矩阵数据。此外,上述矩阵数据亦常为稀疏矩阵(sparse matrix)及图像数据,故上述第二数据压缩处理可利用本发明领域习知的基于残差(residue)的图像压缩算法及稀疏矩阵压缩算法所实现。需注意的是,第一数据压缩处理及第二数据压缩处理均属于无损(lossless)压缩算法,藉以保证数据的正确性。
如第3图所示,L1高速缓存150所储存的数据(例如为未压缩过的数据)可分为4个区段(segment)301~304,且L1高速缓存150的总容量为8K位,每个区段301~304的大小例如为2K位。当L1高速缓存150各区段的数据经过数据压缩器155使用第一数据压缩处理进行第一次压缩后可得到区段311~314的压缩数据,其中每个区段311~314的大小例如为0.5K位,且L2高速缓存160的总容量为2K位。需注意的是,本发明并不限定于上述容量的L1高速缓存150及L2高速缓存160,且数据压缩比例亦可视实际情况而进行调整。
请再参考第1图,在一实施例中,L1高速缓存150包括一预取电路(pre-loadcircuit)151,用以控制L1高速缓存150的数据写入L2高速缓存160以及读取L2高速缓存160的数据(例如为压缩数据),且预取电路151可设定为软件模式或硬件模式。类似地,L2高速缓存160包括一预取电路(pre-load circuit)161,用以控制L2高速缓存160的数据写入动态随机存取存储器180以及读取动态随机存取存储器180的数据,且预取电路151可设定为软件模式或硬件模式。
举例来说,当预取电路151被设定为软件模式时,预取电路151可依据软件所提供的提示信息(hint information)提供抓取数据(例如为矩阵卷积运算所需的矩阵数据及参数)至L1高速缓存150中。当预取电路151被设定为硬件模式时,预取电路151则根据之前所抓取的数据进行地址预测(address prediction),并依据预测的地址预先抓取数据(例如为矩阵卷积运算所需的矩阵数据及参数)。
如果在L1高速缓存150的高速缓存行(cache lane)还有剩余空间,则预取电路151会自动发出读取要求(read request)以从L2高速缓存160预先抓取数据,且这些预先抓取的数据会在L1高速缓存150中被标示为预取数据(preload data),其中上述预取数据例如可为矩阵数据。因为L1高速缓存150的高速缓存替换机制的关系且上述预取数据并不会被处理组件140参考使用到,故上述预取数据的参考计数值(reference count)为0,其中参考计数值即表示当前数据需要被处理组件140所使用的次数,且每当当前数据被处理组件140使用一次,其相应的参考计数值会减1。若当前数据的参考计数值减至0时,表示当前数据已被使用完毕,且即可从L1高速缓存150释放(release)。由此可知,预取电路151仍然有机会在上述预取数据被使用之前就将部分的预取数据替换出去。
举例来说,上述高速缓存替换机制在替换L1高速缓存150中的数据的优先级由高而低分别为未被分配的高速缓存行、参考计数值为0的非预取高速缓存行、以及预取的高速缓存行。此外,预取电路151在硬件模式下的预取操作会依据预取矩阵数据的替换状态以加强或降低预取的力度(strength)。若预取矩阵数据被快速地替换出去,则预取电路151会以较高的频率或数据量预先抓取矩阵数据。相反地,若预取数据很少被替换出去,则预取电路151则会降低预先抓取数据的频率或数据量。
L2高速缓存160中的预取电路161同样可被设置为软件模式或硬件模式,但预取电路161是从动态随机存取存储器180预先抓取数据,其行为类似于L1高速缓存150中的预取电路151,故其细节于此不再详述。需注意的是,当预取电路161欲将L2高速缓存160中的一次压缩矩阵数据写入动态随机存取存储器180或是主机缓存存储器时,一次压缩矩阵数据会再被压缩器163执行第二次压缩后才会写入动态随机存取存储器180或是主机缓存存储器。因此,人工智能集成电路100写入至在其外部的动态随机存取存储器180的是经过二次压缩后的数据,故可大幅降低传输时的数据量以节省带宽。
由上述实施例可知本发明中的L1高速缓存150及L2高速缓存160支持动态预取数据,故可降低在进行矩阵运算时的抓取数据的延迟(latency)。此外,本发明中的L1高速缓存150及L2高速缓存160更支持压缩储存,可大幅减少储存数据时的带宽需求,故可降低储存运算中间结果的压力。
上述实施例主要是介绍将数据的压缩/编码储存的流程。若是处理组件140中的存取控制器144欲从动态随机存取存储器180读取数据,则数据的解压缩/译码的流程与压缩/编码的流程相反。
混合转换单元170用以进行虚拟地址到物理地址的转换、安全检查、页表(pagetable)的管理、分发命令请求到不同的汇流排、全局同步等等。其中,点到点(Peer toPeer)的PCIE设备182可连接至混合转换单元。此外,混合转换单元170可通过高速总线184以连接至在系统内的其他芯片。
第2图为依据本发明一实施例的数据处理流程的示意图。
首先,命令处理器120分析在命令缓存器110中的命令队列中的命令,并提供任务给任务生成器130。任务生成器130依据命令处理器120提供的任务以产生提供至各处理组件140的多个线程(thread)20-1~20-N,其中每个线程管理32~64个平行的任务。各处理组件140中的算术逻辑单元1411依据上述任务以进行地址计算、同步、管理、及特殊计算的操作。当处理组件140要进行卷积运算(例如矩阵卷积运算)时,线程20-1~20-N会通过存取控制器144去动态随机存取存储器180抓取卷积运算所需的参数及数据(例如为矩阵数据)。举例来说,在执行卷积运算之前,线程20-1~20-N可控制存取控制器144以通过路径251将尚未使用到的矩阵数据进行二次压缩并写入至动态随机存取存储器180或主机缓存存储器,其中路径251的细节可参考第1图的实施例。
因为动态随机存取存储器180所储存的数据是经过二次压缩的数据(例如为第一数据压缩数据),所以与要抓取的上述参数及数据有关的第一数据压缩数据会先经过混合转换单元170进入解压缩器164以进行第一级解压缩,其中第一级解压缩例如包括稀疏矩阵的展开及对已经过色彩压缩的数据进行无损解压缩以产生第二压缩数据。
为了充分利用L1高速缓存150至各处理组件140中的通用缓存器组1413的带宽,数据解压缩器142置于L1高速缓存150及各处理组件140的通用缓存器组1413之间。举例来说,L1高速缓存150至各处理组件140的带宽有限,若是将数据解压缩器142设置于各处理组件140之外,则数据解压缩器142对上述第二压缩数据进行矩阵解压缩后会形成展开的矩阵数据,故其数据量相较于第二压缩数据会膨胀4~8倍左右。因此,本发明的数据解压缩器142置于L1高速缓存150及各处理组件140的通用缓存器组1413之间,且可同时服务多个处理组件140。当需要进行运算的各处理组件140从L1高速缓存150接收到第二压缩数据后,各处理组件140中的数据解压缩器142对第二压缩数据进行解压缩以产生展开的矩阵数据,并将上述矩阵数据储存于通用缓存器组1413。
详细而言,在深度学习加速器1412中进行矩阵的卷积运算需要大量的矩阵数据,且上述矩阵数据事先储存于通用缓存器组1413。因此,上述从L1高速缓存150接收第二压缩数据并对第二压缩数据进行解压以产生矩阵数据的流程可能需要重复数次才能累积到深度学习加速器1412中进行卷积运算所需的矩阵数据的数量。当储存于通用缓存器组1413中的矩阵数据已就绪(ready)后,深度学习加速器1412即可将矩阵数据从通用缓存器组1413读取至深度学习加速器1412中的通用缓存器组211,并且从通用缓存器组211将矩阵数据212输入至矩阵乘加器216。矩阵乘加器216例如支持任意规格的矩阵乘法以及稀疏矩阵的加速乘法,并且可根据矩阵规模及稀疏性以决定循环(loop)计算的方式。
在一些实施例中,在每个时钟周期,矩阵乘加器216例如可执行256个乘加运算。若矩阵乘加器216所计算出的结果是最终结果,则矩阵乘加器216可将上述最终矩阵乘加结果输入至激励函数电路(activation-function circuit)217以执行激励以在深度学习的类神经网络中引入非线性关系。其中,激励函数电路217例如可支持整流线性单元(rectifiedlinear unit,ReLU)、sigmoid、tanh等函数,但本发明并不限于此。此外,若深度学习加速器1412判断矩阵乘加器216的结果需要进行池化(pooling)或次取样(subsampling),则矩阵乘加器216可将上述最终结果输入至池化电路218或是激励函数电路217的处理结果输入至池化电路218,藉以进行平均池化(mean pooling)或最大池化(max pooling)等操作。经过激励函数电路217及/或池化电路218处理后的矩阵乘加结果例如为类神经网络的其中一个运算层的最终结果,且最终结果会被写回至通用缓存器组1413以供下一运算层使用。
综上所述,本发明提供一种人工智能集成电路,其保留了GPU架构中的通用计算部分(例如ALU)及包含了深度学习加速器以特别针对人工智能/深度学习中的矩阵卷积运算进行硬件加速(包含任意规格的矩阵加速乘法及稀疏矩阵加速乘法),且人工智能集成电路并不具备3D绘图的功能模块。因此,相较于传统的GPU,本发明的人工智能集成电路除了可支持GPU的通用API(例如OpenCL、CUDA、DirectCompute)之外,在进行人工智能/深度学习的相关运算时的速度更快且功耗更低,意即可兼顾软件的弹性与生态环境、硬件加速的性能/功耗比,并且可同时适用于人工智能/深度学习的训练阶段及推理阶段。
此外,本发明的人工智能集成电路中的L1/L2高速缓存支持动态预取数据以降低人工智能运算时抓取矩阵数据的延迟,并且可支持压缩储存,例如包括基于特征的矩阵数据压缩、基于残差的影像压缩、及稀疏矩阵编码压缩,故可大幅降低数据带宽的需求。
本发明虽以较佳实施例揭露如上,然其并非用以限定本发明的范围,任何所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可做些许的更动与润饰,因此本发明的保护范围当视后附之权利要求所界定者为准。
【符号说明】
100~人工智能集成电路;
110~命令缓存器;
120~命令处理器;
130~任务生成器;
140~处理组件;
141~计算单元;
142~数据解压缩器;
143~存储器控制器;
144~存取控制器;
145~总线;
148~静态随机存取存储器;
1411~算术逻辑单元;
1412~深度学习加速器;
1413~通用缓存器组;
150~L1高速缓存;
151~预取电路;
155~数据压缩器;
160~L2高速缓存;
161~预取电路;
163~压缩器;
164~解压缩器;
170~混合转换单元;
180~动态随机存取存储器;
182~PCIE装置;
184~总线;
1101-110N~项目;
251、251~路径;
20-1-20-N~线程;
212~矩阵数据;
214~静态随机存取存储器;
216~矩阵乘法器;
217~激励函数电路;
218~池化电路;
301-304、311-314~区段。