ARSITEKTUR DAN ORGANISASI KOMPUTER
Aditya Wikan Mahastama
[email protected]
Program dan Interrupt
6 UNIV KRISTEN DUTA WACANA – GENAP 1213
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
Program dari bahasa pemrograman aras tinggi
Operasi Atomik Operasi Atomik
. . . . Operasi Atomik
Disebut juga baris-baris instruksi
Kode Instruksi
Konfigurasi control signal
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: Isi ruang data di memory bisa berupa data biasa, alamat, atau instruksi 00000000 010010010010 n-bit Alamat Alamat Data Jika berupa instruksi, maka format m-bit Instruksi 00000001 110100101101 disepakati adalah: :dasar x -yang bit kode Instruksi 0000 1003 00000010 111010100101 110100101101 y - bit data 0001 3004 n m 00000011 0002 5070 Data: bisa data Dibagi menjadi: 0003 4000 …. …. angka atau (kode alamat n-bit OPCODE operasi), dan 11111111 000010010010 m-bit OPERAND (yang dikenai operasi) 0000 1 003 Operand bisa berupa angka biner (data) 4-bit alamat, 1-bit kode instruksi, 3-bit data biasa, atau sebuah alamat
Alamat Memory
Data
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
2
Instruction: 1-digit Opcode and 3-digit Operand
3
Example here for Instruction: 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?
Demikian Materi Kali Ini Topik Berikutnya: Dukungan Sistem Operasi