Sistem Operasi

Jumat, 02 November 2018

Proses Transfer Data Melalui DMA


Pengertian DMA (Direct Memory Access)

Direct Memory Access adalah suatu alat pengendali khusus disediakan untuk memungkinkan transfer 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 tranfer data. Karena harus mentranfer sejumlah blok data, maka kontroler DMA harus menaikkan alamat memori untuk wordyang berurutan dan mencatatjumlah 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.

DMA ialah sebuah prosesor khusus (spesial 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 menunjukkan kesumbet transfer, ke memori. CPU kemudian menuliskan alamat command block inike pengendali DMA, sehingga pengendalian DMA dapat kemudian mengoperasikan bus memori secara langsung dengan menempatkan alamat-alamat pada bus tersebut untuk melakukan transfer tanpa bantuan CPU.

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

TRANSFER DMA (Direct Memory Access)

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.

DATA TRANSFER WITH DMA CONTROLLER :




















Penjelasan :

Selama transfer byte masukan blok, urutan berikut terjadi saat byte data dikirim dari antarmuka ke memori:

  1. Antarmuka mengirimkan DMA controller permintaan untuk layanan DMA.
  2. Permintaan bus dibuat ke pin HOLD (aktif Tinggi) pada mikroprosesor tebhe 8086 dan pengendali mendapatkan kontrol bus.
  3. Isi bus dikembalikan ke kontroler DMA dari pin HOLD Acknowledge (HLDA) (aktve High) pada mikroprosesor 8086.
  4.  Pengontrol DMA menempatkan isi register alamat ke alamat bus.
  5. Pengontrol mengirimkan antarmuka pengakuan DMA, yang memberi tahu antarmuka untuk menempatkan bus data (untuk keluarannya memberi sinyal antarmuka untuk mengunci data berikutnya yang ditempatkan di bus)
  6. Data dalam bentuk byte ditransfer ke lokasi memori yang ditunjukkan oleh  alamat bus.
  7. Interface mengaitkan data / memasang datanya. 
  8.  Permintaan bus dijatuhkan, pin HOLD menjadi rendah, dan pengendali melepaskan bus.
  9. Isi bus dari mikroprosesor 8086 menurun dan pin HLDA menjadi turun..Register alamat bertambah 1,Hitungan byte dikurangi 1.Jika jumlah byte tidak nol, kembali ke langkah 1, jika tidak hentikan.

JENIS-JENIS DMA (Direct Memory Access)

Ada 2 jenis DMA, yaitu:
  1. Third−party DMA, untuk melakukan operasi transfer data menggunakan DMA controller yang ada pada motherboard.
  2. First−party DMA (busmastering DMA). Untuk melakukan operasi transfer data dikerjakan oleh bagian logic di interface card.

STRUKTUR DMA (Direct Memory Access)
·         Transfer data dari buffer ke memori atau sebaliknya dilakukan perkarakter
·         Dimana setiap kali transfer selalu ada interrup dari CPU sebelum dan sesudah transfer.   
·         Jika waktu untuk mentranfer satu karakter sebesar 2 us dan sekali interrupt butuh 1ms , maka untuk mentransfer data dari memori ke buffer butuh 4 us per karakter.
·         Dengan menggunakan DMA transfer data dapat dilakukan secara langsung oleh device controller per-blok tanpa ada campur tangan dari CPU.
·         CPU hanya memberikan interrupt sebelum dan sesudah transfer setiap blok.

FUNGSI DMA (Direct Memory Access)

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 adalah gambar untuk mempermudah penjelasan:













METODE KERJA DMA (Direct Memory Access)
Ada beberapa metode DMA dalam mentransfer data:
  1. Metode yang sangat baku dan sederhana disebut HALT, atau Burst Mode DMA, karena pengendali DMA memegang kontrol dari sistem bus dan mentransfer semua blok data ke atau dari memori pada single burst. Selagi transfer masih dalam proses, sistem mikro prosessor diset idle. Tidak melakukan instruksi operasi untuk menjaga internal register. Tipe operasi DMA seperti ini ada pada kebanyakan komputer. 
  2. Metode kedua mengikutsertakan pengendali DMA untuk memegang kontrol dari sistem bus untuk jangka waktu yang lebih pendek pada periode dimana mikro prosessor sibuk dengan operasi internal dan tidak membutuhkan akses ke sistem bus. Metode DMA ini disebut cycle stealing mode. Cycle stealing DMA lebih kompleks untuk diimplementasikan dibandingkan HALT DMA, karena pengendali DMA harus mempunyai kepintaran untuk merasakan waktu pada saat sistem bus terbuka.
Pada dasarnya cara kerja DMA terkait erat dengan: DMA controller, Processor, Memory, I/O device. Adapun juga cara kerjanya sebagai berikut:
·         I/O device terhubung dengan DMA controller memberikan instruksi yang harus diproses.
·         DMA controller mengirimkan pemberitahuan ke processor akan ada proses yang dihandle oleh DMA controller.
·         Processor menginformasikan ke memory bahwa DMA akan mengakses memori untuk pemrosesan suatu instruksi.
·         DMA controller terhubung dengan memori dan akses alamat, data yang diperlukan.
·         DMA controller mengirimkan hasil proses kembali ke I/O device.
·         Jika proses selesai, DMA controller kembali melapor ke processor bahwa proses telah beres dilakukan.
   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 . 
   Konfigurasi Modul DMA
·     Konfigurasi I
o  Hanya menggunakan single bus
o  DMA dan modul I/O terpisah
o  Setiap transfer harus mengakses bus 2 kali
·     Konfigurasi II
o  Hanya menggunakan single bus
o  DMA controller dan modul I/O terintegrasi
o  satu DMA controller dapat mengangani lebih dari 1 modu I/O
o  Setiap transfer hanya perlu mengakses bus satu kali saja
·     Konfigurasi III
o  digunakan bus I/O secara terpisah
o  semua modul I/O cukup dilayani dengan sebuah DMA
o  Setiap transfer hanya perlu mengakses bus satu kali saja
     







Sumber :


Tidak ada komentar:

Posting Komentar

Tombol Kombinasi Atau Shortcut Microsoft Word

27 Daftar shortcut berdasarkan abjad Ctrl + A = Memilih/memblok seluruh teks Ctrl + B = Menebalkan pilihan yang disorot (bold) Ctrl + ...