数据缓存装置及控制方法、数据处理芯片、数据处理系统与流程

文档序号:15362101发布日期:2018-09-05 00:56阅读:130来源:国知局

本专利文件披露的内容包含受版权保护的材料。该版权为版权所有人所有。版权所有人不反对任何人复制专利与商标局的官方记录和档案中所存在的该专利文件或者该专利披露。

本申请涉及数据处理领域,并且更为具体地,涉及一种数据缓存装置及控制方法、数据处理芯片、数据处理系统。



背景技术:

随着数据处理芯片的处理效率的提升,数据处理芯片的数据处理速度越来越快。

数据处理芯片的数据处理速度往往大于数据处理芯片从外部存储单元将数据读取至(或搬移至)内部缓存单元的速度。因此,对于数据处理芯片而言,外部数据的读取速度成为制约该数据处理芯片的数据处理效率的瓶颈。

为了缓解外部数据的读取速度对数据处理芯片的数据处理效率的制约,传统数据处理芯片会在芯片内部设置容量较大的缓存单元,使得传统数据处理过程需要消耗大量的片上缓存资源。



技术实现要素:

本申请提供一种数据缓存装置及控制方法、数据处理芯片、数据处理系统,可以降低数据处理过程所需的片上缓存资源。

第一方面,提供一种数据缓存装置,所述数据缓存装置包括:第一记录单元,被配置成记录预设的多个读标识中的忙碌标识和空闲标识,每个所述忙碌标识对应待读取的一个数据突发;缓存单元,包含用于对所述缓存单元进行循环访问的头指针和尾指针,以及由所述头指针和所述尾指针限定的缓存空间,所述缓存空间包含每个所述忙碌标识对应的缓存子空间,且每个所述忙碌标识对应的缓存子空间用于存储相应的数据突发;控制单元,被配置成执行以下操作:按照预设的顺序将从内存读取的数据突发写入忙碌标识对应的缓存子空间;当所述忙碌标识对应的缓存子空间写入所述数据突发的最后一个数据块时,更新所述第一记录单元,将所述忙碌标识更改为空闲标识。

第二方面,提供一种数据处理芯片,包括如第一方面所述的数据缓存装置;以及数据处理装置,与所述数据缓存装置相连,用于处理所述数据缓存装置接收到的数据。

第三方面,提供一种数据处理系统,包括:总线;如第二方面所述的数据处理芯片;以及中央处理单元,所述中央处理单元通过所述总线与所述数据处理芯片相连。

第四方面,提供一种数据缓存装置的控制方法,所述数据缓存装置包括:第一记录单元,被配置成记录预设的多个读标识中的忙碌标识和空闲标识,每个所述忙碌标识对应待读取的一个数据突发;缓存单元,包含用于对所述缓存单元进行循环访问的头指针和尾指针,以及由所述头指针和所述尾指针限定的缓存空间,所述缓存空间包含每个所述忙碌标识对应的缓存子空间,且每个所述忙碌标识对应的缓存子空间用于存储相应的数据突发;所述控制方法包括:按照预设的顺序将从内存读取的数据突发写入忙碌标识对应的缓存子空间;当所述忙碌标识对应的缓存子空间写入所述数据突发的最后一个数据块时,更新所述第一记录单元,将所述忙碌标识更改为空闲标识。

本申请提供的数据缓存装置可以基于头指针、尾指针以及用于记录读标识忙闲状态的第一记录单元实现对内部缓存空间的循环利用,从而一定程度上降低数据处理过程所需的片上缓存资源。

附图说明

图1是可应用本发明实施例的数据处理系统的示意性结构图。

图2是根据本发明一个实施例的数据缓存装置的示意性结构图。

图3是根据本发明一个实施例的数据缓存装置的控制方法的示意性流程图。

图4是根据本发明另一实施例的数据缓存装置的示意性结构图。

图5是第一记录单元和第二记录单元的实现方式的示例图。

图6是图3中的步骤310的一种实现方式的示意性流程图。

图7是根据本发明另一实施例的数据缓存装置的控制方法的示意性流程图。

图8是根据本发明又一实施例的数据缓存装置的控制方法的示意性流程图。

图9是根据本发明又一实施例的数据缓存装置的控制方法的示意性流程图。

图10是根据本发明又一实施例的数据缓存装置的示意性结构图。

具体实施方式

图1是可应用本发明实施例的数据处理系统的示意性结构图。数据处理系统10可以包括中央处理单元(centralprocessingunit,cpu)12、内存14、总线16和数据处理芯片17。cpu12、内存14和数据处理芯片17可以通过总线16相连。

cpu12可以负责整个数据处理系统10的管理和控制,并可以执行数据运算任务。

内存14例如可以是双倍数据速率(doubledatarate,ddr)存储器。内存14可用于存储从数据处理系统10外部获取的数据,如存储从外部磁盘读取的数据。内存14中存储的数据可以供cpu12使用,也可以供数据处理芯片17使用。

