您好,欢迎来到年旅网。
搜索
您的当前位置:首页计算机组成原理——存储器层次结构

计算机组成原理——存储器层次结构

来源:年旅网

继续整理整理~~

存储器层次结构

存储器差异

首先我们必须认识到不同存储器之间的效率差异,见下图:


基于不同存储技术访问时间的差异很大,我们能够得到下图所示的存储器层次结构

根据这种规律,位于第K层的更小更快的存储设备可以作为位于第k+1层的更大更慢的存储设备的缓存,来节约时间提高效率。

简单介绍一下缓存:
缓存:一种较小,速度较快的存储设备,可作为存储设备的暂存区较大,较慢的设备中的数据子集。
对于第k+1层存储器,其被划分为连续数据对象组的块,对k层亦然。
只不过第k层的块少于第k+1层,而k层缓存应包含k+1层块的子集数据副本(通常相邻层次块大小固定,不同层次间可有不同大小的块)

局部性原理:具有局部性原理的程序倾向于使用,那些接近或等于他们最近使用过的那些数据和指令,这种局部性包括空间局部性和时间局部性。
一个好的程序总是保持这良好的局部性。
局部性好的程序就是充分地利用了存储的缓存机制。

空间局部性(命中相邻)

for(int i = 0;i < M;++i){
	sum += v[i]; 
	//其中sum常用,对于时间局部性,i为索引,步长为1很小,对应空间局部性
}

缓存类型

对于缓存命中hit,即当前访问数据无需从慢的k+1层存储访问,直接从第k层缓存读取。

磁盘读取

磁盘驱动器:

  1. 寻道时间:主要是将磁头定位在包含目标扇区的圆柱体上的时间,一般直接给或者是
    磁道数*平均移动时间。
  2. 旋转时间:等待旋转至目标扇区的第一位在读/写头下通过的时间,注意:这里一般会给一个转速 例如6000转/min,我们一般计算平均旋转时间 Tavg rotation = 1/2 x 1/RPMs x 60 sec/1 min
    对于6000r/min ====> 60 / 6000(每秒转多少圈) * 1/2(平均旋转) * 1000(一般转化为ms) = 5ms
  3. 读取时间:读取目标扇区中的数据的时间。Tavg transfer = 1/RPM * 1/(avg # sectors/track 一个磁道平均多少扇区,实际上是计算旋转了多少圈) * 60 secs/1 min.
    例如:6000r/min 每个磁道100个扇区 读取时间 = 60/6000 * 1 / 100 * 1000 = 0.1ms

补充练习

设某单面磁盘旋转速度为每分钟 6000 转,每个磁道有 100 个扇区,相邻磁道间的平均移动时间为 1ms。若在某时刻,磁头位于 100 号磁道处,并沿着磁道号增大的方向移动(如下图所示),磁道号请求队列为 50,90,30,120(采用电梯调度),对请求队列中的每个磁道需读取 1 个随机分布的扇区,则读完这 4 个扇区点共需要多少时间 ?

可以发现实际上耗时最长的还是寻道时间和旋转时间,而旋转时间用硬件决定难以优化,因此一般优化磁盘臂调度策略。

缓存存储器的组织和操作

通常缓存组织形式为组,每组内有若干行行:

不同的缓存存储类型:

  1. 直接映射高速缓存——每组仅有一行(E = 1)

    由于组内仅有一个行,比较tag,若match则命中,再找块偏移。

  2. 组相联高速缓存——E > 1

    与直接映射高速缓存差异不大,只不过这里组内多行,都比较找tag是否match

  1. 全相联高速缓存——只有唯一一个组,地址中没有组索引了

注意写回问题:
L1,L2,主内存,磁盘可能存在多个数据副本:
高速缓存与原副本之间的更新问题,直写方式为 写命中时更新的缓存数据立即写入内存;写回方式为 脏页被替换策略替换时才写回

基本了解了缓存原理,这就要求我们编程时保持良好的局部性原理,提高缓存命中效率。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务