2007年7月20日 星期五

FPPA 副程式區城變數的問題(正解…?)

延續上一次的架構…
多加了一個鎖,來讓等待中的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

沒有留言:

更高效處理 micro second 的方式

更高效處理 micro second 的方式…  以 STM32 為例… __IO unsigned long sys_tick = 0; void SysTick_Handler(void) {     HAL_IncTick();     sys_tick += (SysTi...