计算机体系结构---存储系统3

1. 存储系统性能量化

1.1 存储系统层次结构

CPU → M1 → M2 ······ Mn
访问时间T: T1 < T2 < ······ Tn
容量S:S1 < S2 < ······ Sn
平均每位价格C:C1 < C2 < ······ Cn
整个系统的平均访问时间接近M1的访问时间,容量和平均每位价格接近Mn的。

1.2 命中率和不命中率

以二级存储系统为例(只有M1和M2)
命中率H:CPU访问存储系统时,在M1中找到所需信息的概率。
H=N1N1+N2H = \frac{{{N_1}}}{{{N_1} + {N_2}}}
(N1为访问M1的次数,N2为访问M2的次数)
不命中率F:F = 1 - H

1.3 平均访问时间

  1. 当命中时,访问时间为T1,命中概率为H
  2. 不命中时,访问时间(从向M2发出访问请求到把整个数据块调入M1中所需的时间)为TM = T2 + TB (TB是传送一个信息块所需的时间)
    平均访问时间TA:
    TA=HT1+(1H)(T1+TM){T_A} = H \cdot {T_1} + (1 - H)({T_1} + {T_M})

2. Cache

2.1 多级Cache

  1. 受延迟的影响,越近越快,远了快不了(面积大也快不了)
  2. 越快的存储器越小、越贵
  3. L1-$(1级缓存):32KB-128KB(而且数据和指令分开),与处理器速度匹配
  4. L2-$(2级缓存):4MB-8MB(平均每核2MB)
  5. LLC(3级缓存):38.5MB
  6. DDR(内存):2G-16GB

2.2 映象规则及其转换

  1. 全相联映象
    (1)映象规则:①主存与缓存分成相同大小的数据块 ②主存的任意一块可以映象到Cache中的任意一块。
    (2)特点:①空间利用率最高 ,冲突的概率也最低 ,命中率高②实现最为复杂,成本高,速度低,需要比较每个Cache块是否被使用
  2. 直接相联映象
    (1)映象规则:①主存储器中一块只能映象到Cache的一个特定的块中。
    Cache地址的计算公式: b = B mod Cb(b是Cache块号,B是主存块号,Cb是Cache块数)
    Cache地址与主存储器地址的低位部分完全相同
    ②对主存进行分区,每个区的数据块数量和Cache中数据块的数量相同。③每个区中的数据块和Cache中数据块一一对应放置
    (2)特点:①硬件实现很简单不需要相联访问存储器 ②访问速度也比较快,实际上不需要进行地址变换 ③块的冲突率比较高,空间利用率低 ,命中率低
  3. 组相联映象
    (1)映象规则:①主存和Cache按同样大小划分成块和组 ②主存和Cache的组之间采用直接映象方式 ③在两个对应的组内部采用全相联映象方式 ④用主存地址中的组号G去块表中查找,区号和块号是否命中,命中就可以找到该数据在Cache中组内块号,然后合成Cache地址进行数据查找
    (2)特点:①冲突概率比较低 ②利用率大幅度提高 ,速度快③失效率明显降低 ④实现难度和造价要比直接映象方式高

2.3 写策略与替换算法


  1. (1)写穿(Write through):写cache,同时写内存
    特点:①一致性好 ②速度慢
    (2)写回(write back):只写cache,只有被替换时才写回内存
    特点:①速度快 ②出错率高一倍
  2. 替换算法
    (1)随机法:(Random,RAND)
    (2)先进先出法(First-In First-Out,FIFO)
    (3)近期最少使用法(Least Recently Used,LRU)
    (4)最久没有使用法(Least Frequently Used,LFU)

