Mail Archives: djgpp/2001/03/01/15:00:23
> From: damon AT redshift DOT com (Damon Casale)
> Newsgroups: comp.os.msdos.djgpp
> Date: Thu, 01 Mar 2001 18:36:06 GMT
>
> I'm trying to squeeze the last ounce of speed out of this compression
> program, and I'm wondering if switching to direct DMA calls, as
> opposed to using the INT13h or INT21h disk read-write calls, would
> help things much. As far as programming in DJGPP goes, I know that it
> takes a lot of CPU cycles to switch from protected mode to real mode,
> and then back again, to make the interrupt calls. Would I avoid that
> by doing DMA calls instead?
I'm not sure. The conventional wisdom is that nowadays DMA doesn't
gain too much when disks are concerned, but I never did anything like
that myself, so it's hearsay.
Keep in mind that while DMA moves data from the disk to memory or
back, the system bus is not available. Therefore, you will have bus
contention with any other device that goes through the bus. VGA, for
example.
What portion of the program's run time does it spend in I/O (i.e. in
INT 13h and INT 21h calls)? If it's not 50% at least, it's probably
not worth it to try to speed it up by switching to DMA.
> I'm not entirely sure how to tell the hard drive what sectors I want
> to read or write, but I _think_ I know how to use the DMA I/O ports.
> Where would I look for more detailed info on this?
In case you didn't see it, the DJGPP FAQ has something about using DMA
in section 18.13.
- Raw text -