[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Focus HD -> CF Questions
On Mar 13, 6:09 pm, "Michael J. Mahon" <mjma...@aol.com> wrote:
> The maximum DMA rate is 1MB/sec, set by the peripheral bus.
>
> The maximum programmed I/O rate, even with infinite acceleration, is
> also limited by the number of peripheral bus reads and memory writes,
> since they can only run at 1MB/sec, combined.
>
> If the programmed I/O is written in such a way that the code resides
> in cache, and only registers are updated in the inner loop, then there
> is one PIO load and one data store to memory, and the loop could move
> data at 0.5MB/sec. However, if the inner loop is written in such a way
> that memory is modified for other than data transfer, that modification
> bandwidth comes out of the maximum 1MB/sec bus budget.
>
> Of course, for a 6502, it will be necessary to update a pointer
> periodically, in the outer loop, but that effect is second order.
'Slinky' memory cards probably get closest to 0.5MB/sec on an
accelerated IIe; an 8Mhz Zip is probably enough to absorb the register
increment, indirection overhead of a (probable) (zp) access to the
read register and (zp),y write request and branch that would be in a
theoretically optimal inner copy loop. The second order overhead is
probably close enough
> > On the IIgs the game is different, since GS/OS is considerably
> > smarter.
>
> Though both DMA and the PIO read are still limited to 1MB/sec,
> the memory can be accessed faster.
The point I was making is that multiblock IO can occur, meaning a file
of x KB can be transferred from disk<->memory in a single transaction
(assuming it's contiguous) as opposed the x*2 transactions under
ProDOS 8, which I feel eat a *lot* of clock cycles.
Of course, I'm ignoring the directory block lookup overhead, which has
considerable performance impact regardless of the operating system
involved.
Matt