zoukankan      html  css  js  c++  java
  • 自己动手写CPU之第七阶段(6)——乘累加指令实现思路

    将陆续上传本人写的新书《自己动手写CPU》。今天是第29篇。我尽量每周四篇


    亚马逊的销售地址例如以下,欢迎大家围观呵!

    http://www.amazon.cn/dp/b00mqkrlg8/ref=cm_sw_r_si_dp_5kq8tb1gyhja4


    China-pub的销售地址例如以下(有文件夹、内容简单介绍、前言):

    http://product.china-pub.com/3804025


    7.6 乘累加、乘累减指令说明

          乘累加、乘累减指令有4条,包含:madd、maddu、msub、msubu,各指令的格式如图7-11所看到的。从图中可知这4条指令的指令码都是SPECIAL2,第6-15bit都为0,能够根据第0-5bit的功能码确定是哪一种指令。


    •  当功能码是6'b000000时,表示是madd指令,有符号乘累加运算

          指令使用方法为:madd rs, rt

          指令作用为:{HI, LO} <- {HI, LO} + rs × rt,将地址为rs的通用寄存器的值。与地址为rt的通用寄存器的值,作为有符号数进行乘法运算。运算结果与{HI, LO}相加,相加的结果保存到{HI, LO}中。

    此处{HI, LO}表示的是HI、LO寄存器连接形成的64位数,HI是高32位,LO是低32位。

    •  当功能码是6'b000001时,表示是maddu指令,无符号乘累加运算

          指令使用方法为:maddu rs, rt

          指令作用为:{HI, LO} <- {HI, LO} + rs × rt,将地址为rs的通用寄存器的值,与地址为rt的通用寄存器的值,作为无符号数进行乘法运算,运算结果与{HI, LO}相加,相加的结果保存到{HI, LO}中。

    •  当功能码是6'b000100时,表示是msub指令,有符号乘累减运算

          指令使用方法为:msub rs, rt

          指令作用为:{HI, LO} <- {HI, LO} - rs × rt,将地址为rs的通用寄存器的值,与地址为rt的通用寄存器的值,作为有符号数进行乘法运算。然后使用{HI, LO}减去乘法结果,相减的结果保存到{HI, LO}中。

    •  当功能码是6'b000101时,表示是msubu指令。无符号乘累减运算

          指令使用方法为:msubu rs, rt

          指令作用为:{HI, LO} <- {HI, LO} - rs × rt。将地址为rs的通用寄存器的值,与地址为rt的通用寄存器的值,作为无符号数进行乘法运算。然后使用{HI, LO}减去乘法结果,相减的结果保存到{HI, LO}中。

    7.7 乘累加、乘累减指令实现思路

    7.7.1 实现思路

          在本章開始已经说明了乘累加、乘累减指令的实现思路,计划在流水线运行阶段採用两个时钟周期完毕运算。第一个时钟周期进行乘法运算,第二个时钟周期将乘法结果与HI、LO寄存器进行加/减法。

    7.7.2 系统结构的改动

          为了实现7.7.1节的思路,必需要保存两个信息:(1)当前是第几个时钟周期;(2)乘法结果。

    OpenMIPS通过在EX/MEM模块中加入两个寄存器cnt、hilo,分别保存上述信息。

    改动系统结构如图7-12所看到的。


          运行阶段EX模块的输出hilo_temp_o是乘法结果,传递到EX/MEM模块。并在下一个时钟周期送回EX模块,參与第二个时钟周期的加/减法运算。

          运行阶段EX模块的输出cnt_o代表当前是第几个时钟周期。传递到EX/MEM模块,并在下一个时钟周期送回EX模块。后者据此推断当前处于乘累加、乘累减指令的第几个运行周期。


    下一次将给出实现乘累加、乘累减指令的代码,敬请关注!

  • 相关阅读:
    WPF之触发器
    WP之样式
    SqlServer2012——多表连接查询
    SqlServer2012——Select,分组,排序、插入
    sqlserver——视图
    SqlServer规则
    SqlServer自定义数据类型
    SqlServer2012——表
    ES基础使用
    ELK安装
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/7073960.html
Copyright © 2011-2022 走看看