Monday, June 16, 2008

The Floating Gate

Floating-gate transistor

浮動閘(floating gate)一詞會讓我銘記於心,是因為閱讀了《矽眼》,該書提到以浮動閘紀錄類神經元突觸加權值,這是「類比」儲存的一個應用。

然而,對多數內嵌系統設計人員來說,浮動閘是用在「數位」儲存的,諸如 EPROM, EEPROM, NOR flash, NAND flash 等。

無論是 EPROM, EEPROM 或 NOR flash ,早先都是設計來在上面直接跑程式的(不用 copy 到 RAM 上跑,術語叫做 execute in place, XIP),所以有獨立的 data bus 及 address bus 。

為了省空間,後來很多 MCU 都把 EPROM, EEPROM 或 NOR flash 包進同一棵 chip 了,這造成外部的 EEPROM 或 Flash 開始走 serial 路線。 serial EEPROM 或 serial Flash 對外的 pin 腳雖然大幅精簡了,卻失去了 XIP 的特性,因此主要被拿來儲存程式之外的東西。

由於 EEPROM 是 byte-wise writable 的,用起來超方便,所以資料量不大時我們都會用它。例如一些儀表類的內嵌系統,諸如血壓計之類的,其內部的關鍵零件是感測器,這些感測器的元件特性會隨溫度等外在因素漂移,所以需要在事後作校正,這些校正用的參數就很適合用 serial EEPROM 儲存。

有時候我們要存的不僅僅是簡短的幾筆,而是長時間累積下來的一大串 log 。例如未來的病患可能會長時間配戴血壓計血糖計之類的,隨時紀錄血壓血糖變化,然後隔固定時間,自動將這些資料傳到醫院的監控中心。這種場合因為要存的資料量較大,也許該考慮採用 serial Flash 。

操作 serial (NOR) Flash 跟操作 serial EEPROM 類似,都有 OP-Code Phase, Address Phase, Data Phase 等三個階段。偏偏 (NOR) flash 只能 block-wise writable ,這意味著就算只想改變一個 block 的某幾個 bytes 的內容,還是得先把整個 block 的值都讀出來,在 RAM 中修改後,再寫回去。

這幾年正火熱的 NAND Flash 一開始就是設計來替代硬碟這類大容量的儲存媒體。它雖價廉、肚大,卻是個極不穩定的傢伙,不但允許出廠就有壞塊(bad block),使用過程壞塊還會隨機增加,更扯的是廠商還信誓旦旦說這是良品,要大家看著辦。良品都這副德行了,真不敢想像一些 down grade 的會長成什麼樣子 :p

文末,再附上簡短的比較:

  • (parallel) EEPROM
    • Byte-writable, i.e. byte-erasable and byte-programmable
    • Execute in place
    • Write special commands to unlock, erase or write
  • (parallel) NOR Flash
    • Erasing and writing must be on block-by-block basis
    • Execute in place
    • Write special commands to unlock, erase or write
  • serial EEPROM
    • EEPROM with serial interface
    • 3 phase commands for operations, e.g. read, write, and erase
    • Wear leveling is required
  • serial (NOR) Flash
    • NOR Flash with serial interface
    • 3 phase commands for operations, e.g. read, write, and erase
    • Page for programming; block for erasure
    • Wear leveling is required
  • NAND Flash
    • As a hard disk replacer
    • Use a NAND flash specific interface
    • Page for programming; block for erasure
    • Wear leveling is required
    • Bad block management is must
Tags: [] [] [] []

1 comments:

York said...

相對於 NAND flash 的複雜性,這裡對它的說明竟只有短短幾句,這實在是因為 NAND flash 麻煩到我都懶得多說了 :p

說正經的,針對 NAND flash ,我最少會再規劃一篇文來補述,在裡面找個有去的議題來聊聊。

等不急的人,可以先到 Chamber 前輩的網站逛逛,他分享了一系列的技術文章,其中有幾篇是關於 NAND flash 的(例如:USB 結語 + NAND 楔子簡介 NAND Flash 及應用,和 NAND Flash Application