CPU cache是介于CPU内核和物理内存(动态内存 dynamic RAM)之间的若干块静态内存(staic RAM),static RAM的访问速度比dynamic RAM的访问速度要快很多,而且不需要像dynamic RAM那样由于会漏电需要保持一定的刷新频率。static RAM作为访问dynamic RAM的缓存,对于系统的内存访问性能起到了很大的提升作用,但是由于static RAM的成本比较高,所以一般static RAM或者说Cache的大小都比较有限,一般都在几十KB到几十MB的范围内。
每个CPU Socket中,会包含有L1、L2(也叫MLC,Middle Level Cache)和L3(也叫LLC,Last Level Cache)的Cache,用于加速内存访问的速度,其基本结构如下所示:
每个CPU core都会有自己的L1 cache,而且经常会分成L1 data cache(DL1)和L1 instruction cache(IL1),分别用于缓存数据和指令。L2 cache可能是的隶属单个CPU core,也可能是多个CPU core之间共享(酷睿架构是隶属单个CPU core)。L3 cache则是在一个CPU Socket/Package上的所有(也有可能是部分)CPU core共享。
按照x86 CPU的传统,CPU的特性一般可以通过CPUID指令获取,Cache的相关特性也不例外,只是CPUID指令返回的信息并没有直观地告知各级Cache的大小。
根据Intel SDM(Software Developer's Manual)手册Volume 2对CPUID指令的介绍,CPUID Leaf 2(EAX=02H时执行CPUID指令),能够在EAX、EBX、ECX和EDX寄存器中返回TLB(Translation Lookaside Buffer)和Cache的相关信息,信息以字节为单位进