[爆卦]ecc演算法是什麼?優點缺點精華區懶人包

為什麼這篇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
mmonkeyboyy:ecc看bit數的 06/06 21:02
looter:看來ECC做法很多,感謝您解答,大推! 06/07 11:26
weop388:ECC是錯誤更正碼,而根據不同的ECC,有許多對應的演算法 06/07 11:34
weop388:還有bad block detection跟ECC檢查是兩件沒有關聯的事情唷 06/07 11:35
haworz:ECC是具有更正錯誤的能力 detection只能偵測有無錯誤 06/07 22:27
haworz:當錯誤的bit數在ECC的保護範圍內 這樣還能夠解出正確的Data 06/07 22:30
mosquito520:我是從應用的角度以及先前跟FAE討論的印象回答 06/08 01:57
mosquito520:所以若是有錯誤的地方也請盡量指證:D 06/08 01:58
mosquito520:ECC有錯誤更正的能力 但詳細的行為我沒辦法很肯定 06/08 01:58
mosquito520:例如檢查有錯,算回正確資料後是改用新的Block? 06/08 01:59
mosquito520:還是持續沿用原來的Block直到整個Block爛掉? 06/08 01:59
mosquito520:Badblock偵測我沒記錯的話是根據sparearea的資料判斷 06/08 02:00
mosquito520:但ECC檢查如果資料有誤,不需要mark bad block嗎?? 06/08 02:01
mosquito520:另外...我不確定ECC操作的單位是Page還是Block...XD 06/08 02:02
mosquito520:在家躺了兩個多月,有些東西都還回去了XDDD 06/08 02:02
mosquito520:還請各位先進多多指教:) 06/08 02:03
Baneling:推 06/10 00:15

你可能也想看看

搜尋相關網站