CN106528450A - 数据预先提取方法及使用此方法的装置 - Google Patents

数据预先提取方法及使用此方法的装置 Download PDF

Info

Publication number
CN106528450A
CN106528450A CN201610952199.7A CN201610952199A CN106528450A CN 106528450 A CN106528450 A CN 106528450A CN 201610952199 A CN201610952199 A CN 201610952199A CN 106528450 A CN106528450 A CN 106528450A
Authority
CN
China
Prior art keywords
mentioned
cache line
play amount
trend
data
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
Application number
CN201610952199.7A
Other languages
English (en)
Other versions
CN106528450B (zh
Inventor
陈晨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Zhaoxin Semiconductor Co Ltd
Original Assignee
Shanghai Zhaoxin Integrated Circuit Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Zhaoxin Integrated Circuit Co Ltd filed Critical Shanghai Zhaoxin Integrated Circuit Co Ltd
Priority to CN201610952199.7A priority Critical patent/CN106528450B/zh
Priority to US15/367,302 priority patent/US9996469B2/en
Publication of CN106528450A publication Critical patent/CN106528450A/zh
Application granted granted Critical
Publication of CN106528450B publication Critical patent/CN106528450B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching 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 miss)发生所导致较长的等待时间,微处理器观察最近的存储器需求的地址,试图预测将来需要哪些数据,并预先提取这些数据至微处理器的高速缓存存储器。观察存储器存取的简单顺序性来预测将来需要的数据,相对上容易。然而,程序也可能以相较于简单顺序性更复杂的模式来存取数据。在某些微处理器中,为了提高载入/存储指令的执行效率,会在微处理器中设置两条或以上的载入/存储流水线以并行执行载入/存储指令,观察二个载入/存储流水线(load/store pipeline)上的复杂存取模式,则更是复杂。设计一个数据预先提取器来根据二个载入/存储流水线的复杂存取模式预测将来需要的数据,可能需要大量的电力及时间资源,加长微处理器的时钟长度及增加微处理器的电力消耗,而此二因素为设计的重要考虑。因此,需要一种数据预先提取器,用以有效率地预测二个载入/存储流水线的复杂存取模式。
发明内容
本发明的实施例提出一种数据预先提取方法,至少包含以下步骤。本发明的实施例提出一种数据预先提取方法,至少包含以下步骤。并行地分别从第一及第二载入/存储队列接收第一读取请求以及第二读取请求。并行地分别从上述第一及第二载入/存储队列取得第一读取请求的第一高速缓存线编号和第一偏移量及第二读取请求的第二高速缓存线编号和第二偏移量。从高速缓存线寄存器取得第三高速缓存线编号,以及从偏移量寄存器取得第三偏移量。依据第一至第三高速缓存线编号以及第一至第三偏移量,判断是否形成偏移量趋势。当形成偏移量趋势时,驱动第一级数据高速缓存器预先提取高速缓存线的数据。
本发明的实施例提出一种数据预先提取装置,至少包含第一及第二载入/存储队列、第一级数据高速缓存器以及检测器。检测器耦接于第一及第二载入/存储队列及第一级数据高速缓存器,并行地分别从第一及第二载入/存储队列接收第一读取请求以及第二读取请求;并行地分别取得第一读取请求的第一高速缓存线编号和第一偏移量及第二读取请求的第二高速缓存线编号和第二偏移量;从高速缓存线寄存器取得第三高速缓存线编号;从偏移量寄存器取得第三偏移量;依据第一至第三高速缓存线编号以及第一至第三偏移量,判断是否形成偏移量趋势;以及当形成偏移量趋势时,驱动第一级数据高速缓存器预先提取高速缓存线的数据。
本发明实施例的上述数据预先提取方法和装置每回合可以判断从二个载入/存储队列并行分派的读取请求是否与之前的读取请求形成偏移量上升或下降趋势,可实现同时跟踪两个载入/存储流水线上载入/存储读取请求地址的变化情况以指导预取操作,从而提升由第一级数据高速缓存器读取数据的命中率。
附图说明
图1是依据本发明实施例的超标量及管道化的微处理器的方块图。
图2是依据本发明实施例的预先提取控制器的系统方块图。
图3是依据本发明实施例的检测器的系统方块图。
图4是依据本发明实施例的数据预先提取的方法流程图。
【符号说明】
100 微处理器
110 指令高速缓存器;
120 指令解码器;
130 寄存器重命名表;
140 调度器;
141a、141b 载入/存储队列;
150 执行单元;
151a、151b 载入/存储执行单元;
153 其它执行单元;
160 预先提取控制器;
160_0、…、160_n 检测器;
170 第一级数据高速缓存器;
180 第二级数据高速缓存器;
190 总线接口;
210 选择控制器;
230 检测控制器;
250 多工器;
310 高速缓存线检测单元;
311 多工器;
313 高速缓存线寄存器;
315、317 比较器;
330 偏移量检测单元;
331 多工器;
333 偏移量寄存器;
335、337、339 比较器;
350 趋势检测单元;
351 数据更新逻辑;
353 预先提取触发逻辑;
Ctrl0、Ctrl1、Ctrl2 控制信号;
VA0、VA1 读取请求的载入地址;
VAx[47:6] 读取请求的高速缓存线编号;
VAx[5:0] 读取请求的高速缓存线上的偏移量;
M0、M1、T0、T1、T2 输出结果;
S410~S460 方法步骤。
具体实施方式
以下说明为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的发明内容必须参考之后的权利要求范围。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,用以表示存在特定的技术特征、数值、方法步骤、作业处理、元件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、元件、组件,或以上的任意组合。
在权利要求中使用如“第一”、“第二”、“第三”等词用来修饰权利要求中的元件,并非用来表示之间具有优先权顺序,先行关系,或者是一个元件先于另一个元件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的元件。
图1是依据本发明实施例的超标量(superscalar)及管道化(pipelined)的微处理器的方块图。微处理器100包含指令高速缓存器(instruction cache)110,用以缓存一种指令集架构(instruction set architecture)的宏指令(macro-instructions),例如x86指令集架构等。指令解码器(instruction decoder)120从指令高速缓存器110接收宏指令,并且将宏指令转译成微指令(micro-instructions)。寄存器重命名表(register aliastable)130依据微指令依赖关系以程序顺序传送微指令至调度器(scheduler)。调度器140,例如为一保留站(reservation station),分派(dispatch)微指令至多个执行单元150中的适当一个,其中包括载入/存储队列141a及141b,用以并行地分派读取请求(load request)至载入/存储执行单元151a及151b。除了载入/存储执行单元151a及151b外,执行单元150可包含一或多个其它执行单元153。其他执行单元153可为整数运算/逻辑单元(arithmetic/logic unit,ALU)、浮点数执行单元、分支单元(branch unit)、单指令多数据(single-instruction-multiple-data,SIMD)执行单元等。载入/存储执行单元151a及151b中的任何一个从第一级数据高速缓存器(level-1L1data cache)170读取数据及存储数据至第一级数据高速缓存器170。第二级数据高速缓存器(level-2L2data cache)180设置于第一级数据高速缓存器170及指令高速缓存器110之后。第二级数据高速缓存器180通过总线接口190从系统存储器读取数据,以及写入数据至系统存储器。总线接口190将微处理器100接上总线,例如,本地总线、存储器总线等。预先提取控制器160耦接于载入/存储执行单元151a及151b、第一级数据高速缓存器170、第二级数据高速缓存器180及总线接口190。预先提取控制器160可从第二级数据高速缓存器180预先提取数据至第一级数据高速缓存器170。预先提取控制器160包含多个检测器160_0至160_n,n为整数,可随着设计需求而改变。总的来说,检测器160_0至160_n中的每一个可完成以下功能:并行地分别从载入/存储队列(LD/ST,Load/Store queue)141a及141b接收第一读取请求以及第二读取请求;并行地分别取得第一读取请求的第一高速缓存线编号和第一偏移量以及第二读取请求的第二高速缓存线编号和第二偏移量;从高速缓存线寄存器取得第三高速缓存线编号;从偏移量寄存器取得第三偏移量;根据第一至第三高速缓存线编号以及第一至第三偏移量,判断是否形成偏移量趋势;以及当形成偏移量趋势时,驱动第一级数据高速缓存器170预先提取高速缓存线的数据。
图2是依据本发明实施例的预先提取控制器的系统方块图。检测器160_0至160_n中的每一个分别从载入/存储队列141a及141b取得读取请求的载入地址(loadaddresses),判断二个读取请求的载入地址中的每一个的高速缓存线编号(例如前述的第一高速缓存线编号和第二高速缓存线编号)是否相符于该检测器关联的高速缓存线(例如前述的第三高速缓存线编号),并且判断此二个读取请求的载入地址中的每一个的偏移量(例如前述的第一偏移量和第二偏移量)结合先前的读取请求的偏移量(例如前述的第三偏移量)是否形成一个偏移量上升或下降趋势。如果是,则发出控制信号给选择控制器210用以指示第一级数据高速缓存器170预先提取指定的高速缓存线的数据。预先提取控制器160还包含检测控制器230。检测控制器230监督检测器160_0至160_n的判断结果,并判断载入/存储队列141a发出的读取请求的载入地址的高速缓存线编号(例如前述的第一高速缓存线编号)是否与检测器160_0至160_n中的任何一个都不匹配(即都不相等)。如果是,检测控制器230根据最近最少使用(Least Recently Used,LRU)算法从检测器160_0至160_n中选择关联的高速缓存线编号最老(即,关联至最早进入的高速缓存线)的一个检测器,并指示选择的检测器管理此载入地址关联的高速缓存线,例如将该检测器对应的高速缓存线编号更新为当前时钟周期从载入/存储队列141a分派的读取请求的载入地址中的高速缓存线编号(例如前述的第一高速缓存线编号)。检测控制器230更判断载入/存储队列141b发出的读取请求的载入地址的高速缓存线编号(例如前述的第二高速缓存线编号)是否与检测器160_0至160_n中的任何一个都不匹配(即都不相等)。如果是,检测控制器230除了选择上述最高检测器,同时更选择关联的高速缓存线编号次老的一个检测器,并将该次老的检测器对应的高速缓存线编号更新为当前时钟周期从载入/存储队列141b分派的读取请求的载入地址中的高速缓存线编号(例如前述的第二高速缓存线编号)。
图3是依据本发明实施例的检测器的系统方块图。检测器160_0至160_n中的每一个包含高速缓存线检测单元(cacheline detection unit)310、偏移量检测单元(offsetdetection unit)330及趋势检测单元(trend detection unit)350。高速缓存线检测单元310及偏移量检测单元330从载入/存储队列141a及141b分别取得读取请求的载入地址VA0及VA1对应的高速缓存线编号及偏移量,并据以执行如后所述的判断。第一级数据高速缓存器170中的数据是按照高速缓存线的形式逐行存储的。通常,载入/存储队列141a及141b所分派的针对第一级数据高速缓存器170的读取请求所读取数据大小不超过一个高速缓存线大小。举例来说,载入地址VA0及VA1可以48比特表示,其中的第47至6比特[47:6]代表高速缓存线的编号,而第5至0比特[5:0]代表载入地址VA0及VA1于此高速缓存线(与各自的高速缓存线编号对应)中的地址偏移量。
在一实施例中,高速缓存线检测单元310包含以D型触发寄存器(Dflip-flopregister)实现的高速缓存线寄存器313,用以存储一个高速缓存线编号(cachelinenumber)。当高速缓存线寄存器313存储了高速缓存线编号时,代表此检测器处于有效状态(valid state),该存储的高速缓存线编号对应于第一个占据该检测器(在当前时钟周期之前)的读取请求的载入地址对应的高速缓存线,即代表之前有读取请求对应到该检测器。当高速缓存线寄存器313不存储任何值或存储空值时,代表此检测器处于无效状态(invalidstate)。不存储任何值或存储空值的高速缓存线寄存器313可称为空高速缓存线寄存器(empty cacheline register),代表之前尚未有读取请求占据该检测器。高速缓存线寄存器313也可设置于高速缓存线检测单元310之外,本发明并不因此受限。高速缓存线检测单元310设置比较器315及317,用以判断二个载入地址是否落入关联的高速缓存线。比较器315判断载入地址的高速缓存线编号VA0[47:6]是否等于高速缓存线寄存器313中的高速缓存线编号,并输出结果M0。如果相同,输出结果M0为1;如果不同,输出结果M0为0。比较器317判断载入地址的高速缓存线编号VA1[47:6]是否等于高速缓存线寄存器313中的高速缓存线编号,并输出结果M1。如果相同,输出结果M1为1;如果不同,输出结果M1为0。此外,检测控制器230监督所有检测器160_0至160_n的输出结果M0及M1。当所有检测器160_0至160_n的高速缓存线检测单元310的输出结果M0皆为0时,代表当前时钟周期从载入/存储队列141a分派的载入地址的高速缓存线编号都与所有有效的检测器所存储的高速缓存线编号都不相等,如果没有无效的检测器(即所有检测器都已经被占用),则检测控制器230从检测器160_0至160_n中选择关联至最早进入的高速缓存线(即所存储的高速缓存线编号最老)的一个检测器,发出控制信号Ctrl0至多工器(multiplexer)250,将载入/存储队列141a连接至选择的检测器的多工器311,用以传递载入地址的高速缓存线编号VA0[47:6]至选择的检测器的多工器311。同时,发出控制信号Ctrl1至选择的检测器的多工器311,将多工器250连接至选择的检测器的高速缓存线寄存器313,用以传递载入地址的高速缓存线编号VA0[47:6]至选择的检测器的高速缓存线寄存器313,使得高速缓存线寄存器313存储此载入地址的高速缓存线编号VA0[47:6],以将该检测器所对应的高速缓存线编号更新为当前从载入/存储队列141a分派的读取请求的载入地址对应的高速缓存线编号。当所有检测器160_0至160_n的高速缓存线检测单元310的输出结果M1皆为0时,代表当前时钟周期从载入/存储队列141b分派的载入地址的高速缓存线编号都与所有有效的检测器所存储的高速缓存线编号都不相等,如果没有无效的检测器(即所有检测器都已经被占用),则检测控制器230从检测器160_0至160_n中选择关联至最早进入的高速缓存线(即所存储的高速缓存线编号最老的高速缓存线,在一实施例中,如果同时当所有检测器160_0至160_n的输出结果M0同样也皆为0,则选择所存储的高速缓存线编号次老的高速缓存线)的一个检测器,发出控制信号Ctrl0至多工器250,将载入/存储队列141b连接至选择的检测器的多工器311,用以传递载入地址的高速缓存线编号VA1[47:6]至选择的检测器的多工器311。同时,发出控制信号Ctrl1至选择的检测器的多工器311,将多工器250连接至选择的检测器的高速缓存线寄存器313,用以传递载入地址的高速缓存线编号VA1[47:6]至选择的检测器的高速缓存线寄存器313,使得高速缓存线寄存器313存储此载入地址的高速缓存线编号VA1[47:6],以将该检测器所对应的高速缓存线编号更新为当前从载入/存储队列141b分派的读取请求的载入地址对应的高速缓存线编号。
偏移量检测单元330包含以一D型触发寄存器实现的偏移量寄存器333,用以存储一个偏移量。偏移量寄存器333也可设置于偏移量检测单元330之外,本发明并不因此受限。偏移量检测单元330设置比较器335、337及339。比较器335比较从载入/存储队列141a分派的读取请求的载入地址VA0的偏移量VA0[5:0]及偏移量寄存器333中的偏移量,并输出结果T0。如果大于,输出结果T0为1;如果小于或等于,输出结果T0为0。比较器337比较从载入/存储队列141b分派的读取请求的载入地址VA1的偏移量VA1[5:0]及偏移量寄存器333中的偏移量,并输出结果T1。如果大于,输出结果T1为1;如果小于或等于,输出结果T1为0。比较器339比较载入地址VA0的偏移量VA0[5:0]及载入地址VA1的偏移量VA1[5:0],并输出结果T2。如果大于,输出结果T2为1;如果小于,输出结果T2为0。此外,每一个趋势检测单元350的数据更新逻辑351监督输出结果M0、M1、T0、T1及T2。当输出结果M0为1及M1为0时,数据更新逻辑351发出控制信号Ctrl0至多工器250,将载入/存储队列141a连接至多工器331,用以传递载入地址VA0的偏移量VA0[5:0]至多工器331。同时,发出控制信号Ctrl2至多工器331,将多工器250连接至偏移量寄存器333,用以传递载入地址VA0的偏移量VA0[5:0]至偏移量寄存器333,使得偏移量寄存器333存储此载入地址VA0的偏移量VA0[5:0],即将该检测器所对应的前述第三偏移量更新为当前时钟周期从载入/存储队列141a分派的读取请求的偏移量(例如前述第一偏移量)。当输出结果M0为0及M1为1时,数据更新逻辑351发出控制信号Ctrl0至多工器250,将载入/存储队列141b连接至多工器331,用以传递载入地址VA1的偏移量VA1[5:0]至多工器331。同时,发出控制信号Ctrl2至多工器331,将多工器250连接至偏移量寄存器333,用以传递载入地址VA1的偏移量VA1[5:0]至偏移量寄存器333,使得偏移量寄存器333存储载入地址VA1的偏移量VA1[5:0],即将该检测器所对应的前述第三偏移量更新为当前时钟周期从载入/存储队列141b分派的读取请求的偏移量(例如前述第二偏移量)。当输出结果M0为1、M1为1、T0及T1皆为1且T2为1时,即构成偏移量上升趋势且前述载入地址VA0的偏移量最大,则数据更新逻辑351分别发出控制信号Ctrl0及Ctrl1至多工器250及331,使得偏移量寄存器333存储此载入地址VA0的偏移量VA0[5:0]作为前述第三偏移量。当输出结果M0为1、M1为1、T0及T1皆为1且T2为0时,即构成偏移量上升趋势且前述载入地址VA1的偏移量最大,则数据更新逻辑351分别发出控制信号Ctrl0及Ctrl1至多工器250及331,使得偏移量寄存器333存储载入地址VA1的偏移量VA1[5:0]作为前述第三偏移量。当输出结果M0为1、M1为1、T0及T1皆为0且T2为1时,即构成偏移量下降趋势且前述载入地址VA1的偏移量最小,则数据更新逻辑351分别发出控制信号Ctrl0及Ctrl1至多工器250及331,使得偏移量寄存器333存储此载入地址VA1的偏移量VA1[5:0]作为前述第三偏移量。当输出结果M0为1、M1为1、T0及T1皆为0且T2为0时,即构成偏移量下降趋势且前述载入地址VA0的偏移量最小,则数据更新逻辑351分别发出控制信号Ctrl0及Ctrl1至多工器250及331,使得偏移量寄存器333存储载入地址的偏移量VA0[5:0]作为前述第三偏移量。在其它实施例中,各检测器还包括另一偏移量寄存器(图未示出)用以存储第四偏移量,该第四偏移量为构成偏移量上升趋势时载入地址VA1和VA0中偏移量较小者,或者构成偏移量下降趋势时载入地址VA1和VA0中偏移量较大者,其作用后面会详述。
在另一些实施例中,偏移量寄存器333可根据从载入/存储队列141a和141b分派的读取请求的重排序缓存器(ROB,ReOrder Buffer)索引,代表读取请求的先后顺序,数值越大代表较晚的读取请求。比较器335、337及339可从载入/存储队列141a及141b取得读取请求的ROB索引,然后根据ROB索引的大小决定同一时钟周期分派的两个读取请求的先后顺序,ROB索引较大者的载入地址作为VA0,ROB索引较小者的载入地址作为VA1,再进行如上所述的比较,用以产生输出结果T0至T2。也就是说,重排序缓存器索引或其他具有类似意义的值表征了同一时钟周期同时分派的两个读取请求的先后顺序,顺序上较晚者的载入地址作为VA0,顺序上较早者的载入地址作为VA1,再进行上述比较以判断当前时钟周期的两个读取请求与之前的读取请求的偏移量是否构成偏移量的上升或下降趋势。在其它实施例中,同一时钟周期同时分派的两个读取请求无需区分先后顺序。
每一个趋势检测单元350的数据更新逻辑(data refresh logic)351还包含两个趋势计数器(counters)。上升趋势计数器指示检测到偏移量上升趋势的次数;下降趋势计数器指示检测到偏移量下降趋势的次数。上升和下降趋势计数器可设置于数据更新逻辑351之外,本发明并不因此受限。数据更新逻辑351另依据高速缓存线检测单元310的输出结果M0及M1、偏移量检测单元330的输出结果T0及T1更新两个趋势计数器。数据更新逻辑351可根据表1的范例案例来更新两个趋势计数器。趋势检测单元350可包含非易失性存储器,例如静态存储器(SRAM,Static Random Access Memory)、快闪存储器(flash memory)等,用以存储表1的内容。
表1
案例 M0 M1 T0 T1 趋势计数器 更新前计数 更新后计数
1 1 0 1 - 上升 i i+1
2 0 1 - 1 上升 i i+1
3 1 0 0 - 下降 i i+1
4 0 1 - 0 下降 i i+1
5 1 1 0 1
6 1 1 1 0
7 1 1 1 1 上升 i i+2
8 1 1 0 0 下降 i i+2
第2至7栏为输入参数,第8栏为输出结果。第2栏至5栏分别记录输出结果M0、M1、T0及T1。第6栏记录所更新的趋势寄存器,第7和第8栏记录更新前后计数器的值。输出结果“T0”或“T1”字段中的符号“-”代表不需要考虑的状态。数据更新逻辑351藉由分别比对第2至6栏的高速缓存线检测单元310的输出结果M0及M1及偏移量检测单元330的输出结果T0及T1来找出适当的案例,并依据找到案例的中第6至8栏的趋势计数器来更新趋势计数器的值。”更新后计数(i)”字段中的“i+1”或“i+2”用来指示数据更新逻辑351将趋势计数器中的值加1或加2。值得注意的是,表1所示的更新趋势计数器的规则仅为示例,本发明不限于此。
每一个趋势检测单元350的预先提取触发逻辑353读取趋势计数器的内容,并据以决定是否触发预先提取。详细来说,当检测到上升趋势计数器的值达到预定的阈值(threshold,例如3)时,发出控制信号给选择控制器210,用以驱动第一级数据高速缓存器170预先提取下一个高速缓存线的数据。以上情况可称为形成偏移量上升趋势。当检测到的下降趋势计数器的值达到预定的阈值(threshold,例如3)时,发出控制信号给选择控制器210,用以驱动第一级数据高速缓存器170预先提取上一个高速缓存线的数据。举例来说,若高速缓存线寄存器313中的高速缓存线编号为10,则下一个高速缓存线的编号为11,上一个高速缓存线的编号为9。
上述实施例并不严格限制读取请求的偏移量呈连续上升或连续下降趋势,因此须检测4笔及以上读取请求以确定偏移量趋势。在其它实施例中,可以直接检测连续3笔读取请求的偏移量,在此种实施例中,该检测器160所存储的第三偏移量是在当前时钟周期的前一时钟周期从载入/存储队列141a或载入/存储队列141b的读取请求的偏移量:当趋势检测单元350判定高速缓存线检测单元310的输出结果M0及M1皆为1(即前述的第一高速缓存线编号及第二高速缓存线编号皆命中该检测器160存储的第三高速缓存线编号),并且偏移量检测单元330的输出结果T0及T1皆为1,T2输出结果为0或1(即前述的第一及第二偏移量不相等且皆大于该检测器160所存储的第三偏移量),则趋势检测单元350判定形成偏移量上升趋势。当趋势检测单元350判定高速缓存线检测单元310的输出结果M0及M1皆为1(即前述的第一高速缓存线编号及第二高速缓存线编号皆命中该检测器160存储的第三高速缓存线编号),并且偏移量检测单元330的输出结果T0及T1皆为0,T2输出结果为0或1(即前述的第一及第二偏移量不相等且皆小于该检测器160所存储的第三偏移量),则趋势检测单元350判定形成偏移量下降趋势。
在前述同时记录2笔在前读取请求的偏移量(如前述的第三和第四偏移量)的实施例中,如果当前时钟周期分派的2个读取请求的偏移量较小者大于该检测器所存储的第三和第四偏移量中较大者,则趋势检测单元350判定形成偏移量上升趋势;当前时钟周期分派的2个读取请求的偏移量较大者小于该检测器所存储的第三和第四偏移量中较小者,则趋势检测单元350判定形成偏移量上升趋势。
图4是依据本发明实施例的数据预先提取的方法流程图。在一段预定时间后,并行地分别从载入/存储队列141a及载入/存储队列141b接收第一读取请求以及第二读取请求(步骤S410),并行地分别取得第一读取请求的第一高速缓存线编号和第一偏移量以及第二读取请求的第二高速缓存线编号和第二偏移量(步骤S420)。从高速缓存线寄存器取得第三高速缓存线编号(步骤S430),并且从偏移量寄存器取得第三偏移量(步骤S440)。依据第一至第三高速缓存线编号以及第一至第三偏移量,判断是否形成偏移量趋势(步骤S450)。步骤S450的技术细节,可参考数据更新逻辑351及预先提取触发逻辑353的内容。若是,则驱动第一级数据高速缓存器170预先提取一高速缓存线的数据(步骤S460)。否则,忽略此二个读取请求。
在步骤S450,当第一高速缓存线编号及第二高速缓存线编号皆等于第三高速缓存线编号,并且第一及第二偏移量不相等且皆大于第三偏移量,则判断形成偏移量上升趋势。当第一高速缓存线编号及第二高速缓存线编号皆等于第三高速缓存线编号,并且第一及第二偏移量不相等且皆小于第三偏移量则判断形成偏移量下降趋势。在另一实施例中,在步骤S450,当第一高速缓存线编号等于第三高速缓存线编号,且第一偏移量大于第三偏移量,则前述上升趋势计数器的值加1;当第二高速缓存线编号等于第三高速缓存线编号,且第二偏移量大于第三偏移量,则前述下降趋势计数器的值加1;如果上升趋势计数器的值大于阈值,则判断形成偏移量上升趋势;当第一高速缓存线编号等于第三高速缓存线编号,且第一偏移量小于第三偏移量,则前述下降趋势计数器的值加1;当第二高速缓存线编号等于第三高速缓存线编号,且第二偏移量小于第三偏移量,则下降趋势计数器的值加1;如果下降趋势计数器的值大于阈值,则判断形成偏移量下降趋势。
在步骤S460,当形成偏移量上升趋势时,驱动第一级数据高速缓存器170预先提取下一高速缓存线的数据。当形成偏移量下降趋势时,驱动第一级数据高速缓存器170预先提取上一高速缓存线的数据。
以下举出数个情境来说明预先提取控制器160的运作。假设检测器160_0至160_n皆初始成无效状态:
在第一个情境中,检测器160_0在第一时间点分别从载入/存储队列141a及载入/存储队列141b并行地接收两个读取请求的载入地址A/3及A/7,以及在第二时间点分别从载入/存储队列141a及载入/存储队列141b并行地接收两个读取请求的载入地址A/4及A/5,其中,斜线前的英文字母代表高速缓存线编号,斜线后的数字代表偏移量。在第二时间点,由于此时取得的载入地址与上一时间点得到的载入地址不形成任何偏移量趋势,不触发预先提取。
在第二个情境中,检测器160_0在第一时间点分别从载入/存储队列141a及载入/存储队列141b并行地接收两个读取请求的载入地址A/3及A/4,以及在第二时间点分别从载入/存储队列141a及载入/存储队列141b并行地接收两个读取请求的载入地址A/6及A/5。在第二时间点,由于此时取得的载入地址与上一时间点得到的载入地址形成偏移量上升趋势,发出控制信号给选择控制器210用以指示第一级数据高速缓存器170预先提取编号为(A+1)的高速缓存线的数据。
在第三个情境中,检测器160_0在第一时间点分别从载入/存储队列141a及载入/存储队列141b并行地接收两个读取请求的载入地址A/5及A/6,以及在第二时间点分别从载入/存储队列141a及载入/存储队列141b并行地接收两个读取请求的载入地址A/3及A/4。在第二时间点,由于此时取得的载入地址与上一时间点得到的载入地址形成偏移量下降趋势,发出控制信号给选择控制器210用以指示第一级数据高速缓存器170预先提取编号为(A-1)的高速缓存线的数据。
从第二及第三个情境可以理解,由于本发明实施例每回合可以判断从二个载入/存储队列并行分派的读取请求是否与之前的读取请求形成偏移量上升或下降趋势,可实现同时跟踪两个载入/存储流水线上载入/存储读取请求地址的变化情况以指导预取操作,从而提升由第一级数据高速缓存器170读取数据的命中率。
虽然图1至3中包含了以上描述的元件,但不排除在不违反发明的精神下,使用更多其他的附加元件,已达成更佳的技术效果。此外,虽然图4的处理步骤采用特定的顺序来执行,但是在不违反发明精神的情况下,本领域技术人员可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。
虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用以限缩本发明。相反地,此发明涵盖了本领域技术人员显而易见的修改与相似设置。所以,申请权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。

