Skip to content

计组复习

约 3338 字大约 11 分钟

2025-12-29

计算机五大部件组成:

  • 运算器

  • 控制器

  • 存储器(指令和数据以同等地位存于存储器)

  • 输入设备

  • 输出设备

存储程序

  • 冯氏结构核心特征,具有存储程序特征的计算机统称为冯·诺依曼计算机

  • 电子计算机问世至今,计算机类型不断推陈出新,但依然属于冯 · 诺伊曼计算机,其核心特征是 具有存储程序

硬件

  • 主机

    • CPU

      • ALU

      • CU

    • 主存

  • IO 设备

    • 辅存

    • 输入设备

    • 输出设备

机器字长

  • CPU 一次能处理数据的位数,通常与 CPU 中的寄存器位数相等

TMT_M:指令执行的速度

  • aia_i:第 ii 种指令占全部操作的百分比数

  • tit_i:第 ii 种指令的执行时间

  • TM=Σi=1naitiT_M = \Sigma^{n}_{i = 1}a_it_i

MIPSMIPS:每秒能执行多少百万条指令

  • MIPS=IPC×f=f/CPIMIPS = IPC \times f = f / CPI

FLOPSFLOPS:浮点运算次数每秒

存储容量:存放二进制信息的总位数

反码是对原码的符号位不变,数值位按位取反得到的编码,分为正数和负数两种情况(以  n  位二进制为例,第 n-1 位为符号位,0  表示正,1  表示负)。

  • 负数的反码:符号位保持  1,数值位对原码的数值位逐位取反

  • 8 位二进制中,5-5 的原码为 1000010110000101,数值位取反后反码为 1111101011111010

  • nn位反码的表示范围:(2n11)(2n11)-(2^{n - 1} - 1) ∼ (2^{n - 1} - 1)

  • 8 位二进制中,+0 反码为  00000000000000000-0反码为1111111111111111,这是反码的标志性特点。

移码即为补码对符号位取反

时序电路

  • 输出依赖 当前输入+历史状态 (需存储元件记忆状态),如寄存器、计数器。

组合逻辑电路

  • 输出 仅依赖当前输入 ,无记忆功能

机器指令由操作码和地址码组成

IR 是 指令寄存器(Instruction Register) 的缩写,是 CPU 控制器中最核心的寄存器之一,专门用于存储 当前正在执行的指令

程序计数器(PC)存储下一条要执行的指令地址


浮点数一般表示形式:N=S×rjN = S \times r^j

  • SS:尾数,jj:阶码,rr:尾数的基值

  • 上溢:当浮点数的绝对值太大,导致阶码超过其最大可表示值(阶码溢出上限)

  • 下溢:当浮点数的绝对值太小,导致阶码低于其最小可表示值(阶码溢出下限),此时数值接近零,通常当作 “机器零” 处理

  • 二进制的规格化浮点数需满足 1/2S<11/2 ≤ |S| < 1

奇校验:所有位数中 11 的个数为奇数

  • P=D1D2D3...DnP = \overline{D_1 \oplus D_2 \oplus D_3 \oplus...\oplus D_n}

  • 检错码 G=PD1D2D3...DnG = \overline{P' \oplus D_1' \oplus D_2' \oplus D_3' \oplus...\oplus D_n'},若 G=1G = 1 则一定出错

奇偶校验最小码距为2


海明校验的核心公式围绕 校验位个数确定、编码规则、检错纠错逻辑 展开,以下是考试高频公式及说明(符号统一:nn=数据位个数,kk=校验位个数,HH=海明码位,PP=校验位,DD=数据位,SS=校验因子):

1. 校验位个数 kk 的确定公式

需满足:
2kn+k+1\boxed{2^k \geq n + k + 1}

  • 含义:kk 位校验位可生成 2k2^k 种状态,需覆盖“无错”+“n+kn+k 个海明码位的单错定位”,因此需满足上述不等式。
  • 例:n=4n=4(4位数据),代入得 23=84+3+1=82^3=8 \geq 4+3+1=8,故 k=3k=3

2. 校验位与海明码的位置对应

校验位 PiP_ii=1,2,...,ki=1,2,...,k)固定放在海明码 HjH_jj=2i1j=2^{i-1} 位置:
j=2i1(i=1,2,...,k)\boxed{j=2^{i-1} \quad (i=1,2,...,k)}

  • 例:k=3k=3 时,P1P_1H1H_1202^0)、P2P_2H2H_2212^1)、P3P_3H4H_4222^2),剩余位置放数据位(H3=D1H_3=D_1H5=D2H_5=D_2H6=D3H_6=D_3H7=D4H_7=D_4)。

