public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
* Does mtd support two-plane page program for nand flash?
@ 2007-03-07  6:57 falls huang
  2007-03-07 14:34 ` Jörn Engel
  0 siblings, 1 reply; 9+ messages in thread
From: falls huang @ 2007-03-07  6:57 UTC (permalink / raw)
  To: linux-mtd

Hello!

    AFAIK , the samsung's nand flash K9LAG08U0M/K9HBG08U1M/K9MCG08U5M
support two-plane page program. For example: The K9LAG08U0M is
arranged in four 4Gb memory planes.Each plane contains 2,048 blocks
and 2112 byte page registers. This allows it to perform simultaneous
page program and block erase by selecting one page or block from each
plane. ( refer to the datasheet of K9LAG08U0M)

  I have searched the source of mtd/jffs2/jffs3 and I found that them
don't support two-plane page program . How should I add two-plane page
program ? Should I modify the source of mtd or jffs2/jffs3 ?

  Thanks in advance!


-- 
Regards
Falls Huang

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Does mtd support two-plane page program for nand flash?
  2007-03-07  6:57 Does mtd support two-plane page program for nand flash? falls huang
@ 2007-03-07 14:34 ` Jörn Engel
  2007-03-09  2:15   ` falls huang
  2007-03-09  8:09   ` Adrian Hunter
  0 siblings, 2 replies; 9+ messages in thread
From: Jörn Engel @ 2007-03-07 14:34 UTC (permalink / raw)
  To: falls huang; +Cc: linux-mtd

On Wed, 7 March 2007 14:57:02 +0800, falls huang wrote:
> 
>     AFAIK , the samsung's nand flash K9LAG08U0M/K9HBG08U1M/K9MCG08U5M
> support two-plane page program. For example: The K9LAG08U0M is
> arranged in four 4Gb memory planes.Each plane contains 2,048 blocks
> and 2112 byte page registers. This allows it to perform simultaneous
> page program and block erase by selecting one page or block from each
> plane. ( refer to the datasheet of K9LAG08U0M)

Interesting.  I was wondering when devices like this would show up.
Do you have a spec for those chips?

>   I have searched the source of mtd/jffs2/jffs3 and I found that them
> don't support two-plane page program . How should I add two-plane page
> program ? Should I modify the source of mtd or jffs2/jffs3 ?

Not sure how much interest in this exists for JFFS2.  Two NOR chips can
work in parallel just as easily as your two-plane chip.  But noone has
ever tried to use this in any way.

For LogFS I am very interested.  Supporting parallel writes to several
chips (or planes on one chip) is on my list.  MTD should export roughly:
 - one device for all planes/chips,
 - preferrably eraseblock interleaving between all planes/chips or
 - alternatively linearly appending all planes/chips,
 - information about how many planes/chips exists.

What is the latency of reads/writes/erases?  I have already asked for
the spec, haven't I? ;)

Jörn

-- 
The cost of changing business rules is much more expensive for software
than for a secretaty.
-- unknown

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Does mtd support two-plane page program for nand flash?
  2007-03-07 14:34 ` Jörn Engel
@ 2007-03-09  2:15   ` falls huang
  2007-03-09  8:09   ` Adrian Hunter
  1 sibling, 0 replies; 9+ messages in thread
From: falls huang @ 2007-03-09  2:15 UTC (permalink / raw)
  To: linux-mtd

Hello!

You can download its datasheet from here:
ftp://218.22.45.5/misc/Books/K9LAG08U0M_0.7.pdf

K9LAG08U0M/K9HBG08U1M are MLC nand flash ,
MLC NAND flash is becoming more and more popular for its cheap price.
I think It'll make a sense if mtd/jffs3 can support two-plane page
program.

2007/3/7, Jörn Engel <joern@lazybastard.org>:
> On Wed, 7 March 2007 14:57:02 +0800, falls huang wrote:
> >
> >     AFAIK , the samsung's nand flash K9LAG08U0M/K9HBG08U1M/K9MCG08U5M
> > support two-plane page program. For example: The K9LAG08U0M is
> > arranged in four 4Gb memory planes.Each plane contains 2,048 blocks
> > and 2112 byte page registers. This allows it to perform simultaneous
> > page program and block erase by selecting one page or block from each
> > plane. ( refer to the datasheet of K9LAG08U0M)
>
> Interesting.  I was wondering when devices like this would show up.
> Do you have a spec for those chips?
>



-- 
Regards
Falls Huang

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Does mtd support two-plane page program for nand flash?
  2007-03-07 14:34 ` Jörn Engel
  2007-03-09  2:15   ` falls huang
@ 2007-03-09  8:09   ` Adrian Hunter
  2007-03-09  8:37     ` Kyungmin Park
  2007-03-09 11:42     ` Jörn Engel
  1 sibling, 2 replies; 9+ messages in thread
From: Adrian Hunter @ 2007-03-09  8:09 UTC (permalink / raw)
  To: linux-mtd

ext Jörn Engel wrote:
> On Wed, 7 March 2007 14:57:02 +0800, falls huang wrote:
>>     AFAIK , the samsung's nand flash K9LAG08U0M/K9HBG08U1M/K9MCG08U5M
>> support two-plane page program. For example: The K9LAG08U0M is
>> arranged in four 4Gb memory planes.Each plane contains 2,048 blocks
>> and 2112 byte page registers. This allows it to perform simultaneous
>> page program and block erase by selecting one page or block from each
>> plane. ( refer to the datasheet of K9LAG08U0M)
> 
> Interesting.  I was wondering when devices like this would show up.
> Do you have a spec for those chips?

OneNAND DDP does this too (google: onenand "2x program")

I presume the possibility exists to have the driver pretend that the
page size is twice as large and there are half as many erase blocks.
It would have to map the addressses accordingly - and everything
else would have to be willing to accept a 4KiB page with 8
subpages and 128 bytes of oob.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: Does mtd support two-plane page program for nand flash?
  2007-03-09  8:09   ` Adrian Hunter
@ 2007-03-09  8:37     ` Kyungmin Park
  2007-03-09 11:42     ` Jörn Engel
  1 sibling, 0 replies; 9+ messages in thread
From: Kyungmin Park @ 2007-03-09  8:37 UTC (permalink / raw)
  To: 'Adrian Hunter', linux-mtd


> 
> ext Jörn Engel wrote:
> > On Wed, 7 March 2007 14:57:02 +0800, falls huang wrote:
> >>     AFAIK , the samsung's nand flash 
> K9LAG08U0M/K9HBG08U1M/K9MCG08U5M 
> >> support two-plane page program. For example: The K9LAG08U0M is 
> >> arranged in four 4Gb memory planes.Each plane contains 
> 2,048 blocks 
> >> and 2112 byte page registers. This allows it to perform 
> simultaneous 
> >> page program and block erase by selecting one page or 
> block from each 
> >> plane. ( refer to the datasheet of K9LAG08U0M)
> > 
> > Interesting.  I was wondering when devices like this would show up.
> > Do you have a spec for those chips?

NAND: There are also 512B 4-plane and 2KB 4-plane

> 
> OneNAND DDP does this too (google: onenand "2x program")
> 
> I presume the possibility exists to have the driver pretend 
> that the page size is twice as large and there are half as 
> many erase blocks.
> It would have to map the addressses accordingly - and 
> everything else would have to be willing to accept a 4KiB 
> page with 8 subpages and 128 bytes of oob.
> 

In my understand, If we use the 2x program, we assume physical 2 blcoks to logical 1 block in JFFS2 or others.
Since "2x program" writes each bufferram to each block instead of same block.
So if we assume 4KiB page, we programe block 0, page 0 and block 1, page 0, In my opinion, it's not fit for JFFS2.

Thank you,
Kyungmin Park

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Does mtd support two-plane page program for nand flash?
  2007-03-09  8:09   ` Adrian Hunter
  2007-03-09  8:37     ` Kyungmin Park
@ 2007-03-09 11:42     ` Jörn Engel
  2007-03-12  4:49       ` Marteo Tim
  1 sibling, 1 reply; 9+ messages in thread
From: Jörn Engel @ 2007-03-09 11:42 UTC (permalink / raw)
  To: Adrian Hunter; +Cc: linux-mtd

On Fri, 9 March 2007 10:09:37 +0200, Adrian Hunter wrote:
> 
> OneNAND DDP does this too (google: onenand "2x program")

Thanks!

> I presume the possibility exists to have the driver pretend that the
> page size is twice as large and there are half as many erase blocks.
> It would have to map the addressses accordingly - and everything
> else would have to be willing to accept a 4KiB page with 8
> subpages and 128 bytes of oob.

That would be the quick way to get extra bandwidth.

Interleaving writes to both planes can also help latency.  It is
possible to write to one plane while the other is erasing.  It is
possible to do two writes in parallel.  Keeping things seperate would
keep writesize and erasesize low.  And by combining two or more planes,
the slowest of them always decides how long a write/erase will take.

So in the long run, I would prefer to keep planes seperate and add
intelligence to filesystems, LogFS in particular.

Jörn

-- 
It does not matter how slowly you go, so long as you do not stop.
-- Confucius

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Does mtd support two-plane page program for nand flash?
  2007-03-09 11:42     ` Jörn Engel
@ 2007-03-12  4:49       ` Marteo Tim
  2007-03-12  6:53         ` Charles Manning
  0 siblings, 1 reply; 9+ messages in thread
From: Marteo Tim @ 2007-03-12  4:49 UTC (permalink / raw)
  To: Jörn Engel; +Cc: linux-mtd

MLC NAND Flash has already become the mainstream flash for
large-capacity on the market. But due to its low writting speed, there
will be introduced more parallel writting features such as multi-bank,
interleave, etc. So I think it is very necessary to modify MTD
structure to support multi-plane & interleave feature for speed
issure.

It is a good method to shield the details of flash type by composing
two or more page as a large page. Although it will be more slower for
small segment data read/write. But for large-capacity flash,
continuate writting speed maybe is more concerned.

Regards,
marteo

2007/3/9, Jörn Engel <joern@lazybastard.org>:
> On Fri, 9 March 2007 10:09:37 +0200, Adrian Hunter wrote:
> >
> > OneNAND DDP does this too (google: onenand "2x program")
>
> Thanks!
>
> > I presume the possibility exists to have the driver pretend that the
> > page size is twice as large and there are half as many erase blocks.
> > It would have to map the addressses accordingly - and everything
> > else would have to be willing to accept a 4KiB page with 8
> > subpages and 128 bytes of oob.
>
> That would be the quick way to get extra bandwidth.
>
> Interleaving writes to both planes can also help latency.  It is
> possible to write to one plane while the other is erasing.  It is
> possible to do two writes in parallel.  Keeping things seperate would
> keep writesize and erasesize low.  And by combining two or more planes,
> the slowest of them always decides how long a write/erase will take.
>
> So in the long run, I would prefer to keep planes seperate and add
> intelligence to filesystems, LogFS in particular.
>
> Jörn
>
> --
> It does not matter how slowly you go, so long as you do not stop.
> -- Confucius
>
> ______________________________________________________
> Linux MTD discussion mailing list
> http://lists.infradead.org/mailman/listinfo/linux-mtd/
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Does mtd support two-plane page program for nand flash?
  2007-03-12  4:49       ` Marteo Tim
@ 2007-03-12  6:53         ` Charles Manning
  2007-03-12 10:58           ` Jörn Engel
  0 siblings, 1 reply; 9+ messages in thread
From: Charles Manning @ 2007-03-12  6:53 UTC (permalink / raw)
  To: linux-mtd; +Cc: Jörn Engel, Marteo Tim

On Monday 12 March 2007 17:49, Marteo Tim wrote:
> MLC NAND Flash has already become the mainstream flash for
> large-capacity on the market. But due to its low writting speed, there
> will be introduced more parallel writting features such as multi-bank,
> interleave, etc. So I think it is very necessary to modify MTD
> structure to support multi-plane & interleave feature for speed
> issure.

Multi-plane flash predates MLC and has been here for a while.

MLC is a bit slower, but  bigger overheads come from ECC. For example, Micron 
suggests using at minimum BCH to give 4 bits per 512-byte correction for MLC 
whereas they suggest only a minimum of 1-bit per 512 bytes correction for 
SLC.

>
> It is a good method to shield the details of flash type by composing
> two or more page as a large page. 
This approach works, but also forces you to have more bad blocks than you'd 
have otherwise. MLC will tend to have more bad blocks than SLC.

If you know how data is going to be written thern there are other 
possibilities (eg. buffering up pages and writing them in parallel).

> Although it will be more slower for 
> small segment data read/write. But for large-capacity flash,
> continuate writting speed maybe is more concerned.

I think anyone really wanting speed probably writes their own drivers anyway 
(well that's what people woho are most interested in speed tell me 
anyway :-)).

-- Charles


>
> Regards,
> marteo
>
> 2007/3/9, Jörn Engel <joern@lazybastard.org>:
> > On Fri, 9 March 2007 10:09:37 +0200, Adrian Hunter wrote:
> > > OneNAND DDP does this too (google: onenand "2x program")
> >
> > Thanks!
> >
> > > I presume the possibility exists to have the driver pretend that the
> > > page size is twice as large and there are half as many erase blocks.
> > > It would have to map the addressses accordingly - and everything
> > > else would have to be willing to accept a 4KiB page with 8
> > > subpages and 128 bytes of oob.
> >
> > That would be the quick way to get extra bandwidth.
> >
> > Interleaving writes to both planes can also help latency.  It is
> > possible to write to one plane while the other is erasing.  It is
> > possible to do two writes in parallel.  Keeping things seperate would
> > keep writesize and erasesize low.  And by combining two or more planes,
> > the slowest of them always decides how long a write/erase will take.
> >
> > So in the long run, I would prefer to keep planes seperate and add
> > intelligence to filesystems, LogFS in particular.
> >
> > Jörn
> >
> > --
> > It does not matter how slowly you go, so long as you do not stop.
> > -- Confucius
> >
> > ______________________________________________________
> > Linux MTD discussion mailing list
> > http://lists.infradead.org/mailman/listinfo/linux-mtd/
>
> ______________________________________________________
> Linux MTD discussion mailing list
> http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Does mtd support two-plane page program for nand flash?
  2007-03-12  6:53         ` Charles Manning
