目录
1 进制
1.1 进位计数制
二/八/十/十六进制都是进位计数制,相关概念——基数(底数)、数码、位权、数位。
数码:表示基本数值大小的符号
基数:数制可以使用的数码的个数
位权:数制中某一位为1表示的数值大小
数位:一个数码在一个数中的位置,比如个位、十位
数制 | 十进制 | 二进制 | 八进制 | 十六进制 | 备注 |
数码 | 0,1,2...9 | 0,1 | 0,1,2..7 | 0,1,2..9,A,B..F | |
基数 r | 10 | 2 | 8 | 16 | |
位权 | 10^n | 2^n | 8^n | 16^n | n=0,1,2... |
符号 | D | B | O | H |
1.2 进制转换
下午的试题可能考察小数之间的转换。
其他进制→十进制:乘权求和;
十进制→其他进制:取余法;
十进制小数→其他进制:可以先转二进制(小数部分乘2,顺序取整),再转其他进制
1.3 数据存储单位
比特 b, bit :最小的存储单位,表示一个二进制位;
字节 B,Byte : 一个字节等于8个二进制位,是最小;
常用大小: 1GB = 1024MB = 1024 * 1024KB = 2^30B
注:一般计算存储容量的题目中会有较大的数值,可以用1K=2^10来简化计算。
1.4 二进制运算
算术运算:加、减、乘、除;
逻辑运算:与、或、非、异或(相同为0,不同为1);
2 数的表示(★★)
2.1 原码、反码、补码和移码
真值:表示数的实际大小,比如+12,-11;
机器数:在计算机中存储的数据,将符号数值化。
说明 | +1 | -1 | 1+(-1) | 备注 | |
原码 | 符号位+数值位; 最高位为符号,0正1负 | 0000 0001 | 1000 0001 | 1000 0010 | 结果为-2 |
反码 | 正数:=原码; 负数:原码除符号位外取反 | 0000 0001 | 1111 1110 | 1111 1111 | 结果负,转换为原码为 10000 0000 = -0 |
补码 | 正数:=原码 负数:反码最低位+1 | 0000 0001 | 1111 1111 | 0000 0000 | 结果为0 |
移码 | 对补码符号位取反 | 1000 0001 | 0111 1111 | 1111 1110 |
补码:用于计算机中的加减运算、部分机器数的表示和存储;
移码:用于浮点数的阶码。
数值范围 | 整数数值范围 |
原码/反码 | (-2^(n-1) - 1) ~ (+2^(n-1)-1) |
补码/移码 | (-2^(n-1)) ~ (+2^(n-1)-1) |
注:对于8位的二进制数据,补码最小值为 -128的原因:补码表示为最小值为 [1000 0000]补 = -0,而-128 = (-1) + (-127) = [1000 0001]原 + [1111 1111]原 = [1111 1111]补 + [1000 0001]补 = [1000 0000]补,所以使用 -0 表示 -128;
2.2 定点数和浮点数
定点数: 表示数据时小数点位置固定不变;
定点整数:小数点在最低有效数值位之后(隐含),就是纯整数,比如 +12,-11;
定点小数:小数点固定在最高有效数值位之前(最高位数的后面)
浮点数:表示数据时小数点的位置不固定,例如
其中,M为尾数,R为基数(底数),e是阶码;
浮点数在内存中的存储方式
阶符:阶码的符号;
阶码:决定了数值范围;
数符:数的符号,即上面公式中N的符号;
尾数:决定了数值的精度
尾数的小数点向左移一位,阶码+1,右移一位,阶码-1;
3 计算机组成(★★★)
3.1 微处理器结构
冯·诺依曼结构:数据、指令存储器合并;
哈佛结构:数据、指令寄存器分开(吞吐量提高了一倍);
3.2 基本组成(★★★)
计算机基本硬件系统由 运算器、控制器、存储器、输入设备和输出设备构成;其中运算器、控制器以及寄存器组和内部总线集成在一起称为CPU;
运算器:执行所有的算术运算和逻辑运算,相关寄存器有四个:
- 算术逻辑单元 ALU: 专门执行算术和逻辑运算;
- 累加器 AC:暂存运算结果,为ALU提供一个工作区;
- 数据寄存器 DR:缓存指令或数据;
- 状态寄存器 PSW:保存运算结果条件码、中断或系统工作状态;
控制器:负责整个CPU的工作;
- 指令寄存器 IR:保存当前正在执行的指令;
- 程序计数器 PC:保存下一条将要执行的指令地址;
- 地址寄存器 AR:存放当前CPU正在访问的主存单元的地址;
- 指令译码器 ID: 对指令中的操作码进行分析解释。
了解:
- 程序计数器PC:在程序开始执行之前,将程序的起始地址送入PC,该地址在程序加载到内存时确定,因此PC的内容是程序第一条指令的地址;执行指令时,CPU自动修改PC的内容,使其保存下一条将要执行的指令的地址,由于大多数指令都是按顺序执行的,相当于对PC+1。
- 寄存器组:分为专用寄存器和通用寄存器。运算器和控制器的寄存器都是专用寄存器,通用寄存器作用可由程序员指定。
- CPU是依据指令周期的不同阶段来区分二进制的指令和数据,不同周期分别去取指令或数据。
- CPU的性能指标主要有:主频(Hz)、字长(bit)、缓存(b/B)、核心数;评测方法:时钟频率、指令执行、等效指令速度法、数据处理速率、核心程序法、基准测试程序。
3.3 总线系统
总线是连接各个部件的信息传输线,使各个部件共享传输介质,总线分为内部总线、系统总线和外部总线。
系统总线包括 数据总线、地址总线、控制总线;一条总线同一时刻仅允许一个设备向其发送数据,但允许多个设备从总线上接收数据;
数据总线:双向,在CPU和内存之间传输需要处理的数据;
地址总线:单线(CPU --> 内存),用于指定内存中的数据地址;
控制总线:双向,在CPU和其他设备之间传输控制信号;
性能指标:带宽、位宽、工作频率,其中 带宽(b/s) = 位宽(b) * 频率(1/s);
3.4 指令
一条指令由操作码和操作数两部分组成,操作码指出要进行的操作,操作数表示将要被处理的数据及其所在的单元地址。
在计算机中,一条指令就是机器语言的一个语句,由操作码和地址码组成,使用二进制数码表示。
操作码字段 OP | 地址码字段 A |
操作码:指出要进行的操作;
地址码:包含操作数的地址和操作结果的存放地址;
指令格式
执行过程
取指令--分析指令--执行指令,首先从程序计数器PC中的指令地址取出,送入地址总线,CPU依据指令地址去内存中取出指令内容存入指令寄存器IR;然后由指令译码器ID分析指令操作码;最后执行指令。
3.4 寻址方式(★★)
指令寻址方式:有顺序寻址和跳跃寻址方式;
对于操作数,主要有 立即寻址、直接寻址、间接寻址、寄存器直接寻址、寄存器间接寻址、基址寻址、变址寻址、相对寻址 等方式。
基址寻址方式:将基址寄存器的内容加上指令中的形式地址形成操作数的有效地址,可以扩大寻址能力;
变址寻址方式:将变址寄存器的内容加上指令中的形式地址而形成操作数的有效地址。
相对寻址方式:将PC(当前指令地址)加上指令中的形式地址而形成操作数的有效地址。
寻址空间大小:
设定机器字长为 n, 地址位数为 m
寻址方式 | 寻址空间大小 | 说明 |
直接寻址 | 2^m - 1 | 指令中存放的是地址,共m位,则寻址空间 2^m -1 |
间接寻址 | 2^n - 1 | 操作数地址的地址位数=字长,则寻址空间 2^n -1 |
寄存器间接寻址 | 2^n - 1 | 寄存器位数=字长,则寻址空间 2^n -1 |
3.5 指令系统
CISC(Complex Intruction Set Computer):复杂指令级计算机,指令比较复杂且较多,一个指令可以完成一个复杂的功能;代表:X86架构、Intel和AMD的CPU;
RISC(Reduced Instruction Set Computer):精简指令集计算机,指令比较简单且少,一个指令完成一个基本功能,复杂功能通过指令组合完成;代表:ARM架构,移动设备。
类型 | 指令 | 寻址方式 | 实现方式 | 其他 |
CISC | 数量多(200个以上); 可变长,格式不固定; 使用频率差别较大; | 多种 | 微程序控制技术 | 研制周期长; |
RISC | 由CISC精简而来,数量较少; 定长格式,大都是单周期指令; 使用频率接近; 操作寄存器只有load和store | 较少 | 硬布线控制为主,微程序较少; 增加了通用寄存器; 适合采用流水线 | 优化编译; 有效支持高级语言; |
了解:
- RISC编译器的子程序库通常要比CISC子程序库大得多(因为指令少,所以程序要写得多);
2. RISC比CISC更适合LVSI(超大规模集成电路)工艺的规整性要求(因为指令比较少);
3. RISC中采用的流水线技术:超流水线技术、超标量技术、超长指令字技术;
4. CISC系统中的指令可以对主存单元中的数据直接进行处理(CISC可访存指令没有限制),处理速度较慢。
5. 目前绝大多数计算机都是CISC类型(CISC发展早,两者不兼容,短期内难以替代);
6. 特权指令是指具有特殊权限的指令,权限最大,使用不当会破坏系统,因此只能被操作系统执行。计算机运行状态分为系统态和用户态,处于系统态时可以执行特权指令。
7. Burst(突发)传输,指在同一行中相邻的存储单元连续进行数据传输的方式,只要指定起始地址和长度就可以从首地址开始的若干连续单元格实现数据传输。
3.6 计算机体系结构
基于指令流和数据流的多倍性特征将计算机系统分为四种基本类型(flynn分类法):
SISD (Single Instruction Single Data stream) 单指令流单数据流:传统的顺序执行的单处理器计算机,其指令部件每次只对一条指令进行译码,并且只对一个操作部件分配数据;
SIMD (Single Instruction Multiple Data) 单指令多数据流:能够复制多个操作数,并把它们打包在大型寄存器的一组指令集。以同步方式进行,同一时间内执行同一条指令。
MISD (Multiple Instruction Single Data) 多指令单数据流:采用多指令处理单个数据流。只是作为理论模型,并未实际应用;
MIMD (Multiple Instruction Multiple Data) 多指令多数据流:使用多个控制器来异步地开启多个处理器,实现空间上的并行。
4 流水线(★★★)
一种将多条指令重叠进行操作的准并行处理实现技术。
一条指令的执行过程可以分为 取指令-->分析指令-->执行指令
如下图:假设各个过程的执行时间相同,在未使用流水线时,执行3条指令需要 9△t 的时间;使用流水线只需要5△t的时间。
重要概念:
假如一条指令执行需要4个过程,分别为t1=1us, t2=3us, t3=2us, t4=2us,则一条指令执行时间为tk=t1+t2+t3+t4;
流水线周期 :流水线上执行时间最长的过程的时间,上面指令的流水线周期为3us,记为△t;
执行时间:n条指令的执行时间 = 一条指令的执行时间tk + (n-1) * 流水线周期△t;
Tn = tk + (n-1) * ∆t;
吞吐率:单位时间执行的指令条数,等于指令条数/指令执行的总时间;
TP = n / (n条指令执行的时间);
最大吞吐率:1/(△t)
加速比: S = 不使用流水线执行时间/使用流水线执行时间;
了解:
- 每一个工作段(流程)耗时越相近的流水线效率越高;
- 加速比越高,使用流水线产生的效果越好。
- 流水线的执行时间有理论公式和实践公式,优先使用理论公式
理论公式:tk + (n-1) * △t, tk为一条指令执行的时间,△t为流水线周期;
实践公式:k * △t + (n-1) * △t, k表示一条指令有k个过程,△t为流水线周期。
流水线冒险
在某些情况下,下一条指令无法按照预期开始执行,这种情况称为冒险。
数据冒险:当指令在流水线中重叠执行时,后面的指令需要用到前面的指令结果,而前面的指令的结果尚未写会导致的冲突,称为数据冒险(也称为数据相关性);——没等到指令结果
结构冒险:当一条指令需要的硬件还在为之前的指令工作,而无法为这条指令提供服务,那就导致了结构冒险(也称为资源冲突);——硬件部件忙
控制冒险:如果现在要执行哪条指令,是由之前指令的运行结果决定,而现在那条之前的指令的结果还没产生(流水线遇到分支指令或其他可能引起PC指针进行改变的指令所引起的冲突),就导致了控制冒险。——没等到控制命令
5 多级存储器结构(★★)
5.1 存储系统
计算机采用多级存储结构的目的是解决 存储容量、成本 和 速度 之间的矛盾。
两级存储映像:
cache--主存,解决主存与CPU速度不匹配的问题;
主存--外存,解决主存容量不够的问题;
随机存储器RAM:访问任意存储单元所用的时间相同;
顺序存储器SAM:顺序访问,访问一个存储单元时间取决于其物理位置,如磁带;
SRAM:静态随机存储器;
DRAM:动态随机存储器,主存即内存条为DRAM;
5.2 Cache
高速缓存Cache:由 控制部分和存储器(SRAM) 构成,速度远高于主存,接近CPU,存储器中的内容是主存的副本拷贝,对于程序员来说是透明的,控制部分主要判断CPU要访问的数据是否在cache中,在则命中,不在则从主存中取(实际是先拷贝到Cache中);
功能:提高CPU数据的输入输出速率,突破“冯·诺依曼瓶颈”;
理论依据:程序的局部性原理;
实现基础:将主存和Cache划分为大小相同的块/页。
装入缓存时将主存块与Cache块的映射关系存入项链存储表(硬件实现)中。
CPU通过主存地址访存时首先访问Cache(命中可以提高速度,所以其关键指标是命中率),依据主存地址关联存储表 转换为Cahe地址。如果在Cache中没有,才需要访问主存(Cache页置换,置换算法会影响命中率),Cache 的命令率一般要在 90% 以上。
平均系统周期时间: t = h * t1 + (1-h) * t2
其中 h为命中率,(1-h)为失效率(未命中率),t1为Cache周期时间,t2为主存周期时间。
5.3地址映像
5.3.1 直接地址映像和变换
特点:
地址变换电路简单,访问速度快;
空间利用率低,冲突概率高;
对页置换算法依赖度高,且cache空间利用率低,命中率较低
5.3.2 全相联地址映像和变换
特点:
空间利用率高,命中率高;
冲突概率低;
实现复杂,速度慢,适合小容量cache;
5.3.3 组相联地址映像和变换
特点:
直接映像和全相联映像的折中;
实现难度和造价比直接映像高。
知识点:
- 程序执行过程中,cache和主存的映射是由专门的硬件完成的;
- 程序执行过程,cache存储器对程序员是透明的(在计算机技术中,把本来存在的事物或属性,但从某些角度看好像又不存在的概念称为透明性),cache存储器对程序员透明即表示程序员编程时不需要直接管理或干预cache的工作细节。
替换算法:随机替换算法、FIFO(先进先出)算法、近期最少用替换算法、优化替换算法;
6 输入输出控制
IO设备可以分为:
块设备(以块为单位进行读写,可寻址,支持随机访问,如硬盘,CD-ROM);
字符设备(以字符为单位输入输出,不可寻址,如打印机、键盘鼠标);
输入输出的控制方式:
- 程序控制: 无条件传送(外设总是准备好接收或发送数据)、程序查询(需要查询外设状态来判断外设是否准备好);
- 中断方式:避免CPU定期查询I/O系统状态,提高系统性能;
- 直接存储器存取DMA:传输数据块的过程不需要CPU参与,减轻CPU对IO操作的控制,显著提高CPU效率;
- 输入输出通道处理机:可以进一步提高CPU效率;
在一个总线周期结束后,CPU响应DMA请求开始读取数据(DMA是通过总线直接在内存和外设间传输数据);
CPU响应中断请求是在一条指令执行结束时;
在计算机与外设交换数据过程中,不管是程序控制还是中断处理,都需要CPU执行程序来实现;
在内存与IO设备之间传输一个数据块时,采用DMA方式,不需要CPU干涉,只需要CPU在启动和结束时处理,但在DMA传送数据期间,CPU不能使用总线;
7 可靠性和校验码
7.1 计算机可靠性指标
可靠性或可用性:计算机系统能正常工作的时间,可以是能持续工作的时间长度,也可以是一段时间正常工作时间的百分比;
处理能力或效率:吞吐率、响应时间、资源利用率;
指令周期:取出并执行一条指令的时间,指令周期 = n * 总线周期,常见单位MIPS表示每秒处理百万指令数,用于衡量标量机性能。
平均无故障时间 (Mean Time Between Failure, MTBF) = 1/失效率;
平均故障修复时间 (Mean Time To Repair, MTTR) = 1/修复率;
平均失效前时间 (Mean Time To Failure, MTTF) = 运行总时间/故障次数;
系统可用性 = (MTTF/MTBF)*100%
7.2 串并联系统可靠性
如系统有N个模块构成,各个模块的可靠度为R1,R2...RN,则串联系统和并联系统的可靠度为:
对于并联系统,(1-Rx) 表示失效率;
7.3 校验码
码距:两个码组对应位上数字不同的个数(对于二进制,可将两个码组异或后看1的个数),如 001和011码距为1,0010和1000码距为2;码距越大越有利于检错和纠错;
奇偶校验码:在编码中增加校验位使编码中1的个数为奇数(奇校验),增加校验位使编码中1的个数为偶数则为偶校验,码距为2,可检错不可纠错;对于奇校验,可以发现奇数位出错的编码,不能发现偶数位出错;
循环冗余校验码 CRC:利用生成多项式为k个数据的校验码产生r个校验位来进行编码,编码长度为k+r。可检错不可纠错;CRC校验码追加在数据后面;应用于数据通信和磁介质存储中。
海明码:在n个数据位之间的特定位置插入k个校验码来编码,通过扩大码距来实现检错和纠错,使用模二运算,本质是奇偶校验。需要满足:2^k - 1 >= n + k ,其中n代表数据位,k代表校验位。
7.3.1 CRC计算:
使用多项式除法(模二运算)后的余数作为校验字段,若数据信息为n位,则将其左移k位后,被长度为k+1位的生成多项式相除,所得的k位余数即构成k个校验位,构成n+k位编码。
生成多项式的要求:
1.生成多项式的最高位和最低位必须为1;
2.当被传送信息(CRC)任何一位发生错误,被生成多项式做模二运算后应当使余数不为0;
3.不同位发生错误时,应该使余数不同;
4.对余数继续做模二运算,应使余数循环;
例题:信息数据为 1100,生成多项式为 x³+x+1 (即1011),则CRC编码是__________。
- 多项式系数,x³+x+1=1*x³+0*x²+1*x¹+1*xº,取系数为1011,最高位为3次幂,则k=3;
- 将原数据左移k=3位(即后面补3个0)得到1100000,除以系数(模二运算)1011,得到的k=3位余数010就是CRC校验码;
- 原始数据后面接上CRC校验码得到CRC编码 1100010;
7.3.2 海明码计算
本质是奇偶校验,n位数据位需要插入k位校验码,需满足 2^k >= n+k+1
例题:求信息1011的海明码
位数 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
数据位 | 1 L4 | 0 L3 | 1 L2 | 1 L1 | |||
校验位 | r2 | r1 | r0 |
- 根据 2^k >= n+k+1 可得到 k=3,则需要3个校验位,分别在 2º, 2¹, 2²位置
- L1所在位7=2²+2¹+2º,L2所在位6=2²+2¹,L3所在位5=2²+2º,L4所在位 3=2¹+2º
- r2在2²位上,2²被L1,L2,L3用到,则有 r2 = L4⊕L3⊕L2 = 1⊕0⊕1 = 0;
同理:r1 = L4⊕L3⊕L1 = 1⊕0⊕1 = 0;r0 = L4⊕L3⊕L1 = 1⊕1⊕1 = 1 - 则海明码为 001,整个编码为 1010101;