问题标签 [cpuid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3905 浏览

c++ - C/C++ 如何在 linux 上获取处理器序列号

我想知道如何在 GNU Linux 上可靠地获取处理器序列号 (PSN)。

现在我正在使用这个

它给了我PSN: A7060200FFFBEBBF

输出:ID: A7 06 02 00 FF FB EB BF

我只在 Intel Core i 处理器上进行了测试,所以也许它只适用于这种类型的 CPU。

我知道“序列号”在相同的 CPU 型号中是相同的,因此不是唯一的。

此外,我期待着一种实现这一目标的方法,它不依赖于执行 shell 命令和解析输出。

0 投票
1 回答
358 浏览

assembly - x86 ASM - cpuid 是否设置标志?

x86 CPUID 指令是否会更改标志寄存器?不幸的是,我无法使用调试器。

我在 D 程序中编写了一些 GCC 汇编代码,我想知道是否将“cc”放在 clobbers 中,只是为了安全起见。

0 投票
2 回答
1630 浏览

ios - 是否有 API 来检测 iOS 上的 CPU 功能?

我有一些具有多种实现的密码学代码,在运行时根据它运行的 CPU 的特性选择哪个实现。到目前为止,移植它一直很简单,Windows、Linux 和 Android 都很容易。

但在 iOS 中,这似乎并不容易。尽管 x86 CPU 具有cpuid检测功能的指令,即使是在用户模式下,ARM 等效项也具有特权。如果没有操作系统的合作,就无法检测 ARM 上的 CPU 功能。

在 Windows 中,IsProcessorFeaturePresent用于检测 ARM CPU 功能。在 Linux 上,/proc/cpuinfo这是要走的路。Android 有一个cpufeatures库(并且/proc/cpuinfo仍然可以使用)。Mac OSsysctlbyname带有hw.optional.*.

但是iOS呢?iOS 内核hw.optional.*与 Mac OS 类似,但它在 iOS 10 中被锁定。(因此,我的问题不是这个问题的重复因为情况已经发生了变化。)此外,获取这些内核似乎很困难 - Apple 的开源网站运行一个自动化流程,从他们公开提供的操作系统源中清除所有 ARM 特定代码,以使越狱者更加努力。

0 投票
1 回答
786 浏览

linux-kernel - 如何以未使用的 x86 操作码在 linux KVM 中实现新指令

作为理解虚拟化的一部分,我正在尝试扩展对 KVM 的支持并定义一个新指令。该指令将使用以前未使用的操作码。参考 ref.x86asm.net/coder32.html。

现在,让我们说一个像“CPUID”这样的指令(它会导致 vm-exit),我想添加一个新指令,比如 -“NEWCPUID”,它类似于特权中的“CPUID”并且被管理程序捕获,但会实现方式不同。

浏览了一些网上资源后,我能够理解如何定义新的系统调用,但我不确定我需要在 linux 源代码中的哪些文件中添加 NEWCPUID 的代码?有没有比仅依赖“查找”命令更好的方法?

我面临以下挑战: 1.我需要在linux源代码中的哪些地方添加代码?2. 不确定这条新指令如何映射到以前未使用的操作码?

由于我对这个领域完全陌生并且愿意学习这个,有人可以简单地解释我如何完成这项任务吗?我需要正确的方向来实现这一目标。如果有描述该过程的参考/教程/博客,那将有很大帮助!

0 投票
0 回答
222 浏览

assembly - 查询 Intel CPU 中缓存的大小、缓存行大小和关联性

对于 AMD 处理器,有 CPUID 0x8000005u 和 0x8000006u 来收集不同缓存级别的大小、关联性和缓存行大小。

对于 Intel CPU,只有应用笔记 485 有一张不同缓存大小的表格,可以从较低的 cpuid 级别收集。但是这个文件已经很多年没有更新了。

那么有没有一种方便的方法可以从 Intel CPU 获取这些数据?

0 投票
0 回答
214 浏览

arm - 如何检查当前 ARM CPU 是否支持 ISA 扩展?

当x86 上的用户空间程序需要判断是否支持例如AVX 扩展时,可以使用CPUID 指令。是否有任何类似的独立于操作系统的方法来检查 ARM 中对 ISA 扩展(例如 NEON)的支持?

0 投票
2 回答
3251 浏览

virtual-machine - 如何检测软件是否存在虚拟机

我是虚拟机世界的初学者,有一个小问题。如果软件在 VM 上运行(例如 VMware Player),它如何知道它安装在 VM 上?软件是从操作系统获取信息还是软件和硬件(VMware Player)之间有直接通信?先感谢您

0 投票
1 回答
680 浏览

assembly - 如何使用 CPUID 指令正确获取 x86 CPU 功能?

我想写一个小程序来获取x86CPU 的特性。参考CPUID文档后,我发现有几个2部分:

(1) EAX=1

(2) EAX=80000001h

所以这意味着如果 CPU 供应商是GenuineIntel,我应该使用EAX=1,如果是AuthenticAMD,我应该使用EAX=80000001h来执行CPUID指令。我的理解正确吗?

0 投票
1 回答
1994 浏览

gcc - 为什么 __get_cpuid 对 Leaf=4 返回全零?

我想编写一个简单的程序来调用__get_cpuid以获取缓存信息:

首先,我通过leaf2:

由于存在0xffin ebx,这意味着我可以从leaf=4(请参阅此处)获取缓存信息:

但这一次,所有返回值都是0. 为什么我无法从中获取有效信息__get_cpuid

0 投票
0 回答
26 浏览

x86 - 哪些 x86 ISA 扩展暗示支持以前的 SIMD 扩展?

我的 CPU 支持以下技术:MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2 和 AVX。

当我编写代码并检查硬件支持时,我是否可以假设“如果处理器支持 AVX,它总是支持所有这些其他技术”?

这些技术中的哪些被认为是其他技术的超集,哪些是独立的,不一定与其他技术打包在一起?