501 - 单周期处理器的设计步骤

单周期处理器的设计步骤

① 分析指令系统,得出对数据通路的需求
② 为数据通路选择合适的组件
③ 连接组件建立数据通路
④ 分析每条指令的实现,以确定控制信号
⑤ 集成控制信号,形成完整的控制逻辑

MIPS指令系统的简化版本

无符号加法和减法——无立即数参与,属于R型指令

  • addu rd,rs,rt
  • subu rd,rs,rt

立即数的逻辑或(OR) ——有立即数参与,属于I型指令

  • ori rt,rs,imm16

装载(Load)和存储(Store)一个字(32位)

  • lw rt,imm16(rs)
  • sw rt,imm16(rs)

条件分支(Beq)

  • beq rs,rt,imm16

指令的含义

  • 指令位域的分解


    image.png
  • 指令的操作
image.png
image.png

其中,对于零扩展和符号扩展,就是在高位上补零或者符号。

指令系统的需求

  1. 算术逻辑单元(ALU)


    ALU
  • 运算类型:加、减、或、比较相等
  • 操作数:2个32位的数,来自寄存器扩展后的立即数
  1. 立即数扩展部件


    ImExtender
  • 将一个16立即数扩展为32位数
  • 扩展方式:零扩展、符号扩展
  1. 程序计数器(PC)


    ProgramCounter
  • 一个32位的寄存器
  • 支持两种加法:加4加一个立即数
  1. 寄存器堆
  • 每个寄存器为32位宽,共32个
  • 支持读操作:rs 和 rt
  • 支持写操作:rt 或 rd
    注:这称为“两读一写”的寄存器堆
  1. 存储器
  • 一个只读的指令存储器,地址和数据均为32位
  • 一个可读写的数据存储器,地址和数据均为32位
    注:这两个存储器实际对应了CPU中的指令和数据高速缓存(Cache)

存储组件:寄存器堆

image.png
  1. 内部构成
  • 32个32位的寄存器

数据接口信号

  • busA,busB:两组32位的数据输出
  • busW:一组32位的数据输入
  1. 读写控制
  • Ra(5位):选中对应编号的寄存器,将其内容放到busA
  • Rb(5位):选中对应编号的寄存器,将其内容放到busB
  • Rw(5位):选中对应编号的寄存器,在时钟信号(clk)的上升沿,如果写使能信号有效(WriteEnable==1),将busW的内容存入该寄存器
    注:寄存器堆的读操作不受时钟控制

存储组件:存储器

数据接口信号

  • Data In:32位的数据输入信号
  • Data Out:32位的数据输出信号

读写控制

  • Address:32位的地址信号。该信号指定一个存储单元,将其内容送到数据输出信号
  • Write Enable:写使能信号。在时钟信号(clk)的上升沿,如果写使能信号有效(为1),将数据输入信号的内容存入地址信号指定存储单元
    注:存储器的读操作不受时钟控制
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,403评论 8 114
  • 什么是嵌入式 IEEE(Institute of Electrical and Electronics Engin...
    Leon_Geo阅读 3,776评论 1 20
  • 1、嵌入式系统的定义 (1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本...
    荣卓然阅读 1,859评论 0 5
  • ​​​本文主要介绍嵌入式系统的一些基础知识,希望对各位有帮助。 嵌入式系统基础 1、嵌入式系统的定义 (1)定义:...
    OpenJetson阅读 3,353评论 0 13
  • 我想我大概只有咸菜豆腐的命,昨天跟土豪朋友吃饭不知道是菜不对还是她特地买来的甜品太冷了,反正拉肚子了,导致今天头特...
    兮兮0225阅读 151评论 0 0