CN101535947A - 两次发布的条件移动指令及其应用 - Google Patents
两次发布的条件移动指令及其应用 Download PDFInfo
- Publication number
- CN101535947A CN101535947A CNA2007800417766A CN200780041776A CN101535947A CN 101535947 A CN101535947 A CN 101535947A CN A2007800417766 A CNA2007800417766 A CN A2007800417766A CN 200780041776 A CN200780041776 A CN 200780041776A CN 101535947 A CN101535947 A CN 101535947A
- Authority
- CN
- China
- Prior art keywords
- operand
- decoded instruction
- processor
- instruction
- predetermined value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
公开了一种通过形成并处理两个解码的指令在处理器中实现的条件移动指令及其应用。在一个实施例中,条件移动指令指定第一源操作数、第二源操作数以及既是源又是目的地的第三操作数。如果第二操作数的值与指定值不相等,则第一解码的指令将第三操作数移动到完成缓冲寄存器。如果第二操作数的值与指定值相等,则第二解码的指令将第一操作数的值移动到所述完成缓存器。在执行了该移动的解码的指令完毕时,完成缓冲寄存器的内容被传送到由第三操作数指定的寄存器堆寄存器。
Description
技术领域
[0001]本发明一般涉及处理器。
背景技术
[0002]精简指令集计算机(RISC)处理器是众所周知的。RISC处理器具有便于使用被称为流水线的技术的指令。流水线使处理器能够在指令的不同步骤上同时工作,从而利用存在于执行指令所需的步骤之间的并行性。结果,处理器可以在较短时期内执行更多的指令。另外,现代复杂指令集计算机(CISC)处理器经常在执行之前将其指令转换为微操作(即,与RISC处理器中的指令类似的指令)以便于流水线处理。
[0003]用于RISC处理器的指令集结构(ISA)限制了可以通过单指令操作的操作数(operand)的数目。增加可以通过单指令操作的操作数的数目的一种方法是将另外的端口增加到处理器的寄存器堆。然而,这样的方法在面积和时序两方面都是昂贵的。替代的方法是在实现指令的同时使流水线停滞(stall)。该方法在时序方面也是昂贵的。
[0004]需要克服上面提到的局限性的实现指令的技术和装置。
发明内容
本发明提供实现条件移动指令(conditional move instruction)的装置、系统和方法,及其应用。在一个实施例中,由指定第一源操作数、第二源操作数以及既是源又是目的地的第三操作数的条件移动指令形成第一解码的指令和第二解码的指令。如果第二操作数的值与指定值不相等,则第一解码的指令将第三操作数移动到完成缓冲寄存器。如果第二操作数的值与指定值相等,则第二解码的指令将第一操作数的值移动到所述完成缓存器。在执行了该移动的解码的指令完毕(graduate)时,完成缓冲寄存器的内容被传送到由第三操作数指定的寄存器堆寄存器。
[0005]以下参考附图详细描述本发明的其它特征和优点以及本发明的各种实施例的结构和操作。注意,本发明不局限于此处描述的具体实施例。此处描述这些实施例仅用于说明性目的。基于包含于本文中的教导,对本领域技术人员来说另外的实施例将是显而易见的。
附图说明
[0006]被合并于此并且成为说明书一部分的附图示出了本发明,附图还和说明书一起用来解释本发明的原理以及使本领域技术人员能够制造和使用本发明。
[0007]图1A是示出根据本发明实施例的处理器的示意图。
[0008]图1B是进一步示出图1A的处理器的示意图。
[0009]图2是示出根据本发明实施例实现条件移动指令的示例方式的示意图。
[0010]图3是示出根据本发明实施例的示例系统的示意图。
[0011]在结合附图阅读下面阐述的具体说明时,本发明的特征和优点将变得更加显而易见。在附图中,同样的附图标记一般指示相同的、功能类似的、和/或结构类似的元件。元件首次出现的附图由相应的附图标记中最左边的数字指示。
具体实施方式
[0012]本发明提供用于执行条件移动指令的装置、系统和方法,及其应用。在说明书中,对“一个实施例”、“实施例”、“示范实施例”等等的引述表示:所描述的实施例可以包括特定的特征、结构、或特性,但是可以不是每个实施例都必然包括该特定的特征、结构或特性。而且,这些短语不必指相同的实施例。此外,在结合实施例描述具体的特征、结构或特性时,认为结合其它实施例(不管是否被明确地描述)实现这样的特征、结构或特性是在本领域技术人员的认识范围之内的。
[0013]图1A是示出根据本发明实施例的处理器100的示意图。处理器100能够实现条件移动指令。优选地,处理器100实现加载-存储精简指令集计算机(RISC)结构。下面描述在图1A中示出的处理器100的各种部件和特征。
[0014]尽管本文中将处理器100描述为包括几个分立部件,但是这些部件中许多是并非在本发明的每个实施例中都存在的可选部件,或者是可以组合的部件,例如使得两个部件的功能存在于单个部件中。因此,例如在图1A中示出的独立部件是说明性的而不是为了限制本发明。
[0015]如图1A所示,处理器100包括一个或多个执行单元102。在一个实施例中,执行单元102包括整数(integer)执行单元(IEU)118和加载/存储单元(LSU)108。IEU 118处理算术运算,例如逻辑运算、移位运算、加法运算和/或减法运算。LSU 108处理加载/存储操作。在其它实施例中,执行单元102还包括例如乘法/除法单元(MDU)120,以便执行乘法和除法运算。
[0016]在一个实施例中,执行单元102与存储在寄存器堆(RF)130的寄存器中的数据和/或存储在一个或多个完成缓存器(CB)128的寄存器中的数据交互。多路复用器(multiplexer)124用于选择来自RF 130或CB 128的数据。在一个实施例中,第一完成缓存器128包括用于存储来自整数执行单元118和乘法/除法单元120的数据的若干64位寄存器。第二完成缓存器128包括用于存储来自加载/存储单元108的数据的若干32位寄存器。可选地,可以包括一个或多个另外的寄存器堆集以在例如中断和/或异常处理期间使内容切换开销(overhead)最小化。
[0017]执行单元102与指令分派(dispatch)单元(EDU)106、存储器管理单元(MMU)110和数据高速缓存114接口连接。
[0018]指令取出单元(IFU)104负责提供指令到指令分派单元106。在一个实施例中,指令取出单元104包括用于指令高速缓存112的控制逻辑、用于重编码压缩格式的指令的可选的重编码器(recoder)、用于将指令取出单元104的操作与执行单元102去耦合的指令缓存器、以及到便笺式存储器(scratch pad)的接口(未示出)。在一个实施例中,指令取出单元104执行动态分支预测。指令取出单元104与指令分派单元106、存储器管理单元110、指令高速缓存112和总线接口单元(BIU)116接口连接。
[0019]指令分派单元106负责对从指令取出单元104接收的指令解码,并且在它们的操作数和所需要的资源可用时将它们分派到执行单元102。在一个实施例中,指令分派单元106可以每个周期按次序从指令取出单元104接收多达两个指令。指令被分配指令标识值和完成缓存器标识值(CBID)。CBID标识:在通过将结果写入到寄存器堆130而将结果提交(commit)给处理器100的结构状态前,可用于暂时保存结果的完成缓存器128中的缓存器位置或条目(entry)。
[0020]指令分派单元106也执行操作数重命名以便于数据的转送。重命名的指令被写入到被解码指令缓存器113中(见图1B)。存储在被解码指令缓存器113中的、其所有操作数就绪并且满足所有资源要求的最老的指令被分派到适当的执行单元用于执行。可以将指令不按程序次序地(out-of-program-order)分派到执行单元102。分派的指令在执行管道中不停滞,并且它们将其结果写入到完成缓存器128。
[0021]在一个实施例中,指令分派单元106还通过例如在执行单元102之内的流水线级追踪指令的进程(progress),并且更新重命名映射(map)中的以及被解码指令缓存器中的所有相关指令(dependent instruction)中的操作数的可用性。指令分派单元106还将指令标识、CBID和有关的信息值写入到完毕单元126中的结构中。
[0022]存储器管理单元110将虚拟地址转译为物理地址以便存储器存取。在一个实施例中,存储器管理单元110包括转译后备(lookaside)缓存器(TLB),并且可以包括单独的指令TLB和单独的数据TLB。存储器管理单元110与指令取出单元104和加载/存储单元108接口连接。
[0023]指令高速缓存112是被组织为多路设置的关联高速缓存的片上存储器阵列,该多路设置的关联高速缓存诸如2路设置的关联高速缓存或4路设置的关联高速缓存。优选地,虚拟地索引指令高速缓存112并对其物理地加以标签,由此允许虚拟到物理的地址转译与高速缓存存取并行发生。在一个实施例中,除物理地址位之外,标签还包括有效位和可选的奇偶位。指令高速缓存112与指令取出单元104接口连接。
[0024]数据高速缓存114也是被组织为多路设置的关联高速缓存的片上存储器阵列,该多路设置的关联高速缓存诸如2路设置的关联高速缓存或4路设置的关联高速缓存。优选地,虚拟地索引数据高速缓存114并对其物理地加以标签,由此允许虚拟到物理地址的转译与高速缓存存取并行发生。数据高速缓存114与加载/存储单元108接口连接。
[0025]总线接口单元116控制用于处理器100的外部接口信号。在一个实施例中,总线接口单元116包括用于合并(merge)直写事务(write-through transactions)和集中来自未被高速缓存的存储的写入的崩溃(collapsing)写入缓存器。
[0026]加载/存储单元108负责处理加载/存储指令以读/写来自数据高速缓存和/或存储器的数据。加载/存储单元108能够处理不按程序次序发布的加载和存储。
[0027]整数执行单元118执行整数指令。它能够处理不按程序次序发布的指令。整数执行单元118包括用于执行诸如加法、减法、移位和逻辑运算的算术运算的算术逻辑单元。整数执行单元118与存储在完成缓存器128和寄存器堆130中的数据接口连接并且对该数据进行运算。
[0028]乘法/除法单元120包含用于整数乘法和除法运算的流水线。优选地,该流水线与整数执行单元118中的整数执行流水线并行工作,并且具有到完成缓存器128中的单独的写入端口。在一个实施例中,乘法/除法单元120预测(look ahead)并且通知指令分派单元106除法运算即将完成,从而使得在乘法/除法单元流水线中没有气泡(bubble)。
[0029]完毕单元126确保指令完毕并且按程序次序改变处理器100的结构状态。完毕单元126在指令完毕之前还释放指令所使用的缓存器和资源。
[0030]图1B还示出处理器100的操作。如图1B所示,处理器100执行四种基本功能:指令取出;指令解码和分派;指令执行;以及指令完毕。这四种基本功能是说明性的而不是为了限制本发明。
[0031]在PC选择器101在各种程序计数器值中间选择并且确定用于从指令高速缓存112取出指令的值时,指令取出(在图1A中由指令取出单元104表示)开始。在一个实施例中,选择的程序计数器值是新的程序线程(program thread)的程序计数器值、现有程序线程的下一顺序程序计数器值、或与分支指令或跳转指令相关的重定向程序计数器值。在每个指令被取出之后,PC选择器101选择新值以便取出下一指令。
[0032]在指令取出期间,检查与要从指令高速缓存112取出的指令相关的标签。在一个实施例中,标签包含为每个指令指示指令类型的预编码位。如果这些预编码位指示指令是控制转移指令,则分支历史表被访问并且被用于确定该控制转移指令可能分支还是可能不分支。
[0033]在一个实施例中,取出的任何压缩格式的指令由可选的指令重编码器103重编码为可以由处理器100解码并执行的格式。例如,在处理器100实现16位指令和32位指令的实施例中,任何16位压缩格式的指令由指令重编码器103重编码以形成具有32位的指令。在另一实施例中,指令重编码器103将16位指令和32位指令重编码为具有超过32位的格式。
[0034]在可选的重编码之后,指令被写入指令缓存器105。在一个实施例中,这一级可以被旁通掉(bypass)并且指令可以被直接分派到指令解码器107。
[0035]例如在一个或多个指令被从指令缓存器105接收并且由指令解码器107解码时,指令解码和分派(在图1A中由指令分派单元106表示)开始。在一个实施例中,按照分支错误预测的解决方案,从指令缓存器105接收指令的能力可以被暂时中止,直到驻留在处理器100的指令执行部分和/或指令完毕部分内的选择的指令被清除。
[0036]与指令解码并行地重命名操作数。位于指令标识(ID)发生器和操作数重命名器109之内的寄存器重命名映射被更新,并且用于确定所需要的源操作数例如在寄存器堆130和/或完成缓存器128中是否可用。寄存器重命名映射是一种用于保持在处理器100的程序员可见的结构寄存器和内部的物理寄存器之间的映射信息的结构。寄存器重命名映射指示数据是否可用以及数据在哪里可用。对于此处给出的说明,本领域技术人员将理解,寄存器重命名用于去除指令输出依赖性(dependencies)以及用于确保在任何给定时间在处理器100中存在给定寄存器的单个产生者。重命名源寄存器使得从产生者尽早获得数据而不是等待处理器的结构状态被更新。
[0037]还与指令解码并行地,指令标识(ID)发生器和操作数重命名器109生成指令标识标签并且将其分配到每个指令。使用分配给指令的指令标识标签以例如确定该指令相对于其它指令的程序次序。在一个实施例中,每个指令标识标签是唯一地确定指令的程序次序的线程专用的顺序生成的值。指令标识标签可用于帮助来以程序次序使被不按程序次序执行的指令完毕。
[0038]每个被解码指令由完成缓冲分配器111分配完成缓存器标识值或标签。完成缓存器标识值确定在完成缓存器128中指令执行单元102可以写入对指令的计算结果的位置。在一个实施例中,使用自由表(free list)实现完成缓存器标识值的分配。自由表包含与完成缓存器128中条目的数目相同数量的条目。可以使用例如位图实现该自由表。位图的第一位可用于指示完成缓存器条目是可用的(如该位具有一的值)还是不可用的(如该位具有零的值)。
[0039]分配的完成缓存器标识值被写入到完毕缓存器121中。在一个实施例中,与新被重命名的指令相关的完成缓存器完成位被重置/清除以指示未完成的结果。当指令完成执行时,设置它们的相应的完成缓存器完成位,由此使指令能够完毕并且释放其关联的完成缓存器标识值。在一个实施例中,控制逻辑(未示出)确保一个程序线程不占用超过其份额的完成缓存器条目。
[0040]被解码的指令被写入被解码指令缓存器113。指令分派器115选择驻留在被解码指令缓存器113中的指令,以便分派到执行单元102。在实施例中,指令可以被分派到执行单元102,以用于不按程序次序的执行。在一个实施例中,假定指令的操作数已被确定为就绪,则例如基于其“年龄(age)”(ID标签),选择并且分派指令。
[0041]由于指令被分派,指令执行单元102执行该指令。在执行期间,视情况而定从数据高速缓存114、寄存器堆130和/或完成缓存器128获得操作数数据。多路复用器124可以用于从寄存器堆130和/或完成缓存器128获得操作数数据。由指令执行单元102计算的用于特定指令的结果被写入由指令的关联的完成缓存器标识值指定的完成缓存器128的位置/条目。
[0042]由完毕控制器119控制指令完毕(在图1A中由指令完毕单元126表示)。完毕控制器119根据存储在完毕缓存器121中的完成缓存器标识值使指令完毕。在指令完毕时,将其关联的结果从完成缓存器128传送到寄存器堆130。结合指令完毕,完毕控制器119更新例如完成缓存器分配器111的自由表,以指示在完毕指令的分配的完成缓存器标识值的可用性状态方面的变化。
[0043]图2示出根据本发明的一个实施例处理器100怎样实现条件移动指令210。条件移动指令210实现公式1和下面的表1示出的伪码(pseudo code)。
RD==(RT==0)?RS:RD(Eq.1)
其中RD是源寄存器和目的地寄存器,
RT是源寄存器,并且
RS是源寄存器。
条件移动指令 |
***形成两个解码的指令******发布第一解码的指令***if(RT==0){使第一解码的指令无效}if(RT!=0){将RD的值写入完成缓存器}***发布第二解码的指令***if(RT!=0){使第二解码的指令无效}if(RT==0){将RS的值写入完成缓存器} |
表1
[0044]如图2所示,条件移动指令210由处理器100在指令取出期间取回(retrieved)。条件移动指令210包括操作码字段212、第一操作数字段214、第二操作数字段216、和第三操作数字段218。在图2所示的例子中,第一操作数字段214指定寄存器R1的内容作为第一源操作数。第二操作数字段216指定寄存器R2的内容作为第二源操作数。第三操作数字段218指定寄存器R3的内容作为第三源操作数,并且其指定寄存器R3作为用于条件移动指令210的结果的目的地寄存器。
[0045]条件移动指令210用于在指令解码和重命名期间形成两个解码的指令230和240。通过将操作码字段212的位解码形成控制位,来形成第一解码的指令230。使用重命名表245重命名条件移动指令210的RT源操作数(存储在寄存器R2中的值)。如重命名表245所示,所需要的值在完成缓冲寄存器4(CB4)中可用。条件移动指令210的RD源操作数(存储在寄存器R3中的值)在寄存器R3中可用,因此不要求操作数重命名。最终,分配(例如,由结果分配缓冲器111)完成缓冲寄存器10(CB10)作为目的地寄存器以暂时存储第一解码的指令的任何结果。
[0046]以类似于形成第一解码的指令的方式形成第二解码的指令240。如图2所示,通过将操作码字段212的位解码形成控制位,来形成第二解码的指令。使用重命名表245重命名条件移动指令210的RT源操作数(存储在寄存器R2中的值)。如重命名表245所示,所需要的值在完成缓冲寄存器4(CB4)中可用。条件移动指令210的RS源操作数(存储在寄存器R1中的值)在寄存器R1中可用,因此不要求操作数重命名。最终,分配完成缓冲寄存器10(CB10)作为目的地寄存器以暂时存储第二解码的指令的任何结果。这是与被分配作为暂时存储第一解码的指令的任何结果的目的地寄存器相同的完成缓冲寄存器。
[0047]指令解码和重命名之后,两个解码的指令230和240被发布到执行单元102。在一个实施例中,解码的指令230和240被发布到加载/存储单元。
[0048]在一个实施例中,在所有三个源操作数在处理器的寄存器堆或在完成缓冲寄存器中可用之前,既不发布第一解码的指令也不发布第二解码的指令。在一个实施例中,一旦这些操作数可用,则发布第一解码的指令230用于执行。
[0049]如图2所示,在一个实施例中,如果存储在CB4中的值等于预定值,例如零,则使第一解码的指令无效。如果存储在CB4中的值与预定值不相等,则存储在寄存器R3中的值被写入/移动到完成缓冲寄存器10。
[0050]在发布解码的指令230之后的某一时间,发布解码的指令240。不必在相继的周期中发布解码的指令230和240。如图2所示,在一个实施例中,如果存储在CB4中的值与预定值(例如零)不相等,则使第二解码的指令无效。如果存储在CB4中的值与预定值相等,则存储在寄存器R1中的值被写入/移动到完成缓冲寄存器10。
[0051]在指令完毕期间,如果第一解码的指令230是有效的指令,则在第一解码的指令230完毕时,将CB10的内容移动到寄存器R3。然而,如果第一解码的指令230是无效的指令而第二解码的指令240是有效的指令,则在第二解码的指令240完毕时,将CB10的内容移动到寄存器R3。
[0052]应当理解,描述图2仅用于说明性目的,而不是限制。例如,可以由条件移动指令210指定不同于寄存器R1、R2和R3的操作数,而不偏离本发明的精神和范围。此外,第一和第二解码的指令的指定仅仅是为了方便,而不是为了限制发布用于执行的解码的指令的次序。例如,在一些处理器结构中,可以在第一解码的指令之前发布第二解码的指令用于执行。
[0053]图3是示出根据本发明一个实施例的示例系统300的示意图。系统300包括处理器302、存储器304、输入/输出(I/O)控制器306、时钟308和自定义硬件310。在一个实施例中,系统300是在专用集成电路(ASIC)中的片上系统(SOC)。
[0054]处理器302是包括在此处描述的本发明的特征和/或实现本发明的方法实施例的任何处理器。在一个实施例中,类似于上述处理器100,处理器302包括指令取出单元、指令高速缓存、指令解码和分派单元、一个或多个指令执行单元、数据高速缓存、指令完毕单元、寄存器堆以及总线接口单元。
[0055]存储器304可以是能够存储指令和/或数据的任何存储器。存储器304可以包括例如随机存取存储器和/或只读存储器。
[0056]输入/输出(I/O)控制器306用于使系统300的部件能够接收信息和/或发送信息到外围设备。I/O控制器306可以包括例如模数转换器和/或数模转换器。
[0057]时钟308用于确定系统300的时序子系统何时改变状态。例如,每次时钟308的时钟信号滴嗒(tick)时,系统300的状态寄存器捕获由组合逻辑生成的信号。在一个实施例中,可以改变时钟308的时钟信号。例如在时钟信号被提供到系统300的选定部件前,还可以将时钟信号分频。
[0058]自定义硬件310是加入到系统300以使系统300适用于专门应用的任何硬件。自定义硬件310可以包括例如解码音频和/或视频信号、加速图形操作、和/或实现智能传感器所需要的硬件。本领域技术人员将理解怎样实现自定义硬件310以使系统300适用于特定应用。
[0059]虽然已经在上面描述了本发明的各种实施例,应当理解这些实施例是以示例的方式描述的,而不是限制本发明。可以在其中做出各种改变而不偏离本发明的范围,这对于相关计算机领域的技术人员是显而易见的。此外,应当理解,本文中提供的本发明的具体实施方式部分,而不是发明内容和摘要部分,意图是用于解释权利要求。如发明人所预期的,发明内容和摘要部分可以阐明本发明的一个或多个示范实施例,但不是所有示范实施例。
[0060]例如,除使用硬件(如,在中央处理单元("CPU")、微处理器、微控制器、数字信号处理器、处理器内核、片上系统("SOC")或任何其它可编程或电子器件内,或耦合到这些器件)的实施方式之外,也可以以软件(如,用诸如源、对象或机器语言的任何形式部署的计算机可读代码、程序代码和/或指令)来实现多种实施方式,该软件例如设置在被配置用于存储该软件的计算机可用(如可读)介质中。该软件可以使得能够实现例如本文中描述的装置和方法的功能、制造、建模、模拟、描述和/或测试。例如,这可以通过使用通用编程语言(如C、C++),包括Verilog HDL、VHDL、SystemC寄存器传送级(RTL)等等的硬件描述语言(HDL),或其它可用的程序、数据库和/或电路(即,示意图的)获取工具来实现。该软件可以设置在任何已知计算机可用介质中,包括半导体、磁盘、光盘(如CD-ROM、DVD-ROM等等),并且可以被部署作为用计算机可用(如可读)传输介质(如,载波或包括数字的、光学的或基于模拟的介质的任何其它介质)来实施的计算机数据信号。如此,可以在包括因特网和内部网的通信网络上传输软件。
[0061]应当明白,本文中描述的装置和方法实施例可以被包括在半导体知识产权核内,例如微处理器核(如,以HDL实现),并且在集成电路生产中被转换为硬件。另外,本文中描述的装置和方法可以被实现为硬件和软件的组合。因此,本发明不应受任何上述示范实施例限制,而应该仅根据下面的权利要求及其等同物来限定。
Claims (31)
1.一种实现条件移动指令的处理器,所述条件移动指令指定第一操作数、第二操作数和第三操作数,所述处理器包括:
指令解码单元,其接收所述条件移动指令并且输出第一解码的指令和第二解码的指令,其中,如果所述第二操作数与预定值不相等,则所述第一解码的指令使所述处理器将所述第三操作数移动到完成缓冲寄存器,并且如果所述第二操作数与所述预定值相等,则所述第二解码的指令使所述处理器将所述第一操作数移动到所述完成缓冲寄存器;以及
耦合到所述指令解码单元的执行单元,其执行所述第一解码的指令和所述第二解码的指令。
2.根据权利要求1的处理器,其中,如果所述第二操作数与所述预定值相等,则使所述第一解码的指令无效。
3.根据权利要求1的处理器,其中,如果所述第二操作数与所述预定值不相等,则使所述第二解码的指令无效。
4.根据权利要求1的处理器,还包括:
完毕单元,将所述完成缓冲寄存器的内容传送到所述处理器的寄存器堆的寄存器。
5.根据权利要求1的处理器,其中,所述执行单元不按程序次序执行解码的指令。
6.根据权利要求1的处理器,其中,所述执行单元是加载/存储单元。
7.一种系统,包括:
实现条件移动指令的处理器,所述条件移动指令指定第一操作数、第二操作数和第三操作数,其中所述处理器包括:
指令解码单元,其接收所述条件移动指令并且输出第一解码的指令和第二解码的指令,其中,如果所述第二操作数与预定值不相等,则所述第一解码的指令使所述处理器将所述第三操作数移动到完成缓冲寄存器,并且如果所述第二操作数与所述预定值相等,则所述第二解码的指令使所述处理器将所述第一操作数移动到所述完成缓冲寄存器,和
耦合到所述指令解码单元的执行单元,其执行所述第一解码的指令和所述第二解码的指令;以及
耦合到所述处理器的存储器。
8.根据权利要求7的系统,其中,如果所述第二操作数与所述预定值相等,则使所述第一解码的指令无效。
9.根据权利要求7的系统,其中,如果所述第二操作数与所述预定值不相等,则使所述第二解码的指令无效。
10.根据权利要求7的系统,还包括:
完毕单元,其将所述完成缓冲寄存器的内容传送到所述处理器的寄存器堆的寄存器。
11.根据权利要求7的系统,其中,所述执行单元不按程序次序执行解码的指令。
12.根据权利要求7的系统,其中,所述执行单元是加载/存储单元。
13.一种有形的计算机可读存储介质,包括以软件实施的处理器,其中所述处理器实现指定第一操作数、第二操作数和第三操作数的条件移动指令,所述处理器包括:
指令解码单元,其接收所述条件移动指令并且输出第一解码的指令和第二解码的指令,其中,如果所述第二操作数与预定值不相等,则所述第一解码的指令使所述处理器将所述第三操作数移动到完成缓冲寄存器,并且如果所述第二操作数与所述预定值相等,则所述第二解码的指令使所述处理器将所述第一操作数移动到所述完成缓冲寄存器,以及
耦合到所述指令解码单元的执行单元,其执行所述第一解码的指令和所述第二解码的指令。
14.根据权利要求13的有形的计算机可读存储介质,其中,如果所述第二操作数与所述预定值相等,则使所述第一解码的指令无效。
15.根据权利要求13的有形的计算机可读存储介质,其中,如果所述第二操作数与所述预定值不相等,则使所述第二解码的指令无效。
16.根据权利要求13的有形的计算机可读存储介质,还包括:
完毕单元,将所述完成缓冲寄存器的内容传送到所述处理器的寄存器堆的寄存器。
17.根据权利要求13的有形的计算机可读存储介质,其中,所述执行单元不按程序次序执行解码的指令。
18.根据权利要求13的有形的计算机可读存储介质,其中,所述执行单元是加载/存储单元。
19.根据权利要求13的有形的计算机可读存储介质,其中,所述处理器以硬件描述语言软件实施。
20.根据权利要求13的有形的计算机可读存储介质,其中,所述处理器以Verilog硬件描述语言软件和VHDL硬件描述语言软件之一实施。
21.一种在处理器中实现条件移动的方法,所述方法包括:
取出条件移动指令,所述条件移动指令指定第一操作数、第二操作数和第三操作数;
从所述条件移动指令形成第一解码的指令和第二解码的指令,其中,如果所述第二操作数与预定值不相等,则所述第一解码的指令使所述处理器将所述第三操作数移动到完成缓冲寄存器,并且如果所述第二操作数与所述预定值相等,则所述第二解码的指令使所述处理器将所述第一操作数移动到所述完成缓冲寄存器;以及
执行所述第一解码的指令和所述第二解码的指令。
22.根据权利要求21的方法,其中执行所述第一解码的指令包括:
如果所述第二操作数与所述预定值相等,则使所述第一解码的指令无效。
23.根据权利要求21的方法,其中执行所述第二解码的指令包括:
如果所述操作数与所述预定值不相等,则使所述第二解码的指令无效。
24.根据权利要求21的方法,还包括:
将所述完成缓存器的内容传送到所述处理器的寄存器堆的寄存器。
25.一种在处理器中实现条件移动指令的方法,所述条件移动指令指定第一操作数、第二操作数和第三操作数,所述方法包括:
从所述条件移动指令形成第一解码的指令和第二解码的指令,其中,如果所述第二操作数与预定值不相等,则所述第一解码的指令使所述处理器将所述第三操作数移动到完成缓冲寄存器,并且如果所述第二操作数与所述预定值相等,则所述第二解码的指令使所述处理器将所述第一操作数移动到所述完成缓冲寄存器;
如果所述第二操作数与所述预定值相等,则使所述第一解码的指令无效并且使所述第二解码的指令完毕,由此根据所述第二解码的指令改变所述处理器的结构状态;以及
如果所述第二操作数与所述预定值不相等,则使所述第二解码的指令无效并且使所述第一解码的指令完毕,由此根据所述第一解码的指令改变所述处理器的结构状态。
26.一种实现条件移动指令的处理器,包括:
指令解码单元,其接收所述条件移动指令并且输出解码的指令;以及
耦合到所述指令解码单元的执行单元,其执行所述解码的指令中选定的一个。
27.根据权利要求26的处理器,其中,所述条件移动指令指定多个操作数,并且基于所述操作数之一选择所述解码的指令之一用于执行。
28.根据权利要求26的处理器,其中,所述条件移动指令指定多个操作数,并且有效的解码的指令使所述执行单元将所述操作数中被标识的一个移动到完成缓冲寄存器。
29.一种实现条件移动指令的方法,包括:
接收所述条件移动指令;
从所述条件移动指令形成解码的指令;以及
执行所述解码的指令中选定的一个。
30.根据权利要求29的方法,其中,所述条件移动指令指定多个操作数,并且所述执行所述解码的指令中选定的一个包括:
基于所述操作数之一执行所述解码的指令中选定的那一个。
31.根据权利要求29的方法,其中,所述条件移动指令指定多个操作数,并且所述执行所述解码的指令中选定的一个包括:
将所述操作数中被标识的一个移动到完成缓冲寄存器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US85331406P | 2006-09-29 | 2006-09-29 | |
US60/853,314 | 2006-09-29 | ||
US11/640,491 | 2006-12-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101535947A true CN101535947A (zh) | 2009-09-16 |
Family
ID=41105106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007800417766A Pending CN101535947A (zh) | 2006-09-29 | 2007-09-28 | 两次发布的条件移动指令及其应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101535947A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104011662A (zh) * | 2011-12-23 | 2014-08-27 | 英特尔公司 | 用于提供向量混合和置换功能的指令和逻辑 |
CN104487940A (zh) * | 2012-06-15 | 2015-04-01 | 国际商业机器公司 | 本地清除控制 |
CN105453031A (zh) * | 2012-03-28 | 2016-03-30 | 国际商业机器公司 | 指令合并优化 |
CN111459549A (zh) * | 2020-04-07 | 2020-07-28 | 上海兆芯集成电路有限公司 | 具有高度领先分支预测器的微处理器 |
CN114116229A (zh) * | 2021-12-01 | 2022-03-01 | 北京奕斯伟计算技术有限公司 | 调节指令流水线的方法及装置、存储器和存储介质 |
CN117785738A (zh) * | 2024-02-23 | 2024-03-29 | 超睿科技(长沙)有限公司 | 页表预取方法、装置、芯片及存储介质 |
-
2007
- 2007-09-28 CN CNA2007800417766A patent/CN101535947A/zh active Pending
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104011662A (zh) * | 2011-12-23 | 2014-08-27 | 英特尔公司 | 用于提供向量混合和置换功能的指令和逻辑 |
TWI550509B (zh) * | 2011-12-23 | 2016-09-21 | 英特爾公司 | 提供向量混合與置換功能的指令與邏輯 |
CN104011662B (zh) * | 2011-12-23 | 2017-05-10 | 英特尔公司 | 用于提供向量混合和置换功能的指令和逻辑 |
US10037205B2 (en) | 2011-12-23 | 2018-07-31 | Intel Corporation | Instruction and logic to provide vector blend and permute functionality |
CN105453031A (zh) * | 2012-03-28 | 2016-03-30 | 国际商业机器公司 | 指令合并优化 |
CN104487940A (zh) * | 2012-06-15 | 2015-04-01 | 国际商业机器公司 | 本地清除控制 |
CN104487940B (zh) * | 2012-06-15 | 2017-02-22 | 国际商业机器公司 | 本地清除控制 |
CN111459549A (zh) * | 2020-04-07 | 2020-07-28 | 上海兆芯集成电路有限公司 | 具有高度领先分支预测器的微处理器 |
CN111459549B (zh) * | 2020-04-07 | 2022-11-01 | 上海兆芯集成电路有限公司 | 具有高度领先分支预测器的微处理器 |
CN114116229A (zh) * | 2021-12-01 | 2022-03-01 | 北京奕斯伟计算技术有限公司 | 调节指令流水线的方法及装置、存储器和存储介质 |
CN117785738A (zh) * | 2024-02-23 | 2024-03-29 | 超睿科技(长沙)有限公司 | 页表预取方法、装置、芯片及存储介质 |
CN117785738B (zh) * | 2024-02-23 | 2024-05-14 | 超睿科技(长沙)有限公司 | 页表预取方法、装置、芯片及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10768939B2 (en) | Load/store unit for a processor, and applications thereof | |
CN101558388B (zh) | 数据高速缓存虚拟提示路线预测及其应用 | |
US8032734B2 (en) | Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor | |
US9489206B2 (en) | Dependent instruction suppression | |
US7647475B2 (en) | System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue | |
US20100070741A1 (en) | Microprocessor with fused store address/store data microinstruction | |
US10691462B2 (en) | Compact linked-list-based multi-threaded instruction graduation buffer | |
US10296341B2 (en) | Latest producer tracking in an out-of-order processor, and applications thereof | |
US8078846B2 (en) | Conditional move instruction formed into one decoded instruction to be graduated and another decoded instruction to be invalidated | |
CN101535947A (zh) | 两次发布的条件移动指令及其应用 | |
US7747840B2 (en) | Method for latest producer tracking in an out-of-order processor, and applications thereof | |
US20080082793A1 (en) | Detection and prevention of write-after-write hazards, and applications thereof | |
US20090063881A1 (en) | Low-overhead/power-saving processor synchronization mechanism, and applications thereof | |
US9959122B2 (en) | Single cycle instruction pipeline scheduling | |
US9652305B2 (en) | Tracking source availability for instructions in a scheduler instruction queue |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20090916 |