CN1347028A - 处理器指令集 - Google Patents

处理器指令集 Download PDF

Info

Publication number
CN1347028A
CN1347028A CN01135371.6A CN01135371A CN1347028A CN 1347028 A CN1347028 A CN 1347028A CN 01135371 A CN01135371 A CN 01135371A CN 1347028 A CN1347028 A CN 1347028A
Authority
CN
China
Prior art keywords
format
foreign
mentioned
instruction
processor
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.)
Pending
Application number
CN01135371.6A
Other languages
English (en)
Inventor
奈杰尔·彼德·拖法姆
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.)
SROYOUNG Ltd
Original Assignee
SROYOUNG 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 SROYOUNG Ltd filed Critical SROYOUNG Ltd
Publication of CN1347028A publication Critical patent/CN1347028A/zh
Pending 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/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/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
    • 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/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)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Abstract

一个处理器分别具有第一和第二外部指令格式(F1,F2),其中由处理器接收指令(加法,加载)。每个指令具有一个指定某个要执行的操作的操作码(例如1011)。每个外部格式具有一或多个含有操作码的预先选择操作码位(F1:i+1-i+4;F2:i+1-i+3)。处理器还具有一个内部指令格式(G1),其中在执行操作之前将外部格式的指令转换成内部指令格式。可以在第一和第二外部格式(F1,F2)中指定一个第一操作(加法),并且可以在第二外部格式(F1)中指定一个第二操作(加载)。第一和第二操作在第二外部格式中具有不同的操作码(101,011)。在第一和第二外部格式共有的各个预先选择操作码位(i+1-i+3)中,两个外部格式中的第一操作(101)的操作码是相同的。这种“全等”指令编码允许在不需要主动识别各个单独的外部格式操作码的情况下简单并快速地执行将外部格式操作码转换成一个对应的内部格式操作码的转换过程。

Description

处理器指令集
本发明涉及处理器指令集。具体地,本发明涉及具有两个或更多不同指令集的处理器。本发明也涉及自动对这种处理器的指令进行编码的方法。
高性能处理器通常需要具有一个可以满足以下两个要求的指令集:紧凑代码(以便存储处理器程序所需的存储器数量足够地小),以及丰富的操作和操作数。在使用嵌入式处理器,即处理器被嵌入诸如移动通信设备的系统中的情况下这种要求特别重要。在这种情况下,由于诸如可用程序存储器的系统资源是有限的,所以高代码或指令密度具有非常的重要性。
然而由于紧凑代码导致对各个最经常的操作进行最小编码(从指令集中消除不经常的操作)并且丰富的操作和操作数需要正交32位精简指令集,这两个要求往往彼此冲突并且难以在单独的统一指令集中实现。因此在具有预置32位指令集的处理器中,建议增加一个紧凑16位指令集,该指令集提供最通用的功能和/或对寄存器操作数的有限子集的访问。
附图的图1示出了这种处理器中的指令集。处理器在内部的硬件层次上具有一个32位指令集ISINT。处理器在外部具有两个指令集IS1和IS2。第一个指令集IS1由与内部指令集ISINT相同的32位指令构成。第二个指令IS2由16位指令构成并且处理器包含将外部指令集IS2的各个16位指令转换成内部指令集ISINT中对应的32位指令的指令转换电路200。
嵌入处理器也可以是能够执行VLIW指令的超长指令字(VLIW)处理器。VLIW处理器的最重要的附加功能是指令层次并发(TAP),即在执行VLIW指令时同时提交两个或更多操作的能力。
在这种VLIW处理器中,一个指令发布单元具有多个指令发布槽口,每个指令发布槽口均与一个不同的执行单元相连。每个处理周期提交两个或更多指令的VLIW处理器通常根据提交指令的指令发布槽口用不同的格式(或格式组)对各个指令进行编码。在一个VLIW分组或包中将相同处理周期内要提交的指令合并在一起。一个指令在VLIW包中的位置确定了指令编码可以使用的格式子集。通过这种方式,针对VLIW包内不同位置的指令格式可以使用相同的编码而不会引入歧义。
实际上,经验表明一个程序内有90%或更多的指令很少被执行以致其只占用10%或更少的执行时间。剩余的10%的指令自然占用90%的执行时间。而且经常出现这样的情况,即一个程序中很少执行的部分不能够有效使用处理器去同时提交两个或更多指令的处理器。如果使用VLIW指令集对这样的程序部分进行编码,由于一个指令的结果被下一个指令用到,当连续指令不能出现在相同VLIW包中时,大部分指令将是被编译器插入程序中以填充VLIW包的"无操作"(NOP)指令。因而对于不能有效利用并行提交指令的能力或这种能力的性能提高未产生较大的影响的程序部分,期望对程序进行编码以实现最大的代码密度(即使用数量尽可能少的位)。
因此,期望为VLIW处理器提供一个紧凑格式指令集以便将VLIW结构的指令层次并发与诸如16位指令集的紧凑编码指令集的紧凑代码"占用区域"结合起来。
在参照图1提出的上述处理器中,在设计一个初始的32位指令集之后加入紧凑指令集,其结果是从16位指令到32位指令的转换令人失望地复杂和缓慢。
所以还期望以这样的方式设计指令集格式和编码,即可以更有效地实现从各个外部指令格式(例如至少一个VLIW和至少一个紧凑格式)到一个可以通过被硬件被直接执行的格式的转换。
根据本发明的第一个方面,提供一个具有以下特性的处理器:相应的第一和第二外部指令格式,其中由处理器接收指令,各个指令具有一个指定要执行的操作的操作码,并且各个外部格式具有一或多个其中含有操作码的预先选择操作码位;一个内部指令格式,其中在执行操作之前将外部格式的指令转换成上述内部指令格式;其中:操作包含一个可在上述第一和第二外部格式中指定的第一操作和一个可在上述第二外部格式中指定的第二操作。上述第一和第二操作在上述第二外部格式中具有不同的操作码;并且在第一和第二外部格式共有的各个上述预先选择操作码位中,两个外部格式中的第一操作的操作码是相同的。
根据本发明的第二个方面,提供一个具有以下特性的处理器指令编码:相应的第一和第二外部指令格式,其中由处理器接收指令,各个指令具有一个指定要执行的操作的操作码,并且各个外部格式具有一或多个其中含有操作码的预先选择操作码位;一个内部指令格式,其中在执行操作之前将外部格式的处理器指令转换成上述内部指令格式;其中:可在上述第一和第二外部格式中指定可被处理器执行的一个第一操作,可在上述第二外部格式中指定可被处理器执行的一个第二操作;上述第一和第二操作在上述第二外部格式中具有不同的操作码;并且在第一和第二外部格式共有的各个上述预先选择操作码位中,两个外部格式中的第一操作的操作码是相同的。
根据本发明的第三个方面,针对分别具有第一和第二外部指令格式的处理器提供一个处理器指令编码方法,其中由处理器接收指令,各个指令具有一个指定要执行的操作的操作码,并且各个外部格式具有一或多个其中含有操作码的预先选择操作码位,处理器还具有一个内部指令格式,其中在执行操作之前将外部格式的处理器指令转换成上述内部指令格式,并且操作包含一个可在上述第一和第二外部格式中指定的第一操作,和一个可在上述第二外部格式中指定的第二操作,上述方法包括的步骤有:在上述第二外部格式中用不同的操作码对上述第一和第二操作进行编码;并且在上述第一和第二外部格式中对第一操作的操作码进行编码以便在第一和第二外部格式共有的各个上述预先选择操作码位中第一操作在两个外部格式中操作码是相同的。
根据本发明的第四个方面,针对具有两个或更多外部指令格式和一或多个内部指令格式的处理器提供一个指令编码方法,该方法包括:a)选择在各个外部和内部格式中包含若干有效操作码位的初始编码参数和一组映射函数,各个上述映射函数被用来将一个外部格式中的上述操作码位指定的一个操作码转换成所有或一个内部格式中的上述操作码位指定的一个操作码;(b)为处理器可执行的各个操作分配一个操作码,该操作码不同于为可指定操作的各个外部和内部格式中的各个其它操作分配的操作码,所分配的操作码使得各个相关映射函数将这种为操作分配的外部格式操作码转换成为操作分配的内部格式操作码,并且使得为操作分配的所有内部格式操作码具有相同的有效操作码位;和c)如果在步骤(b)中对于每个上述操作没有可在各个可指定格式中分配的操作码,则确定限制步骤(b)中的分配的上述编码参数,放松限制参数并且重复步骤(b)。
根据本发明的第五个方面,提供一个计算机程序,当被执行时,上述计算机程序对具有两个或更多外部指令格式和一或多个内部指令格式的处理器的指令进行编码,上述计算机程序包括完成以下操作的代码部分:(a)选择在各个外部和内部格式中包含若干有效操作码位的初始编码参数和一组映射函数,各个上述映射函数被用来将一个外部格式中的上述操作码位指定的一个操作码转换成所有或一个内部格式中的上述操作码位指定的一个操作码;(b)为处理器可执行的各个操作分配一个操作码,该操作码位不同于为可指定操作的各个外部和内部格式中的各个其它操作分配的操作码,所分配的操作码位使得各个相关映射函数将这种为操作分配的外部格式操作码转换成为操作分配的内部格式操作码,并且使得为操作分配的所有内部格式操作码具有相同的有效操作码位;和(c)如果在步骤(b)中对于每个上述操作没有可在各个可指定格式中分配的操作码,则确定限制步骤(b)的分配的上述编码参数,放松强制参数并且接着重复步骤(b)。
现在参照附图进行举例,其中:
图1是用于解释前面建议的具有一个附加紧凑指令集的处理器的示意图;
图2示出了一个实现本发明的处理器的各个部分;
图3(A)是用于解释前面考虑的指令编码的示意图;
图3(B)是对应于图3、用于解释全等指令编码的示意图;
图4(A)和4(B)提供了一个用于解释实现本发明的指令编码方法的流程图;
图5示出了一个关于某特定例子中的外部和内部指令格式的示意图;
图6提供了一个图解图5的特定例子的各个外部和内部格式中可以指定的操作的列表;
图7(A)到7(H)提供了用于解释一个适用于图5的特定例子的自动编码方法的不同级段的示意图;和
图8示出了图7的方法实现的最终指令编码。
图2示出了一个实现本发明的处理器的各个部分。在这个例子,处理器是一个超长指令字(VLIW)处理器。处理器1包含一个指令发布单元10,一个调度表存储单元12,相应的第一,第二和第三VLIW转换单元4,6和8,一个标量转换单元9,相应的第一,第二和第三执行单元14,16和18,和一个寄存器文件20。
指令发布单元10具有三个分别连接到第一,第二和第三执行单元4,6和8的指令发布槽口IS1,IS2和IS3。第一,第二和第三转换单元4,6,和8的各个输出分别被连接到第一,第二和第三执行单元14,16和18的各个第一输入。
指令发布单元10具有另一个被连接到标量转换单元9的输出SC。标量转换单元9的一个输出被共连到各个执行单元14,16和18的一个第二输入。
一个第一总线22把所有3个执行单元14,16和18连接到寄存器文件20。一个第二总线24把第一和第二单元14和16(而不是这个实施例中的第三执行单元18)连接到存储器26,在这个例子中上述存储器是一个外部随机访问存储器(RAM)设备。可选地,存储器26可以是处理器1内部的RAM。
虽然图1示出了把执行单元连接到寄存器文件20和存储器26的共享总线22和24,但应当理解各个执行单元可以具有其自身的、针对寄存器文件和存储器的独立连接。
处理器1执行一个系列的处理周期。处理器可以有选择地在两个模式中工作:标量模式和VLIW模式。
在标量模式下,处理器执行来自一个具体指令集(可以和VLIW指令集相同或不同)的指令。在这个模式下,不在指令发布槽口IS1到IS3中提交指令。
另一方面,在VLIW模式下,指令发布单元在3个指令发布槽口IS1-IS3上每个周期可以并行提交多达3个指令,即充分利用了全部指令提交宽度。
在调度表存储单元12中共同存储标量模式指令和VLIW模式指令。根据调度表存储单元中存储的一个指令调度表提交指令。
如下所述,以至少两个不同的外部格式编写指令调度表中的指令,其中包含至少一个属于处理器的标量指令集的格式(此后称作"标量格式")和至少一个属于处理器的VLIW指令集的格式(此后称作"VLIW格式")。实际上可以有两个或更多标量格式和两个或更多VLIW格式。在使用VLIW格式的情况下,不同指令发布槽口可以具有不同的格式,虽然可以由两个或更多指令发布槽口共享一个格式。
另一方面,在处理器内部各个执行单元执行具有至少一个内部格式的指令。因此,为各个执行单元14,16和18提供一个把具有某个外部VLIW格式的指令转换成相应执行单元需要(或在有不止一个的情况下的适当)内部格式的转换单元4,6或8。类似地,提供标量转换单元9以便把具有一个外部标量格式的指令转换成执行单元所需的(适当)内部格式。
在相关转换单元4,6,8或9进行转换之后,对应执行单元14,16和18执行指令发布单元10在不同指令发布槽口或标量指令输出SC上提交的指令。各个执行单元可以被用来同时执行不止一个指令,因而在一个以前提交到有关的执行单元的指令完成执行之前可以开始执行一个新的指令。
为了执行指令,各个执行单元14,16和18通过第一总线22访问寄存器文件20。因而执行单元14,16和18可以读写寄存器文件20中包含的寄存器所保存的数值。并且,第一和第二执行单元14和16通过第二总线24访问外部存储器25以便允许读写存储在外部存储器26的存储器位置上的数值。在这个实施例中,第三执行单元18不访问外部存储器26,所以只能处理寄存器文件20中包含的数值。
如上所述,图2的处理器的结构定义了一个紧凑(例如16位)指令集和一个更宽的(例如32位)VLIW指令集。在各个VLIW包中至少有两个这样的宽指令。使用外部格式对属于紧凑指令集和VLIW指令集的指令进行编码。
还有至少一个这样的内部指令格式,在执行期间一个外部格式的所有指令都将转换成上述内部指令格式。
各个VLIW包由包内的不同位置(槽口)上的两个或更多指令构成。一个VLIW包内的各个槽口可以包含一个被编码成若干外部VLIW格式中的一种格式的指令。处理器提供的至少某些基础操作(例如加法,减法或乘法)可能需要能够被用于一个VLIW包的两个或更多或所有指令位置上。在这种情况下,在每个指令位置上可以用不同的外部格式对相同的基础操作进行编码。当然,当转换具有这些不同外部格式的指令时,它们必须在具有各种内部格式的相同位组内具有相同的操作码(操作码)。
基础操作也可能需要同时被两个或更多标量指令使用,例如在使用两个或更多不同类型的操作数或操作数寻址执行相同基础操作的情况下。在这种情况下,必须使用一个不同的标量格式对涉及相同基础操作的两个或更多标量指令中的各个指令进行编码,并且必须将其转换成一个不同的内部格式。并且,当被转换成一个内部格式时,上述两个或更多标量指令必须相同与所有VLIW格式指令相同的操作码以便进行转换成相同内部格式的相同操作。通常标量指令集会是完整(VLIW)指令集的一个子集,因而允许外部标量格式有更加紧凑的编码。
一个操作X可以出现在外部格式F1和F2中而另一个操作Y可以出现在外部格式F2和另一个外部格式F3中的事实使设计格式和为具有各个格式的各个操作分配代码的任务复杂化。这意味着外部格式F1,F2和F3的设计与操作X和Y的操作码的选择是独立的。图3(A)示出了一个有关前面考虑的指令编码的简单例子。在这个例子,一个加法操作出现在外部格式F1和F2中。格式F1和F2中的加法操作被映射成相同的内部格式G1。一个加载指令出现在外部格式F2和另一个外部格式F3中。两个格式中的加载操作被转换成相同的内部格式G2
如图3(A)所示,在不同的外部格式F1-F3中,不同的位组被用于指定操作码,即操作码字段是不同的。在格式F1中,四个从位i+1到位i+4的位被用来指定操作码。在格式F2中,三个从位i+1到位i+3的位被用来指定操作码。在格式F3中,四个从位i到位i+3的位被用来指定操作码。由于F2中的操作较少,所以F2的操作码字段可以短于F1和F3的操作码字段。
在图3(A)中,外部格式F1和F2具有位i+1到i+3的公共操作码位。对于格式F1中的加法操作和格式F2中的加载操作,这些公共位i+1到i+3是相同的,即使操作不同也是如此。这使转换过程复杂化。例如,在内部格式G1中,加法操作可以具有操作码"1011"。通过从F2中选择"101"并且附加一个"1"可以简单地把格式F2中的加法操作转换成这个内部格式操作码。然而为了把具有格式F1的加法操作转换成这个内部格式代码,不可以使用简单的选择操作。在这种情况下有必要检查外部格式F1中的所有操作码位i+1到i+4并且唯一匹配标识格式F1中的加法操作的位模式("1101")。不完整进行这种检查就不能将其与F1中的另一个操作区分开。
然而如果可以保证以下条件成立:
(i)格式F2中的"加法"和"加载"操作码不相同并且在相同格式F3以及至少一个其它格式中共同出现的任何其他操作对中的操作的操作码也不相同;和
(ii)在两个或更多外部格式中出现的每个操作(即在F1和F2中出现的"加法"操作和任何其他操作,以及在F2和F3中出现的"加载"操作和任何其他操作)在其出现的所有格式的所有公共操作码位中具有相同的编码;
则转换过程可以独立于其自身的操作码,并且可以只依赖于发现各个指令的外部格式(并且,如果存在不止一个内部格式,则发现目标内部格式)。具有这个性质的指令编码这里被称作"全等"指令编码。
在图3(B)中已经为图3(A)的加法和加载操作分配了全等指令编码。可以发现在两个格式F1和F2共用的三个操作码位中为加法指令分配的操作码(格式F1中的"1011"和格式F2中的"101")是相同的("101")。
类似地,在加载操作出现在格式F2和F3的情况下,格式F2和F3共用的三个操作码位在格式F2和F3是相同的("011")。
因而图3中的指令编码是全等的。这意味着转换单元执行的转换操作可以是一个简单的位操作,例如在从外部格式F1转换成内部格式G1的情况下选择从i+1到i+4中的某些或所有位,在从外部格式F2转换成内部格式G1或G2的情况下选择从i+1到i+3中某些或所有三个位,在从外部格式F2转换成内部格式G2的情况下选择从i到i-3中的某些或所有四个位。通过识别外部格式和目标内部格式可以简单确定指定转换所需的具体位选择。通过检查外部格式中的检查ID,例如图3(B)中标签为F1到F3的位可以识别外部格式。
在图3(D)中图解的只考虑两个操作的简单情况中完成设计具有全等性质的指令格式和操作码的任务是不困难的。然而当存在许多具有不同外部格式并且还出现在不同内部格式中的操作时,设计格式和分配操作码的任务变得非常困难。例如,一个处理器可以在其标量指令集中具有将近32到128个指令,在其VLIW指令集中具有32到128(或双倍)指令,并且可能有3到6个不同外部格式和4到6个不同内部格式。
这意味着迄今为止被用来进行转换的转换单元已经非常复杂,从而在上述处理器中产生传播延迟和过高的功耗。
下面描述一个设计用于实现全等指令编码的自动格式操作码和转换的方法。
为了描述这个确定指令格式内的操作码字段并且导出这些格式中的全等编码的方法,首先定义将使用的术语。
W = ∪ j = 1 N G j
是按照N个内部格式Gj编码的集合或所有内部指令。
各个内部格式Gj是W的一个适当子集,并且包括一组由所实现的处理器定义的内部指令。如果y是一个用格式Gj编码的指令,则通过函数gj(y)指定y的操作码,该函数从指令格式Gj中选择一个包含aj个位的子字段。
令Fi表示一个外部指令格式,其中i∈[1,M]。如果x是一个用格式Fi编码的指令,则通过函数fi(x)指定x的操作码,该函数从指令格式Fi中选择一个包含bi个位的子字段。
通过一或多个外部指令格式表示存储器中的各个内部指令。在通过两个或更多外部格式表示一个指令的情况下,各个变型必须被转换成相同的内部操作码。这些变型通常执行相同的函数,尽管其操作数的类型和表示可以不同。
当前的解释涉及被用来确定操作码字段宽度的过程,和在各个格式中分配操作代码的过程。操作数的编码也是重要的,但是独立于操作码分配,因而不在这里解释。
从外部格式Fi到内部格式Gj的转换需要一个映射函数mi,j,这个映射函数把bi个操作码位从Fi映射到Gj中的aj个操作码位。为了实现简单并且设计时易于处理,映射最好是位选择或置换。在这个解释中,还假定只有一个映射函数被用于任何外部和内部格式对之间的转换。
处理器的指令集结构针对各个内部指令y定义了一个相关的转换集合Ty,其中各个转换均是一个将某外部格式标识成转换源并且将某内部格式识别成转换目标的(j,i)对。对于各个转换,必须有一个映射函数mi,j。因此:
Ty={<i,j>:(y∈Gj)∧(x∈Fi)∧(y∈mi,j(x))}(等式1)
无论内部或外部,各个格式均具有一个根据格式内部的操作码数量来确定的基数。Fi的基数被写成|Fi|,因此外部和内部格式中操作码字段的尺寸必须满足下列不等式:
aj≥log2(|Gj|)
                             (等式2)
bi≥log2(|Fi|)
所以各个内部格式Gj定义了范围|0,2aj>中的操作码,而各个外部格式Fi定义了范围|0,2bi>中的操作码。在方法中的任意位置上,Qj均包含可以为内部格式Gj中的操作分配的操作码集合。类似地,Ri包含可以为外部格式Fi中的操作分配的操作码集合。
现在的问题是针对各个指令y∈N确定一个唯一的操作码并且针对指令集结构中定义的各个转换确定适当的、基于选择或置换的映射函数。如图4(A)和4(B)的流程图所示,现在可以使用前面引入的术语通过伪码描述该方法的一个最优实施例。
各个映射函数mi,j最初将外部格式Fi中选择数量为bi的有效操作码位映射成内部格式Gj中选择数量为aj的有效操作码位。这样可以使从外部格式Fi映射到内部格式Gj中aj个位的位数不超过q=min(aj,bi),其中将aj中所有未定义的位设置成零。为了简单,在这个最优实施例中假定各个映射函数在转换之后将外部格式操作码的所有位选作内部格式操作码的某些或所有位。其它映射函数可被用于本发明的其它实施例,例如包括置换的映射函数。
方法在步骤S1开始,其中首先计算理论上可以对各个外部格式和各个内部格式中的指令数量进行编码的操作码位最小可能数量aj或bi。这个最小可能数量aj或bi被用作一个针对有关格式的有效操作码位初始数量。
在步骤S2中,开始一系列新的迭代(如下所述,在实际情况下可能需要若干个迭代系列)。首先,对于各个内部格式Gj,构成一个可用操作码集合Qj,该集合由aj个位可以定义的所有可能操作码构成。类似地,对于各个内部格式Fi,分配一个可用操作码集合Ri,该集合由bi个位可以定义的所有可能操作码构成。如下所述,各个可用操作码可以具有数量等于工作数量的位,工作数量大于计算出的最小可能数量aj、bi或操作码位数。例如,所有集合Qj和Ri中的所有可用操作码的工作数量可以等于按上限计算出的最小可能数量aj或bi
步骤S3导致迭代执行内部格式中的所有操作并且确定出现操作码的各个外部格式中的操作码。
在各个迭代系列期间,每次迭代执行步骤S4到S9。一个基础操作被认为是一次迭代。在步骤S4中,对于所考虑的操作,方法检查转换有关的操作所需的各个映射函数的外部格式和内部格式的集合对Ri和Qj,并且将集合对中的两个设置共有的所有成员标识成一个交集ht。在步骤S5中,构成由所有需要的映射函数的所有交集ht的公共成员构成的一个集合H。如果在步骤S6发现结果是一个空集合,则没有发现允许的映射并且方法前进到步骤S11,其中在该步骤中放松约束。如果H包含至少一个公共操作码,则步骤S7选择H中的所有或一个公共操作码。
接着在步骤S8,从出现有关操作的各个外部和内部格式集合Ri和Qj,即在步骤S4中检查的集合中清除所选择的操作码。
当在步骤S9确定方法已经为所有需要的外部和内部格式中的所有操作成功分配了操作码时,方法终止。
由于步骤S11中的回溯过程接连放松编码约束直到操作码位的数量足够发现一个全等代码分配,所以可以保证方法会终止。
除了从外部格式Fi选择位之外,映射函数也可以置换位。例如,映射函数可以反置位的顺序。当映射的位的数量达到q时可以使用这种置换,其中q=min(aj,bi)。
如果p=max(aj,bi),则可能置换的总数为p!/(p-q)!。因而对于较大的指令集,可能的置换的数量会非常大。然而实际上p通常大约为5而q大约为3。这意味着对于各个映射最多有60个不同的置换函数。通常估计有五个不同的映射,因而在该方法如步骤S4到S9定义的各个迭代中总共有605个可能的映射函数集合要考虑。按照现代计算机的能力是可以对此进行自动列举和估算的。
对于较大的字段宽度,可能置换的数量大得难以控制。然而在这种情况下通过限制要搜寻的置换类别仍然能够成功执行该方法。例如,通过交换任意的位可以为n位字段定义n(n+1)/2个可能置换。通过选择一个对要用该方法来检查的可能置换的限制,可以将方法的运行时间限制成n次多项式。
下面针对一个特定的例子图解参照图4(A)和4(B)描述的方法的操作。在这个例子,一个VLIW处理器,例如如图2所示的处理器,能够同时分别从指令发布槽口A和B提交两个指令。
参照图5,可以发现从指令发布槽口A提交的指令所允许的外部VLIW格式包含第一和第二外部VLIW格式F1和F2。外部格式F1中的操作码位在图5中被表示成C1,格式F2中的操作码位被表示成C2
在从指令发布槽口B提交指令的情况下,有两个外部VLIW格式可用,一个与指令发布槽口A上可用的外部格式F2相同,另一个是第三外部VLIW格式F3。格式F3中的操作码位在图5中被表示成C3
另外在这个例子,处理器能够按照一个标量模式执行具有两个不同的16位标量外部格式F4和F5中的一个格式的指令。外部格式F4中的操作码位在图5中被表示成C4,而格式F5中的操作码位被表示成C5
在这个例子处理器还具有两个内部格式G1和G2。内部格式G1中的操作码位在图5中被表示成CA,而内部格式G2中的操作码位被表示成CB。各个标量指令被转换成一个具有内部格式G1和G2中的一个或两个格式、通过CA或CB字段编码的单独操作。
如图5所示,处理器具有三个转换单元30,32和34。转换单元30对应于指令发布槽口A并且能够把具有外部格式F1的操作码位C1或具有外部格式F2的操作码位C3转换成具有内部格式G1的操作码位CA或具有内部格式G2的操作码位CB
类似地,转换单元32对应于指令发布槽口B并且能够把具有外部格式F2的操作码位C2或具有外部格式F3的操作码位C3转换成具有内部格式G1的操作码位CA或具有内部格式G2的操作码位CB
转换单元34对应于标量指令并且能够把具有外部格式F4的操作码位C4或具有外部格式F5的操作码位C5转换成具有内部格式G1的操作码位CA或具有内部格式G2的操作码位CB
应当理解,图3中的转换单元30和32对应于图2中的转换单元4,6和8,图5中的转换单元34对应于图2中的转换单元9。
现在参照图6,当前例子中的处理器具有一个含有7个基础操作的较小集合:一个加法操作add,一个逻辑位操作or,一个乘法操作mul,一个直接加载操作li,一个减法操作sub,一个从VLIW模式返回操作rv和一个除法操作div。图6中提供的列表在第一(左边)列中列出了这7个基础操作。图6中的第二列指示内部格式中允许出现的有关操作。允许add,or,mul,li和sub指令在两个内部格式G1和G2中出现,因而具有"G1"和"G2"行,但是只允许rv和div指令出现在内部格式G2中,因而没有"G1"行。
图6中的剩余6个列涉及5个外部指令格式F1到F5。由于外部格式F2被允许出现在两个指令发布槽口A和指令发布槽口B上,在这种情况下外部格式F2具有两个为其分配的列。
6个外部格式列中的一列中的各个表格对应于一个指令。某些表格被加阴影而其它表格是无阴影的。行Gj和Fi上的一个表格内的一个指令必须被表示成外部格式F1并且在其表格被加阴影的情况下必须被转换成内部格式G1。如果表格没有阴影则有关的指令I不在外部格式Fi中出现。以图6中一个星号表示的表格为例。这个表格位于or指令的行G1和列F1上。表格的阴影表示or指令出现在外部格式F1和内部格式G1中,因而需要在两个格式中适当选择or操作的操作码并且在这两个格式之间有一个指令转换。
现在将参照图4(A)和4(B)描述的算法用于图5和6中确定操作码,各个格式中的操作码字段宽度和格式之间的映射函数(转换)的例子。
在这个例子基础操作集合W可以被写成:
W={add,or,mul,li,sub,rv,div}(等式3)
内部格式的数量N为2(G1和G2)并且外部格式的数量M为5(F1到F5)。
参照图6,对于各个外部格式Fi,如果对于任何操作在行Gj中有一个加阴影表格,则需要一个映射函数mi,j。例如,以外部格式F1为例,由于在G2行F1列的表格中没有阴影,可以发现需要映射函数的是内部格式G1而不是内部格式G2
因而在当前的例子中需要下列映射函数:m1,1,m3,1,m2,2,m3,2,m4,1,m4,2,m5,1和m5,2
从图6直接导出的各个操作的转换对t如下所示:
Tadd={<1,1>,<2,1>,<2,2>,<3,2>,<4,1>,<4,2>,<5,1>,<5,2>}
Tor={<1,1>,<2,1>,<2,2>,<3,2>,<4,1>,<4,2>,<5,1>,<5,2>}
Tmul={<1,1>,<2,1>,<2,2>,<3,2>,<4,1>,<4,2>,<5,1>,<5,2>}
Tli={<2,1>,<2,2>,<3,2>,<4,1>,<4,2>}
Tsub={<1,1>,<3,2>,<5,1>,<5,2>}
Trv={<3,2>}
Tdiv={<3,2>,<5,2>}
                                          (等式4)
