Re: [問題] NAND Flash ECC

看板Electronics作者 ( )時間11年前 (2014/06/06 14:20), 編輯推噓5(5012)
留言17則, 6人參與, 最新討論串3/3 (看更多)
※ 引述《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

06/06 21:02, , 1F
ecc看bit數的
06/06 21:02, 1F

06/07 11:26, , 2F
看來ECC做法很多,感謝您解答,大推!
06/07 11:26, 2F

06/07 11:34, , 3F
ECC是錯誤更正碼,而根據不同的ECC,有許多對應的演算法
06/07 11:34, 3F

06/07 11:35, , 4F
還有bad block detection跟ECC檢查是兩件沒有關聯的事情唷
06/07 11:35, 4F

06/07 22:27, , 5F
ECC是具有更正錯誤的能力 detection只能偵測有無錯誤
06/07 22:27, 5F

06/07 22:30, , 6F
當錯誤的bit數在ECC的保護範圍內 這樣還能夠解出正確的Data
06/07 22:30, 6F

06/08 01:57, , 7F
我是從應用的角度以及先前跟FAE討論的印象回答
06/08 01:57, 7F

06/08 01:58, , 8F
所以若是有錯誤的地方也請盡量指證:D
06/08 01:58, 8F

06/08 01:58, , 9F
ECC有錯誤更正的能力 但詳細的行為我沒辦法很肯定
06/08 01:58, 9F

06/08 01:59, , 10F
例如檢查有錯,算回正確資料後是改用新的Block?
06/08 01:59, 10F

06/08 01:59, , 11F
還是持續沿用原來的Block直到整個Block爛掉?
06/08 01:59, 11F

06/08 02:00, , 12F
Badblock偵測我沒記錯的話是根據sparearea的資料判斷
06/08 02:00, 12F

06/08 02:01, , 13F
但ECC檢查如果資料有誤,不需要mark bad block嗎??
06/08 02:01, 13F

06/08 02:02, , 14F
另外...我不確定ECC操作的單位是Page還是Block...XD
06/08 02:02, 14F

06/08 02:02, , 15F
在家躺了兩個多月,有些東西都還回去了XDDD
06/08 02:02, 15F

06/08 02:03, , 16F
還請各位先進多多指教:)
06/08 02:03, 16F

06/10 00:15, , 17F
06/10 00:15, 17F
文章代碼(AID): #1JaLsh2t (Electronics)
討論串 (同標題文章)
文章代碼(AID): #1JaLsh2t (Electronics)