软考
数据的表示
进制转换
进制 | 数码 | 基数 | 位权 |
---|---|---|---|
十进制(D) | 0,1,2,3,4,5,6,7,8,9 | 10 | 10^k |
二进制(B) | 0,1 | 2 | 2^k |
十六进制(H) | 0~9,A,B,C,D,E,F | 16 | 16^k |
- R进制十进制使用按权展开法,其具体操作方式为:将R进制数的每一位数值用R^k形式表示,即幂的底数是R,指数为k,k与该位和小数点之间的距离有关。当该位位于小数点左边,k值是该位和小数点之间数码的个数,而当该位位于小数点右边,k值是负值,其绝对值是该位和小数点之间数码的个数加1
- 例如二进制10100.01=1x24+1x22+1x2^-2
- 例如七进制604.01=6x72+4x70+1x7^-2
- 十进制转R进制使用短除法(除基取余法)
- 十进制转二进制使用减法
码制
数值1 | 数值-1 | 1-1 | |
---|---|---|---|
原码 | 0000 0001 | 1000 0001 | 1000 0010 |
反码 | 0000 0001 | 1111 1110 | 1111 1111 |
补码 | 0000 0001 | 1111 1111 | 0000 0000 |
移码 | 1000 0001 | 0111 1111 | 1000 0000 |
- 原码:最高位是符号位,其余低位表示数值的绝对值
- 反码:正数的反码与原码相同,负数的反码是其绝对值按位取反(符号位不变)
- 补码:正数的补码与原码相同,负数的补码是其反码末位加1(符号位不变)
- 移码:补码的符号位按位取反
码制 | 定点整数 | 定点小数 | 数码个数 |
---|---|---|---|
原码 | -(2^(n-1)-1) ~ +(2^(n-1)-1) | -(1-2^-(n-1)) ~ +(1-2^-(n-1)) | 2^n- |
反码 | -(2^(n-1)-1) ~ +(2^(n-1)-1) | -(1-2^-(n-1)) ~ +(1-2^-(n-1)) | 2^n-1 |
补码 | -2^(n-1) ~ +(2^(n-1)-1) | -1 ~ +(1-2^-(n-1)) | 2^n |
移码 | -2^(n-1) ~ +(2^(n-1)-1) | -1 ~ +(1-2^-(n-1)) | 2^n |
浮点数的表示
- 浮点数表示:N=尾数*基数^指数(阶码)
- 运算过程:对阶>尾数计算>结果格式化
- 一般尾数用补码,阶码用移码
- 阶码的位数决定数的表示范围,位数越多范围越大
- 尾数的位数决定数的有效精度,位数越多精度越高
- 对阶时,小数向大数看齐
- 对阶时通过较小数的尾数右移实现的
逻辑运算
- <(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)优先级相同(高)
- ==(等于)、!=(不等于)优先级相同(低)
- 关系运算符的优先级低于算术运算符
- 关系运算符的优先级高于赋值运算符
逻辑或(||、+、U、V、OR):连接的两个逻辑值全0时才取0
逻辑与(&&、*、.、∩、∧、AND):连接的两个逻辑值全1时才取1
逻辑异或(⊕、XOR):连接的两个逻辑值不相同时才取1,相同则取0
逻辑非(!、𠃍、~、NOT、-):将原逻辑值取反即可
- 运算符的优先顺序:!>算术运算符>关系运算符>&&>||>赋值运算符
校验码
奇偶校验码
码距:任何一种编码都由许多码字构成,任意两个码字之间最少变化的二进制位数就称为数据校验码的码距
奇偶校验码的编码方法:由若干位有效信息(如一个字节),再加上一个二进制位(校验位)组成校验码
奇校验:整个校验码(有效信息位和校验位)中“1”的个数为奇数
偶校验:整个校验码(有效信息位和校验位)中“1”的个数为偶数
CRC循环冗余校验码
CRC的编码方法:在k位信息码之后拼接r位校验码。应用CRC码的关键是如何从k位信息位简便地得到r位校验位(编码),以及如何从k+1位信息码判断是否出错
把接收到的CRC码用约定的生成多项式G(X)去除(横二除法),**如果正确,则余数为0;如果某一位出错,则余数不为0。不同的位数出错其余数不同,余数和出错位序号之间有唯一的对应关系
- CRC校验,可检错,不可纠错
海明校验码
海明校验码的原理:在有效信息位中加入几个校验位形成海明码,使码距比较均匀地拉大,并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化,这不但可以发现错误,还能指出错误的位置,为自动纠错提供了依据
- 海明校验,可检错,也可纠错
总结
校验码位数 | 校验码位置 | 检错 | 纠错 | 校验方式 | |
---|---|---|---|---|---|
奇偶校验 | 1 | 一般拼接在头部 | 可检奇数位错 | 不可纠错 | 奇校验:最终1的个数是奇数个;偶校验:最终1的个数是偶数个 |
CRC循环冗余校验 | 生成多项式最高次数决定 | 拼接在信息位尾部 | 可检错 | 不可纠错 | 横二除法求余数,拼接作为校验位 |
海明校验 | 2^r>=m+r+1 | 插入在信息位中间 | 可检错 | 可纠错 | 分组奇偶校验 |
CPU的组成(运算器与控制器)
计算机结构分为外设和内设(主机)。外设有输入设备、辅助存储器和输出设备。主机有主存储器和CPU
运算器分为算术逻辑单元ALU、累加寄存器、数据缓冲寄存器和状态条件寄存器
控制器分为程序计数器PC、指令寄存器IR、指令译码器和时序部件
运算器
- 算数逻辑单元ALU:数据的算术运算和逻辑运算
- 累加寄存器AC:通用寄存器,为ALU提供一个工作区,用在暂存数据
- 数据缓冲寄存器DR:写内存时,暂存指令或数据
- 状态条件寄存器PSW:存状态标志与控制标志
控制器
- 程序计数器PC:存储下一条要执行指令的地址
- 指令寄存器IR:存储即将执行的指令
- 指令译码器ID:对指令中的操作码字段进行分析解释
- 时序部件:提供时序控制信号
寻址方式
一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的基本格式如下:操作码字段——地址码字段
-
立即寻址方式
特点:操作数直接在指令中,速度快,灵活性差
-
直接寻址方式
特点:指令中存放的是操作数的地址
-
间接寻址方式
特点:指令中存放了一个地址,这个地址对应的内容是操作数的地址
-
寄存器寻址方式
特点:寄存器存放操作数
-
寄存器间接寻址方式
特点:寄存器内存放的是操作数的地址
CISC与RISC
指令系统类型 | 指令 | 寻址方式 | 实现方式 | 其它 |
---|---|---|---|---|
CISC(复杂) | 数量多,使用频率差别大,可变长格式 | 支持多种 | 微程序控制技术(微码) | 研制周期长 |
RISC(精简) | 数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器,只有Load/Store操作内存 | 支持少 | 增加了通用寄存器;硬布线逻辑控制为主;适合采用流水线 | 优化编译,有效支持高级语言 |
- CISC:复杂,指令数量多,频率差别大,多寻址
- RISC:精简,指令数量少,操作寄存器,单周期,少寻址,多通用寄存器,流水线
流水线技术
- 相关参数计算:流水线执行时间计算、流水线吞吐率、流水线加速比、流水线效率
- 流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度
- *理论公式:(t1+t2+…+tk)+(n-1)t
- 实践公式:k*t+(n-1)*t
- 流水线的吞吐率(TP)是指在单位时间内流水线所完成的任务数量或输出的结果数量。计算流水线吞吐率的最基本的公式如下:TP=指令条数/流水线执行时间
- 流水线最大吞吐率:TP=1/t
存储系统
层次化存储体系
名称 | 概述 | 速度 | 容量 | 成本 |
---|---|---|---|---|
CPU | 寄存器 | |||
Cache | 按内容存取 | |||
内存(主存) | 分两类:随机存储器(RAM)和只读存储器(ROM) | |||
外存(辅存) | 硬盘、光盘、U盘等 |
- 速度由快到慢,成本由高到低,容量由小到大
- 局部性原理是层次化存储结构的支撑
- 时间局部性:刚被访问的内容,立即又被访问
- 空间局部性:刚被访问的内容够,临近的空间很快被访问
分类
1、存储器位置:内存&外存
2、存取方式
(1)按内容存取:相联存储器(如Cache)
(2)按地址存取:随机存取存储器(如内存)、顺序存取存储器(如磁带)、直接存取存储器(如磁盘)
3、工作方式
(1)随机存取存储器RAM(如内存DRAM)
(2)只读存储器ROM(如BIOS)
- DRAM:动态随机存取存储器
- SRAM:静态随机存取存储器
- Cache:高速缓存
- EEPROM:电可擦可编程只读存储器
Cache
- 在计算机的存储系统体系中,Cache是访问速度最快的层次(若有寄存器,则寄存器最快)
- 使用Cache改善系统性能的依据是程序的局部性原理(时间局部性和空间局部性)
- 如果以h代表对Cache的访问命中率,t1表示Cache的周期时间,t2表示主存储器周期时间,以读操作为例,使用“Cache+主存储器”的系统的平均周期为t3,则:t3=h*t1+(1-h)*h2,(1-h)又称为失效率(未命中率)
- 直接相联映像:硬件电路较简单,但冲突率很高
- 全项链映像:电路难于设计和实现,只适用于小容量的cache,冲突率较低
组相联映像:直接相联与全相联的折中
注:主存与Cache之间的地址映射由硬件直接完成 - 地址映射是将主存与Cache的存储空间划分为若干大小相同的页(或称为块)。例如,某机的主存容量为1GB,划分为2048页,每页512KB;Cache容量为8MB,划分为16页,每页512KB
主存编址计算
- 存储单元:存储单元个数=最大地址-最小地址+1
- 编址内容:
按字编址:存储体的存储单元是字存储单元,即最小寻址单位是一个字
按字节编址:存储体的存储单元是字节存储单元,即最小寻址单位是一个字节 - 总容量=存储单元个数*编址内容
- 根据存储器所要求的容量和选定的存储芯片的容量,就可以计算出所需芯片的总数,即:总片数=总容量/每片的容量
输入/输出技术
数据传输控制方式
- 程序控制(查询)方式:分为无条件传送和程序查询方式两种。方法简单,硬件开销小,但I/O能力不高,严重影响CPU的利用率
- 程序中断方式:与程序控制方式相比,中断方式因为CPU无需等待而提高了传输请求的响应速度
- DMA方式:DMA方式是为了在主存与外设之间实现高速、批量数据交换而设置的。DMA方式比程序控制方式与中断方式都高效
(DMAC向总线裁决逻辑提出总线请求;CPU执行完当前总线周期即可释放总线控制权。此时DMA响应,通过DMAC通知I/O接口开始DMA传输) - 通道方式
- I/O处理机
中断处理过程
- CPU无需等待也不必查询I/O状态
- 当I/O系统准备好以后,发出中断请求信号通知CPU;
- CPU接到中断请求后,保存正在执行程序的现场(保存现场),打断的程序当前位置即为断点
- (通过中断向量表)转入I/O中的服务程序的执行,完成I/O系统的数据交换
- 返回被打断的程序继续执行(恢复现场)
总线
一条总线同一时刻仅允许一个设备发送,但允许多个设备接收
总线分类
- 数据总线:在CPU与RAM之间来回传送需要处理或是需要储存的数据
- 地址总线:用来指定在RAM之中储存的数据的地址
- 控制总线:将微处理器控制单元的信号,传送到周边设备
可靠性
- 平均无故障时间:(MTTF)MTTF=1/a,a为失效率
- 平均故障修复时间:(MTTR)MTTR=1/b,b为修复率
- 平均故障间隔时间:(MTBF)MTBF+MTTF
- 系统可用性:MTTF/(MTTR+MTTF)*100%
- 在实际应用中,一般MTTR很小,所以通常认为MTBF约等于MTTF
- 可靠性可以用可以用MTTF/(1+MTTF)来度量
- N模混合系统:R*(1-(1-R)^3) *(1-(1-R)^2)
性能指标
- 字长和数据通路宽度
- 主存容量和存取速度
- 主频与CPU时钟周期
- 运算速度
- CPI与IPC
- 吞吐量与吞吐率
- MIPS与MFLOPS
- 响应时间(RT)与完成时间(TAT)
- 兼容性