一、考试介绍
(一)考试大纲要求


(二)历年考试情况分析


二、计算机组成原理与体系结构

(一)数据的表示
1、进制的转换
(1) R进制转十进制

(2) 十进制转R进制

(3) 二进制转八进制与十六进制


十六进制超过10用字母表示:10->A、11->B、12->C、13->D、14->E、15->F
2、原码、补码、反码、移码
(1)0正,1负

- 原码:0正1负
- 反码:正数与原码相同。负数符号位为1,负数不变其余位取反
- 补码:正数与原码、补码相同。负数为反码+1
- 移码:(一般用来做浮点运算中的阶码)将补码的符号位取反,其余位不变
- 浮点数:浮点数实际上就是二进制的科学计数法,阶码指科学计数法中的指数,尾数指科学计数中小数点之后的部分。
例如:对于十进制的3.14×10²,“阶码”就是2,而“尾数”则是14。
同理对于二进制的1.00111010×10^1000,“阶码”就是1000,而“尾数”则是00111010。
(2)数值表示范围
问题:用一个字节,8个位来表示,原码反码补码的取值范围为?n=8 2^7=128
原码:-127—127
反码:-127—127
补码:-128—127
移码:-128—127

3、浮点数运算

(二)计算机结构
1、CPU结构(运算器与控制器的组成)

(1) CPU的组成
CPU(Central Processing Unit,中央处理器)是计算机系统中的核心部件,负责执行计算机程序中的指令,控制和协调各个硬件和软件资源。根据知识库信息,CPU主要由以下几部分组成:
运算器:执行各种算术和逻辑运算
控制器:协调和指挥计算机系统各部件的工作
寄存器组:用于临时存储数据、指令和地址
内部总线:用于各部件之间的数据传输
CPU是计算机的"大脑",通过这些部件协同工作,完成指令的取指、译码、执行和结果存储等操作。
(2) 运算器
运算器是计算机中执行算术和逻辑运算的部件,是CPU的核心组成部分之一。它主要由以下部分组成:
算术逻辑单元(ALU)
核心部分:负责执行各种算术运算(加、减、乘、除等)和逻辑运算(与、或、非、异或等)
功能:执行移位、求补等操作,是运算器的"大脑"
累加寄存器(AC)
功能:作为通用寄存器,用于暂时存储运算的中间结果
工作原理:在执行运算前,将操作数存入AC,运算后结果也存回AC
示例:执行减法运算时,先将被减数取出暂存在AC中,再从内存取出减数,与AC内容相减,将结果送回AC
数据缓冲寄存器(DR)
功能:用于暂时存储从内存读取的数据
作用:作为ALU与内存之间的数据缓冲,提高数据传输效率
状态条件寄存器(PSW)
功能:保存运算的状态信息
存储内容:运算结果是否为负、是否为零、是否溢出等
重要性:这些状态信息对程序流程控制至关重要,例如影响条件转移指令的执行
(3) 控制器
控制器是CPU中负责协调和指挥计算机系统各部件工作的部件,相当于计算机的"指挥中心"。它主要由以下部分组成:
程序计数器(PC)
功能:存储下一条要执行的指令的地址
工作原理:在指令执行过程中自动递增,指向下一个指令
重要性:确保指令按顺序执行,控制程序流程
指令寄存器(IR)
功能:存储当前正在执行的指令
工作原理:从内存中取出的指令先放入IR,再由控制器进行译码
作用:为指令译码提供输入
指令译码器
功能:解析指令内容,确定操作类型和操作数
工作原理:将指令转换为控制信号,用于控制ALU和其他部件
重要性:是控制器将指令转换为具体操作的关键部件
时序部件
功能:产生时序信号,控制指令执行的各个阶段
基本信号:时钟脉冲(机器主频)是基本的时序信号
作用:为每条指令按时间顺序提供应有的控制信号
重要性:确保计算机各部件在正确的时间点执行相应的操作
控制器的工作原理:控制器根据指令译码结果,控制各个部件的工作,协调数据传输和处理过程,确保计算机系统高效运行。
2、CPU从主存获取指令地址的流程
1. PC (程序计数器) → AR (地址寄存器)
│ (PC存储下一条指令地址,传给AR)
↓
2. AR → 地址总线
│ (AR的地址通过总线发送到主存)
↓
3. 主存 (根据地址) → 数据总线
│ (主存返回指令内容到数据总线)
↓
4. 数据总线 → DR (数据缓冲寄存器)
│ (指令暂存到DR)
↓
5. DR → IR (指令寄存器)
│ (指令进入IR,供译码执行)
↓
6. IR → 控制器 (译码执行指令)
-
总结:
-
先从PC获取地址,
-
然后通过AR告诉主存,
-
主存根据地址获取数据,
-
数据通过DR进行传输
-
后续再进行译码和执行
-
-
起点:PC(程序计数器)始终保存下一条指令的地址(例如,PC=0x1000)。
-
核心动作:第一步
PC → AR是获取指令地址的必要操作(CPU必须先将地址送入AR,才能访问主存)。 -
为什么不是“从主存获取地址”? 地址由CPU内部PC提供,不是从主存获取。主存存储的是指令内容(如
MOV R1, R0),CPU用PC提供的地址去主存读取指令。
(三)Flynn分类算法
1、计算机体系结构分类-Flynn

(四)CISC与RISC

精简指令系统使用寄存器,原因是寄存器速度极快,效率极高。
complex(复杂的)、reduce(精简的)
(五)流水线技术
1、流水线-概念

1、2、3是模拟的三条指令
2、流水线周期及流水线执行时间计算
(1) 流水线计算
理论公式:总时间=第一条指令的执行时间+(总指令数-1)×流水线周期
实践公式:总时间=(总指令数+流水线阶段数-1)×流水线周期

(2)首先使用理论公式,没有理论公式的答案在使用实践公式。△t(流水线周期)、n(指令条数)、k(分几段,这里有取指、分析、执行,就是分了3段)
(3)流水线周期(执行时间最长的一段):2ns
(4)一条指令执行时间为:5ns
(5)100条指令全部执行完毕需要:5+99*2=203ns
3、流水线吞吐率计算

△t(流水线周期)
关于总吞吐率:
若连续输入 N 个相同任务,流水线的总耗时(Total Time,T 总) 由两部分组成:
- 启动期耗时:第一个任务需依次经过 n 个段,耗时 = n×T(从第一个任务输入到第一个任务输出的时间);
- 稳定期耗时:第 2~N 个任务每个仅需 1 个周期,耗时 = (N-1)×T(后续任务与前一个任务并行,每个周期输出 1 个)。
因此,总耗时公式为:
T 总 = n×T + (N-1)×T = (n + N - 1)×T
此时,N 个任务的总吞吐率为:
TP 总 = 任务总数 / 总耗时 = N / [(n + N - 1)×T]
示例 1:3 段流水线处理 100 个任务
已知:n=3 段,瓶颈段 T=2s,任务数 N=100。
- 总耗时 T 总 = (3 + 100 - 1)×2 = 102×2 = 204s
- 总吞吐率 TP 总 = 100 / 204 ≈ 0.49 任务 / 秒
- 稳定期吞吐率 TP 稳定 = 1/2 = 0.5 任务 / 秒(因 N 较大,TP 总接近 TP 稳定)
- 关于最大吞吐率
- 周期 T (或者△t)是流水线的 “最小时间间隔”(因为最慢功能段的时间无法缩短,否则该段会来不及处理任务);
- 稳定期内,每 1 个 T 就能输出 1 个任务,不可能做到 “比 1/T 更快”(比如 T=2ns,最快就是每 2ns 出 1 个任务,不可能 1ns 出 1 个 —— 因为最慢段需要 2ns 才能完成一次处理)。
因此,“1/T” 是流水线能达到的理论最高效率,即 “最大吞吐率”。
4、流水线的加速比计算
(1)流水线的加速比(越大越好)

