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.
Diperlukan DMA untuk programmed I/O
dan interrupt driver I/O, DMA menjadi solusi
·
Masih memerlukan keterlibatan CPU, CPU menjadi sibuk
Transfer rate data terbatas
Transfer rate data terbatas
Digunakan modul khusus(hardware)
yang terhubung ke sistem bus
Fungsi modul DMA:
·
Dapat menirukan sebagian fungsi processor
·
Dapat mengambil alih fungsi prosesor yang berhubungan
dengan transfer data
Kapan DMA bekerja?
·
Saat prosesor sedang tidak menggunakan bus
·
Saat prosesor dipaksa berhenti sesaat (suspend) ,
siklus "dicuri oleh
DMA" adalaah cycle stealing
CARA KERJA DMA
Selama transfer blok byte masukan, urutan berikut terjadi sebagai byte data dikirim dari antarmuka ke memori :
1. Antarmuka 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 Acknowledge (HLDA) pin (aktif tinggi) pada mikroprosesor 8086.
4. Para DMA controller tempat isi alamat register ke bus alamat.
5. Controller mengirimkan antarmuka pengakuan DMA, yang mengisahkan antarmuka untuk menempatkan data pada bus data. (Untuk output itu sinyal antarmuka untuk latch data berikutnya ditempatkan di bus.
6. Byte data ditransfer ke lokasi memori yang ditunjukkan oleh bus alamat.
7. Antarmuka kait data.
8. Permintaan Bus terjatuh, pin HOLD pergi rendah, dan controller relinquishes bus.
9. Hibah Bus dari mikroprosesor 8086 dijatuhkan dan pin HLDA pergi Rendah.
10. Register alamat bertambah oleh 1.
11. Jumlah byte decremented oleh 1.
12. Jika jumlah byte adalah bukan nol, kembali ke langkah 1, jika tidak berhenti.
Konfigurasi pada 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
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.
Kelebihan DMA :
§ Dapat menirukan sebagian fungsi processor
§ Dapat mengambil alih fungsi prosesor yang
berhubungan dengan transfer data
§ CPU dapat melakukan manajemen operasi baca
tulis (transfer data) dengan baik dan juga dapat menyelsaikan instruksi yang
lain.
§ Mendapat informasi tentang jumlah data bit
yang ditransfer, alamat dari device dan memory yang diperlukan dan arah dari
aliran data.
Kekurangan DMA :
§ Transfer rate data terbatas
§ Masih memerlukan keterlibatan CPU,
Sehingga CPU menjadi lebih sibuk
Referensi :
Tidak ada komentar:
Posting Komentar