Anda di halaman 1dari 16

TEKNIK I/O

Polled I/O (Programmed IO)


Pada polled IO terlebih dahulu diperlukan pemeriksan status divais IO. Aliran pada gambar disamping menggambarkan aksi yang berkaitan.

Setelah sistem diinisialisasi, program IO yang berhubungan, yaitu IO driver, membaca status divais IO. Kemudian menguji bit status untuk menentukan kondisi operasional divais. Apabila divais tidak siap, CPU dapat melompat ke tugas (task) yang lain. Setelah beberapa interval waktu, mengulangi proses seperti diraikan di atas. Interval waktu ini tergantung pada kecepatan divais.

Pada langkah di atas apabila tidak ada task yang dikerjakan, CPU segera mengulang kembali untuk membaca dan memeriksa status divais. Akhirnya, apabila divais siap, program IO keluar wait loop. Sekarang program melakukan transfer data, atau disebut melayani divais.

Interrupt-Driven I/O
Permasalahan yang ditimbulkan oleh polled (programmed) IO adalah waktu CPU terbuang untuk pengujian status. Prinsip mekanisme transfer data pada interrupt-driven IO sama dengan programmed IO, yaitu, CPU tetap mempertukarkan data dengan divais IO melalui beberapa register CPU. Perbedaan yang prinsip adalah siapa yang bertanggung jawab untuk berinisiatif untuk melakukan transfer data.

Pada programmed IO tanggung jawab ada pada CPU. Dengan kata lain , program IO harus sering melakukan pemeriksaan (scan) status divais IO untuk menentukan apakah divais siap melakukan transfer data. Pada interrup-driven IO, data transfer dimulai (atas inisiatif) divais IO , yang menggunakan mekanisme interupsi untuk memberitahukan pada CPU tentang kesiapannya. Mekanisme ini menghilangkan beban scanning status.

Contoh: Suatu sistem dikendalikan oleh operator melalui perintah yang dimasukkan melalui keyboard. CPU melakukan scan keyboard setiap 100 ms. Hitung perkiraan jumlah pemeriksaan status keyboard pada periode waktu delapan jam. Banyaknya perintah rata-rata yang dimasukkan pada interval waktu delapan jam adalah 60. Perintah yang umum melibatkan sekitar 48 karakter. Berapakah pengurangan banyaknya kunjungan CPU ke keyboard jika menggunakan interruptdriven IO?

Solusi: CPU melakukan scan keyboard 10 kali per detik. Selam periode delapan jam, jumlah scan adalah 10 x 60 x 60 x 8 = 288000. Pada interrupt-driven IO, keyboard menginterupsi CPU ketika kunci dilepas. CPU memulai pelayanan keyboard hanya setelah terjadi interupsi. Jumlah total karakter yang ditekan pada periode delapan jam hanya 60 x 48 = 2880. Dengan demikian, banyaknya kunjungan CPU ke keyboard berkurang menjadi : (288000-2880) / 288000 = 0.99, yaitu 99 persen!
8

Mekanisme interupsi tidak hanya penting untuk IO, tatapi juga untuk yang lain. Perhatikan gambar sumber interupsi pada CPU di bawah:

Interupsi yang disebabkan oleh sumber-sumber eksternal (sebelah kanan) dapat maskable maupun nonmaskable. 9

Maskable adalah interupsi yang disebabkan oleh divais IO. Disebut maskable karena interupsi ini dapat dicegah melalui register status CPU. Nonmaskable interrupt, tidak dapat dicegah (disable), karena selalu memiliki prioritas yang lebih tinggi dibanding maskable. Fungsi utamanya adalah untuk memberi tahu CPU apabila ada event-event yang berbahaya, seperti adanya kerusakan catu daya atau error pada memori.

10

Pemrosesan interupsi
Tanpa memperhatikan tipenya, apabila menerima interupsi CPU akan: Menangguhkan eksekusi program yang sedang berlangsung Menyimpan statusnya Melompat ke interrup service routine (ISR). Sebelum masuk ke ISR, CPU harus menyimpan:
Program couter (PC) Register status Informasi lain yang berkenaan dengan program yang diinterupsi

Kembali untuk melanjutkan eksekusi program yang diinterupsi

11

Gambar disamping menunjukkan urutan event yang dilakukan oleh CPU apabila menerima interupsi.

12

Direct Memory Acces (DMA)


Walaupun menghemat waktu, interupt-driven IO tidak selalu mencukupi. Permasalahan ini timbul ketika berhadapan dengan divais IO yang berkecepatan tinggi. Sebagai contoh, CPU tidak dapat mengikuti kecepatan laju transfer data hardisk dengan kecepatan 1MB/s. Teknik IO yang tepat untuk menyelesaikan situasi ini adalah direct memory access I/O (DMA I/O).

13

DMA I/O

14

Kalau kita memperhatikan antara programmed IO dengan interrupt driven, keduanya terdapat kesamaan, yaitu pada aliran informasinya. Perbedaannya, kalau pada interrupt-driven IO menggunakan jalur interupsi untuk meminta pelayanan CPU. Pada DMA IO data mengalir langsung ke/dari memori. CPU tetap mengelola seluruh kendali perintah divais IO dan antarmukanya.
15

Transfer data tidak lagi berbasis pada byte demi byte. Informasi status menunjukkan kesiapan divais IO untuk mentransfer blok yang lain, tidak lagi byte (atau word). Antarmuka DMA juga menghubungkan menghubungkan jalur interupsi CPU. Jalur interupsi ini digunakan untuk memberitahu pada CPU apabila transfer data selesai ataupun kesiapan yang lain.
16

Anda mungkin juga menyukai