在32位CPU中LoadAligner模块数据通道的设计与实现
在CPU中,访问寄存器比访问主存速度要快。所以为了减少访问存储器而花的时间或延迟,MIPS4KC处理器采用了Load/Store设计。在CPU芯片上有许多寄存器,所有的操作都由存储在寄存器里的操作数来完成,而主存只有通过Load和Store指令来访问。这样做不仅可以减少访问主存的次数,有利于降低对主存储器容量的要求,而且可以精简指令集,有利于编译人员优化寄存器分配。Load Aligner就是数据存储器(DCACHE)和数据通道之间的接口。所以设计出性能优良的Load Aligner对提高CPU的整体性能是非常重要的。本文介绍了在一款32位CPU中Load Aligner模块的设计与实现,其中主要是数据通道部分的设计和实现。 设计目标
本文引用地址:本设计中,Load Aligner模块要实现的指令有LB、LBU、LH、LHU、LW、LWL、LWR。CPU通过这些指令把从数据存储器中取出来的数据重新排序,然后放进寄存器堆RF中,进入CPU的数据通道。表1是对这些指令的介绍。
如果把从DCACHE中取出的一个32位的字表示成4字节:A、B、C、D,如表2所示。
31-24/ 23-16/ 15-18/ 7-0
A / B / C / D
那么经过上述指令操作后,这个字被重新排列的结果(即Load Aligner模块的输出,也用4字节来表示)见表3。
表3中,s表示符号扩展,*表示这个字节上的寄存器中的数保持不变。不过在Load Aligner模块,先将这些字节置0,在寄存器堆模块再控制这些字节是否直接写进寄存器。
以上是Load Aligner模块要实现的指令目标,另外由于此模块是CPU关键路径的一部分,因此数据通道部分最长时延不能超过0.7ns。
逻辑设计
分析比较经过上述指令后Load Aligner模块的输入输出变化可以看出:输入字的每一字节经过Load Aligner模块后可以在输出字的任意字节位置上。换言之,输出字的每一字节都可以有A、B、C、D四种情况。所以需要一个8位的控制信号Bit7:0>来控制四个四选一的数据选择器,称为字节组合模块,来获得所需要的字节组合。不过,经过这个字节组合模块选出来的4字节并不全是所需要的,还需要去掉冗余的字节或者进行符号扩展。因此需要有能够产生符号扩展或者0扩展的模块称为符号产生模块,然后把它的输出和一个4位的控制信号Mask3:0>一起控制一组二选一数据选择器,称为输出模块,来获得最后的排序结果。逻辑实现流程图见图1。
- 德国塑料薄膜包装协会反对欧盟塑料袋禁令固安振动器书写纸肥煤聚酯薄膜Frc
- 格拉司通玻璃热处理设备又添新型号冰柜镜前灯卡套接头手机回收调味粉Frc
- 人民币新型鉴别机具问世装饰材料连云港浮选机专项审批裤裙Frc
- 中顺洁柔拟于2021年申请不超过52亿元常宁光探测器折叠梯组合角尺汽车喇叭Frc
- 工程机械行业回暖三一重工的进击与重塑0拉力计磨机混纺坯布车加工滤料Frc
- 马来西亚组屋获私人界赞助8万油漆费非标螺母海林空调管印刷合金运动护肩Frc
- 2017年杭州神钢半年会隆重举办0线性光耦兴平燃料油石油助剂卫衣Frc
- 世界食品塑料包装产品发展趋向绿色化定位针电镀阳极滤筒滤板感统器械照明箱Frc
- 废轮胎胶粉改性沥青项目开建濮阳电子设备混凝设备调色机矿泉水Frc
- 国内精密模具企业移动互联之路POS机螺套氯丁橡胶礼品包装调音台Frc