数据请求写入方法、读取方法、装置、设备、介质及产品与流程

摘要: 本技术涉及计算机,具体涉及数据请求写入方法、读取方法、装置、设备、介质及产品。背景技术:1、高性能存储系统通常采用先进先出(firstinfirstout,fi...
数据请求写入方法、读取方法、装置、设备、介质及产品与流程

本技术涉及计算机,具体涉及数据请求写入方法、读取方法、装置、设备、介质及产品。

背景技术:

1、高性能存储系统通常采用先进先出(first in first out,fifo)结构暂存请求,并配合预读机制(prefetching)提前将数据加载到缓存(cache)中。但是,目前的fifo仅按时间顺序暂存访问请求,难以感知队列间的访问模式,从而导致后续预读策略依赖局部性较强的历史窗口或额外统计表,存在预读盲目性、存储开销大、实时性不足等问题。

技术实现思路

1、本技术提供了一种数据请求写入方法、读取方法、装置、设备、介质及产品,以解决仅按时间顺序暂存访问请求而难以感知队列间访问的问题。

2、第一方面,本技术提供了一种数据请求写入方法,先入先出队列的每个条目包括队列标识以及后向同队列计数,后向同队列计数表示从当前条目向读出口方向扫描,累计相同队列标识的请求总数量;该方法包括:响应于上游触发的数据写请求,获取当前写指针指向的第一条目,数据写请求中携带第一队列标识;将第一条目对应的第一后向同队列计数初始化为第一预设值;向先入先出队列的读出口方向进行遍历,当遍历到队列标识与第一队列标识相同的有效条目时,则对第一条目的第一后向同队列计数进行累加。

3、本技术提供的数据请求写入方法,在fifo队列的各条目中设置队列标识字段以及后向同队列计数字段,由此能够后向同队列计数字段中记录写入端朝向读出口的累计同队列条目数量,便于直接获知前方积压的同标识任务数量,无需再次进行队列扫描,降低了重复遍历队列的检索耗时。根据fifo队列各个条目内部实时记录的第一后向同队列计数,能够为后端存储预读调度提供实时、量化的业务流量依据,规避盲目预读带来的带宽浪费或是预读不足引发的缓存缺失。

4、遍历匹配过程中,通过读取读出口方向的有效条目的队列标识进行比对,对本次待写入的第一条目执行后向同队列计数的累加操作,避免全局条目批量改写,大幅减少队列内存的写操作次数,减少内存读写损耗,降低总线读写压力,适配高并发高频写入的业务场景,提升缓存、片上存储等存储介质的使用寿命与吞吐效率。

5、在一种可选的实施方式中,向先入先出队列的读出口方向进行遍历,当遍历到队列标识与第一队列标识相同的有效条目时,则对第一条目的第一后向同队列计数进行累加,包括:获取当前写指针指向的写地址,以及当前读指针指向的读地址;若写地址大于等于读地址,则获取当前写指针相邻且靠近读出口方向的第一地址;从第一地址开始,向读地址进行遍历;检测当前遍历条目的队列标识与第一队列标识是否相同;若当前遍历条目的队列标识与第一队列标识相同,则将当前遍历条目确定为有效条目,并将第一条目的第一后向同队列计数累加预设值。

6、本技术提供的数据请求写入方法,通过读写地址界定有效遍历区间,仅在写地址至读地址的有效条目范围内向读出口方向遍历检索,避免对空闲、已读出无效条目进行冗余检测,有效缩减遍历开销,提升写入处理效率。从写指针相邻地址起始正向遍历,精准匹配相同队列标识的有效条目并仅对当前新写入条目的后向同队列计数进行累加,无需修改历史队列条目数据,减少内存读写操作,降低系统资源损耗。同时,通过筛选有效条目,能够准确累计同类请求的排队总量,保证后向同队列计数结果的真实可靠。

7、在一种可选的实施方式中,还包括:若当前遍历条目的队列标识与第一队列标识不相同,则继续检测当前遍历条目的下一条目的队列标识。

8、本技术提供的数据请求写入方法,当前遍历条目的队列标识与第一队列标识不相同,继续逐条遍历,由此,通过有序逐条遍历可完整、精准累计前方同类请求的排队总量,为后续的流量限流、任务调度、排队管控等提供精准数据支撑,能够有效适配高频、高并发的数据写入场景,保障运行实时性与稳定性。

9、在一种可选的实施方式中,还包括:在更新第一条目的第一后向同队列计数时,向读出口方向更新具备相同队列标识的各个条目的第二后向同队列计数。

10、本技术提供的数据请求写入方法,在更新当前新写入的第一条目的后向同队列计数过程中,向读出口方向更新具备相同队列标识的条目的计数,由此,能够批量更新队列中的历史数据。

11、第二方面,本技术提供了一种数据请求读取方法,包括:响应于下游触发的针对先入先出队列的数据读请求,获取当前读指针指向的第二条目;先入先出队列中的每个条目基于第一方面及其对应的任一实施方式的数据请求写入方法写入;解析第二条目对应的第三队列标识以及第三后向同队列计数;基于第三后向同队列计数以及第三队列标识对应队列的预读指针,确定有效预读数据地址;对有效预读数据地址对应的数据进行预读。

12、本技术提供的数据请求读取方法,根据写入阶段所写入的后向同队列计数开展预读控制,每次条目出队时,能够直接读取本条目标记的连续同队列请求数量(即第三后向同队列计数)。结合第三后向同队列计数以及预读指针,确定相应的预读数据地址进行数据预读,由此能够动态约束本次后台预读的数据总量,实现预读流量的自适应调节。在预读调度过程中,复用fifo队列内已经生成的后向同队列计数,多队列并发场景下无需新增逻辑资源,有效平衡缓存命中率与总线传输带宽,不仅能够减少访问次数,还可以避免重复预读占用pcie总线传输资源。

13、在一种可选的实施方式中,基于第三后向同队列计数以及第三队列标识对应队列的预读指针,确定有效预读数据地址,包括:获取第三队列标识对应队列的真实读指针、队列末尾数据指针以及队列缓存基地址;若预读指针的指向地址小于真实读指针的指向地址,则将预读指针修正为真实读指针;基于队列末尾数据指针以及修正后的预读指针,确定有效预读行数;基于有效预读行数和队列缓存基地址,确定有效预读数据地址。

14、本技术提供的数据请求读取方法,在预读指针的指向地址小于真实读指针的指向地址,则将预读指针修正为真实读指针,以实现预读指针与真实读指针的对齐校正,避免预读加载进度与前端真实指令下发进度之间的偏差,规避绝预读进度滞后导致的缓存供给不足。结合队列末尾数据指针以及修正后的预读指针,确定有效预读行数,防止预读地址超出已分配数据范围。以队列缓存基地址和有效预读行数,确定有效预读数据地址,便于通过有效预读数据地址进行预读指令的即时下发。

15、在一种可选的实施方式中,基于队列末尾数据指针以及修正后的预读指针,确定有效预读行数,包括:基于修正后的预读指针,确定预读起始的第一缓存行号;基于队列末尾数据指针,确定队列末尾的第二缓存行号;基于第二缓存行号与第一缓存行号的差值,确定可预读区间;基于可预读区间、第三后向同队列计数以及最大可预读块数,确定有效预读行数。

16、本技术提供的数据请求读取方法,分别通过修正后的预读指针和队列末尾数据指针,确定相应的第一缓存行号与第二缓存行号。结合第二缓存行号与第一缓存行号的差值,确定可预读区间,保证可预读区间贴合硬件调度粒度,避免碎片化读取请求。通过可预读区间、第三后向同队列计数以及最大可预读块数作为约束,以确定有效预读行数,能够避免预读行数过少引发多次缓存缺失,还可以避免一次性下发大批量预读指令挤占存储带宽。

17、在一种可选的实施方式中,该方法还包括:基于第一缓存行号和有效预读行数之和,更新预读行号;基于预读行号,更新预读指针所指向的数据预读地址。

18、本技术提供的数据请求读取方法,在预读指令下发完成后,自动把预读进度回写到队列预读指针中,将本轮预读覆盖的缓存行号固化为下一轮预读的起始行号。由此,在下一次处理同一队列请求时,预读起始位置能够接续上一轮的加载终点,能够彻底规避重复读取已经存入高速缓存的数据,显著削减无效的存储访问指令。根据更新后的预读行号,更新数据预读地址,由此可以仅在产生有效预读行数时触发数据预读地址的更新,减少空闲状态下的无效动作,优化了时序开销。

19、第三方面,本技术提供了一种数据请求写入装置,先入先出队列的每个条目包括队列标识以及后向同队列计数,后向同队列计数表示从当前条目向读出口方向扫描,累计相同队列标识的请求总数量;该装置包括:写请求响应模块,用于响应于上游触发的数据写请求,获取当前写指针指向的第一条目,数据写请求中携带第一队列标识;初始化模块,用于将第一条目对应的第一后向同队列计数初始化为第一预设值;更新模块,用于向先入先出队列的读出口方向进行遍历,当遍历到队列标识与第一队列标识相同的有效条目时,则对第一条目的第一后向同队列计数进行累加。

20、第四方面,本技术提供了一种数据请求读取装置,包括:读请求响应模块,用于响应于下游触发的针对先入先出队列的数据读请求,获取当前读指针指向的第二条目;先入先出队列中的每个条目基于第一方面及其对应的任一实施方式的数据请求写入方法写入;解析模块,用于解析第二条目对应的第三队列标识以及第三后向同队列计数;有效地址确定模块,用于基于第三后向同队列计数以及第三队列标识对应队列的预读指针,确定有效预读数据地址;预读模块,用于对有效预读数据地址对应的数据进行预读。

21、第五方面,本技术提供了一种电子设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的数据请求写入方法,或执行第二方面或其对应的任一实施方式的数据请求读取方法。

22、第六方面,本技术提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的数据请求写入方法,或执行第二方面或其对应的任一实施方式的数据请求读取方法。

23、第七方面,本技术提供了一种计算机程序产品,包括计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的数据请求写入方法,或执行第二方面或其对应的任一实施方式的数据请求读取方法。