DMA (DIRECT MEMMORY ACCESS)
v Direct Memmory Access
Direct
memory access (DMA) adalah suatu alat pengendali khusus disediakan untuk
memungkinkan transfer 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.
Sekalipun
kontroler DMA dapat mentransfer data tanpa intervensi dari prosesor, operasinya
tetap berada dibawah kontrol program yang dieksekusi oleh prosesor. Untuk
menginisiasi transfer suatu blok word, prosesor mengirim alamat awal, jumlah
word dalam blok, dan arah transfer. Pada saat seluruh blok telah ditransfer,
kontroler tersebut memberitahu prosesor dengan memunculkan sinyal interupt.
Pada saat transfer DMA terjadi, program yang meminta transfer tersebut berhenti
bekerja dan prosesor dapat digunakan untuk mengeksekusi program lain. Setelah
transfer DMA selesai, prosesor dapat kembali ke program yang meminta transfer
tersebut.
Operasi
I/O selalu dilakukan oleh OS sebagai respon terhadap request dari program
aplikasi. OS juga bertanggung jawab untuk menunda eksekusi satu program dan
memulai eksekusi program lain. Sehingga, untuk operasi I/O yang melibatkan DMA,
OS menetapkan program yang meminta transfer tsb pada keadaan blocked,
menginisiasi operasi DMA, dan memulai eksekusi program lain. Pada saat transfer
selesai, kontroler DMA memberitahu prosesor dengan mengirim interupt request.
Sebagai responnya, OS menetapkan program yang ditunda ke keadaan runnable
sehingga dapat dipilih oleh scheduler untuk melanjutkan eksekusi.
Memory
merupakan hardware atau perangkat keras yang berfungsi untuk menyimpan data.
Data yang disimpan bisa berupa data yang bersifat sementara, juga bisa berupa
data yang permanen. Direct Memory Access (DMA), jika di artikan dalam bahasa
indonesia adalah akses memori langsung. DMA merupakan fitur yang modern dan
komputer yang memungkinkan microprocessors hardware subsystems tertentu di
dalam komputer untuk mengakses memori sistem untuk membaca dan menulis secara independen dari pusat
pengolahan unit. Singkatnya, DMA adalah sistem yang dapat mengontrol sistem
memori tanpa menggunakan CPU.
v Fungsi DMA
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 juga
digunakan intra-chip untuk transfer data dalam multi-core, terutama dalam
sistem multiprocessor-on-chip, di mana elemen-nya adalah proses yang dilengkapi
dengan memori lokal (sering disebut alas memori) dan DMA digunakan untuk
mentransfer data antara lokal memori dan memori utama. Komputer yang ada DMA
channel dapat mentransfer data dari dan ke perangkat dengan CPU overhead jauh
lebih sedikit daripada komputer tanpa saluran DMA . Demikian pula di dalam
sebuah elemen pemrosesan multi-core processor dapat mentransfer data dari
memori tanpa menempati prosesor waktu, mesin dan membuat data tumpang tindih.
v Cara Kerja DMA
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.
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.
v Jalur-Jalur Transfer DMA
Terdapat
tiga jalur independen untuk transfer DMA. Setiap saluran yang memicu untuk
menerima transfer melalui besar multiplexer yang memilih antara banyak sinyal,
transfer terjadi saat sinyal diaktifkan. DMA controller menerima sinyal pemicu
tetapi akan mengabaikan itu dalam kondisi tertentu. Hal ini diperlukan untuk
cadangan memori bus untuk memprogram ulang dan me non-maskable interrupts.
Pengendali juga menangani konflik untuk memicu bersamaan. Ketika beberapa
pemicuan terjadi secara bersamaan, mereka muncul di urutan modul prioritas. DMA
yang kemudian memicu ke modul yang memicu diaktifkan. DMA saluran yang akan
menyalin data dari blok atau lokasi
memori ke lokasi memori tujuan atau blok.
v Kelebihan DMA
1. Dapat menirukan sebagian fungsi processor.
2. Dapat mengambil alih fungsi processor yang berhubungan dengan transfer
data.
3. CPU dapat melakukan menejemen operasi baca tulis (transfer data) dengan
baik dan juga dapat menyelesaikan instruksi yang lain.
4. Mendapat informasi tentang jumlah data bit yang ditransfer, alamat dari
device dan memory yang diperlukan dan arah dari aliran data.
v Kelemahan DMA
1. Transfer rate data terbatas.
2. Masih memerlukan keterlibatan CPU, sehingga CPU menjadi lebih sibuk.
makasih sudah share infonya
BalasHapusPower supply hp
Bagaimanakah mekanisme DMA ini dilakukan pada sistem yang memiliki lebih dari satu prosesor? Apakah hanya satu prosesor yang dinotifikasi? Apakah sebagian atau semuanya dinotifikasi?
BalasHapusPunten?
BalasHapus