delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2001/03/01/15:00:23

Date: Thu, 01 Mar 2001 21:56:26 +0200
From: "Eli Zaretskii" <eliz AT is DOT elta DOT co DOT il>
Sender: halo1 AT zahav DOT net DOT il
To: damon AT redshift DOT com (Damon Casale)
Message-Id: <3405-Thu01Mar2001215625+0200-eliz@is.elta.co.il>
X-Mailer: Emacs 20.6 (via feedmail 8.3.emacs20_6 I) and Blat ver 1.8.6
CC: djgpp AT delorie DOT com
In-reply-to: <3a9e955b.2750392@news.redshift.com> (damon@redshift.com)
Subject: Re: Using DMA for hard disk access?
References: <3a9e955b DOT 2750392 AT news DOT redshift DOT com>
Reply-To: djgpp AT delorie DOT com
Errors-To: nobody AT delorie DOT com
X-Mailing-List: djgpp AT delorie DOT com
X-Unsubscribes-To: listserv AT delorie DOT com

> 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 -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019