CN107787480B - 处理标头以解释关于指令组的信息 - Google Patents
处理标头以解释关于指令组的信息 Download PDFInfo
- Publication number
- CN107787480B CN107787480B CN201680036067.8A CN201680036067A CN107787480B CN 107787480 B CN107787480 B CN 107787480B CN 201680036067 A CN201680036067 A CN 201680036067A CN 107787480 B CN107787480 B CN 107787480B
- Authority
- CN
- China
- Prior art keywords
- group
- information
- instructions
- field
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 33
- 238000000034 method Methods 0.000 claims abstract description 50
- 230000008569 process Effects 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
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/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
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
提供了一种方法,其包括提取关于指令组的信息,其中该指令组被配置为由处理器原子地执行,所述信息包括用于关于该指令组的信息的编码格式。该方法还包括处理编码格式以解释关于该指令组的信息。
Description
技术领域
背景技术
指令集架构(ISA)和处理器的设计者进行功耗和性能的权衡。作为示例,如果设计者选择具有提供更高性能的指令的ISA,则处理器的功耗可能更高。或者,如果设计者选择具有功耗较低的指令的ISA,则性能可能更低。功耗可以与由指令在执行期间使用的处理器的硬件资源量相关,诸如算术逻辑单元(ALU)、高速缓存线或寄存器。使用大量这样的硬件资源可以以较高的功耗为代价提供较高的性能。或者,使用少量这样的硬件资源可以以较低的性能为代价产生较低的功耗。
编译器用于将高级代码编译成与ISA和处理器架构兼容的指令。
发明内容
在一个方面,提供了一种方法,其包括提取关于指令组的信息,其中该指令组被配置为由处理器原子地执行,所述信息包括用于关于该指令组的信息的编码格式。该方法还可以包括处理编码格式以解释关于该指令组的信息。
在另一方面,提供了一种方法,其包括:提取指令组的组标头,其中该指令组被配置为由处理器原子地执行,其中组标头包括用于确定组标头的编码格式的第一字段,以及包括用于确定组标头的正确性的正确性信息的第二字段。该方法还可以包括处理编码格式以解释关于该指令组的信息。该方法还可以包括处理正确性信息以确定组标头的正确性。
在另一方面,提供了一种方法,其包括处理指令组,其中该指令组被配置为由处理器原子地执行,以产生关于该指令组的信息,包括关于该指令组的元信息以及用于该元信息的编码格式,其中编码格式用于解释元信息。该方法还可以包括存储元信息和编码格式用于由处理器进行后续处理。
在另一方面,提供了一种处理器,其包括用于提取关于指令组的信息的前端控制单元,其中该指令组被配置为由处理器原子地执行,包括用于关于该指令组的信息的编码格式。处理器还可以包括格式解释单元,其用于处理编码格式以解释关于该指令组的信息,包括至少基于编码格式来确定以下中的至少一项:(a)用于该指令组的分支预测信息;(b)用于该指令组的加载/存储队列信息;(c)用于该指令组的退出类型信息;(d)到用于处理器的指令集架构的至少部分的索引;(e)关于该指令组中的加载操作和存储操作的复杂度的信息;或者(f)用于该指令组的执行要求。
提供本“发明内容”以便以简化的形式介绍将在以下“具体实施方式”中进一步描述的一些概念。本“发明内容”不是旨在标识所要求保护的主题的关键特征或基本特征,也不是旨在用于限制所要求保护的主题的范围。
附图说明
本公开以示例的方式进行说明,并且不受附图的限制,在附图中,相同的附图标记表示相似的元素。附图中的元素为了简单和清楚而示出,并且不一定按比例绘制。
图1是根据一个示例的代表性处理器的框图;
图2是根据一个示例的组标头控制单元的框图;
图3是根据一个示例的格式解释单元的框图;
图4是根据一个示例的可配置的组合逻辑单元的框图;
图5是根据一个示例的方法的流程图;
图6是根据一个示例的方法的流程图;以及
图7是根据一个示例的方法的流程图。
具体实施方式
在本公开中描述的示例涉及指令集架构(ISA)和处理器,其可以具有以组(例如,指令块)被组织的指令,这些指令被原子地提取、执行和提交。因此,处理器可以集体提取属于单个组的指令,将它们映射到处理器内部的执行资源,执行指令并且以原子方式提交它们的结果。处理器可以提交所有指令的结果或使整个组的执行无效。组内部的指令可以按照数据流顺序执行。另外,处理器可以允许组内部的指令直接彼此通信。产生结果的指令可以不将结果写入寄存器文件,而是将该结果传送给消耗该结果的另一指令。作为示例,将存储在寄存器R1和R2中的值相加的指令可以如表1所示来表示:
I[0]READ R1 T[2,R]; |
I[1]READ R2 T[2,L]; |
I[2]ADD T[3,L]. |
以这种方式,源操作数不用指令规定;相反,它们由瞄准(target)ADD指令的指令规定。编译器可以在指令的编译期间明确地编码控制和数据依赖关系,并且从而使处理器在运行时免于重新发现这些依赖关系。这可以有利地导致在这些指令的执行期间减少处理器负载和节能。作为示例,编译器可以使用预测来将所有的控制依赖关系转换成数据流依赖关系。使用这些技术,对耗电的寄存器文件的访问次数可以被减少。下面的表2示出了用于这样的指令的通用指令格式的示例:
OPCODE | PR | BID | XOP | TARGET1 | TARGET2 |
每个指令可以具有合适的大小,诸如32位、64位或其他大小。在表2所示的示例中,每个指令可以包括OPCODE字段、PR(预测)字段、BID(广播标识符)字段、XOP(扩展操作码)字段、TARGET1字段和TARGET2字段。OPCODE字段可以为一个指令或一组指令规定唯一的操作码,诸如加法、读取、写入或乘法。PR(预测)字段可以规定与指令相关的任何预测。作为示例,可以如下使用两位PR字段:00-不被预测,01-保留,10-预测为假,以及11-预测为真。因此,例如,如果指令只有在比较结果为真的情况下才执行,则可以根据执行比较的另一指令的结果来预测该指令。BID(广播标识符)字段可以支持将操作数发送到组中的任何数目的消费者指令。2比特的BID字段可以用于对指令接收其操作数之一的广播信道进行编码。XOP(扩展操作码)字段可以支持扩展操作码的类型。TARGET1和TARGET2字段可以允许编码最多两个目标指令。目标字段可以规定生产者指令的结果的消费者指令,从而允许指令之间的直接通信。
每个指令组可以具有与该指令组相关联的特定信息,诸如涉及该指令组的控制信息。在较高级代码(诸如C或C++的)编译为用于在与本公开一致的处理器上执行的指令期间,这个信息可以由编译器生成。这个信息中的一些可以由编译器在编译一指令组时并且通过在运行时检查指令的性质来提取。附加地或备选地,与该指令组相关联的信息可以是关于该指令组的元信息。在一个示例中,这样的信息可以封装在与该指令组相关联的标头中。因此,组标头可以包括关于该指令组的控制信息和/或元信息。在一个示例中,这个信息可以有利地帮助处理器更有效地执行该指令组。具有示例性字段和每个字段的示例性说明的组标头的一个示例在下面的表3中:
虽然表3中示出的示例性组标头包括很多字段,但是这仅仅是示例性的。在一个实施例中,编译器可以基于指令的性质和/或基于处理要求的性质(诸如,高性能或低功率)来选择某个组标头结构。这可以有利地允许更好地平衡性能和功耗之间的折衷。对于某些类型的处理应用,诸如具有大量内核的高性能计算,大型组标头可以是理想的选择。或者,对于其他类型的处理应用,诸如在物联网、移动设备、可穿戴设备或其他嵌入式计算类型的应用中使用的嵌入式处理器,较小的组标头可以是理想的选择。因此,在本公开的一个方面,可以针对特定的处理环境来定制组标头结构。在另一方面,可以根据该指令组中的指令的性质来定制组标头结构。例如,如果该指令组包括多次执行的循环,则可能需要更广泛的组标头以封装与该指令组相对应的控制信息。附加控制信息可以允许处理器更有效地执行循环,并且从而提高性能。或者,如果有将很少执行的一指令组,则这样的组的组标头可能更小。在另一示例中,如果该指令组包括预测的控制循环,则组标头结构可能更广泛。类似地,如果该指令组具有大量的指令级并行性,则组标头结构可能更广泛。组标头中的附加控制信息可以用于有效地利用该指令组中的指令级并行性。在另一示例中,如果该指令组包括若干分支指令,则组标头可能更广泛。关于分支指令的附加控制信息将使代码执行效率更高,因为这将导致更少的管线刷新。
另外,对应于这些字段的功能可以被组合或进一步分离。作为示例,虽然表3的示例性组标头包括单独的ID字段和SIZE字段,但是这两个字段可以组合成单个字段。在不脱离本公开的范围的情况下,可以对组标头结构和格式进行其他改变。作为示例,可以包括附加字段,该附加字段包括与该指令组的特征相关的信息。可以包括某些基于该指令组的执行频率的字段。
被包括在组标头结构中的字段、或类似的一组信息可以是特定处理器或处理器家族的公共可用的标准指令集架构(ISA)的部分。这些字段的子集可以是对ISA的专有扩展。某些字段可以访问处理器中的可配置逻辑阵列,使得状态机可以被调用,其可以根据可配置逻辑阵列不同地解释字段中的某些比特值。因此,编译的程序可以具有其自己的专有组标头结构,其将包括通过可配置的逻辑阵列来处理某些比特值或字段。可配置逻辑阵列的配置可以在运行中改变,以实现只能由具有可配置逻辑阵列的处理器来解释的组标头结构,该可配置逻辑阵列可以处理这样的功能。或者,特定字段或这个字段中的比特值可以指向诸如闪速存储器等存储器中的位置,其可以被配置为允许字段或字段中的比特值的不同解释。因此,这个字段中的某些比特值可以是用于处理器的标准ISA的部分,但是这个字段中的某些其他比特值可以提供专有功能。这个示例性字段可以允许ISA设计者将专有扩展添加到组标头结构,而不完全公开与专有扩展相关联的性质和功能。因此,在这种情况下,由ISA设计者分发的编译器将支持这个字段中的专有比特值或完全独立的专有字段。这样的字段的使用可以与某些处理器设计专有的硬件加速器特别相关。因此,程序可以包括不可识别的组标头字段;但是该程序还可以包括用于破译这个字段的秘诀。
图1是根据本公开的一个示例的代表性的处理器100的部分的框图。处理器100可以包括前端控制单元102、指令高速缓存104、分支预测器106、指令解码器108、指令窗口110、左操作数缓冲器112、右操作数缓冲器114、算术逻辑单元(ALU)116、算术逻辑单元(ALU)118、寄存器120和加载/存储队列122。在一些情况下,总线可以仅携带数据和指令;在一些情况下,总线可以仅携带数据(例如,操作数);在其他情况下,总线可以仅携带控制信号,例如,前端控制单元102可以经由仅携带控制信号的总线与其他控制网络通信。在一个示例中,前端控制单元102可以包括组合逻辑和状态机以处理该处理的前端(包括指令提取和解码)。作为示例,前端控制单元102可以从LI高速缓存或另一高速缓存提取指令,以存储到指令高速缓存104中,并且稍后由指令解码器108处理。前端控制单元102可以经由控制网络与处理器100的其他部分交换控制信息。处理器100可以包括单个内核或多个内核。在那种情况下,可以存在图1中所示的至少一些元素的多个实例。前端控制单元102可以协调和管理处理器的各种内核和其他部分的控制。因此,在这个示例中,该指令组可以在多个内核上同时执行,并且前端控制单元102可以经由控制网络与其他内核交换控制信息,以确保根据需要进行同步,以执行各指令组。前端控制单元102可以在每个时钟周期提取和解码单个指令或多个指令。解码的指令可以存储在指令窗口110中。指令窗口110可以包括指令调度器130。指令调度器130可以保持每个解码的指令的输入(例如,其预测和操作数)的就绪状态。当其所有输入(如果有的话)准备就绪时,该指令可以被指令调度器130唤醒并且准备好发出。虽然图1示出了以某种方式布置的处理器100的一定数目的部件,但是可以有更多或更少数目的不同地布置的部件。
在发出指令之前,指令所需要的任何操作数可以被存储在左操作数缓冲器112和/或右操作数缓冲器114中(根据需要)。根据指令的操作码,可以使用ALU 116和/或ALU 118或其他功能单元对操作数执行操作。ALU的输出可以存储在操作数缓冲器中或存储在一个或多个寄存器120中。以数据流顺序发出的存储操作可以在加载/存储队列122中排队,直到该指令组提交。当该指令组提交时,加载/存储队列122可以将提交的组的存储写入存储器。分支预测器106可以处理与分支退出类型相关的组标头信息,并且在进行分支预测时将该信息作为因素考虑。
继续参考图1,前端控制单元102还可以包括组标头控制单元132。组标头控制单元132可以处理控制信息和元信息,该控制信息和元信息关于可以原子地执行的一指令组。在一个示例中,组标头控制单元132可以处理这样的一指令组的组标头。如之前关于表3所讨论的,组标头可以包括关于该指令组的控制信息和/或元信息。组标头控制单元132可以包括组合逻辑、状态机、和临时存储单元,诸如触发器,以处理组标头中的各个字段。
图2是根据一个示例的组标头控制单元132及其与处理器100的其余部分的接口的框图。组标头控制单元132可以包括组正确性单元202、格式解释单元204、指令状态机(ISM)206和解复用器208。前端控制单元102可以从指令高速缓存104提取高速缓存线(例如,128位高速缓存线)。提取可以通过一次提取一个字节、一次提取8个字节、或一次提取高速缓存线的一半或以其他数量来执行。指令解码器108可以解码高速缓存线,并且将解码的信息转发到解复用器208。在ISM 206的控制下,解复用器208的输出可以被提供给指令窗口110或者格式解释单元204。因此,例如,如果高速缓存线包含组标头,则解复用器208的输出可以被提供各格式解释单元204。虽然图2示出了输出组标头的解复用器208,也可以不存在解复用器。相反,作为示例,可以有两个不同的端口,并且因此组标头可以在与用于提取指令的端口不同的端口上被提取。在涉及具有固定大小的一指令组(例如,32个指令)的一个示例中,组标头将在一指令组的开始处,并且因此程序计数器(PC)的初始值将指向组标头。在涉及具有可变大小的一指令组(例如,32、64、96或128个指令)的另一示例中,前端控制单元102将向组标头控制单元132提供关于当前在指令窗口中的该指令组的大小的信息。一旦组标头控制单元132具有该信息,则它可以使用该信息和PC值来确定组标头的位置。虽然图2示出了以特定方式布置的组标头控制单元132的一定数目的部件,但是可以有更多或更少数目的不同地布置的部件。
继续参考图2,格式解释单元204可以接收组标头,并且将整个组标头转发给组正确性单元202。备用地,解复用器208的一个输出可以直接耦合到组正确性单元202。组正确性单元202还可以从存储器位置(例如,闪速存储器位置)获取用于组正确性字段的先前存储的值。该先前存储的值可以规定固定代码模式或可变模式,诸如在组标头的其余内容上的先前计算的校验和值(例如,如表3中所示)。如果先前存储的值是固定代码模式,则组正确性单元202可以将从存储器获取的固定代码模式与从组标头的组正确性字段中提取的固定代码模式相比较。如果匹配,则组正确性单元202可以为正确的信号生成高值。如果不匹配,则组正确性单元202可以为正确的信号生成低值。在一个示例中,这将导致处理器100意识到这是到可能畸形的一指令组的非法跳转。在一个示例中,当正确的信号变为低值时,处理器100将产生异常。在先前存储的值是可变模式的情况下,诸如在组标头的其余部分上先前计算的校验和,则组正确性单元可以计算在作为提取过程的部分接收的组标头的其余部分上的校验和。组正确性单元202可以将从存储器获取的可变模式与基于组标头的其余部分生成的可变模式相比较。如果两个可变模式(例如,校验和)相匹配,则组正确性单元202可以为正确的信号生成高值。如果不存在匹配,则组正确性单元202可以为正确的信号生成低值。在一个示例中,这将导致处理器100意识到这是到可能畸形的一指令组的非法跳转。在一个示例中,当正确的信号变为低值时,处理器100将产生异常。这样,处理器100可以有利地通过知道什么时候存在到畸形的一指令组的非法跳转来提供代码的安全执行,该畸形的一指令组可能已经被黑客放入指令高速缓存或另一存储器中。在代码开发期间,非法跳转也可以有利地帮助调试代码。
继续参考图2,格式解释单元204可以处理组标头的各个字段中的比特值,并且生成用于由处理器100的各种硬件元件使用的控制信号。这些硬件元件包括但不限于图1所示的那些,包括分支预测器106、指令解码器108、指令调度器130、寄存器120和加载/存储队列122。在一个示例中,格式解释单元204可以处理表3中所示的组标头的各个字段中的比特值,以生成关于该指令组的信息。在一个示例中,格式解释单元204可以通过处理字段ENCODING FORAMT并且确定用于组标头中的信息的编码格式来生成该指令组的控制信息。在另一示例中,格式解释单元可以通过处理所确定的编码格式和组标头中的信息来生成用于该指令组的元信息。作为示例,格式解释单元204可以生成分支预测器信号,该分支预测器信号可以被提供给分支预测器106。该信号可以向分支预测器106提供控制信息,诸如关于表3中被标记为EXIT TYPES的字段所描述的。格式解释单元204还可以生成可以被提供给加载/存储队列122的加载/存储队列(LSQ)信号。该信号可以向加载/存储队列122提供控制信息,诸如关于表3中被标记为STORE MASK和WRITE MASK的字段所描述的。格式解释单元204还可以生成可以被提供给其他硬件元件(包括例如指令解码器108和指令调度器130)的执行要求。这些信号可以提供控制信息,诸如关于表3中被标记为XFLAGS的字段所描述的。格式解释单元204还可以生成到指令集架构(ISA)规范的索引。作为示例,ISA规范可以包括支持的设备的类别。设备类别可以是指设备是高性能设备或物联网、移动设备、可穿戴设备或其他嵌入式设备。由格式解释单元生成的输出仅仅是示例性的,并且可以根据需要生成附加的或者更少的输出。另外,根据表3所示的ENCODING FORMAT字段中的比特值,格式解释单元204可以生成被提供给硬件单元的信息的不同值。例如,如果ENCODING FOMAT字段具有k位,则可以为格式解释单元204的输出生成2k个不同的值。
图3是根据一个示例的格式解释单元204的框图。格式解释单元204可以包括存储单元302、第一组合逻辑单元304、第二组合逻辑单元306、第三组合逻辑单元308和第N组合逻辑单元310以及多路复用器320、322和324,该多路复用器320、322和324可以根据组标头中的比特值提供用于由处理器100的各种硬件元件使用的输出。存储单元302可以用于存储组标头的各个字段(例如,N个字段,其中N是大于1但小于一定数的整数)GH0、GH1、GH2和GHN。在一个示例中,组标头可以具有128位,并且因此GH0、GH1、GH2和GHN可以包含合计为128位的字段。在一个示例中,这些字段可以是关于表3描述的字段。被包含在存储单元302中的比特值可以耦合到N个组合逻辑块,包括第一组合逻辑单元304、第二组合逻辑单元306、第三组合逻辑单元308和第N组合逻辑单元310。这些单元中的每个可以是硬编码的组合逻辑块。备选地,这些单元中的至少一些或全部可以是可配置的组合逻辑块。每个组合逻辑单元的输出可以耦合到N个多路复用器,包括多路复用器320、322和324,该多路复用器320、322和324可以根据组标头中的比特值提供用于由处理器100的各种硬件元件使用的输出。多路复用器320、322和324可以使用K个控制位来控制。K个控制位可以由编译的程序提供,并且可以反映特定组标头格式和结构的选择。在一个示例中,K个控制位可以涉及表3的ENCODING FORMAT字段。虽然图3示出了以某种方式布置的格式解释单元204的一定数目的部件,可以有更多或更少数目的不同地布置的部件。
多路复用器的输出可以对应于关于图2讨论的控制信号。作为示例,多路复用器的输出可以包括分支预测器信号、加载/存储队列(LSQ)信号、执行要求、和到ISA的索引,其中的每个可以被提供给处理器100的各种硬件元件。在一个示例中,分支预测器信号可以从存储在存储单元302中的一个或多个组标头位(例如,128位)的组合生成,并且由第一组合逻辑单元304处理。备选地,如图3所示,在另一示例中,分支预测器信号可以从存储在存储单元302中的一个或多个组标头位(例如,128位)的组合生成,并且由第二组合逻辑单元306处理。在另一示例中,加载/存储(LSQ)信号可以从存储在存储单元302中的一个或多个组标头位(例如,128位)的组合生成,并且由第三组合逻辑单元308处理。在另一示例中,执行要求信号可以从存储在存储单元302中的一个或多个组标头位(例如,128位)的组合生成,并且由第N组合逻辑单元308处理。在另一示例中,到ISA信号的索引可以从存储在存储单元302中的一个或多个组标头位(例如,128位)的组合生成,并且由第N组合逻辑单元308处理。每个信号值可以进一步基于用于控制多路复用器的K位的值来选择。在这些示例中的每个中,存储在存储单元302中的组标头中的所有位(例如,128位)可以不被处理。相反,这些位的子集可以被处理。另外,存储单元302可以存储更大的组标头或更小的组标头。
图4是根据一个示例的可配置的组合逻辑单元400的框图。作为示例,组合逻辑单元304、306、308和310中的任何一个可以如图4中关于可配置的组合逻辑单元400所示来实现。这可以有利地允许用户改变如何在运行中处理编码格式。备选地,组合逻辑单元可以被硬编码,使得配置是固定的并且不能在运行中改变。可配置的组合逻辑单元400可以包括输入锁存器402、组合逻辑块404、输出锁存器406和状态锁存器408。三个锁存器中的每个可以使用相同的时钟来时钟控制。输入锁存器402可以锁存组标头的各个字段中的比特值。输出锁存器406可以锁存从组合逻辑块404接收的输出。状态锁存器408可以锁存状态信息。组合逻辑块404可以处理输入锁存器402的输出和状态锁存器408的输出,并且基于这些输入来确定输出。输出锁存器406的输出可以耦合到多路复用器,例如图3所示的多路复用器。组合逻辑块404可以使用诸如可编程逻辑器件(PLD)或现场可编程门阵列(FPGA)等可编程逻辑来实现。备选地,组合逻辑块404可以使用存储在可编程闪速存储器中的查找表来实现。在这些实现中的任何一个中,因为组合逻辑块404的行为可以在运行时改变,所以可以有利地允许用户定制编码格式和组标头的处理。虽然图4示出了以某种方式布置的可配置的组合逻辑单元400的一定数目的部件,但是可以有更多或更少数目的不同地布置的部件。其他技术也可以用来实现相同的目标。
图5是根据一个示例的方法的流程图。在步骤502中,作为示例,前端控制单元102可以提取关于一指令组的信息,该指令组被配置为由处理器原子地执行。由前端控制单元102提取的信息可以包括用于关于该指令组的信息的编码格式。作为示例,关于该指令组的信息可以包括关于该指令组的控制信息和/或元信息。
在步骤504中,作为示例,组标头控制单元132可以处理在步骤502中提取的关于该指令组的信息。作为示例,关于该指令组的信息可以是具有若干字段的组标头的形式,诸如关于表3所描述的。因此,例如,编码格式可以被封装在组标头的字段中。使用编码格式,组标头中的其他字段可以借助于格式解释单元204被解释,例如关于图2和图3所描述的。表3中描述的任何字段都可以作为本步骤的部分进行处理。作为示例,步骤504中的处理可以包括基于所确定的编码格式来确定用于该指令组的分支预测信息。步骤504还可以包括基于所确定的编码格式来确定用于该指令组的加载/存储队列信息。步骤504还可以包括基于所确定的编码格式来确定到指令集架构(ISA)的至少部分的索引。步骤504还可以包括基于所确定的编码格式来确定关于该指令组中的加载操作和存储操作的复杂性的信息。
图6是根据一个示例的方法的流程图。在步骤602中,作为示例,前端控制单元102可以提取一指令组的组标头,该指令组的组标头被配置为由处理器原子地执行。由前端控制单元102提取的组标头可以包括用于确定组标头的编码格式的字段和具有用于确定组标头的正确性的正确性信息的另一字段。作为示例,用于该指令组的组标头可以包括关于该指令组的控制信息和/或元信息。组标头可以包含若干字段,例如,如关于表3所描述的。
在步骤604中,作为示例,组标头控制单元132可以处理在步骤602中提取的、用于该指令组的编码格式。使用编码格式,组标头中的其他字段可以借助于格式解释单元204的帮助被解释,例如关于图2和图3所描述的。表3中描述的任何字段可以作为本步骤的部分被处理。作为示例,步骤604中的处理可以包括:基于所确定的编码格式,通过处理包括这样的信息的字段来确定用于该指令组的分支预测信息。步骤604还可以包括:基于所确定的编码格式,通过处理包括这样的信息的字段来确定该指令组的加载/存储队列信息。步骤604还可以包括:基于所确定的编码格式来确定到指令集架构(ISA)的至少部分的索引,该指令集架构(ISA)处理包括这样的信息的字段。步骤604还可以包括:基于所确定的编码格式来确定关于该指令组中的加载操作和存储操作的复杂度的信息,该指令组处理包括这样的信息的字段。
继续参考图6,在步骤606中,组正确性单元202可以处理正确性信息以确定组标头的正确性。在一个示例中,正确性信息可以被存储为组标头中的字段的部分。作为该步骤的部分,组正确性单元202还可以从存储器位置(例如,闪速存储器位置)获取用于组正确性字段的先前存储的值。该先前存储的值可以规定固定代码模式或可变模式,诸如在组标头的其余内容上的先前计算的校验和值(例如,如表3中所示)。如果先前存储的值是固定代码模式,则组正确性单元202可以将从存储器获取的固定代码模式与从组标头的组正确性字段中提取的固定代码模式相比较。作为该步骤的部分,组正确性单元202还可以将从存储器获取的可变模式(例如,基于用于该指令组的良好已知的组标头的其余字段内容的先前计算的校验和)与基于组标头中其余部分生成的可变模式(例如,基于组标头中的其余字段的内容的计算的校验和)相比较。
图7是根据一个示例的方法的流程图。作为示例,该方法涉及编译器分析一指令组并且生成或选择用于该指令组的组标头。在步骤702中,合适的编译器可以处理被配置为由处理器原子地执行的一指令组,以生成关于该指令组的信息,包括关于该指令组的元信息和用于该指令组的编码格式。一些程序可以仅针对一组ISA来编译,例如与用于物联网、移动设备、可穿戴设备或其他嵌入式计算环境的处理器一起使用的ISA。编译器可以使用诸如静态代码分析或代码分析等技术以生成与该指令组相关的信息。编译器可以考虑各种因素,诸如该指令组的特性和该指令组的执行频率。该指令组的相关特性包括但不限于:(1)指令级并行性;(2)循环数;(3)预测的控制指令的数目;以及(4)分支预测的数目。下面的表4中示出了简化的128位组标头的一个示例:
下面示出了高级语言的示例性程序及其成为包括组标头(具有表4中所示的示例性结构)的指令组的编译的一个示例:
程序:
具有指令组和组标头的编译的程序:
在上面的示例中,该指令组包括指令,诸如read、mov和add。read指令用于从寄存器中读取操作数的值。mov指令用于将操作数移动或复制到一个或多个目标。add指令用于添加作为这个指令的部分被提供的两个操作数。此外,还有示出控制回路转换为预测的数据流指令的其他指令。tlei p0,t4,99指令是“测试小于或等于立即值(test less than orequal immediate)”的指令。作为该指令的部分,将指令的操作数值与立即值(例如,99)相比较,如果操作数值小于或等于立即值,则产生真值;否则,会产生假值。该谓词(真或假)可以在频道上广播,并且可以通过bro_t<p0>blkl指令和bro_f<p0>blk2指令被接收作为它们的第一操作数。bro_t<p0>blkl指令是“具备偏置分支(branch with offset)”指令,该指令基于tlei指令的结果为真值被预测。类似地,bro_f<p0>blk2指令是“具备偏置分支(branchwith offset)”指令,该指令基于tlei指令的结果为假值被预测。因此,如果tlei指令的结果为真值,则指令bro_t<p0>blk1将被执行。或者,如果tlei指令的结果为假值,则指令bro_f<p0>blk2将被执行。在这个示例中,ENCODING FORMAT字段被设置为01。在一个示例中,当由图2的格式解释单元204处理时,这些比特值可以确定各种控制输入的值,诸如退出类型。另外,在这个示例中,GROUP CORRECTNESS字段被设置为001,这可以用于确定组标头是否正确,如前所述。
继续参考图7,在步骤704中,编译器可以存储元信息、控制信息(例如,如以上示例性组标头中所示)和编码格式用于由处理器(诸如,处理器100)进行后续处理。该处理可以包括分别关于图5和6描述的步骤。。
总之,提供了一种方法,其包括提取用于一指令组的组标头,其中该指令组被配置为由处理器原子地执行,其中组标头包括:用于确定组标头的编码格式的第一字段,以及用以确定组标头的正确性的正确性信息的第二字段。该方法还可以包括处理编码格式以解释关于该指令组的信息。关于该指令组的信息可以包括以下中的至少一个:(1)关于该指令组的控制信息,或(2)关于该指令组的元信息。该方法还可以包括至少基于编码格式来确定以下中的至少一项:(1)用于该指令组的分支预测信息,(2)用于该指令组的加载/存储队列信息,(3)用于该指令组的退出类型信息,(4)到用于处理器的指令集架构的至少部分的索引,(5)关于该指令组中的加载操作和存储操作的复杂性的信息。
另外,提供了一种处理器,其包括用于提取关于一指令组的信息的装置,其中该指令组被配置为由处理器原子地执行,所述信息包括关于该指令组的信息的编码格式。处理器还可以包括用于处理编码格式以解译关于该指令组的信息的装置,包括至少基于编码格式来确定以下中的至少一项:(a)用于该指令组的分支预测信息,(b)用于该指令组的加载/存储队列信息,(c)用于该指令组的退出类型信息,(d)到用于处理器的指令集架构的至少部分的索引,(e)关于该指令组中的加载操作和存储操作的复杂度的信息,或者(f)用于该指令组的执行要求。在一个示例中,用于提取的装置可以是图1的前端控制单元102。另外,在一个示例中,用于处理编码格式的装置可以是图2的格式解释单元204。在该示例性处理器中,关于该指令组的信息还可以包括正确性信息,并且处理器还可以包括基于该正确性信息来确定该指令组的正确性的装置。在一个示例中,用于确定正确性的装置可以是图2的组正确性单元202。
应当理解,本文中描述的方法、模块和部件仅仅是示例性的。替代地或附加地,本文中描述的功能可以至少部分由一个或多个硬件逻辑部件来执行。例如而非限制,可以使用的示例性硬件逻辑部件的类型包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、系统级芯片系统(SOC)、复杂可编程逻辑器件(CPLD)等。在抽象但是确定的意义上,实现相同功能的任何部件配置都被有效地“相关联”,从而实现期望的功能。因此,本文中组合以实现特定功能的任何两个部件可以被视为彼此“相关联”,从而实现期望的功能,而与架构或中间部件无关。同样,如此相关联的任何两个部件也可以被视为彼此“可操作地连接”或“耦合”以实现期望的功能。
与本公开中描述的示例相关联的功能还可以包括存储在非暂态介质(例如,指令高速缓存104或其他类型的非暂态媒体)中的指令。本文中使用的术语“非暂态介质”是指存储引起机器(诸如处理器100)以特定方式操作的数据和/或指令的任何介质。示例性的非暂态介质包括非易失性介质和/或易失性介质。非易失性介质例如包括硬盘、固态驱动器、磁盘或磁带、光盘或磁带、闪速存储器、EPROM、NVRAM、PRAM或其他这样的介质、或者网络版本的这样的介质。易失性介质包括例如动态存储器,诸如DRAM、SRAM、高速缓存或其他这样的媒体。非暂态介质不同于传输介质,但是可以与传输介质一起使用。传输介质用于向诸如处理器100等机器传输数据和/或从其传输数据和/或指令。示例性传输介质包括同轴电缆、光纤电缆、铜线以及诸如无线电波等无线介质。
此外,本领域技术人员将认识到,上述操作的功能之间的界限仅仅是说明性的。多个操作的功能可以被组合成单个操作,并且/或者单个操作的功能可以被分配在另外的操作中。此外,替代实施例可以包括特定操作的多个实例,并且操作的顺序在各种其他实施例中可以改变。
尽管本公开提供了具体示例,但是可以在不脱离如以下权利要求中阐述的本公开的范围的情况下进行各种修改和改变。因此,说明书和附图被认为是说明性的而非限制性的,并且所有这样的修改意图被包括在本发明的范围内。本文中关于具体示例描述的任何益处、优点或问题的解决方案不旨在被解释为任何或所有权利要求的关键的、必需的或基本的特征或元素。
此外,本文中使用的术语“一个(a)”或“一个(an)”被定义为一个或多于一个。而且,在权利要求中使用诸如“至少一个”和“一个或多个”等介绍性短语不应当被解释为暗示由不定冠词“一个(a)”或“一个(an)”引入的另一权利要求元素将包含这样引入的权利要求要素的任何特定限制为仅包含一个这样的要素的发明,即使当相同的权利要求包括引导性短语“一个或多个”或“至少一个”和诸如“一个(a)”或“一个(an)”等不定冠词时。对于使用定冠词也是如此。
除非另有说明,否则诸如“第一”和“第二”等术语用于任意区分这样的术语所描述的元素。因此,这些术语不一定旨在指示这样的元素的时间或其他优先级。
Claims (15)
1.一种用于解释关于指令组的信息的方法,包括:
获取指令组,所述指令组被配置为由处理器原子地执行,以及所述指令组的组头,其中所述组头包括多个字段,所述多个字段包括编码格式字段,其中编码格式字段被配置为向所述处理器提供关于如何解释用于所述指令组的所述组头的所述多个字段中的至少一个剩余字段的格式的信息,其中所述组头的所述多个字段包括:
第一字段,所述第一字段包括:关于由分支预测器在进行用于所述指令组的分支预测时使用的退出类型的信息,以及
第二字段,所述第二字段包括:关于在执行指令组期间是否每个指令组需要独立矢量通道的信息、关于在执行指令组期间是否禁止分支预测的信息,以及关于在执行指令组期间是否禁止预测存储器操作之间的依赖关系;以及将所述编码格式字段处理为:
(1)解释所述第一字段中的第一信息,以生成用于分支预测器的第一信号,所述分支预测器与所述处理器相关联,以及
(2)解释所述第二字段中的第二信息,以生成用于指令解码器或与处理器相关的指令调度器的第二信号,
(3)解释第三字段中的第三信息,以生成用于与所述处理器相关联的所述分支预测器的第三信号,以及
(4)解释第四字段中的第四信息,以生成第四信号以禁止存储器操作之间的依赖关系,所述存储器操作包括加载/存储操作。
2.根据权利要求1所述的方法,还包括:至少基于所述编码格式字段,确定用于所述指令组的加载/存储队列信息。
3.根据权利要求1所述的方法,其中用于所述指令组的退出类型的信息包括:关于分支是否是下一指令组、分支是否是块相对偏移地址的信息、或者分支是否是间接类型的分支的信息。
4.根据权利要求1所述的方法,还包括:至少基于所述编码格式字段,确定用于所述处理器的指令集架构的至少一部分的索引。
5.根据权利要求1所述的方法,还包括:至少基于所述编码格式字段,确定关于所述指令组中的加载操作和存储操作的复杂性的信息。
6.根据权利要求1所述的方法,其中所述组头还包括正确性信息,以确定所述指令组的正确性。
7.根据权利要求6所述的方法,其中所述正确性信息包括:基于所述组头的所述多个字段中的信息计算的校验和。
8.一种用于解释关于指令组的信息的方法,包括:
获取用于指令组的组头,其中所述指令组被配置为由处理器原子地执行,以及所述指令组的组头,其中所述组头包括多个字段,所述多个字段包括:用于确定用于所述组头的编码格式的第一字段,其中所述第一字段被配置为向所述处理器提供关于如何解释用于所述指令组的所述组头的所述多个字段中的至少一个剩余字段的格式的信息,第二字段,所述第二字段包括:用于确定所述组头正确性的正确性信息,第三字段,所述第三字段包括:关于由分支预测器在进行用于所述指令组的分支预测时使用的退出类型的信息,所述信息包括:关于分支是否是下一指令组、分支是否是块相对偏移地址、或者分支是否是间接类型的分支的信息,第四字段,所述第四字段包括:关于在执行指令组期间是否每个指令组需要独立矢量通道的第一信息、关于在执行指令组期间是否禁止分支预测的第二信息,以及关于在执行指令组期间是否禁止预测存储器操作之间的依赖关系的第四信息;
处理所述第一字段,以解释关于由分支预测器在进行用于所述指令组的分支预测时使用的退出类型;
处理所述第二字段,以确定所述组头的正确性;以及
处理所述第一字段为:
(1)解释所述第四字段中的所述第一信息,以生成用于指令解码器或与处理器相关的指令调度器的第一信号,
(2)解释所述第四字段中的所述第二信息,以生成用于所述分支预测器的第二信号,
(3)解释所述第四字段中的第三信息,以生成第三信号以禁止存储器操作之间的依赖关系,所述存储器操作包括加载/存储操作。
9.根据权利要求8所述的方法,还包括至少基于所述编码格式处理所述组头的第五字段,以确定用于所述指令组的加载/存储队列信息。
10.根据权利要求8所述的方法,还包括:至少基于所述编码格式字段,处理所述组头的第六字段,以确定用于所述处理器的指令集架构的至少一部分的索引。
11.根据权利要求8所述的方法,还包括:至少基于所述编码格式字段,处理所述组头的第七字段,以确定关于所述指令组中的加载操作和存储操作的复杂性的信息。
12.根据权利要求8所述的方法,其中,所述正确性信息包括计算的校验和,其中所述计算的校验和是基于所述组头中的剩余字段的内容。
13.根据权利要求12所述的方法,还包括:将所述计算的校验和与先前存储的校验和进行比较,以确定所述指令组的正确性。
14.一种处理器,包括:
前端控制单元,用于获取指令组,所述指令组被配置为由处理器原子地执行,以及用于所述指令组的组头,其中所述组头包括多个字段,所述多个字段包括编码格式字段,其中编码格式字段被配置为向所述处理器提供关于如何解释用于所述指令组的所述组头的所述多个字段中的至少一个剩余字段的格式的信息,以及格式解释单元,用于处理所述编码格式字段为:
解释关于所述指令组的所述信息,包括至少基于所述编码格式字段确定用于所述指令组的分支预测信息,以及基于所述分支预测信息的解释,向与所述处理器关联的分支预测器提供第一信号,
加载/存储用于所述指令组的队列信息,以及基于加载/存储所述队列信息的解释,向所述处理器提供第二信号,
用于所述指令组的退出类型信息,以及基于所述退出类型信息的解释,向与所述处理器关联的所述分支预测器提供第三信号,
关于在执行指令组期间是否每个指令组需要独立矢量通道的信息,
关于在执行指令组期间是否禁止分支预测的信息,以及基于所述信息的解释,向与所述处理器关联的所述分支预测器提供第四信号,以及
关于是否在在执行指令组期间是否禁止预测存储器操作之间的依赖关系的信息。
15.根据权利要求14所述的处理器,其中,关于所述指令组的所述信息还包括:正确性信息,还包括:
组正确性单元,用于基于所述正确性信息,确定所述指令组的正确性。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/752,727 | 2015-06-26 | ||
US14/752,727 US10169044B2 (en) | 2015-06-26 | 2015-06-26 | Processing an encoding format field to interpret header information regarding a group of instructions |
PCT/US2016/038847 WO2016210024A1 (en) | 2015-06-26 | 2016-06-23 | Processing header to interpret information regarding a group of instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107787480A CN107787480A (zh) | 2018-03-09 |
CN107787480B true CN107787480B (zh) | 2021-03-26 |
Family
ID=56511877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680036067.8A Active CN107787480B (zh) | 2015-06-26 | 2016-06-23 | 处理标头以解释关于指令组的信息 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10169044B2 (zh) |
EP (1) | EP3314404B1 (zh) |
CN (1) | CN107787480B (zh) |
TW (1) | TW201706830A (zh) |
WO (1) | WO2016210024A1 (zh) |
Families Citing this family (2)
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 |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006102664A2 (en) * | 2005-03-23 | 2006-09-28 | Qualcomm Incorporated | Method and system for encoding variable length packets with variable instruction sizes |
CN102221987A (zh) * | 2011-05-11 | 2011-10-19 | 西安电子科技大学 | 基于嵌入式专用指令集处理器的指令集编码方法 |
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 |
Family Cites Families (234)
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 | Parallelfliessband-Befehlsverarbeitungssystem für sehr lange Befehlswörter |
US5446904A (en) | 1991-05-17 | 1995-08-29 | Zenith Data Systems Corporation | Suspend/resume capability for a protected mode microprocessor |
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 |
DE69311330T2 (de) | 1992-03-31 | 1997-09-25 | Seiko Epson Corp | Befehlsablauffolgeplanung von einem risc-superskalarprozessor |
EP0583089B1 (en) | 1992-08-12 | 2000-01-26 | Advanced Micro Devices, Inc. | Instruction decoder |
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 |
WO1996007139A1 (en) | 1994-09-01 | 1996-03-07 | Mcalpine Gary L | 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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 | プロセッサコア及びこれを用いたプロセッサ |
US6651125B2 (en) | 1999-09-28 | 2003-11-18 | International Business Machines Corporation | Processing channel subsystem pending I/O work queues based on priorities |
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 |
JP2003511754A (ja) | 1999-10-01 | 2003-03-25 | サン・マイクロシステムズ・インコーポレイテッド | 投機的なかつ順不同(out−of−order)のロードの場合に正確なトラップ処理をするための方法 |
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 |
WO2003038645A2 (en) | 2001-10-31 | 2003-05-08 | University Of Texas | A scalable processing architecture |
EP1313012A1 (en) | 2001-11-15 | 2003-05-21 | Texas Instruments France | Java DSP acceleration by byte-code optimization |
JP2003162411A (ja) * | 2001-11-28 | 2003-06-06 | Hitachi Ltd | データプロセッサ |
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 |
US7284100B2 (en) | 2003-05-12 | 2007-10-16 | International Business Machines Corporation | Invalidating storage, clearing buffer entries, and an instruction therefor |
US6996698B2 (en) | 2003-05-12 | 2006-02-07 | International Business Machines Corporation | Blocking processing restrictions based on addresses |
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 |
KR100877138B1 (ko) | 2004-03-29 | 2009-01-09 | 고쿠리츠 다이가쿠 호진 교토 다이가쿠 | 데이터 처리장치, 데이터 처리 프로그램, 및 데이터 처리프로그램을 기록한 기록매체 |
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 |
US7873776B2 (en) | 2004-06-30 | 2011-01-18 | Oracle America, Inc. | Multiple-core processor with support for multiple virtual processors |
US7685354B1 (en) | 2004-06-30 | 2010-03-23 | Sun Microsystems, Inc. | Multiple-core processor with flexible mapping of processor cores to cache banks |
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 | ソニー株式会社 | 情報処理装置、割り込み処理制御方法、並びにコンピュータ・プログラム |
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 |
US7552318B2 (en) | 2004-12-17 | 2009-06-23 | International Business Machines Corporation | Branch lookahead prefetch for microprocessors |
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 |
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 |
CN103646009B (zh) | 2006-04-12 | 2016-08-17 | 索夫特机械公司 | 对载明并行和依赖运算的指令矩阵进行处理的装置和方法 |
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 |
CN101627365B (zh) | 2006-11-14 | 2017-03-29 | 索夫特机械公司 | 多线程架构 |
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 |
WO2008090665A1 (ja) | 2007-01-25 | 2008-07-31 | Nec Corporation | プログラム並列化方法及び装置 |
US8250556B1 (en) | 2007-02-07 | 2012-08-21 | Tilera Corporation | Distributing parallelism 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 | 命令コード圧縮方法と命令フェッチ回路 |
US7797512B1 (en) | 2007-07-23 | 2010-09-14 | Oracle America, Inc. | Virtual core management |
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 |
US7921278B2 (en) * | 2008-03-10 | 2011-04-05 | International Business Machines Corporation | Early exit processing of iterative refinement algorithm using register dependency disable |
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 |
WO2010026485A1 (en) | 2008-09-08 | 2010-03-11 | Bridgeco Ag | Very long instruction word architecture with multiple data queues |
EP2366144B1 (en) | 2008-10-15 | 2015-09-30 | Hyperion Core, Inc. | Sequential processor comprising an alu array |
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 |
JP5057256B2 (ja) | 2009-12-02 | 2012-10-24 | 株式会社Mush−A | データ処理装置、データ処理システムおよびデータ処理方法 |
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 |
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 |
KR101731742B1 (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 |
WO2012135050A2 (en) | 2011-03-25 | 2012-10-04 | Soft Machines, Inc. | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
TWI518504B (zh) | 2011-03-25 | 2016-01-21 | 軟體機器公司 | 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的暫存器檔案節段 |
US9619301B2 (en) | 2011-04-06 | 2017-04-11 | Telefonaktiebolaget L M Ericsson (Publ) | Multi-core memory model and speculative mode processor management |
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 |
US9690620B2 (en) * | 2011-12-01 | 2017-06-27 | National University Of Singapore | Polymorphic heterogeneous multi-core architecture |
WO2013095635A1 (en) | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction for merging mask patterns |
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 |
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 |
US9471318B2 (en) | 2013-03-15 | 2016-10-18 | International Business Machines Corporation | System management and instruction counting |
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 |
EP2972782A1 (en) | 2013-03-15 | 2016-01-20 | Intel Corporation | Path profiling using hardware and software combination |
US9880842B2 (en) | 2013-03-15 | 2018-01-30 | Intel Corporation | Using control flow data structures to direct and track instruction execution |
US10241793B2 (en) * | 2013-03-15 | 2019-03-26 | Analog Devices Global | Paralleizing loops in the presence of possible memory aliases |
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 |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
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 |
US9575541B2 (en) | 2013-08-28 | 2017-02-21 | Via Technologies, Inc. | Propagation of updates to per-core-instantiated architecturally-visible storage resource |
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 |
US9785441B2 (en) | 2014-05-29 | 2017-10-10 | Mill Computing, Inc. | Computer processor employing instructions with elided nop operations |
US9830159B2 (en) * | 2014-06-02 | 2017-11-28 | International Business Machines Corporation | Suspending branch prediction upon entering transactional execution mode |
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 |
US9875106B2 (en) * | 2014-11-12 | 2018-01-23 | Mill Computing, Inc. | Computer processor employing instruction block exit prediction |
US9569613B2 (en) | 2014-12-23 | 2017-02-14 | Intel Corporation | Techniques for enforcing control flow integrity using binary translation |
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 |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
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 |
US11755484B2 (en) | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US20160378488A1 (en) | 2015-06-26 | 2016-12-29 | Microsoft Technology Licensing, Llc | Access to target address |
US20160378491A1 (en) | 2015-06-26 | 2016-12-29 | Microsoft Technology Licensing, Llc | Determination of target location for transfer of processor control |
US20170083343A1 (en) | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Out of order commit |
-
2015
- 2015-06-26 US US14/752,727 patent/US10169044B2/en active Active
-
2016
- 2016-06-06 TW TW105117814A patent/TW201706830A/zh unknown
- 2016-06-23 CN CN201680036067.8A patent/CN107787480B/zh active Active
- 2016-06-23 EP EP16742071.0A patent/EP3314404B1/en active Active
- 2016-06-23 WO PCT/US2016/038847 patent/WO2016210024A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006102664A2 (en) * | 2005-03-23 | 2006-09-28 | Qualcomm Incorporated | Method and system for encoding variable length packets with variable instruction sizes |
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 |
CN102221987A (zh) * | 2011-05-11 | 2011-10-19 | 西安电子科技大学 | 基于嵌入式专用指令集处理器的指令集编码方法 |
Non-Patent Citations (1)
Title |
---|
解释型控制器的研究与实现;朱林等;《化工自动化及仪表》;20121231;第39卷(第12期);第1644-1647页 * |
Also Published As
Publication number | Publication date |
---|---|
US10169044B2 (en) | 2019-01-01 |
US20160378494A1 (en) | 2016-12-29 |
TW201706830A (zh) | 2017-02-16 |
EP3314404A1 (en) | 2018-05-02 |
CN107787480A (zh) | 2018-03-09 |
EP3314404B1 (en) | 2019-04-10 |
WO2016210024A1 (en) | 2016-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107810484B (zh) | 用于处理器的显式指令调度器状态信息 | |
CN107810481B (zh) | 处理器指令窗口中的指令块的基于年龄的管理 | |
KR102502780B1 (ko) | 디커플링된 프로세서 명령어 윈도우 및 피연산자 버퍼 | |
CN107771318B (zh) | 基于块大小将指令块映射到指令窗口 | |
CN107810486B (zh) | 锁定用于原子地执行的指令组的操作数的值 | |
CN107810482B (zh) | 指令块到处理器指令窗口的批量分配 | |
US20130151822A1 (en) | Efficient Enqueuing of Values in SIMD Engines with Permute Unit | |
US10409599B2 (en) | Decoding information about a group of instructions including a size of the group of instructions | |
CN107787480B (zh) | 处理标头以解释关于指令组的信息 | |
US20210042111A1 (en) | Efficient encoding of high fanout communications |
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 |