Minggu, 13 Juni 2010

cache memory

CACHE MEMORY
Karena perbedaan kecepatan antara CPU dan MM cukup jauh berbeda, perlu diatur sinkronisasi antara keduanya. Sebuah program terdiri dari beberapa bahkan ratuasan sampai ribuan instruksi. Ada instruksi yang di eksekusi berulangkali, ada juga instruki yang jarang dieksekusi. Gejala demikian disebut sebagai Locality of reference.

Untuk itu perlu diatur sedemikian hingga Segmen aktif program berada dalam memory yang cepat, sehingga waktu eksekusi total dapat berkurang. Memori yang dipakai untuk tempat segmen aktif program dikenal dengan nama cache memory. Cache memory diletakkan diantara CPU dan MM. Kecepatannya lebih tinggi daripada MM.
Ketika cache penuh dan memori word (instruksi atau data) yang diminta tidak berada di cache, keputusan harus diambil, blok manakah yg harus dihilangkan agar cukup tempat tersedia bagi blok word baru yang akan dimuat. Kumpulan teknik untuk membuat keputusan ini disebut Repacement Algorithm

Mekanisme penempatan instruksi didalam cache memori dikenal dengan Mapping Function (Fungsi Pemetaan)

Beberapa jenis Mapping Function (Fungsi Pemetaan) :
DIRECT MAPPING CACHE
ASSOSIATE MAPPING CACHE
BLOCK SET ASSOSIATE MAPPING CACHE

DIRECT - MAPPING CACHE
Merupakan cara paling sederhana untuk menentukan lokasi cache yang digunakan. Dengan teknik ini, blok j memori utama memetakan ke blok j pada cache memori.
Untuk jelasnya lihat gambar di bawah ini.

MISAL :
Jika sebuah cache memori dengan ukuran 2K akan dihubungkan dengan Main Memori kapasitas 64K dengan ketentuan :
Masing-masing blok terdiri dari 16 word
1 word = 16 bit
Maka dapat dihitung :
Jumlah blok dalam CACHE
2048/16 = 128 BLOK

Jumlah blok dalam MAIN MEMORI
65.534/16 = 4096 BLOK

Perbandingan blok main dan Cache
4096/128 = 32

jadi 1 cache bisa untuk 32 main secara bergantian atau cache : main = 1 : 32

Untuk blok cache 0 bisa ditempati blok memori
0
128
256
384
32 blok 512
640
768
s/d
3968 (128 X 31)

Untuk blok cache 1 bisa ditempati blok memori
1
129
257
385
513
32 blok 641
769
s/d
3969 (3968+1)

Untuk blok cache 127 bisa ditempati blok memori
127
255
383
511
639
32 blok 767
895
s/d
4095 (3969+127)

Jika ada pernyataan : alamat 2013 H
00100 0000001 0011 = 2013 H
tag blok word

Artinya :
(Tag : label)
TAG ke 4 = urutan masuk ke blok cache adalah urutan yang ke 4
Blok ke 1 = tempatnya di blok cache yang ke 1
word ke 3 = word ke 3 dari blok

kita lihat blok cache ke 1 diurutan ke 4 itu berisi :
Untuk blok cache 1 bisa ditempati blok memori
1
129
257
385
513
641
769
s/d
3969( 3968+1)

Jadi address sesungguhnya dari main memori adalah :
Blok yang ke 385, word yang ke 3
alamatnya adalah 385 X 16 + 3 = 6163 D
dijadikan HEXA, 6163 D = 1813 H


Teknik direct mapping mudah untuk diterapkan tetapi sangat tidak fleksible
Karena lebih dari satu blok memori dipetakan dalam satu blok cache tertentu maka sangat mungkin muncul perebutan untuk posisi cache tersebut.

