固態硬碟(Solid State Drive, SSD) vs. 機械式硬碟(Hard Disk Drive, HDD)

SSD 的優點為:
沒有機械式設備,所以沒有躁音、能夠抗震
隨機存取較為快速,因為不用將讀寫頭移到特定位置

SSD 的缺點是:
價格較高
修改的單位是以 block 為單位,也就是說,就算只改 1 bit,也要將該 bit 所屬的 block erase 之後,再寫入整個 block,也因為這個因素,導致寫入速度遠低於讀取速度
同一 block 能夠重覆寫入的次數有限,這需要導入硬體或軟體的解法,稱為 "wear leveling",來確保不會有任一 block 被重覆寫入相對太多次。

SSD 的儲存介質是一種快閃記憶體,又稱為 Flash。




Flash

NOR flash 是最先出現的 flash storage,最方便的地方是 NOR flash 允許 CPU 直接存取,這樣的話, CPU 就能直接執行儲存在 NOR flash 上的程式碼,對於 bootloader 來說是非常方便的,這樣就不用先將 bootloader 複製到 RAM。

NAND flash 是目前最廣為使用的 flash,因為它的價格較低,缺點是 NAND 是一個外部裝置,必須要透過 controller 才能存取這個裝置,而 CPU 也無法直接執行 NAND flash 上的程式碼,必須先複製到 RAM 之後,才能執行。另一個缺點是 NAND flash 可能在出廠時,就會有有瑕疵的 block,須要靠硬體或軟體來定位並捨棄壞掉的 block。

NAND flash 分成兩種,第一種是模擬標準區塊介面(standard block interface),由硬體支援快閃記憶體轉換層(Flash Translation Layer, FTL),由 FTL 負責 erase blocks、實作 wear leveling 及 處理壞掉的 blocks。這類的 flash 就是 隨身碟(USB flash drives)、記憶卡(media cards)、嵌入式多媒體存儲卡(embedded MMC, eMMC) 以及 固態硬碟(Solid State Disks, SSD)。作業系統無法針對 flash sector 作控制,因為作業系統只能看到模擬的區塊裝置(block device)。這能降低作業系統的軟體複雜度,但是硬體製造商通常不會開放 快閃記憶體轉換層 的實作演算法,但是有人說這種作法其實是用來掩飾它糟糕的實作方式。

第二種 NAND flash 是 raw flash,作業系統可以直接存取 flash controller,而直接控制 flash blocks,也能計算該 block 被 erase 的次數,linux kernel 實作 記憶體技術設備(Memory Technology Device, MTD)子系統 來存取及控制各式各樣 flash 裝置。這給予作業系統極大的自由來實作與 hardware 無關的軟體來控制 flash storage,例如檔案系統。

Linux MTD 架構圖如下:






Reference

Managing flash storage with Linux




文字內容 或 影像內容 部份參考、引用自網路,如有侵權,請告知,謝謝。
arrow
arrow
    全站熱搜

    silverwind1982 發表在 痞客邦 留言(0) 人氣()