上一章咱们讲解了hello world 程序在计算机系统中是如何运行的。 hello 程序的机器指令最初是存放在磁盘上的,当程序加载时,他们被复制到主存;当处理器运行程序的时候,指令又从主存复制处处理器。类似的,数据串"Hello World" 初始时在磁盘上,而后复制到主存,最后从主存上复制到显示设备。程序员
从程序员的角度来看,上面的复制就是开销,减缓了程序的真正工做。所以如何将这些复制操做尽快完成则是系统设计者的一个主要目标。缓存
那么如何减小这种由数据复制所引发的开销呢?框架
根据机械原理,较大的存储设备比 较小的存储设备运行的慢,而快速设备的造价远高于同类的低速设备。相似的,一个典型的寄存器文件只存储几百字节的信息,而主存里能够存放几十亿字节。然而处理器从寄存器文件中读数据的速度要比从主存中读取几乎快100倍。并且随着半导体技术的进步,这二者差距还在加大。所以加快处理器的运行速度比加快主存的运行速度要容易和便宜的多。针对这种处理器和主存之间的差别,系统设计者采用了更小、更快的存储设备,也就是高速缓存存储器(简称高速缓存),做为暂时的集结区域,用来存放处理器近期可能会须要的信息,相似于Java Web 框架的缓存机制。以下图:性能
在处理器和一个又大又慢的设备(好比主存)之间插入一个更小更快的存储设备(例如高速缓存)的想法已是一个广泛的观念。实际上,每一个计算机系统中的存储设备都被组织成了一个存储器层次结构。以下图所示:操作系统
存储器层次结构的主要思想是一层上的存储器做为低一层存储器的高速缓存,所以,寄存器文件就是L1的高速缓存,L1是L2的高速缓存,L3是主存的高速缓存,而主存又是磁盘的高速缓存。设计
正如能够运用不一样的高速缓存的知识来提升程序性能同样,程序员一样能够利用对整个存储器层次结构的理解来提升程序性能。这个后面咱们会详细讲解。blog
本章主要介绍了高速缓存的产生的原理以及存储器设备的层次结构,如何理解整个存储器的层次结构,对于提升程序性能有很大的帮助。下一章将讲解操做系统的抽象概念。内存