(Translated by https://www.hiragana.jp/)
APIC - Wikipedia コンテンツにスキップ

APIC

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』

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かいしてみの通知つうちおこなわれる。

CPU内部ないぶ実装じっそうされ、外部がいぶからのみのすべてを管理かんりする。I/Oからの以外いがいにもIPI (Inter-Processor Interrupt) とばれる、マルチプロセッサによるみを使用しようしたCPUあいだ通信つうしんにも使用しようされる。

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および、ノースブリッジ必要ひつようとされる。