一种人工智能微处理器
技术领域
本发明涉及人工智能技术领域,尤其是涉及一种人工智能微处理器。
背景技术
现有的人工智能微处理器框架主要包括以下几种重要模块:
(1)CPU(Central Processing Unit,中央处理器)
CPU以提高指令执行效率为主要目标,其内含大量指令缓存(1级/2级Cache(高速缓存)),指令控制逻辑(如超标量并行指令发射),以及指令流水线控制逻辑,其是传统计算模型下最重要的底层计算载体。
(2)GPU(Graphics Processing Unit,图形处理器)
GPU以提高大规模数据并行计算效率为主要目标,其内含大量计算单元(如NVIDIA的CUDA核,数量可以是几百、几千、甚至几万个),通常采用SIMD(单指令多数据)或SIMT(单指令多线程),并使用通用的架构来应对更普遍的通用计算。
(3)DSP(Digital Signal Processing,数字信号处理)
DSP可以看做简化版的GPU,一般用于嵌入式SoC(片上系统)。DSP内含一定数量的并行计算单元(几百或者一两千个),计算单元的功能也较简单(如乘法累加单元)。DSP通常用于嵌入式领中等规模的通用计算。
(4)ASIC(Application Specific Integrated Circuit,专用集成电路)
专用的人工智能计算加速电路,针对某个特定算法,通过专用的电路结构来实现计算,灵活性较差,电路一旦确定便不可更改。
但是现有技术的这种人工智能微处理器架构的存在如下主要缺陷:
1.CPU更适合于传统指令计算模型下的控制任务,不适合于大规模计算,计算速度慢。
2.GPU针对通用计算优化,其需要兼容传统的各种通用计算任务,计算能量效率较低。
3.DSP也是针对通用计算,但很难提供大的吞吐量(DSP架构的缺陷使其很难如GPU那样支持几万核),且计算能量效率也无法达到最优。
4.ASIC电路无法更改,灵活性差,在人工智能算法高速发展的现阶段,该技术很难被使用。
发明内容
为克服现有技术的不足,本发明提供一种人工智能微处理器,提高计算吞吐量以及能量效率。
为解决上述技术问题,本发明采用如下技术方案:
提供一种人工智能微处理器,包括中央处理器、图形处理器、数字信号处理模块及专用集成电路,其特征在于,还包括通讯接口、计算模块、计算单元、本地寄存器、片上缓存器及SDRAM DMA模块,其中通讯接口与计算模块相互独立,通讯接口与主机端通讯,计算模块进行人工智能计算;计算单元通过本地寄存器缓存中间数据,并按照二维网络(2D Mesh)进行互联;所述片上缓存器包括行存储器及列存储器,计算单元使用行存储器广播和列存储器广播,分别从行存储器及列存储器进行输入;SDRAM DMA模块采用两级状态控制计算流程。
其中,当计算单元使用行存储器广播时,同一行的计算单元的其中一个输入来自同一个行存储器,另一个输入来自不同的列存储器;
当计算单元使用列存储器广播时,同一列的计算单元的其中一个输入来自同一个列存储器,另一个输入来自不同的行存储器。
其中,所述通讯接口在与主机端通讯时,接收来自主机端的内存读写信号,完成DDR3 SDRAM的读写操作及指令存储器的读写操作。
其中,所述通讯接口包括专用串口控制器、通讯控制器及SDRAM接口控制器;其中
专用串口控制器进行计算机通讯,下载指令/参数数据;
通讯控制器执行SDRAM读写操作,及指令存储器的写操作;
SDRAM接口控制器将通讯控制器的SDRAM读写信号与DDR3控制器接口信号进行信号和时钟域转换。
其中,通讯控制器发送启动信号,触发SDRAM DMA模块,SDRAM读取图像数据及参数数据,计算单元根据图像数据及参数数据进行计算,并返回结果。
其中,行存储器及列存储器用于存储图像数据和参数数据的片上高速缓存。行存储器及列存储器的访问地址包括SDRAM读写地址及计算地址;其中
在SDRAM读写地址中,图像数据的访问地址由逻辑电路自动计算获得,参数数据的地址由SDRAM DMA模块提供;
卷积层计算的计算地址由逻辑电路自动计算获得,全连接层的计算地址由计算控制模块提供。
其中,在SDRAM DMA模块控制计算流程时,计算控制模块初始化,并控制BN计算及SCALE计算初始化,然后进行卷积层计算、全连接平移、BN计算及SCALE计算,最后激活并池化,返回数据。
其中,计算模块包括计算网络,以列为单位组织计算单元。
其中,计算网络数量为32x32、64x64及128x128中的一种。
其中,人工智能微处理器进行人工智能计算,包括如下步骤:
S1:主机端通过专用串口控制器发送DDR3内存读写指令/Instruction内存读写指令;
S2:通讯控制器解析所述DDR3内存读写指令和Instruction读写指令,Instruction读写指令把数据写入指令存储器中,DDR3内存读写指令向SDRAM接口控制器发起DDR3读写请求,读/写Instruction内存数据,并通过串口将数据发回给主机端;
S3:SDRAM接口控制器接收到来自通讯控制器的读写命令后,按照DDR3控制器的接口协议,向DDR3 SDRAM发送读写信号,写入DDR3内存数据或读取DDR3内存数据,并返回给通讯控制器;
S4:主机端完成DDR3内存数据和Instruction内存数据的写入之后,通过串口发送计算开始命令,以触发SDRAM DMA模块的运行;
S5:SDRAM DMA模块从DDR3 SDRAM中读取待计算图像数据和参数数据;
S6:DDR3 SDRAM参数数据写入到行存储器中,图像数据写入到列存储器中;
S7:SDRAM DMA模块完成数据读取后,触发计算控制单元运行;
S8:计算控制单元向计算网络发送控制信号,使其分别从行存储器和列存储器中获取参数数据及图像数据,并进行计算,并将计算结果写回到DDR3 SDRAM。
S9:根据具体指令,重复执行步骤S4~S8后,即完成一次人工智能计算。
区别于现有技术,采用本发明具备如下有益效果:
本发明中,人工智能微处理器包括通讯接口(UI)、计算模块(PU)、计算单元、本地寄存器、片上缓存器及SDRAM DMA模块,其中通讯接口与计算模块相互独立,通讯接口与主机端通讯,计算模块进行人工智能计算。本发明针对人工智能技术的专用计算架构,对人工智能所使用的计算类型进行设计一种人工智能微处理器,且计算网络灵活可扩展,即可提供较高计算吞吐量,也可提供较高的能量效率。
附图说明
图1为本发明人工智能微处理器的结构框图示意图;
图2为本发明人工智能微处理器中PECols的结构示意图;
图3为本发明人工智能微处理器应用于人工智能计算的流程示意图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
如图1至图3所示,本发明提供的人工智能微处理器主要包括相互独立的通讯接口(UI)及计算模块(PU),通讯接口与主机端通讯,计算模块进行人工智能计算。以下根据附图分别进行说明。
(1)通讯接口(UI)
UI负责与Host主机端通讯,接收来自Host主机端的内存读写信号,实现DDR3SDRAM的读写及指令存储器的读写,其几个模块的功能简要描述如下:
UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器),作为专用串口控制器,用于PC通讯(下载指令/SDRAM),应当说明的是,专用串口控制器还可使用SOC的串口,如通过由ARM公司研发推出的AMBA(Advanced Microcontroller BusArchitecture,片上总线)访问SDRAM(下载参数)和指令存储器(下载指令))。
Com Ctrl(通讯控制器),用于实现串口通讯协议(0x10+0x02+datalength(4bytes)+data+0x03+verify(4bytes)),实现sdram的读写(data=4byte addr+1byte wen+N byte data),和指令存储器的写(dara=1byte addr+N byte data(取决于具体指令长度));
SDRAM UI(SDRAM接口控制器):实现Com Ctrl模块(通讯控制器)的SDRAM接口与DDR3Ctrl控制器接口的信号和时钟域转换。
(2)计算模块(PU)
PU部分实现人工智能计算功能,其几个模块的功能简要描述如下:
SDRAM DMA模块:AI(Artificial Intelligence,人工智能)计算的起点,本发明AI计算的Start信号来自于Com Ctrl模块,状态机控制AI计算总流程,流程为None->LoadA->LoadW->PE Computing->Store Psum(回到LoadA或结束),即空闲->SDRAM读取图像A->SDRAM读取参数W->PE计算->结果写回(回到LoadA或结束);
其中,PU提供SDRAM控制器的app读写访问信号;以及提供Col/Row MEMs(行/列存储器)读写地址控制信号;提供计算SDRAM的A/W(图像/参数)读地址和A(图像)写地址,其地址空间连续,支持split和group,支持读写地址自动计算。
Col/Row MEMs(行/列存储器):col/row高速缓存,分别用于存储图像A和参数W;提供MEM读写地址,mem地址分为两类:SDRAM Loading和PE Computing,参数W数据存储的SDRAM Loading ADDR由DMA模块提供,PE Computing ADDR由PE Ctrl模块(计算控制模块)提供,图像A数据的SDRAM Loading ADDR由mem逻辑计算得到,CONV层(卷积层)PEComputing ADDR由mem逻辑计算得到,FC(全连接)层PE Computing ADDR由PE Ctrl模块提供,以实现CONV层的内存重构功能,内存重构支持Pooling融合和Auto padding。
即,行/列存储器是用于存储图像数据和参数的片上高速缓存。行/列存储器的访问地址分为SDRAM读写地址和计算地址两大类,(1)在SDRAM读写地址中,图像数据的访问地址由逻辑电路自动计算得到,参数数据的地址由SDRAM DMA模块提供。(2)计算地址将根据具体的计算类型的变化而变化,卷积层计算的计算地址由逻辑电路自动计算得到,全连接层的计算地址由PE Ctrl模块提供。
PE Ctrl(计算控制模块):作为AI计算的主控机,在SDRAM DMA状态PE Computing时,实现PE控制流程如下:None->Init->bn_init(未实现)->scale_init(未实现)->norm computing->shift(fc only)->bn_com(未实现)->scale_com(未测试)->activation->cpool->write_back or finish;
如图3所示,即空闲->初始化->BN(Batch Normalization,一种神经网络算法)初始化(如果有BN指令,PE初始化BN,wAddr+2(add and mul),bn_init*=1(如果存在BN指令))->SCALE初始化(如果有Scale指令,PE初始化SCALE,wAddr+2(add and mul),scale_init*=1(如果存在SCALE指令))->卷积计算(PE normal计算,持续周期为Wlength_netconf-1,Enable_pe=1,enable mem addr computing=1)->FC平移->BN计算->SCALE计算->激活->池化->数据写回;为mem提供PE Computing ADDR;实现in-placefusion computing(融合计算),最多实现conv/fc+bn+scale+relu+pool五层融合计算。
PECols(计算网络或列PE计算单元):以列(N x 1)为单位组织PE计算单元。PECol是最小的有效计算单元,为了最大化利用内存带宽,其深度通常为32(16bit精度情况下)或64(8bit精度情况下),因此单次最大并行output channel(输出通道)数量为32或64。PECols由多个PECol组成,为了最大化利用内存带宽,可设为32(16bit精度情况下)或64(8bit精度情况下),因此,为了最大化利用内存带宽,一个PECols所包含的MACs单元数量可为1024(16bit精度)或4096(8bit精度)。
a)其中,本发明所述的PE是专门针对AI计算而设计的最小计算单元,采用output优先计算方案(也即一次计算得到最终结果,不需要中间缓存),PE支持的计算包括:16bit定点MAC/Max pooling/BN/Scale/Relu。
PE的两个数据输入为Col memory(行存储器)和Row memory(列存储器),内部包含几个临时寄存器用于存储临时结果,一次计算完成后(N个计算步骤),结果保持在结果寄存器中。换而言之,计算单元PE通过本地寄存器缓存中间数据,并按照二维网络(2D Mesh)进行互联;所述片上缓存器包括行存储器及列存储器,计算单元使用行存储器广播和列存储器广播,分别从行存储器及列存储器进行输入;SDRAM DMA模块采用两级状态控制计算流程。具体地,当计算单元使用行存储器广播时,同一行的计算单元的其中一个输入来自同一个行存储器,另一个输入来自不同的列存储器;当计算单元使用列存储器广播时,同一列的计算单元的其中一个输入来自同一个列存储器,另一个输入来自不同的行存储器。
b)本发明所述的PECol由多个PE按照列的方式连接,组成PECol。PECol中的PE共享一个Col memory(列存储器),并拥有各自独立的Row memory(行存储器)。
c)本发明的PECols由多个PECol按行的方式连接,组成PECols(因此也可称为PE网络)。PE网络中,一行PEs共享一个Row memory,一列PEs共享一个Col memory,如图2所示。
为方便理解,以下以完成一次人工智能计算为例,介绍框图1中各部分之间的相互关系。该人工智能计算包括如下步骤:
(1)Host主机通过UART串口(或USB等其他通讯接口)发送DDR3内存读写或者Instruction内存读写指令。
(2)指令在通讯控制器(Com Ctrl)中被解析,Instruction内存读写将直接把数据写入Instruction存储器,DDR3内存读写将向SDRAM接口控制器(SDRAM UI)发起DDR3读写信号,写入数据或读出数据并通过串口发回给Host主机。
(3)SDRAM接口控制器接收到来自通讯控制器的读写命令后,按照DDR3控制器(DDR3Ctrl)的接口协议,向DDR3 SDRAM发送读写信号,写入数据或读取数据并返回给通讯控制器。
(4)Host完成DDR3数据和Instruction数据的写入之后,通过串口发送计算开始命令,改命令触发SDRAM DMA模块的运转。
(5)SDRAM DMA从DDR3 SDRAM中读取待计算数据A和参数W。
(6)DDR3 SDRAM数据W被写入到Row memory,A被写入到Col memory。
(7)SDRAM DMA完成数据读取后,触发PE Ctrl的工作。
(8)PE Ctrl向PECols发送控制信号,使其分别从Row memory和Col memory去获取W和A,并实现计算。
(9)计算完成后,把结果写回到DDR3 SDRAM。
(10)根据具体指令,上述(4)~(9)执行多次后,即可完成一次人工智能计算。
其中,应当说明的是,PeCols的数量可以是任何数,典型可以是32x32,64x64,128x128;
Row mem和col mem的bank数量必须跟PECols网络的行列数量保存一致。
UI部分不仅限于以上描述的UART,也可以使用其他任何通讯方式,如USB、SPI、I2C、SDIO、以太网等。
Instruction memory可以使用寄存器或者SRAM来实现。
以上描述的DDR3 SDRAM也可以用其他接口或形式的片外缓存来代替,如DDR4SDRAM、DDR5 SDRAM或FLASH等。
本发明针对人工智能技术的专用计算架构,专门针对人工智能所使用的计算类型而设计,且PE网络灵活可扩展,即可提供较高计算吞吐量,也可提供较高的能量效率。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。