多CPU,多核心和超线程

任何人都可以推荐一些文件来说明多CPU,多核和超线程之间的区别吗? 我总是对这些差异感到困惑,对于不同场景下每种架构的优缺点,

编辑:这是我现在的了解,在网上学习,并从他人的意见中学习; 任何人都可以评论评论吗?

  1. 我认为超线程是其中最差的技术,但价格便宜。 它的主要思想是复制寄存器来保存上下文切换时间;
  2. 多处理器优于超线程,但由于不同的CPU处于不同的芯片上,不同CPU之间的通信延时比多核更长,而且使用多个芯片的代价比多核多, ;
  3. 多核将所有CPU集成在一个芯片上,与多处理器相比,不同CPU之间的通信延迟大大降低。 由于它使用一个单芯片来容纳所有的CPU,所以消耗更less的功率并且比多处理器系统便宜。

在此先感谢乔治

多CPU是第一个版本:你会有一个或多个主板上有一个或多个CPU芯片。 这里的主要问题是CPU必须将一些内部数据暴露给另一个CPU,以免妨碍他们。

下一步是超线程。 主板上有一个芯片,但是内部有两个部分,所以可以同时执行两条指令。

目前的发展是多核心的。 这基本上是原来的想法(几个完整的CPU),但在一个单一的芯片。 优点是:芯片devise人员可以很容易地将用于同步信号的附加电线放入芯片(而不必通过引脚,然后通过拥挤的主板,再到第二个芯片)。

今天的超级计算机是多CPU,多核:它们有很多通常有2-4个CPU的主板,每个CPU是多核的,每个都有自己的RAM。

[编辑]你说的很对。 只是几个小点:

  • 超线程在单个内核中同时跟踪两个上下文,从而将更多的并行性提供给无序的CPU内核。 即使一个线程在高速caching未命中,分支错误预测或等待高延迟指令的结果时,这也会使执行单元保持工作状态。 这是获得更多总吞吐量而不复制多less硬件的一种方法,但是如果有的话,它会逐渐减慢每个线程的速度。 有关更多详细信息 , 请参阅本问答 ,并解释本段以前的措辞有何不妥之处。

  • 多CPU的主要问题是运行在其上的代码最终将访问RAM。 有N个CPU,但只有一个总线访问RAM。 所以你必须有一些硬件确保:a)每个CPU获得相当数量的RAM访问权限; b)访问RAM的同一部分不会导致问题; c)最重要的是,CPU 2将被通知当CPU 1写入某个内存地址时,CPU 2在其内部caching中。 如果这种情况没有发生,CPU 2会高兴地使用这个caching的值,而不理会它已经过期

    试想一下,你有一个列表中的任务,你想把它们分散到所有可用的CPU上。 因此,CPU 1将从列表中获取第一个元素并更新指针。 CPU 2也会这样做。 出于效率的原因,两个CPU不仅仅将几个字节复制到caching中,而且还将整个“caching行”(不pipe是什么)。 这个假设是,当你读取字节X时,你也会很快读到X + 1。

    现在,两个CPU都有一个caching中的内存的副本。 CPU 1然后将从列表中获取下一个项目。 没有高速caching同步,它不会注意到CPU 2也更改了列表,它将开始在与CPU 2相同的项目上工作。

    这是有效地使多CPU如此复杂。 如果整个代码仅在单个CPU上运行,则副作用可能会导致性能下降。 该解决scheme是多核:您可以轻松添加尽可能多的电线,以便同步caching; 你甚至可以将数据从一个caching拷贝到另一个caching(更新caching行的一部分,而不必刷新和重新加载)等。或者,caching逻辑可以确保所有的CPU在访问相同的caching行真正的RAM,简单地阻止CPU 2几个纳秒,直到CPU 1已经做出改变。

多核心比多CPU更简单的主要原因是,在主板上,你根本无法运行两个芯片之间的所有线路,你需要使同步有效。 另外一个信号只能传输30cm / ns的光线(光线的速度;在电线中,你通常会less得多)。 不要忘记,在多层主板上,信号开始互相影响(串扰)。 我们认为0是0V,1是5V,但实际上,“0”是在-0.5V(从1→0下降线过驱动)和.5V之间,“1”是大于0.8V的任何值。

如果你在一个芯片内部拥有一切,信号运行得更快,你可以拥有尽可能多的(好吧,几乎:)。 此外,信号串扰更容易控制。

您可以在英特尔网站或耶鲁大学的短文中find一些关于双CPU,多核和超线程的有趣文章。

我希望你在这里find你需要的所有信息。

简而言之:多CPU或多处理器系统有几个处理器。 多核系统是在同一芯片上有多个处理器的多处理器系统。 在超线程中,多个线程可以在同一个处理器上运行(即这些多个线程之间的上下文切换时间非常短)。

多处理器已经有30年了,但大多数都在实验室。 多核心是新的stream行的多处理器。 现在的服务器处理器和多处理器一起实现了超线程。

关于这些主题的维基百科文章是相当说明性的。