CN100432923C - 用于动态编程解压缩的装置和方法 - Google Patents

用于动态编程解压缩的装置和方法 Download PDF

Info

Publication number
CN100432923C
CN100432923C CNB038212668A CN03821266A CN100432923C CN 100432923 C CN100432923 C CN 100432923C CN B038212668 A CNB038212668 A CN B038212668A CN 03821266 A CN03821266 A CN 03821266A CN 100432923 C CN100432923 C CN 100432923C
Authority
CN
China
Prior art keywords
value
equipment
microcode
input
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.)
Expired - Fee Related
Application number
CNB038212668A
Other languages
English (en)
Other versions
CN1688963A (zh
Inventor
P·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.)
Atmel Corp
Original Assignee
Atmel Corp
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 Atmel Corp filed Critical Atmel Corp
Publication of CN1688963A publication Critical patent/CN1688963A/zh
Application granted granted Critical
Publication of CN100432923C publication Critical patent/CN100432923C/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
    • 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
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted 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
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • 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, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding

Abstract

本发明涉及一种用于解压缩被随后传递给一个处理器用于执行的程序字的系统。根据根据操作和操作数之间的规律性压缩程序字字段。所述作为结果的微码,被存储在程序存储器中并且被馈送(28)给动态编程解压缩设备,或DYPRODE(20),其使用寄存器(32,34,36,38,44)和多路复用器(40,42)来进行配置并且由时钟(24),复位信号(22),和微码(26)来驱动。在每个周期,DYPRODE(20)产生所述程序字的一个未压缩的字段(30)。然后再汇编的程序字被传送给一个处理器。所述DYPRODE系统减少了所需要的程序存储器,减少了所需要的连接所述微处理器和芯片外程序存储器的总线的尺寸以及由于在不用的周期期间在所述寄存器文件中的一个较低的计时频率减少了在CMOS处理器设计中的功率消耗。所述DYPRODE将控制和读取地址冻结为在最后有用的操作期间分配的信。

Description

用于动态编程解压缩的装置和方法
发明领域
本发明涉及程序字,尤其是用于超长指令字(VLIW)处理器的程序字的压缩和解压缩。
发明背景
由于对在某些诸如游戏引擎,图形再现系统,复杂系统模拟器,多媒体,和实时数字信号处理之类的任务中的高性能处理的需要,就会存在对高速处理器的需要,该高速处理器可以迅速地处理大量的数据。超标量处理器,其可以每次执行多于一个的指令,已经变成了高性能设备必需的部件。旧的微处理器设计,诸如复杂指令集计算机(CISC)和精简指令集计算机(RISC),可用于一次执行若干个指令,不过这个需要复杂的可能是十分昂贵的控制回路。
超长指令字(VLIW)处理器每时钟周期能够处理多个用于许多单个功能单元的单个指令。超长指令字处理器具有比复杂指令集计算机和精简指令集计算机芯片较为简单的设计。超长指令字芯片可以价格比较低廉,使用较少的功率,并且实现了比复杂指令集计算机或者精简指令集计算机芯片较高的性能。
然而,其缺陷是当所述超长指令字芯片的设计比它以前的芯片的设计较为简单时,创建和编译那些将使超长指令字芯片能够高效地操作的代码可能是很困难的。因为用于超长指令字处理器的指令字用于多条指令,因此所述用于超长指令字处理器的指令字非常长,达到数百位的长度,并且需要大量的用于存储的程序存储器以及大量的可以将所述指令字从芯片外存储器传送到处理器的总线。这个是有问题的,尤其在小的,掌上型的设备中,其中所述设备的物理尺寸限定了可以被配置在该设备中的处理器,总线,以及存储器的尺寸。
美国专利第5,819,058号,Miller等的“Instruction Compression andDecompression System and Method for a Processor”描述了一种在超长指令字处理器中用于减少需要存储超长指令字的存储器的数量的系统和方法。所述超长指令字可以用多种方法进行压缩,包括缩短缺省指令,压缩不需要执行指令的位数,以及分配短码给较长的指令,其在执行时间被展开。
美国专利第5,878,267号,Hampapuram等的″Compressed Instruction Formatfor Use in a VLIW Processor and Processor for Processmg Such Instructions″描述了压缩VLIW指令的软件,该VLIW指令被存储在存储器中然后在被从所述高速缓冲存储器中读出之后在″不工作″时被解压缩。每条指令由若干个操作组成。每个操作根据一个用于那些特殊操作的压缩方案被压缩;所述压缩方案为每个操作分配一个压缩的操作长度。压缩取决于所述操作的至少一个特征。分支目标未被压缩。
本发明的一个目的是提供一种用于最小化VLIW体系结构的程序存储器尺寸的装置和方法。
本发明的另一个目的是减少VLIW体系结构的所述程序总线的尺寸。
本发明的进一步的目的是在互补金属氧化物半导体(CMOS)处理器设计中减少功率消耗。
发明概述
这些目的通过用于动态编程解压缩的装置和方法来满足。程序被从对应于每条汇编指令的微码的一个时序的序列转换到水平的超长指令字(VLIW)微码。(尽管为了解释主要对所述VLIW体系结构进行讨论,但这并不意味着暗示所述公开的装置和系统的所述应用被限定为VLIW体系结构-所述装置和方法也可以解压缩一个普通的信息流。)然后所述水平的超长指令字微码被压缩成一个存储在程序存储器中的位序列。
所述产生该位序列的压缩算法利用了在随着时间的过去被分配给该水平的超长指令字微码的每个字段的值的序列中出现的规律性。将在每个周期执行的在所述操作和操作数空间中的一个轨迹可以被显示出来。如果这个轨迹通过时间被考虑,通过指定一组将在给定周期中发送给所述处理器的一组操作数(和/或操作码)和那些在上述周期被发送出的操作数(和/或操作码)之间的关系可以减少需要指定单个指令的信息,例如通过根据出发点和增量描述所述轨迹,而不是所述指令自身表述。
然后作为结果位序列被提供给多个动态编程解压缩设备,或多个DYPRODE。这些设备中的每一个被提供一个1或2位微码的连续流,即,描述所述程序的轨迹的主要特征的位序列。所述DYPRODE,利用寄存器和多路复用器来进行装配并且由时钟,复位信号,和所述微码来驱动,使用来自或者内部或者外部存储器的微码并且,其中适当的地方,从或者内部或者外部储存器输入以产生所述程序字的一个未压缩的字段。通过使用一系列的DYPRODE,整个未压缩的程序字可以被重建并且传递到所述处理器上用于执行。
通过利用一个DYPRODE系统可以大大地减少所述程序存储器的尺寸,而且可以减少连接到一个空闲的芯片程序存储器的总线的尺寸。在互补金属氧化物半导体(CMOS)处理器设计中的功率消耗也被减少,因为在所述处理器的寄存器文件内部和处理器设备中存在一个较低的计时频率,当在一个处理器设备不被使用的周期期间时,所述DYPRODE将控制和读取地址冻结为最后有用的操作期间分配的值。
DYPRODE可以被改进为解压缩一个程序字的不同的部分。当其它类型的DYPRODE解压缩寄存器文件地址时,一些DYPRODE非常适合于解压缩操作码或者立即值。
附图的简要说明
附图1a是在现有技术中的样本超长指令字(VLIW)程序字的一个方框图。
附图1b是在现有技术中的样本超长指令字(VLIW)程序字的一个方框图。
附图2是一个图表,显示了一个程序将在每个周期执行的、在操作和操作数的空间中的一个轨迹。
附图3是显示在一个微处理机芯片上的一个DYPRODE系统的方框图。
附图4是用于本发明的一个实施例的压缩的超长指令字(VLIW)程序字的一个方框图。
附图5是根据本发明由2位微码驱动的一个斜率的DYPRODE的方框图。
附图6是根据本发明由2位微码驱动的一个值DYPRODE的方框图。
附图7是根据本发明由1位微码驱动的一个斜率的DYPRODE的方框图。
附图8是根据本发明由1位微码驱动的一个值的DYPRODE的方框图。
附图9是一个根据本发明描述一个程序字的压缩和解压缩的流程图。
用于实现本发明的最佳方式
下列讨论将集中在超长指令字(VLIW)程序字上,尽管在这里讨论的方法和系统的应用不局限于VLIW体系结构并且可以被用于压缩和解压缩一个普通的信息流。
当一个简单的编译器把对应于每个汇编指令的微码的一个时序的序列转换为水平的超长指令字(VLIW)微吗时,创建一个超长指令字(VLIW)程序字。在附图1a中,现有技术中的样本超长指令字(VLIW)程序字162,170包含多个字段164,166,168,172,174,176,传送所述多个被要求并行地使用指令级地操作码和操作数。字段164,166,168,172,174,176的数目和尺寸可以经由执行周期来变化,而单个超长指令字(VLIW)处理器采用有限数目的译码电路,因为大量的字将被解码。例如,字A162和B170可以使用不同的方案进行解码。
参考附图1b,在一个样本译码电路中,程序字178由许多个独立的可以被同时发送给所述处理器的字段组成。例如,所述字段可以包括流控制180,用于一个八端口寄存器文件的地址182,用于二地址产生单元的操作码184,和用于两个操作块的操作码186。
在本发明的优选实施例中,所述水平的超长指令字(VLIW)微码然后被压缩成一个被存储在程序存储器中的位序列。所述产生该位序列的压缩算法利用了在随着时间的过去被分配给该水平的超长指令字微码的每个字段的值的序列中出现的规律性。将在每个周期执行的、在所述操作和操作数空间中的一个轨迹可以被显示出来。如果这个轨迹被通过时间考虑,需要指定单个指令的信息可以通过指定将在给定周期被发送给所述处理器的操作数(和/或操作码)和那些在上述周期被执行的所述操作数(和/或操作码)之间的关系来减少,例如通过根据出发点和增量描述所述轨迹,而不是所述指令本身表述。
所述代码如何可以被压缩的一个例子在下面示出。给出下列代码:
#detine SIZE 4
register int FirstOper[2*SIZE];
register int SecondOper[2*SIZE-1];
...
for(i=0;i<SIZE;i++)
{
    for(j=0;j<SIZE;j++)
    {
    Result[i][j]=FirstOper[2*j]*SecondOper[i+j];
    }
}
...
假定所述代码将要在一个具有足够大的以存储三个矢量Result,FirstOper,和SecondOper的寄存器文件的处理器上被执行。一个编译器能够在寄存器R0-R7上映射FirstOper,在R8-R14上映射SecondOper,以及在R15-R30上映射Result。所述编译器可以产生如下的汇编程序(imul是一个汇编指令,用于对寄存器作乘法,产生一个结果寄存器):
R15=imul(R0,R8);
R16=imul(R2,R9);
R17=imul(R4,R10);
R18=imul(R6,R11);
R19=imul(R0,R9);
R20=imul(R2,R10);
R21=imul(R4,R11);
R22=imul(R6,R12);
R23=imul(R0,R10);
R24=imul(R2,R11);
R25=imul(R4,R12);
R26=imul(R6,R13);
R27=imul(R0,R11);
R28=imul(R2,R12);
R29=imul (R4,R13);
R30=imul(R6,R14)
如附图2所示,所述用于Result,FirstOper,和SecondOper寄存器地址的动态可以被绘制出(这里,时间是以程序执行周期测量,Y轴表示寄存器地址)。通过研究操作数地址的轨迹,确定操作数地址之间的关系是有可能的。这是这里所使用的压缩方法的关键。没有压缩,程序存储器的24位将被请求一个指令以指定每个寄存器的地址。然而,如图2所示的寄存器地址的动态研究表明程序存储器可以通过存储与所述地址的轨迹相关的值而不是存储单独的地址而被保存。程序存储器也可以通过存储与操作数的轨迹相关的值而被保存,在该轨迹中一组符号的概率趋向于一个有界集的值上的最高点,如下所述。考虑所述FirstOper线。假定下列值被存储:
1)起始点(这里,0);
2)所述斜线连接第一个四点(这里,斜率是2);
3)所述斜线连接点4和5以及点8和9(这里,斜率是-4);
如果用于每个周期的斜率被指定而不是现行寄存器的地址,所要求的程序存储器位的数目将会减少。也应注意FirstOper的斜率和SecondOper的斜率在相同周期改变;这些在与相同的操作有关的操作数的轨迹中的同时的变化是相当常见的。这些模式允许更多程序存储器被保存,因为单个将被压缩的信息包可以表示:1)指定FirstOper和SecondOper的地址的16位;2)与全部三个操作数,FirstOper,SecondOper,和Result有关的24位;或3)操作微码加与三个操作数有关的24位。
所述动态解压缩装置,或DYPRODE,使用操作码和操作数之间的这个关系以从上述讨论的位序列中产生程序字的字段;所述DYPRODE的结构不要求与全部的被存储以用于每个周期的操作数有关的完全的24位来产生所述未压缩的程序字。相反的,如下面所示,24位可以在每个周期从存储在所述DYPRODE中的信息中重新产生。
在附图3中,DYPRODE 14是芯片内设备,其形成解压缩系统的一部分。所述DYPRODE 14通过机构16从芯片内或芯片外的存储器18中接收指令和值,所述机构16从存储器18中读取被压缩的字并且将所数字的字段传递到适当的DYPRODE14中。在一个实施例中的这个机构16可以包括用于启动解压缩的状态机和一个移动单元,其从存储器中存取存储的字,把它们移动适当的位数,并且将字的字段分配给适当的DYPRODE用于解压缩。虽然这里显示了4个DYPRODE 14,任何数目的DYPRODE 14可以被用于其它的实施例中。
参照附图4,用于本发明的一个实施例中的被压缩的VLIW字154具有8位特级头部(super header)156,16位字段头部158,和具有七个16位字段,以及一个8位字段的字段160。所述特级头部156位传送所述被压缩的字的结构到所述解压缩机构或者当一个跳转指令或过程调用发生时执行一个重新排列。所述字段头部158包含8对位,其中每个是用于相应的DYPRODE设备(假定在所述解压缩系统中存在8个DYPRODEs)操作的代码(存储,缺省,相同,和交换),当它们的操作的代码假定为所述″存储″值时,剩余的字段160是即将通过DYPRODE读取的16位和8位值。存在于所述被压缩的字154中的字段160的数目,通过假定所述存储值的操作代码的数目被周期接周期确定。在其它实施例中,所述字段头部158可以不必出现于每个周期(例如,如果被压缩的字的所有字段都表示出来,而在这样情况下所述特级头部将要被用作操作代码以用于所述DYPRODEs(看下面的表1)。例如,所述″全部存储″的代码告知所述解压缩装置所述被压缩的字的所有的字段都被表示并且所述字段头部158是不必要的。然而,如果所述操作代码是″混合,″所述字段头部158则是必要的。另外,在其它的实施例中所述单独字段可以不必所有的都表示出来。在这个实施例中,所述解压缩的VLIW字是120位的长度。
表1总结了所述特级头部156位的一个可能的排列.
表1
Figure C0382126600111
表2总结了用于所述DYPRODE设备的可以被包含在所述字段头部158中的操作代码的意义。这些操作代码的完整的说明在下面表4中被提供。
表2
Figure C0382126600112
斜率DYPRODE 20(″DYPRODE1″)被显示在附图5中。DYPRODE1 20由复位信号22,时钟24,和2位微码的连续流来驱动。这个斜率DYPRODE 20以3个N位的寄存器为特征:previous_value32,same_slope34,和swap_slope36。存在2个N位常数:previous_reset44和slope_reset38。DYPRODE1 20也包含具有N位输入的四个多路复用器40(″多工″)和一个具有4个N位输入的多路复用器42。还有一个N位加法器46(模块2N,执行被忽略),或者一组分离的加法器(例如,两个N/2位加法器,或者三个N/3位加法器)。DYPRODE1 20具有一个N位输入28(N通过具体的执行来确定)并且,每个周期,产生N位输出30。在这个实施例中,N位输入28根据所述环境,或者存储器(或者内部的或者外部的),仅仅当由所述2位微码″存储″命令需要这样一个更新时,来进行更新。(取决于所述实施例,所述给DYPRODE的N位输入可以包括一个斜率值,一个存储操作码,或者一个数值。)
如上所述,2位微码是通过将所述水平的VLIW微码压缩成为一个位序列而获得的。对于这种类型的DYPRODE,所述记忆的微码和二进制值在下面表3中进行显示。
表3
Figure C0382126600121
如果这个斜率DYPRODE 20接收一个复位信号22,常数previous_reset的值被输入到所述previous_value寄存器32中并且所述常数reset_slope 38的值被输入到所述same_slope和swap_slope寄存器34,36中。当没有复位信号22时,DYPRODE120由微码26来控制。所述用于复位信号22和微码26信号(缺省48,相同50,存储52,交换54,以及复位56)的数据路径也在附图5中举例说明。所述微码26的动作在下面表格4中被简要描述:
表格4a
Figure C0382126600131
正如可以在上述表4a中看到的那样,当所述微码是″缺省″48时,previous_value 32确定N位输出。当诸如乘法器或者加法器之类的处理器设备在一个时钟周期期间不使用时,在CMOS设计处理器中使用所述″缺省″48微码允许计时频率的减少。例如,在一个具有通过一个4端口读取,2端口写入的寄存器文件馈送的乘法器和加法器的系统中,如果在一个周期不使用加法器,如果所述产生用于所述加法器的文件地址和算术操作码的DYPRODE执行一个″缺省″48微码下列步骤被采用:1)将所述处理器寄存器文件冻结给最后有用的地址(,这可以通过所述与连接到所述加法器的处理器寄存器文件的输出端口有关的斜率DYPRODE来实现);2)将在所述加法器上的控制冻结给最后执行的微码(这个可以通过与所述加法器有关的值DYPRODE来实现);和3)在所述处理器寄存器文件写入端口上产生一个写禁止,其中在处理器寄存器文件写入端口中所述加法的结果将以另外的方式被写入。这些用于将控制和读取地址冻结为在最后的有用的操作期间分配的值的步骤减少了在所述处理器寄存器文件内和在所述设备本身内的计时频率。
当执行一个缺省操作码时,一个斜率DYPRODE20的兴趣变量(interestingvariant)可以输出previous_reset44的值。优点是在一个完全的处理器的设计中所述解压缩系统的一个简单的(较少入侵的)实施例;缺点是获得较低的计时频率的减少。
斜率DYPRODE20的另一个兴趣变量通过在输入中增加一个software_resetxxx信号被获得。这个信号可以当执行一个分支时在执行时间减少所述执行时间,其中在DYPRODE内的所有的寄存器必须假定所述复位值。事实上,在编译时间获知一个条件转移是否将要被执行一般是不可能的。因此,在执行周期应当对应于分支目标发出一个复位(标记)。下面将介绍需要执行DYPRODE内部寄存器的一个传统复位的执行时间周期。通过该附加的software_reset信号,我们可以避免插入那个执行时间代码。表格4b显示了这些修改。
表格4b
Figure C0382126600141
下面,表5示出了程序存储器如何利用本发明的压缩/解压缩方法被保存。在下列情况中,所述汇编程序代码压缩的结果被显示,其中所述Result字段被独立于所述FirstOper和SecondOper字段来压缩。这些压缩的字段的每一个将要被馈送给分离的斜率DYPRODE,在这种情况下8位斜率DYPRODE来解压缩所述Result字段并且16位DYPRODE用于压缩所述FirstOper和SecondOper字段。在16位DYPRODE中,所述加法器被分成两个8位分离的加法器。″其它″表示任何不利用所述与所述缺省微码有关的乘法器的汇编程序操作。所述0xFAFE值为产生模6和模2的8位减法所必需的,对应于为步骤之外所必需的负斜率,例如从R6到R0以及从R11到R9。
表5
Figure C0382126600151
如果没有采用压缩,总共504位将要被请求以存储用于所述指令的寄存器地址用于这里列出的21个周期(21个周期*24位/周期=504位)。通过压缩FirstOper和SecondOper字段以及Result字段,当16位DYPRODE与8位DYPRODE结合时仅仅需要148位,对于3.4的压缩比率(504位/148位)。
如果三个寄存器字段全部通过包含3个8位加法器的单个24位DYPRODE被解压缩,可以实现较大的压缩率。下面,表6显示了使用这种方法的结果。
表6
Figure C0382126600152
Figure C0382126600161
当使用一个24位斜率DYPRODE时,仅仅要求114位存储所述寄存器地址。这里所述压缩率是4.4(504位/114位)。
DYPRODE的另一种类型,值DYPRODE,当一组符号的概率随着时间的过去趋向于子集上的顶点时可以被使用,每一个由一个有限数目的值组成。例如,如果一个程序段局部地显示了被限制的一组算术微码的频繁的使用,在一个CMOS设计中,一个适当设计的值DYPRODE可以减少程序存储器使用和功率消耗,因为它能够将不使用的设备的控制冻结给最后有用的微码。在缺省周期期间,所述值DYPRODE产生一个写禁止信号,在如上所述的处理器内减少所述计时频率。
参考附图6,所述值DYPRODE 64(″DYPRODE2″)由时钟60,复位信号58,和2位微码62来驱动。DYPRODE264的特征是2个N位的寄存器,swap_value 70和same_value 72,以及一个N位常数reset_value 66。这个值DYPRODE 64的特征在于3个具有4个N位输入的多路复用器68。对于每个周期,所述DYPRODE264产生N位的输出76。
所述控制DYPRODE264的微码命令62在下面表7中进行总结。
表7
Figure C0382126600171
如同在上述附图5中讨论的DYPRODE1一样,在附图6中示出的用于DYPRODE264的N位输入值74无关紧要除非所述微码命令是″存储。″用于所述微码命令的数据路径(缺省78,相同80,存储82,以及交换84)和复位信号86也被显示在附图6中。
当执行一个缺省操作码时,如同DYPRODEl一样,一个用于DYPRODE264的兴趣变量可以输出所述reset_value 66的值。此外优点是在一个完全的处理器的设计中所述解压缩系统的一个简单的(较少入侵的)实施例;缺点是获得较低的计时频率的减少。如同DYPRODEl一样,值DYPRODE 64的另一个兴趣变量通过在输入中增加一个software_reset xxx信号而获得以用于减少分支执行时的执行时间。
除所述由在如上所述的附图5和6中2位微码驱动的斜率和值DYPRODE之外,DYPRODE也可以通过单个位码来控制。参照附图7,斜率DYPRODE88(″DYPRODE3″)由复位信号90,时钟,92,和l位微码94驱动。DYPRODE388的特征是具有三个2N位输入多路复用器,一个3N位输入多路复用器,和一个N位加法器116(在其它实施例中,所述加法器116可以是一组作用于N位的分离的小组的加法器,例如两个N/2位加法器)。存在一个常数reset106和2个N位寄存器,Previous_value 112和same_slope 114。DYPRODE3 88在每个周期产生N位的输出104。
所述控制DYPRODE3的微码命令94在下面表8中进行总结。
表8
Figure C0382126600181
除非所述微码命令是″存储,″在附图7中显示的用于DYPRODE3的N位输入值102无关紧要。用于所述微码命令的数据路径(相同96和存储98)以及复位信号100也被显示。
在附图7中,值DYPRODE 118(″DYPRODE4″)由时钟120和1位微码122来驱动。DYPRODE4118的特征是具有两个N位多路复用器128和一个N位寄存器same_value 130。这个DYPRODE 118在每个周期产生N位的输出134。
所述微码命令122在下面表9中进行总结。
表9
Figure C0382126600182
1除非所述微码命令是″存储,″在附图8中示出的用于DYPRODE4的N位输入值132无关紧要。用于所述微码命令的数据路径(相同124和存储126)也被显示。
参考附图9,对本发明的使用DYPRODE压缩和解压缩程序字的方法总结概括如下。首先,微码的时序序列被压缩为水平微码,或者程序字(块146)。接下来,所述水平微代码被压缩成一个1或2位的微码序列(块148)。然后微码的这个压缩的序列被存储在程序存储器中(块150)。然后将这个位序列和任何所需值馈送到适当的DYPRODE以解压缩程序字字段并且重新汇编所述未压缩的程序字(块152)。然后将所述重新汇编的程序字传递给所述处理器用于执行(块154)。

Claims (34)

1.一种设备,用于解压缩数据流以产生未压缩的程序字的至少一个字段,该程序字将被传递给一个处理器用于执行,所述设备包括:
a)至少一个寄存器用于存储一个N位的第一值;
b)第一装置,用于接收第一输入,所述第一输入是一个N位的第二值;
c)第二装置,用于接收第二输入,所述第二输入一个微码,该微码是一个关于如何处理N位的第一和第二值的指令的微码,所述微码描述了将在每个周期执行的、在操作和操作数的空间中的一个轨迹,它包括下列中的一个:
i)一个起始点或增量;或者
ii)频繁出现在一个程序段中的一个有界集的值中的一个;和
d)多个多路复用器,用于多路传输N位的第一和第二值,多个多路复用器中的一个产生一个N位的输出,其中所述输出是所述未压缩程序字的至少一个字段,该程序字将被传递给所述处理器用于执行,其中所述处理器与所述设备电通信。
2.如权利要求1所述的设备进一步的包括多个用于存储多个N位值的寄存器。
3.如权利要求1所述的设备,其中多个多路复用器具有用于多路传输N位值的装置,所述的N位是从一个由下列组成的组中选择的:
a)多个存储在多个寄存器中的N位;和
b)来自于至少一个寄存器和N位的第一输入的至少一个N位值。
4.如权利要求1所述的设备进一步的包括一个第三装置,用于接收第三输入,所述第三输入是一个复位信号。
5.如权利要求1所述的设备进一步的包括第四装置用于接收第四输入,所述第四输入是一个时钟信号。
6.如权利要求1所述的设备进一步的包括至少一个处理装置,用于处理来自于由下列组成的组中的N位值:
a)来自于至少一个寄存器的至少一个N位值;
b)来自于至少一个寄存器的至少一个N位值和来自于第一输入的所述N位值。
7.如权利要求6所述的设备,其中所述处理装置的至少一个是加法器。
8.如权利要求1所述的设备,其中所述用于存储N位值的至少一个寄存器存储一个N位的斜率值。
9.如权利要求1所述的设备,其中所述用于存储N位值的至少一个寄存器存储一个N位的起始值。
10.如权利要求1所述的设备,其中第一输入是一个N位的斜率值。
11.如权利要求1所述的设备,其中第一输入是一个N位的存储操作码。
12.如权利要求1所述的设备,其中第一输入是一个N位的数值。
13.如权利要求1所述的设备,其中所述输出是一个存储操作码。
14.如权利要求1所述的设备,其中所述输出是一个数值。
15.如权利要求1所述的设备,其中所述输出是一个寄存器文件地址。
16.如权利要求1所述的设备其中所述设备位于一个微处理器芯片上。
17.如权利要求1所述的设备进一步的包括装置,用于将一个读取地址为在最后有用的操作期间分配的值。
18.如权利要求1所述的设备进一步的包括装置,用于在一个缺省周期期间产生一个写禁止信号。
19.一种方法,用于解压缩数据流以产生未压缩的程序字的至少一个字段,该程序字将被传递给一个处理器用于执行,所述方法包括:
a)在与一个处理器电通信的设备的寄存器中存储一个N位的第一值;
b)在所述设备接收一个N位的第二值的输入;
c)在所述设备接收一个表示一个关于如何处理N位的第一和第二值的指令的微码,所述微码描述了将在每个周期执行的、在操作和操作数的空间中一个轨迹,它包括下列中的一个:
i)一个起始点或增量或
ii)频繁出现在一个程序段中的一个有界集的值中的一个;
d)在所述设备处理N位的第一和第二值;以及
e)在所述设备产生一个N位的输出,其中所述输出是所述未压缩程序字的至少一个字段,该程序字将被传递给所述处理器用于执行。
20.如权利要求19所述的方法进一步的包括接收一个复位信号。
21.如权利要求19所述的方法进一步的包括接收一个时钟信号。
22.如权利要求19所述的方法,其中所述微码是1位。
23.如权利要求19所述的方法,其中所述微码是2位。
24.如权利要求19所述的方法,其中N位的第二值是一个斜率值。
25.如权利要求19所述的方法,其中N位的第二值是一个存储操作码。
26.如权利要求19所述的方法,其中N位的第二值是一个数值。
27.如权利要求19所述的方法,其中所述处理包括增加N位的值。
28.如权利要求19所述的方法,其中所述处理包括多路传输N位的值。
29.如权利要求19所述的方法,其中所述输出是一个存储操作码。
30.如权利要求19所述的方法,其中所述输出是一个数值。
31.如权利要求19所述的方法,其中所述输出是一个寄存器文件地址。
32.如权利要求21所述的方法,其中所述产生步骤包括多路传输至少一个N位值以产生输出。
33.如权利要求19所述的方法,进一步的包括将一个读取地址冻结为在最后有用的操作期间分配的值。
34.如权利要求19所述的方法,进一步的包括在一个缺省周期期间产生一个写禁止信号。
CNB038212668A 2002-09-20 2003-03-31 用于动态编程解压缩的装置和方法 Expired - Fee Related CN100432923C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
ITMI02A002003 2002-09-20
IT002003A ITMI20022003A1 (it) 2002-09-20 2002-09-20 Apparecchio e metodo per la decompressione dinamica di programmi.

Publications (2)

Publication Number Publication Date
CN1688963A CN1688963A (zh) 2005-10-26
CN100432923C true CN100432923C (zh) 2008-11-12

Family

ID=31986030

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB038212668A Expired - Fee Related CN100432923C (zh) 2002-09-20 2003-03-31 用于动态编程解压缩的装置和方法

Country Status (11)

Country Link
US (1) US6766439B2 (zh)
EP (1) EP1546858A4 (zh)
JP (1) JP2006500658A (zh)
KR (1) KR20050037607A (zh)
CN (1) CN100432923C (zh)
AU (1) AU2003228406A1 (zh)
CA (1) CA2498036A1 (zh)
IT (1) ITMI20022003A1 (zh)
NO (1) NO20051940L (zh)
TW (1) TWI288349B (zh)
WO (1) WO2004027596A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7272700B1 (en) * 2003-12-23 2007-09-18 Altera Corporation Methods and apparatus for indirect compound VLIW execution using operand address mapping techniques
US20060206732A1 (en) * 2005-03-14 2006-09-14 Sony Computer Entertainment Inc. Methods and apparatus for improving processing performance using instruction dependency check depth
US8471861B2 (en) * 2005-12-27 2013-06-25 Imsys Ab Method and system for cost-efficient, high-resolution graphics/image display system
CN101866279B (zh) * 2009-08-14 2012-05-30 威盛电子股份有限公司 微处理器及其相关方法
CN102754078B (zh) * 2009-09-30 2015-05-20 阿尔特拉公司 使用压缩和解压缩的增强型多处理器波形数据交换
JP5770534B2 (ja) * 2011-06-01 2015-08-26 富士通株式会社 プロセッサ、圧縮プログラム、圧縮装置、および圧縮方法
KR101419710B1 (ko) * 2012-12-12 2014-08-13 어보브반도체 주식회사 플래시 메모리의 소모 전력 감소 방법 및 그 장치
US9330011B2 (en) 2013-09-20 2016-05-03 Via Alliance Semiconductor Co., Ltd. Microprocessor with integrated NOP slide detector
US10019260B2 (en) 2013-09-20 2018-07-10 Via Alliance Semiconductor Co., Ltd Fingerprint units comparing stored static fingerprints with dynamically generated fingerprints and reconfiguring processor settings upon a fingerprint match
US9372696B2 (en) * 2013-10-18 2016-06-21 Via Technologies, Inc. Microprocessor with compressed and uncompressed microcode memories
CN106953643B (zh) * 2017-04-11 2020-06-26 安庆师范大学 二分区间法的集成电路数据解压电路及方法
CN109450592A (zh) * 2018-09-29 2019-03-08 广东雅达电子股份有限公司 一种通信协议重组方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997043710A2 (en) * 1996-05-15 1997-11-20 Philips Electronics N.V. Vliw processor which processes compressed instruction format
US6401190B1 (en) * 1995-03-17 2002-06-04 Hitachi, Ltd. Parallel computing units having special registers storing large bit widths

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5175543A (en) * 1991-09-25 1992-12-29 Hewlett-Packard Company Dictionary reset performance enhancement for data compression applications
GB9406666D0 (en) * 1994-04-05 1994-05-25 Communicate Ltd Computer system
GB9412434D0 (en) * 1994-06-21 1994-08-10 Inmos Ltd Computer instruction compression
US5729228A (en) * 1995-07-06 1998-03-17 International Business Machines Corp. Parallel compression and decompression using a cooperative dictionary
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
US5867681A (en) * 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
US5768445A (en) * 1996-09-13 1998-06-16 Silicon Graphics, Inc. Compression and decompression scheme performed on shared workstation memory by media coprocessor
US5819058A (en) * 1997-02-28 1998-10-06 Vm Labs, Inc. Instruction compression and decompression system and method for a processor
US6415376B1 (en) * 2000-06-16 2002-07-02 Conexant Sytems, Inc. Apparatus and method for issue grouping of instructions in a VLIW processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6401190B1 (en) * 1995-03-17 2002-06-04 Hitachi, Ltd. Parallel computing units having special registers storing large bit widths
WO1997043710A2 (en) * 1996-05-15 1997-11-20 Philips Electronics N.V. Vliw processor which processes compressed instruction format

Also Published As

Publication number Publication date
WO2004027596A1 (en) 2004-04-01
EP1546858A1 (en) 2005-06-29
US20040059892A1 (en) 2004-03-25
US6766439B2 (en) 2004-07-20
EP1546858A4 (en) 2006-12-06
TW200405203A (en) 2004-04-01
NO20051940L (no) 2005-06-20
CA2498036A1 (en) 2004-04-01
JP2006500658A (ja) 2006-01-05
KR20050037607A (ko) 2005-04-22
ITMI20022003A1 (it) 2004-03-21
TWI288349B (en) 2007-10-11
CN1688963A (zh) 2005-10-26
AU2003228406A1 (en) 2004-04-08

Similar Documents

Publication Publication Date Title
KR100236527B1 (ko) 벡터 레지스터의 복수 뱅크를 사용한 단일 명령복수 데이터 처 리
Benini et al. Selective instruction compression for memory energy reduction in embedded systems
CN100432923C (zh) 用于动态编程解压缩的装置和方法
US5826054A (en) Compressed Instruction format for use in a VLIW processor
US5787302A (en) Software for producing instructions in a compressed format for a VLIW processor
US6122722A (en) VLIW processor with less instruction issue slots than functional units
US6044451A (en) VLIW processor with write control unit for allowing less write buses than functional units
KR100267102B1 (ko) 벡터 프로세서용 로드 및 저장 유니트
US20050198471A1 (en) Micro-controller for reading out compressed instruction code and program memory for compressing instruction code and storing therein
KR20100122493A (ko) 프로세서
US6131152A (en) Planar cache layout and instruction stream therefor
US5852741A (en) VLIW processor which processes compressed instruction format
KR20010050792A (ko) 2개의 서로 다른 고정 길이 명령 세트를 실행하기 위한프로세서 아키텍쳐
JP3729540B2 (ja) 画像処理装置
EP2130132B1 (en) Dsp including a compute unit with an internal bit fifo circuit
CN1662904A (zh) 具有级联simd结构的数字信号处理器
Kooli et al. Smart instruction codes for in-memory computing architectures compatible with standard SRAM interfaces
US5862398A (en) Compiler generating swizzled instructions usable in a simplified cache layout
EP0843848B1 (en) Vliw processor which processes compressed instruction format
KR100267092B1 (ko) 멀티미디어신호프로세서의단일명령다중데이터처리
JP5112627B2 (ja) プロセッサ・アーキテクチャ
JPH10143494A (ja) スカラ/ベクトル演算の組み合わせられた単一命令複数データ処理
US5799138A (en) Apparatus for instruction-word-linK compression
Chandar et al. Area and power reduction of embedded dsp systems using instruction compression and re-configurable encoding
EP0945782B1 (en) System for converting instructions, and method thereto

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20081112