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