异构多核头痛

使用不同的处理器系统中,功率和性能,但它却使缓存一致性更加困难。

受欢迎程度

缓存一致性变得越来越普及和更多的异构处理器用于设计的数量继续上升。

缓存一致性是缓存的扩展,自1970年代以来已经存在。缓存的概念有着悠久的历史的被利用,加快计算机的主存而不添加昂贵的新组件。缓存一致性的介绍同时约的对称多处理服务器,但是它进入便携式电子设备90海里后,不再可能只是把时钟速度在一个核心。

缓存一致性的概念提供了一个共享地址空间多个处理器,这样所有的处理器之间看到一个统一的视图的内存。问题是当一个处理器想访问同一块内存,要么是在工作,还是在另一个处理器的本地缓存。这意味着缓存本身必须跟踪内存内容的最新副本在哪里。增加额外的缓存层添加复杂性。

大多数工作在缓存一致性涉及均匀核。缓存一致性使用核大小不同的运行速度不同,至少直到最近,大多局限于超级计算机。现在逐渐成为主流设计,它被视为一个挤出额外的性能的方法从多个处理器在一个芯片上。

这是问题开始的地方。保持缓存相干通常是直接当使用相同的核心和为软件提供了最简单的编程范式。但它肯定不是最有效的方式使用内存。事实上,非一致内存体系结构可以更节能和更简单的实现。

“你真的需要考虑如果你需要一致性首先,”迈克汤普森说,高级产品经理在Synopsys对此弧处理器。“共享内存低延迟可能支持你所需要的东西。相干的挑战在于,这是一个缓慢的路径,可以限制应用程序的速度。一致性往往是深。有很多层,你最终得到的路径通过相干。”

仍然有许多情况下,缓存一致性是必要的,特别是当处理跨多个核心。在这种情况下,更节能的使用不同大小的核心,可以针对特定功能。而不是关闭同样核心当他们没有使用,这种方法允许更小、耗电少核继续和用于一些基本的处理而大核心可以专注于计算密集型任务,然后关闭。这是特别重要的实时在线物联网设备,但也更复杂,因为并不是每一个函数需要运行在同一速度或能量水平。

“与异构的缓存一致性你处理多个缓存代理具有不同特点,协议和缓存大小,”库尔特·舒勒说,在Arteris营销副总裁。“有较小的代理缓存目录和较小的工作更好的大集群,需要巨大的目录。问题是你需要的尺寸和配置多个目录和snoop过滤器。也有不同的缓存策略,GPU和CPU的缓存状态识别,和问题管理所有不同的缓存状态。”

最常见的政策或协议是MESI, MSI,莫西人,MESIF MOESI。如果他们不一致,整个设计。

平行的问题
计算机科学摔跤了更好的方法将并行添加到应用程序编程在过去的半个世纪。同时并行工作的数据库和应用程序,比如图形处理,让软件开发人员在并行程序就像试图锤方形钉成一个圆孔。此外,没有自然构造用于大多数编程语言使它更容易使用。它总是在一个演示文稿,但解析计算功能跨多个处理器与人类大脑的工作方式。

并行性的缓存一致性是一个关键组成部分。它允许应用程序可以并行运行更有效地利用缓存内存而不是内存一样单核处理器使用缓存。可以在任何级别的缓存,但通常发生在L1和L2。它也是越来越受欢迎在新的领域,比如汽车系统工程,soc越来越取代电子控制单元和跨多个函数需要保持同步。

”有很多技巧来提高吞吐量,”Mike Gianfagna说eSilicon营销副总裁。“缓存只是其中之一。它基本上是预测,使用比以前更多。但如果有失败,有问题多核的设计。”

Gianfagna说,核心并行性是有效的工作,和缓存一致性出现在几乎每一个讨论物理实现和建筑设计。“但这是一个复杂的系统设计”。

尤其是与异构的缓存一致性。正确联接从设计的角度看,相当简单,有两个相同的核心。与四核变得更加困难,困难又八。但难度上升明显高于那些均匀核异构处理器所取代。完全被烤成芯片架构,妥善tapeout之前验证。

“建立硬件级一致性是一个重要的验证的挑战,随着芯片核心繁殖数量的增加使更大的设备性能,”比尔Neifert说模型技术主管部门。“一致性不是块级问题需要解决在系统级的方式敏感个体整个SoC的IP配置。如果不正确,然后有一个缓存的无效的整个部分的风险。”

Neifert说一个客户为八核的芯片开发软件发现错误,并认为这是一个虚拟样机的问题,因为软件在实际的硅工作正常。结果是未初始化寄存器。在硅它默认状态和虚拟样机是另一个。他们用原型来追踪的可见性。“如果你这样做错了,你可以有功能性问题和性能问题。

尼克•希顿杰出工程师在节奏,同样相信缓存一致性是一个系统级的挑战。“大问题,很多硬件工程师不容易掌握,是你需要的软件的方法,那就是你永远无法详尽涵盖所有可能的排列,”他说。“很长一段时间,2集群是口头禅。现在我们看到12集群。你有打开和关闭状态,增加潜在的bug。最重要的是,不同的客户不同的方法。你可以关闭电源,但仍保持缓存。可能需要更多的权力比把它冲洗它动力。或者你可能想要一个分解反应。这些是建筑和哲学的选择。 There is no right answer.”

什么出错
但是有很多经验丰富的工程团队得到这个错误的。Arvind拉格拉曼,主管工程师在嵌入式系统部门,说导师图形处理处理器运行速度不同仍然是好的,如果他们广播更新其他的核心。

“如果硬件提供了一致性,软件可以利用它,”拉格拉曼说。“但是我们的一个客户来找我们试图找出为什么他们的性能影响。他们的吞吐量是非常糟糕。他们认为已经启用共享内存和事实证明,并非如此。正确设置时可以有巨大的性能收益,就像一个数量级。但一致性可以成就或者毁掉一个设备的性能。当它不存在,实现性能目标是一个问题。”

处理器供应商如手臂和Synopsys对此确实提供了基础设施和工具,以便软件供应商可以利用缓存一致性。手臂的大。异构多核的体系结构是一个典型的例子实现,今天和技术广泛应用于智能手机。但一致性也可以针对一个特定的定制实现,此时它基本上是网格。

“在这一点上,有两类设计,“画Wingard说,首席技术官在超音速。“有些人接受处理器供应商提供的技术,和那些有能力管理一致性在一个更好的方法。所以你从手臂ACE和CHI协议。他们都使用相同的协议栈,它们都是可互操作的。你也可以将相干接近CPU,但这需要更多的工作软件。和人去相干处理的原因之一是减少软件。”

不同的数据
虽然不是所有的数据需要保存当前,一些数据的同步速度比其他数据。数据同步是干净的数据,而对那些不同步的数据是脏的。根据频率脏数据往往就决定了难与其他数据保持一致。

这是特别具有挑战性的,不同大小的芯片。“你是通过建筑边界不同实现的核心,”汤普森说Synopsys对此。“这可能是64位内核在高端连接到32位内核。当您运行越来越多的核心,有限制的最大频率的系统。所以你可能有一个或1.5 ghz双核处理器,但在四到八个核心1 ghz滴。凝聚成为一个瓶颈。更多的处理器在一个SoC,绳子你必须自己吊死。”

在第一个迭代的缓存一致性,大部分芯片制造商将使用芯片制造商提供的协议。但随着越来越多的芯片制造商开始采用缓存一致性,他们正在寻找方法来突出自己。甚至发展他们自己的一些缓存协议、抑扬顿挫的希顿说。

“你需要把你的IP和有信心,当你螺栓加上一个连贯的基础设施,没有休息,”希顿说。“所以你可以使用正式的技术接口和子系统仿真与系统互连贵宾。但是你怎么知道你通过所有的排列吗?这变成了一种用例驱动的验证问题,提出了潜在的错误。”

他说断电跨越一致性,添加另一个角落的情况下,需要检查。“这就是为什么它是如此令人生畏。如果系统有一个失败的你还没有找到pre-tapeout它可能是毁灭性的。”

最重要的是,并不是所有的缓存是相同的。一些L3缓存芯片外,还有一个争论甚至设计需要L4或最后一级缓存。添加附着在某些层面上而不是在其他的水平,一些芯片和芯片外,使结构更加复杂,这就是为什么有实验类型的软件和硬件预取。超音速Wingard说不确定这是否会工作,但他指出,这是不扰民的全部缓存一致性。

积极,缓存一致性得到重新关注整个学术界和半导体行业。也成为一些更多的设计团队需要了解新市场开始使用不同的技术组合,所以将会有更多的经验在处理这些问题。但至少就目前而言,这是提高一些行业老手之间的焦虑水平。



4评论

rhfish 说:

基于我们的研究缓存一致性不规模超出最多几百核由于通信需要维护它。还缓存一致性的必要性似乎来自并行现有代码用于单个或很少的核心。

终极似乎重构问题本身或在某些情况下认识到一些问题只是不并行化。一千核运行MSWORD可能不是一个好主意。

Apache Hadoop MapReduce /,火花另一方面忽略缓存一致性通过重新定义数据管理问题的方式截然不同。

凯文 说:

缓存的问题上升的坏软件方法并行处理(SMP),这是因为它是一个简单的方法当cpu和内存很贵小。保持缓存超过几个cpu是困难的,和它不规模远远超出。

如果你做并行处理GP-GPUs你不会遇到这个问题,因为内存架构完全不同的缓存并不是必需的。然而,编程GP-GPUs不是那么容易。

所以你可以看看各种NoC /缓存工具应用“创可贴”基本的方法论问题,并不是任何形式的治疗。

治疗是搬到一个不同的软件方法(例如CSP -http://usingcsp.com),不共享内存的方式需要缓存一致性,和更适合异构/分布式处理环境。

samlebon23 说:

如果你GP-GPU AMD的方式实现与HSA,然后一致性是必须的。

凯文 说:

你可以做CSP HSA之上,即一致性是一种特殊的软件的需求。

留下一个回复


(注意:这个名字会显示公开)

Baidu