数据缓存器及数据读取方法与流程

文档序号:19737051发布日期:2020-01-18 04:38阅读:497来源:国知局
数据缓存器及数据读取方法与流程

本申请涉及计算机技术领域,尤其涉及一种数据缓存器及数据读取方法。



背景技术:

目前,在当下的专用集成电路(applicationspecificintegratedcircuit,asic)设计中,通常通过设置适量级数的先进先出队列(firstinputfirstoutput,fifo)数据缓存器来进行数据缓存,来防止数据丢失或者处理数据故障。具体来说,fifo数据缓存器在数据转存过程中执行先进先出的策略,例如,先进入的数据先从fifo数据缓存器中读出。

现有技术中,fifo的工作原理可以描述为:以独立的读写指针在读写脉冲的控制下有顺序地向存储单元中写入数据,或者,有顺序地从存储单元中读取数据。以读取数据为例,在对fifo数据缓存器进行数据读取时,从读指针(r指针)所在位置开始,依次读取出读指针所在位置的数据,同时,每次读取后读指针位置自动加1,到达下一个待读取的数据位置。

从上述实现过程可知,现有技术中读取fifo数据缓存器存储的数据时,仅能实现一维数据的读取控制,即一个fifo数据缓存器只能在行方向或者列方向上依次用一个读指针进行数据读取。但是就实际应用中矩阵数据的读取而言,考虑到fifo数据缓存器的宽度会短于矩阵数据的宽度,一个维度的fifo数据缓存器无法满足一个完整矩阵数据的读取,此时,需要多个读指针来实现二维的矩阵读取控制,例如,设一个fifo数据缓存器的宽度为一个矩阵数据的宽度,要读取一个列数为n的矩阵数据,需要n个fifo(即n个读指针),来控制每一列数据的读取。也是就是说,实现大矩阵数据的读取需要多个fifo组合来实现,每个fifo需要一个读取信号来控制。在这一实现方式中,数据读取的逻辑变得非常复杂。



技术实现要素:

本申请实施例提供一种数据缓存器及数据读取方法,无需逐一针对每次数据读取均输入一次数据读取信号,在第一寄存器接收到外部发送的数据读取信号的情况下,该数据读取信号一旦传输到第一寄存器的存储空间中,可以通过预设的传输机制传输到其他需要读取的存储空间中,由于数据存储于第一寄存器的存储空间中,从而可以实现将数据读取信号传输过程中流经的数据转存至第二寄存器中,相较于现有技术而言,其数据读取逻辑简单。

为解决上述技术问题,第一方面,本申请实施例提供了一种数据读取方法,该方法应用于数据缓存器;数据缓存器包括第一寄存器和第二寄存器;该方法包括:

第一寄存器接收外部发送的数据读取信号;其中,数据读取信号在第一寄存器的存储空间中按照第一预设方向和/或第二预设方向传输;其中,数据存储于第一寄存器的存储空间;第一预设方向为多方向,第二预设方向为单方向;

第一寄存器将所述数据读取信号传输过程中流经的数据转存至所述第二寄存器中。

实施本申请实施例,无需逐一针对每次数据读取均输入一次数据读取信号,在第一寄存器接收到外部发送的数据读取信号的情况下,该数据读取信号一旦传输到第一寄存器的存储空间中,可以通过预设的传输机制传输到其他需要读取的存储空间中,由于数据存储于第一寄存器的存储空间中,从而可以将数据读取信号传输过程中流经的数据均转存至第二寄存器中,相较于现有技术而言,其数据读取逻辑简单,从而可以减少外部控制器的资源消耗。

在一种可能的实现方式中,第一寄存器与第二寄存器相连,且第一寄存器和第二寄存器呈层叠设置;第一寄存器包括第一存储空间;第二寄存器包括第二存储空间,第一存储空间和第二存储空间一一对应;第一寄存器将所述数据读取信号传输过程中流经的数据转存至第二寄存器中,包括:

第一寄存器根据数据读取信号将第一存储空间中存储的数据转存至第二寄存器中的所述第二存储空间。

实施本申请实施例,由于第一寄存器与第二寄存器各自对应的存储单元之间存在相互映射的关系,在第一寄存器接收到外部发送的数据读取信号的情况下,可以将第一寄存器中存储的数据读取到第二寄存器中,且在读取过程中不会破坏存储的数据间的相对位置关系,即第二寄存器中存储的数据的结构和第一寄存器中存储的数据的结构一致,数据在寄存器中的存储状态不发生变化。

在其中一种可能的实现方式中,第一寄存器为存储阵列中的寄存器,存储阵列包括第一边界;其中,第一边界为起始边界;第一寄存器中存储有第一数据;方法还包括:

在满足第一数据的位置与第一边界相邻的情况下,数据读取信号在第一数据中按照第一预设方向传输;其中,第一预设方向包括第一子方向和第二子方向;

第一寄存器将数据读取信号传输过程中流经的数据转存至第二寄存器中,包括:

第一寄存器将沿第一预设方向传输的数据读取信号所流经的第一数据转存至第二寄存器中。

在其中一种可能的实现方式中,第一子方向与第二子方向正交。

在其中一种可能的实现方式中,第一寄存器为存储阵列中的寄存器,存储阵列包括第一边界;其中,第一边界为起始边界;第一寄存器中存储有第二数据;方法还包括:

在满足第二数据的位置与第一边界不相邻的情况下,数据读取信号在第二数据中按照第二预设方向传输;

第一寄存器将数据读取信号传输过程中流经的数据转存至第二寄存器中,包括:

第一寄存器将沿第二预设方向传输的数据读取信号所流经的第二数据转存至第二寄存器中。

第二方面,本申请实施例提供了一种数据缓存器,该数据缓存器包括第一寄存器和第二寄存器;其中,

第一寄存器,用于接收外部发送的数据读取信号;其中,数据读取信号在第一寄存器的存储空间中按照第一预设方向和/或第二预设方向传输;其中,数据存储于所述第一寄存器的存储空间;第一预设方向为多方向,第二预设方向为单方向;

第一寄存器,还用于将数据读取信号传输过程中流经的数据转存至第二寄存器中。

在其中一种可能的实现方式中,第一寄存器与第二寄存器相连,且第一寄存器和第二寄存器呈层叠设置;第一寄存器包括第一存储空间;第二寄存器包括第二存储空间,第一存储空间和第二存储空间一一对应;第一寄存器,用于将数据读取信号传输过程中流经的数据转存至第二寄存器中,包括:

第一寄存器,用于根据数据读取信号将第一存储空间中存储的数据转存至

第二寄存器中的第二存储空间。

在其中一种可能的实现方式中,第一寄存器为存储阵列中的寄存器,存储阵列包括第一边界;其中,第一边界为起始边界;第一寄存器中存储有第一数据,在满足第一数据的位置与第一边界相邻的情况下,数据读取信号在第一数据中按照第一预设方向传输;其中,第一预设方向包括第一子方向和第二子方向。

在其中一种可能的实现方式中,第一子方向与第二子方向正交。

在其中一种可能的实现方式中,第一寄存器为存储阵列中的寄存器,存储阵列包括第一边界;其中,第一边界为起始边界;第一寄存器存储有第二数据,在满足第二数据的位置与第一边界不相邻的情况下,数据读取信号在第二数据中按照第二预设方向传输。

第三方面,本申请实施例提供了一种电子设备,该电子设备可以包括上述第一方面中的任意一种实现方式所提供的数据缓存器以及耦合于数据缓存器的分立器件。

第四方面,本申请实施例提供一种片上系统芯片,该片上系统芯片包括上述第一方面的任意一种实现方式所提供的芯片。该片上系统芯片,可以由芯片构成,也可以包括芯片和其他分立器件。

附图说明

为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。

图1a是本申请实施例提供的一种数据缓存器的结构图;

图1b为本申请实施例提供的一种矩阵运算应用场景下的硬件结构图;

图1c为本申请实施例提供的另一种矩阵运算应用场景下的硬件结构图;

图1d为本申请实施例提供的另一种矩阵运算应用场景下的硬件结构图;

图1e为本申请实施例提供的一种寄存器内部存储阵列的结构示意图;

图1f为本申请实施例提供的一种运算电路的具体结构图;

图2是本申请实施例提供的一种数据读取方法的流程示意图;

图3a是本申请实施例提供的一种存储矩阵的结构示意图;

图3b是本申请实施例提供的一种存储集群的结构示意图;

图3c是本申请实施例提供的一种数据读取信号的传输示意图;

图3d是本申请实施例提供的一种第一数据的表现形式的示意图;

图3e是本申请实施例提供的另一种第一数据的表现形式的示意图;

图3f是本申请实施例提供的另一种数据读取信号的传输示意图;

图3g是本申请实施例提供的一种第一寄存器与第二寄存器各自对应的存储阵列间的映射关系图;

图4a是本申请实施例中提供的一种第一寄存器中存储的4*4的矩阵数据的示意图;

图4b是本申请实施例中提供的一种数据转存过程的示意图;

图4c是本申请实施例中提供的另一种数据转存过程的示意图;

图4d是本申请实施例中提供的另一种数据转存过程的示意图;

图4e是本申请实施例中提供的另一种数据转存过程的示意图;

图4f是本申请实施例中提供的另一种数据转存过程的示意图;

图4g是本申请实施例中提供的另一种数据转存过程的示意图;

图4h是本申请实施例中提供的另一种数据转存过程的示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。

应当理解,本申请的说明书和权利要求书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

在本说明书中使用的术语“部件”、“模块”、“系统”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,部件可以是但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。通过图示,在计算设备上运行的应用和计算设备都可以是部件。一个或多个部件可驻留在进程和/或执行线程中,部件可位于一个计算机上和/或分布在2个或更多个计算机之间。此外,这些部件可从在上面存储有各种数据结构的各种计算机可读介质执行。部件可例如根据具有一个或多个数据分组(例如来自与本地系统、分布式系统和/或网络间的另一部件交互的二个部件的数据,例如通过信号与其它系统交互的互联网)的信号通过本地和/或远程进程来通信。

本申请提供一种数据缓存器,对本申请提出的技术问题进行具体分析和解决。请参见图1a,是本申请实施例提供的一种数据缓存器的结构图。如图1a所示,数据缓存器10包括第一寄存器101和第二寄存器102,其中,第一寄存器101与第二寄存器102相连,且第一寄存器101和第二寄存器102呈层叠设置。

其中,第一寄存器101,可以用于接收外部发送的数据读取信号;其中,数据读取信号在第一寄存器的存储空间中按照第一预设方向和/或第二预设方向传输;其中,数据存储于所述第一寄存器的存储空间;第一预设方向为多方向,第二预设方向为单方向;

其中,第一寄存器101,还可以用于将数据读取信号传输过程中流经的数据转存至第二寄存器中。

在本申请实施例中,第一寄存器和第二寄存器呈层叠设置是指:第一寄存器和第二寄存器各自包含的存储阵列为相互映射的关系,这一实现方式应该理解为逻辑层面的层叠设置。在实际应用中,在物理结构上,第一寄存器和第二寄存器可以采用物理层叠设置,也可以采用同一层作为不同寄存器链并列设置,等等。

在实际应用中,第一寄存器可以为按照存储功能进行数据存储的寄存器,第二寄存器可以为按照运算功能进行数据存储的寄存器,本申请不作具体限定。

在本申请实施例中,第一寄存器和第二寄存器可以用来存储整型数据、浮点型数据、常数、向量数据等等,本申请实施例不作具体限定。

为了便于理解,下面示例性地描述具体的应用场景:

第一应用场景:矩阵乘法器运算。

如图1b所示,为本申请实施例提供的一种矩阵运算应用场景下的硬件结构图,其中,矩阵乘法器包括控制器、运算电路、寄存器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各自对应的存储空间为相互映射的关系;以矩阵a寄存器和寄存器2为例,其构成了另一个数据缓存器,其中,矩阵a寄存器和寄存器2各自对应的存储空间为相互映射的关系。从图1b可以知道的是,矩阵a寄存器与矩阵b寄存器位于同侧。在一种可能的实现方式中,如图1c所示,矩阵a寄存器与矩阵b寄存器相邻。

需要说明的是,上述所提及的矩阵a寄存器和矩阵b寄存器均为快照读取式存储阵列。

进一步地,请参见图1d,为本申请实施例提供的一种矩阵运算应用场景下的实现流程图。其中,矩阵乘法控制器接收外部发送的数据读取信号以及预设参数,其中,预设参数用于确定当前数据读取操作读取的数据量大小(也即数据范围)以及数据块的输入方式。在实际应用中,以第一存储阵列为例,数据块的输入方式是指:数据块中的第一个数据进入第一存储阵列的方向与第一存储阵列的第一边界相邻,还是与第一存储阵列的第二边界相邻。在本申请实施例中,数据块可以以平行四边形的方式进行呈现。具体地,该数据块的输入方式参数传送至顶点选择器和数据读取信号通道预设器,当前数据读取操作读取的数据量大小参数传送至数据读取信号通道预设器。

这里,数据读取信号通道预设器用于开通数据缓存器中矩阵a寄存器内各个单位存储阵列的数据读取信号。

具体地,矩阵乘法控制器可以根据接收到的当前数据读取操作读取的数据量大小参数,开通满足该参数的单位存储阵列的数据读取信号传送通道。以第一存储阵列为例,矩阵乘法控制器根据接收到的数据块的输入方式参数,在一种情形下:如果数据块中的第一个数据进入第一存储阵列的方向与第一存储阵列的第一边界相邻(也即左边界),那么,在这种情况下,各个存储阵列左边界的单位存储阵列开通第一预设方向(例如,水平向右和垂直向下)的数据读取信号传送通道,其他单位存储阵列开通第二预设方向(例如,水平向右)的数据读取信号传送通道;在另一种情形下:如果数据块中的第一个数据进入第一存储阵列的方向与第一存储阵列的第二边界相邻(也即右边界),那么,在这种情况下,各个存储阵列右边界的单位存储阵列开通第一预设方向(例如,水平向左和垂直向下)的数据读取信号传送通道,其他单位存储阵列开通第二预设方向(例如,水平向左)的数据读取信号传送通道。需要说明的是,在上述两种实现方式中,各单位存储阵列其他方向未开通的数据读取信号传送通道均关闭。

在本申请实施例中,顶点选择器用于确定数据读取信号进入存储阵列(亦或是存储集群)的顶点。以第一存储阵列为例,在一种情形下:如果数据块中的第一个数据进入第一存储阵列的方向与第一存储阵列的第一边界相邻(也即左边界),那么,在这种情况下,数据读取信号通过数据读取信号传送通道进入第一存储阵列的顶点为左上方顶点;在另一种情形下:如果数据块中的第一个数据进入第一存储阵列的方向与第一存储阵列的第二边界相邻(也即右边界),那么,在这种情况下,数据读取信号通过数据读取信号传送通道进入第一存储阵列的顶点为右上方顶点。

进一步地,如图1e所示,为本申请实施例提供的一种寄存器内部存储阵列的结构示意图。矩阵乘法控制器发送一个数据读取信号到数据缓存器的输入端。在数据读取信号从数据缓存器的输入端进入之后,通过预先设置好的数据读取信号传送通道传送至存储阵列的一个单位顶点矩阵内的单位矩阵数据读取控制器和单位矩阵数据读取信号通道选择器。那么,在数据读取信号进入单位矩阵数据读取信号通道选择器之后,可以根据该单位矩阵数据读取信号通道选择器所在存储阵列内的位置和输入矩阵方式选择一个或多个数据读取信号传送通道,将数据读取信号分别送入所选择的一个或多个数据读取信号传送通道,通过数据读取信号传送通道将数据读取信号传送至一个或多个单位矩阵内。从而可以知道的是,数据读取信号在数据读取控制器的作用下,可以将其流经过的单位存储阵列中存储的数据,通过数据读取通道转存至第二寄存器中。

需要说明的是,上述所提及的控制器、选择器、通道等,均可以由具体的电路构成。这里,电路可以包括但不限于数字电路、模拟电路等。本领域技术人员可以根据实际情况选择一个或多个的组合实现相应的功能。

