计算机硬件
计算机硬件
qiye计算机硬件组成
1、计算机的基本硬件系统由运算器、控制器、存储器、输入设备和输出设备五大部件组成
运算器和控制器等部件被集成在一起统一称为中央处理单元(CPU)
CPU 作用: 用户数据的加工处理,能完成各种算术、逻辑运算及控制功能存储器是计算机中的记忆设备,分为内部存储器和外部存储器
- 内部存储器:容量小、运算速度快
- 外部存储器:容量大、运算速度慢,可以长期保存数据
输入设备和输出设备合成外部设备(外设),输入设备用于输入原始数据及各种命令,输出设备用于输出计算机运行的结果
中央处理单元
CPU的功能
- 数据处理:CPU对数据进行算术运算及逻辑运算进行处理
- 程序控制:CPU通过执行指令来控制程序的执行顺序
- 操作控制:一条指令需要若干操作信号配合完成,CPU产生的操作信号会送往对应部件,并控制相应部件按指令执行操作
- 时间控制:CPU对指令执行过程中操作信号的出现时间,持续时间及出现时间顺序进行控制
- 对系统内部和外部的中断作出响应,进行相应的处理
CPU的组成
1、CPU由运算器、控制器、寄存器和内部消息总线等部件组成
2、运算器由算术逻辑运算单元(ALU),累加寄存器(AC)、状态条件寄存器(PSW), 数据缓存寄存器(DR)
- 算术逻辑寄存器(ALU):实现对数据的算术运算及逻辑运算
- 累加寄存器(AC):存储源操作数或运算结果
- 状态条件寄存器(PSW): 保存指令运行过程中条件码内容
- 数据缓冲寄存器(DR): 暂时存放内存的指令或数据
3、控制器由 指令寄存器(IR), 程序计数器(PC),地址寄存器(AR),指令译码器(ID)
- 指令寄存器(IR):暂存CPU执行指令
- 程序计数器(PC):存放指令执行地址
- 地址寄存器(AR):保存CPU所访问的内存地址
- 指令译码器(ID):分析指令操作码
3、CPU根据指令周期的不同阶段来区分二进制的指令和数据
- 指令和数据都是以二进制形式进行存储,CPU会根据当前阶段来决定是读取指令还是数据
4、指令周期的基本阶段
- 取指阶段:CPU从程序计数器(PC)指向的内存地址读取二进制内容,并将其解释为取指
- 译码阶段:CPU解析刚刚取出的指令,确定指令类型及和所需的操作数(如寄存器或数据地址)
- 执行阶段:CPU执行指令操作,如进行算术运算或逻辑运算
- 访存阶段:如果指令需要从内存读取或写入数据,CPU会访问数据地址而不是指令地址
- 回写阶段:将执行结果写回寄存器或内存
校验码
校验码是用于校验或纠正数据存储或传输过程中错误的编码技术,它通过在原始数据中添加额外的冗余位来实现错误处理,目的是确保数据的可靠性和完整性,常见的校验码类型有奇偶校验、CRC(循环冗余校验)、海明码、校验和
校验码的工作原理是:发送方计算原始数据的校验码并将其附加到数据中发送;接收方重新计算校验码并与接收到的校验码比较。如果一致,数据可能正确;否则,数据有错误
码距
码距通常指汉明距离,它定义为等长编码字之间对于位不同的数量,如编码字10110和10011的汉明距离为2,因为第3位和第5位不同。
最小码距是一个编码系统中所有可能编码字对之间的最小汉明距离。它决定了编码的错误检测和纠正能力, 校验码的性能直接依赖最小码距,通过增加冗余位,校验码增大了最小码距,从而提高了错误检查和纠错能力
奇偶校验码
添加一个校验位,使得数据位中1的个数为奇数(奇校验)或偶数(偶校验)。只能检测单个错误,无法纠正错误。
- 奇校验:整个数据位中1的个数为奇数,则校验位为0,否则为1
- 偶校验:整个数据为中1的个数为偶数,则校验位为0,否则为1
CRC校验
发送方和接收方事先约定一个生成多项式公式,发送方用原始数据除以这个多项式,将得到的余数(即CRC码) 附加在原始数据的后面一起发送。接收方用收到的数据除以同一个多项式,如果余数为 0,则认为数据传输没有错误;否则,断定有误。CRC只能检错不能纠错
模2运算
- 模2加法:等同于异或运算
- 模2减法:等同于异或运算
- 模2乘法:和普通乘法一样,但加法按模 2 进行
- 模2除法:和普通除法一样,但减法和加法都按模 2 进行(即异或操作)
生成多项式(G)是一个预先定义好的二进制比特串,通常用代数多项式表示,生成多项式的最高位和最低位必须是1,它的位数决定校验码的位数(CRC长度 = G的位数 - 1)例:CRC-8: $x^8 + x^2 + x + 1$ (对应二进制:
100000111)
计算CRC校验码
例:原始数据:11010011, 多项式:$x^3 + x + 1$
1、在原始数据后附加0
对应生成多项式为1011,生成多项式长度为4,所以CRC长度为3, 附加0后的数据是11010011 + 000 = 11010011000
2、进行模2除法
用附加0后的新数据(11010011000)作为被除数,生成多项式作为除数(1011),进行模2除法,从最高位开始,取被除数中数量与除数位数相同的比特位(1101),这部分数据与除数进行模2减法 1101 XOR 1011 = 0110, 从被除数中再下拉一位,形成新的部分1100(跳过最高位为0,直到最高位为1), 得到新的部分与除数进行模2减法 1100 XOR 1011 = 0111, 从被除数中再下拉一位,形成新的部分1110(跳过最高位为0,直到最高位为1), …, 最后得到余数 100,所以CRC码是100,若余数长度不为3,则前面用0补齐
3、组成发送帧
原始数据 11010011, CRC码 100, 发送数据 11010011 + 100 = 11010011100
指令系统
指令系统的组成
指令系统由操作数和操作码两部分组成,操作码决定需要完成的操作,操作数指参与运算的数据及其所在的单元地址
计算机指令执行的过程
- 将程序计数器(PC)中的指令地址取出
- 将指令地址送入到地址总线
- CPU依据指令地址从内存中取出指令将指令存入到指令寄存器(IR)
- 由指令译码器分析指令,分析指令操作码,执行指令
- 取出指令执行所需的源操作数
寻址
指令寻址方式
- 顺序寻址:当执行一段程序时,一条指令接着一条指令地顺序执行
- 跳跃寻址:下一条指令的地址不是由程序计数器给出,而是由本条指令直接提供
操作数寻址方式
- 立即寻址方式:指令的地址码字段直接指出操作数
- 直接寻址方式:由指令的地址指出操作数在内存中的地址
- 间接寻址方式:指令地址码字段指向的存储单元存储的是操作数的地址
- 寄存器寻址方式:指令中的地址码是寄存器的编号
- 基址寻址方式:由基址寄存器的内容 加上 指令中的形式地址而形成操作数的有效地址,有点是可扩大有效范围
- 变址寻址方式:由变址寄存器的内容 加上 指令中的形式地址而形成操作数的有效地址
CISC与RISC
- CISC是复杂指令系统:兼容性强,指令繁多,长度可变,由微程序控制
- RISC是精简指令系统:指令少,使用频率相近,主要依靠硬件实现
| 指令系统类型 | 指令 | 寻址方式 | 实现方式 | 其他 |
|---|---|---|---|---|
| CISC | 数量多,使用频率差别大,可使用变长格式 | 支持多种 | 由微程序控制器实现 | 研制周期长 |
| RISC | 数量少,使用频率相近,定长格式,大部分为当周期指令,操作寄存器,只有Load/Store操作内存 | 支持方式少 | 增加了通用寄存器,使用硬布线逻辑控制为主,适合采用流水线 | 优化编译,有效支持高级语言 |
指令流水线
指令流水线原理
将指令分为不同的段,每段由不同的部位执行,因此产生叠加效果,所有的部位执行不同的段
RISC处理器的经典5级流水线
| 阶段 | 名称 | 主要操作 |
|---|---|---|
| IF | 取指 | 根据程序计数器(PC)从指令缓存中取出指令,PC值增加,指向下一条指令 |
| ID | 译码 | 解析指令,确定操作类型和操作数,中寄存器堆中读取所需的寄存器值 |
| EX | 执行 | 在算术逻辑单元中(ALU)计算,如果是访问存储指令,则计算有效地址 |
| MEM | 访存 | 如果是Load指令,从缓存中读取数据,如果是Store指令, 从缓存中写入数据,其他指令通常跳过(byPass)此阶段 |
| WB | 回写 | 将执行结果(ALU结果或者是内存读取的数据)写回到寄存器堆中的目标寄存器 |
RISC中的流水线技术
- 超流水线技术:通过细化流水线阶段、增加级数和提高主频,让多个指令在时间上更紧凑地重叠执行
- 超标量技术:处理器内增加相同的多套部件,和一套复杂的硬件电器(指令分发单元),负责在每个时钟周期同时从指令缓存中取出多条指令,将他们发射到不同的执行单元去并行执行
- 超长指令字技术:将并行性的发现工作从硬件转移给编译器,通过简化硬件来实行指令并行,将复杂度交给软件(编译器)
流水线时间计算
流水线周期:指令分为不同的执行段,执行时间最长的段为流水线周期
流水线执行时间:$\text{一条指令总执行时间} +(\text{总指令数} - 1)\times \text{流水线周期}$
流水线吞吐率计算:$\text{指令数} \div \text{流水线执行时间}$
流水线的加速比计算:$\text{不适用流水线的执行时间} \div \text{使用流水线的执行时间}$
存储系统
分级存储
计算机采用分级存储是为了解决存储容量、速度和成本之间的矛盾问题
两级存储:cache-主存,主存-辅存(虚拟存储体系)
局部性原理
CPU在运行时,所访问的数据会趋向于在一个局部的地址空间内
- 时间局部性原理:如果一个数据项正在被访问,那么它近期可能会被再次访问,即在相邻的时间里会访问同一数据项
- 空间局部性原理:在最近的将来会用到的数据项地址和现在正在访问的数据项地址很可能是接近的,即相邻空间的地址会被连续访问
Cache
- 高速缓存是用来存储最活跃的程序和数据,直接与CPU打交道
- Cache由控制器和存储器组成,存储器存储数据,控制部分判断CPU所访问的数据是否在Cache中,在则命中,不在则依据一定的算法从主存中替换
地址映射
在CPU工作时,送出的是主存单元地址,而应从Cache中读/写数据,需将主存地址转换成Cache存储器地址,这种地址转换称为地址映射,由硬件自动完成
主存与缓存之间的映射关系
直接映射:每个主存块有且仅有一个对应的缓存行位置。
全相连映射:任一主存块可被载入缓存中的任意一个空闲行。
组组联映射:它是直接映射和全相联映射的折中。缓存被分成若干组,每个组包含多行。一个主内存块可以被放到唯一一个组中的任意一行。
| 特性 | 直接映射 | 全相连映射 | 组组相连映射 |
|---|---|---|---|
| 映射规则 | 一对一 | 多对多 | 一对多(组内多行) |
| 查找方式 | 直接索引 | 并行全比较 | 组内比较 |
| 硬件成本 | 低 | 极高 | 中(取决于组内缓存行) |
| 冲突率 | 高 | 低 | 中 |
Cache替换算法
cache替换算法的目的是为了提高缓存的命中率, 常见的缓存替换算法有:随机替换算法(RAND),先进先出算法(FIFO),最近最少使用算法(LRU),最不常使用算法(LFU),优化替换算法
- 随机替换(RAND):当需要替换时,随机选择一个缓存行进行替换,实现简单,但是未考虑局部性原理,命中率通常很低,性能不稳定
- 先进先出(FIFO):将缓存视为一个队列,新调入的快被放入到队列尾部,需要替换时则淘汰队列头部的快
- 最近最少使用(LRU):基于时间局部性原理,算法会淘汰掉最长时间没有访问过的缓存块
- 最不常使用(LFU):算法会淘汰掉最近时间内访问次数最少的缓冲块
- 优化替换算法:先执行一次程序,统计Cache的替换情况,第二次执行时便使用最有效的方式来替换
命中率及平均内存访问时间计算
当CPU所访问的数据在Cache中时,命中,直接从Cache中读取数据
缓存命中:CPU要访问的数据在Cache中找到。
缓存未命中:CPU要访问的数据不在Cache中,必须从主存(或下一级缓存)中调入。
命中率:一段时间内,缓存命中次数与总访问次数之比。$\text{命中率} = \frac{缓存命中次数}{总访问次数}$
未命中率:一段时间内,缓存未命中次数与总访问次数之比。$\text{未命中率} = \frac{缓存未命中次数}{总访问次数} = 1 - \text{命中率}$
命中率计算:$\text{命中率} = \frac{\text{缓存命中次数}}{\text{缓存命中次数} + \text{缓存未命中次数}}$
未命中率计算:$\text{未命中率} = \frac{缓存未命中次数}{\text{缓存命中次数} + \text{缓存未命中次数}}$
平均时间计算:$\text{平均访问时间} = (\text{缓存命中时间} \times \text{缓存命中率}) + (\text{缓存未命中时间} \times \text{缓存未命中率})$
Cache中读取数据,设读取一次Cache时间为1$ns$,若CPU访问的数据不在Cache中,则需要从内存中读取,设读取一次内存的时间为1000$ns$,若在CPU多次读取数据过程中,有90%命中Cache,则CPU读取一次的平均时间为 $(90% \times 1 + 10% \times 1000)ns$
磁盘
磁盘的结构和参数
磁盘有正反两个盘面,每个盘面有多个同心圆,每个同心圆是一个磁道,每个磁道又划分为多个扇区,数据就存放在一个个扇区中
磁头需要先找到对应的磁道,然后等待磁盘进行周期旋转,旋转到指定扇区,才能读取到对应的数据,因此,会产生寻道时间 和 等待时间,公式为 $\text{存取时间} = \text{寻道时间} + \text{等待时间} (\text{平均定位时间} + \text{转动延迟})$
寻道时间:磁头移动到磁道的时间
等待时间:等待读写的扇区转到磁头下方所用的时间
磁盘调度算法
磁盘数据的读取时间分为 寻道时间 + 旋转时间,即先找到对应的磁道,再旋转到对应的扇区才能读取数据,其中寻道时间耗时最长,需要重点调度,其主要目的是优化磁盘访问顺序,以减少平均寻道时间,从而提到磁盘I/O整体效率
- 先来先服务(FCFS):根据进程请求访问的先后顺序进行调度,简单,公平,但是效率低,如果请求的磁道很分散,磁头会来回移动,导致平均寻道时间很长
- 最短时间寻道时间优先(SSTF):优先选择距离当前磁头位置最近的磁道请求进行处理,可能导致饥饿。如果不断有新的请求到达离当前磁头近的磁道,那么远端的请求可能永远得不到服务。
- 扫描算法(SCAN):又叫电梯算法。磁头在一个方向上移动,直到到达磁盘的另一端,然后调转方向,以此类推
- 循环扫描算法(C-SCAN):是SCAN算法的变种,磁头在一个方向上移动,到达磁盘的另一端后,回到起始端(不处理返途中的请求),然后重新开始扫描
例题:在磁盘上存储数据的排列方式会影响I/O服务的总时间。假设每磁道划分成10个物理块,每块存放1个逻辑记录。逻辑记录R1,R2,…,RI0存放在同一个磁道上,记录的安排顺序如下表所示:
| 物理块 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 逻辑记录 | R1 | R2 | R3 | R4 | R5 | R6 | R7 | R8 | R9 | R10 |
假定磁盘的旋转速度为 30ms/周,磁头当前处在R1的开始处。若系统顺序处理这些记录,使用单缓冲区,每个记录处理时间为6ms,则处理这10个记录的最长时间为(),若对信息存储进行优化分布后,处理 10个记录的最少时间为()
- 磁盘转一圈30ms,每个磁道划分为10个扇区,单个扇区的读取时间为 $30 \div 10 = 3ms$
- 起始磁头处在R1开始出,读取并处理完R1需要$3 + 6 = 9ms$,处理完成后,磁头位于R4开始处(因为处理期间磁盘旋转,使磁头前进2个块)
- 由于系统需要顺序处理这些记录,R4转到R2需要经过八个扇区,$3 \times 8 = 24ms$,随后读取时间3ms和处理时间6ms,所以从R3转到R2,读取并处理完R2的时间是 $24 + 9 = 33ms$,有九个扇区需要这么处理 即 $33 \times 9 = 297ms$,所以最长时间为 $9ms + 297ms = 306ms$
- 进行优化分布后,最短时间为读取并处理完R1,磁头正好位于R2开始处,以此类推,最短时间为 $(3 + 6) \times 10 = 90ms$
输入输出计算
内存与I/O设备接口地址的编码方式
计算机中存在多种内存与接口地址的编码方式,常见的如下
- 内存与接口独立编址:内存地址和接口地址为两个独立的地址空间,访问数据所使用的指令也不同,优点是 I/O设备不占用内存地址,专门的I/O指令使程序意图更清晰,缺点是用于接口的指令较少,功能太弱
- 内存与接口统一编址:内存地址和接口地址为一个公共的地址空间,优点是能用于内存操作的指令,都可直接用于I/O设备,缺点是I/O设备会占用一部分原属于内存的空间,限制系统可支持的最大内存容量,划分空间时,会经常导致内存地址不联连续
计算机与外设间的数据互方式
- 程序控制方式:
- 无条件传送:CPU不查询外设状态,直接进行读写,它假设外设始终处于就绪状态
- 条件传送(程序查询方式):CPU在传输数据之前,不断循环地读取并检查外设的状态寄存器,直到外设处于就绪状态,然后才进行传输
- 程序中断方式:当CPU启动外设后,不再查询状态,而是执行原来的程序,当外设准备好数据传输时,主动向CPU发送中断信号,CPU收到中断信号后,暂停当前正在执行的程序,转去执行一个特定的一个中断服务程序(ISR)来完成数据传输,数据传输完成后,再回到原来被中断的程序继续执行
- DMA方式:为了解决
程序中断方式在大量高速数据传输时开销过大问题而提出的。由一个专门的硬件部件DCMA来接管数据传输工作,CPU只需告诉DCMA数据的起始位置、要传输的数据长度和目标外设,在整个数据块的传输过程中,DCMA直接接管总线,在内存与外设之间直接交换数据,完全不需要CPU干预,传输完成后,DCMA才向CPU发送中断信号,通知CPU操作完成
总线
总线(bus),是指计算机设备和设备之间传输信息的公共数据通道,总线上的所有设备共享,因此可以将计算机内的多种设备连接到总线
从广义上讲,任何两个以上电子元器件的导线都可以称为总线
- 内部总线/片内总线:位于CPU内部
- 连接CPU内部的各个部件,如ALU,寄存器,控制器之间的信息传输通道
- 特点:距离短,数据极快,由CPU设计决定,对用户不可见
- 系统总线/板级总线/内总线,用于连接计算机系统的各大核心部件,通常位于主板上,是数据交换的核心通道,它由三组总线构成
- 数据总线
- 传输内容:指令和数据
- 特点:双向传输,其宽度(位数,如32位,64位)是决定系统性能的关键因素,它决定CPU与其他部件交换数据的位数
- 地址总线
- 传输内容:CPU发出的内存地址和I/O端口号
- 特点:单向传输(从CPU发起),其宽度决定了CPU的寻址能力
- 控制总线:
- 传输内容:各种控制信号,如读写信号,中断信号,时钟信号,复位信号等
- 特点:双向传输(CPU发起或设备向CPU发起),它协调系统中各部件的操作
- 数据总线
- 外部总线/通信总线:
- 用于计算机系统之间,或计算机与外部设备之间的通信
- 实现系统级的互联
- 传输距离较长,速度差异大,通常需要遵循某种协议,如USB






