Memory 技術在計算系統中扮演著至關重要的角色,提供了快速且有效地存儲和訪問數據的能力。主要的兩種Memory 技術是隨機存取Memory (RAM)和disk 存儲。 隨機存取Memory (RAM): 隨機存取Memory 允許快速讀取和寫入數據到Memory 中的任何位置。有兩種主要類型的RAM: * 靜態隨機存取Memory (SRAM): * SRAM 的特點是靜態的,這意味著一旦數據被存儲,即使關閉電源,它也會保持在原地,直到被主動更改或擦除。 * 它具有快速的存取時間,通常用於速度至關重要的應用中,例如CPU中的緩存Memory 。 SRAM比DRAM更昂貴,耗電量更大,密度更低。 * 動態隨機存取Memory (DRAM): * DRAM 是動態的,因為它需要定期刷新以保持存儲的數據。如果不刷新,存儲在Memory 單元中的電荷將降解,導致數據丟失。 * 它比SRAM更便宜,提供更高的密度,但存取時間更慢。 * 由於其具有成本效益和更高的容量,DRAM通常用作計算機中的主Memory 。 * DRAM以2D矩陣的方式進行地址訪問,具有行和列。訪問DRAM涉及激活行(RAS),然後選擇列(CAS),這被稱為RAS/CAS訪問。 disk : disk 存儲是指使用disk 或硬盤驅動器(HDD)來存儲數據。與RAM不同,RAM是易失性的,當關閉電源時會丟失數據,disk 提供了非易失性存儲,這意味著數據即使在關閉電源時也能保持完整。 disk 將數據存儲在塗有磁性材料的旋轉盤片上。使用磁頭在disk 表面移動寫入和讀取數據。雖然disk 存儲提供了與RAM相比更高的容量和每GB較低的成本,但在存取時間方面較慢。 總之,RAM(包括SRAM和DRAM)提供了對數據的快速訪問,主要用於計算系統中的臨時存儲。另一方面,disk 存儲提供了較低成本的大容量非易失性存儲,但與RAM相比,存取時間較慢。 ## Solution: Memory Hierarchy Memory 層次結構是計算機架構中的基本概念,旨在提供一種大、快、便宜的Memory系統假象。這種假象是通過利用不同類型 Memory 技術之間的折衷來實現的。以下是關鍵要點的分解: * 大Memory速度慢,而快Memory容量小:這是根據不同Memory技術的特點而得出的基本觀察結果。通常,較大的Memory單元,如硬盤驅動器(HDD)或甚至固態硬盤驅動器(SSD),存取速度較慢,而較小、較快的Memory單元,如緩存或主Memory(RAM),存取速度較快。 * 通過層次結構和並行處理實現假象:為了應對固有的折衷,計算機系統採用了Memory層次結構。該層次結構通常包含多個層次,每個層次在大小、速度和成本等方面具有不同的特徵。在層次結構的頂部是較小、較快的Memory,如緩存,而在底部是更大但更慢的Memory,如磁盤存儲。 Memory系統的擴展視圖:Memory系統可以被視為是一個分層結構,每個層次都有特定的功能: * 註冊:這些是位於 CPU 內的最快和最小的Memory單元。它們存儲 CPU 正在主動處理的數據。 * 緩存:這是位於比主Memory更靠近 CPU 的一小塊但速度較快的Memory單元。它作為 CPU 和主Memory之間的緩衝,存儲頻繁訪問的數據和指令,以減少Memory訪問的延遲。 * 主Memory(RAM):這是用於存儲 CPU 正在處理的數據和指令的主要Memory單元。它比緩存大但速度較慢。 * 二級存儲(HDD、SSD):這些是用於長期數據存儲的更大但速度較慢的存儲單元。與主Memory相比,它們提供了更大的存儲容量,但延遲和存取時間更長。 * 三級存儲(例如雲存儲):這代表了提供更大存儲容量的外部存儲系統,但與二級存儲相比,存取速度更慢。 通過以這種分層的方式組織Memory並利用並行處理,計算機系統可以根據數據的訪問模式和需求,在層次結構的適當層次存儲和訪問數據,從而優化性能和成本效益 ## Comparisons of Various Technologies 以下是根據2008年的典型存取時間和每GB成本進行的各種記憶技術比較,以及一些額外的信息: 靜態隨機存取Memory(SRAM): * 典型存取時間:0.5-2.5 納秒 * 2008年每GB成本:$2000-$5000 動態隨機存取Memory(DRAM): * 典型存取時間:50-70 納秒 * 2008年每GB成本:$20-$75 磁性磁盤(硬碟驅動器): * 典型存取時間:5,000,000 - 20,000,000 納秒(或5-20 毫秒) * 2008年每GB成本:$0.20 - $2 理想Memory: * SRAM的存取時間:0.5-2.5 納秒 * 磁盤的容量和每GB成本:相對於SRAM和DRAM,具有更大的容量,每GB成本較低。 總之,SRAM提供最快的存取時間,但每GB成本最高。DRAM比SRAM慢,但比SRAM便宜。磁盤的存取時間明顯較慢,但相對於SRAM和DRAM,它提供更大的存儲容量並且每GB成本更低。 ## Memory Hierarchy: Principle 記憶層次結構的原則是: 在任何給定時間,數據只在兩個相鄰層次之間進行複製。 * 上層:靠近處理器的層次,通常是速度較快、容量較小且使用較昂貴技術的層次。 * 下層:遠離處理器的層次,通常是速度較慢、容量較大且使用較廉價技術的層次。 ## Basics of Cache 緩存的基礎知識如下: 我們首先來看直接映射緩存。 塊放置(Block Placement): 對於較低層次的每個數據項,緩存中恰好有一個位置可以存放它。 地址映射:取模運算(模除操作),即將數據的地址除以緩存中的塊數量,得到的餘數就是在緩存中的位置。 ## Tags and Valid Bits: Block Finding 我們如何知道特定的資料塊存儲在Cache位置中呢? 儲存資料塊地址以及資料 實際上,只需要高位元 這被稱為標籤 如果一個位置沒有資料怎麼辦? 有效位元:1表示存在,0表示不存在 最初為0 ## Cache Misses 快取命中和未命中的讀取: 快取命中時,CPU 繼續正常運行。 在快取未命中時: 暫停 CPU 流水線 從下一層層次中提取資料塊 指令快取未命中 重新啟動指令提取 資料快取未命中 完成資料訪問 ## Write-Through 寫命中: 在資料寫入命中時,可以只更新快取中的資料塊 但這樣會導致快取和Memory不一致 寫通(Write-Through):同時更新Memory 但這會使寫入操作花費更長的時間 例如,如果基本 CPI = 1,有 10% 的指令是存取,對Memory的寫入需要 100 個週期 有效 CPI = 1 + 0.1×100 = 11 解決方案:寫入緩衝區(Write Buffer) 保存等待寫入Memory的資料 CPU 立即繼續運行 只有在寫入緩衝區已滿時才會在寫入時停頓