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

问题描述 投票:8回答:3

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

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

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

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

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

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

multicore multitasking hyperthreading
3个回答
2
投票

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

超线程旨在允许CPU继续执行一个线程,而另一个线程停止等待资源或其他操作完成,而不会使管道的太多阶段空置且无用。这可以追溯到奔腾4天,它的管道非常漫长 - 一个失速基本上是效率和吞吐量的灾难性的,而超线程允许英特尔在忙着清理停顿时让cpu忙于做其他事情。


1
投票

虽然Marc B的答案几乎是关于HT如何运作的明确总结,但我只是想通过链接这篇文章做出一点贡献,这应该清除很多关于HT的事情:http://software.intel.com/en-us/articles/performance-insights-to-intel-hyper-threading-technology/


0
投票

简短的回答,是的。

单核cpu(处理器)可以同时运行2个或更多线程。这些线程可以属于一个程序,或者它们可以属于不同的程序并因此处理。这种类型的多线程称为同时多线程(SMT)。

声称cpu核心在任何给定时间只能执行一条指令的信息也是不正确的。现代CPU通过复制流水线资源(例如2个ALU而不是1个)来利用指令级并行(ILP)。这种类型的管道称为“超标量”管道。

同步多线程的维基百科页面:

Simultaneous multithreading

© www.soinside.com 2019 - 2024. All rights reserved.