ASSOSIATE - MAPPING CACHE
Metode mapping ini jauh lebih fleksibel, yaitu blok memori utama dapat diletakkan ke dalam tiap posisi blok cache. Untuk seperti kasus dalam direct mapping di atas diperlukan 12 bit tag untuk mengidentifikasi blok memori saat blok tersebut berada dalam cache.

Dari gambar di atas 127 blok cache bisa langsung di access oleh blok main Memori maka
Untuk blok cache0 bisa ditempati blok memori
0
1
2
3
4
5
6
s/d
4095

Untuk blok cache1 bisa ditempati blok memori
0
1
2
3
4
5
6
s/d
4095

Jadi jika ada pernyataan: alamat : CC06 H

1100 1100 0000 0110
tag word

Address sebenarnya adalah blok ke CC06 H

Teknik ini menghasilkan kebebasan penuh dalam memilih lokasi cache untuk meletakkan blok memori.
Biaya yang diperlukan untuk menyelidiki seluruh pola 128 tag untuk menentukan apakah suatu blok memori berada dalam chace lebih tinggi dari direct mapped.

BLOK SET ASSOSIATE MAPPING CACHE
Metode ini merupakan gabungan dua metode sebelumnya. Blok cache dikelompokkan ke dalam set, dan mapping memungkinkan blok memori utama untuk berada dalam blok set tertentu. Karenanya masalah perebutan dalam metode direct dikurangi dengan menggunakan beberapa pilihan penempatan blok. Pada saat yang sama biaya hardware dikurangi dengan mengurangi ukuran penelusuran assosiatif.

Pada cache dibuat set, yang masing-masing setnya terdiri dari 2 blok :
Misalkan
Blok 0 | Set 0 Blok 4 | Set 2
Blok 1 | Blok 5 |

Blok 2 | Set 1 Blok 6 | Set 3
Blok 3 | Blok 7 |

Shg dari yang 128 BLOK tadi dibagi menjadi 2 128/2 = 64 SET

Karena Blok 0 dan Blok 1 digabung dalam 1 set berarti kemungkinan 1 SET akan di akses oleh 32 X 2 ( 1 set = 2 blok dan tiap blok ada 32 kemungkinan)

Berarti Tiap 64 SET Cache ini kemungkinan akan diakses oleh 4096 BLOK Main shg : 4096/64 = 64 (TAG)

Untuk set cache 0 bisa ditempati blok memori
0
64
128
192
256
320
384
s/d
4032 (64 X 63)

Untuk set cache 1 bisa ditempati blok memori
1
65
129
193
257
321
385
s/d
4033

Jika ada pernyataan: alamat 1011 H
000100 000001 0001
tag Set word

TAG ke 4 = urutan masuk ke blok cache adalah urutan yang ke 4
Blok ke 1 = tempatnya di blok yang ke 1
word ke 3 = word ke 3 dari blok

kita lihat set cache ke 1 diurutan ke 4 itu berisi :
Untuk set cache 1 bisa ditempati blok memori
1
65
129
193
257
321
385
s/d
4033

Algoritma Penggantian
Algoritma penggantian data cache memori tidak berlaku pada Direct Mapping. Karena pada direct mapping posisi tiap blok telah ditentukan.
Pada metode associative dan set-associative, saat blok baru akan dibawa ke cache dan semua blok cache telah penuh, maka harus diputuskan blok mana yang akan di overwrite.
Secara umum metode ini adalah mempertahankan data yang tampaknya akan segera digunakan (direferensi) dan mengganti data yang tidak/belum akan direferensi.

Properti locality of reference dapat menjadi petunjuk, karena kemungkinan besar blok yang telah direferensi akan segera direferensi lagi. Maka jika harus melakukan overwrite dapat dipilih blok yang lama tidak direferensi.
Blok yang paling lama tidak direferensi ini disebut blok LAST Recently Used (LRU), dan teknik tersebut disebut algoritma penggantian LRU (LRU replacement algorithm).

Algoritma LRU
misal terdapat 4 blok dalam satu tag cache set associative
Saat cache belum penuh maka blok yang diakses CPU akan dimasukkan cache, dan counter blok cache ini diset ke 0. Blok lain yang telah terisi nilainya ditambah satu.
Jika sebuah blok akan diletakkan pada cache saat cache penuh, maka blok cache dengan nilai counter 3 dihapus dan digantikan dengan blok baru.
Blok yang baru menempati cache ini akan diberi nilai counter 0, sedang blok cache yang nilainya sama akan ditambah satu. Demikian juga untuk blok yang nilai counternya sama dengan blok yang counternya baru di update akan ditambah satu.

Contoh Teknik Mapping:
Berikut contoh ilustrasi efek teknik mapping pada cache memori.

Asumsi :
Prosesor memiliki cache instruksi dan data terpisah.
Cache data hanya memiliki ruang 8 blok data.
Setiap blok terdiri dari 16 bit (1 word) data.
Main memori yang digunakan sebesar 64KB (65.536), sehingga terdapat 16 bit alamat untuk memori ini.

Terdapat array bilangan 4 X 10, masing-masing menggunakan satu word.
Array ini ditempatkan pada alamat memori utama 7A00H – 7A27H.
Elemen array ini , A, disimpan dalam order kolom (lihat Gb 11.3)

Aplikasi :
Sum := 0
For j := 0 to 9 do
Sum := Sum + A(0,j)
Ave := Sum / 10
For i := 9 downto 0 do
A(0,i) := A(0,i) / Ave
end

mengenal lebih jauh memory dalam komputer kamu....

Memory : Merupakan komponen yang vital dalam system komputer
Idealnya memory yang digunakan dalam komputer mempunyai kecepatan tinggi, berkapasitas besar dan berharga murah.

Konsep Dasar :
Ukuran maksimum memory utama (MM) yg dapat digunakan dalam setiap komputer ditentukan oleh skema addressing.
Contoh:
Komputer 32 bit yg membangkitkan address 32 bit mampu meng-address lebih dari 232 = 4G(giga ) lokasi memory.
( 232 = 4.294.967.295 )
Umumnya komputer modern menggunakan byte-addressable, yaitu untuk pengambilan data dilakukan per-byte.
Contoh komputer yg byte-addressable dg pengaturan big endian PowerPC dan 68000.

MM biasanya dirancang untuk menyimpan dan mengambil data dalam satuan word.
Jumlah bit yg sebenarnya disimpan atau diambil dalam 1 memory access adalah definisi yg paling umum bagi panjang word sebuah komputer.
Misal: sebuah komputer yg byte-addressable dg struktur address pd Gb. yg instruksinya menghasilkan address 32 bit. High-order 30 bit menentukan word mana yg akan diakses, 2 bit lainnya menentukan lokasi byte yg diakses.

Hubungan MM dg CPU:
MAR k bit berarti MM dapat berisi 2k lokasi address yg dapat diakses melalui address bus.
MDR n bit berarti dalam sekali siklus sebanyak n bit data dapat ditransfer antara processor dengan MM melalui data bus
CPU dengan MM juga terhubung dengan control lines untuk sinyal read, write, dan memory function completed (MFC).

Pengukuran kecepatan memory adl waktu yg diperlukan antara awal operasi dan selesainya operasi tersebut. Disebut sebagai Memory Access Time.
- Contoh: waktu antara Read dan MFC.

Pengukuran lain yg penting adl memory cycle time. Ini adalah waktu tunda minimum yg diperlukan antara inisialisi 2 operasi memory yang berurutan (contoh: antara dua operasi read yg berurutan). Cycle time biasanya sedikit lebih lama dari pada access time.

Semiconductor RAM :
Dengan ditemukannya bahan semikonduktor kecepatan memori meningkat, satu cycle time memory kurang dari 10 nS.
Dengan teknologi VLSI (Very Large Scale Integration) harga memory semikonduktor turun drastis.

Organisasi internal chip memori
Organisasi memory dapat digambarkan dalam sel-sel yang tersusun pada sebuah array. Setiap sel dapat menyimpan satu bit informasi.
Setiap baris dari sel merupakan satu word memory, dan semua sel pada setiap baris terhubung pada sebuah common line disebut sebagai word line yang dikendalikan oleh address decoder.
Sel pada setiap kolom terhubung pada sebuah rangkaian sense/write yang terdiri dari dua bit.

Gambar di atas adalah contoh organisasi chip memory yang sangat kecil, berisi 16 word dan setiap word berisi 8 bit.
Data input dan output setiap rangkaian sense/write terhubung pada sebuah jalur single bidirectional data. Rangkaian ini digunakan untuk menentukan operasi memory baa atau tulis (read/write).
Chip select digunakan untuk menentukan chip memory yang digunakan pada sistem multi-chip.

Static Memory : Adalah memory yang berisi rangkaian yang dapat menahan tegangan dalam jangka waktu relatif lama.
Terdiri dari dua inverter (terhubung silang) dari rangkaian latch. Dan dua transistor yang berfungsi sebagai switch yang dapat membuka dan menutup jalannya data.
Untuk membaca isi sel dikirimkan sinyal pada word line. Hal ini menyebabkan switch T1 dan T2 menutup dan mengalirkan arus ke b dan b’ yang mempunyai logika berlawanan.
Untuk menulis data ke sel selain sinyal pada word line juga dikirimkan sinyal data pada b dan b’. Sinyal ini akan menggantikan isi sel sebelumnya

Dynamic Memory : Static RAM mahal harganya karena selnya yang terbuat dari beberapa transistor. Untuk itulah digunakan teknologi lain yaitu dengan menggunakan kapasitor untuk menyimpan muatan.
Tetapi kapasitor tidak dapat menyimpan muatan dalam waktu yang lama, karenanya sel ini disebut dynamic RAM (DRAM). Kapasitor hanya bisa menyimpan data selama sepuluh mili detik. Untuk mempertahankan muatan lebih lama, secara periodik sel perlu di-refresh

Gambar 7.8 di atas adalah organisasi DRAM 16 Mb, yang dikonfigurasi sebagai 2M X 8.
Sel diatur dalam array 4K X 4K. Sel 4K (4096) dalam tiap baris dibagi menjadi 512 grup yang masing-masing 8, sehingga setiap baris dapat menyimpan 512 byte data.
12 bit alamat diperlukan untuk memilih suatu baris. 9 bit diperlukan untuk menentukan grup dalam baris yang terdiri dari 8 bit. Sehinggga total 21 bit (12 bit high-order dan 9 bit low-order) merupakan alamat baris dan kolom byte.

Langkah-langkah untuk melakukan transfer (read/write) data ke DRAM :
Pertama diberikan alamat baris yang diterima oleh Row Address Strobe (RAS) pada chip.
Kemudian operasi read/write diinisialisasi, dimana semua sel pada baris yang dipilih dibaca dan direfresh.
Alamat kolom diberikan pada Column Address Strobe (CAS). Informasi ini didecode untuk memilih kolom yang tepat.
Untuk operasi read nilai output dari sirkuit yang dipilih ditansfer ke jalur data, sebaliknya untuk operasi write informasi pada jalur data ditransfer ke sirkuit yang dipilih.

DRAM yang didiskripsikan pada bagian ini adalah asynchronous DRAM. Karena timing perangkat memory sikontrol secara asynchronous. Terdapat sirkuit kontroller memori khusus yang mengatur timing.

Mode Fast Page
Pada saat DRAM pada gambar 5.8 diakses, seluruh isi sel pada baris yang dipilih (4096 sel) dibaca, tetapi hanya 8 bit yang diletakkan pada jalur data D7-0. Byte ini dipilih oleh bit alamat kolom A7-0.

