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.

Tanpa DMA, diprogram menggunakan Input/ Output (I/O) mode untuk berkomunikasi dengan perangkat pinggiran, atau menggunakan/ menyimpan instruksi dalam kasus multicore chips, CPU biasanya penuh diduduki untuk seluruh durasi dari operasi membaca atau menulis, dan dengandemikian tidak tersedia untuk melakukan pekerjaan lain. Dengan DMA, CPU akan melakukan transfer, lakukan operasi lainnya sementara transfer yang sedang berlangsung, dan menerima mengganggu dari DMA controller setelah operasi telah selesai. Hal ini sangat berguna dalam real-time komputasi di mana aplikasi tidak stalling belakang yang berbarengan operasi adalah penting. Dan aplikasi lain yang berhubungan dengan berbagai daerah adalah bentuk streaming pemrosesan dimana perlu ada pengolahan data dan transfer paralel, untuk mencapai throughput memadai.

Komentar

  1. Bagaimanakah mekanisme DMA ini dilakukan pada sistem yang memiliki lebih dari satu prosesor? Apakah hanya satu prosesor yang dinotifikasi? Apakah sebagian atau semuanya dinotifikasi?

    BalasHapus

Posting Komentar

Postingan populer dari blog ini

Deteksi dan Koreksi Kesalahan pada Komunikasi Data

Topologi Mesh