多指令集的数据处理的制作方法

文档序号:6573141阅读:282来源:国知局
专利名称:多指令集的数据处理的制作方法
技术领域
本发明涉及数据处理领域。更具体地说,本发明涉及利用多个程序指令字集的数据处理。
背景技术
数据处理系统利用一在程序指令字的控制下进行操作的核心处理器,这些指令字在译码时用于产生控制信号以控制该核心处理器的不同单元以执行必须的功能,从而实现在程序指令字中规定的处理。
典型的核心处理器具有给定位宽度的数据通路,该宽度限制了对应一给定的指令可以操纵的数据字的长度。在数据处理领域,数据通路的宽度的增加一直是一个趋势,即逐渐从8位的体系结构转移到16位,32位和64位的体系结构。在随着数据通路宽度增加的同时,指令集中的可能的指令的数目(在CISC和RISC策略中)以及这些指令的位长度也在增加。比如已经从16位指令集的16位体系结构转移到32位指令集的32位体系结构。
随着向增加结构的宽度的迁移,一个问题是维护为以前各代机器所编写的程序软件的向后兼容。解决这一问题的一个途径是提供具有兼容模式的新系统。比如,数字设备公司(Digital Equipment Corporation)的VAX11计算机具有能对较早的PDP11计算机的指令进行译码的兼容模式。尽管这一方法允许使用较早的程序软件,然而这种使用并未充分利用所运行的新处理设备中的所提高的能力,即当系统实际上具有支持32位的运算的硬件时,可能只使用到多级16位运算。
与结构的宽度的改变相关的另一问题是使用新的增加的位宽度指令集的计算机程序的大小趋于增加(32位的程序指令字所占的存储空间是16位程序指令字的两倍)。尽管在程序大小的增加在一定程度上为指令所抵销,因为新的指令指定的一个操作在以前可能需要多于一个的短指令,但是这一增加程序大小的趋势仍然存在。
对付这一问题的一个方案是让用户能有效地指定它们的指令集。国际商用机器公司(International Business Machines Corporation)制造的IBM370计算机包括了一个可写的控制存储器,使用该控制存储器,用户可以建立它们自己的指令集,将指令程序字与所希望的核心处理器的不同部分的操作进行映射。尽管这一方案提供了很好的灵活性,但难以产生高速度的操作,而且可写的控制存储器占据了很大的集成电路区域,因此有些不利。而且,设计一个有效的所说的指令集对用户来说是一个很重的负担。
欧洲公布专利申请EP-A-O 169565公开了一种具有16位核心处理器的系统。在第一种模式中,系统运和在16位的指令上,这种指令指定16位的数据处理操作。在第二种模式中,系统运行在8位的指令上,这种指令指定8位的数据处理操作。使用一个编程的存贮器将8位的指令映射到一个16位的指令,然后将之译码。这个被译码的16位的指令然后执行指定的8位的数据处理操作。
众所周知,在提供的系统中,一个指令集具有不同长度的程序指令字。这一方案的一个例子是由MOS工艺制造的6502微处理器。这一处理器使用8位的操作码,操作码后跟可变数目的操作数字节。在确定操作数和执行指令之前首先要对操作码进行译码。与固定的已知长度的程序指令字(即操作码和任意操作数)相比,这就要求多次存储器访问,而且是对系统性能的很大限制。
IBM技术公告简报(IBM Technical Disclosure Bulletin)(Vol.15.NO.3.August 1972,page 920)公布了一种将17位指令转化为20位的指令的系统。
欧洲公布专利申请EP-A-O 199173公布了一种包括一个指令译码器的微处理器。

