1.5 高速缓存至关重要
高速缓存
在运行程序的过程中,发现一个很重要的问题:系统花费了大量的时间把信息从一个地方挪到另一个地方。
在1.4的实例中:hello程序的机器指令开始是放在磁盘上
- 程序加载时,它们被复制到主存(从磁盘到内存)
- 程序运行时,它们被复制到处理器(从内存到处理器)
"hello, world\n"数据最开始在磁盘,后来复制到内存,然后是显示设备。
这些复制就是开销,减缓了程序的工作。怎么才能使这些复制工作尽快完成呢?
处理器和内存的速度差异非常大,系统设计者系统设计者采用了更小、更快的存储设备,即高速缓存存储器(简称高速缓存),作为暂时的集结区域,用来存放处理器近期可能会需要的信息。
现在较新的系统都有三级高速缓存:L1、L2和L3。
为什么需要n级缓存呢?
因为系统可以获得一个很大的存储器,同时访问速度也很快,原因是利用了高速缓存的局部性原理,即程序具有访问局部区域里的数据和代码的趋势。通过让高速缓存里存放可能经常访问的数据的方法,大部分的存储器操作都能在快速的高速缓存中完成。
意识到高速缓存存在的应用程序员可以利用高速缓存将他们程序的性能提高一个数量级。
问题
在开发应用程序时,怎么样利用高速缓存来提高程序性能?