IOAPICとは? わかりやすく解説

APIC

(IOAPIC から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/04/04 02:17 UTC 版)

ナビゲーションに移動 検索に移動

APIC(えいぴっく)はAdvanced Programmable Interrupt Controllerの略で、インテルにより開発された、x86アーキテクチャにおける割り込みコントローラのことである。

それまでのLegacyの割り込みコントローラとして知られるPIC (Programmable Interrupt Controller) に対し、マルチプロセッサ対応、プライオリティ制御などの機能が付加されている。APICはインテルアーキテクチャの進歩と共に高機能化しており、いくつかのバージョンが存在する。

概要

APICにはCPUに内蔵されるLocal APICと、I/Oからの割り込みを管理するIOAPICの2種類が存在する。Local APICとIOAPICは独自のプロトコルで通信を行い、割り込みの通知を行う。Pentium Pro世代では、APIC Busと呼ばれる割り込み専用のバスが使用されていたが、NetBurst世代以降、APIC Busは廃止され、FSBを介して割り込みの通知が行われる。

Local APIC

CPU内部に実装され、外部からの割り込みの全てを管理する。I/Oからの割り込み以外にもIPI (Inter-Processor Interrupt) と呼ばれる、マルチプロセッサによる割り込みを使用したCPU間通信にも使用される。

IOAPIC

IOAPICはI/Oデバイスから受け取った割り込みを、CPUへ通知するためのリダイレクション・テーブルを持つ。

全てのI/O割り込みは一旦IOAPICで受信される。IOAPICは、オペレーティングシステム (OS) やBIOSによって適切に設定されたリダイレクション・テーブルを参照し、それに従いCPUに割り込みの通知を行う。 リダイレクション・テーブルには、エッジ/レベル・トリガーの種別、割り込みベクタ(優先度)、割り込み先CPUなどの設定が可能である。

特徴

以下に、PCIをI/Oデバイスに持つ一般的なIA-32アーキテクチャにおける、実装、割り込み時の振る舞いを例として解説する。

実装

PCIバスにおいては、1本のバスにはINT_A,B,C,Dの、最大4本のI/O割り込み線が存在し、それら割り込み線はIOAPICに接続される。IOAPICには、それぞれの割り込み線に対するリダイレクション・テーブルが割り当てられており、割り込み種別、割り込みベクタなど、CPUのLocal APICと通信を行うための設定がなされる。

I/Oデバイスの数が多い場合、4本の割り込み線では足りずに、1本の割り込み線を複数のI/Oデバイスで共有する場合がある。これらの管理もIOAPICが負っている。なお、IOAPICはシステムで複数存在していてもかまわない。

PCIのI/OデバイスによってはMSI (Message Signaled Interrupts英語版) をサポートするものがあり、これらのデバイスは割り込み線を使用しないが、チップセットによりMSIメッセージは一旦IOAPICにルーティングされ、リダイレクション・テーブル介してからCPUへ割り込み通知される。

動作

IOAPICがPCIの割り込み信号の変化を検知すると、リダイレクション・テーブルに従い、CPUに対し割り込みメッセージを発行する。CPUのLocal APICがこれを受信すると、自CPUの割り込み処理の仕掛かり、優先度などをチェックし、割り込みハンドラをコールする。 割り込みハンドラは、割り込みを発生させたI/Oデバイスをチェックし、割り込み信号通知を停止させ、それぞれの処理に入る。

一連の割り込み処理が完了すると、CPUはEOI (End of Interrupt)というコマンドをIOAPICに対して発行する。EOIには対応する割り込みベクタ情報が含まれており、IOAPICは、該当するベクタの割り込み処理が完了したことを認識する。 なおこの時、PCIデバイスより依然として当該割り込み信号による通知が行われている場合、即座に再度CPUに対して割り込みを発行する。 これらの一連の動作により、割り込みのロスト防止、割り込み線の共有制御などが行われる。

プライオリティ制御

高い優先度の割り込み処理を実行しているCPUに対し、低い優先度の割り込みを通知しても、その処理は一旦待たされる。であれば、割り込み処理を行っていない、または低い優先度の割り込み処理を行っているCPUに割り込みを通知すべきである。

NetBurst世代後期のLocal APICには、割り込み処理に出入りするたびに、その割り込み優先度を、FSBを介して定期的にチップセットに通知する機能が実装されており、OSがこの機能を利用して、マルチプロセッサ・システムでの適切な割り込み分散が可能となっている。ただし、本機能に対応したIOAPICおよび、ノースブリッジが必要とされる。


IOAPIC

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/04/04 02:17 UTC 版)

APIC」の記事における「IOAPIC」の解説

IOAPICはI/Oデバイスから受け取った割り込みを、CPU通知するためのリダイレクションテーブルを持つ。 全てのI/O割り込みは一旦IOAPICで受信される。IOAPICは、オペレーティングシステム (OS) やBIOSによって適切に設定されリダイレクションテーブル参照し、それに従いCPU割り込み通知を行う。リダイレクションテーブルには、エッジ/レベル・トリガー種別割り込みベクタ優先度)、割り込みCPUなどの設定が可能である。

※この「IOAPIC」の解説は、「APIC」の解説の一部です。
「IOAPIC」を含む「APIC」の記事については、「APIC」の概要を参照ください。

ウィキペディア小見出し辞書の「IOAPIC」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「IOAPIC」の関連用語

IOAPICのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



IOAPICのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのAPIC (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのAPIC (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS