专利名称:选择性地提交已执行指令的结果的系统和方法
技术领域:
本发明大体涉及一种选择性地提交已执行指令的结果的系统和方法。
背景技术:
许多算法基于某一条件选择性地执行运算。在软件代码中,可通过使用比较指令, 接着使用基于比较运算的结果任选地跳过代码的部分的分支指令,来实现此选择性执行。 一些架构可允许运算自身有条件地执行,借此消除分支运算。然而,仍然存在对特定条件的 结果的相依性。通常,在极长指令字(VLIW)处理器架构中,可执行比较运算,且来自比较指令的 结果可在某一正数目的处理器循环之后利用。在计算机程序中,比较运算之后常为分支运 算,在所述情况下,比较运算的结果用以确定是否执行分支运算。通常,使用编译器来组织 指令以减少归因于此些相依性的管线暂停。在非VLIW处理器架构中,通常利用分支预测技术推测性地消除分支的相依性。然 而,此分支预测增加了复杂性且增加了处理器核心的功率消耗。由于VLIW处理器架构具有 按软件分组的许多正在进行中的指令,因此分支预测通常在VLIW处理器架构中受到限制 或不存在。然而,比较与分支运算之间的相依性仍然存在。因此,存在对于减少归因于指令 相依性的管线暂停的改进的处理器架构的需要。
发明内容
在特定实施例中,揭示一种方法,其包括在具有包括第一执行管线和第二执行管 线的多个并行执行管线的处理器处接收指令包,所述指令包包括第一指令和依赖于所述第 一指令的第二指令。所述方法进一步包括并行地执行所述第一指令的至少一部分和所述第 二指令的至少一部分。所述方法还包括基于与借助所述第一执行管线执行所述第一指令有 关的第一结果选择性地提交借助所述第二执行管线执行所述第二指令的至少一部分的第 ■~ 结果。在另一特定实施例中,揭示一种方法,其包括在具有多个并行执行管线的处理器 处接收包括比较指令和第二指令的指令包。所述第二指令依赖于所述比较指令。所述方法 进一步包括解码所述比较指令和所述第二指令以确定与是否将提交所述第二指令有关的 预测;并行地执行第一指令和所述第二指令;以及部分基于所述第二指令和所述预测选择 性操控提取管线。在再一特定实施例中,一种处理器包括适于并行地执行指令的多个执行管线。所 述多个执行管线包括执行比较指令的第一执行管线和执行依赖于所述比较指令的第二指 令的第二执行管线。所述比较指令和所述第二指令被同时执行。所述处理器还包括逻辑电 路,其适于将根据所述比较指令的执行确定的第一结果从所述第一执行管线提供到所述第 二执行管线以供所述第二指令使用。由所述系统和所述方法的实施例提供的一个特定优势在于,编译器可将比较指令
5与使用比较指令的结果的分支指令一起分组到单一包中,以供处理器同时执行,而不引入 与相依性有关的等待时间。提供另一特定优势,其在于,比较指令可与依赖于比较运算的结果的例如算术和 存储器加载指令等其它指令分组在一起且与所述其它指令并行地执行。提供再一特定优 势,其在于,这些指令可在同一循环中且在执行单元需要提交其结果之前使用比较指令的 结果,借此防止不必要的写入操作。在审阅整个申请案之后,本发明的其它态样、优点和特征将变得显而易见,整个申 请案包括以下部分
具体实施方式
和权利要求书。
图1为包括有条件地提交并行执行的指令的逻辑的处理器的特定说明性实施例 的框图;图2为有条件地提交并行执行的指令的处理器的第二特定说明性实施例的框图;图3为包括多个执行阶段的执行循环的特定说明性实例的图,其说明基于来自第 一比较指令的执行的第一结果的第二结果的选择性地提交;图4为将指令编译到包括比较指令和依赖于比较指令的结果的第二指令的包内 的方法的特定说明性实施例的流程图;图5为有条件地提交并行执行的指令的方法的特定说明性实施例的流程图;图6为根据预测的条件性流改变来操控提取管线的方法的特定说明性实施例的 流程图;以及图7为包括有条件地提交并行执行的指令的逻辑的代表性便携式通信装置的框 图。
具体实施例方式图1为包括有条件地提交并行执行的指令的逻辑的处理器100的特定说明性实施 例的框图。处理器100包括经由总线接口 108耦合到指令高速缓冲存储器110的存储器 102。处理器100还包括经由总线接口 108耦合到存储器102的数据高速缓冲存储器112。 指令高速缓冲存储器110经由总线111耦合到定序器114。定序器114还接收可从中断寄 存器(未图示)检索的一般中断116。在特定实施例中,指令高速缓冲存储器110可经由多 个当前指令寄存器耦合到定序器114,所述多个当前指令寄存器可耦合到总线111且与处 理器100的特定线程相关联。在特定实施例中,处理器100为包括六个线程的交错的多线 程处理器。在特定实施例中,总线111为一百二十八位(128位)总线,且定序器114经配置 以经由包括各自具有三十二(32)个位的长度的多个指令的指令包从存储器102检索指令。 总线111耦合到第一指令执行单元118、第二指令执行单元120、第三指令执行单元122和 第四指令执行单元124。每一指令执行单元118、120、122、124可经由第一总线128耦合到 通用寄存器堆126。通用寄存器堆126还可经由第二总线130耦合到定序器114、数据高速 缓冲存储器112和存储器102。在特定说明性实施例中,数据高速缓冲存储器112可包括存 储器存储缓冲器132以基于尚未确定的条件为待存储的数据提供临时存储位置。
处理器100还可包括监督器控制寄存器134和全局控制寄存器136以存储可由定 序器内的控制逻辑存取以确定是否接受中断且控制指令执行的位。处理器100还包括谓词 逻辑电路138和谓词寄存器140,所述两者耦合到执行单元118、120、122和124。在特定实 施例中,谓词寄存器140可包括四个读取/写入8位寄存器,其保持标量和向量比较运算的 结果。比较结果可由执行单元118、120、122和124经由总线142写入到到谓词寄存器140。 谓词逻辑电路138适于从谓词寄存器140检索数据且将比较结果提供到需要比较结果的选 定执行单元。在特定实例中,谓词逻辑电路138可嵌入于每一执行单元118、120、122和124 中,且可基于与分支指令相关联的指示符的存在从谓词寄存器140检索数据。举例来说,分 支指令可包括识别待用于分支指令的条件数据为在同一指令包中包括的比较结果的位设 定或某一其它指示符。此指示符可触发谓词控制逻辑从谓词寄存器140检索比较结果。谓词逻辑电路138和谓词寄存器140由处理器100用以将来自第一执行管线的 执行的早期阶段的比较指令的结果提供到第二执行管线,用于与分支指令、逻辑运算指令 (即,逻辑“与(AND)”、逻辑“或(OR)”、逻辑“与非(NAND) ”、逻辑“或非(NOR)”、逻辑“异或 (exclusive-OR) ”或其它逻辑运算)、加载指令、存储指令、算术指令、另一条件性指令或其 任何组合一起使用。在特定实施例中,谓词逻辑电路138适于检索来自一个执行管线的结 果,用于由另一执行管线使用以允许分支在与产生比较结果(谓词)相同的执行循环内使 用谓词。在特定实例中,分支指令可由执行单元120使用来自由执行单元118执行的比较 指令的结果在计算比较结果后的大致零观测循环的情况下执行。虽然在常规VLIW架构中 的比较运算的结果可在若干循环后利用,但处理器100利用谓词逻辑电路138以允许分支 指令在从执行管线可用的时间中接收比较运算的结果。因此,比较结果可由同一指令包的 分支指令在所述指令正并行执行的同时使用,即,分支指令在与正确定比较的结果相同的 执行循环中接收比较结果。在特定实施例中,谓词逻辑电路138经说明为在执行单元118、120、122和124外 部的电路组件。在替代实施例中,谓词逻辑电路138可嵌入于执行单元118、120、122和124 中的每一者内。在另一替代实施例中,谓词逻辑电路138可包括于定序器114中。在特定说明性实施例中,指令的包是由定序器114经由总线111从指令高速缓冲 存储器134提取。定序器114将指令提供到指定的指令执行单元118、120、122和124。所 述指令执行单元118、120、122和124并行执行所述指令,且视指令之间的相依性而定,指令 执行单元118、120、122和124适于基于第一指令的结果有条件地提交来自第二指令的结^ ο举例来说,在特定实施例中,指令包可包括第一和第二指令,其中第二指令依赖于 第一指令的结果。处理器100适于接受与流改变指令(例如,跳跃指令、分支指令或其它流 改变指令)、加载指令、存储指令、算术指令、另一相依性运算或其任何组合一起分组的比较 指令。特定来说,处理器100适于在执行管线中的一点处将比较运算的结果提供到谓词寄 存器140,所述点足够早以使得可将结果用于同一执行循环中来确定是否采取一分支、是否 加载或存储特定数据,确定第一结果或第二结果是否正确,或其任何组合。在特定实例中,处理器100可利用存储器存储缓冲器132临时存储来自一个或一 个以上执行单元的结果,以提供结果的计算与将结果写入到存储器102的回写操作之间的 延迟。举例来说,当待将一条件和若干值提供到存储器102时,存储器存储缓冲器132提供
7延迟。在无存储器存储缓冲器132的情况下,可能过早地需要条件和值以致结果尚未准备 好。存储器存储缓冲器132提供获得条件的结果的足够延迟。谓词逻辑电路138可控制执 行单元118、120、122和124将结果写入到存储器存储缓冲器132,直到确定一条件,且接着 根据确定的条件将结果中的仅一者写入到存储器位置。举例来说,处理器100可允许并行地执行比较指令和依赖于来自比较指令的结果 的分支指令。举例来说,比较指令可由执行单元118处理,且分支指令可同时由执行单元 120执行。分支指令可包括指示应从同一包中的比较指令而非从来自另一包的先前执行的 指令的结果导出比较结果的位或其它记法。在执行管线内,谓词逻辑电路138可使比较指 令的结果被提供到执行单元120,使得可在提交分支的结果前将结果用于分支指令中。通过 使比较运算的结果在执行管线中早早地可用,在提交结果前,分支指令可使用所述结果确 定正确的结果。由于通常早早地在管线中确定了分支方向,因此分支指令通常不具有提取 正确的下一个指令包的时间以避免在采取一分支的情况下的管线暂停。然而,在特定实施 例中,谓词逻辑电路138还可适于使用早先的比较结果确定是否采取所述分支和/或预测 是否将提交执行管线的数据。谓词逻辑电路138可与定序器114通信(例如,经由未图示 的总线)以起始提取操作来根据预测检索指令。图2为有条件地提交并行执行的指令的处理器200的第二特定说明性实施例的框 图。处理器200包括指令高速缓冲存储器202,其经由总线203与定序器204通信。指令高 速缓冲存储器202可将指令包提供到定序器204。定序器204与第一执行管线210和第二 执行管线212通信以提供从指令包导出的指令。第一执行管线210和第二执行管线212执 行所述指令且有条件地将指令的结果提交到存储缓冲器216,且如果满足条件,则提交到存 储器218。在特定实施例中,存储器218(例如,数据高速缓冲存储器)可耦合到总线以将数 据传送到存储器位置,例如,在图1的存储器102处的位置。处理器200还包括控制逻辑电路206和谓词寄存器208。谓词寄存器208适于接 收由第一执行管线210和第二执行管线212执行的比较指令的结果。控制逻辑电路206适 于将来自谓词寄存器208的此些结果选择性地传送到第一执行管线210和第二执行管线 212中的一者,用于在并行执行的指令中使用。控制逻辑电路206还可经由总线207与定序 器204通信。在特定实施例中,定序器204可经由总线203从指令高速缓冲存储器202接收包 括第一指令和第二指令的指令包。第二指令可依赖于与第一指令的执行有关的结果。举例 来说,第二指令可为使用第一指令(例如,比较指令)的结果确定是否采取一特定分支的分 支指令。第一执行管线210可执行第一指令,且第二执行管线212可并行地执行第二指令。 第一执行单元210将第一指令(即,比较指令)的结果提供到谓词寄存器208。第二执行 管线212接收来自谓词寄存器208的结果,且在第二指令的执行期间使用所述结果确定是 否提交第二指令的结果。在特定实施例中,控制逻辑电路206将结果提供到第二执行管线 212。在另一特定实施例中,第一执行管线210和第二执行管线212可包括控制逻辑电路 206。在特定实例中,定序器204可接收包括第一比较指令和第二分支指令的指令包。 第二分支指令可依赖于第一比较指令的结果。在特定实例中,第二分支指令可使用嵌入于 指令内的记法(例如,位旗标或其它指示符)来指示对第一比较指令的相依性。在第一比
8较指令和第二分支指令的执行期间,第一执行管线210将比较结果写入到谓词寄存器208。 在同一执行循环中,控制逻辑电路206与第二执行管线212共享所述结果,第二执行管线 212在分支指令的执行中使用所述结果。同时,控制逻辑电路206可经由总线207将一信 号提供到定序器204以起始提取操作,以从存储器检索与流改变有关的指令。早先的指示 (即,执行单元有可能基于分支指令改变程序流的预测)可由定序器用以提取相关的指令 以减少管线等待时间。在另一特定实例中,当第一指令为比较指令且第二指令为存储指令时,第一执行 管线210可将比较结果写入到谓词寄存器208,且控制逻辑电路206可在第二执行管线提交 结果前将所述结果提供到第二执行管线212。在此例中,可在起始回写前取消与第二执行管 线相关联的回写操作。或者,可临时地将数据提交到存储缓冲器216以在提交回写操作前 提供额外的延迟,借此允许利用第一执行管线的比较结果来防止不必要的回写操作,在所 述情况下,不需要或可抛弃来自第二执行管线的数据。在另一特定实例中,可将比较指令与依赖于比较指令的结果的算术或存储器加载 指令一起分组在一包中。第一执行管线210可执行比较指令且在执行循环中相对早地将结 果提供到谓词寄存器,且可在管线中的提交结果的阶段之前取消条件性指令的结果。一般而言,执行比较指令,且执行单元210和212基于比较结果在谓词寄存器208 中设定谓词位。这些谓词位可接着用以有条件地执行某些指令。分支指令、加载指令、存储 指令、算术指令和多路复用指令是这些可有条件地执行的指令的实例。某些标量运算可以 谓词寄存器208内的特定位(例如,最低有效位)为条件。相比之下,视特定代码而定,向 量运算可利用来自谓词寄存器208的较多位。一般而言,处理器200可用以并行地执行数据相依性指令。举例来说,此些数据相 依性指令可包括使用来自加载指令或比较指令的数据的算术和其它数学或逻辑指令。在特 定实例中,加载指令可基于比较的结果从存储器位置提取数据。在特定实施例中,可使用特 定汇编语言记法(例如,dot-new(即,“.new”)记法、dot_d印endent (即,“· d印”)记法、 其它记法或其任何组合)来识别此些条件性或数据相依性指令。在特定实例中,汇编语言 编译器可适于辨认此记法且按顺序次序排列包括此记法的指令包。说明用以基于比较指令 (使用“.new”汇编语言记法)的结果有条件地加载字的条件性加载操作的汇编语法的实例 出现如下if (P0. new) RO = ME丽(R2) // 如果 PO 为真,则加载字在另一特定实例中,比较指令可用以确定选择哪一操作数,且选定操作数可用于 算术运算中。说明此条件性算术运算的汇编语法的实例出现如下if(P0. new) RO = SUB (R2,R3)//如果 PO 为真,则减if( ! P2. new) R2 = ADD (R2, #4) // 如果 P2 为假,则力口在另一特定实例中,可计算多个结果,且比较结果可用以确定应将哪一结果写入 到存储器。或者,比较结果可用以确定是否应存储所述结果。说明条件性存储指令的汇编 语法的实例出现如下if ( ! P2. new)MEMW(R4) = RO// 如果 P2 为假,则存储字通常,可执行任何数目个条件性指令,包括条件性转移、移动或组合指令。说明组 合和转移指令的汇编语法的实例出现如下
9
if (P0. new) Rl 0 = COMBINE (R3, R5)// 如果 PO 为真,则组合if( ! P2. new) R2 = R5// 如果 P2 为假,则转移一般而言,可辨认位旗标、指示符或特定记法(例如,dot-neW( “· new")记法), 且可在包中分组此代码以利用早先的比较结果来增强处理器性能。特定来说,处理器可并 行地执行包括此些数据相依性指令的指令包,使得计算一条件且在同一指令包的执行期间 使用所计算的条件的结果。举例来说,来自一比较指令的执行的结果可在另一指令中用以 确定是否提交所述结果(即,将结果写入到存储器)。如果条件指示不应提交结果,则可取 消回写操作。可使用dot-new记法的方式的实例呈现于下表1和表2中。表1呈现C代码的实 例区段,且表2呈现使用dot-new记法的实例C代码的汇编实施。表1 C代码。C 代码if (R2 == 4) {R3 = *R4 ;else{R5 = 5 ;}}用于支持dot-new类型的记法的处理器的汇编级代码的代表性实例呈现于下表2 中。表2汇编器代码-Dot-New记法。汇编器代码{PO = cmp. eq(R2,#4)if (P0. new) R3 = MEMW(R4) // 使用新产生的 POif( ! P0.new)R5 = #5}在此实例中,比较指令和新产生的谓词的多个使用经分组于同一包中。如上关于 图1和图2所论述,执行单元可在同一执行循环中执行比较和相依性指令。一般而言,包中 的指令无法写入到同一目的寄存器。汇编器或编译器可将此些包用旗标表示为无效。然而, 允许条件性指令目标针对同一目的寄存器,其限制条件为提交结果中的不超过一者。图3为与执行管线300相关联的多个执行阶段的特定说明性实例的图。执行管线 300适于执行第一比较指令和依赖于第一指令的结果的第二指令。执行管线300包括解码 阶段302、寄存器读取阶段304、第一执行阶段306、第二执行阶段308、第三执行阶段310和 回写阶段312。在此实例中,省略了一个或一个以上提取阶段,且将执行管线300说明为如 同其开始于解码阶段302。在特定实例中,阶段302、304、306、308、310和312中的每一者可 表示时钟循环。在此实例中,在第二执行阶段期间确定比较结果(在314处),且所述结果在310 处的第三执行阶段中用以基于所述比较结果确定是提交还是取消所述结果(在316处)。视正处理何类型的相依性指令而定,在314处的比较结果在执行管线300中足够早地提 供以允许控制逻辑操控提取管线以减少暂停。在314处的比较结果由相依性指令使用 “dot-new”记法或指示来选择。另外,在解码阶段302,可进行关于是否将采取跳跃或分支 的预测。在特定实施例中,可使用静态预测来进行预测。当有可能采取分支或跳跃时,预测 可用以操控提取管线以进一步减少暂停。特定来说,由于比较的结果直到第二执行阶段308 才可用,因此可能太晚了以致不能在无管线暂停的情况下提取下一个指令。然而,通过添加 预测(即,“采取跳跃/分支”、“不采取跳跃/分支”、其它预测或其任何组合),控制逻辑可 提取随后指令以防止在流改变发生的情况下的管线暂停。当静态预测错误时,可冲洗提取 管线,且可提取下一个指令包用于处理。在特定实例中,多线程处理器的每一线程可解码整个包的若干部分以预测和/或 确定其它执行单元是否将具有其可能需要的结果。在另一特定实例中,可取消回写操作,借 此防止对通用寄存器堆的写入操作。在特定实例中,为了计时目的,可能有必要在比较的结果准备好(在314处)之前 在第二执行阶段中提交到回写操作。在此例中,可将结果存储于临时缓冲器中,例如,图1 中说明的存储器存储缓冲器132。存储器存储缓冲器可在某一稍后时间点提交到存储器内。 在此实例中,可延迟提交以存储数据且使用经缓冲的写入以防止应被取消的回写操作。图4为将指令编译到包括比较指令和依赖于比较指令的结果的第二指令的包内 的方法的特定说明性实施例的流程图。所述方法包括经由一个或一个以上编译阶段将多个 极长指令字(VLIW)指令编译至机器可读指令中(在402处)。继续进行至404,所述方法进 一步包括使机器可读指令形成(即,分组)到包括指令的多个包中,所述指令可由多线程处 理器并行地执行。所述多个包中的至少一个包包括能够同时执行的第一指令和第二指令。 所述第二指令依赖于所述第一指令。第一和第二指令被同时执行。在特定实例中,第一指 令的结果用以在同一处理循环中处理第二指令。方法终止于406。在特定实施例中,所述多个包中的一包包括目标针对同一目的寄存器的至少两个 条件性指令。虽然常规编译器可能返回误差,但可允许所述至少两个条件性指令目标针对 同一目的寄存器,其限制条件为可提交仅一个条件性指令。图5为有条件地提交并行执行的指令的方法的特定说明性实施例的流程图。所述 方法包括在具有多个并行执行管线的处理器处接收包括第一指令和第二指令的包,其中第 二指令依赖于第一指令的结果(在502处)。所述多个并行执行管线可包括第一执行管线 和第二执行管线。所述第一指令可为比较指令,且所述第二指令可为基于比较指令的结果 的条件性指令。前进至504,所述方法包括并行地执行所述第一指令的至少一部分和所述第 二指令的至少一部分。在特定实例中,每一执行管线可解码所述第一和所述第二指令的一 部分,且第一执行管线可执行第一指令,且第二执行管线可同时执行第二指令。举例来说, 第二执行管线可解码第一指令的一部分以检索位值或确定与第一指令的一部分相关联的 值。继续至506,执行管线确定是否提交结果。如果执行第一指令的第一结果指示应提 交执行第二指令的第二结果(即,写入到通用寄存器堆、到主存储器、到高速缓冲存储器、 到另一存储器或其任何组合),则方法前进到508,且提交执行第二指令的第二结果。或者, 如果第一结果指示不应提交第二结果,则方法前进到510,且取消第二结果的提交。在此例中,方法包括基于与第一指令的执行有关的第一结果选择性地提交执行第二指令的第二结 果。方法终止于512。在特定实施例中,方法包括在执行前从包并行地提取(读取)第一和第二指令。 第一指令的第一结果可包括谓词结果。第一指令可为比较指令或产生谓词的另一类型的指 令。谓词可提供是否将采取分支或流改变的早先指示。在特定实例中,存储指令可基于比 较指令而为条件性的。在此例中,可基于比较的结果取消在执行管线的回写阶段的回写操 作。在另一特定实施例中,指令包可包括使用来自同时执行的指令的谓词数据的第三 指令。在特定实例中,基于所述数据将第一向量与第二向量合并以产生合并的数据,且根据 来自谓词寄存器的数据基于合并的数据输出第三向量。在另一实例中,第一指令为比较指令,且第二指令为跳跃指令。在此实例中,所述 方法包括解码第一和第二指令的一部分以预测是否将提交第二结果且根据预测提取随后 包。在特定实施例中,第二指令可包括指示比较指令的第一结果应由第二指令使用的 位或指示符。使第一结果可用于第二指令,使得在提交第二结果前第二指令可确定正确结 果。在另一特定实例中,所述方法可包括当不提交第二结果时,取消由第二指令的执行触发 的异常。在另一特定实例中,所述方法可包括并行执行指令且基于谓词寄存器中的位确定 第一指令和第二指令中的一者是否具有有效谓词。所述方法还可包括根据有效谓词提交第 一结果和第二结果中的一者,但非两者。在另一特定实例中,所述方法可包括并行地将第一结果写入到第一地址且将第二 结果写入到第二目的地地址。另外,所述方法可包括当第一结果指示应抛弃第二结果时抛 弃所述第二结果。提交结果可涉及执行以下操作中的一者回写操作、存储操作、加载操作、 算术运算和流改变操作(例如,跳跃或分支操作)。图6为根据预测的条件性流改变来操控提取管线的方法的特定说明性实施例的 流程图。在602处,所述方法包括在具有多个并行执行管线的处理器处接收包括比较指令 和第二指令的包。所述第二指令依赖于所述比较指令。前进至604,所述方法进一步包括解 码比较指令和第二指令以确定与是否将提交第二指令有关的预测。在特定实例中,预测可 为由定序器内或在执行单元处的预测逻辑进行的静态或动态预测。继续进行至606,所述方 法包括并行地执行第一指令和第二指令。前进至608,所述方法包括部分基于第二指令且基于预测沿着“经采取”路径操控 提取管线。举例来说,提取管线可加载有与经采取路径有关的指令。继续至610,如果“经采 取”路径正确,则方法前进至612,且基于第一结果选择性地提交第二指令的第二结果。否 则,在610处,如果选定路径不正确,则方法前进至614,且冲洗提取管线。继续进行至616, 所述方法包括沿着“未经采取”路径(即,在604处未预测的路径)选择性操控提取管线。在特定实例中,分支可为推测性分支。如果预测逻辑预测将采取推测性分支,则可 根据预测加载提取管线。如果预测不正确,则管线可被冲洗且操控至不同路径。在特定实例中,选择性操控提取管线包括当第二指令为流改变指令且当预测指示 流改变指令有可能被提交时,基于预测的流改变起始从存储器检索指令。在另一实例中,选
12择性操控提取管线包括当预测指示流改变时基于预测起始从存储器检索与流改变有关的 指令。或者,当预测不指示流改变时,不起始检索。在特定实例中,在确定预测为不正确之 后,从提取管线删除所检索的指令。在另一实例中,第二指令包括指示第二指令使用比较指令的第一结果的指令记 法。第一结果可用于第二指令,使得在提交第二结果之前第二指令可确定正确结果。在特 定实施例中,当不提交第二结果时,取消由第二指令的执行触发的异常。在另一实例中,所 述方法还包括确定第一指令和第二指令中的一者是否具有有效谓词,且根据所述有效谓词 提交第一结果和第二结果中的一者,但非两者。图7为经说明为便携式通信装置700的适于同时处理相依性指令的系统的实施例 的框图。所述便携式通信装置700包括数字信号处理器(DSP) 710,其具有谓词寄存器760、 谓词逻辑电路762和数据存储缓冲器764。在特定实施例中,DSP 710可为多线程处理器, 例如,图1和图2中所说明的处理器100和200。DSP 710可适于利用谓词寄存器760和谓 词逻辑电路762有条件地提交相互依赖的并行执行的指令,例如,比较指令和使用比较的 结果的分支指令。便携式通信装置700包括芯片上系统722,其包括处理器,例如,数字信 号处理器710。DSP 710包括谓词寄存器760和谓词逻辑电路762,如关于图1至图3和图 5至图6所描述。在特定说明性实施例中,谓词寄存器760和谓词逻辑762可用以通过允 许第一执行管线在同一执行循环中与正在处理使用比较结果的相依性指令的第二执行管 线共享比较结果来增强处理效率。另外,谓词寄存器760、谓词逻辑762和数据存储缓冲器 764可用以有条件地将结果提交到存储器,且当不满足条件时取消或去掉回写操作。图7还展示耦合到数字信号处理器710和显示器728的显示控制器726。此外,输 入装置730耦合到数字信号处理器710。另外,存储器732耦合到数字信号处理器710。编 码器/解码器(CODEC) 734还可耦合到数字信号处理器710。扬声器736和麦克风738可耦 合到 CODEC 734。图7还指示无线控制器740可耦合到数字信号处理器710和无线天线742。在特 定实施例中,电源744耦合到芯片上系统722。此外,如在图7中所说明,显示器728、输入 装置730、扬声器736、麦克风738、无线天线742和电源744可在芯片上系统722外部。然 而,每一者均耦合到芯片上系统722的组件。在特定说明性实施例中,谓词逻辑电路762和谓词寄存器760可用以消除或减少 不合需要的回写操作,借此增强便携式通信装置700的整体性能。另外,谓词逻辑电路762 和谓词寄存器760可用以有条件地执行各种功能,其允许并行地执行相依性指令且抛弃不 合需要的结果而无开销代价(就管线暂停而言),从而增强了装置700的性能。应理解,虽然谓词逻辑电路762和谓词寄存器760经描绘为DSP 710的分开的组 件,但谓词控制电路762和谓词寄存器760可替代地经集成到控制电路内,例如,图1中说 明的定序器114。类似地,应理解,谓词逻辑电路762和数据存储缓冲器764可经集成到多 线程处理器的执行单元中。所属领域的技术人员将进一步了解,结合本文所揭示的实施例所描述的各种说明 性逻辑块、配置、模块、电路和算法步骤可实施为电子硬件、计算机软件或两者的组合。为了 清晰地说明硬件与软件的此可互换性,各种说明性组件、块、配置、模块、电路和步骤已在上 文大体按其功能性加以描述。将此功能性实施为硬件还是软件视特定应用和强加于整个系统上的设计约束而定。所属领域的技术人员可以变化的方式针对每一特定应用实施所描述 的功能性,但是此些实施决策不应被解释为导致脱离本发明的范围。结合本文中所揭示的实施例所描述的方法或算法的步骤可直接体现于硬件中、由 处理器执行的软件模块中或两者的组合中。软件模块可驻留于RAM存储器、快闪存储器、 ROM存储器、PROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可装卸式盘、CD-ROM 或此项技术中已知的任一其它形式的存储媒体中。将示范性存储媒体耦合到处理器,使得 处理器可从存储媒体读取信息和将信息写入到存储媒体。在替代例中,存储媒体可与处理 器成一体。处理器和存储媒体可驻留于ASIC中。ASIC可驻留于计算装置或用户终端中。 在替代例中,处理器和存储媒体可作为离散组件驻留于计算装置或用户终端中。提供所揭示的实施例的先前描述,以使任何所属领域的技术人员能够制作或使用 所揭示的实施例。对于所属领域的技术人员而言,对这些实施例的各种修改将容易显而易 见,且在不脱离本发明的精神或范围的情况下,本文中界定的一般性原理可适用于其它实 施例。因此,本发明并不希望限于本文中所展示的实施例,而应符合可能与如由所附权利要 求书界定的原理和新颖特征一致的最广范围。
权利要求
一种方法,其包含在具有包括第一执行管线和第二执行管线的多个并行执行管线的处理器处接收指令包,所述指令包包括第一指令和依赖于所述第一指令的第二指令;并行地执行所述第一指令的至少一部分和所述第二指令的至少一部分;以及基于与借助所述第一执行管线执行所述第一指令有关的第一结果而选择性地提交借助所述第二执行管线执行所述第二指令的所述至少一部分的第二结果。
2.根据权利要求1所述的方法,其中所述第二指令包括指示所述第一结果待由所述第 二指令使用的指令记法。
3.根据权利要求1所述的方法,其进一步包含将与所述第一结果有关的数据写入到谓 词寄存器。
4.根据权利要求3所述的方法,其中所述第二指令从所述谓词寄存器接收与所述第一 结果有关的所述数据。
5.根据权利要求1所述的方法,其中选择性地提交所述第二结果包含 将所述第二结果写入到存储器存储缓冲器;以及当所述第一结果可用时,选择性地取消对寄存器的回写操作。
6.根据权利要求1所述的方法,其中所述第二指令包含条件性流改变指令,所述方法进一步包含在所述第一执行管线和所述第二执行管线中的一者的解码阶段处解码所述第一指令 和所述第二指令的一部分;以及基于所述经解码的部分执行指示是否将有可能提交所述条件性流改变指令的静态预测。
7.根据权利要求6所述的方法,其进一步包含当所述静态预测指示将有可能提交所述 条件性流改变指令时,操控指令提取管线以检索与流改变有关的指令。
8.根据权利要求1所述的方法,其进一步包含在确定是否提交所述第二结果之后,有 条件地将所述第二结果回写到目的寄存器。
9.根据权利要求1所述的方法,其中所述第一指令包含比较指令且所述第二指令包含 流改变指令,所述方法进一步包含基于所述第一结果而在谓词寄存器中设定谓词位;以及在执行所述流改变指令之后,基于所述谓词位的值而选择性地提交以执行由所述流改 变指令指示的流改变动作。
10.一种方法,其包含在具有多个并行执行管线的处理器处接收包括比较指令和第二指令的包,所述第二指 令依赖于所述比较指令;解码所述比较指令和所述第二指令以确定与是否将提交所述第二指令有关的预测;并行地执行第一指令和所述第二指令;以及部分基于所述第二指令且基于所述预测而选择性地操控提取管线。
11.根据权利要求10所述的方法,其中选择性地操控所述提取管线包含当所述第二指 令为流改变指令且当所述预测指示所述流改变指令有可能被提交时基于预测的流改变而 起始从存储器中检索指令。
12.根据权利要求10所述的方法,其中选择性地操控所述提取管线包含当所述预测指 示流改变时基于所述预测而起始从存储器中检索与流改变有关的指令,但当所述预测不指 示所述流改变时不起始检索。
13.根据权利要求11所述的方法,其进一步包含在确定所述预测不正确之后从所述提 取管线中删除所述检索的指令。
14.根据权利要求10所述的方法,其进一步包含至少基于与同第一执行管线相关联的 所述第一指令有关的第一结果而选择性地提交借助第二执行管线执行的所述第二指令的 第二结果。
15.根据权利要求14所述的方法,其中所述第二指令包括指示所述第二指令使用所述 比较指令的所述第一结果的指令记法,且其中在提交所述第二结果之前所述第一结果可用 于所述第二指令。
16.根据权利要求15所述的方法,其进一步包含当不提交所述第二结果时,取消由所 述第二指令的执行触发的异常。
17.根据权利要求10所述的方法,其进一步包含确定所述第一指令和所述第二指令中的一者是否具有有效谓词;以及基于具有所述有效谓词的所述指令,提交所述第一指令的第一结果和所述第二指令的 第二结果中的一者,但非两者。
18.一种处理器,其包含多个执行管线,其适于并行地执行指令,所述多个执行管线包括用以执行第一指令以 确定第一结果的第一执行管线和用以执行依赖于根据所述第一指令确定的所述第一结果 的第二指令的第二执行管线,所述第一指令和所述第二指令被同时地执行;以及逻辑电路,其适于将根据所述第一指令的执行确定的所述第一结果从所述第一执行管 线提供到所述第二执行管线以供所述第二指令使用。
19.根据权利要求18所述的处理器,其中在提交与所述第二执行管线相关联的第二结 果之前,所述逻辑电路将所述第一结果提供到所述第二执行管线。
20.根据权利要求18所述的处理器,其进一步包含谓词寄存器,所述谓词寄存器对所 述多个执行管线来说可存取且适于存储与所述第一结果有关的数据。
21.根据权利要求18所述的处理器,其进一步包含用以接收包括所述第一指令和所述 第二指令的指令包的定序器,所述定序器用以将所述第一指令提供到所述第一执行管线且 将所述第二指令提供到所述第二执行管线。
22.根据权利要求21所述的处理器,其中所述第一指令包含比较指令,且其中所述第 二指令依赖于所述比较指令的执行结果,且其中所述第二指令包含算术指令、逻辑运算指 令、加载指令、存储指令、分支指令和跳跃指令中的至少一者。
23.根据权利要求18所述的处理器,其进一步包含存储器缓冲器,所述存储器缓冲器 耦合到所述多个执行管线以在提交来自所述第二指令的执行的第二结果之前提供足够获 得来自所述第一指令的执行的所述第一结果的延迟。
24.—种处理器,其包含用于在具有包括第一执行管线和第二执行管线的多个并行执行管线的处理器处接收 指令包的装置,所述指令包包括第一指令和依赖于所述第一指令的第二指令;用于并行地执行所述第一指令的至少一部分和所述第二指令的至少一部分的装置;以及 用于基于与借助所述第一执行管线执行所述第一指令有关的第一结果而选择性地提 交借助所述第二执行管线执行所述第二指令的所述至少一部分的第二结果的装置。
25.根据权利要求24所述的处理器,其进一步包含 用于将所述第二结果写入到存储器存储缓冲器的装置;以及 用于当所述第一结果可用时选择性地取消对寄存器的回写操作的装置。
全文摘要
在特定实施例中,揭示一种方法,其包括在具有包括第一执行管线和第二执行管线的多个并行执行管线的处理器处接收指令包,所述指令包包括第一指令和依赖于所述第一指令的第二指令。所述方法进一步包括并行地执行所述第一指令的至少一部分和所述第二指令的至少一部分。所述方法还包括基于与借助所述第一执行管线执行所述第一指令有关的第一结果而选择性地提交借助所述第二执行管线执行所述第二指令的所述至少一部分的第二结果。
文档编号G06F9/38GK101965554SQ200980108280
公开日2011年2月2日 申请日期2009年2月27日 优先权日2008年3月11日
发明者卢奇安·科德雷斯库, 埃里克·J·普隆德克, 曾贸, 查尔斯·J·泰伯尼, 罗伯特·A·莱斯特, 苏雷什·K·文库马汉提, 阿贾伊·A·英格尔 申请人:高通股份有限公司