為什麼這篇ecc演算法鄉民發文收入到精華區:因為在ecc演算法這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者mosquito520 ( )看板Electronics標題Re: [問題] NAND Flas...
※ 引述《jfsu (水精靈)》之銘言:
: ※ 引述《looter (隬莉)》之銘言:
: : 非本科系但工作遇到相問題
: : 麻煩版上高手解惑
: : 請問NAND flash 的ECC是
因為NAND本身的特性,每個Cell有寫入次數的壽命,
又因為製程跟設計的緣故,每個Block的壽命不一定,
或是因為不正常斷電導致資料寫入不完全造成的毀損,
所以透過ECC這個演算法去驗證每個Block是不是正常。
: : 1. NAND Flash內建的一個演算功能? 寫入資料時比對?
: 有內建,也有做在Controller上;Spec都會寫。
: 寫入與讀取都需要。
一般市面的產品分成Pure NAND跟其他產品
Pure NAND就是單純的NAND Flash,不含Controller,
需搭配Controller或是內建Controller的SOC使用,
非Pure NAND就是NAND Flash加上Controller,一般會被當作另外的產品
例如eMMC、SD卡,將NAND Flash跟Controller封裝在一起
或USB隨身碟、SSD固態硬碟,將NAND Flash跟Controller做成同一個產品
ECC的檢查是放在Controller上面
至於檢查的時機我只大概知道幾個,
例如第一次燒錄前的Bad Block Check之類的,
好像有些eMMC出廠的時候就會跑過一次,但這我有些不是很肯定
具體要看廠商的作法
: : 2. 控制器(CPU)上控制器(Memory controller) 對NAND的偵錯?
: 承上,內建的話就在memory裡頭做,做在controller就由controller做。
: : 3. HW ECC跟SW ECC之間的差異?
: : 先感謝了
: HW的ECC主要都是組合邏輯,比較佔晶片空間,也會影響效能
: SW的話...不知道...哈...目前都是做HW的。
: 可能得多給個空間放這些SW code。
HW或SW取決於各自的實現方式,也有可能是混和
例如將ECC演算法的運算用硬體實現,搭配MCU做控制,增加產品的彈性
這部分都是取決於Controller
內建Controller的產品,
以eMMC來說,他不需要讓客戶知道ECC如何做或是Controller的細節。
他只要讓客戶知道我的eMMC符合JEDEC的標準就足夠,
所以對使用者來說eMMC看起來像是純粹的硬體,
但實際上eMMC有分FW版本,所以裡面是有MCU控制的
eMMC內有分不同的Block作為不同的用途跟不同的可靠度,也是由MCU控制的
所以ECC是在memory還是Controller做?這個問題我就無法回答
也說不定是在Controller裡面的memory做XD
Pure NAND的話,就取決於SOC的Controller或是獨立的Controller怎麼實作
獨立的Controller我沒用過,不過應該也是內建MCU去增加產品的彈性
依稀記得以前在網路上有挖到過某一家USB Disk flash controller的Source
內建SOC的controller就不一定,
有一些Vendor把這部分包成library,所以也看不到他實際怎麼運作
有些Vendor這部分是開放的,
至少我之前看過某一家的Code,spare area放的方式跟其他家硬是不一樣
(Spare area:每個Block當中,用來記載判斷Bad block資訊的地方)
但ECC應該都是透過硬體實現,畢竟ECC越長,演算法的運算量越大,
不大可能犧牲效能去幹這件事...
以上給你做個參考:)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.187.83
※ 文章網址: http://www.ptt.cc/bbs/Electronics/M.1402035627.A.0B7.html