CN1158597C - 超标量或超长指令字计算机中选择下一指令的方法与装置 - Google Patents

超标量或超长指令字计算机中选择下一指令的方法与装置 Download PDF

Info

Publication number
CN1158597C
CN1158597C CNB981259596A CN98125959A CN1158597C CN 1158597 C CN1158597 C CN 1158597C CN B981259596 A CNB981259596 A CN B981259596A CN 98125959 A CN98125959 A CN 98125959A CN 1158597 C CN1158597 C CN 1158597C
Authority
CN
China
Prior art keywords
instruction
branch
bag
condition
cache
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.)
Expired - Fee Related
Application number
CNB981259596A
Other languages
English (en)
Other versions
CN1225469A (zh
Inventor
K・埃乔格卢
K·埃乔格卢
基弗
K·J·基弗
斯尔伯曼
G·M·斯尔伯曼
路易克
D·A·路易克
温特菲尔
P·B·温特菲尔
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 CN1225469A publication Critical patent/CN1225469A/zh
Application granted granted Critical
Publication of CN1158597C publication Critical patent/CN1158597C/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
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

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)
  • Executing Machine-Instructions (AREA)

Abstract

在能执行超标量及超长指令字指令的计算机中,其中该计算机已将若干能并行执行的基本操作编译到具有多个包且各包对应于一个操作的单一指令中。复制指令的所有分支条件与所有的可能后续指令的地址并将它们存储在指令高速缓冲存储器中。进一步将指令高速缓冲存储器分成小高速缓冲存储器,各小高速缓冲存储器存储一个包,它允许各包快速自主执行。同时,并行评估所有分支条件来确定下一指令及并行解码所有偏移地址。

Description

超标量或超长指令字计算机中 选择下一指令的方法与装置
本申请与下列共同未决申请相关:名为“具有高效指令代码格式的超长指令字(VLIW)计算机”的1997年1月30日提交的序号为780,839的申请;名为“利用寄存器文件保存/恢复机制恢复流水线数据处理系统中的寄存器数据的系统”的1996年13日提交的序号为718,040的申请;名为“利用锁存反馈组件恢复流水线数据处理系统中的寄存器数据的系统”的1996年9月13日提交的序列号为713,903的申请;名为“多端口与交错高速缓冲存储器”的1996年12月16日提交的序号为767,384的申请;名为“用于扩充包的VLIW体系结构与方法”的1996年12月12日提交的序号为764,004的申请。所有上述申请都转让给本申请的受让人并通过引用将所有上述申请包含在此。
现代计算机的基本结构包括与外部世界互相传递信息的外围设备;这些外围设备可以是键盘、监视器、磁带机、耦合在网络上的通信线路、等。在计算机内有为接收、处理及与外部世界之间互相传递这种信息所必须的硬件,其中包括总线、存储单元、输入/输出(I/O)控制器、存储设备及至少一个中央处理单元(CPU)。CPU与其它处理器执行计算机应用程序的指令并指导所有其它系统部件的操作。处理器实际上快速地执行诸如逻辑比较、算术运算及数据从一个位置到另一位置的传送等基本操作。用户可以觉察到计算机系统的新的或改进的能力实际上可能只是处理器更快地执行这些相同的简单操作。因此,计算机系统的继续改进需要使这些系统甚至更快。
计算机系统的整体速度的一种度量,也称作“吞吐量”,是作为处理器每单位时间执行的操作的数量测定的。概念上,对系统速度的所有可能改进中最简单的是提高各种部件的时钟速度,特别是处理器的时钟速度。如果每种部件都以倍速运行但以完全相同的方式工作,则系统以一半时间执行给定的任务。多年前用分立部件构成的计算机处理器通过缩小尺寸与减少部件数目而明显地执行得更快,从而最终将整个处理器封装成单片上的集成电路。缩小的尺寸使之有可能提高处理器的时钟速度,并相应地提高系统速度。
尽管从集成电路获得巨大的速度改进,仍存在着对更快的计算机系统的需求。硬件设计师已能用更大的集成度、进一步缩小电路的大小及各种其它技术获得更进一步的速度改进。然而,设计师们知道物理尺寸的缩小不能无限地进行下去,而对继续提高处理器时钟速度存在着极限。因此已将注意力引导到其它方法,包含新的计算机体系结构,以进一步改进计算机系统的整体速度。
在集成电路芯片上封装单个处理器的适度的成本已使不改变时钟速度而使用多个处理器来改进系统速度成为现实。此外,通过从CPU卸载工作到具有有限功能的从处理器能明显改进系统速度。例如,从处理器例行地执行诸如输入/输出设备通信与控制等重复与单一特定目的程序。也有可能在单一计算机系统中放置多个CPU,通常为同时服务于多个用户的基于主机的系统。各不同的CPU能代表不同的用户同时执行不同的任务以提高系统的整体速度。图1中所示的这一技术展示用通信网连接与控制的标记为CPU1、CPU2、...的若干处理器,从而一台以上处理器可同时执行不同的任务。任务下面的各短水平线表示指令,每一任务有许多指令。在实际情况中,每一任务可能有比图1中所示多得多的指令。各CPU一次执行一条指令,从而一个以上CPU同时执行指令,并行处理器节省时间。然而,在独立的处理器中启动所有独立的任务、同步及在任务间通信、以及组合它们的部分结果来生成整个结果,需要可观的开销。在特定的应用上使用这种传统的并行处理器,程序员或完善的编译程序必须将问题分成片段及建立适当的通信与控制。如果这一开销化费比并行执行节省的时间还要多,并行处理器方法便受到限制。这一传统并行性对自然地分成较大片段很少要求互相通信的问题,诸如科学数值方法及其它高度结构化问题,提供最大的周期节省。然而实际上,对于具有不可预测的执行通路与/或需要广泛的共享与处理器间通信的问题,只有有限的应用可用于并行处理。
精简指令集计算机(RISC),超标量及超长指令字(VLIW)机器的计算机体系结构是基于指令集越简单,用硬件实现更高效这一前提的。这些体系结构具有用于并行处理应用代码的多个执行单元及多路分支机构。这些体系结构进一步激发编译程序技术的发展以便利用应用中可得到的并行性而不依靠在高度优化代码中表示这一并行性的专用语言。在编译过程中作出尽可能多的判定来解放在程序执行中进行判断的硬件。
另一方案是混合的,其中单个CPU具有单处理器与并行机两者的特征以实现细粒度的并行性。在这一方法中,单一指令寄存器与指令序列单元在单一控制流下执行程序,但CPU中的多个算术/逻辑单元(ALU)能同时执行多个基本操作。不是依靠硬件来确定哪些操作能同时执行,而是编译程序在执行前格式化指令以指定并行操作。超标量计算机每一个处理器时钟周期通常执行多达4条指令。此外,扩展保持在指令寄存器中的指令字来指定要由不同的ALU执行的多个独立的操作需要超长指令字。超长指令字(VLIW)计算机每一处理器周期可执行16条或更多指令。
若干学术论文认为在许多应用中VLIW体系结构能比并行操作的多个独立处理器达到更大并行性及更高速度。图2中所示为具有任务中的机器指令级上的细粒度并行性的示范性VLIW计算机的模型。如能看出的,典型的应用程序具有用沿图左边的时间线指示的单一控制流,但该流中的基本操作是并行执行的。VLIW编译程序发现程序中能同时执行的基本操作,然后将这些操作的指令编码成复合指令,超长指令字,用计算机体系结构及指令的术语说:VLIW。因此,对于VLIW机器的自动化编译程序没有必要去改变几乎已经不可能在并行处理器机器中自动化的程序流程;用于VLIW机器的编译程序只要确定哪些基本操作能并行执行及建立由硬件执行的复合指令。此外,编写得好的编译程序生成在尽可能多的机器时钟周期中优化独立的硬件单元的有用工作的指令流。原语为VLIW指令中控制独立硬件单元的部分。CPU中这些独立硬件单元包括算术逻辑单元(ALU),其中包含执行指数运算的浮点单元、提供对CPU外部的存储器的直接路径的寄存器到存储器(RS)单元、及提供对处理器中另一寄存器的直接路径的寄存器到寄存器(RR)单元。从而在一个周期中能利用VLIW机器内的所有这些独立资源,因此能同时执行若干条基本的机器指令,优点在于能在比传统的单处理器上可能做到的更少机器周期中完成任务,换言之,从任务起动到任务完成的“周转时间”得以减少并更快地获得其结果。对于事务处理应用,各事务需要长的顺序操作序列而事务处理任务之间的通信则可忽略不计,这一概念具有超过传统并行性的自然优点。
VLIW的大小与格式提出了特殊的考虑。所设想的指令字的大小在诸如存储器、指令高速缓冲存储器、总线等CPU外部的支持硬件上施加明显的负担。对于VLIW设计中的大指令字有若干理由。回忆一下VLIW需要多个硬件单元同时操作来执行并行操作。各该硬件单元需要其自己的命令,其中包含操作码、源与目的地指示等。两者必须有机构来确定要执行的下一条指令。这一通常称作控制流的确定在任何计算机中呈现其本身的特色,但在VLIW计算机中这些特色大为增加。当不存在选择或确定下一条指令的条件时,控制流跳转到下一条指令。当控制流的改变是有条件时,控制流转到下一条指令。目前条件分支在包含VLIW在内的多数计算机中构成改变控制流的主要机制。
为了利用条件分支能力,编译程序将所有条件分支语句分解成两个组成部分:执行条件寄存器测试与设定的指令;及测试前面设定的条件寄存器的分支指令。不打乱相关性关系,编译程序将测试与设定条件寄存器的指令调度到它们最早的可能执行时间。当设定了确定通过分支树的可能路径的条件寄存器时,然后编译程序可在多达16个条件寄存器的VLIW测试中构成分支条件指令。然后,编译程序将尽可能多的位于该分支路径的指令调度到这一VLIW中。重复上述步骤任何次数直到不相关指令为止,最好是6或8次,将分支路径加上顺序路径形成到单一的VLIW中。
评估条件来确定适当分支传统上是以几种式进行的。第一种方法利用执行指令中隐含或显式设定的称作条件码的专用位。隐含设定的条件码增加了发现什么时候已确定分支的困难及调度分支延时的困难。这使得难以找到在条件评估与分支之间可以调度的指令,尤其是当条件码是由大的或任意选择的指令子集设定时。许多新的体系结构避免条件码或在指令中的一位的控制下显式设定它们。
测试分支条件的另一技术涉及简单的相等或不等测试,如(a)如果A+B大于或等于0,则转向C;或(b)如果逻辑指令的结果等于/不等于真/伪,转向D,如图10及其附属的讨论。简单的比较以及分支指令通常作为该分支的一部分,但对于诸如浮点比较等更复杂的比较,可实现条件寄存器,其中用存储在寄存器中的值测试比较结果并根据该比较指定分支。任何情况下,通过评估分支条件来确定下一条指令并非易事。这些问题在VLIW中是n倍复杂的,因为可能需要评价n个分支条件来确定下一个VLIW。
通常,操作系统与其它类型的代码具有用分支分隔开的少数指令的序列为特征的程序结构。对于诸如VLIW等多个并行执行单元的处理器,如果每一VLIW指令周期只能进行一个分支,则编译程序通过处理代码来填充可利用的执行单元的能力便受到严重制约。问题是不仅要减少复杂的分支结构在优化代码传送的编译程序的能力上的冲击,但也要减少在VLIW处理器硬件的关键性路径与周期时间上的冲击。N路VLIW或超标量处理器(其中N为分支数并且是大的,即大于或等于16)面临的问题可能必须几乎每一周期有可能高达8路分支而很可能为3至4路分支。如果将对处理器组合体内指令与数据的关键性寄存器与高速缓冲存储器的存取时间为大约周期时间加上时钟与超标量或VLIW处理器的锁存开销,则所有当前的精减指令集计算机(RISC)体系结构每一个所取的分支已需要两个周期的等待时间。在每一个用于分析与取分支的循环的两个周期上,处理器的有效执行速率降低到没有分支时的速率的一半。此外,用于分支的不命中预测的额外的一个或两个周期可能是常有的而平均取分支等待时间可达三个周期。这是不能接受的后果。为了进一步解决VLIW机器中分支预测问题,以百分之九十五的总精确度预测8个同时的分支的要求是不可能完成的任务。假设在带有8个可能分支目标的16路并行处理器中,或者必须实现非常昂贵的8端口指令高速缓冲存储器,或者必须使用某种分支测试方案。
如上所述,VLIW机器的威力在于评价哪些原语能并行执行,然后并行执行所有原语然后选择下一条VLIW供将来执行。因此,必须允许从单一VLIW到多个目的地的条件分支,这是称作N路分支的特征。此外,必须在指令中规定所有分支条件与目的地。
Yale的Joseph Fisher与他的小组观察到特定程序中的分支在大部分时间上遵循可预测的路径。Fisher等人公式化了超长指令(ELI),并测定了最常见的执行路径及设计出判定这些路径是否可同时执行的分支机构。Fisher先生建立的这一径迹调度技术公开在颁给Colwell等人的名为“并行处理器中的并行执行的分层优先分支处理”的美国专利(专利号4,833,599)中,而多流协作的VLIW处理器需要通过程序分支树的最可能的路径的编译时间预测。对于高度可预测的科学计算,这一方法工作得合理地好。然而,如果代码偏离可预测的路径,将付出很高的代价。诸如商业应用及操作系统中的其它代码结构,并不具有可预测的分支,从而Fisher公开的径迹调度技术导致VLIW单元中可获得的并行资源的较差利用。
渗滤调度是用在同时执行许多分支的商业与操作系统中的另一种技术。Kemal Ebcioglu建立没有分支路径预测的这一系统。图3示出渗滤如何在指令流中向上移动指令,以便在它们的数据可以获得时尽快执行它们。图3中的虚线箭头示出指令从冯·诺依曼的执行的原始流中的位置到作为VLIW指令中的包的最终位置的移动。已将一条指令300移动超过条件分支310;在其指令流中的原来位置上,指令300的执行取决于条件分支320的结果,但在得出的VLIW指令流中,指令300将在测试分支条件之前执行。这是意味着该工作是知道它是否需要之前完成的推测执行的示例。当VLIW机器具有足够的资源不停顿任何其它工作来完成推测工作时,则在以后确定推测工作为必须时便有收益。资源越多,推测执行越强有力。例如,如果程序在条件分支后分裂成两支,并有足够的资源将两支中的一些指令向上移动到分支点以上,则推测执行肯定能减少完成这一程序所需要的时间。见Silberman、GabrielM,与Ebcioglu的,“支持异种指令集体系结构的结构框架”,IEEE计算机39-56(1993年6月)。
从而本发明的目的为提供发送VLIW指令给VLIW处理器的高频、大型与单周期指令高速缓冲存储器。通常,在高速缓冲存储器设计中这些要求是矛盾的。该指令高速缓冲存储器具有最好小于1毫微秒的频率、规模是大的,并且在单个周期中提供宽并行存取。本发明用来满足这一目的的特征为物理地分成4Kbyte的各称作小I-cache(小指令高速缓冲存储器)的块的大型64Kbtye指令高速缓冲存储器。4Kbyte块的小Icache设计允许各小Icache近于独立于另一小Icache;从而只需要很少的接线并且大为简化了设计。从而指令高速缓冲存储器对定标延时是不敏感的。
本发明的又另一目的为通过从采用快速的、廉价的一个端口设计的指令高速缓冲存储器取出正在执行的VLIW指令的所有可能的多路径分支而允许评估VLIW指令中所有分支的N路分支。达到这一目的的本发明的特征在于一条VLIW指令的下一条顺序的VLIW指令以外的所有目标VLIW指令都位于指令高速缓冲存储器的同一1Kbyte块中。并且对于大多数情况,不越出这1Kbyte块的边界。但是,允许顺序控制流跨越1Kbyte边界减轻了在编译程序上的制约,在其中本发明可描述为(N+1)路分支。
本发明的又另一目的为提供用于处理VLIW指令的可伸缩的及常规的指令高速缓冲存储器。本发明允许伸缩性其特征在于在指令中并从而在指令高速缓冲存储器中采用物理包。从而能适应任何宽度的VLIW指令。通过在小Icacha中允许一个VLIW指令的一个物理包,小Icacha是独立的,并通过增加更多的物理包,设计师能增加宽度及增加指令高速缓冲存储器的大小。指令高速缓冲存储器是常规的,在于它是统计上与物理上的完整的。将其中包含所有分支条件与目标地址的物理包配置到构成指令高速缓冲存储器的标准部件的小Icacha中。增加物理包的数目与/或增加物理包的大小对于具有4、5、8、16、17或包含32或甚至64个包的指令字并不产生新问题。
本发明的又另一目的为只增加用于评估分支条件来确定与计算下一条VLIW指令的地址的临界计算机费用与开销以提高计算机的效率。确定下一个地址、条件码及分支条件所需的额外的位与计算已通过将它们放置在复制的物理包中然后同时评估所有条件分支而得到消减。从而,现有的寄存器只须增加极小的规模来接纳VLIW指令。同时评估所有条件分支的又一优点在于本发明避免了必须从不正确的分支预测返回的昂贵代价。
不是在编译时需要知道可预测的分支路径,本发明简单地为所有可能路径完全准备好同时执行直到知道分支路径为止。包含在单一指令中的条件分支的多种同时推测评估得到并行执行单元的高效与高度使用。结果是超标量与VLIW处理的更好的整体性能。
从而,本发明的一个方面为数字计算的方法:首先复制包含与一个分支包关联的各偏移的所有目标地址及具有多个包的指令的所有分支包内所包含的所有分支条件。一些包是分支包而一些包是操作包,然而无论如何所有包都是能在处理器中独立执行的。该方法还包括将带有复制的目标地址与分支条件的包的指令加载进指令高速缓冲存储器中然后选择该指令供执行。同时,发生以下三个事件:(1)操作包是在处理器的多个执行单元中执行的,各执行单元专用于各自的每一个包;(2)对照多个条件码寄存器评估该指令的所有分支包的所有分支条件以确定要取的控制流分支;以及(3)用逻辑电路解码该指令的所有复制的偏移目标地址。将评估的所取的控制流分支的分支条件关联到解码的目标地址及操作包的执行结果上。将所取的控制流分支的执行结果存储在存储器中并将从执行结果得出的条件码存储在条件码寄存器中供对照选择的指令的分支条件进行评估。
本发明也是将多达N个能并行执行的基本计算机操作编译进第一指令的计算方法;该第一指令至少包含N个包,其中一些是分支包,它们具有目标地址及待评估来确定第二指令的分支条件,其中另一些是供在计算机处理器中执行的操作包。将第一指令的N个包的所有目标地址与所有分支条件复制N次供存储在指令高速缓冲存储器中。将第一指令的所有分支包中的所有目标地址所指示的所有可能的后续指令存储在用下一地址标识的指令高速缓冲存储器的指定部分中,并用一个偏移量寻址各条可能的后续指令。在指令高速缓冲存储器内部,将具有复制的目标地址与分支条件的N个包的每一个排列到指令高速缓冲存储器中的多个小高速缓冲存储器的每一个中。在这一方法中又出现三个并发事件:(1)同时将第一指令的所有分支条件评估N次以确定所有可能的后续指令中哪一条将是第二指令;(2)解码第一指令的所有偏移N次以选择第二指令的目标地址;以及(3)执行第一指令的所有操作包来为第二指令确定至少一个条件码,并将操作包的算术与逻辑结果存储在各种存储器中。将第二指令的目标地址提交给指令高速缓冲存储器以将第二指令加载到指令寄存器中供执行。将从执行第一指令得出的至少一个条件码送至条件码寄存器以便应用在第二指令的分支条件上。
本发明也是具有能分发指令给指令寄存器的指令高速缓冲存储器的计算机处理器,该指令高速缓冲存储器具有排列成N个小高速缓冲存储器的列及包的行,各包是物理上位于N个小高速缓冲存储器之一中的。任何数目的包,各具有能并行执行的基本计算机操作,能构成一条指令。计算机处理器还具有N个目标地址选择电路,各直接连接在N个小高速缓冲存储器的相应的一个上,以解码多达N个目标地址来选择发放给指令寄存器的指令。指令寄存器具有L个分支包,其中L小于或等于N,L个分支包的每一个具有用于后续指令的L个目标地址及L个分支条件,且指令寄存器还具有M个操作包。L个分支包的所有目标地址包括下一地址及L个偏移地址。计算机处理器还具有N个执行单元,N个执行单元中至少一个可操作地连接在M个操作包中相应的一个上来执行这些操作包。偏移地址解码逻辑可操作地连接在N个选择电路上以解码L个分支包的每一个中的所有目标地址。条件码寄存器可操作地连接在指令寄存器上以评估L个分支包中的每一个,然后与N个目标地址选择电路通信来选择下一条指令。
在计算机处理器中,还将指令高速缓冲存储器配置成块,其中下一个地址指示存储了用所有目标地址所指示的所有后续指令的特定的块,而L个偏移地址的每一个指示块中的单个指令。一条指令可占用指令高速缓冲存储器的整行,其中一个包物理上位于一个小高速缓冲存储器中且(L+M)=N;然而一条指令占用的空间也可小于指令高速缓冲存储器的整行,其中一个包物理地位于各小高速缓冲存储器之一中,其中(L+M)<N。此外,一条指令可占用指令高速缓冲存储器的一行以上,一个包物理地位于各个小高速缓冲存储器中且(L+M)>N。计算机处理器与指令高速缓冲存储器旨在适应任何时刻可将各种大小的指令存储在指令高速缓冲存储器中的情况。
本发明也是具有中央处理单元的数据处理系统,该中央处理单元包括能执行具有各能并行执行的多个包的指令的处理器。中央处理单元还具有分成小Icache的指令高速缓冲存储器,各小Icache对应于指令中的包。中央处理单元还具有连接在至少一个条件码寄存器上的分支条件评估逻辑单元及偏移解码逻辑单元。这些单元连接在后期选择单元上,后者也功能性在连接在指令寄存器上,中央处理单元还具有多个执行单元、包含至少一个条件码寄存器与多端口寄存器的多个寄存器、多个高速缓冲存储器、主存储器;其中这些执行单元、逻辑与后期选择单元、寄存器、存储器、指令寄存器、及指令高速缓冲存储器是功能上互连的。该数据处理系统还包括多个外部接线端,其中包括总线接口、总线、连接在下述部件中至少一个上的至少一个输入/输出处理器:磁带驱动器、数据存储设备、计算机网、光纤通信、工作站、外围设备、信息网;其中任何一个都能在总线上传输数据与指令给中央处理单元。在数据处理系统中,下一条指令的选择是通过下述操作完成的:复制从指令的执行与评估中得出的所有分支条件、下一地址(可以是虚拟地址)及可能的下一条指令的所有偏移地址、及将所有复制信息存储到指令高速缓冲存储器中。将所有可能的下一条指令加载到指令高速缓冲存储器中用下一地址指定的块中。分支条件评估单元结合中央处理单元的条件码寄存器评估所有分支条件,而偏移解码逻辑单元解码指令的所有偏移地址。将这些经过解码的地址送至连接在指令寄存器上的后期选择单元,后者为指令寄存器选择下一个地址。只用已评估为正确分支的分支结果来确定下一条指令,及只将该分支的执行结果保存在至少一个寄存器与/或存储器中与/或转发给至少一个外接线端。
相当简单,本发明为计算机处理方法,其中复制了要在处理器中执行的指令的所有分支信息,然后排列到指令高速缓冲存储器中的N个小高速缓冲存储器中,其中各小高速缓冲存储器包含所有的复制的分支信息。同时评估所有分支信息来确定要在处理器中执行的下一指令。
本发明为用于计算机处理的装置,包括复制指令中所有分支包的装置,该指令至少具有一个分支包及一个能并行执行的操作包;将带有复制的分支包的指令存储在指令高速存储器中的装置,使得各个复制的包与各个操作包存储在各个小Icache中;将所有可能的下一条指令存储在指令高速缓冲存储器中同一块中的装置;将指令选择进指令寄存器中的装置;同时评估所有小Icache中的指令的所有分支包中的所有分支条件的装置;并行地与评估装置一起工作同时解码所有小Icache中的指令的所有可能的下条指令的所有地址的装置;以及并行地与评估装置与解码装置一起执行指令的所有操作包的装置;将评估装置到解码装置到执行装置的结果互相关联的装置;以及从指令高速缓冲存储器中将下一条指令选择到指令寄存器中的装置。
虽然已概述了本发明并已讨论了对本发明的需求,参照以下附图及伴随的描述可更好地理解本发明本身。
图1为多处理器并行执行的代码顺序行的图。
图2为单处理器并行执行的多行代码的图;VLIW计算机的概念。
图3为已为VLIW计算机编译的VLIW指令的示意图。
图4为实现VLIW计算机的分支能力的高级计算机系统。
图5示出实现本发明的分支能力的VLIW处理器的部件。
图6为借此与VLIW指令的执行并行决定分支条件的方法的流程图。
图7为在VLIW计算机中执行VLIW指令的图形表示。
图8a与8b分别为具有8个包与16个包的VLIW指令的示例。
图9示出包含在VLIW指令中的分支包的格式。
图10为VLIW指令的分支机构与控制流的示例。
图11表示VLIW计算机的一级指令高速缓冲存储器。
图12为本发明确定下一条VLIW指令的三个并发进程的图形表示。
图13为在小Icache的上下文中的三个进程的图形表示。
图4中示出利用按照本发明的较佳实施例的VLIW处理器体系结构的计算机系统400的主要硬件部件。用于处理指令的CPU 401耦合在独立的高速缓冲存储器403与404上。高速缓冲存储器为存储CPU 401频繁地与最近使用的信息的高速存储器。如这里所表示的,指令高速缓冲存储器与数据高速缓冲存储器实际上是高速缓冲存储器分层系统。一级高速缓冲存储器(L1)最快并最靠近CPU,二级高速缓冲存储器(L2)比一级高速缓冲存储器慢并距CPU较远,但仍然实质上比主存储器402更快与更靠近CPU;在一级高速缓冲存储器与处理器之间或一级与二级高速缓冲存储器之间或二级高速缓冲存储器与内存之间可以有中间高速缓冲存储器。存在着多级数据与指令高速缓冲存储器(D高速缓冲存储器与I高速缓冲存储器),并且本发明及这里描述的高速缓冲存储器旨在包含高速缓冲存储器的这一分层系统。指令高速缓冲存储器(I-cache)403存储供CPU 40执行的指令。数据高速缓冲存储器(D-cache)404存储供CPU 401使用的数据。两种高速缓冲存储器都与指令与数据所在的随机存取主存储器402连通。这一体系结构通过包含上述独立的高速缓冲存储器,提供在VLIW或超标量机器中成功执行所需的指令与数据两者的带宽。CPU 401与主存储器402也通过总线接口405与系统总线410相通讯。每一个输入/输出(I/O)处理单元(IOP)411-415附着在系统总线410上并支持与诸如直接存取存储设备(DASD)、磁带驱动器、工作站、打印机与远程通信线路等多种多样的存储与I/O设备通信。应理解图4是旨在在高层上描述系统400的代表性主要部件,并且这些部件的数目与类型是可变化的。
VLIW如其名称所蕴含的,具有不寻常地长的计算机指令,在500-1000位或以上的数量级上。VLIW由多个包构成,各包与能同时执行的操作关联。执行这些操作的硬件是专用于这些包中的每一个的;因此与各个包关联的有诸如算术逻辑单元、浮点单元、寄存器/寄存器单元或寄存器/存储器单元等处理单元。VLIW处理的特征在于单个字中的所有操作并行进行,无须专用硬件来检测指令相关性违犯或资源冲突。编译程序在生成这些指令之前执行所有这些检验,从而允许并行执行各长指令中的所有操作。各包将并行执行,并且在单个周期中执行若干分支指令及其中没有为真的分支条件的顺序路径。
图5中示出VLIW机器的简化方框图。当将VLIW指令从如图4中所示的I-cache加载到指令寄存器500中时,它便成为硬件不可分割的一部分。这一指令寄存器500必须大到足以每一周期取整条VLIW指令,因为需要整条指令来控制硬件一个周期。指令寄存器500包含若干个包510,各包等价于一个基本操作或原语,如发明背景中所提及的。在加载进指令寄存器500时,各包510占据特定的位位置并控制硬接线到这些位置上的硬件单元。如果由于编译程序不能在程序中这一点上找到足够的并行性而指令没有包含最大数目的包,则适当地复位未使用的位位置。指令还包含作为要与条件代码寄存器比较的值的分支条件520,指令寄存器500中的VLIW的各分支目标522包含如果条件码与分支条件520匹配下一次便要加载进指令寄存器500的目标VLIW指令的下一地址。
各ALU包510提供指令给一个ALU 550、552、554、556。例如假定一个ALU包包含一条加法(ADD)指令;该同一个包包含的信息使得ALU能找到要相加的运算数,有可能就在指令寄存器500本身中的分支目标数据522中找到,但更普遍这些运算数在多端口寄存器文件540中找到。多端口寄存器文件540为所有ALU都可利用的一组通用寄存器,并且可以是诸如通过引用结合在此的序列号为764,004的美国申请中所描述的多端口与交错高速缓冲存储器。事实上多端口寄存器文件540中的寄存器通常被一个以上的ALU在同一周期中使用,并且各ALU能在同一周期中存取多端口寄存器文件540中一个以上寄存器。从而,寄存器文件540的“多端口”能力对于VLIW机器是关键的。
多端口寄存器文件540用于临时存储由加载(LOAD)指令取自或送往数据高速缓冲存储器404的数据。加载指令通常在后续的ALU操作使用这些数据之前执行,然后将ALU操作的结果立即放置在多端口寄存器文件540中。存储(STORE)指令将数据从多端口寄存器文件540传送到较大的主存储器402并提供拷贝给数据高速缓冲存储器404。
各ALU 550、552、554、556在各周期上能生成一个条件码。将这些条件码提交给下一地址发生器530供在下一周期上使用,将它们与执行中的VLIW指令的分支条件520对比以确定要加载进指令寄存器500中的下一条VLIW指令。下一地址发生器530还利用条件码设定值来确定在各周期结束时是否要保存ALU结果。“IF(条件)THEN(执行动作)”形式的任何条件操作在两个周期中解决;在第一周期上测试条件以设定条件码,然后在下一周期上用它来控制动作。如果条件动作为诸如R1=R1+R2,其中R1与R2为多端口寄存器文件540中的值,下一条包含该包与条件码的VLIW指令判定在周期结束时是否要更新寄存器文件540寄存器R1。
图6与7中示出一条VLIW指令的实际执行,并建议这两个图同时阅读。图7中,VLIW编译程序720将普通代码705的一些指令711、712、...718编译与渗滤到能并行执行的单一VLIW指令710中。执行一条VLIW指令710的整个时间是沿垂直线表示的一个机器周期,其中沿同一或接近同一水平方向的功能在两个图中是并行发生的。例如,在图6中步骤610、612与614同时发生。一开始,在步骤605,将具有N个包(在图7的示例中为5个包)的VLIW指令加载到指令寄存器500中。接着,在步骤612与614中激活包711、712、714、715、718来控制它们“硬接线”到其上的硬件元件的执行。同时,在步骤610中,分析所有条件码的来自先前的机器周期的当前设定值。当在步骤624中将数据从多端口寄存器文件540加载进ALU时,下一地址发生器530在步骤620中确定下一指令地址并在步骤622中确定哪些条件码结果要用来确定下一条VLIW。在这一点上,当在步骤632中执行了ALU包711、712、715及在步骤634中包718将来自数据存储器(数据高速缓冲存储器404或主存储器402)的数据加载进CPU中时,处理器中的工作便完成了。同时,从指令高速缓冲存储器403中得到下一条VLIW指令。最后在步骤636中用条件码分析结果来选通来自所有ALU的结果,从而只有在“选取的”分支上的那些包才保留它们的执行结果并从而在步骤642中设定下一条VLIW的条件码,例如,包711为下一周期设定条件码1并将数据保存在适当的存储设备中,多端口寄存器文件540、数据高速缓冲存储器604或主存储器402。确定指令内“选取的”的分支的条件码的同样的分析也确定下一条要执行的VLIW指令,因为分支树的各最终的叶等效于“GOTO”指令,而在步骤650中结束单一VLIW的执行控制。本发明这里描述图6中央的虚线左方的事件与机制。
取决于体系结构设计与选择,加载进指令寄存器500的VLIW指令可包含任意数目的包,并且各包可以是任何大小的。图8a与8b中示出8至16个包的示范性VLIW指令,各包具有32位或4个字节。本受让人所拥有的名为“具有高效指令码格式的超长指令字(VLIW)计算机”的1997年1月30日提交的美国专利申请(序号为08/780,839)中描述了示范性VLIW指令、包的格式及各包的位结构的细节,通过引用将其结合在此。图8a与8b中,BPx指示具有在下一地址发生器530中要评估的分支条件的分支包。图7的包714,IFCC3=1 GOTO END,为分支包的示例。RRx指示寄存器到寄存器操作,其中数据在CPU内从一个寄存器传送到另一个。在图7中所示的包中,包711,IF R2>R4 CC1=1,712,R2=R2+4,715,R1=R1+R8全都是RRx包的示例。图7中还示出,包718,LOAD R5 FROM Addr,为RSx包的示例,它指示寄存器到存储器操作,其中将数据从CPU内的寄存器传送到存储器分层结构。
这里的发明讨论当指令能取若干分支时如何确定下一条VLIW指令,所以分支包的更详细的检验是有理的。图9中示出在VLIW指令中支持6路分支的VLIW分支包的位位置的示范性格式。在VLIW指令中,假定每一条VLIW指令至少有用图8a、8b与9中的分支包BPO与BP1的组合确定的一个分支,即使是到下一条顺序指令的分支。图8b与9中所示的分支包2至6,BP2-BP6,根据VLIW指令的分支条件是可选的。在具有诸如4个包的小VLIW指令的情况中,最好在VLIW指令上加上一位来指示它是顺序的VLIW指令。图9中所示的分支包的特征包括:
分支包BPO的操作码90具有下述位字段:指示VLIW的长度、分支目标的源及包含在该VLIW指令内的分支数。
指令虚拟地址(IVA)字段提供程序员能用来在主存储器中标识该包的附加位。
下一地址(NA)指定具有作为该VLIW指令内的所有分支的目标的所有VLIW的一级指令高速缓冲存储器的1Kbyte块/模块。将它并接在指令地址寄存器上来生成目标块的整个地址。
条件码(CCX)位选择字段指定要为分支测试的条件寄存器位。在VLIW处理器中,要测试的条件位的较佳最大数目为5。
分支条件(BC)字段规定要执行的各分支必须符合的条件。分支条件字段对应于条件码位选择字段。对于各条件,最好测试三种状态:0、1与X(不关注)。
目标执行屏蔽(TEM)字段规定如果满足该包的条件码则应执行当前VLIW指令的哪些包。
偏移字段标识作为分支的目标的下一条VLIW指令在1Kbyte块内的地址。各分支有一偏移量。
确定要执行的下一条VLIW是复杂任务甚至是更关键的任务,因为要在一个处理器周期中完成。通过在特定的安排下将可能的后续VLIW加载进一级指令高速缓冲存储器403并通过同时评估下一地址发生器530中的分支条件便能在少于一个处理周期中评估这些分支包。根据经验,多数VLIW是顺序执行的,但平均每5条指令中将导致执行流水线分支。一般说来,每个VLIW指令有三个条件分支。虽然VLIW中可能有多达8个或更多分支条件包,实际上,对于成功地实现的VLIW计算机系统,6个分支条件包已经足够。6个以上分支条件包难于在逻辑上实现并很少需要。用条件码屏蔽来测试各条件寄存器。这一屏蔽的评估位于硬件的关键路径上,从而在位置上进行编码以加速解码逻辑。只将来自评估为位于分支所取路径上的这些包的ALU的结果提交存储在存储器中,或者高速缓冲存储器或者主存储器中,并将在下一周期中用在条件码寄存器中。
图10中可视地表示具有条件分支的控制流。下一条VLIW指令是取决于前面执行的条件指令的结果执行的。要在CPU中执行的操作是用短线op1至op6表示的,交叉线表示控制流或树的分支。树的节点与要评估的条件关联:cc0、cc1、cc2,其中控制流能改变方向。在节点,在条件码上执行二叉测试;从节点向左去的分支对应于测试的结果为伪,而向右的分支对应测试的结果为真。例如,如图10中所示,跟踪最左的分支,首先评估条件cc0=LT来判定第一条指令的结果是否小于一个任意值,通常为零。如果是伪,在左控制流路径上进行到标识为op1的操作并在另一条件cc1=GT上评估op1的结果,即如果op1的结果不大于某一任意值,则转移至op3及然后下一条指令L0。类似地,如果cc0=LT为真,将执行op2,而如果cc2=EQ也为真,将执行op6,L3将是下一条指令。
VLIW体系结构的成功实现取决于一级指令高速缓冲存储器(L1I-cache)的结构。第一要求是以零周期等待时间提供多达6路分支,将最靠近处理器的一级指令高速缓冲存储器作为通常在许多系统中用于微代码的控制存储器对待。还必须直接寻址一级指令高速缓冲存储器,其中的指令高速缓冲存储器地址整个来自指令的完全立即地址字段中。作为替代,一部分高位地址取自指令地址寄存器而其余低位地址位直接来自指令,并且是N条指令的模块空间中的指令控制字的绝对地址的子单元。
图11中所示的一级指令高速缓冲存储器(L1I-cache)403是与CPU一体的,并最好具有排列成各4Kbyte的列块或小Icache 1100的64Kbyte。小Icache中的字节数与每一条VLIW指令的字节数之间的关系是相关的;小Icache的数目可以改变以适应具有不同字段宽度及不同包大小的VLIW指令的处理。允许简单地将要创建的一级指令高速缓冲存储器作为一个一端口的后期选择阵列是关键的。一级指令高速缓冲存储器是直接映射的以便允许最快的可能单周期存取,但关联高速缓冲存储器也能工作,只是会增加存取时间。一级指令高速缓冲存储器要求VLIW编译程序这样布置来自VLIW指令的分支目标使得前面执行的VLIW指令的所有可能的VLIW指令都包含在对齐在1Kbyte的边界上的指令的同一1Kbyte块中,即6路分支方案要求全体6条可能的目标VLIW指令布置在16×64字节=1024字节的16条VLIW指令的模块中。
图11中示出1Kbyte块1120及另一1Kbyte块1122的前两条VLIW指令。在每一个1Kbyte块1120中有16条VLIW指令1124,每行中一条。本发明适应具有可变数目的包的VLIW指令,因为VLIW指令在一级指令高速缓冲存储器403中的1Kbyte边界上对齐。通过将各VLIW指令1124的单个的包1126对齐在各列1100-1115的单个的行上,一条VLIW只可拥有4或8个包,但后续的VLIW指令可拥有16个包。
VLIW机器的关键特征在于VLIW指令1124的各包1126具有在被加载进指令高速缓冲存储器中之前复制在各包中的各包的下一地址、偏移及分支条件。一个一周期预处理器将分支条件、下一地址、偏移传送到标志阵列1310(图13中所示),每一个包一个阵列,然后在加载进指令高速缓冲存储器之前复制各包。较小的列1111包含主存储器中1Kbyte块的下一地址的若干位(11);结果是在整个1Kbyte块1120中这一较小的列1111的位的数目与值都是一样的。
将VLIW指令的一个以上的1Kbyte块,通常4至8个1Kbyte块从主存储器加载进一级指令高速缓冲存储器中。作为示例,11位分支地址中8个预解码的位标识主存储器中的块,然后三个编码位标识从存储器加载的那些块中的1Kbyte块的地址。这一地址还包含在各包的下一地址(NA)字段中。一级指令高速缓冲存储器是用虚拟地址寻址的,这消除了等待虚拟到实地址映射的需要。该地址是直接立即从VLIW指令得到的,无须通过加法器。作为替代,地址的高位位取自若干寄存器之一。偏移选择1130及后期选择1140还解码偏移来产生接下来将要加载进指令寄存器500中的单个VLIW指令。
并发发生图12中所示的三个事件。首先,在1220上通过将分支条件与条件码寄存器比较为相同的分支条件并行评估VLIW指令的所有的包。条件码寄存器的16份拷贝,每一个小Icache一份,是由紧接在前面的VLIW指令加载的。同时,在1240上,对所有的包进行并发评估及解码所有可能的偏移地址来确定下一条VLIW指令。在解决了确定采用哪一个条件分支的分支条件时,便选择与该分支关联的偏移地址并将这一信息提供给偏移选择1130与1140从高速缓冲存储器1Kbyte块中的16条VLIW中选择下一条VLIW。同时,在1260上,小Icache的所有分支都被执行使得能用其执行结果来加载条件码寄存器供评估下一条VLIW指令的分支条件以及存储已评定为“采用”分支的分支的结果。紧接在前面的VLIWn-1设定条件码;VLIWn将其分支条件对照这些条件码评估,解码其偏移地址,及执行所有的包以确定要存储哪些结果。
从而将一级指令高速缓冲存储器设计成相当自主地操作的16个(可以或多或少)小Icache允许评估VLIW指令的所有条件分支来判定哪一分支是正确分支。只保存正确分支的计算结果与条件码。将各包的下一地址、条件码与分支条件复制16次或与小Icache一样数目的次数,来允许这一同时评估。下一地址表示指令高速缓冲存储器中包含所有条件分支的所有目标VLIW指令的1Kbyte块。解码偏移地址来确定1Kbyte块的哪一条特定VLIW指令将是下一条要执行的VLIW指令。
图13示出在单个自主小Icache 1100的上下文中的本发明的过程。将具有分支条件、下一地址及偏移的复制的分支包存储在小Icache 1100的标志阵列1310中。为了说明本发明的目的,在图13的左上部示出带有在当前周期中正在执行与评估的复制的分支包位的指令1126。在分支条件评估逻辑1350中对照条件码寄存器1320的选择的条件码评估指令1126中的分支条件BC1...BC6。条件码寄存器1320中的值是由前一指令的执行结果确定的。同时,将指令1126的偏移OFF1...OFF2提交给偏移解码逻辑1330。将分支条件评估逻辑的结果提交给偏移选择1130,在其中选择用分支条件确定的各可能的后续指令的解码的偏移。然后将这些解码的地址提交给后期选择1140为指令寄存器500从Icache 1100中选择下一条指令。这时,所选择的下一条指令便成为指令1126而过程重新开始。
虽然已结合当前认为最实际与较佳的实施例描述了本发明,应理解本发明不限于公开的实施例,正好相反,旨在复盖包含在所附权利要求的精神与范围内的各种修正及等效配置。例如,如上面已提及的,指令高速缓冲存储器的设计可适应VLIW指令中的不同数目的包。为了增进本发明的灵活性,指令高速缓冲存储器中的小Icache的数目可随指令中的较少或较大数目的包或四倍长字改变,如在超标量计算机中。为了达到更高的操作频率,设计人员可增加ALU中的执行周期数并减少流水线。

Claims (15)

1、一种在超长指令字计算中进行指令操作的方法,包括:
(a)复制包含在具有多个包的指令的所有分支包中的所有目标地址及所有分支条件,某些包为分支包及某些包为操作包,所有包都能在处理器中独立执行;
(b)将具有复制的目标地址及分支条件的多个包的指令加载进指令高速缓冲存储器;
(c)选择用于执行的指令;
(d)在处理器的多个执行单元中执行操作包,各执行单元专用于相应的每一个包;
(e)同时评估指令的所有分支包的所有分支条件以确定所采取的控制流分支;
(f)用解码逻辑电路同时解码指令的所有目标地址;
(g)将各个评估的分支条件与各个解码的目标地址相互关联,并与操作包的执行结果关联,以及作为结果,
(h)选择所采用的控制流分支供执行;
(i)存储所采用的控制流的执行结果;及
(j)选择所采用的控制流分支的下一条指令供执行。
2、权利要求1的方法,其特征在于存储所采用的控制流分支的执行结果的步骤(i)进一步包括:
(i1)将执行结果存储在存储器中;以及
(i2)将从执行结果中得出的多个条件码存储在多个条件码寄存器中。
3、权利要求2的方法,其特征在于复制所有目标地址的步骤(a)进一步包括:
(a1)复制全部多个偏移,各偏移与分支包关联;以及用解码逻辑电路同时解码所有目标地址的步骤(f)进一步包括:
(f1)解码所有复制的偏移。
4、权利要求2的方法,其特征在于评估指令的所有分支包的所有分支条件的步骤(e)进一步包括:
(e1)分别将各个分支条件与来自多个条件码寄存器的多个条件码中的每一个进行比较。
5、一种在超长指令字计算机中并行执行计算机操作的方法,包括:
(a)将能并行执行的多达N个基本计算机操作编译进第一指令中;第一指令包括至少N个包,N为大于1的整数,其中一些为具有后续指令的目标地址及要加以评估以确定第二指令的分支条件的分支包而其中一些为在计算机处理器中执行的操作包;
(b)将第一指令的N个包的所有目标地址与所有分支条件复制N次供存储在指令高速缓冲存储器;
(c)将由第一指令的所有分支包中的所有目标地址所指示的所有可能的后续指令存储在指令高速缓冲存储器中用下一地址标识的指令的一个特定部分中,各可能的后续指令分别用一个偏移寻址;
(d)将具有复制的目标地址与分支条件的N个包中的每一个排列到指令高速缓冲存储器中的多个小高速缓冲存储器的每一个中;
(e)同时评估第一指令的所有分支条件N次以确定所有可能的后续指令中哪一条将是第二条指令;
(f)与步骤(e)同时,解码第一指令的所有偏移N次来选择对应于第二条指令的目标地址;以及
(g)与步骤(f)同时,执行第一指令的所有操作包来为第二条指令确定至少一个条件码,及将操作包的结果存储在至少一个寄存器与/或存储器中;
(h)将第二指令的目标地址传递给指令高速缓冲存储器并将从第一指令得出的至少一个条件码传递给至少一个条件码寄存器。
6、一种计算机处理器,包括:
(a)具有多个行与多个列的指令高速缓冲存储器,其中在列方向上排列有N个小高速缓冲存储器,在行方向上排列有多个包,任意数目的包构成一条指令,各包物理地位于该N个小高速缓冲存储器之一中,其中N为大于1的整数;
(b)N个目标地址选择电路,各直接连接在N个小高速缓冲存储器的各自的一个上,以解码N个目标地址来选择发放给指令寄存器的指令;
(c)接收与起动指令的执行的指令寄存器,该指令寄存器具有L个分支包,及L个分支条件,其中L为小于或等于N的正整数,L个分支包中的每一个具有L个后续指令的目标地址,并且指令寄存器还具有M个操作包,其中M为正整数;
(d)N个执行单元,N个执行单元中至少一个可操作地连接在M个操作包中的各自的一个上以执行这些操作包;
(e)可操作地连接在N个选择电路上的偏移地址解码逻辑,解码L个分支包每一个中的所有目标地址;以及
(f)可操作地连接在N个目标地址选择电路上的条件码寄存器,评估L个分支包中的每一个。
7、权利要求6的计算机处理器,其特征在于将指令高速缓冲存储器进一步布置成多个块,及L个分支包的所有目标地址包括下一地址及L个偏移地址,以及该下一地址指示其中存储了用所有目标地址指示的所有后续指令的多个块中所选择的一个,及L个偏移地址中的每一个指示多个块中所选择的一个中的单个指令。
8、权利要求6的计算机处理器,其特征在于指令可占用指令高速缓冲存储器的一整行,及各个包物理地位于N个小高速缓冲存储器每一个中,且(L+M)=N。
9、权利要求6的计算机处理器,其特征在于指令可占用的空间小于指令高速缓冲存储器的一整行,及各个包物理地位于N个小高速缓冲存储器的每一个中且(L+M)<N。
10、权利要求6的计算机处理器,其特征在于指令可占用指令高速缓冲存储器的一行以上,及各个包物理地位于N个小高速缓冲存储器的每一个中且(L+M)>N。
11、权利要求8的计算机处理器,其特征在于(L+M)=N=16。
12、权利要求9的计算机处理器,其特征在于N=16且(L+M)=4或8。
13、权利要求10的计算机处理器,其特征在于N=16且(L+M)=32或64。
14、一个数据处理系统,包括:
(a)一个中央处理单元,它包括:能执行具有各能并行执行的多个包的指令的处理器;分成各对应于指令中的包的小Icache的指令高速缓冲存储器;连接在至少一个条件码寄存器与偏移解码逻辑单元上的分支条件评估逻辑单元;连接在指令寄存器上的后期选择单元;多个执行单元;包含至少一个条件码寄存器与一个多端口寄存器文件在内的多个寄存器;多个高速缓冲存储器;主存储器,其中这些执行单元、逻辑单元、后期选择单元、寄存器、存储器、指令寄存器及指令高速缓冲存储器是功能上互连的;
(b)多个外部接线点,包括总线接口、总线、连接在以下各部件中至少一个上的至少一个输入/输出处理器:磁带驱动器、数据存储设备、计算机网、光纤通信设备、工作站、外围设备、信息网;其中任何一个都能在总线上传输数据与指令给中央处理单元;
其中该中央处理单元还包括:复制所有分支条件、下一地址及从指令的执行与评估得出的可能的下一条指令的所有偏移地址的装置,并且该装置将所有复制的信息存储在指令高速缓冲存储器;以及将所有可能的下一条指令加载进指令高速缓冲存储器中用下一地址指定的块中的装置;条件码寄存器与分支条件评估逻辑单元评估所有分支条件及偏移解码逻辑解码指令的所有偏移地址,及分支条件评估逻辑与至少一个条件码寄存器及至少一个其它寄存器通信以只保存确定下一条指令的分支条件评估逻辑的这些结果,而偏移解码逻辑与后期选择为指令寄存器从指令高速缓冲存储器中选择下一条指令。
15、一种计算机处理装置,包括:
(a)复制具有至少一个分支包及能并行执行的至少一个操作包的指令的所有分支包的装置;
(b)将带有复制的分支包的指令存储在指令高速缓冲存储器中使得各个复制的包及各个操作包存储在各个小Icache中的装置;
(c)将所有可能的下一条指令存储在指令高速缓冲存储器中的同一块中的装置;
(d)将指令选择进指令寄存器中的装置;
(e)同时评估所有小Icache中的指令的所有分支包中的所有分支条件以确定所采取的控制流分支的装置;
(f)与步骤(e)并行地同时译码所有小Icache中的指令的所有可能的后续指令的所有地址的装置;
(g)与步骤(e)与(f)并行地执行指令的所有操作包的装置;
(h)将评估装置的结果关联到解码装置、到执行装置的装置;以及
(i)将所选择的控制流分支中的下一条指令从指令高速缓冲存储器中选择到指令寄存器中的装置。
CNB981259596A 1997-12-31 1998-12-30 超标量或超长指令字计算机中选择下一指令的方法与装置 Expired - Fee Related CN1158597C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/001,527 1997-12-31
US09/001,527 US6112299A (en) 1997-12-31 1997-12-31 Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching
US09/001527 1997-12-31

Publications (2)

Publication Number Publication Date
CN1225469A CN1225469A (zh) 1999-08-11
CN1158597C true CN1158597C (zh) 2004-07-21

Family

ID=21696501

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB981259596A Expired - Fee Related CN1158597C (zh) 1997-12-31 1998-12-30 超标量或超长指令字计算机中选择下一指令的方法与装置

Country Status (6)

Country Link
US (1) US6112299A (zh)
EP (1) EP0927930A1 (zh)
JP (1) JPH11249897A (zh)
KR (1) KR100284789B1 (zh)
CN (1) CN1158597C (zh)
WO (1) WO1999034283A1 (zh)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6334184B1 (en) * 1998-03-24 2001-12-25 International Business Machines Corporation Processor and method of fetching an instruction that select one of a plurality of decoded fetch addresses generated in parallel to form a memory request
US6230260B1 (en) * 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US6247097B1 (en) * 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
JP2000293371A (ja) * 1999-04-09 2000-10-20 Hitachi Ltd マイクロプログラム制御方法及び装置
US6654870B1 (en) * 1999-06-21 2003-11-25 Pts Corporation Methods and apparatus for establishing port priority functions in a VLIW processor
US6408428B1 (en) * 1999-08-20 2002-06-18 Hewlett-Packard Company Automated design of processor systems using feedback from internal measurements of candidate systems
US7761857B1 (en) 1999-10-13 2010-07-20 Robert Bedichek Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts
US7343594B1 (en) * 2000-08-07 2008-03-11 Altera Corporation Software-to-hardware compiler with symbol set inference analysis
US7039906B1 (en) 2000-09-29 2006-05-02 International Business Machines Corporation Compiler for enabling multiple signed independent data elements per register
US6662296B1 (en) * 2000-10-02 2003-12-09 International Business Machines Corporation Method and system for testing millicode branch points
US6988189B1 (en) * 2000-10-31 2006-01-17 Altera Corporation Ternary content addressable memory based multi-dimensional multi-way branch selector and method of operating same
US6851046B1 (en) * 2000-11-14 2005-02-01 Globespanvirata, Inc. Jumping to a recombine target address which is encoded in a ternary branch instruction
JP3564445B2 (ja) * 2001-09-20 2004-09-08 松下電器産業株式会社 プロセッサ、コンパイル装置及びコンパイル方法
US20040008701A1 (en) * 2002-07-11 2004-01-15 Giacomini Peter J. Hierarchical finite-state machines
US20040008673A1 (en) * 2002-07-11 2004-01-15 Ygal Arbel Overhead processing in telecommunications nodes
US7349435B2 (en) * 2002-07-11 2008-03-25 Bay Microsystems, Inc. Multiport overhead cell processor for telecommunications nodes
US20040008708A1 (en) * 2002-07-11 2004-01-15 Giacomini Peter J. Overhead engine for telecommunications nodes
US7355743B2 (en) * 2002-10-25 2008-04-08 Pitney Bowes Inc. Statement level tracking in a document production and management process
US7310723B1 (en) 2003-04-02 2007-12-18 Transmeta Corporation Methods and systems employing a flag for deferring exception handling to a commit or rollback point
US20040268098A1 (en) * 2003-06-30 2004-12-30 Yoav Almog Exploiting parallelism across VLIW traces
US7698539B1 (en) * 2003-07-16 2010-04-13 Banning John P System and method of instruction modification
US7606997B1 (en) 2003-07-18 2009-10-20 Guillermo Rozas Method and system for using one or more address bits and an instruction to increase an instruction set
US7568070B2 (en) * 2005-07-29 2009-07-28 Qualcomm Incorporated Instruction cache having fixed number of variable length instructions
US7945433B2 (en) * 2007-04-30 2011-05-17 International Business Machines Corporation Hardware simulation accelerator design and method that exploits a parallel structure of user models to support a larger user model size
KR100892857B1 (ko) * 2008-07-30 2009-04-15 주식회사 유비콘테크놀로지 시스템온칩의 내부 메모리 장치 및 그 운영방법
US8327345B2 (en) * 2008-12-16 2012-12-04 International Business Machines Corporation Computation table for block computation
JP5576605B2 (ja) * 2008-12-25 2014-08-20 パナソニック株式会社 プログラム変換装置およびプログラム変換方法
EP2738681A4 (en) * 2011-07-27 2014-07-30 Fujitsu Ltd ELECTRONIC DEVICE, METHOD FOR ACCESSING THIS DEVICE AND PROGRAM THEREFOR
US20150363230A1 (en) * 2013-01-23 2015-12-17 Waseda University Parallelism extraction method and method for making program
US9372736B2 (en) * 2014-05-06 2016-06-21 International Business Machines Corporation Leveraging path information to generate predictions for parallel business processes
GB2524126B (en) * 2014-08-28 2016-07-27 Imagination Tech Ltd Combining paths
CN104765590B (zh) * 2015-04-29 2017-06-13 清华大学 一种支持超标量与超长指令字混合架构处理器的分支预测方法
CN106445466B (zh) * 2015-08-13 2019-07-09 深圳市中兴微电子技术有限公司 超长指令字指令集的指令处理方法及装置
US20170060591A1 (en) * 2015-08-26 2017-03-02 Huawei Technologies Co., Ltd. System and method for multi-branch switching
GB2544814B (en) 2015-11-30 2019-06-19 Imagination Tech Ltd Modulo hardware generator

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS4983342A (zh) * 1972-12-14 1974-08-10
US4295193A (en) * 1979-06-29 1981-10-13 International Business Machines Corporation Machine for multiple instruction execution
US4777587A (en) * 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
US5021945A (en) * 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
US4833599A (en) * 1987-04-20 1989-05-23 Multiflow Computer, Inc. Hierarchical priority branch handling for parallel execution in a parallel processor
JPH01214981A (ja) * 1988-02-24 1989-08-29 Hitachi Ltd 動画像表示装置
JPH0277940A (ja) * 1988-09-14 1990-03-19 Hitachi Ltd データ処理装置
US5127092A (en) * 1989-06-15 1992-06-30 North American Philips Corp. Apparatus and method for collective branching in a multiple instruction stream multiprocessor where any of the parallel processors is scheduled to evaluate the branching condition
WO1991004536A1 (en) * 1989-09-20 1991-04-04 Dolphin Server Technology A/S Instruction cache architecture for parallel issuing of multiple instructions
JP2835103B2 (ja) * 1989-11-01 1998-12-14 富士通株式会社 命令指定方法及び命令実行方式
US5450557A (en) * 1989-11-07 1995-09-12 Loral Aerospace Corp. Single-chip self-configurable parallel processor
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
EP0450658B1 (en) * 1990-04-06 2001-08-01 Nec Corporation Parallel pipelined instruction processing system for very long instruction word
CA2037708C (en) * 1990-05-04 1998-01-20 Richard J. Eickemeyer General purpose compound apparatus for instruction-level parallel processors
ATE146611T1 (de) * 1990-05-04 1997-01-15 Ibm Maschinenarchitektur für skalaren verbundbefehlssatz
US5317703A (en) * 1990-06-29 1994-05-31 Hitachi, Ltd. Information processing apparatus using an advanced pipeline control method
DE69129569T2 (de) * 1990-09-05 1999-02-04 Philips Electronics Nv Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen
US5301340A (en) * 1990-10-31 1994-04-05 International Business Machines Corporation IC chips including ALUs and identical register files whereby a number of ALUs directly and concurrently write results to every register file per cycle
JPH04239324A (ja) * 1991-01-14 1992-08-27 Nec Corp 分岐先予測方式
JP2874351B2 (ja) * 1991-01-23 1999-03-24 日本電気株式会社 並列パイプライン命令処理装置
JPH0520066A (ja) * 1991-07-16 1993-01-29 Mitsubishi Electric Corp 並列計算機
US5333283A (en) * 1991-10-29 1994-07-26 International Business Machines Corporation Case block table for predicting the outcome of blocks of conditional branches having a common operand
US5511172A (en) * 1991-11-15 1996-04-23 Matsushita Electric Co. Ind, Ltd. Speculative execution processor
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
WO1993017385A1 (en) * 1992-02-27 1993-09-02 Intel Corporation Dynamic flow instruction cache memory
EP0586057B1 (en) * 1992-08-31 2000-03-01 Sun Microsystems, Inc. Rapid instruction (pre)fetching and dispatching using prior (pre)fetch predictive annotations
US5784604A (en) * 1992-10-09 1998-07-21 International Business Machines Corporation Method and system for reduced run-time delay during conditional branch execution in pipelined processor systems utilizing selectively delayed sequential instruction purging
JPH06139075A (ja) * 1992-10-29 1994-05-20 Hitachi Ltd プログラムの命令配列方式およびコンパイラ
US5485629A (en) * 1993-01-22 1996-01-16 Intel Corporation Method and apparatus for executing control flow instructions in a control flow pipeline in parallel with arithmetic instructions being executed in arithmetic pipelines
US5481736A (en) * 1993-02-17 1996-01-02 Hughes Aircraft Company Computer processing element having first and second functional units accessing shared memory output port on prioritized basis
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
JP3461185B2 (ja) * 1993-06-30 2003-10-27 株式会社東芝 ロードモジュールへのソースコード行番号登録方法および装置
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
JPH07182169A (ja) * 1993-12-24 1995-07-21 Toshiba Corp 並列処理型コンピュータ
JP3547482B2 (ja) * 1994-04-15 2004-07-28 株式会社日立製作所 情報処理装置
US5513363A (en) * 1994-08-22 1996-04-30 Hewlett-Packard Company Scalable register file organization for a computer architecture having multiple functional units or a large register file
JP3578493B2 (ja) * 1994-08-24 2004-10-20 株式会社日立製作所 長語命令生成方法および命令処理装置
US5742784A (en) * 1995-01-25 1998-04-21 International Business Machines Corporation System for reordering of instructions before placement into cache to reduce dispatch latency
US5517442A (en) * 1995-03-13 1996-05-14 International Business Machines Corporation Random access memory and an improved bus arrangement therefor
EP0760976B1 (en) * 1995-03-23 2002-09-11 International Business Machines Corporation Object-code compatible representation of very long instruction word programs
GB9521977D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Cache memory

Also Published As

Publication number Publication date
CN1225469A (zh) 1999-08-11
KR100284789B1 (ko) 2001-03-15
US6112299A (en) 2000-08-29
EP0927930A1 (en) 1999-07-07
WO1999034283A1 (en) 1999-07-08
JPH11249897A (ja) 1999-09-17
KR19990062575A (ko) 1999-07-26

Similar Documents

Publication Publication Date Title
CN1158597C (zh) 超标量或超长指令字计算机中选择下一指令的方法与装置
US10915471B2 (en) Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
EP0454985B1 (en) Scalable compound instruction set machine architecture
US5337415A (en) Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency
US6609189B1 (en) Cycle segmented prefix circuits
US7039791B2 (en) Instruction cache association crossbar switch
US6029240A (en) Method for processing instructions for parallel execution including storing instruction sequences along with compounding information in cache
JPH04232532A (ja) ディジタル・コンピュータ・システム
US5465373A (en) Method and system for single cycle dispatch of multiple instructions in a superscalar processor system
US6742111B2 (en) Reservation stations to increase instruction level parallelism
US6351804B1 (en) Control bit vector storage for a microprocessor
EP0950946A2 (en) Software scheduled superscaler computer architecture
US5898882A (en) Method and system for enhanced instruction dispatch in a superscalar processor system utilizing independently accessed intermediate storage
US4773041A (en) System for executing a sequence of operation codes with some codes being executed out of order in a pipeline parallel processor
CN103365628A (zh) 用于执行预解码时优化的指令的方法和系统
JP2003526155A (ja) 配列境界をチェックする能力を有する処理アーキテクチャ
EP0518420A2 (en) Computer system for concurrent processing of multiple out-of-order instructions
JP2843750B2 (ja) スーパースカラ・プロセッサ・システムにおける非逐次命令ディスパッチおよび実行のための方法およびシステム
JPH07253887A (ja) スーパースカラ・プロセッサにおける命令の前復号および操向機構
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
JP2000020307A (ja) 分散命令完了論理
US11537402B1 (en) Execution elision of intermediate instruction by processor
US20240103761A1 (en) Buffer circuitry for store to load forwarding
Horst et al. Multiple instruction issue in the nonstop cyclone system
Tanaka Parallel Inference Engine: PIE

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: 20040721

Termination date: 20100201