发明内容
从本发明提供的处理数据的装置可看到其一个特点,所述装置包括一个核心处理器,它具有N位数据通路,并且响应多个核心控制信号;第一译码装置,它用于对第一永久指令集(permanent instruction set)的指定N位数据处理操作的X位程序指令字进行译码以产生所述核心控制信号,来触发利用所述N位数据通路的处理;第二译码装置,它用于对第二永久指令集(permanent instruction set)的Y位程序指令字进行译码以产生所述核心控制信号,来触发利用所述N位数据通路的处理,Y小于X;以及一个指令集切换装置,它用于在接收到程序指令字时选择使用所述第一译码装置的一第一处理模式,或者在接收到程序指令字时选择使用所述第二译码装置的一第二处理模式,其特征在于,所述Y位程序指令字指定利用所述N位的数据通路的N位数据处理操作。
本发明认识到,在一个具有一宽标准的X位指令集和N位数据通路的系统中(比如一个操作在32位的数据通路的32位的指令集),在通常的编程中并未充分用到X位指令集的性能。这一情况的一个例子就是32位的转移指令。该转移指令可能使用很少用到的32兆字节的范围。从而,在大多数情况下,这种转移仅用于少数指令,并且32位指令的大多数位不携带任何信息。大多数使用32位指令集的程序通常具有低的代码密度,并且使用的程序存储空间多于所需要的。
本发明通过提供一个单独的永久的Y位指令集而解决这一问题,其中Y小于X,该指令集仍然操作在全N位数据通路上。因此,使用到了N位的数据通路的性能,同时对于那些不要求该X位指令集的复杂性的应用来说,其代码密度得到提高。在具有两个永久指令集的装置中存在一个协同作用。通过使用制造商有效地实现的两个指令集(在诸如相对定时十分关键的RISC处理器的高性能系统中,这很重要)以及不牺牲N位数据通路的使用,允许使用者具有一种灵活性,以改变他们所使用的指令集来适应程序的环境。
这种结构的另一优点是,在使用Y位指令集运行时,由于在每单位时间中运行较少字节的程序代码,因此对于存储程序码的存储系统的数据传输能力的要求就不十分高。这样就降低了复杂性及其成本。
本发明也朝着与本领域的正常趋势相反的方向发展。这一趋势就是随着每一代新处理器的出现,要将更多的指令加入到该指令集中,为了适应这种要求,该指令集变得更宽了。相反,本发明是以一宽的复杂的指令集开始的,然后添加一较狭窄的指令集(以较少的空间用于大量的指令)以用于不要求宽指令集的整个范围的情况。
应该认识到,第一指令集和第二指令集可以完全是独立的。然而,在本发明的较佳实施例中,所述第二指令集提供了所述第一指令集所提供的操作的一个子集。
只要第二指令集是第一指令集的一个子集,由于核心处理器的硬件单元可以实现得更易于适应两个指令集,因此就允许更高效的操作。
当将一个增加了位长度的程序指令字的一个指令集已添加到一个现有的程序指令集中时,有可能要求来自两个指令集的程序指令字是正交的。然而,该指令集切换装置使得可以避免这一限制,而且允许系统中所述第二指令集非正交于所述第一指令集。
自由使用非正交指令集使得系统设计者的任务变得容易了,而且实现了本发明的另一特色,即能够更高效地处理指令集的设计。
该指令集切换装置可以是一个由手动干预进行控制的硬件型切换设备。然而,在本发明的较佳实施例中,所述指令集切换装置由响应一个指令集标志的装置构成,在用户的程序控制下,所述指令集标志是可设置的。
在软件控制下,能够使用指令集切换装置在第一指令集和第二指令集之间进行切换是相当有益的。比如,对于大多数程序,为了提高代码密度程序员可以使用具有Y位程序指令字的第二指令集,而对于那些要求利用第一指令集的增加的能力和复杂性的程序的一小部分可以暂时切换到具有X位程序指令字的第一指令集。
对两个独立的指令集的支持可能会对系统引入另外的复杂性。在本发明的较佳实施例中,所述核心处理器包括一个程序状态寄存器(用于存储当前适当的处理状态数据)和一个保存程序状态寄存器,当出现一个程序异常而引起执行一个异常处理程序时所述保存程序状态寄存器用于存储与一个主程序有关的处理状态数据,所述指令集标志是所述处理状态数据的一部分。
将指令集标志作为编程状态数据的一部分就保证了当发生一个异常时对该标志进行保存。以此方式,一个异常处理程序就能够处理两个处理模式的异常,并且允许它访问在保存程序状态寄存器中的所保存的指令集标志(如果在处理该异常中它十分重要的话)。而且,使得该异常处理程序能够使用任一指令集以提高设计约束所要求的速度或代码密度。
为了处理不同指令集的不同的位长度,本发明的较佳实施例在所述的核心处理器中包括一个程序计数器寄存器和一个程序计数器递增器后者用于对存储在所述程序计数器寄存器中的程序计数器值进行递增以指向下一个程序指令字,所述程序计数器递增器在所述第一处理模式而不是在所述第二处理模式中使用一个不同的递增步长。
将会理解到,第二指令集的较短的程序指令字不可能包含与第一指令集同样多的信息。为了适应这一情况,可通过减少操作数的范围节省第二指令集中的空间,其中操作数的范围在一个程序指令字内被指定。
在本发明的较佳实施例中,所述核心处理器通过一Y位数据总线连接到一个存储系统从而所述第二指令集的程序指令字只要求一个取周期,所述第一指令集的程序指令字要求多个取周期。
使用Y位的数据总线和存储系统在使得对于在至少第二指令集的每一程序指令字只需一个取周期的同时,也使得要建造的系统的总体开销较少。
第一译码装置和第二译码装置可以完全是独立的。然而在本发明的较佳实施例中,所述第二译码装置重新使用了所述第一译码装置的至少一部分。
第二译码装置对于第一译码装置的至少一部分的重新使用减少了电路的整体面积。而且,由于第一指令集通常不如第二指令集复杂,而且驱动同样的核心处理器,因此第二译码装置的相当多的部分仍有可能重新使用。
从本发明提供的处理数据的一种方法可以看到其另一特色,所述方法包括以下步骤对于具有N位数据通路以及响应多个核心控制信号的一个核心处理器,选择第一处理模式或第二处理模式;在所述第一处理模式中,对第一永久指令集(permanent instruction set)的指定N位数据处理操作的X位程序指令字进行译码以产生所述核心控制信号,来触发利用所述N位数据通路的处理;以及在所述第二处理模式中,对第二永久指令集(permanent instruction set)的Y位程序指令字进行译码以产生所述核心控制信号,来触发利用所述N位数据通路的处理,Y小于X,其特征在于,所述Y位程序指令字指定利用所述N位的数据通路的N位数据处理操作。


