一個page = main data area + spare area.
以 pagesize 4k 為例:
有 4k 的main data area 和 128 byte 的spare area。
4k 和 128 實際上是連續的,以 512 byte 需要 9 bytes ECC的裝置。
可以這樣安排:
或是
|----512----|----512----|----512----|----512----|--ECC1--|--ECC2--|--ECC3--|--ECC4--|-ECCECC-|
|----512----|--ECC1--|----512----|--ECC2--|----512----|--ECC3--|----512----|--ECC4--|-ECCECC-|
4 則留言:
應該只有第一個才是正確的.在實際的設計上.data area和spare area是兩個的空間.
可是我看過有第二種設計, 好處在於不用掃全部page就可以知道那段data area出問題.
第一種設計在實際上有什麼特別的好處?
我本來也以為第一是標準的。
但是發現其實並沒有強硬區分main, spare area。也就是說,其實spare area 可以當作main 來用。
然後就看到有人用(2)。本來以為這樣就可以像harlan說得的了。
但是..ECC 也有ECC呀,也就說,ECC1.2.3.4 還會產生一個ECC-ECC。
如果放在後面,那(2)的好處也就消失了。
所以?不知道(2)的好處在哪。
或者,應改把ECC-ECC放在最前面 ?
--- 但是這樣寫入時又有問題...
第一種設計就是NAND FLASH 實體的設計,因為NAND FLASH 讀寫的方式:command + data. 以第二種設計會讓OS 的driver設計上會複雜多了.
另外補充,如我最初的說法.data ,spare不是同一個實體.所以當data的block為bad block不會影響spare的block好壞.
但如果加入ECC後,上面所說好壞的影響就微乎其微了.
張貼留言