我有两个问题: 1.机器是否有两个或更多型号不同的CPU? 2.如果我调用CPUID指令,当不同的CPU执行它时,结果会有什么不同吗? (如果对quesions1的回答是正确的,这很明显)。如果是这样,我如何通过CPUID指令获取所有CPU的信息。
答案 0 :(得分:6)
是和否。有许多系统,多处理器,并有很大的不同。游戏男孩推进,既有基于arm的游戏和基于z80的游戏男孩(不能同时使用两者)。但是nds有一个arm9和arm7(可以/同时使用两者)。你会在beagleboard中找到的omap有一个arm和一个TI dsp(可以同时使用两者)。我假设你在谈论x86系统。大多数台式机只是一个x86。您的鼠标和键盘以及类似的东西可能有8051或其他各种类型的微控制器。但你不在乎,因为这些只是USB HID设备或cdrom驱动器或硬盘。你真的无法接触处理器,所以它显示出来并不重要。笔记本电脑和高端服务器系统以及可能的dekstops很快就会有第二台处理器或计算机,因为笔记本电脑可能是一只手臂,功率显着降低,因此x86可以在待机模式下关闭,手臂保持活力,你把它唤醒它的速度非常快。在服务器上,其他系统作为防弹监视器,监视服务器,提供监视和一些远程重置以及其他功能。同样,你不能得到这个处理器,所以如果你找不到CPUID协议也没关系。另一个是你的视频卡,数百到数千gpus。您可以访问那些包含您的程序的程序,如omap dsp,但您不进行通用处理,因此CPUID不再需要提供该信息。
是的,不是。您的计算机系统(包括外围设备)具有许多不同的处理器,但通用处理通常是同一系列中的单个或多个,通常位于同一芯片内。所以CPUID只需要给你那个核心/家庭。
答案 1 :(得分:5)
为此,您必须区分“套接字”和“核心”,因为术语“processor”不明确。
CPUID为您提供有关当前套接字的信息,这意味着当前线程正在执行的核心所在的套接字(包含CPUID操作码的线程)。
不同的套接字可以包含稍微不同的硬件,只要它们兼容,所以:
要获取有关不同套接字的信息,您必须确保在有问题的套接字上执行您的进程:您可以命令您的操作系统在某个套接字上运行您的线程,但这是特定于操作系统的。搜索引擎:为您的操作系统中的线程设置处理器关联性。
CPUID将告诉您有关当前套接字的所有信息,包括“逻辑处理器”的数量:逻辑处理器数量等于如果您的核心不是超线程核心,如果它们是超线程,那么逻辑处理器数量将会加倍。
答案 2 :(得分:1)
我假设你的问题中存在cpuid意味着x86 / x64上下文。
多插槽主板(实际上是bios)通常要求所有已安装的处理器报告相同的cpuid信息完全相同。我想有可能拥有架构上相同但频率不同的处理器但是mb制造商必须列出哪些组合有效,哪些无法工作,并回答无休止的电子邮件,说明为什么这个或那个所谓的兼容组合不起作用