局部性原理及性能分析
本文主要介绍缓存的局部性原理以及性能分析
局部性原理
- 空间局部性:在最近的未来,要使用的信息(指令和数据),很可能与现在正在使用的信息在存储空间上是邻近的或者是连续的
- 时间局部性:在最近的未来,要使用的信息,很可能是现在正在使用的信息
上图是假设CPU从主存的存取数据的时间是1000ns,而CPU内部执行加法运算只需要5ns,那么可以得出图示的执行时间就是(取数据时间+存数据时间+加法运算时间)*次数= (1000+1000+5)*1000 = 2005us
如果引入高速缓存的来当作媒介,即 在主存和CPU中间加入了高速缓存cache,那么CPU与cache之间的存取时间也是5ns,以每次从主存中拿10个int值到cache中为例,则需要的总时间=(向主存中取数据时间+向cache取数据+加法时间+向cache存数据时间)*次数=(1000+5+5+5)*10 = 115us,由此可以看出性能提高了一个数量级
在实际的操作中与评估中,计算机不可能只进行类似的简单的运算,因此引入了下面的洗呢性能分析模型
性能分析
相关概念
- 命中率:CPU要访问的信息已经在cache中的比例。设一个程序执行期间,cache的总命中次数为Nc,访问主存的总次数是Nm,则H=Nc/Nc
+Nm - 缺失率:M = 1-H
- 平均访问时间:设tc为命中cache的访问时间,tm为未命中时的访问时间,则系统的平均访问时间=命中率访问cache时间+缺失率访问主存时间,即:Ta = Htc+Mtm