dma
DESCRIPTION
DMATRANSCRIPT
Hamdani Syahputra – 2IA18
1. Pengertian DMA
Direct memory access (DMA) adalah suatu alat pengendali khusus disediakan untuk memungkinkan transfes blok data langsung antar perangkat eksternal dan memori utama, tanpa intervensi terus menerus dari prosesor. Transfer DMA dilakukan oleh sirkuit kontrol yang merupakan bagian dari antar muka perangkat I/O. Istilah ini yang sering banyak kita ketahui adalah sebagai kontroler DMA. Kontroler DMA melakukan fungsi yang biasanya dilakukan oleh prosesor pada saat mengakses memori utama (yang sering disebut :RAM). Untuk setiap word yang ditransfer, kontroler ini menyediakan alamat memori dan semua sinyal bus yang mengontrol transfer data. Karena harus mentransfer sejumlah blok data, maka kontroler DMA harus menaikkan alamat memori untuk word yang berurutan dan mencatat jumlah transfer.
Untuk memulai sebuah transfer DMA, host akan menuliskan sebuah DMA command block yang berisi pointer yang menunjuk ke sumber transfer, pointer yang menunjuk ke tujuan transfer, dan jumlah byte yang ditransfer, ke memori. CPU kemudian menuliskan alamat command block ini ke pengendali DMA, sehingga pengendali DMA dapat kemudian mengoperasikan bus memori secara langsung dengan menempatkan alamat-alamat pada bus tersebut untuk melakukan transfer tanpa bantuan CPU.
2. Jenis-Jenis DMA
Ada 2 jenis DMA, yaitu:
a) Third−party DMA, untuk melakukan operasi transfer data menggunakan DMA controller yang ada pada motherboard.
b) First−party DMA (busmastering DMA). Untuk melakukan operasi transfer data dikerjakan oleh bagian logic di interface card.
3. Struktur DMA
Transfer data dari buffer ke memori atau sebaliknya dilakukan per-karakter.
Hamdani Syahputra – 2IA18
Dimana setiap kali transfer selalu ada interruptdari CPU sebelum dan sesudah transfer. Jika waktu untuk mentransfer satu karakter sebesar 2 µs dan sekali interrupt butuh
1ms, maka untuk mentransfer data dari memori kebuffer butuh 4 µs per karakter. Dengan menggunakan DMA transfer data dapatdilakukan secara langsung oleh device
controller per-blok tanpa ada campur tangan dari CPU. CPU hanya memberikan interrupt sebelum dansesudah transfer setiap blok.
4. Cara Kerja DMA
Cara Kerja DMA
CPU mengirimkan data data berikut ini ke DMA controller: Perintah read/write Alamat device yang akan diakses Alamat awal blok memori yang akan dibaca/ditulis Jumlah blok data yang akan ditransfer
CPU mengeksekusi program lain DMA controller mengirimkan seluruh blok data (per satu word) langsung ke
memori(tanpa melibatkan CPU) DMA controller mengirim interrupt ke CPU jika telah selesai.
Cycle Stealing pada DMA transfer
DMA controller mengambil alih bus sebanyak satu siklus
DMA mentransfer satu word data
Pengambil alihan bus oleh DMA bukan interrupt --> CPU tidak perlu menyimpan context
CPU hanya tertunda (suspend) sesaat sebelum mengakses bis, yaitu sebelum operand atau data diambil atau data ditulis
Pengaruh terhadap CPU yaitu memperlambat CPU , tetapi masih lebih baik dari pada CPU terlibat langsung pada transfer data
Hamdani Syahputra – 2IA18
5. Konfigurasi modul DMA
a. Konfigurasi 1 (Single Bus) Hanya menggunakan single bus DMA dan modul I/O terpisah Setiap transfer harus mengakses bus 2 kali: modul I/O ke DMA kemudian DMA ke
memori Lebih lambat CPU (tertunda 2 kali)
b. Konfigurasi 2 (Single Bus, Integrated DMA-I/O) Hanya menggunakan single bus Modul I/O terintegrasi Satu DMA controller dapat menangani >1 modul I/O Setiap transfer hanya perlu mengakses bus satu kali saja DMA ke memori CPU hanya tertunda satu kali (lebih baik dari konfigurasi 1)
Hamdani Syahputra – 2IA18
c. Konfigurasi 3 (IO Bus) Digunakan bus I/O secara terpisah Lebih hemat hardware◊Semua modul I/O cukup dilayani dengan sebuah DMA Setiap transfer hanya perlu mengakses bus satu kali saja DMA ke memori CPU hanya tertunda (lebih baik dari konfigurasi 2)
6. Proses Handshaking pada DMA
Proses handshaking antara pengendali DMA dan pengendali perangkat dilakukan melalui sepasang kabel yang disebut DMA-request dan DMA-acknowledge. Pengendali perangkat mengirimkan sinyal melalui DMA-request ketika akan mentransfer data sebanyak satu word. Hal ini kemudian akan mengakibatkan pengendali DMA memasukkan alamat-alamat yang dinginkan ke kabel alamat memori, dan mengirimkan sinyal melalui kabel DMA-acknowledge. Setelah sinyal melalui kabel DMA-acknowledgediterima, pengendali perangkat mengirimkan data yang dimaksud dan mematikan sinyal pada DMA-request.
Hal ini berlangsung berulang-ulang sehingga disebut handshaking. Pada saat pengendali DMA mengambil alih memori, CPU sementara tidak dapat mengakses memori (dihalangi), walau pun masih dapat mengaksees data pada cache primer dan sekunder. Hal ini disebut cycle stealing, yang walau pun memperlambat komputasi CPU, tidak menurunkan kinerja karena memindahkan pekerjaan data transfer ke pengendali DMA meningkatkan performa sistem secara keseluruhan.
7. Keuntungan menggunakan DMA:
Dapat dilihat pada operasi multiasking seperti UNIX. Transfer data dengan mode DMA akan menghemat sumberdaya CPU sehingga CPU
dapat melakukan pekerjaan yang lain. Sedangkan pada DOS (yang merupakan operasi single-tasking) harus menunggu
sampai proses selesai terlebih dahulu baru kemudian bisa menjalankan proses berikutnya
Sumber:
Hamdani Syahputra – 2IA18
http://fajarjabrik.blogspot.com/2014/11/makalah-organisasi-komputer-direct.html#ixzz3XqvAI2Bp
http://rezaakhmadg.blogspot.com/2012/05/direct-memory-acces-dma.html