CN117215475A - 数据存储、访问、运算方法及相关产品 - Google Patents

数据存储、访问、运算方法及相关产品 Download PDF

Info

Publication number
CN117215475A
CN117215475A CN202210612510.9A CN202210612510A CN117215475A CN 117215475 A CN117215475 A CN 117215475A CN 202210612510 A CN202210612510 A CN 202210612510A CN 117215475 A CN117215475 A CN 117215475A
Authority
CN
China
Prior art keywords
data
address
memory
bits
storage area
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
Application number
CN202210612510.9A
Other languages
English (en)
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN202210612510.9A priority Critical patent/CN117215475A/zh
Priority to PCT/CN2023/097456 priority patent/WO2023232079A1/zh
Publication of CN117215475A publication Critical patent/CN117215475A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本披露公开了一种数据存储方法、数据访问方法、数据运算方法、数据存储装置、计算装置、芯片和板卡。该计算装置可以包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案为非常规类型的数据提供了高效的存储方法和访问方法,从而可以有效节省存储空间和传输带宽。

Description

数据存储、访问、运算方法及相关产品
技术领域
本披露一般地涉及数据存储领域。更具体地,本披露涉及一种数据存储方法、数据访问方法、数据运算方法、数据存储装置、计算装置、芯片及板块。
背景技术
在深度学习硬件崛起之前,大多数的科学计算都是基于IEEE Float32和IEEEFloat64。随着深度学习的发展和人工智能(AI)处理器的演进,研究发现在训练和推理过程中,可以通过降低浮点运算的精度来有效地提升运行速度、功耗和芯片面积。
例如,经过算法研究,在Leopard的AI-NR网络中,大部分网络层应用FP16能够满足精度要求和性能要求。然而有的网络层应用FP16数据类型精度是不够的,需要用TF32或FP32才能满足精度要求。但是为了降低硬件开销,最终这些网络层(也即FP16精度不够的网络层)统一用TF32的数据类型来进行计算和存储。
TF32是由Nvidia提出的一个19-bit的浮点数据类型。由于TF32是19比特,无论是在存储器中存储还是在数据通路上传输,都很难进行描述,包括存储地址、数据大小以及存储器上的空间分配等。
因此,亟需一种能够针对TF32这类特殊的数据类型的有效访存方案。
发明内容
为了至少部分地解决背景技术中提到的一个或多个技术问题,本披露的方案提供了一种数据存储方法、数据访问方法、数据运算方法、数据存储装置、计算装置、芯片和板块。
在第一方面中,本披露提供一种数据存储方法,包括:将所述数据的位数分成整数部分和余数部分,其中所述整数部分的位数对齐到访存对齐值,所述余数部分的位数小于所述访存对齐值;将所述整数部分存储在第一存储区域的第一地址中;以及将所述余数部分存储在第二存储区域的第二地址中,其中所述第二地址与所述第一地址具有一一对应的映射关系
在第二方面中,本披露提供一种数据访问方法,包括:从第一存储区域的第一地址中读取所述数据的位数的整数部分,其中所述整数部分的位数对齐到访存对齐值;基于所述第一地址确定与之具有一一对应的映射关系的第二存储区域的第二地址;从所述第二存储区域的第二地址中读取所述数据的位数的余数部分,其中所述余数部分的位数小于所述访存对齐值;以及将所述整数部分与所述余数部分进行拼接,以组成所述数据。
在第三方面中,本披露提供一种数据运算方法,包括:对待运算数据执行运算,得到中间运算结果;将所述中间运算结果转换为指定类型的数据;以及将所述指定类型的数据按照前述第一方面所述的数据存储方法进行存储。
进一步地,还可以按照前述第二方面所述的数据访问方法读取所述指定类型的数据;以及利用所述指定类型的数据执行进一步的运算。
在第四方面中,本披露提供一种数据存储装置,包括:第一存储区域,配置用于存储数据的位数的整数部分,其中所述整数部分的位数对齐到访存对齐值;第二存储区域,配置用于存储所述数据的位数的余数部分,其中所述余数部分的位数小于所述访存对齐值;其中同一数据的整数部分对应的所述第一存储区域中的第一地址与余数部分对应的所述第二存储区域中的第二地址之间具有一一对应的映射关系。
在第五方面中,本披露提供一种计算装置,包括前述第四方面任一实施例的数据存储装置。
在第六方面中,本披露提供一种芯片,包括前述第五方面任一实施例的计算装置。
在第七方面中,本披露提供一种板卡,包括前述第六方面任一实施例的芯片。
通过如上所提供的数据存储方法、数据访问方法、数据运算方法及相关产品,本披露实施例提供了一种有效支持诸如TF32这种数据类型的访存方案,其无需在存储器上占据有效数位之外的存储空间,从而能够节省存储器的有限存储空间,提高存储效率。进一步地,当使用TF32这种数据类型的数据进行运算时,在保证一定精度的同时可以提高运算带宽的利用率。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1示出本披露实施例的板卡的结构图;
图2示出本披露实施例的组合处理装置的结构图;
图3示出本披露实施例的计算装置的内部结构示意图;
图4示出了几种数据类型的示意性格式;
图5示出根据本披露一个实施例的数据存储方法的示例性流程图;
图6示出根据本披露一个实施例的数据访问方法的示例性流程图;
图7示出了根据本披露一个实施例的数据运算方法的示例性流程图;以及
图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示出了计算装置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间的数据搬运。
浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数,小数点可以“浮动”。IEEE浮点标准用V=(-1)^sign*mantissa*2^E的形式表示一个数。其中,sign为符号位,0表示正数,1代表负数;E表示阶码,对浮点数进行加权,权值是2的E次幂(可能是负数次幂);mantissa表示位数,mantissa是一个二进制小数,其范围是1~2-ε,或者是0-ε。浮点数在计算机中的表示分为三个字段,分别对这些字段进行编码:
(1)一个单独的符号位s直接编码符号s。
(2)k位的阶码字段编码阶码,exp=e(k-1)......e(1)e(0)。
(3)n位的小数字段mantissa,编码尾数。
图4示出了几种数据类型的示意性格式。
如图所示,FP32具有32比特,其中1比特符号位s,8比特阶码字段E,代表数值范围,23比特尾数B,代表精度。
FP16具有16比特,其中1比特符号位s,5比特阶码字段E,代表数值范围,10比特尾数B,代表精度。
TF32具有19比特,其中1比特符号位s,8比特阶码字段,代表数值范围,10比特尾数,代表精度。
可以看出,TF32使用与半精度(FP16)数学相同的10位尾数B,采用与FP32相同的8位阶码E,因此可以支持相同的数值范围。
考虑到当前的存储器(例如图3的NRAM)通常是以字节为单位进行寻址访问,因此尽管TF32这种数据类型只有19比特,但是在存储器中通常仍然分配32比特进行存储,以方便按字节对齐进行访问。显然,这种访存方式会浪费存储器的空间,例如,每一个TF32类型的数据会浪费13比特的存储空间。当按此取出数据在数据通路上传输时,也同样会占用数据通路的传输带宽。
有鉴于此,本披露实施例提出了一种针对TF32这种特殊的数据类型的访存方案,其通过将数据的位数拆分成整数部分和余数部分,并分别存储在适合的存储区域或存储器中,可以有效利用存储空间,不占用额外的存储资源。相应地,在数据通路上传输时也无需额外占用带宽。
图5示出根据本披露一个实施例的数据存储方法的示例性流程图。
如图所示,在步骤510中,将数据的位数分成整数部分和余数部分,其中整数部分的位数对齐到访存对齐值,余数部分的位数小于访存对齐值。
此处访存对齐值是指常规存储器的寻址对齐值。例如,目前大部分存储器是以字节为单位进行寻址访存,因此访存对齐值为1个字节,也即8比特。“对齐到访存对齐值”是指能够被访存对齐值整除。以上面的访存对齐值为8比特为例,则int8、int16、FP16、FP32这些数据类型都是对齐到8比特的,它们存储在这些存储器中时,也是按照字节对齐进行存储,从而可以方便快捷地进行寻址访存。
当数据的位数不对齐到访存对齐值时,例如TF32这种数据类型,则要么按照前文提到的仍然按照32比特进行存储,从而可以按字节对齐进行寻址访存;要么再填补5比特,以对齐到8比特。这两种方式都会额外占用存储空间来存储无实质意义的数值。
因此,在本披露实施例中,按照访存对齐值,将数据的位数划分为整数部分和余数部分。例如,对于具有19比特的TF32而言,假设访存对齐值为8比特,则可以拆分为:16比特的整数部分,以及3比特的余数部分。
具体的整数部分与余数部分的格式划分可以是任意的。在一些实施例中,优选将1比特的符号位s划分到整数部分中,从而在先读取整数部分的情况下可以根据符号位预先进行判断,有利于决策后续的处理。例如,在某些运算仅在数据为正数时才执行时,可以根据提取的符号位s进行判断,从而在判断数据为负数时跳过,节省后续的读取余数部分和运算等操作,提高处理效率。在一种实现中,可以将TF32的指数位中的3比特划分为余数部分,例如第15-17比特(参见图4中TF32的阴影部分);而将剩余的16比特划分为整数部分,也即包含10比特的尾数位(第0-9比特)、5比特的指数位(第10-14比特)以及1比特的符号位(第18比特)。
接着,在步骤520中,将上述整数部分存储在第一存储区域的第一地址中。由于整数部分对齐到访存对齐值,因此,在一些实施例中,第一存储区域可以是按该访存对齐值进行寻址访存的存储器。
进一步地,在一些实施例中,第一存储区域可以位于计算装置中已配备的按该访存对齐值进行寻址访存的存储器中。也即,第一存储区域可以复用已有的存储器,从而无需额外配置新的存储电路。
接着,在步骤530中,将上述余数部分存储在第二存储区域的第二地址中,其中第二地址与第一地址具有一一对应的映射关系。由于余数部分未对齐到访存对齐值并且小于该访存对齐值,因此,余数部分不宜存储在整数部分所在的第一存储区域中,而是需要另外配置一个存储器,也即第二存储区域与第一存储区域归属于不同的存储器。优选的,第二存储区域可以按余数部分对齐进行寻址访存。例如,以TF32为例,第二存储区域可以按3比特对齐进行寻址访存,从而每次可以至少访问1个TF32数据的余数部分。
为了将同一数据的整数部分与余数部分建立关联,存储整数部分的第一地址和存储余数部分的第二地址之间需要具有一一对应的映射关系。
在一些实施例中,第一存储区域的第一地址与第二存储区域的第二地址之间的映射关系是预先设定的。例如,第一存储区域和第二存储区域之间具有固定的地址映射关系。具体地,以TF32数据为例,第一存储区域的第1个16bit的地址固定关联于第二存储区域的第1个3bit的地址,第一存储区域的第2个16bit的地址固定关联于第二存储区域的第2个3bit的地址,以此类推。可以理解,当第一存储区域由于复用已配置的存储器而导致地址不固定时,上述第一地址与第二地址之间的这种固定关联是相对固定的。例如,第一存储区域和/或第二存储区域的首地址可能发生变化,但是相对于第一存储区域首地址固定量偏移的第一地址与相对于第二存储区域首地址固定量偏移的第二地址之间的映射关系是固定的。还可以理解,由于这种映射关系是固定的,因此可以直接根据第一地址相对首地址的偏移量来确定第二地址,反之亦然。
在另一些实施例中,可以在存储数据时实时建立第一地址与第二地址之间的映射关系,并通过地址表格进行维护。例如将数据A的整数部分存储在第一地址中,数据A的余数部分存储在第二地址中,然后在地址对应关系表格中记录:第一地址<——>第二地址,双向箭头表示可双向查询。由此,在后续的访问时,可以根据该地址表格来基于第一地址确定第二地址,反之亦然。
在一些实施例中,第二存储区域也可以位于计算装置中已配置的存储器中,也即第二存储区域可以复用已有的存储器,只要该存储器至少支持按余数部分进行寻址访存即可。
由此,上面结合附图描述了本披露实施例的数据存储方法。尽管上面按先后顺序描述了整数部分和余数部分的存储,但是本领域技术人员可以理解,本披露实施例在此方面没有限制,二者的存储顺序可以反过来,也可以同时进行(只要硬件支持同时访存)。相应地,本披露实施例还提供了对应的数据访问方法。
图6示出根据本披露一个实施例的数据访问方法的示例性流程图。
如图所示,在步骤610中,从第一存储区域的第一地址中读取数据的位数的整数部分,其中整数部分的位数对齐到访存对齐值。
在步骤620中,基于第一地址确定与之具有一一对应的映射关系的第二存储区域的第二地址。如前所述,第一地址与第二地址之间的映射关系可以表现为多种形式,例如固定的相对位置,可以利用公式来计算确定;或者可查找的地址表格,通过查找来确定。
接着,在步骤630中,从第二存储区域的第二地址中读取数据的位数的余数部分,其中余数部分的位数小于上述访存对齐值。
最后,在步骤640中,将读取的整数部分与余数部分进行拼接,以组成该数据。
可以理解,上面参考图5的数据存储方法描述的各个步骤的各个技术特征可以类似地应用于图6的数据访问方法,此处不再赘述。类似地,尽管上面按先后顺序描述了整数部分和余数部分的读取,但是本领域技术人员可以理解,本披露实施例在此方面没有限制,二者的读取顺序可以反过来,也可以同时进行(只要硬件支持同时访存)。
如背景技术中所提到的,上述诸如TF32这类数据类型的使用可能出现在神经网络的部分网络层的运算中。例如,在Leopard的AI-NR网络中,TF32数据类型的存储出现在AI-ISP核中,主要涉及AI-NR网络1×1的卷积层的后处理(后融合,诸如加法、减法、乘法等运算,例如bias运算),并且存储在例如图3的NRAM中。采用本披露实施例提供的针对TF32这类特殊数据类型的访存方案,可以降低存储要求,同时也可以有效利用运算带宽。
例如,在一些场景下,对于常规数据而言,例如FP16,卷积运算的带宽是64B,卷积运算结果可以进行后融合,而后融合的运算带宽是128B。而对于TF32数据而言,它的运算带宽是152B。因此,存在三种运算带宽可供在不同模式下选择,以让运算效率最高。
假如卷积运算精度按照FP16数据类型,则可以使用64B和128B运算带宽。具体地,如果使用64B运算带宽,则可以同时计算32个数;如果使用128B运算带宽,则可以同时计算64个数。如果采用FP32数据类型,则64B运算带宽可以计算16个数,128B运算带宽可以计算32个数。采用TF32数据类型,则152B运算带宽可以计算64个数。由此可见,TF32的数据量是152B运算带宽中最大的,而其对硬件的开销只是在128B的基础上额外增加24B。这24B的额外开销就可以将运算数据量达到最大的64个数,同时精度比FP16还高。
图7示出了根据本披露一个实施例的数据运算方法的示例性流程图。
如图所示,在步骤710中,对待运算数据执行运算,得到中间运算结果。根据硬件的配置,待运算数据可以是规定的数据类型,例如int8、int16等。通常,中间运算结果按照期望的精度输出,例如按FP32类型进行输出。这种运算例如可以是神经网络中的卷积运算。
接着,在步骤720中,将上述中间运算结果转换为指定类型的数据。该指定类型的数据例如是本披露实施例所针对的诸如TF32一类的特殊类型的数据。如上面提到的,输出的中间运算结果可能需要进行一些后融合运算处理,这些后融合运算精度要求可以不那么高,但是运算带宽可以适当增加,例如152B。因此,将中间运算结果转换为TF32类型,可以有效利用运算带宽。
然后,在步骤730中,根据需要,可以将该指定类型的数据按照前文参考图5描述的的数据存储方法进行存储。当该数据需要用于后融合运算处理时,可以将其暂时存储起来,在运算时再进行读取。
可选地或附加地,在步骤740中,根据需要,按照前文参考图6描述的数据访问方法读取该指定类型的数据。
最后,在步骤750中,利用该指定类型的数据执行进一步的运算。
可以理解,在上述计算之后,还可以进行数据类型的转换,例如在精度不需要保持那么高时,可以转换成常规的int8数据类型,以进行最后的输出。
还可以理解,上面参考图5和图6的数据存储方法和数据访问方法描述的各个步骤的各个技术特征可以类似地应用于图7的数据运算方法,此处不再赘述。
上面描述了本披露实施例的数据访存方法的一个示例性应用场景。本文提供的数据访存方法还可以应用在其他场景中。例如,在卷积神经网络的运算中,不同的卷积层的卷积核大小可能不同,比如包括3×3的卷积核,也可能包括1×1的卷积核。当卷积核越大时,例如3×3,其运算量也很大,此时的输出带宽不是整个运算过程中的瓶颈,输出的时候使用最高精度的FP32进行输出,即使速度慢一些也是可以接受的。当卷积核较小时,例如1×1,计算非常快,此时输出带宽就容易成为整个运算过程中的瓶颈。要想输出得更快,此时可以使用TF32类型来进行输出。
尽管上文描述了将数据的位数划分为整数部分与余数部分进行分开存储,但是,为了便于对这种数据类型的描述,上述划分与分开存储可以设置为对于程序员是不可见的,从而简化程序员的处理。例如,对于TF32,可以约定程序员在为这种数据类型分配空间时,仍然按照每个TF32的数据大小和FP32的数据大小一样,也即32比特(4B)。这样,假设需要存储/传输64个TF32数据时,将会占用64*4B=256B的空间大小。
图8示出了根据本披露一个实施例的空间分配示意图。在图示实施例中,用于存储整数部分的第一存储区域复用已配置的存储器,例如NRAM。
图中左边示出了NRAM的逻辑空间。普通的神经元数据存储空间810大小例如为1280KB,地址范围在1M(统一编址的NRAM偏移)~1M+1280KB,并且按照8比特对齐进行访问。此逻辑地址空间可以称为CT_RAM0。
TF32数据类型的存储空间比较特殊,在1M+1.5M~1M+1.5M+480KB地址范围内,属于NRAM的一部分,在本文中将其统一定义为压缩空间(图中区域812),此逻辑地址空间可以称为TF_RAM。也就是说,软件分配TF32数据类型的地址空间,只能定义在2.5M~2.5M+480KB之间,并且空间大小为480KB,一旦分配地址范围不在这个范围内,硬件会触发中断错误。
从图中可以看出,普通的神经元数据存储空间810与TF32的存储空间812之间还有一块无效空间811。也即1M+1280KB~1.5MKB是不允许访问的。
若硬件按照软件的地址空间分配实际的物理存储空间,则对于硬件而言,其资源开销很大。此外,TF32这种特殊的数据类型通常不会一直使用,而是只在有精度需求的时候才使用,或者也存在完全不使用TF32的场景。因此,在一些实施例中,虽然在图示中TF32的地址空间与普通的神经元数据的地址空间在逻辑空间上是分开的,但是TF32数据类型的物理空间实际上是复用了NRAM中普通神经元数据的物理空间,也即复用了NRAM的1M~1M+1280KB物理区间的一部分。换言之,物理实现是存在映射关系的,即2.5M~2.5M+480KB(TF_RAM)的逻辑地址会映射到1M~1M+1280KB物理区间的某个部分。这种复用可以有效地节省硬件开销,同时也方便使用一套存储硬件支持多种数据类型。
为了描述这一映射关系,可以先定义逻辑地址L_ADDR_CT_RAM0和L_ADDR_TF_RAM,其中1M<=L_ADDR_CT_RAM0<1M+1280KB,2.5M<=L_ADDR_TF_RAM<2.5M+480KB;以及物理地址P_ADDR_CT_RAM0和P_ADDR_TF_RAM。
对于480KB的存储空间,当用其存储TF32数据类型的数据时,由于软件仍然按照与FP32大小相同的方式处理,因此可以存储480KB/32bit=120K个TF32数据。根据本披露实施例的TF32的存储方案,这120K个TF32数据实际需要的存储空间为:整数部分需要120K*16bit=240KB,余数部分需要120K*3bit=45KB。
图中右边示出了经过地址映射到NRAM的物理空间。其中整数部分复用NRAM的1M~1M+1280KB物理区域820的一部分,如图中区域TF_L_RAM 822所示;余数部分则存储在附加的一个小存储器中,如区域TF_H_RAM 823所示。也即,逻辑空间812会被映射到物理区域822+物理区域823;而普通神经元数据的逻辑空间810则会被映射到物理区域820中除去822之外的区域。
具体的逻辑地址空间和物理地址空间之间的映射关系如下:
(1)NRAM总体的物理空间大小为CT_RAM0+TF_H_RAM,即1280KB+45KB;
(2)L_ADDR_CT_RAM0地址和P_ADDR_TF_RAM0地址映射是一一对应的,即实心箭头表示;
(3)TF_RAM(480KB大小)逻辑地址映射到CT_RAM0中的TF_L_RAM(240KB)+TF_H_RAM(45KB),用虚线箭头表示,映射关系满足{L_ADDR_TF_RAM(1M+1536KB)}÷2+CFG_BASE_ADDR=P_ADDR_TF_RAM,其中CFG_BASE_ADDR是可以配置的;
(4)CFG_BASE_ADDR按照512B对齐。
从上面描述的映射关系可知,TF_RAM映射后的TF_L_RAM和CT_RAM0之间是可以重叠的,这部分需要软件进行“一致性”保障,即软件在用到TF_RAM时,需要其保障其在CT_RAM0的映射TF_L_RAM只被TF32数据类型应用。
从图中可以看出,整数部分的区域822实际上与普通神经元数据的区域820是共用的。也即,存储整数部分所需的240KB是属于普通神经元数据的1280KB中。区域822在区域820中的具体位置可配置,例如通过上面的参数CFG_BASE_ADDR。换言之,区域822在区域820中可任意滑动。
由于整个NRAM为了设计方便或者使得硬件开销小,通常都是设计成按8bit对齐进行存储和访问。TF32的整数部分(16比特)也是对齐到8bit,所以可以将整数部分的存储区域822复用NRAM,都按照8比特对齐进行访存。TF32的余数部分(3比特)是按照3比特对齐,与整数部分的访问模式不同,会有更多的开销,因此需要将余数部分所需的存储区域823独立出来。
从图8中可以看出,程序员能看到的是左边的逻辑空间,例如专门用于存放TF32数据的480KB大小的空间,以及1280KB的普通神经元数据存储空间。硬件会通过地址映射寻找到对应的存储位置。余数部分的存储区域823对于程序员是隐藏起来不可见的。这种设计对于程序员非常友好,可以简化程序员的编程,无需考虑TF32这类数据的分割和底层存储,仍然按照FP32的方式处理即可。
本领域技术人员可以理解,上面示例中提到的1280KB、480KB等仅仅是示例性的,根据实际运算的需要,可以配置不同的空间大小,并按照本披露公开的原理计算整数部分与余数部分所需的空间大小,本披露实施例在此方面没有限制。对于TF32这种数据类型而言,整数部分的存储空间大小与余数部分的存储空间大小保持16:3的比例即可。
从图8中可以看出,本披露实施例还提供了一种数据存储装置,包括第一存储区域(例如TF_L_RAM),配置用于存储数据的位数的整数部分,其中整数部分的位数对齐到访存对齐值;第二存储区域(例如TF_H_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等。
依据以下条款可更好地理解前述内容:
条款1、一种数据存储方法,包括:
将所述数据的位数分成整数部分和余数部分,其中所述整数部分的位数对齐到访存对齐值,所述余数部分的位数小于所述访存对齐值;
将所述整数部分存储在第一存储区域的第一地址中;以及
将所述余数部分存储在第二存储区域的第二地址中,其中所述第二地址与所述第一地址具有一一对应的映射关系。
条款2、一种数据访问方法,包括:
从第一存储区域的第一地址中读取所述数据的位数的整数部分,其中所述整数部分的位数对齐到访存对齐值;
基于所述第一地址确定与之具有一一对应的映射关系的第二存储区域的第二地址;
从所述第二存储区域的第二地址中读取所述数据的位数的余数部分,其中所述余数部分的位数小于所述访存对齐值;以及
将所述整数部分与所述余数部分进行拼接,以组成所述数据。
条款3、一种数据运算方法,包括:
对待运算数据执行运算,得到中间运算结果;
将所述中间运算结果转换为指定类型的数据;以及
将所述指定类型的数据按照条款1所述的数据存储方法进行存储。
条款4、根据条款3所述的方法,还包括:
按照条款2所述的数据访问方法读取所述指定类型的数据;以及利用所述指定类型的数据执行进一步的运算。
条款5、根据条款1-4任一所述的方法,其中所述第一地址与所述第二地址之间的映射关系是预先设定的。
条款6、根据条款1-4任一所述的方法,其中所述第一地址与所述第二地址之间的映射关系是在存储所述数据时实时建立的,并通过地址表格进行维护。
条款7、根据条款1-6任一所述的方法,其中所述第一存储区域按所述访存对齐值进行寻址访存。
条款8、根据条款7所述的方法,其中所述第一存储区域位于已配备的按所述访存对齐值进行寻址访存的存储器中。
条款9、根据条款1-8任一所述的方法,其中所述第二存储区域按所述余数部分对齐进行寻址访存。
条款10、根据条款1-9任一所述的方法,其中所述数据的数据类型是TF32,所述访存对齐值为8bit,所述整数部分包括16bit,所述余数部分包括3bit。
条款11、根据条款10所述的方法,其中所述数据的符号位包含在所述整数部分中。
条款12、一种数据存储装置,包括:
第一存储区域,配置用于存储数据的位数的整数部分,其中所述整数部分的位数对齐到访存对齐值;
第二存储区域,配置用于存储所述数据的位数的余数部分,其中所述余数部分的位数小于所述访存对齐值;
其中同一数据的整数部分对应的所述第一存储区域中的第一地址与余数部分对应的所述第二存储区域中的第二地址之间具有一一对应的映射关系。
条款13、根据条款12所述的装置,其中所述第一地址与所述第二地址之间的映射关系是预先设定的。
条款14、根据条款12所述的装置,其中所述第一地址与所述第二地址之间的映射关系是在存储所述数据时实时建立的,并通过地址表格进行维护。
条款15、根据条款12-14任一所述的装置,其中所述第一存储区域按所述访存对齐值进行寻址访存。
条款16、根据条款15所述的装置,其中所述第一存储区域位于已配备的按所述访存对齐值进行寻址访存的存储器中。
条款17、根据条款12-16任一所述的装置,其中所述第二存储区域按所述余数部分对齐进行寻址访存。
条款18、根据条款12-17任一所述的装置,其中所述数据的数据类型是TF32,所述访存对齐值为8bit,所述整数部分包括16bit,所述余数部分包括3bit。
条款19、根据条款18所述的装置,其中所述数据的符号位包含在所述整数部分中。
条款20、一种计算装置,包括根据条款12-19任一所述的数据存储装置。
条款21、一种芯片,包括根据条款20所述的计算装置。
条款22、一种板卡,包括根据条款21所述的芯片。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。

Claims (22)

1.一种数据存储方法,包括:
将所述数据的位数分成整数部分和余数部分,其中所述整数部分的位数对齐到访存对齐值,所述余数部分的位数小于所述访存对齐值;
将所述整数部分存储在第一存储区域的第一地址中;以及
将所述余数部分存储在第二存储区域的第二地址中,其中所述第二地址与所述第一地址具有一一对应的映射关系。
2.一种数据访问方法,包括:
从第一存储区域的第一地址中读取所述数据的位数的整数部分,其中所述整数部分的位数对齐到访存对齐值;
基于所述第一地址确定与之具有一一对应的映射关系的第二存储区域的第二地址;
从所述第二存储区域的第二地址中读取所述数据的位数的余数部分,其中所述余数部分的位数小于所述访存对齐值;以及
将所述整数部分与所述余数部分进行拼接,以组成所述数据。
3.一种数据运算方法,包括:
对待运算数据执行运算,得到中间运算结果;
将所述中间运算结果转换为指定类型的数据;以及
将所述指定类型的数据按照权利要求1所述的数据存储方法进行存储。
4.根据权利要求3所述的方法,还包括:
按照权利要求2所述的数据访问方法读取所述指定类型的数据;以及
利用所述指定类型的数据执行进一步的运算。
5.根据权利要求1-4任一所述的方法,其中所述第一地址与所述第二地址之间的映射关系是预先设定的。
6.根据权利要求1-4任一所述的方法,其中所述第一地址与所述第二地址之间的映射关系是在存储所述数据时实时建立的,并通过地址表格进行维护。
7.根据权利要求1-6任一所述的方法,其中所述第一存储区域按所述访存对齐值进行寻址访存。
8.根据权利要求7所述的方法,其中所述第一存储区域位于已配备的按所述访存对齐值进行寻址访存的存储器中。
9.根据权利要求1-8任一所述的方法,其中所述第二存储区域按所述余数部分对齐进行寻址访存。
10.根据权利要求1-9任一所述的方法,其中所述数据的数据类型是TF32,所述访存对齐值为8bit,所述整数部分包括16bit,所述余数部分包括3bit。
11.根据权利要求10所述的方法,其中所述数据的符号位包含在所述整数部分中。
12.一种数据存储装置,包括:
第一存储区域,配置用于存储数据的位数的整数部分,其中所述整数部分的位数对齐到访存对齐值;
第二存储区域,配置用于存储所述数据的位数的余数部分,其中所述余数部分的位数小于所述访存对齐值;
其中同一数据的整数部分对应的所述第一存储区域中的第一地址与余数部分对应的所述第二存储区域中的第二地址之间具有一一对应的映射关系。
13.根据权利要求12所述的装置,其中所述第一地址与所述第二地址之间的映射关系是预先设定的。
14.根据权利要求12所述的装置,其中所述第一地址与所述第二地址之间的映射关系是在存储所述数据时实时建立的,并通过地址表格进行维护。
15.根据权利要求12-14任一所述的装置,其中所述第一存储区域按所述访存对齐值进行寻址访存。
16.根据权利要求15所述的装置,其中所述第一存储区域位于已配备的按所述访存对齐值进行寻址访存的存储器中。
17.根据权利要求12-16任一所述的装置,其中所述第二存储区域按所述余数部分对齐进行寻址访存。
18.根据权利要求12-17任一所述的装置,其中所述数据的数据类型是TF32,所述访存对齐值为8bit,所述整数部分包括16bit,所述余数部分包括3bit。
19.根据权利要求18所述的装置,其中所述数据的符号位包含在所述整数部分中。
20.一种计算装置,包括根据权利要求12-19任一所述的数据存储装置。
21.一种芯片,包括根据权利要求20所述的计算装置。
22.一种板卡,包括根据权利要求21所述的芯片。
CN202210612510.9A 2022-05-31 2022-05-31 数据存储、访问、运算方法及相关产品 Pending CN117215475A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210612510.9A CN117215475A (zh) 2022-05-31 2022-05-31 数据存储、访问、运算方法及相关产品
PCT/CN2023/097456 WO2023232079A1 (zh) 2022-05-31 2023-05-31 数据存储、访问、运算方法及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210612510.9A CN117215475A (zh) 2022-05-31 2022-05-31 数据存储、访问、运算方法及相关产品

Publications (1)

Publication Number Publication Date
CN117215475A true CN117215475A (zh) 2023-12-12

Family

ID=89026967

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210612510.9A Pending CN117215475A (zh) 2022-05-31 2022-05-31 数据存储、访问、运算方法及相关产品

Country Status (2)

Country Link
CN (1) CN117215475A (zh)
WO (1) WO2023232079A1 (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102855194B (zh) * 2012-08-08 2015-05-13 北京君正集成电路股份有限公司 数据存储方法和存储器
KR20180023267A (ko) * 2016-08-25 2018-03-07 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
JP6995728B2 (ja) * 2018-09-28 2022-01-17 株式会社日立製作所 ストレージ装置、管理方法及びプログラム
CN113934362A (zh) * 2020-07-14 2022-01-14 腾讯科技(深圳)有限公司 数据存储方法、装置、计算机设备和存储介质
CN112416815B (zh) * 2020-12-09 2023-05-23 中船重工(武汉)凌久电子有限责任公司 一种基于srio的高速存储回放方法
CN113311993B (zh) * 2021-03-26 2024-04-26 阿里巴巴创新公司 数据存储方法及数据读取方法

Also Published As

Publication number Publication date
WO2023232079A1 (zh) 2023-12-07

Similar Documents

Publication Publication Date Title
CN111381871B (zh) 运算方法、装置及相关产品
CN117215475A (zh) 数据存储、访问、运算方法及相关产品
WO2023040389A1 (zh) 转数方法、存储介质、装置及板卡
CN112766475B (zh) 处理部件及人工智能处理器
US11836491B2 (en) Data processing method and apparatus, and related product for increased efficiency of tensor processing
CN115081603A (zh) 执行Winograd卷积的计算装置、集成电路装置及板卡
CN115081600A (zh) 执行Winograd卷积的变换单元、集成电路装置及板卡
CN112395003A (zh) 运算方法、装置及相关产品
CN111401536A (zh) 运算方法、装置及相关产品
CN112232498B (zh) 一种数据处理装置、集成电路芯片、电子设备、板卡和方法
CN111382851A (zh) 运算方法、装置及相关产品
CN112257843B (zh) 一种基于MobileNetV1网络推理任务的扩展指令集的系统
CN111078125B (zh) 运算方法、装置及相关产品
CN111079915B (zh) 运算方法、装置及相关产品
CN111079910B (zh) 运算方法、装置及相关产品
CN111026440B (zh) 运算方法、装置、计算机设备和存储介质
WO2022001438A1 (zh) 一种计算装置、集成电路芯片、板卡、设备和计算方法
CN111079914B (zh) 运算方法、系统及相关产品
CN111382390B (zh) 运算方法、装置及相关产品
CN115437693A (zh) 根据多操作指令及单操作指令运行的计算装置
CN111078283B (zh) 运算方法、装置及相关产品
CN111079907B (zh) 运算方法、装置及相关产品
CN117474054A (zh) 处理装置、芯片、板卡及数据输送方法
CN115081605A (zh) 暂存Winograd卷积中的神经元数据的缓存、装置与板卡
CN115081604A (zh) 暂存Winograd权值的缓存、计算装置、集成电路装置及板卡

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