第四章 多處理核心系統架構
4.3. Data Coherence Controller
Data Coherence Controller 對於維護各處理核心所需運算的資料主要有兩個功能(如 圖 37 所示)。其一是在於當 JAIP 處理核心要對 Heap 上的資料作修改時,除了更新自己 的 Object Heap Cache 上的資料外,還須將修改的位址與資料傳送到 Data Coherence
48
Controller,並由此元件負責通知其他 JAIP 處理核心所修改的資訊,維持每個 JAIP 處理 核心上的 Object Heap Cache 內所保留的資料一致性;另一作用在於支援執行緒的同步機 制,當有處理器上的執行緒要呼叫同步方法或要進入關鍵區域(Critical Sections)時,則 必須將所做為 Object Lock 的 object reference 傳到 Data Coherence Controller 來判斷是否 能執行這個同步的運作。而此功能並非 JAIP 處理核心的一部分而是建立在一個獨立的 IP 內。針對此兩個運作功能,將於以下兩小節來說明設計架構。
Data Coherence Controller
heap_modify_addr Coherence Controller
Synchronized Manager Synchronized Table
heap_modify_data
Waiting Table
圖 37. Data Coherence Controller
4.3.1. Heap Cache Coherence 之機制
JAIP 0
Java Stack Method Cache
Heap Cache
JAIP 1
Java Stack Method Cache
Heap Cache
JAIP 3
Java Stack Method Cache
Heap Cache
JAIP 2
Java Stack Method Cache
Heap Cache
(1) Notify DCC and send it the modify infomation
(2) Notify the other JAIPs of be modified heap data.
Multi-core Coordinator
JAIP Manager Data Coherence
Controller
圖 38. Heap Cache Coherence 運作機制
49
在多處理核心的環境下,我們將 Object Heap Space 放置於 DDR-SDRAM 上,
並且在每個 JAIP 處理核心上加入 Object Heap Cache 的機制。由於 Heap 內的資料是屬 於所有執行緒所共享,因此每個 JAIP 處理核心皆可能會修改 Heap 上的值,則可能會造 成各 JAIP 處理核心上 Heap Cache 的資料不一致的現象。
為了解決 Object Heap Space 資料會因為 JAIP 處理核心只修改自己所快取的內容所 造成其他處理核心上資料不一致的問題。我們在系統中加入支援維持各 JAIP 處理核心 資料一致性的機制。圖 38.為例,當編號 0 的 JAIP 處理核心對 Heap 的資料作修改時,
會藉由 4.2 節所敘述的 Object Heap Cache 機制,會先對在處理核心上的 Cache 做修改,
並且將所修改 Heap 資料的相關資訊(包含所修改的 Heap 位址與資料)傳到 Data
Coherence Controller 中。而當 Data Coherence Controller 收到來自 JAIP 處理核心的修改 要求後,會將此更新 Heap 的資訊轉送到其他的 JAIP 處理核心。各 JAIP 處理核心收到 更新的資訊後,會檢查此資料是否存放於 Object Heap Cache 之中,若已快取此筆資料則 更新。而圖 39.則列出當有某一 JAIP 處理核心對 Object Heap 資料做修改時,為了維持 其他處理核心上所已經快取到的資料一致性,而透過 Data Coherence Controller 來支援的 流程。然而藉由這個機制,使得各個 JAIP 處理核心上的 Object Heap Cache 所快取的資 料能夠保持相同。
Modify Heap Data
Send Info. to DCC
Get Modify Info.
Modify Heap Space
Send Info. to the other JAIPs
Done
JAIP
Coherence Controller
圖 39. Heap Cache Coherence 機制流程圖
50
4.3.2. Java 同步機制之支援
在 3.1.6 節提到,在 Java 程式語言中程式撰寫者可以對某些資料的讀寫或方法的呼 叫,強制規定只有一個執行緒能運作。因此提供了 synchronized 此關鍵字來修飾方法或 定義一個關鍵區域(Critical Sections)。而當要程式執行中要啟動此同步機制時,會使用 一個 object reference 來作為 Object Lock。當有其他執行緒要啟動同步機制但所使用的 object reference 已被某一執行緒作為同步的 Object Lock 時,此執行緒必須等到它離開由 此 reference 所鎖住的同步機制後,才能再開始執行。而 Java 同步機制是用於當某些資 料可能會由多個執行緒皆對它做出修改而造成的競爭條件(Race Condition)問題,規定一 次只有一組執行緒能進入由同一個 Object Lock 所鎖住的同步機制,使得在機制內的資 料只會被單一執行緒所修改。
JAIP 0
Java Stack Method Cache
Heap Cache
System Bus JAIP 1
Java Stack Method Cache
Heap Cache
JAIP 3
Java Stack Method Cache
Heap Cache
RISC-core
MPMC JAIP 2
Java Stack Method Cache
Heap Cache
DDR-SDRAM
(1) Send it the object lock
(2)If the lock is free, DCC returns a ack.
(3)When JAIP gets ack, it can continue executing
Multi-core Coordinator
JAIP Manager Data Coherence
Controller
圖 40. 同步機制運作流程
為了支援同步機制,我們在 Data Coherence Controller 中加入了 Synchronized Manager,負責來管理處理器間的執行同步機制。並在此單元中將由執行緒所提出 Object Lock 紀錄為 Synchronized Table。以圖 40.為例,當有執行緒想要啟動同步機制時,會先 暫停住本身執行緒的執行,並將要啟動同步所做為 Object Lock 的 object reference 送到 Data Coherence Controller。而當 Data Coherence Controller 收到要求後,會在 Synchronized
51
Table 中檢查此 Object Lock 是否已被紀錄。若尚未被記錄則會直接回傳一個回覆給要求 的 JAIP 處理核心,而當 JAIP 處理核心收到回覆即代表它能執行此次的同步機制,因而 可以繼續往下執行程式。然而若此 Object Lock 已被紀錄於 Synchronized Table 之中,代 表已經有其他執行緒已經利用此 Object Lock 啟動同步機制,因此 Synchronized Manager 只會將此次的要求紀錄於 Waiting Table 之中,而並不會回覆給 JAIP 處理核心。等待有 執行緒結束同步機制而釋放這個 Object Lock,才會通知可啟動同步機制。
圖 41.為 Synchronized Manager Unit 在執行時有限狀態機的變化,一開始皆處於 Idle 狀態,當有執行緒要啟動同步機制時,會進到 Analysis 來利用所提供的 Object Lock 來 查找 Synchronized Table,若已被紀錄則將此次要求的資訊(JAIP 處理核心的編號與所提 出的 Object Lock 存放於 Waiting Table,並直接回到 Idle 狀態;若尚未被記錄,則會進 入 UpdataTable 狀態來將此 Object Lock 放置到 Synchronized Table 之中,並產生一個回 覆給提出要求的 JAIP 處理核心使其能夠繼續執行。而當有執行緒要解除同步機制時,
會進入 FreeLock 狀態來找尋 Waiting Table 中是否有正在等待此 Object Lock 的 JAIP 處 理核心。若無,在 UpdataTable 狀態時,僅會將此 Object Lock 從 Synchronized Table 中 移除;若有,則保留此紀錄於 Synchronized Table 並且根據 Waiting Table 所記錄的處理 器編號回傳一個回覆給 JAIP 處理核心,表示可開始啟動同步機制並繼續執行。然而要 解除同步機制的 JAIP 處理核心只需要將同步相關資訊傳到 Data Coherence Controller 即 可繼續執行程式,不需要等待任何回覆。
Idle
Free Lock Analysis Updata
Table
圖 41. Synchronized Manager 有限狀態機
52