如何获取x86 CPU L1、L2和L3 cache的大小

本文介绍了如何通过CPUID指令获取x86架构CPU的L1、L2和L3缓存大小。内容涉及CPU缓存的作用、结构,以及使用CPUID Leaf 2和Leaf 4来解析缓存信息的过程,包括计算缓存大小的公式,并提供了Linux下使用cpuid工具和hwloc的lstopo命令来检查缓存详情的方法。
摘要由CSDN通过智能技术生成

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的相关信息,信息以字节为单位进

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值