# 記憶體與儲存系統技術概覽
---
## Generalized Flip-n-Write(FNW)技術與狀態重映射
- **技術背景**:在**多層單元(MLC)相變記憶體(PCM)**中,每個記憶體單元可以儲存兩位元的數據組合(例如 00、01、11 和 10)。然而,不同數據組合的寫入操作消耗的時間和能量有所不同。
- **優化方案**:寫入 00 或 11 所需的時間和能耗較低,而寫入 01 或 10 則需要更多的時間和能耗。為了提升寫入效能,可以通過將數據重新映射至更節能的狀態來減少寫入開銷(例如:使用 11 來代表 10)。
- **進一步研究需求**:一般情境下如何根據原始內容進行數據編碼以增強寫入效能,仍需進一步探索。
---
# 非易失性記憶體技術概覽
---
## 1. 相變記憶體(Phase-change Memory, PCM)
- **原理**:PCM通過材料的相變來儲存數據,即在高溫下將材料轉換為晶態或非晶態,這兩種狀態具有不同的電阻。
- **優點**:高密度、持久性和較快的寫入速度,可作為DRAM或快閃記憶體的替代。
- **應用**:適合需要高寫入密度的環境,如儲存層和主記憶體層。
---
## 2. 自旋轉移力矩隨機存取記憶體(Spin-torque-transfer RAM, STT-RAM)
- **原理**:利用自旋電子學原理通過電子自旋來改變磁性層的方向,以儲存不同狀態的數據。
- **優點**:高寫入速度、低功耗和耐用性極佳(可承受大量寫入操作),且不受輻射影響。
- **應用**:適合嵌入式系統、消費級產品和需要高寫入頻率的應用。
---
## 3. 電阻式隨機存取記憶體(Resistive RAM, ReRAM)
- **原理**:通過施加電壓來改變材料的電阻來儲存數據,高阻和低阻分別表示不同的數據狀態。
- **優點**:結構簡單、密度高、低功耗,適合多層堆疊。
- **應用**:大容量儲存設備和能量敏感的設備,例如物聯網裝置和手持設備。
---
## 4. 賽道記憶體(Racetrack Memories, RMs)
- **原理**:利用磁性域壁的移動來存取數據,數據在納米線上存儲並通過電流脈衝移動。
- **優點**:具有高密度、快速存取速度,並且能顯著減少功耗。
- **應用**:適合大容量儲存需求的應用,特別是在能量效率要求高的情況下。
---
## 5. 域壁賽道記憶體(Domain-wall RM, DW-RM)
- **原理**:利用磁性域壁的穩定性和可控制性來儲存和移動數據。
- **優點**:可實現高密度、低功耗的數據存儲,並具備持久性。
- **應用**:高效能計算及數據中心領域,特別是針對數據密集型應用。
---
## 6. 斯格明子記憶體(Skyrmion RM, SK-RM)
- **原理**:利用斯格明子(一種拓撲穩定的磁結構)的移動來儲存數據,斯格明子能在低能耗下移動並具有高穩定性。
- **優點**:極高的資料密度和極低的能耗,有潛力在記憶體技術上突破現有的密度瓶頸。
- **應用**:前沿的記憶體技術,潛在應用包括未來的高密度和高效能儲存設備。
---
這些非易失性記憶體技術各自具有獨特的存取原理、優勢和應用場景,將成為未來資料儲存技術的重要支柱,以應對日益增長的數據需求。
## 自動存儲分層(Automatic Storage Tiering)
- **概念**:自動存儲分層是一種分層式儲存管理技術,旨在根據資料存取需求自動將數據分配到不同的儲存層次中,以提升儲存系統的效率。
- **分層結構**:將存儲設備組織成多層結構,根據效能需求和訪問頻率進行分配。高頻率存取數據放在速度較快的層次(如NVM),而低頻數據則放在速度較慢但容量較大的層次(如HDD)。
- **異構存儲的聯合管理**:在異構儲存環境中,自動存儲分層技術整合不同的記憶體技術並進行管理,以提升整體性能和資源利用率。
---

## 軟體定義存儲(Software-defined Storage)
- **概念**:利用虛擬化技術管理儲存資源,將儲存服務抽象化,成為可配置的虛擬資源池。
- **虛擬化儲存**:將儲存容量、存取頻寬和數據可靠性等功能進行虛擬化,並在虛擬機中進行分配。
- **跨層接口交換**:通過內建接口進行不同層之間的上下文交換,根據應用需求靈活分配資源。
- **用戶需求與妥協**:允許根據用戶或應用的需求(如效能、能效、容量)調整資源,也可以在數據正確性或存取延遲上做出妥協,以實現靈活資源配置。
---
## 記憶體內運算(Processing in Memory, PIM)
- **概念**:記憶體內運算將計算能力集成到記憶體中,減少數據在記憶體與處理器之間的傳輸,提升資料密集型應用的效能。
- **資料重力效應**:資料傾向於保留在原儲存位置。將計算能力移到數據所在的記憶體或儲存裝置可顯著減少延遲和功耗。
- **應用場景**:適用於高頻數據存取的應用,如大數據分析和人工智慧訓練,PIM可顯著提升效率。
---
# 資料結構與記憶體內運算(PIM)
---
## 1. 字典結構(Dictionary Structures)
字典結構是數據管理的核心,廣泛用於快速查找和數據排序。常見的字典結構包括:
- **二元搜尋樹(Binary Search Tree)**:一種樹狀結構,左子樹的所有節點小於父節點,右子樹的所有節點大於父節點。
- **紅黑樹(Red–Black Tree, RBT)**:一種平衡二元搜尋樹,具有插入和刪除操作效率較高的特點。
- **B樹家族(B-tree families)**:多路平衡樹,適用於大型數據和資料庫查找,B樹的每個節點可以有多個子節點。
---
## 2. 指標追蹤問題(Pointer-chasing Problem)
- **問題描述**:指標追蹤(Pointer-chasing)是一種常見於鏈接結構的操作方式,例如鏈表和樹狀結構。在遍歷或查找數據時,必須一層層地跟隨指標,但這一過程通常耗時。
- **影響**:指標追蹤操作的延遲會對系統性能產生負面影響,特別是在大型數據結構中,可能造成記憶體存取瓶頸。
---
## 3. 記憶體內運算中的字典結構(Dictionary Structures with PIM)
- **PIM 概念**:透過記憶體內運算技術(PIM),將計算功能直接集成至記憶體,減少數據搬移,以解決指標追蹤過程中的延遲問題。
- **實現架構**:
- **傳統架構 vs IMPICA 架構**:傳統架構需要多次記憶體存取,而 IMPICA(In-Memory Processing with IMPICA architecture)架構將指標追蹤操作整合到記憶體中,顯著提升數據查找效率。
---
## 4. PIM 支援的指令(PIM-enabled Instructions, PEI)
- **PEI 介紹**:PIM 支援的指令(PEI)是一套專為記憶體內運算設計的指令集,針對數據密集型操作進行優化。
- **優勢**:PEI 可提升數據處理速度,減少數據搬移所需的時間和功耗,特別適用於頻繁存取的數據處理應用。
---
## 5. PIM 在非易失性記憶體(NVM)上的挑戰
- **技術挑戰**:
- **單元耐久性問題**:NVM 的耐用性有限,多次寫入可能導致記憶體單元失效。
- **能耗和時間增加**:在 PIM 應用中頻繁寫入操作會增加能耗並降低性能。
- **適用場景**:探討適合使用 NVM 的 PIM 應用場景,以充分利用其持久性與儲存效能。
---
## 6. PRIME:用於人工神經網路訓練的 PIM 架構
- **概念**:PRIME 是一種基於 ReRAM 記憶體的 PIM 架構,專門用於訓練人工神經網路(ANNs)。
- **優勢**:PRIME 能夠利用 PIM 技術,減少神經網路訓練過程中的數據搬移,顯著提升計算效能和能源效率。
---
這些技術展示了記憶體內運算(PIM)在處理大數據和資料密集型應用中的潛力,能夠有效解決傳統架構下數據搬移的延遲問題,並為人工智能應用提供高效能的解決方案。
# 硬碟與緩存筆記
## 磁性記錄技術
### LMR 與 PMR
- **縱向磁性記錄 (LMR)**:數據平行於碟片表面記錄,數據密度有限。
- **垂直磁性記錄 (PMR)**:數據垂直於碟片表面記錄,顯著提高了存儲密度。
---
### CMR, SMR 與 IMR
- **傳統磁性記錄 (CMR)**:固定磁軌排列,高穩定性與相容性。
- **疊瓦式磁性記錄 (SMR)**:疊瓦式排列以提高密度,但降低了寫入速度。
- **交錯式磁性記錄 (IMR)**:分層寫入技術,增強存儲密度和數據管理效率。
---
### HAMR 與 MAMR
- **熱輔助磁性記錄 (HAMR)**:透過加熱碟片表面提高記錄密度。
- **微波輔助磁性記錄 (MAMR)**:利用微波提升磁性記錄效能,密度高且穩定性好。
---
## 機械硬碟的問題
- **機械性移動部件**:讀寫速度慢且不穩定,不適合即時系統。
- **高耗能**:不適合電池供電系統。
- **抗震能力差**:容易受震動影響,特別是在移動環境中。
- **縮小困難**:無法有效縮小以適應小型環境需求。
---
## 緩存 (Cache) vs 緩衝區 (Buffer)
- **緩存 (Cache)**:使用快速但容量較小的記憶體,暫存將來要讀取的數據。
- **緩衝區 (Buffer)**:暫存要寫入的數據,待系統閒置時寫回底層記憶體。
**問:什麼情況下緩存有效?什麼情況下緩衝區有效?**
- **緩存**適用於多次讀取的數據,以減少重複讀取的延遲。
- **緩衝區**適合處理需要先存儲後逐步寫入的數據流,避免直接寫入底層存儲的開銷。
---
## CPU 緩存 vs 記憶體緩存
- **CPU 緩存**:非常小且超高速,位於CPU內部或主板,使用組合聯想 (SA) 方式組織。
- **記憶體緩存 (頁緩存)**:較大且高速,使用全聯想 (FA) 方式組織,提升命中率。
---
## 聯想度 (Set Associativity)
- **全聯想 (Fully Associative)**:每個緩存區塊可放置於任何位置,命中率高但硬體實現複雜。
- **組聯想 (Set Associative)**:緩存分為多組,每組內有多個位置,適合平衡靈活性與硬體成本。
---
## 緩存的效益
緩存更有效的情況:
- **時間局部性 (Temporal Locality)**:先前訪問的數據會在不久的將來再次被訪問。
- **空間局部性 (Spatial Locality)**:先前訪問數據附近的數據會在不久的將來被訪問。
### 80/20 法則(帕累托法則)
- 80%的數據訪問集中在20%的數據上,是一種**冪律分佈**的例子。
---
## 緩存替換策略
1. **Belady算法 (OPT)**:理想情況下,根據未來的訪問模式選擇要替換的區塊。
2. **隨機替換 (Random)**:隨機替換一個區塊。
3. **先進先出 (FIFO)**:替換最早進入緩存的區塊。
4. **最近最少使用 (LRU)**:替換最久未使用的區塊。
5. **1位LRU (1-bit LRU)**:基於1位標誌的簡化LRU版本。
6. **最少使用頻率 (LFU)**:替換訪問次數最少的區塊。
7. **最近/最少使用頻率 (LRFU)**:綜合LRU和LFU的策略。
8. **清除優先LRU (CFLRU)**:優先替換乾淨的區塊,以減少回寫開銷。
### 替換策略的優缺點
- **隨機策略**:實現簡單,但無法利用局部性。
- **FIFO策略**:簡化管理,但無法利用空間局部性。
- **LRU策略**:適合時間局部性,但實現成本高。
- **1-bit LRU**:降低了LRU的實現成本。
- **LFU**:適合頻繁使用的數據,但實現複雜度高。
- **LRFU**:平衡了LRU和LFU的優點,但實現成本較高。
- **CFLRU**:減少寫回成本,但增加了管理複雜度。
---
## UMA(統一記憶體存取架構)
**UMA(Uniform Memory Access,統一記憶體存取)**是一種記憶體架構,所有處理器訪問主記憶體的速度和延遲一致。適用於小型對稱多處理 (SMP) 系統。
### UMA的優缺點
- **優點**:訪問時間一致,設計簡單。
- **缺點**:擴展性受限,記憶體頻寬可能成為瓶頸。
---
## 與NUMA的對比
在**NUMA(Non-Uniform Memory Access,非統一記憶體存取)**系統中,處理器存取本地記憶體的速度快於遠端記憶體。NUMA適用於大型系統,能提高效率。
# Moore's Law 與儲存系統
## Moore’s Law 概述
- **Moore's Law**:每年位密度(bit density)的提升導致每位元成本的比例性降低。
- 因此,每年位密度的提升也意味著電路中邏輯閘數量或儲存裝置中的儲存密度增加,而裝置成本基本保持不變。
### 範例
- **2000年**:USB 隨身碟容量約 8 MB。
- **2024年**:USB 隨身碟容量約 512 GB。
- 在24年間,每個裝置的容量增加了**64,000倍**!
---
## 非揮發性記憶體 (Nonvolatility)
- **傳統上**,記憶體指任何暫時或永久保存數據的裝置。
- **現代意義**上,能夠在沒有持續供電的情況下保存數據的裝置稱為**永久性記憶體 (Persistent Memory, PM)** 或 **非揮發性記憶體 (NVM)**。例如:機械硬碟、快閃記憶體、磁帶、PCM、ReRAM、STT-RAM、DW-RM 和 SK-RM。
### 持久性記憶體 (Persistent Memory) 與非揮發性記憶體 (NVM) 的區分
- **持久性記憶體 (PM)**:指的是**位元組可尋址**的非揮發性記憶體。
- **區塊式非揮發性記憶體 (Block-Based NVM)**:其他類型的非揮發性記憶體,通常是區塊可尋址的。
- **揮發性記憶體**:需要持續供電,常用於緩衝區、快取或主記憶體,如 SRAM 和 DRAM。
### 揮發性記憶體的應用
- **緩衝區 (Buffer)**:高速記憶體,用於暫時存放新寫入的數據。
- **快取 (Cache)**:高速記憶體,用於暫時存放即將再次讀取或寫入的數據。
- **主記憶體 (Main Memory)**:軟體代碼載入並執行的地方。
---
## 記憶體層次結構 (Memory Hierarchy)
記憶體層次結構反映了不同記憶體類型在速度、容量和揮發性方面的不同定位。
# IO 請求與儲存系統
## 發出 IO 請求 (Issuing an IO Request)
- **IO 請求**:由儲存的使用者(如使用者應用程式、作業系統、甚至是檔案系統)發起。
- **常見的 IO 請求**:讀取與寫入
- **其他 IO 請求**:刪除(flash專用)、修剪、裝置狀態查詢、健康報告(如 SMART)
- 儲存裝置需在**預定的時間內**回應任何請求;否則會觸發超時並被視為已損壞。
- 在許多情況下,儲存裝置反應過慢而被視為損壞。
---
## 隨機與連續 IO 請求 (Random and Sequential IO Requests)
- IO 請求針對一連續位元組或區塊地址範圍的數據。
- **隨機 IO 請求**:通常為小型請求,僅針對少量數據。
- **連續 IO 請求**:通常為大型請求,針對大量數據。
- 隨機與連續 IO 的界限通常明確,如 16 KB 或 32 KB。
---
## 同步與非同步 IO (Synchronous/Asynchronous IOs)
- **同步 IO**:當前指令完成後才可發出下一個 IO 指令。
- **非同步 IO**:指令可在隊列中等待(FIFO 或優先級隊列),再按偏好順序處理。
- 非同步 IO 提高了**吞吐量**,但**周轉時間不可預測**。
- **範例**:stdout 和 stderr 的性能差異。
- **寫入請求**通常為非同步,而**讀取請求**通常為同步,因應用程式需要讀取數據以繼續執行。
---
## 命令排隊 (Command Queuing)
- 初期每個儲存裝置一次僅接受來自單一應用程式的一個 IO 指令。
- 若該裝置尚未處理完該指令,其他應用程式的 IO 請求將被阻塞。
- **命令排隊**(Command Queuing)允許使用緩衝區來暫存多個待處理的 IO 指令,以防儲存裝置被單一應用程式阻塞。
### 命令排隊的實現
- **SCSI TCQ**(標記命令排隊)
- **ATA TCQ**
- **SATA NCQ**(原生命令排隊)
---
## 儲存系統的工程優化
- **應用層**:存取模式優化、數據結構和演算法重新設計等
- **中介層**:檔案系統或數據庫
- **裝置驅動程式**
- **韌體**
- **硬體**
---
## 存取模式 (Access Patterns)
- **存取模式**(或稱 IO 模式):數據的典型存取趨勢。
### 常見的存取模式
- **連續存取**:一次性存取大量數據。
- **隨機存取**:一次性存取少量數據。
- 一般來說,存取請求長度呈現雙峰分佈(bimodal),隨機與連續存取的界限通常在 32 個區段。
---
## 常見的性能指標 (Common Performance Metrics)
- **吞吐量 (Throughput)**:每單位時間完成的任務量(如讀/寫數據量)。
- 連續存取:MBps、GBps 等。
- 隨機存取:每秒 IO 次數(IOPS)。
- **回應時間 (Response Time)**:請求的完成時間與發出時間之差。
> 吞吐量與回應時間常呈**互斥關係**,提高一項通常會犧牲另一項。
- “幾乎所有系統設計都是妥協的結果。”
---
## 性能測量的案例 (Cases of Performance Measurement)
- **最佳情況**:理論上的性能上限。
- **平均情況**:長期觀點的期望性能。
- **最差情況**:即使在最糟的情況下也能保證的性能。
- **平攤性能 (Amortized Performance)**:在較長的時間段內的最差情況。
---
## 儲存的服務品質 (Quality of Service, QoS) 指標
- 更複雜的性能指標通常涉及多個 IO 操作的指標分佈。
# 儲存系統與性能指標
## 進階性能指標 (Sophisticated Performance Metrics)
- 進階的性能指標常涉及**多個 IO 操作**的指標分佈。
### 額外開銷 (Overheads)
- **前景開銷**:使用者可觀察到的成本,如性能和空間的影響,直接影響系統設計的評估結果。
- **背景開銷**:存在但隱藏於使用者觀察之外的成本,例如系統閒置期間的維護任務。
- 注意:**能量消耗**和**空間開銷**通常無法隱藏於背景。
---
## 尾延遲 (Tail Latency)
- **尾延遲**:一小部分的回應時間,通常是系統回應中所需時間最長的部分。
- 適用於 Zipfian 或 Ziph’s Law:熱門數據的相對出現頻率為 $\frac{1}{i}$,其中 \( i \) 為數據項的受歡迎程度。
---
## 阿姆達爾定律 (Amdahl’s Law)
- **阿姆達爾定律**描述了加速某個子任務對整體加速的影響。
- 假設任務分為兩部分,原始總運行時間 \( T = t_1 + t_2 \)。
- 若加速第二個子任務 \( x \) 倍,總運行時間變為 $T' = t_1 + \frac{t_2}{x}$。
- **加速比** $X = \frac{T}{T'} = \frac{t_1 + t_2}{t_1 + \frac{t_2}{x}}$。
- 當 $t_1 \gg t_2$ 時,加速比趨向於 1;當 $t_2 \gg t_1$ 時,加速比趨向於 $x$。
- **優化準則**:優先提升常見情境的性能。
---
## 80/20 法則 (Pareto Principle)
- **Pareto 原則**(80-20法則):最熱門的 20% 數據佔 80% 的訪問請求。
- 常見的變體還有 90-10、70-30 等原則。
- 根據 Pareto 最優法則,緩存可顯著提升記憶體層次結構的平均記憶體訪問時間 (AMAT)。
---
## 性能基準 (Performance Benchmarks)
- **性能基準**是一組標準化的程序,用於測量目標系統、設備或組件的性能指標。
### 基準的類型
- **計算效能**:CPU 或 GPU 基準測試。
- **網路狀況**:網路基準測試。
- **記憶體–儲存系統和數據 IO 性能**:IO 基準測試。
### 基準的兩大類型
- **微基準 (Microbenchmarks)**:測試系統在極端和合成 IO 工作負載下的特定方面。
- **宏基準 (Macrobenchmarks)**:測試代表性現實 IO 工作負載下的系統行為。
---
## Little's Formula
- Little's 公式:\( L = $\lambda$ $W$)
- **L**:系統中的平均單位數量。
- **$\lambda$**:到達率。
- **W**:單位在系統中的平均停留時間。
### 範例
- 假設餐廳有 30 個座位且總是滿座,顧客平均停留時間為 30 分鐘。預期每小時有 60 位顧客進出。
---
## 模擬與仿真 (Simulation vs. Emulation)
- **模型**:對事物的簡化,以便更易理解。
- **模擬 (Simulation)**:重現外部、宏觀行為。例如:儲存裝置的 trace-driven 模擬。
- **仿真 (Emulation)**:重現內部、微觀機制。例如:微計算機的 cycle-accurate 仿真。
---
## 硬碟性能建模 (Hard Disk Performance Modeling)
- 使用測量的尋道時間與距離曲線來建模硬碟性能。
- 參考:Ruemmler 和 Wilkes 的硬碟建模研究。
---
## 錯誤檢測與糾正碼 (Error Correction and Detection Codes)
- **錯誤檢測碼 (EDC)**:通過添加冗餘數據來檢測位錯誤。
- **錯誤糾正碼 (ECC)**:通過添加更多冗餘數據,即使出現有限的位錯誤也能推導出正確數據。
### 常見的 EDC/ECC 類型
- 奇偶校驗檢查、Luhn's Code、Reed–Solomon (RS)、Bose–Chaudhuri–Hocquenghem (BCH)、低密度奇偶校驗 (LDPC)。
---
## 設計議題 (Design Issues)
- **緩存/緩衝演算法**。
- **空間管理**:數據分配與垃圾回收。
- **數據可靠性增強**:超越 RAID 管理,複製 vs 冗餘 (EDC 和 ECC)。
- **非統一記憶體存取 (NUMA) 儲存架構**。
- 針對**性能**、**能量**、**設備壽命**的設計。
- **專用儲存系統**。
---
## RAID(獨立磁碟冗餘陣列)
- **RAID**:一種數據存儲虛擬化技術,將多個物理磁碟驅動器組合成邏輯單元,以提高數據可靠性和性能。
### RAID 層級
- **RAID 0**:區塊級分條,不提供鏡像或奇偶校驗。
- **RAID 1**:鏡像,不提供奇偶校驗或分條。
- **RAID 2**:位級分條,使用 Hamming-code 奇偶校驗。
- **RAID 3**:字節級分條,具有專用奇偶校驗。
- **RAID 4**:區塊級分條,具有專用奇偶校驗。
- **RAID 5**:區塊級分條,分散奇偶校驗。
- **RAID 6**:區塊級分條,雙重分散奇偶校驗。
- **RAID 1+0 (10)** 和 **0+1 (01)**:結合 RAID 0 和 RAID 1,以提高可靠性或性能。
- **RAID 50 (RAID 5+0)**:結合 RAID 0 的區塊級分條和 RAID 5 的分散奇偶校驗。
- **RAID 60 (RAID 6+0)**:結合 RAID 0 的區塊級分條和 RAID 6 的雙重分散奇偶校驗。
# NAND Flash Memory 筆記
## NAND Flash Memory 的獨特特性
1. **基於頁面的讀寫操作**:NAND快閃記憶體以頁為單位進行讀寫。
2. **一次寫入特性(Write-once Property)**
- 使用異地更新(out-place update),在寫入資料時不會覆蓋舊資料,而是寫入新位置。
- **放鬆的一次寫入特性**:適用於SLC(單層單元)。
- **嚴格的一次寫入特性**:適用於MLC(多層單元)、TLC和QLC等。
3. **批量消除特性**:以區塊為單位進行消除操作。
4. **寫入速度較慢**:寫入速度通常比讀取慢7至10倍。
5. **磨損效應**:每個區塊的擦除次數有限,視單元層級與組織而定,通常為 \(10^2\) 至 \(10^6\) 次。
## NAND Flash Memory 的演進
- NAND快閃記憶體經歷了以下演變過程:SLC → MLC → TLC → QLC
- 隨著層級的增加,單位儲存密度提高,但性能和耐久性下降。
### 各類 NAND 記憶體單元的特性
1. **SLC(Single-Level Cell)**
- 每單元存儲1位元
- 性能最佳,耐久性最高
2. **MLC(Multi-Level Cell)**
- 每單元存儲2位元
- 性能與耐久性稍遜於SLC
3. **TLC(Triple-Level Cell)**
- 每單元存儲3位元
- 增加密度但降低性能與耐久性
4. **QLC(Quad-Level Cell)**
- 每單元存儲4位元
- 密度最高但性能最差且耐久性最低
### 電壓參考
- **參考電壓(Reference Voltage)**:用於判斷快閃記憶體單元狀態的電壓值。每種儲存狀態(例如0或1)對應一個特定的電壓範圍,通過施加參考電壓可測定當前單元狀態。
- **閾值電壓(Threshold Voltage)**:使快閃記憶體單元從「不通過」變為「通過」狀態所需的最小電壓。
## NAND Flash Memory 的演進(續)
- **較高層級的單元意味著較短的資料保存時間**:隨著NAND快閃記憶體單元層級(如SLC、MLC、TLC、QLC)的增加,單元的資料保存時間會縮短。
## 快閃記憶體的操作
- **寫入(程式化)**
- 將電子移入浮動閘極(FG),提升閾值電壓。
- **擦除**
- 將電子移出浮動閘極(FG),降低閾值電壓。
## 2D平面快閃記憶體到3D快閃記憶體的演變
- **從2D/平面快閃記憶體到3D快閃記憶體,再到多層3D快閃**
- 3D NAND的讀寫吞吐量優於平面快閃,提供更大儲存空間,但也帶來程式干擾問題。
## 3D快閃記憶體的架構演變趨勢
- 更小的記憶單元
- 更高的儲存密度
- 更低的每GB成本
- 較慢的存取性能
- 較短的寫入耐久性
## 固態硬碟(SSD)
- **固態硬碟**是由NAND快閃記憶體組成的高階電子儲存裝置。
- 主要組件包括:
- 設備控制器
- 快閃記憶體晶片
- 緩衝晶片(SRAM或DRAM)
- 印刷電路板(PCB)
- 介面(如SATA、SAS、PCIe或USB)
## SSD的韌體
- **韌體(Firmware, FW)**:由設備控制器執行,用於設備管理。在快閃SSD中,這類韌體稱為**快閃轉換層**(Flash Translation Layer, FTL)。
## 快閃SSD與HDD的比較(基於NAND快閃記憶體的優勢)
- 高性能
- 低運行能耗
- 抗震
- 低噪音
- 小型化
## 快閃記憶體和SSD的發展歷史
- 1976年:基於RAM的「大容量核心」SSD(2MB)
- 1983年:在Psion推出快閃記憶卡
- 1991年:SanDisk推出20MB SSD
- 2009年:SSD容量達1TB,與HDD相當
- 2013年:PCIe SSD的出現
- 2014年:SSD首次部署於企業伺服器
- 2016年:NVDIMM問世
- 2017年:Intel 3D XPoint記憶體SSD
- 2018年:企業級SSD首次使用QLC快閃
- 2022年:推出超過200層的3D快閃記憶體
## 儲存堆疊(Storage Stack)
- 儲存堆疊由電腦系統的軟體、韌體和硬體組成
- **層級設計**:每層僅與下一層進行溝通,儘管層間通訊延遲會影響性能,但有助於複雜系統的開發、除錯和維護
## NAND快閃記憶體的固有挑戰
- **擦除需求**:寫入前需要先擦除(一次寫入特性)
- **磨損效應**:會限制服務壽命(需進行磨損平衡)
- **資料錯誤**:寫入和讀取時可能出現擾動錯誤
- **資料保存錯誤**
- **壞區管理**:需有效管理初始化和運行時的壞區
## 研究議題
- **適當的快閃管理技術**可提升快閃記憶體的可靠性,主要影響因素包括:
- SLC、MLC、TLC和3D快閃的選擇
- 磨損平衡算法
- 壞區管理技術
- 錯誤檢測和校正技術
- 寫入放大效應