CN103154883B - 对来自多个指令集的指令进行译码 - Google Patents
对来自多个指令集的指令进行译码 Download PDFInfo
- Publication number
- CN103154883B CN103154883B CN201180048887.6A CN201180048887A CN103154883B CN 103154883 B CN103154883 B CN 103154883B CN 201180048887 A CN201180048887 A CN 201180048887A CN 103154883 B CN103154883 B CN 103154883B
- Authority
- CN
- China
- Prior art keywords
- instruction
- instruction set
- indicator value
- advanced
- data processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 20
- 230000004044 response Effects 0.000 claims description 26
- 230000008569 process Effects 0.000 claims description 5
- 239000012141 concentrate Substances 0.000 claims description 3
- 238000001514 detection method Methods 0.000 claims 1
- 238000004590 computer program Methods 0.000 abstract description 2
- 210000003811 finger Anatomy 0.000 description 3
- 210000003813 thumb Anatomy 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
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)
Abstract
描述了能够对来自不同指令集的指令进行译码的数据处理设备、方法和计算机程序。该方法包括:接收指令;如果所述指令的操作码为来自基本指令集的指令的操作码,则根据用于所述基本指令集的译码规则对所述指令进行译码;以及如果所述指令的所述操作码为来自至少一个进阶指令集的指令的操作码,则根据指示符值所判定的译码规则集合对所述指令进行译码,其中该指示符值指示所述至少一个进阶指令集中的哪个进阶指令集当前将被译码。
Description
技术领域
本发明涉及数据处理领域,尤其涉及对来自不同指令集的指令进行译码。
背景技术
可使用来自不同指令集的指令的处理器是已知的。例如,英国剑桥的具有使用ARM指令集和Thumb指令集的处理器,其中Thumb指令为16位宽,而ARM指令为32位宽。为了使译码器知道正在使用哪个指令集,在对指令进行编码时使用自由位来指示该指令为ARM指令还是Thumb指令。
在某些处理器架构中,存在明确定义该架构所支持的指令的编码集合,并且存在允许该架构的用户定义它们自身的指令的自由编码集合。在提供允许用户定义它们自身的指令的编码空间的处理器架构中,使用指令编码的位指示特定指令集会产生一些自身的问题。
US7,149,878公开了一种允许特定指令集被选择和使用的多指令集架构。在这方面,存在能够根据所选择的指令集来应用特定译码规则的模式切换/译码逻辑214。
希望能够在不过分增加编码空间的同时允许用户定义它们自己的指令的条件下,提供多个指令集。
发明内容
从第一方面看,本发明提供了一种数据处理设备,包括:用于对指令进行译码的指令译码器;以及用于响应于由所述指令译码器译码的指令而处理数据的处理器;所述指令译码器被配置为对来自多个不同指令集的指令进行译码,所述指令集包括基本指令集以及至少一个进阶指令集;所述基本指令集包括多个指令,其中每个指令包括用于唯一地标识所述指令的预定操作码,并且所述至少一个进阶指令集包括多个指令,其中每个指令包括用于标识所述至少一个进阶指令集中的所述指令的操作码;所述指令译码器被配置为当操作时一直能够存取所述基本译码规则集合并且能够进一步存取指示所述至少一个进阶指令集中的哪个进阶指令集当前将被译码的指示符值所判定的译码规则集合,从而使得所述指令译码器被配置为根据基本译码规则集合对具有所述多个预定操作码中的一个预定操作码的指令进行译码,以及根据由指示所述至少一个进阶指令集中的哪个进阶指令集当前将被译码的指示符值判定的译码规则集合对具有所述至少一个进阶指令集的所述操作码中的一个操作码的指令进行译码。
本发明认识到提供用户可定义它们自身的指令的编码空间是有利的,然而本发明也认识到如果存在总是可被译码的基本指令集也是有利的。
本发明通过提供基本指令集和至少一个进阶指令集(further instructionset)来解决这些相互矛盾的需求,其中指令译码器根据基本规则集合来对基本指令集进行译码,译码器根据指示符值所判定的规则集合来对进阶指令集进行译码。
这样,通过简单地使用指示符值,可提供数种由不同规则译码的不同指令集。这意味着,相同的编码可被用来根据指示符值所指定的以及所选择的指令集定义不同的指令。这样,系统的用户可定义它们自身的指令,并且这些指令可具有指示符值将触发其使用的译码规则。
通过提供基本指令集从而使得它们可总是被译码,并且提供在指示符位被适当设置的情况下可被译码的进阶指令,在不过度增大编码空间的条件下提供了具有总是被定义的指令以及具有非常大量的进阶指令的优点。
在某些实施例中,所述指令译码器被配置为对至少两个进阶指令集进行译码,所述至少两个进阶指令集至少具有一些共同的操作码。
如果用于进阶指令集的编码空间被共享从而使得用于不同指令集中的指令的操作码相同但映像至不同指令也是有利的。这是编码空间的有效使用,并且意味着通过使用指示符值可定义大量的不同指令。
在某些实施例中,所述数据处理发备包括用于存储所述指示符值的状态寄存器。
虽然指示符值可被存储于许多地方,但在某些实施例中该指示符值被存储于状态寄存器中。这是存储指示符值的方便的地方且允许指示符值被简单地设置与读取。
在某些实施例中,所述指令译码器响应于指令集更新指令,将存储于所述状态寄存器中的所述指示符值设置为所述指令中指定的值,所述指令集更新指令为来自所述基本指令集的指令。
指示符值可由指令集更新指令更新。这样,希望使用特定指令集的程序设计者可简单地更新指示符值来指示此指令集,随后译码器将根据指示符值所指示的译码规则在进阶指令集的译码空间中对指令进行译码。当需要新的指令集时,指令集更新指令被简单地再次用以改变指示符值,以指示该新需要的指令集。
在某些实施例中,所述处理器被配置为响应于指示所述程序流将分支的分支指令而存储返回地址和所述指示符值,从而使得在从所述分支返回时,所述返回地址和指示符值能够被恢复。
当程序分支到子例程时,由于此子例程可使用不同的进阶指令集,所以可能会出现潜在问题。为了解决此问题,除了存储指示在该分支完成后程序应返回的下一指令的地址的返回地址之外,当前指示符值也被存储,从而使得在指示符值于子例程期间中被改变的情况下,指示符值可于该程序从该子例程返回时被重置为其初始值。
在某些实施例中,所述数据处理设备被配置为在所述分支之前重置所述指示符值。
虽然指示符值可在分支处保持不变,但在某些实施例中数据处理设备被配置为在分支之前重置指示符值。子例程可能无法顺利使用程序分支时使用的进阶指令集,并且在分支之前重置指示符值可能更为方便。然而,使指示符值保持原样也可能是方便的,因为基本指令集仍然可被译码,并且如果需要不同的进阶指令集,则无论如何都将需要重置指示符值。
在某些实施例中,所述返回地址和指示符值被存储于相同的链接寄存器中。
存储返回地址和指示符值的一种方式为将返回地址和指示符值存储于链接寄存器中。在本发明的实施例中,链接寄存器足够宽以存储指示符值和返回地址两者,因而将这两个值存储于容易存取的位置是有效且高效的方式。
在某些实施例中,所述链接寄存器的较高有效位(more significantbits)存储所述指示符值,并且所述链接寄存器的较低有效位(lowersignificant bits)存储所述返回地址。
链接寄存器的最高有效位可能不需要存储返回地址,因而可方便地被用于存储指示符值。
在其他实施例中,所述返回地址和指示符值响应于所述分支而被存储于堆栈中,并且在从所述分支返回时被从所述堆栈中读取。
如果本实施例不使用链接寄存器,则返回地址和指示符值可响应于分支而被推出堆栈。在此情形中,一旦从分支返回,它们将被从堆栈读回。
在某些实施例中,所述指令译码器响应于指示所述至少一个进阶指令集中的一个进阶指令集的所述指示符以及对所述至少一个进阶指令集中的具有以下操作码的指令的接收而生成例外,其中不存在用于该操作码的译码规则。
可设置数据处理设备以截获这样的指示符值,其中所述指示符值指定其中存在不具有译码规则的操作码的指令集。在此情形中,例外被生成,并且处理设备随后判定存在由不具有译码规则的指令所指定的操作码的原因。
在某些实施例中,所述指令译码器响应于检测到所述指示符值转变为指示以下的进阶指令集的值而生成例外,其中所述指令译码器不具有用于该指令集的译码规则。
替代地和/或另外地,可设置数据处理设备,以判定指示符值何时转变为指令译码器不具有译码规则的值。在此情形中,例外被生成,并且处理器再次判定此错误发生的原因。
在某些实施例中,用于所述基本指令集中的指令的所述预定操作码位于预定基本编码空间中,并且所述至少一个进阶指令集的所述操作码位于预定延伸编码空间中。
通过使用用于基本指令集的基本编码空间、和用于对多个进阶指令集进阶编码的进阶编码空间,可以方便地对基本指令集及进阶指令集两者的使用进行编码。这样,来自进阶指令空间的任何操作码都可被用于根据特定指令所在的指令集来指定该特定指令。该特定指令所在的指令集是由指示符值指示的,并且该指示符值将触发译码器使用适当的译码规则集合。
在某些实施例中,多个不同的指示符值标识所述至少一个进阶指令集中的一个进阶指令集。
虽然在某些实施例中存在单个指示符值标识指令集,但在其他实施例中可存在数个不同的指示符值。例如,如果处理器支持负地址(negativeaddress),则由2所指示的指令集可方便地被2或-2所指示(取决于当前支持该负地址还是正地址)。
本发明的第二方面提供了一种对来自不同指令集的指令进行译码的方法,包括:接收指令;如果所述指令的操作码为来自基本指令集的指令的操作码,则根据用于所述基本指令集的译码规则对所述指令进行译码;以及如果所述指令的所述操作码为来自至少一个进阶指令集的指令的操作码,则根据指示符值所判定的译码规则集合对所述指令进行译码,其中所述指示符值指示所述至少一个进阶指令集中的哪个进阶指令集当前将被译码。
本发明的第三方面提供了一种虚拟机,该虚拟机由数据处理设备上执行的计算机程序提供,所述虚拟机根据本发明的第一方面的数据处理设备提供指令执行环境。
附图说明
参考附图中所示的实施例,仅通过示例进一步描述本发明,其中:
图1示出了根据本发明实施例的数据处理设备;
图2示意性地示出了根据本发明实施例的指令译码器以及使用该指令译码器进行译码;
图3示意性地示出了根据本发明实施例的处理器译码器及寄存器;
图4示意性地示出了如何响应于无效的指令集指示符值而生成例外;
图5示意性地示出了包括分支指令的指令流;
图6示意性地示出了包括分支的指令流的执行,其中返回地址及值被推送至堆栈;
图7示出了说明根据本发明实施例的用于对指令进行译码的方法中的步骤的流程图;
图8示意性地示出了根据本发明实施例的包括分支指令的指令流的译码及执行;以及
图9示出了本发明实施例的虚拟机实现。
具体实施方式
图1示出了具有处理器12的数据处理设备10。具有指令的程序被存储于数据储存装置20中,并且这些指令被提取单元(fetch unit)16提取并被发送至译码器14。译码器14对这些指令进行译码,并且将译码后的指令发送至处理器12以供执行。
在此实施例中,译码器14被配置为根据基本译码规则集合对来自基本指令集的指令进行译码,并且根据专用于多个进阶指令集的译码规则对来自这些特定指令集之一的指令进行译码。因此,译码器14能够存取储存于寄存器库30中的状态寄存器32中的指令集指示符值ISASEL,并且能够存取与不同的指示符值相关的多个译码规则。指示符值指示哪个进阶指令集当前将被译码器14译码,并且响应于该值,译码器选择用于该进阶指令集编码空间中的指令的适当译码规则并相应地对它们进行译码。
数据处理设备10还包括堆栈40,其中处理器使用该堆栈来存储分支时的返回地址和指示符值(如将参照后面的附图在下文中描述)。
图2示意性地示出了根据本发明实施例的译码器14。用于指令编码的编码空间示意性地由块50示出。这示出了存在用于基本指令集的操作码的基本编码空间,并且存在用于进阶指令集的操作码的延伸编码空间(extension encoding space)。因此,每个进阶指令集可将整个延伸编码空间用于其操作码。
在当前正被译码的指令集的指示被提供给译码器,从而使得位于延伸编码空间中的任意指令能够根据正确规则被译码的情况下,上述情况是可能的。
这在图2中由译码器14中存储的基本译码规则60示出。这些译码规则对基本编码空间中的编码进行译码,并且译码器一直能够存取这些译码规则。
关于延伸编码空间中的编码的其他译码规则在图中被示意性地示出为62、64及66。译码器14可经由多路复用器72存取这些译码规则。多路复用器72响应于图1的状态寄存器32中存储的指令集标识符或指示符值70来选择供译码器14使用的译码规则集合。此标识符指示哪个特定指令集当前正被使用、以及哪些译码规则应该被用于落入延伸编码空间中的任意指令。因此,大量的不同指令可在相对较小的延伸编码空间中被编码,并且如果指示符值被适当设置,则该些指令可被译码器14译码。再者,译码器14可以一直对源自基本指令集的任意指令进行译码。
图3示意地示出了根据本发明实施例的数据处理设备10的一部分。在此示图中,可看出如何在状态寄存器74中定位指令集指示符值ISASEL70、以及处理器12如何响应于指令集更新指令而设置此值。因此,响应子指令集更新指令,此指令所指示的值被写入状态寄存器74中。此值随后被译码器14用来选择用于位于延伸编码空间中的指令的译码规则,此值指示指令从属的进阶指令集。
寄存器库30还包括分支链接寄存器76,该分支链接寄存器76被用于在程序流分支时存储当前指令集指示符值和返回地址。当程序分支时,该程序需要能够返回到原始的程序流,因此返回地址总是被存储。然而,由于在本发明的实施例中存在可被译码的不同的指令集,所以在程序分支时存储当前指令集指示符值从而使得当程序返回到原始的程序流时,该译码器可使用正确的译码规则是非常重要的。因此,除了存储返回地址外,也存储指令集指示符值。同于分支链接寄存器的尺寸以及该些地址的尺寸,分支链接寄存器中有足够的空间来方便地同时存储返回地址和指示符值。
应注意到,在本实施例中仅有单个分支链接寄存器72,因而如果程序再次分支,则该寄存器中的数据被写入至堆栈40中,并且分支链接寄存器随后被分支时的下一返回地址和指令集指示符值覆写。
图4示出了数据处理设备10的一部分,并且示出了不被处理器支持的指令集指示符值ISASEL如何被检测到以及如何生成陷阱(trap)。因此,在此实施例中,响应于指令集更新指令,处理器12发送新的ISASEL值至寄存器72以更新所存储的值。此新值传送通过比较器90且被与存储于储存装置80中的ISASEL值的集合相比较。储存装置80存储所有可能的指令集值,因而如果不存在匹配,则不匹配信号被比较器90发送并且生成了例外。如果存在匹配,则比较器90发送指示符值至寄存器72,且ISASEL的新值被设置。
图5示意性地示出了正被执行中的指令流,所述指令流包括分支指令。因此,在此实施例中,在功能2存在分支,并且链接寄存器存储返回地址和当前指令集指示符,且该当前指令集指示符在此情形中为0,指示当前不支持进阶指令集。该分支跳至的子例程随后被执行,且此子例程将指令集指示符值设置为3,指示其希望使用源自指示符值3所指定的进阶指令集的指令。该指令集随后再次分支,并且链接寄存器于此时被更新以存储用于此分支的返回地址以及指示符3(该指示符指示指令集指示符值于该程序返回该指令流的此部份时应被重置为3)。应注意,在此实施例中仅有单个链接寄存器,因此先前被存储于该链接寄存器中的值在此链接寄存器被覆写这些新值之前会被推送至堆栈。
已经跳至的子例程随后被执行,并且此子例程包括指令集更新指令,该指令集更新指令指示被指定为4的进阶指令集将被使用。因此,指令集指示符值被设置为4。响应于此子例程末尾的返回指令,来自链接寄存器的值被加载至关于返回地址的程序计数器以及关于指示符值的状态寄存器中(该指示符值在此情形中为3)。
图6示意性地示出了不具有分支链接寄存器的处理设备中的分支子例程。在此情形中,原始的指令流已将指令集指示符值设置为3,因而响应于分支指令,此指示符值与返回地址一起被推送至堆栈。在从子例程返回时,指示符值被从堆栈中弹出并被存储于状态寄存器74中,并且返回地址被存储于程序计数器中。
图7示出了说明根据本发明实施例的用于对指令进行译码的方法。指令在译码器处被接收,且该译码器根据指令的操作码来判断该指令是否源自于基本指令集。如果指令源自于基本指令集,则译码器根据基本指令集译码规则对指令进行译码。如果指令并非源自于基本指令集,则该指令必定源自于进阶指令集,所以译码器读取状态寄存器中的指示符值以判定此指令源自于哪个进阶指令集。随后,译码器根据此指示符值所指示的译码规则对该指令进行译码。
图8指示出了根据本发明实施例的在处理指令时执行的方法的步骤。最初,指令集更新指令被接收,且指示符值被响应于此指令而设置。响应此指示符值,源自进阶指令集编码空间的指令被根据该指示符所标识的译码规则而译码。
分支指令随后被接收,并且当前指示符值以及返回地址被存储。随后跳至该分支所指示的指令并执行后续指令。这些指令包括更新该指示符值的指令,因而该指示符值被更新。当指示从该分支返回时,指示符值从所存储的值恢复为该分支之前的值,而返回地址也被从储存装置中撷取并被用以重置程序计数器。
图9示出了可被使用的虚拟机实现。虽然前述实施例通过支持相关技术的用于操作特定处理硬件的设备和方法来实现本发明,但是也可提供硬件装置的所谓虚拟机实现。这些虚拟机实现在主机处理器530上运行,所述主机处理器530运行支持虚拟机程序510的主机操作系统520。一般,需要大型高速处理器来提供以合理速度执行的虚拟机实现,但此方式在某些情形中可被证明是合理的,例如当出于兼容性或重复使用的原因而希望运行另一处理器处的程序代码时。虚拟机程序510提供至应用程序500的应用程序接口,其中该应用程序接口与真实硬件所提供的应用程序接口相同,该真实硬件是虚拟机程序510所模拟的装置。因此,包括对于前述存储器存取的控制在内的程序指令可使用虚拟机程序510于应用程序500中加以执行,以模拟它们与虚拟机硬件之间的互动。
本发明的各种进一步的方面和特征在所附权利要求中被限定。在不脱离本发明的范围的条件下,可以对前面描述的实施例做出各种修改。
Claims (20)
1.一种数据处理设备,包括:
指令译码器,用于对指令进行译码;以及
处理器,用于响应于指令译码器所译码的指令而处理数据;
所述指令译码器被配置为对来自多个不同指令集的指令进行译码,所述指令集包括基本指令集以及至少一个进阶指令集;
所述基本指令集包括多个指令,所述基本指令集中的每个指令包含用于唯一地标识所述指令的预定操作码,并且所述至少一个进阶指令集包括多个指令,所述至少一个进阶指令集中的每个指令包含用于标识所述至少一个进阶指令集中的所述指令的操作码;
所述指令译码器被配置为当操作时一直能够存取基本译码规则集合并且能够进一步存取由指示所述至少一个进阶指令集中的哪个进阶指令集当前将被译码的指示符值所判定的译码规则集合,从而使得所述指令译码器被配置为根据所述基本译码规则集合对具有多个预定操作码中的一个预定操作码的指令进行译码,以及根据由指示所述至少一个进阶指令集中的哪个进阶指令集当前将被译码的所述指示符值所判定的所述译码规则集合对具有所述至少一个进阶指令集的所述操作码中的一个操作码的指令进行译码。
2.如权利要求1所述的数据处理设备,其中所述指令译码器被配置为对至少二个进阶指令集进行译码,所述至少二个进阶指令集至少具有一些共同的操作码。
3.如任一前述权利要求所述的数据处理设备,其中所述数据处理设备包括状态寄存器,用于存储所述指示符值。
4.如权利要求3所述的数据处理设备,其中所述指令译码器响应于指令集更新指令,将存储于所述状态寄存器中的所述指示符值设置为所述指令中指定的值,所述指令集更新指令为来自所述基本指令集的指令。
5.如权利要求1所述的数据处理设备,其中所述处理器被配置为响应于指示程序流将要分支的分支指令,存储返回地址和所述指示符值,从而使得在从所述分支返回时所述返回地址和指示符值能够被恢复。
6.如权利要求5所述的数据处理设备,其中所述数据处理设备被配置为在所述分支之前重置所述指示符值。
7.如权利要求5所述的数据处理设备,其中所述返回地址和指示符值被存储于相同的链接寄存器中。
8.如权利要求7所述的数据处理设备,其中所述链接寄存器的较高有效位存储所述指示符值,并且所述链接寄存器的较低有效位存储所述返回地址。
9.如权利要求7所述的数据处理设备,其中所述返回地址和指示符值响应于所述分支而被存储到堆栈,并且在从所述分支返回时被从所述堆栈读出。
10.如权利要求1所述的数据处理设备,所述指令译码器响应于指示所述至少一个进阶指令集中的一个进阶指令集的所述指示符值以及对所述至少一个进阶指令集中的具有不存在用于其的译码规则的操作码的指令的接收而生成例外。
11.如权利要求1所述的数据处理设备,所述指令译码器响应于检测到所述指示符值变换为指示所述指令译码器不具有用于其的译码规则的进阶指令集的值而生成例外。
12.如权利要求1所述的数据处理设备,其中用于所述基本指令集中的指令的所述预定操作码位于预定基本编码空间中,并且所述至少一个进阶指令集的所述操作码位于预定延伸编码空间中。
13.如权利要求1所述的数据处理设备,其中多个不同的指示符值标识所述至少一个进阶指令集中的一个进阶指令集。
14.一种对来自不同指令集的指令进行译码的方法,包括:
接收指令;
当所述指令的操作码为来自基本指令集的指令的操作码时,根据用于所述基本指令集的译码规则对所述指令进行译码;以及
当所述指令的所述操作码为来自至少一个进阶指令集的指令的操作码时,根据指示符值所判定的译码规则集合对所述指令进行译码,其中所述指示符值指示所述至少一个进阶指令集中的哪个进阶指令集当前将被译码。
15.一种根据权利要求14对来自不同指令集的指令进行译码并处理译码后的指令的方法,包括响应于对指令集更新指令的接收而执行以下步骤:
根据用于所述基本指令集的译码规则对所述指令进行译码;以及
响应于译码后的指令集更新指令,将状态寄存器中的所述指示符值设置为所述译码后的指令所指示的值。
16.如权利要求14或15所述的方法,其中响应于对指示程序流将分支的分支指令的接收:
存储返回地址和所述指示符值的当前值,从而使得在从所述分支返回时所述返回地址和指示符值能够被恢复。
17.如权利要求16所述的方法,其中所述存储所述返回地址和指示符值的步骤包括:将所述指示符值存储于相同的链接寄存器中。
18.如权利要求16所述的方法,其中所述存储所述返回地址和指示符值的步骤包括:将所述指示符值存储到堆栈,并且响应于从分支指令返回而从所述堆栈读取所述指示符值。
19.如权利要求14所述的方法,包括响应于指示所述至少一个进阶指令集中的一个进阶指令集的所述指示符值以及对所述至少一个进阶指令集中的具有不存在用于其的译码规则的操作码的指令的接收而生成例外的步骤。
20.如权利要求14所述的方法,包括响应于检测到所述指示符值变换为指示指令译码器不具有用于其的译码规则的进阶指令集的值而生成例外的步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1017177.5 | 2010-10-12 | ||
GB1017177.5A GB2484489A (en) | 2010-10-12 | 2010-10-12 | Instruction decoder using an instruction set identifier to determine the decode rules to use. |
PCT/GB2011/051848 WO2012049475A1 (en) | 2010-10-12 | 2011-09-29 | Decoding instructions from multiple instruction sets |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103154883A CN103154883A (zh) | 2013-06-12 |
CN103154883B true CN103154883B (zh) | 2016-08-31 |
Family
ID=43304420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180048887.6A Active CN103154883B (zh) | 2010-10-12 | 2011-09-29 | 对来自多个指令集的指令进行译码 |
Country Status (10)
Country | Link |
---|---|
US (1) | US9753730B2 (zh) |
EP (1) | EP2628074B1 (zh) |
JP (1) | JP2013539883A (zh) |
KR (1) | KR101799764B1 (zh) |
CN (1) | CN103154883B (zh) |
GB (1) | GB2484489A (zh) |
IL (1) | IL225159A (zh) |
MY (1) | MY158864A (zh) |
TW (1) | TWI506544B (zh) |
WO (1) | WO2012049475A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5922353B2 (ja) | 2011-08-22 | 2016-05-24 | サイプレス セミコンダクター コーポレーション | プロセッサ |
DE102012010102A1 (de) * | 2012-05-22 | 2013-11-28 | Infineon Technologies Ag | Verfahren und Vorrichtung zur Datenverarbeitung |
CN104424128B (zh) * | 2013-08-19 | 2019-12-13 | 上海芯豪微电子有限公司 | 变长指令字处理器系统和方法 |
CN103761071B (zh) * | 2014-01-08 | 2017-07-18 | 东南大学 | 一种plc的指令编码及识别系统 |
US9772850B2 (en) | 2014-11-14 | 2017-09-26 | Intel Corporation | Morton coordinate adjustment processors, methods, systems, and instructions |
US9772848B2 (en) | 2014-11-14 | 2017-09-26 | Intel Corporation | Three-dimensional morton coordinate conversion processors, methods, systems, and instructions |
US9772849B2 (en) | 2014-11-14 | 2017-09-26 | Intel Corporation | Four-dimensional morton coordinate conversion processors, methods, systems, and instructions |
US10437596B2 (en) | 2014-11-26 | 2019-10-08 | Texas Instruments Incorporated | Processor with a full instruction set decoder and a partial instruction set decoder |
US10115175B2 (en) | 2016-02-19 | 2018-10-30 | Qualcomm Incorporated | Uniform predicates in shaders for graphics processing units |
GB2551548B (en) * | 2016-06-22 | 2019-05-08 | Advanced Risc Mach Ltd | Register restoring branch instruction |
CN111273945A (zh) * | 2018-12-05 | 2020-06-12 | 展讯通信(上海)有限公司 | 指令译码器批处理设计方法及装置 |
US12175247B2 (en) * | 2021-06-25 | 2024-12-24 | Intel Corporation | Apparatuses, methods, and systems for instructions for a hardware assisted heterogeneous instruction set architecture dispatcher |
CN114880030A (zh) * | 2022-05-16 | 2022-08-09 | 海光信息技术股份有限公司 | 一种指令译码方法及装置、电子设备、存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
CN101627366A (zh) * | 2007-03-14 | 2010-01-13 | 高通股份有限公司 | 用以预加载来自除当前执行的指令集之外的指令集的指令的系统、方法及软件 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2289353B (en) * | 1994-05-03 | 1997-08-27 | Advanced Risc Mach Ltd | Data processing with multiple instruction sets |
GB2289354B (en) | 1994-05-03 | 1997-08-27 | Advanced Risc Mach Ltd | Multiple instruction set mapping |
GB2307072B (en) | 1994-06-10 | 1998-05-13 | Advanced Risc Mach Ltd | Interoperability with multiple instruction sets |
US5968162A (en) * | 1996-04-02 | 1999-10-19 | Advanced Micro Devices, Inc. | Microprocessor configured to route instructions of a second instruction set to a second execute unit in response to an escape instruction |
US5925124A (en) * | 1997-02-27 | 1999-07-20 | International Business Machines Corporation | Dynamic conversion between different instruction codes by recombination of instruction elements |
US6014735A (en) * | 1998-03-31 | 2000-01-11 | Intel Corporation | Instruction set extension using prefixes |
TW477936B (en) * | 1998-12-29 | 2002-03-01 | Ind Tech Res Inst | Instruction folding method and device used in a stack machine |
US7941647B2 (en) * | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
US20020004897A1 (en) * | 2000-07-05 | 2002-01-10 | Min-Cheng Kao | Data processing apparatus for executing multiple instruction sets |
EP1387252B1 (en) * | 2002-07-31 | 2019-02-13 | Texas Instruments Incorporated | Instruction prefix to indicate system commands |
JP3805314B2 (ja) | 2003-02-27 | 2006-08-02 | Necエレクトロニクス株式会社 | プロセッサ |
GB2414308B (en) | 2004-05-17 | 2007-08-15 | Advanced Risc Mach Ltd | Program instruction compression |
US8281109B2 (en) * | 2007-12-27 | 2012-10-02 | Intel Corporation | Compressed instruction format |
JP2009181312A (ja) | 2008-01-30 | 2009-08-13 | Toshiba Corp | プロセッサ |
-
2010
- 2010-10-12 GB GB1017177.5A patent/GB2484489A/en not_active Withdrawn
-
2011
- 2011-09-19 TW TW100133629A patent/TWI506544B/zh active
- 2011-09-23 US US13/200,322 patent/US9753730B2/en active Active
- 2011-09-29 EP EP11767047.1A patent/EP2628074B1/en active Active
- 2011-09-29 JP JP2013533281A patent/JP2013539883A/ja active Pending
- 2011-09-29 CN CN201180048887.6A patent/CN103154883B/zh active Active
- 2011-09-29 KR KR1020137009938A patent/KR101799764B1/ko active Active
- 2011-09-29 WO PCT/GB2011/051848 patent/WO2012049475A1/en active Application Filing
- 2011-09-29 MY MYPI2013700507A patent/MY158864A/en unknown
-
2013
- 2013-03-11 IL IL225159A patent/IL225159A/en active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
CN101627366A (zh) * | 2007-03-14 | 2010-01-13 | 高通股份有限公司 | 用以预加载来自除当前执行的指令集之外的指令集的指令的系统、方法及软件 |
Also Published As
Publication number | Publication date |
---|---|
GB2484489A (en) | 2012-04-18 |
JP2013539883A (ja) | 2013-10-28 |
TWI506544B (zh) | 2015-11-01 |
KR101799764B1 (ko) | 2017-12-20 |
EP2628074A1 (en) | 2013-08-21 |
WO2012049475A1 (en) | 2012-04-19 |
EP2628074B1 (en) | 2014-08-06 |
CN103154883A (zh) | 2013-06-12 |
US20120089818A1 (en) | 2012-04-12 |
KR20130101060A (ko) | 2013-09-12 |
TW201224921A (en) | 2012-06-16 |
IL225159A (en) | 2016-12-29 |
US9753730B2 (en) | 2017-09-05 |
GB201017177D0 (en) | 2010-11-24 |
MY158864A (en) | 2016-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103154883B (zh) | 对来自多个指令集的指令进行译码 | |
US9298467B2 (en) | Switch statement prediction | |
CN101849222B (zh) | 使用别名寻址的可变长度指令编码的实现 | |
CN101868783B (zh) | 增强的微处理器或微控制器 | |
EP3128415B1 (en) | Computing device, process control method, and process control program | |
BR112019009566A2 (pt) | aparelhos e métodos para uma arquitetura de processador | |
TW201237619A (en) | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads | |
KR20150052125A (ko) | 상태 기계 엔진들에서의 지시 삽입 | |
CN107608750A (zh) | 状态机晶格中的计数器操作 | |
JP2015522196A5 (zh) | ||
KR20160031503A (ko) | 마이크로프로세서에서의 선택적 리네이밍을 위한 방법 및 장치 | |
DE60206555T2 (de) | Fehlererkennung von Austauschdaten | |
US5375213A (en) | Address translation device and method for managing address information using the device | |
CN101868780B (zh) | 增强的微处理器或微控制器 | |
CN100524220C (zh) | 在多指令集系统中对未处理操作的处理 | |
US9804853B2 (en) | Apparatus and method for compressing instruction for VLIW processor, and apparatus and method for fetching instruction | |
CN102681819B (zh) | 实现灵活且低成本的指令替换方法及装置 | |
US10120687B2 (en) | Programmable controller | |
US8332596B2 (en) | Multiple error management in a multiprocessor computer system | |
CN109313603B (zh) | 诊断数据采集 | |
US9348591B2 (en) | Multi-level tracking of in-use state of cache lines | |
CN109144572A (zh) | 指令执行方法和处理器 | |
CN109714756A (zh) | Profile数据包处理方法及装置、嵌入式SIM卡 | |
CN107122255B (zh) | 用于生成程序代码的方法和工具 | |
US7415602B2 (en) | Apparatus and method for processing a sequence of jump instructions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |