Rabu, 28 November 2012

 
untuk apa input output peripheral melakukan interupsi
Modul Input / Output ( I/O )
Peralatan input / output suatu computer sangat beragam jenisnya.
Setiap perlatan memiliki kecepatan transfer data, format data dan panjang data yang berbeda-beda.
Modul input / output berfungsi sebagai interface ( penghubung ) ke memori atau ke prosesor, penhubung sesama periferal, dan meyelaraskan data sebelum ditransfer memalui system bus.
Tidak hanya itu, modul input / output juga berfungsi sebagai control dan timing ( mengatur agar kecepatan transfer data yang berbeda-beda dapat tersinkronisasi dengan baik), komunikasi prosesor ( mengirimkan data dan perintah dari prosesor ke periferal ), komunikasi antar peripheral, data buffering ( penampung data sementara ), dan mendeteksi error pada peripheral dan melaporkannya pada prosesor.
Cara kerja modul I/O adalah sebagai berikut:
  • CPU meminta status peripheral pada modul I/O
  • Modul I/O mengecek status peripheral dan mengirimkannya dalam betuk status bit
  • Jika status ready, maka CPU mengirimkan perintahnya
  • Modul I/O menarik data dari peripheral
  • Modul I/O menyelaraskan data
  • Modul I/O mengirimkan data ke CPU lewat bus.
Teknik pengaturan Input / Output ( I/O )
  • Programed I/O
  • Interrupt Driven I/O
  • Direct Memory Access (DMA)
Programed Input / Output ( I/O )
Dalam programmed I/O, CPU memiliki control langsung terhadap proses I/O.
CPU merequest untuk melakukan operasi I/O, modul I/O metransfer perintah ke peripheral, modul I/O mengeset status bit dari peripheral, CPU mengecek status bit secara periodik dan jika belum ada perubahan maka CPU akan menunggu dan jika ada perubahan maka CPU akan bereaksi.
Dalam hal ini modul I/O tidak mengkonfirmasi status langsung kepada CPU.
Kelemahan nya adalah CPU menunggu hingga modul I/O menyelesaikan suatu operasi sehingga menjadi boros waktu.
Interrupt Driven Input / Output ( I/O )
Dalam interrupt dtiven I/O CPU tetap memiliki kontol langsung terhadap proses I/O, seperti pada programmed I/O.
CPU merequest untuk melakukan operasi I/O, modul I/O mentrasfer perintah ke peripheral, sementara itu CPU dapat melakukan kegiatan lain / melaksanakan proses berikutnya, modul I/O mengirimkan interrupt kepada CPU untuk memberitahukan status hasil operasinya, dan CPU bereaksi atas status tersebut.
Pada interrupt driven I/O memiliki kelebihan yaitu peniadaan waktu tunggu CPU.
Jadi perbedaan antara programmed I/O dengan interrupt driven I/O adalah PADA PROGRAMED I/O MODUL I/O TIDAK DAPAT MENGIRIMKAN STATUS PERIFERAL KEPADA CPU, TETAPI PADA INTERRUPT DRIVEN I/O MODUL I/O DAPAT MENGIRIMKAN STATUS PERIFERAL KEDAPA CPU, SEHINGGA MEMPERCEPAT PROSES CPU.
Direct Memory Access ( DMA )
Pada programed I/O dan interrupt driven I/O CPU melakukan capur tangan langsung untuk mengirimkan perintah ke peripheral, tetapi pada DMA memerintahkan DMA apa yang harus dilakukan ( read / write ), alamat peripheral, tempat data dalam memori, dan jumlah data yang akan ditransfer.
Stelah itu, CPU melanjutkan pekerjaan / proses nya yang lain.
DMA melaksanakan apa yang diperintahkan oleh CPU tadi, jika semua tugas telah selesai, maka DMA mengirimkan interrupt kepada CPU, pada saat itu CPu akan merespon interrupt yang diterimanya.
Vektor Interupsi
Saat MCS51 menanggapi permintaan interupsi, Program Counter diisi dengan sebuah nilai yang dinamakan sebagai vektor interupsi, yang merupakan nomor awal dari memori-program yang menampung ISR untuk melayani permintaan interupsi tersebut. Vektor interupsi itu dipakai untuk melaksanakan inststuksi LCALL yang diaktipkan secara perangkat keras.
Vektor interupsi untuk interupsi eksternal INT0 adalah $0003, untuk interupsi timer 0 adalah $000B, untuk interupsi ekternal INT1 adalah $0013, untuk interupsi timer 1 adalah $001B dan untuk interupsi port seri adalah $0023.
Jarak vektor interupsi satu dengan lainnya sebesar 8, atau hanya tersedia 8 byte untuk setiap ISR. Jika sebuah ISR memang hanya pendek saja, tidak lebih dari 8 byte, maka ISR tersebut bisa langsung ditulis pada memori-program yang disediakan untuknya. ISR yang lebih panjang dari 8 byte ditulis ditempat lain, tapi pada memori-program yang ditunjuk oleh vektor interupsi diisikan instruksi JUMP ke arah ISR bersangkutan

