[Yaffs-archive] RE: YAFFS - YAFFS2 starts

Charles Manning Charles.Manning@trimble.co.nz
Thu, 7 Nov 2002 09:00:33 +1300


Some follow on to some questions that Wookey poses. Please forgive the 
lack of indentation.

On Mon 04 Nov, Charles Manning wrote:
> I have started working on YAFFS2.

> The main purpose behind YAFFS2 is to support the larger NAND parts with
2kB
> pages and zero rewrite.  But wait, there's more... lower RAM footprint,
> faster,...

> YAFFS2 needs at least a 1kB chunk size. On 512byte pages you can do this
by
> just using two pages per chunk. This means a bit more wasted space at the
end
> of files. Thus, probably the best approach will be to use YAFFS1 on NAND
> arrays less than, say, 128MB.

> Since almost all the algorithms are the same for YAFFS1 and YAFFS2, I
expect
> to keep the code together with YAFFS1 or YAFFS2 being run-time selectable
(ie
> as a flag in the device structure).

> Any ideas/input/wishes more than welcome.

> Herewith a brief outline.

[Wookey]Looks good. A few queries presumalby the timings are theoritical at
this
stage - did you do profiling on YAFFS1 and then extrapolate to YAFFS2, or
just work them out from the combination of YAFFS behaviour and NAND timing
specs?
[Charles] The timing is done using NAND access times with relatively slow
timing to
compensate for other code. Mileage will vary. Since the look-up and data
transfer 
algorithms will be largely the same, the timing differences should only be
taken as
an indication. ie. stuff will be faster.


[Wookey]What does the 2KB pagesx16 column mean? A chunk size of 2k and a
block size
of 32K, or a 32K chunk size with 2K pages?

[Charles] The x16 means using a 16-bit bus. The newer 2kB page parts can be
wired in
as 16 or 8 bit. Since data transfer into/out of the NAND is a significant
part of the
total time, moving to a 16-bit bus (and halving the time) is a
GoodThing(tm). Also, BTW,
these parts can execute code directly off the NAND from page 0. This means
you can implement 
a basic bootstrap in the NAND and get rid of the NOR.

[Wookey]I don't see why the RAM footprint decreases - is this mostly a
side-effect
of the chunk size (and thus the average 'wasted space') growing, and hence
number of chunks to be tracked in memory reducing?

[Charles] Most of the RAM used by YAFFS is in the yaffs_Tnodes used in the
file structure tree.
Since YAFFS2 chunks are bigger, there are less chunks in the file for the
same file size - hence less Tnodes.
YAFFS uses approx 4kB per MB in TNodes. 1kB chunks would halve that; 2kB
chunks would quarter that.

-- Charles


---------------------------------------------------------------------------------------
This mailing list is hosted by Toby Churchill open software (www.toby-churchill.org).
If mailing list membership is no longer wanted you can remove yourself from the list by 
sending an email to yaffs-request@toby-churchill.org with the text "unsubscribe" 
(without the quotes) as the subject.