一、04-Minisys-1单周期CPU的数据通路设计(上)(1)

本节主要内容

1、CPU功能、结构与原理
2、单周期数据通路设计

1.CPU的基本功能

  1. 指令控制——控制指令执行顺序
  2. 操作控制——根据指令的功能 ,产生相应的控制信号
  3. 时序控制——对各种操作进行时间上的控制
  4. 数据加工——对数据进行算术/逻辑运算或其他处理
  5. 端口访问——对来自存储器或I/O端口的数据进行访问
  6. 中断处理——处理运行过程中的异常情况

2.计算机的基本结构

在这里插入图片描述
主要为冯诺依曼结构,五大部件组成,运算、控制、存储、输入、输出。

3.CPU的基本结构

处理器(CPU):实现指令集架构中的指令
数据通路:处理器的一部分,包含了完成处理器所要求的操作所必须的硬件(“the brawn”->处理器肌肉)
控制:处理器的一部分(也在硬件中)用以告诉数据通路需要做什么(“the brain”)

4.CPU执行指令的过程

  1. 取指
    根据程序计数器( PC )从内存中取指令,PC的值为该指令在内存中存放的地址
  2. 计算PC的值
    能自动计算PC的值以确定下一条指令的地址
  3. 译码
    对指令操作码进行解析,产生控制信号来控制指令进行相应的操作
  4. 取操作数
    根据指令字段的内容选择从存储器读取数据或直接从寄存器取数
  5. 算术/逻辑运算
    根据译码结果进行算术/逻辑运算或者计算操作数的地址
  6. 结果写回
    根据指令的要求对运算(处理)后的数据进行写回操作,如写存储器或写寄存器
  7. 时钟控制

5.组成指令功能的四种基本操作

  1. 读取某一主存单元的内容,并将其装入某个寄存器
  2. 把一个数据从某个寄存器存入给定的主存单元或输出到给定的端口地址中
  3. 把一个数据从某个寄存器送到另一个寄存器或者ALU
  4. 进行某种算术运算或逻辑运算,将结果送入某个寄存器

6.Minisys-1指令格式

在这里插入图片描述

  1. 取指令(IF)
  • 从存储器中取出32位指令
  • 将PC递增(PC = PC + 4)
  1. 指令译码(ID)
  • 从指令中读取操作码和相应的字段
  • 从寄存器文件中获取所有必须的寄存器的值
  1. 执行(EX)
  • ALU执行操作:算数(+,-.*,/)、移位、逻辑(&,|)、比较(slt,==)、计算加载( LW )和存储(SW)的地址
  1. 存储(MEM)
  • 只有加载(LW)和存储(SW)指令在这一阶段才会有事情做;其他指令在这一阶段闲置,或者干脆跳过这一阶段
  • 可以利用Cache加快这一阶段的执行
  1. 写寄存器(WB或者“写回” )
  • 将指令执行的结果写回到寄存器文件中
  • 无需写寄存器的指令(e.g. sw, j, beq)这一阶段闲置或者跳过

7. 单周期数据通路的设计思想

  1. 分析和确定每条指令所需数据通路部件
  2. 在给出数据通路部件的同时,确定它们对应的控制信号

8. 操作功能的形式化描述

描述语言称为寄存器传输语言RTL (Register Transfer Language),本课程所用的RTL规定如下

  1. 用R[ ]表示寄存器r的内容
  2. 用M[addr]表示读取主存单元addr的内容
  3. 传送方向用“←”表示,传送源在右,传送目的在左
  4. 程序计数器PC直接用PC表示其内容
  5. 用OP[data]表示对数据data进行OP操作

二、04-Minisys-1单周期CPU的数据通路设计(上)(2)

建议准备纸笔。

9.取指部件

取值部件
每条指令都有的公共操作:
取指令:M[PC]

以PC内容作为地址,在存储器中取出这个数据即指令。
更新PC:PC←PC+4
调整PC,跳转指令不一定。

顺序:先取指令,再改PC的值

数据通路部件:取指部件( PC、指令存储器)

10.R型指令数据通路

在这里插入图片描述
非移位指令和jr

  • 指令特点:
    1 )指令类型由op和funct决定;
    op必须为0,funct决定是什么指令
    2 ) R[rs],R[rt]为ALU的源操作数;
    3 ) rd为目标寄存器地址,ALU将计算结果写入目的寄存器。
  • 指令功能的RTL描述:
    M[PC],PC←PC+4
    R[rd]←R[rs] op R[rt]
  • 所需器件:
    ①.取指部件; ②.寄存器组(新); ③.ALU(新)
  • 新加控制信号2个(译码后产生) :
    ①. ALUop一ALU控制信号,用以完成多种运算(稍后再讲)
    ②. RegWrite 一写寄存器组控制信号,用于运算结果写回
  • 数据通路示意图
    数据通路示意图
    ALUop进入ALU中,控制进行运算。
    Regwrite送到姨妈单元,有寄存器组,控制写。
    指令ROM,PC在取值时已存在。

移位指令
在这里插入图片描述

  • 注意无rs
  • 指令特点:
    1 )指令类型由op和funct決定
    2 ) R[rt],shamt为ALU的源操作数,shamt从取指部件传入
    3 ) rd为目标寄存器地址,ALU将计算结果写入目的寄存器
  • 指令功能的RTL描述:
    M[PC],PC←PC+4
    R[rd]← R[rt] op shamt
  • 所需器件
    ①.取指部件; ②.寄存器组; ③.ALU
  • 新加控制信号1个(译码后产生)
    sftmd一ALU控制信号,标明是移位运算
  • 数据通路示意图
    在这里插入图片描述
    sftmd送到ALU。
    Regwrite送寄存器。
    shamt进到ALU中,移位位数。

jr指令
在这里插入图片描述

  • 指令特点:
    1 )指令类型由op和funct决定
    2 ) R[rs]为源操作数
    3 )将rs的值给PC,改变了PC←PC+4
  • 指令功能的RTL描述:
    M[PC]
    PC←R[rs]
  • 增加器件
    2选1数据选择器__选择PC赋PC + 4还是R[rs]
  • 新加控制信号1个
    jrn 来控制刚加的2选1数据选择器选择R[rs]
  • 数据通路示意图
    在这里插入图片描述
    jrn为1选择rs寄存器,0选择PC+4。

版权声明:本文为weixin_43210113原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_43210113/article/details/104862910