数据处理装置、方法、计算机设备和存储介质

文档序号:115479 发布日期:2021-10-19 浏览:53次 >En<

阅读说明:本技术 数据处理装置、方法、计算机设备和存储介质 (Data processing apparatus, method, computer device, and storage medium ) 是由 张启荣 王文强 徐宁仪 于 2021-07-30 设计创作,主要内容包括:本公开提供了一种数据处理装置、方法、计算机设备和存储介质,其中,该装置包括:读数据部件、数据缓存部件和数据存储部件;读数据部件与数据缓存部件通信连接,数据缓存部件与数据存储部件通信连接;读数据部件,用于确定针对数据存储部件的读数据请求;读数据请求中包括待读取数据对应的第一数据地址;以及,基于第一数据地址,确定待读取数据在预先设置的数据缓存部件中的数据存储状态,并响应于数据存储状态指示数据缓存部件中存储有有效的待读取数据,从数据缓存部件中获取待读取数据。本公开实施例能够降低访存功耗,避免资源的浪费。(The present disclosure provides a data processing apparatus, a method, a computer device, and a storage medium, wherein the apparatus includes: a data reading component, a data buffer component and a data storage component; the data reading component is in communication connection with the data caching component, and the data caching component is in communication connection with the data storage component; a read data component for determining a read data request for the data storage component; the data reading request comprises a first data address corresponding to data to be read; and determining the data storage state of the data to be read in a preset data cache component based on the first data address, indicating that the data cache component stores effective data to be read in response to the data storage state, and acquiring the data to be read from the data cache component. The embodiment of the disclosure can reduce the access power consumption and avoid the waste of resources.)

数据处理装置、方法、计算机设备和存储介质

技术领域

本公开涉及集成电路技术领域,具体而言,涉及一种数据处理装置、方法、计算机设备和存储介质。

背景技术

随着人工智能技术的发展,AI(Artificial Intelligence,人工智能)芯片的应用越来越广泛。不断迭代的AI算法及应用场景,对AI芯片PPA(性能Performace,功耗Power,面积Area)的要求也越来越高。在端侧特别是便携设备中,在一定的性能下,对功耗的控制尤为重要。

在利用AI芯片进行数据处理的过程中,读数据模块需要对随机存取存储器RAM的数据地址进行访问,以获取存储在RAM中的数据。随着读数据模块的增加以及访问次数的增加,将产生大量的访存功耗,造成了资源的浪费。

发明内容

本公开实施例至少提供一种数据处理装置、方法、计算机设备和存储介质,以降低访存功耗。

第一方面,本公开实施例提供了一种数据处理装置,包括:读数据部件、数据缓存部件和数据存储部件;所述读数据部件与所述数据缓存部件通信连接,所述数据缓存部件与所述数据存储部件通信连接;

所述读数据部件,用于确定针对所述数据存储部件的读数据请求;所述读数据请求中包括待读取数据对应的第一数据地址;以及,基于所述第一数据地址,确定所述待读取数据在预先设置的数据缓存部件中的数据存储状态,并响应于所述数据存储状态指示所述数据缓存部件中存储有有效的待读取数据,从所述数据缓存部件中获取所述待读取数据。

基于第一数据地址对应的待读取数据在预先设置的数据缓存部件中的数据存储状态,能够确定出数据缓存部件中是否存储有有效的待读取数据。由于访问数据缓存部件的功耗低于访问数据存储部件(例如,RAM)的功耗,所以在确定数据缓存部件中存储有有效的待读取数据的情况下,可以直接从数据缓存部件获取待读取数据,不需要从数据存储部件中获取待读取数据,降低了获取待读取数据的访存功耗。另外,针对需要连续多次或短时间内重复对同一RAM数据地址进行访问的情况,利用数据缓存部件存储待读取数据,每次都可以直接在数据缓存部件中获取待读取数据,不需要每次都从数据存储部件中获取待读取数据,进而,大大降低了访存功耗,有效避免了资源的浪费。

在一种可能的实施方式中,所述读数据部件,还用于响应于所述数据存储状态指示所述数据缓存部件中不存在有效的待读取数据,基于所述读数据请求和所述第一数据地址,从所述数据存储部件中获取所述待读取数据。

在一种可能的实施方式中,所述数据处理装置还包括写数据部件,所述写数据部件与所述数据缓存部件以及所述数据存储部件通信连接;

所述写数据部件,用于确定针对所述数据存储部件的第一写数据请求;所述第一写数据请求中包括第一待写数据和所述第一待写数据的第二数据地址;以及,在基于所述第二数据地址,确定所述数据缓存部件中存储有所述第二数据地址对应的有效的数据的情况下,将所述第二数据地址对应的有效的数据的数据存储状态更新为无效的状态;并基于所述第一写数据请求,将所述第一待写数据存储在所述数据存储部件中的第二数据地址对应的位置处。

在一种可能的实施方式中,所述第一写数据请求中还包括第一写缓存信息;

所述写数据部件,用于在基于所述第二数据地址,确定所述数据缓存部件中存储有所述第二数据地址对应的有效的数据、并且所述第一写缓存信息指示所述第一待写数据无需缓存在所述数据缓存部件中的情况下,将所述第二数据地址对应的有效的数据的数据存储状态更新为无效的状态。

在一种可能的实施方式中,所述数据处理装置还包括写数据部件,所述写数据部件与所述数据缓存部件以及所述数据存储部件通信连接;

所述写数据部件,用于确定针对数据存储部件的第二写数据请求;所述第二写数据请求中包括第二待写数据和所述第二待写数据的第三数据地址;

在基于所述第三数据地址,确定所述数据缓存部件中存储有所述第三数据地址对应的有效的数据的情况下,将所述第三数据地址对应的有效的数据更新为所述第二待写数据;

基于所述第二写数据请求,将所述第二待写数据存储在所述数据存储部件中的第三数据地址对应的位置处。

在一种可能的实施方式中,所述第二写数据请求中还包括第二写缓存信息;

所述写数据部件,用于在基于所述第三数据地址,确定所述数据缓存部件中存储有所述第三数据地址对应的有效的数据、并且所述第二写缓存信息指示所述第二待写数据需要缓存在所述数据缓存部件中的情况下,将所述第三数据地址对应的有效的数据更新为所述第二待写数据。

在一种可能的实施方式中,所述数据处理装置还包括优先级确定部件,所述优先级确定部件与所述数据缓存部件以及所述数据存储部件通信连接;

数据访问部件,用于在确定出针对数据存储部件的多个数据访问请求的情况下,针对所述数据访问请求中的每个读数据请求,基于该读数据请求对应的第一数据地址,确定该读数据请求对应的待读取数据在对应的数据缓存部件中的数据存储状态;所述数据访问部件包括读数据部件和/或写数据部件;

基于所述数据存储状态,从所述读数据请求中筛选符合预设条件的目标读数据请求;所述预设条件包括与读数据请求对应的数据缓存部件中不存在有效的待读取数据;

在目标访问请求的数量大于预设数量的情况下,利用预先设置的优先级确定部件确定每个目标访问请求的访问优先级;所述目标访问请求的数量根据所述目标读数据请求的数量和/或所述多个数据访问请求中的写数据请求的数量确定;

