一种数据缓存器及数据处理方法
技术领域
本发明涉及计算机存储技术领域,尤其涉及一种数据缓存器及数据处理方法。
背景技术
目前,在当下的专用集成电路(Application Specific Integrated Circuit,ASIC)设计中,通常通过设置适量级数的先进先出队列(First Input First Output,FIFO)数据缓存器来进行数据缓存,来防止数据丢失或者处理数据故障。具体来说,FIFO数据缓存器在数据转存过程中执行先进先出的策略,例如,先进入的数据先从FIFO数据缓存器中读出。
现有技术中,FIFO的工作原理可以描述为:以独立的读写指针在读写脉冲的控制下有顺序地向存储单元中写入数据,或者,有顺序地从存储单元中读取数据。以存储数据为例,将数据存入写指针(W指针)所在位置,每次写入后,写指针位置自动加1,到达下一个可以存入数据的存储位置,接收下一个存储数据,以实现数据的存储。
从上述实现过程可以知道的是,现有技术中,在向FIFO数据缓存器写入数据时,必须额外增加写指针等物理控制器件控制数据的存储,且只能在行方向或者列方向上依次用一个写指针进行数据存储,数据存储过程必须严格依赖于写指针。在这一实现方式中,数据存储的逻辑较为复杂,缺乏灵活性。
发明内容
本发明实施例提供一种数据缓存器及数据处理方法,相较于现有的存储方法来说,由于可以将数据缓存器等待存储的时间转化为数据移位,在不额外引入写指针等物理控制器件的同时,数据存储的控制逻辑简单、灵活,以简单的硬件设计配合移位控制信号实现了复杂存储过程的有序可控。
为实现上述目的,第一方面,本发明实施例提供了一种数据处理方法,该方法应用于数据缓存器,该数据缓存器包括控制器和第一寄存器,该方法包括:
在数据缓存器处于写状态时,数据缓存器通过控制器向第一寄存器的存储空间发送N行移位控制信号;其中,N行移位控制信号在每个预设单位时间内按照第一预设方向移动一个预设单位长度;N行移位控制信号用于指示第一寄存器的存储空间将输入的矩阵数据按照第二预设方向进行存储;
数据缓存器通过第一寄存器根据N行移位控制信号存储输入的矩阵数据。
实施本申请实施例,移位控制信号可以通过预设的传输机制传输到其他需要写入数据的存储空间中,以实现输入的矩阵数据的存储,相较于现有技术而言,由于可以将数据缓存器等待存储的时间转化为数据移位,在不额外引入写指针等物理控制器件的同时,数据存储的控制逻辑简单、灵活,以简单的硬件设计配合移位控制信号实现了复杂存储过程的有序可控。
在其中一种可能的实现方式中,数据缓存器通过控制器向第一寄存器的存储空间发送N行移位控制信号之前,还包括:
数据缓存器通过控制器获取输入的矩阵数据的大小;
数据缓存器通过控制器根据输入的矩阵数据的大小确定移位控制信号的数量N。
在其中一种可能的实现方式中,数据缓存器还包括第二寄存器,方法还包括:
在数据缓存器处于读状态时,若满足数据读取信号与移位控制信号之间存在时序关系,且数据读取信号在移位控制信号之后,数据缓存器通过第一寄存器将自身存储的数据转存至第二寄存器中。
现有技术中,当对数据缓存器写入数据时,需要检查存储空间是否已存满;同样地,当对数据缓存器读取数据时,需要检查存储空间是否为空。实施本申请实施例,由于无需执行上述检查操作,只要保证数据读取信号以及移位控制信号二者之间存在时序关系,即可以实现数据存储和数据读取过程的正确性。
在一种可能的实现方式中,数据读取信号在第一寄存器存储的数据中按照第三预设方向和/或第四预设方向传输,以实现将数据读取信号传输过程中流经的数据转存至第二寄存器中;其中,第三预设方向为多方向,第四预设方向为单方向。
在一种可能的实现方式中,第一预设方向与第二预设方向正交。
第二方面,本发明实施例提供了一种数据缓存器,该数据缓存器包括控制器和第一寄存器;其中,
控制器,用于向第一寄存器的存储空间发送N行移位控制信号;其中,N行移位控制信号在每个预设单位时间内按照第一预设方向移动一个预设单位长度;N行移位控制信号用于指示第一寄存器的存储空间将输入的矩阵数据按照第二预设方向进行存储;
第一寄存器,用于根据N行移位控制信号存储输入的矩阵数据。
在其中一种可能的实现方式中,控制器,还用于:
获取输入的矩阵数据的大小;
根据输入的矩阵数据的大小确定移位控制信号的数量N。
在其中一种可能的实现方式中,数据缓存器还包括第二寄存器;第一寄存器,还用于:
若满足数据读取信号与移位控制信号之间存在时序关系,且数据读取信号在移位控制信号之后,第一寄存器将自身存储的数据转存至第二寄存器中。
在其中一种可能的实现方式中,数据读取信号在第一寄存器存储的数据中按照第三预设方向和/或第四预设方向传输,以实现将数据读取信号传输过程中流经的数据转存至第二寄存器中;其中,第三预设方向为多方向,第四预设方向为单方向。
在其中一种可能的实现方式中,第一预设方向与第二预设方向正交。
第三方面,本申请实施例提供了一种电子设备,该电子设备可以包括上述第一方面中的任意一种实现方式所提供的数据缓存器以及耦合于数据缓存器的分立器件。
第四方面,本申请实施例提供一种片上系统芯片,该片上系统芯片包括上述第一方面的任意一种实现方式所提供的芯片。该片上系统芯片,可以由芯片构成,也可以包括芯片和其他分立器件。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1A是本申请实施例提供的一种数据缓存器的结构示意图;
图1B是本申请实施例提供的一种处于写状态下的寄存器内部存储阵列结构示意图;
图2是本申请实施例提供的一种数据处理方法的流程示意图;
图3A是本申请实施例提供的一种输入矩阵数据的示意图;
图3B是本申请实施例提供的一种输入子矩阵的示意图;
图4A是本申请实施例提供的一种输入矩阵数据输入数据缓存器的示意图;
图4B是本申请实施例提供的一种数据存储过程的示意图;
图4C是本申请实施例提供的另一种数据存储过程的示意图;
图4D是本申请实施例提供的另一种数据存储过程的示意图;
图4E是本申请实施例提供的另一种数据存储过程的示意图;
图4F是本申请实施例提供的另一种数据存储过程的示意图;
图4G是本申请实施例提供的另一种数据存储过程的示意图;
图4H是本申请实施例提供的另一种数据存储过程的示意图;
图5A为本申请实施例提供的一种矩阵运算应用场景下的硬件结构图;
图5B为本申请实施例提供的另一种矩阵运算应用场景下的硬件结构图;
图5C为本申请实施例提供的另一种矩阵运算应用场景下的硬件结构图;
图5D为本申请实施例提供的一种处于读状态下的寄存器内部存储阵列的结构示意图;
图5E为本申请实施例提供的一种运算电路的具体结构图;
图6是本申请实施例提供的一种数据读取方法的流程示意图;
图7A是本申请实施例提供的一种存储矩阵的结构示意图;
图7B是本申请实施例提供的一种存储集群的结构示意图;
图7C是本申请实施例提供的一种数据读取信号的传输示意图;
图7D是本申请实施例提供的一种第一数据的表现形式的示意图;
图7E是本申请实施例提供的另一种第一数据的表现形式的示意图;
图7F是本申请实施例提供的另一种数据读取信号的传输示意图;
图7G是本申请实施例提供的一种第一寄存器与第二寄存器各自对应的存储阵列间的映射关系图;
图8A是本申请实施例中提供的一种第一寄存器中存储的4*4的矩阵数据的示意图;
图8B是本申请实施例中提供的一种数据转存过程的示意图;
图8C是本申请实施例中提供的另一种数据转存过程的示意图;
图8D是本申请实施例中提供的另一种数据转存过程的示意图;
图8E是本申请实施例中提供的另一种数据转存过程的示意图;
图8F是本申请实施例中提供的另一种数据转存过程的示意图;
图8G是本申请实施例中提供的另一种数据转存过程的示意图;
图8H是本申请实施例中提供的另一种数据转存过程的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
应当理解,本申请的说明书和权利要求书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在本说明书中使用的术语“部件”、“模块”、“系统”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,部件可以是但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。通过图示,在计算设备上运行的应用和计算设备都可以是部件。一个或多个部件可驻留在进程和/或执行线程中,部件可位于一个计算机上和/或分布在2个或更多个计算机之间。此外,这些部件可从在上面存储有各种数据结构的各种计算机可读介质执行。部件可例如根据具有一个或多个数据分组(例如来自与本地系统、分布式系统和/或网络间的另一部件交互的二个部件的数据,例如通过信号与其它系统交互的互联网)的信号通过本地和/或远程进程来通信。
本申请实施例提供一种数据缓存器,对本申请提出的技术问题进行具体分析和解决。请参见图1A,是本申请实施例提供的一种数据缓存器的结构示意图。如图1A所示,数据缓存器10包括第一寄存器101、第二寄存器102和控制器103,其中,控制器103与第一寄存器101相连,第一寄存器101与第二寄存器102相连。具体地,第一寄存器101与第二寄存器102之间呈层叠设置。
其中,在数据缓存器10处于写状态时,控制器103,用于向第一寄存器101的存储空间发送N行移位控制信号;其中,N行移位控制信号在每个预设单位时间内按照第一预设方向移动一个预设单位长度;N行移位控制信号用于指示第一寄存器的存储空间将输入的矩阵数据按照第二预设方向进行存储;
第一寄存器101,用于根据N行移位控制信号存储输入的矩阵数据。
其中,在数据缓存器10处于读状态时,第一寄存器101,用于接收外部发送的数据读取信号;其中,数据读取信号在第一寄存器的存储空间中按照第三预设方向和/或第四预设方向传输;其中,数据存储于所述第一寄存器的存储空间;第三预设方向为多方向,第四预设方向为单方向;
其中,第一寄存器101,还可以用于将数据读取信号传输过程中流经的数据转存至第二寄存器中。
在本申请实施例中,第一寄存器和第二寄存器呈层叠设置是指:第一寄存器和第二寄存器各自包含的存储阵列为相互映射的关系,这一实现方式应该理解为逻辑层面的层叠设置。在实际应用中,在物理结构上,第一寄存器和第二寄存器可以采用物理层叠设置,也可以采用同一层作为不同寄存器链并列设置,等等。
在实际应用中,第一寄存器可以为按照存储功能进行数据存储的寄存器,
第二寄存器可以为按照运算功能进行数据存储的寄存器,本申请不作具体限定。
在本申请实施例中,第一寄存器和第二寄存器可以用来存储整型数据、浮点型数据、常数、向量数据等等,本申请实施例不作具体限定。
进一步地,如图1B所示,为本申请实施例提供的一种处于写状态下的寄存器内部存储阵列的结构示意图。从图1B可以知道的是,单位存储阵列在移位控制信号的作用下,可以通过数据存储通道将输入的矩阵数据存储起来。
为了便于理解,下面先介绍下“寄存器”、“存储阵列”以及“存储集群”这三者之间的关系。在本申请实施例中,多个寄存器可以组成一个存储阵列,多个存储阵列可以组成一个存储集群。
基于图1A所示的数据缓存器的结构,请参见图2,是本申请实施例提供的一种数据处理方法的流程示意图,具体说明在本申请实施例中是如何实现数据的处理的,该方法可以包括但不限于如下步骤:
步骤S200、在数据缓存器处于写状态时,数据缓存器通过控制器向第一寄存器的存储空间发送N行移位控制信号;其中,N行移位控制信号在每个预设单位时间内按照第一预设方向移动一个预设单位长度;N行移位控制信号用于指示第一寄存器的存储空间将输入的矩阵数据按照第二预设方向进行存储。
在本申请实施例中,移位控制信号的表现形态为:在每个预设单位时间内按照第一预设方向移动一个预设单位长度,移位控制信号的作用为将移位输入的矩阵数据按照第二预设方向传输并存储。通俗的理解,我们可以认为移位控制信号自身是沿第一预设方向移动,其作用为将移位输入的矩阵数据按照第二预设方向传输并存储。这里,第一预设方向与第二预设方向正交。
需要说明的是,在本申请实施例中,并不限定预设单位时间、预设单位长度的表现形式,例如,预设单位时间可以为1ms,预设单位长度可以为一个单位矩阵数据,等等。
一般来说,移位控制信号在第一寄存器的存储空间中的流动方向需要结合存储阵列的入口位置(也即,输入矩阵数据的输入端)来确定。例如,存储阵列的入口位置为:左边,那么,在这种情况下,移位控制信号在第一寄存器的存储空间中的流动方向可以为从左往右进行传输;移位控制信号的作用为将移位输入的矩阵数据向下移动并存储。
又例如,存储阵列的入口位置为:右边,那么,在这种情况下移位控制信号在在第一寄存器的存储空间中的流动方向可以为从右往左进行传输;此时,移位控制信号的作用为将移位输入的矩阵数据向下移动并存储,等等。
在本申请实施例中,输入的矩阵数据可以为对原始输入矩阵数据进行变换得到的。如图3A所示,原始输入矩阵数据呈正方形分布,对其进行变换后,输入数据缓存器的矩阵数据可以呈平行四边形分布。输入的矩阵数据在移位控制信号的作用下,在第一寄存器的存储空间中沿与第一预设方向正交的第二预设方向进行移位和存储。
在本申请实施例中,从外部输入的矩阵数据将以一个预设单位宽度在第一预设方向上依次分割,例如,如图3B所示,对输入的矩阵数据按列进行分割,可以得到多个分割后的子矩阵数据。这里,预设单位宽度是指:在每个时钟周期内,数据缓存器中移动的矩阵数据的单位长度。具体地,单位矩阵是以单位宽度为长度的正矩阵,即如果单位矩阵宽度为一个数据,则单位矩阵为一个数据;如果单位矩阵宽度为n个数据,则单位矩阵为一个以n数据为边的矩阵。
在实际应用中,每个存储阵列(亦或是存储集群)为单位宽度的整数倍M,即每个存储阵列每个单位时间内可以存储M个单位矩阵。这里,M个子矩阵沿第二预设方向依次进入多个存储阵列,且每个子矩阵在第一预设方向上依次延迟一个单位时间进入多个存储阵列。从而可以知道的是,输入数据缓存器的矩阵数据呈平行四边形。
需要说明的是,当移位控制信号的入口位置在第一寄存器的上方时,可以对输入的矩阵数据按行进行分割,可以得到多个分割后的子矩阵数据。
在本申请实施例中,移位控制信号的数量N为根据输入的矩阵数据的大小确定的。
具体地,所述数据缓存器通过所述控制器向所述第一寄存器的存储空间发送N行移位控制信号之前,还可以包括:
所述数据缓存器通过所述控制器获取所述输入的矩阵数据的大小;
所述数据缓存器通过所述控制器根据所述输入的矩阵数据的大小确定所述移位控制信号的数量N。
例如,输入的矩阵数据为包含N行单位时间的矩阵数据,那么,在这种情况下,控制器向第一寄存器的存储空间发送N行单位时间的移位控制信号。
步骤S202、数据缓存器通过所述第一寄存器根据N行移位控制信号存储输入的矩阵数据。
在本申请实施例中,在第一寄存器的存储空间中有移位控制信号流经的情况下,第一寄存器可以将输入的矩阵数据进行存储。
在本申请实施例中,输入的矩阵数据在移位控制信号的作用下,在第一寄存器的不同存储空间中进行流动,直至存储到目标位置。在实际应用中,当输入的平行四边形矩阵数据全部存储到目标位置时,平行四边形矩阵数据恢复到原始输入矩阵数据的表现形式,也即呈正方形或者矩形分布。
为了便于理解,下面结合具体的实例进行阐述。
如图4A所示,输入数据缓存器的矩阵数据大小为4*4,该矩阵数据呈平行四边形分布。具体地,该矩阵数据中包含多个按列分割后的子矩阵数据。移位控制信号的入口位置在第一寄存器的左边。其中,第一寄存器包括两个独立的存储单元,例如,这两个独立的存储单元为第一存储单元和第二存储单元,且每个存储单元可以存储4*2的矩阵数据。图4A中所示虚线表示存储单元的边界。
具体地,在数据缓存器处于写状态时,控制器向第一寄存器的存储空间发送4行移位控制信号,这里,移位控制信号在每个预设单位时间内按照第一预设方向移动一个预设单位长度,N行移位控制信号用于指示第一寄存器的存储空间将输入的矩阵数据按照第二预设方向进行存储。这里,第一预设方向可以为从左向右,第二预设方向可以为垂直向下。
在周期一内,如图4B所示,由于移位控制信号被传输到第一存储单元中空的存储空间(例如,第一存储空间)中,此时,将子矩阵数据a(3,0)存储到第一存储空间中。
在周期二内,如图4C所示,经过上一个周期后,由于移位控制信号自身从左向右进行传输(传输到第一存储单元的第二存储空间),其作用为将其流经过的子矩阵数据向下移动,在移位控制信号的作用下,此时,子矩阵数据a(3,0)、子矩阵数据a(2,0)和子矩阵数据a(3,1)向下移动一个单位宽度进行存储。具体地,子矩阵数据a(2,0)存储在第一存储单元的第一存储空间中,子矩阵数据a(3,1)存储在第一存储单元的第二存储空间中,子矩阵数据a(3,0)存储在第一存储单元的第三存储空间中。
在周期三内,如图4D所示,经过上一个周期后,由于移位控制信号自身从左向右进行传输,其作用为将其流经过的子矩阵数据向下移动,在移位控制信号的作用下,此时,子矩阵数据a(1,0)、子矩阵数据a(2,1)、子矩阵数据a(3,2)、子矩阵数据a(2,0)、子矩阵数据a(3,1)和子矩阵数据a(3,0)向下移动一个单位宽度进行存储。具体地,子矩阵数据a(1,0)存储在第一存储单元的第一存储空间中,子矩阵数据a(2,1)存储在第一存储单元的第二存储空间,子矩阵数据a(3,2)存储在第二存储单元的第一存储空间中,子矩阵数据a(2,0)存储在第一存储单元的第三存储空间中,子矩阵数据a(3,1)存储在第一存储单元的第四存储空间中,子矩阵数据a(3,0)存储在第一存储单元的第五存储空间中。
在周期四内,如图4E所示,经过上一个周期后,由于移位控制信号自身从左向右进行传输,其作用为将其流经过的子矩阵数据向下移动,在移位控制信号的作用下,此时,子矩阵数据a(0,0)、子矩阵数据a(1,1)、子矩阵数据a(2,2)、子矩阵数据a(3,3)、子矩阵数据a(1,0)、子矩阵数据a(2,1)、子矩阵数据a(3,2)、子矩阵数据a(3,0)、子矩阵数据a(2,0)和子矩阵数据a(3,1)向下移动一个单位宽度进行存储。具体地,子矩阵数据a(0,0)存储在第一存储单元的第一存储空间中,子矩阵数据a(1,1)存储在第一存储单元的第二存储空间,子矩阵数据a(2,2)存储在第二存储单元的第一存储空间中,子矩阵数据a(3,3)存储在第二存储单元的第二存储空间中,子矩阵数据a(1,0)存储在第一存储单元的第三存储空间中,子矩阵数据a(2,1)存储在第一存储单元的第四存储空间中,子矩阵数据a(3,2)存储在第二存储单元的第三存储空间中,子矩阵数据a(2,0)存储在第一存储单元的第五存储空间中,子矩阵数据a(3,1)存储在第一存储单元的第六存储空间中,子矩阵数据a(3,0)存储在第一存储单元的第七存储空间中。
在周期五内,如图4F所示,如前所述,控制器可以根据输入的矩阵数据的大小确定移位控制信号的数量N,在本周期内,由于控制器已向第一寄存器发送了满足输入的矩阵数据大小的移位控制信号数量N,此时,控制器停止向第一寄存器发送移位控制信号。在这种情况下,对于输入的矩阵数据的第一列来说,输入的矩阵数据的第一列刚好移位存储到目标位置。与此同时,在第一寄存器内的移位控制信号继续传送,在移位控制信号的作用下,子矩阵数据a(0,1)、子矩阵数据a(1,2)、子矩阵数据a(2,3)、子矩阵数据a(1,1)、子矩阵数据a(2,2)、子矩阵数据a(3,3)、子矩阵数据a(2,1)、子矩阵数据a(3,2)和子矩阵数据a(3,1)向下移动一个单位宽度进行存储。具体地,子矩阵数据a(0,1)存储在第一存储单元的第二存储空间中,子矩阵数据a(1,2)存储在第二存储单元的第一存储空间中,子矩阵数据a(2,3)存储在第二存储单元的第二存储空间中,子矩阵数据a(1,1)存储在第一存储单元的第四存储空间中,子矩阵数据a(2,2)存储在第二存储单元的第三存储空间中,子矩阵数据a(3,3)存储在第二存储单元的第四存储空间中,子矩阵数据a(2,1)存储在第一存储单元的第六存储空间中,子矩阵数据a(3,2)存储在第二存储单元的第五存储空间中,子矩阵数据a(3,1)存储在第一存储单元的第八存储空间中(也即目标位置)。
在周期六内,如图4G所示,由于第一寄存器内的移位控制信号继续传送,在移位控制信号的作用下,子矩阵数据a(0,2)、子矩阵数据a(1,3)、子矩阵数据a(1,2)、子矩阵数据a(2,3)、子矩阵数据a(2,2)、子矩阵数据a(3,3)和子矩阵数据a(3,2)向下移动一个单位宽度进行存储。具体地,子矩阵数据a(0,2)存储在第二存储单元的第一存储空间中,子矩阵数据a(1,3)存储在第二存储单元的第二存储空间中,子矩阵数据a(1,2)存储在第二存储单元的第三存储空间中,子矩阵数据a(2,3)存储在第二存储单元的第四存储空间中,子矩阵数据a(2,2)存储在第二存储单元的第五存储空间中,子矩阵数据a(3,3)存储在第二存储单元的第六存储空间中,子矩阵数据a(3,2)存储在第二存储单元的第七存储空间中(也即目标位置)。
在周期七内,如图4H所示,由于第一寄存器内的移位控制信号继续传送,在移位控制信号的作用下,子矩阵数据a(0,3)、子矩阵数据a(1,3)、子矩阵数据a(2,3)和子矩阵数据a(3,3)向下移动一个单位宽度进行存储。具体地,子矩阵数据a(0,3)存储在第二存储单元的第二存储空间中,子矩阵数据a(1,3)存储在第二存储单元的第四存储空间中,子矩阵数据a(2,3)存储在第二存储单元第六存储空间中,子矩阵数据a(3,3)存储在第二存储单元的第八存储空间中。
在经过上述7个周期之后,可以实现将输入的4*4矩阵数据存储在第一寄存器中,从而完成了对4*4矩阵数据的存储过程。
实施本申请实施例,移位控制信号可以通过预设的传输机制传输到其他需要写入数据的存储空间中,以实现输入的矩阵数据的存储,相较于现有技术而言,由于可以将数据缓存器等待存储的时间转化为数据移位,在不额外引入写指针等物理控制器件的同时,数据存储的控制逻辑简单、灵活,以简单的硬件设计配合移位控制信号实现了复杂存储过程的有序可控。
在一种可能的实现方式中,在数据缓存器处于读状态时,在数据读取信号的作用下,可以实现将第一寄存器中的数据转存至第二寄存器中,为了便于理解,下面示例性地阐述下数据转存可以应用的应用场景:
第一应用场景:矩阵乘法器运算。
如图5A所示,为本申请实施例提供的一种矩阵运算应用场景下的硬件结构图,其中,矩阵乘法器包括控制器、运算电路、寄存器1和寄存器2。其中,运算电路与寄存器1、寄存器2和控制器可以通过总线进行数据通信。运算电路用于提取寄存器1和寄存器2中的矩阵数据进行向量的乘法和加法运算,控制器用于根据预设的程序或者指令控制运算电路完成向量的运算。
其中,寄存器1用于存储第一矩阵,例如,第一矩阵为B矩阵。进一步地,B矩阵为M*K矩阵,在实际应用中,第一矩阵中的第i行第j列的元素可以记为Bij,i=(1,2,3,...,M),j=(1,2,3,...,K)。
其中,寄存器2用于存储第二矩阵,例如,第二矩阵为A矩阵。进一步地,A矩阵为M*K矩阵,在实际应用中,第一矩阵中的第i行第j列的元素可以记为Aij,i=(1,2,3,...,M),j=(1,2,3,...,K)。
在本申请实施例中,第一矩阵和第二矩阵以及运算结果的数据类型可以为整型数据,也可以为浮点型数据,还可以为其他类型的数据,本申请实施例不作具体限定。
以矩阵B寄存器和寄存器1为例,矩阵B寄存器和寄存器1可以构成一个数据缓存器硬件实体,其中,矩阵B寄存器和寄存器1各自对应的存储空间为相互映射的关系;以矩阵A寄存器和寄存器2为例,矩阵A寄存器和寄存器2可以构成另一个数据缓存器硬件实体,其中,矩阵A寄存器和寄存器2各自对应的存储空间为相互映射的关系。从图5A可以知道的是,矩阵A寄存器与矩阵B寄存器位于同侧。在一种可能的实现方式中,如图5B所示,矩阵A寄存器与矩阵B寄存器相邻。
需要说明的是,上述所提及的矩阵A寄存器和矩阵B寄存器均为快照读取式存储阵列。
进一步地,请参见图5C,为本申请实施例提供的一种矩阵运算应用场景下的实现流程图。其中,矩阵乘法控制器接收外部发送的数据读取信号以及预设参数,其中,预设参数用于确定当前数据读取操作读取的数据量大小(也即数据范围)以及数据块的输入方式。在实际应用中,以第一存储阵列为例,数据块的输入方式是指:数据块中的第一个数据进入第一存储阵列的方向与第一存储阵列的第一边界相邻,还是与第一存储阵列的第二边界相邻。在本申请实施例中,数据块可以以平行四边形的方式进行呈现。具体地,该数据块的输入方式参数传送至顶点选择器和数据读取信号通道预设器,当前数据读取操作读取的数据量大小参数传送至数据读取信号通道预设器。
这里,数据读取信号通道预设器用于开通数据缓存器中矩阵A寄存器内各个单位存储阵列的数据读取信号。
具体地,矩阵乘法控制器可以根据接收到的当前数据读取操作读取的数据量大小参数,开通满足该参数的单位存储阵列的数据读取信号传送通道。以第一存储阵列为例,矩阵乘法控制器根据接收到的数据块的输入方式参数,在一种情形下:如果数据块中的第一个数据进入第一存储阵列的方向与第一存储阵列的第一边界相邻(也即左边界),那么,在这种情况下,各个存储阵列左边界的单位存储阵列开通第三预设方向(例如,水平向右和垂直向下)的数据读取信号传送通道,其他单位存储阵列开通第四预设方向(例如,水平向右)的数据读取信号传送通道;在另一种情形下:如果数据块中的第一个数据进入第一存储阵列的方向与第一存储阵列的第二边界相邻(也即右边界),那么,在这种情况下,各个存储阵列右边界的单位存储阵列开通第三预设方向(例如,水平向左和垂直向下)的数据读取信号传送通道,其他单位存储阵列开通第四预设方向(例如,水平向左)的数据读取信号传送通道。需要说明的是,在上述两种实现方式中,各单位存储阵列其他方向未开通的数据读取信号传送通道均关闭。
在本申请实施例中,顶点选择器用于确定数据读取信号进入存储阵列(亦或是存储集群)的顶点。以第一存储阵列为例,在一种情形下:如果数据块中的第一个数据进入第一存储阵列的方向与第一存储阵列的第一边界相邻(也即左边界),那么,在这种情况下,数据读取信号通过数据读取信号传送通道进入第一存储阵列的顶点为左上方顶点;在另一种情形下:如果数据块中的第一个数据进入第一存储阵列的方向与第一存储阵列的第二边界相邻(也即右边界),那么,在这种情况下,数据读取信号通过数据读取信号传送通道进入第一存储阵列的顶点为右上方顶点。
进一步地,如图5D所示,为本申请实施例提供的一种处于读状态下的寄存器内部存储阵列的结构示意图。矩阵乘法控制器发送一个数据读取信号到数据缓存器的输入端。在数据读取信号从数据缓存器的输入端进入之后,通过预先设置好的数据读取信号传送通道传送至存储阵列的一个单位顶点矩阵内的单位矩阵数据读取控制器和单位矩阵数据读取信号通道选择器。那么,在数据读取信号进入单位矩阵数据读取信号通道选择器之后,可以根据该单位矩阵数据读取信号通道选择器所在存储阵列内的位置和输入矩阵方式选择一个或多个数据读取信号传送通道,将数据读取信号分别送入所选择的一个或多个数据读取信号传送通道,通过数据读取信号传送通道将数据读取信号传送至一个或多个单位矩阵内。从而可以知道的是,数据读取信号在数据读取控制器的作用下,可以将其流经过的单位存储阵列中存储的数据,通过数据读取通道转存至第二寄存器中。
需要说明的是,上述所提及的控制器、选择器、通道等,均可以由具体的电路构成。这里,电路可以包括但不限于数字电路、模拟电路等。本领域技术人员可以根据实际情况选择一个或多个的组合实现相应的功能。
在本申请实施例中,基于图5A的基础上,请参见图5E,为本申请实施例提供的一种运算电路的具体结构图。如图5E所示,运算电路包括X行*Y列运算电路(可以简称为乘累加单元MAC),每个运算单元可以各自独立的进行向量乘法运算,图5E中以运算电路包括4*4个运算单元为例进行绘制,即X=4,Y=4,。其中,运算电路设置有两路输入,分别用于接收寄存器1和寄存器2发送的行向量和列向量,并对行向量和列向量进行向量乘法运算。具体地,一个运算单元包括向量乘法电路和加法电路,其中,矩阵乘法电路用于接收寄存器1发送的行向量数据和寄存器2发送的列向量数据,并将两路向量进行相乘;加法电路用于对两路向量相乘的结果进行相加,以及对同属于一个运算单元的计算结果进行累加得到每个运算单元的计算结果。
需要说明的是,本申请实施例提供的矩阵乘法器不仅可以应用于机器学习、深度学习以及卷积神经网络等领域,也可以应用到数字图像处理和数字信号处理等领域,还可以应用在其他涉及矩阵乘法运算的领域。
第二应用场景:数据检查。
在本申请实施例中,第一寄存器接收外部发送的数据读取信号,由于数据读取信号可以在确定好的数据范围内按照第三预设方向和/或第四预设方向进行流动,以实现将数据读取信号流经过的数据转存至第二寄存器中,也即本申请所描述的技术方案可以通过遍历的方式对确定好的数据范围内的数据进行一一读取,不存在被上次读取操作打乱指针位置的情况。
这里,需要说明的是,在以数据检查为目的的情况下,现有技术中,第一寄存器内的读指针位置发生改变且状态不可逆,无法满足数据检查的需要。在本申请中,将第一寄存器存储的数据转存至第二寄存器的实现过程中,数据在寄存器中的存储状态不发生改变。
基于图1A所示的数据缓存器的结构,请参见图6,是本申请实施例提供的一种数据读取方法的流程示意图,具体说明在本申请实施例中是如何实现数据读取的,该方法可以包括但不限于如下步骤:
步骤S600、第一寄存器接收外部发送的数据读取信号;其中,数据读取信号在第一寄存器的存储空间中按照第三预设方向和/或第四预设方向传输;其中,数据存储于第一寄存器的存储空间;第三预设方向为多方向,第四预设方向为单方向。
在本申请实施例中,外部发送的数据读取信号可以是通过I/O接口传递的,也可以是通过专用通道传输的,本申请实施例不作具体限定。
在本申请实施例中,数据读取信号在第一寄存器存储的数据中的流动方向可以包括如下三种情形:
第一种情形:数据读取信号在第一寄存器存储的数据中按照第三预设方向进行流动;这里,第三预设方向为多方向。
第二种情形:数据读取信号在第一寄存器存储的数据中按照第四预设方向进行流动;这里,第四预设方向为单方向。
第三种情形:数据读取信号在第一寄存器存储的数据中按照第三预设方向和第四预设方向进行流动。可以理解的是,第三种情形包含了上述两种情形。
在实际应用中,上述所描述的三种情形中,第一寄存器存储的数据的位置关系决定了数据读取信号的流动方向。这里,数据的位置关系可以包括但不限于:数据的位置与寄存器的锁定边界相邻;数据的位置与寄存器的锁定边界不相邻等等。下面对其进行详细阐述:
(1)在一种情形中,数据读取信号在第一寄存器存储的数据中按照第三预设方向进行流动:
在本申请实施例中,第一寄存器为存储阵列中的寄存器,存储阵列包括第一边界;其中,第一边界为起始边界;第一寄存器中存储有第一数据;在满足第一数据的位置与第一边界相邻的情况下,数据读取信号在第一数据中按照第三预设方向传输;其中,第三预设方向包括第一子方向和第二子方向。
为了便于理解,下面先介绍下“寄存器”、“存储阵列”以及“存储集群”这三者之间的关系。在本申请实施例中,多个寄存器可以组成一个存储阵列,多个存储阵列可以组成一个存储集群。例如,如图7A所示,第一存储阵列包括若干个寄存器,存储阵列包括第一存储阵列和第二存储阵列;又例如,在图7A的基础上,多个存储阵列可以组成一个存储集群,具体地,请参见图7B,为本申请实施例提供的一种存储集群的结构示意图。
在一种可能的实现方式中,存储阵列中所包含的寄存器可以采用规则排列的方式进行布局设计,也可以采用不规则排列的方式进行布局设计,本申请实施例不作具体限定。
在一种可能的实现方式中,存储集群包括多个存储阵列,且多个存储阵列按照同一方向连接,以使数据读取信号在流经多个存储阵列时的方向保持一致。
具体地,可以将多个存储阵列按照相同方向进行连接,以得到存储集群。例如,若把存储阵列的深度和宽度看作矩形的长和宽,对各个存储阵列采取长边相邻,短边相接的并对齐长边的方式进行连接,从而可以实现将多个存储阵列按照相同方式进行连接。那么,在这种情况下,当数据读取信号在各个存储阵列之间进行传输时,可以保证数据读取信号的传送方式一致,使得各个存储阵列的控制结构简单。与此同时,由于多个存储阵列按照相同方向进行连接,可以保证多个存储阵列的输入端到输出端的相对位置一直,便于扩展。
在本申请实施例中,将多个存储阵列按照相同方向进行连接的这一实现方式,当数据读取信号在多个存储阵列中流动时,不必逐一控制多个存储阵列的读取,仅需向本申请所描述的数据缓存器输入一个数据读取信号,即可实现将第一寄存器存储的数据无损地读取到第二寄存器中,相较于现有技术而言,大大降低了数据读取过程中读取逻辑的复杂度。
需要说明的是,上述存储阵列的连接方式仅仅是例举的部分情况,而不是穷举,本领域技术人员在理解本申请技术方案的精髓的情况下,可能会在本申请技术方案的基础上产生其它的变形或者变换,比如,存储集群中的多个存储阵列也可以采用其他方式进行连接,例如,相反的连接方式。但只要其实现的功能以及达到的技术效果与本申请类似,那么均应当属于本申请的保护范围。总的来说,在本申请实施例中,多个存储阵列的连接方式以能够刚好承载矩阵数据并不产生空置的存储阵列为基准。
在一种可能的实现方式中,存储集群的形状为正方形。由于数据读取信号的传输方向可以沿第三预设方向遍历存储集群,如果遍历面积为正方形的话,第一子方向和第二子方向遍历的耗时一致,可以最大化利用时间和资源。在本申请实施例中,如图7A所示,存储阵列包括第一存储阵列和第二存储阵列,其中,第一存储阵列包括第一寄存器。进一步地,第一存储阵列包含第一边界和第二边界,这里,对于第一存储阵列来说,第一边界为起始边界,第二边界为截止边界;第二存储阵列包含第二边界和第三边界,这里,对于第二存储阵列来说,第二边界为起始边界,第三边界为截止边界。
在本申请实施例中,第一子方向与第二子方向正交。例如,如图7C所示,由于第一数据的位置与第一存储阵列的第一边界(也即起始边界)相邻,此时数据读取信号在第一数据中的流动方向为水平向右和垂直向下。需要说明的是,这里所例举的数据读取信号在第一数据中的流动方向只是作为一种示例,不应构成限定。考虑到数据读取信号进入存储阵列的表现形式具有多样化(其原因在于:存储阵列的入口位置不作具体限定),那么,相应地,数据读取信号在第一数据中的流动方向也具有多样化。一般来说,数据读取信号在第一数据中的流动方向需要结合存储阵列的入口位置来确定。例如,存储阵列的入口位置为:左边,那么,在这种情况下,数据读取信号在第一数据中的流动方向可以为水平向右和垂直向下;又例如,存储阵列的入口位置为:右边,那么,在这种情况下,数据读取信号在第一数据中的流动方向可以为水平向左和垂直向下,等等。
在本申请实施例中,例如,如图7D中虚线框所示,第一数据可以是指某一个数据;又例如,如图7E中虚线框所示,第一数据也可以是指某一块具有共同属性的一类数据等等,本申请不作具体限定。
在本申请实施例中,当数据读取信号在第一寄存器存储的数据中按照第三预设方向流动时,可以实现将数据读取信号传输过程中流经的数据转存至第二寄存器中。
(2)在一种情形中,数据读取信号在第一寄存器存储的数据中按照第四预设方向进行流动:
在本申请实施例中,第一寄存器为存储阵列中的寄存器,存储阵列包括第一边界;其中,第一边界为起始边界;第一寄存器中存储有第二数据;方法还包括:
在满足第二数据的位置与第一边界不相邻的情况下,数据读取信号在第二数据中按照第四预设方向传输。
在本申请实施例中,例如,如图7F所示,由于第一数据的位置与第一存储阵列的第一边界(也即起始边界)不相邻,当存储阵列的入口位置为:左边,此时数据读取信号在第一数据中的流动方向为水平向右。
同样地,在本申请实施例中,对于第二数据来说,可以是指某一个数据,也可以是指某一块具有共同属性的一类数据等等,本申请不作具体限定。
在本申请实施例中,当数据读取信号在第一寄存器存储的数据中按照第四预设方向流动时,可以实现将数据读取信号在传输过程中流经的数据转存至第二寄存器中。
(3)在一种情形中,数据读取信号在第一寄存器存储的数据中按照第三预设方向和第四预设方向进行流动。
在这种情形下,第一寄存器存储的数据中往往包含两种不同类型的数据,其中一种为数据的位置与存储阵列的锁定边界相邻,其中另一种为数据的位置不与存储阵列的锁定边界相邻,关于在满足数据的位置与锁定边界相邻或不相邻的情况下,数据读取信号如何流动的具体实现请参考前述描述,此处不多加赘述。
步骤S602、第一寄存器将数据读取信号传输过程中流经的数据转存至第二寄存器中。
考虑到数据读取信号在数据中的流动方向有上述三种不同的情形,那么,相应地,第一寄存器可以根据上述三种不同情形下的数据读取信号进行数据的转存。
在其中一种可能的实现方式中,考虑到第一寄存器与第二寄存器相邻,且第一寄存器和第二寄存器之间呈层叠设置,那么,在这种情况下,可以采用如下方法实现将第一寄存器中存储的数据无损的存储到第二寄存器中。
具体地,第一寄存器与第二寄存器相连,且第一寄存器和第二寄存器呈层叠设置;第一寄存器包括第一存储空间;第二寄存器包括第二存储空间,第一存储空间和第二存储空间一一对应;第一寄存器将数据读取信号传输过程中流经的数据转存至第二寄存器中,包括:
第一寄存器根据数据读取信号将第一存储空间中存储的数据转存至第二寄存器中的第二存储空间。
如前,在本申请实施例中,第一寄存器和第二寄存器呈层叠设置是指:第一寄存器和第二寄存器各自包含的存储阵列(或者存储空间;亦或者存储单元)为相互映射的关系,这一实现方式应该理解为逻辑层面的层叠设置。
例如,如图7G所示,存储阵列1中包含第一存储单元,存储阵列2中包含第二存储单元,其中,第一存储单元和第二存储单元为相互映射的关系。例如,当数据读取信号在第一存储单元存储的数据中按照第三预设方向进行传输时,第一存储单元将数据读取信号传输过程中流经的数据转存至第二存储单元中。又例如,当数据读取信号在第一存储单元存储的数据中按照第四预设方向进行传输时,第一存储单元将数据读取信号传输过程中流经的数据转存至第二存储单元中。这一实现方式,可以理解为将当下时刻第一寄存器中的数据照相,完全复制到第二寄存器中,即“快照”。
通过这一实现方式,由于第一寄存器与第二寄存器各自对应的存储单元之间存在相互映射的关系,在第一寄存器接收到外部发送的数据读取信号的情况下,可以将第一寄存器中存储的数据转存至第二寄存器中,且在读取过程中不会破坏存储的数据间的相对位置关系,即第二寄存器中存储的数据的结构和第一寄存器中存储的数据的结构一致,数据在存储器中的存储状态不发生变化。
这里,不改变数据在存储器中的存储状态是指,在数据读取信号的作用下,每次读取一个矩阵数据时读指针位置不改变,从而可以实现多个矩阵数据的流水读取,这一实现方式为实现矩阵乘法器的运算流水化提供可能。
为了便于更好的理解本申请所描述的技术方案,下面将结合具体的实例进行阐述:
如图8A所示,第一寄存器中存储有4*4的矩阵数据,数据读取信号的入口位置在第一寄存器的左边,第一寄存器中的虚线表示边界。其中,第一寄存器包括两个独立的存储单元,例如,第一存储单元和第二存储单元,且每个存储单元可以存储4*2的矩阵数据。
具体地,第一寄存器接收到外部发送的数据读取信号,该数据读取信号用于将第一寄存器中存储的4*4的矩阵数据转存至第二寄存器中。这里,数据读取信号的流向可以包括第三预设方向和/或第四预设方向,其中,第三预设方向为水平向右和垂直向下,第四预设方向为水平向右。
在周期一内,如图8B所示,由于数据读取信号被输入到数据a(0,0),此时,第一存储单元将数据a(0,0)转存至第二寄存器中的相同位置处。
在周期二内,如图8C所示,由于数据a(0,0)(也即顶点矩阵)的位置与第一存储单元的起始边界相邻,此时,数据读取信号在数据a(0,0)处按照第三预设方向进行传输,传输到数据a(1,0)和数据a(0,1),那么,在这种情况下,第一存储单元将数据a(1,0)和数据a(0,1)转存至第二寄存器中的相同位置处。
在周期三内,如图8D所示,由于数据a(0,1)的位置不与第一存储单元的起始边界相邻,此时,数据读取信号在数据a(0,1)处按照第四预设方向进行传输,传输到数据a(0,2),那么,在这种情况下,第一存储单元将数据a(0,2)转存至第二寄存器中的相同位置处。与此同时,由于数据a(1,0)的位置与第一存储单元的起始边界相邻,此时,数据读取信号在数据a(1,0)处按照第三预设方向进行传输,传输到数据a(1,1)和数据a(2,0),那么,在这种情况下,第一存储单元将数据a(1,1)和数据a(2,0)转存至第二寄存器中的相同位置处。
在周期四内,如图8E所示,由于在上一个周期经过数据a(1,1)的数据读取信号到达了第一存储单元的截止边界,且该数据读取信号不是由顶点矩阵向右传输,在这种情况下,该数据读取信号在这个周期内停止传送。这里,顶点矩阵是指与第一存储单元(亦或是第二存储单元)的起始边界相邻的数据矩阵。由于数据a(0,2)的位置与第二存储单元的起始边界相邻,此时,数据读取信号在数据a(0,2)处按照第三预设方向进行传输,传输到数据a(0,3)和数据a(1,2),那么,在这种情况下,第二存储单元将数据a(0,3)和数据a(1,2)转存至第二寄存器中的相同位置处。与此同时,由于数据a(2,0)的位置与第一存储单元的起始边界相邻,此时,数据读取信号在数据a(2,0)处按照第三预设方向进行传输,传输到数据a(2,1)和数据a(3,0),那么,在这种情况下,第一寄存器将数据a(2,1)和数据a(3,0)转存至第二寄存器中的相同位置处。
在周期五内,如图8F所示,由于由顶点矩阵向右传输的数据读取信号到达第二存储单元的截止边界,那么,在这种情况下,该数据读取信号停止传送。由于数据a(1,2)的位置与第二存储单元的起始边界相邻,此时,数据读取信号在数据a(1,2)处按照第三预设方向进行传输,传输到数据a(1,3)和数据a(2,2),那么,在这种情况下,第二存储单元将数据a(1,3)和数据a(2,2)转存至第二寄存器中的相同位置处。由于数据a(3,0)的位置与第一存储单元的起始边界相邻,且数据读取信号无法向下继续传送,此时,数据读取信号在数据a(3,0)处向右传输,传输到数据a(3,1),那么,在这种情况下,第一存储单元将数据a(3,1)转存至第二寄存器中的相同位置处。
在周期六内,如图8G所示,由于由顶点矩阵a(3,0)向右传输的数据读取信号到达第一存储单元的截止边界,那么,在这种情况下,该数据读取信号停止传送。与此同时,由于数据a(2,2)的位置与第二存储单元的起始边界相邻,此时,数据读取信号在数据a(2,2)处按照第三预设方向进行传输,传输到数据a(2,3)和数据a(3,2),那么,在这种情况下,第二存储单元将数据a(2,3)和数据a(3,2)转存至第二寄存器中的相同位置处。
在周期七内,如图8H所示,由于数据a(3,2)的位置与第二存储单元的起始边界相邻,且数据读取信号无法继续向下传输,此时,数据读取信号在数据a(3,2)处向右进行传输,传输到数据a(3,3),那么,在这种情况下,第二存储单元将数据a(3,3)转存至第二寄存器中的相同位置处。
可以理解的是,随着数据读取信号在第一寄存器存储的数据中的流动,被读取的数据是矩阵左下到右上方向上的一条45度斜边从矩阵左上到右下移动的过程。在本申请实施例中,如果我们定义斜边上方的矩阵数据为上斜边矩阵数据,斜边下方的数据为下斜边矩阵数据,那么,上斜边矩阵数据即为已被快照读取的数据,下斜边矩阵数据即为尚未被读取的数据。
在经过上述7个周期之后,可以实现将第一寄存器中存储的4*4矩阵数据无损的转存至第二寄存器中,从而完成了对4*4矩阵数据的读取过程。
可以理解的是,由于在数据读取信号的作用下,每次读取一个矩阵数据时的读指针位置不改变,从而可以实现多个矩阵数据的流水读取,这一实现方式为实现矩阵乘法器的运算流水化提供可能。
在本申请所描述的数据读取方法中,无需逐一针对每次数据读取均输入一次数据读取信号,在第一寄存器接收到外部发送的数据读取信号的情况下,该数据读取信号一旦传输到第一寄存器的存储空间中,可以通过预设的传输机制传输到其他需要读取的存储空间中,从而可以实现将数据读取信号传输过程中流经的数据转存至第二寄存器中,相较于现有技术而言,其数据读取逻辑简单,从而可以减少外部控制器的资源消耗。
可以理解的是,在一种情形中,当满足数据读取信号与移位控制信号之间存在时序关系,且数据读取信号在移位控制信号之后,可以将存储好的数据读取到第二寄存器中。这一实现方式,并不影响下一个数据的存储以及读取。
在另一种情形中,在移位控制信号的作用下,已经实现了将输入的矩阵数据存储到第一寄存器中。之后,数据缓存器可以在数据读取信号的作用下,可以将第一寄存器中存储的数据转存至第二存储器中。
由于现有技术中,当对数据缓存器写入数据时,需要检查存储空间是否已存满;同样地,当对数据缓存器读取数据时,需要检查存储空间是否为空。实施本申请实施例,由于无需执行上述检查操作,只要保证数据读取信号以及移位控制信号二者之间存在时序关系,即可以实现数据存储和数据读取过程的正确性。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
进一步需要说明的是,虽然图2、图6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、图6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
由上可见,本申请实施例提供的数据缓存器及数据处理方法,移位控制信号可以通过预设的传输机制传输到其他需要写入数据的存储空间中,以实现输入的矩阵数据的存储,相较于现有技术而言,由于可以将数据缓存器等待存储的时间转化为数据移位,在不额外引入写指针等物理控制器件的同时,数据存储的控制逻辑简单、灵活,以简单的硬件设计配合移位控制信号实现了复杂存储过程的有序可控。此外,还可以在一个数据读取信号的作用下,将确定好的数据范围内的数据存储至第二寄存器中,相较于现有技术而言,其数据读取逻辑更简单,可以减少数据读取的复杂度。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(DigitalSubscriber Line,简称DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,简称SSD))等。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。