结合附图将以举例的方式对本发明的一个较佳实施例进行描述,其中图1概略地示出了包括一个核心处理器和一存储系统的数据处理装置;图2概略地示出了对于一个具有一个指令集的系统的指令和指令译码器;图3示出了在具有两个指令集的系统中使用的一个指令流水线和指令译码器;图4示出了一个X位的程序指令字的译码过程;图5和图6示出了Y位程序指令字到X位程序指令字的映射;图7示出了一个X位指令集;图8示出了一个Y位指令集;以及图9示出了第一指令集和第二指令集使用的处理寄存器。
实施例说明图1示出了一个数据处理系统(它形成为一个集成电路的一部分),该系统包括一个连接到一Y位存储系统4的核心处理器2。在本例中,Y=16。
核心处理器2包括一个寄存器组6,一个Booths乘法器(Boothsmultiplier)8,一个桶式移位器(barrel shiftter)10,一个32位算术逻辑单元12,和一个写数据寄存器14。在核心处理器2和存储系统4之间是一个指令流水线16,一个指令译码器18和一个写数据寄存器20。图中示出一个程序计数器寄存器22(它是核心处理器2的一部分)正在寻址存储系统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将被变为活动状态。
该第二译码装置采用一个快速PLA 38和一个并行慢速PLA 40对16-位指令(Thumb指令)进行译码。快速PLA 38用来将16-位Thumb指令的各二进制位的一个子集(Q位)映射到用以驱动第一译码装置的对应32-位ARM指令的P位。因为仅有相对较少的位数需更进行这种映射,快速PLA 38可以相对较“浅”,于是可以足够迅速地操作,以提供第一译码装置足够的时间响应PipeC的内容而产生核心控制信号32。可以认为快速PLA 38是在为第一译码装置“伪造”一个对应32-位指令的关键位,而没有花费任何不必要的时间来映射整条指令。
然而,如果使核心处理器2在不做根本性改变和不添加重要附加电路部件的基础上能够工作时,那么完整的32-位指令仍然是需要的。在快速PLA 38正在进行关键映射的同时,并行相连的慢速PLA 40用来将16-位指令映射到对应的32-位指令,并将之放置于指令寄存器34中。这个更为复杂的映射将贯穿于快速PLA 38和第一译码装置进行操作的整个过程之中。有一点非常重要,那就是,该32-位指令必须在指令寄存器34中存在充分长的时间,这样使得为了响应核心控制信号32对核心处理器2产生控制,任意操作数均可从指令寄存器34中读取。
比较好的情况是,图3中的系统在译码第二指令集时的全部动作是当第二指令集中的16-位指令通过指令流水线16时将其翻译成第一指令集中的32-位指令。使这一点成为现实可行的措施是将第二指令集做成第一指令集的一个子集,以便保证在第二指令集中的指令和第一指令集中的指令之间存在一个一一映射。
提供指令集标志T使得第二指令集与第一指令集为非正交的关系。这一点在第一指令集是一个已存在的指令集,且没有任何空余位可用来使另外的正交的指令集被检测和译码的情况下是特别有用的。
图4示意了一条32-位指令的译码过程。在图4上部所示的连续的处理器时钟周期中,完成了一个取操作、一个译码操作以及最后的一个执行操作。如果所要求的是一条特殊的指令(如一条乘法指令),那么需要增加一个或多个附加的执行周期。
一条32-位指令42由许多不同的域组成。后面结合图7将要介绍,对于不同的指令,这些域的界限也将不同。
指令42中某些位要求在一个初级译码阶段被译码。这些P位是位4至7,位20,和位22至27。正是这些位被第一译码装置30所要求,且必须被快速PLA 38所“伪造”。这些位必须输入到第一译码装置并在其中译码,以便在译码周期的第一阶段结束之前产生适当的核心控制信号32。如果需要的话,对整条指令的译码将持续到译码周期的末尾。在译码周期的末尾,处理器2在执行周期中从指令寄存器34中读取指令中的操作数。这些操作数可以是寄存器号、偏移量或其它变量。
图5示意了作为例子的16-位指令到32-位指令的映射。粗线起源处为16-位指令中的Q位,它们需要被映射到32-位指令中的P位,以便被输入到第一译码装置30。可以看出,这些位中的大部分或是直接被复制过去,或是经过一个简单的映射。16-位指令中的操作数Rn′,Rd和立即数需要在其最高有效端用零填充,以填满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机器有限公司(AdvancedRISC Machines Limited)生产的ARM6处理器的数据表中的得到。图7中所突出强调的指令是图5和图6中所示的指令。
图8示意了除32-位指令集之外的16-位指令集。在该指令集中所突出强调的指令分别在图5和图6中做了示意。该16-位指令集中的指令经过某种选择,以使它们均可被映射到一条32-位指令,从而形成该32-位指令集的一个子集。
下面所说明的格式依次对应于该指令集中各条指令。
格式1Op=0,1两种操作均置条件码标志。
0ADD Rd,Rs,#立即数31SUB Rd,Rs,#立即数3格式2Op=0,1两种操作均置条件码标志。
0ADD Rd,Rm,Rn1SUB Rd,Rm,Rn格式33个操作码。用来生成大的立即数。
1=ADD Rd,Rd,#立即数8<<82=ADD Rd,Rd,#立即数8<<163=ADD Rd,Rd,#立即数8<<24格式4Op给出3个操作码,所有操作均是MOVS Rd,Rs SHIFT #立即数5,其中SHIFT为0为LSL1为LSR2为ASR如ARM所定义的那样,用零进行移位。
格式5Op1*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所定义的那样,用零进行移位并且大于318个特殊操作码,LO指定寄存器0-7,HI指定寄存器8-15SPECIAL是CPSR或SPSR
MOV HI,LO移动隐藏寄存器到可见寄存器)MOV LO,HI(移动可见寄存器到隐藏寄存器)MOV HI,HI(如过程返回)MOVS HI,HI(如异常返回)MOVS HI,LO(如中断返回,可以是SUBS HI,HI,#4)MOV SPECIAL,LO(MSR)MOV LO,SPECIAL(MRS)CMP HI,HI(堆栈界限检查)8个空余操作码格式6Op给出4个操作码,所有操作均置条件码标志0MOV Rd,#立即数81CMP Rs,#立即数82ADD Rd,Rd,#立即数8有可能用ADD Rd,Rs,#立即数5来替换ADD指令格式7取一个PC+Offset的字(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],#+/-Offset3STR{B}Rd,[Rb],#+/-Offset3这些指令用于数组的访问偏移量编码为0-7时代表字节,编码为0,4-28时代表字格式10以带符号的寄存器偏移量(预先增/减)存取字(或字节),无回写L代表存/取,U代表上/下(加减偏移量),B代表字节/字LDR Rd,[Rb,+/-Ro,LSL#2]STR Rd,[Rb,+/-Ro,LSL#2]LDRB Rd,[Rb,+/-Ro]STRB Rd,[Rb,+/-Ro]这些指令用于“基址+偏移量”型指针的访问,并且与8-位MOV,ADD,SUB结合时将带来相当快速的立即数偏移量的访问格式11以带符号的5位立即数偏移量(预先增/减)存取字(或字节),无回写L代表存/取,B代表字节/字LDR{B}Rd,[Rb,#+Offset5]STR{B}Rd,[Rb,#+Offset5]这些指令用于结构的访问偏移量编码为0-31时代表字节,编码为0,4-124时代表字格式12多重存取(强迫回写)LDMIA Rb!,{Rlist}STMIA Rb!,{Rlist}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。MOV lr,#offset<<12。
格式16进行一个长跳转和连接。操作为SUB newlr,pc,#4;ORR pc,oldlr,#offset<<1。newlr和oldlr代表在该操作之前和之后的lr寄存器。
如前所述,与32-位指令集相比,16-位指令集操作数的范围缩小了。相应地,16-位指令集使用了寄存器6(参看图1)的一个子集,而该寄存器6是提供给全32-位指令集用的。图9示意了16-位指令集所使用的寄存器子集。
权利要求
1.一种处理数据的装置,所述装置包括一个核心处理器(2),它具有N位数据通路,并且响应多个核心控制信号(32);第一译码装置(30),它用于对第一永久指令集的指定N位数据处理操作的X位程序指令字进行译码以产生所述核心控制信号,来触发利用所述N位数据通路的处理;第二译码装置(36),它用于对第二永久指令集的Y位程序指令字进行译码以产生所述核心控制信号,来触发利用所述N位数据通路的处理,Y小于X;以及一个指令集切换装置,它用于在接收到程序指令字时选择使用所述第一译码装置的一第一处理模式,或者在接收到程序指令字时选择使用所述第二译码装置的一第二处理模式,其特征在于,所述Y位程序指令字指定利用所述N位的数据通路的N位数据处理操作。
2.根据权利要求1所述的装置,其特征在于,所述第二指令集提供了由所述第一指令集提供的操作的一个子集。
3.根据权利要求1或2所述的装置,其特征在于,所述第二指令集非正交于所述第一指令集。
4.根据权利要求1或2所述的装置,其特征在于,所述指令集切换装置包括响应一个指令集标志(T)的装置,所述指令集标志可由用户程序控制进行置位。
5.根据权利要求4所述的装置,其特征在于,所述核心处理器包括一个用于存储当前适当的处理状态数据的程序状态寄存器(CPSR)以及一个保存程序状态寄存器(SPSR),在发生一个程序异常引起一个异常处理程序执行时,所述保存程序状态寄存器用于存储与一个主程序有关的处理状态数据,所述指令集标志(T)是所述处理状态数据的一部分。
6.根据权利要求1或2所述的装置,其特征在于,所述核心处理器包括一个程序计数器寄存器(22)和一个程序计数器递增器(24),后者用于递增存储在所述程序计数器寄存器中的一个程序计数器值,以指向下一程序指令字,所述程序计数器递增器在所述第一处理模式中而不是在所述第二处理模式中应用一个不同的递增步长。
7.根据权利要求1或2所述的装置,其特征在于,与所述第一指令集的一个对应的程序指令字相比,所述第二指令集的至少一个程序指令字具有一个减少的操作数范围。
8.根据权利要求1或2所述的装置,其特征在于,所述核心处理器通过一个Y位数据总线连接到一个存储系统(4),使得所述第二指令集的程序指令字需要一个取周期,而所述第一指令集的程序指令字需要多个取周期。
9.根据权利要求1或2所述的装置,其特征在于,所述第二译码装置重新使用所述第一译码装置的至少一部分。
10.根据权利要求1或2所述的装置,其特征在于,所述装置是一个集成电路。
11.一种处理数据的方法,所述方法包括以下步骤对于具有N位数据通路以及响应多个核心控制信号的一个核心处理器(2),选择第一处理模式或第二处理模式;在所述第一处理模式中,对第一永久指令集的指定N位数据处理操作的X位程序指令字进行译码以产生所述核心控制信号,来触发利用所述N位数据通路的处理;以及在所述第二处理模式中,对第二永久指令集的Y位程序指令字进行译码以产生所述核心控制信号,来触发利用所述N位数据通路的处理,Y小于X,其特征在于,所述Y位程序指令字指定利用所述N位的数据通路的N位数据处理操作。
全文摘要
描述了一个利用两个指令集的数据处理系统。两个指令集控制使用处理器核(2)的全N位数据通路。一个指令集是一32位指令集,而另一个是一16位指令集。两个指令集都是永久地配备的,而且具有相关的指令译码硬件。
文档编号G06F9/30GK1395168SQ01143528
公开日2003年2月5日 申请日期1999年11月2日 优先权日1994年5月3日
发明者D·V·贾加 申请人:Arm有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1