2.4 降低Cache不命中率

  1. 不命中类型
    (1)强制性不命中(Compulsory miss)
    当第一次访问一个块时,该块不在Cache中,需从下一级存储器中调入Cache。(冷启动不命中,首次访问不命中)(增加块大小,硬件预取)
    (2)容量不命中(Capacity miss)
    如果程序执行时所需的块不能全部调入Cache中,则当某些块被替换后,若又重新被访问,就会发生不命中。(增加Cache容量)
    (3)冲突不命中(Conflict miss)
    在组相联或直接映象Cache中,若太多的块映象到同一组(块)中,则该组中某个块被别的块替换(即使别的组或块有空闲位置)然后又被重新访问的情况。(碰撞不命中,干扰不命中)(提高相联度)
  2. 不命中的特点
    (1)相联度越高,冲突不命中就越少
    (2)强制性不命中和容量不命中不受相联度的影响
    (3)强制性不命中不受Cache容量的影响,但容量不命中却随着容量的增加而减少
  3. 降低Cache不命中率
    (1)增加Cache大小
    ①对于给定的Cache容量,当块大小增加时,不命中率开始是下降,后来反而上升了。
    ②一方面它减少了强制性不命中,另一方面,由于增加块大小会减少Cache中块的数目,所以有可能会增加冲突不命中。
    ③Cache容量越大,使不命中率达到最低的块大小就越大。
    ④增加块大小会增加不命中开销
    (2)增加Cache容量
    ①最直接的方法 ② 增加成本 ③可能增加命中时间 ④在片外Cache中用得比较多
    (3)提高相联度
    ①采用相联度超过8的方案的实际意义不大
    ②提高相联度是以增加命中时间为代价
    ③容量为N的直接映象Cache的不命中率和容量为N/2的两路组相联Cache的不命中率差不多相同。
    (4)伪相联cache
    ①命中时间小 ②不命中率低
    ③在逻辑上把直接映象Cache的空间上下平分为两个区。对于任何一次访问,伪相联Cache先按直接映象Cache的方式去处理。若命中,则其访问过程与直接映象Cache的情况一样。若不命中,则再到另一区相应的位置去查找。若找到,则发生了伪命中,否则就只好访问下一级存储器。
    (5)硬件预取
    ①指令和数据都可以预取
    ②预取内容既可放入Cache,也可放在外缓冲器中
    ③指令预取通常由Cache之外的硬件完成
    (6)编译器控制的预取
    ①寄存器预取:把数据取到寄存器中。
    ②Cache预取:将数据取到Cache中。
    ③故障性预取:在预取时,若出现虚地址故障或违反保护权限就会发生异常
    ④非故障性预取:在遇到这种情况时则不会发生异常,因为这时它会放弃预取,转变为空操作。
    (7)编译器优化
    程序代码和数据重组
    (8)“牺牲"cache
    ①一种能减少冲突不命中次数而又不影响时钟频率的方法
    ②基本思想:在Cache和它从下一级存储器调数据的通路之间设置一个全相联的小Cache,称为“牺牲”Cache(Victim Cache)。用于存放被替换出去的块(称为牺牲者),以备重用。
    ③对于减小冲突不命中很有效,特别是对于小容量的直接映象数据Cache,作用尤其明显

2.5 减少Cache不命中开销

  1. 采用两级Cache
    (1)第一级Cache(L1)小而快
    (2)第二级Cache(L2)容量大
  2. 让读不命中优先于写
  3. 写缓冲合并
  4. 请求字处理技术
  5. 非阻塞Cache技术
    例题: 考虑某两级cache,第一级为L1,第二级为L2,两级cache的全局不命中率分别是4%和2%,假设L2的命中时间是10个时钟周期,L2的不命中开销是100时钟周期,L1的命中时间是1个时钟周期,平均每条指令访存1.5次。问:每条指令的平均停顿时间是多少个时钟周期?
    L1: 全局不命中率 = 局部不命中率 = 4%
    L2:全局不命中率 = 2%, 局部不命中率 = 2% ÷ 4% = 50%(L2全局 = L1全局 × L2局部)(L3全局 = L1全局 × L2局部 × L3局部)
    平均访存时间=L1命中时间+L1不命中率 ×(L2命中时间+ L2局部不命中率 × L2不命中开销) =1+4%×(10+50%×100)= 3.4
    每次访存的平均停顿时间 = 3.4 - 1 = 2.4
    每条指令的平均停顿时间=2.4×1.5=3.6个时钟周期

2.6 减少Cache命中时间

  1. 采用容量小、结构简单的Cache
  2. 采用虚拟Cache
  3. Cache访问流水化
  4. 踪迹Cache

2.7 并行主存系统

并行主存系统是在一个访存周期内能并行访问多个存储字的存储器
提高主存带宽:

  1. 单体多字存储器
    能提高m(字数)倍,实现简单, 访存效率不高
  2. 多体交叉存储器
    由多个单字存储体构成,每个体都有自己的地址寄存器以及地址译码和读/写驱动等电路。
    编址方式:①高位交叉编址 ②低位交叉编址(有效地解决访问冲突问题)

2.8 虚拟存储器

  1. 原理
    借助于磁盘等辅助存储器来扩大主存容量,使之为更大或更多的程序所使用。
    虚拟存储器指的是主存-外存层次。以透明的方式为用户提供了一个比实际主存空间大得多的程序地址空间
  2. 特点
    (1)多个进程可以共享主存空间
    (2)程序员不必做存储管理工作
    (3)采用动态再定位,简化了程序的装入
  3. 分类
    (1)页式
    (2)段式
  4. 映象规则:全相联
  5. 查找算法:页表,段表,TLB(快表)
  6. 替换算法:近期最少使用法(Least Recently Used,LRU)
  7. 写策略:写回法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章