Claims (20)

1.一种数据预先提取方法,包含:
并行地分别从第一载入/存储队列及第二载入/存储队列接收第一读取请求以及第二读取请求;
并行地分别取得上述第一读取请求的第一高速缓存线编号和第一偏移量以及上述第二读取请求的第二高速缓存线编号和第二偏移量;
从高速缓存线寄存器取得第三高速缓存线编号;
从偏移量寄存器取得第三偏移量;
依据上述第一至第三高速缓存线编号以及上述第一至第三偏移量,判断是否形成偏移量趋势;以及
当形成上述偏移量趋势时,驱动第一级数据高速缓存器预先提取高速缓存线的数据。
2.如权利要求1所述的数据预先提取方法,其中,上述第一读取请求用来读取第一载入地址的数据,上述第二读取请求用来读取第二载入地址的数据,上述第一载入地址包含上述第一高速缓存线编号,以及上述第二载入地址包含上述第二高速缓存线编号。
3.如权利要求1所述的数据预先提取方法,其中,上述第一读取请求用来读取第一载入地址的数据,上述第二读取请求用来读取第二载入地址的数据,上述第一偏移量为上述第一载入地址于上述第一高速缓存线编号对应的第一高速缓存线中的地址偏移量,其中上述第二偏移量为上述第二载入地址在上述第二高速缓存线编号对应的第二高速缓存线中的地址偏移量。
4.如权利要求1所述的数据预先提取方法,其中,上述第一与第二读取请求在当前时钟周期分别从上述第一与第二载入/存储队列被分派,且上述第三偏移量对应于在该当前时钟周期之前的时钟周期从上述第一或第二载入/存储队列被分派的第三读取请求。
5.如权利要求1所述的数据预先提取方法,其中,上述第一读取请求的第一重排序缓存器索引大于上述第二读取请求的第二重排序缓存器索引。
6.如权利要求1所述的数据预先提取方法,其中,在依据上述第一至第三高速缓存线编号以及上述第一至第三偏移量,判断是否形成偏移量趋势的步骤,还包含:
当上述第一高速缓存线编号及上述第二高速缓存线编号皆等于上述第三高速缓存线编号,并且上述第一及第二偏移量不相等且皆大于上述第三偏移量,则判断形成偏移量上升趋势;
当上述第一高速缓存线编号及上述第二高速缓存线编号皆等于上述第三高速缓存线编号,并且上述第一及第二偏移量不相等且皆小于上述第三偏移量,则判断形成偏移量下降趋势。
7.如权利要求6所述的数据预先提取方法,其中,在当形成上述偏移量趋势时,驱动第一级数据高速缓存器预先提取高速缓存线的数据的步骤,还包含:
当形成上述偏移量上升趋势时,驱动上述第一级数据高速缓存器预先提取下高速缓存线的数据;以及
当形成上述偏移量下降趋势时,驱动上述第一级数据高速缓存器预先提取上高速缓存线的数据。
8.如权利要求1所述的数据预先提取方法,其中,在依据上述第一至第三高速缓存线编号以及上述第一至第三偏移量,判断是否形成偏移量趋势的步骤,还包含:
当上述第一高速缓存线编号等于上述第三高速缓存线编号,且上述第一偏移量大于上述第三偏移量,则第一趋势计数器的值加1;
当上述第二高速缓存线编号等于上述第三高速缓存线编号,且上述第二偏移量大于上述第三偏移量,则上述第一趋势计数器的值加1;
如果上述第一趋势计数器的值大于第一阈值,则判断形成偏移量上升趋势;
当上述第一高速缓存线编号等于上述第三高速缓存线编号,且上述第一偏移量小于上述第三偏移量,则第二趋势计数器的值加1;
当上述第二高速缓存线编号等于上述第三高速缓存线编号,且上述第二偏移量小于上述第三偏移量,则上述第二趋势计数器的值加1;以及
如果上述第二趋势计数器的值大于第二阈值,则判断形成偏移量下降趋势。
9.一种数据预先提取装置,包含:
第一载入/存储队列;
第二载入/存储队列;
第一级数据高速缓存器;以及
检测器,耦接于上述第一载入/存储队列、上述第二载入/存储队列及上述第一级数据高速缓存器,并行地分别从上述第一载入/存储队列及上述第二载入/存储队列接收第一读取请求以及第二读取请求;并行地分别取得上述第一读取请求的第一高速缓存线编号和第一偏移量以及上述第二读取请求的第二高速缓存线编号和第二偏移量;从高速缓存线寄存器取得第三高速缓存线编号;从偏移量寄存器取得第三偏移量;依据上述第一至第三高速缓存线编号以及上述第一至第三偏移量,判断是否形成偏移量趋势;以及当形成上述偏移量趋势时,驱动上述第一级数据高速缓存器预先提取高速缓存线的数据。
10.如权利要求9所述的数据预先提取装置,其中,当上述第一高速缓存线编号及上述第二高速缓存线编号皆等于上述第三高速缓存线编号,并且上述第一及第二偏移量不相等且皆大于上述第三偏移量,则上述检测器判断形成偏移量上升趋势;当上述第一高速缓存线编号及上述第二高速缓存线编号皆等于上述第三高速缓存线编号,并且上述第一及第二偏移量不相等且皆小于上述第三偏移量,则上述检测器判断形成偏移量下降趋势。
11.如权利要求10所述的数据预先提取装置,其中,当形成上述偏移量上升趋势时,上述检测器驱动上述第一级数据高速缓存器预先提取下高速缓存线的数据;以及当形成上述偏移量下降趋势时,上述检测器驱动上述第一级数据高速缓存器预先提取上高速缓存线的数据。
12.如权利要求9所述的数据预先提取装置,其中上述检测器,包含:
高速缓存线检测单元,耦接至上述第一载入/存储队列及上述第二载入/存储队列,用以判断上述第一高速缓存线编号及上述第二高速缓存线编号是否等于上述第三高速缓存线编号;
偏移量检测单元,耦接至上述第一载入/存储队列及上述第二载入/存储队列,用以判断上述第一偏移量是否大于上述第三偏移量,以及判断上述第二偏移量是否大于上述第三偏移量;以及
趋势检测单元,耦接至上述高速缓存线检测单元及上述偏移量检测单元,依据上述高速缓存线检测单元及上述偏移量检测单元的判断结果判断是否形成偏移量趋势,以及当形成上述偏移量趋势时,驱动上述第一级数据高速缓存器预先提取上述高速缓存线的数据。
13.如权利要求12所述的数据预先提取装置,其中当上述高速缓存线检测单元判定上述第一高速缓存线编号及上述第二高速缓存线编号皆相等于上述第三高速缓存线编号,并且上述偏移量检测单元判定上述第一及第二偏移量不相等且皆大于上述第三偏移量,则上述趋势检测单元判定形成上述偏移量趋势。
14.如权利要求12所述的数据预先提取装置,其中当上述高速缓存线检测单元判定上述第一高速缓存线编号及上述第二高速缓存线编号皆相等于上述第三高速缓存线编号,并且上述偏移量检测单元判定上述第一及第二偏移量不相等皆小于上述第三偏移量,则上述趋势检测单元判定形成上述偏移量趋势。
15.如权利要求12所述的数据预先提取装置,其中,上述趋势检测单元还包含:
数据更新逻辑,耦接至上述高速缓存线检测单元及上述偏移量检测单元,用以依据上述高速缓存线检测单元及上述偏移量检测单元的判断结果判断是否形成上述偏移量趋势;以及
预先提取触发逻辑,耦接至上述数据更新逻辑,用以当形成上述偏移量趋势时,驱动上述第一级数据高速缓存器预先提取上述高速缓存线的数据。
16.如权利要求15所述的数据预先提取装置,其中,上述数据更新逻辑还包含第一趋势计数器,当上述第一高速缓存线编号等于上述第三高速缓存线编号,且上述第一偏移量大于上述第三偏移量时,上述第一趋势计数器的值加1;当上述第二高速缓存线编号等于上述第三高速缓存线编号,且上述第二偏移量大于上述第三偏移量时,上述第一趋势计数器的值加1;当上述第一趋势计数器的值大于第一阈值时,上述趋势检测单元判断形成偏移量上升趋势;并且当形成上述偏移量上升趋势时,上述预先提取触发逻辑驱动上述第一级数据高速缓存器预先提取下高速缓存线的数据。
17.如权利要求15所述的数据预先提取装置,其中,上述数据更新逻辑还包含第二趋势计数器,当上述第一高速缓存线编号等于上述第三高速缓存线编号,且上述第一偏移量小于上述第三偏移量时,上述第二趋势计数器的值加1;当上述第二高速缓存线编号等于上述第三高速缓存线编号,且上述第二偏移量小于上述第三偏移量时,上述第二趋势计数器的值加1;当上述第二趋势计数器的值大于第二阈值时,上述趋势检测单元判断形成偏移量下降趋势;并且当形成上述偏移量下降趋势时,上述预先提取触发逻辑驱动上述第一级数据高速缓存器预先提取上高速缓存线的数据。
18.如权利要求9所述的数据预先提取装置,其中,上述数据预先提取装置包括多个上述检测器,不同的上述检测器对应不同的上述第三高速缓存线编号。
19.如权利要求18所述的数据预先提取装置还包括检测控制器,其中当上述第一高速缓存线编号或上述第二高速缓存线编号与所有上述检测器的上述第三高速缓存线编号都不相等,则上述检测控制器选择对应的上述第三高速缓存线编号最老的一个检测器,并且将选择的该检测器上述对应的上述第三高速缓存线编号更新为上述第一高速缓存线编号或上述第二高速缓存线编号。
20.如权利要求9所述的数据预先提取装置,其中,上述检测器从另一偏移量寄存器取得第四偏移量,且上述第三偏移量与上述第四偏移量对应于在该当前时钟周期之前的时钟周期分别从上述第一和第二载入/存储队列被调度的高速缓存线编号相同的读取请求。
CN201610952199.7A 2016-10-27 2016-10-27 数据预先提取方法及使用此方法的装置 Active CN106528450B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201610952199.7A CN106528450B (zh) 2016-10-27 2016-10-27 数据预先提取方法及使用此方法的装置
US15/367,302 US9996469B2 (en) 2016-10-27 2016-12-02 Methods for prefetching data and apparatuses using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610952199.7A CN106528450B (zh) 2016-10-27 2016-10-27 数据预先提取方法及使用此方法的装置

