CN115145842A - 数据缓存处理器及方法 - Google Patents
数据缓存处理器及方法 Download PDFInfo
- Publication number
- CN115145842A CN115145842A CN202110352792.9A CN202110352792A CN115145842A CN 115145842 A CN115145842 A CN 115145842A CN 202110352792 A CN202110352792 A CN 202110352792A CN 115145842 A CN115145842 A CN 115145842A
- Authority
- CN
- China
- Prior art keywords
- buffer
- data
- layer
- signal
- read
- 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
- 238000000034 method Methods 0.000 title abstract description 28
- 239000000872 buffer Substances 0.000 claims abstract description 383
- 238000003672 processing method Methods 0.000 claims description 4
- 238000003860 storage Methods 0.000 abstract description 33
- 238000005516 engineering process Methods 0.000 abstract description 4
- 230000015654 memory Effects 0.000 description 18
- 230000006870 function Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 9
- 238000013473 artificial intelligence Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005034 decoration Methods 0.000 description 2
- 238000012432 intermediate storage Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
Abstract
本发明公开了一种数据缓存处理器及方法。其中,该方法包括:缓存器读模块,缓存器写模块,第一缓存器和第二缓存器,其中:缓存器读模块,用于从第一缓存器和第二缓存器中确定读缓存器,并从读缓存器中读取多层运算中的预定层的待运算数据;缓存器写模块,用于从第一缓存器和第二缓存器中确定写缓存器,并将对待运算数据进行运算后获得的运算结果数据写入写缓存器。本发明解决了相关技术中缓存中间层数据时,出现的占用芯片较多的存储资源的技术问题。
Description
技术领域
本发明涉及计算机领域,具体而言,涉及一种数据缓存处理器及方法。
背景技术
随着人工智能(Artificial Intelligence,简称为AI)技术的发展和广泛应用,对不同场景下的AI计算提出了越来越大的挑战。根据使用场景不同,对AI的需求也是千变万化。AI计算的技术核心是加速器卷积运算,而在复杂的卷积运算中,不同卷积运算层之间会产生大量中间层数据,即上一层卷积运算层的输出数据和下一层卷积运算层的输入数据。现有的AI加速器方案中,一般是采用现场可编程门阵列(Field-Programmable GateArray,简称为FPGA)芯片、微控制单元(Microcontroller Unit,简称为MCU)芯片或基于FPGA与MCU的片上系统(简称为FPGA+MCU SoC,其中,片上系统System on Chip,简称为SoC)的方法设计AI加速器。如申请号为201910875064.9的专利公开了以MCU+FPGA的一种系统架构,曾创造性地将加速器独立地从共享存储器中读取数据以及进行运算,并写回运算结果。其中,加速器中间层数据缓存大多是利用FPGA或MCU的片内块状存储单元,上一层卷积运算产生的输出数据写入到片内块状存储单元,然后下一层卷积运算从片内块状存储单元读取该数据作为输入数据。但采用上述数据存储的方法对中间层数据进行处理时,会占用芯片较多的存储资源。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据缓存处理器及方法,以至少解决相关技术中缓存中间层数据时,出现的占用芯片较多的存储资源的技术问题。
根据本发明实施例的一个方面,提供了一种数据缓存处理器,包括:缓存器读模块,缓存器写模块,第一缓存器和第二缓存器,其中:所述缓存器读模块,用于从所述第一缓存器和所述第二缓存器中确定读缓存器,并从所述读缓存器中读取多层运算中的预定层的待运算数据;所述缓存器写模块,用于从所述第一缓存器和所述第二缓存器中确定写缓存器,并将对所述待运算数据进行运算后获得的运算结果数据写入所述写缓存器。
可选地,所述预定层的运算结果数据作为所述预定层的下一层的待运算数据,所述第一缓存器和所述第二缓存器在所述预定层作为读缓存器和写缓存器的角色在下一层中互换。
可选地,所述缓存器读模块包括:第一读使能控制器,用于使能从所述第一缓存器读取所述待运算数据;以及,第二读使能控制器,用于使能从所述第二缓存器读取所述待运算数据。
可选地,所述第一读使能控制器,用于接收从所述预定层输出的读使能控制信号,以及第一信号,并输出对所述读使能控制信号与所述第一信号进行运算后的第一结果信号;所述第二读使能控制器,用于接收从所述预定层输出的读使能控制信号,以及第二信号,并输出对所述读使能控制信号与所述第二信号进行运算后的第二结果信号;其中,所述第一信号与所述第二信号在所述预定层为一对读写相反信号,所述第一结果信号和所述第二结果信号在所述预定层为一对读写相反信号。
可选地,所述第一读使能控制器在所述预定层的下一层输入的第一信号为对在所述预定层输入的第一信号取反得到。
可选地,所述多层运算中的初始层的第一信号包括:读使能信号。
可选地,所述缓存器写模块包括:第一写使能控制器,用于使能将所述运算结果数据写入所述第一缓存器;以及,第二写使能控制器,用于使能将所述运算结果数据写入所述第二缓存器。
可选地,所述第一写使能控制器,用于接收从所述预定层输出的写使能控制信号,以及第三信号,并输出对所述写使能控制信号与所述第三信号进行运算后的第三结果信号;所述第二写使能控制器,用于接收从所述预定层输出的写使能控制信号,以及第四信号,并输出对所述读使能控制信号与所述第四信号进行运算后的第四结果信号;其中,所述第三信号与所述第四信号在所述预定层为一对读写相反信号,所述第三结果信号和所述第四结果信号在所述预定层为一对读写相反信号。
可选地,所述第一写使能控制器在所述预定层的下一层输入的第三信号为对在所述预定层输入的第三信号取反得到。
可选地,所述多层运算中的初始层的第三信号包括:读使能信号。
根据本发明实施例的另一方面,还提供了一种数据缓存处理方法,包括:从读缓存器中读取多层运算中的预定层的待运算数据,其中,所述读缓存器为第一缓存器和第二缓存器中的一个;将对所述待运算数据进行运算后获得的运算结果数据写入写缓存器,其中,所述写缓存器为所述第一缓存器和所述第二缓存器的另一个。
可选地,所述预定层的运算结果数据作为所述预定层的下一层的待运算数据,所述第一缓存器和所述第二缓存器在所述预定层作为读缓存器和写缓存器的角色在下一层中互换。
在本发明实施例中,采用增加两个缓存器分别用于从其中读取待运算数据,以及将运算后得到的结果数据进行写入,并且在不同的运算层,缓存器读写功能互换的方式对中间层数据进行处理,使得不同缓存器中的读写模块分别起作用,缓存器读模块从对应的缓存器中读取待运算数据,缓存器写模块将运算后得到的结果数据写入对应的缓存器中,相对于相关技术中不同运算层在芯片的同一块存储器内进行存储,节省了大量的片内存储资源,进而解决了相关技术中缓存中间层数据时,出现的占用芯片较多的存储资源的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例1的数据缓存处理器的结构框图;
图2是根据本发明实施例1的数据缓存处理器中缓存器读模块102的结构框图;
图3是根据本发明实施例1的数据缓存处理器中缓存器写模块104的结构框图;
图4是根据本发明可选实施方式的基于FPGA的加速器中间层数据缓存处理器的结构示意图;
图5是根据本发明可选实施方式的缓存器读写功能互换的结构示意图;
图6是根据本发明可选实施方式的中间层数据缓存的示意图;
图7是根据本发明实施例的数据缓存处理方法的流程图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,还提供了一种数据缓存处理器,图1是根据本发明实施例1的数据缓存处理器的结构框图,如图1所示,该数据缓存处理器包括:缓存器读模块102,缓存器写模块104,第一缓存器106和第二缓存器108,下面对该数据缓存处理器进行详细说明。
缓存器读模块102,用于从第一缓存器和第二缓存器中确定读缓存器,并从读缓存器中读取多层运算中的预定层的待运算数据;缓存器写模块104,用于从第一缓存器和第二缓存器中确定写缓存器,并将对待运算数据进行运算后获得的运算结果数据写入写缓存器;第一缓存器106,连接于上述缓存器读模块102、缓存器写模块104;第二缓存器108,连接于上述缓存器读模块102、缓存器写模块104。
通过上述数据缓存处理器的结构,采用增加两个缓存器分别用于从其中读取待运算数据,以及将运算后得到的结果数据进行写入,并且在不同的运算层,缓存器读写功能互换的方式对中间层数据进行处理,使得不同缓存器中的读写模块分别起作用,缓存器读模块从对应的缓存器中读取待运算数据,缓存器写模块将运算后得到的结果数据写入对应的缓存器中,相对于相关技术中不同运算层在芯片的同一块存储器内进行存储,节省了大量的片内存储资源,进而解决了相关技术中缓存中间层数据时,出现的占用芯片较多的存储资源的技术问题。
作为一种可选的实施例,预定层的运算结果数据作为预定层的下一层的待运算数据,第一缓存器和第二缓存器在预定层作为读缓存器和写缓存器的角色在下一层中互换。使得在不同的运算层,缓存器的读写功能可以进行互换,以便对中间层数据进行处理,节省了大量的片内存储资源。
作为一种可选的实施例,缓存器读模块102,用于从第一缓存器和第二缓存器中确定读缓存器,即是缓存器读模块从第一缓存器和第二缓存器中选择一个缓存器作为读缓存器,即对该选择的缓存器执行读操作,具体实现时,可以依据向缓存器输入的控制信号确定。
图2是根据本发明实施例1的数据缓存处理器中缓存器读模块102的结构框图,如图2所示,该缓存器读模块102可以包括:第一读使能控制器202和第二读使能控制器204,下面对该缓存器读模块102进行说明。
第一读使能控制器202,用于使能从第一缓存器读取待运算数据;第二读使能控制器204,用于使能从第二缓存器读取待运算数据。
在上述举例中,该第一读使能控制器202用于向第一缓存器发送控制信号,使得能够从第一缓存器中读取待运算数据;该第二读使能控制器204用于向第二缓存器发送控制信号,使得能够从第二缓存器中读取待运算数据。需要说明的是,向第一缓存器发送的控制信号与向第二缓存器发送的控制信号在同一时间不能是相同的信号,因为在第一缓存器和第二缓存器中在同一时间只能有一个读使能,即仅实现从其中一个缓存器中读取待运算数据。
作为一种可选的实施例,上述第一读使能控制器202,用于接收从预定层输出的读使能控制信号,以及第一信号,并输出对读使能控制信号与第一信号进行运算后的第一结果信号;上述第二读使能控制器204,还用于接收从预定层输出的读使能控制信号,以及第二信号,并输出对读使能控制信号与第二信号进行运算后的第二结果信号;其中,第一信号与第二信号在预定层为一对读写相反信号,第一结果信号和第二结果信号在预定层为一对读写相反信号。
举例来说,假设该预定层是多层运算中的初始层(当然可以是任意一层),对预定层输出的控制信号与第一信号执行的运算是,如果两者相同则使能从预定层输出控制信号。比如,从预定层输出的是读使能信号,接收到的该初始层的第一信号为读使能信号,由于从预定层输出的是读使能信号,该第一信号也为读使能信号,因此,两者执行运算后的结果是:两者相同,使能从预定层输出控制信号,即读使能信号。第一使能控制器202使能从第一缓存器读取待运算数据,因此,所实现的结果即是从第一缓存器读取待运算数据。此时,第二信号是在预定层与第一信号是一对读写相反的信号,因此,第二信号在预定层是写使能信号。对从预定层输出的读使能控制信号和第二信号执行运算后,由于两者不同,因此,第二读使能控制器204不使能,不使能从第二缓存器读取待运算数据。通过上述控制,实现了在同一预定层(比如,初始层),第一缓存器和第二缓存器不能同时执行读操作,即第一缓存器和第二缓存器在同一时间不能同时作为读缓存器。
另外,在缓存器读模块从第一缓存器和第二缓存器中确定读缓存器后,即在缓存器读模块从第一缓存器和第二缓存器中选择出读缓存器后,第一缓存器和第二缓存器中剩下的缓存器即为写缓存器。因此,在多层运算中的预定层中,第一缓存器和第二缓存器,一个用于从其中读取待运算数据,另一个用于将运算后获得的运算结果数据写入。
图3是根据本发明实施例1的数据缓存处理器中缓存器写模块104的结构框图,如图3所示,该缓存器写模块104包括:第一写使能控制器302,第二写使能控制器304,下面对该缓存器写模块104进行说明。
第一写使能控制器302,用于使能将运算结果数据写入第一缓存器;以及,第二写使能控制器304,用于使能将运算结果数据写入第二缓存器。
在上述举例中,该第一写使能控制器302用于向第一缓存器发送控制信号,从而使能将运算结果数据写入第一缓存器;该第二写使能控制器304用于向第二缓存器发送控制信号,从而使能将运算结果数据写入第二缓存器。需要说明的是,向第一缓存器发送的控制信号与向第二缓存器发送的控制信号在同一时间不能是相同的信号,因为在第一缓存器和第二缓存器中在同一时间只能有一个写使能,即仅实现将运算结果数据写入其中一个缓存器中。
作为一种可选的实施例,上述第一写使能控制器302,用于接收从预定层输出的写使能控制信号,以及第三信号,并输出对写使能控制信号与第三信号进行运算后的第三结果信号;上述第二写使能控制器304,用于接收从预定层输出的写使能控制信号,以及第四信号,并输出对读使能控制信号与第四信号进行运算后的第四结果信号;其中,第三信号与第四信号在预定层为一对读写相反信号,第三结果信号和第四结果信号在预定层为一对读写相反信号。
还是以上述的举例来说,假设该预定层是多层运算中的初始层(当然可以是任意一层),对预定层输出的控制信号与第三信号执行的运算是,如果两者相同则使能从预定层输出控制信号。比如,从预定层输出的是写使能信号,接收到的该初始层的第三信号为读使能信号,因此,将从预定层输出的是写使能信号与该第三信号进行运算后,得到的结果是两者不相同,第一写使能控制器302不使能,即不使能将运算结果数据写入第一缓存器,因此,在该初始层时,第一缓存器是不执行写操作的,呼应上述在初始层第一缓存器执行的读操作。此时,第四信号与第三信号是一对读写相反的信号,即,第四信号是写使能信号。将从预定层输出的控制信号与第四信号执行运算,由于从预定层输出的控制信号是写使能信号,第四信号也是写使能信号,因此,得到的第四结果信号是:两者相同,使能从预定层输出控制信号,即写使能信号。第二写使能控制器304使能,使能将运算结果数据写入第二缓存器,呼应上述在初始层第二缓存器执行的写操作。通过上述控制,实现了在同一预定层(比如,初始层),第一缓存器和第二缓存器不能同时执行写操作,即第一缓存器和第二缓存器在同一时间不能同时作为写缓存器。
需要说明的是,预定层的运算结果数据作为预定层的下一层的待运算数据,第一缓存器和第二缓存器在预定层作为读缓存器和写缓存器的角色在下一层中互换。因此,多层运算中层与层之间是存在关联的,该预定层可以是多层中的任意一层。假设该预定层是多层运算中的第5层,在第5层中该第一缓存器是读缓存器,第二缓存器是写缓存器;则在第6层中该第一缓存器和第二缓存器中的角色即会互换:第一缓存器是写缓存器,第二缓存器是读缓存器。
作为一种可选的实施例,读缓存器作为第一缓存器和第二缓存器中的一个,另一个缓存器则作为写缓存器,即,同一时刻第一缓存器与第二缓存器的读使能控制信号只有一个有效,写使能控制信号只有一个有效,且读使能控制信号与写使能控制信号不能同时有效。例如,当第一缓存器读使能控制信号有效时,作为读缓存器,此时,完成读缓存器的功能操作,从第一缓存器中读取预定层的待运算数据。第二缓存器则写使能控制信号有效,作为写缓存器,完成写缓存器的功能操作。若当第一缓存器写使能控制信号有效时,作为写缓存器,完成写缓存器的功能操作,可以将预定层的运算结果数据写入该第一缓存器,此时,第二缓存器则读使能控制信号有效,作为读缓存器,完成读缓存器的功能操作。保证了两块缓存器功能不同,解决了现有方案中因卷积运算产生的大量中间层数据严重消耗有限的片内存储资源,有效节省了大量的片内存储资源。
另外,在相关技术中,在同一块缓存器中对中间层数据进行读写时,一般是在一层运算完成后,将运算结果数据存入该同一块缓存器中的一段输出存储空间,之后,将运算结果数据从该输出缓存空间搬运到同一块缓存器的另一段输入缓存空间,用于下一层从中读取该运算结果数据实现运算。采用本发明实施例的两个缓存器分别用于数据的读取和写入,并不需要执行数据从一个缓存器搬运到另一个缓存器,因而有效地解决了不同卷积运算层在同一块存储器中读写中间层数据而产生时延的问题,提高了加速器卷积运算中间层数据的读写效率,降低了中间层数据的读写时延。
作为一种可选的实施例,通过缓存器读模块的控制,依据上述相应控制信号,从第一缓存器和第二缓存器中确定出读缓存器,进而依据有效的读使能信号,使能从读缓存器中读取多层运算中预定层的待运算数据;通过缓存器写模块的控制,依据上述相应控制信号,从第一缓存器和第二缓存器中确定出写缓存器,进而依据有效的写使能信号,使能将待运算数据进行运算后获得的运算结果数据写入写缓存器。需要说明的是,此处从读缓存器中读取待运算数据即是直接读取的方式,并不需要如相关技术中需要存储到一个中间存储空间。同样将运算结果写入写缓存器时,也是依据相应的使能信号,使能将运算结果数据写入写缓存器,也不需要在写入写缓存器之前,将运算结果数据存储到一个中间存储空间。其中,该预定层可以为多层运算中的任意一层。通过上述缓存器读模块读取读缓存器中的第N层数据,进行卷积运算,直至这一层卷积运算结束。此时,上述缓存器读模块还可以判断当前读的第N层是否为最后一层,若为最后一层,则结束卷积运算,把待运算数据当为最终数据;若不为最后一层,则通过缓存器读模块和缓存器写模块的控制,缓存器进行读写功能互换,缓存器读模块读取另一缓存器中的数据,即将第N层的运算结果数据作为第N+1层的待运算数据,进行卷积运算,直到一层卷积运算结束,通过缓存器写模块的控制,将结果写入写缓存器。此时,缓存器写模块判断当前写的第N+1层是否为最后一层,若为最后一层,则写入待运算数据作为最终数据,结束;若不为最后一层,则返回到读取缓存器的数据步骤,循环操作,直至计算至最后一层结束。该操作节省了存储资源,提高了存储资源的利用率,降低了各层数据流转的时延,判断是否为最后一层,保证了顺利、流畅地处理中间层数据,可以更好的适应复杂多变的场景。
作为一种可选的实施例,第一缓存器和第二缓存器在预定层作为读缓存器和写缓存器的角色在下一层中互换。在多层运算中,每运算完一层的数据后,缓存器都进行角色的互换。例如,当前预定层第一缓存器作为读缓存器,第二缓存器作为写缓存器;则上一层时,第一缓存器作为写缓存器,第二缓存器作为读缓存器;同样的方法可知,下一层时,第一缓存器作为写缓存器,第二缓存器作为读缓存器。以此类推,依次循环。在相关技术中,一般是分为输入缓存器(即上述所指的输入缓存空间)和输出缓存器(即上述所指的输出缓存空间),数据计算完一层之后先存入输出缓存器,然后将数据搬运到输入缓存器之后再进行下一层的计算。而在本可选实施例中,通过缓存器自身功能的转换,不用频繁地转移中间层数据,降低了由输出缓存器到输入缓存器的延迟,即降低了各层数据流转的时延,而且不用换占据片内存储单元,解决了相关技术中缓存中间层数据时,会出现占用较多存储资源、时延较长的技术问题。
基于上述实施例及可选实施例,提供了一种可选实施方式。
在该可选实施方式中,提供了一种基于FPGA的加速器中间层数据缓存处理器,在该数据缓存处理器中,通过缓存器功能互换进行中间层数据处理,使用FPGA内嵌的两块伪静态随机存储器(Pseudo static random access memory,简称为PSRAM),存储卷积运算的中间层数据。下面对该可选实施方式进行说明。
图4是根据本发明可选实施方式的基于FPGA的加速器中间层数据缓存处理器的结构示意图,如图4所示,包括:卷积运算模块、缓存器写模块、缓存器读模块和缓存器C(同上述第一缓存器)、缓存器D(同上述第二缓存器)。其中,
缓存器C、缓存器D:使用FPGA内嵌的两块伪静态随机存储器,作为加速器卷积运算中间层数据缓存器C和缓存器D,用于存储卷积运算的中间层数据。
缓存器读模块、缓存器写模块:控制上述描述的缓存器C和缓存器D的角色互换功能,分别控制在缓存器C中读数据还是在缓存器D中读数据,和是向缓存器C中写数据还是向缓存器D中写数据,即实现上一层缓存器C读、缓存器D写,下一层计算缓存器D作为上一层的输出结果,再完成缓存器D读、缓存器C写,依次循环。
图5是根据本发明可选实施方式的缓存器读写功能互换的结构示意图,如图5所示,本可选实施方式中,以缓存器读模块为例,输入为卷积运算输出的读使能控制信号,输出为缓存器C读使能控制信号和缓存器D写使能控制信号。缓存器C与缓存器D中的两个使能控制信号均由输入的读使能控制信号控制,且互为一对相反的使能控制信号,使同一时刻缓存器C和缓存器D的读使能控制信号只有一个有效,写使能控制信号只有一个有效。其中,选择器初始状态下u1=x2,每计算完一层u1=x1,x1是由上一层的u1取反得到。
需要说明的是,图5中A:反相器、B:缓存器、x1:选择器输入、x2:选择器输入、u1:选择器输出。其中,B对应的选择器的初始值为1,即初始状态是缓存器C的读使能信号有效、缓存器D的写使能信号有效(在缓存器写模块中,B对应的选择器的初始值为0,即初始状态是缓存器D的读使能信号有效、缓存器C的写使能信号有效)。
图6是根据本发明可选实施方式的中间层数据缓存的示意图,如图6所示,中间层数据缓存流程为多层卷积加速运算的中间层数据计算流程。缓存器C作为读缓存器,读取缓存器C的待运算数据,进行卷积运算,直到这一层卷积运算结束,将运算结果数据写入作为写缓存器的缓存器D。判断该层是否为最后一层,如果是最后一层,则结束;如果不是最后一层,缓存器C、D功能互换,则缓存器D作为读缓存器,将上一层卷积运算出的运算结果数据作为待运算数据,读取缓存器D的待运算数据,再次进行卷积运算,直到该层卷积运算结束,将结果写入作为写缓存器的缓存器C。再判断是否为最后一层,如果是最后一层则结束,如果不是最后一层,则缓存器C、D功能再次互换,返回到缓存器C作为读缓存器,读取缓存器C的数据的步骤,循环操作,直至计算至最后一层。
通过上述可选实施方式,可以达到至少如下有益效果:
基于FPGA可编程的特点,本可选实施例提出了一种基于FPGA的加速器中间层数据缓存处理器设计,该设计使用片内两块PSRAM实现加速器数据中间层缓存,节省了片内块状存储单元的存储资源,提高了片内存储资源的利用率,降低了各层数据流转的时延,可以更好的适应复杂多变的AI场景。
在本发明实施例中,还提供了一种数据缓存处理方法,图7是根据本发明实施例的数据缓存处理方法的流程图,如图7所示,该方法包括如下步骤:
步骤S702,从读缓存器中读取多层运算中的预定层的待运算数据,其中,读缓存器为第一缓存器和第二缓存器中的一个;
步骤S704,将对待运算数据进行运算后获得的运算结果数据写入写缓存器,其中,写缓存器为第一缓存器和第二缓存器的另一个。
通过上述步骤,采用增加两个缓存器分别用于从其中读取待运算数据,以及将运算后得到的结果数据进行写入,并且在不同的运算层,缓存器读写功能互换的方式对中间层数据进行处理,使得不同缓存器中的读写模块分别起作用,缓存器读模块从对应的缓存器中读取待运算数据,缓存器写模块将运算后得到的结果数据写入对应的缓存器中,相对于相关技术中不同运算层在芯片的同一块存储器内进行存储,节省了大量的片内存储资源,进而解决了相关技术中缓存中间层数据时,出现的占用芯片较多的存储资源的技术问题。
作为一种可选的实施例,预定层的运算结果数据作为预定层的下一层的待运算数据,第一缓存器和第二缓存器在预定层作为读缓存器和写缓存器的角色在下一层中互换。使得在不同的运算层,缓存器的读写功能可以进行互换,以便对中间层数据进行处理,节省了大量的片内存储资源。
实施例2
本发明的实施例可以提供一种计算机设备,可选地,在本实施例中,上述计算机设备可以位于计算机网络的多个网络设备中的至少一个网络设备。该计算机设备包括存储器和处理器。
其中,存储器可用于存储软件程序以及模块,如本发明实施例中的数据缓存处理方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据缓存处理方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:从读缓存器中读取多层运算中的预定层的待运算数据,其中,读缓存器为第一缓存器和第二缓存器中的一个;将对待运算数据进行运算后获得的运算结果数据写入写缓存器,其中,写缓存器为第一缓存器和第二缓存器的另一个。
可选的,上述处理器还可以执行如下步骤的程序代码:预定层的运算结果数据作为预定层的下一层的待运算数据,第一缓存器和第二缓存器在预定层作为读缓存器和写缓存器的角色在下一层中互换。
采用本发明实施例,提供了一种数据缓存处理方案,采用增加两个缓存器分别用于从其中读取待运算数据,以及将运算后得到的结果数据进行写入,并且在不同的运算层,缓存器读写功能互换的方式对中间层数据进行处理,使得不同缓存器中的读写模块分别起作用,缓存器读模块从对应的缓存器中读取待运算数据,缓存器写模块将运算后得到的结果数据写入对应的缓存器中,相对于相关技术中不同运算层在芯片的同一块存储器内进行存储,节省了大量的片内存储资源,进而解决了相关技术中缓存中间层数据时,出现的占用芯片较多的存储资源的技术问题。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
本发明的实施例还提供了一种计算机可读存储介质。可选地,在本实施例中,上述计算机可读存储介质可以用于保存上述实施例1所提供的数据缓存处理方法所执行的程序代码。
可选地,在本实施例中,上述计算机可读存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,计算机可读存储介质被设置为存储用于执行以下步骤的程序代码:从读缓存器中读取多层运算中的预定层的待运算数据,其中,读缓存器为第一缓存器和第二缓存器中的一个;将对待运算数据进行运算后获得的运算结果数据写入写缓存器,其中,写缓存器为第一缓存器和第二缓存器的另一个。
可选地,在本实施例中,计算机可读存储介质被设置为存储用于执行以下步骤的程序代码:预定层的运算结果数据作为预定层的下一层的待运算数据,第一缓存器和第二缓存器在预定层作为读缓存器和写缓存器的角色在下一层中互换。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (12)
1.一种数据缓存处理器,其特征在于,包括:缓存器读模块,缓存器写模块,第一缓存器和第二缓存器,其中:
所述缓存器读模块,用于从所述第一缓存器和所述第二缓存器中确定读缓存器,并从所述读缓存器中读取多层运算中的预定层的待运算数据;
所述缓存器写模块,用于从所述第一缓存器和所述第二缓存器中确定写缓存器,并将对所述待运算数据进行运算后获得的运算结果数据写入所述写缓存器。
2.根据权利要求1所述的数据缓存处理器,其特征在于,所述预定层的运算结果数据作为所述预定层的下一层的待运算数据,所述第一缓存器和所述第二缓存器在所述预定层作为读缓存器和写缓存器的角色在下一层中互换。
3.根据权利要求1所述的数据缓存处理器,其特征在于,所述缓存器读模块包括:
第一读使能控制器,用于使能从所述第一缓存器读取所述待运算数据;以及,
第二读使能控制器,用于使能从所述第二缓存器读取所述待运算数据。
4.根据权利要求3所述的数据缓存处理器,其特征在于,
所述第一读使能控制器,用于接收从所述预定层输出的读使能控制信号,以及第一信号,并输出对所述读使能控制信号与所述第一信号进行运算后的第一结果信号;
所述第二读使能控制器,用于接收从所述预定层输出的读使能控制信号,以及第二信号,并输出对所述读使能控制信号与所述第二信号进行运算后的第二结果信号;
其中,所述第一信号与所述第二信号在所述预定层为一对读写相反信号,所述第一结果信号和所述第二结果信号在所述预定层为一对读写相反信号。
5.根据权利要求4所述的数据缓存处理器,其特征在于,所述第一读使能控制器在所述预定层的下一层输入的第一信号为对在所述预定层输入的第一信号取反得到。
6.根据权利要求5所述的数据缓存处理器,其特征在于,所述多层运算中的初始层的第一信号包括:读使能信号。
7.根据权利要求1至6中任一项所述的数据缓存处理器,其特征在于,所述缓存器写模块包括:
第一写使能控制器,用于使能将所述运算结果数据写入所述第一缓存器;以及,
第二写使能控制器,用于使能将所述运算结果数据写入所述第二缓存器。
8.根据权利要求7所述的数据缓存处理器,其特征在于,
所述第一写使能控制器,用于接收从所述预定层输出的写使能控制信号,以及第三信号,并输出对所述写使能控制信号与所述第三信号进行运算后的第三结果信号;
所述第二写使能控制器,用于接收从所述预定层输出的写使能控制信号,以及第四信号,并输出对所述读使能控制信号与所述第四信号进行运算后的第四结果信号;
其中,所述第三信号与所述第四信号在所述预定层为一对读写相反信号,所述第三结果信号和所述第四结果信号在所述预定层为一对读写相反信号。
9.根据权利要求8所述的数据缓存处理器,其特征在于,所述第一写使能控制器在所述预定层的下一层输入的第三信号为对在所述预定层输入的第三信号取反得到。
10.根据权利要求9所述的数据缓存处理器,其特征在于,所述多层运算中的初始层的第三信号包括:读使能信号。
11.一种数据缓存处理方法,其特征在于,包括:
从读缓存器中读取多层运算中的预定层的待运算数据,其中,所述读缓存器为第一缓存器和第二缓存器中的一个;
将对所述待运算数据进行运算后获得的运算结果数据写入写缓存器,其中,所述写缓存器为所述第一缓存器和所述第二缓存器的另一个。
12.根据权利要求11所述的数据缓存处理方法,其特征在于,所述预定层的运算结果数据作为所述预定层的下一层的待运算数据,所述第一缓存器和所述第二缓存器在所述预定层作为读缓存器和写缓存器的角色在下一层中互换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110352792.9A CN115145842A (zh) | 2021-03-31 | 2021-03-31 | 数据缓存处理器及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110352792.9A CN115145842A (zh) | 2021-03-31 | 2021-03-31 | 数据缓存处理器及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115145842A true CN115145842A (zh) | 2022-10-04 |
Family
ID=83404832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110352792.9A Pending CN115145842A (zh) | 2021-03-31 | 2021-03-31 | 数据缓存处理器及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115145842A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115981594A (zh) * | 2023-03-20 | 2023-04-18 | 国仪量子(合肥)技术有限公司 | 数据累加处理方法、装置、fpga芯片和介质 |
-
2021
- 2021-03-31 CN CN202110352792.9A patent/CN115145842A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115981594A (zh) * | 2023-03-20 | 2023-04-18 | 国仪量子(合肥)技术有限公司 | 数据累加处理方法、装置、fpga芯片和介质 |
CN115981594B (zh) * | 2023-03-20 | 2023-06-06 | 国仪量子(合肥)技术有限公司 | 数据累加处理方法、装置、fpga芯片和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107301455B (zh) | 用于卷积神经网络的混合立方体存储系统及加速计算方法 | |
KR101611516B1 (ko) | 직렬 포트 메모리 통신 레이턴시 및 신뢰성을 향상시키기 위한 방법 및 시스템 | |
US7840762B2 (en) | Multi-path accessible semiconductor memory device having mailbox areas and mailbox access control method thereof | |
US10678479B1 (en) | Registers for restricted memory | |
US10831693B1 (en) | Multicast master | |
CN105988970B (zh) | 共享存储数据的处理器和芯片 | |
CN101236774B (zh) | 单端口存储器实现多端口存储功能的装置和方法 | |
CN103927270A (zh) | 一种面向多个粗粒度动态可重构阵列的共享数据缓存装置及控制方法 | |
US11138106B1 (en) | Target port with distributed transactions | |
WO2016176807A1 (zh) | 一种dram刷新方法、装置和系统 | |
CN115145842A (zh) | 数据缓存处理器及方法 | |
CN109858622A (zh) | 深度学习神经网络的数据搬运电路和方法 | |
CN106547707B (zh) | 阵列处理器中簇内存储并行访问局部优先交换电路 | |
CN215576588U (zh) | 数据缓存处理器 | |
CN107783909B (zh) | 一种内存地址总线扩展方法及装置 | |
WO2007114676A1 (en) | Device having shared memory and method for providing access status information by shared memory | |
CN105446935A (zh) | 共享存储并发访问处理方法及装置 | |
CN111126584B (zh) | 数据回写系统 | |
CN114138688A (zh) | 一种数据读取方法、系统、设备以及介质 | |
CN106057226B (zh) | 双端口存储系统的存取控制方法 | |
CN116150046B (zh) | 一种高速缓存电路 | |
TWI385672B (zh) | 儲存裝置之適應性多通道控制器及其方法 | |
CN116362304A (zh) | 数据处理装置、数据处理方法及相关装置 | |
CN118053463A (zh) | 多端口存储器的数据处理、构建方法及多端口存储器 | |
CN118012792A (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 |