INPUT DAN OUTPUT
Sistem
komputer memiliki tiga komponen utama, yaitu : CPU, memori (primer dan
sekunder), dan peralatan masukan/keluaran (I/O devices) seperti printer,
monitor, keyboard,mouse, dan modem.
Modul I/O merupakan peralatan antarmuka (interface) bagi sistem bus atau
switch sentral dan mengontrol satu atau lebih perangkat peripheral. Modul I/O
tidak hanya sekedar modul penghubung, tetapi sebuah piranti yang berisi logika
dalam melakukan fungsi komunikasi antara peripheral dan bus komputer.
Ada
beberapa alasan kenapa piranti – piranti tidak langsung dihubungkan dengan bus
sistem komputer, yaitu :
Bervariasinya metode operasi piranti
peripheral, sehingga tidak praktis apabila system komputer herus menangani
berbagai macam sisem operasi piranti peripheral tersebut.
Kecepatan transfer data piranti
peripheral umumnya lebih lambat dari pada laju transfer data pada CPU maupun
memori.
Format data dan panjang data pada
piranti peripheral seringkali berbeda dengan CPU, sehingga perlu modul untuk
menselaraskannya.
Dari beberapa alasan diatas,
modul I/O memiliki dua buah fungsi utama, yaitu :
Sebagai piranti antarmuka ke CPU
dan memori melalui bus sistem.
Sebagai piranti antarmuka dengan
peralatan peripheral lainnya dengan menggunakan link data tertentu.
A. Sistem
Masukan dan Keluaran
Bagaimana
modul I/O dapat menjalankan tugasnya, yaitu menjembatani CPU dan memori dengan
dunia luar merupakan hal yang terpenting untuk kita ketahui. Inti mempelajari
sistem I/O suatu komputer adalah mengetahui fungsi dan struktur modul I/O.
Perhatikan gambar 6.1 yang menyajikan model generik modul I/O.
Gambar 6.1 Model generik dari suatu
modul I/O
1. Fungsi
Modul I/O
Modul
I/O adalah suatu komponen dalam sistem komputer yang bertanggung jawab atas
pengontrolan sebuah perangkat luar atau lebih dan bertanggung jawab pula dalam
pertukaran data antara perangkat luar tersebut dengan memori utama ataupun
dengan register-register CPU. Dalam mewujudkan hal ini, diperlukan antarmuka
internal dengan komputer (CPU dan memori utama) dan antarmuka dengan perangkat
eksternalnya untuk menjalankan fungsi-fungsi pengontrolan.
Fungsi
dalam menjalankan tugas bagi modul I/O dapat dibagi menjadi beberapa katagori,
yaitu:
Kontrol dan pewaktuan.
Komunikasi CPU.
Komunikasi perangkat eksternal.
Pem-buffer-an data.
Deteksi kesalahan.
Fungsi
kontrol dan pewaktuan (control & timing) merupakan hal yang penting
untuk mensinkronkan kerja masing-masing komponen penyusun komputer. Dalam
sekali waktu CPU berkomunikasi dengan satu atau lebih perangkat dengan pola
tidak menentu dan kecepatan transfer komunikasi data yang beragam, baik dengan
perangkat internal seperti register-register, memori utama, memori sekunder,
perangkat peripheral. Proses tersebut bisa berjalan apabila ada fungsi kontrol
dan pewaktuan yang mengatur sistem secara keseluruhan. Contoh control
pemindahan data dari peripheral ke CPU melalui sebuah modul I/O dapat meliputi
langkah-langkah berikut ini :
Permintaan dan pemeriksaan status
perangkat dari CPU ke modul I/O.
Modul I/O memberi jawaban atas
permintaan CPU.
Apabila perangkat eksternal telah
siap untuk transfer data, maka CPU akan mengirimkan perintah ke modul I/O.
Modul I/O akan menerima paket
data dengan panjang tertentu dari peripheral.
Selanjutnya data dikirim ke CPU
setelah diadakan sinkronisasi panjang data dan kecepatan transfer oleh modul
I/O sehingga paket-paket data dapat diterima CPU dengan baik.
Transfer
data tidak akan lepas dari penggunaan sistem bus, maka interaksi CPU dan modul
I/O akan melibatkan kontrol dan pewaktuan sebuah arbitrasi bus atau lebih.
Adapun fungsi komunikasi antara CPU dan modul I/O meliputi proses-proses
berikut :
Command Decoding, yaitu
modul I/O menerima perintah-perintah dari CPU yang dikirimkan sebagai sinyal
bagi bus kontrol. Misalnya, sebuah modul I/O untuk disk dapat menerima
perintah: Read sector, Scan record ID, Format disk.
Data, pertukaran
data antara CPU dan modul I/O melalui bus data.
Status Reporting, yaitu
pelaporan kondisi status modul I/O maupun perangkat peripheral, umumnya berupa
status kondisi Busy atau Ready. Juga status bermacam-macam
kondisi kesalahan (error).
Address Recognition, bahwa
peralatan atau komponen penyusun komputer dapat dihubungi atau dipanggil maka
harus memiliki alamat yang unik, begitu pula pada perangkat peripheral, sehingga
setiap modul I/O harus mengetahui alamat peripheral yang dikontrolnya.
Pada
sisi modul I/O ke perangkat peripheral juga terdapat komunikasi yang meliputi
komunikasi data, kontrol maupun status. Perhatikan gambar 6.2 berikut.
Gambar 6.2 Skema suatu perangkat
peripheral
Fungsi
selanjutnya adalah buffering. Tujuan utama buffering adalah
mendapatkan penyesuaian data sehubungan perbedaan laju transfer data dari
perangkat peripheral dengan kecepatan pengolahan pada CPU. Umumnya laju
transfer data dari perangkat peripheral lebih lambat dari kecepatan CPU maupun
media penyimpan.
Fungsi
terakhir adalah deteksi kesalahan. Apabila pada perangkat peripheral terdapat
masalah sehingga proses tidak dapat dijalankan, maka modul I/O akan melaporkan
kesalahan tersebut. Misal informasi kesalahan pada peripheral printer seperti:
kertas tergulung, pinta habis, kertas habis, dan lain-lain. Teknik yang umum
untuk deteksi kesalahan adalah penggunaan bit paritas.
2. Struktur
Modul I/O
Terdapat
berbagai macam modul I/O seiring perkembangan komputer itu sendiri, contoh yang
sederhana dan fleksibel adalah Intel 8255A yang sering disebut PPI (Programmable
Peripheral Interface). Bagaimanapun kompleksitas suatu modul I/O, terdapat
kemiripan struktur, seperti terlihat pada gambar 6.3.
Gambar 6.3 Blok diagram struktur
modul I/O
Antarmuka modul I/O ke CPU
melalui bus sistem komputer terdapat tiga saluran, yaitu saluran data, saluran
alamat dan saluran kontrol. Bagian terpenting adalah blok logika I/O yang
berhubungan dengan semua peralatan antarmuka peripheral, terdapat fungsi
pengaturan dan switching pada blok ini.
B. Teknik
Masukan/Keluaran
Terdapat
tiga buah teknik dalam operasi I/O, yaitu: I/O terprogram, interrupt-driven I/O,
dan DMA (Direct Memory Access). Ketiganya memiliki keunggulan maupun
kelemahan, yang penggunaannya disesuaikan sesuai unjuk kerja
masing-masing teknik.
1.
I/O
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 ini, modul I/O tidak dapat melakukan
interupsi kepada CPU terhadap proses-proses yang diinterupsikan padanya.
Seluruh proses merupakan tanggung jawab CPU sampai operasi lengkap
dilaksanakan. Untuk melaksanakan perintah – perintah I/O, CPU akan mengeluarkan
sebuah alamat bagi modul I/O dan perangkat peripheralnya sehingga
terspesifikasi secara khusus dan sebuah perintah I/O yang akan dilakukan.
Terdapat empat klasifikasi perintah I/O, yaitu:
1. Perintah
control.
Perintah
ini digunkan untuk mengaktivasi perangkat peripheral dan memberitahukan tugas
yang diperintahkan padanya.
2. Perintah
test.
Perintah
ini digunakan CPU untuk menguji berbagai kondisi status modul I/O dan
peripheralnya. CPU perlu mengetahui perangkat peripheralnya dalam keadaan aktif
dan siap digunakan, juga untuk mengetahui operasi – operasi I/O yang dijalankan
serta mendeteksi kesalahannya.
3. Perintah
read.
Perintah
pada modul I/O untuk mengambil suatu paket data kemudian menaruh dalam buffer
internal. Proses selanjutnya paket data dikirim melalui bus data setelah
terjadi sinkronisasi data maupun kecepatan transfernya.
4. Perintah
write.
Perintah
ini kebalikan dari read. CPU memerintahkan modul I/O untuk mengambil
data dari bus data untuk diberikan pada perangkat peripheral tujuan data
tersebut.
Dalam
teknik I/O terprogram, terdapat dua macam inplementasi perintah I/O yang
tertuang dalam instruksi I/O, yaitu: memory-mapped I/O dan isolated
I/O.
Dalam
memory-mapped I/O, terdapat ruang tunggal untuk lokasi memori dan
perangkat I/O. CPU memperlakukan 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. Konskuensinya 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.
2. Interrupt
– Driven I/O
Teknik
interrupt – driven I/O memungkinkan proses tidak membuang – buang waktu.
Prosesnya adalah CPU mengeluarkan perintah I/O pada modul I/O, bersamaan
perintah I/O dijalankan modul I/O maka CPU akan melakukan eksekusi
perintah-perintah lainnya. Apabila modul I/O telah selesai menjalankan
instruksi yang diberikan padanya akan melakukan interupsi pada CPU bahwa
tugasnya telah selesai.
Dalam
teknik ini kendali perintah masih menjadi tanggung jawab CPU, baik pengambilan
perintah dari memori maupun pelaksanaan isi perintah tersebut. Terdapat
selangkah kemajuan dari teknik sebelumnya, yaitu CPU melakukan multitasking beberapa
perintah sekaligus sehingga tidak ada waktu tunggu bagi CPU.
Cara
kerja teknik interupsi di sisi modul I/O adalah modul I/O menerima perintah,
missal read. Kemudian modul I/O melaksanakan perintah pembacaan dari
peripheral dan meletakkan paket data ke register data modul I/O, selanjutnya
modul mengeluarkan sinyal interupsi ke CPU melalui saluran kontrol. Kemudian
modul menunggu datanya diminta CPU. Saat permintaan terjadi, modul meletakkan
data pada bus data dan modul siap menerima perintah selanjutnya. Pengolahan interupsi saat perangkat I/O
telah menyelesaikan sebuah operasi I/O adalah sebagai berikut :
1. Perangkat
I/O akan mengirimkan sinyal interupsi ke CPU.
2. CPU
menyelesaikan operasi yang sedang dijalankannya kemudian merespon interupsi.
3. CPU
memeriksa interupsi tersebut, kalau valid maka CPU akan mengirimkan sinyal acknowledgment
ke perangkat I/O untuk menghentikan interupsinya.
4. CPU
mempersiapkan pengontrolan transfer ke routine interupsi. Hal yang dilakukan
adalah menyimpan informasi yang diperlukan untuk melanjutkan operasi yang tadi
dijalankan sebelum adanya interupsi. Informasi yang diperlukan berupa:
§
Status
prosesor, berisi register yang dipanggil PSW (program status word).
§
Lokasi
intruksi berikutnya yang akan dieksekusi.
Informasi tersebut kemudian
disimpan dalam stack pengontrol sistem.
5. Kemudian
CPU akan menyimpan PC (program counter) eksekusi sebelum interupsi ke
stack pengontrol bersama informasi PSW. Selanjutnya mempersiapkan PC untuk
penanganan interupsi.
6. Selanjutnya
CPU memproses interupsi sempai selesai.
7. Apabila
pengolahan interupsi selesai, CPU akan memanggil kembali informasi yang telah
disimpan pada stack pengontrol untuk meneruskan operasi sebelum interupsi.
Terdapat
bermacam teknik yang digunakan CPU dalam menangani program interupsi ini,
diantaranya :
Ø
Multiple
Interrupt Lines.
Ø
Software
poll.
Ø
Daisy
Chain.
Ø
Arbitrasi
bus.
Teknik
yang paling sederhana adalah menggunakan saluran interupsi berjumlah banyak (Multiple
Interrupt Lines) antara CPU dan modul-modul I/O. Namun tidak praktis untuk
menggunakan sejumlah saluran bus atau pin CPU ke seluruh saluran interupsi
modul-modul I/O.
Alternatif
lainnya adalah menggunakan software poll. Prosesnya, apabila CPU
mengetahui adanya sebuah interupsi, maka CPU akan menuju ke routine layanan
interupsi yang tugasnya melakukan poll seluruh modul I/O untuk menentukan modul
yang melakukan interupsi. Kerugian software poll adalah memerlukan waktu
yang lama karena harus mengidentifikasi seluruh modul untuk mengetahui modul
I/O yang melakukan interupsi.
Teknik
yang lebih efisien adalah daisy chain, yang menggunakan hardware poll.
Seluruh modul I/O tersambung dalam saluran interupsi CPU secara melingkar (chain).
Apabila ada permintaan interupsi, maka CPU akan menjalankan sinyal acknowledge
yang berjalan pada saluran interupsi sampai menjumpai modul I/O yang
mengirimkan interupsi.
Teknik
berikutnya adalah arbitrasi bus. Dalam metode ini, pertama – tama modul
I/O memperoleh kontrol bus sebelum modul ini menggunakan saluran permintaan
interupsi. Dengan demikian hanya akan terdapat sebuah modul I/O yang dapat
melakukan interupsi.
Pengontrol Interrupt 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 6.4 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.
Programmable Peripheral Interface
Intel 8255A
Contoh modul I/O yang menggunakan
I/O terprogram dan interrupt driven I/O adalah Intel 8255A Programmable
Peripheral Interface (PPI). Intel 8255A dirancang untuk keperluan mikroprosesor
8086. Gambar 6.5 menunjukkan blok diagram Intel 8255A dan pin layout-nya.
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 deprogram 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.
Gambar 6.6 memperlihatkan contoh penggunaan 8255A untuk modul I/O Keyboard dan
display.
Gambar 6.6 Interface kayboard dan
display dengan Intel 8255A
3. 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 :
Kelajuan transfer I/O yang
tergantung pada kecepatan operasi CPU.
Kerja CPU terganggu karena adanya
interupsi secara langsung.
Bertolak
dari kelemahan di atas, apalagi untuk menangani transfer data bervolume besar
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. Blok diagram modul DMA terlihat pada gambar 6.7
berikut :
Gambar 6.7 Blok diagram DMA
Gambar 6.8 Konfigurasi modul DMA
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. Terdapat tiga buah
konfigurasi modul DMA seperti yang terlihat pada gambar 6.8