Publications (2)

Publication Number Publication Date
CN106528450A true CN106528450A (zh) 2017-03-22
CN106528450B CN106528450B (zh) 2019-09-17

Family

ID=58325263

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610952199.7A Active CN106528450B (zh) 2016-10-27 2016-10-27 数据预先提取方法及使用此方法的装置

Country Status (2)

Country Link
US (1) US9996469B2 (zh)
CN (1) CN106528450B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112256599A (zh) * 2019-07-22 2021-01-22 华为技术有限公司 一种数据预取方法、装置及存储设备

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10866902B2 (en) * 2016-12-28 2020-12-15 Intel Corporation Memory aware reordered source
US11288199B2 (en) 2019-02-28 2022-03-29 Micron Technology, Inc. Separate read-only cache and write-read cache in a memory sub-system
US10908821B2 (en) * 2019-02-28 2021-02-02 Micron Technology, Inc. Use of outstanding command queues for separate read-only cache and write-read cache in a memory sub-system
US11106609B2 (en) 2019-02-28 2021-08-31 Micron Technology, Inc. Priority scheduling in queues to access cache data in a memory sub-system
US10970222B2 (en) 2019-02-28 2021-04-06 Micron Technology, Inc. Eviction of a cache line based on a modification of a sector of the cache line
US11204875B1 (en) * 2020-07-17 2021-12-21 International Business Machines Corporation Software assisted data address prefetch
CN113778520B (zh) * 2021-09-09 2022-09-30 海光信息技术股份有限公司 偏移预取方法、执行偏移预取的装置、计算设备和介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050071151A1 (en) * 2003-09-30 2005-03-31 Ali-Reza Adl-Tabatabai Compression-decompression mechanism
CN1619511A (zh) * 2004-01-16 2005-05-25 智慧第一公司 执行快速推测式加载运算的微处理器及装置
US20080010433A1 (en) * 2005-02-11 2008-01-10 Fluhr Eric J Method and apparatus for efficiently accessing both aligned and unaligned data from a memory
CN103238133A (zh) * 2010-12-08 2013-08-07 国际商业机器公司 用于多地址矢量载入的矢量收集缓冲器
CN104657110A (zh) * 2005-07-29 2015-05-27 高通股份有限公司 具有固定数量的可变长度指令的指令高速缓存器

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6643743B1 (en) * 2000-03-31 2003-11-04 Intel Corporation Stream-down prefetching cache
US7380066B2 (en) * 2005-02-10 2008-05-27 International Business Machines Corporation Store stream prefetching in a microprocessor
US10248569B2 (en) * 2016-08-11 2019-04-02 Futurewei Technologies, Inc. Pattern based preload engine
US20180052779A1 (en) * 2016-08-19 2018-02-22 Advanced Micro Devices, Inc. Data cache region prefetcher

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050071151A1 (en) * 2003-09-30 2005-03-31 Ali-Reza Adl-Tabatabai Compression-decompression mechanism
CN1619511A (zh) * 2004-01-16 2005-05-25 智慧第一公司 执行快速推测式加载运算的微处理器及装置
US20080010433A1 (en) * 2005-02-11 2008-01-10 Fluhr Eric J Method and apparatus for efficiently accessing both aligned and unaligned data from a memory
CN104657110A (zh) * 2005-07-29 2015-05-27 高通股份有限公司 具有固定数量的可变长度指令的指令高速缓存器
CN103238133A (zh) * 2010-12-08 2013-08-07 国际商业机器公司 用于多地址矢量载入的矢量收集缓冲器

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112256599A (zh) * 2019-07-22 2021-01-22 华为技术有限公司 一种数据预取方法、装置及存储设备