Tujan Peripheral Melakukan Interrupt
Peripheral Interrupt
Interupsi adalah mekanisme penghentian atau pengalihan pengolahan instruksi dalam CPU kepada routine interupsi. Hampir semua modul memori dan (I/O) memiliki mekanisme yang dapat menginterupsi kerja CPU.
Tujuan interupsi secara umum untuk menejemen pengeksekusian routine instruksi agar efektif dan efisien antar CPU dan modul – modul I/O maupun memori. Setiap komponen komputer dapat menjalankan tugasnya secara bersamaan, tetapi kendali terletak pada CPU disamping itu kecepatan eksekusi masing – masing modul berbeda sehingga dengan adanya fungsi interupsi ini dapat sebagai sinkronisasi kerja antar modul. Macam – macam kelas sinyal interupsi :
a. Program, yaitu interupsi yang dibangkitkan dengan beberapa kondisi yang terjadi pada hasil eksekusi program. Contohnya: arimatika overflow, pembagian nol, oparasi ilegal.
b. Timer, adalah interupsi yang dibangkitkan pewaktuan dalam prosesor. Sinyal ini memungkinkan sistem operasi menjalankan fungsi tertentu secara reguler.
c. I/O, sinyal interupsi yang dibangkitkan oleh modul I/O sehubungan pemberitahuan kondisi error dan penyelesaian suatu operasi.
d. Hardware failure, adalah interupsi yang dibangkitkan oleh kegagalan daya atau kesalahan paritas memori.
Dengan adanya mekanisme interupsi, prosesor dapat digunakan untuk mengeksekusi instruksi – instruksi lain. Saat suatu modul telah selesai menjalankan tugasnya dan siap menerima tugas berikutnya maka modul ini akan mengirimkan permintaan interupsi ke prosesor. Kemudian prosesor akan menghentikan eksekusi yang dijalankannya untuk menghandel routine interupsi. Setelah program interupsi selesai maka prosesor akan melanjutkan eksekusi programnya kembali. Saat sinyal interupsi diterima prosesor ada dua kemungkinan tindakan, yaitu interupsi diterima/ ditangguhkan dan interupsi ditolak. Apabila interupsi diterima/ ditangguhkan, prosesor akan melakukan hal – hal dibawah ini : 5
1. Prosesor menangguhkan eksekusi program yang dijalankan dan menyimpan konteksnya. Tindakan ini adalah menyimpan alamat instruksi berikutnya yang akan dieksekusi dan data lain yang relevan.
2. Prosesor menyetel program counter (PC) ke alamat awal routine interrupt handler.
Untuk sistem operasi yang kompleks sangat dimungkinkan adanya interupsi ganda (multiple interrupt). Misalnya suatu komputer akan menerima permintaan interupsi saat proses pencetakan dengan printer selesai, disamping itu dimungkinkan dari saluran komunikasi akan mengirimkan permintaan interupsi setiap kali data tiba. Dalam hal ini prosesor harus menangani interupsi ganda.
Dapat diambil dua buah pendekatan untuk menangani interupsi ganda ini. Pertama adalah menolak atau tidak mengizinkan interupsi lain saat suatu interupsi ditangani prosesor. Kemudian setelah prosesor selesai menangani suatu interupsi maka interupsi lain baru ditangani.
Pendekatan kedua adalah dengan mendefinisikan prioritas bagi interupsi dan interrupt handler mengizinkan interupsi berprioritas lebih tinggi ditangani terlebih dahulu. Sebagai contoh untuk mendekatan bersarang, misalnya suatu sistem memiliki tiga perangkat I/O: printer, disk, dan saluran komunikasi, masing – masing prioritasnya 2, 4 dan 5. Pada awal sistem melakukan pencetakan dengan printer, saat itu terdapat pengiriman data pada saluran komunikasi sehingga modul komunikasi meminta interupsi. Proses selanjutnya adalah pengalihan eksekusi interupsi mudul komunikasi, sedangkan interupsi printer ditangguhkan. Saat pengeksekusian modul komunikasi terjadi interupsi disk, namun karena prioritasnya lebih rendah maka interupsi disk ditangguhkan. Setelah interupsi modul komunikasi selesai akan dilanjutkan interupsi yang memiliki prioritas lebih tinggi, yaitu disk. Bila interupsi disk selesai dilanjutkan eksekusi interupsi printer. Selanjutnya dilanjutkan eksekusi program utama.
Contoh Pengontrol Interrupt pada Chip Intel 8259A
Intel mengeluarkan chips 8259A yang dikonfigurasikan sebagai interrupt arbiter pada mikroprosesor Intel 8086. Intel 8259A melakukan manajemen interupsi modul – modul I/O yang tersambung padanya. Chips ini dapat diprogram untuk menentukan prioritas modul I/O yang lebih dulu ditangani CPU apabila ada permintaan interupsi yang bersamaan. Gambar 1.2. menggambarkan pemakaian pengontrol interupsi 8259A. Berikut mode – mode interupsi yang mungkin terjadi :
• Fully Nested: permintaan interupsi dengan prioritas mulai 0 (IR0) hingga 7(IR7).
• Rotating: bila sebuah modul telah dilayani interupsinya akan menempati prioritas terendah.
• Special Mask: prioritas diprogram untuk modul I/O tertentu secara spesial.
Bagian kanan dari blok diagram Intel 8255A adalah 24 saluran antarmuka luar, terdiri atas 8 bit port A, 8 bit port B, 4 bit port CA dan 4 bit port CB. Saluran tersebut dapat diprogram dari mikroprosesor 8086 dengan menggunakan register kontrol untuk menentukan bermacam – macam mode operasi dan konfigurasinya. Bagian kiri blok diagram merupakan interface internal dengan mikroprosesor 8086. Saluran ini terdiri atas 8 bus data dua arah (D0 – D7), bus alamat, dan bus kontrol yang terdiri atas saluran CHIP SELECT, READ, WRITE, dan RESET. Pengaturan mode operasi pada register kontrol dilakukan oleh mikroprosesor., Pada Mode 0, ketiga port berfungsi sebagai tiga port I/O 8 bit. Pada mode lain dapat port A dan port B sebagai port I/O 8 bit, sedangkan port C sebagai pengontrol saluran port A dan B. PPI Intel 8255A dapat diprogram untuk mengontrol berbagai peripheral sederhana.