SYSTEM DMA
(Direct Memory Access)
DMA
(Direct Memory Access) adalah sebuah prosesor khusus
(special purpose processor) yang berguna untuk menghindari pembebanan CPU utama
oleh program I/O (PIO). 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 alamatalamat pada bus tersebut untuk melakukan
transfer tanpa bantuan CPU.
Fungsi dari DMA sendiri adalah agar CPU dapat melakukan pekerjaan atau
instruksi yang berbeda ketika melakukan operasi baca tulis dari perangkat
peripheral. Tanpa adanya DMA CPU akan terus sibuk melakukan operasi baca
tulis (transfer data) dan tidak dapat melakukan atau menyelesaikan instruksi
yang lain. Dengan adanya DMA, CPU cukup mempersiapkan DMA chip dengan cara
memberikan beberapa informasi seperti jumlah data bit yang ditransfer, alamat
dari device dan memory yang diperlukan dan arah dari aliran data tersebut,
setelah itu DMA chip sendiri yang akan menyelesaikannya. DMA chip akan
melakukan interupt, ketika pekerjaannya sudah selesai. Selama DMA chip
melakukan tugasnya hingga munculnya interupt, CPU dapat menyelesaikan instruksi
yang lainnya.
Tiga langkah dalam transfer DMA:
1.
Prosesor menyiapkan DMA transfer dengan menyedia
kan data-data dari perangkat, operasi yang akan ditampilkan, alamat memori yang
menjadi sumber dan tujuan data, dan banyaknya byte yang ditransfer.
2.
Pengendali DMA memulai operasi (menyiapkan bus,
menyediakan alamat, menulis dan membaca data), sampai seluruh blok sudah di
transfer.
3.
Pengendali DMA meng-interupsi prosesor, dimana
selanjutnya akan ditentukan tindakan berikutnya.
Pada
dasarnya, DMA mempunyai dua metode yang berbeda dalam mentransfer data. Metode
yang pertama ialah metode yang sangat baku dan sederhana disebut HALT, atau
Burst Mode DMA, karena pengendali DMA memegang kontrol dari sistem bus dan
mentransfer semua blok data ke atau dari memori pada single burst. Selagi
transfer masih dalam prosres, sistem mikroprosessor diset idle, tidak melakukan
instruksi operasi untuk menjaga internal register.
Tipe
operasi DMA seperti ini ada pada kebanyakan komputer. Metode yang kedua,
mengikutsertakan 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. Metode 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.
DMA chip atau DMA controller sangat beragam tergantung dari teknologi yang ditanamkan padanya, untuk menjelaskan cara kerjanya akan digunakan jenis yang paling sederhana, yaitu DMA chip yang menangani sebuah transfer setiap waktunya.
Berikut ini cara kerjanya:
Pertama CPU
akan memprogram atau mengeset DMA chip dengan mengatur registerinya, agar DMA
chip mengetahui apa saja yang perlu ditransfer dan kemana informasi tersebut
perlu ditransfer. Selain itu CPU juga akan memberikan command atau perintah
pada disk controller untuk membaca data dari disk dan menuliskannya pada
internal buffer, serta melakukan checksum untuk memastikan tidak adanya error
yang terjadi ketika membaca dan menuliskan data dari disk menuju internal
buffer. Bila tidak ada terjadi error maka DMA chip dapat memulai untuk
melakukan transfer. DMA chip akan melakukan request kepada disk controller
untuk melakukan transfer data menuju main memory (RAM). Selama melakukan
transfer menuju memory akan terjadi bus cycle, dan setiap kali selesai
menuliskan data pada memory, disk controller akan mengirim suatu sinyal
(acknowledgement signal) pada DMA chip. Kemudian DMA chip akan menaikkan alamat
memory untuk digunakan dan melakukan pengurangan pada counter bit data. Proses
dari DMA chip melakukan request sampai disk controller mengirimkan sinyal
kembali pada DMA chip akan terus berlangsung hingga counter mencapai 0. Ketika
counter mencapai 0, maka DMA chip akan melakukan interupt dan memberitahukan
pada CPU bahwa proses transfer sudah selesai. Semua transfer data dan sinyal
ini dikirimkan melalui suatu bus yang menghubungkan CPU, DMA chip (controller),
Disk controller dan main memory. Berikut ini gambar untuk mempermudah
penjelasan:
Kelebihan DMA :
- Dapat menirukan sebagian fungsi processor
- Dapat mengambil alih fungsi prosesor yang berhubungan dengan transfer data
- CPU dapat melakukan manajemen operasi baca tulis (transfer data) dengan baik dan juga dapat menyelsaikan instruksi yang lain.
- Mendapat informasi tentang jumlah data bit yang ditransfer, alamat dari device dan memory yang diperlukan dan arah dari aliran data.
Kekurangan DMA :
- Transfer rate data terbatas
- Masih memerlukan keterlibatan CPU, Sehingga CPU menjadi lebih sibuk
Referensi:
(*)http://en.wikipedia.org/wiki/Direct_memory_access
(*) Tanenbaum, A. (2008). Modern Operating Systems. 3rd Edition.Pearson Higher Education. . ISBN: 9780138134594
(*)http://en.wikipedia.org/wiki/Direct_memory_access
(*) Tanenbaum, A. (2008). Modern Operating Systems. 3rd Edition.Pearson Higher Education. . ISBN: 9780138134594