Path: utzoo!attcan!uunet!lll-winken!lll-tis!helios.ee.lbl.gov!pasteur!agate!bionet!apple!vsi1!wyse!mips!sultra!dtynan From: dtynan@sultra.UUCP (Der Tynan) Newsgroups: comp.sys.nsc.32k Subject: Re: ICM-3216 disk speed Summary: Use track buffering Keywords: System V ICM-3216 Message-ID: <2626@sultra.UUCP> Date: 8 Nov 88 21:53:46 GMT References: <7090@daver.UUCP> Organization: Tynan Computers, Sunnyvale, CA Lines: 30 In article <7090@daver.UUCP>, dlr@daver.UUCP (Dave Rand) writes: [about a problem with the latency of the Z80, when it comes to disk I/O on an ICM3216]. > > To "fix" this, I modified the disk driver to cache requests, > and built a local 100k cache in the driver. This does a pre-read > if the block requested is not in the cache. > > The transfer rate has improved dramatically, but still is not > as high as I would like to see it. > > Dave Rand Rather than use a cache, use the space to do track buffering. In other words, divide the 100K of cache into 'n' track buffers. When requesting a block from disk, check to see if the 'track' is already in the buffer, in which case, move it over. Otherwise, using LRU (or something else), load another track. This way, the requests to the Z80 are on a track by track basis (spread the overhead), and the 10ms isn't as big a problem. Also, if your system isn't too fragmented, you've implemented a read-ahead scheme. When flushing dirty tracks, make a decision whether to just write the full track, or the dirty blocks, based on which is more efficient. Reading and writing a full track also negate the use of a disk interleave, so your read/write times should improve as well. I'll be happy to answer any questions... - Der -- dtynan@Tynan.COM (Dermot Tynan @ Tynan Computers) {apple,mips,pyramid,uunet}!zorba.Tynan.COM!dtynan --- God invented alcohol to keep the Irish from taking over the planet ---