DMA (Direct Memory Access)
1.PENGERTIAN
DMA
DMA (Direct Memory Access) adalah suatu hardware
spesial (chip) yang dapat mengontrol aliran bit data antara memory (RAM) dan
beberapa controller dari I/O devices tanpa memerlukan interferensi dari CPU
secara terus menerus. (Mengakses dan mengontrol memori sistem tanpa interferensi
CPU secara terus menerus).
2.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.
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.
3.KELEBIHAN
Adapun beberapa kelebihan dari Direct Memory Access (DMA) adalah sebagai
berikut :
Dapat menirukan sebagian fungsi
processor.
Dapat mengambil alih fungsi
processor yang berhubungan dengan transfer data.
CPU dapat melakukan manajemen
operasi baca tulis (transfer data) dengan baik dan juga dapat menyelesaikan
instruksi lain.
Mendapat informasi tentang
jumlah data bit yang ditransfer , alamat dari device dan memory yang diperlukan
dan arah dari aliran data.
4.KEKURANGAN
Jika ada kelebihan kemungkinan ada juga kekurangan. Adapun
beberapa kekurangan dari Direct Memory Access (DMA) adalah sebagai
berikut :
Transfer
rate data terbatas
Masih
memerlukan keterlibatan CPU, sehingga CPU menjadi lebih sibuk.
5.Cara Kerja DMA
6.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 controllermengirimkan 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
Cycle Stealing di DMA |
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
CPUhanya
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
Komentar
Posting Komentar