总线16可以理解为数据处理系统10内部的各个模块进行通信和数据交互的通道。总线16的类型可以有多种,例如可以是高级可扩展接口(advancedextensibleinterface,axi)总线或其他类型的内部总线。

数据处理芯片17可以包括数据缓存装置18和数据处理装置19。

数据缓存装置18可用于从内存14中读取数据或数据突发(burst)。作为一个示例,数据缓存装置18可在cpu12的控制下从内存14中读取数据突发。作为另一个示例,数据缓存装置18可以以直接内存存取(directmemoryaccess,dma)的方式从内存14中读取数据突发。数据缓存装置18内部设置有缓存单元。数据缓存装置可以将从内存14中读取的数据突发缓存至其内部的缓存单元,供数据处理装置19使用。在一些情况下,数据突发也可称为突发或突发数据。1个数据突发通常可以包括多个数据块,例如,1个数据突发可以包括8个数据块。1个数据突发包含的数据块的数量可以通过数据突发的突发长度(burstlength,bl)来表示。

数据缓存装置18可以是支持outstanding(显著或显著传输)的数据缓存装置。outstanding可表示不必等前一读请求处理完毕即可发送下一读请求,且后发送的读请求对应的数据突发可以先返回。outstanding可以提升数据处理系统10的数据读取效率。

数据处理装置19可基于数据缓存装置18缓存的数据进行数据运算。应理解,cpu12和数据处理装置19均可基于内存中的数据进行数据运算,cpu12需要处理的数据的类型与数据处理装置19需要处理的数据的类型与实际应用有关,本发明实施例对此并不限定。例如,cpu12可用于处理通用数据,而数据处理装置19可专门用于处理某种特定类型或某种特定应用相关的数据,如图像数据等。

数据处理芯片17的数据处理速度往往大于数据处理芯片17从内存14将数据突发读取至(或搬移至)数据缓存装置18的速度。因此,对于数据处理芯片17而言,外部数据的读取速度成为制约该数据处理芯片17的数据处理效率的瓶颈。

为了缓解外部数据的读取速度对数据处理芯片的数据处理效率的制约,传统数据缓存装置内部一般设置有容量较大的缓存,导致片上缓存资源的消耗较大。

为了降低数据处理过程所需的片上缓存资源,下面结合图2,详细描述根据本发明实施例的数据缓存装置18。

如图2所示,数据缓存装置18可以包括第一记录单元181、缓存单元182以及控制单元183。

第一记录单元181可被配置成记录预设的多个读标识(或称读id)中的忙碌标识和空闲标识。预设的读标识的数量可以表示数据缓存装置18支持的以outstanding方式传输的读请求的数量。以预设的读标识的数量等于8为例,则可以表示数据缓存装置18支持8个读请求以outstanding的方式传输。为了便于描述,下文将8个读请求以outstanding的方式传输称为outstanding8。

预设的读标识可以包含忙碌标识和空闲标识。一个读标识被设置为忙碌标识可表示数据缓存装置18正在读取该读标识对应的数据突发。因此,每个忙碌标识可对应待读取的一个数据突发。一个读标识被设置为空闲标识可表示数据缓存装置18并未读取该读标识对应的数据突发。或者,一个读标识被设置为空闲标识可表示该读标识正处于空闲状态,能够被用于读取新的数据突发。

第一记录单元181可用于记录多个读标识的忙闲状态。第一记录单元181例如可以是寄存器,或其他类型的存储单元。以outstanding8为例,数据缓存装置18可以配置有8个读标识。第一记录单元181可以是一个8位寄存器,该寄存器的每个比特位可对应一个读标识。该比特位的取值为1,可以表示该比特位对应的读标识为忙碌标识。该比特位的取值为0,可以表示该比特位对应的读标识为空闲标识。

缓存单元182可以包含用于对所述缓存单元182进行循环访问的头指针(或称head指针)和尾指针(或称rear指针)。所谓循环方位,可以指当尾指针所指向的地址达到缓存单元182的末地址时,如果尾指针要继续移动,则该尾指针所指向的下一地址变更为缓存单元182的首地址。通过该头指针和尾指针可以实现对缓存单元182的存储空间的循环利用。在一些实施例中,该缓存单元182例如可以是先入先出(firstinputfirstoutput,fifo)队列。

进一步地,缓存单元182可以包含头指针和尾指针限定的缓存空间。该缓存空间可以占用缓存单元182的部分或全部地址范围。头指针和尾指针限定的缓存空间可以理解为该缓存空间以头指针所指向的地址为起始地址,以尾指针所指向的地址为末尾地址。

缓存空间可以包含每个忙碌标识对应的缓存子空间,且每个忙碌标识对应的缓存子空间可用于存储相应的数据突发(即该每个忙碌标识对应的数据突发)。