在算法(图4(A))的步骤S1中,确定各个格式中需要的操作码的数量。对于各个外部格式,通过观测在针对外部格式的列中至少有一个加阴影表格的操作的数量来确定上述数量。例如在外部格式F1的情况下,可以发现四个操作(add,or,mul和sub)在相关列中有一个加阴影表格。在一个外部格式具有两个列(例如外部格式F2)的情况下,一个操作只被计数一次,即使其出现在一个列的一个内部格式和另一个列的内部格式中也是如此。因而在外部格式F2的情况下操作|F2|的数量为4。
在一个内部格式的情况下,通过对分配给相关内部格式的总行数(包含至少一个加阴影表格)进行计数来计算需要的操作码数量。例如内部格式G1具有5个带阴影表格的行。内部格式G2具有7个带阴影表格的行。
因而不同内部和外部格式中需要的操作码数量为:|G1|=5,|G2|=7,|F1|=4,|F2|=4,|F3|=6,|F4|=4和|F5|=5。
结果在步骤S1中,有效操作码位的初始数量被确定成a1=3,a2=3,b1=2,b2=2,b3=3,b4=2和b5=3。这些数量表示理论上可以对相关格式中出现的操作数量进行编码的最小可能位数,并且在算法执行过程中可能需要增加。如等式5所示,在步骤S2中针对各个外部格式和各个内部格式产生一组可用操作码。
R1={000,001,010,011}
R2={000,001,010,011}
R3={000,001,010,011,100,101,110,111)
R4={000,001,010,011}
R5={000,001,010,011,100,101,110,111}
Q1={000,001,010,011,100,101,110,111}
Q2={000,001,010,011,100,10l 110,111}
…(等式5)
各个操作码中的工作位数最初被设置成等于任何内部和外部格式中间的操作码位的最高需要数量,即格式G1,G2和F3需要的3个操作码位。外部格式Fi的操作码的初始集合Ri由四个三位码000,001,010和011构成。由于在步骤S1中b1被计算成2,所以需要四个码。对于其它的2位外部格式R2和R4有相同的结果。在外部格式F3和F5的情况下,需要八个代码并且被分配给R3和R5的初始代码是000,001,010,011,100,101,110和111。
内部格式G1和G2均需要八个代码(a1=3并且a2=3),所以这些内部格式的操作码的初始集合Q1和Q2与外部格式R3和R5的相同。
在步骤S3中,开始第一迭代系列,并且在这个第一系列中初始选择图6中的第一操作,即加法操作。
在步骤S4中,考虑操作中未在各个相关的外部和内部格式对(在这种情况下总共有8对:F1-G1,F2-G1,F4-G1,F5-G1,F2-G2,F3-G2,F4-F2,F5-G2)中使用的可用操作码。由于不存在尚未分配的操作码,所以对于5对F1-G1,F2-G1,F4-G1,F2-G2和F4-G2,ht={000,001,010,011},对于3对F5-G1,F3-G2和F5-G2,ht={000,001,010,011,100,101,110,111}。因而,在步骤S5中H={000,001,010,011}。
在步骤S6中检查H是否为空。在这种情况下H非空,所以处理前进到步骤S7。这里,首先从H中选择操作码c=000。所以操作码000被分配给加法操作。
在步骤S8中,更新内部格式操作码集合Q1和Q2以便清除其中可能包含的操作码000。因而从集合Q1和Q2中清除了代码000。
并且在步骤S8中,更新各个相关外部格式(在这种情况下包括所有的外部格式F1到F5)的可用操作码集合以便清除其中可能包含的操作码000。因而从集合R1到R5中清除了000。
第一次迭代中执行的分配的结果如图7(A)所示。在图7(A)-7(H)中示出了集合Q或R中剩余的操作码。并且在相关表格中输入在外部和内部格式中进行的任何操作码分配。
接着处理返回到步骤S3以便进行这个系列的第二次迭代。在第二次迭代中考虑or操作。在步骤S4中考虑的对与第一次迭代相同。步骤S4和S5的结果是H={001,010,011}。因而在步骤S6中H非空并且处理前进到步骤S7。在步骤S7中选择操作码c=001。因此在步骤S8中从内部格式G1和G2的各个可用操作码集合Q1和Q2中清除操作码001。 类似地,在外部格式F1-F5的集合R1-R5中清除代码001。第二次迭代之后的结果如图7(B)所示。
在第三次迭代中考虑mul操作。在步骤S4中考虑的对与第一和第二次迭代相同。在这种情况下在步骤S5中执行的计算的结果H是{010,011},因而在步骤S7中选择操作码010。在步骤S8中从所有集合Q1-Q2和R1-R5中清除操作码010。
因而010被分配给mul操作。图7(C)示出了此时达到的状态。
在系列的第四次迭代中考虑li指令。在这种情况下在步骤S4中检查的对是F2-G1,F4-G1,F2-G2和F4-G2。在这次迭代的步骤S5中确定H={011}。由于H集合非空,处理前进到步骤S7。这里选择代码011(集合H中的唯一可用代码)。因而代码011被分配给li。从相关集合Q1,Q2,R2和R4中清除这个代码,但是仍然在集合R1,R3和R5中保留。结果状态如图7(D)所示。
在第五次迭代中考虑sub指令。在步骤S4中转换集合Tsub={<1,1>,<3,2>,<5,1>,<5,2>}。因此,由于这些转换的外部和内部格式是F1-G1,F5-G1,F3-G2,F5-G2,所以对于F1-G1公共集合ht为{},而对于F3-G1,F3-G2和F5-G2公共集合ht为和{100,101,110,111}。
这意味着在步骤S5中H={φ}。这是由于虽然100,101,101,110和111仍然在R3,R5,Q1和Q2中仍然未使用,但这些代码在只包含011的剩余相关集合R1中均不可用。因此处理通过步骤S6到达步骤S11,其中对约束进行评估。确定R1和Q1(和R1与Q2)交集是空集。由于R1的成员少于Q1和Q2,因而可以合理地推论R1是限制因素。为了克服这个限制,需要增加F1的有效操作码位的数量并使之超过其初始值2。因此a1增加到3。其它数值a2-a5,b1和b2保持不变。
现在所有的现有操作码分配均为无效并且在步骤S2开始第二个迭代系列。在这个迭代系列中最初R1={000,0011,010,011,100,101,110,111}。在这个第二系列的第五次迭代中再次考虑sub指令。此阶段的状态如图7(E)所示。
此时在步骤S5中H={100,101,110,111}。在步骤S7中选择操作码c=100。在步骤S8中从R1,R3,R5,Q1和Q2中清除100。结果状态如图7(F)所示。
在第二系列的第六次迭代中首先考虑rv指令。在步骤S5中H={101,110,111}。在步骤S7中选择操作码c=101。在步骤S8中从R3和Q2中清除101。结果状态如图7(G)所示。
在第二系列的第七次迭代中首先考虑div指令。在步骤S5中H={110,111}。在步骤S7中选择操作码c=110。在步骤S8中从R3,R5和Q2中清除100。结果状态如图7(H)所示。
此时所有指令均被分配了操作码并且处理前进到步骤S10。在这个步骤中检查迄今为止分配的操作码以确定在相关的外部格式的指令中实际需要提供多少个外部格式中的位。例如在外部格式F4中,所有分配的代码000,001,010和011均具有前缀0。这意味着前缀0在外部格式F4中完全是冗余的。因此假定仍然可以将格式F4与所有其它外部格式区分开,则可以从格式F4的指令中省略前缀0,使得格式F4只需要一个2位操作码字段。对于外部格式F2也是如此。
当然在转换期间映射函数m4,1,m4,3,m2,1和m2,2必须插入前缀0以便将格式F4中的add,or,mul和li操作与格式F1,F3和F5中的sub,rv和div操作区分开。
当前缀位的数量大于为各个外部格式中的各个操作指定不同的操作码所需的各个指令集中的位数时这个优化步骤S10变得特别重要。
优化后的最终操作码如图8所示。
通过按照计算机程序进行操作的通用计算机可以实现基于本发明的方法。可以通过诸如存储介质(例如软盘或光盘只读存储器)或信号的适当承载介质可以传递这个计算机程序。这种承载信号可以是通过诸如国际互联网络的通信网络下载的信号。所附的计算机程序权利要求将被解释成包括计算机程序自身或具有前面提到的任何形式。
虽然前面的描述涉及VLIW处理器,但应当理解本发明适用于除VLIW处理器之外的其它处理器。一个实现本发明的处理器可以被包含成用于多媒体应用,网络路由器,视频移动电话,智能汽车,数字电视,语音识别,3D游戏等等的高集成度"单片系统"(SOC)中的处理器"核心"。

