CN106021128A - 一种基于步幅和数据相关性的数据预取器及其预取方法 - Google Patents
一种基于步幅和数据相关性的数据预取器及其预取方法 Download PDFInfo
- Publication number
- CN106021128A CN106021128A CN201610374345.2A CN201610374345A CN106021128A CN 106021128 A CN106021128 A CN 106021128A CN 201610374345 A CN201610374345 A CN 201610374345A CN 106021128 A CN106021128 A CN 106021128A
- Authority
- CN
- China
- Prior art keywords
- data
- address
- stride
- prefetches
- miss
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0853—Cache with multiport tag or data arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6024—History based prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于步幅和数据相关性的数据预取器及其预取方法,所述预取器包括步幅预取表、历史数据表、数据队列;所述预取方法通过步幅预取表和历史数据表对二级缓存未命中进行检测,判断是否进入预取状态,相应的在数据队列中添加预取请求,并对向外存访问接口发出预取信号进行预取。所述预取器及其预取方法在步幅预取方案的基础上增加关联性预取的技术特点,减少步幅预取方案的训练过程,从而提高步幅预取方案的预取覆盖率,实现性能提升并且节省了大量存储空间。
Description
技术领域
本发明涉及一种基于步幅和数据相关性的数据预取器及其预取方法。
背景技术
由于处理器和存储器性能差距的不断扩大,访存延时严重降低处理器性,已经成为制约处理器性能提升的主要瓶颈。虽然高速缓存(Cache)的使用可以有效地填补处理器与存储器之间的性能鸿沟,但是面对应用程序中复杂多样的访存地址模式以及频繁的的数据交换,即使采用大容量片上缓存也可能难以满足应用程序的数据访问需求。因此,如何涉及有效的高命中率的预取方案,是提高处理器性能的关键问题之一。
目前预取模块有数据关联型和数据规律型两种方向。
数据关联型基于历史数据流进行预取,将第二级缓存数据缺失的地址信息记录下来或者记录链式访问的节点地址,在后续的数据访问过程中,若发现此地址之前已完成记录,则预取记录中下一个数据。数据关联型虽能显著提升某些算法的性能,但是需要消耗大量的存储资源。
数据规律型基于数据在外存中的分布规律,研究发现,数据访问过程中,各数据的地址间隔经常是相同的,通过检测这样的间隔实现预取功能。数据规律型方向的方案主要为基于步幅的方案。此方案分为三步:定位、训练、预取。通过地址高位信息完成定位,定位相同的地址将进入训练过程。训练过程中,若步幅相同则计数加1,达到阈值后进入单步预取模式;若步幅在两种长度间循环变化,则进入多步预取模式。预取过程即根据相应的步幅信息,提前发起数据请求。步幅预取放方案硬件资源消耗少,但是性能提升效果一般。
现有的预取方案大多数是依据数据关联或者数据规律的单一预取方案,忽视了某些算法的数据同时具有内存中分布的规律性和前后数据的关联性两个特点,因此不能在性能和资源消耗做出一种平衡。
发明内容
发明目的:为了克服现有技术中存在的不足,本发明提供一种基于步幅和数据相关性的数据预取器及其预取方法,不仅可以提高预取器的运算性能,同时能够有效降低存储资源的使用。
技术方案:为实现上述目的,本发明采用的技术方案为:
一种基于步幅和数据相关性的数据预取器,所述预取器包括未命中地址缓存、步幅预取表、历史数据表、数据队列;
其中,所述未命中地址缓存,用于记录二级缓存收到的数据请求地址,将该地址称为未命中地址,并且将该未命中地址发送给步幅预取表和历史数据表;
所述步幅预取表,用于步幅预取的训练和实现,若成功进入预取模式,则将相关数据发送给历史数据表;
所述历史数据表,用于记录成功进入预取状态的数据流,是一个先进先出缓存,设计为环状结构;
所述数据队列,用于记录数据请求和得到的数据,是一个先进先出FIFO缓存。
所述步幅预取表按时间顺序存储各个数据流信息;对当前未命中地址所属数据流,对比当前未命中地址与历史数据流信息,判断步幅预取表是否命中,若命中,则使用当前未命中地址更新历史数据流信息,若连续命中达N次,则状态机进入预取模式;当状态机退出预取模式时,则步幅预取表将自身的历史数据流信息发送给历史数据表。
作为优选,为了对二级缓存未命中距离的步幅训练和实现,所述步幅预取表存储多个条目,每个条目包括:
前置位字段,用于辨别不同的数据流,若当前未命中地址的前置位与某个数据流的前置位在同一范围内,则认为当前未命中地址属于该数据流;
前地址字段,用于记录上一次二级缓存未命中的地址;
地址差值字段,记录前地址字段与当前未命中地址的差值,该差值称为当前未命中地址的步幅;
状态机字段,用于记录当前训练过程中状态;若计数器1为i=0,则状态机为初始模式;若计数器1为1<i<N,则状态机为训练模式;若计数器1为i≥N,则状态机为预取模式;
计数器1字段,用于记录当前数据流在训练过程中有多少个相同的步幅;若当前未命中地址的步幅与属于相同数据流的上一次未命中地址的步幅相同,则计数器1加1;若当前未命中地址的步幅与属于相同数据流的上一次未命中地址的步幅不同,则计数器1置0。
所述历史数据表按时间顺序存储各个历史未命中地址预取流数据流信息;对当前未命中地址所属数据流,并对比当前未命中地址与历史数据流信息历史预取流,判断历史数据表是否命中,若命中,则状态机进入预取模式,历史数据表将命中历史数据流信息发送给步幅预取表;步幅预取表首先使用命中历史数据流信息替换自身的历史数据流信息,然后使用当前未命中地址更新历史数据流信息。
作为优选,为了检测二级缓存未命中距离是否命中历史数据表,所述历史数据表中,仅保存属于相同数据流的最近的M个预取流,每个预取流存储在一个历史数据条目下,每个历史数据条目还包括如下属性:
前置位字段:用于辨别不同的数据流,若两个以上未命中地址的前置位在同一范围内,则认为该两个以上未命中地址属于同一数据流;
起始地址字段,用于记录预取流的起始地址的索引位;
地址差值字段,用于记录预取流的步幅;
计数器2字段,用于记录进入此预取模式的请求个数预取流的地址个数;
判断历史数据表是否命中的方法为:用当前未命中地址的索引位的起始地址分别减去属于相同数据流的最近的M个未命中地址预取流起始地址的索引位起始地址,差值分别除以对应的M个未命中地址的地址差值,将M个结果分别与对应的M个计数器2相减,若存在一个以上小于零的差值,则认为历史数据表命中;若历史数据表命中,则历史数据表将当前未命中地址和命中预取流的地址差值、计数器2发送给步幅预取表并存储则步幅预取表将当前未命中地址发送给历史数据表并存储。
所述数据队列按时间顺序存储数据请求的地址,数据请求包括二级缓存直接发起的数据请求和预取模式发起的数据请求。
作为优选,为了记录预取器发出的请求,存储预取的数据,所述数据队列存储多个条目,每个条目包括:
有效标志字段,用于表示二级缓存直接发起的访存请求或者由预取发起的访存请求有效,有效置1;
发起标志字段,用于表示预取请求已经发起,1表示预取请求已经完成,0表示预取请求尚未完成;
预取标志字段,用于表示哪种模式发起的预取请求,10表示由二级缓存发起的访存请求,01表示由预取发起模块发起的访存请求,11表示由二级缓存与预取发起模块发起的访存请求;
地址字段,用于记录预取的起始地址;
数据有效字段,用于表示已从外部存储获得数据,1表示数据已经完成读取,0表示数据尚未完成读取;
数据字段,用于存储从动态随机存储器中预取的数据。
所述数据队列还包括冗余检测模块,通过冗余检测和预取标志能够判断预取是否成功,同时排除重复请求。
为了进一步实现发明目的,本发明还提供了一种基于上述基于步幅和数据相关性的数据预取器的预取方法,包括以下步骤:
(1)当二级缓存发送未命中后,将请求加入数据队列,并将数据队列中的预取标志记为10;将该地址称为当前未命中地址;同时执行步骤(2);
(2)当二级缓存发送未命中后,将未命中地址的前置位与步幅预取表中的前置位相比较,找到对应的数据流,通过与前地址和地址差值比较,决定状态机的状态,如果相等称为步幅预取表命中;同时执行步骤(3);
(3)当二级缓存发送未命中后,未命中的地址与历史数据表中的起始地址、步幅和次数比较,若命中历史数据表,则步幅预取表中的状态机直接进入预取状态,并替换前地址和地址差值;
(4)步骤(2)中状态机刚开始进入初始状态,如果步幅预取表未命中,则状态机让处于初始状态;如果步幅预取表命中,状态机进入训练状态;如果历史数据表命中,状态机进入预取状态;
(5)若状态机处于训练状态,如果步幅预取表未命中,则状态机让进入初始状态;如果步幅预取表命中,则状态机仍处于训练状态,同时计数器1字段加1;直到计数器1字段大于等于3时步幅预取再次表命中或者历史数据表命中,状态机进入预取状态;
(6)若状态机进入预取状态,则通过步幅预取表中的前地址和地址差值计算得到预取地址,将此请求加入数据队列;若步幅预取表持续命中,则状态机保持预取状态,计数器1字段加1;若步幅预取表未命中,则状态机进入初始状态。
有益效果:本发明与现有技术相比,在步幅预取方案的基础上增加关联性预取的技术特点,减少步幅预取方案的训练过程,从而提高步幅预取方案的预取覆盖率,实现性能提升。与传统数据关联型预取相比节省了大量存储空间。
附图说明
图1为为本发明的预取系统的工作状态连接图;
图2为本发明的数据预取器结构图;
图3为本发明的步幅预取表状态转换图。
具体实施方式
下面结合附图对本发明作更进一步的说明。
如图1所示,本发明的数据预取器与外部存储器接口连接;本发明的基于步幅和数据相关性的数据预取器,预取器包括未命中地址缓存、步幅预取表、历史数据表、数据队列;
其中,未命中地址缓存,用于记录二级缓存收到的数据请求地址,将该地址称为未命中地址,并且将该未命中地址发送给步幅预取表和历史数据表;
步幅预取表,用于步幅预取的训练和实现,若成功进入预取模式,则将相关数据发送给历史数据表;按时间顺序存储各个数据流信息;对当前未命中地址所属数据流,对比当前未命中地址与历史数据流信息,判断步幅预取表是否命中,若命中,则使用当前未命中地址更新历史数据流信息,若连续命中达N次,则状态机进入预取模式;当状态机退出预取模式时,则步幅预取表将自身的历史数据流信息发送给历史数据表;
历史数据表,用于记录成功进入预取状态的数据流;按时间顺序存储各个历史未命中地址预取流数据流信息;对当前未命中地址所属数据流,并对比当前未命中地址与历史数据流信息历史预取流,判断历史数据表是否命中,若命中,则状态机进入预取模式,历史数据表将命中历史数据流信息发送给步幅预取表;步幅预取表首先使用命中历史数据流信息替换自身的历史数据流信息,然后使用当前未命中地址更新历史数据流信息。
数据队列,用于记录数据请求和得到的数据;按时间顺序存储数据请求的地址,数据请求包括二级缓存直接发起的数据请求和预取模式发起的数据请求。
步幅预取表存储多个条目,每个条目包括:
前置位字段,用于辨别不同的数据流,若当前未命中地址的前置位与某个数据流的前置位在同一范围内,则认为当前未命中地址属于该数据流;
前地址字段,用于记录上一次二级缓存未命中的地址;
地址差值字段,记录前地址字段与当前未命中地址的差值,该差值称为当前未命中地址的步幅;
状态机字段,用于记录当前训练过程中状态;若计数器1为i=0,则状态机为初始模式;若计数器1为1<i<N,则状态机为训练模式;若计数器1为i≥N,则状态机为预取模式;
计数器1字段,用于记录当前数据流在训练过程中有多少个相同的步幅;若当前未命中地址的步幅与属于相同数据流的上一次未命中地址的步幅相同,则计数器1加1;若当前未命中地址的步幅与属于相同数据流的上一次未命中地址的步幅不同,则计数器1置0。
历史数据表中,仅保存属于相同数据流的最近的M个预取流,每个预取流存储在一个历史数据条目下,每个历史数据条目还包括如下属性:
前置位字段:用于辨别不同的数据流,若两个以上未命中地址的前置位在同一范围内,则认为该两个以上未命中地址属于同一数据流;
起始地址字段,用于记录预取流的起始地址的索引位;
地址差值字段,用于记录预取流的步幅;
计数器2字段,用于记录进入此预取模式的请求个数预取流的地址个数;
判断历史数据表是否命中的方法为:用当前未命中地址的索引位的起始地址分别减去属于相同数据流的最近的M个未命中地址预取流起始地址的索引位起始地址,差值分别除以对应的M个未命中地址的地址差值,将M个结果分别与对应的M个计数器2相减,若存在一个以上小于零的差值,则认为历史数据表命中;若历史数据表命中,则历史数据表将当前未命中地址和命中预取流的地址差值、计数器2发送给步幅预取表并存储则步幅预取表将当前未命中地址发送给历史数据表并存储。
数据队列存储多个条目,每个条目包括:
有效标志字段,用于表示二级缓存直接发起的访存请求或者由预取发起的访存请求有效,有效置1;
发起标志字段,用于表示预取请求已经发起,1表示预取请求已经完成,0表示预取请求尚未完成;
预取标志字段,用于表示哪种模式发起的预取请求,10表示由二级缓存发起的访存请求,01表示由预取发起模块发起的访存请求,11表示由二级缓存与预取发起模块发起的访存请求;
地址字段,用于记录预取的起始地址;
数据有效字段,用于表示已从外部存储获得数据,1表示数据已经完成读取,0表示数据尚未完成读取;
数据字段,用于存储从动态随机存储器中预取的数据。
数据队列还包括冗余检测模块,通过冗余检测和预取标志能够判断预取是否成功,同时排除重复请求。
冗余检测模块的机制为:
将当前数据请求地址与数据队列中预取标志位不为00的历史数据条目地址字段比较,若地址不同,则将当前数据请求地址加入数据队列;若地址相同,则比较预取标志位;
若当前数据请求预取标志位为01,则取消此数据请求;若当前数据请求预取标志位为10,且历史数据条目预取标志位为11或10,则将当前数据请求地址加入数据队列;若当前数据请求预取标志位为10,且历史数据条目标志位为01,则将历史数据条目复制重新加入数据队列,并将新的数据条目预取标志位改为11,原有历史数据条目预取标志位改为00。
一种基于步幅和数据相关性的数据预取器的预取方法,包括以下步骤:
(1)当二级缓存发送未命中后,将请求加入数据队列,并将数据队列中的预取标志记为10;将该地址称为当前未命中地址;同时执行步骤(2);
(2)当二级缓存发送未命中后,将未命中地址的前置位与步幅预取表中的前置位相比较,找到对应的数据流,通过与前地址和地址差值比较,决定状态机的状态,如果相等称为步幅预取表命中;同时执行步骤(3);
(3)当二级缓存发送未命中后,未命中的地址与历史数据表中的起始地址、步幅和次数比较,若命中历史数据表,则步幅预取表中的状态机直接进入预取状态,并替换前地址和地址差值;
(4)步骤(2)中状态机刚开始进入初始状态,如果步幅预取表未命中,则状态机让处于初始状态;如果步幅预取表命中,状态机进入训练状态;如果历史数据表命中,状态机进入预取状态;
(5)若状态机处于训练状态,如果步幅预取表未命中,则状态机让进入初始状态;如果步幅预取表命中,则状态机仍处于训练状态,同时计数器1字段加1;直到计数器1字段大于等于3时步幅预取再次表命中或者历史数据表命中,状态机进入预取状态;
(6)若状态机进入预取状态,则通过步幅预取表中的前地址和地址差值计算得到预取地址,将此请求加入数据队列;若步幅预取表持续命中,则状态机保持预取状态,计数器1字段加1;若步幅预取表未命中,则状态机进入初始状态。
实施例
如图2所示,当二级缓存发送未命中后,将访存请求加入数据队列并将数据队列中的预取标志记为10;同时将未命中地址的前置位与步幅预取表中的前置位相比较,找到对应的数据流,通过与前地址和地址差值比较,决定状态机的状态,如果相等称为步幅预取表命中;同时未命中的地址与历史数据表中的起始地址、步幅和次数比较,若命中历史数据表,则步幅预取表中的状态机直接进入预取状态,并替换前地址和地址差值。
如图3所示,状态机刚开始进入初始状态,如果步幅预取表未命中,则状态机让处于初始状态;如果步幅预取表命中,状态机进入训练状态;如果历史数据表命中,状态机进入预取状态;若状态机处于训练状态,如果步幅预取表未命中,则状态机让进入初始状态;如果步幅预取表命中,则状态机仍处于训练状态,同时计数器1加1;直到计数器1大于等于3时步幅预取再次表命中或者历史数据表命中,状态机进入预取状态;若状态机进入预取状态,则通过步幅预取表中的前地址和地址差值计算得到预取地址,将此请求加入数据队列;若步幅预取表持续命中,则状态机保持预取状态,计数器1让加1;若步幅预取表未命中,则状态机进入初始状态。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1.一种基于步幅和数据相关性的数据预取器,其特征在于:所述预取器包括未命中地址缓存、步幅预取表、历史数据表、数据队列;
其中,所述未命中地址缓存,用于记录二级缓存收到的数据请求地址,将该地址称为未命中地址,并且将该未命中地址发送给步幅预取表和历史数据表;
所述步幅预取表,用于步幅预取的训练和实现,若成功进入预取模式,则将相关数据发送给历史数据表;
所述历史数据表,用于记录成功进入预取状态的数据流;
所述数据队列,用于记录数据请求和得到的数据。
2.如权利要求1所述的基于步幅和数据相关性的数据预取器,其特征在于:所述步幅预取表按时间顺序存储各个数据流信息;对当前未命中地址所属数据流,对比当前未命中地址与历史数据流信息,判断步幅预取表是否命中,若命中,则使用当前未命中地址更新历史数据流信息,若连续命中达N次,则状态机进入预取模式;当状态机退出预取模式时,则步幅预取表将自身的历史数据流信息发送给历史数据表。
3.如权利要求1或2所述的基于步幅和数据相关性的数据预取器,其特征在于:所述步幅预取表存储多个条目,每个条目包括:
前置位字段,用于辨别不同的数据流,若当前未命中地址的前置位与某个数据流的前置位在同一范围内,则认为当前未命中地址属于该数据流;
前地址字段,用于记录上一次二级缓存未命中的地址;
地址差值字段,记录前地址字段与当前未命中地址的差值,该差值称为当前未命中地址的步幅;
状态机字段,用于记录当前训练过程中状态;若计数器1为i=0,则状态机为初始模式;若计数器1为1<i<N,则状态机为训练模式;若计数器1为i≥N,则状态机为预取模式;
计数器1字段,用于记录当前数据流在训练过程中有多少个相同的步幅;若当前未命中地址的步幅与属于相同数据流的上一次未命中地址的步幅相同,则计数器1加1;若当前未命中地址的步幅与属于相同数据流的上一次未命中地址的步幅不同,则计数器1置0。
4.如权利要求1所述的基于步幅和数据相关性的数据预取器,其特征在于:所述历史数据表按时间顺序存储各个历史未命中地址预取流数据流信息;对当前未命中地址所属数据流,并对比当前未命中地址与历史数据流信息历史预取流,判断历史数据表是否命中,若命中,则状态机进入预取模式,历史数据表将命中历史数据流信息发送给步幅预取表;步幅预取表首先使用命中历史数据流信息替换自身的历史数据流信息,然后使用当前未命中地址更新历史数据流信息。
5.如权利要求1或4所述的基于步幅和数据相关性的数据预取器,其特征在于:所述历史数据表中,仅保存属于相同数据流的最近的M个预取流,每个预取流存储在一个历史数据条目下,每个历史数据条目还包括如下属性:
前置位字段:用于辨别不同的数据流,若两个以上未命中地址的前置位在同一范围内,则认为该两个以上未命中地址属于同一数据流;
起始地址字段,用于记录预取流的起始地址的索引位;
地址差值字段,用于记录预取流的步幅;
计数器2字段,用于记录进入此预取模式的请求个数预取流的地址个数;
判断历史数据表是否命中的方法为:用当前未命中地址的索引位的起始地址分别减去属于相同数据流的最近的M个未命中地址预取流起始地址的索引位起始地址,差值分别除以对应的M个未命中地址的地址差值,将M个结果分别与对应的M个计数器2相减,若存在一个以上小于零的差值,则认为历史数据表命中;若历史数据表命中,则历史数据表将当前未命中地址和命中预取流的地址差值、计数器2发送给步幅预取表并存储则步幅预取表将当前未命中地址发送给历史数据表并存储。
6.如权利要求1所述的基于步幅和数据相关性的数据预取器,其特征在于:所述数据队列按时间顺序存储数据请求的地址,数据请求包括二级缓存直接发起的数据请求和预取模式发起的数据请求。
7.如权利要求1或6所述的基于步幅和数据相关性的数据预取器,其特征在于:所述数据队列存储多个条目,每个条目包括:
有效标志字段,用于表示二级缓存直接发起的访存请求或者由预取发起的访存请求有效,有效置1;
发起标志字段,用于表示预取请求已经发起,1表示预取请求已经完成,0表示预取请求尚未完成;
预取标志字段,用于表示哪种模式发起的预取请求,10表示由二级缓存发起的访存请求,01表示由预取发起模块发起的访存请求,11表示由二级缓存与预取发起模块发起的访存请求;
地址字段,用于记录预取的起始地址;
数据有效字段,用于表示已从外部存储获得数据,1表示数据已经完成读取,0表示数据尚未完成读取;
数据字段,用于存储从动态随机存储器中预取的数据。
8.如权利要求7所述的基于步幅和数据相关性的数据预取器,其特征在于:所述数据队列还包括冗余检测模块,通过冗余检测和预取标志能够判断预取是否成功,同时排除重复请求。
9.一种基于权利要求1所述基于步幅和数据相关性的数据预取器的预取方法,其特征在于,包括以下步骤:
(1)当二级缓存发送未命中后,将请求加入数据队列,并将数据队列中的预取标志记为10;将该地址称为当前未命中地址;同时执行步骤(2);
(2)当二级缓存发送未命中后,将未命中地址的前置位与步幅预取表中的前置位相比较,找到对应的数据流,通过与前地址和地址差值比较,决定状态机的状态,如果相等称为步幅预取表命中;同时执行步骤(3);
(3)当二级缓存发送未命中后,未命中的地址与历史数据表中的起始地址、步幅和次数比较,若命中历史数据表,则步幅预取表中的状态机直接进入预取状态,并替换前地址和地址差值;
(4)步骤(2)中状态机刚开始进入初始状态,如果步幅预取表未命中,则状态机让处于初始状态;如果步幅预取表命中,状态机进入训练状态;如果历史数据表命中,状态机进入预取状态;
(5)若状态机处于训练状态,如果步幅预取表未命中,则状态机让进入初始状态;如果步幅预取表命中,则状态机仍处于训练状态,同时计数器1字段加1;直到计数器1字段大于等于3时步幅预取再次表命中或者历史数据表命中,状态机进入预取状态;
(6)若状态机进入预取状态,则通过步幅预取表中的前地址和地址差值计算得到预取地址,将此请求加入数据队列;若步幅预取表持续命中,则状态机保持预取状态,计数器1字段加1;若步幅预取表未命中,则状态机进入初始状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610374345.2A CN106021128B (zh) | 2016-05-31 | 2016-05-31 | 一种基于步幅和数据相关性的数据预取器及其预取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610374345.2A CN106021128B (zh) | 2016-05-31 | 2016-05-31 | 一种基于步幅和数据相关性的数据预取器及其预取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106021128A true CN106021128A (zh) | 2016-10-12 |
CN106021128B CN106021128B (zh) | 2018-10-30 |
Family
ID=57091761
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610374345.2A Active CN106021128B (zh) | 2016-05-31 | 2016-05-31 | 一种基于步幅和数据相关性的数据预取器及其预取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106021128B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108874694A (zh) * | 2017-05-12 | 2018-11-23 | 三星电子株式会社 | 空间存储器串流预取引擎的设备和方法、制造和测试方法 |
CN109408412A (zh) * | 2018-10-24 | 2019-03-01 | 龙芯中科技术有限公司 | 内存预取控制方法、装置及设备 |
CN109446111A (zh) * | 2018-10-15 | 2019-03-08 | 上海兆芯集成电路有限公司 | 存储器集成电路及其预取地址决定方法 |
CN110226158A (zh) * | 2017-12-29 | 2019-09-10 | 华为技术有限公司 | 一种数据预取方法、装置和存储设备 |
CN110245094A (zh) * | 2019-06-18 | 2019-09-17 | 华中科技大学 | 一种基于深度学习的块级缓存预取优化方法和系统 |
CN110427332A (zh) * | 2019-08-05 | 2019-11-08 | 上海兆芯集成电路有限公司 | 数据预取装置、数据预取方法及微处理器 |
CN110765034A (zh) * | 2018-07-27 | 2020-02-07 | 华为技术有限公司 | 一种数据预取方法及终端设备 |
US10671394B2 (en) | 2018-10-31 | 2020-06-02 | International Business Machines Corporation | Prefetch stream allocation for multithreading systems |
CN114065947A (zh) * | 2021-11-15 | 2022-02-18 | 深圳大学 | 一种数据访问推测方法、装置、存储介质及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1484788A (zh) * | 2000-12-29 | 2004-03-24 | 英特尔公司 | 根据未命中距离将数据预取到高速缓存器中的系统和方法 |
CN101057224A (zh) * | 2004-11-15 | 2007-10-17 | 皇家飞利浦电子股份有限公司 | 具有预取的高速缓冲存储器 |
CN101751246A (zh) * | 2008-12-15 | 2010-06-23 | 国际商业机器公司 | 预取数据的系统和方法 |
US20110271058A1 (en) * | 2010-04-29 | 2011-11-03 | Canon Kabushiki Kaisha | Method, system and apparatus for identifying a cache line |
-
2016
- 2016-05-31 CN CN201610374345.2A patent/CN106021128B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1484788A (zh) * | 2000-12-29 | 2004-03-24 | 英特尔公司 | 根据未命中距离将数据预取到高速缓存器中的系统和方法 |
CN101057224A (zh) * | 2004-11-15 | 2007-10-17 | 皇家飞利浦电子股份有限公司 | 具有预取的高速缓冲存储器 |
CN101751246A (zh) * | 2008-12-15 | 2010-06-23 | 国际商业机器公司 | 预取数据的系统和方法 |
US20110271058A1 (en) * | 2010-04-29 | 2011-11-03 | Canon Kabushiki Kaisha | Method, system and apparatus for identifying a cache line |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108874694B (zh) * | 2017-05-12 | 2023-11-28 | 三星电子株式会社 | 空间存储器串流预取引擎的设备和方法、制造和测试方法 |
CN108874694A (zh) * | 2017-05-12 | 2018-11-23 | 三星电子株式会社 | 空间存储器串流预取引擎的设备和方法、制造和测试方法 |
US11099997B2 (en) | 2017-12-29 | 2021-08-24 | Huawei Technologies Co., Ltd. | Data prefetching method and apparatus, and storage device |
CN110226158A (zh) * | 2017-12-29 | 2019-09-10 | 华为技术有限公司 | 一种数据预取方法、装置和存储设备 |
CN110226158B (zh) * | 2017-12-29 | 2021-06-29 | 华为技术有限公司 | 一种数据预取方法、装置和存储设备 |
US11586544B2 (en) | 2018-07-27 | 2023-02-21 | Huawei Technologies Co., Ltd. | Data prefetching method and terminal device |
CN110765034A (zh) * | 2018-07-27 | 2020-02-07 | 华为技术有限公司 | 一种数据预取方法及终端设备 |
CN109446111A (zh) * | 2018-10-15 | 2019-03-08 | 上海兆芯集成电路有限公司 | 存储器集成电路及其预取地址决定方法 |
CN109408412A (zh) * | 2018-10-24 | 2019-03-01 | 龙芯中科技术有限公司 | 内存预取控制方法、装置及设备 |
US10671394B2 (en) | 2018-10-31 | 2020-06-02 | International Business Machines Corporation | Prefetch stream allocation for multithreading systems |
CN110245094B (zh) * | 2019-06-18 | 2020-12-29 | 华中科技大学 | 一种基于深度学习的块级缓存预取优化方法和系统 |
CN110245094A (zh) * | 2019-06-18 | 2019-09-17 | 华中科技大学 | 一种基于深度学习的块级缓存预取优化方法和系统 |
CN110427332B (zh) * | 2019-08-05 | 2021-08-20 | 上海兆芯集成电路有限公司 | 数据预取装置、数据预取方法及微处理器 |
US11301250B2 (en) | 2019-08-05 | 2022-04-12 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Data prefetching auxiliary circuit, data prefetching method, and microprocessor |
CN110427332A (zh) * | 2019-08-05 | 2019-11-08 | 上海兆芯集成电路有限公司 | 数据预取装置、数据预取方法及微处理器 |
CN114065947A (zh) * | 2021-11-15 | 2022-02-18 | 深圳大学 | 一种数据访问推测方法、装置、存储介质及电子设备 |
CN114065947B (zh) * | 2021-11-15 | 2022-07-22 | 深圳大学 | 一种数据访问推测方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN106021128B (zh) | 2018-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106021128A (zh) | 一种基于步幅和数据相关性的数据预取器及其预取方法 | |
US7464246B2 (en) | System and method for dynamic sizing of cache sequential list | |
US6983356B2 (en) | High performance memory device-state aware chipset prefetcher | |
CN106909515B (zh) | 面向混合主存的多核共享末级缓存管理方法及装置 | |
US20180300247A1 (en) | Managing memory access requests with prefetch for streams | |
US9582282B2 (en) | Prefetching using a prefetch lookup table identifying previously accessed cache lines | |
US20220283955A1 (en) | Data cache region prefetcher | |
CN102023931A (zh) | 一种自适应缓存预取方法 | |
CN106569960B (zh) | 一种混合主存的末级缓存管理方法 | |
CN113986774A (zh) | 一种基于指令流和访存模式学习的缓存替换系统及方法 | |
Bakhshalipour et al. | An efficient temporal data prefetcher for L1 caches | |
CN117389630B (zh) | 一种数据缓存方法、装置、电子设备及可读存储介质 | |
CN104156321B (zh) | 一种数据预取的方法以及装置 | |
CN104134027B (zh) | 一种顺序流识别的方法以及装置 | |
CN113656332A (zh) | 基于合并地址差值序列的cpu缓存数据预取方法 | |
WO2023035654A1 (zh) | 偏移预取方法、执行偏移预取的装置、计算设备和介质 | |
CN111752905A (zh) | 一种基于对象存储的大文件分布式缓存系统 | |
US6643743B1 (en) | Stream-down prefetching cache | |
US7472226B1 (en) | Methods involving memory caches | |
CN115715390A (zh) | 用于自适应混合硬件预取的系统和方法 | |
CN111506517A (zh) | 一种基于访问局部性的闪存页级地址映射方法及其系统 | |
CN1165000C (zh) | 动态索引的微处理器高速缓存方法 | |
Young et al. | Towards bandwidth-efficient prefetching with slim ampm | |
CN118245512B (zh) | 一种预取控制方法、装置、电子设备及可读存储介质 | |
CN110865947B (zh) | 一种面向预取数据的高速缓存管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |