CN101714076A - 对指令束进行解压缩的处理器和方法 - Google Patents
对指令束进行解压缩的处理器和方法 Download PDFInfo
- Publication number
- CN101714076A CN101714076A CN200910133577A CN200910133577A CN101714076A CN 101714076 A CN101714076 A CN 101714076A CN 200910133577 A CN200910133577 A CN 200910133577A CN 200910133577 A CN200910133577 A CN 200910133577A CN 101714076 A CN101714076 A CN 101714076A
- Authority
- CN
- China
- Prior art keywords
- instruction
- compressed code
- value
- timer
- compression buffer
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000007906 compression Methods 0.000 claims abstract description 87
- 230000006835 compression Effects 0.000 claims abstract description 86
- 230000006837 decompression Effects 0.000 claims abstract description 18
- 230000008569 process Effects 0.000 claims abstract description 10
- 238000012545 processing Methods 0.000 claims description 13
- 230000006870 function Effects 0.000 claims description 8
- 239000000284 extract Substances 0.000 claims description 2
- 230000001360 synchronised effect Effects 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 10
- 230000008859 change Effects 0.000 description 4
- 238000002360 preparation method Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000006866 deterioration Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
Abstract
一种对指令束进行解压缩的处理器和方法。描述与同时处理多个指令的处理器的指令获取技术相关。当从程序存储器获取压缩的指令并且创建包括一系列将被并行处理的指令的指令束时,所述处理器采用在先前时钟周期期间获取的压缩码。压缩缓冲器插在程序存储器和指令解压缩单元之间,从而在先前时钟周期中读取的压缩码在随后的指令束的解压缩周期的开始已经就绪。因此,能够避免由于存储器等待时间造成的延迟。
Description
本申请要求于2008年10月7日提交的第10-2008-98348号韩国专利申请的优先权,该申请全部公开于此以资参考。
技术领域
下面的描述涉及执行存储在程序存储器中的指令的处理器,更具体地说,涉及一种超长指令字(VLIW)处理器。
背景技术
超长指令字(VLIW)机器是指用于采用指令级并行(ILP)的中央处理单元(CPU)架构。在超标量架构中,处理器包括多重处理块。由多重处理块同时处理将被执行的一系列指令中的多个指令。在这种并行架构中,需要具有复杂结构的硬件来控制指令执行的调度。
在VLIW方法中,作为处理器外部软件的编译器调度指令执行,因此,处理器中的指令执行的调度是固定的。其结果是,可简化用于控制的复杂硬件。
VLIW机器的指令束包括将由内部的多重处理块同时执行的指令。由于如ILP的约束这样的因素,将被并行执行的指令的数量可小于VLIW指令的宽度。在这种情况下,无操作(NOP)指令填充这种空指令隙的每一个。对于存储器效率,当存储指令束时,压缩包含NOP指令的这些区域。通过将停止比特与指令一起存储来完成压缩,所述停止比特指示NOP的存在。停止比特确定在随后的时钟周期中将被执行的指令,并且停止比特用于计算下一程序计数器。然而,由于从存储器读取停止比特,因此仅可在存储器等待时间(memory latency)已经逝去之后确定所述停止比特。在一个时钟周期期间,存储器将大部分时间都用于确定停止比特的值。由于在读取停止比特中消耗的时间,可能延长时钟周期,或者,在某些情况下,可能有必要添加用于每个指令获取周期的附加时钟以避免这种延长。时钟周期中的这些改变成为限制VLIW机器的时钟速度的瓶颈。
发明内容
公开一种用于创建将由处理器并行处理的压缩的指令的指令束的方法,所述方法能够解决由于存储器等待时间引起的瓶颈现象。
根据一方面,公开了一种采用在先前时钟周期期间已经获取的压缩码的处理器,以通过从程序存储器获取压缩的指令创建包括一系列将被并行处理的压缩的指令的指令束。
压缩缓冲器可插在程序存储器和指令解压缩单元之间,先前时钟周期期间读取的压缩码在随后的指令束的解压缩周期的开始已经就绪。因此,能够避免由于存储器等待时间造成的延迟。
指令解压缩单元可包括:定时器单元,输出根据从压缩缓冲器读出的压缩码确定的值;访问控制单元,根据从压缩缓冲器读出的压缩码的值和定时器单元的输出计算并输出从中读取指令的程序存储器的地址值和程序计数器的值;指令寄存器,临时存储在访问控制单元输出的地址值指定的地址的指令;以及指令解压缩单元,通过使用定时器单元的输出和存储在压缩缓冲器中的先前的压缩码,对访问控制单元输出的地址值所指定的地址的压缩指令进行解压缩,来产生并输出指令束。
访问控制单元可包括:程序计数器计算单元,根据定时器单元的输出和从压缩缓冲器读出的压缩码的值来计算程序计数器值;存储器地址计算单元,根据定时器单元的输出值和从压缩缓冲器读出的压缩码的值来计算用于存储器访问的地址的值。
根据这个方面,分别提供对程序计数器和存储器地址访问的控制,从而避免了对相同区域的冗余存储器访问,并且能够减小存储器功耗。
根据下面结合附图公开了本发明的示例性实施例的详细描述,其它特点对于本领域的技术人员将是明显的。
附图说明
图1是根据示例性实施例的处理器和程序存储器的框图。
图2示出存储在存储器中的指令和压缩码的示例以解释示例性实施例。
图3是图1中的定时器单元的配置的示意性示图。
图4示出根据压缩码第一定时器的输出值。
图5A是当第一定时器是1时计算程序计数器的值的方法的流程图。
图5B是当第一定时器是0时计算程序计数器的值的方法的流程图。
图6是示出图1所示的存储器地址计算单元的示意性配置的框图。
图7是图1中的指令准备单元的示意性配置的框图。
具体实施方式
提供下面的详细描述以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。因此,将把在此描述的系统、设备和/或方法的各种改变、修改和等同物建议给本领域的普通技术人员。另外,为了清楚简明,省略了公知功能和结构的描述。
图1是根据示例性实施例的处理器10和程序存储器30的框图。如图1所示,处理器10包括压缩缓冲器100和指令解压缩单元500。压缩缓冲器100对从程序存储器读取的压缩码进行缓冲,指令解压缩单元500根据先前存储在压缩缓冲器100中的压缩码对当前从程序存储器30获取的压缩的指令进行解压缩,并将其输出。对本领域技术人员明显的是:程序存储器30可以是处理器外部的主存储器单元、处理器外部的高速缓存或者处理器中的指令高速缓存。可在指令缓冲器之外另外设置处理器内部的压缩缓冲器100,或者可将压缩缓冲器100与指令缓冲器集成。然而,在当前示例性实施例中,由于压缩信息和指令彼此不相关。单独设置压缩缓冲器。
通过压缩缓冲器100缓冲从程序存储器30读出的压缩码,并且将所述压缩码提供给指令解压缩单元500。指令解压缩单元500使用先前时钟周期中存储在压缩缓冲器100中的压缩码,以对从程序存储器30获取的指令进行解压缩。程序存储器30的压缩码不包括当前将被执行的指令的压缩信息,但是包括稍后执行的指令的压缩信息。
图2示出存储在存储器中的指令和压缩码的示例以解释示例性实施例。在图2中,字母a、b、c等表示指令,下标表示与指令相应的将被存储的压缩码。在指令中,N表示“无操作”(NOP)。在这个示例中,将被同时并行执行的指令的数量是3,并且指令束包括3个指令。另外,三个三个地从存储器获取指令。下标表示的每个压缩码指示接下来将被获取的指令的压缩信息,而不是当前指令的压缩信息。在当前示例性实施例中,前三个指令没有被压缩。压缩码“01”表示下面的指令是NOP指令。压缩码“00”表示随后的指令是有意义的指令。
例如,由于图2中的前三个压缩码具有值{01,01,01},因此利用这些压缩码对从存储器获取的接下来的三个指令{b,c,d}进行解压缩。由于与指令“b”相应的压缩码具有值“01”,则指令“b”成为最后的指令,因此第二个时钟周期中将被解压缩的指令束是{b,NO P,NOP}。同时,将与指令{b,c,d}一起被读取的压缩码是{00,00,01}。这些压缩码用于在随后的时钟周期从存储器获取的指令{e,f, g}。由于与指令“e”相应的压缩码是“00”,因此并行处理指令“e”和下一指令“f”。由于用于指令“f”的压缩码是“00”,因此并行处理指令“f”和下一指令“g”。另外,由于用于指令“g”的压缩码是“01”,因此指令“g”成为最后的指令。因此,在第三时钟周期将被并行处理的指令束成为{e,f, g}。
压缩缓冲器100包括第一压缩缓冲器110,用于存储从程序存储器30读出的压缩码。第一压缩缓冲器110作为触发器操作,并且与系统时钟同步,以对从程序存储器30读取的压缩码数据进行锁定。在锁定的压缩码与随后的周期中的时钟同步之后,读出锁定的压缩码。在图1中,第一压缩缓冲器110中旋转的旋绕标志指示第一压缩缓冲器110包括与时钟同步地进行操作的触发器。
根据另一示例性实施例,压缩缓冲器100还可包括第二缓冲器130,用于从条件分支指令提取压缩码,并且存储提取的压缩码。例如,可在条件分支指令(诸如“if-else”)之后执行两个指令:一个是当所述条件表示是“真”时执行的指令,另一个是当所述条件表示是“假”时执行的指令。根据当前示例性实施例的压缩码可仅包含所述指令中的一个的信息。根据示例性实施例的另一方面,VLIW编译器在条件分支码的指令码的保留字段中放置用于其它情况的其它压缩码。处理器10的控制单元从指令寄存器410的预定区域提取压缩码(稍后将进行描述),并且将提取的压缩码存储在第二缓冲器130中。为此,处理器10启动静态分支预测,并且支持错过预测的恢复。另外,条件分支指令需要具有如下大小的空比特字段:
存储器发送宽度(memory issue width)×压缩码
压缩缓冲器100还可包括第三压缩缓冲器150,用于存储与调用的函数返回调用进程时将被执行的指令相应的压缩码。在第三压缩缓冲器150中预先存储在完成调用的函数之后在调用进程中将被执行的第一指令的压缩信息。因此,可以立即对所述函数返回调用进程时将被执行的指令束进行解压缩。稍后将详细描述根据示例性实施例的压缩信息。
再次参照图1,指令解压缩单元500包括:定时器单元200,根据从压缩缓冲器100读出的压缩码的值确定输出值;访问控制单元300,根据读出的压缩码的值和来自定时器单元200的输出,计算并输出地址值和程序计数器值,以从程序存储器30读取指令;以及指令准备单元400,通过使用来自定时器单元200的输出和存储在压缩缓冲器100中的先前的压缩码,通过对从访问控制单元300输出的指定地址的压缩的指令进行解压缩,产生并输出指令束。
定时器单元200包括初始化单元210、第一定时器230和第二定时器250。初始化单元210通过将从压缩缓冲器100读出的压缩码的值组合来建立初始值,根据初始化单元210的输入来初始化第一定时器230,并且第一定时器230具有倒计数的内部时钟。
图3是图1中的定时器单元200的配置的示意性示图。如图3所示,初始化单元210包括或门211-1、211-2和211-3以及组合逻辑电路213。或门211-1、211-2和211-3中的每一个检测压缩单元100的压缩码的值是“00”还是“01”,组合逻辑电路213组合来自或门211-1、211-2和211-3的值,以产生第一定时器230的初始值。将第一定时器230的输出锁定到第二定时器250的输入。也就是说,第二定时器250保持与第一定时器230在先前的时钟的值相同的值。第一定时器230随着系统时钟的前进从初始值倒计数到0。第二定时器250是以第一定时器230的输出作为输入的触发器。
图4示出第一定时器230的输出值与压缩码之间的关系。如图4所示,根据从存储器获取的压缩码的值来确定第一定时器230的值。第一定时器230的值指示存储在压缩缓冲器100中的用于解压缩指令的可用压缩码的数量。因此,当定时器是1时,可从压缩缓冲器100获得的用于解压缩指令的可用压缩码的数量是1。因此,定时器值随着程序计数器的增加而减小。另外,定时器值0指示在随后的周期压缩缓冲器需要被更新为新数据。这样,随着周期的前进,对第一定时器230的值倒计数,并且第二定时器250在与时钟同步的情况下依次接收并存储第一定时器230的值。
根据另一示例性实施例,访问控制单元300包括程序计数器计算单元310和存储器地址计算单元330。程序计数器计算单元310根据定时器单元200的输出和从压缩缓冲器100读出的压缩码来计算程序计数器值,存储器地址计算单元330根据定时器单元200的输出和从压缩缓冲器100读出的压缩码来计算用于存储器访问的地址值。
当第一定时器230的值是2时,指示每个压缩码的值是“01”,因此程序计数器增加1。图5A是当第一定时器230是1时计算程序计数器的值的方法的流程图。如图5A所示,在第一定时器230的值是1并且第二定时器250的值(即,先前时钟周期中第一定时器的值)是2的情况下,程序计数器增加1(操作S501)。如果不是上述情况,则程序计数器根据存储在压缩缓冲器中的第一压缩码c0的值增加1或2(操作S503)。如果第一压缩码c0的值是“01”,则将被输出的指令束必然是{a,NOP,NOP}形式。相应地,存储在指令寄存器410中的指令中的仅一个指令被包括在指令束中,因此程序计数器增加1。如果第一压缩码c0的值是“00”,则定时器的值是1,并因此剩余的压缩码c 1和c2的值都变为“01”。因此,将被输出的指令束是{a,b,NOP}形式。相应地,存储在指令寄存器410中的指令中的两个指令被包括在指令束中,因此程序计数器增加2。
图5B是当第一定时器230是0时计算程序计数器的值的方法的流程图。如图5B所示,当第一定时器230的值是0并且第二定时器250的值(即,先前时钟周期中第一定时器的值)是1时(操作S511),程序计数器可根据存储在压缩缓冲器100中的压缩码之中的压缩码c1(即,中间压缩码)的值增加1或2(操作S513)。当第一定时器230是0,第二定时器250是1时,指示在先前时钟周期中使用最初包括在压缩缓冲器100中的具有值“01”的压缩码中的一个(即,压缩码c0),并且当前仅一个具有值“01”的压缩码可用。也就是说,压缩码c1和压缩码c2中的一个具有值“00”,另一个具有值“01”。当压缩码c1具有值“01”时,将被输出的指令束将具有{c,NOP,NOP}形式,因此程序计数器增加1。如果压缩码c1的值是“00”,则c2具有值“01”,并且指令束是{c,d,NOP}形式的输出。因此,存储在指令寄存器410中的两个指令被包括在指令束中,因此程序计数器增加2。如果第二定时器不是1,则指示存储在压缩缓冲器100中的压缩码是最新从存储器中读取的,并且存储的压缩码中仅一个压缩码具有值“01”(操作S511)。因此,压缩码c0、c1和c2之中仅一个压缩码具有值“01”。如果c0具有值“01”,则指令束将以{c,NOP,NOP}形式被输出,并且程序计数器增加1(操作S515)。如果c1具有值“01”,则指令束将以{c,d,NOP}形式被输出,并且程序计数器增加2。如果c2具有值“01”,则指令束将以{c,d,e}形式被输出,并且程序计数器增加3。
在示例性实施例中,不同于程序计数器获取存储器的传统技术,存储器地址值并不总是与程序计数器的值一致。因此,根据示例性实施例,除了程序计数器计算单元310之外还包括存储器地址计算单元330。存储器地址计算单元330计算读入处理器10的程序存储器30的地址。不同于对已执行的指令的数量计数的程序计数,由于存储器是基于时间发送的存储器,因此通过三个地址完成根据本发明的当前示例性实施例的存储器访问。这样,基于已经预先获取的压缩信息来确定将被解压缩的码,并且基于定时器的值确定获取时刻,从而可以避免冗余的存储器访问,并且可以减少不必要的存储器功耗。
图6是图1示出的存储器地址计算单元330的示意性配置的框图。选择单元335在地址计数器寄存器333的输出与程序计数器的更新值(即,程序计数器计算单元310的输出)之间进行选择。选择单元335在第一定时器230的输出从1变到0时选择程序计数器的更新值(即,程序计数器计算单元310的输出),在其它情况下,选择单元335选择来自地址计数器寄存器333的输出,从而可保持先前地址值。在存储器地址值保持恒定不变时,可避免存储器访问,从而可以减少存储器访问的次数。
图7是图1中的指令准备单元400的示意性配置的框图。如图7所示,指令准备单元400使用先前时钟周期期间存储的压缩信息对指令进行解压缩。在示例性实施例中,指令准备单元400包括指令寄存器410和选择逻辑单元430。指令寄存器410可包括三个寄存器411、413和415(所述三个寄存器411、413和415的每一个都存储指令)和一个存储NOP指令的寄存器417。选择逻辑单元430可包括三个4至1复用器431、433和435。复用器431、433和435中的每一个都具有与每个指令的比特宽度相同的输入数据宽度。通过复用器431、433和435中的每一个选择并输出三个指令和NOP指令中的一个。
输出指令缓冲器437以三发送超长指令字(VLIW)指令束的形式存储输出指令作为单个指令束,并且输出指令束。由图1中的处理器的内部并行处理块700并行处理输出的指令束。表1示出复用器431、433和435根据选择信号选择的指令。
表1
选择信号 | 选择的指令 |
00 | I0 |
01 | I1 |
选择信号 | 选择的指令 |
10 | I2 |
11 | NOP |
在图7中,基于压缩缓冲器100的输出和定时器值来确定用于选择复用器431、433和435的输出的信号IS0、IS1、IS2或IS3。选择信号产生电路是组合逻辑电路,没有在图7中示出。表2示出根据定时器值和压缩缓冲器的输出c0、c1和c2的选择信号的输出IS0、IS1和IS2之间的组合。在本领域中,基于诸如表2的表,实现作为组合逻辑电路的选择信号产生电路的方法是公知。
表2
第一定时器 | 第二定时器 | C0 | C1 | C2 | IS0 | IS1 | IS2 |
2 | 0 | ? | ? | ? | 00 | 11 | 11 |
1 | 2 | ? | ? | ? | 01 | 11 | 11 |
1 | 0 | 1 | ? | ? | 00 | 11 | 11 |
1 | 0 | 0 | ? | ? | 00 | 01 | 11 |
0 | 1 | 1 | 1 | 0 | 01 | 11 | 11 |
0 | 1 | ? | 1 | 1 | 10 | 11 | 11 |
0 | 1 | 1 | 0 | 1 | 01 | 10 | 11 |
0 | 0 | 1 | 0 | 0 | 00 | 11 | 11 |
0 | 0 | 0 | 1 | 0 | 00 | 01 | 11 |
0 | 0 | 0 | 0 | 1 | 00 | 01 | 10 |
以下,将参照图2描述压缩缓冲器100、定时器单元200、程序计数器计算单元310、存储器地址计算单元330和指令选择逻辑单元430的操作。在图2中,通过字母表示存储在存储器中的指令的内容,并且通过下标表示相应的压缩码。指令的字母“N”指示“无操作(NOP)”。
在示例性实施例中,指令准备单元400接收压缩信息和指令,以对指令进行解压缩。指令经由触发器从指令存储器输入到指令准备单元400。压缩信息是压缩缓冲器的输出,随后经由触发器输入到指令准备单元400。因此,在指令存储器中,延迟一个时钟周期之后输入指令,并且延迟两个时钟周期之后输入压缩信息。
在指令存储器的地址0至2,存储了指令{a,NOP,NOP}。所述指令包括{01,01,01}作为它们的压缩信息。压缩缓冲器具有值{00,00,01}。指令准备单元400中的指令缓冲器包含NOP指令,并且指令准备单元400中的压缩缓冲器包含值{00,01,10}。因此,如表4(稍后将提供)所示,用NOP填充输出指令,NOP曾经填充在初始指令缓冲器中。
当时钟周期开始时,在指令存储器的地址3至5存储指令{b,c,d},并且值{01,01,01}填充压缩缓冲器。由于压缩缓冲器具有三个“01”,因此定时器变为2。指令准备单元400中的指令缓冲器包含在先前周期期间已经获取的指令{a,N,N}。指令准备单元400中的压缩缓冲器包含在先前周期期间已经获取的压缩码{00,00,01}。如表4所示准备选择信号,因此指令输出为指令束{a,N,N}。在这种情况下,参照表4,接下来的程序计数器是4,存储器地址变为3。
在表3中,存储器地址的每行的中心的数字是指令,并且当地址输入时,存储器地址列的右侧的数字(即,“将从存储器输出的指令”列中的数字)与将在随后的周期中输出的存储器值相应。例如,当地址是12时,从存储器输出的指令为{k,l,m}。
表3
下一程序计数器(PC) | 存储器地址 | 将从存储器输出的指令 | 压缩缓冲器 | 第一定时器 | 第二定时器 |
3 | 0 0 3 | a01 N01 N01 | 00 00 01 | 0 | 0 |
4 | 3 3 3 | b00 c00 d01 | 01 01 01 | 2 | 0 |
5 | 3 3 3 | b00 c00 d01 | 01 01 01 | 1 | 2 |
6 | 6 3 6 | b00 c00 d01 | 01 01 01 | 0 | 1 |
9 | 9 6 9 | e00 f01 g01 | 00 00 01 | 0 | 0 |
11 | 9 9 9 | h00 i01 j00 | 00 01 01 | 1 | 0 |
12 | 12 9 12 | h00 i01 j00 | 00 01 01 | 0 | 1 |
14 | 14 12 14 | k00 l00 m00 | 00 01 00 | 0 | 0 |
表4
下一PC | 压缩缓冲器 | IS0 | IS1 | IS2 | 解压缩结果 |
3 | 00 00 00 | 00 | 01 | 10 | N N N |
4 | 01 01 01 | 00 | 01 | 10 | a N N |
5 | 01 01 01 | 00 | 11 | 11 | b N N |
6 | 01 01 01 | 01 | 11 | 11 | c N N |
9 | 00 00 01 | 10 | 11 | 11 | d N N |
11 | 00 01 01 | 00 | 01 | 10 | e f g |
12 | 00 01 01 | 00 | 01 | 11 | h i N |
14 | 00 01 00 | 00 | 00 | 00 | j N N |
14 | 00 01 00 | 00 | 00 | 00 | k m N |
在接下来的时钟周期中,由于定时器不是0,因此在指令存储器和压缩缓冲器中没有改变,但是定时器减少1,变为“1”。指令准备单元400中的指令缓冲器包含在先前时钟周期期间已经获取的指令{b,c,d}。指令准备单元400中的压缩缓冲器包含在先前时钟周期期间已经获取的压缩码{01,01,01}。由于与指令{b}相应的压缩码是“01”,如表4所示准备选择信号,因此由此将被输出的指令是指令束{b,N,N}。接下来的程序计数器是5,并且由于没有新的存储器访问,因此存储器地址保持在3。
当接下来的时钟周期开始时,指令存储器和压缩缓冲器不改变。仅定时器减小1,变为“0”。另外,指令准备单元400中的指令缓冲器和压缩缓冲器中没有改变。由于与指令{c}相应的压缩码是“01”,因此如表4所示准备选择信号,并且由此将被输出的指令变为指令束{c,N,N}。接下来的程序计数器是6,并且由于需要新的存储器访问,因此存储器地址是6。
当随后的时钟周期开始时,在指令存储器的地址6至8存储指令{e,f,g},并且值{00,00,01}填充压缩缓冲器。由于在压缩缓冲器中仅存在一个“01”,因此定时器是0。在指令准备单元400的指令缓冲器中,保持在先前时钟周期期间获取的指令{b,c,d}。因此,如表4所示组合选择信号,并且将被输出的指令为指令束{d,N,N}。接下来的程序计数器变为9,并且由于需要新的存储器访问,因此存储器地址还是9。
当下面的时钟周期开始时,在指令存储器的地址6至8存储指令{h,i,j},并且值{00,01,01}填充压缩缓冲器。由于在压缩缓冲器中存在两个“01”,因此定时器是1。将在先前时钟周期期间获取的指令{e,f,g}加载到指令准备单元400的指令缓冲器中。还将在先前时钟周期期间获取的压缩码{00,00,01}加载到指令准备单元400的压缩缓冲器中。因此,如表4所示准备选择信号,并且将被输出的指令为指令束{e,f, g}。通过将先前的程序计数器增加2,接下来的程序计数器是11,并且由于需要新的存储器访问,因此存储器地址是6。以相似的方式执行随后的步骤。
如上所述,各个方面允许消除存储器等待时间,并且允许以低速、低功率和低成本SRAM实现高速VLIW机器。
另外,可以避免用于产生存储器地址的管道结构,从而可以增强处理器性能。
此外,由于分别控制程序计数器和存储器地址访问,因此避免了对相同区域的重复存储器访问,从而可以减小存储器功耗。
另外,不需要添加压缩过程中创建的管道结构,因此命中时间(hit time)保持在一个时钟周期,并且可以防止高速缓存性能的恶化。
上面已经描述了一些示例性实施例。但是,应该理解,可以进行各种修改。例如,如果以不同的顺序执行上述技术,和/或以不同的方式组合上述系统、架构、装置或电路中的组件和/或用其它组件或其等同物替换或补充所述组件,则可实现适合的结果。因此,其它实现在权利要求的范围内。
Claims (10)
1.一种产生解压缩的指令束的方法,所述指令束包括一系列由处理器并行处理的解压缩的指令,所述方法包括:
在时钟周期期间获取压缩的指令和压缩码;
使用在时钟周期之前获取的压缩码从压缩的指令产生指令束。
2.如权利要求1所述的方法,其中,所述解压缩的指令束包括在当前周期获取的压缩的指令中的至少一个以及至少一个“无操作NOP”指令。
3.如权利要求1所述的方法,其中,当获取的指令之一是条件分支指令时,使用与条件分支指令相应并且与指令一起被获取的压缩码对满足第一条件时将被执行的指令束进行解压缩,并且使用包括在条件分支指令本身中的压缩码对满足第二条件时将被执行的指令束进行解压缩。
4.如权利要求1所述的方法,其中,当执行了函数随后返回调用进程时,通过使用调用函数时存储的压缩码对接下来将被执行的指令束进行解压缩。
5.一种通过使用内部处理块并行处理包括在指令束中的各个指令的处理器,所述处理器包括:
压缩缓冲器,对从程序存储器读出的压缩码进行缓冲;
指令解压缩单元,根据存储在压缩缓冲器中的先前的压缩码对当前从程序存储器获取的压缩的指令进行解压缩。
6.如权利要求5所述的处理器,其中,指令解压缩单元包括:定时器单元,根据从压缩缓冲器读出的压缩码确定输出值;访问控制单元,根据从压缩缓冲器读出的压缩码的值和定时器单元的输出来计算并输出从中读取指令的程序存储器的地址值和程序计数器的值;以及指令解压缩单元,通过使用定时器单元的输出和存储在压缩缓冲器中的先前的压缩码,对于位于访问控制单元输出的地址值所指定的地址的压缩的指令进行解压缩,来产生并输出指令束。
7.如权利要求6所述的处理器,其中,定时器单元包括初始化单元、第一定时器和第二定时器,其中,初始化单元通过将从压缩缓冲器读出的压缩码的值组合来建立初始值;通过初始化单元的输入来初始化第一定时器,并且第一定时器具有倒计数的内部时钟;第二定时器接收第一定时器的值,将接收的第一定时器的值与时钟进行同步,并且随后存储同步的值。
8.如权利要求6所述的处理器,其中,访问控制单元包括:程序计数器计算单元,根据定时器单元的输出和从压缩缓冲器读出的压缩码的值来计算程序计数器值;存储器地址计算单元,根据定时器单元的输出值和从压缩缓冲器读出的压缩码的值来计算用于存储器访问的地址的值。
9.如权利要求5所述的处理器,其中,压缩缓冲器包括:第一压缩缓冲器,存储从程序存储器读出的压缩码;第二压缩缓冲器,提取并存储包括在条件分支指令中的压缩码。
10.如权利要求5所述的处理器,其中,压缩缓冲器包括:第一压缩缓冲器,存储从程序存储器读出的压缩码;第三压缩缓冲器,存储调用函数时的压缩码,所述压缩码与在函数返回时将被指令的指令相应。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080098348A KR101545701B1 (ko) | 2008-10-07 | 2008-10-07 | 프로세서 및 그 명령어 번들 복원 방법 |
KR10-2008-0098348 | 2008-10-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101714076A true CN101714076A (zh) | 2010-05-26 |
CN101714076B CN101714076B (zh) | 2015-05-13 |
Family
ID=41017128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910133577.9A Expired - Fee Related CN101714076B (zh) | 2008-10-07 | 2009-04-16 | 对指令束进行解压缩的处理器和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8051274B2 (zh) |
EP (1) | EP2175363A1 (zh) |
KR (1) | KR101545701B1 (zh) |
CN (1) | CN101714076B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103329112A (zh) * | 2010-10-22 | 2013-09-25 | 意法爱立信有限公司 | 用于减少页面错误发生时压缩页面加载时间的方法和装置 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101603751B1 (ko) * | 2010-02-18 | 2016-03-16 | 삼성전자주식회사 | 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법 |
US20120254592A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location |
KR101738938B1 (ko) * | 2011-09-08 | 2017-05-23 | 삼성전자주식회사 | 명령어 압축 장치, 명령어 압축 방법 및 컴퓨터로 읽을 수 있는 저장 매체 |
CN103729315B (zh) * | 2012-10-15 | 2016-12-21 | 华为技术有限公司 | 一种地址压缩、解压缩的方法、压缩器和解压缩器 |
Citations (3)
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 |
US5930508A (en) * | 1996-12-16 | 1999-07-27 | Hewlett-Packard Company | Method for storing and decoding instructions for a microprocessor having a plurality of function units |
US6499097B2 (en) * | 1998-12-03 | 2002-12-24 | Sun Microsystems, Inc. | Instruction fetch unit aligner for a non-power of two size VLIW instruction |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5819058A (en) * | 1997-02-28 | 1998-10-06 | Vm Labs, Inc. | Instruction compression and decompression system and method for a processor |
EP0953898A3 (en) | 1998-04-28 | 2003-03-26 | Matsushita Electric Industrial Co., Ltd. | A processor for executing Instructions from memory according to a program counter, and a compiler, an assembler, a linker and a debugger for such a processor |
US6317820B1 (en) | 1998-06-05 | 2001-11-13 | Texas Instruments Incorporated | Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism |
KR100991700B1 (ko) | 2002-08-16 | 2010-11-04 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 처리 장치, 처리 방법 및 컴퓨터로 판독가능한 기록 매체 |
KR100592106B1 (ko) | 2005-04-12 | 2006-06-21 | 엠텍비젼 주식회사 | 개별 메모리 접근 허용 방법 및 장치 |
JP4404373B2 (ja) | 2007-07-19 | 2010-01-27 | 株式会社日立製作所 | 半導体集積回路 |
-
2008
- 2008-10-07 KR KR1020080098348A patent/KR101545701B1/ko active IP Right Grant
-
2009
- 2009-04-16 CN CN200910133577.9A patent/CN101714076B/zh not_active Expired - Fee Related
- 2009-05-18 US US12/467,536 patent/US8051274B2/en active Active
- 2009-07-07 EP EP09164747A patent/EP2175363A1/en not_active Withdrawn
Patent Citations (3)
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 |
US5930508A (en) * | 1996-12-16 | 1999-07-27 | Hewlett-Packard Company | Method for storing and decoding instructions for a microprocessor having a plurality of function units |
US6499097B2 (en) * | 1998-12-03 | 2002-12-24 | Sun Microsystems, Inc. | Instruction fetch unit aligner for a non-power of two size VLIW instruction |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103329112A (zh) * | 2010-10-22 | 2013-09-25 | 意法爱立信有限公司 | 用于减少页面错误发生时压缩页面加载时间的方法和装置 |
CN103329112B (zh) * | 2010-10-22 | 2015-12-16 | 意法爱立信有限公司 | 用于减少页面错误发生时压缩页面加载时间的方法和装置 |
US10459840B2 (en) | 2010-10-22 | 2019-10-29 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods and devices for reducing compressed page loading time on page fault |
Also Published As
Publication number | Publication date |
---|---|
US20100088536A1 (en) | 2010-04-08 |
KR101545701B1 (ko) | 2015-08-19 |
CN101714076B (zh) | 2015-05-13 |
US8051274B2 (en) | 2011-11-01 |
KR20100039121A (ko) | 2010-04-15 |
EP2175363A1 (en) | 2010-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100973951B1 (ko) | 오정렬 메모리 액세스 예측 | |
CN104657110B (zh) | 具有固定数量的可变长度指令的指令高速缓存器 | |
CN107111550B (zh) | 用于隐藏程序提取的页遗漏转换时延的方法和装置 | |
US7162617B2 (en) | Data processor with changeable architecture | |
CN102207853A (zh) | 指令获取设备和处理器 | |
CN101714076B (zh) | 对指令束进行解压缩的处理器和方法 | |
CN102508635A (zh) | 一种处理器装置及其循环处理方法 | |
KR20130141396A (ko) | 루프 버퍼 패킹 | |
US20040168042A1 (en) | Pipelined architecture with separate pre-fetch and instruction fetch stages | |
CN107810486B (zh) | 锁定用于原子地执行的指令组的操作数的值 | |
CN101763249A (zh) | 对非控制流指令减少分支检验 | |
US9804853B2 (en) | Apparatus and method for compressing instruction for VLIW processor, and apparatus and method for fetching instruction | |
US20140250289A1 (en) | Branch Target Buffer With Efficient Return Prediction Capability | |
US6851033B2 (en) | Memory access prediction in a data processing apparatus | |
CN107870780B (zh) | 数据处理装置和方法 | |
TW201712534A (zh) | 關於包括指令組的大小之指令組的資訊解碼 | |
US20160092182A1 (en) | Methods and systems for optimizing execution of a program in a parallel processing environment | |
CN106610817A (zh) | 用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法 | |
US20050108508A1 (en) | Apparatus having a micro-instruction queue, a micro-instruction pointer programmable logic array and a micro-operation read only memory and method for use thereof | |
US8631173B2 (en) | Semiconductor device | |
EP3314404B1 (en) | Processing header to interpret information regarding a group of instructions | |
US8065505B2 (en) | Stall-free pipelined cache for statically scheduled and dispatched execution | |
US20160335089A1 (en) | Eliminating redundancy in a branch target instruction cache by establishing entries using the target address of a subroutine | |
CN104035748B (zh) | 包括打包源字段和目的地字段的微操作 | |
CN111209044A (zh) | 指令压缩方法及装置 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150513 Termination date: 20210416 |