![]() |
1
7
如果两个(或多个)CPU/核心想要访问同一个资源,则有一些规则决定谁获胜。通常,一个CPU稍后会尝试访问它,因此它必须等待。如果两个CPU实际上希望在完全相同的时间访问同一个资源,那么规则将确保一个CPU获胜。今天,规则变得非常复杂,以确保一个CPU不能占用一个资源(耗尽另一个)。 缓存是其中一个非常复杂的部分;每个CPU都会将真实RAM的一部分复制到其缓存中。这意味着,如果CPU 1的缓存中有地址X,而CPU 2读取或写入该地址,则可能发生有趣的事情。解决这个问题的技术是地址嗅探(CPU 1注意到哪个地址CPU 2想要查看并发送一个信号告诉它这个地址的内容现在无效)、RAM分段(CPU实际上看不到大部分RAM,所以在实际发生这个问题的地方只有很小的重叠)或一个特殊的缓存总线W。在这里,CPU的缓存互相通信(“我刚刚读取这个地址”,“我正在将x写入那个地址”)。 这是一个非常复杂的地区,每天都变得更加复杂。据我们所知,这是保持 Moore's Law 再过几年。 有关详细信息,请参阅 Wikipedia article . |
![]() |
drainzerrr · Go锁定结构的一部分 7 年前 |
![]() |
Azim · 使用java 8并行处理图像 7 年前 |
|
user8005765 · Karatsuba-多项式与CUDA相乘 7 年前 |
![]() |
Adi · 并行读取大型XSLT字符串 7 年前 |
![]() |
A.J · 同时运行两个python文件 7 年前 |
![]() |
Kristofer · 当索引设置为私有时,如何确保访问缓冲区是私有的 7 年前 |