考研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有效

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

相关推荐
ajsbxi1 天前
【Java 基础】核心知识点梳理
java·开发语言·笔记
呱呱巨基1 天前
vim编辑器
linux·笔记·学习·编辑器·vim
新子y1 天前
【小白笔记】普通二叉树(General Binary Tree)和二叉搜索树的最近公共祖先(LCA)
开发语言·笔记·python
聪明的笨猪猪1 天前
Java JVM “调优” 面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
爱学习的uu1 天前
CURSOR最新使用指南及使用思路
人工智能·笔记·python·软件工程
YuCaiH1 天前
Linux文件处理
linux·笔记·嵌入式
Cathy Bryant1 天前
大模型损失函数(二):KL散度(Kullback-Leibler divergence)
笔记·神经网络·机器学习·数学建模·transformer
qq_398586541 天前
Threejs入门学习笔记
javascript·笔记·学习
hour_go1 天前
TCP/IP协议相关知识点
网络·笔记·网络协议·tcp/ip
潘达斯奈基~1 天前
在使用spark的applyInPandas方法过程中,遇到类型冲突问题如何解决
大数据·笔记