DATA TRANSFER WITH A DMA CONTROLLER
Pengertian DMA
DMA (Direct Memory
Acces) ialah sebuah prosessor khusus (spesial purpose processor) yang berguna untuk menghindari
pembebanan CPU utama oleh program I/O.
DMA (Direct Memory
Acces) ialah suatu alat pengendali khusus disediakan untuk memungkinkan
transfer blok data langsung antar perangkat eksternal dan memori utama, tanpa
intervensi terus menerus dari prosessor.
* Seluruh proses DMA dikendalikan oleh sebuah controller
bernama DMA Controller (DMAC).
* DMA digunakan untuk perangkat I/O dengan kecepatan tinggi.
* Struktur DMA
* Mekanisme DMA
Fungsi DMA
Adalah untuk membantu CPU fokus penuh untuk mengerjakan proses
transfer data. Dengan DMA, CPU cukup
memulai prosesnya dan bisa melakukan kerja lain selama proses transfer itu berlangsung dan tinggal menunggu informasi
dari DMA controller jika proses transfer sudah
selesai.
Cara kerja DMA
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.
Kerja DMA terkait dengan : DMA controller, Processor, Memory, I/ODevice
Adapun juga cara kerjanya sebagai berikut:
1. I/O Device
terhubung dengan DMA controller memberikan instruksi yang harus di proses
2. DMA controller
mengirimkan pemberitahuan ke processor akan ada proses yang dihandle oleh DMA
controller
3. Processor
menginformasikan ke memory bahwa DMA akan mengakses memory untuk pemrosesan
suatu instruksi
4. DMA Controller
terhubung dengan memory dan akses alamat, data yang diperlukan
5. DMA controller
mengirimkan hasil proses kembali ke I/O device
6. Jika proses
selesai, DMA controller kembali melaporkan ke processor bahwa proses telah
beres dilakukan.
Menurut reverensi lain cara kerja DMA sebagai berikut:
- · 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.
CARA KEDUA1. Perangkat I/O mengirim interupsi ke CPU untuk memberitahu bahwa perangkat tersebut akan melakukan transfer data.1. 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 command block ini ke pengendali DMA, menuliskan alamat sehingga pengendali DMA dapat kemudian mengoperasikan bus memori secara langsung dengan menempatkan alamat-alamat pada bus tersebut untuk melakukan transfer tanpa bantuan CPU. Setelah transfer data dapat dialihkan, prosessor berhenti mengeksekusi proses tersebut dan meload proses lain.1. DMA melakukan transfer data. DMA mempunyai dua metoda dalam mentransfer data yaitu :1. Metode yang pertama disebut HALT, atau Burst Mode DMA, karena pengendali DMA DMA memegang kontrol dari sistem bus dan mentansfer semua blok data ke atau dari memori pada single burst. Selagi transfer masih dalam proses, sistem mikroprosessor di set idle, tidak melakukan instruksi operasi untuk menjaga internal register.2. Metoda yang kedua mengikut-sertakan pengendali DMA untuk memegang kontrol dari sistem bus untuk jangka waktu yang lebih pendek pada periode dimana mikroprosessor sibuk dengan operasi internal dan tidak membutuhkan akses ke sistem bus. Mertoda DMA ini disebut cycle stealing mode.Cycle stealing DMA lebih kompleks untuk diimplementasikan dibandingkan HALT DMA, karena pengendali DMA harus mempunyai kepintaran untuk merasakan waktu pada saat sistem bus terbuka.1. Setelah transfer data selesai, DMA mengirim interupsi ke CPU. Proses yang meminta transfer data tadi, diubah lagi statusnya dari blocket ke ready, sehingga proses itu dapat kembali dipilih oleh penjadwal.* Langkah-langkah transfer DMA1. Prosessor menyiapkan DMA transfer dengan menyediakan data-data dari perangkat, operasi yang akan ditampilkan, alamat memori yang menjadi sumber, tujuan data dan banyaknya byte yang ditransfer.2. Pengendali DMA memulai operasi (menyiapkan bus, menyediakan alamat, menulis dan membaca data), sampai seluruh block sudah ditransfer.3. Pengendali DMA menginterupsi prosesor, dimana selanjutnyaakan ditentukan tindakan berikutnya.Menurut reverensi lain cara kerja DMA sebagai berikut:· 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.
Referensi