作者:Bird
上一回【Maker電子學】Flash記憶體的原理與應用—PART17,我們介紹了MMC與SD的身世之謎,說明了MMC與SD介面相同與不同之處,也提到了eMMC如何在儲存晶片市場拿下一片江山的過程。
這一回我們要開始介紹SD與eMMC的傳輸介面標準。
容量分級 #
SD卡誕生於1999年,那時的Windows還在用FAT16檔案系統,電腦的硬碟大概也才數十GB,因此最早的SD卡容量上限是2G Bytes。
這裡順便提一下FAT檔案系統。FAT是微軟為了早期的MS-DOS作業系統所開發的檔案系統,它從磁碟片的年代經歷了機械式硬碟一直到現在的Flash記憶體都可以使用,當前雖然已經有許多比FAT更強大、更可靠的檔案系統,但FAT以及它的各種後繼衍生版本如FAT32、exFAT仍然是很主流的檔案系統之一。
SD卡官方有定義使用FAT16為它的標準檔案系統,但實際上使用時我們仍然可以將SD卡格式化成別的檔案系統。
但隨著NAND Flash的製程快速進步,SD卡的容量也隨之快速上升,很快的 2 GB就不夠用了,因此 SD 協會在2006年推出了新一代的SD卡標準2.0,稱之為SDHC(SD High Capacity),將SD卡的容量上限提升到32 GB,並將SDHC的標準檔案系統訂為FAT32。
但也許是因為半導體製程進步的速度超乎預期,SDHC這一次的容量升級可能是人類科技史上少數不夠有遠見的決策,沒幾年32 GB 就不夠用了,因此SD協會在2009年,也就是SDHC推出的三年後,發布了新的標準3.01版,稱之為SDXC(SD eXtended Capacity),將容量上限一舉拉到了2 TB,並使用單一磁碟容量上限達64 Zetta Bytes的exFAT為標準檔案系統。
容量上限2 TB的SDXC撐了許多年,期間也歷經了數次SD卡介面標準的改版,從3.01乃至4.0、5.0、6.0等,但這幾次改版都是傳輸速度的提升,並沒有容量的增加。
SD卡容量最近的一次擴充是在2018年的7.0版,新的名稱是SDUC(SD Ultra Capacity),支援最大到128 TB的卡片,不過目前市場的主流仍然是SDXC,因為截止2024年底,市場上還買不到 SDUC卡的產品,已經公開發表的SanDisk Extreme PRO SDUC 4 TB則要2025年才會上市。
SD協會要求裝置端對SD卡的標準向前相容,因此一個可以讀寫SDXC的裝置一定可以讀寫標準SD和SDHC,但一個SDHC時代的裝置就無法讀寫SDXC。
速度分級 #
SD卡/MMC的速度分級就複雜多了。最早的MMC不管在MMC模式下還是SPI模式下,都只有一支資料接腳,而最快的clock頻率是20 MHz,因此最快的資料傳輸速度就是20 M / 8 = 2.5 MBytes/s。
SD 卡將傳輸資料的接腳數增加到了 4 支腳(DAT0-DAT3),同時也將clock的頻率上限提升到了 25 MHz,因此資料的傳輸速度就來到了25 M ×4 /8 = 12.5 MBytes/s。隨後的 SD 卡標準1.1裡,又定義了clock頻率50 MHz的高速標準,因此資料傳輸的速度就到了25 MBytes/sec。
但這僅是傳輸資料介面的速度,卡片裡面的控制器及NAND Flash 晶片能不能跟得上這個速度則是另外一件事。一張支援50 MHz high speed mode的SD卡,裡面的NAND Flash晶片可能只能用6 MBytes/sec 的速度寫入,因此我們需要另外一個標示來告訴使用者卡片實際上最快可以讀寫的速度,這就是SD Speed Class的定義。
在SDHC的卡片上,常常可以看到Class 4、Class 6、Class 10這樣的標示,其實Class 4就代表這張卡片最快可以跑到4 M Bytes/sec;Class 10就代表最快是10MBytes/sec。

