CN119201004A - 数据读写处理方法、装置、设备及介质 - Google Patents
数据读写处理方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN119201004A CN119201004A CN202411686731.6A CN202411686731A CN119201004A CN 119201004 A CN119201004 A CN 119201004A CN 202411686731 A CN202411686731 A CN 202411686731A CN 119201004 A CN119201004 A CN 119201004A
- Authority
- CN
- China
- Prior art keywords
- data
- request
- cache
- address
- memory
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例中提供了一种数据读写处理方法、装置、设备及介质,涉及计算机技术领域,该方法包括:接收并解析数据处理请求,提取所述数据处理请求中的请求类型、地址信息;所述请求类型包括数据读取请求和数据写入请求;当所述请求类型为数据读取请求且所述地址信息满足预设数量数据读取规则时,触发数据预取操作,并从所述缓存中读取目标数据,所述目标数据是从内存中经过预取处理并加载至所述缓存中的;和/或,当所述请求类型为数据写入请求且所述地址信息满足预设数量数据写入规则时,触发数据合并操作,将缓存行写入所述缓存或内存中。该方案能够减少当请求到来时从内存中读取数据或更换数据的时间,提高了数据的读写处理效率。
Description
技术领域
本申请涉及通信技术领域,具体地,涉及一种数据读写处理方法、装置、设备及介质。
背景技术
随着计算机技术的不断发展,内存是用于存储程序运行时所需的数据和指令的关键组件,随着应用程序变得越来越复杂,对内存访问速度和效率的要求也在不断提高,特别是在大数据处理、高性能计算、实时系统等领域中,快速而高效地从内存中读取和写入大量数据称为提高系统整体性能的关键因素之一。因此,如何对数据的读写处理进行研究显得尤为重要。
目前,相关技术中当缓存cache控制模块收到读请求时,需要检查本地缓存中是否有请求的数据,如果数据存在于缓存中,则从缓存中获取数据并返回至上游请求者;如果请求的数据不在缓存中,则从下层的存储层级或主内存中读取数据。当缓存控制模块接收到写请求时,如果这批写请求没有完全覆盖一个完整的缓存行,则需要先从缓存中读取现有数据,然后根据写请求的具体内容,仅替换掉对应位置上的字节byte,而保留那些没有被请求更改的部分不变,得到更新后的缓存行,最后将更新后的缓存行写回至缓存中。然而该方案对地址连续的大量的数据进行搬迁的过程中,处理流程较为繁琐,导致对数据的读写处理效率较低。
发明内容
本申请实施例中提供了一种数据读写处理方法、装置、设备及介质。
本申请实施例的第一个方面,提供了一种数据读写处理方法,包括:
接收并解析数据处理请求,提取所述数据处理请求中的请求类型、地址信息;所述请求类型包括数据读取请求和数据写入请求;
当所述请求类型为数据读取请求且所述地址信息满足预设数量数据读取规则时,触发数据预取操作,并从所述缓存中读取目标数据,所述目标数据是从内存中经过预取处理并加载至所述缓存中的;和/或,
当所述请求类型为数据写入请求且所述地址信息满足预设数量数据写入规则时,触发数据合并操作,将缓存行写入所述缓存或内存中。
在本申请一个可选的实施例中,所述预设数量数据读取规则包括:地址连续、地址递增、每次读取的数据大小相同、地址属性相同、持续读取预设数量的字节;
所述预设数量数据写入规则包括:地址连续、地址递增、每次写入的数据大小相同、地址属性相同、持续写入预设数量的字节。
在本申请一个可选的实施例中,触发数据读取操作,并从所述缓存中读取目标数据,包括:
根据预先配置的寄存器预取配置信息,计算预取地址和缓存行数;
根据所述预取地址和所述缓存行数,从内存中读取目标数据并加载至所述缓存中。
在本申请一个可选的实施例中,所述预取地址的获取时间戳小于所述地址信息的获取时间戳。
在本申请一个可选的实施例中,触发数据合并操作,将缓存行写入所述缓存或内存中,包括:
根据预先配置的寄存器合并配置信息,获取多个burst单位的数据;
将所述多个burst单位的数据进行合并,得到一条缓存行,将所述缓存行写入所述缓存或内存中。
在本申请一个可选的实施例中,在接收并解析数据处理请求之前,所述方法还包括:
获取寄存器预取配置信息;所述寄存器预取配置信息包括以下任意一项:预取地址、预取的缓存行数、预取的字节数量、预取地址的获取时间戳与地址信息的获取时间戳的提前量;
根据所述寄存器预取配置信息,对所述缓存进行配置处理。
在本申请一个可选的实施例中,在接收并解析数据处理请求之前,所述方法还包括:
获取寄存器合并配置信息;所述寄存器合并配置信息包括:触发合并的字节数量;
根据所述寄存器合并配置信息,对所述缓存进行配置处理。
本申请实施例的第二个方面,提供了一种数据读写处理装置,包括:
接收模块,用于接收并解析数据处理请求,提取所述数据处理请求中的请求类型、地址信息;所述请求类型包括数据读取请求和数据写入请求;
读取模块,用于当所述请求类型为数据读取请求且所述地址信息满足预设数量数据读取规则时,触发数据预取操作,并从所述缓存中读取目标数据,所述目标数据是从内存中经过预取处理并加载至所述缓存中的;和/或,
写入模块,用于当所述请求类型为数据写入请求且所述地址信息满足预设数量数据写入规则时,触发数据合并操作,将缓存行写入所述缓存或内存中。
本申请实施例的第三个方面,提供了一种计算机设备,包括:包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如上任一项方法的步骤。
本申请实施例的第四个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,计算机程序被处理器执行时实现如上任一项的方法的步骤。
本申请实施例中通过接收并解析数据处理请求,提取数据处理请求中的请求类型和地址信息,请求类型包括数据读取请求和数据写入请求,当请求类型为数据读取请求且地址信息满足预设数量数据读取规则时,触发数据预取操作,并从缓存中读取目标数据,目标数据是从内存中经过预取处理并加载至缓存中的;和/或,当请求类型为数据写入请求且地址信息满足预设数量数据写入规则时,触发数据合并操作,将缓存行写入缓存或内存中。本申请中的技术方案通过查看是否满足预设数量数据读取规则,能够实时判断是否为地址连续的大量的数据读取操作,当为大量的数据读取操作时,触发数据预取操作,从而将目标数据提前预取处理并加载至缓存中,便于当请求到来时实时获取数据,减少当请求到来时从内存中读取数据的时间,提高了数据的读取效率;当为数据写入操作且属于大量的数据写入操作时,无需每次从内存或缓存中读取数据并替换,通过直接触发数据合并操作,从而将多个数据从合并完成之后才写入缓存或内存中,减少了对于每个burst单位的数据数据更换时间,进而提高了数据的写入效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一个实施例提供的计算机设备的结构示意图;
图2为本申请一个实施例提供的数据读写处理方法的流程图;
图3为本申请一个实施例提供的触发数据读取操作,并从所述缓存中读取目标数据方法的结构示意图;
图4为本申请一个实施例提供的读数据流控制模块ReadStream的接口结构示意图;
图5为本申请另一个实施例提供的触发数据合并操作,将缓存行写入所述缓存或内存中方法的流程示意图;
图6为本申请一个实施例提供的写数据流控制模块WriteStream的接口结构示意图;
图7为本申请一个实施例提供的数据读写处理装置的结构示意图。
具体实施方式
在实现本申请的过程中,发明人发现,对地址连续的大量的数据进行搬迁的过程中,处理流程较为繁琐,导致对数据的读写处理效率较低。
目前,相关技术中当cache控制模块接收到读请求(read transaction)时,先检查本地缓存cache中是否命中(hit)请求的数据,如果数据存在于缓存cache中,则从缓存中获取数据并返回至上游请求者;如果请求的数据不在缓存中,则从下层的存储层级(下游cache)或主内存(memeory)中读取数据。当缓存控制模块接收到写请求(writetransaction)时,一般是以burst为单位接收上游发送的写请求,如果这笔写请求没有完全写满一个完整的缓存行(cacheline),则需要先从缓存cache中读取同地址的现有数据,然后根据写请求的具体内容(byte)仅替换掉缓存行(cacheline)对应位置上的字节byte,而保留那些没有被请求更改的部分byte不变,得到更新后的缓存行(cacheline),最后将更新后的缓存行写回至缓存cache中。然而该方案对地址连续的大量的数据进行搬迁的过程中,处理流程较为繁琐,导致对数据的读写处理效率较低。
基于上述缺陷,本申请实施例提供了数据读写处理方法,与现有技术相比,本申请中的技术方案通过查看是否满足预设数量数据读取规则,能够实时判断是否为地址连续的大量的数据读取操作,当为大量的数据读取操作时,触发数据预取操作,从而将目标数据提前预取处理并加载至缓存中,便于当请求到来时实时获取数据,减少当请求到来时从内存中读取数据的时间,提高了数据的读取效率;当为数据写入操作且属于大量的数据写入操作时,无需每次从内存或缓存中读取数据并替换,通过直接触发数据合并操作,从而将多个数据从合并完成之后才写入缓存或内存中,减少了对于每个burst单位的数据数据更换时间,进而提高了数据的写入效率。
为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
以下对本申请实施例提供的数据读写处理方法的应用环境作简要说明:
可选地,本申请提供的数据读写处理方法可以应用于计算机设备,其中,本申请实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。
请参见图1,本申请实施例提供的一例计算机设备的结构示意图。如图1所示,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质例如可以为磁盘。非易失性存储介质中存储有文件(可以为待处理的文件,也可以为处理后的文件)、操作系统和计算机程序等。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据读写处理方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
请参见图2,以下实施例以上述计算机设备为执行主体,将本申请实施例提供的数据读写处理方法应用于上述计算机设备来进行指令处理为例进行具体说明。本申请实施例提供的数据读写处理方法包括如下步骤201-步骤203:
步骤201、接收并解析数据处理请求,提取数据处理请求中的请求类型、地址信息;数据类型包括数据读取请求和数据写入请求。
需要说明的是,上述数据处理请求可以是上游操作者通过物理层接口(physicallevel interface,FAPI)发送的,该物理层接口是物理层中用于连接和传输数据的接口,确保数据能够在不同的设备之间正确传输。
数据处理请求可以包括数据读取请求和数据写入请求,地址信息包括物理地址、虚拟地址、地址属性、事务大小、突发长度、访问类型、保护属性、地址空间标识符。物理地址是内存中的实际地址,用于直接访问存储器中的数据;虚拟地址是操作系统为进程提供的地址空间中的地址,虚拟地址通过页表转换为物理地址;地址属性描述了内存区域的一些特性,例如是否可缓存、是否可缓冲、是否可执行等;事务大小指明了单次请求的数据量,通常以字节为单位;例如一次读取请求可能涉及4个字节(一个32位整数)或8个字节(一个64位整数);突发长度指明了连续传输的数据块的数量,是一种高效的数据传输方式,可以在一次请求中传输多个数据单元。访问类型指明了请求的性质,例如可以是读请求还是写请求;保护属性指明了对内存区域的访问权限,例如是否允许读、写或执行;地址空间标识符用于区分不同进程的地址空间,特征是在支持多任务的操作系统中。
在接收到数据处理请求后,可以采用预设解析算法对数据处理请求进行解析处理,从而得到请求类型和地址信息。
步骤202、当请求类型为数据读取请求且地址信息满足预设数量数据读取规则时,触发数据预取操作,并从缓存中读取目标数据,目标数据是从内存中经过预取处理并加载至缓存中的。
需要说明的是,上述预设数量数据读取规则可以是根据实际需求自定义设置的,该预设数量可以是预设字节量,预设数量数据读取规则可以是根据地址信息设置的读取规则。例如可以包括地址是否连续、地址是否递增、地址属性是否相同等。目标数据是指加载至缓存中的数据。
作为一种实现方式,当请求类型为数据读取请求时,需要查看该数据读取请求是否满足预设数量数据读取规则,当满足预设数量数据读取规则时,可以触发数据预取机制,并执行数据预取机制之后,从缓存中读取目标数据。其中,数据预取机制是指提前将目标数据从内存memory中读取出并存储至缓存cache中。
步骤203、当请求类型为数据写入请求且地址信息满足预设数量数据写入规则时,触发数据合并操作,将缓存行写入缓存或内存中。
需要说明的是,上述预设数量数据写入规则可以是根据实际需求自定义设置的,该预设数量可以是指预设字节量,预设数量数据读取规则可以是根据地址信息设置的写入规则。预设数量数据写入规则可以是包括地址是否连续、是否递增、属性是否相同等。
作为另一种实现方式,当请求类型为数据写入请求时,获取地址信息,根据地址信息判断是否满足预设数量数据写入规则,当满足预设数量数据写入规则时,触发数据合并机制,当数据合并机制处理完成后,将处理完成后得到的缓存行写入缓存cache或内存memory中。
可以理解的是,由于数据写入的过程中一般是以burst为单位进行写入的,数据合并机制是指将多个burst为单位的数据合并成一个缓存行。
本申请实施例中通过接收并解析数据处理请求,提取数据处理请求中的请求类型和地址信息,请求类型包括数据读取请求和数据写入请求,当请求类型为数据读取请求且地址信息满足预设数量数据读取规则时,触发数据预取操作,并从缓存中读取目标数据,目标数据是从内存中经过预取处理并加载至缓存中的;和/或,当请求类型为数据写入请求且地址信息满足预设数量数据写入规则时,触发数据合并操作,将缓存行写入缓存或内存中。本申请中的技术方案通过查看是否满足预设数量数据读取规则,能够实时判断是否为地址连续的大量的数据读取操作,当为大量的数据读取操作时,触发数据预取操作,从而将目标数据提前预取处理并加载至缓存中,便于当请求到来时实时获取数据,减少当请求到来时从内存中读取数据的时间,提高了数据的读取效率;当为数据写入操作且属于大量的数据写入操作时,无需每次从内存或缓存中读取数据并替换,通过直接触发数据合并操作,从而将多个数据从合并完成之后才写入缓存或内存中,减少了对于每个burst单位的数据数据更换时间,进而提高了数据的写入效率。
在本申请一个可选实施例中,预设数量数据读取规则包括:地址连续、地址递增、每次读取的数据大小相同、地址属性相同、持续读取预设数量的字节;预设数量数据写入规则包括:地址连续、地址递增、每次写入的数据大小相同、地址属性相同、持续写入预设数量的字节。
需要说明的是,上述预设数量数据读取规则和预设数量数据写入规则是识别和优化大量连续地址的数据搬迁行为。这些预设数量数据读取规则是为了确保了系统能够有效地检测到符合特定模式的读取请求,并采取相应的优化措施,如预取数据以减少缓存未命中的概率。这些预设数量数据写入规则是为例确保系统能够有效地检测到符合特定模式的写入请求,并采取相应的优化措施,如执行合并数据处理。
其中,地址连续意味着读取请求的地址是连续的,没有间断。例如:如果第一个读请求的地址是0x1000,第二个读请求的地址是0x1004,第三个读请求的地址是0x1008,那么这些地址是连续的。通过地址连续确保数据在内存中是连续存储的,便于进行高效的预取和批量处理。地址递增意味着每次读取请求的地址相对于前一个地址是递增的,且增量是固定的。例如:如果每次读取请求的地址都比前一个地址增加4字节(例如,0x1000,0x1004,0x1008),那么这些地址是递增的。其用于确保数据访问模式是线性的,便于预测下一个要访问的地址,从而进行有效的预取。每次写入的数据大小相同是指每次读取请求的数据大小是相同的,例如每次读取请求都读取4个字节的数据,其用于确保每次读取操作的一致性,便于进行批量处理和预取优化。
地址属性相同是指每次读取请求的地址属性是相同的。地址属性包括缓存属性、缓冲属性、保护属性等。例如:如果每次读取请求的地址都是可缓存的、可缓冲的,并且具有相同的保护级别(如只读或可写),那么地址属性是相同的。其用于确保所有读取请求的处理方式一致,避免因属性不同而导致的复杂性和性能损失。持续读取预设数量的字节是指在一段时间内,连续读取的总字节数达到或超过某个预设的数量。例如:假设预设数量为512字节,如果系统检测到一系列读取请求总共读取了至少512字节的数据,那么满足这个条件。其用于通过设置一个阈值来识别大规模的数据搬迁行为,从而触发优化机制(如预取)。
具体地,当接收到数据读取请求时,可以对其解析得到地址信息,根据地址信息检查是否地址连续、地址递增、每次读取的数据大小相同、地址属性相同、持续读取预设数量的字节,当地址连续、地址递增、每次读取的数据大小相同、地址属性相同、持续读取预设数量的字节这几个条件均满足时,则表征符合预设数量数据读取规则。当地址连续、地址递增、每次读取的数据大小相同、地址属性相同、持续读取预设数量的字节这几个条件中任一条件不满足时,则表征不符合预设数量数据读取规则。同理,预设数量数据写入规则与预设数量数据读取规则类似,仅为请求类型不同。
本实施例中通过设置预设数量数据读取规则和数量数据写入规则,能够有效地识别当前的数据请求是否为大量地址连续的数据搬迁行为,进一步提高数据读取的效率和性能。
在本申请一个可选实施例中,请参见图3所示,触发数据读取操作,并从所述缓存中读取目标数据,包括如下方法步骤:
步骤301、根据预先配置的寄存器预取配置信息,计算预取地址和缓存行数。
步骤302、根据预取地址和缓存行数,从内存中读取目标数据并加载至缓存中。
需要说明的是,请参见图4所示,图4为本申请实施例提供的读数据流控制模块(ReadStream)的接口结构示意图,该ReadStream模块包括多个接口,每个接口分别对应不同的含义,各个接口例如可以包括:预取valid、预取addr、预取提前量配置、预取缓存行(cacheline)个数配置、字节(byte)数量配置、arvalid、arcache、araddr、arsize。
可以理解的是,上述在触发数据预取的过程中,是基于总线AXI(AdvancedeXtensible Interface)等总线协议。其中,预取提前量配置是指配置预取地址相对于当前读请求的地址信息的提前量。这是一个可配置的值,通过寄存器设置;用于确保预取的数据能够在上游实际访问之前就已经准备好,从而减少缓存未命中的概率。预取cacheline个数配置是指配置每次预取操作中读取的缓存行数量,这也是一个可配置的值,通过寄存器设置;用于根据应用场景调整预取的数量,以达到最佳性能。byte数量配置是指配置触发预取行为所需连续读取的字节数。这是一个可配置的值,通过寄存器设置;用于检测何时启动预取机制,即当持续读取了一定量的字节后,认为这是一个大量地址连续的数据搬迁行为。
上述接口还可以包括AXI总线协议相关信号,该AXI总线协议相关信号可以包括:arvalid、arcache、araddr、arsize。其中,arvalid (Address Read Valid)表示当前读地址通道上的地址信息是有效的,用于指示主设备(如CPU)已经将有效的读地址放在总线上,等待从设备(如内存控制器)响应。arcache表示读事务的缓存属性。它包含了一些标志位,例如是否允许缓存、是否允许缓冲等,其用于帮助从设备了解如何处理该读事务,以及如何管理缓存一致性。araddr (Address Read Address)表示读事务的目标地址,其用于告诉从设备从哪个内存地址开始读取数据。arsize(Address Read Size)表示读事务的大小,即每次传输的数据宽度(例如,1字节、2字节、4字节等),其用于帮助从设备确定每次传输的数据量,以便正确地读取和返回数据。
预取valid用于表征当前预取请求是否有效,当这个信号为高电平时,表示有一个有效的预取操作正在被处理,用于控制预取操作的状态,确保只有在需求时才进行预取。预取addr用于指明要预取的数据所在的内存地址,用于提供给内存控制器或DMA引擎,以从指定的内存地址开始读取数据。
可以理解的是,预取valid和预取addr用于启动预取操作,并指明预取的起始地址。预取提前量配置和预取cacheline个数配置用于优化预取机制,确保预取数据能够及时到达缓存。byte数量配置用于检测何时启动预取机制。arvalid、arcache、araddr和arsize是AXI总线协议中用于读事务的信号,分别表示读地址的有效性、缓存属性、目标地址和数据宽度。
具体地,当检测到地址连续、地址递增、每次读取的数据大小相同、地址属性相同、持续读取预设数量的字节时,确定符合预设数量数据读取规则,则表征此时为一个大量地址连续的数据搬迁行操作,可以触发数据读取操作,从寄存器预取配置信息中获取预取提前量和每次预取的缓存行数等,并根据提前量和每次预取的缓存行数,从内存中读取目标数据并加载至缓存中。
本实施例中通过触发数据读取操作,通过先计算预取地址和缓存行数,根据预取地址和缓存行数,并提前将数据从内存memory读取回来并预存至cache中,当上游发送数据读取请求时,便可以直接在缓存中获取数据,节省了从内存中读取数据的时间,提高了数据读取效率。
在本申请一个可选实施例中,上述预取地址的获取时间戳小于地址信息的获取时间戳。
需要说明的是,预取地址的获取时间戳是指获取预取地址对应的时间,地址时间的获取时间戳是指获取数据读取请求时对应的时间。预取地址的获取时间戳小于地址信息的获取时间戳可以理解为:预取地址的获取时间提前于地址信息的获取时间。
可以理解的是,由于从内存memory读取数据所花费的时间较长,所以预取地址要比当前上游发的数据读取请求read transaction中对应的地址信息有一定的提前量,该提前量可以是通过寄存器进行配置的,否则就会出现预取数据存到缓存cache中时,上游已经访问过缓存cache并且已经开始从内存memory中查找数据,从而导致耗费了大量的时间。
可选地,如果上游发来的数据读取请求中(read transaction)的当前地址,与本次预取的最后一个地址相差比寄存器中设置的提前量要小,那么下次预取的起始地址就与本次预取的最后一个地址相衔接就行。
本实施例中通过将预取地址的获取时间戳设置为小于地址信息的获取时间戳,能够避免当数据读取请求到来时,再从内存memory中读取数据以浪费时间,保证实时从缓存中获取数据,提高了数据读取效率。
在本申请一个可选实施例中,上述触发数据合并操作,将缓存行写入缓存或内存中,请参见图5所示,包括如下方法步骤:
步骤401、根据预先配置的寄存器合并配置信息,获取多个burst单位的数据。
步骤402、将多个burst单位的数据进行合并,得到一条缓存行,将缓存行写入缓存或内存中。
需要说明的是,请参见图6所示,本实施例中提供了写数据流控制模块(WriteStream)的接口示意图,该WriteStream模块包括多个接口,每个接口分别对应不同的含义,各个接口例如可以包括:字节(byte)数量配置、arstorb、awvalid、awcache、awaddr、awsize、写数据流(writestream)训练成功标志。WriteStream模块旨在优化大量连续地址的数据写入操作。通过将多个burst合并成一个完整的cacheline再进行写入,可以减少从缓存或内存中读取现有数据的步骤,从而提高效率。
其中,byte数量配置 (Byte Count Configuration)是指配置触发WriteStream行为所需的连续写入的字节数,其用于当系统检测到连续写入的总字节数达到或超过这个预设值时,启动WriteStream机制。例如:如果配置为512字节,那么只有当检测到连续写入了至少512字节的数据时,才会启动WriteStream。
arstorb(Address Read Store Buffer)是指一个信号,表示当前写请求是否需要存储在地址读存储缓冲区中,其用于处理写组合(write combining)等特殊情况,确保写操作能够正确地进行。例如:如果设置为高电平,表示当前写请求需要存储在地址读存储缓冲区中。awvalid(Address Write Valid)表示当前写地址通道上的地址信息是有效的,用于指示主设备(如CPU)已经将有效的写地址放在总线上,等待从设备(如内存控制器)响应,例如:如果设置为高电平,表示当前写地址有效。awcache(Address Write Cache)表示写事务的缓存属性。它包含了一些标志位,例如是否允许缓存、是否允许缓冲等,用于帮助从设备了解如何处理该写事务,以及如何管理缓存一致性。例如:可以包括缓存使能(C)、缓冲使能(B)、写分配(W)等标志位。awaddr(Address Write Address)表示写事务的目标地址,用于告诉从设备向哪个内存地址写入数据,例如:如果写事务的目标地址是0x1000,则awaddr的值为0x1000。awsize(Address Write Size)表示写事务的大小,即每次传输的数据宽度(例如,1字节、2字节、4字节等),用于帮助从设备确定每次传输的数据量,以便正确地写入数据。例如:如果每次写入4字节的数据,则awsize的值为2(表示32位/4字节)。
writestream训练成功标志(WriteStream Training Success Flag)表示WriteStream模块是否已经成功训练并准备好进行优化的写操作。用于确保WriteStream模块在启用之前已经完成了必要的初始化和校准过程。例如:如果设置为高电平,表示WriteStream模块已经训练成功,可以开始优化写操作。
可以理解的是,由于数据写入请求是以burst为单位传输数据的,在接收到数据写入请求后,可以是以突发长度(Burst Length)写入数据,该突发长度用于表征连续传输的数据块的数量。突发传输是一种高效的数据传输方式,可以在一次请求中传输多个数据单元。其用于提高总线利用率,减少控制开销。例如,一次突发传输可能包含4个或8个数据单元。
具体地,当检测到地址连续、地址递增、每一拍的读取size相同、且地址属性相同的数据写入请求中持续读取了一定byte量(具体多少个byte,寄存器可配)的数据时,便认为这是一个大量地址连续的大量的数据搬迁行为,根据预先配置的寄存器合并配置信息,获取多个burst单位的数据,将多个burst单位的数据进行合并,得到一条缓存行cacheline,将所述缓存行写入缓存cache或内存memory中。
本实施例中通过获取多个burst单位的数据,将多个burse单位的数据进行合并,得到一条缓存行,然后将缓存行写入缓存或内存中,减少了从内存中读取数据并更新数据的步骤,提高了数据写入效率。
在本申请一个可选实施例中,在接收并解析数据处理请求之前,该方法还包括如下方法步骤:
获取寄存器预取配置信息;寄存器预取配置信息包括以下任意一项:预取地址、预取的缓存行数、预取的字节数量、预取地址的获取时间戳与地址信息的获取时间戳的提前量;根据寄存器预取配置信息,对缓存进行配置处理。
需要说明的是,为了实现高效的内存数据预取,需要在接收数据处理请求之前,需要预先通过寄存器对缓存配置寄存器预取配置信息。上述预取地址是指要预取的数据所在的内存起始地址,用于从指定的内存起始地址开始读取数据。预取的缓存行数是指每次预取操作中读取的缓存行数量,可以根据应用场景调整预取的数量,以实现最佳性能。预取的字节数量是指每次预取操作中读取的总字节数,其用于与预取的缓存行数类似,但直接指定字节数,便于更细粒度的控制。预取地址的获取时间戳与地址信息的获取时间戳的提前量 (Prefetch Lead Time)是指预取地址的时间戳与当前数据读取请求地址的时间戳之间的差值,用于确保预取的数据能够在上游实际访问之前就已经准备好,减少缓存未命中的概率。
具体地,在系统启动时,可以获取寄存器预取配置信息,并根据寄存器预取配置信息,通过固件或操作系统驱动程序对缓存进行配置处理,从而实现配置操作。
本实施例中通过获取寄存器预取配置信息,当根据寄存器预取配置信息,对缓存进行配置处理,有助于优化大量连续地址的数据搬迁行为,从而提高系统的整体性能。
在本申请一个可选实施例中,在接收并解析数据处理请求之前,上述方法还包括如下步骤:
获取寄存器合并配置信息;寄存器合并配置信息包括:触发合并的字节数量;根据寄存器合并配置信息,对缓存进行配置处理。
需要说明的是,为了优化大量连续地址的数据写入操作,系统需要获取寄存器合并配置信息,并根据这些信息对缓存进行相应的配置。
其中,触发合并的字节数量(Trigger Byte Count)是指当检测到连续写入的总字节数达到或超过这个预设值时,启动合并机制,用于确保只有在数据量足够大时才启动合并操作,以减少不必要的开销并提高效率。
具体地,在对缓存执行配置操作的过程中,可以是通过硬件接口(如MMIO)获取寄存器合并配置信息,并解析出触发合并的字节数量,然后根据该触发合并的字节数量,对缓存管理模块和其他相关模块进行配置。
本实施例中通过获取寄存器合并配置信息,根据寄存器合并配置信息,低缓存进行配置处理,能够有助于优化大量连续地址的数据写入操作,减少不必要的读取操作,提高系统的整体性能,进而提高了数据写入效率。
应该理解的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在本申请提供的另一实施例中,还提供了数据读写处理装置,请参见图7所示,该装置包括:
接收模块810,用于接收并解析数据处理请求,提取数据处理请求中的请求类型、地址信息;请求类型包括数据读取请求和数据写入请求;
读取模块820,用于当请求类型为数据读取请求且地址信息满足预设数量数据读取规则时,触发数据预取操作,并从缓存中读取目标数据,目标数据是从内存中经过预取处理并加载至缓存中的;和/或,
写入模块830,用于当请求类型为数据写入请求且地址信息满足预设数量数据写入规则时,触发数据合并操作,将缓存行写入缓存或内存中。
可选地,预设数量数据读取规则包括:地址连续、地址递增、每次读取的数据大小相同、地址属性相同、持续读取预设数量的字节;
预设数量数据写入规则包括:地址连续、地址递增、每次写入的数据大小相同、地址属性相同、持续写入预设数量的字节。
可选地,读取模块820,具体用于:
根据预先配置的寄存器预取配置信息,计算预取地址和缓存行数;
根据预取地址和缓存行数,从内存中读取目标数据并加载至缓存中。
可选地,预取地址的获取时间戳小于地址信息的获取时间戳。
可选地,写入模块830,具体用于:
根据预先配置的寄存器合并配置信息,获取多个burst单位的数据;
将多个burst单位的数据进行合并,得到一条缓存行,将缓存行写入缓存或内存中。
可选地,上述装置,还用于:
获取寄存器预取配置信息;寄存器预取配置信息包括以下任意一项:预取地址、预取的缓存行数、预取的字节数量、预取地址的获取时间戳与地址信息的获取时间戳的提前量;
根据寄存器预取配置信息,对缓存进行配置处理。
可选地,上述装置,还用于:
获取寄存器合并配置信息;寄存器合并配置信息包括:触发合并的字节数量;
根据寄存器合并配置信息,对缓存进行配置处理。
关于上述数据读写处理装置的具体限定可以参见上文中对于数据读写处理方法的限定,在此不再赘述。上述数据读写处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备的内部结构图可以如图1所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现如上的一种数据读写处理方法。包括:包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如上数据读写处理方法中的任一步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时可以实现如上数据读写处理方法中的任一步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种数据读写处理方法,其特征在于,所述数据读写处理方法包括:
接收并解析数据处理请求,提取所述数据处理请求中的请求类型、地址信息;所述请求类型包括数据读取请求和数据写入请求;
当所述请求类型为数据读取请求且所述地址信息满足预设数量数据读取规则时,触发数据预取操作,并从所述缓存中读取目标数据,所述目标数据是从内存中经过预取处理并加载至所述缓存中的;和/或,
当所述请求类型为数据写入请求且所述地址信息满足预设数量数据写入规则时,触发数据合并操作,将缓存行写入所述缓存或内存中。
2.根据权利要求1所述的方法,其特征在于,所述预设数量数据读取规则包括:地址连续、地址递增、每次读取的数据大小相同、地址属性相同、持续读取预设数量的字节;
所述预设数量数据写入规则包括:地址连续、地址递增、每次写入的数据大小相同、地址属性相同、持续写入预设数量的字节。
3.根据权利要求1所述的方法,其特征在于,触发数据读取操作,并从所述缓存中读取目标数据,包括:
根据预先配置的寄存器预取配置信息,计算预取地址和缓存行数;
根据所述预取地址和所述缓存行数,从内存中读取目标数据并加载至所述缓存中。
4.根据权利要求3所述的方法,其特征在于,所述预取地址的获取时间戳小于所述地址信息的获取时间戳。
5.根据权利要求1所述的方法,其特征在于,触发数据合并操作,将缓存行写入所述缓存或内存中,包括:
根据预先配置的寄存器合并配置信息,获取多个burst单位的数据;
将所述多个burst单位的数据进行合并,得到一条缓存行,将所述缓存行写入所述缓存或内存中。
6.根据权利要求3所述的方法,其特征在于,在接收并解析数据处理请求之前,所述方法还包括:
获取寄存器预取配置信息;所述寄存器预取配置信息包括以下任意一项:预取地址、预取的缓存行数、预取的字节数量、预取地址的获取时间戳与地址信息的获取时间戳的提前量;
根据所述寄存器预取配置信息,对所述缓存进行配置处理。
7.根据权利要求4所述的方法,其特征在于,在接收并解析数据处理请求之前,所述方法还包括:
获取寄存器合并配置信息;所述寄存器合并配置信息包括:触发合并的字节数量;
根据所述寄存器合并配置信息,对所述缓存进行配置处理。
8.一种数据读写处理装置,其特征在于,所述数据读写处理装置包括:
接收模块,用于接收并解析数据处理请求,提取所述数据处理请求中的请求类型、地址信息;所述请求类型包括数据读取请求和数据写入请求;
读取模块,用于当所述请求类型为数据读取请求且所述地址信息满足预设数量数据读取规则时,触发数据预取操作,并从所述缓存中读取目标数据,所述目标数据是从内存中经过预取处理并加载至所述缓存中的;和/或,
写入模块,用于当所述请求类型为数据写入请求且所述地址信息满足预设数量数据写入规则时,触发数据合并操作,将缓存行写入所述缓存或内存中。
9.一种计算机设备,包括:存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202411686731.6A CN119201004A (zh) | 2024-11-22 | 2024-11-22 | 数据读写处理方法、装置、设备及介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202411686731.6A CN119201004A (zh) | 2024-11-22 | 2024-11-22 | 数据读写处理方法、装置、设备及介质 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN119201004A true CN119201004A (zh) | 2024-12-27 |
Family
ID=94058630
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202411686731.6A Pending CN119201004A (zh) | 2024-11-22 | 2024-11-22 | 数据读写处理方法、装置、设备及介质 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN119201004A (zh) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN119415048A (zh) * | 2025-01-07 | 2025-02-11 | 芯来智融半导体科技(上海)有限公司 | 数据写入方法、装置、设备和介质 |
| CN121029640A (zh) * | 2025-10-28 | 2025-11-28 | 上海壁仞科技股份有限公司 | 一种缓存的请求融合方法及人工智能芯片 |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20020087801A1 (en) * | 2000-12-29 | 2002-07-04 | Zohar Bogin | Method and system for servicing cache line in response to partial cache line request |
| US6658533B1 (en) * | 2000-09-21 | 2003-12-02 | Intel Corporation | Method and apparatus for write cache flush and fill mechanisms |
| CN107273053A (zh) * | 2017-06-22 | 2017-10-20 | 郑州云海信息技术有限公司 | 一种数据读取的方法与装置 |
| CN116055429A (zh) * | 2023-01-17 | 2023-05-02 | 杭州鸿钧微电子科技有限公司 | 基于pcie的通信数据处理方法、装置、设备及存储介质 |
| CN116610262A (zh) * | 2023-05-31 | 2023-08-18 | 苏州忆联信息系统有限公司 | 降低ssd顺序读延时的方法、装置、设备及介质 |
| CN116954718A (zh) * | 2023-07-07 | 2023-10-27 | 龙芯中科技术股份有限公司 | 数据预取方法、装置、电子设备及可读介质 |
-
2024
- 2024-11-22 CN CN202411686731.6A patent/CN119201004A/zh active Pending
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6658533B1 (en) * | 2000-09-21 | 2003-12-02 | Intel Corporation | Method and apparatus for write cache flush and fill mechanisms |
| US20020087801A1 (en) * | 2000-12-29 | 2002-07-04 | Zohar Bogin | Method and system for servicing cache line in response to partial cache line request |
| CN107273053A (zh) * | 2017-06-22 | 2017-10-20 | 郑州云海信息技术有限公司 | 一种数据读取的方法与装置 |
| CN116055429A (zh) * | 2023-01-17 | 2023-05-02 | 杭州鸿钧微电子科技有限公司 | 基于pcie的通信数据处理方法、装置、设备及存储介质 |
| CN116610262A (zh) * | 2023-05-31 | 2023-08-18 | 苏州忆联信息系统有限公司 | 降低ssd顺序读延时的方法、装置、设备及介质 |
| CN116954718A (zh) * | 2023-07-07 | 2023-10-27 | 龙芯中科技术股份有限公司 | 数据预取方法、装置、电子设备及可读介质 |
Non-Patent Citations (1)
| Title |
|---|
| 汪文祥: "《计算机类专业系统能力培养系列教材 CPU设计实战》", 31 December 2021, 北京:机械工业出版社, pages: 195 - 197 * |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN119415048A (zh) * | 2025-01-07 | 2025-02-11 | 芯来智融半导体科技(上海)有限公司 | 数据写入方法、装置、设备和介质 |
| CN121029640A (zh) * | 2025-10-28 | 2025-11-28 | 上海壁仞科技股份有限公司 | 一种缓存的请求融合方法及人工智能芯片 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8788759B2 (en) | Double-buffered data storage to reduce prefetch generation stalls | |
| JP3888508B2 (ja) | キャッシュ・データ管理方法 | |
| CN119201004A (zh) | 数据读写处理方法、装置、设备及介质 | |
| US20090132750A1 (en) | Cache memory system | |
| US20170161194A1 (en) | Page-based prefetching triggered by tlb activity | |
| US20090106499A1 (en) | Processor with prefetch function | |
| JP2000250813A (ja) | I/oキャッシュ・メモリにおけるデータ管理方法 | |
| CN116055429B (zh) | 基于pcie的通信数据处理方法、装置、设备及存储介质 | |
| CN114218132B (zh) | 信息预取方法、处理器、电子设备 | |
| US20230057633A1 (en) | Systems, methods, and apparatus for transferring data between interconnected devices | |
| US10552334B2 (en) | Systems and methods for acquiring data for loads at different access times from hierarchical sources using a load queue as a temporary storage buffer and completing the load early | |
| US8880847B2 (en) | Multistream prefetch buffer | |
| US11449428B2 (en) | Enhanced read-ahead capability for storage devices | |
| US8667223B2 (en) | Shadow registers for least recently used data in cache | |
| CN119759273A (zh) | 硬件加速方法、装置、设备及介质 | |
| CN120029933A (zh) | 数据请求处理方法、装置、电子设备、存储介质和程序产品 | |
| CN106569961A (zh) | 一种基于访存地址连续性的cache模块及其访存方法 | |
| CN119440880B (zh) | 处理器缓存结构、处理器和数据缓存方法 | |
| US12236091B2 (en) | Monitoring memory locations to identify whether data stored at the memory locations has been modified | |
| CN117971722B (zh) | 一种取数指令的执行方法及其装置 | |
| US20060179173A1 (en) | Method and system for cache utilization by prefetching for multiple DMA reads | |
| JP2022046413A (ja) | 記憶デバイスのための改良された先読み能力 | |
| CN112612728A (zh) | 缓存管理方法及装置、设备 | |
| JP2025531222A (ja) | データ再利用キャッシュ | |
| CN116701246A (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 | ||
| RJ01 | Rejection of invention patent application after publication |
Application publication date: 20241227 |
|
| RJ01 | Rejection of invention patent application after publication |