从 01 开始 从 01 开始
首页
  • 计算机简史
  • 数字电路
  • 计算机组成原理
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • 数据库
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Node
  • Windows 使用技巧
  • 最全面的输入法教程
  • 浏览器
  • 终端软件
  • 装机
  • 笔记类软件
  • Markdown
  • 各大平台
  • 远程控制
  • RSS
  • 图片类工具
  • Office
  • 手机
  • 校招
  • 五险一金等
  • 职场规划
  • 关于离职
  • 杂谈
  • 教程简介
  • 英语学习方法论
  • 字母
  • 音标
  • 单词
  • 语法
  • 英语兔的相关视频
  • Larry 想做技术大佬的相关视频
  • 驾驶技能
  • 住房相关
  • 厨艺
  • 关于税
  • 理财
  • 睡眠
  • 皮肤
  • 口腔健康
  • 学会呼吸
  • 健身日志
  • 电影

    • 电影推荐
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 反腐
  • GFW
  • 404 内容
  • 审查与自我审查
  • 互联网
  • 2022
  • 2023
  • 2024
  • 2025
  • 关于本站
  • 关于博主
  • 网站动态
  • 公告栏
  • 友人帐
  • 从零开始搭建一个博客
  • 搭建邮件服务器
  • 本站分享
  • 文章分类
  • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 计算机简史
  • 数字电路
  • 计算机组成原理
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • 数据库
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Node
  • Windows 使用技巧
  • 最全面的输入法教程
  • 浏览器
  • 终端软件
  • 装机
  • 笔记类软件
  • Markdown
  • 各大平台
  • 远程控制
  • RSS
  • 图片类工具
  • Office
  • 手机
  • 校招
  • 五险一金等
  • 职场规划
  • 关于离职
  • 杂谈
  • 教程简介
  • 英语学习方法论
  • 字母
  • 音标
  • 单词
  • 语法
  • 英语兔的相关视频
  • Larry 想做技术大佬的相关视频
  • 驾驶技能
  • 住房相关
  • 厨艺
  • 关于税
  • 理财
  • 睡眠
  • 皮肤
  • 口腔健康
  • 学会呼吸
  • 健身日志
  • 电影

    • 电影推荐
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 反腐
  • GFW
  • 404 内容
  • 审查与自我审查
  • 互联网
  • 2022
  • 2023
  • 2024
  • 2025
  • 关于本站
  • 关于博主
  • 网站动态
  • 公告栏
  • 友人帐
  • 从零开始搭建一个博客
  • 搭建邮件服务器
  • 本站分享
  • 文章分类
  • 文章归档
  • 计算机历史

  • 数字电路

  • 计算机组成原理

    • 网课-计算机组成原理(北大-陆俊林)

      • 概述-计算机组成原理(北大-陆俊林)
      • 第1周-计算机组成章节视频简介
      • 101-电子计算机的兴起
      • 102-冯·诺依曼结构的要点
      • 103-冯·诺依曼结构的小故事
      • 104-计算机结构的简化模型
      • 105-计算机执行指令的过程
      • 106-计算机输入和输出
      • 107-冯诺依曼结构和具体实现
      • 201-设计自己的计算机
      • 202-x86 体系结构
      • 203-x86 指令简介
      • 204-复杂的 x86 指令举例
      • 205-MIPS 体系结构
      • 206-MIPS 指令简介
      • 301-算术运算和逻辑运算
      • 302-门电路的基本原理
      • 303-寄存器的基本原理
      • 304-逻辑运算的实现
      • 305-加法和减法的实现
      • 306-加法器的优化
      • 401-乘法的运算过程
      • 402-乘法器的实现
      • 403-乘法器的优化 1
      • 404-乘法器的优化 2
      • 405-除法的运算过程
      • 406-除法器的实现
      • 407-除法器的优化
      • 501-处理器的设计步骤
      • 502-数据通路的建立
      • 503-运算指令的控制信号
      • 504-访存指令的控制信号
        • load 指令
        • store 指令
        • 小结
      • 505-分支指令的控制信号
      • 506-控制信号的集成
      • 601-流水线的基本原理
      • 602-流水线的优化
      • 603-超标量流水线
      • 604-流水线的冒险
      • 605-数据冒险的处理
      • 606-控制冒险的处理
      • 701-存储层次结构概况
      • 702-DRAM 和 SRAM
      • 703-主存的工作原理
      • 704-主存技术的发展
      • 705-高速缓存的工作原理
      • 706-高速缓存的组织结构
      • 707-存储容量的计算
      • 801-中断和异常的来源
      • 802-中断向量表的结构
      • 803-中断向量表的发展
      • 804-中断的处理过程
      • 805-内部中断分类说明
      • 806-基于中断的功能调用
      • 901-输入输出接口的基本功能
      • 902-输入输出接口的编址方式
      • 903-输入输出的控制方式
      • 904-中断控制方式
      • 905-外部中断的处理过程
      • 906-直接存储器访问方式
  • 操作系统

  • Linux

  • 计算机网络

  • Git

  • 计算机小知识

  • 数据库

  • 计算机基础
  • 计算机组成原理
  • 网课-计算机组成原理(北大-陆俊林)
2023-06-13
目录

504-访存指令的控制信号

# 504-访存指令的控制信号

对于 MIPS 这样的指令系统来说,其运算指令是不能直接访问存储器的,因此,我们还需要设计单独的访存指令,用来完成寄存器和存储器之间的数据传输。在这一节,我们就来看一看这一类访存指令是如何生成控制信号的。

对于我们要实现的这个处理器,访存指令都是属于 I 型指令, 一条是 load,一条是 store,我们分别来进行分析。

​​

‍‍

# load 指令

对于 load 指令, 首先当然也是取指;然后根据运算出的地址,访问数据存储器,并将读出的内容写入到 rt 指定的寄存器中; 最后,是更新 PC 寄存器。 那第一步和第三步,与运算指令都是一样的,在这里,我们就只讲解第二步相关的操作。

​

‍

这是我们的数据通路,如果当前 IFU 取回的是一条 load 指令,那这些控制信号将会如何设置呢? 首先,下一条指令的地址应该还是采用 PC+4 的方式。 然后我们来看寄存器堆这一边,rs 和 rt 都是固定连接到了指令编码的对应位域, 因此,busA 和 busB 这两组信号上,分别是由 rs 和 rt 所指定的寄存器的内容。 但我们要注意,对于这条指令,我们想要运算的是 rs 寄存器中的内容和立即数的符号扩展进行加法。 因此,对于 ALU 的第二个操作数的来源, 我们应该通过这个多选器,选择通道 1,并且设置扩展部件为符号扩展的功能。 这样,指令位域中的 16 位立即数就会经过符号扩展,最终连接到了 ALU 的第二个输入端, 而我们发送到 ALU 的控制信号,则是要设置为加法运算。 这样,ALU 就会完成了访存地址的运算, 并将地址信号送到数据存储器的地址输入端。

同时我们也要注意,busB 上的信号,也会被连接到数据存储器的数据输入端, 虽然我们并不需要它,但是这根信号仍然会把 Rp 所指定的寄存器的内容送过来。 所以我们需要设置数据存储器的写使能信号, 把它设为 0,保证了数据存储器的内容不会发生改变。

​

‍

然后我们来看最后这个多选器, 这个多选器的两个输入,一个是 ALU 的运算结果,就是访存的地址; 另一个是从数据存储器当中,读出的数据。 那么对于这条指令,我们显然希望把后者送到寄存器堆当中去, 因此对于这个多选器来说,我们需要设置它的选择信号为 1, 这样我们就可以把数据存储器的输出传送到寄存器堆的数据输入端, 而且因为我们要写入 rt 所指定的寄存器, 所以我们需要设置寄存器堆的写使能信号为有效, 并把写入寄存器编号的来源设置为 rt, 这样,在下一个时钟上升沿到来的时候, 数据存储器输出的内容,就会被写入到 rt 所指定的寄存器当中去了,而且在同样的这个时钟上升沿,PC 寄存器的内容也不会被更新为 PC+4, 这就是 load 指令所完成的操作。

‍

‍

# store 指令

然后我们来看 store 指令, store 指令也分为三步,同样,我们也只看其中的第二步。 对于 store 指令,我们也需要将 rs 寄存器中的内容和立即数的符号扩展进行加法运算,并以此作为地址访问数据存储器, 不过不是读出,而是写入,

​

‍

因此,对应到数据通路上,我们就直接标出了对于 store 指令,有效的这些信号。 那这些控制信号又该如何设置呢? 那你不妨自己想一想,然后我们一起快速地浏览一遍。

​

对于 IFU,我们要选择下一条指令的地址, 仍然是 PC+4,我们要选择 ALU 的数据的输入, 现在我们选的是立即数的符号扩展, 而对于 ALU,我们依然要选择加法的运算类型, ALU 的运算结果,依然是一个地址,会被送到数据存储器上, 但是与之前不同的是,这条指令要完成向数据存储器的写操作, 所以在这里,我们会把数据存储器的写使能信号置为有效。 这样,在下一个时钟的上升沿,数据存储器 就会采样其数据输入端的信号,但这个输入端的信号又是什么呢? 我们可以看一看,实际上它连到了 busB,而 busB 是由 rt 这个信号所指定的寄存器中的内容。 因此,在下一个时钟上升沿到来的时候, 数据存储器会根据 ALU 算出来的地址,选中对应的存储单元, 并采样这个来自 rt 寄存器当中的内容, 将它存到对应的存储单元中去。 对于 store 指令来说,它就完成了它所需要做的主体的操作, 但是对于这个数据通路,我们必须要把剩下的控制信号都设置完整。 我们来看后面这个多选器,因为对 store 指令,我们不需要改写寄存器堆的内容, 所以无论选择哪个通路,都是没有意义的。 在这里,我们就设置这个控制信号,可以是 0,也可以是 1,就用 x 来进行标记。

那这样,这个多选器总会选出一组信号, 最终送到寄存器堆的数据输入端。 不过,这没有关系,我们只需要设置寄存器堆的写使能信号为无效, 在时钟上升沿到来的时候,寄存器堆的内容就不会发生改变。也正因为如此, 这个要写入的寄存器编号,无论设成 rb 还是 rt,也都是可以的, 这就是对于 store 指令的控制信号的设置方法。

# 小结

现在,我们已经掌握了访存指令是如何生成控制信号的, 再加上之前的运算指令,我们就可以编写程序,让计算机完成相应的任务了。 不过,如果我们想编写出功能更为强大的程序, 那只有运算指令和访存指令是不够的,我们还需要改变程序流向的分支指令, 这一点,我们在下一节继续分析。

上次更新: 2024/9/29 12:08:10
503-运算指令的控制信号
505-分支指令的控制信号

← 503-运算指令的控制信号 505-分支指令的控制信号→

最近更新
01
2025 年 2 月记
02-28
02
最全面的浏览器教程-完结撒花
02-16
03
这个工具可以轻松搞到你的浏览器账户密码!
02-15
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式