概述
计算机组成结构
- 主存储器:内存
- 辅助存储器:外存(辅存)
CPU 组成
CPU(中央处理单元)由运算器和控制器组成
运算器
- 算数逻辑单元ALU:数据的算数运算和逻辑运算
- 累加寄存器AC:通用寄存器,为ALU提供一个工作区,用来暂存数据
- 数据缓冲寄存器DR:写内存时,暂存指令和数据
- 状态条件寄存器PSW:存状态标志与控制标志
控制器
- 程序计数器PC:存储下一条要执行指令的地址
- 指令寄存器IR:存储即将执行的指令
- 指令编译器ID:对指令中的操作码字段进行分析解释
- 时序部件:提供时序控制信号
冯诺依曼结构 vs 哈佛结构
冯诺依曼结构
也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。特点:
- 一般用于PC处理器,如I3,I5,I7处理器
- 指令与数据存储器合并在一起
- 指令与数据都通过相同的数据总线传输
- DB:数据总线,用于传输数据
- AB:地址总线,用于传输地址
哈佛结构
是一种将程序指令存储和数据存储分开的存储器结构。是一种并行体系结构,主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址,独立访问。特点:
- 一般用于嵌入式系统处理器(DSP, 数字信号处理,Digital Sinal Processing)
- 指令与数据分开存储,可以并行读取,有较高数据的吞吐率
- 有4条总线,指令和数据的数据总线(DB)和地址总线(AB)
嵌入式 - 芯片
层次化存储结构
层次化存储结构
- CPU:容量只有比特位
- Cache:程序员不能对 Cache 操作
- 内存(主存):DRAM vs ROM
- 外存(辅存)
在整个运行过程中,使用局部性原理从而可以运行64G(很大容量)的软件
Cache
- 提高 CPU 数据输入输出的速率,突破冯诺依曼瓶颈,即 CPU 与存储系统间数据传送带宽限制
- Cache 对程序员来说是透明的
- 使用 Cache 改善系统性能的依据是程序的局部性原理(时间局部性 & 空间局部性)
- 时间局部性:指程序中的某条指令一旦执行,不久以后该指令可能再次执行。典型原因是由于程序中存在着大量的循环操作
- 空间局部性:指一旦程序访问了某个存储单元,不久之后,其附件的存储单元也将被访问,即程序在一段时间内所访问的地址可能集中在一定的范围内。典型情况是程序顺序执行
- 工作集理论:工作机是进程运行是被频繁访问的页面集合
- 高命中率 + 快速反应速度
- 在容量确定的情况下,替换算法是影响 Cache 命中率的关键因素。替换算法的时间复杂度影响的是时间效率
主存编址计算
- 存储单元
- 存储单元个数 = 最大地址 - 最小地址 + 1
- 编址内容
- 按字编址:存储体的存储单元是字存储单元,即最小寻址单位是一个字(字长与计算机相关)
- 按字节编址:存储体的存储单元是字节存储单元,即最小寻址单元是一个字节(
1byte == 8bit
)
- 总容量 = 存储单元个数 * 编址内容
- 根据存储器所要求的容量和选定的存储芯片的容量,就可以计算出所需芯片的总数。即总片数 = 总容量 / 每片的容量
-
2^10 = 1024(1KB)
=>8K = 8 * 2 ^ 10bit
2^20 = 2^10 * 2^10(1MB)
2^30 = 2^10 * 2^10 * 2^10(1GB)
-
84000H
=> 表示十六进制 8FFFFH + 1 - 84000 = 90000H - 84000H = C000H = 12 * 16 ^ 3
假设某计算机系统的主存容量为 64MB,采用 字节编址 方式,地址总线宽度为 32位。请回答以下问题:
1. 计算主存的地址范围(用十六进制表示)。
2. 如果该系统的 Cache 采用 直接映射 方式,Cache 大小为 512KB,每个 Cache 行大小为 64B,请计算:
- Cache 的总行数。
- 地址中用于标识 Cache 行的位数。
- 地址中用于标识 Cache 标签的位数。
3. 如果系统采用 分页存储管理,页大小为 4KB,请计算:
- 主存中共有多少页。
- 逻辑地址中页内偏移量占用的位数。
- 逻辑地址中页号占用的位数。
答案
磁盘管理
磁盘
- 存取时间 = 寻道时间(平均定位时间,磁头移动到磁道所需的时间) + 等待时间(转动延迟,等待读写的扇区转到磁头下方所用的时间)
- 平均存取时间(Average Access Time)指磁头找到指定数据的平均时间。数值越小越好
磁盘优化分布存储
题目
示意图
磁盘单缓冲区与双缓冲区读取
题目
示意图
磁盘移臂调度算法
- 先来先服务(FCFS)
- 最短寻道时间优先(SSTF)
- 扫描算法(SCAN,电梯算法):双向扫描
- 循环扫描算法(CSCAN):单向扫描
FCFS
SSTF
数据传输控制方式
- 程序控制(查询)方式:分为无条件传送和程序查询方式两种。方法简单,硬件开销小,但I/O能力不高,严重影响 CPU 的利用率
- 程序中断方式:与程序控制方式相比,中断方式因为 CPU 无需等待而提高了传输请求的响应速度。CPU 与 I/O 并行,断点信息保存在栈中。Case:鼠标 & 键盘
- DMA 方式:为了在主存与外设之间实现高速、批量数据交换而设置的。DMA 方式比程序控制方式与中断方式都高效(DMAC 向总线裁决逻辑提出总线请求,CPU 执行完当前总线周期即可释放总线控制权。此时 DMA 相应,通过 DMAC 通知 I/O 接口开始 DMA 传输)。Case:移动硬盘
- 通道方式
- I/O 处理机
总线
总线
- 同一时刻仅允许一个部件向总线发送消息。否则会产生信号冲突
- 单工:只在一个方向上传输信息
- 半双工:可在两个方向上轮流传输信息
- 全双工:可在两个方向上同时传输信息
- 串行总线传输时波特率是总线初始化时预先定义好的,使用过程中可以改变
- 串行总线是按位(bit)传输数据的,其数据的正确性依赖于校验码纠正
- 串行总线的数据发送和接收可以以软件查询方式或者中断方式工作
CISC & RISC
CISC & RISC
RISC
- 增加寄存器数目,以减少访存次数
- 用硬布线电路实现指令编码,以尽快完成指令译码
流水线技术
指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各个部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度
流水线
流水线执行时间计算
- 流水线周期为执行时间最长的一段
- 流水线执行时间计算公示:一条指令执行时间 + (指令条数 - 1)* 流水线周期
- 理论公式:(t1 + t2 + ... + tk) + (n - 1) * t
- 实践公式:
k * t + (n - 1) * t
流水线
吞吐率(Though Put rate, TP)
指在单位时间内流水线所完成的任务数量和输出的结果数量。公式:
- 流水线最大吞吐率公式:
流水线加速比
完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比(流水线加速比 > 1
)。公式:
校验码
由冗余信息组成
校验码
奇偶校验
由若干位有效信息(如一个字节),再加上一个二进制位(校验位)组成校验码。奇偶校验,可检查1(奇)位的错误,不可纠错
- 奇校验:整个校验码(有效信息位和校验位)中
1
的个数为奇数 - 偶校验:整个校验码(有效信息位和校验位)中
1
的个数为偶数
循环校验码 CRC(Cyclic Redundancy Check)
在 k 位信息码之后拼接 r 位校验码。应用 CRC 码的关键是如何从 k 位信息位简便地得到 r 位校验位(编码),以及如何从 k + r 位信息码判断是否出错。可检错,不可纠错。循环冗余校验码编码规律如下:
- 把待编码的 N 位有效信息表示为多项式 M(X)
- 把 M(X) 左移 K 位,得到 M(X) * Xk,这样空出了 K 位,以便拼装 K 位余数(即校验位)(余数拼接在后面)
- 选取一个 K + 1 位的产生多项式 G(X),对 M(X) * Xk 做模2除
- 把左移 K 位以后得有效信息与余数 R(X) 做模2加减,拼接为 CRC 码,此时的 CRC 码共有 N + K 位
- 把接收到的 CRC 码用约定的生成多项式 G(X) 去除,如果正确,则余数为0;如果某一位出错,则余数不为0。不同的位数出错其余数不同,余数和出错位序号之间有唯一的对应关系
CRC 例
模2除法
指在做除法运算的过程中不计其进(借)位的除法
模2除法
海明校验
校验码位数公式:
- m:已知的信息位位数