CN114661353A - 支持多线程的数据搬运装置及处理器 - Google Patents
支持多线程的数据搬运装置及处理器 Download PDFInfo
- Publication number
- CN114661353A CN114661353A CN202210336167.XA CN202210336167A CN114661353A CN 114661353 A CN114661353 A CN 114661353A CN 202210336167 A CN202210336167 A CN 202210336167A CN 114661353 A CN114661353 A CN 114661353A
- Authority
- CN
- China
- Prior art keywords
- instruction
- data
- information
- module
- context
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Abstract
本申请提供了支持多线程的数据搬运装置,其包括控制模块、指令缓存、上下文缓存以及由读入DMA模块、数据缓存模块和输出DMA模块构成的以流水线方式运行的数据通路。该数据通路中每个模块在处理完一个指令后将相关指令信息和数据一起传递至流水线中的下一个模块,接着开始处理下一个指令;与指令相关的上下文信息保存在上下文缓存中由各模块共享。该数据搬运装置在尽量减少面积开销的前提下提高了多线程场景中数据搬移的效率。
Description
技术领域
本申请涉及并行计算处理器,尤其涉及适用于多核心并行计算中的数据搬运的装置及处理器。
背景技术
本部分的陈述仅仅是为了提供与本申请的技术方案有关的背景信息,以帮助理解,其对于本申请的技术方案而言并不一定构成现有技术。
人工智能(AI)技术在近些年来得到了迅猛的发展,已经渗透至视觉感知、语音识别、辅助驾驶、智能家居、交通调度等各个领域。很多AI算法都涉及到基于神经网络的学习和计算,例如卷积神经网络CNN、循环神经网络RNN、深度神经网络DNN等等。这些AI算法要求较强的并行计算能力以处理海量数据,因此通常采用诸如GPU、GPGPU、AI加速器之类的能支持多核心并行计算的处理器来执行多层神经网络运算。这些处理器中通常采用单指令多线程(SIMT,Single Instruction Multiple Threads)架构,多个线程的任务可以同时运行在处理器的不同计算核心(core)上,当一组线程因为访存或其他原因出现等待时,就将其挂起,转而执行另一组线程,处理器的控制单元可以在多组线程之间快速切换,以此来尽量最大化处理器的吞吐量。然而,数据的存取速度始终是影响处理器运算效率的重要因素。如何在片上缓存和片外存储器之间高效率地进行大量的数据搬运是并行计算处理器中亟需解决的问题。
需要说明的是,上述内容仅用于帮助理解本申请的技术方案,并不作为评价本申请的现有技术的依据。
发明内容
发明人在实践中发现虽然可以通过在芯片内部设置片上高速缓存来预取部分数据和缓存计算结果的方式来改善数据的存取速度,但由于诸如成本、体积等方面的限制,片上缓存的容量通常是有限的。尤其是在涉及神经网络的应用中,这样有限的片上缓存往往无法缓存与神经网络的多个层相关的所有数据。另外,发明人也尝试了采用直接存储器访问(Direct Memory Access,DMA)来进行片上缓存和片外存储器之间数据搬运,但发现由于每次启用DMA都需要各个计算核心来分别启动和配置DMA传输,这大大降低了多核心上大数量的多线程任务的执行效率。虽然可以尝试通过流水线架构的DMA来提高指令之间并行性,但在用来执行诸如神经网络之类的AI算法的SIMT处理器中,除了指令之外,往往还需要额外的上下文来描述待处理的数据(例如神经网络各个层的输入和输出的数据排列、数据类型、特征图大小等等),如果将这些上下文连同指令一起沿流水线传播,必然会产生很大的面积消耗。
因此,本申请实施例提供了一种支持多线程的数据搬运装置,在尽量减少面积开销的前提下提高多线程场景下的数据搬移效率,尤其适用于SIMT处理器中的数据搬移。
上述目的是通过以下技术方案实现的:
根据本申请实施例的第一方面,提供了一种支持多线程的数据搬运装置,包括控制模块、指令缓存、上下文缓存以及以流水线方式运行的数据通路。所述数据通路至少包括读入DMA模块、数据缓存模块和输出DMA模块。其中所述指令缓存和所述上下文缓存可以由所述数据通路中各模块所共享,以及其中:
所述控制模块用于将接收到的待处理指令保存在指令缓存中,以及将与待处理指令相关的上下文信息保存在上下文缓存中。读入DMA模块用于从指令缓存中获取待处理的指令并根据从上下文缓存中获取的与该指令相关的上下文信息读取需要搬运的数据,以及将所读取的数据与相应指令信息一起传递给数据通路中的下一个模块。所述数据缓存模块用于根据收到的相应指令信息,从上下文缓存中选择相应的上下文信息,根据所获取的上下文信息对收到的数据和相应指令信息进行缓存,并在所缓存的数据达到输出要求时,将所缓存的数据和及其相应指令信息一起传递给数据通路中的下一个模块。输出DMA模块用于根据收到的相应指令信息,从上下文缓存中选择相应的上下文信息,根据所获取的上下文信息生成输出地址,并将输出地址和收到的数据一起进行输出。
在该实施例中,数据通路中每个模块都可以被配置为在处理完当前指令后将该指令所涉及的数据和相应指令信息一起传递至所述数据通路中的下一个模块,并接着开始处理下一个指令,其中所述相应指令信息用于标识当前指令及其相关的上下文信息。
在一些实施例中,读入DMA模块还可以被配置为:在将所读取的数据与相应指令信息一起传递给数据通路中的下一个模块的同时,向控制模块反馈指令完成信息以及从指令缓存中获取下一条待处理的指令。输出DMA模块还可以被配置为:在将输出地址和收到的数据一起进行输出的同时,向控制模块反馈指令完成信息。控制模块还可以被配置为响应于来自读入DMA模块的指令完成信息从指令缓存中清除完成的指令,以及响应于来自输出DMA模块的指令完成信息从上下文缓存中清除与完成的指令相关的上下文信息。
在一些实施例中,所述数据通路中在数据缓存模块之前还可包括算术逻辑单元模块,其根据从读入DMA模块接收的相应指令信息从上下文缓存中选择相应的上下文信息,根据所获取的上下文信息对从读入DMA模块收到的数据执行预设的操作,并将处理后的数据和相应指令信息一起传递给数据缓存模块。在一些实施例中,所述预设的操作可包括下列之一:神经网络中激活函数的计算、数据类型转换。
在一些实施例中,所述数据缓存模块可被配置为根据所获取的上下文信息中关于输出数据的描述,对收到的数据执行相应变换操作以得到输出数据,并将变换后的数据和相应指令信息进行缓存。所述变换操作可包括下列中一个或多个的组合:旋转、反向、转置、合并、拆分。
在一些实施例中,所述控制模块还可被配置为接收与指令相关的状态信息,并根据收到的状态信息对上下文缓存中相应指令的上下文信息进行设置或调整。
在一些实施例中,该数据搬运装置还包括指令接口、配置接口和状态接口,其中指令接口用于接收指令;配置接口用于接收与指令相关的上下文信息;状态接口用于接收与指令相关的状态信息。
在一些实施例中,在所述数据通路中与数据一起沿流水线传递的相应指令信息至少包括指令标识符。所述数据通路中各模块可以根据所述指令标识符从指令缓存中识别相应的指令,以及从上下文缓存中识别与指令相关的上下文信息。
在一些实施例中,在所述数据通路中与数据一起沿流水线传递的相应指令信息至少包括指令标识符和上下文标识符。所述数据通路中各模块可以根据所述指令标识符从指令缓存中识别相应的指令,以及根据所述上下文标识符从上下文缓存中识别与指令相关的上下文信息。所述控制模块还可被配置通过设置指令标识符与上下文标识符之间的映射来建立在指令缓存中保存的待处理的指令与在上下文缓存中保存的该指令的相关上下文信息之间的关联关系。这样,所述数据通路中各模块可以根据所建立的关联关系来从上下文缓存中识别与当前处理的指令相关的上下文信息。
在一些实施例中,所述上下文信息可包括下列中的一项或多项的组合:输入数据排列信息,输出数据排列信息,输入数据的数据类型,输出数据的数据类型,算术逻辑单元模块控制信息,特征图大小信息,数据膨胀信息,感兴趣区域信息,数据填充信息,数据池化信息、握手粒度信息。
根据本申请实施例的第二方面,提供了一种处理器,包括根据本申请实施例的第一方面所述的多线程数据搬运装置,其用于进行处理器的片上缓存与片外存储器之间的数据传递。这样的处理器尤其适用于神经网络运算。
本申请实施例的技术方案可以包括以下有益效果:
该多线程数据搬运装置在尽量减少面积开销的前提下改善了支持多核心上多线程并行计算场景下的数据搬运效率。另外该多线程数据搬运装置在数据搬运之外还具有一定的数据处理能力,提高了神经网络各层之间输入和输出数据的适配效率,尤其适用于针对神经网络的SIMT架构的处理器(如GPU,GPGPU以及AI加速器)的数据搬运。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本申请一个实施例的支持多线程的数据搬运装置的结构模块示意图。
图2为本申请又一个实施例的支持多线程的数据搬运装置的结构模块示意图。
具体实施方式
为了使本申请的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本申请进一步详细说明。应当理解,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动下获得的所有其他实施例,都属于本申请保护的范围。在不矛盾或冲突的情况下,本申请提供的各实施例可以相互组合,各实施例中的部分或全部特征内容可以相互组合使用。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
在诸如SIMT处理器之类的支持多线程运行的处理器中,允许同一条指令的多数据分开寻址,支持多个线程在不同的数据集上执行相同的指令,也可以在不同计算核心上执行不同的线程任务。因此对于同一指令可能具有不同的上下文来描述该指令处理的数据和执行该指令所需的信息。尤其是这类处理器应用在神经网络运算中时,用来对指令要处理的数据进行描述的上下文信息体量比较大;例如需要神经网络各个层的输入和输出的数据排列、数据类型、通道数、特征图大小等等。因此在多线程并行执行的场景中,这些上下文信息在数据搬运过程中占用很多的带宽开销。
在本申请的实施例中提供了一种支持多线程的数据搬运装置,将指令信息与该指令相关的上下文信息相分离,这样既能精简指令,又方便对于指令的上下文信息进行灵活控制,尤其适用于支持多个线程在不同的数据集上执行相同的指令的SIMT架构处理器。
图1给出了根据本申请一个实施例中的支持多线程的数据搬运装置的功能模块图。
该数据搬运模块包括:控制模块、指令缓存、上下文缓存以及由读入DMA模块、数据缓存模块和输出DMA模块构成的以流水线方式运行的数据通路。
该控制模块,用于:将接收到的一个或多个待处理的指令及其相关的上下文信息分别保存在指令缓存和上下文缓存中。
其中,与指令相关的上下文信息泛指完成该指令所需的所有相关信息,例如可以包括:与指令执行相关的信息、与该指令所处理的数据相关的信息等等。不同的指令具有不同的上下文信息,本文对此不进行任何限制。
指令缓存可被数据通路中各个模块共享。
在本申请实施例中,上下文缓存被数据通路中各个模块共享。
数据通路中每个模块在处理指令时,可以从上下文缓存中提取与指令相关的上下文信息;在完成一个指令的处理后,可将该指令涉及的数据和相应指令信息一起传输至该数据通路中的下一个模块,并开始获取下一个指令进行处理。这里与数据一起在数据通路中传递的相应指令信息是:用于供数据通路中各级模块识别要处理的相应指令及其上下文所需的信息(例如,指令标识符、上下文标识符等),并不包括与指令相关的具体上下文信息。在该数据搬运装置中,采用流水线方式运行的数据通路,沿流水线传递数据和相应指令信息但不传递上下文信息,在尽量减少面积开销的前提下提高了数据的搬运效率。
更具体地,参考图1,在读入DMA模块收到来自控制模块的指令或从指令缓存中提取待处理的指令时,从上下文缓存模块找到该指令对应的上下文信息。该读入DMA模块可以根据所获取的与指令相关的上下文信息来产生对外部的存储模块的数据请求。该数据请求中至少包括要读取的数据的地址和大小。外部的存储模块在收到数据请求后将数据返回给读入DMA模块。读入DMA模块可以将收到的数据与当前处理的指令的相关信息(例如,指令标识符)一起输出给数据通路中的下一个模块,例如数据缓存模块。在读入DMA模块传递完成之后,读入DMA模块可以立刻向控制模块反馈指令完成信息,并从指令缓存中获取下一个指令,同时在上下文缓存模块中获取该指令的上下文信息,从而可以开始进行下一条指令的运行。
可选的,控制模块在收到来自读入DMA模块的指令完成信息后,可以将完成的指令从指令缓存中清除以准备接收下一条指令。但在上下文缓存模块中保存的与完成的指令相关的上下文信息仍需要保留,以供流水线中后续模块使用。在一些实施例中,由于指令本身的体量很小(用于指示搬运数据的指令信息体量小),相较于将指令本身和指令对应的具体上下文信息一起沿流水线传递的方式而言,在流水线式的数据通路不直接传递具体上下文信息的情况下,即使沿着流水线传递指令本身,也不会造成较大面积开销。数据通路中的各个模块可以选择将当前指令本身和/或当前指令的指令标识符沿着流水线传递,但流水线式的数据通路仍然不会直接传递指令的上下文信息,而是由数据通路中的各模块分别根据收到的相应指令信息,依据当前指令和/或指令标识符从共享的上下文缓存中获取各模块所需的上下文信息。其中,若流水线中不传递指令对应的具体上下文,也不直接传递指令本身,而是通过传递标识符并依据标识符来获取缓存内容的方式进行数据搬运,可以精简指令,可更进一步地降低数据搬运过程中占用的带宽开销。
数据缓存模块可用于:接收来自数据通路中上一级模块(例如可以是读入DMA模块)输出的数据以及相应指令信息。数据缓存模块可以根据收到的相应指令信息从上下文缓存中选择相应的上下文信息,并根据所获取的上下文信息对收到的数据和相应指令信息进行缓存。在数据达到输出要求时,数据缓存模块可以将缓存的数据及其相应指令信息一起传递给数据通路中的下一级模块(例如,输出DMA模块)。例如,数据缓存模块可以在检测到缓存中有足够的数据后开始进行输出,或者可以在所缓存的数据量能满足输出通道的基本数据要求时开始进行输出。又例如,数据缓存模块可根据上下文信息中的相关信息对数据进行合并来增加输出数据的带宽利用率。
在一些实施例中,数据缓存模块还可以根据所获取的上下文信息中关于输出数据的描述信息,对收到的数据执行相应变换操作以得到相应的输出数据,并将变换后的数据和相应指令信息进行缓存。这里的变换操作可包括但不限于下列中一个或多个的组合:旋转、反向、转置、合并、拆分等等。例如,数据缓存模块可以根据上下文信息中包含的输入数据排列信息和输出数据排列信息等描述信息,对收到的数据进行不同纬度的旋转,反向以及转置等变换操作,以使输入数据更好地适配输出数据的格式。这尤其适用于多层神经网络的处理,这是因为不同的网络层所需的输入数据维度、格式或类型都可能有不同,数据搬运模块在缓存数据的过程中进行变换操作将具有较高适配性,在处理器处理完一个网络层时,会将处理结果写入缓存并经该数据搬运模块保存至存储器中,而在开始下一个网络层的处理时,直接读取数据即可,不需执行数据格式的转换。这是因为该数据搬运模块在保存数据的过程中已经完成了相应的数据转换和适配工作。这显然减少了处理器的计算负载,有利于提高处理器对于大数据的吞吐量。
继续参考图1,输出DMA模块接收来自数据通路中上一级模块(例如数据缓存模块)输出的数据及相应指令信息,并根据收到的相应指令信息从上下文缓存中选择与指令关联的上下文信息。输出DMA模块可以根据所获取的上下文信息生成输出地址,并将输出地址和收到的数据一起进行输出,例如将收到的数据写入到目标存储器中的相应地址处。与此同时,输出DMA模块可以向控制模块反馈指令完成信息。控制模块响应于来自输出DMA模块的指令完成信息从上下文缓存中清除与指令相关的上下文信息。控制模块还可以向外部的相关控制单元发送通知,以指示该数据搬运装置已经准备好接收下一条指令。
在一些实施例中,在数据搬运装置的数据通路中,还可以包括位于数据缓存模块之前的算术逻辑单元模块(可简称为ALU模块)。该ALU模块根据从读入DMA模块接收的相应指令信息从上下文缓存中选择与指令相关的上下文信息,根据所获取的上下文信息对从读入DMA模块收到的数据执行预设的操作。这样的预设的操作包括但不限于:神经网络中激活函数的计算、数据类型转换等。该ALU模块将处理后的数据和相应指令信息一起传递给数据通路中的下一个模块(例如可以传递给数据缓存模块)。应理解,这里的ALU模块是可选的模块,尤其适用于神经网络处理。例如,在多层结构的神经网络中,上一层的输出特征数据作为下一层的输入特征数据提供给下一层以便进一步处理,每一层常常是将输入神经元向量和相应权值向量进行运算后,将所得到的运算结果经过激活函数才会产生输出特征。这样的激活函数会在每一层重复进行。因此在本申请的实施例中,通过数据搬运装置中提供ALU模块来进行激活函数的处理,使得这些重复的激活函数的执行独立于各个计算核心。这样每当处理完神经网络一层的计算后,可将计算结果直接保存在相应的片上缓存中,数据搬运装置在进行这些中间结果的搬运过程中就可以完成激活函数的执行,并将经激活函数处理后的数据进行保存;而在开始神经网络的下一层处理时,计算核心直接获取所保存的数据进行计算即可。通过这样的ALU模块,可执行重复的一些固定运算,减少了计算核心的计算负载,提高了处理器的数据处理吞吐量。
在一些实施例中,控制模块还可以接收与指令相关的状态信息,并根据收到的状态信息对上下文缓存中相应指令的上下文信息进行设置或调整。这是考虑到在诸如SIMT处理器之类的支持多线程运行的处理器中,经常存在多个线程在不同的数据集上执行相同的指令,或者不同计算核心上的多个线程在相同或相似数据集上执行不同的指令的情况。由此在线程切换中,多个指令相关的上下文信息有很多部分保持不变,只有少部分信息发生变化,通过状态信息对上下文缓存中的一些内容进行更新,可提高配置灵活性和处理效率。在又一些实施例中,为了更灵活地配置上下文信息,控制模块可以主动向外部的控制单元发出状态信息请求,并根据收到的状态信息更新和调整上下文缓存中的相应上下文信息。控制模块也可以接收来自外部的控制单元主动发送的状态信息来调整和设置相应的上下文信息中的某些数据项。
在又一些实施例中,该数据搬运装置还包括指令接口、配置接口和状态接口。控制模块通过指令接口接收来自外部的指令,通过配置接口接收与指令相关的上下文信息,通过状态接口接收与指令相关的状态信息以及向外部的控制单元发出状态信息请求。这样,该数据搬运装置就可以通过专用的状态接口接收状态信息或发出状态请求以获取状态信息,从而利用更新的状态信息来填充或设置上下文信息中经常发生变化的数据项,由此实现更灵活的配置方式。
在上述的实施例中,该数据搬运装置的数据通路以流水线方式运行。该数据通路中每个模块将数据与相应指令信息一起沿流水线进行传递,因此每个模块在处理完一个指令后可以立即获取下一个指令来进行处理,从而提高了指令的并行程度。在一个示例中,在数据通路中与数据一起沿流水线传递的相应指令信息至少包括指令标识符。数据通路中的各个模块通过指令标识符,可以从指令缓存中识别相应的指令,也可以从上下文缓存中识别与指令相关的上下文信息。在又一个示例中,在数据通路中与数据一起沿流水线传递的指令的相关信息至少包括指令标识符和上下文标识符。该指令标识符用于从指令缓存中识别相应的指令。该上下文标识符用于从上下文缓存中识别与指令相关的上下文信息。在该示例中,控制模块可以通过设置指令标识符与上下文标识符之间的映射来建立在指令缓存中保存的待处理的指令与在上下文缓存中保存的相关上下文信息之间的灵活对应关系。例如,可以将一个指令对应不同的上下文信息,也可以将同一上下文信息对应于不同的指令。数据通路中的每个模块通过指令标识符和上下文标识符共同确定当前处理的指令所对应的上下文信息。这可以支持更多样的处理场景。
在本申请的实施例中提供了支持多线程的数据搬运装置。该数据搬运装置通过指令标识符(简称指令id)来区分不同类型的指令或线程,使其可以同时在数据搬运装置中运行以提升数据搬运的效率。所支持同时运行的指令数目取决于数据通路中可能同时存在的指令的数目。并且在该数据搬运装置中,将诸如指令标识符之类的部分指令信息与数据一起沿数据通路中流水线传递,而不需要在流水线中传递指令相关的所有上下文信息,因此在改善数据搬运效率的同时降低了芯片面积开销。
图2中给出了根据本申请又一个实施例的数据搬运装置的功能模块示意图。在该实施例中,将指令相关的上下文信息分成两部分:将其中不经常变化的部分设置为描述符(descriptor)信息,而将经常发生变化的部分设置为状态信息。该数据搬运装置包括由指令处理模块、描述符处理模块、状态信息处理模块、合并译码模块和上下文缓存模块构成的控制模块以及由读入DMA模块、ALU模块、数据缓存模块以及输出DMA模块构成的以流水线方式运行的数据通路。下面结合图2对于该数据搬运装置各模块进行更详细的介绍。
该数据搬运装置接收来自外部控制单元(例如处理器的控制单元、处理器中每个核心等)分发的一个或多个指令。该数据搬运装置可以通过指令处理模块缓存接收到的指令。所接收的指令应当是需要该数据搬运装置参与的指令,可以包括但不限于存储类型的指令。所接收的指令中应包括指令标识(可简称指令id),用来区分不同指令。所接收的指令中还可包括上下文标识符(可简称为上下文id)以及需要处理的数据的描述信息。在指令中包含的需要处理的数据的描述信息至少包括起始数据块地址信息,目标数据块地址信息和数据块的大小。在涉及神经网络运算的一些实施例中,神经网络的各个层中有不同的输入和输出特征数据,利用不同的参数执行不同的运算,并且由于各层节点数可能不同,因此输入和输出数据的通道数以及维度也会有所差异。因此,在指令中包含的需要处理的数据的描述信息可以包括起始数据块地址信息,目标数据块地址信息,物理地址映射信息,输入和输出数据通道数目,各输入通道数据块的维度大小信息,各输入通道数据块的维度坐标信息,各输入通道数据块的各维度边界信息,各输入通道的存储单元指示信息,该需要处理的数据所处的网络层标识以及指令结束指示信息等。上述的指令所包含的信息都可以通过合并译码模块中对收到的指令进行译码后得到,并且可以部分或全部保存在由该指令的上下文id所标识的上下文信息中。
在本申请的实施例中,指令信息与描述数据的上下文信息相互独立,分别由外部控制单元通过不同的接口输入数据搬运装置。如上文提到的,描述数据的上下文信息可以分成描述符信息和状态信息,但也可以全部包含在描述符信息中。上下文信息可通过描述符信息和/或状态信息的形式提供给数据搬运装置并缓存在描述符信息处理模块和/或状态信息处理模块中。该数据搬运模块可以通过描述符信息处理模块缓存多组描述符信息,通过状态信息处理模块缓存多组状态信息。在数据搬运装置所接收的指令中还可包括描述符标识(可简称描述符id),用于从在描述符信息处理模块所缓存的描述符信息中选取相应的描述符信息并给到合并译码模块进行译码。在指令对应的描述符信息中可以包含部分或全部上下文信息,每个描述符信息都对应一个描述符id,根据指令中包含的描述符id可以找到对应的描述符信息。
在将上下文信息分成描述符信息和状态信息的实施例中,本数据搬运装置还包含状态信息处理模块。状态信息处理模块根据指令提供的上下文id向外部控制单元发起状态信息请求,并将返回的状态信息按照上下文id进行缓存。数据搬运装置可以通过状态信息处理模块缓存多组状态信息和上下文id。所述状态信息可包含部分或全部上下文信息,根据指令中包含的上下文id可以找到对应的状态信息。
上述指令,描述符信息以及状态信息都会经过合并译码模块,并将译码的数据合并成执行指令所需要的上下文信息并缓存在上下文缓存模块中,由该指令的上下文id所标识。可以通过指令id和上下文id从上下文缓存模块中定位到指令所需的上下文信息。其中上下文信息应当包含但不限于输入数据排列(layout)信息,输出数据排列(layout)信息,输入数据的数据类型,输出数据的数据类型,ALU模块控制信息,特征图大小信息,数据膨胀(dilation)信息,感兴趣区域信息,数据填充(padding)信息,数据池化信息、握手粒度信息等等。
继续参考图2,该数据搬运装置还包含读入DMA模块。该读入DMA模块在收到输入指令且确定所需上下文信息在上下文缓存模块中时,会对外部的存储模块产生数据请求。该读入DMA模块可以根据指令相关的上下文信息来产生要求读入数据的数据请求。该数据请求中至少包括要读取的数据的地址和大小。外部的存储模块在收到数据请求后将数据返回给读入DMA模块。读入DMA模块可以根据上下文信息对数据进行适当处理后,将数据以及发出数据请求时的指令id和部分指令信息(例如,该指令对应的上下文id等)一起输出给流水线中的下一个模块,例如ALU模块。在该实施例中,该读入DMA模块读取的数据,该读取数据对应的指令id和上下文id一起传递给后续模块,传递完成之后可以立刻向指令处理模块反馈指令完成信息,并获取下一个指令id及相应指令信息,同时会根据该指令id在上下文缓存模块中读取到该切换后的指令的上下文信息,从而可以开始进行下一条指令的运行。指令处理模块在收到读入DMA的指令完成信息后可以将完成的指令从缓存中清除以准备接收下一条指令,而在上下文缓存模块中保存的与完成的指令相关的上下文信息仍需要保留,以供流水线中后续模块使用。
ALU模块接收读入DMA模块输出的数据、数据对应指令id以及上下文id。ALU模块可以根据指令id和上下文id在上下文缓存模块中选择对应的上下文信息,并根据上下文信息中的预设计算信息来对数据进行相应的计算。这样的计算可以包括但不限于神经网络中的激活函数(如ReLU,Tanh,SigMod)以及数据类型转换运算(如FP32到FP16的转换,Float到Int的转换以及FP32到BF16的转换)。该ALU模块会将计算的结果数据,该数据对应指令id以及上下文id以流水线的方式继续传递给下一个模块,传递完成后可以开始处理新收到的数据。应理解,这里的ALU模块是可选的模块,尤其适用于神经网络处理。例如,在多层结构的神经网络中,上一层的输出特征数据作为下一层的输入特征数据提供给下一层以便进一步处理,每一层常常是将输入神经元向量和相应权值向量进行运算后,将所得到的运算结果经过激活函数才会产生输出特征。这样的激活函数会在每一层重复进行。因此在本申请的实施例中,通过在数据搬运装置提供ALU模块来进行激活函数的处理,是的这些重复的激活函数的执行独立于各个计算核心,这样每当处理器处理完神经网络一层的计算后,可将计算结果直接保存在相应的片上缓存中,数据搬运装置在进行这些中间结果的搬运过程中就可以激活函数的执行,并将经激活函数处理后的输出结果进行保存;而在开始神经网络的下一层处理时,计算核心直接读取所保存的数据进行计算即可。通过这样的ALU模块,减少了计算核心的计算负载,提高了处理器的数据处理吞吐量。
数据缓存模块接收ALU模块输出的数据、数据对应指令id以及上下文id。数据缓存模块可根据指令id和上下文id在上下文缓存模块中选择相应的上下文信息,并根据获取的上下文信息将收到的数据按照一定的方式写入内部缓存。例如,数据缓存模块可以根据输入数据排列信息、输出数据类型、缓存空闲等信息将数据按照特定的方式写入内部缓存。又例如,数据缓存模块可以根据不同的输入数据排列信息和输出数据排列信息,对收到的数据进行不同纬度的旋转,反向以及转置等操作,以使输入数据更好地适配输出数据的格式。这尤其适用于多层神经网络的处理。不同的网络层所需的输入数据维度、格式或类型都可能有不同,在处理器处理完一个网络层时,会将处理结果写入缓存并经该数据搬运模块保存至存储器中,而在开始下一个网络层的处理时,直接读取数据即可,不需执行数据格式的转换;这是因为该数据搬运模块在保存数据的过程中已经完成了相应的数据转换和适配工作。这显然减少了处理器的计算负载,有利于提高处理器对于大数据的吞吐量。
该数据缓存模块在将数据写入内部缓存的同时,与数据对应的指令id以及上下文id也会被对应缓存。数据缓存模块可根据缓存的指令id和上下文id获取指令相关的上下文信息,并从上下文信息中提取关于输出数据的设置(例如输出要求、输出数据格式、输出带宽等等)。在数据达到设定的输出要求时立刻开始从内部缓存中读取数据并将所读取的数据、该数据对应的指令id及上下文id传递至流水线中的下一个模块(例如输出DMA模块)。例如,数据缓存模块可以在检测到输出等待缓存中有足够的数据后开始进行输出。又例如,数据缓存模块可根据上下文信息中的输出带宽信息对数据进行合并来增加输出数据的带宽利用率。
输出DMA模块接收数据缓存模块输出的数据、数据对应指令id以及上下文id。输出DMA模块可根据指令id和上下文id在上下文缓存模块中选择相应的上下文信息,并根据上下文信息产生要输出的数据的地址,并将要输出的数据和地址一起发送至外部的存储模块。该输出DMA模块在一条指令的最后一笔数据写出去的同时清空上下文缓存模块中的对应指令id和上下文id的上下文信息,并允许该指令id对应的下一条指令以及相应的描述符信息和状态信息写入上下文缓存模块中。在执行清空对应指令id的上下文缓存的操作同时,该数据搬运装置可以通过包含指令id的握手信息通知外部控制模块可以开始调度该指令id对应的下一条指令。
在一些实施例中,输出DMA模块也可采用多通道机制来并行输出数据。该输出DMA可根据上下文的信息为不同输出数据通道分别产生输出数据的对应地址和数据一同发送给外部存储模块。每个数据通道对应的输出数据的地址可以根据上下文信息中的各个维度坐标信息,各个维度大小信息,特征图大小信息,数据池化信息,输出数据排列信息以及输出数据类型信息等计算生成。在又一些实施例中,输出DMA模块还需要考虑输出数据的宽度跨多个存储空间边界的问题,可以根据地址所跨的存储器空间将输出数据分成多组输出。在又一些实施例中,输出DMA模块还可以根据上下文信息中的握手粒度信息以及指令中的层id信息,在输出数据量大于握手粒度信息时产生对应层id信息的握手信息,以通知外部控制模块可以开始使用输出的层id信息对应的数据。
在本申请的又一些实施例中,还提供了一种用于神经网络的处理器,其包括上文结合图1和/或图2介绍的多线程数据搬运装置。在该处理器中,多个线程的任务同时运行在该处理器的不同计算核心上,不同的计算核心根据指令执行不同的计算,每个计算核心处理的数据以及计算结果暂存在内部的片上缓存中,其利用上文介绍的多线程数据搬运装置来执行处理器的片上缓存与片外存储器之间的数据传递。
本说明书中针对“各个实施例”、“一些实施例”、“一个实施例”、或“实施例”等的参考指代的是结合所述实施例所描述的特定特征、结构、或性质包括在至少一个实施例中。因此,短语“在各个实施例中”、“在一些实施例中”、“在一个实施例中”、或“在实施例中”等在整个说明书中各地方的出现并非必须指代相同的实施例。此外,特定特征、结构、或性质可以在一个或多个实施例中以任何合适方式组合。因此,结合一个实施例中所示出或描述的特定特征、结构或性质可以整体地或部分地与一个或多个其他实施例的特征、结构、或性质无限制地组合,只要该组合不是非逻辑性的或不能工作。
本说明书中“包括”和“具有”以及类似含义的术语表达,意图在于覆盖不排他的包含,例如包含了一系列步骤或单元的过程、方法、系统、产品或设备并不限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。“一”或“一个”也不排除多个的情况。另外,本申请附图中的各个元素仅仅为了示意说明,并非按比例绘制。
虽然本申请已经通过上述实施例进行了描述,然而本申请并非局限于这里所描述的实施例,在不脱离本申请范围的情况下还包括所做出的各种改变以及变化。
Claims (11)
1.一种支持多线程的数据搬运装置,包括控制模块、指令缓存、上下文缓存以及以流水线方式运行的数据通路,所述数据通路包括读入DMA模块、数据缓存模块和输出DMA模块,其中所述上下文缓存由所述数据通路中各模块所共享,以及其中:
所述控制模块,用于将接收到的待处理指令保存在指令缓存中,以及将与待处理指令相关的上下文信息保存在上下文缓存中;
读入DMA模块,用于从指令缓存中获取待处理的指令并根据从上下文缓存中获取的与该指令相关的上下文信息读取需要搬运的数据,以及将所读取的数据与相应指令信息一起传递给数据通路中的下一个模块,其中所述相应指令信息用于标识当前指令及其相关的上下文信息;
数据缓存模块,用于根据收到的相应指令信息,从上下文缓存中选择相应的上下文信息,根据所获取的上下文信息对收到的数据和相应指令信息进行缓存,并在所缓存的数据达到输出要求时,将所缓存的数据及其相应指令信息一起传递给数据通路中的下一个模块;
输出DMA模块,用于根据收到的相应指令信息,从上下文缓存中选择相应的上下文信息,根据所获取的上下文信息生成输出地址,并将输出地址和收到的数据一起进行输出。
2.根据权利要求1所述的装置,其中:
读入DMA模块还被配置为:在将所读取的数据与相应指令信息一起传递给数据通路中的下一个模块的同时,向控制模块反馈指令完成信息以及从指令缓存中获取下一条待处理的指令;
输出DMA模块还被配置为:在将输出地址和收到的数据一起进行输出的同时,向控制模块反馈指令完成信息;
控制模块还被配置为:响应于来自读入DMA模块的指令完成信息从指令缓存中清除完成的指令,以及响应于来自输出DMA模块的指令完成信息从上下文缓存中清除与完成的指令相关的上下文信息。
3.根据权利要求1所述的装置,在所述数据通路中还包括算术逻辑单元模块;
所述算术逻辑单元模块,用于:根据从读入DMA模块接收的相应指令信息,从上下文缓存中选择相应的上下文信息,并根据所获取的上下文信息对从读入DMA模块收到的数据执行预设的操作,并将处理后的数据和相应指令信息一起传递给数据缓存模块。
4.根据权利要求3所述的装置,其中所述预设的操作包括以下至少一者:神经网络中激活函数的计算、数据类型转换。
5.根据权利要求1所述的装置,其中所述数据缓存模块被配置为:
根据所获取的上下文信息中关于输出数据的描述信息,对收到的数据执行相应变换操作以得到输出数据,并将变换后的数据和相应指令信息进行缓存。
6.根据权利要求5所述的装置,其中所述变换操作包括下列中一个或多个的组合:旋转、反向、转置、合并、拆分。
7.根据权利要求1所述的装置,其中所述控制模块还被配置为:
接收与指令相关的状态信息,并根据收到的状态信息对上下文缓存中相应指令的上下文信息进行设置或调整。
8.根据权利要求1-7中任一项所述的装置,在所述数据通路中与数据一起沿流水线传递的相应指令信息包括指令标识符,所述数据通路中各模块被配置为根据所述指令标识符从指令缓存中识别相应的指令,以及从上下文缓存中识别与指令相关的上下文信息。
9.根据权利要求1-7中任一项所述的装置,在所述数据通路中与数据一起沿流水线传递的相应指令信息包括指令标识符和上下文标识符,所述数据通路中各模块被配置为根据所述指令标识符从指令缓存中识别相应的指令,以及根据所述上下文标识符从上下文缓存中识别与指令相关的上下文信息。
10.根据权利要求9所述的装置,其中所述控制模块还被配置为:
通过设置指令标识符与上下文标识符之间的映射来建立所述指令缓存中保存的待处理的指令与所述上下文缓存中保存的该指令的相关上下文信息之间的关联关系,所述数据通路中各模块被配置为根据所述关联关系来从上下文缓存中识别与当前处理的指令相关的上下文信息。
11.一种处理器,包括权利要求1-10中任一项所述的多线程数据搬运装置,其用于进行处理器的片上缓存与片外存储器之间的数据传递。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210336167.XA CN114661353A (zh) | 2022-03-31 | 2022-03-31 | 支持多线程的数据搬运装置及处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210336167.XA CN114661353A (zh) | 2022-03-31 | 2022-03-31 | 支持多线程的数据搬运装置及处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114661353A true CN114661353A (zh) | 2022-06-24 |
Family
ID=82033829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210336167.XA Pending CN114661353A (zh) | 2022-03-31 | 2022-03-31 | 支持多线程的数据搬运装置及处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114661353A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117389731A (zh) * | 2023-10-20 | 2024-01-12 | 上海芯高峰微电子有限公司 | 数据处理方法和装置、芯片、设备及存储介质 |
WO2024046018A1 (zh) * | 2022-09-02 | 2024-03-07 | 上海寒武纪信息科技有限公司 | 指令控制方法、数据缓存方法及相关产品 |
-
2022
- 2022-03-31 CN CN202210336167.XA patent/CN114661353A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024046018A1 (zh) * | 2022-09-02 | 2024-03-07 | 上海寒武纪信息科技有限公司 | 指令控制方法、数据缓存方法及相关产品 |
CN117389731A (zh) * | 2023-10-20 | 2024-01-12 | 上海芯高峰微电子有限公司 | 数据处理方法和装置、芯片、设备及存储介质 |
CN117389731B (zh) * | 2023-10-20 | 2024-04-02 | 上海芯高峰微电子有限公司 | 数据处理方法和装置、芯片、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111310910B (zh) | 一种计算装置及方法 | |
US5361370A (en) | Single-instruction multiple-data processor having dual-ported local memory architecture for simultaneous data transmission on local memory ports and global port | |
CA2122139C (en) | Data processing system | |
US5926644A (en) | Instruction formats/instruction encoding | |
CN114661353A (zh) | 支持多线程的数据搬运装置及处理器 | |
WO2017124642A1 (zh) | 用于执行人工神经网络正向运算的装置和方法 | |
WO2012174128A1 (en) | General purpose digital data processor, systems and methods | |
US11403104B2 (en) | Neural network processor, chip and electronic device | |
CN106991073B (zh) | 用于向量运算的数据读写调度器及保留站 | |
US10761851B2 (en) | Memory apparatus and method for controlling the same | |
CN111047036B (zh) | 神经网络处理器、芯片和电子设备 | |
CN110908716B (zh) | 一种向量聚合装载指令的实现方法 | |
US5857088A (en) | System for configuring memory space for storing single decoder table, reconfiguring same space for storing plurality of decoder tables, and selecting one configuration based on encoding scheme | |
CN111105023A (zh) | 数据流重构方法及可重构数据流处理器 | |
CN112905530A (zh) | 片上架构、池化计算加速器阵列、单元以及控制方法 | |
CN111091181B (zh) | 卷积处理单元、神经网络处理器、电子设备及卷积运算方法 | |
US8478946B2 (en) | Method and system for local data sharing | |
US5452101A (en) | Apparatus and method for decoding fixed and variable length encoded data | |
WO2021115149A1 (zh) | 神经网络处理器、芯片和电子设备 | |
CN114429214A (zh) | 运算单元、相关装置和方法 | |
CN114970848A (zh) | 用于并行处理器的数据搬运装置及相应处理器 | |
CN109741237B (zh) | 大规模图像数据处理系统及方法 | |
US20210089305A1 (en) | Instruction executing method and apparatus | |
CN114331806A (zh) | 图形处理器及图形处理方法 | |
US10620958B1 (en) | Crossbar between clients and a cache |
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 |