一. 计算机组成与体系结构
1. 数据的表示
(1)进制转换
进制 | 数码 | 基数 | 位权 |
十进制(D) | 0,1,2,3,4,5,6,7,8,9 | 10 | |
二进制(B) | 0,1 | 2 | |
十六进制(H) | 0~9,A,B,C,D,E,F | 16 |
按权展开法:
二进制 10100.01 = 1 × + 0 + 1 ×
+ 0 + 0 + 0 + 1 ×
七进制 604.01 = 6 × + 0 + 4 ×
+ 0 + 1 ×
其余进制类似,替换基数即可。
除基取余法:
94 转换为二进制数,
94 / 2 = 47 余 0
47 / 2 = 23 余 1
23 / 2 = 11 余 1
11 / 2 = 5 余 1
5 / 2 = 2 余 1
2 / 2 = 1 余 0
1 / 2 = 0 余 1
直到商为0,得到结果从下往上记录,即 1011110。
转换为十六进制数类似,除以16即可,
94 / 16 = 5 余 14(E)
5 / 16 = 0 余 5
得到结果 5E,通常在后面再加一个 H 表示十六进制,即5EH。
减法(快速转换):
;
;
;
;
;
;
;
;
;
;
94 转换为二进制,
64 < 94 < 128,小于且离 94 最近的乘幂为 ,94 - 64 = 30
16 < 30 < 32,小于且离 30 最近的乘幂为 ,30 - 16 = 14
8 < 14 < 16,,14 - 8 = 6
4 < 6 < 8,,6 - 4 = 2
2 - 2 = 0,
结果为 1011110,
位号 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
取值 | 1 | 0 | 1 | 1 | 1 | 1 | 0 |
二进制转八进制与十六进制:
10001110
转八进制:从最右侧开始,三位为一个整体,高位不够三位补 0。
即 010 001 110 -> 2 1 6
转十六进制:从最右侧开始,四位为一个整体,高位不够补 0。
即 1000 1110 -> 8 E
(2)原/反/补/移码
原码:最高位是符号位,其余低位表示数值的绝对值。
反码:正数的反码与原码相同,负数的反码使其绝对值按位取反,符号位不变。
补码:正数的补码与原码相同,负数的补码使其反码末位加 1 ,符号位不变。
移码:补码的符号位按位取反。
数值 1 | 数值 -1 | 1+(-1) | |
原码 | 0 000 0001 | 1 000 0001 | 1 000 0010 |
反码 | 0 000 0001 | 1 111 1110 | 1 111 1111 |
补码 | 0 000 0001 | 1 111 1111 | 0 000 0000 |
移码 | 1 000 0001 | 0 111 1111 | 1 000 0000 |
通常只有补码参与计算,因为其计算结果最为准确:1-1=0,对应 0 000 0000。
码制 | 定点整数 | 定点小数 | 码数个数 |
原码 | |||
反码 | |||
补码 | |||
移码 |
可以采用 n = 3 验证,即计算机采用三位的数字表示形式。
整数有:000,001,010,011,100,101,110,111。共 8 种数字。
但 000 和 100 分别表示 +0 和 -0,因此排除 -0,即码数为 7个(原、反)。
在补码和移码中,多了人为规定,没有排除 -0,而是重新利用 -0 ,即 100,并将其看成一个整体,即 ,所以码数仍然为 8 个(补、移)。
小数有:0.00,0.01,0.10,0.11,1.00,1.01,1.10,1.11。共 8 种数字。
原码和反码种同样存在 +0 与 -0,排除 -0,码数为 7 。
补码和移码也同样利用 -0,即 1.00,将其当作完整的数字 -1。所以补码和移码的范围从 -1 开始,并且码数个数为 8 个。
例题1:
采用 n 位补码(包含一个符号位)表示数据,可以直接表示数值()。
A. B.
C.
D.
解析1:
假设 n = 3,分别对应四个选项为 8,-8,4,-4。应当想到补码中有一个人为规定,100 为 -0,重新利用,被当作 。即 -4,所以选D。或者直接想到其取值范围,n = 3 时补码的取值范围是 -4 ~ +3。
例题2:
如果 "2X" 的补码时 "90H",那么 X 的真值为()。
A.72 B.-56 C.56 D.111
解析2:
90H 是十六进制数,先转换成二进制数为 1001 0000,并且是补码。需要求真值,即原码,那么需要先将补码转换成反码,再转换成原码。
负数的原码到反码是符号位不变,按位取反,再到补码是反码末位加 1,符号位不变。
那么反过来就是,补码到反码,末位减 1,即 1001 0000 减 1,得到 1000 1111(减一不够就借位,借到第 4 位的 1。),然后再按位取反,得到 1111 0000。但此时仍是 2X 的原码,需要再除以 2,可以先得到原数值为 - 0111 0000,即 = -56。其实在看到 1111 0000时已经能得到答案是负数,选B即可。
(3)浮点数运算
浮点数表示:N = 尾数 * 基数 ^ 指数
指数也叫阶码,通常是定点整数;尾数通常是定点小数。
运算过程:对阶 -> 尾数计算 -> 结果格式化(将尾数限定在 0.5 -1 之间)
特点:
- 一般尾数用补码,阶码用移码。
- 阶码的位数决定数的表示范围,位数越多范围越大。
- 尾数的位数决定数的有效精度,位数越多精度越高。
- 对阶时,小数向大数看齐。
- 对阶是通过较小数的尾数右移实现的(相对于小数点右移)。
例如:计算 ×
+
×
小数向大数看齐, ->
;小数尾数右移,1.25 -> 0.000125,即
×
。
相加得, ×
。
例题1:
浮点数能够表示的数的范围是由其()的位数决定的。
A.尾数 B.阶码 C.数符 D.阶符
解析1:
阶码的位数决定数的表示范围,位数越多范围越大,选B。尾数的位数决定精度;数符就是尾数的符号,决定整个浮点数的正负;阶符就是阶码的符号。
例题2:
设 16 位浮点数,其中阶符 1 位,阶码值 6 位,数符 1 位,尾数 8 位。若阶码用移码表示,尾数用补码表示,则该浮点数所能表示的数值范围是()。
A.
B.
C.
D.
解析2:
首先看阶码,阶符 1 位,阶码值 6 位,即 n = 7,且用移码表示,那么能表示的最小数字是,1 000 000,即 = -64,最大数字是 0 111 111,即 63,那么能表示的范围是
,先排除选项AC。再来看尾数,数符 1 位,尾数 8 位,即 n = 9,且用补码表示,那么最小值为 -1,最大值为 0 1111 1111。BD选项最大值相同,看最小值,B为 -1 ×
,D为 (-1 +
)
,显然B选项的最小值更小,所能表示的范围更小,并且尾数部分能取到最小值 -1,因此选B。不要忘记补码移码中的人为规定。
(4)逻辑运算
关系运算符及其优先次序:
<, <=, >, >= 优先级相同(高)
==, != 优先级相同(低)
关系运算符的优先级低于算术运算符(+,-,×,÷),但高于赋值运算符(=)。
逻辑运算符及其优先次序:
逻辑或 ||:连接的两个逻辑值全为 0 时才取 0。(有一个为 1 则取 1)
逻辑与 &&:连接的两个逻辑值全为 1 时才取 1。(有一个为 0 则取 0)
逻辑异或 :连接的两个逻辑值不相同时取 1,相同时取 0。
逻辑非 !:将原逻辑值取反。
各类运算符优先次序:
!> 算术运算符(先乘除后加减)> 关系运算符(先比较再等于)> && > || > 赋值运算符
短路原则:
在逻辑表达式求解中,并非所有的逻辑运算符都要被执行。
(1) a && b && c,只有 a 为真时,才需要判断 b,ab 都真,才判断 c。
(2)a || b || c,只要 a 为真,则不必判断 b 和 c。只有 a 为假,才判断 b,ab 都为假,判断 c。
例如:(m = a > b)&&(n = c > d),a = 1,b = 2,c = 3,d = 4,m = n = 1。
首先判断 a > b 为假,等于 0 ,那么 m = 0,并且是逻辑与运算,所以整个表达式直接为假,不再需要进行后续判断,n 的值仍为 1 ,未被赋值为 0。
例题1:
要判断字长为 16 位的整数 a 的低四位是否全为 0 ,则()。
A.将 a 与 0x000F 进行逻辑与运算,然后判断结果是否等于 0。
B.将 a 与 0x000F 进行逻辑或运算,然后判断结果是否等于 F。
C.将 a 与 0x000F 进行逻辑异或运算,然后判断结果是否等于 0。
D.将 a 与 0x000F 进行逻辑与运算,然后判断结果是否等于 F。
解析1:
首先看到 0x000F,想到是十六进制数,并且 F 的二进制数为 1111。那么和低四位进行判断,假设低四位全为0,则 A 选项是 1111 && 0000,结果为 0 ,如果低四位不全为 0,那么结果就不是 0,所以 A 选项正确,D 选项错误。B 选项,低四位全是 0,那么 1111 || 0000,结果为 1111,如果低四位不全为 0 ,那么结果也是 1111,所以 B 选项错误。C 选项,1111 0000,结果为 1111,1111
0010,结果为 1101,结果都不为 0 ,所以 C 错误。
例题2:
对布尔表达式进行短路求值。"a or ((c<d) and b)",()时可进行短路计算。
A.d 为 true B.a 为 true C.b 为 true D.c 为 true
解析2:
进行短路计算,也就是不需要执行所有操作符,那么 a = 1 时,直接整个表达式为真,所以选 B。
2. 校验码
用于检测传送的数据是否出错。
码距:任何一种编码都由许多码字构成,任意两个码字之间最少变化的二进制位数就称为数据校验码的码距。
例如:4 位二进制数表示 16 种状态,则有 16 个不同的码字(0000,0001,0010,…),此时码距为 1。如 0000 与 0001。
(1)奇偶校验
由若干位有效信息,再加一个二进制位(校验位)组成校验码(可以加在信息位前面也可以是后面)。
奇校验:整个校验码(有效信息位和校验位)中 "1" 的个数为奇数。
偶校验:整个校验码(有效信息位和校验位)中 "1" 的个数为偶数。
例如:性别表示,男:0 女:1
奇校验中 1 的个数为奇数,那么性别可表示为,男:01 女:10。当接收到信息会检查其中 1 的个数,如果收到的是 00 或 11,那么就不满足奇校验。
反之,偶校验中 1 的个数为偶数,那么性别可表示为,男:00 女:11。如果接收到的信息是 01 或 10,那么不满足偶校验。
但如果发送的数据是 11,接收到的是 00,那么依然满足偶校验,所以无法发现问题。
因此可以得出结论,奇偶校验在检错上存在一定局限性,仅能检查出一位或者奇数个数据位的错误,并且不能纠错。
例题:
以下关于采用一位奇校验方法的叙述中,正确的是()。
A.若所有奇数位出错,则可以检测出该错误但无法纠正错误。
B.若所有偶数位出错,则可以检测出该错误并纠正错误。
C.若有奇数个数据位出错,则可以检测出该错误但无法纠正错误。
D.若有偶数个数据位出错,则可以检测出该错误并纠正错误。
解析:
奇偶校验中出错的表示是奇数或偶数个数据位,而不是奇数位或偶数位,所以排除AB。并且根据结论,奇偶校验只能检测出奇数个数据位出错,并且不能纠错,所以选C。
(2)CRC 循环冗余校验
在 k 位信息码之后拼接 r 位校验码。
r 位校验码的具体个数由生成多项式决定,生成多项式是发送方和接收方在发送前就已约定好的。
把接收到的 CRC 码用约定的生成多项式 G(X) 去除(模二除法),如果正确,则余数为 0;如果某一位出错,则余数不为 0。不同的位数出错其余数不同,余数和出错位序号之间有唯一的对应关系。
CRC 循环冗余校验可检错(不一定是奇数个),不可纠错。校验码一般拼接在信息位尾部。
(3)海明校验
在有效信息位中加入几个校验位形成海明码,使码距比较均匀地拉大,并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化,这不但可以发现错误,还能指出错误的位置,为自动纠错提供依据。
校验码数量公式:,其中 r 代表校验码个数,m 代表信息位个数。
例如:16 位信息位,即 m = 16,那么 ,所以 r 至少是 5。
r 是 5,那么校验码在数据中的位置是:,
,
,
,
,即第 1、2、4、8、16 位,是穿插着放在数据中的。
海明校验即能检错又可以纠错。
例题1:
以下关于海明码的叙述中,正确的是()。
A.海明码利用奇偶性进行检错和纠错。
B.海明码的码距为 1。
C.海明码可以检错但不能纠错。
D.海明码中数据位的长度与校验位的长度必须相同。
解析1:
首先排除 CD 两项,海明码既能检错也能纠错,并且根据公式 ,m 和 r 一定是不相同的。校验码的原理是通过扩大码距来进行校验,所以码距不是 1,具体码距为多少与编码有关,B选项错误。根据海明码的原理,把海明码的每个二进制位分配到几个奇偶校验组中可知,A 选项正确。
例题2:
对于 32 位的数据,至少需要增加()个校验位才能构成海明码。
A. 3 B. 4 C. 5 D. 6
以 10 位数据为例,其海明码表示,其中 D 表示数据位,P 表示校验位,数据位
由
进行校验(从右至左
的位序为 14,即等于 8+4+2,因此用第 8 位的
,第 4 位的
和第 2 位的
校验),则数据位
由()校验。
A. B.
C.
D.
解析2:
第一问根据公式即可得出,,所以 r = 6,选 D。
第二问实则是找规律的题目,因为 14 = 8+4+2,那么 的位序是10,10 = 8+2,因此用第 8 位的
和第 2 位的
校验,选 B。
(4)校验码总结
校验码位数 | 校验码位置 | 检错 | 纠错 | 校验方式 | |
奇偶校验 | 1 | 拼接在头部或尾部 | 可检奇数个数据位错 | 不可纠错 | 奇校验:1 的个数是奇数个 偶校验:1 的个数是偶数个 |
CRC 循环冗余校验 | 生成多项式决定 | 拼接在尾部 | 可检错 | 不可纠错 | 模二除法求余数 |
海明校验 | 穿插在信息位中间 | 可检错 | 可纠错 | 分组奇偶校验 |
3. 计算机系统硬件基本组成
由运算器、控制器、存储器、输入设备和输出设备 5 大部件组成。
运算器和控制器组成中央处理单元(CPU),相当于计算机的大脑,用于数据的加工处理;存储器是计算机系统中的记忆设备,分为内存和外存,内存速度快、容量小,一般用于临时存放程序、数据及中间结果,也就是常说的 8G、16G、32G内存等,外存容量大、速度慢,可以长期保存数据,也就是常说的 512G、1T固态硬盘等;输入输出设备统称为外设,即鼠标、键盘、显示器等。
4. CPU
CPU 由运算器和控制器组成。
运算器中包括:
- 算术逻辑单元 ALU:数据的算术逻辑和逻辑运算。
- 累加寄存器 AC:通用寄存器,为 ALU 提供一个工作区,用于暂存数据。
- 数据缓冲寄存器 DR:写内存时,暂存指令或数据。
- 状态条件寄存器 PSW:存状态标志与控制标志。(有时也将其归为控制器,有争议)
控制器中包括:
- 程序计数器 PC:存储下一条要执行指令的地址。
- 指令寄存器 IR:存储即将执行的指令。
- 指令译码器 ID:对指令中的操作码字段进行分析解释。
- 时序部件:提供时序控制信号。
例题1:
计算机中提供指令地址的程序计数器 PC在()中。
A.控制器 B.运算器 C.存储器 D.I/O设备
解析1:
程序计数器 PC存储下一条将要执行指令的地址,位于控制器中,选A。
例题2:
CPU 执行算术运算或逻辑运算时,常将源操作数和结果暂存在()中。
A.程序计数器(PC) B.累加器(AC) C.指令寄存器(IR) D.地址寄存器(AR)
解析2:
虽然题目开头提到了算术运算和逻辑运算,和 ALU 相关,但问的是暂存数据的结构,所以选 B。
5. 寻址方式
指令的基本概念:一条指令就是机器语言的一个语句,它是一组有意义的二进制代码。
指令的基本格式是:
OP 代表操作码,A 代表地址。可以有零地址指令、单地址指令或多地址指令等。
寻址方式:
- 立即寻址方式:操作数直接在指令中,速度快,灵活性差。
- 直接寻址方式:指令中存放的是操作数的地址。
- 间接寻址方式: 指令中存放了一个地址,这个地址对应的内容是操作数的地址。
- 寄存器寻址方式:寄存器存放操作数。
- 寄存器间接寻址方式:寄存器内存放的是操作数的地址。
6. CISC 和 RISC
它们是指令集发展的两种途径。CISC 是复杂指令集计算机,RISC 是精简指令集计算机。
指令系统类型 | 指令 | 寻址方式 | 实现方式 | 其它 |
CISC | 数量多,使用频率差别大,可变长格式 | 支持多种 | 微程序控制技术 | 研制周期长 |
RISC | 数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器,只有 Load/Store 操作内存 | 支持方式少(寄存器寻址为主) | 增加了通用寄存器;硬布线逻辑控制为主;适合采用流水线 | 优化编译,有效支持高级语言 |
总结:
CISC:复杂,指令数量多,使用频率差别大,有多种寻址方式。
RISC:精简,指令数量少,使用频率接近,操作寄存器,单周期,少寻址(以寄存器寻址为主),多通用寄存器,流水线,高级语言支持。
例题:
以下关于 RISC 技术的叙述中,错误的是()。
A.指令长度固定,指令种类少。
B.指令功能强大,寻址方式复杂多样。
C.增加寄存器数目以减少访存次数。
D.用硬布线电路实现指令解码,快速完成指令译码。
解析:
根据 RISC 的特点,可知选项 B 错误,寻址方式多是 CISC 的特点。
7. 流水线
流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。
常见的参数计算:流水线执行时间、流水线吞吐率。
假设将指令的执行分为三个步骤:取指、分析、执行。每一步的执行时间为 1 ms。
如果是串行,那么执行时间就是 1 + 1 + 1 = 3 ms。
但流水线是准并行形式,即:
流水线周期为各个阶段执行时间最长的一段。上述三个阶段都是 1 ms,那么流水线周期就是 1 ms,如果三个阶段分别是 3 ms、4 ms、5 ms,则流水线周期是 5 ms。
执行时间公式:1 条指令执行时间 + (指令条数 - 1)* 流水线周期
理论公式(优先使用):
实际公式:
t 为指令执行中各步骤最长的时间,k 为执行的步骤数,n 为指令数。
上述图片中三条指令的执行过程可以划分为两个阶段,第一个阶段是 0 ~ 3 ms,为第一条指令执行时间,即流水线建立时间,第二个阶段是 3 ms之后,每个流水线周期完成一条指令。
例题1:
一条指令的执行过程可以分解为取值、分析和执行三步,取值时间为 3t、分析时间为 2t、执行时间为 4t。若按串行方式执行,则 10 条指令执行完需要()t;若按流水线方式执行,流水线周期为()t,全部执行完需要()t。
解析1:
串行执行,即顺序执行,10 条指令需要( 3 + 2 + 4)* 10 = 90t。
流水线执行,流水线周期为各步骤执行时间最长的,即执行阶段,4t,10 条指令执行完需要( 3 + 2 + 4)+(10 - 1)* 4 = 45t。如果使用实际公式,则是 3 * 4 +(10 - 1)* 4 = 48t。
流水线吞吐率是指在单位时间内流水线所完成的任务数量或输出的结果数量。
计算公式为:TP = 指令条数 ÷ 流水线执行时间
流水线最大吞吐率:
例题2:
指令取值、分析和执行时间依然分别是 3t、2t、4t,10 条指令的吞吐率和最大吞吐率是?
解析2:
根据公式可得,TP = 10 / 45t, = 1 / 4t。
例题3:
下列关于流水线方式执行指令的叙述中,错误的是()。
A.流水线方法可提高单条指令的执行速度。
B.流水线方式下可同时执行多条指令。
C.流水线方式提高了各部件的利用率。
D.流水线方式提高了系统的吞吐率。
解析3:
无论是在串行还是流水线方式,单条指令的执行都是 3 + 2 + 4 = 9t,A 选项错误。选项 B 正确,准并行方式。C 选项是因为流水线方式利用了串行方式中的碎片化时间,所以提高了各部件的利用率。流水线方式使得指令执行时间缩短,根据公式可以得出,系统的吞吐率提高,D 选项正确。
8. 存储系统
(1)层次化存储结构
读取速度由慢到快:外存(辅存) — 内存(主存)— Cache(缓存)— CPU
容量由大到小:同上。
外存,即硬盘、光盘、U盘等外接设备,通常能够达到 1T 左右的容量;内存,分两类,随机存储器(RAM)和只读存储器(ROM),常见的有 8G、16G等;Cache,告诉缓存,按内容存取,通常以 兆(M)为存取单位;CPU,包含各类寄存器,最快且容量最小,通常以 bit 为单位,即常见的 32 位或 64 位操作系统。
局部性原理是层次化存储结构的支撑,它又分为:
- 时间局部性:刚被访问的内容,立即又被访问。(循环体)
- 空间局部性:刚被访问的内容,临近的空间很快被访问。(顺序性)
一般将外存和内存称为虚拟存储体系,将外存、内存和 Cache 称为三级存储体系。
层次化存储结构的分类:
- 存储器位置:
内存和外存。
- 存取方式:
按内容存取,相联存储器(如 Cache);
按地址存取,随机存取存储器(如内存)、顺序存取存储器(如磁带)、直接存取存储器(如磁盘)。
- 工作方式:
随机存取存储器 RAM(如内存 DRAM),掉电丢失。
只读存储器 ROM(如 BIOS),掉电保留。
例题1:
CPU 访问存储器时,被访问数据一般聚集在一个较小的连续存储区域中。若一个存储单元已被访问,则其邻近的存储单元有可能还要被访问,该特性被称为()。
A.数据局部性 B.指令局部性 C.空间局部性 D.时间局部性
解析2:
根据空间局部性特点可得选 C。没有 AB 选项这两种说法。
例题2:
虚拟存储体系由()两级存储器构成。
A.主存-辅存 B.寄存器-Cache C.寄存器-主存 D.Cache-主存
解析2:
一般将外存和内存称为虚拟存储体系,因此选 A。
(2)Cache
在计算机的存储系统体系中,Cache 是访问速度仅次于 CPU(寄存器)的层次。
使用 Cache 改善系统性能的依据是程序的局部性原理。
如果以 h 代表对 Cahce 的访问命中率(一般在 90%~100%), 表示 Cache 的周期时间,
表示主存储器周期时间,以读操作为例,使用 "Cache + 主存储器" 的系统的平均周期为
,则:
= h ×
+ (1-h) ×
,其中,(1-h)又称为失效率、未命中率。
意思就是,在 Cache 中有大概 90% 左右的概率查到数据,如果没查到,那么 10% 的概率就是从主存中查。
假设 Cache 访问命中率为 90%, = 1ms,
= 100ms,则
= 10.9ms,依然也很快,比单纯的从主存中查要快很多。
主存与 Cache 之间的三种地址映射方式:
- 直接相联映像:硬件电路较简单,但冲突率很高。主存与 Cache 之间只能对应映射。
- 全相联映像:硬件电路相对困难,冲突率较低。主存与 Cache 之间可以随意映射。
- 组相联映像:是直接相联与全相联的折中。二者折中,两页为一组,组外对应映射,组内随意映射。
这些地址映射由硬件直接完成。
冲突率 | 电路复杂度 | |
直接相联映像 | 高 | 简单 |
全相联映像 | 低 | 复杂 |
组相联映像 | 中 | 折中 |
例题1:
以下关于 Cache 的叙述中,不正确的是()。
A.Cache 的设置扩大了主存的容量。
B.Cache 的内容是主存部分内容的拷贝。
C.Cache 的命中率并不随其容量增大线性地提高。
D.Cache 位于主存与 CPU 之间。
解析1:
根据 Cache 的定义,首先排除 BD 选项。C 选项,容量增大命中率肯定会相对增大,但并非是线性地提高,随着容量不断增大,命中率增大的会越来越缓慢,趋近于平稳,所以不是线性,C 正确。Cache 是介于主存与 CPU 之间的结构,所以并不能扩大主存的容量,A 选项错误。
例题2:
主存与 Cache 的地址映射方式中,()方式可以实现主存任意一块装入 Cache 中任意位置,只有装满才需要替换。
A.全相联 B.直接映射 C.组相联 D.串并联
解析2:
任意对任意,即随意映射,所以是全相联映射,冲突率低,电路复杂。
(3)主存编址计算
bit(比特位)■
4 bit(字长为 4 bit)■■■■ 可以看成一个存储单元
一个 32 位的存储器是由 8 行 4 bit的存储单元组合而成。
一个 64 位的存储器是由 16 行 4 bit的存储单元组合而成,或 8 行 8 bit(1B/一个字节)的存储单元组合而成。
存储单元:
存储单元个数 = 最大地址 - 最小地址 + 1
编址内容:
按字编址:存储体的存储单元是字存储单元,即最小寻址单位是一个字。
按字节编址:存储体的存储单元是字节存储单元,即最小寻址单位是一个字节。
总容量:
总容量 = 存储单元个数 × 编址内容 = 每个芯片的容量 × 总片数
例题:
内存按字节编址,地址从 A0000H 到 CFFFFH的内存,共有()字节,若用存储容量为 64K × 8 bit的存储器芯片构成该内存空间,至少需要()片。
A.80KB B.96KB C.160KB D.192KB
A.2 B.3 C.5 D.8
解析:
首先看到内存按字节编址,即 8 bit。地址为十六进制数,存储单元个数为:最大地址 - 最小地址 + 1,即 CFFFF + 1 - A0000 = D0000 - A0000 = 30000H,即 。
总容量为:存储单元个数 × 编址内容,即 × 8 bit。因为,8bit = 1B;1K = 1024B =
B;1M = 1024K =
B;1G = 1024M =
B,所以
× 8 bit ÷
B = 192K。
需要芯片数量:总容量 ÷ 每个芯片的容量 = 192K ÷ 64K × 1B = 192 / 64 = 3 片。
所以答案是 D 和 B。
后续会慢慢更新。
标签:知识点,补码,Cache,软考,校验,指令,流水线,设计师,例题 From: https://blog.csdn.net/konghaoran1/article/details/140101304