JP6785222B2 - ヘテロジニアスマルチプロセッサシステムにおけるプロセッサ間割込のためのメカニズム - Google Patents

ヘテロジニアスマルチプロセッサシステムにおけるプロセッサ間割込のためのメカニズム Download PDF

Info

Publication number
JP6785222B2
JP6785222B2 JP2017509753A JP2017509753A JP6785222B2 JP 6785222 B2 JP6785222 B2 JP 6785222B2 JP 2017509753 A JP2017509753 A JP 2017509753A JP 2017509753 A JP2017509753 A JP 2017509753A JP 6785222 B2 JP6785222 B2 JP 6785222B2
Authority
JP
Japan
Prior art keywords
processor
register
ipi
bit position
bit
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.)
Active
Application number
JP2017509753A
Other languages
English (en)
Other versions
JP2017527903A (ja
Inventor
アンサリ,アーマド・アール
バートン,フェリックス
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.)
Xilinx Inc
Original Assignee
Xilinx Inc
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 Xilinx Inc filed Critical Xilinx Inc
Publication of JP2017527903A publication Critical patent/JP2017527903A/ja
Application granted granted Critical
Publication of JP6785222B2 publication Critical patent/JP6785222B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Microcomputers (AREA)
  • Bus Control (AREA)

Description

技術分野
本開示の例は、概してプロセッサ割込に関し、より特定的には、ヘテロジニアスマルチプロセッサシステムにおけるプロセッサ間割込に関する。
背景
集積回路(IC:integrated circuit)は、特定の機能を果たすように実現され得る。1つのタイプのICは、FPGA(field programmable gate array)などのプログラマブルICである。FPGAは、典型的にはプログラマブルタイルのアレイを含む。これらのプログラマブルタイルは、たとえば、入出力ブロック(IOB:input/output block)、構成可能論理ブロック(CLB:configurable logic block)、専用ランダムアクセスメモリブロック(BRAM:dedicated random access memory block)、乗算器、デジタル信号処理ブロック(DSP:digital signal processing block)、プロセッサ、クロックマネージャ、遅延ロックループ(DLL:delay lock loop)などを含み得る。
各プログラマブルタイルは、典型的には、プログラマブル・インターコネクト回路およびプログラマブル論理回路の両方を含む。プログラマブル・インターコネクト回路は、典型的には、プログラマブル・インターコネクト・ポイント(PIP:programmable interconnect point)により相互接続された異なる長さの多数のインターコネクト線を含む。プログラマブル論理回路は、たとえば関数発生器、レジスタ、算術論理などを含み得るプログラマブル要素を用いてユーザ設計の論理を実現する。
プログラマブル・インターコネクト回路およびプログラマブル論理回路は、典型的には、プログラマブル素子をどのように構成するかを規定する内部構成メモリセルの中に構成データストリームをロードすることによりプログラミングされる。構成データは、メモリから(たとえば外部PROMから)読出されるか、または外部デバイスによりFPGAに書込まれ得る。個別のメモリセルの集合的な状態がFPGAの機能を決定する。
別のタイプのプログラマブルICは、複合プログラマブル論理デバイス(complex programmable logic device)、すなわちCPLDである。CPLDは2つ以上の「機能ブロック」を含み、これらの「機能ブロック」は、互いに接続されるとともに、インターコネクト・スイッチマトリックスにより入力/出力(I/O)リソースに接続されている。CPLDの各機能ブロックは、プログラマブル論理アレイ(PLA:programmable logic array)およびプログラマブルアレイ論理(PAL:programmable array logic)デバイスで使用されるものと同様の2レベルAND/OR構造を含む。CPLDでは、構成データは、典型的には不揮発性メモリにおいてチップ上に格納される。いくつかのCPLDでは、構成データは不揮発性メモリにおいてチップ上に格納され、その後、初期構成(プログラミング)シーケンスの一環として揮発性メモリにダウンロードされる。
これらのプログラマブルICのすべてについて、デバイスの機能性は、その目的のためにデバイスに提供されるデータビットにより制御される。データビットは、揮発性メモリ(たとえば、FPGAおよびいくつかのCPLDにおけるようなスタティックメモリセル)、不揮発性メモリ(たとえば、いくつかのCPLDにおけるようなFLASHメモリ)、または他の任意のタイプのメモリセルに格納され得る。
他のプログラマブルICは、デバイス上のさまざまな素子をプログラマブルに相互接続する、金属層などの処理層を適用することにより、プログラミングされる。これらのプログラマブルICは、マスクプログラマブルデバイスとして公知である。プログラマブルICは、他のやり方で、たとえばヒューズまたはアンチヒューズ技術を使用して実現することもできる。「プログラマブルIC」という用語は、これらのデバイスを含み得るが、これらに限定されず、たとえば特定用途向け集積回路(ASIC:application specific integrated circuit)を含む、部分的にのみプログラマブルなデバイスもさらに包含し得る。たとえば、別のタイプのプログラマブルICは、ハードコード化されたトランジスタ論理と、ハードコード化されたトランジスタ論理をプログラマブルに相互接続するプログラマブルスイッチファブリックとの組合せを含む。
上述したさまざまなICのうちいくつかを含むいくつかの近頃のICは、プログラムコードを実行可能な組込プロセッサを含む。プロセッサは、プログラマブル論理回路およびプログラマブル・インターコネクト回路(まとめてICの「プログラマブル回路」とも称される)を含む同じダイの一部として作製され得る。プロセッサ内でのプログラムコードの実行は、IC上で利用可能であり得るプログラマブル回路を「プログラミングすること」または「構成すること」から区別されることを理解すべきである。ICのプログラマブル回路をプログラミングまたは構成するという行為の結果、プログラマブル回路内の構成データによって特定されるような異なる物理回路が実現される。
概要
本開示の例は、概して、ヘテロジニアスマルチプロセッサシステムにおけるプロセッサ間割込の管理に関する。
本開示の1つの例は、システムである。このシステムは、概して、第1のプロセッサと、第1のプロセッサとは異なるプロセッサタイプの第2のプロセッサと、第1のプロセッサおよび第2のプロセッサに結合されたプロセッサ間割込(IPI)回路とを備える。IPI回路は、典型的には、第1のプロセッサに関連付けられた第1のレジスタを含み、第1のレジスタにおける第1のビットは、第1のプロセッサが第2のプロセッサに割込することを要求しているか否かを表わす。IPI回路はさらに、第2のプロセッサに関連付けられた第2のレジスタを含み、第2のレジスタにおける第2のビットは、第2のプロセッサが第1のプロセッサに割込することを要求しているか否かを表わす。
本開示の別の例は、集積回路(IC)である。このICは、概して、1つ以上のハードワイヤードプロセッサを有する処理システム(PS)部と、物理的に構成可能な回路を含む1つ以上のソフトプロセッサを有するプログラマブル論理(PL)部と、1つ以上のプロセッサ間割込(IPI)回路とを備える。各IPI回路は、典型的には、異なるプロセッサ間の1つ以上の割込信号を生成するように構成され、割込信号のうち少なくとも1つが、PS部におけるハードワイヤードプロセッサのうちの1つと、PL部におけるソフトプロセッサのうちの1つとの間のものである。
本開示のさらに別の例は、IPIを処理するための方法である。この方法は、概して、第1のプロセッサからの、第2のプロセッサに割込するという要求をIPI回路で受信するステップを含む。第2のプロセッサは第1のプロセッサとは異なるプロセッサタイプである。上記方法はさらに、受信された要求に基づき、第1のプロセッサに関連付けられた第1のレジスタにおける第1のビットを更新するステップを含む。第1のビットは、第1のプロセッサが第2のプロセッサに割込することを要求していることを表わす。上記方法はさらに、上記更新に基づき、IPI回路から第2のプロセッサへ割込信号を送信するステップを含む。
上述した本開示の特徴を詳細に理解できるような態様で、上で概要を述べた実現例のより特定的な説明が、例を参照することにより得られるであろう。これらの例のうちいくつかは添付図面中に示される。しかしながら、添付図面は本開示の典型例を示すに過ぎず、したがって、その範囲を限定するものとして考慮すべきではないことに留意されたい。その理由は、本開示は他の同等に効果的な例を含む余地があるからである。
本開示の例に係るヘテロジニアスマルチプロセッサシステムの例を示す図である。 本開示の例に係る、インターコネクトを用いた、図1Aのヘテロジニアスマルチプロセッサシステムの例を示す図である。 本開示の例に係る、図1Aおよび図1Bのシステムにおけるプロセッサ間割込(IPI)コントローラにおけるレジスタの例を示す図である。 本開示の例に係る、図2のレジスタの内容に基づいて割込を発生させるための、IPIコントローラにおける論理の例を示す図である。 本開示の例に係る、ハードワイヤード処理システム(PS:processing system)と、異なる物理回路を実現するように構成可能なプログラマブル論理(PL:programmable logic)とを有する集積回路(IC)の例を示す図である。 本開示の例に係る、図4のシステムにおけるIPIコントローラのうちの1つにおけるレジスタの例を示す図である。 本開示の例に係る、図5のレジスタの内容に基づいて割込を発生させるための、IPIコントローラのうちの1つにおける論理の例を示す図である。 本開示の例に係る、ヘテロジニアスマルチプロセッサシステムにおける割込を処理するための動作例のフロー図である。
詳細な説明
本開示の例は、ヘテロジニアスマルチプロセッサシステムにおいてプロセッサ間割込を処理するための技術および装置を提供する。このシステムにおいて、プロセッサのうち少なくともいくつかは異なる性質のものであり、互いに直接割込することができない場合もある。本明細書で説明されるプロセッサ間割込(IPI)メカニズムは、さまざまなプロセッサ間のIPIインターフェイスとしてのIPIコントローラを提供する。IPIコントローラは、IPIソース毎のトリガレジスタと、IPI宛先毎の状態レジスタと、IPI宛先毎のクリアレジスタとを含み、これらのレジスタはシステムにおけるプロセッサの数に応じてスケール変更される。このスケーラブルIPIメカニズムにより、アプリケーションプロセッサ、リアルタイムプロセッサ、およびFPGA(field programmable gate array)アクセラレータなどの多様なプロセッサが、割込を介して互いに通信することが可能になる。IPIメカニズムは、論理領域およびプログラマブルな複雑さの両方の観点から低コストでもある。
包括的なヘテロジニアスマルチプロセッサシステムにおけるIPIメカニズムの例
複数のプロセッサを含むシステムでは、さまざまなプロセッサが互いに割込することが望ましいであろう。IPIメカニズムは、典型的には、たとえばキャッシュコヒーレンシ同期点、通信チャネル、またはメールボックスを実現するために用いられる。しかしながら、マルチプロセッサシステムは、同期のための内蔵された特徴を有さず互いに直接割込することができない、異なる性質のさまざまなプロセッサを含む場合がある。本明細書で用いられる「直接割込する」という表現は、概して、中間物を介さずに1つのプロセッサが別のプロセッサに割込可能である(たとえば、1つのプロセッサから別のプロセッサへ割込信号を送信することにより割込可能である)ことを指す。
図1Aは、本開示の例に係るヘテロジニアスマルチプロセッサシステム100の例を示す。本明細書で用いられるヘテロジニアスマルチプロセッサシステムは、概して、複数のプロセッサのうちの少なくとも2つが異なるプロセッサタイプである(たとえば、異なる種類または性質である)ような複数のプロセッサを含む処理システムを指す。あるいくつかの場合には、ヘテロジニアスマルチプロセッサシステムは、複数のプロセッサのうち少なくとも2つが(プロセッサタイプが同一であろうと異なるものであろうと)異なるプロセッサクラスタにあるような、複数のプロセッサを含む処理システムも指し得る。例として、システム100は3つの異なる処理ユニット102、104、106を含む。すなわち、プロセッサタイプAである処理ユニット0、プロセッサタイプBである処理ユニット1、およびプロセッサタイプCである処理ユニット2である。これらのヘテロジニアス処理ユニットが互いに割込するために、IPIコントローラ108が処理ユニット102、104、106の各々に接続されている。その結果、たとえば処理ユニット0が処理ユニット1または処理ユニット2に割込可能である。後述するように、IPIコントローラ108は、レジスタ110と、レジスタ内容を処理するための論理112とを含み得る。
図2および図3は、IPIコントローラ108の実現例を示す。本明細書で用いられるIPIの用語に関して、割込するプロセッサは、ソース、ソースプロセッサ、またはIPIソースと称され、割込されるプロセッサは、宛先、宛先プロセッサ、またはIPI宛先と称される。処理ユニット102、104、106のうちいずれも、ソースまたは宛先として機能し得る。本明細書で説明されるIPIメカニズムはモジュール方式で設計されてもよい。これにより、メカニズムが将来容易に拡張可能になる。最も小さいモジュールユニットは「セット」と呼ばれ、IPIソース1つにつき(または、レジスタのタイプによってはIPI宛先1つにつき)1つのレジスタを含む。図1Aのシステム100の例では、1セットは3つのレジスタを含む。
図2は、本開示の例に係る、IPIコントローラ108におけるレジスタの例を示す。IPIコントローラ108は、1セットの3つのトリガレジスタ202〜202(まとめて「レジスタ202」または「トリガレジスタ202」)と、1セットの3つの状態レジスタ204〜204(まとめて「レジスタ204」または「状態レジスタ204」)と、1セットの3つのクリアレジスタ206〜206(まとめて「レジスタ206」または「クリアレジスタ206」)とを含む。レジスタ202、204、および206は、少なくとも、マルチプロセッサシステム100における可能性のある宛先(またはソース)の数をカバーするのに十分なビットを有し、(もしあれば)残りのビットは将来的な拡張のための予備としてもよい。たとえば、トリガレジスタ202、状態レジスタ204、およびクリアレジスタ206は8ビットレジスタであってもよく、5最上位ビット(MSB:most significant bit)を予備とし、3最下位ビット(LSB:least significant bit)をマルチプロセッサシステム100における処理ユニットに関連付けてもよい。
IPIコントローラ108は、トリガレジスタ202のうち特定の1つに関連付けられたソースのみに、そのレジスタへのアクセスを許可してもよい。たとえばIPIコントローラ108は、処理ユニット1のみに、トリガレジスタ202へのアクセスを許可してもよい。他の如何なるソースによってアクセスされた場合にも、アドレス復号エラーが発生し得る。この態様では、IPIコントローラ108がさまざまなレジスタへのアクセスを制御することにより、保護メカニズムを提供する。1セット中の3つすべてのトリガレジスタ202は、各IPI宛先に1ビット、全部で3ビット(たとえば3LSB)割当てる同一フォーマットを有する。これらのビットのうちいずれかに論理「1」を書込むことにより、トリガレジスタ202のうち特定の1つに関連付けられたソースは、そのビットによって表わされた宛先において割込を発生させ得る。たとえば、処理ユニット1が処理ユニット2に割込することを要求していることを表わすために、IPIコントローラ108は、処理ユニット1に、トリガレジスタ202のIPI宛先ビット2に対して論理「1」を書込ませる。IPIソースは、その関連付けられたトリガレジスタから読出しを行ない、そのトリガの状態を得てもよい(たとえば、処理ユニット1はトリガレジスタ202から読出しを行ない、そのトリガの状態を得てもよい)。
特定のIPI宛先について割込を発生させるために、1セット中のトリガレジスタ202毎の特定のIPI宛先ビットは、IPIコントローラ108において論理的に合算され得る(たとえば、論理112のORゲート302により論理和演算されるか、または排他的論理和演算され得る)。図3に示すような他の例では、ORゲート302(または他の論理ゲート)は、1セット中のトリガレジスタ202毎の特定のIPI宛先ビットを論理和演算(または他の方法で合算)してもよい。ただし、割込されるべき当該特定のIPI宛先と同じ処理ユニットであるIPIソースに関連付けられた特定のトリガレジスタを除く(たとえば、所与の処理ユニットがIPIコントローラ108を介して自分自身に割込しない場合)。たとえば、処理ユニット0に関連付けられたトリガレジスタ202のビット1が論理「1」である場合、または、処理ユニット2に関連付けられたトリガレジスタ202のビット1が論理「1」である場合、IPIコントローラ108は処理ユニット1に関して割込を発生させてもよい。IPIコントローラ108における論理112は、同様に構成されたORゲート(または他の論理ゲート)を可能性のあるIPI宛先毎に含んでもよく、このIPIコントローラ108の例では全部で3つの別々の割込―発生ORゲートを含んでもよい。IPIコントローラ108における論理112は、他の処理ユニット(たとえば、処理ユニット0および処理ユニット2)に関して同様の論理構成を含んでもよい。
図2に戻ると、宛先プロセッサが割込されたとき、当該宛先プロセッサは、その宛先に割当てられた読出し専用状態レジスタ204のうちの関連付けられた1つから読出しを行ない、いずれのIPIソースが当該割込に寄与したかを判断し得る。たとえば処理ユニット2は、割込された後、状態レジスタ204のビット1を読出して、処理ユニット1が当該割込に関与したと判断し得る。1セット中の3つすべての状態レジスタ204は、各IPIソースに1ビット、全部で3ビット(たとえば、3LSB)割当てる同一のフォーマットを有する。書込み専用のクリアレジスタ206のうち同様の1つを用いて、状態レジスタ204のうち対応する1つにおけるIPIソースからの要求をクリアする。論理「1」が所与のクリアレジスタ206におけるいずれかのビットに対して書込まれた場合、そのソースに関連付けられた割込の要求がクリアされる。この場合、論理「0」を書込んでも何の影響も及ぼさない。1セット中には、各IPI宛先に関連付けられた個別の状態レジスタ204と個別のクリアレジスタ206とがある。同じ宛先に関連付けられた状態レジスタおよびクリアレジスタは、同じアドレスにマッピングされる。状態レジスタにもクリアレジスタにも関連付けられていない如何なるIPI宛先によってアクセスされた場合にも、アドレス復号エラーが発生し得る。
いくつかの例では、トリガレジスタ202は状態レジスタ204に直接書込みし得る。この場合、図2に示すように、実際の格納はトリガレジスタ202においてではなく、状態レジスタ204において行なわれ得る。この場合、トリガレジスタ202からのビットの代わりに、状態レジスタ204の対応するビットがIPIコントローラ108において論理的に合算(たとえば論理和演算)されることで割込が発生し得る。
図1Aはヘテロジニアスマルチプロセッサシステムの論理の実現例を示すことを意図しているが、いくつかの例では、さまざまな処理ユニット102、104、106が別々の専用ポートを介してIPIコントローラ108に接続されてもよい。図1Bのヘテロジニアスマルチプロセッサシステム150の例で示すような他の例では、さまざまな処理ユニット102、104、106とIPIコントローラ108との間のアクセスが、別々のポートを介してではなく、インターコネクト152(たとえばバス)を介して行なわれ得る。インターコネクト152から入ってくる共有ポートを用いるために、IPIコントローラ108はソース識別子(ID:identifier)または宛先IDをチェックし、いずれのIPIソースまたはIPI宛先がさまざまなレジスタ202、204、206にアクセスしようとしているかを判断し得る。IPIソースIDまたはIPI宛先IDをチェックすることにより、IPIコントローラ108は、特定のIPIソースを当該IPIソースに関連付けられたレジスタのみへのアクセスに制限し、このIPIソースが他のレジスタにアクセスすることを防止し得る。この制限されたアクセスにより、上述した保護メカニズムが提供される。
ハードワイヤードプロセッサおよびソフトプロセッサを有するICにおけるIPIメカニズムの例
2011年2月28日に出願され、「プログラマブル回路と組込プロセッサシステムとを含む集積回路(Integrated Circuit with Programmable Circuitry and an Embedded Processor System)」と題された米国特許第8,667,192号(Allaire等)に記載されるように、集積回路(IC)は組込プロセッサシステムとプログラマブル回路とを含み得る。プロセッサシステムは、プログラムコードを実行するように構成されており、ハードワイヤードであってもよく、プロセッサハードウェアリソースを含んでもよい。プログラマブル回路は、異なる物理回路を実現するように構成可能であるとともに、プロセッサシステムに結合され得る。プログラマブル回路は、プロセッサシステムのプロセッサハードウェアリソースの使用を共有するように構成可能であり得る。プロセッサシステムは、電源オンおよび/またはオフなどの、プログラマブル回路の局面を制御し得るとともに、プログラマブル回路における1つ以上の異なる物理回路を実現するための、プログラマブル回路の構成を制御し得る。組込プロセッサシステムにおけるハードワイヤードプロセッサと、プログラマブル回路におけるソフトプロセッサとの両方により、上記ICはヘテロジニアスマルチプロセッサシステムとして認められるとともに、本明細書で説明するIPIメカニズムを実現し得る。
図4は、本開示の例に係る、ハードワイヤード処理システム(PS)402と、異なる物理回路を実現するように構成可能なプログラマブル論理(PL)404とを有するIC400の例を示す。PS402は、特定用途向け集積回路(ASIC)部とも称されるが、アプリケーションおよび処理ユニット(APU:Application and Processing Unit)サブシステムにおける4つのプロセッサ406〜406(APU_0、APU_1、APU_2、およびAPU_3、まとめて「APUプロセッサ406」と呼ぶ)と、リアルタイム処理ユニット(RPU:Real-time Processing Unit)サブシステムにおける2つのプロセッサ408および408(RPU_0およびRPU_1、まとめて「RPUプロセッサ408」と呼ぶ)と、1つのパワーマネージメントユニット(PMU:Power Management Unit)プロセッサ410と、1つの構成およびセキュリティユニット(CSU:Configuration and Security Unit)プロセッサ412とを含み得る。PL404はFPGA部としても公知であり、4つのソフトプロセッサ414〜414(PL_0、PL_1、PL_2、およびPL_3、まとめて「ソフトプロセッサ414」と呼ぶ)を含み得る。APUサブシステムにおけるAPUプロセッサ406と、RPUサブシステムにおけるRPUプロセッサ408と、PMUプロセッサ410と、CSUプロセッサ412と、ソフトプロセッサ414とは、明確に異なるプロセッサタイプである。中間物を介さずに、特定のサブシステムにおける(または、あるプロセッサタイプの)プロセッサは、異なるサブシステムにおける(または、異なるプロセッサタイプの)プロセッサに割込することができない場合がある。
これらのヘテロジニアスプロセッサが互いに割込するために、IPIコントローラ416は、プロセッサ406、408、410、412、414の各々に接続されている。その結果、たとえばPL_2がAPU_3に割込可能となる。図示のように、IPIコントローラ416はPS402内に置かれてもよい。いくつかの例では、さまざまなプロセッサ406、408、410、412、414とIPIコントローラ416との間のアクセスは、別々の線を介してではなく、バスを介して行なわれ得る。
いくつかの例では、異なる割込タイプまたは割込「クラス(class)」が作成されてもよく、ICは割込クラス1つにつき1つのIPIコントローラを含んでもよい。割込クラスは、たとえば優先度または排他性に従って区別され得る。このように、同一グループのプロセッサに対して、2つ以上のIPIコントローラが例示され得る。たとえば、クラスは、リナックス(登録商標)・ベース(Linux-based)の割込クラスまたはパワー関連割込クラスを含み得る。図4のIC400の例では4つの異なる割込クラスがあるため、このICは4つの異なるIPIコントローラ416〜416(IPI_0、IPI_1、IPI_2、およびIPI_3、まとめて「IPIコントローラ416」と呼ぶ)を含む。(図5および図6に示されるような)IPIコントローラ416の実現例は、各IPIコントローラにおいて複製され得る。
図5および図6はIPIコントローラ416の実現例を示す。上述したように、割込するプロセッサはIPIソースと称され、割込されるプロセッサはIPI宛先と称される。プロセッサ406、408、410、412、414のうちいずれも、ソースまたは宛先として機能し得る。本明細書で説明するIPIメカニズムはモジュール方式で設計されたものである。これにより、将来的なIC400の型においてメカニズムが容易に拡張可能になるとともに、メカニズムが現行のICの型とのコード互換性を保つことが可能になる。最も小さいモジュールユニットは「セット」と呼ばれ、IPIソース1つにつき(またはIPI宛先1つにつき)1つのレジスタを含む。図4のIC400の例では、1セットが12個のレジスタを含む。
図5は、本開示の例に係るIPIコントローラ416におけるレジスタの例を示す。IPIコントローラ416は、1セットの12個のトリガレジスタ502と、1セットの12個の状態レジスタ504と、1セットの12個のクリアレジスタ506とを含む。レジスタ502、504、および506は、少なくとも、IC400における可能性のある宛先(またはソース)の数をカバーするのに十分なビットを有し、(もしあれば)残りのビットは将来的な拡張のための予備としてもよい。たとえば、トリガレジスタ502、状態レジスタ504、およびクリアレジスタ506は32ビットレジスタであってもよく、20最上位ビット(MSB)12〜31を予備としてもよい。
IPIコントローラ416は、トリガレジスタ502のうち特定の1つに関連付けられたIPIソースのみに、そのレジスタへのアクセスを許可してもよい。たとえばIPIコントローラ416は、PL_3のみに、トリガレジスタ50211へのアクセスを許可してもよい。他の如何なるソースによってアクセスされた場合にも、アドレス復号エラーが発生し得る。1セット中の12個すべてのトリガレジスタ502は、各IPI宛先に1ビット、全部で12ビット(たとえばLSB0〜11)割当てる同一フォーマットを有する。トリガレジスタ502のうち特定の1つにおいて、これらのビットのうちいずれかに論理「1」を書込むことにより、関連付けられたソースは、そのビットによって表わされた宛先において割込を発生させ得る。たとえば、PL_1をAPU_3に割込させるために、IPIコントローラ416は、PL_1に、トリガレジスタ502のIPI宛先ビット5に対して論理「1」を書込ませ得る。トリガレジスタ502が、そのレジスタに関連付けられたIPIソースにより読出された場合、当該ソースは、そのトリガの状態を逆に読出し(read back)てもよい。
図6に示すように、特定のIPI宛先について割込を発生させるために、1セット中のトリガレジスタ502毎の特定のIPI宛先ビットは、IPIコントローラ416のORゲート602により論理和演算され得る。たとえば、PL_1に関連付けられたトリガレジスタ502のビット5が論理「1」である場合、または、RPU_0に関連付けられたトリガレジスタ502のビット5が論理「1」である場合、APU_3に関して割込が発生し得る。IPIコントローラ416は、同様に構成されたORゲートを可能性のあるIPI宛先毎に含んでもよく、このIPIコントローラ416の例では全部で12個の別々の割込―発生ORゲートを含んでもよい。IPIコントローラ416は、他の処理ユニットに関して同様の論理構成を含んでもよい。
図5に戻ると、宛先プロセッサが割込されたとき、当該宛先プロセッサは、その宛先に割当てられた読出し専用状態レジスタ504のうちの関連付けられた1つから読出しを行ない、いずれのIPIソースが当該割込に寄与したかを判断し得る。たとえば、APU_3は、割込された後、それに関連付けられた状態レジスタ504のビット9を読出して、PL_1が当該割込に関与したと判断し得る。1セット中の12個すべての状態レジスタ504は、各IPIソースに1ビット、全部で12ビット(たとえば、12LSB)割当てる同一のフォーマットを有する。同様の書込み専用のクリアレジスタ506(たとえば、APU_3に関する506)を用いて、対応する状態レジスタ504(APU_3に関する504)におけるIPIソースからの要求をクリアする。論理「1」がクリアレジスタ506のうち特定の1つにおけるいずれかのビットに対して書込まれた場合、そのソースに関連付けられた割込の要求がクリアされる。この場合、論理「0」を書込んでも何の影響も及ぼさない。1セット中には、各IPI宛先に関連付けられた個別の状態レジスタ504と個別のクリアレジスタ506とがある。同じ宛先に関連付けられた状態レジスタおよびクリアレジスタは、同じアドレスにマッピングされる。状態レジスタにもクリアレジスタにも関連付けられていない如何なるIPI宛先によってアクセスされた場合にも、アドレス復号エラーが発生し得る。
いくつかの例によれば、IC400はペイロードレジスタも含み得る。ペイロードレジスタは、IC400のメモリ内に保持されてもよいし、またはIPIコントローラ内に置かれてもよい。メモリ内に格納される場合、ペイロードレジスタはメモリマップにおける固定アドレスを有し得る。ペイロードレジスタは、1セットの汎用レジスタであり得る。いくつかの例では、IPIコントローラ416の各々は、関連付けられたペイロードレジスタを有し得る。ペイロードレジスタは、1つのプロセッサが別のプロセッサに(たとえばIPIコントローラを介して)割込する場合に読出されるデータを格納し得る。いくつかの例では、このデータは、IPIコントローラからの割込信号受信時に何をすべきかを特定のプロセッサに指示し得る。
トリガレジスタ、状態レジスタ、およびクリアレジスタに関する保護メカニズムと同様に、ペイロードレジスタへのアクセスもソースID(または宛先ID)の使用によって制限され得る。このメカニズムは、あるペイロードレジスタへの書込みを特定のIPIソースのみに許可し得るとともに、特定のペイロードレジスタの読出しを特定のIPI宛先のみに許可し得る。
IPI動作の例
図7は、ヘテロジニアスマルチプロセッサシステムにおける割込を処理するための動作700の例のフロー図である。動作700は、IPIコントローラ108、またはIPIコントローラ416のうちの1つなどの、IPI回路により行なわれ得る。
702において、第1のプロセッサからの、第2のプロセッサに割込するという要求をIPI回路が受信することで、動作700は開始し得る。第2のプロセッサは第1のプロセッサとは異なるプロセッサタイプである。
704において、IPI回路は、702で受信された要求に基づき、第1のプロセッサに関連付けられた第1のレジスタにおける第1のビットを更新し得る。第1のビットは、第1のプロセッサが第2のプロセッサに割込することを要求していることを表わす。たとえば、第1のレジスタはIPI回路内に置かれてもよく、トリガレジスタであってもよい。第1のビットを更新することは、論理「1」を第1のビットに書込むことを含んでもよい。
706において、IPI回路は、704における更新に基づき、第2のプロセッサへ割込信号を送信し得る。
いくつかの例によれば、IPI回路は、第1のプロセッサの識別子をチェックして、第1のプロセッサの識別子が正しい場合にのみ、第1のビットを更新し得る。
いくつかの例によれば、動作700は、いずれのプロセッサが第2のプロセッサに割込することを要求したかを判断せよという、第2のプロセッサからの要求をIPI回路が受信することをさらに含んでもよい。この場合、IPI回路は、第2のプロセッサに関連付けられた第2のレジスタにおける第2のビットを読出し得る。第2のビットは、
第2のプロセッサが第1のプロセッサにより割込されたことを表わす。たとえば、第2のレジスタはIPI回路内に置かれてもよく、状態レジスタであってもよい。第2のプロセッサからの要求を受信した後、IPI回路は、第2のビットに基づく指標(indication)を第2のプロセッサに送信し得る。いくつかの例では、IPI回路は、第2のプロセッサの識別子をチェックして、第2のプロセッサの識別子が正しい場合にのみ、第2のビットに基づく指標を送信し得る。
ヘテロジニアスマルチプロセッサシステムにおけるプロセッサ間割込のためのメカニズムを説明してきた。1つの例では、上記システムは、概して、第1のプロセッサと、第1のプロセッサとは異なるプロセッサタイプの第2のプロセッサと、第1のプロセッサおよび第2のプロセッサに結合されたプロセッサ間割込(IPI)回路とを備える。IPI回路は、典型的には、第1のプロセッサに関連付けられた第1のレジスタを含み、第1のレジスタにおける第1のビットは、第1のプロセッサが第2のプロセッサに割込することを要求しているか否かを表わす。IPI回路はさらに、第2のプロセッサに関連付けられた第2のレジスタを含み、第2のレジスタにおける第2のビットは、第2のプロセッサが第1のプロセッサに割込することを要求しているか否かを表わす。
いくつかの例によれば、IPI回路は、第1のプロセッサに関連付けられた第3のレジスタをさらに含み、第3のレジスタにおける第3のビットは、第1のプロセッサが第2のプロセッサにより割込されたか否かを表わす。IPI回路はさらに、第2のプロセッサに関連付けられた第4のレジスタを含み、第4のレジスタにおける第4のビットは、第2のプロセッサが第1のプロセッサにより割込されたか否かを表わす。いくつかの例では、IPI回路は、第1のプロセッサに関連付けられた第5のレジスタをさらに含み、第5のレジスタにおける第5のビットは、第3のレジスタにおける第3のビットをクリアすべきか否かを表わす。IPI回路はさらに、第2のプロセッサに関連付けられた第6のレジスタを含み、第6のレジスタにおける第6のビットは、第4のレジスタにおける第4のビットをクリアすべきか否かを表わす。
いくつかの例によれば、上記システムは、IPI回路に結合された第3のプロセッサをさらに備え、第1のレジスタにおける第3のビットは、第1のプロセッサが第3のプロセッサに割込することを要求しているか否かを表わし、第2のレジスタにおける第4のビットは、第2のプロセッサが第3のプロセッサに割込することを要求しているか否かを表わす。第3のプロセッサは、第1のプロセッサと同じプロセッサタイプであってもよい。いくつかの例では、IPI回路は論理ゲートを含み、この論理ゲートは、第1のレジスタにおける第3のビットと、第2のレジスタにおける第4のビットとの間に論理和演算を適用して、第3のプロセッサに対する割込信号を生成する。
いくつかの例によれば、上記システムは、1つ以上の追加のプロセッサをさらに備える。第1のレジスタは1つ以上の追加のビットを含み、当該1つ以上の追加のビットは、上記1つ以上の追加のプロセッサに割込するための、対応する割込信号の生成を第1のプロセッサが要求しているか否かを表わす。この場合、第2のレジスタは1つ以上の追加のビットを含んでもよく、当該1つ以上の追加のビットは、上記1つ以上の追加のプロセッサに割込するための、対応する割込信号の生成を第2のプロセッサが要求しているか否かを表わす。いくつかの例では、第1のレジスタにおける上記1つ以上の追加のビットの少なくとも一部と、第2のレジスタにおける上記1つ以上の追加のビットの少なくとも一部とを(たとえば、現在はシステム内に存在しない1つ以上のプロセッサへの割込みに備えて)予備とする。
いくつかの例によれば、上記システムは、第1のプロセッサと、第2のプロセッサと、IPI回路とを含む集積回路(IC)をさらに備える。いくつかの例では、ICは、処理システム(PS)部とプログラマブル論理(PL)部とを含む。この場合、第1のプロセッサはPS部内に置かれてもよく、第2のプロセッサはPL部内に配置されてもよい。
いくつかの例によれば、第1のプロセッサはハードワイヤードプロセッサであり、第2のプロセッサは、異なる物理回路(たとえば、ソフトプロセッサ)を実現するように構成可能なプログラマブル回路を含む。
いくつかの例によれば、第2のプロセッサは第1のプロセッサに直接割込することができず、第1のプロセッサは第2のプロセッサに直接割込することができない。
いくつかの例によれば、IPI回路は、第1のレジスタの更新を許可する前に第1のプロセッサの識別子をチェックするように構成されるとともに、第2のレジスタの更新を許可する前に第2のプロセッサの識別子をチェックするように構成されている。
いくつかの例によれば、IPI回路は、インターコネクトを介して第1のプロセッサおよび第2のプロセッサに結合されている。
本発明の別の例は、集積回路(IC)である。このICは、概して、1つ以上のハードワイヤードプロセッサを有する処理システム(PS)部と、物理的に構成可能な回路を含む1つ以上のソフトプロセッサを有するプログラマブル論理(PL)部と、1つ以上のプロセッサ間割込(IPI)回路とを備える。各IPI回路は、典型的には、異なるプロセッサ間の1つ以上の割込信号を生成するように構成され、割込信号のうち少なくとも1つが、PS部におけるハードワイヤードプロセッサのうちの1つと、PL部におけるソフトプロセッサのうちの1つとの間のものである。
いくつかの例によれば、各IPI回路は第1のセットのレジスタを含む。第1のセット中の各レジスタは、ハードワイヤードプロセッサおよびソフトプロセッサのうちの各プロセッサに関連付けられている。第1のセット中の各レジスタは、集積回路におけるハードワイヤードプロセッサおよびソフトプロセッサの数以上のビット数を有する。ハードワイヤードプロセッサおよびソフトプロセッサのうち特定のプロセッサに関連付けられた第1のセット中の特定のレジスタにおいて、各ビットは、上記特定のプロセッサが、ハードワイヤードプロセッサおよびソフトプロセッサのうち異なる1つに割込することを要求しているか否かを表わす。
いくつかの例では、各IPI回路は第2のセットのレジスタを含む。第2のセット中の各レジスタは、ハードワイヤードプロセッサおよびソフトプロセッサのうちの各プロセッサに関連付けられている。第2のセット中の各レジスタは、集積回路におけるハードワイヤードプロセッサおよびソフトプロセッサの数以上のビット数を有する。ハードワイヤードプロセッサおよびソフトプロセッサのうち特定のプロセッサに関連付けられた第2のセット中の特定のレジスタにおいて、各ビットは、上記特定のプロセッサが、ハードワイヤードプロセッサおよびソフトプロセッサのうち異なる1つにより割込されたか否かを表わす。
いくつかの例によれば、各IPI回路は第3のセットのレジスタを含む。第3のセット中の各レジスタは、ハードワイヤードプロセッサおよびソフトプロセッサのうちの各プロセッサに関連付けられている。第3のセット中の各レジスタは、集積回路におけるハードワイヤードプロセッサおよびソフトプロセッサの数以上のビット数を有する。ハードワイヤードプロセッサおよびソフトプロセッサのうち特定のプロセッサに関連付けられた第3のセット中の特定のレジスタにおいて、各ビットは、第2のセットのレジスタにおける対応するビットをクリアすべきか否かを表わす。第1のセットのレジスタは読出し/書込みレジスタであってもよく、第2のセットのレジスタは読出し専用レジスタであってもよく、第3のセットのレジスタは書込み専用レジスタであってもよい。いくつかの例では、ハードワイヤードプロセッサは、4つのアプリケーション処理ユニット(APU)と、2つのリアルタイム処理ユニット(RPU)と、構成およびセキュリティユニット(CSU)と、パワーマネージメントユニット(PMU)とを含み、PL部は4つのソフトプロセッサを含み、全部で12個のプロセッサがある。第1、第2、および第3のセットのレジスタ中の各レジスタは、上記全部で12個のプロセッサに対応する12ビットのみを用いた32ビットレジスタである。
いくつかの例によれば、各IPI回路は、異なる割込クラスに関連付けられている。
いくつかの例によれば、IPI回路はPS部内に配置されている。
いくつかの例によれば、集積回路はペイロードレジスタをさらに含む。このペイロードレジスタは、異なるプロセッサ間の割込信号のうちの1つを、IPI回路のうちの1つが生成する場合に読出されるデータを格納するように構成されている。
本発明のさらに別の例は、IPIを処理するための方法である。この方法は、概して、第1のプロセッサからの、第2のプロセッサに割込するという要求をIPI回路で受信するステップを含む。第2のプロセッサは第1のプロセッサとは異なるプロセッサタイプである。上記方法はさらに、受信された要求に基づき、第1のプロセッサに関連付けられた第1のレジスタにおける第1のビットを更新するステップを含む。第1のビットは、第1のプロセッサが第2のプロセッサに割込することを要求していることを表わす。上記方法はさらに、上記更新に基づき、IPI回路から第2のプロセッサへ割込信号を送信するステップを含む。
上述したものは、本開示の例に向けられているが、本開示の基本的な範囲から逸脱せずに、本開示の他の例およびさらなる例が考案され得る。本開示の範囲は、以下の特許請求の範囲により規定される。

Claims (15)

  1. システムであって、
    第1のプロセッサと、
    前記第1のプロセッサとは異なるプロセッサタイプの第2のプロセッサと、
    前記第1のプロセッサおよび前記第2のプロセッサに結合されたプロセッサ間割込(IPI)回路とを備え、前記IPI回路は、
    前記第1のプロセッサに関連付けられた第1のレジスタ
    記第2のプロセッサに関連付けられた第2のレジスタを含み、
    前記第1のレジスタおよび前記第2のレジスタの各々は、
    第1のビット位置を含み、前記第1のビット位置は、それぞれのレジスタに関連付けられる前記第1のプロセッサおよび前記第2のプロセッサの各一方が前記第1のプロセッサに割込することを要求しているか否かを表わすビットを格納するように構成されており、前記第1のビット位置は、前記第1のレジスタと前記第2のレジスタとで同じビット位置であり、
    前記第1のレジスタおよび前記第2のレジスタの各々は、
    第2のビット位置を含み、前記第2のビット位置は、それぞれのレジスタに関連付けられる前記第1のプロセッサおよび前記第2のプロセッサの各一方が前記第2のプロセッサに割込することを要求しているか否かを表わすビットを格納するように構成されており、前記第2のビット位置は、前記第1のレジスタと前記第2のレジスタとで同じビット位置である、システム。
  2. 前記IPI回路は、
    前記第1のプロセッサに関連付けられた第3のレジスタ
    記第2のプロセッサに関連付けられた第4のレジスタとをさらに含み、
    前記第3のレジスタおよび前記第4のレジスタの各々は、
    第3のビット位置を含み、前記第3のビット位置は、それぞれのレジスタに関連付けられる前記第1のプロセッサおよび前記第2のプロセッサの各一方が前記第1のプロセッサにより割込されたか否かを表わすビットを格納するように構成されており、
    前記第3のレジスタおよび前記第4のレジスタの各々は、
    第4のビット位置を含み、前記第4のビット位置は、それぞれのレジスタに関連付けられる前記第1のプロセッサおよび前記第2のプロセッサの各一方が前記第2のプロセッサにより割込されたか否かを表わすビットを格納するように構成されている、請求項1に記載のシステム。
  3. 前記IPI回路は、
    前記第1のプロセッサに関連付けられた第5のレジスタと、
    前記第2のプロセッサに関連付けられた第6のレジスタとをさらに含み、
    前記第5のレジスタおよび前記第6のレジスタの各々は、
    第5のビット位置を含み、前記第5のビット位置は、前記第5のレジスタまたは前記第6のレジスタのそれぞれが関連付けられる前記第1のプロセッサおよび前記第2のプロセッサの各一方に関連付けられる、前記第3のレジスタおよび前記第4のレジスタの各一方の前記第3のビット位置に格納されたビットをクリアすべきか否かを表わすビットを格納するように構成されており、
    前記第5のレジスタおよび前記第6のレジスタの各々は、
    第6のビット位置を含み、前記第6のビット位置は、前記第5のレジスタまたは前記第6のレジスタのそれぞれが関連付けられる前記第1のプロセッサおよび前記第2のプロセッサの各一方に関連付けられる、前記第3のレジスタおよび前記第4のレジスタの各一方の前記第4のビット位置に格納されたビットをクリアすべきか否かを表わすビットを格納するように構成されている、請求項2に記載のシステム。
  4. 前記IPI回路に結合された第3のプロセッサをさらに備え、
    前記第1のレジスタおよび前記第2のレジスタの各々は、
    第3のビット位置を含み、前記第3のビット位置は、それぞれのレジスタが関連付けられる前記第1のプロセッサおよび前記第2のプロセッサの各一方が前記第3のプロセッサに割込することを要求しているか否かを表わすビットを格納するように構成されている、請求項1に記載のシステム。
  5. 前記IPI回路は論理ゲートを含み、前記論理ゲートは、前記第1のレジスタおよび前記第2のレジスタにおける、それぞれの前記第3のビット位置に格納されたそれぞれの前記ビットの間に論理和演算を適用して、前記第3のプロセッサに対する割込信号を生成する、請求項4に記載のシステム。
  6. 1つ以上の追加のプロセッサをさらに備え、
    前記第1のレジスタは1つ以上の追加のビットを含み、前記1つ以上の追加のビットは、前記1つ以上の追加のプロセッサに割込するための、対応する割込信号の生成を前記第1のプロセッサが要求しているか否かを表わし、
    前記第2のレジスタは1つ以上の追加のビットを含み、前記1つ以上の追加のビットは、前記1つ以上の追加のプロセッサに割込するための、対応する割込信号の生成を前記第2のプロセッサが要求しているか否かを表わす、請求項1に記載のシステム。
  7. 前記第1のレジスタにおける前記1つ以上の追加のビットの少なくとも一部と、前記第2のレジスタにおける前記1つ以上の追加のビットの少なくとも一部とを予備とする、請求項6に記載のシステム。
  8. 前記第1のプロセッサはハードワイヤードプロセッサを含み、
    前記第2のプロセッサは異なる物理回路を実現するように構成可能なプログラマブル回路を含む、請求項1に記載のシステム。
  9. 前記第2のプロセッサは前記第1のプロセッサに直接割込することができず、
    前記第1のプロセッサは前記第2のプロセッサに直接割込することができない、請求項1に記載のシステム。
  10. 前記IPI回路は、
    前記第1のレジスタの更新を許可する前に前記第1のプロセッサの識別子をチェックするように構成されるとともに、
    前記第2のレジスタの更新を許可する前に前記第2のプロセッサの識別子をチェックするように構成されている、請求項1に記載のシステム。
  11. 前記IPI回路は、インターコネクトを介して前記第1のプロセッサおよび前記第2のプロセッサに結合されている、請求項1に記載のシステム。
  12. 方法であって、
    第1のプロセッサからの、第2のプロセッサに割込するという要求をプロセッサ間割込(IPI)回路で受信するステップを含み、前記第2のプロセッサは前記第1のプロセッサとは異なるプロセッサタイプであり、
    前記IPI回路は、前記第1のプロセッサに関連付けられた第1のレジスタと、前記第2のプロセッサに関連付けられた第2のレジスタとを含み、
    前記第1のレジスタおよび前記第2のレジスタの各々は、
    第1のビット位置を含み、前記第1のビット位置は、それぞれのレジスタに関連付けられる前記第1のプロセッサおよび前記第2のプロセッサの各一方が前記第1のプロセッサに割込することを要求しているか否かを表わすビットを格納するように構成されており、前記第1のビット位置は、前記第1のレジスタと前記第2のレジスタとで同じビット位置であり、
    前記第1のレジスタおよび前記第2のレジスタの各々は、
    第2のビット位置を含み、前記第2のビット位置は、それぞれのレジスタに関連付けられる前記第1のプロセッサおよび前記第2のプロセッサの各一方が前記第2のプロセッサに割込することを要求しているか否かを表わすビットを格納するように構成されており、前記第2のビット位置は、前記第1のレジスタと前記第2のレジスタとで同じビット位置であり、
    前記方法はさらに、
    前記受信された要求に基づき、前記第1のレジスタの前記第2のビット位置におけるビットを更新するステップと、
    前記更新に基づき、前記IPI回路から前記第2のプロセッサへ割込信号を送信するステップを含、方法。
  13. 前記IPI回路により前記第1のプロセッサの識別子をチェックするステップと、
    前記第1のプロセッサの前記識別子が正しい場合にのみ、前記第1のレジスタの前記第2のビット位置における前記ビットを更新するステップとをさらに含む、請求項12に記載の方法。
  14. いずれのプロセッサが前記第2のプロセッサに割込することを要求したかを識別せよという、前記第2のプロセッサからの要求を前記プロセッサ間割込(IPI)回路で受信するステップと、
    第3のレジスタの第3のビット位置におけるビットを、前記IPI回路により読出すステップとをさらに含み、前記第3のレジスタは、前記第2のプロセッサに関連付けられ、前記第のレジスタの前記第3のビット位置における前記ビットは、前記第2のプロセッサが前記第1のプロセッサにより割込されたことを表わす、請求項12に記載の方法。
  15. 前記IPI回路により、前記第のレジスタの前記第3のビット位置における前記ビットに基づく指標を前記第2のプロセッサに送信するステップと、
    前記IPI回路により前記第2のプロセッサの識別子をチェックして、前記第2のプロセッサの前記識別子が正しい場合にのみ、前記第のレジスタの前記第3のビット位置における前記ビットに基づく前記指標を送信するステップとをさらに含む、請求項14に記載の方法。
JP2017509753A 2014-08-20 2015-08-17 ヘテロジニアスマルチプロセッサシステムにおけるプロセッサ間割込のためのメカニズム Active JP6785222B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/464,654 2014-08-20
US14/464,654 US9665509B2 (en) 2014-08-20 2014-08-20 Mechanism for inter-processor interrupts in a heterogeneous multiprocessor system
PCT/US2015/045575 WO2016028715A1 (en) 2014-08-20 2015-08-17 Mechanism for inter-processor interrupts in a heterogeneous multiprocessor system

Publications (2)

Publication Number Publication Date
JP2017527903A JP2017527903A (ja) 2017-09-21
JP6785222B2 true JP6785222B2 (ja) 2020-11-18

Family

ID=54066186

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017509753A Active JP6785222B2 (ja) 2014-08-20 2015-08-17 ヘテロジニアスマルチプロセッサシステムにおけるプロセッサ間割込のためのメカニズム

Country Status (6)

Country Link
US (1) US9665509B2 (ja)
EP (1) EP3183652B1 (ja)
JP (1) JP6785222B2 (ja)
KR (2) KR102536596B1 (ja)
CN (1) CN106575275B (ja)
WO (1) WO2016028715A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10585826B2 (en) * 2016-01-25 2020-03-10 Advanced Micro Devices, Inc. Using processor types for processing interrupts in a computing device
KR101936942B1 (ko) * 2017-08-28 2019-04-09 에스케이텔레콤 주식회사 분산형 컴퓨팅 가속화 플랫폼 장치 및 분산형 컴퓨팅 가속화 플랫폼 운영 방법
US10528513B1 (en) 2018-04-30 2020-01-07 Xilinx, Inc. Circuit for and method of providing a programmable connector of an integrated circuit device
US10877766B2 (en) * 2018-05-24 2020-12-29 Xilinx, Inc. Embedded scheduling of hardware resources for hardware acceleration
US10705993B2 (en) 2018-11-19 2020-07-07 Xilinx, Inc. Programming and controlling compute units in an integrated circuit
KR101973946B1 (ko) * 2019-01-02 2019-04-30 에스케이텔레콤 주식회사 분산형 컴퓨팅 가속화 플랫폼 장치
US11474970B2 (en) * 2019-09-24 2022-10-18 Meta Platforms Technologies, Llc Artificial reality system with inter-processor communication (IPC)
US11487594B1 (en) 2019-09-24 2022-11-01 Meta Platforms Technologies, Llc Artificial reality system with inter-processor communication (IPC)
US11520707B2 (en) 2019-11-15 2022-12-06 Meta Platforms Technologies, Llc System on a chip (SoC) communications to prevent direct memory access (DMA) attacks
US11190892B2 (en) 2019-11-20 2021-11-30 Facebook Technologies, Llc Audio sample phase alignment in an artificial reality system
CN111522773A (zh) * 2020-04-13 2020-08-11 Tcl华星光电技术有限公司 异构计算系统及采用该系统的异构计算方法
CN112363972B (zh) * 2020-10-20 2022-09-23 青岛信芯微电子科技股份有限公司 支持多cpu间通信的电子设备及方法
US11386034B2 (en) 2020-10-30 2022-07-12 Xilinx, Inc. High throughput circuit architecture for hardware acceleration
WO2024065829A1 (en) * 2022-09-30 2024-04-04 Intel Corporation User interrupt moderation for user inter-processor-interrupts

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4215399A (en) * 1978-08-24 1980-07-29 Texas Instruments Incorporated Special function control system for a dual microprocessor programmable process control system
US5210828A (en) * 1988-12-29 1993-05-11 International Business Machines Corporation Multiprocessing system with interprocessor communications facility
US5136714A (en) * 1989-12-04 1992-08-04 International Business Machines Corporation Method and apparatus for implementing inter-processor interrupts using shared memory storage in a multi-processor computer system
US5202998A (en) * 1990-08-31 1993-04-13 International Business Machines Corporation Fast, simultaneous multi-processor system status communication interface
WO1993000638A1 (en) * 1991-06-26 1993-01-07 Ast Research, Inc. Automatic distribution of interrupts controller for a multiple processor computer system
DE69223303T2 (de) * 1991-09-27 1998-06-18 Sun Microsystems Inc Verfahren und Gerät für die dynamische Zuweisung von unadressierten Unterbrechungen
US5319753A (en) * 1992-09-29 1994-06-07 Zilog, Inc. Queued interrupt mechanism with supplementary command/status/message information
US5513346A (en) 1993-10-21 1996-04-30 Intel Corporation Error condition detector for handling interrupt in integrated circuits having multiple processors
DE69531270T2 (de) * 1994-05-31 2004-04-22 Advanced Micro Devices, Inc., Sunnyvale Unterbrechungssteuerungsgeräte in symmetrischen Mehrprozessorsystemen
US5761516A (en) * 1996-05-03 1998-06-02 Lsi Logic Corporation Single chip multiprocessor architecture with internal task switching synchronization bus
US5790850A (en) * 1996-09-30 1998-08-04 Intel Corporation Fault resilient booting for multiprocessor computer systems
US5987538A (en) 1997-08-15 1999-11-16 Compaq Computer Corporation Apparatus for initiating generation of an inter-processor interrupt by a peripheral device not directly connected to any of the multi-processor local interrupt controllers
US6219743B1 (en) 1998-09-30 2001-04-17 International Business Machines Corporation Apparatus for dynamic resource mapping for isolating interrupt sources and method therefor
KR100313945B1 (ko) * 1999-03-03 2001-11-15 김영환 다단 인터럽트 제어 장치
US6845419B1 (en) * 2000-01-24 2005-01-18 Freescale Semiconductor, Inc. Flexible interrupt controller that includes an interrupt force register
US20010037426A1 (en) * 2000-05-31 2001-11-01 Pawlowski Chester W. Interrupt handling via a proxy processor
US20020091826A1 (en) * 2000-10-13 2002-07-11 Guillaume Comeau Method and apparatus for interprocessor communication and peripheral sharing
US6829660B2 (en) * 2001-12-12 2004-12-07 Emulex Design & Manufacturing Corporation Supercharge message exchanger
US8984199B2 (en) * 2003-07-31 2015-03-17 Intel Corporation Inter-processor interrupts
KR100817047B1 (ko) * 2004-02-27 2008-03-26 삼성전자주식회사 인터럽트 컨트롤러
US20060020852A1 (en) * 2004-03-30 2006-01-26 Bernick David L Method and system of servicing asynchronous interrupts in multiple processors executing a user program
CN100464319C (zh) * 2006-06-23 2009-02-25 华为技术有限公司 实现处理器之间进行通讯的装置和方法
US7533207B2 (en) * 2006-12-06 2009-05-12 Microsoft Corporation Optimized interrupt delivery in a virtualized environment
US7617346B2 (en) * 2007-02-27 2009-11-10 Integrated Device Technology, Inc. Rapid input/output doorbell coalescing to minimize CPU utilization and reduce system interrupt latency
US7730248B2 (en) * 2007-12-13 2010-06-01 Texas Instruments Incorporated Interrupt morphing and configuration, circuits, systems and processes
US8180944B2 (en) * 2009-01-26 2012-05-15 Advanced Micro Devices, Inc. Guest interrupt manager that records interrupts for guests and delivers interrupts to executing guests
US8356130B2 (en) * 2009-08-14 2013-01-15 Advanced Micro Devices, Inc. Mechanism for recording undeliverable user-level interrupts
US8234431B2 (en) * 2009-10-13 2012-07-31 Empire Technology Development Llc Interrupt masking for multi-core processors
US8489789B2 (en) * 2010-02-05 2013-07-16 Advanced Micro Devices, Inc. Interrupt virtualization
KR20110097447A (ko) * 2010-02-25 2011-08-31 삼성전자주식회사 인터럽트 프록시 기능을 구비한 시스템 온 칩 및 그에 따른 인터럽트 프록시 처리방법
US8601193B2 (en) * 2010-10-08 2013-12-03 International Business Machines Corporation Performance monitor design for instruction profiling using shared counters
US8667192B2 (en) 2011-02-28 2014-03-04 Xilinx, Inc. Integrated circuit with programmable circuitry and an embedded processor system
US9021146B2 (en) * 2011-08-30 2015-04-28 Apple Inc. High priority command queue for peripheral component
US9552313B2 (en) 2011-12-28 2017-01-24 Intel Corporation Delivering real time interrupts with an advanced programmable interrupt controller
US9009508B2 (en) * 2012-08-28 2015-04-14 Advanced Micro Devices, Inc. Mechanism for reducing interrupt latency and power consumption using heterogeneous cores
US9043521B2 (en) 2012-11-13 2015-05-26 Intel Corporation Technique for communicating interrupts in a computer system
US9582346B2 (en) * 2013-09-04 2017-02-28 Oracle International Corporation Selecting I/O interrupt target for multi-core server systems

