多加了一個鎖,來讓等待中的cpu同步進入要求 share 變數的階段…
現在手邊 ICE 正在跑 8 個 CPU 同步在執行同一段 delay 副程式,執行次數可以說完全一樣。
也試過 8 個 CPU 不同步( 幾乎隨機 ),跑同一段 delay 程式,沒有明顯互相鎖死的情況發生,也確實都有在跑。
再來, 8 個 cpu 不同步,也不同速( mode 0 ),跑同一段 delay 程式,沒有明顯互相鎖死的情況發生,也確實都有在跑。
嘿~看來真的可行~
一個 share 變數( 或一段程式 ) exclusive 執行。
意即~一段程式可以( 安全 )共享執行。
重點在這兩行
inc share_token;
dzsn share_token;
8核同時執行,但是share_token狀態唯一的特性使得只有一個核心得到0的結果。
WaitToken macro // min cost 8 i-cycle
wait0 wait_look;
inc share_token;
dzsn share_token;
goto $-3;
inc share_token;
set1 wait_look;
endm
FreeToken macro
dec share_token;
set0 wait_look;
endm
沒有留言:
張貼留言