18.11.10

Arkom


Interrupt-driven I/O

Masalah yang dijumpai dalam I/O terprogram adalah bahwa CPU harus menunggu modul I/O yang diinginkan agar siap baik untuk menerima maupun untuk mengirimkan data dalam waktu yang relative lama. Pada saat menunggu, CPU harus berulang-ulang menanyakan status modul I/O. Akibatnya, tingkat kinerja system keseluruhan mengalami penurunan yang tajam.
Alternatifnya adalah CPU mengeluarkan perintah I/O ke modul dan kemudian mengerjakan pekerjaan lainnya. Kemudian modul I/O akan menginterupsi CPU untuk meminta layanan modul telah siap untuk saling bertukar data dengan CPU. Setelah itu CPU akan mengeksekusi pengiriman data, seperti sebelumnya, dan dilanjutkan menyelesaikan proses sebelumnya.
Mari kita perhatikan cara kerja tersebut, pertama-tama dari sudut pandang modul I/O. Pada input, modul I/O menerima perintah READ dari CPU. Kemudian modul I/O memproses pembacaan data dari peripheral tertentu. Sekali data telah berada dalam register data modul, modul mengeluarkan signal interrupt ke CPU melalui saluran control. Kemudian modul akan menunggu hingga datanya diminta oleh CPU. Pada saat permintaan itu terjadi, modul menaruh datanya pada bus data dan modul akan siap melakukan pekerjaan lainnya.
Dari sudut pandang CPU, kegiatan input adalah sebagai berikut. CPU mengeluarkan perintah READ. Kemudian CPU berhenti mengeluarkan perintah dan melanjutkan pekerjaan lainnya. Pada akhir setiap siklus instruksi, CPU memeriksa interrupt. Ketika interrupt dari modul I/O terjadi, CPU menyimpan context (misalnya penghitung program dan register CPU) program yang sedang berlangsung dan memproses interrupt. Dalam hal ini, CPU membaca word data dari modul I/O dan menyimpannya didalam memori. Kemudian CPU menyimpan context program yang sedang dikerjakannya dan melanjutkan eksekusi.

Pengolahan Interrupt

Adanya interrupt memicu sejumlah kejadian, baik pada hardware prosesor maupun pada software. Pada saat perangkat I/O telah menyelesaikan sebuah operasi I/O, maka urutan kejadian hardware dibawah ini akan terjadi :
  1. Perangkat akan mengeluarkan signal interrupt ke CPU.
  2. Prosesor menyelesaikan eksekusi instruksi yang sedang dilakukan sebelum memberikan responsnya terhadap interrupt.
  3. Prosesor memeriksa interrupt, apakah ada atau tidak.
  4. Sekarang prosesor perlu mempersiapkan pengontrolan transfer ke routine interrupt. Prosesor perlu menyimpan informasi. Informasi minimum yang diperlukan adalah (a) status prosesor, yang berisi register yang dipanggil program status word (PSW), dan (b) lokasi instruksi berikutnya yang akan dieksekusi, yang terdapat pada penghitung program. Informasi-informasi ini dapat ditaruh ke dalam stack pengontrol system.
  5. Setelah itu prosesor dapat memuat penghitung program dengan lokasi entri dan program penanganan interrupt yang akan memberikan respon ke interrupt ini.
  6. Penghitung program dan PSW yang berkaitan dengan program yang di interrupsi telah disimpan didalam stack system.
  7. Setelah itu interrupt handler dapat menjalankan proses interrupt.
  8. Apabila pengolahan interrupt telah selesai, nilai-nilai register yang tersimpan diambil kembali dari stack dan selanjutnya disimpan ke register.
  9. Menyimpan kembali PSW dan nilai penghitung program dari stack.

Tidak ada komentar: