使用组合的数据处理器系统和指令系统的制作方法

文档序号:6417081阅读:201来源:国知局
专利名称:使用组合的数据处理器系统和指令系统的制作方法
技术领域
本发明涉及数据处理器,更具体地讲,是涉及对数据处理器指令进行组合(grouping)的方法,装置和一个配合使用的指令系统。
有许多不同种类的数据处理器可以使用。某些数据处理器具有多个可以并行使用的执行单元。这种数据处理器的指令调度可以是动态或静态的。两种系统根据一个顺序指令流进行操作,使用包含优化汇编器和编译器的常规程序预处理软件工具准备该指令流以便执行。通常,动态系统在数据处理器中需要很多的硬件,而静态系统需要更复杂的程序预处理软件技术。但共同的目标是识别并发掘指令流中固有的指令级并发成份,并且保持执行的顺序特性。
在动态指令调度系统中,数据处理器中的特殊硬件在顺序指令流中维护一个可视的滑窗。在各个指令分配周期中,调度硬件遵照指令顺序约束尽可能多地选择执行单元和其它系统资源能够容纳的可见指令。附加硬件记录扫过的指令,并且根据系统状况相应地终止或收回指令。动态调度数据处理器的一个例子是Motorola MPC604微处理器。
在静态指令调度系统中,在产生并且优化顺序指令流后,程序预处理软件工具重新检查该指令流,并且根据描述硬件配置和目标数据处理器操作特性的信息把那些能够以并行方式安全地执行的指令组合到一起。由于预测某些诸如间接或计算存储器索引的程序构造的动作比较困难,所以不能预先保证调度是最优的。为了能够适应这种不可预测的构造,通常会提供某种硬件互锁装置。静态调度数据处理器的一个例子是多流程跟踪器7/14/28。用于跟踪机的编译器通常被称作Bulldog编译器,这个名字是由其在耶鲁大学的原作者命名的。
在组合用于跟踪器,即一个极长指令字(VLIW)机的指令时,Bulldog编译器被约束到一个具有7,14或28固定功能指令时间片时,任何编译器未找到有效操作的指令时间片均被简单地填上一个非操作(NOP)指令(即全零)。不是在存储器中存储这些无用的NOP,而是编译器压出NOP并且先行找出有用的指令字集,该指令字集的特征为各个VLIW具有一个位映射,该映射指示被压出的NOP(或者,从相反的角度看,有用的指令字)的位置。在预取时刻,跟踪器高速缓存/存储器控制器使用位映射字中的信息重新产生NOP以便高速缓存被填上完全充满的VLIW。一旦在预取期间重新产生了对应的VLIW,则抛弃位映射,并且甚至没有那部分指令调度或执行硬件部分知道其存在。尽管这种机制使存储器中每个VLIW的逻辑长度增加了一个字,但由于编译器没有能力用有用的指令字填充每个VLIW中的所有指令时间片,通常能够减少存储的VLIW的物理长度。另一方面,对于良好设计的代码,这种机制会显著增加存储器中的实际代码长度。
静态调度数据处理器一个更新的例子是德州仪器的TMS320C62xx微处理器家族(‘C62)。在‘C62中,每个指令字包含一个专用的“P”位,如果被程序预处理软件工具设置,该位向调度硬件指示可以并行调度指令字和下面的指令字。这样,一个同时可调度的“执行包”包括具有一个被清除P位的一个指令字和多到最大数量的,均具有一个被设置P位的前导指令字。美国专利第5,560,028号公开了这种机制的一个变种,其中并行调度控制位的控制范围在各组并行可调度指令字之间切换。在上述静态调度系统中,通过向组合功能指定各个指令中的一个位,有很大一部分指令不可用于其它功能,例如对数据处理操作进行编码。
利用这种多道执行数据处理器可以额外增加处理数据和指令的执行速度。但由于使用多道执行单元增加了数据处理器结构的复杂度,所以计算机指令代码长度会增加。在许多应用中,由于会增加费用和额外存储器所需的空间,所以增加代码长度是不期望的。一个这样的应用是一类被称作数字信号处理器(DSP)的数据处理器。DSP被应用于许多应用中,例如蜂窝电话,在这种应用中,一个基本要求是小尺寸和低功率上。期望在不显著增加指令代码长度的情况下,多道执行单元数据处理器提供更快的指令处理。
相应地,需要组合计算指令的改进方法和装置,以及改进的指令系统。
虽然在所附权利要求书中具体指出了本发明,但在下面结合附图的详细描述中公开了本发明的其它特性,其中

图1是关于数据处理系统的一个实施例的模块图。
图2是图解图1中系统的核心中的寄存器的图例。
图3是图解图1中系统的,具有一个单独乘法和累加单元的一部分核心的一个具体实施例的图例。
图4是图解图1中系统的,具有两个乘法和累加单元的一部分核心的另一个具体实施例的图例。
图5是图解图1中系统的,具有四个乘法和累加单元的一部分核心的另一个具体实施例的图例。
图6是图解图3-5的乘法和累加单元的一个具体实施例的图例。
图7是图解图1的位域和逻辑单元的一个具体实施例的图例。
图8是图解图1的系统内地址产生单元的一个具体实施例的图例。
图9是图解管道传输图1系统所执行的指令的方法的一个具体实施例的图例。
图10是图解图1的系统所执行的一组预取计算指令和一组组合计算指令的图例。
图11是图解图1的系统核心的前缀调度和指令调度操作的图例。
图12-17图解了可以用于图1的系统的一个指令系统的各种实施例。
图18是图解使用静态组合的一个指令系统的图例。
图19是图解图18的指令系统中一个类型子域的不同值的图例。
通常,本发明的一个方面涉及一个指令系统,该系统包含一个指令根和一个指令前缀,该指令根具有一个用于选择由一个数据处理器执行的操作的操作选择域。前缀具有一个可以是下面一个或更多个的域一个用于选择数据处理器执行选择的操作的条件的条件执行域,一个调整选择的操作以便通过一个具有不同长度的操作数加以执行的操作数长度调整域,一个选择指令组长度的指令组域,和一个选择指令前缀长度的前缀长度选择域。
根据本发明的另一方面,提供一个在具有多个寄存器的数据处理器中使用的指令系统。该指令系统包含一个指令根,该指令根具有一个宽度为m,用于选择数据处理器的2m个寄存器中的一个的寄存器选择域,和一个指令前缀,该前缀具有一个宽度为n,用于扩展上述寄存器选择域的宽度以便选择上述数据处理器中2m+n个寄存器中的一个的寄存器选择扩展域。
根据本发明的另一个方面,提供一个在数据处理器中使用的指令系统。该数据处理器适于顺序执行第一和第二种操作,并且以并行方式执行多个第一种操作。该指令系统具有一个用于选择数据处理器执行的第一和第二种操作中的一个的操作选择域。操作选择域具有一个宽度为n的类型子域,对该子域赋值如下在顺序执行上述第一种操作的情况下取一个第一值;在并行执行上述第一种操作的情况下取一个第二值;在执行上述第二种操作的情况下取从剩余(2n-2)个值中选择的一个第三值。在一个具体实施例中,在顺序执行第二种操作的一个选定指令时类型子域可以被赋上第二值。
根据本发明的另一个方面,提供了一个控制一个数据处理器顺序执行第一和第二种操作并且以并行方式执行多个上述第一种操作的系统。该系统包含一个指令,该指令具有一个用于选择数据处理器执行的第一和第二种操作中的一个的操作选择域。操作选择域具有一个类型子域。针对顺序执行的上述第一类型指令,类型子域具有一个第一值,针对并行执行的上述第一类型指令和顺序执行的一个第二类型选定指令,类型子域具有一个第二值,并且在其它情况下具有一个第三值。
应当注意,在详细描述和附图中使用的具体术语,表示和公开的具体结构和操作细节只是为了说明并且不会以任何方式限制如所附权利要求书中所述的发明的范围。
参照图1,其中图解了处理系统10的一个实施例。处理系统10包含一个处理器核心12,一个系统接口单元(SIU)14,一个直接存储器存取单元16,一个诸如串行通信端口或定时器的外设18,内部存储器模块20,22和一个外部存储器接口模块19。处理系统10也可以被称作数据处理器。
处理器核心12包含一个地址寄存器队列26,一个程序序列发生器24,数据寄存器队列28,29,地址算术逻辑单元30(也称作地址产生单元(AGU)),乘法和累加(MAC)单元(32)(也称作数据算术逻辑单元(DALU)),一个位域和逻辑单元34,和一个可选的指令扩充加速器36。地址ALU 30通过内部总线60被连接到地址寄存器队列26。乘法和累加单元32通过内部总线62被连接到数据寄存器队列28,29。程序序列发生器24通过指令总线44被连接到地址ALU 30,DALU 32,位域单元34和指令扩充加速器36。
系统10还包含一个程序总线38,一个第一数据总线40,一个第二数据总线42,一个外设总线88,一个直接存储器存取(DMA)总线84,和一个外部存储器接口总线102。程序总线38通过总线46被连接到程序序列发生器24,通过总线66被连接到SIU 14,通过总线72和82分别被连接到内部存储器20,22。数据总线40,42通过总线48,50被连接到地址寄存器队列26,通过总线52,54被连接到数据寄存器队列28,29,并且通过总线56,58被连接到指令扩充加速器36。数据总线40,42通过总线74-80被连接到存储器20,22。
DMA总线84通过总线90被连接到SIU 14,通过总线92被连接到DMA 16,通过总线94被连接到外设单元18,并且通过总线95和97分别被连接到存储器单元20,22。外设总线88通过总线96被连接到SIU 14,通过总线98被连接到DMA 16,并且通过总线100被连接到外设单元18。外部存储器总线102被连接到外部存储器接口模块19,并且被连接到与系统10通信的外部存储器(未示出)。在图解的实施例中,程序总线38有128位宽,并且其它的总线40,42,84和88有32位宽。
参照图2,其中公开了系统10的核心12中的寄存器的一个实施例。如图所示,地址寄存器队列26包含寄存器R0-R7,堆栈指针(SP),N0-N3,M0-M2,MCTL,SA0-SA3,LC0-LC3。程序序列发生器24包含程序计数器,状态寄存器,和操作模式与状态寄存器。数据寄存器队列28包含寄存器D0-D7,而数据寄存器队列29包含寄存器D8-D15。在一个可选的实施例中,只有一个单独的寄存器队列可被用于节省成本,例如通过一或两个MAC配置。在其它的高性能应用中,可以使用多于两个的寄存器队列。
参照图3,其中图解了一个在核心12中具有一个乘法累加器32的具体实施例。在这个实施例中,单独的MAC 32通过总线62被连接到寄存器队列28,29。位域单元34通过总线64被连接到数据寄存器队列28,29。数据寄存器队列28,29通过中间移位器/限制器模块104和总线52,54,106被连接到数据总线40,42。移位器/限制器模块104被用于把总线106上具有40位格式的数据转换成总线52,54上具有16位格式的数据。
参照图4,其中图解了一个在核心12中具有两个乘法累加器32的具体实施例。除了有两个而不是一个MAC 32之外,这个实施例与图3的实施例类似。需要一个额外的总线62把数据寄存器队列28,29连接到第二个MAC单元32。并且总线52,54是32位总线而不是16位总线以便从两个MAC传送额外的数据。类似地,图5图解了一个具有四个MAC单元32的实施例。应当理解本发明不仅限于上述示例性配置,并且不仅限于特定数量的MAC单元32和特定的结构。
参照图6,其中图解了MAC单元32的一个具体实施例。MAC单元32包含一个乘法器110和一个加法器112。乘法器110从数据寄存器队列28,29接收数据输入并且乘上数据部分111,114以产生一个被输入到加法器112的乘法输出116。加法器累加一个第二数据输入120和乘法器结果116以便产生一个被回送到数据寄存器队列28,29的累加结果122。
参照图7,其中公开了位域逻辑单元34的一个具体实施例。位域逻辑单元34包含一个移位器124,一个屏蔽位发生器126,一个逻辑单元128,和一个多路复用器129。位域和逻辑单元通过总线64接收输入并且产生一个输出,该输出是一次移位,一次诸如从输入数据中消除某些位的屏蔽操作,和/或一次诸如逻辑与,或,异或或反转操作的逻辑操作的结果。选定操作的结果是通过双向总线64向寄存器队列28,29中的一个选定寄存器回送一个40位结果。
参照图8,其中图解了地址产生单元(AGU)的一个具体实施例。AGU包含寄存器M0-M2,N0-N3,R0-R7,来自地址寄存器队列126的SP,和经过调整的控制寄存器(MCTL)。AGU还包含地址算术逻辑单元30。AGU通过寄存器26被连接到第一和第二地址总线140,142和程序地址总线138。如图8所示,ALU 30从各种寄存器接收数据,对输入的数据进行选定的算术操作,并且向选定的输出寄存器提供一个算术结果。例如,可以通过总线140输出寄存器R0中存储的一个地址。之后,寄存器R0可以被加上一个来自选定的寄存器N0的偏移并且产生的加法输出被存储在寄存器R0中。
图9图解了用于图1的系统10的管道执行方法。管道方法包含的执行步骤有程序预取200,程序获取202,调度和解码204,地址产生206和执行208。
图10图解了一个指令获取集和组合指令执行集。指令获取集210包括一个被执行的指令序列。在图解的实施例中,指令序列包含八个指令,其编号为从N到N+7。在一个硬件实现中,这个指令序列可以被实现成一或多个指令缓冲区。包括获取集210的指令在程序预处理时间被静态组合成执行集216,218和220。在图解的例子中,一个第一边界212把第一执行集216的后两个指令#N和#N+1与包括第二第二执行集218的四个指令#N+2-#N+5区分开,一个第二边界214把第二执行集218和第三执行集220的前两个指令#N+6和#N+7区分开。系统并行调度相同执行集中的各个指令。基本可以同时调度和提交一个具体执行集中的所有指令,并且在一个执行集中的各个指令具有相同周期数的某些情况下,可以在最后的执行周期结束时终止各个指令。
参照图11,其中图解了系统的一部分的一个具体实施例。该实施例图解了一个前缀调度单元222,指令210,一个指令调度模块224,各个数据算术逻辑单元(DALU)32和地址产生单元(AGU)30。前缀调度单元222,指令210和指令调度模块224可以构成程序序列发生器24。在图解的实施例中,由于有六个执行单元,在一个执行集中可以组合的最大指令数应当是六。在图解的例子中,前两个指令N,N+1是前缀指令。前缀指令被传递到前缀调度单元222。前缀指令可以包含一个或多于一个的前缀字。前缀调度单元222把前缀指令转换成诸如组合扩展,条件执行和循环分支控制信号的,被反馈到指令调度单元224的控制信号。指令调度单元224接着把指令组合成执行集并且执行来自前缀调度单元222的控制信号指示的某种操作。接着通过一个路由机制把被组合的指令同时调度到合适的执行单元30,32,34以便并行解码和执行。同时调度意味着在一个公共时钟周期内开始执行各个组合指令。在系统10的图解实施例中,在一个公共时钟周期内开始执行各个组合指令,但在一个不同的时钟周期内一或多个组合指令可以完成执行。
参照图12,其中图解了系统10内可以使用的一个指令系统300的一个具体实施例。指令系统300包含一个指令前缀字302和一个指令根字316。指令前缀字302包含一个条件执行域304和其它域312。指令根316包含一个操作选择域306,一个可选操作数域308和一个用于诸如组合多个无前缀指令的其它操作的可选域310。条件执行域304包含关于是否有条件执行指令根316的信息。例如,如果条件执行域是一个第一值,则会无条件地执行指令根;如果是一个第二值,则会根据一个状态或数据寄存器内一个预定位的值有条件地执行指令根。在存在多于一个的被组合到一个执行集中的指令根的情况下,条件执行域304被用于确定是否执行整组指令根316。但在一个未示出的可选实施例中,条件执行域304可以控制有选择地执行或不执行一或多个指令根或跟在前缀之后的子集。在另一个实施例中,多个条件执行域中的每一个对应于多个指令根中的一个以便单独控制一个指令组中各个指令根的执行。在一个最优实施例中,前缀302和指令根316构成一个单独的完整指令314。在这样的系统中,如果指令314被用于无条件执行并且前缀302不需被用于此后描述的其它目的,可以把它从指令314中删除。
参照图13,其中公开了一个指令系统320的一个实施例。指令系统320包含一个前缀322,一个第一指令根326,和多达2N个的指令根330。前缀322包含一个有N位宽的组域324。各个指令根326-330包含一个操作选择域331,332和其它的可选域。组域324指示紧跟在前缀322之后并行执行多少个指令根326-330。这样,前缀322中的组域324明确地把指令根组合成执行集。在最优实施例中,具有各种操作选择域值的指令根可以和其它指令根组合在一起,由于硬件或定时约束不可以组合其它的值。如图14所示,指令字346,348与前缀混合以构成一个指令组358,其中指令根350不被组合并且构成一个单字指令组360。
参照图15,其中图解了指令系统的另一个实施例。指令系统包含一个前缀380和一个指令根384。指令系统通过一个诸如传递到或来自存储器的32位或64位数据项的变长数据操作数388进行操作。前缀380包含一个操作数长度调整域382,并且指令根384包含一个操作选择域386。前缀380,指令根384和操作数388共同构成一个指令390。操作长度调整域382指示操作数388具有一个第一预定长度,还是一个经过调整的第二长度。例如,在操作选择域386指示指令根384是一个16位字的移动操作并且操作数长度调整域382被清除的情况下,操作数的长度为16位。但如果操作数长度调整域382被设置,则操作变成32位字的操作并且操作数长度为32位。通过把长度调整域编码成前缀字380,增加了可以选择执行的操作的数量,但不必增加指令根384中操作选择域386的任何额外长度,因而在某些环境下减少了代码长度。
参照图16,其中公开了指令系统400的一个实施例。指令系统400包括一个前缀402和一个指令根408。前缀402包含一或多个寄存器组选择域,例如一个第一寄存器组选择域404和一个第二寄存器组选择域406。第一和第二寄存器组选择域404,406长度均有N位。指令字408包含M位寄存器选择域410,412。第一寄存器组选择域404可以被用于指示一个具体的,可被用于诸如一个第一DALU单元32的第一执行单元的寄存器组。第二寄存器组选择域406可以被用于指示一个具体的,可被用于诸如一个第二DALU单元32的第二执行单元的寄存器组。在一个具体实施例中,N为1并且M为3。在这个实施例中,有两个不同的寄存器组,例如系统10的寄存器队列28和29,并且各个寄存器组具有8个寄存器。通过这种方式,通过使用前缀字402的寄存器组选择域404-406而不是指令408中的额外空间可以有选择地存取较高组的,诸如寄存器队列29中寄存器R8-R15的寄存器,因而在某些环境下节省了指令字存储器空间。
参照图17,其中示出了具有变长前缀字的指令系统420的一个实施例。指令系统420包含一个第一前缀字422,一个第二前缀字424,和一个第N前缀字426。各个前缀字422-426包含一个相应的前缀长度域428-432。前缀长度域428-432构成一个链,均指示前缀字链是否完成或者是否有一个额外的前缀字。通过这种方式,许多前缀字可以被一起连接到一个变长链中。但在最优实施例中,由于第一和第二前缀字具有其它的间接指示前缀是一个字长还是两个字长的域,所以第一个前缀字422不包含长度域。
下面公开了一个使用一个编码前缀指令的指令系统的具体实施例,其中混合了许多前面图解的前缀域。在这个实施例中,有一个单字前缀编码格式和一个双字前缀编码格式。
在单字前缀编码格式中,单字前缀具有下述二进制表示1001 aaaa 11|0-pjcc其中aaaa包含前缀字在内的被组合指令字数量,减1如果aaaa=0这是一个NOP指令,对于4 DALU的情况不被调度,对于4 DALU系统,aaaa的有效值为0到6
cc条件执行整个执行集00无条件执行01保留10在状态寄存器T被设置时条件执行11在状态寄存器被清除时条件执行pj在一个循环机制中使用的两个位“-”为未来诸如额外循环信息的使用而保留在双字形式中,前缀具有下述格式src0 src1 dest编码0011 aaaa TTHH pjcc 101M bBeE bBeE bBeE其中aaa,cc,pj与单字前缀中相同例如aaaa==3->双字前缀+2个组合指令字M为将来扩展到更长的前缀字而保留0前缀为双字1前缀至少有3个字长(至少一个附加字)EEE针对DALU UNIT 0的数据寄存器扩充;E个位均用作第四寄存器域编码位,有效地进行FFF->FFFF的调整,等等。
--1用于FFF域的高数据寄存器-1-用于J2域的高数据寄存器1--用于J1域的高数据寄存器注意FFF,J2,J1为操作数域。
例如DALU DJ1,DJ2,DF在两个操作数DALU单元指令的情况下,只使用-EE。
在一个操作数DALU单元指令的情况下,只使用--E。
eee对于DALU UNIT 1,与EEE相同BBB对于DALU UNIT 2,与EEE相同
bbb对于DALU UNIT 3,与EEE相同HH针对AGU指令的数据寄存器扩充。
-1用于AGU 0中MOVE操作的高数据寄存器1-用于AGU10中MOVE操作的高数据寄存器例如,在系统10中,当H位被设置成1时使用寄存器队列29中的寄存器而不是寄存器队列28中的寄存器。
TT按比例扩大MOVE指令以便更宽地传送;每个位激活一个AGU单元。对于各个单元,这些位适用于单元也对一个指令进行解码的情况MOVE.2W,MOVE.2F,MOVE.L如果T位为0保持这些指令的原状如果T位为1MOVE.2W->MOVE.4WMOVE.2F->MOVE.4FMOVES.2F->MOVES.4FMOVE.L->MOVE.2L-1使AGU0中的指令被解释成更宽的MOVE1-使AGU1中的指令被解释成更宽的MOVE原则上这些组合为下述内容保留MOVE.2LMOVE.4WMOVE.4F根据另一个实施例,现在公开一个不使用前缀指令对指令进行组合的方法。参照图18,其中图解了一个没有可被用于静态组合的前缀字的指令。指令450包含一或多个指令字,例如一个第一指令字452和一个第二指令字454。第一指令字452包含一个也被称作一个操作码的操作选择域456,该选择域可被用于选择多个不同的,可以在诸如系统10的系统上执行的操作。操作选择域456包含一个长度为n位的类型子域458。在一个具体实施例中,n等于2。虽然在图解中以一个双指令字指令为例,但所述的操作选择域内的类型子域和类型子域的使用适用于许多种的单字和多字指令。
参照图19,该图例图解了如何可以把通过一个指令内的操作选择域编码的不同种类的指令映射到类型子域中的值。类型子域通常被用于提供组合和针对一个具有多指令和/或多指令字的执行集的多字指令信息。可以被执行的指令在高级别上被分成类型I指令和类型II指令。可以串行或并行地执行类型I指令,即类型I指令可以和其它指令组合以便在一个执行集中执行。类型II指令可以顺序执行,但并行执行的能力有限或者不能完全组合。某些类型II指令510不能与任何其它指令组合。这种不能组合的指令的一个例子是使数据处理器10处于低功率待命模式的休眠指令。
如图19所示,对于顺序执行的类型I指令,类型子域被设成一个第一值,例如针对图解实施例中片段502的01。对于和其它单字指令并行执行的类型I指令,类型子域被设成一个第二值,例如图中的00,片段504。至少一个类型II指令被设成一个第三值,例如10,片段510,或可选的一个第四值,例如11,片段512。使用所示的两位类型子域进行指令组合会减少指令选择的可用操作码空间。例如,在现有的系统中,如果一个单独的位被专用于组合信息,则操作码空间会被减少百分之五十(50%)。对于两位系统,操作码空间会被减少百分之二十五(25%)。
但在图解的实施例中,为了保留有用的操作码空间,针对类型子域的第二值,即00,某些多字指令重用一部分操作码空间。与至少一个其它指令并行执行的多字指令的片段506和顺序执行的多字指令的片段508使用一部分共享类型I并行单字指令的操作码象限。这种重用技术的一个实现方法是使用在其它情况下不允许使用的指令组合,例如把一个类型I可组合指令与一个类型II不可组合指令相组合。在其它情况下通过使用矛盾的指令组合,可以对多字序列进行编码。通过这种方式,可以保留有价值的操作码空间,因而改进了指令系统。
上述不同类型指令的一个例子职下所述。括号内是实际的汇编指令。
类型I串行502寄存器D0加1(inc d0)类型I并行504寄存器d0加1并且把寄存器r0所指地址的字移动到寄存器r1(inc d0,move.w(r0),d1)(两个单配对指令)多字506在把偏移加到寄存器d3中后移动寄存器中的地址(incd0,move.b(R3+1000),d3)(一个单字和一个多字指令)多字串行508把1000加到d0中并且存储到d1中(add#1000,d0,d1)类型II 510或512中断执行(doze)虽然片段510,512中的类型II指令可以具有相同类型,但在一个具体实施例中,可以分割指令以便不允许组合的指令被放在片段510中,而有限制地允许组合的指令被放在片段512中。
对于具有上述类型子域的指令,可以使用一般的组合规则。这种规则的一个例子是1、类型子域为00的指令字后面跟着被组合的额外指令字。
2、类型子域不为00的指令字是指令中的最后指令字。
3、最后指令字中的10指示至少有一个多字指令被执行,其中在执行集中有至少两个指令字。
4、一个指令组中第二个字中类型子域之后的一个位可被用来区分成对的双字指令和三字指令。在一个实施例中,区分位是紧跟在一个指令字组的第二个指令字中的类型子域之后的位。使用相同或其它指令中的附加位可以区分诸如四字指令的其它指令和三字指令,以及成对的单或双字指令。
在一个具体的图解实施例中,有3种传递组合信息以便把指令组合成执行集的方式-使用指令中2-3个最有意义的位—不使用前缀-使用一个执行集的单字前缀-使用一个执行集的双字前缀下面的组合算法选择要使用(当给出要组合的指令时)的选项以便减少指令代码长度。
该算法是-在执行集中使用寄存器d8-d15?*是->使用双字前缀*否->继续-执行集有条件执行(Ifc),或应当传递循环信息?*是->使用单字前缀*否->继续-执行集只有一个指令?*是->不需要前缀*否->继续-可以根据其类型组合执行集中的指令?*是->不需要前缀-只使用2个最有意义的位对组合进行编码*否->使用单字前缀下面公开了以列表形式对一个静态组合实施例进行的描述。
单字指令类型编码其中的2个最有意义的位类型子域458类型允许组合00 1 与下一个指令组合01 1 执行集结束—可以和前面的类型1指令(00)组合11 2 执行集结束—可以和前面的类型1指令(00)组合(不完全组合情况)10 4 执行集中只有一个指令,不能组合两和三字识别(L-执行集中的最后指令)字L-1字L0010由于10不能与00组合,所以这是一个针对两个单字指令的非法情况。因而针对这种情况保持
2&3字指令。
字L-2字L-1字L不关心 000 10 (L-1,L)是一个双字指令(类型3)--可以和前面指令组合非00 001 10 双字,不可组合(类型4)。(字L-2属于前面的执行集)00 001 10 (L-2,L-1,L)是一个三字组合指令(类型3)--可以和前面指令组合下面概述这里公开的其它方面。
在一个执行选定操作的数据处理器中,一个指令系统包含一个前缀字和一个指令字,该前缀字具有一个选择数据处理器执行选定的操作的条件的条件执行域,该指令字具有一个选择数据处理器要执行的操作的操作选择域。条件执行域可以选择一个数据处理器不执行选定操作的条件。在一个实施例中,前缀字和指令字包括一个指令和一个执行步骤,数据处理器执行上述步骤的条件取决于上述前缀字的条件执行域。指令可以包含多于一个的指令字。在另一个实施例中,前缀在指令中是可选的。
一个系统指示一个数据处理器执行选定的操作,该系统包含一个前缀字和一个指令字,该前缀字具有一个选择数据处理器执行选定的操作的条件的条件执行域,该指令字具有一个选择数据处理器要执行的操作的操作选择域。条件执行域可以选择上述数据处理器不执行选定操作的条件。在一个实施例中,前缀字和指令字包括一个指令,数据处理器执行上述指令的条件取决于上述前缀字的条件执行域。指令可以包含多于一个的指令字。并且,前缀在指令中可以是可选的。
在另一个实施例中,本发明公开了一个指示一个数据处理器执行选定的操作的系统,该系统包含一个前缀字和一个指令字,该前缀字具有一个选择数据处理器执行选定的操作的条件的条件执行域,该指令字具有一个选择数据处理器要执行的操作的操作选择域。条件执行域可以选择上述数据处理器不执行选定操作的条件。
前缀字和指令字包括一个指令,数据处理器执行上述指令的条件取决于上述前缀字的条件执行域。指令可以包含多于一个的指令字。
另一个实施例涉及通过具有第一和第二长度的操作数进行操作的一个数据处理器中的一个指令系统。该指令系统包含一个前缀字和一个指令字,上述前缀字具有一个用于调整一个被选定的操作,以便通过具有上述第二长度的一个操作数执行该操作的操作数长度调整域,上述指令字具有一个用于选择通过一个具有上述第一长度的操作数执行的操作的操作选择域。在一个实施例中,操作数具有多个长度,操作选择域选择一个通过具有上述多个长度中预定一个长度的操作数执行的操作,并且操作数长度调整域调整操作,以便通过一个具有上述多个长度中一个不同长度的操作数执行该操作。
在一个数据处理器中,一个指令系统包含一个前缀字和多个指令字,上述前缀字具有一个选择一个指令组的长度的指令组域,上述指令字均具有一个选择上述数据处理器执行的操作的操作选择域。数据处理器同时开始执行包括上述组的指令字选择的所有操作。前缀字和指令字可以构成一个指令。在一个实施例中,前缀字出现在上述指令中的各个指令字之前。在另一个实施例中,指令组域长度为n并且可以组合2n个上述多个指令字。也存在某些不能与任何上述多个指令字组合的指令字。
提供了一个控制数据处理器的系统。该系统包含一个指令根和一个指令前缀。该指令根具有一个用于选择由上述数据处理器执行的操作的操作选择域。指令前缀具有一个可以从下面至少一个中选择的域一个用于选择数据处理器执行上述选定操作的条件的条件执行域,一个调整选定的操作以便通过一个具有不同长度的操作数加以执行的操作数长度调整域,一个选择包含指令根的指令组的字长的指令组域,和一个选择上述指令前缀的字长的前缀长度选择域。指令可以包括多于一个的指令根。前缀通常出现在至少一个指令根之前。
一个控制具有多个寄存器的数据处理器的系统。该系统包含一个指令根,该指令根具有一个宽度为m,用于选择上述数据处理器的2m个寄存器中的一个的寄存器选择域;和一个指令前缀,该前缀具有一个宽度为n,用于扩展上述寄存器选择域的宽度以便选择上述数据处理器中2m+n个寄存器中的一个的寄存器选择扩展域。
这里已经描述了一个实施例,其中包含一个改进的方法和组合数据处理器指令的装置至少一个最优实施例,和指令系统的实施例。本领域技术人员显然可以理解,可以通过多种方式修改所公开的主题内容,并且可以假设出许多不同于专门提出并描述的最优形式的实施例。例如,只以举例的方式描述了数据处理器10的特定单元和配置。可以使用许多其它的可选系统。例如,核心12中的DMA16,存储器20,22和某些执行单元是可选的。相应地,上述公开的主题内容是说明性的,并且没有约束性,在法律允许的最大范围内,所附权利要求书试图覆盖所有这样的修改和落在本发明真实宗旨和范围内的其它实施例。本发明的范围可以通过对后面的权利要求及其等效作能够允许的最宽的解释后来确定。本发明的范围不应限于前面的详细描述。
权利要求
1.一个指令系统,其特征在于一个指令根,该指令根具有一个用于选择由上述数据处理器执行的操作的操作选择域;和一个指令前缀,该前缀具有一个从下面域组中选出的域一个条件执行域,用于选择一个条件,在该条件下数据处理器执行上述选择操作;一个操作数长度调整域,用于调整选择的操作以便通过一个具有不同长度的操作数加以执行;一个指令组域,用于选择一个指令组长度;和一个前缀长度选择域,用于选择上述指令的前缀长度。
2.如权利要求1所述的指令系统,其中上述域是上述条件执行域并且指令根和指令前缀构成一个指令,上述数据处理器执行上述指令的条件取决于上述指令前缀的上述条件执行域。
3.如权利要求2所述的指令系统,其中上述指令包含多于一个的指令根。
4.如权利要求1所述的指令系统,其中指令被分布在一个数据处理系统内。
5.在一个具有2n个包含2m个寄存器的组的数据处理器中的一个指令系统,其特征在于一个前缀字,该前缀字具有一个长度为n,用于选择2n组上述寄存器中的一个组的寄存器组选择域;一个指令字,该指令字具有一个长度为m,用于在上述选定的组中的2m个寄存器中选择一个寄存器的寄存器选择域。
6.一个控制数据处理器通过具有第一和第二长度的操作数执行操作的系统,其特征在于一个指令根,该指令根具有一个用于选择通过一个具有上述第一长度的操作数执行的操作的操作选择域;一个指令前缀,该指令前缀具有一个调整上述选定的操作以便通过具有上述第二长度的操作数执行该操作的操作数长度调整域。
7.在一个数据处理器中的指令系统,其特征在于多个指令根,每个指令根具有一个选择上述数据处理器执行的操作的操作选择域;一个指令前缀,该指令前缀具有一个用于选择多个上述指令根以构成一个组的指令组域,数据处理器同时开始执行上述组选定的所有操作。
8.一个数据处理系统,其特征在于一个包含多个执行单元的数据处理核心;至少一个与数据处理核心相连的外设;一个位于数据处理核心内的指令系统,该指令系统包括一个指令根,该指令根具有一个用于选择由上述数据处理器执行的操作的操作选择域;和一个指令前缀,该前缀具有一个从域组中选出的域,该域组包括一个用于选择数据处理器执行上述选择的操作的条件的条件执行域,一个调整选择的操作以便通过一个具有不同长度的操作数加以执行的操作数长度调整域,一个选择指令组长度的指令组域,和一个选择上述指令前缀长度的前缀长度选择域。
9.一个在顺序执行第一和第二种操作,并且以并行方式执行多个上述第一种操作的数据处理器中的指令系统,其特征在于一个指令,该指令具有一个用于选择上述数据处理器执行的上述第一和第二种操作中的一个的操作选择域,操作选择域具有一个宽度为n的类型子域,对该子域赋值如下在顺序执行上述第一种操作的情况下取一个第一值;在并行执行上述第一种操作的情况下取一个第二值;在执行上述第二种操作的情况下取从剩余(2n-2)个值中选择的一个第三值。
10.一个控制一个数据处理器顺序执行第一和第二种操作并且以并行方式执行多个上述第一种操作的系统,其特征在于一个指令,该指令具有一个用于选择上述数据处理器执行的第一和第二种操作中的一个的操作选择域,操作选择域具有一个类型子域,该类型子域具有一个针对顺序执行的上述第一类型操作的第一值;一个针对并行执行的上述第一类型操作和顺序执行的上述第二类型操作中至少一个选定操作的第二值。
全文摘要
一个控制一个数据处理器的系统,该系统包含一个指令根和一个指令前缀,该指令根具有一个用于选择由上述数据处理器执行的操作的操作选择域。该指令前缀具有一个域组中选出的域,该域组包括一个用于选择数据处理器执行上述选择的操作的条件的条件执行域,一个调整选择的操作以便通过一个具有不同长度的操作数加以执行的操作数长度调整域,一个选择指令组长度的指令组域,和一个选择上述指令前缀长度的前缀长度选择域,其中指令组包含指令根。也公开了一个对应于这个指令系统的数据处理器系统。还公开了一个静态组合不使用一个指令前缀的指令的指令系统。
文档编号G06F9/308GK1250906SQ9912109
公开日2000年4月19日 申请日期1999年10月12日 优先权日1998年10月13日
发明者兹维卡·罗森申, 亚科布·托卡尔, 尤里·达扬, 琼·鲍尔·格尔根 申请人:摩托罗拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1