前导 |
---|
数制与编码 |
存储系统与 I/O |
中央处理器 |
计算机系统概述
冯·诺依曼机:运算器、控制器、存储器、输入/输出设备
- 运算器的核心是算术逻辑单元(ALU)
- CPU:取指、解码、执行
CPU 的性能(执行时间)主要取决于
- 主频(时钟频率)
- 每条指令执行所用的时钟周期数(CPI)
- 指令条数
数据的表示和运算
数制转换
- 以二进制为基准进行与八、十六进制间的转换即可
- 十进制转其他进制:除数取余 + 乘数取整(小数部分)
纠错理论
- 校验码需能指示出错的位置,所以有 $2^k-1\geq n+k$,其中 $k$ 为校验位位数,$n$ 为有效信息位数
- 校验位也可能失真,所以校验位的位置至关重要(防止出现歧义)
校验码
- 奇偶校验码
- 海明校验码:1010 -> 101_0__ -> 1010010
- 循环冗余校验码:移位、相除、商数与余数合并
海明码的设计思路是把校验位置于它纠错时表示的位置,这样校验位出错时校验码纠错的位置刚好就是校验位。以 1010 的四位信息为例,依纠错理论我们需要至少 3 位校验位,即 101_0__,我们记 s 为校验位与数据位异或运算的结果,位长为 3,我们希望经过异或运算,s 的数值可以指示出编码出错的位置,例如 s1 为 1 时表示第 1、3、5、7 位可能出错;s2 为 1 时表示第 2、3、6、7 位可能出错,因此保证编码独热性的运算规则如下:
- $s_1=p_1\oplus d_1\oplus d_3\oplus d_4$
- $s_2=p_2\oplus d_1\oplus d_3\oplus d_4$
- $s_3=p_3\oplus d_2\oplus d_3\oplus d_4$
定点数的表示与运算
- 无符号数
unsigned
- 有符号数:原码、补码、反码
- 正数的补码与原码相同
- 负数的补码为原码取反加一
- 算数移位与逻辑移位:区分在于符号位是否补全
- 强制类型转换:大转小截断,小转大按转换类型选择是否补充符号位
- 大小端对齐问题
浮点数:$N=r^E\times M$,$r$ 为底数,一般为 $2$;$E$ 为阶码,$M$ 为尾数
float
:$1+8+23$,偏置 $\text{bias}=2^{8-1}-1=127$- (搞几个例子康康)
存储系统
- 内存、外存、高速缓冲存储器
- 随机存储器(Random Access Memory):主要用于内存和 Cache,易失性,断电即丢失
- SRAM(static):触发器实现,不会刷新,主要用于高速缓存
- DRAM(dynamic):电容实现,地址复用,会刷新,主要用于内存
- 只读存储器(Read Only Memory):非易失性,断电仍保存,BIOS 存在这里
- MROM(mask):生产即写入,无法修改
- PROM(program):一次可编程
- EPROM:elimination and program,可多次改写,先擦除后写入,写入时间长
- 闪存、SSD
- 4M x 16 位:数据线 16 根,地址线 22 根(DRAM 需减半)
- 主存储器通过数据总线、地址总线和控制总线与 CPU 连接
- 字、位扩展问题:注意数据线和地址线相匹配即可
- 片选与字选
- 交叉编址:体内地址 + 体号,类似于分页
程序访问的局部性原理
- 时间局部性
- 空间局部性
Cache 的工作机制:与操作系统中分页机制相仿
- 地址映射
- 直接映射:简单的线性哈希
- 全相联映射
- 组相联映射:Cache 分组,组间直接映射,组内全相联映射;多路组相联即每组有多少个 Cache 行
- 内存地址:标记位 + 组号 + 块内地址(与 Cache 行大小相等)
- 替换算法
- 随机算法
- FIFO 先进先出
- LRU 最近最少使用
- 写策略
- 全写法:Cache 写命中时,必须把数据同时写入 Cache 和内存
- 写回法:Cache 写命中时,只修改 Cache;被换出时写回内存
- 写分配法:未命中时从内存读取并载入 Cache 后更新
- 非写分配法:未命中时只写入内存修改
虚拟存储器:与操作系统中虚拟内存部分相同
指令系统(汇编)
寻址方式
- 指令寻址
- 顺序寻址:程序计数器(PC)指示
- 跳跃寻址:
jmp func
- 数据寻址
- 直接寻址:地址即数据
- 间接寻址:需从地址中取数据
- 变址寻址:地址可偏移
1 |
|
- CISC:complicated,指令复杂,寄存器少,多采用微程序控制
- RISC:refined,精简,寄存器多,以硬布线控制为主
中央处理器(一些图例很重要)
CPU:运算器 + 控制器
- 运算器:ALU 及其他通用寄存器等
- 控制器:程序计数器(PC)、指令寄存器(IR)、MAR、MDR 等
- 硬布线控制器,数字逻辑电路
- 微程序控制器,编码时互斥性微命令分在同一段内
指令周期
- 取指:根据 PC 从主存中取指令存入 IR
- 间址:取操作数的有效地址,存入 MDR
- 执行:即运算
- 中断:处理中断请求
数据在功能部件之间通过数据通路传送
- MAR 与 MDR
- 数据、地址、控制总线
指令流水线(取指、译码、执行)
- 一般性问题画甘特图求解
- 资源冲突、数据相关(前置)、条件转移(控制)会引起流水线阻塞
总线
总线仲裁:解决多个主设备竞争总线控制权问题
- 链式查询
- 计数器定时查询:计数控制优先级
- 独立请求:需要更多额外的请求允许线
输入/输出系统
磁盘存储器
- 结构:磁头臂,盘片,磁道,扇区,柱面
- 柱面(cylinder)、磁头(head)、扇区(sector):CHS(三维坐标)、LBA(线性编址)定位具体扇区
- 扇区交错:便于读取(因为磁盘始终在旋转)
- 密度:建立映射,逻辑上各个磁道的扇区数相近
独立硬盘冗余阵列(磁盘阵列)
- RAID 0:多个磁盘并联(条带化),读写速度最快;其中任何一块硬盘损坏,则整个组就毁了
- RAID 1:两组以上的 N 个硬盘相互做镜像,可靠性最高
- RAID 1 + 0:RAID 0 的最低组合,将两组镜像并联,每组视为 RAID 1 运作;1 + 0要优于0 + 1
- RAID 0 + 1:与 1 + 0 相反,每组视为 RAID 0 运作
- RAID 5:条带化,算法(奇偶校验)备份分散在其他硬盘上,兼顾各方面,至少需要三块硬盘(通过算法恢复损坏数据)
CPU 与 I/O 设备通信方式
- I/O 端口空间:独立编址,使用专门的 I/O 端口和专门的 I/O 指令与内存通信
- 内存映射 I/O:统一编址,共用统一的地址空间,使用访问内存的方式访问外部设备
I/O 方式
- 程序查询:CPU 与 I/O 串行工作
- 程序中断:CPU 与 I/O 可并行工作
- 中断向量是中断服务程序的入口地址
- DMA(Direct Memory Access):硬件替换