Also Published As

Publication number Publication date
KR102536596B1 (ko) 2023-05-24
CN106575275B (zh) 2020-11-06
WO2016028715A1 (en) 2016-02-25
EP3183652A1 (en) 2017-06-28
KR20170042762A (ko) 2017-04-19
US20160055106A1 (en) 2016-02-25
KR102544392B1 (ko) 2023-06-15
US9665509B2 (en) 2017-05-30
CN106575275A (zh) 2017-04-19
JP2017527903A (ja) 2017-09-21
KR20220160709A (ko) 2022-12-06
EP3183652B1 (en) 2021-09-29

Similar Documents

Publication Publication Date Title
JP6785222B2 (ja) ヘテロジニアスマルチプロセッサシステムにおけるプロセッサ間割込のためのメカニズム
US11016906B2 (en) GPU virtualisation
US20200302090A1 (en) Selectively Disabling Configurable Communication Paths of a Multiprocessor Fabric
US9710274B2 (en) Extensible execution unit interface architecture with multiple decode logic and multiple execution units
EP3183657B1 (en) Virtualization of memory for programmable logic
US10037301B2 (en) Circuits and methods for inter-processor communication
EP4031963B1 (en) Tracing status of a programmable device
CN104662548A (zh) 用于嵌入式代码的保护方案
US8479042B1 (en) Transaction-level lockstep
KR20200139178A (ko) 집적 회로를 위한 데이터 프로세싱 엔진 타일 아키텍처
US9589088B1 (en) Partitioning memory in programmable integrated circuits
US10043027B1 (en) Generation of mask-value pairs for managing access to memory segments
US20240160449A1 (en) Configurable interconnect address remapper with event recognition

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20170328

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180814

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190529

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190618

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190918

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200427

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200929

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201026

R150 Certificate of patent or registration of utility model

Ref document number: 6785222

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250