CN117742566A - 访存处理装置、处理器、芯片、板卡和指令执行方法 - Google Patents
访存处理装置、处理器、芯片、板卡和指令执行方法 Download PDFInfo
- Publication number
- CN117742566A CN117742566A CN202211111741.8A CN202211111741A CN117742566A CN 117742566 A CN117742566 A CN 117742566A CN 202211111741 A CN202211111741 A CN 202211111741A CN 117742566 A CN117742566 A CN 117742566A
- Authority
- CN
- China
- Prior art keywords
- data
- size
- instruction
- minimum
- dimensional
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 115
- 238000012545 processing Methods 0.000 title claims abstract description 86
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000012546 transfer Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 238000013135 deep learning Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000004044 response Effects 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- PSYGHMBJXWRQFD-UHFFFAOYSA-N 2-(2-sulfanylacetyl)oxyethyl 2-sulfanylacetate Chemical compound SCC(=O)OCCOC(=O)CS PSYGHMBJXWRQFD-UHFFFAOYSA-N 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 210000004027 cell Anatomy 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000007418 data mining Methods 0.000 description 2
- 101150086656 dim1 gene Proteins 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 210000002364 input neuron Anatomy 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 210000004205 output neuron Anatomy 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本披露公开了一种访存处理装置、处理器、芯片、板卡、指令执行方法。该处理器可以作为计算装置包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案提供了访存处理装置,其可以提升访存效率,节约带宽。
Description
技术领域
本披露一般涉及处理器领域。更具体地,本披露涉及一种访存处理装置、处理器、芯片、板卡和指令执行方法。
背景技术
近年来,人工智能处理器在云、边、端、车领域获得了广泛的应用。人工智能处理器的处理数据通常为高维度张量数据,与标量处理器所处理的标量数据有着较大的差异。而且,在数据处理过程中会频繁涉及数据的搬运。因此,多维数据的搬运效率值得关注。
多维数据由于包含多个维度,因此其数据在存储器上的存储方式也存在多种情况。例如,多维数据的相邻维度的数据可能连续存放,也可能间隔存放,因此多维数据所占据的存储空间中可能存在空泡。进一步地,不同维度数据之间的间隔可能相同也可能不同,也即空泡的大小不等。另一方面,多维数据的搬运还可能涉及数据形状的变化,例如由二维形状变为三维形状,或者由第一种三维形状变成第二种三维形状,等等。当前的数据搬运方式不能适应这些变化的情况,从而导致数据搬运效率整体较低。
有鉴于此,亟需一种能够高效搬运三维数据的方式,其可以尽可能减少数据搬运次数和/或数据搬运量,提高搬运效率。
发明内容
为了至少解决如上所提到的一个或多个技术问题,本披露在多个方面中提出了访存处理方案。
在第一方面中,本披露提供一种访存处理装置,包括:访存指令译码单元,配置用于对多维数据的搬运指令进行译码以生成若干微指令,每个微指令对应一次数据搬运,并且所述微指令指示最小搬运数据单元和当次搬运的最小搬运数据单元的数量,所述最小搬运数据单元对应数据源端的最低维数据的大小;以及数据访存单元,配置用于根据所述微指令生成读请求以从所述数据源端取回数据,以及接收所取回的数据并根据所述微指令写入数据目的端。
在第二方面中,本披露提供一种处理器,包括前述第一方面的访存处理装置。在第三方面中,本披露提供一种芯片,包括前述第二方面的处理器。在第四方面中,本披露提供一种板卡,包括前述第三方面的芯片。
在第五方面中,本披露提供一种指令执行方法,包括:对多维数据的搬运指令进行译码以生成若干微指令,每个微指令对应一次数据搬运,并且所述微指令指示最小搬运数据单元和当次搬运的最小搬运数据单元的数量,所述最小搬运数据单元对应数据源端的最低维数据的大小;根据所述微指令生成读请求以从所述数据源端取回数据;以及接收所取回的数据并根据所述微指令写入数据目的端。
通过如上所提供的访存处理装置、处理器、芯片、板卡、指令执行方法,本披露实施例通过将搬运指令灵活拆分为若干微指令,可以适应不同的数据搬运情形。进一步地,在一些实施例中,针对小步长三维数据搬运指令进行优化,通过有条件合并最小粒度的数据来提升访存效率,节约带宽。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1示出本披露实施例的板卡的结构图;
图2示出本披露实施例的组合处理装置的结构图;
图3示出本披露实施例的单核计算装置的处理器核的内部结构示意图;
图4示出本披露实施例的多核计算装置的内部结构简化示意图;
图5示出多维数据在存储空间中的存储方式以及相关的参数;
图6示出可以实施本披露实施例的数据访存方案的示例性硬件架构;
图7a-图7p示出了离散读、连续写的各种示例;
图8示出了根据本披露一些实施例的指令执行方法的示意性流程图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中可能出现的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
下面结合附图来详细描述本披露的具体实施方式。
示例性硬件环境
图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和存储装置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整合共同考虑时,二者视为形成异构多核结构。
存储装置204用以存储待处理的数据,其可以是DRAM,为DDR内存,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
图3示出了图2中的计算装置201为单核装置时处理核的内部结构示意图。计算装置301用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,计算装置301包括三大模块:控制模块31(也称为控制器)、运算模块32(也称为运算器)及存储模块33(也称为存储器)。
控制模块31用以协调并控制运算模块32和存储模块33的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)311及指令译码单元(instructiondecode unit,IDU)312。取指单元311用以获取来自处理装置203的指令,指令译码单元312则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块32和存储模块33。
运算模块32包括向量运算单元321及矩阵运算单元322。向量运算单元321用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元322负责深度学习算法的核心计算,即矩阵乘及卷积。
存储模块33用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)331、权值存储单元(weight RAM,WRAM)332、直接内存访问模块(direct memory access,DMA)333。NRAM 331用以存储输入神经元、输出神经元和计算后的中间结果;WRAM 332则用以存储深度学习网络的卷积核,即权值;DMA 333通过总线34连接DRAM 204,负责计算装置301与DRAM 204间的数据搬运。应当注意,此处的NRAM和WRAM可以是同一存储器在逻辑存储空间上划分形成的两个存储区域,也可以是两个独立的存储器,此处不做具体限定。
图4示出了图2中的计算装置201为多核时的内部结构简化示意图。多核计算装置可以用层次化硬件模型来进行抽象。如图所示,多核计算装置400作为一个片上系统,其包括至少一个计算簇(cluster),每个计算簇又包括多个处理器核,换言之,多核计算装置400是以片上系统-计算簇-处理器核的层次所构成的。
以片上系统的层级来看,如图所示,多核计算装置400包括外部存储控制器41、外设通信模块42、片上互联模块43、全局同步模块44以及多个计算簇45。
外部存储控制器41可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备(例如图2中的DRAM 204),从而自片外读取数据或是将数据写入。外设通信模块42用以通过接口装置(图2的202)接收来自处理装置(图2的203)的控制信号,启动计算装置(图2的201)执行任务。片上互联模块43将外部存储控制器41、外设通信模块42及多个计算簇45连接起来,用以在各个模块间传输数据和控制信号。全局同步模块44例如是一种全局同步屏障控制器(globalbarriercontroller,GBC),用以协调各计算簇的工作进度,确保信息的同步。多个计算簇45是多核计算装置400的计算核心,在图中示例性地展示每个裸片上4个,随着硬件的发展,本披露的多核计算装置400还可以包括8个、16个、64个、甚至更多的计算簇45。计算簇45用以高效地执行深度学习算法。
以计算簇的层级来看,如图所示,每个计算簇45包括多个处理器核406作为控制和计算单元,另外还有共享存储核407作为存储单元。进一步地,每个计算簇内还可以包括本地同步模块412,用以协调计算簇内各个处理器核的工作进度,确保信息的同步。处理器核406在图中示例性地展示4个,本披露不限制处理器核406的数量。
存储核407主要用以存储和通信,即存储处理器核406间的共享数据或中间结果、以及执行计算簇45与DRAM 204之间的通信、计算簇45间彼此的通信、处理器核406间彼此的通信等。在其他实施例中,存储核407具有标量运算的能力,用以执行标量运算。
存储核407包括共享存储单元(SMEM)408、广播总线409、计算簇直接内存访问模块(cluster direct memory access,CDMA)410及全局直接内存访问模块(global directmemory access,GDMA)411。SMEM 408承担高性能数据中转站的角色,在同一个计算簇45内不同处理器核406之间所复用的数据不需要通过处理器核406各自向DRAM 204获得,而是经SMEM 408在处理器核406间中转,存储核407只需要将复用的数据从SMEM 408迅速分发给多个处理器核406即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。广播总线409、CDMA 410及GDMA 411则分别用来执行处理器核406间的通信、计算簇45间的通信和计算簇45与DRAM 204的数据传输。
以处理器核的层级来看,单个处理器核的结构可以类似于图3所示的单核计算装置的结构图,此处不再详述。
访存处理方案
在本披露实施例中,将以三维数据为例进行数据搬运的描述,然而,本领域技术人员可以理解,上述方案也可以推广到更高维或更低维的数据上,本披露实施例不限于此。在下文描述中,所涉及的多维数据的维度可以表示为dim0、dim1和dim2,其中dim0是最低维(第一维),dim1是次低维(第二维),dim2是最高维(第三维)。可以理解,虽然多维数据具有多个维度,但是因为目前存储器的布局是一维的,因此多维数据与存储器上的存储之间存在对应关系。多维数据通常被分配在连续的存储空间中,也即可以将多维数据进行一维展开,存储在存储器上。例如,多维数据可以按照低维度(dim0)优先方式,进行顺序存储。多维数据与底层存储之间的这种关系可以各种参数来表示。
图5示出了多维数据在存储空间中的存储方式以及相关的参数。为了形象起见,图5示出了三维存储空间,然而实际上的存储空间是一维布局的。
如图5所示,三维数据所占据的存储空间可以通过如下参数来表示:
dim0_size,表示第一维数据大小或尺寸,其可以用字节数表示;
stride0,表示第一维数据步长,也即第二维度上的相邻元素之间的间隔;
stride1,表示第二维数据步长,也即第三维度上的相邻元素之间的间隔;
iter1,表示第二维度数据大小,其使用第二维度上包含的第一维度的数据块的个数来表示,当iter1的取值从0开始时,第二维度数据大小为iter1+1;
iter2,表示第三维度数据大小,其使用第三维度上包含的第二维度的数据块的个数来表示,当iter2的取值从0开始时,第三维度数据大小为iter2+1。
在数据搬运过程中,dim0_size始终不变,通过改变步长stride、各维度的数据个数iter等来改变摆放或数据形状。该三维数据的起始地址是base_addr,根据上述参数可以推导出第二维度上第二个第一维数据dim0_size的起始地址为base_addr+stride0。第二维数据大小为iter1+1。第一维数据和第二维数据组成的第一面二维数据大小为dim0_size*(iter1+1)。下一面数据起始地址为base_addr+stride1。第三维数据大小为iter2+1,以此类推。
已知在当前的指令集中,采用3DMOVE指令实现三维数据的搬运。通常第一维度上的数据在存储空间中连续存储,dim0_size是需要搬运数据的最小单元,即最小粒度,dim0_size中的数据连续存储。stride0≥dim0_size。当stride0=dim0_size时,数据连续,相邻的dim0_size的数据之间没有间隔。当stride0>dim0_size时,数据离散,相邻的dim0_size的数据之间存在间隔,间隔为stride0-dim0_size。在这种存在间隔的情况下,当前的处理方式是针对每个dim0_size拆分成一个微指令,执行一次从源端存储电路的读请求。当dim0_size接近或小于线宽(cacheline,也即高速缓存的处理单位,例如128B、64B等)时,输入输出(IO)访存效率为dim0_size/线宽。当dim0_size和stride0都较小时,会出现反复发送对相同地址的读写请求,IO效率较低。例如,令该三维数据的起始地址是base_addr,dim0_size小于线宽/3,则第一个微指令请求搬运第一个dim0_size,第二个微指令请求搬运第二个dim0_size,第三个微指令请求搬运第三个dim0_size,这三个请求都需要发送对base_addr的读请求。
有鉴于此,本披露实施例提供一种搬运多维数据的新方式,其支持对数据搬运指令进行灵活拆分,从而可以将读请求进行合并(merge),多笔小尺寸(size)读请求可以合并成为一笔读请求,由此将I/O访存效率提升为dim0_size/stride0,并且减少读请求的数量,防止堵塞数据传输通路,例如NOC(Network on Chip,片上网络)。
图6示出可以实施本披露实施例的数据访存方案的示例性硬件架构。
在硬件架构600中,访存处理装置610负责处理器核内与所有存储资源的互联。这些存储资源包括内部的静态RAM(例如图3的NRAM、WRAM和图4的存储核中的SRAM)和外部动态RAM(例如图2的DRAM)、暂存式存储器(Scratchpad Memory,SPM)。例如,图中示出了经由片上网络NOC 620与外部DRAM 630互联。访存处理装置610按照指令指定的位置和操作完成数据读写访问。在本披露实施例中,访存处理装置610不仅支持多维的数据连续读写功能,还支持离散地址序列的归并读/离散写功能。
如图所示,访存处理装置610包括访存指令译码单元611和数据访存单元612。在本披露实施例中,数据搬运指令被发送给访存处理装置610,访存指令译码单元611对满足合并搬运情况的指令进行识别、处理,并将由指令译码生成的请求(微指令,UOP,也称MicroOp,微操作)发送给数据访存单元612,由数据访存单元612发送合并后的读请求,以从读侧/源端存储电路(例如DRAM 630)读取数据。经由NOC 620将数据从DRAM 630读回后,数据访存单元612负责根据写侧(目的端)的地址将数据进行合并或拆分,写入目的端存储电路,从而可以实现节约读带宽的目的。
具体地,访存指令译码单元611用于对三维数据或更多维数据的搬运指令(例如命名为3DMOVE或3DMV_MERGE的指令)进行译码。访存指令译码单元611将从访存处理装置610外部(例如上游的指令发射队列,未示出)收到的数据搬运指令译码成机器能够执行的一个或多个微指令UOP。也即,访存指令译码单元611会生成若干UOP。每个UOP对应一次数据搬运,并且UOP指示最小搬运数据单元和当次搬运的最小搬运数据单元的数量,最小搬运数据单元对应数据源端的最低维数据的大小dim0_size。本领域技术人员能够理解,数据搬运目的端的最低维数据的大小亦为dim0_size。
上述的微指令UOP为二维UOP,即内部包含二维信息:该笔读请求内包含dim0_size的大小;以及该笔读请求内包含dim0_size的个数(iter)。
以下为了描述方便清楚起见,将搬运数据的源端(读端)的参数表示为src_stride0、src_stride1、src_iter1、src_iter2等,将搬运数据的目的端(写端)的参数表示为dst_stride0、dst_stride1、dst_iter1、dst_iter2等。例如,如果搬运指令是三维数据搬运指令,维度存储信息分别包括数据源端和数据目的端最低维数据的存储步长(src_stride0,dst_stride0)、次低维数据的存储步长(src_stride1,dst_stride1)、次低维数据的大小(src_iter1,dst_iter1)和最高维数据的大小(src_iter2,dst_iter2),其中次低维数据的大小和最高维数据的大小分别使用对应维度上含有其更低维数据块的个数来表示,并且数据源端和数据目的端的最低维数据的大小(dim0_size)相等。
数据访存单元612用于根据UOP生成读请求,从数据源端取回数据,以及接收所取回的数据并根据UOP写入数据目的端。通常,数据访存单元612从访存指令译码单元611接收到UOP后,基于接收到的UOP生成读请求,并将该读请求发送到访存处理装置610之外的NOC620,经由NOC从数据源端读取数据。数据源端示例性地例如包括前述DRAM 630。数据访存单元612经由NOC 620取回从数据源端读取的数据之后,基于从访存指令译码单元611接收到的UOP向数据目的端(未示出)写入数据。
访存处理装置610中的访存指令译码单元611和数据访存单元612按照上述操作实现一次数据的搬运。已知的搬运指令中一次搬运只能搬运一个dim0_size,但是本披露实施例能够实现在符合合并条件的情况下可以一次搬运多个dim0_size,从而有效减少数据传输量,提高硬件处理速度,降低设备功耗。
如果数据源端和数据目的端的数据都是连续存放的,那么可以直接进行连续读写。而如果数据源端和/或数据目的端的数据是不连续的,则情况略微复杂,需要根据读写二侧具体数据结构进行判断和处理。如前面所提到,本披露实施例的访存处理装置610不仅支持多维的数据连续读写功能,还支持离散地址序列的归并读/离散写功能。因此,原则上需要一次读操作中每个dim0_size对应的步长一致,一次写操作中每个dim0_size对应的步长也一致,也就是说,每次读搬运或者每次写搬运中,相邻dim0_size数据具有固定地址间隔。根据本披露的一些优选实施例,访存指令译码单元611可以基于搬运指令所指示的多维数据在数据源端和数据目的端的维度存储信息,将搬运指令译码为若干UOP,以使得单个UOP所搬运的相邻最小搬运数据单元在数据源端和数据目的端分别具有固定地址间隔。
如前所述,除了可以无条件连续读写的连续读、连续写的情况,需要重点分析离散读、连续写,连续读、离散写,离散读、离散写这三类大的情况。
针对离散读的情况,例如一维离散src_stride0>dim0_size,单个UOP所搬运的相邻最小搬运数据单元在数据源端的固定地址间隔src_stride0-dim0_size非零。这种情况下,数据访存单元612根据UOP,将所搬运的最小搬运数据单元按照数据源端的固定地址间隔、从取回的数据中离散地读出以供写入数据目的端。
针对离散读、连续写的情况,例如src_stride0>dim0_size,单个UOP所搬运的相邻最小搬运数据单元在数据源端的固定地址间隔src_stride0-dim0_size非零,目的端一维连续dst_stride0=dim0_size,单个UOP所搬运的相邻最小搬运数据单元在数据目的端的固定地址间隔dst_stride0-dim0_size为零。这种情况下,数据访存单元612将读出的数据中各个最小搬运数据单元连续地写入UOP对应的数据目的端地址中。
src_stride0>dim0_size、dst_stride0=dim0_size是非常标准的一维读离散一维写连续的情况。而离散读、连续写还存在若干变化形式,举例如下。
图7a-图7p示出了离散读、连续写的各种示例。在图示中,使用矩形条表示dim0_size的数据,也即最小搬运数据单元,矩形条之间的间距表示存储的地址间隔,不同阴影表示维度信息。左侧的图示表示数据在源端的存储信息,右侧的图示表示数据在目的端的存储信息,括号指示一个UOP中包含的dim0_size。
图7a示出了示例1,参数如下:
src_iter1>0,读侧有二维数据
dst_iter1>0,写侧有二维数据
src_iter2>0,读侧有三维数据
dst_iter2>0,写侧有三维数据
src_iter1=dst_iter1,读写二维数据大小相等
src_stride0>dim0_size,一维读离散,
dst_stride0=dim0_size,一维写连续
src_stride1!=src_stride0*(src_iter1+1),二维读离散,或者dst_stride1!=dim0_size*(dst_iter1+1),二维写离散
这种情况下,可以将src_iter1+1或者dst_iter1+1个dim0_size合并为1个UOP。
图7b示出了示例2,参数如下:
src_iter1>0,读侧有二维数据
dst_iter1>0,写侧有二维数据
src_iter2=0,读侧无三维数据
dst_iter2=0,写侧无三维数据
src_iter1=dst_iter1,读写二维数据大小相等
src_stride0>dim0_size,一维读离散,
dst_stride0=dim0_size,一维写连续
这种情况下,可以将src_iter1+1或者dst_iter1+1个dim0_size合并为1个UOP。
图7c示出了示例3,参数如下:
src_iter1>0,读侧有二维数据
dst_iter1>0,写侧有二维数据
src_iter2>0,读侧有三维数据
dst_iter2>0,写侧有三维数据
src_stride0>dim0_size,一维读离散
dst_stride0=dim0_size,一维写连续
src_stride1!=src_stride0*(src_iter1+1),二维读离散
dst_stride1=dim0_size*(dst_iter1+1),二维写连续
这种情况下,可以将src_iter1+1个dim0_size合并为1个UOP。
图7d示出了示例4,参数如下:
src_iter1>0,读侧有二维数据
dst_iter1>0,写侧有二维数据
src_iter2>0,读侧有三维数据
dst_iter2>0,写侧有三维数据
src_stride0>dim0_size,一维读离散
dst_stride0=dim0_size,一维写连续
src_stride1=src_stride0*(src_iter1+1),二维读连续
dst_stride1!=dim0_size*(dst_iter1+1),二维写离散
这种情况下,可以将dst_iter1+1个dim0_size合并为1个UOP。
图7e示出了示例5,参数如下:
src_iter1>0,读侧有二维数据
dst_iter1>0,写侧有二维数据
src_iter2>0,读侧有三维数据
dst_iter2>0,写侧有三维数据
src_stride0>dim0_size,一维读离散
dst_stride0=dim0_size,一维写连续
src_stride1=src_stride0*(src_iter1+1),二维读连续
dst_stride1=dim0_size*(dst_iter1+1),二维写连续
这种情况下,可以将(src_iter1+1)*(src_iter2+1)个dim0_size合并为1个UOP。
图7f示出了示例6,参数如下:
src_iter1>0,读侧有二维数据
dst_iter1>0,写侧有二维数据
src_iter2=0,读侧无三维数据
dst_iter2>0,写侧有三维数据
src_stride0>dim0_size,一维读离散
dst_stride0=dim0_size,一维写连续
dst_stride1=dim0_size*(dst_iter1+1),二维写连续
这种情况下,可以将src_iter1+1个dim0_size合并为1个UOP。
图7g示出了示例7,参数如下:
src_iter1>0,读侧有二维数据
dst_iter1>0,写侧有二维数据
src_iter2=0,读侧无三维数据
dst_iter2>0,写侧有三维数据
src_stride0>dim0_size,一维读离散
dst_stride0=dim0_size,一维写连续
dst_stride1!=dim0_size*(dst_iter1+1),二维写离散
这种情况下,可以将dst_iter1+1个dim0_size合并为1个UOP。
图7h示出了示例8,参数如下;
src_iter1>0,读侧有二维数据
dst_iter1>0,写侧有二维数据
src_iter2>0,读侧有三维数据
dst_iter2=0,写侧无三维数据
src_stride0>dim0_size,一维读离散
dst_stride0=dim0_size,一维写连续
src_stride1=src_stride0*(src_iter1+1),二维读连续
这种情况下,可以将(src_iter1+1)*(src_iter2+1)个dim0_size合并为1个UOP。
图7i示出了示例9,参数如下:
src_iter1>0,读侧有二维数据
dst_iter1>0,写侧有二维数据
src_iter2>0,读侧有三维数据
dst_iter2=0,写侧无三维数据
src_stride0>dim0_size,一维读离散
dst_stride0=dim0_size,一维写连续
src_stride1!=src_stride0*(src_iter1+1),二维读离散
这种情况下,可以将src_iter1+1个dim0_size合并为1个UOP。
图7j示出了示例10,参数如下:
src_iter1=0,读侧无二维数据
dst_iter1>0,写侧有二维数据
src_iter2>0,读侧有三维数据
dst_iter2>0,写侧有三维数据
src_stride1>dim0_size,二维读离散
dst_stride0=dim0_size,一维写连续
dst_stride1=dim0_size*(dst_iter1+1),二维写连续
这种情况下,可以将src_iter2+1个dim0_size合并为1个UOP。
图7k示出了示例11,参数如下:
src_iter1=0,读侧无二维数据
dst_iter1>0,写侧有二维数据
src_iter2>0,读侧有三维数据
dst_iter2>0,写侧有三维数据
src_stride1>dim0_size,二维读离散
dst_stride0=dim0_size,一维写连续
dst_stride1!=dim0_size*(dst_iter1+1),二维写离散
这种情况下,可以将dst_iter1+1个dim0_size合并为1个UOP。
图7l示出了示例12,参数如下:
src_iter1=0,读侧无二维数据
dst_iter1>0,写侧有二维数据
src_iter2>0,读侧有三维数据
dst_iter2=0,写侧无三维数据
src_stride1>dim0_size,二维读离散
dst_stride0=dim0_size,一维写连续
这种情况下,可以将src_iter2+1或dst_iter1+1个dim0_size合并为1个UOP。
图7m示出了示例13,参数如下:
src_iter1>0,读侧有二维数据
dst_iter1=0,写侧无二维数据
src_iter2>0,读侧有三维数据
dst_iter2>0,写侧有三维数据
src_stride0>dim0_size,一维读离散
dst_stride1=dim0_size,二维写连续
src_stride1=src_stride0*(src_iter1+1),二维读连续
这种情况下,可以将(src_iter1+1)*(src_iter2+1)个dim0_size合并为1个UOP。
图7n示出了示例14,参数如下:
src_iter1>0,读侧有二维数据
dst_iter1=0,写侧无二维数据
src_iter2>0,读侧有三维数据
dst_iter2>0,写侧有三维数据
src_stride0>dim0_size,一维读离散
dst_stride1=dim0_size,二维写连续
src_stride1!=src_stride0*(src_iter1+1),二维读离散
这种情况下,可以将src_iter1+1个dim0_size合并为1个UOP。
图7o示出了示例15,参数如下:
src_iter1>0,读侧有二维数据
dst_iter1=0,写侧无二维数据
src_iter2=0,读侧无三维数据
dst_iter2>0,写侧有三维数据
src_stride0>dim0_size,一维读离散
dst_stride1=dim0_size,二维写连续
这种情况下,可以将src_iter1+1或dst_iter2+1个dim0_size合并为1个UOP。
图7p示出了示例16,参数如下:
src_iter1=0,读侧无二维数据
dst_iter1=0,写侧无二维数据
src_iter2>0,读侧有三维数据
dst_iter2>0,写侧有三维数据
src_stride1>dim0_size,二维读离散
dst_stride1=dim0_size,二维写连续
这种情况下,可以将src_iter2+1或dst_iter2+1个dim0_size合并为1个UOP。
针对离散读、离散写的情况,还是以最标准的情况为例,一维读离散src_stride0>dim0_size,单个UOP所搬运的相邻最小搬运数据单元在数据源端的固定地址间隔src_stride0-dim0_size非零,一维写离散dst_stride0>dim0_size,单个UOP所搬运的相邻最小搬运数据单元在数据目的端的固定地址间隔dst_stride0-dim0_size非零。这种情况下,数据访存单元612将读出的数据中各个最小搬运数据单元按照数据目的端的固定地址间隔、离散地写入UOP对应的数据目的端地址中。对于数据结构的变化情况,与离散读、连续写原理类似,不再赘述。
针对连续读的情况,例如一维连续src_stride0=dim0_size,单个UOP所搬运的相邻最小搬运数据单元在数据源端的固定地址间隔src_stride0-dim0_size为零。这种情况下,数据访存单元612根据UOP,将所搬运的各个最小搬运数据单元从取回的数据中连续地读出以供写入数据目的端。
针对连续读、离散写的情况,类似地以一维连续或离散举例,src_stride0=dim0_size,单个UOP所搬运的相邻最小搬运数据单元在数据源端的固定地址间隔src_stride0-dim0_size为零,dst_stride0>dim0_size,单个UOP所搬运的相邻最小搬运数据单元在数据目的端的固定地址间隔dst_stride0-dim0_size非零。数据访存单元612根据UOP,将所搬运的最小搬运数据单元从取回的数据中连续地读出,然后将读出的数据中各个最小搬运数据单元按照数据目的端的固定地址间隔、离散地写入UOP对应的数据目的端地址中。对于数据结构的变化情况,与离散读、连续写原理类似,不再赘述。
从上面的示例可以看出,本披露实施例提供的搬运数据的合并逻辑或者合并策略可以归纳如下。
受限于硬件限制,连续读、连续写,离散读、连续写,连续读、离散写,离散读、离散写这四种情况虽然都存在合并搬运可能性,但是并非任何情况下都可以执行合并,需要有一些条件判断,只有在符合合并条件时,才可以执行合并,也即一次搬运多个最小搬运数据单元。访存指令译码单元611基于搬运指令所指示的多维数据在数据源端和数据目的端的维度存储信息,判断是否满足合并条件;当满足合并条件时,在UOP中所指示的当次搬运的最小搬运数据单元的数量大于1。
鉴于需要在一个线宽中合并至少一个dim0_size,所以合并条件包括但不限于:在数据源端,最低维数据的大小(src_dim0_size)和最低维数据的存储步长(src_stride0)均小于线宽。合并条件可以进一步包括但不限于:单个UOP内所搬运的最小搬运数据单元的总数据量不超过线宽。线宽是高速缓存的调度/处理单位,例如128B、64B等。单个UOP的总搬运量不超过线宽,由此可以支持在高速缓存的单次操作中完成对数据的读/写操作。
合并条件可以进一步包括但不限于:单个UOP内所搬运的最小搬运数据单元的地址跨度不超过指定阈值。如前面所提到,数据访存单元612根据微指令生成对源端存储电路的读请求(AR请求),以从源端存储电路取回数据。当源端存储电路是片外DRAM时,DRAM的调度/处理是以页为单位,例如512B。因此AR请求中包含的待搬运数据的地址跨度不能超过指定阈值,例如不超过一页,这样可以通过单个AR请求将数据取回,否则需要进行拆分。
通过分析离散读、连续写,连续读、离散写,离散读、离散写的读写二侧维度存储信息特征,如果将数据源端中具有第一固定地址间隔的最低维数据的最大数量与数据目的端中具有第二固定地址间隔的最低维数据的最大数量的公约数设置为单个UOP内所搬运的最小搬运数据单元的数量,则可以实现每次搬运中不论读侧还是写侧,相邻dim0_size数据都具有固定地址间隔。而如果在满足前述合并条件的前提下,选择最大公约数或者尽可能大的公约数则可实现搬运效率最大化。而如果前述最大公约数为1,则表示不符合合并条件,不能合并搬运。
图8示出了根据本披露一些实施例的指令执行方法的示意性流程图。
在步骤S810中,对多维数据的搬运指令进行译码以生成若干微指令,每个微指令对应一次数据搬运,并且微指令指示最小搬运数据单元和当次搬运的最小搬运数据单元的数量,最小搬运数据单元对应数据源端的最低维数据的大小。
在步骤S820中,根据微指令生成读请求以从数据源端取回数据。
在步骤S830中,接收所取回的数据并根据微指令写入数据目的端。
在一些实施例中,步骤S810包括:基于搬运指令所指示的多维数据在数据源端和数据目的端的维度存储信息,将搬运指令译码为若干微指令,以使得单个微指令所搬运的相邻最小搬运数据单元在数据源端和数据目的端分别具有固定地址间隔。
在一些实现中,单个微指令所搬运的相邻最小搬运数据单元在数据源端的固定地址间隔非零,并且接收所取回的数据并根据微指令写入数据目的端包括:根据微指令,将所搬运的最小搬运数据单元按照数据源端的固定地址间隔、从取回的数据中离散地读出以供写入数据目的端。
在另一些实现中,单个微指令所搬运的相邻最小搬运数据单元在数据源端的固定地址间隔为零,并且接收所取回的数据并根据微指令写入数据目的端包括:根据微指令,将所搬运的各个最小搬运数据单元从取回的数据中连续地读出以供写入数据目的端。
进一步可选地,当单个微指令所搬运的相邻最小搬运数据单元在数据目的端的固定地址间隔为零时,接收所取回的数据并根据微指令写入数据目的端进一步包括:将读出的数据中各个最小搬运数据单元连续地写入微指令对应的数据目的端地址中。或者可选地,当单个微指令所搬运的相邻最小搬运数据单元在数据目的端的固定地址间隔非零时,接收所取回的数据并根据微指令写入数据目的端进一步包括:将读出的数据中各个最小搬运数据单元按照固定地址间隔、离散地写入微指令对应的数据目的端地址中。
在一些实施例中,对多维数据的搬运指令进行译码以生成若干微指令包括:基于搬运指令所指示的多维数据在数据源端和数据目的端的维度存储信息,判断是否满足合并条件;当满足合并条件时,在微指令中所指示的当次搬运的最小搬运数据单元的数量大于1。合并条件可以包括:在数据源端,最低维数据的大小(src_dim0_size)和最低维数据的存储步长(src_stride0)均小于线宽。合并条件可以进一步包括:单个微指令内所搬运的最小搬运数据单元的总数据量不超过线宽。合并条件进一步还可以包括:单个微指令内所搬运的最小搬运数据单元的地址跨度不超过指定阈值。
在一些实施例中,单个微指令内所搬运的最小搬运数据单元的数量为数据源端中具有第一固定地址间隔的最低维数据的最大数量与数据目的端中具有第二固定地址间隔的最低维数据的最大数量的公约数。优选地,单个微指令内所搬运的最小搬运数据单元的数量为数据源端中具有第一固定地址间隔的最低维数据的最大数量与数据目的端中具有第二固定地址间隔的最低维数据的最大数量的最大公约数。
前述搬运指令例如是三维数据搬运指令,维度存储信息分别包括数据源端和数据目的端最低维数据的存储步长(src_stride0,dst_stride0)、次低维数据的存储步长(src_stride1,dst_stride1)、次低维数据的大小(src_iter1,dst_iter1)和最高维数据的大小(src_iter2,dst_iter2),其中次低维数据的大小和最高维数据的大小分别使用对应维度上含有其更低维数据块的个数来表示,并且数据源端和数据目的端的最低维数据的大小(dim0_size)相等。
本领域技术人员可以理解,前面结合图6描述的访存处理装置的各种特征可以类似地应用于图8的指令执行方法中,因此此处不再重复。
本披露实施例还提供了一种处理器,包括前述用于实施指令执行方法的访存处理装置。本披露实施例还提供一种芯片,其可以包括前面结合附图描述的任一实施例的处理器。进一步地,本披露还提供了一种板卡,该板卡可以包括前述芯片。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、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等。
依据以下条款可更好地理解前述内容:
条款1、一种访存处理装置,包括:访存指令译码单元,配置用于对多维数据的搬运指令进行译码以生成若干微指令,每个微指令对应一次数据搬运,并且所述微指令指示最小搬运数据单元和当次搬运的最小搬运数据单元的数量,所述最小搬运数据单元对应数据源端的最低维数据的大小;以及数据访存单元,配置用于根据所述微指令生成读请求以从所述数据源端取回数据,以及接收所取回的数据并根据所述微指令写入数据目的端。
条款2、根据条款1所述的访存处理装置,其中所述访存指令译码单元进一步配置用于:基于所述搬运指令所指示的所述多维数据在数据源端和数据目的端的维度存储信息,将所述搬运指令译码为若干微指令,以使得单个所述微指令所搬运的相邻最小搬运数据单元在所述数据源端和数据目的端分别具有固定地址间隔。
条款3、根据条款2所述的访存处理装置,其中,单个所述微指令所搬运的相邻最小搬运数据单元在所述数据源端的固定地址间隔非零,并且所述数据访存单元进一步配置用于:根据所述微指令,将所搬运的最小搬运数据单元按照所述数据源端的固定地址间隔、从所述取回的数据中离散地读出以供写入所述数据目的端。
条款4、根据条款2所述的访存处理装置,其中,单个所述微指令所搬运的相邻最小搬运数据单元在所述数据源端的固定地址间隔为零,并且所述数据访存单元进一步配置用于:根据所述微指令,将所搬运的各个最小搬运数据单元从所述取回的数据中连续地读出以供写入所述数据目的端。
条款5、根据条款3或4所述的访存处理装置,其中,当单个所述微指令所搬运的相邻最小搬运数据单元在所述数据目的端的固定地址间隔为零时,所述数据访存单元进一步配置用于:将所述读出的数据中各个最小搬运数据单元连续地写入所述微指令对应的数据目的端地址中。
条款6、根据条款3或4所述的访存处理装置,其中,当单个所述微指令所搬运的相邻最小搬运数据单元在所述数据目的端的固定地址间隔非零时,所述数据访存单元进一步配置用于:将所述读出的数据中各个最小搬运数据单元按照所述固定地址间隔、离散地写入所述微指令对应的数据目的端地址中。
条款7、根据条款1所述的访存处理装置,其中所述访存指令译码单元进一步配置用于:基于所述搬运指令所指示的所述多维数据在数据源端和数据目的端的维度存储信息,判断是否满足合并条件;当满足合并条件时,在所述微指令中所指示的当次搬运的最小搬运数据单元的数量大于1。
条款8、根据条款7所述的访存处理装置,其中所述合并条件包括:在数据源端,最低维数据的大小(src_dim0_size)和最低维数据的存储步长(src_stride0)均小于线宽。
条款9、根据条款8所述的访存处理装置,其中所述合并条件进一步包括:单个所述微指令内所搬运的最小搬运数据单元的总数据量不超过所述线宽。
条款10、根据条款9所述的访存处理装置,其中所述合并条件进一步包括:单个所述微指令内所搬运的最小搬运数据单元的地址跨度不超过指定阈值。
条款11、根据条款10所述的访存处理装置,其中单个所述微指令内所搬运的最小搬运数据单元的数量为数据源端中具有第一固定地址间隔的最低维数据的最大数量与数据目的端中具有第二固定地址间隔的最低维数据的最大数量的公约数。
条款12、根据条款11所述的访存处理装置,其中单个所述微指令内所搬运的最小搬运数据单元的数量为数据源端中具有第一固定地址间隔的最低维数据的最大数量与数据目的端中具有第二固定地址间隔的最低维数据的最大数量的最大公约数。
条款13、根据条款1-12任一所述的访存处理装置,其中所述搬运指令是三维数据搬运指令,所述维度存储信息分别包括数据源端和数据目的端最低维数据的存储步长(src_stride0,dst_stride0)、次低维数据的存储步长(src_stride1,dst_stride1)、次低维数据的大小(src_iter1,dst_iter1)和最高维数据的大小(src_iter2,dst_iter2),其中次低维数据的大小和最高维数据的大小分别使用对应维度上含有其更低维数据块的个数来表示,并且数据源端和数据目的端的最低维数据的大小(dim0_size)相等。
条款14、一种处理器,包括如条款1-13任一所述的访存处理装置。
条款15、一种芯片,所述芯片包括如条款14所述的处理器。
条款16、一种板卡,所述板卡包括条款15所述的芯片。
条款17、一种指令执行方法,包括:对多维数据的搬运指令进行译码以生成若干微指令,每个微指令对应一次数据搬运,并且所述微指令指示最小搬运数据单元和当次搬运的最小搬运数据单元的数量,所述最小搬运数据单元对应数据源端的最低维数据的大小;根据所述微指令生成读请求以从所述数据源端取回数据;以及接收所取回的数据并根据所述微指令写入数据目的端。
条款18、根据条款17所述的方法,其中对多维数据的搬运指令进行译码以生成若干微指令包括:基于所述搬运指令所指示的所述多维数据在数据源端和数据目的端的维度存储信息,将所述搬运指令译码为若干微指令,以使得单个所述微指令所搬运的相邻最小搬运数据单元在所述数据源端和数据目的端分别具有固定地址间隔。
条款19、根据条款18所述的方法,其中,单个所述微指令所搬运的相邻最小搬运数据单元在所述数据源端的固定地址间隔非零,并且接收所取回的数据并根据所述微指令写入数据目的端包括:根据所述微指令,将所搬运的最小搬运数据单元按照所述数据源端的固定地址间隔、从所述取回的数据中离散地读出以供写入所述数据目的端。
条款20、根据条款18所述的方法,其中,单个所述微指令所搬运的相邻最小搬运数据单元在所述数据源端的固定地址间隔为零,并且接收所取回的数据并根据所述微指令写入数据目的端包括:根据所述微指令,将所搬运的各个最小搬运数据单元从所述取回的数据中连续地读出以供写入所述数据目的端。
条款21、根据条款19或20所述的方法,其中,当单个所述微指令所搬运的相邻最小搬运数据单元在所述数据目的端的固定地址间隔为零时,所述接收所取回的数据并根据所述微指令写入数据目的端进一步包括:将所述读出的数据中各个最小搬运数据单元连续地写入所述微指令对应的数据目的端地址中。
条款22、根据条款19或20所述的方法,其中,当单个所述微指令所搬运的相邻最小搬运数据单元在所述数据目的端的固定地址间隔非零时,所述接收所取回的数据并根据所述微指令写入数据目的端进一步包括:将所述读出的数据中各个最小搬运数据单元按照所述固定地址间隔、离散地写入所述微指令对应的数据目的端地址中。
条款23、根据条款17所述的方法,其中对多维数据的搬运指令进行译码以生成若干微指令包括:基于所述搬运指令所指示的所述多维数据在数据源端和数据目的端的维度存储信息,判断是否满足合并条件;当满足合并条件时,在所述微指令中所指示的当次搬运的最小搬运数据单元的数量大于1。
条款24、根据条款23所述的方法,其中所述合并条件包括:在数据源端,最低维数据的大小(src_dim0_size)和最低维数据的存储步长(src_stride0)均小于线宽。
条款25、根据条款24所述的方法,其中所述合并条件进一步包括:单个所述微指令内所搬运的最小搬运数据单元的总数据量不超过所述线宽。
条款26、根据条款25所述的方法,其中所述合并条件进一步包括:单个所述微指令内所搬运的最小搬运数据单元的地址跨度不超过指定阈值。
条款27、根据条款26所述的方法,其中单个所述微指令内所搬运的最小搬运数据单元的数量为数据源端中具有第一固定地址间隔的最低维数据的最大数量与数据目的端中具有第二固定地址间隔的最低维数据的最大数量的公约数。
条款28、根据条款27所述的方法,其中单个所述微指令内所搬运的最小搬运数据单元的数量为数据源端中具有第一固定地址间隔的最低维数据的最大数量与数据目的端中具有第二固定地址间隔的最低维数据的最大数量的最大公约数。
条款29、根据条款17-28任一所述的方法,其中所述搬运指令是三维数据搬运指令,所述维度存储信息分别包括数据源端和数据目的端最低维数据的存储步长(src_stride0,dst_stride0)、次低维数据的存储步长(src_stride1,dst_stride1)、次低维数据的大小(src_iter1,dst_iter1)和最高维数据的大小(src_iter2,dst_iter2),其中次低维数据的大小和最高维数据的大小分别使用对应维度上含有其更低维数据块的个数来表示,并且数据源端和数据目的端的最低维数据的大小(dim0_size)相等。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。
Claims (29)
1.一种访存处理装置,包括:
访存指令译码单元,配置用于对多维数据的搬运指令进行译码以生成若干微指令,每个微指令对应一次数据搬运,并且所述微指令指示最小搬运数据单元和当次搬运的最小搬运数据单元的数量,所述最小搬运数据单元对应数据源端的最低维数据的大小;以及
数据访存单元,配置用于根据所述微指令生成读请求以从所述数据源端取回数据,以及接收所取回的数据并根据所述微指令写入数据目的端。
2.根据权利要求1所述的访存处理装置,其中所述访存指令译码单元进一步配置用于:
基于所述搬运指令所指示的所述多维数据在数据源端和数据目的端的维度存储信息,将所述搬运指令译码为若干微指令,以使得单个所述微指令所搬运的相邻最小搬运数据单元在所述数据源端和数据目的端分别具有固定地址间隔。
3.根据权利要求2所述的访存处理装置,其中,单个所述微指令所搬运的相邻最小搬运数据单元在所述数据源端的固定地址间隔非零,并且所述数据访存单元进一步配置用于:
根据所述微指令,将所搬运的最小搬运数据单元按照所述数据源端的固定地址间隔、从所述取回的数据中离散地读出以供写入所述数据目的端。
4.根据权利要求2所述的访存处理装置,其中,单个所述微指令所搬运的相邻最小搬运数据单元在所述数据源端的固定地址间隔为零,并且所述数据访存单元进一步配置用于:
根据所述微指令,将所搬运的各个最小搬运数据单元从所述取回的数据中连续地读出以供写入所述数据目的端。
5.根据权利要求3或4所述的访存处理装置,其中,当单个所述微指令所搬运的相邻最小搬运数据单元在所述数据目的端的固定地址间隔为零时,所述数据访存单元进一步配置用于:
将所述读出的数据中各个最小搬运数据单元连续地写入所述微指令对应的数据目的端地址中。
6.根据权利要求3或4所述的访存处理装置,其中,当单个所述微指令所搬运的相邻最小搬运数据单元在所述数据目的端的固定地址间隔非零时,所述数据访存单元进一步配置用于:
将所述读出的数据中各个最小搬运数据单元按照所述固定地址间隔、离散地写入所述微指令对应的数据目的端地址中。
7.根据权利要求1所述的访存处理装置,其中所述访存指令译码单元进一步配置用于:
基于所述搬运指令所指示的所述多维数据在数据源端和数据目的端的维度存储信息,判断是否满足合并条件;
当满足合并条件时,在所述微指令中所指示的当次搬运的最小搬运数据单元的数量大于1。
8.根据权利要求7所述的访存处理装置,其中
所述合并条件包括:在数据源端,最低维数据的大小(src_dim0_size)和最低维数据的存储步长(src_stride0)均小于线宽。
9.根据权利要求8所述的访存处理装置,其中
所述合并条件进一步包括:单个所述微指令内所搬运的最小搬运数据单元的总数据量不超过所述线宽。
10.根据权利要求9所述的访存处理装置,其中
所述合并条件进一步包括:单个所述微指令内所搬运的最小搬运数据单元的地址跨度不超过指定阈值。
11.根据权利要求10所述的访存处理装置,其中
单个所述微指令内所搬运的最小搬运数据单元的数量为数据源端中具有第一固定地址间隔的最低维数据的最大数量与数据目的端中具有第二固定地址间隔的最低维数据的最大数量的公约数。
12.根据权利要求11所述的访存处理装置,其中
单个所述微指令内所搬运的最小搬运数据单元的数量为数据源端中具有第一固定地址间隔的最低维数据的最大数量与数据目的端中具有第二固定地址间隔的最低维数据的最大数量的最大公约数。
13.根据权利要求1-12任一所述的访存处理装置,其中
所述搬运指令是三维数据搬运指令,所述维度存储信息分别包括数据源端和数据目的端最低维数据的存储步长(src_stride0,dst_stride0)、次低维数据的存储步长(src_stride1,dst_stride1)、次低维数据的大小(src_iter1,dst_iter1)和最高维数据的大小(src_iter2,dst_iter2),其中次低维数据的大小和最高维数据的大小分别使用对应维度上含有比其低一级维度的数据块的个数来表示,并且数据源端和数据目的端的最低维数据的大小(dim0_size)相等。
14.一种处理器,其特征在于,包括如权利要求1-13任一所述的访存处理装置。
15.一种芯片,其特征在于,所述芯片包括如权利要求14所述的处理器。
16.一种板卡,其特征在于,所述板卡包括权利要求15所述的芯片。
17.一种指令执行方法,包括:
对多维数据的搬运指令进行译码以生成若干微指令,每个微指令对应一次数据搬运,并且所述微指令指示最小搬运数据单元和当次搬运的最小搬运数据单元的数量,所述最小搬运数据单元对应数据源端的最低维数据的大小;
根据所述微指令生成读请求以从所述数据源端取回数据;以及
接收所取回的数据并根据所述微指令写入数据目的端。
18.根据权利要求17所述的方法,其中对多维数据的搬运指令进行译码以生成若干微指令包括:
基于所述搬运指令所指示的所述多维数据在数据源端和数据目的端的维度存储信息,将所述搬运指令译码为若干微指令,以使得单个所述微指令所搬运的相邻最小搬运数据单元在所述数据源端和数据目的端分别具有固定地址间隔。
19.根据权利要求18所述的方法,其中,单个所述微指令所搬运的相邻最小搬运数据单元在所述数据源端的固定地址间隔非零,并且接收所取回的数据并根据所述微指令写入数据目的端包括:
根据所述微指令,将所搬运的最小搬运数据单元按照所述数据源端的固定地址间隔、从所述取回的数据中离散地读出以供写入所述数据目的端。
20.根据权利要求18所述的方法,其中,单个所述微指令所搬运的相邻最小搬运数据单元在所述数据源端的固定地址间隔为零,并且接收所取回的数据并根据所述微指令写入数据目的端包括:
根据所述微指令,将所搬运的各个最小搬运数据单元从所述取回的数据中连续地读出以供写入所述数据目的端。
21.根据权利要求19或20所述的方法,其中,当单个所述微指令所搬运的相邻最小搬运数据单元在所述数据目的端的固定地址间隔为零时,所述接收所取回的数据并根据所述微指令写入数据目的端进一步包括:
将所述读出的数据中各个最小搬运数据单元连续地写入所述微指令对应的数据目的端地址中。
22.根据权利要求19或20所述的方法,其中,当单个所述微指令所搬运的相邻最小搬运数据单元在所述数据目的端的固定地址间隔非零时,所述接收所取回的数据并根据所述微指令写入数据目的端进一步包括:
将所述读出的数据中各个最小搬运数据单元按照所述固定地址间隔、离散地写入所述微指令对应的数据目的端地址中。
23.根据权利要求17所述的方法,其中对多维数据的搬运指令进行译码以生成若干微指令包括:
基于所述搬运指令所指示的所述多维数据在数据源端和数据目的端的维度存储信息,判断是否满足合并条件;
当满足合并条件时,在所述微指令中所指示的当次搬运的最小搬运数据单元的数量大于1。
24.根据权利要求23所述的方法,其中
所述合并条件包括:在数据源端,最低维数据的大小(src_dim0_size)和最低维数据的存储步长(src_stride0)均小于线宽。
25.根据权利要求24所述的方法,其中
所述合并条件进一步包括:单个所述微指令内所搬运的最小搬运数据单元的总数据量不超过所述线宽。
26.根据权利要求25所述的方法,其中
所述合并条件进一步包括:单个所述微指令内所搬运的最小搬运数据单元的地址跨度不超过指定阈值。
27.根据权利要求26所述的方法,其中
单个所述微指令内所搬运的最小搬运数据单元的数量为数据源端中具有第一固定地址间隔的最低维数据的最大数量与数据目的端中具有第二固定地址间隔的最低维数据的最大数量的公约数。
28.根据权利要求27所述的方法,其中
单个所述微指令内所搬运的最小搬运数据单元的数量为数据源端中具有第一固定地址间隔的最低维数据的最大数量与数据目的端中具有第二固定地址间隔的最低维数据的最大数量的最大公约数。
29.根据权利要求17-28任一所述的方法,其中
所述搬运指令是三维数据搬运指令,所述维度存储信息分别包括数据源端和数据目的端最低维数据的存储步长(src_stride0,dst_stride0)、次低维数据的存储步长(src_stride1,dst_stride1)、次低维数据的大小(src_iter1,dst_iter1)和最高维数据的大小(src_iter2,dst_iter2),其中次低维数据的大小和最高维数据的大小分别使用对应维度上含有比其低一级维度的数据块的个数来表示,并且数据源端和数据目的端的最低维数据的大小(dim0_size)相等。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211111741.8A CN117742566A (zh) | 2022-09-13 | 2022-09-13 | 访存处理装置、处理器、芯片、板卡和指令执行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211111741.8A CN117742566A (zh) | 2022-09-13 | 2022-09-13 | 访存处理装置、处理器、芯片、板卡和指令执行方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117742566A true CN117742566A (zh) | 2024-03-22 |
Family
ID=90279901
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211111741.8A Pending CN117742566A (zh) | 2022-09-13 | 2022-09-13 | 访存处理装置、处理器、芯片、板卡和指令执行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117742566A (zh) |
-
2022
- 2022-09-13 CN CN202211111741.8A patent/CN117742566A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112612521A (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
CN112799726B (zh) | 数据处理装置、方法及相关产品 | |
Huang et al. | IECA: An in-execution configuration CNN accelerator with 30.55 GOPS/mm² area efficiency | |
WO2023045446A1 (zh) | 计算装置、数据处理方法及相关产品 | |
CN113469337B (zh) | 用于优化神经网络模型的编译方法及其相关产品 | |
CN111047005A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN117742566A (zh) | 访存处理装置、处理器、芯片、板卡和指令执行方法 | |
CN114281561A (zh) | 处理单元、用于处理单元的同步方法及相应产品 | |
CN113742266B (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN115081600A (zh) | 执行Winograd卷积的变换单元、集成电路装置及板卡 | |
CN113791996B (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN113792867B (zh) | 运算电路、芯片和板卡 | |
WO2023236929A1 (zh) | 基于指令读取数据中的目标数据的方法及其设备 | |
CN112232498B (zh) | 一种数据处理装置、集成电路芯片、电子设备、板卡和方法 | |
WO2022111013A1 (zh) | 支援多种访问模式的设备、方法及可读存储介质 | |
WO2022001454A1 (zh) | 集成计算装置、集成电路芯片、板卡和计算方法 | |
WO2022001438A1 (zh) | 一种计算装置、集成电路芯片、板卡、设备和计算方法 | |
CN116185942A (zh) | 数据处理方法、装置、存储介质以及电子设备 | |
CN115495157A (zh) | 分组运算装置、方法、集成电路芯片、计算装置和板卡 | |
CN117235424A (zh) | 计算装置、计算方法及相关产品 | |
CN117667212A (zh) | 指令控制装置、方法、处理器、芯片和板卡 | |
CN114648438A (zh) | 处理图像数据的设备、方法及可读存储介质 | |
CN114282159A (zh) | 数据处理装置、集成电路芯片、设备及其实现的方法 | |
CN117648091A (zh) | 计算图的编译方法及相关产品 | |
CN114444677A (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 |