530 likes | 751 Views
第 12 章 快取結構. 快取結構. 電腦最重要的關鍵技術之一 常用於硬體和軟體 降低范紐曼瓶頸的最佳化技術. 快取記憶體. 快取技術扮演中介角色,來改善存取效能。 快取結構必須比正常存取機制快速。 在正常的情況下,必須使用快取記憶體,來保存某些資料的備份,以便在接受資料請求之後,能夠直接回覆請求。 . 快取結構圖. 快取置放在請求機制(稱為請求者)和回答請求機制(通常是大型資料儲存裝置)之間的路徑上. 快取特性. 小巧 快取容量遠小於整體容量 靈活 決定如何回答 透通 不管快取插入與否,都不影響請求者和資料儲存裝置的功能 。 自動
E N D
快取結構 • 電腦最重要的關鍵技術之一 • 常用於硬體和軟體 • 降低范紐曼瓶頸的最佳化技術
快取記憶體 • 快取技術扮演中介角色,來改善存取效能。 • 快取結構必須比正常存取機制快速。 • 在正常的情況下,必須使用快取記憶體,來保存某些資料的備份,以便在接受資料請求之後,能夠直接回覆請求。
快取結構圖 • 快取置放在請求機制(稱為請求者)和回答請求機制(通常是大型資料儲存裝置)之間的路徑上
快取特性 • 小巧 • 快取容量遠小於整體容量 • 靈活 • 決定如何回答 • 透通 • 不管快取插入與否,都不影響請求者和資料儲存裝置的功能 。 • 自動 • 快取機制具有主動的演算法,可以調整快取的管理方式。
快取領域 • 軟硬體 • 小型資料項目(比如:位元組、字組) • 中型資料項目(比如:區段、分頁) • 大型資料項目(比如:整個程式) • 一般資料項目(比如:檔案、磁碟區塊) • 應用程式(比如:網頁、文件、或資料庫)的資料項目 • 文字資料(比如:電子郵件訊息)
快取領域(Cont.) • 非文字資料(比如:影像、音效檔、視訊) • 單一電腦系統(比如:在處理器和記憶體之間) • 多重電腦系統(比如:在多個桌上型電腦和資料庫伺服器之間) • 擷取取資料的專用系統(比如:WWW網站) • 擷取和儲存資料的專用系統(比如:實體記憶體)
快取重要性 快取結構是一種基本的最佳化技術,廣泛地運用於抓擷取資料的軟硬體系統,而所擷取的項目並沒有限制固定的資料型態、型式、或大小。
快取術語 • 快取擊中: • 簡稱擊中 • 快取請求時,可直接從快取記憶體中取出所請求的資料; • 快取失誤: • 簡稱失誤 • 無法從快取記憶體取出請求的資料,必須到底層的資料儲存裝置,去擷取所請求的資料。
快取術語(Cont.) • 區域存取性: • 存取的指令或資料有區域化傾向 • 有許多重複指令或資料的請求,稱為高區域存取性 • 反之,則稱低區域存取性 • 愈高的區域存取性,代表愈高的效能表現。
最差快取效能 • 最壞的極端情況:假設每一個請求都是新的資料項目,顯然無法在快取記憶體中,找到這些資料。 • 快取轉送N個請求給資料儲存裝置,這些所累計的時間成本,稱為最差成本Cworst: Cworst=NCm • 平均成本為Cm。
最佳快取效能 • 最好的極端情況:假設快取的第一個請求,是擷取於儲存裝置,而後續的請求直接使用快取內部的複本。 • 累計N個請求的時間成本,稱為最佳成本Cbest: Cbest=Cm+(N-1)Ch • 平均成本為: • 當N∞時,請求成本逼近快取速度Ch
效能成本的結論 如果不管額外的設計負荷,在最壞的情況下,有快取設計的效能不會比沒快取設計的效能要差;反之,在最好的情況下,每一個請求的時間成本接近快取效能,並且遠低於資料儲存裝置的存取成本。
擊中次數 請求總數 快取效能的評估 • 擊中率意指:在一序列的快取請求中,快取擊中次數的比率。 擊中率 = • 失誤率定義: 失誤率 = 1 - 擊中率
整體成本的評估 • 擊中率需視實際的情況而定 • 整體成本 = rCh + (1-r)Cm • r 擊中率 • Ch擊中成本 • Cm失誤成本 • 有兩個可以改善整體成本: • 增加擊中率 • 降低擊中成本
快取置換策略 • 如何增加擊中率呢? • 快取容量遠小於資料儲存裝置,一旦快取滿載後,就必須引入一種置換策略。 • 置換策略有兩個主要考慮因素: • 盡量保留存取最頻繁的資料項目,增加擊中率! • 建構置換策略的成本必須不貴。
LRU置換法 • 最流行的置換策略就是LRU置換法 • LRU主張 • 把過去最長時間未被存取的資料項目,列為置換的對象。 • 容易實現,而且工作順暢。 • 如果快取請求具有高區域存取性時,資料項目會不斷地重複存取,此時LRU會傾向保存這些資料項目,來降低存取成本。
LRU觀念 當快取記憶體滿載,卻又必須存取新的資料項目,此時快取面臨的選擇是要保留目前的資料項目,或者進行置換動作(回收一個資料,置放新的資料)。目前最常使用的置換法,以LRU置換法最受歡迎,除了容易建構實現外,LRU會盡量保留重複請求的資料項目。
多階層快取結構 • 快取結構最令人感到驚嘆的是改善效能的表現 • 快取會盡量靠近請求者,就近反應,降低抓取資料的成本。 • 我們可以在請求者和資料儲存裝置之間使用多個快取,稱為多階層快取結構,更進一步改善快取效能。
二階層快取結構 • 這種二階層快取結構的成本會低於原快取的存取成本。 • 整體成本 = r1Ch1 + r2Ch2 +(1-r1-r2)Cm • r1是新快取的擊中率 • Ch1則是新快取的存取成本; • r2是原快取的擊中率 • Ch2則是原快取的存取成本。
預先載入快取 • 快取設計者發現:程式在執行初期,快取擊中率會特別的低。 • 使用預先載入快取的觀念,來加以改善。 • 目前存在各種不同的預先載入法,比如: • 快取可以先把某些內容備份在非揮發性記憶體,等到啟動時,預先載入這些資料。 • 處理器想存取1位元組記憶體時,快取可以預先擷取64位元組。
快取記憶體 • TLB • 分頁 • 實體快取
TLB快取 • TLB是一個應用在分頁系統的高速硬體機制,可以改善分頁效能。 • TLB正是一個不折不扣的快取 • 漸進性的查閱動作,幾乎總在查閱相同的分頁。 • 大都可以從TLB,直接取得相同的答案。 • TLB使用LRU置換法 • TLB內含數位電路,可以高速移動數值到CAM記憶體,並非使用慢速的主記憶體。
分頁的快取效果 根據快取的分析顯示,一般在容量有限的電腦系統中使用分頁請求,感覺很像整個虛擬空間都有足夠的實體記憶體一樣。
實體快取 • 讓快取搜尋快取答案的同時,也傳輸請求給實體記憶體。 • 一旦快取先找到答案,立刻取消記憶體動作。 • 如果找不到答案,快取會等待底層記憶體的答案。 • 快取硬體會採用平行策略,同時搜尋快取區域和存取底層記憶體,雖然硬體有些複雜,但有較高的效能表現。
寫透和寫回 • 快取會受到寫入動作的影響,一般的寫入動作分成兩種: • 寫透 • 同時更新快取和底層記憶體; • 寫回 • 不急著把資料寫入記憶體 • 通常只會把資料寫入快取,等到發生快取置換動作時,才把數值寫入記憶體。
快取一致性協定 • 快取一致性協調被存取數值的一致化,比如: • 當處理器2讀取位址A時,一致性協定會要求快取1,立刻更新記憶體數值,如此快取2才能取出正確的資料。 • 任何處理器的讀取動作,可能會觸發其它快取的寫回動作,。
多階層快取結構 • L1快取:意指處理器晶片內部的快取。 • L2快取:意指晶片外部的快取。 • L3快取:意指內建在實體記憶體的快取。
存取記憶體的成本 現代電腦使用多階層快取系統,其中L1快取通常嵌入處理器晶片內部,L2快取放在處理器外部(但愈來愈多廠商也把L2快取直接嵌入處理器晶片內部),L3快取則內建於實體記憶體。整體而言,多階層快取系統最好的情況是:記憶體的存取成本接近暫存器的存取成本。
指令快取和資料快取 • 指令擷取有相當高的區域特性: • 下一個要執行的指令通常在鄰近的記憶體位址 • 大部分的時間都消耗在空間要求不大的迴圈上 • 某些高區域指令特性並不一定適用於資料上,儘管有些資料存取也有同樣的高區域性,但有些則否。 • 指令和資料行為可能存在差異。
指令快取和資料快取(Cont.) • 分離型快取使用兩種不同的快取: • 一個處理指令 • 一個處理資料 • 整合型快取只使用單一快取,同時處理指令和資料存取。
虛擬快取 • 如何把虛擬位址應用在快取結構? • 快取放在MMU和實體記憶體之間,表示快取只要認識實體位址,即可。(快取使用實體位址來指定資料) • 快取放在處理器和MMU之間,表示快取也要瞭解虛擬位址。(快取使用虛擬位址來指定資料)
清空快取 • 如何解決多重應用程式使用相同位址所造成的問題呢? • 結構師有兩個解答: • 清空快取 • 清晰識別
清空快取(Cont.) 保證快取不會給錯數值,每當作業系統更改到一個新的虛擬位址時,就強迫清空快取,移走目前快取的所有數值。
清晰識別 • 清晰識別必須額外地加入識別位址的相關位元。 • 也就是 • 處理器內部有一個額外的硬體暫存器,可以配置每一個執行程式一個唯一ID號碼。 • 每當處理器開始執行某一個應用程式時,作業系統會把應用程式ID號碼載入到ID暫存器,然後這個ID暫存器內容會與原來的虛擬位址一起儲存到快取上。
快取實現技術 • 直接映射快取 • 集合關聯快取
直接映射快取 • 快取記錄的不是單一位元組,而是區塊。 • 快取由多個區塊組成 • 每個區塊有4個位元組 • 記憶體會被分割成多個相同大小的區塊。
直接映射快取的查閱演算法 已知: 記憶體位址 尋找: 該位址的位元組資料 方法: 從位址上萃取標籤t、區塊編號b、和偏移值o 檢視快取槽b的標籤,如果標籤確實為t,則擷 取其數值。 如果標籤不是t,使用記憶體位址直接擷取記憶 體區塊,然後把該區塊內容備份到快取槽b, 並且更改標籤為t。 最後以偏移值o選擇適當的位元組資料。
集合關聯快取 • 集合關聯快取會使用硬體平行策略 • 同時進行存取的硬體,可以儲存多個標籤相同的記憶體區塊,取代原先單一的快取動作。
集合關聯快取的優點 • 具有兩組底層硬體的集合關聯快取,稱為雙向集合關聯快取。 • 考慮兩個位址:A1和A2,雖然不同標籤,但都具有相同的區塊編號0 • 假設在直接映射快取中,存取這兩個位址,會競爭同一個快取槽。 • 交互存取這兩個位址,愈會造成快取失誤。 • 在集合關聯快取中,這兩個位址可以放到兩個底層硬體:A1放在其中一個快取槽,A2放在另一個快取槽,即使交互存取,也會快取擊中。
完全關聯快取 • 可以使用集合關聯快取,來代表快取所有的映射關係,注意兩個極端情形: • 完全關聯快取允許記憶體區塊任意地儲存到任何一個快取槽,全部採用類似於CAM記憶體的平行策略。 • 另一個是之前談到的直接映射快取,這種快取只能讓記憶體區塊固定放在某一個快取槽,沒有任何平行策略。
完全關聯快取的平行觀念 • 直接映射快取:沒有平行處理的能力。 • 集合關聯快取:部分平行處理的能力。 • 完全關聯快取:全部平行處理的能力。 (相當於 :內容定址記憶體)