2.1 Pengertian DMA
(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. Sebagai responnya, OS menetapkan program yang ditunda ke
keadaan runnable sehingga dapat dipilih oleh scheduler untuk melanjutkan
eksekusi.
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).
2.2 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.
2.3 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.
2.4 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:
2.5 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.
Menurut reverensi lain
cara kerja DMA sebagai berikut:
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 controller
mengirimkan seluruh blok data (per satu word) langsung ke memori(tanpa
melibatkan CPU)
·
DMA controller mengirim
interrupt ke CPU jika telah selesai.
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”
(Gambar : Blog
Diagram DMA)
2.6 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.
2.7 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.
2.8 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
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)
2.9 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.
2.10
Keuntungan menggunakan DMA:
·
Dapat
dilihat pada operasi multiasking seperti UNIX.
·
Transfer
data dengan mode DMA akan menghemat sumberdaya CPU sehingga CPU dapat melakukan
pekerjaan yang lain.
·
Sedangkan
pada DOS (yang merupakan operasi single-tasking) harus menunggu sampai proses
selesai terlebih dahulu baru kemudian bisa menjalankan proses berikutnya
Tidak ada komentar:
Posting Komentar