两个进程可以在一个具有超线程的 CPU 内核上同时运行吗?我是从网上学的。但是,我没有看到明确的直接答案。
编辑:
感谢讨论和分享!我在这里发布我的问题的目的不是讨论并行计算。太大了,不能在这里讨论。我只想知道多线程应用程序是否比多进程应用程序更能从超线程中受益。进一步阅读后,我有以下作为我的学习笔记。
1) 启用超线程技术的 CPU 内核具有两组 CPU 状态和中断逻辑。同时,它只有一组执行单元和缓存。 (我还没有研究管道是什么)
2)多线程只有在某些执行的线程中发生延迟时才能从超线程中受益。我认为这一点可以准确映射到软件程序员为什么以及何时使用多线程的常见原因。如果多线程应用程序已经优化。它可能不会从 Hypter 线程中获得任何好处。
3)如果CPU状态映射到进程状态,我相信Marc是正确的,多进程应用程序甚至可以从超线程技术中受益更多。
4)当CPU供应商说“线程”时,他们的“线程”似乎与我作为Java程序员所知道的线程不同?
最佳答案
不,超线程 CPU 内核仍然只有一个执行管道。尽管它在上层操作系统中表现为两个 CPU,但在任何给定时间仍然只执行一条指令。
超线程旨在允许 CPU 继续执行一个线程,而另一个线程停止等待资源或其他操作完成,而不会使管道的太多阶段空置和无用。这可以追溯到 Pentium 4 天,其管道长得离谱——停顿对于效率和吞吐量来说本质上是灾难性的,而超线程允许英特尔在清理停顿的同时让 CPU 忙于做其他事情。
关于cpu-architecture - 两个进程可以在一个 CPU 内核上同时运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8916723/