Untuk apa nomor interupsi irq digunakan. Interupsi sistem memuat prosesor

Konflik adalah situasi di mana beberapa objek secara bersamaan mencoba mengakses sumber daya yang ditujukan hanya untuk salah satunya. Konflik interupsi terjadi ketika beberapa perangkat menggunakan jalur interupsi yang sama untuk mengirim sinyal permintaan dan tidak ada mekanisme untuk menangani permintaan bersamaan. Jika driver, yang menerima kontrol, tidak berfungsi dengan perangkat yang mengirim permintaan, maka terjadi kegagalan, atau salah satu perangkat tidak berfungsi.

Timbul pertanyaan: dapatkah beberapa perangkat menggunakan saluran interupsi yang sama, atau pada prinsipnya tidak mungkin? Lagi pula, jika pengemudi dapat menentukan dari siapa sebenarnya permintaan itu datang, maka ia akan menanggapi sinyal hanya dari perangkat "nya", mengabaikan yang lainnya. Tetapi ini harus disepakati terlebih dahulu dalam beberapa cara, jika tidak konflik tidak dapat dihindari.

Bus PCI lokal dirancang dengan mempertimbangkan pembagian interupsi. Setiap perangkat PCI harus bekerja dengan benar pada jalur interupsi yang sama dengan perangkat PCI lainnya. Ini dilakukan dengan cara berikut: fakta keberadaan sinyal pada saluran interupsi tidak ditentukan oleh tepi, mis. perubahan tingkat tegangan, tetapi oleh fakta adanya tegangan tertentu. Beberapa perangkat dapat mengubah tegangan di saluran sekaligus, menjadi, seolah-olah, dalam antrian untuk layanan.

Dengan demikian, pembagian IRQ yang sama oleh beberapa perangkat PCI tidak bertentangan menurut definisi (Gbr.). Namun, terkadang masalah memang muncul. Pertama, tidak semua perangkat PCI bekerja dengan benar pada jalur interupsi yang sama dengan perangkat lain. Kedua, terkadang driver memiliki kesalahan karena mereka tidak dapat menentukan sumber sinyal dengan benar, mengganggu driver lain. Ketiga, tidak semua perangkat beroperasi pada bus PCI; misalnya, perangkat ISA, yang mencakup, misalnya, pengontrol port COM / LPT, tidak dapat berbagi interupsi dengan orang lain.

Beras. Win2000 Device Manager IRQ Map - IO PIC Intel 440BX Chipset

Beras. Win2000 IRQ MAP - IO APIC - Melalui Chipset KT266a

Akibatnya, situasi mungkin terjadi ketika komputer mulai sering membeku, menolak untuk melakukan fungsi apa pun, atau bahkan jatuh ke dalam apa yang disebut " layar biru dari kematian".

Apic (Pengontrol Interupsi yang Dapat Diprogram Tingkat Lanjut)

Seperti yang ditunjukkan di atas, jalur interupsi adalah sumber daya yang sangat langka untuk komputer. Namun, dengan berkembangnya industri komputer, jumlah berbagai perangkat eksternal di komputer terus meningkat. Misalnya, satu motherboard dapat memiliki 5-6 slot PCI, slot AGP, pengontrol IDE bawaan, pengontrol SCSI bawaan, adaptor jaringan 1/2-port bawaan, dll. Dan semua perangkat ini memerlukan interupsi. 16 garis IRQ secara bertahap kurang.

APIC Adalah pengontrol interupsi yang memungkinkan Anda untuk menggunakan 24 interupsi perangkat keras, bukan 16. Batas 16 interupsi perangkat keras, tidak berubah sejak 1982, menahan pemasangan perangkat tambahan di komputer pribadi. Pada akhir 2001, motherboard pertama dengan APIC muncul.

Beras. Mengganggu sistem dalam lingkungan multiprosesor.

Deskripsi sebelumnya adalah untuk PIC yang dirancang untuk sistem uniprosesor. Jika sistem mencakup dua atau lebih prosesor, pendekatan ini tidak lagi diizinkan dan PIC yang lebih kompleks diperlukan.

Semuanya prosesor modern x86 menyertakan APIC lokal. Setiap APIC lokal memiliki register 32-bit, jam internal, timer lokal, dan dua jalur IRQ tambahan, LINT0 dan LINT1, dicadangkan untuk interupsi APIC lokal. Semua APIC lokal terhubung ke I/O APIC eksternal.

APIC I/O berisi satu set 24 jalur IRQ, tabel perutean interupsi 24-input, register yang dapat diprogram, dan blok pesan untuk mengirim dan menerima pesan pada bus APIC. Berbeda dengan pin IRQ dari 8259A, prioritas interupsi tidak terikat pada nomor pin.

Setiap entri dalam tabel perutean interupsi dapat diprogram secara individual untuk menampilkan vektor interupsi dan prioritasnya, prosesor yang akan menangani interupsi dan bagaimana prosesor ini akan dipilih. Informasi dalam tabel perutean interupsi digunakan untuk menerjemahkan setiap sinyal eksternal menjadi pesan yang ditujukan ke satu atau lebih APIC lokal melalui bus APIC.

Distribusi statis

Sinyal IRQ dikirimkan ke APIC lokal yang terdaftar dalam entri tabel pengalihan interupsi yang sesuai. Interupsi dikirimkan ke satu CPU tertentu, beberapa CPU, atau semua CPU.

Alokasi dinamis

Sinyal IRQ dikirimkan ke APIC lokal prosesor, yang mengeksekusi proses dengan prioritas terendah.

Setiap APIC lokal memiliki register prioritas pekerjaan yang dapat diprogram yang digunakan untuk menghitung prioritas proses saat ini. Intel mengharapkan register ini dimodifikasi oleh kernel sistem operasi pada setiap switch proses.

Selain mendistribusikan interupsi di seluruh prosesor, sistem multi-APIC memungkinkan CPU untuk menghasilkan interupsi antarprosesor. Ketika CPU ingin mengirim interupsi ke CPU lain, ia menyimpan vektor interupsi dan ID APIC lokal target di Interrupt Command Register (ICR) dari APIC lokalnya. Pesan tersebut kemudian dikirim melalui bus APIC ke APIC lokal target, yang mengeluarkan interupsi yang sesuai ke CPU-nya.

Banyak sistem uniprosesor saat ini menyertakan chip I/O APIC yang dapat dikonfigurasi dengan dua cara:

1. Sebagai PIC 8259A standar yang terhubung ke CPU. APIC lokal dinonaktifkan dan dua baris LINT0 dan LINT1 dikonfigurasi sebagai pin INTR dan NMI.

2. Sebagai standar I/O eksternal APIC. APIC lokal diaktifkan dan semua interupsi eksternal diterima melalui I/O APIC.

  • Alieva Elena Viktorovna, murid
  • Universitas Teknik Penerbangan Negeri Ufa
  • PENGENDALI GANGGUAN
  • KONTROLER
  • GANGGUAN PERANGKAT KERAS
  • MENGGANGGU

Interupsi berarti gangguan sementara dari proses komputasi utama untuk melakukan beberapa tindakan yang direncanakan atau tidak direncanakan yang disebabkan oleh pengoperasian perangkat keras atau program. Mekanisme interupsi didukung di tingkat perangkat keras. Interupsi perangkat keras terjadi sebagai reaksi mikroprosesor terhadap sinyal fisik dari beberapa perangkat (keyboard, jam sistem, keyboard, HDD dll.), interupsi ini tidak sinkron pada saat terjadinya, mis. terjadi pada waktu yang acak. Pengontrol interupsi dirancang untuk memproses dan menengahi permintaan layanan yang masuk ke Unit pemrosesan utama dari perangkat periferal. Interupsi memiliki prioritas tertentu, yang memungkinkan pengontrol interupsi memberikan preferensi untuk saat ini waktu untuk satu perangkat, bukan yang lain. Di komputer modern, ada hingga 16 perangkat eksternal dan periferal yang menghasilkan interupsi.

  • Otomatisasi aliran dokumen di gudang perusahaan manufaktur
  • Teknologi panggilan, fitur, aplikasi, dan efisiensi
  • Pengembangan model sistem informasi departemen hukum untuk mendukung dan menyimpulkan kontrak perusahaan

pengantar