以一个数据突发包含8个数据块,且每个数据块占缓存空间中的1个存储地址为例,则每个忙碌标识对应的缓存子空间可以占缓存单元182的连续的8个存储地址。假设忙碌标识的数量为3,则上述缓存空间可以由存单元182中的连续的24个存储地址构成。

在一些实施例中,缓存单元182例如可以采用随机存取存储器(ramdomaccessmemory,ram)实现。

本发明实施例对缓存单元182的接口位宽和容量不做具体限定,可以根据实际需要而定。例如,可以将缓存单元182的接口位宽配置为与总线16的读数据位宽相等,以简化实现。进一步地,在一些实施例中,可以将缓存单元182的容量配置为数据缓存装置18可以支持的以outstanding方式传输的数据突发的数据总量的1.5倍,2倍或2.5倍等。

以数据缓存装置18支持outstanding8(即数据缓存装置18支持以outstanding方式传输8个数据突发)为例。假设每个数据突发包含8个数据块,则可以将缓存单元182的容量配置为8个数据突发所占数据量的2倍。假设缓存单元182的1个存储地址用于存储1个数据块,则可以将缓存单元182的存储地址的地址深度设置为8×8×2=128。

控制单元183可用于执行与数据缓存装置18相关的逻辑控制功能。例如,控制单元183可用于执行如图3所示的控制方法。图3所示的控制方法可以包括步骤310-320。

在步骤310中,控制单元183按照预设的顺序将从内存读取的数据突发写入忙碌标识对应的缓存子空间。

上述预设顺序的定义方式可以有多种。作为一个示例,控制单元183可以按照内存14对忙碌标识中的各个标识对应的读请求的响应顺序,将忙碌标识中的各个标识对应的数据突发依次写入该各个标识对应的缓存子空间中。换句话说,数据缓存装置18读取的数据突发的先后顺序与内存对读请求的响应顺序有关,且后发送的读请求对应的数据突发可以被先读回。例如,数据缓存装置18先读取到某个忙碌标识对应的数据突发时,可以先将该忙碌标识对应的数据突发读取完毕,再读取下一忙碌标识对应的数据突发。读取的先后顺序可以取决于忙碌标识对应的数据突发被返回的先后顺序,该顺序可以与读请求的发送顺序相同,也可以与读请求的发送顺序不同。本发明实施例基于读请求的响应顺序读取数据突发,支持了数据突发的outstanding传输,这样可以提高数据读取效率。

进一步地,在上述实施例的基础上,控制单元183可以按照忙碌标识中的各个标识对应的数据突发中的数据块的读取顺序,将忙碌标识中的各个标识对应的数据突发中的数据块依次写入该各个标识对应的缓存子空间中。例如,可以交叉读取忙碌标识中的各个数据突发中的数据块。比如,可以在第n个时钟周期读取id=3的忙碌标识对应的数据突发中的第1个数据块;接着在下一时钟周期读取id=1的忙碌标识对应的数据突发中的第1个数据块;然后在下一时钟周期读取id=3的忙碌标识对应的第2个数据块。从上述数据块的读取过程可以看出,本发明实施例提供的控制单元183可以以interleave(交织)的方式读取各个忙碌标识对应的数据块,从而可以进一步提高数据缓存装置18的数据读取效率。

在步骤320中,当忙碌标识对应的缓存子空间写入数据突发的最后一个数据块时,控制单元183更新第一记录单元,将忙碌标识更改为空闲标识。应理解,某个忙碌标识对应的缓存子空间写入相应的数据突发的最后一个数据块,表示该忙碌标识对应的数据突发读取完毕。在这种情况下,本发明实施例可以通过更新第一记录单元181,将该忙碌标识重新设置为空闲标识,用于读取后续的数据突发。本发明实施例记录读标识的忙闲状态,并将使用完的忙碌标识更新为空闲标识,以便该读标识能够用于读取后续的数据突发,提高了outstanding的利用率。

控制单元183判断忙碌标识对应的缓存子空间是否写入数据突发的最后一个数据块的方式可以有多种,本发明实施例对此并不限定。作为一个示例,可以记录忙碌标识对应的缓存子空间写入的数据块的数量,如果忙碌标识对应的缓存子空间写入的数据块的数量等于数据突发所包含的数据块的数量,则可以判定忙碌标识对应的缓存子空间写入了数据突发的最后一个数据块。以一个数据突发包含8个数据块为例,如果某个忙碌标识对应的缓存子空间已写入了8个数据块,则可以判定忙碌标识对应的缓存子空间写入了数据突发的最后一个数据块。

作为另一个示例,可以判断新写入的数据块是否存储在忙碌标识对应的缓存子空间的末地址,如果新写入的数据块存储在忙碌标识对应的缓存子空间的末地址,则可以判定忙碌标识对应的缓存子空间写入了数据突发的最后一个数据块。

