我在文献中看到过一些较新的 CPU,例如 英特尔至强“Nehalem-EX” 具有 8 个核心和 16 个线程。他们在这里谈论什么?我在参考文献中看到了这一点,所以 SPARCS 也是如此,这肯定不是由代码生成的那种逻辑线程?这个超线程重命名了吗?

有帮助吗?

解决方案

是的, 基于 Nehalem 的 处理器实现 超线程.

您所指的新 Nehalem-EX 有 8 个物理核心,其中每个核心可以视为 2 个逻辑核心,总共 16 个逻辑核心,允许在单个处理器上执行 16 个应用程序线程。

这与支持超线程的 Pentium 4 处理器以及最近的 Atom 处理器中使用的技术相同。我的 Eee PC 有一个单核 Atom 处理器,它有两个逻辑核心 - Windows 任务管理器将显示两个 CPU 图表;每个逻辑核心一个。

太阳的 UltraSPARC T2 (和 T1)还允许 同时多线程 (英特尔的实现称为超线程——英特尔的商标),它允许单个核心显示为多个逻辑核心,以在单个核心上执行多个线程。

同时多线程背后的大致想法是有多个寄存器来存储处理器状态,因此看起来单个内核中实际上有多个内核,因为它有多个全套硬件寄存器。

虽然 ALU 和 FPU 等物理设施可能不会增加,但拥有更多组寄存器来在物理核心上运行更多线程可以更好地利用可用处理器资源。执行单个线程时,核心可能尚未饱和,但执行多个线程可能会使所有单元充分发挥其潜力。

那么这对于程序员来说意味着什么呢?

这意味着我们仍然需要编写多线程软件——只有一个线程的程序只能利用一个逻辑核心。只有编写良好的多线程代码,我们才能利用这些处理器提供的大量逻辑核心。

即使使用同步多线程,代码也会在每个逻辑核心的一个线程上执行。

其他提示

一个多线程处理器的一个极端是枪管处理器。这是SMT其中所述处理器分割了的多个线程之间的槽以循环方式同样的形式。要做到这一点,它只有在使用同一套执行单元所需要的各种寄存器的副本。因此,在4个时钟周期,将放代码从线程0-3中的管道。

您可以把这些处理器以类似的方式工作的休息,以更或小的程度。代替围绕均等地分布的槽,它可能只是使用最多是空由于在处理器控制或数据冒险时隙。

例如,被截取的分支时,在管道中的指令可能需要被刷新。而不是彻底冲洗一切,有些插槽可用于其他线程。整体思想是通过不浪费CPU周期以提高性能。

这就是线程如何在多种硬件上工作。

这是不改名超线程 - 这是超线程(它是写在这个网页你给链接)

简单地说,处理器告诉它有16个核,因此它可以在芯的数量增加了一倍平衡任务OS。超线程技术提供一些好处becouse在某些情况下,从两个不同的程序两条不同的指令/线程可以在一个内核上同时执行。但可以肯定它不会给200%的速度了。我没有这样的处理器上工作,但我认为你可以得到约10%-20%的额外的CPU时间。

它是由每个操作系统的线程模型来映射OS级线程硬件级线程诸如那些在的问题进行说明。

通过应用程序员所用的高级编程语言催生了逻辑线程仍然是一个操作系统级从硬件移除,当然,除非你谈论,做映射操作系统代码。

超线程(INTEL的商标的方式)允许每个线程实际上同时运行。因此,在这种情况下,你可以在同一时间运行8X2的应用程序线程。

从小册子...

英特尔Nehalem架构建立在Intel的45纳米独特的高k金属栅极技术过程

 Up to **8 cores** per processor
 Up to **16 threads per processor** with Intel® Hyper-threading
 2.3 billion transistors

比较这对单CPU,单核系统,其中每个线程都必须计划和至多只有一个线程会被激活 - 一个正在运行的CPU绑定的任务和其他人等待一个I / O传输

最初穿线被使用,也可以与一组并发活动的建模(未建模没有实际并行运行)或产生这是响应即使在执行I / O的系统的外观。例如不必穿线,您的字处理器将出现在保存一个文档失速。

多年来,我抵制其在我的桌面应用程序的多线程的想法 - 它复杂的代码,并可能降低性能 - 认为所有需要的操作系统内核涉足这些互斥操作。有螺纹的实际上并行执行的到来,我的反对被减少,但我仍然认为,多个进程,而不是多个线程在单个进程是一个较好的方法。

克里斯

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top