1. 计算机硬件组成
计算机基本硬件系统由 运算器、控制器、存储器、输入设备和输出设备 5 大部件组成
- 运算器和控制器等部件被集成在一起统称 cpu
-
- cpu 组成:运算器、控制器、寄存器组和内部总线等部件
- 存储器分为内部存储器和外部存储器
-
- 内部存储器:速度快,容量小。一般用于临时存放程序、数据等
- 外部存储器:速度慢,容量大。可以长期保存程序和数据
- 输入设备和输出设备统称为外设
-
- 输入设备:输入原始数据及各种命令
- 输出设备:用于输出计算机运行的结果
2. 校验码
2.1. 奇偶校验码
在编码中增加 1 位校验位来使编码中 1 的个数为奇数(奇校验)或偶数(偶校验)
- 奇校验:编码中,含有奇数个 1,发送给接收方,接收方收到后,会计算收到的编码有多少个 1,如果是奇数个,则无误,是偶数个,则有误
- 偶校验同理,只是编码中有偶数个 1,由上述,奇偶校验只能验 1 位错,并且无法纠错
2.2. CRC(循环冗余校验法)
使用 CRC 编码,需要先约定一个生成多项式 G(x),生成多项式的最高位和最低位必须是 1
生成校验码思路:在原始信息位后追加若干校验位,使得追加的信息能被 G(x)整除。接收方接收到带校验位的信息,然后用 G(x) 整除。余数为 0,则没有错误,反之则认为发生错误
解题步骤(假设原始信息为 10110,多项式为 G(x) = x^4 + x + 1 ):
- 通过多项式 G(x) 计算出除数。x 的幂指数存在的位置为 1,不存在的位置为 0。 例如 G(x) = x^4 + x + 1,存在 x^4,x^1,x^0,总共有 5 位,第 0 位,第 1 位和第 4 位为 1,其余位置为 0。最后结果为:10011
- 在原始信息位后添 0,多项式的最高阶为 4,则添加 4 个 0。结果为:10110 0000
- 第二步生成的串和第一步生成的除数进行模 2 除法运算(不进位也不借位的除法运算),即 10110 0000 / 10011
- 得到最后的校验码结果为 原始信息 + 除法结果 = 10110 1111。(ps:如果余数位数不足,则在余数左边用 0 补齐。如果求得余数为 11,位数为4,则补两个 0 得到 0011)
3. 指令系统
CISC 是复杂指令系统,兼容性强,指令繁多,长度可变,由微程序实现
RISC 是精简指令系统,指令少,使用频率接近,主要依靠硬件实现(通用寄存器、硬布线逻辑控制)
| 指令系统类型 | 指令 | 寻址方式 | 实现方式 | 其它 |
|---|---|---|---|---|
| CISC(复杂) | 数量多,使用频率差别大,可变长格式 | 支持多种 | 微程序控制技术 | 研制周期长 |
| RISC(精简) | 数量少,使用频率接近,定长格式,大部分为单周期指令 | 支持方式少 | 增加了通用寄存器,硬布线逻辑控制为主,适合采用流水线 | 优化编译,有效支持高级语言 |
3.1. RISC 流水线时间计算
3.1.1. 流水线周期
指令分为不同执行段,其中执行时间最长的段为流水线周期
3.1.2. 流水线执行时间
1 条指令总执行时间 + (总指令条数 - 1) * 流水线周期
3.1.3. 流水线吞吐率计算
吞吐率即单位时间内执行的指令条数
公式:指令条数 / 流水线执行时间
3.1.4. 加速比计算
加速比即使用流水线后的效率提升度,即比不使用流水线快了多少倍,越高表明流水线效率越高
公式:不使用流水线执行时间 / 使用流水线执行时间
4. 存储系统
计算机采用分级存储体系的主要目的是为了解决存储容量、成本和速度之间的矛盾问题
速度由快到慢如下:
CPU 内部通用寄存器 > Cache > 主存储器 > 联机硬盘存储器 > 脱机光盘、硬盘存储器
- 高度缓存 cache 用来存储当前最活跃的程序和数据,直接与 CPU 交互,位于 CPU 和主存之间,容量小,速度快,对于程序员来说是透明的
- cache 由控制部分和存储器组成,存储器存储数据,控制部分判断 CPU 要访问的数据是否在 cache 中,在则命中,不在则依据一定的算法从主存中替换
4.1. 地址映射
在 cpu 工作时,送出的是主存单元的地址,而应从 cache 存储器中读/写信息。这就需要将主存地址转换为 cache 存储器地址,这种地址的转换称为地址映像,由硬件自动完成映射。分为以下三种方法:
- 直接映像:将 cache 存储器等分成块,主存也等分成块并编号。主存中的块与 cache 中的块的对应关系是固定的,二者块号相同才能命中。地址变换简单但不灵活,容易资源浪费
- 全相联映像:同样都等分成块并编号。主存中任意一块都与 cache 中任意一块对应。因此可以随意调入 cache 任意位置,但地址变换复杂,速度较慢。因为主存可以随意调入 cache 任意块,只有当 cache 满了才会发生块冲突,是最不容易发生块冲突的映像方式
- 组组相连映像:前面两种方式的结合,将 cache 存储器和主存先分块再分组,组件采用直接映像,即主存中组号与 cache 中组号相同的组才能命中,但是组内全相联映像,也即组号相同的两个组内的所有块可以任意调换
4.2. 磁盘调度算法
- 先来先服务 FCFS:根据进程请求访问磁盘的先后顺序进行调度
- 最短寻道时间优先 SSTF:请求访问的磁道与当前磁道最近的进程优先调度,使得每次的寻道时间最短。会产生饥饿现象,即远处进程可能永远无法访问
- 扫描算法 SCAN:又称电梯算法,磁头在磁盘上双向移动,其会选择离磁头当前所在磁道最近的请求访问的磁道,并且与磁头移动方向一致,磁头永远都是从里向外或者从外向里一直移动完才掉头,与电梯类似
- 单向扫描调度算法 CSCAN:与 SCAN 不同的是,其只做单向移动,即只能从里向外或者从外向里
5. 输入输出技术
计算机和外设间的数据交互方式:
- 程序控制(查询)方式:cpu 主动查询外设是否完成数据传输,效率极低
- 程序中断方式:外设完成数据传输后,向 CPU 发送中断,等待 CPU 处理数据,效率相对较高
- DMA 方式(直接主存存取) :CPU 只需完成必要的初始化等操作,数据传输的过程都由 DMA 控制器来完成,在主存和外设之间建立直接的数据通路,效率很高
在一个总线周期结束后,cpu 会响应 DMA 请求开始读取数据;CPU 响应程序中断方式请求是在一条指令执行结束时
6. 总线
- 内部总线:内部芯片级别的总线,芯片与处理之间通信的总线
- 系统总线:板级总线,用于计算机各部分之间的连接。具体分为数据总线(并行数据传输位数),地址总线(系统可管理的内存空间的大小),控制总线(传送控制命令)。
- 外部总线:设备一级的总线,微机和外部设备的总线。代表有:RS232(串行总线),SCSI(并行总线),USB(通用串行总线,即插即用,支持热插拔)
并行总线是和近距离高速数据传输,串行总线适合长距离数据传输,专用总线在设计上可以与连接设备实现最佳匹配
总线计算:总线的时钟周期 = 时钟频率的倒数;总线的宽度(传输速率)= 单位时间内传输的数据总量 / 单位时间大小