本发明实施例中,数据缓存装置18基于头指针、尾指针以及用于记录读标识忙闲状态的第一记录单元实现了缓存空间的循环利用,可以一定程度上降低数据处理过程所需的片上缓存资源。

可选地,在一些实施例中,如图4所示,数据缓存装置18还可包括第二记录单元184。第二记录单元184可以被配置成记录忙碌标识对应的缓存子空间的目标存储地址。该目标存储地址可以为忙碌标识对应的数据突发中的下一数据块的存储地址。目标存储地址的初始值可设置为忙碌标识对应的缓存子空间的首地址。在这种情况下,忙碌标识对应的数据突发中的下一数据块可以指该数据突发的第一个数据块。本发明实施例引入第二记录单元记录忙碌标识对应的数据突发中的数据块的存储地址,控制单元183通过简单的查询操作即可确定从内存14中读取到的每个数据块的存储地址,简化了控制单元183的控制逻辑。

第二记录单元184可以由寄存器实现,也可以由其他类型的存储单元实现。例如,第二记录单元184可以包括由寄存器构成的寄存器堆。寄存器堆的每一行可以对应多个读标识中的一个读标识。

以outstanding8为例,图5示出了第一记录单元181和第二记录单元184的实现方式的一个示例。数据缓存装置18预先设置有8个读标识,下文以id0~id7表示。如图5所示,第一记录单元181可以包含一个8位寄存器,记录与该8个读标识一一对应的8个忙闲标识,即图5中的忙闲标识0~忙闲标识7。以忙闲标识0为例,当忙闲标识0的取值为1时,可以表示id0为忙碌标识;当忙闲标识0的取值为0时,可以表示id0为空闲标识。进一步地,第二记录单元184可以是由多个寄存器构成的寄存器堆。该寄存器堆可以包含与8个读标识一一对应的8个目标存储地址,即图5中的目标存储地址0-目标存储地址7。以目标存储地址0为例,当id0为忙碌标识时,目标存储地址0的初始值可以设置为id0对应的缓存子空间的起始地址。然后,数据缓存装置18每读回id0对应的数据突发中的一个数据块,目标存储地址0可以增加一个地址单位,直到id0对应的数据突发中的数据块均读取完毕为止。

进一步地,在引入第二记录单元184的基础上,图3的步骤310可以采用如图6所示的方式实现。图6所示的实现方式可以包括步骤610-650,下面对图6的步骤进行详细描述。

在步骤610中,控制单元183确定从内存14读取的数据突发中的数据块所对应的第二标识。

第二标识可以为忙碌标识中的任一标识。

一个数据突发可以对应一个读标识,从内存14中读取的数据块均可以包含其对应的读标识,以指示该数据块所属的数据突发。以总线16是axi总线为例,该总线16不但可以传输被读取的数据块,还可以传输该数据块对应的读标识。控制单元183可以基于数据块对应的读标识确定从内存14读取的数据突发中的数据块所属的忙碌标识。

在步骤620中,控制单元183查询第二记录单元184,以获取第二标识对应的目标存储地址。

在步骤630中,控制单元183将数据块存储至第二标识对应的目标存储地址。

在步骤640中,控制单元183更新第二记录单元184。

例如,控制单元183可以将第二记录单元184中记录的第二标识对应的目标存储地址增加一个地址单位。

在步骤650中,当第二标识对应的目标存储地址为预设值时,控制单元183更新第一记录单元181,将第二标识更改为空闲标识。这样一来,第二标识就可以继续被用于读取后续的数据突发。

可选地,在一些实施例中,控制单元183还可用于执行如图7所示的控制方法。图7的控制方法包括步骤710-740,下面对图7包含的各个步骤进行详细描述。

在步骤710中,控制单元183获取读请求。

该读请求可用于读取新数据突发。该读请求例如可以由数据处理系统10中的cpu12根据实际需要生成,并通知数据缓存装置18读取相应数据。

在步骤720中,控制单元183从空闲标识中选取第一标识。

本发明实施例对控制单元183从空闲标识中选取第一标识的方式不做具体限定,可以随机选取,也可以按照一定的规则选取。

作为一个示例,可以根据多个读标识的忙闲状态,通过预设的编码器,从空闲标识中选取第一标识。换句话说,该预设的编码器的输入可以是多个读标识的忙闲状态,输出可以是空闲标识中的被选中的一个标识。该预设的编码器具体可以是预先记录的映射关系信息(如映射关系表),该映射关系信息可用于指示多个读标识的每种忙闲状态与被选中的空闲标识的映射关系。以outstanding8为例,8个读标识的忙闲状态可以通过8个比特位表示,输出的结果共有8种可能,因此,可以通过3个比特位表示,在这种情况下,可以将上述编码器设置为8-3编码器,以指示8个比特位的每种状态对应的被选中的空闲标识。

例如,编码器的配置可以使得第一标识为空闲标识中取值最小的标识。例如,在数据缓存装置18的初始状态,8个读标识均为空闲标识,如果需要读取数据,则编码器的配置使得控制单元183优先将id0设置为忙碌标识;在数据缓存装置18的任意工作状态,编码器的配置使得控制单元183总是优先将取值最小的id设置为忙碌标识。编码器的上述配置方式实现简单,可以简化控制单元183的控制逻辑。

在步骤730中,控制单元183更新第一记录单元,将第一标识更改为忙碌标识。

在步骤740中,控制单元183在缓存空间中添加第一标识对应的缓存子空间。应理解,第一标识对应的缓存子空间可用于存储该新数据突发。

作为一个示例,可以将尾指针所指向的地址从当前地址移动至目标地址,以形成第一标识对应的缓存子空间,使得第一标识对应的缓存子空间的存储容量等于新数据突发的大小。

举例说明,在初始状态(如数据缓存装置18的硬件复位后),头指针和尾指针均可以指向缓存空间的首地址,即缓存单元182的地址0。以outstanding8为例,假设一个数据突发包含8个数据块(即burst8),每个数据块占用缓存空间的一个存储地址,当需要读取一个新的数据突发时,可以先将id0-id7中的某个读标识(如id0)设置为忙碌标识,并将尾指针向后移动8个存储地址,从而形成忙碌标识id0对应的缓存子空间。该缓存子空间由缓存单元182的地址0~地址7构成,id0对应的数据突发中的8个数据块可以依次写入地址0~地址7中。接下来,当需要读取下一数据突发时,可以将剩余的空闲标识(id1~id7)中的某个读标识(如id1)设置为忙碌标识,并将尾指针再次向后移动8个存储地址,形成id1对应的缓存子空间。可以反复执行上述操作,直到8个读标识均被占用。

由于缓存单元182需要被循环利用,因此,尾指针会追赶头指针。如果尾指针的移动过程会越过头指针,则会发生冲突。为了避免上述冲突,在将尾指针所指向的地址从当前地址移动至目标地址之前,控制单元183还可执行如图8所示的控制方法。

图8的控制方法包括步骤810-820。

在步骤810中,控制单元183判断尾指针从当前地址移动至目标地址的过程是否会越过头指针所指向的地址。

在步骤820中,如果尾指针从当前地址移动至目标地址的过程会越过头指针所指向的地址,等头指针所指向的地址位于目标地址之后,控制单元183再将尾指针所指向的地址移动至目标地址。

本发明实施例在移动尾指针之前,先判断尾指针的移动是否会越过头指针所指向的地址,从而避免了头指针和尾指针的冲突。

步骤810的实现方式可以有多种。下面给出一种可能的实现方式。

首先,头指针和尾指针中的每个指针可以通过多个比特表示。该多个比特可以包含第一类比特和第二类比特。头指针对应的第一类比特可用于指示头指针所指向的地址。尾指针对应的第一类比特可用于指示尾指针所指向的地址。头指针对应的第二类比特和尾指针对应的第二类比特取值相同可用于指示头指针和尾指针对应的是循环访问过程的同一循环。头指针对应的第二类比特和尾指针对应的第二类比特取值不同可用于指示尾指针对应的循环为头指针对应的循环的下一循环。

采用上述方式定义头指针和尾指针之后,步骤810可按照如下方式执行。首先,判断头指针对应的第二类比特与尾指针对应的第二类比特是否相同。如果头指针对应的第二类比特与尾指针对应的第二类比特不同,判断目标地址与头指针所指向的地址的关系。如果目标地址小于或等于头指针所指向的地址,确定尾指针从当前地址移动至目标地址的过程不会越过头指针所指向的地址;如果目标地址大于头指针所指向的地址,确定尾指针从当前地址移动至目标地址的过程会越过头指针所指向的地址。以缓存单元182的地址深度等于16为例,则头指针和尾指针均可以通过5个比特位表示。每个指针对应的5个比特位中的较低的4个比特位可对应于上述第一类比特,用于指示该指针所指向的地址为16个存储地址中的哪一个。每个指针对应的最高比特位可对应于上述第二类比特。头指针的最高比特位与尾指针的最高比特位的初始值均可以为0,当某个指针从缓存单元182的末地址重新移动至缓存单元182的首地址之后,可以更改该指针的最高比特位的取值,具体的可以将取值认为是5比特数,当头指针或者尾指针超过15时即15到16,其对应的比特数由01111变为10000,这样,第一位(第二类必特)即会变化,如此往复。如果头指针和尾指针的最高比特位的取值相同,表示头指针和尾指针对应的是循环访问过程的同一循环。如果头指针和尾指针的最高比特位不同,则表示尾指针已经进入了该循环访问过程的下一循环。在这种情况下,尾指针所指向的存储地址如果超过头指针所指向的存储地址,则头指针和尾指针会发生冲突。本发明实施例基于图8所示的控制逻辑可以有效避免该冲突的发生。

本发明实施例仅需要简单比对头指针和尾指针对应的第二类比特是否相同即可判断头指针和尾指针是否处于同一循环,进而判断头指针和尾指针是否会发生冲突,这种判断逻辑实现简单。

下面结合图9,描述数据缓存装置18与数据处理装置19之间的数据交互方式。图9的步骤可以包含步骤910-920。

在步骤910中,当第一缓存子空间内的数据突发存储完毕之后,控制单元183向数据处理装置19发送第一缓存子空间内的数据突发。

第一缓存子空间为头指针指向的地址所在的缓存子空间。假设头指针指向缓存单元182中的地址n,则第一缓存子空间为包含地址n的缓存子空间。地址n例如可以是第一缓存子空间的首地址。

在步骤920中,控制单元183更新头指针,使得头指针指向按顺序排列的下一个缓存子空间的首地址。

作为一种实现方式,数据缓存装置18的头指针所指向的缓存子空间中的数据突发读取完毕之后,可以直接发送至数据处理装置19,供数据处理装置19使用。

作为另一种实现方式,如图10所示,数据缓存装置18还可包括第三记录单元185。第三记录单元185可被配置成记录数据处理装置19的忙闲状态。在向数据处理装置发送第一缓存子空间内存储的数据突发之前,控制单元183可以先查询第三记录单元185,以确定数据处理装置19的忙闲状态。如果数据处理装置19处于忙碌状态,控制单元183可以等数据处理装置19处于空闲状态之后,再向数据处理装置19发送第一缓存子空间内存储的数据突发。本实现方式引入了用于记录数据处理装置19的忙闲状态的第三记录单元185,并基于第三记录单元185判定是否可以向数据处理装置19发送数据,可以避免由于数据处理装置19处于忙碌状态而导致的数据丢失或数据处理故障。

下面以数据缓存装置18支持outstanding8,一个数据突发包含8个数据块为例,更加详细地描述本发明实施例。应注意,下面的例子仅仅是为了帮助本领域技术人员理解本发明实施例,而非要将本发明实施例限于所例示的具体数值或具体场景。本领域技术人员根据下面的例子,显然可以进行各种等价的修改或变化,这样的修改或变化也落入本发明实施例的范围内。

数据缓存装置18支持outstanding8,因此,该数据缓存装置18可以预先配置有8个读标识,下文以id0~id7表示。

数据缓存装置18中的第一记录单元181可以为一个8位寄存器。该寄存器的8个比特位一一对应上述8个读标识,每个比特位用于表示该比特位对应的读标识的忙闲状态。例如,该比特位的取值为0,表示该比特位对应的读标识空闲标识,即该比特位对应的读标识未被用于读取数据突发;该比特位的取值为1,表示该比特位对应的读标识为忙碌标识,即数据缓存装置18正在读取该读标识对应的数据突发。

数据缓存装置18中的第二记录单元184可以为一个寄存器堆,寄存器堆的每一行对应一个读标识,用于指示该读标识对应的目标存储地址。该目标存储地址可以理解为该读标识对应的数据突发中的下一数据块的存储地址。

每当数据缓存装置18从总线16上读回一个数据块,控制单元183可以根据这个数据块对应的读标识,查询第二记录单元184,以获取该数据块的存储地址。然后,控制单元183可以将该数据块缓存到相应的存储地址中,并将第二记录单元184中记录的该读标识对应的目标存储地址增加一个地址单位。如果当前读回的数据块是数据突发的最后一个数据块,则控制单元183可以更新第一记录单元181,将该读标识设置为空闲标识,从而使得该读标识可用于传输后续的数据突发。

以idle_id表示空闲标识,idle_id通过优先级8-3编码器产生。例如,可以通过配置该优先级8-3编码器,使得id0具有最高的优先级,即如果编号为0的id是空闲标识,则该编码器总是将idle_id译码为0。否则,该编码器可以依次判断id1~id7的忙闲状态,并将取值最小的空闲标识设置为编码器输出的被选中的idle_id。

缓存单元182的大小可以设置为数据缓存装置18所支持的以outstanding方式传输的数据量的两倍。假设缓存单元182的数据宽度与总线16的读数据位宽相等,且一个数据突发包含8个数据块,则可以将缓存单元182的地址深度设置为8*8*2=128。

进一步地,为了实现缓存单元182的存储空间的循环利用,本发明实施例设置了两个指针:头指针和尾指针。头指针可以指向缓存单元182中存储的首个数据突发的起始地址,尾指针可以指向缓存单元182需要存储的下一个数据突发的起始地址。

下面以一个outstanding8的传输过程为例对本发明实施例进行详细说明。数据缓存装置18在硬件复位后,第一记录单元181中的8位寄存器的取值均为0,表示id0-id7均为空闲标识;缓存单元182的头指针和尾指针均可指向缓存单元182的地址0。

