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

2023-11-23

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

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

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

我应该如何获取 Intel 处理器的 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/,更具体地说,在标题为“缓存拓扑枚举”的部分中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 x86 中使用 CPUID 指令接收 L1、L2 和 L3 缓存大小 的相关文章

  • 使用 NSCache 实现缓存过期

    我正在使用 NSCache 在我的应用程序中实现缓存 我想为其添加过期时间 以便在一段时间后它将获取新数据 有哪些选择以及最好的方法是什么 我应该查看访问缓存时的时间戳并使之无效吗 缓存是否应该通过使用固定间隔计时器自动使自身失效 缓存是否
  • Linux内核页表更新

    在linux x86 中分页 每个进程都有它自己的页面目录 页表遍历从 CR3 指向的页目录开始 每个进程共享内核页目录内容 假设三个句子是正确的 假设某个进程进入内核 模式并更新他的内核页目录内容 地址映射 访问 权利等 问题 由于内核地
  • F# 正确使用序列缓存

    我正在尝试将 Seq cache 与我制作的函数一起使用 该函数返回最多为 N 的素数序列 不包括数字 1 我无法弄清楚如何将缓存的序列保留在范围内 但仍然使用它在我的定义中 let rec primesNot1 n 2 n gt Seq
  • 使 Django 1.3.1 中的视图缓存过期

    我正在尝试使模型上的视图级缓存过期post save 这是通过设置的https docs djangoproject com en 1 3 topics cache from olddocs the per view cache https
  • 按字节数对向量进行混洗

    有什么办法可以左移 v 0 gt v 1 a m128i by n字节 其中n仅在运行时才知道 我目前仅限于 AVX1 但如果 AVX2 512 使这变得更容易 我非常感兴趣 I found mm bslli si128 m128i imm
  • linux x86 汇编语言 sys_read 调用的第一个参数应为 0 (stdin)

    我正在编写一个简单的汇编程序来从标准输入读取 如 scanf 这是我的代码 section bss num resb 5 section txt global start start mov eax 3 sys read mov ebx 0
  • Visual Studio 2012 本机 C++ DLL x86 编译

    我最近将我的工具集从 Win 7 x86 Visual Studio 2010 升级到 Win 8 x64 Visual Studio 2012 但是 现在我的本机 C dll 编译为 x64 而不是 x86 除了将代码移至新操作系统并将其
  • 如何禁用 CRM 2011 Xrm 缓存?

    我的 crm 2011 缓存有问题 我不需要它 但我不知道如何禁用它 首先我生成这个 CrmSvcUtil exe codeCustomization Microsoft Xrm Client CodeGeneration CodeCust
  • SIMD 和 VLIW 指令是一样的吗?

    SIMD 单指令多数据 和 VLIW 超长指令字 到底有什么区别 其中一个是另一个的子集吗 或者它们是两个完全不同的东西 完全不相关且正交 一台机器可以有一个或两个 或者两者都没有 SIMD 指令可以作为扩展添加到 VLIW ISA 但 V
  • 避免 gcc 函数序言开销?

    我最近遇到了很多 gcc 在 x86 上生成非常糟糕的代码的函数 它们都符合以下模式 if some condition do something really simple and return else something comple
  • movzbl(%rdi, %rcx, 1), %ecx 在 x86-64 汇编中意味着什么?

    我想我明白 movzbl rdi rcx 1 ecx 意思是 将零扩展字节移至长整型 并表示将 ecx 扩展为 32 位 但我不完全确定语法 rdi rcx 1 指的是什么 我在某处看到该语法指的是 Base Index Scale 但我找
  • 汇编器8086将32位数字除以16位数字

    我尝试将 32 位数字除以 16 位数字 例如 10000000h 除以 2000h 根据我尝试做的设计除以 右 4 位数字除以除数 然后左 4 位数字除以除数 这是我的代码 DATA num dd 10000000h divisor dw
  • 无法识别的仿真模式:MinGW32 上的 elf_i386

    我正在尝试制作内核 但无法链接C与程序集一起输出 这ld 我收到错误 无法识别的仿真模式 elf i386 我正在使用 Windows 10 专业版以及 MinGW32 和 MSYS 我正在使用的代码 link ld link ld OUT
  • gitlab-ci 的缓存虚拟环境

    我使用 Gitlab CI 脚本缓存了 Pip 包 所以这不是问题 现在我还想赶上Conda虚拟环境 因为它减少了设置环境的时间 我缓存了一个虚拟环境 不幸的是 最后需要很长时间才能缓存所有 venv 文件 我尝试仅缓存 CI PROJEC
  • Intel:序列化指令和分支预测

    英特尔架构开发人员手册 http www intel com content www us en architecture and technology 64 ia 32 architectures software developer v
  • Core i3/5/7 CPU 是否提供测量 IPC 的机制?

    至少 过去十年中的所有英特尔 CPU 都包含一组对各种事件进行计数的性能监视器 最新的 Intel CPU Core i3 i5 和 i7 又名 Nehalem 是否提供了计算每时钟指令 IPC 的机制 如果有 它们是如何使用的 如果可能的
  • 通过 HTML 或 JavaScript 禁用 Web 表单上的自动填充?

    有没有办法通过 HTML 或 JavaScript 禁用 Chrome 和其他浏览器中表单字段的自动填充 我不希望浏览器自动填写该浏览器以前用户的表单上的答案 我知道我可以清除缓存 但我不能依赖重复清除缓存 您可以在 HTML 的输入级别添
  • _mm_max_ss 在 clang 和 gcc 之间有不同的行为

    我正在尝试使用 clang 和 gcc 交叉编译一个项目 但在使用时发现一些奇怪的差异 mm max ss e g m128 a mm set ss std numeric limits
  • 各种中断的区别:SCI、SMI、NMI、普通中断

    我正在学习英特尔架构 到目前为止我遇到过几种类型的中断 SCI 系统控制中断 硬件使用的系统中断 用于向操作系统通知 ACPI 事件 SCI 是一个有效 低电平 可共享的电平中断 SMI 系统管理中断 由遗留系统上的中断事件生成的操作系统透
  • 当 mov 指令导致页面错误并且在 x86 上禁用中断时会发生什么?

    我最近在自定义 Linux 内核 2 6 31 5 x86 驱动程序中遇到一个问题 其中 copy to user 会定期不将任何字节复制到用户空间 它将返回传递给它的字节数 表明它没有复制任何内容 经过代码检查 我们发现代码在调用 cop

