• 沒有找到結果。

Object Heap Cache

在文檔中 多執行緒Java處理器設計 (頁 53-56)

第四章 多處理核心系統架構

4.2. Object Heap Cache

Java 應用程式在執行時,所使用的 Object Data 皆是存放於 Heap space 上。如本章 一開頭的描述,在多處理核心環境下,我們必須保證 heap cache 在各核心之間的資料 內容是一致的,也就是要解決 cache coherence 的問題。簡單地說,當各處理核心一旦 將 Heap space 上的資料快取起來,往後的執行只要有存放於處理核心上 Object Heap Cache 上的資料就會直接存取,因此可能會造成處理核心間的資料不一致。因此我們才 在 JAIP 多處理核心的設計架構上加入 Data Coherence Controller 元件來協助處理資料的 一致性,而此元件會於 4.3 節說明。

45

在 JAIP 處裡核心中,heap cache 機制是利用兩組由暫存器集合仿照 On-Chip Block RAM 方法組成 2-way set associative cache(如圖 34 所示)。利用原先對外存取的 32 bits 位址最低的 25 bits 資料作為查找 Heap Cache 的資訊。而一次所快取的資料區塊(data block)為 8 筆資料,且兩組暫存器集合所形成的 Cache 個別最多都能存放 64 個資料區 塊。因此將存取的位址分別區分為 14 bits 的 Tag、6 bits 的 Index 以及 5 bits 的 Offset。

並在 Cache 中對於每個資料區塊加入一筆資訊。是為 valid bit,用以判斷 Cache 中此資 料區塊的欄位是否已有快取資料存放。

Tag Index Offset

11 5 0

25

V Data Block

=

=

Tag V Tag Data Block

Cache Data

Cache Hit

圖 34. Object Heap Cache

圖 35.所敘述的是當 JAIP 在執行程式需要存取 Heap 資料時,對處理核心上的 Object Heap Cache 發出存取需求後,Cache Controller 的操作流程。而對於 Object Heap Cache 的操作可分為讀寫兩類,並以所存取的 Heap 資料是否已快取到 Object Heap Cache 又可 分為兩類,總共會有四種情況。以下將說明這四種情形。

(1)讀取資料但資料不在 Object Heap Cache 中:當 Cache Controller 收到 JAIP 執行 時要讀 Heap 資料時,會離開 Idle 狀態進入到 Analysis 狀態,此時經過查找機制(如圖 34

46

所示)會發現所需讀取資料尚未被快取到 Object Heap Cache 中,因此會進入 RdFromMem 狀態,對 DDR-SDRAM 發出讀取的要求。由於一個資料區塊是為 8 筆資料,因此利用 PLB Burst 模式可在一次要求中取回所有資料。當把載入的資料更新 Object Heap Cache 同時也將並回傳 JAIP 執行時所需讀取的資料。

(2)讀取資料而資料已存在於 Object Heap Cache 中:當 Cache Controller 收到 JAIP 執行時要讀 Heap 資料時,會進入 Analysis 狀態來查找。而當找到所需讀取的資料已被 快取。此時會直接進入 ChitFinish 狀態,直接從 Cache 中取出並回傳 JAIP 執行時所需讀 取的資料。

Idle

Analysis RdFrom

Mem

Chit Finish RdMem

Complt WT2

Mem Complt

WT2 Mem

圖 35. Object Heap Cache 存取有限狀態機

(3)寫入資料但資料不在 Object Heap Cache 中:當 JAIP 在執行需要修改 Heap 資料 時,會發出寫入訊號給 Cache Controller。則執行狀態會進入 Analysis 狀態,發現資料尚 未被快取到 Object Heap Cache 中。而會先從 DDR-SDRAM 讀取此資料所屬的資料區塊 並更新 Cache。當對 DDR-SDRAM 存取完畢後即將所需修改的資料一併寫到 Object Heap Cache 之中。然而為了在多處理核心的環境之下保持各 JAIP 處理核心以及 DDR-SDRAM 的 Heap 資料一致,因此會進入 WT2Mem 狀態,將所修改的資訊寫回到 DDR-SDRAM

47

中的 Object Heap Space,使其之後要 cache 此資料的處理核心能取得正確的資料。並將 所修改的資訊(包含 Heap 位址與修改資料)送到 Multi-core Coordinator,由 Multi-core Coordinator 中 Data Coherence Controller 來運作保持各 JAIP 處理核心資料一致性。

(4) 寫入資料而資料已存在於 Object Heap Cache 中:JAIP 在執行需要修改 Heap 資 料時,而此位址的資料已被快取。因此 Cache Controller 不須從 DDR-SDRAM 中載入資 料直接進入 WT2Mem 狀態。修改 DDR-SDRAM 中的 Object Heap Space,並將所修改 Heap 資料的資訊送到 Data Coherence Controller 即可。並且同時更新在處理核心 Object Heap Cache 上的資料。

而當被修改的 Object Heap 相關資訊送到 Data Coherence Controller 之後,Data Coherence Controller 會再將被修改的資訊轉送到各 JAIP 處理核心上,並啟動檢查是否 需要更新的機制(如圖 36 所示)。當 JAIP 處理核心收到由 Data Coherence Controller 所送 來要更新 Object Heap Cache 的資訊時。會先檢查所被更改的資料是否快取在自己處理核 心上的 Cache 內。若已快取此筆資料,則利用所送來的資訊更新 Cache 上的資料。若否,

則不須執行任何動作。如此一來當有 JAIP 處理核心對 Heap 資料做修改時,也可以反映 到所以處理核心藉以達到資料的一致性。

Updata Idle data

Check Hit

圖 36. Cache Updata 有限狀態機

在文檔中 多執行緒Java處理器設計 (頁 53-56)