02325 「コンピュータ システム アーキテクチャ」自己検査の質問: 第 4 章

総合カタログを確認する

  02325 「コンピュータシステムアーキテクチャ」自己検討検討要点リスト

第4章 ストレージシステム

1. ページテーブルのアドレスマッピング

歴史試験の質問:

タイトル説明: ページテーブルメソッドマッピングテーブルページサイズに従って、仮想アドレスに対応する実アドレスを計算します。
  

宿題演習 4-4

  仮想メモリは合計8ページ、各ページは1024ワード、実主メモリは4096ワードで構成されており、アドレスマッピングにはページテーブル方式が採用されています。マッピングテーブルの内容は以下のとおりです。
(1) ページ障害の原因となるすべての仮想ページ番号をリストします;
(2) 次の仮想アドレスに従ってメイン メモリの実アドレスを計算します: 0、3728、1023、1024、2055、7800、4096、6800。

実際のページ番号 ロードビット
3 1
1 1
2 0
3 0
2 1
1 0
0 1
0 0

解決策:
(1) タイトルで指定されたマッピング テーブルに仮想ページ番号、つまり 0 から 7 の順に追加します。

仮想ページ番号 実際のページ番号 ロードビット
0 3 1
1 1 1
2 2 0
3 3 0
4 2 1
5 1 0
6 0 1
7 0 0

  ページ障害の仮想ページ番号は、ロードビットが0、つまり2、3、5、7の仮想ページ番号である。

(2) 仮想アドレスからメインメモリの実アドレスを計算するテーブルを描く

仮想アドレス 仮想ページ番号 ページシフト ロードビット 実際のページ番号 ページシフト 実際の住所
0 0 0 1 3 0 3072
3728 3 656 0 ページの失敗 なし
1023 0 1023 1 3 1023 4095
1024 1 0 1 1 0 1024
2055年 2 7 0 ページの失敗 なし
7800 7 632 0 ページの失敗 なし
4096 4 0 1 2 0 2048年
6800 6 656 1 0 656 656

仮想アドレス ÷ ページ サイズ = 仮想ページ番号 ⋯ ⋯ ページ ディスプレイスメント 仮想アドレス\div ページ サイズ=仮想ページ番号\cdots\cdots ページ ディスプレイスメント仮想アドレス÷ページサイズ=仮想ページ番号⋯⋯ページ内の変位
の商が仮想ページ番号、余りがページ内の変位で、ページ サイズはタイトルに示されているページあたり 1024 ワードです。
ロードビットと実ページ番号は、異なる仮想ページ番号の対応する値に従って、最初の質問の表に従って入力されます。2
つのページのディスプレイスメントは同じで、ページ内の追加のディスプレイスメントが書き込まれます。実アドレスの計算を容易にするために、実ページ番号の右側に
アドレス = 実ページ番号 × ページ サイズ + ページ ディスプレイスメント 実アドレス = 実ページ番号\×ページ サイズ + ページ ディスプレイスメント実際の住所=実際のページ番号×ページサイズ+ページシフト


2. 页面替换算法:FIFO、LRU

历史考题:2019.04 (FIFO)、2018.10 (FIFO)

题目描述:根据页地址流画出 FIFO、LRU 替换算法的页号变化过程,标命中时刻,计算命中率。
  

课后习题 4-7 FIFO

  有一个虚拟存储器,主存有 0~3 四页位置,程序有 0~7 八个虚页,采用全相连映像和 FIFO 替换算法。给出如下程序页地址流:2, 3, 5, 2, 4, 0, 1, 2, 4, 6。
(1)假设程序的 2, 3, 5 页已先后装入主存的第 3, 2, 0 页位置,请画出上述页地址流工作过程中,主存各页位置上所装程序各页页号的变化过程图,标出命中时刻;
(2)求出此期间虚存总的命中率 H H H

页面替换理解:
  主存有 4 页空间,程序有 8 种页号,这里把页号当做一条指令,如果主存中有需要运行的指令,就代表了命中;而主存中没有就需要把这个指令存到主存中的空位里,如果已经没有空位了就要替换掉已经存在里面的指令。替换算法就是为了提高命中率,相当于提高效率。
  简单介绍一下不同的页面替换算法:
(1)随机算法(Random,RAND):生成随机数选择被替换的页号,不考;
(2)先进先出算法(First-In First-Out,FIFO):最早装入主存的页作为被替换页;
(3)近期最少使用算法(Least Recently Used,LRU):近期最少访问的页作为被替换页;
(4)优化替换算法(Optimal,OPT):一种理想化的算法,它是根据程序未来的地址流来选择替换哪一页的,选择未来最晚被用到的页被替换,举个例子:现在主存里面存了 1, 2, 3, 4 而且存满了,后面来的地址流是 1, 1, 5, 3, 4, 6, 1,根据未来的地址流 2 是最晚被用到的(这里是未来直接不用了),因此要发生替换时优先替换 2。这种替换方式可以让命中率最大化,用来评价其它可实现的替换算法的好坏。

解:
(1)

主存页
面位置
初始
状态
页地址流
2 3 5 2 4 0 1 2 4 6
0 5 5 5 5 5 5 5 5* 2 2 2
1 4 4 4 4* 4* 6
2 3 3 3 3 3 3 3* 1 1 1 1
3 2 2 2 2 2 2* 0 0 0 0 0
命中 H H H H H

表格解释:
  1)程序的 2, 3, 5 页已先后装入主存的第 3, 2, 0 页位置对应 初始状态
  2)前四个页地址流在主存中本身就有,命中;
  3)4 号进来主存中没有,而主存的 1 号页空着,直接存进去;此时已经存满了,而最先存入主存的是 2,因此加个星号,代表后面会替换它;
  4)0 号进来主存中没有且主存已满,发生替换,替换的是 2;此刻最先存入主存的是 3,以此类推。

(2)命中率就是 10 个地址命中了 5 次 H = 5 / 10 = 50 % H=5/10=50\% H=5/10=50%


课后习题 4-11 FIFO

  考虑一个 920 个字的程序,其访问虚存的地址流为 20, 22, 208, 214, 146, 618, 370, 490, 492, 868, 916, 728。
(1)若页面大小为 200 字,主存容量为 400 字,采用 FIFO 替换算法,请按访存的各个时刻,写出其虚页地址流,计算主存的命中率;
(2)若页面大小改为 100 字,再做一遍;
(3)若页面大小改为 400 字,再做一遍;
(4)由前三问的结果可得出什么结论?
(5)若把主存容量增加到 800 字,按第(1)小题再做一遍,又可以得到什么结论?

解:
  本题的区别在于题目给出的是 虚存的地址流页面大小,而不是 4-7 中的 程序页地址流。这里把虚存的地址流看作虚地址,程序页地址流看作虚页号,按照 4-4 中的公式,虚地址除以页面大小的商就是虚页号。主存容量除以页面大小就是 4-7 中的主存空间页数。

  这里把 1、2、3、5 的结果画在一起:

虚地址 20 22 208 214 146 618 370 490 492 868 916 728
虚页地址 0 0 1 1 0 3 1 2 2 4 4 3
主存 400
页面 200
n=2
0 0 0* 0* 0* 3 3 3* 3* 4 4 4*
1 1 1 1* 1* 2 2 2* 2* 3 命中率
H H H H H H 6/12=0.5
虚地址 20 22 208 214 146 618 370 490 492 868 916 728
虚页地址 0 0 2 2 1 6 3 4 4 8 9 7
主存 400
页面 100
n=4
0 0 0 0 0 0* 3 3 3 3 3* 7
2 2 2 2 2* 4 4 4 4 4
1 1 1 1* 1* 8 8 8
6 6 6 6 6* 9 9 命中率
H H H 3/12=0.25
虚地址 20 22 208 214 146 618 370 490 492 868 916 728
虚页地址 0 0 0 0 0 1 0 1 1 2 2 1
主存 400
页面 400
n=1
0 0 0 0 0 1 0 1 1 2 2 1 命中率
H H H H H H 6/12=0.5
虚地址 20 22 208 214 146 618 370 490 492 868 916 728
虚页地址 0 0 1 1 0 3 1 2 2 4 4 3
主存 800
页面 200
n=4
0 0 0 0 0 0 0 0* 0* 4 4 4
1 1 1 1 1 1 1 1* 1* 1*
3 3 3 3 3 3 3
2 2 2 2 2 命中率
H H H H H H H 7/12=0.58

(4)从前三问的结果可以看出,在分配给程序的实存容量一定(400 字)的条件下,页面大小 S P S_P SP 过小时,命中率 H H H 较低;页面大小增大后,两个地址在同页内的机会增大,使命中率 H H H 有所上升;由于指令之间因远距离的跳转引起命中率 H H H 下降的因素不起主要作用,还未出现随页面大小增大,而使命中率 H H H 下降的情况。如果页地址流有大量的远距离转移,随页面大小增大,因在主存中的页面数过少,而导致出现虚存页面被轮流替换出去的 “颠簸” 现象时,命中率 H H H 反而会下降。

(5)可以看出,分配给程序的实存容量增大后,命中率将会有所上升。不过,命中率的提高已不显著了。如果在增大容量,可以推断出命中率的上升就会渐趋平缓了。


3. 页面替换算法:堆栈模拟

历史考题:2017.10

题目描述:堆栈模拟处理过程图
  

课后习题 4-8

  采用 LRU 替换算法的页式虚拟存储器共有 9 页空间准备分配给 A、B 两道程序。已知 B 道程序若给其分配 4 页时,命中率为 8/15;而若分配 5 页时,命中率可达 10/15。现给出 A 道程序的页地址流的 2, 3, 2, 1, 5, 2, 4, 5, 3, 2, 5, 2, 1, 4, 5。
(1)画出用堆栈对 A 道程序页地址流的模拟处理过程图,统计给其分配 4 页和 5 页时的命中率;
(2)根据已知条件和上述统计结果,给 A、B 两道程序各分配多少实页,可使系统效率最高?

解:
  堆栈模拟其实是模拟的压栈过程,个人把它类比成堆叠书籍,如下表:2 先放桌上,3 来了叠在 2 上面,2 又来了就抽出来放在 3 上面,后面都是一样的过程。n=4 的时候就是只看堆栈内容的前 4 行,最后一行的代表被替代了,这也就符合 LRU 的规则,因为如果最近被用到过肯定是叠在上面的,最下面的就被替代了。

页地址流 2 3 2 1 5 2 4 5 3 2 5 2 1 4 5
堆栈内容 2 3 2 1 5 2 4 5 3 2 5 2 1 4 5
2 3 2 1 5 2 4 5 3 2 5 2 1 4
3 2 1 5 2 4 5 3 3 5 2 1
3 3 1 1 2 4 4 4 3 5 2
3 3 1 1 1 1 4 3 3 命中率
命中
情况
n=4 H H H H H H H 7/15
n=5 H H H H H H H H H H 10/15

  (2)因为一共就 9 页这里的分配方法就是 A4 B5 或者 A5 B4 两种,A 的命中率算出来了,B 的命中率是题目给的,那么 A4 B5 的命中率是 ( 7 / 15 + 10 / 15 ) / 2 = 8.5 / 15 (7/15+10/15)/2=8.5/15 (7/15+10/15)/2=8.5/15,A5 B4 的命中率是 ( 10 / 15 + 8 / 15 ) / 2 = 9 / 15 (10/15+8/15)/2=9/15 (10/15+8/15)/2=9/15,后面一种系统效率高。


4. Cache 组相联映像

历史考题:2021.10、2019.10、2017.10、2016.10

题目描述:画主存、Cache 地址字段对应关系图和空间块的映像对应关系图
  

课后习题 4-14 LRU

  有一个 Cache 存储器。主存共分 8 个块 (0~7),Cache 为 4 个块 (0~3),采用组相联映像,组内块数为 2 块,替换算法为 LRU。
(1)画出主存、Cache 地址的各字段对应关系图(标出位数);
(2)画出主存、Cache 空间块的映像对应关系示意图;
(3)对于如下主存块地址流:1, 2, 4, 1, 3, 7, 0, 1, 2, 5, 4, 6, 4, 7, 2,如主存中内容一开始未装入 Cache 中,请列出 Cache 中各块随时间的使用状况;
(4)对于(3),指出块失效又发生块争用的时刻;
(5)对于(3),求出此期间 Cache 之命中率。

相关概念:
  之前页面替换算法的题目是把 虚存 的地址存到 主存 时发生替换,这里是把 主存 的地址存到 高速缓存 Cache 时发生替换,替换方法并没有区别,但是地址映像之前是 全相连映像,这里是 组相联映像
  全相连映像:主存中任意一块都可映像装入到 Cache 中任意一块位置;就像之前的题目一样,每个虚地址都可以存到主存的任意一页中,没有限制。
  直接映像:主存空间按 Cache 大小等分成区,每个区内的个块只能按位置一一对应到 Cache 的相应块位置上;举例说明比较直接:主存有 0~7 共 8 个块,Cache 有 0~3 共4 个块,那么主存的 0、4 只能存到 Cache 的 0:
( 0 , 4 ) → 0 (0,4)\to0 (0,4)0
( 1 , 5 ) → 1 (1,5)\to1 (1,5)1
( 2 , 6 ) → 2 (2,6)\to2 (2,6)2
( 3 , 7 ) → 3 (3,7)\to3 (3,7)3
  组相联映像:Cache 分成若干组,主存按 Cache 分区,每个区也按 Cache 的样子分组,然后组和组之间直接映像,组和组内部的块相联映像;具体看本题答案可以直观理解。

解:
(2)先看第二问
  Cache 4 块,每组 2 块 即分成 2 组;主存 8 块,即 2 区 2 组 2 块。组间直接映像,即 0 组对应 0 组,1 组对应 1 组;组内相联映像,即组内块和块可以随意存放。
在这里插入图片描述
(1)各字段对应关系图
  根据(2)的结果,可以知道主存是 2 区 2 组 2 块,所以都用 1 个二进制位就能表示;Cache 就是比主存少个区号,别的都一样。有些题目还会给出每块的大小,可以标出块内地址的位数。
在这里插入图片描述
(3)根据映像关系 Cache 的 0, 1 只能存主存的 0, 1, 4, 5;Cache 的 2, 3 只能存主存的 2, 3, 6, 7;然后就和页面替换算法的题一样了。
  这里就用到 LRU 替换算法了,近期最少访问的页作为被替换页;见表格 t=3 时,4 进来 0 组存满了,此时 4 刚用过,1 为最久没用过的所以 1 标记星号,当 t=4 时,又用到了 1,所以改为 4 标记星号。

时间t 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
主存块地址 1 2 4 1 3 7 0 1 2 5 4 6 4 7 2
Cache 块 0 1 1 1* 1 1 1 1* 1 1 1* 4 4 4 4 4
1 4 4* 4* 4* 0 0* 0* 5 5* 5* 5* 5* 5*
2 2 2 2 2* 7 7 7 7* 7* 7* 6 6 6* 2
3 3 3* 3* 3* 2 2 2 2* 2* 7 7*
命中情况 H H H

(4)块失效又发生块争用的时刻:6, 7, 9, 10, 11, 12, 14, 15(发生替换的时刻)
(5)命中率: H c = 3 / 15 = 0.2 H_c=3/15=0.2 Hc=3/15=0.2


5. 存储体系性能参数

历史考题:2020.10

题目描述:计算存储系统平均访问时间、访问效率、加速比。
  

2020.10 真题

  有一个由 Cache 和主存组成的两级存储系统:主存的容量为 100MB,访问时间为 200ns,主存每 MB 的价格为 1 元;Cache 的容量为 4MB,访问时间为 10ns,Cache 每 MB 的价格为 50元。该系统运行某程序,在一段时间内,访问 Cache 的次数为 1980 次,访问主存的次数为 20 次。要求:
(1)计算该存储系统每 MB 的平均价格。
(2)计算系统运行该程序时 Cache 的命中率。
(3)计算该存储系统的平均访问时间。
(4)计算该存储系统的访问效率。

解:
(1) 100 × 1 + 4 × 50 100 + 4 ≈ 2.88 \frac{100\times 1+4\times 50}{100+4}\approx 2.88 100+4100×1+4×502.88

(2) 1980 1980 + 20 = 99 % \frac{1980}{1980+20}=99\% 1980+201980=99%

(3) 20 × 200 + 1980 × 10 2000 = 11.9   n s \frac{20\times 200+1980\times10}{2000}=11.9\ \mathrm{ns} 200020×200+1980×10=11.9 ns

  补充:标准公式是 T A = H T c + ( 1 − H ) T m \mathrm{T_A=HT_c+(1-H)T_m} TA=HTc+(1H)Tm,有时题目会给命中率(访问 Cache 代表命中),也要会用这个公式算,原理是一样的。

(4)访问效率 e = T c / T a = 10 / 11.9 ≈ 84 % \mathrm{e=T_c/T_a=10/11.9\approx 84\%} e=Tc/Ta=10/11.984%
  稍微记一下公式,其实 T c \mathrm{T_c} Tc 也就意味着全部命中的平均时间,也就是最理想的时间,用他除以实际的平均时间自然可以代表效率;有的题是算关于加速比的 s = T m / T a \mathrm{s=T_m/T_a} s=Tm/Ta,也就是最慢时间除以实际平均时间。

おすすめ

転載: blog.csdn.net/weixin_43605641/article/details/124459290