[prev in list] [next in list] [prev in thread] [next in thread] 

List:       yaffs
Subject:    [Yaffs] Wide tnode support added
From:       Charles Manning <manningc2 () actrix ! gen ! nz>
Date:       2005-12-07 22:30:24
Message-ID: 200512081130.24333.manningc2 () actrix ! gen ! nz
[Download RAW message or body]

Hi YAFFSers

I have checked in changes for wide tnode support. This speeds up reads on 
large NAND arrays, as per the patch that Andre submitted some while back, but 
uses  a variable size bitmap instead which is far more frugal in its memory 
usage.

To explain...

The standard size level0 tnodes are 16-bits wide. That allows you to uniquely 
identify up to 64k "chunks". For 512-byte page devices that maxes out at 32MB 
(64k * 512). To handle larger devices YAFFS uses the concept of chunk groups. 
For example, on 128MB devices that means we can use the level0 tnode to 
identify a group of 4 chunks and then search for the chunk we want. This 
searching gets slower for larger devices as the chunk group size increases.

The Bluewater guys did a hack where they used 32-but tnodes. Far bigger than 
needed, but no more searching required.

The changes just checked in use a variable size bitmap instead. At 
initialisation, the tnode width is calculated (minimum 16 bits) and 
allocations and bitshuffling are matched to that size. This means we get a 
lot of performance improvement for large arrays with a slight increase in 
memory usage.

See how it goes...

-- Charles


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic