嵌入式软考备考
文章目录
一、计算机系统基础
4分左右。但是是解题的基础。
数的转换
进制转换不必多说。主要还是十进制,二进制,八进制,十六进制。
二进制算数运算
首先是 bit B KB MB GB,以及01加减乘除运算。
地址作差+1=380000H bit。换算为 KB 单位即可。
一定看清 Byte 和 bit!
数的表示
原码补码反码
原码:负数首位为1. 如-1: 1000 0001.
反码:负数除了符号位全部取反。如-1:1111 1110.
补码:负数反码+1。如-1: 1111 1111.
移码:补码的符号位取反。如1: 1000 0001,-1:0111 1111.
反码和补码用于实现减法运算。但是反码运算结果可能出现没有意义的-0. 补码则不会。
原码和反码表示范围都是 − 2 n − 1 − 1 -2^{n-1}-1 −2n−1−1 ~ 2 n − 1 − 1 2^{n-1}-1 2n−1−1 , n-1 是因为有一位是符号位拿出来了。
补码和移码的表示范围是 − 2 n − 1 -2^{n-1} −2n−1 ~ 2 n − 1 − 1 2^{n-1}-1 2n−1−1 ,因为原码反码有-0,补码没有,比如 1000 0000 补码可以表示 -128.
移码通常用于表示浮点数的阶码。
补码转回原码也是先取反再+1.
定点数浮点数
定点数:小数点固定。
定点整数:123000.
定点小数:123.000
浮点数: N = R e ∗ M N=R^e*M N=Re∗M ,M 是尾数,R 是基数,e 是阶码。
存储结构包括:阶符,阶码,数符,尾数。
阶码计算:先对阶,计算完后调整尾数。
计算机组成
五大部分,运算器,控制器,存储器,输入设备,输出设备。
运算器下的寄存器
算术逻辑单元 ALU:数据的算术运算和逻辑运算。
累加寄存器 AC:通用寄存器,用于残存数据。
数据缓冲寄存器 DR:读写内存时,暂存指令或数据。
状态条件寄存器 PSW:存状态标志与控制标志。如溢出。
控制器下的寄存器
程序计数器 PC:存储下一条要执行的指令的地址。
指令寄存器 IR:存储即将执行的指令。
指令译码器 ID:分析解释指令。
时序部件:提供时序控制信号指令中的操作码字段。
例:一条计算机指令中包含操作码、地址码。这两部分存储在哪里?
答:都存储在 IR 中。虽然是地址,但是不是指令对应的地址,是指令要操作的数据对应的地址,是指令的一部分。
衡量计算机性能指标
CPU:
主频:越高,运行越快。
字长:能运算处理的数据。和 CPU 位数对应。
CPU 缓存:临时存储的数据。
核心数量:进程并发度。
总线:数据总线,控制总线,地址总线。
- 带宽:单位时间能处理的数据。
- 位宽:数据总线宽度。
- 工作频率:若干次周期/s。带宽=位宽*工作频率。
答案为C。
BIOS/CMOS:保存计算机的一些配置信息。BIOS 配置 RAM 里的 CMOS,是 ROM;CMOS 则存储了一些可修改的 BIOS 参数,比如开机日期设置,软件启动顺序,密码等。
系统性能评测方法:
时钟频率:类似主频。
指令执行速度:每秒多少条指令通常只用基本的加法指令去计算。
等效指令速度法:平均一定比例的各类指令后计算等效时间。
数据处理速率 PDR。
核心程序法,基准测试程序:用程序测试速度。
指令
由操作码、操作数地址码组成。
如四地址指令,可能形如:加法指令,加数1地址,加数2地址,answer 地址,下一条指令地址。
简化:下一条指令地址放到 pc 中。
再简化:把运算结果放到累加寄存器 ACC 中。
一地址指令:比如读取该地址中的数据。
零地址指令:如出栈入栈这类无参指令。
寻址方式
为了扩大寻址空间,提高编程灵活性,出现了许多种寻址方式。
立即寻址:操作数放在指令里。灵活性差。
直接寻址:指令中存放操作数的地址。
间接寻址:指令中放了一个指向操作数的地址的地址。
寄存器寻址方式:寄存器放操作数。
寄存器间接寻址方式:寄存器放操作数的地址。
流水线
每条指令需要经过取指-分析-执行三个阶段。我们可以让不同的阶段重叠处理,准并行实现。
计算公式:一条指令执行时间+(指令条数-1)*流水线周期。流水线周期是取指、分析、执行中执行最长的时间。
流水线吞吐率:总花费时间的倒数。
流水线最大吞吐率:流水线周期的倒数。
例:取指2ns,分析2ns,执行1ns,流水线周期是?100条指令最短时间是?
答:2ns;(5ns)+(99)*(2ns)=203ns。
多级存储
上面的小,快,但贵;下面的大,慢,便宜。可以说上面是下面的缓存。
cache:有一片存储空间,和相联存储表。cache 主要是对程序的时间空间局部性优化来加快访问速度。
平均系统访问周期:假设命中 cache 概率为h,cache 访存时间为t1,内存访存时间为t2,则平均周期为 ht1+(1-h)t2
cache 直接映像
左边是 cache ,右边是主存。
主存中每一部分分为:主存区号,区内块号,块内地址。
主存缓存到 cache 中,必须缓存到块号相同的位置,比如第0区,第1区,第2区……的第1块都只能缓存到 cache 中的第1块。
我们判断是否命中,比如我们要找第3区第4块。我们就看看 cache 中第4块有没有缓存数据,如果有,主存区号是否是第3区。如果是则命中。
这种方式地址变换电路简单,访问速度快,但是容易冲突,命中率低,对页面置换算法要求较高,空间利用率低。
全相联地址映像和变换
主存中任何一块可以放到缓存中任何一个位置。空间利用率和命中率都高了,但是实现起来复杂,速度慢。适合小容量 cache。
组相联地址映像和变换
cache 分为若干个组,主存按 cache 组数分区。比如 cache 分了8组,每组2个单元,那么主存就分为若干个8组的区,每个区的第1组存到 cache 的第1组,第2组存到 cache 的第2组……
就是折中了直接映像和全相联地址映像,实现难度和命中率也在两者之间。
IO 控制
直接程序控制:包括无条件传送方式和程序查询方式。
无条件传送:CPU 一直在准备访问外部设备,需要访问时立刻就能访问。
程序查询方式:CPU 不断查询外部设备是否空闲,空闲了才能使用。比如要打印12345,CPU 先看打印机是否空闲,空闲就先打个1,过一段时间看打印完空闲了没有,没空闲就再等待,空闲了再打印2……
缺点在于 CPU 要一直等待 IO。
中断方式:打印机打印完了会发一个中断给 CPU,CPU 收到后知道可以调用打印机了。这样 CPU 就不用一直查询 IO 设备是否空闲了。
但是这种方式还是有点占用 CPU 的,因为打印数据还是 CPU 传给打印机。
直接存储器读取方式 DMA:要打印的时候,CPU 把数据发给直接存储器,然后不用一直陪着打印机打到结束了,去干别的事就可以。只在 IO 开始和结束时介入。
输入输出处理机 IOP:大型主机常用,通过通道的方式,了解即可。
可靠性和校验码
可靠性
掌握各种系统可靠度的计算公式。一般就是考混合系统。
简单说就是串行是 * 可靠度,并行是 * 失效率。
校验码
码距:编码系统中两个合法编码的码字之间的最小距离。2位可检错。3位可纠错。
奇偶校验只能检错(检一位错),CRC 可以检多位错,海明码可以检错和纠正一位错。
奇偶校验码不必多说。
CRC:k个数据位后跟r个校验位来进行编码。了解概念即可。
海明码:数据位间插入 k 个校验位,要求 2 k − 1 ≥ n + k 2^k-1\ge n+k 2k−1≥n+k 。