基于每个目标访问请求的访问优先级,依次对所述数据存储部件进行访问。

在一种可能的实施方式中,所述数据缓存部件包括与每个数据访问部件分别对应的多个缓存子部件。

在一种可能的实施方式中,所述数据访问部件,用于利用预先设置的优先级确定部件,将具有相同第一数据地址的目标读数据请求设置为同一访问优先级。

在一种可能的实施方式中,所述读数据请求包括第三写缓存信息;

所述读数据部件,还用于在从所述数据存储部件中获取所述待读取数据之后,在确定所述第三写缓存信息指示所述待读取数据需要缓存在所述数据缓存部件中的情况下,基于所述数据缓存部件对应的最新待写地址,存储所述待读取数据;

将存储的所述待读取数据的数据存储状态设置为有效的状态。

第二方面,本公开实施例提供了一种数据处理方法,包括:

确定针对目标存储器的读数据请求;所述读数据请求中包括待读取数据对应的第一数据地址;

基于所述第一数据地址,确定所述待读取数据在预先设置的数据缓存模块中的数据存储状态;

响应于所述数据存储状态指示所述数据缓存模块中存储有有效的待读取数据,从所述数据缓存模块中获取所述待读取数据。

在一种可能的实施方式中,所述方法还包括:

响应于所述数据存储状态指示所述数据缓存模块中不存在有效的待读取数据,基于所述读数据请求和所述第一数据地址,从所述目标存储器中获取所述待读取数据。

在一种可能的实施方式中,所述方法还包括:

确定针对目标存储器的第一写数据请求;所述第一写数据请求中包括第一待写数据和所述第一待写数据的第二数据地址;

在基于所述第二数据地址,确定所述数据缓存模块中存储有所述第二数据地址对应的有效的数据的情况下,将所述第二数据地址对应的有效的数据的数据存储状态更新为无效的状态;

基于所述第一写数据请求,将所述第一待写数据存储在所述目标存储器中的第二数据地址对应的位置处。

在一种可能的实施方式中,所述第一写数据请求中还包括第一写缓存信息;

所述将所述第二数据地址对应的有效的数据的数据存储状态更新为无效的状态,包括:

在基于所述第二数据地址,确定所述数据缓存模块中存储有所述第二数据地址对应的有效的数据、并且所述第一写缓存信息指示所述第一待写数据无需缓存在所述数据缓存模块中的情况下,将所述第二数据地址对应的有效的数据的数据存储状态更新为无效的状态。

在一种可能的实施方式中,所述方法还包括:

确定针对目标存储器的第二写数据请求;所述第二写数据请求中包括第二待写数据和所述第二待写数据的第三数据地址;

在基于所述第三数据地址,确定所述数据缓存模块中存储有所述第三数据地址对应的有效的数据的情况下,将所述第三数据地址对应的有效的数据更新为所述第二待写数据;

基于所述第二写数据请求,将所述第二待写数据存储在所述目标存储器中的第三数据地址对应的位置处。

在一种可能的实施方式中,所述第二写数据请求中还包括第二写缓存信息;

所述将所述第三数据地址对应的有效的数据更新为所述第二待写数据,包括:

在基于所述第三数据地址,确定所述数据缓存模块中存储有所述第三数据地址对应的有效的数据、并且所述第二写缓存信息指示所述第二待写数据需要缓存在所述数据缓存模块中的情况下,将所述第三数据地址对应的有效的数据更新为所述第二待写数据。

在一种可能的实施方式中,所述方法还包括:

在确定出针对目标存储器的多个数据访问请求的情况下,针对所述数据访问请求中的每个读数据请求,基于该读数据请求对应的第一数据地址,确定该读数据请求对应的待读取数据在对应的数据缓存模块中的数据存储状态;

基于所述数据存储状态,从所述读数据请求中筛选符合预设条件的目标读数据请求;所述预设条件包括与读数据请求对应的数据缓存模块中不存在有效的待读取数据;

在目标访问请求的数量大于预设数量的情况下,利用预先设置的优先级确定模块确定每个目标访问请求的访问优先级;所述目标访问请求的数量根据所述目标读数据请求的数量和/或所述多个数据访问请求中的写数据请求的数量确定;

基于每个目标访问请求的访问优先级,依次对所述目标存储器进行访问。

在一种可能的实施方式中,所述数据缓存模块包括与每个数据访问模块分别对应的多个缓存子模块;所述数据访问模块包括读数据模块和写数据模块。

在一种可能的实施方式中,所述利用预先设置的优先级确定模块确定每个目标访问请求的访问优先级,包括:

利用预先设置的优先级确定模块,将具有相同第一数据地址的目标读数据请求设置为同一访问优先级。

在一种可能的实施方式中,所述读数据请求包括第三写缓存信息;

在从所述目标存储器中获取所述待读取数据之后,还包括:

在确定所述第三写缓存信息指示所述待读取数据需要缓存在所述数据缓存模块中的情况下,基于所述数据缓存模块对应的最新待写地址,存储所述待读取数据;

将存储的所述待读取数据的数据存储状态设置为有效的状态。

第三方面,本公开可选实现方式还提供一种计算机设备,包括上述第一方面,或第一方面中任一种可能的实施方式中的装置。

第四方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第二方面,或第二方面中任一种可能的实施方式中的步骤。

关于上述数据处理方法、装置、计算机设备、及计算机可读存储介质的效果描述参见第一方面中的数据处理装置的说明,这里不再赘述。

为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本公开实施例所提供的一种数据处理方法的流程图;

图2示出了本公开实施例所提供的一种读数据模块访问数据缓存模块中数据地址的示意图;

图3示出了本公开实施例所提供的一种数据写入的方法的流程图;

图4示出了本公开实施例所提供的一种对确定的多个数据访问请求进行处理的方法的流程图;

图5示出了本公开实施例所提供的一种多读数据模块相互独立访问数据缓存模块中的数据地址处的待读取数据的示意图;

图6示出了本公开实施例所提供的一种多读数据模块相互交叉访问数据缓存模块中的数据地址处的待读取数据的示意图;

图7示出了本公开实施例所提供的一种数据处理装置的示意图;

图8示出了本公开实施例所提供的一种计算机设备结构示意图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

另外,本公开实施例中的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。

在本文中提及的“多个或者若干个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

经研究发现,随着人工智能技术的发展,AI(Artificial Intelligence,人工智能)芯片的应用越来越广泛。不断迭代的AI算法及应用场景,对AI芯片PPA(性能Performance,功耗Power,面积Area)的要求也越来越高。在端侧特别是便携设备中,在一定的性能下,对功耗的控制尤为重要。在利用AI芯片进行数据处理的过程中,读数据模块需要对随机存取存储器RAM的数据地址进行访问,以获取存储在RAM中的数据。随着读数据模块的增加以及访问次数的增加,将产生大量的访存功耗,造成了资源的浪费。

