什麼是目錄方案?
目錄方案選擇性地僅向儲存共享資料塊有效副本的那些快取傳送一致性命令。每個資料塊必須關聯一個目錄項。目錄項包含一組指向持有該塊有效副本的快取的指標。髒位指定任何持有快取是否有權更新相關的資料塊。
在目錄方案的識別中,三種主要方法如下:
- 全對映目錄方案
在全對映目錄方案中,每個目錄項包含與系統中快取數量一樣多的指標。如果快取Ci包含資料塊的副本,則指標Pi指向Ci,否則Pi指向自身。如果指標和快取之間存在一對一對應關係,則一個簡單的標誌Fi就足以替換指標。
在這個稱為存在標誌向量的實現結構中,如果Ci包含有效副本,則標誌Fi設定為true,否則Fi設定為false。還有一個額外的標誌稱為髒標誌,當且僅當設定了一個存在位時,該標誌被設定,指示關聯的快取有權更新資料塊。
- 受限目錄方案
受限目錄方案的目標是與全對映目錄方案相比,大幅減少位開銷。基於快取的共享記憶體系統的特性表明,在絕大多數情況下,只有有限數量的快取包含相同資料塊的有效副本。
共享記憶體中目錄項的結構與全對映方案非常相似。目錄項中的指標數量 (k) 遠小於共享記憶體系統中的處理器數量 (n),這些指標是動態分配給包含相關資料塊副本的那些快取的。
因此,簡單的位不足以表示指標。在一個n處理器系統中,需要log2n位來定義一個存在指標,因此,為每個記憶體塊儲存k個指標。受限目錄的位開銷為$\frac{klog_{2}n}{塊大小}$,而全對映方案為n/塊大小。如果Klog2n<n,即k<$\frac{n}{log_{2}n}$,則受限目錄方案的位開銷小於全對映方案。
- 鏈式目錄方案
鏈式目錄方案是前兩種方案之間的一個很好的折衷方案。它保留了中央目錄幀的有限大小,甚至進一步將存在指標的數量限制為一個,並且避免了驅逐操作。
存在指標數量的動態擴充套件是透過在快取之間分配額外的存在指標來實現的。每個快取中的每個資料塊都擴充套件了一個指標,該指標用於連結資料塊的有效副本。該方案的特點是它需要與資料塊的有效副本數量一樣多的存在指標。共享記憶體的目錄項中沒有多餘的存在指標。
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP