Você está na página 1de 262

i

FMIPA UNNES

ARSITEKTUR
KOMPUTER

ii
Much Aziz Muslim
Budi Prasetiyo

iii
ARSITEKTUR KOMPUTER

Penulis : Much Aziz Muslim


Budi Prasetiyo

Edisi Pertama
Cetakan Pertama, 2015

Hak Cipta © 2015 pada penulis

FMIPA UNNES
Kampus Sekaran Gunungpati Semarang
Telp. : (024) 8508112
Fax : (024) 8508112
Email : mipa@unnes. ac. id

Muslim, Much Aziz; Prasetiyo Budi


ARSITEKTUR KOMPUTER/Much Aziz Muslim; Budi Prasetiyo
-Edisi Pertama – Semarang; FMIPA UNNES, 2015
ix + 189 hlm, 1 Jil. : 13 x 19 cm

ISBN : 978-602-10-3409-5

1. Komputer I. Judul

iv
KATA PENGANTAR

P
uji syukur penulis panjatkan ke hadirat Allah SWT, karena
berkat rahmat-Nya penulis bisa menyelesaikan buku yang
berjudul Arsitektur Komputer. Buku ini ditujukan bagi siapapun
yang ingin mempelajari tentang arsitektur komputer dan seluk beluknya.

Kami mengucapkan terima kasih kepada semua pihak yang telah


membantu sehingga buku ini dapat diselesaikan. Buku ini masih jauh dari
sempurna, oleh karena itu, kritik dan saran yang bersifat membangun sangat
kami harapkan demi sempurnanya buku ini.

Semoga buku ini memberikan informasi bagi masyarakat dan


bermanfaat untuk pengembangan wawasan dan peningkatan ilmu
pengetahuan bagi kita semua.

Semarang, Februari 2015

v
vi
DAFTAR ISI
KATA PENGANTAR iii
DAFTAR ISI v

BAB 1 PENGENALAN SISTEM KOMPUTER 1


ARSTEKTUR KOMPUTER 6
BAHASA MESIN 8
PERBENDAHARAAN INTRUKSI 9
TRANSFER DATA 12
ARITMATIKA / LOGIKA 13
KONTROL 13
DAMPAK PERKEMBANGAN TEKNOLOGI INFORMASI 15
PENGUKURAN KINERJA KOMPUTER 20

BAB 2 ARSITEKTUR SET INTRUKSI DAN DESAIN 25


LOKASI MEMORI DAN OPERASI 25
TEKNIK PENGALAMATAN 28
INTRUKSI 35

BAB 3 ASSEMBLY LANGUAGE PROGRAMMING 41

BAB 4 ALU ARITMATIC LOGIC UNIT 57


ALU (ARITHEMTIC AND LOGIC UNIT) 57
KONVERSI BILANGAN 58
PROSES ALU PADA CPU 61

BAB 5 PROCESSING UNIT DESIGN 65


PERANGKAT PEMROSES (CPU) 65
UNIT KENDALI (CONTROL UNIT) 66
ARITMETIC LOGIC UNIT (ALU) 68
KONSTRUKSI ALU 71
REGISTER 73
EKSEKUSI INSTRUKSI 79
DATA PATH 80

vii
BAB 6 DESAIN SISTEM MEMORI 83
HIRARKI MEMORI 84

BAB 7 DESAIN SISTEM MEMORY 103


MEMORI UTAMA 103
ALAMAT-ALAMAT MEMORI 106
REGISTER 107
ORGANISASI MEMORI 108
RAM DAN ROM 108
HIRARKI MEMORI 115

BAB 8 DESIGN DAN ORGANISASI INPUT-OUTPUT 119


PENDAHULUAN 119
MEMPROGRAMKAN I/O 123
BUS 130
INPUT-OUTPUT INTERFACE 135

BAB 9 PIPELINING 139


KONSEP UMUM 139
DUA-TAHAP INSTRUKSI PIPELINE 141
PIPELINE STALL 145
INSTRUCTION LEVEL PARALLELISM 145
DASAR DASAR PIPELINE PADA PROSESOR DLX 146
KLASIFIKASI HAZARD DATA 147
PENJADWALAN INSTRUKSI UNTUK MENCEGAH HAZARD
DATA 148
HAZARD KENDALI 150

BAB 10 REDUCED INSTRUCTIONS SET COMPUTER 153


PENDAHULUAN 153
SEJARAH (EVOLUTION CYCLE) RISC/CISC 154
PRINSIP DARI DESAIN RISC 156
OVERLAPPED DARI WINDOWS REGISTER 160
RISC VS CISC 161

viii
BAB 11 MULTIPROCESSOR 169
PENGERTIAN MULTIPROCESSOR 169
JENIS - JENIS MULTIPROCESSING 171
INTERKONEKSI JARINGAN 178
KEUNGGULAN MULTIPROCESSOR 181
Parallel Processing 182

DAFTAR PUSTAKA 183


TENTANG PENULIS 185

ix
x
BAB 1
PENGENALAN
SISTEM
KOMPUTER

Komputer pertama adalah manusia?

Pada awalnya komputer elektronik dan komputer


matematis pada masa awal diberi nama komputer
adalah karena komputer digunakan untuk
mengerjakan pekerjaan manusia pada zaman dulu.
Komputer sebenarnya adalah nama jabatan pekerjaan
yang sebagian besar di lakukan perempuan pada
masa itu yakni tugasnya adalah melakukan
perhitungan. Perhitungan yang dilakukan seperti
menghitung tabel navigasi, menghitung peta ombak,
menghitung posisi planet yang digunakan untuk
menentukan kalender astronomi. Jam demi jam, hari
demi hari tidak ada pekerjaan lain selain menghitung.
Lama lama mereka merasakan bosan, Maka dari itu
selama ratusan tahun para ilmuwan berusaha
mencari alat untuk membantu manusia dalam
berhitung.
1
ABRACUS, merupakan alat pertama yang
berfungsi untuk membantu manusia dalam
melakukan perhitungan. Seorang abracus
professional mampu menghitung penjumlahan dan
pengurangan sama cepatnya dengan kalkulator pada
zaman sekarang, tentunya untuk perkalian dan
pembagian membutuhkan waktu yang lebih lama.
Abacus tertua di gunakan di Babylonia pada tahun
300 SM. Abacus tertua berbentuk meja dengan
cekungan yang memanjang yang di dalam cekungan
tersebut diletakkan bola bola kayu untuk membantu
pengingatan angka yang sedang dihitung. Abacus
yang lebih modern menggunakan batang batang
silinder yang kecil memanjang yang diisikan
semacam bola dengan lubang ditengahnya. Abacus
modern ini merupakan alat hitung yang banyak
digunakan pada saat itu, mungkin dulu waktu SD
masih mengggukanan Abacus yang di Indonesia
dikenal dengan nama “Sempoa”.

Kemudian pada tahun 1617 seorang Skotlandia


bernama John Napier menemukan Logaritma, yakni
teknologi yang memungkinkan perkalian dan
pembagian dilakukan secara lebih mudah. John
Napier menemukan tabel tabel alternatif logaritma
dengan menciptakan batang-batang kayu ivory yang

2
dipahat dan sekarang disebut Napier Bones (tulang-
tulang Napier).

Kemudian Gottfired Wilhelm Leibniz dari Jerman


menemukan perhitungan empat fungsi yang disebut
stepped reckoner, empat fungsi tersebut meliputi
operasi penjumlahan, pengurangan, perkalian dan
pembagian. Pada alatnya sendiri Gottfired
menggunakan drum seruling yang dilingkarkan
seruling seruling kecil yang menyerupai 10 anak
tangga. Pasa tahun 1936 seseorang dari Jerman
bernama Kornad Zuse menciptakan kalkulator
mekanis yang disebut Z1, penciptaan Z1 bertujuan
untuk mencari terobosan teknologi mengenai floating
point aritmatika, penyimpanan dan control unit, tetapi
ketiga terobosan itu tidak sepenuhnya diterapkan di
Z1, Z1 digunakan untuk sensus di AS.

Akhirnya pada tahun 1939 Zuse menciptakan Z2


yang dapat dikendalikan oleh fixed point aritmatika
yang secara penuh dikendalikan secara mekanis.
Pengembangan dari Z2 yakni Z3 di ciptakan Zuse
pada tahun 1941, komputer ini memiliki konsep yang
sama dengan komputer modern sekarang seperti
adanya floating point, penyimpanan, control dan
input-output. Kekurangan dari Z3 yaitu belum bisa
menyimpan program ke dalam memori secara
bersamaan dalam bentuk data, karena kapasitas
3
penyimpanan pada Z3 hanya 64 kata, hal ini sangat
berat apabila untuk menyimpan program-program,
mangkanya zuse menggunakan Z3 hanya untuk
menyimpan angka dan nilai.

Setelah penciptaan Z3, Zuse menciptakan Z4 di


divisi matematika terapan Zurich Institut Federal dan
digunakan disana sampai tahun 1955, Z4 memiliki
kapasitas penyimpanan 1. 024 kata dan tidak lagi
menggunakan film melainkan sudah menggunakan
disket. Pada tahun 1944 IBM bekerja sama dengan
Harvard University dengan menciptakan komputer
Mark I, Mark I adalah komputer pertama yang dibuat
di Amerika dan tidak sepenuhnya elektronik
melainkan di buat dari saklar, relay, batang berputar,
dan kopling serta menggunakan kertas berlubang.
Memiliki berat 5 ton, membutuhkan kabel 500 mil,
tinggi 8 kaki, panjang 51 kaki dan terdapat batang
berputar sepanjang 50 kaki yang diputar oleh motor
elektrik berdaya 5 tenaga kuda. Mark I berjalan 15
tahun tanpa henti dan berbunyi seperti sebuah
ruangan yang dipenuhi oleh orang yang sedang
menjahit. Salah satu programmer perempuan utama
Mark I Grace Hopper menemukan “bug” pertama.
Pada dasarnya kata “bug” pada komputer merupakan
kejadian yang menimpa Mark I yang pada saat itu ada
ngengat yang masuk pada salah satu pembaca pita

4
kertas yang kemudian mengganggu pembacaan
lubang di pita kertas, dan sejak itu kata “bug” menjadi
istilah untuk terjadinya suatu kesalahan semenjak
tahun 1988.

Tahun 1955 IBM menciptakan Stretch dengan


ukuran 33 kaki yang berisi 150. 000 transistor. Ukuran
ini jauh lebih kecil jika dibandingkan dengan
pendahulunya yaitu tabung hampa. Untuk penelitian
di laboratorium atom. Tahun 1943-1945 John
Mauchly dan J. Prespert Eckert membuat Electronic
Numerical Integrator and Calculator (ENIAC). ENIAC
mempunyai lebar 20 x 40 kaki, beratnya 30 ton dan
menggunakan 18. 000 tabung hampa dan
menggunakan pita kertas sama seperti Mark I, dan
menghasilkan daya 174,000 watt yang berarti
membutuhkan sistem pendingin udara yang kuat.
ENIAC sendiri bahkan tidak menggunakan nama
“komputer” dikarenakan pada zaman dulu istilah
“komputer” merupakan manusia. ENIAC di program
ulang, mengapa ENIAC perlu diprogram ulang? Karena
satu masalah nya adalah ENIAC menggunakan tabung
hampa yang tidak efektif, oleh karena itu ENIAC
membutuhkan desain yang dapat menampung 18. 000
tabung yang bekerja secara serentak. J. Prespert
Eckert akhirnya menemukan solusi dengan membuat
desain sirkuit. Dengan adanya desain sirkuit

5
perkabelan yang dibuat Eckert dan dihilangkannya
bagian bergerak yang dulunya menjadi penggerak
tabung menjadikan ENIAC berjalan lebih cepat,
perkalian di Mark I memerlukan waktu 6 detik,
sedangkan di ENIAC hanya membutuhkan waktu 1/
2,8 ribu detik. Memprogram ulang ENIAC berarti
mengubah desain dan sirkuit-sirkuit yang ada di
ENIAC yang tentunya akan memakan waktu selama
berhari-hari, oleh karena itu Eckert dan Maucly
bekerja sama dengan matematikawan John Von
Neumann untuk mendesain ulang ENIAC yang
bernama EDVAC. EDVAC di publikasikan pada tahun
1947. Dirancang untuk memenuhi kebutuhan di
laboratorium balistik milik departemen pertahanan
amerika serikat. Aplikasi yang dapat di hasilkan
adalah perhitungan besar sudut rudal, sehingga rudal
tepat mengenai sasaran.

John Von Neumann seseorang yang jenius yang


pada usia 8 tahun dapat mengerjakan soal kalkulus.
Bisa menceritakan buku yang pernah dibacanya
bertahun tahun kata demi kata. Dan dia bisa
membaca sebuah halaman di buku telepon dan
mengingatnya secara mundur. Pada suatu
kesempatan Neumann membutuhkan waktu selama 6
menit untuk menyelesaikan masalah yang
diselesaikan professor selama berjam jam dengan
6
menggunakan kalkulator mekanis. Dan Neumann
adalah seseorang yang mampu mengerjakan metode
rumit untunk mematikan sebuah bom atom. Setelah
ENIAC dan EDVAC datang komputer komputer lain
seperti ILLIAC, JOHNIAC, MANIAC.

Eckert dan Maucly kemudian meninggalkan


Universitas Pennsylvania setelah muncul keraguan
mengenai siapa yang akan memiliki hak paten atas
penemuan mereka. Akhirnya mereka mendirikan
perusahannya sendiri dan memasarkan produk
pertamanya yang bernama UNIVAC pada tahun 1951 -
1958. UNIVAC merupakan komputer yang diproduksi
masssal dengan pembuatan 46 buah, untuk dibuka
untuk beberapa kepentingan, seperti biro sensus
Amerika, kepentingan universitas New York,
perusahaan asuransi, akan tetetapi setelah 1958
Eckert dan Maucly tidak dapat keuntungan dari
pemasaran UNIVAC dan akhirnya bangkrut, Kemudian
IBM yang mengikuti jejak Eckert dan Maucly dalam
pemasaran komputer dengan meluncurkan RAMAC,
pada RAMAC terdapat CPU, Card reader, dan printer.

IBM lebih dominan dalam pemasaran komputer.


Pada perusahaan raksasa seperti IBM belum puas
dengan hasil yang di dapat. Oleh karena itu IBM
bekerjasama firma yang saat itu belum terkenal
7
tetapi memiliki agresifitas yang tinggi yang mana
nama firma tersebut adalah Microsoft yang didirikan
oleh Bill Gates dan Paul Allen yang menyediakan
software untuk PC. Dengan bantuan kerjasama dari
IBM, Microsoft melejit melebihi IBM hingga tahun
2000, dan dan mendapatkan keuntungan dua kali lipat
dibandingkan dengan penghasilan IBM itu sendiri.
Sayangnya hubungan kerjasama IBM dan Microsoft
berakhir pada tahun 1991.
INTEL, lahir pada tahun 1968 yang pada awalnya
hanya membuat memory semikonduktor. Pada tahun
1969 Intel di dekati oleh perusahaan Jepang bernama
Busicom yang memasarkan kalkulator berkecepatan
tinggi. Busicom ingin Intel membuat 12 chip untuk
kalkulatornya. Satu chip untuk mengendalikan input
dan satu chip digunakan untuk desain tampilan
kalkulator. Setelah Busicom mau membiayai
pembuatan chip tersebut ternyata memakan waktu
yang lebih lama dari perkiraan, akhirnya Busicom
mengundurkan diri dari kerjasamanya bersama Intel
dan Intelpun membayar seluruh pembuatan yang
awalnya didanai oleh Busicom. Intel berasumsi bahwa
ada sesuatu yang menarik dari chip yang dibuatnya.
Ini kemudian menjadi Intel 4004, mikroprosesor
pertama (uP). Intel 4004 terdiri dari 2300 transistor
dan mempunyai clock speed 108 kHz (108,000 kali per

8
detik). Anehnya, Busicom bangkrut dan tidak pernah
menggunakan mikroprosesor yang menghebohkan ini.
Intel melanjutkan 4004 dengan 8008 dan 8080.
Intel menjual uP 8080 dengan kemampuan dua kali
dari 4004. 8080 pertama kali dipasang di
komputer MITS Altair, yang menjadi komputer
personal (PC) pertama di dunia. Itu memang menjadi
betul-betul personal karena harus merakitnya sendiri.
Akhirnya penciptaan microprocessor melahirkan
evolusi dari microcomputer, dimana bentuk yang
kemudian menjadi komputer pribadi atau personal
komputer seperti yang kita gunakan sekarang ini.

1.1. Arsitektur komputer


Rangkaian elektronik dalam sebuah komputer
yang melaksanakan berbagai operasi (seperti
misalnya penjumlahan dan pengurangan) pada data
tidak tersambung secara langsung dengan sel-sel
penyimpanan data yang ada dalam memori utama
mesin komputer. Sebaliknya, rangkaian ini terisolasi
dalam salah satu bagian dalam komputer yang
disebut unit pengolahan pusat (Central Processing
Unit), atau CPU. Unit ini terdiri dari dua bagian: unit
aritmatika/logika, yang berisi rangkaian elektronika
yang melaksanakan manipulasi data, dan unit control,

9
yang memuat rangkaian yang mengkoordinasikan
berbagai aktivitas mesin.
Untuk menyimpan informasi secara sementara,
CPU berisi sel-sel atau register, yang mirip dengan sel
–sel memori utama. Register-register ini dapat
dikelompokkan sebagai register serbaguna (general
purpose register) atau register khusus ( special
purpose register).
Register serbaguna berperan sebagai tempat
penyimpanan data sementara bagi data yang sedang
dimanipulasi oleh CPU. Register- register ini
menampung input yang akan diberikan kepada unit
aritmatika/logika dan menyediakan ruang
penyimpanan bagi hasil-hasil operasi unit tersebut.
Untuk melaksanakan operasi pada data yang
tersimpan dalam memori utama, adalah menjadi
tanggung jawab unit control untuk memindahkan data
dari memori ke register serbaguna, untuk
memberitahukan kepada unit aritmatika/logika
register –register mana saja yang berisi data, untuk
mengaktifkan rangkaian-rangkaian yang sesuai di
dalam unit aritmatika/ logika, dan untuk
menginformasikan kepada unit aritmatika/logika
register mana yang harus menerima hasil operasi
data.
Untuk tujuan pemindahan pola –pola bit, CPU
dan memori mesin utama mesin komputer
10
disambungkan pada sekumpulan jalur data elektronis
yang disebut bus. Melalui bus ini, CPU dapat
mengambil, atau membaca data dari memori utama
dengan jalan memberikan alamat sel memori yang
relevan dengan sebuah sinyal baca. Dengan cara yang
sama, CPU dapat meletakkan, atau menulis data ke
memori utama dengan mengirimkan alamat sel yang
dituju dan data yang akan disimpan beserta sebuah
sinyal tulis.
Komputer–komputer awal tidak memiliki
fleksibilitas yang tinggi, langkah–langkah operasi
dilaksanakan oleh masing– masing perangkat dalam
komputer dibuat menyatu secara permanen di dalam
unit control sebagai bagian dari mesin. Sistem
semacam ini dapat dianalogikan dengan sebuah
kotak musik yang selalu memainkan lagu yang sama,
sementara yang dibutuhkan adalah fleksibilitas
sebuah CD changer. Untuk memperoleh
fleksibilitasyang lebih tinggi, beberapa elektronik
awal dirancang sedemikian rupa sehingga unit
kontrolnya dapat dengan mudah dilepas sambungkan.
Fleksibilitas ini diperoleh dengan menerapkan sistem
peg-board yang mirip dengan papan switching telepon
lama, dimana ujung - ujung kawat jumper ditancapkan
ke dalam lubang-lubang.
Sebuah trobosan (dinisabahkan, secara tidak
tepat kepada John Von Neumann) muncul dari
11
gagasan bahwa suatu program, sebagaimana halnya
data, dapat dikodekan dan dapat disimpan dalam
memori utama. Apabila unit kontrol dapat di rancang
untuk mengambil program dari memori,
menerjemahkan intruksi-intruksi, dan
mengeksekusinya, sebuah program komputer dapat
diubah-ubah dengan hanya mengubah isi memori
ketimbang harus melepas-sambungkan unit kontrol.

1.2. BAHASA MESIN


Untuk menerapkan konsep program tersimpan,
CPU dirancang untuk mengenali intruksi yang
dikodekan sebagai pola-pola bit. Kumpulan intruksi ini
bersama dengan sistem pengkodeannya disebut
bahasa mesin. Sebuah intruksi yang diekspresikan
dalam bahasa ini disebut intruksi level mesin atau
intruksi mesin.

1.3. PERBENDAHARAAN INTRUKSI


Sebenarnya bahwa jumlah intruksi mesin yang
harus dapat diterjemahkan dan dieksekusi oleh CPU
yang tipikal tidaklah banyak. Pada kenyataannya,
salah satu aspek yang mengagumkan dari ilmu
komputer adalah apabila sebuah mesin telah mampu
melaksanakan tugas –tugas dasar yang sesuai,

12
penambahan fitur-fitur lainnya tidak akan
meningkatkan kemampuan teoritis mesin tersebut.
Dengan kata lain, diluar batasan-batasan tertentu,
fitur-fitur tambahan dapat meningkatkan kenyamanan
dan kemudahan bagi pengguna tetetapi sama sekali
tidak menambahkan sesuatu apapun kepada
kemampuan dasar mesin.
Kemudian lahirlah dua pendekatan pada
perencanaan desain CPU. Pendekatan pertama
menyatakan bahwa CPU harus dirancang untuk
mengeksekusi set intruksi mesin seminimal mungkin.
Pendekatan ini menghasilkan apa yang disebut
sebagai:
reduced intruction set computer (komputer dengan
set intruksi yang tereduksi ) (RISC)) atau "Komputasi
set instruksi yang disederhanakan". RISC pertama
kali digagas oleh John Cocke, peneliti dari IBM di
Yorktown, New York pada tahun 1974 saat ia
membuktikan bahwa sekitar 20% instruksi pada
sebuah prosesor ternyata menangani sekitar 80% dari
keseluruhan kerjanya. Komputer pertama yang
menggunakan konsep RISC ini adalah IBM PC/XT pada
era 1980-an. Istilah RISC sendiri pertama kali
dipopulerkan oleh David Patterson, pengajar pada
University of California di Berkely.

13
RISC merupakan sebuah arsitektur komputer
atau arsitektur komputasi modern dengan instruksi-
instruksi dan jenis eksekusi yang paling sederhana.
Arsitektur ini digunakan pada komputer dengan
kinerja tinggi, seperti komputer vektor. Selain
digunakan dalam komputer vektor, desain ini juga
diimplementasikan pada prosesor komputer lain,
seperti pada beberapa mikroprosesor Intel 960,
Itanium (IA64) dari Intel Corporation, Alpha AXP dari
DEC, R4x00 dari MIPS Corporation, PowerPC dan
Arsitektur POWER dari International Business
Machine.

Ciri-ciri:

1. Instruksi berukuran tunggal


2. Ukuran yang umum adalah 4 byte
3. Jumlah pengalamatan data sedikit, biasanya
kurang dari 5 buah.

Argumentasi yang mendukung arsitek RISC


adalah bahwa mesin-mesin seperti ini cepat dan
efesien. Di sisi yang berlawanan, pihak-pihak lain
menyatakan argumentasi yang mendukung CPU
dengan kemampuan untuk mengeksekusi sejumlah
besar intruksi yang kompleks, sekalipun intruksi-
intruksi tersebut secara teknis selalu berlebihan.
Hasil dari pendekatan semacam ini dikenal sebagai
complex intruction set computer (komputer debgab
14
set intruksi lengkap) (CISC). CISC merupakan
kepanjangan dari Complex Instruction Set Computing
atau Complex Instruction Set Computer (CISC;
"Kumpulan instruksi komputasi kompleks") adalah
sebuah arsitektur dari set instruksi dimana setiap
instruksi akan menjalankan beberapa operasi tingkat
rendah, seperti pengambilan dari memory, operasi
aritmetika, dan penyimpanan ke dalam memory,
semuanya sekaligus hanya di dalam sebuah instruksi.

Ciri-ciri

1. Jumlah instruksi banyak


2. Banyak terdapat perintah bahasa mesin
3. Instruksi lebih kompleks

Sebelum proses RISC didesain untuk pertama


kalinya, banyak arsitek komputer mencoba
menjembatani celah semantik, yaitu bagaimana cara
untuk membuat set-set instruksi untuk
mempermudah pemrograman level tinggi dengan
menyediakan instruksi "level tinggi" seperti
pemanggilan procedure, proses pengulangan dan
mode-mode pengalamatan kompleks sehingga
struktur data dan akses array dapat dikombinasikan
dengan sebuah instruksi. Karakteristik CISC yg "sarat
informasi" ini memberikan keuntungan di mana

15
ukuran program-program yang dihasilkan akan
menjadi relatif lebih kecil, dan penggunaan memory
akan semakin berkurang. Karena CISC inilah biaya
pembuatan komputer pada saat itu (tahun 1960)
menjadi jauh lebih hemat.

Argumentasi yang mendukung arsitektur CISC


adalah bahwa CPU yang lebih kompleks juga lebih
mudah untuk diprogram karena satu intruksi saja
sudah cukup untuk menyelesaikan sebuah pekerjaan
yang membutuhkan rangkain beberapa intruksi dalam
arsitektur RISC.

Processor RISC ataupun CISC telah tersedia


secara komersil. Processor-processor seri Pentium,
yang dikembangkan oleh Intel, merupakan contoh
arsitek dari CISC, processor seri PowerPC, yang
dikembangkan oleh Apple Computer, IBM, dan
Motorola, merupkan contoh dari arsitektur dari RISC.

Untuk membahas intruksi-intruksi yang ada


dalam perbendaharaan mesin komputer, adalah
sangat membantu apabila kita memahami bahwa
intruksi-intruksi tersebut dapat dikelompokkan
didalam tiga katagori:

1. Kelompok pemindahan data.


2. Kelompok aritmatika/logika.
3. Kelompok control.
16
1.4. Transfer Data

Kelompok pertama terdiri dari intruksi-intruksi


untuk memerintahkan pemindahan data dari satu
lokasi ke lokasi lainnya. Misalnya:

Langkah 1. Ambil salah satu nilai yang akan


dijumlahkan dari memori dan letakkan
dalam sebuah register.

Langkah 2. Ambil nilai lainnya yang akan di


jumlahkan dari memori dan letakkan
dalam register yang berbeda.

Langkah 3. Simpan hasil penjumlahan dalam


memori.

Proses eksekusi intruksi pemindahan data lebih


menyerupai proses penyalinan data tersebut
ketimbang memindahkannya. Salah satu kumpulan
intruksi yang penting dalam katagori transfer terdiri
dari perintah-perintah untuk berkomunikasi dengan
perangkat-perangkat diluar konteks CPU memori
utama (printer, keyboard, monitor, disk, drive, dsb.)
karena intruksi-intruksi ini menangani aktivitas-
aktivitas input/output (I/O) mesin komputer, intruksi-
intruksi ini disebut intruksi I/O.

17
1.5. Aritmatika / logika

Kelompok aritmatika/logika terdiri dari intruksi-


intruksi yang memberitahukan kepada unit kontrol
untuk memerintahkan dilaksanakannya suatu
aktivitas dalam unit aritmatika/logika. Dan unit
aritmatika/logika mampu melaksanakan berbagai
operasi diluar operasi-operasi aritmatika dasar,
misalnya operasi-operasi logika AND, OR, dan XOR.

1.6. Kontrol

Kelompok control terdiri dari intruksi-intruksi


yang mengarahkan pengeksekusian program dan
bukannya manipulasi data.

18
1.7. Perkembangan Teknologi Informasi

Perkembangan teknologi telah berkembang


sangat pesat hingga sekarang. Dulunya banyak
daerah-daerah terpencil yang tidak terjamah oleh
teknologi, kini dapat merasakan juga teknologi
informasi yang beredar saat ini. Kini kita dapat
menikmati teknologi informasi dimana saja yang kita
mau.

Teknologi Informasi sebenarnya sudah hadir


sejak dahulu. Dulu manusia menciptakan teknologi
karena dorongan akan hidup lebih baik. Sehingga
mendorong manusia untuk membuat sebuah teknologi
yang dapat membantu mereka dalam hal pekerjaan.
Sehingga munculnya teknologi hingga sekarang.

Saat ini Teknologi informasi masih berkembang


pesat di segala aspek kehidupan. Dari yang
sederhana, hingga yang mutakhir. Di berbagai negara
maju dan berkembang, hadir teknologi-teknologi baru
yang dapat membantu kita dalam hal perkerjaan.

Perkembangan Teknologi Informasi Saat Ini

Dulu manusia telah mengenal yang namanya


teknologi. Namun tentunya teknologi dahulu jauh
berbeda dengan teknologi yang saat ini. Contohnya
19
saja mesin tik, dulunya mesin ini digunakan orang-
orang untuk membuat dokumen. Namun karena
adanya teknologi, sehingga memaksa mesin tik untuk
menyudahi jamannya dan digantikan dengan adanya
komputer yang lebih efisien.

Selain itu, dulunya manusia pernah mengkonsep


sebuah ide atau imajinasi. Namun karena kurangnya
teknologi yang ada pada jaman itu, akhirnya konsep
itu tak terlaksana. Contohnya saja, pada jaman
dahulu manusia membuat konsep agar orang yang
berada di tempat yang berjauhan, dapat merapatkan
sesuatu atau bertemu. Namun karena dulunya tidak
ada Teknologi yang seperti itu, maka hingga dia
meninggal, konsep tersebut belum terlaksana. Namun
karena jaman sekarang sudah ada teknologi yang
seperti itu, sehingga sekarang ada teknologi yang
menyerupai konsep tersebut.

Dapat disimpulkan bahwa Perkembangan


teknologi informasi pada saat ini maju sangat pesat
dari abad ke 19, menuju abad ke 20. Dapat
diprediksikan bahwa abad ke 21 akan mempunyai
perkembangan teknologi yang lebih mutakhir yang
akan lebih bermanfaat bagi manusia.

20
1.8. Dampak Perkembangan Teknologi
Informasi

Dengan hadirnya perkembangan Teknologi


Informasi ini, tentunya semua faktor memiliki dampak
positif dan negatif yang bisa berdampak dalam
kehidupan kita. Kemajuan teknologi televisi,
Handphone, internet dapat berdampak sangat besar
bagi kehidupan kita.

Dampak Positif Perkembangan Teknologi Informasi:

1. Dapat Menjangkau Lebih Jauh Dengan adanya


internet, kita dapat menjangkau lebih jauh di
semua belahan dunia. Contohnya saja kita
berjualan, kita dapat menjangkau seluruh
Indonesia, atau bahkan mancanegara untuk
memperjualbelikan produk kita.

2. Menemukan Lebih Cepat Dalam dunia


pendidikan tentunya kita tidak dapat hanya
mengandalkan guru saja. Oleh karena itu, kita
dapat memanfaatkan internet untuk mencari
hal apapun yang berhubungan dengan
pendidikan. Selain itu, pengajar juga dapat
menerapkan konsep belajar yang kreatif dan
atraktif.

21
Dampak Negatif Perkembangan Teknologi Informasi:

1. Mudahnya akses pornografi tidak dapat


dipungkiri, dengan bebasnya akses internet
sekarang. Dapat memudahkan terjadinya
pornografi. Seperti akses video porno, jual beli
film porno, hingga terjadinya aksi porno. Ini
yang masih menjadi PR pemerintah untuk
menghentikan pornografi ini.

2. Menjadikan Malas Adalah satu dampak yang


paling besar dalam dunia pendidikan adalah
menjadikan pelajar malas untuk mengerjakan
tugas. Karena dengan adanya internet, pelajar
akan dimanjakan dengan komputer. Pelajar
akan lebih senang di depan komputer,
daripada mengerjakan tugas mereka.

Contoh perkembangan teknologi:

1. Peneliti Amerika ingin Kembangkan


Teknologi untuk Menghilangkan Manusia dari
Pandangan Nyamuk

Para peneliti yang turut dalam pertemuan


komunitas American Chemical Society ingin
mengembangkan teknologi baru untuk melindungi
manusia dari gigitan nyamuk. Teknologi tersebut
dimaksudkan agar para nyamuk tak mampu

22
mendeteksi keberadaan manusia yang ada di
dekatnya.

Gambar . 1

Salah satu peneliti American Chemical


Society, Ulrich Bernier mengatakan bahwa mereka
ingin mengembangkan pendekatan yang berbeda
dengan menggunakan bahan yang dapat
menghilangkan kemampuan penciuman dari
nyamuk. Dengan begitu, nyamuk tidak akan mampu
mendeteksi keberadaan manusia di dekatnya.

Para peneliti mengatakan bahwa untuk


memblokir kemampuan penciuman dari nyamuk
tidak terlalu sulit. Ditambah, beberapa senyawa
kimia yang secara alami ada di kulit manusia
ternyata sangat efektif mengusir nyamuk tanpa
23
memunculkan bau. Senyawa itu biasanya disebut
inhibitor.

Meskipun begitu, para peneliti tetap memiliki


permasalahan dalam memanfaatkan inhibitor
tersebut. Hal ini karena keberadaan substansi
tersebut biasanya dibarengi dengan zat lain yang
menarik perhatian nyamuk. Dan untuk melakukan
hal tersebut, kini mereka pun berusaha untuk
memisahkan zat inhibitor dan zat yang menarik
para nyamuk tersebut.

2. Mahasiswa Inggris Berhasil Ciptakan


Topeng yang Bisa Memberikan Kemampuan
seperti Super Hero

Menjadi seorang pahlawan super tentunya


banyak diimpikan oleh anak-anak dan mungkin
orang dewasa. Dan dengan memakai sebuah
topeng yang dikembangkan oleh para mahasiswa
Royal College of Art di London, Inggris, hal tersebut
bisa diwujudkan.

24
Gambar . 2

Terdapat dua buah topeng yang mereka


kembangkan, di mana masing-masing topeng
menutupi beberapa bagian wajah dan memiliki
fungsi tertentu. Topeng pertama menutupi bagian
telinga, mulut dan hidung. Topeng ini berfungsi
agar penggunanya bisa memperoleh kemampuan
mendengar melebihi manusia biasa.

Sementara itu topeng kedua yang digunakan


pada mata bisa digunakan untuk mengambil video
yang selanjutnya bisa dikirim ke komputer.
Selanjutnya, data video tersebut pun bisa
memberikan kegunaan secara real time kepada
pemakainya.

Para mahasiswa ini bertujuan agar topeng ini


bisa dipakai untuk menganalisis pergerakan
seorang atlet. Selain itu, dengan topeng
25
berkemampuan pendengaran super, penggunanya
pun bisa mendengarkan suara tertentu meskipun
dalam lingkungan yang bising.

3. Injeksi Otak Manusia pada Tikus Terbukti


Menghasilkan Peningkatan Intelejensi

Bagaimana jadinya jika ada seekor tikus yang


mempunyai tingkat kepintaran tak kalah dengan
manusia? Di film kejadian seperti ini memang
sudah sering digambarkan. Namun bagaimana
kalau hal ini terjadi di kejadian nyata?

Gambar . 3

26
Hal inilah yang baru saja dilakukan oleh para
peneliti dari University of Rochester Medical
Center. Mereka pun berusaha menciptakan seekor
tikus yang memiliki tingkat kepintaran di atas rata-
rata.

Sebagai langkah untuk menciptakan tikus


pintar tersebut, mereka pun menginjeksikan bagian
sel otak manusia bernama astrosit. Dan berkat
injeksi tersebut, tikus yang dijadikan bahan
percobaan pun memiliki kemampuan untuk belajar.

Sebagai contoh, para peneliti pun mencoba


untuk membandingkan tikus pintar tersebut
dengan tikus biasa untuk melewati sebuah labirin.
Hasilnya, tikus pintar lebih cepat menyelesaikan
labirin dibandingkan tikus biasa.

Contoh diatas adalah sebagian contoh


perkembangan teknologi saat ini. Dan apabila ingin
contoh yang lebih dapat dikunjungi di http://www.
beritateknologi. com/tentang/perkembangan-
teknologi/

Pengukuran Kinerja Komputer

Terdapat dua cara untuk mengukur kinerja


komputer. Pertama, menggunakan parameter sistem

27
itu sendiri misalnya laju detak prosesor atau jumlah
instruksi yang dapat diproses tiap satuan waktu.
Jumlah instruksi yang diproses dalam satuan waktu
tertentu diekspresikan dalam 'satuan' MIPS (millions
instruction per second). Prosesor berarsitektur RISC,
memerlukan lebih banyak instruksi untuk
menjalankan suatu tugas (task) tertentu
dibandingkan dengan prosesor berasitektur CISC.
Dengan ukuran MIPS, prosesor RISC akan bekerja
jauh lebih cepat dibanding prosesor CISC.

Cara kedua adalah dengan menggunakan


benchmark sintetis. Whetstone dan Dhrystone
merupakan contoh benchmark sintetis yang banyak
digunakan untuk mengukur kinerja komputer.
Pengukuran dengan benchmark sintetis terdapat
dua kelemahan. Selain keraguan apakah program
yang disusun benar-benar mewakili program
aplikasi yang sebenarnya, keraguan hasil
pengukuran juga disebabkan oleh mudahnya teknik
pengukuran ini dimanipulasi dengan melakukan
optimisasi kompilator (Sharp dan Bacon, 1994:65).

Untuk mendapatkan tolok-ukur baku agar


dapat membandingkan kinerja berbagai sistem
komputer, sekelompok perusahaan besar seperti:
DEC, Hewlett-Packard, IBM, Intel, dan Sun sepakat
membentuk lembaga non-profit yang diberi nama
System Performance Evaluation Corporation (Sharp
dan Bacon, 1994:66; Reilly, 1995). Lembaga ini
bertugas untuk mengembangkan dan memberi

28
dukungan terhadap pembakuan benchmark kinerja
komputer.

Perangkat benchmark pertama yang dibuat


diperkenalkan pada tahun 1989, karena itu disebut
SPEC89. Pada tahun 1992 dimunculkan SPEC92
yang terdiri atas 20 program yang terbagi menjadi
dua kelompok, yakni untuk operasi bilangan integer
dan untuk operasi bilangan floating-point. Saat ini,
SPEC92 juga sudah tidak digunakan lagi karena
telah dimunculkan perangkat benchmark baru
yakni SPEC95. Bencmark SPEC95 mengukur dan
membandingkan kinerja komputer dalam tiga
kategori pilihan:

1. Kinerja terhadap bilangan integer


versus floating point

2. Kinerja dengan kompilasi agresif


versus kompilasi konservatif

3. Kecepatan versus throughput

Untuk pengukuran kecepatan, setiap elemen


benchmark memiliki SPECratio. SPECratio adalah
referensi waktu SPEC dibagi dengan waktu-
pelaksanaan (runtime) tiap-tiap elemen program
pada sistem yang diukur.

Untuk mendapatkan ukuran throughput atau


laju eksekusi program, yang disebut juga 'metode
kapasitas homogen' beberapa salinan elemen
program tertentu dijalankan. Metode ini terutama
cocok untuk sistem multiprosesor. Hasilnya, yang
disebut laju SPEC (SPECrate) menggambarkan
berapa banyak elemen program yang dapat
29
dijalankan pada satu waktu tertentu. Dengan
demikian laju SPEC menggambarkan kapasitas
sistem untuk tugas-tugas yang sama
karakteristiknya dengan program uji (Dixit dan
Reilly, 1995).

Selain SPEC95, berbagai benchmark


dikembangkan untuk mengukur kinerja komputer.
Diantaranya, yaitu:

Whetstone digunakan untuk membandingkan


arsitektur maupun kompilator teroptimisasi yang
dijalankannya.

Dhrystone merupakan benchmark sintetik


yang difokuskan untuk mengukur kinerja komputer
atas bilangan integer dan string (Sharp dan Bacon,
1994:68).

Linpack, kernelnya dikembangkan dari rutin


program aplikasi aljabar linier (Sharp dan Bacon,
1994:68; Sill, 1996). Semula ditulis dan digunakan
dalam lingkungan bahasa program Fortran namun
tersedia juga versi bahasa C.

NAS Parallel Benchmark (NPB), yang


digunakan untuk mengukur kinerja komputer
paralel.

Pengukuran kinerja komputer dengan


benchmark yang ada saat ini banyak dikritik karena
seperti orang buta meraba gajah. Bergantung pada
bagian yang dipegang, gajah bisa didefinisikan
sebagai tinggi seperti pohon kelapa, panjang dan
kecil seperti ular, atau lebar dan tipis seperti kipas
(Gustafson dan Todi, 1998). Benchmark yang ada
30
cenderung mengukur satu aspek dari kinerja
komputer dan hasilnya digunakan untuk
menggeneralisasi kinerja keseluruhan.

Kemudian benchmark Perfect Club dan SPEC


mengembangkan suite aplikasi yang mengukur
berbagai aspek perilaku sistem agar diperoleh
gambaran sistem lebih lengkap.

Menurut Gustafson dan Todi (1998) aplikasi


semacam itu tetaplah hanya mengukur satu titik
sampel dari kinerja komputer sementara yang
diperlukan adalah mengukur seluruh rentang
kinerja komputer.

Hal lain yang tidak masuk dalam perhitungan


para perancang benchmark adalah fakta bahwa
menurut hukum Moore, kinerja komputer
bertambah sebesar 60% setiap tahun. Semua
benchmark mendasarkan diri pada masalah
berukuran tetap (fixed-size problem) sehingga
relatif terhadap kinerja yang terus meningkat,
masalah yang diujikan sebagai pengukur kinerja
menjadi sangat kecil dalam beberapa tahun
kemudian. Benchmark LINPACK, misalnya, mulai
dengan menentukan bahwa ukuran matriks harus
100x100. Ketika kinerja komputer bertambah besar
dan penghitungan matriks berukuran 100x100
terselesaikan lebih cepat dari waktu yang
diperlukan pemrogram untuk menekan tombol
ENTER, ukuran masalah diperbesar dengan matriks
300x300 dan kemudian 1000x1000. Bahkan
selanjutnya perancang LINPACK mengijinkan versi
'sebesar yang dapat ditampung oleh memori'.

31
Mengembangkan benchmark tanpa
memperhitungkan laju peningkatan kinerja dapat
diibaratkan mematok harga barang tanpa
memperhitungkan laju inflasi (dan perlu diingat,
'inflasi' kinerja komputer adalah 60% pertahun).
Ketika LINPACK petama kali digunakan, waktu
yang diperlukan dengan matriks 100x100
dikumpulkan dari berbagai sistem komputer yang
ada di berbagai instutusi dan dilaporkan secara
rutin. Pada taraf presisi 32 bit, matriks 100x100
tersebut hanya memerlukan 40. 000 byte memori
dan 670. 000 operasi floating-point.

Perancangan pengukur kinerja komputer yang


universal semakin sulit dilakukan akibat semakin
bervariasinya arsitektur komputer, konfigurasi dan
kapasitas memori, taraf presisi sistem, maupun
teknik optimisasi kompilator. Berbagai pendekatan
ilmiah dilakukan dalam upaya merancang
benchmark yang memperhitungkan semua aspek di
atas, tetetapi tetap mudah digunakan. Sampai saat
ini, pemakai sendirilah yang harus menentukan
benchmark pilihannya, sekedar untuk mendapatkan
prediksi kinerja komputer bila diberi beban kerja
sesuai dengan pemakaian yang sebenarnya.
Dengan tetap memperhatikan 'kelemahan'
benchmark yang dipakai, setidaknya dapat
diperoleh gambaran awal kinerja komputer atas
beban-kerja yang akan diberikan kepadanya.

32
33
BAB 2
ARSITEKTUR SET
INTRUKSI DAN DESAIN

Lokasi Memori dan Operasi


Memori bisa kita ibaratkan seperti halnya lemari
yang mempunyai banyak laci, banyak laci disebut juga
banyaknya alamat dalam memori. Setiap laci diisi
sebuah kata, dan alamat dari laci yang berisi sebuah
kata ditulis diluar laci tersebut. Misalnya kita akan
menulis “baju” pada alamat 77, maka analoginya
adalah menyimpan kata “baju” kedalam laci bertanda
77. Kemudian, membaca alamat 77 adalah serupa
dengan melihat isi laci tersebut. Kita tidak
menghilangkan kata dalam alamat tertentu bila kita
membacanya, tetetapi kita akan mengubah isi alamat
jika kita menyimpan atau menuliskan kata baru.

34
Alamat 0
Alamat 1

N Kata

Alamat N-1

Setiap kata berisi banyak bit yang sama

“Setiap alamat atau lokasi berisi sejumlah bit


