961计组考纲(3)——存储器层次结构

961计组考纲(3)——存储器层次结构

一些记录和理解。

存储器的层次化结构

高			低
<---------------------->
|		            |
CPU寄存器<->Cache<->主存<->辅存(磁盘->磁带、光盘)
  • Cache:解决CPU和主存速度不匹配的问题
  • 主存-辅存:解决存储系统容量不够的问题

主存储器与CPU的连接

  • Cache通常用SRAM
  • Memory通常用DRAM(按行刷新,费电)
  • DRAM地址复用,行选线和列选线是一样的

DRAM的刷新

刷新一次=存取一次

有硬件支持,读出一行信息后重新写入,占用一个读/写周期

仅需行地址,不用选片

  • 集中刷新:集中刷新时间 = 行数×存取周期
  • 分散刷新:边读写边刷新,刷新时间也算到存取周期里
  • 异步刷新:刷新间隔时间 = 最大刷新间隔/行数

存储芯片扩展

  • 主存储器通过数据总线、地址总线、控制总线与CPU连接

  • 数据总线位数×主频=数据传输率(带宽)

  • 注意题目中访存、读写控制信号是不是低电平有效

位扩展

比特不够用了,数据位数必须和CPU的数据线数相等

每个片连的数据线不一样,地址线一样。

字扩展

相当于纵向扩充地址空间,CPU给的地址——低位表示offset,高位用于选片;

每个片连的数据线一样,地址线一样,但是需要译码器,片选信号选中的,地址才有效。

高速缓冲存储器(Cache)

Cache 在存储器层次结构的顶层,通常SRAM构成。

Cache与主存的交换:有直接通路,一次一个Cache Line(Cache块)

显然,Cache块和主存块大小是相等的

image-20201029195744853

Cache的基本工作原理

程序访问的局部性原理(程序是不均匀的)

Cache和主存之间的映射方式

  • 直接映射:一个Line一组,全员哈希(取模)
    • Cache行号=主存块号 % Cache总行数
    • 哈希经常冲突,空间利用率低,命中率最低
  • 全相联映射:所有Line都在一组,组内全员随机,Tag = 主存块号
    • 虽然冲突概率低,命中率最高,但是要轮询比较Tag才知道在哪一行,太慢了
    • 还需要昂贵的相联存储器地址映射,存Tag需要的空间太多
  • 组相联映射:哈希选组,组内随机
    • Cache组号=主存块号 % Cache组数
      • Cache组数=Cache块数/X路

主存(物理)地址:主存块号+Offset --> 可以被拆分成Tag + Cache组号 + offset

Cache中一行的内容:Tag标记+Cache数据+有效位(可能还有脏位和读写控制位)

计算Cache容量的时候一定不要忘了Valid Bit啊!按题目要求再决定要不要Dirt
判断命中与否的时候先看有效位是不是0,Tag相同但有效位是0依然不命中

Cache中主存块的替换算法与写策略

  • 替换算法:和页面替换算法是一样的,到OS里去复习
  • 写策略有两套:
    • 第一套(都要写主存):
      • Hit时,全写法(写直通法),同时写入Cache和主存
      • Miss时,非写分配法,只写入主存,不调块。
    • 第二套(只写Cache优先):
      • Hit时,写回法,先写Cache,当Cache要被换出才写主存,需要多余的dirty bit
      • Miss时,写分配法,加载主存的块到Cache中,更新这个Cache块,下次命中且被替换时才写回主存

多层次Cache性能计算

Tm为主存储器的访问周期;Tc为Cache的访问周期;H为Cache命中率

则存储系统的等效访问周期T为:

[T=T_{c} imes H+T_{m} imes(1-H) ]

(就是加权平均数)

虚拟存储器

跟操作系统完全一样,经常联合出大题

虚拟存储器的基本概念

目的:小内存执行大程序

虚存的三个能力:

  1. 所有进程都拥有大的、一致的、连续的、私有的地址空间,都以为自己在独占单机系统。
  2. 隔离了进程的地址访问,保护每个进程的地址空间不受破坏
  3. 上层存储是下一层的Cache,主存是磁盘的Cache,换入换出,充分利用空间,不必把作业全部装入再运行。

页式虚拟存储器

TLB(快表)

TLB快表是页表项的副本,Cache是主存块的副本。图源王道2021教材。

普通的进程页表存在主存里。缺页中断指的是主存缺页。

IMG_73A064CE934B-1

IMG_0443

来自Wiki:

Referencing the physical memory addresses, a TLB may reside between the CPU and the CPU cache, between the CPU cache and primary storage memory, or between levels of a multi-level cache. The placement determines whether the cache uses physical or virtual addressing. If the cache is virtually addressed, requests are sent directly from the CPU to the cache, and the TLB is accessed only on a cache miss. If the cache is physically addressed, the CPU does a TLB lookup on every memory operation, and the resulting physical address is sent to the cache.

TLB也可以组相联,对待方式把VA拆分成Tag+组号+Offset

Cache和Memory本身并不知道页的存在(Memory划分成了一个个页框,但是Cache和Memory之间的交换单位Cache Line却比页面小很多),只有OS知道页框的存在和分配管理。

原文地址:https://www.cnblogs.com/vanellopeblog/p/961CO3.html