两个进程可以同时在一个具有超线程的CPU核心上运行吗?我从互联网上学习。但是,我没有看到明确的直接答案。
修改 感谢您的讨论和分享!我的钱包在这里发布我的问题不是讨论并行计算。它太大了,不能在这里讨论。我只想知道多线程应用程序是否可以从超线程中获益,而不是多进程应用程序。在进一步阅读之后,我有以下作为我的学习笔记。
1)启用超线程技术CPU核心有两组CPU状态和中断逻辑。同时,它只有一组执行单元和缓存。 (我还没有研究什么是管道)
2)只有在某些已执行的线程中发生延迟时,多线程才能从超线程中获益。我认为这一点可以准确地映射为什么以及何时软件程序员使用多线程的常见原因。如果多线程应用程序已经过优化。它可能无法从Hypter线程获得任何好处。
3)如果CPU状态映射到进程状态,我相信Marc是正确的,多进程应用程序甚至可以从超线程技术中获益更多。
4)当CPU供应商说“线程”时,看起来他们的“线程”与我认为是java程序员的线程不同?
答案 0 :(得分:2)
不,超线程CPU核心仍然只有一个执行管道。即使它看起来像上层操作系统的两个CPU,但在任何给定时间仍然只有一条指令被执行。
超线程旨在允许CPU继续执行一个线程,而另一个线程停止等待资源或其他操作完成,而不会让管道的太多阶段空白且无用。这可以追溯到奔腾4天,它的管道非常长 - 一个失速基本上是效率和吞吐量的灾难性的,超线程允许英特尔在忙着清理它的时候让cpu忙于做其他事情。
答案 1 :(得分:1)
虽然Marc B的答案几乎是关于HT如何运作的明确总结,但我只是想通过链接这篇文章做出一点贡献,这应该清除很多关于HT的事情:http://software.intel.com/en-us/articles/performance-insights-to-intel-hyper-threading-technology/
答案 2 :(得分:0)
Short answer, yes.
A single core cpu(a processor), can run 2 or more threads simultaneously. These threads may belong to the one program, or they may belong different programs and thus processes. This type of multithreading is called Simultaneous MultiThreading(SMT).
Information that claims cpu core can execute only one instruction at any given time is also not true. Modern CPUs exploit Instruction Level Parallelism(ILP) by duplicating pipeline resources(e.g 2 ALUs instead of 1). This type of pipeline is called "superscalar" pipeline.
Wikipedia page of Simultaneous Multithreading: