1.Pendahuluan [Kembali]
Bab ini membahas tentang interrupt pada mikroprosesor Intel, baik yang berasal dari perangkat keras (hardware) maupun perangkat lunak (software). Interrupt memungkinkan sebuah program yang sedang berjalan dihentikan sementara untuk menangani suatu peristiwa penting, kemudian kembali melanjutkan eksekusi program semula. Mekanisme ini sangat penting karena memungkinkan sistem komputer merespons kondisi eksternal (misalnya dari perangkat I/O) secara cepat dan efisien. Tanpa interrupt, prosesor harus terus-menerus memeriksa perangkat (polling), yang membuat pemrosesan menjadi tidak efektif.
2.Tujuan [Kembali]
- Menjelaskan konsep dasar interrupt serta perbedaan antara interrupt perangkat keras (hardware interrupt) dan perangkat lunak (software interrupt).
Memahami cara kerja interrupt vector dan interrupt service routine (ISR).
Mengetahui urutan langkah yang dilakukan mikroprosesor ketika sebuah interrupt terjadi.
Menggunakan instruksi terkait interrupt pada pemrograman mikroprosesor (misalnya INT, IRET).
Mengidentifikasi berbagai jenis interrupt pada keluarga mikroprosesor Intel (8086 hingga Core2 dengan 64-bit extensions).
Memahami cara kerja interrupt vector dan interrupt service routine (ISR).
Mengetahui urutan langkah yang dilakukan mikroprosesor ketika sebuah interrupt terjadi.
Menggunakan instruksi terkait interrupt pada pemrograman mikroprosesor (misalnya INT, IRET).
Mengidentifikasi berbagai jenis interrupt pada keluarga mikroprosesor Intel (8086 hingga Core2 dengan 64-bit extensions).
1. Interupsi adalah panggilan
yang dipicu oleh perangkat keras (hardware) atau perangkat lunak (software)
yang menghentikan program yang sedang berjalan kapan saja dan memanggil sebuah
prosedur. Prosedur ini dijalankan oleh interrupt handler atau interrupt
service procedure.
2.
Interupsi berguna ketika sebuah perangkat I/O hanya perlu dilayani sesekali
dengan laju transfer data yang rendah.
3.
Mikroprosesor memiliki lima instruksi yang berkaitan dengan interupsi: BOUND,
INT, INT 3, INTO, dan IRET.
·
INT dan INT 3
→ Memanggil prosedur dengan alamat yang disimpan dalam vektor interupsi.
·
BOUND → Interupsi bersyarat
yang menggunakan vektor interupsi tipe 5.
·
INTO → Interupsi bersyarat yang
hanya terjadi jika overflow flag aktif.
·
IRET, IRETD, atau IRETQ →
Digunakan untuk kembali dari prosedur layanan interupsi.
4.
Mikroprosesor memiliki tiga pin yang berhubungan dengan struktur interupsi
perangkat keras: INTR, NMI, dan INTA.
·
INTR dan NMI →
Input yang digunakan untuk meminta interupsi.
·
INTA → Output yang digunakan
untuk mengakui permintaan interupsi melalui INTR.
5.
Pada mode riil, interupsi direferensikan melalui tabel
vektor yang menempati lokasi memori 0000H–03FFH. Setiap vektor
interupsi berukuran 4 byte, berisi offset dan alamat segmen dari prosedur
layanan interupsi.
Pada mode terproteksi, interupsi direferensikan melalui Interrupt
Descriptor Table (IDT) yang berisi 256 deskriptor interupsi. Setiap
deskriptor berisi segment selector dan alamat offset 32-bit.
6.
Dua bit flag digunakan dalam struktur interupsi mikroprosesor:
·
TF (Trap Flag) → Menyebabkan
interupsi terjadi setelah eksekusi tiap instruksi, selama TF aktif.
·
IF (Interrupt Enable Flag) →
Mengaktifkan input INTR.
7.
32 lokasi vektor interupsi pertama dicadangkan untuk Intel,
banyak di antaranya sudah ditentukan dalam mikroprosesor. 224 vektor
sisanya dapat digunakan oleh pengguna untuk fungsi apa pun yang
diinginkan.
8.
Ketika interupsi terdeteksi, langkah-langkah berikut terjadi:
1.
Register FLAGS disimpan ke dalam
stack.
2.
Bit IF dan TF
dihapus.
3.
Register IP dan CS
disimpan ke dalam stack.
4.
Vektor interupsi diambil dari tabel vektor, lalu
subrutin layanan interupsi diakses melalui alamat vektor tersebut.
9. Tracing atau single-stepping
dilakukan dengan mengaktifkan bit TF. Hal ini menyebabkan interupsi terjadi
setelah eksekusi setiap instruksi, yang berguna untuk debugging.
10.
Non-Maskable Interrupt (NMI) memanggil prosedur yang alamatnya
disimpan pada vektor interupsi tipe 2. Input ini dipicu oleh tepi positif (positive
edge-triggered).
11.
Pin INTR tidak memiliki dekode internal, berbeda dengan pin
NMI. Sebagai gantinya, INTA digunakan untuk menempatkan nomor
tipe vektor interupsi pada jalur data (D0–D7) selama pulsa INTA.
12.
Metode penerapan nomor tipe vektor interupsi ke bus data selama INTA
bervariasi.
·
Salah satunya menggunakan resistor untuk
menempatkan nomor tipe interupsi FFH ke bus data.
·
Metode lain menggunakan three-state buffer
untuk memberikan nomor tipe vektor apa pun.
13.
8259A Programmable Interrupt Controller (PIC) menambahkan
minimal 8 input interupsi ke mikroprosesor. Jika diperlukan lebih banyak
interupsi, chip ini dapat dikaskadekan hingga menyediakan 64 input interupsi.
14.
Pemrograman 8259A dilakukan dalam dua tahap:
1.
Mengirim ICW (Initialization Command Words).
2.
Mengirim OCW (Operation Command Words).
15. 8259A
memiliki tiga register status:
·
IMR (Interrupt Mask Register) →
Menyaring interupsi tertentu.
·
ISR (In-Service Register) →
Menunjukkan interupsi yang sedang dilayani.
·
IRR (Interrupt Request Register)
→ Menyimpan interupsi yang masuk dan menunggu untuk diproses.
16.
Real-Time Clock (RTC) digunakan untuk menjaga waktu nyata.
Pada umumnya, data waktu disimpan dalam bentuk biner atau BCD di beberapa
lokasi memori.
Tidak ada komentar:
Posting Komentar