发布信息

用于并行处理器的数据搬运装置及相应处理器的制作方法

作者:admin      2022-08-31 13:32:24     571



计算;推算;计数设备的制造及其应用技术1.本技术涉及并行处理器,尤其涉及并行处理器中不同存储器之间的数据搬运。背景技术:2.本部分的陈述仅仅是为了提供与本技术的技术方案有关的背景信息,以帮助理解,其对于本技术的技术方案而言并不一定构成现有技术。3.人工智能(ai)技术在近些年来得到了迅猛的发展,已经渗透至视觉感知、语音识别、辅助驾驶、智能家居、交通调度等各个领域。很多ai算法都涉及到基于神经网络的学习和计算,例如卷积神经网络cnn、循环神经网络rnn、深度神经网络dnn等等。这些ai算法要求较强的并行计算能力以处理海量数据,因此通常采用诸如gpu、gpgpu之类的能支持多核心并行计算的处理器来执行多层神经网络运算,这些并行处理器通常也可以被称为神经网络加速器。这些神经网络加速器通常会按照神经网络的层的顺序依次完成每一层的计算工作并将计算的结果作为下一层或下一个网络的输入,直到得到最终的输出结果。而对于每一层的计算工作,神经网络加速器会按照每个层自身支持的最大任务大小将相应的计算工作切分为多个任务,每个任务的输出会暂时存放在存储器(例如片内缓存或片外存储器等)中,等每一层的所有任务全部完成后,会在存储器中合并各个任务的输出以得到相应层的计算结果。4.在这样的处理器中通常包括内部数据存储单元来存储每个任务计算的输出,但由于神经网络处理的数据量通常都很多,而处理器内部存储单元空间有限,因此常常需要将内部数据存储单元中的计算结果搬运到片内缓存或片外存储器上以便后续用来合并得到当前层的计算结果。如何高效地在各级存储器之间高效率地进行大量数据的搬运是神经网络加速器中亟需解决的问题5.需要说明的是,上述内容仅用于帮助理解本技术的技术方案,并不作为评价本技术的现有技术的依据。技术实现要素:6.发明人在实践中还发现在不同神经网络之间或神经网络的不同层之间除了需要进行大量的数据搬运之外,对于处理的数据的精度的要求也经常有所不同,因此数据精度的变换也是神经网络加速器中所必须的完成的工作之一。7.因此,在本技术的实施例中提供了一种适用于神经网络加速器中的数据搬运装置,可以在数据搬运过程中同时实现数据精度变换的方法,从而提升神经网络加速器的计算效率。8.根据本技术实施例的第一方面,提供了一种用于并行处理器的数据搬运装置,包括控制模块、以流水线方式运行的数据通路、算术逻辑单元以及与算术逻辑单元关联的对齐缓存,所述数据通路包括读入dma模块、数据缓存模块和输出dma模块,其中所述算术逻辑单元的一侧直接与所述并行处理器的数据存储单元的数据接口相耦合,而另一侧可通信地连接至读入dma模块。其中所述读入dma模块可以根据来自控制模块的控制信息,向数据存储单元发送数据请求,并将与该数据请求对应的配置信息保存至与所述算术逻辑单元关联的对齐缓存中,以及将接收到的数据传递给数据通路中的下一个模块。算术逻辑单元用于接收所述数据存储单元对于所述数据请求返回的数据,并根据从所述对齐缓存中获取与该数据请求对应的配置信息来对收到的数据执行预设的处理操作,以及向读入dma模块传输处理后的数据。9.在该实施例的数据搬运装置中,将用于进行诸如精度变换之类的计算操作的算术逻辑单元alu前置到数据存储单元的数据接口处,这样从数据存储单元输出的数据首先进行精度变换,然后才会进行传输,由此可以最大程度地减少数据存储模块和数据搬运模块之间的连线线宽,从而进一步节省了芯片功耗和面积。10.在一些实施例中,该数据搬运装置还可包括请求流水模块和数据流水模块,其中所述请求流水模块的一侧与数据存储单元的配置接口相耦合并连接至所述对齐缓存,另一侧通过数据连线连接至读入dma模块,所述数据流水模块一侧与算术逻辑单元连接,而另一侧通过数据连线连接至读入dma模块。其中所述请求流水模块用于对从读入dma模块收到的数据请求及其对应的配置信息进行流水线打拍,并将经流水线打拍后的数据请求传递至所述数据存储单元,以及将经流水线打拍后的配置信息保存至对齐缓存。所述数据流水模块用于从算术逻辑单元接收的数据进行流水线打拍,并将经流水线打拍后的数据传递给读入dma模块。在一些实施例中,在所述算术逻辑单元与所述数据流水模块之间还可设置有mux模块,用于根据从对齐缓存中获取的配置信息,对从所述算术逻辑单元接收的数据进行重排列,并将重排列后的数据传输给所述数据流水模块。11.在该实施例的数据搬运装置中,引入了两个流水线打拍模块来改善数据搬运模块内部各模块的时序和同步,进一步避免由于芯片不同分区的数据存储模块和数据搬运模块之间的数据连传输延迟可能造成的数据搬运模块内部数据处理时序紊乱的问题。12.在一些实施例中,所述算术逻辑单元执行的预设的处理操作可包括下列中的一个或多个的组合:神经网络中激活函数的计算、数据精度变换、量化操作。在一些实施例中,所述对齐缓存可以是先进先出缓存队列。在一些实施例中,与所述数据请求对应的配置信息可以是由控制模块根据收到的与指令相关的上下文信息产生的。13.在一些实施例中,所述控制模块还可包括指令缓存和上下文缓存,其中所述上下文缓存由所述数据通路中各模块所共享。其中所述控制模块还用于将接收到的待处理指令保存在指令缓存中,以及将与待处理指令相关的上下文信息保存在上下文缓存中。所述读入dma模块还用于从指令缓存中获取待处理的指令并根据从上下文缓存中获取的与该指令相关的上下文信息产生数据请求及其对应的配置信息,以及将所接收的数据与相应指令信息一起传递给数据通路中的下一个模块,其中所述相应指令信息用于标识当前指令及其相关的上下文信息。所述数据缓存模块还用于根据收到的相应指令信息,从上下文缓存中选择相应的上下文信息,根据所获取的上下文信息对收到的数据和相应指令信息进行缓存,并在所缓存的数据达到输出要求时,将所缓存的数据及其相应指令信息一起传递给数据通路中的下一个模块。所述输出dma模块还用于根据收到的相应指令信息,从上下文缓存中选择相应的上下文信息,根据所获取的上下文信息生成输出地址,并将输出地址和收到的数据一起进行输出。14.在该实施例中,将指令与上下文分开处理,上下文缓存模块由以流水线模式工作的数据通路中各模块共享,流水线中传递数据和指令,但不传递上下文,在改善多个指令执行的并行性的同时,减小了芯片面积消耗。15.在一些实施例中,读入dma模块还被配置为:在将收到的数据与相应指令信息一起传递给数据通路中的下一个模块的同时,向控制模块反馈指令完成信息以及从指令缓存中获取下一条待处理的指令;输出dma模块还被配置为:在将输出地址和收到的数据一起进行输出的同时,向控制模块反馈指令完成信息;控制模块还被配置为:响应于来自读入dma模块的指令完成信息从指令缓存中清除完成的指令,以及响应于来自输出dma模块的指令完成信息从上下文缓存中清除与完成的指令相关的上下文信息。在该数据搬运装置中,采用流水线方式运行的数据通路,沿流水线传递数据和相应指令信息但不传递上下文信息,在尽量减少面积开销的前提下提高了数据的搬运效率。16.在一些实施例中,所述数据缓存模块可以被配置为:根据所获取的上下文信息中关于输出数据的描述信息,对收到的数据执行相应变换操作以得到输出数据,并将变换后的数据和相应指令信息进行缓存,其中所述变换操作包括下列中一个或多个的组合:旋转、反向、转置、合并、拆分。这样,在数据搬运过程中预先进行了输入和输出数据的转换,减小计算核心的计算负载,尤其适用于神经网络。17.根据本技术实施例的第二方面,提供了一种并行处理器,包括根据本技术实施例的第一方面所述的数据搬运装置,其用于进行该并行处理器的片上缓存与片外存储器之间的数据传递。这样的处理器尤其适用于神经网络运算。18.本技术实施例的技术方案可以包括以下有益效果:19.提供了适用于神经网络加速器中的数据搬运装置,可以在数据搬运过程中同时实现数据精度变换的方法,从而提升加速器的计算效率。并且将用于精度计算的算术逻辑单元前置到存储单元的数据接口,可以最大程度的减少数据存储模块和数据搬运模块之间的连线线宽,从而达到节省芯片功耗和面积的目的。20.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。附图说明21.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:22.图1为本技术一个实施例的数据搬运装置的结构模块示意图。23.图2为本技术又一个实施例的数据搬运装置的结构模块示意图。24.图3为本技术又一个实施例的数据搬运装置的结构模块示意图。具体实施方式25.为了使本技术的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本技术进一步详细说明。应当理解,所描述的实施例是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动下获得的所有其他实施例,都属于本技术保护的范围。在不矛盾或冲突的情况下,本技术提供的各实施例可以相互组合,各实施例中的部分或全部特征内容可以相互组合使用。26.此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本技术的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本技术的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本技术的各方面。27.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。28.附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。29.发明人在实践中发现虽然可以通过在芯片内部设置片上高速缓存来预取部分数据和缓存计算结果的方式来改善数据的存取速度,但由于诸如成本、体积等方面的限制,片上缓存的容量通常是有限的。尤其是在涉及神经网络的应用中,这样有限的片上缓存往往无法缓存与神经网络的多个层相关的所有数据。另外,发明人也尝试了采用直接存储器访问(direct memory access,dma)来进行片上缓存和片外存储器之间数据搬运,但发现由于每次启用dma都需要各个计算核心来分别启动和配置dma传输,这大大降低了多核心上大数量的多线程任务的执行效率。虽然可以尝试通过流水线架构的dma来提高指令之间并行性,但在用来执行诸如神经网络之类的ai算法的simt处理器中,除了指令之外,往往还需要额外的上下文来描述待处理的数据(例如神经网络各个层的输入和输出的数据排列、数据类型、特征图大小等等),如果将这些上下文连同指令一起沿流水线传播,必然会产生很大的面积消耗。30.在本技术的实施例中提供了一种数据搬运装置,将指令信息与该指令相关的上下文信息相分离,这样在尽量减少面积开销的前提下既能精简指令,又方便对于指令的上下文信息进行灵活控制,尤其适用于支持多个线程的并行处理器。31.图1给出了根据本技术一个实施例中的数据搬运装置的功能模块图。该数据搬运模块包括:控制模块以及由读入dma模块、数据缓存模块和输出dma模块构成的以流水线方式运行的数据通路。该数据搬运模块的控制模块接收处理器下发的指令和状态信息,并根据指令和状态信息从处理器的数据存储单元读取一段数据并写出到另一个存储器中。这里所接收的指令是指需要该数据搬运装置参与的指令,可以包括但不限于诸如存储指令(store)或加载指令(load)之类的数据搬运指令。这里的数据存储单元可以是但不限于寄存器阵列、片上随机存取存储器(可简称为片上ram)等。控制模块还可以指示输出dma向后一级数据存储单元输出数据。这里的另一个存储器可以是但不限于寄存器阵列、片上ram、高速缓冲存储器、内存、外部存储器以及任意其他数据存储装置。32.在该实施例中,控制模块还包括指令缓存和上下文缓存。该控制模块将接收到的一个或多个待处理的指令及其相关的上下文信息分别保存在指令缓存和上下文缓存中。其中,与指令相关的上下文信息可泛指完成该指令所需的所有相关信息,例如可以包括:与指令执行相关的信息、与该指令所处理的数据相关的信息等等。不同的指令具有不同的上下文信息,本文对此不进行任何限制。处理器可以将这些与指令相关的上下文信息作为状态信息或配置信息与指令一起发送至数据搬运装置。在本技术的实施例中,指令缓存和上下文缓存都可以被数据通路中各个模块共享。33.数据通路中每个模块在处理指令时,可以从上下文缓存中提取与指令相关的上下文信息;在完成一个指令的处理后,可将该指令涉及的数据和相应指令信息一起传输至该数据通路中的下一个模块,并开始获取下一个指令进行处理。这里与数据一起在数据通路中传递的相应指令信息是:用于供数据通路中各级模块识别要处理的相应指令及其上下文所需的信息(例如,指令标识符、上下文标识符等),并不包括与指令相关的具体上下文信息。在该数据搬运装置中,采用流水线方式运行的数据通路,沿流水线传递数据和相应指令信息但不传递上下文信息,在尽量减少面积开销的前提下提高了数据的搬运效率。34.更具体地,参考图1,在读入dma模块收到来自控制模块的指令或从指令缓存中提取待处理的指令时,从上下文缓存模块找到该指令对应的上下文信息。该读入dma模块可以根据所获取的与指令相关的上下文信息来产生对外部的存储模块的数据请求。该数据请求中至少包括要读取的数据的地址和大小。外部的存储模块在收到数据请求后将数据返回给读入dma模块。读入dma模块可以将收到的数据与当前处理的指令的相关信息(例如,指令标识符)一起输出给数据通路中的下一个模块,例如数据缓存模块。在读入dma模块传递完成之后,读入dma模块可以立刻向控制模块反馈指令完成信息,并从指令缓存中获取下一个指令,同时在上下文缓存模块中获取该指令的上下文信息,从而可以开始进行下一条指令的运行。35.可选地,控制模块在收到来自读入dma模块的指令完成信息后,可以将完成的指令从指令缓存中清除以准备接收下一条指令。但在上下文缓存模块中保存的与完成的指令相关的上下文信息仍需要保留,以供流水线中后续模块使用。在一些实施例中,由于指令本身的体量很小(用于指示搬运数据的指令信息体量小),相较于将指令本身和指令对应的具体上下文信息一起沿流水线传递的方式而言,在流水线式的数据通路不直接传递具体上下文信息的情况下,即使沿着流水线传递指令本身,也不会造成较大面积开销。数据通路中的各个模块可以选择将当前指令本身和/或当前指令的指令标识符沿着流水线传递,但流水线式的数据通路仍然不会直接传递指令的上下文信息,而是由数据通路中的各模块分别根据收到的相应指令信息,依据当前指令和/或指令标识符从共享的上下文缓存中获取各模块所需的上下文信息。其中,若流水线中不传递指令对应的具体上下文,也不直接传递指令本身,而是通过传递标识符并依据标识符来获取缓存内容的方式进行数据搬运,可以精简指令,可更进一步地降低数据搬运过程中占用的带宽开销。36.数据缓存模块可用于接收来自数据通路中上一级模块(例如可以是读入dma模块)输出的数据以及相应指令信息。数据缓存模块可以根据收到的相应指令信息从上下文缓存中选择相应的上下文信息,并根据所获取的上下文信息对收到的数据和相应指令信息进行缓存。在数据达到输出要求时,数据缓存模块可以将缓存的数据及其相应指令信息一起传递给数据通路中的下一级模块(例如,输出dma模块)。例如,数据缓存模块可以在检测到缓存中有足够的数据后开始进行输出,或者可以在所缓存的数据量能满足输出通道的基本数据要求时开始进行输出。又例如,数据缓存模块可根据上下文信息中的相关信息对数据进行合并来增加输出数据的带宽利用率。37.在一些实施例中,数据缓存模块还可以根据所获取的上下文信息中关于输出数据的描述信息,对收到的数据执行相应变换操作以得到相应的输出数据,并将变换后的数据和相应指令信息进行缓存。这里的变换操作可包括但不限于下列中一个或多个的组合:旋转、反向、转置、合并、拆分等等。例如,数据缓存模块可以根据上下文信息中包含的输入数据排列信息和输出数据排列信息等描述信息,对收到的数据进行不同维度的旋转,反向以及转置等变换操作,以使输入数据更好地适配输出数据的格式。这尤其适用于多层神经网络的处理,这是因为不同的网络层所需的输入数据维度、格式或类型都可能有不同,数据搬运模块在缓存数据的过程中进行变换操作将具有较高适配性,在处理器处理完一个网络层时,会将处理结果写入缓存并经该数据搬运模块保存至存储器中,而在开始下一个网络层的处理时,直接读取数据即可,不需执行数据格式的转换。这是因为该数据搬运模块在保存数据的过程中已经完成了相应的数据转换和适配工作。这显然减少了处理器的计算负载,有利于提高处理器对于大数据的吞吐量。38.继续参考图1,输出dma模块接收来自数据通路中上一级模块(例如数据缓存模块)输出的数据及相应指令信息,并根据收到的相应指令信息从上下文缓存中选择与指令关联的上下文信息。输出dma模块可以根据所获取的上下文信息生成输出地址,并将输出地址和收到的数据一起进行输出,例如将收到的数据写入到目标存储器中的相应地址处。与此同时,输出dma模块可以向控制模块反馈指令完成信息。控制模块响应于来自输出dma模块的指令完成信息从上下文缓存中清除与指令相关的上下文信息。控制模块还可以向外部的相关控制单元发送通知,以指示该数据搬运装置已经准备好接收下一条指令。39.在一些实施例中,在数据搬运装置的数据通路中,还可以包括位于数据缓存模块之前的算术逻辑单元模块(可简称为alu模块)。该alu模块根据从读入dma模块接收的相应指令信息从上下文缓存中选择与指令相关的上下文信息,根据所获取的上下文信息对从读入dma模块收到的数据执行预设的操作。这样的预设的操作包括但不限于:神经网络中激活函数的计算、数据精度变换、量化等。该alu模块将处理后的数据和相应指令信息一起传递给数据通路中的下一个模块(例如可以传递给数据缓存模块)。应理解,这里的alu模块是可选的模块,尤其适用于神经网络处理。例如,在多层结构的神经网络中,上一层的输出特征数据作为下一层的输入特征数据提供给下一层以便进一步处理,每一层常常是将输入神经元向量和相应权值向量进行运算后,将所得到的运算结果经过激活函数才会产生输出特征。这样的激活函数会在每一层重复进行。因此在本技术的实施例中,通过数据搬运装置中提供alu模块来进行激活函数的处理,使得这些重复的激活函数的执行独立于各个计算核心。这样每当处理完神经网络一层的计算后,可将计算结果直接保存在相应的片上缓存中,数据搬运装置在进行这些中间结果的搬运过程中就可以完成激活函数的执行,并将经激活函数处理后的数据进行保存;而在开始神经网络的下一层处理时,计算核心直接获取所保存的数据进行计算即可。通过这样的alu模块,可执行重复的一些固定运算,减少了计算核心的计算负载,提高了处理器的数据处理吞吐量。40.在上述的实施例中,该数据搬运装置的数据通路以流水线方式运行。该数据通路中每个模块将数据与相应指令信息一起沿流水线进行传递,因此每个模块在处理完一个指令后可以立即获取下一个指令来进行处理,从而提高了指令的并行程度。并且在该数据搬运装置中,将诸如指令标识符之类的部分指令信息与数据一起沿数据通路中流水线传递,而不需要在流水线中传递指令相关的所有上下文信息,因此在改善数据搬运效率的同时降低了芯片面积开销。41.进一步地,在发明人对于处理器芯片的研究实现中发现,在实际的处理器芯片中负责数据存储的模块和负责数据搬运的模块通常都被放在芯片的不同分区中,在这两个模块之间存在较长的数据连线。而在神经网络运算中需要传输的数据量很大,为提高效率,处理器芯片中负责数据存储的模块和负责数据搬运的模块之间数据连线通常还会比较宽,这些连线占据的芯片面积很大,而且大量的数据传输也会造成较大的功耗损失。因此在又一些实施例中,提供了结构不同于上文实施例的数据搬运装置,其将用于进行诸如精度变换之类的计算操作的算术逻辑单元alu前置到数据存储单元的数据接口处,这样从数据存储单元输出的数据首先进行精度变换,然后才会进行传输,由此可以最大程度地减少数据存储模块和数据搬运模块之间的连线线宽,从而进一步节省了芯片功耗和面积。42.图2给出了根据本发明又一些实施例的数据搬运装置的结构模块示意图。与图1所示的数据搬运装置结构不同,在图2中,算术逻辑单元alu及其关联的对齐缓存前置到处理器中数据存储单元的数据接口处,从数据存储单元输出的数据首先经过alu的处理,然后才会传递给读入dma模块。该算术逻辑单元的一侧直接与并行处理器的数据存储单元的数据接口相耦合,而另一侧可通信地连接至读入dma模块,例如可以通过数据连线直接连接至读入dma模块,也可以间接地通过其他的中间模块连接至读入dma模块。43.更具体地,数据搬运模块的控制模块接收处理器下发的指令和状态信息,并根据指令和状态信息从处理器的数据存储单元读取一段数据并写出到另一个存储器中。如上文提到的,读入dma模块会根据来自控制模块的控制信息,向数据存储模块发送数据请求信息。该数据请求信息可以包括数据请求使能信号,数据地址等。其中数据地址为读入dma模块根据控制模块收到的状态信息中包含的与指令相关的上下文信息计算得到的。在该实施例中,读入dma模块会在发送数据请求的同时还会将算术逻辑单元alu执行操作所必需的数据配置信息保存至与该alu关联的对齐缓存中。该数据配置信息同样来自于控制模块收到的状态信息中包含的与指令相关的上下文信息,例如可包括源数据格式、目标数据格式以及激活函数类型等。在该实施例中,读入dma模块所发送的每个数据请求都对应一个数据配置信息,同时对于每个数据请求,收到该数据请求的数据存储单元都会相应的输出一笔数据。44.如图2所示,数据存储单元对于每个数据请求返回数据首先被输出至设置在该数据存储单元的数据接口处的算术逻辑单元alu。alu模块接收数据存储单元对于每次数据请求所返回的数据,并从对齐缓存中获取每笔数据对应的数据配置信息来进行相应的运算,并将运算的结果传递给后一级的模块,例如传递给读入dma模块。该算术逻辑单元alu执行的运算可以为数据精度变换(如fp32到fp16的变换、float到int的变换、fp32到bf16的变换等),量化以及计算激活函数(如relu、tanh、sigmod等)等。数据精度变换通常包括从低精度类型向高精度类型的变换以及从高精度类型向低精度类型的变换。量化通常是指将一个大集合(通常是一个连续集合)中的输入值映射到一个较小集合(通常具有有限数量的元素)中的过程,例如在机器学习领域,这个量化常常指的是将位宽比较宽的浮点数变换成位宽较低的定点数(如fp32-》int8,fp32-》int4等)。应理解,数据精度变换、量化以及激活函数的计算是神经网络领域中常见的运算操作,本文仅是举例说明,而非进行任何限制。45.在通常的芯片硬件设计中,芯片上每个模块都有预设的最大支持的数据宽度,模块之间的数据连线的位宽也是按照最大支持的数据宽度来设计。因此数据存储单元与数据搬运装置之间的数据连线也是按照二者所支持的数据宽度中较大值来设置。而通常数据存储单元所返回数据的数据宽度通常会大于数据搬运模块支持的最大数据宽度。假设数据搬运模块最大支持的数据宽度为b比特,而数据存储单元最大支持的数据宽度为n*b比特,其中n为大于1的自然数,如果在这两个模块之间传输宽度为n*b比特的数据,数据连线位宽需要n*b比特。如上文提到的,在实际的处理器芯片中负责数据存储的模块和负责数据搬运的模块通常都被放在芯片的不同分区中,则在这两个模块之间存在较长的且具有较高位宽的数据连线需要占据很大的芯片面积,且需要较长的传输延迟。而在该实施例中,通过如图2所示的将算术逻辑单元alu及其关联的对齐缓存前置到数据存储单元的数据接口处,使得数据存储模块和数据搬运模块之间的数据连线的位宽只有b个比特,可以有效减少芯片不同分区之间的走线宽度、芯片的布局面积以及功耗。其中alu模块所支持的最大的精度变换操作是根据数据存储单元支持的最大数据宽度和数据搬运装置支持的最大数据宽度来设置。46.发明人在实践中还发现沿着位于芯片不同分区的数据存储模块和数据搬运模块之间的数据连线传输数据时,数据的传输时间经常会超出一个时钟周期,这样的数据传输延迟经常会引起数据搬运模块内部数据处理时序紊乱,尤其是对于数据搬运模块中以流水线方式运行的数据通路中各个模块看的处理时序,其影响更大。因此,在本发明的一些实施例中,还引入了两个流水线打拍模块来改善数据搬运模块内部各模块的时序和同步。47.图3给出了根据本发明又一些实施例的数据搬运装置的结构模块示意图。除了如上文结合图1介绍的控制模块和由读入dma模块、数据缓存模块和输出dma模块构成的以流水线方式运行的数据通路,以及上文结合图2介绍的设置在处理器的数据存储单元的数据接口处的算术逻辑单元alu及其关联的对齐缓存之外,该数据搬运装置还包括在处理器的数据存储单元的数据接口处设置的请求流水模块、数据流水模块和mux模块。其中请求流水模块的一侧与数据存储单元的配置接口相耦合并且还会连接至对齐缓存,另一侧通过数据连线连接至读入dma模块。数据流水模块一侧与算术逻辑单元连接,而另一侧通过数据连线连接至读入dma模块。48.更具体地,请求流水模块接收从数据搬运装置的读入dma模块发送来的数据请求和数据配置信息,并将两个信息同时进行一定级数的流水线打拍,将经过流水线打拍后的数据请求信息传递给数据存储单元,并将数据配置信息传送至对齐缓存模块。49.对齐缓存模块接收由请求流水模块延迟的数据配置信息,并缓存该数据配置信息。对齐缓存模块例如可以先进先出的队列形式来实现。数据搬运装置中的alu模块和多路复用器(mux)模块可以根据需求从对齐缓存获得相应的数据配置信息来执行相应的操作。50.数据存储单元保存处理器计算得到的数据结果,并根据数据流水模块传递过来的数据请求返回相应的数据,这些返回的数据首先传递给连接在该数据存储单元的数据接口处的alu模块。该alu模块在接收到从数据存储单元对于相应数据请求所返回的数据时,从对齐缓存中获取与该数据请求对应的数据配置信息进行相应的运算,并将运算的结果传递给后一级mux模块。在芯片上同样的数据接口往往会有不同数据类型的数据进行复用,对于不同的数据的排列是不同的。比如同样是128byte的数据接口可以传输的fp16类型的数据个数是64个而传输的int8类型的数据个数是128。通过多路复用器mux模块可以实现不同数据类型的数据对于同一数据接口的复用。该mux模块在接收到来自alu模块输出的数据时,按照对齐缓存内的相应数据配置信息对收到的数据进行重排列,并将处理后的数据传递给数据流水模块。所述mux模块的输入输出数据的宽度都为b(bit),与该数据搬运装置的输入和输出数据宽度相同。应理解,该mux模块是可选的,且其位置是可变的。在一些实施例中,该mux模块也可以设置在数据通路中位于数据缓存模块之前。51.数据流水模块接收来自上一级模块(例如alu模块或者mux模块)传递过来的数据,并将数据经过一定级数的流水线进行打拍后,将打拍后的数据传递给读入dma模块。52.读入dma模块在收到自数据流水传递的返回数据后,将其传递给流水线中后一级模块,例如数据缓存模块。该读入dma包括n+1个数据通道,每个数据通道的数据宽度为b/n(bit),其中n+1代表数据缓存模块中存储块(bank)的数量。53.数据缓存模块可以根据控制模块接收的状态信息,对读入dma传过来的数据信息按照特定的顺序写入内部缓存,同时将缓存内的数据按照特定的顺序读出并传递给输出dma模块。这些模块不会改变每一笔数据的宽度,即数据宽度为b(bit)。如上文提到的,数据缓存模块还可以进行数据搬运装置的输入输出的速率匹配以及输入输出数据的维度变换等功能。54.输出dma模块根据控制模块接收的状态信息,将数据缓存模块传过来的数据按照一定格式写入到外部存储器。这里的外部存储器可以是cache、片上ram,寄存器阵列以及内存等存储资源。输出dma模块可以根据控制模块接收的状态信息对每笔数据产生一个写控制信息。每个写控制信息可以包括但不限于写使能、写地址以及写掩码等。同时输出dma模块还可以根据要写入的外部存储器的规格将输出数据分成m个通道,每个通道的数据宽度为b(bit)/m,其中m为该外部存储器的存储块(bank)的数目。55.在该实施例中,请求流水和数据流水都是用于进行流水线打拍,以使得流水线中各模块时序保持同步。例如,如果前级操作时间恰等于后级操作时间,则直接将前级的输出汇入后级的输入即可;而如果前级操作时间大于后级操作时间,则需要对前级的输出数据适当缓存后才能汇入后级的输入;而如果前级操作时间小于后级操作时间,需要在前级缓存数据,以避免后级数据溢出。因此,请求流水和数据流水通常都是包括一组寄存器,每个寄存器打一个节拍(相当于插入一个流水线级),用于对流水线上传递的数据进行缓存和延迟,以使得前级模块和后级模块时序同步。在该实施例中,在请求流水和数据流水包含的寄存器数量(即需要插入的流水线节拍数量或级数)可以是在芯片设计阶段根据数据存储模块和数据搬运模块之间的芯片上布局的距离来确定的。数据存储模块和数据搬运模块之间的芯片上布局的距离越远,数据传输带来的时间延迟越长,则相应地,请求流水和数据流水包含的寄存器数量也越多。56.在本技术的又一些实施例中,还提供了一种适用于神经网络的并行处理器,其包括上文结合图1、图2或图3介绍的数据搬运装置,利用该数据搬运装置来执行该并行处理器的不同存储器之间的数据传递。57.应理解虽然上文以神经网络加速器来介绍数据搬运模块机器工作原理,但这样的数据搬运模块并不限于神经网络加速器,而是还可以适用于诸如gpgpu,gpu以及其他通用向量处理器之类的并行处理器中。58.应理解,对于本文中提到诸如读入dma模块、读出dma模块、alu模块、控制模块或控制器之类的模块及其执行的功能,除了以计算机可读程序方式实现之外,完全可以通过将相应功能模块、过程或步骤进行逻辑编程在使得这些模块以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等形式来实现相同功能。因此,这样实现的功能模块可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件的内部结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现相关过程或方法步骤的软件模块又可以是硬件部件内的结构。59.本说明书中针对“各个实施例”、“一些实施例”、“一个实施例”、或“实施例”等的参考指代的是结合所述实施例所描述的特定特征、结构、或性质包括在至少一个实施例中。因此,短语“在各个实施例中”、“在一些实施例中”、“在一个实施例中”、或“在实施例中”等在整个说明书中各地方的出现并非必须指代相同的实施例。此外,特定特征、结构、或性质可以在一个或多个实施例中以任何合适方式组合。因此,结合一个实施例中所示出或描述的特定特征、结构或性质可以整体地或部分地与一个或多个其他实施例的特征、结构、或性质无限制地组合,只要该组合不是非逻辑性的或不能工作。60.本说明书中“包括”和“具有”以及类似含义的术语表达,意图在于覆盖不排他的包含,例如包含了一系列步骤或单元的过程、方法、系统、产品或设备并不限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。“一”或“一个”也不排除多个的情况。另外,本技术附图中的各个元素仅仅为了示意说明,并非按比例绘制。61.虽然本技术已经通过上述实施例进行了描述,然而本技术并非局限于这里所描述的实施例,在不脱离本技术范围的情况下还包括所做出的各种改变以及变化。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部