CN101371223B - 运算数的提早有条件选择 - Google Patents

运算数的提早有条件选择 Download PDF

Info

Publication number
CN101371223B
CN101371223B CN200780002416.5A CN200780002416A CN101371223B CN 101371223 B CN101371223 B CN 101371223B CN 200780002416 A CN200780002416 A CN 200780002416A CN 101371223 B CN101371223 B CN 101371223B
Authority
CN
China
Prior art keywords
operand
instruction
pipeline
operands
execution
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.)
Active
Application number
CN200780002416.5A
Other languages
English (en)
Other versions
CN101371223A (zh
Inventor
詹姆斯·诺里斯·迪芬德尔费尔
杰弗里·托德·布里奇斯
迈克尔·斯科特·麦基尔文
托马斯·安德鲁·萨托里乌斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN101371223A publication Critical patent/CN101371223A/zh
Application granted granted Critical
Publication of CN101371223B publication Critical patent/CN101371223B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/3854Instruction completion, e.g. retiring, committing or graduating

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

基于提早认识到完成选择运算数指令的处理并不要求所述选择运算数指令将不使用的运算数,减轻了由于等待此类运算数数据而产生的延迟。在执行之前的适当点,进行关于由所述选择运算数指令所指定的一或多个选择标准、影响所述选择标准的条件和运算数的可用性的确定。保持电路使用所述确定来控制保持信号的激活和释放,所述保持信号控制处理器管线暂停。如果所述选定运算数可用,即使将不使用的另一运算数不可用,那么也跳过等待运算数数据所需要的暂停,或提早终止暂停。维持由于等待运算数而产生的暂停,直到满足所述选择标准并提取所述选定运算数且所述选定运算数为可用为止。

Description

运算数的提早有条件选择
技术领域
本发明大体上涉及用于在处理器管线中处理指令的技术,且更明确地说,涉及基于由在管线处理器中操作的前一指令所设置的条件而从多个运算数提早有条件地选择运算数。
背景技术
例如手机、膝上型计算机、个人数据助理(PDA)或类似产品的常见便携式产品要求使用执行支持通信和多媒体应用的程序的处理器。用于此类产品的处理系统包含处理器、指令来源、输入运算数的来源和用于存储执行结果的存储空间。举例来说,指令和输入运算数可存储在由通用寄存器和高速缓冲存储器的多层(包含例如指令高速缓冲存储器、数据高速缓冲存储器和系统存储器)组成的分层存储器配置中。
为了提供程序执行时的高性能,处理器通常在针对应用和用以制造处理器的工艺技术而优化的管线中执行指令。在高性能处理器中,从存储装置存取运算数的速率趋向于比处理器指令执行速率慢。因此,从存储装置获得指令指定的运算数可导致处理器暂停一个或一个以上循环,以解决存储装置存取时间与处理器时钟循环时间的差异。此外,往往发生以下状况:指令指定的源运算数是执行前一指令的结果。在多级执行管线中,要求前一执行结果的指令必须被暂停,直到完成前一指令的执行为止。这些暂停限制处理器的性能。
发明内容
在本发明的若干方面中,本发明认识到,本发明通常有利于使在执行指令时可能发生的暂停的数目最小化。因此,可能希望实施选择运算数指令,其使暂停最小化且有助于避免在例如支持通信和多媒体应用的程序的程序中分支指令的使用或使分支指令的使用最小化。对处理器的此类改进提供操作处理器时的改进的性能和效率。
本发明的一实施例应用于一种管线操作方法。所述方法涉及检测指定将要从至少两个运算数的群组中选择至少一个运算数的指令,所述至少两个运算数中的至少一者可能正在管线中运行。随后另一步骤是确定由指令所指定的运算数选择标准。一旦确定选择标准,接着就评估所述选择标准以便从至少两个运算数的群组中选择至少一个运算数。一旦所述至少一个选定运算数可用,接着就提交指令以供执行,而无需等待非选定运算数变为可用。
本发明的另一方面提出一种用于在管线处理器中处理指令的设备。所述设备包含执行级,其用于使用多个指令中的每一指令所要求的输入运算数数据来执行指令。使用保持电路,其针对每一指令而产生保持,直到接收到所有输入运算数数据为止,借此完成保持。所述设备还包含用于在完成接收输入运算数数据之前确定将要选择的运算数数据且在确定选定运算数数据可用后相对于执行中的指令中所指定的选择标准而终止保持的装置。
从以下具体实施方式和附图中将了解对本文中所揭示的发明概念以及进一步特征的更完整理解。
附图说明
图1是其中可采用本发明的实施例的示范性无线通信系统的框图;
图2A是根据本发明的第一实施例其中可采用运算数函数的有条件选择的管线复合处理器的功能框图;
图2B是根据本发明识别用于在进入处理器的执行级之前确定何时暂停处理器管线的条件的决策表;
图2C是根据本发明的第二实施例其中可采用压缩数据运算数函数的有条件选择的管线复合处理器的功能框图;
图3是根据本发明指定有条件的运算数选择函数的32位指令的一般格式的图形说明;以及
图4是根据本发明在管线中提早有条件地选择运算数所要求的操作步骤的流程图。
具体实施方式
现将参看附图来更充分地描述本发明,附图中展示本发明的若干实施例。然而,本发明可以各种形式来体现且不应理解为限于本文中所陈述的实施例。事实上,提供这些实施例,以使得本发明将是详尽且完整的且将把本发明的范围充分地传达给所属领域的技术人员。
最初,可用例如C、C++、JAVA、Smalltalk、JavaScript、Visual Basic、TSQL、Perl等高级编程语言或用各种其它编程语言来编写根据本发明的教示将要被操作或用于执行操作的计算机程序代码或“程序代码”。将用这些语言中的一种语言编写的程序编译成将高级程序代码转换成本地汇编程序的目标处理器结构。也可直接用本地汇编语言来编写目标处理器结构的程序。本地汇编程序使用机器层二进制指令的指令记忆表示。如本文中所使用的程序代码或计算机可读媒体指代机器语言代码,例如,处理器可理解其格式的目标代码。
图1是其中可采用本发明的实施例的示范性无线通信系统100的框图。出于说明的目的,图1展示三个远程单元120、130和150以及两个基站140。将认识到,常见的无线通信系统可具有额外远程单元和基站。远程单元120、130和150分别包含硬件组件125A、125B和125C,其具有用于根据本发明执行程序代码并操作的处理器。图1展示从基站140到远程单元120、130和150的前向链路信号180,和从远程单元120、130和150到基站140的反向链路信号190。
在图1中,远程单元120展示为移动电话、远程单元130展示为便携式计算机,且远程单元150展示为无线本地环路系统中的固定位置远程单元。举例来说,远程单元可以是手持式个人通信系统(PCS)单元、例如个人数据助理的便携式数据单元,或例如仪表读数设备的固定位置数据单元。虽然图1说明根据本发明的教示的远程单元,但本发明并不限于所说明的这些示范性单元。举例来说,通常,改进的处理效率不仅仅是如所说明的远程装置的理想特征,而且是具有内部处理器的大多数产品的理想特征。可通过具有其中根据本发明有条件地选择源运算数的指令来在管线处理器中获得有效执行指令时的改进。
处理器通常使用对指令指定的运算数进行操作的不同指令集。加载、存储、加法、乘法、移位、选择、AND(与)和OR(或)指令是可在指令集结构中提供的指令的实例。选择指令是其中可从两个或两个以上运算数的选择项有条件地选择运算数且将选定运算数存储到目标寄存器地址的指令的实例。为了有效地执行选择指令,在使由处理器暂停导致的所损失的时间最少的情况下对关于选择哪个运算数的确定和提取操作进行处理。
图2A是其中可采用运算数函数的有条件选择的示范性管线复合处理器200的功能框图。复合处理器200包含处理器管线202、L1指令高速缓冲存储器204、L2数据高速缓冲存储器206和存储器层级208。为了讨论的清楚性,未展示可连接到复合处理器的外围装置。根据本发明的第一实施例,复合处理器200可适当地用于硬件组件125A到125C中以执行存储在存储器层级208中的程序代码。
处理器管线202包含五个主要级:指令提取级210、解码级212、读取寄存器级214、执行级216和写回级218。所属领域的技术人员将认识到,这些级中的任一者可分成执行有关功能的若干部分的多个级,或者,管线可包含用于提供额外功能性的其它级。出于讨论的目的,虽然针对高速设计每一级可分成两个或两个以上级,但仍将主要级中的若干级展示为单个级。举例来说,执行级216分成三个子级:执行A220、执行B222和执行C224。
虽然展示单个处理器管线202,但具有有条件地选择的运算数的指令的处理可应用于超标量设计和实施并行管线的其它结构。替代实施方案中支持运算数指令的有条件选择的处理器可具有比处理器管线202多或少的级。举例来说,针对高时钟速率而设计的超标量处理器可具有两个或两个以上并行管线,且每一管线可将指令提取级210、解码级212、读取寄存器级214、执行A级220、执行B级222、执行C级224以及写回级218分成两个或两个以上管线级,从而增加总的处理器管线深度以便支持高时钟速率。
在处理器管线202中,第一级是指令提取级210。指令提取级210从L1指令高速缓冲存储器204提取指令以供由稍后级处理。如果在L1指令高速缓冲存储器204中指令提取未中(miss),那么从可包含第2层(L2)高速缓冲存储器和主存储器的存储器层级208提取指令。可将来自例如启动只读存储器(ROM)、硬盘、光盘等其它来源或来自例如因特网等外部接口的指令加载到主存储器。
指令提取级210将经提取的每一指令供应到解码级212。解码级212将指令解码成供应到管线的接下来的级的控制位的集合且可在解码中支持与经提取的指令的执行相关的额外操作。
可采用选择运算数类型指令的一般形式且在例如处理器管线202中执行,以便避免分支且以便在处理之前操纵数据或合并数据,如下文进一步描述。举例来说,加载、存储、算术、逻辑、移位、比较、位操纵指令和类似指令可添加有运算数选择函数,以便有条件地处理运算数数据。在选择运算数加载指令和选择运算数存储指令中,在存储在通用寄存器(GPR)堆和引用为GPR寄存器地址的至少两个存储器基址之间进行选择。在选定加法指令中,从至少两个运算数的选择项选择运算数且将选定运算数与另一运算数相加。在选择运算数指令的一般形式中,可基于所满足的一或多个选择标准而从运算数的一较大群组中选择一个运算数或运算数的一个群组。将选定运算数或运算数的群组供应到执行路径以供如由选择运算数指令所指示的进一步处理。应注意,可将一个或一个以上标准用作用于确定选择的标准。选择运算数类型指令的一般形式的子集是选择指令,其中从两个寄存器运算数有条件地选择运算数且将选定运算数存储到目标寄存器地址。选择运算数指令的另一形式是指定寄存器运算数与中间值之间的选择项的指令。
另一实例是用于从两个或两个以上运算数区块(如在向量处理器中可能会使用)的选择项选择运算数区块的选择运算数指令。由选择运算数指令中的含有指向区块开始处的指针的字段引用每一运算数区块。另外,一般选择标准可指定例如可从多个位选择标准获得的两个以上选择项。选择标准可指定将要从较大群组选择哪些运算数,将要选择的运算数的数目,或如由处理器的指令集结构所指定的其它选择机制。
在执行如指令集结构中通常所指定的各种算术、逻辑和其它函数指令时,可从由处理器设置的条件旗标产生用于确定运算数选择的条件。举例来说,负(N)位226针对那些影响N位的指令指示执行结果是否为负。零(Z)位228针对那些影响Z位的指令指示执行结果是否全为零。进位(C)位230针对那些影响C位的指令指示执行结果是否涉及进位输出。溢出(V)位232针对那些影响V位的指令指示执行结果是否溢出。这些位可存储在旗标寄存器或条件码(CC)寄存器234中,所述寄存器也可以是程序状态寄存器的一部分。
可由各种执行级来设置条件码位,但维持改变条件码位的程序次序。举例来说,可在执行A级220中完成例如加法、逻辑运算、位选择、地址产生和类似运算等特定运算。这些执行A级220指令也可经指定以影响条件码寄存器234,且可在执行结束时在路径240上发送受影响的条件码位。更复杂的运算(例如,具有寄存器移位指令的算术逻辑单元(ALU)运算中所指定)可分成两个单独运算步骤。第一运算步骤在执行A级220中完成,而第二运算步骤在执行B级222中完成。在完成执行B级222中的指令执行时,可在路径242上发送对条件码寄存器234的改变。具有更复杂性质的运算可采用额外执行级来完成。举例来说,乘法指令可采用三个级(执行A级220、执行B级222和执行C级224)来完成乘法运算。在完成第三级时,条件码寄存器234可再次受通过路径244发送的适当位影响。由于因执行长度的变化的缘故指令可以不同于程序次序的次序完成,所以根据程序次序来设置条件码寄存器234中的位。出于说明的目的,用于控制条件寄存器234位的设置的设施包含在CC控制逻辑246中。
选择运算数指令的处理可在解码级212中开始。解码级首先确定运算数选择标准,而不是等待提取了所有运算数才确定运算数选择标准状态。为了确定运算数选择标准,管线必须经检查以确定管线中是否已存在可影响运算数选择标准的任何指令。由于影响条件码寄存器的指令可影响寄存器中的仅一位、所有位或位的某一组合,所以解码如由选择运算数指令所指定的运算数选择标准以确定要求条件码寄存器中的位的什么组合。举例来说,如果前一结果是零且设置了Z位228,那么可选择一个运算数,而如果没有设置Z位,那么可选择不同运算数。可通过检查N位226和Z位228两者来查看所述两者是否都设置为“0”而获得更复杂的选择标准(例如,如果前一计算导致正的非零结果,那么选择一运算数)。通过条件码(CC)路径248将条件寄存器234值转发到其中可对条件码位进行监视的解码级212、读取寄存器级214和执行A级220。
在解码级212中存在一选择运算数指令的情况下,可在处理器管线202中存在处于所述选择运算数指令之前的多达四个额外指令。这四个额外指令中的三个可以在各种执行级中。如果具有可影响相同条件码位的指令的多个执行级同时在操作中,那么执行的程序次序指出哪个指令在设置条件码位方面具有优先权。由前视(look ahead)过程确定影响用于运算数选择标准中的条件码位的在选择运算数指令之前的最后指令。
前视过程也在解码中开始,其中从穿过管线的每一指令解码控制位。控制位的一部分指出指令将要影响哪些条件位(如果存在)。每一经解码的指令的控制位跟随穿过管线的指令指定的运算,以使得每一管线级可经检查以确定所述运算级是否将要影响条件码寄存器234。作为一实例,前视可在每一管线执行级中作为特定控制位的OR而操作。此方法在管线执行级中没有指令影响一个或多个有关条件位的状况下可用作快速测试。由于控制位可用于管线的每一执行级,所以也可在条件寄存器可受到影响时确定控制位。
如果管线执行级中没有指令影响一个或多个有关条件位,那么在解码级中存在可用于确定运算数选择标准的足够信息。一旦确定将要选择哪个运算数,处理就继续到下一读取寄存器级214,其被给予控制信息以仅提取选定运算数。
如果管线执行级中的至少一个指令影响一个或多个有关条件位,那么处理继续到下一读取寄存器级214,其被给予控制信息以提取选择运算数指令所要求的所有运算数。在提取所有运算数时监视选择标准的确定。可在已提取所有运算数之前确定选择标准,此举可用来缩短暂停时间,如下文进一步详细描述。
读取寄存器级214提取要求在例如执行A级220中处理的运算数。可从通用寄存器(GPR)堆250或从转发网络(未图示)提取运算数。转发网络提供围绕GPR堆250的快速路径,以便如同可从执行级获得结果运算数一样快地供应结果运算数。即使通过转发网络,来自深执行管线的结果运算数仍可如同在处理器管线202中一样花费三个循环,或在替代实施方案中花费三个以上循环。在这些循环期间,要求来自执行管线的结果运算数数据的读取寄存器级214中的指令必须等待,直到结果运算数可用为止。
必须解决的暂停情形的另一实例与加载指令的执行一起发生。如果在L1数据高速缓冲存储器206中存在未中,那么加载指令的执行可花费大量循环。加载指令可使用GPR堆250寄存器来供应基址且在执行A级220中向基址添加中间值以产生有效地址。可通过数据路径252将有效地址发送到L1数据高速缓冲存储器206。在L1数据高速缓冲存储器206中存在未中的情况下,必须从可包含L2高速缓冲存储器和主存储器的存储器层级208提取数据。在L1数据高速缓冲存储器未中之后提取数据所花费的循环期间,要求运行中加载数据作为源运算数的指令在管线中暂停,直到运行中运算数可用为止。暂停可视为在读取寄存器级214中或在执行A级220的开始时发生。在解决未中后,在路径254上将加载数据转发到写回操作,所述写回操作可视为写回级218的一部分。接着将运算数写入到GPR堆,且也可将运算数发送到转发网络。由加载操作所引起的选择运算数指令的执行的暂停效应可得以最小化,如下文所讨论。
应注意,在一些处理器管线中,可在已开始寄存器堆存取之后发生选择标准的评估。在这种状况下,当确定不需要且尚未接收到运算数时,指令的处理停止追踪运算数正在哪里运行,或处理器停止向转发网络“收听”指示运算数可用的标记。与提取操作相比,此程序是较被动的操作。每一方法可在本发明的教示内操作。
图2B是识别用于在进入处理器的执行级之前确定何时暂停处理器管线的条件的示范性决策表265。正被评估的管线中的指令是指定从两个运算数选择项(运算数A和运算数B)选择一个运算数的选择运算数指令。在列266和267中分别展示运算数B和运算数A的可用性。表265基于选择标准将经确定以选择运算数A的情形。如果运算数指示为可用,那么获得运算数并不要求额外循环。在列268中展示选择标准的状态。如在列269中所展示,提取操作经指定以获得不可用的一个或两个运算数。运算数可为可用的而无需暂停管线,如由转发网络提供或来自GPR堆。如果无法确定选择标准(不可用),那么认为是由于管线中的可影响选择标准的至少一个指令的缘故。如果完成执行的输入(包含运算数和选择标准)不可用,那么管线暂停,如在暂停列270中所展示。由表的各行指示一般操作情形。
行271指示,两个运算数A和运算数B都不可用且选择标准也不可用。管线在读取运算数级中暂停,同时提取两个运算数且监视一或多个选择标准条件位。行272指示,在两个运算数变为可用之前确定了选择标准,在这种状况下,知道不需要运算数B。如果例如在行271的情形下运算数B的提取已开始,那么可安全地终止运算数B的提取。管线在读取级中暂停,以等待运算数A变为可用。如果运算数A或运算数B在确定选择标准之前变为可用,如在行273和275的情形下,那么处理在读取级中维持暂停,以等待另一运算数变为可用,或等待选择标准被确定,因为选择标准可能会影响运算数提取操作。如果两个运算数均可用或在管线暂停已开始之后但在确定选择标准之前变为可用,如在277的情形下,那么处理在读取级中维持暂停,以等待选择标准被确定。如果在读取暂停已开始之后确定选择标准,且运算数A可用但运算数B不可用,如在行274的情形下,那么终止运算数B的提取且处理在执行级中继续。如果处理在没有暂停的情况下到达例如行274的情形,那么在读取寄存器级中将不要求暂停,因为输入可用,且处理在执行级中继续。如果在读取暂停已开始之后确定选择标准,且运算数B可用但运算数A不可用,如在行276的情形下,那么暂停继续,直到运算数A变为可用为止。如果处理在没有暂停的情况下到达例如行276的情形,那么在读取寄存器级中将要求暂停,因为运算数A不可用。如果运算数和选择标准两者都可用,那么不要求管线暂停且处理在执行级中继续。
如本文中所教示,如果选定运算数可用,即使将不被使用的另一运算数不可用,那么开始执行的选择运算数指令也将跳过等待运算数数据将要求的暂停,或将引起暂停的提前终止。维持由于等待选择运算数指令的运算数而引起的暂停,直到确定了选择标准并提取了选定运算数且选定运算数为可用为止。
一旦运算数可用于处理,就进入执行级。对于基于选择标准而在两个GPR堆运算数中选择且将选定运算数存储到目标GPR堆地址的选择指令,操作可绕过执行级且将选定运算数转发到写回级218和转发网络(未图示)。通常存在结果转发网络(未图示),以便将每一执行级的结果转发到穿过管线的稍后指令。对于一般选择运算数指令,将选定运算数转发到执行A级220,以便开始执行级处理。
每一执行级可完成指令的处理或可视指令指定的操作的复杂性而仅处理所需操作的一部分。当每一执行级完成其操作时,可直接将结果发送到写回级218。举例来说,如果指令在执行A级220结束时完成其指定操作,那么通过路径252将结果转发到写回级218。同样,在执行B级222结束时完成其操作的指令通过路径258将其结果转发到写回级218,且在执行C级224结束时完成其操作的那些指令通过路径260将其结果转发到写回级218。写回级218将结果写回到GPR堆250中的寄存器。由于在写回级218中可能会以不同于程序次序的次序接收结果,所以写回级218使用处理器设施,以便在将结果写回到GPR堆250时保持程序次序。
在使用压缩数据操作的情况下,可通过使用额外旗标来扩展选择运算数类型指令。举例来说,可在压缩数据操作中按字节设置一组旗标,例如,大于或等于(GE)旗标、小于旗标(LE)或其它有条件指示(CI)。在32位数据类型中,可使用四个CI旗标。在64位数据类型中,可使用八个CI旗标。
图2C是根据本发明的第二实施例其中可采用压缩数据选择运算数指令的管线复合处理器280的功能框图。管线处理器282基于支持压缩32位运算数的CI旗标284而使用一个或多个选择标准。程序状态字中可包含CI旗标284以及条件码寄存器286作为组合式CC/CI寄存器288。
压缩数据选择运算数指令可使用CI旗标来从两个压缩数据运算数中选择字节。举例来说,可在指令集结构中指定32位压缩数据选择指令以使用个别CI[3:0]旗标,如果所述旗标是一,那么从运算数A中选择相应字节,且如果所述旗标是零,那么从运算数B中选择相应字节。CI[3:0]=1010将从运算数A中选择字节3,从运算数B中选择字节2,从运算数A中选择字节1,且从运算数B中选择字节0,以便产生含有选定字节的32位目标寄存器。如果CI[3:0]=1111,那么将选择运算数A的所有字节。如果CI[3:0]=0000,那么将选择运算数B的所有字节。对于条件CI[3:0]=1111,不要求运算数B且不需要提取运算数B。对于条件CI[3:0]=0000,不要求运算数A且不需要提取运算数A。由程序状态字中的CI旗标的位设置来确定选择标准。出于确定提取运算数还是略去运算数的提取的目的,可使用基于全是一或全是零的CI旗标的选择标准。
通过使用保持电路(例如,图2A的保持电路262和图2C的保持电路290)可能会在处理器管线中产生暂停。保持电路产生保持信号,其可例如用以选通管线级寄存器以暂停管线中的指令。对于图2A的处理器管线202和图2C的管线282,如果不是所有输入都可用,那么可例如在读取寄存器级中激活保持信号,以使得保持管线,直到输入到达为止。在所有运算数变为可用且已确定选择标准时释放保持信号。可根据例如图2B的表265中(作为实例)所指定的操作情形适当地激活和释放保持信号。
选择运算数指令的处理必需确定指令类型并检查条件码和旗标(例如,CI旗标),从而指示条件和旗标状态以确定选择标准。指令可在指令格式中具有指示所述指令是选择运算数指令的字段。本发明的教示可应用于多种指令格式和结构规范。
图3是根据本发明的教示指定有条件的运算数选择函数的32位指令300的一般格式。选择运算数指令300含有:操作码302,其将指令识别为选择运算数指令;以及至少两个源运算数地址字段Ra 304和Rb 306。操作码302指定选择标准和例如加法、乘法、移位、逻辑、位操纵和类似操作的指令操作两者。或者,可在指令格式中指定一或多个单独位来将指令识别为选择运算数指令,且操作码仅用于函数规范。其它位字段308、310和312可以是供使用的指令特定字段,例如,用于控制执行指令还是不执行指令的条件字段、目标寄存器地址字段、数据类型和类似字段。
图4是说明在处理器管线中提早有条件地选择运算数所要求的操作步骤的流程图400。举例来说,在步骤404中,在解码级(例如,解码级212)中解码经提取的指令。在步骤406中,确定所述指令是否是选择运算数指令。如果指令不是选择运算数指令,那么处理移动到步骤408。在步骤408处,例如从通用寄存器堆(例如,GPR堆250)将所有运算数适当地存取到读取寄存器级214。如果如步骤410中所确定,运算数并非立即可用,那么如步骤412中所指示,指令必须暂停以等待所有运算数。如步骤410中所确定,一旦所有运算数可用,就在步骤414中允许指令在执行管线中继续,例如在图2A的执行1级220中开始。
考虑在步骤404中提取并解码选择运算数指令的另一情形。在这种状况下,在步骤406处,确定经提取的指令是选择运算数指令,且处理移动到步骤416。在步骤416中,进行测试以决定是否可基于条件码寄存器(例如,图2A的CC寄存器234或图2C的CC/CI寄存器288)的当前状态而确定运算数选择标准。如果正在管线中运行的一或多个先前指令可影响条件旗标且随后可影响运算数选择标准,那么可能无法确定选择标准。如果可基于CC或CI寄存器的当前状态而确定运算数选择标准,那么处理移动到步骤418。在步骤418中,提取基于选择标准而选择的运算数。处理继续到步骤420,从而到达例如读取寄存器级214。在步骤420处,确定选定运算数是否可用。如果如步骤420中所确定,选定运算数并非立即可用,那么如步骤422中所指示,指令必须暂停以等待选定运算数。
如步骤420中所确定,一旦选定运算数可用,处理就继续到步骤424,其确定指令是否是一般选择运算数指令类型的子集或一般选择运算数指令类型的选择指令。如果指令是选择指令,那么处理继续到步骤426,其中绕过执行级(例如,执行级216)且将运算数转发到写回级(例如,写回级218)。也可将运算数发送到转发网络。如果指令是一般选择运算数指令,那么处理例如通过在执行1级220处开始而继续到步骤414。
可能发生步骤416中的测试确定正在管线中运行的一或多个先前指令可影响CC寄存器234或CC/CI寄存器288且随后可影响运算数选择标准的情形。在这种状况下,处理继续到步骤430,其中开始一过程以提取所有运算数,且监视条件旗标以进行更新。在步骤432中进行测试以确定是否已更新与确定选择标准有关的所有CC或CI位。如果尚未更新有关CC或CI位,那么处理返回到步骤430且继续所有运算数的提取。如在步骤432中所确定,一旦已更新所有有关CC或CI位,处理就继续到步骤434,其中停止提取如由选择标准所确定的不需要的运算数。处理接着继续到步骤420,其中确定选定运算数是否可用。如果不可用,那么如在步骤422中所指示,指令的处理必须暂停,直到确定选定运算数可用为止。
一旦选定运算数可用,处理就继续到步骤424,其确定指令是否是一般选择运算数指令类型的子集或一般选择运算数指令类型的选择指令。如果指令是选择指令,那么处理继续到步骤426,其中绕过执行级(例如,执行级216)且将运算数转发到写回级(例如,写回级218)。还将运算数发送到转发网络。如果指令是一般选择运算数指令,那么处理例如通过在执行1级220处开始而继续到步骤414。
虽然已在当前优选的情境下揭示本发明,但将认识到,本发明的教示可适用于与本揭示内容和所附权利要求书一致的多种情境。

Claims (19)

1.一种管线操作方法,其包括:
检测指定将要从至少两个运算数的群组中选择至少一个运算数的指令,所述至少两个运算数中的至少一者可能正在所述管线中运行;
确定如由所述指令所指定的运算数选择标准;
确定受执行中的前一指令影响的条件旗标满足所述运算数选择标准,以从所述至少两个运算数的群组中选择至少一个运算数,其中确定条件旗标满足所述运算数选择标准进一步包括在执行管线级中向前检视以检查至少一个条件旗标是否受执行中的所述前一指令影响;以及
一旦所述至少一个选定运算数可用就提交所述指令以供执行,而无需等待所述群组中的非选定运算数变为可用。
2.根据权利要求1所述的方法,其中所述确定选择标准进一步包括:
解码所述指令以确定用作所述选择标准的基础的至少一个条件旗标。
3.根据权利要求1所述的方法,其中确定条件旗标满足所述运算数选择标准进一步包括:
如果由所述选择标准所指定的条件旗标受仍在执行中的所述前一指令影响,那么等待将受影响的所述条件旗标。
4.根据权利要求1所述的方法,其中将要选择至少两个运算数,且其中所述群组包括至少三个运算数。
5.根据权利要求1所述的方法,其中所述指令指定所述至少一个选定运算数的函数。
6.根据权利要求5所述的方法,其中所述函数基于所述至少一个选定运算数而传回经计算的结果。
7.根据权利要求1所述的方法,其中将要从运算数区块的群组中选择至少两个运算数的区块,其中每一运算数区块具有两个或两个以上运算数。
8.根据权利要求1所述的方法,其中所述选择标准是基于至少一个压缩数据字节条件指示。
9.一种在处理器管线中处理选择运算数指令的方法,所述方法包括:
在所述处理器管线的解码级中解码所述选择运算数指令中所指定的选择标准;
通过在执行管线级中向前检视以检查至少一个条件旗标是否受执行中的前一指令影响,来分析条件旗标,所述条件旗标由所述选择标准指定;以及
如果所述条件旗标的所述分析指示将要选择所述选择运算数指令中所指定的至少两个运算数的群组中的至少一个运算数,那么终止针对非选定运算数而起作用的任何等待;以及
用至少一个选定运算数来执行所述选择运算数指令。
10.根据权利要求9所述的方法,其中所述分析条件旗标进一步包括:
如果由所述选择标准所指定的所述条件旗标受仍在执行中的所述前一指令影响,那么等待将受影响的所述条件旗标。
11.根据权利要求9所述的方法,其中至少两个运算数的所述群组包括寄存器运算数和中间值运算数。
12.根据权利要求9所述的方法,其中所述执行所述选择运算数指令进一步包括:
传回作为所述至少一个选定运算数的函数的结果。
13.一种用于处理多个指令的管线处理器,所述管线处理器包括:
执行级,其用于通过使用输入运算数数据来执行所述指令,所述指令指定要从至少两个运算数的群组中选择的至少一个运算数,其中通过确定条件码满足指令指定的选择标准来选择所述输入运算数数据,且其中确定条件码满足选择标准进一步包括在执行管线级中向前检视以检查至少一个条件旗标是否受执行中的前一指令影响;
保持电路,其用于在所述执行级执行之前针对所述指令而产生保持,直到针对所述指令完成接收所述输入运算数数据为止;以及
用于在确定所述选定运算数数据可用后终止所述保持的装置,而无需等待所述群组中的非选定运算数变为可用。
14.根据权利要求13所述的管线处理器,其中终止所述保持进一步包括终止指令完成执行所不必要的输入运算数数据的提取操作。
15.根据权利要求13所述的管线处理器,其进一步包括:
解码器,其用于将所述多个指令中的每一指令解码成控制位,所述控制位包含指定表示所述选择标准的所述条件码的控制位;以及
管线级,其在所述管线中逐级追踪所述控制位。
16.根据权利要求15所述的管线处理器,其中在每一管线级中所述控制位是可读取的,以便确定执行级是否影响所述条件码。
17.根据权利要求13所述的管线处理器,其中所述执行中的指令包括指定选择运算数指令且指定用于从至少两个运算数的群组中选择至少一个运算数的选择标准的至少一个位字段,和用于将要被选择的每一运算数的至少一个位字段。
18.根据权利要求17所述的管线处理器,其中所述指令进一步包括指定所述选定的至少一个运算数的函数的位字段。
19.根据权利要求17所述的管线处理器,其中用于每一运算数的所述至少一个位字段是指向运算数数据元素的区块的地址。
CN200780002416.5A 2006-01-20 2007-01-22 运算数的提早有条件选择 Active CN101371223B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/336,357 US9710269B2 (en) 2006-01-20 2006-01-20 Early conditional selection of an operand
US11/336,357 2006-01-20
PCT/US2007/060814 WO2007085010A2 (en) 2006-01-20 2007-01-22 Early conditional selection of an operand

Publications (2)

Publication Number Publication Date
CN101371223A CN101371223A (zh) 2009-02-18
CN101371223B true CN101371223B (zh) 2015-07-15

Family

ID=38286963

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200780002416.5A Active CN101371223B (zh) 2006-01-20 2007-01-22 运算数的提早有条件选择

Country Status (6)

Country Link
US (1) US9710269B2 (zh)
EP (2) EP1974254B1 (zh)
JP (1) JP5335440B2 (zh)
KR (1) KR100986375B1 (zh)
CN (1) CN101371223B (zh)
WO (1) WO2007085010A2 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
PL3422178T3 (pl) 2011-04-01 2023-06-26 Intel Corporation Przyjazny dla wektorów format instrukcji i jego wykonanie
US10157061B2 (en) 2011-12-22 2018-12-18 Intel Corporation Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks
US9280344B2 (en) * 2012-09-27 2016-03-08 Texas Instruments Incorporated Repeated execution of instruction with field indicating trigger event, additional instruction, or trigger signal destination
KR101711388B1 (ko) 2013-01-28 2017-03-02 삼성전자주식회사 파이프라인에서 블럭을 스케줄하는 컴파일 방법 및 장치
US10592252B2 (en) 2015-12-31 2020-03-17 Microsoft Technology Licensing, Llc Efficient instruction processing for sparse data
US10459727B2 (en) 2015-12-31 2019-10-29 Microsoft Technology Licensing, Llc Loop code processor optimizations
US11385897B2 (en) * 2019-10-01 2022-07-12 Marvell Asia Pte, Ltd. Merge execution unit for microinstructions

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5699537A (en) * 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5150469A (en) * 1988-12-12 1992-09-22 Digital Equipment Corporation System and method for processor pipeline control by selective signal deassertion
GB2228597A (en) 1989-02-27 1990-08-29 Ibm Data processor with conditional instructions
JP3082944B2 (ja) 1990-12-20 2000-09-04 富士通株式会社 パイプライン処理装置
GB2291515B (en) 1994-07-14 1998-11-18 Advanced Risc Mach Ltd Data processing using multiply-accumulate instructions
TW325552B (en) 1996-09-23 1998-01-21 Advanced Risc Mach Ltd Data processing condition code flags
TW343318B (en) 1996-09-23 1998-10-21 Advanced Risc Mach Ltd Register addressing in a data processing apparatus
GB2317466B (en) 1996-09-23 2000-11-08 Advanced Risc Mach Ltd Data processing condition code flags
GB2317464A (en) 1996-09-23 1998-03-25 Advanced Risc Mach Ltd Register addressing in a data processing apparatus
US6173393B1 (en) * 1998-03-31 2001-01-09 Intel Corporation System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data
JP2000020309A (ja) * 1998-06-30 2000-01-21 Toshiba Microelectronics Corp デジタルシグナルプロセッサ
JP2001051845A (ja) 1999-08-12 2001-02-23 Hitachi Ltd アウトオブオーダー実行方式
US6633971B2 (en) * 1999-10-01 2003-10-14 Hitachi, Ltd. Mechanism for forward data in a processor pipeline using a single pipefile connected to the pipeline
US20050188182A1 (en) * 1999-12-30 2005-08-25 Texas Instruments Incorporated Microprocessor having a set of byte intermingling instructions
US6604192B1 (en) 2000-01-24 2003-08-05 Hewlett-Packard Development Company, L.P. System and method for utilizing instruction attributes to detect data hazards
JP2001216275A (ja) 2000-02-01 2001-08-10 Sony Corp 画像処理装置および画像処理方法
KR20030007403A (ko) 2000-11-27 2003-01-23 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 데이터 프로세싱 장치
JP4220722B2 (ja) 2001-05-02 2009-02-04 パイオニア株式会社 情報記録媒体および情報読取装置
US7028171B2 (en) * 2002-03-28 2006-04-11 Intel Corporation Multi-way select instructions using accumulated condition codes
JP2004062401A (ja) 2002-07-26 2004-02-26 Matsushita Electric Ind Co Ltd 演算プロセッサおよび当該演算プロセッサを用いたカメラ装置
US6944747B2 (en) * 2002-12-09 2005-09-13 Gemtech Systems, Llc Apparatus and method for matrix data processing
US7636837B2 (en) * 2003-05-28 2009-12-22 Fujitsu Limited Apparatus and method for controlling instructions at time of failure of branch prediction
GB2409063B (en) 2003-12-09 2006-07-12 Advanced Risc Mach Ltd Vector by scalar operations

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5699537A (en) * 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions

Also Published As

Publication number Publication date
JP5335440B2 (ja) 2013-11-06
US9710269B2 (en) 2017-07-18
WO2007085010A3 (en) 2007-12-13
EP2461246B1 (en) 2017-03-29
EP1974254B1 (en) 2012-06-06
EP1974254A2 (en) 2008-10-01
WO2007085010A2 (en) 2007-07-26
KR20080087171A (ko) 2008-09-30
US20070174592A1 (en) 2007-07-26
EP2461246A1 (en) 2012-06-06
JP2009524167A (ja) 2009-06-25
CN101371223A (zh) 2009-02-18
KR100986375B1 (ko) 2010-10-08

Similar Documents

Publication Publication Date Title
KR101459536B1 (ko) 사전 통지 기법들을 사용하여 프로그램의 순차적 흐름을 변경하기 위한 방법들 및 장치
EP2864868B1 (en) Methods and apparatus to extend software branch target hints
US6279105B1 (en) Pipelined two-cycle branch target address cache
CN101371223B (zh) 运算数的提早有条件选择
US20070113058A1 (en) Microprocessor with indepedent SIMD loop buffer
US6728872B1 (en) Method and apparatus for verifying that instructions are pipelined in correct architectural sequence
KR101541001B1 (ko) 아직 발행되지 않은 명령들에 대한 얼리 액세스를 가진 코프로세서를 구비한 프로세서
US20120204008A1 (en) Processor with a Hybrid Instruction Queue with Instruction Elaboration Between Sections
JP5745638B2 (ja) 分岐命令の中に符号化されたバイモーダル分岐予測子
US20120284488A1 (en) Methods and Apparatus for Constant Extension in a Processor
JP2009524167A5 (zh)
US7065636B2 (en) Hardware loops and pipeline system using advanced generation of loop parameters
US9489204B2 (en) Method and apparatus for precalculating a direct branch partial target address during a misprediction correction process
JP2006031697A (ja) 分岐ターゲットバッファと使用方法
US20120079237A1 (en) Saving Values Corresponding to Parameters Passed Between Microcode Callers and Microcode Subroutines from Microcode Alias Locations to a Destination Storage Location

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant