中文 英语

有多少核心?(第1部分)

第1部分:设计团队正在重新思考正确的核心数量和类型,它们需要多大,以及如何组织它们。

受欢迎程度

芯片设计中处理器核心的最佳数量正变得越来越不明显,部分原因是新的设计和架构选择使得进行清晰的比较变得更加困难,部分原因是仅仅在一个问题上投入更多的内核并不能保证更好的性能。

这并不是一个新问题,但它确实有一个数量可观的新排列和变量列表——大小合适的异构核心、编写得更好的软件、新的内存类型和多种打包选项。此外,虽然这似乎只是关于分区的又一个讨论,但它伴随着越来越强烈的紧迫感和关注。随着晶体管密度的不断增加,有必要对设计进行一些根本性的改变,以减少漏电流和动态功率密度,以及减少对内存和I/O的争用。

解决这些问题的一种方法是添加更多所有类型的处理元素,并更加关注关于需要放置它们的位置和它们实际做什么的细节。但是,哪种类型、大小、时钟频率、把它们放在哪里、如何利用它们,以及它们对整个系统设计的影响,这些都是越来越难以回答的问题。

伟大的辩论
这个讨论的某些部分可能听起来很熟悉。自1961年Burroughs首次引入具有非对称多处理的双处理器大型机以来,选择正确的处理元素数量一直是争论的焦点。随后出现了各种为计算机添加更多处理元素的方案,从60年代中期大型机中的对称多处理开始,到90年代pc中的计算和图形加速芯片。然后,从2006年开始,英特尔推出了双核处理器,作为在密集处理器核心中最小化热量的一种方式。

在那里,福利基本上停止了。除了一些令人尴尬的并行应用程序,比如pc上的图像和视频处理,数据中心中与数据库和搜索相关的应用程序——更不用说像芯片设计中的硬件加速验证这样的计算密集型应用程序——CPU的核数通常被证明只不过是旧的MIPS/MHz/GHz市场大战的延伸。人们认为越多越好,即使它们实际上并不会影响性能。在某些情况下,额外的核心除了增加设计成本之外什么也做不了。

芯片制造商、软件开发商、研究机构和各种财团几十年来一直试图解决并行问题。大量资金被用于开发新的语言、并行编程方法和大学计算机科学专业的新课程。如果他们成功了,关于正确核心数量的争论就会烟消云散。但是大多数消费者应用程序仍然不能利用多核计算。

这解释了为什么大型、复杂的soc实际上有几十个独立的计算元素。这似乎是违反直觉的,除非你考虑到其中一些核心是其他核心的加速器,而另一些则是孤岛——它们与设备中的任何其他功能只有很少或根本没有互动。通常,将功能与它们自己的高度特定的处理器分离,特别是对于IP子系统,比将这些功能运行在一个中央处理器单元上更简单。虽然这可能会导致涉及系统级一致性的问题,但这是一种更容易设计芯片、更高效的方法。

“这一切都归结为Amdahl的法律Arvind Raghuraman,嵌入式系统部门的工程师说导师图形。“软件的伸缩有一个实际的限制。各种软件编程范式都有一些限制,比如将软件重新组合到有顺序问题的微内核中。在大多数情况下,这是一个重要的瓶颈。”

即使在最好的情况下,增加更多的核也不能在功率或性能方面线性扩展。在两个核上以较慢的时钟速度运行进程的性能不会比在一个核上运行该进程的性能快一倍。对于那些可以轻松并行化的应用程序,在解析和重组阶段仍然存在开销。

“事实上,就像所有人在SMP中所知道的那样,添加四个内核可能只能提供两个内核的实际性能,”Kurt Shuler说,他是营销副总裁Arteris。“嵌入式世界的很多东西,特别是手机,都是单线程和事件驱动的,所以真的无法预测。”

这导致了许多不同的策略来更有效地使用处理元素。这里最大的问题是,并不是所有事情都是简单的苹果对苹果的比较。例如,如果软件是与异构多核芯片共同开发的,那么每个计算功能所需的周期可能比商业开发的跨可比处理器工作的软件要少。同样地,在规格表上划分不同元素之间的处理可能看起来更有效率,但内存吞吐量可能低于不同配置、不同芯片中的类似配置,甚至是使用不同制造工艺的配置。

“如果你看看深度学习,它的策略一直是使用大量高度并行化的核,”加州理工学院的克里斯·罗文(Chris Rowen)说节奏的家伙。“目前的想法是,你可能想要1000核,但使用1核和1000乘数可能更容易、更快。这就像是在问,‘1只2岁的小蟑螂和1000只蟑螂哪个更聪明?软件是其中的关键部分。在抽象的最高级别上,您可能正在运行Windows、Android或iOS,而在较低级别上,您正在使用依赖于升级原则的更面向实时的软件。最低层的软件可以识别自己的限制,并中断更高层的进程。所以有更多的进程,但不一定是更多的处理器。”

选择一个号码
数十名工程师和架构师之间的一般共识是智能手机CPU中的最大核心数是四到八个,而且往往不会使用一个核心。其他人储备,一般有源。

“智能手机有20到30核,”北美运营副总裁萧emerson Hsiao说安第斯山脉的技术。“很多人正在做测试控制等简单任务。我们还看到专用的核心,这些核心针对权力或性能进行了优化,以及在特定任务中共同努力的其他核心。因此,对于相机,您可能会识别对象,而不仅仅是图像。那些通常是定制处理器,而不是通用的。“

但即便如此,数学也并不总是算数的。例如,在黑盒IP子系统中,除了IP开发人员之外,没有人真正知道其中有多少处理元素。它们中的一些与子系统之外的任何东西都没有联系。

"如果你能在没有太多集成负担的情况下做到这一点,那么子系统的灵活性肯定会变得更容易,"微软首席技术官Drew Wingard表示超音速。“从封装的角度来看,这真的很重要,因为您不需要考虑处理资源的争用。您不必处理中断或担心是否在子系统中进行数据处理。从抽象的角度来看,这也很好,因为计算资源对系统的其余部分不可用。”

此类方案中的其他处理元件仅偶尔连通,例如当用户调用特定过程时踢进齿轮的加速器。智能手机多年来一直在使用这种方法,使用DSP,GPU和MCU的组合针对特定操作进行了优化,例如收听音乐,流媒体视频或玩游戏。

根据定义,这些是异构核心。但有些比其他的更加异质,并不是所有的都取决于核心。其他重要因素包括它们被放置在哪里,如何利用它们,以及在许多情况下谁在使用它们。通过将核心非常狭窄地匹配到特定的任务,并适当地对它们进行分级,特别是使用为这些任务和核心编写的软件,可以显著提高效率和性能。

“12年前,我们开始使用我们自己的定制指令集开发自己的加密微处理器,”雅典娜集团销售和营销副总裁Pat Rugg说。“他们做乘法,加法和减法,但它们也可以做AES和随机数。它们也比使用单个核心更高的效率超过10倍。“

这也是异构多核cpu背后的策略。手臂的大。小建筑就是一个例子。英特尔该公司还表示,计划推出自己的fpga,利用高速桥接技术连接多核处理器。

Mentor公司的Raghuraman说:“这里的挑战是,要确定应该使用哪个核心并不总是那么容易。”“这是设计方面的妥协。决定何时从大集群转移到小集群并不总是容易的,所以它可能会在延迟需求上失败。”

在业务设置(如基于云的服务器)中,摆锤经常沿相反方向摇摆。对于并行化进程同时使用多个核心的选项,这是均匀的多核最有用的地方,或者异构多核架构发挥作用。根据它们的使用方式,以及数据是否需要保持一致,它们可以独立缓存 - 相干或功能。

总部位于巴黎郊外的处理器公司Kalray正在开发多达288个64位核的芯片,用于数据中心内部的网络和存储,以及自动驾驶汽车。该公司的销售和市场副总裁Jean-Pierre Demange说:“我们关注的是令人尴尬的并行应用,在这种应用中,你不需要在一个处理器和另一个处理器之间共享数据。”“有很多过程彼此之间没有关系。这里真正的关键是你需要吞吐量。”

软件
决定使用多少核心以及如何使用它们是软件的关键因素之一,这是一个关于核心讨论真正令人困惑的领域。商业开发的软件可能能够跨越多个核心跑,但通常与与具有较少核心的处理器一起开发的软件,无论这些核是否是异质的或均匀的,它通常都没有高效。

“软件是定义核心的上限,”Tom De Schutter说,他是虚拟样机产品营销总监Synopsys对此。“所以通过嵌入式视觉,你可以拥有大量的并行性。gpu和fpga需要不同级别的并行。这就是为什么我们看到专用处理器的回归,这是过去几年的一个趋势。很长一段时间以来,我们看到了出售处理器的IP供应商的消亡。现在我们看到了一个相反的趋势,新的应用程序正在复兴特定于应用程序的处理器。”

De Schutter指出了多个核心软件的两个趋势。人们涉及更多对流行处理器的软件标准化,例如Linaro Consortium正在进行ARM核心。第二个是专业化,包括专用算法,以最大限度地减少功耗。“这些是非常特定的软件堆栈,更多的软件开发人员正在高度专业化。”

进入第2部分:设计考虑因素,例如新的架构和内存策略,以及如何构建和测试这些系统。

有关的故事
异构多核头痛
表格的专家:多核和许多核心
多核的疯狂



2的评论

卡尔·史蒂文斯 说:


我认为这一段是关键

这解释了为什么大型、复杂的soc实际上有几十个独立的计算元素。这似乎是违反直觉的,除非你考虑到其中一些核心是其他核心的加速器,而另一些则是孤岛——它们与设备中的任何其他功能只有很少或根本没有互动。通常,将功能与它们自己的高度特定的处理器分离,特别是对于IP子系统,比将这些功能运行在一个中央处理器单元上更简单。虽然这可能会导致涉及系统级一致性的问题,但这是一种更容易设计芯片、更高效的方法
无论共享处理器上有多少个处理器核,只有一个共享内存,内存访问可能会限制速度。(和操作系统?)
分离函数并为指令和数据拥有本地内存意味着实际上可以并行工作。
但是,如果每个处理器需要内存和缓存,它可以快速变得太贵。这就是应该使用小/可扩展可编程互连块的原因。(它适用于并行搜索所以应该为并行功能工作)
必须有一个消息和数据传递的互连,这样数据和消息(请求/响应/数据)才能被传递。
Altera Qsys就是一个可以启动的例子。我没有使用Qsys,但在开发过程中参与了讨论,我相信这个概念。

埃德·斯珀林 说:

Karl,软件和可编程性的好点。留在第二部分。

留下一个回复


(注意:此名称将公开显示)