Anda di halaman 1dari 9

Tutorial 1:

Pengenalan CPU-OS SIMULATOR


Pendahuluan
Tujuan
Pada akhir latihan terbimbing ini, mahasiswa diharapkan mampu:
✓ Menggunakan CPU simulator untuk membuat instruksi
dasar CPU
✓ Menggunakan simulator untuk mengeksekusi intruksi dasar
CPU
✓ Membuat instruksi untuk memindahkan data ke register,
membandingkan nilai di register, melakukan push data ke
stack, melakukan pop data dari stack, lompat ke lamat
lokasi, menambah nilai ke register.
✓ Menjelaskan fungsi dari special CPU register seperti PC,
SR and SP.

Dasar Teori
Model pemrograman arsitektur komputer mendefinisikan
komponen arsitektur tingkat rendah, meliputi:

• Set instruksi prosesor


• Register
• Cara menangani instruksi dan data
• Interrupt and exception
Ini juga mendefinisikan interaksi antara masing-masing
komponen di atas. Model pemrograman tingkat rendah
inilah yang memungkinkan penghitungan terprogram.

1
Detail Simulator
Bagian ini mencakup beberapa informasi dasar tentang simulator,
yang memungkinkan siswa untuk menggunakan simulator. Tutor akan
siap membantu siapa saja yang mengalami kesulitan dalam
menggunakan simulator.
Simulator untuk lab ini adalah aplikasi yang berjalan di PC dan terdiri
dari satu jendela.

Gambar 1 – Jendela Utama Simulator

Jendela utama terdiri dari beberapa tampilan, yang mewakili bagian fungsional
berbeda dari prosesor yang disimulasikan, antara lain:
Instruction memory
Special registers
Register set
Hardware stack

2
Instruction memory
Tampilan ini berisi instruksi program.
Instruksi ditampilkan sebagai urutan
mnemonik instruksi level rendah (format
level assembler) dan bukan sebagai
kode biner. Ini dilakukan untuk
kejelasan dan membuat kode lebih
mudah dibaca.

Setiap instruksi memiliki dua alamat:


alamat fisik (PAdd) dan alamat logis
(LAdd). Tampilan ini juga menampilkan
alamat dasar (Base) terhadap setiap
instruksi. Urutan instruksi yang
termasuk dalam program yang sama
akan memiliki alamat dasar yang sama.

Gambar 2 – Tampilan Instruction memory

Special registers
Tampilan ini menyajikan sekumpulan register, yang
memiliki fungsi spesialis yang telah ditentukan
sebelumnya:

PC: Program Counter berisi alamat dari instruksi


selanjutnya yang akan dieksekusi.
IR: Instruction Register berisi instruksi yang sedang
dijalankan.
SR: Status Register berisi informasi yang berkaitan
dengan hasil dari instruksi yang terakhir dieksekusi.
SP: Stack Pointer register menunjuk ke nilai yang
dipertahankan di bagian atas tumpukan perangkat keras
(lihat di bawah).
BR: Base Register berisi alamat basis saat ini.
Gambar 3 – Tampilan
MAR: Memory Address Register berisi alamat memori
Special registers yang sedang diakses.
Status bits: OV: Overflow; Z: Zero; N: Negative

3
Register set
Tampilan set register menunjukkan isi dari
semua register umum, yang digunakan untuk
mempertahankan nilai sementara saat instruksi
program dijalankan.

Arsitektur ini mendukung dari 8 hingga 64


register. Register ini sering digunakan untuk
menyimpan nilai variabel program seperti
yang didefinisikan dalam bahasa tingkat
tinggi.

Tidak semua arsitektur memiliki register


sebanyak ini. Beberapa memiliki lebih banyak
(misalnya 128 register) dan beberapa lainnya
lebih sedikit (misalnya 8 register). Semuanya
kasus, register ini melayani tujuan yang sama.

Tampilan ini menampilkan setiap nama


register (Reg), nilai saat ini (Value) dan
beberapa nilai tambahan, yang dicadangkan
untuk debugging program. Ini juga dapat
digunakan untuk mengatur ulang nilai register
individu secara manual yang seringkali
berguna untuk debugging lanjutan. Untuk
mengubah konten register secara manual,
pertama pilih register kemudian masukkan nilai
baru di kotak teks dan klik tombol CHANGE.
Gambar 4 - Register set

Hardware stack

Tumpukan perangkat keras mempertahankan nilai


sementara saat instruksi dijalankan. Tumpukan
adalah struktur data LIFO (terakhir masuk pertama
keluar). Seringkali digunakan untuk penanganan
interupsi dan panggilan sub-rutin yang efisien.

Petunjuk PSH (push) dan POP digunakan untuk


menyimpan nilai di atas tumpukan dan nilai pop
masing-masing dari atas tumpukan.

Gambar 5 – Tampilan Hardware stack

4
Latihan- Investigasi dan Eksplorasi
Para siswa diharapkan untuk melakukan penyelidikan lebih lanjut secara
mandiri untuk membentuk pemahaman yang lebih baik tentang materi
yang dipelajari.
Pertama kita perlu menempatkan beberapa instruksi di Tampilan
Instruction Memory (yaitu mewakili RAM di mesin nyata) sebelum
menjalankan instruksi apa pun. Bagaimana instruksi ditempatkan dalam
Tampilan Instruction Memory?
Ikuti langkah-langkah berikut:

Gambar 6 – Tampilan Program Instructions

Dalam Tampilan Program Instructions, pertama-tama masukkan


