CN102792265A - 基于机器状态的指令破解 - Google Patents
基于机器状态的指令破解 Download PDFInfo
- Publication number
- CN102792265A CN102792265A CN201080065187.3A CN201080065187A CN102792265A CN 102792265 A CN102792265 A CN 102792265A CN 201080065187 A CN201080065187 A CN 201080065187A CN 102792265 A CN102792265 A CN 102792265A
- Authority
- CN
- China
- Prior art keywords
- instruction
- operating unit
- address
- machine state
- pattern
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/342—Extension of operand address space
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- 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/30181—Instruction operation extension or modification
-
- 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
Abstract
一种方法、信息处理系统和计算机程序产品基于机器状态管理指令执行。接收至少一个指令。对所述至少一个指令解码。响应于该解码,确定当前机器状态。基于已确定的当前机器状态,把所述至少一个指令组织成一组操作单元。执行所述一组操作单元。
Description
技术领域
本发明一般地涉及微处理器,更具体地讲,涉及把指令组织成更简单的操作。
背景技术
用于增加IPC(每周期指令数)的各种常规方案把指令破解成更简单的操作单元(Uop)的集合。然而,虽然这些方案把指令破解成Uop,但破解通常基于指令操作码(opcode)是静态的,而非旨在用于硬件(特别是流出队列(issue queue))的高效使用。因此,流出队列可能在性能和流出带宽方面变差。
1989年10月10日提交的第4,873,629号美国专利"Instructionprocessing unit for computer"教导了计算机被构造用于优化指令的处理速度和数据的吞吐量。计算机包括主存储器、存储器控制单元、物理高速缓存单元和中央处理器。指令处理单元被包括在中央处理器内。指令处理单元的功能是对指令解码并产生指令执行命令或者指示中央处理器内的指令的执行。指令被从主存储器传送到寄存器,在寄存器,指令的地址字段被解码以产生破解的指令并且这些指令被存储在逻辑指令高速缓存中。当破解的指令被选择时,它们被传送到输出缓冲器和解码器,在那里指令的剩余字段被解码以产生指令执行命令。高速缓存中的指令存储在逻辑地址而非物理地址。高速缓存还能够以计算机的基本时钟周期的速度的两倍的速度工作,从而能够在一个时钟周期中选择分支指令。
1998年10月20日提交的第5,826,089号美国专利"Instructiontranslation unit configured to translate from a first instruction set to asecond instruction set"教导了一种指令转换单元,该指令转换单元把源指令集中的指令减少为中间的、原子操作的集合。所述原子操作随后被重新组合成目标指令集中的指令。耦合到指令转换单元的执行核可构造为执行来自目标指令集的指令。然而,保持与源指令集的兼容性。通过把多个源指令减少为原子操作,多个源指令的各部分可组合成目标指令。
2007年1月9日提交的第7,162,621号美国专利"Virtualinstruction expansion based on template and parameter selectorinformation specifying sign-extension or concentration"教导了一种可扩展指令集架构。在实施例中,微处理器包括存储器、虚拟指令扩展存储、以及替换逻辑。存储器存储包括索引和至少一个参数的至少一个虚拟指令。虚拟指令扩展存储包括至少一个指令模板和至少一个参数选择器。替换逻辑形成至少一个扩展指令的序列。在一个例子中,替换逻辑对所述至少一个参数进行符号扩展以按照由所述至少一个参数选择器指定的方式形成所述至少一个扩展指令的即时值。在另一例子中,替换逻辑将虚拟指令的第一参数和第二参数连接以按照由所述至少一个参数选择器指定的方式形成所述至少一个扩展指令的即时值。
因此,在现有技术中需要解决前述问题。
发明内容
在一个优选实施例中,公开了一种用于基于机器状态管理指令执行的方法。该方法包括:接收至少一个指令。对所述至少一个指令解码。响应于该解码确定当前机器状态。基于已确定的当前机器状态,把所述至少一个指令组织成一组操作单元。执行所述一组操作单元。
在另一优选实施例中,公开了一种用于基于机器状态管理指令执行的信息处理系统。该信息处理系统包括存储器和以可通信方式耦合到存储器的处理器。指令解码单元被构造为接收至少一个指令。指令解码单元还构造为对所述至少一个指令解码。机器状态确定单元构造为响应于该解码而确定当前机器状态。处理器内的指令破解单元构造为基于已确定的当前机器状态把所述至少一个指令组织成一组操作单元。处理器构造为执行所述一组操作单元。
在另一优选实施例中,公开了一种用于基于机器状态管理指令执行的计算机程序产品。该计算机程序产品包括存储介质,该存储介质可由处理电路读取并存储由处理电路运行以执行一种方法的指令。该方法包括:接收至少一个指令。对所述至少一个指令解码。响应于该解码确定当前机器状态。基于已确定的当前机器状态把所述至少一个指令组织成一组操作单元。执行所述一组操作单元。
从另一方面来看,本发明提供了一种存储在计算机可读介质上并可加载到数字计算机的内存中的计算机程序,该计算机程序包括软件代码部分,当所述程序在计算机上运行时,所述软件代码部分用于执行本发明的步骤。
附图说明
现在将参照如下面附图中所示的优选实施例仅作为示例描述本发明:
图1示出根据本发明一个优选实施例的工作环境的一个例子;
图2示出根据本发明一个优选实施例的处理核的详细视图;
图3-6显示根据本发明优选实施例的基于机器状态破解指令的各种例子;以及
图7是示出根据本发明的一个或多个优选实施例的基于机器状态破解指令的一个例子的工作流程图。
具体实施方式
根据需要,在本文公开本发明的详细优选实施例;然而,应该理解,公开的优选实施例仅是能够以各种形式实现的本发明的例子。因此,本文公开的具体结构和功能细节不应解释为限制性的,而应解释为权利要求的基础和教导本领域技术人员按照事实上任何合适地详细的结构和功能以各种方式利用本发明的代表性基础。另外,本文使用的术语和短语并不是限制性的;相反地,意在提供本发明的可理解的描述。
本文所使用的术语“a”或“an”定义为一个或多于一个。本文所使用的术语“多个”定义为两个或多于两个。本文所使用的术语“另一”定义为至少再一个或更多。本文所使用的术语“包含”和/或“具有”定义为包括(即,开放式语言)。本文所使用的术语“耦合”定义为连接,但不一定是直接连接并且不一定是机械连接。复数和单数术语相同,除非明确地指出不是这样。
工作环境
图1显示适用于本发明的各种优选实施例的示例性工作环境。具体地讲,图1显示实现了本发明的一个优选实施例的并行分布式处理系统。在这个优选实施例中,并行分布式处理系统100工作于SMP计算环境中。在SMP计算环境中,并行应用能够具有在同一处理节点上的不同处理器上执行的几个任务(进程)。并行分布式处理系统100在经由多个网络适配器106和108耦合到另一节点的多个处理节点102和104上执行。每个处理节点102和104是独立的计算机,具有它自己的操作系统映像110和112、位于系统存储器总线126和128上的通道控制器114和116、存储器118和120以及处理器122和124。系统输入/输出总线130和132耦合I/O适配器134和136以及通信适配器106和108。虽然为了简单而在每个处理节点102和104中仅显示一个处理器122和124,但每个处理节点102和104能够具有超过一个处理器。通信适配器经由网络交换机138链接在一起。
此外,节点102、104中的一个或多个包括大容量存储接口140。大容量存储接口140用于把大容量存储装置142连接到节点102。一种特定类型的数据存储装置是计算机可读介质(诸如,压缩盘(“CD”)驱动器),它可用于把数据存储到CD 144或DVD以及从CD144或DVD读取数据。另一类型的数据存储装置是构造为支持例如JFS类型文件系统操作的硬盘。在一些优选实施例中,不同的处理节点102和104能够是处理集群的一部分。本发明不限于SMP环境。其它架构也适用,并且本发明的另外的优选实施例也能够工作于单个系统内。
处理器核
根据一个优选实施例,图2示出用于基于机器状态破解指令的处理器122、124内的处理器核200的一个例子。应该注意的是,图2中显示的结构仅是适用于当前要求保护的发明的一个例子。具体地讲,图2显示处理器核200。在一个优选实施例中,处理器核200包括总线接口单元202,总线接口单元202把处理器核200耦合到其它处理器和外围设备。总线接口单元202还把读取和存储数据值的L1数据高速缓存(Dcache)204、读取程序指令的L1指令高速缓存(Icache)206和高速缓存接口单元208连接到外部存储器、处理器和其它装置。
L1Icache 206结合指令取出单元IFU 210提供指令流的加载,指令取出单元IFU 210预取指令并且可包括推测加载和分支预测能力。这些取出的指令代码由指令解码单元IDU 212解码为指令处理数据。一旦解码,指令被分派给指令排序单元(ISU)214。ISU 214控制发出给各种执行单元(诸如用于执行一般运算的一个或多个定点单元(FXU)216和用于执行浮点运算的一个或多个浮点单元(FPU)218)的指令的排序。浮点单元218能够是二进制浮点单元220和/或十进制浮点单元221等。应该注意的是,在一个优选实施例中,FXU 216包括多个FXU流水线(pipeline),这些FXU流水线是彼此的拷贝。ISU 214还经由一个或多个LSU流水线耦合到一个或多个加载/存储单元(LSU)230。这一个或多个LSU流水线被视为用于执行加载和存储以及分支的地址产生的执行单元。
驻留在ISU 214内的全局完成表(GCT)222的集合经由标签跟踪由ISU 214发出的指令,直至由作为指令的目标的特定执行单元指示指令已完成执行。FXU 216和FPU 218耦合到各种资源,诸如通用寄存器(GPR)224和浮点寄存器(FPR)226。GPR224和FPR226为由加载存储单元(LSU)230从L1Dcache 204加载和存储的数据值提供数据值存储。另外,对于以上讨论的处理器核200的结构,在一个优选实施例中,LSU 230包括加载队列(LDQ)232、存储队列(STQ)234和存储缓冲器(STB)236。LDQ 232和STQ 234中的每一个分别包括跟踪与未完成的加载和存储指令关联的附加信息的条目238、240。例如,LDQ 232的条目238包括对应的加载指令的开始地址和结束地址。STQ 234的条目240包括对应的存储数据的开始地址和结束地址。STB 236包括条目242,在条目242,对应的存储指令在把它的数据写回到高速缓存204之前保存它的数据。
在一个优选实施例中,IDU 212包括破解单元244。破解单元244把复杂指令组织/拆散成更简单的单位。换句话说,破解单元244把指令组织成能够在执行单元中处理的一组操作单元(Uop)。以下更详细地讨论破解单元244。在一个优选实施例中,IDU 212还包括机器状态确定单元246,机器状态确定单元246确定机器状态控制位(诸如但不限于,程序状态字(PSW)位)的当前状态、millimode状态、slowmode状态、仿真有效状态等。在一个优选实施例中,也能够从指令自身的指令文本确定机器状态。例如,如果R2字段是零;如果I2字段是特定恒定值;如果屏蔽字段是连续的或者是零;等等,则指令能够被破解为不同的Uop的集合。
以下更详细地讨论机器状态确定单元246。在这个优选实施例中,IDU 212还包括指令缩短单元248,指令缩短单元248通过例如减少执行步骤和/或执行流水线来改变指令的执行。缩短的指令占用更少的流出队列资源并改善流出队列带宽,在一些情况下占用更少的GCT资源,加速完成,减小功耗,导致更少的LDQ/STQ资源分配等。以下更详细地讨论指令缩短单元248。
基于机器状态管理指令
如以上所讨论,计算机系统通常包括指令取出部分/单元、指令解码单元、指令分组和分派单元、指令排序和发出单元、执行单元(定点、加载存储、BFU、DFU等)和指令完成单元。指令解码指的是指令首先被解码和理解。关于指令的分组、破解、指令特性(诸如,加载、存储)等的信息被解码。在指令分派(在次序上为最后),诸如逻辑寄存器号和类型(GPR、FPR、AR等)、条件码读/写、FPC读/写、PSW读/写等的信息被提供给ISU 214。
ISU 214把逻辑寄存器拷贝映射到物理寄存器拷贝,设置依赖向量,并把分派的指令存储在指令队列中。准备好发出的指令被从指令队列读取,按照执行单元和龄期(age)评级,然后发出给执行单元。例如,如果两个指令准备好发出给FXU pipe0(流水线0),则仅发出最老的指令,因为每个执行单元仅能接收一个指令。
因此,除了以上参照图1讨论的一般处理机制之外,本发明的各种优选实施例通过优化指令处理的速度以及增加数据的吞吐量而增加IPC(每周期指令数)。例如,流出队列对于性能敏感。因此,本发明的各种优选实施例通过针对满足周期时间要求的固定大小队列改变解码的指令的处理,节省流出队列条目。这提高了流出队列的总体性能。
在一个优选实施例中,在指令解码时间期间,在指令处理/解码时间期间使用包括程序状态字(PSW)位的机器状态控制位,以通过改变指令破解和/或应用指令缩短来改变指令执行。指令改变提高了性能并确保正确的指令执行。
当IFU 210从I-cache 206取出指令时,IFU 210把指令发送到流水线中以由IDU 212解码。IDU 212对指令解码并识别指令类型,诸如但不限于,RR类型分支指令(例如,BCTR、BCTGR、BCR和BASR和BALR);LA、LAY、LAE和LAEY类型指令;移位/旋转类型指令(例如,RLL和RLLG);和LCTL和SPKA指令。机器状态确定单元246随后基于机器状态控制位(包括程序状态字(PSW)位)确定机器状态。
一些程序状态字(PSW)位是地址模式位(PSW(31:32))、地址空间位(PSW(16:17))、问题状态位(PSW(15))。关于问题状态位,如果这个位是0,则处理器处于允许所有指令的“超级用户状态(supervisorstate)”。当这个位是1时,需要一些额外的执行处理以确定是否允许执行,即未检测到异常。关于地址空间位,这些位控制转换模式。在一种模式(AR模式)中,由基址寄存器编号指定的存取寄存器的内容需要转换。关于地址模式位,这些位影响有效地址的大小和有效地址产生。值“00”指示24位的地址大小;值“01”指示31位的地址大小;并且值“11”指示64位的地址大小。地址产生和使用的大小经常称为“寻址模式”。
改变指令处理的其它处理器状态包括millimode状态、slowmode状态、仿真有效状态等。Millimode状态当被设置时指示:处理器正在执行除程序模式之外对于程序员不可见的代码。Millimode代码用于执行复杂指令,处理程序异常、异步异常等。当处理器正在执行主要用于报告精确的异常以及在多处理系统中采取前向进展的单个指令(从指令取出直至完成)时,设置slowmode位。
基于这些识别的值,IDU 214改变解码的指令的处理。在一个优选实施例中,通过基于识别的机器状态破解指令能够改变解码的指令的处理;基于识别的机器状态能够缩短指令;和/或指令能够基于识别的机器状态被强迫变为毫码(millicode),如以下更详细地讨论的。
下面的例子示出如何通过基于识别的机器状态破解、缩短和/或强迫指令以毫码执行来改变解码的指令的处理。应该注意的是,在下面的例子中使用的指令集是非限制性的,因为本发明的各种优选实施例也适用于其它指令集。
如以上所讨论的,各种指令对于机器状态敏感,这在一个优选实施例中由地址模式位给出。当存储器地址能够被指定为可变大小时,包括z-微处理器的当前微处理器在不同的地址模式上运行应用。在z-微处理器中,根据寻址模式,地址的大小能够是24位、31位和64位。寻址模式位是PSW的位31:32。通过把基址寄存器与变址寄存器与指令的位移字段相加,形成地址产生(AGEN)。通用寄存器(GPR)被指定为64位寄存器编号,其中高字(位0:31)和低字32位(位32:63)被独立地控制。例如,GPR的高字和低字被映射并不同地重命名,并且能够指向两个不同的物理寄存器。换句话说,16架构的GPR能够被视为两组GPR,其中一组包括GPR的高部分并且另一组包括GPR的低部分。
在64位寻址模式中,基址寄存器和变址寄存器的高字和低字是AGEN计算的源。在微处理器(诸如,z-微处理器)中的指令取出单元中预测地址模式位。与预测的寻址模式位(用于从指令高速缓存取出指令的寻址)和识别是否从毫码指令空间取出指令的毫码位一起提供传送给指令解码单元的指令。除了在AGEN计算中使用的基址寄存器和变址寄存器之外,当在存取寄存器模式(AR-模式)中完成操作数存取时,需要由基址寄存器编号(AR-基址)指定的存取寄存器以用于高速缓存操作数地址转换。AR-模式由PSW位16:17(地址空间)、位5(DAT位)和其它毫码控制寄存器位指定。
对地址模式位敏感的一组指令是保存和链接分支,诸如BASR、BAS、BAL和BALR指令。这些指令分支到由第二操作数指定的新指令地址(对于BALR/BASR为GPR-R2、对于BAL/BAS为GPR-B2+D2)。另外,包括更新的指令地址的程序状态字(PSW)中的信息被作为链接信息保存在第一操作数位置。保存的PSW信息包括由PSW位31和32指定的寻址模式位。
在一个优选实施例中,机器状态确定单元246确定当前机器状态处于由PSW中的地址模式位指示的24或31位地址模式。在这个优选实施例中,破解单元把指令破解为给定数量的Uop,诸如3个Uop,如图3中所示。第一Uop1 302计算分支目标地址。第二Uop2304确定计算要执行的下一指令的地址(指令地址IA+指令长度码)并把结果存储在暂存(scratch)GPR中。第三Uop3 306把链接信息存储在指示破解之前的机器的状态的GPR中。在这个优选实施例中,在PSW的位32中找到该链接信息。
如果机器状态确定单元246确定当前机器状态是64位地址模式,则与3个Uop相比,缩短单元248把指令的破解缩短为2个Uop,如图3和4中所示。在这个优选实施例中,破解单元把指令破解为给定数量的Uop,诸如2个Uop,如图4中所示。第一Uop1计算分支目标地址。第二Uop2计算要执行的下一指令的地址(指令地址IA+ILC(指令长度码))并把结果存储在暂存GPR中。能够看出,指令根据处理器的寻址模式而被不同地破解。
在另一优选实施例中,分别如针对处于24位和31位模式的BAL/BALR的图5和6中所示,机器状态确定单元246确定当前机器状态处于由PSW中的地址模式位指示的24或31位地址模式。在这个优选实施例中,破解单元把指令破解为给定数量的Uop,诸如3个Uop,如图5和6中所示。第一Uop1计算分支目标地址。第二Uop2计算要执行的下一指令的地址(指令地址IA+ILC(指令长度码))并把结果存储在暂存GPR中。第三Uop3把处于24位模式的BAL/BALR的图5中的链接信息(诸如,条件码、指令长度码和程序掩码(PSW(20:23)))和处于31位模式的BAL/BALR的图6中的PSW位31中找到的链接信息存储在指示破解之前的机器的状态的GPR中。
下一例子关于强迫指令以毫码执行。毫码对于外部应用或编译器而言是不可见的,而是由许可内码(Licensed Internal Code)使用。如果指令太复杂而无法由硬件执行,则强迫指令以毫码执行。毫码能够视为垂直微码,其中对于以毫码执行的每个指令,处理器从毫码空间(存储系统区域)取出独一无二的一组指令(公布的一毫码专用辅助指令)并执行它们。强迫指令变为毫码需要经常称为毫条目(milli-entry)序列的Uop序列。在指令解码时,评估指令是否“复杂”,并且如果指令“复杂”,则替代于指令的普通分派序列,分派毫条目Uop的序列。下面是由机器状态确定单元246检察的触发硬件强迫给定指令变为毫码的一些条件。
机器状态确定单元246检测的一种条件是是否指令处于仿真模式下(代码在不是主机的Guest1或Guest2中运行)并且是否可进行SIE(开始解释执行)拦截或者指令是否正在仿真模式中加载CR-E,诸如针对加载和控制(LCTL/LCTLG)指令。在LCTL/LCTLG指令中,控制寄存器范围为从CR-R1到CR-R3并且从由第二操作数位置指定的存储器加载。第二操作数地址等于添加到指令文本中指定的位移字段(D2字段)的GPR-B2的内容。
SIE拦截可由不能在仿真模式中运行的指令触发,并且拦截使主机重获控制。在这个优选实施例中,机器状态确定单元246分析控制寄存器以识别指示指令是否处于仿真模式下的一个或多个控制位。如果指令处于仿真模式下,则强迫指令以毫码执行。
机器状态确定单元246检测的另一条件是指令(诸如,SPKA(设置程序PSW键)指令)是否处于问题状态。在这个优选实施例中,机器状态确定单元246分析PSW并确定位15是否设置为1,其中1指示问题状态。如果这个条件是真,则强迫指令以毫码执行。
在另一例子中,由通过设置内部锁存器或动态编程的一组锁存器或寄存器而代表的设计状态指示机器的状态。在这个例子中,机器状态确定单元246确定禁用(仅扫描锁存器)锁存器或动态编程的锁存器是否被置位或等于某个值。如果是这样,则强迫指令以毫码执行。通过把工程数据扫描到设计中,在系统加电时初始化仅扫描锁存器。换句话说,这些锁存器总是在通电时被初始化为预定值。与之相对,动态编程的锁存器或寄存器能够在系统运行的同时被设置为预定值。
另一条件关于指令重叠,基于指令的指令文本能够确定指令重叠。在这个例子中,由机器状态确定单元246提供串行化opcode(操作码)机制,机器状态确定单元246确定:在解码时,解码的指令的opcode是否与保存的opcode匹配。例如,如果指令(诸如但不限于,MVC指令)正常地在AGEN(操作数地址产生)时被首先分派,则机器状态确定单元246确定指令操作数破坏性地重叠。然后,清洗(flush)MVC指令并采取动作以强迫指令变为毫码。然后从Icache取出指令并把指令给予解码逻辑。解码逻辑随后确定此时应该强迫指令变为毫码,从而一次一个字节地以更慢的方式执行移动。
另一条件针对分支指令,诸如BALR、BSM、BASSM和BASR指令。在这个例子中,机器状态确定单元246确定是否启用分支追踪。在分支追踪模式中,关于分支指令的信息(诸如,分支目标地址)由于诸如软件调试目的的原因而存储在存储器区域中。例如,机器状态确定单元246在控制寄存器(诸如,控制寄存器12)中检查并确定是否启用分支追踪。如果启用,则强迫指令以毫码执行。
另一条件针对设置地址模式指令,诸如SAM24、SAM31和SAM64指令。在这个例子中,机器状态确定单元246确定是否启用模式追踪。在模式追踪模式中,关于更新寻址模式的指令的信息由于诸如软件调试目的的原因而存储在存储器中。例如,机器状态确定单元246在控制寄存器(诸如,控制寄存器12)中检查并确定是否启用了模式追踪。如果启用,则强迫指令以毫码执行。
在另一例子中,机器状态确定单元246还确定是否针对指令(诸如但不限于监测器调用(MC)指令)启用选择的监测器类。在这个例子中,机器状态确定单元246比较指令文本12:15与控制寄存器8个位48:62。如果机器状态确定单元246确定任何选择的监测器类被启用,则强迫指令以毫码执行,从而发生设备和程序的监测。
当基于以上讨论的条件强迫指令变为毫码时,破解单元244把指令破解成一组Uop。在一个例子中,毫条目序列包括多达9个Uop。第一Uop,Uop1:MGR9←第一操作数地址,计算第一操作数的地址并把这个地址存储到毫码GR(诸如,MGR9)中。基于指令格式计算第一操作数地址。例如,对于RX格式,第一操作数地址等于基址GPR值+变址GPR+位移值。
第二Uop,Uop2:MAR9←AR-基址,保存转换所需的存取寄存器编号。在存取寄存器(AR)模式中从用于转换的程序存取寄存器(AR-reg)设置毫码AR-寄存器9。以RX/RS/SS格式,AR-基址寄存器是用于转换的AR。第三Uop,Uop3,复制PSW中的位(诸如,存取键、地址模式、地址空间等),并把这些位存储在称为操作数存取控制寄存器的内部毫码控制寄存器中。替代于用于操作数存取和AGEN计算的程序PSW,使用操作数存取控制寄存器。
第四Uop,Uop4:MGR11←第二操作数地址,类似于第一Uop,不同之处在于第二操作数地址正在被计算。与Uop1一样,基于指令格式计算第二操作数地址。例如,对于SS格式指令,第二操作数地址等于Base2GPR值+位移2值。这个Uop用于包括2个存储器操作数的指令。第五Uop,Uop5:MAR11←AR-Base2,类似于Uop2,但与第一操作数相比,针对的是第二操作数。第六Uop,Uop6:另一毫码控制寄存器,基于指令格式和它的指令测试位被更新。这个Uop促进以毫码执行指令。
第七Uop,Uop7:MGR5←针对一些指令类型的第一操作数长度,存储第一操作的操作数长度。第八Uop,Uop8:MGR7←针对一些指令类型的第二操作数长度,存储第二操作数的操作数长度。第九Uop,Uop9,是分支Uop,因为进入毫码类似于能够由分支预测逻辑预测的至子例程的分支,
在另一例子中,机器状态确定单元246分析作为寻址模式位的函数的GPR(低字对整个双字)目标的大小。加载地址类型指令(例如,LA、LAY、LAE、LAEY和LARL)的GPR目标大小(低字对整个双字)也是寻址模式位的函数。关于加载地址类型指令,由B2、X2和D2指定的有效地址被放在通用寄存器R1中。有效地址(GPR-B2+GPR-X2+D2)大小在24位模式中是24位,在31位寻址模式中是31位,并且在64位寻址模式中是64位。在PSW中识别寻址模式。在24位和31位寻址模式中,仅更新GPR-R1的低字(低32位),并且高字保持不变。在64位中,地址更新整个64位GPR-R1。
如以上所讨论,在24和31位地址模式中,仅GPR-R1的低32位(位32:63)被利用新的值更新,而GPR的位0:31保持不变。在64位地址模式中,更新GPR-R1的位0:63。在具有不同寻址模式的处理器中,GPR的低字(位32:63)独立于GPR的高字(位0:31)被映射到物理寄存器。结果,在指令解码周期期间,检查寻址模式,并且如果处于24或31位地址模式,则仅GPR-R1的低字被识别为指令目标,因此,仅GPR-R1的低字被映射到物理寄存器。定义GPR源/目标的正确大小还具有功率益处,因为如果仅GPR的低字被指定为目标,则将不会对映射器的一半使用时钟。
在另一例子中,机器状态确定单元246分析作为地址模式的函数的GPR读(32位读对64位读)的大小。用于高速缓存存取(加载、存储)的地址产生(AGEN)计算、分支目标和加载地址指令依赖于地址模式。操作数地址和分支目标在24位地址模式中定义为24位,在31位地址模式中定义为31位,并且在64位地址模式中定义为64位。因此,在指令解码时,检查地址模式,并且地址模式被确定为处于24位还是31位模式,然后基址和变址寄存器的高字(位0:31)不被识别为AGEN计算的源。这导致针对基址/变址寄存器的高字的映射器查找的节电,并在更老的指令正在更新基址或变址寄存器位0:31的情况下去除检测上的任何GPR互锁。
在另一例子中,机器状态确定单元246分析作为地址空间(PSW(16:17))和PSW(5)的函数的存取寄存器(AR-reg)源。数据高速缓存存取地址经受从逻辑地址到绝对地址的转换。用于操作数存取的一种转换模式是存取寄存器模式(AR-模式)转换。在这种模式中,AR-reg内容用于转换。对于利用基址和变址寄存器的RX加载/存储,如果在AR-模式中完成取出/存储,则AR-基址的内容需要转换。AR-模式定义为PSW(16:17)=“01”,并且DAT位(PSW(5))或者其它控制状态有效。因此,在指令解码时,机器状态确定单元246检查高速缓存存取是否将会处于AR-模式并相应地设置AR-基址作为源。因此,如果高速缓存存取不处于AR-模式,则AR-基址不被识别为AGEN的源,并且通过不查找它的映射的物理寄存器编号而节电,并且还在更老的指令正在更新AR-基址的情况下去除检测上的指令依赖性。
从以上讨论能够看出,本发明的各种优选实施例改变解码的指令的处理。在一个优选实施例中,通过基于识别的机器状态破解指令,能够改变解码的指令的处理;基于识别的机器状态能够缩短指令;和/或指令能够基于识别的机器状态被强迫变为毫码。从PSW位(诸如,地址模式位(PSW(31:32))、地址空间位(PSW(16:17))、问题状态位(PSW(15)))能够确定机器状态。改变指令处理的其它处理器状态位包括millimode位、slowmode位、仿真有效位等。此外,实际指令文本自身被视为“机器状态”并用于改变解码的指令的处理。
工作流程图
图7是示出基于机器状态破解指令的一个例子的工作流程图。图7的工作流程图开始于步骤702并直接前进至步骤704。IDU 214在步骤3104接收指令。IDU 214在步骤706对指令解码。IDU 214经由机器状态确定单元24在步骤708确定当前机器状态,如以上参照图2-6所讨论的。根据步骤708的结果,从如图中所示的n种破解序列选择一种破解序列。对于破解序列1,IDU 214经由破解单元244在步骤710把所述至少一个指令组织成一组操作单元。然后在步骤712执行该组操作单元。控制流程随后在步骤714退出。同样地,对于破解序列2,IDU 214经由破解单元244在步骤720把所述至少一个指令组织成一组操作单元。然后在步骤722执行该组操作单元。控制流程随后在步骤724退出。并且对于破解序列N,IDU 214经由破解单元244在步骤730把所述至少一个指令组织成一组操作单元。然后在步骤732执行该组操作单元。控制流程随后在步骤734退出。
非限制性例子
虽然已公开了本发明的特定优选实施例,但本领域普通技术人员将会理解,在不脱离本发明的精神和范围的情况下,能够对这些特定优选实施例做出改变。本发明的范围因此不限于这些特定优选实施例,并且所附权利要求旨在覆盖本发明的范围内的任何和所有这种应用、修改和优选实施例。
虽然在全功能计算机系统的环境下讨论了本发明的各种示例性优选实施例,但本领域普通技术人员将会理解,各种优选实施例能够经由CD或DVD(例如,CD、CD ROM)或其它形式的可记录介质或者经由任何类型的电子传输机制作为程序产品被分发。
为了避免疑惑,在整个说明书和权利要求中使用的术语“包括”不应解释为“仅由…构成”的意思。
权利要求书(按照条约第19条的修改)
1.一种用于基于当前机器状态管理指令执行的方法,该方法包括下述步骤:
接收至少一个指令;
对所述至少一个指令解码;
响应于解码的步骤确定当前机器状态;
基于已确定的当前机器状态并且在具有作为处理器核的一部分的指令缩短单元的指令解码单元中,把所述至少一个指令组织成一组操作单元,以通过减少执行步骤和执行流水线中的至少一种而使固定大小队列满足给定周期时间要求;以及
执行所述一组操作单元。
2.如权利要求1所述的方法,其中确定的步骤还包括下述步骤:
分析与所述至少一个指令关联的指令文本和一组机器状态控制位中的至少一种,其中所述一组机器状态控制位包括:
slowmode状态;和
仿真有效状态。
3.如前面权利要求中任一项所述的方法,其中确定的步骤还包括下述步骤:
分析与所述至少一个指令关联的一组机器状态控制位和指令文本中的至少一种,其中所述一组机器状态控制位包括一组程序状态字位,该组程序状态字位包括:
一组地址模式位;
地址状态位;和
问题状态位。
4.如前面权利要求中任一项所述的方法,其中组织的步骤基于与至少第一地址模式和第二地址模式之一关联的当前机器状态,并且其中组织的步骤还包括下述步骤:
如果当前机器状态与第一地址模式关联,则把所述至少一个指令组织成第一多个操作单元;以及
如果当前机器状态与第二地址模式关联,则把所述至少一个指令组织成第二多个操作单元,其中第二多个操作单元包括比第一多个操作单元少至少一个操作单元的操作单元。
5.如前面权利要求中任一项所述的方法,还包括下述步骤:
基于已确定的当前机器状态,确定所述至少一个指令要以毫码执行。
6.如权利要求5所述的方法,其中所述当前机器状态已被确定为处于以下状态中的至少一个:
仿真模式;
问题状态;
禁用锁存器模式;
动态编程锁存器模式;
串行化操作码模式;
分支追踪模式;
模式追踪模式;和
监测器类选择模式。
7.如权利要求5或6所述的方法,其中组织所述至少一个指令的步骤基于确定所述至少一个指令要以毫码执行,并且其中所述一组操作单元包括:
第一操作单元,确定第一操作数的地址;
第二操作单元,基于用于在存取寄存器模式中转换第一操作数的地址的程序存取寄存器设置毫码存取寄存器;
第三操作单元,基于当前程序状态字值设置至少一个毫码控制寄存器;
第四操作单元,确定第二操作数的地址;
第五操作单元,基于用于在存取寄存器模式中转换第二操作数的地址的程序存取寄存器设置毫码存取寄存器;
第六操作单元,把所述至少一个指令的指令文本的至少一部分复制到毫码控制寄存器;
第七操作单元,把第二操作数的长度存储到毫码通用寄存器中;
第八操作单元,把第二操作数的长度存储到毫码通用寄存器中;和
第九操作单元,其为分支操作单元。
8.如前面权利要求中任一项所述的方法,其中确定当前机器状态的步骤还包括:
根据一组寻址模式位,确定与所述至少一个指令关联的通用寄存器的大小。
9.如前面权利要求中任一项所述的方法,其中确定当前机器状态的步骤还包括:
根据一组寻址模式位,确定与所述至少一个指令关联的通用寄存器读类型。
10.如前面权利要求中任一项所述的方法,其中确定当前机器状态的步骤还包括下述步骤:
根据地址空间和多控制数据空间模式,确定与所述至少一个指令关联的地址寄存器源。
11.一种用于基于当前机器状态管理指令执行的信息处理系统,该信息系统包括:
处理器;
存储器,以可通信的方式耦合到处理器;
指令解码单元,用于:
接收至少一个指令;以及
对所述至少一个指令解码;
该指令解码单元包括:
机器状态确定单元,用于响应于所述至少一个指令被解码而确定当前机器状态;和
指令破解单元和指令缩短单元,用于基于已确定的当前机器状态,把所述至少一个指令组织成一组操作单元,以通过减少执行步骤和执行流水线中的至少一种而使固定大小队列满足给定周期时间要求,
其中所述处理器用于执行所述一组操作单元。
12.如权利要求11所述的信息处理系统,其中所述指令解码单元还用于:
分析与所述至少一个指令关联的指令文本和一组机器状态控制位中的至少一种,其中所述一组机器状态控制位包括:
slowmode状态;和
仿真有效状态
13.如权利要求11或12所述的信息处理系统,其中基于与至少第一地址模式和第二地址模式之一关联的当前机器状态把所述至少一个指令组织成一组操作单元,并且其中所述指令破解单元还用于:
如果当前机器状态与第一地址模式关联,则把所述至少一个指令组织成第一多个操作单元;以及
如果当前机器状态与第二地址模式关联,则把所述至少一个指令组织成第二多个操作单元,其中第二多个操作单元包括比第一多个操作单元少至少一个操作单元的操作单元。
14.如权利要求11至13中任一项所述的信息处理系统,其中所述指令破解单元还用于基于确定所述至少一个指令要以毫码执行来组织所述至少一个指令,并且其中所述一组操作单元包括:
第一操作单元,确定第一操作数的地址;
第二操作单元,基于用于在存取寄存器模式中转换第一操作数的地址的程序存取寄存器设置毫码存取寄存器;
第三操作单元,基于当前程序状态字值设置至少一个毫码控制寄存器;
第四操作单元,确定第二操作数的地址;
第五操作单元,基于用于在存取寄存器模式中转换第二操作数的地址的程序存取寄存器设置毫码存取寄存器;
第六操作单元,把所述至少一个指令的指令文本的至少一部分复制到毫码控制寄存器;
第七操作单元,把第二操作数的长度存储到毫码通用寄存器中;
第八操作单元,把第二操作数的长度存储到毫码通用寄存器中;和
第九操作单元,其为分支操作单元。
15.一种用于基于当前机器状态管理指令执行的计算机程序产品,该计算机程序产品包括:
计算机可读存储介质,可由处理电路读取并存储由处理电路执行以执行如权利要求1至10中任一项所述的方法的指令。
16.一种存储在计算机可读介质上并可加载到数字计算机的内存中的计算机程序,包括软件代码部分,当所述程序在计算机上运行时,所述软件代码部分用于执行如权利要求1-10中任一项所述的方法。
Claims (17)
1.一种用于基于机器状态管理指令执行的方法,该方法包括下述步骤:
接收至少一个指令;
对所述至少一个指令解码;
响应于解码的步骤,确定当前机器状态;
基于已确定的当前机器状态,把所述至少一个指令组织成一组操作单元;以及
执行所述一组操作单元。
2.如权利要求1所述的方法,其中确定的步骤还包括下述步骤:
分析与所述至少一个指令关联的指令文本和一组机器状态控制位中的至少一种。
3.如权利要求2所述的方法,其中所述一组机器状态控制位包括以下的至少一项:
一组程序状态字位;
毫码状态;
slowmode状态;和
仿真有效状态。
4.如权利要求3所述的方法,其中所述一组程序状态字位包括以下的至少一项:
一组地址模式位;
地址状态位;和
问题状态位。
5.如前面权利要求中任一项所述的方法,其中组织的步骤基于与至少第一地址模式和第二地址模式之一关联的机器状态,并且其中组织的步骤还包括下述步骤:
如果机器状态与第一地址模式关联,则把所述至少一个指令组织成第一多个操作单元;以及
如果机器状态与第二地址模式关联,则把所述至少一个指令组织成第二多个操作单元,其中第二多个操作单元包括比第一多个操作单元少至少一个操作单元的操作单元。
6.如前面权利要求中任一项所述的方法,还包括下述步骤:
基于已确定的机器状态,确定所述至少一个指令要以毫码执行。
7.如权利要求6所述的方法,其中所述机器状态已被确定为处于以下状态的至少一个:
仿真模式;
问题状态;
禁用锁存器模式;
动态编程锁存器模式;
串行化操作码模式;
分支追踪模式;
模式追踪模式;和
监测器类选择模式。
8.如权利要求6或7所述的方法,其中组织所述至少一个指令的步骤基于确定所述至少一个指令要以毫码执行,并且其中所述一组操作单元包括以下的至少一项;
第一操作单元,确定第一操作数的地址;
第二操作单元,基于用于在存取寄存器模式中转换第一操作数的地址的程序存取寄存器设置毫码存取寄存器;
第三操作单元,基于当前程序状态字值设置至少一个毫码控制寄存器;
第四操作单元,确定第二操作数的地址;
第五操作单元,基于用于在存取寄存器模式中转换第二操作数的地址的程序存取寄存器设置毫码存取寄存器;
第六操作单元,把所述至少一个指令的指令文本的至少一部分复制到毫码控制寄存器;
第七操作单元,把第二操作数的长度存储到毫码通用寄存器中;
第八操作单元,把第二操作数的长度存储到毫码通用寄存器中;和
第九操作单元,其为分支操作单元。
9.如前面权利要求中任一项所述的方法,其中确定当前机器状态的步骤还包括:
根据一组寻址模式位,确定与所述至少一个指令关联的通用寄存器的大小。
10.如前面权利要求中任一项所述的方法,其中确定当前机器状态的步骤还包括:
根据一组寻址模式位,确定与所述至少一个指令关联的通用寄存器读类型。
11.如前面权利要求中任一项所述的方法,其中确定当前机器状态的步骤还包括下述步骤:
根据地址空间和多控制数据空间模式,确定与所述至少一个指令关联的地址寄存器源。
12.一种用于基于机器状态来管理指令执行的信息处理系统,该信息系统包括:
处理器;
存储器,以可通信的方式耦合到处理器;
指令解码单元,用于:
接收至少一个指令;以及
对所述至少一个指令解码;
机器状态确定单元,用于响应于所述至少一个指令被解码而确定当前机器状态;和
指令破解单元,位于处理器内,用于基于已确定的当前机器状态把所述至少一个指令组织成一组操作单元,
其中所述处理器用于执行所述一组操作单元。
13.如权利要求12所述的信息处理系统,其中所述指令解码单元还用于:
分析与所述至少一个指令关联的指令文本和一组机器状态控制位中的至少一种。
14.如权利要求12或13所述的信息处理系统,其中基于与至少第一地址模式和第二地址模式之一关联的机器状态把所述至少一个指令组织成一组操作单元,并且其中所述指令破解单元还用于:
如果机器状态与第一地址模式关联,则把所述至少一个指令组织成第一多个操作单元;以及
如果机器状态与第二地址模式关联,则把所述至少一个指令组织成第二多个操作单元,其中第二多个操作单元包括比第一多个操作单元少至少一个操作单元的操作单元。
15.如权利要求12至14中任一项所述的信息处理系统,其中所述指令破解单元还用于基于确定所述至少一个指令要以毫码执行而组织所述至少一个指令,并且其中所述一组操作单元包括以下的至少一项:
第一操作单元,确定第一操作数的地址;
第二操作单元,基于用于在存取寄存器模式中转换第一操作数的地址的程序存取寄存器设置毫码存取寄存器;
第三操作单元,基于当前程序状态字值设置至少一个毫码控制寄存器;
第四操作单元,确定第二操作数的地址;
第五操作单元,基于用于在存取寄存器模式中转换第二操作数的地址的程序存取寄存器设置毫码存取寄存器;
第六操作单元,把所述至少一个指令的指令文本的至少一部分复制到毫码控制寄存器;
第七操作单元,把第二操作数的长度存储到毫码通用寄存器中;
第八操作单元,把第二操作数的长度存储到毫码通用寄存器中;和
第九操作单元,其为分支操作单元。
16.一种用于基于机器状态管理指令执行的计算机程序产品,该计算机程序产品包括:
计算机可读存储介质,可由处理电路读取并存储由处理电路执行以执行如权利要求1至11中任一项所述的方法的指令。
17.一种存储在计算机可读介质上并可加载到数字计算机的内存中的计算机程序,包括软件代码部分,当所述程序在计算机上运行时,所述软件代码部分用于执行如权利要求1-11中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/718,685 US8938605B2 (en) | 2010-03-05 | 2010-03-05 | Instruction cracking based on machine state |
US12/718,685 | 2010-03-05 | ||
PCT/EP2010/067055 WO2011107170A1 (en) | 2010-03-05 | 2010-11-08 | Instruction cracking based on machine state |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102792265A true CN102792265A (zh) | 2012-11-21 |
CN102792265B CN102792265B (zh) | 2016-01-20 |
Family
ID=43126986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080065187.3A Active CN102792265B (zh) | 2010-03-05 | 2010-11-08 | 基于机器状态的指令破解 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8938605B2 (zh) |
EP (1) | EP2430526B1 (zh) |
JP (1) | JP5808348B2 (zh) |
CN (1) | CN102792265B (zh) |
WO (1) | WO2011107170A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104516765A (zh) * | 2013-09-30 | 2015-04-15 | 瑞萨电子株式会社 | 计算机和编译方法 |
CN115691088A (zh) * | 2023-01-04 | 2023-02-03 | 上海海栎创科技股份有限公司 | 一种控制信号传输单元、系统及方法 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104583957B (zh) | 2012-06-15 | 2018-08-10 | 英特尔公司 | 具有无消歧乱序加载存储队列的重新排序的推测性指令序列 |
CN104583956B (zh) * | 2012-06-15 | 2019-01-04 | 英特尔公司 | 用于实现加载存储重新排序和优化的指令定义 |
EP2862061A4 (en) | 2012-06-15 | 2016-12-21 | Soft Machines Inc | MEMORY PRECISION FOR VIRTUAL LOAD WITH DYNAMIC SHIPPING WINDOW WITH UNIFORM STRUCTURE |
KR101996462B1 (ko) | 2012-06-15 | 2019-07-04 | 인텔 코포레이션 | 명확화 없는 비순차 load store 큐 |
CN104823168B (zh) | 2012-06-15 | 2018-11-09 | 英特尔公司 | 用于实现从由加载存储重新排序和优化导致的推测性转发遗漏预测/错误中恢复的方法和系统 |
WO2013188460A2 (en) | 2012-06-15 | 2013-12-19 | Soft Machines, Inc. | A virtual load store queue having a dynamic dispatch window with a distributed structure |
US10296338B2 (en) * | 2016-12-09 | 2019-05-21 | Intel Corporation | System, apparatus and method for low overhead control transfer to alternate address space in a processor |
US10564967B2 (en) | 2017-03-03 | 2020-02-18 | International Business Machines Corporation | Move string processing via inline decode-based micro-operations expansion |
US10564965B2 (en) | 2017-03-03 | 2020-02-18 | International Business Machines Corporation | Compare string processing via inline decode-based micro-operations expansion |
US10613862B2 (en) | 2017-03-03 | 2020-04-07 | International Business Machines Corporation | String sequence operations with arbitrary terminators |
US10324716B2 (en) | 2017-03-03 | 2019-06-18 | International Business Machines Corporation | Selecting processing based on expected value of selected character |
US10789069B2 (en) * | 2017-03-03 | 2020-09-29 | International Business Machines Corporation | Dynamically selecting version of instruction to be executed |
US10620956B2 (en) | 2017-03-03 | 2020-04-14 | International Business Machines Corporation | Search string processing via inline decode-based micro-operations expansion |
US10592246B2 (en) * | 2017-07-12 | 2020-03-17 | International Business Machines Corporation | Low latency execution of floating-point record form instructions |
US10360036B2 (en) | 2017-07-12 | 2019-07-23 | International Business Machines Corporation | Cracked execution of move-to-FPSCR instructions |
US11249760B2 (en) * | 2019-04-10 | 2022-02-15 | International Business Machines Corporation | Parameter management between programs |
US11294695B2 (en) | 2020-05-28 | 2022-04-05 | International Business Machines Corporation | Termination of programs associated with different addressing modes |
US11327766B2 (en) | 2020-07-31 | 2022-05-10 | International Business Machines Corporation | Instruction dispatch routing |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5918031A (en) * | 1996-12-18 | 1999-06-29 | Intel Corporation | Computer utilizing special micro-operations for encoding of multiple variant code flows |
US20070204138A1 (en) * | 2006-02-28 | 2007-08-30 | Guillermo Savransky | Device, system and method of tracking data validity |
Family Cites Families (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5530727A (en) * | 1978-08-22 | 1980-03-04 | Nec Corp | Information processor |
JPS6057438A (ja) * | 1983-09-08 | 1985-04-03 | Hitachi Ltd | 仮想計算機システム制御装置 |
US4604684A (en) * | 1983-11-15 | 1986-08-05 | Data General Corp. | Digital computer having unique instruction decoding logic |
US4873629A (en) * | 1984-06-20 | 1989-10-10 | Convex Computer Corporation | Instruction processing unit for computer |
DE3752100T2 (de) * | 1986-01-07 | 1997-12-11 | Nec Corp | Befehlsvorabrufgerät mit einer Schaltung zum Prüfen der Vorhersage eines Verzweigungsbefehls vor seiner Ausführung |
US5097407A (en) * | 1986-08-08 | 1992-03-17 | Integrated Inference Machines | Artificial intelligence processor |
JP2603626B2 (ja) * | 1987-01-16 | 1997-04-23 | 三菱電機株式会社 | データ処理装置 |
DE68927313T2 (de) * | 1988-06-27 | 1997-05-07 | Digital Equipment Corp | Operandenspezifiererverarbeitung |
IL92605A0 (en) | 1988-12-19 | 1990-08-31 | Bull Hn Information Syst | Production line method and apparatus for high performance instruction execution |
EP0374830A3 (en) | 1988-12-19 | 1992-03-18 | Bull HN Information Systems Inc. | Control store address generator for developing unique instruction execution starting address |
JPH02183830A (ja) | 1988-12-21 | 1990-07-18 | Internatl Business Mach Corp <Ibm> | マイクロプログラム変換機構を有するコンピュータ |
JP2504156B2 (ja) * | 1989-01-25 | 1996-06-05 | 日本電気株式会社 | 情報処理装置 |
US5150468A (en) * | 1989-06-30 | 1992-09-22 | Bull Hn Information Systems Inc. | State controlled instruction logic management apparatus included in a pipelined processing unit |
US5073855A (en) * | 1989-06-30 | 1991-12-17 | Bull Hn Information Systems Inc. | Resource conflict detection method and apparatus included in a pipelined processing unit |
JP2731618B2 (ja) * | 1990-02-28 | 1998-03-25 | 日本電気アイシーマイコンシステム株式会社 | エミュレータ |
JPH04302329A (ja) * | 1990-12-26 | 1992-10-26 | Xerox Corp | マイクロ処理システム |
JP2677719B2 (ja) | 1991-05-08 | 1997-11-17 | 富士通株式会社 | 情報処理装置 |
US5488707A (en) * | 1992-07-28 | 1996-01-30 | International Business Machines Corporation | Apparatus for predicting overlapped storage operands for move character |
US5434985A (en) * | 1992-08-11 | 1995-07-18 | International Business Machines Corporation | Simultaneous prediction of multiple branches for superscalar processing |
US5467473A (en) * | 1993-01-08 | 1995-11-14 | International Business Machines Corporation | Out of order instruction load and store comparison |
JPH0713758A (ja) | 1993-06-29 | 1995-01-17 | Hitachi Ltd | 命令デコード方法 |
JPH07129399A (ja) | 1993-10-28 | 1995-05-19 | Motohiro Kurisu | 命令属性レジスターを使用して多機能命令を実行する マイクロコンピュータ |
GB2287111B (en) * | 1994-03-01 | 1998-08-05 | Intel Corp | Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer |
DE69506623T2 (de) * | 1994-06-03 | 1999-07-22 | Motorola Inc | Datenprozessor mit einer Ausführungseinheit zur Durchführung von Ladebefehlen und Verfahren zu seinem Betrieb |
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 |
US5802359A (en) * | 1995-03-31 | 1998-09-01 | International Business Machines Corporation | Mapping processor state into a millicode addressable processor state register array |
WO1996038782A2 (en) * | 1995-05-26 | 1996-12-05 | National Semiconductor Corporation | Apparatus and method for efficiently determining addresses for misaligned data stored in memory |
US5694565A (en) * | 1995-09-11 | 1997-12-02 | International Business Machines Corporation | Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions |
US5796974A (en) * | 1995-11-07 | 1998-08-18 | Advanced Micro Devices, Inc. | Microcode patching apparatus and method |
US5826089A (en) * | 1996-01-04 | 1998-10-20 | Advanced Micro Devices, Inc. | Instruction translation unit configured to translate from a first instruction set to a second instruction set |
US5742805A (en) * | 1996-02-15 | 1998-04-21 | Fujitsu Ltd. | Method and apparatus for a single history register based branch predictor in a superscalar microprocessor |
US5621909A (en) * | 1996-03-12 | 1997-04-15 | International Business Machines Corporation | Specialized millicode instruction for range checking |
US5717910A (en) * | 1996-03-29 | 1998-02-10 | Integrated Device Technology, Inc. | Operand compare/release apparatus and method for microinstrution sequences in a pipeline processor |
US5781752A (en) * | 1996-12-26 | 1998-07-14 | Wisconsin Alumni Research Foundation | Table based data speculation circuit for parallel processing computer |
US5909567A (en) * | 1997-02-28 | 1999-06-01 | Advanced Micro Devices, Inc. | Apparatus and method for native mode processing in a RISC-based CISC processor |
US6058470A (en) * | 1998-04-07 | 2000-05-02 | International Business Machines Corporation | Specialized millicode instruction for translate and test |
US6219742B1 (en) * | 1998-04-29 | 2001-04-17 | Compaq Computer Corporation | Method and apparatus for artificially generating general purpose events in an ACPI environment |
US6092185A (en) * | 1998-04-30 | 2000-07-18 | International Business Machines Corporation | Opcode compare logic in E-unit for breaking infinite loops, detecting invalid opcodes and other exception checking |
JP3110404B2 (ja) * | 1998-11-18 | 2000-11-20 | 甲府日本電気株式会社 | マイクロプロセッサ装置及びそのソフトウェア命令高速化方法並びにその制御プログラムを記録した記録媒体 |
US6336183B1 (en) * | 1999-02-26 | 2002-01-01 | International Business Machines Corporation | System and method for executing store instructions |
JP2000259408A (ja) | 1999-03-08 | 2000-09-22 | Texas Instr Inc <Ti> | 遅延スロットにおけるソフトウェアブレークポイント |
US6134646A (en) * | 1999-07-29 | 2000-10-17 | International Business Machines Corp. | System and method for executing and completing store instructions |
US6772325B1 (en) * | 1999-10-01 | 2004-08-03 | Hitachi, Ltd. | Processor architecture and operation for exploiting improved branch control instruction |
US6654869B1 (en) * | 1999-10-28 | 2003-11-25 | International Business Machines Corporation | Assigning a group tag to an instruction group wherein the group tag is recorded in the completion table along with a single instruction address for the group to facilitate in exception handling |
US6697939B1 (en) * | 2000-01-06 | 2004-02-24 | International Business Machines Corporation | Basic block cache microprocessor with instruction history information |
JP3629551B2 (ja) | 2000-01-06 | 2005-03-16 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 基本キャッシュ・ブロックを利用したマイクロプロセッサ |
US7162621B2 (en) * | 2001-02-21 | 2007-01-09 | Mips Technologies, Inc. | Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration |
US20020152259A1 (en) * | 2001-04-14 | 2002-10-17 | International Business Machines Corporation | Pre-committing instruction sequences |
US6999952B1 (en) * | 2001-04-18 | 2006-02-14 | Cisco Technology, Inc. | Linear associative memory-based hardware architecture for fault tolerant ASIC/FPGA work-around |
US7085917B2 (en) | 2003-05-12 | 2006-08-01 | International Business Machines Corporation | Multi-pipe dispatch and execution of complex instructions in a superscalar processor |
US7082517B2 (en) * | 2003-05-12 | 2006-07-25 | International Business Machines Corporation | Superscalar microprocessor having multi-pipe dispatch and execution unit |
US20050223292A1 (en) * | 2004-02-17 | 2005-10-06 | Lee Chee S | Single instruction type based hardware patch controller |
US7716528B2 (en) * | 2004-09-07 | 2010-05-11 | Broadcom Corporation | Method and system for configurable trigger logic for hardware bug workaround in integrated circuits |
US7269715B2 (en) * | 2005-02-03 | 2007-09-11 | International Business Machines Corporation | Instruction grouping history on fetch-side dispatch group formation |
US20070288725A1 (en) * | 2006-06-07 | 2007-12-13 | Luick David A | A Fast and Inexpensive Store-Load Conflict Scheduling and Forwarding Mechanism |
US8443227B2 (en) * | 2008-02-15 | 2013-05-14 | International Business Machines Corporation | Processor and method for workaround trigger activated exceptions |
US7987343B2 (en) * | 2008-03-19 | 2011-07-26 | International Business Machines Corporation | Processor and method for synchronous load multiple fetching sequence and pipeline stage result tracking to facilitate early address generation interlock bypass |
US7962726B2 (en) * | 2008-03-19 | 2011-06-14 | International Business Machines Corporation | Recycling long multi-operand instructions |
US7941584B2 (en) * | 2009-03-26 | 2011-05-10 | Arm Limited | Data processing apparatus and method for performing hazard detection |
-
2010
- 2010-03-05 US US12/718,685 patent/US8938605B2/en active Active
- 2010-11-08 WO PCT/EP2010/067055 patent/WO2011107170A1/en active Application Filing
- 2010-11-08 CN CN201080065187.3A patent/CN102792265B/zh active Active
- 2010-11-08 JP JP2012555308A patent/JP5808348B2/ja active Active
- 2010-11-08 EP EP10775822.9A patent/EP2430526B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5918031A (en) * | 1996-12-18 | 1999-06-29 | Intel Corporation | Computer utilizing special micro-operations for encoding of multiple variant code flows |
US20070204138A1 (en) * | 2006-02-28 | 2007-08-30 | Guillermo Savransky | Device, system and method of tracking data validity |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104516765A (zh) * | 2013-09-30 | 2015-04-15 | 瑞萨电子株式会社 | 计算机和编译方法 |
CN115691088A (zh) * | 2023-01-04 | 2023-02-03 | 上海海栎创科技股份有限公司 | 一种控制信号传输单元、系统及方法 |
CN115691088B (zh) * | 2023-01-04 | 2023-05-02 | 上海海栎创科技股份有限公司 | 一种控制信号传输单元、系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2430526B1 (en) | 2019-12-25 |
JP5808348B2 (ja) | 2015-11-10 |
US20110219213A1 (en) | 2011-09-08 |
JP2013521551A (ja) | 2013-06-10 |
US8938605B2 (en) | 2015-01-20 |
CN102792265B (zh) | 2016-01-20 |
EP2430526A1 (en) | 2012-03-21 |
WO2011107170A1 (en) | 2011-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102792265B (zh) | 基于机器状态的指令破解 | |
CN101819521B (zh) | 微处理器以及解析第一或第二类别条件分支指令的方法 | |
US5889982A (en) | Method and apparatus for generating event handler vectors based on both operating mode and event type | |
EP2567312B1 (en) | Managing variable length instructions | |
CN100449499C (zh) | 在微处理器恢复单元中进行写队列读数据的方法和装置 | |
CN108139908B (zh) | 移动前缀指令 | |
TWI497412B (zh) | 用於使用相依矩陣追蹤解除配置之載入指令之方法、處理器及裝置 | |
US9262161B2 (en) | Tracking multiple conditions in a general purpose register and instruction therefor | |
CN102707988B (zh) | 微处理器及其操作方法 | |
US5987600A (en) | Exception handling in a processor that performs speculative out-of-order instruction execution | |
CN102103483A (zh) | 汇聚和散布多个数据元素 | |
JP3689369B2 (ja) | 2次リオーダ・バッファ・マイクロプロセッサ | |
US11599359B2 (en) | Methods and systems for utilizing a master-shadow physical register file based on verified activation | |
CN100538648C (zh) | 基于专用处理单元的使用动态修改系统参数 | |
CN102163139B (zh) | 微处理器融合载入算术/逻辑运算及跳跃宏指令 | |
JP3170472B2 (ja) | レジスタ・リマップ構造を有する情報処理システム及び方法 | |
US20110252220A1 (en) | Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits | |
US20210132985A1 (en) | Shadow latches in a shadow-latch configured register file for thread storage | |
CN116848506A (zh) | 存储器复制大小确定指令和数据传送指令 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |