计算机硬件
校验码
码距
:就单个编码A:00而言,其码距为1
,因为其只需要改变一位就变成另一个编码。在两个编码中,从A码到B码转换所需要改变的位数称为码距
,如A:00要转换为B:11,码距为2
。一般来说,码距越大
,越利于纠错和检错
。奇偶校验码
:在编码中增加1位校验位来使编码中1
的个数为奇数(奇校验)或者偶数(偶校验),从而使码距变为2
。奇校验可以检测编码中奇数个数据位出错,即当合法编码中的奇数位发生了错误时,即编码中的1变成0或者0变成1,则该编码中1的个数的奇偶性就发生了变化,从而检查出错误。但无法纠错
。循环冗余校验码CRC
:CRC只能检错,不能纠错
,其原理是找出一个能整除多项式的编码,因此首先要将原始报文除以多项式,将所得的余数作为校验位加在原始报文之后,作为发送数据发给接收方。
计算机硬件和指令
- 计算机的硬件基本系统由五大部分组成:
运算器
、控制器
、存储器
、输入设备
(如鼠标键盘)、输出设备
(如显示器)。 - 运算器和控制器合并称为
中央处理单元
,即CPU
。 - 存储器分为
内部存储器
(即内存,容量小,速度快,临时存放数据)和外部存储器
(即硬盘、光盘等,容量大,速度慢,长期保存数据)。 - 输入设备和输出设备合并称为
外设
。 - 鼠标键盘等输入设备都是通过
中断
的原理来实现控制,点击后触发中断
,首先进入中断处理程序
。 - 主机:CPU(运算器、控制器)、+主存储器。
- CPU:由
运算器
、控制器
、寄存器组
和内部总线
组成。实现程序控制、操作控制、时间控制、数据处理功能。 - 运算器:由
算术逻辑单元ALU
(实现对数据的算术和逻辑运算)、累加寄存器AC
(运算结果或源操作数的存放区)、数据缓冲寄存器DR
(暂时存放内存的指令或数据)、和状态条件寄存器
PSW(保存指令运行结果的条件码内容,如溢出标志等)组成。执行所有的算术运算,如加减乘除等;执行所有的逻辑运算并进行逻辑测试,如与、或、非、比较等。 - 控制器:由
指令寄存器
IR(暂存CPU执行指令)、程序计数器
PC(存放指令执行地址)、地址寄存器
AR(保存当前CPU所访问的内存地址)、指令译码器
ID(分析指令操作码)等组成。控制整个CPU的工作,最为重要。 - CPU依据指令周期的不同阶段来区分
二进制的指令
和数据
,因为在指令周期的不同阶段,指令会命令CPU分别去取指令或者数据。 - 计算机指令的组成:一条指令由
操作码
和操作数
两部分组成,操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址。 - 在计算机中,操作要求和操作数地址都由
二进制数码
表示,分别称作操作码
和地址码
,整条指令以二进制编码的形式存放在存储器
中。 - 计算机指令执行过程:可分为
取指令
、分析指令
、执行指令
三个步骤。 - 指令寻址方式:
顺序寻址
方式、跳跃寻址
方式。 - 指令操作数的寻址方式:
直接寻址
方式、寄存器寻址
方式、基址寻址
方式、变址寻址
方式、间接寻址
方式、相对寻址
方式。
指令系统CISC和RISC
- CISC是
复杂
指令系统:兼容性强,指令繁多
、长度可变,由微程序实现
。 - RISC是
精简
指令系统:指令少
,使用频率接近,主要依靠硬件实现
(通用寄存器、硬布线逻辑控制)。
区别对比:
比较项目 | CISC | RISC |
---|---|---|
指令长度 | 不固定,长短不一 | 固定,通常为32位或64位 |
指令功能 | 复杂,一条指令可完成多种操作,如同时进行算术运算和内存访问 | 简单,一条指令一般只完成一个基本操作,如加法、减法等 |
指令周期 | 长,执行一条复杂指令可能需要多个时钟周期 | 短,大多数指令能在一个时钟周期内完成 |
寻址方式 | 丰富,包括寄存器间接寻址、变址寻址、相对寻址等多种方式 | 较少,通常主要采用寄存器寻址等简单方式 |
指令数量 | 多,包含大量不同功能和格式的指令 | 少,选取使用频率高的简单指令 |
硬件复杂度 | 高,需要复杂的硬件电路来支持指令的译码和执行 | 低,硬件结构相对简单,易于设计和实现 |
编译难度 | 编译程序相对复杂,需要处理各种指令格式和功能 | 编译程序相对简单,优化目标明确 |
应用场景 | 适用于需要处理复杂任务的通用计算机,如服务器、大型机等 | 常用于对实时性要求高、注重运算速度的场景,如嵌入式系统、移动设备等 |
指令的流水处理
- 流水线原理:将指令分成不同段,每段由不同的部分去处理,因此可以产生叠加的效果,所有的部件去处理指令的不同段。
- RISC中的流水线技术:
超流水线
(在每个机器周期内能完成一个甚至两个浮点操作,以时间换空间)、超标量
(内装多条流水线同时执行多个处理,以空间换时间)、超长指令字
VLIW(同时执行多条指令,发挥软件作用)。 - 流水线周期:指令分成不同执行段,其中
执行时间最长的段
为流水线周期
。 - 流水线执行时间:1条指令总执行时间+(总指令条数-1)*流水线周期。
- 单缓冲区和双缓冲区:一般来说,能够同时执行的阶段就是流水线的
独立执行
阶段;只能独立执行的阶段应该合并为流水线中的一个独立执行阶段。 - 流水线吞吐率计算:吞吐率即单位时间内执行的指令条数。
公式:指令条数
/流水线执行时间
。 - 流水线的加速比计算:加速比即使用流水线后的效率提升度,即比不使用流水线快了多少倍,越高表明流水线效率越高。
公式:不使用流水线执行时间/使用流水线执行时间。
存储系统
- 计算机存储结构层次图
从上到下,存储设备的速度逐渐降低,而容量逐渐增大 。 - 计算机采用分级存储体系的主要目的:是为了解决
存储容量
、成本
和速度
之间的矛盾问题。 - 两级存储映像为:
Cache-主存
、主存-辅存
(虚拟存储体系)。 - 存储器的分类,按存储器所处的位置分:
内存
、外存
。 - 存储器的分类,按存储器构成材料:磁存储器(磁带)、半导体存储器、光存储器(光盘)。
- 存储器的分类,按存储器的工作方式:
可读可写存储器
(RAM)、只读存储器
(ROM只能读,PROM可写入一次,EPROM和EEPOM既可以读也可以写,只是修改方式不用)。 - 存储器的分类,按存储器访问方式:按
地址访问
、按内容访问
(相联存储器)。 - 存储器的分类,按寻址方式:
随机存储器
(访问任意存储单元所用时间相同)、顺序存储器
(只能按顺序访问,如磁带)、直接存储器
(二者结合,如磁盘,对于磁道的寻址是随机的,在一个磁道内则是顺序的)。 局部性原理
:在CPU运行时,所访问的数据会趋向于一个较小的局部空间地址内。(例如循环操作,循环体被反复执行)- 时间局部性原理:如果一个数据项正在被访问,那么在近期它很可能会被再次访问,即在
相邻的时间
里会访问同一个数据项。 - 空间局部性原理:在最近的将来会用到的数据的地址和现在正在访问的数据地址很可能是相近的,即
相邻的空间地址
会被连续访问。 - 高速缓存Cache:用来存储当前最活跃的程序和数据,直接与CPU交互,位于
CPU和主存
之间,容量小,速度为内存的5-10倍,由半导体材料构成。其内容是主存内存的副本拷贝,对于程序来说是透明的。 - Cache由
控制部分
和存储器
组成,存储器存储数据,控制部分判断CPU要访问的数据是否在Cache中,在则命中,不在则依据一定的算法从主存中替换。 - 地址映射方法:在CPU工作时,送出的是主存单元的地址,而应从Cache存储器中读/写信息。这就需要将
主存地址
转换为Cache存储器地址
,这种地址的转换称为地址映像
,由硬件自动完成
映射。 - 地址映射方法分为下列三种方法:
映射方法 | 基本原理 | 优点 | 缺点 |
---|---|---|---|
直接映像 | Cache与主存等分成块,主存块与Cache块号相同才能命中 | 地址变换简单,硬件实现容易 | 灵活性差,容易造成Cache资源浪费,块冲突概率较高 |
全相联映像 | 主存任意一块可与Cache任意一块对应 | 最不容易发生块冲突,能充分利用Cache空间 | 地址变换复杂,速度慢,需要大量比较电路,硬件成本高 |
组相联映像 | Cache和主存先分块再分组,组间直接映像,组内全相联映像 | 结合了直接映像和全相联映像的优点,在地址变换复杂度和块冲突概率之间取得平衡 | 需要一定的硬件复杂度来实现组内的全相联查找和替换算法 |
- 命中率及平均时间:
Cache存储器的大小一般为K或者M单位,很小,但是最快,仅次于CPU中的寄存器,而寄存器一般不算作存储器,CPU与内存之间的数据交互,内存会先将数据拷贝到Cache里,这样,根据局部性原理,若Cache中的数据被循环执行,则不用每次都去内存中读取数据,会加快CPU工作效率。
因此,Cache有一个命中率的概念,即当CPU所访问的数据在Cache中时,命中,直接从Cache中读取数据,设读取一次Cache时间为1ns,若CPU访问的数据不在Cache中,则需要从内存中读取,设读取一次内存的时间为1000ns,若在CPU多次读取数据过程中,有90%命中Cache,则CPU读取一次的平均时间为(90%1+10%1000)ns,很容易理解。 - 虚拟存储器技术是将很大的数据分成许多较小的块,全部存储在
外存
中。运行时,将用到的数据调入主存中,马上要用到的数据置于缓存
中,这样,一边运行一边进行所需数据块的调入/调出。 - 对于应用程序来说,就好像有一个比实际主存空间大得多的虚拟主存空间,基本层级为:
主存—缓存—外存
。与CPU—高速缓存Cache—主存
的原理类似。但虚拟存储器中程序无需考虑地址映像关系,由系统自动完成
,因此对于程序来说是透明的。其管理方式分为页式
、段式
、段页式
。 - 磁盘结构和参数:磁盘有正反两个盘面,每个盘面有多个同心圆,每个同心圆是一个
磁道
,每个同心圆又被划分为多个扇区,数据就被存放在一个个扇区
中。 - 公式为:存取时间=寻道时间+等待时间(平均定位时间+转动延迟)。
注意:寻道时间是指磁头移动到磁道所需的时间;等待时间为等待读写的扇区转到磁头下方所用的时间。 磁盘调度算法
:磁盘数据的读取时间分为寻道时间+旋转时间,也即先找到对应的磁道,而后再旋转到对应的扇区才能读取数据,其中寻道时间耗时最长,需要重点调度。
1)先来先服务
FCFS:根据进程请求访问磁盘的先后顺序进行调度。
2)最短寻道时间优先
SSTF:请求访问的磁道与当前磁道最近的进程优先调度,使得每次的寻道时间最短。会产生“饥饿”现象,即远处进程可能永远无法访问。
3)扫描算法
SCAN:又称“电梯算法”,磁头在磁盘上双向移动,其会选择离磁头当前所在磁道最近的请求访问的磁道,并且与磁头移动方向一致,磁头永远都是从里向外或者从外向里一直移动完才掉头,与电梯类似。
4)单向扫描调度算法
CSCAN:与SCAN不同的是,其只做单向移动,即只能从里向外或者从外向里。
输入输出
- 计算机系统中存在多种内存与接口地址的编址方法,常见的是下面两种:内存与接口地址
独立编址
和内存与接口地址统一编址
。 程序控制
(查询)方式:CPU主动查询外设是否完成数据传输,效率极低
。程序中断
方式:外设完成数据传输后,向CPU发送中断,等待CPU处理数据,效率相对较高
。中断响应时间指的是从发出中断请求到开始进入中断处理程序;中断处理时间指的是从中断处理开始到中断处理结束。中断向量提供中断服务程序的入口地址。多级中断嵌套,使用堆栈来保护断点和现场。DMA
方式(直接主存存取):CPU只需完成必要的初始化等操作,数据传输的整个过程都由DMA控制器来完成,在主存和外设之间建立直接的数据通路,效率很高
。在一个总线周期结束后,CPU会响应DMA请求开始读取数据;CPU响应程序中断方式请求是在一条指令执行结束时;区分指令执行结束和总线周期结束。
总线
- 总线从广义上讲,任何连接两个以上电子元器件的导线都可以称为总线,通常分为以下三类:
内部
总线、系统
总线、外部
总线。 - 内部总线:内部
芯片级
别的总线,芯片与处理器之间通信的总线。 - 系统总线:
板级
的总线,用于计算机内各部分之间的连接,具体分为数据总线(并行数据传输位数)、地址总线(系统可管理的内存空间的大小)、控制总线(传送控制命令)。代表的有ISA总线、EISA总线、PCl总线。 - 外部总线:
设备一级
的总线,微机和外部设备的总线。代表的有RS232(串行总线)、SCSI(并行总线)、USB(通用串行总线,即插即用,支持热插拔)。 并行总线
适合近距离``高速
数据传输,串行总线
适合长距离
数据传输,专用总线在设计上可以与连接设备实现最佳匹配。- 总线计算:总线的时钟周期=时钟频率的倒数;总线的宽度(传输速率)=单位时间内传输的数据总量/单位时间大小。