缓存一致性如何影响力量,表现

第1部分:看看沟通跨多个处理器在一个SoC的影响以及如何更有效。

受欢迎程度

如何管理处理器在一个SoC交谈是一个不小的壮举,因为这些芯片通常包含多个处理单元和缓存。

将为提高性能和这些通信是至关重要的还原能力。但它也需要一个详细的了解数据移动,硬件和软件之间的交互,组件可以或不能支持它。

“缓存一致性是一个经典的权衡硬件的复杂性和软件复杂性,”说,研究员和IP Group的首席技术官节奏。“这是用于环境有多个任务或线程或进程上运行一组处理器,他们需要相互沟通,这意味着数据必须从一个到另一个。”

没有缓存,运动的数据从一个内存到下一个需要显式映射。“你不得不离开了共享数据在一些偏远的记忆中,就像在动态随机存取记忆体片外,然后每个人都遭受了性能由于延迟到共享内存,”再生草解释道。“这些方法的问题是你有一个性能problem-everybody片外去找——或者你有一点软件复杂性的挑战,你必须确定哪些事情需要移动,并显式地将它们从一个本地内存移动到另一个本地内存。”

缓存可能隐藏延迟片外,但它需要刷新缓存或移动数据到另一个缓存。反过来,需要一些复杂的逻辑来跟踪不同的直线在缓存中,如参考是否需要共享。但是当一个处理器发出请求,它可能不得不检查所有其他处理器的缓存,从而大大增加内存。

“每个人的表现遭受一点,并且经常遭受是否实际上是有分享,但它使得软件工作更加容易,”再生草说。“你付出了硬件的代价在复杂性和总线加载和你有好处的一个更简单的编程模型,因为程序员不必说,“这可能是共享的,它需要感动。你只是说一切可能是共享的,它就会神奇地出现在正确的地方作为程序员而言,但是下面的小硬件精灵正在疯狂地洗牌数据在预期可能的共享。这是最基本的权衡在缓存一致性。”

所有这一切变得更复杂的芯片处理器数量的增加,因为每个人都看到的交通的和所有其他的交通系统中。“所以你从两个处理器四个处理器,会有两倍的流量,这意味着每一个处理器的两倍看到发生的两倍,所以有四倍总功的扩大,”他说。“在某种程度上,你不能保持缩放,和使用传统的缓存一致性,因为如果每个人都听别人的,你得到刺耳。”

缓存一致性
这是因地制宜的缓存一致性。CPU和GPU的初步基准一致性显示减少高达90%的管理费用有关内存操作,根据尼尔·帕里斯高级产品经理手臂

硬件缓存一致性可以添加的复杂性知识产权,但也可以为系统提供重要的储蓄力量。“例如,如果数据可用片上,然后我们可以避免外部,昂贵的DRAM访问,”帕里斯说。”,如果我们能避免缓存清理和缓存维护,那么也将节省内存访问和浪费处理器周期,允许我们去做更有用的工作或进入一个低功率状态。最后,优化系统中,如snoop过滤器(有时也称为一个目录),可以帮助节省几百毫瓦的记忆系统权力共享数据和连贯的设备数量的增加。”

不过,缓存可以归结为确保所有处理器或系统中总线主人看到相同的视图的内存。“如果我有一个处理器,是创建一个数据结构,然后将它传递给一个DMA引擎,处理器和DMA(直接存储器存取)必须看到相同的数据,”他说。“如果在CPU和DMA数据缓存读取从外部DDR, DMA会读旧的,过时的数据。有三种方法来保持缓存一致性:禁用缓存,软件一致性或硬件相干。”

软件和硬件一致性是截然不同的。“系统常见的误解,没有“硬件缓存一致性”没有缓存一致性,”帕里斯解释说。“事实上,没有硬件相干软件,如设备驱动程序,必须注意这一点。软件可以实现和调试复杂的缓存一致性。软件的缓存一致性必须仔细的清洁和无效的缓存。缓存清理涉及写作“脏”数据从本地缓存系统内存。和缓存失效之前删除过期或无效的数据从缓存中读取新的数据从系统内存。两个任务需要软件开发人员执行代码在处理器上干净的逐行,或刷新整个缓存。都是昂贵的处理器上的努力和实力”。

软件和硬件一致性是截然不同的。

Ittiam系统,公司专注于多媒体分布,一直使用软件一致性GPU计算应用程序。该公司报告称,30%的开发工作是花在设计、实现和调试复杂的软件一致性。

基于硬件的缓存删除这些软件的挑战。确保所有的硬件处理器内存的看到相同的视图。

相干的进化
计算工作演变成我们现在所称的“任务”,缓存开始使用基于位置的原则,减少平均内存延迟。添加缓存使任务运行更快,使数据更贴近处理单元。

当任务并行,计算组件的子任务组成,这是一块,实际上是做计算是并行运行。随着这个通信组件定义了子任务相互通信。通信是通过某种形式的共享内存层次结构,和一个非相干性的系统,没有硬件缓存一致性,这是通常最主要的系统内存,大卫Kruckemyer说硬件架构师Arteris

“现在你的情况你知道这些缓存,帮助各个子任务运行得更快。你想沟通这些事情,但是一旦你引入缓存,你介绍多个副本。这是硬件高速缓存一致性的概念发挥作用,这样,软件不产生交流通过记忆的点球,”Kruckemyer说。

