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

为什么在两个逻辑核心上执行两个线程比在一个物理核心上执行两个线程更好?

如何解决为什么在两个逻辑核心上执行两个线程比在一个物理核心上执行两个线程更好?

现代 cpu 规范似乎总是提到每个内核的线程数是两倍。如果是4核处理器,提到的线程数是8。如果是6核处理器,线程数是12。

起初,这让人感到困惑,因为据我所知,一个物理内核一次只能执行一个线程。此外,可以通过上下文切换“同时”执行任意数量的线程。那么,为什么还要在规范中提到线程数呢?

英特尔声称,由于 Hyper-threading,这是他们对 Simultaneous multithreading 的实现,因此在他们的处理器中是可能的。我相信 AMD 有自己的版本。

英特尔的 explanation 是他们将每个物理内核公开为两个“逻辑”内核。我想知道这如何提高性能。为什么在上下文切换的帮助下,在两个逻辑核上执行两个线程比在单个物理核上执行两个线程效率更高?无论如何,这两个逻辑内核都由一个物理内核支持。那么,Simultaneous multithreading 有何不同?

似乎有一些硬件实现可以提高效率。在浏览了 Simultaneous multithreading 的 wiki 之后,我的模糊理解是来自多个线程的指令实际上是同时执行的。显然,这是关键的区别。但是,我不明白为什么需要将一个物理核心暴露为两个逻辑核心。是不是让操作系统同时为cpu服务更多的线程?操作系统会认为是内核数的两倍,因此为 cpu 提供两倍的线程数。操作系统将控制上下文切换,而物理内核使用它们的硬件能力通过各自的逻辑内核同时执行服务于每个线程的两个线程。是这样吗?

跟进

一个后续问题是,为什么不在规范中将它们指定为逻辑核心?为什么称它们为线程?例如:

Intel® Core™ i7-11600H Processor
# of Physical Cores 6
# of Logical Cores 12

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