接下来,假设数据缓存装置18需要读取多个数据突发,当基于8-3编码器检测到idle_id为id0时,则控制单元183可以更新第一记录单元181,将id0记录为忙碌标识。接着,控制单元183可以将尾指针所指向的地址0作为id0对应的目标存储地址,记录在第二记录单元184中的与id0对应的寄存器中。然后,控制单元183可以将尾指针所指向的地址加8(增加8个地址单位),形成id0对应的缓存子空间(该缓存子空间包含缓存单元182的地址0~地址7)。id0对应的缓存子空间可用于存储基于id0读回的数据突发中的8个数据块。下一时钟周期,控制单元183基于8-3编码器检测到idle_id为id1,重复上述操作,将尾指针所指向的地址作为id1对应的目标存储地址,记录在第二记录单元184中的与id1对应的寄存器中,然后,控制单元183将尾指针所指向的地址加8,形成id1对应的缓存子空间(包含地址8~地址15)。反复进行上述操作,直到8个读标识均被设置为忙碌标识。此时数据缓存装置18需要等待有空闲标识的时刻,才可以读取新的数据突发。如果id0对应数据突发中的8个数据块均被读回,则可以更新第一记录单元181,将id0置为空闲标识,表示该id0可以被继续使用。由于id0对应的数据突发放在缓存单元182的头指针所指向的缓存子空间,因此,id0对应的数据突发可以立即被发送给数据处理装置19。例如,可以利用8个时钟周期将id0对应的数据突发中的8个数据块依次发送给数据处理装置19,然后将头指针所指向的地址加8。如果id4对应的数据突发中的数据块率先读取完毕,由于id4对应的缓存子空间的起始地址并不是头指针所指向的地址,因此,可以等缓存单元182的头指针指向id4对应的缓存子空间的起始地址后,再将id4对应的缓存子空间中存储的数据块发送至数据处理装置19。但是,在id4对应的数据突发中的数据块均读取完毕之后,就可以将id4更改为空闲标识,供读取后续的数据突发。控制单元183可以反复执行上述过程,直到所有数据突发都读回。

在绝大部分时间段内,本发明实施例提供的数据缓存装置18可以保证outstanding的利用率始终为8。此外,基于头指针和尾指针的使用,以及第一记录单元181和第二记录单元184对控制过程所需信息的记录,数据缓存装置18可以循环利用缓存单元182的存储空间,减少了数据处理过程所需的片上缓存资源。

本发明实施例还提供了一种数据处理芯片。该数据处理芯片例如可以是如图1所示的数据处理芯片17,包括数据缓存装置18和数据处理装置19。

本发明实施例还提供了一种数据处理系统。该数据处理系统例如可以是如图1所示的数据处理系统10,包括总线16,数据处理芯片17以及cpu12。

本发明实施例还提供了一种数据缓存装置的控制方法。所述数据缓存装置包括:第一记录单元,被配置成记录预设的多个读标识中的忙碌标识和空闲标识,每个所述忙碌标识对应待读取的一个数据突发;缓存单元,包含用于对所述缓存单元进行循环访问的头指针和尾指针,以及由所述头指针和所述尾指针限定的缓存空间,所述缓存空间包含每个所述忙碌标识对应的缓存子空间,且每个所述忙碌标识对应的缓存子空间用于存储相应的数据突发。

如图3所示,所述控制方法包括:

步骤310:控制单元按照预设的顺序将从内存读取的数据突发写入忙碌标识对应的缓存子空间;

步骤320:当所述忙碌标识对应的缓存子空间写入所述数据突发的最后一个数据块时,控制单元更新所述第一记录单元,将所述忙碌标识更改为空闲标识。

可选地,在一些实施例中,如图7所示,所述控制方法还包括:

步骤710:控制单元获取读请求,所述读请求用于读取新数据突发;

步骤720:控制单元从所述空闲标识中选取第一标识;

步骤730:控制单元更新所述第一记录单元,将所述第一标识更改为忙碌标识;

步骤740:控制单元在所述缓存空间中添加所述第一标识对应的缓存子空间,所述第一标识对应的缓存子空间用于存储所述新数据突发。

可选地,在一些实施例中,步骤720可包括:控制单元根据所述多个读标识的忙闲状态,通过预设的编码器,从所述空闲标识中选取所述第一标识。

可选地,在一些实施例中,所述编码器的配置使得所述第一标识为所述空闲标识中取值最小的标识。

可选地,在一些实施例中,步骤740可包括:控制单元将所述尾指针所指向的地址从当前地址移动至目标地址,以形成所述第一标识对应的缓存子空间,使得所述第一标识对应的缓存子空间的存储容量等于所述新数据突发的大小。

可选地,在一些实施例中,如图8所示,在所述将所述尾指针所指向的地址从当前地址移动至目标地址之前,所述控制方法还包括:

步骤810:控制单元判断所述尾指针从当前地址移动至目标地址的过程是否会越过所述头指针所指向的地址;

步骤820:如果所述尾指针从当前地址移动至目标地址的过程会越过所述头指针所指向的地址,控制单元等所述头指针所指向的地址位于所述目标地址之后,再将所述尾指针所指向的地址移动至所述目标地址。

可选地,在一些实施例中,所述头指针和所述尾指针中的每个指针通过多个比特表示,所述多个比特包含第一类比特,所述头指针对应的第一类比特用于指示所述头指针所指向的地址,所述尾指针对应的第一类比特用于指示所述尾指针所指向的地址。

可选地,在一些实施例中,所述多个比特还包括第二类比特,所述头指针对应的第二类比特和所述尾指针对应的第二类比特取值相同用于指示所述头指针和所述尾指针对应的是所述循环访问过程的同一循环,所述头指针对应的第二类比特和所述尾指针对应的第二类比特取值不同用于指示所述尾指针对应的循环为所述头指针对应的循环的下一循环。

可选地,在一些实施例中,步骤810可包括:如果所述头指针对应的第二类比特与所述尾指针对应的第二类比特不同,控制单元判断所述目标地址与所述头指针所指向的地址的关系;如果所述目标地址小于或等于所述头指针所指向的地址,控制单元确定所述尾指针从当前地址移动至目标地址的过程不会越过所述头指针所指向的地址;如果所述目标地址大于所述头指针所指向的地址,控制单元确定所述尾指针从当前地址移动至目标地址的过程会越过所述头指针所指向的地址。

可选地,在一些实施例中,步骤310可包括:控制单元按照所述内存对所述忙碌标识中的各个标识对应的读请求的响应顺序,将所述各个标识对应的数据突发依次写入所述各个标识对应的缓存子空间中。

可选地,在一些实施例中,步骤310可包括:控制单元按照所述各个标识对应的数据突发中的数据块的读取顺序,将所述各个标识对应的数据突发中的数据块依次写入所述各个标识对应的缓存子空间中。

可选地,在一些实施例中,所述数据缓存装置还可包括:第二记录单元,被配置成记录所述忙碌标识对应的缓存子空间的目标存储地址,所述目标存储地址为所述忙碌标识对应的数据突发中的下一数据块的存储地址;如图6所示,步骤310可包括:

步骤610:控制单元确定从内存读取的数据突发中的数据块所对应的第二标识,所述第二标识为所述忙碌标识中的任一标识;

步骤620:控制单元查询所述第二记录单元,以获取所述第二标识对应的目标存储地址;

步骤630:控制单元将所述数据块存储至所述第二标识对应的目标存储地址;

步骤640:控制单元更新所述第二记录单元。

可选地,在一些实施例中,步骤640可包括:控制单元将所述第二记录单元中记录的所述第二标识对应的目标存储地址增加一个地址单位。

可选地,在一些实施例中,所述控制方法还可包括:当所述第二标识对应的目标存储地址为预设值时,控制单元更新所述第一记录单元,将所述第二标识更改为空闲标识。

可选地,在一些实施例中,所述控制方法还可包括:控制单元确定所述忙碌标识对应的缓存子空间写入的数据块的数量;当所述忙碌标识对应的缓存子空间写入的数据块的数量达到预设数量时,控制单元确定所述忙碌标识对应的缓存子空间写入了所述数据突发的最后一个数据块,其中所述预设数量等于一个数据突发所包含的数据块的数量。

可选地,在一些实施例中,如图9所示,所述控制方法还可包括:

步骤910:当第一缓存子空间内的数据突发存储完毕之后,控制单元向数据处理装置发送所述第一缓存子空间内的数据突发,其中所述第一缓存子空间为所述头指针指向的地址所属的缓存子空间;

步骤920:控制单元更新所述头指针,使得所述头指针指向按顺序排列的下一个缓存子空间的首地址。

可选地,在一些实施例中,所述数据缓存装置还包括:第三记录单元,被配置成记录所述数据处理装置的忙闲状态;在步骤910之前,所述控制方法还包括:控制单元查询所述第三记录单元,以确定所述数据处理装置的忙闲状态;如果所述数据处理装置处于忙碌状态,控制单元等所述数据处理装置处于空闲状态之后,再向所述数据处理装置发送所述第一缓存子空间内存储的数据突发。

可选地,在一些实施例中,所述数据缓存装置中的记录单元为寄存器。

可选地,在一些实施例中,所述缓存单元的末地址的下一地址为所述缓存单元的首地址。

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

需要说明的是,在不冲突的前提下,本申请描述的各个实施例和/或各个实施例中的技术特征可以任意的相互组合,组合之后得到的技术方案也应落入本申请的保护范围。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

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