Anda di halaman 1dari 49

Praktikum Arsitektur Organisasi Komputer Lanjut

Laboratorium Sistem Komputer dan Robotika

Fakultas Ilmu Komputer – Universitas Brawijaya


1
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

BUKU PANDUAN PRAKTIKUM

ARSITEKTUR ORGANISASI
KOMPUTER LANJUT

Tim Penyusun :

Laboratorium Sistem Komputer dan Robotika

LABORATORIUM SISTEM KOMPUTER DAN ROBOTIKA

FAKULTAS ILMU KOMPUTER


UNIVERSITAS BRAWIJAYA

Fakultas Ilmu Komputer – Universitas Brawijaya


2
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

BAB I
PENGENALAN TERHADAP CPU SIMULATOR, SET INSTRUKSI, REGISTER, PROGRAM STACK, RAM

1. Tujuan percobaan: setelah melakukan percobaan ini, mahasiswa diharapkan dapat


a) Menggunakan CPU simulator untuk membuat set instruksi dari CPU
b) Menggunakan simulator untuk mengeksekusi set instruksi CPU
c) Menggunakan set instruksi CPU untuk memindah data dari register, membandingkan nilai data
yang ada pada register-register, menaruh data ke dalam stack, mengambil data dari dalam
stack, menuju ke suatu lokasi alamat tertentu, melakukan operasi tambah pada data yang ada
dalam suatu register
d) Menjelaskan fungsi dari register khusus yang ada pada CPU yaitu register PC, SR, dan SP
e) Menggunakan mode pengalamatan direct dan indirect untuk mengakses data yang ada pada
memory
f) Membuat sebuah proses looping menggunakan set instruksi
g) Menampilkan teks pada layar dengan menggunakan instruksi input output
h) Membuat sebuah subrutin, memanggil sebuah subrutin, dan kembali ke program utama
i) Membuat set instruksi kondisional (compare dan jump)

2. Dasar teori:
a) CPU simulator: praktikum ini bertujuan agar mahasiswa dapat memahami secara lebih baik
tentang materi arsitektur komputer. Dalam pelaksanaannya, digunakan sebuah program
aplikasi berupa simulator yang bekerja pada sebuah komputer dengan sistem operasi
Windows yaitu YASMIN: CPU-OS simulator versi 7.5.50 dari Besim Mustafa, Edge Hill
University, Inggris dengan hak cipta 2006-2013. Simulator ini merepresentasikan secara visual
tentang mekanisme-mekanisme yang terjadi dalam sebuah arsitektur komputer sehingga
mahasiswa dapat mengamati apa yang sebenarnya terjadi dalam sebuah komputer saat
melakukan suatu pekerjaan tertentu. Selain itu simulator amat sangat membantu karena
mahasiswa tidak perlu melakukan proses install dan konfigurasi tertentu pada sistem yang
nyata.
Pemrograman pada arsitektur komputer melibatkan pemrograman tingkat rendah (low level
programming) yaitu:
b) Set instruksi
c) Register

Fakultas Ilmu Komputer – Universitas Brawijaya


3
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

d) Mode pengalamatan set instruksi


Ketiga hal di atas saling berinteraksi sehingga memungkinkan komputer untuk dapat melakukan proses
komputasi.

3. Fitur-fitur CPU simulator: pada bagian ini akan dijelaskan secara umum bagaimana menggunakan
dan memanfaatkan fitur-fitur yang ada pada CPU simulator ini. Tampilan utama dari CPU-OS
Simulator tampak seperti pada gambar berikut:

Gambar 1. Layar tampilan utama dari CPU-OS simulator

Fakultas Ilmu Komputer – Universitas Brawijaya


4
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

Tampilan utama dari simulator ini terdiri dari:

a) CPU Instruction Memory

Gambar 2. Layar tampilan CPU Instruction Memory

Tampilan ini berisi kumpulan set instruksi yang ada pada sebuah program. Intruksi berupa urutan
proses yang dilakukan oleh prosesor komputer dalam bentuk bahasa assembly dan bukan dalam
bentuk kode biner. Hal ini bertujuan untuk lebih memudahkan dalam membaca kode. Setiap instruksi
berhubungan dengan dua macam alamat, yaitu Physical Address (PAdd) dan Logical Address (Ladd).
Pada tampilan ini juga ditampilkan Base Address (Base). Sebuah urutan set instruksi yang ada pada
sebuah program yang sama, akan memiliki nilai Base Address yang sama pula.

Fakultas Ilmu Komputer – Universitas Brawijaya


5
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

b) Special CPU Registers

Gambar 3. Layar tampilan Special CPU Registers

Tampilan ini menunjukkan kumpulan register pada CPU yang memiliki fungsi khusus yaitu:
 Program Counter (PC): berisi alamat berikutnya dari set instruksi yang akan dieksekusi
 Instruction Register (IR): berisi set instruksi yang sedang dieksekusi
 Status Register (SR): berisi informasi tentang hasil yang didapat dari eksekusi set instruksi yang
sebelumnya
 Stack Pointer (SP): register yang menunjuk kepada nilai yang ada di bagian paling atas sendiri
dari Program Stack
 Base Register (BR): berisi Base Address yang digunakan saat itu
 Memory Address Register ( MAR): berisi alamat memori yang sedang diakses saat itu
 Status Flags yang terdiri dari Overflow (OV), Zero (Z), dan Negative (N).

Fakultas Ilmu Komputer – Universitas Brawijaya


6
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

c) CPU (General Purpose) Registers

Gambar 4. Layar tampilan CPU Register

Tampilan ini menunjukkan nama masing-masing General Purpose Register (Reg) yang ada dalam CPU
dan nilai data yang ada dalam register-register tersebut (Val). Register adalah sekumpulan memori
yang sangat cepat dan digunakan untuk menyimpan data saat CPU mengeksekusi sekumpulan set
instruksi. Register-register ini jugalah yang sebenarnya menyimpan nilai-nilai variabel yang
didefinisikan dalam sebuah pemrograman bahasa tingkat tinggi (High Level Language Programming).
Tidak semua arsitektur komputer memiliki jumlah register yang sama (ada yang 16, 32, 64, dan lain-
lain). Namun fungsi dari register tetap sama.

Fakultas Ilmu Komputer – Universitas Brawijaya


7
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

Untuk merubah nilai data yang ada pada sebuah register dalam simulator ini, pilihlah dahulu register
mana yang ingin dirubah nilai datanya, lalu masukkan nilai data baru yang diinginkan pada text box
Reg Value dan klik tombol change pada tab register.
d) Program Stack

Gambar 5. Layar tampilan Program Stack


Program Stack adalah sebuah daerah yang digunakan juga untuk menyimpan nilai data sementara
yang timbul seiring dengan dilakukannya proses eksekusi kumpulan set instruksi oleh CPU. Struktur
data yang digunakan oleh Program Stack menggunakan LIFO (Last In First Out). Program Stack ini
digunakan untuk lebih mengefisienkan proses penanganan dan pemanggilan subrutin. Setiap program
mempunyai Program Stack-nya sendiri. Set instruksi PUSH dan POP digunakan untuk menyimpan
ataupun mengambil nilai data ke dalam dan ke luar dari daerah Program Stack.
e) Program List

Gambar 6. Layar tampilan Program List

Fakultas Ilmu Komputer – Universitas Brawijaya


8
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

Gunakan tombol REMOVE PROGRAM untuk menghilangkan sebuah program dari daftar dan gunakan
tombol REMOVE ALL PROGRAMS jika ingin menghilangkan semua program yang ada pada daftar. Jika
sebuah program dihilangkan, maka semua set instruksi-nya juga akan hilang dari layar tampilan CPU
Instruction Memory.
f) Program Creation

Gambar 7. Layar tampilan Program Creation

Untuk membuat sebuah program baru, isilah nama program pada text box Program Name dan nilai
Base Addressnya, lalu klik tombol ADD. Nama program akan tampil pada layar tampilan Program List.

g) Add Program Instruction Tab

Gambar 8. Layar tampilan Add Program Instruction Tab

Klik tombol Add New untuk menambah set instruksi baru, klik tombol Edit untuk merubah sebuah set
instruksi, gunakan Move Up dan Move Down untuk menggeser-geser urutan set instruksi dan klik
tombol Insert Above dan Insert Below jika ingin menyisipkan sebuah set instruksi.

Fakultas Ilmu Komputer – Universitas Brawijaya


9
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

h) Program Data Memory

Gambar 9. Layar tampilan Program Data Memory


Set instruksi yang mengakses daerah pada memory yang berisi data dapat melakukan proses tulis dan
baca pada nilai data yang ada pada suatu lokasi alamat tertentu. Data-data ini dapat dilihat seperti
pada gambar 9 di atas. Untuk menampilkan tampilan Program Data Memory tersebut, klik tombol
Show Program Data Memory yang ada seperti pada gambar 6. Kolom Ladd menampilkan nilai alamat
awal pada setiap baris alamat yang ada. Setiap baris menampilkan data 8 byte yang direpresentasikan
mulai dari kolom B0 sampai dengan B7. Kolom Data menampilkan karakter yang ditampilkan pada
output komputer sesuai dengan nilai data yang ada pada B0 sampai dengan B7 (kode ASCII).
Sedangkan untuk nilai data yang tidak memiliki karakter yang dapat ditampilkan akan
direpresentasikan dalam bentuk titik/dot (.). Nilai data yang ada ditampilkan dalam bentuk nilai
heksanya. Pada contoh di atas, dapat dilihat bahwa ada data di lokasi alamat 19 dan 37 yang berkaitan
dengan karakter huruf kapital A dan B.
Untuk merubah nilai data pada suatu alamat tertentu, pertama pilih dahulu lokasi baris alamat dari
data yang ingin dirubah, lalu isilah informasi pada Initialize Data untuk memodifikasi nilai byte dalam

Fakultas Ilmu Komputer – Universitas Brawijaya


10
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

bentuk Integer, Boolean, atau String sesuai dengan yang diinginkan, kemudian klik tombol Update
untuk melakukan perubahan.
i) IO Console

Gambar 10. Layar Tampilan IO Console


Layar tampilan Console seperti pada gambar 10 di atas digunakan dalam program untuk melakukan
baik membaca data yang diinputkan dari luar maupun untuk menampilkan data yang ada pada memori
ke layar sebagai output. Layar tampilan IO Console di atas dapat ditampilkan dengan cara mengklik
tombol Input Output seperti yang ada pada gambar 1. Jika mengklik tombol Show Keyboard seperti
yang ada pada gambar 10 di atas, maka akan ditampilkan layar keyboard kecil yang dapat dipakai untuk
meng-input-kan data ke dalam CPU.

Fakultas Ilmu Komputer – Universitas Brawijaya


11
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

4. Prosedur Percobaan:
4.1. Buat sebuah program baru menggunakan base address 100, lalu masukkan set instruksi dengan
urutan sebagai berikut:
MOV #5, R00
MOV #8, R00
ADD R00, R01
PSH R01
PSH R00
CMP R00, R01
JMP 0
POP R02
POP R03
CMP R04, R05
JEQ 0
Jalankan program di atas dengan cara mengeksekusi tiap-tiap set instruksi ! (klik tombol Step untuk
setiap set instruksi pada Program Control Tab seperti pada gambar 1 di atas)
Amati apa yang terjadi setiap Step-nya pada setiap register yang ada pada CPU-OS simulator baik itu
general purpose register maupun special CPU register lalu berikan kesimpulan anda !

STEP R00 R01 R02 R03 R04 R05 PC SR SP BR Status IR MAR MDR
Flag
1
2
3
4
5
6
7
8
9
10
11
12

Fakultas Ilmu Komputer – Universitas Brawijaya


12
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

4.2. Buat sebuah program baru menggunakan base address 100. Buka layar tampilan Program Data
Memory seperti pada gambar 9 di atas, masukkan data String pada baris alamat yang dimulai dari Ladd
24 dengan nama anda, lalu masukkan set instruksi dengan urutan sebagai berikut:
(catatan: simbol L0, L1, dan L2 adalah simbol label pada set instruksi yang biasanya digunakan untuk
mempermudah proses pemanggilan subrutin. Label dapat dibuat dengan cara mengklik tombol
Add New pada Instruction Tab seperti pada gambar 1 di atas, lalu mengklik tombol New Label pada
tampilan berikutnya dan mengisi nama label yang diinginkan. Sedangkan untuk simbol @ adalah
menandakan bahwa mode pengalamatan yang digunakan adalah mode pengalamatan indirect. Mode
pengalamatan indirect ini dapat digunakan dengan mengklik pilihan direct atau indirect yang ada pada
tampilan saat kita ingin memasukkan sebuah set instruksi seperti saat setelah kita mengklik tombol
Add New pada Intruction Tab pada gambar 1 di atas.)

MSF
PSH #8
CAL $L2
HLT
L2:
POP R02
PSH #1
POP R01
MOV #0, R01
MOV #24, R00
L0:
ADD #1, R01
MSF
CAL $L1
CMP R02,R01
JNE $L0
RET
L1:
OUT @R00, 0
RET

Fakultas Ilmu Komputer – Universitas Brawijaya


13
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

Jalankan program di atas dengan cara mengatur lebih dahulu kecepatan simulator sedemikian rupa
sehingga simulasi mudah diamati lalu klik tombol Run pada Program Control Tab seperti yang ada pada
gambar 1 di atas !

Amati apa yang terjadi pada setiap register yang ada pada CPU-OS simulator baik itu general purpose
register maupun special CPU register, amati juga tampilan yang ada pada IO Console seperti pada
gambar 10 di atas, lalu berikan kesimpulan anda !

4.3. Buat sebuah program baru menggunakan base address 100, lalu masukkan set instruksi dengan urutan
sebagai berikut:

MOV #48, R01


MOV #20, R02
L0:
STB R01, @R02
ADD #1, R01
ADD #1, R02
CMP #57, R01
JNE $L0
SUB #1, R02
MOV #20, R03
MOV #80, R04
L1:
LDB @R03, R05
ADD #1, R03
STB R05, @R04
ADD #1, R04
CMP #29, R03
JNE $L1
SUB #1, R04
HLT

Fakultas Ilmu Komputer – Universitas Brawijaya


14
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

Jalankan program di atas dengan cara mengatur lebih dahulu kecepatan simulator sedemikian rupa
sehingga simulasi mudah diamati lalu klik tombol Run pada Program Control Tab seperti yang ada pada
gambar 1 di atas !

Amati apa yang terjadi pada setiap register yang ada pada CPU-OS simulator baik itu general purpose
register maupun special CPU register, amati juga nilai data yang ada pada Program Data Memory
seperti pada gambar 9 di atas, lalu berikan kesimpulan anda !

Fakultas Ilmu Komputer – Universitas Brawijaya


15
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

BAB II
COMPILER DAN INPUT OUTPUT INTERRUPT

1. Tujuan percobaan: setelah melakukan percobaan ini, diharapkan mahasiswa dapat


a) Menjelaskan prinsip kerja Compiler secara umum
b) Menjelaskan tentang interrupt vectors dan bagaimana penggunaannya
c) Menjelaskan tentang dua metode utama dalam I/O interrupt handling dan perbedaannya

2. Dasar teori: Compiler adalah alat rekayasa perangkat lunak untuk menghasilkan kode biner
yang dapat dieksekusi dari bahasa pemrograman tingkat tinggi. Proses kompilasi berlangsung
dalam tiga tahap: Tokenising, Parsing, dan Code Generation. Compiler yang baik sering
menghasilkan kode yang sangat optimal untuk mengurangi ukuran dari kode biner atau
mempercepat eksekusi kode yang dihasilkan. Akibatnya mengoptimalkan compiler secara
langsung dapat memberikan kontribusi terhadap peningkatan kinerja CPU.
Sistem komputer menggunakan mekanisme interrupt sebagai sarana untuk merespon
terhadap kejadian-kejadian external misalnya operasi yang meliputi input dan output. CPU
secara sesaat terinterupsi sebelum mengeksekusi set instruksi berikutnya dan dipaksa untuk
mengeksekusi set instruksi yang ada pada bagian interrupt handler. Setelah proses interrupt
handling selesai dilakukan, CPU akan kembali untuk mengeksekusi set instruksi sebelumnya di
mana dia terinterupsi. Bagian dari memori yaitu Program Stack dalam hal ini dipakai untuk
menyimpan keadaan CPU sesaat sebelum dia melakukan proses interrupt handling yaitu nilai-
nilai data yang tersimpan pada register dan nilai alamat memori yang merupakan lokasi set
instruksi berikutnya (di mana dia terinterupsi) yang harus dia lakukan setelah proses interrupt
handling selesai.

3. Fitur-fitur CPU simulator: pada CPU-OS Simulator, terdapat fitur compiler. Dengan fitur ini,
pemakai simulator lebih mudah membuat program-program tidak lagi menggunakan set
instruksi (bahasa assembly), tapi menggunakan bahasa pemrograman yang lebih tinggi (mirip
bahasa C atau Pascal). Untuk menggunakan fitur ini, klik tombol compiler yang ada pada
tampilan utama CPU-OS Simulator seperti pada gambar 1. Berikutnya akan tampil tampilan
seperti pada gambar berikut ini

Fakultas Ilmu Komputer – Universitas Brawijaya


16
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

Gambar 11. Layar tampilan Compiler Window

Pada tampilan tersebut, terdapat layar Program Source (Input) tempat kita mengetikkan kode
program. Sedangkan layar Program Code (Output) adalah tempat menampilkan hasil compile dari
kode program (klik tombol Compile pada Compile Tab yang ada seperti pada gambar 11 di atas).
Setelah proses compile selesai dilakukan, compiler akan mengubah kode program ke dalam bahasa
mesin yaitu yang dapat dilihat pada bagian kolom Binary Code. Kolom CPU Instruction merupakan hasil
terjemahan terhadap kode mesin ke bentuk set instruksi. Kolom Ladd merupakan kolom tempat kita
dapat melihat lokasi alamat memori untuk tiap set instruksi yang dihasilkan dari bahasa mesinnya.
Untuk membuat agar program yang sudah dibuat bisa dijalankan, maka setelah melakukan proses
compile, klik tombol Load In Memory yang ada pada Assembly Code Tab seperti yang ada pada gambar
11 di atas. Hal itu akan menyebabkan kumpulan set instruksi yang dihasilkan bahasa mesin akan masuk
ke dalam CPU Instruction Memory seperti yang ada pada gambar 2 sehingga program siap
disimulasikan.
Selain fitur Compiler tersebut, ada juga fitur Interrupt yang dapat diakses dengan mengklik tombol
Interrupt pada layar tampilan utama seperti pada gambar 1. Berikutnya akan muncul tampilan seperti
berikut

Fakultas Ilmu Komputer – Universitas Brawijaya


17
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

Gambar 12. Layar tampilan Interrupt Window

Pada tampilan Interrupt seperti pada gambar 12 di atas, terdapat tombol Trigger di tiap interrupt yang
berkaitan (INT 1, INT 2, INT 3, INT 4, INT 5, INT 6). Tombol Trigger tersebut dapat diklik untuk
melakukan proses interrupt sesuai dengan interrupt mana yang diinginkan.

Fakultas Ilmu Komputer – Universitas Brawijaya


18
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

4. Prosedur percobaan:

4.1. Pada layar Compiler (seperti pada gambar 11), buat program berikut ini
program Ex1
n = 5
for i = 1 to 6
n = n + 1
if n = 3 then
n = 0
end if
next
end
Lakukan proses Compile dengan mengklik tombol Compile pada layar Compiler (gambar 11).
Amati apa yang muncul pada tampilan Compiler Progress ! Dari hasil pengamatan anda, berikan
kesimpulan bagaimana prinsip kerja Compiler secara umum !

Sekarang klik tombol Symbol Table, amati dan berikan kesimpulan anda terhadap apa yang
ditampilkan dari Symbol Table tersebut !

Sekarang amati tampilan yang muncul pada Program Code (Output) ! Berikan kesimpulan anda
terhadap apa yang anda amati ! (arti angka-angka dan tulisan yang tertampilkan di sana)

Fakultas Ilmu Komputer – Universitas Brawijaya


19
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

4.2. Pada layar Compiler (seperti pada gambar 11), buat program berikut ini kemudian lakukan proses
Compile dan Load In Memory

program Vectors
sub IntVect1 intr 1
writeln("This is intr 1")
end sub

sub IntVect2 intr 2


writeln("This is intr 2")
end sub

sub IntVect5 intr 5


writeln("This is intr 5")
end sub

while true
wend
end

Amati lokasi subrutin dari IntVect 1, IntVect 2, dan IntVect 5 !


Run program, buka tampilan layar Console Window (gambar 10) dan layar Interrupt Window
(gambar 12). Saat program sedang berjalan, tekan tombol Trigger pada layar Interrupt Window
sesuai dengan interrupt yang berkaitan lalu perhatikan tampilan yang muncul pada layar Console
Window.

Amati dan berikan kesimpulan anda !

Fakultas Ilmu Komputer – Universitas Brawijaya


20
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

4.3. Pada layar Compiler (seperti pada gambar 11), buat program berikut ini kemudian lakukan proses
Compile dan Load In Memory
program PolledInt
var v integer

v = 0
writeln("Program Starting")
while true
read(nowait, v)
for i = 1 to 100
if v > 0 then
break *
end if
write(".")
next
wend
writeln("Program Ending")
end

Lakukan proses Compile dan Load In Memory lalu Run program tersebut ! Tampilkan layar Console
Window dan Show Keyboard pada layar Console tersebut.
Saat Program sedang berjalan dan tampil pesan “Program Starting” pada layar Console Window,
ketik sembarang karakter pada keyboard dan tunggu program selesai. Amati apa yang terjadi !
Kembali buka layar Compiler Window lalu buat program berikut ini

program VectoredInt
var v integer

sub InputInt intr 1


read(nowait, v)
end sub

v = 0
writeln("Program Starting")

Fakultas Ilmu Komputer – Universitas Brawijaya


21
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

while true
for i = 1 to 100
if v > 0 then
break *
end if
write(".")
next
wend
writeln("Program Ending")
end

Lakukan proses Compile dan Load In Memory lalu Run program tersebut ! Tampilkan layar Console
Window dan Show Keyboard pada layar Console tersebut.
Saat Program sedang berjalan dan tampil pesan “Program Starting” pada layar Console Window,
ketik sembarang karakter pada keyboard dan tunggu program selesai. Amati apa yang terjadi !
Berdasarkan pengamatan anda, berikan kesimpulan tentang cara kerja dua metode tersebut, jelaskan
perbedaannya, sertakan juga kekurangan, dan kelebihannya !

Fakultas Ilmu Komputer – Universitas Brawijaya


22
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

BAB III
CACHE

1. Tujuan percobaan: setelah melakukan percobaan ini, diharapkan mahasiswa dapat


a) Menjelaskan tentang Direct Mapping pada cache
b) Menjelaskan tentang cache hit dan miss
c) Menjelaskan tentang 2-way-Set-Associative dan 4-way-Set-Associative pada cache
d) Menjelaskan pengaruh cache size dan bentuk mapping

2. Dasar teori: umumnya, memori yang lebih murah bersifat lebih lambat dari pada memori yang
lebih mahal, kecuali terhadap CPU yang paling lambat. Kinerja sistem akan terganggu apabila
peralatan yang cepat harus menunggu sistem memori mengakses data. Peralatan tersebut
bisa berupa peralatan I/O atau CPU, dan sistem memori bisa berupa memori utama atau
peralatan eksternal. Karena pemakai komputer nampaknya selalu menginginkan memori yang
lebih besar, maka para perancang komputer harus secara seksama mempertimbangkan
keseimbangan daya jual antara biaya memori dan kinerjanya. Salah satu cara untuk
mengurangi degradasi kinerja yang diakibatkan oleh memori yang lambat adalah dengan
menggabungkan memori cache ke dalam sistem. Memori cache adalah buffer kecepatan tinggi
yang digunakan untuk menyimpan data yang diakses pada saat itu dan data yang berdekatan
dalam memori utama. Dengan memasukkan memori cache antara peralatan cepat dan sistem
memori yang lebih lambat, perancang dapat memberikan sistem memori yang cepat.

3. Fitur-fitur CPU simulator: CPU-OS Simulator memiliki Data Cache Simulator. Untuk
mengaksesnya, klik tombol Show Cache yang ada pada Cache-Pipeline Tab di layar tampilan
utama CPU-OS Simulator seperti pada gambar 13.

Fakultas Ilmu Komputer – Universitas Brawijaya


23
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

Gambar 13. Layar tampilan Data Cache Window


Pada layar tampilan Data Cache Window tersebut, terdapat block size, chace type, Set Blocks, dan
chace size yang dapat dipilih berdasarkan jenis dan kapasitas yang diinginkan. Untuk tampilannya
dapat dilihat dalam bentuk grafik, chace stats, dan layar cache data.

Fakultas Ilmu Komputer – Universitas Brawijaya


24
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

4. Prosedur percobaan:

4.1. Buat sebuah program seperti berikut


MOV #0, R01
STB R01, @R01
CMP #63, R01
JEQ 31
ADD #1, R01
JMP 6
HLT

Program di atas menulis data angka dari 0 sampai dengan 63 pada lokasi alamat memori 0
sampai dengan 63. Jalankan program tersebut dan amati pada layar Program Data Memory
seperti pada gambar 9 ! Klik tombol Show Cache sehingga keluar tampilan seperti pada
gambar 13, lalu bersihkan dengan mengklik tombol Flush. Konfigurasi ulang cache dengan
spesifikasi: Block Size = 4, Cache Type = Direct Mapped, Cache Size = 16, Write Policy = Write-
Back.
Kemudian sisipkan kode berikut di bawah set instruksi JMP 6:
LDB 0, R00
LDB 1, R00
LDB 2, R00
LDB 3, R00
Eksekusi set instruksi di atas dengan cara mengklik tombol Step yang ada pada tampilan utama
seperti pada gambar 1. Amati dan isi tabel di bawah ini !
Address Data Hits Block

Hits % Hits
Misses % Misses
Masukkan set instruksi berikut di bawah set instruksi LDB 3, R00

Fakultas Ilmu Komputer – Universitas Brawijaya


25
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

LDB 4, R00
Eksekusi set instruksi tersebut dengan mengklik tombol Step, amati isi data pada layar Program
Data Memory lalu isi tabel berikut
Address Data Block

Dari hasil pengamatan anda, buatlah kesimpulannya !

4.2. Bersihkan cache dengan mengklik tombol Flush pada layar Data Cache. Lalu masukkan set
instruksi berikut di bawah set instruksi terakhir
LDB 16, R00
LDB 32, R00
Eksekusilah hanya 3 set instruksi berikut dengan cara klik set instruksi yang ingin dijalankan lalu klik
tombol Step yang ada pada layar tampilan utama seperti pada gambar 1.
LDB 0, R00
LDB 16, R00
LDB 32, R00
Ulangi langkah di atas dua kali, amati apa yang terjadi lalu isilah tabel di bawah ini
Address Data Hits Block

Hits % Hits
Misses % Misses
Dari hasil pengamatan anda, berikan kesimpulannya !

Fakultas Ilmu Komputer – Universitas Brawijaya


26
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

4.3. Konfigurasi cache dengan spesifikasi: Block Size = 4, Cache Type = Set Associative, Cache
Size = 16, Set Blocks = 2-way, Write Policy = Write-Back. Sisipkan set instruksi berikut di
bawah set instruksi LDB 4, R00:
LDB 8, R00
LDB 12, R00
Eksekusi set instruksi dengan urutan sebagai berikut satu persatu (dengan menekan tombol
Step):
LDB 0, R00
LDB 4, R00
LDB 8, R00
LDB 12, R00
Amati lalu isilah tabel berikut:
Address Set Block
0000
0004
0008
0012
Konfigurasi ulang cache dengan merubah Set Blocks-nya menjadi 4-way. Eksekusi set instruksi dengan
urutan sebagai berikut:
LDB 0, R00
LDB 4, R00
LDB 8, R00
LDB 12, R00
Amati, lalu isi tabel berikut:
Address Set Block
0000
0004
0008
0012
Bersihkan cache dengan mengklik tombol Flush pada layar Data Cache. Dari program tersebut,
eksekusi hanya dua set instruksi berikut satu persatu:
LDB 0, R00
LDB 16, R00

Fakultas Ilmu Komputer – Universitas Brawijaya


27
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

Ulangi langkah di atas tiga kali, amati, lalu isi tabel berikut:
Address Data Hits

Hits % Hits
Misses % Misses
Dari hasil pengamatan anda, berikan kesimpulannya !

4.4. Buka layar Compiler seperti pada gambar 11. Buat program seperti di bawah, lakukan proses
Compile, kemudian Load In Memory
program CacheTest
var a array(50) byte

i = 49
for n = 0 to 49
p = a(n) + a(i)
i = i - 1
next
end
Pastikan pilihan Charts pada layar Data Cache (seperti pada gambar 13) aktif. Pilih parameter cache
yang sesuai, jalankan program, amati lalu isilah tabel berikut (pastikan sebelum menjalankan program
dengan spesifikasi baru, anda menekan tombol dahulu tombol Reset Program pada layar tampilan
utama simulator seperti pada gambar 1 dan Write Policy pada layar Data Cache seperti pada gambar
11 adalah Write-Back):

Direct Mapping (cache size mulai dari 16 sampai dengan 256)


16 32 64 128 256

Fakultas Ilmu Komputer – Universitas Brawijaya


28
Praktikum Arsitektur Organisasi Komputer Lanjut
Laboratorium Sistem Komputer dan Robotika

2-way Set Associative Mapping (cache size mulai dari 16 sampai dengan 256)
16 32 64 128 256

4-way Set Associative Mapping (cache size mulai dari 16 sampai dengan 256)
16 32 64 128 256

8-way Set Associative Mapping (cache size mulai dari 32 sampai dengan 128)
32 64 128

Dari hasil pengamatan anda, berikan kesimpulannya !

Fakultas Ilmu Komputer – Universitas Brawijaya


29
BAB IV
PROCESS STATES DAN MEMORY MANAGEMENT

1. Tujuan percobaan: setelah melakukan percobaan ini, diharapkan mahasiswa dapat


a) Menjelaskan tentang tiga state processes dalam komputer
b) Menjelaskan tentang transisi yang terjadi antara state processes dalam komputer
c) Menjelaskan tentang dua kejadian yang dapat menyebabkan suatu proses berubah keadaan
dari waiting state-nya
d) Menjelaskan tentang tiga placement methods yang digunakan dalam manajemen memori
e) Menjelaskan tentang virtual memori

2. Dasar teori: Sebagaimana proses bekerja, maka proses tersebut merubah state (keadaan
statis/ asal). Status dari sebuah proses didefinisikan dalam bagian oleh aktivitas yang ada dari
proses tersebut. Tiap proses mungkin adalah satu dari keadaan berikut ini:
• New: Proses sedang dikerjakan/ dibuat.
• Running: Instruksi sedang dikerjakan.
• Waiting: Proses sedang menunggu sejumlah kejadian untuk terjadi (seperti sebuah
penyelesaian I/O atau penerimaan sebuah tanda/ signal).
• Ready: Proses sedang menunggu untuk ditugaskan pada sebuah prosesor.
• Terminated: Proses telah selsesai melaksanakan tugasnya/ mengeksekusi.

Nama-nama tersebut adalah arbitrer/ berdasar opini, istilah tersebut bervariasi disepanjang
sistem operasi. Keadaan yang mereka gambarkan ditemukan pada seluruh sistem. Namun,
sistem operasi tertentu juga lebih baik menggambarkan keadaan/ status proses. Adalah
penting untuk menyadari bahwa hanya satu proses dapat berjalan pada prosesor mana pun
pada waktu kapan pun. Namun, banyak proses yang dapat ready atau waiting.
Sebuah proses membutuhkan memori untuk dieksekusi. Sebuah proses dapat ditukar
sementara keluar memori ke backing store (disk), dan kemudian dibawa masuk lagi ke memori
untuk dieksekusi.
Sebagai contoh, asumsi multiprogramming, dengan penjadualan algoritma CPU Round-Robin.
Ketika kuantum habis, manager memori akan mulai menukar keluar proses yang selesai, dan
memasukkan ke memori proses yang bebas. Sementara penjadualan CPU akan
mangalokasikan waktu untuk proses lain di memori. Ketika tiap proses menghabiskan waktu
kuantumnya, proses akan ditukar dengan proses lain. Idealnya memori manager, dapat
menukar proses-proses cukup cepat, sehingga selalu ada proses di memori, siap dieksekusi,
ketika penjadual CPU ingin menjadual ulang CPU. Besar kuantum juga harus cukup besar,
sehingga jumlah perhitungan yang dilakukan antar pertukaran masuk akal. Variasi dari
kebijakan swapping ini, digunakan untuk algoritma penjadualan berdasarkan prioritas. Jika
proses yang lebih tinggi tiba, dan minta dilayani, memori manager dapat menukar keluar
proses dengan prioritas yang lebih rendah, sehingga dapat memasukkan dan mengeksekusi
proses dengan prioritas yang lebih tinggi.
Ketika proses dengan prioritas lebih tinggi selesai, proses dengan prioritas yang lebih rendah,
dapat ditukar masuk kembali, dan melanjutkan. Macam-macam pertukaran ini kadang disebut
roll out, dan roll in. Memori virtual merupakan suatu teknik yang memisahkan antara memori
logis dan memori fisiknya. Teknik ini mengizinkan program untuk dieksekusi tanpa seluruh
bagian program perlu ikut masuk ke dalam memori.
Berbeda dengan keterbatasan yang dimiliki oleh memori fisik, memori virtual dapat
menampung program dalam skala besar, melebihi daya tampung dari memori utama yang
tersedia. Prinsip dari memori virtual yang patut diingat adalah bahwa: "Kecepatan maksimum
eksekusi proses di memori virtual dapat sama, tetapi tidak pernah melampaui kecepatan
eksekusi proses yang sama di sistem tanpa menggunakan memori virtual."

3. Fitur-fitur CPU simulator: pada simulator ini, juga terdapat fitur untuk menampilkan
bagaimana sistem operasi dalam sebuah komputer bekerja. Untuk membuka fitur ini, klik
tombol OS Output pada layar tampilan utama simulator ini (seperti pada gambar 1) sehingga
keluar tampilan seperti berikut ini
Gambar 14. Layar tampilan OS Simulator

Anda dapat memasukkan program dengan cara melakukan Load In Memory lebih dahulu jika program
dibuat dengan menggunakan Compiler ataupun dengan cara membuat program secara langsung
dengan set instruksi pada layar tampilan utama simulator. Jika program tersebut ingin dijalankan pada
layar tampilan OS Simulator (seperti pada gambar 14), maka klik dahulu tombol Create New Process
yang ada pada Process Tab di Program List pada layar tampilan OS Simulator. Program kemudian
dijalankan dengan mengklik tombol Start yang ada pada OS Control Tab.
Jika anda mengklik tombol View Tab, maka akan ada menu untuk menampilkan antara lain: View
Utilization, View Process List, View Process States, View Resources, View Memory, View Log, dan View
Libraries. Anda dapat memilih salah satu menu tersebut sesuai dengan apa yang ingin diamati. Dalam
percobaan ini, anda cukup menggunakan menu View Process States untuk dapat melihat State
Processes yang ada dalam komputer (gambar 15), menu View Memory untuk dapat melihat kondisi
memori di dalam komputer (gambar 16) dalam hubungannya dengan proses Swapping, lalu View
Utilization untuk dapat melihat keadaan Resource pada komputer (gambar 17) sehubungan dengan
proses Virtual Memory.
Gambar 15. Layar tampilan Process States

Gambar 16. Layar tampilan Main Memory


Gambar 17. Layar tampilan Resource Utilisation

4. Prosedur percobaan:
4.1. Pada OS Simulator Window, load program ForeverLooping lalu buat proses dari program tersebut
dengan mengklik tombol Create New Process. Berikutnya buka tampilan Process States Window
seperti pada gambar 15. Pada tampilan tersebut, anda akan dapat melihat berbagai macam state
process dalam komputer. Sesuaikan kecepatan simulator dengan mengaturnya pada OS Control
Tab pada layar OS Simulator Window seperti pada gambar 14, lalu klik tombol Start, setelah itu
buka kembali layar Process States Window. Pada percobaan ini, lakukan proses perubahan state
process pada layar Process States Window (gambar 15) dengan melakukan klik dan drag
menggunakan mouse anda sesuai dengan urutan yang ada pada tabel di bawah ini, amati apa
yang terjadi, lalu isilah tabelnya:
Perlakuan Hasil Berhasil (ya Gagal (ya
atau tidak) atau tidak)
1. Drag proses dari waiting queue ke waiting
state
2. Drag proses ke Process Bin (terminate)
3. Drag proses ke CPU Box (run)
4. Drag proses ke Waiting Queue
5. Drag proses ke CPU Box
6. Drag proses ke Process Bin
7. Drag proses ke Ready Queue (ready)
8. Klik tombol Resume di OS Control Tab
9. Drag proses ke Ready Queue
10. Klik tombol Resume di OS Control Tab
11. Drag proses ke Process Bin
Berdasarkan hasil di atas, isilah keadaan yang diperbolehkan pada tabel di bawah ini:
Keadaan Awal Keadaan Akhir

Pada gambar di bawah ini, berilah tanda panah di mana keadaan perubahan State Process diijinkan

4.2. Pada percobaan kali ini, Load program OSQueuesDemo lalu buat proses dari program ini ke dalam
OS Simulator Window. Jalankan program ini, amati apa yang terjadi, lalu isilah urutan State
Process yang terjadi dari hasil pengamatan anda ke dalam tabel di bawah ini:
Urutan State Process
1. Running

5. Ready
(catatan: jika anda ingin mennghilangkan proses yang ada pada keadaan Running, klik tombol Kill pada
tampilan Running Processes di layar OS Simulator Window seperti pada gambara 14, klik tombol
Remove jika proses sedang ada dalam keadaan Ready atau Waiting)

4.3. Kali ini Load program WaitOnreadDemo, buat proses baru dari program ini pada layar OS
Simulator Window, jalankan (input dari luar dapat diberikan dengan cara menampilkan Show
Keyboard pada layar tampilan IO Console seperti pada gambar 10), amati apa yang terjadi ! Pada
program kali ini, jika sebuah proses dalam keadaan Running dan tiba-tiba membutuhkan suatu
input dari luar, maka sistem operasi pada komputer akan merubah keadaan proses menjadi
Waiting State. Berikan kesimpulan anda !

4.4. Untuk percobaan ini, pastikan simulator dalam keadaan bersih tidak ada program apapun sama
sekali (lakukan Remove Program jika masih terdapat program pada simulator). Kemudian, pada
layar OS Simulator Window, klik Views Tab lalu Klik tombol View Memory. Anda akan melihat
layar Main memory seperti pada gambar 16. Pilih pilihan yang ada pada opsi Frames menjadi
bernilai satu, lalu klik tombol Add sedemikian rupa sampai Main Memory terlihat penuh (kira-kira
sepuluh kali klik). Sekarang buat Hole pada memori dengan cara memilih frame yang akan
dihilangkan kemudian mengklik tombol Remove. Hilangkan Frame yang ke-3, ke-5, ke-7, ke-8, dan
ke-9 sehingga hanya Frame 0, 1, 4, dan 6 saja yang ada pada Main Memory.

Sekarang pilih opsi pada Placement Policy menjadi First Fit, load program ForeverLooping, buat proses
dari program ini pada OS Simulator Window. Amati apa yang terjadi pada layar tampilan Main Memory
seperti pada gambar 16 !
Remove proses tersebut (jangan meremove programnya, hanya prosesnya saja). Rubah Placement
Policy menjadi Best Fit. Buat lagi proses dari program ForeverLooping lalu amati apa yang terjadi pada
layar Main Memory !
Remove lagi proses tersebut, sekarang rubah Placement Policy menjadi Worst Fit dan ulangi langkah
seperti di atas, amati apa yang terjadi pada layar Main Memory !
Dari hasil pengamatan anda, berikan kesimpulan bagaimana cara bekerja dari masing-masing
Placement Policy tersebut!
4.5. Buka layar Resource Utilisation seperti pada gambar 17, lalu buka layar Main Memory seperti
pada gambar 16 dan hilangkan centang pada opsi Paging Enabled Box. Setelah itu, load program
OSQueuesDemo, kemudian buat tiga macam proses dengan konfigurasi yang berbeda dari
program ini pada Process Tab di layar OS Simulator Window seperti pada gambar 14 sesuai
dengan tabel di bawah ini. Amati apa yang terjadi pada layar Resource Utilisation dan isilah tabel
di bawah ini:
Process Pages Free Alloc Swap
P1 4
P2 5
P3 3
Jelaskan kenapa dilakukan proses Swap pada memori untuk proses P3 !

Sekarang, jalankan program di atas dengan menyesuaikan dahulu kecepatan simulasi lalu klik tombol
Start pada layar OS Simulator Window seperti pada gambar 14 dan lakukan pengamatan terhadap
layar Resource Utilisation seperti pada gambar 17. Dari hasil pengamatan anda, isilah tabel di bawah
ini:
Process Free Alloc Swap
P1
P2
P3
P1
P2
P3

Kali ini, saat program sedang berjalan pada keadaan Running, lakukan proses Kill satu persatu pada
proses tersebut dengan mengklik Tombol Kill pada layar OS Simulator Window. Amati layar Resource
Utilisation lalu isilah tabel di bawah ini:
CPU % Free Alloc Swap

Semua yang anda lakukan di atas menunjukkan bagaimana sebenarnya prinsip kerja dari manajemen
memori dalam sistem operasi. Buatlah kesimpulan umum tentang proses manajemen memori
tersebut !
BAB V
PIPELINING

1. Tujuan percobaan: setelah melakukan percobaan ini, diharapkan mahasiswa dapat


a) Menjelaskan perbedaan tentang cara kerja komputer dengan dan tanpa proses pipelining
b) Menjelaskan tentang keadaan dependency yang ada dalam proses pipelining dan cara-cara
mengatasinya

2. Dasar teori: CPU modern menggunakan teknologi pipelining agar mampu memproses
berbagai tahap instruksi secara paralel sehingga meningkatkan kinerja keseluruhan CPU.
Namun, sebagian besar program memiliki keadaan, syarat, dan kondisi tertentu untuk
menjamin kelancaran proses pipelining (disebut dengan dependency). Akibatnya CPU
dirancang dengan beberapa trik tertentu agar dapat mengatasi keadaan dependency
tersebut.

3. Fitur-fitur CPU simulator: pada CPU-OS Simulator ini, terdapat fitur agar dapat mengamati
proses pipelining yang terjadi pada CPU. Untuk mengaktifkan fitur ini, pada layar utama CPU-
OS Simulator ini (gambar 1), klik tombol Show Pipeline yang ada pada Cache-Pipeline Tab
sehingga keluar tampilan layar Instruction Pipeline.

Gambar 18. Layar tampilan Instruction Pipeline


Pada layar sebelah kiri, anda dapat melihat kumpulan set instruksi yang dijalankan pada proses
pipelining dalam komputer. Sedangkan pada layar sebelah kanan, anda dapat melihat tahapan-
tahapan pipeline yang dilakukan oleh komputer dengan urutan set instruksi yang dijalankan terlebih
dahulu sampai dengan yang terakhir yaitu dari atas sampai ke bawah.

4. Prosedur percobaan:
4.1. Pada layar Compiler, seperti pada gambar 11, buat program berikut ini
program Ex1
for n = 1 to 20
p = p + 1
next
end
Compile program tersebut lalu lakukan Load In Memory. Buka layar Instruction Pipeline seperti pada
gambar 18 kemudian jalankan program tersebut dengan mengklik tombol Run pada layar utama CPU-
OS Simulator. Amati apa yang terjadi pada layar Instruction Pipeline ! Anda seharusnya dapat melihat
tahapan-tahapan langkah pada proses pipeline dari hasil pengamatan anda. Tahapan-tahapan ini
disebut dengan Pipeline Stages. Tuliskanlah nama dari Pipeline Stages tersebut !

Amati juga keterangan CPI (Clocks Per Instruction) dan SF (Speed Factor) yang ada pada layar
Instruction Pipeline seperti pada gambar 18 lalu isilah tabel di bawah ini (pastikan saat itu terdapat
centang pada opsi No Instruction Pipeline).
CPI (Clocks Per Instruction)
SF (Speed Factor)
Sekarang Stop program tersebut, Reset ulang, hilangkan centang pada opsi No Instruction Pipeline,
lalu jalankan lagi program tersebut. Amati perubahan apa yang terjadi pada layar Instruction Pipeline
dan isilah tabel di bawah ini:
CPI (Clocks Per Instruction)
SF (Speed Factor)
Dari hasil pengamatan anda tersebut, simpulkan bagaimana prinsip kerja dari proses Pipelining dalam
sebuah komputer !
4.2. Sekarang kita akan melihat macam-macam keadaan dependency yang dapat terjadi dalam proses
Pipeline. Yang pertama adalah tentang Data Hazard. Buat program di bawah ini dengan
menggunakan set instruksi (bahasa Assembly) pada layar utama CPU-OS Simulator seperti pada
gambar 1 tetapi jangan dijalankan terlebih dahulu.
MOV #1, R01
MOV #5, R03
MOV #3, R01
ADD R01, R03
HLT

Pelajari program tersebut, lalu isilah berapa nilai data yang seharusnya ada pada R03 jika program
tersebut selesai dijalankan
R03 =
Sekarang pastikan tidak ada centang pada opsi No Instruction Pipeline dan opsi Do Not Insert Bubbles
pada layar Instruction Pipeline (gambar 18) kemudian jalankan program tersebut. Amatilah berapa
nilai data yang ada pada R03 !
R03 =
Sekarang sisipkan set instruksi NOP pada program tersebut sehingga program anda tamapak seperti
di bawah ini
MOV #1, R01
MOV #5, R03
MOV #3, R01
NOP
ADD R01, R03
HLT

Reset program anda lalu jalankan lagi dengan konfigurasi yang sama seperti di atas (tidak ada centang
pada opsi No Instruction Pipeline dan opsi Do Not Insert Bubbles). Amatilah nilai data yang ada pada
R03 sekarang !
R03 =
Dari hasil pengamatan anda di atas, simpulkan apa yang menyebabkan perbedaan nilai pada R03 di
atas !
Sekarang hilangkan set instruksi NOP pada program anda dan berilah centang pada opsi Do Not Insert
Bubbles. Reset program anda, lalu jalankan kembali. Amatilah berapa nilai data yang ada pada R03
sekarang !
R03 =
Berikanlah kesimpulan dari hasil pengamatan anda tersebut kenapa nilai pada R03 sekarang sama
dengan nilai yang ada pada saat program dengan set instruksi NOP dijalankan !

Pada layar Instruction Pipeline, amatilah Bubble yang muncul ! Apa warna dari Bubble tersebut ? apa
kegunaannya ?

Amatilah sekali lagi layar Instruction Pipeline kemudian isilah tabel di bawah ini !
CPI (Clocks Per Instruction)
SF (Speed Factor)

4.3. Sekarang kita akan mempelajari metode Operand Forwarding yang ada pada proses Pipeline
dalam komputer. Untuk melakukan hal ini, berilah centang pada opsi Enable Operand
Forwarding yang ada pada layar Instruction Pipeline seperti pada gambar 18. Reset program
anda yang ada pada prosedur percobaan 4.2. kemudian jalankan lagi. Amatilah apakah ada
Bubble yang timbul pada proses Pipeline !

Simulator akan menghitung jumlah dependency (dalam hal ini adalah Data Hazard) yang dideteksinya
setiap sebuah set instruksi mengalami proses Pipeline. Amatilah hasil percobaan anda dan isilah tabel
di bawah ini !
CPI (Clocks Per Instruction)
SF (Speed Factor)
Data Hazards
Apakah ada peningkatan ? Berilah kesimpulan !
4.4. Sekarang kita akan melihat pengaruh Loop Unrolling yang ada pada proses Compiler. Buka layar
Compiler seperti pada gambar 11. Buat program seperti di bawah ini
program Ex4_1
for n = 1 to 8
t = t + 1
next
end

Kemudian, pada layar Compiler, klik tab Optimize yang ada pada bagian bawah, lalu berilah centang
pada opsi Enable Optimizer dan pilihlah opsi Redundant Code (dilakukan dengan cara memberi
centang pada opsi yang diinginkan). Compile program tersebut ! Amatilah Code Size hasil dari proses
compile ! (dapat dilihat pada Code Size yang ada di Assembly Code Tab bagian kanan bawah dari layar
Compiler)
Code Size =
Sekarang lakukan Load In Memory untuk program Ex4_1 anda.
Berikutnya pilihlah opsi Loop Unrolling pada Enable Optimizer anda (dilakukan dengan cara yang sama
seperti Redundant Code di atas, yaitu dengan memberi centang pada opsi Loop Unrolling), lalu rubah
nama program anda menjadi program Ex4_2, lakukan proses Compile dan Load In Memory program
Ex4_2 tersebut sehingga akan ada dua versi program pada layar utama CPU-OS Simulator anda
(gambar 1). Amati berapa Code Size dari program Ex4_2 anda !
Code Size =
Buka layar Instruction Pipeline seperti pada gambar 18. Hilangkan centang (jika ada) pada opsi Enable
Operand Forwarding dan opsi Enable Jump Prediction, lalu pilih program Ex4_1 pada layar utama CPU-
OS Simulator. Klik Reset Program, lalu jalankan program Ex4_1 tersebut. Amatilah apa yang terjadi
pada layar Instruction Pipeline kemudian isilah tabel di bawah ini
CPI (Clocks Per Instruction)
SF (Speed Factor)
No of Instruction Executed
Lakukan hal yang sama seperti di atas tetapi kali ini untuk program Ex4_2, lalu isilah tabel di bawah ini
CPI (Clocks Per Instruction)
SF (Speed Factor)
No of Instruction Executed
Dari hasil pengamatan anda dan mengacu kepada Code Size dan No of Instruction Executed, berilah
kesimpulan !
4.5. Pada percobaan di atas, anda telah mengamati bagaimana mengatasi dependency yang terjadi
pada proses Pipeline menggunakan Compiler. Sekarang anda akan mengamati cara lain
menggunakan Compiler untuk mengatasi dependency pada proses Pipeline. Hilangkan tanda
centang pada opsi Show Dependencies di Options Tab layar Compiler anda (gambar 11) dan
pilihlah hanya opsi Redundant Code (dengan cara memberi centang) pada Optimize Tab di layar
Compiler kemudian buat program seperti di bawah ini
program Ex5_1
a = 1
b = a
c = 2
end
Lakukan proses Compile, amatilah set instruksi yang terbentuk lalu tuliskan hasilnya !
Sekarang, pilihlah opsi Code Dependencies (berilah tanda centang). Rubah nama program menjadi
program Ex5_2, lakukan proses Compile dan Load In Memory.
Amatilah set instruksi yang terbentuk lalu tuliskan hasilnya !

Apa perbedaan yang timbul dari hasil Compile kedua program tersebut ? Apa pengaruh perbedaan
tersebut terhadap algoritma program ? Jelaskan !

Modifikasi program anda menjadi seperti di bawah ini


program Ex5_3
for n = 1 to 50
a = 1
b = a
c = 2
next
end
Lakukan proses Compile dan Load In Memory dua versi program di atas, yang satu tanpa memilih opsi
Code Dependencies (tanpa centang), yang satu lagi dengan opsi Code Dependencies (memberi
centang) dengan nama program Ex5_4. Jalankan program Ex5_3, amati, lalu isi tabel di bawah ini
CPI (Clocks Per Instruction)
SF (Speed Factor)

Sekarang jalankan program Ex5_4, amati, lalu isi tabel di bawah ini
CPI (Clocks Per Instruction)
SF (Speed Factor)
Apa yang anda dapat dari hasil pengamatan kedua program di atas ? Berikan kesimpulan !

4.6. Sekarang kita akan mempelajari cara lain untuk mengatasi dependencies pada prose Pipeline,
yaitu dengan menggunakan metode Jump Prediction. Buat program seperti di bawah ini
program Ex6
i = 0
for p = 1 to 40
i = i + 1
if i = 10 then
i = 0
r = i
end if
next
end
Lakukan proses Compile dan Load In Memory dengan hanya memilih opsi Enable Optimizer dan opsi
Remove Redundant Code (dengan cara memberi centang). Jalankan program, amati layar Instruction
Pipeline kemudian isilah tabel di bawah ini
CPI (Clocks Per Instruction)
SF (Speed Factor)
Sekarang pilih opsi Enable Jump Prediction pada layar Instruction Pipeline (gambar 18), reset program
anda, lalu jalankan lagi. Amati layar Instruction Pipeline, lalu isilah tabel di bawah ini
CPI (Clocks Per Instruction)
SF (Speed Factor)
Pada layar Instruction Pipeline, klik tombol Show Jump Table, amati tampilan tabel Jump Prediction
yang muncul ! Perkirakan apa arti masing-masing kolom yang ada pada tabel tersebut dan berilah
masukan anda !
V
JlnstAddr
JTarget
PStat
Count
Appendix – Kode Program yang Dipakai untuk Simulator ini (digunakan pada layar Compiler
Window)
program OSQueuesDemo %Start of program
while true %Forever loop
for n = 1 to 15 %Repeat 15 times
i = 1 %Just something to do!
next %End of repeat loop
wait(3) %Suspend program for 3 secs
wend %End of forever loop
end %End of program

program WaitOnReadDemo
regvar d integer %Keep input in a register
while true
for n = 1 to 15 %This loop keeps CPU busy
i = 1 %Just something to do!
next
write("> ") %Display this prompt
read(d) %Wait for keyboard input
writeln(d) %Display input character
if d = 42 then %Test if end of program
break %End program if a * character
end if
wend
end

program ForeverLooping
while true %Do a forever loop
n = 1 %Does nothing useful but
wend %keeps the CPU busy
end
Appendix – Beberapa Set Instruksi dan Kegunaannya
Instruction Description
Data Transfer Instructions
Move data to register; move register to register
e.g.
MOV
MOV #2, R01 moves number 2 into register R01
MOV R01, R03 moves contents of register R01 into register R03
LDB Load a byte from memory to register
LDW Load a word (2 bytes) from memory to register
STB Store a byte from register to memory
STW Store a word (2 bytes) from register to memory

Push data to top of hardware stack (TOS); push register to TOS


e.g.
PSH
PSH #6 pushes number 6 on top of the stack
PSH R03 pushes the contents of register R03 on top of the stack

Pop data from top of hardware stack to register


e.g.
POP POP R05 pops contents of top of stack into register R05
Note: If you try to POP from an empty stack you will get the error
message “Stack overflow”.
Arithmetic Instructions
Add number to register; add register to register
e.g.
ADD #3, R02 adds number 3 to contents of register R02 and stores
ADD
the result in register R02.
ADD R00, R01 adds contents of register R00 to contents of register
R01 and stores the result in register R01.
SUB Subtract number from register; subtract register from register
MUL Multiply number with register; multiply register with register
DIV Divide number with register; divide register with register
Control Transfer Instructions
Jump to instruction address unconditionally e.g.
JMP
JMP 100 unconditionally jumps to address location 100
JLT Jump to instruction address if less than (after last comparison)
JGT Jump to instruction address if greater than (after last comparison)
Jump to instruction address if equal (after last comparison
instruction)
e.g.
JEQ
JEQ 200 jumps to address location 200 if the previous comparison
instruction result indicates that the two numbers are equal, i.e. the
Z status flag is set (the Z box will be checked in this case).
JNE Jump to instruction address if not equal (after last comparison)
CAL Jump to subroutine address
RET Return from subroutine
SWI Software interrupt (used to request OS help)
HLT Halt simulation
Comparison Instructions
Compare number with register; compare register with register
e.g.
CMP #5, R02 compare number 5 with the contents of register R02
CMP R01, R03 compare the contents of registers R01 and R03
Note:
CMP If R01 = R03 then the status flag Z will be set, i.e. the Z box is
checked.
If R03 > R01 then non of the status flags will be set, i.e. none of the
status flag boxes are checked.
If R01 > R03 then the status flag N will be set, i.e. the N status box is
checked.
Input Output Instructions
IN Get input data (if available) from an external IO device
OUT Output data to an external IO device
DAFTAR PUSTAKA
Stallings, William. Computer Organisation And Architectures. 8th Edition. Prentice Hall. 2010.
Stallings, William. Operating Systems. 5th Edition. Prentice Hall. 2008.

Anda mungkin juga menyukai