CPU缓存(Cache Memory)是位于CPU与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存要快得多。缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾,因为CPU运算速度要比内存读写速度快很多,这样会使CPU花费很长时间等待数据到来或把数据写入内存。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。由此可见,在CPU中加入缓存是一种高效的解决方案,这样整个内存储器(缓存+内存)就变成了既有缓存的高速度,又有内存的大容量的存储系统了。缓存对CPU的性能影响很大,主要是因为CPU的数据交换顺序和CPU与缓存间的带宽引起的。
在现代CPU设计中,设计师们要解决的最主要问题,就是找到一个在CPU和内存之间平衡的均点。Cache作为CPU---内存的中转站,在其中发挥了巨大的作用。CPU在请求数据或指令时,除了常规的在内存中进行查找外,还会在Cache中进行查找。一旦命中,就可以直接从Cache中读取,节约大量时间。正因为如此,CPU缓存在现代CPU中显得越来越重要。
众所周知,CPU缓存属于SRAM(Satic Random Access Memory),它利用晶体管的逻辑开关状态来存取数据。也正因为如此,SRAM内部的电路构造比起常见的DRAM(Dynamic Random Memory)要复杂得多,导致了成本的巨增。这也是SRAM不能普及的一个重要原因。
CPU缓存在计算机存储系统中没有编配固定的地址,这样程序员在写程序时就不用考虑指令是运行在内存中还是Cache中,Cache对于计算机上层来说是完全透明的。
CPU在读取数据时,会首先向内存和Cache都发送一个查找指令。如果所需要的数据在Cache中(命中),则直接从Cache读取数据,以节约时间和资源。CPU对Cache的搜索叫做Tag search,即通过Cache中的CAM(CONtent Addressed Memory)对希望得到的Tag数据进行搜索。CAM是一种存储芯片,延迟很低,常用于网络设备中用作路由选择。