CN1703670B - 指令的寻址范围相关并行化的数据处理设备 - Google Patents

指令的寻址范围相关并行化的数据处理设备 Download PDF

Info

Publication number
CN1703670B
CN1703670B CN200380101196.3A CN200380101196A CN1703670B CN 1703670 B CN1703670 B CN 1703670B CN 200380101196 A CN200380101196 A CN 200380101196A CN 1703670 B CN1703670 B CN 1703670B
Authority
CN
China
Prior art keywords
instruction
unit
address
memory
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.)
Expired - Fee Related
Application number
CN200380101196.3A
Other languages
English (en)
Other versions
CN1703670A (zh
Inventor
R·塞图拉曼
B·斯里尼瓦桑
C·A·阿巴平托
H·J·A·M·佩特斯
R·佩塞特洛皮斯
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.)
Nytell Software LLC
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 CN1703670A publication Critical patent/CN1703670A/zh
Application granted granted Critical
Publication of CN1703670B publication Critical patent/CN1703670B/zh
Anticipated expiration legal-status Critical
Expired - Fee Related 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/30003Arrangements for executing specific machine 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/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/3802Instruction prefetching
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

数据处理设备具有用于输出由指令地址寻址的一个指令字的指令存储器系统。一个指令执行单元,并行地处理来自指令字的多个指令;一个检测单元,检测该指令地址存在于多个范围的哪一个中。该检测单元耦合到该指令执行单元和/或该指令存储器系统,根据一个检测范围来控制该指令执行单元并行处理来自该指令字的指令的方式。在一个实施例中,该指令执行单元和/或指令存储器系统根据该检测范围调整该指令字的宽度,该指令字的宽度确定来自被并行处理的该指令字的指令数。

Description

指令的寻址范围相关并行化的数据处理设备 
技术领域
本发明涉及一种数据处理设备,例如一种VLIW(很长指令字)处理器,能够并行执行来自一个指令字的多个指令。 
背景技术
VLIW处理器使得有可能以高度的指令并行性执行程序。通常,在每一指令周期中的该VLIW处理器取得包含大于一的一个固定数目的指令的指令字(时常称为操作)。该VLIW处理器在相同指令周期(或几个周期)中并行执行这些操作。为此目的,VLIW处理器包含多个功能单元,每一功能单元能够每次执行来自该该指令字的操作之一,通常提供不同种类的功能部件,例如ALU(算术逻辑单元)、乘法器、转移控制单元、存储器存取单元等。时常还包括专门用途的功能单元,设计来对具体的应用程序加速。例如,可以因此添加用于执行MPEG编码或解码的一部分的功能单元。 
但是,在程序的大部分中不可能在每个指令周期中把操作提供到所有功能单元。例如在得不到充足的数据开始在所有功能单元中操作时将出现这种情况。在此情况中,在该指令字中必须包括“无操作”指令,用于得不到指令的功能单元。当此种指令字必须被保持在指令存储器中时,将导致过度的存储器使用。 
已经建议了几种措施降低这种存储器的过度使用。例如,可以通过比对其它指令更高效地编码该无操作指令来压缩该指令。然而,这仍然包括存储器的额外开销并且可能减缓处理器。在另一研发中,已经知道在用于功能单元的分组的指令字中使用字段,使得一个分组的任何一种功能单元在每一指令周期都能够从该字段获取一个指令。由于该指令字因此只包含用于多个功能单元的一个字段,所以这将降低指令字的大小,但是其将降低并行性的最高水平。 
美国专利5,774,737描述了可以使用具有不同长度的指令的单一VLIW处理器。该指令可以包含一长度代码来指示它们的长度。另外,可以使用一个指令长度寄存器来指示一个当前长度。该功能单元执行由在该指令长度寄存器中的该长度的值所指示的指令数目。通过设置该当前长度,该指令长度能够被适应在不同程序部分中允许的并行性的等级。但是,对当前长度进行的设置包括执行附加指令。
发明内容
在其它各种目的当中,本发明的一个目的是,提高能够并行地执行来自一个指令字的多个指令的处理器的存储器效率。 
在其它各种目的当中,本发明的进一步的目的是,在不引起过度存储器使用的条件下,促进专用目标功能单元的使用。 
根据本发明的处理设备包括: 
一个指令地址产生电路,用于输出一个指令地址; 
一个指令存储器系统,用于输出由该指令地址寻址的一个指令字; 
一个指令执行单元,用于并行处理来自指令字的多个指令; 
一个检测单元,用于检测该指令地址存在于多个范围的哪一个中,该检测单元耦合到该指令执行单元和/或该指令存储器系统,根据一个检测的范围而控制该指令执行单元并行处理来自该指令字的指令的方式; 
其中该指令执行单元和/或该指令存储器系统用于根据该检测的范围,调整该指令字的一个宽度,该指令字宽度确定来自被并行处理的指令字的指令数。 
根据本发明,从其取得一个指令字的地址范围的检测被用于确定该指令执行单元并行处理来自该指令字的该指令的方式。 
比如在一个实施例中,该指令字的长度取决于其地址所属的范围。因此,当这些字来自涉及一个程序的内循环的指令的地址范围时,该指令执行单元可以把来自指令存储器的信息作为相对较长的指令字来处置,而当这些码字来自其它的地址范围时,则该指令执行单元可以把该信息作为包含相对少的指令的相对短的指令码字来处置。所以,在进入或离开内循环的变化时,不需要明确指令改变该指令字长度就能够实现内循环中的高并行性以及能够实现内循环之外的高存储效率。 
在另外一个实施例中,该指令存储器系统被用于调整根据该地址范围取得的该指令字的宽度。不同存储器类型,例如具有不同速度的存储器可被用于不同的范围。当该指令地址不是在映射到指令存储器部分的一个范围中时,最好禁止把时钟信号提供到该指令存储器部分。 
在另一个实施例中,指令执行单元包含多个用于执行来自该指令字的不同指令的功能单元。在本实施例中,根据该指令字所被读出的地址范围选择不同的功能单元执行来自该指令字的指令。 
因此,来自该指令字的指令可被处置作为在一个地址范围中的用于 专用目的功能单元的指令,以及作为在其它地址范围中的用于其它功能单元的指令。例如,MPEG解码和编码通常局限于具体的程序部分,因此专用于此种解码和编码用途的功能单元仅在该程序部分中才需要。通过根据该地址范围选择这些功能单元,使得不需要增加该指令字的宽度,就能选择哪些功能单元将处理该指令。 
在另一实施例中,该功能单元可以使用具有不同宽度的指令。因此,用于一个ALU功能单元的指令可以包括一个操作的指定、两个操作寄存器和一个结果寄存器,其中用于一个专用目的功能单元的指令可以包括四个操作寄存器和两个结果寄存器的指定。可以根据该地址范围调整该指令字中的指令的宽度。 
根据本发明的利用一个数据处理设备执行一个程序的方法,该方法包括步骤:使用一个指令地址来取得一个指令字;检测该指令地址存在于多个范围的哪一个中;根据一个检测的范围控制指令并行执行的一种方式;根据该检测范围调节该取得的指令字的宽度;执行来自该取得指令字的指令。 
使用下列附图将更详细地描述根据本发明的设备和方法的这些以及其它目的和有益的方面。 
附图说明
图1示出一个数据处理设备。 
图2示出一个指令存储器系统的一个实施例。 
图2A示出一个数据处理设备的一部分。 
图2B示出一个数据处理设备的一部分。 
图3示出一个地址范围检测器。 
图4示出用于该处理设备的指令字。 
图5示出编程该数据处理设备的流程图。 
图6示出一个指令存储器系统的一个实施例。 
图7示出一个数据处理器设备。 
具体实施方式
图1示出一个数据处理设备,具有指令地址单元10、指令存储器系统12、指令执行单元14和地址范围检测器16。该指令地址单元10具有耦合到指令存储器系统12的一个地址输出。指令存储器系统12具有一个耦合到指令执行单元14的指令输出。指令执行单元14具有一个耦合到指令寻址单元的输出。地址范围检测器16具有一个耦合到指令寻址单元10的地址输出的一个输入,以及耦合到指令执行单元14 的控制输入11和指令存储器系统12的一个输出。 
指令执行单元14包含一个输入部分140、多个功能单元142、一个寄存器文件144。输入部分140耦合在指令存储器系统12和功能单元142之间。地址范围检测器16耦合到输入部分140。而且,输入部分140具有耦合到寄存器文件144的选择输出。功能单元142具有耦合到寄存器文件144的输入和输出。该功能单元的至少之一是一个具有耦合到指令寻址单元10的一个输出的分支控制单元。 
操作中,该设备以连续的指令周期操作。在每一指令周期中,指令寻址单元10都把一个指令地址提供到指令存储器系统12。作为响应,指令存储器系统12检取由指令地址编址的一个指令字,并且把该检取的指令字提供到指令执行单元14。输入部分140把操作选择代码从该指令字传送到功能单元142,并且把寄存器选择代码从指令字寄存到寄存器文件144的选择输入。响应该寄存器选择代码,寄存器文件144从寄存器文件144的寄存器中检取操作并且将此数据提供到功能单元142。响应该操作选择代码,功能单元142使用该操作码作为输入数据而执行选择的处理操作,并且把这些操作的结果提供到寄存器文件144。寄存器文件144把这些结果储存在由来自指令字的寄存器选择代码选择的寄存器中。通常,操作将被流水线化,即每次在执行针对在前的和/或后继指令地址执行其他操作之时,在不同的指令周期过程中,将执行响应一个指令地址的各种操作(检取该指令、检取操作、处理、储存该结果)。 
处置该指令字的方式取决于该指令字所在的指令地址的地址范围。在一个实施例中,该指令字的宽度取决于该范围。当该指令地址是在一个第一范围中时,由功能单元142执行来自该指令字的第一指令数量,并且当该指令地址是在一个第二范围中时,由功能单元142执行来自该指令字的第二指令数量。因此,输入部分140从地址范围检测器16接收指示该指令地址所在范围的一个检测信号(如果有必要,适当针对在编址和指令提供之间的流水线延迟而延迟几个指令周期),该输入部分140根据该范围利用一个信号从该指令字检取更大或更小数目的操作选择代码,提供到该功能单元来执行该指令。 
图2示出使用不同长度的指令的指令存储器系统12的一个实施例。指令存储器系统12包含多个存储单元20、22,复用器24、时钟单元26和时钟门控电路28a、b。指令存储器系统12的地址输入23至少部分地耦合以寻址存储器单元20、22。第一存储器单元20具有的字长大于第二存储单元22具有的字长。用符号示出的第一存储器单元20的宽度大于第二存储器单元22的宽度,以便表示该第一存储器单元的较宽的指令字大小,而示出的第二存储器单元22高于第一存储器单元 20,以便表示该第二存储器包含有用于更多指令字数的存储位置)。存储单元20、22的指令输出耦合到复用器24的输入,第二存储单元22的输出与缺省输入29结合地耦合到复用器24的输入(提供例如无操作指令)。复用器24的一个输出耦合到指令执行单元14(没示出)。时钟单元26通过分别的时钟门控电路28a、b耦合到存储器单元20、22的时钟输入。地址范围检测器16的一个输出耦合到指令存储器系统12的一个输入11,该指令存储器系统12耦合到复用器24的一个控制输入并且耦合到时钟门控电路28a、b的禁止输入。 
操作中,指令存储器系统12响应指令地址而把指令字输出到指令执行单元14。当检测器16指示该该指令地址是在一个第一范围中时,复用器24则把指令字从该第一存储单元20输出到指令执行单元14。当检测器16指示该该指令地址是在一个第二范围中时,复用器24则把指令字从该第二存储单元22输出到指令执行单元14。 
通常,该第一存储器单元20包含来自一个程序的内循环的指令字,即被重复执行最高次数的程序的一部分。通常,此种内循环的指令字被优化,使得能够实现通过指令执行单元14并行执行的最大使用。因此,每一个来自该内循环的指令字大都包含用于相对大数目的功能单元的指令。该第二存储器单元22输出来自该内循环外部的指令字,属于是较少执行的指令。这些指令字包含针对相对较少的功能单元的指令。因此,该第二存储器单元22具有一个较小的指令字尺寸,响应一个指令地址而输出比第一存储器单元20少的比特。因此,有可能更有效地使用存储器空间。该第一存储器单元20储存较宽的指令字,这将增加在该内循环中执行的效率。该第一存储器单元20还可以有比第二存储器单元22更快的速度,实现在该内循环中的较短的指令周期。 
原则上,每个存储单元20、22只需要响应来自地址范围不同之一的地址。对于在其它存储器单元响应的范围中的地址不需要提供存储空间。但是实际上,该第二个存储器单元22也可能响应在第一存储器单元20的范围中的地址。当此范围仅包括内循环时,将产生少量存储器系统开销并且将允许在第二存储器单元22中的任何空间定位第一存储器单元20的地址范围,使得第二存储器单元22在此地址范围之前和之后都迅速地提供地址。 
当该指令地址不是在由存储器20、22之一支持的范围内时,最好禁止提供到此存储器单元20、22的时钟。 
因此降低功耗。一方面,在执行采自该内循环的指令字过程中,不需要把时钟提供到第二存储器单元22。在另一方面,在执行来自该内循环之外的指令过程中,不需要把时钟提供到第一存储器单元20。在不需要对应的存储器单元20、22时,把一个用于禁止其时钟 的电路提供到存储器单元20、22之一或两者将降低功耗。 
图2示出两个存储器,每一存储器都具有由指令地址编址的位置,该位置具有取决于存储器的不同宽度。虽然仅示出两个存储器20、22,但将理解,能使用更大数目的此种存储器,每个都具有其自己的宽度和自己的地址范围。因此,该存储器单元的宽度能够更接近适应于不同程序部分的需要。 
改变在该指令字中的指令数量仅是能够实现地址范围的检测的一种方式。在本发明的另一方面中,输入部分140使用该检测范围,来选择哪些功能单元142或哪些功能单元组将执行来自指令字的指令。在最基础的VLIW处理器中,来自一个指令字的每一个指令都转到功能单元142的一个相应指令。这将提供一种高可能的并行性,但是涉及高存储器使用。在更高级的VLIW处理器中的,来自一个指令字的每个指令字段能够包含一个指令,用于功能单元142的不同组的可编程之一。在此情况中,在该指令字中的一个代码通常确定该组的哪一个功能单元将执行该指令。同样是在此情况中,输入部分140将通知该选择的功能单元142其将执行该指令。在其它更多的高级VLIW处理器中,提供所谓的超级功能单元,由包含来自该指令字中的多个字段的信息的指令编程,而这些字段的每一个都能够或通常被用于一个单独的指令。因此,例如能够传送具有异常大操作数目的指令。 
图2A示出具有指令字存储系统204的一个数据处理器的一部分,具有地址输入206、功能单元200(或更多个功能单元的常规组200)以及地址范围检测器208。指令存储器系统204具有用于来自一个被寻址指令字的相应指令的输出。这些输出被耦合到功能单元(或相应的功能单元组)200和一个寄存器文件(没示出)。地址范围检测器208接收该指令字地址并且根据该检测的指令地址所属的指令地址范围,选择若干功能单元(即功能单元的不同组)200的哪些将执行来自一个指令字的指令。虽然功能单元(即不同功能单元组)200已经被示出用于指令字之一,但是该选择当然可以被用于来自该指令字的任何数量的指令。因此,在第一个实施例中,如果检测到该指令地址是在一个确定范围中,地址范围检测器208就选择某些功能单元(或不同的功能单元组)200,而不是其它功能单元来执行一个指令,当指令地址不在那个范围内时,则选择其它功能单元。因 此需要较小的指令字。因此,指令存储器系统204可以禁止某些存储单元,或者可以减小在连续指令地址之间的地址步长。两者都降低了针对指令字所需要的存储器的总量。 
在另一个实施例中,当该指令地址是在一个确定的范围中时,指令存储器系统204把来自指令字的指令提供到所有的功能单元(或功能单元组)。在本实施例中,地址范围检测器208响应该指令地址是在该范围中的检测,而选择全部用于执行指令的功能单元。当该指令地址是在该范围之外时,地址范围检测器208仅选择该功能单元的一个子集。 
图2B示出另外包含复用器202的一个实施例,该复用器202由地址范围检测器208控制,是在指令存储器系统204和某些功能单元(或相应的功能单元子组)200之间。每个复用器202的一个输入耦合到指令存储器系统204的一个共用指令输出,以供一组功能单元200共享。为了清楚起见,仅示出指令存储器系统204的一个输出,来以符号表示到功能单元200和寄存器文件的连接。每个复用器202都将其另一输入耦合到指令存储器系统204的分别的不同指令输出。 
当地址范围检测器208检测到该指令地址是在一确定的范围中时,地址范围检测器208可以例如通过把该组拆分成两个或多个子组,而增加功能单元200的组数,由此选择功能单元执行来自一个指令字的指令。当指令地址是在该确定的范围中时,地址范围检测器208选择复用器202,把来自该指令字的不同的各个指令提供到不同的功能单元200或一组功能单元200的功能单元的子组。当该指令地址是在该范围之外时,地址范围检测器208把来自该指令字的同一个指令提供到在该组中的全部功能单元。在此情况中,需要较小的指令字。因此,指令存储器系统204可以禁止某些存储器单元,或可以减小在连续指令地址之间的地址步长。两者都降低了针对指令字所需要的存储器的总量。 
当然,可以使用更复杂的重新分组形式,功能单元200(功能单元200的子组)作为在一个范围中的一个组的一部分并且作为在另一范围中的另一组的一部分,和/或本身形成在一个另外范围中的一个组。而且,图2A的实施例可以与图2B的实施例结合,使得可以根据该 指令地址的范围选择不同的功能单元200,来执行来自一个指令字的指令,该功能单元200的每一个都在另一范围中并行地接收自己的指令字。 
当然可以结合图2、2A和2B的实施例,仅针对其中要求来自这些存储单元的指令的情况下的地址范围提供存储单元。 
同样,输入部分可以根据该范围把功能单元加到该组或从该组删除功能单元。 
图3示出地址范围检测器16的一个实施例。地址范围检测器包含一个下界信号源30、上界信号源32、下界比较器34、上界比较器36和与(AND)门38。下界信号源30耦合到下界比较器34的第一输入,上界信号源32耦合到上界比较器36的第一输入。指令地址的一个输入耦合到上界比较器36和下界比较器34的第二输入。上界比较器36和下界比较器34的输出耦合到″与″门38的输入,该″与″门38的输出是地址范围检测器16的输出。 
操作中,比较器34、36把该指令地址与来自信号源30、32的上、下界比较。当该指令地址是在这些边界之间时,″与″门38输出一个信号值,并且如果不是在这些边界之间,则输出另一信号值。当知道在哪些地址范围中程序包括内循环指令时,信号源30、32可被硬布线。另外,信号源30、32可以包括一个或多个寄存器,该寄存器的内容确定了上界值和下界值(通过设置上、下界值,或通过只设置例如一个下界,该上界相对于该下界具有一个预定的偏移)。当把程序装入存储器单元20、22中时,这些寄存器可被加载适当的值。另外,可按照指令的执行结果来设置这些值。 
第一存储器单元20储存相对宽的指令的地址范围最好也是可调的。可能通过仅使用该指令地址的一个较低有效部分(lesssignificant part)来寻址该第一个存储器单元20以实现这种可调性,该地址范围检测被用于启动该第一存储单元20。另外,在此情况中,可从该指令地址减去下界并且用作该第一存储单元20的地址。当一个或者多个寄存器用于提供该边界时,相关的地址范围则因此能够通过加载这些寄存器来设置。因此能够根据涉及的程序设置具有较宽指令的地址范围。在执行包括进入一个内循环和退出一个内循环的一个程序的准备中,能够加载该边界。 
当然,地址范围检测器16能够容易地扩展,以便在两个以上范围之间区分,或检测具有不连接部分的范围中的指令地址。在此情况中,可以对于来自每一个范围的指令给出不同处理,并且可以针对每一个范围提供存储器单元20、22。 
一般地说,一个存储器变换单元(MMU)可用于在运行之时选择哪些物理内存由哪些逻辑指令地址所编址。在此情况中,根据本发明的一个方面,不同的物理内存的宽度不同。当一个程序被装入时,来自一个内循环的指令字被存储在一个较宽的存储器中。设置该MMU,以便把这些指令字的逻辑指令地址映射到在较宽的物理指令存储器中的物理地址。在执行中,MMU相应地映射逻辑指令地址,并且该存储器给指令返回一个宽度,该宽度取决于由MMU物理编址的物理存储器。 
图4示出可被提供到指令执行单元14的功能指令字40、42的实例。当该指令地址在一个范围中时,使用第一类型的指令字40,而当该指令地址在另一范围中时,使用第二类型的指令字42。包含多个指令44a-f的该第一类型的指令字比第二类型的指令字42要宽(第二类型的指令字42具有指令46a、b和一个代码47,用于选择功能单元142的哪个将执行该指令)。 
可以通过利用从接收的指令字到该功能单元的指令的地址范围相关的路由选择,来设计输入部分而实现指令字的不同处理。另外,可以使用压缩的指令字的一般处理实现不同的处置。在此情况中,该装置添加或修改被提供来指导该指令字的解压缩的代码,该代码是根据该指令的地址范围构造的。该代码被提供在指令执行单元14中,使得指令执行单元根据作为该加或修改的代码的结果的地址范围,来处理该指令字。例如,当该指令地址是在一个第一范围中时,指示功能单元的全部组的一个代码将处理能够被添加的指令,而当该指令地址是在一个第二范围中时,则能够提供来自指令存储器的指示该功能单元的一个子集的选择的代码,或当该指令地址是在该第二范围中时,能够产生在总是使用相同的功能单元时的后一个代码。 
该功能单元可以包括专门用途的功能单元,例如执行加速MPEG解码或编码功能的单元。通常仅程序的特定部分才包含具有用于这种特殊用途功能单元的指令的指令字。通过仅在该指令地址是在一个确 定范围中时,才接受用于这些功能单元的指令,则不需要提供用于这种功能单元的指令空间,用于具有在该范围之外的地址的指令。在此情况中,在两个范围中的指令字甚至可以具有相同的宽度。由于已知当该指令地址是在一个确定范围之外时,没有用于该功能单元的一个子集的指令被编码,所以可得到更多的空间,用于编码在储存在该确定范围外的指令字中的其它功能单元的指令。 
图5示出图1的用于编程该数据处理设备的流程图。在该流程图的第一步51中,编辑一个程序并且产生用于执行该程序的指令。在第二步骤52中,确定在该程序中的该内循环(或循环)的位置。这可以通过配置文件的自动编码检验来实现(即,在通常的输入数据的尝试执行过程中计数不同指令被执行的次数)。在第三步骤53中形成指令字,例如通过使用象(局部)循环展开的已知技术或通过提供用于特殊用途的功能单元的指令,优化在该内循环中的指令字。在第四步骤54中,指令字加载到指令存储器系统12中,使得内循环中的该指令字在被储存在具有在其中指令存储器系统储存较宽指令字的范围中的指令地址的存储位置,或其中指令执行单元选择来并行执行来自那指令字的多个指令的范围中的指令地址的存储位置。另外,根据已经装载了该内循环的指令字的位置来设置该范围的边界。 
图6示出用于实现本发明的一个方面的另一个指令存储器系统60。指令存储器系统60具有单一指令地址输入64、控制器66,并且包含多个存储器单元62a-d。指令地址输入64的至少一部分耦合到存储器单元62a-d的每一个的地址输入。至少部分该指令地址输入耦合到控制器66。控制器66耦合到存储器单元62a-d的每一个,分别使得每一存储器单元62a-d响应在对于该存储器特定的相应的地址范围中的指令地址;不同存储器单元62a-d的地址范围可以重叠并且它们可以包含互不相同的指令地址数。(这由图中的跨距不同垂直高度范围的存储单元62a-d所符号表示)。类似地,每一个存储器单元62a-d可以具有其自己的宽度,即以一个指令地址编址的指令数据的宽度可以随着存储器的不同而不同。(图中通过该存储单元62a-d跨距不同水平宽度来符号表示该事实)。 
操作中,一个处理单元(没示出)把连续的指令地址提供到指令存储器系统60。根据该指令地址的值,控制器66通知一个或者多个 存储器单元62a-d来响应。该选择的存储单元62a-d的每一个都从该存储器单元62a-d恢复一个指令的部分(如果只选定一个存储器单元62a-d,则为完整的指令字)。来自不同存储器单元62a-d的指令部分按照组合的形式被作为一个指令字提供到处理单元(没示出)。当指令部件62a-d中的一个或者多个不被选择时,最好禁止在该指令部件62a-d的一个或者多个中的时钟信号。 
图7示出使用图6存储器系统60的一个处理器。该处理器包含多个功能单元组70a-g、寄存器文件72和程序计数器74。每个功能单元组都可以包含一个或者多个功能单元(没示出)。存储系统60中的控制器66的选择输出耦合到该功能单元组70a-g的时钟启动输入。指令存储器系统60的存储单元(为了清楚起见没示出)的指令输出被耦合到功能单元组70a-g的功能单元组的指令选择输入、操作寄存器选择输入以及寄存器文件72的结果寄存器选择输入。功能单元组70a-g具有操作输入和耦合到寄存器文件72的结果输出(虽然在实践中使用独立的连接,但是为了清楚起见,全部这些连接由单线表示)。 
操作中,指令存储器系统60的每一个存储器单元被专用于功能单元70a-g的一组或者多组。当来自控制器66的选择信号指示该功能单元组70a-g的对应的存储器单元不被选择时,则禁止功能单元组70a-g的一个或者多个中的时钟信号。因此,该组中的功能单元不接收时钟信号并且进一步降低功耗。 
但是将理解到,图6的指令存储器系统能被独立于图7的实施例使用。即,该功能单元组中的时钟信号无需被禁止。存储单元和功能单元组之间也不需要有一个固定关系(虽然这种固定联系将加速处理并且简化电路)。 

Claims (14)

1.数据处理设备,包括:
一个指令地址产生电路,用于输出一个指令地址;
一个指令存储器系统,用于输出由该指令地址寻址的一个指令字;
一个指令执行单元,用于并行处理来自指令字的多个指令;
一个检测单元,用于检测该指令地址存在于多个范围的哪一个中,该检测单元耦合到该指令执行单元和/或该指令存储器系统,根据一个检测的范围而控制该指令执行单元并行处理来自该指令字的指令的方式;
其中该指令执行单元和/或该指令存储器系统用于根据该检测的范围,调整该指令字的一个宽度,该指令字宽度确定来自被并行处理的指令字的指令数。
2.根据权利要求1的数据处理设备,其中该指令执行单元包括多个功能单元,该指令执行单元被用于根据该检测的范围而选择可供处理该指令使用的该功能单元的一个子集。
3.根据权利要求1的数据处理设备,其中该指令执行单元包括多个功能单元,该指令执行单元被用于根据该检测的范围,选择功能单元集合中的功能单元或功能单元组,是每一个都从该指令字接收相应的指令、还是从该指令字接收一个共享指令。
4.根据权利要求1的数据处理设备,其中该指令存储器系统包括一个第一存储器单元和一个第二存储器单元,利用第一和第二宽度单元提供对不同长度指令字的可寻址存储器位置的宽度的存储,不同长度的指令字的地址分别在第一和第二范围中,该第一和第二宽度单元的宽度互不相同;其中第一存储器单元和第二存储器单元分别与第一地址范围和第二地址范围对应。
5.根据权利要求4的数据处理设备,被编程执行一个程序,来自该程序的一个内循环的相对较长的指令字被存储在该第一存储器单元中,来自该内循环之外的程序的相对较短的指令字被存储在该第二存储器单元中,第一存储器单元的宽度大于该第二存储器单元的宽度。
6.根据权利要求4的数据处理设备,包括一个存储器映射单元,用于根据该检测范围把该指令地址映射到该第一存储器单元或该第二存储器单元。
7.根据权利要求4的数据处理设备,其中该指令存储器系统被用于在检测到该第二范围中的地址时,禁止把时钟信号提供到该第一存储器单元。
8.根据权利要求4的数据处理设备,其中该指令存储器系统被用于禁止把时钟信号提供到除了从存储器单元的地址范围检测到地址的该存储器单元之外的全部存储器单元。
9.根据权利要求1的数据处理设备,其中该指令存储器系统包括多个存储器单元,每一个存储器单元用于响应在一个相应范围中的指令地址,该指令存储器系统允许这些相应范围的部分重叠,该指令存储器系统被用于提供指令字,作为来自指令地址位于其相应范围内的那些存储器单元的指令的组合。
10.根据权利要求9的数据处理设备,其中该指令存储器系统被用于在该指令地址不是在至少一个存储器单元的相应的范围中时,禁止把时钟信号提供到至少一个存储器单元。
11.根据权利要求9的数据处理设备,其中该指令执行单元包含一个或多个功能单元组,每一个功能单元组耦合到该存储器单元的相应的一个,当该指令地址是在与该组耦合的相应的一个存储器单元的相应范围中时,用于从该指令字接收指令。
12.根据权利要求2的数据处理设备,其中该指令执行单元包括:
输入部分,用于向功能单元传送操作选择代码;
多个功能单元,能够根据操作选择代码可选地处理具有第一长度的一个指令或具有不同于该第一长度的一个第二长度的一个指令,该具有第一长度的指令和该具有第二长度的指令至少部分地从在该指令字中的一个相同位置得出,根据利用其取得该指令字的该指令地址的检测范围,选择该具有第一长度的指令或该具有第二长度的指令的执行。
13.利用一个数据处理设备执行一个程序的方法,该方法包括步骤:
使用一个指令地址来取得一个指令字;
检测该指令地址存在于多个范围的哪一个中;
根据一个检测的范围控制指令并行执行的一种方式;
以及根据该检测范围调节该取得的指令字的宽度;
执行来自该取得指令字的指令。
14.根据权利要求13的方法,该方法包括步骤:根据该检测范围改变用于执行该指令的这设备的功能单元的选择。
CN200380101196.3A 2002-10-11 2003-10-01 指令的寻址范围相关并行化的数据处理设备 Expired - Fee Related CN1703670B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP02079219 2002-10-11
EP02079219.8 2002-10-11
PCT/IB2003/004327 WO2004034253A2 (en) 2002-10-11 2003-10-01 Vliw processor with variable, address range dependent issue-width

