ARSITEKTUR ORGANISASI
KOMPUTER LANJUT
Tim Penyusun :
Laboratorium Sistem Komputer dan Robotika
BAB I
PENGENALAN TERHADAP CPU SIMULATOR, SET INSTRUKSI, REGISTER, PROGRAM STACK, RAM
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. 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:
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.
Tampilan ini menunjukkan kumpulan register pada CPU yang memiliki fungsi khusus yaitu:
Program Counter (PC): berisi alamat berikutnya dari set instruksi yang akan 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).
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 lainlain). Namun fungsi dari register tetap sama.
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
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
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.
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.
10
bentuk Integer, Boolean, atau String sesuai dengan yang diinginkan, kemudian klik tombol Update
untuk melakukan perubahan.
i)
IO Console
11
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
12
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
13
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:
14
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 !
15
BAB II
COMPILER DAN INPUT OUTPUT INTERRUPT
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 nilainilai 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
16
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
17
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.
18
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)
19
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
20
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")
21
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 !
22
BAB III
CACHE
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.
23
24
4. Prosedur percobaan:
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 = WriteBack.
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
Misses
Hits
Block
% Hits
% Misses
25
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
4.2. Bersihkan cache dengan mengklik tombol Flush pada layar Data Cache. Lalu masukkan set
instruksi berikut di bawah set instruksi terakhir
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
Hits
% Hits
Misses
% Misses
Block
26
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
Ulangi langkah di atas tiga kali, amati, lalu isi tabel berikut:
Address
Data
Hits
Hits
% Hits
Misses
% Misses
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):
32
64
128
256
28
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
29
BAB IV
PROCESS STATES DAN MEMORY MANAGEMENT
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
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.
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)
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
P1
P2
P3
Free
Alloc
Swap
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
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 CPUOS Simulator ini (gambar 1), klik tombol Show Pipeline yang ada pada Cache-Pipeline Tab
sehingga keluar tampilan layar 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 tahapantahapan 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 CPUOS 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.
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
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 CPUOS 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 !
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
%Forever loop
while true
for n = 1 to 15
i = 1
%Repeat 15 times
%Just something to do!
next
wait(3)
wend
end
%End of program
program WaitOnReadDemo
regvar d integer
while true
for n = 1 to 15
i = 1
next
write("> ")
read(d)
writeln(d)
if d = 42 then
break
end if
wend
end
program ForeverLooping
while true
n = 1
wend
end
Description
e.g.
MOV #2, R01 moves number 2 into register R01
MOV R01, R03 moves contents of register R01 into register R03
LDB
LDW
STB
STW
PSH
e.g.
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
Arithmetic Instructions
Add number to register; add register to register
e.g.
ADD
ADD #3, R02 adds number 3 to contents of register R02 and stores
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
MUL
DIV
JLT
JGT
JEQ
e.g.
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
CAL
RET
SWI
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.
OUT
DAFTAR PUSTAKA
Stallings, William. Computer Organisation And Architectures. 8th Edition. Prentice Hall. 2010.
Stallings, William. Operating Systems. 5th Edition. Prentice Hall. 2008.