首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在多核系统中访问共享内存

如何在多核系统中访问共享内存
EN

Stack Overflow用户
提问于 2011-09-21 21:32:08
回答 4查看 218关注 0票数 0

在多核系统中,例如2、4、8核,我们通常使用互斥锁和信号量来访问共享内存。然而,我可以预见,这些方法将导致具有许多核心的未来系统的高开销。对于未来的许多核心系统,有没有更好的访问共享内存的替代方法。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-09-22 00:00:26

我不确定你将来想走多远。但从长远来看,我们现在所知的共享内存(任何核心都可以访问的单一地址空间)是不可扩展的。因此,编程模型在某个时候将不得不改变,并使程序员的生活变得更加困难,就像我们进入多核时所做的那样。

但就目前而言(可能再过10年),您可以使用事务性内存和其他硬件/软件技巧。

我之所以说共享内存从长远来看是不可伸缩的,原因很简单,就是物理原因。(类似于单核/高频碰壁)

简而言之,晶体管不能缩小到原子的大小(除非有新技术出现),信号的传播速度也不能超过光速。因此,内存将变得越来越慢(相对于处理器),并且在某些时候,共享内存变得不可行。

我们现在已经可以在多插槽系统上看到NUMA的这种效果。大型超级计算机既不是共享内存,也不是高速缓存一致的。

票数 2
EN

Stack Overflow用户

发布于 2011-09-21 21:35:46

Transactional memory就是这样一种方法。

票数 6
EN

Stack Overflow用户

发布于 2011-09-21 23:28:04

1)只锁定你正在访问的内存部分,而不是整个表!这是在一个大的哈希表的帮助下完成的。桌子越大,锁定机制就越精细。

2)如果可以,只锁定写入,而不是读取(这要求在更新“以前的值”时读取它没有问题,这通常是有效的情况)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7500623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档