CN112860320A - 基于risc-v指令集进行数据处理的方法、***、设备及介质 - Google Patents
基于risc-v指令集进行数据处理的方法、***、设备及介质 Download PDFInfo
- Publication number
- CN112860320A CN112860320A CN202110175746.6A CN202110175746A CN112860320A CN 112860320 A CN112860320 A CN 112860320A CN 202110175746 A CN202110175746 A CN 202110175746A CN 112860320 A CN112860320 A CN 112860320A
- Authority
- CN
- China
- Prior art keywords
- instruction
- data
- cache
- coefficient
- vector
- 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
- 238000000034 method Methods 0.000 title claims abstract description 74
- 238000012545 processing Methods 0.000 title claims abstract description 32
- 238000004364 calculation method Methods 0.000 claims abstract description 69
- 230000009191 jumping Effects 0.000 claims abstract description 14
- 238000011176 pooling Methods 0.000 claims abstract description 11
- 230000003213 activating effect Effects 0.000 claims abstract description 6
- 230000001172 regenerating effect Effects 0.000 claims abstract description 6
- 230000004044 response Effects 0.000 claims description 22
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 7
- 239000011159 matrix material Substances 0.000 abstract description 13
- 238000013461 design Methods 0.000 abstract description 2
- 239000000872 buffer Substances 0.000 description 31
- 238000013473 artificial intelligence Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 7
- 230000004913 activation Effects 0.000 description 6
- 230000003993 interaction Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 230000002035 prolonged effect Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 238000001994 activation Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Images
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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
-
- 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- 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/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于RISC‑V指令集进行数据处理的方法、***、设备和存储介质,方法包括:从RISC‑V指令空间中获取指令缓存到缓存中,并判断指令的类型;响应于指令为分支跳转指令,重新生成指令地址,并根据指令地址跳转到对应的分支;响应于跳转到AIPU分支,通过第一级输入特征缓存和第一级系数缓存存储用于当前卷积运算的特征数据和系数数据,并通过第二级输入特征缓存和第二级系数缓存存储下一步卷积运算的特征数据和系数数据;以及根据对应的特征数据和系数数据进行卷积运算,并对运算得到的结果进行激活、归一化和池化。本发明根据RISC‑V指令集,设计了三条指令分支的处理器架构,实现了通用控制、向量运算、卷积和矩阵加速计算,适用于终端AI推理芯片。
Description
技术领域
本发明涉及数据处理领域,更具体地,特别是指一种基于RISC-V指令集进行数据处理的方法、***、计算机设备及可读介质。
背景技术
数据的价值在于分析利用,而非简单存储。数据量在不断在增长,不可能把所有数据都通过网络传到云端,带宽增长的速度是慢于数据增长的速度。对于实时性要求较高的应用场景,我们需要在边缘对数据进行判断,比如自动驾驶、无人驾驶等领域。对于隐私保护要求比较高的场景,比如医疗信息或者用户不愿意进行云端分享的数据,需要在本地进行存储。比如安防设备所产生的数据大部分是没有用或没有挖掘潜力的数据,全部传送到云端是对带宽一种浪费,若在边缘端做智能分析,只向云端传送有用或有潜力的数据,会大大节省网络带宽。因此数据处理从云端转移到边缘端是一种必然趋势,因此,边缘端AI(artificial intelligence,人工智能)芯片也是大势所趋。
在边缘端做人工智能处理需要AI芯片,AI芯片面临的挑战主要为计算算力和计算效率。AI芯片的算力由片上计算单元的数量决定的。由于AI计算涉及的数据量非常大,理论上AI芯片的算力越大越好,但实际上AI芯片的算力受多种因素制约:
1.片上存储带宽及总线带宽:AI芯片的主要矛盾为存储带宽和计算算力之间的矛盾。算力越大,输入数据、中间结果、输出数据量越大,要求的存储带宽越高,但目前存储带宽远远不能满足算力的需求,如果不能合理布置计算单元与存储单元,就会导致出现算力大但效率不高的结果。
2.AI计算涉及到的算子多种多样,如卷积计算、矩阵计算、归一化、激活、池化等多种线性及非线性计算。深度神经网络模型通常由多层组成,前一层的输出是下一层的输入;同一层中,乘加运算的结果往往是激活、池化、归一化的输入。因此,如果不能合理的实现多线程/并行计算/计算流水,上一步的计算会阻碍下一步的运算,造成资源浪费,降低计算效率。
3.如2所述,AI涉及到的算子多种多样,但AI芯片是固定不变的,如何使不变的硬件高效的处理多变的算子,这就需要软件能够根据硬件架构合理分配硬件资源,编译出高效的机器码。同时还要求AI芯片具备高效的控制能力。
发明内容
有鉴于此,本发明实施例的目的在于提出一种基于RISC-V指令集进行数据处理的方法、***、计算机设备及计算机可读存储介质,通过AIPU(AI process unit,人工智能处理单元)和CPU共享内存,使计算与存储相邻,提高内存访问带宽,方便AIPU与CPU的数据交互,减少了与外部总线的数据交互量,减少了对总线带宽的需求。同时AIPU和CPU内部各有一个小的buffer(缓存)用于缓存输入数据、中间结果、输出数据以及CPU的预读取的指令,允许在数据计算的同时进行数据加载,延长数据读写时间,进一步减少对总线带宽的需求。
基于上述目的,本发明实施例的一方面提供了一种基于RISC-V指令集进行数据处理的方法,包括如下步骤:从RISC-V指令空间中获取指令缓存到缓存中,并判断所述指令的类型;响应于所述指令为分支跳转指令,重新生成指令地址,并根据所述指令地址跳转到对应的分支;响应于跳转到AIPU分支,通过第一级输入特征缓存和第一级系数缓存存储用于当前卷积运算的特征数据和系数数据,并通过第二级输入特征缓存和第二级系数缓存存储下一步卷积运算的特征数据和系数数据;以及根据对应的特征数据和系数数据进行卷积运算,并对运算得到的结果进行激活、归一化和池化。
在一些实施方式中,方法还包括:响应于跳转到向量架构分支,根据所述指令进行向量操作。
在一些实施方式中,方法还包括:响应于所述指令为加载或存储指令,根据源操作数中的地址,读取存储空间的地址到目的操作数中。
在一些实施方式中,方法还包括:判断向量源操作数对应的向量寄存器是否在同一个组内;以及响应于所述向量源操作数对应的向量寄存器不在同一个组内,使两个与所述向量寄存器位宽相同的端口同时进行读写。
在一些实施方式中,方法还包括:将所述AIPU分支中的寄存器文件配置成两部分,第一部分运行当前AIPU运算,第二部分获取AIPU下一步运算所需要的参数。
在一些实施方式中,方法还包括:根据运算的需求,读取对应的数据并对所述数据进行维度转换,并将转换后的数据写入对应的系数缓存或输入特征缓存。
在一些实施方式中,方法还包括:响应于进行卷积计算,读取所述第一级输入特征缓存和第一级系数缓存中的数据,并判断所述第一级输入特征缓存和第一级系数缓存剩余的空间是否大于下一组数据的大小;以及响应于所述第一级输入特征缓存和第一级系数缓存剩余的空间大于下一组数据的大小,开启写缓存。
本发明实施例的另一方面,提供了一种基于RISC-V指令集进行数据处理的***,包括:获取模块,配置用于从RISC-V指令空间中获取指令缓存到缓存中,并判断所述指令的类型;跳转模块,配置用于响应于所述指令为分支跳转指令,重新生成指令地址,并根据所述指令地址跳转到对应的分支;AIPU模块,配置用于响应于跳转到AIPU分支,通过第一级输入特征缓存和第一级系数缓存存储用于当前卷积运算的特征数据和系数数据,并通过第二级输入特征缓存和第二级系数缓存存储下一步卷积运算的特征数据和系数数据;以及执行模块,配置用于根据对应的特征数据和系数数据进行卷积运算,并对运算得到的结果进行激活、归一化和池化。
本发明实施例的又一方面,还提供了一种计算机设备,包括:至少一个处理器;以及存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现如上方法的步骤。
本发明实施例的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。
本发明具有以下有益技术效果:通过AIPU(AI process unit,人工智能处理单元)和CPU共享内存,使计算与存储相邻,提高内存访问带宽,方便AIPU与CPU的数据交互,减少了与外部总线的数据交互量,减少了对总线带宽的需求。同时AIPU和CPU内部各有一个小的buffer用于缓存输入数据、中间结果、输出数据以及CPU的预读取的指令,允许在数据计算的同时进行数据加载,延长数据读写时间,进一步减少对总线带宽的需求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明提供的基于RISC-V指令集进行数据处理的方法的实施例的示意图;
图2为本发明实施例中CPU架构示意图;
图3为本发明提供的AIPU架构的示意图;
图4为本发明提供的基于RISC-V指令集进行数据处理的方法的实施例中卷积运算的示意图;
图5为本发明提供的基于RISC-V指令集进行数据处理的计算机设备的实施例的硬件结构示意图;
图6为本发明提供的基于RISC-V指令集进行数据处理的计算机存储介质的实施例的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
基于上述目的,本发明实施例的第一个方面,提出了一种基于RISC-V指令集进行数据处理的方法的实施例。图1示出的是本发明提供的基于RISC-V指令集进行数据处理的方法的实施例的示意图。如图1所示,本发明实施例包括如下步骤:
S1、从RISC-V指令空间中获取指令缓存到缓存中,并判断指令的类型;
S2、响应于指令为分支跳转指令,重新生成指令地址,并根据指令地址跳转到对应的分支;
S3、响应于跳转到AIPU分支,通过第一级输入特征缓存和第一级系数缓存存储用于当前卷积运算的特征数据和系数数据,并通过第二级输入特征缓存和第二级系数缓存存储下一步卷积运算的特征数据和系数数据;以及
S4、根据对应的特征数据和系数数据进行卷积运算,并对运算得到的结果进行激活、归一化和池化。
本发明实施例中采用了存算一体的结构,AIPU和CPU共享内存,使计算与存储相邻,提高内存访问带宽,方便AIPU与CPU的数据交互,减少了与外部总线的数据交互量,减少了对总线带宽的需求。同时AIPU和CPU内部各有一个小的buffer用于缓存输入数据、中间结果、输出数据以及CPU的预读取的指令,允许在数据计算的同时进行数据加载,延长数据读写时间,进一步减少对总线带宽的需求。
RISC-V指令集包括通用指令集和向量扩展指令集,可以分为:整数指令集I、乘加运算指令集M、原子操作指令集A、单精度指令集F、双精度指令集D、压缩指令集C和向量指令集V。算术逻辑运算单元完成IMAFDC指令集操作,向量运算单元完成向量指令集V操作。CPU架构是根据RISC-V指令集设计的,CPU的功能是运行***代码,完成***控制和数据运算。
图2示出的是本发明实施例中CPU架构示意图。如图2所示,CPU采用了两级流水线架构,第一阶段是取指阶段,负责从指令存储空间里获取指令缓存到指令缓存中。第二阶段将指令进行译码并执行。译码时分析指令的类型(向量指令或普通指令),根据相应的指令类型和操作码启动相应的数据运算,例如向量加指令,则会从向量数据存储中读取数据到向量寄存器,然后在向量运算单元中完成运算,将结果缓存到向量数据缓存中。
此处设置向量数据缓存的意义是:AI推理计算中,向量操作通常不是独立的,往往需要合理的将多个向量操作用流水线形式完成计算,若将中间结果存储到数据sram(Static Random Access Memory,静态随机存取存储器)中,向量数据可能需要多个周期才能完成存储或读取,这样会大大增加向量计算周期。设置一个向量缓存buffer可以在启动向量计算前将数据提前加载到向量缓存buffer中,向量计算完成后,将最终结果存储到数据sram中。向量数据的预读取和结果存储都可以在进行其他运算期间完成,减少向量运算周期。向量数据缓存模块的端口较宽,满足向量运算单元的带宽需求。
从RISC-V指令空间中获取指令缓存到缓存中,并判断指令是否为分支跳转指令;响应于指令为分支跳转指令,重新生成指令地址,并根据指令地址跳转到对应的分支。当遇到分支跳转指令时,若分支跳转成立(或无条件跳转)时,pc(指令地址)会重新生成,并清除指令缓存中的指令。
该架构有3个架构分支,分别为:通用架构分支,用于支持通用指令,实现cpu的功能;向量架构分支,用于支持risc-v向量指令集,完成向量操作;AIPU分支,该分支支持通用的load/store指令,支持自定义用户指令,用于完成卷积、矩阵乘等特殊的密集计算。其中,AIPU分支可以与AIPU架构建立联系。AIPU分支通过CPU的load(加载)/store(存储)指令配置各个功能模块的寄存器,AIPU内部各个功能模块的工作只受寄存器控制,不需要CPU的指令参与,因此计算效率高但不够灵活,适用于特殊的大规模计算。向量架构分支是通过CPU的向量指令控制的,每一步的操作都需要指令控制,由此可见,向量架构分支要比AIPU灵活,但计算效率较低,适用于小批量,多样化的向量计算。由于向量操作涉及的数据较多,如何加快数据的load和store是关键。
响应于跳转到AIPU分支,通过第一级输入特征缓存和第一级系数缓存存储用于当前卷积运算的特征数据和系数数据,并通过第二级输入特征缓存和第二级系数缓存存储下一步卷积运算的特征数据和系数数据。输入特征向量缓存和系数向量缓存主要用于缓存乘加运算单元当前时钟周期内所要计算的数据,这些数据都是以向量形式并行计算。由于这些数据不可能在单个周期内从输入特征(或系数)缓存中全部读取出来,需要合理利用卷积中输入特征数据和系数(weight)数据的复用特点,把读数据的过程掩藏在数据计算的过程中,这样整个计算过程不会中断。
图3示出的是本发明提供的AIPU架构的示意图。如图4所示,AIPU架构包括寄存器文件、DMA、读写接口仲裁、地址生成器、卷积时序控制器、向量缓存、乘加运算矩阵、中间结果累加器和特殊向量运算单元。
AIPU架构的核心是乘加运算矩阵模块,包含大量的乘法和加法硬件资源,能够实现并行的、高速的乘加运算,满足密集型的卷积/矩阵运算的算力需求;其他的模块是为了使卷积运算更加高效,如介绍的数据复用是为了解决计算时数据需求量大,但是数据总线和SRAM的带宽不够的矛盾,尽量多复用读取到的数据,减少带宽的压力;buffer(缓存)的设置是为了调节buffer前后模块数据吞吐率的不同,减少阻塞的发生,使各个功能模块全速的运转而不阻塞;向量运算单元可以根据卷积算法需求,提供不同的算法支持,这样一来,可以读取数据后完成所用的运算,然后再存储起来,而不是多次读取数据,完成一次完整的卷积计算;地址发生器配合读写控制,可以通过不同的读写数据的顺序实现数据排列,使卷积运算更加高效;AI计算所用的卷积神经网络通常分为许多层,AI推理芯片需要一层层的计算,每一层都有大量的卷积或矩阵运算,有了乒乓寄存器后,就可以在计算本层的同时,配置AIPU下一层计算所需的参数,如数据维度等信息,这样一来,本层结束后,下一层的计算可以立即开始,这就减少了整个神经网络的计算时间,提高的计算效率。
图4示出的是本发明提供的基于RISC-V指令集进行数据处理的方法的实施例中卷积运算的示意图。如图3所示,乘加运算矩阵一次计算中,f0向量块同时与w0…w7做乘加运算(向量块包含多个向量元素,乘加运算即对应的向量元素相乘然后将所有元素的乘积累加起来,累加和即输出结果)。将f0和w0…w7对应到乘加矩阵上,f0相当于复制了8次,分别与w0…w7向量块做乘加运算。同理,f1…f7都需要与w0…w7做乘加运算。在这个过程中,f0…f7复用了w0…w7向量块,而每个w向量块复用了同一个f向量块。因此,在这8次矩阵运算中,只需要取一次w0…w7,然后每次计算都读取一个f向量块。8次运算需要用8个时钟周期,读取w0…w7也需要8个周期,因此可以将读取w向量块的过程隐藏在计算过程中(即读取数据过程完全和计算过程重叠,不需要中断数据计算过程等待数据读取)。这就是需要设置输入特征向量缓存和系数向量缓存的原因。
中间结果缓存用于缓存向量计算的中间结果,根据卷积原理,一次向量乘加运算并不能得到最终结果,需要将多次的乘加的结果累加起来。因此,在乘加结果累加器后面设置了缓存。当中间结果经过不断的累加后得到了完整的最终结果时,需要将完整的结果存储到完整结果缓存buffer里。这个缓存buffer有多个作用:
1.避免数据被后面的中间结果覆盖掉;
2.该缓存buffer由后面的激活模块、池化模块等共享,用于存放这些计算模块的输入数据和输出数据;
3.该模块带有总线读写控制,将最终的计算数据发送到DMA接口。
在一些实施方式中,方法还包括:将所述AIPU分支中的寄存器文件配置成两部分,第一部分运行当前AIPU运算,第二部分获取AIPU下一步运算所需要的参数。寄存器文件可以在添加编译器后端时设置为***寄存器,通过load指令加载配置信息。寄存器文件配置为两部分,执行乒乓操作,即:第一部分在控制AIPU运算过程时,第二部分接受AIPU下一步计算所需要的参数,当第一部分运算完成后,第二部分寄存器转换为当前可用寄存器。这样可以保证AIPU连续不间断的工作。
寄存器文件配置和转换原理如下:由于在编译器后端描述芯片架构时,两组寄存器会被添加到编译器后端,编译器会根据架构中的寄存器描述寻找相应的寄存器。如loadr0,addr是把address处的数据加载到寄存器0里,load r1,addr会把数据加载到寄存器1里。但是AIPU使用寄存器时需要判断哪个寄存器可用,这时需要“计算完成”信号来交替使能寄存器0和寄存器1。在编程时,使能一次AIPU计算后,需要紧接着配置另外一个寄存器,为下一次启动AIPU做准备。
在一些实施方式中,方法还包括:响应于所述指令为加载或存储指令,根据源操作数中的地址,读取存储空间的地址到目的操作数中。RISC-V的指令通常有一个或两个源操作数rs1、rs2,对应的向量源操作数为vs1、vs2。指令根据操作码(代表着计算类型,如加、减、乘、除等操作)将源操作数送到相应的执行单元中(包括数据加载、数据存储、标量计算、向量计算等)。例如,当操作码代表着load/store时,说明指令是访问存储指令,执行单元根据rs1中的地址,读取数据存储空间的地址到目的操作数(rd或vd)中。
在一些实施方式中,方法还包括:判断向量源操作数对应的向量寄存器是否在同一个组内;以及响应于所述向量源操作数对应的向量寄存器不在同一个组内,使两个与所述向量寄存器位宽相同的端口同时进行读写。为了加快向量的load和store,可以设置多个与向量寄存器位宽相同的端口。如,有32个向量寄存器,硬件上把这32个向量寄存器分为4组,每组对应一个端口。根据vsetvli指令设置的向量组数使能相应端口,如vsetvli t0,a0,e8,m4指令设置了4个向量寄存器一组,则软件把32个寄存器分成了8组,与硬件的对应关系就是2个软件向量组对应一个硬件向量组。若计算时向量寄存器vs1,vs2在同一组内,则只使能一个端口读写,若在两组里,则使能两个端口同时读写。
在一些实施方式中,方法还包括:响应于跳转到向量架构分支,根据所述指令进行向量操作。
在一些实施方式中,方法还包括:根据运算的需求,读取对应的数据并对所述数据进行维度转换,并将转换后的数据写入对应的系数缓存或输入特征缓存。根据AIPU的架构,系数缓存单元和输入特征缓存单元都需要从共享的外部SRAM中读取weight和feature数据,地址发生器根据寄存器配置生成相应的SRAM地址。卷积计算或矩阵运算根据不同的应用会有不同的计算方式,如卷积计算又分为一维/二维/三维卷积、空洞卷积、depthwise卷积、分离式卷积、转置卷积等。不同的计算方式读取数据的方式也不同,卷积计算通常还会对数据的维度做相应的变换,这就需要地址生成器根据寄存器的配置以不同的方式读取数据,变相的完成这些转换。由此可见,地址发生器及读写数据控制的功能为:根据不同的计算需求,完成数据的读取并作相应的维度转换,然后写入相应的系数(weight)缓存单元或输入特征(feature)缓存单元中。
卷积时序控制单元是整个AIPU的控制核心,负责收集各个功能模块的状态,控制相关模块的使能,产生卷积运算的同步信号。卷积同步信号是整个卷积过程的节拍。整个卷积过程包含N(N>=1)个节拍,一个节拍包含M(>=1)个时钟周期,乘加操作和累加操作的周期为一个时钟周期。因此,一个节拍包含M此乘加运算和累加运算。M的大小由卷积过程中数据复用的次数决定。例如同一组系数复用了8次,则M的最小值为8(若计算周期数足够加载下一组数据,则M就是计算周期;否则,M需要额外的时间加载下一组的数据)。由于卷积计算与数据加载是同步进行的,因此数据加载的同步信号经过固定的读写数据周期的延时,就是卷积计算的同步信号。同理,累加器的同步信号是卷积同步信号经过固定的乘加运算周期的延时后的信号。
在一些实施方式中,方法还包括:响应于进行卷积计算,读取所述第一级输入特征缓存和第一级系数缓存中的数据,并判断所述第一级输入特征缓存和第一级系数缓存剩余的空间是否大于下一组数据的大小;以及响应于所述第一级输入特征缓存和第一级系数缓存剩余的空间大于下一组数据的大小,开启写缓存。输入特征缓存和系数缓存的剩余可用存储空间是由读写数据两个过程共同决定的,数据写入使剩余可用空间减少,数据读出使剩余可用空间增大。卷积时序控制器根据读写缓存的次数计算缓存的可用空间大小,当两个缓存中的数据足够启动卷积运算时(如系数数据满足复用数目的需求,输入特征数据满足多次计算的需求,且计算时间大于等于下一步计算所需的数据加载时间),启动卷积使能。卷积计算时,不断的读取输入特征缓存和系数缓存,使两个缓存的剩余空间逐渐增大,当剩余空间大于下一组数据的大小时,启动写缓存使能。因此,如果下一组数据的加载时间小于上一组的卷积计算时间,则卷积计算会不间断的运行。如果计算快,数据加载慢,则卷积计算过程则会有间断。
根据对应的特征数据和系数数据进行卷积运算,并对运算得到的结果进行激活、归一化和池化。卷积运算时,乘加计算完成后需要对数据进行激活(如Relu)、归一化和池化等操作。若使用AIPU外部的计算效率较慢的向量运算单元,则会出现大量的乘加运算中间结果堆积在向量运算之前,等待激活或池化,整个卷积运算效率就会被向量运算单元拉低。因此,将卷积需要的激活等向量运算专用化,放置在乘加矩阵单元之后。激活等专用向量计算单元可以与乘加单元和累加单元串联,也可以单独工作,中间结果缓存单元被这些专用向量计算单元共享。
本发明实施例的关键点:
(1)根据RISC-V指令集,设计了三条指令分支的处理器架构,分别为:通用指令分支,向量指令分支,AIPU分支;
(2)设计了AIPU架构,AIPU是以加速器的形式与RISC-V架构结合在一起,有专用的寄存器文件,通过RISC-V的load/store指令配置,用于加速卷积、矩阵运算;
(3)设计了AIPU乘加运算阵列的架构,是一种二维并行乘加运算单元。设有两个向量缓存buffer,配合前面的输入特征缓存buffer和系数缓存buffer,组成两级双buffer。前级双buffer(目的是使后续的单元有接连不断的数据)是输入特征缓存和系数缓存以及卷积控制单元共同组成的,利用剩余空间实时监测的方法,在数据不断的读出buffer的同时,把下一步所需的数据写入buffer。后级buffer是为了实现增大带宽、数据复用的功能。
(4)AIPU中各个缓存buffer的设计,合理的缓冲卷积运算各级功能模块之间的数据吞吐速率的不同;
(5)设计了灵活的地址发生器:地址发生器根据寄存器的配置,搭配后级的buffer,在读取数据的同时完成数据维度的变换;
(6)设计了乒乓操作寄存器,保证前后两种不同的卷积操作不间断的运行。
本发明实施例中的架构应用非常灵活,既有通用CPU的控制功能,又有AI所需的算力。可以应用于人工只能物联网的边缘端机器。也可以通过片上互联网络(NoC)实现更大的算力,以加速卡的形式安装在PC或服务器上,实现云端推理或训练。
需要特别指出的是,上述基于RISC-V指令集进行数据处理的方法的各个实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于基于RISC-V指令集进行数据处理的方法也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在实施例之上。
基于上述目的,本发明实施例的第二个方面,提出了一种基于RISC-V指令集进行数据处理的***,包括:获取模块,配置用于从RISC-V指令空间中获取指令缓存到缓存中,并判断所述指令的类型;跳转模块,配置用于响应于所述指令为分支跳转指令,重新生成指令地址,并根据所述指令地址跳转到对应的分支;AIPU模块,配置用于响应于跳转到AIPU分支,通过第一级输入特征缓存和第一级系数缓存存储用于当前卷积运算的特征数据和系数数据,并通过第二级输入特征缓存和第二级系数缓存存储下一步卷积运算的特征数据和系数数据;以及执行模块,配置用于根据对应的特征数据和系数数据进行卷积运算,并对运算得到的结果进行激活、归一化和池化。
在一些实施方式中,***还包括向量模块,配置用于:响应于跳转到向量架构分支,根据所述指令进行向量操作。
在一些实施方式中,***还包括第一判断模块,配置用于:响应于所述指令为加载或存储指令,根据源操作数中的地址,读取存储空间的地址到目的操作数中。
在一些实施方式中,***还包括第二判断模块,配置用于:判断向量源操作数对应的向量寄存器是否在同一个组内;以及响应于所述向量源操作数对应的向量寄存器不在同一个组内,使两个与所述向量寄存器位宽相同的端口同时进行读写。
在一些实施方式中,***还包括配置模块,配置用于:将所述AIPU分支中的寄存器文件配置成两部分,第一部分运行当前AIPU运算,第二部分获取AIPU下一步运算所需要的参数。
在一些实施方式中,***还包括转换模块,配置用于:根据运算的需求,读取对应的数据并对所述数据进行维度转换,并将转换后的数据写入对应的系数缓存或输入特征缓存。
在一些实施方式中,***还包括计算模块,配置用于:响应于进行卷积计算,读取所述第一级输入特征缓存和第一级系数缓存中的数据,并判断所述第一级输入特征缓存和第一级系数缓存剩余的空间是否大于下一组数据的大小;以及响应于所述第一级输入特征缓存和第一级系数缓存剩余的空间大于下一组数据的大小,开启写缓存。
基于上述目的,本发明实施例的第三个方面,提出了一种计算机设备,包括:至少一个处理器;以及存储器,存储器存储有可在处理器上运行的计算机指令,指令由处理器执行以实现如下步骤:S1、从RISC-V指令空间中获取指令缓存到缓存中,并判断指令的类型;S2、响应于指令为分支跳转指令,重新生成指令地址,并根据指令地址跳转到对应的分支;S3、响应于跳转到AIPU分支,通过第一级输入特征缓存和第一级系数缓存存储用于当前卷积运算的特征数据和系数数据,并通过第二级输入特征缓存和第二级系数缓存存储下一步卷积运算的特征数据和系数数据;以及S4、根据对应的特征数据和系数数据进行卷积运算,并对运算得到的结果进行激活、归一化和池化。
在一些实施方式中,步骤还包括:响应于跳转到向量架构分支,根据所述指令进行向量操作。
在一些实施方式中,步骤还包括:响应于所述指令为加载或存储指令,根据源操作数中的地址,读取存储空间的地址到目的操作数中。
在一些实施方式中,步骤还包括:判断向量源操作数对应的向量寄存器是否在同一个组内;以及响应于所述向量源操作数对应的向量寄存器不在同一个组内,使两个与所述向量寄存器位宽相同的端口同时进行读写。
在一些实施方式中,步骤还包括:将所述AIPU分支中的寄存器文件配置成两部分,第一部分运行当前AIPU运算,第二部分获取AIPU下一步运算所需要的参数。
在一些实施方式中,步骤还包括:根据运算的需求,读取对应的数据并对所述数据进行维度转换,并将转换后的数据写入对应的系数缓存或输入特征缓存。
在一些实施方式中,步骤还包括:响应于进行卷积计算,读取所述第一级输入特征缓存和第一级系数缓存中的数据,并判断所述第一级输入特征缓存和第一级系数缓存剩余的空间是否大于下一组数据的大小;以及响应于所述第一级输入特征缓存和第一级系数缓存剩余的空间大于下一组数据的大小,开启写缓存。
如图5所示,为本发明提供的上述基于RISC-V指令集进行数据处理的计算机设备的一个实施例的硬件结构示意图。
以如图5所示的装置为例,在该装置中包括一个处理器201以及一个存储器202,并还可以包括:输入装置203和输出装置204。
处理器201、存储器202、输入装置203和输出装置204可以通过总线或者其他方式连接,图5中以通过总线连接为例。
存储器202作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的基于RISC-V指令集进行数据处理的方法对应的程序指令/模块。处理器201通过运行存储在存储器202中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的基于RISC-V指令集进行数据处理的方法。
存储器202可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储根据基于RISC-V指令集进行数据处理的方法的使用所创建的数据等。此外,存储器202可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器202可选包括相对于处理器201远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置203可接收输入的用户名和密码等信息。输出装置204可包括显示屏等显示设备。
一个或者多个基于RISC-V指令集进行数据处理的方法对应的程序指令/模块存储在存储器202中,当被处理器201执行时,执行上述任意方法实施例中的基于RISC-V指令集进行数据处理的方法。
执行上述基于RISC-V指令集进行数据处理的方法的计算机设备的任何一个实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
本发明还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时执行如上方法的计算机程序。
如图6所示,为本发明提供的上述基于RISC-V指令集进行数据处理的计算机存储介质的一个实施例的示意图。以如图6所示的计算机存储介质为例,计算机可读存储介质3存储有被处理器执行时执行如上方法的计算机程序31。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,基于RISC-V指令集进行数据处理的方法的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (10)
1.一种基于RISC-V指令集进行数据处理的方法,其特征在于,包括以下步骤:
从RISC-V指令空间中获取指令缓存到缓存中,并判断所述指令的类型;
响应于所述指令为分支跳转指令,重新生成指令地址,并根据所述指令地址跳转到对应的分支;
响应于跳转到AIPU分支,通过第一级输入特征缓存和第一级系数缓存存储用于当前卷积运算的特征数据和系数数据,并通过第二级输入特征缓存和第二级系数缓存存储下一步卷积运算的特征数据和系数数据;以及
根据对应的特征数据和系数数据进行卷积运算,并对运算得到的结果进行激活、归一化和池化。
2.根据权利要求1所述的方法,其特征在于,还包括:
响应于跳转到向量架构分支,根据所述指令进行向量操作。
3.根据权利要求1所述的方法,其特征在于,还包括:
响应于所述指令为加载或存储指令,根据源操作数中的地址,读取存储空间的地址到目的操作数中。
4.根据权利要求1所述的方法,其特征在于,还包括:
判断向量源操作数对应的向量寄存器是否在同一个组内;以及
响应于所述向量源操作数对应的向量寄存器不在同一个组内,使两个与所述向量寄存器位宽相同的端口同时进行读写。
5.根据权利要求1所述的方法,其特征在于,还包括:
将所述AIPU分支中的寄存器文件配置成两部分,第一部分运行当前AIPU运算,第二部分获取AIPU下一步运算所需要的参数。
6.根据权利要求5所述的方法,其特征在于,还包括:
根据运算的需求,读取对应的数据并对所述数据进行维度转换,并将转换后的数据写入对应的系数缓存或输入特征缓存。
7.根据权利要求1所述的方法,其特征在于,还包括:
响应于进行卷积计算,读取所述第一级输入特征缓存和第一级系数缓存中的数据,并判断所述第一级输入特征缓存和第一级系数缓存剩余的空间是否大于下一组数据的大小;
响应于所述第一级输入特征缓存和第一级系数缓存剩余的空间大于下一组数据的大小,开启写缓存。
8.一种基于RISC-V指令集进行数据处理的***,其特征在于,包括:
获取模块,配置用于从RISC-V指令空间中获取指令缓存到缓存中,并判断所述指令的类型;
跳转模块,配置用于响应于所述指令为分支跳转指令,重新生成指令地址,并根据所述指令地址跳转到对应的分支;
AIPU模块,配置用于响应于跳转到AIPU分支,通过第一级输入特征缓存和第一级系数缓存存储用于当前卷积运算的特征数据和系数数据,并通过第二级输入特征缓存和第二级系数缓存存储下一步卷积运算的特征数据和系数数据;以及
执行模块,配置用于根据对应的特征数据和系数数据进行卷积运算,并对运算得到的结果进行激活、归一化和池化。
9.一种计算机设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现权利要求1-7任意一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7任意一项所述方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110175746.6A CN112860320A (zh) | 2021-02-09 | 2021-02-09 | 基于risc-v指令集进行数据处理的方法、***、设备及介质 |
PCT/CN2022/074414 WO2022170997A1 (zh) | 2021-02-09 | 2022-01-27 | 基于risc-v指令集进行数据处理的方法、***、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110175746.6A CN112860320A (zh) | 2021-02-09 | 2021-02-09 | 基于risc-v指令集进行数据处理的方法、***、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112860320A true CN112860320A (zh) | 2021-05-28 |
Family
ID=75989351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110175746.6A Pending CN112860320A (zh) | 2021-02-09 | 2021-02-09 | 基于risc-v指令集进行数据处理的方法、***、设备及介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112860320A (zh) |
WO (1) | WO2022170997A1 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254391A (zh) * | 2021-06-25 | 2021-08-13 | 之江实验室 | 一种神经网络加速器卷积计算和数据载入并行方法及装置 |
CN114399034A (zh) * | 2021-12-30 | 2022-04-26 | 北京奕斯伟计算技术有限公司 | 用于直接存储器访问装置的数据搬运方法 |
WO2022170997A1 (zh) * | 2021-02-09 | 2022-08-18 | 山东英信计算机技术有限公司 | 基于risc-v指令集进行数据处理的方法、***、设备及介质 |
CN115113933A (zh) * | 2022-08-25 | 2022-09-27 | 旋智电子科技(上海)有限公司 | 用于加速数据运算的装置 |
CN115248701A (zh) * | 2022-09-21 | 2022-10-28 | 进迭时空(杭州)科技有限公司 | 一种处理器寄存器堆之间的零拷贝数据传输装置及方法 |
CN115576606A (zh) * | 2022-11-16 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 实现矩阵转置乘的方法、协处理器、服务器及存储介质 |
WO2023284130A1 (zh) * | 2021-07-15 | 2023-01-19 | 深圳供电局有限公司 | 用于卷积计算的芯片及其控制方法、电子装置 |
CN116149554A (zh) * | 2023-02-08 | 2023-05-23 | 珠海妙存科技有限公司 | 一种基于risc-v及其扩展指令的数据存储处理***及其方法 |
CN116804915A (zh) * | 2023-08-28 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 基于存储器的数据交互方法、处理器、设备以及介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115801147B (zh) * | 2022-11-30 | 2023-09-22 | 珠海笛思科技有限公司 | 数据通信处理方法及*** |
CN118276951A (zh) * | 2024-06-04 | 2024-07-02 | 山东浪潮科学研究院有限公司 | 基于risc-v的指令扩展方法及高位宽simd指令 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1516001A (zh) * | 2003-01-08 | 2004-07-28 | 上海海尔集成电路有限公司 | 一种新型risc流水线微控制器构架及其操作方法 |
US20110035745A1 (en) * | 2008-03-17 | 2011-02-10 | Institute Of Computing Technology Of The Chinese Academy Of Sciences | Risc processor apparatus and method for supporting x86 virtual machine |
CN106940815A (zh) * | 2017-02-13 | 2017-07-11 | 西安交通大学 | 一种可编程卷积神经网络协处理器ip核 |
CN108647773A (zh) * | 2018-04-20 | 2018-10-12 | 复旦大学 | 一种可重构卷积神经网络的硬件互连架构 |
CN110659069A (zh) * | 2018-06-28 | 2020-01-07 | 赛灵思公司 | 用于执行神经网络计算的指令调度方法及相应计算*** |
CN111078287A (zh) * | 2019-11-08 | 2020-04-28 | 苏州浪潮智能科技有限公司 | 一种向量运算协处理方法与装置 |
CN111160545A (zh) * | 2019-12-31 | 2020-05-15 | 北京三快在线科技有限公司 | 人工神经网络处理***及其数据处理方法 |
CN111191774A (zh) * | 2018-11-14 | 2020-05-22 | 上海富瀚微电子股份有限公司 | 面向精简卷积神经网络的低代价加速器架构及其处理方法 |
CN111582465A (zh) * | 2020-05-08 | 2020-08-25 | 中国科学院上海高等研究院 | 基于fpga的卷积神经网络加速处理***、方法以及终端 |
CN112130901A (zh) * | 2020-09-11 | 2020-12-25 | 山东云海国创云计算装备产业创新中心有限公司 | 基于risc-v的协处理器、数据处理方法及存储介质 |
CN112232517A (zh) * | 2020-09-24 | 2021-01-15 | 苏州浪潮智能科技有限公司 | 一种人工智能加速引擎和人工智能处理器 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109740749A (zh) * | 2017-10-30 | 2019-05-10 | 北京深鉴智能科技有限公司 | 高速全连接计算的硬件实现装置与方法 |
KR20200100672A (ko) * | 2017-12-04 | 2020-08-26 | 옵티멈 세미컨덕터 테크놀로지스 인코포레이티드 | 신경망 가속기의 시스템 및 아키텍쳐 |
CN110007961B (zh) * | 2019-02-01 | 2023-07-18 | 中山大学 | 一种基于risc-v的边缘计算硬件架构 |
JP7308674B2 (ja) * | 2019-07-08 | 2023-07-14 | キヤノン株式会社 | 演算処理装置及び演算処理方法 |
CN112860320A (zh) * | 2021-02-09 | 2021-05-28 | 山东英信计算机技术有限公司 | 基于risc-v指令集进行数据处理的方法、***、设备及介质 |
-
2021
- 2021-02-09 CN CN202110175746.6A patent/CN112860320A/zh active Pending
-
2022
- 2022-01-27 WO PCT/CN2022/074414 patent/WO2022170997A1/zh active Application Filing
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1516001A (zh) * | 2003-01-08 | 2004-07-28 | 上海海尔集成电路有限公司 | 一种新型risc流水线微控制器构架及其操作方法 |
US20110035745A1 (en) * | 2008-03-17 | 2011-02-10 | Institute Of Computing Technology Of The Chinese Academy Of Sciences | Risc processor apparatus and method for supporting x86 virtual machine |
CN106940815A (zh) * | 2017-02-13 | 2017-07-11 | 西安交通大学 | 一种可编程卷积神经网络协处理器ip核 |
CN108647773A (zh) * | 2018-04-20 | 2018-10-12 | 复旦大学 | 一种可重构卷积神经网络的硬件互连架构 |
CN110659069A (zh) * | 2018-06-28 | 2020-01-07 | 赛灵思公司 | 用于执行神经网络计算的指令调度方法及相应计算*** |
CN111191774A (zh) * | 2018-11-14 | 2020-05-22 | 上海富瀚微电子股份有限公司 | 面向精简卷积神经网络的低代价加速器架构及其处理方法 |
CN111078287A (zh) * | 2019-11-08 | 2020-04-28 | 苏州浪潮智能科技有限公司 | 一种向量运算协处理方法与装置 |
CN111160545A (zh) * | 2019-12-31 | 2020-05-15 | 北京三快在线科技有限公司 | 人工神经网络处理***及其数据处理方法 |
CN111582465A (zh) * | 2020-05-08 | 2020-08-25 | 中国科学院上海高等研究院 | 基于fpga的卷积神经网络加速处理***、方法以及终端 |
CN112130901A (zh) * | 2020-09-11 | 2020-12-25 | 山东云海国创云计算装备产业创新中心有限公司 | 基于risc-v的协处理器、数据处理方法及存储介质 |
CN112232517A (zh) * | 2020-09-24 | 2021-01-15 | 苏州浪潮智能科技有限公司 | 一种人工智能加速引擎和人工智能处理器 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022170997A1 (zh) * | 2021-02-09 | 2022-08-18 | 山东英信计算机技术有限公司 | 基于risc-v指令集进行数据处理的方法、***、设备及介质 |
CN113254391A (zh) * | 2021-06-25 | 2021-08-13 | 之江实验室 | 一种神经网络加速器卷积计算和数据载入并行方法及装置 |
WO2023284130A1 (zh) * | 2021-07-15 | 2023-01-19 | 深圳供电局有限公司 | 用于卷积计算的芯片及其控制方法、电子装置 |
CN114399034A (zh) * | 2021-12-30 | 2022-04-26 | 北京奕斯伟计算技术有限公司 | 用于直接存储器访问装置的数据搬运方法 |
CN115113933A (zh) * | 2022-08-25 | 2022-09-27 | 旋智电子科技(上海)有限公司 | 用于加速数据运算的装置 |
CN115113933B (zh) * | 2022-08-25 | 2022-11-15 | 旋智电子科技(上海)有限公司 | 用于加速数据运算的装置 |
CN115248701A (zh) * | 2022-09-21 | 2022-10-28 | 进迭时空(杭州)科技有限公司 | 一种处理器寄存器堆之间的零拷贝数据传输装置及方法 |
CN115576606A (zh) * | 2022-11-16 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 实现矩阵转置乘的方法、协处理器、服务器及存储介质 |
CN116149554A (zh) * | 2023-02-08 | 2023-05-23 | 珠海妙存科技有限公司 | 一种基于risc-v及其扩展指令的数据存储处理***及其方法 |
CN116149554B (zh) * | 2023-02-08 | 2023-11-24 | 珠海妙存科技有限公司 | 一种基于risc-v及其扩展指令的数据存储处理***及其方法 |
CN116804915A (zh) * | 2023-08-28 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 基于存储器的数据交互方法、处理器、设备以及介质 |
CN116804915B (zh) * | 2023-08-28 | 2023-12-15 | 腾讯科技(深圳)有限公司 | 基于存储器的数据交互方法、处理器、设备以及介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022170997A1 (zh) | 2022-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112860320A (zh) | 基于risc-v指令集进行数据处理的方法、***、设备及介质 | |
CN108268278B (zh) | 具有可配置空间加速器的处理器、方法和*** | |
US10564980B2 (en) | Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator | |
CN109213723B (zh) | 一种用于数据流图处理的处理器、方法、设备、及一种非暂时性机器可读介质 | |
US11307873B2 (en) | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging | |
US11086816B2 (en) | Processors, methods, and systems for debugging a configurable spatial accelerator | |
US10445451B2 (en) | Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features | |
US10515046B2 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
US10387319B2 (en) | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features | |
US10380063B2 (en) | Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator | |
US10445234B2 (en) | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features | |
US10496574B2 (en) | Processors, methods, and systems for a memory fence in a configurable spatial accelerator | |
US10915471B2 (en) | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator | |
US10416999B2 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
US20190303297A1 (en) | Apparatus, methods, and systems for remote memory access in a configurable spatial accelerator | |
US11029958B1 (en) | Apparatuses, methods, and systems for configurable operand size operations in an operation configurable spatial accelerator | |
US20190205284A1 (en) | Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator | |
US20190007332A1 (en) | Processors and methods with configurable network-based dataflow operator circuits | |
CN111566623A (zh) | 用于可配置空间加速器中的集成性能监视的装置、方法和*** | |
US10678724B1 (en) | Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator | |
WO2021034587A1 (en) | Multiple output fusion for operations performed in a multi-dimensional array of processing units | |
GB2464178A (en) | SIMD processor with iterative multiply/accumulate instruction for finite impulse response filters | |
US20210200540A1 (en) | Apparatuses, methods, and systems for fused operations in a configurable spatial accelerator | |
Kang et al. | Datapath Extension of NPUs to Support Nonconvolutional Layers Efficiently | |
GS et al. | ReuseSense: With Great Reuse Comes Greater Efficiency; Effectively Employing Computation Reuse on General-Purpose CPUs |
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 |