当前位置: 首页 > news >正文

考研408《计算机组成原理》复习笔记,第五章(3)——CPU的【数据通路】

一、CPU还可以分为【数据通路】+【控制部件】

我前面一节的笔记里说过,CPU可以

  • 分为【运算器】+【控制器】
  • 或说【数据通路】+【控制部件】

回顾一下

数据通路】就是具体传送数据、运算数据的部分

  • 【数据通路】包括【组合逻辑元件】
    • 又称【操作元件】
      • 特性是蠢!没有记忆!(例如ALU算术逻辑单元,得靠暂存寄存器帮他存数据,不然都不知道自己要谁跟谁进行计算)
      • 代表(要背!):算术逻辑单元ALU、指令译码器ID、多路选择器MUX、三态门......
  • 【数据通路】还包括【时序逻辑元件】
    • 又称【状态元件】
      • 特性是有记忆!能存东西!】、【包含存储信号!
      • 代表(要背!):PC、MDR、MAR、IR.....
  • 总之,一切【有数据流经】的部件、通道都属于【数据通路】的一部分
    • 比如隧道、高架桥、公交站、高铁站、停机坪......都属于交通系统一部分

而【控制部件】根据【微操作控制信号】不同,还分为:

  • 【硬布线控制器】(后期重点,以后再学)
  • 【微程序控制器】(后期重点,以后再学)

二、数据通路的功能和基本组成

1、数据通路的功能

数据通路】:就是数据在指令过程中经历的【路径】【路径上的部件】

  • 数据通路描述了 “信息从哪里开始?”“中间经过哪些部件?”“最后被传送到哪里?”
  • 一切【有数据流经】的部件、通道都属于【数据通路】的一部分
    • 比如隧道、高架桥、公交站、高铁站、停机坪......都属于交通系统一部分
  • 数据通路【由控制部件CU控制
    • 【CU】是数据通路的【核心】
    • 控制部件根据每条指令功能的不同,生成对数据通路的控制信号(或者说由CU产生的控制信号建立数据通路

【例题】

2、数据通路的组成

组成数据通路的元件主要分为:【组合逻辑元件】和【时序逻辑元件】两类。

  • 【组合逻辑元件】:简单来说就是【功能部件
    • 又称【操作元件
      • 任何时刻产生的的【输出】仅取决于【当前的输入】
      • 不含存储信号的记忆单元
      • 不受时钟信号的控制
      • 输入与输出之间无反馈通路
      • 信号单向传输
      • 常用的组合逻辑元件:加法器、算术逻辑单元(ALU)、译码器、多路选择器MUX、三态门......等
        • 算术逻辑单元ALU
          • 尤其要注意ALU的特点:因为要处理两个操作数,所以单总线结构下,2个输入 必须有一个输入  通过【暂存寄存器X】连接总线!!
          • 然后输出端有时一般也需要【暂存寄存器X】
        • 译码器                                          
        • 多路选择器                                                                      
          • 通常专用于ALU,用于控制ALU的两个输入端的
          • 他和【三态门】最大的区别是——它在【输入端】
        • 三态门                                                                    
          • 注意:CPU多个部件共享一条总线时,各部件和总线之间控制部件建立连接、断开连接的部件必是三态门
          • 他和【多路选择器MUX】最大的区别是——它在【输出端】

  • 【时序逻辑元件】:简单来说就是各类存储数据的部件
    • 又称【状态元件
      • 任何时刻产生的的【输出】不仅与【当前的输入有关】,还与【该时刻以前的输入有关
      • 必然【含存储信号的记忆单元
      • 必须在【时钟节拍下工作
      • 常用的时序逻辑元件:寄存器和存储器,如:通用寄存器组GPRs、程序计数器PC、PSW状态 / 移位 / X暂存 / 锁存寄存器、触发器......等
        • 注意:n个【触发器】构成一个【n位寄存器】

  • 怎么区分一个【元件】是【组合逻辑元件(操作元件)】还是【时序逻辑元件(状态元件)】
    • 寄存器,能存东西数据,秒选【时序逻辑元件(状态元件)
    • 剩下的都是【组合逻辑元件(操作元件)

【例题】

三、【内部总线】和【系统总线】

【总线】英文别称又叫【Bus】,顾名思义像公交车一样搭载各个部件的所有输出信息

【内部总线】

  • 同一部件内,例如CPU内,连接各个【寄存器】和【运算等功能部件】之间的总线

【系统总线】

  • 同一台计算机系统内的各个部件之间,例如CPU、内存、通道和各种I/O设备接口之间互相连接的总线

四、数据通路基本结构(难点)

1、CPU总线结构

注意:总线结构基本避免不了【总线数据冲突】的问题

  • 在【输出端out】同一时刻只允许一个部件发出信息到同一总线
    • (如果多个部件都发出了,就用三态门控制只让一个部件发)
  • 在【输出端in】同一时刻允许多个部件同时接收
    • 你接收多少信息都无所谓,又不会导致总线争用

(1)CPU内部单总线方式

【概念】:

  • 各个【寄存器 “输入”、“输出”】直接连同一条【公共总线Bus】上,由【公共总线Bus】再连其他功能部件

【特点】:

  • 结构简单,容易实现,但容易产生【数据冲突】现象,性能较低
  • 为了避免直连的方式导致传输数据冲突,可以加入【暂存寄存器X】来帮【各功能部件】暂时记忆数据(这正是结合了前面说的ALU属于组合逻辑单元,老失忆)
  • 注:单周期处理器(CPI=1)不能采用单总线方式
    • 单周期处理器一条指令只需要一个时钟周期
    • 单总线一个时钟周期只够一次操作(比如取指令),完不成一条指令的所有操作(取指令、分析指令、执行指令...等)

【需要了解的各个部件】

  • GPRs为通用寄存器组
    • rs,rd分别为所读、写的寄存器编号;
  • Y、Z为暂存器;
  • FR为标志寄存器,用于存放ALU产生的标志信息。
  • 带箭头的虚线表示控制信号
    • 【寄存器名字 + in】表示该部件允许写入的信号,【寄存器名字 + out】表示该部件允许输出的信号,例如:
      • MDRin:表示允许内部总线上数据写入MDR的信号
      • MDRout:表示允许MDR的内容送入数据总线的信号
  • 能输出到总线的部件均通过一个三态门与内部总线相连,用于控制该部件与内部总线之间数据通路的连接与断开

(2)CPU内部多总线方式

【概念】:

  • 将所有【寄存器 “输入”、“输出”】都连接到【多条公共通路】上

【特点】

  • 相比【单总线方式】,内部有【两条 或 更多】总线
    • 相比【单总线方式】一个时钟周期内只允许传送一个数据,指令执行速率低
    • 【多总线方式】同时在多个总线上传送不同数据,提高效率。

2、专用数据通路结构

相当于各个寄存器输入输出直接连【ALU】

【特点】:

  • 性能较高、基本不存在【数据冲突】现象
  • 但结构复杂、硬件量大、不易实现
  • 为了避免直连的方式导致传输数据冲突,可以加入【多路选择器MUX】【三态门】2种方式,来控制信号一个一个区分开传输给ALU

【例题】

五、数据通路的操作举例(涉及大题)

【套路】

        这些流程不是要你死记硬背,考试答题会让你推到流程,然后让你写出【每个节拍(时钟周期)干了什么】以及【部件对应的是 in输入 out输出 是哪一个有效?】、【CU发出的是 写命令 or 读命令?

  • 其实每个节拍的流程上,有很多套路,比如:

(1)通用寄存器之间传送数据

这里假设命名任意一个寄存器叫【R】,则

  • Rin:总线到寄存器的信号
  • Rout:寄存器到总线的信号

【标准写法】当我们要描述【实现将PC的内容送至MAR】,实现该操作的流程及控制信号为:

  • (PC)—>MAR        PCout和MARin有效,PC内容—>MAR
    • (注意前面是流程后面是控制信号,二者都不可以缺少,要一起写上去)

(2)从主存读取数据

第一步:将PC的内容通过内部总线送至MAR,需要一个时钟周期。

第二步:CU项主存发出读命令,从MAR所指主存单元读取一个字,并送至MDR;同时PC+1为取下一条指令做准备,需要一个时钟周期。

第三步:将MDR的内容通过地址总线送至IR,需要一个时钟周期。

【标准写法】

  • (PC)—>MAR      PCout和MARin有效,现行指令地址—>MAR
  • MEM(MAR)—>MDR(PC)+1—>PC     MDRin有效,CU发出读命令取出指令后PC+1
  • (MDR)—>IR       MDRout和IRin有效,现行指令—>IR

(3)将数据写入主存

将寄存器R1的内容写入寄存器R2所指的主存单元

【标准写法】

  • (R1)—>MDR      R1out和MDRin有效
  • (R2)—>MAR         R2out和MARin有效
  • MDR—>MEM(MAR)      MDRout有效,CU发出写命令

(4)执行算术运算或逻辑运算

假设加法指令ADD  ACC,R1,实现将ACC的内容和R1的内容相加并写回ACC

        单总线数据通路中,每一时刻总线上只有一个数据有效。因为ALU是一个没有存储功能的组合逻辑元件,在其执行运算时必须保持两个输入端同时有效。

        所以先将一个操作数经内部总线送入暂存器Y中,Y的内容在ALU的左输入端始终有效。

        再将另一个操作数经内部总线直接送到ALU右输入端。

        此外ALU的输出端也不能直接与内部总线相连,否则其输出会通过总线反馈到输入端,影响运算结果,因此将运算结果暂存在暂存器Z中。

【标准写法】

  • (R1)—>Y                 R1out和Yin有效,操作数-->Y
  • (Y)+(ACC)—>Z        ACCout和ALUin有效,CU向ALU发出加命令,结果-->Z
  • (Z)—>ACC                 Zout和ACCin有效,结果-->ACC

注:以上需要3个时钟周期(不可以同时执行,否则会引起总线冲突)

(5)修改程序计数器的值

        转移指令通过修改PC的值来达到跳转目的。假设指令JMP addr(addr为目标转移地址)实现将IR中的地址字段写入PC。

【标准写法】

  • AD(IR)—>PC     IRout和PCin有效

说实话,我也不知道知识点怎么写,得结合大题。。。等我有空再补充吧

http://www.dtcms.com/a/330889.html

相关文章:

  • 双机热备实验
  • Linux编程1:进程和线程
  • DTW算法判断两条曲线的相似度,Python代码
  • [激光原理与应用-272]:理论 - 波动光学 - 单纯的白色其实并不单纯
  • 迅为RK3562开发板获取Android13源码
  • 3D商品展示:技术狂欢下的普及困局
  • 【新启航】起落架大型结构件深孔检测探究 - 激光频率梳 3D 轮廓检测
  • Uniapp 自定义头部导航栏
  • 表达式树实战:Unity动态逻辑编程
  • 考研408《计算机组成原理》复习笔记,第三章(6)——Cache(超级重点!!!)
  • 【科研绘图系列】R语言绘制蝶形条形图蝶形柱状堆积图
  • 考研408《计算机组成原理》复习笔记,第四章(3)——指令集、汇编语言
  • 一致性哈希Consistent Hashing
  • Rust Web框架Axum学习指南之入门初体验
  • Java面试宝典:JVM性能优化
  • 【代码随想录day 20】 力扣 669. 修剪二叉搜索树
  • MySQL 性能优化实战指南:释放数据库潜能的艺术
  • 【visual studio】visual studio配置环境opencv和onnxruntime
  • 零知开源——基于STM32F4的HC-12无线通信系统及ST7789显示应用
  • 【Linux】库制作与原理
  • mysql卸载了 服务内还显示如何解决
  • CVPR 2025丨时间序列:动态多尺度机制登场,即插即用,预测稳准狠刷新SOTA
  • Vivado GPIO详解
  • 量化因子RSI
  • 中小型泵站物联网智能控制系统解决方案:构建无人值守的自动化泵站体系
  • 基于STM32单片机智能手表GSM短信上报GPS定位温湿度检测记步设计
  • OS设备UDID查看方法
  • Mybatis学习笔记(一)
  • 「iOS」————设计架构
  • 在语音通信业务量下降时候该怎么做