DMA (Direct Memory Access)
DMA (Direct Memory Access)
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).
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:
Kegunaan DMA
DMA memiliki kegunaan sebagai berikut :
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 . Demikian pula di
Seperti yang telah disebutkan , 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 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 ke dan dari memori tanpa menempati prosesor waktu, mesin dan
membuat data tumpang tindih.
Cara Kerja DMA
1.CPU
mengirimkan CPU data-data berikut ini ke DMA
a. Perintah
read/write
b. Alamat device
yang akan diakses
c. Alamat awal
blok memori yang akan dibaca atau ditulis.
d. Jumlah blok
yang akan ditransfer.
2. CPU klien
mengeksekusi program lain.
3. DMA controller
mengirimkan seluruh blok data (per satu word) langsung ke memori tanpa
melibatkan CPU)
4. DMA controler
mengirimkan interupt ke CPU jika telah selesai.
5. DMA controler
mengambil alih sistem bus sebanyak 1 siklus.
6. DMA
men-transfer satu word data
7. Pengambil
alihan bus oleh DMA bukan interrupt CPU tidak perlu menyimpan context
8. CPU hanya
tertunda sessaat satu siklus sebelum mengakses bus yaitu sebelum operan atau
data diambil atau data ditulis diagram modul DMA
4 Konfigurasi Modul
DMA
Konfigurasi I
Hanya menggunakan single bus
DMA dan modul I/O terpisah
Setiap transfer harus mengakses bus 2 kali
Konfigurasi II
Hanya menggunakan single bus
DMA controller dan modul I/O terintegrasi
satu DMA controller dapat mengangani lebih dari 1 modu I/O
Setiap transfer hanya perlu mengakses bus satu kali saja
Konfigurasi III
digunakan bus I/O secara terpisah
semua modul I/O cukup dilayani dengan sebuah DMA
Setiap transfer hanya perlu mengakses bus satu kali saja
5 Jalur Transfer DMA
Ada 3 langkah dalam transfer DMA
1. 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.
2. Pengendali DMA
memulai operasi dengan menyiapkan bus,menyediakan alamat, menulis, dan membaca
data sampai seluruh blok sudah ditransfer.
3. Pengendali DMA
menginterupsi prosesor, dimana selanjutnya akan ditentukan tindakan berikutnya.
Pada dasarnya, DMA mempunyai 2 metode untuk transfer data.
a. HALT atau
Burst Mode DMA ialah DMA yang memegang kontroldari sistem bus dan menstransfer
semua blok data dari memori ke single burst atau sebaliknya,
b. CYCLE STEALING
DMA pada metode ini mengikutsertakan pengendali DMA untuk memegang kontrol dari
sistem bus untuk jangka waktu yang lebih pendek pada periode dimana mikroprosesor
sibuk dengan operasi internal dan tidak membutuhkan akses ke sistem bus.
6 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.
7 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.
referensi:

Comments
Post a Comment