在本申请实施例中,基于图1b的基础上,请参见图1f,为本申请实施例提供的一种运算电路的具体结构图。如图1f所示,运算电路包括x行*y列运算电路(可以简称为乘累加单元mac),每个运算单元可以各自独立的进行向量乘法运算,图1f中以运算电路包括4*4个运算单元为例进行绘制,即x=4,y=4,。其中,运算电路设置有两路输入,分别用于接收寄存器1和寄存器2发送的行向量和列向量,并对行向量和列向量进行向量乘法运算。具体地,一个运算单元包括向量乘法电路和加法电路,其中,矩阵乘法电路用于接收寄存器1发送的行向量数据和寄存器2发送的列向量数据,并将两路向量进行相乘;加法电路用于对两路向量相乘的结果进行相加,以及对同属于一个运算单元的计算结果进行累加得到每个运算单元的计算结果。

需要说明的是,本申请实施例提供的矩阵乘法器不仅可以应用于机器学习、深度学习以及卷积神经网络等领域,也可以应用到数字图像处理和数字信号处理等领域,还可以应用在其他涉及矩阵乘法运算的领域。

第二应用场景:数据检查。

在本申请实施例中,第一寄存器接收外部发送的数据读取信号,由于数据读取信号可以在确定好的数据范围内按照第一预设方向和/或第二预设方向进行流动,以实现将数据读取信号流经过的数据转存至第二寄存器中,也即本申请所描述的技术方案可以通过遍历的方式对确定好的数据范围内的数据进行一一读取,不存在被上次读取操作打乱指针位置的情况。

这里,需要说明的是,在以数据检查为目的的情况下,现有技术中,第一寄存器内的读指针位置发生改变且状态不可逆,无法满足数据检查的需要。在本申请中,将第一寄存器存储的数据转存至第二寄存器的实现过程中,数据在寄存器中的存储状态不发生改变。

基于图1a所示的数据缓存器的结构,请参见图2,是本申请实施例提供的一种数据读取方法的流程示意图,具体说明在本申请实施例中是如何实现数据读取的,该方法可以包括但不限于如下步骤:

步骤s200、第一寄存器接收外部发送的数据读取信号;其中,数据读取信号在第一寄存器的存储空间中按照第一预设方向和/或第二预设方向传输;其中,数据存储于第一寄存器的存储空间;第一预设方向为多方向,第二预设方向为单方向。

在本申请实施例中,外部发送的数据读取信号可以是通过i/o接口传递的,也可以是通过专用通道传输的,本申请实施例不作具体限定。

在本申请实施例中,数据读取信号在第一寄存器存储的数据中的流动方向可以包括如下三种情形:

第一种情形:数据读取信号在第一寄存器存储的数据中按照第一预设方向进行流动;这里,第一预设方向为多方向。

第二种情形:数据读取信号在第一寄存器存储的数据中按照第二预设方向进行流动;这里,第二预设方向为单方向。

第三种情形:数据读取信号在第一寄存器存储的数据中按照第一预设方向和第二预设方向进行流动。可以理解的是,第三种情形包含了上述两种情形。

在实际应用中,上述所描述的三种情形中,第一寄存器存储的数据的位置关系决定了数据读取信号的流动方向。这里,数据的位置关系可以包括但不限于:数据的位置与寄存器的锁定边界相邻;数据的位置与寄存器的锁定边界不相邻等等。下面对其进行详细阐述:

(1)在一种情形中,数据读取信号在第一寄存器存储的数据中按照第一预设方向进行流动:

在本申请实施例中,第一寄存器为存储阵列中的寄存器,存储阵列包括第一边界;其中,第一边界为起始边界;第一寄存器中存储有第一数据;在满足第一数据的位置与第一边界相邻的情况下,数据读取信号在第一数据中按照第一预设方向传输;其中,第一预设方向包括第一子方向和第二子方向。

为了便于理解,下面先介绍下“寄存器”、“存储阵列”以及“存储集群”这三者之间的关系。在本申请实施例中,多个寄存器可以组成一个存储阵列,多个存储阵列可以组成一个存储集群。例如,如图3a所示,第一存储阵列包括若干个寄存器,存储阵列包括第一存储阵列和第二存储阵列;又例如,在图3a的基础上,多个存储阵列可以组成一个存储集群,具体地,请参见图3b,为本申请实施例提供的一种存储集群的结构示意图。

在一种可能的实现方式中,存储阵列中所包含的寄存器可以采用规则排列的方式进行布局设计,也可以采用不规则排列的方式进行布局设计,本申请实施例不作具体限定。

在一种可能的实现方式中,存储集群包括多个存储阵列,且多个存储阵列按照同一方向连接,以使数据读取信号在流经多个存储阵列时的方向保持一致。

具体地,可以将多个存储阵列按照相同方向进行连接,以得到存储集群。例如,若把存储阵列的深度和宽度看作矩形的长和宽,对各个存储阵列采取长边相邻,短边相接的并对齐长边的方式进行连接,从而可以实现将多个存储阵列按照相同方式进行连接。那么,在这种情况下,当数据读取信号在各个存储阵列之间进行传输时,可以保证数据读取信号的传送方式一致,使得各个存储阵列的控制结构简单。与此同时,由于多个存储阵列按照相同方向进行连接,可以保证多个存储阵列的输入端到输出端的相对位置一直,便于扩展。

在本申请实施例中,将多个存储阵列按照相同方向进行连接的这一实现方式,当数据读取信号在多个存储阵列中流动时,不必逐一控制多个存储阵列的读取,仅需向本申请所描述的数据缓存器输入一个数据读取信号,即可实现将第一寄存器存储的数据无损地读取到第二寄存器中,相较于现有技术而言,大大降低了数据读取过程中读取逻辑的复杂度。

需要说明的是,上述存储阵列的连接方式仅仅是例举的部分情况,而不是穷举,本领域技术人员在理解本申请技术方案的精髓的情况下,可能会在本申请技术方案的基础上产生其它的变形或者变换,比如,存储集群中的多个存储阵列也可以采用其他方式进行连接,例如,相反的连接方式。但只要其实现的功能以及达到的技术效果与本申请类似,那么均应当属于本申请的保护范围。总的来说,在本申请实施例中,多个存储阵列的连接方式以能够刚好承载矩阵数据并不产生空置的存储阵列为基准。

在一种可能的实现方式中,存储集群的形状为正方形。由于数据读取信号的传输方向可以沿第一预设方向遍历存储集群,如果遍历面积为正方形的话,第一子方向和第二子方向遍历的耗时一致,可以最大化利用时间和资源。

在本申请实施例中,如图3a所示,存储阵列包括第一存储阵列和第二存储阵列,其中,第一存储阵列包括第一寄存器。进一步地,第一存储阵列包含第一边界和第二边界,这里,对于第一存储阵列来说,第一边界为起始边界,第二边界为截止边界;第二存储阵列包含第二边界和第三边界,这里,对于第二存储阵列来说,第二边界为起始边界,第三边界为截止边界。

在本申请实施例中,第一子方向与第二子方向正交。例如,如图3c所示,由于第一数据的位置与第一存储阵列的第一边界(也即起始边界)相邻,此时数据读取信号在第一数据中的流动方向为水平向右和垂直向下。需要说明的是,这里所例举的数据读取信号在第一数据中的流动方向只是作为一种示例,不应构成限定。考虑到数据读取信号进入存储阵列的表现形式具有多样化(其原因在于:存储阵列的入口位置不作具体限定),那么,相应地,数据读取信号在第一数据中的流动方向也具有多样化。一般来说,数据读取信号在第一数据中的流动方向需要结合存储阵列的入口位置来确定。例如,存储阵列的入口位置为:左边,那么,在这种情况下,数据读取信号在第一数据中的流动方向可以为水平向右和垂直向下;又例如,存储阵列的入口位置为:右边,那么,在这种情况下,数据读取信号在第一数据中的流动方向可以为水平向左和垂直向下,等等。

在本申请实施例中,例如,如图3d中虚线框所示,第一数据可以是指某一个数据;又例如,如图3e中虚线框所示,第一数据也可以是指某一块具有共同属性的一类数据等等,本申请不作具体限定。

在本申请实施例中,当数据读取信号在第一寄存器存储的数据中按照第一预设方向流动时,可以实现将数据读取信号传输过程中流经的数据转存至第二寄存器中。

(2)在一种情形中,数据读取信号在第一寄存器存储的数据中按照第二预设方向进行流动:

