执行并行计算任务的CPU必须是amd多核处理器的

我正在大学里学习并行计算课程显然我们需要了解程序员一级的体系结构。 谁能说出开发amd多核处理器处理器的动机是什么 为什么多线程处理器不够用? 为什么我们需偠将管道分布在多个核心上而不是将它们放在单个大型核心上?


随着CPU变得越来越小和越来越快它们接近了几个物理极限,这使得在当湔路径上继续运行的成本更高:

  • 当今的CPU(英特尔)采用22纳米(AMD的32纳米)技术制造可大致转换为90个硅原子直径。理论上的限制应该是一个原子直径但实际上您将需要更多。多少
  • 电力的速度。假设光速是光速的2/3我们发现在2 GHz CPU上,电在一个时钟周期内将传播10厘米(约4英寸)如果要执行某项有价值的操作(例如执行加法或类似操作),则它需要通过互连设备的系统来执行加法并且这些设备必须能够在一个周期(及其升级DeskPro 386 ,存檔以了解引入的日期
  • 看起来您可能是对的,但这是一个短暂的设计决策大卫·赫斯(David Hess)在Real World Technologies上发布,确认使用了SRAM (可悲的是,此注释线程没囿为答案添加任何内容但很有趣。)
  • @ Yuhong Bao:我指的是Compaq Deskpro 386/20 正如Paul A. Clayton所说,这不是静态RAM而是静态列RAM。 请不要编辑我的帖子因为它会使所有评论在讨論中显得不合时宜。 由于我对您所知的Dell型号一无所知因此我本来不能写这篇文章。 撰写有关戴尔机器的文章
  • 但是请注意"静态列"是DRAM的一種形式,因此在对其进行编辑之前的帖子也具有误导性 顺便说一句,还有"半字节"模式的DRAM 通常,大多数DRAM在被EDO取代之前都是"页面模式"

多線程处理器实际上并不能同时执行代码。他们唯一要做的就是虚拟化处理器以便在操作系统上看起来像两个物理核心,这在速度上有一點优势

没有超线程的单核处理器有时可能会浪费时间等待指令完成,因为它需要获取数据或者具有高速缓存未命中或错误的分支预测。虽然乱序执行可以解决其中的一些问题但是添加另一个可以接管并使用CPU资源一段时间(而另一个阻塞)的线程可以提高性能。

但是这个具有超线程的单核仍然只有一个FPU,一个ALU一个控制单元,一个内存接口等由于这一限制,真正的同时线程执行要求复制这些组件复制該内核并指定它们之间的接口比设计要简单得多,该设计涉及尝试在单个内核中具有多个线程的情况下平衡多个ALU或FPU

  • 实际上,这是非常不准确的如果您查看超线程,您会发现它们确实在为每个线程复制寄存器和程序计数器多线程处理器实际上确实维护两个独立的执行线程,它们仅共享计算硬件(ALUFPU等)。他们肯定不使用循环上下文切换他们使用了其他人目前不使用的硬件。例如一个线程可能会继续执行,而另一个线程正在等待内存提取
  • @mebob我明白你的意思我的理解是不正确的。我试图对此进行补救随时进行澄清说明进行编辑,我将其设為社区Wiki或者,提供您自己的答案

增加单核的宽度会在硅面积和功耗上带来几何成本。

制作一个合理大小的内核的多个副本具有线性成夲(+互连/一致性的开销很小)

制作一个超宽CPU只是为了让您可以使用SMT(又名超线程)将其切碎是疯狂的。如果您需要出色的单线程性能并且会以某种方式冷却芯片,使其以接近狭窄设计所能管理的时钟速度运行则可以采用这种方法。 (您不能)

大多数代码中的指令级并行度不足,無法做出足够大的改进以证明更广泛的设计是合理的您在IPC中获得的任何收益(每个时钟的insns)都会失去时钟速度,因为您不能以不过热的速度運行它

例如,在20年中英特尔已经从3宽发行宽度(从PPro中的原始P6到Pentium-M),到4宽发行宽度(从Core2到Skylake) x86很难解码,但是具有uop缓存的SnB系列设计很容易拥有比其解码器吞吐量更大的OOO管道

增长的更多的是执行端口的数量,以及每个端口上执行单元的数量在最新的英特尔设计中,同一条指令可鉯在不同数据上并行运行例如Haswell和更高版本可以每个时钟执行两个FP乘法。 IvB和更早版本的每个时钟仅具有一个FP mul的吞吐量因为只有一个FP mul执行單元(在port1上)。

较早的设计(如PIII)仅具有两个ALU执行端口因此它们可以管理的每个时钟三个指令之一必须是存储器操作(加载或存储)。 Haswell具有四个ALU端口(其中三个可以处理矢量指令)因此,无论指令混合如何最近的CPU都有很大的机会并行执行大量操作。

大量的裸片面积很多时间不做任何事凊的"低效率"不是问题力量才是真正的限制因素,而不是死区这就是为什么现代CPU具有如此之多的执行能力而无法立即使用的原因。

请注意如果超线程会使HT在内核之间共享的执行资源饱和,则实际上会使代码变慢或更糟糕的是,如果竞争性共享L1 / L2高速缓存带来的额外高速緩存压力导致每个线程中的更多高速缓存未命中

当一个或两个线程被赋予完整内核时,一个或两个线程在每个时钟上实现低指令数(IPC)时HT昰一个巨大的胜利。两个无序的窗口可以隐藏内存延迟这很好,对于分支错误的预测来说这非常好。

对于两个执行瓶颈不同的线程来說这是一个小小的胜利。 (例如端口5上的洗牌单元与端口0/1上的添加/ mul)。


}

以我仅剩的单片机知识作答

先說结论:amd多核处理器CPU可以同时执行多个进程。

扩展了说单核CPU就可以“同时”执行多个进程。

先普及两个概念并发和并行:

并发:当有哆个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行在一个时间段的线程代码运行时,其它线程处于挂起状.这种方式我们称之为并发(Concurrent)。

并行:当系统有一个以上CPU时,则线程的操作有可能非并发当一个CPU执行一个线程时,另一个CPU可以执行另一个线程两个线程互不抢占CPU资源,可以同时进行这种方式我们称の为并行(Parallel)。

区别:并发和并行是即相似又有区别的两个概念并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在哃一时间间隔内发生。在多道程序环境下并发性是指在一段时间内宏观上有多个程序在同时运行,但在单处理机系统中每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行倘若在计算机系统中有多个处理机,则这些可以并发执行的程序便可被分配到多个处理机上实现并行执行,即利用每个处理机来处理一个可并发执行的程序这样,多个程序便可以同时执行

所以微观上说,amd哆核处理器CPU可以同时执行多个进程进程数与CPU核数相当。但宏观上说由于CPU会分时间片执行多个进程,所以实际执行进程个数会远多于CPU核數

}

我要回帖

更多关于 cpu什么时候用到多核 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信