CN112799726B - 数据处理装置、方法及相关产品 - Google Patents

数据处理装置、方法及相关产品 Download PDF

Info

Publication number
CN112799726B
CN112799726B CN202110105255.4A CN202110105255A CN112799726B CN 112799726 B CN112799726 B CN 112799726B CN 202110105255 A CN202110105255 A CN 202110105255A CN 112799726 B CN112799726 B CN 112799726B
Authority
CN
China
Prior art keywords
data
unit
storage unit
memory
processing
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.)
Active
Application number
CN202110105255.4A
Other languages
English (en)
Other versions
CN112799726A (zh
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 CN202110105255.4A priority Critical patent/CN112799726B/zh
Publication of CN112799726A publication Critical patent/CN112799726A/zh
Priority to PCT/CN2022/073524 priority patent/WO2022161318A1/zh
Priority to US18/226,202 priority patent/US20230367722A1/en
Application granted granted Critical
Publication of CN112799726B publication Critical patent/CN112799726B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1615Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using a concurrent pipeline structrure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions

Abstract

本披露公开了一种数据处理装置、方法及相关产品。该数据处理装置可以作为计算装置包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案充分利用不同存储单元之间的并行性,提升了各个功能部件的利用率。

Description

数据处理装置、方法及相关产品
技术领域
本披露一般地涉及数据处理领域。更具体地,本披露涉及一种数据处理装置、数据处理方法、芯片和板卡。
背景技术
在向量计算领域,流水技术发挥着重要的作用。现有的流水技术中,通常在处理单元的内部,按照时序从缓存单元中读取需要的数据到计算单元的内存中,与此同时,计算单元完成上一次读取数据的计算,如此循环往复,实现流水。通过这样的流水技术,能够实现缓存单元和计算单元间的并行处理,理论上能够实现最高50%的可观加速比。
更进一步地,在一些流水实验中,通过控制特定计算执行的次数来控制计算的比重,进而分析计算和缓存之间如何能够达到较高的并行度。
然而,上述技术中的流水只覆盖了处理单元中的计算和缓存,不能充分挖掘和发挥流水技术的效率提升作用和优化效果。
发明内容
为了至少解决如上所提到的一个或多个技术问题,本披露在多个方面中提出了支持数据级流水线的数据处理装置,该流水线除了覆盖计算和缓存之间的流水,还涉及缓存单元之间的流水。具体地,在不同层次的存储/缓存单元之间,通过合理划分空间,能够实现多级流水,从而将整个计算和缓存单元都纳入到流水过程中,实现更高性能的优化。
在第一方面中,本披露提供了一种数据处理装置,包括第一级存储单元、第二级存储单元和处理单元,其中:所述第二级存储单元划分成多个存储区,以配置成包括所述第一级存储单元、第二级存储单元和所述处理单元的数据级流水线,以支持所述第一级存储单元与所述第二级存储单元之间的并行处理以及所述处理单元与所述第一级存储单元和/或第二级存储单元之间的并行处理。
在第二方面中,本披露提供了一种芯片,其包括前述第一方面的任一实施例的数据处理装置。
在第三方面中,本披露提供了一种板卡,其包括前述第二方面的任一实施例的芯片。
在第四方面中,本披露提供了一种由数据处理装置实施的数据处理方法,所述数据处理装置包括第一级存储单元、第二级存储单元和处理单元,其中所述第二级存储单元划分成多个存储区,所述方法包括:构造包括所述第一级存储单元、第二级存储单元和所述处理单元的数据级流水线,在所述第一级存储单元与所述第二级存储单元之间进行并行处理以及在所述处理单元与所述第一级存储单元和/或第二级存储单元之间进行并行处理。
通过如上所提供的数据处理装置、芯片、板卡以及由数据处理装置实施的数据处理方法,本披露的方案通过将流水扩展到不同级别的存储单元之间,可以缩短处理时间,提升数据处理装置的性能表现。具体地,通过在不同层级的存储单元之间划分存储空间,可以实现存储单元之间的流水。在一些实施例中,可以充分利用存储单元的不同直接内存访问(DMA)接口之间的并行性,来缩短处理时间,提升性能。进一步地,本披露实施例提供的数据级流水还可以根据不同情况配置不同规模的流水线,从而灵活地适应于不同场景。此外,本披露实施例也适用于采用多核并行架构的现代处理器,在多核通信和/或多卡通信时,通过合理划分空间,可以实现核间的多级流水,从而优化处理器性能。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1是示出本公开实施例的板卡的结构图;
图2是示出本公开实施例的集成电路装置的结构图;
图3是示出本公开实施例的单核计算装置的内部结构示意图;
图4是示出本公开实施例的多核计算装置的内部结构示意图;
图5示例性示出CDMA的工作原理;
图6示出可以实施本披露实施例的数据处理装置的示意性结构图;
图7示出根据本披露实施例的存储单元的示例性空间划分;
图8示出根据本披露一个实施例的数据级流水线示例;
图9示出根据本披露另一实施例的数据级流水线示例;
图10示出根据本披露又一实施例的数据级流水线示例;
图11示出了4个集群构成的环状结构示例;以及
图12示出了根据本披露再一实施例的数据级流水线示例。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中可能使用的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
下面结合附图来详细描述本公开的具体实施方式。
图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为单核的内部结构示意图。单核计算装置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间的数据搬运。
在一些实现中,存储模块33可以包括多级存储单元,例如多级缓存,以便支持本披露实施例的数据级流水线。
图4示出了计算装置201为多核的内部结构示意图。多核计算装置400采用分层结构设计,多核计算装置400作为一个片上系统,其包括至少一个集群(cluster),每个集群又包括多个处理器核,换言之,多核计算装置400是以片上系统-集群-处理器核的层次所构成的。
以片上系统的层级来看,如图4所示,多核计算装置400包括外部存储控制器41、外设通信模块42、片上互联模块43、同步模块44以及多个集群45。
外部存储控制器41可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图2中的DRAM204,从而自片外读取数据或是将数据写入。外设通信模块42用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块43将外部存储控制器41、外设通信模块42及多个集群45连接起来,用以在各个模块间传输数据和控制信号。同步模块44是一种全局同步屏障控制器(global barrier controller,GBC),用以协调各集群的工作进度,确保信息的同步。多个集群45是多核计算装置400的计算核心,在图中示例性地展示4个,随着硬件的发展,本公开的多核计算装置400还可以包括8个、16个、64个、甚至更多的集群45。集群45用以高效地执行深度学习算法。
以集群的层级来看,如图4右上方所示,每个集群45包括处理单元402和存储核(MEM core)404。处理单元402执行各种计算任务。在一些实现中,处理单元可以是多核架构,例如包括多个处理核(IPU core)411-1~411-n,以完成诸如大规模向量计算任务。本公开不限制处理核411的数量。
处理核411的内部架构如图4下方所示。每个处理核411内可以具有多个用于执行计算任务的计算模块424-1~424-m,以及为执行计算任务所需要的本地存储模块423。需特别说明的是,本地存储模块423可以包括各种通信模块,以与外部存储单元进行数据交换。例如,本地存储模块423可以包括通信模块421,以与存储核404中的共享存储模块415通信。通信模块421例如可以是搬运直接内存访问模块(move direct memory access,MVDMA)。本地存储模块423还可以包括通信模块422,以与片外内存,例如DRAM 408进行数据交换。通信模块422例如可以是输入/输出直接内存访问模块(input/output direct memory access,IODMA)。IODMA 422控制本地存储模块423中的NRAM/WRAM(图4未示出,参见图3)与DRAM 408的访存;MVDMA 421则用以控制本地存储模块423中的NRAM/WRAM与共享存储模块415的访存。
继续图4右上方视图,存储核404主要用以存储和通信,即存储处理核411间的共享数据或中间结果、以及执行集群45与DRAM 408之间的通信、集群45间彼此的通信、处理核411间彼此的通信等。在其他实施例中,存储核404具有标量运算的能力,用以执行标量运算,以实现数据通信中的运算任务。
存储核404包括一个较大的共享存储模块(SRAM)415、广播总线414、集群直接内存访问模块(cluster direct memory access,CDMA)418、全局直接内存访问模块(globaldirect memory access,GDMA)416及通信时计算模块417。SRAM 415承担高性能数据中转站的角色,在同一个集群45内不同处理核411之间所复用的数据不需要通过处理核411各自向DRAM 408获得,而是经SRAM 415在处理核411间中转,存储核404只需要将复用的数据从SRAM 415迅速分发给多个处理核411即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。
广播总线414、CDMA 418及GDMA 416则分别用来执行处理核411间的通信、集群45间的通信和集群45与DRAM 408的数据传输。以下将分别说明。
广播总线414用以完成集群45内各处理核411间的高速通信,此实施例的广播总线414支持核间通信方式包括单播、多播与广播。单播是指点对点(例如单一处理核至单一处理核)的数据传输,多播是将一份数据从SRAM 415传输到特定几个处理核411的通信方式,而广播则是将一份数据从SRAM 415传输到所有处理核411的通信方式,属于多播的一种特例。
CDMA 418用以控制在同一个计算装置201内不同集群45间的SRAM415的访存。
GDMA 416与外部存储控制器41协同,用以控制集群45的SRAM 415到DRAM 408的访存,或是将数据自DRAM 408读取至SRAM 415中。从前述可知,DRAM 408与本地存储模块423中的NRAM/WRAM间的通信可以经由2个渠道来实现。第一个渠道是通过IODMA 422直接联系DRAM 408与本地存储模块423;第二个渠道是先经由GDMA 416使得数据在DRAM 408与SRAM415间传输,再经过MVDMA 421使得数据在SRAM 415与本地存储模块423间传输。虽然表面上看来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此DRAM 408与本地存储模块423间的通信通过第二个渠道可能更有效率。本公开的实施例可根据本身硬件条件选择数据传输渠道。
在一些实施例中,存储核404可以作为集群45内的一个缓存层级,大到拓宽通信带宽的作用。进一步地,存储核404还可以完成与其他集群45之间的通信。存储核404例如能够实现集群45之间的广播(Broadcast)、撒播(Scatter)、收集(Gather)、规约(Reduce)和全规约(All-reduce)等通信功能。其中,广播是指将同一份数据分发广播给所有集群;撒播是指将不同数据分发给不同的集群;收集是指将多个集群的数据会聚在一起;规约是指将多个集群中的数据按照指定的映射函数进行运算得到最后的结果发送给某个集群;而全规约与规约的区别在于后者最后的结果只发送给一个集群,而全规约需要发送给所有集群。
通信时计算模块417可以用于在通信过程中完成例如上述规约、全规约等通信中的计算任务,而不需要借助处理单元402,从而提升通信效率,达到“存算一体”的效果。取决于不同的硬件实现,通信时计算模块417和共享存储模块415可以整合在相同或不同部件中,本披露实施例在此方面没有限制,只要其实现的功能以及达到的技术效果与本披露类似,均属于本披露的保护范围。
图5示出当一个处理器核欲将数据写入至另一个集群的处理器核时的示意图,以说明CDMA 418的工作原理。在此应用场景中,同一个计算装置包括多个集群,为方便说明,图中仅展示集群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中读取出来。
本披露实施例基于前述硬件环境,提供一种支持数据级流水线的数据处理方案,更具体地,该流水线覆盖存储单元之间的流水,从而有效提升流水线上各个功能部件的利用率。
图6示出了可以实施本披露实施例的数据级流水线的数据处理装置的示例性结构图。如图所示,数据处理装置600包括第一级存储单元610、第二级存储单元620和处理单元630。
第一级存储单元610可以用于存储相关数据,例如供处理单元630执行各种计算处理的输入数据,以及处理单元630执行计算处理后得到的结果,也即输出数据。
在一些实施例中,例如单核处理器中,第一级存储单元610可以是片外内存DDR,例如图2中的DRAM 204。在另一些实施例中,例如多核处理器中,第一级存储单元610可以是片外内存DDR,例如图2中的DRAM204或图4中的DRAM 408;第一级存储单元610也可以是其他集群的存储核,例如图4中其他集群内的存储核404。
第二级存储单元620可以用于存储或搬运相关数据。在一些实施例中,例如单核处理器中,第二级存储单元620可以是缓存单元。在另一些实施例中,例如多核处理器中,第二级存储单元620可以是由若干处理单元630构成的集群所使用的共享存储单元,例如图4中的集群45内的存储核404。
处理单元630负责处理数据处理装置600上的各种功能,包括但不限于控制、解码、运算等。处理单元630例如可以包括图3中的控制模块31运算模块32、和/或存储模块33。
在一些实施例中,处理单元630可以至少包括本地存储单元631和计算单元632。
本地存储单元631可以用于存储或搬运相关数据,其例如可以是图3所示的各种RAM。
计算单元632可以用于执行各种计算任务。在单核架构中,其例如包括图3所示的向量运算单元321及矩阵运算单元322。在多核架构中,其例如包括图4所示的多个计算模块424,每个计算模块424中又可以包括各种运算单元,诸如向量运算单元、矩阵运算单元等等。
第一级存储单元610与第二级存储单元620之间可以通过第一直接内存访问(DMA)接口来实现数据交换或数据通信。例如,在第一级存储单元610是片外内存DDR、第二级存储单元620是共享存储单元的情况下,第一DMA接口可以是GDMA接口。又例如,在第一级存储单元610是其他集群的共享存储单元、第二级存储单元620是当前集群的共享存储单元的情况下,第一DMA接口可以是CDMA接口。
第二级存储单元620与处理单元630之间,更具体地,是与处理单元630中的本地存储单元631之间,可以通过第二DMA接口来实现数据交换或数据通信。例如,在第二级存储单元620是共享存储单元的情况下,第二DMA接口可以是MVDMA接口。
在一些实施例中,处理单元630与第一级存储单元610之间可以存在第三DMA接口。例如,在第一级存储单元610是片外内存的情况下,第三DMA接口可以是IODMA接口。
从上面的描述可知,第二级存储单元620与处理单元630之间支持并行处理,并且不同功能单元之间的数据通信可以通过不同的DMA接口来实现,由此可以充分利用并行性来实现数据级流水线。
在一些实施例中,第二级存储单元620可以划分成多个存储区,从而可以配置包括第一级存储单元610、第二级存储单元620和处理单元630的数据级流水线。在该数据级流水线中,第一级存储单元610与第二级存储单元之间可以并行处理,并且处理单元630与第一级存储单元610和/或第二级存储单元620之间可以并行处理。
更具体地,在一些实现中,第二级存储单元620可以配置有至少两个存储区,用以支持在通过第一DMA接口在其中一个存储区与第一级存储单元610之间进行数据访存的同时,通过不同于第一DMA接口的第二DMA接口在另一存储区与处理单元630之间进行数据访存。所配置的每个存储区可以用于分时存储输入数据块以及对应的输出数据块。
可选地或附加地,在一些实施例中,处理单元630中包括的本地存储单元也可以纳入在流水线中,从而配置成包括第一级存储单元610、第二级存储单元620、本地存储单元631和计算单元632的数据级流水线。在该流水线中,第一级存储单元610、第二级存储单元620、本地存储单元631之间均可以并行处理,并且计算单元632与第一级存储单元610、第二级存储单元620和/或本地存储单元631之间也均可以并行处理。
更具体地,在一些实现中,本地存储单元631配置有多个存储区,用以支持在通过第二DMA接口在其中一个存储区与第二级存储单元(例如共享存储单元)之间进行数据访存的同时,由计算单元632对另一存储区的数据执行计算处理。本地存储单元631中所配置的每个存储区用于分时存储输入数据块和作为计算处理结果的输出数据块。
进一步地,在一些需要缓存的计算处理中,本地存储单元还可以配置有计算缓存区,用以供计算单元632的计算处理临时存储数据。
下面基于图6所示的数据处理装置,结合几个示例性数据级流水线进行描述,以更好地理解本披露实施例的方案。
图7示出了根据本披露实施例的存储单元的示例性空间划分。如图所示,在一些实施例中,第一级存储单元610主要用于保存需要完成计算的输入数据以及作为这些输入数据的计算结果的输出数据。在一些情况下,输入数据规模较大,因此可以根据流水线上后续存储单元(例如,第二级存储单元620、本地存储单元631等)的存储能力,将输入数据拆分成多个输入数据块。在图中示例性拆分为n块,即D0、D1、D2、…、Dn。相应地,为计算结果划分相应的存储空间,以分别存储对应输入数据块的计算结果,例如O0、O1、O2、…、On。
在一些实施例中,第二级存储单元620在数据级流水线中作为缓存层级使用,因此可以配置两块存储空间或存储区,图中示例性表示为Buf20和Buf21。Buf20和Buf21可以称为一个二元存储区。
进一步地,在一些实施例中,本地存储单元631也可以进行空间拆分。例如,本地存储单元631可以配置有两块存储空间或存储区,以完成流水的输入输出缓存,图中示例性表示为Buf30和Buf31。此外,考虑到本地存储单元631在数据级流水线中不仅缓存数据,还要完成计算任务,因此,基于计算任务的缓存需求,在一些实现中,本地存储单元631还可以配置一块计算缓存区,用于供计算单元在执行计算处理中临时存储数据,图中示例性表示为compute_buf。Buf30、Buf31和compute_buf可以称为一个三元存储区。
图8示出根据本披露一个实施例的数据级流水线示例。在此实施例中,数据级流水线包括第一级存储单元610、第二级存储单元620、本地存储单元631和计算单元632。进一步地,第一级存储单元610、第二级存储单元620和本地存储单元631按照图7所示进行了存储空间划分。
如图所示,左侧示出了时间线,各步骤按时间顺序流动。为了简化起见,在此图中未示出第一级存储单元610中的空间划分。
在步骤S11中,数据块D0从第一级存储单元中经由第一DMA接口加载(L)或读取到第二级存储单元的存储区Buf20中。
在步骤S12中,数据块D0从第二级存储单元的存储区Buf20中经由第二DMA接口加载(L)或读取到本地存储单元的存储区Buf30中。与此同时,数据块D1从第一级存储单元中经由第一DMA接口加载(L)到第二级存储单元的存储区Buf21中。由于第二级存储单元拆分了存储区Buf20和Buf21,二者不重叠,因此并行访存不会导致内存覆盖。而且,两个加载动作是经由不同的DMA进行,也不会存在带宽竞争或冲突的问题。
在步骤S13中,数据块D0在计算单元632中完成计算(C),并生成计算结果O0,计算结果O0作为D0对应的输出数据块存放在本地存储单元631的存储区Buf30中。与此同时,数据块D1从第二级存储单元的存储区Buf21中经由第二DMA接口加载(L)或读取到本地存储单元的存储区Buf31中。由于本地存储单元也配置了存储区Buf30和Buf31,二者不重叠,因此并行访存不会导致内存覆盖。
在步骤S14中,将本地存储单元631的存储区Buf30中的数据块D0的计算结果O0经由第二DMA接口存入(S)到第二级存储单元的存储区Buf20中。与此同时,数据块D1在计算单元632中完成计算(C),并生成计算结果O1,计算结果O1作为D1对应的输出数据块存放在本地存储单元631的存储区Buf31中。
在步骤S15中,将第二级存储单元620的存储区Buf20中的输出数据块O0经由第一DMA接口存入(S)到第一级存储单元的相应计算结果存储空间中,由此完成数据块D0的计算。与此同时,将本地存储单元631的存储区Buf31中的数据块D1的计算结果O1经由第二DMA接口存入(S)到第二级存储单元的存储区Buf21中。
最后,在步骤S16中,将第二级存储单元620的存储区Buf21中的输出数据块O1经由第一DMA接口存入(S)到第一级存储单元的相应计算结果存储空间中,由此完成数据块D1的计算。
从上面的数据级流水线可以看出,通过拆分第二级存储单元和本地存储单元,以支持各级存储单元之间的并行处理以及计算单元与各存储单元之间的并行处理,仅需通过6个步骤就可以完成2个数据块的计算任务。依次循环上述步骤,可以完成所有数据块的计算。此时,当存在n个数据块时(n为偶数),可以通过3n个步骤来完成计算任务。与之相比,当采用顺序执行,单个数据块的计算任务需要5个步骤(例如图中示出的LLCSS操作),那么n个数据块就需要5n个步骤来完成计算任务。由此可见,本披露实施例的数据级流水可以缩短处理时间,提升处理效率。
本披露实施例的数据级流水线可以根据不同情况配置不同规模的流水线,从而灵活地适应于不同场景。
图9示出根据本披露另一实施例的数据级流水线示例。此实施例适用于数据的IO量比较大,但实际计算量比较小的情况。在此实施例中,数据级流水线包括第一级存储单元610、第二级存储单元620和处理单元630。与图8的流水线相比,图9的流水线不对处理单元630的本地存储单元631进行拆分,而是在运行时,将处理单元630中的数据存取和计算视为一个步骤。第一级存储单元610和第二级存储单元620按照图7所示进行了存储空间划分。
与图8类似地,图9左侧示出了时间线,各步骤按时间顺序流动。
在步骤S21中,数据块D0从第一级存储单元中经由第一DMA接口加载(L)到第二级存储单元的存储区Buf20中。
在步骤S22中,数据块D0从第二级存储单元的存储区Buf20中经由第二DMA接口加载到处理单元630并执行计算任务(C),生成的计算结果O0存放在第二级存储单元的存储区Buf20中。如前面所提到,处理单元中的数据存取和计算视为一个步骤,因此,尽管数据存取操作由处理单元中的本地存储单元631来执行,计算操作由处理单元中的计算单元632来执行,但是在此不进行细分,可以统一由“C”来表示。与此同时,数据块D1从第一级存储单元中经由第一DMA接口加载(L)到第二级存储单元的存储区Buf21中。同样地,由于第二级存储单元拆分了存储区Buf20和Buf21,二者不重叠,因此并行访存不会导致内存覆盖。而且,两个加载动作是经由不同的DMA进行,也不会存在带宽竞争或冲突的问题。
在步骤S23中,数据块D1从第二级存储单元的存储区Buf21中经由第二DMA接口加载到处理单元630并执行计算任务(C),生成的计算结果O1存放在第二级存储单元的存储区Buf21中。与此同时,数据块D0对应的输出数据O0从第二级存储单元的存储区Buf20中经由第一DMA接口存入(S)到第一级存储单元的对应计算结果存储空间中,由此完成数据块D0的计算。
最后,在步骤S26中,将第二级存储单元620的存储区Buf21中的输出数据块O1经由第一DMA接口存入(S)到第一级存储单元的相应计算结果存储空间中,由此完成数据块D1的计算。
从上面的数据级流水线可以看出,通过只拆分第二级存储单元,即可支持第二级存储单元与第一级存储单元之间的并行处理以及计算单元与第二级存储单元之间的并行处理,仅需通过4个步骤就可以完成2个数据块的计算任务。依次循环上述步骤,可以完成所有数据块的计算。此时,当存在n个数据块时(n为偶数),可以通过2n个步骤来完成计算任务。与之相比,当采用顺序执行,单个数据块的计算任务需要3个步骤(例如图中示出的LCS操作),那么n个数据块就需要3n个步骤来完成计算任务。由此可见,本披露实施例的数据级流水可以缩短处理时间,提升处理效率。此实施例尤其适用于数据IO量比较大,但实际计算量比较小的情况。并且,通过将处理单元上的存取和计算合并,可以更简洁地达到时间掩盖的目的。
图10示出根据本披露又一实施例的数据级流水线示例。此实施例适用于计算结果规模较小的情况。类似于图8的实施例,数据级流水线包括第一级存储单元610、第二级存储单元620、本地存储单元631和计算单元632。与图8的不同之处在于,计算结果可以直接通过本地存储单元631经由第三DMA接口存储到第一级存储单元610中,此时第一级存储单元610可以是片外内存。
与图8类似地,图10左侧示出了时间线,各步骤按时间顺序流动。步骤S31、S32和S33与图8的步骤S11、S12和S13相同,此处不再重复。
在步骤S34中,由于计算结果的规模较小,因此本地存储单元631的存储区Buf30中的数据块D0的计算结果O0直接经由第三DMA接口存入(S)到第一级存储单元的相应计算结果存储空间中,由此完成数据块D0的计算。与此同时,数据块D1在计算单元632中完成计算(C),并生成计算结果O1,计算结果O1作为D1对应的输出数据块存放在本地存储单元631的存储区Buf31中。
此时,由于第二级存储单元620不需要缓存数据块D0的对应计算结果,因此,第二级存储单元620的存储区Buf20可以再次使用,而不会导致内存覆盖。具体地,在步骤S34中,还可以同时将数据块D2加载到第二级存储单元的存储区Buf20中。
在步骤S35中,本地存储单元631的存储区Buf31中的数据块D1的计算结果O0可以直接经由第三DMA接口存入(S)到第一级存储单元的相应计算结果存储空间中,由此完成数据块D1的计算。与此同时,数据块D2从第二级存储单元的存储区Buf20中经由第二DMA接口加载(L)到本地存储单元的存储区Buf30中。同样地,由于第二级存储单元620不需要缓存数据块D1的对应计算结果,因此,第二级存储单元620的存储区Buf21可以再次使用,而不会导致内存覆盖。具体地,在步骤S35中,还可以同时将数据块D3将在到第二级存储单元的存储区Buf21中。
如此,可以依次循环上面的步骤S33到步骤S35。图中进一步示出了后续的步骤S36-S38,可以看出,步骤S36-S38与步骤S33-S35完全对应。
从上面的数据级流水线可以看出,通过将计算结果直接从本地存储单元存入到外部的第一级存储单元,可以进一步缩短处理时间,提高流水线的并行效率。具体地,与图8的流水线相比,图10的流水线可以更早地重复使用第二级存储单元,而无需等到两个数据块的计算全部完成,因为其无需缓存作为计算结果的输出数据。虽然在图10中示例性示出了从步骤S34开始重复使用第二级存储单元,但是从整个处理流程可以看出,在步骤S33中即可以开始复用第二级存储单元,本领域技术人员根据具体实践可以相应调整每个步骤的操作内容,本披露实施例在此方面没有限制。
进一步地,从图10的流水线可以看出,当采用顺序执行,单个数据块的计算任务需要4个步骤(例如图中示出的LLCS操作),那么n个数据块就需要4n个步骤来完成计算任务。与之相比,当图10的流水线循环处理时,对于n个数据块(n为偶数),仅需通过2+3n/2个步骤就可以完成计算任务。由此可见,本披露实施例的数据级流水可以缩短处理时间,提升处理效率。
由此可见,当计算结果的输出数据块规模较小时,例如小于预定值时,通过直接经由第三DMA接口将计算结果存入第一级存储单元,可以简化流水线,并进一步提升处理效率。该预定值例如可以根据第三DMA接口的带宽来确定。
从图10的实施例可以看出,第三DMA接口在预定条件下可以分担或减轻第二级存储单元的缓存负担,例如将计算结果不经过第二级存储单元,直接存入片外内存。可选地或附加地,在一些实施例中,当第二级存储单元被占用或繁忙时,也可以通过第三DMA接口来从第一级存储单元直接读取数据块至本地存储单元,从而加速数据获取。
在一些实施例中,例如基于图4的多核架构,数据级流水线可以扩展到集群之间。集群之间可以通过不同的拓扑结构进行拓展,如环状结构、网状结构等。
图11示出了4个集群构成的环状结构。与单个集群相比,多个集群组成的结构由于每个集群中存储核1104的存在,流水线可以拓展到集群之间。此方案尤其适合于矩阵乘或卷积之类运算。例如在神经网络模型的计算过程中,权值可以拆分到多个集群中,输入数据在每个集群的存储核1104中进行流转遍历,在处理核1111上完成计算,从而实现本披露实施例的数据级流水线。这种在集群之间的流水线可以尽可能减少和片外内存1108的交互,避开IO瓶颈。
在一种实现中,这种数据流水线可以实现为包含多步计算的流水线。例如,以实现两步计算的流水线为例。在执行例如矩阵乘法运算时,可以对权值进行纵向拆分,针对拆分的权值块执行完矩阵乘法运算之后,需要进行规约处理。在此场景中,处理核1111可以分两步来完成矩阵乘和数据规约处理,也即包含两步计算。
更具体地,对于执行矩阵乘法运算的每个处理核1111而言,其在执行矩阵乘法运算时以类似于图8的流水线的方式执行计算任务,只是每个处理核1111的执行矩阵乘法运算后的计算结果只存入存储核1104中,而不继续存入到片外内存1108中。上述过程可以用缩写表示为LLCS。进一步地,对于执行数据规约处理的处理核1111(其可能是上面执行矩阵乘法运算的任一或指定处理核)而言,其将再次从存储核1104中加载(L)待规约的数据至本地存储单元中,并执行相应的规约处理(C)。最后,规约处理的结果经由存储核1104(S),存入(S)片外内存1108中。因此,从既执行矩阵乘法运算又执行数据规约处理的处理核1111来看,其过程可以缩写为LLCSLCSS。当然,如果规约处理结果规模较小,也可以参考图10的实施例,直接从处理核1111存入到片外内存1108中,此时过程可以表示为LLCSLCS。
在一些实施例中,当从存储核1104转发的数据需要进行计算处理时,例如前面提到的reduce或all-reduce通信,可以利用存储核1104中的运算单元(未示出,例如图4中的通信时计算模块417)来执行相应的运算处理,从而达到“存算一体”的效果。
可选地或附加地,当存储核1104繁忙或被占用时,还可以通过IODMA接口进行权值和输入数据的预取,从而充分利用不同DMA之间的并行性。对于多数情况下以IO为瓶颈的机器学习处理器,这种预取方式具有普通意义。
上面描述了几种不同规模的数据级流水线,本领域技术人员可以理解,根据具体的应用实践,前述流水线的步骤可以灵活地进行各种调整,例如增加、减少、组合步骤等等,以适应不同的场景。
从上面的几种数据级流水线还可以看出,通过划分存储单元的存储空间,可以支持缓存级别的并行处理,从而将存储单元纳入流水线中。当存在多个并行任务时,例如图4中的多个计算模块424需要并行执行计算处理,此时可以针对每个任务配置相应的数据级流水线。例如,在一些实施例中,可以将本地存储模块的存储空间划分成多个三元存储区,每个三元存储区包括两个输入输出缓存区和一个计算缓存区。每一个三元存储区可以供一个计算模块的计算任务使用。相应地,存储核404中的共享存储模块也可以配置多个二元存储区,每个二元存储区包括两个输入输出缓存区。每一个二元存储区可以供对应的一个计算模块的计算任务使用。
在一些实施例中,存储单元的空间划分也可以不限于图7所示的示例。例如,从图8的流水线可以看出,在步骤S13、S14中,第一DMA接口上没有数据传输,而在步骤S15和S16中,计算单元是空闲的。鉴于此,可以对存储单元的空间划分进行适当调整,以提高流水线的并行度。
图12示出根据本披露再一实施例的数据级流水线示例。此实施例与图8实施例的区别在于,第二级存储单元620拆分成三个存储区Buf20、Buf21和Buf22,其余配置与图8相同。
与图8类似地,图12左侧示出了时间线,各步骤按时间顺序流动。步骤S41、S42和S43与图8的步骤S11、S12和S13相同,此处不再重复。
在步骤S44中,由于第二级存储单元620拆分了三个存储区,因此,此时还可以将数据块D2从第一级存储单元加载到第二级存储单元的存储区Buf22中,而不会产生内存覆盖。与此同时,还可以同步执行与图8的步骤S14相同的操作。也即,将本地存储单元631的存储区Buf30中的计算结果O0经由第二DMA接口存入(S)到第二级存储单元的存储区Buf20中。同时,数据块D1在计算单元632中完成计算(C),并生成计算结果O1存放在本地存储单元631的存储区Buf31中。
在步骤S45中,将第二级存储单元620的存储区Buf22中的数据块D2经由第二DMA加载到本地存储单元631的Buf30中。同时,将第二级存储单元的存储区Buf20中的计算结果O0存入到第一级存储单元的对应存储空间中。
在步骤S46中,可以与步骤S44类似,同时进行三个操作:将数据块D3从第一级存储单元加载到第二级存储单元的Buf20中;将本地存储单元的Buf31中的计算结果O1存入到第二级存储单元的Buf21中;以及在计算单元中对D2进行计算并产生计算结果O2,存放在本地存储单元的存储区Buf30中。
步骤S47与步骤S45类似。由此可以看出,后续步骤是依次循环步骤S44和S45。图中进一步示出了后续的步骤S48-S49,可以看出,步骤S48-S49与步骤S44-S45完全对应。
从上面的数据级流水线可以看出,通过将第二级存储单元拆分成三个存储区,可以进一步挖掘流水线中的并行潜力。具体地,与图8的流水线相比,图12的流水线可以更早地重复使用第二级存储单元,而无需等到两个数据块的计算全部完成,因为其增加了一个存储区。虽然在图12中示例性示出了从步骤S44开始向第二级存储单元的存储区Buf33加载数据,但是从整个处理流程可以看出,在步骤S43中即可以开始向Buf33中加载数据,本领域技术人员根据具体实践可以相应调整每个步骤的操作内容,本披露实施例在此方面没有限制。
进一步地,从图12的流水线可以看出,当采用顺序执行,单个数据块的计算任务需要5个步骤(例如图中示出的LLCSS操作),那么n个数据块就需要5n个步骤来完成计算任务。与之相比,当图12的流水线循环处理时,对于n个数据块,仅需通过3+2n个步骤就可以完成计算任务。由此可见,本披露实施例的数据级流水可以缩短处理时间,提升处理效率。
本披露实施例还提供了利用数据级流水线来执行计算任务的数据处理方法。本领域技术人员可以理解,前面结合附图描述的本披露实施例的数据处理装置、数据级流水线等特征可以同样应用于本披露的数据处理方法中,因此不再进行重复描述。
本披露实施例还提供了一种芯片,其可以包括前面结合附图描述的任一实施例的数据处理装置。进一步地,本披露实施例还提供了一种板卡,该板卡可以包括前述芯片。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如CPU、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等。
虽然本文已经示出和描述了本披露的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本披露思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本披露的过程中,可以采用对本文所描述的本披露实施例的各种替代方案。所附权利要求书旨在限定本披露的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。

Claims (22)

1.一种数据处理装置,包括第一级存储单元、第二级存储单元和处理单元,其中:
所述处理单元包括本地存储单元和计算单元,以配置成包括所述第一级存储单元、第二级存储单元、所述本地存储单元和所述计算单元的数据级流水线;其中,所述本地存储单元配置有多个存储区,用以支持在通过第二DMA接口在其中一个存储区与所述第二级存储单元之间进行数据访存的同时,由所述计算单元对另一存储区的数据执行计算处理;
所述第二级存储单元划分成多个存储区,其中,所述第二级存储单元配置有至少两个存储区,其中所述存储区用于分时存储输入数据块以及对应的输出数据块,用以支持在通过第一DMA接口在其中一个存储区与所述第一级存储单元之间进行数据访存的同时,通过不同于所述第一DMA接口的第二DMA接口在另一存储区与所述处理单元之间进行数据访存,以配置成包括所述第一级存储单元、第二级存储单元和所述处理单元的数据级流水线,以支持所述第一级存储单元与所述第二级存储单元之间的并行处理以及所述处理单元与所述第一级存储单元和/或第二级存储单元之间的并行处理。
2.根据权利要求1所述的数据处理装置,其中所述第二级存储单元包括由若干所述处理单元构成的集群使用的共享存储单元。
3.根据权利要求1所述的数据处理装置,其中所述本地存储单元中的所述存储区用于分时存储输入数据块和作为所述计算处理结果的输出数据块。
4.根据权利要求1-3任一所述的数据处理装置,其中所述本地存储单元还配置有计算缓存区,用以供所述计算处理临时存储数据。
5.根据权利要求1-4任一所述的数据处理装置,其中所述第一级存储单元包括片外内存,并且所述第一DMA接口包括全局直接内存访问GDMA接口,所述片外内存配置有输入数据存储区和输出数据存储区。
6.根据权利要求5所述的数据处理装置,其中所述处理单元进一步配置成在预定条件下通过第三DMA接口与所述第一级存储单元进行数据访存。
7.根据权利要求6所述的数据处理装置,其中所述处理单元进一步配置成:
当计算处理的输出数据块小于预定值时,通过第三DMA接口将所述输出数据块存储到所述第一级存储单元中;和/或
当所述第二级存储单元被占用时,通过第三DMA接口从所述第一级存储单元读取输入数据块。
8.根据权利要求7所述的数据处理装置,其中所述第三DMA接口包括输入/输出直接内存访问IODMA接口。
9.根据权利要求1-4任一所述的数据处理装置,其中所述第一级存储单元包括另一集群的共享存储单元,并且所述第一DMA接口包括集群直接内存访问CDMA接口。
10.根据权利要求1-9任一所述的数据处理装置,其中所述第二级存储单元还包括运算单元,用于对所存储的数据执行数据通信中的运算处理。
11.一种芯片,其特征在于,所述芯片包括如权利要求1-10任一所述的数据处理装置。
12.一种板卡,其特征在于,所述板卡包括权利要求11所述的芯片。
13.一种由数据处理装置实施的数据处理方法,所述数据处理装置包括第一级存储单元、第二级存储单元和处理单元,其中所述处理单元包括本地存储单元和计算单元,所述本地存储单元配置有多个存储区,所述第二级存储单元划分成多个存储区,其中所述存储区用于分时存储输入数据块以及对应的输出数据块,所述方法包括:
构造包括所述第一级存储单元、第二级存储单元、所述本地存储单元和所述计算单元的数据级流水线,在通过第一DMA接口在其中一个存储区与所述第一级存储单元之间进行数据访存的同时,通过不同于所述第一DMA接口的第二DMA接口在另一存储区与所述处理单元之间进行数据访存,在通过第二DMA接口在其中一个存储区与所述第二级存储单元之间进行数据访存的同时,由所述计算单元对另一存储区的数据执行计算处理,以在所述第一级存储单元与所述第二级存储单元之间进行并行处理以及在所述处理单元与所述第一级存储单元和/或第二级存储单元之间进行并行处理。
14.根据权利要求13所述的数据处理方法,其中所述第二级存储单元包括由若干所述处理单元构成的集群使用的共享存储单元。
15.根据权利要求13所述的数据处理方法,其中所述本地存储单元中的所述存储区用于分时存储输入数据块和作为所述计算处理结果的输出数据块。
16.根据权利要求13-15任一所述的数据处理方法,其中所述本地存储单元还配置有计算缓存区,并且所述方法包括:
所述计算单元在执行计算处理时在所述计算缓存区临时存储数据。
17.根据权利要求13-16任一所述的数据处理方法,其中所述第一级存储单元包括片外内存,并且所述第一DMA接口包括全局直接内存访问GDMA接口,所述片外内存配置有输入数据存储区和输出数据存储区。
18.根据权利要求17所述的数据处理方法,进一步包括:
所述处理单元在预定条件下通过第三DMA接口与所述第一级存储单元进行数据访存。
19.根据权利要求18所述的数据处理方法,进一步包括:
当计算处理的输出数据块小于预定值时,所述处理单元通过第三DMA接口将所述输出数据块存储到所述第一级存储单元中;和/或
当所述第二级存储单元被占用时,所述处理单元通过第三DMA接口从所述第一级存储单元读取输入数据块。
20.根据权利要求19所述的数据处理方法,其中所述第三DMA接口包括输入/输出直接内存访问IODMA接口。
21.根据权利要求13-16任一所述的数据处理方法,其中所述第一级存储单元包括另一集群的共享存储单元,并且所述第一DMA接口包括集群直接内存访问CDMA接口。
22.根据权利要求13-21任一所述的数据处理方法,其中所述第二级存储单元还包括运算单元,并且所述方法包括:
所述第二级存储单元根据通信功能对接收到的数据执行相关的运算处理。
CN202110105255.4A 2021-01-26 2021-01-26 数据处理装置、方法及相关产品 Active CN112799726B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202110105255.4A CN112799726B (zh) 2021-01-26 2021-01-26 数据处理装置、方法及相关产品
PCT/CN2022/073524 WO2022161318A1 (zh) 2021-01-26 2022-01-24 数据处理装置、方法及相关产品
US18/226,202 US20230367722A1 (en) 2021-01-26 2023-07-25 Data processing device and method, and related products

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110105255.4A CN112799726B (zh) 2021-01-26 2021-01-26 数据处理装置、方法及相关产品

Publications (2)

Publication Number Publication Date
CN112799726A CN112799726A (zh) 2021-05-14
CN112799726B true CN112799726B (zh) 2024-01-30

Family

ID=75811881

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110105255.4A Active CN112799726B (zh) 2021-01-26 2021-01-26 数据处理装置、方法及相关产品

Country Status (3)

Country Link
US (1) US20230367722A1 (zh)
CN (1) CN112799726B (zh)
WO (1) WO2022161318A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112799726B (zh) * 2021-01-26 2024-01-30 上海寒武纪信息科技有限公司 数据处理装置、方法及相关产品
CN113238975A (zh) * 2021-06-08 2021-08-10 中科寒武纪科技股份有限公司 优化深度神经网络的参数的内存、集成电路及板卡
CN113469327B (zh) * 2021-06-24 2024-04-05 上海寒武纪信息科技有限公司 执行转数提前的集成电路装置
CN113238977A (zh) * 2021-07-12 2021-08-10 深之蓝(天津)水下智能科技有限公司 数据传输方法、装置、系统、电子设备及存储介质
CN113746471A (zh) * 2021-09-10 2021-12-03 中科寒武纪科技股份有限公司 运算电路、芯片和板卡
CN116431561B (zh) * 2023-06-12 2023-08-18 太初(无锡)电子科技有限公司 基于异构众核加速卡的数据同步方法、装置、设备及介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101888554A (zh) * 2010-07-09 2010-11-17 西安交通大学 并行流水运动补偿滤波器vlsi结构设计方法
WO2015004421A1 (en) * 2013-07-08 2015-01-15 Qatar Foundation A method of performing a matrix operation in a distributed processing system
CN104699631A (zh) * 2015-03-26 2015-06-10 中国人民解放军国防科学技术大学 Gpdsp中多层次协同与共享的存储装置和访存方法
CN107066239A (zh) * 2017-03-01 2017-08-18 智擎信息系统(上海)有限公司 一种实现卷积神经网络前向计算的硬件结构
CN108446758A (zh) * 2018-02-11 2018-08-24 江苏金羿智芯科技有限公司 一种面向人工智能计算的神经网络数据串行流水处理方法
CN108491924A (zh) * 2018-02-11 2018-09-04 江苏金羿智芯科技有限公司 一种面向人工智能计算的神经网络数据串行流水处理装置
CN108647155A (zh) * 2018-05-14 2018-10-12 福州瑞芯微电子股份有限公司 一种基于深度学习的多级cache共享的方法和装置
CN109032781A (zh) * 2018-07-13 2018-12-18 重庆邮电大学 一种卷积神经网络算法的fpga并行系统
CN111596886A (zh) * 2019-02-21 2020-08-28 超威半导体公司 混合矩阵乘法流水线
CN111784557A (zh) * 2020-06-30 2020-10-16 安徽寒武纪信息科技有限公司 一种处理图像数据的方法、装置、板卡及可读存储介质
CN111797034A (zh) * 2020-06-24 2020-10-20 深圳云天励飞技术有限公司 一种数据管理方法、神经网络处理器和终端设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9645819B2 (en) * 2012-06-15 2017-05-09 Intel Corporation Method and apparatus for reducing area and complexity of instruction wakeup logic in a multi-strand out-of-order processor
US10623386B1 (en) * 2012-09-26 2020-04-14 Pure Storage, Inc. Secret sharing data protection in a storage system
US11373088B2 (en) * 2017-12-30 2022-06-28 Intel Corporation Machine learning accelerator mechanism
CN112799726B (zh) * 2021-01-26 2024-01-30 上海寒武纪信息科技有限公司 数据处理装置、方法及相关产品

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101888554A (zh) * 2010-07-09 2010-11-17 西安交通大学 并行流水运动补偿滤波器vlsi结构设计方法
WO2015004421A1 (en) * 2013-07-08 2015-01-15 Qatar Foundation A method of performing a matrix operation in a distributed processing system
CN104699631A (zh) * 2015-03-26 2015-06-10 中国人民解放军国防科学技术大学 Gpdsp中多层次协同与共享的存储装置和访存方法
CN107066239A (zh) * 2017-03-01 2017-08-18 智擎信息系统(上海)有限公司 一种实现卷积神经网络前向计算的硬件结构
CN108446758A (zh) * 2018-02-11 2018-08-24 江苏金羿智芯科技有限公司 一种面向人工智能计算的神经网络数据串行流水处理方法
CN108491924A (zh) * 2018-02-11 2018-09-04 江苏金羿智芯科技有限公司 一种面向人工智能计算的神经网络数据串行流水处理装置
CN108647155A (zh) * 2018-05-14 2018-10-12 福州瑞芯微电子股份有限公司 一种基于深度学习的多级cache共享的方法和装置
CN109032781A (zh) * 2018-07-13 2018-12-18 重庆邮电大学 一种卷积神经网络算法的fpga并行系统
CN111596886A (zh) * 2019-02-21 2020-08-28 超威半导体公司 混合矩阵乘法流水线
CN111797034A (zh) * 2020-06-24 2020-10-20 深圳云天励飞技术有限公司 一种数据管理方法、神经网络处理器和终端设备
CN111784557A (zh) * 2020-06-30 2020-10-16 安徽寒武纪信息科技有限公司 一种处理图像数据的方法、装置、板卡及可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
大数据处理系统的研究进展与展望;王鹏;张利;;高技术通讯(Z1);44-52 *

Also Published As

Publication number Publication date
US20230367722A1 (en) 2023-11-16
CN112799726A (zh) 2021-05-14
WO2022161318A1 (zh) 2022-08-04

Similar Documents

Publication Publication Date Title
CN112799726B (zh) 数据处理装置、方法及相关产品
US11841816B2 (en) Network-on-chip data processing method and device
CN110059797B (zh) 一种计算装置及相关产品
CN112686379B (zh) 集成电路装置、电子设备、板卡和计算方法
Biookaghazadeh et al. Toward multi-fpga acceleration of the neural networks
CN114035916A (zh) 计算图的编译、调度方法及相关产品
CN109711540B (zh) 一种计算装置及板卡
CN115221102B (zh) 用于优化片上系统的卷积运算操作的方法和相关产品
CN111767995A (zh) 运算方法、装置及相关产品
CN112084023A (zh) 数据并行处理的方法、电子设备及计算机可读存储介质
CN111340202B (zh) 运算方法、装置及相关产品
CN113010845A (zh) 执行矩阵乘法的计算装置、方法及相关产品
CN113791996B (zh) 集成电路装置、电子设备、板卡和计算方法
CN113742266B (zh) 集成电路装置、电子设备、板卡和计算方法
CN113469328B (zh) 执行转数穿过的装置、板卡、方法及可读存储介质
CN113469365B (zh) 基于神经网络模型的推理和编译方法及其相关产品
CN113469327B (zh) 执行转数提前的集成电路装置
CN112232498B (zh) 一种数据处理装置、集成电路芯片、电子设备、板卡和方法
US11971836B2 (en) Network-on-chip data processing method and device
CN117667198A (zh) 指令同步控制方法、同步控制器、处理器、芯片和板卡
WO2024046018A1 (zh) 指令控制方法、数据缓存方法及相关产品
CN117931430A (zh) 用处理装置实现dft性能优化的方法及数据处理系统
CN117311812A (zh) 用于重排序缓冲的方法及其相关产品
WO2020063940A1 (zh) 计算装置及相关产品
CN115437693A (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
GR01 Patent grant
GR01 Patent grant