DMA (Direct Access Memory)
1.
PENGERTIAN DIRECT
MEMORY ACCESS (DMA)
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.
REFERENSI :
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.
REFERENSI:
http://ryuuran123.blogspot.com/2011/03/dma-direct-memory-access.html
1. 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 . 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.
3. Cara Kerja
DMA
1. CPU
mengirimkan CPU data-data berikut ini ke DMA controller:
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)
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
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
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.
4. 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.
5. 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.
Referensi:
https://taryainunhannif.blogspot.com/2014/02/normal-0-false-false-false-in-x-none-x_42.html
gambar cara kerja DMA
:
Komentar
Posting Komentar