CN1287311A - 一种用组预测来降低在组相关高速缓存器中的执行时间的方法及设备 - Google Patents

一种用组预测来降低在组相关高速缓存器中的执行时间的方法及设备 Download PDF

Info

Publication number
CN1287311A
CN1287311A CN99126911A CN99126911A CN1287311A CN 1287311 A CN1287311 A CN 1287311A CN 99126911 A CN99126911 A CN 99126911A CN 99126911 A CN99126911 A CN 99126911A CN 1287311 A CN1287311 A CN 1287311A
Authority
CN
China
Prior art keywords
group
cache
selection information
data
array
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
CN99126911A
Other languages
English (en)
Other versions
CN1296827C (zh
Inventor
M·J·查尼
P·G·伊玛
D·A·普雷纳
T·R·普扎克
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1287311A publication Critical patent/CN1287311A/zh
Application granted granted Critical
Publication of CN1296827C publication Critical patent/CN1296827C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • 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/1028Power efficiency
    • 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/608Details relating to cache mapping
    • G06F2212/6082Way prediction in set-associative cache
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

一种存储并利用组预测信息的方法及设备,通过访问组相关存储器的有关组,来提高组相关存储器的性能,降低电源消耗,组预测信息存储于不同的单元,包括分支目标缓冲器,指令高速缓存器及操作数历史表,从而降低访问组相关指令和数据高速缓存器的执行时间。

Description

一种用组预测来降低在组相关高速缓存器 中的执行时间的方法及设备
发明背景
1.技术领域
本发明涉及计算机存储器系统;特别是一种降低在组相关高速缓存器中的访问执行时间的方法及设备。
2.相关领域介绍
高速缓存器通常为体积小,位于中央处理单元(CPU)及主存储器之间的高速缓冲器。高速缓存器用于临时保持那些认为正在使用的主存储器的内容。关于何时替换高速缓存器的内容的判定一般建立在至少最近被使用的(LRU)算法基础上。LRU算法导致高速缓存器存储器单元被替换为最近被使用的主存储器的内容。高速缓存器存储器中的信息比主存储器中的信息能在相当少的时间内被访问。这样,CPU浪费较少的时间等候高速缓存器中被读取和/或者储存的指令和/或者操作数。
直接映象高速缓存器将主存储器中的任何特别的单元的内容的存储限定在高速缓存器的特定的单元。相反,M-分路(M-way)组相关高速缓存器将每个主存储器单元的内容映象到高速缓存器中的任何M单元。基本上,M-分路组相关高速缓存器是相同的直接映象的高速缓存器M的组合。然而,访问及从M-分路组相关高速缓存器中检索则更为复杂。在每个存储器访问M-分路组相关高速缓存器的过程中,相同的直接映象的高速缓存器M的每个组合必须被搜索,并且如果存在匹配,则适当的数据被选择且多路转换到输出。如果发生错误,则必须在可能的高速缓存器行M之间作出选择,从而决定哪一个高速缓存器行必须被删除并用最近被使用的主存储器的内容重写。
图1示意一种在先技术的虚拟标记的4-分路组相关高速缓存器,包括高速缓存器目录10,高速缓存器数12,路径多路转换14以及队列多路转换16。高速缓存器目录10包括给高速缓存器阵列12中的每个对应的单元的虚拟地址。高速缓存器阵列12存储由高速缓存器目录10中对应的单元或块指向的主存储器单元的内容。组被定义为高速缓存器阵列12中的列及高速缓存器目录10中对应的列。同余类被定义为高速缓存器阵列12中的行及高速缓存器目录10中对应的行。块或者单元被定义为特别的组(列)及特别的同余类(行)的交叉。单元或者块包括一个或者多个数据字节。
提供给高速缓存器存储器的地址18包括目录标记20,同余类22及块位移24。目录标记20一般通过路径多路转换14选择高速缓存器目录10中的要求的组(列)。同余类标记22用于选择高速缓存器目录10及高速缓存器阵列12两者之中要求的同余类(行)。块位移24用于在要求的块或者单元以内选择要求的字节。路径多路转换14的输出用于通过阵列多路转换16选取高速缓存器阵列12要求的组(列)。
访问相关高速缓存器时的执行时间比访问直接映象的高速缓存器时的执行时间更长,这是由于需要比较地址与跨越高速缓存器目录10的多个组中储存的标记。如果匹配发生,则与匹配标记相关的组从对应的高速缓存器阵列12的组中选取输出。高速缓存器阵列12的输出被最后发送到寄存器及功能单元。所谓的“最后选取问题”是指在可以选择适当的高速缓存器阵列的组12之前,需要对地址进行高速缓存器目录10查询及可能的地址转换(如果使用物理-标记的高速缓存器)。这样,最后选取问题不利地影响在组相关高速缓存器中的执行时间。
因此,如果组选择信息在搜索高速缓存器目录及转换地址之前能被利用,则极为有利。关于高速缓存器的其他详细资料可在下列参考文件中找到,这里仅作参考:
1.U.S.Pat.No.5,634,119 to Emma et al.
2.Chang,Sheldon S.L.Electrical and Computer EngineeringⅢ(1983)。
3.Smith,Allan J.Cache Memories-ACM Computing SurveysVol.14(1982)。
4.Cekleov M.and Dubois M.Virtual-Address-IEEEMicro(1997)。
发明简介
根据本发明说明的实施例,提供一种降低组相关高速缓存器中的访问执行时间的方法,其中数据可从通过至少一个选择高速缓存器选择的存储器的单元读取,该方法包括以下列步骤:产生组选择信息,并将组选择信息储存于某个单元,此单元能使组选择信息在被选择的高速缓存器中的存储器选择信息到达之前可以从存储器中检索数据。
一种降低在组相关高速缓存器中的访问执行时间的设备,包括存储组选择信息的存储器,接收地址及输出由该地址确定的数据的M-组的M-分路组相关高速缓存器,及多路转换组选择信息及组相关地址之一的多路转换器,其中所述的组选择信息可在所述的组相关地址之前访问所述的数据。
一种降低组相关高速缓存器的电源消耗的设备,包括组选择存储器,以存储组选择信息;M-分路组相关高速缓存器包括阵列及路径,该路径输出地址的组相关标记部分给阵列;以及多路转换器,用来多路转换路径中的地址的标记部分和组选择信息之一,以输出一个数据的M组中的一个。
还根据本发明,提供一种使用数据地址提高组相关存储器的访问速度的方法。该地址包含位移部分,同余类索引,及标记部分。组相关存储器包括阵列及目录。阵列存储数据,并被分区成多个阵列同余类。阵列同余类被分区成阵列组。阵列组包括高速缓存器行。高速缓存器行包括多个数据。目录被分区成多个目录同余类。目录同余类被分区成目录组,每个都包括目录入口。目录入口包括地址标记及其他状态信息,包括有效位,奇偶性,等等。目录被分区,以便在路径入口及高速缓存器行之间存在一一对应,从而地址标记与每一高速缓存器行相关。
更好是,该方法包括以下步骤:用同余类索引访问单一阵列同余类组的内容,该单一阵列同余类由同余类索引指定,用同余类索引访问单一的目录同余类的组的内容,单一的目录同余类由同余类索引确定,产生组选择信息,利用组选择信息来选择阵列同余类的组,输出被选择的组中的高速缓冲行数据;比较标记部分与被选取的目录同余类组的地址标记,比较被选取的组与组选择信息是否被选取的同余类的地址标记中的一个等于地址的标记部分,如果没有一个被选择的同余类中的地址标记等于该地址的标记部分,则输出第一控制信号来表示访问失败,以及从高速缓冲行输出的数据无效。如果被选择的组不等于组选择信息,则输出第二控制信号来表示来自高速缓冲行的数据无效。
还根据本发明,提供一种用数据地址降低组相关存储器中的访问执行时间的设备。该地址包括位移部分、同余类索引及标记部分。组相关存储器包括阵列及目录,其中阵列包括数据。阵列分区成多个阵列同余类。阵列同余类分区成阵列组,及阵列组确定组-相关存储器的组相关性。阵列组包括高速缓存器行,高速缓存器行包括多个数据。目录分区成多个路径同余类。目录同余类分区成目录组。路径组包括目录入口,目录入口包括地址标记。目录被如此分区以便在目录入口及高速缓存器行之间存在一一对应关系,从而路径中的地址标记至少与高速缓存器行之一相关。降低在组相关存储器中的访问执行时间的设备包括:访问阵列同余类组的内容的设备,单一阵列同余类是由同余类索引指定的同余类,访问单一目录同余类组的内容的设备,单一目录同余类是由同余类索引确定的同余类,产生组选择信息的设备,使用组选择信息选择单一阵列同余类组之一的设备,从被选择的组的高速缓存器行输出数据的设备,比较地址的标记部分与来自被选择的单一路径同余类组的地址标记的设备,比较包括等于组选择信息的地址标记的组的设备,以及输出指示数据访问成功,来自高速缓冲行的数据有效的控制信号的设备。
附图简介
图1是在先技术的虚拟标记高速缓存器的框图。
图2是一个框图,表示本发明对物理标记的组相关高速缓存器的应用。
图2A是根据本发明的方法的应用示例流程图。
图3是本发明的第二实施例的框图。
图4是本发明的第三实施例的框图。
图5A,5B及5C举例说明分支历史表,指令高速缓存器,及操作数历史表的使用,分别作为本发明组选择信息的存储器。
图6是说明在先技术的操作数历史表的操作框图。
图7是一个框图,说明本发明在中央处理单元中的应用。
图8A及8B是计时图,说明高速缓存器分别使用在先技术和本发明的方法进行访问。
上述实施例的详细说明。
组预测的使用排除了等待组相关高速缓存器访问的最后选择阶段的需要。本发明公开了使用组选择信息来进行组预测以提高指令和数据高速缓存器的性能的实施例。
图2示意本发明的实施例的框图。如图所示,组选择28被直接应用到在物理-地址组相关高速缓存器中的目录多路转换14及阵列多路转换16。与图1说明的虚拟地址高速缓存器相对,图2所示的物理-地址高速缓存器包括转换查找侧缓冲器(TLB)26将虚拟地址18转换成由高速缓存器10使用的物理地址的转换。通过直接提供组选择28给阵列多路转换16,数据可从高速缓存器阵列12中检索而先于利用多路转换从目录多路转换14到阵列多路转换选择数据。
根据本发明说明的实施例,用于组选择28的数据能被储存或从包括分支目标缓冲器BTB(也即分支历史表BHT),操作数历史表,或指令高速缓存器在内的多个源中导出。
BTB是一种缓冲器,用来给分支指令预测目标地址。BTB的基础理论是,大多数分支被采用或者不被采用,如果被采用则具有相同的目标地址。因此,建立一个被采用分支的表,在此表中,每个表的入口包括被采用的分支的地址,该分支后为分支的目标地址。表中建立的入口如像形成一个分支。当表填满时,通常加入新入口包括通过LRU算法替换旧的入口。
参看图5A,举例说明BHT 30用作存储组选择信息单元的情形,在指令执行过程中,使用分支地址在BHT 30中参照每个分支,如果被发现,则他的目标地址被读取(Ⅰ读取)并变成执行流中的下一个指令。如果在BHT中未发现分支地址,则推定未被采用(NT)。随着分支指令的继续执行,表随之被更新。如果预测被采用的分支未被采用,则对应的BTB入口被删除。如果预测不被采用的分支被采用,则建立新入口。如果预测的目标地址错误,则输入被修正的地址。BHT 30的每个入口保持一个分支的地址,对应的分支目标地址以及组选择信息。每个分支用指令地址访问,并被从程序计数器中导出。组选择信息表示哪个组最后包括由特定的BHT入口指向的指令并用来通过遭遇与BHT入口对应的分支来预测将从指令高速缓存器中读取的适当组,将被读取的分支地址从程序计数器导出并与BHT 30中的分支地址比较,如果发现匹配,则对应的分支目标地址和组选择信息被提供给指令高速缓存器行。这样,通过使用从存储在BHT中的组选择信息中预测的组,就可从指令高速缓存器中读取适当的指令,这就比依赖于TLB的输出和高速缓存器目录来选择适当的组的情形要早。
本发明实现来自BHT的组选择的实施例参考框图2和流程图2A进行描述:
从程序计数器指令读取地址(一般程序单元对应于分支指令或者被预测为包括分支指令的指令读取组)读入分支历史表(BHT),它提供了分支目标地址及被预测的识别指令高速缓存器中被预测的分支目标组的组索引(步骤200),图2中被预测的组索引是组选择28;
在地址8,提供分支目标地址给指令高速缓存器;目标地址可被分区成3个部分:部分1-目录标记;部分2-同余类索引;部分3-指令的移位(步骤205);
同样,将同余类索引提供给高速缓存器路径10和高速缓存器阵列12;读出路径和阵列入口给同余类;通过TLB 26将路径标记部分提供给路径多路转换14,并将组选择28提供给路径多路转换14和阵列多路转换16。组选择选择阵列多路转换16以(从步骤3中读出的同余类的阵列入口组)输出适当的阵列入口(步骤210);
利用移位识别由高速缓存器阵列12输出的字,并将该字加到指令队列(或缓冲器)以进行处理(步骤220);
目录多路转换14识别来自组选择28的目录标记是否与在步骤210中从高速缓存器路径10中读取的同余类的标记入口之一相匹配(步骤225);
如果不匹配(高速缓存器失败)发生:使步骤220中加给指令指令队列的字无效(步骤245);通过例如从下一级存储器层次读取指令/数据,一般处理失败(步骤250);将指令高速缓存器行放入高速缓存器(步骤225);
用新的指令高速缓存器行组更新BHT。更新预测源的技术为本领域普通技术人员所熟知。更好是,为了执行本例中的更新,记录用于预测的原始BHT入口坐标(步骤260);
在步骤225中,如果来自组选择28的目录标记匹配由TLB 26提供的标记,(一个高速缓存器命中),还需确定预测是否正确;
产生一个被分解的组索引,识别被分解的高速缓存器阵列12中由匹配的目录标记识别的指令组;同时,将被分解的组索引送到阵列多路转换16和组预测分辨逻辑(未示出),并用分解的组索引来控制阵列多路转换16选择正确的阵列入口(从步骤210中读出的同余类的阵列入口组)(步骤235);
预测分辨逻辑识别被分解的组索引是否匹配来自组选择28的被预测的组索引;
如果发生匹配(预测正确),则通过选择对应于被分解的组索引的入口终止多路转换16操作并使步骤220中加到指令队列的字生效(步骤240);
如果发生不匹配(预测错误),则使加到指令队列的字无效(步骤270);利用移位来识别高速缓存器阵列12中在步骤240中识别的字,并将该字加到指令队列(步骤275);并更新组选择信息28的入口以表示新的被预测的组等于被分解的被预测的组(步骤280)。
显然,对于本领域的普通技术人员来说,在本发明上述描述的实施例中,BHT包含加给BHT中的每个缓冲器或单元的组预测字段,通过使用与分支目标(地址)耦合的组选择或组预测,数据就可从指令高速缓存器中检索而不用等待转换或最后选择信号的目标查找生成(通过TLB26,高速缓存器目录10及目录多路转换14)。
可选择地,附加的组选择信息可被分配给每个BHT入口,附加的组选择信息为一归于失败(fall-through)或不被采用(not-taken)的路径指定一个适当的组。当重新覆盖错误预测的分支或当分支指令占满高速缓存器块中的最后的单元并且归于失败的路径存储于不同的高速缓存器块时,这种信息是有用的。通过探测目标及归于失败路径处于不同的高速缓存器组,这两组可同时从指令高速缓存器中被读取。而且,由于多分支可发生在单一指令高速缓存器行内,所以BTB中的附加的组选择信息也能提供字段给每个分支。
另外,组选择信息能存储于指令高速缓存器以提高数据高速缓存器的性能,参看图5B,数据高速缓存器组选择信号100可被添加到指令高速缓存器行120以表示指令需要操作数的预测组,如图5B所示,D高速缓存器组选择与Ⅰ高速缓存器行120的对应固定部分(0至8)相关。可以为装载或存储指令的指令,利用数据高速缓存器组选择信号来访问包括将被装载或存储的操作数的组。在操作数地址生成之前,既然数据高速缓存器组选择信息在访问指令高速缓存器期间为可用,所以数据数据高速缓存器的性能可以通过这种方法显著提高。
图6说明在先技术的操作数历史表(OHT)的操作过程,每个由程序计数器32读取的指令与OHT 36中的指令地址相匹配,如果发现匹配,则读取对应的操作数地址,该操作数然后与预译码操作数缓冲器中的指令进行匹配。当指令被译码,则与此指令相关的操作数可用,并且立即开始执行。
根据本发明说明的另一实施例,组选择信息也可被储存在OHT中以提高数据高速缓存器的性能。OHT减少读取与指令相关的操作数所需要的时间,OHT是基于这种的理论:每次执行指令时,多个需要操作数的这种指令都计算同一操作数地址,例如,可以通过增加基址寄存器,索引寄存器以及由指令提供的移位字段来计算操作数地址,通过使用一种表,在此表中每个入口包括指令地址及该指令的操作数地址,就可以在指令被译码之前读取操作数。
参看图5C,数据高速缓存器组选择信息140被添加到0HT 36的每个入口,在指令被译码之前,适当的操作数地址可用并且该操作数可从数据高速缓存器读取,这样显著降低了数据高速缓存器的访问执行时间。由于访问OHT只需要程序计数器,所以该操作数能被读取而先于读取该指令,如果由于例如该系统如此要求增加对操作数的访问执行时间的话。
图3说明本发明包括普通高速缓存器路径10和为降低电源消耗而修正的高速缓存器阵列12的实施例。在第一和第二实施例之间的一个不同点是阵列多路转换器16被移到高速缓存器系列12之前,从而组选择信息28被先用来访问高速缓存器阵列12而不用来确定那一个组将随着高速缓存器阵列12的访问被输出。高速缓存器12继续具有组相关性,然而,在任一特定的循环中,只有一组从高速缓存器12中得到检索。这样,通过减少被访问的组数,电源消耗也减少。如果组选择信息28错误,则来自TLB 26和高速缓存器路径10的最后选择信息可用来选择及访问正确的阵列信息。
图4说明的本发明的实施例包括普通高速缓存器阵列12及高速缓存器目录10,它们被修正以降低电源消耗,在第二和第三实施例之间的一个不同之处是组选择信息28用来确定哪一组标记在访问高速缓存器目录10之前进行访问而不用来确定哪一组将随高速缓存器目录10之后被输出。组选择信息28用来选择高速缓存器目录10中的组和高速缓存器阵列12中的组,这样,从高速缓存器目录10和高速缓存器阵列12中仅输出一组,通过减少高速缓存器目录10高速缓存器阵列12中在对高速缓存器的访问期间必须被访问的组数来降低电源损耗。如果组选择信息28错误,则从TLB 26和高速缓存器目录10中输出的最后选择信息可被用来选择并读出正确的阵列信息。
图7说明本发明对CPU 40的应用。存储器系统42包括将由CPU40进行操作的指令和程序数据。存储器系统42一般具有层级结构,它包括主存储器(例如动态随机访问存储器)和第二存储器(磁/光盘驱动,可擦除可编程只读存储器)
存储器系统42与指令缓存系统44和数据高速缓存器46接口,以便分别将使用的指令和数据随时保存在指令高速缓存器44和数据高速缓存器46中。一般来说,存储于高速缓存器的这些指令和数据被分成高速缓存器行和块,指令读取单元48将存储于指令高速缓存器44中的一个或多个指令块读入指令队列50,译码及调度单元52从指令队列50中读取指令,将这些指令译码并进行调度以执行。在Hennessyand PatteRson Computer Architecture:  A   quantitAtiveapproach  第220-362页(1990)中可以找到调度技术的详细描述,这里作全面参考。条件分支指令在分支单元54中进行调度以便执行,序列或非分支指令在功能单元56进行调度以便执行。
装载存储单元58从数据高速缓存器56中将数据块按要求读入功能单元56,装载存储单元58也根据装载存储单元56中由指令执行产生的数据值来更新存储于数据高速缓存器56和存储器系统42中的数据块。CPU包括寄存器文件60,它提供操作数给功能单元56以执行指令,并接收执行结果。完成单元62按CPU 40的特定结构确认有效的顺序执行指令。虽然功能单元56可以不按顺序执行指令,但可以或者不可以允许CPU 40按同一顺序完成指令,这取决于结构约束。
分支单元54包括用于评价条件分支的输出的条件寄存器,以及根据功能单元56执行的操作结果更新条件寄存器的逻辑。识别将被从存储系统42读入指令队列50的指令块的地址被存储于指令读取寄存器64中,存储于指令读取寄存器64中的块地址被提供给分支单元54。
每个功能单元56都可以执行某些或所有类型的通过译码及调度单元52传送的指令,功能单元56从寄存器文件60和/或数据高速缓冲单元56中接收输入源操作数并将输出结果写入寄存器文件60和/或数据高速缓冲单元56中。同样,功能单元56可为非对称,其中,特定的单元仅能执行某些指令子组。在此情况下,寄存器文件60一般逻辑上被分区成对功能单元56的功能的子组,注意,寄存器60的逻辑分区为结构可见或不可见。而且,寄存器文件60可为逻辑独立但物理上共享公共电路。另外,译码及调度单元52应是非对称,且对指令进行适当调度。例如,功能单元56可以包括一个或多个用以执行定点操作的定点单元,一个或多个用来执行浮点操作的浮定单元,以及一个或多个用来在一个或多个源向量上执行向量操作的向量单元。由定点单元执行的定点操作可以包括例如定点加法,定点减法,定点乘法,定点除法,与,或,异或,定点比较,定点旋转,及定点移位操作。由浮点单元执行的浮点操作可以包括例如浮点加法,浮点减法,浮点乘法,浮点除法,及浮点比较操作。由向量单元执行的向量操作具有固有的高度并行性的特征。一般来说,这种向量操作为SIMD型操作,其中指令执行与源向量内的多数据元素中相同的操作。
分支单元54也包括包含组选择信息的分支预测机构,如果分支预测机构确定指令块不包括条件分支指令,或者包括一个或多个被预测为不采用的条件分支指令,则分支预测机构控制多路转换器66来将下一顺序的块地址(由下一个顺序的块地址发生器68产生)的组和块地址装入指令读取寄存器64。在这种情况下,下一顺序块被从存储器系统42读入指令队列50,如果分支预测机构确定一个或多个指令为被预测被采用的分支指令,那么,分支预测机构控制多路转换器66将目标地址的组及块地址装入指令读取寄存器64,在这种情况下,包括第一被预测采用的分支指令的目标指令的组及块,被从存储器系统42读入指令队列50。此过程本质上减少了指令高速缓存器的访问执行时间,并完全能继续遥遥领先于CPU40当前执行的块,然而,指令缓冲器的大小及某些被分支预测机构错误预测的分支而增加的可能性限制了这种处理过程,这种情形中的所有块预取都是无用的。
显然,一个块内不止一个条件分支指令被预测采用,对于机构识别第一被预测采用的条件分支指令,目标指令的字节地址可被存储在指令读取寄存器64中,而不能被存储器系统42用来读取指令块。在这种情形下,字节地址被提供给分支预测机构以指示块中的目标指令的入口点,分支预测机构利用目标的字节地址来识别被预测采用的第一条件分支指令是否发生于被提供的入口点之后。
分支预测机构可从存储于BTB、OHT,指令高速缓存器或译码历史表中的数据中读取组选择信息。在下列参考文献中可以找到公知分支预测技术的描述,这些参考文献是:
1.U.S.Pat.No.3,559,183 to sussenguth。
2.U.S.Pat.No.4,477,872 to Losq et al.
3.J.Smith A Study of branch Prediction Strategies 24thAnnual Symposium on Computer Architecture第135-148页(May1998)。
4.Yeh and patt A Compari son of Dynami c BranchPredictors that user Two Level s of Branch History ConferenceProceedings-Annual Symposium on Computer Architecture第257-266页(1993)。
5.P.Emma,J pomerene,T.Puzak,R.Rechtschaffen andF.SDaracio Operand History Table,IBM Technical DisclosureBulletin 12-84,第3815-3816.页
6.Emma,J.Knight,J.Pomerene,T.Puzak,R.Rechtschaffen Hedge Fetch History Table,IBM TechnicalDisclosure Bulletin 02-89,第101-102.页
7.U.S.Pat.No.5,235,697 to Simon Stely Jr.et al.
8.U.S.pat.No.5,418,922 to L.Liu.
9.L.Liu,partial address directory for cache access,IEEE Transactions on Very Large Scale Integration(VLSI)Systems,2(2),June 1994,第226-240页。
(LIU使用一种称为SETLAT的固定表,此表使用装载地址的一部分进行索引从而更快地从相关高速缓存器中检索数据。既然SETLAT不要求转换并且比一般的目录窄,所以它更快地从同余类中选择一个组,LIU的发明也可用于高速缓存器虚拟地址转换,并且每个循环能进行多个高速缓存器访问)。
10.A.Agarwal and S.Pudar Column-AssociativeCaches:A Technique for Reducing the Miss Rate of Direct-Mapped Caches”,,The 20th Annual International Symposium onComputer Architecture(1993)第179-190.页
(Agarwal和Pudar提出了如何使用第二散列法使直接映象高速缓存器象二分路组相关高速缓存器一样执行。采用这种技术,他们能较快地访问最近被使用(MRU)的组元素。)
11.B.Calder and D.Grunwald and J.Emer,“Predictivesequential associative cache”,IEEE High-PerformanceComputer Architecture Symposium Proceedings 1996,第.244-253页。
(在建立于Agarwal和Pudar之上的文献中,Calder等描述了这样一种方法,使用预测技术来选择一种恰当的高速缓存器散列探寻,从而每次利用一种不同的散列探寻来多次访问直接映象高速缓存器)。
再者,参考图7,处理器单元40可以包括附加硬件机构,该机构在处理器40请求指令和数据之前,将这种信息读入高速缓存器存储器44、46。例如,处理器单元40可以包括下列文章中所阐述的读取流缓冲器:JoupPi,“Improving Direct-mapped Cache Performance bythe Addition of a Small Fully-Associative Cache and Pre-fetchbuffers-Proc.of 17th annual Int’l Symposium on ComputerArchitecture”,Seattle,May,1990,IEEE Computer Society Press,第364-373页,以及Palacharla et al.“Evaluating StreamingBuffers as a Secondary Cache Replacement-Proc.Of 21st AnnualInt’l Symposium on Computer Architecture”,chicago,April,1994,IEEE Computer Society Press,第24-33页,这里作全面参考。
另外,预读取指令(例如,在处理器单元40请求指令及数据以前,将这些信息预读入高速缓存器存储器44、46的指令)可被插入存储在存储单元42的指令顺序中,Callhan等的“Software PrefetchProceedings of the Fourth International Conference onArchitectural Support For Programming Languages andOperating Systems”,1991.5月,在这里作完全参考。该文公开了在指令组中加入执行读取的新指令的方法。在由IBM,Motorala和Apple联合开发的PowerPC处理器中,数据高速缓存器块触发(dcbt)指令,一般通称触发指令,用来将存储器块预读入高速缓存器。而且,授于P.Dubey的美国专利5,774,685号(申请号08/426,502),转让给本发明的受让人,这里全部作为参考,它描述了一个推测触发指令。
这些预读取指令可用来将指令和数据(操作数)读入高速缓存器存储器44、46,一般来说,这些预取指令象装入指令一样动作,除非数据不被传送给处理器单元46。更为特别地,处理器单元40包括一种用预取地址搜索高速缓存器目录的机构。并且如果发生失败,则将该信息从存储器系统42传送到高速缓存器存储器44、46。这些预取指令由编译器插入实际使用这些信息之前的指令顺序中,试图保证在需要时这些信息可用到高速缓存器中。不幸的是,对编译器来说,不可能在任何情况下都能插入预取指令从而避免高速缓存器失败。例如,直到使用这些数据的指令被执行,才可知道预取地址。假设一个装载指令间接参考操作数,即,寄存器装载保存存储器中的指针。在这种情况下,直到识别数据指针被装载,才知道预取地址。
在其它情况下,如果预取指令放置与实际使用的数据太近,则从预取指令中不能获取性能益处,例如,将一个预取的仅一个指令放置在它读取的实际使用的信息之前,则插入该预取指令,根本得不到任何性能益处,这样,在某些情况下,忽略无用的预取指令是有益的。在美国专利申请08/599,833,由T,Puzak提交的专利中描述有选择地执行预取指令的机构的例子,在这里作全面参考。
对于预取指令和数据,处理器单元40可以推定执行预取指令,这种指定称为“推定的指定”,这是由于这种指令的执行结果在推定错误的情况下可能是无用的这种事实。更好是,处理器单元40利用分支预测来识别一个路径,沿此路径推定执行指令。在此方面,分支单元54根据条件分支指令的分辨率来评价预测的有效性。如果给出的预测被确定为有效(例如推定有效),那么那些依赖于有效预测的推定指令成为恒定的。然而,如果给出的预测被确定为无效(例如推定无效),则那些依赖于无效预测的推定指令的任何执行结果都被放弃,并且通过处理器单元40的级的这种推定指令执行过程就结束。推定指令最好在指令队列50中做作出标记。
还有,不同级的处理器单元40(分支单元54,译码及调度单元52,装载/存储单元58,功能单元56)最好存储识别那些由给定的级执行的推定指令的信息。而且,完成单元62最好将这些推定指令的执行结果标记为推定。通过确定给定的推定有效,分支单元54与完成单元62共同操作,将依赖于该有效预测的那些推定指令的执行结果标记为恒定,这里,允许完成单元62完成这些指令(假如将执行结果写到寄存器文件60或存储器系统42中)。另一方面,通过确定给出的预测无效,分支单元54完全如下操作:分支单元54与指令读取单元48共同操作,废弃那些根据保留在指令队列50中的无效预测而产生的推定指令;分支单元54与完成单元62共同操作,以废弃那些根据无效予测推定指令,由此禁止完成单元62完成这些指令;以及分支单元54与不同级的处理器单元40共同操作,终止依赖于无效预测的推定指令的处理过程。
在图8A和图8B中图示说明了使用组预测信息的实例,图8A和图8B示出了主流水线(heavily pipelined)高速缓存器的时序图,图8A说明了不用组预测的在先流水方法,图8B说明了根据本发明使用组预测的方法,可见在图8A所示的在先方法中,高速缓存器访问及阵列读出发生在时间期间0和1过程中,在大约同一时间,虚拟地址转换(V→R),目录读出,以及标记检查都对数据A执行。在最后选择(组索引解决)之后,在时间周期2期间,数据A被认定为有效数据。使用图8B所示本发明的方法说明,数据A在时间期‘1’期间阵列读出之后,在最后选择在周期‘2’中执行之前是有效的。之后数据‘A’在时间周期‘2’中确认为有效数据。
在组预测错误的情况下,高速缓存器访问,阵列读出以及可用数据步骤必须第二次被执行(在时间期间3)。直到时间期间4数据A才为可用。注意,数据B和C可为有效数据。他们在重新使数据‘A’有效之前就为可用。
这样,尽管本发明特定的实施例已被示出和描述,但各种不同修正对本领域的技术人员来说是显然的,因而本发明并不局限于公开的实施例或者具体细节,任何修改将落入本发明宗旨和范围内。

Claims (29)

1.一种降低在具有组相关高速缓存器的存储器中的访问执行时间的方法,其中的数据可根据通过至少一个选择高速缓存器选择的数据选择信息从存储器的单元读取,这种方法包括下列步骤:
产生组选择信息:
将组选择信息存储在多个单元中的至少一个中:以及
传送并使用纽选择信息,在通过至少一个选择高速缓存器的所说数据选择信息确定并到达之前,从存储器中检索所述的数据。
2.根据权利要求1所述的降低组相关高速缓存器中的访问执行时间的方法,其中所述的多个单元中的一个为分支目标缓冲器,并且被访问的存储器是一种指令高速缓存器。
3.根据权利要求2所述的降低组相关高速缓存器中的访问执行时间的方法,其中将组选择信息存储到分支目标缓冲器中的步骤还包括将第二组选择信息存储在分支目标缓冲器中,该第二组选择信息预测一个用于一归于失败路径的组。
4.根据权利要求2所述的降低组相关高速缓存器中的访问执行时间的方法,其中将组选择信息存储到分支目标缓冲器中的步骤还包括将第二组选择信息存储在分支目标缓冲器中,该第二组选择信息预测一个用于一未采用的路径的组。
5.根据权利要求1所述的降低组相关高速缓存器中的访问执行时间的方法,其中所述的多单元中的一个在指令高速缓存器中,被访问的存储器是一种数据高速缓存器。
6.根据权利要求1所述的降低组相关高速缓存器中的访问执行时间的方法,其中所述的多个单元中的一个是一种操作数历史表,被访问的存储器高速缓存器是一种数据高速缓存器。
7.权利要求1所述的方法,还包括以下步骤:
比较所述的组选择信息与数据选择信息:
更新所述的组选择信息并发出无效数据的信号,该无效数据是根据比较结果不匹配的确定读取的:以及
从下一级存储器层次中读取指令或数据。
8.一种降低在组相关高速缓存器器中的访问执行时问的设备包.括:
a)一存储组选择信息的存储器;
b)一接受地址并输出由该地址确定的数据的M组的M分路组相关高速缓存器;以及
c)一多路转换组选择信息及组相关地址中的一个的多路转换器,其中所述的组选择信息比用来访问所说数据的组相关地址优先使用。
9.根据权利要求8所述的降低在组相关高速缓存器中的访问执行时间的设备,其中组选择信息存储于分支目标缓冲器或从中得到检索,M分路组相关高速缓存器是一种指令高速缓存器。
10.根据权利要求8所述的降低在组相关高速缓存器中的访问执行时间的设备,其中组选择信息存储于指令高速缓存器或从中得到检索,M维组相关高速缓存器是数据高速缓存器。
11.根据权利要求8所述的降低在组相关高速缓存器中的访问执行时间的设备,其中组选择信息存储于操作数历史表或从中得到检索,M维组相关高速缓存器是数据高速缓存器。
12.一种降低组相关高速缓存器的电源消耗的设备,包括:
a)一存储组选择信息的组选择存储器;
b)一包括阵列和目录的M维组相关高速缓存器,目录将地址的组相关标记部分输出给阵列;以及
c)一将来自所述的目录的地址的标记部分和组选择信息进行多路转换从而输出M组数据中的一个组的多路转换器。
13.根据权利要求12所述的降低组相关高速缓存器的电源消耗的设备,其中M维组相关高速缓存器是一种指令高速缓存器。
14.根据权利要求13所述的降低组相关高速缓存器的电源消耗的设备,其中组选择信息存储于或读取于分支目标缓冲器。
15.根据权利要求12所述的降低组相关高速缓存器的电源消耗的设备,其中M维组相关高速缓存器是数据高速缓存器。
16.根据权利要求12所述的降低组相关高速缓存器的电源消耗的设备,其中组选择信息存储于或读取于操作数历史表。
17.根据权利要求12所述的降低组相关高速缓存器电源消耗的设备,其中组选择信息存储于或读取于指令高速缓存器。
18.一种使用数据地址,增加组相关存储器的访问速度的方法,所述的每个地址包括移位部分,同余类索引,以及标记部分,所述的组相关存储器包括阵列和目录,所述的阵列存储数据,所述阵列被分区成多个阵列同余类,所述阵列同余类被分区成阵列组,阵列组包括具有数据的高速缓存器行,所述的目录被分区成多个目录同余类,所述目录同余类被分区成目录组,所述目录组包括目录入口,所述目录入口包括地址标记,所述目录被如此分区,以使在所述目录入口和高速缓存器行之间存在一一对应关系,从而所述地址标记与至少一个高速缓存器行相关,所述的方法包括以下步骤:
使用所述的同余类索引访问单一阵列同余类组的内容,所述的单一阵列同余类由所述的同余类索引指定;
使用所述的同余类索引访问单一路径同余类组的内容,所述单一路径同余类由同余类索引指定;
产生组选择信息;
利用所述组选择信息,在输出由目录指定的单一同余类之前选择阵列同余类组;
根据所述组选择信息从被选择的组中的高速缓存器行输出数据。
19.根据权利要求18所述的方法,还包括以下步骤:
比较所述标记部分与所述被选择的所述目录同余类组的所述地址标记;
如果所述被选择的同余类中的所述地址标记中的一个等于所述的地址标记部分,则比较所述被选择的组与所述组选择信息;
输出第一控制信号来指示所述的访问失败,以及如果没有在被选择的同余类中的地址标记等于所述的地址标记部分,则从高速缓存器行输出的数据无效;如果被选择的组不等于组选择信息则输出第二控制信号来显示从高速缓存器行输出的数据无效。
20.根据权利要求18所述的方法,其中所述的地址包括第一分区和第二分区,第一分区包括阵列移位部分,阵列同余类索引及阵列标记部分,第二分区包括目录部分,目录同余类索引及目录标记部分,其中所述的阵列同余类索引和目录同余类索引可为不同的长度,以及其中所述的阵列和目录包括不同的组相关性。
21.根据权利要求20所述的方法,还包括利用移位部分来从高速缓存器行选择数据准备输出的步骤。
22.根据权利要求18所述的方法,还包括如果被预测的组之外的组具有与阵列标记部分匹配的地址标记,则从被选择的组中的高速缓存器行中输出数据的步骤。
23.根据权利要求20所述的方法,还包括如果被预测的组之外的组包括与目录标记部分匹配的地址标记,则从被选择的组中的高速缓存器行中输出数据。
24.根据权利要求18所述的方法,其中所述的组选择信息由分支目标缓冲器提供。
25.根据权利要求20所述的方法,其中所述的用于指令访问的组选择信息由分支目标缓冲器提供。
26.根据权利要求18所述的方法,其中所述的用于操作数访问的组选择信息由在先的指令访问提供。
27.根据权利要求20所述的方法,其中所述的用于操作数访问的组选择信息由在先的指令访问提供。
28.根据权利要求18所述的方法,其中用于操作数访问的组选择信息由操作数历史表提供。
29.根据权利要求20所述的方法,其中用于操作数访问的组选择信息由操作数历史表提供。
CNB99126911XA 1999-01-29 1999-12-19 一种使用数据地址增加组相关存储器的访问速度的方法 Expired - Fee Related CN1296827C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/240348 1999-01-29
US09/240,348 US6418525B1 (en) 1999-01-29 1999-01-29 Method and apparatus for reducing latency in set-associative caches using set prediction