Also Published As

Publication number Publication date
CN106528450B (zh) 2019-09-17
US9996469B2 (en) 2018-06-12
US20180121360A1 (en) 2018-05-03

Similar Documents

Publication Publication Date Title
CN106528450A (zh) 数据预先提取方法及使用此方法的装置
CN105701030B (zh) 根据卷标比特的动态高速缓存置换路选择
US10698833B2 (en) Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
CN105701022B (zh) 组相联高速缓存
US6393536B1 (en) Load/store unit employing last-in-buffer indication for rapid load-hit-store
CN103699362B (zh) 微处理器及其执行的方法
CN102169429B (zh) 预取单元、数据预取方法以及微处理器
CN104267928B (zh) 微处理器及用于微处理器的动态重设方法
US9223705B2 (en) Cache access arbitration for prefetch requests
US20130290971A1 (en) Scheduling Thread Execution Based on Thread Affinity
WO2005119429B1 (en) Multiple branch predictions
CN107851017B (zh) 用于传输多个数据结构的设备和方法
US20130297912A1 (en) Apparatus and method for dynamic allocation of execution queues
WO2003017091A1 (en) Branch prediction device with two levels of branch prediction cache
CN102112966A (zh) 用于推测式中断向量预取的设备及方法
US20140304492A1 (en) Method and apparatus to increase the speed of the load access and data return speed path using early lower address bits
CN105701034A (zh) 基于内存访问类型以分路来分配的快取内存
CN109643237A (zh) 分支目标缓冲器压缩
US8103833B2 (en) Cache memory and a method for servicing access requests
KR101109210B1 (ko) 데이터 액세스 위반을 검출하기 위한 방법 및 장치
CN105849705A (zh) 用于检测暂停的逻辑分析器
CN114840258B (zh) 一种多层级混合算法过滤式分支预测方法及预测系统
US10379865B1 (en) Selection of instructions to be issued
CN105980979A (zh) 用于检测暂停的逻辑分析器
CN111954865B (zh) 用于预提取数据项的装置和方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203

Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd.

Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203

Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd.