计算机组成原理 高速缓冲存储器与辅助存储器

1.1 概述

一、产生原因

  • 为避免CPU空等的现象
  • CPU与主存(DRAM)的速度差异剪刀差越来越大
  • 依据程序局部性原理

二、Cache的工作原理

1、主存和缓存的编址

  • C<<M
  • 若把主存或者Cache,如果把主存或者Cache分成若干块,则cpu给出内存的地址可分为两部分,一部分是块内偏移地址,位数决定块的大小,若一个块包含16个字节,且内存编址单位是字节,则块内地址部分就是4位,剩余部分就是主存的块的编号。
  • Cache也分为块内地址和缓存块号两部分

 

Cache的标记部分实际上标记了主存块和Cache块之间的对应关系,如果一个主存块调入到Cache当中,可讲主存块号写到标记当中。cpu要从cache中访问这个数据,要先确定要访问的块号是不是已经被送到Cache当中,拿给出地址的主存块号与标记进行比较,若正好相等,并且Cache是有效的,则这个块里面就保存了在内存里的信息可以直接从Cache访问数据,速度大大加快

2、命中与未命中

缓存共有C块 主存共有M块 主存中只有部分块被放入了缓存当中

  • 命中      在cpu要访问主存时,要访问的块已经放进了缓存当中,CPU可以从缓存中取到相应的数据和指令
  • 未命中   要访问的块没有被放入缓存中,cpu只能从主存中获取数据

若命中,主存和缓存块之间就建立了对应关系,某一个主存块装入到了某一个缓存块当中,这个对应关系就可以用标记进行表示,如果没有调入那么就没有建立这种对应关系。在标记记录当中记录了与某缓存块建立对应关系的主存块号

3、命中率

  • CPU预访问的信息在Cache的比率 命中率和Cashe的容量与块长有关
  • 一般每块可取4-8个字
  • 块长取一个存取周期内从主存调出的信息长度
  • CRAY_1 16体交叉 块长取16个存储字
  • IBM 370/168 4体交叉 块长取4个存储字

4、主存系统的效率

效率e与命中率有关

e=\frac{t_{Cache}}{\overline{t}}   访问Cache的时间/平均访问时间

设Cache命中率为h,访问Cache的时间为t_{c},访问主存的时间为t_{m},则e=\frac{t_{c}}{h\times t_{c}+(1-h)\times t_{m}}

三、Cache的基本结果

 四、Cache的读写操作

读操作

写操作 Cache和主存的一致性

1、写直达法

  • 写操作时数据集写入Cache又写入主存
  • 写操作时间就是访问主存的时间,Cache块退出时,不需要对主存执行写操作,更新策略比较容易实现

2、写回法

  • 写操作时只把数据写入Cache而不写回主存,当Cache数据呗替换出去时才写回主存

五、Cache的改进

  1. 增加Cache的级数 
  2. 统一缓存和分立缓存

1.2 Cache-主存的地址映射

一、直接映射

主存当中任意一个给定的块只能映射到指定的cache块当中

拿Cache存储体作为一个尺子度量主存存储体,将主存储器划分成若干个与cache存储体相等的区,每个区当中包含字块数与Cache相同,每个区中的字块编号时可以从0开始,任何一个区的第0块只能放到cache的第0块。

如果cpu给出一个地址,我们分成三部分,区号、块号、块内偏移地址。要对比区号与标记是否相同,则为命中

 

二、全相联映射

Cache利用率变高,只要Cache中还有空闲字块就可以调入,但是速度慢

三、组相联映射

先把Cache分成块,Cache块被分成组。

主存储器进行分区,每个区的大小与Cache的组数相同。每个区的字块0可以被放入cache的第0组任意位置

1.3 替换算法

一、先进先出算法

二、近期最少使用算法

 

2.1 辅助存储器

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章