深入理解计算机系统 1.5 缓存很重要
2015-09-05 15:04
281 查看
我们从这个简单的例子中看到的很重要的一点是,系统花了大量时间来把信息从一个地方移动到另一个地方。hello程序里的机器指令最初保存在硬盘上。当程序被加载的时候,它们被复制进内存中。当处理器运行程序的时候,指令又从内存复制进处理器中。相似的,数据字符串“hello,world\n”,最开始保存在硬盘上,然后复制进内存中,最后又从内存中复制到显示设备。从程序员的角度来看,这些复制使程序的实际工作变慢了。因此,系统设计者的主要目标就是让这些复制操作尽可能地快。
因为这个物理规律,大的存储设备比小的存储设备慢,快的存储设备比小的存储设备贵。例如,在一个典型的系统里,硬盘可能比主存大一千倍,但读取速度可能比主存慢一千万倍。
相似的,一个典型的寄存器文件只能存储几百字节信息,而主存却可以存储几十亿字节信息。但是寄存器文件的读取速度比主存快一百倍。更麻烦的是,随着半导体技术这些年的进步,处理器和主存间的差距在持续增加。让处理器跑得更快比让内存更快更容易也更便宜。
为了拉近处理器和主存之间的差距,系统设计者们引入了相对内存更小但是也更快的存储设备——缓存,它存储着处理在不久的将来会用到的信息。Figure 1.8显示了在一个典型系统中的缓存。处理器芯片上的一级缓存能存储数万字节的信息,而且访问速度接近寄存器文件。二级缓存能存储数十万到数百万字节的信息,有一个特殊的总线连接着二级缓存和处理器。二级缓存的访问速度可能比一级缓存慢5倍,但依旧比主存快5到10倍。一级缓存和二级缓存是通过一种叫做static random
access memory
(SRAM)的硬件技术实现的。更新更强大的系统甚至有三个级别的缓存:一级缓存,二级缓存和三级缓存。缓存背后的思想是,通过本地化(程序访问离自己最近的数据和代码),系统能同时获得存储器既大又快的效果(Hadoop的数据本地化设计理念似乎在这儿找到了原型)。通过把处理器可能经常访问的数据放进缓存,我们能用缓存来执行大部分内存操作。
本书的目标之一就是,让那些关注缓存的程序员利用缓存来提高他们的程序的执行效率。你将在第六章学到更多关于这些设备以及如何使用这些设备的知识。
因为这个物理规律,大的存储设备比小的存储设备慢,快的存储设备比小的存储设备贵。例如,在一个典型的系统里,硬盘可能比主存大一千倍,但读取速度可能比主存慢一千万倍。
相似的,一个典型的寄存器文件只能存储几百字节信息,而主存却可以存储几十亿字节信息。但是寄存器文件的读取速度比主存快一百倍。更麻烦的是,随着半导体技术这些年的进步,处理器和主存间的差距在持续增加。让处理器跑得更快比让内存更快更容易也更便宜。
为了拉近处理器和主存之间的差距,系统设计者们引入了相对内存更小但是也更快的存储设备——缓存,它存储着处理在不久的将来会用到的信息。Figure 1.8显示了在一个典型系统中的缓存。处理器芯片上的一级缓存能存储数万字节的信息,而且访问速度接近寄存器文件。二级缓存能存储数十万到数百万字节的信息,有一个特殊的总线连接着二级缓存和处理器。二级缓存的访问速度可能比一级缓存慢5倍,但依旧比主存快5到10倍。一级缓存和二级缓存是通过一种叫做static random
access memory
(SRAM)的硬件技术实现的。更新更强大的系统甚至有三个级别的缓存:一级缓存,二级缓存和三级缓存。缓存背后的思想是,通过本地化(程序访问离自己最近的数据和代码),系统能同时获得存储器既大又快的效果(Hadoop的数据本地化设计理念似乎在这儿找到了原型)。通过把处理器可能经常访问的数据放进缓存,我们能用缓存来执行大部分内存操作。
本书的目标之一就是,让那些关注缓存的程序员利用缓存来提高他们的程序的执行效率。你将在第六章学到更多关于这些设备以及如何使用这些设备的知识。
相关文章推荐
- Enterprise Library for .NET Framework 2.0缓存使用实例
- PowerShell中编程清空IE缓存方法
- PowerShell中使用.NET将程序集加入全局程序集缓存
- C#中缓存的基本用法总结
- wap开发中如何有效的利用缓存减少消息的传送量
- PHP基于文件存储实现缓存的方法
- smarty缓存用法分析
- 引用全局程序集缓存内的程序集的方法
- asp Response.flush 实时显示进度
- C#实现清除IE浏览器缓存的方法
- ASP.NET缓存管理的几种方法
- 清除aspx页面缓存的程序实现方法
- C#缓存之SqlCacheDependency用法实例总结
- jQuery数据缓存用法分析
- Jquery validation remote 验证的缓存问题解决方法
- IE9下Ajax无法刷新数据的缓存问题解决方法
- Ajax获取页面被缓存的解决方法
- ASP.NET网站管理系统退出 清除浏览器缓存,Session的代码
- IE cache缓存 所带来的问题收藏
- JSP页面缓存cache技术--浏览器缓存介绍及实现方法