Modifikasi sederhana dapat memungkinkan mengakses byte lain dalam baris yang sama tanpa me-reselect baris tersebut. Aplikasi alamat baris akan me-load latch yang berhubungan dengan semua bit dalam baris yang dipilih. Kemudian diterapkan alamat kolom yang berbeda untuk meletakkan alamat byte yang berbeda pada jalur data.
Pengaturan ini akan sangat berguna untuk transfer byte secara berurutan. Yaitu dengan menerapkan rangkaian alamat yang berurutan pada CAS, sehingga proses transfer data dapat lebih cepat. Hal ini memungkinkan transfer blok data yang lebih cepat, dan kemampuan ini disebut sebagai mode fast page.
Ket : Blok = grup kecil byte
Page = blok yang besar

DRAM SYNCHRONOUS :
Pengembangan teknologi DRAM menghasilkan DRAM yang operasinya disinkronisasikan langsung dengan sinyal clock. DRAM jenis ini dikenal dengan nama Synchronous DRAM (SDRAM).
Array sel pada SDRAM sama dengan DRAM. Koneksi alamat dan data dibuffer menggunakan register.

SDRAM mempunyai beberapa mode operasi yang dapat dipilih dengan menuliskan informasi kontrol pada register mode. Misalnya dapat ditentukan operasi burst panjang yang berbeda untuk mode fast page. Pada SDRAM sinyal yang digunakan untuk memilih kolom berurutan dihasilkan secara internal pada jalur CAS.

Gambar di atas adalah burst read pada SDRAM dengan panjang 4.
Pertama alamat baris di-latch dibawah kontrol sinyal RAS selama 2 clock cycle untuk mengaktifkan baris yang dipilih.
Kemudian alamat kolom di-latch dibawah kontrol sinyal CAS untuk memilih kolom yang berurutan.
Setelah jeda satu satu clock cycle set data pertama ditempatkan pada jalur data.
Berikutnya secara otomatis SDRAM meningkatkan alamat kolom untuk mengakses tiga set data berikutnya pada tiga clock cycle derikutnya.

Latency dan bandwidth
Memory latency digunakan untuk menyatakan jumlah waktu yang diperlukan untuk mentransfer data ke atau dari memori.
Untuk transfer data tunggal, latency menyediakan indikasi lengkap dari performa memori. Sedangkan dalam transfer blok data istilah latency digunakan untuk menyatakan waktu yang diperlukan untuk transfer word data pertama. Yang biasanya lebih lama daripada waktu yang diperlukan untuk mentransfer word berikutnya.

Contoh dari gambar 7.10, siklus akses dimulai dengan sinyal RAS. Word data pertama ditransfer lima clock cycle kemudian. Sehingga latensinya adalah lima clock cycle. Jika kecepatan clock 100MHz, maka latensi-nya 50ns.
Pada saat mentransfer blok data, ukuran data disetiap blok dapat berubah-ubah, maka sangat berguna untuk mendefinisikan performa dalam jumlah bit atau byte yang dapat ditransfer dalam satu detik. Ukuran ini disebut sebagai bandwidth.


Double-Data-Rate SDRAM
Double-Data-Rate SDRAM (DDR SDRAM) merupakan hasil upaya peningkatan kecepatan SDRAM. Dengan perangkat memori serupa dan latency yang sama dengan SDRAM, DDR SDRAM dapat mentransfer data pada kedua sisi clock. Maka bandwidth perangkat ini dua kali SDRAM untuk transfer burst panjang.

Refresh Overhead
Memory dinamik memerlukan refresh data. Pada DRAM lama, periode untuk refreshing semua baris data adalah 16ms. Pada SDRAM biasa periode umumnya 64 ms.

