12.1

 


 1. Pendahuluan [kembali]

Dalam sistem komputer modern, prosesor harus mampu bekerja cepat dan efisien dalam merespons berbagai kejadian, baik dari perangkat keras maupun perangkat lunak. Bayangkan jika prosesor harus terus-menerus mengecek (polling) setiap perangkat seperti keyboard atau mouse, tentu akan membuang banyak waktu. Solusi dari permasalahan ini adalah interrupt, yaitu mekanisme yang memungkinkan prosesor menghentikan sementara program utama untuk menangani kejadian penting, lalu melanjutkannya kembali tanpa kehilangan data.

 2. Tujuan [kembali]

  • Menjelaskan definisi dasar dan proses kerja interrupt pada prosesor Intel.
  • Membahas perbedaan antara software interrupt dan hardware interrupt, serta cara penanganannya.
  • Menguraikan secara rinci mekanisme kerja basic interrupt processing.
  • Memaparkan peran hardware interrupt dalam arsitektur sistem komputer, khususnya melalui pengendali Programmable Interrupt Controller (PIC 8259A).
  • Memberikan pemahaman praktis yang bisa diaplikasikan dalam studi maupun implementasi nyata pada sistem komputer dan embedded system.

 3. Alat dan Bahan [kembali]

a. Gerbang OR


         OR adalah suatu gerbang yang bertujuan untuk menghasilkan logika output berlogika 0. Apabila semua inputnya berlogika 0 dan sebaliknya output berlogika 1 apabila salah satu, sebagian, atau seluruhnya berlogika 1.

         Konfigurasi :
         Spesifikasi :
         Tegangan Suplai : 5 hingga 7V
         Tegangan Input : 5 hingga 7V
         Kisaran suhu pengoperasian : -55 sampai 125 derajat celcius
         Tersedia dalam paket SOIC 14-pin


b. Flip Flop (74LS73)

   IC 74LS73 adalah dual JK flip-flop tipe negatif-edge triggered dengan clear (reset) asynchronous aktif rendah. Artinya:

  • IC ini berisi 2 buah JK flip-flop.
  • Output flip-flop akan berubah hanya saat tepi turun (falling edge) dari sinyal clock.
  • Ketika J = K = 1, maka flip-flop akan toggle (berubah ke keadaan berlawanan).
  • Pin Clear dapat digunakan untuk mengatur ulang output ke 0 tanpa menunggu clock.

    Fungsi utama: digunakan untuk menyimpan 1 bit data, membentuk counter, register, pembagi frekuensi, dll.

    Flip Flop

    c. Gerbang NOT

           Gerbang NOT atau disebut rangkaian inventer (pembalik). Tugas rangkaian NOT (pembalik) ialah memberikan suatu keluaran yang berbanding terbalik dengan masukan. 





    d. Gerbang AND

           AND adalah suatu gerbang yang bertujuan untuk menghasilkan logika output berlogika 0 apabila salah satu, sebagian atau semua inputnya berlogika 0 dan sebaliknya output berlogika 1 apabila semua inputnya berlogika 1. Adapun simbol beberapa tipe gerbang AND seperti gambar :


            IC 7411 berisi tiga gerbang AND dengan tiga input dari keluarga Transistor Transistor Logic
            Konfiugurasi pin:
                - Vcc : Kaki 14
                - GND : Kaki 7
                - Input : Kaki 1, 2, 3, 4, 5, 9,10,11 dan 13
                - Output : Kaki 6, 8,  dan 12

     4. Dasar Teori [kembali]

    Interupsi pada seluruh keluarga mikroprosesor Intel mencakup dua pin perangkat keras yang digunakan untuk meminta interupsi (INTR dan NMI), serta satu pin perangkat keras yang digunakan untuk mengakui interupsi yang diminta melalui INTR.
    Selain pin-pin tersebut, mikroprosesor juga memiliki instruksi perangkat lunak untuk interupsi, yaitu INT, INTO, INT 3, dan BOUND.

    Dua bit flag, yaitu IF (interrupt flag) dan TF (trap flag), juga digunakan dalam struktur interupsi, bersama dengan instruksi khusus untuk kembali dari interupsi, yaitu IRET (atau IRETD pada 80386, 80486, atau Pentium–Pentium 4).

    Vektor Interupsi

    Vektor interupsi dan tabel vektor interupsi sangat penting untuk memahami interupsi perangkat keras dan perangkat lunak. Tabel vektor interupsi terletak pada 1024 byte pertama dalam memori, yaitu pada alamat 000000H–0003FFH. Tabel ini berisi 256 vektor interupsi, masing-masing sepanjang empat byte.

    Sebuah vektor interupsi berisi alamat (segmen dan offset) dari prosedur layanan interupsi (interrupt service routine/ISR).
    Gambar 12–2 menggambarkan tabel vektor interupsi untuk mikroprosesor tersebut.

    Lima vektor interupsi pertama identik pada semua anggota keluarga mikroprosesor Intel, mulai dari 8086 hingga Pentium.
    Vektor interupsi lainnya ada pada 80286 yang kompatibel ke atas hingga 80386, 80486, dan Pentium–Core2, namun tidak kompatibel ke bawah ke 8086 atau 8088.

    Intel menyediakan 32 vektor interupsi pertama untuk keperluan internal berbagai anggota keluarga mikroprosesornya.
    224 vektor terakhir tersedia untuk digunakan oleh pengguna.

    Setiap vektor panjangnya empat byte dalam real mode dan berisi alamat awal dari prosedur layanan interupsi.
    Dua byte pertama dari vektor berisi alamat offset, dan dua byte terakhir berisi alamat segmen.


    Instruksi Interrupt (BOUND, INTO, INT, INT 3, IRET)

    Dalam mikroprosesor terdapat lima instruksi software interrupt utama: BOUND, INTO, INT, INT 3, dan IRET.

    1. BOUND

      • Membandingkan isi register dengan dua nilai batas di memori.

      • Jika nilai register berada di luar batas, terjadi interrupt tipe 5.

      • Jika di dalam batas, tidak terjadi interrupt.

    2. INTO

      • Mengecek overflow flag (O).

      • Jika O = 1, maka memanggil interrupt vector tipe 4.

      • Jika O = 0, instruksi dilewati (tidak terjadi apa-apa).

    3. INT n

      • Memanggil interrupt service routine (ISR) sesuai nomor n.

      • Alamat ISR ditentukan dengan n × 4 (karena tiap vector panjangnya 4 byte).

      • Misalnya: INT 5 → alamat vektor dimulai dari 0014H.

      • Instruksi INT terdiri dari 2 byte (opcode + nomor interrupt).

      • INT 3 adalah pengecualian: hanya 1 byte → sering dipakai sebagai breakpoint untuk debugging.

    4. IRET (Interrupt Return)

      • Digunakan untuk kembali dari interrupt (software maupun hardware).

      • Mengambil kembali IP (Instruction Pointer), CS (Code Segment), dan Flag Register dari stack (total 6 byte).

      • Pada prosesor 80386 ke atas ada variasi:

        • IRETD (mode 32-bit).

        • IRETQ (mode 64-bit, Pentium 4 ke atas).

    Operasi Interrupt dalam Real Mode

    Dalam real mode, ketika sebuah interrupt terjadi, mikroprosesor menyimpan flag register, CS, dan IP ke stack, lalu menonaktifkan IF dan TF, dan melompat ke alamat layanan interrupt sesuai vector. Nilai IF dan TF akan dipulihkan oleh instruksi IRET saat prosedur interrupt selesai. Return address yang disimpan bisa menunjuk ke instruksi berikutnya atau ke instruksi yang menyebabkan interrupt, tergantung jenis interrupt. Pada beberapa interrupt di mode protected, juga ditambahkan error code di stack untuk mengidentifikasi penyebab interrupt.

    Operasi Interrupt dalam Protected Mode

    Dalam mode protected, interrupt memiliki fungsi yang sama seperti pada real mode, tetapi tabel vector interrupt berbeda. Alih-alih menggunakan interrupt vector table, mode protected memakai Interrupt Descriptor Table (IDT) yang berisi 256 descriptor. IDT panjangnya 256 × 8 byte = 2 KB, di mana setiap descriptor terdiri dari 8 byte. Lokasi IDT ditentukan oleh IDTR (Interrupt Descriptor Table Register).

    Setiap entry dalam IDT memuat alamat dari rutin layanan interrupt (ISR) berupa segment selector dan offset 32-bit. Selain itu, IDT juga menyimpan bit P (Present) dan DPL (Descriptor Privilege Level) yang menunjukkan tingkat hak akses dari interrupt tersebut.

    Interrupt pada real mode bisa dikonversi ke protected mode dengan menyalin alamat ISR dari vector table ke IDT, lalu mengubahnya menjadi alamat offset 32-bit dalam interrupt descriptor. Satu selector dan segment descriptor dapat ditempatkan pada Global Descriptor Table (GDT) untuk mengidentifikasi 1 MB pertama memori sebagai segmen interrupt.

    Selain perbedaan pada IDT dan descriptor, fungsi interrupt di protected mode sama seperti real mode. Proses kembali dari interrupt tetap menggunakan instruksi IRET atau IRETD. Perbedaannya, pada protected mode prosesor mengakses IDT, bukan interrupt vector table. Pada mode 64-bit (Pentium 4 dan Core2), digunakan instruksi IRETQ untuk kembali dari interrupt. Inilah salah satu alasan mengapa driver dan sistem operasi 64-bit berbeda dengan yang 32-bit.


    Bit Flag Interrupt

    Bit Interrupt Flag (IF) dan Trap Flag (TF) akan dihapus (clear) setelah isi flag register disimpan ke stack saat terjadi interrupt. Gambar 12–4 menunjukkan isi flag register serta posisi IF dan TF.

    • Jika IF = 1, maka pin INTR dapat memicu interrupt.

    • Jika IF = 0, maka pin INTR tidak dapat memicu interrupt.

    • Jika TF = 1, maka akan terjadi trap interrupt (tipe 1) setelah setiap instruksi dieksekusi. Karena itu TF sering disebut sebagai single-step.

    • Jika TF = 0, maka program berjalan normal tanpa single-step.

    Trap flag ini sangat bermanfaat untuk debugging (seperti dijelaskan pada bab 17–19 untuk prosesor 80386–Core2).

    Instruksi STI digunakan untuk mengatur (set) interrupt flag, sedangkan instruksi CLI untuk menghapusnya (clear). Tidak ada instruksi khusus untuk mengatur atau menghapus trap flag. Namun, contoh 12–1 menunjukkan prosedur interrupt yang dapat menyalakan tracing dengan mengatur bit trap flag di stack, sementara contoh 12–2 menunjukkan cara mematikannya dengan menghapus bit trap flag dari stack.


    Pada kedua contoh, flag register diambil kembali dari stack dengan menggunakan register BP, yang secara default mengakses segmen stack. Setelah flag diambil, bit TF (Trap Flag) kemudian diatur (TRON) atau dihapus (TROFF) sebelum kembali dari prosedur layanan interrupt. Instruksi IRET akan mengembalikan flag register dengan kondisi baru dari trap flag.



    Prosedur Trace: Misalkan TRON dipanggil oleh instruksi INT 40H dan TROFF dipanggil oleh instruksi INT 41H. Contoh 12–3 menunjukkan bagaimana program dapat dilacak segera setelah instruksi INT 40H dieksekusi. Prosedur layanan interrupt pada contoh tersebut merespons interrupt tipe 1 (trap interrupt). Setiap kali trap terjadi—yaitu setelah setiap instruksi dieksekusi setelah INT 40H—prosedur TRACE akan menyimpan isi semua register prosesor 32-bit ke dalam sebuah array bernama REGS. Dengan demikian, TRACE menghasilkan rekaman (trace) register untuk setiap instruksi yang dieksekusi antara INT 40H (TRON) dan INT 41H (TROFF), selama isi array REGS disimpan.

    Menyimpan Interrupt Vector ke dalam Vector Table

    Untuk memasang sebuah interrupt vector (sering disebut juga hook), assembler harus mengakses alamat memori absolut. Contoh 12–4 menunjukkan bagaimana cara menambahkan vector baru ke dalam interrupt vector table dengan assembler dan pemanggilan fungsi DOS. Pada contoh ini, vector untuk INT 40H yang menunjuk ke prosedur NEW40 dipasang pada lokasi vector real mode 100H–103H.

    Langkah pertama yang dilakukan prosedur adalah menyimpan isi vector lama, untuk berjaga-jaga jika kita perlu menghapus (uninstall) vector baru dan mengembalikan vector lama. Jika tidak ada kebutuhan uninstall, langkah ini bisa dilewati.

    Fungsi AX = 3100H untuk INT 21H (fungsi akses DOS) digunakan untuk menginstal prosedur NEW40 ke memori sampai komputer dimatikan. Nilai di register DX menunjukkan panjang perangkat lunak dalam satuan paragraf (16-byte).

    Perhatikan bahwa fungsi INT40 memiliki instruksi IRET sebelum ENDP. Hal ini wajib karena assembler tidak bisa secara otomatis mengenali apakah sebuah prosedur FAR adalah prosedur interrupt. Prosedur FAR biasa tidak membutuhkan instruksi return khusus, tetapi prosedur interrupt harus diakhiri dengan IRET. Semua interrupt harus selalu didefinisikan sebagai FAR.



     5. Percobaan [kembali]

        a) Prosedur[kembali]

        b) Rangkaian Simulasi dan Prinsip Kerja [kembali]

        c) Video Simulasi [kembali]


    6. Download File [kembali]








    Tidak ada komentar:

    Posting Komentar

                                                BAHAN PRESENTASI UNTUK MATA KULIAH  ELEKTRONIKA 2024   Nama : Muhammad Fadhil Dwi Kesuma NIM : 2...