Re: 21st Century ISA goals?



"ChrisQuayle" <nospam@xxxxxxxxxxxx> wrote in message news:K9cTh.1094$%K5.979@xxxxxxxxxxxxxxxxxxxxxxx
Haven't done any programming on pci, but if you have to fight
through several layers of hardware just to get to the device
register of interest, then yes, there could be timing penalties. It
also depends on whether the target controller is dma capable.
If you have to use programmed io, (read or write for every byte
or word transferred) for example, there would be a severe
speed penalty compared to a dma based transfer. As for cpu
resources, good drivers don't block other tasks while doing io.
A dma based driver sets up the controller with a few register
writes, kicks off the io, then returns control to the os. Only when
the io is complete does the controller issue a hardware interrupt to the driver, which then completes the transaction by signalling
the os. Under such conditions, % cpu time is pretty low.

I can understand why PIO would be considered evil, but after reading the description of how channel-based systems worked, I don't see much difference vs how modern DMA I/O works. You send off a command, return to normal processing, and get an interrupt when it's complete. The back-and-forth of cache lines to main memory is a problem, but I'd assume that Intel, AMD, et al have worked on ways around that since it's an obvious place to improve I/O performance and thus sell more chips.

The only major difference I see is that a channel-based system would have the "device driver" running on a different processor than the OS kernel runs on. Wouldn't syncing those two together cause just as much hassle as just running the device driver on the main CPU?

( I think I need to read more comparing and less explaining how each works in isolation... )

S

--
Stephen Sprunk "Those people who think they know everything
CCIE #3723 are a great annoyance to those of us who do."
K5SSS --Isaac Asimov


--
Posted via a free Usenet account from http://www.teranews.com

.



Relevant Pages

  • Re: [RFC v2 2/5] dmaengine: Add slave DMA interface
    ... is that these options vary from controller to controller, ... Not all options are specific to DMA slave transfers either, ... DMA engine driver is free to decide on its own. ...
    (Linux-Kernel)
  • [PATCH v4 6/6] Atmel MCI: Driver for Atmel on-chip MMC controllers
    ... This is a driver for the MMC controller on the AP7000 chips from ... entirely clear if it's worth merging this with the at91_mci driver. ... provided by Atmel, but this particular version uses the generic DMA ...
    (Linux-Kernel)
  • RE: [PATCH 1/1] scsi : megaraid_{mm,mbox}: a fix on 64-bit DMA capability check
    ... and driver tries to ... enable 64-bit DMA. ... Could you please check this issue and update your patch properly. ... MegaRAID SATA 150-4 RAID Controller ...
    (Linux-Kernel)
  • Re: DMA
    ... Controller installed, then even though in driver it seems ... to have the standard MS driver isntalled, the VIA IDE ... is stuck at DMA 2 according to Device Manager? ...
    (microsoft.public.windowsxp.general)
  • dma timeout
    ... my *old hdd* got up with dma mode. ... PIIX4: IDE controller at PCI slot 00:04.1 ... ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 ... hda: attached ide-disk driver. ...
    (Debian-User)