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. Beberapa bab sebelumnya
telah membahas CPU dan memori, sekarang akan kita jelaskan tentang peralatan
atau modul I/O pada bab ini.
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 sistem 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 :
1. Sebagai
piranti antarmuka ke CPU dan memori melalui bus sistem.
2. Sebagai
piranti antarmuka dengan peralatan peripheral lainnya dengan menggunakan link
data tertentu.
Sistem Masukan & Keluaran Komputer
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.
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 kontrol pemindahan data dari peripheral ke CPU melalui
sebuah modul I/O dapat meliputi langkah – langkah berikut ini :
1 Permintaan
dan pemeriksaan status perangkat dari CPU ke modul I/O.
2 Modul
I/O memberi jawaban atas permintaan CPU.
3 Apabila
perangkat eksternal telah siap untuk transfer data, maka CPU akan mengirimkan
perintah ke modul I/O.
4 Modul
I/O akan menerima paket data dengan panjang tertentu dari peripheral.
5 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 Busyatau
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.
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.
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.
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.
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.
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 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.
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.
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, misal 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:
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.
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 diprogram 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.
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.
Dalam melaksanakan transfer data
secara mandiri, DMA memerlukan pengambilalihan 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.
Perangkat Eksternal
Mesin komputer akan memiliki nilai
apabila bisa berinteraksi dengan dunia luar. Lebih dari itu, komputer tidak
akan berfungsi apabila tidak dapat berinteraksi dengan dunia luar. Ambil contoh
saja, bagaimana kita bisa menginstruksikan CPU untuk melakukan suatu operasi
apabila tidak ada keyboard. Bagaimana kita melihat hasil kerja sistem komputer
bila tidak ada monitor. Keyboard dan monitor tergolang dalam perangkat
eksternal komputer.
Perangkat eksternal atau lebih
umum disebut peripheral tersambung
dalam sistem CPU melalui perangat pengendalinya, yaitu modul I/O seperti telah
dijelaskan sebelumnya. Lihat kembali gambar 6.2. Secara umum perangkat
eksternal diklasifikasikan menjadi 3 katagori:
•
Human Readable,
yaitu perangkat yang berhubungan dengan manusia sebagai pengguna komputer.
Contohnya: monitor, keyboard, mouse, printer, joystick, disk drive.
•
Machine readable,
yaitu perangkat yang berhubungan dengan peralatan. Biasanya berupa modul sensor
dan tranduser untuk monitoring dan kontrol suatu peralatan atau sistem.
•
Communication,
yatu perangkat yang berhubungan dengan komunikasi jarak jauh. Misalnya: NIC dan
modem.
Pengklasifikasian
juga bisa berdasarkan arah datanya, yaitu perangkat output, perangkat input dan
kombinasi output-input. Contoh perangkat output: monitor, proyektor dan
printer.
Perangkat input misalnya:
keyboard, mouse, joystick, scanner, mark reader, bar code reader.
STRUKTUR CPU
Seperti telah dijelaskan pada bagian pengantar, bahwa
komputer digital terdiri dari sistem prosesor atau sering disebut CPU, memori –
memori, dan piranti masukan/keluaran yang saling berhubungan dan saling dukung
mewujudkan fungsi operasi komputer secara keseluruhan.
Komponen Utama CPU
CPU merupakan komponen terpenting
dari sistem komputer. CPU adalah komponen pengolah data berdasarkan instruksi –
instruksi yang diberikan kepadanya.
Dalam mewujudkan fungsi dan tugasnya, CPU tersusun atas
beberapa komponen sebagai bagian dari struktur CPU, seperti terlihat pada
gambar 3.1 dan struktur detail internal CPU terlihat pada gamber 3.2. CPU
tersusun atas beberapa komponen, yaitu :
•
Arithmetic and
Logic Unit (ALU), bertugas membentuk fungsi – fungsi pengolahan data
komputer. ALU sering disebut mesin bahasa
(machine language) karena bagian
ini mengerjakan instruksi – instruksi bahasa mesin yang diberikan padanya.
Seperti istilahnya, ALU terdiri dari dua bagian, yaitu unit arithmetika dan
unit logika boolean, yang masing – masing memiliki spesifikasi tugas
tersendiri.
•
Control Unit,
bertugas mengontrol operasi CPU dan secara keselurahan mengontrol komputer
sehingga terjadi sinkronisasi kerja antar komponen dalam menjalankan fungsi –
fungsi operasinya. Termasuk dalam tanggung jawab unit kontrol adalah mengambil
instruksi – instruksi dari memori utama dan menentukan jenis instruksi
tersebut.
•
Registers,
adalah media penyimpan internal CPU yang digunakan saat proses pengolahan data.
Memori ini bersifat sementara, biasanya digunakan untuk menyimpan data saat
diolah ataupun data untuk pengolahan selanjutnya.
• CPU Interconnections, adalah sistem
koneksi dan bus yang menghubungkan komponen internal CPU, yaitu ALU, unit
kontrol dan register – register dan juga dengan bus – bus eksternal CPU yang
menghubungkan dengan sistem lainnya, seperti memori utama, piranti
masukan/keluaran.
Gambar
3.1 Komponen internal CPU
Gambar
3.2 Struktur detail internal CPU
Fungsi CPU
Fungsi CPU adalah penjalankan program – program yang
disimpan dalam memori utama dengan cara mengambil instruksi – instruksi,
menguji instruksi tersebut dan mengeksekusinya satu persatu sesuai alur
perintah.
Untuk memahami fungsi CPU dan caranya berinteraksi dengan
komponen lain, perlu kita tinjau lebih jauh proses eksekusi program. Pandangan
paling sederhana proses eksekusi program adalah dengan mengambil pengolahan
instruksi yang terdiri dari dua langkah, yaitu : operasi pembacaan instruksi (fetch) dan operasi pelaksanaan instruksi
(execute).
Siklus Fetch - Eksekusi
Pada setiap siklus instruksi, CPU awalnya akan membaca
instruksi dari memori. Terdapat register dalam CPU yang berfungsi mengawasi dan
menghitung instruksi selanjutnya, yang disebut Program Counter (PC). PC akan menambah satu hitungannya setiap kali
CPU membaca instruksi.
Instruksi –
instruksi yang dibaca akan dibuat dalam register instruksi (IR). Instruksi –
instruksi ini dalam bentuk kode – kode binner yang dapat diinterpretasikan oleh
CPU kemudian dilakukan aksi yang diperlukan. Aksi – aksi ini dikelompokkan
menjadi empat katagori, yaitu :
•
CPU – Memori,
perpindahan data dari CPU ke memori dan sebaliknya.
•
CPU –I/O,
perpindahan data dari CPU ke modul I/O dan sebaliknya.
•
Pengolahan Data,
CPU membentuk sejumlah operasi aritmatika dan logika terhadap data.
•
Kontrol,
merupakan instruksi untuk pengontrolan fungsi atau kerja. Misalnya instruksi
pengubahan urusan eksekusi.
Perlu
diketahui bahwa siklus eksekusi untuk suatu instruksi dapat melibatkan lebih
dari sebuah referensi ke memori. Disamping itu juga, suatu instruksi dapat
menentukan suatu operasi I/O. Perhatikan gambar 3.4 yang merupakan detail
siklus operasi pada gambar 3.3, yaitu :
•
Instruction
Addess Calculation (IAC), yaitu mengkalkulasi atau menentukan alamat
instruksi berikutnya yang akan dieksekusi. Biasanya melibatkan penambahan
bilangan tetap ke alamat instruksi sebelumnya. Misalnya, bila panjang setiap
instruksi 16 bit padahal memori memiliki panjang 8 bit, maka tambahkan 2 ke
alamat sebelumnya.
•
Instruction Fetch
(IF), yaitu membaca atau pengambil instruksi dari lokasi memorinya ke
CPU.
•
Instruction
Operation Decoding (IOD), yaitu menganalisa instruksi untuk menentukan
jenis operasi yang akan dibentuk dan operand yang akan digunakan.
•
Operand Address
Calculation (OAC), yaitu menentukan alamat operand, hal ini dilakukan
apabila melibatkan referensi operand pada memori.
•
Operand Fetch
(OF), adalah mengambil operand dari memori atau dari modul I/O.
•
Data Operation
(DO), yaitu membentuk operasi yang diperintahkan dalam instruksi.
•
Operand store
(OS), yaitu menyimpan hasil eksekusi ke dalam memori.
Fungsi Interrupt
Fungsi interupsi adalah mekanisme penghentian atau
pengalihan pengolahan instruksi dalam CPU kepada routine interupsi. Hampir
semua modul (memori dan I/O) memiliki mekanisme yang dapat menginterupsi kerja
CPU.
Tujuan interupsi secara umum untuk menejemen pengeksekusian
routine instruksi agar efektif dan efisien antar CPU dan modul – modul I/O
maupun memori. Setiap komponen komputer dapat menjalankan tugasnya secara
bersamaan, tetapi kendali terletak pada CPU disamping itu kecepatan eksekusi
masing – masing modul berbeda sehingga dengan adanya fungsi interupsi ini dapat
sebagai sinkronisasi kerja antar modul. Macam – macam kelas sinyal interupsi :
•
Program,
yaitu interupsi yang dibangkitkan dengan beberapa kondisi yang terjadi pada
hasil eksekusi program. Contohnya: arimatika overflow, pembagian nol, oparasi
ilegal.
•
Timer, adalah
interupsi yang dibangkitkan pewaktuan dalam prosesor. Sinyal ini memungkinkan
sistem operasi menjalankan fungsi tertentu secara reguler.
•
I/O, sinyal
interupsi yang dibangkitkan oleh modul I/O sehubungan pemberitahuan kondisi
error dan penyelesaian suatu operasi.
•
Hardware failure,
adalah interupsi yang dibangkitkan oleh kegagalan daya atau kesalahan
paritas memori.
Dengan adanya mekanisme interupsi, prosesor dapat digunakan
untuk mengeksekusi instruksi – instruksi lain. Saat suatu modul telah selesai
menjalankan tugasnya dan siap menerima tugas berikutnya maka modul ini akan
mengirimkan permintaan interupsi ke prosesor. Kemudian prosesor akan
menghentikan eksekusi yang dijalankannya untuk menghandel routine interupsi.
Setelah program interupsi selesai maka prosesor akan melanjutkan eksekusi
programnya kembali. Saat sinyal interupsi diterima prosesor ada dua kemungkinan
tindakan, yaitu interupsi diterima/ditangguhkan dan interupsi ditolak. Apabila
interupsi ditangguhkan, prosesor akan melakukan hal – hal dibawah ini :
1. Prosesor
menangguhkan eksekusi program yang dijalankan dan menyimpan konteksnya.
Tindakan ini adalah menyimpan alamat instruksi berikutnya yang akan dieksekusi
dan data lain yang relevan.
2. Prosesor
menyetel program counter (PC) ke alamat awal routine interrupt handler.
Untuk sistem operasi yang kompleks sangat dimungkinkan
adanya interupsi ganda (multiple
interrupt). Misalnya suatu komputer akan menerima permintaan interupsi saat
proses pencetakan dengan printer selesai, disamping itu dimungkinkan dari
saluran komunikasi akan mengirimkan permintaan interupsi setiap kali data tiba.
Dalam hal ini prosesor harus menangani interupsi ganda.
Dapat diambil dua buah pendekatan untuk menangani interupsi
ganda ini. Pertama adalah menolak atau tidak mengizinkan interupsi lain saat
suatu interupsi ditangani prosesor. Kemudian setelah prosesor selesai menangani
suatu interupsi maka interupsi lain baru di tangani. Pendekatan ini disebut pengolahan interupsi berurutan / sekuensial.
Pendekatan ini cukup baik dan sederhana karena interupsi ditangani dalam ututan
yang cukup ketat. Kelemahan pendekatan ini adalah metode ini tidak
memperhitungkan prioritas interupsi. Pendekatan ini diperlihatkan pada gambar
3.6a.
Pendekatan kedua adalah dengan mendefinisikan prioritas bagi
interupsi dan interrupt handler mengizinkan
interupsi berprioritas lebih tinggi ditangani terlebih dahulu. Pedekatan ini
disebut pengolahan interupsi bersarang.
Sebagai contoh untuk mendekatan bersarang, misalnya suatu
sistem memiliki tiga perangkat I/O: printer, disk, dan saluran komunikasi,
masing – masing prioritasnya 2, 4 dan 5. Pada awal sistem melakukan pencetakan
dengan printer, saat itu terdapat pengiriman data pada saluran komunikasi
sehingga modul komunikasi meminta interupsi. Proses selanjutnya adalah
pengalihan eksekusi interupsi mudul komunikasi, sedangkan interupsi printer
ditangguhkan. Saat pengeksekusian modul komunikasi terjadi interupsi disk,
namun karena prioritasnya lebih rendah maka interupsi disk ditangguhkan.
Setelah interupsi modul komunikasi selesai akan dilanjutkan interupsi yang
memiliki prioritas lebih tinggi, yaitu disk. Bila interupsi disk selesai
dilanjutkan eksekusi interupsi printer. Selanjutnya dilanjutkan eksekusi
program utama.
MEMORI
Memori adalah bagian dari komputer tempat program – program
dan data – data disimpan. Bebarapa pakar komputer (terutama dari Inggris)
menggunakan istilah store atau storage untuk memori, meskipun kata storage sering digunakan untuk menunjuk
ke penyimpanan disket. Tanpa sebuah memori sebagai tempat untuk mendapatkan
informasi guna dibaca dan ditulis oleh prosesor maka tidak akan ada komputer –
komputer digital dengan sistem penyimpanan program.
Walaupun konsepnya sederhana, memori komputer memiliki aneka
ragam jenis, teknologi, organisasi, unjuk kerja dan harganya. Dalam bab ini
akan dibahas mengenai memori internal dan bab selanjutnya membahas memori
eksternal. Perlu dijelaskan sebelumnya perbedaan keduanya yang sebenarnya
fungsinya sama untuk penyimpanan program maupun data. Memori internal adalah memori yang dapat diakses langsung oleh
prosesor. Sebenarnya terdapat beberapa macam memori internal, yaitu register
yang terdapat di dalam prosesor, cache memori dan memori utama berada di luar
prosesor. Sedangkan memori eksternal adalah
memori yang diakses prosesor melalui piranti I/O, seperti disket dan
hardisk.
Operasi Sel Memori
Elemen dasar memori adalah sel
memori. Walaupun digunakan digunakan sejumlah teknologi elektronik, seluruh sel
memori memiliki sifat – sifat tertentu :
•
Sel memori memiliki dua keadaan stabil (atau
semi-stabil), yang dapat digunakan untuk merepresentasikan bilangan biner 1
atau 0.
•
Sel memori mempunyai kemampuan untuk ditulisi
(sedikitnya satu kali).
•
Sel memori mempunyai kemampuan untuk dibaca.
Gambar 4.1 menjelaskan operasi sel memori. Umumnya sel
memori mempunyai tiga terminal fungsi yang mampu membawa sinyal listrik.
Terminal select berfungsi memilih
operasi tulis atau baca. Untuk penulisan, terminal lainnya menyediakan sinyal
listrik yang men-set keadaan sel brnilai 1 atau 0, sedangkan untuk operasi
pembacaan, terminal ini digunakan sebagai keluaran.
Karakteristik Sistem Memori
Untuk mempelajari sistem memori
secara keseluruhan, harus mengetahui karakteristik – karakteristik kuncinya
Dilihat dari lokasi, memori dibedakan menjadi beberapa jenis, yaitu register,
memori internal dan memori eksternal. Register berada di dalam chip prosesor,
memori ini diakses langsung oleh prosesor dalam menjalankan operasinya.
Register digunakan sebagai memori sementara dalam perhitungan maupun pengolahan
data dalam prosesor. Memori internal adalah memori yang berada diluar chip
prosesor namun mengaksesannya langsung oleh prosesor. Memori internal dibedakan
menjadi memori utama dan cache memori. Memori eksternal dapat diakses oleh
prosesor melalui piranti I/O, memori ini dapat berupa disk maupun pita.
Karakteristik lainnya adalah kapasitas. Kapasitas memori internal maupun eksternal biasanya
dinyatakan dalam mentuk byte (1 byte
= 8 bit) atau word. Panjang word
umumnya 8, 16, 32 bit. Memori eksternal biasanya lebih besar kapasitasnya
daripada memori internal, hal ini disebabkan karena teknologi dan sifat
penggunaannya yang berbeda.
Karakteristik berikutnya adalah satuan tranfer. Bagi memori internal, satuan tranfer sama dengan
jumlah saluran data yang masuk ke dan keluar dari modul memori. Jumlah saluran
ini sering kali sama dengan panjang word, tapi dimungkinkan juga tidak sama.
Tiga konsep yang berhubungan dengan satuan transfer :
•
Word,
merupakan satuan “alami” organisasi memori. Ukuran word biasanya sama dengan
jumlah bit yang digunakan untuk representasi bilangan dan panjang
instruksi.
•
Addressable
units, pada sejumlah sistem, adressable units adalah word. Namun terdapat
sistem dengan pengalamatan pada tingkatan byte. Pada semua kasus hubungan
antara panjang A suatu alamat dan jumlah N adressable unit adalah 2A =N.
•
Unit of tranfer, adalah
jumlah bit yang dibaca atau dituliskan ke dalam memori pada suatu saat. Pada
memori eksternal, tranfer data biasanya lebih besar dari suatu word, yang
disebut dengan block.
Perbedaan tajam
yang terdapat pada sejumlah jenis memori adalah metode access-nya. Terdapat empat macam metode :
•
Sequential access,
memori diorganisasi menjadi unit – unit data yang disebut record. Akses harus dibuat dalam bentuk urutan linier yang
spesifik. Informasi mengalamatan yang disimpan dipakai untuk memisahkan record
– record dan untuk membantu proses pencarian. Terdapat shared read/write mechanism untuk penulisan/pembacaan memorinya.
Pita magnetik merupakan memori yang menggunakan metode sequential access.
•
Direct access, sama
sequential access terdapat shared
read/write mechanism. Setiap blok dan record memiliki alamat unik
berdasarkan lokasi fisiknya. Akses dilakukan langsung pada alamat memori. Disk
adalah memori direct access.
• Random access, setiap lokasi memori
dipilih secara random dan diakses serta dialamati secara langsung. Contohnya
adalah memori utama.
•
Associative
access, merupakan jenis random akses yang memungkinkan pembandingan lokasi
bit yang diinginkan untuk pencocokan. Jadi data dicari berdasarkan isinya bukan
alamatnya dalam memori. Contoh memori ini adalah cache memori yang akan dibahas
di akhir bab ini.
Berdasarkan
karakteristik unjuk kerja, memiliki tiga parameter utama pengukuran unjuk
kerja, yaitu :
•
Access time,
bagi random access memory, waktu akses adalah waktu yang dibutuhkan untuk
melakukan operasi baca atau tulis. Sedangkan untuk memori non-random akses merupakan
waktu yang dibutuhkan dalam melakukan mekanisme baca atau tulis pada lokasi
tertentu.
•
Memory cycle
time, konsep ini digunakan pada random access memory dan terdiri dari
access time ditambah dengan waktu yang diperlukan transient agar hilang pada saluran
sinyal.
•
Transfer rate, adalah
kecepatan data transfer ke unit memori atau dari unit memori. Pada random
access memory sama dengan 1/(cycle time).
Jenis tipe fisik memori
yang digunakan saat ini adalah memori semikonduktor dengan teknologi VLSI dan
memori permukaan magnetik seperti yang digunakan pada disk dan pita
magnetik.
Berdasarkan karakteristik fisik, media penyimpanan
dibedakan menjadi volatile dan nonvolatile, serta erasable dan nonerasable.
Pada volatile memory, informasi akan
hilang apabila daya listriknya dimatikan, sedangkan non-volatile memory tidak hilang walau daya listriknya hilang.
Memori permukaan magnetik adalah contoh no-nvolatile
memory, sedangkan semikonduktor ada yang volatile dan non-volatile.
Ada jenis memori semikonduktor yang tidak bisa dihapus kecuali dengan
menghancurkan unit storage-nya,
memori ini dikenal dengan ROM (Read Only
Memory).
Keandalan Memori
Untuk memperoleh keandalan sistem
ada tiga pertanyaan yang diajukan: Berapa banyak ? Berapa cepat? Berapa
mahal?
Pertanyaan berapa banyak adalah sesuatu yang sulit dijawab,
karena berapapun kapasitas memori tentu aplikasi akan menggunakannya. Jawaban
pertanyaan berapa cepat adalah memori harus mempu mengikuti kecepatan CPU
sehingga terjadi sinkronisasi kerja antar CPU dan memori tanpa adanya waktu
tunggu karena komponen lain belum selesai prosesnya. Mengenai harga, sangatlah
relatif. Bagi produsen selalu mencari harga produksi paling murah tanpa
mengorbankan kualitasnya untuk memiliki daya saing di pasaran.
Hubungan
harga, kapasitas dan waktu akses adalah :
• Semakin
kecil waktu akses, semakin besar harga per bitnya.
• Semakin
besar kapasitas, semakin kecil harga per bitnya.
• Semakin
besar kapasitas, semakin besar waktu aksesnya.
Dilema yang dihadapi para perancang adalah keinginan
menerapkan teknologi untuk kapasitas memori yang besar karena harga per bit
yang murah namun hal itu dibatasi oleh teknologi dalam memperoleh waktu akses
yang cepat. Salah satu pengorganisasian masalah ini adalah menggunakan hirarki memori. Seperti terlihat pada
gambar 4.2, bahwa semakin menurunnya hirarki maka hal berikut akan terjadi :
• Penurunan
harga/bit
• Peningkatan
kapasitas
• Peningkatan
waktu akses
• Penurunan
frekuensi akses memori oleh CPU.
Kunci keberhasilan hirarki ini pada
penurunan frekuensi aksesnya. Semakin lambat memori maka keperluan CPU untuk
mengaksesnya semakin sedikit. Secara keseluruhan sistem komputer akan tetap
cepat namun kebutuhan kapasitas memori besar terpenuhi.
Satuan Memori
Satuan pokok memori adalah digit biner, yang disebut bit. Suatu bit dapat berisi sebuah angka
0 atau 1. Ini adalah satuan yang paling sederhana. Memori juga dinyatakan dalam
byte (1 byte = 8 bit). Kumpulan byte dinyatakan dalam word. Panjang word yang umum adalah 8, 16, dan 32 bit.
Memori Utama Semikonduktor
Pada komputer lama, bentuk umum random access memory untuk
memori utama adalah sebuah piringan ferromagnetik berlubang yang dikenal
sebagai core, istilah yang tetap
dipertahankan hingga saat ini.
Jenis Memori Random Akses
Semua jenis memori yang dibahas pada bagian ini adalah
berjenis random akses, yaitu data secara langsung diakses melalui logik
pengalamatan wired-in. Tabel 4.4
adalah daftar jenis memori semikonduktor utama.
Hal yang membedakan karakteristik RAM (Random Access Memory) adalah dimungkinkannya pembacaan dan
penulisan data ke memori secara cepat dan mudah. Aspek lain adalah RAM bersifat
volatile, sehingga RAM hanya
menyimpan data sementara. Teknologi yang berkembang saat ini adalah statik dan
dinamik. RAM dinamik disusun oleh sel
– sel yang menyimpan data sebagai muatan listrik pada kapasitor. Karena
kapasitor memiliki kecenderungan alami untuk mengosongkan muatan, maka RAM
dinamik memerlukan pengisian muatan listrik secara periodik untuk memelihara
penyimpanan data. Pada RAM statik,
nilai biner disimpan dengan menggunakan konfigurasi gate logika flipflop
tradisional. RAM statik akan menyimpan data selama ada daya listriknya.
RAM statik maupun dinamik adalah volatile, tetapi RAM dinamik lebih sederhana dan rapat sehingga
lebih murah. RAM dinamik lebih cocok untuk kapasitas memori besar, namun RAM
statik umumnya lebih cepat.
Read only memory (ROM)
sangat berbeda dengan RAM, seperti namanya, ROM berisi pola data permanen yang
tidak dapat diubah. Data yang tidak bisa diubah menimbulkan keuntungan dan juga
kerugian. Keuntungannya untuk data yang permanen dan sering digunakan pada
sistem operasi maupun sistem perangkat keras akan aman diletakkan dalam ROM.
Kerugiaannya apabila ada kesalahan data atau adanya perubahan data sehingga perlu
penyisipan – penyisipan.
Kerugian tersebut bisa diantisipasi dengan jenis programmable ROM, disingkat PROM. ROM
dan PROM bersifat non-volatile.
Proses penulisan PROm secara elektris dengan peralatan khusus.
Variasi ROM lainnya adalah read mostly memory, yang sangat berguna untuk aplikasi operasi
pembacaan jauh lebih sering daripada operasi penulisan. Terdapat tiga macam
jenis, yaitu: EPROM, EEPROM dan flash
memory.
EEPROM (electrically
erasable programmable read only memory) merupakan memori yang dapat
ditulisi kapan saja tanpa menghapus isi sebelumnya. EEPROM menggabungkan
kelebihan non-volatile dengan
fleksibilitas dapat di-update.
Bentuk memori semikonduktor terbaru adalah flash memory. Memori ini dikenalkan
tahun 1980-an dengan keunggulan pada kecepatan penulisan programnya. Flash memory menggunakan teknologi
penghapusan dan penulisan elektrik. Seperti halnya EPROM, flash memory hanya membutuhkan sebuah transistor per byte sehingga
dapat diperoleh kepadatan tinggi.
4.5.2 Pengemasan (Packging)
Gambar 4.3a menunjukkan sebuah contoh kemasan EPROM, yang
merupakan keping 8 Mbit yang diorganisasi sebagai 1Mx8. Dalam kasus ini,
organisasi dianggap sebagai kemasan satu word per keping. Kemasan terdiri dari
32 pin, yang merupakan salah satu ukuran kemasan keping standar. Pin – pin
tersebut mendukung saluran – saluran sinyal beikut ini :
•
Alamat word yang sedang diakses. Untuk 1M word,
diperlukan sejumlah 20 buah (220 = 1M).
•
Data yang akan dibaca, terdiri dari 8 saluran (D0
–D7)
•
Catu daya keping adalah Vcc
•
Pin grounding Vss
•
Pin chip enable (CE). Karena mungkin terdapat lebih
dari satu keping memori yang terhubung pada bus yang sama maka pin CE digunakan
untuk mengindikasikan valid atau tidaknya pin ini. Pin CE diaktifkan oleh logik
yang terhubung dengan bit berorde tinggi bus alamat ( diatas A19)
•
Tegangan program (Vpp).
Konfigurasi
pin DRAM yang umum ditunjukkan gambar 4.3b, untuk keping 16 Mbit yang
diorganisasikan sebagai 4M x 4. Terdapat sejumlah perbedaan dengan keping ROM,
karena ada operasi tulis maka pin – pin data merupakan input/output yang
dikendalikan oleh WE (write enable)
dan OE (output enable).
Koreksi Error
Dalam melaksanakan fungsi penyimpanan, memori semikonduktor
dimungkinkan mengalami kesalahan. Baik kesalahan berat yang biasanya merupakan
kerusakan fisik memori maupun kesalahan ringan yang berhubungan data yang
disimpan. Kesalahan ringan dapat dikoreksi kembali. Untuk mengadakan koreksi
kesalahan data yang disimpan diperlukan dua mekanisme, yaitu mekanisme pendeteksian kesalahan dan mekanisme perbaikan kesalahan.
Mekanisme pendeteksian kesalahan dengan menambahkan data
word (D) dengan suatu kode, biasanya bit cek paritas (C). Sehingga data yang
disimpan memiliki panjang D + C. Kesalahan akan diketahui dengan menganalisa
data dan bit paritas tersebut. Mekanisme perbaikan kesalahan yang paling
sederhana adalah kode Hamming. Metode
ini diciptakan Richard Hamming di Bell Lab pada tahun 1950.
Lalu bagaimana dengan word lebih dari 4 bit ? Ada cara yang
mudah yang akan diterangkan berikut. Sebelumnya perlu diketahui jumlah bit
paritas yang harus ditambahkan untuk sejumlah bit word. Contoh sebelumnya
adalah koreksi kesalahan untuk kesalahan tunggal yang sering disebut single error correcting (SEC). Jumlah
bit paritas yang harus ditambahkan lain pada double error correcting (DEC).
Cache Memori
Cache memori difungsikan mempercepat kerja memori sehingga
mendekati kecepatan prosesor. Konsepnya dijelaskan pada gambar 4.6 dan gambar
4.7. Dalam organisasi komputer, memori utama lebih besar kapasitasnya namun
lambat operasinya, sedangkan cache memori berukuran kecil namun lebih cepat.
Cache memori berisi salinan memori utama.
Pada saat CPU membaca sebuah word memori, maka dilakukan
pemeriksaan untuk mengetahui apakah word tersebut berada dalam cache memori.
Bila ada dalam cache memori maka dilakukan pengiriman ke CPU, bila tidak
dijumpai maka dicari dalam memori utama, selanjutnya blok yang berisi sejumlah
word tersebut dikirim ke cache memori dan word yang diminta CPU dikirimkan ke
CPU dari cache memori. Karena fenomena lokalitas referensi, ketika blok data
diberikan ke dalam cache memori, terdapat kemungkinan bahwa word-word
berikutnya yang berada dalam satu blok akan diakses oleh CPU. Konsep ini yang
menjadikan kinerja memori lebih baik.
Sehingga
dapat disimpulkan bahwa kerja cache adalah antisipasi terhadap permintaan data
memori yang akan digunakan CPU. Apabila data diambil langsung dari memori utama
bahkan memori eksternal akan memakan waktu lama yang menyebabkan status tunggu
pada prosesor.
Ukuran cache memori adalah kecil, semakin besar kapasitasnya
maka akan memperlambat proses operasi cache memori itu sendiri, disamping harga
cache memori yang sangat mahal.
Elemen Rancangan
Walaupun terdapat banyak
implementasi cache, namun dari sisi organisasi maupun arsitekturnya tidak
banyak macamnya.
Kapasitas Cache
Menentukan ukuran memori cache sangatlah penting untuk
mendongkrak kinerja komputer. Dari segi harga cache sangatlah mahal tidak
seperti memori utama. Semakin besar kapasitas cache tidak berarti semakin cepat
prosesnya, dengan ukuran besar akan terlalu banya gate pengalamatannya sehingga
akan memperlambat proses.
Kita bisa melihat beberapa merek prosesor di pasaran
beberapa waktu lalu. AMD mengeluarkan prosesor K5 dan K6 dengan cache yang
besar (1MB) tetapi kinerjanya tidak bagus. Kemudian Intel pernah mengeluarkan
prosesor tanpa cache untuk alasan harga yang murah, yaitu seri Intel Celeron
pada tahun 1998-an hasil kinerjanya sangat buruk terutama untuk operasi data
besar, floating point, 3D. Intel Celeron versi berikutnya sudah ditambah cache
sekitar 128KB.
Lalu berapa idealnya kapasitas
cache? Sejumlah penelitian telah menganjurkan bahwa ukuran cache antara 1KB dan
512KB akan lebih optimum [STA96].
Ukuran Blok
Elemen rancangan yang harus diperhatikan lagi adalah ukuran
blok. Telah dijelaskan adanya sifat lokalitas referensi maka nilai ukuran blok
sangatlah penting. Apabila blok berukuran besar ditransfer ke cache akan
menyebabkan hit ratio mengalami penurunan karena banyaknya data yang dikirim
disekitar referensi. Tetapi apabila terlalu kecil, dimungkinkan memori yang
akan dibutuhkan CPU tidak tercakup. Apabila blok berukuran besar ditransfer ke
cache, maka akan terjadi :
1.Blok – blok yang berukuran lebih
besar mengurangi jumlah blok yang menempati cache. Karena isi cache sebelumnya
akan ditindih.
2.Dengan meningkatnya ukuran blok maka
jarak setiap word tambahan menjadi lebih jauh dari word yang diminta, sehingga
menjadi lebih kecil kemungkinannya digunakan cepat.
Hubungan antara ukuran blok dan hit ratio sangat rumit untuk
dirumuskan, tergantung pada karakteristik lokalitas programnya dan tidak
terdapat nilai optimum yang pasti telah ditemukan. Ukuran antara 4 hingga 8
satuan yang dapat dialamati (word atau byte) cukup beralasan untuk mendekati
nilai optimum [STA96].
Fungsi Pemetaan (Mapping)
Telah kita
ketahui bahwa cache mempunyai kapasitas yang kecil dibandingkan memori utama.
Sehingga diperlukan aturan blok – blok mana yang diletakkan dalam cache.
Terdapat tiga metode, yaitu pemetaan langsung, pemetaan asosiatif, dan pemetaan
asosiatif set.
Pemetaan Langsung
Pemetaan langsung adalah teknik yang
paling sederhana, yaitu teknik ini memetakan blok memori utama hanya ke sebuah
saluran cache saja. Gambar 4.8 menjelaskan mekanisme pemetaan langsung.
i = j modulus m dan m = 2r dimana :
i = nomer saluran cache j = nomer blok memori utama
m = jumlah saluran yang
terdapat dalam cache
Fungsi pemetaan
diimplementasikan dengan menggunakan alamat, yang terdiri dari tiga field (tag,
line, word), lihat gambar 4.8.
w = word, adalah bit paling
kurang berarti yang mengidentifikasikan word atau byte unik dalam blok memori
utama.
s = byte
sisa word yang menspesifikasi salah satu dari 2S blok memori utama. Cache logik
menginterpretasikan bit – bit S sebagai suatu tag s – r bit (bagian paling
berarti dalam alamat) dan field saluran r bit.
Jadi
dalam metode ini pemetaan adalah bagian alamat blok memori utama sebagai nomer
saluran cache. Ketika suatu blok data sedang diakses atau dibaca terhadap
saluran yang diberikan, maka perlu memberikan tag bagi data untuk membedakannya
dengan blok – blok lain yang dapat sesuai dengan saluran tersebut.
Perlu diketahui bahwa tidak ada dua
buah blok yang dipetakan ke nomer saluran uang sama memiliki tag sama. Sehingga
000000, 010000, …., FF0000 masing – masing memiliki tag 00, 01, …., FF.
Teknik pemetaan ini sederhana dan mudah diimplementasikan,
namun kelemahannya adalah terdapat lokasi cache yang tetap bagi sembarang blok
– blok yang diketahui. Dengan demikian, apabila suatu program berulang – ulang
melakukan word referensi dari dua blok yang berbeda memetakan saluran yang sama
maka blok – blok itu secara terus – menerus akan di-swap ke dalam cache
sehingga hit rasionya akan rendah.
Pemetaan Assosiatif
Pemetaan asosiatif mengatasi kekurangan pemetaan langsung dengan cara
setiap blok memori utama dapat dimuat ke sembarang saluran cache. Alamat memori
utama diinterpretasikan dalam field tag dan field word oleh kontrol logika
cache. Tag secara unik mengidentifikasi sebuah blok memori utama.
Mekanisme untuk mengetahui suatu blok dalam cache dengan
memeriksa setiap tag saluran cache oleh kontrol logika cache. Dengan pemetaan
ini didapat fleksibilitas dalam penggantian blok baru yang ditempatkan dalam
cache. Algoritma penggantian dirancang untuk memaksimalkan hit ratio, yang pada
pemetaan langsung terdapat kelemahan dalam bagian ini.
Kekurangan
pemetaan asosiatif adalah kompleksitas rangkaian sehingga mahal secara
ekonomi.
Pemetaan Assosiatif Set
Pemetaan asosiatif
set menggabungkan kelebihan yang ada pada pemetaan langsung dan pemetaan
asosiatif. Memori cache dibagi dalam bentuk set – set.
Pemetaan asosiatif set prinsipnya adalah penggabungan kedua
pemetaan sebelumnya. Alamat memori utama diinterpretasikan dalam tiga field,
yaitu: field tag, field set, dan field word. Hal ini mirip dalam pemetaan
langsung. Setiap blok memori utama dapat dimuat dalam sembarang saluran cache.
Gambar 4.11 menjelaskan organisasi pemetaan asosiatif set.
Dalam pemetaan asosiatif set,
cache dibagi dalam v buah set, yang
masing –masing terdiri dari k saluran. Hubungan yang terjadi adalah :
m = v x k i = j modulus v dan v = 2d dimana :
i = nomer set cache j = nomer blok memori utama m = jumlah saluran pada cache
menjelaskan contoh yang menggunakan pemetaan asosiatif set
dengan dua saluran pada masing-masing set, yang dikenal sebagai asosiatif set
dua arah. Nomor set mengidentifikasi set unik dua saluran di dalam cache. Nomor
set ini juga memberikan jumlah blok di dalam memori utama, modulus 2. Jumlah
blok menentukan pemetaan blok terhadap saluran. Sehingga blok-blok 000000,
00A000,…,FF1000 pada memori utama dipetakan terhadap set 0 cache. Sembarang
blok tersebut dapat dimuatkan ke salah satu dari kedua saluran di dalam set.
Perlu dicatat bahwa tidak terdapat dua blok yang memetakannya terhadap set
cache yang sama memiliki nomor tag yang sama. Untuk operasi read, nomor set dipakai untuk menentukan
set dua saluran yang akan diuji. Kedua saluran di dalam set diuji untuk
mendapatkan yang cocok dengan nomor tag alamat yang akan diakses.
Penggunaan dua saluran per set ( v = m/2, k = 2), merupakan
organisasi asosiatif set yang paling umum. Teknik ini sangat meningkatkan hit
ratio dibandingkan dengan pemetaan langsung. Asosiatif set empat arah (v = m/4, k = 4) memberikan peningkatan tambahan yang layak dengan penambahan
harga yang relatif rendah. Peningkatan lebih lanjut jumlah saluran per set
hanya memiliki efek yang sedikit.
Algoritma Penggantian
Yang dimaksud Algoritma Penggantian adalah suatu mekanisme
pergantian blok – blok dalam memori cache yang lama dengan data baru. Dalam
pemetaan langsung tidak diperlukan algoritma ini, namun dalam pemetaan
asosiatif dan asosiatif set, algoritma ini mempunyai peranan penting untuk
meningkatkan kinerja cache memori.
Banyak algoritma penggantian yang telah dikembangkan, namun
dalam buku ini akan dijelaskan algoritma yang umum digunakan saja. Algoritma
yang paling efektif adalah Least Recently
Used (LRU), yaitu mengganti blok data yang terlama berada dalam cache dan
tidak memiliki referensi. Algoritma lainnya adalah First In First Out(FIFO), yaitu mengganti blok data yang awal
masuk. Kemudian Least Frequently Used (LFU)
adalah mengganti blok data yang mempunyai referensi paling sedikit. Teknik lain
adalah algoritma Random, yaitu penggantian
tidak berdasakan pemakaian datanya, melainkan berdasar slot dari beberapa slot
kandidat secara acak.
Write Policy
Apabila suatu data telah diletakkan pada cache maka sebelum
ada penggantian harus dicek apakah data tersebut telah mengalami perubahan.
Apabila telah berubah maka data pada memori utama harus di-update. Masalah
penulisan ini sangat kompleks, apalagi memori utama dapat diakses langsung oleh
modul I/O, yang memungkinkan data pada memori utama berubah, lalu bagaimana
dengan data yang telah dikirim pada cache? Tentunya perbedaan ini menjadikan
data tidak valid.
Teknik yang dikenalkan diantaranya, write through, yaitu operasi penulisan melibatkan data pada memori
utama dan sekaligus pada cache memori sehingga data selalu valid. Kekurangan
teknik ini adalah menjadikan lalu lintas data ke memori utama dan cache sangat
tinggi sehingga mengurangi kinerja sistem, bahkan bisa terjadi hang.
Teknik lainnya adalah write
back, yaitu teknik meminimasi penulisan dengan cara penulisan pada cache
saja. Pada saat akan terjadi penggantian blok data cache maka baru diadakan
penulisan pada memori utama. Masalah yang timbul adalah manakala data di memori
utama belum di-update telah diakses modul I/O sehingga data di memori utama
tidak valid.
Penggunaan multi cache terutama untuk multi prosesor adan
menjumpai masalah yang lebih kompleks. Masalah validasi data tidak hanya antara
cache dan memori utama saja, namun antar cache juga harus diperhatikan.
Pendekatan penyelesaian masalah yang dapat dilakukan adalah dengan :
•
Bus Watching with
Write Through, yaitu setiap cache controller akan memonitoring bus alamat
untuk mendeteksi adanya operasi tulis. Apabila ada operasi tulis di alamat yang
datanya digunakan bersama maka cache controller akan menginvalidasi data
cache-nya.
•
Hardware
Transparency, yaitu adanya perangkat keras tambahan yang menjamin semua
updating data memori utama melalui cache direfleksikan pada seluruh cache yang
ada.
•
Non Cacheable
Memory, yaitu hanya bagian memori utama tertentu yang digunakan secara
bersama. Apabila ada mengaksesan data yang tidak di share merupakan kegagalan
cache.
Jumlah Cache
Terdapat dua macam letak cache. Berada dalam keping prosesor
yang disebut on chip cache atau cache
internal. Kemudian berada di luar chip prosesor yang disebut off chip cache atau cache
eksternal.
Cache internal diletakkan dalam prosesor sehingga tidak
memerlukan bus eksternal, akibatnya waktu aksesnya akan cepat sekali, apalagi
panjang lintasan internal bus prosesor sangat pendek untuk mengakses cache
internal. Cache internal selanjutnya disebut cache tingkat 1 (L1).
Cache eksternal berada
diluar keping chip prosesor yang diakses melalui bus eksternal.
Pertanyaannya,
apakah masih diperlukan cache eksternal apabila telah ada cache internal? Dari
pengalaman, masih diperlukan untuk mengantisipasi permintaan akses alamat yang
belum tercakup dalam cache internal. Cache eksternal selanjutnya disebut cache tingkat 2 (L2).
Selanjutnya terdapat perkembangan
untuk memisah cache data dan cache instruksi yang disebut unified cache. Keuntungan unified
cache adalah :
•
Unified cache memiliki hit rate yang tinggi karena
telah dibedakan antara informasi data dan informasi instruksi.
•
Hanya sebuah cache saja yang perlu dirancang dan
diimplementasikan.
Namun terdapat kecenderungan untuk menggunakan split cache, terutama pada mesin – mesin
superscalar seperti Pentium dan PowerPC yang menekankan pada paralel proses dan
perkiraan – perkiraan eksekusi yang akan terjadi. Kelebihan utama split cache adalah mengurangi persaingan
antara prosesor instruksi dan unit eksekusi untuk mendapatkan cache, yang mana
hal ini sangat utama bagi perancangan prosesor – prosesor pipelining.