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 lainlain). 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 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
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 = 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
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
Hits
% Hits
Misses
% Misses
Block
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
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
Hasil
Berhasil (ya
Gagal (ya
atau tidak)
atau tidak)
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
P1
4
P2
5
P3
3
Free
Alloc
Swap
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 CPUOS 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 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.
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 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 !
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 %Forever loop
while true for n = 1 to 15 i = 1
%Repeat 15 times %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 i = 1
%This loop keeps CPU busy %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 n = 1 wend end
%Do a forever loop %Does nothing useful but %keeps the CPU busy
Appendix – Beberapa Set Instruksi dan Kegunaannya Instruction
Description
Data Transfer Instructions Move data to register; move register to register MOV
e.g. 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
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
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
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
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 JMP
Jump to instruction address unconditionally e.g. 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)
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
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.