Minggu, 28 Oktober 2018

DATA TRANSFER WITH A DMA CONTROLLER

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
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

        Diagram Modul DMA

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