Interupsi berarti gangguan sementara dari proses komputasi utama untuk melakukan beberapa tindakan yang direncanakan atau tidak direncanakan yang disebabkan oleh pengoperasian perangkat keras atau program. Itu. itu adalah proses yang sementara mengalihkan mikroprosesor untuk menjalankan program lain dan kemudian kembali ke program yang terputus. Dengan menekan tombol pada keyboard, kami memulai panggilan langsung ke program yang mengenali kunci tersebut, memasukkan kodenya ke dalam buffer keyboard, dari mana kode tersebut dibaca oleh program lain. Itu. mikroprosesor menginterupsi eksekusi untuk sementara waktu program saat ini dan beralih ke penangan interupsi, yang disebut penangan interupsi. Setelah penangan interupsi menyelesaikan pekerjaannya, program yang terputus akan melanjutkan eksekusi dari titik di mana ia ditangguhkan. Alamat penangan interupsi dihitung dari tabel vektor interupsi.

Mekanisme interupsi didukung di tingkat perangkat keras. Tergantung pada sumbernya, interupsi dibagi menjadi:

  • perangkat keras- muncul sebagai reaksi mikroprosesor terhadap sinyal fisik dari beberapa perangkat (keyboard, jam sistem, keyboard, hard disk, dll.), interupsi ini tidak sinkron dalam waktu terjadinya, mis. terjadi pada waktu yang acak;
  • terprogram- dipanggil secara artifisial dengan bantuan perintah yang sesuai dari program (int), dimaksudkan untuk melakukan beberapa tindakan sistem operasi, bersifat sinkron;
  • pengecualian- adalah reaksi mikroprosesor terhadap situasi non-standar yang muncul di dalam mikroprosesor selama eksekusi perintah program tertentu (pembagian dengan nol, interupsi oleh flag TF (trace)).

Mengganggu perangkat keras sistem

Sistem interupsi adalah kumpulan perangkat lunak dan perangkat keras yang mengimplementasikan mekanisme interupsi.

Perangkat keras sistem interupsi meliputi:

  • output mikroprosesor - sinyal dihasilkan pada mereka yang memberi tahu mikroprosesor bahwa beberapa perangkat eksternal "meminta perhatian" (INTR), atau bahwa pemrosesan mendesak dari beberapa peristiwa atau kesalahan katastropik (NMI) diperlukan
  • INTR - pin untuk sinyal input permintaan interupsi,
  • NMI - pin untuk sinyal input interupsi non-maskable
  • INTA - keluaran untuk sinyal keluaran konfirmasi penerimaan sinyal interupsi oleh mikroprosesor (sinyal ini diumpankan ke masukan dengan nama yang sama dari rangkaian mikro pengontrol 8259A;
  • 8259A pengontrol interupsi yang dapat diprogram (dirancang untuk memperbaiki sinyal interupsi dari delapan perangkat eksternal yang berbeda; dibuat dalam bentuk sirkuit mikro; biasanya digunakan dua sirkuit mikro yang terhubung secara serial, jadi nomornya sumber yang mungkin interupsi eksternal hingga 15 ditambah satu interupsi yang tidak dapat ditutup-tutupi; dialah yang membentuk nomor vektor interupsi dan mengeluarkan bus datanya);
  • perangkat eksternal (timer, keyboard, cakram magnetik dll.)

Penanganan interupsi

Interupsi memicu serangkaian peristiwa yang terjadi di perangkat keras dan perangkat lunak... dalam gambar. 1 menunjukkan urutan khas dari peristiwa ini.

Ketika perangkat I/O selesai, hal berikut terjadi:

  • Perangkat mengirimkan sinyal interupsi ke prosesor.
  • Sebelum menanggapi interupsi, prosesor harus menyelesaikan eksekusi perintah saat ini (lihat Gambar 1).
  • Prosesor memeriksa keberadaan interupsi, mendeteksinya dan mengirim perangkat yang mengirim interupsi ini, memberi tahu sinyal penerimaan yang berhasil. Sinyal ini memungkinkan perangkat untuk menghapus sinyal interupsinya.
Gambar 1. Waktu Program: I/O lambat

Sekarang prosesor perlu bersiap untuk mentransfer kontrol ke pengendali interupsi. Anda harus terlebih dahulu menyimpan semua informasi penting, sehingga nanti Anda dapat kembali ke tempat program saat ini dijeda. Informasi minimum yang diperlukan adalah kata status program dan alamat dari perintah yang dieksekusi berikutnya, yang terletak di penghitung program. Data ini didorong ke tumpukan kontrol sistem.

Gambar 2. Menangani interupsi sederhana

Selanjutnya, alamat input dari pengendali interupsi, yang bertanggung jawab untuk memproses interupsi ini, dimuat ke penghitung program prosesor. Tergantung pada arsitektur komputer dan perangkat sistem operasi, mungkin ada satu program untuk menangani semua interupsi, atau mungkin ada program pemrosesan sendiri untuk setiap perangkat dan setiap jenis interupsi. Jika ada beberapa program yang tersedia untuk menangani interupsi, prosesor harus menentukan program mana yang akan dipanggil. Informasi ini mungkin terkandung dalam sinyal interupsi asli; jika tidak, untuk mendapatkan informasi yang diperlukan, prosesor harus menginterogasi semua perangkat secara bergantian untuk menentukan perangkat mana yang mengirim interupsi.

Segera setelah nilai baru dimuat ke penghitung program, prosesor melanjutkan ke siklus instruksi berikutnya, mulai mengambilnya dari memori. Karena perintah diambil dari lokasi, yang jumlahnya diatur oleh isi pencacah program, kontrol diteruskan ke rutin interupsi. Eksekusi program ini memerlukan operasi berikut.

Isi dari program counter dan status word dari program yang sedang diinterupsi sudah disimpan di system stack. Namun, ini tidak semua informasi yang berkaitan dengan status program yang dapat dieksekusi. Misalnya, Anda perlu menyimpan isi register prosesor, karena register ini mungkin diperlukan oleh pengendali interupsi. Oleh karena itu, perlu untuk menyimpan semua informasi tentang status program. Biasanya, penangan interupsi dimulai dengan menulis isi dari semua register ke dalam stack. Informasi lain yang harus disimpan dibahas dalam Bab 3, "Mendeskripsikan dan Mengontrol Proses." dalam gambar. contoh sederhana ditunjukkan di mana program pengguna terputus setelah menjalankan perintah dari sel N. Isi semua register, serta alamat perintah berikutnya (N + 1), secara total, membentuk kata M, adalah didorong ke tumpukan. Penunjuk tumpukan kemudian diperbarui untuk menunjuk ke bagian atas tumpukan yang baru. Penghitung program juga diperbarui untuk menunjukkan awal dari rutinitas interupsi.

Handler interupsi sekarang dapat memulai pekerjaannya. Penanganan interupsi meliputi pengecekan informasi status terkait operasi I/O atau kejadian lain yang memicu interupsi. Ini juga dapat mencakup pengiriman instruksi tambahan atau pesan pemberitahuan ke perangkat I/O.

Setelah pemrosesan interupsi selesai, nilai-nilai yang disimpan sebelumnya dikeluarkan dari tumpukan, yang sekali lagi dimasukkan ke dalam register, sehingga melanjutkan keadaan sebelum interupsi.

Langkah terakhir adalah memulihkan kata status program dan isi penghitung program dari tumpukan. Akibatnya, perintah dari program yang terputus akan dieksekusi berikutnya.

Karena fakta bahwa interupsi bukanlah subrutin yang dipanggil dari program, penting untuk pemulihan lengkap untuk mempertahankan semua informasi status program yang terputus. Namun, gangguan dapat terjadi kapan saja dan di mana saja dalam program pengguna. Peristiwa ini tidak dapat diprediksi.

Pengontrol interupsi

Pengontrol interupsi dirancang untuk memproses dan menengahi permintaan layanan yang masuk ke prosesor pusat dari perangkat periferal. Dengan analogi, fungsi pengontrol interupsi dapat dibandingkan dengan sekretaris beberapa bos. Sekretaris harus memutuskan pengunjung mana yang akan diterima bos terlebih dahulu, dan siapa kemudian, berdasarkan prioritas yang diberikan oleh bos dan status pengunjung itu sendiri. Demikian juga dalam sistem komputer, dimungkinkan beberapa perangkat periferal mengirim sinyal interupsi atau permintaan interupsi. Dalam literatur komputer, sinyal ini disebut sebagai IRQ (Interrupt Request).

Seperti disebutkan di atas, interupsi memiliki prioritas tertentu, yang memungkinkan pengontrol interupsi untuk memberikan preferensi pada waktu tertentu ke satu perangkat di atas yang lain. Di komputer modern, ada hingga 16 eksternal dan perangkat periferal menghasilkan interupsi. Perangkat ini adalah:
–IRQ 0, pengatur waktu sistem; –IRQ 1, papan ketik; –IRQ 2, digunakan untuk menanyakan perangkat yang terhubung secara kaskade; –IRQ 8, jam waktu nyata; –IRQ 9, dicadangkan; –IRQ 10, dicadangkan; –IRQ 11, dicadangkan; –IRQ 12, ps / 2 – mouse; –IRQ 13, koprosesor; –IRQ 14, pengontrol hard disk; –IRQ 15, dicadangkan; –IRQ 3, port COM2, COM4; –IRQ 4, port COM1, COM3; –IRQ 5, port LPT2; –IRQ 6, pengontrol floppy drive; –IRQ 7, port LPT1, pencetak.

Di sini sinyal terdaftar dalam urutan prioritas yang menurun. Anda dapat melihat bahwa setelah IRQ 2, diikuti oleh IRQ 8. Faktanya adalah bahwa pada satu waktu pengontrol interupsi terdiri dari dua sirkuit mikro, yang satu terhubung ke yang lain. Sirkuit mikro kedua ini terhubung ke jalur IRQ 2, membentuk kaskade. Ini melayani jalur IRQ8 - IRQ 15. Dan kemudian jalur sirkuit mikro pertama mengikuti.

Mengganggu operasi pengontrol

Pengontrol interupsi dianggap berbasis chip Intel 8259A, yang digunakan di komputer yang sekarang sangat tua dengan prosesor hingga seri 386. Komputer ini biasanya memiliki 2 chip 8259A yang terhubung secara kaskade, yaitu satu dengan yang lain. Salah satu rangkaian mikro yang terhubung melalui jalur permintaan interupsi langsung ke prosesor adalah master atau master. Sisanya, terhubung ke master melalui pin yang sama, disebut budak.


Gambar 3. Diagram koneksi pengontrol interupsi dan interaksinya dengan prosesor pusat

Gambar 3 menunjukkan diagram koneksi pengontrol interupsi dan interaksinya dengan prosesor pusat. Sinyal interupsi dari perangkat periferal atau pengontrol slave dikirim ke input IR0 – IR7 dari pengontrol master. Logika internal pengontrol master memproses permintaan yang masuk dalam hal prioritas. Jika prioritas permintaan perangkat cukup, maka sinyal dihasilkan pada output INT dari pengontrol, yang diumpankan ke input INTR dari prosesor. Jika tidak, permintaan akan diblokir.

Jika prosesor mengizinkan interupsi, maka setelah menyelesaikan eksekusi perintah saat ini, itu menghasilkan urutan sinyal pada jalur INTA yang membuat pengontrol budak kebal terhadap permintaan interupsi baru yang masuk, dan di samping itu, informasi dari register internal pengontrol adalah output ke jalur data dari register internal pengontrol dimana prosesor mengenali jenis interupsi.

Prosesor mentransfer izin interupsi ke pengontrol interupsi melalui pengontrol bus. Sinyal RD dimaksudkan agar pengontrol interupsi menempatkan isi register internal pada bus data. Pada sinyal WR, pengontrol interupsi, sebaliknya, menerima data dari bus dengan nama yang sama dan menulisnya ke register internal. Dengan demikian, ini mempengaruhi mode operasi pengontrol interupsi.

Input CS terhubung ke bus alamat dan sinyal ini digunakan untuk mengidentifikasi pengontrol interupsi tertentu. Input A0 menunjuk ke port pengontrol interupsi di ruang I/O.

Input IR0 – IR7 dirancang untuk menerima permintaan interupsi dari perangkat periferal dan pengontrol slave.

Keluaran CAS0 – CAS2 dirancang untuk mengidentifikasi pengontrol budak tertentu.

Artikel ini membahas interupsi perangkat keras dan perangkat, fungsi, operasi pengontrol interupsi. Pengontrol ini interupsi muncul di komputer pertama yang kompatibel dengan PC. Sejak itu, prosesor dan komputer itu sendiri telah banyak berubah, meskipun beberapa poin tetap ada. Oleh karena itu, untuk membuatnya lebih jelas dan organisasi pengontrol interupsi 8295A dipertimbangkan.

Diagram di atas menunjukkan sinyal yang datang tidak hanya ke kontroler interupsi slave dan master, tetapi juga ke slave lainnya. Namun, komputer atau laptop Anda sebenarnya memiliki 2 pengontrol interupsi seperti yang disebutkan di atas: master dan slave. Tapi Anda bisa membuat sendiri sistem komputer sehingga menggunakan hingga 64 pengontrol interupsi budak.

Di komputer modern untuk waktu yang lama fungsi pengontrol interupsi itu tidak dilakukan oleh sirkuit mikro 8259A, tetapi oleh jembatan selatan. Namun, untuk semua program dan perangkat, semuanya tetap sama. Selain itu, pengontrol interupsi dapat diprogram, dan register dan port internal harus diakses dengan cara yang sama seperti pengontrol 8259A.

Kesimpulan

Dalam tulisan ini, interupsi dipertimbangkan, yaitu penanganan interupsi perangkat keras dan prinsip penanganan interupsi. Juga dianggap sebagai pengontrol interupsi dan prinsip operasinya.

Interupsi berarti gangguan sementara dari proses komputasi utama untuk melakukan beberapa tindakan yang direncanakan atau tidak direncanakan yang disebabkan oleh pengoperasian perangkat keras atau program. Mekanisme interupsi didukung di tingkat perangkat keras. Interupsi perangkat keras muncul sebagai reaksi mikroprosesor terhadap sinyal fisik dari beberapa perangkat (keyboard, jam sistem, keyboard, hard disk, dll.); interupsi ini tidak sinkron dalam waktu terjadinya, mis. terjadi pada waktu yang acak.

Pengontrol interupsi dirancang untuk memproses dan menengahi permintaan layanan yang masuk ke prosesor pusat dari perangkat periferal. Interupsi memiliki prioritas tertentu, yang memungkinkan pengontrol interupsi memberikan preferensi pada waktu tertentu untuk satu perangkat di atas yang lain. Di komputer modern, ada hingga 16 perangkat eksternal dan periferal yang menghasilkan interupsi.

Bibliografi

  1. Kuliah. Interupsi. Surel Sumber. http://hromatron.narod.ru/_lekcii/prerivania_lekcia_g2013.htm
  2. Gangguan Sistem | Interupsi perangkat keras | Penanganan interupsi http://life-prog.ru/view_os.php?id=16
  3. Pengontrol interupsi. Surel Sumber daya http://sdelaycomputersam.ru/Controller_irq.php,
  4. Interupsi. Pengontrol interupsi. Perangkat, fungsi, pekerjaan. Surel Sumber daya http://sdelaycomputersam.ru/Controller_irq.php
  5. Struktur dan inisialisasi pengontrol interupsi Intel 8259A E-resource https://dev64.wordpress.com/2012/05/30/8259-programming/
Ada baiknya ketika, setelah perakitan atau modernisasi yang direncanakan, komputer dinyalakan pertama kali dan bekerja secara stabil dan tanpa gangguan. Jauh lebih buruk jika masalah tak terduga muncul - reboot dan pembekuan spontan, program macet, tidak dapat dioperasikan atau "tidak terlihat" perangkat, dll. Alasan pertama yang biasanya muncul di benak dalam kasus ini adalah konflik interupsi. Apakah kita mengetahui dengan baik sifat dari fenomena ini, apakah kita cukup siap untuk melawannya?

Apa itu IRQ?
Interupsi adalah mekanisme dasar reaksi sistem terhadap peristiwa yang muncul. Interupsi perangkat keras, biasanya disebut IRQ (Interrupt ReQuest), adalah sinyal fisik, dengan bantuan pengontrol perangkat yang memberi tahu prosesor tentang perlunya memproses beberapa permintaan. Secara konvensional, skema penanganan interupsi terlihat seperti ini:
1) prosesor menerima sinyal interupsi dan nomornya;
2) tabel khusus digunakan untuk menemukan alamat program yang bertanggung jawab untuk memproses interupsi dengan nomor yang diberikan - penangan interupsi;
3) prosesor ditangguhkan pekerjaan saat ini dan beralih ke eksekusi handler (dalam kasus umum, ini adalah semacam driver);
4) pengemudi mendapatkan akses ke perangkat dan memeriksa penyebab interupsi;
5) tindakan yang diminta diluncurkan - inisialisasi, konfigurasi perangkat, pertukaran data, dll.
6) driver keluar dan prosesor kembali ke tugas yang terputus.
Jelas, untuk operasi mekanisme interupsi yang benar, dua kondisi harus dipenuhi: pertama, sinyal permintaan harus mencapai prosesor dan, kedua, driver handler harus merespons sinyal ini dengan benar. Jika terjadi konflik, kondisi kedua tidak terpenuhi: sinyal interupsi tiba, tetapi reaksinya ternyata salah, akibatnya kami memiliki (paling-paling) perangkat yang tidak beroperasi.

