天天看點

《資訊實體融合系統(CPS)設計、模組化與仿真——基于 Ptolemy II 平台》——1.8 域和訓示器概述

本節書摘來自華章出版社《資訊實體融合系統(cps)設計、模組化與仿真——基于 ptolemy ii 平台》一書中的第1章,第1.8節,作者:[美]愛德華·阿什福德·李(edward ashford lee),更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視

在ptolemy ii中,計算模型的實作稱為域。本節将簡要描述ptolemy ii中實作的域,但沒有涵蓋所有的域。本節主要目的是展示計算模型的多樣性。這些域以及其他域将在接下來的章節中得到更詳細的介紹。圖1-6總結了這些域之間的關系。

這裡所描述的所有域都具有确定性,除非模型明确地說明具有非确定性行為。即如果需要不确定性,則要在模型中明确地加入不确定性;是以不确定性不會因為模型架構的弱語義而意外發生。如果符合以下條件,則可稱一個域是确定性的:即角色之間發送的信号,包括消息所傳遞的資料值、消息順序和時間戳,不受排程決策的影響(盡管模型有并發性)。保證确定性在并發計算模型中相當困難,并且提供合理的不确定機制也是相當具有挑戰性的。目标是保證當一個模型包含不确定性的行為時,它應被模型的建立者明确地描述;不确定性行為不會意外出現,并且出現也不會讓使用者感到意外。

資料流(dataflow)。ptolemy ii包含多個資料流域,将在第3章中描述。資料流域中角色的執行包含一系列點火(firing)行為,每一次點火行為都是對輸入資料有效性的反應。一次點火行為就是一次(很小的)計算,消耗輸入資料,産生輸出資料。

同步資料流域(synchronous dataflow,sdf)(lee and messerschmitt,1987b)是很簡單的,也幾乎是使用最多的域。在同步資料流域中,當一個角色執行時,它消耗固定數量的輸入資料,并對每一個輸出端口産生固定數量的輸出資料。同步資料流域的一個好處(如第3章中描述的那樣)就是可以靜态地檢查潛在的死鎖和有界性,并且可以靜态地進行排程的計算(包括并行排程)。這個域中的通信由固定容量的先進先出(first in first out,fifo)隊列實作,并且元件的執行順序被靜态地排程。盡管同步資料流可以是計時或不計時的,但通常它是不計時的,如圖1-6所示。

相反,動态資料流(dynamic dataflow,ddf)域比同步資料流域更為靈活,它進行線上的排程政策計算。在動态資料流中,fifo隊列的容量是無界限的。當角色之間的通信方式取決于兩者之間傳遞的資料時,動态資料流是十分有用的。

資料流模型對于表示流系統(streaming system)是十分理想的,因為流系統中元件間資料值順序的流動也是相對有規律的。比如說,應用到信号處理系統中是特别适合的(如音頻和視訊系統)。

程序網絡。在程序網絡(process network,pn)域中,如第4章描述的那樣,角色表示那些通過fifo隊列(概念上無限容量的)進行通信的并發程序(lee and parks,1995)。寫入隊列通常是立即成功的,但從空隊列裡讀取内容會導緻讀取阻塞。簡單的阻塞讀取和非阻塞寫入政策保證了模型的确定性(kahn and macqueen,1977)。然而,本文将模型進行了擴充以支援特定形式的不确定性。每個角色都在自己的java線程上執行,是以對于多核機器,它們可以并行執行。程序網絡域實作了資料流的一般化,該域是不計時的。角色表現為連續的執行過程以替代離散的點火(lee and matsikoudis,2009)。

程序網絡域很适合表示通過消息傳遞進行通信的并發過程。最終,消息将以發送的順序被傳遞。消息的傳遞被假定為可靠的,是以發送者不用期待或接收任何确認消息。這種域為“無回報通信”(sendand forget)。

程序網絡也提供相對簡單的方法來實作模型的并行執行。每個角色在自己的線程中執行,大多數現代的作業系統都能自動将線程映射到可用的核上。注意,如果角色的構造相對精細,也就是說它們對每次通信執行很少的計算,則多線程和内部線程通信的開銷可能會掩蓋并行執行的性能優勢。這樣,模組化者隻能在粗粒度模型中考慮并行性能優勢。

會話。會話域(rendezvous domain)在第4章詳述,它和程序網絡相似,因為角色都表示并發程序。但是,與程序網絡的“無回報通信”不同,在會話域中,角色通過原子瞬時值資料交換進行通信。當一個角色向另一個角色發送消息時,在接收者準備接收之前,發送者會阻塞發送。相似地,若一個角色試圖讀取輸入資料,當發送者準備發送之前,接收者會阻塞接收。這樣的結果就是,首先到達會話點的過程會暫停以等待另一個過程也到達會話點(hoare,1978)。在這個域中可以建立多路會話程序,在多個程序都到達會話點之前,任何程序都不能繼續執行。與程序網絡一樣,這個域也是不計時的,它支援明确的不确定性,并且可以透明地利用多核機器。

會話域在解決異步資源競争問題時十分有用,這種情況是指單一資源被多個異步過程共享的情況。

同步響應。同步響應(synchronous-reactive,sr)域在第5章詳述,它基于同步語言的語義(benveniste和berry,1991;halb-wachs et al.,1991;edwards and lee,2003a)。同步語言的準則很簡單,盡管結果意義重大。它的執行遵循全局時鐘的節拍(tick)。每個節拍上,每個變量(在ptolemy ii中圖示為連接配接塊與塊之間的線)可能會得到一個值,也可能不會。它的值(或缺失)是由一個其輸出端口連接配接線上上的角色賦給的。這個角色實作了這樣的功能:将它輸入端口的值映射到輸出端口(在每個節拍上,功能有所變化)。比如,在圖1-7中,在一個特定節拍上的變量x和y有如下關聯:

x = f (y),且y = g (x)

《資訊實體融合系統(CPS)設計、模組化與仿真——基于 Ptolemy II 平台》——1.8 域和訓示器概述

域中訓示器的任務是在每個時鐘節拍上尋找滿足上式的x和y的值。這種解法稱為定點求解(fixed point)。盡管同步響應模型是預設為不計時的,但是當節拍之間有固定時間間隔時,它可以是計時的。

同步響應域和資料流域、程序網絡域是相似的,因為角色彼此之間發送資料流。但不同的是,同步響應域中的流是同步的;在時鐘的一個節拍上,每一個通信鍊路要麼有一個消息,要麼消息明确是缺失的。相比之下,資料流模型更具異步性;一個消息是“缺失的”,僅僅是因為發生排程意外而導緻其未到達。為了阻止不确定性,程序網絡和資料流都沒有“缺失的”輸入這一語義概念。輸入總是有消息的(或者将有消息的,這種情況下角色被要求等待消息到來)。

同步響應很适合更複雜的控制流,即一個角色可以依據一個消息是否出現而采取不同動作。通過同步動作,域可以掌控那些不含非确定性的場景。同步響應相比資料流和程序網絡較少出現,因為每個時鐘節拍必須緊密連貫。是以,它較難并行執行。

有限狀态機。有限狀态機(finite-state machine,fsm)域在第6章詳述,它是本書讨論的各種域中唯一一個非并發性的域。這個域中的元件不是角色,而是狀态,并且元件之間的聯系不表示通信鍊路,而是狀态之間的轉移。轉移通過檢測器(guard)來确定狀态轉移在何時發生。

有限狀态機可以用來定義其他域中使用的角色的行為。角色有很多輸入和輸出。當角色執行時,有限狀态機讀入輸入,評估檢測器得到結果以決定執行哪種轉移(transition),然後按照選擇的轉移指定的值進行輸出。有限狀态機也可以有局部變量,它們的值可以被轉移修改(提供了一種稱為擴充狀态機的計算模型)。

有限狀态機也可以用來建立一大類稱為模态模型(modal model)的層次模型,這在第8章中讨論。在模态模型中,有限狀态機的模型包含子模型,這些子模型處理輸入且産生輸出。有限狀态機的每一個狀态表示一種執行模式,且模式細化(mode refinement)定義了該模式下的行為。模式細化是一個子模型,有自己的訓示器,且僅當有限狀态機在相應狀态時它才是活動的。當一個子模型不在活動狀态時,它的本地時間不再推進,如1.7.1節解釋的那樣。

離散事件。在離散事件(discrete event,de)域中,如第7章所述,角色通過位于同一時間軸的事件進行通信。每個事件都有一個值和時間戳,并且角色對事件的處理是按照時間序的。由角色産生的輸出事件在時間上不得早于被消耗的輸入事件。也就是說,離散事件域中角色之間是因果聯系的。

該模型按照一個全局事件隊列進行執行。當一個角色産生一個輸出事件時,該事件根據其時間戳被插入隊列。在離散事件域模型的每次疊代中,最小時間戳的事件從全局事件隊列中被删除,且它們的目标角色被點火。離散事件域支援同時性(simultaneous)事件。當一個角色被點火時,訓示器就計算一個定點,該過程與同步響應類似(lee and zheng,2007)。離散事件域和衆所周知的離散事件系統規範(discrete event system speci?cation,edvs)的形式體系緊密相關(zeigler et al.,2000),edvs廣泛應用于大型複雜系統的仿真。ptolemy ii多樣的de(discrete event)語義由lee(1999)給出。

de很适合對時間相關的複雜系統進行模組化,例如網絡系統、數字硬體電路、金融系統、行政管理系統等。另外,第10章還将介紹de如何被擴充應用到多樣時間(mutiform time)系統中。

連續時間。連續時間(continuous time)域(lee and zheng,2005)(在第9章詳述)對常微分方程(ordinary differential equation,ode)進行模組化,同時它也支援離散事件。表示積分器(integrator)的特殊角色被連接配接在回報回路中,用以進行常微分方程的表示。域的每個連接配接(connection)代表一個連續時間函數,元件表示函數之間的關系。

連續模型使用數值方法計算常微分方程的解。與同步響應和離散事件一樣,在每一個瞬間,訓示器為所有信号值計算一個固定點(lee and zheng,2007)。在每次疊代中,時間以一定增量向前推進,這個增量取決于ode求解器。為了推進時間,訓示器在求解器的幫助下進行時間戳的選擇,然後通過該時間步長進行角色的推測執行。如果時間步長足夠小(比如一些關鍵事件:層間交叉,模式改變,等行足夠點火次數和疊代次數計算等),那麼訓示器送出時間增量。

連續訓示器與ptolemy ii中所有的計時域都可互動。它與有限狀态機結合産生了一種特定的模态模型,叫作混合系統(hybrid system)(lee and zheng,2005;lee,2009)。将它與同步響應域或離散事件域結合同樣比較有用。

ptera。ptera域在第11章詳述,實作了事件圖(event graph)的一個變體。在ptera中,元件不是角色。這裡的元件是事件,元件之間的關系決定事件之間的關系。一個ptera模型展示系統中的一個事件是怎麼觸發另一些事件的。ptera是一個計時模型,與有限狀态機一樣,它可用于定義另一個域的角色行為。另外,事件是可以組合的,因為它們有一些與它們相關的動作,這些動作本身就是被一個子模型定義的,而這個子模型使用了另一個域描述。ptera在描述計時行為時很有用,這些行為中,輸入時間有可能觸發一系列反應。

繼續閱讀