(2) 流水线的效率


(六)存储系统
1、计算机层次化存储结构
寄存器(存在于运算器和控制器中):效率最高、运算最快、存储容量最小
Canche:高速缓冲存储器

注:(1)运算速度越快,存储容量越小。
(2)CPU可以与内存直接交换数据,但速度较慢。通过Cache(高速缓冲存储器)可以提高速度。
(3)按内容存取器(相联存储器):速度会远高于按地址存取
(4)如果问下面哪个的存取速度最快、效率最高:有寄存器选寄存器,无寄存器选Cache
2、Cache的基本概念

3、时间局部性与空间局部性
(1) 局部性原理

时间局部性:时间局部性是指被引用过一次的内存位置很可能在不远的将来再被多次引用。
空间局部性:空间局部性是指如果一个内存位置被引用了一次,那么程序很可能在不远的将来引用其附近的一个内存位置。
4、主存:随机存储器与只读存储器
(1) 主存-分类

注:随机存储器(RAM):断电不能存取 例如:内存
只读存储器(ROM):断电可以存取
(2) 主存-编址(重要)
例:8*4位的存储器:8个地址,每个地址能存4位。

- 关于进制:O :Octet, 八进制 B :Binary, 二进制
H :Hex, 十六进制 D :Decimal, 十进制
问题1:
解:因为内存地址范围ACOOOH—C7FFFH。H是单位代表16进制
地址计算:末地址-首地址+1 或 大-小+1
F是15 ,逢16进1 。8借一位就是16+8=24。C为12 ,24-C=12=C 。C借给8一位变成B。B为11,A为10,B-A=1
C7FFFH-AC000H+1=C7FFF+1-AC000=

问题2:
步骤 1:明确已知条件
- 内存按 16bit 编址,即每个内存地址单元需存储 16bit 数据。
- 内存总地址单元数:由(1)已算出为 112K(关键条件,需先用地址范围算出 )。
- 芯片参数:共 28 片存储芯片,每片芯片有 16K 个存储单元。
步骤 2:计算内存总容量
内存总容量 = 总地址单元数 × 每个单元编址位数
代入数据:总容量=112K×16 bit
步骤 3:建立芯片容量与总容量的关系
设每片芯片每个存储单元存储 *x* 位,则:
- 单芯片容量 = 芯片存储单元数 × 每个单元位数 = 16K×x
- 28 片芯片总容量 = 芯片数 × 单芯片容量 = 28×16K×x
步骤 4:列等式求解 x
因为 “内存总容量 = 28 片芯片总容量”,所以:112K×16 bit=28×16K×x
化简计算:
- 两边同时约去 16K(K 是容量单位,可直接约除 ),得到:112×1=28×x
- 解得:x=112/28=4
结论
每片芯片每个存储单元需存储 4 位,对应选项 A 。
5、磁盘工作原理
(1) 磁盘结构与参数
等待时间(旋转延迟时间)

(2) 试题

解:由题可知,磁盘旋转周期为33ms,共11个物理块,每块存放一个逻辑记录,则读取一个逻辑记录所要时间为3ms。
[1]最长时间:

按顺序依次处理,从R0开始时,读取R0所要时间为3ms,处理R0也需3ms,当处理完R0后,准备处理R1时,磁头经过6ms(读取+处理)却指在了R2的位置,因为系统使用单缓冲区顺序处理,这时想要处理R1就必须转一圈(需33ms+处理3ms=36ms),按照这个逻辑依次往后执行完R9,因为R10是最后一个数,所以R10所需时间为(读取3ms+处理3ms)=6ms;R0—R9所需时间为:
(33+3)*10=360,所以处理这11个数,最长时间为:360+6=366ms
[2]最优时间:

由题可知,读取一条记录需要3ms,处理一条记录需要3ms,若对信息进行优化分布后,即使读取+处理(共需6ms),处理完R0之后,接着处理R1,如图所示,即最少时间为(读取3ms+处理3ms)*11=66ms
(七)总线系统
1、计算机的总线

(八)可靠性
可靠性计算主要涉及三种系统,即串联系统、并联系统和冗余系统。
1、串联系统与并联系统的可靠度计算
(1)系统的可靠性分析—串联系统
假设一个系统由n个子系统组成,当且仅当所有的子系统都能正常工作时,系统才能正常工作,这种系统称为串联系统,如图1-8所示。
![]()

- 设系统各个子系统的可靠性分别用R1,R2...Rn表示,则系统的可靠性R = R1* R2 *R3...Rn。
- 如果系统的各个子系统的失效率分别用λ1,λ2.....λn来表示,则系统的失效率λ=λ1+λ2+...+λn。
(2)系统的可靠性分析—并联系统
假如一个系统由n个子系统组成,只要有一个子系统能够正常工作,系统就能正常工作,如图1-9所示。

- 设系统各个子系统的可靠性分别用R1,R2...Rn表示,则系统的可靠性R = 1-(1-R1)(1-R2)...(1-Rn)。
- 假如所有子系统的失效率均为λ ,则系统的失效率为μ
- 在并联系统中只有一个子系统是真正需要的,其余n-1个子系统都被称为冗余子系统。
- 该系统随着冗余子系统数量的增加,其平均无故障时间也会增加。
(3)系统的可靠性分析—模冗余系统(不常考)
m模冗余系统由m个(m=2n+1为奇数)相同的子系统和一个表决器组成,经过表决器表决后,m个子系统中占多数相同结果的输出可作为系统的输出,如图1-10所示。

在m个子系统中,只有n+1个或n+1个以上的子系统能正常工作,系统就能正常工作并输出正确结果。假设表决器是完全可靠的,每个子系统的可靠性为R0,则m模冗余系统的可靠性为R:
(4) 系统的可靠性分析—混合系统(常考)
先算并,在算串,乘起来

(九)校验码
1、校验码的概念
(1)差错控制-CRC与海明校验码
什么是检错和纠错?
检错:检查出错误来
纠错:不仅检查,还要纠正

注:综上所述,所谓码距,就是指在AB俩个码子之间需要改变多少位,变成另一个码字。这个所改变的位数,就被称为码距。
校验码的 “码距” 本质是衡量两个合法代码的 “差异程度”,核心分为两类:
- 汉明距离(Hamming Distance):对两个等长代码,统计 “对应位取值不同的位数”。
例:代码000与011,第 2、3 位不同→汉明距离 = 2;代码101与110,第 2、3 位不同→汉明距离 = 2。- 最小码距(d_min):一组编码中,所有两两合法代码的汉明距离的最小值。
例:用户提到的编码组{000, 011, 101, 110},所有两两距离均为 2→最小码距d_min=2;
再如 3 位重复码{000, 111},两两距离 = 3→d_min=3。⚠️ 关键结论:决定检错 / 纠错能力的是 “最小码距 d_min”,而非单个汉明距离—— 因为只要存在一对代码的距离过小,就会影响整体容错能力。
关于最小码距的计算:
- e = 最多能检测出的错误位数(检错能力);
- t = 最多能纠正的错误位数(纠错能力);
- d_min = 编码的最小码距。
则三者满足以下核心公式:
| 能力类型 | 核心公式 | 公式含义 | 示例(d_min=3) |
| 仅检错 | d_min ≥ e + 1 | 要检测 e 位错误,最小码距需至少比 e 大 1(确保错误后的编码不会与其他合法编码重合) | e+1 ≤3 → e≤2(最多检测 2 位错误) |
| 仅纠错 | d_min ≥ 2t + 1 | 要纠正 t 位错误,最小码距需至少比 2t 大 1(确保错误后的编码离原编码最近,能定位) | 2t+1 ≤3 → t≤1(最多纠正 1 位错误) |
| 既检错又纠错 | d_min ≥ e + t + 1(e > t) | 要纠正 t 位错误、同时检测 e 位错误(e>t),需满足此公式(避免把需检错的情况误判为纠错) | e+t+1 ≤3(e>t)→ t=1, e=1(纠正 1 位 + 检测 1 位) |
2、循环校验码(CRC)(重要)
可以进行检错,但不能进行纠错的编码