Konflik
Kita dapat mengatakan bahwa konflik adalah situasi di mana beberapa objek secara bersamaan mencoba mengakses sumber daya yang ditujukan hanya untuk salah satunya. Pertentangan interupsi terjadi ketika beberapa perangkat menggunakan jalur interupsi yang sama untuk mengirim sinyal permintaan dan tidak ada mekanisme untuk menangani permintaan bersamaan. Jika driver, yang menerima kontrol, tidak berfungsi dengan perangkat yang mengirim permintaan, maka terjadi kegagalan, atau salah satu perangkat tidak berfungsi.
Timbul pertanyaan: dapatkah beberapa perangkat menggunakan saluran interupsi yang sama, atau tidak mungkin pada prinsipnya? Lagi pula, jika pengemudi dapat menentukan dari siapa sebenarnya permintaan itu datang, maka ia akan menanggapi sinyal hanya dari perangkat "nya", mengabaikan yang lainnya. Tetapi ini harus disepakati terlebih dahulu dalam beberapa cara, jika tidak konflik tidak dapat dihindari.
Bus PCI lokal dirancang dengan mempertimbangkan pembagian interupsi. Setiap perangkat PCI harus bekerja dengan benar pada jalur interupsi yang sama dengan perangkat PCI lainnya. Ini dilakukan dengan cara berikut: fakta keberadaan sinyal pada saluran interupsi tidak ditentukan oleh tepi, mis. perubahan tingkat tegangan, tetapi oleh fakta adanya tegangan tertentu. Beberapa perangkat dapat mengubah tegangan di saluran sekaligus, menjadi, seolah-olah, dalam antrian untuk layanan.
Dengan demikian, berbagi IRQ yang sama di antara beberapa perangkat PCI bukanlah konflik menurut definisi. Namun, terkadang masalah memang muncul. Pertama, tidak semua perangkat PCI bekerja dengan benar pada jalur interupsi yang sama dengan perangkat lain. Kedua, terkadang driver memiliki kesalahan karena mereka tidak dapat menentukan sumber sinyal dengan benar, mengganggu driver lain. Ketiga, tidak semua perangkat beroperasi pada bus PCI; misalnya, perangkat ISA, yang mencakup, misalnya, pengontrol port COM / LPT, tidak dapat berbagi interupsi dengan orang lain. Agar jelas tentang bagaimana Anda dapat menghindari atau menyelesaikan konflik, Anda perlu memahami bagaimana IRQ dikelola.

Organisasi interupsi perangkat keras di komputer pribadi
Seperti yang Anda ketahui, komputer pribadi dimulai dengan IBM PC. Arsitekturnya mencakup delapan jalur interupsi perangkat keras (IRQ), yang dikendalikan oleh pengontrol khusus. Masing-masing diberi nomor yang menentukan prioritas interupsi dan alamat penangannya (yang disebut vektor interupsi). Arsitektur baru, IBM PC AT, menyediakan delapan jalur interupsi lagi, yang digunakan pengontrol kedua, terhubung ke salah satu jalur interupsi pengontrol pertama. Sayangnya, arsitektur ini adalah yang terakhir setelah IBM kehilangan kemampuan untuk mengelola pengembangan platform yang dibuatnya, sehingga semua komputer modern hanya memiliki enam belas interupsi, salah satunya digunakan oleh pengontrol kedua.
Komputer IBM PC AT hanya memiliki satu bus di mana perangkat dapat berkomunikasi dengan prosesor dan memori - ISA. Sebagian besar jalur interupsi ditugaskan ke perangkat ISA standar, sisanya dicadangkan untuk masa depan. Ketika masa depan ini datang, menjadi jelas bahwa yang baru bus universal PCI hanya mendapat empat interupsi gratis. Oleh karena itu, mekanisme cerdas untuk berbagi interupsi (Berbagi IRQ) dan pendefinisian ulang dinamis angka (IRQ Steering atau Pemetaan) ditemukan.
Inti dari mekanisme kontrol interupsi perangkat PCI adalah sebagai berikut. Secara umum, ada empat jalur interupsi PCI fisik yang disebut PIRQ0, PIRQ1, PIRQ2, dan PIRQ3. Mereka terhubung ke pengontrol interupsi. Setiap perangkat PCI, pada bagiannya, tampaknya memiliki empat konektor, yang disebut INT A, INT B, INT C dan INT D. Anda dapat menghubungkan saluran ke konektor dalam urutan apa pun. Misalnya, untuk slot PCI pertama, Anda dapat membuat pengkabelan berikut: PIRQ0 - INT A, PIRQ1 - INT B, PIRQ2 - INT C, PIRQ3 - INT D. Dan untuk yang kedua - dengan cara yang berbeda: PIRQ0 - INT B , PIRQ1 - INT C, PIRQ2 - INT D, PIRQ3 - INT A. Biasanya perangkat hanya membutuhkan satu saluran interupsi yang terhubung ke INT A. Ketika dipasang di slot pertama, perangkat menggunakan saluran PIRQ0, dan di slot kedua, saluran Garis PIRQ1 akan berada pada pin yang sama. Dengan demikian, perangkat di slot yang berbeda akan menggunakan jalur interupsi fisik yang berbeda. Konflik perangkat keras di antara mereka akan dihilangkan.
Bus AGP, yang sebenarnya merupakan modifikasi PCI khusus, juga menggunakan salah satu jalur PIRQ - biasanya PIRQ0.
Untuk sistem modern, empat jalur saja tidak cukup, sehingga chipset baru sering kali menggunakan delapan jalur PIRQ, yang dihubungkan dengan cara yang sama dalam kombinasi berbeda ke slot PCI dan perangkat yang terpasang di papan.
Garis PIRQ terhubung ke pengontrol interupsi. Mereka, seperti baris lain, diberi nomor IRQ logis. Jika ada beberapa perangkat pada jalur fisik yang sama (dan ini diperbolehkan), maka semuanya akan memiliki nomor IRQ yang sama. Jika perangkat berada di jalur fisik yang berbeda, mereka masih dapat menerima nomor IRQ yang sama. Driver normal akan memungkinkan mereka untuk berjalan dengan bebas tanpa mengorbankan kinerja, karena bus PCI masih hanya dapat ditangkap oleh satu perangkat. Hal utama adalah mengenali dari perangkat mana sinyal itu berasal.
Nomor baris PIRQ ditetapkan secara otomatis berkat mekanisme Plug & Play yang terkenal. Tetapi ada juga perangkat Plug & Play ISA. Mereka juga memiliki kemampuan untuk mendapatkan nomor IRQ secara otomatis. Tetapi saluran interupsi mereka adalah milik mereka secara eksklusif, dan jika salah satu saluran PIRQ mendapatkan nomor yang sama, konflik yang tidak dapat diselesaikan akan muncul.
Jadi kami menemukan bahwa perangkat PCI harus bebas dari masalah konflik IRQ. Jika mereka, tentu saja, bekerja dengan benar, dan ini tidak selalu terjadi. Selain itu, driver harus mendukung mekanisme pembagian interupsi. Perangkat ISA tidak tahu cara membagi jalur interupsi dan oleh karena itu merupakan provokator konflik. Akibatnya, masalah menghilangkan konflik direduksi menjadi alokasi angka yang benar (sumber masalahnya adalah perangkat ISA dan driver "bengkok") atau pemisahan di sepanjang garis fisik yang berbeda (pengontrol PCI "bengkok").
Mari kita lihat bagaimana angka-angka dialokasikan dalam sistem dan bagaimana kita dapat mempengaruhi proses ini.

Mengganggu peta
Seperti yang saya katakan, sebagian besar nomor IRQ sudah diambil oleh perangkat standar, atau lebih tepatnya, ditugaskan ke jalur interupsi mereka. Mari kita lihat urutannya:
0 - pengatur waktu sistem (nomornya selalu sibuk);
1 - keypad (nomornya selalu sibuk);
2 - pengontrol interupsi kedua (selalu sibuk);
3 - Port COM2 (dapat dinonaktifkan, dan nomornya dapat dilepaskan);
4 - Port COM1 (dapat dinonaktifkan, dan nomornya dapat dilepaskan);
5 - port LPT2 (biasanya nomornya gratis);
6 - pengontrol floppy disk (dapat dinonaktifkan dan nomor dilepaskan);
7 - Port LPT1 (jika tidak dalam mode EPP atau ECP, maka nomornya gratis);
8 - jam waktu nyata (selalu sibuk);
9 - gratis;
10 - gratis;
11 - gratis;
12 - mouse PS / 2 (bisa gratis jika tidak ada mouse seperti itu);
13 - koprosesor (selalu sibuk);
14 dan 15 - pengontrol hard drive(dapat dinonaktifkan, dan nomor dikosongkan).
Dalam sistem tipikal, angka 5, 7, 9-11 tersedia, yaitu lima dari lima belas. Selain itu, Anda dapat dengan aman menonaktifkan port COM2 dan LPT1, menambah jumlah nomor gratis menjadi tujuh. Bebas tidak berarti mereka tidak sibuk, hanya saja pengocokan bebas dimungkinkan di antara mereka.
Setiap sistem memiliki tiga perangkat PCI standar - ACPI, pengontrol USB, dan kartu video, yang masing-masing akan mengambil satu nomor. Perangkat yang kompleks (misalnya, kartu suara) mungkin memerlukan beberapa baris - INT A, INT B, dll. untuk komponennya, yang tidak akan saling bertentangan (bagaimanapun juga, garis fisik yang berbeda), tetapi dengan perangkat lain - dengan mudah.
Anda dapat mengetahui bagaimana nomor interupsi saat ini dialokasikan dalam beberapa cara. Di awal boot komputer, tabel konfigurasi teks muncul. Tepat setelah itu ada daftar perangkat PCI dengan nomor IRQ yang ditetapkan (lihat tangkapan layar). Cara lain bekerja pada Windows 9x. Ada ikon "Sistem" di panel kontrol, dan tab "Perangkat" di applet yang dipanggil. Kami memilih properti perangkat "Komputer", dan semua perangkat akan terdaftar di sana, menunjukkan IRQ mereka (lihat tangkapan layar).
Di Windows 2000, kami tidak memiliki akses ke manajemen interupsi, jadi untuk melihat daftar IRQ, kami perlu menggunakan utilitas informasi standar (Panel Kontrol / Alat Administratif / Manajemen Komputer / Informasi Sistem / Sumber Daya Perangkat Keras).

Alokasi BIOS IRQ
Dalam sistem, nomor IRQ dialokasikan antara garis fisik dua kali. Pertama kali ini dilakukan oleh sistem BIOS saat sistem boot. Setiap perangkat Plug & Play (semua PCI, ISA modern, perangkat terintegrasi), atau lebih tepatnya jalur interupsinya, diberi satu dari sepuluh kemungkinan angka. Jika jumlahnya tidak cukup, beberapa baris mendapatkan satu yang sama. Jika ini adalah jalur PIRQ, maka tidak apa-apa - dengan adanya driver normal dan dukungan dari sistem operasi (lihat di bawah untuk lebih lanjut tentang ini), semuanya akan berfungsi. Dan jika beberapa perangkat ISA atau perangkat PCI dan ISA mendapatkan nomor yang sama, maka konflik tidak dapat dihindari, dan kemudian perlu untuk campur tangan dalam proses distribusi.
Pertama-tama, Anda perlu menonaktifkan semua perangkat ISA yang tidak digunakan (dalam sistem tanpa slot ISA, mereka juga ada) - port COM1, COM2 dan floppy drive. Anda juga dapat menonaktifkan mode EPP dan ECP dari port LPT, kemudian interupsi IRQ7 akan tersedia.
V Pengaturan BIOS kita membutuhkan bagian "Konfigurasi PCI / PNP". Ada dua cara dasar untuk mempengaruhi alokasi nomor IRQ: memblokir nomor tertentu dan langsung menetapkan nomor baris PIRQ.
Metode pertama tersedia untuk semua BIOS: temukan daftar item "IRQ x digunakan oleh:" (dalam BIOS baru tersembunyi di submenu "Sumber Daya IRQ"). Interupsi yang harus ditetapkan secara eksklusif untuk perangkat ISA harus diatur ke "ISA Legacy". Jadi, saat menetapkan nomor ke perangkat PCI, interupsi ini akan dilewati. Ini harus dilakukan jika perangkat ISA bertahan dalam satu interupsi dengan perangkat PCI, karena keduanya tidak berfungsi. Kemudian kami menemukan nomor IRQ ini dan memblokirnya di BIOS Setup. Perangkat PCI pergi ke nomor baru IRQ, tetapi perangkat ISA tetap ada. Konflik diselesaikan.
Cara kedua yang lebih mudah untuk mengontrol nomor IRQ adalah penugasan langsung. Di submenu Pengaturan BIOS yang sama, mungkin ada item seperti "Slot X use IRQ" (nama lain: "PIRQx use IRQ", "PCI Slot x priority", "INT Pin x IRQ").
Dengan bantuan mereka, masing-masing dari empat baris PIRQ dapat diberi nomor tertentu. Omong-omong, di AwardBIOS 6.00 baru Anda dapat melihat perangkat mana (termasuk yang built-in) menggunakan jalur tertentu. Lihat saja sisi kanan Layar Pengaturan BIOS: foto menunjukkan bagaimana saya mengarahkan kursor ke item "Slot 1/5 gunakan IRQ no.", dan tulisan "Display Contr." muncul di sebelah kanan. Artinya, baris PIRQ pertama digunakan oleh kartu video. Jika sekarang saya memasukkan nomor tertentu alih-alih "Otomatis", kartu video akan dialihkan ke interupsi ini.

Alokasi nomor IRQ Alat Windows
Kedua kalinya nomor interupsi dialokasikan sistem operasi... Seperti yang ditunjukkan oleh eksperimen saya, Windows "98 mulai mengganggu tindakan yang dilakukan oleh BIOS" ohm hanya dalam kasus-kasus ekstrem. Jika Anda memiliki BIOS normal, teknik yang dijelaskan di sini tidak diperlukan.
Perlu dicatat bahwa operasi pembagian IRQ dan mekanisme alokasi dinamis yang benar memerlukan Windows untuk mengenali chipset. papan utama dan mengunduh IRQ Miniport. Semakin baru versi Windows, semakin banyak chipset yang mendukung miniport-nya sendiri (PCIIMP.PCI). Namun, selalu yang terbaik adalah bermain aman dan menginstal driver chipset terbaru.
Di Windows 98, sistem alokasi IRQ dikendalikan menggunakan manajer perangkat standar. Dalam daftar perangkat sistem Anda perlu menemukan bus PCI. Ada tab khusus di propertinya (lihat tangkapan layar). Jika semuanya dikonfigurasi dengan benar, miniport akan disebutkan di sana ("berhasil dimuat"), dan kontrol bus PCI(Kemudi) akan diaktifkan. Dengan demikian, Windows "98 memiliki sarana untuk mengontrol distribusi nomor interupsi antara jalur fisik. Tetapi karena BIOS sering mengatasi hal ini dengan baik, mekanisme ini tidak terlibat.
Tapi terkadang itu hanya perlu. Seperti yang saya katakan sebelumnya, perangkat PCI tidak boleh bertentangan jika mereka menggunakan interupsi logis yang sama. Hal lain adalah perangkat ISA, yang juga menyertakan port COM dan LPT. Jika perangkat non-Plug & Play, BIOS mungkin tidak menyadarinya dengan memberikan interupsi yang sibuk dengan perangkat PCI. Maka Anda perlu memesan interupsi. Ini dilakukan di petugas operator Perangkat Windows"98: pilih perangkat" Komputer ", panggil propertinya, alihkan ke tab kedua. Kemudian semuanya jelas.
Selain redundansi, Anda dapat langsung mengatur nomor interupsi untuk perangkat. Untuk melakukan ini, Anda perlu menemukan tab "Sumber Daya" di propertinya, nonaktifkan penyetelan otomatis dan coba ubah nomor interupsi yang ditetapkan.
Sayangnya, ini tidak selalu berhasil.
Windows 2000 adalah sistem khusus. Jika Anda memiliki komputer modern maka mungkin mendukung antarmuka konfigurasi ACPI. Dalam hal ini, Windows 2000 akan mengabaikan tindakan BIOS sama sekali dan "menggantung" semua perangkat PCI pada satu interupsi logis. Secara umum ini akan berfungsi dengan baik (bila tidak ada ISA), tetapi terkadang masalah memang terjadi. Untuk dapat mengubah nomor interupsi, Anda perlu mengubah kernel HAL, atau menginstal ulang Windows 2000 dengan ACPI dinonaktifkan di BIOS. Mengganti kernel dilakukan sebagai berikut: di manajer perangkat, pilih "Komputer" / "Komputer dengan ACPI", ubah driver menjadi " Komputer standar", reboot. Jika tidak berhasil, Anda harus menginstal ulang Windows 2000 lagi.
Saya harap informasi di atas akan membantu Anda dalam perjuangan Anda melawan gangguan perangkat keras. Dan ingat: sebagian besar masalah yang muncul terkait dengan level rendah literasi komputer tuan rumah komputer. Karena itu, Anda harus selalu berusaha untuk mendidik diri sendiri, maka akan ada lebih sedikit masalah, dan masalah yang muncul tampaknya tidak akan terpecahkan.

