两个进程可以同时在一个CPU核心上运行吗?

Yiy*_*Jia 10 multicore hyperthreading multitasking

两个进程可以同时在一个具有超线程的CPU核心上运行吗?我从互联网上学习.但是,我没有看到明确的直接答案.

编辑: 感谢您的讨论和分享!我的钱包在这里发布我的问题不是讨论并行计算.它太大了,不能在这里讨论.我只想知道多线程应用程序是否可以从超线程中获益,而不是多进程应用程序.在进一步阅读之后,我有以下作为我的学习笔记.

1)启用超线程技术CPU核心有两组CPU状态和中断逻辑.同时,它只有一组执行单元和缓存.(我还没有研究什么是管道)

2)只有在某些执行的线程中发生延迟时,多线程才能从超线程中获益.我认为这一点可以准确地映射为什么以及何时软件程序员使用多线程的常见原因.如果多线程应用程序已经过优化.它可能无法从Hypter线程中获得任何好处.

3)如果CPU状态映射到进程状态,我相信Marc是正确的,多进程应用程序甚至可以从超线程技术中获益更多.

4)当CPU供应商说"线程"时,看起来他们的"线程"与我认为是java程序员的线程不同?

Mar*_*c B 2

不,超线程 CPU 核心仍然只有一个执行管道。尽管对于上层操作系统来说它看起来像是两个 CPU,但在任何给定时间仍然只执行一条指令。

超线程的目的是允许 CPU 继续执行一个线程,而另一个线程则停止等待资源或其他操作完成,而不会留下太多管道空无用的阶段。这可以追溯到 Pentium 4 天,其管道长得离谱——停顿对于效率和吞吐量来说本质上是灾难性的,而超线程允许英特尔在清理停顿的同时让 CPU 忙于做其他事情。

  • “在任何给定时间仍然只执行一条指令”——对于现代超标量 CPU 来说,即使没有超线程,这也是不正确的——存在多个管道和执行单元,它们可能同时执行多个指令 (2认同)
  • @Yiyu Jia:不,这在 20 - 30 年前可能是正确的,但在过去 10 年或更长时间里,超标量 CPU 几乎已经成为所有桌面和服务器 CPU 的标准,并且越来越多地进入低端嵌入式领域应用程序,例如手机和平板电脑。 (2认同)
  • @Yiyu:超标量与核心的微架构有关 - 您正在查看的文档与多核架构有关,这是一个更高层次的概念。 (2认同)
  • 对不起我错了。我没有看到最后一句话。引用自 wiki:“各种替代技术并不相互排斥——它们可以(并且经常)组合在单个处理器中。因此,多核 CPU 是可能的,其中每个核心都是包含多个并行管道的独立处理器,每个管道都是超标量。一些处理器还包括矢量功能。“http://en.wikipedia.org/wiki/Superscalar” (2认同)