JP2018518777A - 周辺構成要素相互接続(PCI)エクスプレス(PCIe)トランザクションレイヤへのコヒーレンシ駆動型拡張 - Google Patents

周辺構成要素相互接続(PCI)エクスプレス(PCIe)トランザクションレイヤへのコヒーレンシ駆動型拡張 Download PDF

Info

Publication number
JP2018518777A
JP2018518777A JP2017565987A JP2017565987A JP2018518777A JP 2018518777 A JP2018518777 A JP 2018518777A JP 2017565987 A JP2017565987 A JP 2017565987A JP 2017565987 A JP2017565987 A JP 2017565987A JP 2018518777 A JP2018518777 A JP 2018518777A
Authority
JP
Japan
Prior art keywords
address range
endpoint
ownership
pcie
host
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.)
Ceased
Application number
JP2017565987A
Other languages
English (en)
Other versions
JP2018518777A5 (ja
Inventor
シャウル・ヨハイ・イフラク
アミット・ギル
ジェームズ・ライオネル・パニアン
オファー・ローゼンバーグ
Original Assignee
クアルコム,インコーポレイテッド
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 クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2018518777A publication Critical patent/JP2018518777A/ja
Publication of JP2018518777A5 publication Critical patent/JP2018518777A5/ja
Ceased legal-status Critical Current

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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • 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/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

PCIeトランザクションレイヤへのコヒーレンシ駆動型拡張が開示される。例示的な態様では、PCIeシステムにおいてメモリを使用できるように緩和型整合性モデルをサポートするためのコヒーレンシエージェントがPCIeシステムに追加される。具体的には、エンドポイントが、メモリからの読取りおよびメモリへの書込みを行うためにメモリの一部の所有権を要求することができる。コヒーレンシエージェントは、要求された部分を含むアドレス範囲を割り当てる。要求側エンドポイントは、割り当てられたアドレス範囲に対応するメモリの内容をローカルエンドポイントメモリ内にコピーして読取り動作および書込み動作をローカルに実行する。所有側エンドポイントは、コピーされたメモリ内容の更新されたスナップショットを要求時に提供してもよい。コピーされたメモリ内容の使用が完了したとき、またはコヒーレンシエージェントから要求が出されたときに、アドレス範囲の所有権がルートコンプレックスに戻り、エンドポイントが、更新された内容をシステムメモリ要素内のアドレス範囲に送り返す。

Description

優先権主張
本出願は、米国特許法第119条(e)に基づいて、2015年6月22日に出願された「COHERENCY DRIVEN ENHANCEMENTS TO A PERIPHERAL COMPONENT INTERCONNECT (PCI) EXPRESS (PCIe) TRANSACTION LAYER」という名称の米国仮特許出願第62/182,815号の優先権を主張し、同仮出願の内容全体が参照により本明細書に組み込まれる。
本出願はまた、2016年6月16日に出願された「COHERENCY DRIVEN ENHANCEMENTS TO A PERIPHERAL COMPONENT INTERCONNECT (PCI) EXPRESS (PCIe) TRANSACTION LAYER」という名称の米国特許出願第15/184,181号の優先権を主張し、同出願の内容全体が参照により本明細書に組み込まれる。
本開示の技術は概して、周辺構成要素相互接続(PCI)エクスプレス(PCIe)システムに関する。
モバイル通信デバイスは、現代社会においてますます一般的になっている。そのようなモバイル通信デバイスの普及が進んでいる理由の1つは、これらのデバイス上で利用可能な機能が増大していることである。そのような機能の増大は、モバイル通信デバイス内にかなり複雑な集積回路(IC)を含めることによって可能になる。モバイル通信デバイス内のICの数および複雑さが増すと、様々なICが互いに通信することが必要になる。
ICが互いに通信するのを可能にする様々なプロトコルを概説するいくつかの規格が公開されている。普及しているプロトコルには、周辺構成要素相互接続(PCI)プロトコルがあり、このプロトコルには、PCIエクスプレス(PCIe)プロトコルを含む様々な形態がある。PCIプロトコルおよびPCIeプロトコルは、IC間通信プロトコルとして有用であるが、ケーブルまたはその他のコネクタを通してモバイル端末をリモートデバイスに結合するのに使用されてもよい。
PCIeプロトコルは、メモリ要素へのアクセスを制御するのにしばしば使用される。多くの例では、複数のPCIe構成要素がメモリ要素に同時にアクセスすることを望む場合がある。そのような場合、そのようなアクセス要求は、データを読み取る/書き込むためにシステムメモリ(またはデバイスメモリ)に送られる。しかし、PCIeはコヒーレントでないと定義される。すなわち、システムメモリ(またはデバイスメモリ)への修正が自動的に他のPCIe構成要素に伝達されることはない。要するに、メモリ要素へのアクセスを正しく管理し制御するのは困難である場合がある。したがって、メモリリソースのそのような同時使用を管理するためのより優れた機構が必要である。
発明を実施するための形態で開示する態様は、周辺構成要素相互接続(PCI)エクスプレス(PCIe)トランザクションレイヤへのコヒーレンシ駆動型拡張(coherency driven enhancement)を含む。例示的な態様では、PCIeシステムにおいてメモリを使用できるように緩和型整合性モデル(relaxed consistency model)をサポートするためのコヒーレンシエージェント(coherency agent)がPCIeシステムに追加される。PCIeシステムは、データが記憶されたシステムメモリ要素を含んでもよい。本開示の例示的な態様は、PCIeシステムのエンドポイントにシステムメモリ要素に対して読取りおよび書込みを行うことを要求するのではなく、エンドポイントがシステムメモリ要素の一部の所有権(ownership)を要求するのを可能にする。システムメモリ要素のそのような部分は、システムメモリ要素のアドレス範囲によって定義されてもよい。コヒーレンシエージェントは、要求されたアドレス範囲を要求側エンドポイント(requesting endpoint)に割り当てる。この割当ては、所有権の割当てと呼ばれる場合もある。要求側エンドポイントは、割り当てられたアドレス範囲に対応するシステムメモリ要素の内容をローカルエンドポイントメモリ内にコピーする。要求側エンドポイントは次いで、コピーされたメモリ内容に対してローカル読取り動作および書込み動作を実行する。所有側エンドポイント(owning endpoint)は、ルートコンプレックス(root complex)またはその他のエンドポイントによる要求に応じて(任意のローカル書込み動作によって更新された)コピーされたメモリ内容の更新されたスナップショットを送ってもよい。エンドポイントによるコピーされたメモリ内容の使用が完了したとき、またはルートコンプレックスのコヒーレンシエージェントから命令が出された後に、アドレス範囲の所有権がルートコンプレックスに戻り、エンドポイントが、更新された内容をシステムメモリ要素内のアドレス範囲に送り返す。
この点に関して、一態様では、PCIeシステムにおけるホストメモリを制御するための方法が提供される。この方法は、ホスト内のホストメモリに関連付けられた、ホストのルートコンプレックスにおいて、ホストメモリ内に記憶されたデータの第1の部分へのアクセスを求める第1のエンドポイントからの要求を受信するステップを含む。この方法は、ホストからのデータの第1の部分に関連付けられたアドレス範囲の所有権をホストのコヒーレンシエージェントに要求するステップをさらに含む。この方法は、コヒーレンシエージェントによって、アドレス範囲の所有権をホストから第1のエンドポイントに割り当てるステップと、アドレス範囲に関連付けられたデータを第1のエンドポイントに提供するステップとをさらに含む。この方法は、アドレス範囲の所有権がホストに戻るときに、アドレス範囲に関連付けられた修正されたデータを第1のエンドポイントから受信するステップをさらに含む。
別の態様では、PCIeシステムのホストシステムが提供される。ホストシステムは、PCIeバスを通して少なくとも第1のエンドポイントおよび第2のエンドポイントに結合されるように構成されたPCIeバスインターフェースを含む。ホストシステムは、データが記憶されたホストメモリであって、少なくともデータの第1の部分およびデータの第2の部分がアドレス範囲に関連付けられる、ホストメモリをさらに含む。ホストシステムは、ホストメモリに関連付けられ、アドレス範囲に関連付けられたデータの第1の部分の所有権を求める第1のエンドポイントからの要求をPCIeバスから受信するように構成されたルートコンプレックスをさらに含む。ホストシステムは、アドレス範囲の所有権を制御するように構成されたコヒーレンシエージェントをさらに含む。
別の態様では、PCIeシステムのエンドポイントにおけるデータを管理するための方法が提供される。この方法は、第1のエンドポイントによって、ホストメモリに関連付けられたルートコンプレックスに、ホストメモリ内に記憶されたデータの一部へのアクセスを要求するステップを含む。この方法は、アドレス範囲に関連付けられたデータおよびアドレス範囲の所有権をルートコンプレックスから受信するステップをさらに含む。この方法は、アドレス範囲に関連付けられたデータを第1のエンドポイントのローカルメモリに記憶するステップをさらに含む。この方法は、アドレス範囲の所有権がホストシステムに戻ったことに応答して、アドレス範囲に関連付けられた修正されたデータをルートコンプレックスに提供するステップをさらに含む。
別の態様では、PCIeシステムのエンドポイントが提供される。エンドポイントはローカルメモリを含む。エンドポイントは、ローカルメモリに結合された処理回路も含む。エンドポイントの処理回路は、PCIeシステムのホストメモリに関連付けられたルートコンプレックスに、ホストメモリ内に記憶されたデータの一部へのアクセスを要求するように構成される。エンドポイントの処理回路は、アドレス範囲に関連付けられたデータおよびアドレス範囲の所有権をルートコンプレックスから受信するようにさらに構成される。エンドポイントの処理回路は、アドレス範囲に関連付けられたデータをエンドポイントのローカルメモリに記憶するようにさらに構成される。エンドポイントの処理回路は、アドレス範囲の所有権がPCIeシステムに戻ったことに応答して、アドレス範囲に関連付けられた修正されたデータをルートコンプレックスに提供するようにさらに構成される。
別の態様では、PCIeシステムのホストシステムが提供される。ホストシステムは、PCIeバスを通して少なくとも第1のエンドポイントおよび第2のエンドポイントとインターフェースするための手段を含む。ホストシステムは、データを記憶するための手段であって、少なくともデータの第1の部分およびデータの第2の部分がアドレス範囲に関連付けられる手段をさらに含む。ホストシステムは、データを記憶するための手段内に記憶されたデータを求めるデータ所有権要求を処理するための手段であって、アドレス範囲に関連付けられたデータの第1の部分の所有権を求める第1のエンドポイントからの要求をPCIeバスから受信するように構成された手段をさらに含む。ホストシステムは、アドレス範囲の所有権を制御するように構成されたメモリを制御するための手段をさらに含む。
別の態様では、PCIeシステムが提供される。PCIeシステムは、PCIeバスを通してPCIeシステムの少なくともエンドポイントに結合されるように構成されたPCIeバスインターフェースを含むホストシステムを含む。ホストシステムは、データが記憶されたホストメモリであって、データの少なくとも一部がアドレス範囲に関連付けられる、ホストメモリをさらに含む。ホストシステムは、ホストメモリに関連付けられ、アドレス範囲に関連付けられたデータの上記の一部の所有権を求めるエンドポイントからの要求をPCIeバスから受信するように構成されたルートコンプレックスをさらに含む。ホストシステムは、アドレス範囲の所有権を制御するように構成されたコヒーレンシエージェントをさらに含む。
PCIeシステムは、ホストメモリ内に記憶されたデータの上記の一部へのアクセスをルートコンプレックスに要求するように構成されたローカルメモリおよび処理回路を含むエンドポイントをさらに含む。処理回路は、アドレス範囲に関連付けられたデータおよびアドレス範囲の所有権をルートコンプレックスから受信するようにさらに構成される。処理回路は、アドレス範囲に関連付けられたデータをローカルメモリにおいて、記憶するようにさらに構成される。処理回路は、アドレス範囲の所有権がホストシステムに戻ったことに応答して、アドレス範囲に関連付けられた修正されたデータをルートコンプレックスに提供するようにさらに構成される。
従来の周辺構成要素相互接続(PCI)エクスプレス(PCIe)システムのブロック図である。 PCIeトランザクションレイヤへのコヒーレンシ駆動型拡張を含む例示的なPCIeシステムのブロック図である。 図2のPCIeシステムにおけるメモリ要素の簡略状態図である。 図2のPCIeシステムの要素間のコヒーレンシシグナリングに関する例示的なメッセージ信号図である。 ホストメモリを制御するための例示的な方法を示すフローチャートである。 例示的なPCIeエンドポイントにおけるデータを管理するための例示的な方法を示すフローチャートである。 図2のPCIeシステムを含むことができる例示的なプロセッサベースシステムのブロック図である。
次に図面を参照しながら、本開示のいくつかの例示的な態様について説明する。「例示的な」という単語は、本明細書では、「例、実例、または例証として機能する」を意味するために使用される。「例示的」として本明細書において説明するいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるべきでない。
発明を実施するための形態で開示する態様は、周辺構成要素相互接続(PCI)エクスプレス(PCIe)トランザクションレイヤへのコヒーレンシ駆動型拡張を含む。例示的な態様では、PCIeシステムにおいてメモリを使用するための緩和型整合性モデルをサポートするためにコヒーレンシエージェントがPCIeシステムに追加される。PCIeシステムは、データが記憶されたシステムメモリ要素を含んでもよい。本開示の例示的な態様は、PCIeシステムのエンドポイントにシステムメモリ要素に対して読取りおよび書込みを行うことを要求するのではなく、エンドポイントがシステムメモリ要素の一部の所有権を要求するのを可能にする。システムメモリ要素のそのような部分は、システムメモリ要素のアドレス範囲によって定義されてもよい。コヒーレンシエージェントは、要求されたアドレス範囲を要求側エンドポイントに割り当てる。この割当ては、所有権の割当てと呼ばれる場合もある。要求側エンドポイントは、割り当てられたアドレス範囲に対応するシステムメモリ要素の内容をローカルエンドポイントメモリ内にコピーする。要求側エンドポイントは次いで、コピーされたメモリ内容に対してローカル読取り動作および書込み動作を実行する。所有側エンドポイントは、ルートコンプレックスまたはその他のエンドポイントの要求に応じて(任意のローカル書込み動作によって更新された)コピーされたメモリ内容の更新されたスナップショットを送ってもよい。エンドポイントによるコピーされたメモリ内容の使用が完了したとき、またはルートコンプレックスのコヒーレンシエージェントから命令が出された後に、アドレス範囲の所有権がルートコンプレックスに戻され、エンドポイントが、更新された内容をシステムメモリ要素内のアドレス範囲に送り返す。
PCIeトランザクションレイヤへのコヒーレンシ駆動型拡張の例示的な態様について説明する前に、まず従来のPCIeシステムについて図1において簡単に説明する。PCIeトランザクションレイヤへのコヒーレンシ駆動型拡張の特定の例示的な態様についての説明ではまず、図2を参照する。
この点に関して、図1は、従来のPCIeシステム100のブロック図である。従来のPCIeシステム100は、中央処理ユニット(CPU)、システムオンチップ(SoC)などであってもよいホストシステム102を含む。ホストシステム102は、PCIeバス106を通して複数のPCIeエンドポイント104(1)〜104(M)に結合される。非制限的な例では、従来のPCIeシステム100は、PCIeエンドポイント104(N+1)〜104(M)を制御するPCIeスイッチ108を含む。この例では、PCIeエンドポイント104(N+1)〜104(M)は、PCIeスイッチ108を介してホストシステム102と通信するように構成される。PCIeプロトコルでは、ホストシステム102などのホストと複数のPCIeエンドポイント104(1)〜104(M)などのエンドポイントとの間のポイントツーポイント接続が必要であることを諒解されたい。したがって、各接続はそれ自体のバスと見なされてもよい。しかし、説明の都合上、そのような複数の接続を本明細書ではPCIeバス106と呼ぶ。さらに、ハブまたはPCIeスイッチ108を使用することによってポイントツーマルチポイント機能が実現されてもよい。図示のように、PCIeバス106内のポイントツーポイント接続によってPCIeエンドポイント104(1)〜104(N)が接続され、PCIeエンドポイント104(N+1)〜104(M)がPCIeスイッチ108に結合される。PCIeシステム100が、本開示の範囲から逸脱せずに複数のスイッチを含んでもよく(図示せず)あるいはスイッチを含まなくてもよい(同じく図示せず)ことを諒解されたい。同様に、任意のスイッチに結合されるエンドポイントの数は、本開示の範囲から逸脱せずに変更されてもよい。複数のPCIeエンドポイント104(1)〜104(M)の各々は、ホストシステム102に対するスレーブと見なされてもよい。
引き続き図1を参照すると、ホストシステム102は、少なくとも1つのプロセッサ110と、メモリコントローラ112と、メモリ管理ユニット(MMU)114とを含む。プロセッサ110、メモリコントローラ112、およびMMU114は、内部バス116(たとえば、システムネットワークオンチップ(SNoC)バス)に結合される。メモリコントローラ112は、たとえば、ダイナミックランダムアクセスメモリ(DRAM)またはダブルデータレート(DDR)DRAMなどのメモリ118を制御するように構成される。ホストシステム102は、MMU114に通信可能に結合されたPCIeルートコンプレックス(RC)120も含む。PCIe RC120は、信号をPCIeバス106に送信するかあるいはPCIeバス106から受信するのを可能にするバスインターフェース122を介して複数のPCIeエンドポイント104(1)〜104(M)およびPCIeスイッチ108を制御するように構成される。PCIe RC120と複数のPCIeエンドポイント104(1)〜104(M)とPCIeスイッチ108との間の通信は、トランザクションレイヤパケット(TLP)(図示せず)に基づく。各TLPは、PCIe RC120がTLPを複数のPCIeエンドポイント104(1)〜104(M)およびPCIeスイッチ108に正しく転送するのを可能にするアドレス情報を含む。この点に関して、PCIe RC120はインターネットプロトコル(IP)ネットワークのルータに類似しており、TLPは、IPネットワークにおいて伝達されるIPパケットに類似している。
PCIeプロトコルによれば、TLPは、PCIe RC120と複数のPCIeエンドポイント104(1)〜104(M)とPCIeスイッチ108との間で読取りおよび書込みなどのトランザクション、ならびにある種のイベントを伝達するのに使用される。PCIeプロトコルでは、メモリトランザクション、入出力(I/O)トランザクション、構成トランザクション、およびメッセージトランザクションを含む4種のトランザクションを定義している。メモリトランザクションには、読取り要求トランザクション、書込み要求トランザクション、およびアトミック動作要求トランザクションが含まれる。メモリトランザクションについては、PCIeはコヒーレントでないと定義されている。すなわち、たとえば、メモリ118の修正が、複数のPCIeエンドポイント104(1)〜104(M)などの他のPCIe構成要素に自動的に伝達されることはない。したがって、たとえば、複数のPCIeエンドポイント104(1)〜104(M)などのPCIe構成要素からメモリ118へのアクセスを管理し制御するのは困難である場合がある。
この点に関して、図2は、PCIeトランザクションレイヤへのコヒーレンシ駆動型拡張を含む例示的なPCIeシステム200の概略図である。例示的な態様では、PCIeシステム200は例示的なホストシステム202を含む。ホストシステム202は、例示的なコヒーレンシエージェント204(図面ではCAと示されている)などのメモリを後述の機能を実行するように制御するための手段を含む。具体的には、コヒーレンシエージェント204は、例示的なPCIe RC206などの、データに関するデータ所有権要求を処理するための手段とMMU208との間に追加され、PCIeシステム200に緩和型整合性モデルを提供する。
ホストシステム202は、図1に示す従来のホストシステム102に関して上記で説明した要素と同様ないくつかの要素を含む。具体的には、ホストシステム202は、MMU208と、少なくとも1つのプロセッサ210と、メモリコントローラ212と、ホストメモリ214などの、データを記憶するための手段と、内部バス216(たとえば、システムネットワークオンチップ(SNoC)バス)とを含む。これらの要素は、図1に示す従来のホストシステム102におけるMMU114、少なくとも1つのプロセッサ110、メモリコントローラ112、メモリ118、および内部バス116に類似しており、本明細書ではこれらの要素についてさらに詳細に説明することはない。PCIeシステム200は、PCIeバス220を通してPCIe RC206に結合された複数の例示的なPCIeエンドポイント218(1)〜218(M)をさらに含む。複数のPCIeエンドポイント218(1)〜218(M)の各々は、ローカルメモリ222(1)〜222(M)のそれぞれのローカルメモリと、後述の機能を実行するように構成された、ローカルメモリ222(1)〜222(M)のそれぞれのローカルメモリに結合されたそれぞれの処理回路224(1)〜224(M)とを含む。さらに、非制限的な例では、PCIeシステム200は、PCIeエンドポイント218(N+1)〜218(M)を制御するPCIeスイッチ226を含む。したがって、この例では、PCIeエンドポイント218(N+1)〜218(M)は、PCIeスイッチ226を介してホストシステム202と通信するように構成される。さらに、PCIe RC206は、複数のPCIeエンドポイント218(1)〜218(M)およびPCIeスイッチ226と通信しそれらを制御するためにバスインターフェース228などのエンドポイントとインターフェースするための手段に結合される。
本開示の例示的な態様では、緩和型整合性モデルは、複数のPCIeエンドポイント218(1)〜218(M)のうちの1つなどのエンドポイントがホストメモリ214の一部からの読取りおよび一部への書込みを望むときに実施される。本開示の例示的な態様がなければ、エンドポイントがホストメモリ214からの読取りまたはホストメモリ214への書込みを望むたびに、対応するメッセージがPCIeバス220を横切らなければならない。本開示の例示的な態様は、これらのメッセージをなくし、したがって、コヒーレンシエージェント204を使用して、ホストメモリ214の内容の所望の一部が記憶されたアドレス範囲の所有権を要求側エンドポイント(たとえば、PCIeエンドポイント218(1))に割り当てることによってPCIeバス220上のメッセージトラフィックを低減させる。PCIeバス220上のメッセージトラフィックがそのように低減すると、他のメッセージについて利用可能な帯域幅が大きくなるのでPCIeバス220上の全体的なレイテンシが小さくなる場合がある。このように所有権が割り当てられた後、PCIeエンドポイント218(1)は、アドレス範囲内に記憶されたデータ、したがってホストメモリ214の所望の部分をローカルメモリ222(1)にコピーする。PCIeエンドポイント218(1)は、PCIeバス220を介して通信してアドレス範囲内のホストメモリ214の所望の部分にアクセスする必要なしにローカルメモリ222(1)にアクセスすることによってアドレス範囲内のデータの所望の部分により高速にアクセスしてもよい。PCIeエンドポイント218(1)は次いで、PCIeエンドポイント218(1)がコピーされたデータに対するPCIeエンドポイント218(1)の要件を完了するか、あるいはPCIe RC206がPCIeエンドポイント218(1)に再び所有権を要求するまで、コピーされたデータに対して読取り動作および書込み動作を実行してもよい。
図3は、図4のメッセージ信号図400において信号が交互に転送されるときの図2のホストメモリ214およびローカルメモリ222(1)の簡略状態図300である。したがって、以下の説明では図3と図4の両方が使用される。この点に関して、初期状態302では、ホストメモリ214にはデータが記憶されており、このデータは、よく理解されるように、関連付けられたアドレスを有する場合がある。一例として、アドレス範囲は、ホストメモリ214内に記憶されたデータのブロックまたは部分を指す場合がある。図示のように、214(A)〜214(X)は、データA〜Xのそれぞれに異なるブロックのアドレスである。同様に、PCIeエンドポイント218(1)のローカルメモリ222(1)は、初期状態302では空であってもよい。PCIeエンドポイント218(1)は、PCIeエンドポイント218(1)がホストメモリ214の一部からの読取りおよび一部への書込みを行う必要があると判定してもよい。一例として、ホストメモリ214の上記の一部は、アドレス範囲214(H)〜214(K)におけるホストメモリ214の内容である。しかし、ホストメモリ214の上記の一部が、アドレス範囲214(H)〜214(K)におけるホストメモリ214の内容の全部でなくてもよいことに留意されたい。たとえば、PCIeエンドポイント218(1)は、アドレス範囲214(I)〜214(J)における内容へのアクセスのみを望むことがあるが、コヒーレンシエージェント204は、PCIeエンドポイント218(1)が必要とするホストメモリ214の内容よりも大きい所定のサイズのアドレス範囲を与える場合がある。
この点に関して、PCIeエンドポイント218(1)は、信号402(図4)を介してアドレス範囲214(H)〜214(K)の所有権を要求してもよい。PCIe RC206は、信号402を受信し、信号404を介してコヒーレンシエージェント204にアドレス範囲214(H)〜214(K)のステータスを問い合わせる。コヒーレンシエージェント204は、アドレス範囲214(H)〜214(K)は現在割り当てられていないと判定し、次いで、PCIe RC206に、アドレス範囲214(H)〜214(K)の所有権を信号406を介してPCIeエンドポイント218(1)に渡すよう命令する。PCIe RC206は、PCIeエンドポイント218(1)への信号408を介して要求を確認する。次いで、アドレス範囲214(H)〜214(K)内のデータH〜Kがローカルメモリ222(1)にコピーされる(信号410)。
引き続き図3を参照すると、データH〜Kは、状態304に示すようにローカルメモリ222(1)にコピーされる。同様に、状態304は、アドレス範囲214(H)〜214(K)の所有権が何らかの他のエンティティに割り当てられており、ホストメモリ214内のアドレス範囲214(H)〜214(K)からの読取りおよびアドレス範囲214(H)〜214(K)への書込みが許容されないことを示す。PCIeエンドポイント218(1)は、ローカルメモリ222(1)上のデータH〜K(信号412)に対する読取り/書込みを行い、それによって、状態306によって示されるようにローカルメモリ222(1)の内容をデータH'〜K'に変更してもよい。ホストメモリ214には依然としてデータH〜Kが記憶されていることに留意されたい。
引き続き図4を参照すると、PCIeエンドポイント218(1)はアドレス範囲214(H)〜214(K)の所有権を有するが、PCIeエンドポイント218(N)は、信号414を介してPCIe RC206に読取り要求を送る。PCIe RC206は、信号416を介して、コヒーレンシエージェント204へのアドレス範囲214(H)〜214(K)のステータスについての問合せによって応答する。コヒーレンシエージェント204は、信号418を介して、アドレス範囲214(H)〜214(K)の所有権がPCIeエンドポイント218(1)にあることの表示によって応答する。コヒーレンシエージェント204は、信号420を介して、PCIeエンドポイント218(1)に、アドレス範囲のスナップショット(すなわち、アドレス範囲214(H)〜214(K)に対応するデータのスナップショット)(現在はPCIeエンドポイント218(1)におけるデータH'〜K')を与えるよう要求する。PCIeエンドポイント218(1)は、信号422を介してPCIeエンドポイント218(N)に読取り完了を示し、アドレス範囲の要求されたスナップショットを(すなわち、アドレス範囲214(H)〜214(K)に対応するデータH'〜K'を)PCIeエンドポイント218(N)に与える。アドレス範囲のスナップショットが、直接送られるのではなくホストシステム202を通して送られる場合があることに留意されたい。しかし、PCIeエンドポイント218(1)とPCIeエンドポイント218(N)との間に直接PCIe接続が存在する場合、アドレス範囲のスナップショットが直接与えられてもよい。
場合によっては、PCIeエンドポイント218(N)に、アドレス範囲214(H)〜214(K)に書込みを行う必要が生じる場合がある。PCIe RC206に書込み要求(信号424)が送られる。PCIe RC206は、信号426を介して、コヒーレンシエージェント204へのアドレス範囲214(H)〜214(K)のステータスについての問合せによって応答する。コヒーレンシエージェント204は、アドレス範囲214(H)〜214(K)の所有権をPCIe RC206に返すことをPCIe RC206に通知することによって応答する(信号428)。次いで、PCIe RC206は、PCIeエンドポイント218(1)に、アドレス範囲214(H)〜214(K)の所有権をPCIe RC206に返すよう命令する(信号430)。次いで、PCIeエンドポイント218(1)は、ホストメモリ214にデータH'〜K'を書き込み(信号432)、PCIeエンドポイント218(1)によってアドレス範囲214(H)〜214(K)に加えられた変更によってホストメモリ214を更新する。この例では、すべてのデータH〜KがH'〜K'として書き直されるものと仮定しているが、本開示がそのように限定されないことに留意されたい。たとえば、PCIeエンドポイント218(1)が、PCIeエンドポイント218(1)において実際に加えられた変更に応じてH'〜K'の代わりにH'、I、J'およびK'、HおよびI'〜K'、または古い値と新しい値の任意の他の組合せを返してもよい。
したがって、図3の状態308に示すように、アドレス範囲214(H)〜214(K)は現在、データH'〜K'を有し、データH'〜K'は、上述のようにアドレス範囲214(H)〜214(K)の所有権をPCIeエンドポイント218(N)に割り当てるか、またはPCIe RC206が、アドレス範囲214(H)〜214(K)の所有権を保持することと、PCIeエンドポイント218(N)にホストメモリ214に対する読取りおよび書込みを許可することとを可能にすることによって、PCIeエンドポイント218(N)によって操作される場合がある。この点に関して、PCIe RC206は、PCIeエンドポイント218(N)によって書込み要求(信号424)に加えられたデータをホストメモリ214に書き込む(信号434)。
図示されていないが、PCIeエンドポイント218(1)が、アドレス範囲214(H)〜214(K)の所有権が転送されたタスクを完了したときに、PCIeエンドポイント218(1)がアドレス範囲214(H)〜214(K)の所有権を返すことも可能である。そのような場合、前述のように、データH'〜K'が再びホストメモリ214にコピーされてもよい。
図5は、例示的な態様によるホストメモリを制御するための例示的な方法を示すフローチャート500である。この方法については、図2の例示的なPCIeシステム200、図3の状態図300、および図4のメッセージ信号図400に関連して説明する。この方法は、ホストシステム202におけるホストメモリ214に関連付けられたホストシステム202のPCIe RC206において、ホストメモリ214内に記憶されたデータH〜Kの第1の部分へのアクセスを求める第1のPCIeエンドポイント218(1)からの要求を受信することを含む(ブロック502)。次いで、PCIe RC206は、ホストシステム202からのデータH〜Kの第1の部分に関連付けられたアドレス範囲214(H)〜214(K)の所有権をホストシステム202のコヒーレンシエージェント204に要求する(ブロック504)。次いで、コヒーレンシエージェント204は、アドレス範囲214(H)〜214(K)の所有権を前記ホストシステム202から第1のPCIeエンドポイント218(1)に割り当てる(ブロック506)。次いで、ホストメモリ214は、アドレス範囲214(H)〜214(K)に関連付けられたデータH〜Kを第1のPCIeエンドポイント218(1)に提供する(ブロック508)。第1のPCIeエンドポイント218(1)がデータH〜Kに対して所望の動作を実行した後、次のステップでは、アドレス範囲の所有権が第1のPCIeエンドポイント218(1)からホストシステム202に転送されたときに、ホストシステム202がアドレス範囲214(H)〜214(K)に関連付けられた修正されたデータH'〜K'を受信する(ブロック510)。
図6は、PCIeエンドポイント218(1)などの例示的なPCIeエンドポイントにおけるデータを管理するための例示的な方法を示すフローチャート600である。この方法は、第1のPCIeエンドポイント218(1)によって、ホストメモリ214に関連付けられたPCIe RC206に、ホストメモリ214内に記憶されたデータH〜Kの一部へのアクセスを要求することを含む(ブロック602)。この方法は、アドレス範囲214(H)〜214(K)に関連付けられたデータH〜Kおよびアドレス範囲214(H)〜214(K)の所有権をPCIe RC206から受信することをさらに含む(ブロック604)。第1のPCIeエンドポイント218(1)は、データH〜Kおよび対応するアドレス範囲214(H)〜214(K)にわたる所有権を受信した後、アドレス範囲214(H)〜214(K)に関連付けられたデータH〜Kをローカルメモリ222(1)において記憶する(ブロック606)。この方法は、アドレス範囲214(H)〜214(K)の所有権がホストシステム202に戻ったことに応答して、アドレス範囲214(H)〜214(K)に関連付けられた修正されたデータH'〜K'をPCIe RC206に提供する(ブロック608)ことをさらに含む。
本明細書で開示する態様によるPCIeトランザクションレイヤへのコヒーレンシ駆動型拡張は、任意のプロセッサベースデバイス内に設けられるか、またはその中に組み込まれ得る。例としては、限定ではないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定位置データユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、スマートフォン、タブレット、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、自動車およびポータブルデジタルビデオプレーヤが含まれる。
この点に関して、図7は、図2に示すPCIeシステム200を使用することができるプロセッサベースシステム700の一例を示す。この例では、プロセッサベースシステム700は、各々が1つまたは複数のプロセッサ(図示せず)を含む1つまたは複数の中央処理ユニット(CPU)702を含む。CPU702は、一時的に記憶されたデータに迅速にアクセスできるようにプロセッサ(図示せず)に結合されたキャッシュメモリ(図示せず)を有してもよい。CPU702は、システムバス704に結合される。よく知られているように、CPU702は、システムバス704を介してアドレス情報、制御情報、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、CPU702は、バストランザクション要求を1つまたは複数のメモリコントローラ706に伝達することができる。
他のデバイスをシステムバス704に接続することができる。図7に示すように、これらのデバイスには、例として、1つまたは複数のディスプレイコントローラ708、および1つまたは複数のPCIeコントローラ710を含めることができる。PCIeコントローラ710は、1つまたは複数のPCIeインターフェース714または図2に示すPCIeバス220を通して、図2の複数のPCIeエンドポイント218(1)〜218(M)などの1つまたは複数のPCIeデバイス712と通信してもよい。メモリコントローラ706は、1つまたは複数のメモリインターフェース718を通してメモリユニット716と相互作用してもよい。例示的な態様では、メモリインターフェース718が図2のPCIeバス220のようなPCIeバスであってもよいことに留意されたい。ディスプレイコントローラ708は、ディスプレイインターフェース722を介してディスプレイ720と通信してもよい。ディスプレイ720は、限定はしないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、発光ダイオード(LED)ディスプレイなどを含む、任意のタイプのディスプレイを含むことができる。
図7には示されていないが、プロセッサベースシステム700は、ネットワーク(図示せず)との間でデータを交換するのを可能にするように構成された任意のデバイスであってもよいネットワークインターフェースデバイスを含んでもよい。ネットワークは、限定はしないが、有線ネットワークまたはワイヤレスネットワーク、プライベートネットワークまたは公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイヤレスローカルエリアネットワーク(WLAN)、ワイドエリアネットワーク(WAN)、BLUETOOTH(登録商標)ネットワーク、およびインターネットを含む、任意のタイプのネットワークであってよい。ネットワークインターフェースデバイスは、必要に応じて、任意のタイプの通信プロトコルをサポートするように構成することができる。
本明細書で開示する態様に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムは、電子ハードウェアとして実装されても、メモリもしくは別のコンピュータ可読媒体に記憶されプロセッサもしくは他の処理デバイスによって実行される命令として実装されても、あるいはその両方の組合せとして実装されてもよいことが、当業者にはさらに理解されよう。本明細書で説明するスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップにおいて採用される場合がある。本明細書で開示するメモリは、任意のタイプおよびサイズのメモリであってもよく、任意のタイプの所望の情報を記憶するように構成されてもよい。この互換性を明確に示すために、上記では、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、概してそれらの機能に関して説明した。そのような機能がどのように実施されるのかは、特定の適用例、設計選択、および/またはシステム全体に課された設計制約によって決まる。当業者は、説明した機能を特定の用途ごとに様々な方法で実装してもよいが、そのような実装形態の決定は、本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
本明細書で開示する態様に関して説明する種々の例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタロジック、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されるそれらの任意の組合せを用いて実装または実行される場合がある。プロセッサは、マイクロプロセッサである場合があるが、代替としてプロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンである場合がある。プロセッサはまた、コンピューティングデバイスの組合せ(たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサの組合せ、DSPコアとそれと連携する1つもしくは複数のマイクロプロセッサとの組合せ、または任意の他のそのような構成)として実装されてもよい。
本明細書で開示する態様は、ハードウェアとして具現化され、かつハードウェアに記憶されている命令として具現化されてもよく、このような命令は、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野において知られている任意の他の形態のコンピュータ可読媒体内に存在してよい。例示的な記憶媒体が、プロセッサがその記憶媒体から情報を読み取ること、およびその記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体化されてもよい。プロセッサおよび記憶媒体は、ASIC内に存在してもよい。ASICは、リモート局の中に存在する場合がある。代替として、プロセッサおよび記憶媒体は、リモート局、基地局、またはサーバの中に個別構成要素として存在する場合がある。
本明細書の例示的な態様のいずれかにおいて説明する動作ステップは、例および説明を提供するために記載されていることにも留意されたい。上述の動作は、図示したシーケンス以外の多数の異なるシーケンスにおいて実行される場合がある。さらに、単一の動作ステップとして説明した動作は、実際にはいくつかの異なるステップとして実行される場合がある。追加として、例示的な態様において説明した1つまたは複数の動作ステップが組み合わされてもよい。当業者には容易に明らかであるように、フローチャート図に示す動作ステップが数多くの異なる修正を受けてよいことを理解されたい。当業者にはまた、情報および信号が様々な異なる技術および技法のいずれを使用して表されてもよいことが理解されよう。たとえば、上記の説明全体を通じて参照される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁気粒子、光場あるいは光粒子、またはそれらの任意の組合せによって表現されてもよい。
本開示の前の説明は、いかなる当業者も本開示を作成または使用することができるように提供される。本開示の様々な変更は、当業者には容易に明らかになり、本明細書で定義した一般原理は、本開示の趣旨または範囲から逸脱することなく他の変形形態に適用されてもよい。したがって、本開示は、本明細書で説明した例および設計に限定されるものではなく、本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
100 PCIeシステム
102 ホストシステム
104 PCIeエンドポイント
106 PCIeバス
108 PCIeスイッチ
110 プロセッサ
112 メモリコントローラ
114 MMU
116 内部バス
118 メモリ
120 PCIeルートコンプレックス
122 バスインターフェース
200 PCIeシステム
202 ホストシステム
204 コヒーレンシエージェント
206 PCIeルートコンプレックス
208 MMU
210 プロセッサ
212 メモリコントローラ
214 ホストメモリ
216 内部バス
218 PCIeエンドポイント
220 PCIeバス
226 PCIeスイッチ
228 バスインターフェース
302 初期状態
304 状態
402 信号
408 信号
700 プロセッサベースシステム
720 ディスプレイ
722 ディスプレイインターフェース
704 システムバス
706 メモリコントローラ
708 ディスプレイコントローラ
710 PCIeコントローラ
712 PCIeデバイス
714 PCIeインターフェース
716 メモリユニット
718 メモリインターフェース
722 ディスプレイインターフェース

Claims (29)

  1. 周辺構成要素相互接続(PCI)エクスプレス(PCIe)システムにおけるホストメモリを制御するための方法であって、
    ホスト内のホストメモリに関連付けられた前記ホストのルートコンプレックスにおいて、前記ホストメモリ内に記憶されたデータの第1の部分へのアクセスを求める第1のエンドポイントからの要求を受信するステップと、
    前記ホストからの前記データの前記第1の部分に関連付けられたアドレス範囲の所有権を前記ホストのコヒーレンシエージェントに要求するステップと、
    前記コヒーレンシエージェントによって、前記アドレス範囲の前記所有権を前記ホストから前記第1のエンドポイントに割り当てるステップと、
    前記アドレス範囲に関連付けられたデータを前記第1のエンドポイントに提供するステップと、
    前記アドレス範囲の前記所有権が前記ホストに戻るときに、前記アドレス範囲に関連付けられた修正されたデータを前記第1のエンドポイントから受信するステップと
    を含む方法。
  2. 前記アドレス範囲に関連付けられた前記修正されたデータを前記ホストメモリ内に記憶するステップをさらに含む、請求項1に記載の方法。
  3. 前記アドレス範囲に関連付けられた前記修正されたデータを前記第1のエンドポイントから受信する前に、前記アドレス範囲の前記所有権を前記ホストに返すことを前記第1のエンドポイントに要求するステップをさらに含む、請求項1に記載の方法。
  4. 前記アドレス範囲の前記所有権を前記第1のエンドポイントから前記ルートコンプレックスにおいて受信するステップと、
    前記アドレス範囲に関連付けられた前記修正されたデータを前記第1のエンドポイントから受信した後で、前記アドレス範囲の前記所有権を前記ホストに返すステップと
    をさらに含む、請求項1に記載の方法。
  5. 前記ルートコンプレックスにおいて、前記ホストメモリ内に記憶された前記データの第2の部分を読み取ることを求める第2のエンドポイントからの要求を受信するステップであって、前記データの前記第2の部分が前記アドレス範囲に関連付けられる、ステップと、
    前記アドレス範囲に関連付けられた前記データのスナップショットを前記第1のエンドポイントに要求するステップと、
    前記アドレス範囲に関連付けられた前記データの前記スナップショットを前記第2のエンドポイントに提供するステップと
    をさらに含む、請求項1に記載の方法。
  6. 前記ルートコンプレックスにおいて、前記ホストメモリ内に記憶された前記データの第2の部分へのアクセスを求める第2のエンドポイントからの要求を受信するステップであって、前記データの前記第2の部分が前記アドレス範囲に関連付けられる、ステップと、
    前記コヒーレンシエージェントに、前記第1のエンドポイントから前記アドレス範囲の前記所有権を要求するステップと、
    前記第1のエンドポイントに、前記アドレス範囲の前記所有権を前記ホストに返すことを要求するステップと、
    前記コヒーレンシエージェントによって、前記アドレス範囲に関連付けられた前記修正されたデータを前記第1のエンドポイントから受信した後で、前記アドレス範囲の前記所有権を前記第1のエンドポイントから前記第2のエンドポイントに割り当てるステップと、
    前記アドレス範囲に関連付けられた前記データを前記第2のエンドポイントに提供するステップと
    をさらに含む、請求項1に記載の方法。
  7. 周辺構成要素相互接続(PCI)エクスプレス(PCIe)システムのホストシステムであって、
    PCIeバスを通して少なくとも第1のエンドポイントおよび第2のエンドポイントに結合されるように構成されたPCIeバスインターフェースと、
    データが記憶されたホストメモリであって、少なくとも前記データの第1の部分および前記データの第2の部分がアドレス範囲に関連付けられる、ホストメモリと、
    前記ホストメモリに関連付けられたルートコンプレックスであって、前記アドレス範囲に関連付けられた前記データの前記第1の部分の所有権を求める前記第1のエンドポイントからの要求を前記PCIeバスから受信するように構成されたルートコンプレックスと、
    前記アドレス範囲の所有権を制御するように構成されたコヒーレンシエージェントと
    を備えるホストシステム。
  8. 前記ルートコンプレックスは、
    前記ホストシステムからの前記データの前記第1の部分に関連付けられた前記アドレス範囲の前記所有権を前記コヒーレンシエージェントに要求することと、
    前記アドレス範囲に関連付けられた前記データを前記第1のエンドポイントに提供することと
    を行うようにさらに構成され、
    前記コヒーレンシエージェントは、前記アドレス範囲の前記所有権を前記ホストシステムから前記第1のエンドポイントに割り当てることと、
    前記アドレス範囲に関連付けられた修正されたデータを前記ホストメモリ内に記憶することと
    を行うようにさらに構成される、請求項7に記載のホストシステム。
  9. 前記ルートコンプレックスは、
    前記アドレス範囲に関連付けられた前記データを前記第1のエンドポイントに提供することと、
    前記アドレス範囲の前記所有権が前記ホストシステムに戻るときに、前記アドレス範囲に関連付けられた前記修正されたデータを前記第1のエンドポイントから受信することと
    を行うようにさらに構成される、請求項8に記載のホストシステム。
  10. 前記ルートコンプレックスは、前記アドレス範囲に関連付けられた前記修正されたデータを前記ホストメモリ内に記憶するようにさらに構成される、請求項9に記載のホストシステム。
  11. 前記ルートコンプレックスは、前記アドレス範囲に関連付けられた前記修正されたデータを前記第1のエンドポイントから受信する前に、前記アドレス範囲の前記所有権を前記ホストシステムに返すことを前記第1のエンドポイントに要求するようにさらに構成される、請求項9に記載のホストシステム。
  12. 前記ルートコンプレックスは、前記第1のエンドポイントから前記アドレス範囲の前記所有権を受信し、前記アドレス範囲に関連付けられた前記修正されたデータを前記第1のエンドポイントから受信した後で、前記アドレス範囲の前記所有権を前記ホストシステムに返すようにさらに構成される、請求項9に記載のホストシステム。
  13. 前記ルートコンプレックスは、
    前記ホストメモリ内に記憶された前記データの前記第2の部分を読み取ることを求める要求を前記第2のエンドポイントから受信することと、
    前記アドレス範囲に関連付けられた前記データのスナップショットを前記第1のエンドポイントに要求することと、
    前記アドレス範囲に関連付けられた前記データの前記スナップショットを前記第2のエンドポイントに提供することと
    を行うようにさらに構成される、請求項9に記載のホストシステム。
  14. 前記ルートコンプレックスは、
    前記ホストメモリ内に記憶された前記データの前記第2の部分へのアクセスを求める要求を前記第2のエンドポイントから受信することと、
    前記コヒーレンシエージェントに、前記第1のエンドポイントから前記アドレス範囲の前記所有権を要求することと、
    前記第1のエンドポイントに、前記アドレス範囲の前記所有権を前記ホストシステムに返すことを要求することと、
    前記アドレス範囲に関連付けられた前記データを前記第2のエンドポイントに提供することと
    を行うようにさらに構成され、
    前記コヒーレンシエージェントは、前記アドレス範囲に関連付けられた前記修正されたデータを前記第1のエンドポイントから受信した後で、前記アドレス範囲の前記所有権を前記第1のエンドポイントから前記第2のエンドポイントに割り当てるようにさらに構成される、請求項9に記載のホストシステム。
  15. 集積回路(IC)に組み込まれる、請求項7に記載のホストシステム。
  16. セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、スマートフォン、タブレット、ファブレット、サーバ、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、および自動車からなる群から選択されるデバイスの中に組み込まれる、請求項7に記載のホストシステム。
  17. 周辺構成要素相互接続(PCI)エクスプレス(PCIe)システムのエンドポイントにおけるデータを管理するための方法であって、
    第1のエンドポイントによって、ホストメモリに関連付けられたルートコンプレックスに、前記ホストメモリ内に記憶されたデータの一部へのアクセスを要求するステップと、
    アドレス範囲に関連付けられたデータおよび前記アドレス範囲の所有権を前記ルートコンプレックスから受信するステップと、
    前記アドレス範囲に関連付けられた前記データを前記第1のエンドポイントのローカルメモリに記憶するステップと、
    前記アドレス範囲の前記所有権がホストシステムに戻ったことに応答して、前記アドレス範囲に関連付けられた修正されたデータを前記ルートコンプレックスに提供するステップと
    を含む方法。
  18. 前記アドレス範囲の前記所有権を前記ホストシステムに返すことを求める要求を前記ルートコンプレックスから受信したことに応答して、前記アドレス範囲に関連付けられた前記修正されたデータを提供するステップをさらに含む、請求項17に記載の方法。
  19. 前記第1のエンドポイントによって、前記アドレス範囲に関連付けられた前記修正されたデータを前記ルートコンプレックスに提供した後で、前記アドレス範囲の前記所有権を前記ホストシステムに返すステップをさらに含む、請求項17に記載の方法。
  20. 前記第1のエンドポイントにおいて、前記アドレス範囲に関連付けられた前記データのスナップショットを求める第2のエンドポイントからの要求を前記ルートコンプレックスから受信するステップと、
    前記アドレス範囲に関連付けられた前記データの前記スナップショットを前記第2のエンドポイントに提供するステップと
    をさらに含む、請求項17に記載の方法。
  21. 前記第1のエンドポイントにおいて、前記アドレス範囲の前記所有権を前記ホストシステムに返すことを求める要求を受信するステップと、
    前記アドレス範囲に関連付けられた前記データを前記ルートコンプレックスに提供するステップと、
    前記第1のエンドポイントによって、前記アドレス範囲の前記所有権を前記ホストシステムに返すステップと
    をさらに含む、請求項17に記載の方法。
  22. 周辺構成要素相互接続(PCI)エクスプレス(PCIe)システムのエンドポイントであって、
    ローカルメモリと、
    前記ローカルメモリに結合された処理回路であって、
    PCIeシステムのホストメモリに関連付けられたルートコンプレックスに、前記ホストメモリ内に記憶されたデータの一部へのアクセスを要求することと、
    アドレス範囲に関連付けられたデータおよび前記アドレス範囲の所有権を前記ルートコンプレックスから受信することと、
    前記アドレス範囲に関連付けられた前記データを前記エンドポイントの前記ローカルメモリに記憶することと、
    前記アドレス範囲の前記所有権が前記PCIeシステムに戻ったことに応答して、前記アドレス範囲に関連付けられた修正されたデータを前記ルートコンプレックスに提供することと
    を行うように構成された処理回路と
    を備えるエンドポイント。
  23. 前記処理回路は、前記アドレス範囲の前記所有権を前記PCIeシステムに返すことを求める要求を前記ルートコンプレックスから受信したことに応答して、前記アドレス範囲に関連付けられた前記修正されたデータを提供するようにさらに構成される、請求項22に記載のエンドポイント。
  24. 前記処理回路は、前記アドレス範囲に関連付けられた前記修正されたデータを前記ルートコンプレックスに提供した後で、前記アドレス範囲の前記所有権を前記PCIeシステムに返すようにさらに構成される、請求項22に記載のエンドポイント。
  25. 前記処理回路は、
    前記アドレス範囲に関連付けられた前記データのスナップショットを求める第2のエンドポイントからの要求を前記ルートコンプレックスから受信したことに応答して、前記アドレス範囲に関連付けられた前記データの前記スナップショットを前記第2のエンドポイントに提供するようにさらに構成される、請求項22に記載のエンドポイント。
  26. 前記処理回路は、
    前記アドレス範囲に関連付けられた前記データを前記ルートコンプレックスに提供し、前記アドレス範囲の前記所有権を前記PCIeシステムに返すことを求める要求を受信したことに応答して前記アドレス範囲の前記所有権を前記PCIeシステムに返すようにさらに構成される、請求項22に記載のエンドポイント。
  27. 周辺構成要素相互接続(PCI)エクスプレス(PCIe)システムのホストシステムであって、
    PCIeバスを通して少なくとも第1のエンドポイントおよび第2のエンドポイントとインターフェースするための手段と、
    データを記憶するための手段であって、少なくとも前記データの第1の部分および前記データの第2の部分がアドレス範囲に関連付けられる、手段と、
    データを記憶するための前記手段内に記憶された前記データを求めるデータ所有権要求を処理するための手段であって、前記アドレス範囲に関連付けられた前記データの前記第1の部分の所有権を求める前記第1のエンドポイントからの要求を前記PCIeバスから受信するように構成された手段と、
    メモリを制御するための手段であって、前記アドレス範囲の所有権を制御するように構成された手段と
    を備えるホストシステム。
  28. データ所有権要求を処理するための前記手段は、
    前記ホストシステムからの前記データの前記第1の部分に関連付けられた前記アドレス範囲の前記所有権を、メモリを制御するための前記手段に要求することと、
    前記アドレス範囲に関連付けられた前記データを前記第1のエンドポイントに提供することと
    を行うようにさらに構成され、
    メモリを制御するための前記手段は、前記アドレス範囲の前記所有権を前記ホストシステムから前記第1のエンドポイントに割り当てることと、
    前記アドレス範囲に関連付けられた修正されたデータを、データを記憶するための前記手段内に記憶することと
    を行うようにさらに構成される、請求項27に記載のホストシステム。
  29. 周辺構成要素相互接続(PCI)エクスプレス(PCIe)システムであって、
    ホストシステムを備え、前記ホストシステムが、
    PCIeバスを通して少なくともPCIeシステムのエンドポイントに結合されるように構成されたPCIeバスインターフェースと、
    データが記憶されたホストメモリであって、前記データの少なくとも一部がアドレス範囲に関連付けられる、ホストメモリと、
    前記ホストメモリに関連付けられたルートコンプレックスであって、前記アドレス範囲に関連付けられた前記データの前記一部の所有権を求める前記エンドポイントからの要求を前記PCIeバスから受信するように構成されたルートコンプレックスと、
    前記アドレス範囲の所有権を制御するように構成されたコヒーレンシエージェントと
    を備え、
    前記エンドポイントが、ローカルメモリと処理回路とを備え、前記処理回路が、
    前記ホストメモリ内に記憶された前記データの前記一部へのアクセスを前記ルートコンプレックスに要求することと、
    前記アドレス範囲に関連付けられた前記データおよび前記アドレス範囲の前記所有権を前記ルートコンプレックスから受信することと、
    前記アドレス範囲に関連付けられた前記データを前記ローカルメモリに記憶することと、
    前記アドレス範囲の前記所有権が前記ホストシステムに戻ったことに応答して、前記アドレス範囲に関連付けられた修正されたデータを前記ルートコンプレックスに提供することと
    を行うように構成されるPCIeシステム。
JP2017565987A 2015-06-22 2016-06-17 周辺構成要素相互接続(PCI)エクスプレス(PCIe)トランザクションレイヤへのコヒーレンシ駆動型拡張 Ceased JP2018518777A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562182815P 2015-06-22 2015-06-22
US62/182,815 2015-06-22
US15/184,181 US20160371222A1 (en) 2015-06-22 2016-06-16 COHERENCY DRIVEN ENHANCEMENTS TO A PERIPHERAL COMPONENT INTERCONNECT (PCI) EXPRESS (PCIe) TRANSACTION LAYER
US15/184,181 2016-06-16
PCT/US2016/038146 WO2016209733A1 (en) 2015-06-22 2016-06-17 Coherency driven enhancements to a peripheral component interconnect (pci) express (pcie) transaction layer

Publications (2)

Publication Number Publication Date
JP2018518777A true JP2018518777A (ja) 2018-07-12
JP2018518777A5 JP2018518777A5 (ja) 2019-07-04

Family

ID=56297124

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017565987A Ceased JP2018518777A (ja) 2015-06-22 2016-06-17 周辺構成要素相互接続(PCI)エクスプレス(PCIe)トランザクションレイヤへのコヒーレンシ駆動型拡張

Country Status (9)

Country Link
US (1) US20160371222A1 (ja)
EP (1) EP3311279A1 (ja)
JP (1) JP2018518777A (ja)
KR (1) KR20180019595A (ja)
CN (1) CN107980127A (ja)
AU (1) AU2016284002A1 (ja)
BR (1) BR112017027806A2 (ja)
TW (1) TW201701165A (ja)
WO (1) WO2016209733A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10514847B2 (en) 2016-12-28 2019-12-24 Amazon Technologies, Inc. Data storage system with multiple durability levels
US10484015B2 (en) 2016-12-28 2019-11-19 Amazon Technologies, Inc. Data storage system with enforced fencing
US11301144B2 (en) * 2016-12-28 2022-04-12 Amazon Technologies, Inc. Data storage system
US10771550B2 (en) 2016-12-28 2020-09-08 Amazon Technologies, Inc. Data storage system with redundant internal networks
US10474620B2 (en) 2017-01-03 2019-11-12 Dell Products, L.P. System and method for improving peripheral component interface express bus performance in an information handling system
WO2018186454A1 (ja) * 2017-04-07 2018-10-11 パナソニックIpマネジメント株式会社 情報処理装置
US10366027B2 (en) * 2017-11-29 2019-07-30 Advanced Micro Devices, Inc. I/O writes with cache steering
US11169723B2 (en) 2019-06-28 2021-11-09 Amazon Technologies, Inc. Data storage system with metadata check-pointing

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2675981B2 (ja) * 1993-09-20 1997-11-12 インターナショナル・ビジネス・マシーンズ・コーポレイション スヌープ・プッシュ・オペレーションを回避する方法
US6018792A (en) * 1997-07-02 2000-01-25 Micron Electronics, Inc. Apparatus for performing a low latency memory read with concurrent snoop
US20040128269A1 (en) * 2002-12-27 2004-07-01 Milligan Charles A. System and method for managing data through families of inter-related metadata tables
US7162706B2 (en) * 2004-03-05 2007-01-09 Picocraft Design Systems, Inc. Method for analyzing and validating clock integration properties in circuit systems
US20070233928A1 (en) * 2006-03-31 2007-10-04 Robert Gough Mechanism and apparatus for dynamically providing required resources for a hot-added PCI express endpoint or hierarchy
US7836129B2 (en) * 2006-12-19 2010-11-16 International Business Machines Corporation Communication between host systems using a queuing system and shared memories
US7860930B2 (en) * 2006-12-19 2010-12-28 International Business Machines Corporation Communication between host systems using a transaction protocol and shared memories
US20090006668A1 (en) * 2007-06-28 2009-01-01 Anil Vasudevan Performing direct data transactions with a cache memory
CN101178697B (zh) * 2007-12-12 2011-08-03 杭州华三通信技术有限公司 一种pcie设备通信方法及***
CN101276318B (zh) * 2008-05-12 2010-06-09 北京航空航天大学 基于pci-e总线的直接存取数据传输控制装置
CN102549555B (zh) * 2009-10-07 2015-04-22 惠普发展公司,有限责任合伙企业 主机存储器的基于通知协议的端点高速缓存
US9002790B2 (en) * 2011-09-14 2015-04-07 Google Inc. Hosted storage locking
US9189441B2 (en) * 2012-10-19 2015-11-17 Intel Corporation Dual casting PCIE inbound writes to memory and peer devices
JP6139689B2 (ja) * 2012-10-22 2017-05-31 インテル・コーポレーション 装置
CN103885908B (zh) * 2014-03-04 2017-01-25 中国科学院计算技术研究所 一种基于外部设备可访问寄存器的数据传输***及其方法

Also Published As

Publication number Publication date
TW201701165A (zh) 2017-01-01
US20160371222A1 (en) 2016-12-22
BR112017027806A2 (pt) 2018-08-28
CN107980127A (zh) 2018-05-01
KR20180019595A (ko) 2018-02-26
WO2016209733A1 (en) 2016-12-29
AU2016284002A1 (en) 2017-11-23
EP3311279A1 (en) 2018-04-25

Similar Documents

Publication Publication Date Title
JP2018518777A (ja) 周辺構成要素相互接続(PCI)エクスプレス(PCIe)トランザクションレイヤへのコヒーレンシ駆動型拡張
JP6599397B2 (ja) フラッシュメモリにおけるコマンド完了の確認
JP7116047B2 (ja) プロセッサベースシステムの異種メモリシステムの柔軟な管理を実現するためのメモリコントローラおよび方法
US9557922B2 (en) System and method for peer-to-peer PCIe storage transfers
JP6165342B2 (ja) エンベデッドメモリへのコマンドキューイングの提供
US9881680B2 (en) Multi-host power controller (MHPC) of a flash-memory-based storage device
US9632953B2 (en) Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers
CN108885588B (zh) 基于硬件的转译后备缓冲器(tlb)失效
EP2979193B1 (en) Shared memory system
JP2018508869A (ja) 仮想化環境におけるストレージリソース管理
US20170371783A1 (en) Self-aware, peer-to-peer cache transfers between local, shared cache memories in a multi-processor system
JP2019509557A (ja) ダイナミックランダムアクセスメモリ(dram)キャッシュインジケータキャッシュを使用するスケーラブルdramキャッシュ管理の提供
US9880748B2 (en) Bifurcated memory management for memory elements
TW201842448A (zh) 以處理器為基礎之裝置中之聚集快取維護指令
JP6396625B1 (ja) 複数のマスタデバイス間の条件付き介入を使用したキャッシュコヒーレンシの維持
JP6393013B1 (ja) リトライバスコヒーレンシプロトコルおよびインオーダーレスポンス非リトライバスコヒーレンシプロトコルを使用するプロセッサベースシステムにおけるデッドロックの回避

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171225

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190529

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190529

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200625

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200803

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20201221