CN100356318C - 用于指令对准的方法和设备 - Google Patents
用于指令对准的方法和设备 Download PDFInfo
- Publication number
- CN100356318C CN100356318C CNB2004800139945A CN200480013994A CN100356318C CN 100356318 C CN100356318 C CN 100356318C CN B2004800139945 A CNB2004800139945 A CN B2004800139945A CN 200480013994 A CN200480013994 A CN 200480013994A CN 100356318 C CN100356318 C CN 100356318C
- Authority
- CN
- China
- Prior art keywords
- instruction
- impact damper
- pointer
- register
- present
- 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
Links
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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
- G06F9/30152—Determining start or end of instruction; determining instruction length
-
- 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
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- 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/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
Abstract
一种指令对准单元,用于在具有管线架构的数字处理器中对准指令。该指令对准单元包括:指令队列;管线级n中的当前指令缓冲器和下一指令缓冲器;管线级n+1中的经对准指令缓冲器;指令提取逻辑单元,用于从指令高速缓存或从下一指令缓冲器向该当前指令缓冲器中加载指令,并用于从指令高速缓存或从指令队列向下一指令缓冲器中加载指令;以及对准控制逻辑单元,响应于包含在指令中的指令长度信息,所述指令用于控制指令从当前指令缓冲器和下一指令缓冲器传递到经对准指令缓冲器。对准控制逻辑单元包括用于预解码指令以提供指令长度信息的预解码器,和响应于指令长度信息用于产生当前指令指针以便控制指令向经对准指令缓冲器的传递的指针产生逻辑单元。
Description
技术领域
本发明涉及数字处理器,并且更具体地,涉及方法和设备,其用于对准从指令高速缓存提取的可变长度指令并用于向指令解码器提供经对准的指令。
背景技术
数字信号计算机或数字信号处理器(DSP)是特殊用途的计算机,其设计用于为数字信号处理应用优化性能,例如快速傅立叶变换、数字滤波器、图像处理、无线系统中信号处理及语音识别。数字信号处理器应用典型地具有以下特征:实时操作、高中断率和密集数值运算。此外,数字信号处理器应用在存储器访问操作中倾向于密集并需要大量数据的输入和输出。数字信号处理器架构典型地被优化以便有效执行此种运算。除了数字信号处理器应用之外,DSP频繁地被要求进行微控制器操作。微控制器操作涉及数据处理但典型地不需要大规模运算。
数字信号处理器可利用管线架构以获得高性能。如该技术领域中所公知的,管线架构包括多个管线级,其每个执行一特定操作,如指令提取、指令解码、地址产生、算术操作等等。程序指令根据连续的时钟周期而前进通过管线级,且若干指令可同时处于完成的各种级中。
为了编码的紧凑,一些处理器支持具有变化长度的指令。例如,一个处理器支持16位指令、32位指令和64位指令。关于存储器边界在指令对准上没有限制,使得存储器可尽可能得紧凑。在指令执行期间,指令典型地从存储器移到指令高速缓存,所述指令高速缓存也没有对指令对准的限制。因此,每个指令高速缓存行依赖于指令长度可包括一个或多个指令,且指令可能跨过指令高速缓存行。从指令高速缓存提取的指令通常与高速缓存行对准。因而,在将从指令高速缓存提取的指令发布到指令解码器之前需要对准指令。在理想条件下,每个时钟周期应向指令解码器发布一经对准的指令。
用于指令对准的技术在现有技术中是公知的。然而,现有技术的指令对准技术没有为深管线、高性能的处理器提供令人满意的性能。相应地,需要用于对准可变长度指令的改进的方法和设备。
发明内容
根据本发明的第一方面,提供了指令对准单元用于在具有管线架构的数字处理器中对准指令。该指令对准单元包括当前指令缓冲器和管线级n中的下一指令缓冲器;管线级n+1中的经对准的指令缓冲器;指令提取逻辑单元,用于从存储器或从下一指令缓冲器向当前指令缓冲器中加载指令,并用于从存储器向下一指令缓冲器中加载指令;以及对准控制逻辑单元,其响应于包含在指令中的指令长度信息以便控制指令从当前指令缓冲器和该下一指令缓冲器传递到经对准的指令缓冲器。当前指令缓冲器、下一指令缓冲器和经对准指令缓冲器每个可包括用于保持指令字的多个寄存器。每个指令可包括一个或多个指令字。
当当前指令缓冲器和下一指令缓冲器为满的时,指令队列可保持从存储器提取的指令。将指令提供到指令对准单元的存储器典型地是指令高速缓存。
对准控制逻辑单元可包括:预解码器,用于预解码指令以提供指令长度信息;指令长度寄存器,用于保持经预解码的长度信息;及指针产生逻辑单元,其响应于指令长度信息,用于产生当前指令指针以便控制指令从当前指令缓冲器,且如果需要,从下一指令缓冲器,传递到对准指令缓冲器。预解码器可包括:第一预解码器,用于预解码来自存储器的指令;及第二预解码器,用于预解码下一指令寄存器中的指令。对准控制逻辑单元可进一步包括多路复用器,用于选择第一预解码器的输出、第二预解码器的输出或指令长度寄存器输出,并将所选择的指令长度信息供给到指令长度寄存器。每个指令长度寄存器可包括用于对应的指令字的一有效位。预解码器和指令长寄存器可位于管线级n中,而指针产生逻辑单元可位于管线级n+1中。
指针产生逻辑单元可包括:下一指针选择逻辑单元,用于响应于当前指令指针而从指令长度寄存器选择下一指令指针的;及当前指针选择逻辑单元,用于从下一指令指针选择当前指令指针。当前指针选择逻辑单元可包括:状态锁存器,其包含一状态位,当下一指令指针的低位位(low orderbit)为零时,所述状态位被设置;及选择逻辑单元,其在状态位被设置时,用于将下一指令指针的高位位(high order bit)选择为当前指令指针。指针产生逻辑单元可进一步包括新指针选择逻辑单元,用于选择新指针作为当前指令指针以响应分支指令。
指针产生逻辑单元可利用逻辑电路,其中值的集合中的每个值由一位(bit)来表示,用于控制下一指令指针和当前指令指针的选择。指针产生逻辑单元可进一步利用逻辑电路,其中值的集合中的每个值由一位来表示,用于控制指令从当前指令缓冲器和下一指令缓冲器向经对准指令缓冲器传递。
根据本发明的另一方面,提供了一种用于在带有管线架构的数据处理器中对准指令的方法。该方法包括:将指令从存储器或从下一指令缓冲器加载到当前指令缓冲器中;当当前指令缓冲器为满时,将指令从存储器加载到下一指令缓冲器中;以及响应于包含在指令中的指令长度信息来控制指令从当前指令缓冲器和下一指令缓冲器传递到经对准指令缓冲器。
根据本发明进一步的方面,对准控制逻辑单元被提供于指令对准单元中以便在具有管线架构的数字处理器中对准指令。指令对准单元包括当前指令缓冲器、下一指令缓冲器和经对准指令缓冲器。对准控制逻辑单元包括:在第一管线级中,用于预解码指令以提供指令长度信息的预解码器,及用于保持经预解码的指令长度信息的指令长度寄存器;以及,在第二管线级中,响应于指令长度信息的指针产生逻辑单元,用于生成当前指令指针以便控制指令从当前指令缓冲器以及,如需要,从下一指令缓冲器加载到经对准指令缓冲器。
根据本发明进一步的方面,提供了指令对准系统,用于在具有管线架构的数字处理器中对准指令。该指令对准系统包括:指令队列;管线级n中的当前指令缓冲器和下一指令缓冲器;管线级n+1中的对准指令缓冲器;指令提取逻辑单元,用于从指令高速缓存或从下一指令缓冲器将指令加载到当前指令缓冲器中,并用于从指令高速缓存或从指令队列将指令加载到下一指令缓冲器中;以及对准控制逻辑单元,其响应于包含在指令中的指令长度信息以便控制指令从当前指令缓冲器和下一指令缓冲器传递到经对准的指令缓冲器。
附图说明
为了更好地理解本发明,参考了附图,所述附图在此引入以供参考,其中:
图1是具有管线架构的数字处理器的框图;
图2是图1中所示的提取单元和解码单元的简化框图;
图3是根据本发明的指令对准系统的实施例的简化框图;
图4是指令对准单元的数据路径的较详细的框图;
图5是指令对准数据路径和对准控制逻辑单元的较详细的框图;
图6是图5的指针产生逻辑单元的示意性框图;
图7是示意图,说明了指令高速缓存的四个行(1ine)的实例;以及
图8A-8E说明了在处理图7中所示的指令高速缓存行时对于五个连续时钟周期指针产生逻辑单元的操作。
具体实施方式
数字信号处理器(DSP)一实施例的框图在图1中示出。数字信号处理器包括计算核心10和存储器12。计算核心10是DSP的中央处理器。如下所述,核心10和存储器12可具有管线架构。在此实施例中,核心10包括指令提取单元20、指令解码单元22、加载/存储单元24、执行单元30以及系统单元32,其可包括分支解析单元(branch resolution unit)。
指令提取单元20和指令解码单元22在下面讨论。加载/存储单元24控制到存储器12的访问。存储器读数据可从存储器12传递到执行单元30中的寄存器文件(register file)。存储器写数据可从执行单元30中的寄存器文件传递到存储器12。在提取单元20中没有指令高速缓存的情况下,指令提取单元可访问存储器12。系统单元32提供分支解析信息到指令提取单元20。如指令执行所需,执行单元30可包括一个或多个加法器、乘法器、累加器、移位器等。
指令提取单元20和指令解码单元22的简化的框图被示出在图2中。指令提取单元20可包括PC(程序计数器)重定向单元40、指令高速缓存42、指令队列44、指令对准单元46和分支预测器50。PC重定向单元40确定待提取指令的地址。程序指令从指令高速缓存42提取并且由对准单元46所对准。如果必要,指令被放置在指令队列44中并且如所需被提供到对准单元46。经对准的指令由指令解码器22解码,并且经解码的指令被传送到加载/存储单元24(图1)。在没有指令高速缓存的情况下,被请求的指令在存储器12(图1)中被访问。在正常程序流期间,程序计数器被增量以产生顺序的指令地址。分支预测器50预测分支指令并且重定向指令提取以限制分支指令在性能上的不良效果。在分支指令已执行后,分支解析信息从系统单元32(图1)被提供。
计算核心10优选地具有管线架构,所述管线架构是公知的架构,其中核心包括同步工作的一系列经连接的级,并且指令执行被分成连续时钟周期中连续管线级中进行的一系列操作。因此,例如,第一级可进行指令提取,第二级可进行指令解码,第三级可进行数据地址产生,第四级可进行数据存储器访问而第五级可进行指定的计算。管线架构的一个优点是增加的工作速度,因为多个指令可以同时处理,其中不同的指令处于完成的不同级。需要理解的是,图1中所示的每个单元可包括一个或者多个管线级。仅为举例,计算核心10可包括达三十级。
此实施例中的数字信号处理器使用16位、32位和64位的可变长度指令。所述指令被打包(pack)在存储器中以避免存储器空间的浪费。即,可变长度指令被包装在指令高速缓存(ICache)42中的64位行中。每个ICache行典型地包括四个16位字。因此,例如,一ICache行可包括四个16位指令、两个32位指令、一个64位指令、或者不同长度指令的组合。另外,所述指令可跨过ICache行,即一个指令在16位字边界上可被分开在两个ICache行之间。因为没有指令顺序上的限制,在ICache行中有指令长度的很多可能的组合。需要理解的是,指令长度、不同指令长度的数目、ICache行中位的数目以及ICache行中字的大小在上面仅通过示例的方式给出而不是对本发明范围的限制。
此实施例中的指令高速缓存提供64位行。指令对准系统从ICache行对指令解包(unpack)并且理想地每周期提供一个指令到指令解码器22。在某些情况中,不可能每周期提供一个指令到指令解码器。这样情况的实例是到跨过两个ICache行的目标指令的分支。需要两个周期来提取完整的目标指令。
根据本发明一实例的指令对准系统的简化框图在图3中示出。指令对准系统100可包括指令队列44和对准单元46。指令对准系统的对准数据路径包括指令队列44、当前指令缓冲器110、下一指令缓冲器112以及经对准的指令缓冲器120。在此实施例中,缓冲器110、112和120每个具有64位的大小。指令由3∶1mux(多路复用器)130提供到下一指令缓冲器112,所述mux130从指令高速缓存42、从指令队列44以及从下一指令缓冲器112的输出接收输入。如下所述,指令提取逻辑单元134控制指令传递到当前指令缓冲器110、下一指令缓冲器112以及指令队列44中。缓冲器110和112的输出分别连接到mux 132和130的输入,以允许缓冲器的内容被保留多于一个时钟周期。
mux140从当前指令缓冲器110选择输入,并且如果必要从下一指令缓冲器112选择输入,并且提供经对准的指令到经对准的指令缓冲器120。在此实施例中,mux140是4∶1 64位mux,如图5中所示而配置并如下所述。如下面详细描述的,对准控制逻辑单元154控制指令对准。
指令对准系统是数字信号处理器的管线架构的部分,并且在此实施例中被分布在两个管线级之上。在图2和3的实施例中,指令高速缓存42位于级3中,指令队列44、下一指令缓冲器112以及当前指令缓冲器110位于级4中,并且经对准的指令缓冲器120位于管线的级5中。所述管线架构允许指令预解码以确定指令长度信息,如下所述,其被用于指令对准中。
在操作中,如果当前指令缓冲器110为空,从ICache 42提取的指令被放置在当前指令缓冲器110中。如果当前指令缓冲器110非空并且下一指令缓冲器112为空,所提取的指令被放置在下一指令缓冲器112中。如果下一指令缓冲器112非空,所提取的指令被放置于指令队列44中。加载指令到当前指令缓冲器110、下一指令缓冲器112以及指令队列44中由指令提取逻辑单元134来控制。由对准控制逻辑单元154提供到mux140的当前指令指针指示指令的第一16位字在当前指令缓冲器110中的位置。基于指针,mux140从当前指令缓冲器110选择指令,并且如果必要从下一指令缓冲器112选择指令并将指令提供到经对准的指令缓冲器120。
现在描述指令对准的实例。在第一实例中,在连续周期上,连续的64位指令从当前指令缓冲器110被传递到经对准指令缓冲器120,且新的指令从ICache 42被加载到当前指令缓冲器110中。
在第二实例中,在连续周期上,16位指令从当前指令缓冲器110被传递到经对准指令缓冲器120,且新提取的指令被加载到下一指令缓冲器112和指令队列44中直到当前指令缓冲器110中的16位指令已被使用。
在第三实例中,32位指令由64位指令跟随。32位指令和64位指令的一半被保持于当前指令缓冲器110中,且64位指令的第二半被保持于下一指令缓冲器112中。在第一时钟周期上,32位指令从当前指令缓冲器110被传递到经对准指令缓冲器120,且当前指令缓冲器110的内容被重新加载到当前指令缓冲器110中。在第二时钟周期上,64位指令的两个16位的字从当前指令缓冲器110被选择,且该64位指令的两个16位的字从下一指令缓冲器112被选择。该64位指令的四个16位的字被加载到经对准指令缓冲器120。在此情况下,被提供到mux140的当前指令指针指向当前指令缓冲器110中的第三16位的字。
在当前指令缓冲器110和下一指令缓冲器112中,指令长度的不同组合是可能的。在每个情况下,被提供到mux140的指针指示当前指令的第一16位的字在当前指令缓冲器110中的位置。
图4示意性地示出指令对准系统的数据路径。当前指令缓冲器110可包括四个16位寄存器110a、110b、110c和110d。下一指令缓冲器112可包括四个16位寄存器112a、112b、112c、112d。经对准指令缓冲器120可包括四个16位寄存器120a、120b、120c、120d。寄存器120a保持位63:48,寄存器120b保持位47:32;寄存器120c保持位31:16而寄存器120d保持经对准指令的位15:0。如上面所提到的,在此实施例中mux140为4∶1 64位mux。mux140根据当前指令指针从当前指令缓冲器110和下一指令缓冲器112中选择四个连续的16位字。
在操作中,提供到mux140的当前指令指针选择16位寄存器110a、110b、110c和110d中的一个来包含当前指令的第一16位字。如上面所提到的,指令可具有16位、32位或64位的长度。所选择的指令被提供到经对准指令缓冲器120,其中指令的低位16位字被加载到经对准指令缓冲器120的寄存器120a。因此,当前指令缓冲器110中的64位指令从寄存器110a、110b、110c和110d分别被传递到经对准指令缓冲器120的寄存器120a、120b、120c和120d。在另一实例中,当前指令缓冲器110的寄存器110c中的16位指令由mux140传递到经对准指令缓冲器120的寄存器120a。在一进一步的实例中,在当前指令缓冲器110的寄存器110b开始的32位指令从当前指令缓冲器110的寄存器110b和110c分别被传递到经对准指令缓冲器120的寄存器120a和120b。在一进一步的实例中,在当前指令缓冲器110的寄存器110c开始的64位指令从当前指令缓冲器110的寄存器110c和110d以及下一指令缓冲器112的寄存器112a和112b分别被传递到经对准指令缓冲器120的寄存器120a、120b、120c和120d。对准单元向指令解码器提供指令,所述指令被对齐到高位位,有时被称为“左对齐”指令。
图5中更详细地示出指令对准系统。指令高速缓存(ICache)42提供64位行ICache到指令队列44、到mux130,到mux132以及到预解码器160a、160b、160c和160d。每个ICache行包括四个16位指令字。如所示出的,指令队列44中的每个入口包括四个16位寄存器44a、44b、44c和44d,并且指令队列44具有图5的实例中的七个入口。写指针控制指令从指令高速缓存42写入指令队列44中。用于指令队列44中每个入口的寄存器44a、44b、44c和44d的输出分别被提供到mux150a、150b、150c和150d的相应输入。提供到mux150a、150b、150c和150d的读指针控制从指令队列44中选择ICache行。可被配置成四个16位mux的mux130从ICache 42,经由mux 150a、150b、150c和150d从指令队列44,或从下一指令缓冲器112的输出,来选择64位行。mux130的输出被加载到下一指令缓冲器112中。可被配置为四个16位mux的mux132从ICache 42,从下一指令缓冲器112或从当前指令缓冲器110的输出,来选择64位行。mux132的输出被加载到当前指令缓冲器110中。
mux140包括mux140a、140b、140c和140d,每个具有四个16位输入。mux140a从当前指令缓冲器110的寄存器110a、110b、110c和110d接收输入。mux140b从当前指令缓冲器110的寄存器110b、110c和110d并从下一指令缓冲器112的寄存器112a接收输入。mux140c从当前指令缓冲器110的寄存器110c和110d并从下一指令缓冲器112的寄存器112a和112b接收输入。mux140d从当前指令缓冲器110的寄存器110d并从下一指令缓冲器112的寄存器112a、112b和112c接收输入。mux140a、140b、140c和140d由当前指令指针控制。mux140a、140b、140c和140d的输出分别被提供到经对准指令缓冲器120的寄存器120a、120b、120c和120d。
从ICache 42接收的打包指令通过确定每个指令的长度以及指向每个指令的第一16位的字的指令指针来对准。此信息通过在每个16位指令字中预解码表示指令长度的位并在下一管线级中使用经预解码的指令长度信息而获得以控制指令对准。
再参考图5,对准控制逻辑单元154包括:用于确定指令长度的预解码器,用于选择适当的指令长度信息的mux,用于保持被选择的指令长度信息的寄存器以及用于响应于指令长度信息而产生对准指针的指针产生逻辑单元。在本发明一实施例中,指令长度信息包含在每个指令的第一16位的字的位15:13和11中。这些指令位在管线级4中被预解码以确定指令长度。指令长度信息被用于管线级5中以控制指令对准的指令指针的形式来产生控制信号。
对准控制逻辑单元154包括预解码器160a、160b、160c、160d、170a、170b、170c和170d。如图5中所示,来自指令高速缓存42的64位行中的每个16位字的位15:13和11被提供到预解码器160a、160b、160c和160d。类似地,下一指令缓冲器112的寄存器112a、112b、112c和112d的位15:13和11被分别提供到预解码器170a、170b、170c和170d。对准控制逻辑单元154进一步包括3∶1 mux180a、180b、180c和180d,以及指令长度寄存器190a、190b、190c和190d。mux 180a接收来自预解码器160a和170a以及来自寄存器190a的输出的输入,并向指令长度寄存器190a提供指令长度。mux 180b接收来自预解码器160b和170b以及来自寄存器190b的输出的输入,并向指令长度寄存器190b提供指令长度。mux 180c接收来自预解码器160c和170c以及来自寄存器190c的输出的输入,并向指令长度寄存器190c提供指令长度。mux 180d接收来自预解码器160d和170d以及来自寄存器190d的输出的输入,并向指令长度寄存器190d提供指令长度。指令长度寄存器190a、190b、190c和190d向指针产生逻辑单元200提供指令长度信息。
在本实施例中,每个16位字的位15:13和11根据下面的表1来预解码。在本实施例中,指令长度信息被编码在每个指令的第一个16位字的位15:13和11中。经预解码的输出指示每个指令的长度。mux180a、180b、180c和180d根据下一指令的源从ICache 42、从下一指令缓冲器112或从指令长度寄存器190a、190b、190c和190d的输出来选择经预解码的值。所选择的值被加载到指令长度寄存器190a、190b、190c和190d中。
表1
预解码逻辑
输入位 | 输出 | ||||||
15 | 14 | 13 | 11 | 64 | 32 | 16 | |
0 | X | X | X | 0 | 0 | 1 | |
0 | |||||||
X | 0 | X | X | 0 | 0 | 1 | |
1 | 1 | 1 | X | 0 | 1 | 0 | |
1 | 1 | 0 | 0 | 0 | 1 | 0 | |
1 | 1 | 0 | 1 | 1 | 0 | 0 |
对准控制逻辑单元154进一步包括用于处理控制信息的电路,所述信息可包括有效位、状态位和分支信息。如图5中所示,控制信息从与ICache42相关联的控制缓冲器210被提供到指令队列44中的寄存器212并到2∶1mux216的第一输入。指令队列44的寄存器212的输出被提供到mux214,mux214响应于指令队列读指针而选择指令队列44中的条目之一。mux214的输出被提供到mux216的第二输入。mux216经由mux214选择指令队列44的输出或选择控制缓冲器210的输出。来自控制缓冲器210的控制信息也被提供到3∶1mux 220的第一输入并到预解码器160a、160b、160c和160d。mux216的输出被提供到mux220的第二输入并到预解码器170a、170b、170c和170d。mux220的输出被提供到控制寄存器224。寄存器224的输出被提供到指针产生电路200并被反馈到mux220的第三输入。到mux220的反馈路径被使用于其中寄存器224的内容被保持大于一个时钟周期的实例中。
所述控制信息包括用于每个指令行中的每个16位字的有效位。这些有效位,被称为V16有效位,在分支指令的情况下允许对指令对准的控制。例如,跟随着所取得的分支指令的一个或多个指令可被标记为无效。在本实施例中,四个V16有效位被提供给每个指令行。
如图5中所示,来自控制缓冲器210的V16有效位与预解码器160a、160b、160c和160d的输出组合,而来自指令队列44的V16有效位与预解码器170a、170b、170c和170d的输出组合。预解码器的输出和V16有效位通过mux180a、180b、180c和180d被分别提供到指令长度寄存器190a、190b、190c和190d。
图6中示出了指针产生逻辑单元200的一个实施例的示意性的框图。如所示,指令长度寄存器190a、190b、190c和190d包括经预解码的指令长度信息。每个指令长度寄存器包括用于指令长度的每个可能值的一个位位置(one bit location)。在图6的实施例中,每个指令长度寄存器包括用于16位、32位和64位指令的位位置。另外,每个指令长度寄存器包括Z-位,该Z-位为来自V16有效位的有效位,与所述16位字对应。
参考图6,指令长度寄存器190a、190b、190c和190d的输出被提供到一组4∶1mux 250、252、254、256、258、260、262和264。根据常规,mux被示出,其中低位输入在右且有效性从右到左增加。mux250从指令长度寄存器190a(低位输入)、190b、190c和190d(高位输入)接收Z-位。mux252在其低位输入接收来自寄存器190a中16位位置的输入,并在其其它的三个输入接收零。mux254在其低位输入接收来自寄存器190a中的32位位置的输入,在其第二输入接收来自寄存器190b中的16位位置的输入,在其余下的两个输入接收零。mux256在其低位输入接收零,在其第二输入接收来自寄存器190b中的32位位置的输入,在其第三输入接收来自寄存器190c中的16位位置的输入并在其高位输入接收零。mux258在其低位输入接收来自寄存器190a中的64位位置的输入,在其第二输入接收零,在其第三输入接收来自寄存器190c中的32位位置的输入,并在其高位输入接收来自寄存器190d中的16位位置的输入。mux260在其低位输入接收零,在其第二输入接收来自寄存器190b中的64位位置的输入,在其第三输入接收零,并在其高位输入接收来自寄存器190d中的32位位置的输入。mux262在前两个低位输入接收零,在其第三输入接收来自寄存器190c中的64位位置的输入,并在其高位输入接收零。mux264在其三个低位输入接收零,并在其高位输入接收来自寄存器190d中的64位位置的输入。如下所述,mux250-264的输出通过总线270上的当前指令指针从其四个输入中选择。
一组2∶1mux 280、282、284和286被用来在分支指令的情况下选择新的指针。四位的新指针被提供到mux 280、282、284和286的第一输入。零被提供到mux 280的第二输入。mux252、254和256的输出被分别提供到mux282、284和286的第二输入。来自控制逻辑单元390、到mux280、282、284和286的选择输入控制mux252、254和256的输出或所述新指针的选择。新指针可指向跟随分支指令的非顺序指令的第一16位字。mux280、282、284和286的输出被分别提供到单个位(single-bit)的锁存器300、302、304和306。mux258、260、262和264的输出被分别提供到单个位的锁存器310、312、314和316。
锁存器300-306和310-316的输出表示下一指令指针Nxt_ptr。在此实施例中,下一指令指针具有8位,其中的一位被设置。被设置的位表示当前指令缓冲器110或下一指令缓冲器112中的下一指令的第一16位字的位置。在下一指令指针中,锁存器302、304和306的输出分别与当前指令缓冲器110(图5)的寄存器110b、110c和110d相对应。下一指令指针的最低位的位总是为零,其与当前指令缓冲器110的寄存器110a相对应。虽然寄存器110a可保持当前指令,但它从不保持下一指令。mux250的输出表示被选择的有效位。锁存器310、312、314和316的输出分别与下一指令缓冲器112(图5)的寄存器112a、112b、112c和112d相对应。因此,例如,当锁存器304的输出被设置到1时,下一指令的第一16位字被定位于当前指令缓冲器110的寄存器110c中。类似地,当锁存器312的输出被设置为1时,下一指令的第一16位字被定位于下一指令缓冲器112的寄存器112b中。
一组2∶1mux320、322、324和326被用来从下一指令指针的8位中选择当前指令指针。具体地,锁存器300、302、304和306的输出被分别提供到mux320、322、324和326的第一输入。锁存器310、312、314和316的输出被分别提供到mux320、322、324和326的第二输入。mux320、322、324和326的输出表示所述当前指令指针Cur_ptr。在此实施例中,当前指令指针具有四位,其中的一位被设置。被设置的位表示当前指令缓冲器110中的当前指令的第一16位字的位置。mux320、322、324和326的输出分别与当前指令缓冲器110(图5)中的寄存器110a、110b、110c和110d相对应。
mux320、322、324和326响应于来自锁存器340的移位位(shift bit)而被控制。锁存器340由与门342设置。mux252、254和256的输出为与门342提供输入。与门342检测一条件,其中下一指令指针的第一个四位全都为零。该条件发生在当前指令缓冲器110中的所有指令已经被使用并且下一指令的第一16位字被定位于下一指令缓冲器112(图5)中。在此情况下,移位位被设置且当前指令指针从对应于下一指令指针的四个高位位的锁存器310、312、314和316的输出中取得。在同一时钟周期中,下一指令缓冲器112的内容通过指令提取逻辑单元134(图3)被传递到当前指令缓冲器110,并且下一指令行从指令队列44或指令高速缓存42被传递到下一指令缓冲器110。
深管线处理器,也就是那些具有相对大数目的管线级的管线处理器,可提供很高的性能。为实现高性能,使用了高时钟速度,并且通过每个管线的延迟得以减少。每管线级的延迟通过以下来减小:减少串联连接于通过管线级(对于给定的处理技术)的最慢的或临界的路径中的其他逻辑电路或门的数目。因此,具有每周期20个门的管线级指示通过电路的20个门的延迟小于以最大时钟频率的一个时钟周期。当时钟频率增加时,每管线级串联连接的门的数目减少。结果,处理电路需要利用数目减少的串联连接的门来进行复杂的操作。
当被应用于指令对准单元时,对准控制逻辑单元154是在以高速进行指令对准时以及向指令解码器22每周期递送一个指令时的临界路径。在一个实施例中,管线级限制为每周期11个门。因此,在管线级4,预解码器160a-160d和170a-170d,以及mux180a-180d限制为11个串联的门。类似地,在管线级5,指针产生逻辑单元200限制为11个串联的门。
为实现所需的性能,在每个指令的指令长度位的预解码之后,对准控制逻辑单元154使用所谓的“one-hot”逻辑电路。在one-hot逻辑电路中,值的集合中的每个值由一位来表示,与由被编码的位来表示该值的集合形成对比。因此,例如,当前指令指针指向包含指令的第一16位字的四个寄存器110a、110b、110c和110d中的一个并因此具有四个可能值。根据one-hot逻辑电路,当前指令指针具有四位,其中之一被声明(在此实例中被设置为逻辑1)为指示包含当前指令的第一16位字的寄存器。当前指令指针的四个可能值可由两个被编码的位来表示,但需要解码电路并在对准控制逻辑单元中加入延迟。类似地,指针产生逻辑单元200使用八位的下一指令指针,其中一位表示寄存器110a-110b和寄存器112a-112d的每个。下一指令指针的一个位行被声明为指示下一指令的第一16位字。与使用编码的传统逻辑电路相比较,所述one-hot逻辑电路通常可需要较多的并联逻辑电路但较少的串联逻辑电路。然而,与传统逻辑电路相比较,该one-hot逻辑电路实现了相对低的管线级延迟。参考图6,mux250-264由总线270上的one-hot当前指令指针来控制。类似地,图5中的mux130、132和140由one-hot指令指针控制,以实现低延迟和高速操作。
参考图7和8A-8E,描述了根据本发明的一个实施例的指令对准的一个实例。图7示出指令高速缓存42中的四个指令行,其中每个ICache行包括四个16位的字。第一ICache行400包含16位指令I0和I1以及32位指令I2的第一16位字。ICache行400中的第一16位字可为无效。紧随ICache行400的第二ICache行402包含32位指令I2的第二16位字以及64位指令I3的前三个16位字。紧随ICache行402的第三ICache行404包含64位指令I3的第四16位字、32位指令I4和16位指令I5。紧随ICache行404的第四ICache行406包含16位指令I6、I7、I8和I9。显然,32位指令I2跨过ICache行400和402,而64位指令I3跨过ICache行402和404。指令在ICache 42中打包并且在解码前需要对准。
图8A-8E中示出对准单元在对准ICache行400、402和404时的操作。现在参考图8A,时钟周期1中对准单元的状态被示出。当前指令缓冲器110的寄存器110b、110c和110d分别包含16位指令I0、I1和32位指令I2的第一16位字。在周期1中下一指令缓冲器112是空的。对应于当前指令缓冲器110的先前的经预解码指令长度存储于指令长度寄存器190a、190b、190c和190d中。指令长度寄存器190b和190c指示16位指令,而指令长度寄存器190d指示32位指令。当前指令指针Cur_ptr指向当前指令缓冲器110的寄存器110b为包含用于对准和解码的当前指令、16位指令I0。下一指令指针Nxt_ptr指向当前指令缓冲器110的寄存器110c为包含用于对准和解码的下一指令、16位指令I1。当前指令指针使当前指令缓冲器110的寄存器110b中的16位指令I0被传递到经对准指令缓冲器120的寄存器120a。
参考图8B,时钟周期2中对准单元的状态被示出。当前指令缓冲器110继续保持16位指令I0、I1和32位指令I2的第一16位字。指令I2的第二16位字和64位指令I3的前三个16位字已被分别传递到下一指令缓冲器112的寄存器112a、112b、112c和112d中。指令长度寄存器190a、190b、190c和190d的内容保持与时钟周期1时相同,因为当前指令缓冲器110的内容保持相同。当前指令指针Cur_ptr现在指向当前指令缓冲器110的寄存器110c中的16位指令I1,而下一指令指针Nxt_ptr指向当前指令缓冲器110的寄存器110d中的32位指令I2。当前指令指针使当前指令缓冲器110的寄存器110c中的16位指令I1被传递到经对准指令缓冲器120的寄存器120a。
现在参考图8C,示出了在时钟周期3中对准单元的状态。当前指令缓冲器器110继续保持16位指令I0和I1、以及32位指令I2的第一16位字。下一指令缓冲器112继续保持32位指令I2的第二16位字以及64位指令I3的前三个16位字。指令长度寄存器190a、190b、190c和190d的内容保持与时钟周期1和2相同。当前指令指针Cur_ptr指向包含32位指令I2的第一16位字的当前指令缓冲器110的寄存器110d。下一指令指针Nxt_ptr指向包含64位指令I3的第一16位字的当前指令缓冲器的寄存器110110b。指令I2的第一16位字从当前指令缓冲器110的寄存器110d被传递到经对准指令缓冲器120的寄存器120a,而指令I2的第二16位字从下一指令缓冲器112的寄存器112a被传递到经对准指令缓冲器120的寄存器120b。
在图8C中,对应于当前指令缓冲器110的下一指令指针Nxt_ptr的前四位都是零。这导致移位锁存器340(图6)被设置,使得下一指令指针的四个高位位由mux320、322、324和326选择作为下一时钟周期的当前指令指针。另外,下一指令缓冲器112的内容在下一时钟周期被传递到当前指令缓冲器110。
现在参考图8D,示出了在时钟周期4中对准单元的状态。ICache行402已从下一指令缓冲器112被传递到当前指令缓冲器110,而ICache行404已被传递到下一指令缓冲器112。因此,当前指令缓冲器110包含32位指令I2的第二16位字和64位指令I3的前三16位字。下一指令缓冲器112包含64位指令I3的后16位字、32位指令I4的两个16位字以及16位指令I5。指令长度寄存器190a的内容表示“不在乎(don’t care)”条件,因为寄存器110a包含指令I2的第二16位字。该实施例中,仅每个指令的第一16位字包含指令长度信息。指令长度寄存器190b指示64位指令,而寄存器190c和190d表示“不在乎”条件。当前指令指针Cur_ptr指向包含64位指令I3的第一16位字的当前指令缓冲器110的寄存器110b。下一指令指针Nxt_ptr指向包含32位指令I4的第一16位字的下一指令缓冲器112的寄存器112b。指令I3的前三个16位字从当前指令缓冲器110的寄存器110b、110c和110d被分别传递到经对准指令缓冲器120的寄存器120a、120b和120c。另外,指令I3的第四16位字从下一指令缓冲器112的寄存器112a被传递到经对准指令缓冲器120的寄存器120d。
在图8D中,下一指令指针Nxt_ptr的前四位又全部是零。这导致移位锁存器340被设置,使得下一指令指针的四个高位位由mux320、322、324和326选择作为下一时钟周期的当前指令指针。另外,下一指令缓冲器112的内容在下一时钟周期被传递到当前指令缓冲器110中。
现在参考图8E,示出了在时钟周期5中对准单元的状态。ICache行404已从下一指令缓冲器112被传递到当前指令缓冲器110,而ICache行406已被传递到下一指令缓冲器112。指令长度寄存器190b指示32位指令,而指令长度寄存器190d指示16位指令。当前指令指针Cur_ptr指向当前指令缓冲器110的寄存器110b为包含用于对准和解码的当前指令和32位指令I4。下一指令指针Nxt_ptr指向当前指令缓冲器110的寄存器110d为包含用于对准和解码的下一指令、16位指令I5。当前指令指针使得当前指令缓冲器110的寄存器110b和110c中的32位指令I4被分别传递到经对准指令缓冲器120的寄存器120a和120b。
对准单元继续以这种方式工作,在没有分支指令或停止条件(stallcondition)的情况下每周期向指令解码器提供一个指令。
图6中所示的指针产生逻辑单元200的操作可参考图8A-8E的实例来理解。在图8A的实例中,当前指令指针Cur_ptr指向寄存器110b和对应的指令长度寄存器190b。相应地,图6中的总线270上的当前指令指针选择mux250-264的每个的第二输入,由此选择指令长度寄存器190b。指令长度寄存器190b指示16位的指令长度。由于指令长度寄存器190b中的16位位置被提供给mux254的第二输入,mux254提供逻辑一给下一指令指针。mux252和256-264提供逻辑零给下一指令指针,因为到mux的第二输入在逻辑零被固定或因为指令长度寄存器190b中的所选位置是逻辑零。结果是,下一指令指针Nxt_ptr指向寄存器110c。
在图8C中,当前指令指针Cur_ptr指向寄存器110c和对应的指令长度寄存器190c。总线270上的当前指令指针选择mux250-264中的每个的第三输入,由此选择指令长度寄存器190c。由于指令长度寄存器190c中的16位位置被设置为逻辑一,mux256提供逻辑一到下一指令指针,而下一指令指针指向寄存器110d。
参考图8C,当前指令指针Cur_ptr指向寄存器110d和指令长度寄存器190d。在这种情况下,指令长度寄存器190d指示32位的指令长度。总线270上的当前指令指针选择mux250-264中的每个的高位输入,由此选择指令长度寄存器190d。由于指令长度寄存器190d中的32位位置被设置为逻辑一,mux260提供逻辑一到下一指令指针,而下一指令指针指向寄存器112b。
最后,参考图8D,当前指令指针Cur_ptr指向寄存器110b和指令长度寄存器190b。在这种情况下,指令长度寄存器190b指示64位的指令长度。总线270上的当前指令指针选择mux250-264的每个的第二输入,由此选择指令长度寄存器190b。由于指令长度寄存器190b中的64位位置被设置为逻辑一,mux260提供逻辑一到下一指令指针,而下一指令指针指向寄存器112b。可以看出,mux252-264利用对应于当前指令的指令长度信息来确定下一指令的第一16位字的位置。
Claims (21)
1.一种用于在具有管线架构的数字处理器中对准指令的指令对准单元,包括:
管线级n中的当前指令缓冲器和下一指令缓冲器;管线级n+1中的经对准指令缓冲器,其中所述当前指令缓冲器、所述下一指令缓冲器和所述经对准指令缓冲器每个都包括用于保持多个指令字的寄存器,且其中每个所述指令都包括一个或多个指令字;
指令提取逻辑单元,用于将指令加载到所述当前指令缓冲器中以及加载到所述下一指令缓冲器中;以及
对准控制逻辑单元,用于响应于包含在所述指令中的指令长度信息而控制指令从所述当前指令缓冲器和所述下一指令缓冲器向所述经对准指令缓冲器的传递,其中所述对准控制逻辑单元包括:预解码器,用于预解码所述指令以提供指令长度信息;指令长度寄存器,用于保持所述经预解码的指令长度信息,每个指令长度寄存器对应于所述当前指令缓冲器中的每个寄存器;以及指针产生逻辑单元,用于响应于所述指令长度信息而产生当前指令指针以便控制指令从所述当前指令缓冲器以及从所述下一指令缓冲器向所述经对准指令缓冲器的传递,其中所述指针产生逻辑单元包括:下一指针选择逻辑单元,用于响应于所述当前指令指针而从所述指令长度寄存器选择下一指令指针;以及当前指针选择逻辑单元,用于从所述下一指令指针选择所述当前指令指针,其中所述当前指针选择逻辑单元包括:状态锁存器,包含状态位,该状态位当所述下一指令指针的低位位为零时被设置;以及选择逻辑单元,用于当所述状态位被设置时选择所述下一指令指针的较高位位作为所述当前指令指针。
2.如权利要求1所述的指令对准单元,其中所述预解码器包括用于预解码来自所述存储器的指令的第一预解码器和用于预解码所述下一指令寄存器中的指令的第二预解码器,所述对准控制逻辑单元进一步包括多路复用器,其用于响应于控制信号而选择所述第一预解码器的输出、所述第二预解码器的输出或所述指令长度寄存器的输出并将所选的指令长度信息提供到所述指令长度寄存器。
3.如权利要求2所述的指令对准单元,其中每个指令长度寄存器包括用于对应的指令字的有效位。
4.如权利要求1所述的指令对准单元,其中所述预解码器和所述指令长度寄存器位于管线级n中,且所述指针产生逻辑单元位于管线级n+1中。
5.如权利要求1所述的指令对准单元,其中所述指针产生逻辑单元进一步包括用于响应于分支指令而选择新指针作为所述当前指令指针的新指针选择逻辑单元。
6.如权利要求1所述的指令对准单元,其中所述指针产生逻辑单元利用其中一组值中的每个值都由一位来表示的逻辑电路,以便控制所述下一指令指针和所述当前指令指针的选择。
7.如权利要求1所述的指令对准单元,其中所述指针产生逻辑单元利用其中一组值中的每个值都由一位来表示的逻辑电路,以便控制指令从所述当前指令缓冲器和所述下一指令缓冲器向所述经对准指令缓冲器的传递。
8.如权利要求1所述的指令对准单元,其中当所述当前指令缓冲器和所述下一指令缓冲器为满时,指令队列保持从所述存储器所提取的指令。
9.一种用于在具有管线架构的数字处理器中对准指令的方法,包括:
将指令从存储器或从下一指令缓冲器加载到当前指令缓冲器中;
当所述当前指令缓冲器为满时,将指令从所述存储器加载到所述下一指令缓冲器中;并且
响应于包含在所述指令中的指令长度信息而控制指令从所述当前指令缓冲器和所述下一指令缓冲器向经对准指令缓冲器的传递,其中控制指令的传递包括:预解码所述指令以提供指令长度信息、并响应于所述指令长度信息而产生当前指令指针以便控制指令从所述当前指令缓冲器以及所述下一指令缓冲器向所述经对准指令缓冲器的传递,其中产生当前指令指针包括响应于所述当前指令指针而从所述指令长度信息选择下一指令指针、并从所述下一指令指针选择所述当前指令指针,其中选择所述当前指令指针包括当所述下一指令指针的低位位为零时选择所述下一指令指针的较高位位作为所述当前指令指针,其中所述当前指令缓冲器、所述下一指令缓冲器和所述经对准指令缓冲器每个都包括用于保持多个指令字的寄存器,其中所述指令包括一个或多个指令字,且其中控制指令从所述当前指令缓冲器和所述下一指令缓冲器向所述经对准指令缓冲器的传递包括控制指令字从所述当前指令缓冲器和所述下一指令缓冲器的寄存器向所述经对准指令缓冲器的寄存器的传递。
10.如权利要求9所述的方法,其中产生当前指令指针进一步包括响应于分支指令而选择新指针作为所述当前指令指针。
11.如权利要求9所述的方法,其中控制指令从所述当前指令缓冲器和所述下一指令缓冲器向所述经对准指令缓冲器的传递包括利用其中一组值中的每个值由一位表示的逻辑电路。
12.如权利要求9所述的方法,进一步包括:当所述当前指令缓冲器和所述下一指令缓冲器为满时,将从所述存储器提取的指令保持在指令队列中。
13.一种对准控制逻辑单元,被包括在用于在具有管线架构的数字处理器中对准指令的指令对准单元中,所述指令对准单元包括当前指令缓冲器、下一指令缓冲器和经对准指令缓冲器,其中所述当前指令缓冲器、所述下一指令缓冲器和所述经对准指令缓冲器每个都包括用于保持多个指令字的寄存器,且其中每个所述指令都包括一个或多个指令字,所述对准控制逻辑单元包括:
在第一管线级中,预解码器,用于预解码所述指令以提供指令长度信息;以及指令长度寄存器,用于保持经预解码的指令长度信息;以及
在第二管线级中,指针产生逻辑单元,用于响应于所述指令长度信息而产生当前指令指针,以便控制指令从所述当前指令缓冲器以及从所述下一指令缓冲器向所述经对准指令缓冲器传递,其中所述指针产生逻辑单元包括:下一指针选择逻辑单元,用于响应于所述当前指令指针而从所述指令长度寄存器选择下一指令指针;以及当前指针选择逻辑单元,用于从所述下一指令指针选择所述当前指令指针,其中所述当前指针选择逻辑单元包括:状态锁存器,包含状态位,该状态位当所述下一指令指针的低位位为零时被设置;以及选择逻辑单元,用于当所述状态位被设置时选择所述下一指令指针的较高位位作为所述当前指令指针。
14.如权利要求13所述的对准控制逻辑单元,其中所述指令长度寄存器中的每个都包括用于对应指令字的有效位。
15.如权利要求13所述的对准控制逻辑单元,其中所述指针产生逻辑单元进一步包括用于响应于分支指令而选择新指针作为所述当前指令指针的新指针选择逻辑单元。
16.如权利要求13所述的对准控制逻辑单元,其中所述指针产生逻辑单元利用其中一组值中的每个值都由一位来表示的逻辑电路,以便控制所述下一指令指针和所述当前指令指针的选择。
17.一种用于在具有管线架构的数字处理器中对准指令的指令对准系统,包括:
管线级n中的指令队列、当前指令缓冲器和下一指令缓冲器,其中所述当前指令缓冲器、所述下一指令缓冲器和所述经对准指令缓冲器每个都包括用于保持多个指令字的寄存器,且其中每个所述指令都包括一个或多个指令字;
管线级n+1中的经对准指令缓冲器;
指令提取逻辑单元,用于将指令加载到所述当前指令缓冲器中以及加载到所述下一指令缓冲器中;以及
对准控制逻辑单元,用于响应于包含在所述指令中的指令长度信息而控制指令从所述当前指令缓冲器和所述下一指令缓冲器向所述经对准指令缓冲器的传递,其中所述对准控制逻辑单元包括:预解码器,用于预解码所述指令以提供指令长度信息;指令长度寄存器,用于保持所述经预解码的指令长度信息,每个指令长度寄存器对应于所述当前指令缓冲器中的每个寄存器;以及指针产生逻辑单元,用于响应于所述指令长度信息而产生当前指令指针以便控制指令从所述当前指令缓冲器以及从所述下一指令缓冲器向所述经对准指令缓冲器的传递,其中所述指针产生逻辑单元包括:下一指针选择逻辑单元,用于响应于所述当前指令指针而从所述指令长度寄存器选择所述下一指令指针;以及当前指针选择逻辑单元,用于从所述下一指令指针选择所述当前指令指针,其中所述当前指针选择逻辑单元包括:状态锁存器,包含状态位,该状态位当所述下一指令指针的低位位为零时被设置;以及选择逻辑单元,用于当所述状态位被设置时选择所述下一指令指针的较高位位作为所述当前指令指针。
18.如权利要求17所述的指令对准系统,其中所述预解码器包括用于预解码来自所述指令队列的指令的第一预解码器和用于预解码所述下一指令寄存器中的指令的第二预解码器,所述对准控制逻辑单元进一步包括多路复用器,其用于响应于控制信号而选择所述第一预解码器的输出、所述第二预解码器的输出或所述指令长度寄存器的输出并将所选的指令长度信息提供到所述指令长度寄存器。
19.如权利要求17所述的指令对准系统,其中所述指针产生逻辑单元进一步包括用于响应于分支指令而选择新指针作为所述当前指令指针的新指针选择逻辑单元。
20.如权利要求17所述的指令对准系统,其中所述指针产生逻辑单元利用其中一组值中的每个值都由一位来表示的逻辑电路,以便控制所述下一指令指针和所述当前指令指针的选择。
21.如权利要求17所述的指令对准系统,其中所述指针产生逻辑单元利用其中一组值中的每个值都由一位来表示的逻辑电路,以便控制指令从所述当前指令缓冲器和所述下一指令缓冲器向所述经对准指令缓冲器的传递。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/442,329 | 2003-05-21 | ||
US10/442,329 US7134000B2 (en) | 2003-05-21 | 2003-05-21 | Methods and apparatus for instruction alignment including current instruction pointer logic responsive to instruction length information |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1791856A CN1791856A (zh) | 2006-06-21 |
CN100356318C true CN100356318C (zh) | 2007-12-19 |
Family
ID=33450168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004800139945A Expired - Fee Related CN100356318C (zh) | 2003-05-21 | 2004-05-20 | 用于指令对准的方法和设备 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7134000B2 (zh) |
EP (1) | EP1625492B1 (zh) |
JP (1) | JP4613168B2 (zh) |
CN (1) | CN100356318C (zh) |
DE (1) | DE602004020884D1 (zh) |
TW (1) | TWI283828B (zh) |
WO (1) | WO2004104822A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7350059B2 (en) * | 2004-05-21 | 2008-03-25 | Via Technologies, Inc. | Managing stack transfers in a register-based processor |
US7263621B2 (en) * | 2004-11-15 | 2007-08-28 | Via Technologies, Inc. | System for reducing power consumption in a microprocessor having multiple instruction decoders that are coupled to selectors receiving their own output as feedback |
US20060155961A1 (en) * | 2005-01-06 | 2006-07-13 | International Business Machines Corporation | Apparatus and method for reformatting instructions before reaching a dispatch point in a superscalar processor |
US8578134B1 (en) * | 2005-04-04 | 2013-11-05 | Globalfoundries Inc. | System and method for aligning change-of-flow instructions in an instruction buffer |
GB2482710A (en) * | 2010-08-12 | 2012-02-15 | Advanced Risc Mach Ltd | Enabling stack access alignment checking independently of other memory access alignment checking |
EP2801023A4 (en) * | 2012-01-06 | 2017-06-21 | Intel Corporation | Swapping pointers to process data stored in buffers by a data source without copying the data to separate storage |
CN103593169B (zh) * | 2013-11-29 | 2017-09-05 | 深圳中微电科技有限公司 | 一种多线程处理器中的指令输出装置、方法及其处理器 |
US11086627B2 (en) | 2019-09-27 | 2021-08-10 | Intel Corporation | Instruction length decoder system and method |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5463748A (en) * | 1993-06-30 | 1995-10-31 | Intel Corporation | Instruction buffer for aligning instruction sets using boundary detection |
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 |
US6141742A (en) * | 1995-10-06 | 2000-10-31 | Advanced Micro Devices, Inc. | Method for reducing number of bits used in storage of instruction address pointer values |
US6314509B1 (en) * | 1998-12-03 | 2001-11-06 | Sun Microsystems, Inc. | Efficient method for fetching instructions having a non-power of two size |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835967A (en) * | 1993-10-18 | 1998-11-10 | Cyrix Corporation | Adjusting prefetch size based on source of prefetch address |
GB2287111B (en) * | 1994-03-01 | 1998-08-05 | Intel Corp | Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer |
US5832249A (en) * | 1995-01-25 | 1998-11-03 | Advanced Micro Devices, Inc. | High performance superscalar alignment unit |
US5668984A (en) * | 1995-02-27 | 1997-09-16 | International Business Machines Corporation | Variable stage load path and method of operation |
US6093213A (en) * | 1995-10-06 | 2000-07-25 | Advanced Micro Devices, Inc. | Flexible implementation of a system management mode (SMM) in a processor |
US5896543A (en) * | 1996-01-25 | 1999-04-20 | Analog Devices, Inc. | Digital signal processor architecture |
US5845099A (en) * | 1996-06-28 | 1998-12-01 | Intel Corporation | Length detecting unit for parallel processing of variable sequential instructions |
US5978899A (en) * | 1997-12-23 | 1999-11-02 | Intel Corporation | Apparatus and method for parallel processing and self-timed serial marking of variable length instructions |
US6061779A (en) * | 1998-01-16 | 2000-05-09 | Analog Devices, Inc. | Digital signal processor having data alignment buffer for performing unaligned data accesses |
JP3490007B2 (ja) * | 1998-12-17 | 2004-01-26 | 富士通株式会社 | 命令制御装置 |
US6694425B1 (en) * | 2000-05-04 | 2004-02-17 | International Business Machines Corporation | Selective flush of shared and other pipeline stages in a multithread processor |
-
2003
- 2003-05-21 US US10/442,329 patent/US7134000B2/en active Active
-
2004
- 2004-05-20 WO PCT/US2004/016408 patent/WO2004104822A1/en active Application Filing
- 2004-05-20 JP JP2006533397A patent/JP4613168B2/ja not_active Expired - Fee Related
- 2004-05-20 CN CNB2004800139945A patent/CN100356318C/zh not_active Expired - Fee Related
- 2004-05-20 DE DE602004020884T patent/DE602004020884D1/de active Active
- 2004-05-20 EP EP04753266A patent/EP1625492B1/en not_active Expired - Fee Related
- 2004-05-24 TW TW093114616A patent/TWI283828B/zh not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5463748A (en) * | 1993-06-30 | 1995-10-31 | Intel Corporation | Instruction buffer for aligning instruction sets using boundary detection |
US6141742A (en) * | 1995-10-06 | 2000-10-31 | Advanced Micro Devices, Inc. | Method for reducing number of bits used in storage of instruction address pointer values |
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 |
US6314509B1 (en) * | 1998-12-03 | 2001-11-06 | Sun Microsystems, Inc. | Efficient method for fetching instructions having a non-power of two size |
Also Published As
Publication number | Publication date |
---|---|
WO2004104822A1 (en) | 2004-12-02 |
TWI283828B (en) | 2007-07-11 |
EP1625492A1 (en) | 2006-02-15 |
US20040236926A1 (en) | 2004-11-25 |
CN1791856A (zh) | 2006-06-21 |
US7134000B2 (en) | 2006-11-07 |
EP1625492B1 (en) | 2009-04-29 |
TW200539024A (en) | 2005-12-01 |
JP2007500404A (ja) | 2007-01-11 |
DE602004020884D1 (de) | 2009-06-10 |
JP4613168B2 (ja) | 2011-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5329541B2 (ja) | エイリアスアドレス指定を用いる可変長命令コード化の実装 | |
US5437043A (en) | Information processing apparatus having a register file used interchangeably both as scalar registers of register windows and as vector registers | |
US7177876B2 (en) | Speculative load of look up table entries based upon coarse index calculation in parallel with fine index calculation | |
US6950929B2 (en) | Loop instruction processing using loop buffer in a data processing device having a coprocessor | |
US7581082B2 (en) | Software source transfer selects instruction word sizes | |
US7376813B2 (en) | Register move instruction for section select of source operand | |
JPH04313121A (ja) | インストラクションメモリ装置 | |
GB2367653A (en) | Restarting translated instructions after interruption | |
WO2002029563A1 (en) | Storing stack operands in registers | |
WO2012106716A1 (en) | Processor with a hybrid instruction queue with instruction elaboration between sections | |
KR100379837B1 (ko) | 확장명령어 축약장치 | |
US6292845B1 (en) | Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively | |
CN100356318C (zh) | 用于指令对准的方法和设备 | |
US20040215935A1 (en) | Method and system for substantially registerless processing | |
KR101497346B1 (ko) | 명령으로서 데이터 값을 평가하기 위한 시스템 및 방법 | |
US6857063B2 (en) | Data processor and method of operation | |
KR20030007480A (ko) | 컴퓨터 시스템 및 컴퓨터 프로그램 | |
US6968430B1 (en) | Circuit and method for improving instruction fetch time from a cache memory device | |
JP2004192021A (ja) | マイクロプロセッサ | |
US6115805A (en) | Non-aligned double word fetch buffer | |
JP3205092B2 (ja) | 情報処理装置 | |
US20050060519A1 (en) | Command processing device and method for processing command | |
JP2000003279A (ja) | Vliwプロセッサ、プログラム生成装置、および記録媒体 | |
WO2020243044A1 (en) | Processor, system and method of storing register data elements. | |
WO1994016383A1 (en) | Digital signal processor architecture |
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: 20071219 |