微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何验证处理器是否支持超线程?

如何解决如何验证处理器是否支持超线程?

这是我在StackOverflow上的第一篇文章,因此,如果我违反了一些规则,我深表歉意。

我的教授(不是很好)告诉我们,我们有24小时的时间用10行代码编写一个程序,以验证您的处理器体系结构是否支持超线程操作。

至少可以说,我不知道他想要什么,甚至不知道如何开始。我相信他想用C ++编写代码,但是当我问这个问题并且不告诉我用哪种语言编写代码时,他会感到沮丧。

当我告诉他时,我不明白他在问什么,他很难过,并告诉我,我一定不会一直在注意。老实说,我一直在做笔记。我想这门操作系统课程不会让我沉迷。

我通过阅读intel手册尝试了自己的研究,但没有走运(也有5000余页)。我四处搜寻以了解超线程的基础知识,即可以同时运行2个进程(如果正确的话),但不知道如何将其转换为代码

任何帮助都会很棒!

解决方法

如何验证处理器是否支持超线程? ...在C ++中

在C ++中没有标准的方法来实现这一点。

如果您知道程序将在其上运行的CPU,则可以找到CPU文档中描述的方法。例如,486和更高版本的x86处理器具有CPUID指令。您需要的相关信息是“每个物理处理器程序包的逻辑处理器数(CPUID.1.EBX [23:16])” 。如果该值大于1,则启用超线程或类似功能。

要执行诸如CPUID之类的指令,您需要使用汇编语言而不是C ++进行编写。也就是说,如果您在操作系统内,则它可能会提供一个不错的API来访问此功能(请参阅示例注释)。

实现此目标的一种不太特定于CPU的方式是读取SMBIOS(如果目标系统支持)。在这里,您可以将处理器线程数除以内核数,以获得与上述相同的值。例如,您可以查看dmidecode程序在Linux上的实现,以了解如何读取它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。