Anda di halaman 1dari 20

Latar Belakang Program

• Hardwired system (sistem yang instruksinya


dikendalikan oleh kombinasi hardware) 
tidak fleksibel
Kabel-kabel, jumper dsb  Rumit
• Dibuatlah general purpose hardware yang bisa
menerima instruksi.
• Jenis instruksi menentukan operasi (tindakan)
yang akan dijalankan
Apa Itu Program
• Serangkaian langkah-langkah (a sequence of steps)
• Pada tiap langkah, dilakukan sebuah operasi logika
atau aritmetik yang atomik
• Konversi dari bahasa pemrograman aras tinggi ke
operasi atomik melalui kompiler/interpreter
• Untuk tiap-tiap operasi, disediakan sebuah kode
instruksi yang unik.
• Satu kode instruksi mengandung satu set control
signal yang bermakna bagi CPU
• Satu operasi atomik juga disebut sebaris instruksi
Apa Itu Program

Operasi Atomik
Operasi Atomik
Operasi Atomik Disebut juga
Program dari Operasi Atomik baris-baris
bahasa instruksi
Operasi Atomik
pemrograman
aras tinggi
.
. Kode Instruksi
.
. Konfigurasi
control signal

Operasi Atomik
Apa Itu Program
• Control signal pada CPU lebih dari sekedar
read dan write seperti pada I/O
• Control signal digunakan untuk menentukan
tindakan yang akan diambil oleh CPU
(eksekusi)
Yang Terlibat Saat Eksekusi Program
• Control Unit di CPU  mengatur aliran
program (membaca instruksi, mengartikan
instruksi, menentukan alamat baris instruksi
berikutnya yang akan dipanggil)
• Memory  menyimpan baris-baris program
yang akan dieksekusi dan hasil outputnya
• Arithmetic and Logic Unit di CPU  untuk
melakukan operasi aritmetik dan logika jika
diperintahkan oleh program
Seperti Apa Format Instruksi?
Gambaran umum format penyimpanan program di memory:

Memory
Alamat Data Isi ruang data di memory bisa berupa
data biasa, alamat, atau instruksi
00000000 010010010010 n-bit Alamat
Alamat Data Jika berupa instruksi, maka format
00000001 110100101101 m-bit Instruksi
:dasar
x -yang
bitdisepakati adalah:
kode Instruksi
0000
00000010 1003
111010100101 110100101101
y - bit data
0001 3004
00000011 - n m
0002 5070
Data: bisa data
Dibagi menjadi:
0003
…. 4000….
angka atau (kode
n-bit OPCODE alamatoperasi), dan
11111111
0000 1 003
000010010010 m-bit OPERAND (yang dikenai operasi)
4-bit alamat, 1-bit kodeOperand bisa berupa angka
instruksi, biner
3-bit (data)
data
biasa, atau sebuah alamat
Register pada Control Unit
• PC: Program Counter
Berisi alamat memory untuk mengambil
instruksi selanjutnya
• IR: Instruction Register
Menampung instruksi yang diambil dari
memory
• AC: Accumulator
Penampung sementara untuk data hasil
eksekusi instruksi
Menjalankan Program
• Tiap baris instruksi akan melewati siklus
berikut:
- Fetch (pembacaan instruksi)
- Execute (menjalankan instruksi)
Fetch Cycle
• Program Counter (PC) berisi alamat instruksi yang akan
dibaca
• Processor membaca instruksi dari alamat memory yang
ditunjuk PC
• Instruksi di-load ke Instruction Register (IR)
• Processor menterjemahkan isi instruksi dan
memerintahkan aksi yang sesuai dg isi instruksi
• Increment PC (PC = PC + 1)
Execute Cycle
Sesuai dengan hasil penerjemahan instruksi, CPU akan
melakukan tindakan:
• Transfer data antara CPU dengan main memory
• Transfer data antara CPU dengan modul I/O
• Data processing (operasi aritmetik / logika terhadap
data oleh CPU)
• Control, misal:
– Perubahan urutan program (merubah isi PC) dg instruksi
JUMP
– Menghentikan program di tengah jalan dg insruksi HALT
• Kombinasi dari hal-hal diatas
Menjalankan Program - Contoh
Sebelum melihat ilustrasi bagaimana sebuah program
dijalankan, penting untuk mengerti dahulu contoh eksekusi dari
kode operasi instruksi berikut:
• READ: membaca data dari sebuah alamat memory, kemudian
menyimpannya di register AC.
Operand: alamat asal data.
• ADD: membaca data dari sebuah alamat memory, kemudian
menjumlahkannya ke register AC.
Operand: alamat asal data.
• STORE: membaca data dari AC, kemudian mmenyimpannya
ke sebuah alamat memory.
Operand: alamat tujuan data.
Menjalankan Program - Contoh
1
PC: Program Counter
AC: Accumulator
IR: Instruction Register

Instruction:
2
1-digit Opcode and
3-digit Operand

Example here
for Instruction:
3
1 is Read
5 is Add
2 is Store
Tentang Interrupt
• Suatu instruksi dalam program kadang
hasilnya tidak sesuai yang diinginkan
• Ada hambatan yang berasal dari:
- Kekeliruan matematis (overflow, division by zero)
- Proses I/O (menulis, membaca data)
- Kegagalan hardware
- Timer CPU  Penjadwalan (Setelah TTS)
Tentang Interrupt
• Kalau hambatan muncul seketika, bisa
langsung dihandle lewat program itu sendiri,
misal dengan menyiapkan percabangan
berdasarkan kondisi
• Bagaimana juga kalau eksekusi sebuah
instruksi itu butuh waktu? Apakah harus
menunggu hasilnya, error atau tidak?
• Dibuatlah mekanisme interupsi untuk
meminta perhatian CPU (sudah dibahas pada
beberapa minggu yang lalu saat I/O)
Bagaimana CPU Menangani Interrupt
• CPU membiarkan sebuah instruksi dieksekusi
• CPU melanjutkan membaca instruksi berikutnya
• TETAPI sebelum membaca instruksi berikutnya, CPU memeriksa,
adakah sinyal interrupt yang masuk, kemudian melakukan handling
Mekanisme Interrupt Handler
• Sebelum membaca instruksi berikutnya, CPU
memeriksa, ada sinyal interrupt atau tidak
• Jika tidak ada interrupt, baca instruksi berikutnya
• Jika ada interrupt, cek jenis interrupt kemudian
arahkan PC ke alamat instruksi Interrupt Handler
yang sesuai, dan hentikan program yang sedang
berjalan untuk sementara.
• Jika handling sudah selesai, arahkan kembali PC ke
alamat instruksi berikutnya yang seharusnya
dibaca.
Keuntungan Menggunakan Interrupt
Jika Interrupt Yang Muncul Mulai Banyak?
• Disable interrupts
– Processor will ignore further interrupts whilst processing one
interrupt
– Interrupts remain pending and are checked after first interrupt
has been processed
– Interrupts handled in sequence as they occur
• Define priorities
– Low priority interrupts can be interrupted by higher priority
interrupts
– When higher priority interrupt has been processed, processor
returns to previous interrupt
Bisakah Membuat Handler Sendiri?
• Jika ada interrupt, cek jenis interrupt kemudian
arahkan PC ke alamat instruksi Interrupt Handler
yang sesuai, dan hentikan program yang sedang
berjalan untuk sementara.
• Apakah memungkinkan untuk membuat handler
sendiri di program yang kita buat?

Anda mungkin juga menyukai