CN117032807A - 基于risc-v指令集的ai加速处理器架构 - Google Patents
基于risc-v指令集的ai加速处理器架构 Download PDFInfo
- Publication number
- CN117032807A CN117032807A CN202311296112.1A CN202311296112A CN117032807A CN 117032807 A CN117032807 A CN 117032807A CN 202311296112 A CN202311296112 A CN 202311296112A CN 117032807 A CN117032807 A CN 117032807A
- Authority
- CN
- China
- Prior art keywords
- auxiliary
- acceleration
- core
- instruction
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 230000001133 acceleration Effects 0.000 title claims abstract description 115
- 230000015654 memory Effects 0.000 claims abstract description 133
- 239000012634 fragment Substances 0.000 claims abstract description 18
- 238000012545 processing Methods 0.000 claims abstract description 12
- 239000011159 matrix material Substances 0.000 claims description 97
- 238000007792 addition Methods 0.000 claims description 25
- 238000007726 management method Methods 0.000 claims description 16
- 230000004913 activation Effects 0.000 claims description 13
- 238000006243 chemical reaction Methods 0.000 claims description 13
- 238000011176 pooling Methods 0.000 claims description 13
- 238000000034 method Methods 0.000 claims description 11
- 238000013528 artificial neural network Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 8
- 238000013507 mapping Methods 0.000 claims description 6
- 238000000638 solvent extraction Methods 0.000 claims description 6
- 230000011218 segmentation Effects 0.000 claims description 4
- 102100030148 Integrator complex subunit 8 Human genes 0.000 claims description 3
- 101710092891 Integrator complex subunit 8 Proteins 0.000 claims description 3
- 230000000903 blocking effect Effects 0.000 claims description 3
- 239000000284 extract Substances 0.000 claims description 2
- 238000013473 artificial intelligence Methods 0.000 description 73
- 238000004364 calculation method Methods 0.000 description 14
- 238000013461 design Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 238000013527 convolutional neural network Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本申请公开基于RISC‑V指令集的AI加速处理器架构,涉及嵌入式处理器领域,架构包括一个主核、若干副核、高速存储器及核外共享近存;主核根据RV32I基础整数指令读取AI加速指令及源数据,将加速任务分发到副核;副核根据分发的加速任务读取源数据;主核内的取值/译码单元和指令分发路由分别读取AI加速指令和译码获得AI指令片段;副核内的指令路由根据分发指令启动加速任务;核外共享近存与所有副核及高速存储器连接,转存共享加速数据,副核读取共享加速数据和源数据执行加速任务。这种1主核+N副核的处理架构利用RISC‑V基础指令集控制,可拆解AI加速任务和分摊到多副核并行处理;对卷积运算有明显的加速优化效果。
Description
技术领域
本申请涉及嵌入式处理器领域,特别涉及一种基于RISC-V指令集的AI加速处理器架构。
背景技术
人工智能(AI)技术越来越多的应用到各类嵌入式设备和系统中,使其具备智能化和自主化的能力。AI技术已经实现了语音识别、图像识别、自然语言处理等多项技术突破,为嵌入式系统的应用提供了更多可能性。以卷积神经网络为代表的AI算法在嵌入式系统的部署和运行需要大量数据的高速计算,兼具实时性和计算能力的AI加速处理器有广泛的需求。
AI加速处理器的架构主要分为三种方式。一、CPU+扩展指令结构,在嵌入式处理器中增加扩展指令,如矢量计算或SIMD(单指令多数据),以实现对AI算子的加速。这种方式的优点是成熟度高、硬件改动小,缺点是受限于嵌入式处理器架构,对AI计算加速有限。因为传统的嵌入式处理器侧重高实时性而非快速计算。二、AI加速专用ASIC,针对AI计算的特点设计专用芯片,不依赖于指令集。这种方式的优点是AI计算性能好,缺点是开发难度高、复用性差,可能会出现硬件跟不上AI算法的演进速度的问题。三、CPU+NPU结构,传统的处理器核作为主核,负责实施响应和控制,NPU(神经网络处理器单元)作为副核,负责AI计算的加速。这种架构在市面上最为普遍,其好处是能充分发挥CPU和NPU的性能,缺点是NPU的可扩展性和灵活度不够。
发明内容
本申请提供一种基于RISC-V指令集的AI加速处理器架构,解决AI处理器扩展性差和加速性能不高的问题。本AI处理器架构包括一个主核和若干副核、高速存储器及核外共享近存;所述主核及副核分别连接所述高速存储器,且所有副核与主核通过总线并行通信;所述主核根据RISC-V架构的RV32I基础整数指令,从高速存储器中读取AI加速指令及源数据,将加速任务分发到若干副核中;所述副核根据分发的加速任务从高速存储器中读取源数据;
所述主核内包括有取值/译码单元和指令分发路由,所述副核内包括有指令路由,所述指令路由连接所述指令分发路由;所述取值/译码单元对从高速存储器中读取的AI加速指令进行译码,获得AI指令片段;所述指令分发路由接收AI指令片段,根据源数据和指令参数生成分发指令,并分发至对应副核中的指令路由;AI指令片段对应的加速任务包括神经网络的卷积、激活、池化、全连接操作中的至少一种;
所述核外共享近存与所有副核及高速存储器连接,转存从高速存储器读取的共享加速数据,所述副核在执行AI加速操作时读取共享的加速数据,并根据从高速存储器中读取的源数据执行加速任务;所述共享加速数据是执行卷积、激活、池化或全连接操作的加速数据。
具体的,所述主核中还包括有主近存以及与主近存交互的主寄存器,所述主近存保存从高速存储器中读取的源数据,所述主寄存器存放AI加速的参数和运算数据;
所述副核中包括有副近存以及与副近存交互的副寄存器,所述副近存保存从高速存储器中读取的源数据,所述副寄存器连接核外共享近存,从中读取共享的加速数据,以及存放AI加速的参数和运算数据;
所述主近存和副近存中的源数据包括神经网络的特征图、特征数据和特征矩阵。
具体的,所述主核内还包括有标量运算单元及主矢量运算单元,并和主寄存器交互;所述标量运算单元对AI加速的参数和源数据进行整数运算,所述主矢量运算单元对AI加速的参数和源数据进行矢量运算;
所述副核内还包括有副矢量运算单元及乘加运算单元,并和副寄存器交互;所述副矢量运算单元进行激活、池化及全连接运算,所述乘加运算单元执行加速任务中的卷积运算。
具体的,AI加速处理输入数据为INT8类型的8bit数据,所述乘加运算单元包括64个乘法器,执行64个8bit*8bit乘法运算;
当加速任务是卷积操作时,所述副核通过副矢量运算单元执行滤波器对源数据的移动,通过乘加运算提取特征图;
当加速任务是激活操作时,所述副核执行对特征图值进行非线性化处理,将小于零的数据取零运算;
当加速任务是池化操作时,所述副核执行对特征图矩阵的下采样,取矩阵最大值;
当加速任务是全连接操作时,所述副核执行对特征图的分类映射,将其映射到一维分类器。
具体的,所述主近存获取源数据后发送到矢量运算单元,所述主矢量运算单元依次对源数据进行矩阵转换和矩阵分块;
矩阵转换过程根据卷积核及源数据的特征图尺寸将卷积运算转换为二维矩阵的矩阵乘运算;其中,转换后的卷积核矩阵存入到核外共享近存中;
矩阵分块过程保持源数据转换后二维矩阵的列不变,根据副近存的容量将二维矩阵分割成目标数量个相同的特征矩阵块,并进行编号标记;其中,所有副核的副近存的容量相同,一个特征矩阵块对应一个待分发的加速任务。
具体的,所述指令分发路由根据分割的矩阵块数量生成相应的AI指令片段,并发送至目标副核中的指令路由,控制目标副核执行加速任务;
所述目标副核根据接收的AI指令片段从高速存储器中读取源数据转换分割后的特征矩阵块,将其存入到核内的副近存中,以及从所述核外共享近存中读取卷积核矩阵,存入副寄存器中。
具体的,处理器架构中还包括电源管理单元,所述电源管理单元和主核及所有副核连接;当副核不执行加速任务时,处于休眠状态;
当所述主核中的指令分发路由译码生成目标数量个AI指令片段,且确定分发的目标副核后,向电源管理单元发送启动指令;所述电源管理单元基于启动指令将目标副核切换为唤醒状态。
具体的,读取特征矩阵块和卷积核矩阵时,确定一个数据所包含的乘法运算次数和加法运算次数;当计算一个数据包含的乘法次数不超过副矢量运算单元中的乘法器数量时,直接从副近存中读取相应数量的数据,以及从核外共享近存读取相应数量的数据到副寄存器中,执行乘加运算;
当计算一个数据包含的乘法次数超过副矢量运算单元中的乘法器数量时,根据乘法次数平均为多次乘法运算,重复读取副近存与核外共享近存执行。
本申请实施例提供的技术方案带来的有益效果至少包括:RISC-V指令集设计AI处理器,构建1主核+N副核的顶层架构,主核根据基础整数指令执行整数的加速运算;同时在顶层架构引入了核外共享近存来存放副核执行加速任务时的共享数据。而对于AI加速任务的分发,则由主核内的指令分发路由来控制,对应副核内的指令路由接收,将整体AI加速任务和拆解分摊到多副核并行处理,大幅提升神经网络卷积运算的效率。而副核结合RISC-V指令集的设计实现了高度可扩展性,使得硬件升级更加可靠和灵活。
附图说明
图1是本申请提供的AI加速处理器的顶层架构示意图;
图2是本申请实施例提供的AI加速处理器架构的内部结构示意图;
图3是卷积运算的示意图;
图4描述了基于图3中源数据和卷积核尺寸执行卷积运算的示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
AI加速计算分成“训练”和“推理”两部分。“训练”指通过大量数据的学习确定神经网络中权重和偏置的值,一般在服务器端完成。“推理”指利用训练好的模型,使用新数据推理出各种结论,一般在终端完成。本发明设计的AI加速处理器是用在嵌入式终端,用于AI计算的“推理”。
主流的人工智能模型包括CNN(卷积神经网络)、GAN(生成对抗网络)、TransformerNetwork(注意力机制网络),其均以矩阵数据的运算处理为基础,其中最为耗费算力的是“矩阵乘”运算(卷积运算可转换成“矩阵乘”运算)。本发明对AI计算加速的出发点就是优化处理器架构中的计算和访存微架构,实现高效的“矩阵乘”运算。
“近存”又称近存储器或内核存储器,是相对于处理器核心的距离而定义的,根据距离划分为处理器核心(Core)→内核存储器(SRAM)→主存设备(DRAM)→外部高速存储器(Flash)。对于近存设备,其承担的就是近存计算任务,实现存储器内计算。随着人工智能(AI)、物联网(IoT)、5G通信等技术和应用的迅速发展,而“近存”就可以把存储和处理整合到一起,这样两者之间就没有或缩短数据传输,极大程度上降低时延和功耗。
如图1所示,是本申请提供的AI加速处理器的顶层架构示意图,该架构包括一个主核、若干副核、核外共享近存、高速总线,以及外部高速存储器,也就是外存。高速总线连接主副核及核外共享近存,实现所有副核与主核之间的数据传递和并行通信。
以图1为例,主核0处于处理器架构的核心低位,基于RISC-V指令集架构设计,支持RISC-V的基础整数指令RV32I,兼容RISC-V的编译器和上层软件。其根据RV32I基础整数指令,从高速存储器中读取AI加速指令及源数据,将加速任务分发到若干副核中。副核根据分发的加速任务从高速存储器中读取源数据进行加速。副核数量根据实际需求设计,且结构一致,用于AI算子的计算,可以做到独立并行计算。当需要扩充算力时,增加副核数量并添加算子指令即可,在硬件层面上的扩展相较于软件设计编译具有不可比拟的稳定性和高效性。这种设计的主核基于RISC-V指令集规避了ARM等国外处理器架构的潜在风险,可实现自主可控;便于继承成熟的硬件微架构模块和对应用软件的支持;可进行各种指令扩展,具有简洁性、模块化等优点。
图2是AI加速处理器架构的内部结构示意图,主核内包括有取值/译码单元(IF/ID)和指令分发路由。取值/译码单元通过201通道和高速存储器之间连接,实现数据交互。取值/译码单元对从高速存储器中读取的AI加速指令进行译码分割,获得AI指令片段,分割具体由编译器完成。AI指令片段的数量具体根据指令参数及源数据的数据量大小决定,指令分发路由通过202通路和取值/译码单元交互,根据要求将AI指令片段通过203通路路由到各个副核中,该AI指令片段用于控制副核执行加速任务。对应的,所有副核内包括有指令路由,指令路由连接指令分发路由,接收分发的AI指令片段。
核外共享近存供主核和所有副核共享使用,主核对核外共享近存可读可写,而所有副核对核外共享近存可读不可写,即主核可控制数据从高速存储器更新到核外共享近存,副核只可以从核外共享近存读取数据。该核外共享近存与所有副核及高速存储器连接,通过205通路转存从高速存储器读取的共享加速数据。副核在执行AI加速操作时读取共享加速数据,并根据从高速存储器中读取的源数据执行加速任务。
需要说明的是,本申请方案中AI指令及指令片段对应的加速任务可以包括神经网络的卷积、激活、池化、全连接等操作。因为卷积是主要加速任务,所以共享加速数据为AI加速计算的卷积核,对于后续的“激活”、“池化”、“全连接”操作较为简单,可单纯利用主核及传统的处理技术完成。若通过副核协助完成时,共享加速数据还可以是小于0的数据取零、下采样、以及特征图映射的计算数据。
进一步对AI加速进行划分,卷积指用对应的卷积核(训练后的滤波器)在被卷积矩阵上(待处理的图像数据)移动,做乘法和加法得到提取后的特征图。卷积运算是CNN中消耗算力资源95%以上,也是AI加速的主要操作对象。激活指将特征图值进行非线性化处理,一般操作是对小于零的数据取零。池化指对特征图矩阵进行下采样,一般操作是1/4下采样,即2*2矩阵取最大值。全连接指将特征图进行分类映射,一般操作是将特征图映射到一维分类器。
主核中还包括有主近存以及与主近存交互的主寄存器。主近存通过204通路直接与高速存储器交互,读取并保存AI指令、源数据以及系统运行时需要频繁读取操作的数据等。主寄存器则用来存放AI加速的参数和运算数据,实现数据传递的媒介。与此对应的,副核中同样包括有副近存以及与副近存交互的副寄存器。副近存通过206通路从高速存储器中读取相关源数据并保存,而副寄存器分别通过207通路和208通路连接核外共享近存和副近存,用于从核外共享存储器中读取共享加速数据,以及存放AI加速的参数和运算数据等。主近存和副近存专属于所在核心管理,其中的源数据包括神经网络的特征图、特征数据和特征矩阵等。
主核的通过指令分发路由进行任务分发的前提是做好任务分配,也就是源数据的前处理。这一过程通过核内的标量运算单元及主矢量运算单元完成。标量运算单元和主矢量运算单元分别连接主寄存器,进行对应的数据交互。标量运算单元对AI加速的参数和源数据进行整数运算,主矢量运算单元对AI加速的参数和源数据进行矢量运算。在通过整数运算和矢量运算后完成对数据和任务的分配后,然后再通过指令分发路由进行任务分发。
副核在接收并执行分发任务时,通过内部的副矢量运算单元及乘加运算单元完成。副矢量运算单元和乘加运算单元通过209通道和副寄存器交互,副矢量运算单元进行激活、池化及全连接运算,而乘加运算单元执行加速任务中的卷积运算。
因为主核以RV32I基础整数指令执行,所以加速时输入数据为INT8类型的8bit数据,其他寄存器、乘加运算单元和近存的大小则根据实际需求设定。
在一些实施例中,卷积运算作为加速的主要内容,例如本申请面向图像卷积设计,核外共享近存则存放卷积核矩阵数据,考虑到AI加速器用在嵌入式系统的推理计算,并且目前有较为成熟的网络裁剪技术,在实际使用中,卷积核的平面尺寸不大于5*5,三通道,特征图个数不大于50个,于是设计出的核外共享近存的最大值=5*5*3*50=3750B,取4KB。此外,考虑执行效率和成本等因素,将主副核容量设定为16KB,乘加运算单元需要高频执行乘法计算,选用64个乘法器,实现同时进行64个8bit*8bit乘法运算。相应的,主副寄存器用以缓存运算数据,64个乘法需要128个数据,容量定为128B。
对于主核中分发任务过程,主近存获取源数据后发送到矢量运算单元,主矢量运算单元依次对源数据进行矩阵转换和矩阵分块。
矩阵转换过程是为了将卷积转换为乘加运算,这样才能分给副核执行。其主要根据卷积核及源数据的特征图尺寸将卷积运算转换为二维矩阵的矩阵乘运算,然后通过主核控制将转换后的卷积核矩阵从高速存储器存入到核外共享近存中。对于其他加速任务,此处则存储一些激活、全连接、池化等公共数据。
矩阵分块是为了便于任务分发,因为卷积核的尺寸决定了乘加运算的矩阵大小,所以分割过程必须保持源数据转换后二维矩阵的列不变,根据副近存的容量将二维矩阵分割成目标数量个相同的特征矩阵块,并进行编号标记。编号标记后才能通过指令分发路由分配成对应的相应数量的加速任务。具体指令分发路由根据分割的矩阵块数量生成相应的AI指令片段,并发送至目标副核中的指令路由,控制目标副核执行加速任务。
进一步地,目标副核根据接收到AI指令片段后,从高速存储器中读取源数据转换分割后的特征矩阵块,将其存入到核内的副近存中,以及从核外共享近存中读取卷积核矩阵,存入副寄存器中。随后乘加运算单元或副矢量运算单元从中读取和执行。对于副核来说,AI指令片段还会把转换分割后的特征矩阵块的地址发送到副核,指导副核从高速存储器中直接读取特征矩阵块。
此外,因为处理器是1+N多核架构,在不需要副核参与运算时,如只有主核执行基础指令时仅需维持主核的供电即可,控制所有副核进入休眠状态。当需要副核参与运算时可点对点供电和唤醒,实现动态的功耗管理。基于此,本申请还可以在AI加速处理器顶层架构中加入电源管理单元,电源管理单元和主核及所有副核连接。特别的,电源管理单元连接主核的路由分发模块,因为理由分发模块需要向目标副核发送指令片段且对任务进行编号,所以电源管理单元可根据指令片段和编号确定哪一个目标副核。当主核中的指令分发路由译码生成目标数量个AI指令片段,且确定分发的目标副核后,向电源管理单元发送启动指令,电源管理单元基于启动指令将目标副核切换为唤醒状态,如此实现高效功耗管理。
本申请以典型的图像卷积运算为例进行说明,参考图3是卷积运算的示意图,输入图像(源数据)Input 301的尺寸大小是128*128*3,卷积核Filters 302的尺寸大小是5*5*3*10,而经过卷积运算生成的特征图Maps 303尺寸大小是124*124*10,如上单位均为8bit数据。图4描述了基于图3中源数据Input和卷积核Filters尺寸执行卷积运算的示意图,其过程可分为如下步骤:
S1,将多维的卷积运算转换成二维的矩阵乘运算。
主核矢量运算单元采用通用算法将输入图像Input 401和卷积核Filters 402分别转换成二维矩阵形式的特征图矩阵411和卷积核矩阵412。特征图矩阵411行尺寸为124*124,列尺寸为5*5*3;卷积核矩阵412的行尺寸为5*5*3,列尺寸为10。401和402卷积运算等效于411和412矩阵乘运算。411和412的矩阵乘运算结果的行尺寸是124*124,列尺寸是10,共153760个数据,每个数据由75次乘法和1次加法得到。
S2,对特征图矩阵进行矩阵分块。
以保持矩阵列不变,核内近存容量大小为限的分块原则,对特征图矩阵411进行分块,也就是保持列尺寸为5*5*3进行切割。矩阵块的行尺寸根据副近存大小确定,即为(16*1024)/(5*5*3)结果取整为218行。矩阵块的数量根据特征图矩阵411行尺寸计算确定,也即124*124/218结果取整为71。
也就是说,用于加速的数据421由71个矩阵块组成,前70个矩阵块大小为218*75,第71个矩阵块大小为116*75,编号记为矩阵#1-矩阵#71。
S3,将矩阵块分别传入副核中的副近存及核外共享近存。
卷积核矩阵412的尺寸为75*10,放入到核外共享近存,供所有副核读取。对于源数据的矩阵块,如果有6个卫星核,则一次将421中的矩阵#1-矩阵#6传入6个副核的副近存中。
S4,乘加运算单元执行乘加运算。
以乘法运算单元包含64个乘法器为例,那么乘加运算单元一次最多进行64次乘法运算,每次计算将私有近存中的最多64个数值和共享近存中对应的最多64个数值传入副寄存器,再通过副寄存器传入乘加运算单元。
但实际上,因为乘加运算使用的乘法器数量取决于数据大小,如S1中特征图的每个数据由75次乘法和1次加法得到,加法器的数量较少,此处不考虑,乘法器的数量是小于“每个数据由75次乘法”要求的。
所以在正常的加速任务中,当计算一个数据包含的乘法次数不超过副矢量运算单元中的乘法器数量时,直接从副近存中读取相应数量的数据,以及从核外共享近存读取相应数量的数据到副寄存器中,执行乘加运算。
副近存16KB的容量,以及副寄存器16B的容量一次既可从核外共享近存和高速存储器中读取一个完整的矩阵块,但是当计算一个数据包含的乘法次数超过副矢量运算单元中的乘法器数量时,一次最多仅能使用64个乘法操作,那么剩余的就必须分配第二次乘加运算。正是基于此问题,乘加运算必须多次重复执行。
当然在一些实施例中,因为两次读取计算的数据量严重不平衡,导致数据吞吐不平滑的问题。基于此,本申请主核在分配任务时,向确定一个数据需要多少次乘法运算和加法运算。在确定计算一个数据包含的乘法次数超过副矢量运算单元中的乘法器数量时,将乘法次数平均为多次乘法运算,让副矢量运算单元重复读取副近存与核外共享近存执行相应操作。
例如特征图中“每个数据由75次乘法和1次加法得到”的情况,为了平滑数据吞吐量,将75次乘法拆分成38次乘法和37次乘法,对应执行三次加法,得到特征图的每个数据先写入各自的副近存,再批量写回高速存储器。
S4,重复S3步骤。
将421的矩阵#7-矩阵#12放入6个副核的副近存,并进行计算,直至421所有矩阵块计算完毕。
S5,计算得到矩阵乘结果。
所有数据结果行和列尺寸分别是124*124和10,即153760个数据。
综上所述,本申请基于RISC-V指令集设计AI处理器,构建1主核+N副核的顶层架构,主核根据基础整数指令执行整数的加速运算;同时在顶层架构引入了核外共享近存来存放副核执行加速任务时的共享数据。而对于AI加速任务的分发,则由主核内的指令分发路由来控制,对应副核内的指令路由接收,将整体AI加速任务和拆解分摊到多副核并行处理。而副核结合RISC-V指令集的设计实现了高度可扩展性,使得硬件升级更加可靠和灵活。
以上对本发明的较佳实施例进行了描述;需要理解的是,本发明并不局限于上述特定实施方式,其中未尽详细描述的设备和结构应该理解为用本领域中的普通方式予以实施;任何熟悉本领域的技术人员,在不脱离本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例,这并不影响本发明的实质内容;因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (8)
1.一种基于RISC-V指令集的AI加速处理器架构,其特征在于,包括一个主核和若干副核、高速存储器及核外共享近存;所述主核及副核分别连接所述高速存储器,且所有副核与主核通过总线并行通信;所述主核根据RISC-V架构的RV32I基础整数指令,从高速存储器中读取AI加速指令及源数据,将加速任务分发到若干副核中;所述副核根据分发的加速任务从高速存储器中读取源数据;
所述主核内包括有取值/译码单元和指令分发路由,所述副核内包括有指令路由,所述指令路由连接所述指令分发路由;所述取值/译码单元对从高速存储器中读取的AI加速指令进行译码,获得AI指令片段;所述指令分发路由接收AI指令片段,根据源数据和指令参数生成分发指令,并分发至对应副核中的指令路由;AI指令片段对应的加速任务包括神经网络的卷积、激活、池化、全连接操作中的至少一种;
所述核外共享近存与所有副核及高速存储器连接,转存从高速存储器读取的共享加速数据,所述副核在执行AI加速操作时读取共享的加速数据,并根据从高速存储器中读取的源数据执行加速任务;所述共享加速数据是执行卷积、激活、池化或全连接操作的加速数据。
2.根据权利要求1所述的基于RISC-V指令集的AI加速处理器架构,其特征在于,所述主核中还包括有主近存以及与主近存交互的主寄存器,所述主近存保存从高速存储器中读取的源数据,所述主寄存器存放AI加速的参数和运算数据;
所述副核中包括有副近存以及与副近存交互的副寄存器,所述副近存保存从高速存储器中读取的源数据,所述副寄存器连接核外共享近存,从中读取共享的加速数据,以及存放AI加速的参数和运算数据;
所述主近存和副近存中的源数据包括神经网络的特征图、特征数据和特征矩阵。
3.根据权利要求2所述的基于RISC-V指令集的AI加速处理器架构,其特征在于,所述主核内还包括有标量运算单元及主矢量运算单元,并和主寄存器交互;所述标量运算单元对AI加速的参数和源数据进行整数运算,所述主矢量运算单元对AI加速的参数和源数据进行矢量运算;
所述副核内还包括有副矢量运算单元及乘加运算单元,并和副寄存器交互;所述副矢量运算单元进行激活、池化及全连接运算,所述乘加运算单元执行加速任务中的卷积运算。
4.根据权利要求3所述的基于RISC-V指令集的AI加速处理器架构,其特征在于,AI加速处理输入数据为INT8类型的8bit数据,所述乘加运算单元包括64个乘法器,执行64个8bit*8bit乘法运算;
当加速任务是卷积操作时,所述副核通过副矢量运算单元执行滤波器对源数据的移动,通过乘加运算提取特征图;
当加速任务是激活操作时,所述副核执行对特征图值进行非线性化处理,将小于零的数据取零运算;
当加速任务是池化操作时,所述副核执行对特征图矩阵的下采样,取矩阵最大值;
当加速任务是全连接操作时,所述副核执行对特征图的分类映射,将其映射到一维分类器。
5.根据权利要求3所述的基于RISC-V指令集的AI加速处理器架构,其特征在于,所述主近存获取源数据后发送到矢量运算单元,所述主矢量运算单元依次对源数据进行矩阵转换和矩阵分块;
矩阵转换过程根据卷积核及源数据的特征图尺寸将卷积运算转换为二维矩阵的矩阵乘运算;其中,转换后的卷积核矩阵存入到核外共享近存中;
矩阵分块过程保持源数据转换后二维矩阵的列不变,根据副近存的容量将二维矩阵分割成目标数量个相同的特征矩阵块,并进行编号标记;其中,所有副核的副近存的容量相同,一个特征矩阵块对应一个待分发的加速任务。
6.根据权利要求5所述的基于RISC-V指令集的AI加速处理器架构,其特征在于,所述指令分发路由根据分割的矩阵块数量生成相应的AI指令片段,并发送至目标副核中的指令路由,控制目标副核执行加速任务;
所述目标副核根据接收的AI指令片段从高速存储器中读取源数据转换分割后的特征矩阵块,将其存入到核内的副近存中,以及从所述核外共享近存中读取卷积核矩阵,存入副寄存器中。
7.根据权利要求1所述的基于RISC-V指令集的AI加速处理器架构,其特征在于,处理器架构中还包括电源管理单元,所述电源管理单元和主核及所有副核连接;当副核不执行加速任务时,处于休眠状态;
当所述主核中的指令分发路由译码生成目标数量个AI指令片段,且确定分发的目标副核后,向电源管理单元发送启动指令;所述电源管理单元基于启动指令将目标副核切换为唤醒状态。
8.根据权利要求6所述的基于RISC-V指令集的AI加速处理器架构,其特征在于,读取特征矩阵块和卷积核矩阵时,确定一个数据所包含的乘法运算次数和加法运算次数;当计算一个数据包含的乘法次数不超过副矢量运算单元中的乘法器数量时,直接从副近存中读取相应数量的数据,以及从核外共享近存读取相应数量的数据到副寄存器中,执行乘加运算;
当计算一个数据包含的乘法次数超过副矢量运算单元中的乘法器数量时,根据乘法次数平均为多次乘法运算,重复读取副近存与核外共享近存执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311296112.1A CN117032807A (zh) | 2023-10-09 | 2023-10-09 | 基于risc-v指令集的ai加速处理器架构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311296112.1A CN117032807A (zh) | 2023-10-09 | 2023-10-09 | 基于risc-v指令集的ai加速处理器架构 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117032807A true CN117032807A (zh) | 2023-11-10 |
Family
ID=88637615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311296112.1A Withdrawn CN117032807A (zh) | 2023-10-09 | 2023-10-09 | 基于risc-v指令集的ai加速处理器架构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117032807A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117290279A (zh) * | 2023-11-24 | 2023-12-26 | 深存科技(无锡)有限公司 | 基于共享紧耦合的通用型计算加速器 |
CN117290289A (zh) * | 2023-11-27 | 2023-12-26 | 深存科技(无锡)有限公司 | 基于通用型cpu的矩阵加速器架构 |
-
2023
- 2023-10-09 CN CN202311296112.1A patent/CN117032807A/zh not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117290279A (zh) * | 2023-11-24 | 2023-12-26 | 深存科技(无锡)有限公司 | 基于共享紧耦合的通用型计算加速器 |
CN117290279B (zh) * | 2023-11-24 | 2024-01-26 | 深存科技(无锡)有限公司 | 基于共享紧耦合的通用型计算加速器 |
CN117290289A (zh) * | 2023-11-27 | 2023-12-26 | 深存科技(无锡)有限公司 | 基于通用型cpu的矩阵加速器架构 |
CN117290289B (zh) * | 2023-11-27 | 2024-01-26 | 深存科技(无锡)有限公司 | 基于通用型cpu的矩阵加速器架构 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11442786B2 (en) | Computation method and product thereof | |
KR102258414B1 (ko) | 처리 장치 및 처리 방법 | |
US20220012575A1 (en) | Methods and apparatus for localized processing within multicore neural networks | |
CN117032807A (zh) | 基于risc-v指令集的ai加速处理器架构 | |
US11093225B2 (en) | High parallelism computing system and instruction scheduling method thereof | |
CN108805797A (zh) | 用于机器学习操作的经优化计算硬件 | |
CN108805793A (zh) | 乘法-累加"0"数据门控 | |
CN111325321A (zh) | 基于多神经网络融合的类脑计算系统及指令集的执行方法 | |
CN111651207B (zh) | 一种神经网络模型运算芯片、方法、装置、设备及介质 | |
CN111105023B (zh) | 数据流重构方法及可重构数据流处理器 | |
CN114556260B (zh) | 用于执行神经网络的装置和系统 | |
CN114450699A (zh) | 由处理单元实现的方法、可读存储介质和处理单元 | |
CN110717584A (zh) | 神经网络编译方法、编译器、计算机设备及可读存储介质 | |
CN114327399B (zh) | 分布式训练方法、装置、计算机设备、存储介质和产品 | |
CN111047045B (zh) | 机器学习运算的分配系统及方法 | |
CN111860773A (zh) | 处理装置和用于信息处理的方法 | |
CN108804142A (zh) | 数据中心集群上的加速决策树 | |
CN114492781A (zh) | 一种硬件加速器及数据处理方法、系统、设备、介质 | |
KR20210023401A (ko) | 뉴럴 네트워크 연산 방법 및 이를 포함하는 시스템 | |
CN112051981B (zh) | 一种数据流水线计算路径结构及单线程数据流水线系统 | |
CN109272112B (zh) | 一种面向神经网络的数据重用指令映射方法、系统及装置 | |
CN114595813B (zh) | 异构加速处理器及数据计算方法 | |
CN116402091A (zh) | 面向人工智能芯片的混合引擎智能计算方法和装置 | |
de Dinechin et al. | Deep learning inference on the mppa3 manycore processor | |
George et al. | A Unified Programmable Edge Matrix Processor for Deep Neural Networks and Matrix Algebra |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20231110 |