CN107810486A - 锁定用于原子地执行的指令组的操作数的值 - Google Patents
锁定用于原子地执行的指令组的操作数的值 Download PDFInfo
- Publication number
- CN107810486A CN107810486A CN201680037789.5A CN201680037789A CN107810486A CN 107810486 A CN107810486 A CN 107810486A CN 201680037789 A CN201680037789 A CN 201680037789A CN 107810486 A CN107810486 A CN 107810486A
- Authority
- CN
- China
- Prior art keywords
- operand
- instruction
- processor
- group
- 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.)
- Granted
Links
- 239000000872 buffer Substances 0.000 claims abstract description 78
- 238000000034 method Methods 0.000 claims abstract description 38
- 230000004044 response Effects 0.000 claims abstract description 26
- 230000015654 memory Effects 0.000 claims description 20
- 230000006870 function Effects 0.000 claims description 9
- 230000007246 mechanism Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 10
- 230000006399 behavior Effects 0.000 description 8
- 230000004087 circulation Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000009191 jumping Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 210000004027 cell Anatomy 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
提供了一种方法,其包括:取回指令组,其包括用于该指令组的组头部,其中指令组被配置成由处理器执行,并且其中组头部包括字段,其包括用于至少一个操作数的锁定信息。该方法还包括:将至少一个操作数的值存储在处理器的至少一个操作数缓冲器中,并且基于该锁定信息,锁定缓冲器的至少一个操作数中的至少一个操作数的值,使得响应于完成指令组的执行,至少一个操作数不从处理器的至少一个操作数缓冲器中被清除。
Description
背景技术
指令集体系架构(ISA)和处理器的设计者进行功率和性能权衡。作为示例,如果设计者选择具有递送更高性能的指令的ISA,那么处理器的功耗也可能更高。备选地,如果设计者选择具有消耗较低功率的指令的ISA,则性能可能会更低。功耗可能依赖于与在执行期间由指令使用的处理器的硬件资源(诸如算术逻辑单元(ALU),高速缓存线或寄存器)的量。使用大量这样的硬件资源可能以更高的功耗为代价传递更高的性能。备选地,使用少量这样的硬件资源可能导致以较低的性能为代价产生较低的功耗。
编译器被用来将高级代码编译成与ISA和处理器架构兼容的指令。在所编译的指令的执行期间,与被执行的指令有关的任何操作数被处理。
发明内容
在一个示例中,本公开涉及针对原子地执行的指令组锁定处理器的操作数缓冲器中的操作数。在一个方面中,一种方法包括:取回指令组,其被配置成由处理器执行,该指令组包括用于指令组的组头部,其中组头部具有包括用于至少一个操作数的锁定信息的字段。该方法还可以包括:将至少一个操作数的值存储在处理器的至少一个操作数缓冲器中。该方法还可以包括:基于锁定信息,锁定处理器的至少一个操作数缓冲器中的至少一个操作数,使得响应于完成指令组的执行,该至少一个操作数不会从该处理器的至少一个操作数缓冲器中被清除。
在另一方面中,提供了一种处理器,其包括前端控制单元,其被配置为:(1)取回指令组,其中指令组被配置成由处理器执行;以及(2)将至少一个操作数的值存储在处理器的至少一个操作数缓冲器中。该处理器还可以包括后端控制单元,其被配置成使用与至少一个操作数相关联的至少一个控制位来锁定处理器的至少一个操作数缓冲器中的至少一个操作数的值,使得响应于完成指令组的执行,至少一个操作数不会从处理器的至少一个操作数缓冲器中被清除。
在又一方面中,提供了一种方法,其包括:将至少一个操作数的值存储在处理器的至少一个操作数缓冲器中,其中处理器被配置为执行指令组。该方法还可以包括:在第一模式下操作处理器,其中在第一模式下操作处理器包括:在完成第一指令组的执行之后:(1)到回第二指令组用于由处理器执行;以及(2)不清除处理器的至少一个操作数缓冲器中的至少一个操作数的值。该方法还可以包括:在第二模式下操作处理器,其中在第二模式下操作处理器包括:在完成第三指令组的执行之后:(1)取回第四指令组用于由处理器执行;以及(2)清除处理器的至少一个操作数缓冲器中的至少一个操作数的值。
提供本发明内容是为了以简化形式介绍下文将在具体实施方式中进一步描述的概念的选择。本发明内容部分不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
本公开通过示例被图示,并且不受附图限制,在附图中,相同附图标记指示类似元件。为了简单和清楚起见,附图中的元件被图示,并且不一定按比例绘制。
图1是根据一个示例的代表性处理器的框图;
图2是根据一个示例的后端单元的一部分及其与代表性处理器的接口的框图;
图3是根据一个示例的方法的流程图;
图4是根据一个示例的方法的流程图;以及
图5是根据一个示例的方法的流程图。
具体实施方式
在本公开中描述的示例涉及指令集体系架构(ISA)和处理器,其可以具有以组(例如,指令块)组织的指令,这些指令被原子取指、执行和提交。因此,处理器可以整体取回属于单个组的指令,将它们映射到处理器内部的执行资源,执行指令并且以原子方式提交它们的结果。处理器可以提交所有指令的结果或使整个组的执行无效。组内部的指令可以按数据流次序执行。另外,处理器可以准许组内部的指令直接相互通信。产生结果的指令可以代替将结果写入寄存器文件,而将该结果传送给消耗结果的另一指令。作为示例,将存储在寄存器R1和R2中的值相加的指令可以如表1所示来表达:
I[0]读取R1 T[2R]; |
I[1]读取R2 T[2L]; |
I[2]加T[3L]. |
这样,源操作数不用指令指定;相反,它们将由以ADD指令为目标的指令指定。编译器可以在指令的编译期间显式编码控制和数据依赖性,并且从而可以使处理器在运行时间免于重新发现这些依赖性。这可以有利地导致在这些指令的执行期间减少的处理器加载并且节能。作为示例,编译器可以使用预测来将所有控制依赖性转换成数据流指令。使用这些技术,可以减少对耗电的寄存器文件的访问次数。下面的表2示出了针对这样的指令的通用指令格式的示例:
操作码 | PR | BID | XOP | 目标1 | 目标2 |
每条指令可以具有合适的大小,诸如32位,64位或另一大小。在表2所示的示例中,每条指令可以包括操作码(“OPCODE”)字段,PR(预测)字段,BID(广播ID)字段,XOP(扩展的操作码)字段,目标1字段和目标2字段。操作码字段可以针对指令或指令组指定专用操作码,诸如添加,读取,写入或乘法。PR(预测)字段可以指定与指令相关联的任何预测。作为示例,可以使用两位PR字段,如下:00-未被预测,01-被保留,10-预测为假,11-预测为真。因此,例如,如果指令只有在比较结果为真的情况下才执行,则可以在执行比较的另一指令的结果来预测该指令。BID(广播ID)字段可以支持向组中的任意数目的消费者指令发送操作数。2位BID字段可以被用来编码指令在其上接收其操作数中的一个操作数的广播信道。XOP(扩展操作码)字段可以支持扩展操作码的类型。目标1和目标2字段可以允许高达两个将被编码目标指令。目标字段可以指定生产者指令的结果的消费者指令,从而准许在指令之间的直接通信。
当与该指令相对应的所有就绪位被设置为逻辑高(或逻辑低)时,指令可以被准备好由指令调度器发出。当用于加指令的两个操作数已经被计算出来时,诸如加指令的指令可能已经准备好被调度或发出。作为示例,针对ADD指令的左操作数可能存在一个就绪位,针对ADD指令的右操作数可能存在另一就绪位。在另一示例中,预测指令当预测已经被评估时可以就绪。因此,例如,如果预测指令根据真值来预测,则一旦真值被评估,该指令就可以准备好被发出。在简化示例中,指令在被发出之前可能正在等待四个输入:真预测,假预测,左操作数和右操作数。其他指令可能没有需要等待的任何输入,诸如来自某些寄存器的操作数的ADDI(立即添加)或读取值。另外,某些结果可能需要被传送给几条指令,并且在这种情况下,需要结果的指令可能会收听广播信道。例如,某些预测指令(诸如分支指令)可能只有在其预测为真或假时才可以执行。两个预测分支指令(例如,BRO.T和BRO.F)都可以收听某个信道上的广播。将收到匹配预测的分支可能会触发。作为另一示例,某些加载指令也可以收听信道,并且当在该信道上的操作数是可用的时,它们可能会触发。当在广播ID(BID)上等待的广播指令从以它们为目标的指令接收到就绪位时,它们可能已经就绪。
每个指令组可以具有与指令组相关联的某些信息,诸如与指令组有关的控制信息和/或元信息。该信息可以通过编译器在将诸如C或C++之类的较高级代码编译成用于在与本公开一致的处理器上执行的指令期间生成。在编译指令组和在运行时间期间检查指令的性质期间,该信息中的一些信息可以由编译器提取。附加地或备选地,与指令组相关联的信息可以是关于指令组的元信息。在一个示例中,这样的信息可以被提供给使用特殊指令或指令的处理器,该特殊指令或指令提供与寄存器或其他存储器有关的目标编码,该目标编码可以具有与指令组相关联的相关信息。在特殊指令的情况下,这些指令的操作码字段可以用于传送与指令组有关的信息。在另一示例中,这样的信息可以被维持为处理器状态字(PSW)的一部分。在一个示例中,该信息可以有利地帮助处理器更有效地执行指令组。可以使用组头部,使用特殊指令,使用存储器引用位置,使用处理器状态字(PSW)或使用这些的组合提供给处理器的信息的类型的一个示例在下面的表3中:
虽然表3中示出的组头部包括许多字段,但是它仅仅是示例性的。在一个实施例中,编译器可以选择用于包括在组头部中的信息或者用于特殊指令的信息,其可以基于指令的性质和/或基于处理要求的性质(诸如高性能或低功率)来向处理器提供这种信息。这可以有利地允许更好地平衡性能和功耗之间的折衷。对于某些类型的处理应用,诸如利用大量内核的高性能计算,大量信息可能是个理想选项。备选地,对于其他类型的处理应用,诸如物联网中使用的嵌入式处理器,移动设备,可穿戴式设备或其他嵌入式计算类型的应用,较少的信息可能是个理想选项。在另一方面中,可以根据指令组中指令的性质,经由组头部或特定指令传送的信息的范围可以被定制。例如,如果指令组包括被执行几次的循环,则可能需要更广泛的信息来封装与指令组相对应的控制信息。附加控制信息可以允许处理器更有效地执行循环,从而提高性能。备选地,如果存在指令组很少被执行,那么相对较少的信息就足够了。在另一示例中,如果指令组包括几个预测控制循环,则可能需要更多的信息。类似地,如果指令组具有大量的指令级并行性,则可能需要更多信息作为经由特殊指令的组头部的一部分。组头部或特殊指令中的附加控制信息可以用来有效地利用指令组中的指令级并行性。在另一示例中,如果指令组包括几个分支预测,则可能需要更多的信息。关于分支预测的附加控制信息将使得代码执行效率更高,因为这将导致更少的流水线冲刷。
在整体执行指令组(例如,块)的ISA和处理器中,当取回指令组时,执行指令组所需的硬件资源(诸如操作数缓冲器或加载和存储队列)需要被保留。因为编译器已经分析了高级指令代码和标识的数据依赖性,所以可以有利地更有效地执行指令组。许多程序可能花费大部分时间仅执行代码的一小部分,例如,重复执行某些循环。锁定操作数字段可以被用于存储与可以由指令组中的指令处理的操作数相对应的锁定信息,包括例如重复执行的循环。可能被锁定的操作数包括但不限于常量或其他变量,其在由多个指令组执行期间不改变它们的值。
与表3中所示的字段相对应的功能性可以被组合或进一步分离。因此,例如,在一个示例中,字段锁定操作数可以在单独的头部中。它还可以在由组头部或另一结构中的地址索引的存储器中。类似地,特殊指令可以提供与表3中的字段中的任一字段有关的信息,或者它可以组合来自这些字段的信息。作为示例,虽然表3的示例性组头部包括单独的标识符字段和大小字段,但是这两个字段可以组合成单个字段。类似地,单个特殊指令当被解码时可以提供关于指令组的大小的信息以及标识符字段中的信息。在不脱离本公开的范围的情况下,可以对组头部结构和格式做出其他改变。作为示例,可以包括附加字段,其包括与指令组的特点有关的信息。基于指令组的执行频率,可能会包括某些字段。
包括在组头部结构中的字段或经由之前讨论的特殊指令或其他机制提供的信息可以是特定处理器或处理器家族的公共可用标准指令集架构(ISA)的一部分。这些字段的子集可能是ISA的专有扩展。字段中的某些位值可能是处理器标准ISA的一部分,但该字段中的某些其他位值可能提供专有功能性。该示例性字段可以允许ISA设计者向ISA添加专有扩展,而不完全公开与专有扩展相关联的性质和功能性。因此,在该实例中,由ISA设计者分发的编译器工具可能支持该字段中的专有位值,完全独立的专有字段或特殊指令。这样字段的使用可能与某些处理器设计专有的硬件加速器特别相关。因此,程序可能包括不可识别的组头字段或特殊指令;但是程序可以进一步包括解密字段或解码指令的配方。
合适的编译器可以处理被配置成由处理器原子执行的指令组,以产生关于指令组的信息,包括关于指令组的元信息和控制信息。作为该过程的一部分,编译器还可以生成锁定信息用于与本公开一致使用。一些程序可以仅针对一个ISA(例如,与用于物联网、移动设备、可穿戴式设备或其他嵌入式计算环境的处理器一起使用的ISA)集合来编译。编译器可以使用诸如静态代码分析或代码剖析之类的技术来生成与指令组相关的信息。编译器可以考虑诸如指令组的特点和指令组的执行频率之类的因素。指令组的相关特点包括但不限于:(1)指令级并行性;(2)循环的数目;(3)预测控制指令的数目;以及(4)分支预测的数目。
下面的表4中示出了简化128位组头部的一个示例:
如关于表3所讨论的,组头部(96位)的第一部分包括字段,诸如标识符,大小,XFLAGS,出口类型,存储掩码和写入掩码。在该示例中,如关于表3所描述的,组头部(32位)的第二部分与锁定操作数字段相对应。这样,当新指令组被取回并且映射到处理器的资源时,需要保持锁定的用于某些操作数的有效位可能不会被清除。相反,锁定操作数的值可以被新取回和映射的指令组再次使用。上面的表4仅仅是示例性的。与锁定操作数有关的信息可以以其他方式封装。
图1是根据本公开的一个示例的代表性处理器100的一部分的框图。处理器100可以包括前端控制单元102,第一指令高速缓存104,分支预测器106,指令解码器108,指令窗口110,左操作数缓冲器112,右操作数缓冲器114,算术逻辑单元(ALU)116,算术逻辑单元(ALU)118,寄存器120,加载/存储队列122和后端控制单元140。在一个示例中,如具有连接各个部件的箭头的线所示,处理器100的部件中的每个部件可以经由数据和/或控制总线互连。在一些实例中,总线只能携带数据和指令;在一些实例中,总线只能携带数据(例如,操作数);在其他实例中,总线只能携带控制信号,例如,前端控制单元102可以经由仅携带控制信号的总线与其他控制网络进行通信。在一个示例中,前端控制单元102可以包括组合逻辑和状态机以处理包括指令取回和解码的处理的前端。作为示例,前端控制单元102可以从L1高速缓存或另一高速缓存取回指令用于存储到第一指令高速缓存104中。前端控制单元还可以将指令从指令高速缓存104或L-1高速缓存取回到指令窗口110中,其可以由指令解码器108处理。作为该过程的一部分,前端控制单元可以将指令地址转换成相应的指令窗口地址。由处理器100执行的程序可以包括几个指令组。前端控制单元102可以基于由相应的组头部(例如,关于表3描述的组头部)施加的约束来确定每个指令组的放置。前端控制单元102可以经由控制网络与处理器100的其他部分交换控制信息。后端控制单元140可以控制后端操作,包括执行和提交操作。处理器100可以包括单个内核或多个内核。在多内核处理器的情况下,可能存在图1中所示的元件中的至少一些元件的多个实例。前端控制单元102和后端控制单元140可以协调和管理处理器的各种内核和其他部分的控制。因此,在该示例中,指令组可以在多个内核上同时执行,并且前端控制单元102可以经由控制网络与其他内核交换控制信息,以确保根据需要同步用于各种指令组的执行。前端控制单元102可以每个时钟周期取回并且解码单个指令或多个指令。尽管图1示出了以某种方式布置的处理器100的一定数目的部件,但是可以存在更多或更少数目的不同布置的部件。
在一个示例中,某些指令组可以被取回并且被映射到指令窗口110,并且如果这些指令组中的任一指令组具有后沿(例如,分支回到自身的指令组),则代替再次从存储器(例如L-1高速缓冲)加载指令,指令可以被留在指令窗口110中,并且只有加载/存储队列122中的有效位可以被清除。在一个示例中,后端控制单元140可以根据需要执行有效位的清除,或者不清除有效位。这可以允许处理器100绕过用于这样指令组的指令取回阶段。此外,用于具有由组头部(例如,表3,锁定操作数字段)指定的锁定信息的那些操作数缓冲器(例如,左操作数缓冲器112和右操作数缓冲器114)的有效位不被清除,使得当分支回到自身的指令组再次执行时,它们仍然有效。与指令组有关的操作数的全部或子集可以被锁定。在一个示例中,当指令组发出时,可以使用锁定操作数和解锁操作数两者。在完成指令组的执行之后,只有与解锁操作数对应的值可以被清除。
关于锁定操作数的信息还可以由编译器使用其他机制(诸如使用特殊指令,使用存储器引用位置,使用处理器状态字(PSW)或使用这些的组合)被传送给处理器100。作为示例,各个指令可以指定他们的目标要被锁定。作为另一示例,加载指令可以包括控制位,其可以用于由锁定加载指令所加载的操作数的值。指令处理器100锁定操作数的一种方式可以是指定处理器100不同地解释指令中的某些字段的模式。例如,指令的广播标识符(BID)字段的三个位中的两个位可以被解释为包括指示操作数锁定的控制位,一个用于左操作数,另一个用于右操作数。在一个示例中,这个不同的模式可以经由组头部的锁定操作数字段被传送到处理器100。在另一示例中,锁定信息可以使用可以是特殊加载指令的特殊指令或者是其中两个指令被打包在一起的扩展指令来传送。传送锁定信息的另一方式可以是在每个指令中包括字段(具有控制位),该字段与指令的每个目标相对应,其指令处理器100锁定指令所针对的操作数。这样,目标操作数可以基于指令中控制位的值来被锁定。在一个示例中,控制位可以导致可能使用这样的指令可以作为目标的操作数的值的最大大小的减小。
在另一示例中,组头部的锁定操作数字段可以包括锁定信息(例如,位值),其向处理器100传送关于不同地解释加载指令的信息。例如,某些位值可能指示由加载指令加载的左操作数需要保持锁定在操作数缓冲器中,直到解锁机构解锁操作数为止。指令组中的指令(例如,加指令)可以包括循环不变的操作数中的一个操作数。在一个示例中,可以使用具有控制位来锁定操作数的值的加载指令来加载该操作数。在另一示例中,可以基于组头部的锁定操作数字段来不同地解释加载指令。在一个示例中,当指令组完成时,作为示例,提交结果或使组无效,则循环不变操作数的有效位可能不被清除,从而允许该操作数的值再次被使用而不必重新加载或访问寄存器文件。在另一示例中,即使当新指令组被取回并且被映射到处理器100的硬件资源时,锁定操作数的值也可能不被清除。如果指令组是重复执行一定次数的循环,那么被锁定的操作数的值可以一次又一次地使用,而不必重新加载它们。另外,操作数的值的锁定可以有利地减少完成与锁定操作数有关的操作所需的指令的数目。此外,操作数的值的锁定可以减少数据移动,并且因此可以有利地导致处理器消耗更少的能量。
在一个示例中,操作数的值的锁定可以被有利地用于改进像素处理或图像处理,诸如图像理解核心。这些类型的处理可以包括:在逐行(或以某种其他方式)的基础将某些值应用于大量像素;可以重复应用的值被锁定到操作数缓冲器中,并且像素可以更快地被处理。作为示例,锁定操作数缓冲器中的一些锁定操作数缓冲器可能被加载一次又一次使用的常量。
指令组中的每个指令可以具有就绪位,其状态可以向指令调度器130指示指令是否准备好被调度或发出。每条指令都可能具有有效位,该有效位与真预测是否就绪,假预测是否就绪,左操作数是否就绪,或者右操作数是否就绪有关。在一个示例中,当指令的所有有效位被设置为真或者以其他方式被指示为不相关时,就绪位可以被设置为真。有效位可以包括:(1)至少一个位,其指示输入到指令组中的至少一个指令组的左操作数的准备就绪;以及(2)至少一个第二位,其指示输入到指令组中的至少一个指令组的右操作数的准备就绪。当所有其输入(例如,操作数或预测)具有它们的有效位被设置并且它之前没有被发出时,调度的指令可以由指令调度器130发出。一旦发出指令,禁止再次发出指令的单独控制位可以被设置。指令调度器130可以针对到指令的输入的评估有效位(指示有效输入是否可用)。
一旦发出指令,任何操作数可以被加载到左操作数缓冲器112和/或右操作数缓冲器114中(根据需要)。根据指令的操作码,可以使用ALU 116和/或ALU 118对操作数执行操作。ALU的输出可以被重新加载回到操作数缓冲器中或存储到一个或多个寄存器120中。一旦指令组完成执行,则其输出可以使用存储操作被提交到加载/存储队列122中。分支预测器106可以处理与来自组头部的分支出口类型、特殊指令或存储器引用位置有关的信息,并且在做出分支预测时把该信息作为因素考虑。
继续参考图1,前端控制单元102还可以包括组头部控制单元132。组头部控制单元132可以处理可以原子执行的指令组的控制信息和/或元信息。在一个示例中,组头部控制单元132可以创建并且处理用于这样指令组的组头部。如之前关于表3所讨论的,组头部可以包括关于指令组的控制信息和/或元信息。组头部控制单元132可以包括组合逻辑,状态机和临时存储单元,诸如触发器以处理组头部中的各个字段。在一个示例中,用于指令组的控制信息和/或元信息可以包括锁定操作数字段中的信息。
在与具有固定大小的指令组(例如,32个指令)有关的一个示例中,组头部将在指令组的开始处,因此程序计数器(PC)的初始值将指向组头部。在与大小可变的指令组(例如,32,64,96或128个指令)有关的另一示例中,前端控制单元102将关于当前在指令窗口中的指令组的大小提供给组头部控制单元132。一旦组头部控制单元132具有该信息,就可以使用它和PC值来确定组头部的位置。
图2是后端单元140的一部分的框图200,其可以用于:(1)当当前指令组完成执行或新指令组被取回时,清除存储在操作数缓冲器中的操作数的所有有效位;或(2)当当前指令组完成执行或新指令组被获取时,仅清除在操作数缓冲器中存储的操作数的有效位的一些有效位或不清除它们。清除有效位将需要将新操作数在它们可以被使用之前被写入到操作数缓冲器。后端单元140的该部分可以包括锁定操作数逻辑202,解复用器203(由选择信号控制),用于存储锁定信息的锁定信息单元204,反相器集合(206,208和210),与门集合(212,214和216)以及用于存储与操作数缓冲器中的操作数相对应的有效位的有效位存储单元220。尽管图2示出了一定数目的反相器和一定数目的与门,这些部件的数目取决于处理器的架构。无论何时新指令组被映射到处理器100的指令窗口110或指令组的结果被提交,锁定操作数逻辑202可以断言清除信号(例如,逻辑高)。锁定信息单元204可以包括锁定位,其与即使新指令组被映射到处理器100的指令窗口110,也需要被锁定的操作数相对应。如之前所讨论的,锁定信息(例如,锁定位)可以使用不同的锁定机制以几种不同的方式被传送到处理器100。在一个示例中,选择信号可以确定清除线是否直接被耦合到可以重置存储的有效位(例如,存储在有效位存储单元220中的有效位)的电路,或者清除线是否以不同方式被耦合。这可以准许图2中所示的部件来实现重置用于操作数缓冲器中的操作数的有效位的两种不同的方式。
在一个示例中,在选择信号的控制下,清除线可以耦合到“与”门中的每个“与”门的另一输入。锁定位中的每个锁定位可以耦合到反相器,诸如图2所示的反相器(206,208和210)。锁定位的反相值可以被耦合到相应“与”门的另一输入,诸如图2所示的“与”门(212,214和216)。在一个示例中,无论何时新指令组被映射到处理器100的指令窗口110或指令组的结果被提交,清除线可以到达逻辑高值。在一个示例中,锁定位的高值可能导致操作数不能从操作数缓冲器中被清除;而锁定位的低值可能导致操作数从操作数缓冲器中被清除。当操作数的锁定位被设置为逻辑高时,则当被反相(例如,通过反相器206)时,逻辑低值可以通过与门(例如,通过与门212)来处理。这将导致由与门输出的逻辑低信号,无论清除线是否处于逻辑高值,该逻辑低信号将不能清除用于存储在操作缓冲器中的对应操作数的有效位(存储在有效位存储单元220中)。备选地,当操作数的锁定位被设置为低时,则当被反相时(例如,通过反相器206),逻辑高值可以通过与门(例如,通过“与”门212)来处理。当清除线处于逻辑高值时,这将导致由与门输出逻辑高信号,并且该逻辑高信号将清除用于在操作缓冲器中存储的对应操作数的有效位。尽管图2示出了以某种方式布置的处理器100的一定数目的部件,但是可以存在不同布置的更多或更少数目的部件。事实上,锁定操作数的有效位可以使用其他机制来清除。
在另一示例中,在选择信号的控制下,清除线可以被直接耦合到可以重置操作数的有效位的电路。在该示例中,后端单元140的该部分可以依靠模式信号来控制有效位的重置。锁定操作数逻辑202可以断言可能具有逻辑高值或逻辑低值的清除信号,其可以取决于由锁定操作数逻辑202接收的模式信号。在一个示例中,模式信号可以基于处理器100是否需要在锁定操作数模式中操作。在一个示例中,该信息可以被包括在组头部的锁定操作数字段中。该信息可以向处理器指示一组(或多组)指令需要在锁定操作数模式下被处理,使得锁定操作数的值的有效位不被清除,直到被指令以退出该模式为止。在这个示例中,当模式信号向锁定操作数逻辑202指示先前加载到操作数缓冲器中的操作数的有效位不应该被清除时,清除线可以被设置为逻辑低值。备选地,清除线可以被设置为逻辑高值,其可能导致操作数缓冲器中的操作数的清除。当然,其他机制还可以被用于实现这个目标。
当到了例如通过清除先前已被锁定的操作数的锁定位和有效位解锁操作数的时间时,锁定操作数逻辑202可以在清除线上断言逻辑高信号。在一个示例中,清除可能是指要求操作数缓冲器在可以被指令使用之前通过新值而被写入。这可以以许多不同方式来完成。在一个示例中,在循环或一系列循环结束时,指令组可以包括特殊分支指令,其可以导致先前被锁定的任何操作数的值的有效位的清除。在一个示例中,该特殊分支指令当被执行时可以与锁定操作数逻辑202一起工作,以在清除线上断言逻辑高信号。如之前所讨论的,组头部可以包括指示这种出口类型的标志,其可以经由被标志为“清除”分支出口类型的字段在组头部中被指定。作为第二示例的一部分,被取回的下一指令组可以是专用组,其唯一功能是向锁定操作数逻辑202提供控制信号,其导致在清除线上逻辑高信号的断言。作为第三示例的一部分,可以存在到特殊指令组的跳转,其功能是当导致清除线上逻辑高信号的断言的指令组提交时,将控制信号提供给锁定操作数逻辑202,。当然,其他机制也可以被用于断言清除线上逻辑高信号,该逻辑高信号导致用于锁定操作数的锁定位和有效位的清除。
图3是按照一个示例的方法的流程图。在步骤302中,作为示例,前端控制单元102可以取回指令组,该指令组被配置成由处理器(例如,处理器100)原子执行。在一个示例中,指令组不需要被配置成原子执行。作为该步骤的一部分,前端控制单元可以取回该指令组的组头部(例如,如关于表3所描述的),其中组头部可以包括字段,其包括针对至少一个操作数的锁定信息。该锁定信息可以是之前关于表3中描述的组头部所讨论的任何类型的信息。在指令组已经通过前端控制单元102取回之后,处理可以移动到步骤304。
在步骤304中,作为示例,处理器100的部件(例如,后端控制单元140)可以将至少一个操作数的值存储在处理器(例如,处理器100)的至少一个操作数缓冲器(例如,左操作数缓冲器112或右处理器缓冲器114)中。
在步骤306中,后端控制单元140可以基于锁定信息来锁定处理器(例如,处理器100)的至少一个操作数缓冲器中的至少一个操作数的值,使得即使在完成指令组的执行之后,至少一个操作数也不从处理器的至少一个操作数缓冲器中被清除。在一个示例中,完成指令组以开始原子提交的检测可以涉及:对寄存器写入、存储库以及一个分支进行计数,并且确保所有先前块已经被提交。在一个示例中,完成指令组的执行可以包括:将由指令组生成的所有结果存储在寄存器文件(例如,寄存器120)中,并且将与指令组有关的所有存储库从加载/存储队列分派到存储器。在一个示例中,锁定处理器的至少一个操作数缓冲器中的至少一个操作数的值可以包括:设置与至少一个操作数相关联的控制位的值。在该示例中,控制位的高逻辑值(或低逻辑值)可以指示操作数被锁定。在另一示例中,锁定信息可以包括组头部中(例如,表3的示例性组头部的锁定操作数字段中)的至少一个比特值,其被用来改变与处理器相关联的指令集架构中的指令的现有字段的解释。在另一示例中,锁定信息可以包括到处理器的、指示组头部后跟有附加锁定信息的指示。在另一示例中,锁定信息可以包括在锁定步骤期间被锁定的至少一个操作数的值。如之前所讨论的,锁定信息可以由编译器生成并且可以使用不同的方法(包括例如使用组头部)被传送到处理器100。在另一示例中,如之前所讨论的,锁定信息可以包括指令组中的指令的字段中的至少一个比特值。后端控制单元140还可以使用之前所讨论的各种解锁机制解锁至少一个操作数的值。在一个示例中,解锁可以响应于指示解锁至少一个操作数的标志。在另一示例中,解锁可以响应于分支指令。在另一示例中,解锁可以响应于到指令组的跳转,该指令组的功能是解锁至少一个操作数的值的。
图4是根据一个示例的方法的流程图。在步骤402中,作为示例,前端控制单元102可以取回指令组,该指令组被配置为由处理器(例如,处理器100)原子执行。在一个示例中,指令组不需要被配置成原子执行。在指令组已经通过前端控制单元102取回之后,该处理可以移动到步骤404。
在步骤404中,作为示例,处理器100的部件(例如,后端控制单元140)可以将至少一个操作数的值存储在处理器(例如,处理器100)的至少一个操作数缓冲器(例如,左操作数缓冲器112或右处理器缓冲器114)中。
在步骤406中,后端控制单元140可以使用与至少一个操作数相关联的至少一个控制位来锁定处理器(例如,处理器100)的至少一个操作数缓冲器中的至少一个操作数的值,使得该至少一个操作数即使在完成指令组的执行之后,也不会从处理器的至少一个操作数缓冲器中被清除。在一个示例中,完成指令组以开始原子提交的检测可以涉及:对寄存器写入,存储库和一个分支进行计数,并且确保所有先前块已经被提交。在一个示例中,完成指令组的执行可以包括:将由指令组生成的所有结果存储在寄存器文件(例如,寄存器120)中,并且将与指令组有关的所有存储库从加载/存储队列分派到存储器。在这个示例中,控制位的高逻辑值(或低逻辑值)可以指示操作数被锁定。控制位本身的值可以基于之前所讨论的锁定信息和锁定机制的各种类型中的任一类型来确定。后端控制单元140也可以使用之前所讨论的各种解锁机制来解锁至少一个操作数的值。在一个示例中,解锁可以响应于指示解锁至少一个操作数的标志。在另一示例中,解锁可以响应于分支指令。在另一示例中,解锁可以响应于跳转到其功能是解锁至少一个操作数的值的指令组。
图5是根据一个示例的方法的流程图。在步骤502中,作为示例,处理器部件(例如,后端控制单元140)可以将至少一个操作数的值存储在处理器(例如,处理器100)的至少一个操作数缓冲器(例如,左操作数缓冲器112或右操作数缓冲器114)。处理器100可以被配置成以原子地执行每个指令组。在一个示例中,指令组不需要被配置成以原子地执行。
在步骤504中,处理器100可以在第一模式下操作,其中第一模式可以包括在完成第一指令组的执行之后:(1)取回第二指令组以用于由处理器执行;以及(2)不清除处理器的至少一个操作数缓冲器中的至少一个操作数的值。在一个示例中,前端控制单元102可以取回第二指令组,并且后端控制单元140可以不清除处理器(例如,处理器100)的至少一个操作数缓冲器中的至少一个操作数的值。如之前关于图1和图2所讨论的,后端控制单元140可以基于模式信号来不清除至少一个操作数的值。模式信号可以控制处理器100在其中操作的模式。在一个示例中,完成指令组以开始原子提交的检测可以涉及到:对寄存器写入,存储器和一个分支进行计数,并且确保所有先前的块已经被提交。在一个示例中,完成指令组的执行可以包括:将由指令组生成的所有结果存储在寄存器文件(例如,寄存器120)中,并且将与指令组有关的所有存储器从加载/存储队列分派到存储器。另外,在第一模式下操作处理器还可以包括:取回组头部(例如,关于表3讨论的组头部),其包括锁定信息,该锁定信息不需要清除处理器的至少一个操作数缓冲器中的至少一个操作数的值,并且其中锁定信息可以包括至少一个比特值,该比特值被用来改变与处理器相关联的指令集架构中的指令的现有字段的解释。在另一示例中,在第一模式下操作的处理器还可以包括:取回组头部(例如,关于表3讨论的组头部),其包括锁定信息,该锁定信息不需要清除处理器的至少一个操作数缓冲器中的至少一个操作数的值,并且其中锁定信息可以包括到处理器的、组头部后跟附加锁定信息的指示。
在步骤506中,处理器100可以在第二模式下操作,其中第二模式可以包括在完成第三指令组之后:(1)取回第四指令组用于由处理器执行,以及(2)清除处理器的至少一个操作数缓冲器中的至少一个操作数的值。在一个示例中,前端控制单元102可以取回第四指令组,并且后端控制单元140可以清除处理器(例如,处理器100)的至少一个操作数缓冲器中的至少一个操作数的值。如之前关于图1和图2所讨论的,后端控制单元140可以基于模式信号来清除至少一个操作数的值。模式信号可以控制处理器100在其中操作的模式(例如,第一模式或第二模式)。在一个示例中,完成指令组的执行可以包括:将由指令组生成的所有结果存储在寄存器文件(例如,寄存器120)中,并且将与指令组有关的所有存储库从加载/存储队列分派到存储器。后端控制单元140还可以使用之前所讨论的各种解锁机制来解锁至少一个操作数的值。在一个示例中,解锁可以响应于指示解锁至少一个操作数的标志。在另一示例中,解锁可以响应于分支指令。在另一示例中,解锁可以响应于跳转到其功能是解锁至少一个操作数的值的指令组。
总之,提供了一种方法,其包括:取回指令组,其被配置为由处理器原子执行,该指令组包括用于指令组的组头部,其中该组头部具有字段,该字段包括用于至少一个操作数的锁定信息。该方法还可以包括:将至少一个操作数的值存储在处理器的至少一个操作数缓冲器中。该方法还可以包括:基于锁定信息,锁定处理器的至少一个操作数缓冲器中的至少一个操作数的值,使得响应于完成指令组的执行,至少一个操作数不会从处理器的至少一个操作数缓冲器中被清除。在该方法中,完成指令组的执行还可以包括:(1)将由指令组生成的所有结果存储在寄存器文件中;以及(2)将与指令组有关的所有存储库从加载/存储队列分派到存储器中。另外,在该方法中,锁定处理器的至少一个操作数缓冲器中的至少一个操作数的值在可以包括:设置与至少一个操作数相关联的控制位的值。此外,锁定信息可以包括组头部中的至少一个比特值,其用于改变与处理器相关联的指令集架构中的指令的现有字段的解释。锁定信息还可以包括到处理器的、组头部后跟附加锁定信息的指示。锁定信息还可以包括在锁定步骤期间被锁定的至少一个操作数的值。锁定信息还可以包括指令组中的指令的字段中的至少一个比特值。该方法还可以包括:响应于指示解锁至少一个操作数的标志,解锁至少一个操作数的值。附加地,该方法还可以包括:响应于分支指令,解锁至少一个操作数的值。该方法还可以:包括响应于跳转到其功能是解锁至少一个操作数的值的指令组,解锁至少一个操作数的值。
在另一方面中,提供了一种处理器,其包括装置,其用于:(1)取回指令组,其中指令组被配置成由处理器原子地执行;以及(2)将至少一个操作数的值存储在处理器的至少一个操作数缓冲器中。处理器还可以包括装置,其用于使用与至少一个操作数相关联的至少一个控制位,锁定处理器的至少一个操作数缓冲器中的至少一个操作数的值,使得响应于完成指令组的执行,至少一个操作数不会从处理器的至少一个操作数缓冲器中被清除。作为示例,用于取指和存储的装置可以是图1的前端控制单元102,用于锁定的装置可以是图1的后端控制单元140。在该处理器中,完成指令组的执行可以包括:(1)将由指令组生成的所有结果存储在寄存器文件中;以及(2)将与指令组有关的所有存储库从加载/存储队列分派到存储器。该处理器还可以包括装置,其用于响应于分支指令,解锁处理器的至少一个操作数缓冲器中的至少一个操作数的值。该处理器还可以包括装置,其用于响应于跳转到其功能是解锁处理器的至少一个操作数缓冲器中的至少一个操作数的值的指令组,解锁处理器的至少一个操作数缓冲器中的至少一个操作数的值。作为示例,用于解锁的装置可以是图1的后端控制单元140。
应该理解,本文中所描绘的方法、模块和部件仅仅是示例性的。备选地或另外,本文中所描述的功能性可以至少部分地由一个或多个硬件逻辑部件来执行。例如但不限于,可以使用的说明性类型的硬件逻辑部件包括现场可编程门阵列(FPGA),专用集成电路(ASIC),专用标准产品(ASSP),片上系统(SOC),复杂可编程逻辑器件(CPLD)等。在抽象但明确的意义上,任何实现相同功能性的部件配置都被有效地“关联”,从而实现所需的功能性。因此,本文中组合以实现特定功能性的任何两个部件可以被视为彼此“相关联”,使得实现期望的功能性,而与体系架构或中间部件无关。同样,如此关联的任何两个部件还可以被视为彼此“可操作地连接”或“耦合”以实现期望的功能性。
与本公开中所描述的示例相关联的功能性还可以包括存储在非暂态介质(例如,指令高速缓存104或其他类型的非暂态介质)中的指令。如本文中所使用的术语“非暂态介质”是指存储使得机器(诸如处理器100)以特定方式操作的数据和/或指令的任何介质。示例性非暂态介质包括非易失性介质和/或易失性介质。非易失性介质例如包括硬盘,固态驱动器,磁盘或磁带,光盘或带,闪存,EPROM,NVRAM,PRAM或其他此类介质,或者这样的介质的联网版本。易失性介质包括例如动态存储器,诸如DRAM,SRAM,高速缓存或其它此类介质。非暂态介质不同于传输介质,但可以与传输介质一起使用。传输介质用于向诸如处理器100之类的机器传送数据和/或指令从其传送数据和/或指令。示例性传输介质包括同轴电缆,光纤电缆,铜线以及诸如无线电波的无线介质。
此外,本领域技术人员将认识到,上文所描述的操作的功能性之间的界限仅仅是说明性的。多个操作的功能性可以被组合成单个操作,和/或单个操作的功能性可以在附加操作中被分发。而且,备选实施例可以包括特定操作的多个实例,并且在各种其他实施例中可以更改操作的次序。
尽管本公开提供了具体示例,但是可以在不背离如权利要求中阐述的本公开的范围的情况下做出各种修改和改变。因而,说明书和附图被认为是说明性的而非限制性的,并且所有这样的修改旨在被包括在本发明的范围内。本文中关于具体示例描述的任何益处,优点或问题的解决方案不旨在被解释为任何或所有权利要求的关键的,必需的或基本的特征或元素。
此外,如本文中使用的术语“一”或“一个”被定义为一个或多于一个。此外,在权利要求中诸如“至少一个”和“一个或多个”之类的介绍性短语的使用不应被解释为暗示由不定冠词“一”或“一个”的另一权利要求元素的引入将包含这种引入的权利要求元素的任何特定权利要求限制到仅包含一个这样的元素的发明,即使当相同的权利要求包括介绍性短语“一个或多个”或“至少一个”以及诸如“一”或“一个”之类的不定冠词时。对于定冠词的使用也是如此。
除非另有说明,否则诸如“第一”和“第二”之类的术语被用于这样的术语所描述的元件之间的任意区分。因此,这些术语不一定旨在指示这些元素的时间或其他优先级化。
Claims (15)
1.一种处理器,包括:
用于:(1)取回指令组,其中所述指令组被配置为由所述处理器执行,以及(2)将至少一个操作数的值存储在所述处理器的至少一个操作数缓冲器中的装置;以及
用于基于与所述至少一个操作数相关联的至少一个控制位,锁定所述处理器的所述至少一个操作数缓冲器中的所述至少一个操作数的值,使得响应于完成所述指令组的执行,所述至少一个操作数不从所述处理器的所述至少一个操作数缓冲器中被清除的装置。
2.根据权利要求1所述的处理器,其中所述指令组被配置为由所述处理器原子地执行,并且其中完成所述指令组的所述执行包括:(1)将由所述指令组生成的所有结果存储在寄存器文件中;以及(2)将与所述指令组有关的所有存储库从加载/存储队列分派到存储器。
3.根据权利要求1所述的处理器,还包括用于响应于标志,解锁所述处理器的所述至少一个操作数缓冲器中的所述至少一个操作数的所述值的装置。
4.根据权利要求1所述的处理器,还包括用于响应于分支指令,解锁所述处理器的所述至少一个操作数缓冲器中的所述至少一个操作数的所述值的装置。
5.根据权利要求1所述的处理器,还包括用于响应于到如下指令组的跳转,解锁所述处理器的所述至少一个操作数缓冲器中的所述至少一个操作数的所述值的装置,所述指令组的功能是解锁所述处理器的所述至少一个操作数缓冲器中的所述至少一个操作数的所述值。
6.一种方法,包括:
取回指令组,所述指令组被配置成由处理器执行,所述指令组包括用于所述指令组的组头部,其中所述组头部包括字段,所述字段包括用于至少一个操作数的锁定信息;
将所述至少一个操作数的值存储在所述处理器的至少一个操作数缓冲器中;以及
基于所述锁定信息,锁定所述处理器的所述至少一个操作数缓冲器中的所述至少一个操作数的值,使得响应于完成所述指令组的执行,所述至少一个操作数不从所述处理器的所述至少一个操作数缓冲器中被清除。
7.根据权利要求6所述的方法,其中所述指令组被配置为由所述处理器原子地执行,并且其中完成所述指令组的所述执行包括:(1)将由所述指令组生成的所有结果存储在寄存器文件中;以及(2)将与所述指令组有关的所有存储库从加载/存储队列分派到存储器。
8.根据权利要求6所述的方法,其中锁定所述处理器的所述至少一个操作数缓冲器中的所述至少一个操作数的所述值包括:设置与所述至少一个操作数相关联的控制位的值。
9.根据权利要求6所述的方法,其中所述锁定信息包括所述组头部中的至少一个比特值,所述比特值被用于改变与所述处理器相关联的指令集架构中的指令的现有字段的解释。
10.根据权利要求6所述的方法,其中所述锁定信息包括对所述处理器的、所述组头部后跟附加锁定信息的指示。
11.根据权利要求6所述的方法,其中所述锁定信息包括在所述锁定步骤期间被锁定的所述至少一个操作数的所述值。
12.根据权利要求6所述的方法,其中所述锁定信息包括所述指令组中的指令的字段中的至少一个比特值。
13.根据权利要求6所述的方法,还包括:响应于指示解锁所述至少一个操作数的标志,解锁所述至少一个操作数的所述值。
14.根据权利要求6所述的方法,还包括:响应于分支指令,解锁所述至少一个操作数的所述值。
15.根据权利要求6所述的方法,还包括:响应于到如下指令组的跳转,解锁所述至少一个操作数的所述值,所述指令组的功能解锁所述至少一个操作数的所述值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/752,792 US10191747B2 (en) | 2015-06-26 | 2015-06-26 | Locking operand values for groups of instructions executed atomically |
US14/752,792 | 2015-06-26 | ||
PCT/US2016/038843 WO2016210021A1 (en) | 2015-06-26 | 2016-06-23 | Locking operand values for groups of instructions executed atomically |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107810486A true CN107810486A (zh) | 2018-03-16 |
CN107810486B CN107810486B (zh) | 2021-10-22 |
Family
ID=56297138
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680037789.5A Active CN107810486B (zh) | 2015-06-26 | 2016-06-23 | 锁定用于原子地执行的指令组的操作数的值 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10191747B2 (zh) |
EP (1) | EP3314397A1 (zh) |
CN (1) | CN107810486B (zh) |
WO (1) | WO2016210021A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110941449A (zh) * | 2019-11-15 | 2020-03-31 | 新华三半导体技术有限公司 | Cache块处理方法、装置及处理器芯片 |
CN111435310A (zh) * | 2019-01-11 | 2020-07-21 | 三星电子株式会社 | 处理单元和在处理单元中处理指令的方法 |
CN112711780A (zh) * | 2019-10-25 | 2021-04-27 | 中车株洲电力机车研究所有限公司 | 一种存储器解锁方法、系统、存储介质以及计算机设备 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US11188266B2 (en) * | 2020-04-20 | 2021-11-30 | Netapp Inc. | Write ordering for persistent memory |
WO2022120790A1 (en) * | 2020-12-11 | 2022-06-16 | Intel Corporation | Methods and apparatus to mitigate locks in real-time computing environments |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6058438A (en) * | 1998-02-06 | 2000-05-02 | Hewlett-Packard Company | Method and apparatus for performing high speed data transfers between a host memory and a geometry accelerator of a graphics machine |
US6615340B1 (en) * | 2000-03-22 | 2003-09-02 | Wilmot, Ii Richard Byron | Extended operand management indicator structure and method |
CN1716186A (zh) * | 2004-06-30 | 2006-01-04 | 英特尔公司 | 使用睡眠-唤醒机制的比较和交换操作 |
CN101031877A (zh) * | 2004-09-23 | 2007-09-05 | 英特尔公司 | 线程活锁单元 |
US7296259B2 (en) * | 2002-09-11 | 2007-11-13 | Agere Systems Inc. | Processor system with cache-based software breakpoints |
US20080271033A1 (en) * | 2007-04-27 | 2008-10-30 | Kabushiki Kaisha Toshiba | Information processor and information processing system |
US20100218022A1 (en) * | 2009-02-23 | 2010-08-26 | Nec Electronics Corporation | Processor system and operation mode switching method for processor system |
CN102754069A (zh) * | 2010-02-18 | 2012-10-24 | 国际商业机器公司 | 加载/存储分离设施及其指令 |
CN104239047A (zh) * | 2014-10-13 | 2014-12-24 | 深圳市神州海纳科技有限公司 | 一种信息采集的方法及其装置 |
CN104335183A (zh) * | 2012-06-29 | 2015-02-04 | 英特尔公司 | 用于测试事务性执行状态的指令和逻辑 |
CN104350486A (zh) * | 2012-06-28 | 2015-02-11 | 英特尔公司 | 用于虚拟机互操作性的方法和装置 |
CN104637288A (zh) * | 2014-12-31 | 2015-05-20 | 小米科技有限责任公司 | 指令组确定方法和装置 |
Family Cites Families (235)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5142631A (en) | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | System for queuing individual read or write mask and generating respective composite mask for controlling access to general purpose register |
DE69132675T2 (de) | 1990-04-06 | 2002-06-13 | Nec Corp., Tokio/Tokyo | Parallelfliessband-Befehlsverarbeitungssystem für sehr lange Befehlswörter |
US5551033A (en) | 1991-05-17 | 1996-08-27 | Zenith Data Systems Corporation | Apparatus for maintaining one interrupt mask register in conformity with another in a manner invisible to an executing program |
US5363495A (en) | 1991-08-26 | 1994-11-08 | International Business Machines Corporation | Data processing system with multiple execution units capable of executing instructions out of sequence |
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 |
EP0636256B1 (en) | 1992-03-31 | 1997-06-04 | Seiko Epson Corporation | Superscalar risc processor instruction scheduling |
DE69327688T2 (de) | 1992-08-12 | 2000-09-07 | Advanced Micro Devices, Inc. | Befehlsdecoder |
US6735685B1 (en) | 1992-09-29 | 2004-05-11 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
US5628021A (en) | 1992-12-31 | 1997-05-06 | Seiko Epson Corporation | System and method for assigning tags to control instruction processing in a superscalar processor |
US5999737A (en) | 1994-03-01 | 1999-12-07 | Digital Equipment Corporation | Link time optimization via dead code elimination, code motion, code partitioning, code grouping, loop analysis with code motion, loop invariant analysis and active variable to register analysis |
AU3412295A (en) | 1994-09-01 | 1996-03-22 | Gary L. Mcalpine | A multi-port memory system including read and write buffer interfaces |
US5666506A (en) | 1994-10-24 | 1997-09-09 | International Business Machines Corporation | Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle |
US5933642A (en) | 1995-04-17 | 1999-08-03 | Ricoh Corporation | Compiling system and method for reconfigurable computing |
US6112019A (en) | 1995-06-12 | 2000-08-29 | Georgia Tech Research Corp. | Distributed instruction queue |
US5790822A (en) | 1996-03-21 | 1998-08-04 | Intel Corporation | Method and apparatus for providing a re-ordered instruction cache in a pipelined microprocessor |
US5920724A (en) | 1996-03-28 | 1999-07-06 | Intel Corporation | Software pipelining a hyperblock loop |
US5799167A (en) | 1996-05-15 | 1998-08-25 | Hewlett-Packard Company | Instruction nullification system and method for a processor that executes instructions out of order |
US5796997A (en) | 1996-05-15 | 1998-08-18 | Hewlett-Packard Company | Fast nullify system and method for transforming a nullify function into a select function |
US5903750A (en) | 1996-11-20 | 1999-05-11 | Institute For The Development Of Emerging Architectures, L.L.P. | Dynamic branch prediction for branch instructions with multiple targets |
US6542998B1 (en) | 1997-02-08 | 2003-04-01 | Pact Gmbh | Method of self-synchronization of configurable elements of a programmable module |
US5845102A (en) | 1997-03-03 | 1998-12-01 | Advanced Micro Devices, Inc. | Determining microcode entry points and prefix bytes using a parallel logic technique |
US6286135B1 (en) | 1997-03-26 | 2001-09-04 | Hewlett-Packard Company | Cost-sensitive SSA-based strength reduction algorithm for a machine with predication support and segmented addresses |
US5983337A (en) | 1997-06-12 | 1999-11-09 | Advanced Micro Devices, Inc. | Apparatus and method for patching an instruction by providing a substitute instruction or instructions from an external memory responsive to detecting an opcode of the instruction |
US5845103A (en) | 1997-06-13 | 1998-12-01 | Wisconsin Alumni Research Foundation | Computer with dynamic instruction reuse |
US6044222A (en) | 1997-06-23 | 2000-03-28 | International Business Machines Corporation | System, method, and program product for loop instruction scheduling hardware lookahead |
US5943501A (en) | 1997-06-27 | 1999-08-24 | Wisconsin Alumni Research Foundation | Multiple processor, distributed memory computer with out-of-order processing |
US5930158A (en) | 1997-07-02 | 1999-07-27 | Creative Technology, Ltd | Processor with instruction set for audio effects |
US7272703B2 (en) | 1997-08-01 | 2007-09-18 | Micron Technology, Inc. | Program controlled embedded-DRAM-DSP architecture and methods |
CN2306094Y (zh) | 1997-08-19 | 1999-02-03 | 苏逸隆 | 铝水保温炉 |
US6185675B1 (en) | 1997-10-24 | 2001-02-06 | Advanced Micro Devices, Inc. | Basic block oriented trace cache utilizing a basic block sequence buffer to indicate program order of cached basic blocks |
US6182210B1 (en) | 1997-12-16 | 2001-01-30 | Intel Corporation | Processor having multiple program counters and trace buffers outside an execution pipeline |
US6164841A (en) | 1998-05-04 | 2000-12-26 | Hewlett-Packard Company | Method, apparatus, and product for dynamic software code translation system |
US6988183B1 (en) | 1998-06-26 | 2006-01-17 | Derek Chi-Lan Wong | Methods for increasing instruction-level parallelism in microprocessors and digital system |
US6212622B1 (en) | 1998-08-24 | 2001-04-03 | Advanced Micro Devices, Inc. | Mechanism for load block on store address generation |
US6564940B2 (en) | 1998-09-30 | 2003-05-20 | The Procter & Gamble Company | Electric toothbrush |
EP0992894A1 (en) | 1998-10-06 | 2000-04-12 | Texas Instruments Inc. | Apparatus and method for loop execution |
US6275919B1 (en) | 1998-10-15 | 2001-08-14 | Creative Technology Ltd. | Memory storage and retrieval with multiple hashing functions |
US7529907B2 (en) | 1998-12-16 | 2009-05-05 | Mips Technologies, Inc. | Method and apparatus for improved computer load and store operations |
JP3565314B2 (ja) | 1998-12-17 | 2004-09-15 | 富士通株式会社 | 分岐命令実行制御装置 |
US6477683B1 (en) | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
GB2348305A (en) | 1999-03-24 | 2000-09-27 | Int Computers Ltd | Instruction execution mechanism |
US6453344B1 (en) | 1999-03-31 | 2002-09-17 | Amdahl Corporation | Multiprocessor servers with controlled numbered of CPUs |
US6438671B1 (en) | 1999-07-01 | 2002-08-20 | International Business Machines Corporation | Generating partition corresponding real address in partitioned mode supporting system |
US6523110B1 (en) | 1999-07-23 | 2003-02-18 | International Business Machines Corporation | Decoupled fetch-execute engine with static branch prediction support |
US6513109B1 (en) | 1999-08-31 | 2003-01-28 | International Business Machines Corporation | Method and apparatus for implementing execution predicates in a computer processing system |
JP2001092662A (ja) | 1999-09-22 | 2001-04-06 | Toshiba Corp | プロセッサコア及びこれを用いたプロセッサ |
US6986137B1 (en) | 1999-09-28 | 2006-01-10 | International Business Machines Corporation | Method, system and program products for managing logical processors of a computing environment |
US7051188B1 (en) | 1999-09-28 | 2006-05-23 | International Business Machines Corporation | Dynamically redistributing shareable resources of a computing environment to manage the workload of that environment |
US6651125B2 (en) | 1999-09-28 | 2003-11-18 | International Business Machines Corporation | Processing channel subsystem pending I/O work queues based on priorities |
AU7622400A (en) | 1999-10-01 | 2001-05-10 | Sun Microsystems, Inc. | A method for precise trap handling in case of speculative and out-of-order loads |
EP1102163A3 (en) | 1999-11-15 | 2005-06-29 | Texas Instruments Incorporated | Microprocessor with improved instruction set architecture |
US6779100B1 (en) | 1999-12-17 | 2004-08-17 | Hewlett-Packard Development Company, L.P. | Method and device for address translation for compressed instructions |
US6732203B2 (en) | 2000-01-31 | 2004-05-04 | Intel Corporation | Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus |
US6918032B1 (en) | 2000-07-06 | 2005-07-12 | Intel Corporation | Hardware predication for conditional instruction path branching |
US6934254B2 (en) | 2001-01-18 | 2005-08-23 | Motorola, Inc. | Method and apparatus for dynamically allocating resources in a communication system |
US7032217B2 (en) | 2001-03-26 | 2006-04-18 | Intel Corporation | Method and system for collaborative profiling for continuous detection of profile phase transitions |
US6957435B2 (en) | 2001-04-19 | 2005-10-18 | International Business Machines Corporation | Method and apparatus for allocating processor resources in a logically partitioned computer system |
US7453899B1 (en) | 2001-05-08 | 2008-11-18 | Lsi Corporation | Field programmable network application specific integrated circuit and a method of operation thereof |
US6965982B2 (en) | 2001-06-29 | 2005-11-15 | International Business Machines Corporation | Multithreaded processor efficiency by pre-fetching instructions for a scheduled thread |
US7002956B2 (en) | 2001-07-05 | 2006-02-21 | International Business Machines Corporation | Network addressing method and system for localizing access to network resources in a computer network |
US7353287B2 (en) | 2001-09-26 | 2008-04-01 | Adobe Systems Incorporated | Marked foreign data blocks |
AU2002363142A1 (en) | 2001-10-31 | 2003-05-12 | Doug Burger | A scalable processing architecture |
EP1313012A1 (en) | 2001-11-15 | 2003-05-21 | Texas Instruments France | Java DSP acceleration by byte-code optimization |
US7228402B2 (en) | 2002-01-02 | 2007-06-05 | Intel Corporation | Predicate register file write by an instruction with a pending instruction having data dependency |
US7055021B2 (en) | 2002-02-05 | 2006-05-30 | Sun Microsystems, Inc. | Out-of-order processor that reduces mis-speculation using a replay scoreboard |
US6877059B2 (en) | 2002-03-29 | 2005-04-05 | Emc Corporation | Communications architecture for a high throughput storage processor |
EP1495407A1 (en) | 2002-04-08 | 2005-01-12 | The University Of Texas System | Non-uniform cache apparatus, systems, and methods |
WO2004001584A2 (en) | 2002-06-24 | 2003-12-31 | Ante Vista Gmbh | A method for executing structured symbolic machine code on a microprocessor |
JP3804941B2 (ja) | 2002-06-28 | 2006-08-02 | 富士通株式会社 | 命令フェッチ制御装置 |
US6934828B2 (en) | 2002-09-17 | 2005-08-23 | Intel Corporation | Decoupling floating point linear address |
US7299458B2 (en) | 2002-10-31 | 2007-11-20 | Src Computers, Inc. | System and method for converting control flow graph representations to control-dataflow graph representations |
US20040123078A1 (en) * | 2002-12-24 | 2004-06-24 | Hum Herbert H | Method and apparatus for processing a load-lock instruction using a scoreboard mechanism |
US20040139299A1 (en) | 2003-01-14 | 2004-07-15 | International Business Machines Corporation | Operand forwarding in a superscalar processor |
US7210127B1 (en) | 2003-04-03 | 2007-04-24 | Sun Microsystems | Methods and apparatus for executing instructions in parallel |
US6996698B2 (en) | 2003-05-12 | 2006-02-07 | International Business Machines Corporation | Blocking processing restrictions based on addresses |
US7284100B2 (en) | 2003-05-12 | 2007-10-16 | International Business Machines Corporation | Invalidating storage, clearing buffer entries, and an instruction therefor |
US7207038B2 (en) | 2003-08-29 | 2007-04-17 | Nokia Corporation | Constructing control flows graphs of binary executable programs at post-link time |
US7310722B2 (en) | 2003-12-18 | 2007-12-18 | Nvidia Corporation | Across-thread out of order instruction dispatch in a multithreaded graphics processor |
US8607209B2 (en) | 2004-02-04 | 2013-12-10 | Bluerisc Inc. | Energy-focused compiler-assisted branch prediction |
EP1731998A1 (en) | 2004-03-29 | 2006-12-13 | Kyoto University | Data processing device, data processing program, and recording medium containing the data processing program |
US7392524B2 (en) | 2004-04-06 | 2008-06-24 | International Business Machines Corporation | Method, system, and storage medium for managing computer processing functions |
US7334143B2 (en) | 2004-04-19 | 2008-02-19 | Hewlett-Packard Development Company, L.P. | Computer power conservation apparatus and method that enables less speculative execution during light processor load based on a branch confidence threshold value |
US7571284B1 (en) | 2004-06-30 | 2009-08-04 | Sun Microsystems, Inc. | Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor |
US7685354B1 (en) | 2004-06-30 | 2010-03-23 | Sun Microsystems, Inc. | Multiple-core processor with flexible mapping of processor cores to cache banks |
US7873776B2 (en) | 2004-06-30 | 2011-01-18 | Oracle America, Inc. | Multiple-core processor with support for multiple virtual processors |
US8230252B2 (en) | 2004-07-20 | 2012-07-24 | Hewlett-Packard Development Company, L.P. | Time of day response |
US8166282B2 (en) | 2004-07-21 | 2012-04-24 | Intel Corporation | Multi-version register file for multithreading processors with live-in precomputation |
US7606995B2 (en) | 2004-07-23 | 2009-10-20 | Hewlett-Packard Development Company, L.P. | Allocating resources to partitions in a partitionable computer |
US7747992B2 (en) | 2004-08-23 | 2010-06-29 | Intel Corporation | Methods and apparatus for creating software basic block layouts |
JP4982971B2 (ja) | 2004-09-29 | 2012-07-25 | ソニー株式会社 | 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム |
JP4345630B2 (ja) | 2004-09-29 | 2009-10-14 | ソニー株式会社 | 情報処理装置、割り込み処理制御方法、並びにコンピュータ・プログラム |
US7552318B2 (en) | 2004-12-17 | 2009-06-23 | International Business Machines Corporation | Branch lookahead prefetch for microprocessors |
US8756605B2 (en) | 2004-12-17 | 2014-06-17 | Oracle America, Inc. | Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline |
US8151092B2 (en) | 2005-01-12 | 2012-04-03 | International Business Machines Corporation | Control signal memoization in a multiple instruction issue microprocessor |
US7380038B2 (en) | 2005-02-04 | 2008-05-27 | Microsoft Corporation | Priority registers for biasing access to shared resources |
US7853777B2 (en) | 2005-02-04 | 2010-12-14 | Mips Technologies, Inc. | Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions |
US7805574B2 (en) | 2005-02-09 | 2010-09-28 | International Business Machines Corporation | Method and cache system with soft I-MRU member protection scheme during make MRU allocation |
US7152155B2 (en) | 2005-02-18 | 2006-12-19 | Qualcomm Incorporated | System and method of correcting a branch misprediction |
US7526633B2 (en) | 2005-03-23 | 2009-04-28 | Qualcomm Incorporated | Method and system for encoding variable length packets with variable instruction sizes |
US7673119B2 (en) | 2005-05-13 | 2010-03-02 | Texas Instruments Incorporated | VLIW optional fetch packet header extends instruction set space |
US7581082B2 (en) | 2005-05-13 | 2009-08-25 | Texas Instruments Incorporated | Software source transfer selects instruction word sizes |
JP4322232B2 (ja) | 2005-06-14 | 2009-08-26 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム |
US7779213B2 (en) | 2005-08-29 | 2010-08-17 | The Invention Science Fund I, Inc | Optimization of instruction group execution through hardware resource management policies |
US7437518B2 (en) | 2005-09-07 | 2008-10-14 | Intel Corporation | Hiding conflict, coherence completion and transaction ID elements of a coherence protocol |
US7412353B2 (en) | 2005-09-28 | 2008-08-12 | Intel Corporation | Reliable computing with a many-core processor |
US7490224B2 (en) | 2005-10-07 | 2009-02-10 | International Business Machines Corporation | Time-of-life counter design for handling instruction flushes from a queue |
JP4720436B2 (ja) | 2005-11-01 | 2011-07-13 | 株式会社日立製作所 | リコンフィギュラブルプロセッサまたは装置 |
US7716577B2 (en) | 2005-11-14 | 2010-05-11 | Oracle America, Inc. | Method and apparatus for hardware XML acceleration |
KR100806274B1 (ko) | 2005-12-06 | 2008-02-22 | 한국전자통신연구원 | 멀티 쓰레디드 프로세서 기반의 병렬 시스템을 위한 적응형실행 방법 |
US7475225B2 (en) | 2005-12-30 | 2009-01-06 | Intel Corporation | Method and apparatus for microarchitecture partitioning of execution clusters |
US7565654B2 (en) | 2006-01-10 | 2009-07-21 | National Instruments Corporation | Programmatic control of tasks in a programmable logic controller |
JP4923240B2 (ja) | 2006-01-17 | 2012-04-25 | 国立大学法人東京工業大学 | プログラム処理装置、並列処理プログラム、プログラム処理方法、並列処理コンパイラ、並列処理コンパイラを格納した記録媒体およびマルチプロセッサシステム |
US8510596B1 (en) | 2006-02-09 | 2013-08-13 | Virsec Systems, Inc. | System and methods for run time detection and correction of memory corruption |
US7350027B2 (en) | 2006-02-10 | 2008-03-25 | International Business Machines Corporation | Architectural support for thread level speculative execution |
US8266413B2 (en) | 2006-03-14 | 2012-09-11 | The Board Of Trustees Of The University Of Illinois | Processor architecture for multipass processing of instructions downstream of a stalled instruction |
US7802073B1 (en) | 2006-03-29 | 2010-09-21 | Oracle America, Inc. | Virtual core management |
US20070239965A1 (en) | 2006-03-31 | 2007-10-11 | Saul Lewites | Inter-partition communication |
US8010953B2 (en) | 2006-04-04 | 2011-08-30 | International Business Machines Corporation | Method for compiling scalar code for a single instruction multiple data (SIMD) execution engine |
EP2477109B1 (en) | 2006-04-12 | 2016-07-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
JP4849606B2 (ja) | 2006-04-28 | 2012-01-11 | 株式会社日立製作所 | 制御フロー誤り検出方法、データ処理装置、及びコンパイラ |
US7958396B2 (en) | 2006-05-19 | 2011-06-07 | Microsoft Corporation | Watchdog processors in multicore systems |
US8473724B1 (en) | 2006-07-09 | 2013-06-25 | Oracle America, Inc. | Controlling operation of a processor according to execution mode of an instruction sequence |
US7461241B2 (en) | 2006-07-31 | 2008-12-02 | International Business Machines Corporation | Concurrent physical processor reassignment method |
US8032734B2 (en) | 2006-09-06 | 2011-10-04 | Mips Technologies, Inc. | Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor |
EP2523101B1 (en) | 2006-11-14 | 2014-06-04 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
US8028131B2 (en) | 2006-11-29 | 2011-09-27 | Intel Corporation | System and method for aggregating core-cache clusters in order to produce multi-core processors |
US7624254B2 (en) | 2007-01-24 | 2009-11-24 | Qualcomm Incorporated | Segmented pipeline flushing for mispredicted branches |
JP4957729B2 (ja) | 2007-01-25 | 2012-06-20 | 日本電気株式会社 | プログラム並列化方法、プログラム並列化装置及びプログラム |
US8291400B1 (en) | 2007-02-07 | 2012-10-16 | Tilera Corporation | Communication scheduling for parallel processing architectures |
US7719532B2 (en) | 2007-02-09 | 2010-05-18 | International Business Machines Corporation | Efficient and flexible data organization for acceleration data structure nodes |
JP4339371B2 (ja) | 2007-03-22 | 2009-10-07 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置および情報処理方法 |
US20080235493A1 (en) | 2007-03-23 | 2008-09-25 | Qualcomm Incorporated | Instruction communication techniques for multi-processor system |
US20080250227A1 (en) | 2007-04-04 | 2008-10-09 | Linderman Michael D | General Purpose Multiprocessor Programming Apparatus And Method |
US7853950B2 (en) | 2007-04-05 | 2010-12-14 | International Business Machines Corporarion | Executing multiple threads in a processor |
US8161476B2 (en) | 2007-07-04 | 2012-04-17 | International Business Machines Corporation | Processor exclusivity in a partitioned system |
US8447911B2 (en) | 2007-07-05 | 2013-05-21 | Board Of Regents, University Of Texas System | Unordered load/store queue |
US8180997B2 (en) | 2007-07-05 | 2012-05-15 | Board Of Regents, University Of Texas System | Dynamically composing processor cores to form logical processors |
CN101344843B (zh) | 2007-07-10 | 2012-11-21 | 北京简约纳电子有限公司 | 一种指令级并行处理方法 |
JP2009026106A (ja) | 2007-07-20 | 2009-02-05 | Oki Electric Ind Co Ltd | 命令コード圧縮方法と命令フェッチ回路 |
US8281308B1 (en) | 2007-07-23 | 2012-10-02 | Oracle America, Inc. | Virtual core remapping based on temperature |
US9710384B2 (en) | 2008-01-04 | 2017-07-18 | Micron Technology, Inc. | Microprocessor architecture having alternative memory access paths |
US8006070B2 (en) | 2007-12-05 | 2011-08-23 | International Business Machines Corporation | Method and apparatus for inhibiting fetch throttling when a processor encounters a low confidence branch instruction in an information handling system |
US9529592B2 (en) | 2007-12-27 | 2016-12-27 | Intel Corporation | Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation |
US7877586B2 (en) | 2008-02-01 | 2011-01-25 | International Business Machines Corporation | Branch target address cache selectively applying a delayed hit |
US7885967B2 (en) | 2008-05-30 | 2011-02-08 | Red Hat, Inc. | Management of large dynamic tables |
US8321850B2 (en) | 2008-06-06 | 2012-11-27 | Vmware, Inc. | Sharing and persisting code caches |
US8458443B2 (en) | 2008-09-08 | 2013-06-04 | Smsc Holdings S.A.R.L. | VLIW processor with execution units executing instructions from instruction queues and accessing data queues to read and write operands |
US9152427B2 (en) | 2008-10-15 | 2015-10-06 | Hyperion Core, Inc. | Instruction issue to array of arithmetic cells coupled to load/store cells with associated registers as extended register file |
US8612698B2 (en) | 2008-10-31 | 2013-12-17 | Intel Corporation | Replacement policy for hot code detection |
US20100146209A1 (en) | 2008-12-05 | 2010-06-10 | Intellectual Ventures Management, Llc | Method and apparatus for combining independent data caches |
US8127119B2 (en) | 2008-12-05 | 2012-02-28 | The Board Of Regents Of The University Of Texas System | Control-flow prediction using multiple independent predictors |
US8380964B2 (en) | 2009-04-03 | 2013-02-19 | International Business Machines Corporation | Processor including age tracking of issue queue instructions |
US9489207B2 (en) | 2009-04-14 | 2016-11-08 | International Business Machines Corporation | Processor and method for partially flushing a dispatched instruction group including a mispredicted branch |
US8214831B2 (en) | 2009-05-05 | 2012-07-03 | International Business Machines Corporation | Runtime dependence-aware scheduling using assist thread |
US20100325395A1 (en) | 2009-06-19 | 2010-12-23 | Doug Burger | Dependence prediction in a memory system |
US8533436B2 (en) | 2009-06-26 | 2013-09-10 | Intel Corporation | Adaptively handling remote atomic execution based upon contention prediction |
US8433885B2 (en) | 2009-09-09 | 2013-04-30 | Board Of Regents Of The University Of Texas System | Method, system and computer-accessible medium for providing a distributed predicate prediction |
US10698859B2 (en) | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
US20110078424A1 (en) | 2009-09-30 | 2011-03-31 | International Business Machines Corporation | Optimizing program code using branch elimination |
US8464002B2 (en) | 2009-10-14 | 2013-06-11 | Board Of Regents Of The University Of Texas System | Burst-based cache dead block prediction |
WO2011067896A1 (en) | 2009-12-02 | 2011-06-09 | Mush-A Co., Ltd. | Data processing apparatus, data processing system, packet, recording medium, storage device, and data processing method |
JP5057256B2 (ja) | 2009-12-02 | 2012-10-24 | 株式会社Mush−A | データ処理装置、データ処理システムおよびデータ処理方法 |
CN102096579B (zh) | 2009-12-11 | 2013-10-16 | 陈罡 | 一种嵌入式自适应模糊微处理器的组成与结构 |
EP2519876A1 (en) | 2009-12-28 | 2012-11-07 | Hyperion Core, Inc. | Optimisation of loops and data flow sections |
GB201001621D0 (en) | 2010-02-01 | 2010-03-17 | Univ Catholique Louvain | A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms |
US8434074B2 (en) | 2010-02-24 | 2013-04-30 | Intel Corporation | Register allocation with SIMD architecture using write masks |
US8667260B2 (en) | 2010-03-05 | 2014-03-04 | International Business Machines Corporation | Building approximate data dependences with a moving window |
JP2011209904A (ja) | 2010-03-29 | 2011-10-20 | Sony Corp | 命令フェッチ装置、および、プロセッサ |
KR101664108B1 (ko) | 2010-04-13 | 2016-10-11 | 삼성전자주식회사 | 멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법 |
US8290994B2 (en) | 2010-05-05 | 2012-10-16 | International Business Machines Corporation | Obtaining file system view in block-level data storage systems |
US8201024B2 (en) | 2010-05-17 | 2012-06-12 | Microsoft Corporation | Managing memory faults |
US8555038B2 (en) | 2010-05-28 | 2013-10-08 | Oracle International Corporation | Processor and method providing instruction support for instructions that utilize multiple register windows |
KR101731752B1 (ko) | 2010-06-18 | 2017-04-28 | 보드 오브 리전츠 더 유니버시티 오브 텍사스 시스템 | 결합된 분기 타깃 및 프레디킷 예측 |
US20120030451A1 (en) | 2010-07-28 | 2012-02-02 | Broadcom Corporation | Parallel and long adaptive instruction set architecture |
US8904115B2 (en) | 2010-09-28 | 2014-12-02 | Texas Instruments Incorporated | Cache with multiple access pipelines |
US9836304B2 (en) | 2010-11-15 | 2017-12-05 | Advanced Micro Devices, Inc. | Cumulative confidence fetch throttling |
US9552206B2 (en) | 2010-11-18 | 2017-01-24 | Texas Instruments Incorporated | Integrated circuit with control node circuitry and processing circuitry |
US8589892B2 (en) | 2010-11-21 | 2013-11-19 | International Business Machines Corporation | Verification of speculative execution |
US8612726B2 (en) | 2010-12-07 | 2013-12-17 | King Fahd University Of Petroleum And Minerals | Multi-cycle programmable processor with FSM implemented controller selectively altering functional units datapaths based on instruction type |
TWI520070B (zh) | 2011-03-25 | 2016-02-01 | 軟體機器公司 | 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的記憶體片段 |
EP2689330B1 (en) | 2011-03-25 | 2022-12-21 | Intel Corporation | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US8909941B1 (en) | 2011-03-31 | 2014-12-09 | Xilinx, Inc. | Programmable integrated circuit and a method of enabling the detection of tampering with data provided to a programmable integrated circuit |
WO2012136766A1 (en) | 2011-04-06 | 2012-10-11 | Telefonaktiebolaget L M Ericsson (Publ) | Multi-core processors |
US20130024676A1 (en) | 2011-07-19 | 2013-01-24 | Glew Andrew F | Control flow integrity |
CN102306094B (zh) | 2011-08-16 | 2014-03-26 | 北京北大众志微系统科技有限责任公司 | 实现现代处理器间接转移预测的装置及方法 |
US9009448B2 (en) | 2011-08-17 | 2015-04-14 | Intel Corporation | Multithreaded DFA architecture for finding rules match by concurrently performing at varying input stream positions and sorting result tokens |
US9697002B2 (en) * | 2011-10-03 | 2017-07-04 | International Business Machines Corporation | Computer instructions for activating and deactivating operands |
CN104011705A (zh) | 2011-12-01 | 2014-08-27 | 新加坡国立大学 | 多形异构性多核架构 |
US8639882B2 (en) * | 2011-12-14 | 2014-01-28 | Nvidia Corporation | Methods and apparatus for source operand collector caching |
CN104040487B (zh) | 2011-12-23 | 2017-10-13 | 英特尔公司 | 用于合并掩码模式的指令 |
US9304776B2 (en) | 2012-01-31 | 2016-04-05 | Oracle International Corporation | System and method for mitigating the impact of branch misprediction when exiting spin loops |
WO2013156825A1 (en) | 2012-04-20 | 2013-10-24 | Freescale Semiconductor, Inc. | A computer system and a method for generating an optimized program code |
US8930678B2 (en) | 2012-04-26 | 2015-01-06 | Intel Corporation | Instruction and logic to length decode X86 instructions |
US8880638B2 (en) | 2012-06-18 | 2014-11-04 | International Business Machines Corporation | Distributed image cache for servicing virtual resource requests in the cloud |
KR101964927B1 (ko) | 2012-07-17 | 2019-04-03 | 삼성전자 주식회사 | 캐싱 프록시 방법 및 장치 |
US9063721B2 (en) | 2012-09-14 | 2015-06-23 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US9400650B2 (en) | 2012-09-28 | 2016-07-26 | Intel Corporation | Read and write masks update instruction for vectorization of recursive computations over interdependent data |
US9710276B2 (en) | 2012-11-09 | 2017-07-18 | Advanced Micro Devices, Inc. | Execution of instruction loops using an instruction buffer |
US8930760B2 (en) | 2012-12-17 | 2015-01-06 | International Business Machines Corporation | Validating cache coherency protocol within a processor |
US9619229B2 (en) | 2012-12-27 | 2017-04-11 | Intel Corporation | Collapsing of multiple nested loops, methods and instructions |
US9361111B2 (en) | 2013-01-09 | 2016-06-07 | Arm Limited | Tracking speculative execution of instructions for a register renaming data store |
US10223124B2 (en) | 2013-01-11 | 2019-03-05 | Advanced Micro Devices, Inc. | Thread selection at a processor based on branch prediction confidence |
US9886277B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources |
US9471318B2 (en) | 2013-03-15 | 2016-10-18 | International Business Machines Corporation | System management and instruction counting |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US9632825B2 (en) | 2013-03-15 | 2017-04-25 | Intel Corporation | Method and apparatus for efficient scheduling for asymmetrical execution units |
US9195606B2 (en) | 2013-03-15 | 2015-11-24 | Intel Corporation | Dead block predictors for cooperative execution in the last level cache |
RU2614583C2 (ru) | 2013-03-15 | 2017-03-28 | Интел Корпорейшн | Определение профиля пути, используя комбинацию аппаратных и программных средств |
US20140281622A1 (en) | 2013-03-15 | 2014-09-18 | Mahesh Wagh | Method, apparatus, and system for improving resume times for root ports and root port integrated endpoints |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9880842B2 (en) | 2013-03-15 | 2018-01-30 | Intel Corporation | Using control flow data structures to direct and track instruction execution |
JP6086230B2 (ja) | 2013-04-01 | 2017-03-01 | 日本電気株式会社 | 中央演算装置、情報処理装置、および仮想コア内レジスタ値取得方法 |
WO2014189510A1 (en) | 2013-05-23 | 2014-11-27 | Intel Corporation | Techniques for detecting return-oriented programming |
US9792252B2 (en) | 2013-05-31 | 2017-10-17 | Microsoft Technology Licensing, Llc | Incorporating a spatial array into one or more programmable processor cores |
GB2515076B (en) | 2013-06-13 | 2020-07-15 | Advanced Risc Mach Ltd | A data processing apparatus and method for handling retrieval of instructions from an instruction cache |
US10372527B2 (en) | 2013-07-15 | 2019-08-06 | Intel Corporation | Method of encoding data |
US9507404B2 (en) | 2013-08-28 | 2016-11-29 | Via Technologies, Inc. | Single core wakeup multi-core synchronization mechanism |
US20150074355A1 (en) | 2013-09-12 | 2015-03-12 | Lsi Corporation | Efficient caching of file system journals |
US9547496B2 (en) | 2013-11-07 | 2017-01-17 | Microsoft Technology Licensing, Llc | Energy efficient multi-modal instruction issue |
US9448936B2 (en) | 2014-01-13 | 2016-09-20 | Apple Inc. | Concurrent store and load operations |
CN104310225A (zh) | 2014-08-19 | 2015-01-28 | 中国十七冶集团有限公司 | 建筑起重机械安全控制装置 |
US20160055004A1 (en) | 2014-08-21 | 2016-02-25 | Edward T. Grochowski | Method and apparatus for non-speculative fetch and execution of control-dependent blocks |
US9569613B2 (en) | 2014-12-23 | 2017-02-14 | Intel Corporation | Techniques for enforcing control flow integrity using binary translation |
US20160274915A1 (en) * | 2015-03-20 | 2016-09-22 | Qualcomm Incorporated | PROVIDING LOWER-OVERHEAD MANAGEMENT OF DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS (OOPs), AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA |
US20160328237A1 (en) | 2015-05-07 | 2016-11-10 | Via Alliance Semiconductor Co., Ltd. | System and method to reduce load-store collision penalty in speculative out of order engine |
US11755484B2 (en) | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
US20160378488A1 (en) | 2015-06-26 | 2016-12-29 | Microsoft Technology Licensing, Llc | Access to target address |
US9720693B2 (en) | 2015-06-26 | 2017-08-01 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
US20160378491A1 (en) | 2015-06-26 | 2016-12-29 | Microsoft Technology Licensing, Llc | Determination of target location for transfer of processor control |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US9940136B2 (en) | 2015-06-26 | 2018-04-10 | Microsoft Technology Licensing, Llc | Reuse of decoded instructions |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US20170083343A1 (en) | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Out of order commit |
-
2015
- 2015-06-26 US US14/752,792 patent/US10191747B2/en active Active
-
2016
- 2016-06-23 WO PCT/US2016/038843 patent/WO2016210021A1/en active Application Filing
- 2016-06-23 EP EP16734128.8A patent/EP3314397A1/en not_active Withdrawn
- 2016-06-23 CN CN201680037789.5A patent/CN107810486B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6058438A (en) * | 1998-02-06 | 2000-05-02 | Hewlett-Packard Company | Method and apparatus for performing high speed data transfers between a host memory and a geometry accelerator of a graphics machine |
US6615340B1 (en) * | 2000-03-22 | 2003-09-02 | Wilmot, Ii Richard Byron | Extended operand management indicator structure and method |
US7296259B2 (en) * | 2002-09-11 | 2007-11-13 | Agere Systems Inc. | Processor system with cache-based software breakpoints |
CN1716186A (zh) * | 2004-06-30 | 2006-01-04 | 英特尔公司 | 使用睡眠-唤醒机制的比较和交换操作 |
CN101031877A (zh) * | 2004-09-23 | 2007-09-05 | 英特尔公司 | 线程活锁单元 |
US20080271033A1 (en) * | 2007-04-27 | 2008-10-30 | Kabushiki Kaisha Toshiba | Information processor and information processing system |
US20100218022A1 (en) * | 2009-02-23 | 2010-08-26 | Nec Electronics Corporation | Processor system and operation mode switching method for processor system |
CN102754069A (zh) * | 2010-02-18 | 2012-10-24 | 国际商业机器公司 | 加载/存储分离设施及其指令 |
CN104350486A (zh) * | 2012-06-28 | 2015-02-11 | 英特尔公司 | 用于虚拟机互操作性的方法和装置 |
CN104335183A (zh) * | 2012-06-29 | 2015-02-04 | 英特尔公司 | 用于测试事务性执行状态的指令和逻辑 |
CN104239047A (zh) * | 2014-10-13 | 2014-12-24 | 深圳市神州海纳科技有限公司 | 一种信息采集的方法及其装置 |
CN104637288A (zh) * | 2014-12-31 | 2015-05-20 | 小米科技有限责任公司 | 指令组确定方法和装置 |
Non-Patent Citations (1)
Title |
---|
K.SANKARALINGAM: "Exploiting ILP, TLP, and DLP with the polymorphous trips architecture", 《IEEE MICRO》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111435310A (zh) * | 2019-01-11 | 2020-07-21 | 三星电子株式会社 | 处理单元和在处理单元中处理指令的方法 |
CN111435310B (zh) * | 2019-01-11 | 2024-05-03 | 三星电子株式会社 | 处理单元和在处理单元中处理指令的方法 |
CN112711780A (zh) * | 2019-10-25 | 2021-04-27 | 中车株洲电力机车研究所有限公司 | 一种存储器解锁方法、系统、存储介质以及计算机设备 |
CN110941449A (zh) * | 2019-11-15 | 2020-03-31 | 新华三半导体技术有限公司 | Cache块处理方法、装置及处理器芯片 |
Also Published As
Publication number | Publication date |
---|---|
WO2016210021A1 (en) | 2016-12-29 |
CN107810486B (zh) | 2021-10-22 |
US20160378495A1 (en) | 2016-12-29 |
US10191747B2 (en) | 2019-01-29 |
EP3314397A1 (en) | 2018-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220107911A1 (en) | Apparatuses, methods, and systems for operations in a configurable spatial accelerator | |
CN107810486A (zh) | 锁定用于原子地执行的指令组的操作数的值 | |
US11106467B2 (en) | Incremental scheduler for out-of-order block ISA processors | |
CN105706050B (zh) | 能量高效的多模式指令发布 | |
KR102502780B1 (ko) | 디커플링된 프로세서 명령어 윈도우 및 피연산자 버퍼 | |
CN107810484B (zh) | 用于处理器的显式指令调度器状态信息 | |
CN104040491A (zh) | 微处理器加速的代码优化器 | |
CN104040492A (zh) | 微处理器加速的代码优化器和依赖性重排序方法 | |
CN104040490A (zh) | 用于多引擎微处理器的加速的代码优化器 | |
CN109478140A (zh) | 基于块的处理器中的加载-存储顺序 | |
US20210200540A1 (en) | Apparatuses, methods, and systems for fused operations in a configurable spatial accelerator | |
US10409599B2 (en) | Decoding information about a group of instructions including a size of the group of instructions | |
CN107787480B (zh) | 处理标头以解释关于指令组的信息 | |
CN104615408B (zh) | 微处理器、集成电路与提供微码指令储存空间的方法 | |
US20210042111A1 (en) | Efficient encoding of high fanout communications | |
Bracy | Mini-graph processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |