Re: How can DMA help CPU to do other useful work when DMA is accessing memory?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 8/7/06, Chandrashekar MC <mc.chandrashekar@xxxxxxxxx> wrote:

This is a basic question,
As we know CPU sets the DMA registers and give the control of RAM to DMA for
datatransfer.
When DMA is transferring data between RAM and Device, CPU can not access
RAM. Without access to RAM(which has executalble code), how can CPU do any
useful work during DMA datatransfer?
I have a second question, Is it that only devices connected to ISA buses can
use DMA?

Regards,
Chandra

Chandra,

DMA has been around for 20+ years.  The details really have been
worked out pretty well by now.

Things that alleviate bus collisions include:

Interleaved memory.  ie. If you have 2 memory sticks in your box, many
motherboards alternate which stick is in use, even words in one, odd
words in the other.  That way the CPU can be accessing one and the DMA
the other, then hopefully they switch on the next memory access.

High-end systems (typically non-Intel) can have 4 and 8 way interleave
specifically to allow multiple simultaneous data transfers.

Cache's 1'st and 2nd levels (and IIRC even 3rd level in some high-end
machines).  This gets very important when you have multiple CPUs,
because then you have even more contention.  So a 16-cpu machine is
much more likely to have large caches and a 3rd level.

Dual Port memory: Allows 2 simultaneous accesses via the 2-ports.
This kind of memory is expensive and typically reserved for Video
cards, but it allows the cpu to update the video memory while the
video is being driven out of the backside of the video memory.

As to other busses supporting DMA, I'm sure any modern motherboard
based bus is going to support DMA.  Definately PCI does.

HTH
Greg
--
Greg Freemyer
The Norcross Group
Forensics for the 21st Century

--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux