- 論壇徽章:
- 0
|
smp比如8核,比如我現(xiàn)在有一個(gè)數(shù)組,a[8] = {0}; 地址是0xd000000;這樣a[0] ~ a[7]都是在同一個(gè)cache line中的, 并且每個(gè)cpu對(duì)應(yīng)的cacheline都是share狀態(tài)的。那么考慮下面并發(fā)場(chǎng)景:
cpu0 寫 a[0] = 0;
cpu1 寫 a[1] = 1;
cpu2 寫 a[2] = 2;
...
cpu7 寫 a[7] = 7;
結(jié)果是:
cpu0, 把cache line寫成了0,。。。, 然后發(fā)出一個(gè)inv 廣播到其他cpu
cpu1, 把cache line寫成了。1.。。, 然后發(fā)出一個(gè)inv 廣播到其他cpu
。。。
問題是:
1. 假設(shè)同時(shí)發(fā)生的,最終cache line的值是多少?
2. 某個(gè)cpu 寫完自己的cache line,發(fā)出去一個(gè)inv 廣播,然后又收到一個(gè)inv 事件,那么這個(gè)事件如何處理呢?
3. 這種代碼是不是無法保證cache line等于 0,1,2,3,4,5,6,7
|
|