一、前言
笔者近期在学习计算机组成原理这门课,教材是使用的唐朔飞老师的计算机组成原理第二版,这次和大家分享一下第四章中最后部分重点知识点“Cache工作原理”、 “Cache-主存的地址映射” 和 “磁盘存储器”的典型例题。
二、题目
1.设主存容量为256K字,Cache容量为2K字,块长为4。
(1)设计Cache地址格式,Cache中可装入多少块数据?
(2)在直接映射方式下,设计主存地址格式。
(3)在四路组相联映射方式下,设计主存地址格式。
(4)在全相联映射方式下,设计主存地址格式。
(5)若存储字长为32位,存储器按字节寻址,写出上述三种映射方式下主存的地址格式。
解答:
(1) 因为 Cache容量2K=2^11字,所以Cache的字地址为11位 ,又因为块长为4 = 2^2位,所以字块内地址为2位,Cache字块地址为11-2 = 9位,则有Cache地址格式为:
(2) 因为主存容量256K=2^18字,所以主存字地址为18位,又因为 Cache字块地址9位,字块内地址为2位,所以主存字块标记为 18-9-2 = 7位,则直接映射方式下主存地址格式为:
(3) 因为Cache有 2K/4 = 512块,又因为四路组相连映射方式下每组有四块,所以Cache共有512/4 = 128 = 2^7组,所以组地址有7位,主存字块标记有 18-7-2 = 9位,则四路相连映射方式下主存地址格式为:
(4) 因为主存地址为18位,又因为字块内地址为2位,根据全相连映射性质,得主字块标记 18-2 = 16位,则全相连映射方式下主存地址格式为:
(5) 由题,存储字长为32位,按字节寻址,则主存容量512K个字即为512K×32/8 = 2 ^20B,Cache容量2K个字几位2K×32/8= 2^13位,字块长 4*32/8 = 2^4 位,所以字块内地址为4位。
则直接映射方式下,Cache字块地址为13-4 = 9位,主存字块标记为20-9-4 = 7位,有主存地址格式为:
则四路相连映射方式下,Cache块数还是512块即512/4 = 128 = 2^7组,主存字块标记20-9-4 = 9位,有主存地址格式为:
则全相连映射方式下,主存字块标记为20-4 = 16位,有主存地址格式为:
2. 假设CPU执行某段程序时共访问Cache命中4800次,访问主存命中200次,已知Cache的存取周期是30ns,主存的存取周期是150ns,求Cache的命中率以及Cache-主存系统的平均访问时间和效率,试问该系统的性能提高了多少倍?
解答:
(1) 命中率 H = 4800/(4800+200) = 96%
(2) 平均访问时间 Ta = 0.96 × 30 + 0.04*150 = 34.8ns
(3) 访问效率 E = 30 /34.8 = 86.2%
(4) 由 150 / 34.8 = 4.31得,提高了 4.31 - 1 =3.31倍
3.设主存容量为1MB,采用直接映射方式的Cache容量为16KB,块长为4KB,每字为32位。试问主存地址为ABCDEH的存储单元在Cache中的什么位置?
解答:
(1) 由题,因为主存和Cache按字节编址,
则Cache容量16KB=2^14B,即地址共格式为14位, 且块长4×32/8=16B=2^4B,即字块内地址4位,Cache地址格式为:
(2) 因为主存容量1MB=2^20B,所以地址共格式为20位, 又因为Cache字块地址10位,字块内地址4位,所以采用直接映射方式,主存字块标记为20-14=6位,主存地址格式为:
(3) 主存地址为ABCDEH=1010 1011 1100 1101 1110B,主存字块标记为101010,Cache字块地址为11 1100 1101,字块内地址为1110,故该主存单元应映射到Cache的101010块的第1110字节,即第42块第14字节位置。或者在Cache的第11 1100 1101 1110=3CDEH字节位置。
4. 磁盘组有6片磁盘,最外两侧盘面可以记录,存储区域内径22cm,外径33cm,道密度为40道/cm,内层密度为400位/cm,转速3600转/分,问:
(1)共有多少存储面可用?
(2)共有多少柱面?
(3)盘组总存储容量是多少?
(4)数据传输率是多少?
解答:
(1) 共有6 × 2 =12 个存储面
(2) 共有柱面数:
有效存储区域=(33-22)/2=5.5cm
柱面数:=40道/cm × 5.5cm=220道
(3) 总存储容量:
内层道周长=22 × 3.14 =69.08cm
道容量=400位/cm × 69.08cm=3454B
面容量=3454B × 220道=759,880B
盘组总容量=759,880B × 12=9118560B
(4) 转速 3600转/分 = 60转/秒
传输速率 3454 × 60 = 207240 B/S
5.某磁盘存贮器转速为3000转 / 分,共有4个记录面,每毫米5道,每道记录信息为12288字节,最小磁道直径为230mm,共有275道。
问:
(1)磁盘存贮器的容量是多少?
(2)最高位密度与最低位密度是多少?
(3) 磁盘数据传输率是多少?
(4)平均等待时间是多少?
解答:
(1) 存储容量 275 × 12288 × 4 = 13516800 B
(2) 最高位密度 12288 / (3.14 × 230 ) ≈ 136 位 / mm
最低位密度 12288 / (3.14 × (230 + 2× 275 /5) ) ≈ 92 位 / mm
(3) 磁盘数据传输率 12288 × 3000转/分 = 12288 × 50转/秒 = 614400 B/S
(4) 平均等待时间 1 / 50 / 2 = 10ms
三、知识点笔记
Cache工作原理部分:
假设,Tc为cache存取周期,Tm为主存存取周期,H为命中率,Nc为cache命中次数,Nm为主存命中次数,平均访问时间为Ta,Cache- 主存系统效率 E,存储性能提升倍数 X。
- Cache的命中率
H = Nc / (Nc + Nm) - 平均访问时间
Ta = H* Tc + (1 - H) *Tm - Cache- 主存系统效率
E = Tc / Ta - 存储性能提升倍数
X = Tm / Ta
注意,有些题目会问系统性能提高了多少倍,这是指在原来的基础上提高的倍数即 X - 1 倍 。
Cache-主存的地址映射
Cache-主存的地址映射主要有三种映射方式,分别是直接映射、全相连映射和组相连映射。这三种映射的基本定义在这就不一 一赘述了,主要和大家分享做题的方法。在这部分,我们经常遇到两类问题,一是按字来设计Cache和主存的地址格式,二是按字节来设计Cache和主存的地址格式。下面分别拿一个例子和大家总结一下,
1. 按字
假设主存容量为 A = 2^m个字 , Cache容量B = 2^c个字,块长为 C = 2 ^ b 个字,
则使用直接映射方式,字块内地址为 b位,Cache字块地址为 c- b 位,主存字块标记 m - c - b位;
则使用全相连映射方式,字块内地址为 b位,主存字块标记 m - b位;
则使用组相连映射方式(假设Cache中的每组有 2^r 块),字块内地址b位,组地址 c - r -b位,主存字块标记 m-c-b+r 位
2. 按字节
若按字节寻址,则需要根据题目给出的字长,用 字长/ 8 来计算每个字有几个字节,然后根据字块长即每个字块有几个字,进一步来计算每个字块按字节寻址时的位数=2^n位字节,n 即为字块内地址的位数,然后根据Cache和主存容量,来计算计算Cache字块地址和主存字块标记的位数。
详细例子可以看题目部分的第3题的1、2问,比较典型。
磁盘存储器
-
盘面:用于记录磁化翻转的盘片上的平面,称为盘面。每一个磁盘的盘片都有上、下两个盘面,每个盘面都能用来记录数据,按从上到下的顺序从0开始依次编号。
-
磁道:磁盘在格式化时被划分为许多同心圆,这些同心圆轨道用于记录磁化方向,称为磁道。磁道的编号从外圈开始向内圈顺序编号,最外磁道通常称为0磁道。
-
扇区:每一个圆形磁道被划分成多段圆弧,每段圆弧叫作一个扇区。这些圆弧角速度一样,但线速度不一样。是磁盘的最小存储单位,一个扇区最小可存储512字节数据。
-
柱面:所有不同盘面上的同一位置的磁道构成一个圆柱形的轮廓,通常称作柱面。
-
直接总结各个公式:
数据传输速率 = 一条磁道的容量 × 每秒磁盘转速
扇段数 = 一条磁道的容量 / 记录块(扇段大小)
柱面(若映射到一个盘面上,则是一个盘面的磁道数) = 有效存储区域 × 道密度
有效存储区域 = (外径 - 内径) / 2
一个盘面容量 = 扇段容量 × 扇段数 × 磁道数
一个盘面容量 = 内层道周长 × 内层密度 × 磁道数
最高位密度 = 每道信息量 / 内圈圆周长
最低位密度 = 每道信息量 / 外圈圆周长
平均等待时间 = 1 / 每秒转速 × 0.5