(圖片來源:Bird 提供)
上圖是一張SDHC卡片的典型標示,右邊那個C的符號中寫一個10,就代表這是一張class 10的卡片。
其實在早年有一段時間,SD卡的速度還有人用「倍速」來標示,因為當時 CD-ROM 還是主流儲存媒體時,光碟機的讀取速度以150 KBytes/sec 為單位,這個速度的幾倍就是幾倍速,所以如果一張 SD 卡的讀取速度可以到 1.5 MBytes/sec,它就是 10 倍速,如果可以到 3 M bytes/sec,他就是 20 倍速,但這個標示方法並不是 SD 官方所承認的。
在 SD 的標準 3.0 版中,有一個新的資料傳輸介面叫做 UHS,意思是 Ultra High Speed,它除了將 clock 的頻率從原來的 25 MHz/50 MHz 一舉提升到最高 208 MHz 外,也多了一種資料同步模式叫做 DDR。
原來的資料傳輸方式是在clock訊號的上升緣取樣資料,而新的DDR模式則是在clock訊號的上升緣及下降緣都取樣資料,因此在clock頻率不變的前提下,資料傳輸的速度就變成兩倍,DDR的意思就是double data rate,而原來只在上升緣取樣資料的模式就稱之為SDR – single data rate。
因為有不同的取樣模式、不同的頻率,排列組合之後就有了好幾種傳輸模式:

(圖片來源:Bird 提供)
而且從UHS-I開始,SD卡的介面電壓從3.3 V 降到了1.8 V,以降低電磁干擾並降低驅動所需要的功率。
這種single-end的數位介面在SDR104的頻率之下差不多到極限了,頻率再往上增加除了會造成更嚴重的電磁干擾問題,訊號的取樣也越來越困難,因此如果需要更快的速度,就必須使用差動訊號的技術。USB、SATA、HDMI等傳輸標準,都是因為用了差動訊號技術而輕輕鬆鬆可以跑到數百MHz 甚至GHz以上。
於是,SD卡的UHS-II介面標準,就設計了全新的差動傳輸介面,而為了這新的差動傳輸介面,UHS-II的卡也多了8支接腳出來,位於原來接腳的下方。

(圖片來源:Bird 提供)
而UHS-II並非完全仰賴多出來的8支腳,它還是需要原來那9支腳裡面的幾支。

(圖片來源:Bird 提供)

(圖片來源:Bird 提供)
從上表可以看出來,除了電源接腳功用之外,UHS-II借用了UHS-I模式下的DAT0和DAT1做為它的clock訊號差動對:RCLK+/RCLK-,至於資料訊號的兩個差動對D0-/D0+和D1-/D1+則放在新的接腳上。
由於UHS-II的資料用通道有兩個,所以它支援全雙工,也就說它可以同時讀和寫,在這個模式下最快的速度是156 MB/sec,如果不使用全雙工模式的話,兩個資料通道同時用來讀或寫,可以達到單一資料通道的兩倍頻寬,也就說312 MB/sec。
UHS-II的介面還有一個很巧妙的設計:它的RCLK只是一個用來參考的reference clock,並沒有用來做資料的取樣和鎖定。在D0和D1差動對上的資料會經過8 b/10 b的channel coding再傳輸,而這個編碼的特色就是不管資料長什麼樣子,經過編碼之後都不會有超過5個以上連續的0或1,而且在一定長度區間內的0和1的個數是接近的。
這樣做的好處就是我們可以直接從編碼過後的資料中還原出clock 訊號,而不需要另外一個clock 訊號來做資料取樣。目前常用的串列差動傳輸技術,如SATA、PCI Express、USB 3.0等,都使用這個編碼技術。
由於UHS-II的傳輸速度大幅提升,因此SD協會也定義了新的卡片速度標示方法。這是一個長得像U的符號,中間寫一個數字。 U1代表速度是10MB/sec,U3代表速度是30MB/sec,以此類推。

(圖片來源:Bird 提供)
上圖就是一張SDXC的標示,那個I代表它是UHS-I的卡片,而U裡面加個3代表它的速度是30 MB/sec。
這邊特別要注意的是,卡片的速度標示寫的都是worse case,也就是在最最最差的情況下卡片能達到的傳輸速度。由於NAND Flash 的寫入遠比讀取慢得多,卡片標示的速度往往就是它的寫入速度上限,而讀取時的速度通常會比這個數字快上許多。
小結 #
這一回我們說明了SD卡的容量分級以及速度分級標準,並說明了達到不同傳輸速度所使用的技術,下一回我們要開始從軟體的觀點,來看看如何存取SD卡或eMMC。
(責任編輯:賴佩萱)