從實時應用角度談通信總線仲裁機制和網絡流控
各種總線的仲裁機制
關於各種總線仲裁機制的原理分析,中文互聯網上已經有非常多的原理介紹,這裡引出幾篇相對全面的博客IIC總線仲裁,CAN 總線的全面介紹,SPI總線介紹,其中SPI作為主從設備通信,協議沒有規定總線仲裁方式。
簡而言之,CAN 總線的仲裁是非破壞性仲裁,和以太網類似,屬於 CSMA/CA (載波檢測,多主掌控,衝突避免,Carrier Sense Multiple Access with Collision Avoidance)的通信方式。原理是優先級更高的數據幀,標識符位置具有更多的0位,即顯性位,多個數據幀發出數據進行線『與』操作,保留高優先級的數據幀。這些數據幀之間的時序比較是依靠起始的同步位和仲裁域進行比較的。
實時系統的通信需求
實時系統部分參考 Kopetz, H. (1997) “Real-Time Systems: Design Principles for Distributed Embedded Applications”, Springer International Series in Engineering and Computer Science. ISBN 978-0792398943 下載鏈接:Real-time system principle
- 協議傳輸延遲,包括延遲本身的抖動可預測性和多播下的同時性,到達節點之間的延遲應該是可以預測的
- 系統的可組合性,在這本書中 Kopetz 強調了可組合性作為分佈式實時系統的重要屬性;子系統的可測試性和實時性在系統屬性上應該得到保證;原文定義請看下面引文:
Composability: An architecture is said to be composable with respect to a specified property if the system integration will not invalidate this property once the property has been established at the subsystem level. Examples of such properties are timeliness or testability. In a composable architecture, the system properties follow from the subsystem properties.
- 靈活性,表徵系統定製化的需求
- 錯誤檢測,包括通信信息的錯誤,通信節點的錯誤和端到端的認證(End-to-End Acknowledgment),一個經典的認證事故是三里島核電站事故的 PORV 未關閉,而指示燈顯示已關閉的事件,設計設備可靠性是非常重要的原則。三里島事故設備原因
- 物理層架構設計,總線型設計/環形設計,最小可替換單元物理隔離(以免一部分的損壞導致整體失效)
網絡流控
主要有兩種方式的流控制:設置超時重傳機制的顯式流控和不設置超時重傳,根據優先級發送信息的隱式流控
隱式流控方式可能導致 「event shower」 現象,即同時出現大量event,導致數據來不及被處理,系統反應較慢等現象。
Event Trigger & Time Trigger System
總體來看,在實時通信系統中有相當多的權衡因素和設計思考,書中介紹了上個世紀比較流行的網絡結構和幾種總線之間的比較,見下圖:
其中,CAN 作為 Event Triggered Protocol ,完全具有事件觸髮式協議的特性。總線之間的trade-off 更多體現在時間觸發和事件觸發的區別上,即下圖所示:
在通信信道容量較低並且通信需求量高的情況下,Time Triggered System 可以更好地滿足通信需求。
總結
為了保證系統實時性,需要對軟硬件通信協議進行設計使得有用信息快速被傳達到需要的節點。如協議中的仲裁方式和流控機制,使得系統達到較高的通信效率。在分佈式的通信架構中,應當在設計之初考慮系統延時、可靠性與容錯機制、信息處理效率等因素,保證系統安全可靠。