Mungkin konflik interupsi (IRQ) yang paling umum dikaitkan dengan port serial terintegrasi COM2 yang ditemukan di modern motherboard, dan modem internal (artinya modem PC internal lengkap, bukan modem perangkat lunak, juga disebut WinModem). Faktanya adalah bahwa modem internal yang lengkap sudah memiliki dukungan untuk port tertentu; secara default, port ini ditetapkan ke COM2, dengan sistem juga biasanya mengaktifkan port serial kedua. Dengan demikian, sistem memiliki dua port identik dengan menggunakan sumber daya yang sama (interupsi dan alamat port I/O).

Solusi untuk masalah ini cukup sederhana: masuk ke pengaturan BIOS sistem dan nonaktifkan port COM2 bawaan. Selain itu, Anda mungkin mempertimbangkan untuk menonaktifkan port COM1, yang juga jarang digunakan. Menonaktifkan port COMx yang tidak digunakan adalah salah satu cara cara yang lebih baik rilis interupsi (IRQ) untuk perangkat lain.

Konflik umum lainnya juga melibatkan port serial. Dalam tabel pemetaan interupsi standar, Anda mungkin telah memperhatikan bahwa IRQ3 ditetapkan ke COM2 dan IRQ4 ditetapkan ke COM1. Masalah muncul ketika port COM3 dan / atau COM4 tambahan ditambahkan ke sistem dan interupsi gratis tidak diberikan secara manual (secara default mereka menggunakan IRQ3 dan IRQ4) yang sama.

Komplikasi tambahan diperkenalkan oleh fakta bahwa beberapa kartu port tidak mengizinkan pemilihan interupsi selain IRQ3 dan IRQ4. Akibatnya, menetapkan IRQ3 ke COM4 dan IRQ4 ke COM3 menyebabkan konflik dengan COM1 dan COM2, yang juga menggunakan interupsi ini: dua port tidak dapat secara bersamaan menggunakan saluran kontrol interupsi yang sama. Saat bekerja di DOS, ini diizinkan, karena hanya satu tugas yang dapat dilakukan di dalamnya pada satu waktu, tetapi di Windows dan OS / 2 ini sama sekali tidak mungkin. Agar dapat menggunakan lebih dari dua port COM paralel di komputer, diperlukan papan multiport, yang selain interupsi bernomor 3 dan 4, memungkinkan penggunaan interupsi tambahan. Berbagi interupsi, pada prinsipnya, dapat diterima untuk perangkat yang biasanya tidak bekerja secara bersamaan (atau terus menerus). Port tidak termasuk dalam kategori perangkat ini. Anda dapat menggunakan interupsi untuk pemindai dan modem secara bersamaan, tetapi dalam kasus ini, jika digunakan secara bersamaan, akan ada konflik. Untungnya, sebagian besar perangkat yang sebelumnya menggunakan port (seperti mouse, printer label, dan modem eksternal) sekarang terhubung ke port USB, jadi ada masalah dengan kebutuhan untuk mendukung banyak port. pengguna modern komputer seharusnya tidak muncul.

Jika Anda masih perlu menggunakan beberapa port serial, solusi terbaik akan menjadi pembelian kartu multi-port yang menyediakan kemampuan untuk mengatur interupsi yang tidak bertentangan, atau berisi prosesornya sendiri, yang memungkinkan satu interupsi sistem didistribusikan di antara beberapa port. Beberapa kartu multiport lama memiliki antarmuka ISA, tetapi hari ini mereka telah digantikan oleh kartu PCI, yang juga menawarkan keunggulan kinerja.

Jika beberapa perangkat yang disebutkan dalam tabel hilang (misalnya, port mouse built-in (IRQ12) atau port paralel kedua (IRQ5)), interupsi mereka dapat dianggap tersedia. Misalnya, port paralel kedua sangat jarang, sehingga interupsi IRQ5 yang ditetapkan padanya paling sering digunakan untuk kartu adaptor suara. Demikian juga, interupsi IRQ15 digunakan untuk pengontrol IDE sekunder. Jika tidak ada perangkat disk yang terhubung ke saluran IDE sekunder dalam sistem, Anda dapat menonaktifkan pengontrol ini di BIOS, sehingga membebaskan interupsi lain untuk perangkat lain.

Perlu dicatat bahwa cara termudah untuk memeriksa pengaturan interupsi Anda adalah di Pengelola Perangkat Windows. Di Windows 95b ada program HWDIAG, dan di Windows 98 ke atas versi selanjutnya- Informasi Sistem Konsol. Utilitas ini memungkinkan Anda untuk mendapatkan laporan terperinci tentang penggunaan sumber daya dalam sistem, serta driver yang diinstal perangkat dan entri registri Windows untuk setiap perangkat. V Sistem Windows Untuk XP dan Vista, informasi sistem disediakan oleh program Msinfo32.

Untuk memastikan jumlah interupsi bersama sebanyak mungkin dalam sistem modern tanpa konektor ISA, gunakan langkah-langkah berikut di BIOS sistem.

  1. Nonaktifkan port yang tidak digunakan di BIOS sistem. Misalnya, jika alih-alih port serial dan paralel digunakan port USB, nonaktifkan mereka. Akibatnya, hingga tiga interupsi dapat dilepaskan.
  2. Tentukan interupsi IRQ yang dirilis pada langkah 1 dalam daftar interupsi yang tersedia untuk perangkat PCI / PnP. Tergantung pada versi BIOS parameter yang sesuai tersedia di bagian Pengecualian Sumber Daya PnP / PCI atau Konfigurasi PnP / PCI.
  3. Aktifkan opsi Atur Ulang Data Konfigurasi untuk menghapus tabel perutean IRQ di memori CMOS.
  4. Simpan perubahan dan keluar dari program pengaturan BIOS.

Ada baiknya ketika, setelah perakitan atau modernisasi yang direncanakan, komputer dinyalakan pertama kali dan bekerja secara stabil dan tanpa gangguan. Jauh lebih buruk jika masalah tak terduga muncul - reboot dan pembekuan spontan, program macet, tidak dapat dioperasikan atau "tidak terlihat" perangkat, dll. Alasan pertama yang biasanya muncul di benak dalam kasus ini adalah konflik interupsi. Apakah kita mengetahui dengan baik sifat dari fenomena ini, apakah kita cukup siap untuk melawannya?

Apa itu IRQ?


Interupsi adalah mekanisme dasar reaksi sistem terhadap peristiwa yang muncul. Interupsi perangkat keras, biasanya disebut IRQ (Interrupt ReQuest), adalah sinyal fisik yang digunakan oleh pengontrol perangkat untuk menginformasikan prosesor agar memproses beberapa permintaan. Secara konvensional, skema penanganan interupsi terlihat seperti ini:
1) prosesor menerima sinyal interupsi dan nomornya;
2) tabel khusus digunakan untuk menemukan alamat program yang bertanggung jawab untuk memproses interupsi dengan nomor yang diberikan - penangan interupsi;
3) prosesor menangguhkan pekerjaan saat ini dan beralih ke eksekusi pawang (dalam kasus umum, ini adalah semacam driver);
4) pengemudi mendapatkan akses ke perangkat dan memeriksa penyebab interupsi;
5) tindakan yang diminta diluncurkan - inisialisasi, konfigurasi perangkat, pertukaran data, dll.
6) driver keluar dan prosesor kembali ke tugas yang terputus.
Jelas, untuk operasi mekanisme interupsi yang benar, dua kondisi harus dipenuhi: pertama, sinyal permintaan harus mencapai prosesor dan, kedua, driver handler harus merespons sinyal ini dengan benar. Jika terjadi konflik, kondisi kedua tidak terpenuhi: sinyal interupsi tiba, tetapi reaksinya ternyata salah, akibatnya kami memiliki (paling-paling) perangkat yang tidak beroperasi.

Konflik