注:模2除法,进行异或运算,相同为0,不同为1。
例题:

注:
(1)其生成的多项式为:x的4次方,表示在2的4次方的位置为1;x的3次方,表示在2的3次方位置为1;x的平方没有,则表示在x的平方的位置为0;x的1次方,表示在2的1次方的位置为1;1代表x的0次方,表示在x的0次方的位置为1。
(2)综上所述:生成的多项式为11011,进行运算时,还要在原始报文的后面补0(补多项式的个数-1,即5-1=4,补4个0)。
(3)对其进行CRC编码后的结果为:进行模2除法后,得到的0011,替换掉所补的4个0,即最终结果为:110010101010011
3、海明纠错码(难点,考察频率较高)
海明码是一种纠错码,由Richard Hamming于1950年提出,主要用于检测和纠正数据传输中的单比特错误。它的核心思想是通过在原始数据中插入额外的校验位(Parity Bits),使得每个校验位覆盖特定的数据位组合,从而定位并纠正错误。

注:r2=I4异或I3异或I2:原因:2的2次方在7、6、5中出现了,所以r2等于765所在位置的信息位异或。



这里用的⊕异或的方式去计算:

| H7 | H6 | H5 | H4 | H3 | H2 | H1 | 位数 |
| D4 | D3 | D2 | D1 | 信息位 | |||
| P3 | P2 | P1 | 校验位 |
| H7 | H6 | H5 | H4 | H3 | H2 | H1 | 位数 |
| 1 | 0 | 1 | 0 | 信息位 | |||
| 0 | 1 | 0 | 校验位 |
P1=H3⊕H5⊕H7 = 0⊕1⊕1 = 0
P2=H3⊕H6⊕H7 = 0⊕0⊕1 = 1
P3=H5⊕H6⊕H7 = 1⊕0⊕1 = 0
注:⊕表示异或,相同为0,不同为1
好的,我们来一步步计算信息位为 1010 的海明码。详细步骤如下:
步骤 1: 确定海明码的结构
海明码是一种能够检测并纠正单比特错误的编码。它通过在原始信息位中插入校验位(也称奇偶校验位)来实现。
首先,我们需要确定需要多少个校验位。设信息位的数量为 k,校验位的数量为 r,则它们需要满足不等式:
2^r >= k + r + 1
- 我们的信息位是 1010,所以 k = 4。
- 尝试不同的 r 值:
- r = 1: 2^1 = 2,k + r + 1 = 4 + 1 + 1 = 6。2 >= 6 不成立。
- r = 2: 2^2 = 4,k + r + 1 = 4 + 2 + 1 = 7。4 >= 7 不成立。
- r = 3: 2^3 = 8,k + r + 1 = 4 + 3 + 1 = 8。8 >= 8 成立。
因此,我们需要 r = 3 个校验位。
步骤 2: 确定校验位的位置
海明码的总长度为 n = k + r = 4 + 3 = 7 位。
校验位的位置是 2 的幂次方,即 1, 2, 4, 8, ...。在我们的例子中,校验位将位于位置 1, 2, 4。
信息位则填充到剩下的位置。
我们将这7位从右到左编号为 1 到 7。
| 位置 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
| 类型 | D4 | D3 | D2 | P3 | D1 | P2 | P1 |
| 值 | 1 | 0 | 1 | ? | 0 | ? | ? |
其中:
- D 代表数据位(信息位)。
- P 代表校验位。
- D4 D3 D2 D1 = 1010(原始信息位,从左到右填入)。
- P1, P2, P3 是我们需要计算的校验位。
步骤 3: 计算校验位的值
每个校验位负责对其特定位置的位进行奇偶校验(通常使用偶校验,即所有被校验的位和该校验位本身加起来,1 的个数为偶数)。
校验位的位置及其覆盖的位如下:
- P1 (位置 1):覆盖所有位置号,其二进制表示中最低位(第0位)为1的位。
- 这些位置是:1 (001), 3 (011), 5 (101), 7 (111)。
- 即 P1 校验 P1, D1, D2, D4。
- P2 (位置 2):覆盖所有位置号,其二进制表示中第二位(第1位)为1的位。
- 这些位置是:2 (010), 3 (011), 6 (110), 7 (111)。
- 即 P2 校验 P2, D1, D3, D4。
- P3 (位置 4):覆盖所有位置号,其二进制表示中第三位(第2位)为1的位。
- 这些位置是:4 (100), 5 (101), 6 (110), 7 (111)。
- 即 P3 校验 P3, D2, D3, D4。
现在,我们根据当前已知的数据位来计算每个校验位的值,使得对应组的偶校验成立。
- 计算 P1:
- 涉及的位:P1, D1, D2, D4。
- 当前值:P1, 0, 1, 1。
- 为了使 P1 + 0 + 1 + 1 的和为偶数个1(即0个或2个或4个...),P1 必须是 0。
- 0 + 0 + 1 + 1 = 2(偶数个1)。
- 因此,P1 = 0。
- 计算 P2:
- 涉及的位:P2, D1, D3, D4。
- 当前值:P2, 0, 0, 1。
- 为了使 P2 + 0 + 0 + 1 的和为偶数个1,P2 必须是 1。
- 1 + 0 + 0 + 1 = 2(偶数个1)。
- 因此,P2 = 1。
- 计算 P3:
- 涉及的位:P3, D2, D3, D4。
- 当前值:P3, 1, 0, 1。
- 为了使 P3 + 1 + 0 + 1 的和为偶数个1,P3 必须是 0。
- 0 + 1 + 0 + 1 = 2(偶数个1)。
- 因此,P3 = 0。
除了上述偶校验计算方案,我们还可以结合图,直接使用⊕异或的形式去计算,方案如下【校验位的计算还是参考步骤2】:
其中:
- D 代表数据位(信息位)。
- P 代表校验位。
- D4 D3 D2 D1 = 1010(原始信息位,从左到右填入)。
- P1, P2, P3 是我们需要计算的校验位。
H7
H6
H5
H4
H3
H2
H1
位数
D4
D3
D2
D1
信息位
P3
P2
P1
校验位
H7
H6
H5
H4
H3
H2
H1
位数
1
0
1
0
信息位
P3
P2
P1
校验位
结合图与表可知:
- P1=H3⊕H5⊕H7 = 0⊕1⊕1 = 0
- P2=H3⊕H6⊕H7 = 0⊕0⊕1 = 1
- P3=H5⊕H6⊕H7 = 1⊕0⊕1 = 0
注:⊕表示异或,相同为0,不同为1
步骤 4: 构建完整的海明码
将计算出的校验位填入它们对应的位置:
| 位置 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
| 类型 | D4 | D3 | D2 | P3 | D1 | P2 | P1 |
| 值 | 1 | 0 | 1 | 0 | 0 | 1 | 0 |
因此,信息为 1010 的完整海明码(从左到右,从高位到低位)是:1010010

文档说明:希赛教育王勇老师软件设计师教学课程,这里学习整理后进行分享

1179

被折叠的 条评论
为什么被折叠?



