用于单向旋转器的基于寄存器的移位的制作方法

文档序号:6453750阅读:164来源:国知局
专利名称:用于单向旋转器的基于寄存器的移位的制作方法
技术领域
本发明通常涉及处理器,且更具体来说,涉及用于单向旋转器的基于寄存器的移位。
背景技术
当今,处理器被大量用于几乎每一电子应用中。处理器控制对程序指令、算术函 数的执行以及对存储器和外围装置的存取。在最简单的形式中,处理器提供对存储在 存储器中的数据执行一个或一个以上算术函数来执行程序指令。由处理器执行的算术 函数可随特定应用而变。通常由处理器执行的一种类型的算术函数是移位或旋转运算 移位或旋转运算可由旋转器及相关联的逻辑来执行。旋转器是多路复用器元件的布置, 所述多路复用器元件的输入和输出以以下方式连接在一起响应于调用移位运算的程 序指令而沿线路向下移位数据。程序指令所调用的特定移位运算可变化。例如,程序指令可要求逻辑移位,其中 数据移动一离散数目的位位置,而超出的位被抛弃且对结果进行补零。除以下外算术 移位类似于逻辑移位在右移位运算中符号位向左扩展且在左移位运算中向较低阶位 位置添加零。旋转器还可用来执行调用旋转运算的程序指令。除旋转运算是循环的以外,旋转 运算类似于移位运算。当实施旋转指令时,从旋转器的一端移出的位返回另一端上。 与移位指令一样,旋转指令可以是向左或向右的。由于用于移位及旋转运算的程序指令可以是单向的,因此某些处理器并入有离散 左旋转器及右旋转器。然而,并入所述两个旋转器可消耗额外功率且要求更多面积或 空间。因此,此项技术中需要一种可在左及右两个方向上执行移位及旋转指令的基于 处理器的旋转器。基于处理器的旋转器应经配置以最小化移位及旋转运算的等待时间。发明内容如下揭示一种处理器的一个方面。所述处理器包含单向旋转器,其经配置以在 一个方向上移位或旋转数据;及控制单元,其具有逻辑,所述逻辑经配置以修改由相 反方向上的基于寄存器的移位或旋转指令指定的移位值,所述经修改的移位值可由所 述旋转器用来在所述一个方向上移位或旋转所述数据,且借此产生好似所述旋转器中 的所述数据不然已在所述相反方向上移位或旋转了由基于寄存器的指令最初指定的所
述移位值一样的结果。所述控制单元进一步经配置以绕过所述逻辑且向所述旋转器提 供由基于寄存器的指令指定的移位值以在所述一个方向上移位或旋转所述数据。
如下揭示一种处理器的另一方面。所述处理器是n-位单向旋转器,其经配置以在 一个方向上移位或旋转数据,且一种控制单元具有逻辑,所述逻辑经配置以修改由相反方向上的基于寄存器的移位或旋转指令指定的移位值m,所述经修改的移位值可由 所述旋转器用来在所述一个方向上移位或旋转所述数据(n-m)。所述控制单元进一步经 配置以绕过所述逻辑且向所述旋转器提供由所述一个方向上的基于寄存器的移位或旋 转指令指定的移位值。
揭示一种使用经配置以在一个方向上移位或旋转数据的单向旋转器来执行移位 或旋转运算的方法。所述方法包含检索由所述一个方向上的基于寄存器的移位或旋转 指令指定的移位值,以及绕过逻辑且向所述旋转器提供所述检索的移位值。所述逻辑 经配置以修改由相反方向上的基于寄存器的移位或旋转指令指定的移位值,所述经修 改的移位值可由所述旋转器用来在所述一个方向上移位或旋转所述数据,且借此产生 好似所述旋转器中的所述数据不然已在所述相反方向上移位或旋转了由所述基于寄存 器的指令最初指定的所述移位值一样的结果,
揭示使用经配置以在一个方向上移位或旋转数据的n-位单向旋转器来执行移位 或旋转运算的另一种方法。所述方法包含检索由所述一个方向上的基于寄存器的移位 或旋转指令指定的移位值,以及绕过逻辑且向所述旋转器提供所述检索的移位值,所 述逻辑经配置以修改由相反方向上的基于寄存器的移位或旋转指令指定的移位值,所 述经修改的移位值可由所述旋转器用来在所述一个方向上移位或旋转所述数据(n-m)。
应了解,依据下文中以举例说明方式显示及描述的本发明各种实施例的详细说 明,所属领域的技术人员将易知本发明的其它实施例。如将认识到,其它及不同的实 施例是可能的且能够在各种其它方面修改本文所包含的数个细节,而所述修改并不背 离本发明的精神及范围。因此,须将本文的图式及详细说明仅作为具举例说明性质而 非限制性质。