biner yang tetap, banyak bit biner ini disebut panjang
kata memori itu. Memori dengan lokasi sebanyak
4096, masing-masing dengan alamat yang berbeda,
dan dalam setiap lokasi dapat tersimpan 16 bit
disebut memori 16-bit 4096 kata, atau dalam istilah
komputer memori 16-bit 4K. (Karena pada umumnya
memori mempunyai jumlah kata 2n dengan n dapat
mengambil berbagai harga, maka jika suatu memori
memiliki 214 = 16. 384 kata, dalam komputer literatur
akan diacu sebagai memori 16K, dengan pengertian
bahwa sebetulnya dalam memori itu ada 2n kata.
35
Jadi, memori 16-bit 215 kata disebut memori 16-bit
32K”.
Tiga langkah dasar yang diperlukan oleh CPU
untuk melakukan operasi menulis ke lokasi memori
tertentu.
1. Kata yang akan disimpan ke dalam lokasi
memori adalah pertama dimuat oleh CPU menjadi
register tertentu, yang disebut data memory data
Register (MDR);
2. Alamat lokasi dimana kata tersebut akan
disimpan dimuat oleh CPU ke dalam daftar
tertentu, yang disebut memori address register
(MAR);
3. Sebuah sinyal, disebut menulis,
dikeluarkan oleh CPU menunjukkan bahwa kata
disimpan dalam MDR akan disimpan di lokasi
memori alamat yang dimuat di dalam MAR.
Tiga langkah dasar yang diperlukan untuk
melakukan memori membaca operasi:
1. Alamat lokasi dari kata yang akan dibaca
dimuat ke dalam MAR
2. Sebuah sinyal, disebut membaca,
dikeluarkan oleh CPU yang menunjukkan bahwa

36
kata yang alamatnya di MAR adalah untuk dibaca
ke dalam MDR .
3. Setelah beberapa waktu, sesuai dengan
keterlambatan memori dalam membaca kata
tertentu, kata yang diperlukan akan dimuat oleh
memori ke dalam MDR siap digunakan oleh CPU.
Tiga langkah dasar yang diperlukan untuk
melakukan memori membaca operasi:
1. Alamat lokasi dari kata yang akan dibaca
dimuat ke dalam MAR
2. Sebuah sinyal, disebut membaca,
dikeluarkan oleh CPU yang menunjukkan bahwa
kata yang alamatnya di MAR adalah untuk dibaca
ke dalam MDR .
3. Setelah beberapa waktu, sesuai dengan
keterlambatan memori dalam membaca kata
tertentu, kata yang diperlukan akan dimuat oleh
memori ke dalam MDR siap digunakan oleh CPU.

Teknik Pengalamatan
Mode pengalamatan adalah bagaimana cara
menunjuk dan mengalamati suatu lokasi memori pada
sebuah alamat di mana operand akan diambil. Mode

37
pengalamatan diterapkan pada set instruksi, dimana
pada umumnya instruksi terdiri dari opcode (kode
operasi) dan alamat. Setiap mode pengalamatan
memberikan fleksibilitas khusus yang sangat penting.
Bila alamat dalam memori diberikan pada suatu
kata instruksi, teknik yang umum adalah memberi
alamat memori dalam bentuk biner. Cara ini biasa
disebut dengan istilah pengalamatan langsung.
Namun tak selamanya yang digunakan adalah
cara ini, walaupun cara ini merupakan cara yang
efektif, namun juga mengacu pada:
a. Keinginan untuk memperpendek bagian
alamat
Misalnya saja, jika kita mempunyai komputer
dengan memori 256K, 18 bit akan diperlukan
untuk asing-masing alamat langsung dan teknik
pengalamatan dipakai untuk mereduksi banyak
bit yang dipakai.
b. Kemudahan bagi pemrogram
Terdapat beberapa teknik pengalamatan
yang menyediakan kemudahan pada pemrogram
kerik menuliskan program.
c. Fasilitas sistem operasi

38
Dalam hampir semua komputer besar bisa
mempunyai beberapa program yang berbeda
dalam memorinya pada satu saat tertentu dan
akan bergantianmenjalankan program-program
tertentu.

1. Pengalamatan Langsung (Direct Addressing)


Pemberian alamat biner dalam memori adalah
cara paling langsung untuk mencari tempat operand
atau menentukan alamat untuk melompat. Akibatnya,
semua komputer mempunyai bentuk-bentuk
pangalamatan langsung.
Dalam mode pengalamatan direct addressing,
harga yang akan dipakai diambil langsung dalam
alamat memori lain. Contohnya: MOV A,30h. Dalam
instruksi ini akan dibaca data dari RAM internal
dengan alamat 30h dan kemudian disimpan dalam
akumulator. Mode pengalamatan ini cukup cepat,
meskipun harga yang didapat tidak langsung seperti
immediate, namun cukup cepat karena disimpan
dalam RAM internal. Demikian pula akan lebih mudah
menggunakan mode ini daripada mode immediate

39
karena harga yang didapat bisa dari lokasi memori
yang mungkin variabel.

Gambar mode pengalamatan langsung


Berikut ini kelebihan dan kekurangan dari satu
pengalamatan dengan metode pengalamatan
langsung:
a. Kelebihan
Field alamat berisi efektif address sebuah
operandi.
b. Kekurangan
Keterbatasan field alamat karena panjang field
alamat biasanya lebih kecil dibandingkan panjang
kata (word).

2. Pengalamatan Tak Langsung


Variasi dalam pengalamatan yang lain yang
banyak dipakai dikenal sebagai pengalamatan tak
langsung. Bila dipakai, pengalamatan langsung akan
menyebabkan kata instruksi memberikan “alamat”.

40
Bukan operand yang harus dipakai, tetetapi alamat
operand.

Gambar Mode Pengalamatan tak langsung


Contoh
jika kita tulis ADD 302 dan instruksinya adalah
instruksi tambah alamat langsung konvensional,
bilangan pada lokasi 302 akan ditambahkan pada
kata yang sekarang ada dalam akumulator.
Jika instruksi penambahan teralamatkan tak
langsung kita tulis IAD 302 (indirectadd/tambahkan
tak langsung), maka bilangan yang disimpan pada
alamat 302 akan memberikan alamatoperandyang
dipakai.
Contoh
Bila kata instruksi 5 dalam memori dalam
program berikut ini dilaksanakan, ini akan
menyebabkan bilangan 164 ditambahkan pada isi
akumulator yang sekarang.
41
ALAMAT ISI
MEMORI
5 IAD 302
... ...
302 495
... ...
495 164

Berikut ini kelebihan dan kekurangan dari satu


pengalamatan dengan metode pengalamatan tak
langsung:
 Kelebihan
 Ruang bagi satu alamat menjadi besar,
sehingga semakin banyak alamat yang dapat
direferensi.
 Kekurangan
 Diperlukan referensi memori ganda
dalam satu fetch sehingga memperlambat proses
operasi.

42
3. Pengalamatan Segera (Immediate Addresing)
Mode pengalamatan immediate addressing
sangat umum dipakai karena harga yang akan
disimpan dalam memori langsung mengikuti kode
operasi dalam memori. Dengan kata lain, tidak
diperlukan pengambilan harga dari alamat lain untuk
disimpan. Contohnya: MOV A,#20h. Dalam instruksi
tersebut, akumulator akan diisi dengan harga yang
langsung mengikutinya, dalam hal ini 20h. Mode ini
sangatlah cepat karena harga yang dipakai langsung
tersedia.

Berikut ini kelebihan dan kekurangan dari satu


pengalamatan dengan metode pengalamatan segera:
 Kelebihan
 Tidak adanya referensi memori selain
dari instruksi yang diperlukan untuk memperoleh
operand.

43
 Menghemat siklus instruksi sehingga
proses keseluruhan akan cepat.
 Kekurangan
 Ukuran bilangan ddibatasi oleh ukuran
field alamat.

44
4. Pengalamatan Register Addressing
Register merupakan sebagian memori dari mikro
processor yang dapat diakses dengan kecepatan
tinggi. Metode pengalamatan register ini mirip dengan
mode pengalamatan langsung. Perbedaannya terletak
pada field alamat yang mengacu pada register, bukan
pada memori utama.

Mode Pengalamatan Register

5. Pengalamatan Register Indirect Addressing


Metode pengalamatan register tidak langsung ini
mirip dengan mode pengalamatan tidak langsung.
Perbedaannya adalah field alamat mengacu pada
alamat register. Letak Operand berada pada memori
yang dituju oleh isi register.

45
Mode pengalamatan Register Tak Langsung

6. Pengalamatan Relatif
Pengalamatan relatif sangat serupa dengan
penghalaman, kecuali alamat yang yang diacu adalah
relatif terhadap kata instruksi. Pada umumnya bila
pengalamatan relatif dipakai, bagian alamat kata
instruksi menghasilkan bilangan yang harus
ditambahkan pada alamat yang mengikuti kata
instruksi. Jadi dalam pengalamatan relatif, bagian
alamat berisi perpindahan dari lokasi kata instruksi
dalam memori. Dengan memberikan hanya
perpindahannya mereduksi banyaknya bit alamat
tetetapi hanya sebagian dari memori yang siap
dipakai.

46
Misalnya
jika kata instruksi memakai pengalamatan relatif
dan bagian alamat berisi 8 bit, maka hanya 256 lokasi
memori yang tersedia untuk instruksi yang diberikan.

7. Pengalamatan Berindeks
Terdapat suatu variasi pada pengalamatan
memori langsung yang konvensional yang bisa
memudahkan pemrograman, khususnya pemrograman
sederetan instruksi yang harus diulangi pada
sekumpulan data yang terdistribusi ke seluruh mesin.
Teknik ini disebut pengindeksan.
Pengindeksan mula-mula dipakai dalam satu
komputer yang dikembangkan di Universitas
Manchester (Amerika Serikat). Register yang diberi
nama kotak B ditambahkan pada bagian kendali. Isi
kotak B dapat ditambahkan pada isi register alamat
memori bila diperlukan. Bila kotak B dipakai, alamat
operand yang terletak dalam memori akan ada pada
alamat yang dituliskan oleh pemrograman isi plus
kotak B. Istilah orang Amerika untuk kotak B ini
adalah register indeks, dan istilah ini akan kita
gunakan. Register indeks sangat berguna sehingga

47
komputer-komputer masing-masing menyediakan
beberapa register seperti itu.
Pemakaian register indeks memudahkan
penulisan program yang memproses data dalam tabel-
tabel, mereduksi banyaknya instruksi yang diperlukan
dalam program interaktif. Register indeks
memungkinkan modifikasi automatik dari lama yang
diacu tanpa mengubah instruksi yang terseimpan
dalam memori.

Intruksi
Instruksi-instruksi untuk memerintah
pemindahan data dari satu lokasi ke lokasi lainnya.
Proses eksekusi instruksi pemindahan data lebih
menyerupai proses menyalin data tersebut ketimbang
memindahkannya. Salah satu kumpulan instruksi
yang penting dalam kategori transfer data terdiri dari
perintah-perintah untuk berkomunikasi dengan
perangkat-perangkat di luar konteks CPU-memori
utama (printer, keyboard, monitor, disk drive,dsb).
Karena instruksi-instruksi ini menangani aktivitas-
aktivitas input/output (I/O) mesin komputer, instruksi-
instruksi ini disebut instruksi I/O dan kadangkala

48
dipandang sebagai sebuah kategori yang berdiri
sendiri. Oleh karena itu, aktivitas-aktivitas I/O ini
dapat ditangani oleh instruksi-instruksi yang
memerintahkan pemindahan data antara CPU dan
memori utama. Jadi, Kita akan memandang instruksi-
instruksi I/O sebagai bagian dari kelompok transfer
data.

Operasi set instruksi untuk transfer data:


 MOVE: memindahkan word atau blok dari
sumber ke tujuan
 STORE: memindahkan word dari prosesor
ke memori.
 LOAD: memindahkan word
darimemorikeprosesor.
 EXCHANGE: menukar isi sumber ke
tujuan.
 CLEAR / RESET: memindahkan word 0 ke
tujuan.
 SET: memindahkan word 1 ke tujuan.
 PUSH: memindahkan word dari sumber
ke bagian paling atas stack.
 POP: memindahkan word dari bagian
paling atas sumber

49
Instruksi Aritmetika/ Logika
Kelompok aritmatika/logika terdiri dari instruksi-
instruksi yang memberitahukan kepada unit kontrol
untuk memerintahkan dilaksanakannya suatu
aktivitas dalam unit aritmetika/logika. Sebagaimana
diindikasikan oleh namanya, unit aritmatika/logika
mampu melaksanakan berbagai operasi di luar
operasi-operasi aritmatika dasar. Beberapa diantara
operasi-operasi tambahan ini adalah operasi-operasi
logika AND, OR, dan XOR. Operasi-operasi ini
seringkali digunakan untuk memanipulasi bit-bit
tunggal dalam sebuah register serbaguna tanpa
mengganggu bagian lain dari register tersebut.

Operasi set instruksiuntukarithmetic:


1. ADD : Penjumlahan 5.
ABSOLUTE
2. SUBTRACT: Pengurangan 6.
NEGATIVE
3. MULTIPLY: Perkalian 7. DECREMENT
4. DIVIDE: pembagian 8. INCREMENT
Nomor 5 sampai 8 merupakaninstruksi operand
tunggal.
50
Meskipun kita telah menyinggung operasi-
operasi aritmatika seperti penjumlahan, pengurangan,
perkalian dan pembagian. Beragam jenis operasi
dapat diturunkan dari kombinasi sebuah operasi
penjumlahan dan sebuah proses negasi. Berdasarkan
hal ini, sejumlah komputer berukuran kecil dirancang
hanya dengan menyertakan instruksi penjumlahan.
Kita juga harus memperhatikan bahwa untuk setiap
operasi aritmetika, tersedia begitu banyak ragam
variasi.

Operasi set instruksi untukoperasi logical:


1. AND, OR, NOT, EXOR
Operasi-operasi ini dapat diperluas menjadi
operasi-opersai yang menggabungkan dua
rangkaian bit-bit untuk meghasilkan satu
rangkaian bit-bit output dengan menerapkan
operasi dasar pada masing-masing kelom secara
terpisah.
2. COMPARE yaitu melakukan perbandingan
logika.
3. TEST untuk menguji kondisi tertentu.

51
4. SHIFT merupakan operand menggeser ke
kiri atau kanan menyebabkan Konstanta pada
ujung bit.
5. ROTATE merupakan operand menggeser
ke kiri atau ke kanan dengan ujung yang terjalin.
Operasi-operasi yang berada dalam kelas operasi
rotasi dan shift menyediakan sarana untuk
menggerakan bit-bit dalam suatu register dan
seringkali digunakan untuk menyelesaikan masalah-
masalah yang berkaitan dengan tempat kedudukan.
Operasi-operasi ini dikelompokan menurut arah
pergerakan bit-bitnya (kanan atau kiri) dan sesuai
dengan apakah pergerakan tersebut bersifat sirkular
(melingkar atau memutar) atau tidak. Apabila kita
memiliki sebuah byte yang tentunya terdiri dari
delapan bit dan menggeser bit-bit tersebut satu
langkah ke kanan atau kiri, kita dapat membayangkan
bahwa bit yang berada pada posisi paling ujung akan
terjatuh dari tepi ujung byte dan sebuah tempat
kosong akan muncul di ujung sebaliknya. Perlakuan
yang diberikan terhadap bit yang jatuh dan tempat
kosong ini merupakan ciri yang membedakan satu
operasi geser dengan operasi geser lainnya. Salah

52
satu teknik yang diterapkan adalah meletakan bit
yang jatuh pada tempat
kosong di ujung yang berlawanan. Hasilnya
adalah sebuah pergeseran sirkular, yang disebut juga
rotasi. Maka jika kita melaksanakan pergeseran
sirkular kekanan pada pola bit berukuran satu byte
sebanyak delapan kali, kita akan mendapatkan pola
bit yang sama dengan awalnya.

Instruksi Sequencing
Instruksi Sequencing merupakan sederetan
instruksi/aksi yang akan dilaksanakan (dieksekusi)
oleh komputer berdasarkan urutan penulisannya.
Instruksi sequence disebut juga sturktur kontrol
algoritma yang paling sederhana. Jika dituliskan
sebuah sequence yang terdiri dari deretan
instruksi/aksi ke 1,2,3,4,. . . . n maka setiap
instruksi/aksi akan dilaksanakan secara berurutan
mulai dari yang ke 1, kemudian ke-2, ke-3,. . . . smapai
dengan ke-n. Dan program paling sederhana tentunya
hanya mengandung satu sequence yang mengandung
satu instruksi saja.

Instruksi Input/Output

53
Fungsinya adalah memindahkan informasi antara
CPU atau memori utama dengan dunia luar. I/O ini
terdiri atas piranti I/O (peripheral), pengendali I/O
(device controller) dan perangkat lunak. Untuk proses
informasi antara CPU dengan sebuah peripheralnya
sendiri yaitu pertama memilih I/O dan mengujinya,
kemudian menginisialisasi transfer dan
mengkoordinasikan pengaturan waktu operasi I/O,
lalu mentransfer informasi, dan menghentikan proses
transfer. Seperti yang sudah diulas di atas juga bahwa
aktivitas-aktivitas input/output (I/O) mesin komputer
juga ditangani oleh instruksi-instruksi yang
memerintahkan pemindahan data antara CPU dan
memori utama. Jadi, Kita akan memandang instruksi-
instruksi I/O sebagai bagian dari kelompok transfer
data.

54
55
BAB 3
ASSEMBLY
LANGUAGE
PROGRAMMING

Suatu program komputer dapat ditulis dalam


bentuk bahasa pemrograman tingkat tinggi seperti
java atau C++. Komputer dapat mengeksekusi
program jika terdapat program dalam bentuk bahasa
mesin yang spesifik untuk arsitektur. Program bahasa
mesin untuk arsitektur berisi kumpulan instruksi
mesin yang diterjemahkan dalam bentuk biner.
Bahasa mesin adalah bahasa yang asli terdapat
pada prosesor. Instruksi bahasa mesin dinyatakan
dalam bilangan numeric yang tersimpan sebagai byte
di memori. Masing-masing instruksi bahasa mesin
memiliki kode numerik yang unik yang disebut
operation code atau opcode. Dalam pembuatan
instruksi bahasa mesin setiap instruksi diawali

56
dengan suatu opcode dan dapat diikuti oleh data.
Bahasa mesin sangat rumit apabila diprogram secara
langsung, sehingga dibuat suatu simbol ( mnemonic)
untuk mewakili masing-masing instruksi tersebut
agar lebih mudah diingat dan dan dibaca oleh
manusia.
Bahasa mesin adalah kode biner murni,
sedangkan bahasa assembly adalah pemetaan
langsung dari kode biner ke bentuk simbolis yang
lebih mudah bagi manusia untuk memahami dan
mengelola. Konversi representasi simbolis ke dalam
bahasa mesin dilakukan dengan program khusus yang
disebut assembler. Assembler adalah sebuah program
yang menerima program bahasa simbolik (source) dan
menghasilkan bahasa mesin yang setara (target).
Dalam menerjemahkan program ke kode biner,
assembler akan mengganti alamat simbolis oleh
alamat numerik, menggantikan operasi simbolik kode
dengan kode operasi mesin, penyimpanan cadangan
untuk instruksi dan data, dan menerjemahkan
konstanta ke dalam representasi mesin.
Sebelum mempelajari bahasa assembly
diperlukan pengetahuan tentang prosesor secara

57
rinci. Hal-hal yang perlu diketahui adalah ukuran
memori dan organisasi, prosesor register, format
instruksi, dan seluruh set instruksi. Sebuah prosesor
berbasis akumulator memiliki lima register 16 bit
yaitu:
1. Program Counter (PC),berisi alamat dari
instruksi berikutnya yang akan dieksekusi
2. Instruction Register (IR), berisi bagian
kode opersasi instruksi yang sedang dieksekusi
3. Address Register (AR),berisi alamat
instruksi yang sedang dieksekusi
4. Accumulator (AC), berfungsi sebagai
sumber dan tujuan dari data
5. Data Register (DR), berfungsi sebagai
tempat penyimpanan data.
Prosesor sederhana mendukung tiga jenis
instruksi, yaitu:
1. Data Transfer
Operasi yang terdapat pada transfer data adalah
a. Load, yaitu suatu perintah untuk mengisi
data pada register dari Data Register
b. Store, yaitu suatu perintah untuk
menyimpan data dari register ke Data Register

58
c. Move, yaitu suatu perintah untuk
memindahkan data antara Accumulator Register
dan Data Register
2. Data Processing
Operasi yang terdapat pada pengolahan data
adalah add, subtract, and, dan not.
3. Program Control
Operasi yang terdapat pada program control
adalah jump dan conditional jump.
Bahasa assembly adalah bentuk simbolis dari
bahasa mesin, prosesor memiliki bahasa yang
assembly yang unik dan berbeda sesuai masing-
masing tipe prosesor. Pemrograman bahasa assembly
sering disebut sebagai kategori bahasa pemrograman
tunggal, pada kenyataannya ada berbagai macam
jenis perakitan bahasa perakit. Program assembly
ditulis dengan singkatan pendek yang disebut
mnemonik, yaitu singkatan yang mewakili instruksi
mesin yang sebenarnya. Berbeda dengan bahasa
pemrograman tingkat tinggi, bahasa assembly atau
rakitan biasanya memiliki hubungan satu-satu dengan
instruksi bahasa mesin. Misalnya, tiap mnemonik
yang ditulis di program dengan bahasa rakitan akan

59
diterjemahkan menjadi tepat satu kode operasi yang
dapat dimengerti langsung oleh komputer. Pada
bahasa tingkat tinggi, satu perintah dapat
diterjemahkan menjadi beberapa kode operasi dalam
bahasa mesin. Proses pengubahan bahasa rakitan ke
bahasa mesin dilakukan oleh assembler, dan proses
balikannya dilakukan oleh disassembler.

Kelebihan Bahasa Assembly:


1. Ketika di-compile ukuran lebih kecil
2. Lebih efisien dan hemat memori
3. Lebih cepat dieksekusi
Kesulitan Bahasa Assembly:
1. Dalam melakukan suatu pekerjaan, baris
program relatif lebih panjang dibanding bahasa
tingkat tinggi
2. Relatif lebih sulit untuk dipahami
terutama jika jumlah baris sudah terlalu banyak
3. Lebih sulit dalam melakukan pekerjaan
rumit, misalnya operasi matematis .
Pemrograman bahasa assembly memungkinkan
programmer untuk memprogram dengan kode
instruksi, tetetapi dengan menggunakan mnemonik

60
sederhana untuk merujuk pada kode-kode instruksi.
Pemrograman assembly menghasilkan program yang
lebih singkat dan kecepatan eksekusi yang lebih
tinggi. Setiap perakit menggunakan format yang
sedikit berbeda untuk
menterjemahkanmenerjemahkan instruksi kode, data
dan arahan khusus untuk merakit program akhir.
Deklarasi adalah instruksi khusus yang dirancang
untuk memudahkan penulisan sebuah program dalam
bentuk simbolis. Misalnya deklarasi berikut:

ORG $1000
Menetapkan bahwa program akan berada pada
alamat 1000 heksadesimal (awal) pada memori.
Apabila dipakai penentuan awal demikian, program
akan bermukim pada alamat tertentu didalamdi
dalam memori dan disebut Pemrograman Absolut.
Sebaliknya sebuah program yang dapat dimuat di
mana saja dalam memori disebut program yang dapat
ditempattakan kembali.
Untuk menempatkan program yang dapat
ditempatkan kembali dalam memori, alamat simbolis
dalam program harus diubah menjadi alamat
sesungguhnya. Tugas ini dilaksanakan oleh program

61
pemuat (=loader program). Dalam mikroprosesor yang
diterapkan dalam penerapan pengendalian, sebagian
besar program dimuat hanya satu kali ke dalam
memori ROM yang tidak dapat diubah karena itu
program dimuat dalam alamat absolut. Penelusuran
kesalahan program (debugger) untuk mencoba
melaksanakan program harus ada
penetuanpenentuan alamat relatif terhadap awal
program, apabila tidak program tidak dapat dimuat
kembali. Memberikan nama simbolis kepada data
memberikan dua fasilitas terpisah. Data harus
ditentukan format dan isinya. Misalnya:

DATA RMB 1
Deklarasi ini menyediakan 1 byte untuk struktur
data yang disebut data (dalam bahasa asembli 6800)
sama halnya

TABLE RMB 50
Mengalokasikan 50 byte untuk struktur data
yang disebut tabel.
Langkah pertama untuk pemrograman dalam
bahasa assembly adalah menentukan assembler yang
akan digunakan dan format apa yang digunakannya.
Pemrograman bahasa assemblyadalah penulisan
62
instruksi mesin dalam bentuk mnemonik, dimana
setiapinstruksi mesin dalam bentuk biner atau nilai
hex diganti dengan mnemonik. Penggunaan
mnemonik membuat pemrograman pada tingkat
rendah ini lebih mudah dipahami dan lebih mudah
dikelola.
Contoh pemrograman assembly
BEGIN LDAA = $4F \ LOAD ACC A WITH VALUE 4F
BEGIN adalah alamat simbolis
LDAA adalah kode operasi
4F adalah operand
LOAD ACC A WITH VALUE 4Fadalah komentar
Sebuah program assembly terdiri dari urutan
instruksi perakitan, di mana instruksi ditulis baris per
baris. Setiap baris dari program assembly dibagi
menjadi empat bidang berikut:
1. Label
Label digunakan untuk memberikan nama
simbolik untuk alamat memori. Sebuah label
adalahidentifier yang dapat digunakan pada baris
program untuk cabang ke baris berlabel. Labeljuga
dapat digunakan untuk mengakses data
menggunakan nama simbolik. Deklarasi Label adalah

63
mirip dengan deklarasi identifier lain dan diakhiri
dengan karakter titik-dua. Identifier hanya bisa
dibentuk dengan karakter pertama adalah karakter
Alphabet, dan karakter selanjutnya boleh juga
numerik, dan karakter "_" serta "?". Panjang
maksimum label berbeda antara satu bahasa
assembly dengan bahasa yang assembly yang lain.
Beberapa bahasa assembly memungkinkan panjang
label hingga 32 karakter, sedangkan yang lainnya
hanya 6 karakter. Beberapaprosesor memerlukan
simbol titik dua setelah setiap label sementara yang
lainnya tidak. Bagian ini memungkinkan instruksi
mana saja untuk direferensi menggunakan tanda dan
bukan alamat absolut.
2. Operation Code (opcode)
Operation code atau mnemonik merupakan
singkatan simbolis berupa kode numerik yang unik .
Bagian ini secara simbolis menggambarkan instruksi
yang dilaksanakan. Pada contoh diatas LDAA adalah
mnemonik, bagian ini menentukan akumulator A
harus berhubungan dengan isi sebuah lokasi memori.
3. Operand

64
Operand adalah bentuk spesifik dari mnumonic
yang mengisyaratkan tugas tertentu. Bidang operan
terdiri dari informasi tambahan atau data yangopcode
membutuhkan. Bidang operan dapat digunakan untuk
menentukan konstanta, label, data langsung, daftar,
atau alamat.
4. Comment
Komentar menyediakan tempat untuk
menuliskan catatan terkaitdengan apa yang telah
dilakukan untuk tujuan debugging dan pemeliharaan.
Penulisan komentar diawali dengan simbol "/".
Tabel bahasa assembly untuk prosesor
sederhana:

65
O
Mnem
pera Isi Instruksi
onic
nd
Menghentikan
STOP
eksekusi
Memindahkan
LD X operand dari memori (di
lokasi x) ke AC
Menyimpan isi dari
STOP X
AC ke memori
MOVA Menyalin isi AC ke
C DR
MOVA Menyalin isi DR ke
C AC
Menambahkan DR ke
ADD
AC
Mengurangkan DR
SUB
dari AC
AND DR ke AC

NOT Komplemen isi AC


Melompat ke
A
BRA instruksi dengan alamat
dr
adr
A Melompat ke
BZ
dr instruksi adr jika AC = 0

66
Kategori instruksi menurut kode operasi
1. Instruksi transfer yang menyangkut alat
ekstern (memori atau I/O)
2. Instruksi transfer antara register (intern
terhadap MPU)
3. Instruksi aritmetika (misal ADD dan SUB)
4. Instruksi Logika (misal OR dan AND)
5. Instruksi tak simetris (seperti ROT dan
SHIFT)
6. Instruksi pengendali

Peninjauan keenam instruksi secara terperinci:


1. Instruksi transfer ke dan dari alat-alat
ekstern
Instruksi ini bertanggung jawab atas pergerakan
informasi antara satu register mikroprosesor dengan
lokasi ekstern yang tertentu, seperti memori atau
sebuah register.
Contoh dari perangkat instruksi 6800:
LDAA ADR 1
LDAA ADR 2
Instruksi diatas memuat isi alamat ADR 1 dan

ADR 2 pada register A dan B (A dan B adalah dua

67
akumulator intern 6800) ADR 1 dapat mencari lokasi
memori atau sebuah register serpih I/O. Setiap
instruksi yang mennunjukan alamat memori dapat
digunakan dalam modus pengalamatan mana saja
yang di sediakan mikroprosesor.
Misalnya pada 6800:
LDAA = 44
Memuat akumulator harga 44. Operand dimuat
apa adanya kedalam akumulator dan bukan sebagai
alamat memori.
2. Transfer antar register
Instruksi transfer antar register memanipulasi
data yang intern terhadpa MPU tanpa menunjuk alat
ekstern. Dilaksanakn jauh lebih cepat dari instruksi
yang menunjuk alat ekstern, karena beroperasi intern
dalam MPU.
3. Instruksi aritmetika
Terbatasnya daerah tersedia pada serpih
mikroprosesor untuk mengimpletasi fungsi CPU
instruksi aritmetik biasanya dibatasi pada
penjumlahan, selisih penambahan dan pengurangan,
dan instruksi pendukung, seperti DAA dan manipulasi
pindahan. Idealnya, instruksi aritmetikaharus berisi

68
semua instruksi aritmetika ditambah dengan
perkalian dan pembagian. Fungsi perkalian dan
pembagian disediakan hanyapada mikroprosesor 16-
bit.
4. Instruksi logika
Instruksi logika menyelenggarakan suatu
operasi logika menggunakan ALU. Paling sedikt
empat operasi logika harus disediakan:OR (=atau),
AND (=dan), OR ekslusif (disngkat XOR atau EOR),
NOT (=bukan). Hasil llogika dapat ditunjukan dengan
tabel logika. Dalam tabel logika, 0 mewakili salah dan
1 mewakili benar. Tabel logika untuk masing-masing
operasi sebagai berikut:
OR AND

A B A ˅ A B A
B ˄B
0 0 0 0 0 0
0 1 1 0 1 0
1 0 1 1 0 0
1 1 1 1 1 1

XOR NOT
69
A B A
XOR B A
0 0 0 0 1
0 1 1 1 0
1 0 1
1 1 0

5. Operasitak simetris
Operasi tak simetris adalah pergeseran,
perputaran, dan operasi serupa mengubah tempat bit
didalam sebuah register. Operasi taksimetris perlu
untuk melakukan instruksi perkalian atau pembagian,
dan untuk memeriksa isi bit di dalam register. Dalam
mikroprosesor 8-bit instruksi ini akan beroperasi
umunya hanya pada akumulator, meskipun sangat
diinginkan agar dapat beroperasi pada register mana
saja. Bisa tersedia variasi misalnya pertukaran nibble
pertukaran 4 bit kiri dan 4 bit kanan. Pergeseran ke
kiri 1 bit ekuivalen dengan perkalian dengan dua
dalam sistem biner.
Berikut tipe pergeseran
 Pergeseran logika, ke kanan atau ke kiri

70
 Pergeseran aritmetika, ke kanan atau ke
kiri
 Perputaran, ke kanan atau ke kiri
6. Instruksi pengendali
Instruksi pengendali mengubah urutan
pelaksanaan program, baik tak bersyarat maupun
dengan sesuatu cara tergantung dari harga indikator
status. Iinstruksi pengendali menyediakan
kemampuan intelegensia komputer. Instruksi ini
membedakan sebuah komputer dari sebuah
kalkulator. Ia memberi komputer kemampuan
mengimplement keputusan yang berbeda tergantung
harga parameter yang di hitung.
Dalam menulis program bahasa assembly untuk
arsitektur tertentuada hal-hal yang perlu
diperhatikan, yaitu:
1. Arahan Asssembler
Penggunaanarahanassembler merupakan hal
yang pentingdalam menulis program bahasa
assembly. Arahan Assembler adalah perintah
yangdipahami oleh assembler dan tidak sesuai
dengan instruksi mesin yang sebenarnya. Arahan
Assembler mempengaruhi cara assembler melakukan

71
konversikode assembly ke kode mesin. Misalnya,
arahan assembler khusus dapatdigunakan untuk
menginstruksikan assembler dalam menempatkan
item data sedemikian rupa sehingga mereka memiliki
keselarasan. Penyelarasan data dalam memori
diperlukan untuk implementasi arsitektur yang
efisien.
2. Penggunaan Simbol
Dalam program bahasa assembly simbol
digunakan untuk mewakili angka. Penggunaan simbol
bertuauan untuk membuat kode lebih mudah dibaca,
dipahami,dan debug. Simbol dijabarkan ke dalam nilai
numerik yang berhubungan denganassembler.
3. Penggunaan Operasi Sintetis
Penggunaan operasi sintetis membantu
programmer assembly untuk menggunakan
instruksiyang tidak langsung didukung oleh
arsitektur. Operasi sintesis kemudian diterjemahkan
olehassembler untuk satu set instruksi yang
didefinisikan oleh arsitektur.
4. Sintaks Assembler
Assembler biasanya memberlakukan beberapa
konvensi yang mengacu pada komponen perangkat

72
kerasseperti register dan lokasi memori. Salah satu
konvensi tersebut adalah awalan dari nilai langsung
dengan karakter khusus (#) atau nama register
dengankarakter (%).
5. Interaksi Dengan Sistem Operasi
Hardware yang mendasari dalam beberapa
mesin tidak dapat diakses secara langsung oleh
sebuah program. Sistem operasi (OS) berfungsi
sebagai media akses ke sumber dayaseperti memori
dan fasilitas I/O. Interaksi dengan sistem operasi (OS)
dapatberlangsung dalam bentuk kode yang
menyebabkan pelaksanaan fungsi yangbagian dari
OS. Fungsi-fungsi ini disebutsistem calls.
Program yang ditulis dalam bahasa assembly
perlu diterjemahkanke dalam bahasa mesin dalam
bentuk biner agar dapat dieksekusi. Dalam perakitan
dan proses eksekusi bahasa assembly terdapat 3
komponen utama yaitu assembler, data structures,
linker dan loader. Berikut ini adalah tiga langkah
dalam perakitan dan proses eksekusi bahasa
assembly pada masing-masing komponen.
1. Assembler (Perakit)

73
Assembler adalah program yang menghasilkan
instruksi kode mesin dari sumberkode program yang
ditulis dalam bahasa assembly. Assembler akan
menggantikan alamat simbolis dengan alamat
numerik, menggantikan kode operasi simbolik dengan
kode operasi mesin, media penyimpanan cadangan
untuk instruksi dan data, dan menerjemahkan ke
dalam konstantarepresentasi mesin. Cara kerja
assembler yaitu memindai program assemblydan
melakukan pemetaan instruksi untuk kode mesin.
Karena simboldapat digunakan dalam instruksi
sebelum mereka didefinisikan dalam yang
kempemindaian tunggalprogram mungkin tidak cukup
untuk melakukan pemetaan. Proses scan assembler
sederhana padaseluruh program perakitan terjadi dua
kali. Pada tahap pengujian pertama menghasilkan
tabel yang mencakup semua simbol dan nilai-nilai,
tabel inidisebut tabel simbol. Selama melewati
pengujian kedua, assembler akan menggunakan tabel
simbol dan tabellain untukmenghasilkan program
objek, dan output beberapa informasiyang akan
dibutuhkan oleh linker.
2. Data Structures

74
Assembler menggunakan setidaknya tiga tabel
untuk menjalankan fungsinya, yaitu tabel simbol,tabel
opcode, dan tabel pseudo instruksi. Tabel simbol,
yang dihasilkandalam satu lulus, memiliki sebuah
entri untuk setiap simbol dalam program ini. Yang
terdapat dalam setiapsimbol adalah nilai biner dan
informasi lainnya.
3. Linker dan Loader
Linker adalah entitas yang dapat
menggabungkan modul objek yang mungkin
dihasilkan dari beberapa modul perakitan secara
terpisah. Loader adalah operasisistem utilitas yang
membaca executable ke dalam memori dan memulai
eksekusi program. Singkatnya, setelah modul
perakitan diterjemahkan ke dalam modul obyek,
fungsidari linker dan loader adalah menyiapkan
program untuk eksekusi. Fungsi-fungsi initermasuk
menggabungkan modul objek bersama-sama,
menyelesaikan pengalamatan yang tidak diketahui
pada waktu perakitan, mengalokasikan penyimpanan,
dan akhirnya melaksanakan program.

75
76
BAB 4
ALU
ARITMATIC LOGIC
UNIT

ALU (Arithemtic And Logic Unit)


1. Pengertian dari ALU (Arithemtic And
Logic Unit)
Arithmetic Logic Unit (ALU) adalah salah satu
bagian dalam dari sebuah mikroprosesor yang
berfungsi untuk melakukan operasi hitungan
aritmatika dan logika.
Tujuan ALU adalahmelakukan keputusan dari
operasi logika sesuai dengan instruksi program.
Operator logika yang dipakai pada ALU adalah
sebagai berikut:
a. sama dengan (=)
b. tidak sama dengan (<>)
77
c. kurang dari (<)
d. kurang atau sama dengan dari (<=)
e. lebih besar dari (>)
f. lebih besar atau sama dengan dari (>=)

2. Skema ALU Inputs and Outputs


Control Unit, berfungsi untuk mengontrol operasi
CPU dan mengontrol komputer secara keseluruhan.

 Arithmetic And Logic Unit (ALU),


berfungsi untuk membentuk fungsi-fungsi
pengolahan data komputer.

 Register, berfungsi sebagai penyimpan


internal bagi CPU.

 Flags berfungsi sebagai unit control


untuk menentukan status prosesor dan hasil
operasi ALU sebelumnya.

Konversi Bilangan
1. Pengertian Konversi Bilangan

78
Konversi bilangan adalah suatu proses dimana
satu system bilangan dengan basis tertentu akan
dijadikan bilangan dengan basis yang lain.
Sistem Bilangan terdiri dari 4 antara lain:
1. Desimal (Basis 10) adalah Sistem
Bilangan yang paling umum digunakan dalam
kehidupan sehari-hari. Sistem bilangan desimal
menggunakan basis 10 dan menggunakan 10
macam simbol bilangan yaitu: 0, 1, 2, 3, 4, 5, 6, 7, 8
dan 9.
2. Biner (Basis 2) adalah Sistem Bilangan
yang terdiri dari 2 simbol yaitu 0 dan 1.
3. Oktal (Basis 8) adalah Sistem Bilangan
yang terdiri dari 8 Simbol yaitu 0, 1, 2, 3, 4, 5, 6, 7.
4. Hexadesimal (Basis 16), Hexa berarti 6
dan Desimal berarti 10 adalah Sistem Bilangan
yang terdiri dari 16 simbol yaitu 0, 1, 2, 3, 4, 5, 6,
7, 8, 9, A(10), B(11), C(12), D(13), E(14), F(15). Pada
Sistem Bilangan Hexadesimal memadukan 2 unsur
yaitu angka dan huruf. Huruf A mewakili
angka 10, B mewakili angka 11 dan seterusnya
sampai Huruf F mewakili angka 15.

79
2. Konversi Bilangan
Konversi Bilangan dibagi menjadi 3 yaitu
sebagaia berikut.
1. Konversi dari bilangan Desimal ke biner.
2. Konversi bilangan Desimal ke Oktal.
3. Konversi bilangan Desimal ke
Hexadesimal.
1. Konversi dari bilangan Desimal ke biner
Yaitu dengan cara membagi bilangan desimal
dengan dua kemudian diambil sisa pembagiannya.
Contoh:
1. 25410=…………. 2
254: 2 = 127 sisa 0
127: 2 = 63 sisa 1
63: 2 = 31 sisa 1
31: 2 = 15 sisa 1
15: 2 = 7 sisa 1
7: 2 = 3 sisa 1
3: 2 = 1 sisa 1
1: 2 = 0 sisa 1
0: 2 = 0 sisi 0

80
Jadi 25410 = 111111102 diurutkan dari sisa
pembagian terakhir sebagai MSB (Most Significant
Bit)

Konversi dari bilangan Biner ke Desimal


contoh:
111111102=………. 10
= ( 1 x 20 ) + ( 1 x 21 ) + ( 1 x 22 ) + ( 1 x 23 ) + ( 1 x
24 ) + ( 1 x 25 ) +
( 1 x 26 ) + ( 0 x 2 7 )
= ( 0 ) + ( 2 ) + ( 4 ) + ( 8 ) + ( 16 ) + ( 32 ) + ( 64 ) +
( 128 )
= 25410
Sehingga 111111102= 25410
2. Konversi bilangan Desimal ke Oktal
Yaitu dengan cara membagi bilangan desimal
dengan 8 kemudian diambil sisa pembagiannya.
Contoh:
4097 10 = …. 8

4097: 8 = 512 sisa 1


512: 8 = 64 sisa 0
64: 8 = 8 sisa 0

81
8: 8 = 0 sisa 0
Sehingga 409710 = 00018.
Konversi bilangan Oktal ke Desimal

0018 = …. 10

Caranya:
0018= 0 x 80 + 0 x 81 + 1 x 82
= ( 0 ) + ( 0 ) + ( 64 )
= 6410
Jadi, 00018= 6410

3. Konversi bilangan Desimal ke


Hexadesimal

Yaitu dengan cara membagi bilangan desimal


dengan 16 kemudian diambil sisa pembagiannya.

Contoh:

388810 = … 16

Caranya:
3888: 16 = 243 sisa 0
243: 16 = 15 sisa 3

82
15: 16 = 0 sisa 15 ingat 15 diganti dengan F.

0: 16 = 0
Sehingga 388810 = F3016

Konversi bilangan Hexadesimal ke Desimal


B6A16 = …. 10
Caranya:
B6A = (11 x 160) + (6 x 161) + (10 x 162)
= ( 176 ) + ( 96 ) + ( 2560 )
= 283210
Sehingga B6A16 = 283210

Proses ALU pada Cpu


1. Cara proses ALU pada CPU

Proses merupakan instruksi atau perintah yang


dikerjakan oleh computer untuk menjalankan operasi
data secara aritmatika dan logika yang ilakukan pada
data. Selama proses data, data diubah bentuk,
urutan, dan trukturnya sehingga mendapatkan
hasilnya. Setelah itu hasil tersebut disimpan idalam
data.

CPU terdiri dari 3 bagian utama yaitu:

83
 ALU ( aritmatica logical unit)

 CU ( control unit )

 REGISTER

a. ALU ( aritmatica logical unit )

Tugas utama dari ALU ialah melakukan semua


perhitungan aritmatika (matematika) yang terjadi
sesuai denagan instruksi tambahan, engurangan,
perkalian dan sebagainya.

b. CU (Control Unit)

Control Unit ( Unit kontrol ) menyimpan perintah


saat ini yang dilakukan oleh komputer,
memerintahkan ALU untuk melaksanaan dan
mendapatkan kembali informasi (dari memori) yang
diperlukan untuk melaksanakan perintah itu, dan
memindahkan kembali hasil ke lokasi memori yang
sesuai. Unit ini berfungsi mengontrol pembacaan
instruksi program komputer.

c. Register

84
Register merupakan alat penyimpanan kecil yang
mempunyai akses kecepatan tinggi yang digunakan
untuk menyimpan data dn instruksi yang sedang
diperoses, sementara data dan instruksi lainnya
masih disimpan di dalam memori utama untuk
menunggu giliran diproses.

CPU Adalah bagian dari komputer yang bertugas


menerima, menerjemahkan, menyimpan, dan
mengolah informasi serta menjalankan program
kontorl yang disimpan dalam memori

85
86
BAB 5
PROCESSING UNIT
DESIGN

Perangkat Pemroses (CPU)


Pengolahan data adalah sebuah proses
menjadikan sebuah data dari data asli menjadi data
yang baru (informasi) sesuai dengan kebutuhan
pengolahan. Jenis data yang diolah sangat bervariasi
seperti teks, gambar, suara dan sebagainya. Pada
dasarnya system computer memiliki beberapa fungsi
utama yaitu melakukan pengolahan data (data
processing), penyimpanan data (data storage),
pemindahan data (data movement) dan kendali
(control).
CPU (Central Processing Unit) merupakan
tempat pemrosesan instruksi-instruksi program. Pada

87
komputer mikro, processor ini disebut dengan
microprocessor, namun umumnya pengguna computer
menyebutnya sebagai CPU (Central Processing Unit).
CPU merupakan otak bagi sebuah system computer.
CPU memiliki 3 komponen utama yang merupakan
bagian tugas utamanya yaitu unit kendali (Control
Unit), unit arithmatika dan logika (arithmetic and
logic unit )dan beberapa simpanan yang berukuran
kecil yang disebut dengan register, yang berfungsi
membantu melakukan hubungan (interface) dari
danke memori. Tugas CPU adalah melaksanakan dan
mengawal keseluruhan operasi computer sehingga
bisa dikatakan hampir keseluruhan pemikiran
dilaksanakan disini, sehingga sering dinamakan
sebagai otak computer. CPU tempatnya terletak pada
papan induk (motherboard), pada bagian inilah juga
terletak segala pusat perangkat computer seperti
memori, port input-output (I/O) dan sebagainya.

Unit Kendali (Control Unit)


Control Unit mengartikan instruksi-instruksi dari
program komputer, membawa data dari alat input ke

88
main memory, mengambil data dari main memory
untuk diolah. Bila ada instruksi perhitungan
arithmatika atau perbandingan logika, control unit
mengirim instruksi tersebut ke arithmetic and logic
unit. Hasil dari pengolahan data ini dibawa oleh
control unit ke main memory untuk disimpan. Dengan
demikian, tugas control unit adalah sebagai berikut:
1. Mengatur dan mengendalikan alat-alat
input dan output.
2. Mengambil instruksi-instruksi dari main
memory, Melakukan pengiriman instruksi ke ALU
bila ada sebuah proses perhitungan aritmetic dan
logic dan mengawasi kerja ALU itu sendiri.
3. Mengambil data dari main memory kalau
diperlukan oleh proses
4. Mengirim instruksi ke arithmetic dan
logic unit bila ada perhitungan arithmatika dan
perbandingan logika serta mengawasi kerja dari
arithmatic and logic unit.
5. Menyimpan hasil proses ke main memory.

Control unit (CU) ini berupa chip elektronik yang


menggunakan sinyal elektrik yang mengarahkan

89
keseluruhan system computer untuk melaksanakan
suatu arus data. Dalam melakukan aktivitasnya, CU
selalu berkomunikasi terutama dengan ALU dan
memori untuk memastikan kelancaran sebuah system
computer. Ia juga bertanggung jawab untuk
menentukan operasi-operasi apa yang akan dipanggil
oleh program dan dengan cara bagaimana operasi-
operasi tersebut dilaksanakan.
Ketika sebuah computer pertama kali
dihidupkan, maka computer tersebut menjalankan
operasi bootstrap. Operasi ini akan membaca sebuah
instruksi dari suatu lokasi memori yang telah
diketahui sebelumnya dan mentransfer instruksi
tersebut ke unit kendali untuk dieksekusi. Instruksi-
instruksi dibaca dari memori dan dieksekusi sesuai
dengan urutan penyimpanannya. Program counter dari
suatu komputer menyediakan suatu cara untuk
menyimpan lokasi instruksi berikutnya. Urutan
eksekusi berubah dengan memindah lokasi instruksi
baru ke program counter sebelum pembacaan (fetch)
instruksi dikerjakan.
Control Unit merupakan komponen utama yang
mengarahkan sistem operasi dengan mengirimkan

90
sinyal kontrol ke datapath. Sinyal tersebut mengontrol
aliran data di dalam CPU dan antara CPU dan
eksternal unit seperti memori dan I/O. Kontrol bus
umumnya membawa sinyal antara control unit dan
komputer lainnya di clock driven manner. Sistem jam
menghasilkan urutan yang kontinu dari pulsa di
jangka waktu dan frekuensi tertentu.

Aritmetic Logic Unit (ALU)


Tugas utama dari arithmetic and logic unit(ALU)
adalah melakukan semua perhitungan arithmatik atau
matematika yang terjadi sesuai dengan instruksi
program. ALU melakukan instruksi pertambahan,
sedangkan untuk instruksi lain seperti pengurangan,
perkalian, pembagian dilakukan dengan dasar
penjumlahan. Karena dasar arithmatikanya adalah
penjumlahan, maka sirkuit elektronik ALU yang
digunakan dalam melaksanakan operasi arithmatika
disebut adder. Tugas lain dari ALU adalah melakukan
keputusan dari operasi logika sesuai dengan instruksi
program. Hasil operasi pada ALU akan diberikan
kepada CU sebelum ditampilakn ke layar monitor.

91
Operasi aritmetika yang dilakukan ALU seperti
penambahan (+), pengurangan (-), pembagian (/), dan
perkalian (*). Sedangkan operasi logika seperti
operasi boolean (OR, AND, NOT) atau perbandingan
yaitu untuk operasi perbandingan antara dua operand
yang ada, seperti sama dengan (=), tidak sama
dengan (<>), kurang dari (<), kurang dari atau sama
dengan (<=), lebih besar dari (>), serta lebih besar
atau sama dengan dari (>=).
ALU atau Unit logik-aritmetik (aritmetic-logic
unit) adalah bagian komputer yang melaksanaka
operasi logis pada data yang diproses oleh komputer.
Bagian komputer ini dapat merupakan bagian yang
relatif kecil yang terdiri dari satu atau lebih chip LSI
(chip tepadu sekala besar), atau untuk pengolah
bilangan yang besar (komputer berorientasi-ilmiah),
bagian ini terdiri dari banyak sekali larik komponen
logik berkecepatan tinggi. Walaupun terdapat variasi
dalam ukuran benda dan kerumitannya, mesin yang
kecil biasanya melaksanakan operasi aritmetik dan
operasi logisnya dengan memakai prinsip yang sama
dengan mesin yang besar. Yang berubah adalah
kecepatan gerbang logic dan flipflop yang dipakai,

92
juga teknik istimewa. dipakai untuk mempercepat
operasi dan supaya dapat melakukan beberapa
operasi secara paralel.
Walaupun banyak fungsi dapat dilaksanakan oleh
ALU dari mesin masa kini, operasi aritmetik dasar
yaitu penjumlahan, pengurangan, perkalian,
pembagian secara terus menerus masih merupakan
operasi “roti dan mentega” (perkerjaan dasar yang
dilakukan sehari-hari).
Idemengenai satu adderumum yang mampu
menambahkan dua register bersama-sama dan
menyimpan hasilnya dalam register lainnya
merupakan prinsip yang mendasar pada ALU.
Sehingga ALU didefinisikan sebagai sebuah unit yang
berisi sirkuit untuk menjalankan sekumpulan operasi
mikro aritmatika dan logika.

Fungsi Aritmatika pada sebuah ALU biasanya


mencakup integer, floating-point(real) dan desimal
berkode biner. Disini operasi yang terjadi adalah
penambahan, pengurangan, perkaliandan pembagian.

93
Fungsi Logika pada ALU lebih sederhana. Untuk
segala operasi logika yang ingin diterapkan, maka
hanya perlu memuat sejumlah gerbang logika tertentu
untuk operas itersebut(satu untuk setiap pasangan
bit input).

Selain itu pula ALU dapat di gunakan sebagai


Pergeseran, dengan menerapkan sirkuit geser
kombinasional yang dikenal sebagai skalar posisi.
Karena kita ingin menjalankan pergeseran bersamaan
dengan fungsi aritmatika atau logika, seperti pada
perkalian atau pengepakan string, maka akan lebih
efisien untuk men-set penggeser diluar ALU. Dengan
cara ini dapat ditambahkan dua angka dan
menggeser seluruh hasil dalam satu langkah dari
pada meneruskan hasilnya ke input ALUlagi
dankemudian mensetup ALU untuk menggeser angka
tersebut.

Yang dilakukan oleh ALU adalah menjumlahkan,


mengurangi, menggeser, dan seterusnya, jika unit itu
diberi signal masukan dengan urutan yang benar.
Bergantung pada elemen kendali untuk memberi

94
signal ini karena hal itu merupakan fungsi unit
memori untuk menyiapkan elemen aritmetik bersama
dengan informasi yang harus dipakai . Kita anggap
bahwa bagian memori suatu mesin mampu
mengirimkan signal kendali yang benar, dan bahwa
data yang akan diolah telah tersedia. Jadi, fungsi ALU
adalah menjumlahkan, mengurangi, atau operasi yang
diperintahkan oleh elemen kendali.
Alu mempunyai dua type:
1. serial-by-bit ALU,yaitu menambakan satu
bit dari setiap 2 angka digit ganda(multidigit)
setiap waktu.
2. Parallel ALU, yang memproses semua
digit secara serentak. Jauh Lebih cepat
dibandingkan serial-by-bit. sebenarnya semua ALU
menjadi parallel sekarang, dikarenakan
pengurangan harga transistors.

Konstruksi ALU
Informasi yang diolah dalam komputer biasanya
dibagi bagi menjadi “kata”, setiap kata terdiri dari
sejumlah bit tertentu . misalnya kata yang diolah oleh
mesin biner panjangnya mungki 32 bit. Dalam kasus

95
ini ALU mampu melakukan penjumlahan, pengurangan
dan sebagainya, kata yang panjangnya 32 bit. Operan
yang diapakai dikirim dari penyimpanan komputer,
dan elemen kendali mengarahkan operasi yang harus
dilaksanakan. Jika penjumlahan harus dilakukan
bilangan yang ditambahkan dan penambahnya harus
dikirmkan ke ALU yang harus melaksanakan
penjumlahan bilangan itu dan menyimpan hasilnya
(jumlahnya) sedikitnya untuk sementara waktu.
Untuk bisa memperkenalkan beberapa konsep,
kita terlebih dahulu meninjau konsep ALU komputer
yang biasa dipakai. Peranti penyimpan terdiridari
sekumpulan register flip-flop yang masing-masing
terdiri dari suatu atau lebih flip-flop. Panjang setiap
register didefinisikan sebagai banyaknya informasi
maksimum yang dapat disimpan oleh register. Dalam
register biner, panjang register sama dengan
banyaknya digit biner maksimum yang dapat disimpan
dan dalam register BCD, panjang register sama
dengan banyaknya digit desimal yang dapat disimpan
dalam register itu.
Untuk memudahkan, berbagai register ALU
biasanya diberi nama, misalnya register x, register b,

96
register MQ, dan sebagainya dan flip-flopnya diberi
nama yang sama, sehigga register X berisi flip-flop
X1,X2,X3, dan seterusnya.
Hampir semua komputer (khususnya
mkroprosesor) memiliki register yang disebut
akumulator yang merupakan register utama untuk
aritmetik dan oprasi logis. Register ini menyimpan
hasil setiap operasi aritmetik atau operasi logis, dan
rangkaian penggerbangan ditempelkan pada register
ini, sehingga operasi yang perlu dilakukan pda isinya
dan pada register lain yang berkaitan. Jadi
akumulator merupakan register penyimpan dasar dari
elemen aritmetik. Jika mesin dintruksikan untuk
memuati akumulator, elemen kendali mula mula akan
membersihkan akumulator dengan meghapuskan
segala sesuatu yang tersimpan di dalamnya,
kemudian memindahkan operan terpilih yang ada
dalam penyimpanan ke dalam register akumulator.
Jika komputer itu diperintahkan untuk
menjumlahkan, maka bilangan yang tersimpan dalam
akumulator akan berupa bilangan yang ditambahkan.
penambahannya diletakan dalam memori dan
rangkaian komputer akan menambahkan penambah

97
pada bilangan yang tadinya tersimpan dalam
komputer dan menyimpan hasil jumlahnya dalam
akumulator.
Beberapa komputer berubah menjadi memiliki
akumulator tunggal komputer itu memiliki dua atau
lebih akumulator, dan akumulator itu disebut,
misalnya akumulator A, dan akumulator B (seperti
dalam mikroprosessor 6800) atau ACC1, ACC2, dan
seterusnya (seperti dalam komputer Data General).
Bila banyaknya register yang disediakan untuk
menyimpan operan lebih banyak daripada empat,
registernya seringkalidisebut register umum, dan
register individual diberi nama, misalnya, register
umum 4, register umum 8, dan seterusnya.

Register
Register merupakan tempat penyimpanan kecil
yang mempunyai kecepatan tinggi, lebih cepat 5
sampai 10 kali dibandingkan dengan kecepatan
perekaman atau pengambilan data di main memory.
Register digunakan untuk menyimpan instruksi dan
data yang sedang diproses oleh CPU, sedang
instruksi-instruksi dan data lainnya yang menunggu

98
untuk diproses disimpan di main memory. Secara
analogi register ini dapat diibaratkan dengan ingatan
di otak bila anda melakukan pengolahan data secara
manual. Konsep penting yang mempengaruhi
kecepatan dari processor adalah ukuran dari register.
Istilah dari Word size menggambarkan ukuran dari
operand register yang berkisar dari 8 sampaii 64 bit.
Misalnya operand register mempunyai word size 32
bit, maka processor tersebut disebut dengan 32-bit
processor, selanjutnya banyak yang menyebut
komputernya sebagai komputer 32 bit.
Contoh register yang sering digunakan adalah:
1. Memory Buffer Register (MBR), berisi
sebuah word yang akan disimpan di dalam memori
atau digunakan untuk menerima word (susunan
data bit) dari memori.
2. Memory Address Register (MAR),
berfungsi menentukan alamat word di memori
untuk dituliskan dari MBR atau dibaca ke MBR.
3. Instruction Register (IR), berisi instruksi
8-bit op-code (kode operasi) yang akan
dieksekusi.

99
4. Instruktion Buffer Register (IBR),
berfungsi untuk menyimpan sementara instruksi
sebelah kanan word di dalam memori.
5. Program Counter (PC), berisi alamat
pasangan instruksi berikutnya yang akan diambil
dari memori.
6. Accumulator (AC) dan multiple-quontient
(MQ), berfungsi untuk menyimpan sementara
operand dan hasil operasi ALU. Seperti hasil
perkalian dua buah bilangan 40-bit adalah sebuah
bilangan 80-bit, 40-bit yang paling berarti (most
significant bit) disimpan dalam AC dan 40-bit yang
kurang berarti (least significant bit) disimpan di
MQ.
Beberapa CPU menggunakan suatu Cache
memory atau disebut sebagai scratch-pad memory
atau high-speed buffer atau buffer memory agar kerja
CPU lebih efisien dan untuk mengurangi waktu yang
terbuang. Tanpa Cache memory, CPU akan menunggu
hasil pengolahan selesai dikirim ke memori utama
baru proses selanjutnya bisa dilakukan, padahal
proses dari memori utama lebih lambat dibanding

100
dengan kecepatan register. Letak Cache memory
antara CPU dengan memori utama.
Gambar berikut menjelaskan posisi dari cache
memori:

CPU Cache memory Memori


Utama

Jalur data dan jalur alamat (ADDRESS) selalu


bekerja beriringan dalam menggunakan lintasan data
dari dan ke memori, yaitu membaca atau mengganti
setiap data di memori dalam RAM (Random Access
Memory). Sedangkan ROM (Read Only Memory) hanya
dapat dibaca dan tidak dapat dihapus.
CPU 8088 dirancang untuk melaksanakan
instruksi, menjalankan operasi aritmatika dan operasi
logika, disamping menerima instruksi dan
melewatkan data menuju dan dari memori. Jadi sifat
register mirip dengan variable pada bahasa
pemrograman tingkat tinggi.
Jadi register sebenarnya adalah sebuah memori
kecil (8 atau 16 bit) yang berfungsi untuk
transit/buffer data dalam operasi oleh processor
8088. Register ada beberapa jenis, masing-masing

101
mempunyai fungsi yang berbeda/khusus. Jenis
register adalah sebagai berikut:

General Purpose Register


1. Akumulator, berfungsi sebagai
akumulator biner, operasi aritmatika, logika, shift,
rotasi dan lintas data dari dan ke port.
2. Basis, berfungsi sebagai base alamat
memori, yaitu digunakan untuk mencatat address
memory yang isinya akan dikerjakan dan dapat
melaksanakan operasi aritmatika dan logika.
3. Counter, digunakan untuk perintah loop
dan perintah block transfer, termasuk operasi
string.
4. Data, digunakan untuk menampung
address poil yang tidak terdapat pada register
lainnya.

Pointer dan Index Register


1. BP (Base Pointer), digunakan untuk
mencatat address data di stack yang dikerjakan.
2. SP (Stack Pointer), digunakan untuk
mencatat address stack dengan operasi push dan
pop

102
3. SI (Source Index), digunakan untuk
mencatat asal address memory yang isinya akan
dikerjakan/menunjuk offset sumber
4. DI (Destination Index), digunakan untuk
mencatat tujuan address data/menunjuk offset
tujuan
5. IP (Instruction Pointer), biasanya register
ini bersama (Code Segment) CS untuk mencatat
address tempat kode bahasa mesin sutu program
yang digelar di RAM/menunjuk instruksi berikut
yang akan dieksekusi (tidak dapat diakses oleh
programmer)

Segment Register
Segment register terdiri atas:
1. CS (Code Segment), digunakan untuk
mencatat address segment memory tempat kode
operasi suatu program yang akan dibaca dan
dilaksanakan oleh CPU
2. DS (Data Segment), digunakan untuk
mencatat address segment memory tempat
menyimpan data di memori yang digunakan oleh
program

103
3. SS (Stack Segment), digunakan untuk
mencatat address segment memory yang
digunakan menjadi stack dalam operasi push dan
pop
4. ES (Extra Segment), digunakan bagi data
yang tidak terdapat dalam CS, DS dan SS

104
Mag Register
Mag register digunakan untuk menampung tanda
pada operasi yaitu:
1. Operasi khusus tentang kerja
microprocessor, terdiri atas bit:
a. OF (Over Flow)
b. DF (Direction Flag)
c. IF (Interupt Flag)
d. TU (Trap Flag)
2. Operasi Aritmatika dan Logika, terdiri
atas bit:
a. SF (Sign Flag)
b. ZF (Zero Flag)
c. AF (Auxiliary Flag)
d. PF (Parity Flag)
e. CF (Carry Flag)
Setiap Register set berbeda beda dari satu
komputer ke komputer lain. Register set biasanya
merupakan kombinasi dari tujuan umum sebuah
register dan tujuan khusus sebuah register. Seperti
namanya tujuan umum register berfungsi untuk
tujuan apapun. Sedangkan tujuan khusus register
yaitu sebagai komponen yang memiliki fungsi tertentu

105
dalam cpu, sebagai contoh PC (program counter)
adalah tujuan khusus register yang digunakan untuk
menyimpan alamat dari instruksi yang akan
dieksekusi selanjutnya.
Contoh lain dari tujuan khusus register adalah
instruksi register (IR), yang digunakan untuk
menyimpan instruksi yang sedang dijalankan.
sedangkan ALU juga berfungsi menyediakan sirkuit
yang dibutuhkan untuk melakukan aritmatika, operasi
logis dan pergeseran dituntut dari set instruksi. Unit
kontrol adalah entitas yang bertanggung jawab untuk
mengambil instruksi yang akan dieksekusi dari
memori utama dan decoding dan kemudian
mengeksekusinya.
Register dari sebuah komputer secara kolektif
disebut sebagai kumpulanregister (registerset).
Register adalah komponen dalam computer yang
dibangun dari flip flop dan gerbang. Register biasanya
diukur berdasarkan banyaknya bit (binary digit) yang
dapat disimpan. Berdasarkan data yang dikelolanya,
register dapat dibedakan menjadi:
1. Register data yang digunakan untuk
menyimpan bilangan integer

106
2. Register alamat yang menyimpan alamat
yang digunakan untuk mengakses memori
3. Register tujuan umum yang dapat
menyimpan data maupun alamat
4. Register floating point yang menyimpan
bilangan floating point
5. Register konstanta yang menyimpan nilai
yang hanya dapat dibaca
6. Register vektor yang menyimpan data
untuk melakukan pemrosesan vektor.
7. Register tujuan khusus menyimpan
kondisi program (program state) termasuk
didalamnyan pencacah program, petunjuk
tumpukan (stack pointer) dan register status.
8. Register yang berhubungan dengan
pengaksesan memori seperti register penahan
(buffer register), register data dan register
alamat.

Eksekusi Instruksi
Salah satu ciri processor yang dirancang untuk
tujuan umum (general purpose processor) adalah
terdapat memori yang menyimpan intruksi dan data.

107
Program menjadi sangat dominan daripada perangkat
kerasnya. Perangkat keras dirancang sefleksibel
mungkin untuk menjalankan sebuah instruksi.
Instruksi yang tersimpan dalam memori secara
berurutan dieksekusi oleh processor. Proses
eksekusinya sesuai dengan alamat yang ditunjukkan
oleh pencacah (PC/program counter). Nilai PC ini yang
digunakan sebagai alamat instruksi yang akan
dijalankan oleh processor.
Secara umum terdapat tiga tahap dalam
eksekusi instruksi, sebagai berikut:
1. Fetch
Pengambilan instruksi dari memori dengan
menggunakan PC sebagai alamatnya. Pada beberapa
processor instruksi disimpan sementara dalam
Register Instruksi.
Pencacah (PC) mengeluarkan nilai yang
digunakan sebagai alamat memori instruksi yang
akan dibaca. Instruksi yang telah dibaca dibagi
menjadi beberapa segmen dan dikirim ke komponen
yang berbeda.
2. Decode

108
Penerjemahan kode operasi yang ditunjukkan
oleh 6 bit kode operasi. Proses ini dilakukan di unit
kendali yang selanjutnya mengeluarkan sinyal kendali
untuk menjalankan instruksi tersebut.
Proses ini bertujuan untuk menerjemahkan kode
operasi dan menghasilkan 9 bits kendali sering
disebut sebagai mikroinstruksi.
3. Execute
Tahap menjalankan instruksi yang telah
diterjemahkan. Tergantung dari jenis instruksi yang
dieksekusi.
Tahap akhir dalam menjalankan instruksi yaitu
eksekusi. Dalam eksekusi instruksi, suatu instruksi
dibedakan menjadi tiga kelas sebagai berikut:
1. Tipe-R (R-type)
Tipe ini digunakan untuk menjalankan operasi-
operasi aritmatik.
2. Load/Store type
Tipe ini digunakan untuk menjalankan instruksi
yang berkaitan dengan memori baik membaca
maupun menulis.
3. Branch-type

109
Tipe ini digunakan untuk menjalankan instruksi
lompatan dan pencabangan.

Data Path
CPU dapat dibagi menjadi bagian data dan
bagian kontrol. Bagian data,yang biasaya disebut
datapath, datapath berisi register dan ALU. Datapath
adalah kapabel yang melakukan operasi tertentu
pada item data. Bagian kontrol pada dasarnya adalah
unit kontrol, yang mengeluarkan sinyal kontrol untuk
datapath tersebut. dari internal ke CPU, data yang
berpindah dari satu register ke register yang lainya
dan diantara ALU dan register. Gerakan data internal
dilakukan melalui bus lokal, yang dapat membawa
data,instruksi, dan alamat. Secara eksternal, data
yang bergerak dari register ke memori dan perangkat
I/O, seringkali dengan menggunakan bus sistem.
Pergerakan data internal di antararegister dan antara
ALU dan register dapat dilakukan dengan
menggunakan berbagaiorganisasi termasuk satu bus,
dua bus, atau organisasi tiga bus. Menurut pendapat
datapaths juga dapat digunakan di antara komponen

110
komponen yang mentransfer data di antara mereka
lebih sering. Sebagai contohnya, isi dari PC ditransfer
keMAR untuk mengambil instruksi baru pada awal
setiap siklus instruksi. Oleh karena itu,a datapath
khusus dari PC ke MAR dapat berguna dalam
mempercepat inibagian dari eksekusi instruksi.

111
112
BAB 6
DESAIN SISTEM
MEMORI

Memory merupakan alat penyimpanan yang


menyimpan bersifat sementara atau permanen.
Memory dibutuhkan komputer untuk memudahkan
penyimpanan dan pemrosesan data. Kebutuhan
pengolahan dan penyimpanan data oleh user semakin
meningkat seiring berkembangnya kebutuhan dan
teknologi, oleh karena itu dibutuhkan memori
penyimpanan yang dapat memaksimalkan kinerja
komputer, bukan hanya dalam hal kapasitas, namun
juga dalam hal kecepatan akses data.
Penyimpanan dalam komputer dibagi menjadi
dua bagian utama yaitu memori utama dan memori
sekunder. Program-program dalam komputer dapat
dijalankan jika terletak dalam memori utama karena

113
program-program tersebut dapat mengakses
beberapa informasi secara langsung di sini, maka
agar dapat berjalan dengan optimal semua data harus
di olah dan disimpan dalam memori utama, namun hal
ini tidak mungkin karena.
1. Memori utama memiliki tempat
penyimpanan yang sangat kecil sehingga tidak
memungkinkan untuk menyimpan data yang
sangat besar
2. Memori utama bersifat volatile, yakni
data yang tersimpan dalam memori ini akan hilang
ketika daya dalam komputer dimatikan
Agar komputer dapat melakukan pengolahan
data yang efektif dan efisien, para ahli melakukan
berbagai riset untuk menemukan suatu terobosan
memory yang dapat menyimpan dalam kapasitas
besar namun memiliki kecepatan akses yang tinggi.
Hal ini tentu saja sangat sulit dilakukan mengingat
mahalnya harga memori yang memiliki kecepatan
akses tinggi, oleh karena itu diperlukan suatu hirarki
memori (tingkatan memori) yang dapat memenuhi
kebutuhan-kebutuhan tersebut.

114
Hirarki Memori
Sistem hirarki memori memungkinkan memori
memiliki waktu akses yang tinggi dengan harga yang
murah dan memiliki penyimpanan yang besar. Sistem
hirarki ini memerlukan beberapa jenis memori agar
dapat mengoptimalkan kinerja komputer, diantaranya
yaitu memori register, memori cache, memori utama
dan beberapa memori penyimpanan lain, berikut
contoh hirarki memori yang dipakai saat ini.

Gambar 7. Hirarki Memori


Komponen-komponen dalam hirarki memori:
a. CPU Registers
CPU merupakan komponen terpenting dari
sistem komputer. CPU adalah komponen pengolah
115
data berdasarkan instruksi-instruksi yang diberikan
kepadanya. CPU terdiri dari dua bagian utama yaitu
unit kendali (control unit) dan unit aritmatika dan
logika (ALU) selain itu, CPU mempunyai beberapa alat
penyimpan yang berukuran kecil yang disebut
register.
Unit Kendali (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.
CPU berfungsi seperti kalkulator, hanya saja CPU
memiliki daya proses yang lebih tinggi. Fungsi utama
dari CPU adalah melakukan operasi aritmatika dan
logika terhadap data yang diambil dari memori atau
dari informasi yang dimasukkan melalui beberapa
perangkat keras, seperti papan ketik,pemindai, tuas
kontrol, maupun tetikus. CPU dikontrol menggunakan
sekumpulan instruksi perangkat lunak komputer.
Perangkat lunak tersebut dapat dijalankan oleh CPU

116
dengan membacanya dari media penyimpan seperti
cakram keras, disket, cakram padat, maupun pita
perekam. Instruksi-instruksi tersebut kemudian
disimpan terlebih dahulu pada memori fisik (RAM),
yang mana setiap instruksi akan diberi alamat unik
yang disebut alamat memori. Selanjutnya, CPU dapat
mengakses data-data pada RAM dengan menentukan
alamat data yang dikehendaki.
Saat sebuah program dieksekusi, data mengalir
dari RAM ke sebuah unit yang disebut dengan bus
yang menghubungkan antara CPU dengan RAM. Data
kemudian didekode dengan menggunakan unit proses
yang disebut sebagai pendekoder instruksi yang
sanggup menerjemahkan instruksi. Data kemudian
berjalan ke unit aritmatika dan logika (ALU) yang
melakukan kalkulasi dan perbandingan.
Suatu data bisa disimpan sementara oleh ALU
dalam sebuah lokasi memori yang disebut dengan
register supaya dapat diambil kembali dengan cepat
untuk diolah. ALU dapat melakukan operasi-operasi
tertentu, meliputi penjumlahan, perkalian,
pengurangan, pengujian kondisi data dalam register,
hingga mengirimkan hasil pemrosesannya kembali ke

117
memori fisik, media penyimpan atau register untuk
diolah lagi. Selama proses ini terjadi, sebuah unit
dalam CPU yang disebut dengan penghitung program
akan memantau instruksi yang sukses dijalankan
supaya instruksi tersebut dapat dieksekusi dengan
urutan yang benar dan sesuai.
b. Memori Cache
Cache berasal dari kata cash yang artinya
tempat menyembunyikan atau tempat menyimpan
sementara. Cache merupakan memori yang memiliki
kapasitas lebih kecil dari memori utama namun
memiliki kecepatan yang lebih besar dari memori
utama. Penyimpanan sementara ini memungkinkan
peningkatan transfer data dengan cara menyimpan
data yang pernah diakses pada cache tersebut,
sehingga apabila data yang ingin diakses adalah data
yang sama maka, akses akan dapat dilakukan lebih
cepat. Memori cache ini terletak antara register dan
RAM (main memory) sehingga pemrosesan data dari
register tidak langsung mengacu pada memori utama.
c. Memori Utama (Main Memory)
CPU (Central Processing Unit) hanya dapat
menyimpan data dan intstruksi di register yang

118
memiliki ukuran kecil, sehingga tidak dapat
menyimpan semua informasi yang dibutuhkan seluruh
proses. Untuk mengatasi hal ini dibuat suatu alat
pemroses yang memiliki daya tampung besar, saperti
memori utama.
Memori utama merupakan kumpulan blok-blok
array di mana masing-masing blok tersebut dapat
menyimpan suatu informasi baik berupa data maupun
intstruksi dan tiap-tiap blok lokasi tersebut
ditunjutkkan oleh suatu alamat yang disebut dengan
address memory.
d. Penyimpanan Sekunder (Secondary
Storage)
Kebutuhan akan memori utama saja tidak
mencukupi, maka diperlukan peralatan tambahan
untuk menyimpan data yang lebih besar. Kapasitas
memori penyimpan dapat mempengaruhi kecepatan
pemrosesan data.
e. Hirarki Cache memory
Pada semua siklus instruksi, prosesor
mengakses setidaknya satu kali untuk membaca
instruksi bahkan lebih, untuk membaca operand
dan/atau menyimpan hasilnya. Kecepatan eksekusi

119
sebuah prosessor jelas dibatasi oleh waktu siklus
memori. Keterbatasan ini terjadi karena adanya
ketidak cocokan antara kecepatan prosessor dan
memori utama. Untuk menjembatani ketidaksesuaian
ini para ahli menggunakan suatu memori khusus yang
di sebut Cache memory.
Cache memory adalah memori berbasis SDRAM
berukuran kecil dan berkecepatan tinggi yang di
kendalikan secara otomatis oleh hardware. Ukuran
cache cukup kecil sehingga harga rata-rata per bit
mendekati harga memori utama. Semakin besar
cache, semakin besar jumlah gate yang terdapat pada
pengalamatan cache.
Penemuan Cache memory merupakan solusi
untuk memberikan kecepatan memori yang
mendekati kecepatan prosesor, dan sekaligus
memberikan memori semikonduktor yang berukuran
besar dengan harga yang murah. Cache memory
meningkatkan kinerja komputer dengan cara
menjembatani perbedaan kecepatan antara CPUdan
memori utama.

120
CPU

Cache

Memori Utama

Gambar 8. Hubungan Cache memory dengan


memori utama
Informasi yang terletak di memori cache dapat
diakses dalam waktu yang lebih kecil dibandingkan
pengaksesan informasi dalam memori utama.
Beberapa perintah dan data yang ditampung dalam
Cache memory biasanya memiliki waktu akses
sekitar 10-25 % dari waktu yang diperlukan untuk
mengakses memory utama. Dengan demikian, satu
unit pengolah pusat (CPU) dengan memori cache
bisamenggunakan jauh lebih sedikit waktu menunggu
instruksi dan operan yang akan diambil dan/atau
disimpan. Komputer yang tidak memiliki Cache
memory memiliki perbedaan yang signifikan dengan
komputer yang menggunakan Cache memory dalam
hal kecepatan.

121
a. Jenis-jenis Cache memory
Berdasarkan letaknya, Cache memorydibagi
menjadi dua macam, yaitu.
i. Cache memory yang terdapat pada
internal processor, Cache memory jenis ini
memiliki kecepatan akses yang sangat tinggi dan
harganya sangat mahal. Hal ini bisa terlihat pada
prosesor yang berharga mahal seperti P4,
P3,AMD-Athlon, dll. Semakin tinggi kapasitas L1,
L2 Cache memory maka semakin mahal dan
semakin cepat processor.
ii. Cache memory yang terdapat di luar
processor, yaitu berada pada motherboard,
memori jenis ini kecepatan aksesnya sangat
tinggi, meskipun tidak secepat cache memori
jenis pertama (yang ada pada internal processor).
Semakin besar kapasitasnya maka semakin mahal
dan cepat. Hal ini bisa kita lihat pada
motherboard dengan beraneka ragam
kapasitasCache memory, yaitu 256 kb, 512 kb, 1
Mb, 2 Mb, dll.
Cache memory biasanya mempunyai beberapa
level yang menunjukkan tingkat kedekatannya dengan

122
mikroprosesorcontoh, L1 cache ada pada chip yang
sama dengan mikroprosesor (built-in), sedangkan L2
cache adalah Cache memory yang merupakan chip
tersendiri yang terpisah dari microprocessor.
b. Prinsip kerja cache memory
Cache berisi salinan sebagian memori utama.
Pada saat CPU membaca sebuah word memori, maka
dilakukan pemeriksaan untuk mengetahui apakah
word terdapat pada cache atau tidak. Jika ada maka
word akan dikirim ke prosesor dan jika tidak ada
maka blok memori utama yang terdiri dari sejumlah
word akan dibacakan ke dalam cache kemudian
dikirim ke prosesor.

123
Gambar 8. Operasi pembacaan cache
c. Fungsi pemetaan (mapping)
Cache memory memiliki beberapa saluran yang
dihubungkan dengan blok-blok memori utama, namun
saluran cache memiliki jumlah lebih sedikit
dibandingkan dengan blok-blok tersebut, sehingga
perlu algoritma untuk pemetaan blok-blok memori ke
dalam saluran cache dan diperlukan alat untuk
menentukan blok memori utama yang sedang
memakai saluran cache. Pemilihan fungsi pemetaan
dalam cache bisa bersifat langsung, asosiatif dan set-

124
asosiatif. Perbedaan ketiga teknik pemetaan ini
terletak pada kriteria yang digunkan untuk
menempatkan cache dalam sebuah blok memori
utama dan penggantian cache dengan blok masuk
ketika blok tersebut penuh.
i.Pemetaan langsung (Direct mapping)
Direct mapping merupakan teknik pemetaan yang
paling sederhana, yaitu meletakkan masing-masing
blok memori utama hanya ke sebuah saluran cache
saja. Fungsi pemetaan ini mudah diimplementasikan
menggunakan alamat. Cache yang diakses dengan
menggunakan alamat memori utama dianggap terdiri
dari tiga field yaitu tag, line dan word.

125
Gambar 9. Teknik pemetaan langsung
Pemetaan secara langsung memiliki keuntungan
dalam kesederhanaan algoritma pemetaannya.
Kesederhanaan dalam menentukan keberadaan untuk
menempatkan blok memori utama dalam cache ini
memudahkan proses pemetaan, namun teknik
pemetaan ini tidak efektif untuk pemetaan dalam
jumlah banyak.
Kekurangan teknik pemetaan ini adalah terdapat
lokasi cache yang tetap untuk sembarang blok-blok
yang diketahui, dengan demikian apabila suatu
program secara berulang-ulang melakukan word

126
reference dari dua blok yang berbeda memetakan ke
saluran yang sama, maka blok-blok itu secara terus
menerus akan di swap ke dalam cache, akibatnya
rasio hitnya akan menjadi rendah.

ii. Pemetaan asosiatif (Fully associative


mapping)
Pemetaan asosiatif dapat mengatasi kekurangan
pemetaan langsung dengan cara mengizinkan setiap
blok memori utama untuk dimuatkan ke sembarang
saluran cache. Dalam hal ini, controllogiccache
menginterpretasikan alamat memori hanya sebagai
sebuah field tag dan field word. Field tag secara unik
mengidentifikasi suatu blok memori utama.
Untuk menentukan apakah suatu blok berada di
dalam cache, makacontrol logic cacheharus secara
simultan memeriksa setiap saluran tag yang sesuai.
Dengan pemetaan asosiatif, terdapat fleksibilitas
penggantian blok ketika sebuah blok di baca ke
dalam cache.
Sebuah blok input memori utama dapat ditempatkan
di tempat manapun yang memiliki blok cache. Oleh
karena itu, alamat yang dikeluarkan oleh prosesor

127
hanya perlu memiliki dua bidang yaitu tag, untuk
mengidentifikasi blok sementara yang berada di
cache dan word, untuk mengidentifikasi elemen
dalam blok yang diminta oleh prosesor.

Gambar 10. Teknik pemetaan fully-associative


Kekurangan pemetaan ini adalah kompleksitas
rangkaian yang diperlukan untuk menguji tag seluruh
saluran cache secara paralel.

iii. Pemetaan set-asosiatif (Set-Associative


mapping)
Teknik pemetaan ini dilakukan dengan membagi
cache menjadi beberapa set. Setiap set terdiri dari
sejumlah blok. Setiap satu set cache memiliki peta
128
blok memori utama berdasarkan pada persamaan,
dimana S adalah jumlah set dalam cache,i adalah
jumlah blok memori utama, dan s adalah cache
khusus yang diatur untuk memblokir peta i namun,
sebuah blok yang masuk peta ke setiap blok di
ditempatkan oleh set cache oleh karena itu, alamat
yang dikeluarkan oleh prosesor dibagi menjadi tiga
bidang yang berbeda yakni tag, set dan word.
Tag merupakan blok unik yang ditargetkan dalam set
yang ditentukan. Set digunakan untuk
mengidentifikasi set cache tertentu yang idealnya
harus memegang blok yang ditargetkan. Sedangkan
word digunakan untuk mengidentifikasi elemen (kata)
dalam blok yang diminta oleh prosesor

129
Gambar 11. Teknik pemetaan set-
associative
d. Algoritma penggantian (replacement
algorithm)
Algoritma penggantian bekerja dengan memilih blok
yang akan diganti. Agar lebih efektif, blok yang diganti
130
adalah blok yang memiliki kemungkinan paling kecil
untuk digunakan kembali pada waktu dekat yaitu
dengan mengganti blok yang paling lama berada di
dalam cache dengan tanpa ada referensi ke blok
tersebut. Algoritma penggantian ini sering disebut
sebagai algoritma Least Recently Used (LRU).
Mekanisme hardware diperlukan untuk
mengidentifikasi blok yang Least Recently Used.
Pada dasarnya teknik penggantian di bedakan
menjadi 3 yaitu, Random Selection, First In First Out
(FIFO) dan Least Recently Used (LRU). Random
Selection adalah blok yang dipilih secara acak,
sementara algoritmaFirst In First Out (FIFO) adalah
blok yang berada di cache yang terpanjang, dan yang
terakhir adalah Least Recently Used (LRU), LRU
adalah blok yang digunakan sementara dalam cache.
Apabila isi blok yang terdapat di dalam cache telah
berubah, blok tersebut perlu ditulisakan kembali ke
dalam memori utama sebelum menggantikannya.
Write policy akan bekerja apabila operasi penulisan
memori terjadi. Penulisan dapat terjadi apabila blok
itu di-update. Pada kasus lainnya, penulisan hanya
dapat terjadi apabila blok diganti. Policy yang disebut

131
terakhir meminimalkan operasi penulisan memori,
namun menyebabkan memori utama menjadi tidak
berguna. Keadaan seperti itu akan menggangu
operasi multiprosesor dan direct memori acces yang
dilakukan oleh modul-modul I/O.
e. Kebijakan cache-write (Cache Write
Policy)
Koherensi antara cache-word dan salinannya
dalammemori utama harus dipertahankan setiap saat
jika mungkin. Sejumlah kebijakan (teknik) digunakan
dalam melakukan operasi write untuk blok memori
utama saat berada di dalam cache. Kebijakan-
kebijakan ini menentukan tingkat koherensi yang
dapat dipertahankan antara cache-word dan rekan-
rekannya di memori utama. Kebijakan-kebijakan
dalam cache-write ada 3.
i. Cache Write Policies Upon a Cache Hit
Ada dua kebijakan yang mungkin pada cache-hit.
a. Write-through
Setiap operasi write untuk cache diulang ke
memori utama di waktu yang sama. Kebijakan write-
through dapat mempertahankan koherensi antara
cache blok dan rekan-rekan mereka di memori utama

132
dengan mengorbankan waktu tambahan yang
dibutuhkan untuk menulis ke memori utama.
Kebijakan ini dapat meningkatkan rata-rata waktu
akses
b. Write-back
Semua kebijakan write dibuat untuk
cache. Kebijakan write ke memori utama ditunda
sampai pengganti dibutuhkan. Setiap cache blok yang
disebut bit digunakan untuk menunjukkan bahwa
operasi write telah dilakukan untuk blok saat berada
dalam cache. Pada saat penggantian, bit kotor
diperiksa, jika sudah diatur, maka blok tersebut
ditulis kembali ke memori utama, jika tidak, blok itu
hanya ditimpa oleh blok yang masuk. Koherensi hanya
dijamin pada saat penggantian

ii. Cache Write Policies Upon a Cache Miss


Kebijakan ini memiliki dua skema yang dapat
digunakan.
a. Write-allocate
Skema ini membawa blok memori utama ke
cache kemudian diperbarui
b. Write-no-allocate

133
Berbeda dengan skema write-allocate, dalam
skema ini blok memori utama yang hilang diperbarui
ketika berada di memori utama dan tidak dibawa ke
cache.

iii. Cache Read Policies Upon a Cache Miss


Ada dua strategi yang dapat digunakan dalam
Cache Read Policies Upon a Cache Miss.
a. Blok memori utama yang hilang dibawa
ke cache sementara word diteruskan langsung ke
CPU segera setelah tersedia
b. Blok memori utama yang hilang
sepenuhnya disimpan dalam cache dan word yang
diperlukan kemudian diteruskan ke CPU

f. Analisis organisasi cache dalam


kehidupan nyata
i. Level memori cache
Dalam cache memori ada tiga level yaitu
L1,L2 dan L3.
a. Cache level 1 (L1)
Cache memori L1 adalah cache memori yang
terletak dalam prosesor (cache internal). Cache

134
ini memiliki kecepatan akses paling tinggi dan
harganya paling mahal. Ukuran memori
berkembang mulai dari 8Kb, 64Kb dan 128Kb.
b. Cache level 2 (L2)
Cache ini memiliki kapasitas yang lebih
besar dibandingkan dengan cache L1 yaitu
berkisar antara 256Kb sampai dengan 2Mb,
namun cache L2 inimemiliki kecepatan yang lebih
rendah dari cache L1. Cache L2 terletak terpisah
dengan prosesor atau disebut dengan cache
eksternal.

135
c. Cache level 3 (L3)
Cache level 3 hanya dimiliki oleh prosesor
yang memiliki unit lebih dari satu misalnya
dualcore dan quadcore. Fungsinya adalah untuk
mengontrol data yang masuk dari cache L2 dari
masing-masing inti prosesor.
Cache L1 dan L2 merupakan memori sementara
pada processor. Jadi ketika komputer dimatikan,
maka ingatan yang ada pada processor tersebut akan
hilang. L1 dan L2 mempunyai fungsi dan perbedaan,
berikut tabel perbedaan antara cache L1. L2 dan L3.

Cache L1 Cache L2 Cache L3


Cache L1 Cache L2 Cache L3
adalahmemori adalahmemori memilikikapas
yang utama. yang kedua itaslebihbesar
Kecepatann (sekunder). dari Cache L2.
yasamadenganke Kecepatanny Lebihlam
cepatan adibawahkecepat batdari Cache
processor an Cache L1 L2
tetetapilebihc
epatdarimemo
riutama (L1)
ii. Implementasi memori cache dalam
komputer
136
Penggunaan cache sangat bermanfaat untuk
mengoptimalkan kinerja komputer, berikut beberapa
komputer yang memanfaatkan cache dalam
manajemen memorinya.

a. PowerPC 604 Processor Cache


PowerPC cache yang terbagi menjadi data dan
instruksi cache, disebut Harvard Organization. Kedua
instruksi dan cache data diatur menjadi 16-Kbyte
empat arah set asosiatif

b. PMC-Sierra RM7000A 64-bit MIPS RISC


Processor
RM7000 menggunakan organisasi cache yang
berbeda dibandingkan dengan Intel dan PowerPC.
Dalam kasus ini, cache terpisah menjadi 3:
Instruksi cacheprimer, A 16 Kbytes, 4-way
mengatur cache asosiatif dengan ukuran blok 32-byte
(delapan instruksi).

 Primary Cache Data: A 16 Kbytes, 4-way

mengatur cache asosiatif dengan 32 byte ukuran blok


(delapan kata).

137
 Cache Sekunder: A 256 Kbytes, 4-way
mengatur cache asosiatif untuk kedua instruksi dan
data.
Selain tiga cache on-chip, RM7000 menyediakan
antarmuka Cache tersier berdedikasi, yang
mendukung ukuran cache tersier 512 Kbytes, 2
Mbytes, dan 8 Mbytes. Cache tersier ini hanya diakses
setelah cache miss sekunder.

138
139
BAB 7
DESAIN SISTEM
MEMORY

Memori Utama
Komponen yang paling penting dari sebuah
memori adalah memorinya. Tanpa memori pasti tidak
akan komputer-komputer seperti yang dikenal
sekarang. Memori digunakan untuk menyimpan baik
instruksi-instruksi yang harus dijalankan maupun
data. . Memori adalah bagian dari komputer tempat
program-program dan data-data disimpan. Beberapa
pakar computer (terutama yang berasal dari Inggris)
menggunakan istilah store atau storage untuk
memori, meskipun kata “storage” sering digunakan
untuk menunjuk ke penyimpanan disket. Tanpa

140
sebuah memori sebagai tempat untuk mendapatkan
informasi guna dibaca dan ditulis oleh prosesor, maka
tidak akan ada komputer-komputer digital dengan
system penyimpanan program.
Satuan pokok memori adalah digit biner, yang
disebut bit. Sebuah bit dapat berisi sebuah angka 0
dan 1. Ini adalah satuan yang paling sederhana.
(Sebuah peralatan untuk menyimpan hanya angka nol
mustahil dapat membentuk landasan dari suatu
system memori; paling tidak diperlukan dua nilai).
 Memori utama menyediakan
penyimpanan utama untuk komputer .
 Dua register CPU yang digunakan untuk
antarmuka CPU ke memori utama:
 Memory Address Register ( MAR )
dan
 The Memory Data Register
( MDR ): digunakan untuk menyimpan data
yang akan disimpan dan / atau diambil di /
dari lokasi memori yang alamat diadakan di
MAR.

141
Gambar 7. 1
Hal ini dimungkinkan untuk memvisualisasikan
memori internal utama khas Struktur sebagai terdiri
dari baris dan kolom dasar sel . Setiap sel mampu
menyimpan satu bit informasi.

142
Dalam teknologi CMOS statis, setiap sel memori
utama terdiri dari enam transistor . Enam transistor
sel memori CMOS statis terdiri dari dua inverter
kembali ke belakang . Perlu dicatat bahwa sel bisa
ada di salah satu dari dua negara yang stabil. Kedua
transistor N3 dan N4 digunakan untuk
menghubungkan sel ke dua data ( bit ) baris . Jika
kata pilih tidak diaktifkan, dua transistor ini
dimatikan, sehingga melindungi sel dari signalvalues
dibawa oleh garis data. Kedua transistor diaktifkan
ketika kata pilih baris diaktifkan . Apa yang terjadi

143
ketika dua transistor dihidupkan akan tergantung
pada operasi intendedmemory

144
Static CMOS Memory Sel

Alamat-alamat Memori
Memori-memori terdiri dari sejumlah cell-cell
masing-masing dapat menyimpan sepotong informasi.
Setiap cell memiliki sebuah angka, yang disebut
alamat, yang dapat dipakai program-program sebagai
acuan. Jika sebuah memori memiliki n cell, cell-cell
tersebut memiliki alamat-alamat 0 sampai n-1. Semua
cell dalam sebuah memori berisi jumlah bit yang
sama. Jika sebuah cell terdiri dari k bit, cell tersebut
dapat menyimpan salah satu dari 2k kombinasi bit
yang berbeda. Komputer-komputer yang
menggunakan system bilangan biner (termasuk notasi
octal dan heksadesimal untuk bilangan-bilangan
145
biner). Jika sebuah alamat memiliki angka maksimum
dari cell-cell yang dapat dialamatkan adalah 2m.
Signifikansi cell adalah cell merupakan satuan
terkecil yang dapat dialamatkan. Dewasa ini, hamper
semua perusahaan pembuat computer telah
menetapkan sebuah cell 8 bit sebagai standar yang
disebut byte. Byte-byte dikelompokkan dalam word.
Sebuah computer dengan sebuah word 32 bit memiliki
4 byte/word, sementara sebuah computer dengan 64
bit memiliki 8 byte/word. Signifikansi sebuah word
adalah sebagian besar instruksi beroperasi pada
semua word, contoh, dengan menambahkan dua word
bersama-sama. Jadi sebuah mesin 32 bit akan
memiliki register-register 32 bit dan instruksi-
instruksi untuk memanipulasi word 32 bit, sedangkan
sebuah mesin 64 bit akan memiliki register-register
64 bit dan instruksi-instruksi untuk memindakan,
menambahkan, mengurangi, dan sebaliknya
memanipulasi word 64 bit.

Register
Flip-flop tersedia dalam berbagai macam
konfigurasi. Salah-satu konfigurasinya yang

146
sederhana berisi dua flip-flop D independen dengan
sinyal clear dan preset. Meskipun dikemas menjadi
satu dalam chip 14 pin yang sama, kedua flip-flop
tersebut tidak saling berhubungan. Pengaturan yang
sangat berbeda adalah flip-flop oktal. Sementara
salah satu alas an untuk mengelompokkan jalur-jalur
detak dan clear adalah untuk menghemat pin. Dalam
konfigurasi ini chip digunakan dalam cara yang
berbeda dari delapan flip-flop yang tidak berkaitan.
Chip tersebut digunakan sebagai sebuah register 8 bit
tunggal. Atau dapat juga, dua chip seperti itu dapat
digunakan secara parallel untuk membentuk sebuah
register 16 bit dengan menggabungkan pin1 dan pin
11 mereka secara bersama.

Organisasi Memori
Untuk membuat memori berukuran besar
diperlukan suatu organisani berbeda, suatu
organisasi dimana masing-masing word dapat
dialamatkan. Untuk memilih chip memori ini, logika
eksternal harus men-set CS tinggi dan juga men-set
RD tinggi (logika 1) untuk membaca dan rendah
(logika 0) untuk menulis. Kedua jalur alamat harus di-

147
set untuk menunjukkan yang mana dari keempat wor
3 bit harus dibaca atau ditulis. Untuk suatu operasi
membaca, jalur-jalur input tidak digunakan, tetetapi
word yang dipilih ditempatkan pada jalur-jalur output
data. Untuk operasi menulis, bit-bit yang terdapat
pada jalur-jalur input data dimuat ke dalam word
memori yang dipilih: jalur-jalur output data tidak
digunakan.

RAM dan ROM


Memori-memori yang telah kita pelajari hingga
sejauh ini seluruhnya dapat dibaca dan ditulis.
Memori-memori semacam itu disebut RAM (Random
Access Memory), sebuah nama yang tidak terlalu
tepat karena semua chip memori dapat diakses
secara acak, namun istilah tersebut telah digunakan
secara luas sehingga sulit dihilangkan saat ini. Ada
dua macam RAM, yaitu RAM static dan RAM dinamik.
RAM static (Static RAM/SRAM) dibua secara internal
dengan menggunakan rangkaian-rangkaian yang
sama dengan flip-flop dasar. Keistimewaan memori-
memori ini adalah bahwa isinya tidak akan hilang
selama daya dijaga tetap hidup dalam hitungan detik,

148
menit, jam, bahkan hari. SRAM sangat cepat. Waktu
akses jenis ini adalah beberapa nano-detik. Karena
itu, SRAM lebih dikenal sebagai cache memori level 2.
Sebaliknya, RAM Dinamik (Dynamic RAM/DRAM)
tidak menggunakan flip-flop. Justru, sebuah RAM
dinamik adalah serangkaian sel-sel, masing-masing
sel berisi satu transistor dan sebuah kapasitor
berukuran kecil. Kapasitor-kapasitor dapat diisi atau
dikosongkan, yang memungkinkan 0 dan 1 dapat
disimpan. Karena muatan listrik biasanya bocor,
setiap bit dalam sebuah RAM dinamik harus dimuati
setiap beberapa milidetik untuk mencegah agar data
tidak bocor atau keluar. Karena logika eksternal
harus memperhatikan pemuatan ulang, RAM dinamik
membutuhkan interface yang lebih kompleks
daripada RAM statik, meskipun dalam dalam banyak
aplikasi kelemahan-kelemahan ini dapat ditutupi oleh
segi kapasitasnya yang lebih besar.
Karena RAM dinamik membutuhkan hanya satu
transistor dan satu kapasitor per bit (bandingkan
enam transistor per bit RAM static yang terbaik), RAM
dinamik memiliki densitas yang sangat tinggi (banyak
bit per chip). Oleh karena itu, memori-memori utama

149
hampir selalu dibuat dari RAM dinamik. Tetetapi,
kapasitas besar ini memiliki kekurangan: RAM
dinamik memiliki kecepatan yang lambat (puluhan
nanodetik). Jadi kombinasi antara cache RAM static
dengan memori utama RAM dinamik mencoba untuk
memadukan keistimewaan-keistimewaan dari masing-
masing RAM.
ROM (Read Only Memory) adalah memori yang
tidak dapat diubah atau dihapus dengan disengaja
ataupun tidak disengaja. Memori ini hanya dapat
dibaca saja. Pengembangan produk dari ROM adalah
PROM (Programmable ROM/ROM yang dapat
diprogram). Sebuah PROM sama seperti sebuah ROM,
kecuali bahwa PROM dapat diprogram (setelah)
digunakan, sehingga meniadakan waktu tunggu.
Banyak PROM berisi sejumlah sekering kecil di bagian
dalam. Sebuah sekering spesifik dapat diputuskan
dengan memilih baris dan kolomnya dan kemudian
menggunakan teangan tinggi ke suatu pin khusus
pada chip. Lebih singkatnya PROM adalah salah satu
jenis ROM yang dapat memprogram ROM setelah ROM
tersebut digunakan.

150
Pengembangan selanjutnya pada jalur ini adalah
EPROM (Erasable PROM/PROM yang dapat dihapus),
yang tidak dapat hanya diprogramkan dilapangan
tetapi juga dapat dihapus. EPROM biasanya memiliki
organisasi yang sama seperti RAM statik.
Memori adalah bagian dari komputer tempat
program-program dan data-data disimpan (William
Stalling). Memori dalam komputer dibedakan mejadi 2
yaitu: memori internal dan memori eksternal. Memori
iternal yaitu memori yang dapat diakses langsung
oleh prosesor dalam hal ini memori internal dibagi
menjadi 3 yaitu: register yang berada pada prosesor,
cache memori, dan memori utama yang berada diluar
prosesor. Sedangkan memori eksternal adalah
memori yang diakses melalui I/O contohnya hardisk.
Memori eksternal ini biasanya berkapasitas lebih
besar karena berisi data-data yang diolah suatu
program.
Memori dalam prosesnya memiliki beberapa
operasi pada sel-selnya. Sel-sel memori ini memiliki
beberapa sifat antara lain:

151
1. Meiliki 2 keadaan stabil, yang
dapat mempresentasikan operasi dengan
angka biner yaitu 1 dan 0
2. Sel-sel memori mampu unutuk
ditulisi atau diisi (write)
3. Sel-sel memori mempunyai
kemampuan untuk dibaca (read)
Dalam operasinya sel memori mempunyai 3
terminal. Untuk operasi write, terminalnya adalah
select, control dan data in. Sedangkan untuk operasi
write adalah select, control dan sense. Terminal
select inilah yang mendeteksi bahwa suatu operasi
akan dijalankan atau tidak dengan menggunakan
anka biner yang terdeteksi (1 dan 0).
Memori utama bersifat volatile (sementara)
dimana hanya menyimpan data dan program selama
komputer hidup (memiliki power/daya listrik). Cara
kerjanya adalah:
1. Memori utama mengambil data dan
program dari memori eksternal (hardisk, dll)
untuk diolah (data dan program yang diambil
tersebut adalah data dan program yang telah
di copy).

152
2. Sementara diolah, data dan
program yang asli masih utuh dalam memori
sekunder. CPU mengeksekusi data dan
program dari RAM. Jika ingin menyimpan
secara permanen maka perubahan data dan
program itu dikirim kembali ke memori
sekunder (save file to disk).
Memori mempunyai beberapa sistem pemetaan
yang dapat digunakan. Alasan mengapa memori harus
dipetakan karena kapasitas cache yang lebih kecil
dari memori utama. Oleh karena itu perlu dipilih blok-
blok mana yang akan masuk dal cache memori agar
tidak terjadi overload. Sistem pemetaan tersebut
adalah: pemetaan langsung, pemetaan asosiatif dan
pemetaan asosiatif set.
Pemetaan langsung adalah pemetaan yang
paling sederhana karena hanya memetakan blok
memori pada satu saluran cache saja. Dalam sistem
ini bagian alamat blok memori utama berfungsi
sebagai nomor saluran cache. Ketika suatu blok data
sedang diakses atau dibaca terhadap saluran yang
diberikan, maka perlu memberikan tagatau tanda
bagi data untuk membedakannya dengan blok-blok

153
lain yang sesuai dengan saluran tersebut. Kelemahan
pada system ini adalah lokasi cache yang tetap bagi
semua blok. Jika blok-blok yang dipetakan ada pada 1
saluran yang sama maka blok-blok tersebut akan di
swap terus menerus kedalam cache sehingga hit
rasionya rendah.
Pemetaan asosiatif bertujuan untuk
maksimalkan hit rasio pada cache. Prosesnya adalah
dengan cara setiap blok dapat masuk ke sembarang
saluran cache. Alamat memori utama dijadikan kode
nomor pada field tag dan field word. Alamat-alamat ini
berfungsi sebagai kode saluran. Mekanismenya
adalah dengan cara memeriksa setiap tag oleh
control logika cache. Dalam hal ini pemetaan tersebut
lebih fleksibel karena blok-blok baru dapat diganti
sehingga hit rasionya tinggi. Kelemahan pada system
ini adalah biayanya yang mahal karena rangkaiannya
yang kompleks.
Pemetaan asosiatif set menggabungkan
kelebihan yang ada pada pemetaan langsung dan
pemetaan asosiatif. Proses dalam pemetaan ini
adalah emori-memori dalam cache dibagi dalam
bentuk set-set yang berbeda. Pemetaan asosiatif set

154
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. Set-set tersebut diberi nomor sesuai
dengan jumlah saluran. Nomor set mengidentifikasi
set yang ada pada setiap saluran di dalam cache.
Nomor set ini juga memberikan jumlah blok di dalam
memori utama. Sedangkan jumlah blok menentukan
pemetaan blok terhadap saluran. Sembarang blok
tersebut dapat dimuatkan ke salah satu dari kedua
saluran di dalamset. Oleh karena itu 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 pada saluran yang akan diuji. Saluran-saluran di
dalam set diuji untuk mendapatkan nomor saluran
yang cocok dengan nomor tag alamat yang akan
diakses.
Dalam pemetaan asosiatif dan pemetaan
asosiatif set diperlukan suatu algoritma untuk
mengatur pergantian blok-blok memori baru dan lama

155
pada cache. Algoritma ini berfungsi untuk
meningkatkan kinerja komputer. Algoritma ini disebut
algoritma penggantian. Algoritma penggantian yang
sering digunakan yaitu LRU (Least Recently Used),
FIFO (First In First Out), LFU (Last Frequently Used)
dan algoritma Random. Algoritma yang paling efektif
adalah Least Recently Used (LRU), yaitu mengganti
blok data yang terlama berada dalam cache dan tidak
memiliki referensi. Algoritma First In First Out (FIFO),
yaitu mengganti blok data yang pertama masuk.
Kemudian Least Frequently Used (LFU) adalah
mengganti blok data yang mempunyai referensi paling
sedikit. Algoritma Random, yaitu penggantian tidak
berdasakan pemakaian datanya, melainkan berdasar
slot dari beberapa slot kandidat secara acak.
Read Only Memory merupakan bentuk
penyimpanan data pada komputer dan berbagai
perangkat elektronik lainnya termsuk smartphone
maupun tablet yang tidak akan dapat dengan mudah
untuk diprogram atau diubah. Selain itu, Read Only
Memory sendiri berfungsi sebagai tempat
penyimpanan data internal yang digunakan untuk
meletakkan atau menaruh Sistem Operasi (OS)

156
beserta dengan seluruh sistem - sistem yang terdapat
di dalamnya.
ROM sendiri berbanding terbalik
dengan RAM atau bersifat permanen (nonvolatile),
yang artinya program atau data yang telah disimpan
di dalamnya tidak akan mudah berubah atau hilang
meskipun aliran listrik dipadamkan/dimatikan. Salah
satu contoh dari ROM ialah ROM BIOS yang berisikan
program-program dasar dari sistem komputer yang
berfungsi menyiapkan atau mengatur semua
komponen atau peralatan yang terdapat di dalam
komputer disaat komputer dinyalakan. Jenis-jenis
ROM:
1. PROM (Programmable Read Only
Memory), yaitu ROM yang dapat deprogram
sekali saja dan tidak dapat diubah kembali
2. EPROM (Erasable Programmable
Read Only Memory), yaitu ROM yang dapat
dihapus dengan sinar ultra violet serta
dapat diprogram kembali berulang-ulang
3. EEPROM (Electrically Erasable
Programmable Read Only Memory), yaitu

157
ROM yang dapat dihapus secara elektronik
dan dapat diprogram kembali.
Jika CPU merupakan otak dari sebuah komputer,
maka memory merupakan komponen pembantu kerja
CPU dalam melakukan kegiatan pemrosesan data
atau pengeksekusian sebuah perintah. Program dan
perintah yang akan dieksekusi oleh processor,
sebelumnya disimpan terlebih dahulu dalam sebuah
memori.
Beberapa tokoh mendefinisikan memori sebagai
berikut:

Tanembaun, 2001
“Memori merupakan bagian dari komputer
tempat berbagai program dan data-data disimpan”

Scot Mueller, 2003


“Secara umum, memori merupakan workspace
(area kerja) dari processor komputer. Sedangkan
memori utama dalam sebuah komputer merupakan
tempat penyimpanan sementara dimana dibutuhkan
oleh processor yang akan mengoperasikan program
atau data tertentu”

158
Hirarki Memori
Sebuah sistem komputer memiliki berbagai jenis
memori yang memiliki kinerja, kapasitas dan
kecepatan berbeda sesuai dengan tingkat hirarkinya.
Memori yang memiliki hirarki yang paling atas,
memiliki tingkat kecepatan yang paling tinggi tetetapi
memiliki kapasitas (kemampuan menyimpan data)
paling rendah.
Sesuai tingkat hirarkinya dibedakan sebagai
berikut:
1. Register
2. Cache Memory (Static RAM)
a. Internal Cache

b. External Cache
3. Memori Utama (Dynamic RAM)
4. Memory Sekunder
a. Magnetic Disk

b. Optical Disk
c. Magnetic Tape

1. Register
Register merupakan memori dengan hirarki yang
paling tinggi. Berada dalam chip sebuah processor
dan merupakan bagian integral dari processor itu
159
sendiri. Register merupakan memori dengan
kemampuan proses paling cepat, dimana proses baca
dan tulis dilakukan dalam satu siklus detik.

2. Cache Memory
Cache memiliki kapasitas kecil tetetapi
berkecepatan tinggi dan dipasang di antara processor
dan memori utama. Memori ini dibuat dengan latar
belakang oleh adanya perbedaan kecepatan operasi
antara processor dan memori utama yang bisa
menjadi kendala bagi dicapainya efisiensi kerja
sistem komputer.

3. Memori Utama
Memori utama dibuat dari bahan yang bersifat
dinamis sehingga juga disebut sebagai Dynamic RAM.
Harganya lebih murah, tidak cepat panas tetetapi
proses yang dilakukannya tidak secepat memori
statis. Lebih dikenal dengan RAM (Random Access
Memory). Disebut sebagai memory utama karena
berhubungan langsung dengan processor dalam
menyediakan program dan data yang dibutuhkan.

4. Memori Sekunder
Menyediakan media penyimpanan sekunder
dalam jangka waktu lama untuk program dan data
160
yang kadang dibutuhkan, tetetapi tidak secara aktif
(biasanya terdiri dari unit disk yang terhubung secara
elektronik ke sistem).

161
162
BAB 8
DESIGN DAN
ORGANISASI INPUT-
OUTPUT

Pendahuluan
Desain Input-Output dan Organisasi merupakan
peralatan antarmuka (interface) bagi sistem bus atau
switch sentral dan mengontrol satu atau lebih
perangkat peripheral. Arti lain dari Organisasi input-
output tidak hanya sekedar sebagai modul
penghubung, tetetapi sebuah piranti yang berisi
logika dalam melakukan fungsi komunikasi antara
peripheral dan bus komputer. Organisasi input-output
mempunyai dua fungsi utama yaitu sebagai piranti
antarmuka ke CPU dan memori melalui bus system
163
dan sebagai piranti antarmuka dengan peralatan
peripheral lainnya dengan menggunakan link data
tertentu. Disisi lain organisasi input-output memiliki
fungsi yang tak kalah penting yaitu sebagai berikut:
1. Bertanggung jawab atas pengontrolan
sebuah perangkat luar atau lebih.
2. Bertanggung jawab pula dalam
pertukaran data antara perangkat luar tersebut
dengan memori utama ataupun dengan register-
register CPU.
3. Antarmuka internal dengan komputer
(CPU dan memori utama).
4. Antarmuka dengan perangkat
eksternalnya untuk menjalankan fungsi-fungsi
pengontrolan.
Desain input-output dan organisasi berisi sebuah
pengaturan yang sederhana untuk menghubungkan
prosesor dan memori dalam mengingat sistem
komputer ke perangkat input dan perangkat output.
Dalam sebuah bus tunggal, terdiri dari alamat yang
diperlukan, data, dan garis kontrol yang digunakan
untuk menghubungkan sistem komponen. Ada
susunan yang disebut dengan shared I/O. Dalam

164
susunan pertama, perangkat I/O menugaskan alamat
tertentu, kemudian mengasingkan dari ruang alamat
yang ditugaskan ke memori. Pelaksanaan intruksi
input pada alamat perangkat input akan
menyebabkan karakter yang tersimpan dalam daftar
input dari perangkat yang akan ditransfer ke daftar
khusus di CPU. Demikian pula, pelaksanaan perintah
output pada alamat perangkat output akan
menyebabkan karakter yang tersimpan dalam daftar
tertentu dalam CPU yang akan ditransfer ke daftar
output perangkat output. Keuntungan utama dari
shared I/O adalah pengaturan pemisahan antara
ruang alamat memori dan share I/O dari I/O device.
Kerugian utamanya adalah kebutuhan untuk memiliki
petunjuk input dan Output khusus dalam kumpulan
instruksi prosesor. Pengaturan shared I/O sebagian
besar diadopsi oleh Intel. Kemudian ada susunana
yang disebut dengan pemetaan I/O. Yaitu dengan
menguraikan input dan output register seolah-olah
mereka adalah memori biasa. Dalam hal ini, operasi
baca dari alamat yang sesuai dengan daftar input dari
perangkat input, misalnya, baca Device6, adalah
setara dengan melakukan input operasi dari input

165
register perangkat # 6. Demikian pula, operasi tulis ke
alamat yang sesuai untuk daftar output dari
perangkat output, misalnya menulis Device9, setara
dengan melakukan sebuah operasi keluaran ke output
mendaftar dalam Device # 9. Keuntungan utama dari
pemetaan memori I/O adalah penggunaan instruksi
baca dan tulis dari prosesor untuk melakukan operasi
input dan output, secara berturut-turut. Hal ini
menghilangkan kebutuhan selama memperkenalkan
petunjuk I/O khusus. Kerugian utama dari pemetaan
memori I/O adalah kebutuhan untuk menyediakan
bagian tertentu dari ruang alamat memori untuk
menangani perangkat I/O, yaitu, pengurangan ruang
alamat memori yang tersedia. Pemetaan Memori I/O
telah banyak diadopsi oleh Motorola.
Proses fungsi komunikasi antara CPU dan modul
I/O 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

166
maupun perangkat peripheral, umumnya berupa
status kondisi Busy atau 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.
Tujuan utama dari buffer adalah mendapatkan
penyesuaian data sehubungan perbedaan laju transfer
data dari perangkat peripheral dengan kecepatan
pengolahan pada CPU. Laju transfer data dari
perangkat peripheral lebih lambat dari kecepatan
CPU maupun media penyimpanan. Ada empat
kalsifikasi 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.

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

Memprogramkan I/O
Ada beberapa langkah yang harus diikuti dalam
memprogram I /O, sebagai berikut:
1. Prosesor mengeksekusi instruksi input
dari perangkat 6, misalnya, INPUT 6. Pengaruh
dari pelaksanakan instruksi ini adalah untuk
mengirimkan nomor perangkat ke sirkuit alamat

168
decoder di setiap perangkat input untuk
mengidentifikasi perangkat input tertentu untuk
terlibat. . Dalam hal ini, output dari decoder di
Device # 6 akan diaktifkan, sementara output dari
semua Decoder lain akan dinonaktifkan.
2. The buffer (pada gambar kita
mengasumsikan bahwa ada 8 buffer tersebut)
memegang data di perangkat input yang
ditetapkan (Perangkat # 6) akan diaktifkan oleh
output dari sirkuit alamat decoder.
3. Data Output buffer yang diaktifkan akan
tersedia pada bus data.
4. Perintah pemecahan kode akan gerbang
dari data yang tersedia pada bus data ke input
dari register tertentu dalam CPU, biasanya
akumulator.
Operasi output dapat dilakukan dengan cara
yang sama. Satu-satunya perbedaan akan menjadi
arah transfer data, yang akan berasal dari daftar CPU
tertentu ke daftar output di perangkat output yang
ditetapkan. Operasi I/O yang dilakukan dengan cara
ini disebut Programmed I/O. Itu dilakukan di bawah
CPU control. Sebuah instruksi lengkap mengambil,

169
membaca sandi, dan mengeksekusi siklus harus bisa
dieksekusi untuk setiap Operasi Input dan output.
Programmed I/O berguna dalam kasus-kasus dimana
satu karakter pada satu waktu yang akan ditransfer.
Suatu mekanisme harus diadopsi dalam rangka
menangani perbedaan kecepatan yang cukup besar
antara perangkat I/O dan prosesor. Sebagai contoh,
memastikan bahwa karakter dikirim ke daftar output
dari prangkat output, seperti layar, tidak lagiditulis
oleh processor (karena kecepatan tinggi prosesor)
sebelum itu ditampilkan dan bahwa karakter yang
tersedia dalam daftar input dari keyboard dibaca
hanya sekali oleh prosesor. Mekanisme yang dapat
diterapkan memerlukan ketersediaan Status Bit
dalam interface masing-masing perangkat input dan
Status Bit dalam interface masing-masing perangkat
output. Setiap kali perangkat input memiliki karakter
yang tersedia dalam dafrar input, hal ini menunjukkan
bahwa dengan menetapkan �it=1. Sebuah program di
prosesor dapat digunakan untuk terus memantau �it.
Ketika program melihat bahwa �it=1, maka akan
menterjemahkan bahwa pertengahan karakter
tersedia dalam input register ke perangkat. Membaca

170
karakter tersebut akan memerlukan protokol
dijelaskan sebelumnya. Setiap kali karakter dibaca,
program ini dapat mengatur ulang �it = 0, sehingga
menghindari beberapa kali membaca dari karakter
yang sama. Dengan cara yang sama, prosesor dapat
menyimpan karakter dalam Output register perangkat
output hanya ketika �it = 0.
Hanya setelah perangkat output telah
menunjukkan karakter yang set �it = 1, menunjukkan
kepada program monitoring bahwa perangkat output
siap untuk menerima karakter berikutnya. Proses
pemeriksaan status perangkat I/O diperintahkan
untuk menentukan kesiapannya untuk menerima
dan/atau mengirim karakter, adalah disebut Software
I/O Polling. Selain I/O Polling, dua mekanisme lain
dapat digunakan untuk melaksanakan operasi I/O:
Interrupt-driven I/O.
Di dalam Komputer terdapat berbagai macam
perangkat keras (hardware) yang banyak dan
mempunyai fungsi yang berbeda-beda setiap
perangkatnya. Dengan adanya hal tersebut di dalam
pemprosesan suatu perintah komputer harus ada
pengaturan di setiap perintah-perintah yang akan

171
dijalankan. Begitulah fungsi utama dari Interupt
Hardware, dengan kemampuan Hardware Interrupt
dalam bentuk Interrupt Garis khusus untuk
membantu proses prosesor. Interrupt garis ini
digunakan untuk mengirim suatu sinyal interupt ke
prosesor, maka dariitu prosesor harus dilengkapi
dengan suatu mekanisme yang memungkinkan untuk
menangani suatu atau beberapa permintaan interupsi
simultan dan untuk mengenali hal-hal yang
mengganggu perangkat. Ada 2 skema dasar yang
diterapkan untuk melakukan tugas ini, yaitu:
a. Daisy Rantai Bus Arbitrase ( DCBA )

b. Independen Sumber Bus Arbitrase


( ISBA )

172
Selain adanya interupsi hardware yang ada di
dalam komputer, ada pula Interupsi dalam sistem
operasi yang di jalankan, ketika suatu interupsi
terjadi sistem operasi memperoleh kontrol dalam
mengatur interupsi yang ada di dalam komputer
tersebut. Sistem operasi menyimpan keadaan dari
proses interupt, analisis interupt, dan melewati
kontrol yang mengawasi secara rutin dan menangani
interupt yang sedang terjadi. Beberapa interupsi yang
terjadi diantaranya adalah I/O interupsi. Sebuah
Input / Output interupt memberitahukan kepada
sistem operasi bahwa perangkat Input / Output telah
selesai, sedang berjalan, atau menghentikan operasi
menurut kebutuhan yang dibutuhkan oleh CPU

173
Dalam proses interupsi, proses saat ini atau
yang sedang terjadi harus disimpan dan ditangani
secara rutin dan menunggu untuk interupsi
selanjutnya, proses ini disebut juga konteks
Switching. Konteks proses juga mempunyai dua
bagian yaitu:
a. Konteks processor: adalah keadaan
register CPU termasuk program counter (PC),
program status kata ( PSWs ) dan register yang
lainnya.
b. Konteks memory: adalah keadaan
memory program termasuk program dan data.

 Pertama, program ini mengeluarkan


permintaan I / O melalui I / O panggilan.
 Permintaan melewati ke perangkat I / O .
 Bila perangkat melengkapi I / O, interupsi
dikirim dan interrupt handler dipanggil .

174
 Akhirnya, kontrol dilepaskan kembali ke
proses yang memprakarsai I / O.
c. Direct Memory Access ( DMA ).
Ada dua implementasi perintah dalam instruksi
I/O:
1. 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.
2. 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.

175
Direct Memory Access ( DMA ) adalah untuk
memungkinkan perangkat periferal untuk memotong
"middle man" ( penengah ) mengatur peran CPU
dalam transfer data. Hal ini memungkinkan perangkat
periferal untuk mentransfer data langsung dari
dan memori tanpa campur tangan CPU. Memiliki
perifer perangkat akses memori secara langsung
akan memungkinkan CPU untuk melakukan pekerjaan
lain, yang akan mengakibatkan meningkatkan kinerja,
terutama dalam kasus-kasus besar transfer .
The DMA controller adalah bagian dari perangkat
keras yang mengontrol satu atau lebih perangkat
periferal . Hal ini memungkinkan perangkat untuk
mentransfer data ke atau dari memori sistem tanpa
bantuan prosesor . Dalam beberapa transfer DMA,
suatu peristiwa memberitahu DMA pengontrol data
perlu ditransfer ke atau dari memori . Kedua DMA dan
CPU bus menggunakan memori dan hanya satu atau
yang lainnya dapat menggunakan memori pada waktu
yang sama . DMA controller kemudian mengirimkan
permintaan ke CPU meminta izin untuk menggunakan

176
bus CPU mengembalikan pengakuan kepada DMA
kontroler pemberian itu akses bus .
The DMA sekarang dapat mengontrol bus ke
secara independen melakukan perpindahan memori
Setelah transfer selesai, DMA relinquishes nya kontrol
dari bus ke CPU . Prosesor yang mendukung DMA
menyediakan satu atau lebih masukan sinyal bahwa
pemohon bus dapat menyatakan untuk mendapatkan
kontrol bus dan satu atau lebih keluaran sinyal bahwa
CPU menegaskan untuk menunjukkan itu telah
melepaskan bus .

1. DMA controller memulai transfer data .


2. Data dipindahkan (meningkatkan alamat
dalam memori, dan mengurangi jumlah kata-kata
untuk dipindahkan)

177
3. Ketika jumlah kata mencapai nol, DMA
memberitahu CPU dari terminasi dengan cara
interupsi .
4. CPU mendapatkan kembali akses ke bus
memori .

BUS
Bus adalah Jalur komunikasi yang dibagi
pemakai Suatu set kabel tunggal yang digunakan
untuk menghubungkan berbagai subsistem. Sistem
bus adalah penghubung bagi keseluruhan komponen
computer dalam menjalankan tugasnya.

Gambar Bus Slots

178
Beberapa sistem bus yang terdapat pada
komputer, yaitu:
1. Synchronous Bus
Dalam bus sinkron, langkah-langkah transfer
data berlangsung disiklus jam tetap. Semuanya
disinkronkan dengan bus clock dan sinyal clock yang
dibuat tersedia untuk kedua master dan slave. Siklus
dalam bus sinkron dimulai pada salah satu tepi jam
dan berakhir di tepi yang lain, dan tepi terakhir itu
adalah bagian awal dari siklus yang selanjutnya.
Sebuah transfer dapat mengambil beberapa siklus
bus tergantung pada kecepatan parameter bus dan
kedua ujung transfer.
Bus Synchronous sederhana dan mudah
diimplementasikan. Namun, ketika menghubungkan
perangkat dengan kecepatan yang berbeda-beda
untuk bus sinkron, perangkat paling lambat akan
menentukan kecepatan bus. Panjang bus sinkron pun
bisa dibatasi untuk menghindari masalah jam-
skewing.

179
Gambar Synchronous Timing Diagram
Bus sinkron biasanya lebih cepat daripada bus
asynchronous karena tidak ada overhead untuk
membangun referensi waktu untuk setiap transaksi.
Alasan lain yang membantu bus sinkron beroperasi
cepat adalah bahwa protokol bus sudah ditentukan
sebelumnya dan sangat sedikit logika terlibat dalam
menerapkan keadaan mesin yang terbatas.
Sedangkan kekurangan dari transmisi sinkron adalah
hardware yang digunakan lebih maahal serta
desainnya lebih kompleks.
2. Asynchronous Bus

180
Gambar Asynchronous Timing Diagram
Asynchronousbus adalah sebuah bus yang
menghubungkan perangkat sistem komputer dimana
transfer informasi antara perangkat self-timed bukan
dikendalikan oleh sinyal clock sinkronisasi. Sebuah
perangkat yang terhubung menunjukkan kesiapannya
untuk transfer dengan mengaktifkan sinyal
permintaan. Sebuah perangkat menanggapi
menunjukkan penyelesaian transfer ini dengan
mengaktifkan sinyal mengakui. Waktu yang
diperlukan untuk menyelesaikan transaksi ditentukan
oleh waktu respon dari perangkat dan keterlambatan
sepanjang bus interkoneksi dan dapat bervariasi
untuk berbagai perangkat.
Dalam asynchronous bus, langkah-langkah
protokolnya tidak dipandu oleh sinyal clock. Sebagai
gantinya, digunakan handshaking. Handshaking

181
dilakukan untuk melakukan transmisi data secara
benar antara pengirim dan penerima. Seperti pada
gambar di atas, master menegaskan baris data-
ready(point 1 pada gambar) sampai melihat sinyal
dari data-accept. Ketika slave melihat sinyal data-
ready, maka akan menegaskan garis data-accept
yaitu titik 2 pada gambar di atas. Meningkatnya garis
data-sccept akan memicu kejatuhan dari baris data-
ready dan penghapusan dari data-bus. Jatuhnya baris
data-ready yaitu point 3 dalam gambar, akan memicu
jatuhnya garis data-accept atau pada gambar diatas
dituliskan dengan angka 4. Handshaking ini, yang
disebut saling terkait secara penuh, dan akan diulang
sampai data benar-benar ditransfer. Asynchronous
bus sesuai untuk perangkat dengan kecepatan yang
berbeda.
Kekurangan dari transmisi asynchronous adalah
besar biaya overhead relatif, propirsi tinggi bit
ditransmisikan secara unik untuk tujuan
pengendalian sehingga tidak membawa informasi
yang berguna. Meskipu begitu, kelebihan dari
transmisi asynchronous adalah murah, karena

182
transmisi Asynchronous tidak terlalu banyak
memerlukan perangkat keras.
3. ArbitraseBus
a. Sentralisasi Arbitrase
Dalam skema arbitrase terpusat, arbiter tunggal
digunakan untuk memilih master berikutnya. Bentuk
sederhana arbitrase terpusat menggunakan jalur bus
permintaan, jalur hibah bus, dan jalur bus sibuk.
Setiap baris tersebut dibagi oleh master potensial,
yang daisy-dirantai dalam kaskade. Masing-masing
master potensial dapat mengajukan permintaan bus
setiap saat. Prioritas tetap diatur antara dari kiri ke
kanan.

Ketika permintaan bus diterima di arbiter bus


pusat, maka arbiter bus pusat akan mengeluarkan
183
bus bantuan dengan menegaskan jalur bus bantuan.
Ketika potensi master yang paling dekat dengan
arbiter yaitu Potensi Master 1, akan melihat sinyal
bus bantuan. Potensi master ituakan memeriksa
untuk melihat apakah arbiter bus pusat telah
membuat permintaan bus. Jika ya, potensi master
1akan mengambil alih bus dan menghenti perambatan
dari sinyal bus bantuan lebih jauh. Jika belum
membuat permintaan,potensi master 1 akan dengan
mudah mengubah sinyal bus bantuan untuk master
sebelah kanan yaitu Potensi menguasai 2, dan
sebagainya.
b. Desentralisasi Arbitrase
Arbitrase Desentralisasi dalam skemaarbitrase
desentralisasi, prioritas berbasis arbitrase biasanya
digunakan dalam mode di distribusikan. Setiap
potensi utama memiliki nomor arbitrase yang unik,
yang di gunakan dalam menyelesaikan konflik ketika
beberapa permintaan yang diajukan. Sebagai contoh,
konflik selalu dapat diselesaikan dalam mendukung
perangkat dengan nomor arbitrase tertinggi.
Cara menentukan perangkat yang memiliki
jumlah arbitrase tertinggi:

184
 Perangkat yang memintaakan
membuatnomorarbitraseyang unikyang tersedia
untuk semuaperangkat lain.
 Setiap perangkatakan
membandingkanjumlah tersebutdengan
nomorarbitrasesendiri.
 Perangkatdenganjumlahyang lebih
kecilselaludiberhentikan.
 Akhirnya, perangkat pemintadengan
nomorarbitrasetertinggiakanbertahan
dandiberikan aksesbus.

Input-Output Interface
Interface merupakan jalur data antara dua
perangkat yang terpisah dalam sistem komputer.
Interface ke bus dapat diklasifikasikan berdasarkan
jumlah bit yang ditransmisikan pada waktu tertentu
ke serial port paralel dibandingkan. Dalam port serial,
hanya 1 bit data transfer merah pada suatu waktu.
Tikus dan modem biasanya terhubung ke port serial.
Sebuah port paralel memungkinkan lebih dari 1 bit
data yang akan diproses sekaligus. Printer adalah

185
perangkat periferal yang paling umum yang terhubung
ke port paralel.
Ringkasan dariberbagaibus daninterface yang
digunakan dalamkomputer pribadi (Abd-El-Barr, 2005:
181):
Bus/In
Description
terface
Suatu jenisport (atau interface)yang
dapat digunakanuntuk
PS/2 menghubungkanmouse dan keyboardke
komputer. ThePS/2 portkadang-kadang
disebutport mouse.
ISAawalnyabus8-bit dankemudian
diperluaskebus16-bit pada tahun 1984.
Pada tahun 1993,
Indust
InteldanMicrosoftmemperkenalkanplug
ry Standart
and playbusISAyang
Architectur
memungkinkankomputeruntuk secara
e (ISA)
otomatis mendeteksidan
mengaturperipheralISAkomputer
sepertimodemataukartu suara.
Exten EISAmerupakan bentukyang
ded disempurnakanISA, yang
Industry memungkinkanuntuk transfer data32-bit,
Standart sambil mempertahankandukungan untuk8-
Architectur dan papanekspansi16-bit. Namun,

186
kecepatanbusnya, sepertiISA, hanya8MHz.
e (EISA) EISAtidak banyak digunakan, karena
biayayang tinggi dansifat yang rumit.
MCA diperkenalkan oleh IBM pada
tahun 1987. Ini menawarkan beberapa fitur
Micro tambahan atas ISA seperti bus 32-bit,
Channel kartu otomatis dikonfigurasi dan bus
Architectur mastering untuk efisiensi yang lebih besar.
e (MICA) Hal ini sedikit lebih unggul EISA, tetetapi
tidak banyak papan ekspansi yang pernah
dibuat agar sesuai spesifikasi MCA.
TheVESA, sebuah organisasi nirlaba
VESA yangdidirikan olehNEC, merilisVLBpada
(Video tahun 1992. Ini adalahbus32-bit yang
Electronics memilikiakses langsung kememori
Standards sistempada kecepatanprosesor,
Association biasanya486CPU(33/40 MHz). VLB2.
) Local Bus 0kemudian dirilispada tahun 1994dan
(VLB) memilikibus64-bitdan
kecepatanbusdari50MHz.
Periph PCIdiperkenalkan olehIntelpada
eral tahun 1992, direvisipada tahun 1993ke
Component versi 2. 0, dankemudian direvisipada tahun
Interconnec 1995 untukPCI2. 1. Ini adalahbus32-
t (PCI) bityangjuga tersediasebagaibus64-bitsaat
ini. Banyak

187
papanekspansimodernterhubung
keslotPCI.
AGPdiperkenalkan olehIntelpada
tahun 1997. AGPadalahbus32-bit yang
dirancanguntuk kebutuhantinggigrafis 3D.
AGPmemiliki garislangsungke memori,
Advan yang memungkinkanelemen 3Duntuk
ced Graphic disimpandalam
Port (AGP) memorisistembukanmemorivideo.
AGPdiarahkandata-intensifkartu grafis,
seperti akselerator3D;
yangterendahdesainaluntukthroughput
dataatrmakanmurah dari266MB/s.
USB adalah bus eksternal
Mengembangkan dby Intel, Compaq,
Desember, IBM, Microsoft, NEC dan
Northern Telcom. Dirilis pada tahun 1996
Univer
dengan Intel 430HX Tr iton II Mother Board.
sal Series
USB memiliki kemampuan mentransfer 12
Bus (USB)
Mbps, mendukung sampai 127 perangkat.
Banyak perangkat yang dapat dihubungkan
ke port USB, yang mendukung plug and
play.
Fire FireWireadalah jenisbuseksternal,
Wire (IEEE yang mendukungkecepatan transfersangat
1394) cepat: 400Mbps. Karena itu, FireWirecocok

188
untukmenghubungkanperangkat video,
seperti VCRke komputer.
SCSIadalah jenisparalel
interfaceyang umum
digunakanuntukmassaperangkat
Small
penyimpanan. SCSIdapat mentransfer data
Computer
padatingkat4MB/s; Di samping itu,ada
System
beberapajenisSCSIyang
Interface
mendukungkecepatan yang lebih tinggi:
(SCSI)
SCSICepat(10 MB/s), UltraSCSIdan
CepatLuasSCSI(20 MB/s), sertaUltra
WideSCSI(40 MB/s).
IDEadalah interfaceyang umum
Integr
digunakanuntukdrivehard diskdanCD-ROM
ated Drive
drive. Hal inilebih murah daripadaSCSI,
Electronics
tetapi menawarkansedikit kurangdalam hal
(IDE)
kinerja.
Enhan EIDEmerupakan
ced penyempurnaandariIDE, yang
Integrated menawarkankinerja yang lebih
Drive baikdaripadaSCSIstandar. Ia
Electronics menawarkankecepatan
(EIDS) transferantara4dan16,6MB/s.
PCI-X PCI-X buskinerja tinggiyang
dirancang untukmemenuhi
meningkatnyaI/Otuntutanteknologi
sepertiFibre Channel, GigabitEthernet,
189
danUltra3SCSI.
Comm PCI-X buskinerja tinggiyang
unication dirancang untukmemenuhi
and meningkatnyaI/Otuntutanteknologi
Network sepertiFibre Channel, GigabitEthernet,
Riser (CNR) danUltra3SCSI.

190
BAB 9
PIPELINING

Konsep Umum
Pipelining merupakan cara efektif untuk
mengatur aktifitas konkuren dalam system komputer.
Ide dasarnya sangat sederhana. Hal ini sering ditemui
di dalam pabrik, dimana pipelining umumnya dikenal
sebagai operasi assembly-line. Sebagai sistem
komputer yang berkembang, agar kinerjanya lebih
besar dapat dicapai dengan mengambil keuntungan
dalam teknologi, seperti sirkuit yang lebih cepat.
Pada umumnya, efisiensi sebuah sistem komputer
dinilai berdasarkan kecepatan perangkat keras dan
fasilitas-fasilitas perangkat lunak. Penilaian ini,
disebut sebagai throughput, didefinisikan sebagai
jumlah pemrosesan yang dapat dikerjakan dalam
191
suatu interval waktu tertentu. Salah satu teknik yang
mendorong peningkatan suatu sistem throughput
yang cukup hebat disebut sebagai pemrosesan
pipeline. Konsep pemrosesan pipeline dalam suatu
komputer mirip dengan suatu baris perakitan dalam
suatu pabrik industri. Ambil contoh, suatu proses
pembuatan mobil. Ketika sebuah mobil dibuat, mobil
tersebut berpindah sepanjang ban berjalan dengan
berurutan, melewati beberapa stasiun. Pada setiap
stasiun, dikerjakan sebagian proses konstruksi pada
mobil itu, kemudian berpindah lagi ke stasiun
berikutnya. Perpindahan mobil itu dari satu stasiun ke
stasiun lainnya, memungkinkan beberapa mobil
berada pada baris perakitan pada waktu yang
bersamaan, masing-masing pada stasiun yang
terpisah. Selain itu, organisasi perangkat tambahan
untuk prosesor dapat meningkatkan kinerja komputer.
Sebagai contohnya seperti penggunaan beberapa
register tunggal akumulator, dan penggunaan memori
cache. Pendekatan organisasi secara umum, adalah
instruksi pipelining. Instruksi pipelining ini mirip
dengan penggunaan jalur perakitan di manufaktur
tanaman. Jalur perakitan itu mengambil keuntungan

192
dari berbagai fakta bahwa produk itu berjalan melalui
berbagai tahap produksi. Dengan meletakkan proses
produksi di jalur perakitan, beberapa produk pada
berbagai tahap dapat bekerja secara bersamaan.
Proses ini juga disebut sebagai pipelining, karena,
seperti dalam pipa, masukan baru diterima di salah
satu ujung sebelum input yang diterima pada
sebelumnya muncul sebagai output di ujung lain.
Untuk menerapkan konsep eksekusi dan intruksi ini,
kita harus menyadari bahwa, pada kenyataannya,
instruksi memiliki beberapa tahap. Misalnya, pada
instruksi sepeda itu dibagi menjadi 10 tugas yang
terjadi secara berurutan. Jelas, harus ada beberapa
kesempatan bagi pipelining. Pipelining itu juga
mengacu pada teknik/cara di mana tugas yang
diberikan itu terbagi menjadi beberapa sub/bagian
yang perlu dilakukan secara berurutan . bagian yang
harus dibagi secara berurutan itu sebagai berikut:
1. Setiap sub task (tugas) dilakukan oleh
satuan fungsional yang diberikan,
2. Unit yang terhubung secara serial dan
beroperasi secara bersamaan,

193
3. Penggunaan Pipelining meningkatkan
kinerja sebagai tugas eksekusi sekuensial
tradisional.
Sebagai pendekatan sederhana,
mempertimbangkan pengelompokan pengolahan
instruksi ke dalam dua tahap: mengambil instruksi
dan mengeksekusi instruksi. Ada kali selama
eksekusi dari instruksi ketika memori utama tidak
sedang diakses. Kali ini bisa digunakan untuk
mengambil instruksi berikutnya secara paralel
dengan pelaksanaan yang sekarang.

Dua-Tahap Instruksi Pipeline


Pada gambar (a) menggambarkan pendekatan
ini. Pipa ini memiliki dua tahap independen. Itu pada
tahap pertama mengambil instruksi dan buffer itu.
194
Ketika tahap kedua adalah gratis, yang pertaman
tahap dibagikan instruksi buffer. Sedangkan tahap
kedua sedang mengeksekusi instruksi, tahap pertama
mengambil keuntungan dari setiap siklus memori
yang tidak terpakai untuk mengambil dan penyangga
instruksi berikutnya. Ini disebut instruksi prefetch
atau fetch tumpang tindih. Catatan bahwa
pendekatan ini, yang melibatkan instruksi buffering,
membutuhkan register lagi. Pada umumnya, pipelining
membutuhkan register untuk menyimpan data antara
tiap tahap. Harus jelas bahwa proses ini akan
mempercepat eksekusi instruksi. Jika mengambil dan
melaksanakan tahap yang durasinya sama, waktu
siklus instruksi akan dibelah menjadi dua. Namun,
jika kita melihat lebih dekat pada pipa gambar (b),
kita akan melihat yang dua kali lipat ini tingkat
eksekusi tidak mungkin dikarenakan ada dua alasan:
1. Waktu eksekusi akan lebih panjang
daripada pengambilan waktu eksekusi yang akan
membaca dan menyimpan operan serta kinerja
beberapa operasi. Dengan demikian, mengambil
panggung mungkin harus menunggu untuk

195
beberapa waktu sebelum dapat mengosongkan
nya penyangga.
2. Sebuah instruksi cabang bersyarat
membuat alamat instruksi berikutnya yang akan
diambil secara tidak diketahui. Dan mempunyai
waktu yang dapat digunakan untuk mengambil
instruksi berikutnya secara parallel (bersamaan)
dengan eksekusi intruksi berikutnya.
Dan ada juga contoh perbedaan mendasar antara
mengesekusi empat bagian task dari intruksi yang
diberikan. Empat bagian task dari intruksi meliputi:
kasus Fetching F, Decoding D, Excecution E, dan Write
result W. Berikut contoh empat bagian task yang
menggunakan pipelining dan sequential processing .

Contoh ini mengilustrasikan batasan dasar yang:


harus dilakukan untuk menjamin hasil yang tepat.
Pada saat dua operasi saling tergantung satu sama

196
lain, maka keduanya harus dilaku¬kan secara
berurutan dalam urutan yang benar. Kondisi ini jelas
memiliki konsekuensi yang mendalam. Memahami
implikasinya adalah kunci untuk memahami berbagai
alternatif desain dan pertukaran yang dihadapi dalam
komputer pipelined.
Dalam rangka atau grafik diatas tersebut
merumuskan beberapa kinerja yang dilakukan untuk
kebaikan pipeline dalam memproses serangkaiantask
(tugas), da nada juga nama lain dari grafik ruang
waktu yaitu sering disebut dengan grafik Gantt. Dari
pembahasan sebelumnya, mungkin tampak bahwa
semakin besar jumlah tahap dalam pipa, semakin
cepat tingkat eksekusi. Beberapa desainer IBM S/360
menunjukkan dua faktor yang menggagalkan pola ini
tampaknya sederhana untuk highperformance desain
[ANDE67a], dan mereka tetap elemen yang desainer
harus masih pertimbangkan.
Berikut contoh grafik yang menunjukkan suksesi
sub-task (tugas) dalam pipa terhadap waktu,

197
Selain menggunakan grafik seperti diatas ada
juga ukuran-ukuran kinerja untuk kebaikan pipeline
yang sudah disediakan, diantarnya sebagai berikut:
1. Speed –up (Kecepatan)
 Mempertimbangkan pelaksanaan tugas
m (petunjuk) menggunakan

(unit) pipa.
 N + m-1 unit waktu yang diperlukan untuk
menyelesaikan tugas-tugas dari m

2. Throughput U (n) ,
Throughput adalah banyaknya instruksi yang
dieksekusi setiap waktunya.
3. Efisiensi E (n).

198
Pipeline Stall
Pipeline stall merupakan Sebuah operasi
pipeline yang dikatakan telah terhenti oleh satu unit
yang membutuhkan lebih banyak waktu untuk
melakukan fungsinya, sehingga memaksa tahapan
lain untuk menjadi Idle.
Pipeline "Stall" mempunyai beberapa Instruksi
Ketergantungan:
1. Ketergantungan Instruksi mengacu pada
kasus dimana pengambilan data dari instruksi
tergantung pada hasil mengeksekusi instruksi
sebelumnya.
2. Ketergantungan Instruksi
memanifestasikan dirinya dalam pelaksanaan
instruksi cabang bersyarat.
Sebagai contoh, dalam kasus "cabang jika
negatif" instruksi, instruksi berikutnya yang akan
diambil tidak akan diketahui sampai hasil
mengeksekusi bahwa "cabang jika negatif" instruksi
dikenal. Pipeline "Stall" karena data Ketergantungan:
Ketergantungan data dalam pipa terjadi bila sumber
operan instruksi tergantung pada hasil dari
pelaksanaan instruksi sebelumnya
199
Instruction level parallelism
Paralelisme tingkat instruksi terjadi apabila
instruksi-instruksi yang terdapat pada rangkaian
bersifat independen dan karena itu dapat dieksekusi
secara paralel dengan cara saling bertumpang tindih.
Paralelisme tingkat instruksi ditentukan oleh
frekuensi true data dependency dan procedural
dependency yang terdapat di dalam kode.
Penggunaan set instruksi yang memiliki panjang tetap
akan meningkatkan paralelisme tingkat instruksi.

Dasar Dasar Pipeline Pada Prosesor


DLX
Pada industry perakitan, apa pun, proses
dipecah menjadi beberapa sub proses yang lebih
kecil. Setiap subproses dikerjakan secara mandiri
dari sub proses yang lain. Misal pada industry
perakitan model pemasanganan dengan proses
pemasangan rangka adalah dua sub proses berbeda
yang bias dilakukan secara parallel. ‘’Ban berjalam’’

200
demikianlah secara umum system ini dikenal. Hampir
semua manufaktur menggunakan system ini.
Berawal dari ide ‘’Ban berjalan’’ inilah terdapat
konsep pipeline. Cara kerjanya mirip dengan system
tersebut. Eksekusi instruksi dipecah menjadi
beberapa sub proses. Setiap proses dikerjakan secara
mandiri. Pada prosesor DLX telah meggunakan
konsep ini. Pengerjaan suatu instruksi dibagi dalam
tahapan-tahapan di mana tiap tahapan mengerjakan
suatu instruksi secara parallel. Tiap tahapan
terhubung dengan tahapan selanjutnya sehingga
terbentuk pipa, instruksi ini masuk pada ujung awal
tahapan yang kemudian diproses melalui tahapan-
tahapan yang ada dan keluar pada ujung akhir
tahapan. Karena tahapan-tahapan pada pipa saling
terhubung, seluruh tahapan harus siap untuk
memproses dalam waktu yang bersamaan. Waktu
yang dibutuhkan untuk memindahkan sebuah
instruksi satu langkah ke depan disebut siklus mesin.
Panjang dari siklus mesin ditentukan dari waku yang
dibutuhkan oleh tahapan yang paling lambat waktu
eksekusinya. Dengan kondisi ini, kecepatan dari
pipeline sebanding dengan jumlah tahapan pada pipa.

201
Biasanya keseimbangan panjang tahapan tidak akan
sempurna. Di samping itu proses pipelining itu sendiri
menimbulkan beberapa overhead.

Klasifikasi Hazard Data


Hazard data terjadi pada saat antar instruksi
saling bebas, dan instruksi-instruksi tersebut cukup
dekat di mana overlap menyebabkan pipeline
mengubah urutan akses operand.
Hazard data dapat diklasiffikasikan menjadi tiga
tipe, tergantung pada urutan baca dan tulis
pengaksesan dalan instruksi. Misalkan dua instruksi I
dan J, di mana I terjadi sebelu J. Hazard data yang
mungkin adalah:
 RAW (read after write): J mencoba untuk
membaca sumber sebelum I menulisnya, sehingga
J mendapat nilai lama yang tidak benar. Ini jenis
hazard data yang paling umum dan kita
menggunakan teknik forwarding untuk mengatasi.
Teknik forwarding adalah dengan menambahkan
jalur balik data dari hasil operasi ALU langsung
kepada sumber data yang dibutuhkan proses
selanjutnya.

202
 WAW (write after write): J mencoba
untuk menulis operand sebelum ditulis oleh I.
Penulisan berakhir dilaksanakan dengan urutan
yang salah, meninggalkan nilai yang ditulis oleh I
bukan nilai yang ditulis oleh J. Hazard ini hanya
terjadi dalam pipeline yang menulis pada lebih
satu tahap pipeline. Pipeline integer DLX hanya
menulis register pada WB dan menghindari hazard
jenis ini. Jika kita membuat dua perubahan pada
pipeline DLX, hazard WAW mungkin terjadi,
pertama kita memindah tulis balik untuk operasi
ALU kedalam tahap MEM, karena nilai data
tersedia kemudian. Kedua, missal pengaksesan
memori data memerlukan dua tahap. Berikut ini
urutan dua instruksi yang menunjukan eksekusi
pada pipeline yang diperbaiki ini:

LW R1, I I E M M W
0(R2) F D X EM1 EM2 B
ADD I I E W
R1,R2,R3 F D X B

203
Penjadwalan Instruksi untuk
Mencegah Hazard Data
Beberapa tipe pipeline stall sering terjadi. Pola
pembangkitan-kode yang biasa untuk pernyataab
A=B+C menghasilkan pipeline stall untuk load nilai
data kedua (B). Penyimpanan A tidak menyebabkan
pipeline stall, karena hasil penjumlahan dapat di-
forward ke memori data untuk digunakan oleh
instruksi store.
Daripada melakukan pipeline stall, compiler
dapat mencoba untuk menjadwal urutan instruksi
untuk mencegah terjadinya pipeline stall dengan
menyusun ulang urutan kode untuk menghilangkan
hazard. Contoh, kompilator dapat mencoba untuk
mencegah adanya kode load yang diikuti oleh
penggunaan langsung register tujuan load. Teknik ini,
disebut penjadwalan instruksi.
Contoh: Buatlah kode DLX yang mencegah
pipeline stall untuk urutan perintah berikut:
a=b+c
d=e+f

204
Asumsikan load mempunyai keterlambatan satu
siklus clock.
Jawaban: Berikut ini kode yang telah
dijadwalkan:
LW Rb, b
LW Rc, c
LW Re, e
ADD Ra, Rb, Rc
LW Rf, f
SW a, Ra
SUB Rd, Re, Rf
SW d, Rd
Kedua interlock load (LW Rc, c terhadap ADD Ra,
Rb, Rc dan LW Rf, f terhadap SUB Rd, Re, Rf) dapat
dihilangkan. Terdapat ketergantungan antara
instruksi ALU dengan penyimpanan, tetapi struktur
pipeline mengizinkan hasil di-forward.
Catatan: penggunaan register yang berbeda
untuk instruksi pertama dan kedua adalah hal penting
sehingga penjadwalan ini legal. Secara khusus, jika
variable e di-load ke dalam register yang sama seperti
b tau c, maka penjadwalan ini tidak boleh. Secara

205
umum, penjadwalan pipeline dan meningkatkan
jumlah register yang diperlukan.
Beberapa kompilator modern mencoba
menggunakan penjadwalan instruksi untuk
meningkatkan kinerja pipeline. Dalam algoritma yang
sangat sederhana, kompilator menjadwalkan
menggunakan instruksi lain pada blok dasar yang
sama. Blok dasar adalah urutan kode lurus tanpa
transfer yang masuk maupun keluar, kecuali pada
awal dan akhir. Penjadwalan kode seperti tidak sulit,
karena kita tahu bahwa setiap instruksi dalam blok
dieksekusi jika yang pertama dieksekusi. Kita dapat
membuat graph ketergantungan dan mengurutkan
instruksi sehingga dapat meminimalkan pipeline stall.

Hazard Kendali
Hazard kendali dapat menyebabkan penurunan
kinerja yang lebih besar pada pipeline DLX daripada
hazard data. Pada saat operasi pencabangan
dieksekusi, ada kemungkinan PC diubah ke suatu
nilai lain alamat instruksi yang dituju. Jika tidak
terjadi pencabangan maka nilai PC sekarang

206
ditambah 4. Jika suatu instruksi J mengakibatkan
pencabangan maka nilai PC belum berubah sampai
selesai tahap MEM, setelah selesai penghitungan
alamat dan perbandingan.
Cara yang paling sederhana berkenaan dengan
pencabangan adalah dengan pipeline stall secepatnya
ketika kita mendeteksi pencabangan sampai kita
mencapai tahap MEM, yang menentukan nilai baru
untuk PC. Tentunya, kita tidak dapat melakukan
pipeline stall sebelum mengetahui bahwa instruksi
tersebut adalah pencabangan, jadi pipeline stall tidak
terjadi sampai tahap ID. Pipeline stall pada hazard
kendali diimplementasikan secara berbeda dengan
hazard data, karena tahap IF instruksi yang mengikuti
pencabangan harus diulang segera setelah kita
mengetahui hasil pencabangan. Jadi, tahap IF
pertama pada dasarnya pipeline stall juga karena
tidak pernah digunakan. Pipeline stall ini dapat
diimplementasikan dengan memberikan nilai register
IF/ID dengan nol untuk tiga tahap awal.
Tiga siklus clock dibuang setiap instruksi
pencabangan adalah kehilangan yang berarti. Dengan
frekuensi 30 % dan CPI idealnya 1, mesin dengan

207
pipeline stall pencabangan hanya mencapai sekitar
setengah peningkatan kecepatan ideal pada pipeline.
Jadi, menghilangkan pipeline stall pada pencabangan
sangat penting. Jumlah pipeline stall pada
pencabangan dapat dikurangi dengan dua cara:
1. Mencari tahu lebih awal apakah
pencabangan terjadi atau tidak.
2. Menghitung lebih awal alamat tujuan
pencabangan jika terjadi pencabangan.

208
209
BAB 10
REDUCED
INSTRUCTIONS SET
COMPUTER

Pendahuluan
Pada bab ini akan dijelaskan mengenai RISC
(Reduced Instruction Set Computing) atau
seperangkat instruksi komputasi yang
disederhanakan. Mesin ini memperkenalkan sebuah
perubahan dalam pola arsitektur komputer. Pola atau
bentuk ini lebih menonjolkan sebuah kesederhanaan
daripada ke-kompleks-an. RISC diperkuat oleh sebuah
penelitian yang menunjukkan bahwa pengumpulan
tugas, percabangan bersyarat, dan prosedur
pemanggilan menunjukkan lebih dari 90% dan operasi
210
yang kompleks seperti bagian panjang hanya sekitar
2% dari kinerja yang ditampilkan dalam sebuah
perangkat program benchmark yang sama. Penelitian
ini juga menunjukkan bahwa diantara semua kerja,
prosedur pemanggilan yang memakan banyak waktu.
Berdasarkan hasil tersebut, RISC kemudian
meningkatkan arsitektur dengan sumberdaya yang
dibutuhkan untuk membuat eksekusi dari yang paling
sering dan paling memakan waktu operasi agar lebih
efisien. RISC muncul pertama kali pada tahun
1970’an, merupakan perwujudan nyata yang muncul di
Berkeley RISC dan Stanford MIPS machine, yang
kemudian diperkenalkan pada pertengahan tahun
1980’an.
Kini RISC adalah sebuah mesin yang
dikategorikan dengan beberapa fitur seperti simpel
dan pengurangan set intruksi, perbaikan format
instruksi, satu instruksi per satu siklus mesin, alur
pencapaian instruksi/ unit eksekusi, banyaknya
jumlah dari tujuan umum register-register, memori
penyimpanan operasi dan desain control unit
berkabel.

211
Sejarah (evolution cycle) RISC/CISC
RISC adalah singkatan dari Reduced Instruction
Set Computing. Pada awalnya dikenal sebagai sebuah
gagasan untuk menjelaskan arsitektur yang dapat
mengeksekusi secepat-cepatnya satu instruksi per
siklus waktu.
RISC mulai digagas pada pertengahan
tahun1970’an dan akhirnya memulai untuk
membangun mesin RISC pertama, yaitu mini
komputer IBM 801. Peluncuran penemuan RISC ini
diumumkan sebagai awal dari sebuah paradigma baru
dalam desain arsitektur komputer. Faktanya RISClebih
banyak digunakan kembali pada awal penemuan dari
pada menyediakan hardware yang lebih cocok untuk
bahasa tingkat tinggi. Paradigma ini berubah sesuai
dengan apa yang kita ketahui tentang celah semantik,
sebuah perhitungan dari perbedaan antara operasi-
operasi yang disediakan dalam bahasa tingkat tinggi
dan itu disediakan dalam arsitektur komputer.
RISC dikenal sebagaicelah semantik terlebar,
dengan akibat yang tidak diinginkan dalam jumlah
terbanyak. Diantaranya adalah tidak efisiennya
eksekusi, ukuran program mesin yang berlebihan dan
212
meningkatnya kerumitan compiler. Konsekuensi yang
diharapkan, respon konvensional dari arsitek
komputer yang menambah lapisan rumit ke arsitektur
terbaru. Menaikkan jumlah dan kekompleksan dari
instruksi bersama dengan menaikkan jumlah dari
model pengalamatan. Arsitektur ini dihasilkan dari
sebuah adopsi “add more complexity”. Sekarang
dikenal sebagai CISC (Complex Instruction Set
Computing). Akan tetetapi, itu akan menjadi sebuah
instruksi kompleks dengan beberapa kekurangan.
CISC juga termasuk sebuah skema pemecahan kode
instruksi yang kompleks. Kenaikkan ukuran dari
control unit, dan penundaan logika yang mengalami
kenaikkan. Kekurangan-kekurangan ini menjadikan
tim arsitek komputer mengadopsi prinsip “less is
actually more”. Sejumlah penelitian kemudian
diadakan untuk meneliti pengaruh dari performa yang
kompleks.
RISC ini pertama kali ditemukan oleh seorang
peneliti dari IBM, John Cocke sekitar tahun 1974.
RISC ini ditemukan saat dia membuktikan bahwa ada
sekitar 20% instruksi pada sebuah prosesor dapat
mengerjakan atau mengeksekusi lebih dari 80%

213
kinerjanya. Pertama kali dipopulerkan oleh seorang
pengajar dari University of California, David Paterson
sekitar tahun 1980’an.
Beberapa mikroprosesor yang menggunakan
prinsip RISC ini diantaranya adalah sebagai berikut:
 Intel 960, Itanium (IA64) dari Intel
Corporation,
 Alpha AXP dari DEC, R4x00 dari MIPS
Corporation,
 PowerPC dan Arsitektur POWER dari
International Business Machine.
 Advanced RISC Machine (ARM) dan
StrongARM (termasuk di antaranya adalah Intel
XScale),
 SPARC dan UltraSPARC dari Sun
Microsystems,
 PA-RISC dari Hewlett-Packard.
Contoh-contoh prosesor CISC adalah
System/360, VAX, PDP-11, varian Motorola 68000, dan
CPU AMD dan Intel x86.

214
Prinsip dari Desain RISC
Sebuah komputer dengan jumlah instruksi
minimum memiliki kelemahan bahwa sebagian besar
instruksi harus dijalankan dengan mewujudkan suatu
fungsi yang sederhana. Hal ini akan mengakibatkan
kerugian pada masalah kecepatan. Di sisi lain,
komputer dengan jumlah instruksi yang semakin
meningkat memiliki kelemahan pada
kompleksdecoding dan kerugian pada kecepatan.
Aspek perhitungan yang harus diperhatikan dalam
mengurangi set instruksi meliputi: (a) operasi yang
paling sering dilakukan selama pelaksanaan program;
(b) operasi yang paling sering memakan waktu lama;
dan (c) jenis operan yang paling sering digunakan.

Sejumlah penelitian awal dilakukan dalam rangka untuk


mngetahui kerusakan yang khas pada operasi yang
melaksanakan program patokan, perkiraan distribusi operasi
ditunjukkan pada Tabel berikut:
Operasi Perkiraan
Persentase
Tugas pernyataan 35
Loop-loop 5
Prosedur 15
panggilan
215
Cabang bersyarat 40
Cabang tidak 3
berkondisi
Lainnya 2
Berdasarkan tabel di atas, perilaku program
yang khas telah menyebabkan sebagai berikut.
1. Pergerakan data yang sederhana
(diwakili oleh pernyataan penugasan) daripada
operasi yang kompleks, yang substansial dan
harus dioptimalkan.
2. Cabang kondisional yang dominan
Karena harus hati-hati dalam pembayaran kepada
urutan instruksi. Hal ini berlaku bila diketahui
bahwa pipelining sangat diperlukan.
3. Prosedur panggilan yang memakan
waktu operasi dan karena itu mekanisme harus
dirancang untuk membuat komunikasi parameter
antara panggilan dan prosedur tersebut yang
menyebabkan sedikitnya jumlah instruksi untuk
pengeksekusian.
4. Operasi utama adalah mekanisme untuk
menyimpan dan mengakses skalar variabel lokal.
Kesimpulan di atas telah menyebabkan argumen
membawa instruksi diatur arsitektur lebih dekat ke

216
HLLs, harus lebih tepat untuk lebih mengoptimalkan
kinerja yang memakan waktu program dari fitur khas
HLL. Ini jelas merupakan panggilan untuk membuat
arsitektur sederhana daripada yang kompleks. Ingat
bahwa operasi kompleks seperti pembagian panjang
hanya mewakili sebagian kecil (kurang dari 2%) dari
operasi yang dilakukan selama perhitungan yang
khas. Untuk mencapai hal tersebut kita dapat; (a)
menjaga operan yang paling sering diakses di dalam
register dan CPU; dan (b) meminimalkan operasi
register ke memori.
Dua prinsip di atas dapat dicapai dengan
menggunakan mekanisme-mekanisme berikut:
1. Menggunakan sejumlah besar register
untuk mengoptimalkan referensi operan dan
mengurangi lalu lintas memori prosesor.
2. Mengoptimalkan desain pipeline instruksi
tersebut.
3. Menggunakan set instruksi yang
disederhanakan dan mengabaikan yang kompleks
dan tidak perlu instruksi.
Berikut dua pendekatan yang didefinisikan untuk
menerapkan ketiga mekanisme di atas yaitu.

217
1. Pendekatan perangkat lunak. Gunakan
compiler untuk memaksimalkan penggunaan
register dengan mengalokasikan register untuk
variabel-variabel yang digunakan dalam periode
waktu tertentu.
2. Pendekatan perangkat keras. Gunakan
register CPU yang cukup sehingga variabel lebih
dapat diselenggarakan di register untuk jangka
waktu yang lebih besar. Pendekatan perangkat
keras memerlukan penggunaan organisasi
register baru, yang disebut overlapped register
windows.
Terdapat sejumlah prinsip desain, yang kadang-
kadang disebut Prinsip-prinsip Desain RISC, yang
harus benar-benar dipatuhi oleh perancang CPU yang
memiliki tujuan umum. Beberapa diantaranya:
1. Semua instruksi secara langsung
dijalankan oleh hardware.
2. Supaya mempunyai kecepatan
tinggimaka semua instruksi umum dijalankan
secara langsung oleh hardware. Instruksi-
instruksi tersebut tidak diinterpretasikan oleh
mikroinstruksi-mikroinstruksi. Menghilangkan

218
suatu lever interpretasi akan menghasilkan
kecepatan tinggi bagi sebagian besar instruksi.
3. Memaksimalkan kecepatan dimana
instruksi-instruksi dikeluarkan.
4. Computer-komputer modern
menggunakan banyak trik untuk meningkatkan
kinerjanya, terutama dengan mencoba
mengeksekusikan 500 juta instruksi per detik
(MIPS).
5. Instruksi-instruksi harus mudah untuk
didekodekan
6. Batas kritis pada tingkat kecepatan
mengeluarkan instruksi-instruksi adalah dengan
mendekodekan masing-masing instruksi untuk
mengetahui sumber daya-sumbaer daya apa yang
mereka butuhkan.
7. Hanya instruksi-instruksi load dan Store
yang diakses ke Memory
8. Salah satu cara paling sederhana untuk
membagi operasi-operasi ke dalam langkah-
langkah terpisah adalah menetapkan supaya
operand-operand untuk sebagian besar instruksi

219
harus berawal dari --dan kembali ke-- register-
register
9. Menyiapkan banyak register
10. Karena akses ke memori agak lambat,
maka perlu disiapkan banyak register (paling
tidak 32 register). Karena itu setelah sebuah
instruksi diambil, instruksi tersebut tetap
tersimpan dalam sebuah register hingga instruksi
itu tidak diperlukan lagi.

Overlapped dari Windows Register


Gagasan utama di balik penggunaan windows
register adalah untuk meminimalkan pengaksesan
memori. Dalam rangka untuk pencapaian tersebut,
sebagian besar register CPU harus dibutuhkan.
Sebagai contoh, jumlah register CPU yang tersedia di
SPARC dengan mesin asli (salah satu RISC pertama)
adalah 120. Namun, hanya subset dari register terlihat
pada waktu tertentu. Oleh karena itu, register CPU
dibagi menjadi beberapa set kecil, masing-masing
ditugaskan untuk prosedur yang berbeda. Suatu
prosedur panggilan secara otomatis akan beralih
pada CPU untuk menggunakan windows tetap dengan

220
ukuran yang berbeda dari register. Dalam rangka
untuk meminimalkan gerakan aktual dari parameter
yang dipanggil dan prosedur tersebut. Overlapped
memungkinkan parameter yang akan berlaku antara
prosedur tanpa aktual pergerakan data (Gambar 10.
1).
Level j
Para Registe Re
(pemanggil)
meter r lokal gister
Masuk
register sement
Level j+1
ara
(yg dipanggil)

Arsitektu Jumlah Jumlah register


r window per window
RISC-1 8 16
Barkeley 16 32
Pyramid- 32 32
piramid
SPARC

RISC VS CISC
RISC

221
Reduced Instruction Set Computing (RISC) atau
"Komputasi set instruksi yang disederhanakan"
pertama kali digagas oleh John Cocke, peneliti dari
IBM di Yorktown, New York pada tahun 1974 saat ia
membuktikan bahwa sekitar 20% instruksi pada
sebuah prosesor ternyata menangani sekitar 80% dari
keseluruhan kerjanya. Komputer pertama yang
menggunakan konsep RISC ini adalah IBM PC/XT pada
era 1980-an. Istilah RISC sendiri pertama kali
dipopulerkan oleh David Patterson, pengajar pada
University of California di Berkely.
RISC dibuat sebagai hasil dari projek 801 yang
dimulai pada tahun 1975 di IBM T. J. Watson research
center dan selesai pada tahun 1980an. Proyek ini
tidak diberitakan secara luas oleh IBM, tetetapi ada
dua proyek yang sama di awal tahun 1980an yaitu di
university of California Berkeley dan di Stanford
university, Tetetapi RISC yang dipakai sampai
sekarang adalah hasil research dari university of
California Berkeley.
Tujuan dari RISC adalah dapat mengeksekusi
one Cycle Per Instruction.

222
ISA (Instructure Set Architecture)
mendefinisikan keadaan dari prosesoor dan secara
tidak langsung mempengaruhi keseluruhan bentuk
sistem.

CISC
Tujuan utama dari arsitektur CISC adalah
melaksanakan suatu perintah cukup dengan
beberapa baris bahasa mesin sedikit mungkin. Hal ini
bisa tercapai dengan cara membuat perangkat keras
prosesor mampu memahami dan menjalankan
beberapa rangkaian operasi. CISC adalah suatu
system yang menggunakan instruktur yang kompleks.
MULT 2:3, 5:2

RISC
Prosesor RISC hanya menggunakan instruksi-
instruksi sederhana yang bisa dieksekusi dalam satu
siklus. Dengan demikian, instruksi ‘MULT’
sebagaimana dijelaskan sebelumnya dibagi menjadi
tiga instruksi yang berbeda, yaitu “LOAD”, yang
digunakan untuk memindahkan data dari memori ke
dalam register, “PROD”, yang digunakan untuk
melakukan operasi produk (perkalian) dua operan

223
yang berada di dalam register (bukan yang ada di
memori) dan “STORE”, yang digunakan untuk
memindahkan data dari register kembali ke memori.
Berikut ini adalah urutan instruksi yang harus
dieksekusi agar yang terjadi sama dengan instruksi
“MULT” pada prosesor RISC (dalam 4 baris bahasa
mesin):
LOAD A, 2:3
LOAD B, 5:2
PROD A, B
STORE 2:3, A

Keunggulan RISC
Saat ini, hanya Intel x86 satu-satunya chip yang
bertahan menggunakan arsitektur CISC. Hal ini
terkait dengan adanya kemajuan teknologi komputer
pada sektor lain. Harga RAM turun secara dramatis.
Pada tahun 1977, DRAM ukuran 1MB berharga %5,000,
sedangkan pada tahun 1994 harganya menjadi sekitar
$6. Teknologi kompailer juga semakin canggih,
dengan demikian RISC yang menggunakan RAM dan
perkembangan perangkat lunak menjadi semakin
banyak ditemukan.

224
Telah terlihat bahwa RISC bukan sebuah
revolusi, melainkan formalisasi seperangkat kriteria
desain dipandu oleh evolusi teknologi. Dapat dilihat
bahwa prinsip utama dari metodologi RISC adalah
untuk mengintegrasikan hardware hanya fitur yang
terukur meningkatkan kinerja. Dengan kata lain, RISC
dapat dilihat sebagai gaya arsitektur komputer
menekankan kesederhanaan dan efisiensi.
Pendekatan ini mengikuti saran Von Neumann pada
set instruksi desain pada tahun 1946:
Kami berharap untuk memasukkan ke dalam
mesin dalam bentuk sirkuit hanya konsep logis
seperti yang baik perlu memiliki sistem yang lengkap
atau sangat nyaman karena frekuensi yang mereka
terjadi.
Saran Von Neumann menunjukkan bahwa dasar-
dasar filosofi RISC bukan hal baru. RISC desain
melacak akar mereka ke komputer elektronik
pertama. Seperti RISC, komputer awal adalah mesin
direct-eksekusi yang memiliki-to-decode mudah set
instruksi sederhana. Ide arsitektur microprogrammed
muncul pertama pada tahun 1951, dijelaskan oleh
Wilkes. Tetapi, komputer komersial pertama yang

225
berbasis pada sebuah microcode adalah IBM 360
pada tahun 1964. Itu adalah komputer pertama yang
memiliki arsitektur, yaitu, struktur abstrak dengan
satu set tetap instruksi mesin, terpisah dari
implementasi hardware.
Kemudian, desainer komputer mini hangat
memeluk microcode sebagai cara untuk membangun
mesin yang hemat biaya. Mereka terutama diperlukan
untuk mengurangi biaya hardware dan meningkatkan
kinerja. Toko microcode kecil dibangun dari ROM dan
'mikro mesin dipindahkan ke toko microcode besar
dan unit hardware yang kompleks dan sequencer,
untuk mencapai tujuan tersebut. Perbaikan sirkuit
terpadu sekitar tahun 1970 membuat memori
microcode lebih cepat, mendorong pertumbuhan
microprograms. Misalnya, DEC VAX 11/780 memiliki
lebih dari 400. 000 bit microcode.
Bahkan, desain microcode menjadi seni yang
tinggi di tangan arsitek komputer. Salah satu masalah
terbesar dengan microcode adalah bahwa hal itu
jarang bug-free. Konsekuensi negatif dari pendekatan
tersebut meningkat waktu desain, kesalahan desain
yang lebih, dll.

226
CONTOH
THE CRAY-1 Supercomputer
Beberapa arsitek komputer tidak memegang
pendapat bahwa microcode meningkatkan kinerja.
Seymour Cray telah mendapat pengakuan sebagai
pelopor arsitektur RISC. Dia percaya bahwa
kompleksitas itu buruk dan terus membangun
superkomputer tercepat di dunia dengan
menggunakan set instruksi sederhana. Sebagian
besar fitur desain CDC 6600 dan CRAY-1 komputer
mengingat dasar dari filosofi desain RISC. Dengan
cara ini, CRAY-1 superkomputer adalah salah satu
prekursor dari arsitektur RISC modern.

THE IBM 801 KOMPUTER


Pada tahun yang sama (1975), sekelompok
peneliti yang dipimpin oleh George Radin di IBM
Thomas J. Watson Research Center mulai bekerja
pada sebuah komputer yang didasarkan pada konsep
yang dikembangkan oleh John Cocke.
John Cocke adalah seorang penganjur petunjuk
sederhana untuk merancang compiler efisien. Tim

227
IBM melihat banyak jutaan baris kode dikompilasi.
Mereka menemukan bahwa instruksi rumit yang
membantu programmer assembly-bahasa manusia,
tetapi compiler bahasa tingkat tinggi sebagian besar
mengabaikan mereka. Para peneliti menentukan
bahwa sebagian besar kode yang dihasilkan oleh
compiler terutama terdiri dari beban, toko, cabang,
menambah dan membandingkan petunjuk. Semua
instruksi sederhana ini memiliki setara
microinstruction langsung.

228
Furrther, para peneliti IBM oberved mengatakan
bahwa banyak petunjuk yang lebih kompleks tersedia
pada kebanyakan komputer microcoded tidak
memerlukan perangkat keras tambahan dan
diterapkan hanya sebagai rutinitas microcoded. John
Cocke menyimpulkan bahwa prosesor berkinerja
tinggi benar-benar tidak perlu menyertakan
microcode ROM dengan mesin negara pengontrol

229
terkait. Hal ini lebih efisien untuk merancang set
instruksi sederhana yang memungkinkan
pelaksanaan satu instruksi per clock cycle.
Temuan ini dipandu desain eksperimental 801
komputer IBM. Dibangun dari off-the-shelf (Emitter-
Ditambah Logic) dan selesai pada tahun 1979, IBM
801 adalah komputer mini 32-bit dengan instruksi
single-cycle, 32 register, cache memori terpisah
untuk instruksi dan data, dan instruksi cabang
tertunda. The IBM 801 sekarang umumnya diakui
sebagai yang pertama disengaja mesin RISC. Namun,
istilah RISC belum diciptakan dan pada tahun 1980
rumor proyek IBM 801 menyebar bahkan tanpa
pengungkapan resmi oleh IBM.
Pada saat yang sama, RISC (Reduced Instruction
Set Computer) dan MIPS (Mesin tanpa saling
bertautan Pipeline Stages) proyek dimulai masing-
masing di Berkeley (University of California) dan
Stanford.

230
231
BAB 11
MULTIPROCESSOR

Pengertian Multiprocessor
Multiprocessing adalah suatu kemampuan suatu
sistem operasi yang menjalankan dua atau lebih
instruksi secara serentak dengan menggunakan
sejumlah CPU dalam sebuah komputer. Dengan
sistem seperti ini sebuah sistem operasi dapat
mengatur agar sejumlah CPU menjalankan instruksi-
instruksi yang berbeda yang terletak dalam sebuah
program dalam waktu yang sama. Kemampuan
eksekusi terhadap beberapa proses perangkat lunak
dalam sebuah sistem secara serentak, jika
dibandingkan dengan sebuah proses dalam satu
waktu, meski istilah multiprogramming lebih sesuai
untuk konsep ini.
232
Sistem multi prosessor yang sering digunakan
adalah model symmetric multiprocessing, dimana
setiap prosessor menjalankan sistem operasi yang
identik dan komunikasi antar prosesor jika
diperlukan. Beberapa sistem menggunakan
asymmetric multiprocessing, dimana setiap prosessor
mempunyai tugas tetentu. Prosessor master
mengontrol sistem, prosessor lain menunggu
instruksi master atau mempunyai tugas yang
ditentukan oleh master. Skema ini merupakan
hubungan master-slave. Prosessor master menjadwal
dan mengalokasikan pekerjaan dari prosessor slave.
Contoh symmetric multiprocessing adalah
sistem UNIX versi Encore’s untuk komputer Multimax
Komputer dapat dikonfigurasikan untuk menangani
satu lusin prosessor, semua menjalankan UNIX.
Keuntungan dari model ini adalah bahwa beberapa
proses dapat berjalan pada satu waktu (N proses jika
terdapat N CPU) tanpa menyebabkan pengurangan
performansi. Sehingga kita dapat mengontrol I/O
secara hati-hati untuk menjamin data mendapatkan
prosessor yang tepat.

233
Secara tradisional, komputer telah dipandang
sebagai suatu mesin sekuential. Sebagian besar
bahasa pemrograman komputer mengharuskan
pemrogram untuk menentukan algoritma sebagai
rangkaian instruksi-instruksi. Procesor melakukan
eksekusi program dengan cara mengeksekusi
instruksi-instruksi mesin secara berurutan dan satu
per satu. Setiap instruksi dieksekusi dalam urutan
operasi (membaca instruksi, membaca operand,
melakukan operasi, menyimpan hasil).
Cara memandang komputer seperti di atas
tidaklah sepenuhnya benar. Pada tingkat
microoperation, beberapa control signal dihasilkan
dalam waktu yang bersamaan. Pipelining instruksi,
sedikitnya sampai membaca dan mengeksekusi
operasi yang bertumpang tindih, telah ada sejak
lama. Keduanya merupakan contoh pembentukan
fungsi secara paralel.
Demikian semakin majunya teknologi dan
semakin murahnya harga hardware, para perancang
komputer telah mencari kemungkinan diterapkannya
paralelisme, umumnya untuk meningkatkan kinerja
dan kadang-kadang untuk meningkatkan reliabilitas.

234
Di dalam buku ini, kita akan membahas dua buah
pendekatan yang paling populer untuk memperoleh
paralelisme dengan cara melakukan replikasi
prosesor: symmetric multiprocessor (SMP) dan
cluster.

Jenis - Jenis Multiprocessing

Berdasarkan jumlah instruksi dan datanya, dapat


dibagi ke dalam (lihat Taksonomi Flynn):
 Single Instruction Single Data (SISD)
stream

235
Sebuah processor melakukan eksekusi aliran
instruksi tunggal untuk mengoperasikan data yang
tersimpan di dalam sebuah memory.

 Single Instruction Multiple Data (SIMD)


stream
Sebuah instruksi mesin mengontrol eksekusi
simultan sejumlah elemen pengolahan berdasarkan
lockstepnya. Setiap elemen pengolahan memiliki
memori data tertentu, sehingga setiap instruksi
dieksekusi berdasarkan himpunan data yang berbeda
oleh prosesor yang berbeda pula. Vector processor
dan array processor berada dalam kategori ini.

236
 Multiple Instruction Single Data (MISD)
stream

Rangkaian data ditransmisikan ke sejumlah


processor yang masing-masing prosesor
mengeksekusi rangkaian instruksi yang berbeda.
Struktur ini tidak pernah diimplementasikan.

 Multiple Instruction Multiple Data (MIMD)


stream
Sejumlah processor melakukan eksekusi secara
simultan rangkaian instruksi yang berbeda pada
himpunan data yang berbeda.
237
Pada organisasi MIMD, processornya bersifat
general-purpose karena prosesor-prosesor itu harus
mampu mengolah seluruh instruksi yang diperlukan
untuk melakukan transformasi data yang sesuai.
Selanjutnya MIMD dapat dibagi-bagi berdasarkan
dengan procesor mana komunikasi dilakukan. Apabila
setiap prosesor memiliki memori yang didedikasikan,
maka setiap elemen pengolahan merupakan
komputer-komputernya sendiri. Komunikasi antar-
komputer itu dilakukan melalui lintasan yang tetap
atau melalui fasilitas jaringan. Sistem seperti itu
disebut sebagai cluster, atau multikomputer. Apabila
prosesor menggunakan memori secara bersama-
sama, maka masing-masing prosesor mengakses
program dan data yang tersimpan di dalam memori
yang dapat dipakai bersama dan prosesor
berkomunikasi satu dengan lainnya melalui memori
itu, sistem seperti itu dikenal sebagai shared memory
multiprocessor.
Sebuah klasifikasi umum shared memory
multiprocessor didasarkan pada cara proses di-assign
ke prosesor. Dua pendekatan fundamental adalah
master/slave dan symmetric. Pada arsitektur master /

238
slave, kernel sistem operasi selalu beroperasi pada
prosesor tertentu. Prosesor lainnya hanya dapat
mengeksekusi program pengguna dan mungkin
utilitas-utilitas sistem operasi saja. Master
bertanggungjawab atas penjadwalan proses atau
thread. Sekali proses/thread berada dalam keadaan
aktif, apabila slave memerlukan layanan (misalnya
pemanggilan I/O), slave harus mengirimkan request
ke master dan menunggu layanan itu diberikan.
Pendekatan ini cukup sederhana dan hanya
memerlukan sedikit peningkatan sistem operasi
multi-progamming uniprosesor. Resolusi konflik
menjadi lebih sederhana karena sebuah prosesor
memiliki kontrol terhadap seluruh memori dan sumer
daya I/O. Kekurangan pendekatan ini adalah sebagai
berikut:
1. Kegagalan master akan melumpuhkan
sistem secara keseluruhan
2. Master dapat menjadi bottleneck kinerja
karena master itu sendiri yang harus melakukan
seluruh penjadwalan dan manajemen proses
Multiprocessing dapat dibagi ke dalam beberapa
kelas berdasarkan simetrinya yaitu:

239
 Asymmetric Multiprocessing (AMP)
Pendekatan pertama untuk Multiprocessor
Scheduling adalah asymmetric multiprocessing
Scheduling atau biasa disebut juga sebagai
penjadwalan Master Slave MultiProcessor. Dimana
pada metode ini satu prosesor bertindak sebagai
master dan prosesor lainnya sebagai slave. Master
Processor bertugas untuk menjadualkan dan
mengalokasikan proses yang akan dijalankan oleh
Slave Processors. Master Processor melakukan
pekerjaan yang berhubungan dengan System, Slave
Processor melayani user requests dalam
pengeksekusian program. Pemrosesan yang banyak
tidak menyebabkan penurunan performance.
Metode ini sederhana karena hanya satu
prosesor yang mengakses struktur data sistem dan
juga mengurangi data sharing. Sebagai contoh,
prosesor master memilih proses yang akan
dieksekusi, kemudian mencari prosesor yang
available, dan memberikan instruksi start processor.
Prosesor slave memulai eksekusi pada lokasi memori
yang dituju. Saat slave mengalami sebuah kondisi
tertentu, prosesor slave memberi interupsi kepada

240
prosesor master dan berhenti untuk menunggu
perintah selanjutnya. Perlu diketahui bahwa prosesor
slave yang berbeda dapat ditujukan untuk suatu
proses yang sama pada waktu yang berbeda. Master
processor dapat mengeksekusi OS dan menangani
I/O, sedangkan sisanya processor tidak punya
kemampuan I/O dan disebut sebagai Attached
Processor (Aps). APs mengeksekusi kodekode user
dibawah pengawasan master processor.
 Symmetric Multiprocessing (SMP)
Pada arsitektur symmetric Multiprocesor, kernel
dapat melakukan eksekusi pada prosesor manapun,
dan umumnya masing-masing prosesor dapat
melakukan penjadwalannya sendiri dari pool proses
atau thread yang ada. Kernel dapat dianggap sebagai
proses jamak atau thread jamak, yang memungkinkan
sebagian kernel untuk melakukan eksekusi secara
paralel. Pendekatan SMP akan membuat sistem
operasi menjadi kompleks. Pendekatan ini harus
menjamin bahwa kedua prosesor tidak memiliki
proses yang sama dan proses-proses itu tidak akan
hilang di dalam antrian. Diperlukan teknik-teknik

241
tertentu untuk mengatasi dan mensikronkan klaim-
klaim terhadap sumber daya.
 Non-uniform memory access (NUMA)
Non-Uniform Memory Access atau Non-Uniform
Memory Arsitektur (NUMA) adalah memori komputer
Rancangan yang digunakan dalam multiprocessors,
dimana waktu akses memori tergantung pada lokasi
memori relatif terhadap prosesor. Under NUMA,
Dalam NUMA, prosesor atau NUMA multiprocessor
adalah sebuah sistem shared memory dimana waktu
aksesnya bervariasi ke lokasi memori word.
Berdasarkan kedekatan antar prosesor, dapat
dibagi ke dalam:
 Loosely coupled
Mendistribusikan komputasi diantara beberapa
prosessor. Prosessor berkomunikasi dengan
prosessor lain melalui saluran komunikasi, misalnya
bus kecepatan tinggi atau saluran telepon. Sistem ini
disebut loosely coupled system atau sistem
terdistribusi (distributed system) dengan
menggunakan memory local atau multi komputer.

242
Setiap site memiliki processor, memori lokal dan
clock sendiri namun semua resource dapat diakses
dari setiap site.
Proses yang dijalankan pada komputer yang
berbeda modul saling berkomunikasi dengan bertukar
pesan melalui Message Transfer System (MTS).

 Thightly coupled
Tight coupling di antara window adalah konsep
antarmuka yang mendukung koordinasi secara global
atau multi processor.
Prosesor berkomunikasi antara satu dengan
yang lain dengan cara berbagi memori utama,
sehingga kecepatan komunikasi dari satu prosesor ke
yang lain tergantung pada bandwidth memori.

243
Sebuah memori lokal kecil atau buffer (cache)
kemungkinan terdapat pada setiap prosesor untuk
memperbaiki kinerja.

Interkoneksi Jaringan
Dalam bentuk sederhana, komunikasi data
mengambil tempat antara dua alat yang secara
langsung dihubungkan oleh media komunikasi.
Penyambungan komputer ke dalam jaringan computer
haruslah memenuhi beberapa kriteria berikut ini:
 Peralatan komunikasi data letaknya
berjauhan. Jika kita akan menghubungkan kedua
alat tersebut yang jaraknya ribuan Km, jelas akan
sangat mahal.

244
 Ada banyak peralatan yang saling
dihubungkan satu sama lain, yang akhirnya akan
terbentuk satu rangkaian yang komplex.
Contoh yang sederhana adalah sistem telepon,
jika komputer juga akan dirangkaikan seperti telepon
maka akan terbentuk jaringan yang luas dan besar.
Jelas hal ini memerlukan investasi yang besar sekali.

Pemecahan masalah diatas adalah


menghubungkan komputer pada sebuah jaringan
komunikasi. Gambar 1. 3. Ada dua kategori utama
dalam jaringan komunikasi, yang dapat
diklasifikasikan sebagai “Wide Area Networks”
(WANs) dan “Local Area Networks” (LANs).
245
Untuk melihat perbedaan yang ada antara WANs
dan LANs dapat dilihat secara menyeluruh pada
gambar 1. 3. Tampak oleh kita bahwa LAN akan
terletak dalam satu area tertentu yang saling
berhubungan, sedangkan WANs akan ada banyak
switching node. Jadi satu komputer sebagai source
akan melewati beberapa switching node agar sampai
ke destination (tujuan). Jelas tampak lokasi keduanya
juga dapat dekat ataupun berjauhan tergantung
perletakkan switching node.
Jadi adanya jaringan yang luas pada WANs
sedangkan pada LANs cukup hanya satu area yang
dapat dihubungkan tanpa switching node.
 Wide Area Network
Wide Area Network dipakai secara umum
sebagai alat untuk mengatasi jarak geografis yang
luas, memakai jaringan publik seperti telepon, atau
jaringan data paket dan lainnya agar dapat terjadi
hubungan komunikasi walaupun jaraknya yang jauh.
Secara khusus, WANs terdiri dari sejumlah switching
node yang saling dihubungkan. Ketika data dikirim, ia
akan melewati sejumlah switching node untuk
mencapai tujuannya.

246
Secara tradisional, WANs telah dilengkapi secara
khusus agar mampu menggukan satu dari dua
teknologi yang paling banyak dipakai oleh publik yaitu
“jaringan switch” atau sering disebut jaringan telepon
dan “jaringan paket”.
 Jaringan Switch (Circuit Switch)
Dalam jaringan switch, jalur komunikasi dapat
tersambung melalui banyak switching node
berdasarkan alur yang telah ditentukan di masing-
masing switching node sampai tujuan. Alur yang telah
terbentuk akan membuat saluran terhubung dari
sumber ke tujuan secara “dedicated” sehingga
terbentuk jalur “link” untuk berkomunikasi Link yang
telah terbentuk ini di sebut “logical channel”, link
akan terputus jika komunikasi telah selesai. Konsep
ini dipakai pada jaringan telepon.
 Jaringan Paket (Paket Switching)
Pendekatan yang justru berbeda adalah dalam
penggunan jaringan paket. Dalam kasus ini, tidak
penting terbentuk dedicated link antara sumber
dengan tujuan. Pada sistem jaringan paket data
dikirim keluar dari sumber dalam bentuk paket–paket
kecil. Paket–paket tersebut bergerak dari satu “node”

247
ke node lain. Tiap node akan menampung semua
paket yang datang kemudian diteruskan ke node
berikutnya sampai ke tujuan. Konsep packet switch
network ini paling sering dipakai pada transmisi antar
terminal ke komputer atau dari komputer ke
komputer.

Keunggulan Multiprocessor
1. Peningkatan throughput, karena lebih
banyak proses / thread yang berjalan dalam satu
waktu sekaligus (jika proses yang antri di ready
queue sedikit). Perlu diingat hal ini tidak berarti
daya komputasinya menjadi meningkat sejumlah
prosesornya. Yang meningkat ialah jumlah
pekerjaan yang bisa dilakukannya dalam waktu
tertentu.
2. Economy of scale (ekonomis), ekonomis
dalam devices yang dibagi bersama sama.
Prosesor-prosesor terdapat dalam satu komputer
dan dapat membagi peripheral (ekonomis) seperti
disk dan catu daya listrik.
3. Peningkatan kehandalan (reliabilitas),
Jika satu prossor mengalami suatu gangguan,

248
maka proses yang terjadi masih dapat berjalan
dengan baik karena tugas prosesor yang
terganggu diambil alih oleh prosesor lain. Hal ini
dikenal dengan istilah Graceful Degradation.
Sistemnya sendiri dikenal bersifat fault tolerant
atau failoft system.

Parallel Processing
Pemrosesan paralel (parallel processing) adalah
penggunaan lebih dari satu CPU untuk menjalankan
sebuah program secara simultan. Idealnya, parallel
processing membuat program berjalan lebih cepat
karena semakin banyak CPU yang digunakan. Tetetapi
dalam praktek, seringkali sulit membagi program
sehingga dapat dieksekusi oleh CPU yang berbeda-
beda tanpa berkaitan di antaranya.
Komputasi paralel adalah salah satu teknik
melakukan komputasi secara bersamaan dengan
memanfaatkan beberapa komputer secara
bersamaan. Biasanya diperlukan saat kapasitas yang
diperlukan sangat besar, baik karena harus mengolah
data dalam jumlah besar ataupun karena tuntutan
proses komputasi yang banyak. Untuk melakukan

249
aneka jenis komputasi paralel ini diperlukan
infrastruktur mesin paralel yang terdiri dari banyak
komputer yang dihubungkan dengan jaringan dan
mampu bekerja secara paralel untuk menyelesaikan
satu masalah. Untuk itu diperlukan aneka perangkat
lunak pendukung yang biasa disebut sebagai
middleware yang berperan untuk mengatur distribusi
pekerjaan antar node dalam satu mesin paralel.
Selanjutnya pemakai harus membuat pemrograman
paralel untuk merealisasikan komputasi.
Misal: diberikan 5 buah data acak yang nantinya
akan diurutkan secara Ascending dengan
menggunakan CRCW-Sort dengan menggunakan
perhitungan [n/2]. n = jumlah data
[n/2] = [5/2] = [2,5] = 3, jadi kita memerlukan 3
kali putaran untuk mengurutkan data tersebut.
Dan masing-masing data diproses oleh 1
processor. Berikut gambar dari pemrosesan diatas.

250
Dari gambar diatas bisa dilihat dari data yang
tidak terurut {6,5,9,2,4} menjadi terurut dengan
menggunakan 3 kali putaran searching secara ganjil
dan genap dengan menggunakan 5 buah processor.
Yang menghasilkan data yang terurut menjadi
{2,4,5,6,9}
Jadi dari kedua pengertian diatas dapat diambil
sebuah kesimpulan bahwa kinerja komputasi dengan
parallel processing memungkinkan beberapa
pekerjaan dilakukan secara bersamaan dan dalam
waktu yang bersamaan dan semakin banyak
pekerjaan yang dapat diselesaikan tepat waktu.

251

Você também pode gostar