CN114565075A - 支援多种访问模式的设备、方法及可读存储介质 - Google Patents
支援多种访问模式的设备、方法及可读存储介质 Download PDFInfo
- Publication number
- CN114565075A CN114565075A CN202011360044.7A CN202011360044A CN114565075A CN 114565075 A CN114565075 A CN 114565075A CN 202011360044 A CN202011360044 A CN 202011360044A CN 114565075 A CN114565075 A CN 114565075A
- Authority
- CN
- China
- Prior art keywords
- data
- register
- write
- registers
- modes
- 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
Images
Classifications
-
- 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/045—Combinations of networks
-
- 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
-
- 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/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及支援多种访问模式的设备、方法及可读存储介质,其中本发明的计算装置包括在集成电路装置中,该集成电路装置包括通用互联接口和其他处理装置。计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。集成电路装置还可以包括存储装置,存储装置分别与计算装置和其他处理装置连接,用于计算装置和其他处理装置的数据存储。
Description
技术领域
本发明一般地涉及计算机领域。更具体地,本发明涉及一种支援多种访问模式的设备、方法及可读存储介质。
背景技术
神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成,每个节点代表一种特定的输出函数,称为激励函数,每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。
卷积神经网络中最核心的操作便是卷积运算。卷积核在图像矩阵上滑动位移,以获得各种特征值,这需要大量的硬件资源来支撑。由于人工智能处理芯片中的乘法器和加法器是有限,因此实务上会将卷积运算切割成多个小区域进行累加,每次的累加结果都需要暂存在寄存器堆中,每块区域计算完毕后再整合这些累加结果,如此的操作便需要大量的寄存器访问。
不仅如此,在执行部分卷积运算(例如深度分离卷积)时,其写入是以深度方向的维度顺序进行,但读取时却可能是基于另一个维度的顺序进行,经过大量的访问后,将导致寄存器堆闲置可使用的空间没有规律的散落在堆内各处,寄存器堆的访问将变得非常复杂且低效。
再者,目前的卷积运算需要多种访问模式来支撑,这些访问模式包括顺序访问及跳跃访问等,顺序访问为一次依序读取或写入数个结果,跳跃访问为间隔数个寄存器读取或写入数个数据。这种访问模式会在神经网络推理时交替运用,当运算持续一段时间后同样会造成寄存器堆的访问将变得非常复杂且低效。
因此,一种支援多种访问模式的技术分案是迫切需要的。
发明内容
为了至少部分地解决背景技术中提到的技术问题,本发明的方案提供了一种支援多种访问模式的设备、方法及可读存储介质。
在一个方面中,本发明揭露一种支援多种访问模式的寄存器堆,包括寄存器阵列,所述寄存器阵列具有P群与Q库,所述多种访问模式包括跳跃写模式,所述跳跃写模式为每次写入N个数据至所述寄存器阵列,每个数据间隔M个寄存器存储,所述多种访问模式利用所述寄存器阵列的(M+1)×N群与R库存储,其中(M+1)×N不大于P,R不大于Q。
在另一个方面,本发明揭露一种支援多种访问模式的计算装置,所述多种访问模式包括多个跳跃写模式,第i个跳跃写模式为每次写入Ni个数据,每个数据间隔Mi个寄存器存储。所述计算装置包括寄存器阵列,具有P群与Q库,所述多种访问模式利用(Mq+1)×Nq群与R库存储,其中(Mq+1)×Nq不大于P,R不大于Q。其中,(Mq+1)×Nq为所述多个跳跃写模式中的(Mi+1)×Ni的最大值。
在另一个方面,本发明揭露一种集成电路装置,包括前述的计算装置,亦揭露一种板卡,包括根据前述的集成电路装置。
在另一个方面,本发明一种利用寄存器阵列以支援跳跃写模式的方法,所述寄存器阵列具有P群与Q库,所述跳跃写模式为每次写入N个数据至所述寄存器阵列,每个数据间隔M个寄存器存储,所述方法包括:设定所述寄存器阵列的(M+1)×N群与R库为子阵列,其中(M+1)×N不大于P,R不大于Q;同步使能所述子阵列其中一库的寄存器;以及选择将所述N个数据分别输入至所述群中的N个寄存器。
在另一个方面,本发明一种利用寄存器阵列以支援多种访问模式的方法,所述寄存器阵列具有P群与Q库,所述多种访问模式包括多个跳跃写模式,第i个跳跃写模式为每次写入Ni个数据,每个数据间隔Mi个寄存器存储。所述方法包括:设定所述寄存器阵列的(Mq+1)×Nq群与R库为子阵列,其中(Mq+1)×Nq不大于P,R不大于Q;同步使能所述子阵列其中一库的寄存器;以及选择将所述Ni个数据分别输入至所述群中的Ni个寄存器。其中,(Mq+1)×Nq为所述多个跳跃写模式中的(Mi+1)×Ni的最大值。
在另一个方面,本发明一种计算机可读存储介质,其上存储有利用寄存器阵列以支援访问模式的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行前述的方法。
本发明通过适当的规划寄存器阵列的群与库,减少了寄存器的读写端口,即减少了读写端口的数据,再加上访问模式的选择逻辑,有效降低了寄存器阵列的功耗开销。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1是示出本发明实施例的板卡的结构图;
图2是示出本发明实施例的集成电路装置的结构图;
图3是示出本发明实施例的计算装置的内部结构示意图;
图4是示出本发明实施例的处理器核的内部结构示意图;
图5是示出当一个处理器核欲将数据写入至另一个集群的处理器核时的示意图;
图6是示出本发明实施例的NRAM中的寄存器堆的示意图;
图7是示出本发明实施例的16×4的子阵列的示意图;
图8是示出本发明实施例在ORDER1模式下访问子阵列的示意图;
图9是示出本发明实施例在ORDER2模式下访问子阵列的示意图;
图10是示出本发明实施例在ORDER4模式下访问子阵列的示意图;
图11是示出本发明实施例在STRIDE 3_2模式下访问子阵列的示意图;
图12是示出本发明实施例在STRIDE 3_4模式下访问子阵列的示意图;
图13是示出本发明实施例在STRIDE 1_2模式下访问子阵列的示意图;
图14是示出本发明实施例在STRIDE 1_4模式下访问子阵列的示意图;以及
图15是示出本发明实施例利用前述寄存器阵列以支援多种访问模式的方法的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,本发明的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本发明的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本发明。如在本发明说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本发明说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本发明的具体实施方式。
图1示出本发明实施例的一种板卡10的结构示意图。如图1所示,板卡10包括芯片101,其是一种系统级芯片(System on Chip,SoC),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和强大的计算能力。
芯片101通过对外接口装置102与外部设备103相连接。外部设备103例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如PCIe接口等。
板卡10还包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(Micro Controller Unit,MCU)。
图2是示出此实施例的芯片101中的组合处理装置的结构图。如图2中所示,组合处理装置20包括计算装置201、接口装置202、处理装置203和DRAM 204。
计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本发明的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
DRAM 204用以存储待处理的数据,为DDR内存,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
图3示出了计算装置201的内部结构示意图。计算装置201用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,图中的计算装置201采用多核分层结构设计,计算装置201作为一个片上系统,其包括多个集群(cluster),每个集群又包括多个处理器核,换言之,计算装置201是以片上系统-集群-处理器核的层次所构成的。
以片上系统的层级来看,如图3所示,计算装置201包括外部存储控制器301、外设通信模块302、片上互联模块303、同步模块304以及多个集群305。
外部存储控制器301可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图2中的DRAM204,从而自片外读取数据或是将数据写入。外设通信模块302用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块303将外部存储控制器301、外设通信模块302及多个集群305连接起来,用以在各个模块间传输数据和控制信号。同步模块304是一种全局同步屏障控制器(global barrier controller,GBC),用以协调各集群的工作进度,确保信息的同步。多个集群305是计算装置201的计算核心,在图中示例性地展示4个,随着硬件的发展,本发明的计算装置201还可以包括8个、16个、64个、甚至更多的集群305。集群305用以高效地执行深度学习算法。
以集群的层级来看,如图3所示,每个集群305包括多个处理器核(IPU core)306及一个存储核(MEM core)307。
处理器核306在图中示例性地展示4个,本发明不限制处理器核306的数量。其内部架构如图4所示。每个处理器核306包括三大模块:控制模块41、运算模块42及存储模块43。
控制模块41用以协调并控制运算模块42和存储模块43的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)411及指令译码单元(instructiondecode unit,IDU)412。取指单元411用以获取来自处理装置203的指令,指令译码单元412则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块42和存储模块43。
运算模块42包括向量运算单元421及矩阵运算单元422。向量运算单元421用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元422负责深度学习算法的核心计算,即矩阵乘及卷积。
存储模块43用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)431、权值存储单元(weight RAM,WRAM)432、输入/输出直接内存访问模块(input/outputdirect memory access,IODMA)433、搬运直接内存访问模块(move direct memoryaccess,MVDMA)434。NRAM431用以存储供处理器核306计算的特征图及计算后的中间结果;WRAM432则用以存储深度学习网络的权值;IODMA 433通过广播总线309控制NRAM 431/WRAM432与DRAM 204的访存;MVDMA 434则用以控制NRAM 431/WRAM 432与SRAM 308的访存。
回到图3,存储核307主要用以存储和通信,即存储处理器核306间的共享数据或中间结果、以及执行集群305与DRAM 204之间的通信、集群305间彼此的通信、处理器核306间彼此的通信等。在其他实施例中,存储核307具有标量运算的能力,用以执行标量运算。
存储核307包括共享存储单元(SRAM)308、广播总线309、集群直接内存访问模块(cluster direct memory access,CDMA)310及全局直接内存访问模块(global directmemory access,GDMA)311。SRAM 308承担高性能数据中转站的角色,在同一个集群305内不同处理器核306之间所复用的数据不需要通过处理器核306各自向DRAM 204获得,而是经SRAM 308在处理器核306间中转,存储核307只需要将复用的数据从SRAM 308迅速分发给多个处理器核306即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。
广播总线309、CDMA 310及GDMA 311则分别用来执行处理器核306间的通信、集群305间的通信和集群305与DRAM 204的数据传输。以下将分别说明。
广播总线309用以完成集群305内各处理器核306间的高速通信,此实施例的广播总线309支持核间通信方式包括单播、多播与广播。单播是指点对点(即单一处理器核至单一处理器核)的数据传输,多播是将一份数据从SRAM 308传输到特定几个处理器核306的通信方式,而广播则是将一份数据从SRAM 308传输到所有处理器核306的通信方式,属于多播的一种特例。
CDMA 310用以控制在同一个计算装置201内不同集群305间的SRAM 308的访存。图5示出当一个处理器核欲将数据写入至另一个集群的处理器核时的示意图,以说明CDMA310的工作原理。在此应用场景中,同一个计算装置包括多个集群,为方便说明,图中仅展示集群0与集群1,集群0与集群1分别包括多个处理器核,同样为了说明方便,图中的集群0仅展示处理器核0,集群1仅展示处理器核1。处理器核0欲将数据写入至处理器核1。
首先,处理器核0发送单播写请求将数据写入本地的SRAM 0中,CDMA 0作为主(master)端,CDMA 1作为从(slave)端,主端向从端推送写请求,即主端发送写地址AW和写数据W,将数据传送到集群1的SRAM 1中,接着从端发送写响应B作为回应,最后集群1的处理器核1发送单播读请求将数据从SRAM 1中读取出来。
回到图3,GDMA 311与外部存储控制器301协同,用以控制集群305的SRAM 308到DRAM 204的访存,或是将数据自DRAM 204读取至SRAM 308中。从前述可知,DRAM 204与NRAM431或WRAM 432间的通信可以经由2个渠道来实现。第一个渠道是通过IODAM 433直接联系DRAM 204与NRAM 431或WRAM 432;第二个渠道是先经由GDMA 311使得数据在DRAM 204与SRAM 308间传输,再经过MVDMA 434使得数据在SRAM 308与NRAM 431或WRAM 432间传输。虽然表面上看来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此DRAM 204与NRAM 431或WRAM 432间的通信通过第二个渠道可能更有效率。本发明的实施例可根据本身硬件条件选择数据传输渠道。
在其他实施例中,GDMA 311的功能和IODMA 433的功能可以整合在同一部件中。本发明为了方便描述,将GDMA 311和IODMA 433视为不同部件,对于本领域技术人员来说,只要其实现的功能以及达到的技术效果与本发明类似,即属于本发明的保护范围。进一步地,GDMA 311的功能、IODMA 433的功能、CDMA 310的功能、MVDMA 434的功能亦可以由同一部件来实现。
由于矩阵运算单元422中的乘法器和加法器数量是有限的,当矩阵运算单元422在执行卷积计算时,存储核307会将待计算的图像切割成多个小块,分配给各个处理器核306。矩阵运算单元422每次处理一个小块,因此会执行大量的乘加操作,再把这些乘加结果累加起来,直至累加完毕。为配合这种运算方式,此实施例的NRAM 431及WRAM 432的具体结构是一种寄存器堆,用来暂存累加结果。矩阵运算单元422会持续高频的访问NRAM 431及WRAM432以更新的累加结果,直至累加操作结束,将累加结果输出至SRAM 308。
图6示出NRAM 431中的寄存器堆的示意图,如图所示,寄存器堆600包括寄存器阵列601、使能逻辑组602、读写逻辑组603。寄存器阵列601包括多个寄存器604,逻辑上排列成P×Q阵列,即寄存器阵列601具有P群(group)与Q库(bank),图中的每一行代表一个群,每一列代表一个库。使能逻辑组602包括Q个使能逻辑门605,每个使能逻辑门605用以控制其中一个库中的所有寄存器604开启以读写该库的寄存器604。读写逻辑组603包括P个读写逻辑门606,每个读写逻辑门606用以写入数据至特定群或自特定群读取数据。寄存器阵列601基于时钟信号CLK来运作。
此实施例支持多种访问寄存器堆600的模式,这些访问模式大致上可以分为跳跃访问模式及顺序访问模块两种。
跳跃访问模式包括跳跃写模式和更新读模式,其中跳跃写模式STRIDE M_N指的是每次访问寄存器堆600时,间隔M个寄存器写入N个数据至寄存器阵列601,更新读模式指的是每次自寄存器阵列601中间隔M个寄存器读取N个数据。
以下示例性的说明跳跃写模式中的STRIDE 3_2、STRIDE 3_4、STRIDE 1_2、STRIDE1_4模式。
STRIDE 3_2为每次间隔3个寄存器跳跃写入2个数据。在第1个时钟周期中,根据指针为i,将第1个数据写入特定库的第i个寄存器,以及将第2个数据写入特定库的第i+4个寄存器,写入后指针递增1。在第2个时钟周期中,根据指针为i+1,将第1个数据写入特定库的第i+1个寄存器,以及将第2个数据写入特定库的第i+5个寄存器,写入后指针递增1。在第3个时钟周期中,根据指针为i+2,将第1个数据写入特定库的第i+2个寄存器,以及将第2个数据写入特定库的第i+6个寄存器,写入后指针递增1。在第4个时钟周期中,根据指针为i+3,将第1个数据写入特定库的第i+3个寄存器,以及将第2个数据写入特定库的第i+7个寄存器。这时,如果指针递增1会变为i+4,而第i+4个寄存器已在第1个时钟周期中被使用过了,再指向第i+4个寄存器便会将第1个时钟周期中写入的数据覆盖过去,因此在第4个时钟周期时,写入后指针递增5,成为i+8,使得下一个时钟周期的第1个数据写入特定库的第i+8个寄存器。
STRIDE 3_4为每次间隔3个寄存器跳跃写入或读取4个数据。在第1个时钟周期中,根据指针为i,将第1个数据写入特定库的第i个寄存器,将第2个数据写入特定库的第i+4个寄存器,将第3个数据写入特定库的第i+8个寄存器,将第4个数据写入特定库的第i+12个寄存器,写入后指针递增1。在第2个时钟周期中,根据指针为i+1,将第1个数据写入特定库的第i+1个寄存器,将第2个数据写入特定库的第i+5个寄存器,将第3个数据写入特定库的第i+9个寄存器,将第4个数据写入特定库的第i+13个寄存器,写入后指针递增1。在第3个时钟周期中,根据指针为i+2,将第1个数据写入特定库的第i+2个寄存器,将第2个数据写入特定库的第i+6个寄存器,将第3个数据写入特定库的第i+10个寄存器,将第4个数据写入特定库的第i+14个寄存器,写入后指针递增1。在第4个时钟周期中,根据指针为i+3,将第1个数据写入特定库的第i+3个寄存器,将第2个数据写入特定库的第i+7个寄存器,将第3个数据写入特定库的第i+11个寄存器,将第4个数据写入特定库的第i+15个寄存器,在第S×(M+1)个时钟周期时,写入后指针递增(S+1)×N×(M+1)。
这时,如果指针递增1会变为i+4,而第i+4个寄存器已在第1个时钟周期中被使用过了,再指向第i+4个寄存器便会将第1个时钟周期中写入的数据覆盖过去,因此在第4个时钟周期时,写入后指针递增13,成为i+16,使得下一个时钟周期的第1个数据写入特定库的第i+16个寄存器。
STRIDE 1_2为每次间隔1个寄存器跳跃写入2个数据。在第1个时钟周期中,根据指针为i,将第1个数据写入特定库的第i个寄存器,将第2个数据写入特定库的第i+2个寄存器,写入后指针递增1。在第2个时钟周期中,根据指针为i+1,将第1个数据写入特定库的第i+1个寄存器,将第2个数据写入特定库的第i+3个寄存器,这时,如果指针递增1会将第1个时钟周期中写入的数据覆盖过去,因此在第3个时钟周期时,写入后指针递增3,成为i+4,使得下一个时钟周期的第1个数据写入特定库的第i+4个寄存器。
STRIDE 1_4为每次间隔1个寄存器跳跃写入4个数据。在第1个时钟周期中,根据指针为i,将第1个数据写入特定库的第i个寄存器,将第2个数据写入特定库的第i+2个寄存器,将第3个数据写入特定库的第i+4个寄存器,将第4个数据写入特定库的第i+6个寄存器,写入后指针递增1。在第2个时钟周期中,根据指针为i+1,将第1个数据写入特定库的第i+1个寄存器,将第2个数据写入特定库的第i+3个寄存器,将第3个数据写入特定库的第i+5个寄存器,将第4个数据写入特定库的第i+7个寄存器,这时,如果指针递增1会将第1个时钟周期中写入的数据覆盖过去,因此在第3个时钟周期时,写入后指针递增7,成为i+8,使得下一个时钟周期的第1个数据写入特定库的第i+8个寄存器。
综上所述,当遇到整数个(M+1)个时钟周期时,指针不是递增1,而是必须递增整数个(M+1)×N-M。
当访问模式为STRIDE M_N时,寄存器阵列601只需要(M+1)×N群加上R库的子阵列607即可满足存储需求,由于寄存器阵列601为P×Q,因此(M+1)×N不能大于P,R为任意数量但不大于Q。换言之,P×Q的寄存器阵列601可以在逻辑上切割出((M+1)×N)×R的子阵列607供STRIDE M_N的访问模式存储。可以理解的是,当(M+1)×N=P且R=Q时,整个寄存器阵列601都会用于STRIDE M_N的存储。
更新读模式是在累加过程中,寄存器阵列601用来暂存部分和的中间结果,向量运算单元421或矩阵运算单元422读取中间结果并与一个数据进行加法后,再将更新的中间结果存回原寄存器中。累加的过程就是重复利用更新读模式来更新寄存器中的中间结果。以下将详述在定点数与浮点数在更新读模式下的运作方式。
如运算涉及定点数,此实施例的加法操作在1个时钟周期内即可完成,读取中间结果的寄存器与写入更新的中间结果的寄存器是同一个,因此更新读模式的运作方式与跳跃写模块类似,每次自寄存器阵列601中间隔M个寄存器读取N个数据,其指针的递增方式亦与跳跃写模块的指针的递增方式一致,故不赘述。
如运算涉及浮点数,以32位浮点数(float 32)为例,加法操作需要耗时2个时钟周期才能完成,即当下周期读取部分和的中间结果,要在第2个时钟周期才会写入更新的中间结果。因此,其运作方式与定点数大致相同,但涉及浮点数的更新读模式的指针需要比跳跃写模块的指针提前1个时钟周期设定。
顺序访问模式指的是每次访问寄存器堆600时,自寄存器阵列601沿着库方向的连续寄存器中读取或写入多个数据,顺序访问模式还可以再分为顺序写模式和顺序读模式。
在此实施例中,顺序写模式用以每次写入S个数据至寄存器阵列601的连续寄存器中,S不大于P。在一种应用场景中,当多种访问模式包括跳跃写和顺序写时,S不大于(M+1)×N。顺序写模式示例性地包括ORDER1、ORDER2、ORDER4模式,其中ORDER1为顺序写入1个数据,访问后指针递增1,ORDER2顺序写入2个数据,访问后指针递增2,ORDER4为顺序写入4个数据,访问后指针递增4。
顺序读模式用以每次自寄存器阵列601的连续寄存器中读取T个数据,T不大于P。在一种应用场景中,当多种访问模式包括更新读和顺序读时,T不大于(M+1)×N。顺序读模式常用在神经网络中的卷积计算,当卷积计算结束后,计算结果自NRAM 431读出并发送至SRAM 308,这时会采用顺序读模式。顺序读模式示例性的包括ROUT1、ROUT2、ROUT4,其中ROUT1为每次顺序读取1个寄存器的数据,且指针递增1,ROUT2为每次顺序读取2个寄存器的数据,且指针递增2,ROUT4为每次顺序读取4个寄存器的数据,且指针递增4。
随着神经网络模型越来越复杂,各种算子所需要的寄存器访问操作可能不一致,使得计算装置201在进行神经网络推理时会涉及到多种访问模式。在一种应用场景中,此实施例的计算装置201需要同时支援前述ORDER1、ORDER2、ORDER4、STRIDE 3_2、STRIDE 3_4、STRIDE 1_2、STRIDE 1_4等7种访问模式,在进行推理前,控制模块41先识别这些访问模式中每个库需要群数量的最小单位。
ORDER1为每次依序写入1个数据,ORDER2为每次依序写入2个数据,ORDER4为每次依序写入4个数据,以这3种模式来说,每个库的最小单位只需要4个寄存器,便可以供ORDER1写入4个轮回,ORDER2写入2个轮回,ORDER4写入1个轮回。
再考虑各种跳跃写模式,STRIDE 3_2为每次间隔3个寄存器写入2个数据,因此一个轮回(即指针递增不为1,而是5)的写入需要8个寄存器,STRIDE 3_4为每次间隔3个寄存器写入4个数据,因此一个轮回(即指针递增不为1,而是13)的写入需要16个寄存器,STRIDE1_2为每次间隔1个寄存器写入2个数据,因此一个轮回(即指针递增不为1,而是3)的写入需要4个寄存器,STRIDE 1_4为每次间隔1个寄存器写入4个数据,因此一个轮回(即指针递增不为1,而是7)的写入需要8个寄存器,以这4种模式来说,每个库的最小单位是16个寄存器,便可以供STRIDE 3_2写入2个轮回,STRIDE 3_4写入1个轮回,STRIDE 1_2写入4个轮回,STRIDE 1_4写入2个轮回。
在顺序写模式中,每个库的最小单位是4个寄存器,在跳跃写模式中,每个库的最小单位是16个寄存器。16个寄存器恰好是4个寄存器的整数倍,故16个寄存器可以同时让顺序写模式与跳跃写模式在每个库中均写入整数个轮回。
除了判断所有顺序写模式和跳跃写模式外,控制模块41也会将顺序读与更新读模式纳入评估,但顺序读与更新读模式每个轮回所占用的寄存器数量分别与顺序写模式和跳跃写模式无异。再者,一般情况下,顺序写模式下每个轮回占用的寄存器不多,通常是由跳跃写模式决定了每个库的寄存器最少个数,而每个跳跃写模式的每个轮回所占用的寄存器数量大多互为整数倍。综上所述,当控制模块41欲判断每个模式每个轮回需要的寄存器数量时,理论上取所有访问模式每个轮回所占用的寄存器数量的最小公约数作为每个库的寄存器个数(也就是群数),实际上仅需判断所有跳跃写模式STRIDE Mi_Ni中的(Mi+1)×Ni的最大值(Mq+1)×Nq,便可以确保每个模式在每个库中均访问整数个轮回。各模式在每个库中均访问整数个轮回可以避免当运算持续一段时间后,寄存器堆闲置可使用的空间没有规律的散落在堆内各处的问题。再者,由于子阵列607只需要(Mq+1)×Nq个读写逻辑门606,而不是全部P个读写逻辑门606都参与运算,因此NRAM 431需要控制的读写逻辑门606的数量减少了,方便控制。
为了同时支援前述7种访问模式,如图7所示,控制模块41将子阵列607在逻辑上设定为16×4,也就是具有16个群和4个库的阵列,对应有4个使能逻辑门701-704用以分别同步使能一库的寄存器,和16个读写逻辑门705-720用以每次选择最多4个数据输入至16个群中的某4个寄存器。为方便说明,Rx,y指的是第x群第y库的寄存器。
图8示出在ORDER1模式下访问子阵列的机制。假设库0全部的寄存器(R0,0至R15,0)和库1群0至群5(R0,1至R5,1)的寄存器已被占用,如图中标示网底的寄存器所示,这时指针指向R6,1。以控制模块41的队列中应执行ORDER1模式下8个数据的写入为例,使能逻辑门702使能库1所有的寄存器开启准备接收数据,而其余使能逻辑门禁用其余库中的所有寄存器。由于ORDER1为每次顺序写入1个数据,因此第1次写入第1个数据时,第1个数据传输至所有的读写逻辑门705-720,根据指针,只有读写逻辑门711让第1个数据通过写入至R6,1,指针加1,指向R7,1,第2次写入第2个数据时,第2个数据同样传输至所有的读写逻辑门705-720,根据指针,只有读写逻辑门712让第2个数据写入至R7,1,指针加1,指向R8,1。以此类推,8个数据分别写入R6,1至R13,1。图中的数字i表示第i次写入。
图9示出在ORDER2模式下访问子阵列的机制。假设没有任何寄存器已被占用,这时指针指向R0,0。以控制模块41的队列中应执行ORDER2模式下16个数据的写入为例,使能逻辑门701使能库0所有的寄存器开启准备接收数据,而其余使能逻辑门禁用其余库中的所有寄存器。由于ORDER2为每次顺序写入2个数据,因此第1次写入根据指针,读写逻辑门705让第1个数据写入R0,0,且读写逻辑门706让第2个数据写入R1,0,指针加2,指向R2,0,第2次写入根据指针,读写逻辑门707让第3个数据写入R2,0,且读写逻辑门708让第4个数据写入R3,0,指针加2,指向R4,0。以此类推,16个数据分别写入R0,0至R15,0,恰好写满库0,最后指针指向R0,1。
图10示出在ORDER4模式下访问子阵列的机制。假设库0、库1的全部寄存器和库2群0至群11(R0,2至R11,2)的寄存器已被占用,如图中标示网底的寄存器所示,这时指针指向R12,2。以控制模块41的队列中应执行ORDER4模式下8个数据的写入为例,使能逻辑门703使能库2所有的寄存器开启准备接收数据,而其余使能逻辑门禁用其余库中的所有寄存器。由于ORDER4为每次顺序写入4个数据,因此第1次写入根据指针读写逻辑门717让第1个数据写入R12,2,读写逻辑门718让第2个数据写入R13,2,读写逻辑门719让第3个数据写入R14,2,读写逻辑门720让第4个数据写入R15,2,指针加4,指向R0,3,这时使能逻辑门704使能库3所有的寄存器开启准备接收数据,而其余使能逻辑门禁用其余库中的所有寄存器,第2次写入根据指针读写逻辑门705让第5个数据写入R0,3,读写逻辑门706让第6个数据写入R1,3,读写逻辑门707让第7个数据写入R2,3,读写逻辑门708让第8个数据写入R3,3,指针加4,指向R4,3。
图11示出在STRIDE 3_2模式下访问子阵列的机制。假设R0,0至R7,0的寄存器已被占用,如图中标示网底的寄存器所示,这时指针指向R8,0。以控制模块41的队列中应执行STRIDE 3_2模式下16个数据的写入为例,使能逻辑门701使能库0所有的寄存器开启准备接收数据,而其余使能逻辑门禁用其余库中的所有寄存器。第1次写入根据指针读写逻辑门713让第1个数据写入R8,0,读写逻辑门717让第2个数据写入R12,0,指针加1,指向R9,0,第2次写入根据指针读写逻辑门714让第3个数据写入R9,0,读写逻辑门718让第4个数据写入R13,0,指针加1,指向R10,0。以此类推,如图示般完成16个数据的写入。
图12示出在STRIDE 3_4模式下访问子阵列的机制。假设没有任何寄存器已被占用,这时指针指向R0,0。以控制模块41的队列中应执行STRIDE 3_4模式下16个数据的写入为例,使能逻辑门701使能库0所有的寄存器开启准备接收数据,而其余使能逻辑门禁用其余库中的所有寄存器。第1次写入根据指针读写逻辑门705让第1个数据写入R0,0,读写逻辑门709让第2个数据写入R4,0,读写逻辑门713让第3个数据写入R8,0,读写逻辑门717让第4个数据写入R12,0,指针加1,指向R1,0,第2次写入时读写逻辑门706让第5个数据写入R1,0,读写逻辑门710让第6个数据写入R5,0,读写逻辑门714让第7个数据写入R9,0,读写逻辑门718让第8个数据写入R13,0,指针加1,指向R2,0。以此类推,如图示般完成16个数据的写入。
图13示出在STRIDE 1_2模式下访问子阵列的机制。假设库0、库1、库2全部及库3群0至群3(R0,3至R3,3)的寄存器已被占用,如图中标示网底的寄存器所示,这时指针指向R4,3。以控制模块41的队列中应执行STRIDE 1_2模式下8个数据的写入为例,使能逻辑门704使能库3所有的寄存器开启准备接收数据,而其余使能逻辑门禁用其余库中的所有寄存器。第1次写入根据指针读写逻辑门709让第1个数据写入R4,3,读写逻辑门711让第2个数据写入R6,3,指针加1,指向R5,3,第2次写入时读写逻辑门710让第3个数据写入R5,3,读写逻辑门712让第4个数据写入R7,3,这时指针加3,指向R8,3,读写逻辑门713让第5个数据写入R8,3,读写逻辑门715让第6个数据写入R10,3。以此类推,如图示般完成8个数据的写入。
图14示出在STRIDE 1_4模式下访问子阵列的机制。假设库0群0至群11(R0,0至R11,0)的寄存器已被占用,如图中标示网底的寄存器所示,这时指针指向R12,0。以控制模块41的队列中应执行STRIDE 1_4模式下8个数据的写入为例,首先使能逻辑门701使能库0所有的寄存器开启准备接收数据,而其余使能逻辑门禁用其余库中的所有寄存器。第1次写入根据指针读写逻辑门717让第1个数据写入R12,0,读写逻辑门719让第2个数据写入R14,0,接着使能逻辑门702使能库1所有的寄存器开启准备接收数据,而其余使能逻辑门禁用其余库中的所有寄存器,读写逻辑门705让第3个数据写入R0,1,读写逻辑门707让第4个数据写入R2,1,指针加1,指向R13,0。这时使能逻辑门701使能库0所有的寄存器重新开启准备接收数据,而其余使能逻辑门禁用其余库中的所有寄存器,第2次写入时读写逻辑门718让第5个数据写入R13,0,读写逻辑门720让第6个数据写入R15,0,接着使能逻辑门702重新使能库1所有的寄存器开启准备接收数据,而其余使能逻辑门禁用其余库中的所有寄存器,读写逻辑门706让第7个数据写入R1,1,读写逻辑门708让第8个数据写入R3,1。如图示般完成8个数据的写入。
顺序读模式和更新读模式的寄存器访问方式基本上与顺序写和跳跃写相同,差别在于读取寄存器中的数据而不是写入数据至寄存器,本领域技术人员可轻易根据前述各写入模式理解顺序读模式和更新读模式的寄存器访问方式,故不赘述。
使能逻辑组602与读写逻辑组603为逻辑门组合,以实现前述的控制方式。实现这类控制方式的逻辑门组合为本领域技术人员所熟知,故不赘述。
此实施例通过适当的规划寄存器阵列的群与库,减少了寄存器的读写端口,即减少了读写端口的数据,再加上访问模式的选择逻辑,有效降低了寄存器阵列的功耗开销。
本发明的另一个实施例为一种利用前述寄存器阵列以支援多种访问模式的方法,其方法由计算装置201所执行,如图15所示,包括以下步骤。
在步骤1501中,设定寄存器阵列的(M+1)×N群与R库为子阵列,其中(M+1)×N不大于P,R不大于Q。
此实施例的计算装置201同样需要支援前述ORDER1、ORDER2、ORDER4、STRIDE 3_2、STRIDE 3_4、STRIDE 1_2、STRIDE 1_4等7种访问模式,在进行推理前,控制模块41先识别这些访问模式中每个库需要群数量的最小单位。
ORDER1为每次依序写入1个数据,ORDER2为每次依序写入2个数据,ORDER4为每次依序写入4个数据,以这3种模式来说,每个库的最小单位只需要4个寄存器,便可以供ORDER1写入4个轮回,ORDER2写入2个轮回,ORDER4写入1个轮回。
再考虑各种跳跃写模式,当访问模式为STRIDE M_N时,寄存器阵列601只需要(M+1)×N群加上R库的子阵列607即可满足存储需求,由于寄存器阵列601为P×Q,因此(M+1)×N不能大于P,R为任意数量但不大于Q。换言之,P×Q的寄存器阵列601可以在逻辑上切割出((M+1)×N)×R的子阵列607供STRIDE M_N的访问模式存储。
STRIDE 3_2为每次间隔3个寄存器写入2个数据,因此一个轮回(即指针递增不为1,而是5)的写入需要8个寄存器,STRIDE 3_4为每次间隔3个寄存器写入4个数据,因此一个轮回(即指针递增不为1,而是13)的写入需要16个寄存器,STRIDE 1_2为每次间隔1个寄存器写入2个数据,因此一个轮回(即指针递增不为1,而是3)的写入需要4个寄存器,STRIDE1_4为每次间隔1个寄存器写入4个数据,因此一个轮回(即指针递增不为1,而是7)的写入需要8个寄存器,以这4种模式来说,每个库的最小单位是16个寄存器,便可以供STRIDE 3_2写入2个轮回,STRIDE 3_4写入1个轮回,STRIDE 1_2写入4个轮回,STRIDE 1_4写入2个轮回。
在顺序写模式中,每个库的最小单位是4个寄存器,在跳跃写模式中,每个库的最小单位是16个寄存器。16个寄存器恰好是4个寄存器的整数倍,故16个寄存器可以同时让顺序写模式与跳跃写模式在每个库中均写入整数个轮回。
除了判断所有顺序写模式和跳跃写模式外,控制模块41也会将顺序读与更新读模式纳入评估,但顺序读与更新读模式每个轮回所占用的寄存器数量分别与顺序写模式和跳跃写模式无异。再者,一般情况下,顺序写模式下每个轮回占用的寄存器不多,通常是由跳跃写模式决定了每个库的寄存器最少个数,而每个跳跃写模式的每个轮回所占用的寄存器数量大多互为整数倍。综上所述,当控制模块41欲判断每个模式每个轮回需要的寄存器数量时,理论上取所有访问模式每个轮回所占用的寄存器数量的最小公约数作为每个库的寄存器个数(也就是群数),实际上仅需判断所有跳跃写模式STRIDE Mi_Ni中的(Mi+1)×Ni的最大值(Mq+1)×Nq,便可以确保每个模式在每个库中均访问整数个轮回。各模式在每个库中均访问整数个轮回可以避免当运算持续一段时间后,寄存器堆闲置可使用的空间没有规律的散落在堆内各处的问题。再者,由于子阵列607只需要(Mq+1)×Nq个读写逻辑门606,而不是全部P个读写逻辑门606都参与运算,因此NRAM 431需要控制的读写逻辑门606的数量减少了,方便控制。
在步骤1502中,同步使能子阵列其中一库的寄存器。在步骤1503中,选择将N个数据分别输入至群中的N个寄存器。为了同时支援前述7种访问模式,控制模块41将子阵列607在逻辑上设定为16×4,也就是具有16个群和4个库的阵列,对应有4个使能逻辑门701-704用以分别同步使能一库的寄存器,和16个读写逻辑门705-720用以每次选择最多4个数据输入至16个群中的某4个寄存器。
本发明另一个实施例为一种计算机可读存储介质,其上存储有利用寄存器阵列以支援访问模式的计算机程序代码,当所述计算机程序代码由处理器运行时,执行如前所述各实施例的方法。在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本发明的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本发明实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本发明通过适当的规划寄存器阵列的群与库,减少了寄存器的读写端口,即减少了读写端口的数据,再加上访问模式的选择逻辑,有效降低了寄存器阵列的功耗开销。
根据不同的应用场景,本发明的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本发明的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本发明的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本发明方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本发明将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本发明的方案并不受所描述的动作的顺序限制。因此,依据本发明的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本发明所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本发明某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本发明对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本发明某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本发明的公开和教导,本领域技术人员可以理解本发明所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本发明中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本发明实施例所述方案的目的。另外,在一些场景中,本发明实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如中央处理器、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
依据以下条款可更好地理解前述内容:
条款A1、一种支援多种访问模式的寄存器堆,包括寄存器阵列,所述寄存器阵列具有P群与Q库,所述多种访问模式包括跳跃写模式,所述跳跃写模式为每次写入N个数据至所述寄存器阵列,每个数据间隔M个寄存器存储,所述多种访问模式利用所述寄存器阵列的(M+1)×N群与R库存储,其中(M+1)×N不大于P,R不大于Q。
条款A2、根据条款A1所述的寄存器堆,还包括R个使能逻辑门,每个使能逻辑门用以同步使能一库的寄存器。
条款A3、根据条款A1所述的寄存器堆,还包括(M+1)×N个写入逻辑门,用以选择将所述N个数据输入至(M+1)×N群中的N个寄存器。
条款A4、根据条款A1所述的寄存器堆,其中所述多种访问模式还包括顺序写模式,用以每次写入S个数据至所述寄存器阵列的连续寄存器中,其中S不大于P。
条款A5、根据条款A1所述的寄存器堆,其中所述多种访问模式还包括顺序读模式,用以每次自所述寄存器阵列的连续寄存器中读取T个数据,其中T不大于P。
条款A6、根据条款A1所述的寄存器堆,其中所述多种访问模式还包括更新读模式,用以每次自所述寄存器阵列中间隔M个寄存器读取N个数据。
条款A7、一种支援多种访问模式的计算装置,所述多种访问模式包括多个跳跃写模式,第i个跳跃写模式为每次写入Ni个数据,每个数据间隔Mi个寄存器存储,所述计算装置包括:寄存器阵列,具有P群与Q库,所述多种访问模式利用(Mq+1)×Nq群与R库存储,其中(Mq+1)×Nq不大于P,R不大于Q;其中,(Mq+1)×Nq为所述多个跳跃写模式中的(Mi+1)×Ni的最大值。
条款A8、根据条款A7所述的计算装置,还包括R个使能逻辑门,每个使能逻辑门用以同步使能一库的寄存器。
条款A9、根据条款A7所述的计算装置,还包括(Mq+1)×Nq个写入逻辑门,用以选择所述Ni个数据输入至(Mq+1)×Nq群中的Ni个寄存器。
条款A10、根据条款A7所述的计算装置,其中所述多种访问模式还包括多个顺序写模式,第i个顺序写模式用以每次写入Si个数据至所述寄存器阵列的连续寄存器中,其中Si不大于P。
条款A11、根据条款A7所述的计算装置,其中所述多种访问模式还包括多个顺序读模式,第i个顺序读模式用以每次自所述寄存器阵列的连续寄存器中读取Ti个数据,其中Ti不大于P。
条款A12、根据条款A7所述的计算装置,其中所述多种访问模式还包括多个更新读模式,第i个更新读模式用以每次自所述寄存器阵列中间隔Mi个寄存器读取Ni个数据。
条款A13、根据条款A7所述的计算装置,还包括控制模块,用以识别(Mq+1)×Nq。
条款A14、一种集成电路装置,包括根据条款A7至13任一项所述的计算装置。
条款A15、一种板卡,包括根据条款A14所述的集成电路装置。
条款A16、一种利用寄存器阵列以支援跳跃写模式的方法,所述寄存器阵列具有P群与Q库,所述跳跃写模式为每次写入N个数据至所述寄存器阵列,每个数据间隔M个寄存器存储,所述方法包括:设定所述寄存器阵列的(M+1)×N群与R库为子阵列,其中(M+1)×N不大于P,R不大于Q;同步使能所述子阵列其中一库的寄存器;以及选择将所述N个数据分别输入至所述群中的N个寄存器。
条款A17、一种利用寄存器阵列以支援多种访问模式的方法,所述寄存器阵列具有P群与Q库,所述多种访问模式包括多个跳跃写模式,第i个跳跃写模式为每次写入Ni个数据,每个数据间隔Mi个寄存器存储,所述方法包括:设定所述寄存器阵列的(Mq+1)×Nq群与R库为子阵列,其中(Mq+1)×Nq不大于P,R不大于Q;同步使能所述子阵列其中一库的寄存器;以及选择将所述Ni个数据分别输入至所述群中的Ni个寄存器;其中,(Mq+1)×Nq为所述多个跳跃写模式中的(Mi+1)×Ni的最大值。
条款A18、一种计算机可读存储介质,其上存储有利用寄存器阵列以支援访问模式的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行条款A16至17任一项所述的方法。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (18)
1.一种支援多种访问模式的寄存器堆,包括寄存器阵列,所述寄存器阵列具有P群与Q库,所述多种访问模式包括跳跃写模式,所述跳跃写模式为每次写入N个数据至所述寄存器阵列,每个数据间隔M个寄存器存储,所述多种访问模式利用所述寄存器阵列的(M+1)×N群与R库存储,其中(M+1)×N不大于P,R不大于Q。
2.根据权利要求1所述的寄存器堆,还包括R个使能逻辑门,每个使能逻辑门用以同步使能一库的寄存器。
3.根据权利要求1所述的寄存器堆,还包括(M+1)×N个写入逻辑门,用以选择将所述N个数据输入至(M+1)×N群中的N个寄存器。
4.根据权利要求1所述的寄存器堆,其中所述多种访问模式还包括顺序写模式,用以每次写入S个数据至所述寄存器阵列的连续寄存器中,其中S不大于P。
5.根据权利要求1所述的寄存器堆,其中所述多种访问模式还包括顺序读模式,用以每次自所述寄存器阵列的连续寄存器中读取T个数据,其中T不大于P。
6.根据权利要求1所述的寄存器堆,其中所述多种访问模式还包括更新读模式,用以每次自所述寄存器阵列中间隔M个寄存器读取N个数据。
7.一种支援多种访问模式的计算装置,所述多种访问模式包括多个跳跃写模式,第i个跳跃写模式为每次写入Ni个数据,每个数据间隔Mi个寄存器存储,所述计算装置包括:
寄存器阵列,具有P群与Q库,所述多种访问模式利用(Mq+1)×Nq群与R库存储,其中(Mq+1)×Nq不大于P,R不大于Q;
其中,(Mq+1)×Nq为所述多个跳跃写模式中的(Mi+1)×Ni的最大值。
8.根据权利要求7所述的计算装置,还包括R个使能逻辑门,每个使能逻辑门用以同步使能一库的寄存器。
9.根据权利要求7所述的计算装置,还包括(Mq+1)×Nq个写入逻辑门,用以选择所述Ni个数据输入至(Mq+1)×Nq群中的Ni个寄存器。
10.根据权利要求7所述的计算装置,其中所述多种访问模式还包括多个顺序写模式,第i个顺序写模式用以每次写入Si个数据至所述寄存器阵列的连续寄存器中,其中Si不大于P。
11.根据权利要求7所述的计算装置,其中所述多种访问模式还包括多个顺序读模式,第i个顺序读模式用以每次自所述寄存器阵列的连续寄存器中读取Ti个数据,其中Ti不大于P。
12.根据权利要求7所述的计算装置,其中所述多种访问模式还包括多个更新读模式,第i个更新读模式用以每次自所述寄存器阵列中间隔Mi个寄存器读取Ni个数据。
13.根据权利要求7所述的计算装置,还包括控制模块,用以识别(Mq+1)×Nq。
14.一种集成电路装置,包括根据权利要求7至13任一项所述的计算装置。
15.一种板卡,包括根据权利要求14所述的集成电路装置。
16.一种利用寄存器阵列以支援跳跃写模式的方法,所述寄存器阵列具有P群与Q库,所述跳跃写模式为每次写入N个数据至所述寄存器阵列,每个数据间隔M个寄存器存储,所述方法包括:
设定所述寄存器阵列的(M+1)×N群与R库为子阵列,其中(M+1)×N不大于P,R不大于Q;
同步使能所述子阵列其中一库的寄存器;以及
选择将所述N个数据分别输入至所述群中的N个寄存器。
17.一种利用寄存器阵列以支援多种访问模式的方法,所述寄存器阵列具有P群与Q库,所述多种访问模式包括多个跳跃写模式,第i个跳跃写模式为每次写入Ni个数据,每个数据间隔Mi个寄存器存储,所述方法包括:
设定所述寄存器阵列的(Mq+1)×Nq群与R库为子阵列,其中(Mq+1)×Nq不大于P,R不大于Q;
同步使能所述子阵列其中一库的寄存器;以及
选择将所述Ni个数据分别输入至所述群中的Ni个寄存器;
其中,(Mq+1)×Nq为所述多个跳跃写模式中的(Mi+1)×Ni的最大值。
18.一种计算机可读存储介质,其上存储有利用寄存器阵列以支援访问模式的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行权利要求16至17任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011360044.7A CN114565075A (zh) | 2020-11-27 | 2020-11-27 | 支援多种访问模式的设备、方法及可读存储介质 |
PCT/CN2021/119945 WO2022111013A1 (zh) | 2020-11-27 | 2021-09-23 | 支援多种访问模式的设备、方法及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011360044.7A CN114565075A (zh) | 2020-11-27 | 2020-11-27 | 支援多种访问模式的设备、方法及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114565075A true CN114565075A (zh) | 2022-05-31 |
Family
ID=81712217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011360044.7A Pending CN114565075A (zh) | 2020-11-27 | 2020-11-27 | 支援多种访问模式的设备、方法及可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114565075A (zh) |
WO (1) | WO2022111013A1 (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7386703B2 (en) * | 2003-11-18 | 2008-06-10 | International Business Machines Corporation | Two dimensional addressing of a matrix-vector register array |
CN101443731A (zh) * | 2006-05-26 | 2009-05-27 | Vns组合有限责任公司 | 计算机的循环寄存器阵列 |
CN101123113B (zh) * | 2007-09-20 | 2010-07-14 | 上海交通大学 | 同步动态随机访问存储器的访问方法及控制装置 |
US7929356B2 (en) * | 2008-09-05 | 2011-04-19 | Atmel Corporation | Method and system to access memory |
CN101620524B (zh) * | 2009-07-03 | 2011-08-10 | 中国人民解放军国防科学技术大学 | 支持矩阵整体读写操作的矩阵寄存器文件 |
CN102012803B (zh) * | 2010-11-25 | 2014-09-10 | 中国人民解放军国防科学技术大学 | 支持多宽度simd和多粒度simt的可配置矩阵寄存器单元 |
US11740903B2 (en) * | 2016-04-26 | 2023-08-29 | Onnivation, LLC | Computing machine using a matrix space and matrix pointer registers for matrix and array processing |
KR102453542B1 (ko) * | 2018-02-21 | 2022-10-12 | 삼성전자주식회사 | 스킵 연산 모드를 지원하는 메모리 장치 및 그 동작 방법 |
-
2020
- 2020-11-27 CN CN202011360044.7A patent/CN114565075A/zh active Pending
-
2021
- 2021-09-23 WO PCT/CN2021/119945 patent/WO2022111013A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022111013A1 (zh) | 2022-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109685201B (zh) | 运算方法、装置及相关产品 | |
CN112799726B (zh) | 数据处理装置、方法及相关产品 | |
CN112799599B (zh) | 一种数据存储方法、计算核、芯片和电子设备 | |
CN114580606A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN114035916A (zh) | 计算图的编译、调度方法及相关产品 | |
CN115437602A (zh) | 任意精度计算加速器、集成电路装置、板卡及方法 | |
CN113837922A (zh) | 计算装置、数据处理方法及相关产品 | |
CN113469336A (zh) | 优化神经网络模型的编译方法、执行方法及相关产品 | |
CN112801276B (zh) | 数据处理方法、处理器及电子设备 | |
CN114565075A (zh) | 支援多种访问模式的设备、方法及可读存储介质 | |
CN116185942A (zh) | 数据处理方法、装置、存储介质以及电子设备 | |
CN112948001A (zh) | 设定张量硬件配置的方法、可读存储介质及装置 | |
CN114580607A (zh) | 数据处理方法、装置和存储介质 | |
CN113792867B (zh) | 运算电路、芯片和板卡 | |
CN117667212A (zh) | 指令控制装置、方法、处理器、芯片和板卡 | |
CN114444677A (zh) | 进行稀疏化训练的装置、板卡、方法及可读存储介质 | |
CN115599738A (zh) | 一种对神经网络模型进行优化的方法及相关产品 | |
CN115878184A (zh) | 基于一个指令搬移多个数据的方法、存储介质及设备 | |
CN117742566A (zh) | 访存处理装置、处理器、芯片、板卡和指令执行方法 | |
CN117093263A (zh) | 处理器、芯片、板卡及方法 | |
CN114625370A (zh) | 在主机和设备之间进行数据布局的方法、设备和异构系统 | |
CN114282160A (zh) | 一种数据处理装置、集成电路芯片、设备及其实现的方法 | |
CN117667209A (zh) | 数据处理方法及相关产品 | |
CN114429194A (zh) | 处理神经网络计算的装置、板卡、方法及可读存储介质 | |
CN114282161A (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 |