Publications (2)

Publication Number Publication Date
CN1287311A true CN1287311A (zh) 2001-03-14
CN1296827C CN1296827C (zh) 2007-01-24

Family

ID=22906170

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB99126911XA Expired - Fee Related CN1296827C (zh) 1999-01-29 1999-12-19 一种使用数据地址增加组相关存储器的访问速度的方法

Country Status (6)

Country Link
US (1) US6418525B1 (zh)
JP (1) JP3542021B2 (zh)
KR (1) KR100333470B1 (zh)
CN (1) CN1296827C (zh)
CA (1) CA2297402A1 (zh)
TW (1) TW454146B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1306420C (zh) * 2003-09-30 2007-03-21 国际商业机器公司 利用永久历史页表数据预取数据到高速缓存的装置和方法
CN100414494C (zh) * 2004-04-22 2008-08-27 国际商业机器公司 根据多组高速缓存组预测来选择执行的指令的装置和系统
CN101727311A (zh) * 2009-12-03 2010-06-09 浙江大学 用于降低指令缓存功耗的分支序列缓冲器
CN102216914A (zh) * 2008-11-13 2011-10-12 国际商业机器公司 螺旋高速缓存电源管理、自适应大小调整和接口操作
CN101421706B (zh) * 2006-04-19 2012-10-10 高通股份有限公司 具有经物理标记的行为的经虚拟标记的指令高速缓存器
CN103279324A (zh) * 2013-05-29 2013-09-04 华为技术有限公司 一种将内存中的指令提前预取到高速缓存的方法和装置
CN103984525A (zh) * 2013-02-08 2014-08-13 上海芯豪微电子有限公司 指令处理系统及方法
CN106951217A (zh) * 2016-01-07 2017-07-14 三星电子株式会社 由易于得到的预取器准确性动态控制的指令预取器
WO2020169065A1 (zh) * 2019-02-22 2020-08-27 深圳忆联信息系统有限公司 基于内存受限 ssd 的预读取方法、装置和计算机设备

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6418530B2 (en) * 1999-02-18 2002-07-09 Hewlett-Packard Company Hardware/software system for instruction profiling and trace selection using branch history information for branch predictions
US6581140B1 (en) * 2000-07-03 2003-06-17 Motorola, Inc. Method and apparatus for improving access time in set-associative cache systems
JP4071942B2 (ja) * 2001-04-27 2008-04-02 株式会社ルネサステクノロジ データ処理装置及びデータプロセッサ
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US7707397B2 (en) * 2001-05-04 2010-04-27 Via Technologies, Inc. Variable group associativity branch target address cache delivering multiple target addresses per cache line
US6785793B2 (en) 2001-09-27 2004-08-31 Intel Corporation Method and apparatus for memory access scheduling to reduce memory access latency
US20040107319A1 (en) * 2002-12-03 2004-06-03 D'orto David M. Cache management system and method
KR100511164B1 (ko) * 2002-12-10 2005-08-31 정보통신연구진흥원 웹 검색엔진에서의 실시간 사용자 질의 분석에 기반한and 연산용 색인데이터의 캐슁 방법
US7237098B2 (en) * 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
US8117392B2 (en) * 2003-10-22 2012-02-14 Intel Corporation Method and apparatus for efficient ordered stores over an interconnection network
KR100980076B1 (ko) * 2003-10-24 2010-09-06 삼성전자주식회사 저전력 분기 예측 시스템 및 분기 예측 방법
US7093075B2 (en) * 2003-11-07 2006-08-15 International Business Machines Corporation Location-based placement algorithms for set associative cache memory
US7266642B2 (en) 2004-02-17 2007-09-04 International Business Machines Corporation Cache residence prediction
US7970998B2 (en) * 2005-04-08 2011-06-28 Panasonic Corporation Parallel caches operating in exclusive address ranges
US20070276989A1 (en) * 2006-05-29 2007-11-29 Sandisk Il Ltd. Predictive data-loader
US8688890B2 (en) * 2006-12-05 2014-04-01 Hewlett-Packard Development Company, L.P. Bit ordering for communicating an address on a serial fabric
JP4980751B2 (ja) 2007-03-02 2012-07-18 富士通セミコンダクター株式会社 データ処理装置、およびメモリのリードアクティブ制御方法。
US8438003B2 (en) * 2007-04-12 2013-05-07 Cadence Design Systems, Inc. Methods for improved simulation of integrated circuit designs
US8543768B2 (en) 2008-11-13 2013-09-24 International Business Machines Corporation Memory system including a spiral cache
US8527726B2 (en) 2008-11-13 2013-09-03 International Business Machines Corporation Tiled storage array with systolic move-to-front reorganization
US8689027B2 (en) * 2008-11-13 2014-04-01 International Business Machines Corporation Tiled memory power management
US8065485B2 (en) * 2009-05-22 2011-11-22 Oracle America, Inc. Method and apparatus for determining cache storage locations based on latency requirements
US8972706B2 (en) 2011-05-26 2015-03-03 International Business Machines Corporation Performance in predicting branches
WO2014158161A1 (en) 2013-03-28 2014-10-02 Hewlett-Packard Development Company, L.P. Error coordination message for a blade device having a logical processor in another system firmware domain
CN105103121B (zh) 2013-03-28 2018-10-26 慧与发展有限责任合伙企业 刀片系统以及刀片系统的分区执行方法
WO2014158152A1 (en) 2013-03-28 2014-10-02 Hewlett-Packard Development Company, L.P. Making memory of compute and expansion blade devices available for use by an operating system
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US10318419B2 (en) * 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
GB2570299B (en) * 2018-01-17 2020-04-08 Advanced Risc Mach Ltd Increasing effective cache associativity
CN112559049A (zh) * 2019-09-25 2021-03-26 阿里巴巴集团控股有限公司 用于指令高速缓存的路预测方法、访问控制单元以及指令处理装置
US20230401063A1 (en) * 2022-06-08 2023-12-14 Ventana Micro Systems Inc. Folded instruction fetch pipeline
US11816489B1 (en) 2022-08-02 2023-11-14 Ventana Micro Systems Inc. Microprocessor with prediction unit pipeline that provides a next fetch address at a rate of one per clock cycle
US11836498B1 (en) 2022-08-02 2023-12-05 Ventana Micro Systems Inc. Single cycle predictor

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5148538A (en) * 1989-10-20 1992-09-15 International Business Machines Corporation Translation look ahead based cache access
US5235697A (en) 1990-06-29 1993-08-10 Digital Equipment Set prediction cache memory system using bits of the main memory address
US5418922A (en) * 1992-04-30 1995-05-23 International Business Machines Corporation History table for set prediction for accessing a set associative cache
US5634119A (en) 1995-01-06 1997-05-27 International Business Machines Corporation Computer processing unit employing a separate millicode branch history table
US5845323A (en) * 1995-08-31 1998-12-01 Advanced Micro Devices, Inc. Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US5918245A (en) * 1996-03-13 1999-06-29 Sun Microsystems, Inc. Microprocessor having a cache memory system using multi-level cache set prediction
US5966737A (en) * 1996-06-26 1999-10-12 Compaq Computer, Corp. Apparatus and method for serialized set prediction
US5956752A (en) * 1996-12-16 1999-09-21 Intel Corporation Method and apparatus for accessing a cache using index prediction
US6016533A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1306420C (zh) * 2003-09-30 2007-03-21 国际商业机器公司 利用永久历史页表数据预取数据到高速缓存的装置和方法
CN100414494C (zh) * 2004-04-22 2008-08-27 国际商业机器公司 根据多组高速缓存组预测来选择执行的指令的装置和系统
CN101421706B (zh) * 2006-04-19 2012-10-10 高通股份有限公司 具有经物理标记的行为的经虚拟标记的指令高速缓存器
CN102216914B (zh) * 2008-11-13 2014-01-08 国际商业机器公司 螺旋高速缓存电源管理、自适应大小调整和接口操作
CN102216914A (zh) * 2008-11-13 2011-10-12 国际商业机器公司 螺旋高速缓存电源管理、自适应大小调整和接口操作
CN101727311B (zh) * 2009-12-03 2013-11-27 浙江大学 用于降低指令缓存功耗的分支序列缓冲器
CN101727311A (zh) * 2009-12-03 2010-06-09 浙江大学 用于降低指令缓存功耗的分支序列缓冲器
CN103984525A (zh) * 2013-02-08 2014-08-13 上海芯豪微电子有限公司 指令处理系统及方法
CN103984525B (zh) * 2013-02-08 2017-10-20 上海芯豪微电子有限公司 指令处理系统及方法
CN103279324A (zh) * 2013-05-29 2013-09-04 华为技术有限公司 一种将内存中的指令提前预取到高速缓存的方法和装置
CN103279324B (zh) * 2013-05-29 2015-10-21 华为技术有限公司 一种将内存中的指令提前预取到高速缓存的方法和装置
CN106951217A (zh) * 2016-01-07 2017-07-14 三星电子株式会社 由易于得到的预取器准确性动态控制的指令预取器
CN106951217B (zh) * 2016-01-07 2022-05-03 三星电子株式会社 由易于得到的预取器准确性动态控制的指令预取器
WO2020169065A1 (zh) * 2019-02-22 2020-08-27 深圳忆联信息系统有限公司 基于内存受限 ssd 的预读取方法、装置和计算机设备

Also Published As

Publication number Publication date
TW454146B (en) 2001-09-11
US6418525B1 (en) 2002-07-09
CA2297402A1 (en) 2000-07-29
KR20000076502A (ko) 2000-12-26
JP2000222205A (ja) 2000-08-11
KR100333470B1 (ko) 2002-04-25
CN1296827C (zh) 2007-01-24
JP3542021B2 (ja) 2004-07-14

Similar Documents

Publication Publication Date Title
CN1296827C (zh) 一种使用数据地址增加组相关存储器的访问速度的方法
US6539458B2 (en) Hierarchical memory for efficient data exchange control
US5778434A (en) System and method for processing multiple requests and out of order returns
CN1123826C (zh) 预取由转移历史引导的指令/数据的方法和装置
CN1191524C (zh) 预取指令的执行方法和设备
US6611910B2 (en) Method for processing branch operations
EP2204741B1 (en) Processor and method for using an instruction hint to prevent hardware prefetch from using certain memory accesses in prefetch calculations
US6047363A (en) Prefetching data using profile of cache misses from earlier code executions
US6339822B1 (en) Using padded instructions in a block-oriented cache
US6349365B1 (en) User-prioritized cache replacement
US6230260B1 (en) Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US6151662A (en) Data transaction typing for improved caching and prefetching characteristics
US6256727B1 (en) Method and system for fetching noncontiguous instructions in a single clock cycle
US6367001B1 (en) Processor including efficient fetch mechanism for L0 and L1 caches
KR100341431B1 (ko) 다수의 예측 분기 명령을 통한 명령 페치의 정렬 명령캐시 제어
US7219185B2 (en) Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache
CN1127899A (zh) 具有推测指令取指的数据处理器及操作方法
EP0927394B1 (en) A cache line branch prediction scheme that shares among sets of a set associative cache
US6427192B1 (en) Method and apparatus for caching victimized branch predictions
WO2012076391A1 (en) Vector gather buffer for multiple address vector loads
CN1188932A (zh) 多线程处理器中指令和关联读取请求的后台完成
JPH1074166A (ja) 多重レベル・ダイナミック・セット予測方法および装置
EP0652521A1 (en) Rapid data retrieval from a physically addressed data storage structure using memory page crossing predictive annotations
CN1196997C (zh) 不按序执行指令的装置和检测不按序指令的方法
US6892280B2 (en) Multiprocessor system having distributed shared memory and instruction scheduling method used in the same system

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C06 Publication
PB01 Publication
C14 Grant of patent or utility model
GR01 Patent grant
C19 Lapse of patent right due to non-payment of the annual fee
CF01 Termination of patent right due to non-payment of annual fee