CN108139908A - 移动前缀指令 - Google Patents

移动前缀指令 Download PDF

Info

Publication number
CN108139908A
CN108139908A CN201680058692.2A CN201680058692A CN108139908A CN 108139908 A CN108139908 A CN 108139908A CN 201680058692 A CN201680058692 A CN 201680058692A CN 108139908 A CN108139908 A CN 108139908A
Authority
CN
China
Prior art keywords
instruction
mobile
register
value
prefix
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
Application number
CN201680058692.2A
Other languages
English (en)
Other versions
CN108139908B (zh
Inventor
理查德·罗伊·格里森思怀特
奈杰尔·约翰·斯蒂芬斯
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.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
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 Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN108139908A publication Critical patent/CN108139908A/zh
Application granted granted Critical
Publication of CN108139908B publication Critical patent/CN108139908B/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

设备2具有指令融合电路50,指令融合电路50用于融合自数据储存处提取的两个或两个以上指令,以生成经融合指令以由处理电路14处理。本发明提供一种移动前缀指令,该移动前缀指令向指令融合电路50指示该移动前缀指令可与紧接着的数据处理指令融合,而不需要比较该移动前缀指令及该紧接着的指令指定的寄存器。这使指令融合电路50能够以减少的硬件及能量成本来实施。

Description

移动前缀指令
技术领域
本技术涉及数据处理的领域。
背景技术
有时处理电路可在硬件中支持操作,该操作在设计该处理电路来执行的指令集架构的经编码的指令中并不具有直接等效物。举例而言,指令集架构中受限的可用编码空间可能意谓给定操作可能需要在正被执行的程序中定义两个或两个以上单独的指令,但处理设备可具有指令融合电路,该指令融合电路可检测存在等效于该处理电路所支持的单一经融合指令的两个或两个以上指令的群组,且若如此,则向该处理电路提供该经融合指令以供执行。然而,就电路面积及功耗而言,检测何时存在可经融合的指令集的该指令融合电路可能相对昂贵。对于能量效率可能比效能更重要的许多低端系统而言,指令融合的管理负担可能过高,因此指令融合的益处通常不可用于这样的系统。
发明内容
至少一些实例提供一种设备,该设备包括:处理电路,该处理电路响应于指令而执行数据处理;以及指令融合电路,该指令融合电路融合自数据储存处提取的移动前缀指令及紧接着的指令,以生成经融合数据处理指令以由处理电路处理;其中该移动前缀指令识别移动目的地寄存器及移动源寄存器,该移动源寄存器指定将被至少部分地复制至该移动目的地寄存器的数据值;以及响应于检测到该移动前缀指令,该指令融合电路被配置为决定是否融合该移动前缀指令及该紧接着的指令,而不管是否移动前缀指令的移动目的地寄存器为与该紧接着的指令指定的任何寄存器相同的寄存器。
至少一些实例提供一种数据处理方法,该数据处理方法包括以下步骤:在自数据储存处提取的供处理电路处理的指令之中检测移动前缀指令,该移动前缀指令识别移动目的地寄存器及移动源寄存器,该移动源寄存器指定将被至少部分地复制至该移动目的地寄存器的数据值;以及决定是否融合该移动前缀指令与紧接着的指令,以生成经融合数据处理指令以由该处理电路处理;其中当检测到移动前缀指令时,该决定步骤决定是否融合该移动前缀指令及该紧接着的指令,而不管是否移动前缀指令的移动目的地寄存器为与该紧接着的指令指定的任何寄存器相同的寄存器。
至少一些实例提供一种设备,该设备包括:用于响应于指令而执行数据处理的构件;以及用于融合自数据储存处提取的移动前缀指令及紧接着的指令,以生成经融合数据处理指令以由处理电路处理的构件;其中该移动前缀指令识别移动目的地寄存器及移动源寄存器,该移动源寄存器指定将被至少部分地复制至该移动目的地寄存器的数据值;以及响应于检测到该移动前缀指令,用于融合的构件被配置为决定是否融合该移动前缀指令及该紧接着的指令,而不管是否移动前缀指令的移动目的地寄存器为与该紧接着的指令指定的任何寄存器相同的寄存器。
至少一些实例也可提供一种储存于计算机可读取储存介质上的计算机程序,该计算机程序在由数据处理设备执行时提供虚拟机,该虚拟机提供对应于上文描述的设备的指令执行环境。该储存介质可为非暂态储存介质。
附图说明
本技术的进一步态样、特征结构及优点将由结合附图读到的实例的以下描述显而易见,其中:
图1示意性地示出具有指令融合电路的数据处理设备的实例;
图2示出将移动前缀指令用于向指令融合电路发送讯号通知该移动前缀指令可与紧接着的指令融合;
图3示出非前缀移动指令的使用;
图4示出决定是否融合指令的方法;
图5图示三种不同类型的移动前缀指令以及这样的移动前缀指令与紧接着的指令的结合使用;
图6和图7图示处置异常或其它停止事件的两种不同方式;以及
图8图示虚拟机实施。
具体实施方式
下文将阐述本技术的特定实例。应了解,本技术不限于这些实例。
提供移动前缀指令,该移动前缀指令可置放在紧接着的指令之前,以向指令融合电路发送讯号通知融合移动前缀指令及紧接着的指令是安全的,而不必检查移动前缀指令的目的地与该紧接着的指令指定的任何寄存器是否相同。此举避免指令融合电路需要具有用于比较各别指令的寄存器的比较器,从而使指令融合在硬件中实施更便宜,因此使得指令融合可用于较低端系统,对于这样的较低端系统,指令融合的硬件及能量消耗先前可能过于昂贵。
数据处理指令可定义为构造性指令或者破坏性指令两者中的任一个。构造性指令具有编码,该编码具有用于单独的寄存器说明符分别识别数据处理指令的目的地寄存器及源寄存器的空间。另一方面,对于破坏性的指令而言,编码可具有单一寄存器说明符,该单一寄存器说明符识别目的地寄存器及一个源寄存器两者。构造性指令的实例可为加法指令ADD Rd、Rs1、Rs2,该加法指令可触发处理电路执行运算Rd=Rs1+Rs2。破坏性运算的实例可为加法指令ADD Rd、Rs1,该加法指令触发处理电路执行加法运算Rd=Rd+Rs1。
指令的构造性形式可以是有用的,因为该构造性形式维持所有输入操作数先前的值,因此若多个指令需要相同输入,则该多个指令可继续引用与先前的构造性指令相同的源寄存器。举例而言,在上文论述的构造性加法运算中,若另一指令再次需要寄存器Rs1,则使用构造性形式允许此值被保留,而在执行加法之前不需要任何进一步指令来操纵寄存器。
然而,在一些指令集架构中,编码空间非常珍贵,且除来源操作数中的每个来源操作数的寄存器说明符的外,可能并不存在足够空间来容纳目的地寄存器的单独的寄存器说明符。因此,一些指令集架构并不为一些指令提供构造性编码,因此破坏性的编码可能是可用于程序员或编译程序的唯编码。由于通过将破坏性指令的结果写入至源寄存器中的一个源寄存器,较少的寄存器说明符需要在指令中编码,故破坏性的编码节省编码空间。然而,若数据流分析指示所有这样的指令输入在指令完成之后仍然是有用的(被再次读取),则程序员或编译程序普遍想要使用指令的构造性形式。若用于执行所要操作的构造性指令在指令集架构中不是可用的,则程序员或编译程序可通过在破坏性指令之前在某处插入寄存器移动或复制指令来解决此问题。
举例而言,以下矢量运算可能不具有架构中可用的构造性指令:
(1)rd=pg?rs1+rs2:0;//对应于ADD Zd.S,Pg/Z,Zs1.S,Zs2.S.
其中rd为目的地寄存器,rs1及rs2为源寄存器,且pg为识别矢量寄存器的何者元素是有效或无效元素的述词值,有效元素设定为源寄存器中对应元素的和rs1+rs2,且无效元素rd设定为0。
若上文所示构造性加法指令是不可用的,则程序员或编译程序可替代使用单独的移动及破坏性加法指令:
(2)rd=pg?rs1:0;//对应于MOV Zd.S,Pg/Z,Zs1.S
rd=pg?rd'+rs2:rd;//对应于ADD Zd.S,Pg/M,Zs2.S
(在上文所示矢量指令语法中,述词之后缀/Z或/M指示是否使用归零或合并预测。针对归零预测,结果的无效元素设定为零,而针对合并预测,无效元素保持先前储存在目的地寄存器Zd.S的对应元素中的相同值。)
因此,使用实例(2)的两个指令,可保留寄存器Zs1.S(rs1)的内容,以便这样的内容可被后续指令读取。然而,需要译码及处理额外指令可降低效能。
实际上,即使在指令集架构内并未提供构造性指令,处理电路的硬件仍可支持构造性数据处理操作。举例而言,给定指令集架构可将破坏性编码仅用于在编码空间上存在最大压力的指令,而需要较少不同值的其它类型的指令在针对单独的目的地寄存器说明符具有足够空间的指令中编码。因此,即使在指令集架构中存在一些破坏性指令,也存在一些构造性指令的事实可意谓处理电路本身的硬件仍具有用于接收单独的源寄存器说明符及目的地寄存器说明符的输入,因此在修改相对较少的情形下,破坏性指令也可变换成构造性运算,以发布给处理电路。
因此,一些实施可提供指令融合电路以辨识何时存在如上的移动指令及后续数据处理指令的序列,这样的移动指令及后续数据处理指令实际上意欲实施对应的构造性数据处理操作,且当辨识该序列时,指令融合电路可融合这样的移动指令及后续数据处理指令,以生成单一经融合数据处理指令,来触发处理电路执行构造性运算。举例而言,可将上文实例(1)中所示的构造性矢量加法指令发布给处理电路,而非发布来自实例(2)的单独的矢量MOV及加法指令。
然而,存在大量问题使得该指令融合较为困难。首先,若该对移动指令及后续数据处理指令跨越页面边界或快去列或指令提取边界,则指令融合电路可能不会在与移动指令相同批次的指令中遇到后续数据处理指令,此使得在不将某种额外内部状态维持在看见移动指令与看见后续数据处理指令之间的情形下,识别指令的组合较为困难。维持该额外内部状态将增加指令融合电路的硬件管理负担。
同时,为了能够融合移动指令及后续数据处理指令,指令融合电路可能需要检查该移动指令及该数据处理指令的操作数是兼容的,以便该移动指令及该数据处理指令可融合。举例而言,指令融合电路可能需要检查:移动指令的目的地寄存器与后续数据处理指令的目的地寄存器是相同的、不存在重写寄存器的中间指令,以及是否这样的指令为指定识别矢量操作数的何者数据元素是有效元素的述词寄存器的矢量指令,该两个指令指定的述词寄存器也是相同的。这些检查将确保移动指令及后续数据处理指令实际上意欲实施等效构造性运算,且不是独立运算。执行所有这些检查将极大地增加指令融合电路的复杂性,且对于相对低端实施而言,此情况可能并不合理。
融合存在的另一问题在于,经融合指令可触发异常状况,诸如当浮点指令遇到诸如溢出或下溢或零除的浮点异常时。处理这样的异常对于经融合指令而言可能较为复杂。
出于所有这些原因,通常指令融合仅对于相对高端实施中的移动指令及数据处理指令是可行的,对于相对高端实施而言,效能是比能量效率更重要的要求。也需要使融合的益处可用于较低端实施。
为解决这些问题,提供专用移动前缀指令,程序员或编译程序可使用该专用移动前缀指令给紧接着的指令加前缀,以发送讯号通知可融合该移动前缀指令及该紧接着的指令。移动前缀指令识别移动目的地寄存器及移动源寄存器,该移动源寄存器指定将被至少部分地复制至该移动目的地寄存器的数据值。当检测到移动前缀指令时,指令融合电路可决定是否融合该移动前缀指令及该紧接着的指令,而不管是否移动前缀指令的移动目的地寄存器为与该紧接着的指令指定的任何寄存器相同的寄存器。
因此,指令融合电路并不需要比较移动前缀指令及紧接着的指令中的寄存器,因为提供了移动前缀指令的事实是紧接着的指令预期为破坏性数据处理指令的讯号,该破坏性数据处理指令的目的地寄存器及第一源寄存器与移动前缀指令的移动目的地寄存器相同。概言的,通过在该对移动指令及破坏性指令意欲实施构造性运算融合时,赋予程序员或编译程序选择移动前缀指令的责任,此举避免在处理电路中需要较复杂的硬件用于检测融合何时可行的情形,从而节省了功耗及电路面积。
图1示意性地示出数据处理设备2的实例,数据处理设备2包括处理管线4,处理管线4包括一定数量个管线级。在此实例中,管线级包括用于自数据储存处(例如,指令快取或内存)提取指令的提取级6、用于译码这样的经提取指令的译码级、用于执行寄存器更名的更名级10、用于发布供执行指令的发布级12及用于执行这样的经发布指令的执行级14。执行级14包括一定数量个用于执行不同种类指令的执行单元,例如,用于执行标量数据处理指令的标量ALU(算术逻辑单元)20、用于执行矢量数据处理指令的矢量ALU 22、用于执行浮点指令的浮点单元24(在一些情形下可提供单独的标量浮点单元及矢量浮点单元)及用于执行加载/储存指令以在寄存器30与诸如数据快取或内存的数据储存处之间转移数据的加载/储存单元26。可提供变换旁看缓冲区(A translation look aside buffer;TLB)32,以快取用于将加载/储存指令指定的虚拟地址变换成实体地址的地址变换数据,这样的实体地址识别数据快取或内存内的位置。
寄存器30包括用于储存各自包括单一数据元素的标量操作数的标量寄存器34、用于储存各自包括多个数据元素的矢量操作数的矢量寄存器36及用于储存识别矢量寄存器36的何者元素是有效或无效的述词值的述词寄存器38。响应于矢量ALU 22处理的矢量指令,可自矢量寄存器36读取一个或多个矢量操作数,且储存在述词寄存器38中的一个述词寄存器38的述词值可控制矢量ALU 22以对述词值所指示的任何有效数据元素30执行给定数据处理操作,来生成对应结果数据元素,以被回写至矢量寄存器中的一个矢量寄存器,而对应于述词所指示的无效线道的任何元素可取某个其它值。可定义不同的无效线道处置模式,用于决定如何设定无效线道在目的地寄存器中的值。举例而言,无效的结果数据元素可清除为预定值(例如零)或可保持目的地寄存器的对应元素的先前值。另一方面,针对标量指令,标量ALU 20或浮点单元24可自标量寄存器34读取数据值、处理这样的数据值且将结果值回写至标量寄存器34中的一个标量寄存器34。
在图1的实例中,管线4为乱序管线,该乱序管线支持以与提取级6提取指令的程序次序不同的次序执行指令。发布级12具有用于使指令在等待这样的指令的操作数变得可用时将待执行的指令排入队列的发布队列40。当指令的操作数变得可用时,即使处于程序次序的较早指令仍在等待该较早指令的操作数,随后也可发布该指令以供执行级40执行。为增加重排指令可能的程度,提供更名级10以将经提取指令指定的架构寄存器说明符映像至识别硬件中所提供的实体寄存器30的实体寄存器说明符。通常,所提供的实体寄存器的数目大于指令集架构中可用的架构寄存器的数目,以允许不同指令指定相同架构寄存器被映像至不同实体寄存器,以便可消除这些指令之间的相依性。此举容许较大的灵活性来重排指令的执行,以改良效能。更名级10维持用于追踪架构寄存器说明符与实体寄存器说明符之间的映像的更名表42。
应了解,其它实例可提供顺序管线,该顺序管线的程序指令以这样的程序指令原有的程序次序来执行。在此情形下,可省去更名级10,且发布级12可在给定指令的操作数可用且已发布按程序次序的任何较早指令时发布该给定指令。
应了解,此实例仅仅是可能的管线架构的一个实例,且其它实例可具有不同级或执行级14中执行单元的不同组合。举例而言,一些管线可在译码级8与发布级12之间具有额外调度级,以便当发布队列40满了时,经译码指令可在调度级中等待,以避免阻挡其它指令在译码级8处的译码。
提取电路6自数据储存处提取的指令可称为「宏指令」,而传递至执行级14以供执行的经译码指令可称为「微指令」或「微操作」。针对一些类型的指令,可能在自快取或内存提取的宏指令与执行级14所执行的微操作之间存在一对一映射。然而,针对其它类型的指令,复杂指令可由译码级8译码成多个微操作,可随后分别发布该多个微操作以供执行级14执行。举例而言,加载多指令可译码成各自用于将数据自内存加载至不同寄存器中的一定数量个个别载入微操作。
同时,两个或两个以上宏指令可经融合以生成待执行的单一微指令。在此实例中,译码级8具有指令融合电路50,该指令融合电路50用于融合提取级自指令快取或内存提取的指令串流内检测到的两个或两个以上指令的各个群组,且当检测到该群组时,融合这些指令的群组,以生成单一经融合数据处理指令,从而给出可随后转发至后续级以供处理的等效结果。由于单一指令可通常比两个或两个以上单独的指令执行得更快,故此举实现经改良效能。尽管图1示出包括指令融合电路50的译码级8,但在其它实例中,指令融合可在诸如调度级或发布级12(例如,译码级8可最初将指令的群组译码成单独的经译码指令,但发布级处的融合电路可随后将这些指令融合成单一微操作)的另一级发生。因此,在译码时发生指令融合并非是必要的。
指令融合电路50可检测指令的可融合群组,指令的该可融合群组可映射至对应的经融合指令(经融合微操作),以发送至处理电路14。可能存在可各自映射至对应的经融合指令的若干不同的可融合群组。然而,后续实例将集中在包括移动前缀指令及紧接着的指令的特定群组。此情形并不排除也能够融合其它类型指令的指令融合电路50。
图2示出指令融合电路50执行的指令融合的实例。图2的顶部部分示出程序员或编译程序实际上希望使用的构造性加法指令,但该构造性加法指令在设备2支持的指令集架构中是不可用的。构造性加法指令指定目的地寄存器Zd、述词寄存器Pg及两个源寄存器Zs1、Zs2。构造性加法指令将意欲控制设备自矢量寄存器Zs1、Zs2读取矢量,且对该两个矢量的对应数据元素的每个各别对执行一系列加法运算,以生成对应的结果数据元素来写入至目的地寄存器Zd。由述词寄存器Pg识别为无效的任何元素将使结果的对应数据元素设定成与该加法无关的某个其它值,而有效线道取源矢量的对应数据元素的加法结果。
然而,因为构造性加法指令是不可用的,所以程序员或编译程序事实上提供图2之中间部分中所示的移动前缀指令及破坏性加法指令。移动前缀指令指定目的地寄存器Zd及源寄存器Zs1,且移动前缀指令意欲触发处理设备将移动目的地寄存器Zd设定成等于移动源寄存器Zs1。视需要,移动前缀指令也可指定述词寄存器Pg控制目的地寄存器Zd的何者数据元素是有效元素,以用来自源寄存器Zs1的对应元素填充。然而,也可提供非述词的移动前缀指令,在此情形下,可将整个来源值自寄存器Zs1复制至目的地寄存器Zd。后续破坏性加法指令指定与移动前缀指令相同的目的地寄存器Zd及相同的述词Pg(若在移动前缀指令中提供述词),且也指定第二源寄存器Zs2。加法指令意欲控制处理硬件对寄存器Zd及Zs2中的各别元素对做加法,且将每个结果写入至目的地寄存器Zd的对应元素,从而重写目的地寄存器的彼等元素中的先前值。此外,述词寄存器控制何者线道是有效及无效的,且任何无效线道设定成与加法无关(例如,这样的无效线道可设定成零或设定成目的地寄存器的先前值)。
指令融合电路50检测包括移动前缀指令及破坏性加法指令的指令对,且决定是否融合该移动前缀指令及该破坏性加法指令。如图2的下部部分中所示,指令融合电路50决定不融合这些指令,随后将未经融合的移动指令及加法指令发布至管线之后续级以供分别执行。另一方面,若融合这样的指令,则按程序员或编译程序的初衷用经融合构造性加法指令替换这样的指令。
决定是否融合移动前缀指令与接着的指令可取决于各种因素,这样的因素可包括何者特定数据处理操作是由该接着的指令指定的。因此,是否融合指令可能针对移动前缀指令的不同情况动态地变化。在图2的实例中,紧接着移动前缀指令的指令为加法指令,但类似地,移动前缀指令可给诸如算术指令的其它形式(减、乘、除、平方根、乘加等)或逻辑指令(诸如,及、或、异或、非与等)的其它类型的数据处理指令加前缀。因此,可能存在整个类别的不同种类的数据处理指令,可用移动前缀指令给这样的数据处理指令加前缀。当移动前缀指令与数据处理指令的类别中的任何类别融合时,指令融合电路50可根据紧接着的指令的作业码决定要生成对应经融合数据处理指令的类别中的何类别。
在一些实施例中,融合电路50可仅针对彼类别内的某些类型的数据处理指令而非彼类别内的所有类型,来融合移动前缀指令与紧接着的指令。举例而言,如上文所提及,在浮点指令的情形下,可能存在浮点异常增加的风险,诸如当浮点运算设法将值零除时,或当浮点结果溢出、下溢或不精确时。为避免在执行经融合指令时处理异常状况的复杂性,在要执行的操作为例如浮点运算时,实施可避免融合移动前缀指令与紧接着的指令。
同时,若移动前缀指令及接着的指令保持在不同快去列中或在地址空间的不同页面中具有指令地址,则指令融合电路50可选择不融合移动前缀指令及接着的指令,因为例如,该移动前缀指令可能为译码级8遇到的一个区块的指令中的最后指令,且该接着的指令将是下一个区块的第一指令,因此可能不会同时遇到这些两个指令。为避免状态维持在看见该两个指令之间,在遇到一个区块的最后指令中的移动前缀之后,指令融合电路50可简单地决定不融合该移动前缀指令与下一个指令。
然而,是否融合的决策与若干因素无关,这样的因素包括紧接着的指令是构造性指令还是破坏性指令、是否移动前缀指令的目的地寄存器与紧接着的指令的目的地寄存器相同、是否移动前缀指令的述词寄存器与紧接着的指令的述词寄存器相同,以及是否紧接着的指令的源寄存器中的一个源寄存器与移动前缀指令的目的地寄存器相同。指令融合电路50并不需要检查这些条件中的任何条件,是因为程序员或编译程序已选定使用专用移动前缀编码(而非能够在寄存器之间移动数据值的某其它种类的指令)来选择移动前缀指令的事实指示移动前缀指令与紧接着的数据处理指令合并是安全的。通过消除检查所有这些条件的需要,指令融合电路50就硬件而言可更高效,因此此举使得指令融合可用于较简单的管线实施,从而允许相对低端系统的效能增加。
在一些实施例中,指令融合电路50甚至可不检查是否紧接着的指令实际上是数据处理指令。尽管程序员或编译程序应将移动前缀指令与受限制的破坏性数据处理指令集配对以给出可预测结果,但指令融合电路50并不需要检查是否紧接着的指令实际上是彼破坏性数据处理指令集中的一个破坏性数据处理指令,且若程序员或编译程序紧接在加载指令、储存指令或分支指令之前置放移动前缀指令,则指令融合电路50仍可融合这样的指令以生成经融合数据处理指令,且结果将是无法预测的。通过避免需要检查是否接着的指令是意欲融合的所允许破坏性数据处理指令集中的一个破坏性数据处理指令,可降低指令融合电路50的管理负担。或者,其它实施可检查紧接着的指令的类型,以决定该紧接着的指令并非是加载指令、储存指令、分支指令或不应经融合的其它类型的指令。
与图2相反,图3示出指令序列,该指令序列包括以与图2中所示移动前缀指令不同的方式编码的标准移动指令。程序员或编译程序可在后续数据处理操作欲与前述移动无关时选择标准移动指令,因此该对指令并不意欲复制构造性运算。针对标准移动指令,指令融合电路50可不将移动指令辨识为融合的候选者,且指令融合电路50可简单地转发该移动指令,以由与后续数据处理指令分离的管线之后续级处理。
图3中所示的标准移动指令的指令编码可以任何方式与图2的移动前缀指令的指令编码区分。有可能为移动指令提供字段,该字段指定该移动指令是标准移动指令还是移动前缀指令。然而,实际上移动前缀指令可具有与该标准(非前缀)移动指令完全不同的作业码。将数据值自一个寄存器移动至另一寄存器可实际上使用其它种类的指令来实施,诸如,对两个相同的操作数执行逻辑或且将结果置放于寄存器中的或指令、对两个相同的操作数执行逻辑与运算且将结果置放于寄存器中的与指令、向操作数添加零以进行移动的加法指令,或给出与指令的来源操作数中的一个来源操作数相同的结果的任何其它指令。因此,当实际上可使用已提供的另一指令来实施移动时,对于专用移动指令,通常不值得浪费指令集架构中的编码空间。因此,在实践中,图3中所示的习知移动指令可实际上是给出与指令的输入操作数中的一个输入操作数相同的结果的另一指令,且此情形可具有与图2中所示移动前缀指令不同的作业码。
在一些情形下,当执行未经融合的移动前缀指令时,可向执行级14发布指令,且执行级14可实际上将来源值写入至目的地寄存器。然而,若移动前缀指令为标量指令、非述词矢量指令或其述词将所有元素识别为有效的述词矢量指令,则也可在更名级10处简单地通过更新更名表42来执行该移动,以便目的地寄存器的架构寄存器说明符现映像至先前已映像至源寄存器的架构寄存器说明符的实体寄存器。因此,一些类型的寄存器移动可能不需要在发布级中或执行级14处的任何动作中分配时槽,且该寄存器移动可简单地经由寄存器更名来实施。
图4示出控制指令融合的方法。在步骤60处,指令融合电路50检测经提取指令是否包括移动前缀指令,该移动前缀指令指定移动目的地寄存器R1、移动源寄存器R2及视需要的述词寄存器P1。若不包括,则以某种其它方式处理这样的经提取指令。当检测到移动前缀指令时,随后在步骤62处,指令融合电路50决定是否融合移动前缀指令与紧接着的指令,而不管是否移动前缀指令的目的地寄存器R1与紧接着的指令指定的寄存器中的任何寄存器相同。在一些实施例中,可固定融合的决策,以便在检测到移动前缀指令时,随后该移动前缀指令始终与紧接着的指令融合,而在其它情形下,融合的决策可取决于诸如将由指令触发的特定类型的数据处理操作的其它因素(例如,运算为浮点运算还是整数运算,或运算为除还是加等)。该决策也可取决于移动前缀指令及紧接着的指令是否处于在给定时间正经处置的指令的相同区块内,且移动前缀指令及紧接着的指令未例如通过页面边界或快去列边界分离。若使用正确,则紧接着的指令应为数据处理操作的类别中的一个数据处理操作,数据处理操作的目的地寄存器R3与移动目的地寄存器R1相同,源寄存器中的一个源寄存器为目的地寄存器R3本身,且数据处理操作的述词寄存器P2(若指定)与移动前缀指令的述词寄存器P1相同。紧接着的指令也可指定至少一个进一步源寄存器(例如,寄存器R4)。
在步骤64处,决定是否融合移动前缀指令及紧接着的指令。若随后在步骤66处融合这样的指令,则生成具有构造性形式的经融合指令,用于传递至后续级以供执行。经融合指令指定等于移动前缀指令指定的移动目的地R1或紧接着的指令指定的目的地寄存器R3两者中的任一个的结果寄存器Rd,经融合指令指定与移动前缀指令及紧接着的指令指定的述词寄存器P1、P2中的任一个相同的述词寄存器Pg,且经融合指令指定等于移动前缀指令的移动源寄存器R2及紧接着的指令的进一步源寄存器R4的至少两个操作数寄存器Rs1、Rs2。一些类型的指令(例如,乘-加)可具有多于两个的来源操作数,在此情形下,经融合指令的多于一个的来源操作数可与原始破坏性指令的对应源寄存器相同。另一方面,若在步骤64处,决定不融合这样的指令,则在步骤68处,分别通过管线的剩余级来处理单独的移动指令及处理指令。
图4中所示经融合指令预期生成与步骤60及步骤62中所示的两个单独的移动指令及数据处理指令的组合相同的结果,条件为:
·紧接着的指令为数据处理指令(而非某其它种类的指令,诸如加载指令、储存指令或分支指令);
·移动前缀指令及紧接着的指令指定相同目的地寄存器(R1=R3);
·紧接着的指令并不将移动前缀目的地寄存器(R1)用作进一步来源操作数;
·移动前缀指令及紧接着的指令指定相同述词寄存器(P1=P2);以及
·紧接着的指令为破坏性指令,该破坏性指令指定与该破坏性指令的源寄存器及该破坏性指令的目的地寄存器两者皆相同的寄存器。
有可能程序员或编译程序可能误用移动前缀指令且将该移动前缀指令置放于紧接在指令之前,针对该指令,以下各项中的任一个适用:
·接着的指令并非将目的地寄存器用作来源操作数的破坏性数据处理指令;
·接着的指令并未指定与移动前缀指令相同的目的地寄存器;
·接着的指令将移动前缀目的地寄存器用作进一步来源操作数;或
·接着的指令并未指定与移动前缀指令相同的述词寄存器(若移动前缀指令为述词指令)。
因为指令融合电路50未针对这些条件检查,所以指令融合电路15可融合移动前缀指令及紧接着的指令以生成经融合指令,该经融合指令可给出与原本在独立执行移动前缀指令及紧接着的指令时所生成的结果不同的结果。因此,若程序员或编译程序未正确地使用移动前缀指令,则经融合指令的行为可能是无法预测的。经融合指令的结果(或使用经融合指令的结果的后续指令的结果)可取决于给定硬件实施实施该融合的特定方式。举例而言,经融合指令可对与移动前缀指令及紧接着的指令的组合实际上意欲成对不同的源寄存器对进行操作,或经融合指令可组合从未意欲链接的两个操作。因此,若程序员或编译程序误用移动前缀指令,则此举可引起错误及不正确的处理结果。为确保正确使用,程序员或编译程序应将移动前缀指令置放于紧接在破坏性数据处理指令之前,该移动前缀指令以程序次序应用于该破坏性数据处理指令而无中间指令,且程序员或编译程序应确保移动前缀指令及紧接着的指令指定相同目的地寄存器且(若移动前缀指令为有述词的)指定相同述词寄存器,以及确保紧接着的指令为破坏性指令。移动前缀指令实际上是下一个指令将是待融合的适合的破坏性指令的“承诺”,且若程序员或编译程序违背此承诺,则该程序员或该编译程序无法预期结果是正确的。
使用移动前缀指令编写的程序代码仍可由并不具有用于融合指令的指令融合电路50的数据处理设备执行。在这样的实施中,移动前缀指令可简单地视为标准移动指令,且移动前缀指令可经执行以将数据值自移动源寄存器Zs1移动至目的地寄存器Zd。因此,在指令集架构中提供移动前缀指令并不需要支持彼架构的所有硬件必须具有指令融合电路50,但提供移动前缀指令使确实提供了指令融合电路50的硬件实施以较低成本实施指令融合,从而增加了更多硬件实施将选择提供融合的可能性。
如图5中所示,针对移动前缀指令对包括多个数据元素的矢量操作数进行操作的矢量实施,可对应于处置无效处理线道的不同方式提供不同形式的移动前缀指令。在图5的此实例中,提供三种形式的指令:并不指定述词寄存器,也即,矢量的所有元素视为有效的非述词移动前缀指令;及两个述词形式的指令,也即,合并移动前缀指令,针对该合并移动前缀指令,由述词值识别的无效线道设定成储存在目的地寄存器的对应元素中的先前值;以及清除移动前缀指令,针对该清除移动前缀指令,目的地寄存器的无效线道设定成固定值(诸如,0)。
图5的顶部部分图示执行每一种形式的移动前缀指令的结果作为独立指令(不与后续数据处理指令融合)。针对非述词移动,执行未经融合的移动指令导致来自源寄存器Zs1的整个矢量被复制至目的地寄存器Zd。如上文所提及,实际上此目的可简单地通过更新更名表42来达成,以便寄存器Zd的架构说明符现映像至先前已映像至源寄存器Zs1的实体寄存器。
针对合并移动前缀指令,目的地寄存器的有效线道(在此实例中,针对线道0、1及2,述词值为1)设定成等于来自源寄存器Zs1的对应元素V0、V1、V2,而无效线道(例如,线道3的述词位为0)保持目的地寄存器Zd的先前值D3。应注意,由于寄存器更名,故有可能尽管元素D3在原始目的地寄存器与经更新目的地寄存器之间保持不变,但目的地寄存器Zd的结果值可实际上写入至与先前映像至目的地寄存器Zd的实体寄存器不同的实体寄存器,因此元素D3仍可能需要复制至靠近有效元素V0、V1、V2的值的目的地寄存器。
另一方面,针对清除移动前缀指令,目的地寄存器Zd的任何无效元素设定成零,而有效元素取源寄存器Zs1的对应元素V0-V2的值。
如图5的下部部分中所示,当不同类型的前缀指令后面接着使用合并预测的数据处理指令时,则结果为数据处理指令的述词Pg所指示的有效线道对应于移动源寄存器Zs1及数据处理指令的第二源寄存器Zs2内的对应元素的和Vn+Sn。另一方面,无效线道取决于已与数据处理指令组合的移动前缀指令的类型而取不同值。在非述词移动前缀指令情形下,无效线道取来自移动源寄存器Zs1的对应元素的值V3。针对合并移动前缀指令,接着的数据处理指令的结果使该结果的无效线道填充有来自原始目的地寄存器Zd的元素D3,且针对清除移动前缀指令,最终结果中的无效线道将设定成零。即使三个实例恰好使用接着的指令的相同编码,也仍为这种情形。
因此,不必针对不同无效线道处置模式提供不同形式的数据处理指令。举例而言,不必为加法指令提供容许清除预测的编码,因为可选择前述移动前缀指令具有不同形式,以选择是否使用合并预测或清除预测。此举节省了数据处理指令中的编码空间。由于数据处理指令比移动前缀指令通常可具有更多在指令编码中表示的值,故将无效线道处置模式的编码转换成移动前缀指令生成数据处理指令的更有效率的编码,此举留下更多空间可用于数据处理指令中以编码其它信息。
因此,破坏性数据处理指令(该破坏性数据处理指令指定与源寄存器及目的地寄存器两者皆相同的寄存器)可默认假定为使用合并无效线道处置模式,其中无效线道保持目的地寄存器的对应值。若希望不同的无效线道处置模式用于数据处理指令(例如,归零预测),则数据处理指令的行为可通过用不同类型的移动前缀指令给该指令加前缀来修改。
尽管图5示出在述词加法指令之前执行非述词移动前缀指令的实例,但在许多实例中,将结合并不具有任何无效线道的非述词数据处理指令来使用非述词移动前缀指令。在此情形下,所有线道可使这样的线道的结果元素设定成寄存器Zs1、Zs2的对应元素Vn、Sn的和。
同时,尽管图5图示分别执行移动前缀及加法运算的实例,但应了解,当这些指令经融合时,则处理电路14可以任何方式生成等效结果。处理电路不必实际上按次序执行两个操作,且处理电路可能能够直接根据目的地寄存器Zd及两个源寄存器Zs1、Zs2的输入值生成适当的结果值。
在引入上文所论述的移动前缀指令时出现的一个问题为如何响应引起执行停止的事件。停止事件的实例可例如为异常、中断或断点。举例而言,异常可能在指令生成反常结果(例如,浮点结果在范围的外)时发生,或中断可能在外部装置判定中断讯号时被触发,该中断讯号例如指示用户已按下设备上的按钮或外部装置已传送讯息。异常或中断可导致处理电路悬置处理且切换至异常或中断处置例程以处置已发生的事件。当处置例程完成时,处理可随后切换回至先前正在执行的程序。类似地,出于除错目的,可设定断点地址,且当处理到达其指令地址与断点地址匹配的指令时,可悬置处理,以便除错器可执行一些诊断动作,诸如,检验各个寄存器的内容、自内存中的某些地址读取数据值或探测处理电路活动的其它操作。
因此,针对所有这些类型的停止事件,在停止事件发生之后,可记录在解决该停止事件之后处理将返回的返回地址。可以不同方式记录返回地址。举例而言,可将返回地址置放于寄存器(例如,链路寄存器)中,或可将返回地址推动至堆栈,或使用某种其它机制记录返回地址。如图6及图7中所示,针对移动前缀指令及数据处理指令对,存在当处理接着的指令(若未经融合)或经融合指令(若经融合)期间发生停止事件时可决定返回地址值的不同方式。
如图6中所示,一种方法为停止事件(诸如,在此情形下为异常)触发在寄存器(ELR)中记录移动前缀指令的返回地址#A1,即使该异常实际上由接着的指令触发。在图6的实例中,数据处理指令为浮点指令FADD,因此异常可为浮点异常。因此,一旦异常处置器已完成解决异常状况,则处理返回至移动前缀指令的地址#A1,因此指令融合电路50可再次决定是否融合移动前缀指令与接着的指令。此方法避免需要在继续该接着的指令之前维持任何状态,因为即使已在停止事件之前在架构上执行移动前缀指令的效应,也可重复移动前缀指令。
另一方面,如图7中所示,另一方法可为停止事件触发在ELR中记录接着的指令的返回地址#A2,而非移动前缀指令的地址。在此情形下,除设定返回地址的外,处理电路可确保移动前缀指令的目的地寄存器Zd设定成与若已执行移动前缀指令则该目的地寄存器Zd原本具有的结果相同的结果。实际上,在一些情形下,若移动前缀指令未与接着的指令融合,则可能已执行移动前缀指令,因此目的地寄存器Zd可能已具有正确结果。另一方面,若尚未执行移动前缀指令,或移动前缀指令已与接着的指令融合,则在遇到异常后,可执行操作将目的地寄存器Zd设定成正确值,以便当处理随后返回至地址#A2时,则可执行接着的指令FADD,犹如已完成移动前缀指令。举例而言,可确保移动前缀指令已通过重复移动前缀指令或在移动前缀指令为非述词时简单地更新更名表42来在架构上完成,以便架构目的地寄存器Zd现映像至先前已映像至来源架构寄存器Zs1的实体寄存器。
一些系统可永久地根据图6中所示方法或图7中所示方法来操作。然而,取决于遇到停止事件时的当前状况,来提供处理电路记录返回地址作为移动前缀指令的地址#A1或数据处理指令的地址#A2两者中的任一个的灵活性可以是有用的。举例而言,返回地址值可取决于移动前缀指令及接着的指令是否在该移动前缀指令及该接着的指令第一次相遇时被融合。若指令融合电路50融合这些指令,则可假定移动尚未完成,因此经融合指令发生异常、中断或断点可能导致返回地址设定成移动前缀指令的地址#A1,如图6中所示。此举确保当在解决该停止事件之后处理继续时,则将实际上通过明确地使用未经融合的移动指令或隐含在生成经融合指令的结果中两者中的任一个来执行移动。
另一方面,若指令对第一次未经融合地执行,则在检测到停止事件之前,可能已完成移动前缀指令的移动,因此图7中所示方法可能更适当地避免不必要地重复移动指令。因此,由于仅在尚未执行移动时需要如图6中所示重复移动前缀指令,故通过提供在设定返回地址时在地址A1与地址A2之间选择的能力,可改良处理效能。
概括来说,通过提供移动前缀指令来发讯号通知与紧接着的指令融合是可能的,程序员或编译程序可向处理电路暗示融合是安全的,而不需要指令融合电路决定是否指令对的寄存器相匹配,此举极大地减少融合的管理负担。若程序员或编译程序已正确地使用指令,则预期紧接着的指令是具有单一寄存器说明符的破坏性数据处理指令,该单一寄存器说明符识别目的地寄存器及第一源寄存器两者,且移动前缀指令的目的地寄存器与接着的指令的目的地寄存器相同。在此情形下,融合电路可融合这些指令以形成分别识别两个操作数寄存器及结果寄存器的构造性数据处理指令。
特别地,构造性指令可形成具有该构造性指令的如下指定的寄存器:构造性指令的结果寄存器可对应于移动前缀指令的移动目的地寄存器或紧接着的指令的目的地寄存器两者中的任一个,且构造性指令的至少两个操作数寄存器可设定成对应于移动前缀指令的移动源寄存器及紧接着的数据处理指令的源寄存器中的一个源寄存器。使用此方法,经融合指令将具有与分别执行该两个移动前缀指令及数据处理指令相同的结果,条件是程序员或编译程序确保紧接着的指令为指定与移动前缀指令相同的目的地寄存器的破坏性数据处理指令。若使用矢量述词,则经融合指令的述词可设定成等于移动前缀指令及紧接着的指令两者中任一个的述词(若程序员/编译程序已正确地使用这样的指令,则移动前缀指令及紧接着的指令的述词应相同)。
除移动前缀指令的外,可能存在可控制处理电路将数据值自第一寄存器复制至第二寄存器的至少一种其它类型的指令。举例而言,其它指令可为上文所提及的与指令、或指令、加法指令或专用MOV指令或给出等于来源操作数中的一个来源操作数的结果的任何其它种类的指令。因此,在架构中通常将存在已可以已经达成寄存器移动的许多指令。除这样的指令的外还可提供具有不同指令编码的移动前缀指令。似乎可能令人惊奇的是,提供专用指令以提供已可由其它指令提供的寄存器移动功能是有用的。然而,通过为移动前缀指令提供不同指令编码,此举允许程序员或编译程序发讯号通知何时该程序员或编译程序意欲移动至接着的破坏性指令之前,以形成经融合构造性指令,而非独立的移动操作。因此,此举避免需要处理电路检查满足融合所需要的各种条件。
移动前缀指令可特定于特定类型的数据处理指令(例如加法指令)。然而,耦接移动前缀指令与对应于不同处理操作的数据处理指令的类别中的任何数据处理指令可以是有用的,以便无论何者特定操作由紧接着的指令来表示,大体而言移动前缀皆可与破坏性指令融合,以形成对应于与原始破坏性指令相同的处理操作的经融合构造性指令。举例而言,数据处理指令的该类别可包括各种运算,包括加、减、乘、除、乘加、平方根、移位、与、或、非、非与、非或、异或以及各种浮点运算及诸如交错的其它矢量运算等。
针对一些实施,是否融合移动前缀指令与紧接着的指令的决策可为静态的。因此,当检测到移动前缀指令时,一些实施可始终合并该移动前缀指令与紧接着的指令,而不管任何其它条件如何。
然而,其它系统可动态地决定是否融合这样的指令,该决定取决于除移动前缀指令与紧接着的指令之间的寄存器比较的外的至少一个标准。举例而言,这些其它标准可包括紧接着的指令将执行何种类型的处理操作、是否移动前缀指令及紧接着的指令保持在不同快去列中,及是否移动前缀指令及紧接着的指令对应于地址空间的不同页面。
上文实例已论述使用包括多个数据元素的操作数支持矢量处理的矢量处理系统。然而,可向处理对应于单一数据元素的标量数据值的标量处理系统引入类似的移动前缀指令。在此情形下,将不提供述词值且将不提供图5的不同无效线道处置模式。而是标量移动前缀指令可以与上文所论述的矢量实施例相同的方式位于标量数据处理指令之前。
如上文所提及地,当处理矢量操作数时,移动前缀指令可十分有用,除了发讯号通知何时可能融合的外,可提供对应于不同无效线道处置模式的不同形式的移动前缀指令,以使接着的操作的运算能够经修改而不以任何方式改变接着的指令的编码。此举节省了指令集架构中的编码空间,因为不必提供对应于不同形式的述词的不同版本的数据处理指令。
上文实施例论述移动前缀指令与紧接着的指令的融合。该指令对在经提取指令中也可视为单一倍长指令,该单一倍长指令可随后分离成单独的指令或作为单一经组合指令转发以由处理电路处理。此方法完全等效于上文论述的融合方法(指令融合电路执行的实际操作将是相同的,唯一区别是关于原始指令是视为一个指令还是两个指令的解释中的一个解释)。因此,在一些实施例中,指令融合电路的是否融合指令的决定实际上可为是否分离倍长指令(与该倍长指令的两个部分之间的任何寄存器比较无关)的决定,且申请专利范围涵盖此方法。
图8图示可使用的虚拟机实施。尽管较早所描述的实施例依据用于操作支持有关技术的特定处理硬件的设备及方法来实施本发明,但也可能提供所谓的硬件装置的虚拟机实施。这些虚拟机实施在主机处理机530上运行,主机处理机530运行支持虚拟机程序510的主机操作系统520。通常,需要大型强劲的处理器来提供以合理速度执行的虚拟机实施,但在某些情形下(诸如,当出于兼容性或再使用的原因而希望运行另一处理器的本机程序代码时)可使得该方法合理。虚拟机程序510提供至应用程序500的应用程序编程接口,该应用程序编程接口与原本由真实硬件来提供的应用程序编程接口相同,真实硬件为正由虚拟机程序510模型化的装置。因此,可使用虚拟机程序510在应用程序500内执行程序指令(包括上文描述的内存访问控制),以模型化这样的程序指令与虚拟机硬件的互动。
在本申请中,用语“被配置为...”用以意谓设备的组件具有能够执行经定义的操作的配置。在此上下文中,“配置”意指硬件或软件互连的布置或方式。举例而言,设备可具有提供经定义操作的专用硬件,或处理器或其它处理装置可经程序化以执行功能。“被配置为”并不暗示设备组件需要以任何方式改变以提供经定义操作。
尽管本文已参考附图详细地描述本发明的说明性实施例,但本领域技术人员应理解,本发明不限于彼等精确实施例,且可在不脱离由附加申请专利范围定义的本发明的范畴及精神的情况下,在本发明中实现各种改变及修改。

Claims (30)

1.一种设备,所述设备包括:
处理电路,所述处理电路响应于指令而执行数据处理;以及
指令融合电路,所述指令融合电路融合自数据储存处提取的移动前缀指令及紧接着的指令,以生成经融合数据处理指令,以由所述处理电路处理;
其中所述移动前缀指令识别移动目的地寄存器及移动源寄存器,所述移动源寄存器指定将被至少部分地复制至所述移动目的地寄存器的数据值;以及
响应于检测所述移动前缀指令,所述指令融合电路被配置为决定是否融合所述移动前缀指令及所述紧接着的指令,而无论所述移动前缀指令的所述移动目的地寄存器是否为与所述紧接着的指令指定的任何寄存器相同的寄存器。
2.如权利要求1所述的设备,其中所述移动前缀指令指示所述紧接着的指令预期为破坏性数据处理指令,所述破坏性数据处理指令的目的地寄存器将设定成结果值,所述结果值对应于将预定处理操作应用于至少两个源寄存器指定的至少两个来源值的结果,并且所述破坏性数据处理指令的所述目的地寄存器及所述至少两个源寄存器中的一个源寄存器与所述移动前缀指令的所述移动目的地寄存器相同。
3.如权利要求2所述的设备,其中所述破坏性数据处理指令具有指令编码,所述指令编码包括识别所述目的地寄存器及所述至少两个源寄存器中的一个所述源寄存器两者的单一寄存器说明符。
4.如前述权利要求中的任意一项所述的设备,其中所述经融合数据处理指令包括分别识别至少两个操作数寄存器及将设定成结果值的结果寄存器的构造性数据处理指令,所述结果值对应于将处理操作应用于所述至少两个操作数寄存器指定的值的结果。
5.如权利要求4所述的设备,其中所述指令融合电路被配置为生成具有以下的所述构造性数据处理指令:
所述结果寄存器,所述结果寄存器对应于所述移动前缀指令的所述移动目的地寄存器及所述紧接着的指令的目的地寄存器中的一个;以及
所述至少两个操作数寄存器,所述至少两个操作数寄存器对应于所述移动前缀指令的所述移动源寄存器及所述紧接着的指令的至少一个源寄存器。
6.如前述权利要求中的任意一项所述的设备,其中所述移动前缀指令具有与至少一种其它类型的指令不同的指令编码,所述至少一种其它类型的指令用于控制所述处理电路将数据值自第一寄存器复制至第二寄存器。
7.如前述权利要求中的任意一项所述的设备,其中所述指令融合电路被配置为在所述紧接着的数据处理指令为对应于待执行的不同类型的处理操作的数据处理指令的类别中的任何数据处理指令时,融合所述移动前缀指令及所述紧接着的数据处理指令。
8.如前述权利要求中的任意一项所述的设备,其中响应于检测所述移动前缀指令,所述指令融合电路被配置为取决于除是否所述移动前缀指令的所述移动目的地寄存器是与所述紧接着的数据处理指令指定的任何寄存器相同的寄存器的外的至少一个标准,来决定是否融合所述移动前缀指令及所述紧接着的指令。
9.如权利要求8所述的设备,其中所述至少一个标准包括以下中的至少一个:
当所述紧接着的指令为用于控制所述处理电路对至少两个来源值执行给定处理操作的数据处理指令时,何种类型的处理操作是针对所述紧接着的指令的所述给定处理操作;
是否所述移动前缀指令及所述紧接着的指令保持在不同快去列中;以及
是否所述移动前缀指令及所述紧接着的指令对应于地址空间的不同页面。
10.如前述权利要求中的任意一项所述的设备,其中所述移动前缀指令及所述紧接着的指令包括用于处理标量数据值的标量指令,所述标量数据值包括单一数据元素。
11.如前述权利要求中的任意一项所述的设备,其中所述移动前缀指令及所述紧接着的指令包括用于处理矢量数据值的矢量指令,所述矢量数据值包括多个数据元素。
12.如权利要求11所述的设备,其中当所述紧接着的指令为用于控制所述处理电路对至少两个来源值执行给定处理操作以生成结果值的数据处理指令时,所述紧接着的指令识别述词值,所述述词值指示所述结果值的何者数据元素为将设定成取决于所述至少两个来源值的对应数据元素的值的有效元素,或为将设定成与所述至少两个来源值无关的值的无效元素。
13.如权利要求12所述的设备,其中所述指令融合电路被配置为决定是否融合所述移动前缀指令及所述紧接着的指令,而不管是否所述移动前缀指令识别与所述紧接着的数据处理指令相同的述词值。
14.如权利要求12和13中的任意一项所述的设备,其中所述移动前缀指令包括:
多种类型的移动前缀指令中的一种;以及
当所述指令融合电路融合所述移动前缀指令与所述紧接着的指令时,所述指令融合电路被配置为生成所述经融合数据处理指令,以控制所述处理电路根据取决于何种类型的移动前缀指令与所述紧接着的指令融合选择的无效线道处置模式决定所述结果值的所述无效元素。
15.如权利要求14所述的设备,其中所述指令融合电路被配置为生成所述经融合数据处理指令,以控制所述处理电路用不取决于所述紧接着的指令的编码所选择的所述无效线道处置模式决定所述结果值的所述无效元素。
16.如权利要求14和15中的任意一项所述的设备,其中当所述移动前缀指令为非述词类型的移动前缀指令时,所述指令融合电路被配置为生成所述经融合数据处理指令,以控制所述处理电路用所述移动源寄存器的对应元素的值来决定所述结果值的所述无效元素。
17.如权利要求16所述的设备,其中当所述移动前缀指令为所述非述词类型的移动前缀指令且所述指令融合电路决定不融合所述移动前缀指令与所述紧接着的指令时,所述处理电路响应于所述移动前缀指令而将所述整个数据值自所述移动源寄存器复制至所述移动目的地寄存器。
18.如权利要求14-17中的任意一项所述的设备,其中当所述移动前缀指令为合并类型的移动前缀指令时,所述指令融合电路被配置为生成所述经融合数据处理指令,以控制所述处理电路用取决于所述移动目的地寄存器的对应元素的先前值的值来决定所述结果值的所述无效元素。
19.如权利要求18所述的设备,其中所述合并类型的移动前缀指令指定移动述词值,所述移动述词值识别所述移动目的地寄存器的何者元素为有效元素或无效元素;以及
当所述移动前缀指令为所述合并类型的移动前缀指令且所述指令融合电路决定不融合所述移动前缀指令与所述紧接着的指令时,所述处理电路响应于所述移动前缀指令而将所述移动目的地寄存器的有效元素设定成所述移动源寄存器的对应元素的值且保持所述移动目的地寄存器的无效元素的所述先前值。
20.如权利要求14-19中的任意一项所述的设备,其中当所述移动前缀指令为清除类型的移动前缀指令时,所述指令融合电路被配置为生成所述经融合数据处理指令,以控制所述处理电路用清除成为预定值的值来决定所述结果值的所述无效元素。
21.如权利要求20所述的设备,其中所述清除类型的移动前缀指令指定移动述词值,所述移动述词值识别所述移动目的地寄存器的何者元素为有效元素或无效元素;以及
当所述移动前缀指令为所述清除类型的移动前缀指令且所述指令融合电路决定不融合所述移动前缀指令与所述紧接着的指令时,所述处理电路响应于所述移动前缀指令而将所述移动目的地寄存器的有效元素设定成所述移动源寄存器的对应元素的值且清除所述移动目的地寄存器的无效元素为所述预定值。
22.如权利要求12-21中的任意一项所述的设备,其中所述处理电路响应于识别与目的地寄存器及源寄存器两者皆相同的寄存器的未经融合的数据处理指令,以生成结果值,其中无效元素设定成取决于所述相同寄存器的对应元素的先前值的值。
23.如前述权利要求中的任意一项所述的设备,其中响应于所述紧接着的指令或所述经融合数据处理指令触发的停止事件,所述处理电路被配置为记录所述移动前缀指令的地址作为返回地址用于在解决所述停止事件之后继续处理。
24.如权利要求1-22中任一项所述的设备,其中响应于所述紧接着的指令或所述经融合数据处理指令触发的停止事件,所述处理电路被配置为记录所述紧接着的指令的地址作为返回地址用于在解决所述停止事件之后继续处理,且确保所述移动目的地寄存器的数据等于执行所述移动前缀指令的结果。
25.权利要求1-22中的任一项所述的设备,其中响应于所述紧接着的指令或所述经融合数据处理指令触发的停止事件,所述处理电路被配置为取决于所述指令融合电路是否融合了所述移动前缀指令及所述紧接着的指令,来选择是否记录所述移动前缀指令的地址或所述紧接着的指令的地址作为返回地址用于在解决所述停止事件之后继续处理。
26.如权利要求25所述的设备,其中当所述指令融合电路融合了所述移动前缀指令及所述紧接着的指令时,所述处理电路被配置为记录所述移动前缀指令的所述地址作为所述返回地址,且当所述指令融合电路并未融合所述移动前缀指令及所述紧接着的指令时,所述处理电路被配置为记录所述紧接着的指令的所述地址作为所述返回地址。
27.如权利要求23-26中任一项所述的设备,其中所述停止事件包括以下中的一个:
异常事件;
中断;以及
断点。
28.一种数据处理方法,包括:
在自数据储存处提取的供处理电路处理的指令之中检测移动前缀指令,所述移动前缀指令识别移动目的地寄存器及移动源寄存器,所述移动源寄存器指定将被至少部分地复制至所述移动目的地寄存器的数据值;以及
决定是否融合所述移动前缀指令与紧接着的指令,以生成经融合数据处理指令以由所述处理电路处理;
其中当检测到所述移动前缀指令时,所述决定步骤决定是否融合所述移动前缀指令及所述紧接着的指令,而不管是否所述移动前缀指令的所述移动目的地寄存器为与所述紧接着的指令指定的任何寄存器相同的寄存器。
29.一种设备,包括:
用于响应于指令而执行数据处理的装置;以及
用于融合自数据储存处提取的移动前缀指令及紧接着的指令,以生成经融合的数据处理指令以由所述处理电路处理的装置;
其中所述移动前缀指令识别移动目的地寄存器及移动源寄存器,所述移动源寄存器指定将被至少部分地复制至所述移动目的地寄存器的数据值;以及
响应于检测所述移动前缀指令,用于融合的所述装置被配置为决定是否融合所述移动前缀指令及所述紧接着的指令,而无论所述移动前缀指令的所述移动目的地寄存器是否为与所述紧接着的指令指定的任何寄存器相同的寄存器。
30.一种储存在计算机可读取储存介质上的计算机程序,所述计算机程序在由数据处理设备执行时提供虚拟机,所述虚拟机提供对应于权利要求1-27中任何权利要求所述的设备的指令执行环境。
CN201680058692.2A 2015-10-14 2016-09-14 移动前缀指令 Active CN108139908B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1518156.3A GB2543304B (en) 2015-10-14 2015-10-14 Move prefix instruction
GB1518156.3 2015-10-14
PCT/GB2016/052838 WO2017064456A1 (en) 2015-10-14 2016-09-14 Move prefix instruction

Publications (2)

Publication Number Publication Date
CN108139908A true CN108139908A (zh) 2018-06-08
CN108139908B CN108139908B (zh) 2022-07-12

Family

ID=55131012

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680058692.2A Active CN108139908B (zh) 2015-10-14 2016-09-14 移动前缀指令

Country Status (9)

Country Link
US (1) US10795675B2 (zh)
EP (1) EP3362889B1 (zh)
JP (1) JP6807383B2 (zh)
KR (1) KR102629722B1 (zh)
CN (1) CN108139908B (zh)
GB (1) GB2543304B (zh)
IL (1) IL258035B (zh)
TW (1) TWI740844B (zh)
WO (1) WO2017064456A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111414199A (zh) * 2020-04-03 2020-07-14 中国人民解放军国防科技大学 一种指令融合的实现方法及装置

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10061580B2 (en) 2016-02-25 2018-08-28 International Business Machines Corporation Implementing a received add program counter immediate shift (ADDPCIS) instruction using a micro-coded or cracked sequence
US10684856B2 (en) * 2017-07-11 2020-06-16 International Business Machines Corporation Converting multiple instructions into a single combined instruction with an extension opcode
US11150908B2 (en) * 2017-08-18 2021-10-19 International Business Machines Corporation Dynamic fusion of derived value creation and prediction of derived values in a subroutine branch sequence
US11150904B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Concurrent prediction of branch addresses and update of register contents
US10908911B2 (en) 2017-08-18 2021-02-02 International Business Machines Corporation Predicting and storing a predicted target address in a plurality of selected locations
US10884745B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Providing a predicted target address to multiple locations based on detecting an affiliated relationship
US10884746B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Determining and predicting affiliated registers based on dynamic runtime control flow analysis
US10884747B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Prediction of an affiliated register
US10719328B2 (en) 2017-08-18 2020-07-21 International Business Machines Corporation Determining and predicting derived values used in register-indirect branching
US10534609B2 (en) 2017-08-18 2020-01-14 International Business Machines Corporation Code-specific affiliated register prediction
JP7183657B2 (ja) * 2018-09-21 2022-12-06 日本電気株式会社 プロセッサ、情報処理方法、プログラム
US11036510B2 (en) * 2018-10-11 2021-06-15 Arm Limited Processing merging predicated instruction with timing permitting previous value of destination register to be unavailable when the merging predicated instruction is at a given pipeline stage at which a processing result is determined
US11119777B1 (en) 2020-04-22 2021-09-14 International Business Machines Corporation Extended prefix including routing bit for extended instruction format

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050138330A1 (en) * 2003-12-23 2005-06-23 Maxim Integrated Products, Inc. MAXQ microcontroller
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
CN101957743A (zh) * 2010-10-12 2011-01-26 中国电子科技集团公司第三十八研究所 并行数字信号处理器
US20110264896A1 (en) * 2010-04-27 2011-10-27 Via Technologies, Inc. Microprocessor that fuses mov/alu instructions
CN102707927A (zh) * 2011-04-07 2012-10-03 威盛电子股份有限公司 具有条件指令的微处理器及其处理方法
US20140164741A1 (en) * 2012-12-11 2014-06-12 International Business Machines Corporation Modify and Execute Next Sequential Instruction Facility and Instructions Therefore
CN104049945A (zh) * 2013-03-15 2014-09-17 英特尔公司 用于融合指令以在多个测试源上提供或(or)测试和与(and)测试功能的方法和装置
CN104881270A (zh) * 2011-04-07 2015-09-02 威盛电子股份有限公司 具有条件指令的微处理器及其处理方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5303358A (en) * 1990-01-26 1994-04-12 Apple Computer, Inc. Prefix instruction for modification of a subsequent instruction
TW334546B (en) * 1996-03-18 1998-06-21 Hitachi Ltd Data processor
US7958181B2 (en) * 2006-09-21 2011-06-07 Intel Corporation Method and apparatus for performing logical compare operations
US9329869B2 (en) * 2011-10-03 2016-05-03 International Business Machines Corporation Prefix computer instruction for compatibily extending instruction functionality
US9195466B2 (en) 2012-05-16 2015-11-24 Qualcomm Incorporated Fusing conditional write instructions having opposite conditions in instruction processing circuits, and related processor systems, methods, and computer-readable media
US9477476B2 (en) 2012-11-27 2016-10-25 Qualcomm Incorporated Fusing immediate value, write-based instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media
US9348601B2 (en) * 2012-12-26 2016-05-24 Intel Corporation Coalescing adjacent gather/scatter operations
US9672037B2 (en) * 2013-01-23 2017-06-06 Apple Inc. Arithmetic branch fusion
GB2521019B (en) * 2014-05-27 2016-05-25 Imagination Tech Ltd Decoding instructions that are modified by one or more other instructions
US20170090922A1 (en) * 2015-09-30 2017-03-30 Futurewei Technologies, Inc. Efficient Instruction Pair for Central Processing Unit (CPU) Instruction Design
US10394568B2 (en) * 2015-09-30 2019-08-27 International Business Machines Corporation Exception handling for applications with prefix instructions

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050138330A1 (en) * 2003-12-23 2005-06-23 Maxim Integrated Products, Inc. MAXQ microcontroller
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US20110264896A1 (en) * 2010-04-27 2011-10-27 Via Technologies, Inc. Microprocessor that fuses mov/alu instructions
CN101957743A (zh) * 2010-10-12 2011-01-26 中国电子科技集团公司第三十八研究所 并行数字信号处理器
CN102707927A (zh) * 2011-04-07 2012-10-03 威盛电子股份有限公司 具有条件指令的微处理器及其处理方法
CN104881270A (zh) * 2011-04-07 2015-09-02 威盛电子股份有限公司 具有条件指令的微处理器及其处理方法
US20140164741A1 (en) * 2012-12-11 2014-06-12 International Business Machines Corporation Modify and Execute Next Sequential Instruction Facility and Instructions Therefore
CN104049945A (zh) * 2013-03-15 2014-09-17 英特尔公司 用于融合指令以在多个测试源上提供或(or)测试和与(and)测试功能的方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
郭鹏: "Pentium指令集微操作设计", 《中国优秀硕士学位论文全文数据库 (信息科技辑)》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111414199A (zh) * 2020-04-03 2020-07-14 中国人民解放军国防科技大学 一种指令融合的实现方法及装置

Also Published As

Publication number Publication date
US20180267798A1 (en) 2018-09-20
TWI740844B (zh) 2021-10-01
EP3362889B1 (en) 2021-04-21
JP2018534671A (ja) 2018-11-22
KR102629722B1 (ko) 2024-01-26
JP6807383B2 (ja) 2021-01-06
CN108139908B (zh) 2022-07-12
EP3362889A1 (en) 2018-08-22
KR20180067583A (ko) 2018-06-20
GB2543304B (en) 2020-10-28
WO2017064456A1 (en) 2017-04-20
GB201518156D0 (en) 2015-11-25
US10795675B2 (en) 2020-10-06
GB2543304A (en) 2017-04-19
TW201723809A (zh) 2017-07-01
IL258035A (en) 2018-05-31
IL258035B (en) 2021-05-31

Similar Documents

Publication Publication Date Title
CN108139908A (zh) 移动前缀指令
CN101819520B (zh) 管线式微处理器以及快速执行条件分支指令的方法
CN104169889B (zh) 在事务执行模式中的运行时间检测采样的方法和系统
US5881280A (en) Method and system for selecting instructions for re-execution for in-line exception recovery in a speculative execution processor
TWI551986B (zh) 用於自較低特殊權限狀態控制執行階段檢測設施之操作之電腦程式產品、方法及其系統
CN103250131B (zh) 包括用于早期远分支预测的影子缓存的单周期多分支预测
CN101110017B (zh) 一种组合指令的技术
TWI716425B (zh) 用於執行疊接操作的裝置和方法
CN103098020A (zh) 由多个指令集使用的寄存器间映射
CN104205064A (zh) 将程序事件记录事件向运行时间检测事件的变换
CN106547518A (zh) 用于加速器的低等待时间调用的装置和方法
CN102473104A (zh) 插入用于优化的simd代码的操作-和-指示指令
CN104778030A (zh) 具有虚拟化指令集架构的处理器和方法
CN102792265A (zh) 基于机器状态的指令破解
TW201403314A (zh) 執行階段檢測報告
CN110192186A (zh) 使用矢量处理电路的错误检测
CN104169887A (zh) 通过指令操作码的运行时间检测间接采样
CN104169886A (zh) 通过地址的运行时间检测间接采样
US5907693A (en) Autonomously cycling data processing architecture
CN104239001A (zh) 至少一个处理流水线中的操作数生成
CN103282876A (zh) 数据元素的条件选择
CN104380265B (zh) 运行时间检测控制发出指令
CN108834427A (zh) 处理向量指令
JPH04506878A (ja) データ処理装置
Bulpin Design and Simulation of a Super-Scalar CPU

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant