JP2012009063A - Centralized interrupt controller - Google Patents

Centralized interrupt controller Download PDF

Info

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
Application number
JP2011192704A
Other languages
Japanese (ja)
Other versions
JP2012009063A5 (en
Inventor
Light Brian David Boat
ボートライト,ブライアン,デイヴィッド
Michael Cleary James
クリアリー,ジェイムズ,マイケル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to JP2011192704A priority Critical patent/JP2012009063A/en
Publication of JP2012009063A publication Critical patent/JP2012009063A/en
Publication of JP2012009063A5 publication Critical patent/JP2012009063A5/ja
Pending legal-status Critical Current

Links

Images

Abstract

PROBLEM TO BE SOLVED: To provide an advanced programmable interrupt controller centralized with respect to a plurality of processing units.SOLUTION: The centralized interrupt controller having a single copy of APIC (advanced programmable interrupt controller) logic provides all the processing units of a multi-sequencer chip or a system with APIC interrupt providing services. An interrupt sequencer block of the centralized interrupt controller schedules the interrupt services according to a fairness scheme. At least one embodiment of the centralized interrupt controller has firewall logic for filtering out transmission of a selected interrupt message. Other embodiments are also written or requested.

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.

図1は、複数の処理ユニットのインタラプト制御を提供する中央化されたインタラプトコントローラの少なくとも1つの実施例を示すブロック図である。FIG. 1 is a block diagram illustrating at least one embodiment of a centralized interrupt controller that provides interrupt control for a plurality of processing units. 図2は、中央化されたインタラプトコントローラの少なくとも1つの実施例のさらなる詳細を示すブロック図である。FIG. 2 is a block diagram illustrating further details of at least one embodiment of a centralized interrupt controller. 図3は、マルチシーケンサシステムの各種実施例を示すブロック図である。FIG. 3 is a block diagram showing various embodiments of the multi-sequencer system. 図4は、複数のコアのインタラプト状態の中央レポジトリの少なくとも1つの実施例を示すブロック図である。FIG. 4 is a block diagram illustrating at least one embodiment of a central repository in a multiple core interrupt state. 図5は、中央化されたインタラプトコントローラのインタラプトシーケンサブロックの動作の少なくとも1つの実施例を示す状態遷移図である。FIG. 5 is a state transition diagram illustrating at least one embodiment of the operation of the interrupt sequencer block of the centralized interrupt controller. 図6は、開示された技術を実行可能な計算システムの少なくとも1つの実施例を示すブロック図である。FIG. 6 is a block diagram illustrating at least one embodiment of a computing system capable of performing the disclosed techniques.

以下において、複数の処理ユニットの中央化された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 system 100 having a centralized interrupt controller 110. The system 100 includes a plurality of cores 104 (0) to 104 (n). The dashed lines and ellipses in FIG. 1 indicate that the system 100 can have any number n (n ≧ 2) cores. Those skilled in the art will recognize that other embodiments of the system can have a single simultaneous multi-threading (SMT) core (so that n = 1), as described below. There will be.

図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 interrupt controller 110 is physically separated from the cores 104 (0) -104 (n). FIG. 1 also shows that each core 104 (0)-104 (n) of the system 100 is connected to a centralized interrupt controller 110 via the local interconnect 102. The centralized interrupt controller 110 interfaces with each processing core via the local interconnect 102. The high-level purpose of the centralized interrupt controller 110 is to make the operation of multiple APICs serially so that the APIC appears to the system 100 as if it were operating in parallel as in a conventional core-based APIC system. To imitate.

システム100の単一のコア104は、同時マルチスレッディング(SMT)、スイッチ・オン・イベントマルチスレッディング(SoeMT)及び/又はタイム多重化マルチスレッディング(TMUX)を含む各種マルチスレッディングスキームの何れかを実現することが可能である。複数のハードウェアスレッドコンテクスト(論理プロセッサ)からの命令が、何れかの時点において同時にプロセッサ304上で実行されると、それはSMTと呼ばれる。あるいは、シングル・コアマルチスレッディングシステムは、プロセッサパイプラインが複数のハードウェアスレッドコンテクスト間で多重化されるが、所与の時点では、1つのハードウェアスレッドコンテクストからの命令のみがパイプラインで実行されるSoeMTを実装するかもしれない。SoeMTについては、スレッドスイッチイベントがタイムベースである場合、それはTMUXとなる。SoeMT及びTMUXをサポートするシングルコアはマルチスレッディングをサポート可能であるが、それらは“シングルスレッド”コアと呼ばれる。なぜなら、1つのハードウェアスレッドコンテクストからの命令しか何れか所与の時点で実行されないためである。   A single core 104 of the system 100 can implement any of a variety of multithreading schemes including simultaneous multithreading (SMT), switch on event multithreading (SoeMT), and / or time multiplexed multithreading (TMUX). is there. If instructions from multiple hardware thread contexts (logical processors) are executed on the processor 304 at any point in time, it is called SMT. Alternatively, in a single core multithreading system, the processor pipeline is multiplexed between multiple hardware thread contexts, but only instructions from one hardware thread context are executed in the pipeline at a given time. SoeMT may be implemented. For SoeMT, if the thread switch event is time-based, it will be TMUX. Single cores that support SoeMT and TMUX can support multithreading, but they are referred to as “single thread” cores. This is because only instructions from one hardware thread context are executed at any given time.

各コア104は、シングルスレッドを実行可能な単一の処理ユニットであるかもしれない。あるいは、1以上のコア104が、当該コアしかある時点で1つのスレッドに対する命令を実行しないように、SoeMT又はTMUXマルチスレッディングを実行するマルチスレッディングコアであるかもしれない。このような実施例では、コア104は“処理ユニット”と呼ばれる。   Each core 104 may be a single processing unit capable of executing a single thread. Alternatively, one or more cores 104 may be multi-threading cores that perform SoeMT or TMUX multi-threading so that instructions for one thread are only executed at that point in time. In such an embodiment, the core 104 is referred to as a “processing unit”.

少なくとも1つの他の実施例では、各コア104は、SMTコアなどのマルチスレッドコアである。SMTコア104については、コア104の各論理プロセッサが“処理ユニット”と呼ばれる。ここで使用される“処理ユニット”とは、スレッドを実行可能な任意の物理的又は論理的ユニットであるかもしれない。各処理ユニットは、所与のスレッドについて実行される次の命令を決定するため、次命令ポインタロジックを有するかもしれない。また、処理ユニットは、“シーケンサ”と同義的に使用されるかもしれない。   In at least one other embodiment, each core 104 is a multi-threaded core, such as an SMT core. For the SMT core 104, each logical processor of the core 104 is referred to as a “processing unit”. As used herein, a “processing unit” may be any physical or logical unit that can execute a thread. Each processing unit may have next instruction pointer logic to determine the next instruction to be executed for a given thread. A processing unit may also be used synonymously with “sequencer”.

何れかの実施例について(シングルスレッドコアとマルチスレッドコア)、各処理ユニットは、自らのインタラプトコントローラの機能のロジックが各処理ユニット内で自己完結せず、中央化されたインタラプトコントローラ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 controller 110 where the logic of its interrupt controller functionality is not self-contained within each processing unit. If so, it is associated with the function. If any core 104 is an SMT core, each logical processor in each core 104 may be connected to a centralized interrupt controller 110 via the local interconnect 102.

図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 multi-sequencer system embodiments 310 and 350 capable of performing the disclosed techniques.

図3は、シングルコアマルチシーケンサマルチスレッディング環境310の選択されたハードウェア構成を示す。図3はまた、各シーケンサが独立した物理プロセッサコアとなっているマルチコアマルチスレッディング環境350の選択されたハードウェア構成を示す。   FIG. 3 shows a selected hardware configuration for a single core multi-sequencer multi-threading environment 310. FIG. 3 also illustrates a selected hardware configuration of a multi-core multi-threading environment 350 where each sequencer is an independent physical processor core.

シングルコアマルチスレッディング環境310では、単一の物理プロセッサ304は、オペレーティングシステム及びユーザプログラムに対してLP〜LPにより参照される複数の論理プロセッサ(図示せず)として見えるようにされる。各論理プロセッサLP〜LPはそれぞれ、アーキテクチャ状態AS〜ASの完全なセットを維持する。このアーキテクチャ状態は、少なくとも1つの実施例については、データレジスタ、セグメントレジスタ、コントロールレジスタ、デバッグレジスタ及びモデルに固有のレジスタの大部分を有する。論理プロセッサLP〜LPは、キャッシュ、実行ユニット、ブランチプレディクタ、コントロールロジック、バスなどの物理プロセッサ304の他の大部分のリソースを共有する。しかしながら、各論理プロセッサLP〜LPは、自らのAPICに関連付けされるかもしれない。 In single-core multithreading environment 310, a single physical processor 304 is made to appear as multiple logical processors that are referenced by the LP 1 ~LP n to the operating system and user programs (not shown). Each logical processor LP 1 -LP n maintains a complete set of architectural states AS 1 -AS n , respectively. This architectural state has most of the data registers, segment registers, control registers, debug registers and model specific registers for at least one embodiment. The logical processors LP 1 -LP n share most other resources of the physical processor 304 such as caches, execution units, branch predictors, control logic, and buses. However, each logical processor LP 1 -LP n may be associated with its own APIC.

多数のハードウェア構成が共有されるが、マルチスレッディング環境310における各スレッドコンテクストは、次命令アドレスを独立に生成することが可能である(及び、例えば、命令キャッシュ、実行命令キャッシュ又はトレースキャッシュなどからのフェッチの実行が可能である)。このため、プロセッサ304は、複数の論理シーケンサが単一の物理フェッチ/デコードユニット322において実現可能であっても、各スレッドコンテクストの命令をフェッチする論理的に独立した次命令ポインタフェッチロジック320を有する。シングルコアマルチスレッディングの実施例では、“シーケンサ”という用語は、スレッドコンテクストの少なくとも次命令ポインタフェッチロジックと共に、当該スレッドコンテクストの関連付けされたアーキテクチャ状態312の少なくともいくつかを含む。シングルコアマルチスレッディングシステム310のシーケンサはシンメトリックである必要はないことに留意すべきである。例えば、同じ物理コアの2つのシングルコアマルチスレッディングシーケンサは、それぞれが維持するアーキテクチャ状態情報の情報量について異なるかもしれない。   Although multiple hardware configurations are shared, each thread context in the multithreading environment 310 can independently generate the next instruction address (and, for example, from an instruction cache, an execution instruction cache, or a trace cache, etc. Fetch can be performed). Thus, the processor 304 has a logically independent next instruction pointer fetch logic 320 that fetches the instructions of each thread context even if multiple logical sequencers can be implemented in a single physical fetch / decode unit 322. . In the single-core multithreading embodiment, the term “sequencer” includes at least some of the thread context's associated architectural state 312 along with at least the next instruction pointer fetch logic of the thread context. It should be noted that the sequencer of single core multithreading system 310 need not be symmetric. For example, two single-core multithreading sequencers on the same physical core may differ in the amount of architecture state information they maintain.

このため、少なくとも1つの実施例では、マルチシーケンサシステム310は、同時マルチスレッディングをサポートするシングルコアプロセッサ304である。このような実施例について、各シーケンサは、同一の物理プロセッサコア304がすべてのスレッド命令を実行するが、自らの次命令ポインタフェッチロジックと自らのアーキテクチャ状態情報とを有する論理プロセッサである。このような実施例について、論理プロセッサは、シングルプロセッサコアの実行リソースが同時に実行されるスレッド間で共有される可能性があるが、自らのアーキテクチャ状態のバージョンを維持する。   Thus, in at least one embodiment, multi-sequencer system 310 is a single core processor 304 that supports simultaneous multi-threading. For such an embodiment, each sequencer is a logical processor with the same physical processor core 304 executing all thread instructions, but with its own next instruction pointer fetch logic and its own architecture state information. For such an embodiment, a logical processor may maintain a version of its architectural state, although the execution resources of a single processor core may be shared among threads executing simultaneously.

図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 multi-core multi-threading environment 350. Such an environment 350 has two or more independent physical processors 304a-304n each capable of executing different threads / shreds so that execution of at least some of the different threads / shreds can proceed simultaneously. Each processor 304a-304n has a physically independent fetch unit 322 to fetch instruction information for its own thread or shred. In an embodiment where each processor 304a-304n executes a single thread / shred, the fetch / decode unit 322 implements a single next instruction pointer fetch logic 320. However, in embodiments where each processor 304a-304n supports multiple thread contexts, fetch / decode unit 322 implements different next instruction pointer fetch logic 320 for each supported thread context. The optional nature of the additional next instruction pointer fetch logic 320 in the multiprocessor environment 350 is illustrated in FIG.

図3に示されるマルチコアシステム350の少なくとも1つの実施例について、各シーケンサは、単一のチップパッケージ360にある複数のコア304a〜304nを有するプロセッサコア304であるかもしれない。各コア304a〜304nは、シングルスレッド又はマルチスレッドプロセッサコアであるかもしれない。チップパッケージ360は、マルチコアシステム350の図示されたシングルチップの実施例が単なる一例であることを示すため、図3において破線により示されている。他の実施例では、マルチコアシステムのプロセッサコアは別々のチップに常駐するかもしれない。すなわち、マルチコアシステムは、マルチソケットシンメトリックマルチプロセッシングシステムであるかもしれない。   For at least one embodiment of the multi-core system 350 shown in FIG. 3, each sequencer may be a processor core 304 having multiple cores 304a-304n in a single chip package 360. Each core 304a-304n may be a single thread or multi-thread processor core. Chip package 360 is indicated by a dashed line in FIG. 3 to indicate that the illustrated single chip embodiment of multi-core system 350 is merely an example. In other embodiments, the processor cores of a multi-core system may reside on separate chips. That is, the multi-core system may be a multi-socket symmetric multi-processing system.

説明の簡単化のため、以下の説明ではマルチコアシステム350の実施例に着目する。しかしながら、この着目は、後述される機構がマルチコア又はシングルコアの何れのマルチシーケンサ環境においても実行可能であるという点で限定的なものと解されるべきでない。   For simplicity of explanation, the following description focuses on an embodiment of the multi-core system 350. However, this focus should not be construed as limiting in that the mechanisms described below can be executed in either multi-core or single-core multi-sequencer environments.

図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 system 100 can be connected to each other via the local interconnect 102. The local interconnect 102 may provide all communication functions required between cores (such as cache snoop). Each core 104 (0)-104 (n) may have a relatively small interface block for sending and receiving interrupt related messages over the local interconnect 102. In general, such an interface of the core does not maintain the architectural state for interrupt-related messages and it does not perform other related functions performed by the centralized interrupt controller 110 described herein. Or is not relatively prioritized, so it is relatively simple.

コア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 system 100 shown in FIG. 1 may further have optional additional dies. The optional nature of one or more additional dies (˜150 (n)) is indicated in FIG. 1 by dashed lines and ellipses. FIG. 1 shows that an interrupt message from a processing unit on the other die (150 (n)) is communicated to the first die (150 (0)) via the system interconnect. The centralized interrupt controller 110 is connected to any other die (˜150 (n)) and peripheral I / O devices 114 via the system interconnect 106.

当業者は、図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 local interconnect 102. On the other hand, each core 104 does not necessarily have to reside on the same chip. Each core 104 (0) -104 (n) and / or local interconnect 102 may not reside on the same die 150.

システム100の各コア104(0)〜104(n)はさらに、ローカルインターコネクト102を介し他のシステムインタフェースロジック112に接続されるかもしれない。このようなロジック112は、例えば、シーケンサがシステムインターコネクトを介し他のシステム要素とインタフェースをとることを可能にするキャッシュコヒーレンスロジック又は他のインタフェースロジックなどを有するかもしれない。他のシステムインタフェースロジック112はさらに、システムインターコネクト106を介し他のシステム要素116(メモリなど)に接続されるかもしれない。   Each core 104 (0) -104 (n) of the system 100 may further be connected to other system interface logic 112 via the local interconnect 102. Such logic 112 may include, for example, cache coherence logic or other interface logic that allows the sequencer to interface with other system elements via the system interconnect. Other system interface logic 112 may also be connected to other system elements 116 (such as memory) via system interconnect 106.

図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 controller 110. In general, FIG. 2 shows that the centralized interrupt controller 110 is physically separate from the core of the system (such as cores 104 (0) -104 (n) of FIG. 1), but the centralized interrupt controller 110 indicates that the complete architectural state of each APIC instance associated with each sequencer is maintained. A centralized interrupt controller 110 manages all of the interrupt queuing and prioritization functions normally handled by a dedicated APIC per core of conventional systems. As described in detail below, the centralized interrupt controller 110 may also function as a firewall between the rest of the system connected to the system interconnect 106 and the sequencer.

図2は、中央化されたインタラプトコントローラ110が中央化されたAPIC状態202を有することを示す。APIC状態202は、典型的なAPIC処理に通常関連付けされるアーキテクチャ状態を含む。すなわち、APIC処理は、アプリケーションプログラマにはアーキテクチャ的に可視的な構成であり、このようなインタフェースは本開示により変更されることを意図したものでない。システムが従来のAPICハードウェア(すなわち、各処理ユニットについて1つの自己完結したAPIC)又はここに記載される中央化されたインタラプトコントローラを有するか否かに関係なく、少なくとも1つの実施例について、このようなハードウェア設計の選択はアプリケーションプログラマに透過であるべきことが予期される。このように、同時にオペレーティングシステムベンダ及びアプリケーションプログラマが期待する同一のアーキテクチャインタフェースを維持しながら、面積、ダイナミックパワー及びパワーリークの各コストを、システムの単一の中央化されたインタラプトコントローラ110を利用することにより低減することができる。   FIG. 2 shows that the centralized interrupt controller 110 has a centralized APIC state 202. The APIC state 202 includes architectural states that are typically associated with typical APIC processing. That is, APIC processing is architecturally visible to application programmers, and such an interface is not intended to be modified by the present disclosure. Regardless of whether the system has conventional APIC hardware (ie, one self-contained APIC for each processing unit) or a centralized interrupt controller as described herein, for at least one embodiment, this It is expected that such hardware design choices should be transparent to the application programmer. In this way, the area, dynamic power, and power leak costs are utilized by the system's single centralized interrupt controller 110 while simultaneously maintaining the same architectural interface expected by operating system vendors and application programmers. Can be reduced.

このため、ブロック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 block 202 is generally the state maintained for each APIC in conventional systems. For example, if there are 8 sequencers in the system, the centralized APIC state 202 may include an array of 8 entries that reflect the architectural APIC state where each entry is maintained for the sequencer of the conventional system. (The description of FIG. 4 below indicates that each entry also includes a specific microarchitecture state.)
For at least one embodiment, the centralized APIC state 202 is implemented as a single memory storage area, such as a register file or an array. The register file configuration may allow better area efficiency than conventional approaches that implement core unit APIC states as random logic.

一般に、中央化されたインタラプトコントローラ110は、ローカルインターコネクト102及び/又はシステムインターコネクト106を介し受信されるインタラプトメッセージの受信を監視し、レジスタファイル202の適切なエントリに関連するメッセージを格納する。少なくとも1つの実施例では、これは、入力メッセージのデスティネーションアドレスを監視し、当該デスティネーションアドレスに係るAPICインスタンスエントリにメッセージを格納することにより実現される。このような機能は、以下で詳細に説明されるように、入力メッセージキュー204、206により実行されるかもしれない。   In general, the centralized interrupt controller 110 monitors receipt of interrupt messages received via the local interconnect 102 and / or the system interconnect 106 and stores messages associated with the appropriate entries in the register file 202. In at least one embodiment, this is accomplished by monitoring the destination address of the incoming message and storing the message in the APIC instance entry associated with the destination address. Such functions may be performed by the input message queues 204, 206, as will be described in detail below.

同様に、中央化されたインタラプトコントローラ110は、出力インタラプトメッセージの生成を監視し、このようなメッセージがサービス及び送信されるまで、レジスタファイル202の適切なエントリにメッセージを格納するかもしれない。少なくとも1つの実施例では、これは、出力メッセージのソースアドレスを監視し、ソースアドレスに係るAPICインスタンスエントリにメッセージを格納することにより実現される。このような機能は、以下で詳細に説明されるように、出力メッセージシーケンス208、210により実行されるかもしれない。   Similarly, the centralized interrupt controller 110 may monitor the generation of output interrupt messages and store the messages in the appropriate entries in the register file 202 until such messages are serviced and transmitted. In at least one embodiment, this is accomplished by monitoring the source address of the outgoing message and storing the message in the APIC instance entry associated with the source address. Such a function may be performed by output message sequences 208, 210, as described in detail below.

一般に、中央化されたインタラプトコントローラ110のインタラプトシーケンサブロック214は、その後、サービスのため中央化されたAPIC状態202に反映されるように、保留中のインタラプトメッセージをスケジューリングするかもしれない。以下で詳細に説明されるように、これは、シーケンサの何れの保留中のインタラプト動作も繰り返し無視されないように、公平性スキームに従って実現されるかもしれない。インタラプトシーケンサブロック214は、サービスを実行するため、APICインタラプト提供ロジック212を呼び出すかもしれない。   In general, the interrupt sequencer block 214 of the centralized interrupt controller 110 may then schedule pending interrupt messages to be reflected in the centralized APIC state 202 for service. As will be explained in detail below, this may be implemented according to a fairness scheme so that any pending interrupt operations of the sequencer are not repeatedly ignored. The interrupt sequencer block 214 may call the APIC interrupt provision logic 212 to perform the service.

図2は、中央化されたインタラプトコントローラ110がAPICインタラプト提供ロジック212を有することを示す。システムの各シーケンサのAPICロジックを複製するのでなく(SMTコアの各論理プロセッサ又は各シングルスレッドコアなど)、中央化されたインタラプトコントローラ110は、システムのすべてのシーケンサについてインタラプトをサービスするため、APICロジック212の単一の冗長でないコピーを提供する。   FIG. 2 shows that the centralized interrupt controller 110 has APIC interrupt providing logic 212. Rather than duplicating the APIC logic of each sequencer in the system (such as each logical processor in the SMT core or each single-threaded core), the centralized interrupt controller 110 services the interrupt for all sequencers in the system, so the APIC logic 212 single non-redundant copies are provided.

例えば、システム(図1のシステム100など)が、それぞれが8つの同時的なSMTスレッドをサポートする4つのコアを有する場合、システムは従来はAPICロジック212の32このコピーを必要とする。他方、図2に示される中央化されたインタラプトコントローラ110は、APICロジック212の単一のコピーを利用して、所与の時点でアクティブな32個のスレッドのすべてにインタラプトコントローラのサービスを提供する。   For example, if a system (such as system 100 of FIG. 1) has four cores, each supporting eight simultaneous SMT threads, the system conventionally requires 32 copies of APIC logic 212. On the other hand, the centralized interrupt controller 110 shown in FIG. 2 utilizes a single copy of APIC logic 212 to provide interrupt controller services to all 32 active threads at a given time. .

システムの複数のシーケンサが同時に保留中のインタラプト動作を有する可能性があるため、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 controller 110 has an interrupt sequencer block 214. The interrupt sequencer block 214 sequences the services of all interrupts in the system so as to provide fair access to each sequencer of the APIC logic 212. The interrupt sequencer block 214 of the centralized interrupt controller 110 controls access to a single APIC logic block 212.

このため、インタラプトシーケンサブロック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 controller 110 via the local interconnect 102. Interrupts to peripheral devices or processing units on other dies are provided via the system interconnect 106.

図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 system message queue 204, input local message queue 206, output local message queue 208, and output system message queue 210, for processing input / output interrupt messages via local interconnect 102 and system interconnect 106. It has shown that. Input local message queue 206 and output local message queue 208 are connected to local interconnect 102, and input system message queue 204 and output system message queue 210 are connected to system interconnect 106. Each queue 204, 206, 208, 210 is a mini-controller queue that has data storage with control logic.

キュー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 queues 204, 206, 208, 210 will be made with reference to FIGS. FIG. 4 provides a detailed view of at least one embodiment of the centralized APIC state 202. FIG. 4 shows that the centralized APIC state 202 has both microarchitecture states 301, 303 along with architecture state 302. As described above, the architectural state 302 maintained for each sequencer 104 (0) -104 (n) reflects the APIC state conventionally associated with the sequencer. Each entry 410 in the architecture APIC state 302 is referred to herein as an “APIC instance”. For example, an APIC instance input interrupt message may be stored in the entry 410 of the architecture APIC state 302 for the instance. For at least one embodiment, up to 240 input interrupt messages may be maintained in entry 410 of the APIC instance.

アーキテクチャ状態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 architecture state 302, the centralized APIC state 202 may have a microarchitecture state 301 for each APIC instance 410 along with a general microarchitecture state 303. The general microarchitecture state 303 determines which sequencer the interrupt sequencer block 214 (see FIG. 2) needs to access the APIC logic 212 (see FIG. 2). You may have a scoreboard 304 to help. In at least one embodiment, scoreboard 304 may maintain a bit for each sequencer in the system. The value of the sequencer bit may indicate whether the sequencer has any pending action required by the APIC logic 212. In at least one embodiment, the scoreboard 304 is atomically enabled so that the interrupt sequencer block 214 (FIG. 2) can easily and quickly determine which sequencer needs the APIC logic 212's attention. May be read.

インタラプトシーケンサブロック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 scoreboard 304 is a sequencer that does not require the interrupt sequencer block 214 to process the APIC logic 212 simultaneously. Allows fairness schemes to be used without requiring processing resources to be wasted. Thus, the scoreboard tracks which APIC instances have work to perform based on the input message and the current state of processing of the issued request. The interrupt sequencer block 214 reads the current state from the centralized APIC state 202 for the active APIC instance and records the current state (as recorded in both the architectural state 302 and the microarchitecture state 301 of the APIC instance 410). Then take the appropriate action and then repeat the process for the next APIC instance with pending work (as indicated by the bits on the scoreboard 304).

入力インタラプトメッセージがローカルインターコネクト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 local interconnect 102, the input local message queue 206 receives this message and determines its destination. The interrupt message can be targeted to one, many or all of the sequencers, or none of them. The queue 206 may write to each sequencer's architecture state entry (such as 410 in FIG. 4) to queue up the interrupt. In such a case, if the scoreboard entry has not already been set to indicate that the interrupt action is pending and the service of the single APIC logic block 212 is required for the target sequencer, the queue 206 will also Set the scoreboard entry for the target sequencer.

しかしながら、図4は、いくつかのインタラプトが中央化されたAPIC状態202においてキューアップされることなく、入力ローカルメッセージキュー206から出力キュー208、210に直接的にバイパスされるかもしれないことを示す。これは、例えば、特定のプロセッサに具体的にはアドレス指定されていないブロードキャストメッセージについて起こるかもしれない。図4は、同様のバイパス処理が入力システムメッセージキュー204(後述される)からもまた行われることを示す。   However, FIG. 4 shows that some interrupts may be bypassed directly from the input local message queue 206 to the output queues 208, 210 without being queued up in the centralized APIC state 202. . This may occur, for example, for broadcast messages that are not specifically addressed to a particular processor. FIG. 4 shows that a similar bypass process is also performed from the input system message queue 204 (described below).

キュー206について上述されたものと同様の処理がまた、入力インタラプトメッセージがシステムインターコネクト106を介し(他のダイ上のI/O装置又はシーケンサから)シーケンサ104(0)〜104(n)の1つを対象として投入されるときに行われるかもしれない。入力システムメッセージキュー204は、メッセージを受信し、それの送信先を決定する。キュー206は、インタラプトをキューアップし、何れか対象とされたシーケンサのスコアボードエントリ412を更新するため、対象とされる各シーケンサのアーキテクチャ状態エントリ410に書き込む。もちろん、入力メッセージは上述されるようにバイパスされてもよい。   A process similar to that described above for queue 206 is also provided by one of the sequencers 104 (0) -104 (n) where the input interrupt message is routed via system interconnect 106 (from an I / O device or sequencer on another die). May be performed when the target is thrown. The input system message queue 204 receives a message and determines the destination of the message. The queue 206 writes up to the architecture state entry 410 of each targeted sequencer to queue up the interrupt and update the scoreboard entry 412 of any targeted sequencer. Of course, the input message may be bypassed as described above.

メッセージキュー204、206、208、210の1以上が、入出力メッセージのファイアウォール機能を実装してもよい。このファイアウォール機能に関して、図2が図1と共に説明される。   One or more of the message queues 204, 206, 208, 210 may implement an input / output message firewall function. With respect to this firewall function, FIG. 2 is described together with FIG.

入力メッセージに関して、入力システムメッセージキュー204は、中央化されたインタラプトコントローラ110に係るダイ150上のシーケンサを対象としないメッセージの不要な処理を回避するため、インタラプトファイアウォールとして機能するかもしれない。図1に示されるように、システム100は複数のマルチシーケンサダイ150(0)〜150(n)を有するかもしれない。特定のダイのシーケンサにより生成されるインタラプトは、システムインターコネクト106を介し他のダイに送信されるかもしれない。同様に、周辺装置114により生成されるインタラプトは、システムインターコネクト106を介しダイに送信されるかもしれない。   For input messages, the input system message queue 204 may function as an interrupt firewall to avoid unnecessary processing of messages that are not targeted to the sequencer on the die 150 associated with the centralized interrupt controller 110. As shown in FIG. 1, the system 100 may have multiple multi-sequencer dies 150 (0) -150 (n). Interrupts generated by a particular die sequencer may be sent to other dies over the system interconnect 106. Similarly, interrupts generated by peripheral device 114 may be sent to the die via system interconnect 106.

ダイ150の中央化されたインタラプトコントローラ110(及び入力システムメッセージキュー204)は、このようなメッセージの送信先アドレスがダイ150上の何れかのシーケンサ(コア又は論理プロセッサなど)を有しているか判断するかもしれない。メッセージが当該ダイに係るローカルインターコネクト102上の何れかのコア又は論理プロセッサを対象としていない場合、入力システムメッセージキュー204は、ローカルインターコネクト102上のシーケンサの何れかにメッセージを転送することを拒否する。このように、入力システムメッセージキューは、単に何れのアクションも不要であると決定するため、上記コア/スレッドの“ウェイキング(waking)”を回避する。これは、電力を節約し、ローカルインターコネクト102の帯域幅を節約する。なぜなら、それは複数の各シーケンサがメッセージがそれらを対象としたものでないことを決定するためだけに、パワーセービング状態からウェイクアップすることを不要にするためである。   The centralized interrupt controller 110 (and input system message queue 204) of the die 150 determines whether the destination address of such a message has any sequencer (such as a core or logical processor) on the die 150. Might do. If the message is not intended for any core or logical processor on the local interconnect 102 associated with the die, the input system message queue 204 refuses to forward the message to any of the sequencers on the local interconnect 102. In this way, the input system message queue simply determines that no action is required, thus avoiding the “waking” of the core / thread. This saves power and saves local interconnect 102 bandwidth. This is because it eliminates the need for each sequencer to wake up from the power saving state just to determine that the message is not intended for them.

1以上の論理プロセッサがパワーセービング状態にない場合でさえ、入力システムメッセージキュー204は、入力インタラプトメッセージがそれらの側でアクションを必要としないことを単に決定するため、論理プロセッサが現在実行している作業から論理プロセッサをインタラプトしないように、依然としてファイアウォール機能を実行するかもしれない。   Even if one or more logical processors are not in a power saving state, the input system message queue 204 is currently executing by the logical processor to simply determine that the input interrupt message requires no action on their part. The firewall function may still be performed so as not to interrupt the logical processor from the work.

少なくとも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 local interconnect 102 be delivered to all sequencers, but the targeted interrupt message is provided to a particular sequencer. It is implemented only for systems having a local interconnect 102 that supports a configuration that enables this. In such a case, the output local message queue 208 may send each interrupt message as a unicast or multicast message via the local interconnect 102 only to the sequencer targeted by the message. Thus, sequencers that are not targeted do not need to interrupt their processing to determine that their actions are not required in the interrupt message. Output system messages may be targeted as well so that they are not unnecessarily sent to untargeted entities.

図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 APIC state 202 centralized by the input message queues 204, 206, the interrupt sequencer block 214 performs APIC processing of the system to execute the APIC logic 212 (FIG. 2). Indicates that it may provide fair access between each sequencer in the system to one copy of (see). The interrupt sequencer block 214 may actually implement this fairness scheme by sequentially traversing the APIC state 202 and providing access to the next sequence of APIC logic 212 attempting to pull it. Absent. The fairness scheme implemented by interrupt sequencer block 214 may allow each sequencer to have equal access to the interrupt providing block.

少なくとも1つの実施例について、APIC状態202のエントリを介した上記概念的なシーケンシャルなステッピングは、スコアボード(図4の304を参照されたい)を利用することによってより効率的なものとなり、スコアボードは、何れのアクティブなシーケンサが次にAPICサービスを必要とするか決定するため、アトミックにクエリされるかもしれない。少なくとも1つの実施例について、図5に関連してより詳細に以下で説明される方法に従って、シーケンシャルなアクセスが制御可能である。   For at least one embodiment, the conceptual sequential stepping via the APIC state 202 entry is made more efficient by utilizing a scoreboard (see 304 in FIG. 4). May be queried atomically to determine which active sequencer next needs the APIC service. For at least one embodiment, sequential access can be controlled according to the method described in more detail below in connection with FIG.

図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 method 500 utilized by at least one embodiment of (see FIG. 2). The following description of FIG. 5 is made with reference to FIGS.

全体として、図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 method 500 starts at state 502. In state 502, interrupt sequencer block 214 queries scoreboard 304 to determine which APIC instances have work to perform. As described above, there may be one entry 412 in the scoreboard 304 for each APIC instance. The entry 412 may be a 1-bit entry in at least one embodiment. Bit 412 may be set when an incoming message is written to the centralized APIC state 202 of the APIC instance.

もちろん、当業者は、スコアボード304がすべての実施例に必ずしも存在する必要がないパフォーマンスエンハンスメントであることを認識するであろう。少なくとも他の1つの実施例について、例えば、インタラプトシーケンサブロック214は、何れのアクティブなAPICインスタンスがサービスを必要としているか決定するため、順番に(シーケンシャルなど)中央化されたAPIC状態202の各エントリをトラバースするかもしれない。   Of course, those skilled in the art will recognize that the scoreboard 304 is a performance enhancement that need not be present in all embodiments. For at least one other embodiment, for example, the interrupt sequencer block 214 may query each entry in the centralized APIC state 202 in order (eg, sequential) to determine which active APIC instance requires service. May traverse.

スコアボード304の何れのビットも設定されていない場合、何れのシーケンサも保留中のAPICイベントを有していない。このようなケースでは、方法500は状態502から508に移行する。状態508において、方法500は、ロジック212が必要としない間、APICロジックブロック212の少なくとも一部を省電力にパワーダウンするかもしれない。パワーダウンが完了すると、方法500は、新たなAPIC動作が検出されるか判断するため、状態502に移行する。   If none of the scoreboard 304 bits are set, then no sequencer has a pending APIC event. In such a case, method 500 transitions from state 502 to 508. In state 508, the method 500 may power down at least a portion of the APIC logic block 212 to power save while the logic 212 is not required. Once power down is complete, method 500 transitions to state 502 to determine if a new APIC operation is detected.

状態502において、新たな動作が検出されず(すなわち、スコアボード304の何れのエントリも設定されていない)、APICロジック212がすでにパワーダウンされていた場合、方法500は、新たなAPIC動作を待機するため、状態502から506に移行するかもしれない。   In state 502, if no new action is detected (ie, no entry in scoreboard 304 has been set) and APIC logic 212 has already been powered down, method 500 waits for a new APIC action. Therefore, the state 502 may be changed to the state 506.

待機状態506の期間中、方法500は、何れかのAPICインスタンスが保留中有のAPIC作業を取得したか決定するため、スコアボード304のコンテンツを定期的に評価するかもしれない。スコアボード304のコンテンツに反映されるような入力APICメッセージは、状態506から502への移行を引き起こす。入力ローカルメッセージキュー204及び入力システムメッセージキュー206の上記説明は、アーキテクチャAPIC状態302と、少なくとも一部の実施例では、スコアボード304のエントリが、保留中のAPIC作業をAPICインスタンスが取得したことを反映するようどのように更新されるか説明する。   During the wait state 506, the method 500 may periodically evaluate the content of the scoreboard 304 to determine which APIC instance has acquired pending APIC work. An input APIC message as reflected in the content of the scoreboard 304 causes a transition from state 506 to 502. The above description of the input local message queue 204 and the input system message queue 206 indicates that the architecture APIC state 302 and, at least in some embodiments, that an entry in the scoreboard 304 has acquired the APIC work pending. Explain how it is updated to reflect.

方法500は、状態502において、スコアボード304の何れかのエントリ412が設定されている場合、少なくとも1つのAPICインスタンスが実行すべき保留中のAPIC作業を有していると判断するかもしれない。このようなエントリが複数設定されている場合、インタラプトシーケンサブロック214は、何れのAPICインスタンスがAPICロジック212によりサービスを次に受け付けるか決定する。少なくとも1つの実施例では、インタラプトシーケンサブロック214は、設定されている次のスコアボードエントリを選択することによって、上記決定を実行する。このように、インタラプトシーケンサブロック214は、APICロジック212へのアクセスのため、次にアクティブなAPICインスタンスをシーケンシャルに選択することによって、公平性スキームを課す。   Method 500 may determine in state 502 that at least one APIC instance has pending APIC work to perform if any entry 412 of scoreboard 304 is set. If a plurality of such entries are set, the interrupt sequencer block 214 determines which APIC instance will receive the service next by the APIC logic 212. In at least one embodiment, interrupt sequencer block 214 performs the determination by selecting the next set scoreboard entry. In this manner, interrupt sequencer block 214 imposes a fairness scheme by sequentially selecting the next active APIC instance for access to APIC logic 212.

状態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 state 502, method 500 transitions from block 502 to 504. At block 504, the interrupt sequencer block 214 reads the selected virtual APIC entry 410 from the centralized APIC state 302. Thus, interrupt sequencer block 214 determines which APIC events are pending for the selected APIC instance. Multiple APIC events may be pending and may be reflected in APIC entry 410. During each iteration of state 504, only one pending event is processed for the APIC instance. Thus, a round robin type sequential fairness scheme may be maintained.

同一のアクティブな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 method 500 schedules or performs actions appropriate for the selected event in state 504. For example, this event may be waiting for an acknowledgment for an interrupt message previously sent from one of the output message queues. Alternatively, the event may be that an output interrupt message needs to be sent. Or, for one of the sequencers, an input interrupt message or acknowledgment may need to be serviced. Interrupt sequencer block 214 may activate APIC logic 212 to service the event in state 504.

アクノリッジメントが待機されている場合、インタラプトシーケンサブロック214は、このようなアクノリッジメントが待機されていることを判断するため、マイクロアーキテクチャ状態303に照会する。そうである場合、インタラプトシーケンサブロック214は、状態504においてアクノリッジメントが受信されたか判断するため、APIC状態202の適切なエントリを照会する。そうでない場合、次のシーケンサのイベントを処理するように、状態504から抜け出す。   If an acknowledgment is waiting, interrupt sequencer block 214 queries microarchitecture state 303 to determine that such an acknowledgment is waiting. If so, interrupt sequencer block 214 queries the appropriate entry in APIC state 202 to determine if an acknowledgment was received in state 504. Otherwise, exit from state 504 to process the next sequencer event.

アクノリッジメントが受信された場合、アクノリッジメントがもはや待機されていないことを反映するため、マイクロアーキテクチャ状態303が更新される。インタラプトシーケンサブロック214はまた、状態502に戻る前にAPICインスタンスのスコアボード304のエントリをクリアするかもしれない。少なくとも1つの実施例では、スコアボードのエントリ304は、現在サービスされているイベントがAPICインスタンスの保留中のイベントのみである場合に限ってクリアされる。   If an acknowledgment is received, the microarchitecture state 303 is updated to reflect that the acknowledgment is no longer waiting. The interrupt sequencer block 214 may also clear the APIC instance scoreboard 304 entry before returning to state 502. In at least one embodiment, the scoreboard entry 304 is cleared only if the currently serviced event is only the pending event for the APIC instance.

他の例では、状態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 local interconnect 102 or system interconnect 106), such event is serviced in state 504 as follows. The interrupt sequencer block 214 determines which output messages need to be provided from the APIC instance of the currently serviced logical processor given the above priority processing. The output message is then scheduled for transmission to the appropriate output message queue (output local message queue 208 or output system message queue 210) along with the desired destination address.

出力メッセージが、アクノリッジメントの受信などの追加的なサービスをイベントが完全にサービスされる前に必要とする場合、中央化されたコントローラ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 centralized controller 110 indicates that additional services are required for the event. Therefore, the microarchitecture state 303 may be updated. (Input acknowledgments via the local interconnect 102 or the system interconnect 106 are queued up in the input message queues 204, 206 so that they can eventually be processed in the next iteration of the associated APIC instance state 504. , May be updated to the centralized APIC state 202. The method then transitions from state 504 to 502.

図6は、開示された技術を実行可能なマルチスレッド計算システム900の少なくとも1つの実施例を示す。計算システム900は、少なくとも1つのプロセッサコア904(0)とメモリシステム940とを有する。システム900は、破線及び楕円により示されるような追加的なコア(〜904(n))を有するかもしれない。   FIG. 6 illustrates at least one embodiment of a multi-threaded computing system 900 capable of performing the disclosed techniques. The computing system 900 includes at least one processor core 904 (0) and a memory system 940. System 900 may have additional cores (˜904 (n)) as indicated by dashed lines and ellipses.

メモリシステム940は、命令キャッシュ944及び/又はデータキャッシュ942などの1以上の小型で相対的に高速なキャッシュと共に、大型で相対的に低速なメモリストレージ902を有するかもしれない。メモリストレージ902は、プロセッサ904の動作を制御するための命令910とデータ912とを格納するかもしれない。   Memory system 940 may have a large, relatively slow memory storage 902 with one or more small, relatively fast caches such as instruction cache 944 and / or data cache 942. Memory storage 902 may store instructions 910 and data 912 for controlling the operation of processor 904.

メモリシステム940は、メモリの一般化された表現として意図され、ハードドライブ、CD−ROM、RAM(Random Access Memory)、DRAM(Dynamic RAM)、SRAM(Static RAM)、フラッシュメモリ及び関連する回路などの各種形態のメモリを有するかもしれない。メモリシステム940は、プロセッサ904により実行可能なデータ信号により表される命令910及び/又はデータ912を格納するかもしれない。命令910及び/又はデータ912は、ここに記載された技術の何れか又はすべてを実行するためのコード及び/又はデータを有するかもしれない。   The memory system 940 is intended as a generalized representation of memory, such as hard drives, CD-ROMs, RAM (Random Access Memory), DRAM (Dynamic RAM), SRAM (Static RAM), flash memory and related circuitry May have various forms of memory. Memory system 940 may store instructions 910 and / or data 912 represented by data signals executable by processor 904. The instructions 910 and / or data 912 may include code and / or data for performing any or all of the techniques described herein.

図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 processor 904 is connected to a centralized interrupt controller 110. Each processor 904 may have a front end 920 that provides instruction information to the execution core 930. The fetched instruction information may be buffered in the cache 225 to wait for execution by the execution core 930. The front end 920 may provide instruction information to the execution core 930 in program order. In at least one embodiment, front end 920 includes a fetch / decode unit 322 that determines the next instruction to be executed. In at least one embodiment of the system 900, the fetch / decode unit 322 may have a single next instruction pointer fetch logic 320. However, in embodiments where each processor 904 supports multiple thread contexts, the fetch / decode unit 322 implements different next instruction pointer fetch logic 320 for each supported thread context. The optional nature of additional next instruction pointer fetch logic 320 in a multiprocessor environment is illustrated by the dashed lines in FIG.

ここに記載された方法の各実施例は、ハードウェア、ハードウェアエミュレーションソフトウェア若しくは他のソフトウェア、ファームウェア又はこのような実現アプローチの組み合わせにより実現可能である。本発明の各実施例は、少なくとも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 exemplary system 900 is available from Intel Corporation, although other systems (including other microprocessors, engineering workstations, personal digital assistants, other portable devices, set-top boxes, etc.) are also available. Pentium (R), Pentium (R) Pro, Pentium (R) II, Pentium (R) III, Pentium (R) 4, Itanium (R), Itanium (R) 2 Microprocessor, Mobile It represents a processing system based on Intel (R) Pentium (R) III Processor-M, Mobile Intel (R) Pentium (R) 4 Processor-M. In one embodiment, the example system may run a version of the Windows operating system available from Microsoft Corporation, although other operating systems and graphical user interfaces may also be available.

本発明の特定の実施例が図示及び説明されたが、添付した請求項の範囲から逸脱することなく各種変更及び改良が可能であることは当業者に明らかであろう。例えば、中央化された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 centralized APIC state 202 may include only a single read port and a single write port. In such an embodiment, input system message queue 204, input local message queue 206, and interrupt sequencer block 214 utilize arbitration logic (not shown) to gain access to centralized APIC state 202. It may be.

また、例えば、図5に示された方法500の少なくとも1つの実施例は状態508を排除するかもしれない。当業者は、状態508がパフォーマンスエンハンスメント(パワーセービング)を提供するだけであり、添付した請求項の発明の実施例には必要でないことを認識するであろう。   Also, for example, at least one embodiment of the method 500 shown in FIG. Those skilled in the art will recognize that state 508 only provides performance enhancement (power saving) and is not required for the claimed invention embodiments.

また、例えば、上述した中央化されたインタラプトコントローラ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 controller 110 described above may eliminate the scoreboard 304. In such an embodiment, interrupt sequencer 214 may sequentially traverse entry 410 in architecture APIC state 302 to determine the next APIC instance to receive service from APIC logic 212.

このため、当業者は、本発明から逸脱することなくそれの最も広範な側面において各種変更及び改良が可能であることを認識するであろう。添付した請求項は、本発明の真の範囲内に属するそのようなすべての変更及び改良をその範囲内に含むものである。   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 system 104 core 110 interrupt controller 359 multi-core threading environment

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記載の装置。   The apparatus of claim 1, wherein the single logic block has non-redundant circuitry rather than redundant logic for each processing unit. 前記インタラプトシーケンサブロックは、公平性スキームに従って前記複数の処理ユニットのインタラプトイベントをスケジューリングする、請求項1記載の装置。   The apparatus of claim 1, wherein the interrupt sequencer block schedules interrupt events for the plurality of processing units according to a fairness scheme. 前記インタラプトシーケンサブロックは、前記ストレージエリアのシーケンシャルなトラバースに従って前記複数の処理ユニットのインタラプトイベントをスケジューリングする、請求項3記載の装置。   4. The apparatus of claim 3, wherein the interrupt sequencer block schedules interrupt events of the plurality of processing units according to a sequential traversal of the storage area. 前記処理ユニットの何れが保留中のインタラプトイベントを有しているかに関するデータを維持するためのスコアボードをさらに有する、請求項1記載の装置。   The apparatus of claim 1, further comprising a scoreboard for maintaining data regarding which of the processing units have pending interrupt events. 前記ストレージエリアはさらに、マイクロアーキテクチャ状態情報を格納する、請求項1記載の装置。   The apparatus of claim 1, wherein the storage area further stores microarchitecture state information. 前記複数のプロセッサは、ローカルインターコネクトを介し通信する、請求項1記載の装置。   The apparatus of claim 1, wherein the plurality of processors communicate over a local interconnect. 前記1以上の入力メッセージキューは、前記ローカルインターコネクトを介し入力インタラプトメッセージを受信するためのメッセージキューを有し、
前記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以上の入力メッセージキューは、システムインターコネクトを介し入力インタラプトメッセージを受信するためのメッセージキューを有し、
前記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以上の出力メッセージキューはさらに、前記ストレージエリアから前記出力インタラプトメッセージに関する情報を抽出する、請求項1記載の装置。   The apparatus of claim 1, wherein the one or more output message queues further extract information about the output interrupt message from the storage area. 前記1以上の出力メッセージキューはさらに、前記出力インタラプトメッセージの1以上の送信を禁止するためのファイアウォールロジックを有する、請求項1記載の装置。   The apparatus of claim 1, wherein the one or more output message queues further comprise firewall logic for prohibiting one or more transmissions of the output interrupt message. 前記1以上の入力メッセージキューはさらに、前記処理ユニットの1以上への前記入力インタラプトメッセージの1以上の送信を禁止するためのファイアウォールロジックを有する、請求項1記載の装置。   The apparatus of claim 1, wherein the one or more input message queues further comprise firewall logic for prohibiting one or more transmissions of the input interrupt message to one or more of the processing units. 複数の処理ユニットの1つのアーキテクチャインタラプト状態を決定するため、ストレージアレイを照会するステップと、
冗長でないインタラプト提供ブロックのインタラプト提供サービスについて前記処理ユニットの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.
前記インタラプト提供ブロックは、アドバンスド・プログラマブル・インタラプト・コントローラロジックを有する、請求項13記載の方法。   The method of claim 13, wherein the interrupt providing block comprises advanced programmable interrupt controller logic. 前記公平性スキームは、1以上の保留中のインタラプトイベントを有する前記処理ユニットに対するシーケンシャルラウンドロビンスキームである、請求項13記載の方法。   The method of claim 13, wherein the fairness scheme is a sequential round robin scheme for the processing unit having one or more pending interrupt events. 1以上のスレッドを実行する複数の処理ユニットと、
前記処理ユニットに接続されるメモリと、
前記複数の処理ユニットのインタラプト提供サービスを提供する共有されたインタラプトコントローラと、
を有するシステム。
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.
前記共有されたインタラプトコントローラはさらに、前記複数の処理ユニットのAPICインタラプト提供サービスを提供する、請求項16記載のシステム。   The system of claim 16, wherein the shared interrupt controller further provides an APIC interrupt providing service for the plurality of processing units. 前記処理ユニットは、自己完結したAPICインタラプト提供ロジックを有さない、請求項16記載のシステム。   The system of claim 16, wherein the processing unit does not have self-contained APIC interrupt providing logic. 前記共有されたインタラプトコントローラはさらに、ファイアウォールロジックを有する、請求項16記載のシステム。   The system of claim 16, wherein the shared interrupt controller further comprises firewall logic. 前記複数の処理ユニットに接続されるローカルインターコネクトをさらに有する、請求項16記載のシステム。   The system of claim 16, further comprising a local interconnect connected to the plurality of processing units. 前記共有されたインタラプトコントローラはさらに、前記ローカルインターコネクトを介し1以上のインタラプトメッセージの送信を禁止するファイアウォールロジックを有する、請求項20記載のシステム。   21. The system of claim 20, wherein the shared interrupt controller further comprises firewall logic that prohibits transmission of one or more interrupt messages over the local interconnect. 前記共有されたインタラプトコントローラに接続されるシステムインターコネクトをさらに有する、請求項16記載のシステム。   The system of claim 16, further comprising a system interconnect connected to the shared interrupt controller. 前記共有されたインタラプトコントローラはさらに、前記システムインターコネクトを介し1以上のインタラプトメッセージの送信を禁止するファイアウォールロジックを有する、請求項22記載のシステム。   23. The system of claim 22, wherein the shared interrupt controller further comprises firewall logic that prohibits transmission of one or more interrupt messages over the system interconnect. 前記共有されたインタラプトコントローラはさらに、前記複数の処理ユニットの間のインタラプトのシリアルサービスをスケジューリングする、請求項16記載のシステム。   The system of claim 16, wherein the shared interrupt controller further schedules an interrupt serial service between the plurality of processing units.
JP2011192704A 2011-09-05 2011-09-05 Centralized interrupt controller Pending JP2012009063A (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
US9069605B2 (en) Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention
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
US7941643B2 (en) Multi-thread processor with multiple program counters
US11360809B2 (en) Multithreaded processor core with hardware-assisted task scheduling
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
US10545890B2 (en) Information processing device, information processing method, and program
CN112540796A (en) Instruction processing device, processor and processing method thereof
JP2009515280A (en) Centralized interrupt controller
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
CN108845969B (en) Operation control method and operation system suitable for incompletely symmetrical multi-processing microcontroller
TWI823655B (en) Task processing system and task processing method applicable to intelligent processing unit
US20240134686A1 (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