目录
- 第四章
- 4.1解释概念:主存、辅存、Cache、RAM、SRAM、DRAM、ROM、PROM、EPROM、EEPROM、CDROM、Flash Memory。
- 4.2 计算机中哪些部件可用于存储信息,按其速度、容量和价格/位排序说明。
- 4.3存储器的层次结构主要体现在什么地方,为什么要分这些层次,计算机如何管理这些层次?
- 4.4 说明存取周期和存取时间的区别。
- 4.5什么是存储器的带宽?若存储器的数据总线宽度为32位,存取周期为200ns,则存储器的带宽是多少?
- 4.6机字长为32位,存储容量是64KB,按字编址其寻址范围是多少?若主存以字节编址,试画出主存字地址和字节地址的分配情况。
- 4.7 一个容量为16 K×32 位的存储器,其地址线和数据线的总和是多少?当选用下列不同规格的存储芯片时,各需要多少片?1 K×4位,2K×8位,4 K×4位,16 K×1位,4 K×8位,8 K×8位
- 4.8试比较静态RAM和动态RAM。
- 4.9什么叫刷新?为什么要刷新?说明刷新有几种方法。
- 4.10 半导体存储器芯片的译码驱动方式有几种?
- 4.11一个8K×8位的动态RAM芯片,其内部结构排列成256×256形式,读/写周期为0.1μs。试问采用集中刷新、分散刷新及异步刷新三种方式的刷新间隔各为多少?
- 4.12画出用1024×4位的存储芯片组成一个容量为64Kx8位的存储器逻辑框图。要求将64K分成4个页面,每个页面分16组,共需多少片存储芯片?
- 4.13 设有一个64K×8位的RAM芯片,试问该芯片共有多少个基本单元电路(简称存储基元)?欲设计一种具有上述同样多存储基元的芯片,要求对芯片字长的选择应满足地址线和数据线的总和为最小,试确定这种芯片的地址线和数据线,并说明有几种解答。
- 4.14某8位微型计算机地址码为18位,若使用4K×4位的RAM芯片组成模块板结构的存储器,试问:
- 4.15设CPU共有16根地址线,8根数据线,并用 M R E Q ‾ \overline{MREQ} MREQ(低电平有效)作访存控制信号, R / W ‾ R/\overline W R/W作读/写命令信号(高电平为读,低电平为写)。现有这些存储芯片:ROM(2K×8位,4K×4位,8K×8位),RAM(1K×4位,2K×8位,4K×8位)及74138译码器和其他门电路(门电路自定)。
- 4.16CPU假设同上题,现有8片8K×8位的RAM芯片与CPU相连。
- 4.17 写出1100、1101、1110、1111对应的汉明码。
- 4.18 已知接收到的汉明码(按配偶原则配置)为1100100、1100111、1100000、1100001,检查上述代码是否出错?第几位出错?
- 4.19 已知接收到下列汉明码,分别写出它们所对应的欲传送代码。
- 4.20 欲传送的二进制代码为1001101,用奇校验来确定其对应的汉明码,若在第6位出错,说明纠错过程。
- 4.21 为什么在汉明码纠错过程中,新的检测位 P 4 P 2 P 1 P_4P_2P_1 P4P2P1的状态即指出了编码中错误的信息位?
- 4.22某机字长为16位,常规的存储空间为64K字,若想不改用其他高速的存储芯片,而使访存速度提高到8倍,可采取什么措施?画图说明。
- 4.23设CPU共有16根地址线,8根数据线,并用 M / I O ‾ M/\overline{IO} M/IO作为访问存储器或I/O的控制信号(高电平为访存,低电平为访I/O), W R ‾ \overline{WR} WR(低电平有效)为写命令, R D ‾ \overline{RD} RD(低电平有效)为读命令。设计一个容量为64KB的采用低位交叉编址的8体并行结构存储器。现有右图所示的存储芯片及74138译码器。画出CPU和存储芯片(芯片容量自定)的连接图,并写出图中每个存储芯片的地址范围(用十六进制数表示)。
- 4.24一个4体低位交叉的存储器,假设存取周期为 T,CPU每隔1/4存取周期启动一个存储体,试问依次访问64个字需多少个存取周期?
- 4.25 什么是程序访问的局部性?存储系统中哪一级采用了程序访问的局部性原理?
- 4.26计算机中设置Cache的作用是什么?能不能把Cache的容量扩大,最后取代主存,为什么?
- 4.27Cache制作在CPU芯片内有什么好处?将指令Cache和数据Cache分开又有什么好处?
- 4.28设主存容量为256K字,Cache容量为2K字,块长为4。
- 4.29假设CPU执行某段程序时共访问 Cache命中4800次,访问主存200次,已知Cache的存取周期是30ns,主存的存取周期是150ns,求Cache的命中率以及 Cache-主存系统的平均访问时间和效率,试问该系统的性能提高了多少?
- 4.30一个组相联映射的Cache由64块组成,每组内包含4块。主存包含4096块,每块由 128字组成,访存地址为字地址。试问主存和 Cache 的地址各为几位?画出主存的地址格式。
- 4.31 设主存容量为1MB,采用直接映射方式的Cache容量为16KB,块长为4,每字32位。试向主存地址为ABCDEH的存储单元在Cache中的什么位置?
- 4.32设某机主存容量为4MB,Cache容量为16KB,每字块有8个字,每字32位,设计一个四路组相联映射(即Cache每组内共有4个字块)的Cache组织。
- 4.33简要说明提高访存速度可采取的措施。
- 4.34反映主存和外存的速度指标有何不同?
- 4.35画出RZ、NRZ、NRZ1、PE、FM写入数字串1011001的写电流波形图。
- 4.36以写入10010110为例,比较调频制和改进调频制的写电流波形图。
- 4.37 画出调相制记录01100010的驱动电流、记录磁通、感应电势、同步脉冲及读出代码等几种波形。
- 4.38磁盘组有6片磁盘,最外两侧盘面可以记录,存储区域内径22cm,外径33cm,道密度为40道/cm,内层密度为400位/cm,转速3600r/min。
- 4.39某磁盘存储器转速为3000r/min,共有4个记录盘面,每毫米5道,每道记录信息12288字节,最小磁道直径为230mm,共有275道,求:
- 4.40 采用定长数据块记录格式的磁盘存储器,直接寻址的最小单位是什么?寻址命令中如何表示磁盘地址?
- 4.41设有效信息为110,试用生成多项式G(x)=11011将其编成循环冗余校验码。
- 4.42 有一个(7,4)码,生成多项式G(x)=x³+x+1,写出代码 1001的循环冗余校验码。
- 4.43磁表面存储器和光盘存储器记录信息的原理有何不同?
- 4.44 试从存储容量、存取速度、使用寿命和应用场合方面比较磁盘、磁带和光盘存储器。
第四章
4.1解释概念:主存、辅存、Cache、RAM、SRAM、DRAM、ROM、PROM、EPROM、EEPROM、CDROM、Flash Memory。
答:
主存:主存储器,用于存放正在执行的程序和数据。 CPU 可以直接进行随机读写,访问速度较高。
辅存:辅助存储器,用于存放当前暂不执行的程序和数据,以及一些需要永久保存的信息。
Cache :高速缓冲存储器,介于 CPU 和主存之间,用于解决 CPU 和主存之间速度不匹配问题。
RAM :半导体随机存取存储器,主要用作计算机中的主存。
SRAM :静态半导体随机存取存储器。
DRAM :动态半导体随机存取存储器。
ROM :掩膜式半导体只读存储器。由芯片制造商在制造时写入内容,以后只能读出而不能写入。
PROM :可编程只读存储器,由用户根据需要确定写入内容,只能写入一次。
EPROM :可擦除可编程只读存储器。允许用户写入信息,之后用某种方法擦除数据,可进行多次重写。
EEPROM :电擦写可编程只读存储器。
CDROM :只读型光盘。
Flash Memory :闪速存储器。或称快擦型存储器。
4.2 计算机中哪些部件可用于存储信息,按其速度、容量和价格/位排序说明。
答:
计算机中寄存器、Cache、主存、硬盘可以用于存储信息。一般来说,速度越高,价格就越高;容量越大,价格就越高,而且容量越大,速度必越低。人们追求大容量、高速度、低价位的存储器,可惜这是很难达到的。寄存器通常都制作在 CPU 芯片内,寄存器中的数直接在 CPU 内部参与运算,CPU 内可以有十几个、几十个寄存器,它们的速度最快,价位最高,容量最小。主存用来存放将要参与运行的程序和数据,其速度与 CPU 速度差距较大,为了使它们之间速度更好地匹配,在主存与 CPU 之间插入了一种比主存速度更快、容量更小的高速缓冲存储器 Cache,显然其价位要高于主存。所以,按其速度、容量和价格/位排序如下:
按速度由高至低排序为:寄存器、Cache、主存、硬盘:
按容量由小至大排序为:寄存器、Cache、主存、硬盘;
按价格/位由高至低排序为:寄存器、Cache、主存、硬盘。
4.3存储器的层次结构主要体现在什么地方,为什么要分这些层次,计算机如何管理这些层次?
答:
存储器的层次结构主要体现在Cache-主存和主存-辅存这两个存储层次上。
Cache-主存层次在存储系统中主要对 CPU 访存起加速作用,即从整体运行的效果分析, CPU 访存速度加快,接近于 Cache的速度,而寻址空间和位价却接近于主存。
主存-辅存层次在存储系统中主要起扩容作用,即从程序员的角度看,他所使用的存储器其容量和位价接近于辅存,而速度接近于主存。
综合上述两个存储层次的作用,从整个存储系统来看,就达到了速度快、容量大、位价低的优化效果。
主存与CACHE 之间的信息调度功能全部由硬件自动完成。而主存与辅存层次的调度目前广泛采用虚拟存储技术实现, 即将主存与辅存的一部分通过软硬结合的技术组成虚拟存储器,程序员可使用这个比主存实际空间(物理地址空间)大得多的虚拟地址空间(逻辑地址空间)编程,当程序运行时,再由软、硬件自动配合完成虚拟地址空间与主存实际物理空间的转换。
因此,这两个层次上的调度或转换操作对于程序员来说都是透明的。
4.4 说明存取周期和存取时间的区别。
答:
存取周期和存取时间的主要区别是:存取时间仅为完成一次操作的时间,而存取周期不仅包含操作时间,还包含操作后线路的恢复时间。
即:存取周期=存取时间+恢复时间
4.5什么是存储器的带宽?若存储器的数据总线宽度为32位,存取周期为200ns,则存储器的带宽是多少?
答:
存储器的带宽指单位时间内从存储器进出信息的最大数量。
存储器带宽= 1/200ns ×32位 = 160M位/秒 = 20MB/秒 = 5M字/秒
注意 :字长32位,不是16位。(注:
1
n
s
=
1
0
−
9
s
1ns=10^{-9} s
1ns=10−9s)
4.6机字长为32位,存储容量是64KB,按字编址其寻址范围是多少?若主存以字节编址,试画出主存字地址和字节地址的分配情况。
答:
存储容量是 64KB 时,按字节编址的寻址范围就是 64K ,
如按字编址,其寻址范围为: 64KB/32位=(64 * 1024* 8)/32=16*1024=16K
主存字地址和字节地址的分配情况:如图
4.7 一个容量为16 K×32 位的存储器,其地址线和数据线的总和是多少?当选用下列不同规格的存储芯片时,各需要多少片?1 K×4位,2K×8位,4 K×4位,16 K×1位,4 K×8位,8 K×8位
答:
地址线和数据线的总和 = 14 + 32 = 46根;
选择不同的芯片时,各需要的片数为:
1K×4:(16K×32) / (1K×4) = 16 ×8 = 128 片
2K×8:(16K×32) / (2K×8) = 8 ×4 = 32片
4K×4:(16K×32) / (4K×4) = 4 ×8 = 32片
16K×1:(16K×32)/ (16K×1) = 1 ×32 = 32 片
4K×8:(16K×32)/ (4K×8) = 4 ×4 = 16 片
8K×8:(16K×32) / (8K×8) = 2 ×4 = 8 片
4.8试比较静态RAM和动态RAM。
答:
静态RAM是靠双稳态触发器来记忆信息的;动态RAM是靠MOS电路中的栅极电容来记忆信息的。
由于电容上的电荷会泄漏,需要定时给与补充,所以动态RAM需要设置刷新电路。但动态RAM比静态RAM集成度高、功耗低,从而成本也低,适于作大容量存储器。所以主内存通常采用动态RAM,而高速缓冲存储器(Cache)则使用静态RAM。另外,内存还应用于显卡、声卡及CMOS等设备中,用于充当设备缓存或保存固定的程序及数据。
解析:静态RAM的特点:是在不断电的条件下,其中的信息保持不变,因而不必定期刷新,其中的信息可读可写,但断电后信息就会丢失。
1、静态RAM 用触发器作为存储单元存放1 和0,存取速度快,只要不掉电即可持续保持内容不变。
2、,静态RAM的集成度较低,并且静态RAM无须考虑保持数据而设置的刷新电路,故扩展电路较简单。
动态RAM:是绝大多数现代台式计算机的标准计算机内存,它是一种易失性存储器,需要用电压定期刷新,否则,它会丢失存储在上面的信息。
特性 | SRAM | DRAM |
---|---|---|
存储信息 | 触发器 | 电容 |
破坏性读出 | 非 | 是 |
需要刷新 | 不要 | 需要 |
送行列地址 | 同时送 | 分两次送 |
运行速度 | 快 | 慢 |
集成度 | 低 | 高 |
发热量 | 大 | 小 |
存储成本 | 高 | 低 |
功耗 | 高 | 低 |
可靠性 | 高 | 低 |
可用性 | 使用方便 | 不方便 |
适用场合 | 高速小容量存储器 | 大容量主存 |
4.9什么叫刷新?为什么要刷新?说明刷新有几种方法。
答:
刷新:对 DRAM 定期进行的全部重写过程;
刷新原因:因电容泄漏而引起的 DRAM 所存信息的衰减需要及时补充,因此安排了定期刷新操作;
常用的刷新方法有三种:集中式、分散式、异步式。
集中式:在最大刷新间隔时间内,集中安排一段时间进行刷新,存在 CPU 访存死时间。
分散式:在每个读 /写周期之后插入一个刷新周期,无 CPU 访存死时间。
异步式:是集中式和分散式的折衷。
4.10 半导体存储器芯片的译码驱动方式有几种?
答:
半导体存储器芯片的译码驱动方式有两种:线选法和重合法。
线选法:地址译码信号只选中同一个字的所有位,结构简单,费器材;
重合法:地址分行、列两部分译码,行、列译码线的交叉点即为所选单元。这种方法通过行、列译码信号的重合来选址,也称矩阵译码。可大大节省器材用量,是最常用的译码驱动方式。
4.11一个8K×8位的动态RAM芯片,其内部结构排列成256×256形式,读/写周期为0.1μs。试问采用集中刷新、分散刷新及异步刷新三种方式的刷新间隔各为多少?
答:
采用集中刷新方式刷新间隔为:2ms,其中刷新死时间为:256×0.1μs=25.6μs
采用分散刷新方式刷新间隔为:256×(0.1μs+0.1μs)=51.2μs
采用异步刷新方式刷新间隔为:2ms
4.12画出用1024×4位的存储芯片组成一个容量为64Kx8位的存储器逻辑框图。要求将64K分成4个页面,每个页面分16组,共需多少片存储芯片?
答:
设采用SRAM芯片,则:
总片数 = (64K×8位) / (1024×4位)= 64×2 = 128片
题意分析:本题设计的存储器结构上分为总体、页面、组三级,因此画图时也应分三级画。首先应确定各级的容量:
页面容量 = 总容量 / 页面数 = 64K×8 / 4 = 16K×8位,4片16K×8字串联成64K×8位
组容量 = 页面容量 / 组数 = 16K×8位 / 16 = 1K×8位,16片1K×8位字串联成16K×8位
组内片数 = 组容量 / 片容量 = 1K×8位 / 1K×4位 = 2片,两片1K×4位芯片位并联1K×8位
地址分配:
存储器逻辑框图:
4.13 设有一个64K×8位的RAM芯片,试问该芯片共有多少个基本单元电路(简称存储基元)?欲设计一种具有上述同样多存储基元的芯片,要求对芯片字长的选择应满足地址线和数据线的总和为最小,试确定这种芯片的地址线和数据线,并说明有几种解答。
答:
存储基元总数 =
64
K
×
8
位
=
512
K
位
=
2
19
位
64K × 8位 = 512K位 = 2^{19}位
64K×8位=512K位=219位;
如要满足地址线和数据线总和最小,应尽量把存储元安排在字向,因为地址位数和字数成2的幂的关系,可较好地压缩线数。
设地址线根数为a,数据线根数为b,
则片容量为:
2
a
×
b
=
2
19
;
b
=
2
19
−
a
;
2^a × b = 2^{19};b = 2^{19-a};
2a×b=219;b=219−a;
若a = 19,b = 1,总和 = 19+1 = 20;
a = 18,b = 2,总和 = 18+2 = 20;
a = 17,b = 4,总和 = 17+4 = 21;
a = 16,b = 8 总和 = 16+8 = 24;
4.14某8位微型计算机地址码为18位,若使用4K×4位的RAM芯片组成模块板结构的存储器,试问:
(1)该机所允许的最大主存空间是多少?
(2)若每个模块板为32K×8位,共需几个模块板?
(3)每个模块板内共有几片RAM芯片?
(4)共有多少片RAM?
(5)CPU如何选择各模块板?
答:
(1)该机所允许的最大主存空间是:
2
18
×
8
位
=
256
K
×
8
位
=
256
K
B
2^{18} × 8位 = 256K×8位 = 256KB
218×8位=256K×8位=256KB
(2)模块板总数 = 256K×8 / 32K×8 = 8块
(3)板内片数 = 32K×8位 / 4K×4位 = 8×2 = 16片
(4)总片数 = 16片×8 = 128片
(5)CPU通过最高3位地址译码输出选择模板,次高3位地址译码输出选择芯片。地址格式分配如下:
模板号(3位) | 芯片号(3位) | 片内地址(12位) |
---|
4.15设CPU共有16根地址线,8根数据线,并用 M R E Q ‾ \overline{MREQ} MREQ(低电平有效)作访存控制信号, R / W ‾ R/\overline W R/W作读/写命令信号(高电平为读,低电平为写)。现有这些存储芯片:ROM(2K×8位,4K×4位,8K×8位),RAM(1K×4位,2K×8位,4K×8位)及74138译码器和其他门电路(门电路自定)。
试从上述规格中选用合适的芯片,画出CPU和存储芯片的连接图。要求如下:
(1)最小4K地址为系统程序区.4096~16383地址范围为用户程序区。
(2)指出选用的存储芯片类型及数量。
(3)详细画出片选逻辑。
答:
(1)地址空间分配图:
系统程序区(ROM共4KB):0000H-0FFFH
用户程序区(RAM共12KB):1000H-3FFFH
(2)选片:
ROM:选择4K×4位芯片2片,位并联
RAM:选择4K×8位芯片3片,字串联(RAM1地址范围为:1000H-1FFFH,RAM2地址范围为2000H-2FFFH, RAM3地址范围为:3000H-3FFFH)
(3)各芯片二进制地址分配如下:
CPU和存储器连接逻辅图及片选逻辑如下图所示:
4.16CPU假设同上题,现有8片8K×8位的RAM芯片与CPU相连。
(1)用74138译码器画出CPU与存储芯片的连接图。
(2)写出每片RAM的地址范围。
(3)如果运行时发现不论往哪片RAM写入数据,以A000H为起始地址的存储芯片都有与其相同的数据分析故障原因。
(4)根据(1)的连接图,若出现地址线
A
13
A_{13}
A13与CPU断线,并搭接到高电平上,将出现什么后果?
答:
(1)CPU与存储器芯片连接逻辑图:
(2)地址空间分配图:
RAM0:0000H-1FFFH
RAM1:2000H-3FFFH
RAM2:4000H-5FFFH
RAM3:6000H-7FFFH
RAM4:8000H-9FFFH
RAM5:A000H-BFFFH
RAM6:C000H-DFFFH
RAM7:E000H-FFFFH
(3)如果运行时发现不论往哪片RAM写入数据后,以A000H为起始地址的存储芯片(RAM5)都有与其相同的数据,则根本的故障原因为:该存储芯片的片选输入端很可能总是处于低电平。
假设芯片与译码器本身都是好的,可能的情况有:
①该片的
C
S
‾
\overline{CS}
CS端与
W
E
‾
\overline{WE}
WE端错连或短路:
②该片的
C
S
‾
\overline{CS}
CS端与CPU的
M
R
E
Q
‾
\overline{MREQ}
MREQ端错连或短路;
③该片的
C
S
‾
\overline{CS}
CS端与地线错连或短路。
(4)如果地址线A13与CPU断线,并搭接到高电平上,将会出现A13恒为“1”的情况。此时存储器只能寻址A13=1的地址空间(奇数片),A13=0的另一半地址空间(偶数片)将永远访问不到。若对A13=0的地址空间(偶数片)进行访问,只能错误地访问到A13=1的对应空间(奇数片)中去。
4.17 写出1100、1101、1110、1111对应的汉明码。
答:
有效信息均为n=4位,假设有效信息用
b
4
b
3
b
2
b
1
b_4b_3b_2b_1
b4b3b2b1表示
校验位位数k=3位,
(
2
k
>
=
n
+
k
+
1
)
(2^k>=n+k+1)
(2k>=n+k+1)
设校验位分别为
C
1
、
C
2
、
C
4
C_1、C_2、C_4
C1、C2、C4,则汉明码共4+3=7位,即:
C
1
C
2
b
4
C
4
b
3
b
2
b
1
C_1C_2b_4C_4b_3b_2b_1
C1C2b4C4b3b2b1
校验位在汉明码中分别处于第1、2、4位
序号
1
2
3
4
5
6
7
名称
C
1
C
2
b
4
C
4
b
3
b
2
b
1
\begin{array}{c|c} 序号 &1\ \ \ 2\ \ \ 3\ \ \ 4\ \ \ 5\ \ \ 6\ \ \ 7 \\ \hline 名称&C_1\ \ C_2\ \ b_4\ \ C_4\ \ b_3\ \ b_2\ \ b_1 \end{array}
序号名称1 2 3 4 5 6 7C1 C2 b4 C4 b3 b2 b1
C
1
=
b
4
⊕
b
3
⊕
b
1
C
2
=
b
4
⊕
b
2
⊕
b
1
C
4
=
b
3
⊕
b
2
⊕
b
1
C_1=b_4\oplus b_3\oplus b_1\\ C_2=b_4\oplus b_2\oplus b_1\\ C_4=b_3\oplus b_2\oplus b_1
C1=b4⊕b3⊕b1C2=b4⊕b2⊕b1C4=b3⊕b2⊕b1
当有效信息为1100时,
C
1
C
2
C
4
C_1C_2C_4
C1C2C4=011,汉明码为0111100。
当有效信息为1101时,
C
1
C
2
C
4
C_1C_2C_4
C1C2C4=100,汉明码为1010101。
当有效信息为1110时,
C
1
C
2
C
4
C_1C_2C_4
C1C2C4=000,汉明码为0010110。
当有效信息为1111时,
C
1
C
2
C
4
C_1C_2C_4
C1C2C4=111,汉明码为1111111。
4.18 已知接收到的汉明码(按配偶原则配置)为1100100、1100111、1100000、1100001,检查上述代码是否出错?第几位出错?
答:
假设接收到的汉明码为:
C
1
C
2
b
4
C
4
b
3
b
2
b
1
C_1C_2b_4C_4b_3b_2b_1
C1C2b4C4b3b2b1
序号
1
2
3
4
5
6
7
名称
C
1
C
2
b
4
C
4
b
3
b
2
b
1
\begin{array}{c|c} 序号 &1\ \ \ 2\ \ \ 3\ \ \ 4\ \ \ 5\ \ \ 6\ \ \ 7 \\ \hline 名称&C_1\ \ C_2\ \ b_4\ \ C_4\ \ b_3\ \ b_2\ \ b_1 \end{array}
序号名称1 2 3 4 5 6 7C1 C2 b4 C4 b3 b2 b1
纠错过程如下:
P
1
=
C
1
⊕
b
4
⊕
b
3
⊕
b
1
P
2
=
C
2
⊕
b
4
⊕
b
2
⊕
b
1
P
4
=
C
4
⊕
b
3
⊕
b
2
⊕
b
1
P_1=C_1\oplus b_4\oplus b_3\oplus b_1\\ P_2=C_2\oplus b_4\oplus b_2\oplus b_1\\ P_4=C_4\oplus b_3\oplus b_2\oplus b_1
P1=C1⊕b4⊕b3⊕b1P2=C2⊕b4⊕b2⊕b1P4=C4⊕b3⊕b2⊕b1
如果收到的汉明码为1100100,则
P
4
P
2
P
1
P_4P_2P_1
P4P2P1=110,说明代码有错,第6位(
b
2
b_2
b2)出错,有效信息为:0110
如果收到的汉明码为1100111,则
P
4
P
2
P
1
P_4P_2P_1
P4P2P1=111,说明代码有错,第7位(
b
1
b_1
b1)出错,有效信息为:0110
如果收到的汉明码为1100000,则
P
4
P
2
P
1
P_4P_2P_1
P4P2P1=011,说明代码有错,第3位(
b
4
b_4
b4)出错,有效信息为:1000
如果收到的汉明码为1100001,则
P
4
P
2
P
1
P_4P_2P_1
P4P2P1=100,说明代码有错,第4位(
C
4
C_4
C4)出错,有效信息为:0001
4.19 已知接收到下列汉明码,分别写出它们所对应的欲传送代码。
1100000(按偶性配置)
1100010(按偶性配置)
1101001(按偶性配置)
0011001(按奇性配置)
1000000(按奇性配置)
1110001(按奇性配置)
答:
(一)假设接收到的汉明码为
C
1
C
2
b
4
C
4
b
3
b
2
b
1
C_1C_2b_4C_4b_3b_2b_1
C1C2b4C4b3b2b1,
序号
1
2
3
4
5
6
7
名称
C
1
C
2
b
4
C
4
b
3
b
2
b
1
\begin{array}{c|c} 序号 &1\ \ \ 2\ \ \ 3\ \ \ 4\ \ \ 5\ \ \ 6\ \ \ 7 \\ \hline 名称&C_1\ \ C_2\ \ b_4\ \ C_4\ \ b_3\ \ b_2\ \ b_1 \end{array}
序号名称1 2 3 4 5 6 7C1 C2 b4 C4 b3 b2 b1
按偶性配置则:
P
1
=
C
1
⊕
b
4
⊕
b
3
⊕
b
1
P
2
=
C
2
⊕
b
4
⊕
b
2
⊕
b
1
P
4
=
C
4
⊕
b
3
⊕
b
2
⊕
b
1
P_1=C_1\oplus b_4\oplus b_3\oplus b_1\\ P_2=C_2\oplus b_4\oplus b_2\oplus b_1\\ P_4=C_4\oplus b_3\oplus b_2\oplus b_1
P1=C1⊕b4⊕b3⊕b1P2=C2⊕b4⊕b2⊕b1P4=C4⊕b3⊕b2⊕b1
(1)如接收到的汉明码为1100000,
P
1
=
1
⊕
0
⊕
0
⊕
0
=
1
P_1=1\oplus0 \oplus0 \oplus0=1
P1=1⊕0⊕0⊕0=1
P
2
=
1
⊕
0
⊕
0
⊕
0
=
1
P_2=1\oplus0 \oplus0 \oplus0=1
P2=1⊕0⊕0⊕0=1
P
4
=
0
⊕
0
⊕
0
⊕
0
=
0
P_4=0\oplus0 \oplus0 \oplus0=0
P4=0⊕0⊕0⊕0=0
P
4
P
2
P
1
P_4P_2P_1
P4P2P1=011第3位出错,可纠正为1110000,故欲传送的信息为1000
(2)如接收到的汉明码为1100010,
P
1
=
1
⊕
0
⊕
0
⊕
0
=
1
P_1=1\oplus0 \oplus0 \oplus0=1
P1=1⊕0⊕0⊕0=1
P
2
=
1
⊕
0
⊕
1
⊕
0
=
0
P_2=1\oplus0 \oplus1 \oplus0=0
P2=1⊕0⊕1⊕0=0
P
4
=
0
⊕
0
⊕
1
⊕
0
=
1
P_4=0\oplus0 \oplus1 \oplus0=1
P4=0⊕0⊕1⊕0=1
P
4
P
2
P
1
P_4P_2P_1
P4P2P1=101,第5位出错,可纠正为1100110,故欲传送的信息为0110。
(3)如接收到的汉明码为1101001,
P
1
=
1
⊕
0
⊕
0
⊕
1
=
0
P_1=1\oplus0 \oplus0 \oplus1=0
P1=1⊕0⊕0⊕1=0
P
2
=
1
⊕
0
⊕
0
⊕
1
=
0
P_2=1\oplus0 \oplus0 \oplus1=0
P2=1⊕0⊕0⊕1=0
P
3
=
1
⊕
0
⊕
0
⊕
1
=
0
P_3=1\oplus0 \oplus0 \oplus1=0
P3=1⊕0⊕0⊕1=0
P
4
P
2
P
1
P_4P_2P_1
P4P2P1=000,传送无错,故欲传送的信息为0001
(二)假设接收到的汉明码为
C
1
C
2
b
4
C
4
b
3
b
2
b
1
C_1C_2b_4C_4b_3b_2b_1
C1C2b4C4b3b2b1,
序号
1
2
3
4
5
6
7
名称
C
1
C
2
b
4
C
4
b
3
b
2
b
1
\begin{array}{c|c} 序号 &1\ \ \ 2\ \ \ 3\ \ \ 4\ \ \ 5\ \ \ 6\ \ \ 7 \\ \hline 名称&C_1\ \ C_2\ \ b_4\ \ C_4\ \ b_3\ \ b_2\ \ b_1 \end{array}
序号名称1 2 3 4 5 6 7C1 C2 b4 C4 b3 b2 b1
按奇性配置则:
P
1
=
C
1
⊕
b
4
⊕
b
3
⊕
b
1
‾
P
2
=
C
2
⊕
b
4
⊕
b
2
⊕
b
1
‾
P
4
=
C
4
⊕
b
3
⊕
b
2
⊕
b
1
‾
P_1=\overline{C_1\oplus b_4\oplus b_3\oplus b_1}\\ P_2=\overline{C_2\oplus b_4\oplus b_2\oplus b_1}\\ P_4=\overline{C_4\oplus b_3\oplus b_2\oplus b_1}
P1=C1⊕b4⊕b3⊕b1P2=C2⊕b4⊕b2⊕b1P4=C4⊕b3⊕b2⊕b1
(4)如接收到的汉明码为0011001,
P
1
=
0
⊕
1
⊕
0
⊕
1
‾
=
1
P_1=\overline{0\oplus1 \oplus0 \oplus1}=1
P1=0⊕1⊕0⊕1=1
P
2
=
0
⊕
1
⊕
0
⊕
0
‾
=
1
P_2=\overline{0\oplus1 \oplus0 \oplus0}=1
P2=0⊕1⊕0⊕0=1
P
4
=
1
⊕
0
⊕
0
⊕
1
‾
=
1
P_4=\overline{1\oplus0 \oplus0 \oplus1}=1
P4=1⊕0⊕0⊕1=1
P
4
P
2
P
1
P_4P_2P_1
P4P2P1=111,第7位出错,可纠正为0011000,故欲传送的信息为1000
(5)如接收到的汉明码为1000000,
P
1
=
1
⊕
0
⊕
0
⊕
0
‾
=
0
P_1=\overline{1\oplus0 \oplus0 \oplus0}=0
P1=1⊕0⊕0⊕0=0
P
2
=
0
⊕
0
⊕
0
⊕
0
‾
=
1
P_2=\overline{0\oplus0 \oplus0 \oplus0}=1
P2=0⊕0⊕0⊕0=1
P
4
=
0
⊕
0
⊕
0
⊕
0
‾
=
1
P_4=\overline{0\oplus0 \oplus0 \oplus0}=1
P4=0⊕0⊕0⊕0=1
P
4
P
2
P
1
P_4P_2P_1
P4P2P1=110,第6位出错,可纠正为1000010,故欲传送的信息为0010
(6)如接收到的汉明码为1110001
P
1
=
1
⊕
1
⊕
0
⊕
1
‾
=
0
P_1=\overline{1\oplus1 \oplus0 \oplus1}=0
P1=1⊕1⊕0⊕1=0
P
2
=
1
⊕
1
⊕
0
⊕
1
‾
=
0
P_2=\overline{1\oplus1 \oplus0 \oplus1}=0
P2=1⊕1⊕0⊕1=0
P
4
=
0
⊕
0
⊕
0
⊕
1
‾
=
0
P_4=\overline{0\oplus0 \oplus0 \oplus1}=0
P4=0⊕0⊕0⊕1=0
P
4
P
2
P
1
P_4P_2P_1
P4P2P1=000,传送无错,故欲传送的信息为1001
4.20 欲传送的二进制代码为1001101,用奇校验来确定其对应的汉明码,若在第6位出错,说明纠错过程。
答:
欲传送的二进制代码为 1001101,有效信息位数为
n
=
7
\text{n}=7
n=7 位,则汉明校验的校验位为 k 位,则:
2
k
>
=
n
+
k
+
1
,
k
=
4
2^k>=n+k+1 , k=4
2k>=n+k+1,k=4 ,进行奇校验设校验位为
C
1
C
2
C
4
C
8
C_1C_2C_4C_8
C1C2C4C8,
汉明码为
C
1
C
2
b
7
C
4
b
6
b
5
b
4
C
8
b
3
b
2
b
1
C_1C_2b_7C_4b_6b_5b_4C_8b_3b_2b_1
C1C2b7C4b6b5b4C8b3b2b1,
序号
1
2
3
4
5
6
7
8
9
10
11
名称
C
1
C
2
b
7
C
4
b
6
b
5
b
4
C
8
b
3
b
2
b
1
\begin{array}{c|c} 序号 &1\ \ \ \ 2\ \ \ \ 3\ \ \ \ 4\ \ \ \ 5\ \ \ 6\ \ \ 7 \ \ \ \ 8\ \ \ \ 9\ \ \ 10\ \ 11\\ \hline 名称&C_1\ \ C_2\ \ b_7\ \ C_4\ \ b_6\ \ b_5\ \ b_4\ \ C_8\ \ b_3\ \ b_2\ \ b_1 \end{array}
序号名称1 2 3 4 5 6 7 8 9 10 11C1 C2 b7 C4 b6 b5 b4 C8 b3 b2 b1
C
1
=
b
7
⊕
b
6
⊕
b
4
⊕
b
3
⊕
b
1
‾
=
1
⊕
0
⊕
1
⊕
1
⊕
1
‾
=
1
C_1=\overline{ b_7\oplus b_6\oplus b_4\oplus b_3\oplus b_1}=\overline{1\oplus 0\oplus 1\oplus 1\oplus 1}=1
C1=b7⊕b6⊕b4⊕b3⊕b1=1⊕0⊕1⊕1⊕1=1
C
2
=
b
7
⊕
b
5
⊕
b
4
⊕
b
2
⊕
b
1
‾
=
1
⊕
0
⊕
1
⊕
0
⊕
1
‾
=
0
C_2=\overline{ b_7\oplus b_5\oplus b_4\oplus b_2\oplus b_1}=\overline{1\oplus 0\oplus 1\oplus 0\oplus 1}=0
C2=b7⊕b5⊕b4⊕b2⊕b1=1⊕0⊕1⊕0⊕1=0
C
4
=
b
6
⊕
b
5
⊕
b
4
‾
=
0
⊕
0
⊕
1
‾
=
0
C_4=\overline{ b_6\oplus b_5\oplus b_4}=\overline{ 0\oplus 0\oplus 1}=0
C4=b6⊕b5⊕b4=0⊕0⊕1=0
C
8
=
b
3
⊕
b
2
⊕
b
1
‾
=
1
⊕
0
⊕
1
‾
=
1
C_8=\overline{ b_3\oplus b_2\oplus b_1}=\overline{ 1\oplus 0\oplus 1}=1
C8=b3⊕b2⊕b1=1⊕0⊕1=1
故传送的汉明码为 10100011101,若第 6 位(B5)出错,即接收的码字为10100111101,则
P
1
=
C
1
⊕
b
7
⊕
b
6
⊕
b
4
⊕
b
3
⊕
b
1
‾
=
1
⊕
1
⊕
0
⊕
1
⊕
1
⊕
1
‾
=
0
P_1=\overline{ C_1 \oplus b_7 \oplus b_6 \oplus b_4 \oplus b_3\oplus b_1}=\overline{1\oplus1\oplus0\oplus1\oplus1\oplus1}=0
P1=C1⊕b7⊕b6⊕b4⊕b3⊕b1=1⊕1⊕0⊕1⊕1⊕1=0
P
2
=
C
2
⊕
b
7
⊕
b
5
⊕
b
4
⊕
b
2
⊕
b
1
‾
=
0
⊕
1
⊕
1
⊕
1
⊕
0
⊕
1
‾
=
1
P_2 =\overline{ C_2 \oplus b_7 \oplus b_5 \oplus b_4 \oplus b_2 \oplus b_1} =\overline{0\oplus1\oplus1\oplus1\oplus0\oplus1}=1
P2=C2⊕b7⊕b5⊕b4⊕b2⊕b1=0⊕1⊕1⊕1⊕0⊕1=1
P
4
=
C
4
⊕
b
6
⊕
b
5
⊕
b
4
‾
=
0
⊕
0
⊕
1
⊕
1
‾
=
1
P_4 =\overline{ C_4 \oplus b_6 \oplus b_5 \oplus b_4} =\overline{0\oplus0\oplus1\oplus1}=1
P4=C4⊕b6⊕b5⊕b4=0⊕0⊕1⊕1=1
P
8
=
C
8
⊕
b
3
⊕
b
2
⊕
b
1
‾
=
1
⊕
1
⊕
0
⊕
1
‾
=
0
P_8 =\overline{ C_8 \oplus b_3 \oplus b_2 \oplus b_1 }=\overline{1\oplus1\oplus0\oplus1}=0
P8=C8⊕b3⊕b2⊕b1=1⊕1⊕0⊕1=0
P
8
P
4
P
2
P
1
=
0110
P_8P_4P_2P_1 =0110
P8P4P2P1=0110说明第6位出错,对第6位取反即完成纠错。
4.21 为什么在汉明码纠错过程中,新的检测位 P 4 P 2 P 1 P_4P_2P_1 P4P2P1的状态即指出了编码中错误的信息位?
答:
因为证明码中的检验位是由公式
2
k
>
=
n
+
k
+
1
2^{k}>=n+k+1
2k>=n+k+1 得到冗余位长度(位数),其中 冗余的位数即冗余的长度有多少 bit 的长度, n= 数据位数。
k得到后冗余位数(即检验位)分别加在原数据的2的0次方到k次方这些位置上,由此公式获得的k位二进制数必然大于 n,即绝对可以指定 n 位原始数据中任意出错位的位置。
之后再将0~ n进行二进制列表,对应检验位的末位从0~n的二进制的末位开始进行判断那些数相应位置含1。并标识出这些数,同时进行奇校验或者偶校验,进行判断到底每一位检验位填写0或者是1。由于多次对原数据的各位的状态(0、1 状态)进行了校验才得到了检验位的状态,故而检验位状态包含了原数据的正确信息,一旦数据出错检验位状态会随之改变并自动指出出错信息位。
4.22某机字长为16位,常规的存储空间为64K字,若想不改用其他高速的存储芯片,而使访存速度提高到8倍,可采取什么措施?画图说明。
答:
若想不改用高速存储芯片,而使访存速度提高到8倍,可采取八体交叉存取技术,如下图所示:
8体交叉访问时序如下图:
4.23设CPU共有16根地址线,8根数据线,并用 M / I O ‾ M/\overline{IO} M/IO作为访问存储器或I/O的控制信号(高电平为访存,低电平为访I/O), W R ‾ \overline{WR} WR(低电平有效)为写命令, R D ‾ \overline{RD} RD(低电平有效)为读命令。设计一个容量为64KB的采用低位交叉编址的8体并行结构存储器。现有右图所示的存储芯片及74138译码器。画出CPU和存储芯片(芯片容量自定)的连接图,并写出图中每个存储芯片的地址范围(用十六进制数表示)。
答:
8体低位交叉并行存储器的每个存储体容量为 64KB/8=8KB
因此,应选择8KB RAM芯片,芯片地址线13根(A0-A12),数据线8根(D0-D7), 用138译码器进行存储体的选择。设计如下:
4.24一个4体低位交叉的存储器,假设存取周期为 T,CPU每隔1/4存取周期启动一个存储体,试问依次访问64个字需多少个存取周期?
答:
本题中,只有访问第一个字需一个存取周期,从第二个字开始,每隔1/4存取周期即可访问一个字,因此,依次访问64个字需:
存取周期个数=(64-1)×(1/4)T+T=(63/4+1)T=15.75+1=16.75T
4.25 什么是程序访问的局部性?存储系统中哪一级采用了程序访问的局部性原理?
答:
所谓程序访问的局部性即程序执行时对存储器的访问是不均匀的,这是由于指令和数据在主存的地址分布不是随机的,而是相对地簇聚。
存储系统的Cache—主存级和主存—辅存级都用到程序访问的局部性原理。
对Cache—主存级而言,把CPU最近期执行的程序放在容量较小、速度较高的Cache中。
对主存—辅存级而言,把程序中访问频度高、比较活跃的部分放在主存中,这样既提高了访存的速度又扩大了存储器的容量。
4.26计算机中设置Cache的作用是什么?能不能把Cache的容量扩大,最后取代主存,为什么?
答:
计算机中设置 Cache 的作用是解决 CPU 和主存速度不匹配问题。
不能将 Cache 的容量扩大取代主存,原因是
(1)Cache 容量越大成本越高,难以满足人们追求低价格的要求;
(2)如果取消主存,当 CPU 访问 Cache 失败时,需要将辅存的内容调入 Cache 再由 CPU 访问,造成 CPU 等待时间太长,损失更大。
4.27Cache制作在CPU芯片内有什么好处?将指令Cache和数据Cache分开又有什么好处?
答:
Cache 做在 CPU 芯片内主要有下面几个好处:
(1)可提高外部总线的利用率。因为 Cache 在 CPU 芯片内,CPU 访问 Cache时不必占用外部总线。
(2)Cache 不占用外部总线就意味着外部总线可更多地支持 I/O 设备与主存的信息传输,增强了系统的整体效率。
(3)可提高存取速度。因为 Cache 与 CPU 之间的数据通路大大缩短,故存取速度得以提高。
将指令 Cache 和数据 Cache 分开有如下好处:
1)可支持超前控制和流水线控制,有利于这类控制方式下指令预取操作的完成。
2)指令 Cache 可用 ROM 实现,以提高指令存取的可靠性。
3)数据 Cache 对不同数据类型的支持更为灵活,既可支持整数(例 32 位),也可支持浮点数据(如 64 位)。
补充:
Cache 结构改进的第三个措施是分级实现,如二级缓存结构,即在片内 Cache(L1)和主存之间再设一个片外Cache(L2),片外缓存既可以弥补片内缓存容量不够大的缺点,又可在主存与片内缓存间起到平滑速度差的作用,加速片内缓存的调入调出速度。
4.28设主存容量为256K字,Cache容量为2K字,块长为4。
(1)设计Cache地址格式,Cache中可装入多少块数据?
(2)在直接映射方式下,设计主存地址格式。
(3)在四路组相联映射方式下,设计主存地址格式。
(4)在全相联映射方式下,设计主存地址格式。
(5)若存储字长为32位,存储器按字节寻址,写出上述三种映射方式下主存的地址格式。
答:
(1)Cache容量为2K字,块长为4,Cache共有
2
K
/
4
=
2
11
/
2
2
=
2
9
=
512
2K/4=2^{11}/2^2=2^9=512
2K/4=211/22=29=512块,
Cache字地址9位,字块内地址为2位
因此,Cache地址格式设计如下:
块号(9位) | 块内地址(2位) |
---|
(2)主存容量为
256
K
字
=
2
18
256K字=2^{18}
256K字=218字,主存地址共18位,共分
256
K
/
4
=
2
16
256K/4=2^{16}
256K/4=216块,
主存字块标记为18-9-2=7位。
直接映射方式下主存地址格式如下:
主存字块标记(7位) | Cache字块地址(9位) | 字块内地址(2位) |
---|
(3)根据四路组相联的条件,一组内共有4块,得Cache共分为
512
/
4
=
128
=
2
7
512/4=128=2^7
512/4=128=27组,
主存字块标记为18-7-2=9位,主存地址格式设计如下:
主存字块标记(9位) | 组地址(7位) | 字块内地址(2位) |
---|
(4)在全相联映射方式下,主存字块标记为18-2=16位,其地址格式如下:
主存字块标记(16位) | 字块内地址(2位) |
---|
(5)按字节寻址,块长为4个字,每个字32位=4个字节,共16个字节,需4位地址;
主存容量为
256
K
∗
32
位
=
256
K
∗
4
B
=
1
M
B
=
2
20
B
256K*32位=256K*4B=1MB=2^{20}B
256K∗32位=256K∗4B=1MB=220B,
在直接映射方式下,主存字块标记为20-9-4=7位,主存地址格式为:
主存字块标记(7位) | Cache字块地址(9位) | 字块内地址(4位) |
---|
在四路组相联映射方式下,主存字块标记为20-7-4=9位,主存地址格式为:
主存字块标记(9 位) | 组地址(7位) | 字块内地址(4位) |
---|
在全相联映射方式下,主存字块标记为20-4=16位,主存地址格式为:
主存字块标记(16位) | 字块内地址(4位) |
---|
4.29假设CPU执行某段程序时共访问 Cache命中4800次,访问主存200次,已知Cache的存取周期是30ns,主存的存取周期是150ns,求Cache的命中率以及 Cache-主存系统的平均访问时间和效率,试问该系统的性能提高了多少?
答:
Cache 被访问命中率为:
4800
/
(
4800
+
200
)
=
24
/
25
=
96
4800/(4800+200)=24/25=96%
4800/(4800+200)=24/25=96
则 Cache- 主存系统的平均访问时间为:
t
a
=
0.96
∗
30
n
s
+
(
1
−
0.96
)
∗
150
n
s
=
34.8
n
s
t_a=0.96*30ns+(1-0.96)*150ns=34.8 ns
ta=0.96∗30ns+(1−0.96)∗150ns=34.8ns
Cache-主存系统的访问效率为:
e
=
t
c
/
t
a
∗
100
%
=
30
/
34.8
∗
100
%
=
86.2
e=t_c/t_a*100\%=30/34.8*100\%=86.2%
e=tc/ta∗100%=30/34.8∗100%=86.2
性能为原来的
150
n
s
/
34.8
n
s
=
4.31
150ns/34.8ns=4.31
150ns/34.8ns=4.31 倍,即提高了 3.31倍。
4.30一个组相联映射的Cache由64块组成,每组内包含4块。主存包含4096块,每块由 128字组成,访存地址为字地址。试问主存和 Cache 的地址各为几位?画出主存的地址格式。
答:
C
a
c
h
e
组数
:
64
/
4
=
16
,
C
a
c
h
e
容量为
:
64
∗
128
=
2
13
字
,
c
a
c
h
e
地址
13
位
主存共分
4096
/
16
=
256
区
,
每区
16
块
主存容量为
:
4096
∗
128
=
2
19
字
,
主存地址
19
位
,
Cache 组数: 64/4=16 ,\\ Cache 容量为: 64 * 128=2^{13 }字, cache 地址 13 位\\ 主存共分 4096/16=256 区,每区 16 块\\ 主存容量为: 4096 * 128=2^{19 }字,主存地址 19 位,
Cache组数:64/4=16,Cache容量为:64∗128=213字,cache地址13位主存共分4096/16=256区,每区16块主存容量为:4096∗128=219字,主存地址19位,
地址格式如下:
主存字块标记(8 位) | 组地址( 4 位) | 字块内地址( 7 位) |
---|
4.31 设主存容量为1MB,采用直接映射方式的Cache容量为16KB,块长为4,每字32位。试向主存地址为ABCDEH的存储单元在Cache中的什么位置?
答:
主存和
C
a
c
h
e
按字节编址,
C
a
c
h
e
容量
16
K
B
=
2
14
B
,地址共格式为
14
位,
分为
16
K
B
/
(
4
∗
32
/
8
B
)
=
2
10
块,每块
4
∗
32
/
8
=
16
B
=
2
4
B
,
C
a
c
h
e
地址格式为:
C
a
c
h
e
字块地址(
10
位)字块内地址(
4
位)
主存容量
1
M
B
=
2
20
B
,地址共格式为
20
位,
分为
1
M
B
/
(
4
∗
32
/
8
B
)
=
2
16
块,每块
2
4
B
,
采用直接映射方式,主存字块标记为
20
−
14
=
6
位,
主存地址格式为:主存字块标记(
6
位)
C
a
c
h
e
字块地址(
10
位)字块内地址(
4
位)
主存地址为
A
B
C
D
E
H
=
101010
1111001101
1110
B
,
主存字块标记为
101010
,
C
a
c
h
e
字块地址为
1111001101
,
字块内地址为
1110
,
故该主存单元应映射到
C
a
c
h
e
的
101010
块的第
1110
字节,即第
42
块第
14
字节位置。
或者在
C
a
c
h
e
的第
11110011011110
=
3
C
D
E
H
字节位置。
主存和Cache按字节编址, Cache容量16KB=2^{14} B,地址共格式为14位,\\ 分为16KB/(4*32/8B)=2^{10} 块,每块4*32/8=16B=2^{4} B,\\ Cache地址格式为:Cache字块地址(10位)字块内地址(4位) \\ \ \\ 主存容量1MB=2^{20} B,地址共格式为20位,\\ 分为1MB/(4*32/8B)=2^{16} 块,每块2^4 B,\\ 采用直接映射方式,主存字块标记为20-14=6位,\\ 主存地址格式为:主存字块标记(6位)Cache字块地址(10 位)字块内地址(4位) \\ \ \\ 主存地址为ABCDEH=101010\ 1111001101\ 1110B,\\ 主存字块标记为101010,\\ Cache字块地址为1111001101,\\ 字块内地址为1110,\\ 故该主存单元应映射到Cache的101010块的第1110字节,即第42块第14字节位置。\\ 或者在Cache的第11110011011110=3CDEH字节位置。
主存和Cache按字节编址,Cache容量16KB=214B,地址共格式为14位,分为16KB/(4∗32/8B)=210块,每块4∗32/8=16B=24B,Cache地址格式为:Cache字块地址(10位)字块内地址(4位) 主存容量1MB=220B,地址共格式为20位,分为1MB/(4∗32/8B)=216块,每块24B,采用直接映射方式,主存字块标记为20−14=6位,主存地址格式为:主存字块标记(6位)Cache字块地址(10位)字块内地址(4位) 主存地址为ABCDEH=101010 1111001101 1110B,主存字块标记为101010,Cache字块地址为1111001101,字块内地址为1110,故该主存单元应映射到Cache的101010块的第1110字节,即第42块第14字节位置。或者在Cache的第11110011011110=3CDEH字节位置。
4.32设某机主存容量为4MB,Cache容量为16KB,每字块有8个字,每字32位,设计一个四路组相联映射(即Cache每组内共有4个字块)的Cache组织。
(1)画出主存地址字段中各段的位数。
(2)设Cache的初态为空,CPU依次从主存第0,1,2,…,89号单元读出90个字(主存一次读出一个字),并重复按此次序读8次,问命中率是多少?
(3)若Cache的速度是主存的6倍,试问有Cache和无Cache相比,速度约提高多少倍?
答:
(1)根据每字块有
8
=
2
3
8=2^3
8=23个字,每字32位(
4
=
2
2
4=2^2
4=22字节),得出主存地址字段中字
块内地址为3+2=5位。
根据Cache容量为
16
K
B
=
2
14
B
16KB=2^{14}B
16KB=214B字块大小为
8
∗
32
/
8
=
32
=
2
5
B
8*32/8=32=2^5B
8∗32/8=32=25B,得Cache地址共14位,Cache共有
2
14
−
5
=
2
9
2^{14-5}=2^9
214−5=29块。
根据四路组相联映射,Cache共分为
2
9
/
2
2
=
2
7
2^9/2^2=2^7
29/22=27组
根据主存容量为
4
M
B
=
2
22
4MB=2^{22}
4MB=222B,得主存地址共22位,主存字块标记为22-7-5=10
位,故主存地址格式为:
主存字块标记(10位) 组地址(7位) 字块内地址(5 位)
(2)由于每个字块中有8个字,而且初态为空,因此CPU读第0号单元时,未命中,必须访问主存,同时将该字所在的主存块调入Cache第0组中的任一块内,接着CPU读第1~7号单元时均命中。
同理,CPU读第8,16…,88号时均未命中。可见,CPU在连续读90个字中共有12次未命中,而后8次循环读90个字全部命中,命中率为:
(
90
×
8
−
12
)
/
(
90
×
8
)
=
0.984
(90×8-12)/ (90×8)= 0.984
(90×8−12)/(90×8)=0.984
(3)设Cache的周期为t则主存周期为6t,没有Cache的访问时间为6t908有Cache的访问时间为t(90 * 8-12)+6t * 12,则有Cache和无Cache相比速度提高的倍数为:
(
6
t
×
90
×
8
)
/
(
(
90
×
8
−
12
)
t
+
6
t
×
12
)
−
1
=
4.54
(6t×90×8) / ((90×8-12)t+6t×12) -1 = 4.54
(6t×90×8)/((90×8−12)t+6t×12)−1=4.54
4.33简要说明提高访存速度可采取的措施。
答:
提高访存速度可采取三种措施:
(1)采用高速器件。即采用存储周期短的芯片,可提高访存速度。
(2)采用Cache。CPU最近要使用的信息先调入Cache,而Cache的速度比主存快得多,这样CPU每次只需从Cache中读写信息,从而缩短访存时间,提高访存速度。
(3)调整主存结构。如采用单体多字或采用多体结构存储器。
4.34反映主存和外存的速度指标有何不同?
答:
主存的速度指标用存取周期表示。
辅存的速度指标,以磁盘为例,一般包括寻找(寻道)时间、等待时间和数据传输时间三个量。因为主存是随机存取存储器存取周期不随存储单元的地址不同而改变。而磁盘存储器属磁表面存储器其存取周期与存储单元的位置有关不同位置所需的寻道时间和等待时间(在磁道上找到指定扇区位置所需的时间)不同故不能以一个物理量来衡量。
4.35画出RZ、NRZ、NRZ1、PE、FM写入数字串1011001的写电流波形图。
答:
4.36以写入10010110为例,比较调频制和改进调频制的写电流波形图。
答:
比较:
1)FM和MFM写电流在位周期中心处的变化规则相同;
2)MFM制除连续一吕“0”时两个0周期交界处电流仍变化外,基本取消了位周期起始处的电流变化;
3)FM制记录一位二进制代码最多两次磁翻转,MFM制记录一位二进制代码最多一次磁翻转,因此MFM制的记录密度可提高一倍。上图中示出了在MFM制时位周期时间缩短一倍的情况。由图可知,当MFM制记录密度提高一倍时,其写电流频率与FM制的写电流频率相当;
4)由于MFM制并不是每个位周期都有电流变化,故自同步脉冲的分离需依据相邻两个位周期的读出信息产生,自同步技术比FM制复杂得多。
4.37 画出调相制记录01100010的驱动电流、记录磁通、感应电势、同步脉冲及读出代码等几种波形。
答:
4.38磁盘组有6片磁盘,最外两侧盘面可以记录,存储区域内径22cm,外径33cm,道密度为40道/cm,内层密度为400位/cm,转速3600r/min。
(1)共有多少存储面可用?
(2)共有多少柱面?
(3)盘组总存储容量是多少?
(4)数据传输率是多少?
答:
(
1
)
共有
:
6
×
2
=
12
个存储面可用。
(
2
)
有效存储区域
=
(
33
−
22
)
/
2
=
5.5
c
m
柱面数
=
40
道
/
c
m
×
5.5
=
220
道
(
3
)
内层道周长
=
π
×
22
=
69.08
c
m
道容量
=
400
位
/
c
m
×
69.08
c
m
=
3454
B
面容量
=
3454
B
×
220
道
=
759880
B
盘组总容量
=
759880
B
×
12
面
=
9118560
B
(
4
)
转速
=
3600
转
/
60
秒
=
60
转
/
秒
数据传输率
=
3454
B
×
60
转
/
秒
=
207240
B
/
S
(1)共有:6×2=12个存储面可用。\\ (2)有效存储区域=(33-22)/2=5.5cm\\ 柱面数=40道/cm×5.5=220道\\ (3)内层道周长=\pi×22=69.08cm\\ 道容量=400位/cm×69.08cm=3454B\\ 面容量=3454B×220道=759880B\\ 盘组总容量=759880B×12面=9118560B\\ (4)转速=3600转/60秒=60转/秒\\ 数据传输率=3454B×60转/秒=207240B/S
(1)共有:6×2=12个存储面可用。(2)有效存储区域=(33−22)/2=5.5cm柱面数=40道/cm×5.5=220道(3)内层道周长=π×22=69.08cm道容量=400位/cm×69.08cm=3454B面容量=3454B×220道=759880B盘组总容量=759880B×12面=9118560B(4)转速=3600转/60秒=60转/秒数据传输率=3454B×60转/秒=207240B/S
4.39某磁盘存储器转速为3000r/min,共有4个记录盘面,每毫米5道,每道记录信息12288字节,最小磁道直径为230mm,共有275道,求:
(1)磁盘存储器的存储容量。
(2)最高位密度(最小磁道的位密度)和最低位密度。
(3)磁盘数据传输率。
(4)平均等待时间。
答:
(
1
)
存储容量
=
275
道
×
12288
B
/
道
×
4
面
=
13516800
B
(
2
)
最高位密度
=
12288
B
/
230
π
≈
17
B
/
m
m
≈
136
位
/
m
m
(
向下取整
)
最大磁道直径
=
230
m
m
+
275
道
/
5
道
×
2
=
230
m
m
+
110
m
m
=
340
m
m
最低位密度
=
12288
B
/
340
π
≈
11
B
/
m
m
≈
92
位
/
m
m
(
向下取整
)
(
3
)
磁盘数据传输率
=
12288
B
×
3000
转
/
分
=
12288
B
×
50
转
/
秒
=
614400
B
/
S
(
4
)
平均等待时间
=
1
/
50
/
2
=
10
m
s
(1)存储容量=275道×12288B/道×4面=13 516 800B\\ (2)最高位密度=12288B/230\pi \approx17B/mm\approx136位/mm(向下取整)\\ 最大磁道直径=230mm+275道/5道×2=230mm+110mm=340mm\\ 最低位密度=12288B/340\pi \approx11B/mm\approx92位/mm(向下取整)\\ (3)磁盘数据传输率=12 288B×3000转/分=12288B ×50转/秒=614 400B/S \\ (4)平均等待时间=1/50/2=10ms
(1)存储容量=275道×12288B/道×4面=13516800B(2)最高位密度=12288B/230π≈17B/mm≈136位/mm(向下取整)最大磁道直径=230mm+275道/5道×2=230mm+110mm=340mm最低位密度=12288B/340π≈11B/mm≈92位/mm(向下取整)(3)磁盘数据传输率=12288B×3000转/分=12288B×50转/秒=614400B/S(4)平均等待时间=1/50/2=10ms
4.40 采用定长数据块记录格式的磁盘存储器,直接寻址的最小单位是什么?寻址命令中如何表示磁盘地址?
答:
(1)直接寻址的最小单位是记录块(即扇区);
(2)寻址命令中磁盘地址格式:台号+磁道号+盘面号+扇区号
4.41设有效信息为110,试用生成多项式G(x)=11011将其编成循环冗余校验码。
答:
有效信息
M
(
x
)
=
110
=
x
2
+
x
(
n
=
3
)
由
G
(
x
)
=
11011
=
x
4
+
x
3
+
x
+
1
得
k
+
1
=
5
所以
k
=
4
将有效信息位左移
k
位
M
(
x
)
⋅
x
4
=
1100000
被
G
(
x
)
模
2
除后得余
R
(
x
)
=
M
(
x
)
⋅
x
4
/
G
(
x
)
=
1100000
/
11011
=
1100
所以
M
(
x
)
⋅
x
4
+
R
(
x
)
=
1101100
为循环冗余校验码。
有效信息M(x)=110=x^2+x(n=3)\\ 由G(x)=11011=x^4+x^3+x+1\\ 得k+1=5所以 k=4\\ 将有效信息位左移k位M(x)· x^4=1100000\\ 被G(x)模2除后得余R(x)=M(x)· x^4/G(x)=1100000/11011=1100\\ 所以M(x)·x^4+R(x)=1101100 为循环冗余校验码。
有效信息M(x)=110=x2+x(n=3)由G(x)=11011=x4+x3+x+1得k+1=5所以k=4将有效信息位左移k位M(x)⋅x4=1100000被G(x)模2除后得余R(x)=M(x)⋅x4/G(x)=1100000/11011=1100所以M(x)⋅x4+R(x)=1101100为循环冗余校验码。
4.42 有一个(7,4)码,生成多项式G(x)=x³+x+1,写出代码 1001的循环冗余校验码。
答:
有效信息
M
(
x
)
=
1001
(
n
=
4
)
由
G
(
x
)
=
x
3
+
x
+
1
=
1011
得
k
+
1
=
5
所以
k
=
3
将有效信息位左移
k
位
M
(
x
)
⋅
x
3
=
1001000
被
G
(
x
)
模
2
除后得余
R
(
x
)
=
M
(
x
)
⋅
x
3
/
G
(
x
)
=
1001000
/
1011
=
110
所以
M
(
x
)
⋅
x
4
+
R
(
x
)
=
1001110
为循环冗余校验码。
有效信息M(x)=1001(n=4)\\ 由G(x)=x^3+x+1=1011\\ 得k+1=5所以 k=3\\ 将有效信息位左移k位M(x)· x^3=1001000\\ 被G(x)模2除后得余R(x)=M(x)· x^3/G(x)=1001000/1011=110\\ 所以M(x)·x^4+R(x)=1001110 为循环冗余校验码。
有效信息M(x)=1001(n=4)由G(x)=x3+x+1=1011得k+1=5所以k=3将有效信息位左移k位M(x)⋅x3=1001000被G(x)模2除后得余R(x)=M(x)⋅x3/G(x)=1001000/1011=110所以M(x)⋅x4+R(x)=1001110为循环冗余校验码。
4.43磁表面存储器和光盘存储器记录信息的原理有何不同?
答:
磁表面存储器:磁表面存储器是在金属或塑料基体的表面上涂一层磁性材料作为记录介质,工作时磁层随载磁体高速运转,用磁头在磁层上进行读/写操作,故称为磁表面存储器。按载磁体形状的不同,可分为磁盘、磁带和磁鼓。它们按其剩磁状态的不同而区分“0”或“1”,而且剩磁状态不会轻易丢失,故这类存储器具有非易失性的特点。
光盘存储器:光光盘存储器是应用激光在记录介质(磁光材料)上进行读/写的存储器,具有非易失性的特点。由于光盘记录密度高、耐用性好、可靠性高和可互换性强等特点,光盘存储器越来越被用于计算机系统。
4.44 试从存储容量、存取速度、使用寿命和应用场合方面比较磁盘、磁带和光盘存储器。
答:
(1)光盘是非接触式读/写信息,大大提高了光盘的耐用性,使用寿命长达数 10 年;靠直径小于 1µm的激光束写入,记录密度高,约为磁盘的 10~100 倍;光盘记录头分量重,体积大,寻道时间长,写入速度低:关盘的介质互换性好,存储容量大,目前价格比较贵。
(2)硬磁盘存储容量大,数据传输率比光盘高,等待时间短,常用作主存的后备存储器;软磁盘存储器容量小,数据传输率低,平均寻道时间长,接触式存取,盘片不固定在驱动器中运行时有大量的灰尘进入盘面,不易提高位密度,近年来软盘已经被淘汰。
(3)磁带已逐渐被磁盘取代,它的数据传输率更低,采用接触式记录,容量也很大,每兆字节价格较低,可用做硬盘的后备存储器。