×
嵌入式 > 嵌入式开发 > 详情

一种高性能32位移位寄存器单元的设计

发布时间:2024-06-27 发布时间:
|
1 引言

随着CPU设计位数与性能的不断提高,对CPU 执行单元中专用硬件移位寄存器的要求也越来越高。CPU移位寄存器的性能直接影响到所设计CPU 对移位类指令的处理能力和执行速度。传统结构的CPU中,移位寄存器的设计一般采用矩阵结构和树状结构。当CPU的位数达到32位,速度达到100M以上时,要在一个指令周期内对32位的数据进行32 位内任意移位,以前的设计方法已经很难达到要求。曾经有过对32位桶形移位寄存器的行为级描述,但其只适用于RISC指令集,并且作为CPU中的专用硬件为了达到功耗、速度和面积上的最佳,通常硬件电路采用全定制设计。

本文给出了一种可用于32位以上CPU执行单元的移位寄存器电路,并针对CISC指令集INTEL X86进行了优化(由于RISC指令集中移位类指令实现比较简单,故没有在文中讨论);采用指令预处理的技术和通过冗余位,能很方便的实现带进位标志 CF移位和设置CF位,并使得每条移位指令的平均执行速度为两个指令周期。它有效地提高了CPU对移位类指令的执行性能,并且作为一个基本的内核单元能很方便地移植到不同指令集(RISC或 CISC)的CPU设计之中。

2 32位CPU中执行单元总体结构

我们所设计的32位CPU的执行部分采用双总线结构,数据总线(Abus,Bbus)的宽度是32位。由于移位类指令如果用ALU进行实现的话,必然会耗费太多的CPU周期,为实现在一个指令周期内对32位数据进行任意位的移位操作,因此有必要在执行单元中设计专用硬件移位寄存器,在执行移位类指令时由它进行32位数据的移位。

图1给出了32位CPU执行单元总体结构数据流结构简图,并省略了所有控制信号。图中Abus为双向32数据总线,Bbus为单向32位数据总线。由于考虑到要实现INTEL X86系列所有的移位类指令(RCR,RCL,ROR,ROL等),所以移位寄存器在设计时采用双输入端,即实际该移位寄存器最大能实现64位移位。通过特殊的指令预设置方法,并通过增加冗余位实现标志位的设置。

本文引用地址:/zixunimg/eepwimg/www.eepw.com.cn/article/201612/324813.htm

3 移位寄存器单元的设计

3.1 矩阵移位器和树状移位器

在CPU中移位寄存器单元的设计一般采用的是矩阵结构和树状结构的移位器。

3.1.1 矩阵结构(Matrix Style)移位器

它的结构为一传输门组成的阵列。行数等于操作数据宽度,列数等于最多能移位数如图2所示(以4位举例)。


其中A3~A0是4位数据输入线,sh3~sh0是 4根控制信号线。每次进行N位移位操作,对应的shN为高,其它控制信号为低。

这种结构的优点是:(1)数据传输的速度快,每个信号到达输出端只经过了一级传输,不受移位器位数限制;(2)版图很规整。缺点是:(1)每根控制信号的负载太大,如32位移位器,每根信号线(sh0,sh1,……sh31)都要驱动32个开关管;(2)所需晶体管数目太多,如n位移位器所需晶体管数为2× n×n=2n2 (传输门部分采用CMOS实现),所带来的功耗和芯片面积也会增加;(3)每一移位操作只需一根控制线为1,所以需辅以额外的译码单元。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Cortex‐M3的Faults异常究竟是什么