Anda di halaman 1dari 7

Direct Memory Access (DMA)

Pengertian Direct Memory Access

Direct memory access (DMA) adalah suatu alat pengendali khusus disediakan untuk memungkinkan
transfes 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.

DMA ialah 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.

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).
Jenis-Jenis DMA (Direct Memory Access)

Ada 2 jenis DMA, yaitu:

a. Third−party DMA, untuk melakukan operasi transfer data menggunakan DMA controller yang ada
pada motherboard.

b. First−party DMA (busmastering DMA). Untuk melakukan operasi transfer data dikerjakan oleh bagian
logic di interface card.

Struktur DMA (Direct Memory Access)

 Transfer data dari buffer ke memori atau sebaliknya dilakukan per-karakter.


 dimana setiap kali transfer selalu ada interruptdari CPU sebelum dan sesudah transfer.
 Jika waktu untuk mentransfer satu karakter sebesar 2 µs dan sekali interrupt butuh 1ms, maka
untuk mentransfer data dari memori kebuffer butuh 4 µs per karakter.
 Dengan menggunakan DMA transfer data dapatdilakukan secara langsung oleh device controller
per-blok tanpa ada campur tangan dari CPU.
 CPU hanya memberikan interrupt sebelum dansesudah transfer setiap blok.

Fungsi DMA (Direct Memory Access)

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. Berikut ini gambar
untuk mempermudah penjelasan:

Metode Kerja DMA (Direct Memory Access)

Ada Beberapa Metode DMA dalam mentrasfer data :

a. 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.

b. Metode 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
Pada dasarnya cara kerja DMA terkait erat 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.

Dapat disimpulkan Prinsip sederhanya : DMA controller mengambil alih kerja processor dalam
memproses instruksi yang masuk melalui I/O device. Processor cukup mendapatkan laporan saja bahwa
akan ada tugas yang dihandle oleh DMA controller, dan setelah beres, tinggal nunggu laporan ” tugas
beres”

Transfer DMA (Direct Memory Access)

Ada 3 langkah dalam transfer DMA :

a. 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.

b. Pengendali DMA memulai operasi (menyiapkan bus, menyediakan alamat, menulis dan membaca
data), sampai seluruh blok sudah di transfer.

c. Pengendali DMA meng-interupsi prosesor dimana selanjutnya akan ditentukan tindakan berikutnya.
Implementasi DMA

Dalam pelaksanaannya, beberapa komputer menggunakan memori fisik untuk proses DMA , sedangkan
jenis komputer lain menggunakan alamat virtual dengan melalui tahap “penerjemahan” dari alamat
memori virtual menjadi alamat memori fisik, hal ini disebutDirect Virtual-Memory Address atau DVMA.
Keuntungan dari DVMA adalah dapat mendukung transfer antara dua memori mapped device tanpa
intervensi CPU.

Konfigurasi modul DMA

a. Konfigurasi 1 (Single Bus)

 Hanya menggunakan single bus


 DMA dan modul I/O terpisah
 Setiap transfer harus mengakses bus 2 kali:
 modul I/O ke DMA kemudian DMA ke memori
 Lebih lambat CPU (tertunda 2 kali)
b. Konfigurasi 2 (Single Bus, Integrated DMA-I/O)

 Hanya menggunakan single bus


 Modul I/O terintegrasi
 Satu DMA controller dapat menangani >1 modul I/O
 Setiap transfer hanya perlu mengakses bus satu kali saja DMA ke memori
 CPU hanya tertunda satu kali (lebih baik dari konfigurasi 1)

c. Konfigurasi 3 (IO Bus)

 Digunakan bus I/O secara terpisah


 Lebih hemat hardware◊Semua modul I/O cukup dilayani dengan sebuah DMA
 Setiap transfer hanya perlu mengakses bus satu kali saja DMA ke memori
 CPU hanya tertunda (lebih baik dari konfigurasi 2)

Proses Handshaking pada DMA

Proses handshaking antara pengendali DMA dan pengendali perangkat dilakukan melalui
sepasang kabel yang disebut DMA-request dan DMA-acknowledge. Pengendali perangkat mengirimkan
sinyal melalui DMA-request ketika akan mentransfer data sebanyak satu word. Hal ini kemudian akan
mengakibatkan pengendali DMA memasukkan alamat-alamat yang dinginkan ke kabel alamat memori,
dan mengirimkan sinyal melalui kabel DMA-acknowledge. Setelah sinyal melalui kabel DMA-
acknowledgediterima, pengendali perangkat mengirimkan data yang dimaksud dan mematikan sinyal
pada DMA-request.
Hal ini berlangsung berulang-ulang sehingga disebut handshaking. Pada saat pengendali DMA
mengambil alih memori, CPU sementara tidak dapat mengakses memori (dihalangi), walau pun masih
dapat mengaksees data pada cache primer dan sekunder. Hal ini disebut cycle stealing, yang walau pun
memperlambat komputasi CPU, tidak menurunkan kinerja karena memindahkan pekerjaan data transfer
ke pengendali DMA meningkatkan performa sistem secara keseluruhan

Kelemahan DMA

Tanpa DMA, diprogram menggunakan input / Output (PIO) 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 yg 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.

Kelebihan DMA

Kelebihan menggunakan mode DMA sangat terasa pada sistem operasi multitasking seperti
Windows, Linux, UNIX, dan sebagainya. Karena transfer data akan menghemat resource processor
sehingga processor dapat mengerjakan pekerjaan lain. Keuntungan lainnya adalah kecepatan transfer
data dengan menggunakan mode DMA jauh lebih cepat bila dibandingkan dengan menggunakan mode
PIO.

Hubungan DMA dengan Input dan Output

Hubungan antara CPU dengan main memory ataupun dengan alat-alat input atau output
dilakukan dengan suatu jalur yang di sebut dengan bus. Hubungan antara CPU dengan main memory
melalui jalur bus yang dilekatkan pada memory data register, memory address register dan control unit
di CPU. Sedangkan bus yang menghubungkan CPU dengan alat-alat input/output tidak dilekatkan
langsung ke alat-alat input/output tersebut, tapi dapat melalui suatu alat port atau DMA controller atau
channel.

Anda mungkin juga menyukai