gpt4 book ai didi

caching - 如何在 x86 中使用 CPUID 指令接收 L1、L2 和 L3 缓存大小

转载 作者:行者123 更新时间:2023-12-03 01:09:39 25 4
gpt4 key购买 nike

我在准备一个汇编x86项目时遇到了一个问题,该项目的主题是编写一个获取L1数据、L1代码、L2和L3缓存大小的程序。

我试图在英特尔文档和互联网中查找一些内容,但失败了。

主要问题是:对于 AMD 处理器,只需将 EAX 寄存器设置为 80000005h 和 80000006h 值,并从 ECX 和 EDX 寄存器获取所需的数据,但对于 Intel 处理器,我只能获取 L2 的此信息。

我应该如何获取英特尔处理器的 L1 和 L3 缓存大小?

最佳答案

Marat Dukhan 基本上给了你正确的答案。对于较新的 Intel 处理器,即过去 5-6 年制造的处理器,最佳解决方案是枚举 cpuid leaf 4,这意味着您调用 cpuid 几次,首先使用 EAX=4 和 ECX=0,然后使用 EAX= 4且ECX=1等等。这不仅会返回有关缓存大小和类型的信息,还会告诉您这些缓存如何连接到 CPU 内核和超线程/SMT 单元。算法和示例代码在 https://software.intel.com/en-us/articles/intel-64-architecture-processor-topology-enumeration/ 给出。 ,更具体地说,在标题为“缓存拓扑枚举”的部分中。

关于caching - 如何在 x86 中使用 CPUID 指令接收 L1、L2 和 L3 缓存大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14283171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com