基于上述研究,本公开提供了一种数据处理装置、方法、计算机设备和存储介质,基于第一数据地址对应的待读取数据在预先设置的数据缓存模块中的数据存储状态,能够确定出数据缓存模块中是否存储有有效的待读取数据。由于访问数据缓存模块的功耗低于访问目标存储器(例如,RAM)的功耗,所以在确定数据缓存模块中存储有有效的待读取数据的情况下,可以直接从数据缓存模块获取待读取数据,不需要从目标存储器中获取待读取数据,降低了获取待读取数据的访存功耗。另外,针对需要连续多次或短时间内重复对同一RAM数据地址进行访问的情况,利用数据缓存模块存储待读取数据,每次都可以直接在数据缓存模块中获取待读取数据,不需要每次都从目标存储器中获取待读取数据,进而,大大降低了访存功耗,有效避免了资源的浪费。

针对上述研究所发现的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

为便于对本实施例进行理解,首先对本公开实施例所公开的一种数据处理方法进行详细介绍,本公开实施例所提供的数据处理方法的执行主体一般为具有一定计算能力的计算机设备,在一些可能的实现方式中,该数据处理方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。

下面以执行主体为计算机设备为例对本公开实施例提供的数据处理方法加以说明。

如图1所示,为本公开实施例提供的一种数据处理方法的流程图,可以包括以下步骤:

S101:确定针对目标存储器的读数据请求,读数据请求中包括待读取数据对应的第一数据地址。

这里,目标存储器可以为芯片(后面均以AI芯片为例,其他类型芯片也可以适用本公开提供的方案,这里不再赘述)中的随机存取存储器RAM,RAM中的不同数据地址处可以用于存储不同的数据,也可以用于写入新的数据。

读数据请求可以为获取目标存储器中的数据的请求,第一数据地址为目标存储器中的某个数据地址,待读取数据为存储在目标存储器中的第一数据地址处的数据。

具体实施时,针对目标存储器的读数据请求可以是任一存在访问需求的读数据模块基于所需要获取的待读取数据对应的第一数据地址确定的,也可以是用户端在需要获取第一数据地址对应的待读取数据的情况下,基于第一数据地址生成读数据请求,并将该读数据请求发送给AI芯片中的读数据模块,进而,读数据模块根据接收到的读数据请求确定的。关于读数据请求是如何确定的,这里不进行限定。

S102:基于第一数据地址,确定待读取数据在预先设置的数据缓存模块中的数据存储状态。

这里,预先设置的数据缓存模块可以是一级缓存,例如,可以是一个寄存器Register,或者,可以是一个高速缓冲存储器Cache,具体的,可以用L0 Cache表示。数据缓存模块用于缓存数据地址及其对应的待读取数据,具体实施时,数据缓存模块可以设置有限的数据存储空间,用于存储有限个数据地址及数据地址对应的待读取数据。数据缓存模块的数据存储空间的设置可以根据应用的场景进行设定。

并且,数据缓存模块中存储的数据可以根据不同的读数据模块的访存需求,以及当前发起读数据请求的读数据模块获取的待读取数据进行更新。

另外,由于数据缓存模块的数据存储空间有限且其中的数据可以更新,而在利用AI芯片进行数据处理的过程中,可能存在频繁访问目标存储器且访问的数据地址包括多个的情况,若每次访问的数据地址均不相同,则数据缓存模块中缓存的有效的数据及数据地址将每次都无法与读数据请求对应的待读取数据相匹配,因此,本公开实施实例所提供的方法可以适用于需要连续多次对同一RAM数据地址进行访问或短时间内对同一RAM数据地址进行重复访问的情况,这样,可以保证存储在数据缓存模块中的有效的数据能够与读数据请求对应的待读取数据相匹配,从而,降低读数据模块访存时的访存功耗。

数据存储状态用于表征在预先设置的数据缓存模块中是否存储有有效的第一数据地址及其对应的待读取数据。具体实施时,数据存储状态可以包括表示数据缓存模块中存在有效的第一数据地址及其对应的待读取数据的valid状态,存在第一数据地址及其对应的待读取数据但却无效的invalid状态,以及,数据缓存模块中不存在第一数据地址及其对应的待读取数据的状态。

读数据模块可以包括多个,每个读数据模块可以发起针对RAM中的不同数据地址读数据请求。

一个读数据模块可以对应设置一个数据缓存模块,不同的读数据模块对应设置有不同的数据缓存模块。如图2所示,为本公开实施例所提供的一种读数据模块访问数据缓存模块中数据地址的示意图。其中,Rd_mdl表示读数据模块,用于发起读数据请求,cupen为表征第三写缓存信息的标识,用于指示是否需要将从目标存储器中读取的待读取数据写入数据缓存模块中,rden表示读数据模块读使能,raddr表示读数据请求中的数据地址,对应于第一数据地址,rdata表示读取到的待读取数据,可以为从L0Cache/Register中读取的数据,也可以为从目标存储器中读取的数据;L0 Cache表示预先设置的数据缓存模块,Register也可以表示预先设置的数据缓存模块,根据数据缓存模块设置的不同,可以用不同的符号表示,但L0 Cache/Register均可用于表示数据缓存模块,ram_rden表示目标存储器读使能,ram_raddr表示读数据请求中对应于目标存储器中的第一数据地址,ram_rdata表示从目标存储器中获取的待读取数据,RAM表示目标存储器,Wr_mdl表示数据处理装置中的写数据模块,wren表示写数据模块写使能,waddr表示写数据请求中的数据地址,wdata表示待写数据。

具体实施时,当任一存在访问需求的Rd_mdl确定读数据请求之后,先经过rden使该Rd_mdl具有读取数据的能力,然后可以确定读数据请求中的raddr对应的待读取数据在L0 Cache/Register中的数据存储状态。在数据存储状态指示L0 Cache/Register中存储有有效的待读取数据的情况下,直接从L0 Cache/Register中获取待读取数据rdata。

在数据存储状态指示L0 Cache/Register中未存储有有效的待读取数据的情况下,可以经过ram_rden使该Rd_mdl具有从RAM中读取数据的能力,然后可以将读数据请求中的raddr作为ram_raddr,从RAM中读取ram_raddr对应的待读取数据ram_rdata,从而,Rd_mdl可以从RAM中获取待读取数据ram_rdata。

针对写数据模块Wr_mdl,当任一存在写数据需求的Wr_mdl确定写数据请求之后,可以经过wren使该Wr_mdl具有将待写数据wdata写入RAM的能力,之后,可以将wdata写入RAM中该写数据请求对应的waddr处。并且,在经过wren之后,Wr_mdl也具有将wdata写入L0Cache/Register中的waddr处的能力,或者,也可以直接将wdata和waddr写入L0 Cache/Register中。

针对S102,数据缓存模块中已存储的数据地址、数据地址对应的数据、以及数据地址对应的数据的数据存储状态之间存在映射关系。读数据模块在获取第一数据地址之后,还可以确定数据缓存模块中已存储的各个数据地址,进而,可以从上述各个数据地址中确定是否存在与第一数据地址相匹配的数据地址,如果是,则可以根据映射关系,确定相匹配的数据地址对应的数据的数据存储状态,如果否,则可以直接确定数据存储状态为不存在待读取数据。

进一步地,也可以多个读数据模块对应设置同一个数据缓存模块。具体实施时,可以根据读数据模块对应访问的数据地址进行设置,也可以基于用户的需求进行设置,这里不进行限定。例如,在多个读数据模块中的每个读数据模块可以相互独立访问RAM中的数据地址处的待读取数据的情况下,可以为每个读数据模块都设置一个对应的数据缓存模块;在多个读数据模块中的每个读数据模块存在相互交叉访问RAM中的数据地址处的待读取数据的情况下,可以为多个读数据模块对应设置同一个数据缓存模块,其中,相互交叉访问可以用于指示多个读数据模块间隔一定的访问次数对同一个数据地址进行访问,以获取待读取数据的情况。

本步骤中,读数据模块在确定读数据请求之后,可以基于读数据请求中的第一数据地址,以及与该读数据请求对应的数据缓存模块,确定数据缓存模块中该第一数据地址对应的待读取数据的数据存储状态。

S103:响应于数据存储状态指示数据缓存模块中存储有有效的待读取数据,从数据缓存模块中获取待读取数据。

这里,在基于数据存储状态确定数据缓存模块中存储有有效的待读取数据的情况下,也即,确定数据缓存模块中的待读取数据对应的数据状态为valid状态的情况下,读数据模块可以直接从数据缓存模块中获取第一数据地址处的待读取数据。

之后,读数据模块可以基于获取的待读取数据进行数据处理,也可以将获取的待读取数据发送给用户端,以使用户端获取到待读取数据并基于该待读取数据进行数据处理。

这样,基于第一数据地址对应的待读取数据在预先设置的数据缓存模块中的数据存储状态,能够确定出数据缓存模块中是否存储有有效的待读取数据。由于访问数据缓存模块的功耗低于访问目标存储器(例如,RAM)的功耗,所以在确定数据缓存模块中存储有有效的待读取数据的情况下,可以直接从数据缓存模块获取待读取数据,不需要从目标存储器中获取待读取数据,降低了获取待读取数据的访存功耗。另外,针对需要连续多次或短时间内重复对同一RAM数据地址进行访问的情况,利用数据缓存模块存储待读取数据,每次都可以直接在数据缓存模块中获取待读取数据,不需要每次都从目标存储器中获取待读取数据,进而,大大降低了访存功耗,有效避免了资源的浪费。

在另一种实施例中,在基于数据存储状态确定数据缓存模块中不存在有效的待读取数据的情况下,也即,确定数据缓存模块中不存在第一数据地址及其对应的待读取数据,或者,确定待读取数据对应的数据存储状态为invalid状态的情况下,可以直接基于读数据请求及其对应的第一数据地址,对目标存储器进行访问,从目标存储器中直接读取出第一数据地址对应的数据,将其作为待读取数据,从而,可以实现获取到读数据请求对应的待读取数据。

这样,即使在确定数据缓存模块中不存在有效的待读取数据的情况下,也可以通过直接访问目标存储器的方式,获取存储在目标存储器中的待读取数据,保证了每个读数据请求都可以得到响应,获取到需要的待读取数据。

在一种实施例中,针对目标存储器的请求还可以包括由图2中的Wr_mdl模块确定的写数据请求,Wr_mdl模块可以基于写数据请求,实现对目标存储器的数据写入。具体实施时,可以按照如图3所示的步骤,对目标存储器进行数据写入,如图3所示,为本公开实施例所提供的一种数据写入的方法的流程图,可以包括以下步骤:

S301:确定针对目标存储器的第一写数据请求。

其中,第一写数据请求中包括第一待写数据和第一待写数据的第二数据地址,其中,第二数据地址为目标存储器中的数据地址,具体的,可以为RAM中的数据地址。

具体实施时,当存在向目标存储器中写入数据的需求时,Wr_mdl模块可以基于需要写入的第一待写数据以及第一待写数据需要写入的第二数据地址,确定针对目标存储器的第一写数据请求。

S302:在基于第二数据地址,确定数据缓存模块中存储有第二数据地址对应的有效的数据的情况下,将第二数据地址对应的有效的数据的数据存储状态更新为无效的状态。

这里,在确定第一写数据请求之后,写数据模块可以基于第二数据地址,确定数据缓存模块中是否缓存有第二数据地址及其对应的有效的数据。如果是,则可以将数据缓存模块中的第二数据地址对应的数据的状态更新为无效的状态。具体实施时,可以将上述数据的状态更新为invalid状态。这样,由于需要在目标存储器的第二数据地址处写入新的数据,因此,目标存储器的第二数据地址处的数据将改变,存储在数据缓存模块中的第二数据地址对应的数据已经不准确,将该数据的状态更新为无效的状态,可以防止在获取到新的包括第二数据地址的读数据请求时,将数据缓存模块中的未更新的数据进行反馈,提高了反馈的数据的准确性。

S303:基于第一写数据请求,将第一待写数据存储在目标存储器中的第二数据地址对应的位置处。

本步骤中,在确定第一写数据请求之后,可以直接基于第一写数据请求以及第二数据地址,对目标存储器进行访问,将第一待写数据写在目标存储器的第二数据地址对应的位置处。

其中,如果第二数据地址对应的位置处存在先前存储的数据,可以利用第一待写数据对先前存储的数据进行更新,将第二数据地址对应的位置处的数据更新为第一待写数据。或者,如果第二数据地址对应的位置处不存在数据,则可以直接将第一待写数据存储在第二数据地址对应的位置处。

另外,在具体实施时,S303和S302可以同步执行,也可以异步执行,其中,同步执行和异步执行均可以用于将数据缓存模块中的第二数据地址对应的有效的数据的数据存储状态更新为无效的状态但不更新该数据的情况,但异步执行还可以用于先更新数据缓存模块中的第二数据地址对应的数据存储状态,再将第一待写数据写入目标存储器中的情况。

在一种实施例中,第一写数据请求中还包括第一写缓存信息。其中,第一写缓存信息用于指示是否需要利用第一写数据请求对应的第一待写数据更新存储在数据缓存模块中的第二数据地址对应的有效的数据。

针对S302,可以在基于第二数据地址,确定数据缓存模块中存储有第二数据地址及其对应的有效的数据的情况下,基于第一写缓存信息,确定是否需要利用第一待写数据对数据缓存模块中的第二数据地址对应的有效的数据进行更新,也即确定是否需要将第一待写数据重新缓存在数据缓存模块中,如果否,则可以将数据缓存模块中第二数据地址对应的有效的数据的数据存储状态更新为无效的状态。如果是,则可以直接将第一待写数据写在数据缓存模块中的第二数据地址处,且不需要更第一待写数据的状态。

在另一种实施例中,在针对目标存储器的请求包括写数据请求的情况下,还可以按照以下步骤实现对目标存储器的数据写入:

步骤一、确定针对目标存储器的第二写数据请求。

其中,第二写数据请求中包括第二待写数据和第二待写数据的第三数据地址。

步骤二、在基于第三数据地址,确定数据缓存模块中存储有第三数据地址对应的有效的数据的情况下,将第三数据地址对应的有效的数据更新为第二待写数据。