在本申请实施例中,第一寄存器为存储阵列中的寄存器,存储阵列包括第一边界;其中,第一边界为起始边界;第一寄存器中存储有第二数据;方法还包括:

在满足第二数据的位置与第一边界不相邻的情况下,数据读取信号在第二数据中按照第二预设方向传输。

在本申请实施例中,例如,如图3f所示,由于第一数据的位置与第一存储阵列的第一边界(也即起始边界)不相邻,当存储阵列的入口位置为:左边,此时数据读取信号在第一数据中的流动方向为水平向右。

同样地,在本申请实施例中,对于第二数据来说,可以是指某一个数据,也可以是指某一块具有共同属性的一类数据等等,本申请不作具体限定。

在本申请实施例中,当数据读取信号在第一寄存器存储的数据中按照第二预设方向流动时,可以实现将数据读取信号在传输过程中流经的数据转存至第二寄存器中。

(3)在一种情形中,数据读取信号在第一寄存器存储的数据中按照第一预设方向和第二预设方向进行流动。

在这种情形下,第一寄存器存储的数据中往往包含两种不同类型的数据,其中一种为数据的位置与存储阵列的锁定边界相邻,其中另一种为数据的位置不与存储阵列的锁定边界相邻,关于在满足数据的位置与锁定边界相邻或不相邻的情况下,数据读取信号如何流动的具体实现请参考前述描述,此处不多加赘述。

步骤s202、第一寄存器将数据读取信号传输过程中流经的数据转存至第二寄存器中。

考虑到数据读取信号在数据中的流动方向有上述三种不同的情形,那么,相应地,第一寄存器可以根据上述三种不同情形下的数据读取信号进行数据的转存。

在其中一种可能的实现方式中,考虑到第一寄存器与第二寄存器相邻,且第一寄存器和第二寄存器之间呈层叠设置,那么,在这种情况下,可以采用如下方法实现将第一寄存器中存储的数据无损的存储到第二寄存器中。

具体地,第一寄存器与第二寄存器相连,且第一寄存器和第二寄存器呈层叠设置;第一寄存器包括第一存储空间;第二寄存器包括第二存储空间,第一存储空间和第二存储空间一一对应;第一寄存器将数据读取信号传输过程中流经的数据转存至第二寄存器中,包括:

第一寄存器根据数据读取信号将第一存储空间中存储的数据转存至第二寄存器中的第二存储空间。

如前,在本申请实施例中,第一寄存器和第二寄存器呈层叠设置是指:第一寄存器和第二寄存器各自包含的存储阵列(或者存储空间;亦或者存储单元)为相互映射的关系,这一实现方式应该理解为逻辑层面的层叠设置。

例如,如图3g所示,存储阵列1中包含第一存储单元,存储阵列2中包含第二存储单元,其中,第一存储单元和第二存储单元为相互映射的关系。例如,当数据读取信号在第一存储单元存储的数据中按照第一预设方向进行传输时,第一存储单元将数据读取信号传输过程中流经的数据转存至第二存储单元中。又例如,当数据读取信号在第一存储单元存储的数据中按照第二预设方向进行传输时,第一存储单元将数据读取信号传输过程中流经的数据转存至第二存储单元中。这一实现方式,可以理解为将当下时刻第一寄存器中的数据照相,完全复制到第二寄存器中,即“快照”。

通过这一实现方式,由于第一寄存器与第二寄存器各自对应的存储单元之间存在相互映射的关系,在第一寄存器接收到外部发送的数据读取信号的情况下,可以将第一寄存器中存储的数据转存至第二寄存器中,且在读取过程中不会破坏存储的数据间的相对位置关系,即第二寄存器中存储的数据的结构和第一寄存器中存储的数据的结构一致,数据在存储器中的存储状态不发生变化。

这里,不改变数据在存储器中的存储状态是指,在数据读取信号的作用下,每次读取一个矩阵数据时读指针位置不改变,从而可以实现多个矩阵数据的流水读取,这一实现方式为实现矩阵乘法器的运算流水化提供可能。

为了便于更好的理解本申请所描述的技术方案,下面将结合具体的实例进行阐述:

如图4a所示,第一寄存器中存储有4*4的矩阵数据,数据读取信号的入口位置在第一寄存器的左边,第一寄存器中的虚线表示边界。其中,第一寄存器包括两个独立的存储单元,例如,第一存储单元和第二存储单元,且每个存储单元可以存储4*2的矩阵数据。

具体地,第一寄存器接收到外部发送的数据读取信号,该数据读取信号用于将第一寄存器中存储的4*4的矩阵数据转存至第二寄存器中。这里,数据读取信号的流向可以包括第一预设防线和/或第二预设方向,其中,第一预设方向为水平向右和垂直向下,第二预设方向为水平向右。

在周期一内,如图4b所示,由于数据读取信号被输入到数据a(0,0),此时,第一存储单元将数据a(0,0)转存至第二寄存器中的相同位置处。

在周期二内,如图4c所示,由于数据a(0,0)(也即顶点矩阵)的位置与第一存储单元的起始边界相邻,此时,数据读取信号在数据a(0,0)处按照第一预设方向进行传输,传输到数据a(1,0)和数据a(0,1),那么,在这种情况下,第一存储单元将数据a(1,0)和数据a(0,1)转存至第二寄存器中的相同位置处。

在周期三内,如图4d所示,由于数据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)转存至第二寄存器中的相同位置处。

在周期四内,如图4e所示,由于在上一个周期经过数据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)转存至第二寄存器中的相同位置处。

在周期五内,如图4f所示,由于由顶点矩阵向右传输的数据读取信号到达第二存储单元的截止边界,那么,在这种情况下,该数据读取信号停止传送。由于数据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)转存至第二寄存器中的相同位置处。

在周期六内,如图4g所示,由于由顶点矩阵a(3,0)向右传输的数据读取信号到达第一存储单元的截止边界,那么,在这种情况下,该数据读取信号停止传送。与此同时,由于数据a(2,2)的位置与第二存储单元的起始边界相邻,此时,数据读取信号在数据a(2,2)处按照第一预设方向进行传输,传输到数据a(2,3)和数据a(3,2),那么,在这种情况下,第二存储单元将数据a(2,3)和数据a(3,2)转存至第二寄存器中的相同位置处。

在周期七内,如图4h所示,由于数据a(3,2)的位置与第二存储单元的起始边界相邻,且数据读取信号无法继续向下传输,此时,数据读取信号在数据a(3,2)处向右进行传输,传输到数据a(3,3),那么,在这种情况下,第二存储单元将数据a(3,3)转存至第二寄存器中的相同位置处。

可以理解的是,随着数据读取信号在第一寄存器存储的数据中的流动,被读取的数据是矩阵左下到右上方向上的一条45度斜边从矩阵左上到右下移动的过程。在本申请实施例中,如果我们定义斜边上方的矩阵数据为上斜边矩阵数据,斜边下方的数据为下斜边矩阵数据,那么,上斜边矩阵数据即为已被快照读取的数据,下斜边矩阵数据即为尚未被读取的数据。

在经过上述7个周期之后,可以实现将第一寄存器中存储的4*4矩阵数据无损的转存至第二寄存器中,从而完成了对4*4矩阵数据的读取过程。

可以理解的是,由于在数据读取信号的作用下,每次读取一个矩阵数据时的读指针位置不改变,从而可以实现多个矩阵数据的流水读取,这一实现方式为实现矩阵乘法器的运算流水化提供可能。

实施本申请实施例,无需逐一针对每次数据读取均输入一次数据读取信号,在第一寄存器接收到外部发送的数据读取信号的情况下,该数据读取信号一旦传输到第一寄存器的存储空间中,可以通过预设的传输机制传输到其他需要读取的存储空间中,从而可以实现将数据读取信号传输过程中流经的数据转存至第二寄存器中,相较于现有技术而言,其数据读取逻辑简单,从而可以减少外部控制器的资源消耗。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。

进一步需要说明的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

由上可见,本申请实施例提供的数据缓存器及数据读取方法,可以在一个数据读取信号的作用下,将确定好的数据范围内的数据存储至第二寄存器中,相较于现有技术而言,其数据读取逻辑更简单,可以减少数据读取的复杂度。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriberline,简称dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solidstatedisk,简称ssd))等。

尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。

尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1