计算机组成原理的学习笔记(10)-- CPU·其二 组合逻辑控制器和微程序

学习笔记

前言

本文主要是对于b站尚硅谷计算机组成原理的学习笔记,仅用于学习交流。


一、组合逻辑控制器
  • 定义:利用组合逻辑电路生成控制信号,无存储功能,直接通过硬件实现控制逻辑。

  • 基本原理

    :通过输入信号和逻辑电路生成输出控制信号,主要用于控制器中控制特定操作的执行。

    • 根据操作需要,输入端口传递信号给组合逻辑电路;

    • 通过逻辑门输出所需的控制信号,用以触发硬件微操作。


二、微操作的节拍安排
  • 微操作的定义:计算机系统中每个基本硬件操作,例如寄存器间的数据传输、数据存储、加法操作等。

  • 节拍安排:

    • 微操作的执行由时钟周期(节拍)控制。

    • 在每个节拍中,特定的微操作被安排执行,多个微操作可以在同一节拍内并行完成,但需要硬件资源不冲突。


三、微程序编码方式
  1. 直接编码:每个微操作对应一个控制字段的位,简单直观,但控制字段长度较长。

    • 优点:无额外硬件译码,控制灵活。

    • 缺点:微指令长度随微操作数量线性增加。

  2. 字段直接编码:

    • 将微操作分为多个字段组,每组字段可独立控制一类操作。

    • 例如,一个字段控制寄存器操作,另一个字段控制总线操作。

  3. 字段间接编码:

    • 对每组字段的微操作进行间接编码,利用译码器将字段值翻译为控制信号。

    • 优点:大大缩短微指令长度。

    • 缺点:硬件译码逻辑复杂,灵活性下降。

  4. 混合编码:结合直接编码和间接编码的特点,对频繁使用的操作直接编码,对复杂操作间接编码。


四、CU(控制单元)的控制字段
  1. 定义:控制字段是微程序控制器或组合逻辑控制器用来控制微操作的二进制编码字段。

    • 每一位或每组字段激活一个硬件微操作。
  2. 为什么需要多少微操作就需要多少位控制字段?

    • 每个微操作需要一个独立的控制信号,CU需要生成所有这些控制信号。

    • 每一位控制字段用01表示是否激活某个具体的微操作。

    • 例如:

      • 微操作MAR <- PC需要1位控制字段。

      • 微操作MDR <- Memory[MAR]需要1位控制字段。

  3. 优化方法

    • 直接编码:每位控制一个微操作,灵活但字段长度长。

    • 字段分组(Field Partitioning):将微操作分组,每组用一个字段控制。

    • 间接编码(译码器方式):将字段值翻译为具体的控制信号,减少字段长度,但增加译码逻辑复杂度。


五、微程序与硬布线控制器的比较
特性 微程序控制器 硬布线控制器
实现方式 微指令+存储器 组合逻辑电路
灵活性 高(可编程) 低(硬件固定)
扩展性 易于扩展 扩展困难
执行速度 较慢 较快
设计复杂度 简单 复杂
硬件需求 需要控制存储器 需要大量逻辑电路

六、微程序控制器
  • 定义:通过存储在控制存储器(Control Memory, CM)中的微程序(Microprogram)生成控制信号。

  • 主要过程

    1. 微指令存储

      • 每条微指令存储在控制存储器中,描述一个或一组微操作。

      • 微指令的内容包括:需要发出的控制信号、下一条微指令的地址等。

    2. 控制存储器读取

      • 根据当前指令的操作码,通过微指令地址寄存器(CAR,Control Address Register)选择相应的微指令。

      • 读取微指令后,将其送到控制寄存器(Control Register,CR)。

    3. 微指令执行

      • 微指令被解释为控制信号,直接驱动各硬件部件(如ALU、寄存器、存储器等)完成操作。

      • 若需要多个步骤完成,则通过更新地址寄存器(CAR)来读取下一条微指令。

    4. 循环执行

      • 通过这种读取-执行-跳转的方式,完成一条机器指令的执行过程。

结语

这一部分我最开始学着感觉有点吃力(也许是我今天不在状态),这部分我看了大概两边遍左右才理解下来,第二遍的时候我跟着老师的思路,感觉豁然开朗,果然这位老师很厉害,想起来应该就是我的问题吧。

这篇笔记对视频中涉及的知识知识做了大体的概括,不够具体,如果想进一步的巩固这一部分的知识,光看笔记可不行啊,还得再回去看看视频,这篇笔记权当我加深一下印象了。

唉唉最近又要准备期末的高数了,一点没看...想哭。

相关推荐
ん贤3 分钟前
2024第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
c语言·数据结构·c++·经验分享·笔记·算法·蓝桥杯
吴梓穆3 分钟前
UE5学习笔记 FPS游戏制作42 按钮添加回调函数
笔记·学习·ue5
吴梓穆7 分钟前
UE5学习笔记 FPS游戏制作39 制作一个带有背景的预制面板 使用overlay和nameSlot
笔记·学习·ue5
1zero101 小时前
[C语言笔记]09、指针
c语言·开发语言·笔记
云上艺旅1 天前
K8S学习之基础七十四:部署在线书店bookinfo
学习·云原生·容器·kubernetes
你觉得2051 天前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义下载方法
大数据·人工智能·python·gpt·学习·机器学习·aigc
A旧城以西1 天前
数据结构(JAVA)单向,双向链表
java·开发语言·数据结构·学习·链表·intellij-idea·idea
无所谓จุ๊บ1 天前
VTK知识学习(50)- 交互与Widget(一)
学习·vtk
FAREWELL000751 天前
C#核心学习(七)面向对象--封装(6)C#中的拓展方法与运算符重载: 让代码更“聪明”的魔法
学习·c#·面向对象·运算符重载·oop·拓展方法
吴梓穆1 天前
UE5学习笔记 FPS游戏制作38 继承标准UI
笔记·学习·ue5