首页 > 解决方案 > 超线程和并行

问题描述

超线程是否会改变已编译程序的二进制代码序列?如果我们有一个编译后的二进制代码,比如:10100011100011100101010010011111100011111110010111 如果启用了超线程,线程代表什么?它只是这个二进制代码的一部分吗?操作系统如何为这些线程分配时间间隔?

对于并行性:编译后的二进制代码会有什么不同吗?内核如何处理这个二进制序列?只是在不同的内核中执行部分代码?操作系统如何分配并行任务?有没有具体的结构?

谢谢你

标签: multithreadingparallel-processing

解决方案


大多数程序被编译为由特定的操作系统在广泛的处理器家族的任何成员上运行(例如,在 Windows 上,对于 x86-64 家族)。在给定的 CPU 系列中,可能存在具有不同内核数量的 CPU,并且可能存在具有或不具有超线程的内核。

这些都不会改变二进制代码。相同的程序通常可以在 CPU 系列的任何成员上运行,无需任何更改。

运行程序的操作系统可能会或可能不会针对处理器系列的不同成员进行不同的配置。


有时,可以编译程序以利用特定 CPU 的功能,但以这种方式编译的程序不适合分发到不同的站点和/或 PC。


如果我们有一个编译后的二进制代码,比如:101000111000... 如果启用了超线程,线程代表什么?它只是这个二进制代码的一部分吗?

这是一个无法回答的问题。您可以通过阅读有关计算机体系结构的介绍性书籍来了解有关“二进制代码”含义的更多信息。例如,https://www.amazon.com/Elements-Computing-Systems-Building-Principles/dp/0262640686/


推荐阅读