3. 编码公式(偶校验,最常用)

每个校验位 PiP_i 负责校验“位置二进制含第 ii 位1”的海明码位,通过异或运算生成:
Pi=j=1j的二进制第i位为1n+kHj\boxed{P_i = \bigoplus_{\substack{j=1 \\ j\text{的二进制第}i\text{位为1}}}^{n+k} H_j}

  • 简化:PiP_i 是对应分组内数据位的异或(因校验位位置仅含自身的二进制位1),例 k=3n=4k=3、n=4 时:
    P1=H1H3H5H7=P1D1D2D4P_1 = H_1 \oplus H_3 \oplus H_5 \oplus H_7 = P_1 \oplus D_1 \oplus D_2 \oplus D_4(移项后 P1=D1D2D4P_1 = D_1 \oplus D_2 \oplus D_4
    P2=H2H3H6H7=P2D1D3D4P_2 = H_2 \oplus H_3 \oplus H_6 \oplus H_7 = P_2 \oplus D_1 \oplus D_3 \oplus D_4(移项后 P2=D1D3D4P_2 = D_1 \oplus D_3 \oplus D_4
    P3=H4H5H6H7=P3D2D3D4P_3 = H_4 \oplus H_5 \oplus H_6 \oplus H_7 = P_3 \oplus D_2 \oplus D_3 \oplus D_4(移项后 P3=D2D3D4P_3 = D_2 \oplus D_3 \oplus D_4

4. 检错纠错公式(接收端)

接收端计算校验因子 SiS_i(与编码分组一致),偶校验下:
Si=j=1j的二进制第i位为1n+kHj\boxed{S_i = \bigoplus_{\substack{j=1 \\ j\text{的二进制第}i\text{位为1}}}^{n+k} H_j'}

  • 含义:HjH_j' 是接收端的海明码位,Si=0S_i=0 表示对应分组无错,Si=1S_i=1 表示有错;
  • 错误定位:将 SkSk1...S1S_kS_{k-1}...S_1 视为二进制数,其值即为错误海明码位的位置(值为0表示无错)。

补充:奇校验公式

仅需在偶校验公式基础上取反:
Pi=j=1j的二进制第i位为1n+kHjSi=j=1j的二进制第i位为1n+kHj\boxed{P_i = \overline{\bigoplus_{\substack{j=1 \\ j\text{的二进制第}i\text{位为1}}}^{n+k} H_j}} \quad \boxed{S_i = \overline{\bigoplus_{\substack{j=1 \\ j\text{的二进制第}i\text{位为1}}}^{n+k} H_j'}}


一位符号位判溢出=数值最高位进位符号位进位=1一位符号位判溢出 = 数值最高位进位 \oplus 符号位进位 = 1

两位符号位判溢出,最高符号位代表真正符号

计算机数据分为 数值数据(如整数、浮点数)非数值数据(如字符、汉字、图像)。汉字编码用于表示汉字信息,属于非数值数据,说法无误。

汉字信息处理的完整流程需经过4类核心编码,分工明确:

  • 输入码:用于汉字录入(如拼音码、五笔码);

  • 交换码:用于不同系统间汉字传输(如GB2312、GBK);

  • 机内码:计算机内部存储/处理汉字的统一编码;

  • 字形码:用于汉字输出(如点阵、矢量字模)。 说法完全符合汉字编码的应用逻辑,无误。

  • 点阵字模的特点:需占用较大存储空间(如24×24点阵汉字占72字节),常用汉字库(数千个汉字)体积较大;

  • 存储位置:汉字库通常存放在 外存(如硬盘、ROM芯片) 中,而非主存(内存)。主存是高速临时存储,容量有限,仅用于存放当前运行的程序和数据;输出汉字时,再从外存调入所需字模到主存缓存,而非直接存于主存。

  • 汉字机内码的核心定义是 计算机内部存储、处理汉字的统一编码(如GB2312机内码=国标码+8080H,避免与ASCII码冲突),确保不同部件(CPU、内存、显卡)处理汉字时的一致性

原码一位乘运算

  • 根据数值位 nn ,执行 nn 次加法和移位

  • 结果:ACC\boxed{ACC}(乘积高位)+MQ\boxed{+ MQ}(乘积低位)=\boxed{=} 完整乘积,XX固定存被乘数, PCPC 不参与运算。

恢复余数法中,只有上商 00 时才需要恢复余数

  • 上商 n+1n + 1 次,与操作数位数相同。移位 nn 次。

存储周期

  • 存储器进行连续读或写操作所需的最短间隔时间

存储器访问速度

  • 寄存器 > 缓存 > 主存 > 闪存

浮点数规格化判断方式

  • 原码:不论正数、负数,第一数位为1

  • 补码:符号位和第一数位不同

若 RAM 芯片内有 1024 个存储单元,用重合法进行译码时,所有地址译码器加起来共 有几条输出线

  • 若 RAM 芯片内有 1024 个存储单元,采用重合法(二维译码)进行译码时,通常将地址线分为行地址和列地址两部分。由于 1024 = 2^10,需要 10 根地址线,通常将地址线平均分为两组,每组 5 根。行译码器将 5 根行地址线译码为 2^5 = 32 条行选线,列译码器将 5 根列地址线译码为 2^5 = 32 条列选线。因此,所有地址译码器输出线的总数为 32 + 32 = 64 条。

用 1K×1 位的存储芯片组成容量为 16K×8 位的存储器,共需几片这样的存储芯片

  • 要组成容量为 16K×8 位的存储器,使用 1K×1 位的存储芯片,需要进行字扩展和位扩展。

    • 位扩展:每个 1K×1 位芯片提供 1 位数据,需要 8 片并联组成 1K×8 位的存储模块。

    • 字扩展:将 1K×8 位的模块扩展为 16K×8 位,需要 16 个这样的模块(因为 16K / 1K = 16)。

    因此,总芯片数量为 16 × 8 = 128 片。

主存和 CPU 间由三类总线进行连接,分别为数据总线、地址总线和控制总线。其中, 可以双向传输的总线为 数据总线

现代计算机系统最重要的两个存储层次分别为 主存-辅存 层次和 缓存-主存 层次

存储器有 3 个主要性能指标:速度、容量和位价

主存中一个存储单元所存储的二进制信息的位数被称为存储字长


浮点数加减运算规格化

  • 左规

    • 当尾数符号位和第一数位相同时,需左规(00.0×× ⋯ ×或11.1×× ⋯ ×)

    • 尾数左移一位,阶码减1,直到尾数不溢出,且数符和第一数位不同为止

  • 右规

    • 当尾数溢出(绝对值> 1)时,需右规(01.×× ⋯ ×或10.×× ⋯ ×)

    • 尾数右移一位,阶码加1,直到尾数不溢出,且数符和第一数位不同为止

    • 最高符号位为真正符号,低位符号位为运算结果溢出部分

  • 对双符号位补码来说

    • 最高符号位视为真正符号,移位时需保留

    • 低位符号位可视为数值位

  • 舍入方法

    • 截断法

    • 0舍1法

      • 被移去的最高数值位为0,直接舍去

      • 被移去的最高数值位为1,在尾数的末位加1

      • 可能导致尾数又溢出,需再做一次右规


NcN_c 为访问Cache的总命中次数, NmN_m 为访问主存的总次数,则命中率 hh

h=NcNc+Nmh = \frac{N_c}{N_c + N_m}

主存系统的访问效率 ee

e=访问cache的时间平均访问时间×100%e=\frac{访问cache的时间}{平均访问时间} \times 100\%

cache命中率为 hh ,其中 tct_c 为访问cache的时间 tmt_m 为访问主存的时间

h×tc+(1h)×tmh \times t_c + (1-h) \times t_m


CPU 响应中断的时间是执行周期结束

隐指令是指令系统中没有的指令


基址寄存器内容由操作系统确定,在程序执行过程中不可变。但是形式地址 AA 是可变的

基址寻址

  • 隐式 EA=(BR)+AE_A = (BR) + A 其中 BRBR 为基址寄存器, AA 为形式地址

  • 显示 EA=(R0)+AE_A = (R_0) + A 其中 R0R_0 为用户指定的通用寄存器

变址寻址

  • 隐式:采用专门的变址寄存器 IXIXEA=(IX)+AE_A = (IX) + A

  • 显示:用户指定通用寄存器 R0R_0

  • 变址寄存器的内容可变,形式地址 AA 不变

相对寻址

  • EA=(PC)+AEA = ( PC ) + A

基址&变址复合寻址

  • EA=(IX)+((BR)+A)EA=(IX)+((BR)+A)

缓存块号有 cc 位,块长有 bb 位,主存容量可以推出地址位数(长度)

主存字块标记在左,组号(cache块号)在中,块内地址在右。

如果是 nn 路组相联映射,则可以减少cache块号改为组号。减少位数即为表示 nn 的位数。所以当全相联映射时,就没有中间的了。


译码驱动方式

  • 线选法

    地址线数量: nn 个单元需要 nn 个地址线

    选中线(输出线)数量: nn 根选中线

  • 重合法

    地址线数量: nn 个单元拆成 x×yx \times yx,yx , y 二进制表示需要的位数相加。详见上面

    选中线(输出线)数量: x+yx + y 根选中线。


寻址方式

  • 指令寻址

    • 顺序寻址

    • 跳转寻址

  • 数据寻址

    • 立即寻址

      可正可负, 补码表示

    • 直接寻址

      EA=AEA = A

    • 间接寻址

      EA=(A)EA = (A) ,执行两次访存

      • 多次寻址

        EA=((A))EA = ((A)) ,执行三次访存之类的,用存储字的首位来标志间接寻址是否结束

        若指令字长 = 存储字长 = 16位

        • A < EA = 16位(一次间址)
        • A < EA = 15位(多次间址)
    • 寄存器寻址

      A=EA=RA = EA = RRR 为寄存器编号

    • 寄存器间接寻址

      EA=(R)EA = (R)RR 为寄存器编号

    • 相对寻址

      EA=(PC)+AEA = (PC) + APCPC 为程序计数器, AA 内容不可变

    • 基址寻址

      EA=(BR)+AEA = (BR) + ABRBR 为基址寄存器,也可以是用户指定的通用寄存器。 BRBR 内容不可变

    • 变址寻址

      EA=(IX)+AEA = (IX) + AIXIX 为变址寄存器,也可以是用户指定的通用寄存器。 AA 内容不可变

    • 基址变址复合寻址

      EA=(IX)+((BR)+A)EA = (IX) + ((BR) + A)


取值周期 -> 间址周期 -> 执行周期 -> 中断周期

如何查找中断服务程序的入口地址?

  • 硬件向量法

  • 软件查询法

中断服务程序

  • 保护现场

  • 其他服务程序

  • 恢复现场

  • 中断返回

总线

  • 片内总线

  • 系统总线

  • 通信总线

总线宽度通常指数据总线的根数

贡献者: Sherlock