• 沒有找到結果。

主從式快取記憶體控制器硬體演算法

第二章 主從式快取記憶體控制器

2.1 主從式快取記憶體控制器原理

2.1.1 主從式快取記憶體控制器硬體演算法

圖 2-1(a)為主從式快取記憶體的架構圖。主從式快取記憶體主要是把 L1 快 取記憶體的 entry 拆成若干等份。以一個擁有 1k entry 的 L1 快取記憶體(圖 2-1(b)) 為例,在分為兩個 sub-cache 的架構中,共有兩個 512 entry 的 cache,四個 sub-cache 的架構中,共有四個 256 entry 的 sub-cache,依此類推。而在

Input Program Address

Output Program Address

master slave ……. slave

1 2 3

圖 2-1(a):主從式快取記憶體架構圖

圖 2-1(b):L1 快取記憶體

本篇論文的架構裡sub-cache的個數一定是 2 的冪次方(2 ) (圖 2-1(c))。

1024/2

n個 entry

圖 2-1(c):主從式快取記憶體

n

當一開始程式執行時,快取記憶體內還無任何指令。主從式快取記憶體從編 號第一顆的 sub-cache 開始填入指令,而編號第一顆的 sub-cache 也將成為最初提 供處理器提取指令的 sub-cache,在這個演算法裡,當下處理器提取指令的 sub-cache 稱為 master,其餘的 sub-cache 稱為 slave(圖 2-1(a)),這也是將此控制 器命名為主從式快取記憶體控制器的原因。舉例來說,1024 個指令將從程式記 憶體讀入,編號一的 sub-cache 將存入 512 個指令,編號二的 sub-cache 也將存入 下 512 個指令,依此類推。完成了整個快取記憶體的初始化後,快取記憶體發送 信號通知處理器表示可以開始接受處理器的讀取,讀取的方式有兩種,在省電模 式下是先比對目前被設為 master 的 sub-cache 的 Tag 部份是否有符合,如果符合 就將指令輸出,若沒有符合則恢復其餘被設為 slave 的 sub-cache 的工作頻率,並

平行比對目前所有被設為 slave 的 sub-cache 的 Tag 部份,如果有符合的便將該 sub-cache 設定為 master,原先的 master 設定為 slave,並將指令輸出至處理器。

而在高速模式下則是一開始就平行比對包含 master 及 slave 在內的所有 sub-cache 的 Tag 部份,符合的 sub-cache 設定為 master,原先的 master 設定為 slave,並將 指令輸出至處理器。舉例如編號一的 sub-cache 的 Tag 部分沒有符合,然而在編 g 有符合,則將編號二的 sub-cache 設為 master(圖 -1(d))。依上述演算法,在整個主從式快取記憶體的架構下,這種情況並不會造

真正的 cache miss,只是作為 master 的 sub-cache 改變了而已。

號二的 sub-cache 中的 Ta 2

Input Program Address

Output Program Address

slave master ……. slave

1 2 3

圖 2-1(d):master 和 slave 切換後的圖

當真正的 cache miss 發生時(意思是在主從式快取記憶體架構下的所有 sub-cache 都 miss),在 L1-Direct Map 機制裡,處理器被停下,等待 cache 將新指 令從指令記憶體讀取進來取代現在存放在快取記憶體的指令[18][20]。而在主從

式快取記憶體控制器的機制裡,處理器被停下,然後對最近最久未使用的 sub-cache(LRU sub-cache)作指令的取代。此外,觀察指令快取記憶體的存取特 性,由於指令都有地域性(locality)的現象,所以如果要在硬體中以比 RU 更簡 化的方式實現,又幾乎保持 LRU 的特性,可以選擇取代離 master 最遠的一顆 sub-cache。其理由為離 master 最遠的 sub-cache 應是對於現在執行的指令中地域 性最差的,自然有很高的機會成為 LRU。以演算法而言,也就是對 master 的 sub-cache 的編號後一顆的 sub-cache 作指令取代(若 master 已經是編號最後一顆 的 sub-cache,則取

L

代編號第一顆的 sub-cache,採用環狀排序)。舉例來說,若現 master 是編號第一顆,則對編號第二顆的 sub-cache 作取代,依此類推。而指 令取

所造成的 miss,未來如果又跳回原本的程式區間,在主從式快 取記憶體架構下就不會再次發生 cache miss,這種情況典型發生在函式呼叫和函 式返回及跨邊界的迴圈運算,然而在 L1-Direct Map 架構下,這種情況仍舊會發

c

2.1.2 使用者可調性設計

代結束後,依據之前決定 master 的演算法,被 replacement 的那一顆 sub-cache 會成為 master。

由於是將原先 master 的後一顆 cache 作指令取代,所以原先的指令都還保留

相關文件