[Arm-netbook] identification eeprom: data layout

Aaron J. Seigo aseigo at kde.org
Tue Nov 5 16:50:38 GMT 2013


On Tuesday, November 5, 2013 15:59:56 Derek wrote:
> Aaron J. Seigo <aseigo <at> kde.org> writes:
> > There is no page index. Variable length pages without an accompanying
> > index
> > means that it is not possible to seek directly to a given page; however
> > given the relatively small size of the IDS, the small number of pages and
> > that the headers allow skipping from page to page this is deemed
> > acceptable.
> Would you please educate me (and others may be interested) why to not use an
> index?  Do we expect pages to be added frequently, requiring rewriting an
> index (and thus shifting all contents)?  Do we expect that people will get
> it wrong?  Is the initialization environment so constrained that it cannot
> even use an index?

indexes mostly make sense when there is lots of data and/or random access is 
common. my operational assumption here is that the # of pages will remain 
small (100s at most; i expect most EEPROMs to have 2) and random access on the 
storage is inexpensive. 

if a process expects to do lots of random page accesses, an index can always 
be generated in main memory by processing the the page headers once at 
runtime.

in theory all the page headers could be banged right to the front of the 
EEPROM after the DIDS header and serve as a lookup table without taking any 
more storage space on the EEPROM. that does mean that if any page changes, you 
have to rewrite the entire EEPROM (rather than just from the changed page on), 
but we can probably assume that writes are rare and so this doesn’t really 
matter.

i simply doubted that having all the page indexes separate from the page data 
would result in any meaningful real world performance gains, whereas with an 
index you have to read the entire index and keep the whole thing in memory to 
traverse to any page to have any benefit. (incrementally reading the index is 
the same as page headers with page data, given constant speed reads, and since 
this isn’t a spinning disk that’s a reasonable assumption). writing similarly 
becomes slightly more complex, though certainly still easy enough that nobody 
should get it wrong ... 

it just didn’t seem worth it and so i stuck to simplicity. ime unless you can 
justify gains, complexity is to be avoided. it piles up quicker than one might 
expect. (<insert ramblings about premature optimizations here>)

that said, once there is something akin to consensus on the DIDS i’ll 
definitely make sure this gets tested for performance. if it makes a difference 
to store an index of some sort on the EEPROM rather than traverse page-to-
page, we can always adjust the spec.

-- 
Aaron J. Seigo



More information about the arm-netbook mailing list