本步骤中,在基于第三数据地址,确定数据缓存模块中存储有第三数据地址及其对应的有效的数据的情况下,可以将该有效的数据更新为第二待写数据。这样,在获取到新的包括第三数据地址的读数据请求时,可以直接从数据缓存模块中获取到已经更新的第二待写数据(即待读取数据),不需要访问目标存储器就能够获取到已被更新的待读取数据,从而,降低了访存功耗。

步骤三、基于第二写数据请求,将第二待写数据存储在目标存储器中的第三数据地址对应的位置处。

关于步骤三的具体实施步骤,可以参照S303,这里不再赘述。

在一种实施例中,第二写数据请求中还包括第二写缓存信息,其中,第二写缓存信息用于指示是否需要利用第二写数据请求对应的第二待写数据更新存储在数据缓存模块中的第三数据地址对应的有效的数据。

针对步骤二,可以在基于第三数据地址,确定数据缓存模块中存储有第三数据地址对应的有效的数据的情况下,基于第二写缓存信息,确定是否需要利用第二待写数据对数据缓存模块中的第三数据地址对应的有效的数据进行更新,也即确定是否需要将第二待写数据重新缓存在数据缓存模块中,如果是,则可以将数据缓存模块中第二数据地址对应的有效的数据更新为第二待写数据。

第一写缓存信息、第二写缓存信息都是用于指示是否需要将写数据请求中的待写数据缓存在数据缓存模块中的信息。

在一种实施例中,本公开实施例所提供的数据处理方法还包括对同步获取的多个数据访问请求进行处理的步骤,这里,数据访问请求可以为数据访问模块发起的,包括的读数据请求和写数据请求,读数据请求为读数据数据模块发起的,写数据请求为写数据模块发起的。如图4所示,为本公开实施例所提供的一种对确定的多个数据访问请求进行处理的方法的流程图,可以包括以下步骤:

S401:在确定出针对目标存储器的多个数据访问请求的情况下,针对数据访问请求中的每个读数据请求,基于该读数据请求对应的第一数据地址,确定该读数据请求对应的待读取数据在对应的数据缓存模块中的数据存储状态。

这里,在利用AI芯片进行数据处理的过程中,可能存在多个数据访问模块(包括读数据模块和写数据模块)同时确定出并发起访问目标存储器的数据访问请求的情况,而目标存储器在同一时刻只能满足对一个数据地址对应的数据进行读取或写入的需求。

因此,在确定出针对目标存储器的多个数据访问请求的情况下,由于数据访问请求可以包括读数据请求和写数据请求,针对写数据请求而言,其目的是将待写数据写入目标存储器,因此,只需要确定写数据请求的数量以用于后续的仲裁即可,不需要确定写数据请求对应的写数据地址及其对应的数据在数据缓存模块中的数据存储状态。

而针对读数据请求而言,在数据缓存模块中存储有有效的数据的情况下,可直接从数据缓存模块中获取数据,不需要再访问目标存储器,因此,在确定出针对目标存储器的多个读数据请求的情况下,需要先对其进行筛选,选取需要访问目标存储器的目标读数据请求。

具体实施时,针对每个读数据请求,基于该读数据请求中的第一数据地址,确定该读数据请求对应的待读取数据在对应的数据缓存模块中的数据存储状态。

这里,如果获取到的多个数据访问请求中的每个读数据请求对应的读数据模块都可以相互独立的访问目标存储器的不同地址区间中的数据地址,则数据缓存模块可以包括多个缓存子模块。其中,每个缓存子模块对应于一个读数据模块,缓存子模块的具体设置如图5所示。如图5所示,为本公开实施例所提供的一种多读数据模块相互独立访问数据缓存模块中的数据地址处的待读取数据的示意图。在图5中,Rd_mdl0~Rd_mdln表示不同的读数据模块,图5仅示出了Rd_mdl0读数据模块、Rd_mdl1读数据模块和Rd_mdln读数据模块,其余的读数据模块未示出。L0_0表示预先设置的与Rd_mdl0对应的缓存子模块,可以用于缓存Rd_mdl0确定的读数据请求中的第一数据地址对应的数据,L0_1表示预先设置的与Rd_mdl1对应的缓存子模块,L0_1表示预先设置的与Rd_mdl1对应的缓存子模块,L0_n表示预先设置的与Rd_mdln对应的缓存子模块,关于与其他读数据模块对应的缓存子模块未示出。并且,图5中的写数据模块Wr_mdl可以对应于每个缓存子模块,每个缓存子模块对应的wren/addr表示写数据模块写使能以及对缓存子模块的addr对应的数据地址写数据。在写数据模块包括多个的情况下,每个写数据模块也可以分别对应于一个缓存子模块,具体的,一个读数据模块、一个写数据模块和一个缓存子模块构成一个模块组,该模块组中的读数据模块和写数据模块均对应于该模块组中的缓存子模块,负责目标存储器中的特定范围的数据地址的数据的读写。

在另一种实施例中,如果确定出的多个数据访问请求中的每个读数据请求对应的读数据模块相互交叉访问目标存储器的数据地址,则可以只设置一个与多个读数据模块对应的数据缓存模块,具体实施时,数据缓存模块的设置可以参考图6。如图6所示,为本公开实施例所提供的一种多读数据模块相互交叉访问数据缓存模块中的数据地址处的待读取数据的示意图。其中,L0表示与多个读数据模块Rd_mdl0~Rd_mdln以及写数据模块Wr_mdl对应的数据缓存模块。

此处,可以基于每个读数据请求分别对应的读数据模块访问目标存储器的方式(相互独立访问或相互交叉访问),从每个读数据请求对应的数据缓存模块中(或缓存子模块中)确定其对应的待读取数据的数据存储状态。

S402:基于数据存储状态,从读数据请求中筛选符合预设条件的目标读数据请求。

其中,预设条件包括与读数据请求对应的数据缓存模块中不存在有效的待读取数据。

这里,针对每个读数据请求,可以基于确定的该读数据请求对应的待读取数据对应的数据存储状态,确定在数据缓存模块(或数据缓存子模块中)是否存储有效的待读取数据,如果是,则可以将有效的待读取数据反馈给该数据对应的读数据模块。

如果否,则将该读数据请求作为目标读数据请求发送给目标存储器进行处理。这里,可以根据确定的数据存储状态对获取的多个读数据请求进行筛选,筛选出确定出符合预设条件的目标访问请求。

也即,从多个读数据请求中筛选出读数据请求对应的数据缓存模块中(或缓存子模块中)不存在有效的待读取数据的目标读数据请求。

S403:在目标访问请求的数量大于预设数量的情况下,利用预先设置的优先级确定模块确定每个目标访问请求的访问优先级。

其中,目标访问请求包括目标读数据请求和/或多个数据访问请求中的写数据请求;目标访问请求的数量根据目标读数据请求的数量和/或多个数据访问请求中的写数据请求的数量确定。

这里,预先设置的优先级确定模块用于确定每个目标访问请求的访问优先级。具体实施时,优先级确定模块可以是仲裁器,在图5和图6中,优先级确定模块可以用Arbiter表示。

