1 / 60

第九章 存储层次

第九章 存储层次. 9.1 存储器的层次结构 9.2 Cache 存储器 9.3 虚拟存储器 9.4 基本 Cache 和虚拟存储器的扩展 9.5 实例: Pentium/Windows 个人计算机 上的内存管理. 同济大学 软件学院. 9.1 存储器的层次结构. 图 9.1 一般的存储器层次. 物理内存: 由动态 RAM 组成。 Cache 存储器: 由静态 RAM 构成,比 DRAM 快得多,但也 昂贵的多。 Cache 是物理内存的部分副本。 虚拟存储器: 空间比物理内存大得多的逻辑空间。.

elgin
Download Presentation

第九章 存储层次

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第九章 存储层次 9.1 存储器的层次结构 9.2 Cache存储器 9.3 虚拟存储器 9.4 基本Cache和虚拟存储器的扩展 9.5 实例:Pentium/Windows个人计算机 上的内存管理 同济大学 软件学院

  2. 9.1 存储器的层次结构 图9.1 一般的存储器层次 物理内存:由动态RAM组成。 Cache存储器:由静态RAM构成,比DRAM快得多,但也 昂贵的多。Cache是物理内存的部分副本。 虚拟存储器:空间比物理内存大得多的逻辑空间。

  3. 9.2 Cache存储器 目标:弥补主存速度的不足 9.2.1 相联存储器 ◆ 一般存储器 接收一个地址,访问该地址中的数据。 ◆ 相联存储器:按内容访问的存储器。 并行搜索所有单元,标记那些与特定数据匹 配的单元,然后连续读出匹配的数据值。

  4. 1. 相联存储器的内部组织结构

  5. 2. 读数据 CPU必须给出两个值: ◆ 第一个值:要被匹配的数据值(参数或数据) ◆ 第二个值:哪些位需要检查(屏蔽位或关键位) 如果满足如下的公式,则匹配就会发生

  6. 例如(参考图9.2): 屏蔽寄存器K  1111 0000 0000 0000 数据寄存器D  1010 XXXX XXXX XXXX 数 据 位M  1010 1101 0000 0111 执行 0000 XXXX XXXX XXXX 执行 1111 XXXX XXXX XXXX 执行 1111 1111 1111 1111

  7. 3. 将数据写回相联存储器 CPU把数据送到数据寄存器并发出写信号。相联存储器检查所有单元的有效位,并找到有效位为0的一个单元,如果找到,把数据存到这个单元,同时将有效位设为1。如果没有找到,必须采用替换算法清除一个单元来保存数据。

  8. 常见的替换算法 • FIFO • LRU • RANDOM 9.2.2 相联映象的Cache存储器

  9. 64K 8位内存

  10. ◆ 作用于数据行或数据块的相联存储器

  11. 9.2.3 直接映象的Cache存储器 一种利用标准的SRAM、廉价的Cache映射方案。

  12. ◆索引 Cache地址的低位,用来选择Cache的一个特定单元。 ◆标识 原始地址中不是索引的那些高位。 设M=2m,则当表示为二进制数时,j 实际 上就是i 的低m 位: i: j m位 i:主存地址 j:Cache地址

  13. ◆Cache容量: 1K

  14. ◆相对简单的CPU中,块大小为4字节的直接映像Cache◆相对简单的CPU中,块大小为4字节的直接映像Cache

  15. 9.2.4 组相联映像的cache存储器

  16. ◆考察大小为1k的2路组相联cache 组数 该cache有1k个数据入口,每个单元2个数据值,因此有512个单元 用9个地址位选择cache单元,剩下的7位说明标识值 计数值用来纪录数据什么时候被访问过了

  17. ◆相对简单CPU中具有4字节数据行的2路组相联cache◆相对简单CPU中具有4字节数据行的2路组相联cache

  18. 9.2.5 在cache中替换数据 问题的引出: 当cache已满时,又有新数据要调入cache,需 将哪个数据移出cache。 FIFO 先进先出原则 LRU 近期最少使用原则 随机策略

  19. 例:在一个4路组相联cache单元中应用LRU策略 1. Cache单元的当前状态 T D C V T D C V T D C V T D C V C c 2 1 B b 1 1 A a 0 1 - - - 0 2. CPU访问D C c 3 1 B b 2 1 A a 1 1 D d 0 1 3. CPU访问E E e 0 1 B b 3 1 A a 2 1 D d 1 1 4. CPU访问A E e 1 1 B b 3 1 A a 0 1 D d 2 1

  20. 9.2.6 写数据到cache • 写直达法 每次信息从CPU写入cache单元中时,也要 写回相应的物理内存单元中 • 回写法 写入cache中的值并不总是被写回物理内 存。仅在数据被移出cache时写回物理内存。

  21. 处理写失效问题 按写分配法 把单元装入cache,然后使用写直达法或 写回法把数据写到cache 不按写分配法 直接更新物理内存中的值,而不把值写回 Cache。

  22. 9.2.7 cache的性能 1. 评判性能的标准 ◆ 命中率与失效率 Cache命中率:CPU访问Cache时,在Cache中找到 数据的概率。 Cache失效率:CPU访问Cache时,在Cache中找不 到数据的概率。 ◆ 平均访问时间 Tm=h Tc+ (1-h) Tp

  23. Tc = 10ns Tp = 60ns 结论:增加命中率 能够减少平均访问 时间

  24. 2. 如何计算命中率和平均访问时间? 例:CPU访问下列顺序单元: 每一个值的下标是由物理内存地址的低3位来描述的。 A0 B0 C2 A0 D1 B0 E4 F5 A0 C2 D1 B0 G3 C2 H7 I6 A0 B0 现在我们确定在三种不同cache配置下的命中率 和平均访问时间。 假设: Tc=10ns Tp=60ns

  25. ◆8字节相联cache 初始化为空,使用FIFO的替换策略。 访问: 18次 命中:7次 命中率:h=0.389 平均访问时间:Tm=40.56ns

  26. Data A B C A D B E F A C D B G C H I A B 0 A B B A A B B B A A A B B B B B A B C 1 D D D D D D D D D D D D D D A 2 C C C C C C C C C C C C C C C C C 3 G G G G G G H 4 E E E E E E E E E E E E E 5 F F F F F F F F F F F 6 | | | 7 H H H H Hit? √ √ √ ◆ 直接映射cache 命中率:h=0.167 平均访问时间:Tm=50.67ns

  27. ◆8字节的2路组相联cache Cache使用LRU替换策略。 命中率:h = 0.389 平均访问时间:Tm = 40.56ns

  28. 考虑这个同样的系统。 有2字节的数据行 组成相关行的数据对; A和J;B和D;C和G;E和F;I和H 使用相同的替换策略 (相联cache采用FIFO,组相联采用LRU) 相同的访问时间(Tc=10ns,Tp=60ns)

  29. Data A B C A D B E F A C D B G C H I A B A A A A A A A A A A A A A A | | | | C J J J J J J J J J J J JJ J J H H H H A B B B B B B B B B B B B B B B A A C D D D D D D D D D D D D D D D J J H C C C C C C C C C C C C C C C B E G G G G G G G G G G G G G G G D E E E E E E E E E E E E F F F F F F F F F F F F Hit? √ √ √ √ √ √ √ √ √ √ √ 相联cache:命中率h=0.611 平均访问时间Tm=29.44ns

  30. Data A B C A D B E F A C D B G C H I A B 0 A B B A B B B B A A B B B B B B A B C 1 J D D J D D D D J J D D D D D D J D A 2 C C C C C C C C C C C C C C C C C 3 G G G G G G G G G G G G G G G G H 4 E E E E E E E E E E E E E 5 F F F F F F F F F F F F 6 | | | 7 H H H H Hit? √ √ √ √ √ √ √ 直接映射cache:h=0.389 Tm=40.56ns

  31. 9.3 虚拟存储器 交换磁盘 交换文件 存储管理单元 在物理内存和较慢的存储设备间移动数据 虚拟存储器的主要实现方法:分页和分段

  32. 9.3.1 分页 页面:在分页技术中,整个逻辑地址空间被划分为连续的块叫做页面 页面的特点: • 每个页尺寸相同 • 页面不可重叠,每个逻辑地址确切地 属于某个页面

  33. 一个页面或者包含程序指令或者包含数据,不能同时包含两者一个页面或者包含程序指令或者包含数据,不能同时包含两者 4. 可能导致内部碎片问题 内部碎片:假设MMU实现的页式存储器中每个页面大小为4K,一个4K+1大小的程序需要MMU分配两个存储器页面,尽管它的第二个页面只用了4K单元的一个单元,这就是所谓的内存碎片

  34. 图9.10 相对简单CPU一种可能的内存配置 它具有64k的逻辑地址空间,16k的物理内存,页面大小4k

  35. 分页系统必须解决的问题: • 何时将某页移入内存? • CPU如何在物理内存找到数据,尤其逻辑地址和物理地址不一至的情况下? • 当所有页框都装有页面,而CPU需要访问的数据不在这些页面怎么办?

  36. 存储管理单元处理上述所有问题 完成逻辑地址到物理地址的转换 产生缺页故障,将数据从页面装入到物理内存 产生请求页,把新的请求页移入到物理内存

  37. 图9.11 存储器层次结构中的MMU配置

  38. 在处理器需要访问数据,MMU将数据从逻辑地址装入物理地址的整个处理过程中,CPU没有访问物理单元的任何信息在处理器需要访问数据,MMU将数据从逻辑地址装入物理地址的整个处理过程中,CPU没有访问物理单元的任何信息 例:指令 LDAC 4324H如何理解? 答案: • 把数据从逻辑地址4234H装入累加器 • 将逻辑单元4234H的数据装入累加器,此数据实际存储在物理单元3234H中 系统更倾向解释成1

  39. 页表的概念 MMU用页表来跟踪哪一页存储在哪个帧中 页表的组成(如图9.12): 帧指示域(frame) 有效位(valid) 计数值(count,有些页表不需要) 脏位(dirty)

  40. 0页,对应于逻辑地 址0000H~1FFFH, 存储在1号页框中,物理地址为1000H~1FFFH 相对简单CPU的页表,有16K的物理内存,页面大小为4K。 页表包含了16个单元,每一单元对应逻辑地址空间的一个页面,它包含一个2bit的域,表明了该逻辑页存储在哪一个页框中 每一单元还包含一个有效位 图9.12 (a)为页表,(b)为对应的物理内存

  41. MMU中逻辑地址到物理地址的转换 MMU将逻辑地址看作两个部分 页和偏移量 例:考虑LDAC 4234H,MMC如何将逻辑 地址4234H转换成物理地址(如图9.13)

  42. 高4位逻辑地址表明页号,剩下的12位为偏移量 四个高位为0100 页框号11表明页被映射到页框3 此值与12位的偏移量拼接,生成物理地址11 0010 0011 0100 图9.13 用页表将逻辑地址转换成物理地址

  43. 图9.13所示的MMU并没有很好的转换地址? 因为从页表中读页框号会有一个延时,并且由于取出相邻的指令,系统可能连续的成百上千次的读这一相同的值 变换旁视缓冲器可以解决上述问题(图9.14),其功能跟页表一样,可产生帧值,但它更快,这样就提高了性能

  44. 注意TLB没有必要包含计数位或者脏位,因为这些信息仍然保存在页表中。注意TLB没有必要包含计数位或者脏位,因为这些信息仍然保存在页表中。 TLB中的每一个地址入口包含在页表中,但反过来不成立 图9.14 使用TLB转换逻辑地址到物理地址

  45. 例:考虑一台含有相对简单CPU,相同内存配置的计算机。它必须取、翻译和执行下列程序 (如表9.8) 0000H: LDAC 4234H 0003H: STAC 4235H 0006H: JUMP 1000H 1000-1063H: (100 register instructions) 1064H: JUMP 2000H 2000H-2031H: (50 register instructions) 2032H: JUMP 0100H 0100H-01C7H: (200 register instructions) 01C8H: JUMP 3000H 3000H-3063H: (100 register instructions) 3064H: JUMP 0000H 4234H: 27H(data value)

  46. 表9.8 使用LRU替换算法的部分页表和TLB值

  47. 表9.9使用FIFO替换算法的部分页表和TLB值

  48. 9.3.1 分段 分段:在分段技术中,程序被划分为几段,每段为一个自包含的单元 分段的特点: • 每个段大小可以变化 • 分段存在外部碎片问题

  49. 外部碎片:内存驻留有3个段,另有8K自由空间。而这8K空间被划分开了,于是不移动或撤除某个当前载入段的话,大小超过3K的段已无法装入内存(如图9.16)外部碎片:内存驻留有3个段,另有8K自由空间。而这8K空间被划分开了,于是不移动或撤除某个当前载入段的话,大小超过3K的段已无法装入内存(如图9.16) 图9.16由于分段引起的物理内存外部碎片

  50. 分段机制中逻辑地址到物理地址的转换 逻辑地址被剖分为段号和偏移量 图9.15 分段机制中逻辑地址到物理地址的转换

More Related