UNIT MASUKAN DAN KELUARAN
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. Perhatikan
gambar yang menyajikan model generik modul I/O.
Gambar 6.1 Model generik dari suatu 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, seperti
terlihat pada gambar 6.3.
Gambar 6.3 Blok diagram struktur modul I/O
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.
Gambar 6.4 Pemakaian pengontrol interupsi
8559A pada 8086
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.
Gambar 6.5 Modul I/O 8255A
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.
PPI Intel 8255A dapat diprogram untuk
mengontrol berbagai peripheral sederhana.
Gambar 6.6
memperlihatkan contoh penggunaan 8255A untuk modul I/O Keyboard dan
display.
Gambar 6.6 Interface kayboard dan display dengan Intel 8255A
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.
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 instruksi yang terdiri dari
siklus fetch dan siklus eksekusi diperlihatkan pada gambar 3.3 berikut.
Gambar 3.3 Siklus instruksi dasar
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.
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. Karakteristik penting sistem memori disajikan dalam tabel 4.1 berikut
:
Tabel 4.1 Karakteristik penting sistem memori komputer
Karakteristik
|
Macam/
Keterangan
|
Lokasi
|
1.
CPU
2.
Internal (main)
3.
External (secondary)
|
Kapasitas
|
1.
Ukuran word
2.
Jumlah word
|
Satuan
transfer
|
1.
Word
2.
Block
|
Metode
akses
|
1.
Sequential access
2.
Direct access
3.
Random access
4.
Associative access
|
Kinerja
|
1.
Access time
2.
Cycle time
3.
Transfer rate
|
Tipe
fisik
|
1.
Semikonduktor
2.
Magnetik
|
Karakteristik
fisik
|
1.
Volatile/nonvolatile
2.
Erasable/nonerasable
|
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. Tabel 4.2 Tabel spesifikasi memori
Tipe
memori
|
Teknologi
|
Ukuran
|
Waktu
akses
|
Cache
Memory
|
semikonduktor
RAM
|
128 – 512
KB
|
10 ns
|
Memori
Utama
|
semikonduktor
RAM
|
4 – 128
MB
|
50 ns
|
Disk
magnetik
|
Hard
Disk
|
Gigabyte
|
10 ms,
10MB/det
|
Disk
Optik
|
CD-ROM
|
Gigabyte
|
300ms,
600KB/det
|
Pita
magnetik
|
Tape
|
100
MB
|
Det -mnt,
10MB/mnt
|
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.
Tabel 4.3 Tingkatan satuan memori
Symbol
|
|
Number of
bytes
|
|
Kilobytes
|
Kb
|
2e10
|
1024
|
Megabyte
|
Mb
|
2e20
|
1,048,576
|
Gigabyte
|
Gb
|
2e30
|
1,073,741,824
|
Terabyte
|
Tb
|
2e40
|
1,099,511,627,776
|
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.
1. 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.
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).
1. 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). Tabel 4.5 menyajikan jumlah bit
paritas yang harus ditambahkan dalam sistem kode Hamming.
Tabel 4.5 Penambahan bit cek paritas untuk koreksi kode Hamming
# Data
Bits
|
# Bit
Paritas SEC
|
# Bit
Paritas DEC
|
8
|
4
|
5
|
16
|
5
|
6
|
32
|
6
|
7
|
64
|
7
|
8
|
128
|
8
|
9
|
512
|
9
|
10
|
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.
Organisasi cache memori
Elemen
Rancangan
Walaupun terdapat
banyak implementasi cache, namun dari sisi organisasi maupun arsitekturnya
tidak banyak macamnya.
Tabel 4.6 Unsur – unsur rancangan cache memori
Unsur
|
Macam
|
Kapasitas
|
-
|
Ukuran
blok
|
-
|
Mapping
|
1.
Direct Mapping
2.
Assosiative Mapping
3.
Set Assosiative Mapping
|
Algoritma
pengganti
|
1.
Least recently used (LRU)
2.
First in first out (FIFO)
3.
Least frequently used (LFU)
4.
Random
|
Write
Policy
|
1.
Write Througth
2.
Write Back
3.
Write Once
|
Jumlah
Cache
|
1. Singe atau dua level
2. Unified
atau split
|
1. 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].
2. 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].
3. 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.
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).
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.
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.
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.
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
4. 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.
5. 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.
6.
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.