Kita dapat mengatakan bahwa konflik adalah situasi di mana beberapa objek secara bersamaan mencoba mengakses sumber daya yang ditujukan hanya untuk salah satunya. Pertentangan interupsi terjadi ketika beberapa perangkat menggunakan jalur interupsi yang sama untuk mengirim sinyal permintaan dan tidak ada mekanisme untuk menangani permintaan bersamaan. Jika driver, yang menerima kontrol, tidak berfungsi dengan perangkat yang mengirim permintaan, maka terjadi kegagalan, atau salah satu perangkat tidak berfungsi.
Timbul pertanyaan: dapatkah beberapa perangkat menggunakan saluran interupsi yang sama, atau tidak mungkin pada prinsipnya? Lagi pula, jika pengemudi dapat menentukan dari siapa sebenarnya permintaan itu datang, maka ia akan menanggapi sinyal hanya dari perangkat "nya", mengabaikan yang lainnya. Tetapi ini harus ditentukan sebelumnya, jika tidak konflik tidak dapat dihindari.
Bus PCI lokal dirancang dengan mempertimbangkan pembagian interupsi. Setiap perangkat PCI harus bekerja dengan benar pada jalur interupsi yang sama dengan perangkat PCI lainnya. Ini dilakukan dengan cara berikut: fakta keberadaan sinyal pada saluran interupsi tidak ditentukan oleh tepi, mis. perubahan tingkat tegangan, tetapi oleh fakta adanya tegangan tertentu. Beberapa perangkat dapat mengubah tegangan di saluran sekaligus, menjadi, seolah-olah, dalam antrian untuk layanan.
Dengan demikian, berbagi IRQ yang sama di antara beberapa perangkat PCI bukanlah konflik menurut definisi. Namun, terkadang masalah memang muncul. Pertama, tidak semua perangkat PCI bekerja dengan benar pada jalur interupsi yang sama dengan perangkat lain. Kedua, terkadang driver memiliki kesalahan karena mereka tidak dapat menentukan sumber sinyal dengan benar, mengganggu driver lain. Ketiga, tidak semua perangkat beroperasi pada bus PCI; misalnya, perangkat ISA, yang mencakup, misalnya, pengontrol port COM / LPT, tidak dapat berbagi interupsi dengan orang lain. Agar jelas tentang bagaimana Anda dapat menghindari atau menyelesaikan konflik, Anda perlu memahami bagaimana IRQ dikelola.

Organisasi interupsi perangkat keras di komputer pribadi


Seperti yang Anda ketahui, komputer pribadi dimulai dengan IBM PC. Arsitekturnya mencakup delapan jalur interupsi perangkat keras (IRQ), yang dikendalikan oleh pengontrol khusus. Masing-masing diberi nomor yang menentukan prioritas interupsi dan alamat penangannya (yang disebut vektor interupsi). Arsitektur baru, IBM PC AT, menyediakan delapan jalur interupsi lagi, yang digunakan pengontrol kedua, terhubung ke salah satu jalur interupsi pengontrol pertama. Sayangnya, arsitektur ini adalah yang terakhir setelah IBM kehilangan kemampuan untuk mengelola pengembangan platform yang dibuatnya, sehingga semua komputer modern hanya memiliki enam belas interupsi, salah satunya digunakan oleh pengontrol kedua.
Komputer IBM PC AT hanya memiliki satu bus di mana perangkat dapat berkomunikasi dengan prosesor dan memori - ISA. Sebagian besar jalur interupsi ditugaskan ke perangkat ISA standar, sisanya dicadangkan untuk masa depan. Ketika masa depan itu datang, ternyata bus PCI universal yang baru hanya mendapat empat interupsi gratis. Oleh karena itu, mekanisme cerdas untuk berbagi interupsi (Berbagi IRQ) dan pendefinisian ulang angka dinamis (IRQ Steering atau Pemetaan) ditemukan.
Inti dari mekanisme kontrol interupsi perangkat PCI adalah sebagai berikut. Secara umum, ada empat jalur interupsi PCI fisik yang disebut PIRQ0, PIRQ1, PIRQ2, dan PIRQ3. Mereka terhubung ke pengontrol interupsi. Setiap perangkat PCI, pada bagiannya, tampaknya memiliki empat konektor, yang disebut INT A, INT B, INT C dan INT D. Anda dapat menghubungkan saluran ke konektor dalam urutan apa pun. Misalnya, untuk slot PCI pertama, Anda dapat membuat pengkabelan berikut: PIRQ0 - INT A, PIRQ1 - INT B, PIRQ2 - INT C, PIRQ3 - INT D. Dan untuk yang kedua - dengan cara yang berbeda: PIRQ0 - INT B , PIRQ1 - INT C, PIRQ2 - INT D, PIRQ3 - INT A. Biasanya perangkat hanya membutuhkan satu saluran interupsi yang terhubung ke INT A. Ketika dipasang di slot pertama, perangkat menggunakan saluran PIRQ0, dan slot kedua akan memiliki garis PIRQ1 pada pin yang sama. Dengan demikian, perangkat di slot yang berbeda akan menggunakan jalur interupsi fisik yang berbeda. Konflik perangkat keras di antara mereka akan dihilangkan.
Bus AGP, yang sebenarnya merupakan modifikasi PCI khusus, juga menggunakan salah satu jalur PIRQ - biasanya PIRQ0.
Untuk sistem modern, empat jalur saja tidak cukup, sehingga chipset baru sering kali menggunakan delapan jalur PIRQ, yang dihubungkan dengan cara yang sama dalam kombinasi berbeda ke slot PCI dan perangkat yang terpasang di papan.
Garis PIRQ terhubung ke pengontrol interupsi. Mereka, seperti baris lain, diberi nomor IRQ logis. Jika ada beberapa perangkat pada jalur fisik yang sama (dan ini diperbolehkan), maka semuanya akan memiliki nomor IRQ yang sama. Jika perangkat berada di jalur fisik yang berbeda, mereka masih dapat menerima nomor IRQ yang sama. Driver normal akan memungkinkan mereka untuk berjalan dengan bebas tanpa mengorbankan kinerja, karena bus PCI masih hanya dapat ditangkap oleh satu perangkat. Hal utama adalah mengenali dari perangkat mana sinyal itu berasal.
Nomor baris PIRQ ditetapkan secara otomatis berkat mekanisme Plug & Play yang terkenal. Tetapi ada juga perangkat Plug & Play ISA. Mereka juga memiliki kemampuan untuk mendapatkan nomor IRQ secara otomatis. Tetapi saluran interupsi mereka adalah milik mereka secara eksklusif, dan jika salah satu saluran PIRQ mendapatkan nomor yang sama, konflik yang tidak dapat diselesaikan akan muncul.
Jadi kami menemukan bahwa perangkat PCI harus bebas dari masalah konflik IRQ. Jika mereka, tentu saja, bekerja dengan benar, dan ini tidak selalu terjadi. Selain itu, driver harus mendukung mekanisme pembagian interupsi. Perangkat ISA tidak tahu cara membagi jalur interupsi dan oleh karena itu merupakan provokator konflik. Oleh karena itu, masalah menghilangkan konflik bermuara pada alokasi angka yang benar (sumber masalahnya adalah perangkat ISA dan driver "bengkok") atau pemisahan di sepanjang garis fisik yang berbeda (pengontrol PCI "bengkok").
Mari kita lihat bagaimana angka-angka dialokasikan dalam sistem dan bagaimana kita dapat mempengaruhi proses ini.

Mengganggu peta

Seperti yang saya katakan, sebagian besar nomor IRQ sudah ditempati oleh perangkat standar, atau lebih tepatnya, ditugaskan ke jalur interupsi mereka. Mari kita lihat urutannya:
0 - pengatur waktu sistem (nomornya selalu sibuk);
1 - keypad (nomornya selalu sibuk);
2 - pengontrol interupsi kedua (selalu sibuk);
3 - Port COM2 (dapat dinonaktifkan, dan nomornya dapat dilepaskan);
4 - Port COM1 (dapat dinonaktifkan, dan nomornya dapat dilepaskan);
5 - port LPT2 (biasanya nomornya gratis);
6 - pengontrol floppy disk (dapat dinonaktifkan dan nomor dilepaskan);
7 - Port LPT1 (jika tidak dalam mode EPP atau ECP, maka nomornya gratis);
8 - jam waktu nyata (selalu sibuk);
9 - gratis;
10 - gratis;
11 - gratis;
12 - mouse PS / 2 (bisa gratis jika tidak ada mouse seperti itu);
13 - koprosesor (selalu sibuk);
14 dan 15 - pengontrol hard disk (dapat dinonaktifkan dan nomor dilepaskan).
Dalam sistem tipikal, angka 5, 7, 9-11 tersedia, yaitu lima dari lima belas. Selain itu, Anda dapat dengan aman menonaktifkan port COM2 dan LPT1, menambah jumlah nomor gratis menjadi tujuh. Bebas tidak berarti mereka tidak sibuk, hanya saja pengocokan bebas dimungkinkan di antara mereka.
Setiap sistem memiliki tiga perangkat PCI standar - ACPI, pengontrol USB, dan kartu video, yang masing-masing akan mengambil satu nomor. Perangkat yang kompleks (misalnya, kartu suara) mungkin memerlukan beberapa saluran - INT A, INT B, dll. untuk komponennya, yang tidak akan saling bertentangan (bagaimanapun juga, garis fisik yang berbeda), tetapi dengan perangkat lain - dengan mudah.
Anda dapat mengetahui bagaimana nomor interupsi saat ini dialokasikan dalam beberapa cara. Di awal boot komputer, tabel konfigurasi teks muncul. Tepat setelah itu ada daftar perangkat PCI dengan nomor IRQ yang ditetapkan (lihat tangkapan layar). Cara lain bekerja pada Windows 9x. Ada ikon "Sistem" di panel kontrol, dan tab "Perangkat" di applet yang dipanggil. Kami memilih properti perangkat "Komputer", dan semua perangkat akan terdaftar di sana, menunjukkan IRQ mereka (lihat tangkapan layar).
Di Windows 2000, kami tidak memiliki akses ke manajemen interupsi, jadi untuk melihat daftar IRQ, kami perlu menggunakan utilitas informasi standar (Panel Kontrol / Alat Administratif / Manajemen Komputer / Informasi Sistem / Sumber Daya Perangkat Keras).

Alokasi BIOS IRQ

Dalam sistem, nomor IRQ dialokasikan antara garis fisik dua kali. Pertama kali ini dilakukan oleh sistem BIOS pada saat boot. Setiap perangkat Plug & Play (semua PCI, ISA modern, perangkat terintegrasi), atau lebih tepatnya jalur interupsinya, diberi satu dari sepuluh kemungkinan angka. Jika jumlahnya tidak cukup, beberapa baris mendapatkan satu yang sama. Jika ini adalah jalur PIRQ, maka tidak apa-apa - dengan adanya driver normal dan dukungan dari sistem operasi (lihat di bawah untuk ini), semuanya akan berfungsi. Dan jika beberapa perangkat ISA atau perangkat PCI dan ISA mendapatkan nomor yang sama, maka konflik tidak dapat dihindari, dan kemudian perlu untuk campur tangan dalam proses distribusi.
Pertama-tama, Anda perlu menonaktifkan semua perangkat ISA yang tidak digunakan (dalam sistem tanpa slot ISA, mereka juga ada) - port COM1, COM2 dan floppy drive. Anda juga dapat menonaktifkan mode EPP dan ECP dari port LPT, kemudian interupsi IRQ7 akan tersedia.
Di BIOS Setup, kita memerlukan bagian "PCI / PNP Configuration". Ada dua cara dasar untuk mempengaruhi alokasi nomor IRQ: memblokir nomor tertentu dan langsung menetapkan nomor baris PIRQ.
Metode pertama tersedia untuk semua BIOS: temukan daftar item "IRQ x digunakan oleh:" (di BIOS baru disembunyikan di submenu "Sumber Daya IRQ"). Interupsi yang harus ditetapkan secara eksklusif untuk perangkat ISA harus diatur ke "ISA Legacy". Jadi, saat menetapkan nomor ke perangkat PCI, interupsi ini akan dilewati. Ini harus dilakukan jika perangkat ISA bertahan dalam satu interupsi dengan perangkat PCI, karena keduanya tidak berfungsi. Kemudian kami menemukan nomor IRQ ini dan memblokirnya di BIOS Setup. Perangkat PCI pindah ke nomor IRQ baru, tetapi perangkat ISA tetap. Konflik diselesaikan.
Cara kedua yang lebih mudah untuk mengontrol nomor IRQ adalah penugasan langsung. Di submenu Pengaturan BIOS yang sama, mungkin ada item dalam bentuk "Slot X use IRQ" (nama lain: "PIRQx use IRQ", "PCI Slot x priority", "INT Pin x IRQ").
Dengan bantuan mereka, masing-masing dari empat baris PIRQ dapat diberi nomor tertentu. Omong-omong, di AwardBIOS 6.00 yang baru Anda dapat melihat dengan tepat perangkat mana (termasuk yang built-in) yang menggunakan jalur ini atau itu. Lihat saja di sisi kanan layar Pengaturan BIOS: foto menunjukkan bagaimana saya mengarahkan kursor ke item "Slot 1/5 gunakan IRQ no.", Dan kata-kata "Display Contr." Muncul di sebelah kanan. Artinya, baris PIRQ pertama digunakan oleh kartu video. Jika sekarang saya memasukkan nomor tertentu alih-alih "Otomatis", kartu video akan dialihkan ke interupsi ini.

Mengalokasikan IRQ Menggunakan Windows

Kedua kalinya nomor interupsi dialokasikan oleh sistem operasi. Seperti yang ditunjukkan oleh eksperimen saya, Windows "98 mulai mengganggu tindakan yang dilakukan oleh BIOS" ohm hanya dalam kasus-kasus ekstrem. Jika Anda memiliki BIOS normal, teknik yang dijelaskan di sini tidak diperlukan.
Perlu dicatat bahwa agar mekanisme berbagi IRQ dan alokasi dinamis berfungsi dengan baik, Windows harus mengenali chipset motherboard dan memuat IRQ Miniport. Semakin baru versi Windows, semakin banyak chipset yang mendukung miniport-nya sendiri (PCIIMP.PCI). Namun, selalu yang terbaik adalah bermain aman dan menginstal driver chipset terbaru.
Di Windows 98, sistem alokasi IRQ dikendalikan menggunakan manajer perangkat standar. Temukan bus PCI dalam daftar perangkat sistem. Ada tab khusus di propertinya (lihat tangkapan layar). Jika semuanya dikonfigurasi dengan benar, miniport akan disebutkan di sana ("berhasil dimuat"), dan manajemen bus PCI (Kemudi) akan diaktifkan. Dengan demikian, Windows "98 memiliki sarana untuk mengontrol distribusi nomor interupsi antara jalur fisik. Tetapi karena BIOS sering mengatasi ini dengan baik, mekanisme ini tidak terlibat.
Tapi terkadang itu hanya perlu. Seperti yang saya katakan sebelumnya, perangkat PCI tidak boleh bertentangan jika mereka menggunakan interupsi logis yang sama. Hal lain adalah perangkat ISA, yang juga menyertakan port COM dan LPT. Jika perangkat non-Plug & Play, BIOS mungkin tidak menyadarinya dengan memberikan interupsi yang sibuk dengan perangkat PCI. Maka Anda perlu memesan interupsi. Ini dilakukan di Pengelola Perangkat Windows 98: pilih perangkat Komputer, panggil propertinya, alihkan ke tab kedua.
Selain redundansi, Anda dapat langsung mengatur nomor interupsi untuk perangkat. Untuk melakukan ini, Anda perlu menemukan tab "Sumber Daya" di propertinya, menonaktifkan konfigurasi otomatis dan mencoba mengubah nomor interupsi yang ditetapkan.
Sayangnya, ini tidak selalu berhasil.
Windows 2000 adalah sistem khusus. Jika Anda memiliki komputer modern, mungkin komputer tersebut mendukung antarmuka konfigurasi ACPI. Dalam hal ini, Windows 2000 akan mengabaikan tindakan BIOS sama sekali dan "menggantung" semua perangkat PCI pada satu interupsi logis. Secara umum ini akan berfungsi dengan baik (bila tidak ada ISA), tetapi terkadang masalah memang terjadi. Untuk dapat mengubah nomor interupsi, Anda perlu mengubah kernel HAL, atau menginstal ulang Windows 2000 dengan ACPI dinonaktifkan di BIOS. Mengganti kernel dilakukan sebagai berikut: di manajer perangkat, pilih "Komputer" / "Komputer dengan ACPI", ubah driver menjadi "Komputer standar", reboot. Jika ini tidak berhasil, Anda harus menginstal ulang Windows 2000 lagi.
Saya harap informasi di atas akan membantu Anda dalam perjuangan Anda melawan gangguan perangkat keras. Dan ingat: sebagian besar masalah yang muncul terkait dengan rendahnya tingkat literasi komputer pemilik komputer. Karena itu, Anda harus selalu berusaha untuk mendidik diri sendiri, maka akan ada lebih sedikit masalah, dan masalah yang muncul tampaknya tidak akan terpecahkan.