ARSITEKTUR DAN ORGANISASI KOMPUTER Aditya Wikan Mahastama mahas@ukdw.ac.id 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 Program dari bahasa pemrograman aras tinggi Operasi Atomik Operasi Atomik Operasi Atomik Operasi Atomik.... Disebut juga baris-baris instruksi 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 bit disepakati kode Instruksi adalah: 0000 00000010 111010100101 1003 110100101101 y - bit data 0001 3004 0002 00000011 5070 - n m Data: bisa data 0003 4000 Dibagi menjadi:.. angka n-bit OPCODE atau (kode alamat operasi), dan 11111111 000010010010 0000 1 003 m-bit OPERAND (yang dikenai operasi) 4-bit alamat, 1-bit kode Operand instruksi, bisa berupa angka 3-bit biner data (data) biasa, atau sebuah alamat
PC: Program Counter Berisi alamat memory untuk mengambil instruksi selanjutnya IR: Instruction Register Register pada Control Unit 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 2 3 PC: Program Counter AC: Accumulator IR: Instruction Register Instruction: 1-digit Opcode and 3-digit Operand 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