4.17.2008

nand flash - page content layout

原來Nandflash Page content layout 是沒有一定的。

一個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 則留言:

Kasiko 提到...

應該只有第一個才是正確的.在實際的設計上.data area和spare area是兩個的空間.

harlan 提到...

可是我看過有第二種設計, 好處在於不用掃全部page就可以知道那段data area出問題.
第一種設計在實際上有什麼特別的好處?

Checko 提到...

我本來也以為第一是標準的。
但是發現其實並沒有強硬區分main, spare area。也就是說,其實spare area 可以當作main 來用。

然後就看到有人用(2)。本來以為這樣就可以像harlan說得的了。

但是..ECC 也有ECC呀,也就說,ECC1.2.3.4 還會產生一個ECC-ECC。
如果放在後面,那(2)的好處也就消失了。

所以?不知道(2)的好處在哪。

或者,應改把ECC-ECC放在最前面 ?
--- 但是這樣寫入時又有問題...

Kasiko 提到...

第一種設計就是NAND FLASH 實體的設計,因為NAND FLASH 讀寫的方式:command + data. 以第二種設計會讓OS 的driver設計上會複雜多了.

另外補充,如我最初的說法.data ,spare不是同一個實體.所以當data的block為bad block不會影響spare的block好壞.
但如果加入ECC後,上面所說好壞的影響就微乎其微了.