1、1第第 10 章章實體記憶體和定址實體記憶體和定址2記憶體特性記憶體特性 工程師使用RAM,當作電腦的主記憶體。 RAM可以隨機存取,具有: 讀寫能力 更新能力 RAM屬於揮發性記憶體,電腦關機後,資料跟著消失。3RAM的實現技術的實現技術 靜態RAM (Static RAM,簡稱為SRAM) 動態RAM (Dynamic RAM,簡稱為DRAM) 4SRAM技術(類似正反器)技術(類似正反器) 當寫入致能為on時,電路會設定輸出數值等於輸入狀態。 當寫入致能為off時,電路不理會目前的輸入訊號。 5SRAM優缺點優缺點 優點:高速運作 缺點:電力消耗和熱問題6DRAM技術技術 DRAM只消耗
2、少許的電力,比較不會有晶片發熱的問題。 DRAM內部使用電容器原理,來儲存資訊。7遺失電荷問題遺失電荷問題 任何電容器都會發生漏電的情況。 DRAM會在非常短的時間內(1秒),快速地遺失電荷。 電荷逐漸散逸,最後位元會變為0。8更新電路更新電路 既然數值會迅速地變成0,那麼DRAM如何用來當作記憶體呢? 總是在電荷跑光之前,先讀出該位元,再寫回相同的數值,讓電容再一次充滿電荷,這種過程稱為更新。 這種” 讀出再寫回位元” 的硬體電路,就是所謂的更新電路。 9更新電路圖更新電路圖10真正的更新電路真正的更新電路 真正的更新電路會更複雜。 結構師使用小型更新機制,來掃瞄整個記憶體。 在更新期間,更
3、新電路必須保證位元數值不能進行讀寫動作,否則將影響資料的正確性,但是這種保證卻造成延遲問題。 DRAM結構具有低成本和低電力消耗的優點,因此大部分的電腦主記憶體是由DRAM所組成,而非SRAM。11記憶體技術之測量記憶體技術之測量 密度 延遲和週期時間12密度密度 嚴格來說,密度意指:矽平方面積的記憶單元數量。 實際上,密度意指:標準晶片可以容納的位元數量。 比如:1Mb晶片表示容納1百萬位元的標準晶片。 密度愈高記憶體數量愈多,電力需求跟著增加,因而帶來晶片散熱的問題。13摩爾定律摩爾定律 最常用來預估未來晶片密度的定律,正是最知名的摩爾定律。 摩爾定律從1970年代開始,準確預估晶片內部電
4、晶體密度的成長趨勢:每18個月二倍成長(即三年四倍),這表示電晶體尺寸不斷地微縮。14讀寫分離讀寫分離 擷取某些記憶體資訊所需要的時間,可能會不同於儲存資訊所需要的時間,這種差別導致量化記憶體技術時,必須分開地使用兩種數據:讀取(read)動作的效能、和寫入(write)動作的效能 15延遲延遲 記憶體從開始到完成所耗費的時間。 並非固定的常數。16記憶體控制器記憶體控制器 在實體記憶體和處理器之間,還有一個稱為記憶體控制器的硬體介面。17記憶體控制器圖記憶體控制器圖18記憶體動作方式記憶體動作方式 處理器 先提出讀取請求或寫入請求給控制器 等待控制器回應 控制器 翻譯記憶體位址和請求,傳到底
5、層記憶晶片。 記憶晶片會儘速反應,讓控制器傳回答案。 然後,控制器重置硬體電路,準備下一個動作。19第二個記憶體效能因素第二個記憶體效能因素 因為記憶體系統在存取動作之間,需要一些額外的時間,來準備下一個存取動作,這表示只有延遲將不足以量測記憶體效能,整個記憶體效能最好還能夠量測出連續動作所需要的時間。 20記憶體週期時間記憶體週期時間 工程師會以記憶體週期時間來表示:記憶體系統執行多個運算的速度有多快! 比如: 讀取週期時間(read cycle time,簡寫成tRC) 寫入週期時間(write cycle time,簡寫成tWC)。 21記憶體週期時間的重點記憶體週期時間的重點讀取週期時
6、間和寫入週期時間被用來測量記憶體系統的效能表現,因為這兩者數據可以瞭解:記憶體在處理連續請求動作的反應有多快! 22同步記憶體技術同步記憶體技術 記憶體和處理器時脈不同,會影響效能表現。 採用同步時脈系統,可以消除時脈不同步所造成的延遲,讓記憶體時脈剛好對齊處理器時脈。 比如: SDRAM同步型動態RAM SSRAM 同步型靜態RAM 現代電腦大部分使用SDRAM當作主記憶體。 23多倍速記憶體技術多倍速記憶體技術 工程師會設法降低記憶體週期時間。 最直接的方式就是採用多組時脈,讓記憶體在這些時脈的觸發下,能夠傳遞更快的資料,典型的範例就是所謂的 雙倍速率(DDR)記憶體 四倍速率(QDR)記
7、憶體。 24市售記憶體產品市售記憶體產品 25記憶體組織記憶體組織 用於處理器和記憶體之間的平行介面 稱為匯流排26記憶體傳輸大小記憶體傳輸大小 從結構觀點來看,平行連線改善傳輸的效能。 從程式觀點來看,平行連線定義記憶體傳輸大小。 記憶體傳輸大小就是:單一讀寫動作最多一次能夠傳輸的資料量。27實體位址實體位址 實體記憶體被分割成多個N位元區塊 N就是記憶體傳輸大小 N位元就是該電腦的字組28字組定址字組定址 每個字組都被賦予唯一的編號,來當作實體記憶體位址,稱為字組定址。 實體記憶體就像是:從位址0開始排列的字組陣列。29實體位址圖實體位址圖30實體記憶體動作實體記憶體動作 實體記憶體具備讀
8、取和寫入功能: 在讀取動作,處理器會指定一個位址。 在寫入動作,處理器會指定一個位址和一筆資料。 重點在於: 實體記憶體是由多個字組構成,而字組就是記憶體傳輸大小,也就是,每一次的讀寫動作會以一個字組為單位。 31字組大小字組大小 結構師會選擇多大的字組? 字組必須容納一般的數值(比如:整數) 字組必須容納一般的指令 目前結構師大都選擇32位元或64位元的字組 假設字組為32位元的電腦系統,則: 處理器應該是32位元 資料表示法應該是32位元32位元組定址位元組定址 傳統程式設計師比較熟悉:位元組定址 位元組定址可存取更小的資料項目 選擇位元組定址會有兩個重要的影響: 一個位元組記憶體需要一個
9、位址,因此位元組定址會比字組定址需要更多的位址線。 位元組定址允許程式設計師讀寫單一位元組,因此記憶體控制器必須要能夠支援位元組傳輸。33位元組與字組之間的轉換位元組與字組之間的轉換 位元組定址的記憶體效能會比字組定址的記憶體效能差。 最好能夠兼具兩種定址的優點: 高速的字組定址 容易程式規劃的位元組定址 最好可同時翻譯兩種定址: 一旦處理器需要一個位元組,控制器可以接收位元組定址。 可從字組記憶體,取出特定的位元組。 34位址轉換圖位址轉換圖35數學轉換數學轉換 假設某個系統的字組具有N個位元組,一個位元組B的字組位址為W,則: 該位元組的偏移值O=B mod N 比如:N=4、B=11,所
10、以字組位址W=2、偏移值O=3。NB36 2的冪次位址的冪次位址 結構師使用2的冪次位址來排列記憶體,更有效率! 如此硬體不必計算,只要簡單地萃取部分位元,就可以得到計算的結果。 37更有效率的轉換更有效率的轉換為了避免數學計算(除法和餘數算術),結構師會使用2的冪次位址來排列記憶體,因此只要小心地萃取位元組位址的位元,就可以最簡單的形式,取得對應的字組位址和偏移值。 382的冪次位址轉換圖的冪次位址轉換圖39位元組對齊位元組對齊 想要表示整數字組,就必須謹慎地排列位元組位置,稱為位元組對齊。 大部分的架構要求位元組對齊,任何試圖存取未對齊的整數字組,會出現錯誤! 非對齊的存取方式將導致低效能
11、機器 未對齊位址需要多次實體位址的存取 即使處理器允許非對齊存取,程式設計師能少用,最好還是少用為妙。40程式設計師應該注意的重點程式設計師應該注意的重點實體記憶體組織會影響程式規劃,即使處理器允許未對齊的記憶體存取,程式設計師最好還是謹慎地將資料對齊邊界,來保障執行程式的效能。 41 記憶體大小和位址空間記憶體大小和位址空間 記憶體大小通常會有上限。 比如:32位元代表最多具有232=4,294,967,296個位址 位址編號:0 到 4,294,967,29542字組定址的軟體規劃字組定址的軟體規劃 字組處理器在存取位元組時,也可以使用軟體規劃。 比如: 讀取某一個位元組,可以先讀取整個字
12、組,然後使用軟體挑選所需要的位元組。 寫入某一個位元組,軟體也必須先找到適當的字組,讀取整個字組,然後更新特定的位元組,最後將更新的整個字組寫入記憶體。43記憶體大小的測量基底記憶體大小的測量基底 實體記憶體由一組M個字組形成,每個字組N個位元組;為了讓控制器硬體更有效率,M和N數量都選擇2的冪次方。 注意: 210B = 1KB 220B = 1MB44程式設計師受到的影響程式設計師受到的影響 電腦、I/O設備或網路等速度大都使用10的冪次方。 程式設計師必須瞭解使用10的冪次和使用2的冪次方這兩者之間的差異45資料結構和指標資料結構和指標 位址指標指向該記憶體位址的內容。 比如,C語言的宣
13、告:char *cptr; C語言規劃具有繼承權,如下宣告:int *iptr; 如果整數字組內含4個位元組,則自動遞增敘述:iptr+; 這個敘述會把iptr數值加4(不是加1)46記憶體傾印記憶體傾印 使用struct宣告來定義node:struct node int count;struct node *next; 還必須宣告一個稱為head變數當作串列的起頭,如下:struct node *head;47記憶體傾印範例記憶體傾印範例 先假設C編譯器將head變數配置在位址0 x0001bde4 指向指向node 1的位址指標0 x000000c0(即計數值count=192) 48改善
14、記憶體的效能表現改善記憶體的效能表現 平行記憶庫 交錯記憶體49平行記憶庫平行記憶庫 通常記憶體結構會自動運用平行策略,程式設計師無法插手(透通) : 比如:水平微碼 平行功能性單元的CPU 但程式設計師可以把資料適當地配置到各個記憶庫,來產生更高的效能。 50交錯記憶體交錯記憶體 交錯記憶體有些類似記憶庫 交錯記憶體會延展記憶體的連續位元組,讓各個位元組平均地散佈在各個記憶模組。 想要擷取一個整數字組,交錯記憶體硬體會自動地把單一請求分割成多個請求,各自讀取各個記憶模組。 51平行記憶庫和交錯記憶體之間的差異平行記憶庫和交錯記憶體之間的差異 程式設計師無法看見交錯記憶體所隱藏的硬體結構。 欠
15、缺彈性,但具有相當不錯的效能。 習慣使用N向交錯記憶體,來描述四向交錯介面如何指定位元組給四個記體模組。 52四向交錯記憶體四向交錯記憶體53CAM內容位址記憶體內容位址記憶體 CAM融合記憶體技術和組織兩個層面 CAM不僅僅只是儲存資料而已 最重要的是:CAM硬體具有非常高速的搜尋能力54CAM 最簡單的CAM型式是二維陣列組成的記憶體 每一列儲存資料項目稱為單槽 處理器不但可以在單槽上置放數值,也可以指定搜尋鍵,要求硬體執行搜尋功能。 搜尋機制會執行所謂的精確比對,快速回報結果。 CAM的槽設計採平行策略,所有單槽同時動作,因此搜尋時間與槽數無關。55CAM圖圖56CAM查閱查閱 平行搜尋
16、硬體雖然高速,但讓CAM非常昂貴。 結構師只在搜尋速度比成本重要時,才會使用CAM。 比如:高速的網路路由器。57T-CAM三態內容定址記憶體三態內容定址記憶體 T-CAM把觀念延伸到:部分比對搜尋。 單槽位元有三種數值: 0 1 ”dont care” T-CAM同時檢視所有槽的資料項目,以平行策略執行搜尋動作。 T-CAM適合多個項目的比對搜尋。58結論結論 檢視實體記憶體的兩個層面: 底層技術 記憶體組織 程式設計師發現位元組定址相當方便,但大部分的實體底層卻使用字組定址。 許多的智慧型記憶體控制器能夠把位元組定址轉譯成字組定址。59結論(結論(Cont.) 許多語言會提供指標變數和指標算術,讓程式設計師具有控制記憶體位址的能力。 記憶體傾印可依照其位址排列,順序顯示記憶體內容。 CAM融合技術和組織兩種層面。 CAM以二維陣列排列記憶體,每一列稱為單槽,各槽彼此平行運作,是一種高速的記憶體搜尋裝置。