在筛选出目标读数据请求之后,可以先确定目标读数据请求的数量,并确定多个数据访问请求中的写数据请求的数量,将目标读数据请求的数量和确定的写数据请求的数量之和作为目标访问请求的数量,然后确定该数量是否大于预设数量,其中,预设数量可以是1。由上述实施例的介绍可知,目标存储器在同一时刻只能满足对一个数据地址对应的数据进行读取或写入的需求,因此,如果针对目标存储器的目标访问请求的数量大于1,则无法实现同步对两个目标访问请求进行处理。因此,需要对多个目标访问请求进行分开处理,也即,确定每个目标访问请求的访问优先级,所以可以利用预设数量确定是否需要确定目标访问请求的访问优先级。

这里,如果多个数据访问请求中不存在读数据请求,则可以将目标读数据请求的数量默认设置为0。

另外,在确定目标读数据请求的数量的过程中,还可以基于每个目标读数据请求中的第一数据地址,确定存在相同的第一数据地址的目标读数据请求,然后,可以基于具有相同的第一数据地址的目标读数据请求的数量和第一数据地址不同的目标访问请求的数量,确定目标读数据请求对应的最后的数量。具体实施时,无论具有相同的第一数据地址的目标读数据请求的数量为多少,确定目标读数据请求的数量的过程中,将该数量作为1进行计算。

这里,由于具有相同的第一数据地址的目标读数据请求所需要获取的待读取数据是相同的,在响应于一个目标读数据请求之后,就可以获取到存储在目标存储器中的待读取数据,然后可以将该待读取数据发送给具有相同的第一数据地址的每个目标读数据请求对应的读数据模块,从而,上述每个读数据模块都可以同步获取到所需要的待读取数据。因此,在确定目标访问请求的数量的过程中,可以将具有相同的第一数据地址的目标读数据请求的数量作为1进行计算。

进一步的,在确定目标访问请求的数量大于预设数量的情况下,可以利用预先设置的优先级确定模块(即仲裁器),对每个目标访问请求进行仲裁,以确定每个目标访问请求的访问优先级,进而,可以基于确定访问优先级对应的访问顺序,依次对每个目标访问请求进行响应。

关于确定每个目标访问请求的访问优先级,可以包括但不限于以下方式:一、可以利用仲裁器根据每个目标访问请求对应的数据访问模块的模块功能确定每个目标访问请求的访问优先级。二、可以利用仲裁器根据每个目标访问请求中的目标读数据请求对应的第一数据地址的位置,以及写数据请求对应的写数据地址,确定每个目标访问请求的访问优先级。三、可以利用仲裁器根据每个目标访问请求中携带的用于表征请求的重要程度的标识,确定每个目标访问请求的访问优先级。四、访问优先级为预先设定的。

在一种实例方式中,针对具有相同第一数据地址的每个目标访问请求,优先级确定模块可以将每个目标访问请求的优先级设置为同一优先级。

在图5和图6中,ram_rdif0~ram_rdifn可以为其对应的数据访问模块发出的仲裁信号,ram_rdif0表示对来自Rd_mdl0的访问目标存储器的目标访问请求进行仲裁的仲裁信号,ram_rdifn表示对来自Rd_mdln的访问目标存储器的目标访问请求进行仲裁的仲裁信号,关于对来自Rd_mdln的访问目标存储器的目标访问请求进行仲裁的仲裁信号未一一示出,均用ram_rdif……表示。Arbiter表示预先设置的优先级确定模块(仲裁器)。其中,每个目标访问请求对应的数据访问模块可以同时向优先级确定模块发出仲裁信号,之后,优先级确定模块可以根据获取的仲裁信号,确定每个仲裁信号对应的目标访问请求的访问优先级。

具体实施时,仲裁器在同时接收到多个仲裁信号之后,即根据接收到的仲裁信号,确定每个仲裁信号对应的目标访问请求的访问优先级,然后,根据确定的访问优先级,依次将目标存储器的数据访问接口连接至每个目标访问请求对应的数据访问模块,之后,各个数据访问模块可以基于连接的数据访问接口,对目标存储器进行数据读取或数据写入。

另外,如果在确定获取到的每个仲裁信号对应的目标访问请求的访问优先级的过程中,优先级确定模块接收到新的仲裁信号,则可以将按照新获取的仲裁信号的产生时间,将新获取的仲裁信号存储至预设的仲裁队列中,当优先级确定模块完成当前次仲裁时,根据产生时间的先后顺序,从仲裁队列中获取新的仲裁信号进行新一次的仲裁。

以图5所示的多个读数据模块Rd_mdl0~Rd_mdln为例,对仲裁器的仲裁过程进行说明。在确定出多个读数据模块Rd_mdl0~Rd_mdln发出针对目标存储器的多个读数据请求,且多个读数据请求对应的待读取数据在各个缓存子模块L0_0~L0_n中的数据存储状态均指示未存储有有效的待读取数据的情况下,多个读数据模块Rd_mdl0~Rd_mdln可以向仲裁器发送仲裁信号,其中,Rd_mdl0通过产生并发送ram_rdif0仲裁信号的方式向仲裁器请求仲裁,Rd_mdl1通过产生并发送ram_rdif1仲裁信号的方式向仲裁器请求仲裁,Rd_mdln通过产生并发送ram_rdifn仲裁信号的方式向仲裁器请求仲裁,关于Rd_md2~Rd_mdn-1发起仲裁的过程不再赘述。这样,仲裁器可以接收到多个仲裁信号ram_rdif0~ram_rdifn,进而,仲裁器对每个仲裁信号对应的读数据请求进行仲裁,确定每个读数据请求的访问优先级。之后,各个读数据请求可以根据确定的访问优先级,依次从目标存储器中获取待读取数据。

S404:基于每个目标访问请求的访问优先级,依次对目标存储器进行访问。

这里,针对目标访问请求中的每个目标读数据请求,优先级确定模块可以按照确定的每个目标读数据请求的访问优先级,依次建立每个目标读数据请求对应的读数据模块和目标存储器的数据访问接口的连接,进而,各个读数据模块可以基于其对应的目标读数据请求的第一数据地址,利用数据访问接口对目标存储器进行访问,从而,实现依次从目标存储器中获取每个目标读数据请求对应的待读取数据。

并且,如果存在多个具有相同访问优先级的目标读数据请求,在响应于该访问优先级对应的目标读数据请求时,可以随机响应于该访问优先级对应的多个目标读数据请求中的任一个目标读数据请求,建立该目标读数据请求对应的读数据模块与目标数据访问接口的连接,进而,该读数据模块可以基于该目标读数据请求对应的第一数据地址,利用数据访问接口对目标存储器进行访问,获取到目标存储器的中该第一数据地址处的待读取数据。

针对目标访问请求中的每个写数据请求,可以基于确定的每个写数据请求的访问优先级,依次建立每个写数据请求对应的写数据模块与数据访问接口的连接,以使各个写数据模块利用数据访问接口,将写数据请求对应的待写数据写入目标存储器。

在一种实施例中,如果同步获取到针对目标存储器的请求包括读数据请求和写数据请求,则可以先利用仲裁器确定写数据请求对应的访问优先级,然后依次将写数据请求对应的待写数据写入目标存储器中,再基于确定的读数据请求的访问优先级,依次从目标存储器中获取待读取数据。或者,可以直接利用仲裁器确定出每个读数据请求和每个写数据请求的整体的访问优先级,基于确定的该访问优先级,完成从目标存储器中读取待读取数据和将待写数据写入目标存储器的操作。

在一种实施方式中,读数据请求中还可以包括第三写缓存信息,其中第三写缓存信息用于指示是否需要将从目标存储器中获取的待读取数据缓存在数据缓存模块中。示例性的,第三写缓存信息可以利用图2、图5和图6中的cupen标识,例如,当cupen置为1时,表示可以将获取的待读取数据缓存到数据缓存模块中,当cupen置为0时表示不可以将获取的待读取数据缓存到数据缓存模块中。cupen标识对应的数值可以由该标识对应的读数据模块根据其对应的访存需求进行确定。

具体实施时,在从目标存储器中获取待读取数据之后,还可以基于该待读取数据对应的读数据请求中的第三写缓存信息,确定是否需要将该待读取数据缓存到数据缓存模块中。如果是,则可以确定数据缓存模块中是否存储有该待读取数据对应的第一数据地址对应的置于invalid状态的已存储的数据,如果是,则可以将该置于invalid状态的已存储的数据更新为该待读取数据,完成对数据缓存模块中该第一数据地址对应的数据的更新,并将该更新后的待读取数据的数据存储状态设置为有效的状态,例如,设置为valid状态。

或者,在确定数据缓存模块中未存储有该待读取数据对应的第一数据地址对应的已存储数据的情况下,确定数据缓存模块的存储空间是否已经使用完毕,如果否,则可以从数据缓存模块的剩余空间对应的缓存地址中,选取最低空闲地址,将第一数据地址及其对应的待读取数据缓存在该最低空闲地址中,并将该待读取数据的数据存储状态设置为有效的状态。如果是,说明数据缓存模块中不存在可使用的存储空间,则可以确定数据缓存模块对应的最新待写地址,最新待写地址用于表征数据缓存模块当前次可以用于存储数据地址及数据地址对应的数据的地址。将最新待写地址对应的数据更新为第一数据地址及其对应的待读取数据,并将该待读取数据的数据存储状态设置为有效的状态。

其中,最新待写地址可以是按照地址递增的方式,将数据缓存模块上一次用于存储数据地址及数据地址对应的数据的地址进行地址递增后确定的。并且,在利用数据缓存模块中的地址进行数据和数据地址的存储时,如果用于存储的地址已经为数据缓存模块中的最高地址,则下一次用于存储的地址将回环到数据缓存模块中的最低地址,这样可以保证每次确定的最新待写地址对应存储的数据和数据地址的存储时间最久,从而利用当前次获取的待读取数据将存储时间最久的数据的替换,保证了数据缓存模块中存储的有效数据的时效性。

上述利用第三写缓存信息,将获取的待读取数据缓存在数据缓存模块中所涉及的各判断步骤,可以同步执行。

另外,本公开实施例化提供了一种与数据处理方法相对应的数据处理装置,包括:读数据部件、数据缓存部件和数据存储部件;所述读数据部件与所述数据缓存部件通信连接,所述数据缓存部件与所述数据存储部件通信连接;

所述读数据部件,用于确定针对所述数据存储部件的读数据请求;所述读数据请求中包括待读取数据对应的第一数据地址;以及,基于所述第一数据地址,确定所述待读取数据在预先设置的数据缓存部件中的数据存储状态,并响应于所述数据存储状态指示所述数据缓存部件中存储有有效的待读取数据,从所述数据缓存部件中获取所述待读取数据。

在一种实施例中,所述读数据部件,还用于响应于所述数据存储状态指示所述数据缓存部件中不存在有效的待读取数据,基于所述读数据请求和所述第一数据地址,从所述数据存储部件中获取所述待读取数据。

在一种实施例中,所述数据处理装置还包括写数据部件,所述写数据部件与所述数据缓存部件以及所述数据存储部件通信连接;

所述写数据部件,用于确定针对所述数据存储部件的第一写数据请求;所述第一写数据请求中包括第一待写数据和所述第一待写数据的第二数据地址;以及,在基于所述第二数据地址,确定所述数据缓存部件中存储有所述第二数据地址对应的有效的数据的情况下,将所述第二数据地址对应的有效的数据的数据存储状态更新为无效的状态;并基于所述第一写数据请求,将所述第一待写数据存储在所述数据存储部件中的第二数据地址对应的位置处。

在一种实施例中,所述第一写数据请求中还包括第一写缓存信息;

所述写数据部件,用于在基于所述第二数据地址,确定所述数据缓存部件中存储有所述第二数据地址对应的有效的数据、并且所述第一写缓存信息指示所述第一待写数据无需缓存在所述数据缓存部件中的情况下,将所述第二数据地址对应的有效的数据的数据存储状态更新为无效的状态。

在一种实施例中,所述数据处理装置还包括写数据部件,所述写数据部件与所述数据缓存部件以及所述数据存储部件通信连接;

所述写数据部件,用于确定针对数据存储部件的第二写数据请求;所述第二写数据请求中包括第二待写数据和所述第二待写数据的第三数据地址;

在基于所述第三数据地址,确定所述数据缓存部件中存储有所述第三数据地址对应的有效的数据的情况下,将所述第三数据地址对应的有效的数据更新为所述第二待写数据;

基于所述第二写数据请求,将所述第二待写数据存储在所述数据存储部件中的第三数据地址对应的位置处。

在一种实施例中,所述第二写数据请求中还包括第二写缓存信息;

所述写数据部件,用于在基于所述第三数据地址,确定所述数据缓存部件中存储有所述第三数据地址对应的有效的数据、并且所述第二写缓存信息指示所述第二待写数据需要缓存在所述数据缓存部件中的情况下,将所述第三数据地址对应的有效的数据更新为所述第二待写数据。

在一种实施例中,所述数据处理装置还包括优先级确定部件,所述优先级确定部件与所述数据缓存部件以及所述数据存储部件通信连接;

所述数据访问部件,用于在确定出针对数据存储部件的多个数据访问请求的情况下,针对所述数据访问请求中的每个读数据请求,基于该读数据请求对应的第一数据地址,确定该读数据请求对应的待读取数据在对应的数据缓存部件中的数据存储状态;所述数据访问部件包括读数据部件和/或写数据部件;

基于所述数据存储状态,从所述读数据请求中筛选符合预设条件的目标读数据请求;所述预设条件包括与读数据请求对应的数据缓存部件中不存在有效的待读取数据;

在目标访问请求的数量大于预设数量的情况下,利用预先设置的优先级确定部件确定每个目标访问请求的访问优先级;所述目标访问请求的数量根据所述目标读数据请求的数量和/或所述多个数据访问请求中的写数据请求的数量确定;

基于每个目标访问请求的访问优先级,依次对所述数据存储部件进行访问。

在一种实施例中,所述数据缓存部件包括与每个数据访问部件分别对应的多个缓存子部件。

在一种实施例中,所述数据访问部件,用于利用预先设置的优先级确定部件,将具有相同第一数据地址的目标读数据请求设置为同一访问优先级。

在一种实施例中,所述读数据请求包括第三写缓存信息;

所述读数据部件,还用于在从所述数据存储部件中获取所述待读取数据之后,在确定所述第三写缓存信息指示所述待读取数据需要缓存在所述数据缓存部件中的情况下,基于所述数据缓存部件对应的最新待写地址,存储所述待读取数据;

将存储的所述待读取数据的数据存储状态设置为有效的状态。

这里,读数据部件的功能与上述实施例中的读数据模块的功能相同,数据存储部件与上述实施例中的目标存储器的功能相同,数据缓存部件与上述实施例中的数据缓存模块相同,写数据部件的功能与上述实施例中的写数据模块相同,优先级确定部件的功能与上述实施例中的优先级确定模块相同,数据访问部件的功能与上述实施例中的数据访问模块相同,关于上述数据处理装置中的各部件以及上述各实施例的具体介绍,可以参照本公开实施例所提供的数据处理方法对应的各实施例的介绍,这里不再赘述。

本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。

基于同一发明构思,本公开实施例中还提供了与数据处理方法对应的数据处理装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述数据处理方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

如图7所示,为本公开实施例提供的一种数据处理装置的示意图,包括:

第一确定模块701,用于确定针对目标存储器的读数据请求;所述读数据请求中包括待读取数据对应的第一数据地址;

第二确定模块702,用于基于所述第一数据地址,确定所述待读取数据在预先设置的数据缓存模块中的数据存储状态;

获取模块703,用于响应于所述数据存储状态指示所述数据缓存模块中存储有有效的待读取数据,从所述数据缓存模块中获取所述待读取数据。

在一种可能的实施方式中,所述获取模块703,还用于响应于所述数据存储状态指示所述数据缓存模块中不存在有效的待读取数据,基于所述读数据请求和所述第一数据地址,从所述目标存储器中获取所述待读取数据。

在一种可能的实施方式中,所述装置还包括第一更新模块704;

所述第一确定模块701,还用于确定针对目标存储器的第一写数据请求;所述第一写数据请求中包括第一待写数据和所述第一待写数据的第二数据地址;

所述第一更新模块704,用于在基于所述第二数据地址,确定所述数据缓存模块中存储有所述第二数据地址对应的有效的数据的情况下,将所述第二数据地址对应的有效的数据的数据存储状态更新为无效的状态;

基于所述第一写数据请求,将所述第一待写数据存储在所述目标存储器中的第二数据地址对应的位置处。

在一种可能的实施方式中,所述第一写数据请求中还包括第一写缓存信息;

所述第一更新模块704,用于在基于所述第二数据地址,确定所述数据缓存模块中存储有所述第二数据地址对应的有效的数据、并且所述第一写缓存信息指示所述第一待写数据无需缓存在所述数据缓存模块中的情况下,将所述第二数据地址对应的有效的数据的数据存储状态更新为无效的状态。

在一种可能的实施方式中,所述装置还包括第二更新模块705;

所述第一确定模块701,还用于确定针对目标存储器的第二写数据请求;所述第二写数据请求中包括第二待写数据和所述第二待写数据的第三数据地址;

所述第二更新模块705,用于在基于所述第三数据地址,确定所述数据缓存模块中存储有所述第三数据地址对应的有效的数据的情况下,将所述第三数据地址对应的有效的数据更新为所述第二待写数据;

基于所述第二写数据请求,将所述第二待写数据存储在所述目标存储器中的第三数据地址对应的位置处。

在一种可能的实施方式中,所述第二写数据请求中还包括第二写缓存信息;

所述第二更新模块705,用于在基于所述第三数据地址,确定所述数据缓存模块中存储有所述第三数据地址对应的有效的数据、并且所述第二写缓存信息指示所述第二待写数据需要缓存在所述数据缓存模块中的情况下,将所述第三数据地址对应的有效的数据更新为所述第二待写数据。

在一种可能的实施方式中,所述装置还包括第三确定模块706;

所述第二确定模块702,用于在确定出针对目标存储器的多个数据访问请求的情况下,针对所述数据访问请求中的每个读数据请求,基于该读数据请求对应的第一数据地址,确定该读数据请求对应的待读取数据在对应的数据缓存模块中的数据存储状态;

所述第三确定模块706,用于基于所述数据存储状态,从所述读数据请求中筛选符合预设条件的目标读数据请求;所述预设条件包括与读数据请求对应的数据缓存模块中不存在有效的待读取数据;

在目标访问请求的数量大于预设数量的情况下,利用预先设置的优先级确定模块确定每个目标访问请求的访问优先级;所述目标访问请求的数量根据所述目标读数据请求的数量和/或所述多个数据访问请求中的写数据请求的数量确定;

基于每个目标访问请求的访问优先级,依次对所述目标存储器进行访问。

在一种可能的实施方式中,所述数据缓存模块包括与每个数据访问模块分别对应的多个缓存子模块;所述数据访问模块包括读数据模块和写数据模块。

在一种可能的实施方式中,所述第三确定模块706,用于利用预先设置的优先级确定模块,将具有相同第一数据地址的目标读数据请求设置为同一访问优先级。

在一种可能的实施方式中,所述读数据请求包括第三写缓存信息;

所述装置还包括:

第三更新模块707,用于在所述获取模块703从所述目标存储器中获取所述待读取数据之后,在确定所述第三写缓存信息指示所述待读取数据需要缓存在所述数据缓存模块中的情况下,基于所述数据缓存模块对应的最新待写地址,存储所述待读取数据;

将存储的所述待读取数据的数据存储状态设置为有效的状态。

本公开实施例提供的数据处理装置可以包括芯片、AI芯片等。

关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。

本公开实施例还提供了一种计算机设备,可以包括本公开实施例提供的数据处理装置。如图8所示,为本公开实施例提供的一种计算机设备结构示意图,包括:

处理器81和存储器82;所述存储器82存储有处理器81可执行的机器可读指令,处理器81用于执行存储器82中存储的机器可读指令,所述机器可读指令被处理器81执行时,处理器81执行下述步骤:S101:确定针对目标存储器的读数据请求,读数据请求中包括待读取数据对应的第一数据地址;S102:基于第一数据地址,确定待读取数据在预先设置的数据缓存模块中的数据存储状态以及S103:响应于数据存储状态指示数据缓存模块中存储有有效的待读取数据,从数据缓存模块中获取待读取数据。

上述存储器82包括内存821和外部存储器822;这里的内存821也称内存储器,用于暂时存放处理器81中的运算数据,以及与硬盘等外部存储器822交换的数据,处理器81通过内存821与外部存储器822进行数据交换。

上述指令的具体执行过程可以参考本公开实施例中所述的数据处理方法的步骤,此处不再赘述。

本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的数据处理方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。

本公开实施例所提供的数据处理方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的数据处理方法的步骤,具体可参见上述方法实施例,在此不再赘述。

该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

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

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

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、目标存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

29页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:数据传输方法、装置和系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!