Publications (2)

Publication Number Publication Date
CN1703670A CN1703670A (zh) 2005-11-30
CN1703670B true CN1703670B (zh) 2010-12-08

Family

ID=32088027

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200380101196.3A Expired - Fee Related CN1703670B (zh) 2002-10-11 2003-10-01 指令的寻址范围相关并行化的数据处理设备

Country Status (6)

Country Link
US (2) US8364935B2 (zh)
EP (1) EP1554649A2 (zh)
JP (1) JP4283226B2 (zh)
CN (1) CN1703670B (zh)
AU (1) AU2003263548A1 (zh)
WO (1) WO2004034253A2 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10296464B2 (en) 2016-12-09 2019-05-21 Intel Corporation System, apparatus and method for dynamic profiling in a processor
US10713750B2 (en) 2017-04-01 2020-07-14 Intel Corporation Cache replacement mechanism

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6026479A (en) * 1998-04-22 2000-02-15 Hewlett-Packard Company Apparatus and method for efficient switching of CPU mode between regions of high instruction level parallism and low instruction level parallism in computer programs
WO2000079400A1 (en) * 1999-06-21 2000-12-28 Bops Incorporated Methods and apparatus for generalized event detection and action specification in a processor

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2845433B2 (ja) * 1987-09-07 1999-01-13 日本電気株式会社 集積回路装置
US5115500A (en) 1988-01-11 1992-05-19 International Business Machines Corporation Plural incompatible instruction format decode method and apparatus
JP2974577B2 (ja) * 1994-02-28 1999-11-10 株式会社東芝 コンピュータシステム
US5774737A (en) 1995-10-13 1998-06-30 Matsushita Electric Industrial Co., Ltd. Variable word length very long instruction word instruction processor with word length register or instruction number register
US5963739A (en) * 1996-04-26 1999-10-05 Peter V. Homeier Method for verifying the total correctness of a program with mutually recursive procedures
US6026486A (en) * 1996-05-23 2000-02-15 Matsushita Electric Industrial Co., Ltd. General purpose processor having a variable bitwidth
US5941980A (en) * 1996-08-05 1999-08-24 Industrial Technology Research Institute Apparatus and method for parallel decoding of variable-length instructions in a superscalar pipelined data processing system
US5937193A (en) * 1996-11-27 1999-08-10 Vlsi Technology, Inc. Circuit arrangement for translating platform-independent instructions for execution on a hardware platform and method thereof
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US6735690B1 (en) * 1999-06-21 2004-05-11 Pts Corporation Specifying different type generalized event and action pair in a processor
FR2812417A1 (fr) * 2000-07-27 2002-02-01 St Microelectronics Sa Processeur dsp a architecture parallele
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
US6845432B2 (en) * 2000-12-28 2005-01-18 Intel Corporation Low power cache architecture
JP2002229779A (ja) * 2001-02-02 2002-08-16 Mitsubishi Electric Corp 情報処理装置
JP3656587B2 (ja) * 2001-10-01 2005-06-08 日本電気株式会社 並列演算プロセッサ、その演算制御方法及びプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6026479A (en) * 1998-04-22 2000-02-15 Hewlett-Packard Company Apparatus and method for efficient switching of CPU mode between regions of high instruction level parallism and low instruction level parallism in computer programs
WO2000079400A1 (en) * 1999-06-21 2000-12-28 Bops Incorporated Methods and apparatus for generalized event detection and action specification in a processor

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
同上.

Also Published As

Publication number Publication date
JP2006502490A (ja) 2006-01-19
US20060004986A1 (en) 2006-01-05
EP1554649A2 (en) 2005-07-20
AU2003263548A8 (en) 2004-05-04
US20130138927A1 (en) 2013-05-30
CN1703670A (zh) 2005-11-30
WO2004034253A2 (en) 2004-04-22
US8364935B2 (en) 2013-01-29
WO2004034253A3 (en) 2004-10-28
JP4283226B2 (ja) 2009-06-24
AU2003263548A1 (en) 2004-05-04

Similar Documents

Publication Publication Date Title
CN100392596C (zh) 编译装置及编译方法
KR100731371B1 (ko) 구성가능 기능 유닛을 포함하는 프로세서를 사용해서 컴퓨터 프로그램을 실행하는 방법, 프로세서 및 컴퓨터 판독가능 기록 매체
CN103999035B (zh) 用于状态机中的数据分析的方法及系统
EP2875433B1 (en) Methods and systems for handling data received by a state machine engine
CN100428282C (zh) 令牌触发多线程操作的方法和装置
US9152422B2 (en) Apparatus and method for compressing trace data
US9575753B2 (en) SIMD compare instruction using permute logic for distributed register files
US20130156043A1 (en) Methods and systems for routing in a state machine
CN1717654A (zh) 数据处理器的循环控制电路
US7162617B2 (en) Data processor with changeable architecture
KR102379894B1 (ko) 벡터 연산들 수행시의 어드레스 충돌 관리 장치 및 방법
US10521395B1 (en) Systems and methods for implementing an intelligence processing computing architecture
US5404558A (en) Data driven type information processor having a plurality of memory banks
CN101840492B (zh) 一种支持多码制并行处理的条码解码装置
US11907158B2 (en) Vector processor with vector first and multiple lane configuration
US4794518A (en) Pipeline control system for an execution section of a pipeline computer with multiple selectable control registers in an address control stage
US5907693A (en) Autonomously cycling data processing architecture
CN113874836A (zh) 真/假向量索引寄存器
CN1703670B (zh) 指令的寻址范围相关并行化的数据处理设备
US6658561B1 (en) Hardware device for executing programmable instructions based upon micro-instructions
US20170364474A1 (en) Devices for time division multiplexing of state machine engine signals
EP0363174A2 (en) Branch on bit processing
CN100409180C (zh) 用于处理指令循环的方法和系统
KR20120074762A (ko) 재구성 가능한 심드 아키텍처 기반의 컴퓨팅 장치 및 방법
JP2005535045A (ja) Vliw命令を処理するためのプロセッサおよび方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: NXP CO., LTD.

Free format text: FORMER OWNER: KONINKLIJKE PHILIPS ELECTRONICS N.V.

Effective date: 20080509

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20080509

Address after: Holland Ian Deho Finn

Applicant after: Koninkl Philips Electronics NV

Address before: Holland Ian Deho Finn

Applicant before: Koninklijke Philips Electronics N.V.

C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: NITAI SOFTWARE CO., LTD.

Free format text: FORMER OWNER: KONINKL PHILIPS ELECTRONICS NV

Effective date: 20120321

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20120321

Address after: Delaware

Patentee after: Nytell Software LLC

Address before: Holland Ian Deho Finn

Patentee before: Koninkl Philips Electronics NV

C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20101208

Termination date: 20131001