片上嵌入式多處理器的一致性機制設計
如果在向前移動(dòng)的過(guò)程中出現停頓,分布式系統將出現活鎖現象。在處理器上,這將在沒(méi)有向前發(fā)展的“載入/存儲”的程序計數器中得到反映。當多個(gè)緩存試圖獲得緩存線(xiàn)的所有權失敗時(shí),這種情況常常發(fā)生。如果在該系統中適當地建立一個(gè)全局串行順序,則每個(gè)代理程序就可以按照這個(gè)順序來(lái)處理請求。必須按照公平方式來(lái)建立全局串行順序,并且公平地將各種資源(端口、總線(xiàn)、緩沖器)分配給多線(xiàn)程/多處理器。
另一個(gè)與防止活鎖有關(guān)的問(wèn)題是流量控制。系統的流量控制將限制資源的分配。以ad-hoc方式實(shí)現的流量控制可能導致活鎖,而常見(jiàn)的一種情況就是在響應請求的同時(shí),過(guò)度地使用重試或否定應答(NACK)。
其它設計考慮
除了死鎖和活鎖之外,設計工程師還應該考慮以下的問(wèn)題:
緩存層次和DMA:當事務(wù)穿過(guò)緩存層次時(shí)將產(chǎn)生死鎖問(wèn)題。通常,我們可以采納在更廣泛的協(xié)議中使用的相同機制,以便在單獨的(虛擬或真實(shí))通道/FIFO中保留請求和回復。
另一個(gè)問(wèn)題是確定增強一致性的緩存級別(L1緩存、L2緩存或L3緩存),以及I/O應在哪個(gè)位置上從一致性域進(jìn)入和提取緩存線(xiàn)。通常情況下,包含(inclusion)問(wèn)題的相關(guān)解決機在很大程度上依賴(lài)于具體的應用或系統。通過(guò)在一致性系統的事務(wù)集合包含線(xiàn)索(hint),可一致性系統中使用線(xiàn)索來(lái)進(jìn)行預取和數據放置。一個(gè)顯而易見(jiàn)的例子就是路由。在路由系統中,需要把外來(lái)IP包的頭文件與一個(gè)表進(jìn)行匹配,以該IP包的目標緩沖器/接口。通過(guò)利用線(xiàn)索對事務(wù)進(jìn)行分類(lèi)(如讀出/寫(xiě)入、命中/不命中策略),可以將這些頭文件放在靠近較低緩存級別的位置。
同步和屏障(barrier)操作:許多ISA提供各種必須映射到一致性系統的原子語(yǔ)義(atomic primitive)。較弱的內存系統要求一種被稱(chēng)為屏障的安全網(wǎng)落,它可以在發(fā)送敏感代碼序列期間,強迫發(fā)生某種行為(通常在處理器或線(xiàn)程發(fā)出的“存儲”和“載入”操作之間)。這種屏障一般通過(guò)插入ISA支持的專(zhuān)用屏障指令來(lái)實(shí)現。一致性系統可能需要通過(guò)動(dòng)態(tài)地停滯某些事務(wù)來(lái)對這些操作作出響應,以支持這些行為。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論