问题标签 [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 投票
7 回答
40149 浏览

linux - 如何在没有root权限的Linux下获取CPU串口

如何在没有root权限的Linux(Ubuntu)下获取CPU序列号?

我尝试了 cpuid 命令,它在没有 root 权限的情况下工作,但似乎返回全零(我相信因为需要在 BIOS 中更改某些内容)。

您能否建议我另一种方法来从没有 root 权限且无需修改 BIOS 的程序中检索 CPU 序列号?

0 投票
3 回答
9813 浏览

c# - 在虚拟机上获取 CPU ID

我正在尝试使用此代码:

在 XP 虚拟机(virtualbox)上获取硬件 uid,但我只得到一个消息框,上面写着:

是因为它是虚拟机还是什么?

0 投票
1 回答
955 浏览

c++ - 在编译时重复语法错误

在我的项目中,我需要确定 CPU 支持的 SIMD 指令集。问题是,当我尝试进行测试编译时,会出现一系列重复多次的错误,就像编译器多次解析代码一样。确定支持的 SIMD 指令的原因是因为我正在尝试调整 John the Ripper 的 DES 位片实现,以便在 Windows 和 Linux 的 GPGPU(特别是 CUDA)上使用。

所以,这是我的错误发生在第 37 行的地方

这是我得到的错误(其中有 86 个,但它们一直重复相同系列的错误/行号):

0 投票
6 回答
48526 浏览

c++ - 如何检查 CPU 是否支持 SSE3 指令集?

以下代码对检查 CPU 是否支持 SSE3 指令集有效吗?

使用该IsProcessorFeaturePresent()功能显然不适用于 Windows XP。

0 投票
2 回答
2016 浏览

c++ - 在 C++ 中将 int 打包到位域中

我正在将一些代码从 ASM 转换为 C++,ASM 看起来像这样:

结构看起来像:

是否有一种简单的两行方式来填充 C++ 中的结构?到目前为止,我正在使用:

这一切都很好,但我必须填充这些位域结构中的大约 9-10 个,其中一些有 30 个奇数域。所以这样做最终会将 10 行代码变成 100+ 行代码,这显然不是那么好。

那么有没有一种简单、干净的方法可以在 C++ 中复制 ASM?

我当然试过“miscStruct = CPUInfo[0];” 但不幸的是,C++ 不喜欢这样。:(

..而且我无法编辑 struct

0 投票
2 回答
759 浏览

assembly - Linux下的CallNtPowerInformation和GetPwrCapabilities

我有代码可以返回有关 Windows 下基于英特尔的系统上正在运行的 CPU 的信息。它使用CallNtPowerInformationandGetPwrCapabilities函数来做到这一点。返回的典型信息是最大 Mhz、当前 Mhz、最大空闲状态、当前空闲状态。

据推测,这是通过一条指令完成的,例如cpuid.

我想要在 Linux 下运行的类似代码。任何想法如何做到这一点?

这是我拥有的 Windows 代码:

0 投票
2 回答
985 浏览

assembly - CPUID:为什么某些功能必须将 MISC_ENABLE.LCMV 设置为 0?我可以暂时覆盖它吗?

我正在尝试使用 CPUID,但附加了一些字符串。根据sandpile.org的 CPUID 页面,CPUID 标准函数 0000_0004h 及更高版本只有在 MISC_ENABLE.LCMV 标志设置为 0 时才能工作。该标志是特定型号寄存器 (MSR) 1A0 的第 22 位。显然,这个限制是由于 Windows NT 中的一个错误造成的(感谢微软让事情变得更容易;))。

我可以使用 CPUID 0000_0001h(ecx 标志,位 3)测试是否存在 LCMV 标志。假设它存在,它到底是做什么用的,为什么它对 CPUID 有这样的影响?MSR 1A0 是读/写寄存器还是只读的?这种特殊用途的寄存器是如何使用汇编代码读取/写入的?

如果寄存器在技术上是读/写的,在 CPUID 指令的持续时间内将第 22 位重置为 0 是否安全,然后再将其恢复为原始设置?或者,如果设置不正确(即启用),我是否会搞砸?

最后,sandpile使用了这样的措辞,“只有当 MISC_ENABLE.LCMV 设置为 0 时才启用此级别。这是由于 Windows NT 错误造成的。” 如果出于这个原因专门禁用了一堆标准级别,那会反映在 CPUID 级别 0000_000h 的 eax 寄存器(支持的最大标准级别)的输出中吗?

呼……我想就是这样。

0 投票
1 回答
280 浏览

x86 - 哪些 x86 CPUID 返回值不能在处理器上更改?

我知道某些 AMD 处理器上的名称字符串可以更改为返回不同的字符串。我相信 BIOS 可以禁用缓存或 SSE 支持,这将需要指示缓存/SSE 支持的位必须返回不同的值。

CPUID 指令返回的哪些值可以保证在给定的 CPU 上永远不会改变?

0 投票
1 回答
1384 浏览

x86 - 多核/NUMA 上的 CPUID

我正在为我的爱好操作系统开发 CPU 检测和一般环境检测代码。是否存在需要多次调用 CPUID 的情况?也就是说如果系统有多个核心,操作系统是否需要在每个核心上调用CPUID?NUMA 也是如此。

AMDIntel CPUID 手册都不清楚这一点。osdev wiki 上有一篇文章提到调用 CPUID 称为Detecting CPU Topology,但我的阅读并不清楚何时需要调用 CPUID 以及调用多少次。

0 投票
2 回答
2170 浏览

cpu - 使用 CPUID 检测 CPU 规格,可靠的解决方案?

我正在尝试收集有关我的 CPU 的信息__cpuid()。虽然它在我的计算机上运行良好,但当我在同事的计算机上运行我的程序时,它检测到Intel Core2 Quad Q6600是超线程的,尽管根据 Intel 自己网站上的规范它不是。

__cpuid()还检测到错误数量的“逻辑内核”,如下所示:以 编程方式检测物理处理器/内核的数量,或者超线程是否在 Windows、Mac 和 Linux 上处于活动状态。它声称Intel Xeon E5520有 16 个逻辑内核和 8 个物理内核。

我尝试在我自己的计算机上运行在该线程中找到的代码,Intel i7 2600K给了我与 Xeon 相同的数字。

那么究竟有多可靠__cpuid()呢?根据我自己的经验,它似乎并不那么可靠。我有什么非常根本的错误吗?