CN1147306A - 多指令集映射 - Google Patents

多指令集映射 Download PDF

Info

Publication number
CN1147306A
CN1147306A CN95192829A CN95192829A CN1147306A CN 1147306 A CN1147306 A CN 1147306A CN 95192829 A CN95192829 A CN 95192829A CN 95192829 A CN95192829 A CN 95192829A CN 1147306 A CN1147306 A CN 1147306A
Authority
CN
China
Prior art keywords
instruction
instruction word
programmed instruction
instruction set
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.)
Granted
Application number
CN95192829A
Other languages
English (en)
Other versions
CN1088214C (zh
Inventor
D·V·贾加
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 CN1147306A publication Critical patent/CN1147306A/zh
Application granted granted Critical
Publication of CN1088214C publication Critical patent/CN1088214C/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
    • 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/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/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders

Abstract

本发明描述了一种采用多指令集的数据处理系统。程序指令字通过指令流水线(6)进入处理器核心(2),当第二指令集中的程序指令字通过指令流水线时,它们将被映射为第一指令集中的程序指令字。第二指令集中的程序指令字比第一指令集中的程序指令字的字长要小,并且第二指令集是第一指令集的子集。字长小提高了代码密度,同时,第二指令集是第一指令集的子集这一特性允许有效地实现一一映射,因而无需第二指令集专用的指令译码器。

Description

多指令集映射
本发明涉及到数据处理领域。尤其是,本发明涉及到采用多个程序指令字集的数据处理领域。
在数据处理系统的操作过程中,一个处理器核心在程序指令字的控制下工作。程序指令字在译码后用来产生核心控制信号以控制处理器中的不同单元,从而执行必要的操作以完成程序指令字中所指定的处理。
提供运行多于一个指令集的系统是众所周知的(例如,数据设备公司的VAX11计算机具有一种VAX11指令模式和一种兼容模式,该兼容模式允许VAX11计算机对早期的PDP11计算机指令进行译码)。这样的系统典型地为每个指令集都设一个独立的指令译码器。指令译码器成为比较复杂且庞大的电路元件。
集成电路所占用的空间大小是非常重要的一个方面。集成电路的规模越小,生产成本越低,产量越高.另外,额外的空间被用来做其它电路元件使用的集成电路。降低集成电路规模的措施是相当有益的。
从一方面看,本发明提供了一种处理数据的器件,所述器件含有:
一个处理器核心,用来响应大量的核心控制信号;
译码机构,用来译码第一指令集中的X-位程序指令字中的P位,从而产生所述的核心控制信号;
一条指令流水线,程序指令字通过该流水线到达所述译码机构;
第一映射机构,它响应通过所述指令流水线的第二指令集中的Y-位程序指令字,用来把所述Y-位程序指令字中的Q位映射到相应X-位程序指令字中的所述P位,以供所述译码机构译码,其中,
Y小于X,且所述第二指令集是所述第一指令集的子集。
本发明的作用靠含有指令流水线的系统来实现。当指令通过流水线时,该系统用来将第二指令集的指令映射到第一指令集。将第二指令集中的程序指令字翻译成第一指令集中的程序指令字避免了对第二指令译码器的需要,并允许将处理器核心的其余部分实现得更为简单且有效。本发明认识到,如果将第二指令集做成第一指令集的子集,那么实现一一映射是可能的并且也许能借助一种相当普通且快速的手段,以避免限制系统性能。另外,本发明还认识到,为实际地驱动译码机构,第二指令集的指令中只有某些位才有必要映射到第一指令集的指令字的对应位。这样就提高了映射的执行速度。
在较佳实施例中通过提供一个指令寄存器来提高指令译码速度。该寄存器保存一条正在被所述处理器核心执行的X-位指令,所述处理器核心从所述指令寄存器中读取操作数。
采用这种方式,指令中不需指令译码器译码而仅需处理器核心运算的操作数便可以从指令中被直接读取而不必通过指令译码器。
为了便于需要驱动译码机构的关键的P位能够迅速产生,继而产生整个X-位程序指令字以不加修改地被处理器核心使用,本发明的较佳实施例含有第二映射机构,用以将处于所述指令流水线中的所述Y-位程序指令字中的操作数映射到所述对应X-位程序指令字中的对应位置,并将所述被映射的操作数保存到所述指令寄存器中,以供所述处理器核心使用。
第二映射机构只能用来映射处理器核心所需要的那些操作数。然而,指令译码器的设计可以与处理器核心的设计有效地分隔开来,这样就便于二者将来进行不依赖于对方的变动,其前提是所述第二映射机构将所述Y-位程序指令字映射成所述对应X-位程序指令字的完整形式,并将所述对应X-位程序指令字的所述完整形式保存到所述指令寄存器中。
通常,当程序指令字通过指令流水线时,需要给译码机构加一定的时间限制。为了更容易地与现有硬件进行集成,在较佳实施例中,程序指令字经过许多处理器周期才通过所述指令流水线,其中一个周期是译码周期,在该周期操作所述译码机构,以在所述译码周期的末尾产生所述核心控制信号,同时还操作所述第一映射机构,以在所述译码周期的第一阶段产生所述对应X-位程序指令字中的所述P位,从而允许所述译码机构在所述译码周期的末尾仍能够产生所述核心控制信号。
为驱动译码机构,Y-位程序指令字中只有某些位才有必要被影射,这一特性使得上述的时间要求得到满足。
何时操作数必须可用是一个不太严格的相关要求。本发明的较佳实施例利用了这个比较宽松的要求,基于的假设是:可操作所述第二映射机构在所述译码周期的末尾将所述被映射的操作数保存到所述指令寄存器中。
使第一映射机构的操作与第二映射机构的操作做到相互独立是很有价值的。如果它们并行操作,系统总的性能将随之得到提高。
为使第二指令集中的程序指令字长度缩小,要求对可能提供的功能进行修改。最好将系统设计成这样,即:所述处理器核心带有大量的寄存器,这些寄存器被所述第一指令集使用,并被定义成某些所述X-位程序指令字中的寄存器操作数;同时,所述第二指令集使用所述寄存器的一个子集,该子集被定义成某些所述Y-位程序指令字中的寄存器操作数。
令第二指令集使用第一指令集所用寄存器的一个子集,这一特性允许在尚未取到的指令间建立一一映射,同时还能使第二指令集的指令长度缩短。
为了解决对两种指令集需采取不同的方式操纵寄存器这一问题,所述第二映射机构对所述Y-位程序指令字中的所述寄存器操作数进行扩展,以产生所述X-位程序指令字中的所述寄存器操作数。
类似地,第二指令集中的其它操作数与第一指令集中的操作数相比,表示范围较小,并且当被第二映射机构映射时,对其高位用零进行扩展。
从另一方面看,本发明提供了一种处理数据的的方法,所述方法包括下面的步骤:
一个处理器核心,用来响应大量的核心控制信号;
利用一个译码机构对第一指令集中的X-位程序指令字中的P位进行译码,从而产生核心控制信号以控制处理器核心;
使程序指令字通过一条流水线到达所述译码机构;
将通过所述指令流水线的第二指令集中Y-位程序指令字的Q位映射到相应X-位程序指令字中的所述P位,以供所述译码机构译码,其中,
Y小于X,且所述第二指令集是所述第一指令集的子集。
下面将只通过例子描述本发明的一个实施例,参考的附图如下:
图1示意了一个数据处理器件,它含有一个处理器核心和一个存贮器系统;
图2示意了具有单个指令集的系统中的一条指令和一个指令译码器;
图3示意了具有两个指令集的系统中的一条指令流水线和一个指令译码器;
图4示意了对一个X-位程序指令字的译码过程;
图5和图6示意了从Y-位程序指令字到X-位程序指令字的映射;
图7示意了一个X-位指令集;
图8示意了一个Y-位指令集;
图9示意了可用于第一指令集和第二指令集的处理寄存器。
图1示意了一个数据处理系统(由一个集成电路的一部分构成),该数据处理系统包含一个与Y-位存贮器系统4相配的处理器核心2。在这个例子中,Y等于16。
处理器核心2含有一个寄存器组6,一个Booths乘法器8,一个桶移位器10,一个32-位算术逻辑单元12和一个写数据寄存器14。在处理器核心2和存贮器系统4之间是一条指令流水线16,一个指令译码器18和一个读数据寄存器20。图中显示了作为处理器核心2一部分的一个程序计数寄存器22对存贮器系统4进行寻址。在每条指令被执行而一条新指令必须被取至指令流水线16时,一个程序计数增值器24用来增加程序计数寄存器22中的程序计数值。
处理器核心2在各功能单元之间采用了N-位数据通道(在这个例子中为32位数据通道)。在运转时,指令流水线16中的指令被指令译码器18译码,从而产生各种核心控制信号,并被传输至处理器核心2中的不同功能单元。作为对这些核心控制信号的响应,处理器核心的不同部分实施32-位处理操作,例如32-位乘法,32-位加法和32-位逻辑运算。
寄存器组6包含一个当前程序状态寄存器26和一个保存程序状态寄存器28。当前程序状态寄存器26为处理器核心2保存各种条件和状态标志。这些标志包括处理模式标志(如系统模式,用户模式,存贮器中止模式等),以及表示出现算术运算结果为零、出现进位等等的标志。保存程序状态寄存器28(可以是成组的这种保存程序状态寄存器中的一个)用来在一个异常出现而引起处理器模式切换时暂存当前程序状态寄存器26的内容。这样可以使对异常的处理更快更有效。
当前程序状态寄存器26中含有一个指令集标志T。该指令集标志被传送给指令译码器18和程序计数增值器24。当该指令集标志T被置位时,系统操作第二指令集中的指令(即Y-位程序指令字,在这个例子中为16-位程序指令字)。该指令集标志T控制程序计数增值器24,使之在第二指令集被操作时采用一个较小的增量步长。这与第二指令集的程序指令字字长较短,以至在存贮器系统4的存贮位置中,指令间具有更小间距是相一致的。
前面提到,存贮器系统4是一个16-位存贮器系统,通过16-位数据总线与读数据寄存器20和指令流水线16相连。相对于高性能的32-位存贮器系统,这种16-位存贮器系统较为简单和廉价。使用这种16-位存贮器系统,可以在一个周期内取到16-位程序指令字。然而,如果需要使用一条第二指令集中的32-位指令(由指令集标志T指示),那么,需要进行两次取指,从而还原一条32-位指令并将之提供给指令流水线16。
一旦所需的程序指令字已从存贮器系统4被还原,它们即被指令译码器18译码,同时,不管该指令是16-位指令还是32-位指令,在处理器核心2中均开始32-位处理过程。
指令译码器18在图1中被示意为一个方框。然而,为了处理一个以上的指令集,指令译码器18具有更为复杂的结构,这将结合图2和图3进行阐述。
图2示意了指令流水线16和一个处理单指令集的指令译码器18。在这个例子中,指令译码器18只含有一个第一译码机构30,用以译码32-位指令。该译码机构30使用一个可编程逻辑阵列(PLA)对第一指令集(ARM指令集)进行译码,从而产生大量的核心控制信号32并将之传输到处理器核心2。当前被译码(即:产生当前的核心控制信号32)的程序指令字还保存在一个指令寄存器34中。处理器核心2中的功能部件(如Booths乘法器8或寄存器组6)直接从这个指令寄存器34中读取各自处理操作所需的操作数。
基于这种设计下的操作过程具有这样一个特征,即:第一译码机构30要求其输入(由流水线阶段PipeC所输出的、以实线标示出的P位输入)必须在第一译码机构开始操作的时钟周期的开始阶段达到稳定。这是为了保证核心控制信号32能被及时产生,以便驱动处理器核心2中的必要部件。第一译码机构30是一个相对较大且较慢的可编程逻辑阵列结构,所以这种对时间的考虑是有重要意义的。
这种用可编程逻辑阵列结构来完成指令译码的设计是本领域中的一种传统方法。该方法首先定义一个输入集合以及由这些输入产生的所需输出,然后使用市场上已提供的软件来设计这种能够从指定的输入集合产生指定的输出集合的PLA结构。
图3示意了图2中的系统经修改后的结构,它用来完成对第一指令集和第二指令集的译码。当通过指令集标志T选择第一指令集时,系统将按照以上结合图2所介绍过的过程运转。当指令集标志T指示指令流水线16中的指令是来自第二指令集时,第二译码机构36将变为活动状态。
该第二译码机构采用一个快速PLA38和一个并行慢速PLA40对16-位指令(Thumb指令)进行译码。快速PLA38用来将16-位Thumb指令的各二进制位的一个子集(Q位)映射到用以驱动第一译码机构的对应32-位ARM指令的P位。因为仅有相对较少的位数需要进行这种映射,快速PLA38可以相对较浅,于是可以足够迅速地操作,以提供第一译码机构足够的时间来响应PipeC的内容产生核心控制信号32。可以认为快速PLA38是在为第一译码机构“伪造”一个对应32-位指令的关键位,而没有花费任何不必要的时间来映射整条指令。
然而,如果使处理器核心2在不做根本性改变和不添加重要附加电路部件的基础上能够工作时,那么完整的32-位指令仍然是需要的。在快速PLA38正在进行关键映射的同时,并行相连的慢速PLA40用来将16-位指令映射到对应的32-位指令,并将之放置于指令寄存器34中。这个更为复杂的映射将贯穿于快速PLA38和第一译码机构进行操作的整个过程之中。有一点非常重要,那就是,该32-位指令必须在指令寄存器34中就位充分长的时间,这样使得为了响应核心控制信号32对处理器核心2产生控制,任意操作数均可从指令寄存器34中读取。
比较好的情况是,图3中的系统在译码第二指令集时的全部动作是当第二指令集中的16-位指令通过指令流水线16时将其翻译成第一指令集中的32-位指令。使这一点成为现实可行的措施是:将第二指令集做成第一指令集的一个子集,以便保证在第二指令集中的指令和第一指令集中的指令之间存在一个一一映射。
提供指令集标志T使得第二指令集与第一指令集为非正交的关系。这一点在第一指令集是一个已存在的指令集,且没有任何空余位可用来使正交的其它指令集被检测和译码的情况下是特别有用的。
图4示意了一条32-位指令的译码过程。在图4上部所示的连续的处理器时钟周期中,完成了一个取操作、一个译码操作以及最后的一个执行操作。如果要执行的是一条特殊的指令(如一条乘法指令),那么需要增加一个或多个附加的周期。
一条32-位指令由许多不同的域组成。后面结合图7将要介绍,对于不同的指令,这些域的界限也将不同。
指令42中某些位要求在一个初级译码阶段被译码。这些P位是位4至7,位20,和位22至27。正是这些位被第一译码机构30所要求,且必须被快速PLA38所“伪造”。这些位必须输入到第一译码机构并在其中译码,以便在译码周期的第一阶段结束之前产生适当的核心控制信号32。如果需要的话,对整条指令的译码将持续到译码周期的末尾。在译码周期的末尾,处理器2在执行周期中从指令寄存器34中读取指令中的操作数。这些操作数可以是寄存器号、偏移量或其它变量。
图5示意了作为例子的16-位指令到32-位指令的映射。粗线起源处为16-位指令中的Q位,它们需要被映射到32-位指令中的P位,以便被输入到第一译码机构30。可以看出,这些位中的大部分或是直接被复制过去,或是经过一个简单的映射。操作数Rn,Rd和16-位指令中的立即数需要在其最高有效端用零填充,以填满32-位指令。由于32-位指令的操作数范围要比16-位指令的大,所以上述的填充是必需的。
从图5下部给出的32-位指令通用结构中可以看出,32-位指令比由16-位指令所代表的它本身的子集提供更多的灵活性。例如,32-位指令首部是条件码Cond,它使该指令成为条件可执行。相反,16-位指令中不带有任何条件码,它们所映射到的32-位指令中的条件码被置为“1110”,这个值相当于条件执行状态:“总是”。
图6示意了另一种指令映射。在这个例子中,16-位指令是一个与图5中所示指令类型不同的取数/存数指令。不过,该指令仍然是32-位指令集中简单数据传输指令的一个子集。
图7用图表方式示意了32-位指令集中的11种不同类型指令的格式。这些指令依次是:
1.数据处理PSR传输;
2.乘法;
3.简单数据交换;
4.简单数据传输;
5.未定义;
6.块数据传输;
7.分支;
8.协处理器数据传输;
9.协处理器数据操作;以及
10.协处理器寄存器传输。
11.软件中断。
对该指令集的完整说明可以在先进RISC机器有限公司(Advanced RISC Machines Limited)生产的ARM6处理器的数据表中找到。图7中所突出强调的指令是图5和图6中所示的指令。
图8示意了除32-位指令集之外的16-位指令集。在该指令集中所突出强调的指令分别在图5和图6中做了示意。该16-位指令集中的指令经过某种选择,以使它们均可被映射到单条32-位指令,从而形成该32-位指令集的一个子集。
下面所说明的格式依次对应于该指令集中各条指令。格式1:Op=0,1两种操作均置条件码标志。
   0:ADD Rd,Rs,#立即数3
   1:SUB Rd,Rs,#立即数3格式2:Op=0,1两种操作均置条件码标志。
   0:ADD Rd,Rm,Rn
   1:SUB Rd,Rm,Rn格式3:3个操作码。用来生成大的立即数。
   1=ADD Rd,Rd,#立即数8<<8
   2=ADD Rd,Rd,#立即数8<<16
   3=ADD Rd,Rd,#立即数8<<24格式4:Op给出3个操作码,所有操作均是MOVS Rd,Rs SHIFT#立
   即数5,其中SHIFT为:
   0为LSL
   1为LSR
   2为ASR
   如ARM所定义的那样,用零进行移位。格式5:Op1*8+Op2给出32个ALU操作码,Rd=Rd op Rn.所有操
   作均置条件码标志。这些操作是:
   AND,OR,EOR,BIC(AND NOT),NEGATE,CMP,CMN,
   MUL,TST,TEQ,MOV,MVN(NOT),LSL,LSR,ASR,ROR
   丢失ADC,SBC,MULL
   如ARM所定义的那样,用零进行移位并且大于31
   8个特殊操作码,LO指定寄存器0-7,HI指定寄存器8-15
   SPECLAL是CPSR或SPSR
   MOV HI,LO(移动隐藏寄存器到可见寄存器)
   MOV LO,HI(移动可见寄存器到隐藏寄存器)
   MOV HI,HI(如过程返回)
   MOVS HI,HI(如异常返回)
   MOVS HI,LO(如中断返回,可以是SUBS HI,HI,#4)
   MOV SPECLAL,LO(MSR)
   MOV LO,SPECLAL(MRS)
   CMP HI,HI(堆栈界限检查)
   8个空余操作码格式6:Op给出4个操作码,所有操作均置条件码标志
   0:MOV Rd,#立即数8
   1:CMP Rs,#立即数8
   2:ADD Rd,Rd,#立即数8
   有可能用ADD Rd,Rs,#立即数5来替换ADD指令格式7:取一个PC+偏移处的字(256字,1024字节)。注意,偏移
   必须字对齐。
   LDR Rd,[pc,#+1024]
   该指令用来访问下一个字符区,读取常数、地址等等。格式8:从SP(r7)+256个字(1024字节)中存取字
   从SP(r7)+256个字节中存取字节
   LDR Rd,[SP,#+1024)
   LDRB Rd,[SP,#+256]
   这些指令用于堆栈和框架访问格式9:以带符号的3位立即数偏移量(迟后增/减)存取字(或字节),
   强迫回写
   L代表存/取,U代表上/下(加/减偏移量),B代表字节/字
   LDR{B}Rd,[Rb],#+/-Offset3
   STR{B}Rd,[Rb],#+/-Offet3
   这些指令用于数组的访问
   偏移量编码为0-7时代表字节,编码为0,4-28时代表字格式10:以带符号的寄存器偏移量(预先增/减)存取字(或字节),无
    回写
    L代表存/取,U代表上/下(加/减偏移量),B代表字节/字
    LDR Rd,[Rb,+/-Ro,LSL#21
    STR Rd,[Rb,+/-R0,LSL#2]
    LDRB Rd,[Rb,+/-R0]
    STRB Rd,[Rb,+/-R0]
    这些指令用于“基址+偏移量”型指针的访问,并且与8-位MOV,
    ADD,SUB结合时将带来相当快速的立即数偏移量的访问格式11:以带符号的5位立即数偏移量(预先增/减)存取字(或字节),
    无回写
    L代表存/取,B代表字节/字
    LDR{B}Rd,[Rb,#+Offset5]
    STR{B}Rd,[Rb,#+Offet5]
    这些指令用于结构的访问
    偏移量编码为0-31时代表字节,编码为0,4-124时代表字格式12:多重存取(强迫回写)
    LDMIA Rb!,{RIist}
    STMIA Rb!,{RIist}
    Rlist指定寄存器r0-r7
    这些指令的一个子类是一对子程序调用和返回指令
    对于LDM,如果r7是基址,而rlist中的位7置位,则PC被
    取到
    对于STM,如果r7是基址,而rlist中的位7置位,则LR被
    存起来
    如果r7被用作基址寄存器,则以sp取而带之
    那么在这两种情况下,将实现一个全下行堆栈,即LDM类似
    ARM的LDMFD,  STM类似ARM的STMFD
    因而对块拷贝,将r7用作结束指针
    如果r7不是基址寄存器,LDM和STM类似ARM的LDMIA,
    STMIA格式13:取地址。该指令将8位无符号常数与PC或堆栈指针相加,并
    将结果存于目的寄存器中
    ADD Rd,sp,+256字节
    ADD Rd,pc,+256字(1024字节)
    SP位表明SP或PC哪一个是源
    如果SP是源,而r7被指定为目的寄存器,则SP被用作目的
    寄存器格式14:条件分支跳转,+/-128个字节,其中,cond定义了条件码(象
    ARM中的那样),cond=15编码为SWI(仅256,应该足
    够)格式15:设置一个长跳转和连接中的位22:12。MOVlr,#offset<<12。格式16:完成一个长跳转和连接。操作为:SUB newlr,pc#4;ORR pc,
    oldlr,#offset<<1。newlr和oldlr代表在该操作之前和之后的
    1r寄存器。
如前所述,与32-位指令集相比,16-位指令集操作数的范围缩小了。相应地,16-位指令集使用了寄存器6(参看图1)的一个子集,而该寄存器6是提供给全32-位指令集用的。图9示意了16-位指令集所使用的寄存器子集。

Claims (15)

1.用于处理数据的器件,所述器件含有:
一个处理器核心,用来响应大量的核心控制信号;
译码机构,用来译码第一指令集中的X-位程序指令字中的P位,从而产生所述的核心控制信号;
一条指令流水线,程序指令字通过该流水线到达所述译码机构;
第一映射机构,它响应通过所述指令流水线的第二指令集中的Y-位程序指令字,用来把所述Y-位程序指令字中的Q位映射到相应X-位程序指令字中的所述P位,以供所述译码机构译码,其中,
Y小于X,且所述第二指令集是所述第一指令集的子集。
2.根据权利要求1的器件,含有一个寄存器,所述寄存器保存一个正在被所述处理器核心执行的X-位指令,所述处理器核心从所述指令寄存器中读取操作数。
3.根据权利要求2的器件,含有第二映射机构,用以将处于所述指令流水线中的所述Y-位程序指令字中的操作数映射到所述对应X-位程序指令字中的对应位置,并将所述被映射的操作数保存到所述指令寄存器中,以供所述处理器核心使用。
4.根据权利要求3的器件,其中,所述第二映射机构将所述Y-位程序指令字映射成所述对应X-位程序指令字的完整形式,并将所述对应X-位程序指令字的所述完整形式保存到所述指令寄存器中。
5.根据前述任一权利要求的器件,其中,程序指令字经过许多处理器周期才通过所述指令流水线,其中一个周期是译码周期,在该周期操作所述译码机构,以在所述译码周期的末尾产生所述核心控制信号,同时还操作所述第一映射机构,以在所述译码周期的第一阶段产生所述对应X-位程序指令字中的所述P位,从而允许所述译码机构在所述译码周期的末尾仍能够产生所述核心控制信号。
6.根据权利要求3和5的器件,其中,可操作所述第二映射机构在所述译码周期的末尾将所述被映射的操作数保存到所述指令寄存器中。
7.根据权利要求3的器件,其中,所述第二映射机构可以与所述第一映射机构并行操作。
8.根据前述任一权利要求的器件,其中,所述处理器核心带有大量的寄存器,这些寄存器被所述第一指令集使用,并被定义成某些所述X-位程序指令字中的寄存器操作数;同时,所述第二指令集使用所述寄存器的一个子集,该子集被定义成某些所述Y-位程序指令字中的寄存器操作数。
9.根据权利要求3和8的器件,其中,所述第二映射机构对所述Y-位程序指令字中的所述寄存器操作数进行扩展,以产生所述X-位程序指令字中的所述寄存器操作数。
10.根据权利要求3的器件,其中,所述X-位程序指令字中的操作数的范围要比所述Y-位程序指令字中的操作数的范围大,并且,所述第二映射机构对所述Y-位程序指令字中的所述操作数的高位用零进行扩展,以产生所述X-位程序指令字中的所述操作数。
11.根据前述任一权利要求的器件,其中,P小于X。
12.根据前述任一权利要求的器件,其中,Q小于或等于P。
13.根据前述任一权利要求的器件,其中,X等于32,Y等于16。
14.根据前述任一权利要求的器件,其中,所述器件是一个集成电路。
15.一种处理数据的方法,所述方法含有下面的步骤:
一个处理器核心,用来响应大量的核心控制信号;
利用一个译码机构来译码第一指令集中的X-位程序指令字中的P位,从而产生所述的核心控制信号;
程序指令字通过一条指令流水线到达所述译码机构;
将通过所述指令流水线的所述Y-位程序指令字中的Q位映射到相应X-位程序指令字中的所述P位,以供所述译码机构译码,其中,
Y小于X,且所述第二指令集是所述第一指令集的子集。
CN95192829A 1994-05-03 1995-02-15 用多指令集处理数据的器件和方法 Expired - Lifetime CN1088214C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9408873.9 1994-05-03
GB9408873A GB2289354B (en) 1994-05-03 1994-05-03 Multiple instruction set mapping

Publications (2)

Publication Number Publication Date
CN1147306A true CN1147306A (zh) 1997-04-09
CN1088214C CN1088214C (zh) 2002-07-24

Family

ID=10754569

Family Applications (1)

Application Number Title Priority Date Filing Date
CN95192829A Expired - Lifetime CN1088214C (zh) 1994-05-03 1995-02-15 用多指令集处理数据的器件和方法

Country Status (13)

Country Link
US (1) US5568646A (zh)
EP (1) EP0758463B1 (zh)
JP (2) JP3171201B2 (zh)
KR (3) KR100323191B1 (zh)
CN (1) CN1088214C (zh)
DE (1) DE69503046T2 (zh)
GB (1) GB2289354B (zh)
IL (1) IL113134A (zh)
IN (1) IN189950B (zh)
MY (1) MY114381A (zh)
RU (1) RU2137184C1 (zh)
TW (1) TW242678B (zh)
WO (1) WO1995030187A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1327338C (zh) * 2001-05-31 2007-07-18 Arm有限公司 使用多重指令集的数据处理
CN103098020A (zh) * 2010-03-15 2013-05-08 Arm有限公司 由多个指令集使用的寄存器间映射
CN101493762B (zh) * 2008-01-23 2013-05-22 Arm有限公司 处理数据的方法和设备
US10559055B2 (en) 2015-07-31 2020-02-11 Arm Limited Graphics processing systems

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2290395B (en) * 1994-06-10 1997-05-28 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
US5926642A (en) * 1995-10-06 1999-07-20 Advanced Micro Devices, Inc. RISC86 instruction set
DE69613586T2 (de) * 1995-10-06 2002-04-25 Advanced Micro Devices Inc Befehlsdekoder mit emulation durch indirektspezifizierer
US5794063A (en) * 1996-01-26 1998-08-11 Advanced Micro Devices, Inc. Instruction decoder including emulation using indirect specifiers
GB2308470B (en) * 1995-12-22 2000-02-16 Nokia Mobile Phones Ltd Program memory scheme for processors
US5790824A (en) * 1996-03-18 1998-08-04 Advanced Micro Devices, Inc. Central processing unit including a DSP function preprocessor which scans instruction sequences for DSP functions
US5867681A (en) * 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
US5794010A (en) * 1996-06-10 1998-08-11 Lsi Logic Corporation Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor
US5896519A (en) * 1996-06-10 1999-04-20 Lsi Logic Corporation Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions
US6711667B1 (en) * 1996-06-28 2004-03-23 Legerity, Inc. Microprocessor configured to translate instructions from one instruction set to another, and to store the translated instructions
DE19629130A1 (de) * 1996-07-19 1998-05-14 Philips Patentverwaltung Signalprozessor
EP0858167A1 (en) 1997-01-29 1998-08-12 Hewlett-Packard Company Field programmable processor device
EP0858168A1 (en) 1997-01-29 1998-08-12 Hewlett-Packard Company Field programmable processor array
US5925124A (en) * 1997-02-27 1999-07-20 International Business Machines Corporation Dynamic conversion between different instruction codes by recombination of instruction elements
KR100451712B1 (ko) * 1997-03-12 2004-11-16 엘지전자 주식회사 멀티플리케이션장치및방법
US5881258A (en) * 1997-03-31 1999-03-09 Sun Microsystems, Inc. Hardware compatibility circuit for a new processor architecture
US5930491A (en) * 1997-06-18 1999-07-27 International Business Machines Corporation Identification of related instructions resulting from external to internal translation by use of common ID field for each group
JP3781519B2 (ja) * 1997-08-20 2006-05-31 富士通株式会社 プロセッサの命令制御機構
US6438679B1 (en) * 1997-11-03 2002-08-20 Brecis Communications Multiple ISA support by a processor using primitive operations
DE69827589T2 (de) 1997-12-17 2005-11-03 Elixent Ltd. Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
DE69841256D1 (de) 1997-12-17 2009-12-10 Panasonic Corp Befehlsmaskierung um Befehlsströme einem Prozessor zuzuleiten
WO1999031574A1 (en) 1997-12-17 1999-06-24 Hewlett-Packard Company Implementation of multipliers in programmable arrays
US6012138A (en) * 1997-12-19 2000-01-04 Lsi Logic Corporation Dynamically variable length CPU pipeline for efficiently executing two instruction sets
US6044460A (en) * 1998-01-16 2000-03-28 Lsi Logic Corporation System and method for PC-relative address generation in a microprocessor with a pipeline architecture
EP0942357A3 (en) 1998-03-11 2000-03-22 Matsushita Electric Industrial Co., Ltd. Data processor compatible with a plurality of instruction formats
US6079010A (en) * 1998-03-31 2000-06-20 Lucent Technologies Inc. Multiple machine view execution in a computer system
US6189094B1 (en) * 1998-05-27 2001-02-13 Arm Limited Recirculating register file
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
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US6763452B1 (en) 1999-01-28 2004-07-13 Ati International Srl Modifying program execution based on profiling
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US8065504B2 (en) 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
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
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US8074055B1 (en) * 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
WO2000068782A1 (fr) * 1999-05-06 2000-11-16 Hitachi, Ltd. Procede de mise au point d'un circuit integre a semiconducteur
US6820189B1 (en) * 1999-05-12 2004-11-16 Analog Devices, Inc. Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US6549959B1 (en) 1999-08-30 2003-04-15 Ati International Srl Detecting modification to computer memory by a DMA device
JP2001142692A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US7353368B2 (en) * 2000-02-15 2008-04-01 Intel Corporation Method and apparatus for achieving architectural correctness in a multi-mode processor providing floating-point support
US20020004897A1 (en) * 2000-07-05 2002-01-10 Min-Cheng Kao Data processing apparatus for executing multiple instruction sets
US6633969B1 (en) 2000-08-11 2003-10-14 Lsi Logic Corporation Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions
GB2367653B (en) * 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
GB2367651B (en) * 2000-10-05 2004-12-29 Advanced Risc Mach Ltd Hardware instruction translation within a processor pipeline
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
US7711926B2 (en) * 2001-04-18 2010-05-04 Mips Technologies, Inc. Mapping system and method for instruction set processing
US7107439B2 (en) * 2001-08-10 2006-09-12 Mips Technologies, Inc. System and method of controlling software decompression through exceptions
US20070005942A1 (en) * 2002-01-14 2007-01-04 Gil Vinitzky Converting a processor into a compatible virtual multithreaded processor (VMP)
US20060149927A1 (en) * 2002-11-26 2006-07-06 Eran Dagan Processor capable of multi-threaded execution of a plurality of instruction-sets
JP4090908B2 (ja) * 2003-02-21 2008-05-28 シャープ株式会社 画像処理装置および画像形成装置
TWI230899B (en) * 2003-03-10 2005-04-11 Sunplus Technology Co Ltd Processor and method using parity check to proceed command mode switch
GB2402764B (en) 2003-06-13 2006-02-22 Advanced Risc Mach Ltd Instruction encoding within a data processing apparatus having multiple instruction sets
US7707389B2 (en) * 2003-10-31 2010-04-27 Mips Technologies, Inc. Multi-ISA instruction fetch unit for a processor, and applications thereof
GB2414308B (en) * 2004-05-17 2007-08-15 Advanced Risc Mach Ltd Program instruction compression
US20060155974A1 (en) * 2005-01-07 2006-07-13 Moyer William C Data processing system having flexible instruction capability and selection mechanism
US20060174089A1 (en) * 2005-02-01 2006-08-03 International Business Machines Corporation Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture
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
GB2435116B (en) * 2006-02-10 2010-04-07 Imagination Tech Ltd Selecting between instruction sets in a microprocessors
US7500210B2 (en) * 2006-11-15 2009-03-03 Mplicity Ltd. Chip area optimization for multithreaded designs
US7802252B2 (en) * 2007-01-09 2010-09-21 International Business Machines Corporation Method and apparatus for selecting the architecture level to which a processor appears to conform
US20090044159A1 (en) * 2007-08-08 2009-02-12 Mplicity Ltd. False path handling
EP2203814A4 (en) * 2007-09-19 2012-11-07 Kpit Cummins Infosystems Ltd MECHANISM FOR RELEASING PLUG AND PLAY HARDWARE COMPONENTS FOR SEMI-AUTOMATIC SOFTWARE MIGRATION
US20100115239A1 (en) * 2008-10-29 2010-05-06 Adapteva Incorporated Variable instruction width digital signal processor
GB2484489A (en) * 2010-10-12 2012-04-18 Advanced Risc Mach Ltd Instruction decoder using an instruction set identifier to determine the decode rules to use.
US8914615B2 (en) 2011-12-02 2014-12-16 Arm Limited Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format
WO2013132767A1 (ja) * 2012-03-09 2013-09-12 パナソニック株式会社 プロセッサ、マルチプロセッサシステム、コンパイラ、ソフトウェアシステム、メモリ制御システムおよびコンピュータシステム
US9442730B2 (en) 2013-07-31 2016-09-13 Apple Inc. Instruction source specification
RU2556364C1 (ru) * 2014-03-18 2015-07-10 Федеральное государственное бюджетное учреждение науки Научно-исследовательский институт системных исследований Российской академии наук (НИИСИ РАН) Гибридный микропроцессор
RU2584470C2 (ru) * 2014-03-18 2016-05-20 Федеральное государственное учреждение "Федеральный научный центр Научно-исследовательский институт системных исследований Российской академии наук" (ФГУ ФНЦ НИИСИ РАН) Гибридный потоковый микропроцессор
CN113885833A (zh) * 2016-10-20 2022-01-04 英特尔公司 用于经融合的乘加的系统、装置和方法
GB2563580B (en) * 2017-06-15 2019-09-25 Advanced Risc Mach Ltd An apparatus and method for controlling a change in instruction set
JP7037289B2 (ja) 2017-06-26 2022-03-16 三菱重工業株式会社 制御切替装置、プラント、制御切替方法およびプログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5317240A (en) * 1976-07-31 1978-02-17 Toshiba Corp Controller
JPS583040A (ja) * 1981-06-30 1983-01-08 Nec Corp 情報処理装置
EP0124517A1 (en) * 1982-10-22 1984-11-14 International Business Machines Corporation Accelerated instruction mapping external to source and target instruction streams for near realtime injection into the latter
JPS6133546A (ja) * 1984-07-25 1986-02-17 Nec Corp 情報処理装置
JPH0689269A (ja) * 1991-02-13 1994-03-29 Hewlett Packard Co <Hp> プロセッサの制御装置、プロセッサの休止装置およびそれらの方法
GB2263565B (en) * 1992-01-23 1995-08-30 Intel Corp Microprocessor with apparatus for parallel execution of instructions
JPH0683615A (ja) * 1992-09-02 1994-03-25 Fujitsu Ltd 命令セットエミュレーションを行う計算機
US5392408A (en) * 1993-09-20 1995-02-21 Apple Computer, Inc. Address selective emulation routine pointer address mapping system
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1327338C (zh) * 2001-05-31 2007-07-18 Arm有限公司 使用多重指令集的数据处理
CN101493762B (zh) * 2008-01-23 2013-05-22 Arm有限公司 处理数据的方法和设备
CN103098020A (zh) * 2010-03-15 2013-05-08 Arm有限公司 由多个指令集使用的寄存器间映射
US9092215B2 (en) 2010-03-15 2015-07-28 Arm Limited Mapping between registers used by multiple instruction sets
CN103098020B (zh) * 2010-03-15 2016-04-27 Arm有限公司 由多个指令集使用的寄存器间映射
US10559055B2 (en) 2015-07-31 2020-02-11 Arm Limited Graphics processing systems

Also Published As

Publication number Publication date
IL113134A0 (en) 1995-06-29
KR100323191B1 (ko) 2002-06-24
CN1088214C (zh) 2002-07-24
DE69503046T2 (de) 1999-01-28
WO1995030187A1 (en) 1995-11-09
EP0758463B1 (en) 1998-06-17
DE69503046D1 (de) 1998-07-23
KR100327777B1 (ko) 2002-03-15
JP2001142697A (ja) 2001-05-25
US5568646A (en) 1996-10-22
GB2289354A (en) 1995-11-15
EP0758463A1 (en) 1997-02-19
GB2289354B (en) 1997-08-27
IL113134A (en) 1998-03-10
TW242678B (en) 1995-03-11
GB9408873D0 (en) 1994-06-22
MY114381A (en) 2002-10-31
JP3171201B2 (ja) 2001-05-28
KR970703010A (ko) 1997-06-10
JPH09512651A (ja) 1997-12-16
IN189950B (zh) 2003-05-17
RU2137184C1 (ru) 1999-09-10
JP3592230B2 (ja) 2004-11-24
KR100327778B1 (ko) 2002-03-15

Similar Documents

Publication Publication Date Title
CN1088214C (zh) 用多指令集处理数据的器件和方法
CN1089460C (zh) 多指令集的数据处理
CN1204490C (zh) 高数据密度risc处理器
CN1121014C (zh) 具有risc结构的八位微控制器
CN1299218C (zh) 执行指令的方法
USRE40509E1 (en) Methods and apparatus for abbreviated instruction sets adaptable to configurable processor architecture
CN1210647C (zh) 适于作由正值处理及饱和运算处理组成的修整处理的处理器
CN1302380C (zh) 处理器和编译器
CN1577257A (zh) 具有取整和移位的单指令多数据整数高位乘法
CN1218243C (zh) 延伸微处理器数据模式的装置及方法
CN1440528A (zh) 寄存器中堆栈操作数的存储
CN1309347A (zh) 具有改良的指令集体系结构的微处理器
CN1434938A (zh) 重启动翻译的指令
CN1595390A (zh) 执行部分宽度压缩数据指令
CN107077321A (zh) 用于执行融合的单个周期递增‑比较‑跳转的指令和逻辑
CN1522401A (zh) 数据并行右移合并的方法与装置
CN1629801A (zh) 产生早期指令结果的管线式微处理器、装置以及方法
CN1513137A (zh) 使用多重指令集的数据处理
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
CN1115631C (zh) 具有risc结构的八位微控制器
CN109213472A (zh) 用于利用常数值的矢量运算的指令
CN1035190A (zh) 基于操作数长度和对位的微码转移
CN1278931A (zh) 特别适于译码数字音频信号的数字信号处理器
CN1320450C (zh) 提供可变宽度的至少六路加法指令的方法及相应装置
CN1959630A (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
C17 Cessation of patent right
CX01 Expiry of patent term

Expiration termination date: 20150215

Granted publication date: 20020724