| 码制 | 定点整数 | 定点小数 |
|---|---|---|
| 原码 | − ( 2 n − 1 − 1 ) -(2^{n-1}-1) −(2n−1−1) 至 + ( 2 n − 1 − 1 ) +(2^{n-1}-1) +(2n−1−1) | − ( 1 − 2 − ( n − 1 ) ) -(1-2^{-(n-1)}) −(1−2−(n−1)) 至 + ( 1 − 2 − ( n − 1 ) ) +(1-2^{-(n-1)}) +(1−2−(n−1)) |
| 反码 | − ( 2 n − 1 − 1 ) -(2^{n-1}-1) −(2n−1−1) 至 + ( 2 n − 1 − 1 ) +(2^{n-1}-1) +(2n−1−1) | − ( 1 − 2 − ( n − 1 ) ) -(1-2^{-(n-1)}) −(1−2−(n−1)) 至 + ( 1 − 2 − ( n − 1 ) ) +(1-2^{-(n-1)}) +(1−2−(n−1)) |
| 补码 | − ( 2 n − 1 ) -(2^{n-1}) −(2n−1) 至 + ( 2 n − 1 − 1 ) +(2^{n-1}-1) +(2n−1−1) | − 1 -1 −1 至 + ( 1 − 2 − ( n − 1 ) ) +(1-2^{-(n-1)}) +(1−2−(n−1)) |
| 移码 | − ( 2 n − 1 ) -(2^{n-1}) −(2n−1) 至 + ( 2 n − 1 − 1 ) +(2^{n-1}-1) +(2n−1−1) | − 1 -1 −1 至 + ( 1 − 2 − ( n − 1 ) +(1-2^{-(n-1}) +(1−2−(n−1) |
浮点数表示:
N
=
尾
数
∗
基
数
指
数
N = 尾数* 基数^{指数}
N=尾数∗基数指数
浮点数的运算顺序:
运算要点:

| 体系结构类型 | 结构 | 关键特性 | 代表 |
|---|---|---|---|
| 单指令流单数据流 SISD | 控制部分:1个 处理器:1个 主存模块:1个 | 单处理器系统 | |
| 单指令流多数据流SIMD | 控制部分:1个 处理器:多个 主存模块:多个 | 各处理器以异步的形式执行同一条指令 | 并行处理机 阵列处理机 超级向量处理机 |
| 多指令流单数据流MISD | 控制部分:多个 处理器:1个 主存模块:多个 | 被证明不可能,至少不实际 | 目前没有,有文献称流水线计算机为此类 |
| 多指令流多数据流MIMD | 控制部分:多个 处理器:多个 主存模块:多个 | 能够实现作业、任务、指令等各级全面并行 | 多处理机系统 多计算机 |
一条指令是机器语言的一个语句,是一组有意义的二进制代码,基本结构:
操作码字段-地址码字段
| 指令系统类型 | 指令 | 寻址方式 | 实现方式 | 其它 |
|---|---|---|---|---|
| CISC 复杂指令集 | 数据多,使用频率差别大,可变成格式 | 支持多种寻址方式 | 微程序控制技术(微码) | 研制周期长 |
| RISC 精简指令集 | 数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器,只有Load/Store操作内存 | 支持方式少 | 增加了通用寄存器;硬布线逻辑控制为主,适合采用流水线 | 优化编译,有效支持高级语言 |
—以下非考试重点—
x86的指令集可分为以下4种:
一些指令示例:
| 指令 | 操作说明 |
|---|---|
| MOV | 将源操作数传送到目标操作数 |
| ADD | 将源操作数与目标操作数相加 最后结果给到目标操作数 |
| SUB | 将源操作数与目标操作数相减 最后结果给到目标操作数 |
| AND | 将源操作数与目标操作数进行与运算 最后结果给到目标操作数 |
| OR | 将源操作数与目标操作数进行或运算 最后结果给到目标操作数 |
| XOR | 将源操作数与目标操作数进行异或运算 最后结果给到目标操作数 |
| NOT | 将源操作数与目标操作数进行异非运算 最后结果给到目标操作数 |
| MOVS | 数据传送 与MOV不同处在于它可以将内存的数据传送到内存 |
| STOS | 将 AL AX EAX 的值存到EDI指定的内存地址 |
| REP | 循环 |
| PUSH | 押入 通用寄存器 内存地址 立即数 |
| POP | 释放。通用寄存器 内存地址 |
| JMP | 修改EIP(存放下一条指令的地址) |
| CALL | 修改EIP |
| RET | CALL的返回 |
ARM指令集可以分为六大类:
| 指令 | 说明 |
|---|---|
| ADC | 带进位的32位数加法 |
| ADD | 32位数相加 |
| AND | 32位数的逻辑与 |
| B | 在32M空间内的相对跳转指令 |
| BEQ | 相等则跳转(Branch if EQual) |
| BNE | 不相等则跳转(Branch if Not Equal) |
| BGE | 大于或等于跳转(Branch if Greater than or Equa) |
| BGT | 大于跳转(Branch if Greater Than) |
| BIC | 32位数的逻辑位清零 |
| BKPT | 断点指令 |
| BL | 带链接的相对跳转指令 |
| BLE | 小于或等于跳转(Branch if Less than or Equal) |
| BLEQ | 带链接等于跳转(Branch with Link if EQual) |
| BLLT | 带链接小于跳转(Branch with Link if Less Than) |
| BLT | 小于跳转(Branch if Less Than) |
| BLX | 带链接的切换跳转 |
| BX | 切换跳转 |
| CDP CDP2 | 协处理器数据处理操作 |
| CLZ | 零计数 |
| CMN | 比较两个数的相反数 |
| CMP | 32位数比较 |
| EOR | 32位逻辑异或 |
| LDC LDC2 | 从协处理器取一个或多个32位值 |
| LDM | 从内存送多个32位字到ARM寄存器 |
| LDR | 从虚拟地址取一个单个的32位值 |
| MCR MCR2 MCRR | 从寄存器送数据到协处理器 |
| MLA | 32位乘累加 |
| MOV | 传送一个32位数到寄存器 |
| MRC MRC2 MRRC | 从协处理器传送数据到寄存器 |
| MRS | 把状态寄存器的值送到通用寄存器 |
| MSR | 把通用寄存器的值传送到状态寄存器 |
| MUL | 32位乘 |
| MVN | 把一个32位数的逻辑“非”送到寄存器 |
| ORR | 32位逻辑或 |
| PLD | 预装载提示指令 |
| QADD | 有符号32位饱和加 |
| QDADD | 有符号双32位饱和加 |
| QSUB | 有符号32位饱和减 |
| QDSUB | 有符号双32位饱和减 |
| RSB | 逆向32位减法 |
| RSC | 带进位的逆向32法减法 |
| SBC | 带进位的32位减法 |
| SMLAxy | 有符号乘累加(16位*16位)+32位=32位 |
| SMLAL | 64位有符号乘累加((32位*32位)+64位=64位) |
| SMALxy | 64位有符号乘累加((32位*32位)+64位=64位) |
| SMLAWy | 号乘累加((32位*16位)>>16位)+32位=32位 |
| SMULL | 64位有符号乘累加(32位*32位)=64位 |
| SMULxy | 有符号乘(16位*16位=32位) |
| SMULWy | 有符号乘(32位*16位>>16位=32位) |
| STC STC2 | 从协处理器中把一个或多个32位值存到内存 |
| STM | 把多个32位的寄存器值存放到内存 |
| STR | 把寄存器的值存到一个内存的虚地址内间 |
| SUB | 32位减法 |
| SWI | 软中断 |
| SWP | 把一个字或者一个字节和一个寄存器值交换 |
| TEQ | 等值测试 |
| TST | 位测试 |
| UMLAL | 64位无符号乘累加((32位*32位)+64位=64位) |
| UMULL | 64位无符号乘累加(32位*32位)=64位 |
手册虽然可以免费下载,但手册里有一条:

不能公开散发,我~~~~~
截个图意思一下:

指令示例:
| 指令 | 描述 | 例子 |
|---|---|---|
| add | 加法 | |
| sub | 减法 | |
| and | 逻辑加法 | |
| or | 逻辑或 | |
| xor | 逻辑异或 |
—以上非考试重点—
流水线是指程序执行多条指令重叠进行操作的一种准并行处理实现技术。
使用流水线执行指令:

在标准状态下,一个处理器含一条指令流水线,超标量就是一个处理器中有多条指令流水线,单位是度。
流水线的吞吐率是指在单位时间内流水线所完成的任务数量或输出的结果数量,基本公式:
T
P
=
指
令
条
数
流
水
线
执
行
时
间
TP=\frac{指令条数} {流水线执行时间}
TP=流水线执行时间指令条数
流水线最大吞吐率:
T
P
m
a
x
=
lim
n
→
∞
n
(
k
+
n
−
1
)
∗
Δ
t
=
1
Δ
t
TP_{max} = \lim_{n \to \infty} \frac{n}{(k+n-1)*\Delta t} = \frac{1}{\Delta t}
TPmax=n→∞lim(k+n−1)∗Δtn=Δt1
地址映像是将主存与Cache的存储空间分为若干个大小相同的页(或称为块)。
| 映像 | 冲突率 |
|---|---|
| 直接相联映像 | 硬件电路简单,但冲突率最高 |
| 全相联映像 | 电路难于设计和实现,只适用于小容量的Cache,冲突率较低 |
| 组相联映像 | 直接相联与全相联的折中 |
示例:1G的内存,分为2048页,每页512K;Cache容量8MB,每页也是512K,划分为16页。
直接映像:
直接映像是指在进行映像的工作时,规定各区中的某一信息块只能映像到Cache中的一个固定的信息块中,即主存中的第0块映像到cache的第0个块框架,第1块映像到cache的第1块,以此类推的映像方式。——百度百科
全相联映像:
两个不同存储器的地址空间之间的一种映射关系,一个存储器中的任意一块(页)可以映像到另外一个存储器中的任意一块(页)中。——《计算机科学技术名词 》第三版
组相联映像:
组相联映像方式的地址映像规则是主存储器中某一块只能存入缓存的同组号的任一块中,先分区、再分组,每个组内用全相联映像。
存储单元
按字编址:存储体的存储单元是字存储单元
按字节编址:存储体的存储单元是字节存储单元。
根据存储器所要求的容量和选定的存储芯片的容量,计算所需的芯片数:
总
片
数
=
总
容
量
/
每
片
的
容
量
总片数=总容量/每片的容量
总片数=总容量/每片的容量
计算机硬件之间通讯的桥梁,一条总线同一时刻只允许一个设备发送,但允许多个设备接收。
总线的分类:
串联系统、并联系统的可靠性
R = R 1 × R 2 × . . . × R n R=R_1 \times R_2 \times ... \times R_n R=R1×R2×...×Rn
R = 1 − ( 1 − R 1 ) × ( 1 − R 2 ) × . . . × ( 1 − R n ) R=1-(1-R_1) \times (1-R_2) \times ... \times (1-R_n) R=1−(1−R1)×(1−R2)×...×(1−Rn)
……
码距:任何一种编码都由许多码字构成,任意两个码字之间最少变化的二进制位数就称为数据校验码的码距。
例:用4位二进制表示16种状态,则有16个不同的码字,此时码距为1,如:0000和0001。
奇偶校验只能检查1位的错误,不可纠错。
CRC的编码方法:在k位信息码之后拼接r位校验码。
海明码可以用来检错、也可以用来纠错。
确定校验码的位数x:
设数据有n位,校验码有x位。则校验码一共有 2 x 2^x 2x种取值方式。其中需要一种取值方式表示数据正确,剩下 2 x − 1 2^x-1 2x−1种取值方式表示有一位数据出错。因为编码后的二进制串有n+x位,因此x应该满足:
2 r − 1 ≥ n + x 2^r -1 ≥ n+x 2r−1≥ n+x
最常见的海明码校验位长度:
详情可参见: 海明码运算方法