13高速缓冲存储器

3.6 高速缓冲存储器

由于程序的转移概率不会很低,数据分布的离散性较大,所以单纯依靠并行主存系统提高主存系统的频宽是有限的,这就需要从系统结构上进行改进,即采用存储体系,通常将存储系统分为"Cache-主存"层次和"主存-辅存"层次

3.6.1 程序访问的局部性原理

程序访问的局部性原理包括时间局部性和空间局部性.时间局部性是指在最近的未来要用到的信息,很可能是现在正在使用的信息,因为程序中存在循环.空间局部性是指在最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间上是邻近的,因为指令通常是顺序存放,顺序执行的,数据一般也是以向量,数组等形式簇聚地存储在一起的.

高速缓冲技术就是利用程序访问的局部性原理,把程序中正在使用的部分存放在一个高速的,容量较小的Cache中,使CPU的访存操作大多数对Cache进行,从而大大提高程序的执行速度

例3.2 假定数组元素按行优先方式存储,对于下面的两个函数

  1. 对于数组a的访问,那个空间局部性更好?哪个时间局部性更好?

2)对于指令访问来说,for循环体的空间局部性和时间局部性如何?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dUz7j4Jt-1628144117543)(C:\Users\93623\AppData\Roaming\Typora\typora-user-images\image-20210413174202886.png)]

​ 解:

​ 假定M,N都为2048,按字节编址,每个数组元素占4个字节,则指令和数据在主存的存放情况如图3.16

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LCYv33uy-1628144117545)(C:\Users\93623\AppData\Roaming\Typora\typora-user-images\image-20210413175526733.png)]

  1. 对于数组a,程序A和程序B的空间局部性相差较大. 程序A对数组a的访问顺序为 a [ 0 ] [ 0 ] , a [ 0 ] [ 1 ] , ⋯   , a [ 0 ] [ 2047 ] \mathrm{a}[0][0], \mathrm{a}[0][1], \cdots, \mathrm{a}[0][2047] a[0][0],a[0][1],,a[0][2047]; a [ 1 ] [ 0 ] , a [ 1 ] [ 1 ]

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值