JP2012009063A - Centralized interrupt controller - Google Patents
Centralized interrupt controller Download PDFInfo
- Publication number
- JP2012009063A JP2012009063A JP2011192704A JP2011192704A JP2012009063A JP 2012009063 A JP2012009063 A JP 2012009063A JP 2011192704 A JP2011192704 A JP 2011192704A JP 2011192704 A JP2011192704 A JP 2011192704A JP 2012009063 A JP2012009063 A JP 2012009063A
- Authority
- JP
- Japan
- Prior art keywords
- interrupt
- apic
- message
- logic
- processing units
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Bus Control (AREA)
Abstract
Description
本発明は、割り込み又はインタラプト(interrupt)を制御する電子回路に関する。より詳細には、本発明は、複数の処理ユニットについて中央化されたアドバンスド・プログラマブル・インタラプト・コントローラ(Advanced Programmable Interrupt Controller)に関する。 The present invention relates to an electronic circuit for controlling interrupts or interrupts. More particularly, the present invention relates to an Advanced Programmable Interrupt Controller that is centralized for multiple processing units.
コンピュータシステムのパフォーマンスの基礎となる処理ユニットは、コンピュータシステムに接続されている周辺装置によりリクエストされる各種の断続的な“サービス”の制御を含むいくつかの処理を実行する。プリンタ、スキャナ、表示装置などのコンピュータアイテムを含む入出力(I/O)周辺装置は、適切な機能を保証するためホストプロセッサによる断続的なサービスの提供を要求する。例えば、サービスは、デーら送信、データキャプチャ及び/又は制御信号を含むかもしれない。 The processing unit underlying the performance of the computer system performs several processes including control of various intermittent “services” requested by peripheral devices connected to the computer system. Input / output (I / O) peripheral devices, including computer items such as printers, scanners, display devices, etc., require the host processor to provide intermittent service to ensure proper functionality. For example, a service may include data transmission, data capture and / or control signals.
各周辺装置は、典型的には、装置タイプに依存するだけでなく、それのプログラムされた使用にも依存する異なるサービス提供スケジュールを有している。ホストプロセッサは、1以上のバックグラウンドプログラムを実行しながら、各自の要求に従って装置間へのサービス提供を多重化する。サービスのホストをアドバイスするための少なくとも2つの方法、すなわち、ポーリング(polling)とインタラプト(interrupt)メソッドが使用される必要があった。前者の方法では、各周辺装置は、サービスリクエストを示すフラグがセットされているか確認するため、定期的にチェックがされる。後者の方法では、装置のサービスリクエストは、ホストを中断することが可能なインタラプトコントローラに転送され、それの現在のプログラムから特別なインタラプトサービスルーチンへの分岐が実行される。インタラプトメソッドは、ホストがポーリングのための不要なクロックサイクルを割り当てる必要がないため効果的である。本開示が着目するのはこの後者の方法である。 Each peripheral device typically has a different service delivery schedule that depends not only on the device type, but also on its programmed use. The host processor multiplexes the provision of services between devices according to its own request while executing one or more background programs. At least two methods for advising the service host had to be used: polling and interrupt methods. In the former method, each peripheral device is periodically checked to confirm whether a flag indicating a service request is set. In the latter method, the device service request is forwarded to an interrupt controller capable of interrupting the host and a branch from its current program to a special interrupt service routine is executed. The interrupt method is effective because the host does not need to allocate unnecessary clock cycles for polling. It is this latter method that the present disclosure focuses on.
マルチプロセッサコンピュータシステムの出現によって、プロセッサ間のインタラプトを動的に分散するインタラプト管理システムが実現されてきた。APIC(Advanced Programmable Interrupt Controller)は、マルチプロセッサインタラプト管理システムの一例である。多数のマルチプロセッサコンピュータシステムにおいて使用されるAPICインタラプト送信機構は、他の処理ユニット又は周辺装置からのインタラプトリクエストを検出し、当該インタラプトリクエストに対応する特定のサービスが実行される必要があることを1以上の処理ユニットに通知するのに利用されるかもしれない。APICインタラプト送信システムに関するさらなる詳細は、Carsonらによる米国特許出願第5,283,904号“Multiprocessor Programmable Interrupt Controller System”に記載されている。 With the advent of multiprocessor computer systems, interrupt management systems that dynamically distribute interrupts between processors have been realized. APIC (Advanced Programmable Interrupt Controller) is an example of a multiprocessor interrupt management system. The APIC interrupt transmission mechanism used in many multiprocessor computer systems detects an interrupt request from another processing unit or peripheral device and indicates that a specific service corresponding to the interrupt request needs to be executed. May be used to notify the above processing units. Further details regarding the APIC interrupt transmission system are described in US Pat. No. 5,283,904, “Multiprocessor Programmable Interrupt Controller System” by Carson et al.
多くの従来のAPICは、多数のハードウェアによる設計となっており、このため、多数のゲート(すなわち、ハイ・ゲート・カウント)を必要とする。多くのマルチプロセッサシステムでは、各コアはコア内部に完全に自己完結した自らの専用のAPICを有している。他のマルチプロセッサシステムでは、各コアは複数の論理プロセッサによる同時的なマルチスレッドコアである。このようなシステムでは、各論理プロセッサはAPICに関連付けされ、各マルチスレッドコアは複数のAPICインタラプト送信機構を有し、各機構は、自らのアーキテクチャ状態を維持し、一般に他のすべてのAPICの制御ロジックと同一な自らの制御ロジックを実現する。何れかのタイプのマルチプロセッサシステムについて、複数のAPICのためのダイエリアとリークパワーのコストは、望ましくないが大きなものとなりうる。さらに、マルチプロセッサシステムにおけるインタラプトを送信するため、複数のAPICの動作に関するダイナミックパワーコストがまた、望ましくは大きなものとなりうる。 Many conventional APICs are designed with a large number of hardware and therefore require a large number of gates (ie, high gate counts). In many multiprocessor systems, each core has its own dedicated APIC that is completely self-contained within the core. In other multiprocessor systems, each core is a simultaneous multithreaded core with multiple logical processors. In such a system, each logical processor is associated with an APIC, each multithreaded core has multiple APIC interrupt transmission mechanisms, each mechanism maintaining its own architectural state and generally controlling all other APICs. Realize own control logic that is the same as logic. For any type of multiprocessor system, the cost of die area and leakage power for multiple APICs can be undesirably large. Further, because of the transmission of interrupts in a multiprocessor system, the dynamic power cost associated with the operation of multiple APICs can also be desirably high.
本発明の課題は、複数の処理ユニットについて中央化されたアドバンスド・プログラマブル・インタラプト・コントローラを提供することである。 An object of the present invention is to provide an advanced programmable interrupt controller that is centralized for a plurality of processing units.
上記課題を解決するため、本発明の一態様は、複数の処理ユニットに対するインタラプトメッセージの提供のための優先化及び制御機能を実行し、前記複数の処理ユニットに共有される単一のロジックブロックと、前記ロジックブロックに接続され、前記ロジックブロックにより処理のため前記複数の処理ユニットのインタラプトイベントをスケジューリングするインタラプトシーケンサブロックと、前記複数の処理ユニットのそれぞれのアーキテクチャインタラプト状態情報を維持するストレージエリアと、入力インタラプトメッセージを受信し、前記メッセージからの情報を前記ストレージエリアに配置する1以上の入力メッセージキューと、出力インタラプトメッセージを送信する1以上の出力メッセージキューとを有する装置に関する。 In order to solve the above-described problem, an aspect of the present invention performs a priority and control function for providing an interrupt message for a plurality of processing units, and a single logic block shared by the plurality of processing units; An interrupt sequencer block connected to the logic block for scheduling interrupt events of the plurality of processing units for processing by the logic block; and a storage area for maintaining respective architecture interrupt state information of the plurality of processing units; An apparatus having one or more input message queues for receiving an input interrupt message and placing information from the message in the storage area and one or more output message queues for transmitting an output interrupt message .
本発明によると、複数の処理ユニットについて中央化されたアドバンスド・プログラマブル・インタラプト・コントローラを提供することができる。 According to the present invention, an advanced programmable interrupt controller can be provided that is centralized for a plurality of processing units.
以下において、複数の処理ユニットの中央化されたAPICのための方法、システム及び製造物の選択された各実施例が説明される。ここに記載される各機構は、シングルコア又はマルチコアマルチスレッドシステムにより利用されるかもしれない。以下において、プロセッサタイプ、マルチスレッド環境、システムコンフィギュレーション、並びにマルチシーケンサシステムのシーケンサの個数及びタイプなどの多数の具体的な詳細が、本発明のより完全な理解を提供するため与えられる。しかしながら、本発明がそのような具体的な詳細なく実現可能であるということは当業者に理解されるであろう。さらに、本発明を不要に不明りょうにしないように、周知の構成、回路などは詳細には説明されない。 In the following, selected embodiments of a method, system and product for centralized APIC of a plurality of processing units are described. Each mechanism described herein may be utilized by a single core or multi-core multi-thread system. In the following, numerous specific details such as processor type, multi-threaded environment, system configuration, and the number and type of sequencers in a multi-sequencer system are provided to provide a more complete understanding of the present invention. However, it will be understood by one skilled in the art that the present invention may be practiced without such specific details. Furthermore, well-known structures, circuits, etc., are not described in detail so as not to unnecessarily obscure the present invention.
図1は、中央化されたインタラプトコントローラ110を有するシステム100の少なくとも1つの実施例を示すブロック図である。システム100は、複数のコア104(0)〜104(n)を有する。図1の破線と楕円は、システム100が任意数n(n≧2)のコアを有することが可能であることを示す。当業者は、システムの他の実施例が、以下に説明されるように、単一の同時マルチスレッディング(SMT)コア(n=1となるように)を有することが可能であることを認識しているであろう。
FIG. 1 is a block diagram illustrating at least one embodiment of a
図1は、単一の中央化されたインタラプトコントローラ110が物理的にコア104(0)〜104(n)から分離されていることを示す。図1はまた、システム100の各コア104(0)〜104(n)がローカルインターコネクト102を介し中央化されたインタラプトコントローラ110に接続されていることを示す。中央化されたインタラプトコントローラ110は、ローカルインターコネクト102を介し各処理コアとインタフェースをとる。中央化されたインタラプトコントローラ110のハイレベルな目的は、複数のAPICの動作を、当該APICが従来のコア単位のAPICシステムと同様にパラレルに動作しているようにシステム100に見えるようにシリアルに模倣することである。
FIG. 1 shows that a single centralized
システム100の単一のコア104は、同時マルチスレッディング(SMT)、スイッチ・オン・イベントマルチスレッディング(SoeMT)及び/又はタイム多重化マルチスレッディング(TMUX)を含む各種マルチスレッディングスキームの何れかを実現することが可能である。複数のハードウェアスレッドコンテクスト(論理プロセッサ)からの命令が、何れかの時点において同時にプロセッサ304上で実行されると、それはSMTと呼ばれる。あるいは、シングル・コアマルチスレッディングシステムは、プロセッサパイプラインが複数のハードウェアスレッドコンテクスト間で多重化されるが、所与の時点では、1つのハードウェアスレッドコンテクストからの命令のみがパイプラインで実行されるSoeMTを実装するかもしれない。SoeMTについては、スレッドスイッチイベントがタイムベースである場合、それはTMUXとなる。SoeMT及びTMUXをサポートするシングルコアはマルチスレッディングをサポート可能であるが、それらは“シングルスレッド”コアと呼ばれる。なぜなら、1つのハードウェアスレッドコンテクストからの命令しか何れか所与の時点で実行されないためである。
A
各コア104は、シングルスレッドを実行可能な単一の処理ユニットであるかもしれない。あるいは、1以上のコア104が、当該コアしかある時点で1つのスレッドに対する命令を実行しないように、SoeMT又はTMUXマルチスレッディングを実行するマルチスレッディングコアであるかもしれない。このような実施例では、コア104は“処理ユニット”と呼ばれる。
Each
少なくとも1つの他の実施例では、各コア104は、SMTコアなどのマルチスレッドコアである。SMTコア104については、コア104の各論理プロセッサが“処理ユニット”と呼ばれる。ここで使用される“処理ユニット”とは、スレッドを実行可能な任意の物理的又は論理的ユニットであるかもしれない。各処理ユニットは、所与のスレッドについて実行される次の命令を決定するため、次命令ポインタロジックを有するかもしれない。また、処理ユニットは、“シーケンサ”と同義的に使用されるかもしれない。
In at least one other embodiment, each
何れかの実施例について(シングルスレッドコアとマルチスレッドコア)、各処理ユニットは、自らのインタラプトコントローラの機能のロジックが各処理ユニット内で自己完結せず、中央化されたインタラプトコントローラ110により提供されたとしても、当該機能に関連付けされる。何れかのコア104がSMTコアである場合、各コア104の各論理プロセッサは、ローカルインターコネクト102を介し中央化されたインタラプトコントローラ110に接続されるかもしれない。
For either embodiment (single thread core and multi-thread core), each processing unit is provided by a centralized interrupt
図3を参照するに、上述されるように、処理ユニット(又は“シーケンサ”)は、論理プロセッサ又は物理プロセッサであるかもしれない。図3において、論理処理ユニットと物理処理ユニットの間の相違が示されている。図3は、開示される技術を実行可能なマルチシーケンサシステムの実施例310と350の選択されたハードウェア構成を示すブロック図である。
Referring to FIG. 3, as described above, a processing unit (or “sequencer”) may be a logical processor or a physical processor. In FIG. 3, the difference between the logical processing unit and the physical processing unit is shown. FIG. 3 is a block diagram illustrating selected hardware configurations of
図3は、シングルコアマルチシーケンサマルチスレッディング環境310の選択されたハードウェア構成を示す。図3はまた、各シーケンサが独立した物理プロセッサコアとなっているマルチコアマルチスレッディング環境350の選択されたハードウェア構成を示す。
FIG. 3 shows a selected hardware configuration for a single core
シングルコアマルチスレッディング環境310では、単一の物理プロセッサ304は、オペレーティングシステム及びユーザプログラムに対してLP1〜LPnにより参照される複数の論理プロセッサ(図示せず)として見えるようにされる。各論理プロセッサLP1〜LPnはそれぞれ、アーキテクチャ状態AS1〜ASnの完全なセットを維持する。このアーキテクチャ状態は、少なくとも1つの実施例については、データレジスタ、セグメントレジスタ、コントロールレジスタ、デバッグレジスタ及びモデルに固有のレジスタの大部分を有する。論理プロセッサLP1〜LPnは、キャッシュ、実行ユニット、ブランチプレディクタ、コントロールロジック、バスなどの物理プロセッサ304の他の大部分のリソースを共有する。しかしながら、各論理プロセッサLP1〜LPnは、自らのAPICに関連付けされるかもしれない。
In single-
多数のハードウェア構成が共有されるが、マルチスレッディング環境310における各スレッドコンテクストは、次命令アドレスを独立に生成することが可能である(及び、例えば、命令キャッシュ、実行命令キャッシュ又はトレースキャッシュなどからのフェッチの実行が可能である)。このため、プロセッサ304は、複数の論理シーケンサが単一の物理フェッチ/デコードユニット322において実現可能であっても、各スレッドコンテクストの命令をフェッチする論理的に独立した次命令ポインタフェッチロジック320を有する。シングルコアマルチスレッディングの実施例では、“シーケンサ”という用語は、スレッドコンテクストの少なくとも次命令ポインタフェッチロジックと共に、当該スレッドコンテクストの関連付けされたアーキテクチャ状態312の少なくともいくつかを含む。シングルコアマルチスレッディングシステム310のシーケンサはシンメトリックである必要はないことに留意すべきである。例えば、同じ物理コアの2つのシングルコアマルチスレッディングシーケンサは、それぞれが維持するアーキテクチャ状態情報の情報量について異なるかもしれない。
Although multiple hardware configurations are shared, each thread context in the
このため、少なくとも1つの実施例では、マルチシーケンサシステム310は、同時マルチスレッディングをサポートするシングルコアプロセッサ304である。このような実施例について、各シーケンサは、同一の物理プロセッサコア304がすべてのスレッド命令を実行するが、自らの次命令ポインタフェッチロジックと自らのアーキテクチャ状態情報とを有する論理プロセッサである。このような実施例について、論理プロセッサは、シングルプロセッサコアの実行リソースが同時に実行されるスレッド間で共有される可能性があるが、自らのアーキテクチャ状態のバージョンを維持する。
Thus, in at least one embodiment,
図3はまた、マルチコアマルチスレッディング環境350の少なくとも1つの実施例を示す。このような環境350は、異なるスレッド/シュレッドの少なくとも一部の実行が同時に進行可能となるとなるように、異なるスレッド/シュレッドをそれぞれが実行可能な2以上の独立した物理プロセッサ304a〜304nを有する。各プロセッサ304a〜304nは、各自のスレッド又はシュレッドのための命令情報をフェッチするため、物理的に独立したフェッチユニット322を有する。各プロセッサ304a〜304nが単一のスレッド/シュレッドを実行する実施例では、フェッチ/デコードユニット322は、単一の次命令ポインタフェッチロジック320を実装する。しかしながら、各プロセッサ304a〜304nが複数のスレッドコンテクストをサポートする実施例では、フェッチ/デコードユニット322は、サポートされる各スレッドコンテクストについて異なる次命令ポインタフェッチロジック320を実装する。マルチプロセッサ環境350における追加的な次命令ポインタフェッチロジック320の任意的な性質が、図3において破線により示される。
FIG. 3 also illustrates at least one embodiment of a
図3に示されるマルチコアシステム350の少なくとも1つの実施例について、各シーケンサは、単一のチップパッケージ360にある複数のコア304a〜304nを有するプロセッサコア304であるかもしれない。各コア304a〜304nは、シングルスレッド又はマルチスレッドプロセッサコアであるかもしれない。チップパッケージ360は、マルチコアシステム350の図示されたシングルチップの実施例が単なる一例であることを示すため、図3において破線により示されている。他の実施例では、マルチコアシステムのプロセッサコアは別々のチップに常駐するかもしれない。すなわち、マルチコアシステムは、マルチソケットシンメトリックマルチプロセッシングシステムであるかもしれない。
For at least one embodiment of the
説明の簡単化のため、以下の説明ではマルチコアシステム350の実施例に着目する。しかしながら、この着目は、後述される機構がマルチコア又はシングルコアの何れのマルチシーケンサ環境においても実行可能であるという点で限定的なものと解されるべきでない。
For simplicity of explanation, the following description focuses on an embodiment of the
図1を参照するに、システム100のコア104(0)〜104(n)は、ローカルインターコネクト102を介し互いに接続可能であることは理解できる。ローカルインターコネクト102は、コア間で要求されるすべての通信機能(キャッシュスヌープなど)を提供するかもしれない。各コア104(0)〜104(n)は、ローカルインターコネクト102を介しインタラプト関連メッセージを送受信するための比較的小さなインタフェースブロックを有するかもしれない。一般に、コアのこのようなインタフェースは、それがインタラプト関連メッセージに関するアーキテクチャ状態を保持せず、またそれがここに記載される中央化されたインタラプトコントローラ110により実行される他の関連する機能を実行せず、又はインタラプトを優先させないため、比較的にシンプルなものである。
Referring to FIG. 1, it can be seen that the cores 104 (0)-104 (n) of the
コア104(0)〜104(n)は、シングルダイ150(0)上にあるかもしれない。少なくとも1つの実施例について、図1に示されるシステム100はさらに、任意的な追加的ダイを有するかもしれない。1以上の追加的なダイ(〜150(n))の任意的な性質は、図1において破線及び楕円により示される。図1は、他のダイ(150(n))上の処理ユニットからのインタラプトメッセージが、システムインターコネクト106を介し第1ダイ(150(0))に通信されることを示す。中央化されたインタラプトコントローラ110は、システムインターコネクト106を介し他の何れかのダイ(〜150(n))及び周辺のI/O装置114に接続される。
Cores 104 (0) -104 (n) may be on a single die 150 (0). For at least one embodiment, the
当業者は、図1に示されるダイ150の構成が、単なる一例に過ぎず、限定的なものと解されるべきでないことを認識するであろう。他の実施例では、例えば、150(0)と150(n)の両方の要素が、同一のシリコン部分に常駐し、同一のローカルインターコネクト102に接続されるかもしれない。他方、各コア104は、必ずしも同一のチップ上に常駐する必要はない。各コア104(0)〜104(n)及び/又はローカルインターコネクト102は、同一のダイ150上に常駐しないかもしれない。
Those skilled in the art will recognize that the configuration of the die 150 shown in FIG. 1 is merely an example and should not be construed as limiting. In other embodiments, for example, both 150 (0) and 150 (n) elements may reside in the same silicon portion and be connected to the same
システム100の各コア104(0)〜104(n)はさらに、ローカルインターコネクト102を介し他のシステムインタフェースロジック112に接続されるかもしれない。このようなロジック112は、例えば、シーケンサがシステムインターコネクトを介し他のシステム要素とインタフェースをとることを可能にするキャッシュコヒーレンスロジック又は他のインタフェースロジックなどを有するかもしれない。他のシステムインタフェースロジック112はさらに、システムインターコネクト106を介し他のシステム要素116(メモリなど)に接続されるかもしれない。
Each core 104 (0) -104 (n) of the
図2は、中央化されたインタラプトコントローラ110の少なくとも1つの実施例のさらなる詳細を示すブロック図である。一般に、図2は、中央化されたインタラプトコントローラ110がシステムのコア(図1のコア104(0)〜104(n)など)とは物理的に分離されているが、中央化されたインタラプトコントローラ110は各シーケンサに関連付けされる各APICインスタンスの完全なアーキテクチャ状態を維持することを示す。中央化されたインタラプトコントローラ110は、従来システムのコア単位の専用のAPICにより通常は処理されるインタラプトキューイング及び優先付け機能のすべてを管理する。以下に詳細に説明されるように、中央化されたインタラプトコントローラ110はまた、システムインターコネクト106に接続されるシステムの残りとシーケンサとの間のファイアウォールとして機能するかもしれない。
FIG. 2 is a block diagram illustrating further details of at least one embodiment of the centralized interrupt
図2は、中央化されたインタラプトコントローラ110が中央化されたAPIC状態202を有することを示す。APIC状態202は、典型的なAPIC処理に通常関連付けされるアーキテクチャ状態を含む。すなわち、APIC処理は、アプリケーションプログラマにはアーキテクチャ的に可視的な構成であり、このようなインタフェースは本開示により変更されることを意図したものでない。システムが従来のAPICハードウェア(すなわち、各処理ユニットについて1つの自己完結したAPIC)又はここに記載される中央化されたインタラプトコントローラを有するか否かに関係なく、少なくとも1つの実施例について、このようなハードウェア設計の選択はアプリケーションプログラマに透過であるべきことが予期される。このように、同時にオペレーティングシステムベンダ及びアプリケーションプログラマが期待する同一のアーキテクチャインタフェースを維持しながら、面積、ダイナミックパワー及びパワーリークの各コストを、システムの単一の中央化されたインタラプトコントローラ110を利用することにより低減することができる。
FIG. 2 shows that the centralized interrupt
このため、ブロック202におけるAPIC状態情報の中央レポジトリとして維持されるアーキテクチャ状態は、一般には従来システムのおける各APICについて維持される状態となる。例えば、システムに8つのシーケンサがある場合、中央化されたAPIC状態202は、各エントリが従来システムのシーケンサについて維持されるアーキテクチャAPIC状態を反映した8つのエントリのアレイを含むかもしれない。(以下の図4の説明は、各エントリがまた特定のマイクロアーキテクチャ状態を含むことを示す。)
少なくとも1つの実施例について、中央化されたAPIC状態202は、レジスタファイル又はアレイなどの単一のメモリ記憶領域として実現される。レジスタファイル構成は、ランダムロジックとしてコア単位APIC状態を実現した従来アプローチより良好なエリア効率を可能にするかもしれない。
For this reason, the architectural state maintained as the central repository of APIC state information in
For at least one embodiment, the
一般に、中央化されたインタラプトコントローラ110は、ローカルインターコネクト102及び/又はシステムインターコネクト106を介し受信されるインタラプトメッセージの受信を監視し、レジスタファイル202の適切なエントリに関連するメッセージを格納する。少なくとも1つの実施例では、これは、入力メッセージのデスティネーションアドレスを監視し、当該デスティネーションアドレスに係るAPICインスタンスエントリにメッセージを格納することにより実現される。このような機能は、以下で詳細に説明されるように、入力メッセージキュー204、206により実行されるかもしれない。
In general, the centralized interrupt
同様に、中央化されたインタラプトコントローラ110は、出力インタラプトメッセージの生成を監視し、このようなメッセージがサービス及び送信されるまで、レジスタファイル202の適切なエントリにメッセージを格納するかもしれない。少なくとも1つの実施例では、これは、出力メッセージのソースアドレスを監視し、ソースアドレスに係るAPICインスタンスエントリにメッセージを格納することにより実現される。このような機能は、以下で詳細に説明されるように、出力メッセージシーケンス208、210により実行されるかもしれない。
Similarly, the centralized interrupt
一般に、中央化されたインタラプトコントローラ110のインタラプトシーケンサブロック214は、その後、サービスのため中央化されたAPIC状態202に反映されるように、保留中のインタラプトメッセージをスケジューリングするかもしれない。以下で詳細に説明されるように、これは、シーケンサの何れの保留中のインタラプト動作も繰り返し無視されないように、公平性スキームに従って実現されるかもしれない。インタラプトシーケンサブロック214は、サービスを実行するため、APICインタラプト提供ロジック212を呼び出すかもしれない。
In general, the interrupt sequencer block 214 of the centralized interrupt
図2は、中央化されたインタラプトコントローラ110がAPICインタラプト提供ロジック212を有することを示す。システムの各シーケンサのAPICロジックを複製するのでなく(SMTコアの各論理プロセッサ又は各シングルスレッドコアなど)、中央化されたインタラプトコントローラ110は、システムのすべてのシーケンサについてインタラプトをサービスするため、APICロジック212の単一の冗長でないコピーを提供する。
FIG. 2 shows that the centralized interrupt
例えば、システム(図1のシステム100など)が、それぞれが8つの同時的なSMTスレッドをサポートする4つのコアを有する場合、システムは従来はAPICロジック212の32このコピーを必要とする。他方、図2に示される中央化されたインタラプトコントローラ110は、APICロジック212の単一のコピーを利用して、所与の時点でアクティブな32個のスレッドのすべてにインタラプトコントローラのサービスを提供する。
For example, if a system (such as
システムの複数のシーケンサが同時に保留中のインタラプト動作を有する可能性があるため、APICロジック212は、複数のシーケンサから競合を受けるかもしれない。このため、中央化されたインタラプトコントローラ110は、インタラプトシーケンサブロック214を有する。インタラプトシーケンサブロック214は、APICロジック212の各シーケンサに公平なアクセスを提供するように、システムのすべてのインタラプトのサービスをシーケンス処理する。中央化されたインタラプトコントローラ110のインタラプトシーケンサブロック214は、単一のAPICロジックブロック212へのアクセスを制御する。
The APIC logic 212 may receive contention from multiple sequencers because multiple sequencers in the system may have pending interrupt operations at the same time. For this reason, the centralized interrupt
このため、インタラプトシーケンサブロック214は、共有されるAPICロジック212へのシーケンサのアクセスを制御する。この機能は、各シーケンサがAPICロジックへの直接的なアドホックアクセスを有するように、各シーケンサの専用のAPICロジックブロックを提供する従来のAPICシステムと対照的なものである。シングルAPICロジックブロック212は、システムの各処理ユニットなどのインタラプト優先化に関するAPICの完全なアーキテクチャ要求を提供するかもしれない。 Thus, interrupt sequencer block 214 controls sequencer access to shared APIC logic 212. This feature is in contrast to conventional APIC systems that provide a dedicated APIC logic block for each sequencer so that each sequencer has direct ad hoc access to the APIC logic. A single APIC logic block 212 may provide APIC's complete architectural requirements for interrupt prioritization, such as each processing unit of the system.
システムの何れかの処理ユニットについて、APICを通過するインタラプトのソース/デスティネーションは、他の処理ユニット又は周辺装置とすることが可能である。イントラダイ処理ユニットのインタラプトは、ローカルインターコネクト102を介し中央化されたインタラプトコントローラ110により提供される。他のダイ上の周辺装置又は処理ユニットに対するインタラプトは、システムインターコネクト106を介し提供される。
For any processing unit in the system, the source / destination of the interrupt passing through the APIC can be another processing unit or a peripheral device. Intra-die processing unit interrupts are provided by a centralized interrupt
図2は、ローカルインターコネクト102及びシステムインターコネクト106を介し入出力インタラプトメッセージを処理するため、入力システムメッセージキュー204、入力ローカルメッセージキュー206、出力ローカルメッセージキュー208及び出力システムメッセージキュー210の4つのメッセージキューを有することを示す。入力ローカルメッセージキュー206と出力ローカルメッセージキュー208は、ローカルインターコネクト102に接続され、入力システムメッセージキュー204と出力システムメッセージキュー210は、システムインターコネクト106に接続される。各キュー204、206、208、210は、制御ロジックと共にデータストレージを有するミニコントローラキューである。
FIG. 2 illustrates four message queues, input
キュー204、206、208、210の動作のさらなる説明が、図1、2及び4を参照してなされる。図4は、中央化されたAPIC状態202の少なくとも1つの実施例の詳細な図を提供する。図4は、中央化されたAPIC状態202が、アーキテクチャ状態302と共にマイクロアーキテクチャ状態301、303の両方を有することを示す。上述されるように、各シーケンサ104(0)〜104(n)について維持されるアーキテクチャ状態302は、シーケンサに従来関連付けされるAPIC状態を反映する。アーキテクチャAPIC状態302の各エントリ410は、ここでは“APICインスタンス”と呼ばれる。例えば、APICンスタンスの入力インタラプトメッセージは、当該インスタンスに係るアーキテクチャAPIC状態302のエントリ410に格納されるかもしれない。少なくとも1つの実施例について、240までの入力インタラプトメッセージが、APICインスタンスのエントリ410に維持されるかもしれない。
A further description of the operation of the
アーキテクチャ状態302に加えて、中央化されたAPIC状態202は、一般的なマイクロアーキテクチャ状態303と共に各APICインスタンス410に係るマイクロアーキテクチャ状態301を有するかもしれない。一般的なマイクロアーキテクチャ状態303は、インタラプトシーケンサブロック214(図2を参照されたい)がAPICロジック212(図2を参照されたい)にアクセスする必要があるのは何れのシーケンサであるか決定するのに役立つためのスコアボード304を有するかもしれない。少なくとも1つの実施例では、スコアボード304は、システムの各シーケンサのためのビットを維持するかもしれない。シーケンサのビットの値は、APICロジック212が要求される何れかの保留中の動作をシーケンサが有しているか示すかもしれない。少なくとも1つの実施例では、インタラプトシーケンサブロック214(図2)がAPICロジック212の注意を何れのシーケンサが必要とするか容易かつ迅速に確認することが可能となるように、スコアボード304がアトミックに読み込まれるかもしれない。
In addition to the
インタラプトシーケンサブロック214の1つの特徴は、APICロジック212へのアクセスを公平に可能にすることであるが、スコアボード304は、インタラプトシーケンサブロック214がAPICロジック212の処理を同時には必要としないシーケンサの処理リソースを浪費することを要求することなく、公平性スキームが利用されることを可能にする。このため、スコアボードは、入力メッセージと上記発行されたリクエストの処理の現在の状態とに基づき、何れのAPICインスタンスが実行するべき作業を有しているか追跡する。インタラプトシーケンサブロック214は、アクティブなAPICインスタンスについて中央化されたAPIC状態202から現在の状態を読み込み、(当該APICインスタンス410のアーキテクチャ状態302とマイクロアーキテクチャ状態301の両方に記録されるような)現在状態に適したアクションをとり、その後に(スコアボード304のビットにより示されるような)保留中の作業による次のAPICインスタンスについて当該処理を繰り返す。
One feature of the interrupt sequencer block 214 is that it allows fair access to the APIC logic 212, but the
入力インタラプトメッセージがローカルインターコネクト102を介し同一ダイ上の他のシーケンサに向けて投入されると、入力ローカルメッセージキュー206がこのメッセージを受信し、それの送信先を決定する。インタラプトメッセージは、シーケンサの1つ、多数又はすべてを対象とすることが可能であり、又はその何れも対象としないこともある。キュー206は、インタラプトをキューアップするため、対象とされる各シーケンサのアーキテクチャ状態エントリ(図4の410など)に書き込むかもしれない。このようなケースでは、インタラプト動作が保留され、シングルAPICロジックブロック212のサービスが対象となるシーケンサに必要とされていることを示すため、スコアボードエントリがすでに設定されていない場合、キュー206はまた対象とされるシーケンサのスコアボードエントリを設定する。
When an input interrupt message is submitted to another sequencer on the same die via the
しかしながら、図4は、いくつかのインタラプトが中央化されたAPIC状態202においてキューアップされることなく、入力ローカルメッセージキュー206から出力キュー208、210に直接的にバイパスされるかもしれないことを示す。これは、例えば、特定のプロセッサに具体的にはアドレス指定されていないブロードキャストメッセージについて起こるかもしれない。図4は、同様のバイパス処理が入力システムメッセージキュー204(後述される)からもまた行われることを示す。
However, FIG. 4 shows that some interrupts may be bypassed directly from the input
キュー206について上述されたものと同様の処理がまた、入力インタラプトメッセージがシステムインターコネクト106を介し(他のダイ上のI/O装置又はシーケンサから)シーケンサ104(0)〜104(n)の1つを対象として投入されるときに行われるかもしれない。入力システムメッセージキュー204は、メッセージを受信し、それの送信先を決定する。キュー206は、インタラプトをキューアップし、何れか対象とされたシーケンサのスコアボードエントリ412を更新するため、対象とされる各シーケンサのアーキテクチャ状態エントリ410に書き込む。もちろん、入力メッセージは上述されるようにバイパスされてもよい。
A process similar to that described above for
メッセージキュー204、206、208、210の1以上が、入出力メッセージのファイアウォール機能を実装してもよい。このファイアウォール機能に関して、図2が図1と共に説明される。
One or more of the
入力メッセージに関して、入力システムメッセージキュー204は、中央化されたインタラプトコントローラ110に係るダイ150上のシーケンサを対象としないメッセージの不要な処理を回避するため、インタラプトファイアウォールとして機能するかもしれない。図1に示されるように、システム100は複数のマルチシーケンサダイ150(0)〜150(n)を有するかもしれない。特定のダイのシーケンサにより生成されるインタラプトは、システムインターコネクト106を介し他のダイに送信されるかもしれない。同様に、周辺装置114により生成されるインタラプトは、システムインターコネクト106を介しダイに送信されるかもしれない。
For input messages, the input
ダイ150の中央化されたインタラプトコントローラ110(及び入力システムメッセージキュー204)は、このようなメッセージの送信先アドレスがダイ150上の何れかのシーケンサ(コア又は論理プロセッサなど)を有しているか判断するかもしれない。メッセージが当該ダイに係るローカルインターコネクト102上の何れかのコア又は論理プロセッサを対象としていない場合、入力システムメッセージキュー204は、ローカルインターコネクト102上のシーケンサの何れかにメッセージを転送することを拒否する。このように、入力システムメッセージキューは、単に何れのアクションも不要であると決定するため、上記コア/スレッドの“ウェイキング(waking)”を回避する。これは、電力を節約し、ローカルインターコネクト102の帯域幅を節約する。なぜなら、それは複数の各シーケンサがメッセージがそれらを対象としたものでないことを決定するためだけに、パワーセービング状態からウェイクアップすることを不要にするためである。
The centralized interrupt controller 110 (and input system message queue 204) of the
1以上の論理プロセッサがパワーセービング状態にない場合でさえ、入力システムメッセージキュー204は、入力インタラプトメッセージがそれらの側でアクションを必要としないことを単に決定するため、論理プロセッサが現在実行している作業から論理プロセッサをインタラプトしないように、依然としてファイアウォール機能を実行するかもしれない。
Even if one or more logical processors are not in a power saving state, the input
少なくとも1つの実施例について、ファイアウォールはまた出力メッセージに対して実装されるかもしれない。これは、出力システムメッセージと共に、少なくとも1つの実施例については、出力ローカルメッセージについても成り立つかもしれない。少なくとも1つの実施例について、ローカルメッセージのファイアウォール構成は、ローカルインターコネクト102上の各メッセージがすべてのシーケンサに配信されることを要求するのでなく、対象とされるインタラプトメッセージが特定のシーケンサに提供されることを可能にする構成をサポートするローカルインターコネクト102を有するシステムについてのみ実現される。このようなケースでは、出力ローカルメッセージキュー208は、ローカルインターコネクト102を介し各インタラプトメッセージをユニキャスト又はマルチキャストメッセージとして、当該メッセージにより対象とされるシーケンサのみに送信するかもしれない。このように、対象とされていないシーケンサは、それらのアクションが当該インタラプトメッセージに必要とされていないことを決定するため、それらの処理をインタラプトする必要はない。出力システムメッセージは、それらが対象とされていないエンティティに不必要に送信されないように、同様に対象とされるかもしれない。
For at least one embodiment, a firewall may also be implemented for outgoing messages. This may be true for output local messages as well as output system messages for at least one embodiment. For at least one embodiment, the local message firewall configuration does not require that each message on the
図2は、入力インタラプトメッセージが入力メッセージキュー204、206により中央化されたAPIC状態202に配置された後、インタラプトシーケンサブロック214が、システムのAPIC処理を実行するため、APICロジック212(図2を参照されたい)の1つのコピーへのシステムの各シーケンサ間への公平なアクセスを提供するかもしれないことを示す。インタラプトシーケンサブロック214は、実際には、APIC状態202をシーケンシャルにトラバースし、それをひつようとする次のシーケンスのAPICロジック212へのアクセスを提供することによって、この公平性スキームを実現するかもしれない。インタラプトシーケンサブロック214により実現される公平性スキームは、各シーケンサがインタラプト提供ブロックへの等しいアクセスを有することを許可するかもしれない。
FIG. 2 illustrates that after an input interrupt message is placed in the
少なくとも1つの実施例について、APIC状態202のエントリを介した上記概念的なシーケンシャルなステッピングは、スコアボード(図4の304を参照されたい)を利用することによってより効率的なものとなり、スコアボードは、何れのアクティブなシーケンサが次にAPICサービスを必要とするか決定するため、アトミックにクエリされるかもしれない。少なくとも1つの実施例について、図5に関連してより詳細に以下で説明される方法に従って、シーケンシャルなアクセスが制御可能である。
For at least one embodiment, the conceptual sequential stepping via the
図5は、システムのAPIC処理を実行するために、APICロジック212(図2を参照されたい)の1つのコピーへのシステムの各シーケンサへの公平なアクセスを提供するため、インタラプトシーケンサブロック214(図2を参照されたい)の少なくとも1つの実施例により利用される方法500を示す状態図である。図5の以下の説明は、図2及び4を参照してなされる。
FIG. 5 illustrates an interrupt sequencer block 214 (to provide equitable access to each sequencer of the system to one copy of APIC logic 212 (see FIG. 2) to perform the APIC processing of the system. FIG. 3 is a state diagram illustrating a
全体として、図5は、インタラプトシーケンサブロック214がアクティブなAPICインスタンスの中央化されたAPIC状態2020から現在状態を読み取り、現在状態に適したアクションをとり、保留中の作業を有する次のAPICインスタンスについて当該処理を繰り返すことを示す。 Overall, FIG. 5 shows that the interrupt sequencer block 214 reads the current state from the centralized APIC state 2020 of the active APIC instance, takes action appropriate to the current state, and has the next APIC instance with pending work. Indicates that the process is repeated.
図5は、方法500が状態502でスタートすることを示す。状態502において、インタラプトシーケンサブロック214は、何れのAPICインスタンスが実行すべき作業を有しているか決定するため、スコアボード304を照会する。上述されるように、各APICインスタンスについてスコアボード304に1つのエントリ412が存在するかもしれない。エントリ412は、少なくとも1つの実施例では、1ビットエントリであるかもしれない。ビット412は、入力メッセージが当該APICインスタンスの中央化されたAPIC状態202に書き込まれるときに設定されるかもしれない。
FIG. 5 shows that the
もちろん、当業者は、スコアボード304がすべての実施例に必ずしも存在する必要がないパフォーマンスエンハンスメントであることを認識するであろう。少なくとも他の1つの実施例について、例えば、インタラプトシーケンサブロック214は、何れのアクティブなAPICインスタンスがサービスを必要としているか決定するため、順番に(シーケンシャルなど)中央化されたAPIC状態202の各エントリをトラバースするかもしれない。
Of course, those skilled in the art will recognize that the
スコアボード304の何れのビットも設定されていない場合、何れのシーケンサも保留中のAPICイベントを有していない。このようなケースでは、方法500は状態502から508に移行する。状態508において、方法500は、ロジック212が必要としない間、APICロジックブロック212の少なくとも一部を省電力にパワーダウンするかもしれない。パワーダウンが完了すると、方法500は、新たなAPIC動作が検出されるか判断するため、状態502に移行する。
If none of the
状態502において、新たな動作が検出されず(すなわち、スコアボード304の何れのエントリも設定されていない)、APICロジック212がすでにパワーダウンされていた場合、方法500は、新たなAPIC動作を待機するため、状態502から506に移行するかもしれない。
In
待機状態506の期間中、方法500は、何れかのAPICインスタンスが保留中有のAPIC作業を取得したか決定するため、スコアボード304のコンテンツを定期的に評価するかもしれない。スコアボード304のコンテンツに反映されるような入力APICメッセージは、状態506から502への移行を引き起こす。入力ローカルメッセージキュー204及び入力システムメッセージキュー206の上記説明は、アーキテクチャAPIC状態302と、少なくとも一部の実施例では、スコアボード304のエントリが、保留中のAPIC作業をAPICインスタンスが取得したことを反映するようどのように更新されるか説明する。
During the wait state 506, the
方法500は、状態502において、スコアボード304の何れかのエントリ412が設定されている場合、少なくとも1つのAPICインスタンスが実行すべき保留中のAPIC作業を有していると判断するかもしれない。このようなエントリが複数設定されている場合、インタラプトシーケンサブロック214は、何れのAPICインスタンスがAPICロジック212によりサービスを次に受け付けるか決定する。少なくとも1つの実施例では、インタラプトシーケンサブロック214は、設定されている次のスコアボードエントリを選択することによって、上記決定を実行する。このように、インタラプトシーケンサブロック214は、APICロジック212へのアクセスのため、次にアクティブなAPICインスタンスをシーケンシャルに選択することによって、公平性スキームを課す。
状態502においてAPICインスタンスを選択すると、方法500はブロック502から504に移行する。ブロック504において、インタラプトシーケンサブロック214は、中央化されたAPIC状態302から選択されたバーチャルAPICのエントリ410を読み込む。このように、インタラプトシーケンサブロック214は、選択されたAPICインスタンスについて何れのAPICイベントが保留中であるか決定する。複数のAPICイベントが保留中であるかもしれず、APICエントリ410に反映されているかもしれない。状態504の各繰り返し中、APICインスタンスに1つの保留中のイベントしか処理されない。このため、ラウンドロビンタイプのシーケンシャルな公平性スキームが維持されるかもしれない。
Upon selecting an APIC instance in
同一のアクティブなAPICインスタンスについて複数の保留中のインタラプトイベントから選択するため、インタラプトシーケンサブロック214は、状態504において優先化処理を実行する。このような優先化処理は、従来システムの専用APICにより実行される優先化スキームをエミュレートするかもしれない。例えば、APICインタラプトは、重要性の各クラスに入るよう規定される。各APICインスタンスのアーキテクチャ状態エントリ410(図4)は、少なくとも1つの実施例では、論理プロセッサ毎に240までの保留中のインタラプトを保持するかもしれない。これらは、16の重要性のクラスに属することが可能であり、16の優先化されたグループに分類される。クラス16〜31のインタラプトは、クラス32〜47のものより高い優先度を有する。インタラプトクラス番号が低いほど、インタラプト優先度は高くなる。このため、インタラプトシーケンサブロック214は、APICインスタンスの240ビットを観察し、複数設定されている場合、状態504において1つのイベントのみを抽出する(APICの既存のアーキテクチャ優先化ルールに基づき)。少なくとも1つの実施例では、インタラプトシーケンサブロック214は、この優先化を実行するためAPICロジック212を呼び出す。 In order to select from multiple pending interrupt events for the same active APIC instance, interrupt sequencer block 214 performs prioritization in state 504. Such prioritization processing may emulate a prioritization scheme performed by a dedicated APIC of a conventional system. For example, APIC interrupts are defined to fall into each class of importance. The architecture state entry 410 (FIG. 4) for each APIC instance may hold up to 240 pending interrupts per logical processor in at least one embodiment. These can belong to 16 importance classes and fall into 16 prioritized groups. Class 16-31 interrupts have higher priority than classes 32-47. The lower the interrupt class number, the higher the interrupt priority. Thus, the interrupt sequencer block 214 observes 240 bits of the APIC instance and, if multiple, sets only one event in the state 504 (based on APIC's existing architecture priority rules). In at least one embodiment, interrupt sequencer block 214 calls APIC logic 212 to perform this prioritization.
その後、方法500は、状態504において、選択されたイベントに適したアクションをスケジューリング又は実行する。例えば、このイベントは、出力メッセージキューの1つから以前に送信されたインタラプトメッセージに対するアクノリッジメントを待機していることであるかもしれない。あるいは、イベントは、出力インタラプトメッセージが送信される必要があることであるかもしれない。または、シーケンサの1つについて、入力インタラプトメッセージ又はアクノリッジメントがサービスされる必要があるかもしれない。インタラプトシーケンサブロック214は、状態504において、イベントのサービスルためAPICロジック212を起動するかもしれない。
Thereafter, the
アクノリッジメントが待機されている場合、インタラプトシーケンサブロック214は、このようなアクノリッジメントが待機されていることを判断するため、マイクロアーキテクチャ状態303に照会する。そうである場合、インタラプトシーケンサブロック214は、状態504においてアクノリッジメントが受信されたか判断するため、APIC状態202の適切なエントリを照会する。そうでない場合、次のシーケンサのイベントを処理するように、状態504から抜け出す。
If an acknowledgment is waiting, interrupt sequencer block 214 queries microarchitecture
アクノリッジメントが受信された場合、アクノリッジメントがもはや待機されていないことを反映するため、マイクロアーキテクチャ状態303が更新される。インタラプトシーケンサブロック214はまた、状態502に戻る前にAPICインスタンスのスコアボード304のエントリをクリアするかもしれない。少なくとも1つの実施例では、スコアボードのエントリ304は、現在サービスされているイベントがAPICインスタンスの保留中のイベントのみである場合に限ってクリアされる。
If an acknowledgment is received, the
他の例では、状態504においてサービスされるイベントがインタラプトメッセージの送信である場合(ローカルインターコネクト102又はシステムインターコネクト106を介した)、そのようなイベントは状態504において以下のようにサービスされる。インタラプトシーケンサブロック214は、現在サービスされている論理プロセッサのAPICインスタンスから、上述した優先化処理が与えられた場合に何れの出力メッセージが提供される必要があるか判断する。その後、出力メッセージは、所望される送信先アドレスと共に、適切な出力メッセージキュー(出力ローカルメッセージキュー208又は出力システムメッセージキュー210)への送信のためスケジューリングされる。
In another example, if the event serviced in state 504 is a transmission of an interrupt message (via the
出力メッセージが、アクノリッジメントの受信などの追加的なサービスをイベントが完全にサービスされる前に必要とする場合、中央化されたコントローラ110は、さらなるサービスが当該イベントに必要とされることを示すため、マイクロアーキテクチャ状態303を更新するかもしれない。(ローカルインターコネクト102又はシステムインターコネクト106を介した入力アクノリッジメントは、入力メッセージキュー204、206においてキューアップされ、最終的には、関連するAPICインスタンスの状態504の次の繰り返しで処理可能となるように、中央化されたAPIC状態202に更新されるかもしれない。その後、本方法は状態504から502に移行する。
If the outgoing message requires additional services, such as receipt of an acknowledgment, before the event is fully serviced, the
図6は、開示された技術を実行可能なマルチスレッド計算システム900の少なくとも1つの実施例を示す。計算システム900は、少なくとも1つのプロセッサコア904(0)とメモリシステム940とを有する。システム900は、破線及び楕円により示されるような追加的なコア(〜904(n))を有するかもしれない。
FIG. 6 illustrates at least one embodiment of a
メモリシステム940は、命令キャッシュ944及び/又はデータキャッシュ942などの1以上の小型で相対的に高速なキャッシュと共に、大型で相対的に低速なメモリストレージ902を有するかもしれない。メモリストレージ902は、プロセッサ904の動作を制御するための命令910とデータ912とを格納するかもしれない。
メモリシステム940は、メモリの一般化された表現として意図され、ハードドライブ、CD−ROM、RAM(Random Access Memory)、DRAM(Dynamic RAM)、SRAM(Static RAM)、フラッシュメモリ及び関連する回路などの各種形態のメモリを有するかもしれない。メモリシステム940は、プロセッサ904により実行可能なデータ信号により表される命令910及び/又はデータ912を格納するかもしれない。命令910及び/又はデータ912は、ここに記載された技術の何れか又はすべてを実行するためのコード及び/又はデータを有するかもしれない。
The
図6は、各プロセッサ904が中央化されたインタラプトコントローラ110に接続されていることを示す。各プロセッサ904は、命令情報を実行コア930に供給するフロントエンド920を有するかもしれない。フェッチされた命令情報は、実行コア930による実行を待機するため、キャッシュ225にバッファされるかもしれない。フロントエンド920は、命令情報を実行コア930にプログラム順に供給するかもしれない。少なくとも1つの実施例では、フロントエンド920は、実行される次の命令を決定するフェッチ/デコードユニット322を有する。システム900の少なくとも1つの実施例では、フェッチ/デコードユニット322は、単一の次命令ポインタフェッチロジック320を有するかもしれない。しかしながら、各プロセッサ904が複数のスレッドコンテクストをサポートする実施例では、フェッチ/デコードユニット322は、サポートされる各スレッドコンテクストについて異なる次命令ポインタフェッチロジック320を実装する。マルチプロセッサ環境において追加的な次命令ポインタフェッチロジック320の任意的な性質は、図6の破線により示される。
FIG. 6 shows that each
ここに記載された方法の各実施例は、ハードウェア、ハードウェアエミュレーションソフトウェア若しくは他のソフトウェア、ファームウェア又はこのような実現アプローチの組み合わせにより実現可能である。本発明の各実施例は、少なくとも1つのプロセッサ、データストレージシステム(揮発性及び不揮発性メモリ及び/又はストレージ要素を含む)、少なくとも1つの入力装置及び少なくとも1つの出力装置を有するプログラマブルシステムについて実現可能である。このアプリケーションのため、処理システムは、デジタル信号プロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)、マイクロプロセッサなどのプロセッサを有する任意のシステムを含む。 Each embodiment of the method described herein may be implemented by hardware, hardware emulation software or other software, firmware, or a combination of such implementation approaches. Embodiments of the present invention can be implemented for a programmable system having at least one processor, a data storage system (including volatile and non-volatile memory and / or storage elements), at least one input device and at least one output device. It is. For this application, a processing system includes any system having a processor such as a digital signal processor (DSP), a microcontroller, an application specific integrated circuit (ASIC), or a microprocessor.
プログラムは、汎用又は特定用途のプログラム可能な処理システムにより可読なストレージメディア又は装置(ハードディスクドライブ、フロッピー(登録商標)ディスクドライブ、ROM(Read Only Memory)、CD−ROM装置、フラッシュメモリ装置、DVD(Digital Versatile Disk)、又は他のストレージ装置など)に格納されてもよい。処理システムのプロセッサにアクセス可能な命令は、ストレージメディア又は装置がここに記載された手順を実行するため処理システムにより読み込まれると、処理システムを設定及び実行する。本発明の各実施例はまた、処理システムにより使用するため構成されたマシーン可読ストレージ媒体として実現されると考えられ、そのように構成されたストレージメディアは、処理システムにここに記載された機能を実行するため特定かつ所定の方法により実行させる。 The program may be a storage medium or device readable by a general purpose or special purpose programmable processing system (hard disk drive, floppy disk drive, ROM (Read Only Memory), CD-ROM device, flash memory device, DVD ( (Digital Versatile Disk) or other storage device). The instructions accessible to the processor of the processing system configure and execute the processing system when the storage medium or device is read by the processing system to perform the procedures described herein. Each embodiment of the present invention is also considered to be implemented as a machine-readable storage medium configured for use by a processing system, and the storage medium configured as such provides the functionality described herein to the processing system. It is executed by a specific and predetermined method for execution.
一例となるシステム900は、他のシステム(他のマイクロプロセッサ、エンジニアリングワークステーション、携帯情報端末、他の携帯装置、セットトップボックスなどを含む)がまた利用可能であるが、インテルコーポレイションから利用可能なPentium(登録商標)、Pentium(登録商標)Pro、Pentium(登録商標)II、Pentium(登録商標)III、Pentium(登録商標)4、Itanium(登録商標)、Itanium(登録商標)2マイクロプロセッサ、Mobile Intel(登録商標)Pentium(登録商標)III Processor−M、Mobile Intel(登録商標)Pentium(登録商標)4 Processor−Mに基づく処理システムを表す。一実施例では、一例となるシステムは、他のオペレーティングシステム及びグラフィカルユーザインタフェースなどがまた利用可能であるが、マイクロソフトコーポレイションから利用可能なWindows(登録商標)オペレーティングシステムのバージョンを実行するかもしれない。
The
本発明の特定の実施例が図示及び説明されたが、添付した請求項の範囲から逸脱することなく各種変更及び改良が可能であることは当業者に明らかであろう。例えば、中央化されたAPIC状態202の少なくとも1つの実施例は、シングルリードポートとシングルライトポートのみを含むかもしれない。このような実施例では、入力システムメッセージキュー204、入力ローカルメッセージキュー206及びインタラプトシーケンサブロック214は、中央化されたAPIC状態202へのアクセスを取得するため、アービトレーションロジック(図示せず)を利用するかもしれない。
While particular embodiments of the present invention have been illustrated and described, it would be obvious to those skilled in the art that various changes and modifications can be made without departing from the scope of the appended claims. For example, at least one embodiment of the
また、例えば、図5に示された方法500の少なくとも1つの実施例は状態508を排除するかもしれない。当業者は、状態508がパフォーマンスエンハンスメント(パワーセービング)を提供するだけであり、添付した請求項の発明の実施例には必要でないことを認識するであろう。
Also, for example, at least one embodiment of the
また、例えば、上述した中央化されたインタラプトコントローラ110の少なくとも1つの実施例は、スコアボード304を排除してもよいということが上述された。このような実施例では、インタラプトシーケンサ214は、APICロジック212からのサービスを受け取るための次のAPICインスタンスを決定するため、アーキテクチャAPIC状態302のエントリ410をシーケンシャルにトラバースするかもしれない。
It has also been mentioned above that, for example, at least one embodiment of the centralized interrupt
このため、当業者は、本発明から逸脱することなくそれの最も広範な側面において各種変更及び改良が可能であることを認識するであろう。添付した請求項は、本発明の真の範囲内に属するそのようなすべての変更及び改良をその範囲内に含むものである。 Thus, those skilled in the art will recognize that various changes and modifications can be made in the broadest aspects thereof without departing from the invention. The appended claims are intended to include within their scope all such changes and modifications as fall within the true scope of the present invention.
100 システム
104 コア
110 インタラプトコントローラ
359 マルチコアスレッディング環境
100
Claims (24)
前記ロジックブロックに接続され、前記ロジックブロックにより処理のため前記複数の処理ユニットのインタラプトイベントをスケジューリングするインタラプトシーケンサブロックと、
前記複数の処理ユニットのそれぞれのアーキテクチャインタラプト状態情報を維持するストレージエリアと、
入力インタラプトメッセージを受信し、前記メッセージからの情報を前記ストレージエリアに配置する1以上の入力メッセージキューと、
出力インタラプトメッセージを送信する1以上の出力メッセージキューと、
を有する装置。 A single logic block that performs priority and control functions for providing interrupt messages to a plurality of processing units and is shared by the plurality of processing units;
An interrupt sequencer block connected to the logic block for scheduling interrupt events of the plurality of processing units for processing by the logic block;
A storage area that maintains architecture interrupt status information for each of the plurality of processing units;
One or more input message queues that receive an input interrupt message and place information from the message in the storage area;
One or more output message queues for sending output interrupt messages;
Having a device.
前記1以上の出力メッセージキューは、前記ローカルインターコネクトを介し出力インタラプトメッセージを送信するためのメッセージキューを有する、請求項7記載の装置。 The one or more input message queues include a message queue for receiving an input interrupt message via the local interconnect;
The apparatus of claim 7, wherein the one or more output message queues comprise a message queue for sending output interrupt messages over the local interconnect.
前記1以上の出力メッセージキューは、前記システムインターコネクトを介し出力インタラプトメッセージを送信するためのメッセージキューを有する、請求項7記載の装置。 The one or more input message queues include a message queue for receiving an input interrupt message via a system interconnect;
The apparatus of claim 7, wherein the one or more output message queues comprise a message queue for transmitting output interrupt messages over the system interconnect.
冗長でないインタラプト提供ブロックのインタラプト提供サービスについて前記処理ユニットの1つをスケジューリングするステップと、
を有する方法であって、
前記スケジューリングするステップは、各処理ユニットが前記インタラプト提供ブロックへの等しいアクセスを有することを可能にする公平性スキームに従って実行される方法。 Querying the storage array to determine one architecture interrupt state of the plurality of processing units;
Scheduling one of the processing units for an interrupt providing service of a non-redundant interrupt providing block;
A method comprising:
The scheduling is performed according to a fairness scheme that allows each processing unit to have equal access to the interrupt providing block.
前記処理ユニットに接続されるメモリと、
前記複数の処理ユニットのインタラプト提供サービスを提供する共有されたインタラプトコントローラと、
を有するシステム。 A plurality of processing units executing one or more threads;
A memory connected to the processing unit;
A shared interrupt controller that provides an interrupt providing service for the plurality of processing units;
Having a system.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011192704A JP2012009063A (en) | 2011-09-05 | 2011-09-05 | Centralized interrupt controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011192704A JP2012009063A (en) | 2011-09-05 | 2011-09-05 | Centralized interrupt controller |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008547249A Division JP2009515280A (en) | 2006-11-27 | 2006-11-27 | Centralized interrupt controller |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013172486A Division JP5710712B2 (en) | 2013-08-22 | 2013-08-22 | Centralized interrupt controller |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012009063A true JP2012009063A (en) | 2012-01-12 |
JP2012009063A5 JP2012009063A5 (en) | 2012-09-06 |
Family
ID=45539437
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011192704A Pending JP2012009063A (en) | 2011-09-05 | 2011-09-05 | Centralized interrupt controller |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012009063A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014025145A1 (en) * | 2012-08-10 | 2014-02-13 | Samsung Techwin Co., Ltd | Method and apparatus for processing message between processors |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0916533A (en) * | 1995-03-21 | 1997-01-17 | Advanced Micro Devicds Inc | Symmetrical multiprocessing system |
JPH1097509A (en) * | 1996-08-20 | 1998-04-14 | Compaq Computer Corp | Method and device for distributing interrupt in symmetric multiprocessor system |
JPH10111809A (en) * | 1996-10-08 | 1998-04-28 | Nec Corp | Interruption controller |
-
2011
- 2011-09-05 JP JP2011192704A patent/JP2012009063A/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0916533A (en) * | 1995-03-21 | 1997-01-17 | Advanced Micro Devicds Inc | Symmetrical multiprocessing system |
JPH1097509A (en) * | 1996-08-20 | 1998-04-14 | Compaq Computer Corp | Method and device for distributing interrupt in symmetric multiprocessor system |
JPH10111809A (en) * | 1996-10-08 | 1998-04-28 | Nec Corp | Interruption controller |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014025145A1 (en) * | 2012-08-10 | 2014-02-13 | Samsung Techwin Co., Ltd | Method and apparatus for processing message between processors |
US9448864B2 (en) | 2012-08-10 | 2016-09-20 | Hanwha Techwin Co., Ltd. | Method and apparatus for processing message between processors |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20070106827A1 (en) | Centralized interrupt controller | |
US8046775B2 (en) | Event-based bandwidth allocation mode switching method and apparatus | |
US8219993B2 (en) | Frequency scaling of processing unit based on aggregate thread CPI metric | |
US7822885B2 (en) | Channel-less multithreaded DMA controller | |
KR100399385B1 (en) | Multiprocessing system using adaptive interrupt mapping mechanism and method | |
US6671827B2 (en) | Journaling for parallel hardware threads in multithreaded processor | |
US6944850B2 (en) | Hop method for stepping parallel hardware threads | |
US11360809B2 (en) | Multithreaded processor core with hardware-assisted task scheduling | |
JP2013191244A (en) | Mechanism for scheduling thread on os isolated sequencer without interposition of operating system | |
US20080140896A1 (en) | Processor and interrupt controlling method | |
US20150100965A1 (en) | Method and Apparatus for Dynamic Resource Partition in Simultaneous Multi-Thread Microprocessor | |
KR20100053593A (en) | Mechanism for broadcasting system management interrupts to other processors in a computer system | |
WO2008021435A1 (en) | A multi-thread processor with multiple program counters | |
CN112540796B (en) | Instruction processing device, processor and processing method thereof | |
US10545890B2 (en) | Information processing device, information processing method, and program | |
JP2009515280A (en) | Centralized interrupt controller | |
CN108845969B (en) | Operation control method and operation system suitable for incompletely symmetrical multi-processing microcontroller | |
JP2012009063A (en) | Centralized interrupt controller | |
CN109426562B (en) | priority weighted round robin scheduler | |
JP5710712B2 (en) | Centralized interrupt controller | |
US6708259B1 (en) | Programmable wake up of memory transfer controllers in a memory transfer engine | |
CN103257943B (en) | Centralized interrupt control unit | |
TWI823655B (en) | Task processing system and task processing method applicable to intelligent processing unit | |
US20240231899A9 (en) | Task processing system and task processing method applicable to intelligence processing unit | |
JPS6091452A (en) | Task scheduling system of data processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120725 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121204 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130227 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130304 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130404 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130423 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130822 |