Monday, May 14, 2012

Penjelasan DMA (Direct Memory Acces)

Penjelasan Direct Memory Acces (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 (CPU).

 Diperlukan DMA untuk programmed I/O dan interrupt driver I/O, DMA menjadi solusi
  • Masih memerlukan keterlibatan CPU, CPU menjadi sibuk
    direct memory acces
    DMA
  • 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
Diagram Modul DMA
Cara Kerja DMA
  • CPU mengirimkan data data berikut ini ke DMA controller:
    • Perintah read/write
    • Alamat device yang akan diakses
    • Alamat awal blok memori yang akan dibaca/ditulis
    • Jumlah blok data yang akan ditransfer
  • CPU mengeksekusi program lain
  • DMA controller mengirimkan seluruh blok data (per satu word) langsung ke memori(tanpa melibatkan CPU)
  • DMA controller mengirim interrupt ke CPU jika telah selesai.
Cycle Stealing pada DMA transfer
  • DMA controller mengambil alih bus sebanyak satu siklus
  • DMA mentransfer satu word data
  • Pengambil alihan bus oleh DMA bukan interrupt --> CPU tidak perlu menyimpan context
  • CPU hanya tertunda (suspend) sesaat sebelum mengakses bis, yaitu sebelum operand atau data diambil atau data ditulis
  • Pengaruh terhadap CPU yaitu memperlambat CPU , tetapi masih lebih baik dari pada CPU terlibat langsung pada transfer data
Cycle Stealing di DMA
Cycle Stealing di DMA
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

Interrupt Driven Input Output

Penjelasan  Interrupt Driven Input Output

Interrupt Driven I/O
Interrupt Driven I/O
 Modul I/O meng interrupt CPU device telah menyelesaikan pekerjaannya


Kerja CPU
  • Mengirim perintah ke I/O
  • Mengerjakan program berikutnya
  • CPU memeriksa status interrupt
  • baca data
  • Simpan data ke memori
Kerja Modul I/O
  • Melaksanakan permintaan CPU
  • Bila telah selesai/ada masalah mengirim interrupt
Kelebihannya
  • CPU tidak perlu menunggu operasi I/O selesai , CPU dapat mengerjakan program lain
  • CPU tidak perlu memeriksa status device terus menerus

Programmed Input Output

Penjelasan dari programmed input output
Programmed I/O
Programmed I/O

CPU terlibat langsung dalam mengendalikan I/O
  • Membaca Status
  • Menerima / mengirim perintah
  • Transfer data
Kerja CPU
  •  Mengirim perintah ke I/O
  • menunggu hingga aktifitas I/O selesai
  • CPU memeriksa bit bit status secara periodik
Kerja Modul I/O
  • Melaksanakan permintaan CPU
  • men set bit bit status
  • Tidak berinisiatif memberi laporan status
  • tidak meng interrupt CPU

Kekurangan:
  • Selama menunggu operasi I/O selesai , CPU tidak melakukan apa apa, dan waktu CPU terbuang
  • CPU harus selalu memeriksa status modul I/O
  • Performnasi sistem menurun
 Jenis Pengalamatan I/O
  • Memory mapped I/O
    • Ruang alamat digunakan oleh memori dan I/O bersama sama : jumlah alamat untuk memori berkurang
    • CPU memperlakukan I/O seperti memori biasa
    • Tidak ada perintah khusus bagi I/O
  • Isolated I/O
    • memori dan I/O menggunakan ruang alamat yang secara bergantian
  • diperlukan select line untuk membedakan antara memori dengan I/O
  • diperlukan perintah khusus untuk I/O

Identifikasi Interrupt

Penjelasan menentukan asal interrupt
  • Digunakan banyak jalur interrupt: satu modul satu jalur
    • (-) tidak praktis karena harus menyediakan sejumlah jalur kusus untuk interrupt
    • (-) Jumlah device yang dapat dipasang terbatas
  • Software poll(polling)
    • (-) lambat, karena harus memeriksa modul I/O satu persatu
    • Mekanisme :
      • Jika CPU mendeteksi adanya interrupt
      • CPU menanyakan ke setiap modul I/O untuk mengetahui asal interrupt
  • Daisy chain atau hardware poll
    • digunakan satu jalur interrupt yang menghubungkan setiap modul I/O
    • Modul satu dengan modul lainnya terhubung secara serial
    • Mekanisme:
      • modul I/O mengirimkan interrupt melalui jalur interrupt bersama
      • CPU mendeteksi adanya interrupt, mengirimkan signal ke sebuah modul I/O
      • signal akan diestafetkan dari satu modul ke modul lainnya
      • hanya modul yang mengirimkan interrupt yang akan memberi jawaban
      • jawaban berupa word(vecotr_ yang ditaruh di jalur data. Isi word adalah alamat modul I/O atau identitas unik lainnya
      • vector digunakan sebagai pointer untuk menunjuk langsung ke device sumber interrupt sebelum menjalankan interrupt handeler yang disebut vetored interrupt
  • Bus master
    • Pnegiriman interrupt dilakukan bila modul I/O telah mengusai('master')bus
    • mekasnisme:
      • Modul I/O mengirimkan permintaan untuk menggunakan bus
      • arbiter memberi kesempatan kepada I/O modul --> hanya satu modul dalam satu saat
      • Modul I/O mengirimkan interrupt
      • CPU mendeteksi adanya interrupt dan memberi respon melalui jalur acknowledge
      • Modul I/O mengirimkan word(vecotr) ke jalur data