@ 2007-03-12 10:58           ` Jörn Engel
  0 siblings, 0 replies; 9+ messages in thread
From: Jörn Engel @ 2007-03-12 10:58 UTC (permalink / raw)
  To: Charles Manning; +Cc: linux-mtd, Marteo Tim

On Mon, 12 March 2007 19:53:58 +1300, Charles Manning wrote:
> On Monday 12 March 2007 17:49, Marteo Tim wrote:
> > MLC NAND Flash has already become the mainstream flash for
> > large-capacity on the market. But due to its low writting speed, there
> > will be introduced more parallel writting features such as multi-bank,
> > interleave, etc. So I think it is very necessary to modify MTD
> > structure to support multi-plane & interleave feature for speed
> > issure.

Flash will evolve much like hard disks and RAM does.  Size and bandwidth
will scale up, while latency remains roughly unchanged.  And just like
hard disks and RAM, much effort will be spent, trying to reduce the
effect of latency.

In case you don't remember: increasing bandwidth is trivial.  Reducing
latency is the real challange.

> > It is a good method to shield the details of flash type by composing
> > two or more page as a large page. 
> This approach works, but also forces you to have more bad blocks than you'd 
> have otherwise. MLC will tend to have more bad blocks than SLC.

And it will increase latency instead of reducing it.  Instead of sending
multiple independent commands to multiple planes, a single command is
sent to all planes.  Not only is the slowest of all planes dominating
the latency now, but the remaining independent commands still need to
run.

It is possible to reduce the number of commands somewhat by writing
larger amount of data in one go.  But that has disadvantages of its own
is not always possible.

> > Although it will be more slower for 
> > small segment data read/write. But for large-capacity flash,
> > continuate writting speed maybe is more concerned.

Again, increasing bandwidth is trivial, as you just showed.  Latency is
the real killer.

> I think anyone really wanting speed probably writes their own drivers anyway 
> (well that's what people woho are most interested in speed tell me 
> anyway :-)).

Absolutely.  Going down the easy route coupling all planes may be a
simple first step to get bandwidth up.  But supporting independent
operations is the interesting route to follow.

Jörn

-- 
"[One] doesn't need to know [...] how to cause a headache in order
to take an aspirin."
-- Scott Culp, Manager of the Microsoft Security Response Center, 2001

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2007-03-12 11:26 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-03-07  6:57 Does mtd support two-plane page program for nand flash? falls huang
2007-03-07 14:34 ` Jörn Engel
2007-03-09  2:15   ` falls huang
2007-03-09  8:09   ` Adrian Hunter
2007-03-09  8:37     ` Kyungmin Park
2007-03-09 11:42     ` Jörn Engel
2007-03-12  4:49       ` Marteo Tim
2007-03-12  6:53         ` Charles Manning
2007-03-12 10:58           ` Jörn Engel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox