02325 "Computer System Architecture" self-examination questions: Chapter 4

Review the general catalog

  02325 "Computer System Architecture" self-examination review key list

Chapter 4 Storage System

1. Page table address mapping

History Exam Questions :

Title description : Calculate the real address corresponding to the virtual address according to the page table method mapping table and page size
  

Homework Exercises 4-4

  A virtual memory has 8 pages in total, each page has 1024 words, and the actual main memory has 4096 words. The page table method is used for address mapping. The content of the mapping table is as follows.
(1) List all the virtual page numbers that will cause page failure;
(2) Calculate the real address of the main memory according to the following virtual addresses: 0, 3728, 1023, 1024, 2055, 7800, 4096, 6800.

actual page number load bit
3 1
1 1
2 0
3 0
2 1
1 0
0 1
0 0

Solution:
(1) Add the virtual page number to the mapping table given in the title, that is, from 0 to 7 in order:

virtual page number actual page number load bit
0 3 1
1 1 1
2 2 0
3 3 0
4 2 1
5 1 0
6 0 1
7 0 0

  The virtual page number of the page failure is the virtual page number whose load bit is 0, that is, 2, 3, 5, 7.

(2) Draw a table for calculating the real address of the main memory from the virtual address

virtual address virtual page number page shift load bit actual page number page shift real address
0 0 0 1 3 0 3072
3728 3 656 0 page failure none
1023 0 1023 1 3 1023 4095
1024 1 0 1 1 0 1024
2055 2 7 0 page failure none
7800 7 632 0 page failure none
4096 4 0 1 2 0 2048
6800 6 656 1 0 656 656

Virtual address ÷ page size = virtual page number ⋯ ⋯ page displacement virtual address\div page size=virtual page number\cdots\cdots page displacementvirtual address÷page size=virtual page number⋯⋯The quotient of the displacement within the page
is the virtual page number, the remainder is the displacement within the page, and the page size is 1024 words per page given in the title.
The loading bit and real page number are filled in according to the table in the first question according to the corresponding values ​​of different virtual page numbers; the
displacement in the two pages is the same, and an additional displacement in the page is written on the right side of the real page number to facilitate the calculation of the real address
. Address = real page number × page size + page displacement Real address = real page number\times page size + page displacementreal address=actual page number×page size+page shift


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,也就是最慢时间除以实际平均时间。

Guess you like

Origin blog.csdn.net/weixin_43605641/article/details/124459290