language-agnostic - 非缓存一致性多核机器编程有什么优势?

标签 language-agnostic caching multicore

非缓存一致性多核机器编程有什么优势? Cache_coherence有很多好处,但是如何利用与此功能相反的功能 - 每个内核的独立缓存。什么样的编程范式以及对于哪些特定的实际问题,这样的架构比缓存一致的架构更有利?

最佳答案

您不会因此利用缓存非一致性。您不能编写依赖于具有不同内存 View 的不同内核的代码,因为非一致缓存不能保证向不同内核显示不同的内存。它只是保留这样做的权利。

缓存一致性会消耗电路和时间。因此,非一致性缓存更便宜(也许更酷?),速度也更快。内存访问可能在周期内更快,或者可能是相同的最佳情况速度,但由于缓存同步和特别是错误共享而导致的停顿更少。

因此,并不是为了利用非一致性而做的额外的事情,而是因为已经消除了一致性的缺点而不必做的事情 - 您不必重新设计并行代码,因为它是花所有的时间坐在那里等待来自另一个内核的内存存储的结果。

非一致性缓存架构的缺点起初似乎是发现自己使用了由一致性缓存自动提供的额外同步。没有双重检查锁定为您服务。然后您意识到,实际上,一致缓存架构会为每次内存访问执行这种同步(尽管以超快的硬件实现形式),如果缓存行脏了,无论您是否需要,都会阻塞。这让我高兴起来:-)

关于language-agnostic - 非缓存一致性多核机器编程有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1881230/

相关文章:

asp.net - 如何防止在 Internet Explorer 中进行缓存?

multicore - ProfileOptimization 真的有效吗?

android - 为 Android 编码时,有没有办法分别获取设备每个内核的 CPU 使用率?

opengl - 如何修复以与 VSync 不同的帧速率运行的游戏循环?

css - apache2 缓存 css

javascript - 如果我存储缓存并且已达到缓存限制,会发生什么情况?

c - rpmsg-lite 协议(protocol)的 Linux 用户空间示例

pagination - 无限滚动页面的Redis分页策略

language-agnostic - 检查文件是否相同的最快方法是什么?

arrays - 如何掌握数组的概念?