一、KPN模型特性
1、一種並行程序設計語言
2、進程通過一個擁有無限容量的單向First-In-First-Out(FIFO)通道,以點對點的方式進行通信
3、阻塞式讀取:當通道爲空時,寫操作將會被阻塞直到有數據被寫入通道
4、非阻塞式寫入:進程往通道中寫入數據的操作,永遠不會被阻止
5、圖形化表示如下,如圖所示,節點表示進程,邊表示單向通道,對於一個節點來說,入邊表示輸入,出邊表示輸出
二、KPN的假設條件及約束
1、進程之間只能通過FIFO通道進行通信
2、通道中傳輸信息的時間應當是不可預測但有限的
3、在任何時刻,進程總在計算或等待一個輸入通道的信息
注意:沒有兩個進程可以往同一個通道中發送信息
4、每個進程都跟隨着一個連續的程序
三、KPN性質
1、單調性(monotonicity)
如圖所示,不管輸入X是什麼,它都是之前的輸出Y'的子集。(每次輸入的信息實際上是通過輸出得到的)
解析如下:
▶ 一個進程接收到的輸入越多會導致其輸出也越多
▶ 一個進程不需要接收到所有的輸入纔開始計算:未來的輸入只與未來的輸出相關
2、確定性(determinacy)
一個進程網絡是確定的:當進程的所有通道的歷史讀寫序列只與輸入的歷史序列相關
在一個確定的進程網絡中函數的行爲與時間無關
一個由單調進程組成的KPN是確定的
▶ 增加不確定性(非單調行爲)
① 允許進程非阻塞式讀取
② 允許兩個甚至更多進程在同一個通道中進行讀寫操作
③ 允許進程共享變量
3、同步數據流(SDF,Synchronous Data Flow)
▶ KPNs的約束
① 允許編譯時調度
② 每個進程在每次觸發時進行固定數目的讀/寫(事先確定)
▶ 調度兩步走
① 爲進程建立相應的執行率(求解線性方程組)
② 確定週期性的調度
這種調度可以在緩存中沒有數據的時候進行。
▶ 有n個進程的SDF的拓撲矩陣,以下爲確定SDF是否相容的三條法則
① 連通的SDF有周期性的調度,當且僅當M滿足r = n-1(Mq = 0有一個唯一最小整數解)
② 對一個不相容的SDF,M滿足r = n(Mq = 0 只有全零解)
③ 對一個不連通的SDF,M滿足r < n-1(Mq = 0有兩個或者更高維度的解)
▶ 示例1
上假如有數字,代表初始化的記號(token)/延遲的數量,沒有默認爲1
n =3, rank(M)=3,有r=n
不相容SDF:此時不存在可能的策略去運行,因爲不允許無限累積
注:
① r爲矩陣的秩,也就是列空間的維數,將方程進行初等行變換,最終剩下的主元數目即爲矩陣的秩
② 求最小正整數解:將方程進行初等行變換後用一個一個變量,然後令最小的那個爲1,最後再看看有沒有非整數的,將所有變量擴大K倍變成整數,最後得到的最小正整數解就是相對運行率。
▶ 示例2
四、參考
• 嵌入式系統之KPN網絡圖(Kahn Process Networks) http://blog.csdn.net/c602273091/article/details/40871903
• MPSoC平臺KPNs(Kahn Process Networks)建模