flat assembler
Message board for the users of flat assembler.
![]() |
Author |
|
Nikolay Petrov 26 Apr 2005, 17:11
What is it DMA? - direct memory access or something else???
I'm very angry when i see like this abbreviation. ![]() ![]() ![]() |
|||
![]() |
|
YONG 26 Apr 2005, 17:27
Try the following link:
http://www.isdaman.com/alsos/hardware/dma/ - Technical spec., basic concepts, example in C, etc. YONG |
|||
![]() |
|
tom tobias 26 Apr 2005, 18:06
Yes Nikolay, you have it correctly noted: DMA: direct memory access. This is a separate, programmable cpu, very primitive, which permits transfer of data from the periphery into memory. It is slow, because the specification was established in the days when 4 MHz seemed very fast! (almost thirty years ago) It has the advantage that the cpu need not interrupt its activities to handle this chore. The DMA controller's utility is diminished to some extent these days, because the DMA controller monopolizes the bus, essentially blocking the MUCH faster cpu, which must then wait for the DMA to finish. At the time of its inception, however, it was a truly wonderful complement, speeding up activities, acting in essence like a second cpu, but with activity restricted to data movement only. Though the main cpu is prevented from accessing main memory while the DMA controller is active, the cpu itself can be concurrently very active, performing all sorts of mathematical manipulations, so long as none of them require access to memory. A practical situation where this feature could be useful, is one in which the program AND supporting data reside in cache (cpu private memory), so that the cpu is not delayed waiting for the DMA controller to move data from an I/O port to main memory. The cpu finishes a set of instructions, then rushes out to main memory, grabs the new (set of) data that had just been transferred by the DMA controller, releases the memory bus access capability back to the DMA controller, and continues grinding out the calculations, using the new data from memory, WITHOUT having to save all its registers, and complete an IRQ to fetch the data from I/O itself. Thus, a clever programmer can write a FASTER routine using the slow DMA controller, if he/she knows what they are doing, depending of course, on the particulars of the algorithm being computed. This is most useful for a computationally intensive task like the FFT (Fast Fourier Transform), where each frame of data, say, for instance, 256 data points, can be transferred by the DMA controller to a particular place in memory, at which point, it contacts the cpu, to indicate that the next frame of data is available for computation. The cpu could do all this on its own, without the DMA controller, but then, of course, the cpu would be obliged to respond to 256 IRQ's, instead of one. For some analysis, 2048 or even more data points are required, so depending on the situation, the DMA controller could save time, even today with a cpu running 1000 times faster than the DMA controller.
![]() |
|||
![]() |
|
Nikolay Petrov 26 Apr 2005, 19:54
Very good info tom
![]() |
|||
![]() |
|
f0dder 27 Apr 2005, 16:14
tom, you should get into the habit of organizing your posts in "paragraphs" - it's way too chaotic to read one big blob of text. Start by typing the post in notepad or whatever before you paste it to the post-form
![]() |
|||
![]() |
|
tom tobias 28 Apr 2005, 12:50
Thank you Fudder, you are absolutely correct, as usual!! Two other criticisms: much too verbose, and too many references to "it". Thanks. Regards, tom
![]() |
|||
![]() |
|
Razneb 28 Apr 2005, 23:30
Quote: I'm very angry when i see like this abbreviation. Yeah, when I first looked at the topic and saw 'DMA', I was thinking of Dynamic Memory Allocation. |
|||
![]() |
|
< Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2025, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.