---
# System prepended metadata

title: Memory

---

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 立即繼續運行
只有在寫入緩衝區已滿時才會在寫入時停頓



