CN104169877B - 将不相邻指令区分符变换为相邻指令区分符 - Google Patents

将不相邻指令区分符变换为相邻指令区分符 Download PDF

Info

Publication number
CN104169877B
CN104169877B CN201280071425.0A CN201280071425A CN104169877B CN 104169877 B CN104169877 B CN 104169877B CN 201280071425 A CN201280071425 A CN 201280071425A CN 104169877 B CN104169877 B CN 104169877B
Authority
CN
China
Prior art keywords
instruction
field
specificator
adjacent
register
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
CN201280071425.0A
Other languages
English (en)
Other versions
CN104169877A (zh
Inventor
M.K.格施温德
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN104169877A publication Critical patent/CN104169877A/zh
Application granted granted Critical
Publication of CN104169877B publication Critical patent/CN104169877B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

促进包括不相邻区分符的指令的仿真。不相邻区分符使用指令的多个字段指定指令的资源(诸如,寄存器)。例如,指令的多个字段(例如,两个字段)包括一起指明要由指令使用的特定寄存器。将一个计算机系统架构中定义的指令的不相邻区分符变换为可由另一计算机架构中定义的指令使用的相邻区分符。该另一计算机架构中定义的指令仿真定义用于该一个计算机系统架构的指令。

Description

将不相邻指令区分符变换为相邻指令区分符
技术领域
本发明总体涉及计算环境中的仿真,尤其涉及指令内的区分符(specifier)的仿真。
背景技术
仿真模拟在计算机架构(也称为目标架构)上的动作。目标架构与对于其定义功能的计算机架构(称为源架构)不同。例如,对于International Business MachinesCorporation(Armonk,New York)提供的z/Architecture编写的指令可以翻译并且表示为不同架构的一个或者多个指令(诸如也由International Business MachinesCorporation提供的PowerPC或者由International Business Machines Corporation或者另一公司供应的另一架构)。这些翻译指令执行与正翻译的指令相同或者类似的功能。
存在不同类型的仿真,包括解释和翻译。利用解释,读取表示指令的数据,并且当解码每个指令时,执行该指令。每次引用每个指令时执行该指令。然而,利用翻译(也称为二进制翻译或者重新编译),将指令的序列从一个计算机架构的指令集翻译为另一计算机架构的指令集。
存在多种类型的翻译,包括静态翻译和动态翻译。在静态翻译中,将一个架构的指令的代码转换为在另一架构上运行的代码,而不需要事先执行该代码。相反,在动态翻译中,执行和翻译该代码的至少一部分。并且将结果放置在高速缓冲存储器中,用于由目标计算机架构的处理器随后执行。
发明内容
经由提供用于变换计算环境的指令的计算机程序产品来克服现有技术的缺点并提供优势。该计算机程序产品包括计算机可读存储介质,其可由处理电路读取且存储用于由该处理电路执行以用于执行方法的指令。该方法包括:由处理器从定义用于第一计算机架构的第一指令获得不相邻区分符,不相邻区分符具有第一部分和第二部分,其中,获得包括从指令的第一字段获得第一部分并且从指令的第二字段获得第二部分,第一字段与第二字段分离;使用第一部分和第二部分生成相邻区分符,该生成使用基于第一指令的操作码的一个或者多个规则;以及使用相邻区分符以指示要在第二指令的执行中使用的资源,第二指令定义用于与第一计算机架构不同的第二计算机架构并且仿真第一指令的功能。
本文中也描述和主张关于本发明的一个或多个方面的方法和系统。另外,本文中也描述且可主张关于本发明的一个或多个方面的服务。
经由本发明的技术实现额外特征和优势。本发明的其他实施例和方面在本文中得以详细描述且被视为所主张的本发明的一部分。
附图说明
现在将参考附图仅通过示例方式描述本发明的实施例,在附图中:
图1描绘并入且使用本发明的一个或者多个方面的计算环境的实例;
图2描绘根据本发明的一个方面的图1的存储器的进一步细节;
图3描绘利用一个或者多个解释和翻译的仿真处理的概述的一个实施例;
图4描绘与图3中引用的解释块相关联的逻辑的一个实例;
图5描绘与图3中引用的翻译块相关联的逻辑的一个实例;
图6描绘利用根据本发明的一个方面修改后的一个或者多个解释和翻译的仿真处理的概述的另一实施例;
图7A描绘根据本发明的一个方面的与图6中引用的解释块相关联的逻辑的一个实例;
图7B描绘根据本发明的一个方面的将不相邻区分符变换为相邻区分符的逻辑的一个实施例;
图8描绘根据本发明的一个方面的与图6中引用的翻译块相关联的逻辑的一个实例;
图9A描绘根据本发明的一个方面的将一个计算机架构的“向量载入”指令中的不相邻区分符变换为另一计算机架构的“载入向量索引”指令中的相邻区分符的一个实施例;
图9B描绘根据本发明的一个方面的包括向相邻区分符分配特定寄存器的图9A的变换的另一实例;
图10描绘根据本发明的一个方面的寄存器文件的一个实例;
图11描绘根据本发明的一个方面在仿真期间在向存储器分配中将不相邻区分符变换为相邻区分符的实例;
图12描绘并入本发明的一个或多个方面的计算机程序产品的实施例;
图13描绘并入且使用本发明一个或多个方面的主机计算机系统的一个实施例;
图14描绘并入且使用本发明一个或多个方面的计算机系统的另一实例;
图15描绘并入且使用本发明一个或多个方面的包含计算机网络的计算机系统的另一实例;
图16描绘并入且使用本发明一个或多个方面的计算机系统的各种元件的一个实施例;
图17A描绘并入且使用本发明一个或多个方面的图16的计算机系统的执行单元的一个实施例;
图17B描绘并入且使用本发明一个或多个方面的图16的计算机系统的分支单元的一个实施例;
图17C描绘并入且使用本发明一个或多个方面的图16的计算机系统的载入/存储单元的一个实施例;以及
图18描绘并入且使用本发明一个或多个方面的仿真主机计算机系统的一个实施例。
具体实施方式
根据本发明的一个方面,提供促进见包括不相邻区分符的指令的仿真的技术。不相邻区分符使用指令的多个字段指定指令的资源,诸如寄存器。例如,指令的多个字段(例如,两个字段)包括一起指明要由指令使用的特定寄存器。
在本发明的具体方面中,提供用于将一个计算机系统架构(例如,由International Business Machines Corporation供应的z/Architecture)中定义的指令的不相邻区分符变换为可由另一计算机系统架构(例如,由International BusinessMachines Corporation供应的PowerPC architecture)中定义的指令使用的相邻区分符的技术。该另一计算机系统架构中定义的指令仿真定义用于该一个计算机系统架构的指令。
参看图1描述提供仿真的计算环境的一个实施例。在一个实例中,计算环境100包括(例如)经由(例如)一条或多条总线108和/或其他连接耦接彼此的本地中央处理单元102、存储器104和一个或多个输入/输出(I/O)器件和/或接口106。
作为实例,计算环境100可包括:由International Business MachinesCorporation(Armonk,New York)供应的PowerPC处理器、pSeries服务器或xSeries服务器;由Hewlett Packard Co.(Palo Alto,California)供应的具有Intel Itanium II处理器的HP Superdome;和/或基于由International Business Machines Corporation、HewlettPackard、Intel、Oracle或其他供应的架构的其他机器。
本地中央处理单元102包括在该环境内的处理期间使用的一个或多个本地寄存器110,诸如,一个或多个通用寄存器和/或一个或多个专用寄存器。这些寄存器包括表示在任何特定时间点的环境状态的信息。
此外,本地中央处理单元102执行存储于存储器104中的指令和程序代码。在一个特定实例中,中央处理单元执行存储于存储器104中的仿真器代码112。此代码使得以一个架构中配置的处理环境能够仿真另一架构。举例而言,仿真器代码112允许基于不同于z/Architecture的架构的机器(诸如,PowerPC处理器、pSeries服务器、xSeries服务器、HPSuperdome服务器或其他)仿真z/Architecture和执行基于z/Architecture开发的软件和指令。
参看图2描述关于仿真器代码112的进一步细节。客户指令200包含经开发以欲于不同于本地CPU102的架构的架构中执行的软件指令(例如,机器指令)。举例而言,客户指令200可能已经设计以在z/Architecture处理器102上执行,但相反,正在本地CPU102(其可为(例如)PowerPC处理器或其他类型的处理器)上仿真客户指令200。在一个实例中,仿真器代码112包括指令取得单元202以自存储器104获得一个或多个客户指令200,并且可选地提供用于所获得的指令的本地缓冲。仿真器代码212也包括指令翻译例程204以确定已获得的客户指令的类型且将客户指令翻译成一个或多个对应本地指令206。此翻译包括(例如)识别要由客户指令(例如,经由操作码)执行的功能并选择(多个)本地指令以执行该功能。
另外,仿真器112包括仿真控制例程210以使得执行本地指令。仿真控制例程210可使得本地CPU102执行仿真一个或多个先前所获得的客户指令的本地指令的例程,并且,在这种执行完成时,将控制返回至指令取得例程以仿真下一个客户指令或群客户指令的获得。本地指令206的执行可包括将数据自存储器104载入至寄存器中;将数据自寄存器存储回至存储器;或执行某类型的算术或逻辑运算(如由翻译例程确定那样)。
每个例程(例如)以软件来实施,该软件存储于存储器中且由本地中央处理单元102来执行。在其他实例中,例程或运算中的一个或多个以固件、硬件、软件或其某组合来实施。可使用本地CPU的寄存器110或通过使用存储器104中的位置仿真仿真处理器的寄存器。在实施例中,客户指令200、本地指令206和仿真器代码112可常驻于相同存储器中或可在不同存储器器件间分配。
如本文中所使用,固件包括(例如)处理器的微码、毫码和/或宏码。固件包括(例如)在高级机器码的实施中使用的硬件级指令和/或数据结构。在一个实施例中,固件包括(例如)通常作为微码递送的专属码,该微码包括受信任软件或基础硬件所特有的微码且控制操作系统对系统硬件的存取。
在一个实例中,所获得的、经翻译并经执行的客户指令200为本文中所描述的一个或者多个指令。自存储器取得是一个架构(例如,z/Architecture)的指令,将该指令翻译且表示为另一架构(例如,PowerPC、pSeries、xSeries、Intel等)的本地指令206的序列。然后执行这些本地指令。
参考图3-5描述关于仿真的进一步细节。具体地,图3描绘利用一个或者多个解释和翻译的仿真处理的概述的一个实施例;图4描绘与图3中引用的解释(技术2000)相关联的逻辑的一个实施例;以及图5描绘与图3中引用的二进制翻译(技术3000)相关联的逻辑的一个实施例。在该具体实例中,编写用于z/Architecture的指令正翻译为PowerPC指令。然而,相同技术可应用于从z/Architecture至其他目标架构;从其他源架构至PowerPCarchitecture;和/或从其他源架构至其他目标结构的仿真。
参考图3,在仿真期间,称为指令X的指令被获取并且解释,如参考图4详细描述(步骤300)。更新与解释指令相关的各种统计(步骤302),并且然后,处理进行至在逻辑中变成指令X的下一指令(步骤304)。做出关于该下一指令是否具有之前翻译的入口点的确定(询问306)。如果否,则做出关于该下一指令是否已经被看到N(例如,15)次的确定(询问308)。即,使得该指令已经被足够看见,以例如由执行提供随后使用的入口点的just-in-time(JIT)兼容的代码优化执行。如果该指令没有被看到N次(诸如15次),则处理继续步骤300。否则,处理继续形成指令组,并且将该指令组从一个架构翻译为另一架构(步骤310)。参考图5描述执行该指令的一个实例。形成并且翻译该组之后,执行该组(步骤312),并且处理继续至步骤304。
返回询问306,如果存在该指令的现存翻译入口点,则处理继续在该入口点执行该组(步骤312)。
参考图4描述与解释指令(技术2000)有关的进一步细节。最初,读取下一程序计数器(PC)地址处的指令(步骤400)。分析该指令,并且提取操作码、寄存器和立即字段(步骤402)。然后,执行分支至仿真与提取操作码对应的行为(步骤404)。然后执行仿真代码(步骤406)。
参考图5描述关于组内的翻译指令(技术3000)的进一步细节。最初,读取指令的预定义组中的指令(步骤500)。在一个实例中,可以使用各种方式形成该组。根据一个实施例,形成组以包含沿着最可能路径的执行的单一路径。在另一实施例中,形成组以基于仿真架构的状态,包含最近之前执行路径之一或者当前执行路径。在另一实施例中,假设不采用所有分支,在再一实施例中,在组中包括多个路径,诸如从组开始点开始的所有路径。在另一实施例中,直到并且包括第一分支的所有指令被添加至组(即,与代码的直线片段对应的组也公知为“基本块”)。在每个实施例中,做出关于何时以及何处结束组的判定。在一个实施例中,在固定个指令之后结束该组。在另一实施例中,在达到指令的累积概率在给定阈值下面之后结束该组。在一些实施例中,当已经达到停止条件时,立即停止组。在另一实施例集中,仅在适当意义的“停止点”(例如,定义的指令)、特定组开始对齐或者其他条件处停止组。
此后,分析指令,并且从指令提取操作码、寄存器和立即字段(步骤502)。接着,提供提取信息的内部表示(步骤504)。该内部表示是由处理器(例如,编译器或翻译器)使用以优化与翻译该指令相关联的解码、寄存器分配和/或其他任务。
另外,做出关于该组中是否存在要翻译的另一指令的确定(询问506)。如果是,则处理继续步骤500。否则,处理继续优化内部表示(步骤508)、向指令组分配一个或者多个寄存器(步骤510)并且生成仿真该组中的指令的代码(步骤512)。
虽然上面的解释和翻译过程提供一个架构中定义的指令到另一架构中定义的一个或者多个指令的仿真,但是可以在使用不相邻区分符的指令的仿真中做出进步。例如,根据本发明的一个方面,提供仿真技术中的改进,以寻址其中指令的寄存器操作数由指令的多个字段指名的位置。
使用不相邻区分符的一种类型的指令是根据本发明的一个方面提供的向量工具的一部分。在很多向量指令中,寄存器字段不包括被需要以指明要由指令使用的寄存器的所有位,相反,与用以指明寄存器的寄存器字段一起使用另一字段。该另一字段在本文被称为RXB字段。
也被称作寄存器扩展位的RXB字段例如是包括用于向量指令的向量寄存器指明的操作数中的每一个的最高有效位的四位字段(位0-3)。用于未由指令指定的寄存器指明的位将保留,且被设定为零。
在一个实例中,RXB位定义如下:
0-用于指令的第一向量寄存器指明的最高有效位。
1-用于指令的第二向量寄存器指明(若有的话)的最高有效位。
2-用于指令的第三向量寄存器指明(若有的话)的最高有效位。
3-用于指令的第四向量寄存器指明(若有的话)的最高有效位。
由(例如)组译器取决于寄存器编号将每位设定为零或一。举例而言,对于寄存器0至15,将位设定为0;对于寄存器16至31,将位设定为1等等。
在一个实施例中,每个RXB位为用于包括一个或多个向量寄存器的指令中的特定位置的扩展位。举例而言,在一个或多个向量指令中,RXB的位0为位置8至11的扩展位,其被指派至(例如)V1;RXB的位1为位置12至15的扩展位,其被指派至(例如)V2;等等。
在另一实施例中,RXB字段包括额外位,且将一个以上位用作用于每个向量或位置的扩展。
根据本发明的一个方面,提供将不相邻操作数区分符变换为相邻区分符的技术。一旦变换,则在不需要任何关于不相邻区分符的情况下,使用相邻区分符。
参考图6-8描述用以仿真使用不相邻区分符的指令的逻辑的一个实施例。具体地,图6描绘包括包含不相邻区分符的指令的一个或者多个解释和翻译的仿真处理的概述;图7A描绘包括不相邻区分符的解释的解释(技术6000)的一个实施例;图7B描绘变换不相邻区分符为相邻区分符的一个实施例;以及图8描绘包括不相邻区分符的翻译的翻译(技术7000)的一个实施例。
首先参考图6,提供仿真处理的概述。除了替代步骤300中引用的技术2000,步骤600使用参考图7A描述的技术6000;以及替代步骤310引用的技术3000,步骤610使用参考图8描述的技术7000之外,该概述类似于图3中提供的概述。因为上面参考图3描述概述,所以不在这里重复;相反,讨论进行至图7A的逻辑。
参考图7A,步骤700、702、704和706分别类似于步骤400、402、404和406,因此不再被描述;然而,描述步骤703和705。关于步骤703,根据本发明的一个方面,从不相邻区分符生成相邻区分符(本文也称为相邻索引)。参考图7B描述关于从不相邻区分符生成相邻区分符的进一步细节。
参考图7B,在一个实施例中,首先,获得不相邻区分符(步骤750)。这例如包括从操作码确定指令具有不相邻区分符并确定指令的哪些字段用以指明不相邻字符。例如,操作码的一部分指定指令的格式,并且该格式处理器指示指令具有至少一个不相邻区分符,并且还指定用以指明不相邻区分符的字段。然后,读取这些字段以获得在那些字段中的数据(例如,位)。例如,在很多向量指令中,指令的位置8-11(例如,V1)指定用以指明向量寄存器的多个位(例如,4),并且指令的RXB字段包括用以指明特定向量寄存器的一个或者多个附加位。在该步骤获取这些位。
在获得不相邻区分符(例如,来自寄存器字段V1的位和来自RXB的(多个)位)之后,使用一个或者多个规则以组合不相邻区分符的多个部分,以建立不相邻区分符(步骤752)。像由指令的操作码指定那样一个或者多个规则例如依赖于指令的格式。在其中操作码指示RXB字段的特定实例中,一个或者多个规则包括使用与寄存器操作数相关联的(多个)RXB位作为在寄存器字段中指定的位的(多个)最高有效位。例如,在一个实施例中,RXB字段具有4位并且每位与寄存器操作数对应。例如,位0与第一寄存器操作数对应,位1与第二操作数对应等等。所以,与寄存器操作数对应的位被提取和使用以形成相邻区分符。例如,如果0010二进制在第一操作数寄存器字段中指定,并且1000二进制在RXB字段中指定,则与第一操作数相关联的位的值(位0)在本实例中被级联为0010。因此,在本实例中,相邻区分符是10010(寄存器18)。
然后,使用生成的相邻的区分符,就像其是在指令中提供的区分符(步骤754)。
此后,返回图7A,对仿真与操作码对应的行为的代码执行分支(步骤704)。另外,使用相邻索引以在不关于不相邻区分符的情况下管理同类架构资源,步骤705。也就是,使用相邻寄存器区分符,仿佛不存在不相邻区分符那样。每个相邻区分符指示要由仿真代码使用的寄存器。此后,执行仿真代码,步骤706。
参考图8描述关于包括将不相邻区分符变换为相邻区分符的翻译(称为技术7000)的进一步细节。在一个实施例中,步骤800、802、804、806、808、810和812分别与图5的步骤500、502、504、506、508、510和512类似,因此,这里不参考图8描述。然而,根据本发明的一个方面,执行另外的步骤以变换源架构的指令的不相邻区分符为目标架构的指令的相邻区分符。目标架构的指令仿真源架构的指令的功能。
例如,在步骤803中,从不相邻区分符生成相邻区分符。如参考图7B描述,这包括从要仿真的指令获取不相邻区分符和使用一个或者多个规则以从不相邻区分符建立相邻区分符。在一个实施例中,具有不相邻区分符的指令的操作码至少通过其格式隐含指示该指令包含不相邻区分符。例如,由操作码的一个或者多个位(例如,首先两位)指示指令的格式,并且基于该格式,处理器(例如,处理器的编译器、翻译器、仿真器)理解该指令包括不相邻区分符,在不相邻区分符中,资源(诸如,寄存器)的区分符的一部分包括在指令的一个字段中,并且区分符的一个或者多个其他部分定位在指令的一个或者多个其他字段中。
作为实例,该操作码也向处理器提供用以依据从不相邻区分符生成相邻区分符的一个或者多个规则的指示。例如,该操作码可以指示特定指令是向量寄存器指令,因而具有RXB字段。因此,处理器存取对具有该RXB字段的指令指示该RXB字段向其对应寄存器字段提供最高有效位的信息(例如,存储器或者外部储存器中存储的规则)。例如,该规则指定为了生成相邻字段,寄存器字段的位与和特定寄存器操作数相关联的RXB字段的一个或者多个位组合。
生成相邻区分符之后,在不需要关于不相邻区分符的情况下使用相邻区分符。例如,在步骤808中,在不需要关于不相邻区分符的情况下使用相邻区分符优化该代码。类似地,使用相邻区分符并且在不需要关于不相邻区分符的情况下分配一个或者多个寄存器(步骤810)。另外,在步骤812,在不需要关于不相邻区分符的情况下并且使用步骤810中执行的分配,生成仿真代码。也就是,在这些步骤中,不存在从不相邻区分符生成相邻区分符的指示。忽略不相邻区分符。
参考图9A、9B和11描述关于将不相邻区分符翻译为相邻区分符的进一步细节。首先参考图9A,描绘“向量载入”(VL)指令900。在一个实例中,“向量载入”指令包括:操作码字段902a(例如,位0至7)、902b(例如,位40至47),其指示“向量载入”操作;向量寄存器字段904(例如,位8至11),其用以指明向量寄存器(V1);索引字段(X2)906(例如,位12至15);基本字段(B2)908(例如,位16至19);位移(displacement)字段(D2)910(例如,位20至31);和RXB字段912(例如,位36至39)。在一个实例中,字段904至912中的每一个分开且独立于(多个)操作码字段。另外,在一个实施例中,这些字段分开且独立于彼此;然而,在其他实施例中,可组合一个以上字段。下文描述关于这些字段的使用的其他信息。
在一个实例中,由操作码字段902a指明的操作码的选定位(例如,前两个位)指定指令的长度和格式。在此特定实例中,长度为三个半字,且格式为用扩展的操作码字段的向量寄存器和索引存储运算。向量(V1)字段以及由RXB指定的其对应扩展位指明向量寄存器(即,不相邻区分符)。具体地,对于向量寄存器,使用(例如)寄存器字段的四位字段(其中添加其寄存器扩展位(RXB)作为最高有效位)指定含有操作数的寄存器。举例而言,若V1的四位字段为0010二进制且该操作数的扩展位为1二进制,则5位字段是10010,以指示寄存器编号18(以十进制)。
与指令的字段相关联的下标编号表示该字段适用的操作数。举例而言,与V1相关联的下标编号1表示第一操作数,等等。这用于确定RXB字段的哪个位与寄存器字段组合。寄存器操作数的长度为一个寄存器,其为(例如)128字节。在一个实例中,在“向量寄存器和索引储存器运算”指令中,将由X2和B2字段指明的通用寄存器的内容添加至D2字段的内容以形成第二操作数地址。在一个实例中,将针对“向量载入”指令的位移D2作为12-位无符号整数对待。
在本实例中,因为V1是第一操作数,所以RXB的最左侧位置(例如,位0)与该操作数相关联。因此,位于最左侧位置的值与V1寄存器字段中的值组合,以生成相邻区分符,如本文描述。
根据本发明的一个方面,例如在z/Architecture中定义的“向量载入”指令900被仿真为例如在PowerPC architecture中定义的“载入向量索引”指令950。虽然在本实例中,z/Architecture是源架构,并且PowerPC是目标架构,但是这仅仅是一个实例。可以使用很多其他架构用于源架构和目标架构之一或者二者。
每个架构已经与其可以使用的特定寄存器相关联。例如,在z/Architecture中,存在32个向量寄存器,且其他类型的寄存器可映射至该向量寄存器的象限。作为实例,如图10中所展示,若存在包括32个向量寄存器1002的寄存器文件1000且每寄存器的长度为128个位,则长度为64个位的16个浮点寄存器1004可重叠这些向量寄存器。因此,作为实例,当修改浮点寄存器2时,然后也修改向量寄存器2。用于其他类型的寄存器的其他映射也可能。
类似地,PowerPC或者其他架构具有向其分配的寄存器集。该寄存器集可以与分配给源架构的寄存器集不同或者相同。目标寄存器可以具有可用于特定类型的指令的更多或者更少寄存器。例如,在图9A描绘的实例中,“向量载入”指令和“载入向量索引”指令具有可用于其的32个向量寄存器。此外,其他实例是可能的。
如操作码所指示,“向量载入”指令包括在本实例中表示在V1和RXB字段中的不相邻区分符。组合这些不相邻字段,以在“载入向量索引”指令950中建立相邻索引。在指令950的VRT字段954中指示该相邻区分符。在该特定实例中,如在代码VL v18,0(0,gr5)中所示,正被指定的向量寄存器是寄存器18。在指令中由通过V1字段和RXB字段提供的不相邻区分符指定该寄存器。在本实例中,V1字段包括值2(0010二进制)并且RXB字段包括值8(1000二进制)。基于预定义规则,因为是V1第一操作数,1000的最左侧位(1)与V1字段(0010)中的位级联,以产生十进制是值18的相邻区分符10010。
如在参考标记956所示,18的表示放置在对应于“向量载入”指令的寄存器字段(V1)的“载入向量索引”指令的VRT字段中。为了完整性,指令950的RA和RB字段分别与指令900的X2和B2对应。指令900的D2字段在指令950中没有对应字段;并且指令900的操作码字段与指令950的操作码字段对应。
在图9B中描绘另一实例。在该实例中,正如图9A中描绘的实例,指令900的不相邻区分符(V1,RXB)正被变换为指令950的相邻区分符(VRT)。然而,在本实例中,分配用于指令950的寄存器不具有与变换相邻区分符相同的编号,相反,相邻区分符被映射到不同寄存器。例如,在图9A的实例中,不相邻区分符引用寄存器18,如相邻区分符18那样。也就是,存在一对一映射。然而,在图9B中,不相邻区分符18被变换为相邻区分符18,但然后,相邻区分符18被映射到不同寄存器,诸如寄存器7(见参考标记980)。也就是,在该特定实例中,源架构中的寄存器18映射至目标架构中的寄存器7。这种映射被预定义并且对于处理器可存取。
图11中描绘另一实例。在本实例中,替代如图9A和9B中所示在仿真期间向寄存器分配,向存储器分配。在本实例中,指令VLR用于将一个向量寄存器VR18的内容移动至另一向量寄存器VR24。然而,在本实例中,假设寄存器文件不足够大以包括这些向量寄存器,所以替代地使用存储器。也就是,存在存储作为阵列的多个向量的存储器的相邻部分。该阵列在地址rvbase开始,在地址rvbase存储第一寄存器(例如,寄存器0);并且然后,在从rvbase偏移(例如,16字节)处存储下一寄存器;并且在从第二寄存器偏移处存储第三寄存器等等。因而,在本实例中,寄存器18在从rvbase偏移288处,并且寄存器24在从rvbase偏移384处。
在本实例中,存在两个不相邻区分符(V1,RXB;和V2,RXB)。因而,生成两个相邻区分符。例如,因为V1是第一操作数,由V1中的位与RXB的位0级联生成第一相邻区分符。因为包括V1包括二进制的1000(8十进制),并且RXB包括二进制1100(12十进制),第一相邻区分符由级联1(从RXB的位0)与1000(从V1)以提供11000(十进制24)形成。类似地,第二相邻区分符由级联0010(对于V2十进制2)与1(从RXB的1)以提供10010(十进制18)形成。因为,这些寄存器在存储器内,所以向量寄存器24在从rvbase的偏移384,并且向量寄存器18在从rvbase的偏移288处。这些值在分别在图11的1102、1104处示出。
图11右侧的伪码和左侧的指令描述移动与在18处的向量偏移处的向量寄存器对应的相邻数目的字节(其对应于288处的字节偏移)至24处的向量偏移(其对应于384处的字节偏移)。具体地,立即载入(LI)载入值288到rtemp1,并且然后在由rvbase加rtemp1中的偏移提供的地址处执行向量载入,并且在临时向量寄存器(vtemp2)中存储该值。然后,将下一立即载入384载入至rtemp1,并且在与地址加向量寄存器24中的偏移(例如,偏移288)对应的位置执行存储回到存储器。
虽然上面描述各种实例,但是很多其他实例和变型也是可能的。在与本申请共同提交题为“Instruction to Load Data Up to A Specified Memory Boundary Indicatedby the Instruction,”美国序列号(IBM案号POU920120030US1),Jonathan D.Bradbury的专利申请(这里以引用的方式将其全部形如本文)中描述关于向量指令和RXB字段的使用的附加信息。
另外,这里提及各种架构。z/Architecture的一个实施例描述于题为“z/Architecture Principles of Operation”的公开号(SA22-7832-08号,第九版,2010年8月)中,该公开号在此以其全文引用的方式并入本文中。为International Business Machines Corporation(Armonk,New York,USA)的注册商标。本文中使用的其他名称可为International BusinessMachines Corporation或其他公司的注册商标、商标或产品名称。此外,Power架构的一个实施例描述于“Power ISATM第2.06版修订B”(International Business MachinesCorporation,2010年7月23日)中,该文件在此以其全文引用的方式并入本文中。POWER为International Business Machines Corporation的注册商标。另外,Intel架构的一个实施例描述于“64and IA-32Architectures Developer'sManual:第2B卷,Instructions Set Reference,A-L”(序号253666-041US,2011年12月)和“64and IA-32Architectures Developer's Manual:第2B卷,Instructions SetReference,M-Z”(序号253667-041US,2011年12月)中,这些文件中的每一个在此以其全文引用的方式并入本文中。为Intel Corporation(Santa Clara,California)的注册商标。
本文描述的是用于将对于一个系统架构定义的指令的不相邻区分符变换为对于另一系统架构定义的指令的相邻区分符的技术。之前架构仿真没有成功地解决利用不相邻区分符(具体地,要么固定要么可变宽度的指令集的不相邻寄存器区分符)的仿真系统。然而,根据本发明的一个方面,提供用以扩展现有仿真器以处理不相邻区分符的技术。该技术例如包括读取不相邻区分符、从不相邻区分符生成相邻索引以及使用相邻索引以存取同类资源或者表示同类资源。
在另一实施例中,根据JIT实现,使用相邻索引以执行分配判定,以可选地在不反映由不相邻区分符边界的分隔而是通过优化判定的情况下,通过不相邻/不同类资源表示由不相邻区分符存取的资源。也就是,在一个实施例中,定义用于一个架构的指令具有用于至少一个资源的至少一个不相邻区分符,并且该至少一个不相邻区分符被变换为至少一个相邻区分符。使用该至少一个相邻区分符,以选择要使用的另一架构的指令的至少一个资源。然而,该另一架构的指令使用不相邻区分符。因而,然后将用于至少一个选定的资源的至少一个相邻区分符变换为由第二架构的指令使用的至少一个不相邻区分符。在一个实施例中,这由仿真器执行。
在一个实施例中,提供用于仿真设计用于第二计算机架构的处理器上的第一计算机架构指令集的指令执行的仿真器。该仿真器例如通过仿真程序取得应用的指令;解释指令的操作码以选择用于仿真指令的仿真模块;依据指令利用不相邻寄存器字段的操作码确定;组合指令的不相邻寄存器字段以形成组合寄存器字段;以及通过仿真模块的指令使用组合的寄存器字段,以仿真该指令。
另外,在一个实施例中,寄存器空间包括子部分,并且第一计算机架构指令集包括具有仅仅用于存取子部分的寄存器字段的第一指令和具有用于存取所有寄存器空间的不相邻寄存器字段的第二指令。
在一个实施例中,RXB字段对于使用RXB字段的所有指令处在相同位置上。RXB位是有效位,其中(作为实例)RXB字段的位36用以扩展指令的位8-11;RXB的位37用以扩展位12-15;RXB的位38用以扩展位16-19;并且RXB的位39用以扩展位32-35。此外,使用RXB的位作为扩展位的判定依赖于操作码的(例如,R1vs.V1)。此外,不相邻区分符可以使用与RXB字段不同的字段。
本文中,除非另有明确注释或由上下文注释,否则可互换地使用存储器、主存储器、储存器与主储存器。
作为下文进一步描述的此实施方式的一部分提供关于向量工具的额外细节(包括其他指令的实例)。
如本领域技术人员将了解,本发明的一个或多个实施例可体现为系统、方法或计算机程序产品。因此,本发明的一个或多个实施例可采用完全硬件实施例、完全软件实施例(包括固件、常驻软件、微码等)或组合软件与硬件实施例的实施例的形式,这些实施例在本文中大体上皆可被称作“电路”、“模块”或“系统”。此外,本发明的一个或多个实施例可采用体现于一个或多个计算机可读介质(其具有体现于其上的计算机可读程序代码)中的计算机程序产品的形式。
可利用一个或多个计算机可读介质的任何组合。计算机可读介质可为计算机可读存储介质。举例而言,计算机可读存储介质可为(但不限于)电子、磁性、光学、电磁、红外线或半导体系统、装置或器件或前述中的任何合适组合。计算机可读存储介质的更特定实例(非详尽清单)包括以下:具有一个或多个电线的电连接、便携型计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便携型光盘-只读存储器(CD-ROM)、光学存储器件、磁性存储器件或前述的任何合适组合。在此文件的上下文中,计算机可读存储介质可为可含有或存储供指令执行系统、装置或器件使用或结合指令执行系统、装置或器件而使用的程序的任何有形介质。
现参看图12,在一个实例中,计算机程序产品1200包括(例如)一个或多个非暂时性计算机可读存储介质1202以在其上存储计算机可读程序代码构件或逻辑1204,以提供和促进本发明的一个或多个实施例。
可使用适当介质(包括(但不限于)无线、有线、光纤缆线、RF等或前述的任何合适组合)传输体现于计算机可读介质上的程序代码。
可以一个或多个程序设计语言的任何组合来编写用于进行本发明的一个或多个方面的操作的计算机程序代码,该一个或多个程序设计语言包括诸如Java、Smalltalk、C++等的面向对象的程序设计语言,和诸如“C”程序设计语言、组译器或类似程序设计语言的常规程序性程序设计语言。程序代码可完全在用户的计算机上执行、部分地在用户的计算机上执行、作为独立软件包而执行、部分地在用户的计算机上且部分地在远程计算机上执行,或完全在远程计算机或服务器上执行。在后者情形下,远程计算机可经由任一类型的网络连接至用户的计算机,该任一类型的网络包括局域网(LAN)或广域网(WAN),或可进行至外部计算机的连接(例如,使用因特网服务提供者经由因特网)。
本文中参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图说明和/或方块图描述本发明的一个或多个方面。应理解,可由计算机程序指令来实施流程图说明和/或方块图的每个块和这些流程图说明和/或方块图中的块的组合。可将这些计算机程序指令提供至通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以使得经由该计算机或其他可编程数据处理装置的处理器执行的指令产生用于实施流程图和/或方块图块中所指定的功能/动作的构件。
这些计算机程序指令也可存储于计算机可读介质中,该计算机可读介质可指导计算机、其他可编程数据处理装置或其他器件以特定方式起作用,使得存储于该计算机可读介质中的指令产生制造物件,其包括实施流程图和/或方块图方块中所指定的功能/动作的指令。
也可将这些计算机程序指令载入至计算机、其他可编程数据处理装置或其他器件上以使得在该计算机、其他可编程装置或其他器件上执行一系列操作步骤以产生计算机实施的处理程序,使得在该计算机或其他可编程装置上执行的指令提供用于实施流程图和/或方块图块中所指定的功能/动作的处理程序。
这些图中的流程图和方块图说明根据本发明的一个或多个方面的各种实施例的系统、方法和计算机程序产品的可能实施的架构、功能性和操作。就此而言,流程图或方块图中的每个块可表示模块、区段或代码的一部分,其包含用于实施(多个)指定逻辑功能的一个或多个可执行指令。也应注意,在一些替代实施中,块中所注释的功能可能不以诸图中所注释的次序发生。举例而言,取决于所涉及的功能性,实际上可实质上同时执行连续展示的两个块,或有时可以相反次序执行这些块。也将注意,方块图和/或流程图说明的每个块和方块图和/或流程图说明中的块的组合可由执行指定功能或动作的基于专用硬件的系统或专用硬件与计算机指令的组合来实施。
除上述内容之外,本发明的一个或多个实施例也可由供应客户环境的管理的服务提供者来提供、供应、部署、管理、服务等。举例而言,服务提供者可为一个或多个客户建立、维护、支持等执行本发明的一个或多个实施例的计算机代码和/或计算机基础结构。作为回报,作为实例,服务提供者可在订用和/或收费协议下自客户收取付款。此外或替代地,服务提供者可自广告内容销售至一个或多个第三方而收取付款。
在本发明的一个方面中,可部署用于执行本发明的一个或多个方面的应用程序。作为实例,应用程序的部署包含提供可操作以执行本发明的一个或多个方面的计算机基础结构。
作为本发明的另一方面,可部署计算基础结构,其包含将计算机可读代码整合至计算系统内,其中与该计算系统组合的代码能够执行本发明的一个或多个方面。
作为本发明的另一方面,可提供用于整合计算基础结构的处理,其包含将计算机可读代码整合至计算机系统中。计算机系统包含计算机可读介质,其中计算机介质包含本发明的一个或多个方面。与该计算机系统组合的代码能够执行本发明的一个或多个方面。
尽管上文描述了各种实施例,但这些仅为实例。举例而言,其他架构的计算环境可并入且使用本发明的一个或多个方面。另外,可使用其他大小或者其他寄存器的向量,且在不脱离本发明的精神的情况下,可作出对指令的改变。此外,可以在处理中使用其他指令。另外,可以在其他上下文中使用涉及将不相邻区分符变换为相邻区分符的本发明的一个或者多个方面。另外,区分符可以用于不同于寄存器的其他因素。其他改变也是可能的。
另外,其他类型的计算环境可受益于本发明的一个或多个方面。作为实例,适合于存储和/或执行程序代码的数据处理系统为可使用,其包括直接或经由系统总线间接耦接至存储器元件的至少两个处理器。这些存储器元件包括(例如)在程序代码的实际执行期间使用的本地存储器、大容量储存器和高速缓冲存储器,高速缓冲存储器提供至少一些程序代码的临时存储以便减少在执行期间必须自大容量储存器取得代码的次数。
输入/输出端或I/O器件(包括(但不限于)键盘、显示器、指点器件、DASD、磁带、CD、DVD、随身碟(thumb drive)和其他存储器介质等)可直接或经由介入的I/O控制器而耦接至系统。网络适配器也可耦接至系统以使得数据处理系统能够经由介入的私有或公用网络而变得耦接至其他数据处理系统或远程打印机或储存器件。调制解调器、电缆调制解调器和以太网络卡仅为可用类型的网络适配器中的少数几种。
参看图13,描绘实施本发明的一个或多个方面的主机计算机系统5000的代表性组件。代表性主机计算机5000包含与计算机存储器(即,中央储存器)5002通信的一个或多个CPU5001,以及用于与其他计算机或SAN等通信的至存储介质器件5011和网络5010的I/O接口。CPU5001符合具有构建的指令集和构建的功能性的架构。CPU5001可具有动态地址翻译(DAT)5003,以用于将程序地址(虚拟地址)变换成存储器的真实地址。DAT通常包括翻译后备缓冲器(TLB)5007以用于高速缓冲翻译,使得对计算机存储器5002的块的稍后存取不需要延迟地址翻译。通常,高速缓冲存储器5009用于计算机存储器5002与处理器5001之间。高速缓冲存储器5009可为层级式的,其具有可用于一个以上CPU的大型高速缓冲存储器和在大型高速缓冲存储器与每个CPU之间的较小较快(较低层级)高速缓冲存储器。在一些实施中,将较低层级高速缓冲存储器分割以提供用于指令取得和数据存取的单独的低层级高速缓冲存储器。在一个实施例中,由指令取得单元5004经由高速缓冲存储器5009自存储器5002取得指令。在指令解码单元5006中解码指令,且将指令(在一些实施例中,其他指令)分派给一个或多个指令执行单元5008。通常使用若干个执行单元5008,例如,算术执行单元、浮点执行单元和分支指令执行单元。由执行单元执行指令,从而按需要自指令指定的寄存器或存储器存取操作数。若将自存储器5002存取(载入或存储)操作数,则载入/存储单元5005通常在正被执行的指令的控制下处置存取。可在硬件电路中或在内部微码(固件)中或由两者的组合来执行指令。
如所注释,计算机系统包括在本地(或主)储存器中的信息,以及寻址、保护和参考和改变记录。寻址的一些方面包括地址的格式、地址空间的概念、地址的各种类型,以及将地址的一种类型翻译至地址的另一类型的方式。主储存器中的一些储存器包括永久指派的存储位置。主储存器为系统提供数据的可直接寻址的快速存取存储。在可处理数据和程序两者之前将数据和程序两者载入至主储存器中(自输入器件)。
主储存器可包括一个或多个较小的快速存取缓冲储存器(有时称为高速缓冲存储器)。高速缓冲存储器通常与CPU或I/O处理器相关联。通过程序大体上不可观测到不同存储介质的实体构造和用途的效应(除了对性能的效应外)。
可维持针对指令和针对数据操作数的单独的高速缓冲存储器。将高速缓冲存储器内的信息以相邻字节维持于被称为高速缓冲块或高速缓冲存储器线(或简称为线)的整体边界上。模型可提供“EXTRACT CACHE ATTRIBUTE(提取高速缓冲存储器属性)”指令,其返回以字节计的高速缓冲存储器线的大小。模型也可提供“PREFETCH DATA(预先取得数据)”和“PREFETCH DATA RELATIVE LONG(预取得数据相对长度)”指令,其实现储存器至数据或指令高速缓冲存储器中的预取得或数据自高速缓冲存储器的释放。
将储存器视为长水平位串。对于多数操作,对储存器的存取以自左至右顺序进行。将该位的串再分成八个位的单元。八位单元被称为字节,其为所有信息格式的基本建立块。储存器中的每个字节位置通过唯一非负整数来识别,该唯一非负整数为该字节位置的地址或简称为字节地址。邻近字节位置具有连续地址,其以左侧的0开始且以自左至右顺序进行。地址为无符号二进制整数,且为24个、31个或64个位。
在储存器与CPU或通道子系统之间一次一字节或字节群组地传输信息。除非另有指定,否则,在(例如)z/Architecture中,储存器中的字节群组由该群组的最左侧字节来寻址。通过要执行的操作隐含或明确指定该群组中的字节的数目。当在CPU操作中使用时,字节群组被称为字段。在每个字节群组内,在(例如)z/Architecture中,以自左至右顺序对位编号。在z/Architecture中,最左侧位有时被称作“高阶”位,且最右侧位有时被称作“低阶”位。然而,位编号不是存储地址。可仅寻址字节。为了对储存器中的字节的单独位操作,存取整个字节。将字节中的位自左至右编号为0至7(在(例如)z/Architecture中)。对于24位地址,可将地址中的位编号为8至31或40至63,或对于31位地址,可将地址中的位编号为1至31或33至63;对于64位地址,可将地址中的位编号为0至63。在多个字节的任何其他固定长度的格式内,自0开始对构成该格式的位连续地编号。为了错误检测的目的,且优选地为了校正的目的,可将一个或多个检查位与每字节或与字节群组一起传输。由机器自动地产生这种检查位,且不可直接由程序来控制这种检查位。以字节的数目来表达存储容量。当通过指令的操作码隐含存储操作数字段的长度时,认为该字段具有固定长度,其可为个、两个、四个、八个或十六个字节。对于一些指令,可隐含更大字段。当不隐含而是明确叙述存储操作数字段的长度时,认为该字段具有可变长度。可变长度操作数的长度可以一个字节的增量变化(或对于一些指令,以两个字节的倍数或其他倍数的增量变化)。当将信息放置于储存器中时,替换包括于指明的字段中的仅那些字节位置的内容,即使至储存器的物理路径的宽度可能大于正存储的字段的长度也如此。
某些信息单元将在储存器中的整体边界上。当其存储地址为该单元的长度(以字节计)的倍数时,将边界称为信息单元的整体。对整体边界上的2个、4个、8个和16个字节的字段给予特殊名称。半字为在两字节边界上的两个连续字节的群组,且为指令的基本建立块。字为四字节边界上的四个连续字节的群组。双字为八字节边界上的八个连续字节的群组。四倍字为16字节边界上的16个连续字节的群组。当储存器地址指明半字、字、双字和四倍字时,地址的二进制表示分别含有一个、两个、三个或四个最右侧零位。指令将在两-字节整体边界上。多数指令的存储操作数不具有边界对准要求。
在实施针对指令和数据操作数的单独的高速缓冲存储器的器件上,若程序存储至高速缓冲存储器线中(随后自该高速缓冲存储器线取得指令),则可经历显著延迟,而不管储存器是否更改随后取得的指令。
在一个实施例中,可通过软件(有时称为经授权内部码、固件、微码、毫码、微微码(pico-code)等,前述中的任一个将与本发明的一个或多个方面一致)来实践本发明。参看图13,体现本发明的一个或多个方面的软件程序代码可由主机系统5000的处理器5001自长期存储介质器件5011(诸如,CD-ROM驱动、磁带机或硬驱动)存取。软件程序代码可体现于多种已知介质中的任一个上,以用于供数据处理系统(诸如,磁片、硬驱动或CD-ROM)使用。该代码可分布于这种介质上,或可经由网络5010自计算机系统的计算机存储器5002或储存器至其他计算机系统地分发至用户,以供这种其他系统的用户使用。
软件程序代码包括操作系统,其控制各种计算机组件和一个或多个应用程序的功能和交互。通常将程序代码自存储介质器件5011分页至相对较高速计算机储存器5002,在该相对较高速计算机储存器5002处,程序代码可用于由处理器5001处理。用于在存储器中、在物理介质上体现软件程序代码和/或经由网络分发软件程序代码的技术和方法已熟知,且在本文中将不进一步加以讨论。当在有形介质(包括(但不限于)电子存储器模块(RAM)、快闪存储器、光盘(CD)、DVD、磁带等)上建立和存储程序代码时,程序代码常常被称作“计算机程序产品”。计算机程序产品介质通常可由优选在计算机系统中的处理电路来读取,以用于由处理电路执行。
图14说明可实践本发明的一个或多个方面的代表性工作站或服务器硬件系统。图14的系统5020包含代表性基础计算机系统5021(诸如,个人计算机、工作站或服务器),包括选用的外围器件。基础计算机系统5021包括一个或多个处理器5026和总线,该总线用以根据已知技术连接处理器5026与系统5021的其他组件并实现(多个)处理器5026与系统5021的其他组件之间的通信。总线将处理器5026连接至存储器5025和长期储存器5027,长期储存器5027可包括(例如)硬驱动(包括(例如)磁性介质、CD、DVD和快闪存储器中的任一个)或磁带驱动。系统5021也可能包括用户接口适配器,用户接口适配器经由总线将微处理器5026连接至或多个接口器件(诸如,键盘5024、鼠标5023、打印机/扫描仪5030和/或其他接口器件),这些接口器件可为诸如触敏式屏幕、数字化键入板(entry pad)等的任何用户接口器件。总线也经由显示器适配器将诸如LCD屏幕或监视器的显示器件5022连接至微处理器5026。
系统5021可借助于能够与网络5029通信(5028)的网络适配器与其他计算机或计算机网络通信。实例网络适配器为通信频道、令牌环、以太网络或调制解调器。替代地,系统5021可使用诸如CDPD(蜂窝式数字分组数据)卡的无线接口通信。系统5021可与局域网(LAN)或广域网(WAN)中的这种其他计算机相关联,或系统5021可为具有另一计算机的客户端/服务器布置中的客户端等。所有这些配置以及适当通信硬件和软件为本领域已知。
图15说明可实践本发明的一个或多个方面的数据处理网络5040。数据处理网络5040可包括多个单独网络(诸如,无线网络和有线网络),这些网络中的每一个可包括多个单独工作站5041、5042、5043、5044。另外,如本领域技术人员将了解,可包括一个或多个LAN,其中LAN可包含耦接至主机处理器的多个智能型工作站。
仍参看图15,网络也可包括大型计算机或服务器,诸如,网关计算机(客户端服务器5046)或应用程序服务器(远程服务器5048,其可存取数据储存库且也可自工作站5045直接存取)。网关计算机5046充当至每个单独网络的入口点。当将一个联网协议连接至另一联网络协议时,需要网关。网关5046可优选借助于通信链路耦接至另一网络(例如,因特网5047)。也可使用通信链路将网关5046直接耦接至一个或多个工作站5041、5042、5043、5044。可利用可购自International Business Machines Corporation的IBM eServerTMSystem z服务器来实施网关计算机。
同时参看图14和图15,可体现本发明的一个或多个实施例的软件程序代码可由系统5020的处理器5026自长期存储介质5027(诸如,CD-ROM驱动或硬驱动)存取。软件程序代码可体现于多种已知介质中的任一个上,以用于供数据处理系统(诸如,磁盘、硬驱动或CD-ROM)使用。程序代码可分发于这种介质上,或可经由网络自一个计算机系统的存储器或储存器至其他计算机系统地分发至用户5050、5051,以供这种其他系统的用户使用。
可替代地,程序代码可体现于存储器5025中,且由处理器5026使用处理器总线来存取。此程序代码包括操作系统,其控制各种计算机组件和一个或多个应用程序5032的功能和交互。通常将程序代码自存储介质5027分页至高速存储器5025,在高速存储器5025处,程序代码可用于由处理器5026处理。用于在存储器中、在物理介质上体现软件程序代码和/或经由网络分发软件程序代码的技术和方法已熟知且在本文中将不进一步加以讨论。当在有形介质(包括(但不限于)电子存储器模块(RAM)、快闪存储器、光盘(CD)、DVD、磁带等)上建立和存储程序代码时,程序代码常常被称作“计算机程序产品”。计算机程序产品介质通常可由优选在计算机系统中的处理电路来读取,以用于由处理电路执行。
最容易用于处理器的高速缓冲存储器(通常比处理器的其他高速缓冲存储器快且小)为最低(L1或层级一)高速缓冲存储器,且主储存器(主存储器)为最高层级高速缓冲存储器(若存在3个层级,则为L3)。常常将最低层级高速缓冲存储器划分成保持要执行的机器指令的指令高速缓冲存储器(I-高速缓冲存储器)和保持数据操作数的数据高速缓冲存储器(D-高速缓冲存储器)。
参看图16,针对处理器5026描绘例示性处理器实施例。通常,使用高速缓冲存储器5053的一个或多个层级缓冲存储器块以便改进处理器性能。高速缓冲存储器5053为保持有可能使用的存储器数据的高速缓冲存储器线的高速缓冲器。典型的高速缓冲存储器线为64个、128个或256个字节的存储器数据。除用于对数据进行高速缓冲外,单独的高速缓冲存储器也常常用于对指令进行高速缓冲。常常通过本领域中熟知的各种“窥探(snoop)”算法来提供高速缓冲一致性(存储器和高速缓冲存储器中的线的复制的同步)。处理器系统的主存储器储存器5025常常被称作高速缓冲存储器。在具有4个层级的高速缓冲存储器5053的处理器系统中,主储存器5025有时被称作层级5(L5)高速缓冲存储器,这是因为其通常较快且仅保持可用于计算机系统的非易失性储存器(DASD、磁带等)的部分。主储存器5025对由操作系统分页入和分页出主储存器5025的数据页“进行高速缓冲”。
程序计数器(指令计数器)5061保持追踪要执行的当前指令的地址。z/Architecture处理器中的程序计数器为64个位,且可经截断至31或24个位以支持先前寻址限制。程序计数器通常体现于计算机的PSW(程序状态字)中,使得程序计数器在上下文切换期间持续。因此,具有程序计数器值的进行中程序可由(例如)操作系统来中断(自程序环境至操作系统环境的上下文切换)。在程序不起作用时,程序的PSW维持程序计数器值,且在操作系统正执行时,使用操作系统的程序计数器(在PSW中)。通常,以等于当前指令的字节的数目的量来使程序计数器递增。RISC(精简指令集计算)指令通常为固定长度,而CISC(复杂指令集计算)指令通常为可变长度。IBM z/Architecture的指令为具有2个、4个或6个字节长度的CISC指令。举例而言,通过上下文切换操作或分支指令的分支选取操作来修改程序计数器5061。在上下文切换操作中,将当前程序计数器值连同关于正执行的程序的其他状态信息(诸如,条件码)一起保存于程序状态字中,且载入新程序计数器值从而指向要执行的新程序模块的指令。执行分支选取操作以便通过将分支指令的结果载入至程序计数器5061中而准许程序作出决策或在程序内循环。
通常,指令读取单元5055用以代表处理器5026取得指令。取得单元取得“下一个顺序指令”、分支选取指令的目标指令或在上下文切换之后的程序的第一指令。现代指令取得单元常常使用预取得技术以基于可能使用经预先取得的指令的可能性而推测性地预取得指令。举例而言,取得单元可取得包括下一个顺序指令的指令的16个字节和再下一个顺序指令的额外字节。
然后由处理器5026执行所取得的指令。在一个实施例中,将(多个)所取得的指令传递至取得单元的分派单元5056。分派单元解码(多个)指令且将关于(多个)经解码的指令的信息转递至适当单元5057、5058、5060。执行单元5057通常将自指令取得单元5055接收关于经解码的算术指令的信息,且将根据指令的操作码对操作数执行算术运算。优选自存储器5025、构建的寄存器5059或自正执行的指令的立即字段,将操作数提供至执行单元5057。当存储执行的结果时,将执行的结果存储于存储器5025、寄存器5059中或其他机器硬件(诸如,控制寄存器、PSW寄存器等)中。
处理器5026通常具有用于执行指令的功能的一个或多个单元5057、5058、5060。参看图17A,执行单元5057可借助于接口逻辑5071与构建的通用寄存器5059、解码/分派单元5056、载入存储单元5060和其他处理器单元5065通信。执行单元5057可使用若干个寄存器电路5067、5068、5069以保持算术逻辑单元(ALU)5066将进行运算的信息。ALU执行算术运算(诸如,加法、减法、乘法和除法)以及逻辑函数(诸如,“和”(and)、“或”(or)和“异或”(XOR)、旋转和移位)。优选地,ALU支持依赖于设计的专业化运算。其他电路可提供其他构建的工具5072,包括(例如)条件码和恢复支持逻辑。通常,将ALU运算的结果保持于输出寄存器电路5070中,输出寄存器电路5070可将结果转递至多种其他处理功能。存在处理器单元的许多布置,本发明描述仅意欲提供对一个实施例的代表性理解。
“加法”指令(例如)将在具有算术和逻辑功能性的执行单元5057中执行,而浮点指令(例如)将在具有专业化的浮点能力的浮点执行中执行。优选地,执行单元通过对操作数执行操作码定义的功能而对由指令识别的操作数进行运算。举例而言,“加法”指令可由执行单元5057对在由指令的寄存器字段识别的两个寄存器5059中发现的操作数执行。
执行单元5057对两个操作数执行算术加法,且将结果存储于第三操作数中,其中第三操作数可为第三寄存器或两个源寄存器中的一个。执行单元优选利用算术逻辑单元(ALU)5066,算术逻辑单元(ALU)5066能够执行多种逻辑函数(诸如,移位、旋转、“和”(And)、“或”(Or)和“异或”(XOR))和多种代数函数(包括加法、减法、乘法、除法中的任一个)。一些ALU5066经设计以用于标量运算,且一些ALU5066经设计以用于浮点运算。取决于架构,数据可为大端法(Big Endian)(其中最低有效字节处于最高字节地址)或小端法(LittleEndian)(其中最低有效字节处于最低字节地址)。IBM z/Architecture为大端法。取决于架构,无符号的字段可为符号和量值(1的补数或2的补数)。2的补数是有利的,因为ALU并不需要设计减法能力,这由于在ALU中,2的补数中的负值或正值仅需要加法。通常以速记法来描述数字,其中12位字段定义4,096字节块的地址,且通常描述为(例如)4Kbyte(千字节)块。
参看图17B,用于执行分支指令的分支指令信息通常发送至分支单元5058,分支单元5058常常使用分支预测算法(诸如,分支历史表5082)以在其他条件运算完成之前预测分支的结果。将取得当前分支指令的目标,且在条件运算完成之前推测性地执行当前分支指令的目标。当完成条件运算时,基于条件运算的条件和所推测的结果,完成或放弃推测性执行的分支指令。典型分支指令可测试条件码,且在条件码满足分支指令的分支要求的情况下分支至目标地址,可基于包括(例如)在寄存器字段或指令的立即字段中发现的数字的若干个数字而计算目标地址。分支单元5058可使用具有多个输入寄存器电路5075、5076、5077和输出寄存器电路5080的ALU5074。举例而言,分支单元5058可与通用寄存器5059、解码分派单元5056或其他电路5073通信。
指令群组的执行可对于包括(例如)以下的多种原因被中断:由操作系统启动的上下文切换、引起上下文切换的程序例外或错误、引起上下文切换的I/O中断信号或多个程序的多线程活动(在多线程化环境中)。优选地,上下文切换动作保存关于当前正执行的程序的状态信息,且然后载入关于正被调用的另一程序的状态信息。举例而言,可将状态信息保存于硬件寄存器中或存储器中。状态信息优选包含指向要执行的下一个指令的程序计数器值、条件码、存储器翻译信息和构建的寄存器内容。上下文切换活动可单独或组合地通过硬件电路、应用程序、操作系统程序或固件程序代码(微码、微微码或经授权内部码(LIC))来训练。
处理器根据指令定义的方法来存取操作数。指令可使用指令的一部分的值来提供立即操作数,可提供明确指向通用寄存器或专用寄存器(例如,浮点寄存器)的一个或多个寄存器字段。指令可利用通过操作码字段识别为操作数的隐含的寄存器。指令可将存储器位置用于操作数。操作数的存储器位置可由寄存器、立即字段或寄存器与立即字段的组合来提供,如通过z/Architecture长位移工具(long displacement facility)举例说明,其中指令定义(例如)相加在一起以提供操作数在存储器中的地址的基寄存器、索引寄存器和立即字段(位移字段)。除非另有指示,否则本文中的位置通常隐含主存储器(主储存器)中的位置。
参看图17C,处理器使用载入/存储单元5060来存取储存器。载入/存储单元5060可通过获得目标操作数在存储器5053中的地址且在寄存器5059或另一存储器5053的位置中载入操作数来执行载入操作,或可通过获得目标操作数在存储器5053中的地址且将自寄存器5059或另一存储器5053的位置获得的数据存储于存储器5053中的目标操作数位置中来执行存储操作。载入/存储单元5060可为推测性的,且可以相对于指令顺序而言无序的顺序存取存储器,然而,载入/存储单元5060对于程序维持按次序执行指令的显现。载入/存储单元5060可与通用寄存器5059、解码/分派单元5056、高速缓冲存储器/存储器接口5053或其他元件5083通信,且包含各种寄存器电路、ALU5085和控制逻辑5090以计算存储地址且提供管线定序以保持操作按次序。一些操作可能为无序的,但载入/存储单元提供使得无序操作对于程序显现为已按次序执行的功能性,如本领域中所熟知。
优选地,应用程序“看见”的地址常常被称作虚拟地址。虚拟地址有时被称作“逻辑地址”和“有效地址”。这些虚拟地址为虚拟是因为:它们通过多种动态地址翻译(DAT)技术中的一个而重新导向至物理存储器位置,这些DAT技术包括(但不限于)仅对虚拟地址加偏移值作为前缀、经由一个或多个翻译表翻译虚拟地址,翻译表优选单独或组合地包含至少段表和页表,优选地,段表具有指向页表的入口。在z/Architecture中,提供翻译层级,包括区第一表、区第二表、区第三表、段表和选用的页表。常常通过利用翻译后备缓冲器(TLB)(其包含将虚拟地址映射至相关联的物理存储器位置的入口)来改进地址翻译的性能。当DAT使用翻译表翻译虚拟地址时,建立这些入口。然后,虚拟地址的随后使用可利用快速TLB的入口,而不是缓慢依序翻译表存取。可通过包括LRU(最近最少使用)的多种替换演算法来管理TLB内容。
在处理器为多处理器系统的处理器的状况下,每处理器具有保持诸如I/O、高速缓冲存储器、TLB和存储器的共用资源互锁以达成一致性的责任。通常,在维持高速缓冲一致性中将利用“窥探”技术。在窥探环境中,可将每个高速缓冲存储器线标记为处于以下状态中的任一个以便促进共用:共用状态、互斥状态、改变的状态、无效状态等。
I/O单元5054(图16)为处理器提供用于附接至外围器件(例如,包括磁带、光盘、打印机、显示器和网络)的构件。I/O单元常常由软件驱动程序呈现至计算机程序。在大型计算机(诸如,来自的System)中,通道适配器和开放系统适配器为大型计算机的I/O单元,这些I/O单元提供操作系统与外围器件之间的通信。
另外,其他类型的计算环境可受益于本发明的一个或多个方面。作为实例,环境可包括仿真器(例如,软件或其他仿真机制),在该仿真器中仿真特定架构(包括(例如)指令执行、构建的功能(诸如,地址翻译)和构建的寄存器)或其子集(例如,在具有处理器和存储器的本地计算机系统上)。在这种环境中,仿真器的一个或多个仿真功能可实施本发明的一个或多个方面,即使执行该仿真器的计算机可具有不同于正仿真能力的架构也如此。作为一个实例,在仿真模式下,解码特定指令或正仿真操作,且构建适当仿真功能以实施单独指令或操作。
在仿真环境中,主机计算机包括(例如):存储器,其存储指令和数据;指令取得单元,其自存储器取得指令且可选地提供所取得的指令的本地缓冲;指令解码单元,其接收所取得的指令且确定已取得的指令的类型;和指令执行单元,其执行这些指令。执行可包括:将数据自存储器载入至寄存器中;将数据自寄存器存储回至存储器;或执行某类型的算术或逻辑运算(如由解码单元确定)。在一个实例中,以软件来实施每个单元。举例而言,将正由这些单元执行的操作实施为仿真器软件内的一个或多个子例程。
更具体地,在大型计算机中,构建的机器指令常常借助于编译应用程序而由程序员(现今通常为“C”程序员)使用。存储于存储介质中的这些指令可本地地在z/Architecture 服务器中或者在执行其他架构的机器中执行。可在现有和未来大型计算机服务器中和在的其他机器(例如,Power Systems服务器和System服务器)上仿真这些指令。可于在使用由AMDTM和其他制造的硬件的广泛多种机器上执行Linux的机器中执行这些指令。除了在z/Architecture下在该硬件上执行外,也可使用Linux,以及使用由Hercules、UMX或FSI(Fundamental Software,Inc)进行的仿真机器,其中执行大体上处于仿真模式下。在仿真模式下,由本地处理器执行仿真软件以仿真仿真处理器的架构。
本地处理器通常执行包含固件或本地操作系统的仿真软件以执行仿真处理器的仿真。仿真软件负责取得和执行仿真处理器架构的指令。仿真软件维持仿真程序计数器以追踪指令边界。仿真软件一次可取得一个或多个仿真机器指令,且将该一个或多个仿真机器指令转换至对应的本地机器指令群组,以用于由本地处理器执行。可对这些经转换的指令进行高速缓冲,使得可实现较快速转换。尽管如此,仿真软件仍将维持仿真处理器架构的架构规则以便确保操作系统和针对仿真处理器编写的应用程序正确地操作。此外,仿真软件将提供通过仿真处理器架构识别的资源(包括(但不限于)控制寄存器、通用寄存器、浮点寄存器、包括(例如)段表和页表的动态地址翻译功能、中断机制、上下文切换机制、当日时间(TOD)时钟和至I/O子系统的构建的接口),使得操作系统或经设计以在仿真处理器上执行的应用程序可在具有仿真软件的本地处理器上执行。
解码正进行仿真特定指令,且调用子例程以执行个别指令的功能。仿真仿真处理器的功能的仿真软件功能(例如)按以下来实施:“C”子例程或驱动程序,或在理解优选实施例的描述之后将在本领域的技术人员的技术内的提供用于特定硬件的驱动程序的某其他方法。包括(但不限于)以下的各种软件和硬件仿真专利说明达成针对不同机器构建的指令格式用于可用于本领域技术人员的目标机器的仿真的多种已知方式:Beausoleil等人的题为“Multiprocessor for Hardware Emulation”的美国专利证书第5,551,013号;和Scalzi等人的题为“Preprocessing of Stored Target Routines for Emulating IncompatibleInstructions on a Target Processor”的美国专利证书第6,009,261号;和Davidian等人的题为“Decoding Guest Instruction to Directly Access Emulation Routines thatEmulate the Guest Instructions”的美国专利证书第5,574,873号;和Gorishek等人的题为“Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor SupportAllowing Non-Native Code to Run in a System”的美国专利证书第6,308,255号;和Lethin等人的题为“Dynamic Optimizing Object Code Translator for ArchitectureEmulation and Dynamic Optimizing Object Code Translation Method”的美国专利证书第6,463,582号;和Eric Traut的题为“Method for Emulating Guest Instructions ona Host Computer Through Dynamic Recompilation of Host Instructions”的美国专利证书第5,790,825号(前述专利证书中的每一个在此以其全文引用的方式并入本文中);和许多其他。
在图18中,提供仿真主机计算机系统5092的实例,其仿真主机架构的主机计算机系统5000'。在仿真主机计算机系统5092中,主机处理器(CPU)5091为仿真主机处理器(或虚拟主机处理器),且包含仿真处理器5093,其具有不同于主机计算机5000'的处理器5091的本地指令集架构的本地指令集架构。仿真主机计算机系统5092具有仿真处理器5093可存取的存储器5094。在实例实施例中,将存储器5094分割成主机计算机存储器5096部分和仿真例程5097部分。主机计算机存储器5096可用于根据主机计算机架构的仿真主机计算机5092的程序。仿真处理器5093执行不同于仿真处理器5091的本地指令的架构的构建的指令集的本地指令,这些本地指令自仿真例程存储器5097获得,且可通过使用在序列和存取/解码例程中获得的一个或多个指令自主机计算机存储器5096中的程序存取主机指令以用于执行,序列和存取/解码例程可解码(多个)所存取的主机指令以确定用于仿真所存取的主机指令的功能的本地指令执行例程。举例而言,针对主机计算机系统5000'的架构定义的其他工具可通过构建的工具例程来仿真,包括诸如通用寄存器、控制寄存器、动态地址翻译和I/O子系统支持和处理器高速缓冲存储器的工具。仿真例程也可利用可用于仿真处理器5093中的功能(诸如,通用寄存器和虚拟地址的动态翻译)以改进仿真例程的性能。也可提供特殊硬件和卸载引擎以辅助处理器5093仿真主机计算机5000'的功能。
本文中所使用的术语仅用于描述特定实施例的目的,且并不意欲为本发明的限制。如本文中所使用,除非上下文另有清晰指示,否则单数形式“一”、“一个”和“该”意欲也包括复数形式。应进一步理解,当术语“包含”和/或“包括”用于此说明书中时,其指定所叙述特征、整数、步骤、操作、元件和/或组件的存在,但并不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。
以下权利要求书中的所有构件或步骤加功能元件的对应结构、材料、动作和等效物(若有的话)意欲包括用于结合如特别主张的其他所主张元件执行功能的任何结构、材料或动作。已出于说明和描述的目的呈现本发明的一个或多个方面的描述,但该描述并不意欲为详尽的或限于所公开的形式下的本发明。在不脱离本发明的范畴和精神的情况下,许多修改和变化对于本领域技术人员将为显而易见。选择并描述了实施例以便最佳地解释本发明的原理和实践应用,且使其他本领域技术人员能够针对具有如适合于所预期的特定用途的各种修改的各种实施例来理解本发明。
第23章 向量串指令
向量串工具
指令
除非另有指定,否则所有操作数为向量寄存器操作数。汇编器语法中的“V”指明向量操作数。
向量寻找任何相等
自左至右进行,比较第二操作数的每个无符号二进制整数元素与第三操作数的每个无符号二进制整数元素的相等性,且若在M5字段中设定了零搜索标志,则视情况与零比较。
若M5字段中的结果类型(RT)标志为零,则对于匹配第三操作数中的任一元素或视情况匹配零的第二操作数中的每个元素,将第一操作数中对应的元素的位位置设定为一,否则,将其设定为零。
若M5字段中的结果类型(RT)标志为一,则将匹配第三操作数中的元素或零的第二操作数中的最左侧元素的字节索引存储于第一操作数的字节七中。
每个指令具有扩展的记忆码区段,其描述推荐的扩展的记忆码及其对应的机器组译器语法。
程序设计注释:对于视情况设定条件码的所有指令,若设定条件码,则性能可能降级。
若M5字段中的结果类型(RT)标志为一且未发现字节相等,或为零(若设定了零搜索标志),则将与向量中的字节的数目相等的索引存储于第一操作数的字节七中。
M4字段指定元素大小控制(ES)。ES控制指定向量寄存器操作数中的元素的大小。若指定保留值,则看作为指定例外。
0-字节
1-半字
2-字
3至15-保留
M5字段具有以下格式:
如下定义M5字段的位:
·结果类型(RT):若为零,则每个所得元素为关于该元素的所有范围比较的掩码。若为一,则将字节索引存储至第一操作数的字节七中,且将零存储于所有其他元素中。
·零搜索(ZS):若为一,则也将第二操作数的每个元素与零比较。
·条件码设定(CC):若为零,则不设定条件码且条件码保持不变。若为一,则如以下段中所指定来设定条件码。
特殊条件
若出现以下中的任一个,则看作指定例外且不采取其他行动:
1.M4字段含有自3至15的值。
2.M5字段的位0不是零。
所得条件码:
若CC标志为零,则码保持不变。
若CC标志为一,则如下来设定码:
0若设定了ZS-位,则在第二操作数中比零低的索引元素中不存在匹配。
1第二操作数的一些元素匹配第三操作数中的至少一个元素。
2第二操作数的所有元素匹配第三操作数中的至少一个元素。
3第二操作数中没有元素匹配第三操作数中的任何元素。
程序例外:
1具有DXC FE的数据,向量寄存器
·在未安装向量扩展工具的情况下的操作
·指定(保留的ES值)
·事务约束(Transaction Constraint)
扩展的记忆码:
向量寻找元素相等
自左至右进行,将第二操作数的无符号二进制整数元素与第三操作数的对应的无符号二进制整数元素比较。若两个元素相等,则将最左侧相等元素的第一字节的字节索引放置于第一操作数的字节七中。将零存储于第一操作数的剩余字节中。若没有发现字节相等,或若没有发现字节为零(若设定了零比较),则将与向量中的字节的数目相等的索引存储于第一操作数的字节七中。将零存储于剩余字节中。
若在M5字段中设定了零搜索(ZS)位,则也比较第二操作数中的每个元素与零的相等性。若在发现第二操作数和第三操作数的任何其他元素相等之前在第二操作数中寻找到零元素,则将发现为零的元素的第一字节的字节索引存储于第一操作数的字节七中,且将零存储于所有其他字节位置中。若条件码设定(CC)标志为一,则将条件码设定为零。
M4字段指定元素大小控制(ES)。ES控制指定向量寄存器操作数中的元素的大小。若指定保留值,则看作为指定例外。
0-字节
1-半字
2-字
3至15-保留
M5字段具有以下格式:
如下定义M5字段的位:
·保留:保留位0至1且位0至1必须为零。否则,看作为指定例外。
·零搜索(ZS):若为一,则也将第二操作数的每个元素与零比较。
·条件码设定(CC):若为零,则条件码保持不变。若为一,则如在以下段中所指定来设定条件码。
特殊条件
若出现以下中的任一个,则看作指定例外且不采取其他行动:
1.M4字段含有自3至15的值。
2.M5字段的位0至1不是零。
所得条件码:
若将M5字段的位3设定为一,则如下设定码:
0若设定了零比较位,则比较在具有比任何相等比较小的索引的元素中检测到第二操作数中的零元素。
1比较在一些元素中检测到第二操作数与第三操作数之间的匹配。若设定了零比较位,则此匹配出现于具有小于或等于零比较元素的索引的元素中。
2--
3没有元素比较起来相等。
若M5字段的位3为零,则码保持不变。
程序例外:
·具有DXC FE的数据,向量寄存器
·在未安装向量扩展工具的情况下的操作
·指定(保留的ES值)
·事务约束
扩展的记忆码:
程序设计注释:
1.对于任一元素大小,始终将字节索引存储至第一操作数中。举例而言,若将元素大小设定为半字且比较出第2个索引的半字相等,则将存储字节索引4。
2.第三操作数不应含有具有零值的元素。若第三操作数确实含有零且在任何其他相等比较之前与第二操作数中的零元素匹配,则设定条件码,而不管零比较位设定。
向量寻找元素不相等
自左至右进行,将第二操作数的无符号二进制整数元素与第三操作数的对应的无符号二进制整数元素比较。若两个元素不相等,则将最左侧不相等元素的字节索引放置于第一操作数的字节七中,且将零存储至所有其他字节。若将M5字段中的条件码设定(CC)位设定为一,则设定条件码以指示哪一操作数较大。若所有元素相等,则将等于向量大小的字节索引放置于第一操作数的字节七中,且将零放置于所有其他字节位置中。若CC位为一,则设定条件码三。
若在M5字段中设定了零搜索(ZS)位,则也比较第二操作数中的每个元素与零的相等性。若在发现第二操作数的任一其他元素不相等之前在第二操作数中寻找到零元素,则将发现为零的元素的第一字节的字节索引存储于第一操作数的字节七中。将零存储于所有其他字节中,且设定条件码0。
M4字段指定元素大小控制(ES)。ES控制指定向量寄存器操作数中的元素的大小。若指定保留值,则看作为指定例外。
0-字节
1-半字
2-字
3至15-保留
M5字段具有以下格式:
如下定义M5字段的位:
·零搜索(ZS):若为一,则也将第二操作数的每个元素与零比较。
·条件码设定(CC):若为零,则不设定条件码且条件码保持不变。若为一,则如以下段中所指定来设定条件码。
特殊条件
若出现以下中的任一个,则看作指定例外且不采取其他行动:
1.M4字段含有自3至15的值。
2.M5字段的位0至1不是零。
所得条件码:
若将M5字段的位3设定为一,则如下设定码:
0若设定了零比较位,则比较在比任何不相等比较低的索引元素中检测到两个操作数中的零元素
1检测到元素失配,且VR2中的元素小于VR3中的元素
2检测到元素失配,且VR2中的元素大于VR3中的元素
3所有元素比较起来相等,且若设定了零比较位,则在第二操作数中没有寻找到零元素。
若M5字段的位3为零,则码保持不变。
程序例外:
·具有DXC FE的数据,向量寄存器
·在没有安装向量扩展工具的情况下的操作
·指定(保留的ES值)
·事务约束
扩展的记忆码:
向量串范围比较
自左至右进行,将第二操作数中的无符号二进制整数元素与由第三操作数和第四操作数中的偶数-奇数对元素定义的值范围比较。结合来自第四操作数的控制值定义要执行的比较的范围。若元素匹配由第三操作数和第四操作数指定的范围中的任一个,则将其视为匹配。
若M6字段中的结果类型(RT)标志为零,则若第一操作数中对应于第二操作数中正进行比较的元素的元素匹配这些范围中的任一个,则将该元素的位位置设定为一,否则,将其设定为零。
若将M6字段中的结果类型(RT)标志设定为一,则第二操作数中匹配由第三操作数和第四操作数指定的范围中的任一个或零比较(若将ZS标志设定为一)的第一元素的字节索引放置于第一操作数的字节七中,且将零存储于剩余字节中。若没有元素匹配,则将等于向量中的字节的数目的索引放置于第一操作数的字节七中,且将零存储于剩余字节中。
M6字段中的零搜索(ZS)标志,若设定为一,则将第二操作数元素与零的比较添加至由第三操作数和第四操作数提供的范围。若为在比任何其他真比较低的索引元素中的零比较,则将条件码设定为零。
这些操作数含有由M5字段中的元素大小控制指定的大小的元素。
第四操作数元素具有以下格式:
若ES等于0:
若ES等于1:
若ES等于2:
如下定义第四操作数元素中的位:
·相等(EQ):当为一时,进行相等性比较。
·大于(GT):当为一时,执行大于比较。
·小于(LT):当为一时,执行小于比较。
·保留所有其他位且所有其他位应为零以确保未来相容性。
可以任何组合使用这些控制位。若这些位都没有经设定,则比较将始终产生假结果。若所有这些位经设定,则比较将始终产生真结果。
M5字段指定元素大小控制(ES)。ES控制指定向量寄存器操作数中的元素的大小。若指定保留值,则看作为指定例外。
0-字节
1-半字
2-字
3至15-保留
M6字段具有以下格式:
如下定义M6字段的位:
·反转结果(IN):若为零,则继续进行与控制向量中的成对值的比较。若为一,则反转在这些范围中的这些成对的比较的结果。
·结果类型(RT):若为零,则每个所得元素为关于该元素的所有范围比较的掩码。若为一,则将索引存储至第一操作数的字节七中。将零存储于剩余字节中。
·零搜索(ZS):若为一,则也将第二操作数的每个元素与零比较。
·条件码设定(CC):若为零,则不设定条件码且条件码保持不变。若为一,则如以下段中所指定来设定条件码。
特殊条件
若出现以下中的任一个,则看作指定例外且不采取其他行动:
1.M4字段含有自3至15的值。
所得条件码:
0若ZS=1且在比任何比较低的索引元素中发现零
1发现比较
2--
3没有发现比较
程序例外:
·具有DXC FE的数据,向量寄存器
·在没有安装向量扩展工具的情况下的操作
·指定(保留的ES值)
·事务约束
扩展的记忆码:
图23-1.
ES=1,ZS=0
VR1(a) RT=0的结果
VR1(b) RT=1的结果
将计数载入至块边界
将含有可能自第二操作数位置载入而不跨越指定块边界的字节的数目的32-位无符号二进制整数(覆盖于十六处)放置于第一操作数中。
将位移作为12-位无符号整数对待。
第二操作数地址不用以寻址数据。
M3字段指定用以用信号向CPU通知关于块边界大小以计算载入的可能字节的数目的码。若指定保留值,则看作为指定例外。
所得条件码:
0操作数一为十六
1--
2--
3操作数一小于十六
所得条件码:
程序例外:
·在没有安装向量扩展工具的情况下的操作
·指定
程序设计注释:期望结合向量载入至块边界(VECTOR LOAD TO BLOCK BOUNDARY)使用将计数载入至块边界(LOAD COUNT TO BLOCK BOUNDARY)以确定载入的字节的数目。
自VR元素的向量载入GR
将具有由M4字段中的ES值指定的大小且通过第二操作数地址编索引的第三操作数的元素放置于第一操作数位置中。第三操作数为向量寄存器。第一操作数为通用寄存器。若通过第二操作数地址指定的索引大于具有指定元素大小的第三操作数中最高编号的元素,则第一操作数中的数据为不可预测。
若向量寄存器元素小于双字,则该元素在64-位通用寄存器中恰好对准,且零填充剩余位。
第二操作数地址不用以寻址数据;相反,该地址的最右侧12个位用以指定元素在第二操作数内的索引。
M4字段指定元素大小控制(ES)。ES控制指定向量寄存器操作数中的元素的大小。若指定保留值,则看作为指定例外。
0-字节
1-半字
2-字
3-双字
4至15-保留不变。
所得条件码:码不变。
程序例外:
·具有DXC FE的数据,向量寄存器
·在没有安装向量扩展工具的情况下的操作
·指定(保留的ES值)
·事务约束
扩展的记忆码:
向量载入至块边界
以零索引字节元素开始,以来自第二操作数的字节载入第一操作数。若遇到边界条件,则第一操作数的其余部分为不可预测。没有看作为关于未载入的字节的存取例外。
将针对VLBB的位移作为12-位无符号整数对待。
M3字段指定用以用信号向CPU通知关于用以载入至的块边界大小的码。若指定保留值,则看作为指定例外。
所得条件码:码保持不变。
程序例外:
·存取(取得,操作数2)
·具有DXC FE的数据,向量寄存器
·在没有安装向量扩展工具的情况下的操作
·指定(保留的块边界码)
·事务约束
程序设计注释:
1.在某些情况下,可经过块边界载入数据。然而,若不存在关于该数据的存取例外,则将仅发生此情形。
向量存储
将第一操作数中的128-位值存储至通过第二操作数指定的存储位置。将针对VST的位移作为12-位无符号整数对待。
所得条件码:码保持不变。
程序例外:
·存取(存储,操作数2)
·具有DXC FE的数据,向量寄存器
·在没有安装向量扩展工具的情况下的操作
·事务约束
具有长度的向量存储
自左至右进行,将来自第一操作数的字节存储于第二操作数位置处。指定第三操作数的通用寄存器含有32-位无符号整数,该整数含有表示存储的最高索引字节的值。若第三操作数含有大于或等于向量的最高字节索引的值,则存储第一操作数的所有字节。
仅看作为关于存储的字节的存取例外。
将针对具有长度的向量存储(VECTOR STORE WITH LENGTH)的位移作为12-位无符号整数对待。
所得条件码:条件码保持不变。
程序例外:
·存取(存储,操作数2)
·具有DXC FE的数据,向量寄存器
·在没有安装向量扩展工具的情况下的操作
·事务约束
RXB描述
所有向量指令具有在标注为RXB的指令的位36至40中的字段。此字段含有用于所有向量寄存器指明的操作数的最高有效位。保留用于没有通过指令指定的寄存器指明的位且应将其设定为零;否则,程序在未来无法相容地操作。将最高有效位串接至四-位寄存器指明的左侧以建立五-位向量寄存器指明。
如下定义这些位:
0.在指令的位8至11中用于向量寄存器指明的最高有效位。
1.在指令的位12至15中用于向量寄存器指明的最高有效位。
2.在指令的位16至19中用于向量寄存器指明的最高有效位。
3.在指令的位32至35中用于向量寄存器指明的最高有效位。
向量启用控制
若将控制寄存器零中的向量启用控制(位46)和AFP寄存器控制(位45)二者设定为一,则可仅使用向量寄存器和指令。若安装了向量工具且在没有设定启用位的情况下执行向量指令,则看作为具有DXC FE十六进制的数据例外。若没有安装向量工具,则看作为操作例外。

Claims (20)

1.一种用于变换计算环境的指令区分符的计算机可读存储介质,其可由处理电路读取且存储用于由该处理电路执行以用于执行如下方法的程序,该方法包含:
由处理器从定义用于第一计算机架构的第一指令获得不相邻区分符,不相邻区分符具有第一部分和第二部分,其中,该获得包括从指令的第一字段获得第一部分并且从指令的第二字段获得第二部分,第一字段与第二字段分离;
使用第一部分和第二部分生成相邻区分符,该生成使用基于第一指令的操作码的一个或者多个规则;以及
使用相邻区分符以指示要在第二指令的执行中使用的资源,该第二指令定义用于与第一计算机架构不同的第二计算机架构并且仿真第一指令的功能,其中使用相邻区分符并且在不需要关于不相邻区分符的情况下生成所述仿真。
2.如权利要求1所述的计算机可读存储介质,其中处理器包括仿真器,并且其中,第一部分包括第一一个或者多个位,并且第二部分包括第二一个或者多个位,并且该生成包括级联第二一个或者多个位与第一一个或者多个位,以形成相邻区分符,其中,第二一个或者多个位是相邻区分符的最高有效位。
3.如权利要求2所述的计算机可读存储介质,其中第一字段具有与其相关联的操作数位置,并且第二一个或者多个位是第二字段的多个位的子集,并且其中,该获得包括基于第一字段的操作数位置,从第二字段的多个位选择第二一个或者多个位。
4.如权利要求3所述的计算机可读存储介质,其中第一字段的操作数位置作为第一操作数,并且其中,从第二字段的最左侧位置选择第二一个或者多个位。
5.如任一前述权利要求所述的计算机可读存储介质,其中第一字段包括寄存器字段,第二字段包括扩展字段,第一部分包括来自寄存器字段的多个位,第二部分包括来自与寄存器字段对应的指令的位置中的扩展字段的位,并且该生成包括级联来自扩展字段的位与来自寄存器字段的位,以提供相邻区分符。
6.如权利要求1-4任一所述的计算机可读存储介质,其中使用相邻区分符以指示资源包括使用相邻区分符以映射至要由第二指令使用的寄存器。
7.如权利要求6所述的计算机可读存储介质,其中通过相邻区分符映射至的寄存器具有与相邻区分符相同的值。
8.如权利要求6所述的计算机可读存储介质,其中,通过相邻区分符映射至的寄存器具有与相邻区分符不同的值。
9.如权利要求1-4任一所述的计算机可读存储介质,其中第一计算机架构包括包含首指令并且具有次指令的指令集,首指令具有用以存取第一计算机架构的寄存器空间的子部分的寄存器字段,次指令具有用于存取寄存器空间的该子部分和剩余子部分的不相邻寄存器字段,首指令阻止存取剩余子部分。
10.如权利要求1所述的计算机可读存储介质,其中第一字段包括寄存器字段,第二字段包括扩展字段,第一部分包括来自寄存器字段的多个位,第二部分包括来自与寄存器字段对应的指令的位置中的扩展字段的位,并且该生成包括级联来自扩展字段的位与来自寄存器字段的位,以提供相邻区分符,并且还包括:
由处理器从第一指令获得另一不相邻区分符,该另一不相邻区分符具有另一第一部分和另一第二部分,其中,该获得包括从指令的另一第一字段获得另一第一部分并且从扩展字段的另一位获得另一第二部分,该另一第一字段与第一字段和扩展字段分离;
使用所述另一第一部分和所述另一位生成另一相邻区分符,该生成使用基于第一指令的操作码的一个或者多个规则;以及
使用所述另一相邻区分符,以指示要在第二指令的执行中使用的资源。
11.一种用于变换计算环境的指令区分符的计算机系统,该计算机系统包含:
存储器;以及
处理器,其与该存储器通信,其中配置该计算机系统以执行方法,该方法包含:
由处理器从定义用于第一计算机架构的第一指令获得不相邻区分符,不相邻区分符具有第一部分和第二部分,其中,该获得包括从指令的第一字段获得第一部分并且从指令的第二字段获得第二部分,第一字段与第二字段分离;
使用第一部分和第二部分生成相邻区分符,该生成使用基于第一指令的操作码的一个或者多个规则;以及
使用相邻区分符以指示要在第二指令的执行中使用的资源,第二指令定义用于与第一计算机架构不同的第二计算机架构并且仿真第一指令的功能,其中使用相邻区分符并且在不需要关于不相邻区分符的情况下生成所述仿真。
12.如权利要求11所述的计算机系统,其中处理器包括仿真器,并且其中,第一部分包括第一一个或者多个位,并且第二部分包括第二一个或者多个位,并且该生成包括级联第二一个或者多个位与第一一个或者多个位,以形成相邻区分符,其中,第二一个或者多个位是相邻区分符的最高有效位。
13.如权利要求12所述的计算机系统,其中第一字段具有与其相关联的操作数位置,并且第二一个或者多个位是第二字段的多个位的子集,并且其中,该获得包括基于第一字段的操作数位置,从第二字段的多个位选择第二一个或者多个位。
14.如权利要求13所述的计算机系统,其中第一字段的操作数位置作为第一操作数,并且其中,从第二字段的最左侧位置选择第二一个或者多个位。
15.如权利要求11至14中任一项所述的计算机系统,其中第一字段包括寄存器字段,第二字段包括扩展字段,第一部分包括来自寄存器字段的多个位,第二部分包括来自与寄存器字段对应的位置中的扩展字段的位,并且该生成包括级联来自扩展字段的位与来自寄存器字段的位,以提供相邻区分符。
16.如权利要求11至14中任一项所述的计算机系统,其中使用相邻区分符以指示资源包括使用相邻区分符以映射至要由第二指令使用的寄存器。
17.如权利要求16中所述的计算机系统,其中通过相邻区分符映射至的寄存器具有与相邻区分符相同的值或者与相邻区分符不同的值之一。
18.一种变换计算环境的指令区分符的方法,该方法包含:
由处理器从定义用于第一计算机架构的第一指令获得不相邻区分符,不相邻区分符具有第一部分和第二部分,其中,该获得包括从指令的第一字段获得第一部分并且从指令的第二字段获得第二部分,第一字段与第二字段分离;
使用第一部分和第二部分生成相邻区分符,该生成使用基于第一指令的操作码的一个或者多个规则;以及
使用相邻区分符以指示要在第二指令的执行中使用的资源,第二指令定义用于与第一计算机架构不同的第二计算机架构并且仿真第一指令的功能,其中使用相邻区分符并且在不需要关于不相邻区分符的情况下生成所述仿真。
19.如权利要求18所述的方法,其中处理器包括仿真器,并且其中,第一部分包括第一一个或者多个位,并且第二部分包括第二一个或者多个位,并且该生成包括级联第二一个或者多个位与第一一个或者多个位,以形成相邻区分符,其中,第二一个或者多个位是相邻区分符的最高有效位。
20.如权利要求18或19所述的方法,其中第一字段包括寄存器字段,第二字段包括扩展字段,第一部分包括来自寄存器字段的多个位,第二部分包括来自与寄存器字段对应的位置中的扩展字段的位,并且该生成包括级联来自扩展字段的位与来自寄存器字段的位,以提供相邻区分符。
CN201280071425.0A 2012-03-15 2012-11-15 将不相邻指令区分符变换为相邻指令区分符 Active CN104169877B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/421,657 2012-03-15
US13/421,657 US9280347B2 (en) 2012-03-15 2012-03-15 Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
PCT/IB2012/056436 WO2013136144A1 (en) 2012-03-15 2012-11-15 Transforming non-contiguous instruction specifiers to contiguous instruction specifiers

Publications (2)

Publication Number Publication Date
CN104169877A CN104169877A (zh) 2014-11-26
CN104169877B true CN104169877B (zh) 2017-10-13

Family

ID=49158813

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280071425.0A Active CN104169877B (zh) 2012-03-15 2012-11-15 将不相邻指令区分符变换为相邻指令区分符

Country Status (24)

Country Link
US (2) US9280347B2 (zh)
EP (1) EP2769301B1 (zh)
JP (1) JP6108362B2 (zh)
KR (1) KR101643065B1 (zh)
CN (1) CN104169877B (zh)
AU (1) AU2012373735B2 (zh)
BR (1) BR112014022638B1 (zh)
CA (1) CA2867115C (zh)
DK (1) DK2769301T3 (zh)
ES (1) ES2779033T3 (zh)
HK (1) HK1201354A1 (zh)
HR (1) HRP20200393T1 (zh)
HU (1) HUE048409T2 (zh)
IL (1) IL232817A (zh)
LT (1) LT2769301T (zh)
MX (1) MX340050B (zh)
PL (1) PL2769301T3 (zh)
PT (1) PT2769301T (zh)
RU (1) RU2568241C2 (zh)
SG (1) SG11201404825SA (zh)
SI (1) SI2769301T1 (zh)
TW (1) TWI533207B (zh)
WO (1) WO2013136144A1 (zh)
ZA (1) ZA201406612B (zh)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
WO2012103253A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Multilevel conversion table cache for translating guest instructions to native instructions
WO2012103245A2 (en) 2011-01-27 2012-08-02 Soft Machines Inc. Guest instruction block with near branching and far branching sequence construction to native instruction block
KR101612594B1 (ko) 2011-01-27 2016-04-14 소프트 머신즈, 인크. 프로세서의 변환 룩 어사이드 버퍼를 이용하는 게스트 명령-네이티브 명령 레인지 기반 매핑
WO2012103373A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Variable caching structure for managing physical storage
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
US9459867B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9454366B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Copying character data having a termination character from one memory location to another
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9454367B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Finding the length of a set of character data having a termination character
US9459864B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
US9280347B2 (en) 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9268566B2 (en) 2012-03-15 2016-02-23 International Business Machines Corporation Character data match determination by loading registers at most up to memory block boundary and comparing
US9588762B2 (en) 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
WO2014031540A1 (en) * 2012-08-20 2014-02-27 Cameron Donald Kevin Processing resource allocation
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
WO2014151652A1 (en) 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor
CN105122206B (zh) 2013-03-15 2018-11-09 英特尔公司 用于支持推测的访客返回地址栈仿真的方法和装置
US9703562B2 (en) 2013-03-16 2017-07-11 Intel Corporation Instruction emulation processors, methods, and systems
US20140281398A1 (en) * 2013-03-16 2014-09-18 William C. Rash Instruction emulation processors, methods, and systems
US10120681B2 (en) 2014-03-14 2018-11-06 International Business Machines Corporation Compare and delay instructions
US9558032B2 (en) 2014-03-14 2017-01-31 International Business Machines Corporation Conditional instruction end operation
US9454370B2 (en) 2014-03-14 2016-09-27 International Business Machines Corporation Conditional transaction end instruction
EP3172665A4 (en) * 2014-07-25 2018-03-28 INTEL Corporation Using a conversion look aside buffer to implement an instruction set agnostic runtime architecture
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture
US10353680B2 (en) 2014-07-25 2019-07-16 Intel Corporation System converter that implements a run ahead run time guest instruction conversion/decoding process and a prefetching process where guest code is pre-fetched from the target of guest branches in an instruction sequence
US9792098B2 (en) * 2015-03-25 2017-10-17 International Business Machines Corporation Unaligned instruction relocation
US20170022314A1 (en) 2015-07-24 2017-01-26 Weyerhaeuser Nr Company Grafted crosslinked cellulose
US10055208B2 (en) 2015-08-09 2018-08-21 Oracle International Corporation Extending a virtual machine instruction set architecture
US10235170B2 (en) * 2016-09-30 2019-03-19 International Business Machines Corporation Decimal load immediate instruction
CN110851345B (zh) * 2019-09-23 2023-04-14 上海辛格林纳新时达电机有限公司 一种系统参数的调用方法及调用装置
CN113268726B (zh) * 2020-02-17 2023-10-20 华为技术有限公司 程序代码执行行为的监控方法、计算机设备
US11263131B2 (en) * 2020-04-08 2022-03-01 Alibaba Group Holding Limited System and method for allocating memory space
US11604643B2 (en) 2020-12-29 2023-03-14 Shanghai Zhaoxin Semiconductor Co., Ltd. System for executing new instructions and method for executing new instructions
US11625247B2 (en) 2020-12-29 2023-04-11 Shanghai Zhaoxin Semiconductor Co., Ltd. System for executing new instructions and method for executing new instructions
US20220206809A1 (en) 2020-12-29 2022-06-30 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for executing new instructions
US11803381B2 (en) * 2020-12-29 2023-10-31 Shanghai Zhaoxin Semiconductor Co., Ltd. Instruction simulation device and method thereof
US11803383B2 (en) 2020-12-29 2023-10-31 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for executing new instructions
US11789736B2 (en) 2020-12-29 2023-10-17 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for executing new instructions
US11914997B2 (en) 2020-12-29 2024-02-27 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for executing new instructions
US11669328B2 (en) 2020-12-29 2023-06-06 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for converting instructions

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1494677A (zh) * 2000-10-18 2004-05-05 �ʼҷ����ֵ������޹�˾ 数字信号处理装置
US6802056B1 (en) * 1999-06-30 2004-10-05 Microsoft Corporation Translation and transformation of heterogeneous programs
US7793081B2 (en) * 2006-06-02 2010-09-07 International Business Machines Corporation Implementing instruction set architectures with non-contiguous register file specifiers
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture

Family Cites Families (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62276668A (ja) 1985-07-31 1987-12-01 Nec Corp ベクトルマスク演算制御ユニツト
US5073864A (en) 1987-02-10 1991-12-17 Davin Computer Corporation Parallel string processor and method for a minicomputer
US5222225A (en) 1988-10-07 1993-06-22 International Business Machines Corporation Apparatus for processing character string moves in a data processing system
JPH0831032B2 (ja) 1990-08-29 1996-03-27 三菱電機株式会社 データ処理装置
US5465374A (en) 1993-01-12 1995-11-07 International Business Machines Corporation Processor for processing data string by byte-by-byte
WO1994027215A1 (en) 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
EP0704073A1 (en) 1993-06-14 1996-04-03 Apple Computer, Inc. Method and apparatus for finding a termination character within a variable length character string or a processor
JPH0721034A (ja) 1993-06-28 1995-01-24 Fujitsu Ltd 文字列複写処理方法
US5509129A (en) 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US6185629B1 (en) 1994-03-08 2001-02-06 Texas Instruments Incorporated Data transfer controller employing differing memory interface protocols dependent upon external input at predetermined time
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
AU696903B2 (en) 1994-09-27 1998-09-24 Jfe Steel Corporation Zinciferous plated steel sheet and method for manufacturing same
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US5812147A (en) 1996-09-20 1998-09-22 Silicon Graphics, Inc. Instruction methods for performing data formatting while moving data between memory and a vector register file
US5931940A (en) 1997-01-23 1999-08-03 Unisys Corporation Testing and string instructions for data stored on memory byte boundaries in a word oriented machine
US6338057B1 (en) 1997-11-24 2002-01-08 British Telecommunications Public Limited Company Information management and retrieval
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6041402A (en) * 1998-01-05 2000-03-21 Trw Inc. Direct vectored legacy instruction set emulation
US6094695A (en) 1998-03-11 2000-07-25 Texas Instruments Incorporated Storage buffer that dynamically adjusts boundary between two storage areas when one area is full and the other has an empty data register
US6334176B1 (en) 1998-04-17 2001-12-25 Motorola, Inc. Method and apparatus for generating an alignment control vector
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US7100026B2 (en) 2001-05-30 2006-08-29 The Massachusetts Institute Of Technology System and method for performing efficient conditional vector operations for data parallel architectures involving both input and conditional vector values
US20020147969A1 (en) 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
JP3564395B2 (ja) 1998-11-27 2004-09-08 松下電器産業株式会社 アドレス生成装置および動きベクトル検出装置
US6192466B1 (en) 1999-01-21 2001-02-20 International Business Machines Corporation Pipeline control for high-frequency pipelined designs
US6189088B1 (en) 1999-02-03 2001-02-13 International Business Machines Corporation Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location
US6499116B1 (en) 1999-03-31 2002-12-24 International Business Machines Corp. Performance of data stream touch events
US6381691B1 (en) 1999-08-13 2002-04-30 International Business Machines Corporation Method and apparatus for reordering memory operations along multiple execution paths in a processor
US6513109B1 (en) 1999-08-31 2003-01-28 International Business Machines Corporation Method and apparatus for implementing execution predicates in a computer processing system
US6449706B1 (en) 1999-12-22 2002-09-10 Intel Corporation Method and apparatus for accessing unaligned data
JP2001236249A (ja) 2000-02-24 2001-08-31 Nec Corp メモリ管理装置およびメモリ管理方法
US6625724B1 (en) 2000-03-28 2003-09-23 Intel Corporation Method and apparatus to support an expanded register set
US6349361B1 (en) 2000-03-31 2002-02-19 International Business Machines Corporation Methods and apparatus for reordering and renaming memory references in a multiprocessor computer system
US6701424B1 (en) 2000-04-07 2004-03-02 Nintendo Co., Ltd. Method and apparatus for efficient loading and storing of vectors
US6408383B1 (en) 2000-05-04 2002-06-18 Sun Microsystems, Inc. Array access boundary check by executing BNDCHK instruction with comparison specifiers
US7487330B2 (en) 2001-05-02 2009-02-03 International Business Machines Corporations Method and apparatus for transferring control in a computer system with dynamic compilation capability
JP3900863B2 (ja) 2001-06-28 2007-04-04 シャープ株式会社 データ転送制御装置、半導体記憶装置および情報機器
US6839828B2 (en) 2001-08-14 2005-01-04 International Business Machines Corporation SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode
US6907443B2 (en) 2001-09-19 2005-06-14 Broadcom Corporation Magnitude comparator
US6570511B1 (en) 2001-10-15 2003-05-27 Unisys Corporation Data compression method and apparatus implemented with limited length character tables and compact string code utilization
US20100274988A1 (en) 2002-02-04 2010-10-28 Mimar Tibet Flexible vector modes of operation for SIMD processor
US7089371B2 (en) 2002-02-12 2006-08-08 Ip-First, Llc Microprocessor apparatus and method for prefetch, allocation, and initialization of a block of cache lines from memory
US7441104B2 (en) 2002-03-30 2008-10-21 Hewlett-Packard Development Company, L.P. Parallel subword instructions with distributed results
US7373483B2 (en) * 2002-04-02 2008-05-13 Ip-First, Llc Mechanism for extending the number of registers in a microprocessor
US7376812B1 (en) 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
US20040049657A1 (en) * 2002-09-10 2004-03-11 Kling Ralph M. Extended register space apparatus and methods for processors
US6918010B1 (en) 2002-10-16 2005-07-12 Silicon Graphics, Inc. Method and system for prefetching data
US7103754B2 (en) 2003-03-28 2006-09-05 International Business Machines Corporation Computer instructions for having extended signed displacement fields for finding instruction operands
US20040215924A1 (en) 2003-04-28 2004-10-28 Collard Jean-Francois C. Analyzing stored data
US7035986B2 (en) 2003-05-12 2006-04-25 International Business Machines Corporation System and method for simultaneous access of the same line in cache storage
US20040250027A1 (en) 2003-06-04 2004-12-09 Heflinger Kenneth A. Method and system for comparing multiple bytes of data to stored string segments
US7610466B2 (en) 2003-09-05 2009-10-27 Freescale Semiconductor, Inc. Data processing system using independent memory and register operand size specifiers and method thereof
US7904905B2 (en) 2003-11-14 2011-03-08 Stmicroelectronics, Inc. System and method for efficiently executing single program multiple data (SPMD) programs
GB2411973B (en) 2003-12-09 2006-09-27 Advanced Risc Mach Ltd Constant generation in SMD processing
US20060095713A1 (en) 2004-11-03 2006-05-04 Stexar Corporation Clip-and-pack instruction for processor
US9436468B2 (en) 2005-11-22 2016-09-06 Intel Corporation Technique for setting a vector mask
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
US7565514B2 (en) 2006-04-28 2009-07-21 Freescale Semiconductor, Inc. Parallel condition code generation for SIMD operations
CN101097488B (zh) 2006-06-30 2011-05-04 2012244安大略公司 从接收的文本中学习字符片段的方法及相关手持电子设备
US9069547B2 (en) 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
US7536532B2 (en) 2006-09-27 2009-05-19 International Business Machines Corporation Merge operations of data arrays based on SIMD instructions
US7991987B2 (en) 2007-05-10 2011-08-02 Intel Corporation Comparing text strings
EP2160692A1 (en) 2007-05-21 2010-03-10 Incredimail Ltd Interactive message editing system and method
US20090063410A1 (en) 2007-08-29 2009-03-05 Nils Haustein Method for Performing Parallel Data Indexing Within a Data Storage System
US7739434B2 (en) 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
US7870339B2 (en) 2008-01-11 2011-01-11 International Business Machines Corporation Extract cache attribute facility and instruction therefore
US7895419B2 (en) 2008-01-11 2011-02-22 International Business Machines Corporation Rotate then operate on selected bits facility and instructions therefore
US7877582B2 (en) 2008-01-31 2011-01-25 International Business Machines Corporation Multi-addressable register file
EP2245529A1 (en) 2008-02-18 2010-11-03 Sandbridge Technologies, Inc. Method to accelerate null-terminated string operations
DK176835B1 (da) 2008-03-07 2009-11-23 Jala Aps Fremgangsmåde til skanning, medium indeholdende et program til udövelse af fremgangsmåden samt system til udövelse af fremgangsmåden
US8386547B2 (en) 2008-10-31 2013-02-26 Intel Corporation Instruction and logic for performing range detection
US20120023308A1 (en) 2009-02-02 2012-01-26 Renesas Electronics Corporation Parallel comparison/selection operation apparatus, processor, and parallel comparison/selection operation method
JP5471082B2 (ja) 2009-06-30 2014-04-16 富士通株式会社 演算処理装置および演算処理装置の制御方法
US8595471B2 (en) 2010-01-22 2013-11-26 Via Technologies, Inc. Executing repeat load string instruction with guaranteed prefetch microcode to prefetch into cache for loading up to the last value in architectural register
JP2011212043A (ja) 2010-03-31 2011-10-27 Fujifilm Corp 医用画像再生装置および方法並びにプログラム
US20110314263A1 (en) 2010-06-22 2011-12-22 International Business Machines Corporation Instructions for performing an operation on two operands and subsequently storing an original value of operand
US8972698B2 (en) 2010-12-22 2015-03-03 Intel Corporation Vector conflict instructions
US9009447B2 (en) 2011-07-18 2015-04-14 Oracle International Corporation Acceleration of string comparisons using vector instructions
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
US9454366B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Copying character data having a termination character from one memory location to another
US9459864B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
US9588762B2 (en) 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9459867B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9268566B2 (en) 2012-03-15 2016-02-23 International Business Machines Corporation Character data match determination by loading registers at most up to memory block boundary and comparing
US9454367B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Finding the length of a set of character data having a termination character
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9280347B2 (en) 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6802056B1 (en) * 1999-06-30 2004-10-05 Microsoft Corporation Translation and transformation of heterogeneous programs
CN1494677A (zh) * 2000-10-18 2004-05-05 �ʼҷ����ֵ������޹�˾ 数字信号处理装置
US7793081B2 (en) * 2006-06-02 2010-09-07 International Business Machines Corporation Implementing instruction set architectures with non-contiguous register file specifiers

Also Published As

Publication number Publication date
EP2769301A1 (en) 2014-08-27
RU2568241C2 (ru) 2015-11-10
RU2012148583A (ru) 2014-05-20
WO2013136144A1 (en) 2013-09-19
IL232817A0 (en) 2014-07-31
US20130246768A1 (en) 2013-09-19
LT2769301T (lt) 2020-05-25
US9454374B2 (en) 2016-09-27
MX340050B (es) 2016-06-22
EP2769301A4 (en) 2014-11-19
KR101643065B1 (ko) 2016-07-26
TWI533207B (zh) 2016-05-11
ZA201406612B (en) 2016-05-25
US9280347B2 (en) 2016-03-08
CN104169877A (zh) 2014-11-26
MX2014010948A (es) 2014-10-13
CA2867115A1 (en) 2013-09-19
AU2012373735A1 (en) 2014-09-11
JP6108362B2 (ja) 2017-04-05
PL2769301T3 (pl) 2020-06-01
BR112014022638B1 (pt) 2022-01-04
BR112014022638A8 (pt) 2021-12-14
AU2012373735B2 (en) 2016-06-02
HRP20200393T1 (hr) 2020-06-12
KR20140104974A (ko) 2014-08-29
IL232817A (en) 2017-07-31
HUE048409T2 (hu) 2020-07-28
ES2779033T3 (es) 2020-08-13
SG11201404825SA (en) 2014-09-26
BR112014022638A2 (zh) 2017-06-20
EP2769301B1 (en) 2020-02-19
JP2015514242A (ja) 2015-05-18
HK1201354A1 (zh) 2015-08-28
CA2867115C (en) 2020-12-08
US20130246766A1 (en) 2013-09-19
SI2769301T1 (sl) 2020-06-30
DK2769301T3 (da) 2020-03-16
TW201403468A (zh) 2014-01-16
PT2769301T (pt) 2020-03-26

Similar Documents

Publication Publication Date Title
CN104169877B (zh) 将不相邻指令区分符变换为相邻指令区分符
CN104185872B (zh) 用于在中央处理单元中执行机器指令的方法和系统
CN104205067B (zh) 将数据载入直到由指令所指示的指定存储器边界的指令
CN104169870B (zh) 用于复制数据集的方法和计算机系统
CN104185839B (zh) 将数据载入寄存器的方法和系统
CN104169869B (zh) 比较具有终止字符的字符数据集
CN104169868B (zh) 用于在中央处理单元中执行机器指令的方法和系统
CN104169907B (zh) 向量寻找元素相等指令
CN104170259B (zh) 用于判定一组数据的长度的方法和系统
CN104169906B (zh) 用于在中央处理单元中执行机器指令的方法和系统
CN104937542B (zh) 向量校验和指令
CN104252586B (zh) 促进在处理环境中的处理的方法和计算机系统
CN104252336B (zh) 基于解码时间指令优化来形成指令组的方法和系统
CN104956323B (zh) 向量伽罗瓦域乘法求和与累加指令
CN104956364B (zh) 用于促进异常处理的方法和系统
CN102906701B (zh) 在计算环境中控制对适配器的访问的方法和系统
CN103582869B (zh) 链接移动规格块
CN104937538B (zh) 向量生成掩码指令
CN104956319B (zh) 向量浮点测试数据类立即指令
CN104937543B (zh) 向量元素旋转和掩码下插入指令
CN104252335B (zh) 用于选择的返回指令的预测获取和解码方法和系统
CN102906694B (zh) 用于与适配器进行通信的加载指令的方法和系统
CN103562874B (zh) 解除配置存储级内存命令
CN102906700B (zh) 用于阻止虚拟处理器的多功能指令的指令功能的功能虚拟化工具
CN109564552A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1201354

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1201354

Country of ref document: HK