CN1258361A - 处理不同宽度的命令的vliw处理器 - Google Patents

处理不同宽度的命令的vliw处理器 Download PDF

Info

Publication number
CN1258361A
CN1258361A CN99800301A CN99800301A CN1258361A CN 1258361 A CN1258361 A CN 1258361A CN 99800301 A CN99800301 A CN 99800301A CN 99800301 A CN99800301 A CN 99800301A CN 1258361 A CN1258361 A CN 1258361A
Authority
CN
China
Prior art keywords
order
territory
functional unit
instruction
instruction word
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
CN99800301A
Other languages
English (en)
Other versions
CN1126027C (zh
Inventor
G·A·斯莱文伯格
J·T·范艾恩多芬
S·拉思南
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN1258361A publication Critical patent/CN1258361A/zh
Application granted granted Critical
Publication of CN1126027C publication Critical patent/CN1126027C/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/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/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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound 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
    • 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
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

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

一个VLIW处理器有第一和第二两个功能单元,用于执行一个第一指令字中的第一和第二命令。相应地,第一和第二命令分别包含了域的第一和第二个域。本处理器还有一个第三功能单元,用于执行在第二指令字中的第三个命令。这第三个命令既包含第一个域也包含第二个域。

Description

处理不同宽度的命令的VLIW处理器
发明的领域
本发明有关一个VLIW(Very Large Instruction Word-超长指令字)处理器。本发明也涉及用于这样一个处理器的程序和这种程序的编译。
背景技术
VLIW处理器的一个例子是飞利浦电子公司的TM-1000处理器(TriMedia)。这种处理器被描述在,例如,欧洲专利申请EP 605 927(等价于美国的序列号07/999,080,现已放弃;PHA 21777)中。在一个VLIW处理器中,对指令的并行执行是通过在一单个长指令字中组合多个基本的机器命令获得的。典型地,每一个这样的基本命令代表一个RISC操作。对于每一个时钟周期,一个长指令字被提供给并行排列的功能单元中,这些功能单元以同步方式(1ock-step)进行操作。这些命令中的每一个都相应地被提供给这些单元中的一个。典型地,一个单元执行流水化的处理。
TM-1000处理器并行地分发命令,每一个命令位于超长指令字分发寄存器的一个相应的分发槽(issue slot)中。每一个分发槽与相应的一个处理单元组相关,并且与寄存器文件中的两个读端口和一个写入端口相关。一个特定的命令被指定到一个与特定分发槽相连的组中的功能单元中的某一个。该命令一般是包含一个操作码、两个源操作数定义和一个结果操作数定义。源操作数定义和结果操作数定义引用寄存器文件中的寄存器。在命令的执行过程中,源操作数是通过向与分发槽相连的读端口提供提取信号从特定分发槽中读取的。典型地,功能单元从这些读端口接收操作数,根据操作码执行这个命令,然后通过与特定分发槽相连的写入端口将处理结果写回寄存器文件。或者采用另一种方法,命令可以使用少于两个操作数和/或不对寄存器文件产生结果。
一个针对VLIW处理器的典型程序被翻译成针对这些功能单元的一组命令。一个编译时间调度程序将这些命令分配到长指令字中。调度程序通过优化并行操作尽量减少执行程序所需的时间。调度程序在下列条件限制下将命令结合成指令字:分配给同一指令的多个命令能被并行处理,并且有数据依赖关系限制。
发明概述
本发明的目标之一是提供一个VLIW处理器,相对于传统的VLIW处理器,该处理器具有能减少执行一个程序所需的指令字数目的体系架构。
为达此目的,本发明的VLIW处理器包含一个指令分发端口,用来顺序地提供第一和第二超长指令字。这些指令字的每一个包含一个分布在一个相应的命令级连中的有序的域级连。第一个字包括一个含有第一个域的第一个命令和含有第二个域的第二个命令。第二个字包含具有该第一个和第二个域的第三个命令。这种处理器具有一个第一和第二功能单元,第一个功能单元与分发端口连接用于处理第一个命令,第二个功能单元与分发端口连接,用于与第一单元同步地处理第二个命令。这种处理器还有第三个功能单元与分发端口连接,用于处理第三个命令。
本发明是基于灵活地将指令分发端口划分成分发槽。这意味着,例如,有可能采用不同的命令,这些命令使用不同数目域作为操作数。还有,不同命令可以具有不同长度的操作码。与处理命令的特定电路资源(在此指这些功能单元)相连的域,可以与和不同分发槽相连的不同组中的功能单元组合使用。这比将指令分发端口划分为固定分发槽允许使用更为复杂的命令。为了处理最复杂的命令,没有必要在分发槽中保留更多的空间。在传统的VLIW处理器中,如此复杂的命令不得不以多个指令字序列的形式使用几个较简单的命令来实现。相应地,因为完成该程序需要较少的指令字,与传统的VLIW处理器相比,该发明能允许更快地执行程序。
例如,在类似TM-1000这样的机器中,从三个操作数中计算结果的一个操作(例如,求平均数的操作)至少需要两个连续执行的命令,因此也需要至少两个指令。通过提供具有超过两个操作数的域的一个命令,该操作可以只用一个命令执行。而且,因为这些域能被灵活地分配给命令,这能实现对于所有命令的操作数不必保留超过两个域。
在该发明的一种实施方案中,第三个命令包含了用于执行第一和第二个命令的所有域。所以,例如,如果第一和第二个固定大小的分发槽分别被用于分发第一和第二个命令,第三个命令可以使用第一和第二个分发槽的组合。这简化了调度。
在每个命令中的不同的域,也就是在每一个分发槽中,每一个可以由一个固定的功能,譬如代表一个操作数寄存器的读地址,或者表示一个结果寄存器的写入地址或者表示一个操作码。这些不同域将与指令处理电路的固定部分相连,就象读端口或操作码解码器一样。在这种情况下,第三个指令可以使用两倍数量的操作数和/或产生两倍数量的结果和/或使用两倍大小的操作码。当分发槽每一个分别与一个相应的功能单元的组相连时,用于执行第三个命令的一个功能单元同时属于两个组。
在一个VLIW处理器中,一个命令所使用的域的组合对应于一个分发槽。典型地,一个常规分发槽的大小与第一和第二个命令相同,并用于常规的命令(使用一个分发槽,包含一个操作码域、两个输入寄存器选择域和一个结果寄存器选择域)。在这种情况下,在这种实施方案中用于第三个命令的域包含了整数个常规分发槽。在VLIW处理器程序中,用于命令的分发槽是一种稀缺资源:在程序中的用于命令的分发槽数目越多(在相应的指令中使用的相应的分发槽的数目之和),程序越慢。因此,用于第三条命令的常规分发槽的个数最好比用常规命令的组合来实现与第三条命令相同的功能所需的常规分发槽数目少。只有在这种情况下,第三条命令才节省作为稀缺资源的分发槽。
而且,用常规命令实现第三条命令也意味着这些常规命令的中间结果不得不用与普通寄存器大小相应的精度来表示(例如64位或者一个包含8位的8个元素的向量)。使用组合了多个普通命令的效果的第三个命令,如果需要的话,中间结果能以更高的精度来表示,在很多信号(比如图像和声音信号)处理应用中就是这种情况。
较佳地,每一个指令由固定数目的分发槽组成,这里每一个分发槽与一个或多个能够处理命令的功能单元相连。不同的功能单元提供给不同的命令组。这些功能单元与分发槽相连。当一个指令被分发时,从某个分发槽来的命令被送到与这个分发槽相连的功能单元中。对应于分别分发第一和第二个命令的分发槽,提供了一个第一功能单元和一个第二功能单元;同时提供了一个第三个功能单元,既与第一也和第二个分发槽相连。所以,第一和第二命令被分配到不同的功能单元进行处理。对于第三个命令,第三个功能单元认识到应该使用第一和第二分发槽,而第一和第二功能单元认识到它们不应该使用第一和第二分发槽。第三功能单元的激活由第一和第二分发槽中的一个的操作码域来触发。较佳地,这个操作码域控制利用在第一和第二分发槽中引用的操作数的第三个功能单元所做的操作。如果第一和第二分发槽中的某一个可能只包含一个能在自身执行的常规的命令,而不用其他的分发槽,情况就不是这样,以及如果另一分发槽发信号对那个常规命令进行修正,例如操作数的后处理或预处理、条件执行等,情况也不是这样。这会将第三功能单元命令的一些可能功能限制到作为常规命令可利用的那些命令以及这些命令的修改,这些命令只用一个分发槽就可以执行。这个限制将排除很多对于多媒体信号处理应用有用的命令。
本发明也关于一种编译程序的编译器,该编译器用于编译能灵活分配域给指令的VLIW处理器的程序,本发明还关于具有这种灵活分配的程序。
附图的简要描述
本发明的这些和其他一些方面将结合附图举例说明。其中,
图1是根据本发明的一个VLIW处理器的框图;
图2a-c是指令字格式的图;
图3是一个分发槽解码电路的框图;
图4是编译一个程序的流程图;
图5是将命令分配到指令槽的图。
优选实施方案
图1是一个VLIW处理器的图。VLIW处理器包含一个指令字存储器系统10、一个程序计数器11、一个解码和启动电路12、功能单元14a-k以及一个多端口寄存器文件16。计数器11被连接到存储器系统10的一个地址输入。存储器系统10有一个指令分发寄存器(未显示出来),该寄存器被分割成分发槽(也称为指令总线)。一个分发槽有几个功能并行的通路,以传送当前保存在分发寄存器中的指令字的各个位。分发寄存器的一个输出被连接到解码和启动电路12。电路12的输出连接到功能单元14a-k和多端口寄存器文件16。寄存器文件16的读取端口和写入端口连接到功能单元14a-k。存储器系统10在计数器11的控制下连续地向解码和启动电路12输送指令字。较佳地,系统10使用指令高速缓存和/或预取,但这对于本发明而言不是本质的。系统10也可以在输出之前对以压缩格式存储的指令字执行解压缩操作。解码和启动电路12接收指令字。电路12把发自存储器系统10的功能并行的通路当作一个域的集合,每一个域被关联到一个或多个通道。域的集合组成一个命令。命令的集合形成一个单一指令字。
图2a用第一种格式表示一个指令字,其中指令字被分成许多分发槽20a-e。分发槽20a-e中的每一个对应于一个命令。每一个槽有一个域用于一个操作码22a-e,有两个域用于操作数24a-e、26a-e(表示对寄存器文件16中一个相应的寄存器的引用),以及有一个域用于结果28a-e的目的地(表示对寄存器文件16中一个相应的寄存器的引用)。
图2b,c表示第二种格式的一个指令字,其中多个分发槽组合成“超级槽(superslot)”。例如,超级槽29a组合常规的槽20a和20b的域,而超级槽29b组合槽20c-e的域。超级槽格式允许实现的命令比以单个常规槽实现的命令使用更多的操作数。一般地,每一个单独的域22a-e,24a-e,26a-e,28a-e要么在超级槽29a和29b中具有和常规槽20a-e相同的功能,要么根本没有功能。例如,域24a-e和26a-e中具体的一个以第一种格式以及以第二种格式定义了一个操作数,或者根本不被使用。域22a-e中具体的一个以第一种格式以及以第二种格式用于一个操作码,或者根本不被使用。域28a-e中具体的一个以第一种格式以及以第二种格式用于目的地,或者根本不被使用。作为选择,第二种格式中的域22a-e,24a-e,26a-e,28a-e具有与第一种格式的域不同的用途。
图3是一个VLIW处理器的图,包括解码和启动电路30的部分、功能单元32a-c和多端口寄存器文件34的部分。解码和启动电路30部分包含一个连接到功能单元32a-c的指令解码器300。单元32a-c连接到寄存器文件34的读取端口302a和302b。一个结果写入单元304连接到寄存器文件34的一个写入端口342。读取端口302a,b的输出被连接到功能单元32a-c的输入。功能单元32a-c的输出连接到342的写入端口。解码和启动电路12包含如图3中每一个分发槽类似的电路。解码和启动电路12根据每一个域的功能处理来自域22a-e,24a-e,26a-e,28a-e中的信息。操作数域24a-e,26a-e的每一个分别与寄存器文件16中的一个读取端口关联。解码和启动电路12使用域24a-e,26a-e的内容来寻址相应的读取端口。类似地,目标域28a-e对应于寄存器文件16中的写入端口。解码和启动电路12使用域28a-e的内容来寻址相应的写入端口。操作码域22a-e每一个被输送到解码和启动电路12中的一个相应的指令解码器300,于是被解码的操作码被输送到功能单元14a-k中选定的一些单元中。典型地,解码和启动电路12使用流水线化的操作,例如在对指令字解码期间启动操作数的提取。在来自前一个指令字的一个命令仍在执行的同时,对来自一个指令字的命令的解码和提取也正在被执行,并且同时来自更早的一个指令字的命令的结果正在被写入目的地址。因为域22a-e,24a-e,26a-e,28a-e的功能预先已定义,并且独立于格式,所以操作数提取可以在指令解码完成之前开始。
多个功能单元14a-k被编排成组,就象图3中的组。每一个组分别与以第一种格式的一个指令字的一个相应的分发槽联系起来。当解码和启动电路12侦测到一个第一种格式的指令字时,电路12为每一个槽确定与该槽联系的组中的哪些单元(如果有的话)应该在该槽中执行这个命令。该功能单元随后接受控制信号执行该命令。这样,解码和启动电路12每次将导致一个组中的功能单元开始执行一个命令。典型地,同一类型的功能单元出现在不同组中。例如,每一个组包含一个ALU(算术逻辑单元)。这防止出现由于每次使用每个组中不超过一个功能单元造成的瓶颈。
功能单元14a-c中的某些不只属于一个组。这些单元被称为下面所说的超级功能单元。超级单元14a-c中的每一个与两个或多个特定的组联系起来。这意味着超级单元14a-c中的每一个能使用从至与这些特定的组相关的寄存器文件16的读入端口来的操作数。还有,超级单元14a-c能使用至与这些特定的组相关的寄存器文件16的写入端口。超级功能单元14a-c的命令来自以第二种格式的指令字。这些命令被放在超级槽29a和29b中。在超级槽中的操作数域24a,b和26a,b起着为超级单元14a-c从寄存器文件16中提取操作数的作用。域24a,b和26a,b的每一个连接到所有指令字的同一个读取端口,不管这个指令字的格式如何。结果是,提取能够在格式确定之前开始。类似地,目标域28a,b起到控制至寄存器文件16的写入端口的作用。每一个这些域都连接到所有指令字的同一个写入端口,独立于格式。当解码和启动电路12导致一个特定的超级单元开始执行一个命令时,电路12将防止功能单元14d-k中的任何一个开始执行与超级单元相连的组中的命令。在超级槽29a,b中的被解码的操作码域22a,b对应于与这些组相连的常规槽20a,b中的操作码域22a,b,并用于控制仅这些相关的超级单元14a-c。例如,可能只使用这些槽中的某一个的操作码来控制超级单元,但是也可能用一个组合电路来组合两个或多个这些槽的操作码。这样,能为超级单元14a-c中的每一个定义大量的不同操作。超级单元14a-c执行命令来实现那些需要超过两个操作数和/或产生超过两个结果的操作。这些操作的一些例子是:
AV(R1,R2,R3..)产生三个或多个操作数R1,R2,R3..的平均数;
ME(R1,R2,R3..)产生三个、五个或多个操作数的中值;
SO(R1,R2)排列两个操作数R1和R2,较大的操作数将置于一个结果寄存器中,而较小的置于另一个结果寄存器中;
TP(R1,R2,R3,R4...)一个有着R1,R2,R3,R4行的矩阵的转置;
RT(R1,R2,R3)将一个具有R1,R2,R3元素的向量旋转一个特定的角度。
在一个传统的VLIW处理器中,以上操作需要顺序执行几个命令。在一些情况下,多端口寄存器文件中的寄存器用以代表一组小的数的组合。例如,如果这个寄存器是64位宽的,每个寄存器能表示4个16位数。在这种情况下,这些数的每一个可以独立地被操作。例如,响应一个ADD命令,功能单元可以对来自两个寄存器的4对数做加法。
这种方法也能用于超级单元。例如,4个寄存器能表示16位的数的一个4×4矩阵。每个寄存器分别包含一个相应的四元组:R1=(a11,a12,a13,a14),R2=(a21,a22,a23,a24),R3=(a31,a32,a33,a34),R4=(a41,a42,a43,a44),每个元组分别表示该矩阵的相应的一行。保存在不同的寄存器但处于各元组中相同位置的元素集合代表矩阵的一列。在转置操作中,这些在不同的行但在相同位置的元素被保存在RESULT1=(a11,a21,a31,a41)和RESULT2=(a12,a22,a32,a42)中。用于矩阵转置操作的一个超级单元能用2个分发槽,产生一个4×4矩阵的两行。通过向这个功能单元发出2个命令,一个用于产生所转置的矩阵的上两行,另一个用于提供下两行,很快就能完成转置操作。
正移操作(shuffle operation)与上述操作相似:
SH R1,R2,R3->R4(,R5)
这个操作根据寄存器R3中定义的置换规则(permulation),对保存在寄存器R1和R2中数字进行置换和/或选择,把置换之后的结果数字保存在寄存器R4和可选的寄存器R5中。
在一些情况下,一个或多个操作数有标准值。在这些情况下,定义一个额外的命令很有优势,它仅占用一个分发槽。在这个额外的命令中,操作码定义这个特殊的操作和一个或多个操作数的标准值。标准值也可以是隐式定义的。这个额外命令包含仅引用余留操作数的操作数引用。这样一个命令能被用在具有第一种格式或者是第二种格式的一个指令字的一个单一操作槽中。当解码和启动电路12遇到这样的指令时,它向超级单元自身提供标准参数。这样,这个超级单元能接收到既使用一个分发槽也使用两个或多个分发槽的一个命令。在前一种情况下,采用标准值并且指令字能包含更多的命令。
在图1的实施方案中,每个超级单元使用与整数个功能单元的组关联的分发槽的所有域。一个备选的超级单元可以使用这些分发槽的一些但不是全部的域。例如,这样的一个备选单元可以处理3个操作数,其中2个来自一个特定分发槽的域,第3个来自另一个分发槽。当采用这样的一个备选单元时,其相关的分发槽的其它域可为其它的单元所用,而这些单元能与备选超级单元开始并行执行。举例说,这些其它的功能单元或许有仅仅一个操作数或根本没有操作数,或者不产生结果。所说的其它单元仅用备选单元留下未用的域中的一些。还有,这些其它功能单元或许就是备选超级功能单元自身,其使用该分发槽的一些域外加另一个分发槽的域。然而,使用备选功能单元对可从一个单一指令字接收命令的单元的结合加以复杂的限制。通过使用这些分发槽的所有域,或至少不使用部分已分配槽的剩余的域,能避免这个限制。这样能达到更高的并行度,并且指令字的编译更容易。
一个编译器为VLIW处理器产生指令字。这个编译器以相互之间有数据依赖关系的多个命令来描述一个程序。编译器搜索一种把所有的命令放置在一个指令字的集合中的方式。在程序执行期间,编译器执行最少数量的需要顺序执行的指令字。图4是用来表示一个编译程序的方法的流程图。在第一步40中,接收一组操作及这些操作之间的数据依赖关系描述。接下来,编译器开始搜索来放置用于这些操作的命令到一个指令字集合中的方式。第二步42测试是否接收来的所有操作的命令已被放置。如果是,这个编译过程就完成了。如果没有,执行第三步44,选择一个还没有为其放置命令的操作,并且对于该操作产生其操作数的前一“源操作”已经被放置。更进一步,在包含这个“源操作”的命令已放置好的指令字之后,在这个指令字集合中挑选出最早的指令字。第四步46测试构造一个指令字是否可能,这个指令字包括已经包含在最早的指令字中的命令加上一个用于被选择的操作的命令。步骤46考虑命令的特性和功能单元的分组。要对其测试以下两项是否可能
-把命令放在不同的组中;并且
-为超级功能单元放置命令以便没有别的命令使用与那些超级单元相连的组的分发槽。
如果这是可能的,被选择的指令字被更新,并且这个方法返回到第二步42。如果这是不可能的,执行第5步48,被选指令字的后续指令字被选中并重复执行第四步46。
图5是用于进一步解释第四步46的图示。在左边,一组操作表示为第一节点50a-d。在右边,一组分发槽表示为第二节点52a-e。第四个步骤的任务是测试是否存在一个从第一节点50a-d到第二节点52a-e的映射。在这个映射中,一个超级功能单元50d的一个操作映射到两个或多个分发槽52d,e。其它的第一节点50a-d对应常规的操作,每一个映射到第二节点52a-e中的某一对应的节点。节点52a-e的每一个对应于一个分发槽,这个分发槽与一个组关联,这个组包含一个能执行该相关操作的功能单元。当然,图4所示仅是一个简化的例子。总的来说,最小化的执行受限于命令间的数据依赖(即,如果一个第一个命令使用一个第二个命令的结果作为输入,这些命令应该放置在不同的指令字中,包含第一个命令的指令字在包含第二个命令的指令字之后)。而且,最小化的执行受到功能单元能够开始并行执行每个指令字的所有命令的能力的制约。

Claims (13)

1、一种VLIW处理器(图1),包括:
-一个指令分发端口,用于提供超长指令字,这些字的每一个都包含几个命令和分布在命令(20a-20e)中的域(22a-28a;22b-28b;22e-28e),其中:
-在超长指令字中的一个第一个字(图2a)包含命令的一个第一个命令(20a),其包括域的一个第一个域(28a);同时也包含命令的一个第二个命令(20b),其包括域(28b)的一个第二个域;并且
-在超长指令字中的一个第二个字(图2b)包含命令的一个第三个命令(29a),其包括域的第一个域和第二个域;
-一个第一个功能单元(14d),与分发端口连接来处理该第一个命令;
-一个第二个功能单元(14g),与分发端口连接来处理该第二个命令,该处理与第一个单元同时进行;并且
-一个第三个功能单元(14a),与分发端口连接来处理该第三个命令。
2、根据权利要求1的处理器,其中,第三个命令包括第一个命令的所有的域。
3、根据权利要求1的处理器,其中:
-该处理器有一个多端口寄存器文件(16);
-指令分发端口向寄存器文件提供第一个域,以取得一个第一个操作数用于由第一个功能单元执行的第一个命令;
-指令分发端口向寄存器文件提供第二个域,以取得一个第二个操作数用于由第二个功能单元执行的第二个命令;并且
-指令分发端口向寄存器文件提供第一个和第二个域,以取得多个操作数用于由第三个功能单元执行的第三个命令。
4、根据权利要求3的处理器,其中:
-第一个功能单元写执行第一个命令的第一个结果到寄存器文件的一个第一个地址,该地址在第一个命令的一个第一个相关的域中指示;
-第二个功能单元写执行第二个命令的一个第二个结果到寄存器文件的一个第二个地址,该地址在第二个命令的一个第二个相关的域中指示;
-第三个功能单元分别写执行第三个命令的第三和第四个结果到寄存器文件的第三和第四个地址,该地址在第三个命令的上述第一和第二个相关的域中指示。
5、根据权利要求1的处理器,在第三个命令的另一执行阶段的同时,安排执行第一和/或第二命令的一个执行阶段。
6、根据权利要求5的处理器,包含一个能执行第一和第三个命令的第四个功能单元(14b?),当第一个命令被执行的时候,这第四个单元可操作来向该功能单元提供一个标准内容,而不是从第二个域的内容中导出的信息。
7、一种编译用于VLIW处理器(图1)的指令的方法,这个处理器包含功能单元组(14a-14k),对于每一组功能单元每个指令字分别允许至多包含一个命令,这个处理器也包含至少一个与至少两个组相关连的另一功能单元(14a-14c),每个包含用于这个另一功能单元的命令的指令字不允许包含用于在上述至少两个组的任何一个功能单元的命令,这个方法包括:
-接收一组必须由功能单元执行的命令;
-搜索命令到指令字的相容分配,所说的搜索包含从搜索中排除那些既包含用于该功能单元的命令又包含至少一个用于来自上述至少两个组的任一功能单元的命令的指令字。
8、一种机器可读介质,其包含一个程序,用于执行编译用于VLIW处理器的指令的方法,这个处理器包含功能单元组(14a-14k),每个指令字分别针对功能单元的每一组被允许包含至多一个相应的命令,这个处理器也包含至少一个另一功能单元(14a-14c),这个另一功能单元与这些组中的至少两个组相关联,每个包含针对该另一功能单元的命令的指令字不允许包含针对在所述组中的至少两个组中的任一功能单元的命令,这个方法包含:
-接收必须由该功能单元执行的命令集;
-搜索命令到指令字的相容分配,所说的搜索包含从搜索中消除那些既包含一个用于该功能单元的命令又包含至少一个用于来自上述组中的至少两个组的任一功能单元的命令的指令字。
9、一种在VLIW处理器上执行一个计算机程序的方法,这种处理器拥有指令分发端口用于分发在指令分发端口中的域(22a-28a;...22e-28e)中的连续的指令字,这个方法包含步骤:
-执行一个第一个指令字(图2a),其包含一个第一和第二个命令(20a,20b),这两个命令分别包含了来自指令分发端口的一个第一和第二个域(28a,28b),
-执行一个第二个指令(图2b),该指令包含一个第三个命令(29a),这个命令既包含第一个域也包含第二个域。
10、根据权利要求10的方法,其中,由用在第一个命令中的所有域构成的域集(22a-28a;22b-28b)被包含在第三个命令中,这个方法包含使用那个域集中的域执行第三个命令。
11、一种机器可读介质,其包含一个用于VLIW处理器的程序,这个程序包含一个第一个指令字(图2a),这个指令字包含一个第一和第二个命令(20a;20b),这两个命令分别包含第一和第二个域(28a;28b),并且第二个指令字(图2b)包含第三个命令(29a),这个命令既包含第一个域也包含第二个域。
12、根据权利要求12的机器可读介质,其中,由所有用在第一个命令中的所有域构成的域集(22a-28a;22b-28b)被包含在第三个命令中。
13.根据权利要求13的机器可读介质,其中,所有用在第二个命令中的域构成的一组域(22a-28a;22b-28b)被包含在第三个命令中。
CN99800301A 1998-01-16 1999-01-15 处理不同宽度的命令的vliw处理器 Expired - Lifetime CN1126027C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/008,339 US6076154A (en) 1998-01-16 1998-01-16 VLIW processor has different functional units operating on commands of different widths
US09/008,339 1998-01-16

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CNA031063144A Division CN1516003A (zh) 1998-01-16 1999-01-15 一种机器可读介质

Publications (2)

Publication Number Publication Date
CN1258361A true CN1258361A (zh) 2000-06-28
CN1126027C CN1126027C (zh) 2003-10-29

Family

ID=21731066

Family Applications (2)

Application Number Title Priority Date Filing Date
CNA031063144A Pending CN1516003A (zh) 1998-01-16 1999-01-15 一种机器可读介质
CN99800301A Expired - Lifetime CN1126027C (zh) 1998-01-16 1999-01-15 处理不同宽度的命令的vliw处理器

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CNA031063144A Pending CN1516003A (zh) 1998-01-16 1999-01-15 一种机器可读介质

Country Status (8)

Country Link
US (1) US6076154A (zh)
EP (1) EP0968463B1 (zh)
JP (1) JP3976082B2 (zh)
KR (1) KR100715055B1 (zh)
CN (2) CN1516003A (zh)
DE (1) DE69933088T2 (zh)
TW (1) TW469407B (zh)
WO (1) WO1999036845A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100343798C (zh) * 2002-08-05 2007-10-17 Nxp股份有限公司 用于处理vliw指令的处理器和方法

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3790607B2 (ja) 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
WO1999024903A1 (en) * 1997-11-07 1999-05-20 Bops Incorporated METHODS AND APPARATUS FOR EFFICIENT SYNCHRONOUS MIMD OPERATIONS WITH iVLIW PE-to-PE COMMUNICATION
JP3541669B2 (ja) * 1998-03-30 2004-07-14 松下電器産業株式会社 演算処理装置
WO2000079395A1 (en) * 1999-06-21 2000-12-28 Bops Incorporated Methods and apparatus for establishing port priority functions in a vliw processor
GB2352066B (en) * 1999-07-14 2003-11-05 Element 14 Ltd An instruction set for a computer
TW525091B (en) * 2000-10-05 2003-03-21 Koninkl Philips Electronics Nv Retargetable compiling system and method
WO2002042907A2 (en) * 2000-11-27 2002-05-30 Koninklijke Philips Electronics N.V. Data processing apparatus with multi-operand instructions
US6552625B2 (en) 2001-06-01 2003-04-22 Microchip Technology Inc. Processor with pulse width modulation generator with fault input prioritization
US7003543B2 (en) * 2001-06-01 2006-02-21 Microchip Technology Incorporated Sticky z bit
US6952711B2 (en) * 2001-06-01 2005-10-04 Microchip Technology Incorporated Maximally negative signed fractional number multiplication
US6601160B2 (en) 2001-06-01 2003-07-29 Microchip Technology Incorporated Dynamically reconfigurable data space
US6976158B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Repeat instruction with interrupt
US20030005268A1 (en) * 2001-06-01 2003-01-02 Catherwood Michael I. Find first bit value instruction
US6728856B2 (en) 2001-06-01 2004-04-27 Microchip Technology Incorporated Modified Harvard architecture processor having program memory space mapped to data memory space
US20020184566A1 (en) 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
US20030023836A1 (en) * 2001-06-01 2003-01-30 Michael Catherwood Shadow register array control instructions
US6604169B2 (en) 2001-06-01 2003-08-05 Microchip Technology Incorporated Modulo addressing based on absolute offset
US6985986B2 (en) * 2001-06-01 2006-01-10 Microchip Technology Incorporated Variable cycle interrupt disabling
US6851010B1 (en) 2001-06-29 2005-02-01 Koninklijke Philips Electronics N.V. Cache management instructions
US6886091B1 (en) 2001-06-29 2005-04-26 Koninklijke Philips Electronics N.V. Replacing VLIW operation with equivalent operation requiring fewer issue slots
US6889242B1 (en) 2001-06-29 2005-05-03 Koninklijke Philips Electronics N.V. Rounding operations in computer processor
US20040021483A1 (en) * 2001-09-28 2004-02-05 Brian Boles Functional pathway configuration at a system/IC interface
US6552567B1 (en) 2001-09-28 2003-04-22 Microchip Technology Incorporated Functional pathway configuration at a system/IC interface
KR100464406B1 (ko) * 2002-02-08 2005-01-03 삼성전자주식회사 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
JP2006500673A (ja) * 2002-09-24 2006-01-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 処理装置、処理方法及びコンパイラ
US7315935B1 (en) * 2003-10-06 2008-01-01 Advanced Micro Devices, Inc. Apparatus and method for port arbitration in a register file on the basis of functional unit issue slots
JP4283131B2 (ja) * 2004-02-12 2009-06-24 パナソニック株式会社 プロセッサ及びコンパイル方法
KR101311187B1 (ko) * 2004-09-22 2013-09-26 코닌클리케 필립스 일렉트로닉스 엔.브이. 기능 유닛이 판독 포트를 공유하는 데이터 처리 회로
CN100461716C (zh) * 2005-01-28 2009-02-11 华为技术有限公司 基于模拟端口的通信方法
US8713286B2 (en) * 2005-04-26 2014-04-29 Qualcomm Incorporated Register files for a digital signal processor operating in an interleaved multi-threaded environment
US20070027944A1 (en) * 2005-07-28 2007-02-01 James Wilson Instruction based parallel median filtering processor and method
US8321490B2 (en) 2005-07-28 2012-11-27 Analog Devices, Inc. Instruction-based parallel median filtering
US8819099B2 (en) * 2006-09-26 2014-08-26 Qualcomm Incorporated Software implementation of matrix inversion in a wireless communication system
US8495604B2 (en) * 2009-12-30 2013-07-23 International Business Machines Corporation Dynamically distribute a multi-dimensional work set across a multi-core system
US9250916B2 (en) * 2013-03-12 2016-02-02 International Business Machines Corporation Chaining between exposed vector pipelines
KR102593320B1 (ko) * 2016-09-26 2023-10-25 삼성전자주식회사 전자 장치, 프로세서 및 그 제어 방법

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179680A (en) * 1987-04-20 1993-01-12 Digital Equipment Corporation Instruction storage and cache miss recovery in a high speed multiprocessing parallel processing apparatus
JP2835103B2 (ja) * 1989-11-01 1998-12-14 富士通株式会社 命令指定方法及び命令実行方式
DE69129569T2 (de) * 1990-09-05 1999-02-04 Philips Electronics Nv Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen
US5692169A (en) * 1990-12-14 1997-11-25 Hewlett Packard Company Method and system for deferring exceptions generated during speculative execution
EP0551090B1 (en) * 1992-01-06 1999-08-04 Hitachi, Ltd. Computer having a parallel operating capability
GB2263565B (en) * 1992-01-23 1995-08-30 Intel Corp Microprocessor with apparatus for parallel execution of instructions
JPH05233281A (ja) * 1992-02-21 1993-09-10 Toshiba Corp 電子計算機
DE69325785T2 (de) * 1992-12-29 2000-02-17 Koninkl Philips Electronics Nv Verbesserte Architektur für Prozessor mit sehr langem Befehlswort
JPH07104996A (ja) * 1993-10-05 1995-04-21 Kofu Nippon Denki Kk マイクロプログラム制御装置
DE69527933T2 (de) * 1994-09-15 2003-03-27 Koninkl Philips Electronics Nv Datenverarbeitungssystem mit datenverarbeitungseinheiten und eine erweiterungsvorrichtung
US5600810A (en) * 1994-12-09 1997-02-04 Mitsubishi Electric Information Technology Center America, Inc. Scaleable very long instruction word processor with parallelism matching
JP2931890B2 (ja) * 1995-07-12 1999-08-09 三菱電機株式会社 データ処理装置
US5787302A (en) * 1996-05-15 1998-07-28 Philips Electronic North America Corporation Software for producing instructions in a compressed format for a VLIW processor
WO1997043710A2 (en) * 1996-05-15 1997-11-20 Philips Electronics N.V. Vliw processor which processes compressed instruction format

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100343798C (zh) * 2002-08-05 2007-10-17 Nxp股份有限公司 用于处理vliw指令的处理器和方法

Also Published As

Publication number Publication date
US6076154A (en) 2000-06-13
DE69933088D1 (de) 2006-10-19
EP0968463A2 (en) 2000-01-05
DE69933088T2 (de) 2007-04-05
JP2001515635A (ja) 2001-09-18
JP3976082B2 (ja) 2007-09-12
TW469407B (en) 2001-12-21
WO1999036845A3 (en) 1999-10-07
WO1999036845A2 (en) 1999-07-22
KR100715055B1 (ko) 2007-05-07
CN1516003A (zh) 2004-07-28
EP0968463B1 (en) 2006-09-06
KR20000076285A (ko) 2000-12-26
CN1126027C (zh) 2003-10-29

Similar Documents

Publication Publication Date Title
CN1126027C (zh) 处理不同宽度的命令的vliw处理器
JP2500082B2 (ja) スカラ命令の並列実行を得る方法およびシステム
US5951674A (en) Object-code compatible representation of very long instruction word programs
KR100190738B1 (ko) 데이타 처리 시스템 및 방법
JP3797471B2 (ja) マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置
US7865692B2 (en) Methods and apparatus for automated generation of abbreviated instruction set and configurable processor architecture
KR100230552B1 (ko) 동적 명령어 포맷팅을 이용한 컴퓨터 처리 시스템
EP1735700B1 (en) Apparatus and method for control processing in dual path processor
US20030154358A1 (en) Apparatus and method for dispatching very long instruction word having variable length
US6950926B1 (en) Use of a neutral instruction as a dependency indicator for a set of instructions
JPH087681B2 (ja) スカラ命令並列実行可能性を判定し指示する方法及び並列実行可能な隣接するスカラ命令を識別する方法
CA2341098C (en) Method and apparatus for splitting packets in a multithreaded vliw processor
CN1227584C (zh) 用于构造一个预调度的指令高速缓存的方法和装置
EP1365318A2 (en) Microprocessor data manipulation matrix module
EP0982655A2 (en) Data processing unit and method for executing instructions of variable lengths
US8285975B2 (en) Register file with separate registers for compiler code and low level code
EP0760976B1 (en) Object-code compatible representation of very long instruction word programs
JPH1083302A (ja) Vliwプロセッサ
WO2005036384A2 (en) Instruction encoding for vliw processors
KR20070022239A (ko) 비대칭 듀얼 경로 프로세싱용 장치 및 방법
Assaf et al. General Architecture and Instruction Set Enhancements for Multimedia Applications

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: 20031029

CX01 Expiry of patent term