这个问题有两个方面的沟通。“首先,如果你是生产数据,和消费数据在另一个功能单位,生产数据的成本,”他说。“如果你没有缓存或缓存一致性,推出的数据,它可以读取其他功能部件。有一些共享的内存层次结构。所以生产者/发送方一侧,有一个成本的推动数据共享的内存位置。这种“成本”进入软件的缓存一致性的概念。假设您有一个处理器缓存情况下,和你有一些I / O设备,就是不是cache-coherent-aware坐在系统。当司机的I / O设备对设备需要从内存中读取数据,司机会去清除缓存,推动数据到内存,此时司机会告诉I / O设备是时候去读取数据的内存。这是推动组件。没有成本推动的数据保存到一个位置,可以被另一个线程执行读或子任务。 Once it’s actually out to that shared memory location, then there is the cost of reading that back in by the receiving subtask. What caches do are allow data to be published faster, and read faster. And effectively what cache coherence does is allow you to have all those caches operate in concert. What it is really doing is addressing the communication cost of parallel processing. It’s about reducing the time you spend communicating.”

调整硬件和软件
建立缓存也需要了解硬件和软件之间的关系。

“与多个处理器核SoC的共同主题的今天,SoC设计的挑战之一是本地缓存,处理器核心,我们得到很多不同的各级缓存,“说Kulbhushan卡尔拉,研发经理弧处理器Synopsys对此。“我们如何保持一致性?处理软件也不是一件容易的事,常常杀死性能。”

为了做出正确的选择,SoC架构师需要有一个好的理解的软件体系结构和数据流如何在一个芯片。“如果你知道从一个处理器需要发生数据移动到另一个,除了数据的类型,交易数量,等等,然后缓存可以被编程来适应,”卡尔说。“在应用处理器,通常你会去最大值。但在嵌入空间你可以权衡取决于你的软件知识。这些权衡对一致性的大小有显著影响的单位和你使用的缓存大小。”

可以肯定的是,最大的挑战之一是理解和调整的完整系统,软件和硬件。“都需要共同努力,得到最好的从硬件一致性,“胳膊的帕里斯说。“对GPU计算使用完整一致性我们需要硬件支持以及软件编写使用适当的API,比如OpenCL 2.0。降低风险,许多硬件设计师将寻求许可知识产权与缓存实现,而不是建立自己的缓存一致性协议的复杂性远远大于一个简单AXI总线。许多系统设计师还将检查他们所使用的IP被一起测试。,可能包括一个处理器,GPU和互连都来自一个厂商的。”

最大的挑战之一是将完整的系统。

另一个挑战是如何选择正确的组合,以及是否可以平,放在缓存的最大配置,卡尔拉说。“这需要分析的SoC架构所需的带宽和延迟需求的平衡点。这也是快速模式发挥作用的地方,随着指令集模拟器,其中一些内置的建模。这些工具的建筑师做一些分析。”

卡尔拉警告说,这不是一个简单的分析。“这不是你可以运行在一个核心和模拟几分钟,和解决这个在处理器只解决了一半的问题对于一个SoC。”

SoC架构师在哪里开始?首先,抑扬顿挫的再生草说正在构建的系统的规模必须被理解。“当你有一个非常大型的系统,如果你谈论的是高性能计算会有某种程度的明确的数据移动。然后就是你的界限在哪里的问题。我要明确数据的传播运动一直到个人的核心层面,或者我要停止在数量级上的100核然后附着在某些低水平吗?还是我要下来一个四核集群,在点我切换到一个更加团结的模型呢?”

还有什么问题遗留软件上运行它。“如果程序员写假设缓存一致性,你可能会面临巨大的压力保持编程范式。采取一个尚未开发的程序显式的分享和发现的地方明确共享需求是非常困难的。采用缓存一致性有点单行道从软件的角度来看。如果你已经明确,可以保持明确的,但一旦你去隐式数据共享,即。假设缓存,这是痛苦的另一种方式,”再生草说。

此外,ARM的帕里斯说,这需要从全局的角度来看。“硬件缓存一致性设计需要一个系统的观点。正确实现,硬件缓存一致性可能带来很大的性能和功率效率收益。当然,代价是涉及知识产权的复杂性增加。”

为系统设计师,他们信任是很重要的有足够的验证硬件cache-coherent IP,比如处理器和缓存相干互连。事实上,所有IP组件的系统测试是获得最佳性能的关键。

本系列的第二部分将讨论如何将缓存一致性添加到现有的设计。

额外的资源
介绍缓存一致性
扩展系统一致性
缓存一致性和异构计算

有关的故事
一致性,缓存和可配置性
提高性能的基本原理。
异构多核头痛
使用不同的处理器系统中,功率和性能,但它却使缓存一致性更加困难。



2的评论

rhfish 说:

缓存一致性是伟大的如果你只有几十个核心。一旦你去大,缓存可能是由于维护所需的网络带宽。

以下趋势使未来的缓存主要无关:
1。许多最有趣的所以不需要相干编写的应用程序平台,因为没有处理器间的通信。即:MapReduce (Hadoop)
2。一致性只有重要的是写和读。真正的大系统几乎完全只读除了罕见的更新。

jeffsci 说:

缓存一致性比例是不可能的,只是努力。SGI紫外线支持超过1000英特尔至强处理器核心cache-coherent共享内存的机器。高端8-socket英特尔e7 - 8890使用v4系统192核QPI互连。

内存数据库用户会不同意你的建议,一致性并不重要。

留下一个回复


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

Baidu