Contoh SDRAM yang selnya diatur dalam 8K (8192) baris. Misalkan diperlukan empat clock cycle untuk mengakses tiap baris. Maka waktu untuk merefresh semua baris :
8192 x 4 = 32.768 cycle.
Jika kecepatan clock 133MHz, waktu yang diperlukan : 32.768 / (133*106) = 246 X 10-6 detik (0,246 ms).
Dengan periode umum 64ms, maka refresh overhead adalah sebesar 0,246 / 64 = 0,0038, berarti kurang dari 0,4% waktu total yang tersedia untuk mengakses memory

Kontroller Memori
Untuk mengakses memory processor mengirimkan seluruh bit alamat memori pada saat yang sama. Sedangkan alamat yang digunakan untuk mengakses memori terbagi dua. Bit alamat high order untuk memilih baris dalam array sel yang dikontrol oleh RAS. Dan bit alamat low order untuk memilih kolom dari baris yang dipilih yang dikontrol oleh CAS.
Untuk itulah diperlukan multiplexing alamat yang dikirimkan oleh prosessor. Multiplexing ini dilakukan oleh sirkuit kontroller memori yang terletak antara prosessor dan memori.


Read only memory diperlukan karena saat komputer pertama kali di-on software sistem operasi harus diload ke memory (RAM). Hal ini memerlukan eksekusi program yang “boot” system operasi yang biasanya disimpan di harddisk. Untuk itulah diperlukan program kecil yang tersimpan pada nonvolatile memori.

ROM
Memory ini hanya bisa dibaca. Digunakan untuk keperluan seperti dijelaskan di atas

Gambar di atas adalah konfigurasi untuk sel ROM. Nilai logika 0 disimpan dengan menghubungkan transistor ke ground pada titik P. Sedang logika 1 jika P tidak terhubung ke ground. Bit line dihubungkan melalui resistor ke sumber daya.
Untuk membaca sel jalur word (word line) diaktifkan sehingga switch transistor tertutup. Dan logika akan terbaca logika 0 jika P terhubung dan terbaca logika 1 jika P terputus.

PROM
Programable ROM (PROM) adalah jenis ROM yang didesain sehingga memungkinkan user me-load data. Programmability dicapai dengan menyisipkan semacam sekering pada titik P (lihat gambar 7.12). Sebelum diprogram, semua sel memori berisi 0. user dapat menyisipkan loigika 1 pada lokasi tertentu dengan membakar sekering lokasi tersebut menggunakan pulsa arus tinggi. Tetapi proses ini tidak dapat dibalik (irreversible).

EPROM
Erasable PROM memungkinkan data yang disimpan dihapus dan data baru di-load.
Sel EPROM memiliki struktur mirip dengan sel ROM. Tetapi dalam sel EPROM koneksi ke ground yang dibuat dengan transistor khusus. Transistor ini memiliki kemampuan untuk berfungsi sebagai transistor normal atau sebagai transistor disabled yang selalu off. Agar transistor berlaku sebagai switch terbuka permanen dilakukan dengan menginjeksikan muatan kedalamnya. Sedang untuk penghapusan memerlukan disipasi muatan yang terjebak dalam transistor sel memori, hal ini dilakukan dengan memberikan sinar ultraviolet pada chip. Untuk itulah pada chip EPROM dipasang jendela transparan.

EEPROM
Electronic EPROM merupakan versi lain dari EPROM yang isinya dapat dihapus secara elektronik. Sehingga untuk penghapusan dan pemrograman ulang EEPROM tidak perlu di pindah dari rangkaiannya. Satu-satunya kerugian EEPROM adalah diperlukan tegangan yang berbeda untuk penghapusan, penulisan, dan pembacaan data yang tersimpan.

Drive Flash
Modul ini dekembangkan untuk menggantikan drive harddisk. Walaupun sampai saat ini kapasitasnya masih lebih rendah dibandingkan harddisk tetapi drive flash ini didesain sepenuhnya untuk menggantikan harddisk.
Perangkat ini memiliki waktu pencarian dan akses yang lebih singkat. Tetapi kemampuan memori flas akan menurun setelah ditulisi berulangkali, dimana jumlah penulisan di perangkat ini mencapai jutaan kali.

pengaturan input output

Mengakses Peralatan I/O :
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.

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.

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.

SINKRONISASI
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 :

INTERRUPT
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.

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.

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.

Catatan :
Pada saat peralatan I/O mengirimkan sinyal interrupt, processor akan menjawabnya dengan sinyal interrupt acknowledge (INTA). Sinyal ini mengindikasikan bahwa processor menerima interrupt tsb dan peralatan I/O dapat menghentikan sinyal interrupt-nya.
Terdapat tenggang waktu antara saat peralatan I/O mengirimkan sinyal interrupt sampai dilayani permintaan interrupt tsb (start ISR execution). Tenggang waktu ini disebut interrupt latency.

Enabling and Disabling Interrupt
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.

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.

Menangani Beberapa Peralatan
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.
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.

Vectored Interrupt ;
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.
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.
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.

Simultaneus Request
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.

Direct Memory Access:
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.
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 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.

Bus Arbritration
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.

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.
Gb. Pengaturan sederhana bus arbitration dengan daisy chain

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).

Sinyal BG ini akan diterima oleh DMA1, apabila DMA1 meminta request maka sinyal ini tidak diteruskan ke DMA controller yang lain. Tetapi bila tidak sinyal BG akan diteruskan ke DMA2, begitu seterusnya. Kemudian DMA yang meminta request mengirimkan sinyal Bus Bussy (BBSY) kepada processor dan DMA controller yang lain agar tidak ada yang memakai data bus kecuali DMA tersebut.
Maka saat itu DMA yang meminta request dapat mentransfer data yang diperlukan, dan setelah selesai maka DMA tersebut menon-aktifkan BBSY untuk memberitahukan bahwa data bus telah free.
Gambar di atas menggambarkan saat kontroler DMA 2 me-request dan mendapatkan bus mastership dan kemudian melepaskannya. Selama menjadi bus master, kontroller tersebut dapat melakukan satu atau dua operasi transfer data

Distributed Arbitration
Distributed arbitration berarti semua perangkat yang menunggu untuk menggunakan bus, memiliki tanggung jawab yang sama dalam melaksanakan proses arbitrasi, tanpa menggunakan arbiter pusat.
Skema distributed arbitration digambarkan di bawah ini :

Dengan menggunakan skema di atas, tiap perangkat pada pada bus tersebut diidentifikasi dengan bilangan 4-bit.
Saat satu atau lebih perangkat merequest bus tersebut, perangkat tersebut menyatakan sinyal Start-Arbitration dan meletakkan nomor ID 4-bit-nya pada empat jalur open-collector. Peme-nangnya di pilih berdasarkan nomor ID tertinggi.
Dengan jalur tipe open-collector, berlaku fungsi logika OR dengan logika 1 sebagai pemenang.

Untuk lebih jelasnya kita coba analisa kasus berikut :
Misal dua perangkat A dan B, memiliki nomor ID 5 dan 6 (0101 dan 0110). Jika kedua kode ini masuk pada bus dan dibaca, maka pada logika OR, ID ini akan terbaca oleh kedua parangkat sebagai 0111.
Maka perangkat A dan B akan membandingkan kode pada jalur arbritasi tersebut dengan kode ID-nya masing-masing, dimulai dari most significant bit.
Jika dideteksi terdapat perbedaan pada posisi manapun, maka perangkat tersebut mendisable drivernya.
Maka saat A mendetaksi jalur ARB1, mengakibatkan A mendisable drivernya, sehingga B menjadi pemenangnya.

I/O Hardware
Processor, memory utama dan peralatan I/O dihubungkan oleh sebuah common bus.
Fungsi utama dari bus adalah untuk transfer data dan komunikasi antara ketiga komponen komputer tersebut di atas.

Processor Bus
Sebuah bus terdiri dari tiga set jalur, yaitu jalur data, alamat dan kontrol.
Sinyal kontrol untuk transfer data terdiri dari dua informasi, yaitu : jenis transfer dan timing.
Jenis transfer data adalah berupa informasi read atau write data. Jika transfer data dalam ukuran besar juga disertakan ukuran data dalam byte, word atau long word.

Informasi sinyal timing berupa sinyal waktu bagaimana processor dan peralatan I/O meletakkan dan mengambil data, ke dan dari bus.

Synchronous Bus
Pada synchronous bus , seluruh peralatan komputer mendapatkan informasi timing dari sebuah common clock. Jarak waktu antar pulsa ON disebut sebagai time interval, dan setiap time interval merupakan sebuah bus cycle yang merupakan waktu dimana data yang akan ditransfer dapat diletakkan.

Keterangan gambar :
Saat t0 processor menempatkan alamat suatu peralatan pada jalur address dan mengeset mode pada jalur control yang mengindikasi-kan operasi input (membaca data).
Waktu antara t0 – t1 yang digunakan harus lebih besar dari waktu maksimum berjalannya sinyal (propagation delay) dari processor ke semua peralatan. Dan juga cukup bagi peralatan yang dituju untuk meresponnya saat t1.

Waktu antara t1 – t2, peralatan input mengirimkan datanya ke MDR. Dan waktu ini juga harus lebih besar dari waktu maksimum yang diperlukan untuk mengirimkan data dari peralatan input ke processor.
Pada saat t2 data telah siap di MDR, dan pengiriman semua sinyal dihentikan baik oleh processor maupun peralatannya. Dan processor dapat kembali membaca data atau yang lain.

Bagan dari sychronous bus sangat sederhana juga dalam desain interfacenya. Tetapi panjang clock yang digunakan harus diatur untuk mengakomodasi peralatan yang berkecepatan rendah dan mempunyai delay terlama. Apabila waktu yang digunakan lebih cepat atau terjadi error pengiriman data sedang waktu telah habis, maka akan terjadi kesalahan dalam pengiriman data.

Asynchronous Bus
Merupakan cara lain pengiriman data. Clock yang digunakan antara processor dan peralatan yang digunakan berbeda-beda. Agar tidak terjadi miscomunication digunakan sinyal ready dan accept sebagai pengganti sinyal clock.
Digunakan handshake protocol untuk proses pengiriman data sbb:

Processor akan megirimkan sinyal address dan mode operasi yang diinginkan. Disusul kemudian dikirimkan sinyal ready ke semua peralatan.
Peralatan yang mempunyai alamat sesuai dengan yang dikirimkan akan merespon dengan mengirimkan sinyal accept dan data yang diminta. Sesaat setelah sinyal accept dan data datang pada processor, maka processor akan menghentikan sinyal ready dan kemudian sinyal address.

Keterangan gambar :
t0 – Processor menempatkan address dan informasi mode operasi pada bus.
t1 – Processor mengeset ready line yang menginformasikan pada I/O bahwa alamat dan informasi mode operasi yang baru siap.
t2 – Peralatan dengan alamat yang dimaksud menerima informasi dari processor merespon dengan mengeset sinyal accept dan mengirimkan data yang diminta.

t3 – Sinyal accept yang datang pada processor mengindikasikan bahwa data telah tersedia di bus. Setelah data diterima maka pada saat itu juga processor mereset sinyal ready.
t4 – Processor menghentikan pengiriman sinyal address dan mode, kemudian menggantinya dengan adreess dan mode yang baru jika diperlukan.
t5 – Ketika peralatan input menerima perubahan sinyal ready dari 1 ke 0, beberapa saat kemudian maka ia menghentikan pengiriman datanya dan mereset sinyal accept. Hal ini menandai selesainya proses input transfer