CN1806225A - 在具有多指令集的数据处理设备内的指令编码 - Google Patents

在具有多指令集的数据处理设备内的指令编码 Download PDF

Info

Publication number
CN1806225A
CN1806225A CNA2004800165437A CN200480016543A CN1806225A CN 1806225 A CN1806225 A CN 1806225A CN A2004800165437 A CNA2004800165437 A CN A2004800165437A CN 200480016543 A CN200480016543 A CN 200480016543A CN 1806225 A CN1806225 A CN 1806225A
Authority
CN
China
Prior art keywords
instruction
instruction set
requires
instructions
pattern
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2004800165437A
Other languages
English (en)
Other versions
CN100380315C (zh
Inventor
D·J·西尔
E·C·内维尔
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 CN1806225A publication Critical patent/CN1806225A/zh
Application granted granted Critical
Publication of CN100380315C publication Critical patent/CN100380315C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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
    • 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
    • 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/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

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

Abstract

提供了支持两个指令集的数据处理设备(2)。这两个指令集共享一个公共的指令子集,包括至少一类指令,诸如所有的协处理器指令。一旦由于在存储器内的贮存次序而导致的任何差别被对例如字节序进行补偿,该公共指令子集就具有相同的指令编码。

Description

在具有多指令集的数据处理设备内的指令编码
本发明涉及数据处理系统领域。更具体地,本发明涉及具有多指令集的数据处理系统以及这样的多指令集可被编码的方式。
已经知道会向数据处理系统提供多指令集。这样的数据处理系统的例子是由英格兰,剑桥的ARM Limited公司生产的处理器核心,它既支持ARM也支持Thumb指令集。ARM指令集是32位指令集而Thumb指令集是16位指令集。虽然支持多指令集的数据处理系统允许在可代表程序操作的方式上的有利的灵活程度以及可以产生诸如改进的代码密度方面的优点,但典型地在支持该多指令集所需要的硬件量方面有增加。
从一个方面看来,本发明提供用于处理数据的设备,所述设备包括:
数据处理逻辑,用来执行数据处理操作;以及
指令译码器,用来译码规定要由所述数据处理逻辑执行的数据处理操作的程序指令,以及控制所述数据处理逻辑以执行所述数据处理操作;其中
所述指令译码器在其中第一指令集的程序指令被译码的第一模式下和在其中第二指令集的程序指令被译码的第二模式下是可操作的,所述第一指令集的程序指令子集具有对所述第二指令集的程序指令子集的公共贮存次序补偿的编码以及形成代表至少一类指令的公共指令子集,所述公共指令子集控制所述数据处理逻辑以独立于所述指令译码器是在所述第一模式下还是在所述第二模式下操作而执行相同的数据处理操作。
本发明认识到,通过安排指令集编码以使得公共子集共享相同的编码(至少在由于贮存次序,例如字节序(endianness)导致的任何变化已被补偿之后),则这样的系统在它们的实现上可被有利地简化,以及它们的操作的其它方面可被改进。作为例子,用于实施所规定的处理操作的公共译码逻辑和/公共处理逻辑可以更加容易被利用,同时支持多指令集所需要的硬件附加开销减小。
在本发明的优选实施例中,被包括在该公共指令子集内的该类指令(类例如被认为是具有类似的功能性的一组指令集,诸如装载/存储指令、乘法指令等等)包括协处理器指令,以使得相同的协处理器逻辑可被第一指令集和第二指令集使用。这特别有利,因为存在有许多协处理器设计以及它们可能只为一个指令集开发,而通过另一个指令集来重用这个相同的协处理器设计的能力代表显著的优点。当所有的协处理器指令处在公共子集内以使得一组公共的协处理器的全部互操作性可以被提供以任一个指令集时,这是特别优选的。
可是将会理解,第一指令集和第二指令集可以具有许多不同的特性,优选地第一指令集是一个固定长度指令集,便利地有32位或16位指令,而第二指令集是是可变长度指令集。
将会看到,虽然公共指令子集执行公共数据处理操作,但情况并不一定是这些公共数据处理操作将总是产生相同的结果数据值。这并不有损于上述的硬件节省和其它优点,但这可能是与某些数据值有关联的特定特性的结果,这些数据值取决于正在利用哪个指令集而要被用作为输入操作数。可能具有指令集特定的特性的、用作输入操作数的数据值的例子是:程序计数值,该程序计数值可相对于正执行的指令而被保持,取决于所使用的指令集而具有不同的值;和/或程序状态寄存器值,该程序状态寄存器值可以保有指示哪个指令集正在被使用的一个或多个比特,以及因此取决于哪个指令集正被使用而具有不同的值。
从另一方面看来,本发明提供一种处理数据的方法,所述方法包括以下步骤:
通过数据处理逻辑来执行数据处理操作;以及
通过指令译码器来译码规定要由所述数据处理逻辑执行的数据处理操作的程序指令,以及控制所述数据处理逻辑来执行所述数据处理操作;其中
在第一模式下第一指令集的程序指令被译码和在第二模式下第二指令集的程序指令被译码,所述第一指令集的程序指令子集对所述第二指令集的程序指令子集的公共贮存次序补偿的编码以及形成代表至少一类指令的公共指令子集,所述公共指令子集控制所述数据处理逻辑以独立于所述指令译码器是在所述第一模式下还是在所述第二模式下操作而执行相同的数据处理操作。
从再一方面看来,本发明提供具有计算机程序的计算机程序产品,该计算机程序用来控制一数据处理设备,该数据处理设备包含可操作以执行数据处理操作的数据处理逻辑,所述计算机程序包括:
第一指令集的程序指令和第二指令集的程序指令,其控制所述数据处理逻辑来执行所述数据处理操作;其中
所述第一指令集的程序指令子集具有对所述第二指令集的程序指令子集的公共贮存次序补偿的编码,以及形成代表至少一类指令的公共指令子集,所述公共指令子集控制数据处理逻辑以独立于正译码所述第一指令集的指令还是所述第二指令集的指令来执行相同的数据处理操作。
现在参照附图仅仅借助于示例来描述本发明的实施例,其中:
图1示意地例示使用多指令集且具有相关联的协处理器的数据处理设备;
图2例示在Thumb指令集中BL和BLX指令的编码;
图3例示在Thumb指令集的增强版本中如何互相区分16位和32位指令的编码;
图4例示在ARM指令集中协处理器指令的编码;
图5例示在Thumb指令集的增强版本中无条件协处理器指令的编码;
图6例示在ARM指令集和增强的Thumb指令集中无条件CDP协处理器指令的贮存次序的差别;
图7例示可藉以设计用于ARM和Thumb指令集的指令译码器的方式;
图8例示可藉以设计用于ARM和Thumb指令集的指令译码器的第二种方式;
图9例示图8的指令译码器如何被修正来译码ARM和增强的Thumb指令集;以及
图10示意地例示可以按照上述的技术来实施程序指令的通用计算机的结构。
图1显示一个数据处理设备2。数据处理设备2包括处理器核心3,该处理器核心3包括寄存器存储体4、乘法器6、移位器8、加法器10、指令译码器12(包括一个公共子集指令译码器13)、指令预取缓冲器14、指令预取单元16和程序状态寄存器18。在寄存器存储体4内的一个寄存器是程序计数寄存器20,它存储一个地址值,该地址值与当前正执行的程序指令的地址值有预定关系。这个关系可以根据在现时正使用哪个指令集而变化,例如当前指令地址加4,当前指令地址加8等等。将会看到,虽然图1上只显示一个协处理器,但可以附着多个协处理器,同时通过每个协处理器指令中的协处理器号码字段来区分计划由不同的协处理器执行的指令。
协处理器22被耦合到处理器核心3以及与处理器核心3共享指令字和数据字。协处理器22响应于在由指令预取单元16取装的指令流内的协处理器指令。
协处理器指令由处理器核心3结合协处理器22来执行。在例示的设备中,协处理器22具有内部寄存器存储体和内部数据处理逻辑。协处理器指令由公共子集指令译码器12识别,以及连同确定协处理器指令要何时被执行的控制信号一起传送到协处理器。
某些协处理器指令从协处理器的内部寄存器存储体读出它们所有的操作数和把它们所有的结果写入到协处理器的内部寄存器存储体,且因此不需要与处理器核心3进行进一步的交互。其它协处理器指令需要数据值被送到协处理器22。这些数据值的可能的源包括寄存器存储体4、程序状态寄存器18和存储器(未示出)。在例示的设备中,处理器核心3从想要的位置得到这样的数据值以及把它们经由数据接口D传送到协处理器22。再一个协处理器指令把由协处理器22产生的数据值传送到协处理器22外部的目的地,诸如寄存器存储体4、程序状态寄存器18和存储器。在例示的设备中,这样的数据值经由数据接口D传送到处理器核心3,它把这些数据值写入到期望的目的地。
将会看到,对这种类型的协处理器操作的许多变例是可能的以及它们被包括在本技术内。例如,协处理器22可能缺乏内部寄存器存储体,这样,它的内部数据处理逻辑总是对经由数据接口D从处理器核心3传送的数据值动作以及把它的结果值经由数据接口D发回处理器核心3。第二个例子是协处理器22可能具有一个单独的到存储器的接口,这样,它可以从存储器装载数据值,以及把数据值存储到存储器,而不牵涉到处理器核心3。在这种情形下,数据接口D只被使用于来自或去往处理器核心3内的位置(诸如寄存器存储体4和程序状态寄存器18)的数据值。替换地,数据接口D可以整个省略,这样,数据值可以只在处理器核心3与协处理器22之间传送,这是通过首先从其中一个把数据值存储到存储器然后再把数据值从存储器装载到另一个而进行的。
将会看到,在操作中,从存储器(未示出)内的存储器地址取装程序指令,且将其送到指令预取缓冲器14。当程序指令到达指令预取缓冲器14内的译码级时,指令译码器12译码这些指令且生成控制信号,这些控制信号被加到处理器核心3内的处理逻辑,以及按需要加到协处理器22,以便控制这些其它的单元来执行规定的数据处理操作。处理器核心3可以在第一模式下和第二模式下操作,在第一模式中进行第一指令集译码,而在第二模式中进行第二指令集译码。指示处理器核心3处于哪一模式的一种方式是使用在程序状态寄存器18之一内的标志值。取决于哪个指令集当前是工作的,指令译码器12将按照当前工作的指令集和它的编码来解译所接收的指令。按照本技术,被支持的两个指令集共享用于公共的指令子集的公共编码,包括至少一类指令,诸如所有的无条件协处理器指令,由此使能容易地重用相同的物理硬件来实施那些公共的处理操作。将会看到,来自不同指令集的程序指令的贮存次序可以变化,诸如由于字节序差别、指令字尺寸差别等等而导致,但一旦这样的贮存次序差别已被补偿,公共的指令子集就共享编码,正如后面将讨论的。
在此示例的实施例中,处理器核心3支持两个指令集,ARM指令集和Thumb指令集的增强版本(有关现有的ARM和Thumb指令集的细节,参见ARM结构参考手册)。对Thumb指令集的增强包括对它的BL和BLX指令的改变,这使它有可能加上很大数量的32位指令。
在对Thumb指令集增强之前,它的BL和BLX指令由在图2所示形式的指令流中两个接连的半字组成。在有效的程序中,其最高有效的5个比特是11101,11110或11111的指令半字只以这两种形式的配对出现。BL和BLX之外的所有其它指令由其最高有效的5个比特是处在00000到11100的范围中的单个半字组成。
一种实施方案可以接连地执行BL或BLX指令的两个半字,以及这样执行它们的组合的效果产生了BL或BLX指令的想要的效果,它是要执行对Thumb子例程(对于BL)或ARM子例程(BLX)的子例程调用。更精确地,它是要分支到目标地址,在指令是BLX的情况下切换到ARM指令集,以及在寄存器14中放置一个指向跟随第二半字的指令的指针,寄存器14在ARM/Thumb指令集结构中是子例程链路寄存器。被调用的子例程可以通过分支到这个指针而返回。
替换地,一个实施方案可以一起译码这两个半字为32位指令以及直接执行BL或BLX指令的想要的效果。在Thumb指令集的未增强版本中,这是一种允许更有效地执行BL或BLX指令的优化,但不是必不可少的。
Thumb指令集的增强版本改而需要(在要被描述的条件下)来自指令流的两个接连的半字被作为32位指令对待,而不作为要互相顺序地执行的两个16位半字对待。具体地,如图3所示,如果要被执行的下一个半字的最高5比特取数值00000到11100的任何值,则它被作为16位指令对待。如果它们取数值11101,11110和11111中的一个值,则它和以后的半字一起被作为32位指令对待。所以需要所有存在的BL和BLX指令被作为32位指令被对待。
未增强的Thumb指令集的所有指令在增强版本中仍旧是可得到的,BL和BLX作为32位指令,以及所有其它指令作为16位指令。比较图2与图3,很明显,可用的32位指令中只有一小部分是BL和BLX指令。其它的32位指令可在增强版本中使用,以提供在未增强版本中不存在的附加功能性。具体地,ARM指令集包含在未增强Thumb指令集中不可得到的许多组指令,以及除BL和BLX之外的32位指令可被使用来在增强的Thumb指令集中提供那些指令的Thumb等价物。
协处理器指令是这样的一组指令的例子:它们存在于ARM指令集中,但在Thumb指令集的未增强版本中没有等价物。ARM指令是32位字;当这样的指令的比特[27:24]取数值1100,1101和1110中的一个数值时,该指令是一个协处理器指令。图4显示了这些指令的主要的组,它们是:
把数据值从存储器传送到协处理器的LDC指令;
把数据值从协处理器传送到存储器的STC指令;
把数据值从处理器核心寄存器传送到协处理器中的MCR指令;
把两个数据值从处理器核心寄存器传送到协处理器中的MCRR指令;
把数据值从协处理器传送到处理器核心寄存器的MRC指令;
把两个数据值从协处理器传送到处理器核心寄存器的MRRC指令;
在协处理器内执行不需要把数据值传入或传出协处理器的操作的CDP指令;
在处理器核心3中引起一个未定义的指令例外的未定义指令。
所有的这些协处理器指令包含cpnum字段,它标识该指令打算用于的协处理器;和cond字段。Cond字段的数值对于无条件的协处理器指令是1110或1111,而在范围0000到1101的数值产生对于cond=1110的等价指令的有条件版本。(对于cond=1111的无条件指令不具有有条件版本。)
所有的这些协处理器指令可以通过使用上述的技术在数据处理设备2上执行。
对于无条件ARM协处理器指令的等价指令在如图5所示的增强的Thumb指令集中被编码。把它与图4进行比较,并且注意到对于无条件ARM指令cond=1110或1111,将会理解,除了贮存次序考虑以外,每个无条件Thumb协处理器指令的编码等同于等价的ARM协处理器指令的编码。而且,所有这些无条件Thumb协处理器指令具有其中HW1[15:11]=11101或11111的编码,且因此按照图3所例示的规则是32位指令。
贮存次序考虑由以下事实引发,即:ARM指令字和Thumb指令半字正常地是按小尾(litt1e-endian)次序被存储,即,使它们的最低有效字节在最低的存储器地址。作为例子,其存储器地址是A的ARM无条件CDP指令将被保持在地址A,A+1,A+2,A+3处的四个字节中,正如图6的左边显示的。在增强的Thumb指令集中的等价指令将通过在地址A处的第一半字HW1和在地址A+2处的第二半字HW2被保持,且这样将导致指令被保持在四个字节中,如图6的右边显示的。比较这两边,Thumb指令由与ARM指令相同的字节组成,但是是以不同的贮存次序:在地址A和A+2处的字节互相相对地交换,在地址A+1和A+3处的字节也这样交换。将会看到,不管精确的指令类型如何,对于所有的无条件协处理器指令将在贮存次序上存在相同的差别。
增强的Thumb指令集是可变长度指令集,包含16位和32位指令。在译码这样的指令集时的第一步骤是识别在指令预取缓冲器14中的各个指令。在本实施例中,在指令预取缓冲器14中的每个项目是由指令预取单元16先前从存储器取装的字对准的字。把在缓冲器的头处的项目表示为WORD1和把下一个项目表示为WORD2,被送到指令译码器12的指令由以下规则确定:
  当前的指令集   指令地址mod 4   WORD1[15:11]   WORD1[31:26]   发送到译码器的指令比特[31:16]比特[15:0]
  ARM   总是0   任意   任意   WORD1[31:16]WORD1[15:0]
  Thumb   0   00000-11100   任意   0 WORD1[15:0]
  Thumb   0   11101-11111   任意   WORD1[15:0]WORD1[31:16]
  Thumb   2   任意   00000-11100   0 WORD1[31:16]
  Thumb   2   任意   11101-11111   WORD1[31:16]WORD2[15:0]
这以被补偿的贮存次序把正确的指令发送到指令译码器12。它总是作为32位发送,对于16位Thumb指令,最高有效的16位是零。将会看到,对于Thumb指令集,不需要单独的比特来告知指令译码器12该指令是16位指令还是32位指令:被发送到指令译码器12的32位的最高有效位对于16位指令总是0而对于32位指令总是1。
将会看到,处理器核心实施方案在它们如何预取指令和它们一次译码多少指令方面变化很大,所以,识别各个指令的这个方法将需要按照处理器核心实施方案的这些和其它方面被修正。
实施指令译码器12有两种普通的现有方式,使得指令译码器可以处理ARM和Thumb指令集。在一个如图7所示的方法中,Thumb到ARM转换器包含把每个Thumb指令转换成相应的ARM指令的逻辑。如果正在执行ARM码,则复用器选择原始指令,或者如果正在执行Thumb码,则复用器选择转换的指令。然后通过ARM译码器对复用器的输出译码。
指令译码器12的这个形式可被修正为:通过在原始指令的比特[27:24]是1100,1101,或1110(这些比特对于16位Thumb指令将总是0000,以及对于非协处理器32位Thumb指令是1100、1101或1110之外的某个数值)的情况下、使得Thumb到ARM转换器把原始指令无改变地传送到复用器,而译码已被包括在增强的Thumb指令集中的无条件协处理器指令。将会看到,增强的Thumb指令集可包含除BL、BLX和无条件协处理器指令以外的另外的32位指令;如果这样,则还将对Thumb到ARM转换器作出进一步修正,以处理这些指令。
实施指令译码器12的第二个普通的现有方式是将单独的译码器用于ARM和Thumb指令集,正如图8所示的。复用器然后在正执行ARM代码的情况下被使用来选择ARM译码器的输出,或在正执行Thumb代码的情况下被使用来选择Thumb译码器的输出。
指令译码器12的这个形式可被修正为通过把ARM译码器分割成译码协处理器指令的一部分和译码非协处理器ARM指令的一部分,而译码该无条件协处理器指令,如图9所示。如果增强的Thumb指令集包含除BL、BLX和无条件协处理器指令以外的另外的32位指令,则非协处理器Thumb译码器被修正来处理它们。最后的复用器然后在指令的比特[27:24]是1100,1101或1110的情况下选择协处理器译码器的输出;否则,如果正在执行ARM代码,则它们选择非协处理器ARM译码器的输出,或者如果正在执行Thumb代码,则选择非协处理器Thumb译码器的输出。
在指令译码器12的第一种形式中,公共子集指令译码器13是ARM译码器的译码协处理器指令的那个部分。在第二形式中,它是协处理器译码器。
对在ARM和增强的Thumb指令集中的无条件协处理器指令使用公共贮存次序补偿的编码,在减小所需要的逻辑的量和消耗的功率量方面,与在每个指令集中使用不同的编码相比,对两种形式的指令译码器12都具有很大的优点。另一个优点是,协处理器22只需要能够执行与在对Thumb指令集增强之前它能够执行的相同的指令。除了避免由协处理器需要的逻辑和它们消耗的功率的增加以外,这也意味着现有的协处理器不需要被修正以便从增强的Thumb指令集可用。
将会看到,上述的技术可被修正以在设计内的其它地方,诸如在图7的Thumb到ARM转换器内,执行贮存次序补偿,以及像任何其它逻辑设计那样,它可被变形成许多逻辑上等价的设计。本技术包括所有这样的修正和变形。
图10示意地例示可以按照上述的技术实施程序指令的通用计算机200。该通用计算机200包括中央处理单元202、随机存取装储器204、只读存储器206、网络接口卡208、硬盘驱动210、显示驱动器212、和监视器214以及具有键盘218和鼠标220的用户输入/输出电路216,它们全部经由公共总线222连接。在操作时,中央处理单元202将执行计算机程序指令,这些程序指令可被存储在随机存取装储器204、只读存储器206和硬盘驱动210中的一个或多个或经由网络接口卡208被动态地下载。所执行的处理的结果可以经由显示驱动器212和监视器214被显示给用户。用于控制通用计算机200的操作的用户输入可以经由用户输入输出电路216从键盘218或鼠标220被接收。将会看到,计算机程序可以以各种不同的计算机语言被写入。计算机程序可被存储在和被分布在记录媒体上或被动态地下载到通用计算机200。当在适当的计算机程序的控制下工作时,通用计算机200可执行上述的技术,以及可被认作为形成用于执行上述技术的设备。通用计算机200的结构可以很大地变化以及图10只是一个例子。

Claims (33)

1.用于处理数据的设备,所述设备包括:
数据处理逻辑,用来执行数据处理操作;以及
指令译码器,用来译码规定要由所述数据处理逻辑执行的数据处理操作的程序指令,以及控制所述数据处理逻辑以执行所述数据处理操作;其中
所述指令译码器可在第一指令集的程序指令被译码的第一模式下和在第二指令集的程序指令被译码的第二模式下操作,所述第一指令集的程序指令子集具有对所述第二指令集的程序指令子集的公共贮存次序补偿的编码以及形成代表至少一类指令的公共指令子集,所述公共指令子集控制所述数据处理逻辑以便独立于所述指令译码器是在所述第一模式下还是在所述第二模式下操作而执行相同的数据处理操作。
2.如在权利要求1中要求的设备,其中所述指令译码器用来使用所述数据处理逻辑的公共部分去执行所述公共指令子集的指令。
3.如在权利要求1和2的任一项中要求的设备,其中所述公共指令子集包括一类指令,它们是可操作以通过使用所述第一指令集和所述第二指令集共有的协处理器逻辑而控制协处理器数据处理操作的协处理器指令。
4.如在权利要求3中要求的设备,其中所有的无条件协处理器指令是在所述公共子集内。
5.如在前述权利要求的任一项中要求的设备,其中所述第一指令集是N比特指令的固定长度的指令集。
6.如在权利要求5中要求的设备,其中N是32或16之一。
7.如在前述权利要求的任一项中要求的设备,其中所述第二指令集是可变长度指令集。
8.如在前述权利要求的任一项中要求的设备,其中在所述公共指令子集内的至少一个程序指令在所述第一模式或所述第二模式下执行公共数据处理操作,但取决于所述指令译码器是在所述第一模式下还是在所述第二模式下操作而生成不同的结果数据值。
9.如在权利要求8中要求的设备,其中生成不同的结果数据值的所述至少一个程序指令包括程序计数值作为输入操作数。
10.如在权利要求9中要求的设备,其中取决于所述指令译码器是在所述第一模式下还是在所述第二模式下操作,而在所述程序计数值与正执行的指令的地址之间保持不同的关系。
11.如在权利要求8中要求的设备,其中生成不同的结果数据值的所述至少一个程序指令包括程序状态寄存器值作为输入操作数。
12.一种处理数据的方法,所述方法包括以下步骤:
通过数据处理逻辑来执行数据处理操作;以及
通过指令译码器来译码规定要由所述数据处理逻辑执行的数据处理操作的程序指令,以及控制所述数据处理逻辑以执行所述数据处理操作;其中
在第一模式下第一指令集的程序指令被译码且在第二模式下第二指令集的程序指令被译码,所述第一指令集的程序指令子集具有对所述第二指令集的程序指令子集的公共贮存次序补偿的编码以及形成代表至少一类指令的公共指令子集,所述公共指令子集控制所述数据处理逻辑以独立于所述指令译码器是在所述第一模式下还是在所述第二模式下操作而执行相同的数据处理操作。
13.如在权利要求12中要求的方法,其中所述数据处理逻辑的公共部分被使用来执行所述公共指令子集的指令。
14.如在权利要求12和13的任一项中要求的方法,其中所述公共指令子集包括一类指令,它们是可操作以通过使用所述第一指令集和所述第二指令集共有的协处理器逻辑而控制协处理器数据处理操作的协处理器指令。
15.如在权利要求14中要求的方法,其中所有的无条件协处理器指令是在所述公共子集内。
16.如在权利要求12到15的任一项中要求的方法,其中所述第一指令集是N比特指令的固定长度的指令集。
17.如在权利要求16中要求的方法,其中N是32或16之一。
18.如在权利要求12到17的任一项中要求的方法,其中所述第二指令集是可变长度指令集。
19.如在权利要求12到18的任一项中要求的方法,其中在所述公共指令子集内的至少一个程序指令在所述第一模式或所述第二模式下执行公共数据处理操作,但取决于所述指令译码器是在所述第一模式下还是在所述第二模式下操作而生成不同的结果数据值。
20.如在权利要求19中要求的方法,其中生成不同的结果数据值的所述至少一个程序指令包括程序计数值作为输入操作数。
21.如在权利要求20中要求的方法,其中取决于所述指令译码器是在所述第一模式下还是在所述第二模式下操作,而在所述程序计数值与正执行的指令的地址之间保持不同的关系。
22.如在权利要求19中要求的方法,其中生成不同的结果数据值的所述至少一个程序指令包括程序状态寄存器值作为输入操作数。
23.一种具有计算机程序的计算机程序产品,该计算机程序用来控制包含用来执行数据处理操作的数据处理逻辑的数据处理设备,所述计算机程序包括:
第一指令集的程序指令和第二指令集的程序指令,其控制所述数据处理逻辑去执行所述数据处理操作;其中
所述第一指令集的程序指令子集具有对所述第二指令集的程序指令子集的公共贮存次序补偿的编码,以及形成代表至少一类指令的公共指令子集,所述公共指令子集控制数据处理逻辑以独立于正译码所述第一指令集的指令还是所述第二指令集的指令而执行相同的数据处理操作。
24.如在权利要求23中要求的计算机程序产品,其中所述数据处理逻辑的公共部分被使用来执行所述公共指令子集的指令。
25.如在权利要求23和24的任一项中要求的计算机程序产品,其中所述公共指令子集包括一类指令,它们是可操作以通过使用所述第一指令集和所述第二指令集共有的协处理器逻辑而控制协处理器数据处理操作的协处理器指令。
26.如在权利要求25中要求的计算机程序产品,其中所有的无条件协处理器指令是在所述公共子集内。
27.如在权利要求23到26的任一项中要求的计算机程序产品,其中所述第一指令集是N比特指令的固定长度的指令集。
28.如在权利要求27中要求的计算机程序产品,其中N是32或16之一。
29.如在权利要求23到28的任一项中要求的计算机程序产品,其中所述第二指令集是可变长度指令集。
30.如在权利要求23到29的任一项中要求的计算机程序产品,其中在所述公共指令子集内的至少一个程序指令在所述第一指令集或所述第二指令集的指令被译码时执行公共数据处理操作,但生成不同的结果数据值。
31.如在权利要求30中要求的计算机程序产品,其中生成不同的结果数据值的所述至少一个程序指令包括程序计数值作为输入操作数。
32.如在权利要求31中要求的计算机程序产品,其中取决于所述指令译码器是在所述第一模式下还是在所述第二模式下操作,而在所述程序计数值与正执行的指令的地址之间保持不同的关系。
33.如在权利要求30中要求的计算机程序产品,其中生成不同的结果数据值的所述至少一个程序指令包括程序状态寄存器值作为输入操作数。
CNB2004800165437A 2003-06-13 2004-01-20 提供多指令集和多译码模式的设备和方法 Expired - Lifetime CN100380315C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0313770.0 2003-06-13
GB0313770A GB2402764B (en) 2003-06-13 2003-06-13 Instruction encoding within a data processing apparatus having multiple instruction sets

Publications (2)

Publication Number Publication Date
CN1806225A true CN1806225A (zh) 2006-07-19
CN100380315C CN100380315C (zh) 2008-04-09

Family

ID=27636510

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004800165437A Expired - Lifetime CN100380315C (zh) 2003-06-13 2004-01-20 提供多指令集和多译码模式的设备和方法

Country Status (11)

Country Link
US (1) US7788472B2 (zh)
EP (1) EP1680735B1 (zh)
JP (1) JP3905552B2 (zh)
KR (1) KR100971626B1 (zh)
CN (1) CN100380315C (zh)
DE (1) DE602004028951D1 (zh)
GB (1) GB2402764B (zh)
MY (1) MY131744A (zh)
RU (1) RU2006101165A (zh)
TW (1) TWI314702B (zh)
WO (1) WO2004111836A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102236541A (zh) * 2010-04-22 2011-11-09 Arm有限公司 预加载指令控制
CN102436367A (zh) * 2011-09-26 2012-05-02 杭州中天微系统有限公司 16/32位混合架构指令预取缓冲器装置
CN106485318A (zh) * 2015-10-08 2017-03-08 上海兆芯集成电路有限公司 具有混合协处理器/执行单元神经网络单元的处理器

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7793078B2 (en) 2005-04-01 2010-09-07 Arm Limited Multiple instruction set data processing system with conditional branch instructions of a first instruction set and a second instruction set sharing a same instruction encoding
US7958335B2 (en) * 2005-08-05 2011-06-07 Arm Limited Multiple instruction set decoding
US8914618B2 (en) 2005-12-29 2014-12-16 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
GB2435116B (en) 2006-02-10 2010-04-07 Imagination Tech Ltd Selecting between instruction sets in a microprocessors
US7711927B2 (en) * 2007-03-14 2010-05-04 Qualcomm Incorporated System, method and software to preload instructions from an instruction set other than one currently executing
KR100922862B1 (ko) * 2007-11-14 2009-10-20 성균관대학교산학협력단 명령어의 부호화를 통한 시스템 보안방법
US8347067B2 (en) * 2008-01-23 2013-01-01 Arm Limited Instruction pre-decoding of multiple instruction sets
US8819399B1 (en) 2009-07-31 2014-08-26 Google Inc. Predicated control flow and store instructions for native code module security
US8561183B2 (en) * 2009-07-31 2013-10-15 Google Inc. Native code module security for arm instruction set architectures
US20120159127A1 (en) * 2010-12-16 2012-06-21 Microsoft Corporation Security sandbox
CN106921482B (zh) * 2017-02-17 2019-04-05 武汉斗鱼网络科技有限公司 一种基于arm指令构造数据加解密算法的方法及系统
US10261791B2 (en) * 2017-02-24 2019-04-16 International Business Machines Corporation Bypassing memory access for a load instruction using instruction address mapping
US11263014B2 (en) * 2019-08-05 2022-03-01 Arm Limited Sharing instruction encoding space between a coprocessor and auxiliary execution circuitry

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5021991A (en) * 1983-04-18 1991-06-04 Motorola, Inc. Coprocessor instruction format
US5781753A (en) * 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
DE69130673T2 (de) * 1990-06-04 1999-05-20 3Com Corp Verfahren zur software-optimierung für irgendeine einer vielfältigkeit von ändernden architekturen
JPH07281890A (ja) 1994-04-06 1995-10-27 Mitsubishi Electric Corp 命令セット及びそのマイクロコンピュータによる実行方法
GB2289354B (en) * 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Multiple instruction set mapping
GB2326253A (en) 1997-06-10 1998-12-16 Advanced Risc Mach Ltd Coprocessor data access control
JP3781519B2 (ja) * 1997-08-20 2006-05-31 富士通株式会社 プロセッサの命令制御機構
US6438678B1 (en) * 1998-06-15 2002-08-20 Cisco Technology, Inc. Apparatus and method for operating on data in a data communications system
US6282633B1 (en) 1998-11-13 2001-08-28 Tensilica, Inc. High data density RISC processor
JP2001142692A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法
US20020004897A1 (en) * 2000-07-05 2002-01-10 Min-Cheng Kao Data processing apparatus for executing multiple instruction sets
GB2376098B (en) * 2001-05-31 2004-11-24 Advanced Risc Mach Ltd Unhandled operation handling in multiple instruction set systems
US6895489B2 (en) * 2002-08-07 2005-05-17 Hewlett-Packard Development Company, L.P. System and method for operating in endian independent mode
US20040059848A1 (en) * 2002-09-23 2004-03-25 Institute For Information Industry Device for automatically switching endian order
US6968444B1 (en) * 2002-11-04 2005-11-22 Advanced Micro Devices, Inc. Microprocessor employing a fixed position dispatch unit
JP2007535613A (ja) * 2004-04-30 2007-12-06 ユニヴァーシティー オブ サザン カリフォルニア パーフルオロカーボン可溶性化合物

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102236541A (zh) * 2010-04-22 2011-11-09 Arm有限公司 预加载指令控制
CN102236541B (zh) * 2010-04-22 2016-08-03 Arm有限公司 预加载指令控制
US9632776B2 (en) 2010-04-22 2017-04-25 Arm Limited Preload instruction control
CN102436367A (zh) * 2011-09-26 2012-05-02 杭州中天微系统有限公司 16/32位混合架构指令预取缓冲器装置
CN106485318A (zh) * 2015-10-08 2017-03-08 上海兆芯集成电路有限公司 具有混合协处理器/执行单元神经网络单元的处理器
CN106485318B (zh) * 2015-10-08 2019-08-30 上海兆芯集成电路有限公司 具有混合协处理器/执行单元神经网络单元的处理器

Also Published As

Publication number Publication date
US7788472B2 (en) 2010-08-31
US20040255097A1 (en) 2004-12-16
RU2006101165A (ru) 2006-05-27
WO2004111836A2 (en) 2004-12-23
DE602004028951D1 (de) 2010-10-14
KR20060021370A (ko) 2006-03-07
WO2004111836A3 (en) 2005-11-03
JP3905552B2 (ja) 2007-04-18
MY131744A (en) 2007-08-30
EP1680735A2 (en) 2006-07-19
GB2402764A (en) 2004-12-15
GB2402764B (en) 2006-02-22
TWI314702B (en) 2009-09-11
EP1680735B1 (en) 2010-09-01
JP2006527435A (ja) 2006-11-30
TW200428277A (en) 2004-12-16
GB0313770D0 (en) 2003-07-23
KR100971626B1 (ko) 2010-07-22
CN100380315C (zh) 2008-04-09

Similar Documents

Publication Publication Date Title
CN112069459B (zh) 用于稀疏-密集矩阵乘法的加速器
US7685408B2 (en) Methods and apparatus for extracting bits of a source register based on a mask and right justifying the bits into a target register
CN1806225A (zh) 在具有多指令集的数据处理设备内的指令编码
US7287152B2 (en) Conditional execution per lane
CN112711443B (zh) 用于执行16位浮点向量点积指令的系统和方法
US7480787B1 (en) Method and structure for pipelining of SIMD conditional moves
US6247116B1 (en) Conversion from packed floating point data to packed 16-bit integer data in different architectural registers
US7017032B2 (en) Setting execution conditions
CN1279783A (zh) 利用规格字段指令编码的处理器
CN115562729A (zh) 具有带读取和读取/前进操作数编码的流引擎的数据处理设备
KR20070032723A (ko) 단일 명령, 다중 데이터 실행 엔진에 대한 조건형 명령
CN107533460B (zh) 紧缩有限冲激响应(fir)滤波处理器、方法、系统和指令
CN106575217A (zh) 位置乱处理器、方法、系统和指令
CN107851013B (zh) 数据处理装置和方法
CN108269226B (zh) 用于处理稀疏数据的装置和方法
CN100422979C (zh) 用于单指令、多数据执行引擎标志寄存器的评估单元
US7861071B2 (en) Conditional branch instruction capable of testing a plurality of indicators in a predicate register
CN1788251A (zh) 处理安全消息认证控制指令
WO2022023701A1 (en) Register addressing information for data transfer instruction
US6760822B2 (en) Method and apparatus for interleaving data streams
CN1690951A (zh) 优化的处理器和指令对准
US7003651B2 (en) Program counter (PC) relative addressing mode with fast displacement
CN1826582A (zh) 数据存取程序指令编码
CN101076778A (zh) 可编程信号处理电路和交织方法
CN1271523C (zh) 具有扩展指令的中央处理器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term

Granted publication date: 20080409

CX01 Expiry of patent term