JP5953573B2 - ペリフェラル・コンポーネント・インターコネクト・エクスプレス・エンドポイントデバイスにアクセスするためのコンピュータシステム、方法、および装置 - Google Patents

ペリフェラル・コンポーネント・インターコネクト・エクスプレス・エンドポイントデバイスにアクセスするためのコンピュータシステム、方法、および装置 Download PDF

Info

Publication number
JP5953573B2
JP5953573B2 JP2015514331A JP2015514331A JP5953573B2 JP 5953573 B2 JP5953573 B2 JP 5953573B2 JP 2015514331 A JP2015514331 A JP 2015514331A JP 2015514331 A JP2015514331 A JP 2015514331A JP 5953573 B2 JP5953573 B2 JP 5953573B2
Authority
JP
Japan
Prior art keywords
access
endpoint device
pcie endpoint
processor
pcie
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
JP2015514331A
Other languages
English (en)
Other versions
JP2015519665A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2015519665A publication Critical patent/JP2015519665A/ja
Application granted granted Critical
Publication of JP5953573B2 publication Critical patent/JP5953573B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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
    • 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
    • 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/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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
    • 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/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4081Live connection to bus, e.g. hot-plugging
    • 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/44Arrangements for executing specific programs
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • 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
    • 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/28DMA
    • G06F2213/2802DMA using DMA transfer descriptors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Bus Control (AREA)
  • Debugging And Monitoring (AREA)
  • Information Transfer Systems (AREA)
  • Multi Processors (AREA)
  • Power Sources (AREA)
  • Hardware Redundancy (AREA)

Description

本発明の実施形態は、コンピュータ技術の分野に関し、詳細には、ペリフェラル・コンポーネント・インターコネクト・エクスプレス・エンドポイントデバイス(peripheral component interconnect express endpoint device)にアクセスするための方法、コンピュータシステム、および装置に関する。
ペリフェラル・コンポーネント・インターコネクト・エクスプレス(Peripheral Component Interconnect Express、PCIe)は、計算および通信プラットフォーム上で使用される高性能システムバスである。PCIeバスは、中央処理装置(central processing unit、CPU)および周辺デバイスの相互接続システムにおいて広く使用され、計算および記憶デバイス内でコアサービスチャネルとして機能する。ネットワークインターフェースカードデバイスまたは固体ディスク(Solid State Disk、SSD)など、PCIeバスを介してCPUと相互接続する複数のタイプの周辺デバイスが存在しうる。そのようなデバイスは、本書においてPCIeエンドポイントデバイスと呼ばれる。
PCIeバスは、サーバまたは記憶システムのバスインターフェースとして広く使用されている。システムの通常の実行の間、電源がオフでない状態でPCIeエンドポイントデバイスを追加または除去する必要があるのは、オンライン容量拡大および保守要求、すなわち、ホットスワップ要求のためである。現在のPCIeホットスワップは、以下の動作プロセスに準拠する。すなわち、オペレータがボタンを押下することによってホットスワップ要求を開始し、ホットスワップ事象を学習した後で、ホットスワップコントローラが、PCIeエンドポイントデバイスにアクセスできるすべてのドライバに対して、そのPCIeエンドポイントデバイスにアクセスするのを停止するように通知して、ホットスワップを実行する必要があるPCIeエンドポイントデバイスのリソースをアンインストールし、次いで、PCIeエンドポイントデバイスの電源が切られて、オペレータがPCIeエンドポイントデバイスを取り外すプロセスである。
システムの通常の実行を確実にするために、PCIeエンドポイントデバイスの現在のホットスワップに関して事前通知が必要とされる。しかし、近年、PCIeバスはシステム内相互接続からシステム間相互接続へと徐々に発展し、外部ケーブルなどのアプリケーションが増大している。ケーブルは異常に接続解除されやすく、したがって、PCIeエンドポイントデバイスが事前通知なしに異常にオフラインになる状態が生じる。加えて、ユーザが固体ディスクSSDを使用してシステムに直接的に接続するシナリオがますます広く生じている。ユーザ習慣要因(user habit factor)により、ユーザは事前通知なしにSSDディスクを直接的に挿入または除去することができる。PCIeエンドポイントデバイスが異常に突然オフラインになる、記述された状態に関して、CPUがPCIeエンドポイントデバイスに対して読取り命令および書込み命令を開始した場合、関連する命令は実行されるのを待つ状態に留まることになり、CPUからPCIeエンドポイントデバイスにアクセスするための命令がある程度まで連続的に蓄積したとき、CPUはシステム全体を異常と見なして、マシンチェック例外(Machine check exception、MCE)エラーを報告する。結果として、システム全体のリセットが引き起こされる。
本発明の実施形態は、ペリフェラル・コンポーネント・インターコネクト・エクスプレス・エンドポイントデバイスにアクセスするための方法、コンピュータシステム、およびPCIeエンドポイントデバイスが異常にオフラインになった後で、プロセッサによってリセットが引き起こされるのを回避するための装置を提案する。
第1の態様において、本発明のある実施形態は、
プロセッサと、
PCIeエンドポイントデバイスに接続するように構成されたペリフェラル・コンポーネント・インターコネクト・エクスプレスPCIeバスと
を含むコンピュータシステムであって、
コンピュータシステムがアクセスプロキシをさらに含み、アクセスプロキシがプロセッサとPCIeエンドポイントデバイスとに接続し、
プロセッサが、アクセスプロキシを使用することによってPCIeエンドポイントデバイスにアクセスするようにプロセッサに命令する動作命令を獲得し、PCIeエンドポイントデバイスにアクセスするようにアクセスプロキシに命令するアクセス要求を動作命令に従ってアクセスプロキシに送信するように構成され、
アクセスプロキシが、プロセッサによって送信されたアクセス要求を受信した後で、アクセス要求の応答メッセージをプロセッサに送信するように構成された、
コンピュータシステムを提供する。
第1の態様に関して、第1の可能な実装様式では、コンピュータシステムは、アクセスプロキシを指摘する、PCIeエンドポイントデバイスにアクセスするためにプリセットされたインターフェースに従って動作命令を生成するように構成されたPCIeエンドポイントデバイスのドライブモジュールをさらに含み、
プロセッサは、PCIeエンドポイントデバイスのドライブモジュールによって生成された動作命令を獲得するよう特に構成される。
第1の態様に関して、第2の可能な実装様式では、コンピュータシステムは、PCIeエンドポイントデバイスのドライブモジュールとホストオペレーティングシステムとをさらに含み、
PCIeエンドポイントデバイスのドライブモジュールは、PCIeエンドポイントデバイスにアクセスするために、ホストオペレーティングシステムを起動させるように構成され、
ホストオペレーティングシステムは、PCIeエンドポイントデバイスのドライブモジュールによる起動に応答して、アクセスプロキシを指摘する、PCIeエンドポイントデバイスにアクセスするためにプリセットされたインターフェースに従って動作命令を生成するように構成され、
プロセッサは、ホストオペレーティングシステムによって生成された動作命令を獲得するように特に構成される。
第1の態様、第1の態様の第1の可能な実装様式、または第1の態様の第2の可能な実装方法に関して、第3の可能な実装方法では、アクセスプロキシは、アクセス要求に従ってPCIeエンドポイントデバイスに対するアクセスを実行するようにさらに構成される。
第2の態様において、PCIeバスを介してコンピュータシステムのプロセッサに接続するペリフェラル・コンポーネント・インターコネクト・エクスプレスPCIeエンドポイントデバイスにアクセスするための方法であって、
プロセッサによって、動作命令を獲得するステップであって、動作命令が、アクセスプロキシを使用することによってPCIeエンドポイントデバイスにアクセスするようにプロセッサに命令する、獲得するステップと、
プロセッサによって、動作命令に従ってアクセス要求をアクセスプロキシに送信するステップであって、アクセス要求がPCIeエンドポイントデバイスにアクセスするようにアクセスプロキシに命令する、送信するステップと、
プロセッサによって、アクセスプロキシによって送信されたアクセス要求の応答メッセージを受信するステップと
を含む方法が提供される。
第2の態様に関して、第1の可能な実装様式では、プロセッサは、アクセスプロキシを指摘する、PCIeエンドポイントデバイスにアクセスするためにプリセットされたインターフェースに従って、PCIeエンドポイントデバイスのドライブモジュールによって生成された動作命令を獲得するか、あるいは、プロセッサは、アクセスプロキシを指摘する、PCIeエンドポイントデバイスにアクセスするためにプリセットされたインターフェースに従って、ホストオペレーティングシステムによって生成された動作命令を獲得する。第2の態様または第2の態様の第1の可能な実装様式に関して、第2の可能な実装様式では、動作命令は、ダイレクトメモリアクセス(Direct Memory Access、DMA)エンジンを使用することによってPCIeエンドポイントデバイスにアクセスするようにプロセッサに特に命令し、
プロセッサは、動作命令に従ってデータ移動要求をDMAエンジンに送信し、データ移動要求は、PCIeエンジンのメモリ内の特定データをコンピュータシステムのメモリに移動するように、またはコンピュータシステムのメモリ内の特定データをPCIeエンドポイントデバイスのメモリに移動するようにDMAエンジンに命令する。
第2の態様、第2の態様の第1の可能な実装様式、または第2の態様の第2の可能な実装方法に関して、第3の可能な実装様式では、方法は、
プロセッサによって、アクセスプロキシによって送信された第1の通知メッセージを受信するステップであって、第1の通知メッセージが、アクセスプロキシがPCIeエンドポイントデバイスに成功裏にアクセスしたことを示す、受信するステップと、
プロセッサによって、第1の通知メッセージに従ってアクセス結果を獲得するステップと
をさらに含む。
第2の態様、第2の態様の第1の可能な実装様式、または第2の態様の第2の可能な実装方法に関して、第4の可能な実装様式では、方法は、
プロセッサによって、アクセスプロキシによって送信された第2の通知メッセージを受信するステップであって、第2の通知メッセージが、アクセスプロキシがPCIeエンドポイントデバイスにアクセスするのに失敗したことを示す、受信するステップと、
プロセッサによって、第2の通知メッセージに従って、アクセス失敗に関する後続処理を実行するステップと
をさらに含む。
第2の態様の第4の可能な実装方法に関して、第5の可能な実装方法では、アクセス失敗の後続処理は、
プロセッサによって、アクセスプロキシがPCIeエンドポイントデバイスにアクセスするのに失敗した理由を判断して、アクセス失敗の理由が、アクセスされるべきPCIeエンドポイントデバイスが異常にオフラインであるためである場合、プロセッサによって、PCIeエンドポイントデバイスへのアクセスを停止するステップ
を含む。
第3の態様において、
プロセッサと、
コンピュータ実行命令を記憶するように構成されたメモリとを含むコンピュータであって、
コンピュータが実行しているとき、プロセッサが、コンピュータが第2の態様に従ってペリフェラル・コンポーネント・インターコネクト・エクスプレスPCIeエンドポイントデバイスにアクセスする方法を実行するように、メモリ内に記憶されたコンピュータ実行命令を実行して、通信インターフェースを介してコンピュータの外部デバイスと通信する
コンピュータが提供される。
第4の態様において、コンピュータ実行命令を含むコンピュータ可読媒体であって、コンピュータのプロセッサがコンピュータ実行命令を実行するとき、コンピュータが第2の態様に従ってペリフェラル・コンポーネント・インターコネクト・エクスプレスPCIeエンドポイントデバイスにアクセスする方法を実行するコンピュータ可読媒体が提供される。
第5の態様において、PCIeバスを介してコンピュータシステムのプロセッサに接続するペリフェラル・コンポーネント・インターコネクト・エクスプレスPCIeエンドポイントデバイスにアクセスするための方法であって、
起動命令を受信するステップであって、起動命令がPCIeエンドポイントデバイスにアクセスする必要があることを示す、受信するステップと、
アクセスプロキシを指摘する、PCIeエンドポイントデバイスにアクセスするためにプリセットされたインターフェースに従って動作命令を生成するステップであって、動作命令が、アクセスプロキシを使用することによってPCIeエンドポイントデバイスにアクセスするようにプロセッサに命令するために使用される、生成するステップと
を含む方法が提供される。
第6の態様において、ペリフェラル・コンポーネント・インターコネクト・エクスプレスPCIeエンドポイントデバイスにアクセスするための装置であって、
PCIeエンドポイントデバイスにアクセスする必要があることを示す起動命令を受信するように構成された受信モジュールと、
アクセスプロキシを指摘する、PCIeエンドポイントデバイスにアクセスするためにプリセットされたインターフェースに従って、PCIeエンドポイントデバイスにアクセスするための動作命令を生成するように構成された生成モジュールであって、動作命令が、アクセスプロキシを使用することによってPCIeエンドポイントデバイスにアクセスするようにプロセッサに命令するために使用される、生成モジュールと
を含む装置が提供される。
第7の態様において、
プロセッサと、
コンピュータ実行命令を記憶するように構成されたメモリとを含むコンピュータであって、
コンピュータが実行しているとき、コンピュータが以下のステップ、すなわち、
起動命令を受信するステップであって、起動命令がPCIeエンドポイントデバイスにアクセスする必要があることを示す、受信するステップと、
アクセスプロキシを指摘する、PCIeエンドポイントデバイスにアクセスするためにプリセットされたインターフェースに従って、PCIeエンドポイントデバイスにアクセスするための動作命令を生成するステップであって、動作命令が、アクセスプロキシを使用することによってPCIeエンドポイントデバイスにアクセスするようにプロセッサに命令するために使用される、生成するステップと
を実行するように、プロセッサが、メモリ内に記憶されたコンピュータ実行命令を実行するコンピュータが提供される。
第8の態様において、コンピュータ実行命令を含むコンピュータ可読媒体であって、コンピュータのプロセッサがコンピュータ実行命令を実行するとき、コンピュータが以下のステップ、すなわち、
起動命令を受信するステップであって、起動命令がPCIeエンドポイントデバイスにアクセスする必要があることを示す、受信するステップと、
アクセスプロキシを指摘する、PCIeエンドポイントデバイスにアクセスするためにプリセットされたインターフェースに従って、PCIeエンドポイントデバイスにアクセスするための動作命令を生成するステップであって、動作命令が、アクセスプロキシを使用することによってPCIeエンドポイントデバイスにアクセスするようにプロセッサに命令するために使用される、生成するステップと
を実行するコンピュータ可読媒体が提供される。
第9の態様において、コンピュータシステムに適用されるアクセスプロキシであって、コンピュータシステムが、プロセッサとペリフェラル・コンポーネント・インターコネクト・エクスプレスPCIeバスとを含み、PCIeバスが少なくとも1つのPCIeエンドポイントデバイスに接続し、
アクセスプロキシがプロセッサとPCIeエンドポイントデバイスとに接続し、
プロセッサとPCIeエンドポイントデバイスとの間の直接アクセスを分離して、PCIeエンドポイントデバイスにアクセスするための要求をプロセッサから受信して、アクセス要求の応答メッセージをプロセッサに返すように構成されたアクセスプロキシが提供される。
第10の態様において、コンピュータシステムに適用されるPCIe交換器であって、コンピュータシステムが、プロセッサとペリフェラル・コンポーネント・インターコネクト・エクスプレスPCIeバスとを含み、PCIeバスが少なくとも1つのPCIeエンドポイントデバイスに接続し、
PCIe交換器の上流ポートがPCIeバスを介してプロセッサに接続し、PCIe交換器の下流ポートがPCIeバスを介してPCIeエンドポイントデバイスに接続し、
第9の態様によるアクセスプロキシがその中に組み込まれたPCIe交換器が提供される。
第11の態様において、コンピュータシステムにアクセスするペリフェラル・コンポーネント・インターコネクト・エクスプレスPCIeエンドポイントデバイスにリソースを割り振るための方法であって、
PCIeエンドポイントデバイスにアクセスするためのそれぞれのポートに関して特定割合のリソースを確保するステップであって、特定割合がPCIeエンドポイントデバイスの必要とされるリソース量以上である、確保するステップと、
確保された特定割合のリソースに従って、PCIeエンドポイントデバイスにアクセスするためのそれぞれのポートに確保された特定割合のリソースを割り振るステップと
を含む方法が提供される。
第11の態様によれば、第1の実装様式で、特定割合は最大リソース要求量を有するタイプのPCIeエンドポイントデバイスの必要とされるリソース量である。
第11の態様または第11の態様の第1の可能な実装様式によれば、第2の可能な実装様式で、コンピュータシステムにアクセスするPCIeエンドポイントデバイスとプロセッサとがPCIeフィールドを構成し、PCIeフィールドが対応するPCIeツリーで構成され、
この方法は、PCIeエンドポイントデバイスにアクセスするためのそれぞれのポートに割り振られた特定割合のリソースをPCIeツリー内に記録するステップをさらに含む。
第11の態様の第2の可能な実装様式によれば、第3の可能な実装様式で、この方法は、
それぞれのPCIeエンドポイントデバイスがコンピュータシステムからオフラインであるとき、PCIeエンドポイントデバイスにアクセスするためのそれぞれのポートに割り振られ、かつPCIeツリー内に記録された特定割合のリソースを確保するステップを含む。
第12の態様において、
プロセッサと、
PCIeエンドポイントデバイスを接続するように構成されたペリフェラル・コンポーネント・インターコネクト・エクスプレスPCIeバスと、
PCIeエンドポイントデバイスにアクセスするためのそれぞれのポートに関して特定割合のリソースを確保するように構成された基本出力システムBIOSであって、特定割合がPCIeエンドポイントデバイスの必要とされるリソース量以上である、基本入出力システムBIOSと、
BIOSによって確保された特定割合のリソースに従って、PCIeエンドポイントデバイスにアクセスするためのそれぞれのポートに確保された特定割合のリソースを割り振るように構成されたPCIe管理モジュールと
を含むコンピュータシステムが提供される。
本発明の実施形態では、プロセッサは、アクセスされるべきPCIeエンドポイントデバイスにもはや直接的にアクセスせず、アクセスプロキシを使用することによってアクセスを完了する。アクセスプロキシは、PCIeエンドポイントデバイスの異常オフラインによってもたらされる影響を分離して、アクセス要求の応答メッセージをプロセッサに返すことが可能であり、その結果、プロセッサ上にキャッシュされたタスクがタイムアウトにより蓄積せず、したがって、プロセッサはMCEリセットを回避する。
本発明の実施形態では、システムは、特定割合のリソースを確保して、そのリソースをPCIeエンドポイントデバイスにアクセスするためのポートに割り振り、その結果、PCIeエンドポイントデバイスがシステムにアクセスするとき、プロセッサはPCIeエンドポイントデバイスを走査しない。これは、PCIeエンドポイントデバイスがコンピュータシステムにアクセスするとき、発生しうるMCEエラーによってシステム全体のリセットが引き起こされるのを回避する。
本発明の実施形態の技術的解決策をより明瞭に例示するために、以下は、これらの実施形態または先行技術を説明するために必要とされる添付の図面を手短に紹介する。明らかに、以下の説明で添付の図面は本発明の単にいくつかの実施形態を示し、当業者は、創造的努力なしに、これらの添付の図面から依然として他の図面を導出することができる。
本発明のある実施形態による、あるコンピュータシステムの組成図である。 本発明のある実施形態による、あるメモリ内に含まれるプログラムモジュールの組成図である。 本発明のある実施形態による別のコンピュータシステムの組成図である。 本発明のある実施形態による別のコンピュータシステムの組成図である。 本発明のある実施形態による、ある方法の流れ図である。 本発明のある実施形態による、別の方法の流れ図である。 本発明のある実施形態による、別の方法の流れ図である。 本発明のある実施形態による、別の方法の流れ図である。 本発明のある実施形態による、別の方法の流れ図である。 本発明のある実施形態による、別の方法の流れ図である。 本発明のある実施形態による、PCIeエンドポイントデバイスにアクセスするためのある装置の組成図である。 本発明のある実施形態による、あるコンピュータの組成図である。
本発明の実施形態は、ペリフェラル・コンポーネント・インターコネクト・エクスプレス・エンドポイントデバイスにアクセスするための方法、コンピュータシステム、および装置を提供する。PCIeエンドポイントデバイス上でホットスワップ動作を実行する必要があるとき、システムは前処理について事前に通知されない場合があり、PCIeエンドポイントデバイスとプロセッサとの間の接続は直接的に接続解除される。この時点で、プロセッサ上でMCEリセットリスクは生じない。本発明の実施形態では、PCIeエンドポイントデバイスがシステムから直接的に除去される状態、または失敗によりオフラインになる状態は、集合的にPCIeエンドポイントデバイスの異常なオフラインと呼ばれる。
本発明のある実施形態のシステムアーキテクチャ
図1は、本発明のある実施形態による、あるコンピュータシステムの組成図である。図1に示されるコンピュータシステムは、CPU110と、メモリ120と、PCIeエンドポイントデバイス130とを含む。PCIeエンドポイントデバイス130は、PCIeバス140を介してCPU110に接続し、コンピュータシステム内に挿入可能であり、またはコンピュータシステムから除去可能である。PCIeエンドポイントデバイス130は、グラフィックス処理ユニット131、ネットワークインターフェースカード132、固体ディスク133、およびビデオ加速構成要素(video accelerating component)134など、複数の種類を含む。メモリ120は、データを記憶するように構成され、記憶されたデータは、CPUによって外部デバイスから獲得されるデータであってよく、またはさらに、CPUを実行させることが可能なプログラムデータであってもよい。詳細には、1つまたは複数のプログラムモジュールをメモリ内に記憶することが可能であり、CPU110は、プログラムモジュールのコンピュータ実行命令に従って関係する動作を実行する。図1に示されるコンピュータシステム内のPCIeエンドポイントデバイス130およびCPU110はPCIeフィールドを構成し、PCIeフィールド内のすべてのデバイスは、PCIeバス140を介してCPU110に接続し、CPU110によって制御される。
図1に示されるシステムアーキテクチャでは、図2に示されるように、メモリ120内のプログラムモジュールは、詳細には、アプリケーションモジュール121と、ドライブモジュール122と、ホストオペレーティングシステム(Host Operation System、HOS)123とを含むことが可能である。アプリケーションモジュール121は、PCIeエンドポイントデバイスに対するアクセス要求を生成する。ドライブモジュール122は、PCIeエンドポイントデバイスにアクセスするためのアプリケーションモジュールの要求に従って、(アクセスインターフェースがHOSによって提供されている場合)HOS123の対応するインターフェースを起動させることができる。HOS123は、ドライブモジュールによる起動に応答して、動作命令を生成し、その結果、CPUは、動作命令に従って、対応するPCIeエンドポイントデバイスにアクセスするか、または対応するPCIeエンドポイントデバイスを制御する。概して、1つのPCIeエンドポイントデバイスは、1つのドライブモジュールに対応する(確かに、それぞれのPCIeエンドポイントデバイスが対応するドライブモジュールを備えていることが確実にされる限り、1つのドライブモジュールが複数のPCIeエンドポイントデバイスに対応することは可能である)。例えば、図1に示されるシステムアーキテクチャによれば、メモリ120内のPCIeエンドポイントデバイスのドライブモジュールは、グラフィックス処理ユニットのドライブモジュール122-1と、ネットワークインターフェースカードNICのドライブモジュール122-2と、固体ディスクSSDのドライブモジュール122-3と、ビデオ加速構成要素のドライブモジュール122-4とを含むことが可能である。
例えば、アプリケーションモジュールが、CPUによってPCIeエンドポイントデバイスにアクセスするための現在の方法に従って、SSD固体ディスクに対するアクセス要求を生成する場合、アプリケーションモジュール121による起動に応答して、SDDのドライブモジュール122-3はHOS123を起動させ、HOS123は、デフォルト構成されたアクセスインターフェースに従ってCPU110に対する動作命令を生成し、動作命令は、デバイスSSD133にアクセスさせる命令と、関係する動作要件とを含み、CPU110は、SSD133のレジスタに対するアクセスを要求するために、SSDのドライブモジュール122-3の動作命令に従ってアクセス要求をSSD133に送信し、SSD133が異常にオフラインである場合、CPU110はCPU110のアクセス要求の応答メッセージをSSD133から受信しないことになり、この時点で、CPUはアクセスタスクを未完了と見なし、そのような未完了なタスクがCPU上にある程度まで蓄積した場合、CPUはシステム全体を異常と見なし、リセットを求めてMCEエラーを報告する。
本発明のこの実施形態において、CPUによってPCIeエンドポイントデバイスにアクセスするための方法は変更される。CPUはPCIeエンドポイントデバイスにもはや直接的にアクセスせず、第3者を使用することによってPCIeエンドポイントデバイスにアクセスする。図1に示されるように、本発明のこの実施形態において、アクセスプロキシ160がシステム内に新たに追加され、PCIeエンドポイントデバイスにアクセスして、CPU110に対するPCIeエンドポイントデバイスの異常なオフラインの影響を分離するために、CPU110の代わりにアクセスプロキシ160が使用される。図1に示されるように、CPU110は、SSD133にアクセスするために、もはやライン1を使用せず、ライン2およびライン3を使用する(ライン1は、図に示されるライン1であり、ライン2は図に示されるライン2であり、ライン3は図に示されるライン3であり、図に示されるライン1〜3の破線は実際の接続ではなく、それぞれの複合モジュール間のシグナルフローラインを視覚的に例示するためにだけ使用される)。CPU110は、まず、動作命令を獲得し、動作命令は、アクセスプロキシ160を使用することによって、SSD133にアクセスするようにCPUに命令する。次いで、CPU110は、ライン2を介してアクセス要求をアクセスプロキシ160に送信する。アクセスプロキシ160は、ライン2を介してアクセス要求の応答メッセージをCPU110に返す。その後、アクセスプロキシは、アクセス要求に従って、PCIeエンドポイントデバイスに対するアクセスを実行し、すなわち、ライン3を介してSSD133のレジスタ上で読取り動作および書込み動作を実行する。このようにして、一態様において、CPU110はPCIeエンドポイントデバイス130との直接的な信号関係を生成しないため、PCIeエンドポイントデバイス130がオフラインであるかどうかはCPU110に不可視であり、すなわち、PCIeエンドポイントデバイスはCPU110のサービス処理に影響を及ぼさない。別の態様において、本発明のこの実施形態によって提供されるアクセスプロキシ160は、CPU110によって送信されたアクセス要求に関して対応する応答メッセージを常に受信できるように、CPU110からアクセス命令を受信した後で、応答メッセージをCPU110に返すことが可能である。したがって、CPU110のアクセスタスクは、タスクの未完了により累積せず、MCEエラーは生成されず、CPUによって開始されるシステムリセットは回避される。
本発明のこの実施形態において、CPUによってPCIeエンドポイントデバイスにアクセスするための方法は、PCIeエンドポイントデバイスに対応するドライブモジュールをアップグレードまたは改善することによって変更可能である。PCIeエンドポイントデバイスに対応するドライブモジュールを再構成することによってこれが実施されるとき、アクセスインターフェースはPCIeエンドポイントデバイスに対応するドライブモジュール内でプリセットされ、プリセットされたアクセスインターフェースはアクセスプロキシを指摘し、PCIeエンドポイントデバイスに対応するドライブモジュールが、PCIeエンドポイントデバイスにアクセスすることが必要であると判断したとき、PCIeエンドポイントデバイスのドライブモジュールは、プリセットされたアクセスインターフェースに従ってCPUの動作命令を生成し、動作命令は、アクセスプロキシを使用することによって、PCIeエンドポイントデバイスにアクセスするようにCPUに命令する。
加えて、CPUによってPCIeエンドポイントデバイスにアクセスするための方法の変更は別の実装方法を有することが可能である。例えば、この変更はHOSを修正することによって実施される。アクセスインターフェースはHOS上でプリセットされ、プリセットされたアクセスインターフェースはアクセスプロキシを指摘する。PCIeエンドポイントデバイスに対するアクセスが必要とされると判断するとき、PCIeエンドポイントデバイスのドライブモジュールは、PCIeエンドポイントデバイスにアクセスするためにHOSを依然として起動させる。HOSがPCIeエンドポイントデバイスのドライブによって送信された起動命令を受信した後で、HOS上で構成されたPCIeエンドポイントデバイスにアクセスするためのインターフェースはアクセスプロキシにリセットされているため、HOSは動作命令を生成し、動作命令は、アクセスプロキシを使用することによってPCIeエンドポイントデバイスにアクセスするようにCPUに命令する。
以下は、本発明のこの実施形態によるアクセスプロキシの機能および詳細な実装形式を説明する。本発明のこの実施形態によるアクセスプロキシは、分離機能とアクセスプロキシ機能とを含む。分離モジュールとして機能すると、アクセスプロキシは、PCIeエンドポイントデバイスからのその独立を確実にする必要があり、CPUからのその独立を確実にする必要もある。PCIeエンドポイントデバイスからの独立を保つためには、アクセスプロキシがPCIeエンドポイントデバイスと共に除去されないことを確実にする必要があり、したがって、アクセスプロキシおよびPCIeエンドポイントデバイスが物理設定で異なるデバイスに属する必要があり、CPUからの独立を保つためには、アクセスプロキシが独立したプロセッサを有することが主に確実にされる。アクセスプロキシのプロセッサがシステムのCPUから独立しているとき、PCIeエンドポイントデバイスが直接的に除去されない場合ですら、アクセスプロキシモジュールに対する影響はCPUに影響を及ぼさないことになる。プロキシモジュールとして機能すると、アクセスプロキシは、PCIeエンドポイントデバイスに対するアクセスを実施して、CPUから受信されたアクセス要求の応答メッセージを返す必要があり、アクセス要求の応答メッセージは、確認応答、拒絶応答、または失敗応答であってよい。しかし、何の種類の応答メッセージであれ、メッセージは、CPUによって送信されたアクセス要求が受信されていることをCPUに示す。CPUは、応答メッセージを受信した後で、現在のタスクが完了していると判断して、そのタスクに関して開始されたタイマを停止することができる。このようにして、CPUのタスクタイムアウト停止機構は正常に保たれ、CPU上にキャッシュされた他のメッセージはタイムアウトにより累積せず、それによって、CPUによってMCEリセットが引き起こされるのを回避する。
アクセスプロキシの機能のこの考察に基づいて、システム内のアクセスプロキシを複数の形式で設定することも可能である。図1に示されるシステムアーキテクチャにおいて、アクセスプロキシ160は、独立した新たに追加されたデバイスとしてコンピュータシステム内で設定され、アクセスプロキシはPCIeバスを介して、CPUとPCIeエンドポイントデバイスとに接続する。加えて、アクセスプロキシ160は、実施のために、PCIeフィールド内の既存のデバイスと共にパッケージ化されてもよい。例えば、アクセスプロキシ160は、ファームウェアとしてCPUと共にパッケージ化される。
本発明のこの実施形態において、アクセスプロキシは既存のハードウェアを使用することによって実施可能である。例えば、アクセスプロキシは、ダイレクトメモリアクセス(Direct Memory Access、DMA)エンジンを使用することによって実施される。新しいハードウェアを使用することによって、アクセスプロキシを実施することも可能である。例えば、アクセスプロキシ機能を有するソフトウェアモジュールは、独立したプロセッサを有するハードウェアデバイス上にインストールされる。
本発明のこの実施形態において、アクセスプロキシはアクセス要求の応答メッセージをCPUに返す必要があるため、特定の実装の間、アクセスプロキシの機能を実施するための異なる様式が存在する。実装様式のうちの1つは、アクセスプロキシとCPUとの間の接続関係が保持状態であることを確実にすること、すなわち、これら2つの間の接続関係が接続解除されないこと、またはアクセスプロキシがCPUに関してホットスワップ可能でないことである。例えば、アクセスプロキシがロードされたハードウェアデバイス、もしくはアクセスプロキシを実施するために使用されるハードウェアデバイスは、CPUに接続されたプリント基板PCB上にはんだ付けされるか、またはアクセスプロキシがロードされているハードウェアデバイスもしくはアクセスプロキシとプロセッサとを実施するために使用されるハードウェアデバイスは、コネクタを使用することによって固定される。
図3は、本発明の別の実施形態による、あるコンピュータシステムを例示する。
図3に示されるコンピュータシステム内には、図1に示されるCPUと、PCIeバスと、PCIeエンドポイントデバイスとを除いて、PCIe交換器150がさらに含まれる。PCIe交換器150の上流ポートはPCIeバス140を介してCPU110に接続し、下流ポートはそれぞれのPCIeエンドポイントデバイスに関するPCIeポートを提供し、それぞれのPCIeポートは、PCIeバス140を介してそれぞれのPCIeエンドポイントデバイスに接続する。PCIe交換器150は、経路データを対応するPCIeポートに向けて下流に流し、それぞれの独立PCIeポートからの経路データをCPU110に向けて上流に流すように構成される。図3に示された実施形態では、新たに追加されたアクセスプロキシ160がPCIe交換器150内に設定され、この実施形態では、DMAエンジンを使用することによって、アクセスプロキシ160が実施される。PCIeエンドポイントデバイス130は、PCIeバス140を介してPCIe交換器150に接続する。PCIe交換器150およびPCIeエンドポイントデバイス130は異なるデバイスに属するため、任意のPCIeエンドポイントデバイスの直接除去は、システムからPCIe交換器150を除去させず、すなわち、アクセスプロキシ160がPCIeエンドポイントデバイスの除去に伴って除去されないことが確実にされ、それによって、アクセスプロキシ160の独立性とPCIeエンドポイントデバイス130の独立性とを実現する。加えて、この実施形態において、DMAエンジンは独立したプロセッサを有するため、いずれかのPCIeエンドポイントデバイスが直接的に除去され、かつDMAからPCIeエンドポイントデバイスにアクセスすることすら影響を受ける場合、DMAはこの影響を分離する。PCIeエンドポイントデバイスに対するアクセスが成功したかどうかにかかわらず、DMAがCPU110によって送信されたアクセス要求の応答メッセージをCPU110に返すことが確実にされ、それによって、CPUによってMCEリセットが開始される問題を回避する。
ある例として、アプリケーションモジュールがSSD固体ディスク133に対するアクセス要求を生成することが依然として使用される。CPU110は固体ディスクSSDのドライブモジュール122-3によって生成された動作命令を獲得し、動作命令は、DMAを使用することによってSSD固体ディスク133にアクセスするようにCPU110に命令する。CPU110は、固体ディスクSSDのドライブモジュール122-3の動作命令に従ってデータ移動要求をDMAに送信し、データ移動要求は、PCIeエンドポイントデバイスのメモリ内の特定データをコンピュータシステムのメモリ内に移動するように、またはコンピュータシステムのメモリ内の特定データをPCIeエンドポイントデバイスのメモリ内に移動するようにDMAエンジンに命令する。CPU110のデータ移動要求を受信した後で、DMAは、データ移動要求の応答メッセージをCPU110に返して、SSD固体ディスク133上でデータ移動を実行し、データ移動が完了した後で、アクセスの結果を獲得するようにCPU110に命令するために、アクセス完了の通知メッセージをCPU110に返す。
さらに、本発明のこの実施形態において、DMAはPCIe交換器150内に組み込まれているため、PCIe交換器150をCPU110に接続しているプリント回路基板PCB上にはんだ付けすることがさらに可能であるか、またはPCIe交換器150とCPU110とを接続するためのインターフェースは、コネクタを使用することによって固定される。これはPCIe交換器150内に組み込まれたDMAがシステムから除去されないことを確実にし、したがって、DMAがアクセス要求の応答メッセージをCPUに返すことが常に可能であることを確実にする。
図4は、本発明の別の実施形態による、あるコンピュータシステムを例示する。
図4に示される実施形態は、アクセスプロキシ160がCPU110内に新たに追加されており、DMAエンジンを使用することによってアクセスプロキシ160を実施することができるという点で図3に示される実施形態とは異なる。アクセスプロキシ160はCPU110内に設定され、すなわち、アクセスプロキシ160がPCIeエンドポイントデバイスの除去に伴って除去されないことが確実にされ、それによって、アクセスプロキシ160の独立性とPCIeエンドポイントデバイス130の独立性とを実現する。加えて、この実施形態において、DMAエンジンは独自のプロセッサを有するため、いずれかのPCIeエンドポイントデバイスが直接的に除去され、DMAからPCIeエンドポイントデバイスにアクセスすることすら影響を受ける場合、CPU110が影響を受けないように、DMAはその影響を分離する。PCIeエンドポイントデバイスに対するアクセスが成功したかどうかにかかわらず、DMAがCPU110によって送信されたアクセス要求の応答メッセージをCPU110に返すことが確実にされ、それによって、CPUによってMCEリセットが開始される問題を回避する。この実施形態における詳細なアクセス方法は、図1および図3に示される実施形態で説明されたアクセス方法と一致し、したがって、本明細書でさらなる詳細は提供されない。
本発明の実施形態において、PCIeエンドポイントデバイスにアクセスするための方法は、図1、図3、または図4に示されるコンピュータシステムで実施されうる。しかし、図1、図3、または図4で示されているのは、本発明の実施形態に適用される単なる例であり、本発明のアプリケーションに関する特定の限定ではない。他のシステム実施形態またはアプリケーションシナリオは本出願書において記述されない。加えて、図1、図3、または図4に示されるシステム内のアクセスプロキシの設定は単なる例である。当業者は、本発明の実施形態において新たに追加されたアクセスプロキシをシステム内の別の位置にさらに設定すること、または本発明の実施形態の技術原理に従って、実装のための別の技術手段を使用することができる。
図1、図3、または図4に示されたCPU110も単なる例である。例えば、CPU110は、さらに特定用途向け集積回路であってよい。形式は何であれ、CPU110はコンピュータシステム内でプロセッサ機能を実施する。本発明の実施形態において、コンピュータシステムは、計算サーバであってよく、またはスイッチなど、経路を管理するサーバであってもよい。コンピュータシステムの詳細な実装形態は本発明のこの実施形態に限定されない。
PCIeエンドポイントデバイスにアクセスするためのプロセス
以下は、本発明のある実施形態による、PCIeエンドポイントデバイスにアクセスするためのあるプロセスを説明し、このプロセスは、コンピュータシステム内に新たに追加されたアクセスプロキシによって実施される。図5に示されるように、本発明のこの実施形態において、PCIeエンドポイントデバイスにアクセスするためのあるプロセスは以下を含む。
S501:CPUは動作命令を獲得し、動作命令は、コンピュータシステム内でアクセスプロキシを使用することによってPCIeエンドポイントデバイスにアクセスするようにCPUに命令する。
詳細には、動作命令は、PCIeエンドポイントデバイスのドライブモジュールによって生成可能である。PCIeエンドポイントデバイスのドライブモジュールは、アクセスプロキシとして、PCIeエンドポイントデバイスにアクセスするためのインターフェースをプリセットしているため、上層アプリケーションモジュールがPCIeエンドポイントデバイスに対するアクセス要求を生成するとき、PCIeエンドポイントデバイスのドライブモジュールは、PCIeエンドポイントデバイスにアクセスするための動作命令を生成し、動作命令は、コンピュータシステム内でアクセスプロキシを使用することによって、アクセスされるべきPCIeエンドポイントデバイスにアクセスするようにCPUに命令する。あるいは、動作命令は、コンピュータシステム内でHOSによっても生成されうる。HOSは、アクセスプロキシとして、PCIeエンドポイントデバイスにアクセスするためのインターフェースをプリセットしている。上層アプリケーションモジュールがPCIeエンドポイントデバイスに対するアクセス要求を生成するとき、PCIeエンドポイントデバイスのドライブモジュールはHOSを起動させて、HOSはプリセットされたアクセスインターフェースに従って動作命令を生成し、動作命令は、コンピュータシステム内でアクセスプロキシを使用することによって、アクセスされるべきPCIeエンドポイントデバイスにアクセスするようにCPUに命令する。
S502:CPUは、動作命令に従って、PCIeエンドポイントデバイスにアクセスするようにアクセスプロキシに命令するアクセス要求をアクセスプロキシに送信する。
S503:アクセスプロキシは、CPUによって送信されたアクセス要求を受信した後で、アクセス要求の応答メッセージをCPUに返す。
アクセス要求の応答メッセージは、確認応答、拒絶応答、または失敗応答であってよい。しかし、何の種類の応答メッセージであれ、このメッセージは、CPUによって送信されたアクセス要求が受信されていることをCPUに知らせる。CPUは、応答メッセージを受信した後で、現在のタスクが完了していると判断し、そのタスクに関して開始されたタイマを停止することができる。このようにして、CPUのタスクタイムアウト停止機構は正常に保たれる。
このプロセスでは、CPUは、アクセスされるべきPCIeエンドポイントデバイスに直接的にアクセスせず、アクセスプロキシを使用することによってアクセスを完了する。アクセスプロキシは、PCIeエンドポイントデバイスの異常なオフラインによってもたらされる影響を分離することが可能であり、アクセスプロキシはアクセス要求の応答メッセージをCPUに返し、その結果、CPU上にキャッシュされたタスクがタイムアウトにより蓄積せず、それによって、CPUに関するMCEリセットを回避する。
さらに、図6に示されるように、本発明の別のプロセス実施形態では、アクセスプロキシがPCIeエンドポイントデバイスにアクセスするためのプロセスは以下を含む。
S601〜S603:これらのステップはステップS501〜S503と同じであり、したがって、本明細書でさらなる詳細は提供されない。
S604:アクセスプロキシは、CPUからのアクセス要求に従って、PCIeエンドポイントデバイスに対するアクセス動作を開始する。
S605:アクセスプロキシは、PCIeエンドポイントデバイスに対して開始されたアクセス動作が成功裏に実行されたかどうかを判断し、アクセス動作が成功した場合、ステップ606を実行し、アクセス動作が失敗した場合、ステップ608を実行する。
S606:アクセスプロキシはアクセス完了の第1の通知メッセージをCPUに送信する。
S607:CPUは、第1の通知メッセージを受信した後で、アクセスの結果を獲得する。
CPUは、アクセス結果に従って、アクセスの完了を上層モジュールにさらに通知することができる。
S608:アクセスプロキシはアクセス失敗の第2の通知メッセージをCPUに送信する。
S609:CPUは、第2の通知メッセージを受信した後で、アクセス失敗に関する後続処理を実行する。
詳細には、アクセス失敗に関する後続処理は、以下、すなわち、アクセスプロキシがPCIeエンドポイントデバイスにアクセスするのに失敗した理由を判断するステップと、アクセス失敗の理由がアクセスされるべきPCIeエンドポイントデバイスが異常にオフラインであるためである場合、CPUによって、PCIeエンドポイントデバイスに対するアクセスを停止するステップと、アクセス失敗の理由が、アクセスプロキシが失敗したことである場合、CPUによって、アクセスプロキシをリセットするか、またはアクセスプロキシの失敗を是正するために、アクセスプロキシが失敗したことを示す通知を送信するステップとを含む。
PCIeエンドポイントデバイスに対するアクセスを停止した後で、CPUは、PCIeエンドポイントデバイスに対するアクセスを停止することを上層モジュールにさらに通知することができる。
このプロセスは、本発明のこの実施形態において、PCIeエンドポイントデバイスにアクセスするためのある方法を説明する。この方法では、アクセスプロキシは、CPUの代わりに、PCIeエンドポイントデバイスにアクセスして、アクセス要求の応答メッセージをCPUに返し、それによって、CPUによって引き起こされるMCEエラーによって生じるシステム全体のリセットを回避する。さらに、アクセスプロキシがPCIeエンドポイントデバイスにアクセスするのに失敗したとき、アクセスプロキシはアクセス失敗のメッセージをCPUに通知する。CPUは、障害診断を実行し、アクセス失敗がアクセスされるべきPCIeエンドポイントデバイスの異常なオフラインによって生じたと判断したとき、アクセスされるべきPCIeエンドポイントデバイスに対するアクセスを停止し、それによって、システムが成功しえない、繰り返されるアクセスを実行し続けるときに引き起こされるリソースの浪費を回避する。
図3または図4に示されるコンピュータシステムの実施形態の組合せにおいて、DMAエンジンを使用することによってアクセスプロキシが実施されるとき、上層アプリケーションモジュールは、SSDに関する読取り動作要求を生成し、以下を含めて、特定のアクセスプロセスは図7に示される。
S701:コンピュータシステム内でCPUは動作命令を取得し、動作命令はアクセスインターフェースとアクセスコンテンツとを搬送し、アクセスインターフェースはDMAエンジンを指摘し、アクセスコンテンツはアクセスオブジェクトがSSDであり、そのアクセスが読取り動作であることを示し、かつ読取り動作の発信源アドレスを示し、アクセスコンテンツは読取り動作の長さをさらに示すことが可能であるが、一般に、読取り動作の長さはシステム内のデフォルト長さを条件としうる。
上流エンドポイントがSSDデバイスに関する読取り動作要求を生成するとき、SSDデバイスのドライブモジュールは上流エンドポイントによる起動命令を受信して、プリセットされたアクセスインターフェースに従って、PCIeエンドポイントデバイスにアクセスするための動作命令を生成する。
ドライブモジュールによってCPUに送信される動作命令の詳細な実装方法は、さらに別の様式であってよい。例えば、動作命令は、アクセスオブジェクトがSSDであり、そのアクセスが読取り動作であることを示し、かつ読取り動作の開始アドレスを示す表示を搬送し、加えて、DMAエンジンを動作させることによってSSDに対するアクセスが実施されるように命令するための1つの表示が動作命令内に新たに追加される。
S702:CPUは、動作命令に従ってデータ移動要求をDMAエンジンに送信し、データ移動要求はPCIeエンドポイントデバイスのメモリ内の特定データをコンピュータシステムのメモリに移動するようにDMAエンジンに命令するために使用される。
詳細には、SSDのドライブモジュールの動作命令を獲得した後で、CPUは、読取り動作の宛先アドレスに関してコンピュータシステムのメモリを適用し、読取り動作の宛先アドレスを獲得した後で、データ移動要求をDMAエンジンに送信し、読取り動作の長さのデータを読取り動作の発信源アドレスから読取り動作の宛先アドレスに移動するようにDMAエンジンに命令するために、データ移動要求は、読取り動作の発信源アドレス、宛先アドレス、および長さを示す。
S703:DMAエンジンは、CPUのデータ移動要求を受信した後で、データ移動要求の応答メッセージをCPUに返し、CPUは、CPU内にキャッシュされた他のメッセージが、累積により、CPUにMCEリセットを生成させないことを確実にするために、データ移動要求の応答メッセージを受信した後で、データ移動要求に頼るタイムアウトを行わない。
S704:DMAエンジンはSSDデバイスに対して読取り要求を開始し、読取り要求は読取り動作の発信源アドレスを搬送し、読取り動作は、読取り動作の発信源アドレスに対応するレジスタの値がDMAエンジンのキャッシュ内に読み取られることを要求するために使用される。
S705:DMAエンジンは、読取り要求が成功裏に実行されたかどうかを判断し、読取り要求が成功裏に実行された場合、ステップ706を実行し、読取り要求の実行が失敗した場合、ステップ709を実行する。
S706:DMAエンジンは、書込み要求に従って、その独自のキャッシュ内のデータを読取り動作の宛先アドレス内に書き込む。
S707:DMAエンジンは第1の通知メッセージをCPUに送信し、第1の通知メッセージは、詳細には、アクセスが完了したことをCPUに通知するための第1のMSI割込み(Message Signaled Interrupts、MSI)であってよい。
S708:CPUは、第1のMSI割込みメッセージを受信した後で、読取り動作の宛先アドレスからデータを読み取り、アクセスが完了したことをSSDデバイスのドライブモジュールに通知することができる。
S709:DMAエンジンは第2の通知メッセージをCPUに送信し、第2の通知メッセージは、詳細には、アクセスが失敗したことをCPUに通知するための第2のMSI割込みであってよい。
S710:CPUは、第2のMSI割込みメッセージを受信した後で、アクセス失敗に関する後続処理を実行する。
詳細には、アクセス失敗の後続処理は、以下、すなわち、DMAエンジンに関する診断を開始して、DMAエンジンに障害があるかどうかを判断するステップと、
DMAエンジンに障害がある場合、DMAエンジンの障害を回復するために、CPUによってDMAエンジンをリセットするか、またはDMAエンジンに障害があることを示す通知を送信するステップと、
DMAエンジンに障害がない場合、アクセス失敗の原因が、SSDデバイスが異常にオフラインであるためであると判断し、CPUによって、SSDデバイスに対するアクセスを停止するステップとを含むことが可能である。
さらに、CPUは、SSDデバイスに対するアクセスを停止するようにSSDデバイスのドライブモジュールにさらに命令することができる。
別の態様では、図3または図4に示されるコンピュータシステムの実施形態に関して、DMAエンジンを使用することによってアクセスプロキシが実施され、上層アプリケーションモジュールがSSDに関する書込み動作要求を生成するときの、以下を含む特定のアクセスプロセスが図8に示される。
S801:CPUはSSDのドライブモジュールによって生成された動作命令を獲得し、動作命令はアクセスインターフェースとアクセスコンテンツとを搬送し、アクセスインターフェースはDMAエンジンを指摘し、アクセスコンテンツは、アクセスオブジェクトがSSDデバイスであり、そのアクセスが書込み動作であることを示し、かつ書込み動作の発信源アドレスおよび宛先アドレスを示す。
ドライブモジュールによってCPUに送信された動作命令の詳細な実装方法はさらに、別の様式であってよい。例えば、動作命令は、アクセスオブジェクトがSSDであり、そのアクセスが書込み動作であることを示し、かつ書込み動作の発信源アドレスおよび宛先アドレスを示す表示を搬送し、加えて、SSDに対するアクセスがDMAエンジンを動作させることによって実施されるように命令するための1つの表示が動作命令内に新たに追加される。
S802:CPUはSSDのドライブモジュールの動作命令に従ってデータ移動要求をDMAエンジンに送信し、データ移動要求は、コンピュータシステムのメモリ内の特定データをPCIeエンドポイントデバイスのメモリに移動させるようにDMAエンジンに命令するために使用される。
詳細には、CPUは、SSDのドライブモジュールの動作命令を獲得した後で、データ移動要求をDMAエンジンに送信し、データ移動要求は、書込み動作の長さのデータを書込み動作の発信源アドレスから書込み動作の宛先アドレスに移動するようにDMAエンジンに命令するために、書込み動作の発信源アドレス、宛先アドレス、および長さを示す。
S803:DMAエンジンは、CPUのデータ移動要求を受信した後で、データ移動要求の応答メッセージをCPUに返す。
S804:DMAエンジンは、発信源アドレスのデータをDMAエンジンのキャッシュ内に読み取るために、書込み動作の発信源アドレスに対して読取り要求を開始する。
S805:DMAエンジンは、発信源アドレスのデータがその独自のキャッシュ内に読み取られた後で、SSDデバイスに対する書込み要求を開始し、書込み要求は、書込み動作の宛先アドレスを搬送し、書込み要求は、DMAエンジンのキャッシュ内のデータを宛先アドレスに対応するレジスタ内に書き込むために使用される。
S806:DMAエンジンは、書込み要求が成功裏に実行されたかどうかを判断し、書込み要求が成功裏に実行された場合、ステップ807を実行し、書込み要求の実行が失敗した場合、ステップ809を実行する。
S807:DMAエンジンは、アクセスが完了したことをCPUに通知するために、CPUに対して第1のMSI割込み(Message Signaled Interrupts、MSI)を開始する。
S808:CPUは、第1のMSI割込みメッセージを受信した後で、書込み動作が完了したことを学習し、アクセスが完了したことをSSDデバイスのドライブモジュールにさらに通知することができる。
S809:DMAエンジンは、アクセスが失敗したことをCPUに通知するために、CPUに対して第2のMSI割込みを開始する。
S810:CPUは、第2のMSI割込みメッセージを受信した後で、アクセス失敗に関する後続処理を実行する。
詳細には、アクセス失敗の後続処理は、以下、すなわち、DMAエンジンに障害があるかどうかを判断するためにDMAエンジンに関する診断を開始するステップと、
DMAエンジンに障害がある場合、DMAエンジンの障害を回復するために、CPUによって、DMAエンジンをリセットするか、またはDMAエンジンに障害があることを示す通知を送信するステップと、
DMAエンジンに障害がない場合、アクセス失敗の原因が、SSDデバイスが異常にオフラインであるためであると判断し、CPUによって、SSDデバイスに対するアクセスを停止するステップを含むことが可能である。
さらに、CPUは、SSDデバイスに対するアクセスを停止するようにSSDデバイスのドライブモジュールにさらに命令することが可能である。
図7および図8に示されるプロセスは、本発明の実施形態において、DMAエンジンがSSDデバイス上で読取りまたは書込みを完了するための方法プロセスを説明する。読取り方法または書込み方法において、DMAエンジンは、CPUの代わりに、PCIeエンドポイントデバイスにアクセスして、アクセス要求の応答メッセージをCPUに返し、その結果、CPUはMCEエラーを生成せず、システム全体のリセットが回避される。さらに、DMAエンジンがデータをSSDデバイスから移動するのに失敗したとき、DMAエンジンは、アクセス失敗のメッセージをCPUに通知し、CPUは障害診断を実行し、SSDデバイスがシステムから直接的に除去されるため、またはSSDデバイスに障害があるためにアクセス失敗が生じたと判断するとき、SSDデバイスに対するアクセスを停止し、それによって、システムが成功しえない、繰り返されるアクセスを実行し続けるときに引き起こされるリソースの浪費を回避する。
加えて、本発明のこの実施形態において、CPUがPCIeエンドポイントデバイスにアクセスするためのある方法は、PCIeエンドポイントデバイスに対応するドライブモジュールもしくはホストオペレーティングシステムをアップグレードまたは改善することによって変更可能である。CPUがPCIeエンドポイントデバイスにアクセスするための方法を変更するためにPCIeエンドポイントデバイスに対応するドライブモジュールが使用される場合、以下のプロセスを含めることが可能である。
S901:PCIeエンドポイントデバイスのドライブモジュールは上層アプリケーションモジュールの起動命令を受信し、起動命令は、PCIeエンドポイントデバイスにアクセスする必要があることを示す。
S902:PCIeエンドポイントデバイスに対応するドライブモジュールは、アクセスプロキシを指摘する、PCIeエンドポイントデバイスにアクセスするためにプリセットされたインターフェースに従って動作命令を生成し、動作命令は、アクセスプロキシを使用することによってPCIeエンドポイントデバイスにアクセスするようにCPUに命令するために使用される。
ホストオペレーティングシステムが、CPUがPCIeエンドポイントデバイスにアクセスするための方法を変更するように構成される場合、以下のプロセスを含めることが可能である。
S1001:PCIeエンドポイントデバイスに対応するドライブモジュールは、上層アプリケーションモジュールの起動命令を受信し、起動命令はPCIeエンドポイントデバイスにアクセスする必要があることを示す。
S1002:PCIeエンドポイントデバイスに対応するドライブモジュールはホストオペレーティングシステムを起動させ、起動命令はPCIeエンドポイントデバイスにアクセスする必要があることを示す。
S1003:ホストオペレーティングシステムは、アクセスプロキシを指摘する、PCIeエンドポイントデバイスにアクセスするためにプリセットされたインターフェースに従って動作命令を生成し、動作命令は、アクセスプロキシを使用することによってPCIeエンドポイントデバイスにアクセスするようにCPUに命令するために使用される。
本発明のある実施形態のある装置
図11に示されるように、本発明のある実施形態で提供される、ペリフェラル・コンポーネント・インターコネクト・エクスプレスPCIeエンドポイントデバイスにアクセスするための装置は、
PCIeエンドポイントデバイスにアクセスする必要があることを示す起動命令を受信するように構成された受信モジュール1101と、
アクセスプロキシを指摘する、PCIeエンドポイントデバイスにアクセスするためにプリセットされたインターフェースに従って、PCIeエンドポイントデバイスにアクセスするための動作命令を生成するように構成された生成モジュール1102であって、動作命令が、アクセスプロキシを使用することによってPCIeエンドポイントデバイスにアクセスするようにCPUに命令するために使用される、生成モジュール1102と
を含む。
詳細には、アクセス装置は、PCIeエンドポイントデバイスのドライブモジュールまたはコンピュータシステムのホストオペレーティングシステムであってよい。
図12は、本発明のある実施形態による、あるコンピュータの構成組成図である。本発明のこの実施形態のこのコンピュータは、
プロセッサ1201と、メモリ1202と、システムバス1204と、通信インターフェース1205とを含むことが可能である。CPU1201、メモリ1202、および通信インターフェース1205は、システムバス1204を使用することによって、互いの間の通信を接続および完了する。
プロセッサ1201は、シングルコア中央処理装置もしくはマルチコア中央処理装置、または特定用途向け集積回路であってよく、あるいは本発明のこの実施形態において、1つまたは複数の集積回路として構成される。
メモリ1202は、高速RAMメモリであってよく、または少なくとも1つの磁気ディスクメモリなど、不揮発性メモリ(non-volatile memory)であってよい。
メモリ1202は、コンピュータ実行命令1203を記憶するように構成される。詳細には、コンピュータ実行命令1203はプログラムコードを含むことが可能である。
コンピュータが実行しているとき、プロセッサ1201はコンピュータ実行命令1203を実行し、図5から図10のうちのいずれか1つに示された方法プロセスを実行することが可能である。
PCIeエンドポイントデバイスにアクセスするためのコンピュータシステム
PCIeエンドポイントデバイスがコンピュータシステムから除去されるとき、PCIeエンドポイントデバイスを後でコンピュータシステムに再度挿入することができる。加えて、新しいPCIeエンドポイントデバイスが実行状態のコンピュータシステムに接続する必要があるという条件も存在する。例えば、SSDデバイスの人気として、ユーザがSSDデバイスを直接的に挿入または除去するという現象がますます頻繁に生じている。先行技術では、いずれかのPCIeエンドポイントデバイスの電源がオンにされて、システムに接続されるとき、CPUはPCIeエンドポイントデバイスに関して走査およびリソース割振りプロセスを開始し、CPUが電源が新たにオンにされたPCIeエンドポイントデバイスを走査するプロセスにおいて、PCIeエンドポイントデバイスがシステムから直接的に除去された場合、CPUはMCEエラーを報告することが可能であり、これはシステムリセットを引き起こす。この問題を回避するために、本発明のこの実施形態は、PCIeエンドポイントデバイスの電源が新たにオンにされて、システムに接続したとき、CPUが、電源が新たにオンにされたそのPCIeエンドポイントデバイスを走査する必要またはリソースを割り振る必要がないように、PCIeエンドポイントデバイスにリソースを割り振るための新しい解決策を提案する。
コンピュータシステムを開始する間、基本入出力システム(Basic Input-Output System、BIOS)はシステム内のそれぞれのデバイスに関するリソースを確保する必要がある。PCIeエンドポイントデバイスの場合、BIOSはPCIeエンドポイントデバイスにアクセスするためのそれぞれのポートを走査する。走査によってPCIeエンドポイントデバイスを見出したとき、BIOSは、PCIeエンドポイントデバイスの対応するレジスタを読み取り、PCIeエンドポイントデバイスの要件に従って、それに応じて、リソースを確保し、例えば、バスリソースとメモリアドレスリソースとを確保する。詳細には、本発明のこの実施形態で説明される、PCIeエンドポイントデバイスにアクセスするためのポートは、PCIe交換器のダウンリンクポートまたはシステム内のノースブリッジのダウンリンクポートであってよい。
本発明のこの実施形態で提供される、PCIeエンドポイントデバイスにリソースを割り振るための解決策では、コンピュータシステムのBIOSに関するリソース確保方法は先行技術と異なる。コンピュータシステムを開始する間、BIOSは、走査によって実際に見出されたPCIeエンドポイントデバイスの実際の要求に従ってリソースを確保せず、PCIeエンドポイントデバイスにアクセスするためのそれぞれのポートに関して特定割合のリソースを確保し、特定割合はPCIeエンドポイントデバイスの必要とされるリソース量以上であり、優先的に、特定割合は最大リソース要求量を有するタイプのPCIeエンドポイントデバイスのリソース要求量でありうる。例えば、BIOSは、コンピュータシステム内でPCIeエンドポイントデバイスにアクセスするためのそれぞれのポートを走査し、走査によってPCIeエンドポイントデバイスが見出されたかどうかにかかわらず、かつ走査によってどのタイプのPCIeエンドポイントデバイスが見出されたかにかかわらず、PCIeエンドポイントデバイスにアクセスするためのそれぞれのポートが、最大リソース要求量を有するタイプのPCIeエンドポイントデバイスによって後でアクセスされうることを指定する。現在のシステム内で10のタイプのPCIeエンドポイントデバイスを使用することが可能であり、最大リソース要求量を有するPCIeエンドポイントデバイスが、事前にフェッチできない10Mのメモリリソースと3個のPCIeバスとを必要とするSSDデバイスである場合、BIOSは、PCIeエンドポイントデバイスにアクセスするためのそれぞれのポートに関して、事前にフェッチできない10Mのリソースと3個のPCIeバスリソースとを確保する。
次に、BIOSがリソースを確保した後で、コンピュータシステムのPCIe管理モジュールは、コンピュータシステム内の1つのCPUとPCIe交換器とによって管理されたすべてのPCIeエンドポイントデバイスは、PCIeフィールドを構成するのを可能にし、かつPCIeフィールドに関して対応するPCIeツリーを構成し、PCIeツリーは、PCIeフィールド内のそれぞれのPCIeエンドポイントデバイスからCPUまでのそれぞれの層の接続関係と、それぞれのPCIeエンドポイントデバイスのリソース構成条件とを記述するために使用される。BIOSはPCIeエンドポイントデバイスにアクセスするためのそれぞれのポートに関して特定割合のリソースを確保しているため、PCIeエンドポイントデバイスにアクセスするためのそれぞれのポートをロードするとき、PCIe管理モジュールは、ポートのPCIeエンドポイントデバイスの実際のリソース要求量を走査せず、BIOSのリソース確保条件に従ってリソースを割り振り、すなわち、BIOSによって確保された特定割合のリソースをPCIeエンドポイントデバイスにアクセスするためのそれぞれのポートを割り振り、特定割合のリソースを割り振る条件をPCIeツリー内に記録する。
さらに、PCIeエンドポイントデバイスに障害があるか、またはPCIeエンドポイントデバイスがコンピュータシステムからオフラインであるとき、PCIe管理モジュールは、PCIeエンドポイントデバイスがオフラインであると判断するとき、電源がオフにされたPCIeエンドポイントデバイスに割り振られた特定割合のリソースを解放しない。加えて、PCIeツリーのアーキテクチャは変更されない状態に留まり、すなわち、オフラインPCIeエンドポイントデバイスの接続関係およびリソース構成条件はPCIeツリー内に保持される。このように、PCIeエンドポイントデバイスのリソースと接続関係とがPCIeフィールド内で構成されているため、PCIeエンドポイントデバイスの電源がオンにされて、PCIeフィールドにアクセスするとき、PCIe管理モジュールは、PCIeエンドポイントデバイスの電源がオンにされ、PCIeエンドポイントデバイスがコンピュータシステムのPCIeフィールドに対するアクセスを完了したことを対応するドライブモジュールに通知する。この解決策では、PCIeエンドポイントデバイスの電源がオンにされるとき、CPUは、PCIeエンドポイントデバイスを走査する必要がなく、それによって、PCIeエンドポイントデバイスがコンピュータシステムにアクセスするときに生じる可能性があるMCEエラーによってシステム全体のリセットが引き起こされるのを回避する。
本発明のそれぞれの態様またはそれぞれの態様の可能な実装様式は、詳細には、システム、方法、またはコンピュータプログラム製品として実施されうる点を当業者は理解されよう。したがって、本発明のそれぞれの態様またはそれぞれの態様の可能な実装様式は、本明細書で集合的に「回路」、「モジュール」、または「システム」と呼ばれる、完全なハードウェア実施形態、(ファームウェア、常駐ソフトウェアなどを含めて)完全なソフトウェア実施形態、またはソフトウェアとハードウェアとを組み合わせた実施形態の形式を使用することが可能である。加えて、本発明のそれぞれの態様またはそれぞれの態様の可能な実装様式は、コンピュータプログラム製品の形式を使用することが可能であり、コンピュータプログラム製品は、コンピュータ可読媒体内のコンピュータ可読プログラムコードを指す。
コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読メモリ媒体であってよい。コンピュータ可読メモリ媒体は、電子、磁気、光、電磁、赤外線、もしくは半導体のシステム、デバイス、または装置、あるいはランダムアクセスメモリ(RAM)、読出し専用メモリ、取消可能プログラマブル読出し専用メモリ(EPROMまたはフラッシュメモリ)、光ファイバ、および携帯用読出し専用メモリ(CD-ROM)など、それらの任意の適切な組合せを含むが、これらに限定されない。
コンピュータのプロセッサは、プロセッサが流れ図のそれぞれのステップまたはそれぞれのステップの組合せに規定された機能動作を実行することができ、ブロック図内のそれぞれのブロックまたはブロックの組合せに規定された機能動作を実施する装置が生成されるように、コンピュータ可読媒体内に記憶されたコンピュータ可読プログラムコードを読み取る。
コンピュータ可読プログラムコードを、ユーザのコンピュータ上で完全に実行すること、ユーザのコンピュータ上で部分的に実行すること、独立したソフトウェアパッケージとして機能するとき、ユーザのコンピュータ上で部分的に実行し、かつ遠隔コンピュータ上で部分的に実行することが可能であり、または遠隔コンピュータ上もしくはサーバ上で完全に実行することも可能である。いくつかの代替の実装形態解決策では、流れ図のそれぞれのステップ内またはブロック図のそれぞれのブロック内に示された機能は、その流れ図または図に示された順序で生じなくてよい点に留意されたい。例えば、関連する機能に応じて、示される2つのステップもしくは2つのブロックを実際には同時に次々に実行することが可能であり、またはこれらのブロックは、時には逆の順序で実行される。
本明細書で開示された実施形態で説明された例と組み合わせて、ユニットおよびアルゴリズムステップを電子ハードウェア、またはコンピュータソフトウェアと電子ハードウェアの組合せによって実施できることを当業者は認識されよう。これらの機能がハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、特定のアプリケーションおよび技術的解決策の設計制約条件に依存する。当業者はそれぞれの特定のアプリケーションに関して説明された機能を実施するために異なる方法を使用することができるが、その実装形態は本発明の範囲を超えるものと見なすべきではない。
前述の説明は、本発明の特定の実施形態に過ぎず、本発明の保護範囲を限定することが意図されない。本発明で開示された技術範囲内で当業者によって容易に考え出されるいずれの改変または置換も本発明の保護範囲に包含されるべきである。したがって、本発明の保護範囲は、請求項の保護範囲を条件とすべきである。
110 CPU
120 メモリ
121 アプリケーションモジュール
122 ドライブモジュール
122-1 グラフィックス処理ユニットのドライブモジュール
122-2 ネットワークインターフェースカードNICのドライブモジュール
122-3 固体ディスクSSDのドライブモジュール
122-4 ビデオ加速構成要素のドライブモジュール
123 ホストオペレーティングシステム(HOS)
130 PCIeエンドポイントデバイス
131 グラフィックス処理ユニット
132 ネットワークインターフェースカード
133 固体ディスク(SSD)
134 ビデオ加速構成要素
140 PCIeバス
150 PCIe交換器
160 アクセスプロキシ
1101 受信モジュール
1102 生成モジュール
1201 プロセッサ
1202 メモリ
1203 コンピュータ実行命令
1204 システムバス
1205 通信インターフェース

Claims (24)

  1. プロセッサと、
    PCIeエンドポイントデバイスに接続するためのペリフェラル・コンポーネント・インターコネクト・エクスプレスPCIeバスと
    を含むコンピュータシステムであって、
    前記コンピュータシステムがアクセスプロキシをさらに含み、前記アクセスプロキシが前記プロセッサと前記PCIeエンドポイントデバイスとに接続し、
    前記プロセッサが、前記アクセスプロキシによって前記PCIeエンドポイントデバイスにアクセスするように前記プロセッサに命令する動作命令を獲得し、前記PCIeエンドポイントデバイスにアクセスするように前記アクセスプロキシに命令するアクセス要求を前記動作命令に従って前記アクセスプロキシに送信するように構成され、
    前記PCIeエンドポイントデバイスへのアクセスが成功であるか否かにかかわらず、前記アクセスプロキシが、前記プロセッサによって送信された前記アクセス要求を受信した後で、前記アクセス要求の応答メッセージを前記プロセッサに送信するように構成され、
    前記プロセッサは、更に、前記応答メッセージを受信した後で、前記アクセス要求に対応するタスクが完了していると判断して、前記タスクに関して開始されたタイマを停止するように構成された、コンピュータシステム。
  2. 前記コンピュータシステムが、
    前記アクセスプロキシを指摘する、前記PCIeエンドポイントデバイスにアクセスするためにプリセットされたインターフェースに従って前記動作命令を生成するように構成された、前記PCIeエンドポイントデバイスのドライブモジュールをさらに含み、
    前記プロセッサが、前記PCIeエンドポイントデバイスの前記ドライブモジュールによって生成された前記動作命令を獲得するように構成された、請求項1に記載のコンピュータシステム。
  3. 前記PCIeエンドポイントデバイスのドライブモジュールとホストオペレーティングシステムとをさらに含み、
    前記PCIeエンドポイントデバイスの前記ドライブモジュールが、前記PCIeエンドポイントデバイスにアクセスするために、前記ホストオペレーティングシステムを起動させるように構成され、
    前記ホストオペレーティングシステムが、前記PCIeエンドポイントデバイスの前記ドライブモジュールによって実行された起動に応答して、前記アクセスプロキシを指摘する、前記PCIeエンドポイントデバイスにアクセスするためにプリセットされたインターフェースに従って前記動作命令を生成するように構成され、
    前記プロセッサが、前記ホストオペレーティングシステムによって生成された前記動作命令を獲得するように構成された、請求項1に記載のコンピュータシステム。
  4. 前記アクセスプロキシがダイレクトメモリアクセスDMAエンジンによって実施され、
    前記プロセッサが、前記動作命令に従ってデータ移動要求を前記DMAエンジンに送信するように構成され、
    前記DMAエンジンが、前記データ移動要求に従って、前記PCIeエンドポイントデバイスのメモリ内の特定データを前記コンピュータシステムのメモリに移動するか、または前記コンピュータシステムの前記メモリ内の特定データを前記PCIeエンドポイントデバイスの前記メモリ内に移動するように構成される、請求項1から3のいずれか一項に記載のコンピュータシステム。
  5. 前記アクセスプロキシが、前記PCIeエンドポイントデバイスに対するアクセスが失敗したことを示す第2の通知メッセージを前記プロセッサに送信するようにさらに構成され、
    前記プロセッサが、前記第2の通知メッセージを受信した後で、前記アクセスプロキシが前記PCIeエンドポイントデバイスにアクセスするのに失敗した理由を判断し、前記アクセス失敗に関する前記理由が、前記PCIeエンドポイントデバイスが異常にオフラインであるためである場合、前記PCIeエンドポイントデバイスに対するアクセスを停止するようにさらに構成される、請求項1または4に記載のコンピュータシステム。
  6. PCIe管理モジュールをさらに含み、
    前記PCIe管理モジュールが、前記PCIeエンドポイントデバイスが異常にオフラインであることを示す通知を獲得して、前記PCIeエンドポイントデバイスに割り振られたリソースを確保するように構成された、請求項5に記載のコンピュータシステム。
  7. 前記アクセスプロキシが前記プロセッサと共にパッケージ化された、請求項1から6のいずれか一項に記載のコンピュータシステム。
  8. 前記アクセスプロキシが前記プロセッサに接続しているプリント回路基板上に溶接される、または、接続ファームウェアを使用することによって、前記プロセッサに接続する、請求項1から7のいずれか一項に記載のコンピュータシステム。
  9. 前記コンピュータシステムがPCIe交換器をさらに含み、前記PCIe交換器の上流ポートが前記PCIeバスを介して前記プロセッサに接続し、前記PCIe交換器の下流ポートが前記PCIeバスを介して前記PCIeエンドポイントデバイスに接続する、請求項1から8のいずれか1項に記載のコンピュータシステム。
  10. 前記アクセスプロキシが前記PCIe交換器内にパッケージ化された、請求項9に記載のコンピュータシステム。
  11. 前記PCIe交換器が前記プロセッサに接続しているプリント回路基板上に溶接されるか、または、接続ファームウェアを使用することによって、前記プロセッサに接続する、請求項10に記載のコンピュータシステム。
  12. ペリフェラル・コンポーネント・インターコネクト・エクスプレスPCIeエンドポイントデバイスにアクセスするための方法であって、コンピュータシステムのプロセッサがPCIeバスを介して前記PCIeエンドポイントデバイスに接続し、
    前記プロセッサによって、動作命令を獲得するステップであって、前記動作命令が、アクセスプロキシを使用することによって前記PCIeエンドポイントデバイスにアクセスするように前記プロセッサに命令する、獲得するステップと、
    前記プロセッサによって、前記動作命令に従ってアクセス要求を前記アクセスプロキシに送信するステップであって、前記アクセス要求が前記PCIeエンドポイントデバイスにアクセスするように前記アクセスプロキシに命令する、送信するステップと、
    前記PCIeエンドポイントデバイスへのアクセスが成功であるか否かにかかわらず、前記プロセッサによって、前記アクセスプロキシによって送信された前記アクセス要求の応答メッセージを受信するステップと、
    前記プロセッサによって、前記応答メッセージを受信した後で、前記アクセス要求に対応するタスクが完了していると判断して、前記タスクに関して開始されたタイマを停止するステップとを含む方法。
  13. 前記プロセッサによって、動作命令を獲得する前記ステップが、
    前記プロセッサによって、前記アクセスプロキシを指摘する、前記PCIeエンドポイントデバイスにアクセスするためにプリセットされたインターフェースに従って、前記PCIeエンドポイントデバイスのドライブモジュールによって生成された前記動作命令を獲得するステップと、
    前記プロセッサによって、前記アクセスプロキシを指摘する、前記PCIeエンドポイントデバイスにアクセスするためにプリセットされたインターフェースに従って、ホストオペレーティングシステムによって生成された前記動作命令を獲得するステップと
    を含む、請求項12に記載の方法。
  14. 前記アクセスプロキシがダイレクトメモリアクセスDMAエンジンによって実施され、前記動作命令が、前記DMAエンジンを使用することによって前記PCIeエンドポイントデバイスにアクセスするように前記プロセッサに特に命令し、
    前記プロセッサによって、前記動作命令に従ってアクセス要求を前記アクセスプロキシに送信する前記ステップが、
    前記プロセッサによって、前記動作命令に従ってデータ移動要求を前記DMAエンジンに送信するステップであって、前記データ移動要求が、前記PCIeエンジンのメモリ内の特定データを前記コンピュータシステムのメモリに移動するか、または前記コンピュータシステムの前記メモリ内の特定データを前記PCIeエンドポイントデバイスの前記メモリに移動するように前記DMAエンジンに命令する、送信するステップ
    を含む、請求項12に記載の方法。
  15. 前記動作命令が、アクセスタイプが読取り動作であることをさらに示し、かつ前記読取り動作の発信源アドレスと前記読取り動作の長さとを示し、
    前記プロセッサによって、前記動作命令に従ってデータ移動要求を前記DMAエンジンに送信する前記ステップが、
    前記プロセッサによって、前記コンピュータシステムの前記メモリによって割り振られた前記読取り動作の宛先アドレスを獲得するステップと、
    前記プロセッサによって、前記データ移動要求を前記DMAエンジンに送信するステップであって、前記データ移動要求が、前記読取り動作の前記長さのデータを前記読取り動作の前記発信源アドレスから前記読取り動作の前記宛先アドレスに移動するように前記DMAエンジンに命令するために、前記読取り動作の前記発信源アドレスと、前記読取り動作の前記宛先アドレスと、前記読取り動作の前記長さとを搬送する、送信するステップとを含む、請求項14に記載の方法。
  16. 前記プロセッサによって、前記アクセスプロキシによって送信された第2の通知メッセージを受信するステップであって、前記第2の通知メッセージが、前記アクセスプロキシが前記PCIeエンドポイントデバイスにアクセスするのに失敗したことを示す、受信するステップと、
    前記プロセッサによって、前記アクセスプロキシが前記PCIeエンドポイントデバイスにアクセスするのに失敗した理由を判断し、前記アクセス失敗の前記理由が、前記PCIeエンドポイントデバイスが異常にオフラインであるためである場合、前記プロセッサによって、前記PCIeエンドポイントデバイスに対するアクセスを停止するステップと
    をさらに含む、請求項12から15のいずれか一項に記載の方法。
  17. 前記PCIeエンドポイントデバイスが異常にオフラインであることを示す通知を獲得して、前記PCIeエンドポイントデバイスに割り振られたリソースを確保するステップ
    をさらに含む、請求項16に記載の方法。
  18. プロセッサと、メモリと、バスと、通信インターフェースとを含むコンピュータであって、
    前記メモリがコンピュータ実行命令を記憶するように構成され、前記プロセッサが前記バスを介して前記メモリに接続し、前記コンピュータが実行しているとき、前記コンピュータが、以下のアクセスステップ、すなわち、
    前記プロセッサによって、動作命令を獲得するステップであって、前記動作命令が、アクセスプロキシを使用することによって前記PCIeエンドポイントデバイスにアクセスするように前記プロセッサに命令する、獲得するステップと、
    前記プロセッサによって、前記動作命令に従ってアクセス要求を前記アクセスプロキシに送信するステップであって、前記アクセス要求が前記PCIeエンドポイントデバイスにアクセスするように前記アクセスプロキシに命令する、送信するステップと、
    前記PCIeエンドポイントデバイスへのアクセスが成功であるか否かにかかわらず、前記プロセッサによって、前記アクセスプロキシによって送信された前記アクセス要求の応答メッセージを受信するステップと、
    前記プロセッサによって、前記応答メッセージを受信した後で、前記アクセス要求に対応するタスクが完了していると判断して、前記タスクに関して開始されたタイマを停止するステップと
    を実行するように、前記プロセッサが、前記メモリ内に記憶された前記コンピュータ実行命令を実行するコンピュータ。
  19. コンピュータ実行命令を含むコンピュータ可読記録媒体であって、コンピュータのプロセッサが前記コンピュータ実行命令を実行するとき、コンピュータが請求項12から17のいずれか一項に記載のアクセス方法を実行するコンピュータ可読記録媒体。
  20. ペリフェラル・コンポーネント・インターコネクト・エクスプレスPCIeエンドポイントデバイスにアクセスするための方法であって、前記PCIeエンドポイントデバイスがPCIeバスを介してコンピュータシステムのプロセッサに接続し、
    起動命令を受信するステップであって、前記起動命令が前記PCIeエンドポイントデバイスにアクセスする必要があることを示す、受信するステップと、
    記PCIeエンドポイントデバイスにアクセスするためにプリセットされたインターフェースに従って動作命令を生成するステップであって、前記プリセットされたインターフェースは、アクセスプロキシを指し示し、前記動作命令が、前記アクセスプロキシを使用することによって前記PCIeエンドポイントデバイスにアクセスするように前記プロセッサに命令するために使用される、生成するステップとを含む方法。
  21. 起動命令を受信する前記ステップが、
    前記PCIeエンドポイントデバイスのドライブモジュールによって、前記起動命令を受信するステップを含み、
    それに応じて、前記PCIeエンドポイントデバイスにアクセスするためにプリセットされたインターフェースに従って動作命令を生成する前記ステップが、
    前記PCIeエンドポイントデバイスの前記ドライブモジュールによって、前記PCIeエンドポイントデバイスにアクセスするための前記プリセットインターフェースに従って、前記PCIeエンドポイントデバイスにアクセスするための前記動作命令を生成するステップを含む、請求項20に記載の方法。
  22. 起動命令を受信する前記ステップが、
    前記コンピュータシステムのホストオペレーティングシステムによって、前記PCIeエンドポイントデバイスのドライブモジュールの前記起動命令を受信するステップを含み、
    それに応じて、前記PCIeエンドポイントデバイスにアクセスするためにプリセットされたインターフェースに従って動作命令を生成する前記ステップが、
    前記ホストオペレーティングシステムによって、前記PCIeエンドポイントデバイスにアクセスするための前記プリセットインターフェースに従って、前記PCIeエンドポイントデバイスにアクセスするための前記動作命令を生成するステップを含む、請求項20に記載の方法。
  23. プロセッサと、メモリと、バスと、通信インターフェースとを含むコンピュータであって、
    前記メモリがコンピュータ実行命令を記憶するように構成され、前記プロセッサが前記バスを介して前記メモリに接続し、前記コンピュータが実行しているとき、前記コンピュータが、以下のステップ、すなわち、
    起動命令を受信するステップであって、前記起動命令がPCIeエンドポイントデバイスにアクセスする必要があることを示す、受信するステップと、
    記PCIeエンドポイントデバイスにアクセスするためにプリセットされたインターフェースに従って、前記PCIeエンドポイントデバイスにアクセスするための動作命令を生成するステップであって、前記プリセットされたインターフェースは、アクセスプロキシを指し示し、前記動作命令が、前記アクセスプロキシを使用することによって前記PCIeエンドポイントデバイスにアクセスするように前記プロセッサに命令するために使用される、生成するステップと
    を実行するように、前記プロセッサが、前記メモリ内に記憶された前記コンピュータ実行命令を実行するコンピュータ。
  24. コンピュータ実行命令を含むコンピュータ可読記録媒体であって、前記コンピュータのプロセッサが前記コンピュータ実行命令を実行するとき、コンピュータが以下のステップ、すなわち、
    起動命令を受信するステップであって、前記起動命令がPCIeエンドポイントデバイスにアクセスする必要があることを示す、受信するステップと、
    記PCIeエンドポイントデバイスにアクセスするためにプリセットされたインターフェースに従って、前記PCIeエンドポイントデバイスにアクセスするための動作命令を生成するステップであって、前記プリセットされたインターフェースは、アクセスプロキシを指し示し、前記動作命令が、前記アクセスプロキシを使用することによって前記PCIeエンドポイントデバイスにアクセスするように前記プロセッサに命令するために使用される、生成するステップと
    を行うコンピュータ可読記録媒体。
JP2015514331A 2013-05-02 2013-05-02 ペリフェラル・コンポーネント・インターコネクト・エクスプレス・エンドポイントデバイスにアクセスするためのコンピュータシステム、方法、および装置 Active JP5953573B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/075088 WO2014176775A1 (zh) 2013-05-02 2013-05-02 一种计算机系统、高速外围组件互联端点设备的访问方法、和装置

Publications (2)

Publication Number Publication Date
JP2015519665A JP2015519665A (ja) 2015-07-09
JP5953573B2 true JP5953573B2 (ja) 2016-07-20

Family

ID=51135815

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015514331A Active JP5953573B2 (ja) 2013-05-02 2013-05-02 ペリフェラル・コンポーネント・インターコネクト・エクスプレス・エンドポイントデバイスにアクセスするためのコンピュータシステム、方法、および装置

Country Status (10)

Country Link
US (3) US8782317B1 (ja)
EP (3) EP2811413B1 (ja)
JP (1) JP5953573B2 (ja)
KR (1) KR101539878B1 (ja)
AU (1) AU2013263866B2 (ja)
BR (1) BR112013033792B1 (ja)
CA (1) CA2833940C (ja)
ES (3) ES2610978T3 (ja)
WO (1) WO2014176775A1 (ja)
ZA (1) ZA201308948B (ja)

Families Citing this family (169)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
WO2013101209A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Thin translation for system access of non volatile semicondcutor storage as random access memory
JP5953573B2 (ja) * 2013-05-02 2016-07-20 ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. ペリフェラル・コンポーネント・インターコネクト・エクスプレス・エンドポイントデバイスにアクセスするためのコンピュータシステム、方法、および装置
US9552323B1 (en) * 2013-07-05 2017-01-24 Altera Corporation High-speed peripheral component interconnect (PCIe) input-output devices with receive buffer management circuitry
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9747229B1 (en) * 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US10229085B2 (en) 2015-01-23 2019-03-12 Hewlett Packard Enterprise Development Lp Fibre channel hardware card port assignment and management method for port names
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
CN105938461B (zh) * 2015-07-31 2019-02-19 杭州迪普科技股份有限公司 一种dma数据传输方法、装置以及网络设备
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US11269884B2 (en) 2015-09-04 2022-03-08 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
ES2726302T3 (es) * 2015-09-21 2019-10-03 Huawei Tech Co Ltd Sistema informático y procedimiento para acceder a un dispositivo de punto extremo del mismo
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
CN105824622B (zh) * 2016-03-11 2020-04-24 联想(北京)有限公司 数据处理方法及电子设备
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US10613974B2 (en) 2016-10-04 2020-04-07 Pure Storage, Inc. Peer-to-peer non-volatile random-access memory
US12039165B2 (en) 2016-10-04 2024-07-16 Pure Storage, Inc. Utilizing allocation shares to improve parallelism in a zoned drive storage system
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
CN108733479B (zh) * 2017-04-24 2021-11-02 上海宝存信息科技有限公司 卸载固态硬盘卡的方法以及使用该方法的装置
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10223318B2 (en) 2017-05-31 2019-03-05 Hewlett Packard Enterprise Development Lp Hot plugging peripheral connected interface express (PCIe) cards
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US12032848B2 (en) 2021-06-21 2024-07-09 Pure Storage, Inc. Intelligent block allocation in a heterogeneous storage system
US12067274B2 (en) 2018-09-06 2024-08-20 Pure Storage, Inc. Writing segments and erase blocks based on ordering
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
CN107957885B (zh) * 2017-12-01 2021-02-26 麒麟软件有限公司 一种基于飞腾平台的pcie链路设备待机与恢复方法
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
CN108509155B (zh) * 2018-03-31 2021-07-13 深圳忆联信息系统有限公司 一种远程访问磁盘的方法和装置
US12001688B2 (en) 2019-04-29 2024-06-04 Pure Storage, Inc. Utilizing data views to optimize secure data access in a storage system
US11995336B2 (en) 2018-04-25 2024-05-28 Pure Storage, Inc. Bucket views
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US12079494B2 (en) 2018-04-27 2024-09-03 Pure Storage, Inc. Optimizing storage system upgrades to preserve resources
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US11017071B2 (en) * 2018-08-02 2021-05-25 Dell Products L.P. Apparatus and method to protect an information handling system against other devices
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US10846155B2 (en) * 2018-10-16 2020-11-24 Samsung Electronics Co., Ltd. Method for NVMe SSD based storage service using RPC and gRPC tunneling over PCIe +
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
CN109684084A (zh) * 2018-12-12 2019-04-26 浪潮(北京)电子信息产业有限公司 一种总线资源的分配方法、系统及相关组件
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US12087382B2 (en) 2019-04-11 2024-09-10 Pure Storage, Inc. Adaptive threshold for bad flash memory blocks
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
JP7326863B2 (ja) * 2019-05-17 2023-08-16 オムロン株式会社 転送装置、情報処理装置、および、データ転送方法
US11487665B2 (en) 2019-06-05 2022-11-01 Pure Storage, Inc. Tiered caching of data in a storage system
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US12001684B2 (en) 2019-12-12 2024-06-04 Pure Storage, Inc. Optimizing dynamic power loss protection adjustment in a storage system
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US12056365B2 (en) 2020-04-24 2024-08-06 Pure Storage, Inc. Resiliency for a storage system
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
CN111767242B (zh) * 2020-05-28 2022-04-15 西安广和通无线软件有限公司 Pcie设备控制方法、装置、计算机设备和存储介质
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US12093545B2 (en) 2020-12-31 2024-09-17 Pure Storage, Inc. Storage system with selectable write modes
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US12067282B2 (en) 2020-12-31 2024-08-20 Pure Storage, Inc. Write path selection
US12061814B2 (en) 2021-01-25 2024-08-13 Pure Storage, Inc. Using data similarity to select segments for garbage collection
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US12099742B2 (en) 2021-03-15 2024-09-24 Pure Storage, Inc. Utilizing programming page size granularity to optimize data segment storage in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
CN113868181B (zh) * 2021-09-30 2023-07-21 苏州浪潮智能科技有限公司 一种存储设备pcie链路协商方法、系统、设备及介质
EP4213007A3 (en) * 2021-12-24 2023-09-27 Samsung Electronics Co., Ltd. Storage device having deduplication manager, method of operating the same, and method of operating storage system including the same
US11994723B2 (en) 2021-12-30 2024-05-28 Pure Storage, Inc. Ribbon cable alignment apparatus

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5630076A (en) * 1995-05-05 1997-05-13 Apple Computer, Inc. Dynamic device matching using driver candidate lists
KR100244778B1 (ko) * 1997-07-19 2000-02-15 윤종용 정상 동작중인 시스템에 보드를 실장 또는 탈장하는 회로
US7152167B2 (en) 2002-12-11 2006-12-19 Intel Corporation Apparatus and method for data bus power control
US7404047B2 (en) 2003-05-27 2008-07-22 Intel Corporation Method and apparatus to improve multi-CPU system performance for accesses to memory
US7484045B2 (en) 2004-03-30 2009-01-27 Intel Corporation Store performance in strongly-ordered microprocessor architecture
US7484016B2 (en) * 2004-06-30 2009-01-27 Intel Corporation Apparatus and method for high performance volatile disk drive memory access using an integrated DMA engine
US7543094B2 (en) 2005-07-05 2009-06-02 Via Technologies, Inc. Target readiness protocol for contiguous write
US7546487B2 (en) * 2005-09-15 2009-06-09 Intel Corporation OS and firmware coordinated error handling using transparent firmware intercept and firmware services
JP4809166B2 (ja) 2006-09-06 2011-11-09 株式会社日立製作所 リモートi/oを構成する計算機システム及びi/oデータ転送方法
US7657663B2 (en) * 2006-12-19 2010-02-02 International Business Machines Corporation Migrating stateless virtual functions from one virtual plane to another
US7836238B2 (en) * 2006-12-19 2010-11-16 International Business Machines Corporation Hot-plug/remove of a new component in a running PCIe fabric
US7835391B2 (en) 2007-03-07 2010-11-16 Texas Instruments Incorporated Protocol DMA engine
US8141094B2 (en) * 2007-12-03 2012-03-20 International Business Machines Corporation Distribution of resources for I/O virtualized (IOV) adapters and management of the adapters through an IOV management partition via user selection of compatible virtual functions
US7934033B2 (en) * 2008-03-25 2011-04-26 Aprius, Inc. PCI-express function proxy
CN101763221B (zh) * 2008-12-24 2013-01-30 成都市华为赛门铁克科技有限公司 一种存储方法、存储系统及控制器
CN101631083B (zh) * 2009-08-07 2012-04-04 成都市华为赛门铁克科技有限公司 设备接管方法和装置及双控系统
US8521915B2 (en) * 2009-08-18 2013-08-27 Fusion-Io, Inc. Communicating between host computers and peripheral resources in an input/output (I/O) virtualization system
JP5953573B2 (ja) * 2013-05-02 2016-07-20 ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. ペリフェラル・コンポーネント・インターコネクト・エクスプレス・エンドポイントデバイスにアクセスするためのコンピュータシステム、方法、および装置

Also Published As

Publication number Publication date
EP2811413A1 (en) 2014-12-10
KR20150005854A (ko) 2015-01-15
ES2866156T3 (es) 2021-10-19
US8782317B1 (en) 2014-07-15
US20140331000A1 (en) 2014-11-06
ES2610978T3 (es) 2017-05-04
KR101539878B1 (ko) 2015-07-27
JP2015519665A (ja) 2015-07-09
EP2811413A4 (en) 2014-12-10
EP2811413B1 (en) 2016-10-19
CN104335194A (zh) 2015-02-04
EP3173936B1 (en) 2018-07-18
US9477632B2 (en) 2016-10-25
CA2833940A1 (en) 2014-11-02
AU2013263866A1 (en) 2014-12-04
ZA201308948B (en) 2016-01-27
BR112013033792A2 (pt) 2017-02-07
EP3173936A1 (en) 2017-05-31
EP3385854A1 (en) 2018-10-10
CA2833940C (en) 2018-12-04
US20150234772A1 (en) 2015-08-20
WO2014176775A1 (zh) 2014-11-06
EP3385854B1 (en) 2021-01-27
US10025745B2 (en) 2018-07-17
BR112013033792B1 (pt) 2018-12-04
AU2013263866B2 (en) 2016-02-18
ES2687609T3 (es) 2018-10-26

Similar Documents

Publication Publication Date Title
JP5953573B2 (ja) ペリフェラル・コンポーネント・インターコネクト・エクスプレス・エンドポイントデバイスにアクセスするためのコンピュータシステム、方法、および装置
JP6140303B2 (ja) 仮想マシンのライブマイグレーション方法、仮想マシンのメモリデータ処理方法、サーバ及び仮想マシンシステム
TWI453597B (zh) 經由在一輸入輸出虛擬管理分割中之虛擬仲介以管理輸入輸出虛擬配接器的系統及方法
TWI616758B (zh) 遠端多電腦切換技術之儲存裝置、系統及方法
US10027532B2 (en) Storage control apparatus and storage control method
JP6064237B2 (ja) メモリデータを移行するための方法、コンピュータ、および装置
KR102147629B1 (ko) 플렉시블 서버 시스템
RU2614569C2 (ru) Стойка с функцией автоматического восстановления и способ автоматического восстановления для этой стойки
CN114817105A (zh) 设备枚举的方法、装置、计算机设备以及存储介质
CN110413554B (zh) 热插拔系统及热插拔方法
JP6357879B2 (ja) システムおよび障害処理方法
CN113722147A (zh) 一种保持业务连接方法及相关设备
CN104335194B (zh) 一种计算机系统、高速外围组件互联端点设备的访问方法、和装置
US20190266061A1 (en) Information processing apparatus, control method for information processing apparatus, and computer-readable recording medium having stored therein control program for information processing apparatus
CN104283950A (zh) 一种业务请求处理的方法、装置及系统
JP6112205B2 (ja) 情報処理システム、装置、方法及びプログラム
CN116700594A (zh) 存储设备、存储方法、计算设备及存储介质
CN117251039A (zh) 设备复位方法、装置、存储介质及电子设备

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150623

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150924

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160308

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160520

R150 Certificate of patent or registration of utility model

Ref document number: 5953573

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250