数据表示
进制转换
二进制,八进制,十进制,十六进制 之间的转换;
其中二进制可与八进制和十六进制之间进行快速转换:
- 二进制转八进制,将数以每3位分开,取每3位对应的八进制的数,然后拼接在一起,即为转换后的八进制数。
- 二进制转十六进制,以每四位分开,然后取十六进制数值,拼接一起即可。
十进制转R进制使用短除法:
除基取余法
码制
原码
一个符号位 + 二进制数原值
反码
正数的反码:与原码相同
负数的反码:符号位不变,数值位按位取反
补码
正数的补码:与原码相同
负数的补码:反码 +1
计算机中做运算时通常用补码来进行运算,而非原码。
移码
只用于浮点数的解码
移码:补码的符号位按位取反的结果。
浮点数的表示
逻辑运算
校验码
奇偶校验
海明校验
CRC冗余校验
CPU组成
复杂指令(CISC)与精简指令(RISC)
流水线技术
浮点数
浮点数:尾数 * 2^阶码
如 1.25 * 2 ^ 6
浮点数的运算:先进行对阶(小数向大数看齐),然后尾数相加,最后格式化(0.5-1).
校验码
码距:任何一种编码都由许多码字构成,任意两个码字之间最少变化的二进制位数就称为数据校验码的码距。
比如{11, 00} 的码距为2
比如{11,00,10,01} 的码距为1
所谓的校验一般都是通过扩大码距来校验的,因此一般的校验方法的码距都大于1,等于1的无法检错。
比如规定的有效信息有{110,001},那如果收到的信息为111,则证明这是一个错误的信息。
奇偶校验码
即奇校验和偶校验;一般拼接在头部;
可检错,不可纠错;
在原有信息中增加冗余信息,信息位 + 校验位
根据确定二进制中的1的个数为奇数还是偶数来进行校验。
奇校验:整个校验码(有效信息位和校验位)中“1”的个数为奇数;
偶校验:整个校验码(有效信息位和校验位)中“1”的个数为偶数;
如0代表男,1代表女,则
- 奇校验为:01(男 1个1) 10(女 1个1)
- 偶校验为:00(男 0个1) 11(女 2个1)
奇偶校验:有一定局限性。
在通信过程中,通常认为只有一个位出错。
CRC循环冗余校验码
可检错,不可纠错;
拼接在信息位尾部;
CRC的编码方式:在k位信息码之后拼接r位校验码;
r位校验码是用生成多项式生成的;
把接收的CRC码用约定的生成多项式G(X)去除模二除法,若余数为0则正确。
海明校验码
即可检错,又可纠错;
插在信息位中间;实际为分组的奇偶校验;
多组分组校验,交叉校验,可确定交叉位点,即可定位出错位置。
海明校验位的求取公式:
2^r >= m + r + 1;
其中,m 为信息位个数,可求出校验码位数的最小值 r 。
若 m = 16,即有16位信息位,则 r >= 5即可。
CPU的组成
运算器和控制器
在CPU、内存、外存、输入输出设备之间有:
- 数据总线
- 控制总线
- 地址总线
运算器包括
- 算数逻辑单元ALU 进行算术和逻辑计算
- 累加寄存器AC :ALU的工作区,存放运算中间值
- 数据缓冲寄存器DR 写内存时,暂存指令或数据
- 状态条件寄存器PSW 存状态标志或控制标志
控制器:
- 程序计算器PC 存放指令的地址
- 指令寄存器IR 存放指令
- 指令译码器ID 翻译指令
- 时序部件 提供时序控制信号
寻址方式
指令的基本格式:操作码OP + 地址码字段A1A2…
寻址方式:
- 立即寻址:操作数直接在指令中
- 直接寻址: 指令中放操作数的地址
- 间接寻址: 指令中放的地址,指向操作数的地址
- 寄存器寻址: 寄存器中存放操作数
- 寄存器间接寻址:寄存器中存放操作数的地址
CISC与RISC
指令系统类型 | 指令 | 寻址方式 | 实现方式 | 其他 |
---|---|---|---|---|
CISC: complex | 指令数量多,使用频率差别大,可变长, | 寻址方式多, | 微程序控制技术 | 研制周期长 |
RISC: reduce | 指令数量少,使用频率接近,定长,操作寄存器, | 寻址方式少, | 增加了通用寄存器,硬布线逻辑控制为主;适合采用流水线 | 优化编译,有效支持高级语言 |
流水线技术
相关参数计算:流水线执行时间计算,流水线吞吐率,流水线加速比,流水线效率
流水线是指在程序执行时,多条指令重叠进行操作的一种准并行处理实现技术。
对于指令:有取指(获取指令),分析,执行的操作流。
在实际处理时,可紧凑安排以节省时间(利用时间):
第一条指令的完成需要经过取指、分析、执行3个步骤,在第一条指令进行分析时,第二条指令开始进行取指。第一条指令的完成时间称为流水线的建立时间,建立后,每经过一个时间片段就完成一个指令,这里执行时间最长的一个时间片称为流水线周期。比如取值3ms 分析2ms 执行4ms 则此处的流水线周期就是4ms。
流水线吞吐率的计算
流水线吞吐率 = 完成的指令条数 / 流水线执行完成的时间
最大吞吐率 = n / (k + n -1)t = 1 / t
存储系统
考点1:层次化存储体系
考点2:Cache
考点3:主存编址计算
1、层次化存储体系
CPU - Cache - 内存(主存) - 外存(辅存)
从内到外,可存放的数据量越来越大。
位 - M - 8G - 1T
从内到外,读取的速度越来越慢,扩展所需要的成本也越低。
如64位的CPU要读取一个60G的游戏,无法直接读取全部数据,而是将数据切分开来,分块读取。并将相关联的数据和程序都放在一起,方便接下来使用。
将数据从外存读到内存是操作系统来做的,从内存到Cache、从Cache到CPU是硬件来读取的。
局部性原理是层次化存储结构的支撑。
时间局部性:刚刚被访问的内容,立即又被访问;(对应程序中的循环体)
空间局部性:刚刚被访问的内容,临近空间很快又被访问;(对应程序中的顺序执行)
内存 + 外存 : 虚拟存储器,虚拟存储器将内存与外存按找一定规则进行编址,当访问内存不够时,会去外存中找。看起来像是内存包含着外存,因此称为虚拟存储体系。
内存 + 外存 + Cache : 三级存储体系;
存储器的分类:
按存储方式分类:
(1) 按内容存取
相联存取器 Cache
按照内容的相关性存放于临近的位置
(2) 按地址存取
随机存取存储器 如内存
顺序存取存储器 如磁带
直接存取存储器(结合了随机和顺序存取) 如磁盘 有移臂调度和旋转延迟的过程,分别对应随机和顺序存取
按照工作方式分类:
(1) 随机存取存储器 RAM (如内存DRAM)数据会掉电丢失(手机重启解决问题的原因)(DRAM 动态 定时刷新 成本低;SRAM 静态 成本高)
(2) 只读存储器 ROM (如BIOS 操作系统等) 数据掉电保留
2、Cache
Cache是为了解决CPU与内存之间的速度、容量不匹配的问题;
Cache是访问速度最快的层次(若有寄存器则寄存器最快;
使用Cache改善系统性能的依据是局部性原理(时间局部性和空间局部性);
如果需要访问的数据一直在Cache中,则性能极高,Cache的命中率与系统性能有很大关系。
Cache的内容是从主存中复制过来的,Cache与主存的内容之间是有映射关系的,该映射关系称为地址映射。
主存与Cache之间的地址映射是由硬件直接完成的。
映射关系有三种:
- 直接相联映像:硬件电路较简单,但冲突率较高;
- 全相联映像:电路难于设计和实现,只适用于小容量的Cache,冲突率较低;
- 组相联映像:直接相联映像与全相联映像的折中;
(0)如内存1G,分为2048页,每页512KB,Cache 8M,分为16页,每页512KB。那内存数据读取到Cache中,就是要把2048个页的数据放置在16个页中。将内存的2048页的数据根据每16页为一个区分为128个区,每个区中有0-15共16个页。
(1)直接相联映射就是将内存中数据每个区的0号页到15号页,与Cache中的0号页到15号页一一对应,即主存中每个分区的0号页的内容只能读取到Cache中0号页的区域,这样电路设计很简单,但是冲突率很高,即,当第一次读取数据取到了第一分区的0号页中的内容,此时Cache中0号页已被占用,但1-15号页仍然是空置,若下次希望读取的数据的内容在二号(或其他号)分区的0号页,则发生冲突无法读取,因为规则规定只能按找页码对应来读取。这时就无法从Cache中读取数据,只能从内存中读取,效率低。
(2)而全相联映像的数据读取规则与直接相联不同,它规定在内存某分区任意页码处的数据都可以映射到Cache某随机页码处,比如第一次读取了主存中第一分区的0号页码的数据,则第二次依然可把其他分区0号页码的数据读取到Cache中的1号页码、2号页码、3号页码等等。这样设计冲突率会很低,因为只要Cache中依然有空闲的页码,就可将内存的数据读取到Cache中,但是这样会导致电路设计极其复杂。
(3)而组相联映射是直接相联映射和全相联映射的折中,即,将0-15的16个页码进行分组,两个页码为一组,则分为0-7共8组,每个组号与组号之间的数据必须是对应映射,如要读取0号组的数据,则只能读取到Cache的0号组位置,但是0号组内的0号页和1号页之间的内容读取是可以互换的。因此组相联映射的电路复杂度和冲突率都是二者的折中。
3、主存编址计算
比特位:bit (一个二进制为一个比特位)
为便于数据内容的查找,将若干个比特位规定为一组,即字,常见的机器字长有32位和64位,软考中题目常见的为16位字长。并将这个分组称为存储单元。
所谓的编址就是在存储区域中,每一个分组为一个存储单元,给每个从存储单元一个数值二进制编码,用最大的编码 - 最小的编码 + 1 就是存储单元的个数N,对于字长为 L 的存储单元,则:
存储区域的容量 = 存储单元个数N * 字长 L;
8个比特位bit称为一个字节B
存储单元:一个存储单元包含多个比特位(一般为8),每个存储单元有自己的地址。
存储单元个数= 最大地址 - 最小地址 + 1
编址内容:
- 按字编址:存储体的存储单元是字存储单元,即最小寻址单位是一个字;
- 按字节编址:存储体的存储单元是字节存储单元,即最小寻址单位是一个字节;
总容量 = 存储单元个数 * 编址内容;
根据存储器所要求的容量和选定的存储芯片的容量,就可以计算出所需芯片的总数:
总片数 = 总容量 / 每片的容量;
输入输出技术
输入输出技术,即 I/O
输入输出技术是CPU控制主存与外设数据交互的过程,而主存速度快,外设速度慢,需要一定平衡。
3. 程序控制(查询)方式:用CPU一直去查询外设,来获取外设是否完成的信号,影响CPU利用率;
4. 程序中断控制:程序在执行过程中,如果完成了IO,会向CPU提交一个中断请求,表明自己已完成了IO。不影响CPU处理其他任务。CPU与数据传输并行。如鼠标键盘。
5. DMA方式:直接内存存取,让IO和主存直接进行交互,中间的所有工作都交给DMAC自带的控制器DMAC完成,效率高于前两种,IO不需CPU参加。便于实现高速批量的数据交换。如移动硬盘。
6. 通道方式
7. I/O处理机
中断处理过程:
- CPU无需等待也不需查询I/O状态;
- 当I/O系统准备好后,发出中断请求信号通知CPU;
- CPU接到中断请求后,保存正在执行程序的现场(保存现场,相应的状态信息存在栈中 ),大短的程序当前位置即为断点;
- (通过中断向量表)转入I/O中的服务程序的执行,完成I/O系统的数据交换;
- 返回被打断的程序继续执行(恢复现场,由栈弹出相应信息来还原)。
打断点后,CPU响应I/O系统的请求,响应的问题会记录在中断向量表中,中断向量表中记录了中断服务程序及其入口,CPU通过中断向量表中中断服务程序的入口进入,来响应请求。CPU处理完成后,返回断点,继续执行原来的任务。
CPU是在一个总线周期结束时,来响应DMA请求的。
总线系统
一条总线同一时刻仅允许一个设备发送,但允许多个设备接收;(分时双工)
数据总线、地址总线、控制总线。
可靠性
无故障时间 MTTF
故障修复时间 MTTR
故障间隔时间 MTBF = MTTF + MTTR
系统可用性:MTTF / (MTTR + MTTF) * 100%
实际应用中,一般MTTR很小,所以通常认为MTBF ≈ MTTF
可靠性可以用 MTTF / (1 + MTTF) 来度量
可靠性计算:
串联:R^n
并联:1 - (1-R)…(1-R)
性能指标
- 字长和数据通路宽度:CPU一次性可读取的数据量,数据脉冲。数据在一秒内可通过的次数叫主频,每次通过所花费的时间叫CPU时钟周期;主频和时钟周期主要影响运算速度。
- 主存容量和存取速度。存取速度指主存读完一次数据所花费的时间。
- 运算速度:CPI & IPC,CPI 每条指令所占据的时钟周期(C表周期,I表指令,P:per)。IPC 每个时钟周期所能完成的指令条数。MIPS 每秒可完成多少百万条指令(m million); MFLOPS 每秒钟可完成多少百万次的浮点数操作(flo float)。
- 吞吐量和吞吐率 吞吐量指某时间间隔内完成的任务数;单位时间内完成的任务数即为吞吐率。
- 响应时间和完成时间 响应时间:提交请求后到完成请求的时间;
- 兼容性 涉及软件 一般向下兼容。