通过审査以下对说明性实施例及附图的详细说明,本发明的这些以及其它特征将变得明了,附图中图1图解说明处理器的实例的简化框图; 图2A-2C是显示处理器中旋转器的操作的图解;及 图3是图解说明处理器中控制单元的操作的流程图。
具体实施例方式
下文结合附图所陈述的详细说明意在描述本发明的各种实施例,而非代表本发明 仅可实施为这些实施例。所述详细说明包含特定细节,以用于提供对本发明的透彻理 解的目的。然而,对所属领域的技术人员而言,显而易见,无需所述特定细节也可实 施本发明。在某些实例中,为避免模糊本发明的概念,以框图形式显示众所习知的结 构及组件。图1图解说明能够处理、检索及存储信息的处理器IOO或其它计算系统的实例的 简化框图。处理器100可以是独立组件,或另一选择是,嵌于例如计算机、无线电话、 个人数字助理(PDA)、数码相机游戏控制台的装置中或任一其它计算装置中。处理器 100可以是微处理器或其它处理实体。在一个实施例中,处理器100可以是嵌入式RISC 微处理器。处理器100的主要功能是通过对数据执行许多运算来执行程序指令。可在处理器 100内部的通用存储器中的寄存器堆102中检索及存储数据。寄存器堆102是用于临 时存储来自外部存储器的数据的高速寄存器。所述寄存器提供处理器100所需的对数 据的低等待时间存取。寄存器102的数目(通常统称为通用寄存器堆)由处理器架构来 指定。每一寄存器可由执行单元104来存取以使处理器100能够此一个或一个以上选 定的寄存器读出数据,对数据进行执行,以及将结果写入到选定的寄存器。执行单元104使用ALU(算术/逻辑单元)或其它计算实体来执行处理器100的所有 数学运算。所述执行单元通常由执行各种功能(包含加法、减法、乘法、除法及其它 计算)的复杂电路构成。执行单元104还可用于移位或旋转数据。可用执行单元104 中的单向旋转器106及相关联逻辑(未显示)来执行移位及旋转功能。图1中所示的旋转器106将被描述为能够将数据向右移位或旋转任一数目位置的 单向旋转器。所属领域的技术人员将易于了解,本发明中所述的旋转器106的功能性 扩展到向左移位或旋转数据的单向旋转器。将参照图2A-2C来图解说明旋转器的运算,在图2A中,显示8位旋转器202的 内容。可将8位旋转器中的数据向右旋转2个位,其结果显示于图2B中。参照图2B 及2C,人们可容易地看到向右旋转两个位的运算与向左旋转6个位的运算产生相同的 结果。换句话说,可使用能够在一个方向上旋转数据的旋转器来仿效在相反方向上的 数据的旋转。因此,可通过向右旋转数据(n-m)个位来执行n-位单向旋转器中的向左旋 转m个位的运算。可通过首先在旋转器中旋转数据适当的量且接着抛弃适当的位来执行移位运算。 可对未占据的位位置进行补零,或在算术右移位运算的情况下,可将符号位向左扩展 到所述未占据位位置中。例如,可通过在旋转器中向右旋转数据(n-m)个位、抛弃m个 LSB且对m-LSB个位位置进行补零来执行向左移位m个位的运算。可通过在旋转器 中向右旋转数据m个位,抛弃m个MSB且对m-MSB个位位置进行补零来执行向右 移位m个位的运算。在算术向右移位运算的情况下,可将符号位向左扩展到旋转器中 的m-MSB个位位置中。回到图1,由存储于指令高速缓存器中的程序指令来控制执行单元104的运算。
所述指令高速缓存器是处理器ioo上的小型高速存储器。其为从外部存储器提取的程 序指令提供临时高速存储。所述程序指令被提供到解码器110且经解码的指令用来启 动执行单元104以执行数学运算。程序指令通常由两个部分构成运算码及运算数字段。运算码指定待由执行单元 104执行的运算,例如加法、减法、存储、旋转、移位等。运算数字段提供关于所述运算码所指定运算的更多详细情况。例如,在移位运算的情况下,运算数字段指示通用寄存器堆102中的含有待移位数据的寄存器,移位的方向及移位数据的位位置的数 目。在此实例中,运算数字段可调用第一寄存器中待向右移位m个位的数据。另一选 择是,运算数字段可调用第一寄存器中待移位第二寄存器中所指定量的数据。前一程 序指令通常称为"基于指令的移位"且后一程序指令称为"基于寄存器的移位"。控制单元(未显示)负责引导处理器内的程序指令及数据的流。所述控制单元的许 多功能中的一个功能是向执行单元104提供算术指令的运算数字段中所指定的数据。 可从任一源提供数据,此取决于处理器的架构。例如,数据可在通用寄存器堆102、 高速缓存器或其它存储器中。在某些情况下,数据可在执行单元104的管线122中, 且因此,必须由控制单元来检索且反馈到执行单元104的输入。控制单元可采用允许 其尽早地从管线122中的任一级恢复数据的某一逻辑。控制单元通常用解码器、多路 复用器及相关联逻辑的复杂布置来实施。在图1中,解码器110、多路复用器112、 118、 锁存器114及移位校正逻辑116形成控制单元的部分。除控制进入到执行单元104的数据流以外,控制单元还负责向执行单元104中的 多路复用器118提供指令高速缓存器中的程序指令的运算码。多路复用器118用于在 控制单元将结果存储于通用寄存器堆102中之前沿管线122向下切换旋转器106的输 出或某一其它计算功能120。在基于指令的移位或旋转指令的情况下,通过多路复用 器112路由运算数字段并将其提供到旋转器106以告知其将数据移位多少个位位置。 解码器110或其它实体可用于通过将移位量修改(n-m)而将向左移位或旋转转换成 向右移位或旋转指令。刚描述的解码功能恰好适合于基于指令的移位或旋转,因为在由处理器100执行 之前,便可在指令高速缓存器108中得到指令。然而,在基于寄存器的移位或旋转的 情况下,如果指定当前移位或旋转指令的移位量的数据不在通用文件寄存器102中而 是在执行单元104的管线122中的某一地方,那么可能会经历某些等待时间。在处理器100的至少一个实施例中,控制单元可经配置以有效地处理基于寄存器 的移位或旋转指令。例如,对于基于寄存器的移位或旋转指令,可由控制单元而非解 码器110来执行修改移位或旋转指令的移位值的功能。更具体来说,可向控制单元提 供基于寄存器的移位或旋转指令的运算数字段。控制单元定位通用文件寄存器102或 执行单元的管线122中由运算数字段指定的移位值,并通过多路复用器112将移位值 递送到锁存器114的输入。 一旦数据被递送到锁存器114的输入,控制单元便确定是 在下一时钟循环时将数据加载到执行单元104中还是首先修改移位值。
将参照图1及3来描述针对移位或旋转指令将移位值递送到执行单元的过程。在步骤302中,控制单元确定指令是基于寄存器的还是基于指令的。如果控制单元确定 指令是基于指令的,那么在块304中向执行单元104提供移位值,且在块305中执行 单元104将旋转器中的数据向右移位或旋转由移位值指定的量。如果基于指令的移位 或旋转指令是向左的,那么可能已由解码器110提前修改了移位值。如果控制单元确定指令是基于寄存器的指令,那么在块306中其确定基于寄存器 的指令是调用向右移位或旋转运算还是调用向左移位或旋转运算。如果控制单元确定 指令调用向右移位或旋转、运算,那么在块304中向执行单元104提供移位值,且在 块305中执行单元104将旋转器中的数据向右移位或旋转由移位值指定的量。如果控制单元确定指令是基于向左的寄存器的指令那么在块307中向移位校正逻 辑116提供移位值。在块308中,将移位值修改(n-m),其中n是旋转器106的大小 且m是移位值。在块304中向执行单元104提供经修改的移位值,且在块305中执行 单元104将旋转器中的数据向右移位或旋转由移位值指定的量。结合本文所揭示实施例描述的各种说明性逻辑块、模块及电路可由以下装置实施 或执行通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编 程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件、或 其设计用于执行上文所述诸功能的任一组合。通用处理器可以是微处理器,但另一选 择是,处理器可以是任一常规处理器、控制器、微控制器或状态机。处理器还可实施 为运算装置的组合,例如,DSP与微处理器的组合、多个微处理器的组合、 一个或一 个以上微处理器与DSP核心的联合,或任一其它此类配置。结合本文所揭示实施例描述的方法或算法可直接体现于硬件中、可由处理器执行 的软件模块中,或两者的组合中。软件模块可驻存于RAM存储器、快闪存储器、 ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬磁盘、可拆卸磁盘、 CD-ROM、或此项技术中已知的任何其它形式的存储媒体中。存储媒体可耦合到所述 处理器,以使得所述处理器可从所述存储媒体读取信息并将信息写入到所述存储媒体。 另一选择是,存储媒体可与处理器成一体。处理器和存储媒体可驻存于ASIC中,ASIC 可驻存于终端中或别处。另一选择是,处理器及存储媒体可作为离散组件驻存于终端 中或别处。提供上文对所揭示实施例的说明以使所属领域的技术人员能够制作或使用本发 明。所属领域的技术人员将易知对这些实施例的各种修改,且本文所界定的一般原理 还可应用于其它实施例,此并不背离本发明的精神或范围。因此,本发明并非意在限 定于本文所示的实施例,而是要赋予其与权利要求书相一致的全部范围,其中除非明 确标明,以单数形式提及一元件并非意在表示"一个且仅一个",而是"一个或一个 以上'之意。所有为所属领域的技术人员己知或此后将知晓的本发明中所述各种实施 例的元件的结构及功能等效物均明确地以引用方式并入本文中并意在涵盖于权利要求 书中。而且,无论是否于权利要求书中明确叙述此揭示内容,本文所揭示的内容并非
意在奉献给公众。权利要求书要素并不依据35 U.S.C. § 112第六段的规定加以解释, 除非使用短语"用于…的装置"明确叙述所述要素,或在方法项的情况下使用短语"用 于…的步骤"叙述所述要素。
权利要求
1、一种处理器,其包括单向旋转器,其经配置以在一个方向上移位或旋转数据;及控制单元,其具有逻辑,所述逻辑经配置以修改由相反方向上的基于寄存器的移位或旋转指令指定的移位值,所述经修改的移位值可由所述旋转器用来在所述一个方向上移位或旋转所述数据,且借此产生犹如所述旋转器中的所述数据不然已在所述相反方向上移位或旋转了所述基于寄存器的指令最初指定的所述移位值一样的结果;其中所述控制单元进一步经配置以绕过所述逻辑且向所述旋转器提供由基于寄存器的指令所指定的移位值以在所述一个方向上移位或旋转所述数据。
2、 如权利要求1所述的处理器,其进一步包括管线式执行单元,所述控制单元 进一步经配置以从所述管线中除输出级以外的级来恢复由所述基于寄存器的指令所指 定的所述移位值。
3、 如权利要求2所述的处理器,其进一步包括通用寄存器堆,且其中所述控制 单元进一步包括多路复用器以响应于所述基于寄存器的指令从所述通用寄存器堆或所 述管线选择所述移位值。
4、 如权利要求3所述的处理器,其中所述多路复用器进一步经配置以响应于基 于寄存器的指令从所述通用寄存器堆选择所述移位值、响应于所述基于寄存器的指令 从所述管线选择所述移位值、或选择由基于指令的移位或旋转指令所指定的移位值。
5、 如权利要求4所述的处理器,其中如果所述基于指令的移位或旋转指令是在 所述相反方向上,那么由所述基于指令的移位或旋转指令指定的所述移位值在被提供 给所述多路复用器之前由所述控制单元进行修改,所述基于指令的移位或旋转指令的 所述经修改的移位值可由所述旋转器用来在所述一个方向上移位或旋转所述数据,且 借此产生犹如所述旋转器中的所述数据不然已在所述相反方向上移位或旋转了由所述 基于指令的移位或旋转指令最初指定的所述移位值一样的结果。
6、 如权利要求3所述的处理器,其中所述控制单元进一步经配置以针对所述一 个方向上的所述基于寄存器的移位或旋转指令向所述旋转器提供由所述多路复用器选 择的所述移位值,且针对所述相反方向上的所述基于寄存器的移位或旋转指令向移位 校正逻辑提供由所述多路复用器选择的所述移位值。
7、 如权利要求6所述的处理器,其中由所述逻辑产生的所述经修改的移位值被 反馈到所述多路复用器,所述多路复用器经配置以从所述通用文件寄存器或所述管线 选择所述移位值,或向所述旋转器提供所述经修改的移位值。
8、 如权利要求7所述的处理器,其进一步包括锁存器,所述锁存器具有耦合到 所述多路复用器的输入及耦合到所述逻辑和所述执行单元的输出。
9、 一种处理器,其包括 n-位单向旋转器,其经配置以在一个方向上移位或旋转数据;及控制单元,其具有逻辑,所述逻辑经配置以修改由相反方向上的基于寄存器的移位或旋转指令指定的移位值m,所述经修改的移位值可由所述旋转器用来在所述一个方向上移位或旋转所述数据(n-m);其中所述控制单元进一步经配置以绕过所述逻辑且向所述旋转器提供由所述一个方向上的基于寄存器的移位或旋转指令指定的移位值。
10、 如权利要求9所述的处理器,其进一步包括管线式执行单元,所述控制单元 进一步经配置以从所述管线中除输出级以外的级来恢复由所述基于寄存器的指令指定 的所述移位值。
11、 如权利要求10所述的处理器,其进一步包括通用寄存器堆,且其中所述控 制单元进一步包括多路复用器以响应于所述基于寄存器的指令从所述通用寄存器堆或 所述管线选择所述移位值。
12、 如权利要求11所述的处理器,其中所述多路复用器进一步经配置以响应于 所述基于寄存器的指令从所述通用寄存器堆选择所述移位值、响应于所述基于寄存器 的指令从所述管线选择所述移位值、或选择由基于指令的移位或旋转指令指定的移位 值。
13、 如权利要求12所述的处理器,其中如果所述基于指令的移位或旋转指令在 所述相反方向上,那么由所述基于指令的移位或旋转指令指定的所述移位值在被提供 给所述多路复用器之前由所述控制单元进行修改,所述基于指令的移位或旋转指令的 所述经修改的移位值可由所述旋转器用来在所述一个方向上移位或旋转所述数据,且 借此产生犹如所述旋转器中的所述数据不然已在所述相反方向上移位或旋转了由所述 基于指令的移位或旋转指令最初指定的所述移位值一样的结果。
14、 如权利要求11所述的处理器,其中所述控制单元进一步经配置以针对所述 一个方向上的所述基于寄存器的移位或旋转指令向所述旋转器提供由所述多路复用器 选择的所述移位值,且针对所述相反方向上的所述基于寄存器的移位或旋转指令向移 位校正逻辑提供由所述多路复用器选择的所述移位值。
15、 如权利要求14所述的处理器,其中由所述逻辑产生的所述经修改的移位值 被反馈到所述多路复用器,所述多路复用器经配置以从所述通用文件寄存器或所述管 线选择所述移位值,且向所述旋转器提供所述经修改的移位值。
16、 如权利要求15所述的处理器,其进一步包括锁存器,所述锁存器具有耦合 到所述多路复用器的输入及耦合到所述逻辑和所述执行单元的输出。
17、 一种执行移位或旋转运算的方法,所述方法使用经配置以在一个方向上移位 或旋转数据的单向旋转器及经配置以修改由相反方向上的基于寄存器的移位或旋转指 令指定的移位值的逻辑,所述经修改的移位值可由所述旋转器用来在所述一个方向上 移位或旋转所述数据,且借此产生犹如所述旋转器中的所述数据不然已在所述相反方 向上移位或旋转了由所述基于寄存器的指令最初指定的所述移位值一样的结果,所述 方法包括检索由所述一个方向上的基于寄存器的移位或旋转指令指定的移位值;及 绕过所述逻辑且向所述旋转器提供所述检索的移位值。
18、 如权利要求17所述的方法,其中从执行单元的管线中除输出级以外的级检 索针对所述一个方向上的所述基于寄存器的移位或旋转指令的所述移位值,所述执行 单元包含所述旋转器。
19、 如权利要求17所述的方法,其中从通用文件寄存器检索针对所述一个方向 上的所述基于寄存器的移位或旋转指令的所述移位值。
20、 如权利要求17所述的方法,其进一步包括决定是从通用文件寄存器还是从执行单元的管线中除输出级以外的级检索针对所述一个方向上的所述基于寄存器的移 位或旋转指令的所述移位值,所述执行单元包含所述旋转器。
21、 如权利要求17所述的方法,其进一步包括响应于所述一个方向上的基于后 续寄存器的移位或旋转指令来检索移位值,且响应于先于所述基于后续寄存器的指令 的所述相反方向上的基于寄存器的移位或旋转指令决定向所述旋转器提供由所述逻辑 修改的移位值。
22、 一种执行移位或旋转运算的方法,所述方法使用经配置以在一个方向上移位 或旋转数据的n-位单向旋转器及经配置以修改由相反方向上的基于寄存器的移位或旋 转指令指定的移位值的逻辑,所述经修改的移位值可由所述旋转器用来在所述一个方 向上移位或旋转所述数据(n-m),所述方法包括检索由所述一个方向上的基于寄存器的移位或旋转指令指定的移位值;及 绕过所述逻辑且向所述旋转器提供所述检索的移位值。
23、 如权利要求22所述的方法,其中从执行单元的管线中除输出级以外的级检 索针对所述一个方向上的所述基于寄存器的移位或旋转指令的所述移位值,所述执行 单元包含所述旋转器。
24、 如权利要求22所述的方法,其中从通用文件寄存器检索针对所述一个方向 上的所述基于寄存器的移位或旋转指令的所述移位值。
25、 如权利要求22所述的方法,其进一步包括决定是从通用文件寄存器还是从 执行单元的管线中除输出级以外的级来检索针对所述一个方向上的所述基于寄存器的 移位或旋转指令的所述移位值,所述执行单元包含所述旋转器。
26、 如权利要求22所述的方法,其进一步包括响应于所述一个方向上的基于后 续寄存器的移位或旋转指令检索移位值,且响应于先于所述基于后续寄存器的指令的 所述相反方向上的基于寄存器的移位或旋转指令决定向所述旋转器提供由所述逻辑修 改的移位值。
全文摘要
本发明揭示一种具有单向旋转器的处理器,所述单向旋转器经配置以在一个方向上移位或旋转数据。所述处理器还包含具有逻辑的控制单元,所述逻辑经配置以修改由相反方向上的基于寄存器的移位或旋转指令指定的移位值,所述经修改的移位值可由所述旋转器用来在所述一个方向上移位或旋转所述数据,且借此产生好似所述旋转器中的所述数据不然已在所述相反方向上移位或旋转了所述基于寄存器的指令最初指定的所述移位值一样的结果。所述控制单元进一步经配置以绕过所述逻辑且向所述旋转器提供由基于寄存器的指令所指定的移位值以在所述一个方向上移位或旋转所述数据。
文档编号G06F9/315GK101401064SQ200780003985
公开日2009年4月1日 申请日期2007年1月31日 优先权日2006年1月31日
发明者安东尼·D·克莱因, 迈克尔·斯科特·麦基尔文, 阿卜杜勒哈米德·A·马纳达斯 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1