BAB I. INPUT OUTPUT
Unit Input/Output
(I/O) adalah bagian dari sistem mikroprosesor
yang digunakan oleh mikroprosesor itu untuk berhubungan dengan dunia luar.
Unit input adalah unit luar yang
digunakan untuk memasukkan data dari luar ke dalam mikroprosesor ini, contohnya data yang
berasal dari keyboard
atau mouse.
Sementara unit output biasanya
digunakan untuk menampilkan data, atau dengan kata lain untuk menangkap data
yang dikirimkan oleh mikroprosesor, contohnya data yang akan ditampilkan pada
layar monitor
atau printer.
A.
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:
1.
Kontrol
dan pewaktuan.
2. Komunikasi CPU.
3. Komunikasi perangkat eksternal.
4. Pem-buffer-an data.
5. Deteksi kesalahan.
B. Programmed I/O .
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 diinteruksikan 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.
C. Interrup
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.
Langkah penanganan interup:
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:
a. Status prosesor, berisi register yang dipanggil PSW (program status
word).
b. 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 selasai,
CPU akan memanggil
kembali informasi yang telah disimpan pada stack pengontrol
untuk meneruskan operasi sebelum interupsi.
Metode
penanganan interup:
1. Multiple Interrupt Lines.
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.
2. Software Poll.
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.
3.
Daisy Chain.
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.
4.
Arbitrasi Bus.
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.
D. 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. Untuk itu dikembangkan
teknik yang lebih baik, dikenal dengan Direct Memory Access (DMA).
Direct memory access (DMA) adalah suatu alat pengendali khusus disediakan
untuk memungkinkan transfes blok data langsung antar perangkat eksternal dan
memori utama, tanpa intervensi terus menerus dari prosesor.
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.
1. Transfer DMA.
Untuk memulai sebuah transfer DMA, host akan menuliskan sebuah DMA command block yang berisi pointer yang menunjuk ke sumber transfer, pointer yang menunjuk ke tujuan/ destinasi transfer, dan jumlah byte yang ditransfer, ke memori. CPU kemudian menuliskan alamat command block ini ke DMA controller, sehingga DMA controller dapat kemudian mengoperasikan bus memori secara langsung dengan menempatkan alamat-alamat pada bus tersebut untuk melakukan transfer tanpa bantuan CPU.
Untuk memulai sebuah transfer DMA, host akan menuliskan sebuah DMA command block yang berisi pointer yang menunjuk ke sumber transfer, pointer yang menunjuk ke tujuan/ destinasi transfer, dan jumlah byte yang ditransfer, ke memori. CPU kemudian menuliskan alamat command block ini ke DMA controller, sehingga DMA controller dapat kemudian mengoperasikan bus memori secara langsung dengan menempatkan alamat-alamat pada bus tersebut untuk melakukan transfer tanpa bantuan CPU.
Tiga langkah dalam transfer DMA:
1. Prosesor menyiapkan DMA transfer dengan menyedia kan
data-data dari device, operasi yang akan ditampilkan, alamat memori yang
menjadi sumber dan tujuan data, dan banyaknya byte yang di transfer.
2. DMA controller memulai
operasi (menyiapkan bus, menyediakan alamat, menulis dan membaca data), sampai
seluruh blok sudah di transfer.
3. DMA controller
meng-interupsi prosesor, dimana selanjutnya akan ditentukan tindakan
berikutnya.
Pada dasarnya, DMA mempunyai dua metode yang berbeda dalam
mentransfer data. Metode yang pertama adalah metode yang sangat baku dan simple
disebut HALT, atau Burst Mode DMA, karena DMA controller memegang kontrol dari
sistem bus dan mentransfer semua blok data ke atau dari memori pada single
burst. Selagi transfer masih dalam progres, sistem mikroprosessor di-set idle,
tidak melakukan instruksi operasi untuk menjaga internal register. Tipe operasi
DMA seperti ini ada pada kebanyakan komputer.
Metode yang kedua,
mengikut-sertakan DMA controller untuk memegang kontrol dari sistem bus untuk
jangka waktu yang lebih pendek pada periode dimana mikroprosessor sibuk dengan
operasi internal dan tidak membutuhkan akses ke sistem bus. Metode DMA ini
disebut cycle stealing mode. Cycle stealing DMA lebih kompleks untuk
diimplementasikan dibandingkan HALT DMA, karena DMA controller harus mempunyai
kepintaran untuk merasakan waktu pada saat sistem bus terbuka.
2. Handshaking.
Proses handshaking
antara DMA controller dan device controller dilakukan melalui sepasang kabel
yang disebut DMA-request dan DMA-acknowledge. Device controller mengirimkan
sinyal melalui DMA-request ketika akan mentransfer data sebanyak satu word. Hal
ini kemudian akan mengakibatkan DMA controller memasukkan alamat-alamat yang
dinginkan ke kabel alamat memori, dan mengirimkan sinyal melalui kabel
DMA-acknowledge. Setelah sinyal melalui kabel DMA-acknowledge diterima, device
controller mengirimkan data yang dimaksud dan mematikan sinyal pada
DMA-request.
Hal ini berlangsung berulang-ulang sehingga disebut handshaking. Pada saat DMA controller mengambil alih memori, CPU sementara tidak dapat mengakses memori (dihalangi), walau pun masih dapat mengaksees data pada cache primer dan sekunder. Hal ini disebut cycle stealing, yang walau pun memperlambat komputasi CPU, tidak menurunkan kinerja karena memindahkan pekerjaan data transfer ke DMA controller meningkatkan performa sistem secara keseluruhan.
Hal ini berlangsung berulang-ulang sehingga disebut handshaking. Pada saat DMA controller mengambil alih memori, CPU sementara tidak dapat mengakses memori (dihalangi), walau pun masih dapat mengaksees data pada cache primer dan sekunder. Hal ini disebut cycle stealing, yang walau pun memperlambat komputasi CPU, tidak menurunkan kinerja karena memindahkan pekerjaan data transfer ke DMA controller meningkatkan performa sistem secara keseluruhan.
3. Cara-cara Implementasi DMA.
Dalam
pelaksanaannya, beberapa komputer menggunakan memori fisik untuk proses DMA ,
sedangkan jenis komputer lain menggunakan alamat virtual dengan melalui tahap
"penerjemahan" dari alamat memori virtual menjadi alamat memori
fisik, hal ini disebut direct virtual-memory address atau DVMA. Keuntungan dari
DVMA adalah dapat mendukung transfer antara dua memory mapped device tanpa
intervensi CPU.
No comments:
Post a Comment