CN1282024A - 具有静态转移预测支持的去耦取指令-执行引擎 - Google Patents
具有静态转移预测支持的去耦取指令-执行引擎 Download PDFInfo
- Publication number
- CN1282024A CN1282024A CN00121606A CN00121606A CN1282024A CN 1282024 A CN1282024 A CN 1282024A CN 00121606 A CN00121606 A CN 00121606A CN 00121606 A CN00121606 A CN 00121606A CN 1282024 A CN1282024 A CN 1282024A
- Authority
- CN
- China
- Prior art keywords
- pairing
- instruction
- pbr
- transfer
- shifted
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000003068 static effect Effects 0.000 title abstract description 30
- 238000000034 method Methods 0.000 claims abstract description 66
- 238000012545 processing Methods 0.000 claims abstract description 20
- 238000012546 transfer Methods 0.000 claims description 126
- 239000000872 buffer Substances 0.000 claims description 50
- 230000008569 process Effects 0.000 claims description 10
- 230000000875 corresponding effect Effects 0.000 description 34
- 230000015572 biosynthetic process Effects 0.000 description 19
- 238000005755 formation reaction Methods 0.000 description 19
- 230000007246 mechanism Effects 0.000 description 11
- 230000008859 change Effects 0.000 description 9
- 238000006073 displacement reaction Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 102000004357 Transferases Human genes 0.000 description 2
- 108090000992 Transferases Proteins 0.000 description 2
- 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
- 238000010586 diagram Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012360 testing method Methods 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
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)
- Oscillators With Electromechanical Resonators (AREA)
- Control Of Electric Motors In General (AREA)
- Filters And Equalizers (AREA)
Abstract
提供一种具有静态转移预测支持的去耦取指令-执行引擎。一种在具有从执行流水线去耦的取指令的计算机处理***预取转移指令目标的方法包括产生准备-转移(PBR)操作的步骤。PBR操作包括对应于与其配对的转移的地址位以及对应于一个所希望的转移目标的地址位。在配对转移执行之前预定PBR操作的执行以实施其间所要求的等待时间。在PBR操作执行时,使用对应于该配对转移的PBR操作的地址位确定该配对转移是否有效。当该配对转移有效时,使用对应于所希望的转移目标的PBR操作的地址位读取所希望的转移目标。
Description
本发明一般涉及计算机处理***并且,特别涉及一种具有静态转移预测支持的去耦取指令-执行引擎。
早期的微处理器一般一次处理一条指令。使用四个顺序阶段处理每个指令:取指令;解码指令;执行指令;以及写回结果。在这样的微处理器内,每个不同的处理阶段由不同的专用逻辑模块执行。每个逻辑模块在开始其操作之前进行等待,直到前面所有的逻辑模块完成操作为止。
通过提高计算机硬件操作速度以及在一个指令形式或另一个中引入并行处理来获得提高的计算速度。最近已经引入“超标量”和“极长指令字”(VLIW)微处理器以实现并行处理。它们具有用于执行指令的多个执行单元(例如,多个整数算术逻辑单元(ALUs))并且,这样,就具有了多个“流水线”。因此,在一个超标量或VLIW微处理器中可以同时执行多个机器指令,从而在设备的整体性能及其***应用中提供明显的优点。
为便于讨论,将等待时间定义为取指令阶段和指令执行阶段之间的延迟。考虑一个将参考数据存储在一个具体的寄存器的指令。这样的指令需要至少四个机器周期来完成。在第一周期,从存储器取指令。在第二周期,解码该指令。在第三周期,执行指令并且,在第四周期,将数据写回适当的位置。
为提高效率并降低指令等待时间,微处理器设计者重叠取指令,解码,执行,和写回逻辑阶段的操作,以便微处理器同时操作数个指令。在操作中,取指令,解码,执行,和写回逻辑阶段同时处理不同的指令。在每个时钟脉冲每个处理阶段的结果通过后续的处理阶段。使用重叠取指令,解码,执行,和写回阶段的技术的微处理器被称为“流水线”微处理器。原则上,当执行一个已知的指令序列时,一个流水线微处理器每个机器周期可以完成一个指令。这样,在流水线微处理器,通过在实际执行第一指令完成之前开始第二指令的处理可以起到减少等待时间的作用,这是显而易见的。
不幸的是,在失速(stall)引入流水线微处理器的情况下可能存在各种情况。一种这样的情况是转移指令。通常,微处理器内的指令流需要从存储器内的连续位置取指令并解码。转移指令是在该指令流内产生一个中断的指令,例如,取出转移使解码沿着顺序路径被断开,并且在存储器内的一个新位置再继续。存储器内的新位置被称为该转移的目标地址。流水线指令流内的这样的中断导致流水线性能的显著恶化。
由于体系结构和编译器设计者继续致力于较大的并行度,流水线失速对于并行性能损失的影响变得非常显著。对于高的并行级,执行一个指令所花费的平均周期数必须恒小于1。通过最小化来自失速的CPI损失,这样小的CPI才是可能的,从而减少其对流水线吞吐量的影响。由于较高的指令发布率所造成的潜在地更大的失速频率加剧了减低失速损失的问题。必须找到减少这些损失的更为可靠的方法。减少失速损失的两种公知方法包括去耦体系结构和转移预测。
去耦体系结构使用缓冲和控制机制以分离来自流水线其他部分的存储器存取。当出现一个高速缓存故障时,去耦体系结构允许流水线的其他部分继续向前移动,仅使那些基于该高速缓存存取的指令失速。来自流水线的高速缓存存取的去耦可以用于指令或数据高速缓存。来自执行流水线的指令高速缓存的去耦对于超标量和EPIC/VLIW(极长指令字)体系结构都非常有利,下文将其称为去耦-取指令-执行。L.Gwennap在“Intel,HP make EPIC disclosure”(Microprocessor Repor,11(14):1-9,october 1997.)中进一步描述了EPIC体系结构。
去耦-取指令-执行体系结构使用指令缓冲器和转移预测以便使得取指令独立于流水线的其余部分。由于从指令高速缓存存储器取出指令,所以将指令缓冲器组织为接收指令的队列。随着指令进入队列,转移预测机制检查转移指令的存在。当找到一个转移时,转移预测机制预测可能的转移目标(地址)和方向。如果必要的话,转移预测机制将取指令重新定向到预测的地址。
今天多数通用处理器使用动态转移预测机制,该机制在执行时选择希望转移发生的方向。动态转移预测机制包括预测计数器表,历史记录表,和转移目标缓冲器。很多这样的方案都增加了相当多的硬件,并且可能影响处理器频率。由Calder等人在“A System LevelPerspective on Braneh Architecture Performance”(Proceedingsof the 16th Annual International Symposium On ComputerArchitecture,pp.199-206,May 1989.)中以及Chang等人在”Comparing software and hardware schemes for reducing thecost of branches”(proceedings of the 16th Annual InternationalSymposium On computer Archtecture,pp.224-233,May 1989.)中描述了动态转移预测方案。
静态转移预测提供一种交替的预测方法,这是因为其对应于在编译时选择希望转移发生的方向。对于多数通用应用程序静态转移预测执行效果不如动态转移预测,但是静态转移预测在某些应用程序市场效果很好,因此用于这些市场的体系结构能够放弃动态转移预测的成本。这样的市场包括介质处理和软件的二进制转换,介质处理和软件的二进制转换使用动态属性统计信息执行运行时间编译,使得进行准确的静态转移预测。由Fritts等人,在“Understanding multimediaapplication characteristics for designing programmable mediaprocessors”(SPIE photonics West,Media Processors’99,SanJose,CA,Jan.1999)中进一步描述了介质处理。由Altman等人,在“Execution-based Scheduling for VLIM Architectures”(提交给Euro-Par’99,Toulouse,France,Sept.1999)中描述了软件的二进制转换。
在静态转移预测中,由于取指令逻辑自动地顺序地连续,很容易支持被预测为未被采用的条件转移,即,那些被希望不通过顺序路径的转移。被预测为被采用的无条件转移和条件转移,即,希望在非顺序目标指令处连续执行的转移,需要用于使取指令单元改变方向的支持以便在转移执行之前开始预取所希望的转移目标。希望该预取指令在取得转移指令之后立即开始以便使所希望的转移目标的执行恰好位于转移执行之后。
完成上述过程的一种方法使用转移操作中的预测位。在读取转移操作之后,如果预取位指示使用,则将所希望的转移目标地址送到取指令单元。该方法的一个问题是预测方向和目标地址的确定需要存取转移操作的内容。一旦由指令高速缓存存储器返回该转移操作,确定预测位所设定的方向,以及已经计算所希望的转移目标地址,就只能取出所希望的转移目标。图1是表示取出预测转移目标中的时序的图。选项1对应所要求的取出预测转移目标中的时序,该取出预测转移目标恰好处于开始取出转移操作之后。选项2对应于实际的取指令时序,该时序由于需要转移操作的内容而被延迟。如图所示,在具有f个阶段的指令高速缓存存储器中,可用的最早的转移操作的内容为启动取指令之后的f周期。然而,开始取出所希望的转移目标的要求时间是仅为转移开始之后所取出的一个周期。因此,用于执行静态转移预测的预测位的使用常常不允许取出所预测的转移目标的理想时序,而是在转移和预测的目标之间***至少f-1个延迟周期。
一种替换的技术是发出用于所希望的转移目标的取指令提示操作(下文将其称为“准备-转移(PBR)”操作)。PBR操作一般具有一个指示预测转移目标的地址或位移的主字段。附加字段包括用于所要求的转移目标地址的寄存器,或指示是否执行PBR操作的判定条件。这样的判定对于实现多个智能静态转移预测的方法,例如转移相关性尤其有用。在不使用预测的情况下执行静态转移相关性需要真实的代码复制。Smith等人在“Improving the accuracy of staticbranch prediction using branch correlation”(Proceedings ofthe 6th Annual Internatinoal Conference On ArchitecturalSupport for programming Languages and operating system,Oct.1994.)中以及Gloy等人在“performance issues in correlatedbranch prediction schemes”(proceedings of the 28th AnnualInternational symposium On Microarchitecture,Ann Arbor,Michigan,PP.3-14,Nov.1995.)中提供了关于转移相关性的论述。
准备转移操作的致命方面是时序。PBR操作应被安排为在启动读取相应的转移操作之后立即开始读取所要求的转移目标,如图1中的选项1所示。PBR操作不能象禁止取指令转移操作那样早地使取指令改变方向。同样,PBR操作应该不使取指令较晚地改变方向以避免转移和预测目标之间的额外延迟。实现该时序需要两个机构,首先,使PBR操作与被预测的转移联合的机构是必须的。该联合在下文被称为“配对”,并且将相应的转移称为“配对转移”。其次,用于识别配对转移的取指令已开始并且所希望的转移目标的取指令可能开始的机构是必须的。
存在两个用于实现准备转移操作的主要方法。第一种方法通常用于按次序锁步流水线。一个锁步流水线是这样的一个流水线,即,其中流水线的所有阶段一起推进。如果任何一个流水线阶段不能推进(由于任何原因),则没有流水线阶段可以推进(即,所有阶段或者“步进(step)”在一起,或者“锁定”在一起)。第一种方法可以将PBR操作预定为转移之前的固定数目的指令。转移相对于PBR操作的固定位置作为不但唯一定义配对转移而且指示所希望的转移目标的取指令的开始时间的装置。锁步流水线内的所有流水线阶段的相关特性保证固定位置方法内的正确取指令时序。然而,固定位置时序模式仅对锁步流水线有效并且不能用于去耦取指令执行结构,该结构消除执行流水线和取指令流水线之间的相关性。该方法由Patterson等人在“RISC I:A Reduced Instruction Set VLSI Computer”(proceedings of the 8th Annual Symposium On ComputerArchitecture,April 1981.)中作进一步的描述。
用于实现准备转移操作的第二种方法在用于配对转移操作的PBR操作中使用一个寄存器。该转移操作使用相同的寄存器以提供其目标地址。该寄存器名称提供一种在不使用于PBR操作的固定位置成为必须的情况下进行配对的方法,并允许较大的预定自由度。实现用于该技术的时序首先需要确定在预测转移目标的取指令开始之前转移操作是否可用。可以通过使用与PBR操作相同的寄存器检索用于转移操作的新存取的指令,指令缓冲器,以及流水线来确定转移操作的可用性。一旦找到配对转移,可以开始所希望的转移目标的取指令。与预测位方案一样,该方案也需要在进行所希望的转移目标之前存取转移操作的内容,因此,它也迫使在转移取指令及其预测目标之间最少有f-1个周期的延迟。该方案在下面的文章内被进一步描述:作者为Kathail等人,“HPL PlayDoh Architecture specification:Version1.0”,HPL-93-80,Feb.1994。
一种用于配对的替换方法是指示在出现配对转移的PBR操作之后的指令数。然而,该方法需要更为复杂的去耦取指令-执行流水线,特别是在具有压缩指令格式的明确并行体系结构内实现,其中指令大小在解码之前未知。描述该方法的文章可参看Goodmen等人的“Asimulation study of architectural data queues and prepare-to-branch instruction”(proceedings of the IEEE InternationalConference On Computer Design’84, Port Chester,NY,1984,pp.544-549)。
尽管存在各种静态转移预测方案,这些方案中的大多数被设计为用于锁步流水线并且,因而不能很好地适用于去耦取指令-执行结构。
因此,希望一种用于支持去耦取指令-执行流水线上的静态转移预测的方法和装置,并且该方法和装置也是极为有益的。
本发明涉及具有静态转移预测支持的去耦取指令-执行引擎。本发明允许在取转移指令之后立即取出转移指令的预测转移目标。与现存的静态转移预测方法不同,在取出预测转移目标之前不需要转移操作的内容。
根据本发明的第一方面,一种用于在具有从执行流水线去耦的取指令的计算机处理***内预取转移指令的目标的方法包括产生准备转移(PBR)操作的步骤。PBR操作包括对应于与其配对的转移的地址位和对应于所要求的转移目标的地址位。在配对转移执行之前执行预定PBR操作以实施所要求的其间的等待时间。在执行PBR操作时,使用对应于配对转移的PBR操作的地址位确定配对转移是否可用。当该配对转移可用时,使用对应于所希望的转移目标的PBR操作的地址位取出所希望的转移目标。
根据本发明的第二方面,该方法进一步包括解码配对转移的步骤。当检测到错误的预测时,使配对转移之后的所有操作无效并且取出配对转移的正确目标。
根据本发明的第三方面,当出现被错误预测的配对转移时,取出正确目标的步骤包括在配对转移之后立即取出一个指令的步骤。
根据本发明的第四方面,当未出现被错误预测的配对转移时,取出正确目标的步骤包括取出对应于配对转移内所规定的目标地址的一个指令的步骤。
通过下面结合附图对优选实施例的详细描述本发明的这些和其他方面,特征以及优点将变得显而易见。
图1是表示取出转移指令的预测转移目标的时序图;
图2是根据本发明一个实施例的用于支持静态转移预测的去耦取指令-执行结构的图;
图3是一种用于在具有从执行流水线去耦的取指令的计算机处理***预取转移指令的目标的方法的流程图;
图4是表示相对于其配对转移的PBR操作的预定图;
图5是表示一个准备转移操作及其配对转移之间的最佳等待时间的图;
图6是根据本发明的另一个实施例用于支持静态转移预测的去耦取指令-执行结构的图;
图7是表示根据本发明一个实施例在图6的指令缓冲器所包含的字段的图;
图8是表示根据本发明一个实施例的图6的PBR未决表所包含的字段的图;
图9是表示图6的取指令控制单元508的图;以及
图10是表示根据本发明一个实施例的程序包选择的图。
本发明涉及具有静态转移预测支持的去耦取指令-执行引擎。本发明允许在取出转移指令之后立即取出一个转移指令的预测转移目标。此外,与现存的静态转移预测方法不同,在取出预测转移目标之前不需要转移操作的内容。
为便于清楚理解本发明,现在给出本文所使用的术语的定义。“静态转移预测”涉及在编译时选择(预测)一个指令所希望的采取的方向。“去耦取指令-执行”(通常也被称为“去耦存取-执行”)涉及在流水线计算机处理***来自执行流水线的指令高速缓存存储器的去耦。一个“准备转移”(PBR)操作是,在该转移实际执行之前,在将取指令改变方向为该转移所希望的目标的一个转移之前预定的一个指令。“配对”涉及准备转移操作和其预测的转移之间的关联,该转移被称为一个“配对转移”。“错误预测出现”涉及被预测为发生,但是实际未发生的一个转移(以及因此使用一个PBR操作改变指令流方向的指令)。“错误预测未发生”涉及被预测为未发生,但是实际发生的一个转移。
现在将提供对于本发明的一般描述以便将读者引入本发明的概念。随后,将给出对于本发明各个方面的详细描述。
本发明对应于使用准备转移(PBR)方法的静态转移预测的方法。本发明在规定相应转移操作的最后少数几个地址位的PBR操作中增加一个字段。使用转移操作地址定义一种在不需要存取转移操作的内容的情况下配对两个操作的方法。因此,有可能确定配对转移操作是否处于在该转移刚好可用之前被取出的过程。这就使得该结构在配对转移的取指令开始之后立即开始取出预测的转移目标。
图2是根据本发明一个实施例的用于支持静态转移预测的去耦取指令执行结构的图。该结构体现了一种具有几个添加部分以保证用于准备转移操作的适当支持和取指令时序的典型指令缓冲器结构。该设计假定6个指令缓冲器队列,501-506。
取指令控制单元508包括一个取指令地址表510,下一个取指令寄存器511,以及一个转移顺序表512。取指令控制单元508使用取指令地址表510和下一个取指令寄存器511以分别跟踪所有未解决的取指令以及下一个取指令请求。转移顺序表512在每个配对转移之后存储下一个顺序指令的地址。
一个PBR未决表514维持未决PBR操作的列表。一个配对转移找到电路516用于查找配对转移操作以及无效该转移之后的所有操作。配对转移找到电路516与流水线地址表516,取指令地址表510,以及指令缓冲器地址协同操作以便在执行流水线中分别查找指令高速缓存存储器518,以及指令缓冲器501-506。解码配对转移电路用于检查配对转移的存在,以及确定在转移顺序表512是否存储下一个连续的指令地址。指令缓冲器控制和解码电路540控制指令缓冲器队列的操作并解码要发出的下一个并行操作组。这些单元中的每一个将在下面详细描述。
图3是一种用于在具有从执行流水线去耦的取指令的计算机处理***预取转移指令的目标的方法的流程图。因此,图3的方法可以通过使用图2的去耦取指令-执行结构来实现。
产生一个准备-转移(PBR)操作,该产生过程包括对应于与其配对的转移的地址位以及对应于该转移的所要求的目标的地址位(步骤302)。在该配对转移执行之前预定PBR操作的执行以实施其间所要求的等待时间(步骤304)。
在执行PBR操作时,使用对应于该配对转移的PBR操作的地址位确定该配对转移是否可用(步骤306)。当该配对转移不可用时,取指令沿着连续路径继续(步骤307)。
当配对转移可用时,使用对应于所希望的转移目标的PBR操作的地址位读取所希望的转移目标(步骤308)。下面,当配对转移达到指令缓冲器队列的开始时,将其解码并送到执行流水线(步骤310)。
在执行期间,确定配对转移的目标是否已被错误预测(步骤312)。如果是这样,使配对转移指令之后的所有操作无效(步骤314),并且读取配对转移的正确的转移目标(步骤316)。当出现配对转移指令被错误预测时,正确的转移目标对应于紧跟在该配对转移目标之后的指令。当未出现配对转移指令被错误预测时,在该配对转移指令中提供正确的转移目标。步骤302和304最好在编译时执行而步骤306到316在运行时执行。
现在将给出对于准备-转移操作的描述。准备转移-操作应满足两个要求。首先,该操作应包含一个字段,该字段依次包含其配对转移的最后几个地址位。该地址可以是关于其配对转移操作本身,或者关于仅包含一个转移的操作组。一般地,3-5位足以满足该字段的尺寸。使用配对转移的最后几个地址位定义跟随其中应预定该配对转移的PBR操作的一个预定窗口。程序中的每个转移具有一个关联的静态预测值,该值组合定义一个程序执行的预测路径。图4是一个表示相对其配对转移的PBR操作的予定图。尤其是,图4示出一个预测路径的直线图,而被预测为“未出现的”的转移表示成离开该路径的潜在的侧边出口。PBR操作及其配对转移应该都被预定在该预测路径上,该路径具有由预定窗口的大小定义的二者之间的可允许的距离。假定使用配对转移地址的n个最低有效位,则定义2n个操作的预定窗口,在此范围内配对转移可以被唯一识别。使用该n位地址,配对转移被识别为沿具有相同的最低有效位地址位的预测路径出现的第一次转移。
其次,PBR操作应预定在该配对转移之前的预定数目的周期以便产生用于读取所希望的转移目标的最佳时序。PBR操作应被预定为比所要求的周期数较接近或较远离该配对转移,但是通过该等待时间可以得到最佳性能。通过处理器设备定义该所要求的等待时间。假定一个用于PBR操作的具有e个执行阶段的实施,w个周期的线延迟,f个取指令阶段,以及d个解码和寄存器取指令阶段,在缺少失速的情况下,该距离为e+w+f+d-1个周期,如图5所示,该图是表示准备-转移操作及其配对转移之间的最佳等待时间的图。图4中的预定窗口也示出了PBR操作和配对转移之间的最佳等待时间。可以理解上面的距离是所要求的,但不是必须的。注意到当前的处理器一般具有1-2个取指令阶段,1个PBR执行阶段,2-3个解码阶段,以及用于线延迟的0周期,从而获得3-5个周期的等待时间。然而,由于时钟频率继续增加,线延迟成为较为突出的问题,并且该等待时间被希望增加到5-7个周期。
该等待时间的时序排列基于所使用的体系结构的类型。在明确的并行结构中,每个周期只可以发出一个并行指令,因此该等待时间可以通过在配对转移之前为PBR操作预定所必须的并行指令数来实现。在超级标量处理器,在运行时间可以记录指令,因此不易预测任何两个指令的执行时间之间的等待时间。然而,通过足够早地预定PBR操作可以确保该等待时间,使得PBR和转移操作之间的所有操作的相关链和/或资源相关性保证PBR操作和配对转移之间所要求的等待时间。
现在将全面描述确定配对转移是否可用的上述步骤。当出现一个准备-转移操作时,在将取指令改变方向为所希望的转移目标之前必须确定该配对转移操作是否可用。根据当该配对转移相对PBR操作被预定时,以及是否出现任何失速,配对转移操作处理可以处于多个可能的阶段,包括:执行流水线;指令缓冲器;被指令高速缓存存储器取指令;以及还未被取指令。
因此,确定配对转移的位置的处理需要在每个流水线阶段(在PBR执行阶段之前),指令缓冲器,以及指令高速缓存存储器取指令阶段查找配对转移的方法。进一步,由于只使用配对转移的几个最低有效地址位,在找到多个匹配的情况下,足够的信息必须用以确定哪个指令是实际的配对转移。一旦确定配对转移的位置,则必须采取适当的动作。
如果配对转移处于前三个位置中的任何一个,则配对转移操作可用并且所希望的转移目标的取指令可以开始。然而,配对转移之后的附加的后续操作也可能用于流水线,指令缓冲器以及指令高速缓存存储器。由于取指令被PBR操作改变方向,配对转移之后的所有后续操作必须被挤压到流水线,指令缓冲器以及指令高速缓存存储器。在指令高速缓存存储器的情况下,这需要几个机制以便在其已被取指令之后无效出问题的后续操作。
如果配对转移还未被取指令,则该配对转移不可用并且PBR操作必须等待直到已发出该配对转移的取指令请求为止。只有在指令高速缓存存储器在该配对转移的地址开始取指令之后,PBR操作可以改变取指令单元的方向以取指令所希望的转移目标。在等待时,PBR操作和所有与其相关的信息必须保留在一个状态寄存器中。
现在将给出用于错误预测转移的支持的一般描述。与准备-转移操作相同,错误预测转移的出现必须还使取指令改变方向并且无效流水线内的所有操作。然而,不必查找或等待一个配对转移。一个错误预测简单地无效所有指令缓冲器,所有指令高速缓存存储器存取,以及在错误预测转移之后执行流水线内的所有后续操作,并且立即使取指令改变方向为正确的转移目标。再者,在指令高速缓存存储器的情况下,在其已被取指令之后必须无效所取出的指令。
对于错误预测转移,可能出现两种类型的错误预测。第一种类型包括预测为不发生,但是实际发生的转移。在这种情况下,在转移操作中规定了实际转移目标的地址,因此可以将其提供给用于读取正确的转移目标的取指令单元。第二种错误预测类型包括预测为发生,但是实际未发生的转移。在这种情况下,在转移操作中未规定了实际转移目标的地址,但是实际转移目标的地址是该转移后面的后续操作的地址。在这种情况下获得取指令正确的转移目标需要:a)从错误预测转移地址产生正确的转移目标的后续地址,或者b)在流水线较早解码该转移操作之后将后续转移目标地址存储在一个状态寄存器中。尽管前者的选择看上去像是一个较好的方法,后者的方法对于使用压缩指令格式的明确并行结构更为有效,后面将给出描述。
现在将给出取指令控制单元的一般描述。取指令控制单元指示指令高速缓存存储器何时以及从何位置执行取指令。本质上,取指令单元在请求取指令的各种情况之间仲裁并且接着向当时不忙的指令高速缓存存储器发出适当的取指令请求。存在5种请求一个指令的事件。以增加的优先级顺序列出,它们是:(1)指令缓冲器请求顺序取指令;(2)准备-转移操作请求所希望的转移目标;(3)转移预测未发生被错误预测并请求非后续的转移目标;(4)转移预测发生被错误预测并请求后续的转移目标;以及(5)异常或复位请求异常处理器。
多数常见并且最低优先级的事件是后续取指令的请求。在该情况下,指令缓冲器已被腾空到其可以接受较多的指令数据的程度并且因此请求下一个后续指令。
当实施取指令控制时,如果取指令请求发生时指令高速缓存存储器忙,则取指令请求必须存储在指示下一个取指令的指令地址的一个状态寄存器。如果多个取指令请求在指令高速缓存存储器成为可用之前被记录到该寄存器,则只有最高优先级的取指令请求需要被保存。
现在将给出对于指令缓冲器的一般描述。指令缓冲器的目的是去耦来自执行流水线的取指令。完成该过程所必须的指令缓冲器的数目与体系结构有关。该指令缓冲器被排列为一个队列。该队列的任何实施应该支持标准队列属性,无论何时该队列的开始为空则使队列前进,并且将指令高速缓冲存储器数据仅写到位于队尾的第一空指令缓冲器。
这里描述与静态转移预测有关的方法,该指令缓冲器队列的责任是当足够数目的项成为可用时发出下一个后续指令组的取指令请求。在发出取指令请求之前所必须的空间量还必须解释任何当前未完成的取指令请求所必须的空间。例如,在2-周期指令高速缓存存储器,多达两个指令的取指令在高速缓存存储器内当前未完成,因此如果至少三个缓冲器为空,则应该仅发出一个请求。
现在将给出本发明的静态转移预测方法的实现。应该认识到下面的实施可以很容易地被本领域技术人员修改以对应于计算机处理***的各种体系结构。
本发明的静态转移预测方法在一个明确并行指令计算(EPIC)结构上实施。该结构明确描述了被并行发出作为一个单独的长指令字的指令。该并行指令由一个压缩指令格式定义,该格式使用每次操作之后的停止位以描绘该并行操作。一个操作所声明的停止位指示在其和具有一个声明停止位的前一个操作之间的所有指令为并行执行。为允许操作格式内用于停止位和预测的附加空间,将三个操作压缩到一个128位的“包”,取代每个操作的32位。由于以Intel即将问世的Metced处理器为基础,该结构与Intel在1997年公布的IA-64指令集类似。在上面的标题为“Intel,HP公开EPIC”的参考文章中描述了IA-64指令集。
我们的实施假定每个周期能够发出多达6个的操作的长指令的EPIC结构。每个明确并行指令组被称为一个“数据包”,并且每个数据包可以包含零和6个操作之间的任何操作,其中零指令的情况被定义为一个由一个停止位跟随的空操作(NOP)。
为简化内部实施,对于用作转移目标的操作设置限定。将一对在32字节边界上排列的包定义为“双包”(double-bundle),到非后续目标的转移只允许到达一个双包的开始。该限制对于静态转移预测方法,或者甚至该实施不是必须的。仅通过非常小的逻辑变化可以很容易地允许到每个包的开始的转移。
关于该实施的EPIC指令格式的一个令人感兴趣的方面是并非所有的操作通过存储器地址直接可寻址。取代一个操作的地址是以其包的地址以及其在包内的位置(或者为位置0,1或者为2)为特征。因此,使PBR操作和转移操作经该转移操作的最后几位相关将不可能。相反,在只有一个配对转移操作处于一个双包的限制的情况下,只有包含该配对转移的双包的地址可用于该相关。再次,在最少的附加逻辑的情况下,可以将该限制放松到将配对转移的数目限制到每包一个(取代每双包一个)。
图6是根据本发明另一个实施例的用于支持静态转移预测的去耦取指令-执行体系结构的图。该结构体现一种典型的具有较少的保证准备-转移操作的适当支持和取指令时序的附加物的指令缓冲器结构。该设计假定一个6指令缓冲器队列,501-506,每个指令缓冲器包含一个6个操作的双包。取指令控制单元508使用取指令地址表510和下一个取指令寄存器511以分别跟踪所有的未执行的取指令以及下一个取指令请求。转移顺序表512存储每个配对转移之后的下一个后续数据包的地址。PBR未决表514保留未决PBR操作的列表,并且配对转移找到电路516用于查找配对转移操作并且无效该转移之后的所有后续操作。配对转移找到电路516与流水线地址表516,取指令地址表510,以及指令缓冲器地址协同操作以便分别在执行流水线,指令高速缓存存储器518,以及指令缓冲器501-506进行查找。最后,位移量控制单元520以及数据包选择逻辑电路522为用于从前两个指令缓冲器501,502提取下一个数据包的专用于EPIC结构的电路。解码配对转移电路524用于检查当前被解码的数据包内的配对转移的存在,并且确定是否将下一个后续数据包地址存储到转移顺序表512。这些单元中的每一个将在下面进行详细描述。
图7是表示根据本发明一个实施例的图6的指令缓冲器501-506中的每一个所包含的字段的图。这四个字段为:对应于双包内容的数据字段602;对应于双包地址的地址字段604;对应于有效位606a的有效字段606;以及对应于“路径上”(on-path)位608a的“路径上”字段608。为保留适当的队列实施,将该指令缓冲器组织为一个FIFO。
一个DB(双包)包含配对转移电路610,并将一个未决PBR操作的配对转移地址的最低n个有效位与取指令地址表510或指令缓冲器队列501-506所提供的第二个双包地址进行比较。如果第二个地址对应于表510或队列501-506内地有效项,则其指示已找到包含配对转移的双包。
路径上位608a表示前一个未决PBR操作检查该双包以用于一个配对转移并随后在指令缓冲器或指令高速缓存存储器找到其配对转移,因此该双包位于执行的正确路径上。因此,当设定路径上位608a(当在指令高速缓存存储器启动取指令时初始复位608a)时,查找配对转移将一直返回否定。这就保证对于配对转移操作将找不到多个匹配。
有效位606a表示当前内容是否有效。有效/路径上控制电路612根据来自指令高速缓存存储器或前一个指令缓冲器的输入数据,以及根据该项状态的变化产生用于每个指令缓冲器项的有效和路径上位。一个2∶1多路复用器614多路复用指令高速缓存存储器518或前一个指令缓冲器所提供的地址和数据以用于当前指令缓冲器(队列内)的输入。
PBR未决表514实施一个保留所有未决准备-转移操作的状态的队列。图8是表示根据本发明一个实施例的图6的PBR未决表514所包含的字段。字段为:预测BR目标地址字段702;配对BR地址字段704;一个对应于“找到”位706a的“找到”字段706;一个对应于“取指令的”位707a的“取指令的”字段707;以及一个对应于“未决”位708a的“未决”字段708。
预测的BR目标地址字段702和配对的BR地址字段704分别包含所希望的转移目标的地址以及包含配对转移的双包的地址的最后几位。找到字段706,取指令字段707以及未决字段708每个都包含表示未决PBR的状态的位。当一个PBR操作执行并且接着被加到PBR未决表514时设定第一状态位,即,未决位708a。位708a保持设定直到配对转移经数据包选择逻辑522离开指令缓冲器,并且被解码配对转移524识别为止,其中解码配对转移524清零未决位708a,推进PBR未决表514,并将下一个后续数据包地址写入到转移顺序表512。
如上所述,一个未决PBR操作可以处于三个状态中的一个。查找其配对转移操作,可以找到该配对转移但是还未发出所希望的转移目标的取指令,或者已找到该配对转移并具有所发出的取指令。这些状态可以由对应于找到字段706的找到位706a,以及对应于取指令字段707的取指令位707a表示。当一个新的PBR操作执行并被加到PBR未决表514时重新设定找到位706a和取指令位707a。尽管未声明找到位706a,未决PBR将其配对转移的地址发送到配对转移找到电路516,配对转移找到电路516每个周期查找流水线,指令缓冲器501-506,以及指令高速缓存存储器518直到找到配对转移为止。一旦找到,就声明找到位706a,并且配对转移找到电路516无效配对转移之后的任何后续操作,在保留以前的有效操作并包括该配对转移中设定路径上位608a,并且可以将所希望的转移目标的取指令请求发送到取指令控制单元508。如果指令高速缓存存储器518不能立即接收新的取指令请求,PBR操作试图在后面的每个周期进行新的取指令请求直到取指令控制单元508能够接受新的请求为止。当接受该请求时,声明取指令位707a。
将PBR未决表514组织为避免不正确地查找配对转移操作的队列。转移的预测方向定义一个执行的预测路径。PBR操作必须以与其配对转移的相同顺序出现,因此每个PBR操作仅在预测路径的适当部分查找其配对转移。该队列排列满足该要求,每次处理一个PBR操作,因此顺序查找配对转移,忽略已被识别为路径上的操作。
图9是表示图6的取指令控制单元508的图。取指令控制单元508在各种取指令请求之间进行仲裁,跟踪所有未执行取指令的地址和有效性并存储配对转移之后的后续地址。取指令地址表510具有指示指令高速缓存存储器是否可接收另一个取指令请求,以及提供一个所有未执行取指令的历史记录的双重目的。取指令地址字段804存储存取该取指令的双包的地址。取指令地址表510还具有用于其内的每项的一个有效字段506以及一个分别对应于有效位506a和路径上位508a的路径上字段808。用于每项的有效位506a和路径上位508a分别指示该取指令数据是否有效,以及是否可以分别查找用于配对转移的其操作。该有效位506a确定从指令高速缓存存储器得到的数据的有效性。有效位506a可以初始设定,但是在找到一个配对转移之后可以通过一个错误预测转移或通过一个未决PBR操作去声明该有效位506a。路径上位508a被初始重新设定,并且如果其包含沿配对转移之前的路径上的操作,就只能设定路径上位508a。
取指令控制单元508还包含下一个取指令寄存器511。下一个取指令寄存器511包括一个有效字段810,一个取指令地址字段812,以及一个优先次序字段814。当指令高速缓存存储器成为可用时取指令地址字段812和优先次序字段814分别存储要取指令的下一个指令的地址和优先顺序。有效字段810指示该项是否对应于在指令高速缓存存储器内执行的一个实际取指令。优先次序字段814包括指示取指令请求的优先级的三位,如上所述。三位中的一位的设定对应于下面请求类型中的一个:PBR操作请求;错误预测转移请求;以及异常/复位请求。当未设定位时,指示一个后续取指令请求。
经4∶1多路复用器816提供到下一个取指令寄存器511的输入,该多路复用器816多路复用PBR表目标地址,异常/复位请求地址,转移后续地址,以及递增计数器816的输出。递增计数器816从开始下一个取指令处产生下一个后续地址。
取指令控制单元508还包含转移顺序表512,该表是存储每个配对转移之后的下一个后续数据包的地址(双包地址802a和位移量803a)的队列。双包地址802a和位移量803a分别存储在后续地址字段802以及位移量字段803。如果一个配对转移被错误预测,其必须返回这里可用的其后续转移目标。因为后续转移目标不必处于双包的开始,指示双包内的数据包的开始的位移量(下面进行描述)还包含在转移顺序表512中。转移顺序表512内的项数应等于可能的未决PBR操作的数目(PBR未决表的尺寸)。
图6的配对转移找到电路516的描述如下。必须查找指令高速缓存存储器,指令缓冲器501-506,以及对应于未决PBR操作的配对转移的流水线。对于指令高速缓存存储器518,取指令地址表510保持当前执行的未执行取指令的顺序列表。对于指令缓冲器501-506,每个指令缓冲器具有其本身的地址字段。对于流水线,流水线地址表(或提供流水线内的数据包的地址和有效性的相似硬件)保留流水线内的数据包的地址。然而,应该认识到对于按次序处理器,如果预定保证当PBR操作执行时配对转移不处于执行流水线则流水线地址表516是不必须的。
配对转移找到电路516将对应于第一未决PBR操作(其找到位706a未设定)的配对转移的最后几位与这些地址中的每一个进行比较。如果地址匹配,并且未设定该操作或数据包的路径上位,则找到配对转移。配对转移找到电路516将该找到通知取指令控制单元508,指令缓冲器501-506,以及流水线,从而无效该转移之后的所有后续操作以及设定以前所有操作的路径上位并包含该配对转移。此外,发出用于读取所希望的转移目标地址的请求,该地址由PBR未决表514提供。
图10是表示根据本发明一个实施例的数据包选择的图。因为EPIC结构不提供用于每个操作的唯一地址,必须保留用于从双包提取数据包的指针。被称为位移量803a的该指针指向当前提取的数据包内的第一操作。将位移量803a送到在前两个双包内选择下面6个操作的6个多路复用器902a-902f。接着评价这6个指令的停止位以确定指令是否属于数据包。直到包括具有第一声明停止位的指令的所有指令属于该数据包。接着调整位移量803a以指向该数据包内的最后指令之后的下一个操作。在下一个数据包的第一操作处于第二指令缓冲器的情况下,不必首先声明一个Advance信号,该信号使整个指令缓冲器队列推进。
本发明的简要总结如下。
当一个PBR操作执行时,将PBR操作写入PBR未决表514内的第一空位,分别设定对应于未决字段708的未决位708a,重新设定对应于取指令字段707的取指令位707a,以及重新设定对应于找到字段706的找到位706a。接着将其配对转移的(最后几位)地址送到配对转移找到电路516,该电路查找流水线(经流水线地址表516),指令缓冲器(经在每个缓冲器中包含配对转移电路610的指令缓冲器),以及指令高速缓存存储器518(经取指令地址表510)。在本发明的一个实施例,除每个流水线阶段内的指令内容也可以包括在该表内之外,流水线地址表516非常类似取指令地址表510。此外,对于该特定的实施,在每个数据包定义指令地址(每个流水线阶段一个数据包)将需要下面的内容:(a)其中数据包开始的双包的地址;(b)该双包内的数据包的第一指令的偏移;以及(c)表示数据包内的哪6个指令是有效的指令屏蔽(即,该数据包的实际部分)。
一旦找到配对转移,就无效该转移之后的所有后续操作,在此之前以及包括该转移的所有操作具有其路径上位设定,并且将所希望的转移目标的取指令请求发送给取指令控制单元508。取指令控制单元508将所希望的转移目标写入到下一个取指令寄存器511,并且指令高速缓存存储器518开始取指令,假定无较高的优先顺序取指令请求是未决的。当由指令高速缓存存储器518返回指令数据时,配对转移以及所希望的转移目标流过指令缓冲器501-506直到在数据包选择期间解码该配对转移并从PBR未决表514清除未决PBR操作。
对于错误预测的转移,尽管无效指令高速缓存存储器518,指令缓冲器501-506,以及流水线内的所有项,该处理也类似。接着通过实际转移目标设定下一个取指令寄存器511。对于初始预测未发生的转移,在转移操作中提供正确的转移目标地址。否则,对于初始预测发生的转移,通过转移顺序表512提供后续的转移目标地址。
总之,本发明有利于允许在读取转移指令之后立即读取的转移指令的预测转移目标。进一步,与现存的静态转移预测方法不同,在读取预测的转移目标之前不需要转移操作的内容。
应该认识到本发明可用于具有从执行流水线去耦的取指令的任何计算机处理***。应该进一步认识到本发明与任何指令分组以及在这样的***所采用的打包方法无关,这样,本领域技术人员可以很容易将其进行修改以便使用,而不用考虑指令分组或打包。
尽管参照附图已描述了所示出的实施例,应该认识到本***以及方法不限于这些明确的实施例,并且在不脱离本发明的精神和范围的情况下,本领域技术人员可以对其作出各种修改和变化。所有这些变化和修改被认为是包括在由附属权利要求书定义的本发明的范围之内。
Claims (35)
1.一种在具有从执行流水线去耦的取指令的计算机处理***预取转移指令目标的方法,该方法包括步骤:
产生包括对应于与其配对的转移的地址位以及对应于一个所希望的转移目标的地址位的准备-转移(PBR)操作;
在配对转移执行之前预定PBR操作的执行以实施二者之间所要求的等待时间;
在PBR操作执行时,使用对应于该配对转移的PBR操作的地址位确定该配对转移是否有效;和
当该配对转移有效时,使用对应于所希望的转移目标的PBR操作的地址位读取所希望的转移目标。
2.如权利要求1所述的方法,其中对应于该配对转移的PBR操作的地址位包括该配对转移的预定位数。
3.如权利要求1所述的方法,其中对应于该配对转移的PBR操作的地址位包括n个最低有效位,并且所述预定步骤包括定义2n个操作的预定窗口的步骤,其中在该2n个操作中可以唯一识别该配对转移。
4.如权利要求1所述的方法,其中对应于该配对转移的PBR操作的地址位包括一个指令组的地址以及一个用于在该指令组内识别配对转移的位置的标识符。
5.如权利要求4所述的方法,其中该指令组仅包括一个转移指令。
6.如权利要求1所述的方法,其中在该配对转移执行之前的e+w+f+d-1个周期预定PBR操作的执行,其中e是PBR操作的执行阶段数,w是对应于线延迟的周期数,f是取指令阶段数,以及d是解码和寄存器取指令阶段数。
7.如权利要求1所述的方法,其中所述确定步骤包括将对应于配对转移的PBR操作的地址位与其他指令的地址位进行比较的步骤。
8.如权利要求1所述的方法,其中所述确定步骤包括检查其他指令有效性的步骤。
9.如权利要求1所述的方法,其中当该配对转移处于执行流水线,指令缓冲器中的一个,并被指令高速缓存存储器取指令时该配对转移可用。
10.如权利要求1所述的方法,进一步包括当该配对转移可用时,无效紧跟在该配对转移之后的后续操作。
11.如权利要求1所述的方法,其中所述计算机处理***具有每个周期发出多个指令的能力。
12.如权利要求1所述的方法,进一步包括指示PBR操作是否未决的步骤。
13.如权利要求1所述的方法,进一步包括当解码该配对转移时,终止PBR操作并开始下一个PBR操作的步骤。
14.如权利要求1所述的方法,进一步包括步骤:
解码该配对转移;以及
当检测到错误预测时无效该配对转移之后的所有操作并读取该配对转移的正确目标。
15.如权利要求14所述的方法,其中所述取指令正确目标的步骤包括当出现错误预测的配对转移时读取紧跟在该配对转移之后的一个指令。
16.如权利要求14所述的方法,其中所述读取正确目标的步骤包括当未出现错误预测的配对转移时,读取对应于该配对转移规定的目标地址的一个指令。
17.一种在具有从执行流水线去耦的取指令的计算机处理***预取转移指令目标的装置,包括:
用于产生包括对应于与其配对的转移的地址位以及对应于一个所希望的转移目标的地址位的准备-转移(PBR)操作的装置;
用于在配对转移执行之前预定PBR操作的执行以实施二者之间所要求的等待时间的装置;
用于在PBR操作执行时,使用对应于该配对转移的PBR操作的地址位确定该配对转移是否有效的装置;和
用于当该配对转移可用时,使用对应于所希望的转移目标的PBR操作的地址位读取所希望的转移目标的装置。
18。如权利要求17所述的装置,其中对应于该配对转移的PBR操作的地址位包括该配对转移的预定位数。
19.如权利要求18所述的装置,其中对应于该配对转移的PBR操作的地址位包括n个最低有效位,并且所述预定步骤包括定义2n个操作的预定窗口的步骤,其中可以唯一识别该配对转移。
20.如权利要求17所述的装置,其中对应于该配对转移的PBR操作的地址位包括一个指令组的地址以及一个用于在该指令组内识别配对转移的位置的标识符。
21.如权利要求20所述的装置,其中该指令组仅包括一个转移指令。
22.如权利要求17所述的装置,其中所述用于预定装置在该配对转移执行之前的e+w+f+d-1个周期预定PBR操作的执行,其中e是PBR操作的执行阶段数,w是对应于线延迟的周期数,f是取指令阶段数,以及d是解码和寄存器取指令阶段数。
23.如权利要求17所述的装置,其中所述确定装置包括用于将对应于配对转移的PBR操作的地址位与其他指令的地址位进行比较的装置。
24.如权利要求17所述的装置,其中所述确定装置包括检查其他指令有效性的装置。
25.如权利要求17所述的装置,其中当该配对转移处于执行流水线,指令缓冲器中的一个,并被指令高速缓存存储器取指令时该配对转移可用。
26.如权利要求17所述的装置,进一步包括用于当该配对转移可用时,无效紧跟在该配对转移之后的后续操作的装置。
27.如权利要求17所述的装置,其中所述计算机处理***具有每个周期发出多个指令的能力。
28.如权利要求17所述的装置,进一步包括用于指示PBR操作是否未决的装置。
29.如权利要求17所述的装置,进一步包括用于当解码该配对转移时,终止PBR操作并开始下一个PBR操作的装置。
30.如权利要求17所述的装置,进一步包括:
用于解码该配对转移的装置;以及
用于当检测到错误预测时无效该配对转移之后的所有操作并读取该配对转移的正确目标的装置。
31.如权利要求30所述的装置,其中所述用于读取正确目标的装置包括用于当出现错误预测的配对转移时读取紧跟在该配对转移之后的一个指令的装置。
32.如权利要求30所述的装置,其中所述用于读取正确目标的装置包括用于当未出现错误预测的配对转移时,读取对应于该配对转移中规定的目标地址的一个指令的装置。
33.一种在具有从执行流水线去耦的取指令的计算机处理***预取转移指令目标的装置,包括:
用于产生包括对应于与其配对的转移的地址位以及对应于一个所希望的转移目标的地址位的准备-转移(PBR)操作的装置,该地址位对应于表示指令组内的配对转移的位置的配对转移;
用于在配对转移执行之前预定PBR操作的执行以实施其间所要求的等待时间的装置;
用于在PBR操作执行时,使用对应于该配对转移的PBR操作的地址位确定该配对转移是否有效的装置;
用于当该配对转移可用时,使用对应于所希望的转移目标的PBR操作的地址位读取所希望的转移目标的装置。
用于从指令组提取该配对转移的装置;
用于解码该配对转移的装置;以及
用于当检测到错误预测时无效该配对转移之后的所有操作并读取该配对转移的正确目标的装置。
34.如权利要求33所述的装置,其中对应于配对转移的PBR操作的地址位包括指令组的地址以及指令组内的配对转移的偏移。
35.如权利要求33所述的装置,其中使用在其间的一个平行指示位指令组内的任何两个连续指令将定义为并行。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/360054 | 1999-07-23 | ||
US09/360,054 US6523110B1 (en) | 1999-07-23 | 1999-07-23 | Decoupled fetch-execute engine with static branch prediction support |
US09/360,054 | 1999-07-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1282024A true CN1282024A (zh) | 2001-01-31 |
CN1147794C CN1147794C (zh) | 2004-04-28 |
Family
ID=23416410
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB001216066A Expired - Fee Related CN1147794C (zh) | 1999-07-23 | 2000-07-20 | 具有静态转移预测支持的去耦取指令-执行引擎 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6523110B1 (zh) |
EP (1) | EP1071010B1 (zh) |
CN (1) | CN1147794C (zh) |
AT (1) | ATE412213T1 (zh) |
DE (1) | DE60040578D1 (zh) |
TW (1) | TW563064B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102736894A (zh) * | 2011-04-01 | 2012-10-17 | 中兴通讯股份有限公司 | 一种跳转指令编码的方法和*** |
CN106796504A (zh) * | 2014-07-30 | 2017-05-31 | 线性代数技术有限公司 | 用于指令预提取的方法和设备 |
CN107077336A (zh) * | 2014-12-18 | 2017-08-18 | 英特尔公司 | 二进制转换机制 |
US10572252B2 (en) | 2013-08-08 | 2020-02-25 | Movidius Limited | Variable-length instruction buffer management |
US11768689B2 (en) | 2013-08-08 | 2023-09-26 | Movidius Limited | Apparatus, systems, and methods for low power computational imaging |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6611910B2 (en) * | 1998-10-12 | 2003-08-26 | Idea Corporation | Method for processing branch operations |
US6784889B1 (en) * | 2000-12-13 | 2004-08-31 | Micron Technology, Inc. | Memory system and method for improved utilization of read and write bandwidth of a graphics processing system |
US6741253B2 (en) * | 2001-10-09 | 2004-05-25 | Micron Technology, Inc. | Embedded memory system and method including data error correction |
JP2005038203A (ja) * | 2003-07-15 | 2005-02-10 | Denso Corp | メモリ制御方法及び装置 |
US8607209B2 (en) | 2004-02-04 | 2013-12-10 | Bluerisc Inc. | Energy-focused compiler-assisted branch prediction |
US7281120B2 (en) * | 2004-03-26 | 2007-10-09 | International Business Machines Corporation | Apparatus and method for decreasing the latency between an instruction cache and a pipeline processor |
JP3926809B2 (ja) * | 2004-07-27 | 2007-06-06 | 富士通株式会社 | 分岐命令制御装置、および制御方法。 |
US8001363B2 (en) * | 2005-04-04 | 2011-08-16 | Globalfoundries Inc. | System for speculative branch prediction optimization and method thereof |
US7472256B1 (en) | 2005-04-12 | 2008-12-30 | Sun Microsystems, Inc. | Software value prediction using pendency records of predicted prefetch values |
US7814487B2 (en) * | 2005-04-26 | 2010-10-12 | Qualcomm Incorporated | System and method of executing program threads in a multi-threaded processor |
US7877586B2 (en) * | 2008-02-01 | 2011-01-25 | International Business Machines Corporation | Branch target address cache selectively applying a delayed hit |
US9792252B2 (en) | 2013-05-31 | 2017-10-17 | Microsoft Technology Licensing, Llc | Incorporating a spatial array into one or more programmable processor cores |
US9146747B2 (en) | 2013-08-08 | 2015-09-29 | Linear Algebra Technologies Limited | Apparatus, systems, and methods for providing configurable computational imaging pipeline |
US9727113B2 (en) | 2013-08-08 | 2017-08-08 | Linear Algebra Technologies Limited | Low power computational imaging |
US9910675B2 (en) | 2013-08-08 | 2018-03-06 | Linear Algebra Technologies Limited | Apparatus, systems, and methods for low power computational imaging |
US9563590B2 (en) * | 2014-03-17 | 2017-02-07 | Nxp Usa, Inc. | Devices with arbitrated interface busses, and methods of their operation |
US9507891B1 (en) * | 2015-05-29 | 2016-11-29 | International Business Machines Corporation | Automating a microarchitecture design exploration environment |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US9720693B2 (en) | 2015-06-26 | 2017-08-01 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
GB2548603B (en) | 2016-03-23 | 2018-09-26 | Advanced Risc Mach Ltd | Program loop control |
GB2548604B (en) * | 2016-03-23 | 2018-03-21 | Advanced Risc Mach Ltd | Branch instruction |
GB2548602B (en) | 2016-03-23 | 2019-10-23 | Advanced Risc Mach Ltd | Program loop control |
WO2019126797A2 (en) * | 2017-12-22 | 2019-06-27 | Alibaba Group Holding Limited | System and method for executing instructions |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3551895A (en) * | 1968-01-15 | 1970-12-29 | Ibm | Look-ahead branch detection system |
US3577189A (en) * | 1969-01-15 | 1971-05-04 | Ibm | Apparatus and method in a digital computer for allowing improved program branching with branch anticipation reduction of the number of branches, and reduction of branch delays |
US4974155A (en) * | 1988-08-15 | 1990-11-27 | Evans & Sutherland Computer Corp. | Variable delay branch system |
US5165025A (en) * | 1988-10-06 | 1992-11-17 | Lass Stanley E | Interlacing the paths after a conditional branch like instruction |
DE4345028A1 (de) * | 1993-05-06 | 1994-11-10 | Hewlett Packard Co | Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen |
GB2285154B (en) * | 1993-12-24 | 1998-04-01 | Advanced Risc Mach Ltd | Branch cache |
US5664135A (en) * | 1994-09-28 | 1997-09-02 | Hewlett-Packard Company | Apparatus and method for reducing delays due to branches |
US5732243A (en) * | 1994-10-18 | 1998-03-24 | Cyrix Corporation | Branch processing unit with target cache using low/high banking to support split prefetching |
US5790845A (en) * | 1995-02-24 | 1998-08-04 | Hitachi, Ltd. | System with reservation instruction execution to store branch target address for use upon reaching the branch point |
US5850543A (en) * | 1996-10-30 | 1998-12-15 | Texas Instruments Incorporated | Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return |
KR100240591B1 (ko) * | 1996-11-06 | 2000-03-02 | 김영환 | 분기명령어의 효율적인 처리를 위한 브랜치 타겟 버퍼 및 그를 이용한 분기 예측방법 |
US5857104A (en) * | 1996-11-26 | 1999-01-05 | Hewlett-Packard Company | Synthetic dynamic branch prediction |
US5889986A (en) * | 1997-01-28 | 1999-03-30 | Samsung Electronics Co., Ltd. | Instruction fetch unit including instruction buffer and secondary or branch target buffer that transfers prefetched instructions to the instruction buffer |
TW357318B (en) * | 1997-03-18 | 1999-05-01 | Ind Tech Res Inst | Branching forecast and reading device for unspecified command length extra-purity pipeline processor |
US5987599A (en) * | 1997-03-28 | 1999-11-16 | Intel Corporation | Target instructions prefetch cache |
-
1999
- 1999-07-23 US US09/360,054 patent/US6523110B1/en not_active Expired - Fee Related
-
2000
- 2000-07-18 TW TW089114336A patent/TW563064B/zh not_active IP Right Cessation
- 2000-07-20 CN CNB001216066A patent/CN1147794C/zh not_active Expired - Fee Related
- 2000-07-21 EP EP00306207A patent/EP1071010B1/en not_active Expired - Lifetime
- 2000-07-21 AT AT00306207T patent/ATE412213T1/de not_active IP Right Cessation
- 2000-07-21 DE DE60040578T patent/DE60040578D1/de not_active Expired - Lifetime
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102736894A (zh) * | 2011-04-01 | 2012-10-17 | 中兴通讯股份有限公司 | 一种跳转指令编码的方法和*** |
CN102736894B (zh) * | 2011-04-01 | 2017-10-24 | 中兴通讯股份有限公司 | 一种跳转指令编码的方法和*** |
US10572252B2 (en) | 2013-08-08 | 2020-02-25 | Movidius Limited | Variable-length instruction buffer management |
US11579872B2 (en) | 2013-08-08 | 2023-02-14 | Movidius Limited | Variable-length instruction buffer management |
US11768689B2 (en) | 2013-08-08 | 2023-09-26 | Movidius Limited | Apparatus, systems, and methods for low power computational imaging |
CN106796504A (zh) * | 2014-07-30 | 2017-05-31 | 线性代数技术有限公司 | 用于指令预提取的方法和设备 |
CN106796504B (zh) * | 2014-07-30 | 2019-08-13 | 线性代数技术有限公司 | 用于管理可变长度指令的方法和设备 |
CN107077336A (zh) * | 2014-12-18 | 2017-08-18 | 英特尔公司 | 二进制转换机制 |
CN107077336B (zh) * | 2014-12-18 | 2021-05-28 | 英特尔公司 | 二进制转换机制 |
Also Published As
Publication number | Publication date |
---|---|
EP1071010B1 (en) | 2008-10-22 |
TW563064B (en) | 2003-11-21 |
CN1147794C (zh) | 2004-04-28 |
US6523110B1 (en) | 2003-02-18 |
DE60040578D1 (de) | 2008-12-04 |
ATE412213T1 (de) | 2008-11-15 |
EP1071010A3 (en) | 2001-11-14 |
EP1071010A2 (en) | 2001-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1147794C (zh) | 具有静态转移预测支持的去耦取指令-执行引擎 | |
CA1323938C (en) | Control of multiple function units with parallel operation in a microcoded execution unit | |
CA1268555A (en) | Branch stream coprocessor | |
US6611910B2 (en) | Method for processing branch operations | |
CN1269042C (zh) | 具有预取指令的微处理器及预取至其高速缓存的方法 | |
EP1749262B1 (en) | Multiple branch predictions | |
JP3542021B2 (ja) | セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置 | |
US7523298B2 (en) | Polymorphic branch predictor and method with selectable mode of prediction | |
US6178498B1 (en) | Storing predicted branch target address in different storage according to importance hint in branch prediction instruction | |
EP2330500B1 (en) | System and method for using a branch mis-prediction buffer | |
CN104731719B (zh) | 一种缓存***和方法 | |
US7870368B2 (en) | System and method for prioritizing branch instructions | |
CN1945525A (zh) | 从队列处理指令刷新的生存期计数器设计的***和方法 | |
US20060179265A1 (en) | Systems and methods for executing x-form instructions | |
CN101884025B (zh) | 用于使过程返回序列加速的方法和*** | |
CN112579175B (zh) | 分支预测方法、分支预测装置和处理器核 | |
TWI502347B (zh) | 分支預測功率縮減 | |
US8943301B2 (en) | Storing branch information in an address table of a processor | |
JPH08123723A (ja) | 先行読出機能付命令キャッシュメモリ | |
JP3779012B2 (ja) | 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法 | |
US6754813B1 (en) | Apparatus and method of processing information for suppression of branch prediction | |
US20010037444A1 (en) | Instruction buffering mechanism | |
US7013366B2 (en) | Parallel search technique for store operations | |
US20080282050A1 (en) | Methods and arrangements for controlling memory operations | |
US7519794B2 (en) | High performance architecture for a writeback stage |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20040428 Termination date: 20110720 |