CN107787480B - 处理标头以解释关于指令组的信息 - Google Patents

处理标头以解释关于指令组的信息 Download PDF

Info

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
Application number
CN201680036067.8A
Other languages
English (en)
Other versions
CN107787480A (zh
Inventor
D·伯格
A·史密斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN107787480A publication Critical patent/CN107787480A/zh
Application granted granted Critical
Publication of CN107787480B publication Critical patent/CN107787480B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result 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中:
Figure BDA0001515110410000041
Figure BDA0001515110410000051
Figure BDA0001515110410000061
Figure BDA0001515110410000071
Figure BDA0001515110410000081
虽然表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位组标头的一个示例:
Figure BDA0001515110410000181
下面示出了高级语言的示例性程序及其成为包括组标头(具有表4中所示的示例性结构)的指令组的编译的一个示例:
程序:
Figure BDA0001515110410000182
具有指令组和组标头的编译的程序:
Figure BDA0001515110410000191
在上面的示例中,该指令组包括指令,诸如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所述的处理器,其中,关于所述指令组的所述信息还包括:正确性信息,还包括:
组正确性单元,用于基于所述正确性信息,确定所述指令组的正确性。
CN201680036067.8A 2015-06-26 2016-06-23 处理标头以解释关于指令组的信息 Active CN107787480B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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