A. Apa artinya Direct Memory Access (DMA) ?
Direct memory access (DMA) adalah metode yang memungkinkan perangkat
input / output (I / O) untuk mengirim atau menerima data secara langsung ke
atau dari memori utama, melewati CPU untuk mempercepat operasi
memori. Proses ini dikelola oleh chip yang dikenal sebagai
pengontrolDirectMemory Access Control (DMAC).
Selama transfer blok byte
masukan, urutan berikut terjadi sebagai byte data dikirim dari I/O Interface ke
memori:
1. I/O Interface
mengirimkan pengontrol DMA permintaan DMA layanan.
2. Permintaan Bus dibuat
untuk pin terus (Tinggi aktif) pada mikroprosesor 8086 dan controller kontrol
keuntungan dari bus.
3. Dana bantuan Bus
dikembalikan ke DMA controller dari Hold mengakui (HLDA) pin (aktif tinggi)
pada mikroprosesor 8086.
4. Para DMA controller
tempat isi alamat register ke bus alamat.
5. Controller mengirimkan
I/O Interface pengakuan DMA, yang memberi tau I/O Interface untuk menempatkan
data pada bus data. (Untuk output itu sinyal
antarmuka untuk memalangi data berikutnya yang ditempatkan di bus)
antarmuka untuk memalangi data berikutnya yang ditempatkan di bus)
6. Byte data ditransfer ke
lokasi memori yang ditunjukkan oleh bus alamat.
7. I/O Interface
Mengkaitkan data.
8. Permintaan Bus terjatuh,
pin HOLD pergi rendah, dan controller melepaskan bus.
9. Bantuan Bus dari
mikroprosesor 8086 dijatuhkan dan pin HLDA pergi Rendah.
B. 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 :
v Perintah penulisan/pembacaan.
v Alamat perangkat I/O.
v Awal lokasi memori yang ditulis/dibaca.
v 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 .
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.
C. 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)
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 perlumenyimpan context
8.
CPU hanya
tertunda sessaat satu siklus sebelum mengakses bus yaitu sebelum operan atau
data diambil atau data ditulis diagram modul DMA
D. 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
E. Jalur Transfer DMA
1.
Ada 3 langkah
dalam transfer DMA :
i. 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.
ii. Pengendali
DMA memulai operasi dengan menyiapkan bus,menyediakan alamat, menulis, dan
membaca data sampai seluruh blok sudah ditransfer.
iii. Pengendali
DMA menginterupsi prosesor, dimana selanjutnya akan ditentukan tindakan
berikutnya.
Pada dasarnya, DMA mempunyai 2 metode untuk transfer data.
1) HALT atau Burst Mode DMA ialah DMA yang memegang
kontroldari sistem bus dan menstransfer semua blok data dari memori ke single
burst atau sebaliknya,
2) 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.
F.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.
G. 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.
H. 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.
Sumber :