Pengertian DMA (Direct Memory
Access)
Direct Memory Access
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 tranfer data. Karena harus
mentranfer sejumlah blok data, maka kontroler DMA harus menaikkan alamat memori
untuk wordyang berurutan dan mencatatjumlah 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 (spesial 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 menunjukkan kesumbet transfer, ke memori. CPU kemudian menuliskan alamat
command block inike pengendali DMA, sehingga pengendalian DMA dapat kemudian
mengoperasikan bus memori secara langsung dengan menempatkan alamat-alamat 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).
TRANSFER DMA (Direct
Memory Access)
Ada 3 langkah dalam
transfer DMA
- Prosesor
menyiapkan DMA prosesor Transfer dengan menyediakan data-data dari
perangkat, operasi yang akan ditampilkan, alamat memori yang akan menjadi
sumber, tujuan data, dan banyaknya byte yang akan ditransfer.
- Pengendali
DMA memulai operasi dengan menyiapkan bus,menyediakan alamat, menulis, dan
membaca data sampai seluruh blok sudah ditransfer.
- Pengendali
DMA menginterupsi prosesor, dimana selanjutnya akan ditentukan tindakan
berikutnya.
DATA TRANSFER WITH DMA
CONTROLLER :
Penjelasan :
Selama transfer byte
masukan blok, urutan berikut terjadi saat byte data dikirim dari antarmuka ke
memori:
- Antarmuka
mengirimkan DMA controller permintaan untuk layanan DMA.
- Permintaan
bus dibuat ke pin HOLD (aktif Tinggi) pada mikroprosesor tebhe 8086 dan
pengendali mendapatkan kontrol bus.
- Isi
bus dikembalikan ke kontroler DMA dari pin HOLD Acknowledge (HLDA) (aktve
High) pada mikroprosesor 8086.
- Pengontrol
DMA menempatkan isi register alamat ke alamat bus.
- Pengontrol
mengirimkan antarmuka pengakuan DMA, yang memberi tahu antarmuka untuk menempatkan
bus data (untuk keluarannya memberi sinyal antarmuka untuk mengunci data
berikutnya yang ditempatkan di bus)
- Data
dalam bentuk byte ditransfer ke lokasi memori yang ditunjukkan
oleh alamat bus.
- Interface
mengaitkan data / memasang datanya.
- Permintaan
bus dijatuhkan, pin HOLD menjadi rendah, dan pengendali melepaskan bus.
- Isi bus dari mikroprosesor 8086 menurun dan pin HLDA menjadi turun..Register alamat bertambah 1,Hitungan byte dikurangi 1.Jika jumlah byte tidak nol, kembali ke langkah 1, jika tidak hentikan.
JENIS-JENIS DMA
(Direct Memory Access)
Ada 2 jenis DMA,
yaitu:
- Third−party
DMA, untuk melakukan operasi transfer data menggunakan DMA controller yang
ada pada motherboard.
- 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 perkarakter
·
Dimana setiap kali
transfer selalu ada interrup dari CPU sebelum dan sesudah transfer.
·
Jika waktu untuk
mentranfer satu karakter sebesar 2 us dan sekali interrupt butuh 1ms , maka
untuk mentransfer data dari memori ke buffer butuh 4 us per karakter.
·
Dengan menggunakan DMA
transfer data dapat dilakukan secara langsung oleh device controller per-blok
tanpa ada campur tangan dari CPU.
·
CPU hanya memberikan
interrupt sebelum dan sesudah 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 adalah
gambar untuk mempermudah penjelasan:
METODE KERJA DMA
(Direct Memory Access)
Ada beberapa metode
DMA dalam mentransfer data:
- 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
proses, sistem mikro prosessor diset idle. Tidak melakukan instruksi
operasi untuk menjaga internal register. Tipe operasi DMA seperti ini ada
pada kebanyakan komputer.
- Metode
kedua mengikutsertakan pengendali DMA untuk memegang kontrol dari sistem
bus untuk jangka waktu yang lebih pendek pada periode dimana mikro
prosessor 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/O device.
Adapun juga cara kerjanya sebagai berikut:
·
I/O device terhubung
dengan DMA controller memberikan instruksi yang harus diproses.
·
DMA controller
mengirimkan pemberitahuan ke processor akan ada proses yang dihandle oleh DMA
controller.
·
Processor
menginformasikan ke memory bahwa DMA akan mengakses memori untuk pemrosesan
suatu instruksi.
·
DMA controller
terhubung dengan memori dan akses alamat, data yang diperlukan.
·
DMA controller
mengirimkan hasil proses kembali ke I/O device.
·
Jika proses selesai,
DMA controller kembali melapor ke processor bahwa proses telah beres dilakukan.
Kegunaan
DMA
DMA
memiliki kegunaan sebagai berikut :
1. untuk
membantu CPU fokus penuh untuk mengerjakan proses transfer data.
Dengan
DMA, CPU cukup memulai prosesnya dan bisa melakukan kerja lain
selama proses transfer itu berlangsung dan tinggal menunggu
informasi dari DMA controller jika proses transfer
sudah selesai.
2. membebaskan
pemroses menunggui transfer data yang dilakukan perangkat I/O.
Saat pemroses
ingin membaca atau menulis data, pemroses memerintahkan DMA controller dengan
mengirim informasi berikut :
• Perintah penulisan/pembacaan.
• Alamat perangkat I/O.
•
Awal lokasi memori yang ditulis/dibaca.
•
Jumlah word (byte) yang ditulis/dibaca.
Setelah mengirim
informasi-informasi itu ke DMA controller, pemroses
dapat melanjutkan
kerja lain. Pemroses mendelegasikan operasi I/O ke DMA.
DMA mentransfer
seluruh data yang diminta ke/dari memori secara langsung
tanpa melewati
pemroses. Ketika transfer data selesai, DMA mengirim
sinyal interupsi
ke pemroses. Sehingga pemroses hanya dilibatkan pada
awal dan akhir
transfer data. Operasi transfer antara perangkat dan
memori utama
dilakukan sepenuhnya oleh DMA lepas dari pemroses dan hanya
melakukan interupsi
bila operasi telah selesai.
3. Supaya 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.
4. Dma 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) dalam sebuah elemen pemrosesan
multi-core processor dapat mentransfer data ke dan dari memori tanpa menempati
prosesor waktu, mesin dan membuat data tumpang tindih.
5. 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 .
Konfigurasi
Modul DMA
·
Konfigurasi I
o Hanya menggunakan single bus
o DMA dan modul I/O terpisah
o Setiap transfer harus mengakses bus 2 kali
·
Konfigurasi II
o Hanya menggunakan single bus
o DMA controller dan modul I/O terintegrasi
o satu DMA controller dapat mengangani lebih dari 1 modu I/O
o Setiap transfer hanya perlu mengakses bus satu kali saja
·
Konfigurasi III
o digunakan bus I/O secara terpisah
o semua modul I/O cukup dilayani dengan sebuah DMA
o Setiap transfer hanya perlu mengakses bus satu kali saja
Sumber :