Sistem komputer terdiri dari perangkat keras (hardware) dan perangkat lunak (software). Perangkat keras dan perangkat lunak harus bekerja bersama-sama membentuk suatu sistem, yaitu sistem komputer.
Perangkat I/O dapat dibagi secara umum menjadi dua kategori, yaitu :
1.) Perangkat blok (block devices).
2.) Perangkat karakter (character devices).
Perangkat blok menyimpan informasi dalam sebuah blok yang ukurannya tertentu dan memiliki alamat masing-masing. Umumnya blok berukuran antara 512 bytes - 32768 bytes. Keuntungan dari perangkat blok ini ialah mampu membaca atau menulis setiap blok secara independen. Disk merupakan contoh perangkat blok yang paling banyak digunakan.
Perangkat karakter mengirim atau menerima sebaris karakter, tanpa menghiraukan struktur blok. Tipe ini tidak memiliki alamat dan tidak memiliki kemampuan mencari (seek). Printer dan antarmuka jaringan merupakan contoh perangkat jenis ini. Pembagian ini tidaklah sempurna. Beberapa perangkat tidak memenuhi kriteria tersebut. Contohnya : clock yang tidak memiliki alamat dan juga tidak mengirim dan menerima barisan karakter. Yang dilakukan hanya menimbulkan interupsi dalam jangka waktu tertentu.
Input/Output Terprogram
Pada I/O terprogram, data saling dipertukarkan antara CPU dan modul I/O. CPU mengeksekusi program yang memberikan operasi I/O kepada CPU secara langsung, seperti pemindahan data, pengiriman perintah baca maupun tulis dan monitoring perangkat. Kelemahan teknik ini adalah CPU akan menunggu sampai operasi I//O selesai dilakukan modul I/O sehingga akan membuang waktu, apalagi CPU lebih cepat proses operasinya.
Dalam teknik I/O terprogram, terdapat dua macam implementasi perintah I/O yang terdapat dalam instruksi I/O, yaitu :
1.) Memory-mapped I/O.
2.) Isolated I/O.
Dalam memory-mapped I/O, terdapat ruang tunggal untuk lokasi memori dan perangkat I/O. CPU menggunakan register status dan register data modul I/O sebagai lokasi memori dan menggunakan instruksi mesin yang sama untuk mengakses baik memori maupun perangkat I/O. Konsekuensinya adalah diperlukan saluran tunggal untuk pembacaan dan saluran tunggal untuk penulisan. Keuntungan memory-mapped I/O adalah efisien dalam pemrograman, namun memakan banyak ruang memori alamat.
Dalam teknik isolated I/O, dilakukan pemisahan ruang pengalamatan bagi memori dan ruang pengalamatan bagi I/O. Dengan teknik ini diperlukan bus yang dilengkapi dengan saluran pembacaan dan penulisan memori ditambah saluran perintah output. Keuntungan isolated I/O adalah sedikitnya instruksi I/O.
Interupt Driven Input/Output
Masalah yang dijumpai pada I/O terprogram adalah bahwa CPU harus menunggu modul I/O yang diinginkan agar siap baik untuk menerima maupun mengirim data dalam waktu yang relatif lama. Pada saat menunggu, CPU harus berulang-ulang menanyakan status modul I/O. Akibatnya tingkat kerja keseluruhan sistem mengalami penurunan sistem. Alternatifnya adalah CPU mengeluarkan perintah I/O ke modul dan kemudian mengerjakan pekerjaan yang lain. Kemudian modul I/O akan menginterupsi CPU untuk meminta layanan ketika modul telah siap untuk saling bertukar data dengan CPU.
Direct Memory Access (DMA)
Teknik yang dijelaskan sebelumnya yaitu I/O terprogram dan interrupt driven I/O memiliki kelemahan, yaitu proses yang terjadi pada modul I/O masih melibatkan CPU secara langsung. Hal ini berimplikasi pada :
a.) Kelajuan transfer I/O yang tergantung pada kecepatan operasi CPU.
b.) Kerja CPU terganggu karena adanya interupsi secara langsung.
Bertolak dari kelemahan diatas, apalagi untuk menangani transfer data bervolume besar, maka dikembangkan teknik yang lebih baik, dikenal dengan Direct Memory Access (DMA). Prinsip kerja DMA adalah CPU akan mendelegasikan kerja I/O kepada DMA, CPU hanya akan terlibat pada awal proses untuk memberikan instruksi lengkap pada DMA dan akhir proses saja. Dengan demikian CPU dapat menjalankan proses lainnya tanpa banyak terganggu dengan interupsi.
Dalam melaksanakan transfer data secara mandiri, DMA memerlukan pengambil alihan kontrol bus dari CPU. Untuk itu DMA akan menggunakan bus bila CPU tidak menggunakannya atau DMA memaksa CPU untuk menghentikan sementara penggunaan bus. Teknik terakhir lebih umum digunakan, sering disebut cycle-stealing, karena modul DMA mengambil alih siklus bus. Penghentian sementara penggunaan bus bukanlah bentuk interupsi, melainkan hanyalah penghentian proses sesaat yang berimplikasi hanya pada kelambatan eksekusi CPU saja.
Saluran Input/Output
Saluran I/O mempunyai dua kegunaan, yaitu :
a.) Saluran I/O dapat melakukan pendeteksian dan pembetulan kesalahan dan beroperasi dalam basis cycle stealing.
b.) Saluran I/O berkomunikasi dengan CPU sebagai suatu fasilitas DMA dan berkomunikasi dengan piranti I/O seolah-olah sebagai CPU.
Interupt Driven Input/Output
Masalah yang dijumpai pada I/O terprogram adalah bahwa CPU harus menunggu modul I/O yang diinginkan agar siap baik untuk menerima maupun mengirim data dalam waktu yang relatif lama. Pada saat menunggu, CPU harus berulang-ulang menanyakan status modul I/O. Akibatnya tingkat kerja keseluruhan sistem mengalami penurunan sistem. Alternatifnya adalah CPU mengeluarkan perintah I/O ke modul dan kemudian mengerjakan pekerjaan yang lain. Kemudian modul I/O akan menginterupsi CPU untuk meminta layanan ketika modul telah siap untuk saling bertukar data dengan CPU.
Direct Memory Access (DMA)
Teknik yang dijelaskan sebelumnya yaitu I/O terprogram dan interrupt driven I/O memiliki kelemahan, yaitu proses yang terjadi pada modul I/O masih melibatkan CPU secara langsung. Hal ini berimplikasi pada :
a.) Kelajuan transfer I/O yang tergantung pada kecepatan operasi CPU.
b.) Kerja CPU terganggu karena adanya interupsi secara langsung.
Bertolak dari kelemahan diatas, apalagi untuk menangani transfer data bervolume besar, maka dikembangkan teknik yang lebih baik, dikenal dengan Direct Memory Access (DMA). Prinsip kerja DMA adalah CPU akan mendelegasikan kerja I/O kepada DMA, CPU hanya akan terlibat pada awal proses untuk memberikan instruksi lengkap pada DMA dan akhir proses saja. Dengan demikian CPU dapat menjalankan proses lainnya tanpa banyak terganggu dengan interupsi.
Dalam melaksanakan transfer data secara mandiri, DMA memerlukan pengambil alihan kontrol bus dari CPU. Untuk itu DMA akan menggunakan bus bila CPU tidak menggunakannya atau DMA memaksa CPU untuk menghentikan sementara penggunaan bus. Teknik terakhir lebih umum digunakan, sering disebut cycle-stealing, karena modul DMA mengambil alih siklus bus. Penghentian sementara penggunaan bus bukanlah bentuk interupsi, melainkan hanyalah penghentian proses sesaat yang berimplikasi hanya pada kelambatan eksekusi CPU saja.
Saluran Input/Output
Saluran I/O mempunyai dua kegunaan, yaitu :
a.) Saluran I/O dapat melakukan pendeteksian dan pembetulan kesalahan dan beroperasi dalam basis cycle stealing.
b.) Saluran I/O berkomunikasi dengan CPU sebagai suatu fasilitas DMA dan berkomunikasi dengan piranti I/O seolah-olah sebagai CPU.
Karena piranti I/O mempunyai kecepatan transfer yang berbeda-beda, maka saluran dibagi menjadi 3 pelayanan, yaitu :
- Saluran Multiplexer : Digunakan untuk menghubungkan piranti yang berkecepatan rendah dan sedang serta mengoperasikannya secara bersamaan dengan multiplexing.
- Saluran Selektor : Digunakan untuk menghubungkan piranti I/O yang berkecepatan tinggi tanpa multiplexing. Contohnya : pita magnetis, disk.
- Saluran Multiplexer Blok : Merupakan kombinasi dari dua pelayanan diatas.
Referensi :