《计算机组成原理》唐朔飞 第三版 知识点总结

笔者自用。可能有错。

第一章 计算机系统概论

1.1 计算机系统简介

1.1.1 计算机的软硬件概念

计算机系统 = 软件 + 硬件

软件:人们事先编制的具有各类特殊功能的程序。

  • 系统软件
    • 注意汇编程序和翻译程序是并列关系不是从属关系。
  • 应用软件

硬件:计算机的实体部分,即看得见摸得着的各种电子元件。

1.1.2 计算机系统的层次结构

汇编语言和操作系统在20s50s引入(第二代计算机)

高级语言在20c60s出现

1.1.3 计算机组成和计算机体系结构

计算机体系结构是那些能够被程序员所见到的计算机系统的属性。

计算机组成是指如何实现计算机体系结构所体现的属性。

1.2 计算机的基本组成

1.2.1 冯诺依曼机

特点

  • 由5大设备组成:运算器、存储器、控制器、输入设备、输出设备
  • 指令和数据的地位同等,可以按地址寻访
  • 指令和数据都按二进制表示
  • 以运算器为中心

基本特点:按地址访问并顺序执行指令。

1.2.2 计算机的硬件框图

现代计算机的三大组成部分:CPU、I/O设备、主存

1.3 计算机硬件的主要技术指标

三大技术指标:

  • 机器字长
  • 存储容量
  • 运算速度
    • 此处可出计算题:CPI、吉普森法等

第二章 计算机的发展及应用

2.1 计算机的发展史

ENIAC 1946交付使用,使用十进制运算

计算机的四代:

  • 第一代电子管计算机
  • 第二代晶体管计算机
  • 第三代集成电路计算机(OS出现)

集成电路:

  • SSI 几十个门
  • MSI 几百个门
  • LSI 几千个门
  • VLSI 上万个门

第三章 系统总线

总线:只能分时发送,但可以同时接收。

3.2 总线的分类

  • 按数据传送方式:并行传输总线、串行传输总线
  • 按连接部件
    • 片内总线
    • 系统总线
      • 数据总线(双向)
      • 地址总线(单向)
      • 控制总线(稍复杂,见 P44)
    • 通信总线:一般是电缆式,而不是印刷电路。
      • 串行通信总线
      • 并行通信总线

3.3 总线特性及性能指标

3.3.3 总线标准

  • ISA 及其扩展
  • PCI:并行,即插即用,支持突发工作方式
  • USB:串行,即插即用

3.5 总线控制

3.5.1 判优控制

主设备:对总线有控制权的设备

从设备:响应从主设备发来的命令

  • 集中式

    • 链式查询
      • 仅需常数根线
    • 计数器定时查询
      • 计数从0开始,则优先级从0到n降序
      • 计数从上次终点开始,则优先级相等
      • 需要 \(log_2 n\) 条地址线,其中n为设备数目
    • 独立请求方式
      • 响应快速,控制复杂
      • 需要 \(2n\) 根线(但不会增加处理机开销)

    三条总线仲裁的辅助线:BS总线忙、BR总线请求、BG总线同意

  • 分布式

    • 自举式
    • 冲突检测式:常用于网络

3.5.2 通信控制

总线周期的四个阶段:

  1. 申请分配阶段
  2. 寻址阶段
  3. 传数阶段
  4. 结束阶段

通信控制的四种方式:

  • 同步通信

  • 异步通信:增加两条应答线

    • 不互锁:如CPU写主存
    • 半互锁:如多CPU系统下,CPU访问共享存储器
    • 全互锁:如网络通信

    波特率:单位bps(位每秒)

    • 此处可出计算题
  • 半同步通信

    也使用统一时钟,但增设一条等待线 \(\overline{\mathop{WAIT}}\)

  • 分离式通信:常用于大型机

第四章 存储器

4.1 概述

4.1.1 分类

  • 按存储介质:

    • 半导体存储器
    • 磁表面存储器
    • 磁芯存储器
    • 光盘
  • 按存取方式:

    • 随机存储器 RAM
      • SRAM:触发器原理
      • DRAM:电容充放电原理
    • 只读存储器 ROM
    • 串行访问存储器(顺序存取存储器)
      • 磁盘是一种部分串行访问的存储器!
  • 按作用分类:主存、辅存、缓存、Flash。见P70的图。

4.1.2 层次结构

三大主要性能指标

  • 速度
  • 容量
  • 每位价格

层次结构主要体现在 缓存-主存 和 主存-辅存 这两个层次上。现代计算机几乎都有这两个层次,构成了 缓存、主存、辅存 三级存储系统。

虚拟存储器的地址变换工作是由硬件自动完成的,对用户不可见。

4.2 主存储器

4.2.1 概述

主存包括RAM和ROM两部分。

主存到Cache的调动是对程序员完全透明的。

虚拟存储器的调动由操作系统完成,对系统程序员不透明,对应用程序员透明。

大端:低位放高字节

小端:高位放高字节

主存技术指标:

  • 存储容量

  • 存储速度

    • 存取时间 \(T_A\):启动一次存储器操作到完成该操作的全部时间
    • 存取周期 \(T_{MC}\):存储器进行连续两次独立的存储器操作所需的最小间隔时间

    通常 存取周期 > 存取时间

4.2.2 半导体存储芯片简介

译码驱动方式:

  • 线选法:结构简单,一维,适用于容量小的芯片
  • 重合法:结构复杂,二维,适用于容量大的芯片

4.2.3 RAM

SRAM 读周期时序:地址、片选、数据输出

SRAM 写周期时序:地址、片选、写允许、数据输入

DRAM 读周期时序:RAS、WE、CAS、数据输出

DRAM 写周期时序:RAS、WE、数据输入、CAS

​ 也即,后两步的顺序是相反的。

刷新

​ 刷新的单位是行。

  • 集中刷新:在一个规定的刷新周期内,对所有行进行刷新。这段时间 RAM 无法读写,也即存在死区。
  • 分散刷新:将刷新分散到每个存取周期中进行。无死区,但存取周期变长。
  • 异步刷新:二者的结合。顺序刷新各行。

4.2.5 存储器与CPU的连接

存储容量的扩展
  • 字扩展:增加存储字的数量
  • 位扩展:增加存储字长
  • 字、位扩展
连接

这里有一个选存储芯片的题型,可见 P94 下方。

  • 系统程序区选用ROM
  • 用户程序区选用RAM

4.2.6 汉明码

码字:由若干个二进制位组成的序列。

码距:相同长度的码字中,对应二进制位不同的位数。

汉明码具有一位纠错能力。

设欲检测的二进制代码为n位,为使其具有纠错能力,增添k位检测位,则k需满足:

\[2^k\geq n+k+1 \]

已知n,就可求出k的最小值。

这k个检测位被安排在新的码字的第 \(2^{k-1}\) 位上,即第1,2,4,8,16……位。

然后,为每个检测位安排小组,其中第 \(i\) 个小组即 \(C_{2^{i-1}}\) (C表示新的码字)对应的 \(g_i\) 小组满足:

  • \(g_i\) 小组独占第 \(2^{i-1}\)
  • \(g_i\)\(g_j\) 小组共同占有第 \(2^{i-1} + 2^{j-1}\)
  • \(g_i\)\(g_j\)\(g_k\) 小组共同占有第 \(2^{i-1} + 2^{j-1} + 2^{k-1}\)
  • 依此类推。

于是,可以推出

  • \(g_1\) 小组包含1,3,5,7,9,……位
  • \(g_2\) 小组包含2,3,6,7,10,11,12,15,……位
  • \(g_3\) 小组包含4,5,6,7,12,13,14,15,……位
  • \(g_4\) 小组包含8,9,10,11,12,13,14,15,24,……位
  • ……

之后,根据奇偶配置情况决定校验位的值,在配偶原则下,校验位的值应该使得自己组内所有位的异或值为0,反之配奇原则则是1。

