8086/8088有七種基本的尋址方式:立即尋找,寄存器尋址,直接尋址,寄存器間接尋址,寄存器相對尋址,基址加變址尋址,相對基址加變址尋址。
NAND Flash的尋址方式和NAND Flash的memory組織方式緊密相關。NAND Flash的數據是以bit的方式保存在memory cell,一般來說,一個cell中只能存儲一個bit。這些cell以8個或者16個為單位,連成bit line,形成所謂的byte(x8)/word(x16),這就是NAND Device的位寬。這些Line會再組成Page,通常是528Byte/page或者264Word/page。然后,每32個page形成一個Block,Sizeof(block)=16kByte Block是NAND Flash中最大的操作單元,擦除就是按照block為單位完成的,而編程/讀取是按照page為單位完成的。所以,按照這樣的組織方式可以形成所謂的三類地址:
-Block Address
-Page Address
-Column Address
首先,對于NAND Flash來講,地址和命令只能在I/O[7:0]上傳遞,數據寬度可以是8位或者16位,但是,對于x16的NAND Device,I/O[15:8]只用于傳遞數據。清楚了這一點,我們就可以開始分析NAND Flash的尋址方式了。
以528Byte/page 總容量512Mbit+512kbyte的NAND器件為例:因為1 block="16kbyte",512Mbit="64Mbyte",Numberof(block)=1024 1block="32page", 1page="528byte"=512byte(Main Area)+16byte(Spare Area) 用戶數據保存在main area中。512byte需要9bit來表示,對于528byte系列的NAND,這512byte被分成1st half和2nd half, 各自的訪問由所謂的pointer operation命令來選擇,也就是選擇了bit8的高低。因此A8就是halfpage pointer(這是我給出的一個名字),A[7:0]就是所謂的column address。32個page需要5bit來表示,占用A[13:9],即該page在塊內的相對地址Block的地址是由A14以上的bit來表示,例如512Mb的NAND,共4096block,因此,需要12個bit 來表示,即A[25:14],如果是1Gbit的528byte/page的NAND Flash,則block address用A[26:24]表示。而page address就是blcok address|page address in block。
NAND Flash的地址表示為:
Block Address|Page Address in block|halfpage pointer|Column Address
地址傳送順序是Column Address, Page Address, Block Address。由于地址只能在I/O[7:0]上傳遞,因此,必須采用移位的方式進行。例如,對于512Mbit x8的NAND flash,地址范圍是0~0x3FF_FFFF,只要是這個范圍內的數值表示的地址都是有效的。