|
|
1
4
将数据写入RAM是原子的。如果两个CPU同时尝试写入同一位置,内存控制器将决定写入的顺序。当一个CPU正在写入内存时,另一个CPU将根据需要暂停任意多个周期,直到第一次写入完成;然后它将覆盖其值。这就是所谓的 race condition . 小于本机字大小的写入不是原子的——在这种情况下,CPU必须将旧内存值读取到寄存器中,将新字节写入寄存器,然后将新值写入内存。 您永远不应该有依赖于此的代码——如果您有多个CPU试图同时写入同一个内存位置,则说明您做错了什么。 另一个重要考虑是 cache coherency 问题。每个CPU都有自己的缓存。如果一个CPU将数据写入其缓存,那么如果其他CPU想要读取数据,就需要知道对该数据值的更改。 |
|
|
2
2
没有什么能阻止你在低水平上做这件事。但是,RAM写操作是原子的,因此内存控制器将从核心顺序执行两个看起来类似的写操作。 |
|
|
3
0
两个CPU可以同时发出命令,但是RAM控制器不必分别处理它接收到的每个命令吗?所以,可能对CPU来说,它是同时的,但是RAM控制器将决定先处理谁的命令。 |
|
|
4
0
它们不应该这样做,因为如果写入不同的值,结果RAM内容将是未指定的。 |
|
|
5
0
这个本地操作码是否比直接写入RAM更可能写入CPU缓存? |
|
|
6
0
他们可以尝试,但硬件将是最终决定因素。 |