4.2.7 提高访存速度的措施

单体多字系统

一次性取多个字,减少CPU访存次数。但对跳转指令不友好,而且要求数据总线宽度成倍增长。

多体并行系统
  • 高位交叉编址:高位地址表示体号,低位地址表示体内地址。合理调动使不同的源访问不同的体,即可并行工作。

    低位交叉存储器连续读取n个字所需的时间 \(t_2=nT\)

  • 低位交叉编址:低位地址表示体号,高位地址表示体内地址。数据分散在多个体中,多个体并行工作。

    低位交叉存储器连续读取n个字所需的时间 \(t_1=T+(n-1)\tau\)

    T:存储周期

    τ:总线传输周期

    n:模块数

4.3 高速缓冲存储器

4.3.1 概述

Cache 与主存之间是字块传送。

有关访存命中率和访存时间的例题可见 P111。

保持 Cache 和主存内容一致的办法:

  • 写直达法:数据同时写入cache和主存。稳妥,但增加访存次数。
  • 写回法:只写cache,不写主存,仅当cache数据需要替换时才写入主存。需要设置额外标志位。

4.3.2 Cache-主存地址映射

重难点!P117

三种映射模式

  • 直接映射(简单,快)
  • 全相联映射(复杂,灵活性好)
  • 组相联映射(上面二者的折中)

三种映射模式主要出 主存地址配置的格式 计算题。

4.3.3 Cache 替换策略

  • 先进先出(FIFO)法(容易实现,但没用)
  • 近期最少使用(LRU)法(效果最好)
  • 随机法(丝毫没有用处)

4.4 辅助存储器

4.4.1 概述

早期磁盘所有磁道上的扇区数相同,即内侧磁道的扇区密度比外侧磁道高,造成了一定程度的浪费。

现代磁盘外道上的扇区比内道数量多,充分利用空间。

磁表面存储器的主要技术指标

  • 记录密度

  • 存储容量

  • 平均寻址时间

    寻址时间 = 找道时间 + 等待时间

    平均寻址时间 = 平均找道时间 + 平均等待时间

    一般平均时间就是简单地将最长时间除以2。

  • 数据传输率

  • 误码率

磁盘地址格式:驱动器号、柱面号、记录面号、扇区号。

  • 如果有一个较大的文件,在一个扇区写不下,那么应该优先改变记录面,而不是优先改变柱面。

4.4.2 磁记录原理和记录方式

磁表面存储器的记录方式
  • 归零制
  • 不归零制
  • “见1就翻”的不归零制
  • 调相制
  • 调频制
  • 改进型调频制

4.4.3 硬磁盘存储器

磁道记录格式
  • 定长记录格式
  • 不定长记录格式
SSD
  • SSD现已加入408考纲,但上课没讲
RAID

冗余磁盘阵列。

4.4.6 循环冗余校验(CRC)码

模2运算的特点是不看进位和借位,加减就是异或。

模2除的上商原则(重要):

  • 部分余数的首位为1时,上1
  • 部分余数的首位为0时,上0
  • 部分余数的位数少于除数的位数时,停止除法,该部分余数就是最后的余数。
  • 也就是说,上商只无脑看首位数字,不比较大小。

引入一种多项式,这种多项式和一个二进制位序列是一一对应的。

比如,1101对应的多项式 \(M(x)\) 为:

\[M(x)=1\cdot x^3+1\cdot x^2+0\cdot x^1+1\cdot x^0 \]

已知输入序列M(x),生成多项式G(x),则求CRC码的步骤如下:

  1. 令 r = G(x)位数 - 1,如G(x) = 1011,4位,则 r = 3。

  2. 将M(x) 左移 r 位。右边补零。

  3. 用模2除的方法计算

    \[\frac{M(x)\cdot x^r}{G(x)} \]

    得到

    \[xxx+\frac{xxx}{xxx} \]

    的形式,其中左边是商,右边是余数。取余数的分子部分。

  4. 将分子部分加到左移后的M(x),即得到CRC码。

第五章 I/O 系统

5.1 概述

5.1.2 输入输出系统的组成

I/O 系统包括:

  • I/O 软件

    • I/O 指令(CPU指令的一部分):操作码、命令码、设备码三个组成部分
    • 通道指令/通道控制字(通道自身的指令)
  • I/O 硬件

5.1.3 I/O设备与主机的联系方式

I/O 设备编址方式

  • 统一编址:减少了主存容量,速度变慢,但无需专用的I/O指令。
  • 不统一编址:需要专用I/O指令。

5.1.4 I/O设备与主机信息传送的控制方式

5种控制方式:

  • 程序查询方式
    • 异步、串行、灵活、慢
  • 程序中断方式
    • 异步、并行、慢
  • DMA方式
    • 窃取的时间一般为一个存取周期
  • I/O通道方式(不考)
  • I/O处理机方式(不考)

5.2 I/O 设备

本节408不考。

  • I/O 设备大致分三类
    • 人机交互设备
    • 信息驻留设备
    • 机-机通信设备
  • 输入设备
    • 键盘
    • 鼠标
    • 触摸屏
  • 输出设备
    • 显示器
      • 字符显示
      • 图形显示
      • 图像显示
    • 打印机
      • 击打式
        • 点阵式(逐字、逐行)
      • 非击打式
        • 喷墨(逐字)
        • 激光(逐页)

5.3 I/O 接口

接口既可以是两种硬设备之间的连接电路,也可以是两个软件之间的共同逻辑边界。

5.3.3 接口类型

  • 按数据传送方式分类
    • 并行接口
    • 串行接口
  • 按功能选择的灵活性分类
    • 可编程接口
    • 不可编程接口
  • 按通用性分类
    • 通用接口
    • 专用接口
  • 按数据传送的控制方式分类
    • 程序型接口
    • DMA型接口

5.4 程序查询方式

D:完成触发器

B:工作触发器

5.5 程序中断方式

中断技术的三大目的

  • 提高计算机的整机效率
  • 应付突发事件
  • 实时控制的需要

INTR:中断请求触发器

MASK:中断屏蔽触发器

EINT:中断允许触发器

5.5.4 I/O 中断处理过程

一次中断处理过程的5个阶段:

  • 中断请求
  • 中断判优
  • 中断响应
  • 中断服务
  • 中断返回

5.5.5 中断服务程序的流程

中断服务程序的4大流程

  • 保护现场:两个含义
    • 保护程序断点,即PC的内容。由中断隐指令完成。
    • 保护通用寄存器和状态寄存器,由中断服务程序完成。
  • 中断服务
  • 恢复现场:出栈指令
  • 中断返回:程序返回指令

开中断的时机:

  • 单重中断:在中断服务程序的最后才开中断
  • 多重中断:在保护现场后、中断服务前即开中断。

5.6 DMA方式

为了分时使用主存,DMA与主存交换数据时采用以下3种方法:

  • 停止CPU访问主存
  • 周期挪用/周期窃取(常用)
    • CPU不访问主存时,无冲突,直接进行DMA。
    • CPU正在访问主存,等主存完成一个存取周期后,CPU让出,DMA访存。
    • CPU和DMA同时请求访存:I/O的请求优先,因为可能丢数据。此时进行周期窃取,窃取1-2个存取周期。DMA结束后,CPU访存。
  • DMA与CPU交替访问主存

5.6.3 DMA的工作过程

DMA传送过程

  • 预处理
  • 数据传输
  • 后处理

5.6.4 DMA接口的类型

  • 选择性DMA接口:适用于快速设备
  • 多路型DMA接口:适用于同时为多个慢速设备服务
    • 链式多路型DMA
    • 独立请求多路型DMA

ASCII是7位二进制码,最后一位作校验位。

第六章 计算机的运算方法

通常称寄存器的位数为机器字长。

6.1 无符号数和有符号数

6.1.1 无符号数

简单

6.1.2 有符号数

  • 原码
  • 反码
  • 补码
    • 按位取反+1的技巧:从后往前找到第一个1,该1不变,前面的所有位(含符号位)取反,最后把符号位去掉。
    • 补码有几位,它的模就是几。
  • 移码
    • 补码和移码的互相转换可以简单地将符号位取反来完成。

要明确不同码制表示的范围。

  • 在整数定点机中,原码和反码可以表示-1;
  • 在小数定点机中,原码和反码不能表示-1。

6.3 数的定点表示和浮点表示

6.2.1 定点表示

容易

6.2.1 浮点表示

难点!

\[N=S\times r^j \]

  • S是尾数,是一个纯小数,即 \(0<|S|<1\)
    • \(r=2\) 时,将尾数(小数部分的)最高位为1的浮点数称为规格化数。
    • \(r=4\) 时,将尾数(小数部分的)最高两位不全为0的浮点数称为规格化数。
    • \(r=8\) 时,将尾数(小数部分的)最高三位不全为0的浮点数称为规格化数。
  • j是阶码,是一个整数。
  • r是基数,一般取 \(2^n\)。最最常用的是2。

规格化:

\(r=2^n\) 时,阶码每减1,尾数就左移n位;阶码每加1,尾数就右移n位。

6.2.4 举例

计算题。主要是定点数和真值转浮点数。

6.2.5 IEEE 754 标准

重点!

IEEE 754 规定,浮点数由1位数符、若干位阶码(含阶符)、若干位尾数组成。第一位的数符决定了这个数字的正负。尾数使用原码表示(因为这里的尾数是无符号数),阶码使用移码表示,阶码的真值要加上127才能得到IEEE 754中的阶码表示。

尾数通常是规格化表示,即最高(小数)位是1,因此这个1一般省略(对于下面两种,一般省略),节省一位空间。IEEE 754中的尾数实际上是把尾数移位成“1.xxxx”的形式,然后去掉1,只保留xxxx的部分。

IEEE 754 常用的浮点数是以下两种:一般只记忆阶码的位数,符号位永远是1位,总位数是32或64,则尾数位数可以推算得到。

符号位 阶码 尾数 总位数
单精度 1 8 23 32
双精度 1 11 52 64

另有一种临时实数,占80位,很少用,此处未列出。

6.3 定点运算

全章最难,应该也是全书最难吧😰

本节介绍定点数的加减乘除、移位运算。

6.3.1 移位运算

逻辑移位
  • 逻辑移位是对无符号数的移位,无论左右移,无论码制(有符号数全当无符号数处理),一律无脑补0。
算术移位
  • 算数移位是对有符号数的移位,规则比较复杂,依赖码制。

    算术移位不管怎么移,符号位永远是不变的。也即移位只对于数值位有效。

    正数无论码制,左右移都一律补0。

    负数稍复杂:

    • 原码:一律补0
    • 反码:一律补1
    • 补码:左移补0,右移补1

6.3.2 加法与减法运算

现代计算机一律采用补码做加减法。因此下面的讨论全是针对补码的。

加法
  • 容易
减法
  • [A-B]补=[A]补+[-B]补
  • 其中[-B]补=[B]补 连同符号位在内取反得到。
溢出判断

​ 在计算机中,真值超出机器字长能表示的范围的现象叫做溢出。

  • 一位符号判溢出(少用)

    • 将两个同号的数相,可能产生溢出。异号相加不会溢出。
    • 将两个异号的数相,可能产生溢出。同号相减不会溢出。
    • 但实际上无论加减,计算时都是两个补码相加的形式,因此只要参与运算的补码的符号相同,而结果又和这个符号不同,就判定为溢出。
    • 计算机中常用符号位进位最高数值位进位进行异或来判断,如果结果是1,则溢出,结果是0则未溢出。
  • 两位符号位判溢出(常用)

    • 引入“变形补码”,有两个符号位:
      • 如果x为正,则其变形补码就是它本身。
      • 如果x为负,则其变形补码是其本身加4。
    • 判断原则:当两个符号位不同时,溢出;否则未溢出。
    • 如果最高符号位产生进位,直接丢掉这个进位。
    • 变形补码的最高符号位是真正的符号位,表示这个数的实际符号。

6.3.3 乘法运算

原码一位乘 P245

原码乘法只计算乘数和被乘数的绝对值,符号位由两个数的符号位异或得来。下面的两位乘也是一样。

  1. 开始,取部分积 \(z_0=0\)
  2. 检查乘数的最低位,如果是1,则部分积加上被乘数的绝对值;如果是0,则部分积不变。
  3. 部分积和乘数都右移一位。
  4. 检查乘数是否已经完全移出,如果是,结束;否则转2。

注意原码一位乘的最后一步是右移。

原码一位乘中的所有右移都是逻辑右移

运算时可能出现绝对值大于或等于1的情况,因此需要增加一位,最高位仍是符号位。

原码两位乘 P247

和原码一位乘的区别在于两位乘一次右移两位。

重要的表格!见 P248 表 6.11

​ 要注意,\(C_j=1\) 时,操作内容是要加上一个 \(x^*\) 的,如果本位操作(由 \(y_{n-1}y_n\) 决定)已经是 \(+2x^*\) 了,那么实际上就要加 \(+3x^*\),就和 \(y_{n-1}y_n=11\) 的情况相同了,于是 \(C_j\) 保持,实际上的最终操作反而是减去 \(x^*\)

减去被乘数实际使用加上被乘数的负补码实现,因此右移两位的操作按补码右移完成。

运算时的绝对值可能大于或等于2,因此需要增加两个符号位,以最高位为真正的符号位。

运算时使用先移(两位)位再加 \(x^*\) 的方法,而不是先加 \(4x^*\) 再移位。二者实际上的作用是等价的,但是前者不需要用到额外的电路,实现简便。

运算时可能出现部分积为负的情况,这是正常的。但是最后的部分积一定是个正数,因为我们做的是绝对值运算。

补码一位乘 P250

补码乘法的符号位也正常参与运算,最终计算得出的符号位是什么就是什么。下面的两位乘也是一样。

  • 被乘数符号任意,乘数符号为正
    • 按照原码乘法的规则运算。其中加和移位按照补码规则计算。
  • 被乘数符号任意,乘数符号位负
    • 把乘数的补码去掉符号位,当成一个正数和被乘数的补码相乘,然后加上被乘数的负补码进行矫正。
  • 被乘数和乘数符号都任意
    • 采用 Booth 算法。规则表详见 P254。部分积取双符号位。
补码两位乘(不考)

难度过大,期末不考

6.3.4 除法运算

原码除法

原码除法和原码乘法一样,符号位不参与运算,参与运算的是绝对值。结果的符号由异或得来。

这里介绍的定点除法运算要求 0 < |被除数| < |除数|,也就是说商一定是一个纯小数。还要保证除数和被除数都不为零。

  • 恢复余数法
    • 每次都减去除数,这是一种试探性的操作。如果得到负数,说明不应该减去除数,于是再加上除数(恢复余数),上商0;如果得到正数,说明应该减去除数,上商1。
    • 第一次上商时,上在整数位上,该位为1时,说明溢出;该位为0时,说明未溢出。
  • 加减交替法
    • 余数 \(R_i>0\) 时,上商1,做 \(2R_i-y^*\) 的运算。
    • 余数 \(R_i<0\) 时,上商0,做 \(2R_i+y^*\) 的运算。
补码除法

只讨论加减交替法。

(待补)

6.4 浮点四则运算

6.4.1 浮点加减运算

两个浮点数阶码不等时,尾数的小数点位置不一样,因此不能直接加减。

步骤:

  1. 对阶
    • 阶码的向阶码的看齐
  2. 尾数求和
    • 按定点加减进行运算
  3. 规格化
  4. 舍入
    • 0舍1入法
    • 恒置1法
  5. 溢出判断

6.5 算术逻辑单元

6.5.1 ALU 电路

ALU是组合电路,即有输入立即产生输出。

6.5.2 快速进位链

  • 并行进位链
    • 单重分组跳跃进位
      • 将n位全加器分成若干小组,小组内的进位同时产生,小组间采用串行进位,又有组内并行、组间串行之称。
    • 双重分组跳跃进位
      • 将n位全加器分成若干大组,每个大组中又包含若干小组,每个小组的最高进位是同时产生的,大组间串行进位。故又有(小)组内并行、(小)组间并行之称。

第七章 指令系统

7.1 机器指令

7.1.1 指令的一般格式

指令 = 操作码 + 地址码

操作码长度可以变化。应尽量使较常用的指令占用较短的操作码,以提高译码速度。

  • 四地址指令

    • 四个地址分别是:第一操作数地址、第二操作数地址、结果地址、下一条指令的地址。

      将下一条指令的地址放在PC中,就可省去,得到三地址指令。

  • 三地址指令

    • 安排同上。

      可以将结果放在ACC中,就得到二地址指令。

  • 二地址指令

    • 两个地址分别是:第一操作数地址、第二操作数地址。
    • 有的机器也可以将操作数地址也作为结果地址,并在完成操作后写入结果地址覆盖操作数。如x86的add、mul等
    • 将一个操作数隐含在ACC中,就得到一地址指令。
  • 一地址指令

    • 唯一的地址是操作数地址。另一个操作数在ACC中,结果仍放ACC。
  • 零地址指令

    • 空操作、停机等指令不需要地址码。
    • 子程序返回、中断返回等指令的地址码隐含在堆栈指针SP中。

7.2 操作数类型和操作类型

7.2.1 操作数类型

地址、数字、字符、逻辑数据等。

7.2.3 操作类型

一个较完善的指令系统应该包含如下几种操作类型:

  • 数据传送
  • 算术逻辑操作
  • 程序控制(如转移)
    • 无条件转移
    • 条件转移
    • 过程调用与返回
  • I/O
  • 其他

7.3 寻址方式

寻址方式:指令寻址、数据寻址

7.3.1 指令寻址

简单。

  • 顺序寻址
  • 跳跃寻址

7.3.2 数据寻址

  • 立即寻址:指令字中的地址码是立即数,直接指出操作数的值
  • 直接寻址:指令字中的地址码是操作数在主存中的地址。
  • 隐含寻址
  • 间接寻址:指令字中的地址码指示出一个主存的位置,该位置保存有操作数在主存中的地址。
    • 相比直接寻址可以支持更大的操作数寻址范围。因为地址码总是占用不到完整的指令字长,但存储字长可以和指令字长一致。
  • 寄存器寻址
    • 指令字中的地址码指出一个寄存器号,操作数保存在这个寄存器内。
  • 寄存器间接寻址
    • 和上面的不同之处在于寄存器中保存的是操作数在主存中的地址,而不是操作数本身。
  • 基址寻址 EA = A + BR,A变,BR不变
    • 隐式:专门设一个基址寄存器BR
    • 显式:用户使用时明确指定一个通用寄存器,用作BR
    • 主要用于为程序或数据分配存储空间,BR的内容一般由OS或管理程序确定。
  • 变址寻址 EA = A + IX,A不变,IX变
    • 主要用于数组。
  • 相对寻址 EA = PC + A
    • 主要用于转移类指令。
  • 堆栈寻址
    • 要求计算机内设有堆栈
    • 软堆栈(用主存+堆栈指针实现)
    • 硬堆栈(用专门的寄存器组实现)

7.4 指令格式举例

重难点!请参考课本 P319-325

向上兼容:高档机能兼容低档机的程序运行

向下兼容:后开发的程序能在较早的机器上运行

7.5 RISC 技术

RISC的主要特点

  • 指令种类少,且多为简单指令。用简单指令的组合实现复杂指令。
  • 指令长度固定,寻址方式种类。指令译码快。
  • 通用寄存器数量多。
  • 一定采用流水线技术
  • 大部分指令在一个时钟周期中完成。
  • 控制器采用组合逻辑控制(而非CISC的微程序控制),延迟小。
  • 采用优化编译技术

第八章 CPU的结构和功能

结构决定功能,而不是反过来。

8.1 CPU的结构

8.1.1 控制器CU的功能

  • 取指令
  • 分析指令
  • 执行指令

8.1.3 CPU的寄存器

  • 控制和状态寄存器(用户不可见)
    • 控制寄存器
      • MAR、MDR、IR:用户不可见
      • PC:用户可见
    • 状态寄存器
      • 状态寄存器
      • PSW寄存器
  • 用户可见寄存器
    • 通用寄存器
    • 数据寄存器
    • 地址寄存器
    • 条件码寄存器

8.2 指令周期

CPU每取出并执行一条指令所需的全部时间称为指令周期。

一个完整的指令周期:

  • 取指 FE
  • 间址 IND
  • 执行 EX
  • 中断 INT

8.3 指令流水

8.3.3 流水线性能

这里可以出计算题。见 P353。

流水线加速比

\[S_p=\frac{m}{1+(m-1)/n} \]

其中,m是流水线段数(级数),n是执行指令的条数。

流水线效率

\[E=\frac{n}{m+n-1}=\frac{S_p}{m} \]

m、n的含义和加速比相同。

8.3.4 流水线中的多发技术

  • 超标量技术:在同一个时钟周期内并发多条独立指令。
  • 超流水线技术:好比将流水线再分段,第一条指令的第一个时钟周期未结束时,第二条指令就开始取指。
  • 超长指令字技术:依赖强大的编译程序,将多条指令组合成一条超长指令来执行。要求更大的Cache。

8.4 中断系统

8.4.2 中断请求标记和中断判优逻辑

中断判优逻辑
  • 硬件实现
    • 链式排队器
    • CPU内部的排队器
  • 软件实现

8.4.3 中断服务程序入口地址的寻找

硬件向量法

用硬件产生向量地址,再由向量地址找到中断服务程序的入口地址。

此法寻找入口地址速度快,在现代计算机中普遍采用。

软件查询法

当查到某一中断源有中断请求时,接着安排一条转移指令,直接指向此中断源的中断服务程序入口地址。这一地址由程序员或系统事先确定。

8.4.4 中断响应

CPU总是在指令执行周期结束后,响应任务中断源的请求。

8.4.6 中断屏蔽技术

中断屏蔽字。此处易出画图题。

第九章 控制单元的功能

9.1 微操作命令的分析

0->ACC:ACC清零

L(ACC)->R(ACC):ACC右移一位

ACC0->ACC0:ACC0是符号位的意思,即保持符号位不变。

运行标志触发器G:G=1时机器运行,G=0时停机。

0->G:机器停机。

Ad(IR)->MAR:IR中指令的地址码部分送MAR

1->R:向主存发读命令。

1->W:向主存发写命令。

M(MAR)->MDR:将MAR所指的内存单元的值读出,放入MDR

MDR->M(MAR):与上面相反

Ad(IR)->PC:用于无条件跳转。将IR中指令的地址码部分送PC

第十章 控制单元的设计

两种办法:组合逻辑设计、微程序设计

10.1 组合逻辑设计

10.2 微程序设计

10.2.3 微指令的编码方式

  • 直接编码(直接控制)方式:含义清晰、速度快、但控存容量需要很大
  • 字段直接编码方式(显式编码):需要译码
  • 字段间接编码方式(隐式编码):
  • 混合编码:将1和2或3昏混用
  • 其他

10.2.5 微指令格式

  • 水平型微指令:效率高、速度快、灵活性强
    • 上面几种编码方式都属于水平型微指令
  • 垂直型微指令:以较长的微程序结构换取较短的微指令结构
posted @ 2022-06-19 20:07  Eslzzyl  阅读(2840)  评论(0编辑  收藏  举报