随机推荐

  • 如何在 JavaScript 中匹配整个单词?

    我试图通过文本框搜索整个单词 假设我搜索 me 我应该找到文本中所有出现的 me 一词 但不能找到 memmm 我正在使用 JavaScriptsearch my regex expression 执行当前搜索 没有成功 经过多次提议使用
  • 没有 chroot 的 LXC

    有没有办法在不创建容器的情况下使用LXC使用进程组进行资源管理 我正在开发一个在沙箱内运行任意代码的服务 我只对硬件资源管理感兴趣 我不想进行任何 chrooting 我只希望这些进程组能够访问主文件系统 有人告诉我 lxc 是轻量级的 但
  • arm-none-eabi-ld:找不到-lc

    我正在尝试为基于 XMC1100 的开发板编写代码 我正在尝试这个教程 http eleceng dit ie frank arm BareMetalXMC2Go index html 我已经下载了blinky tar gz 文件并解压 当
  • 使用 ssl 公钥/私钥基于 Web 登录?

    是否可以通过网络浏览器创建需要公钥 私钥的登录过程 公钥将存储在服务器上 私钥将由用户保存 并加密 我基本上想做一些类似于 SSH 的事情 但是通过网络 也许是 HTTP 身份验证的自定义方法 摘要 除外 我知道使用普通浏览器可能无法做到这
  • 使用数据库表中的值生成下拉列表输入

    我正在尝试使用 Laravel 生成一个包含 MySQL 表中的值的下拉列表 表格很简单 两列 id and category 以下将检索所有记录 类别 但返回一个对象而不是数组 这是我需要的下拉代码 categories Category
  • 如何在Python中制作n维嵌套for循环? [复制]

    这个问题在这里已经有答案了 我有以下情况 for x1 in range x1 x2 for x2 in range x3 x4 for x3 f x1 x2 x3 如何将其转换为我只告诉 python 的机制n变量名称为 x1 x2 x3
  • 检测这是 iframe 加载还是直接加载

    我希望仅在 iframe 内的页面上拉出表单时才显示该表单 我怎么做 有服务器端解决方案吗 如果您使用 JQuery 安装说明如下 http jquery com document ready function if window wind
  • 指针和引用作为 const 对象的成员变量

    以下代码编译良好 不过我想知道它是否是合法的C 更具体地说 如果我有一个 const 对象 我是否可以通过该对象的指针 引用修改变量 class Foo public int a int b Foo int a int b a a b b
  • 关于Python日志记录中的NOTSET

    As the logger setLevel医生说 创建记录器时 级别设置为 NOTSET 这会导致当记录器是根记录器时处理所有消息 或者当记录器是非根记录器时将委托给父记录器 请注意 根记录器是使用 警告 级别创建的 所以我想如果我创建一
  • Angular:为什么 CSS 对齐不能与 ng-repeat 一起使用?

    我正在尝试做什么 我正在尝试均匀分布li in a ul 证明合法 当我硬编码时 CSS 可以工作li 但是当我使用ng repeat 不再应用CSS HTML div div ul class two column li li li li
  • Postgres 在全局范围内设置自动提交关闭

    如何在 psql 8 4 中全局级别设置自动提交 是否有一个我可以更改的配置属性 它将为集群上的所有数据库引入此行为 以在关闭自动提交的情况下启动数据库会话 只需添加以下内容即可 psqlrc set AUTOCOMMIT off 请注意
  • Dockerfile CMD“未找到命令”

    我有以下内容Dockerfile FROM nodesource node jessie ADD SOMEPATH RUN cd SOMEPATH npm install WORKDIR SOMEPATH CMD bash npm run
  • O(1) 和 θ(1) 有什么区别?

    我知道它们的定义 但是为什么我有时在教科书上看到O 1 有时看到 1 Thanks 如果您谈论的是实数函数 则 O 1 和 1 不一定相同 例如 考虑函数 f n 1 n 该函数的复杂度为 O 1 因为对于任何 n 1 f n 1 然而 它
  • NetworkStream 和 TcpClient 有多少缓冲区?

    我们正在编写一个TCP服务器和客户端程序 TcpClient 缓冲区有多少空间 比如 它什么时候会开始丢弃数据 我们正在尝试确定 TcpClient 是否可以阻塞 或者是否应该进入它自己的后台线程 以便缓冲区不会变满 您可以从以下位置获取缓
  • 如何正确处理 Angular 中滚动条的导航栏颜色变化?

    我正在做一个有角度的项目 我想添加一个最初具有透明背景的导航栏 但在滚动时它会改变其颜色 我正在为此使用引导类 我的导航栏标题是 html 代码
  • 如何在 Windows 上使用 xgettext 创建 .po 文件?

    我正在关注有关使用 PHP gettext 构建多语言网站的教程http onlamp com pub a php 2002 06 13 php html 我理解教程直到这一部分 拥有所有目录后 准备好了 是时候创建了 实际的 pot 文件
  • 使用 python 请求进行 twitter 抓取时如何执行 oauth

    我正在尝试检索用户最近的 100 条推文 它与 Python 中的 tweepy 模块配合良好 但是我怎样才能对 python 中的请求做同样的事情呢 我想要做 import requests r requests get https ap
  • 尝试使用 DatePicker 时不起作用[重复]

    这个问题在这里已经有答案了 可能的重复 Android CalendarView 类找不到 我尝试在布局中放置一个日期选择器 但它只显示 DatePicker 和这个错误 The following classes could not be
  • 关于javaagents的教程[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想了解一些有关 javaagents 的知识 但研究并不容易 大部分结果是指JADE 我知道java代理有两层含义 用 Java 编写的代理是代理
  • 如何在 x86 中使用 CPUID 指令接收 L1、L2 和 L3 缓存大小

    我在准备一个汇编x86项目时遇到了一个问题 该项目的主题是编写一个获取L1数据 L1代码 L2和L3缓存大小的程序 我尝试在英特尔文档和互联网中查找一些内容 但失败了 主要问题是 对于 AMD 处理器 只需将 EAX 寄存器设置为 8000