为非缓存一致的多核机器编程有什么优势?

时间:2009-12-10 14:11:12

标签: language-agnostic caching multicore

非缓存一致的多核机器的编程有哪些优势? Cache_coherence有许多好处,但是如何利用与此功能相反的优势 - 每个核心的独立缓存。什么编程范例以及这种架构对于缓存一致的架构有什么特别的实际问题呢?

5 个答案:

答案 0 :(得分:5)

你没有这样利用缓存非连贯性。您不能编写依赖于具有不同内存视图的不同内核的代码,因为非连贯的缓存不会保证向不同的内核显示不同的内存。它只保留这样做的权利。

缓存一致性会耗费电路和时间。因此,非连贯的缓存更便宜(并且更冷,可能?)并且更快。内存访问可能在周期中更快,或者可能是相同的最佳速度,但由于缓存同步而导致的停顿更少,尤其是错误共享。

所以,为了利用非连贯性,你不需要做太多额外的事情,这是你不必做的事情,因为你已经放弃了连贯性的缺点 - 你不必重新设计你的并行代码,因为它花费所有的时间来等待来自另一个核心的内存存储的结果。

首先,非连贯缓存架构的缺点似乎是发现自己正在使用由连贯缓存自动提供的其他同步。没有双重检查锁定。然后你意识到,实际上,相干缓存架构为每个内存访问执行此同步(尽管是以超快速的硬件实现形式),并且如果缓存行是脏的则阻塞,你是否需要它。这让我高兴起来: - )

答案 1 :(得分:4)

  

什么编程范例

消息传递。

  

以及这种架构对于缓存一致的架构有什么特别的实际问题?

模式匹配 - 内存的输入块很可能是“只读”:“输出”结果可以很好地放在单独的块中,等待某种“reducer”。

当然,这只是众多我敢肯定的例子。


只是为了说清楚:采用“非缓存一致”架构的主要原因是成本和成本。速度(假设使用这种架构可以更有效地解决手头的问题)。

答案 2 :(得分:2)

您可以获得一些额外的性能,但是您永远不应该依赖具有不同缓存值的每个处理器,因为您永远不知道刷新缓存的时间。

答案 3 :(得分:1)

我不是专家;但我认为除了更简单的实现之外,它没有任何优于缓存一致性架构的优势。当然,这种简单性可以允许在更复杂的相干系统中进行其他优化,在仔细编程时使非相干机器更快。

说,我同意jldupont,消息传递不需要一致性,所以它(几乎)是执行IPC的强制方式。

答案 4 :(得分:1)

您可以将Cell SPE本地内存视为一种缓存。它不是真正的缓存,因为它根本不是自动的,但速度是相同的,并且它不连贯。

它具有很大的速度优势,因为硬件不需要花费任何时间来同步核心之间的缓存行状态。

在Cell中,程序员必须通过编写代码来手动执行同步,以便来回复制SPE本地内存。所以缺点是程序复杂性要大得多。