Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Interupsi dan Chip 8259
2
Apakah interupsi itu? Interupsi adalah mekanisme yang digunakan perangkat eksternal untuk mendapatkan layanan dari CPU Perangkat eksternal membangkitkan sinyal interupsi untuk menarik perhatian CPU sehingga CPU menghentikan aktivitas yang sedang dilakukan untuk sementara waktu dan beralih ke penanganan interupsi Namun tidak semua interupsi berasal dari perangkat eksternal: perangkat lunak pun dapat membangkitkan interupsi
3
Interupsi pada keluarga Intel
Total terdapat 256 interupsi: INT 00, INT 01, …,INT FFh (atau disebut juga sebagai interrupt type) Ke-256 jenis interupsi disimpan di dalam sebuah tabel: interrupt vector tabel (IVT) IVT terletak pada 1024 byte pertama memori: alamat 00000h – 003FFh Masing-masing entri di dalam IVT berisi vektor atau alamat dari interrupt service routine (ISR), yaitu pasangan CS dan IP dalam ukuran 4 byte
4
Interrupt vector table
Intel telah memesan 32 jenis interupsi pertama (INT 00 – INT 1Fh), sisanya bebas digunakan 2 byte pertama pada masing-masing entri berisi alamat offset (IP) 2 byte selanjutnya berisi alamat segment (CS)
5
Beberapa interupsi pada keluraga Intel
6
Jenis interupsi Interupsi dibedakan berdasarkan sumber pembangkit interupsi Interupsi perangkat keras (hardware interrupt): berasal dari perangkat eksternal Interupsi perangkat lunak (sotfware interrupt): berasal dari perangkat lunak Kedua jenis interupsi berada dalam 256 jenis interupsi yang tersedia: sebagian untuk interupsi perangkat keras, sebagian untuk interupsi perangkat lunak
7
Interupsi perangkat keras
Mikroprosesor 80x86 menyediakan 3 pin untuk penanganan interupsi: INTR (interrupt request), NMI (nonmaskable interrupt), dan INTA (interrupt acknowledge) INTR adalah pin input sinyal interupsi dari perangkat eksternal yang dapat diabaikan (masked) atau tidak (unmasked): melalui instruksi CLI dan STI NMI tidak dapat diabaikan (nonmaskable): input NMI otomatis membangkitkan interupsi jenis 2, digunakan untuk penanganan kegagalan sistem
8
Interupsi perangkat keras
INTA digunakan sebagai pin output untuk memberitahukan kepada perangkat keras bahwa mikroprosesor tanggap terhadap interupsi yang dibangkitkan Selanjutnya perangkat keras harus menyediakan jenis interupsi pada pin D0-D7 Untuk itu input jenis interupsi harus melalui proses “dekoding” terlebih dahulu salah satunya dengan chip 8259
9
Interupsi perangkat lunak
Interupsi perangkat lunak dibangkitkan dari dalam aplikasi dengan instruksi INT xx Contoh, INT 21h (DOS) dan INT 10h (display) Selain dengan instruksi INT xx, interupsi perangkat lunak dapat dibangkitkan oleh instruksi lain, yaitu BOUND, INTO, INT 3 BOUND dan INTO adalah instruksi kondisional, artinya tidak selalu membangkitkan interupsi INT 0, INT 1, INT 3, dan INT 4 adalah predefined interrupt yang masuk dalam kategori interupsi perangkat lunak 0: divide error, 1: single step, 3: breakpoint, 4: signed number overflow
10
Apa beda interupsi dan CALL FAR?
Alamat yang dituju pada interupsi telah ditentukan dalam IVT: instruksi CALL FAR dapat menuju sembarang alamat dalam address range Interupsi dapat dibangkitkan setiap saat oleh perangkat keras: CALL FAR adalah pemanggilan prosedur yang telah direncanakan Interupsi perangkat keras dapat diabaikan: CALL FAR tidak Sebelum rutin interupsi dilakukan, flag register disimpan terlebih dahulu: CALL FAR tidak, hanya CS:IP saja Diakhir rutin interupsi digunakan instruksi IRET: CALL FAR menggunakan RETF, flag register yang disimpan dalam stack tidak diambil kembali Interupsi perangkat lunak = dengan CALL FAR: terencana
11
Interupsi dan flag register
Ada 2 flag yang mempengaruhi interupsi: IF (interrupt flag) dan TF (trap flag) OF (overflow flag) digunakan dalam instruksi untuk mendeteksi adanya overflow (INTO) IF digunakan untuk mengabaikan atau memperhatikan interupsi eksternal (perangkat keras) NMI dan instruksi INT xx (interupsi perangkat lunak) tidak terpengaruh oleh IF: selalu diperhatikan oleh CPU IF dan TF akan di-clear saat akan masuk rutin interupsi dan akan dikembalikan kondisinya sekembalinya dari rutin interupsi
12
Menangani interupsi Pada setiap interupsi, baik sofware maupun hardware, prosesor melakukan langkah-langkah sbb.: PUSHF: menyimpan FR ke dalam stack IF dan TF di-nol-kan (cleared) PUSH CS PUSH IP Mengambil vektor interupsi dari IVT: nomor/jenis interupsi dikalikan 4 untuk mendapatkan alamat fisik yang menyimpan vektor interupsi nilai CS dan IP dari vektor interupsi disalin ke register CS dan IP Rutin interupsi dijalankan: karena CS dan IP sudah merujuk pada lokasi rutin interupsi Setelah selesai menjalankan rutin interupsi: IRET POP IP, POP CS, POPF
13
Fungsi-fungsi INT 00 – 04h INT 00h (divide error): termasuk dalam kategori conditional atau exception interrupt, otomatis akan dibangkitkan CPU jika ada suatu kondisi yang tidak bisa ditangani CPU, contoh membagi dengan nol atau jika sisa bagi dalam operasi pembagian terlalu besar (tidak dapat dimuat dalam 1 register)
14
Fungsi-fungsi INT 00 – 04h INT 01h (single step): digunakan pada modus single stepping atau trace di mana memungkinkan untuk memeriksa isi memori atau register, cara kerjanya adalah dengan men-set TF menjadi 1 sehingga setiap selesai mengeksekusi 1 instruksi CPU akan menjalankan INT 01h
15
Fungsi-fungsi INT 00 – 04h INT 02h (NMI): rutin layanan nonmaskable interrupt Interupsi ini dibangkitkan oleh perangkat eksternal dengan mengaktifkan pin NMI ke 5 V
16
Fungsi-fungsi INT 00 – 04h INT 03h (breakpoint): biasanya digunakan bersama-sama dengan INT 01h untuk melakukan debugging perangkat lunak, INT 03h memungkinkan untuk memeriksa isi memori dan register setelah serangkaian instruksi dieksekusi CPU INT 01h akan dijalankan setelah CPU mengeksekusi 1 buah instruksi INT 03h akan dijalankan setelah CPU mengeksekusi serangkaian instruksi
17
Fungsi-fungsi INT 00 – 04h INT 04h (signed number overflow): interupsi ini dibangkitkan dengan instruksi INTO (interrupt on overflow), instruksi INTO diletakkan setelah instruksi IMUL atau ADD sehingga jika OF = 1, maka CPU akan memanggil INT 04h, jika tidak maka INTO akan diabaikan (seolah-olah seperti instruksi NOP)
18
Merancang interupsi perangkat eksternal
Pin interupsi pada mikroprosesor hanya tersedia 2 buah: INTR dan NMI NMI adalah interupsi khusus yang umumnya digunakan untuk menangani kondisi kegagalan Kenyataan, perangkat eksternal yang membutuhkan layanan CPU lebih dari satu Oleh karena itu diperlukan cara untuk memperluas (expanding) interupsi sehingga beberapa perangkat eksternal dapat dilayani oleh CPU melalui sebuah pin INTR Ingat, perangkat eksternal yang ingin dilayani CPU harus menyediakan jenis interupsi pada pin D0–D7
19
Mekanisme perluasan interupsi
Menggunakan chip three state buffer (74ALS244) Teknik daisy chain menggunakan 74ALS32 Menggunakan programmable interrupt controller 8259A
20
Menggunakan 74ALS244 Interupsi tipe 80h
21
Menggunakan 74ALS244
22
Daisy chain dengan 74ALS32 Cukup membutuhkan satu vektor interupsi: tipe interupsi yang sama, tetapi dapat dibedakan reaksinya (prioritasnya) melalui rutin penanganan interupsi (ISR) Kelemahan: membutuhkan waktu lebih lama dengan adanya logik dalam ISR untuk menentukan interupsi dari perangkat keras mana yang harus ditangani Kelebihan: lebih baik daripada menggunakan 74ALS244
23
Daisy chain dengan 74ALS32 Rutin untuk menentukan sumber interupsi
24
Menggunakan 8259 PIC Tugas, silakan lihat di eLisa
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.