分析 Cache的运行机制和设计理念 随着双核时代的到来,CPU 的 Cache 越来越受到 DIYer 的重视。本文吸收了其它高手发表的文章观点,浅谈一下 Cache 的运行和设计原理。 1. CPU Cache 简介 Cache 其是就是 CPU 和内存之间的一个中转站。由于目前 CPU 的频率(速度)已经大大超过内存,往往 CPU 会为了读取或存储数据白白浪费几十个时钟周期。这造成了巨大的资源浪费。于是 Cache 的设计思想被提上日程,几经实验修改后,逐渐形成了我们现在所能够看到的 Cache 架构。 在现代 CPU 设计中,设计师们要解决的最主要问题,就是找到一个在 CPU 和内存之间平衡的均点。Cache 作为 CPU--->内存的中转站,在其中发挥了巨大的作用。CPU 在请求数据或指令时,除了常规的在内存中进行查找外,还会在 Cache 中进行查找。一旦命中,就可以直接从Cache 中读取,节约大量时间。正因为如此,Cache 在现代 CPU 中显得越来越重要。 2. Cache 的实现原理 众所周知,Cache 属于 SRAM(Satic Random Access Memory ),它利用晶体管的逻辑开关状态来存取数据。也正因为如此,SRAM 内部的电路构造比起常见的DRAM(Dy namic Random Memory )要复杂得多,导致了成本的巨增。这也是 SRAM 不能普及的一个重要原因。 Cache 在计算机存储系统中没有编配固定的地址,这样程序员在写程序时就不用考虑指令是运行在内存中还是 Cache 中,Cache 对于计算机上层来说是完全透明的。 CPU 在读取数据时,会首先向内存和 Cache 都发送一个查找指令。如果所需要的数据在 Cache 中(命中),则直接从Cache 读取数据,以节约时间和资源。CPU 对Cache 的搜索叫做Tag search,即通过 Cache 中的 CAM(Content Addressed Memory )对希望得到的 Tag 数据进行搜索。CAM 是一种存储芯片,延迟很低,常用于网络设备中用作路由选择。 CPU 进行 Tag search 的过程是这样的:在 Cache 中数据或指令是以行为单位存储的,一行又包含了很多字。如现在主流的设计是一行包含64By te。每一行拥有一个 Tag。因此,假设 CPU 需要一个标为 Tag 1 的行中的数据,它会通过 CAM 对Cache 中的行进行查找,一旦找到相同Tag 的行,就对其中的数据进行读取。 在现代计算机中,虽然Cache 的容量一直在增涨,但现在桌面处理器中 Cache 最大的也不过 4MB,设计师们是如何保证在这小小的 Cache 中保存的数据或...