INPUT/OUTPUT
Di samping CPU dan sejumlah modul memori, elemen penting ketiga sistem
komputer adalah sejumlah modul I/O. Modul tersebut merupakan interface bagi
bus sistem atau switch sentral dan mengontrol satu atau lebih perangkat
peripheral. Modul I/O bukan hanya merupakan konektor mekanis sederhana yang
menghubungkan suatu perangkat dengan bus sistem. Akan tetapi modul I/O berisi
sesuatu yang ”cerdas” yaitu berisi logik unutk melakukan fungsi komunikasi
antara peripheral dengan bus.
Mungkin pembaca ingin mengetahui alasan tidak dihubungkannya
peripheral denagn bus sistem secara langsung. Alasannya adalah:
Terdapat beraneka ragam peripheral yang memiliki bermacam-macam metode
operasi. Maka akan tidak sangat praktis untuk menghubungkan logic tertentu
kedalam CPU dengan maksud untuk mengontrol sejumlah perangkat.
Laju transfer data peripheral sering kali jauh lebih lambat dibandingkan
dengan laju transfer data memori atau CPU. Jadi, tidaklah praktis menggunakn
bus sistem berkecepatan tinggi untuk melakukan komunikasi langsung dengan
peripheral.
Peripheral sering kali menggunakan format data dan panjang word yang
berlainan dibandingkan dengan computer yang disambungkan dengannya.
Jadi diperlukan modul I/O. Modul ini memiliki dua fungsi utama (gambar 7.1) :
Sebagai interface ke CPU dan memori via bus sistem atau switch central.
Sebagai interface ke sebuah perangkat peripheral atau lebih dengan
menggunakan link data tertentu.
Kita mengawali bab ini dengan sebuah bahasan singkat tentang perangkat
eksternal, yang dilanjutkan dengan tinjauan singkat tentang struktur dan fungsi
modul I/O ssetelah itu, kita akan meninjau bermacam-macam cara dimana fungsi
I/O dapat dilakukan dengan cara bekerja sama dengan CPU dan memori interface
176
177
internal. Terakhir akan dibahas interface I/O eksternal antara module I/O dengan
dunia luar.
Keyboard/Monitor
Alat interaksi komputer/pengguna yang umum digunakan adalah
keyboard/monitor. Penggunamemberikan input melalui keyboard. Kemudian akan
dikirimkan ke komputer dan dapat juga di tampilkan pada monitor. Selain itu,
monitor dapat menampilkan data yang diberikan oleh komputer.
Unit dasar pertukaran datanya adalah karakter. Setiap karakter
berkaitan dengan suatu kode, yang umumnya mempunyai panjang 7 atau 8 bit.
Kode yang paling umum digumakan adalah kode 7-bit yang dikenal sebagai
ASCII (American Standard Code for Information Interchange) di Amerika Serikat
dan CCITT Alphabet Number 5 secara internasional. Setiap karakter dalam kode
ini diwakili oleh kode biner 7 bit yang unik, sehingga akan terdapat 128 karakter
yang berbeda. Tabel 6.1 memberikan daftar seluruh nilai kode tersebut. Pada tabel
tersebut, bit-bit karakter diberi label dari b7, yang merupakan bit y6ang paling
berarti, hingga b1, yaitu bit yang kurang berarti. Karater-karakter yang dapat di
cetak dan karakter kontrol. Karakter yanng dapat di cetak merupakan karakter-
karater alfabetis, numerik, dan karakter khusus yang dapat dicetak pada kertas
atau dapat ditampilkan di layar. Misalnya, representasi bit karakter “K” adalah
1001011. Beberapa karakter kontrol berkaitan dengan pengontrolan pencetakan
atau penampilan karakter –karakter sebagai contoh misalnya carriage return.
Sedangkan karakter-karakter kontrol lainnya berkaitan dengan prosedur
komunikasi.
Bagi input keyboard, ketiak sebuah tombol ditekan oleh pengguna, maka
hal ini akan menghasilkan signal listrik yang diinterpretasikan oleh transducer
179
pada keyboard dan diterjemahkan ke dalam pola bit kode ASCII teetentu. Pola bit
ini kemudian di tansmisikan ke modul I/O pada komputer. Di dalam komputer,
teks akan disimpan dalam kode ASCII yang sama. Pada output, karakter-karakter
kode ASCII akan ditransmisikan dari modul I/O ke perangkat eksternal.
Transducer pada perangakat eksternal. Transducer pada perangkat akan
menginterpretasikan kode ini dan mengirimkan signal elektonik yang diperlukan
ke perangkat output untuk menampilkan karakter tersebut atau untuk membentuk
fungsi kontrol yang diminta.
Karakter ASCCI hamper selalu disortir dan ditransmiskan dengan
menggunakn 8 bit perkarakter (sebuah blok 8 bit dikenal sebagai octet atau byte).
Bit kedelpannya merupakan parity bit yang digunakan untuk deteksi error. Parity
bit berada dalam posisi bit yang paling berarti dan karena itu diberi label b8.
Dalam periode waktu tertentu, CPU dapat berkomunikasi dengan satu buah
atau lebih perangkat dengan pola yang tidak menentu, tegantung pada kebutuhan
180
program I/O. Sumber daya internal, sepeti memori utama dan sistem bus, harus
dipakai bersama-sama oleh sejumlah aktivitas termasuk diantaranya I/O data.
Dengan demikian, untuk mengkoordinasikan arus lalu lintas antara sumber daya
internal dan perngakat eksternal, fungsi I/O meliputi langkah-langkah berikut ini :
1. CPU meminta modul I/O untuk memeriksa status perangkat yang terhubung.
2. Modul I/O memberikan jawabannya tentang status perangkat.
3. Bila perangkat sedang beroperasi dan berada dalam keaadaan siap untuk
mengirimkan, maka CPU meminta pemindahan data, dengan menggunakan
perintah tertentu ke modul I/O.
4. Modul I/O akan memperoleh unit data (misalnya, 8 atau 16 bit) dari perangkat
eksternal.
5. Data akan dipindahkan dari modul I/O ke CPU.
Apabila sistem menggunakan bus, maka setiap interaksi antara CPU dengan
modul I/O akan melibatkan sebuah atau lebih arbitrasi bus.
Skenario yang telah di sederhanakan seperti, tersebut diatas menjelaskan juga
bahwa modul I/O harus memiliki kemampuan untuk melaksanakan komunikasi
dengan CPU dan perangkat eksternal. Komunikasi CPU meliputi :
status. Signal status yang umum adalah BUSY dan READY. Terdapat pula
signal-signal status untuk melaporkan bermacam-macam kondisi error.
Address Recognition : Seperti halnya word memori memiliki alamat,
demikian pula dengan perangkat I/O. Dengan demikian, modul I/O harus
mengetahui address unik seluruh peripheral yang dikontrolnya.
Modul I/O sangat berbeda dalam hal kompleksitas dan jumlah perangkat
eksternal yang dikontrolnya. Disini kita hanya akan membahas masalah umumnya
saja. (Sebuah perangkat tertentu , Intel 8255A, akan dibahas di Bagian 6.4)
Gambar 6.3 adalah diagram blok secara umum sebuah modul I/O. Modul
dihubungkan dengan bagian-bagian komputer lainnya melalui saluran signal
(misalnya, saluran bus sistem). Data yang dipindahkan ke modul dan dari modul
di-buffer-kan dalam sebuah register data atau lebih. Mungkin juga terdapat sebuah
register status atau lebih yang memberikan informasi status saat itu. Register
status dapat juga berfungsi sebagai register kontrol, untuk menerima informasi
secara detail dari CPU. Logik pada modul berinteraksi dengan CPU untuk
memberikan perintah ke modul I/O. Beberapa saluran-saluran ini digunakan oleh
CPU untuk memberikan perintah ke modul I/O. Beberapa saluran kontrol dapat di
gunakan oleh modul I/O (misalnya untuk signal arbitrasi atau signal status).
Modul juga dapat mengetahui dan menghasilkan alamat-alamat yang berkaitan
dengan perangkat yang dikontrolnya. Setiap modul I/O memiliki alamat yang
unik, atau, apabila modul I/O mengontrol lebih dari sebuah perangkat eksternal,
maka terdapat sekumpulan alamat yang unik.
Terakhir, modul I/O terdiri dari logik yang bersifat khusus bagi interface dengan
setiap perangkat yang dikotrolnya.
Modul I/O bersifat untuk memungkinkan CPU dapat mengetahui
perangkat yang jumlahnya banyak dengan cara yang sederhana. Terdapat
spektrum kemampuan yang dapat terjadi. Modul I/O dapat menyembunyikan
detail pewaktuan, format, dan elektromekanis perangakat eksternal sehingga CPU
daapt memberiakan perintah pembacaan dan penulisan dengan mudah, dan juga
memungkinkan perintah-perintah membuka dan menutup file. Pada bentuk yang
paling sederhananya, modul I/O masih dapat ,memberikan tugas pengontrolan
perangkat dalam jumlah besar (misalnya, mengulung pita) yang dapat diketahui
oleh CPU.
Modul I/O yang sering kali mendapatkan beban pengolahan yang detail,
yang memberikan interface tingkat tinggi kepada CPU, dikenal sebagai I/O chanel
atau I/O processor . Modul I/O yang agak primitif dan membutuhkan kontrol
detail sering kali disebut I/O controller atau device controller. Secara umum I/O
controller dapat dilihat pada mikro komputer, sedangkan I/O chanel digunakan
pada mainframe, sedangkan mini komputer menggunakan campuran keduanya.
Sejauh ini, kita akan menggunakan istilah generik modul I/O bila tidak
terdapat hasil yang rancu dan akan menggunakan istilah yang lebih spesifik bila
memang diperlukan.
Tinjauan Singkat
Ketika CPU sedang mengeksekusi progra dan menemukan instruksi yang
berkaitan dengan I/O, maka CPU akan mengeksekusi instruksi itu dengan
mengeluarkan perintah ke modul I/O yang berhubungan. Dengan menggunakan
I/O terprogram, modul I/O akan membentuk tindakan yang diminta dan kemudian
akan menyetel bit-bit terkait dalam register status I/O (Gambar 6.3). Modul I/O
tidak akan mengambil tindakan lebih lanjut untuk memeperingati CPU. Dalam
keadaan tertentu, modul I/O tidak menginterupsi CPU. Jadi, pemeriksaan secara
periodik status modul I/O hingga CPU menemukan operasi yang lengkap
merupakan tanggung jawab CPU.
Untuk menjelaskan teknik I/O terprogram, pertama-tama kita akan
meninjaunya dari sudut pandang perintah-perintah I/O yang dikeluarkan ke modul
I/O, dan kemudian dari sudut pandang instruksi I/O yang dieksekusi oleh CPU.
Perintah-perintah I/O
Untuk mengeksekusi instruksi yang berkaiatan dengan I/O, CPU
menerbitkan sebuah alamat yang menspesifikasikan modul I/O dan perangkat
eksternal tertentu, dan sebuah perintah I/O. Terdapat empat jenis perintah I/O
185
yang akan diterima modul I/O ketika modul tersebut dialamati oleh CPU.
Perintah-perintah tersebut dapat diklasifiaksikan sebagai control, test, read, dan
write.
Perintah control digunakan untuk mengaktivasi peripheral dan
memberitahunya tentang tugas yang harus dilaksanakannya. Misalnya, unit pita
magnetik dapat di instruksikan untuk menggulung ulang atau memajukan sebuah
record. Perintah-perintah ini disesuaikan dengan jenis perangkat peripheralnya.
Perintah test digunakan untuk menguji bermacam-macam kondisi status
yang berkaitan dengan modul I/O dan perangkat peripheralnya. CPU perlu
mengetahui bahwa peripheral yang dimaksud berada dalam keadaan aktif dan
dapat digunakan. CPU juga perlu mengetahui apakah operasi I/O yang terkini
telah selesai dan terjadinya error.
Perintah read mengakibatkan modul I/O akan mendapatkan sebuah butir
data dari peripheral dan menaruhnya didalam buffer internal (digambarkan
sebagai register data pada Gambar 6.4). Kemudian CPU akan memperoleh butir
data dengan memintanya yang ditaruh modul I/O pada bus data. Sebaliknya,
perintah write menyebabkan mentransmisikan butir data itu ke peripheral.
Gambar 6.5a memberikan sebuah contoh penggunaan I/O terprogram
untuk membaca sebuah blok data dari perangkat peripheral (misalnya, record dari
pita magnetik) ke dalam memori. Data dibaca sebagai sebuah word (misalnya, 16
bit). Bagi setiap word yang dibaca, CPU harus tetap berada dalam siklus status-
checking sampai CPU dapat menentukan bahwa word dapat diperoleh didalam
register data modul I/O. Diagram alir ini menjelaskan kerugian penting teknik ini :
teknik ini merupakan proses yang banyak memakan waktu yang selalu membuat
CPU selalu berada dalam keadaan sibuk.
Instruksi-instruksi I/O
dan sering kali terdapat korespondensi satu-satu yang sederhana. Bentuk instruksi
bergantung pada cara pengalaman perangkat eksternal.
Umumnya, akan banyak terdapat perangkat I/O yang terhubung melalui
modul I/O ke sistem. Setiap perangkat diberi pengenal (identifier) atau alamat
yang unik. Pada saat CPU mengeluarkan perintah I/O, perintah akan berisi alamat
perangkat yang diinginkan. Jadi, setiap modul I/O harus menginterpretasikan
saluran alamat untuk menentukan apakah perintah itu ditujukan untuk dirinya atau
bukan.
Ketika CPU, memori utama, dan I/O menggunakan bus umum bersama-
sama, maka akan dimungkinkan penggunaan dua mode pengalamatan : memori
yang dipetakan (memori-mapped I/O) dan memori terisolasi (isolated memori).
Dengan menggunakan memori-mapped I/O, tedapat ruang alamat tunggal untuk
lokasi memori dan perangkat I/O. CPU memberlakukan 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. Karena itu,
misalnya, dengan 10 saluran alamat, akan di peroleh sejumlah 1024 alamat lokasi
memori dan I/O, dengan memakai sembarang kombinasi.
7 6 5 4 3 2 1 0
516 Keyboard Input Data Register
7 6 5 4 3 2 1 0
517 Keyboard Input Status &
C Control Register
1- ready Set to 1
0- busy to start read
Pada I/O terisolasi (Gambar 6.6b), port-port I/O hanya dapat diakses
dengan perintah-perintah I/O khusus, yang akan mengaktivasi saluran perintah I/O
pada bus.
Bagi sebagian besar jenis CPU, terdapat sejumlah perintah yang berbeda
untuk keperluan pembuatan referensi memori. Bila I/O terisolasi digunakan, maka
hanya akan terdapat sedikit instruksi I/O. Jadi, keuntungan memori-mapped I/O
adalah bahwa suatu koleksi besar instruksi ini dapat di gunakan, yang mana
memungkinkan lebih efisiennya pemrograman. Kerugiannya adalah ruanng
memmori alamat yang berharga akan habis terpakai. Baik memori-mapped I/O
maupun I/O terisolasi digunakan secara luas.
Fungsi DMA
DMA meliputi modul – modul tambahan pada bus system. Modul DMA (Gambar
6.6) mampu menirukan CPU, bahkan mengambil alih control system dari CPU.
Teknik ini berkerja sebagai berikut. Pada saat CPU ingin membaca atau menulis
blok data, CPU mengeluarkan perintah ke modul DMA, dengan mengirimkan ke
modul DMA informasi berikut ini:
Read atau write yang diminta
- Alamat perangkat I/O yang dilibatkan
- Lokasi awal dalam memori untuk membaca atau menulis
- Jumlah word yang akan dibaca atau ditulis.
Modul DMA perlu mengambil kontrol bus agar dapat memindahkan data
ke memori dan dari memori. Untuk itu, modul DMA harus hanya menggunakan
bus bila CPU tidak memerlukannya, atau DMA harus memaksa CPUagar
menghentikan dulu operasi secara sementara. Teknik yang terakhir lebih umum
digunakan dan sering disebut sebagai cycle-stealing karena modul DMA
mengambil alih siklus bus.
Gambar 6.6 menjelaskan letak sirkus instruksi yang dapat menghentikan
CPU. Pada umumnya,CPU dihentikan sesaat sebelum CPU itu menggunakan
bus.Kemudian modul DMA memindahkan sebuah word dan mengembalikan
kontrol ke CPU. Perlu dicatat bahwa hal ini bukan merupakan sebuah interrupt;
CPU tidak menyimpan context dan tidak tidak mengerjakan hal lainnya,
melainkan CPU berhenti sementara selama satau siklus bus. Akibat
keseluruhannya adalah menyebabkan CPU mengeksekusi lebih lambat. Akan
tetapi bagi pemindahan I/O yang wordnya berjumlah banyak, DMA akan jauh
lebih efisien dibandigkan dengan interrupt-driven I/O atau I/O terprogram.
4. Modul I/O diberi akses langsung kememori melalui DMA. Sekarang modul
I/O dapat memindahkan blok data ke memori atau dari memori tanpa
melibatkan Cpu, kecuali pada awal dan akhir pemindahan.
5. Modul I/O ditingkatkan kemampuannya menjadi sebuah prosesor yang
memiliki tugasnya sendiri, yang menggunakan intruksi tertentu. Cpu
mengarahkan prosesor I/O untuk mengeksekusi suatu program I/O di alam
memori. Prosesor I/O mengambil dan mengeksekusi intruksi – intruksi ini
tanpa adanya campur tangan CPU. Hal ini memungkinkan CPU untuk
menentukan rangkaian aktivitas I/O dan hanya akan diinterupsi bila seluruh
rangkaian aktivitas telah terbentuk.
6. Modul I/O memiliki memori lokalnya sendiri dan merupakan sebuah
komputer yang memiliki tugasnya sendiri. Dengan arsitektur seperti ini.
Perangkat I/O dalam jumlah yang banyak dapat dikontrol, dengan keterlibatan
CPU yang minimal. Penggunaan arsitektur seperti itu adalah untuk
mengontrol komunikasi dengan terminal yang terinteraktif. Prosesor I/O dapat
menjalankan sebagian bear tugasnya yang melibatkan pengontrolan CPU.
Terdapat dua jenis saluran I/O yang umum di pakai, seprti ditunjukan pada
Gambar 6.7 selector channel mengontrol sejumlah perangkat berkecepatan tinggi
dan selalu didedikasikan bagi transfer data dengan salah satu perangkat tersebut.
Jadi, saluran I/O memilih sebuah perangkat dan akan mempengaruhi pemindahan
data. Setiap perangkat, aau perangkat dalam jumlah sedikit, akan ditangani oleh
sebuah controller, atau modul I/O, yang mana lebih menyerupai modul I/O yang
telah kita bahas sebelumnya. Sehingga, saluran I/O mengantikan fungsi CPU
dalam hal mengontrol controller – controller I/O. Multiplexor channel menerima
atau mentransmisikan secepat mungkin ke beberapa perangkat. Misalnya,
jumlahan aliran karekter dari tiga perangkat yang memiliki kelajuan yang berbeda
dan memiliki aliran A1A2A3A4...., B1B2B3B4..., C1C2C3C4 dapat menjadi
A1B1C1A2C2A3B2C3A4, dan seterusnya. Untuk perangkat yang berkecepatan
tinggi, block multiplexor akan menyebarkan blok data yang beasal dari beberapa
perangkat.
1. Modul I/O mengirim signal kontrol yang meminta izin untuk mengirim
data.
2. Peripharel memberitahukan permintaan data
3. Modul I/O memindahkan data (satu word atau blok tergantng peripharel)
4. Peripharel memberitahukan penerimaan data.
Operasi read pun memiliki dialog yang sama seperti diatas.
Kundi operasi modul I/O adalah buffer internal yang dapat menyimpan
data yang dilewatkan di antara peripharel dan komponen – komponen sistem
lainnya. Buffer ini memungkinkan modul I/O untuk mengkompensasi perbedaan
kecepatan antara bus sistem dengan saluran internalnya.
Interface multipoint berada dibawah kendali bus – bus eksternal dan menunjukan
jenis logik yang sama seperti bus – bus yang telah dibahas pada bab 3. pada
bagian ini, kita akan menijau dua buah contoh penting. SCSI dan PI394.
6.7 Rangkuman
Fungsi atau persyaratan utama bagi modul I/O dapat dibagi menjadi beberapa
kategori seperti control dan timing, komunikasi CPU, komunikasi perangkat, data
Buffering, deteksi error.
Kita akan mengklasifikasikan secara luas perangkat eksternal menjadi tiga
kategori :
Human-Readable : Cocok untuk berkomunikasi dengan pengguan
komputer.
Machine-Readable : Cocok untuk berkomunikasi dengan peralatan.
196
Soal-soal Essay
Daftar Pustaka