CN116400926A - 面向人工智能芯片的标量引擎处理方法和装置 - Google Patents
面向人工智能芯片的标量引擎处理方法和装置 Download PDFInfo
- Publication number
- CN116400926A CN116400926A CN202310319068.5A CN202310319068A CN116400926A CN 116400926 A CN116400926 A CN 116400926A CN 202310319068 A CN202310319068 A CN 202310319068A CN 116400926 A CN116400926 A CN 116400926A
- Authority
- CN
- China
- Prior art keywords
- chip
- target
- instruction
- neural network
- artificial neural
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title abstract description 7
- 238000013528 artificial neural network Methods 0.000 claims abstract description 135
- 238000012545 processing Methods 0.000 claims abstract description 135
- 238000000034 method Methods 0.000 claims abstract description 73
- 238000006243 chemical reaction Methods 0.000 claims abstract description 17
- 239000013598 vector Substances 0.000 claims description 67
- 238000004364 calculation method Methods 0.000 claims description 57
- 238000004590 computer program Methods 0.000 claims description 22
- 230000008569 process Effects 0.000 description 30
- 238000013507 mapping Methods 0.000 description 19
- 238000013473 artificial intelligence Methods 0.000 description 16
- 238000004422 calculation algorithm Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 12
- 238000013135 deep learning Methods 0.000 description 11
- 230000001133 acceleration Effects 0.000 description 10
- 239000000306 component Substances 0.000 description 10
- 238000011161 development Methods 0.000 description 10
- 238000005457 optimization Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 238000005265 energy consumption Methods 0.000 description 7
- 230000006872 improvement Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000013527 convolutional neural network Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 239000008358 core component Substances 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000013256 Gubra-Amylin NASH model Methods 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000003042 antagnostic effect Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005111 flow chemistry technique Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000009394 selective breeding Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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
-
- 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/08—Learning methods
-
- 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
Abstract
本申请涉及一种面向人工智能芯片的标量引擎处理方法和装置。所述方法包括:芯片中的上层模块获取待部署于芯片中的人工神经网络模型;上层模块基于芯片中的标量引擎所内置的指令集,对人工神经网络模型进行转换处理,得到人工神经网络模型对应的多个目标指令,并将多个目标指令发送至标量引擎;标量引擎执行多个目标指令,以在芯片内实现人工神经网络模型对应的编译处理。采用本方法能够提升人工智能芯片对人工神经网络模型的片内编译处理灵活性。
Description
技术领域
本申请涉及芯片技术领域,特别是涉及一种面向人工智能芯片的标量引擎处理方法和装置。
背景技术
当前,人工智能芯片已经应用于人工神经网络领域的计算处理中,并且,随着人工神经网络领域的不断发展,人工神经网络的类型已经越来越多。
传统的人工智能芯片往往只支持单一的神经网络模型的计算加速的应用,对于各个人工神经网络模型,若需要在人工智能芯片中进行编译和计算,均需要对人工智能芯片的数据流和电路排布等进行对应设计,因此,当前的人工智能芯片在人工神经网络的片内编译计算方面存在灵活性较低的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提升人工智能芯片对人工神经网络模型的片内编译处理灵活性的面向人工智能芯片的标量引擎处理方法和装置。
第一方面,本申请提供了一种模型片内编译方法。应用于芯片中,该方法包括:
该芯片中的上层模块获取待部署于该芯片中的人工神经网络模型;
该上层模块基于该芯片中的标量引擎所内置的指令集,对该人工神经网络模型进行转换处理,得到该人工神经网络模型对应的多个目标指令,并将该多个目标指令发送至该标量引擎;
该标量引擎执行该多个目标指令,以在该芯片内实现该人工神经网络模型对应的编译处理。
在其中一个实施例中,该指令集包括用于实现矢量计算的矢量计算指令集、用于实现多种人工神经网络对应的操作运算的人工神经网络计算指令集以及用于该标量引擎调度该芯片内其他模块执行目标操作处理的跨模块调度专用指令集。
在其中一个实施例中,该矢量计算指令集包括多个功能指令和多个运算指令。
在其中一个实施例中,该标量引擎中内置的指令集基于RISCV架构开发,且各该指令集采用不同字段标识。
在其中一个实施例中,该目标指令的第一比特位区间用于表征该目标指令所属的指令集;该目标指令的第二比特位区间用于表征目标寄存器地址;该目标指令的第三比特位区间用于表征是否需要写目标寄存器和是否需要读源寄存器;该目标指令的第四比特位区间用于表征第一源寄存器地址;该目标指令的第五比特位区间用于表征第二源寄存器地址;该目标指令的第六比特位区间用于表征该目标指令的操作码。
在其中一个实施例中,该方法还包括:确定该标量引擎当前执行的该目标指令对应的操作处理的目标类型;若该目标类型与该标量引擎中的可重构阵列当前对应的操作处理的类型不同,则对该可重构阵列进行重构处理;利用重构处理后的该可重构阵列对当前执行的该目标指令进行操作处理;其中,该可重构阵列对应的操作处理的类型至少包括加操作和乘操作。
在其中一个实施例中,该方法还包括:若该标量引擎当前执行的该目标指令对应的操作处理满足预设调整条件,则将该标量引擎执行该目标指令的流水级数由第一级数更改为第二级数;其中,该第二级数小于该第一级数。
第二方面,本申请还提供了一种模型片内编译装置。应用于芯片中,该装置包括:
获取模块,用于所述芯片中的上层模块获取待部署于所述芯片中的人工神经网络模型;
转换模块,用于所述上层模块基于所述芯片中的标量引擎所内置的指令集,对所述人工神经网络模型进行转换处理,得到所述人工神经网络模型对应的多个目标指令,并将所述多个目标指令发送至所述标量引擎;
执行模块,用于所述标量引擎执行所述多个目标指令,以在所述芯片内实现所述人工神经网络模型对应的编译处理。
在其中一个实施例中,该指令集包括用于实现矢量计算的矢量计算指令集、用于实现多种人工神经网络对应的操作运算的人工神经网络计算指令集以及用于该标量引擎调度该芯片内其他模块执行目标操作处理的跨模块调度专用指令集。
在其中一个实施例中,该矢量计算指令集包括多个功能指令和多个运算指令。
在其中一个实施例中,该标量引擎中内置的指令集基于RISCV架构开发,且各该指令集采用不同字段标识。
在其中一个实施例中,该目标指令的第一比特位区间用于表征该目标指令所属的指令集;该目标指令的第二比特位区间用于表征目标寄存器地址;该目标指令的第三比特位区间用于表征是否需要写目标寄存器和是否需要读源寄存器;该目标指令的第四比特位区间用于表征第一源寄存器地址;该目标指令的第五比特位区间用于表征第二源寄存器地址;该目标指令的第六比特位区间用于表征该目标指令的操作码。
在其中一个实施例中,该装置还包括:
重构模块,用于确定该标量引擎当前执行的该目标指令对应的操作处理的目标类型;若该目标类型与该标量引擎中的可重构阵列当前对应的操作处理的类型不同,则对该可重构阵列进行重构处理;利用重构处理后的该可重构阵列对当前执行的该目标指令进行操作处理;其中,该可重构阵列对应的操作处理的类型至少包括加操作和乘操作。
在其中一个实施例中,该装置还包括:
更改模块,用于若该标量引擎当前执行的该目标指令对应的操作处理满足预设调整条件,则将该标量引擎执行该目标指令的流水级数由第一级数更改为第二级数;其中,该第二级数小于该第一级数。
第三方面,本申请还提供了一种芯片,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行该计算机程序时实现上述第一方面任一项所述的方法的步骤。
第四方面,本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述第一方面中任一项所述的方法的步骤。
第五方面,本申请还提供了一种计算机程序产品,该计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述第一方面中任一项所述的方法的步骤。
上述面向人工智能芯片的标量引擎处理方法和装置,芯片中的上层模块获取待部署于芯片中的人工神经网络模型,进而上层模块可基于芯片中的标量引擎所内置的指令集,对人工神经网络模型进行转换处理,得到人工神经网络模型对应的多个目标指令,并将多个目标指令发送至标量引擎;进一步的,该标量引擎即可执行该多个目标指令,以在芯片内实现人工神经网络模型对应的编译处理。这样,由于该标量引擎所内置有支持对人工神经网络模型进行转换的指令集,对于不同类型的人工神经网络模型,该芯片均可以直接在片内将待处理的人工神经网络模型转换为芯片所支持的数据流,以直接进行后续的编译处理,而无需额外的处理器对该人工神经网络模型进行数据转换,对于不同类型的人工神经网络模型,也无需重新涉及芯片的电路排布,使得人工智能芯片可以有效支持多种人工神经网络映射和片内编译,有效提升当前人工智能芯片对人工神经网络模型映射的灵活性,提升片内编译人工神经网络模型的效率。
附图说明
图1为一个实施例中模型片内编译方法的流程示意图;
图2为一个实施例中重构处理的流程示意图;
图3为一个实施例中兼容多种人工神经网络灵活映射的芯片架构方案的流程示意图;
图4为一个实施例中模型片内编译装置的结构框图;
图5为一个实施例中另一种模型片内编译装置的结构框图;
图6为一个实施例中芯片的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
首先,在具体介绍本申请实施例的技术方案之前,先对本申请实施例基于的技术背景或者技术演进脉络进行介绍。
人工智能自被正式提出以来,经历了半个世纪的积累,迎来了革命性的大发展和各领域研究人员的重视。在计算力和数据量大幅度提升的推动下,人工智能在机器学习,特别是神经网络主导的深度学习领域获得极大的突破,深度学习算法已成为人工智能算法的代名词。因此,目前所说的人工智能芯片通常是指深度学习算法芯片,以计算架构创新为手段,对深度学习算法进行硬件优化处理,实现对人工智能应用在算力、功耗和成本等各方面的优化。
为追求人工智能芯片性能的提升,当前采用的几种典型的设计方案有如下几种。
深度学习处理器Eyeriss强调能效优先的规则,是基于一种数据流架构思想的处理器,对于PE(Processing Element)计算单元设计了自主的行固定RS(Row stationary)计算规则。在此基础上推出的第二代版本Eyeriss V2提供了稀疏化和更灵活的网络结构。相关研究人员在2017年推出的ENVISION中提出了采用卷积重用、图像重用、卷积核重用在内的多种数据重用方式以提升芯片能效。另外陆续推出了DNPU、UNPU、LNPU、GANPU系列AI芯片。其中,DNPU主要依靠异构架构、混合负载划分方法、动态自适应的定点计算、基于量化表的乘法器来实现芯片的可配置性和低功耗性。UNPU是一款完全可变权重比特精度的DNN加速器,可以根据不同的精度/性能要求而变化最佳比特精度。LNPU利用直接反馈对准进行快速在线学习,并具有内置基于伪随机数发生器的直接误差传播机制。GANPU针对生成对抗网络处理单元提出了一种自适应时空工作负载复用方式,以在单个GAN模型中加速多个DNN时保持高利用率,同时利用双稀疏性架构以跳过由于输入和输出特征零点引起的冗余计算,并提出一种仅指数的ReLU推测算法及其轻量级处理元素架构。
APU(Acceleration Processing Unit)加速处理单元,是一种异构计算结构,在一颗芯片上同时集成了传统的CPU和图形处理器GPU,将任务根据计算的性质灵活地在CPU和GPU之间分配,将人工智能方面的运算分配给GPU进行处理,从而提高数据并行运算的效率。Xilinx公司的DPU(Deep-Learning Processing Unit)深度学习处理单元,基于FPGA实现可配置计算引擎,用于加速卷积神经网络等深度学习算法;Google公司的TPU(TensorProcessing Units)张量处理器,也是加速神经网络运算能力的专用芯片,其与同期的CPU和GPU相比,能够获得15-30倍的性能提升和30-80倍的能效比提升。
另外还有推出的多模态AI芯片Thinker,可以平衡CNN和RNN在计算和带宽之间的资源冲突,并设计了支持片上训练和强化学习的可演化AI芯片Evolver,面向通用云端AI场景的ReDCIM,基于存算一体的自注意力神经网络Transformer加速的TranCIM和另一款基于近似计算和渐进稀疏的Transformer加速芯片。
AI芯片STICKER-T,提出块循环算法与统一频域加速的实现路径。DianNao系列神经网络加速器,支持大规模CNN等深度神经网络的加速处理,是世界上最早的面向人工智能领域专用计算的神经网络加速器。名为BPU(Brain Processing Unit)的AI芯片,使用TSMC40nm工艺进行流片,应用领域包括智能驾驶、智慧生活和智慧城市等数据密集型运算场景。
中央处理器(central processing unit,简称CPU)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。冯诺依曼体系结构是现代计算机的基础。在该体系结构下,程序和数据统一存储,指令和数据需要从同一存储空间存取,经由同一总线传输,无法重叠执行。根据冯诺依曼体系,CPU的工作分为以下5个阶段:取指令阶段、指令译码阶段、执行指令阶段、访存取数和结果写回。
中央处理器是电子计算机的主要设备之一,电脑中的核心配件。其功能主要是解释计算机指令以及处理计算机软件中的数据。CPU是计算机中负责读取指令,对指令译码并执行指令的核心部件。中央处理器主要包括两个部分,即控制器、运算器,其中还包括高速缓冲存储器及实现它们之间联系的数据、控制的总线。电子计算机三大核心部件就是CPU、内部存储器、输入/输出设备。中央处理器的功效主要为处理指令、执行操作、控制时间、处理数据。在计算机体系结构中,CPU是对计算机的所有硬件资源(如存储器、输入输出单元)进行控制调配、执行通用运算的核心硬件单元。CPU是计算机的运算和控制核心。计算机系统中所有软件层的操作,最终都将通过指令集映射为CPU的操作。
图形处理器(graphics processing unit,GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器。
GPU使显卡减少了对CPU的依赖,并进行部分原本CPU的工作,尤其是在3D图形处理时GPU所采用的核心技术有硬件T&L(几何转换和光照处理)、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等,而硬件T&L技术可以说是GPU的标志。
神经网络处理器(Antifcial Intelligence)也被称为神经网络加速器或计算卡,即深度学习处理器,是指专门用于处理智能应用中的大量计算任务的模块(其他非计算任务仍由CPU负责)。神经网络的许多数据处理涉及矩阵乘法和加法。大量并行工作的GPU提供了一种廉价的方法,但缺点是更高的功率。具有内置DSP模块和本地存储器的FPGA更节能,但它们通常更昂贵。深度学习是指多层的神经网络和训练它的方法。神经网络处理器,通俗讲就是指通过深度神经网络,模拟人脑的机制来学习、判断、决策。
多核处理器是指在一枚处理器中集成两个或多个完整的计算引擎(内核),此时处理器能支持系统总线上的多个处理器,由总线控制器提供所有总线控制信号和命令信号。多核技术的开发源于工程师们认识到,仅仅提高单核芯片的速度会产生过多热量且无法带来相应的性能改善,先前的处理器产品就是如此。他们认识到,在先前产品中以那种速率,处理器产生的热量会过高。即便是没有热量问题,其性价比也令人难以接受,速度稍快的处理器价格要高很多。多核心技术在应用上的优势有两个方面:为用户带来更强大的计算性能;更重要的,则是可满足用户同时进行多任务处理和多任务计算环境的要求。
所谓异构,是将实现使用不同类型指令集和体系架构的计算单元之间的“协同计算、彼此加速”,从而突破单一处理器架构的发展瓶颈,有效解决能耗、可扩展性等问题。对于异构处理器,常用的处理器芯片有CPU、DSP、GPU、FPGA、ASIC等,CPU&GPU需要软件支持,而FPGA&ASIC则是软硬件一体的架构,软件就是硬件。能耗比方面:ASIC>FPGA>GPU>CPU,产生这样结果的根本原因:对于计算密集型算法,数据的搬移和运算效率越高的能耗比就越高。ASIC和FPGA都是更接近底层IO,所以计算效率高和数据搬移高,但是FPGA有冗余晶体管和连线,运行频率低,所以没有ASIC能耗比高。GPU和CPU都是属于通用处理器,都需要进行取指令、指令译码、指令执行的过程,通过这种方式屏蔽了底层IO的处理,使得软硬件解耦,但带来数据的搬移和运算无法达到更高效率,所以没有ASIC、FPGA能耗比高。GPU和CPU之间的能耗比的差距,主要在于CPU中晶体管有大部分用在cache和控制逻辑单元,所以CPU相比GPU来说,对于计算密集同时计算复杂度低的算法,有冗余的晶体管无法发挥作用,能耗比上CPU低于GPU。
处理器芯片各自长期发展的过程中,形成了一些使用和市场上鲜明的特点。CPU&GPU领域存在大量的开源软件和应用软件,任何新的技术首先会用CPU实现算法,因此CPU编程的资源丰富而且容易获得,开发成本低而开发周期。FPGA的实现采用Verilog/VHDL等底层硬件描述语言实现,需要开发者对FPGA的芯片特征有较为深入的了解,但其高并行性的特征往往可以使业务性能得到量级的提升;同时FPGA是动态可重配的,当在数据中心部署之后,可以根据业务形态来配置不同的逻辑实现不同的硬件加速功能;举例来讲,当前服务器上的FPGA板卡部署的是图片压缩逻辑,服务于QQ业务;而此时广告实时预估需要扩容获得更多的FPGA计算资源,通过简单的FPGA重配流程,FPGA板卡即可以变身成“新”硬件来服务广告实时预估,非常适合批量部署。ASIC芯片可以获得最优的性能,即面积利用率高、速度快、功耗低;但是神经网络SC开发风险极大,需要有足够大的市场来保证成本价格,而且从研发到市场的时间周期很长,不适合例如深度学习CNN等算法正在快速迭代的领域。
基于上述关于人工智能芯片和人工神经网络的背景,申请人经过长期的研究和实验数据的搜集和验证,发现传统的人工神经网络映射依赖于外部CPU和编译器将网络映射为人工智能芯片的硬件所支持的数据流方式,也即是,传统的人工智能芯片往往只支持单一的神经网络模型的计算加速的应用。对于各个人工神经网络模型,若需要在人工智能芯片中进行编译和计算,均需要对人工智能芯片的数据流和电路排布等进行对应设计,因此,当前的人工智能芯片在人工神经网络的片内编译计算方面存在灵活性较低的问题。
下面结合本申请实施例所应用的场景,对本申请实施例涉及的技术方案进行介绍。
需要说明的是,本申请实施例提供的模型片内编译方法,其执行主体可以是模型片内编译装置,该模型片内编译装置可以通过软件、硬件或者软硬件结合的方式实现成为芯片中的部分或者全部。其中,芯片可以为人工智能芯片,例如,CPU、DSP、GPU、FPGA、ASIC等,芯片可以包括上层模块、标量引擎、矢量引擎和智能引擎,该上层模块、矢量引擎、标量引擎和智能引擎可以为硬件组件或者软件与硬件结合构成的组件。该芯片可以应用于各种智能设备中,例如,个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备等等,本申请实施例不对该芯片的应用设备进行具体限定。下述方法实施例中,均以执行主体是芯片来进行说明。
在一个实施例中,如图1所示,提供了一种模型片内编译方法,应用于上述芯片中,包括以下步骤:
步骤101,芯片中的上层模块获取待部署于芯片中的人工神经网络模型。
其中,该芯片可以为人工智能芯片。芯片中可以包括多个模块,例如标量引擎、智能引擎、矢量引擎和上层模块等,标量引擎主要可以用于整体控制该芯片中各模块的运行,矢量引擎可以用于针对并行处理的数据在芯片内做批量处理,智能引擎主要用于对芯片当前所处理的数据进行具体计算。该上层模块可以为标量引擎的上层,对于芯片当前待部署于芯片中以实现映射的人工神经网络模型来说,上层模块可以获取该人工神经网络模型,进而基于标量引擎对该人工神经网络模型在片内做编译处理。
步骤102,上层模块基于芯片中的标量引擎所内置的指令集,对人工神经网络模型进行转换处理,得到人工神经网络模型对应的多个目标指令,并将多个目标指令发送至标量引擎。
其中,该标量引擎可以是RISCV(Reduced Instruction Set Computing V)处理器。RISCV是一个基于精简指令集原则的开源指令集架构。基于此,该标量引擎中内置有预先开发的针对多种人工神经网络模型计算的多种指令集,也即是人工智能专用矢量指令集,各目标指令被执行后可以用于实现针对人工神经网络的编译映射、参数修订及模型映射校准等处理。
上层模块可以基于待部署的人工神经网络,得到多个用于对该人工神经网络进行编译处理的目标指令,将各目标指令发送至标量引擎,标量引擎即可直接执行各目标指令,从而实现对芯片当前待处理的人工神经网络的编译处理过程。
步骤103,标量引擎执行多个目标指令,以在芯片内实现人工神经网络模型对应的编译处理。
芯片运行过程中,标量引擎可以接收目标指令。可选的,若标量引擎可按序执行上层模块发送的目标指令,或者基于各目标指令的类型,同步执行同类型的目标指令等。
标量引擎执行目标指令后实现与该目标指令对应的操作处理,实现对人工神经网络模型对应的编译处理。可选的,标量引擎执行目标指令时,对应的操作处理可以包括相关矢量计算、人工神经网络的映射、人工神经网络的参数调整、芯片中其他模块的调度等。
上述面向人工智能芯片的标量引擎处理方法和装置,芯片中的上层模块获取待部署于芯片中的人工神经网络模型,进而上层模块可基于芯片中的标量引擎所内置的指令集,对人工神经网络模型进行转换处理,得到人工神经网络模型对应的多个目标指令,并将多个目标指令发送至标量引擎;进一步的,该标量引擎即可执行该多个目标指令,以在芯片内实现人工神经网络模型对应的编译处理。这样,由于该标量引擎所内置有支持对人工神经网络模型进行转换的指令集,对于不同类型的人工神经网络模型,该芯片均可以直接在片内将待处理的人工神经网络模型转换为芯片所支持的数据流,以直接进行后续的编译处理,而无需额外的处理器对该人工神经网络模型进行数据转换,对于不同类型的人工神经网络模型,也无需重新涉及芯片的电路排布,使得人工智能芯片可以有效支持多种人工神经网络映射和片内编译,有效提升当前人工智能芯片对人工神经网络模型映射的灵活性,提升片内编译人工神经网络模型的效率。
在一个实施例中,标量引擎中内置的指令集基于RISCV架构开发,且各指令集采用不同字段标识。
如上文所说,该标量引擎可以为RISCV处理器,其可支持多种人工神经网络映射和片内编译,支持片内指令编译和多级操作。可选的,该标量引擎可以为单发64位六级流水的RV64GC的应用级RISCV处理器。其中,单发64位六级流水指单个指令为64比特位且执行单个指令的步骤为六步。
具体的,RISCV架构中所包括的基本指令集主要有RV32I、RV32E、RV64I、RV128I四种,所包括的扩展指令集有M、A、F、D、C等数十种。在此基础上,本申请实施例中定制和拓展针对人工智能应用矢量计算及优化人工神经网络编译处理的专用指令集,并内置于标量引擎中。
考虑到CPU开源设计特性,本申请实施例采用RISCV作为内置处理器。利用RISCV指令集开源简洁高效的特点,采取模块化的指令集设计方法,将实现不同功能的指令分块,得到标量引擎所支持的各指令集。其中,各指令集可以包括基本指令集和扩展指令集。
由于标量引擎内置有多种指令集,且标量引擎位于芯片内部,因此,本申请实施例中可以将传统技术中CPU处理和编译过程内置于人工智能芯片内部。
并且,由于该指令集为标量引擎所内置的且针对人工神经网络的编译处理特别开发的,且不同指令集所包括的指令所实现的操作处理属于不同类型,因此,本申请实施例中,采用不同字段标识各指令集,例如,各指令的中的指定比特位为该指令所属的指令集对应的字段,进而使得各指令被标识,易于执行。
本申请实施例中,将开源的RISCV整合入芯片内部,在系统内部实现矢量计算和对芯片中其他模块的调度指令支持,以及对不同人工神经网络的片内程序编译,达到性能和灵活度的优化提升。
下面针对各指令集中各指令的格式进行说明。
在一个实施例中,目标指令的第一比特位区间用于表征目标指令所属的指令集;目标指令的第二比特位区间用于表征目标寄存器地址;目标指令的第三比特位区间用于表征是否需要写目标寄存器和是否需要读源寄存器;目标指令的第四比特位区间用于表征第一源寄存器地址;目标指令的第五比特位区间用于表征第二源寄存器地址;目标指令的第六比特位区间用于表征目标指令的操作码。
目标指令属于各指令集,可选的,本申请实施例中各指令集中的指令可以为32位编码格式,这样,该指令集可直接支持RISCV架构中已开发的各指令,提升指令集开发效率。目标指令的格式如表1所示。
(表1)
31 25 | 24 20 | 19 15 | 14 | 13 | 12 | 11 7 | 6 0 |
funct7 | rs2 | rs1 | xd | xs1 | xs2 | rd | opcode |
其中,第一比特位区间为opcode,用于表征目标指令所属的指令集。例如,矢量计算指令集的特定字段为000001,人工神经网络计算指令集的特定字段为000010,跨模块调度专用指令集的特定字段为000011。需要说明的是,也可采用其他字段标识,本申请实施例示出的仅作为一种其中一种示例。可选的,第一比特位区间包括如表1所示的0至6比特位。
第二比特位区间为rd,表征目标指令对应的目标寄存器地址,也可以为目标寄存器的编号。可选的,寄存器从0到寄存器31,共32个。可选的,第二比特位区间包括如表1所示的7至11比特位。
第三比特位区间为xs1、xs2和xd,用于表征是否需要写目标寄存器和是否需要读源寄存器,可选的,第三比特位区间可包括如表1所示的12至14比特位。其中,xd用于表征是否需要写目标寄存器rd;xs1用于表征是否需要读源寄存器rs1,xs2用于表征是否是否需要读源寄存器rs2。
第四比特位区间为rs1,用于表征第一源寄存器地址,也可以为第一源寄存器的编号。可选的,寄存器从0到寄存器31,共32个。可选的,第四比特位区间包括如表1所示的15至19比特位。
第五比特位区间为rs2,用于表征第二源寄存器地址,也可以为第一源寄存器的编号。可选的,寄存器从0到寄存器31,共32个。可选的,第五比特位区间包括如表1所示的20至24比特位。
第六比特位区间为funct7,用于表征目标指令的操作码。基于该第六比特位区间可标识更多的自定义操作,可选的,一共最多可以定义512条自定义指令。示例性的,第六比特位区间包括如表1所示的25至31位。
本申请实施例中,通过设定指令集的编码格式,使得标量引擎可以基于支持已有的常规矢量指令,进而基于所开发的指令构成多个指令集,有效支持人工神经网络编译过程中的多种运算,有效解决当前人工智能芯片神经网络映射不灵活的问题。
在一个实施例中,指令集包括用于实现矢量计算的矢量计算指令集、用于实现多种人工神经网络对应的操作运算的人工神经网络计算指令集以及用于标量引擎调度芯片内其他模块执行目标操作处理的跨模块调度专用指令集。
其中,该矢量计算指令集包括基本指令和本申请实施例所设计的扩展指令。基本指令例如包括矢量加,矢量减,矢量乘,矢量大小比较等,其可以是RISCV架构中已经开发的。扩展指令均为矢量指令,可选的,可包括9条扩展指令,各扩展指令的说明可参见表2所示,其中,本申请实施例中,矢量计算指令集可包括多个功能指令和多个运算指令,例如,矢量计算指令集中的扩展指令可包括如表2中的矢量加与矢量乘两类运算指令以及三条功能指令。
(表2)
其中,“-”表示空置。
上述三条功能指令分别为表2中的设置矢量长度寄存器的vset指令、向矢量寄存器组加载矢量的vld指令和从矢量寄存器组提取矢量的vst指令。
矢量加指令均默认为对已经加载在矢量寄存器组中的一组矢量(也称为原矢量)进行加法运算。vaddv指令表示取出另一组矢量与原矢量对应相加。vadd表示取出一个标量加在原矢量的每一个分量上,vaddi指令表示将一个立即数加在原矢量的每一个分量上。
矢量乘指令与矢量加指令类似。vmulv指令表示取出另一组矢量与原矢量对应相乘。vmul表示取出一个标量与原矢量的每一个分量相乘。vmuli指令表示将一个立即数与原矢量的每一个分量相乘。
人工神经网络计算指令集可实现驱动人工神经网络的一些相关操作,例如人工神经网络的编译、人工神经网络的映射、人工神经网络的单个或多个权重调整、多个人工神经网络的选择和重新映射等。可选的,关于人工神经网络计算指令集中各指令的说明可如表3所示例的。
(表3)
上层模块所发送的人工神经网络计算指令发送至标量引擎,并由标量引擎对其进行相应的数据处理,从而并调度内部计算处理模块工作。
设计跨模块调度专用指令集,定义配备跨模块调度的指令和协调指令等,实现融合计算和融合调度的能力,使得标量引擎可以对芯片中的其他模块(例如智能引擎和矢量引擎)进行跨模块调度。例如,标量引擎对矢量引擎的通道的调度、对智能引擎的逻辑判断功能的调度等。均需要配备跨模块调度的指令和协调指令。可选的,关于跨模块调度专用指令集中各指令的说明可如表4所示例的。
(表4)
上层模块所发送的跨模块调度专用指令发送至标量引擎,并由标量引擎对其进行相应的数据处理,从而并调度计算处理模块工作。
本申请实施例针对人工智能计算定义新的指令集,基于所开发的多种指令集,实现芯片内的指令操作和算法编译,在系统内部实现对智能引擎和矢量引擎的调度指令支持,以及对不同人工神经网络的片内程序编译,达到性能和灵活度的优化提升,提升人工智能芯片使用的灵活性。
另外,为减小芯片运算过程中对无关操作的资源开销,本申请实施例中还提出一种可重构逻辑单元简化机制。也即是,通过在标量引擎中定制可重构逻辑单元,标量引擎可在满足条件的情况下由正常计算流程切换为可重构计算流程,减少对无关操作的资源开销。并且,鉴于RISCV的开源属性,减去该框架中无用的资源开销,以追求标量引擎运算过程中能效的最优化。下面对可重构逻辑单元简化机制进行说明。
在一个实施例中,如图2所示,其示出了本申请实施例提供的一种重构处理的流程示意图,该模型片内编译方法还包括:
步骤201,确定标量引擎当前执行的目标指令对应的操作处理的目标类型。
步骤202,若目标类型与标量引擎中的可重构阵列当前对应的操作处理的类型不同,则对可重构阵列进行重构处理。
步骤203,利用重构处理后的可重构阵列对当前执行的目标指令进行操作处理。
其中,可重构阵列对应的操作处理的类型至少包括加操作和乘操作。
芯片中的标量引擎可确定当前其所执行的目标指令对应的操作处理是何种类型,并将其作为目标类型,例如,标量引擎当前执行的目标指令对应的操作处理的类型可以为加操作或者乘操作。
而对于可重构阵列,其对应的操作处理的类型至少包括加操作和乘操作。这样,该可重构阵列可在标量引擎处理加操作时重构为加操作,用于实现加操作的计算。同样,当该可重构阵列在标量引擎处理乘操作时重构为乘操作,用于实现乘操作的计算。
可选的,该可重构阵列可基于硬件组件或者硬件与软件结合的组件实现,并集成于该标量引擎中。
基于此,对于该标量引擎,其正常情况下处于正常计算流程中,其内部状态器可标识为正常流程。当其当前处理的目标指令对应的操作处理的目标类型为加操作或者乘操作,则标量引擎切换为可重构计算流程,内部状态器可以标识为可重构流程。此时,标量引擎中的可重构阵列当前所能处理的操作处理的类型与目标类型一致,则可以直接用于处理该目标类型的操作处理,例如目标类型与可重构阵列当前所能处理的操作处理的类型均为加操作。若标量引擎中的可重构阵列当前所能处理的操作处理的类型与目标类型不一致,则重构该可重构阵列的操作类型为目标类型,这样,其可以直接用于处理该目标类型对应的操作处理,例如,目标类型对应乘操作,而可重构阵列当前对应的操作处理的类型为加操作,则重构为用于处理乘操作。
这样,通过在标量引擎中引入可重构的技术,将其中的部分逻辑单元进行可重构化,在其进行加操作时重构为加阵列,进行乘操作时重构为乘阵列,以最小化的使用逻辑单元数量完成必备操作,保证芯片功能的基础上还可以减小芯片体积,加快标量引擎的处理速度。
在一个实施例中,该标量引擎基于RISCV架构设计指令集,并且,其预先设定删去相关无用逻辑,例如原始的与必备操作、矢量计算、人工智能操作和优化操作等无关的逻辑。由此减去标量引擎对无用计算的资源开销,提升处理效率。
本申请实施例中,为进一步加快标量引擎处理速度,设定标量引擎在特定情况下对目标指令的流水处理步骤进行缩减。具体说明如下。
在一个实施例中,该方法还包括:若标量引擎当前执行的目标指令对应的操作处理满足预设调整条件,则将标量引擎执行目标指令的流水级数由第一级数更改为第二级数;其中,第二级数小于第一级数。
其中,在常规的运算处理情况下,标量引擎执行目标指令的过程为六级流水。在特定的例如与人工神经网络计算或特定优化操作相关的运算处理情况下,标量引擎执行目标指令的过程可由常规的六级流水缩减为其他小于六级流水的级数,例如缩减为三级流水或二级流水等。
可选的,该预设调整条件例如包括进行重复数据读取的情况、配置无需改变的情况、跨模块调度专用指令集对应的跨模块调度方案的情况下等。
可选的,当标量引擎当前执行的目标指令对应的操作处理满足预设调整条件时,其可处于跨流水级调用计算流程,其内部状态器可标识为跨流水级调用流程。
可选的,当标量引擎完成可重构流程和跨流水调用流程时,标量引擎触发计算终止指示,并将计算结果外发至接口,供其他模块调用计算结果。
本申请实施例中,在满足预设调整条件时,标量引擎通过跳过执行目标指令的流水级,加快处理流程,从而减小计算流水带来的资源开销。
为便于理解本申请的方法,下面通过一个完整的实施例,对本申请实施例提供的一种兼容多种人工神经网络灵活映射的芯片架构方案进行完整的说明。该方案的流程示意图如图3所示。具体包括:
步骤301,芯片中的标量引擎中部署基于RISCV架构开发的矢量计算指令集、人工神经网络指令集和跨模块调度指令集。
步骤302,芯片中的标量引擎中去除无用逻辑。
例如与必备操作、矢量计算、人工智能操作和优化操作无关的逻辑。
步骤303,芯片中的标量引擎中集成可重构阵列。
该可重构阵列用于进行加操作时重构为加阵列,进行乘操作时重构为乘阵列。
步骤304,芯片供电后,标量引擎进入待命状态。
步骤305,标量引擎接收上层发送的目标指令,且内部状态器标识为正常计算流程。其中,目标指令与芯片当前待编译的人工神经网络模型相关。
步骤306,若该目标指令对应的操作处理类型与可重构阵列对应的操作处理的类型相同,采用可重构阵列完成目标指令对应的操作处理。
若该目标指令对应的操作处理类型与可重构阵列对应的操作处理的类型不同,则重构处理该可重构阵列,并利用重构处理后的可重构不阵列完成目标指令对应的操作处理。
步骤307,识别目标指令对应的运算处理情况是否满足预设调整条件,并在满足的情况下,调整缩减目标指令的流水级数。
其中,预设调整条件例如包括进行重复数据读取和配置无需改变的情况,或者本申请设计特有的跨模块优化调度方案的情况。并且,在不满足预设调整条件的情况下,采用常规的六级流水执行目标指令。
步骤308,基于目标指令对应的流水级数执行该目标指令。
本申请实施例所提供的基于标量引擎来兼容多种人工神经网络灵活映射的芯片架构方案,支持多种人工神经网络映射和片内编译,有效解决当前人工智能芯片神经网络映射不灵活的问题。开发人工智能专用矢量指令集可以拓展面向人工智能应用矢量计算及本项目优化操作的支持。可重构逻辑单元简化机制,可以减少对无关操作的资源开销,加快标量引擎处理速度。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的模型片内编译方法的模型片内编译装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个模型片内编译装置实施例中的具体限定可以参见上文中对于模型片内编译方法的限定,在此不再赘述。
在一个实施例中,如图4所示,提供了一种模型片内编译装置,应用于芯片中,该模型片内编译装置400包括:获取模块401、转换模块402和执行模块403,其中:
获取模块401,用于所述芯片中的上层模块获取待部署于所述芯片中的人工神经网络模型;
转换模块402,用于所述上层模块基于所述芯片中的标量引擎所内置的指令集,对所述人工神经网络模型进行转换处理,得到所述人工神经网络模型对应的多个目标指令,并将所述多个目标指令发送至所述标量引擎;
执行模块403,用于所述标量引擎执行所述多个目标指令,以在所述芯片内实现所述人工神经网络模型对应的编译处理。
在一个实施例中,指令集包括用于实现矢量计算的矢量计算指令集、用于实现多种人工神经网络对应的操作运算的人工神经网络计算指令集以及用于标量引擎调度芯片内其他模块执行目标操作处理的跨模块调度专用指令集。
在一个实施例中,矢量计算指令集包括多个功能指令和多个运算指令。
在一个实施例中,标量引擎中内置的指令集基于RISCV架构开发,且各指令集采用不同字段标识。
在一个实施例中,目标指令的第一比特位区间用于表征目标指令所属的指令集;目标指令的第二比特位区间用于表征目标寄存器地址;目标指令的第三比特位区间用于表征是否需要写目标寄存器和是否需要读源寄存器;目标指令的第四比特位区间用于表征第一源寄存器地址;目标指令的第五比特位区间用于表征第二源寄存器地址;目标指令的第六比特位区间用于表征目标指令的操作码。
在一个实施例中,如图5所示,示出了另一种模型片内编译装置,该装置500还包括重构模块404,其中:
重构模块404,用于确定标量引擎当前执行的目标指令对应的操作处理的目标类型;若目标类型与标量引擎中的可重构阵列当前对应的操作处理的类型不同,则对可重构阵列进行重构处理;利用重构处理后的可重构阵列对当前执行的目标指令进行操作处理;其中,可重构阵列对应的操作处理的类型至少包括加操作和乘操作。
在一个实施例中,该装置500还包括更改模块405,其中:
更改模块405,用于若标量引擎当前执行的目标指令对应的操作处理满足预设调整条件,则将标量引擎执行目标指令的流水级数由第一级数更改为第二级数;其中,第二级数小于第一级数。
上述模型片内编译装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种芯片,其内部结构图可以如图6所示。该芯片包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该芯片的处理器用于提供计算和控制能力。该芯片的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该芯片的数据库用于存储模型片内编译数据。该芯片的输入/输出接口用于处理器与外部设备之间交换信息。该芯片的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种模型片内编译方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的芯片的限定,具体的芯片可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种芯片,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
芯片中的上层模块获取待部署于芯片中的人工神经网络模型;
上层模块基于芯片中的标量引擎所内置的指令集,对人工神经网络模型进行转换处理,得到人工神经网络模型对应的多个目标指令,并将多个目标指令发送至标量引擎;
标量引擎执行多个目标指令,以在芯片内实现人工神经网络模型对应的编译处理。
在一个实施例中,指令集包括用于实现矢量计算的矢量计算指令集、用于实现多种人工神经网络对应的操作运算的人工神经网络计算指令集以及用于标量引擎调度芯片内其他模块执行目标操作处理的跨模块调度专用指令集。
在一个实施例中,矢量计算指令集包括多个功能指令和多个运算指令。
在一个实施例中,标量引擎中内置的指令集基于RISCV架构开发,且各指令集采用不同字段标识。
在一个实施例中,目标指令的第一比特位区间用于表征目标指令所属的指令集;目标指令的第二比特位区间用于表征目标寄存器地址;目标指令的第三比特位区间用于表征是否需要写目标寄存器和是否需要读源寄存器;目标指令的第四比特位区间用于表征第一源寄存器地址;目标指令的第五比特位区间用于表征第二源寄存器地址;目标指令的第六比特位区间用于表征目标指令的操作码。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
确定标量引擎当前执行的目标指令对应的操作处理的目标类型;若目标类型与标量引擎中的可重构阵列当前对应的操作处理的类型不同,则对可重构阵列进行重构处理;利用重构处理后的可重构阵列对当前执行的目标指令进行操作处理;其中,可重构阵列对应的操作处理的类型至少包括加操作和乘操作。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
若标量引擎当前执行的目标指令对应的操作处理满足预设调整条件,则将标量引擎执行目标指令的流水级数由第一级数更改为第二级数;其中,第二级数小于第一级数。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
芯片中的上层模块获取待部署于芯片中的人工神经网络模型;
上层模块基于芯片中的标量引擎所内置的指令集,对人工神经网络模型进行转换处理,得到人工神经网络模型对应的多个目标指令,并将多个目标指令发送至标量引擎;
标量引擎执行多个目标指令,以在芯片内实现人工神经网络模型对应的编译处理。
在一个实施例中,指令集包括用于实现矢量计算的矢量计算指令集、用于实现多种人工神经网络对应的操作运算的人工神经网络计算指令集以及用于标量引擎调度芯片内其他模块执行目标操作处理的跨模块调度专用指令集。
在一个实施例中,矢量计算指令集包括多个功能指令和多个运算指令。
在一个实施例中,标量引擎中内置的指令集基于RISCV架构开发,且各指令集采用不同字段标识。
在一个实施例中,目标指令的第一比特位区间用于表征目标指令所属的指令集;目标指令的第二比特位区间用于表征目标寄存器地址;目标指令的第三比特位区间用于表征是否需要写目标寄存器和是否需要读源寄存器;目标指令的第四比特位区间用于表征第一源寄存器地址;目标指令的第五比特位区间用于表征第二源寄存器地址;目标指令的第六比特位区间用于表征目标指令的操作码。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
确定标量引擎当前执行的目标指令对应的操作处理的目标类型;若目标类型与标量引擎中的可重构阵列当前对应的操作处理的类型不同,则对可重构阵列进行重构处理;利用重构处理后的可重构阵列对当前执行的目标指令进行操作处理;其中,可重构阵列对应的操作处理的类型至少包括加操作和乘操作。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
若标量引擎当前执行的目标指令对应的操作处理满足预设调整条件,则将标量引擎执行目标指令的流水级数由第一级数更改为第二级数;其中,第二级数小于第一级数。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种模型片内编译方法,其特征在于,应用于芯片中,所述方法包括:
所述芯片中的上层模块获取待部署于所述芯片中的人工神经网络模型;
所述上层模块基于所述芯片中的标量引擎所内置的指令集,对所述人工神经网络模型进行转换处理,得到所述人工神经网络模型对应的多个目标指令,并将所述多个目标指令发送至所述标量引擎;
所述标量引擎执行所述多个目标指令,以在所述芯片内实现所述人工神经网络模型对应的编译处理。
2.根据权利要求1所述的方法,其特征在于,所述指令集包括用于实现矢量计算的矢量计算指令集、用于实现多种人工神经网络对应的操作运算的人工神经网络计算指令集以及用于所述标量引擎调度所述芯片内其他模块执行目标操作处理的跨模块调度专用指令集。
3.根据权利要求2所述的方法,其特征在于,所述矢量计算指令集包括多个功能指令和多个运算指令。
4.根据权利要求1至3任一所述的方法,其特征在于,所述标量引擎中内置的指令集基于RISCV架构开发,且各所述指令集采用不同字段标识。
5.根据权利要求4所述的方法,其特征在于,
所述目标指令的第一比特位区间用于表征所述目标指令所属的指令集;
所述目标指令的第二比特位区间用于表征目标寄存器地址;
所述目标指令的第三比特位区间用于表征是否需要写目标寄存器和是否需要读源寄存器;
所述目标指令的第四比特位区间用于表征第一源寄存器地址;
所述目标指令的第五比特位区间用于表征第二源寄存器地址;
所述目标指令的第六比特位区间用于表征所述目标指令的操作码。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述标量引擎当前执行的所述目标指令对应的操作处理的目标类型;
若所述目标类型与所述标量引擎中的可重构阵列当前对应的操作处理的类型不同,则对所述可重构阵列进行重构处理;
利用重构处理后的所述可重构阵列对当前执行的所述目标指令进行操作处理;
其中,所述可重构阵列对应的操作处理的类型至少包括加操作和乘操作。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述标量引擎当前执行的所述目标指令对应的操作处理满足预设调整条件,则将所述标量引擎执行所述目标指令的流水级数由第一级数更改为第二级数;其中,所述第二级数小于所述第一级数。
8.一种模型片内编译装置,其特征在于,应用于芯片中,所述装置包括:
获取模块,用于所述芯片中的上层模块获取待部署于所述芯片中的人工神经网络模型;
转换模块,用于所述上层模块基于所述芯片中的标量引擎所内置的指令集,对所述人工神经网络模型进行转换处理,得到所述人工神经网络模型对应的多个目标指令,并将所述多个目标指令发送至所述标量引擎;
执行模块,用于所述标量引擎执行所述多个目标指令,以在所述芯片内实现所述人工神经网络模型对应的编译处理。
9.一种芯片,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310319068.5A CN116400926A (zh) | 2023-03-29 | 2023-03-29 | 面向人工智能芯片的标量引擎处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310319068.5A CN116400926A (zh) | 2023-03-29 | 2023-03-29 | 面向人工智能芯片的标量引擎处理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116400926A true CN116400926A (zh) | 2023-07-07 |
Family
ID=87013605
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310319068.5A Pending CN116400926A (zh) | 2023-03-29 | 2023-03-29 | 面向人工智能芯片的标量引擎处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116400926A (zh) |
-
2023
- 2023-03-29 CN CN202310319068.5A patent/CN116400926A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yin et al. | A high energy efficient reconfigurable hybrid neural network processor for deep learning applications | |
US11409575B2 (en) | Computation method and product thereof | |
Khailany et al. | Imagine: Media processing with streams | |
EP3005139B1 (en) | Incorporating a spatial array into one or more programmable processor cores | |
US20210216318A1 (en) | Vector Processor Architectures | |
Page et al. | Sparcnet: A hardware accelerator for efficient deployment of sparse convolutional networks | |
US20140137123A1 (en) | Microcomputer for low power efficient baseband processing | |
WO2023071238A1 (zh) | 计算图的编译、调度方法及相关产品 | |
Lym et al. | FlexSA: Flexible systolic array architecture for efficient pruned DNN model training | |
Fell et al. | Force-directed scheduling for data flow graph mapping on coarse-grained reconfigurable architectures | |
Marconi | Online scheduling and placement of hardware tasks with multiple variants on dynamically reconfigurable field-programmable gate arrays | |
CN112051981B (zh) | 一种数据流水线计算路径结构及单线程数据流水线系统 | |
Song et al. | Gpnpu: Enabling efficient hardware-based direct convolution with multi-precision support in gpu tensor cores | |
He et al. | A configurable SIMD architecture with explicit datapath for intelligent learning | |
CN116468078A (zh) | 面向人工智能芯片的智能引擎处理方法和装置 | |
WO2023030507A1 (zh) | 编译优化方法、装置、计算机设备以及存储介质 | |
Hannig | Scheduling techniques for high-throughput loop accelerators | |
CN113469326B (zh) | 在神经网络模型中执行剪枝优化的集成电路装置及板卡 | |
de Dinechin et al. | Deep learning inference on the mppa3 manycore processor | |
CN116400926A (zh) | 面向人工智能芯片的标量引擎处理方法和装置 | |
CN114595813A (zh) | 异构加速处理器及数据计算方法 | |
CN115840894A (zh) | 一种用于处理多维张量数据的方法及其相关产品 | |
Xue et al. | A reconfigurable pipelined architecture for convolutional neural network acceleration | |
Kao | Performance-oriented FPGA-based convolution neural network designs | |
CN116484909A (zh) | 面向人工智能芯片的矢量引擎处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |