gpt4 book ai didi

windows - 根据用户模式故障转储找出 CPU 型号

转载 作者:可可西里 更新时间:2023-11-01 13:51:48 25 4
gpt4 key购买 nike

我有我的应用程序的故障转储。我的应用程序失败,因为一些用户说“无效指令”试图执行我在那里的一些 SSSE 指令。

在 WinDBG 中,如何找出 CPU 型号,以便找出其指令集,并支持该指令集,或更新应用程序的最低硬件要求?

这是 !cpuid 的输出:

CP  F/M/S  Manufacturer     MHz
0 16,4,3 <unavailable> 3000
1 16,4,3 <unavailable> 3000
2 16,4,3 <unavailable> 3000
3 16,4,3 <unavailable> 3000

谷歌说的其余命令可能会帮助 (!errrec, !cpuinfo, !sysinfo) 打印“未找到导出”。

最佳答案

你肯定不会在这里得到太多信息。尽管转储通常不包含所有原始 CPU 信息,但您至少应该看到制造商字符串。哦,好吧,让我们来看看你必须在这里做什么……
CP列给出了逻辑处理器编号,因此您知道您正在处理具有 4 个逻辑处理器的系统。可能是四核,也可能是带超线程的双核。
F/M/S是 Family/Model/Stepping,这是识别处理器的常见且相当标准的方法。正如 AMD 所说:

The processor Family identifies one or more processors as belonging to a group that possesses some common definition for software or hardware purposes. The Model specifies one instance of a processor family. The Stepping identifies a particular version of a specific model. Therefore, Family, Model and Stepping, when taken together, form a unique identification or signature for a processor.



如果您在寻找这些东西时有制造商,那会很有帮助,因为系列编号非常困惑,但值得庆幸的是,很明显,16(十六进制为 10)的系列编号对应于 AMD 处理器(应该有一个制造商字符串“AuthenticAMD”)。具体来说,就是 AMD K10 ,这是巴塞罗那微架构。这意味着没有超线程——这只是一个原生四核系统。

我们可以通过查看模型进一步缩小范围。有许多基于 Barcelona 核心的不同型号,品牌名称各异,包括 Athlon II、Opteron、Phenom、Phenom II、Sempron、Turion 和 V 系列。你的是模型 4。这就是它变得有点棘手的地方,因为我不知道列出各种 CPU 的型号和步进的好资源。您必须直接去找制造商并仔细阅读他们的手册。例如, here is AMD's Revision Guide for the 10h Family .如果您转到“处理器标识”部分(对我来说在 PDF 中显示为书签),您会看到一些看起来很有希望的东西,但这些信息肯定不会以易于理解的形式呈现。您会得到很长的十六进制值,您必须从中提取与系列 (8-11)、模型 (4-7) 和步进 (0-3) 相对应的各个位。

我没有做所有繁重的工作来确定,我只是快速猜测这是 AMD Phenom II X4。 X4搭配四核,粗略一看,Phenom IIs似乎是4型。

无论如何,您可能已经停止了一段时间,因为微体系结构会告诉您您需要知道的一切。这是一个 AMD Barcelona 核心,不支持 Supplemental SSE3 (SSSE3)指令(三个 S——不要与 SSE3 混淆;命名约定很荒谬)。 SSSE3 由英特尔发明,随 Core 2 微架构一起发布。

AMD 直到山猫/推土机才实现它们。 Bulldozer是台式机和服务器的后续一代,family 21 (15h),而 Bobcat是 AMD 的 APU 的低孔隙核心。

SSSE3 并没有真正提供那么多新指令。只有 16 个,主要用于处理压缩整数,其中大多数 aren't very exciting .转储还应该告诉您导致崩溃的指令的操作码。如果没有,您将不得不返回并从代码的字节地址中找出它。这将准确地告诉您哪个指令有问题。我猜你正在使用 PSHUFB就地打乱字节,这是一个实际上非常有用的 SSSE3 指令。我见过的一种常见用法是 a fast population count algorithm (尽管还有其他不需要 SSSE3 的实现,它们的速度几乎一样快,甚至更快)。

假设您正在使用 MSVC 进行编译,看到它发出此指令,我实际上感到有些惊讶。为了获得它,您必须告诉编译器以 AVX 为目标,这将阻止您的代码在比 Sandy Bridge/Bulldozer 更旧的任何东西上运行。我敢肯定,如果您不想提高最低系统要求,您可以找出替代的指令序列来做同样的事情。 pshufd , 或 movaps + shufps是变通方法的可能候选者。

关于windows - 根据用户模式故障转储找出 CPU 型号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37973856/

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