Claims (33)

1.一个处理器,该处理器具有:
相应的第一和第二外部指令格式,其中由处理器接收指令,各个指令具有一个指定要执行的操作的操作码,并且各个外部格式具有一或多个其中含有操作码的预先选择操作码位;
一个内部指令格式,其中在执行操作之前将外部格式的指令转换成上述内部指令格式;
其中:
操作包含一个可在上述第一和第二外部格式中指定的第一操作和一个可在上述第二外部格式中指定的第二操作。
上述第一和第二操作在上述第二外部格式中具有不同的操作码;和
在第一和第二外部格式共有的各个上述预先选择操作码位中,两个外部格式中的第一操作的操作码是相同的。
2.如权利要求1所述的处理器,
其中:
操作包含一或多个可在上述第一和第二外部格式中指定的第一操作和一或多个可在上述第二外部格式中指定的第二操作;
对于由一个上述第一操作和一个上述第二操作构成的每个操作对,操作对中的操作在上述第二外部格式中具有不同的操作码;和
在第一和第二外部格式共有的各个上述预先选择操作码位中,两个外部格式中的各个第一操作的操作码是相同的。
3.如权利要求1或2所述有处理器,该处理器具有:
一个第三外部指令格式,其中由处理器接收指令,各个指令具有一个指定要执行的操作的操作码,并且上述第三外部格式具有一或多个其中含有操作码的预先选择操作码位;
相应的第一和第二内部指令格式,其中在执行操作之前将外部格式的指令转换成上述内部指令格式;
其中:
可以在上述第二和第三外部格式中指定上述第二操作;
一个指定上述第一或第二外部格式中的上述第一操作的指令被转换成上述第一内部格式,并且一个指定上述第二或第三外部格式中的上述第二操作的指令被转换成上述第二内部格式;和
在第二和第三外部格式共有的各个上述预先选择操作码位中,两个外部格式中的第二操作的操作码是相同的。
4.如权利要求3所述的处理器,
其中:
操作包含一或多个均可在上述第一和第二外部格式中指定的第一操作和一或多个均可在上述第二外部格式中指定的第二操作;
对于由一个上述第一操作和一个上述第二操作构成的每个操作对,操作对中的操作在上述第二外部格式中具有不同的操作码;
在第一和第二外部格式共有的各个上述预先选择操作码位中,两个外部格式中的各个第一操作的操作码是相同的;并且
在第二和第三外部格式共有的各个上述预先选择操作码位中,两个外部格式中的各个第一操作的操作码是相同的。
5.如前面任何权利要求所述的处理器,该处理器是VLIW处理器,其中一个外部格式是用于标量指令的标量指令格式,另一个外部格式是用于VLIW指令的VLIW指令格式。
6.如前面任何权利要求所述的处理器,该处理器是VLIW处理器,其中外部格式是或者包含两个不同VLIW格式。
7.如权利要求6所述的处理器,其中在一个VLIW指令包的不同指令位置上分别使用两个不同的VLIW格式。
8.如权利要求6或7所述的处理器,其中一个VLIW指令包中的至少一个指令位置使用两个不同VLIW格式。
9.如前面任何权利要求所述的处理器,其中一个外部格式的指令宽度不同于另一个外部格式的指令宽度。
10.如前面任何权利要求所述有处理器,该处理器具有:
可以执行一个预定转换操作以便把各个上述外部格式操作码转换成一个对应的内部格式操作码的转换装置。
11.如权利要求10所述的处理器,其中上述转换操作涉及选择和/或置换外部格式指令中的上述预先选择操作码位中间的位。
12.如权利要求10或11所述的处理器,其中转换操作独立于外部格式操作码。
13.如权利要求12所述的处理器,其中转换装置可以识别各个外部格式指令将被转换成的内部格式并且根据识别的内部格式执行上述转换操作。
14.处理器指令编码,其中具有:
相应的第一和第二外部指令格式,其中由处理器接收指令,各个指令具有一个指定要执行的操作的操作码,并且各个外部格式具有一或多个其中含有操作码的预先选择操作码位;
一个内部指令格式,其中在执行操作之前将外部格式的处理器指令转换成上述内部指令格式;
其中:
可在上述第一和第二外部格式中指定可被处理器执行的一个第一操作,可在上述第二外部格式中指定可被处理器执行的一个第二操作;
上述第一和第二操作在上述第二外部格式中具有不同的操作码;并且
在第一和第二外部格式共有的各个上述预先选择操作码位中,两个外部格式中的第一操作的操作码是相同的。
15.针对分别具有第一和第二外部指令格式的处理器对处理器指令进行编码方法,其中由处理器接收指令,各个指令具有一个指定要执行的操作的操作码,并且各个外部格式具有一或多个其中含有操作码的预先选择操作码位,处理器还具有一个内部指令格式,其中在执行操作之前将外部格式的处理器指令转换成上述内部指令格式,并且操作包含一个可在上述第一和第二外部格式中指定的第一操作,和一个可在上述第二外部格式中指定的第二操作,上述方法包括的步骤有:
在上述第二外部格式中用不同的操作码对上述第一和第二操作进行编码;和
在上述第一和第二外部格式中对第一操作的操作码进行编码以便在第一和第二外部格式共有的各个上述预先选择操作码位中第一操作在两个外部格式中操作码是相同的。
16.对具有两个或更多外部指令格式和一或多个内部指令格式的处理器的指令进行编码的方法,该方法包括:
(a)选择在各个外部和内部格式中包含若干有效操作码位的初始编码参数和一组映射函数,各个上述映射函数被用来将一个外部格式中的上述操作码位指定的一个操作码转换成所有或一个内部格式中的上述操作码位指定的一个操作码;
(b)为处理器可执行的各个操作分配一个操作码,该操作码不同于为可指定操作的各个外部和内部格式中的各个其它操作分配的操作码,所分配的操作码使得各个相关映射函数将这种为操作分配的外部格式操作码转换成为操作分配的内部格式操作码,并且使得为操作分配的所有内部格式操作码具有相同的有效操作码位;和
(c)如果在步骤(b)中对于每个上述操作没有可在各个可指定格式中分配的操作码,则确定限制步骤(b)的分配的上述编码参数,放松约束参数并且接着重复步骤(b)。
17.如权利要求16所述的方法,其中各个上述映射函数涉及将外部格式操作码的所有位选择成内部格式操作码的某些或所有位。
18.如权利要求16或17所述的方法,其中在步骤(a)中针对各个外部和内部格式使有效操作码位的上述数量等于理论上可以对相关格式中能够指定的操作数量进行编码的最小可能操作码位数量。
19.如如权利要求16到18中任何一个所述的方法,其中步骤(b)包括一系列迭代,并且在开始迭代系列之前构成一个由各个外部和内部格式中的可用操作码组成的集合,在迭代系列的各个迭代中考虑一个上述操作并且根据对能够指定所考虑的操作的各个外部和内部格式中的可用操作码集合进行的检查的结果为所考虑的操作分配操作码。
20.如权利要求19所述的方法,其中针对各个上述外部和内部格式,在开始一系列迭代之前构成的可用操作码集合具有若干成员,这些成员取决于当前可用于上述格式的有效操作码位的上述数量。
21.如权利要求19或20所述的方法,其中所有集合中的可用操作码具有相同的工作位数。
22.如权利要求21所述的方法,其中上述工作数量被设置成等于理论上可以对外部或内部格式中能够指定的操作数量进行编码的最小可能操作码位数量,而上述外部或内部格式具有能够在相关格式中指定的最高操作数量。
23.如权利要求19到22中任何一个所述的方法,其中步骤(b)的各个上述迭代包括:
(b-1)确定能够指定所考虑的操作的所有外部和内部格式的集合所共有的可用操作码;和
(b-2)如果在步骤(b-1)中确定有一或多个这样的公共可用操作码,则选择全部或一个公共操作码,将其分配给所考虑的操作,并且从能够指定所考虑的操作的各个外部和内部格式的集合中清除所选择的操作码。
24.如权利要求23所述的方法,其中步骤(b)的各个上述迭代还包括:
(b-3)如果在步骤(b-1)确定在能够指定所考虑的操作的所有外部和内部格式的集合中没有公共可用操作码,则使所有已经分配的操作码无效并且执行步骤(c)。
25.如权利要求16到24中任何一个所述的方法,其中还包括:
(d)在为所有操作分配一个具有上述工作位数的上述可用操作码之后,针对各个外部格式确定工作数量是否大于为该外部格式中能够指定的各个操作提供其自身的不同操作码所需的最小位数,并且在大于的情况下将该外部格式中分配的操作码限制成所确定的最小位数。
26.如权利要求25所述的方法,其中步骤(d)包括:
(d-1)针对各个外部格式识别所涉及的外部格式中所有分配的操作码的一个最大长度公共前缀;和
(d-2)从所涉及的外部格式的所有已分配操作码中清除所识别的公共前缀;和
(d-3)调整被用来将所涉及的外部格式中的操作码位指定的一个操作码转换成内部格式操作码位指定的一个操作码的各个映射函数,使得映射函数在转换期间将公共前缀前加到所识别的外部格式操作码位上。
27.如权利要求16到26中任何一个所述的方法,其中在步骤(c)中如果确定一个外部或内部格式中的有效操作码位数量是约束参数,则增加该格式中的有效操作码位的数量。
28.如权利要求16到27中任何一个所述的方法,其中通过电子数据处理装置执行该方法。
29.一个在执行时对具有两个或更多外部指令格式和一或多个内部指令格式的处理器的指令进行编码的计算机程序,计算机程序包括完成以下操作的代码部分:
(a)选择在各个外部和内部格式中包含若干有效操作码位的初始编码参数和一组映射函数,各个上述映射函数被用来将一个外部格式中的上述操作码位指定的一个操作码转换成所有或一个内部格式中的上述操作码位指定的一个操作码;
(b)为处理器可执行的各个操作分配一个操作码,该操作码不同于为可指定操作的各个外部和内部格式中的各个其它操作分配的操作码,所分配的操作码使得各个相关映射函数将这种为操作分配的外部格式操作码转换成为操作分配的内部格式操作码,并且使得为操作分配的所有内部格式操作码具有相同的有效操作码位;和
和(c)如果在步骤(b)中对于每个上述操作没有可在各个可指定格式中分配的操作码,则确定限制步骤(b)的分配的上述编码参数,放松强制参数并且接着重复步骤(b)。
30.一个当在计算机上运行时使计算机执行如权利要求16到28中任何一个所述的编码方法的计算机程序。
31.一个如权利要求29或30所述,由一个承载介质传递的计算机程序。
32.一个如权利要求31所述的计算机程序,其中上述承载介质是一个存储介质。
33.一个如权利要求31所述的计算机程序,其中上述承载介质是信号。
CN01135371.6A 2000-10-09 2001-10-09 处理器指令集 Pending CN1347028A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0024723A GB2367915B (en) 2000-10-09 2000-10-09 Instruction sets for processors
GB0024723.9 2000-10-09

Publications (1)

Publication Number Publication Date
CN1347028A true CN1347028A (zh) 2002-05-01

Family

ID=9900945

Family Applications (1)

Application Number Title Priority Date Filing Date
CN01135371.6A Pending CN1347028A (zh) 2000-10-09 2001-10-09 处理器指令集

Country Status (5)

Country Link
US (2) US7130989B2 (zh)
EP (1) EP1195674A1 (zh)
JP (1) JP2002149399A (zh)
CN (1) CN1347028A (zh)
GB (1) GB2367915B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI556163B (zh) * 2011-12-06 2016-11-01 英特爾股份有限公司 用以轉譯向量指令的系統、設備與方法

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030195780A1 (en) * 2001-12-13 2003-10-16 Liquid Engines, Inc. Computer-based optimization system for financial performance management
US20070061236A1 (en) * 2003-01-23 2007-03-15 Lehman Brothers Inc. Combination of financial instruments and method for implementing investment strategy
JP4412905B2 (ja) * 2003-01-28 2010-02-10 パナソニック株式会社 低電力動作制御装置、およびプログラム最適化装置
US7707389B2 (en) * 2003-10-31 2010-04-27 Mips Technologies, Inc. Multi-ISA instruction fetch unit for a processor, and applications thereof
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
US20100115239A1 (en) * 2008-10-29 2010-05-06 Adapteva Incorporated Variable instruction width digital signal processor
US20110283089A1 (en) * 2009-01-28 2011-11-17 Harshal Ingale modularized micro processor design
JP2013504115A (ja) * 2009-09-04 2013-02-04 インテル ベネラックス ビー.ブィー. 方法および装置および記録されたキャリア
CN104679480A (zh) 2013-11-27 2015-06-03 上海芯豪微电子有限公司 一种指令集转换系统和方法
US9870339B2 (en) 2015-06-26 2018-01-16 Intel Corporation Hardware processors and methods for tightly-coupled heterogeneous computing

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0476722B1 (en) * 1985-04-08 1997-02-26 Hitachi, Ltd. Data processing system
GB2289353B (en) * 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Data processing with multiple instruction sets
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
US6101592A (en) * 1998-12-18 2000-08-08 Billions Of Operations Per Second, Inc. Methods and apparatus for scalable instruction set architecture with dynamic compact instructions
US6701515B1 (en) * 1999-05-27 2004-03-02 Tensilica, Inc. System and method for dynamically designing and evaluating configurable processor instructions
US6385757B1 (en) * 1999-08-20 2002-05-07 Hewlett-Packard Company Auto design of VLIW processors
US6490716B1 (en) * 1999-08-20 2002-12-03 Hewlett-Packard Company Automated design of processor instruction units
US6408428B1 (en) * 1999-08-20 2002-06-18 Hewlett-Packard Company Automated design of processor systems using feedback from internal measurements of candidate systems
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
US6941548B2 (en) * 2001-10-16 2005-09-06 Tensilica, Inc. Automatic instruction set architecture generation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI556163B (zh) * 2011-12-06 2016-11-01 英特爾股份有限公司 用以轉譯向量指令的系統、設備與方法

Also Published As

Publication number Publication date
GB0024723D0 (en) 2000-11-22
US7130989B2 (en) 2006-10-31
GB2367915A (en) 2002-04-17
US20050223192A1 (en) 2005-10-06
US7428630B2 (en) 2008-09-23
GB2367915B (en) 2002-11-13
US20020056036A1 (en) 2002-05-09
JP2002149399A (ja) 2002-05-24
EP1195674A1 (en) 2002-04-10

Similar Documents

Publication Publication Date Title
TWI406176B (zh) 準備用於具有多個發送埠之處理器的指令群
CN1148647C (zh) 数据处理系统及其控制方法
Sharma et al. Dnnweaver: From high-level deep network models to fpga acceleration
CN1286002C (zh) 执行部分宽度压缩数据指令的装置和方法
CN1347028A (zh) 处理器指令集
CN1129843C (zh) 使用组合的数据处理器系统和指令系统
CN1655118A (zh) 处理器和编译器
CN1252144A (zh) 一可编程组件中可构元件的自同步方法
CN1577257A (zh) 具有取整和移位的单指令多数据整数高位乘法
CN1229741C (zh) 借助并行定序器的数字电路实现
US20160117257A1 (en) Hardware-based array compression
CN1672132A (zh) 源到源的分区编译
CN1656445A (zh) 对宽存储器访问
CN1920781A (zh) 任务执行装置及方法
CN1147306A (zh) 多指令集映射
CN1624653A (zh) 使用3字节转义操作码的指令集扩展
CN1892602A (zh) 一种二进制翻译中库函数调用的处理方法
CN1278931A (zh) 特别适于译码数字音频信号的数字信号处理器
CN1893282A (zh) 一跨序列排序涡轮码系统和其操作方法
GB2308470A (en) Bit-width reduction of processor instructions
EP1866759B1 (en) Preparing instruction groups in a processor having multiple issue ports
CN1257462C (zh) 使得能够每寄存器处理多个带符号独立数据元的装置、方法和编译器
Wu et al. MSD: Mixing Signed Digit Representations for Hardware-efficient DNN Acceleration on FPGA with Heterogeneous Resources
CN1959630A (zh) 微处理器
US6298471B1 (en) Interconnect minimization in processor design

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication