曲径通幽论坛
标题:
缓存 (Cache)
[打印本页]
作者:
beyes
时间:
2009-10-31 14:31
标题:
缓存 (Cache)
缓存的作用是用来加速数据的传输。在计算机中,内存和磁盘的缓存可以加速指令的执行以及数据的读取和更新。这样的一种临时缓存就相当于部队里的集结待命区,它里边的内容是不断的在变化的。<br /><br />像网页的缓存,一般是对 web 页面拷贝了一份,如果在下次请求相同的一个页面时,直接从缓存中读取之前的拷贝,所以访问速度加快了。<br /><br /><b>内存缓存</b><br />缓存利用了”时间局部性“(temporal locality)的概念。“时间局部性”是指,如果一个信息项正在被访问那么. 在近期它很可能还会被再一次读取到。也就是,下一条即将执行的指令或者是下一个要处理的数据很可能和之前处理过的指令或数据是一样的。所以,处理越多相同的数据,或处理越多的连续指令或数据,那么“缓存命中”(cache hit)的几率也就越大。加入下一个要处理的指令或数据不在缓存中,那么就会发生“缓存缺失”(cache miss) ,这时 CPU 只能从主存那里取得相应的指令或数据。<br /><br /><b>Level 1 和 Level 2 </b><br />Level 1(L1) 缓存是内置在 CPU 芯片内部的一个存储区。Leve 2 (L2) 是第 2 块“集结待命区”(staging areas),它的用处就是给 L1 喂数据。L2 可能内置于 CPU 之中,也可能是MCP(multichip package module)里的一个独立芯片中,还可能是在主板上的一块独立存储芯片里。典型的,缓存一般是 SRAM (static RAM),而主内存通常是 DRAM (dynamic RAM)。
<br /><br /><br /><b>L1 和 L2 框架如下图所示</b>:<br /><img border="0" src="http://ai.img1001.com/uu_0910_7/beyes_26_2_b32354cf08bfa97.gif" /><br /><br /><b>动态演示:</b><br /><div class="computer_flash"><embed width="400" height="400" src="http://www.yourdictionary.com/images/computer/SWFCACH2.SWF" /></div><br />演示图中,展示了缓存是如何加速取得指令的过程。从动画中也可以注意到,内存到 L2 的速度和 L2 到 CPU(L1) 上的速度是明显区别的。如果,SRAM 和 DRAM 一样便宜,那也就用不着 L2 了。<br /><br /><b>磁盘缓存</b><br />磁盘缓存是主存或者是磁盘上的一块存储区连接磁盘与 CPU 的一个桥梁。当读磁盘的时候,一大块数据会先被拷贝到缓存中。在连续的读取中,如果发现要读的数据已经在缓存中,那么就没有必要在从磁盘中再次读取,而对磁盘的读取速度是很慢的。<br /><br />如果写磁盘,那么数据会被安排在一个高速缓存队列上,然后在机器空闲周期由缓存程序把这些数据写到磁盘。如果缓存是内置于磁盘上,那么磁盘控制器自己会算出什么时候写这些缓存。示意图如下:<br /><img border="0" src="http://ai.img1001.com/uu_0910_7/beyes_26_2_5a38894a0aa9f7a.gif" />
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/)
Powered by Discuz! X3.2