CN1127899A - 具有推测指令取指的数据处理器及操作方法 - Google Patents
具有推测指令取指的数据处理器及操作方法 Download PDFInfo
- Publication number
- CN1127899A CN1127899A CN94119533A CN94119533A CN1127899A CN 1127899 A CN1127899 A CN 1127899A CN 94119533 A CN94119533 A CN 94119533A CN 94119533 A CN94119533 A CN 94119533A CN 1127899 A CN1127899 A CN 1127899A
- Authority
- CN
- China
- Prior art keywords
- branch
- instruction
- address
- data processor
- finger
- 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
- 238000000034 method Methods 0.000 title claims description 22
- 238000003860 storage Methods 0.000 claims description 23
- 230000015572 biosynthetic process Effects 0.000 description 15
- 238000001514 detection method Methods 0.000 description 9
- 230000003068 static effect Effects 0.000 description 9
- 230000003139 buffering effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000007667 floating Methods 0.000 description 5
- 230000005055 memory storage Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000003870 depth resolved spectroscopy Methods 0.000 description 2
- 208000009743 drug hypersensitivity syndrome Diseases 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 101100018862 Mus musculus Ifnar1 gene Proteins 0.000 description 1
- ZJPGOXWRFNKIQL-JYJNAYRXSA-N Phe-Pro-Pro Chemical compound C([C@H](N)C(=O)N1[C@@H](CCC1)C(=O)N1[C@@H](CCC1)C(O)=O)C1=CC=CC=C1 ZJPGOXWRFNKIQL-JYJNAYRXSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 229940074869 marquis Drugs 0.000 description 1
- 238000013486 operation strategy Methods 0.000 description 1
- VBUNOIXRZNJNAD-UHFFFAOYSA-N ponazuril Chemical compound CC1=CC(N2C(N(C)C(=O)NC2=O)=O)=CC=C1OC1=CC=C(S(=O)(=O)C(F)(F)F)C=C1 VBUNOIXRZNJNAD-UHFFFAOYSA-N 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3846—Speculative instruction execution using static prediction, e.g. branch taken strategy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
数据处理器(12)具有预测条件分支指令的分支预测单元(28)和监控未决定分支指令数的控制单元(70),控制单元根据未决定分支指令数有选择地允许数据处理器从外部存储器系统取由分支预测单元指定的指令,未决定分支指令的特点阈值数可由用户编程,数据处理器从而把其总线存取限制于那些可以确定需要指示指令的场合。
Description
本发明一般性地涉及数字计算系统,更特别涉及具有猜测指令取指能力的数据处理器。
分支预测是一种用来改进数据处理器性能的技术,用分支预测技术的数据处理器,每当它们接收一分支指令时总要进行猜测,实行猜测(未决定分支指令),并通过完成指令(决定分支指令)确定猜测是否正确。这种数据处理器猜测是否最终实现分支并转到新的指令地址(不是往下到另一顺序的指令。具有预测分支指令的数据处理器,因为它们形成正确猜测比完成分支指令更快而增加了其性能。这样这些数据处理器所需的仅仅是校正错误猜测。
分支预测技术允许数据处理器尽可能快的在取下一个指令或指令组而增加数据处理器性能。因此,数据处理器总有连续指令流在执行。这种策略称“指令预取指”,因为数据处理器在它执行分支指令之前取指令以确定预取指令的地址。
在某些数据处理系统中,统一的取指指令,对系统的整个性能可能不利。通常,在数据处理器的内部存储器的高速缓存中不包括预取指指令。在这种情况下,数据处理器必须从外部存储器系统取指。这种操作垄断同外部存储装置相连的总线,同时可使共用外部存储器装置的其它装置实现同系统存储器有关协议(探听操作)相符合的某些作用。另外,数据处理器直到接收居先的不正确指令才能请求其它的、可假定是正确的指令。其优点是只要可能,就使这些操作的次数变为最小。
每个猜测的分支指令对所选的指令通道混有不正确的东西,因此可能有不需要的取指,例如有些分支预测方案,预测分支正确率可达90%不正确率为10%。经三次预测仍未决定分支,数据处理器沿正确指令流通道进行取指的机遇只有73%。继续用这例子,已知数据处理器同样猜测第一和第3分支预测,既可通过两个分支指令指示的地址(或者是在两个指令之后形成的顺序地址)预取指令亦可不预取指令,如上所述,若数据处理器不包括由分支指令返回的特殊指令,这两指令中每个都可以使数据处理器经系统总线存取外部存储器系统。其它相同时,宁可垄断系统总线取第一指令而不取第3指令。然而,以前数据处理器没有这种特性。
根据本发明公布的具有推测指令取指的数据处理器,它实质上消除了已有的数据处理器缺点。
所用具有外部存储系统的数据处理器,具有分支预测单元及与其相结合的指令取指电路。分支预测单元形成取指地址,存储一个表示前面未决定分支指令数目的信号及形成控制信号。在第一种操作方式中,控制信号所对应的第一种逻辑状态和第二种逻辑状态分别表示信号代表数小于等于第一预选择数或大于第一预选择数。在第二种操作方式中,控制信号对应的第一种逻辑状态和第二种逻辑状态分别表示信号代表数小于等于第二预选择数或大于第二预选择数。指令取指电路从外部存储器系统与控制信号的第一状态相对应的取指地址间址取指。
用外部存储器系统的数据处理器的操作方法亦被说明,这种方法有在分支预测单元中有如下步,接收分支指令,对应于分支指令预测取指地址,存储未决定的分支指令数并形成控制信号。在第一种操作方式中,控制信号对应的第一种和第二种逻辑状态,分别对应于未决定的分支指令数小于等于第一预选择数及大于第一预选择数,在第二种操作方式中,控制信号对应的第一种和第二种逻辑状态分别对应于未决定的分支指令数小于等于第二预选择数及大于第二预选择数。这种方法还包括在同分支预测单元相联的指令取指电路中,对应于控制信号从外部存储系统中取指令的步骤。
通过结合附图的译细说明将会清楚的了解。本发明的特点和优点这些图号对应的部件如下:
图1根据本发明描绘了数据处理系统的框图结构。
图2描绘了在图1中描绘的数据处理器的框图。
图3描绘了在图2中描绘的分支单元的方框图。
图4描绘了在图2中描绘的指令高速缓存的框图。
图5描绘了在图4中描绘的指令高速缓存逻辑单元的状态转换图。
图6描绘了在图2中描绘的总线接口单元的框图。
图1描绘了根据本发明构成的数据处理系统10的方框图。数据处理系统10由第一数据处理器块12,第二数据处理器块14,主存储器块16,总线仲裁块18和输入输出(以下称I/O)块20经地址总线和数据总线内部相连而成。如上所述第二数据处理块14有外部高速缓存块22(典型的二次或“L2”高速缓冲)。数据处理器12和14预测分支指令,预取通过分支单元28的返回地址所指示的指令,分支单元28以任意次序对应接收到的分支指令及后续无任何分支的指令,形成取指地址。而且,数据处理器12和14根据用户可编程位选择预取指令。每个数据处理器预取指令数取决于特定取指地址形成时有多少未决定的分支指令存在。每个数据处理器因此限制了经地址和数据总线存取主存储器块16的次数,例如当不正确分支猜测有高概率时。
本发明形成的数据处理器在单处理器(未示出)和多处理器(MP)数据处理系统(示出)中性能良好,在单处理器环境下,一个数据处理器可以是唯一的主存储器用户。在这种情况下一个不正确取指仅推迟一个处理器取出正确指令,相反,在多处理器环境下,不正确的取指将推迟处理器之一取出正确指令并将阻止其他处理器使用公共总线。根据本发明的数据处理器可以编程使在每种数据处理系统中工作在最佳情况。
图1描述的许多功能块在技术上已是熟知的。数据处理块12和14,利用存贮在主存储块16的数据和通过I/O块20接收的数据执行存储在主存储器块16中的指令。I/O块20提供从数据处理系统10到键盘,盘驱动器和电子网络等的接口,总线仲裁器18接收来自数据处理系统10的各块请求,以使数据和地址总线排它性使用,总线仲裁块18根据协议(与本发明无关)受理这些请求。数据处理器块14存储频繁使用的数据在高速缓冲块22中。
图2描述了在图1描述的数据处理器12的方框图。数据处理器12和14实质上是相似的。因此,下面优选实施例将详细对数据处理器12来说明,必要时,说明它与数据处理器14的不同。
继续看图2,总线接口单元(以后称BIU)23控制在数据处理器12和数据处理系统10的其余部分间的数据流。BIU23连到指令高速缓存24再到数据高速缓冲26。指令高速缓存24提供指令流到分支单元28,再到完成/调度单元30。完成/调度单元30进而把各个指令送到合适的执行单元。数据处理器12有定点执行单元32,装载/存储执行单元34和浮点执行单元36。定点执行单元32和装载/存储执行单元34将其结果读和写到通用目的结构寄存器堆38(标成GPRS以后称GPR堆)和第一更各缓冲器40,浮点执行单元36和装载/存储执行单元34读和写其结果到浮点结构寄存器堆42(标成FPRS以后称FPR堆)和第二更名缓中器44。
数据处理器12的操作在技术上是熟知的,它没有用推断指令预取指方法。通常,BIU23同数据处理系统10通信,BIU23将结合图6详述。分支单元18决定在给定某些数据寄存器内容和程序步骤的情况下,什么编程指令序列是合适的。分支单元18结合图3在下面详述。分支单元38首先希望从指令高速缓存24中取指,若所请求的指令没有存在指令高速缓存24中,那么指令高速缓存24将发送一请求到BIU23,从主存16去取请求指令。指令高速缓存24将结合图4和图5在下面详述。完成/调度单元30对不同的执行单元32,34和36发各自的指令。每个执行单元实现一个或多个特殊指令类的指令。每个执行单元的特殊指令类用执行单元的名字表示,如浮点执行单元36执行浮点算术指令。
定点执行单元32把操作的结果返回到第一更名缓冲器40,中指定的条目项。当形成结果指令之前的所有指令已经更新了它们的GPR或FDR堆条目时,第一更名缓冲器40用它自已条目周期性地更新GPR堆38的条目。完成/调度单元30通过在完成缓冲器46中保留的所有执行指令表协调这种更新。第一更名缓冲器40和GPR堆38均对定点执行单元32提供操作数,相反,浮点执行单元36将运算结果返回第二更名缓冲器44中指定的条目中。当形成结果的指令之前的所有指令已经更新它们的GPR或FPR堆条目时,第二更名缓中器44周期性用第二更名缓冲器44中条目更新FPP堆42的条目。完成/调度单元30也协调这种更新,第二更名缓冲器44和FPR堆42均对浮点执行单元36提供操作数。
装载/存贮单元34读存于GPR堆38,第一更名缓冲器40,FPR堆42或第二更名缓冲器44中的数据并把选定的数据写到数据高速缓存26中。这些数据亦可以通过同本发明无关的数据处理器12的操作特性写到主存储器系统16中。相反,装载/存储单元34读出存于数据高速缓存26的数据并把这些读出数据写到GPR堆38,第一更名缓冲器40,FPR堆42或第二更名缓冲器44。
公开的具有推测指令预取指方法的数据处理器12的操作下面,结合图3到图6说明,通常,数据处理器12是精简指令集计算机(“RISC”)。数据处理器12把每个指令断成一系列较小步,其中每步可以同其它指令在时间上重迭执行而得到高性能。这种操作策略称为“流水线技术”。数据处理器12亦可以通过把静态和动态分支预测方法相结合而得到高性能。数据处理器12可以用与用户编程值对应的静态或动态分支预测方式工作。而且,在用静态分支预测方法时。数据处理器12根据可编程位中一位,在分支历史表内更新或不更新每个分支指令的分支状态。
在所述的实施例中,每个指令断成5个分离步:取指,调度,执行,回写和完成。在指令高速缓存24中存储器管理电路(未示出)在取指阶段时期,按分支单元28标识的存储器地址的起点取出一个或多个指令。完成/调度单元30在确定无不允许的数据从属,并在调度阶段内对指令的结果保存更名缓冲器条目后发送每个指令到相应执行单元。每个执行单元在执行阶段执行程序指令并在回写阶段把结果(如果存在)写入被保留的更名缓冲器条目。最后,完成/调度单元30,在特殊指令之前的每指令已经这样更新结构寄存器信息以后,用存储在更名缓冲器中特殊指令的结果更新结构寄存器信息。通常,每个指令相位取一个机器时钟周期,然而有些指令当其它指令不需要5个阶段时需要多于一个时钟周期去执行。由于完成各种指令的时间有不同,在特殊指令的回写和完成阶段之间也就可以出现延迟。
图3描绘了在图2中描绘的分支单元28的方框图、分支单元28形成下个指令地址以从存储器中取指(标记成ADDRESS TO IN-STRUCTION CACHE 24指令高速缓存24地址)并从指令高速缓存24(标记成INSTRUCTIONS FROM INSTRUCTION CACHE 24指令来自指令高速缓存24)接收下个取出的指令。分支单元28也形成控制信号GO TO BUS(到总线)和OVERRIDE(取代),以确定是否数据处理器12存取地址和数据总线,以取未存储在指令缓冲器24中的指令。
分支单元28在调度缓冲器48中锁存接收的指令。在描绘实施例中,分支单元28的每个时钟周期接收4个指令:处在前一地址(取指地址)上的指令和跟在取指地址后三个地址上居留的3个指令。调度缓冲器48形成控制信号DB EMPTY(DB空)。调度缓冲器48当调度缓冲器48为空时置位DB EMPTY。第一分支检测器50在4个锁存指令的每组内鉴别第一分支指令(如果存在)。第一分支检测器50形成控制信号INCOMING BRANCH(引入分支)。第一分支检测器50当调度缓冲器48包含一个或多个分支指令时置位IN-COMING BRANCH信号。
锁存于调度缓冲器48中的第一指令地址被传送到分支取指单元52,分支调度/执行单元54及分支完成单元56,分支取指单元52,分支调度/执行单元54及分支完成单元56虽然处在不同的指令相位期,均形成一个地址,据此下一指令将被取出。分支调度/执行单元54也接收第一分支检测器50的输出。这三个单元的操作如下说明,多路开关选择器58(标为MUX)根据地址选择器60选择3个存储器地址之一输出。地址选择器60接收来自分支取指单元52,分支调度/执行单元54和分支完成单元56的控制信号,将其译码确定3个存储地址的那个地址输出。指令取指地址寄存器62(下文标成IFAR)锁存多路开关选择器58的输出,IFAR62形成标识为AD-DRESS TO MEMORY(到存储器的地址)的信号。
一旦IFAR62锁存当前取指地址,分支取指单元52就为一特定分支指令计算2个新取指地址。这一计算发生在特定分支指令的取指阶段。由取指地址变址地特定指令在取指阶段并不能被知道。分支取指单元52输出这两个地址之一到多路开关选择器58,当与当前取指地址关联的分支指令被假定为不被接受或“归于失败”而分支指令到下一个顺序指令时,输出第一个地址。当与当前取指地址结合的分支指令被假设已被接受或指令流“跳到”一个新地址时,第二个地址被输出。
分支取指单元52有两个内部流水线,每个流水线计算这两个新取指地址之一。第一个分支取指单元流水线通过增加由IFAR62锁存的地址计算顺序地址。在所描述实施例中这个第一分支取指单元流水线将4个指令长度加到IFAR62的内容上去。第二分支取指单元流水线利用IFAR62内容的一部分对被称为分支目标地址高速缓存64(以下称BTAC)的随机存取存储器(RAM)高速缓存的第一块进行变址。在描绘的实施例中,分支取指单元52存贮分支目标地址(取指地址)和与BTAC64中一些最近分支指令的取指地址相联系的分支指令的地址子集。
在描绘的实施例中,BTAC64是一个二路相关的高速缓存。BTAC64利用锁存在IFAR62中的一个地址子集对BTAC64中的两个入口进行变址。然后分支取指单元60将变址地址的剩余位同存贮在BTAC64的两个变址项目中的每个里的地址位的子集进行比较。若两个比较中有一个匹配,那么出现一个BTAC“命中”,且分支取指单元52结合匹配的地址位子集输出“取分支”取指地址。若两个比较均不匹配,那么产生一个BTAC“未命中”,且分支取址单元60将已被增加的IFAR2的内容,输出到多路开关选择器58。
分支调度/执行单元54当它接收到由IFAR62的内容变址的特定指令并且第一分支检测器50在四个取指指令中标识出第一分支指令时如果有的话立刻计算两个取指地址,分支调度/执行单元54在特定指令的调度阶段为特定分支指令计算两个地址。这两个取指地址相应于“不取分支”和“取分支”条件。分支调度/执行单元54仅将这两个地址之一输出到多路开关选择器58。应当注意。分支取指单元52已经在流水线阶段根据同一分支指令将一新取指地址输出给多路开关选择器58。根据在分支调度/执行单元54或分支完成单元56内同时被执行的分支指令的结果,IFAR62可以用这两单元之一的输出装载。在这种情况下,数据处理器12将在这地址的开始取指令。
分支调度/执行单元54亦有两个内部流水线用以计算它的两个取指地址。第一流水线通过逐条增加分支指令地址来计算顺序地址。第一分支检测器50在每一包含4个被取指指令的组里计算第一分支指令地址,如果有的话。第二个分支调度/执行单元流水线根据特定分支指令计算取址地址。例如,这个流水线可以将一嵌入指令的偏移量加到分支指令地址中。一个分支预测单元(未示出)选择分支调度/执行单元54把两个地址中的一个输出到多路开关选择器58。分支预测逻辑单元对应于用户可编程控制位,以下列三个方式之一进行操作:(1)动态分支预测;(2)用BHT更新的静态分支预测;(3)无BHT更新的静态分支预测。
一个分支指令是否被取这同分支转到何处是无关的(若被取的话)。条件分支指令是分支指令的一类,它依靠一个在分支指令的调度/执行阶段通常是不知道的命令结果。这种依赖决定了分支是否被取,并不决定取指地址是什么,因此,分支调度/执行单元54根据动态分支预测方法或静态分支预测方法选择两个地址之一,这特定预测方法,通过在专用目的寄存器(未示出)设置某些位而使用户能控制。
根据动态分支预测方法进行操作的同时,分支调度/执行单元54利用IFAR62内容的一部分对被称为分支历史表64(下文称BHT)的第二RAM块进行变址,分支调度/执行单元54为每个分支指令或某些分支指令子集定义一个分支状态。特定分支指令的状态决定分支是否被取出。所描述的实施例中用的分支状态方式是已为大家熟知的含4种状态的模式:STRONG—NOT—TAKEN(强不取)WEAK—NOT—TAKEN(弱不取),WEAK—TAKEN(弱取)和STRONG TAKEN(强取)。若指令分支状态对应于强不取或弱不取,分支调度/执行单元54预测分支将不取出。分支调度/执行单元54,在指令完成后更新一特定分支指令的分支状态,若分支调度/执行单元54不正确地预测了分支指令,那么分支调度/执行单元54将更新BHT66中相应的条目,使其从一个状态变为同样的弱状态或从弱状态到相反的弱状态。相反,若分支调度/执行单元54正确地预测了分支指令,那么,分支调度/执行单元54将更新BHT66中相应条目,使其从一个弱状态变为相同强状态或从强状态变成同样的强状态。
根据静态分支预测方法进行操作的同时,分支调度/执行单元54用一位或多位嵌入到分支指令位中,以确定分支是否被实现。这些位在包含有分支指令的程序被编译完成时一次设定。所述实施例中,在静态分支预测模式中二位被用于预测分支指令。这两位之一是一个符号位,通常表示在分支调度/执行单元54中,第二流水线是加2个数以形成取指地址还是减2个数以形成取指地址(向前取指还是向后取址)。第二位是一个分支预测位,它表示分支是否应被实现。当符号位被触发时,分支预测位的逻辑状态和所得到的动作之间的关系颠倒,不管怎样,符号位和分支预测位被解码成单一实现/不实现位。若单一实现/不实现位在逻辑上等于第一状态,那么分支预测逻辑单元将选择在分支调度/执行单元54中由第一流水线产生的地址。若单一实现/不实现位逻辑上等于第二状态,那么分支预测逻辑单元将选择在分支调度/执行单元54中由第二流水线生成的地址。
当分支调度/执行单元54根据静态分支预测方法运行时,它可能会或可能不会更新BHT66。更新BHT66或不更新BHT66的决定是一个有重要意义的决定。
分支完成单元56在特定分支指令被完成以后为一特定分支指令形成一个单一地址。同任何其它指令一样,当在分支指令之前的所有指令已把它的结果写到适当结构寄存器时,分支指令被完成。这时,分支指令所依据的条件,以及分支是否被实现已知道。须注意。分支取指单元52已在同一分支指令的取指阶段根据同一分支指令将一指令取指地址输出给多路器58。同时分支调度/执行单元54可能已在同一指令的调度/执行阶段将第二指令取指地址输出给多路开关选择器58。
分支完成单元56在其内部有一先进先出队列,也就是分支队列68,其中存贮着有关每个被执行的分支指令的数据。分支完成单元56通过数据/控制信号集66分支调度/执行单元55接收有关每个指令的某些数据:(1)由分支调度/执行单元54形成的但并不输出到多路开关选择器58(未选择通路)的取指地址;(2)在调度/执行阶段进行分支计算所依赖的条件的预测值;(3)分支指令的分支状态。
分支完成单元56也存贮分支队列68中每个分支指令的地址。分支完成单元56从完成/调度单元20接收一个指示何时每个分支指令完成的控制信号。
在分支指令完成后,分支完成单元56接收分支条件的实在值,此分支条件是调度/执行取指地址的基础(这分支指令被分解了)。典型的这种条件是一个专用目的寄存器(条件寄存器)中可以被其它指令来修改的一位。若条件的实际值与存储在分支队列68中的预测值不同,则由分支调度/执行单元54形成的分支预测有错。在这种情况下,分支完成单元56与分支指令相结合输出所存贮的地址。这地址是一开始未被分支调度/执行单元54选择的路径。若条件的实际值与存贮在分支队列68中预测值相同,那么由分支调度/执行单元54形成的分支预测是正确的。在这种情况下,分支完成单元56不需做任何事,除了与完成分支指令相结合作废在分支队列68中的条目以备后用。在任一种情况下,分支完成单元56根据预测与实际分支条件的比较和存贮的分支状态为分支指令产生一个新的分支状态,分支完成单元56以存贮的分支地址作为到BHT66的变址把新的分支状态传送到BHT66。分支完成单元56产生控制信号PEND-ING BRANCH(排起分支)该信号表示在分支队列68中如果有的话有多少未决定的分支指令。
地址选择器60决定大约4个输出地址中哪一个应使多路开关选择器58输出到IFAR62。地址选择器60接收从分支取指单元52输出的取指地址,从分支调度/执行单元54输出的取指地址及从分支完成单元56来的控制信号,如果条件预测值和条件实际值不同分支完成单元56置位这个控制信号。若分支完成单元56置位其控制信号,那么地址选择器60会使多路开关选择器58输出由分支完成单元56形成的地址。若分支完成单元56没有置位其控制信号,且由分支调度/执行单元54生成的地址不同于在前面流水线阶段由分支取指单元52生成的地址,那么地址选择器60使多路开关选择器58输出由分支调度/执行单元54形成的地址。否则地址选择器60使多路开关选择器58输出由分支取指单元52形成的地址。若分支单元28发生故障;地址选择器将输出IFAR62的以前的值。应当明白的是在任何时侯,地址选择器60可以选择由4个不同分支指令形成的4个不同地址中一个。
猜测预取指控制单元70,从完成/调度单元30接收控制信号EXCEPTION(例外)及COMPLETION BUFFER EMPTY(完成缓冲器空),从调度缓冲器48接收DB EMPTY(DB空),从第一分支检测器50接收INCOMING BRANCH(引入分支)从分支完成单元56接收PENDING BRANCH(挂起分支),还接收地址选择器60的输出和三个预取指方式位。程序员所能存取的专用目的寄存器形成这三种方式位,猜测预取指控制单元70形成控制信号GO TO BUS(去总线)和OVERRIDE(取代)。
完成/调度单元30在形成例外指令的写回阶段置位EXCEP-TION(例外)。当指令形成例外时数据处理器12立刻在存储器分支一地址,在存储器内常注例外操作子程序,在这些情况下,数据处理器12将不执行由IFAR62变址的指令,这样,它需要预取指这些指令。否则,完成/调度单元30复位EXCEPTI ON(例外)。当完成缓冲器46为空时,完成/调度单元30置位COMPLETION BUFFEREMPT(完成缓冲空)否则,完成/调度单元30复位COMPLETIONBVFFER EMPTY)。
第一或第0预取指方式位指示数据处理器12在实地址方式还是在虚地址方式。当在实地址方式时,数据处理器12直接用变址存储器生成地址,当在虚地址方式时,数据处理器12在变址存储器变址前先转换它的地址。第2和第3预取指方式指示允许分支指令数目超过数据处理器12可预取指令的数目。若这两位为“00”,数据处理器12仅预取分支队列68中没有挂起分支指令;若为“01”,反预取分支队列68中不多于一个的挂起分支指令;若为“10”,仅预取分支队列68中不多于2个的挂起分支指令,若为“11”仅预取分支队列68中不多于4个的挂起分支指令。在这4种方式中,第一分支检测器50必须复位INCOMING BRANCH(引入分支)。
猜测预取指控制单元70,当它适合对数据处理器12去预取指令时(如果请求指令不在指令高速缓存24中)。置位控制信号GOTO BUS。当预指取方式位第0位设置到高逻辑态(实地址方式),调度缓冲器40置位DB EMPTY,完成调度单元30置位COMPLETIONBUFFER EMPTY(完成缓冲器空)时,猜测预取指控制单元70置位GO TO BUS。否则推测预取指控制单元70复位GO TO BUS。在实地址寻址方式下,数据处理器12可能偶然地存取地址空间,这些空间一旦被存取将会永远改变(某些I/O设备)。因此,数据处理器12必须不在猜测存取这些地址空间。当预取指方式位第0位设置到低逻辑态时(虚地址方式),第一分支检测器50复位INCOMINGBRANCH且在PENDING BRANCH小于或等于由第2和第3预取指方式位表示的值时,猜测预取指控制单元70置位GO TO BUS。否则,猜测预取指控制单元70复位GO TO BUS。
当分支单元28装载一新的取指地址到IFAR62时,猜测预取指控制单元70置位控制信号OVER RIDE,这样优先使较早的流水线级输出。在这种情况下,前面取指地址不再需要。当地址选择器60从分支调度/执行单元54输出中或从分支完成单元56输出中选择一预取地址时,猜测预取指控制单元70置位OVERRIDE。当地址选择器60从IFAR62输出中或从分支取指单元52的输出中选择地址时,猜测预取指控制单元70复位OVERRIDE。
图4显示了一个图2所示的指令高速缓冲存储器24的框图。指令高速缓存24具有一个含转换阵列74的存储器控制逻辑单元72,一个高速缓存的随机存贮器(RAM)76,一个ICACHE控制逻辑单元78和一比较器80。
存储器控制逻辑单元72从IFAR62接收虚拟地址的高有效位,转换阵列74在与未被转换的虚拟地址的低有效位结合的情况下,将所接收虚拟地址的高有效位转换,形成物理地址。存储器控制逻辑单元72将已被转换的高有效位作为一个控制信号EXPECTEDTAG。存储器控制逻辑单元72在实模式中不对所接收到的虚拟地址进行转换。在此模式中,存储器控制逻辑单元72仅将所接收的地址传送给比较器80和ICACHE控制逻辑78。
高速缓存76存贮大量频繁使用指令的数据和相关标签(tags)对。高速缓存76接收由IFAR62产生的虚拟地址的低有效位,并对一对指令数据和标签建立索引。在逻辑上被索引的标签与所存贮指令数据原始地址的物理地址的高有效位相等。
比较器80从高速缓冲存贮器72接收被索引的存贮标签,从存储器控制逻辑单元72接收EXPECTED TAG。如果这两个多位信号是相同的,则被IFAR62的内容变址的指令存在于指令高速缓存24中。数据处理器12不必从主存贮块16中取指令,在这种情况下,比较器80置位一个控制信号HIT/MISS(命中/未命中)。如果这两个多位信号不同,那么由IFAR62内容变化的指令不在指令缓存器24。在此情况下,比较器80复位一个控制信号HIT MISS(命中/未命中)。同时,数据处理器12将必须从主存贮块16中取出这个指令。本发明所涉及的就是这一取操作的时序。
ICACHE控制逻辑单元78控制着指令高速缓存16与BIU23的界面。更具体地说,ICACHE控制逻辑单元78将指令请求送至BIU23,从BIU23接收所请求的指令。并把接收到的指令存贮于高速缓存76(路径未示出)。ICACHE控制逻辑单元78产生控制信号AD-DRESS(地址),LOAD(装载),REQUEST(请求)和COMMIT,并从BIU23接收控制信号DATA(数据),DATA VALID(数据有效),DATA COMPLETE(数据完成)和CANCEL ENABLE(取消使能),I-CACHE控制逻辑单元78还从分支单元28接收GO TO BUS(去总载)和OVERRIDE(取代)信号,从存储器控制逻辑单元72接收EX-PECTED TAG,比较器80接收HIT MISS信号,从IFAR62接收所请求指令的虚拟地址。
ICACHE控制逻辑单元78将EXPECTED TAG与IFAR62的内容的低有效位连接以产生ADDRESS,一个不存贮于指令高速缓存24的指令的地址。当其有一有效的指令要求时,ICACHE控制逻辑单元78置位LOAD REQUEST(装载请求)。当适合将请求传送到主存贮块16时,ICACHE控制逻辑单元置位COMMIT。下面将结合图5对LOAD REQUEST(装载请求)和CMMIT进行说明。DATA包括一个来自主存贮块16的所请求的指令。DATA VALID(数据有效)指示DATA所含的数据是合法的。BIU在其将最后一节指指令数据传送至指令高速缓存24时置位DATA COMPLETE(数据完成)CAN-CEL ENABLE(取消使能)指示ICACHE控制逻辑单元78可以取消一个请求。
CANCEL ENABLE在实施例中很有用,就如图1所示,在此数据处理器14在其向主存贮器单元16请求数据之前先从外部高速缓存器22请求数据。在此实施例中,外部高速缓存22和主存贮器单元16是通过独立的或成对的总线被存取的。在此实施例中,数据处理器14仅在所请求的指令不在外部高速缓存22中时垄断公共地址和数据总线。如上所述。分支单元28在某些情况下确定其不需要所请求的指令。在这些情况下,如果数据处理器14已经对所请求的指令寻找了外部高速缓存22但是未存取主存贮单元16,ICACHE控制逻辑单元78将复位LOAD REQUEST(装载请求)。
图5显示了图4所示的指令高速缓存逻辑单元78的状态转换图。ICACHE控制逻辑单元78保持在IDLE(闲置)状态,直到分支单元28请求一个不在指令高速缓存24中的指令,即一个“高速缓存未命中”。在高速缓存未命中之后,指令高速缓存逻辑单元78将请求一个新指令。如果比较器80复位HIT/MISS(命中/未命中)且猜测预取指令控制单元70复位GO TO BUS(去总线),则ICACHE控制逻辑单元78转换到MISS OUTSTANDING(明显未命中)状态、最终,指令高速缓存逻辑单元78将或者提交这个请求,如果预测预取指令控制单元70置位GO TO BUS(去总线),或者取消该请求,如果预测预取指令控制单元70置位OVERRIDE(取代)。应当明白的是,在某些场合,即使在预测预取指控制单元70置位OVERRIDE(取代)之后,主存贮单元16仍将把指令返回给数据处理器12。在这些场合下,ICACHE控制逻辑单元78将忽略来自主存贮单元16的指令数据。
在那些指令高速缓存逻辑单元78确认请求的场合下,当预测预取指控制单元70置位GO TO BUS(去总线)时,ICACHE控制逻辑单元78从MISS OUTSTANDING(明显未命中)状态转换为COM-MITTED运行状态。如果比较器80复位HIT/MISS(命中/未命中)且预测预取指控制单元70置位GO TO BUS(去总线)ICACHE控制逻辑单元78可从IDLE(闲置)状态直接转换为COMMTTED运行状态。如果BIU23置位DATA COMPLETE(数据完成),ICACHE控制逻辑单元78将从COMMITTED(运行)状态变回IDLE(闲置)状态。
在那些指令高速缓存逻辑单元78取消请求的场合,如果预测预取指控制单元70置位OVERRIDE(取代)且BIU23置位CANCELENABLE(取消使能),ICACHE控制逻辑单元78将从MISS OUT-STANDING(明显未击中)状态直接转换为IDLE(闲置)状态。当预测预取指控制单元70置位OVERRIDE(取代)且BIU23复位CAN-CEL ENABIE(取消使能)时,ICACHE控制逻辑单元78将从MISSOUTSTANDING(明显未击中)状态转换成OVER—RIDDEN(已被取代)状态。如果BIU23置位CANCEL ENABLE(取消使能)或DATACOMPLETE(数据完成),ICACHE控制逻辑单元78将从OVER—RIDDEN(已被取代)状态变回IDLE(闲置)状态。
控制信号COMMIT和LOAD REQUEST(装载请求)的逻辑状态由图5所示的状态转换图决定。更具体而言,ICACHE控制逻辑单元78在其处于COMMITTED(运行)状态时置位COMMIT(运行信号)。否则,ICACHE控制逻辑单元78复位COMMIT(运行信号)、当处于MISS OUTSTANDING(明显未击中)、COMMITTED(运行)或OVER—RIDDEN(已被取代)当中任一状态时,ICACHE控制逻辑单元78置位LOAD REQUEST(装载请求)。当处于闲置状态时,I-CACHE控制逻辑单元78复位LOAD REQUEST(装载请求)。
图6显示了图2所示的BIU23的方块图。与本发明相关的BIU23的部分包括一个BIU仲裁器82,一个BIU控制逻辑单元84和一个多路器(标为MUX)86。
BIU仲裁器82从指令高速缓存24、数据高速缓存26和由指令与数据高速缓存器共享的tablewalk电路(未示出)接收存取外部地址和数据总线的请求tablewalk电路将数据装载入用于地址转换的转换阵列74。BIU仲裁器82根据一个与本发明无关的协议决定哪个请求将在何时实际存取地址和数据总线。BIU仲裁器产生一个控制信号SELECT(选择),用于选择哪一个多路器86的输入被送往地址总线。一独立数据路径(未示出)把与数据高速缓冲装载或存贮操作相关的数据送到外部数据总线。多路器86从三个可能请求者中的每个接收一个地址。
BIU控制逻辑84如同BIU仲裁器82所做的,接收相同的三个存取外部地址和数据总线的请求。BIU控制逻辑84还从地址和数据总线接收控制信号并产生与地址和数据总线相关的控制信号。举例说,BIU控制逻辑84产生一个输出给外部总线的数据有效信号BUSVALID(总线有效),并且从外部总线接收一个类似的信号。当三个可能请求者中的至少一个提出请求时,BIU控制逻辑单元84置位BUS VALID(总线有效)。同时,如果被选择的请求产生于指令高速缓存24,那么必须在BIU控制逻辑单元84置位BUS VALID(总线有效)之前同时置位LOAD REQUEST(装载请求)和COMMIT(运行信号)。BIU控制逻辑单元84把从外部总线接收到的数据有效信号作为DATA VALID(数据有效)传送给指令高速缓存24。在本发明的第一个实施例中,BIU控制逻辑单元84总是置位CANCEL EN-ABLE(取消使能)。最后,当其从外部总线接收到最后一节指数据时,BIU控制逻辑单元84置位DATA COMPLETE(数据完成)。
如上所述,本发明可以插入这样一种具有一个需要通过不同于寻常的总线对才可存取的数据处理器和外部高速缓存的数据处理系统。在这种情况下,上述的某些信号和功能稍有不同。更具体地说,BIU控制逻辑单元84首先将IFAR62的内容传送至外部高速缓存块22而不理会分支队列68中未决定分支指令的个数。应当注意,指令高速缓冲存贮器24已经对IFAR62变化的指令进行了寻找。这一对独立总线的总线activity不会显著影响系统效能。在这一步中,BIU控制逻辑单元84置位一个控制信号SECONDARY CACHE VALID(二级高速缓存有效)。如果指令不在外部高速缓存存贮块22(一个“L2”未命中),那么BIU控制逻辑单元84将通过上述的公共总线存取主存贮块16。BIU控制逻辑单元84在数据处理器存取外部高速缓存之后置位CANCEL ENABLE(取消使能)。
尽管本发明已参照特殊实施例而被说明,那些熟悉本领域技术的人仍可做进一步的改进和提高。例如,本发明可被插入那些习惯上被归为复杂指令集计算机或CISC机器的数据处理器。此外,某些功能单元可在某些实施例中被省略或是重新置于数据处理12的其它区域。所以应当明白,本发明包括了所有这些未偏离其精髓和附加权利要求所限定的发明的范围的改进。
Claims (10)
1.利用猜测指令取指的数据处理器,它使用外部存储系统,这种数据处理器其特征在于
由分支预测单元形成取指地址,由分支预测单元存储一信号用以表示未决定分支指令数,由分支预测单元产生一控制信号,在第一种操作方式中若信号表示数量分别小于等于第一预选择数或大于第一预选择数时控制信号分别对应于第一逻辑状态及第二逻辑状态,在第二种操作方式中,若信号表示数分别小于等于第二预选择数或大于第二预选择数时,控制信号分别对应于第一逻辑状态及第二逻辑状态;
指令取指电路连接到分支预测单元,指令取指电路取出一指令用来自外部存储器系统对应于控制信号的第一状态的取指地址变址。
2.按权利要求1的数据处理器中分支预测单元其特征在于:
分支计算电路形成与分支指令对应的第一和第二地址;
分支预测电路连到分支计算电路,分支预测电路输出取指地址取指地址对应于条件逻辑上等于第一或第二地址中选择的一个。
分支完成电路用来存贮表示未决定分支指令数的信号。
3.按权利要求2的数据处理器中分支完成电路其特征在于电路用来存贮逻辑上不等于取指地址的第一和第二地址中一个。
4.按权利要求3的数据处理器其特征在于用高速缓存的存储器连到指令取指电路,高速缓存存储器装置存贮从外部存储系统接收的指令。
5.按权利要求1的数据处理器其特征在于高速缓存存储器连到指令取指电路,高速缓存存储器装置存贮从外部存储系统接收的指令。
6.带有外部存储器系统的数据处理器的工作方法其特征在于下面步骤:
接收,在数据处理器的分支预测单元中接收分支指令;
预测,在分支预测单元中对应于分支指令预测一取指地址;
存贮,在分支预测单元中,存贮一未决定分支指令的数目;
生成,在分支预测单元中,形成控制信号,在第一种操作方式中,若未决定分支指令数分别小于等于第一预选数或大于第一预选数时,控制信号分别对应于第一种逻辑状态和第二种逻辑状态,在第二种操作方式中,若未决定分支指令数分别小于等于第二预选数或大于第二预选数时,控制信号分别对应于第一种逻辑状态和第二种逻辑状态;
第一取指,用指令取指电路连到分支预测单元,根据控制信号从外部存储器系统取出指令。
7.按权利要求6的方法中预测步骤其特征在于下面步骤:生成,在分支计算电路中,根据分支指令,生成第一和第二地址;输出,用分支预测电路连到分支计算电路,输出的取指地址逻辑上等于所选择的第一或第二地址之一。
8.按照权利要求7的方法中存贮步骤其特征在于存贮的第一或第二地址逻辑上不等于取指地址。
9.按照权利要求8的方法其特征在于第二取指步在第一取指步之前,第二取指步经指令取指电路,从数据处理器的高速缓存存储器取指。
10.按照权利要求6的方法其特征在于第二取指步在第一取指步之前,第二取指步经指令取指电路,从数据处理器的高速缓存存储器取指。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16926293A | 1993-12-20 | 1993-12-20 | |
US169262 | 1993-12-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1127899A true CN1127899A (zh) | 1996-07-31 |
Family
ID=22614895
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN94119533A Pending CN1127899A (zh) | 1993-12-20 | 1994-12-17 | 具有推测指令取指的数据处理器及操作方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5553255A (zh) |
CN (1) | CN1127899A (zh) |
GB (1) | GB2284912B (zh) |
IE (1) | IE940855A1 (zh) |
TW (1) | TW260767B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005119428A1 (en) * | 2004-06-02 | 2005-12-15 | Intel Corporation | Tlb correlated branch predictor and method for use therof |
CN100378618C (zh) * | 2003-03-27 | 2008-04-02 | Nxp股份有限公司 | 基于分支的活动监控 |
CN100395731C (zh) * | 2006-02-23 | 2008-06-18 | 华为技术有限公司 | 处理器及其数据操作方法 |
Families Citing this family (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5680565A (en) * | 1993-12-30 | 1997-10-21 | Intel Corporation | Method and apparatus for performing page table walks in a microprocessor capable of processing speculative instructions |
US5623694A (en) * | 1994-10-03 | 1997-04-22 | International Business Machines Corporation | Aborting an I/O operation started before all system data is received by the I/O controller after detecting a remote retry operation |
JP3569014B2 (ja) * | 1994-11-25 | 2004-09-22 | 富士通株式会社 | マルチコンテキストをサポートするプロセッサおよび処理方法 |
DE69425377T2 (de) * | 1994-11-29 | 2001-02-15 | International Business Machines Corp., Armonk | Einzel-Zyklus-Prozessor zur Echtzeitsverarbeitung |
US5732242A (en) | 1995-03-24 | 1998-03-24 | Silicon Graphics, Inc. | Consistently specifying way destinations through prefetching hints |
US6185674B1 (en) * | 1995-04-05 | 2001-02-06 | International Business Machines Corporation | Method and apparatus for reconstructing the address of the next instruction to be completed in a pipelined processor |
US5774685A (en) * | 1995-04-21 | 1998-06-30 | International Business Machines Corporation | Method and apparatus for biasing cache LRU for prefetched instructions/data based upon evaluation of speculative conditions |
US5802346A (en) * | 1995-06-02 | 1998-09-01 | International Business Machines Corporation | Method and system for minimizing the delay in executing branch-on-register instructions |
US5878255A (en) * | 1995-06-07 | 1999-03-02 | Advanced Micro Devices, Inc. | Update unit for providing a delayed update to a branch prediction array |
US5875324A (en) * | 1995-06-07 | 1999-02-23 | Advanced Micro Devices, Inc. | Superscalar microprocessor which delays update of branch prediction information in response to branch misprediction until a subsequent idle clock |
US5721864A (en) * | 1995-09-18 | 1998-02-24 | International Business Machines Corporation | Prefetching instructions between caches |
US5765208A (en) * | 1995-09-29 | 1998-06-09 | Motorola, Inc. | Method of speculatively executing store instructions prior to performing snoop operations |
US5860150A (en) * | 1995-10-06 | 1999-01-12 | International Business Machines Corporation | Instruction pre-fetching of a cache line within a processor |
US5634103A (en) * | 1995-11-09 | 1997-05-27 | International Business Machines Corporation | Method and system for minimizing branch misprediction penalties within a processor |
US5819080A (en) * | 1996-01-02 | 1998-10-06 | Advanced Micro Devices, Inc. | Microprocessor using an instruction field to specify condition flags for use with branch instructions and a computer system employing the microprocessor |
US5611063A (en) * | 1996-02-06 | 1997-03-11 | International Business Machines Corporation | Method for executing speculative load instructions in high-performance processors |
US5742791A (en) | 1996-02-14 | 1998-04-21 | Advanced Micro Devices, Inc. | Apparatus for detecting updates to instructions which are within an instruction processing pipeline of a microprocessor |
US5752014A (en) * | 1996-04-29 | 1998-05-12 | International Business Machines Corporation | Automatic selection of branch prediction methodology for subsequent branch instruction based on outcome of previous branch prediction |
US6170053B1 (en) * | 1996-06-27 | 2001-01-02 | Texas Instruments Incorporated | Microprocessor with circuits, systems and methods for responding to branch instructions based on history of prediction accuracy |
US5949995A (en) * | 1996-08-02 | 1999-09-07 | Freeman; Jackie Andrew | Programmable branch prediction system and method for inserting prediction operation which is independent of execution of program code |
US5832205A (en) * | 1996-08-20 | 1998-11-03 | Transmeta Corporation | Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed |
US6199152B1 (en) | 1996-08-22 | 2001-03-06 | Transmeta Corporation | Translated memory protection apparatus for an advanced microprocessor |
US6871275B1 (en) * | 1996-12-12 | 2005-03-22 | Intel Corporation | Microprocessor having a branch predictor using speculative branch registers |
US5935238A (en) * | 1997-06-19 | 1999-08-10 | Sun Microsystems, Inc. | Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles |
US5964869A (en) * | 1997-06-19 | 1999-10-12 | Sun Microsystems, Inc. | Instruction fetch mechanism with simultaneous prediction of control-flow instructions |
US6085305A (en) | 1997-06-25 | 2000-07-04 | Sun Microsystems, Inc. | Apparatus for precise architectural update in an out-of-order processor |
US5838988A (en) * | 1997-06-25 | 1998-11-17 | Sun Microsystems, Inc. | Computer product for precise architectural update in an out-of-order processor |
US5958047A (en) * | 1997-06-25 | 1999-09-28 | Sun Microsystems, Inc. | Method for precise architectural update in an out-of-order processor |
US5996060A (en) * | 1997-09-25 | 1999-11-30 | Technion Research And Development Foundation Ltd. | System and method for concurrent processing |
US5978909A (en) * | 1997-11-26 | 1999-11-02 | Intel Corporation | System for speculative branch target prediction having a dynamic prediction history buffer and a static prediction history buffer |
US6012134A (en) * | 1998-04-09 | 2000-01-04 | Institute For The Development Of Emerging Architectures, L.L.C. | High-performance processor with streaming buffer that facilitates prefetching of instructions |
US6370415B1 (en) | 1998-04-10 | 2002-04-09 | Medi-Physics Inc. | Magnetic resonance imaging method |
US6032248A (en) * | 1998-04-29 | 2000-02-29 | Atmel Corporation | Microcontroller including a single memory module having a data memory sector and a code memory sector and supporting simultaneous read/write access to both sectors |
JP3439350B2 (ja) * | 1998-10-02 | 2003-08-25 | Necエレクトロニクス株式会社 | キャッシュ・メモリ制御方法及びキャッシュ・メモリ制御装置 |
US6560629B1 (en) * | 1998-10-30 | 2003-05-06 | Sun Microsystems, Inc. | Multi-thread processing |
US6880152B1 (en) | 1999-10-13 | 2005-04-12 | Transmeta Corporation | Method of determining a mode of code generation |
US6766442B1 (en) * | 2000-03-30 | 2004-07-20 | International Business Machines Corporation | Processor and method that predict condition register-dependent conditional branch instructions utilizing a potentially stale condition register value |
US6658558B1 (en) | 2000-03-30 | 2003-12-02 | International Business Machines Corporation | Branch prediction circuit selector with instruction context related condition type determining |
US6678820B1 (en) | 2000-03-30 | 2004-01-13 | International Business Machines Corporation | Processor and method for separately predicting conditional branches dependent on lock acquisition |
US6859875B1 (en) | 2000-06-12 | 2005-02-22 | Freescale Semiconductor, Inc. | Processor having selective branch prediction |
US6968469B1 (en) | 2000-06-16 | 2005-11-22 | Transmeta Corporation | System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored |
US7107437B1 (en) * | 2000-06-30 | 2006-09-12 | Intel Corporation | Branch target buffer (BTB) including a speculative BTB (SBTB) and an architectural BTB (ABTB) |
KR100518538B1 (ko) * | 2002-10-26 | 2005-10-04 | 삼성전자주식회사 | 데이터 독출 동작과 기입 동작을 동시에 수행할 수 있는집적 회로 및 방법. |
US6826088B2 (en) * | 2002-10-26 | 2004-11-30 | Samsung Electronics Co., Ltd. | Method and integrated circuit capable of reading and writing data simultaneously |
US7343481B2 (en) * | 2003-03-19 | 2008-03-11 | Arm Limited | Branch prediction in a data processing system utilizing a cache of previous static predictions |
US20040225866A1 (en) * | 2003-05-06 | 2004-11-11 | Williamson David James | Branch prediction in a data processing system |
US7380110B1 (en) * | 2003-09-11 | 2008-05-27 | Sun Microsystems, Inc. | Branch prediction structure with branch direction entries that share branch prediction qualifier entries |
US8001363B2 (en) * | 2005-04-04 | 2011-08-16 | Globalfoundries Inc. | System for speculative branch prediction optimization and method thereof |
US7437543B2 (en) * | 2005-04-19 | 2008-10-14 | International Business Machines Corporation | Reducing the fetch time of target instructions of a predicted taken branch instruction |
US9304773B2 (en) * | 2006-03-21 | 2016-04-05 | Freescale Semiconductor, Inc. | Data processor having dynamic control of instruction prefetch buffer depth and method therefor |
US7627742B2 (en) * | 2007-04-10 | 2009-12-01 | International Business Machines Corporation | Method and apparatus for conserving power by throttling instruction fetching when a processor encounters low confidence branches in an information handling system |
US8949581B1 (en) * | 2011-05-09 | 2015-02-03 | Applied Micro Circuits Corporation | Threshold controlled limited out of order load execution |
US9182991B2 (en) | 2012-02-06 | 2015-11-10 | International Business Machines Corporation | Multi-threaded processor instruction balancing through instruction uncertainty |
US10585801B2 (en) | 2012-11-26 | 2020-03-10 | Advanced Micro Devices, Inc. | Prefetch kernels on a graphics processing unit |
US20160350116A1 (en) * | 2015-05-29 | 2016-12-01 | Qualcomm Incorporated | Mitigating wrong-path effects in branch prediction |
US9934041B2 (en) * | 2015-07-01 | 2018-04-03 | International Business Machines Corporation | Pattern based branch prediction |
US10296463B2 (en) * | 2016-01-07 | 2019-05-21 | Samsung Electronics Co., Ltd. | Instruction prefetcher dynamically controlled by readily available prefetcher accuracy |
US10747545B2 (en) | 2018-11-28 | 2020-08-18 | International Business Machines Corporation | Dual compare of least-significant-bit for dependency wake up from a fused instruction tag in a microprocessor |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4435756A (en) * | 1981-12-03 | 1984-03-06 | Burroughs Corporation | Branch predicting computer |
EP0109655B1 (en) * | 1982-11-17 | 1991-07-24 | Nec Corporation | Instruction prefetching device with prediction of a branch destination address |
US4860199A (en) * | 1987-07-31 | 1989-08-22 | Prime Computer, Inc. | Hashing indexer for branch cache |
US4943908A (en) * | 1987-12-02 | 1990-07-24 | International Business Machines Corporation | Multiple branch analyzer for prefetching cache lines |
US5228131A (en) * | 1988-02-24 | 1993-07-13 | Mitsubishi Denki Kabushiki Kaisha | Data processor with selectively enabled and disabled branch prediction operation |
US5136697A (en) * | 1989-06-06 | 1992-08-04 | Advanced Micro Devices, Inc. | System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache |
US5163140A (en) * | 1990-02-26 | 1992-11-10 | Nexgen Microsystems | Two-level branch prediction cache |
US5093778A (en) * | 1990-02-26 | 1992-03-03 | Nexgen Microsystems | Integrated single structure branch prediction cache |
US5313634A (en) * | 1992-07-28 | 1994-05-17 | International Business Machines Corporation | Computer system branch prediction of subroutine returns |
US5454117A (en) * | 1993-08-25 | 1995-09-26 | Nexgen, Inc. | Configurable branch prediction for a processor performing speculative execution |
-
1994
- 1994-11-01 IE IE940855A patent/IE940855A1/en not_active IP Right Cessation
- 1994-11-04 TW TW083110206A patent/TW260767B/zh active
- 1994-12-01 GB GB9424323A patent/GB2284912B/en not_active Expired - Fee Related
- 1994-12-17 CN CN94119533A patent/CN1127899A/zh active Pending
-
1995
- 1995-04-27 US US08/429,439 patent/US5553255A/en not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100378618C (zh) * | 2003-03-27 | 2008-04-02 | Nxp股份有限公司 | 基于分支的活动监控 |
WO2005119428A1 (en) * | 2004-06-02 | 2005-12-15 | Intel Corporation | Tlb correlated branch predictor and method for use therof |
CN100395731C (zh) * | 2006-02-23 | 2008-06-18 | 华为技术有限公司 | 处理器及其数据操作方法 |
Also Published As
Publication number | Publication date |
---|---|
US5553255A (en) | 1996-09-03 |
IE940855A1 (en) | 1995-06-28 |
GB2284912B (en) | 1998-04-22 |
GB9424323D0 (en) | 1995-01-18 |
TW260767B (zh) | 1995-10-21 |
GB2284912A (en) | 1995-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1127899A (zh) | 具有推测指令取指的数据处理器及操作方法 | |
US10042643B2 (en) | Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor | |
US10394563B2 (en) | Hardware accelerated conversion system using pattern matching | |
CN1296827C (zh) | 一种使用数据地址增加组相关存储器的访问速度的方法 | |
US9921842B2 (en) | Guest instruction block with near branching and far branching sequence construction to native instruction block | |
JP3670039B2 (ja) | スーパースカラマイクロプロセッサ | |
US10241795B2 (en) | Guest to native block address mappings and management of native code storage | |
CN1109967C (zh) | 多线程处理器中指令和关联读取请求的后台完成 | |
US5442760A (en) | Decoded instruction cache architecture with each instruction field in multiple-instruction cache line directly connected to specific functional unit | |
US6141747A (en) | System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word | |
EP0957428B1 (en) | Method and apparatus for fetching non-contiguous instructions in a data processing system | |
US7434037B2 (en) | System for target branch prediction using correlation of local target histories including update inhibition for inefficient entries | |
US7707396B2 (en) | Data processing system, processor and method of data processing having improved branch target address cache | |
US7506105B2 (en) | Prefetching using hashed program counter | |
EP0107449B1 (en) | Computer with multiple operating systems | |
US11687343B2 (en) | Data processing apparatus and method for providing candidate prediction entries | |
US20170161074A1 (en) | Multilevel conversion table cache for translating guest instructions to native instructions | |
US20080126771A1 (en) | Branch Target Extension for an Instruction Cache | |
EP0927394B1 (en) | A cache line branch prediction scheme that shares among sets of a set associative cache | |
US11900120B2 (en) | Issuing instructions based on resource conflict constraints in microprocessor | |
US5737749A (en) | Method and system for dynamically sharing cache capacity in a microprocessor | |
US6487637B1 (en) | Method and system for clearing dependent speculations from a request queue | |
US7340567B1 (en) | Value prediction for missing read operations instances | |
US20030182539A1 (en) | Storing execution results of mispredicted paths in a superscalar computer processor | |
US7469332B2 (en) | Systems and methods for adaptively mapping an instruction cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C01 | Deemed withdrawal of patent application (patent law 1993) | ||
WD01 | Invention patent application deemed withdrawn after publication |