13

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

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

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

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

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

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

4

3 回答 3

2

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

于 2012-01-21T10:37:09.270 回答
2

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

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

于 2012-01-18T20:15:24.273 回答
1

简短的回答,是的。

一个单核cpu(一个处理器),可以同时运行2个或更多线程。这些线程可能属于一个程序,也可能属于不同的程序,从而属于不同的进程。这种类型的多线程称为同时多线程(SMT)。

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

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

同时多线程

于 2019-03-19T15:13:32.377 回答