Program Name, lalu masukkan Base Address (bisa berupa nomor
apa saja, tetapi untuk latihan ini gunakan 100). Klik pada tombol ADD.
Nama program baru akan dimasukkan dalam Tampilan Program List
di bawah ini. Gunakan tombol SAVE… / LOAD ... untuk menyimpan
instruksi dalam file dan memuat instruksi dari file.

Use Gunakan tombol REMOVE PROG untuk


menghapus program yang dipilih dari daftar;
gunakan tombol CLEAR ALL untuk
menghapus semua program dari daftar.
Perhatikan bahwa ketika program dihapus,
instruksinya juga dihapus dari Tampilan
Instruction Memory.

Gambar 7 - Program List

5
CATATAN PENTING:
Sebelum Anda melanjutkan dengan latihan berikut, pertama-tama
klik tombol SHOW PIPELINE… di jendela CPU Simulator dan
centang kotak bertuliskan No instruction pipeline. Kemudian tutup
jendela.

Anda sekarang siap untuk memasukkan instruksi ke dalam CPU ini.


Anda melakukan ini dengan mengklik tombol ADD NEW… Ini akan
menampilkan jendela Instruksi: CPU0. Gunakan jendela ini untuk
memasukkan instruksi. Lampiran mencantumkan beberapa petunjuk
yang dipahami simulator ini dan memberikan beberapa contoh pilihan.
Sekarang, coba aktivitas berikut:
1. Buat instruksi, yang memindahkan nomor 5 ke register R00.
2. Jalankan instruksi di atas (cukup klik dua kali di atasnya di
Tampilan Instruction Memory).
3. Buat instruksi, yang memindahkan nomor 8 ke register R01.
4. Jalankan.
5. Amati konten R00 dan R01 di Tampilan Register Set.
6. Buat instruksi, yang menambahkan konten R00 dan R01.
7. Jalankan.
8. Amati di mana hasilnya diletakkan.
9. Buat instruksi, yang mendorong hasil di atas ke bagian atas
tumpukan perangkat keras, lalu jalankan.
10. Buat instruksi untuk mendorong nomor -2 di atas tumpukan
(stack) dan jalankan.
11. Amati nilai dalam daftar SP (Tampilan Special Registers).
12. Buat instruksi untuk membandingkan nilai di register R00 dan
R01.
13. Jalankan.
14. Amati nilainya di SR register.
15. Amati status bit OV / Z / N dari status register.
16. Buat instruksi untuk melompat tanpa syarat ke instruksi pertama.
17. Jalankan.
18. Amati nilainya di register PC. Apa maksudnya?
19.Amati nilai di kolom PAdd dan LAdd. Apa yang ditunjukkan oleh nilai-
nilai ini? Apakah mereka berbeda?

6
20. Apa perbedaan antara nilai LAdd instruksi pertama dan nilai
LAdd instruksi kedua? Apa yang ditunjukkan oleh nilai ini?
21. Buat instruksi untuk memunculkan nilai di atas tumpukan perangkat
keras ke register R02.
22. Jalankan.
23. Amati nilainya di SP register.
24. Buat instruksi untuk memunculkan nilai di atas tumpukan perangkat
keras ke register R03.
25. Jalankan.
26. Amati nilainya di SP register.
27. Jalankan instruksi terakhir lagi. Apa yang terjadi? Jelaskan!
28. Buat instruksi perbandingan, yang membandingkan nilai-nilai dalam
register R04 dan R05.
29. Masukkan dua nilai yang sama secara manual di register R04 dan
R05.
30. Jalankan instruksi perbandingan pada langkah 28 di atas.
31. Manakah dari status flags OV / Z / N yang disetel? Mengapa?
32. Masukkan nilai secara manual dalam register R05 lebih besar dari
pada register R04.
33. Jalankan instruksi perbandingan pada langkah 28 di atas.
34. Manakah dari status flags OV / Z / N yang disetel? Mengapa?
35. Masukkan nilai secara manual di register R04 yang lebih besar dari
pada register R05.
36. Jalankan instruksi perbandingan pada langkah 28 di atas..
37. Manakah dari status flags OV / Z / N yang disetel? Mengapa?
38. Buat instruksi, yang akan melompat ke instruksi pertama jika nilai
pada register R04 dan R05 sama.
39. Uji instruksi ini dengan terlebih dahulu meletakkan nilai yang sesuai
di register R04 dan R05 dan kemudian jalankan instruksi
pembanding terlebih dahulu dan kemudian jalankan instruksi jump.
40. Simpan instruksi dalam Tampilan Instruction Memory dalam
sebuah file dengan mengklik tombol SAVE….
Latihan di atas dimaksudkan untuk membantu Anda memahami
beberapa instruksi CPU dasar, yang dapat ditemukan di sebagian
besar arsitektur CPU modern.

7
Appendix - Simulator Instruction Sub-set
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
POP e.g.
POP R05 pops contents of top of stack into register R05
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
Jump to instruction address unconditionally
JMP e.g.
JMP 100 unconditionally jumps to address location 100

8
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)
e.g.
JEQ
JEQ 200 jumps to address location 200 if the previous comparison
instruction result indicates that the two numbers are equal.
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 instruction
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
CMP
Note:
If R01 = R03 then the status flag Z will be set
If R03 > R01 then non of the status flags will be set
If R01 > R03 then the status flag N will be set

Input, output instructions


IN Get input data (if available) from an external IO device
OUT Output data to an external IO device

Anda mungkin juga menyukai