Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 217
  • Last Modified:

Query about DMA

In theory , the processor only has to pass the base address of the bytes to move, the number
of bytes to move and the base address of the destination to the DMA controller, and it will
take care of the actual transfer while the processor does something else. However, Winn L.
Rosch writes in his excellent "Hardware Bible", that in practice the processor must not only
set up the transfer but also oversee it. Is this true? If so, what does it mean:
-the processor waites around?
-it double-checks to see whether the transfer is working properly?
-it waits for the end of the transfer?
-it looks out for error signals?

And if it does wait around, is it a software or hardware constraint (i.e does the program tell
the processor to wait before the end of the transfer or does the DMA controller/bus
controller/processor or other hardware device cause this?)

I would be very glad if you could help me resolve this small problem. Thanks
 
0
nerd_emperor
Asked:
nerd_emperor
  • 2
  • 2
1 Solution
 
mark2150Commented:
Normally the program has to wait around for the DMA controller to finish because it needs the data that the DMA is delivering before it can continue processing. This is why they developed the concept of prefetch. You set up the DMA and get it going well ahead of when you actually need the data so that by the time that you get around to chewing on it the data is already there.

The DMA chip does it's thing without supervision. It'll haul down on an IRQ when it's finished.

Typically you use this when you're writing low level device drivers for talking to block devices like disk drives. If you have a code module doing a sequential read then you have a good chance that the next block will be required. DMA properly configured can speed up processing quite a bit in this context. In transactional processing the gains aren't normally worth the code overhead as long sequential reads are writes are much less common.

M

0
 
nerd_emperorAuthor Commented:
Thanks very much!!!
0
 
nerd_emperorAuthor Commented:
Understood, but why does he choose the word "oversee". As far as my knowledge of english goes, that implies some sort of supervisory function. The answer you gave would be more of a "hanging about" or "waiting".
0
 
mark2150Commented:
Dunno why he'd say "oversee". Maybe he meant in the larger context of setting it up for the next block request.
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now