JP6382446B2 - デッドロック回避のための方法及び回路 - Google Patents

デッドロック回避のための方法及び回路 Download PDF

Info

Publication number
JP6382446B2
JP6382446B2 JP2017523259A JP2017523259A JP6382446B2 JP 6382446 B2 JP6382446 B2 JP 6382446B2 JP 2017523259 A JP2017523259 A JP 2017523259A JP 2017523259 A JP2017523259 A JP 2017523259A JP 6382446 B2 JP6382446 B2 JP 6382446B2
Authority
JP
Japan
Prior art keywords
circuit
communication
posted
write
communication circuit
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
JP2017523259A
Other languages
English (en)
Other versions
JP2018502359A (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 JP2018502359A publication Critical patent/JP2018502359A/ja
Application granted granted Critical
Publication of JP6382446B2 publication Critical patent/JP6382446B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/4031Coupling between buses using bus bridges with arbitration
    • G06F13/4036Coupling between buses using bus bridges with arbitration and deadlock prevention
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Communication Control (AREA)

Description

本開示は、一般に集積回路(IC)に関し、より詳細にはデータ通信に関する。
プログラマブル集積回路(IC)は、特定の論理機能を実行するようにプログラムすることができるデバイスである。1つのタイプのプログラマブルICであるフィールドプログラマブルゲートアレイ(FPGA)は、通常、プログラマブルタイルのアレイを含む。各プログラマブルタイルは、プログラマブルインターコネクトとプログラマブルロジックの両方を含み得る。プログラマブルインターコネクトは、プログラマブルインターコネクトポイント(PIP)によって相互接続された様々な長さの多数のインターコネクトラインを、通常、含む。プログラマブルロジックは、例えば、ファンクションジェネレータ、レジスタ、算術論理などを含むことができるプログラマブルエレメントを使用して、ユーザーデザインのロジックを実装する。プログラマブルインターコネクトおよびプログラマブルロジックは、プログラマブルエレメントがどのように構成されるかを規定する内部コンフィギュレーションメモリセルにコンフィギュレーションデータストリームをロードすることによって、通常、プログラムされる。コンフィギュレーションデータは、メモリから(例えば、外部PROMから)読み出すことができ、または外部デバイスによってFPGAに書き込むことができる。その後、個々のメモリセルの集合状態が、FPGAの機能を決定する。
いくつかのプログラマブルICには、プログラムコードを実行できるエンベデッドプロセッサが含まれる。プロセッサは、ICの「プログラマブル回路」とも総称されるプログラマブルロジック回路およびプログラマブルインターコネクト回路を含む同じダイの一部として製造することができる。プロセッサ内でのプログラムコードの実行は、IC上で利用可能であり得るプログラマブル回路を「プログラムすること」または「構成すること」と区別できる、ということを理解されたい。ICのプログラマブル回路をプログラムまたは構成する行為は、プログラマブル回路内にコンフィギュレーションデータによって特定される様々な物理的回路の実装をもたらす。
エンベデッドプロセッサシステムを有するプログラマブルICは、しばしば、オペレーティングメモリ、ソフトウェア命令記憶部、入力/出力、およびコンピュータシステムの他の構成要素を含み、システムオンチップ(SOC)ソリューションと呼ばれることもある。設計者は、プログラマブルロジックに複雑な機能を実装して、効率とスループットを向上させることができる。このアーキテクチャーの組み合わせにより、シリアルとパラレルの処理の有利な混合、フレキシビリティ、およびスケーラビリティがもたらされ、特にインテリジェントビデオ、デジタル通信、マシンシステム、医療機器の分野において、より最適なシステムパーティションが可能になる。
設計者に利用可能な様々なオプションが与えられると、設計は、ソフトウェアと1つ以上の集積回路のプログラマブルロジックとの間で分割されたいくつかの部分を含むことができる。しかしながら、異なる部分間の通信のための適切なアレンジメントを実装することは、設計者に課題を提起する。データバスアーキテクチャは、システムの様々な部分間における及び外部装置とのデータ通信のための便利な方法を提供する。
データバスは、PCI(Peripheral Component Interconnect)、PCIe(PCI Express)、AMBA(Advanced Microcontroller Bus Architecture)などの多数の異なるデータバスプロトコルで実装することができる。設計者は、選択されたデータバスプロトコルに準拠した方法でデータバスとの間でデータを通信するためのインターフェース回路を実装する。
第1の通信プロトコルを使用して第1のデータポートを介してデータを通信する第1の通信回路を含むシステムが開示される。システムはまた、第2の通信プロトコルを使用して第2のデータポートを介してデータを通信する第2の通信回路を含む。第2の通信プロトコルは、リードリクエストとライトリクエストが受信される順序で、リードリクエストとライトリクエストを処理する。ブリッジ回路が、第1の通信回路の第1のデータポートと第2の通信回路の第2のデータポートとの間でデータを通信するように構成される。ブリッジ回路は、バッファ回路を介してノンポステッドライトを第2の通信回路に伝達し、ポステッドライトを、バッファ回路をバイパスする通信経路を介して第2の通信回路に伝達するように構成される。
データ通信のための方法もまた開示される。第1の通信回路を使用して、データは、第1の通信プロトコルを使用して第1のデータバスを介して通信される。第2の通信回路を使用して、リードリクエストとライトリクエストが受信される順序でリードリクエストとライトリクエストを処理する第2の通信プロトコルを使用して第2のデータバスを介して、データが通信される。ノンポステッドライトは、バッファ回路を介して第1の通信回路から第2の通信回路に伝達される。ポステッドライトは、バッファ回路をバイパスする通信経路を介して第1の通信回路から第2の通信回路に伝達される。
第1の通信プロトコルを使用して第1のデータポートを介してデータを通信する第1の通信回路を含む他のシステムも開示される。システムはまた、リードリクエストとライトリクエストが受信される順序でリードリクエストとライトリクエストを処理する第2の通信プロトコルを使用して第2のデータポートを介してデータを通信する第2の通信回路を含む。システムはブリッジ回路も含む。ブリッジ回路は、バッファ回路を含む第1および第2のデータポート間の第1の通信経路を有する。ブリッジ回路はまた、バッファ回路をバイパスする第1および第2のデータポート間の第2の通信経路を有する。ブリッジ回路は、第1の通信回路から受信したライトトランザクションがポステッドライトかノンポステッドライトかを判定するように構成された入力回路を含む。ライトトランザクションがノンポステッドライトであると判定したことに応答して、入力回路は、ノンポステッドライトを第2の通信経路を介して第2の通信回路に供給する。ライトトランザクションがポステッドライトであると判定したことに応答して、入力回路は、ポステッドライトを第2の通信経路を介して第2の通信回路に供給する。
他の特徴が、以下の詳細な説明および特許請求の範囲の考察から認識されるであろう。
開示された方法および回路の様々な態様および特徴は、以下の詳細な説明を概観し、図面を参照して明らかになるであろう。
1つ以上の実施形態と一致する、通信ブリッジ回路を有するシステムを示す。 1つ以上の実施形態と一致する、第1および第2の通信回路並びに通信ブリッジ回路を動作させるプロセスを示す。 1つ以上の実施形態と一致する、AXI−PCIeブリッジ回路を示す。 1つ以上の実施形態と一致して構成され得るプログラマブルICを示す。
プログラマブルICは、異なるそれぞれの通信プロトコルを使用してデータを通信する回路を含むことができる。例えば、プログラマブルICは、AXI通信プロトコルを使用して、第1のバス上のシステムの異なる部分間でデータを通信し、PCIe通信プロトコルを使用して、システムのI/Oポートに接続された外部デバイスと通信してもよい。異なる通信プロトコルを使用する回路間でデータを通信する場合、各プロトコルで使用されるデータフォーマット間でデータを変換するためにインターフェース回路を使用することができる。
しかし、様々な通信プロトコルによって使用される順序付け規則のために、通信回路が処理を続ける前に、各通信回路が他からのデータを必要とするデッドロック状況が生じることがある。たとえば、AXIデバイスからPCIeデバイスへのデータチャネルがノンポステッドライトによってブロックされると、デッドロックが発生することがある。ノンポステッドライトでは、送信デバイスが次のデータトランザクションを進める前に、受信デバイスがトランザクションの成功または失敗を示すために、確認応答で応答する必要がある。ノンポステッドライトは、例えば、I/O書き込み、及び/又はコンフィギュレーションライトを含むことができる。対照的に、ポステッドライトは、他のトランザクションを進める前に確認応答を必要としないライトトランザクションである。ポステッドライトは、例えば、メモリ書き込みおよび/またはデータメッセージを含むことができる。参照を容易にするために、ポステッド及びノンポステッドのリード及びライトは、データトランザクションと総称されることがある。
幾つかのアプローチは、ダウンストリームPCIeデバイスが追加のデータトランザクションを処理できる状態になるまで、ブリッジ回路内にAXIデバイスからのすべてのダウンストリームデータトランザクションをバッファリングすることによって、AXIデバイスとPCIeデバイス間のデッドロックを防止することができる。データトランザクションをバッファリングすることにより、順序付け規則を維持しながら、AXIデバイスが新しいデータトランザクションを発行し続けるようにすることができる。より具体的には、AXIデバイスは、PCIeデバイスからのアップストリーム確認応答をブロックする可能性のある保留中のアップストリームデータトランザクションを完了するために必要なデータトランザクションを発行してもよい。しかし、バッファリングされ得るダウンストリームトランザクションの数は、ブリッジ回路で利用可能なバッファ記憶によって制限される。さらに、アプリケーションに応じて、ノンポステッドライトが完了するのを待っている間に、多数のダウンストリームリード/ライトトランザクションを受け取ることがある。
第1の通信プロトコル(例えば、AXI)を使用してデータを通信する第1のデバイスと、第2の通信プロトコル(例えばPCIe)を使用してデータを通信する第2のデバイスとの間でデータを通信するためのデッドロック耐性のあるブリッジ回路を含むシステムが開示される。ブリッジ回路は、第1の通信プロトコルを使用して第1の通信回路とデータを通信し、第2の通信プロトコルを使用して第2の通信回路とデータを通信するように構成される。通信プロトコルのうちの少なくとも1つは、リードリクエストとライトリクエストが受信される順序で、リードリクエストとライトリクエストを処理するように構成される。ブリッジは、バッファを介して第2のデバイスへダウンストリームノンポステッドライトを伝達することによってデッドロックを防止するように構成される。他のダウンストリームリード/ライトリクエストは、バッファリングすることなく、第1のデバイスから第2のデバイスに伝達される。このアプローチでは、すべてのダウンストリームデータトランザクションをバッファリングするアプローチと比較して、バッファリングする必要があるデータトランザクションが少なくなる。したがって、バッファサイズを縮小することができ、それにより製造コストを低減することができる。
開示された回路および方法は、様々な通信プロトコルを使用して回路間でデータを通信するために使用され得る。しかし、説明を簡単にするために、AXIデバイスとPCIeデバイスとの間のデータ通信を参照して、例と実施形態を主に説明する。
ここで図面を参照すると、図1は、1つ以上の実施形態による通信ブリッジ回路120を有するシステムを示す。システムは、第1の通信プロトコル(例えば、AXI)を使用して第1のデータポート112を介して通信するように構成された第1の通信回路110を含む。システムはまた、リードリクエストとライトリクエストが受信される順序でリードリクエストとライトリクエストを処理する第2の通信プロトコル(たとえばPCIe)を使用して第2のデータポート132を介してデータを通信するように構成された第2の通信回路130を含む。
ブリッジ回路120が、第1の通信回路の第1のデータポートと第2の通信回路の第2のデータポートとの間でデータを通信するように構成される。ブリッジ回路120は、第1の通信プロトコルを使用して第1の通信回路110とデータを通信し、第2の通信プロトコルを使用して第2の通信回路130とデータを通信するように構成される。
図2は、1つ以上の実施形態と一致する、第1および第2の通信回路並びに通信ブリッジ回路を動作させるためのプロセスを示す。説明を容易にするために、図1および図2を一緒に議論する。ブロック210において、データは、第1の通信プロトコルを使用して第1の通信回路110によって通信される。ブロック220において、データは、第2の通信回路130によって通信される。ブロック210および220で実行される通信は、例えば、第1および第2の通信回路110および130、処理回路140、メモリ160、および/または外部回路を含む様々な回路とデータを送受信することができる。第1および第2の通信回路によって通信されるデータが、第1および第2の通信回路間の通信のためである場合、判定ブロック230が、プロセスをブロック240に向ける。そうでない場合、判定ブロック230は、プロセスをブロック210に戻す。
ブロック240において、データは、ブリッジ回路120を使用して、第1の通信回路と第2の通信回路との間で通信される。ブリッジ回路120は、2つの通信プロトコルによって使用されるそれぞれのデータフォーマット間でデータメッセージ/パケットを変換することによって、第1および第2の通信回路間でデータを通信する。ブリッジ回路120は、ライトトランザクションがポステッドライトトランザクションかノンポステッドライトトランザクションかによって、第1の通信回路110から第2の通信回路130へライトトランザクションを異なる方法で通信する242。ノンポステッドライトトランザクションの場合、判定ブロック244は、ブロック246において、ブリッジ回路120に、バッファ回路122を介して第1の通信回路110から第2の通信回路130へノンポステッドライトトランザクションを通信させる。ポステッドライトトランザクションの場合、判定ブロック244は、ブロック248で、ブリッジ回路120に、バッファ回路122をバイパスする通信パスを使用して第2の通信回路130にポステッドライトを通信させる。上述したように、第1の通信回路110から第2の通信回路130へのノンポステッドライトのバッファリングは、第1および第2の通信回路がデッドロック状態になるのを防止するのに役立つ。
様々なアプリケーションにおいて、第1および第2の通信回路は、通信に加える機能を実行してもよく、様々な通信プロトコルを使用して通信してもよい。1つの可能なアプリケーションでは、第1の通信回路110は、処理回路140のキャッシュ150に記憶されたデータとメモリ160に記憶されたデータとの間の一貫性を維持するように構成されたキャッシュコヒーレントインターコネクトであってもよい。処理回路140、キャッシュ150、およびメモリ160(破線で示されている)は、例示的なアプリケーションの議論を容易にするために図1に示されており、システムの他のいくつかの実施形態には必要とされない。
例示的なキャッシュコヒーレントインターコネクトアプリケーションでは、第1の通信回路は、データポート112でのリードリクエストの受信に応答して、キャッシュ150およびメモリ160内のデータ値を読み取り/スヌープし、修正/ライトバックすることができる。例えば、キャッシュ150によってキャッシュされるメモリ140のメモリアドレスを示すリードリクエストを受信することに応答して、第1の通信回路110は、メモリアドレスに対応するデータ値をキャッシュから取り出すことができる。第1の通信回路110は、メモリ160およびキャッシュ150とデータを通信し、キャッシュコヒーレンシを維持するために、AXIコヒーレンシ・エクステンション(ACE)を使用することができる。
ブリッジ回路120によるノンポステッドライトのバッファリングがなければ、デッドロックが、第1のAXI通信回路(例えば110)と第2のPCIe通信回路(例えば130)との間で発生する可能性がある。次の例は、図1に示すシステムにおいてデッドロックがどのように発生し、防止されるかを示す。
1)メモリ160のメモリアドレス(X)が、キャッシュ150にキャッシュされる。
2)第2の通信回路130が、キャッシュされたメモリアドレス(X)へのアップストリームライト(A)を実行する。
3)処理回路140が、第2の通信回路130へのダウンストリームノンポステッドライト(B)を実行する。このノンポステッドライト(B)は、第2の通信回路130が、ノンポステッドライト(B)を完了するための確認応答(C)を提供する前に、アップストリームライト(A)の完了を必要とする。
4)第1の通信回路のデータポート112が、例えば、ノンポステッドライト(B)のためにブリッジ120によって受け入れられない保留中のダウンストリームリード/ライトリクエスト(D)によって、ブロックされるようになる。
5)前のステップとは無関係に、キャッシュ150は、キャッシュされたアドレス(X)のメモリへのライトバック(E)をトリガすることができる。
6)ライトバック(E)は、ノンポステッドライト(A)の後にスケジュールされる。
7)アップストリームライト(A)は、第1の通信回路110に、キャッシュされたアドレス(X)をスヌープ(F)させる。
上記のシナリオでは、アドレス(X)の前回のライトバック(E)が完了するまで、アドレス(X)のスヌープ(F)は確認応答されない。ノンポステッドライト(B)が前に進んで、第1の通信回路110によってリード/ライトリクエスト(D)が発行されるまで、ライトバック(E)は完了しない。スヌープ(F)で待機中のアップストリームライト(A)が完了するまで、ノンポステッドライト(B)は完了できない。これらのトランザクションのいずれも進行できないため、通信回路はデッドロック状態にある。ダウンストリームリード/ライトリクエストをバッファリングすることによって、ブリッジ回路は、ノンポステッドライトが完了するのを待つ間に、新しいリード/ライトトランザクションを受け取り続けることができる。したがって、第1の通信回路は、リード/ライトリクエストDによってブロックされず、アドレス(X)のライトバック(E)を実行し、スヌープ(F)を実行して、アップストリームライトAを完了することができ、それによって、デッドロックを解決する。
上に示したように、デッドロックは、すべてのダウンストリームリード/ライトトランザクションをバッファリングすることによって回避することができる。ブリッジ回路120は、ダウンストリームリード/ライトトランザクションを必ずしも全てバッファリングせずとも、デッドロックを防止することができる。1つ以上の実施形態では、ブリッジ回路120は、バッファ回路(図1に図示せず)内に第1の通信回路130から第2の通信回路170へのノンポステッドライトのみをバッファリングするように構成される。ノンポステッドライトは、例えば、先入れ先出し(FIFO)バッファにバッファリングされてもよい。ブリッジ回路120は、バッファリングすることなく、第2の通信回路130に他のダウンストリームリード/ライトトランザクションを提供する。これにより、バッファリングする必要があるデータトランザクションの数が削減され、全てのダウンストリームデータトランザクションをバッファリングする場合と比較して、バッファサイズが縮小される。いくつかの実施形態では、バッファ回路は、所与の時間に保留中のノンポステッドライトの少なくとも最大数を格納するように構成される。例えば、ブリッジ回路および第2の通信回路が、第1の期間内にノンポステッドライトを完了するように構成されている場合、バッファ回路は、第1の期間内に第1の通信回路によって発行され得るノンポステッドライトリクエストの少なくとも最大数をバッファリングするように構成することができる。ノンポステッドライトの数は、ポステッドライトおよびノンポステッドライトの合計数よりも大幅に少なくなる可能性があるため、バッファサイズは、第1の期間内に発行される可能性のあるポステッドライトおよびノンポステッドライトの最大数をバッファリングするために必要なバッファサイズよりも小さくすることができる。
ブリッジ回路120は、ブリッジ回路によってバッファリングされている保留中のノンポステッドライトよりもポステッドライトを優先させることができる。これにより、ブリッジ回路は、ポステッドライトの進行を保証することができる。さらに、ポステッドライトは、さもなければアイドル状態であるダウンストリームチャネルを利用することができ、それによってスループットが向上する。
様々なアプリケーションにおいて、第1および第2の通信回路110および130は、ノンポステッドライトによってブロックされているダウンストリームチャネルから生じる他のデッドロックシナリオに従い得ることが理解される。ブリッジ回路120によるノンポステッドライトのバッファリングは、同様に、このようなシナリオにおけるデッドロックを回避するのに役立つ。
図3は、1つ以上の実施形態と一致するAXI−PCIeブリッジ回路を示す。AXI−PCIeブリッジ回路310は、AXI通信回路(図3には図示せず)とPCIeインターフェース340との間でデータを通信するように構成される。PCIeインターフェース340は、PCIe通信プロトコルに従って、PCIeインターフェースに接続されたPCIeデバイス(図示せず)とのデータトランザクション350を開始する。PCIeは、トランザクション層342、データリンク層344、および物理層346からなる階層プロトコルである。トランザクション層342は、(リクエストおよびレスポンスに関する)パケットベースのスプリットトランザクションを使用して、パケットベースのトランザクションを開始および維持する。データリンク層344は、データパケットの送信のためのシーケンス番号付けおよび巡回冗長検査(CRC)を提供する。物理層346は、それぞれが送信ペアの信号線と受信ペアの信号線とを含むいくつかのデータレーンを使用して、データを送信および受信する。
AXI−PCIeブリッジ回路310は、ダウンストリームデータ302をAXI通信回路からPCIeインターフェース340に通信するためのダウンストリーム回路320を含む。ノンポステッドライトは、先入れ先出し(FIFO)バッファ328を介して、AXI−PCIeブリッジ回路310によってPCIeインターフェース340に伝達される。他のデータトランザクション(ポステッドリード/ライトおよびノンポステッドリード)は、FIFOバッファ328をバイパスするデータパス322を介して、AXI−PCIeブリッジ回路310によってPCIeインターフェース340に伝達される。図3に示すように、ダウンストリーム回路は、AXIプロトコルによって使用されるアドレス(例えば、AXIデータバス上のAXI−PCIeブリッジ回路310のアドレス)と、PCIeインターフェース340に接続されたPCIeデバイスに使用されるアドレスとの間の変換を実行するように構成されたアドレス変換回路326を含んでもよい。PCIeの場合、デバイスのコンフィギュレーションレジスタにアクセスするため、コンフィギュレーションリード/ライト(コンフィギュレーションライトはノンポステッドである)にアドレス変換は不要であることに留意されたい。従って、ノンポステッドリードは、データパス324を経由してアドレス変換回路326をバイパスすることができる。
いくつかの実施形態では、AXI−PCIeブリッジ回路310は、ダウンストリームデータ302内のノンポステッドライトを識別し、ノンポステッドライトをFIFOバッファ328にルーティングする入力回路321を含む。いくつかの実施形態では、入力回路321は、ライトリクエストの宛先アドレスに基づいて、ライトリクエストがポステッドライトかノンポステッドライトかを判定することができる。宛先アドレスがコンフィギュレーションアドレス空間の範囲内にある場合、ライトリクエストはノンポステッドライトと判定される。
AXI−PCIeブリッジ回路310はまた、アップストリームデータ304をPCIeインターフェース340からAXI通信デバイスに伝達するためのアップストリーム回路330を含む。アップストリーム回路330は、PCIeデバイスによって使用されるアドレスとAXIプロトコルによって使用されるアドレスとの間の変換を実行するように構成されたアドレス変換回路336を含む。ダウンストリーム回路320と同様に、変換回路336は、割り込みなどの、いくつかのアップストリームデータに対してアドレス変換を実行する必要はない。アドレス変換を必要としないアップストリームデータは、アドレス変換回路336をバイパスするデータパス334を経由してAXI通信回路に伝達されてもよい。
図3は、AXI−PCIeブリッジ回路に含まれ得るすべての回路を示すものではなく、他の回路が様々な実施形態において含まれることを排除するものではない。むしろ、開示された回路は、様々な他の機能を実行するための追加の回路を含むように適合されてもよい。例えば、いくつかの実施形態では、AXI−PCIeブリッジ回路310は、アドレス変換なしでプロトコルの1つによって使用されるアドレスへの直接アクセスを提供するために使用され得るダイレクトメモリアクセス(DMA)回路360を含み得る。種々の実施形態は、追加的または代替的に、様々な他の回路を含むことができる。
図4は、1つ以上の実施形態に従って構成され得るプログラマブルIC402を示す。プログラマブルICは、プロセッシングサブシステム410およびプログラマブルロジックサブシステム430を含むシステムオンチップ(SOC)とも呼ばれる。プロセッシングサブシステム410は、ユーザープログラムの実行を介して、ユーザーデザインのソフトウェア部分を実行するようにプログラムされてもよい。プログラムは、コンフィギュレーションデータストリームの一部として指定されてもよく、またはオンチップ若しくはオフチップのデータストレージデバイスから取り出されてもよい。プロセッシングサブシステム410は、1つ以上のソフトウェアプログラムを実行するための様々な回路412,414,416、および418を含むことができる。回路412,414,416、および418は、例えば、1つ以上のプロセッサコア、浮動小数点ユニット(FPU)、割り込み処理ユニット、オンチップメモリ、メモリキャッシュ、および/またはキャッシュコヒーレントインターコネクトを含むことができる。
プログラマブルIC402のプログラマブルロジックサブシステム430は、ユーザーデザインのハードウェア部分を実装するようにプログラムすることができる。例えば、プログラマブルロジックサブシステムは、コンフィギュレーションデータストリームに指定された一組の回路を実装するようにプログラムすることができるいくつかのプログラマブルリソース432を含むことができる。プログラマブルリソース432は、プログラマブルインターコネクト回路、プログラマブルロジック回路、およびコンフィギュレーションメモリセルを含む。プログラマブルロジックは、例えば、ファンクションジェネレータ、レジスタ、算術論理などを含むことができるプログラマブルエレメントを使用して、ユーザーデザインのロジックを実装する。プログラマブルインターコネクト回路は、プログラマブルインターコネクトポイント(PIP)によって相互接続された様々な長さの多数のインターコネクトラインを含むことができる。
プログラマブルリソース432は、プログラマブルインターコネクト回路およびプログラマブルロジック回路がどのように構成されるかを定めるコンフィギュレーションメモリセルにコンフィギュレーションデータストリームをロードすることによってプログラムすることができる。次いで、個々のメモリセルの集合状態が、プログラマブルリソース432の機能を判定する。コンフィギュレーションデータは、メモリから(例えば、外部PROMから)読み出すことができ、または外部デバイスによってプログラマブルIC402に書き込むことができる。いくつかの実施形態では、コンフィギュレーションデータは、プログラマブルロジックサブシステム430に含まれるコンフィギュレーションコントローラ434によってコンフィギュレーションメモリセルにロードされてもよい。いくつかの他の実施形態では、コンフィギュレーションデータは、プロセッシングサブシステム410によって実行される始動プロセスによってコンフィギュレーションメモリセルにロードされてもよい。
プログラマブルIC402は、プロセッシングサブシステム410を、プログラマブルロジックサブシステム430内に実装された回路と相互接続するための様々な回路を含むことができる。この例では、プログラマブルIC402は、プロセッシングサブシステム410およびプログラマブルロジックサブシステム430の様々なデータポート間でデータ信号をルーティングすることができるコアスイッチ426を含む。コアスイッチ426はまた、プログラマブルロジックサブシステム430またはプロセッシングサブシステム410のいずれかと、プログラマブルICの様々な他の回路(例えば、内部データバス)との間でデータ信号をルーティングすることもできる。代替的または追加的に、プロセッシングサブシステム410は、コアスイッチ426をバイパスして、プログラマブルロジックサブシステムに直接接続するためのインターフェースを含むことができる。そのようなインターフェースは、例えば、ARMによって公表されたAMBA AXIプロトコル仕様(AXI)を使用して、実装することができる。
いくつかの実施形態では、プロセッシングサブシステム410およびプログラマブルロジックサブシステム430は、メモリコントローラ421を介してオンチップメモリ422またはオフチップメモリ(図示せず)のメモリ位置を読み書きすることもできる。メモリコントローラ421は、限定しないが、16ビット、32ビット、ECC付き16ビットなどであれ、デュアルデータレート(DDR)2、DDR3、低電力(LP)DDR2タイプのメモリを含む1つ以上の異なるタイプのメモリ回路と通信するように実装することができる。メモリコントローラ421が通信することができる異なるメモリタイプのリストは、例示のみのために提供されており、限定または網羅的なものではない。図4に示すように、プログラマブルIC402は、サブシステム410および430によって使用される仮想メモリアドレスを、メモリコントローラ421が特定のメモリ位置にアクセスするために使用する物理メモリアドレスに変換するためのメモリ管理ユニット420およびトランスレーションルックアサイドバッファ424を含むことができる。
プログラマブルICは、外部回路とのデータ通信のための入出力(I/O)サブシステム450を含むことができる。I/Oサブシステム450は、例えば、フラッシュメモリタイプI/Oデバイス、高性能I/Oデバイス(例えば、PCIe)、低性能インターフェース、デバッグI/Oデバイス、および/またはRAM I/Oデバイスを含む様々なタイプのI/Oデバイスまたはインターフェースを含むことができる。
I/Oサブシステム450は、460Aおよび460Bとして示す1つ以上のフラッシュメモリインターフェース460を含むことができる。例えば、フラッシュメモリインターフェース460のうちの1つ以上は、4ビット通信用に構成されたクワッドシリアル・ペリフェラル・インターフェース(QSPI)として実装することができる。フラッシュメモリインターフェース460のうちの1つ以上は、パラレル8ビットNOR/SRAMタイプのインターフェースとして実装することができる。フラッシュメモリインターフェース460のうちの1つ以上は、8ビットおよび/または16ビット通信用に構成されたNANDインターフェースとして実装することができる。記載された特定のインターフェースは、例示のために提供され、限定のためではないことを理解されたい。異なるビット幅を有する他のインタフェースを使用することができる。
I/Oサブシステム450は、メモリインタフェース460より高い性能レベルを提供する1つ以上のインターフェース462を含むことができる。インターフェース462A〜462Cの各々は、DMAコントローラ464A〜464Cにそれぞれ結合することができる。例えば、インターフェース462のうちの1つ以上は、ユニバーサルシリアルバス(USB)タイプのインターフェースとして実装することができる。インターフェース462のうちの1つ以上は、ギガビットイーサネットタイプのインターフェースとして実装することができる。インターフェース462のうちの1つ以上は、セキュアデジタル(SD)タイプのインターフェースとして実装することができる。
I/Oサブシステム450はまた、インターフェース462よりも低い性能レベルを提供する、インターフェース466A〜466Dなどの1つ以上のインターフェース466を含むことができる。例えば、インターフェース466のうちの1つ以上は、汎用I/O(GPIO)タイプのインターフェースとして実装することができる。インターフェース466のうちの1つ以上は、汎用非同期送受信回路(UART)タイプのインターフェースとして実装することができる。インターフェース466のうちの1つ以上は、シリアル・ペリフェラル・インターフェース(SPI)バスタイプのインターフェースの形態で実装することができる。インターフェース466のうちの1つ以上は、コントローラエリアネットワーク(CAN)タイプのインターフェースおよび/またはICタイプのインターフェースの形態で実装することができる。インターフェース466のうちの1つ以上は、トリプルタイマーカウンタ(TTC)および/またはウォッチドッグタイマー(WDT)タイプのインターフェースの形態で実装することもできる。
I/Oサブシステム450は、プロセッサJTAG(PJTAG)インターフェース468Aおよびトレースインターフェース468Bなどの1つ以上のデバッグインターフェース468を含むことができる。PJTAGインターフェース468Aは、プログラマブルIC402のための外部デバッグインターフェースを提供することができる。トレースインターフェース468Bは、プロセッシングサブシステム410またはプログラマブルロジックサブシステム430からデバッグ、例えば、トレース情報を受信するためのポートを提供することができる。
図示されているように、インターフェース460,462,466、および468の各々は、マルチプレクサ470に結合することができる。マルチプレクサ470は、プログラマブルIC402の外部ピン、例えばプログラマブルIC402が配置されるパッケージのボールなどに直接ルーティングまたは結合され得る複数の出力を提供する。例えば、プログラマブルIC402のI/Oピンは、インターフェース460,462,466、および468の間で共有することができる。ユーザは、インターフェース460〜468のどれを使用するか、したがって、どれをマルチプレクサ470を介してプログラマブルIC402のI/Oピンに結合するかを選択するように、コンフィギュレーションデータストリームによって、マルチプレクサ470を構成することができる。I/Oサブシステム450はまた、インターフェース462〜468をプログラマブルロジックサブシステムのプログラマブルロジック回路に接続するためのファブリックマルチプレクサI/O(FMIO)インターフェース(図示せず)を含むことができる。これに加えて、またはこれに代えて、プログラマブルロジックサブシステム430は、プログラマブルロジック内に1つ以上のI/O回路を実装するように構成することができる。いくつかの実施形態では、プログラマブルIC402は、電力および/または安全管理のための様々な回路を有するサブシステム440を含むこともできる。例えば、サブシステム440は、プログラマブルIC402の様々なサブシステムに電力を供給するために使用される1つ以上の電圧ドメインを監視および維持するように構成された電力管理ユニット446を含むことができる。いくつかの実施形態では、電力管理ユニット446は、使用中のサブシステムへの電力を停止することなく、アイドル時に、個々のサブシステムの電力を停止して、電力消費を低減することができる。
サブシステム440は、正しい動作を保証するためにサブシステムのステータスを監視する安全回路を含むこともできる。例えば、サブシステム440は、(例えば、ステータスレジスタ444に示されるような)様々なサブシステムのステータスを監視するように構成された1つ以上のリアルタイムプロセッサ442を含むことができる。リアルタイムプロセッサ442は、エラーを検出することに応答して幾つかのタスクを実行するように構成することができる。例えば、いくつかのエラーの場合、リアルタイムプロセッサ442は、エラーの検出に応答してアラートを生成することができる。別の例として、リアルタイムプロセッサ442は、サブシステムをリセットして、サブシステムを正しい動作に復元しようと試みることができる。サブシステム440は、様々なサブシステムを相互接続するために使用され得るスイッチネットワーク448を含む。例えば、スイッチネットワーク448は、様々なサブシステム410,430,及び440をI/Oサブシステム450の様々なインターフェースに接続するように構成することができる。いくつかのアプリケーションでは、スイッチネットワーク448を使用して、監視されるサブシステムからリアルタイムプロセッサ442を分離することもできる。そのような分離は、リアルタイムプロセッサ442が他のサブシステムで発生するエラーの影響を受けないことを保証するために、特定のアプリケーション規格(例えば、IEC−61508 SIL3またはISO−26262規格)によって要求されることがある。
第1の通信プロトコルを使用して第1のデータポートを介してデータを通信するように構成された第1の通信回路と、リード及びライトリクエストが受信される順序でリード及びライトリクエストを処理する第2の通信プロトコルを使用して第2のデータポートを介してデータを通信するように構成された第2の通信回路と、第1の通信回路の第1のデータポートと第2の通信回路の第2のデータポートとの間でデータを通信するように構成されたブリッジ回路であって、ノンポステッドライトを、バッファ回路を経由して第2の通信回路に伝達し、ポステッドライトを、バッファ回路をバイパスする通信経路を経由して第2の通信回路に伝達するように構成されたブリッジ回路と、を含むシステムが開示され得る。
そのようなシステムは、第1の通信回路に接続されたメモリと、第1の通信回路に結合され、メモリからデータをキャッシュするためのキャッシュを有する処理回路とを更に含んでもよく、第1の通信回路は、キャッシュによってキャッシュされるメモリのメモリアドレスを示すリードリクエストを第1のデータポートで受信することに応答して、キャッシュからメモリアドレスに対応するデータ値を取り出すように更に構成され、保留中のノンポステッドライトによってブロックされているキャッシュからのデータ値のライトバックに関するデッドロックが、バッファ回路を経由する第2の通信回路へのノンポステッドライトの通信によって、防止される。
そのようなシステムでは、ブリッジ回路は、第2の通信回路へのノンポステッドライトよりも第2の通信回路へのポステッドライトを優先させるようにさらに構成することができる。
そのようなシステムでは、バッファ回路が、先入れ先出し(FIFO)バッファであってもよい。
そのようなシステムでは、ブリッジ回路は、第1の通信プロトコルを使用して第1の通信回路とデータを通信し、第2の通信プロトコルを使用して第2の通信回路とデータを通信するように構成されてもよい。
そのようなシステムでは、ブリッジ回路は、第1の通信回路と第2の通信回路との間のポステッドリードおよびライトトランザクションのためにアドレス変換を実行するように構成および準備されたアドレス変換回路を含むことができる。
そのようなシステムでは、ブリッジ回路は、第1または第2の通信回路のうちの1つからのリードおよびライトトランザクションに、アドレス変換回路をバイパスするデータパスでの、第1または第2の通信回路のうちの他の1つへのアクセスを提供するように構成されたダイレクトメモリアクセス回路を含んでもよい。
そのようなシステムでは、ブリッジ回路および第2の通信回路は、第1の通信回路からのノンポステッドライトを受信したことに応答して、第1の期間内にノンポステッドライトに確認応答を提供するように構成されてもよく、バッファ回路は、第1の期間において第1の通信回路によって発行され得るノンポステッドライトリクエストの少なくとも最大数をバッファリングするように構成される。
そのようなシステムでは、バッファ回路は、第1の期間に第1の通信回路によって発行され得るノンポステッドおよびポステッドライトリクエストの最大数より少ない数をバッファリングするように構成することができる。
そのようなシステムでは、ブリッジ回路は、第1の通信回路からの書き込みに応答して、書き込みがポステッドライトかノンポステッドライトかを判定するように構成された回路を含むことができる。
そのようなシステムでは、ブリッジ回路は、第1の通信回路からの書き込みに応答して、書き込みがポステッドライトかノンポステッドライトかを宛先アドレスに基づいて判定するように構成された回路を含むことができる。
別の例では、データ通信のための方法が提供され得る。そのようなデータ通信方法は、第1の通信回路を使用して、第1の通信プロトコルを使用して第1のデータポートを介してデータを通信することと、第2の通信回路を使用して、リードリクエストとライトリクエストが受信される順序でリードリクエストとライトリクエストを処理する第2の通信プロトコルを使用して第2のデータポートを介してデータを通信することと、第1の通信回路から第2の通信回路へバッファ回路を経由してノンポステッドライトを通信することと、バッファ回路をバイパスする通信経路を経由して第1の通信回路から第2の通信回路へポステッドライトを通信することと、を含み得る。
このような方法では、第1の通信回路から第2の通信回路へのポステッドライトの通信は、バッファ回路に記憶されたノンポステッドライトを通信する前に、ポステッドライトを第2の通信回路に通信することを含んでもよい。
このような方法は、第1の通信回路に接続されたメモリと第1の通信回路に接続されたキャッシュに記憶されたデータの間のデータコヒーレンシを維持するために、第1の通信回路を用いることを更に含んでもよい。
そのような方法では、バッファ回路が、先入れ先出し(FIFO)バッファである。
そのような方法は、第1の通信回路と第2の通信回路との間のポステッドリードトランザクションおよびライトトランザクションのためのアドレス変換を実行することをさらに含むことができる。
このような方法は、第1の通信回路から書き込みを受信することに応答して、書き込みがポステッドライトかノンポステッドライトかを宛先アドレスに基づいて判定することをさらに含むことができる。
そのような方法は、書き込みがノンポステッドライトであると判定したことに応答して、ノンポステッドライトをバッファ回路にルーティングすることと、書き込みがポステッドライトであると判定したことに応答して、バッファ回路をバイパスする通信経路にポステッドライトをルーティングすることとを、更に含んでもよい。
他のシステムが開示され得る。このようなシステムは、第1の通信プロトコルを使用して第1のデータポートを介してデータを通信するように構成された第1の通信回路と、リードリクエストとライトリクエストが受信される順序でリードリクエストとライトリクエストを処理する第2の通信プロトコルを使用して第2のデータポートを介してデータを通信するように構成された第2の通信回路と、バッファ回路を含む第1のデータポートと第2のデータポートとの間の第1の通信経路、バッファ回路をバイパスする第1および第2のデータポート間の第2の通信経路、及び第1の通信回路から受信したライトトランザクションがポステッドライトかノンポステッドライトかを判定し、ライトトランザクションがノンポステッドライトであると判定したことに応答して、ノンポステッドライトを第2の通信経路を経由して第2の通信回路に提供し、ライトトランザクションがポステッドライトであると判定したことに応答して、ポステッドライトを第2の通信経路を経由して第2の通信回路に提供するように構成された入力回路を含むブリッジ回路とを含んでもよい。
そのようなシステムでは、入力回路は、ライトトランザクションがポステッドライトであるかノンポステッドライトであるかを、ライトトランザクションに示された宛先アドレスに基づいて判定するように、構成することができる。
この方法および回路は、様々なシステムおよびアプリケーションに適用可能であると考えられる。他の態様および特徴は、明細書の考察から当業者には明らかであろう。例えば、態様および特徴は、場合によっては個々の図に記述されることがあるが、組合せが明示的に示されていない場合でも、組合せとして明示的に記述されている場合でも、ある図の特徴を他の図の特徴と組み合わせることができる、ということが理解されるであろう。本明細書および図面は、単なる例示としてみなされ、本発明の真の範囲は、添付の特許請求の範囲によって示されることが意図されている。

Claims (15)

  1. 第1の通信プロトコルを使用して第1のデータポートを介してデータを通信するように構成された第1の通信回路と、
    リードリクエスト及びライトリクエストが受信される順序で前記リードリクエスト及び前記ライトリクエストを処理する第2の通信プロトコルを使用して第2のデータポートを介してデータを通信するように構成された第2の通信回路と、
    前記第1の通信回路の前記第1のデータポートと前記第2の通信回路の前記第2のデータポートとの間でデータを通信するように構成されたブリッジ回路であって、バッファ回路を経由して前記第2の通信回路に全てのノンポステッドライトを通信し、前記バッファ回路をバイパスする通信経路を経由してバッファリングなしで前記第2の通信回路にポステッドライトを通信するように構成されたブリッジ回路と
    を備えるシステム。
  2. 前記第1の通信回路に接続されたメモリと、
    前記第1の通信回路に結合され、前記メモリからデータをキャッシュするためのキャッシュを有する処理回路と
    を更に備え、
    前記第1の通信回路は、前記キャッシュによってキャッシュされている前記メモリのメモリアドレスを示すリードリクエストを前記第1のデータポートで受信したことに応答して、前記キャッシュから前記メモリアドレスに対応するデータ値を取り出すように更に構成され、
    保留中のノンポステッドライトによってブロックされている前記キャッシュからのデータ値のライトバックに関するデッドロックが、バッファ回路を経由する前記第2の通信回路への前記ノンポステッドライトの通信によって防止される、請求項1に記載のシステム。
  3. 前記ブリッジ回路は、前記第2の通信回路へのノンポステッドライトよりも前記第2の通信回路へのポステッドライトを優先させるように更に構成される、請求項1又は2に記載のシステム。
  4. 前記バッファ回路は、先入れ先出し(FIFO)バッファであり、
    前記ブリッジ回路は、前記バッファ回路をバイパスする通信経路を経由してポステッド及びノンポステッドリードを通信するように構成される、請求項1から3のいずれか一項に記載のシステム。
  5. 前記ブリッジ回路は、前記第1の通信プロトコルを使用して前記第1の通信回路とデータを通信し、前記第2の通信プロトコルを使用して前記第2の通信回路とデータを通信するように構成される、請求項1から4のいずれか一項に記載のシステム。
  6. 前記ブリッジ回路は、前記第1の通信回路と前記第2の通信回路との間のポステッドリード及びライトトランザクションのためのアドレス変換を実行するように構成及び準備されたアドレス変換回路を含む、請求項1から5のいずれか一項に記載のシステム。
  7. 前記ブリッジ回路は、前記第1の通信回路又は前記第2の通信回路の一方からのリード及びライトトランザクションに、前記アドレス変換回路をバイパスするデータパスでの、前記第1の通信回路又は前記第2の通信回路の他方へのアクセスを提供するように構成されたダイレクトメモリアクセス回路を含む、請求項6に記載のシステム。
  8. 前記ブリッジ回路及び前記第2の通信回路は、前記第1の通信回路からノンポステッドライトを受信したことに応答して、第1の期間内に前記ノンポステッドライトに確認応答を提供するように構成され、
    前記バッファ回路は、前記第1の期間において前記第1の通信回路によって発行され得るノンポステッドライトリクエストの少なくとも最大数をバッファリングするように構成される、請求項1から7のいずれか一項に記載のシステム。
  9. 前記バッファ回路は、前記第1の期間において前記第1の通信回路によって発行され得るノンポステッド及びポステッドライトリクエストの最大数より少ない数をバッファリングするように構成される、請求項8に記載のシステム。
  10. 前記ブリッジ回路は、前記第1の通信回路からの書き込みに応答して、前記書き込みがポステッドライトかノンポステッドライトかを宛先アドレスに基づいて判定するように構成された回路を含む、請求項1から9のいずれか一項に記載のシステム。
  11. 第1の通信回路を使用して、第1の通信プロトコルを用いて第1のデータポートを介してデータを通信することと、
    第2の通信回路を使用して、リードリクエスト及びライトリクエストが受信される順序で前記リードリクエスト及び前記ライトリクエストを処理する第2の通信プロトコルを用いて第2のデータポートを介してデータを通信することと、
    前記第1の通信回路から前記第2の通信回路へバッファ回路を経由して全てのノンポステッドライトを通信することと、
    前記バッファ回路をバイパスする通信経路を経由してバッファリングなしで前記第1の通信回路から前記第2の通信回路へポステッドライトを通信することと
    を含むデータ通信方法。
  12. 前記第1の通信回路から前記第2の通信回路へのポステッドライトの通信は、前記バッファ回路に記憶されているノンポステッドライトを通信する前に、前記ポステッドライトを前記第2の通信回路に通信することを含む、請求項11に記載の方法。
  13. 前記第1の通信回路に接続されたメモリに記憶されたデータと前記第1の通信回路に接続されたキャッシュに記憶されたデータとの間のデータコヒーレンシを維持するために、前記第1の通信回路を用いることを更に含む、請求項11又は12に記載の方法。
  14. 前記第1の通信回路と前記第2の通信回路との間のポステッドリード及びライトトランザクションのためのアドレス変換を実行することを更に含む、請求項11から13のいずれか一項に記載の方法。
  15. 前記第1の通信回路から書き込みを受信したことに応答して、前記書き込みがポステッドライトかノンポステッドライトかを宛先アドレスに基づいて判定することと、
    前記書き込みがノンポステッドライトであると判定したことに応答して、前記ノンポステッドライトを前記バッファ回路にルーティングすることと、
    前記書き込みがポステッドライトであると判定したことに応答して、前記バッファ回路をバイパスする前記通信経路に前記ポステッドライトをルーティングすることと
    を更に含む、請求項11から14のいずれか一項に記載の方法。
JP2017523259A 2014-10-31 2015-09-29 デッドロック回避のための方法及び回路 Active JP6382446B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/530,561 2014-10-31
US14/530,561 US11281618B2 (en) 2014-10-31 2014-10-31 Methods and circuits for deadlock avoidance
PCT/US2015/053032 WO2016069176A1 (en) 2014-10-31 2015-09-29 Methods and circuits for deadlock avoidance

Publications (2)

Publication Number Publication Date
JP2018502359A JP2018502359A (ja) 2018-01-25
JP6382446B2 true JP6382446B2 (ja) 2018-08-29

Family

ID=54364664

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017523259A Active JP6382446B2 (ja) 2014-10-31 2015-09-29 デッドロック回避のための方法及び回路

Country Status (6)

Country Link
US (1) US11281618B2 (ja)
EP (1) EP3213220B1 (ja)
JP (1) JP6382446B2 (ja)
KR (1) KR102413593B1 (ja)
CN (1) CN107111572B (ja)
WO (1) WO2016069176A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9824058B2 (en) * 2014-11-14 2017-11-21 Cavium, Inc. Bypass FIFO for multiple virtual channels
CN109690511B (zh) 2016-08-31 2023-05-02 株式会社索思未来 总线控制电路、半导体集成电路、电路基板、信息处理装置以及总线控制方法
US10402355B2 (en) 2017-02-08 2019-09-03 Texas Instruments Incorporated Apparatus and mechanism to bypass PCIe address translation by using alternative routing
CN110196826B (zh) * 2018-02-24 2021-06-18 深圳市中兴微电子技术有限公司 一种死锁判断方法及装置
CN108632142B (zh) * 2018-03-28 2021-02-12 华为技术有限公司 节点控制器的路由管理方法和装置
US11477049B2 (en) * 2018-08-02 2022-10-18 Xilinx, Inc. Logical transport over a fixed PCIE physical transport network
CN109491951B (zh) * 2018-09-28 2022-05-10 超聚变数字技术有限公司 一种配置数据的方法以及计算设备
US11593281B2 (en) * 2019-05-08 2023-02-28 Hewlett Packard Enterprise Development Lp Device supporting ordered and unordered transaction classes
US11204879B2 (en) * 2019-06-06 2021-12-21 Arm Limited Memory management circuitry managing data transactions and address translations between an upstream device and a downstream device

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5659709A (en) * 1994-10-03 1997-08-19 Ast Research, Inc. Write-back and snoop write-back buffer to prevent deadlock and to enhance performance in an in-order protocol multiprocessing bus
US5953538A (en) * 1996-11-12 1999-09-14 Digital Equipment Corporation Method and apparatus providing DMA transfers between devices coupled to different host bus bridges
US6076130A (en) 1998-03-19 2000-06-13 Hewlett-Packard Company System and method for efficient communication between buses
US6567414B2 (en) * 1998-10-30 2003-05-20 Intel Corporation Method and apparatus for exiting a deadlock condition
US6243781B1 (en) 1998-12-03 2001-06-05 Intel Corporation Avoiding deadlock by storing non-posted transactions in an auxiliary buffer when performing posted and non-posted bus transactions from an outbound pipe
US6757768B1 (en) * 2001-05-17 2004-06-29 Cisco Technology, Inc. Apparatus and technique for maintaining order among requests issued over an external bus of an intermediate network node
US20030013568A1 (en) * 2001-07-13 2003-01-16 Rivin Eugeny I. Power transmission belt
US6804741B2 (en) 2002-01-16 2004-10-12 Hewlett-Packard Development Company, L.P. Coherent memory mapping tables for host I/O bridge
US7003615B2 (en) * 2002-04-22 2006-02-21 Broadcom Corporation Tracking a non-posted writes in a system using a storage location to store a write response indicator when the non-posted write has reached a target device
US7443869B2 (en) * 2003-08-04 2008-10-28 Intel Corporation Deadlock avoidance queuing mechanism
US7296101B2 (en) * 2004-02-17 2007-11-13 Intel Corporation Method and system for using a patch module to process non-posted request cycles and to control completions returned to requesting device
US7219175B1 (en) * 2005-03-31 2007-05-15 Emc Corporation Method and system for improving the latency in a data transmission system
US7698493B2 (en) * 2005-08-31 2010-04-13 Ati Technologies, Inc. Methods and apparatus for translating write request messages in a computing system
US8019910B2 (en) * 2007-07-31 2011-09-13 Hewlett-Packard Development Company, L.P. Transaction flow control in PCI express fabric
US7861027B2 (en) * 2008-05-30 2010-12-28 Intel Corporation Providing a peripheral component interconnect (PCI)-compatible transaction level protocol for a system on a chip (SoC)
JP2010134627A (ja) * 2008-12-03 2010-06-17 Canon Inc バス中継装置
JP5304421B2 (ja) * 2009-05-01 2013-10-02 富士通セミコンダクター株式会社 追い越しモードを有するデータバッファ装置
JP5546635B2 (ja) * 2010-06-01 2014-07-09 株式会社日立製作所 データ転送装置およびその制御方法
US20140082238A1 (en) * 2012-09-14 2014-03-20 Nvidia Corporation Method and system for implementing a control register access bus
US9164938B2 (en) * 2013-01-02 2015-10-20 Intel Corporation Method to integrate ARM ecosystem IPs into PCI-based interconnect
US9996484B1 (en) * 2014-09-17 2018-06-12 Amazon Technologies, Inc. Hardware acceleration for software emulation of PCI express compliant devices

Also Published As

Publication number Publication date
CN107111572A (zh) 2017-08-29
JP2018502359A (ja) 2018-01-25
US11281618B2 (en) 2022-03-22
EP3213220A1 (en) 2017-09-06
CN107111572B (zh) 2019-05-03
KR102413593B1 (ko) 2022-06-24
US20160124891A1 (en) 2016-05-05
EP3213220B1 (en) 2019-01-09
KR20170078697A (ko) 2017-07-07
WO2016069176A1 (en) 2016-05-06

Similar Documents

Publication Publication Date Title
JP6382446B2 (ja) デッドロック回避のための方法及び回路
JP7247213B2 (ja) デバッグコントローラ回路
JP7227680B2 (ja) ノンブロッキング高性能トランザクションクレジットシステムを備えるマルチコアバスアーキテクチャ
US8732416B2 (en) Requester based transaction status reporting in a system with multi-level memory
US10037301B2 (en) Circuits and methods for inter-processor communication
US10698824B1 (en) Scalable coherence management independent of transport protocol
KR102424238B1 (ko) 프로그래밍가능 논리부를 위한 메모리의 가상화
US20130054852A1 (en) Deadlock Avoidance in a Multi-Node System
JP5756554B2 (ja) 半導体装置
CN109739785B (zh) 多核系统的内连线结构
US10042692B1 (en) Circuit arrangement with transaction timeout detection
US9448937B1 (en) Cache coherency
US7904696B2 (en) Communication paths for enabling inter-sequencer communication following lock competition and accelerator registration
TW201916644A (zh) 匯流排系統
Feehrer et al. Coherency hub design for multi-node victoria falls server systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180402

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20180402

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20180416

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: 20180703

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180801

R150 Certificate of patent or registration of utility model

Ref document number: 6382446

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250