710 likes | 971 Views
ORGANISASI KOMPUTER. INPUT OUTPUT ORGANIZATION. Menerima input, memproses, dan menghasilkan output merupakan kemampuan dari konputer. Berarti komputer harus memiliki kemampuan untuk mengakses peralatan input dan output. Untuk itulah komputer harus memiliki fungsi-fungsi :
E N D
ORGANISASI KOMPUTER INPUT OUTPUT ORGANIZATION
Menerima input, memproses, dan menghasilkan output merupakan kemampuan dari konputer. Berarti komputer harus memiliki kemampuan untuk mengakses peralatan input dan output. Untuk itulah komputer harus memiliki fungsi-fungsi : Addressing atau pemilihan peralatan I/0 untuk suatu operasi transfer yang diinginkan. Pemindahan data ke dan dari peralatan yang dipilih. Sinkronisasi atau koordinasi waktu untuk operasi input dan output. Mengakses Peralatan I/O
Struktur Single Bus: Prosesor, Memory, dan peralatan I/O dihubungkan pada 1 bus, yg terdiri dari 3 set line yg digunakan utk membawa address, data dan control signal. Setiap peralatan I/O diberi satu set address. Jika prosesor menempatkan suatu address tertentu pada address lines, peralatan tsb dapat mengenalinya dan memberikan respon kepada perintah pada control line. Prosesor meminta operasi Read atau Write, dan data yg diminta dikirim melalui data line.
Peralatan I/O dan memory yg berbagi ruang address yg sama disebut sebagai memory-mapped I/O. Intruksi mesin yg digunakan utk meng-akses memory dapat digunakan utk memindahkan data ke dan dari peralatan I/O.
Mis: Move DATAIN,R0 utk membaca data dari DATAIN dan menyimpannya di register R0. DATAIN: address input buffer yg berhubungan dg keyboard. Move R0,DATAOUT mengirim isi register R0 ke lokasi DATAOUT, yg dapat berupa output data buffer dari suatu display atau sebuah printer. Contoh prosesor yg menggunakan memory-mapped I/O: 68000.
Prosesor Intel memiliki instruksi I/O khusus dan ruang address khusus utk peralatan I/O. Pada prosesor Power PC, peralatan I/O dapat ditempatkan pd address yg sama atau terpisah dari memory. Prosesor ini memiliki control register yg dapat digunakan utk berpindah dr satu ruang address ke yg lain. Gambar berikut menunjukkan hardware yg digunakan utk menghubungkan peralatan I/O ke bus yg disebut Interface.
Address decoder memungkinkan peralatan untuk mengenali addressnya jika address ini ditempatkan pada address bus oleh CPU. Data register digunakan utk menyimpan data yg ditransfer ke CPU dr peralatan input atau menerima data dr CPU utk di-transfer ke peralatan output. Status register mengandung informasi yg relevan dg operasi peralatan I/O. Register2 tsb dihubungkan dg data bus dan diberi address tersendiri. Address decoder, data dan status register, dan control circuitry disebut sebagai rangkaian interface.
Merupakan salah satu cara komputer mengkoordinir kegiatannya dg peralatan I/O yg dihubungkan kepadanya. Pd program-controlled I/O: Prosesor terus-menerus memeriksa status flag setiap peralatan I/O utk mencapai sinkronisasi antara prosesor dan I/O device. Hal ini digambarkan pada potongan program di bawah ini : SINKRONISASI
Terdapat 2 mekanisme lain yg umum digunakan utk mengimplementasikan operasi I/O: Interrupts Direct Memory Access
Digunakan untuk meningkatkan kinerja processor dalam penanganan peralatan I/O yang dimilikinya. CPU tidak harus selalu mengecek status peralatan I/O Bila terdapat peralatan I/O yang meminta pelayanan, maka peralatan tersebut akan mengirim sinyal interrupt kepada CPU. Sinyal interrupt ini disebut juga sebagai Interrupt Request (INTR) Sinyal interrupt dikirim melalui jalur kontrol bus yang disebut interrupt request line. INTERRUPT
Processor akan merespon interrupt yang diterima dengan menghentikan proses yang sedang berjalan dan mengecek status peralatan I/O untuk mencari peralatan yang meminta interrupt. Selanjutnya processor akan menjalankan suatu program untuk merespon interrupt yang diterimanya. Program ini disebut sebagai interrupt-service routine (ISR). Berikut contoh processor dalam menjalankan ISR untuk merespon interrupt pencetakan ke printer :
Keterangan gambar : Saat processor menjalankan compute routine (perhitungan) pada langkah ke-i, processor menerima sinyal interrupt yang meminta proses pencetakan (print). Setelah processor selesai melaksanakan instruksi ke-i processor menghentikan sementara eksekusi terhadap compute routine dan menyimpan hasil-hasil sementara proses tersebut ke register khusus (register stack).
Processor kemudian menjalankan print routine. Jika print routine selesai dilaksanakan, maka processor kembali ke program semula (compute routine) pada langkah ke-(i + 1) dengan mengambil informasi yang sebelumnya diimpan.
Interrupt Hardware Gb. 9.4. Rangkaian ekivalen untuk open collector bus yg digunakan utk mengimplementasikan common interrupt request line
Gambar di atas merupakan gambar jalur interrupt dengan menggunakan singgle line. Jalur interrupt beberapa peralatan hanya dihubungkan dengan menggunakan satu jalur. Sehingga interrupt yang diterima processor adalah apabila ada satu atau lebih peralatan mengirimkan sinyal interrupt. Untuk mencari peralatan mana yang mengirimkan interrupt, processor memeriksa Ready Bit setiap peralatan dengan cara pooling.
Kelemahan dari metode interrupt ini adalah adanya pooling oleh processor untuk mencari peralatan yang mengirimkan interrupt. Apabila terdapat beberapa peralatan yang mengirimkan interrupt secara bersamaan maka yang dilayani terlebih dahulu adalah peralatan yang terdekat dengan processor secara pengkabelan.
Tidak semua permintaan interrupt bisa dilayani oleh processor. Adakalanya saat processor menjalankan suatu program, program tersebut tidak boleh disela oleh proses lain. Atau bisa juga pada saat itu sedang dilayani suatu interrupt hingga tidak mungkin menerima interrupt lain. Untuk itu diperlukan fasilitas enable dan disable interrupt untuk mengindikasikan bisa tidaknya interrupt diterima. Enabling and Disabling Interrupt
Cara enable dan disable interrupt : Pada processor dilengkapi dengan interrupt mask. Yaitu salah satu bit pada register processor status (PS). Interrupt mask ini digunakan sebagai status interrupt, jika interrupt mask = 1, maka interrupt disable). Pada ISR diberikan interrupt-disable instruction sebagai instruksi pertama dan interrupt-enable instruction sebagi instruksi terakhir pada program. Untuk melakukan melakukan interrupt handling maka langkah-langkah yang terjadi adalah sbb (diasumsikan interrupt sedang enable) :
Peralatan (I/O) mengirimkan sinyal interrupt request. Processor menginterupsi program yang sedang dieksekusi. Processor me-disable interrupt Peralatan I/O diberitahu bahwa requestnya telah dikenali, dan peralatan tersebut merespon dengan menghentikan sinyal interrrupt requestnya. Menjalankan interrupt service routine (ISR) yang berkaiatan dengan interrupt yang diminta. Interrupt dienable dan prosessor melanjutkan eksekusi program sebelumnya.
Di sini dibicarakan penanganan jika terjadi permintaan interrupt oleh beberapa peralatan I/O, baik secara bersamaan atau pada saat yang lain sedang dieksekusi. Dalam hal ini ada beberapa persoalan yang perlu dipikirkan : Bagaimana processor mengenali perangkat yang meminta interrupt. Menangani Beberapa Peralatan
Misalkan terdapat beberapa perangkat meminta interrupt service routine yang berbeda, bagaimana processor dapat memperoleh alamat awal routine yang sesuai untuk setiap permintaan tersebut. Apakah suatu perangkat diijinkan untuk menginterupsi prosessor pada saat interrupt lain dilayani? Bagaimana dua atau lebih interrupt request ditangani?
Pada saat suatu request diterima, diperlukan informasi tambahan untuk mengindentifikasi perangkat tertentu yang mengaktifkan jalur tersebut. Jika yang mengaktifkan jalur tersebut lebih dari satu, maka perlu dilakukan pemilahan dan pemilihan satu diantara beberapa request. Informasi yang diperlukan untuk menentukan apakah suatu perangkat meminta interrupt disediakan dalam status register. Misalkan bit KIRQ untuk keyboard dan DIRQ untuk display. Gambar register status interface keyboard dan memory
Selanjutnya untuk mengenali peralatan yang meng-interrupt adalah dengan mempolling semua peralatan yang terhubung. Skema polling mudah diimplementasikan tetapi waktu yang dihabiskan untuk proses ini cukup memakan waktu.
Untuk mengatasi kelemahan metode interrupt di atas digunakan metode vectored interrupt. Peralatan yang meminta interrupt menyertakan kode khusus yang merupakan identitas dari peralatan tersebut. Sehingga proscessor langsung dapat mengenali peralatan yang mengirimkan interrupt. Kode ini dapat berupa alamat dari peralatan pengirim. Vectored Interrupt
Untuk menjalankan proses interupt vektor ini awalnya peralatan I/O mengirim sinyal interrupt request (INTR) pada prosessor. Selanjutnya jika prosessor siap untuk melayani permintaan, maka prosessor mengirim sinyal interrupt acknowledge (INTA) untuk merespon IR dari peralatan I/O. Setelah I/O menerima sinyal INTA, peralatanI/O mematikan sinyal INTR dan mengirimkan data interrupt vektor. Umumnya perangkat I/O mengirim kode interrupt vektor melalui bus data, menggunakan sinyal kontrol bus untuk memastikan bahwa perangkat tidak saling mempengaruhi.
Interrupt Nesting Gb. Implementasi interrupt priority menggunakan jalur INTR dan INTA
Dengan menggunakan gambar rangkaian di atas, dimungkinkan untuk menerima bebe-rapa interrupt secara bersamaan atau mene-rima interrupt pada saat processor menjalan-kan interrupt yang lain. Penerimaan interrupt berdasarkan prioritas yang telah diberikan oleh rangkaian Priority Arbitration. Peralatan yang memiliki prioritas lebih tinggi harus diutamakan meskipun processor se-dang memproses interrupt peralatan lain. Sedang peralatan yang memiliki prioritas le-bih rendah tidak dapat menghentikan proses interrupt oleh peralatan yang memiliki priori-tas lebih tinggi.
Permintaan beberapa interrupt secara bersamaan dapat diatasi dengan penggunaan priority arbitration circuit (PAC), tetapi jumlah peralatan yang bisa dipasang dibatasi oleh jumlah jalur yang dimiliki oleh PAC. Dan jumlah kabel yang diperlukan cukup banyak. Untuk menangani jumlah peralatan yang sangat banyak, biasanya penggunaan PAC dipadukan dengan metode daisy chain seperti yang digambarkan berikut ini. Simultaneus Request
Direct memory access (DMA), digunakan untuk menangani kebutuhan transfer data dengan kecepatan tinggi dan dalam jumlah yang besar ke peralatan I/O. Sebelumnya untuk transfer data selalu dikontrol oleh processor, padahal processor juga harus melakukan tugas-tugas yang lain. Transfer data yang sangat besar akan sangat menyibukkan dan memperlambat kerja processor. Direct Memory Access
Transfer DMA dilakukan oleh suatu control unit yg berhubungan dg I/O device. Rangkaian ini disebut sbg DMA controller. DMA controller memungkinkan transfer data langsung antara device dan memory utama tanpa melibatkan prosesor. Hal ini berarti bhw DMA controller melakukan fungsi-fungsi yg biasanya dilakukan oleh prosesor ketika mengakses memory utama.
Utk setiap byte atau word yg ditransfer, DMA controller harus menyediakan memory address dan semua sinyal bus yg mengendalikan transfer data. Krn harus men-transfer block data, DMA controller harus meng-increment memory address utk byte atau word yg berurutan dan menghitung jumlah transfer.
Walaupun DMA controller dapat men-transfer data tanpa intervensi prosesor, operasinya harus di bawah kontrol suatu program yg di eksekusi oleh prossesor. Untuk memulai transfer suatu blok word, prosesor mengirimkan data berikut ke controller: Alamat awal data di memory yang akan ditransfer Jumlah word data dalam blok Arah transfer (read atau write).
Setelah menerima informasi tsb, DMA controller melanjutkan utk melakukan transfer yg diminta. Setelah semua blok di-transfer, controller memberitahu prosesor dengan mengirimkan sinyal interrupt. Berikut gambar register yang ada pada DMA interface.
Gambar di atas menunjukkan suatu contoh register-register dlm sebuah DMA controller yg dilihat oleh programmer. Register-register ini di-akses dg cara yg sama dg semua I/O device interface yg lain. Dua register digunakan utk menyimpan alamat awal dan hitungan word. Register yg ketiga mengandung status dan control flag.
Bit R/W menentukan arah transfer dan digunakan utk mengendalikan line yg berhubungan pd bus. Jika bit ini di set ke 1oleh instruksi program, controller melakukan suatu operasi read, yaitu transfer data dilakukan dari memory ke I/O device. Jika tidak, maka dilakukan operasi write. Ketika controller telah menyelesaikan transfer suatu blok data dan siap menerima command yg lain, flag Done di set menjadi 1.
Bit 30 adl Interrupt enable flag. Jika di set ke 1, flag ini menyebabkan controller membangkitkan interrupt setelah menyelesaikan transfer sebuah blok data. Akhirnya, controller men-set bit IRQ ke 1 ketika telah meminta interrupt.
Gambar di bawah adalah contoh penggunaan kontroller DMA pada sistem komputer, yang terdiri dari : Kontroller DMA yang menghubungkan jaringan high speed ke bus komputer. Kontroller Disk/DMA yang mengontrol dua disk. Kontroller ini dapat melakukan dua operasi DMA mandiri.
Utk memulai transfer DMA suatu blok data, suatu program yg biasanya sebuah routine dlm sistem operasi, menulis informasi berikut ke register DMA channel yg ditugaskan ke printer: Alamat memory Hitungan word Fungsi yg akan dilakukan (Read atau Write) DMA controller kemudian melanjutkan sendiri utk mengimplementasikan fungsi yg ditentukan.
Ketika transfer DMA telah selesai, hal ini disimpan dlm register status dan control dari DMA controller dg men-set bit Done. Pd saat yg sama, jika bit IE di-set, controller mengirimkan suatu permintaan interrupt kpd prosesor dan men-set bit IRQ. Register status juga dapat digunakan utk menyimpan informasi, spt apakah transfer berlangsung dg benar atau terjadi error. Ketika transfer DMA berlangsung, program yg meminta transfer tidak dapat dilanjutkan. Tetapi prosesor dapat digunakan untuk meng-eksekusi program yg lain.
Konflik mungkin terjadi jika Prosesor dan DMA Controller mencoba untuk menggunakan bus pd saat yg sama dg akses ke memory utama. Krn beberapa DMA controller yg melayani I/O device yg berbeda dapat dihubungkan dg bus. Dlm hal ini, dua atau lebih controller mencoba utk menggunakan bus secara bersamaan. Bus Arbritration
Utk mengatasi konflik ini, suatu rangkaian khusus yg disebut bus arbiter disediakan utk mengkoordinir kegiatan semua peralatan yg meminta transfer memory. Berikut gambar pengaturan processor dengan bus arbiter circuitry.
Cara kerja dari blok diagram di atas sama dengan blok diagram interrupt. Saat salah satu DMA controller memerlukan bus untuk transfer data, maka DMA controller tersebut mengirim sinyal Bus Request (BR) ke processor. Processor merespon dengan mengirimkan sinyal Bus Grant (BG) yang terhubung ke semua DMA controller secara daisy chain. Sinyal BG juga menjadi indikator bahwa bus data sedang tidak terpakai (free).