図面 (/)

技術 インフィニバンド(IB)上で仮想ホストバスアダプタ(vHBA)を管理およびサポートするためのシステムおよび方法、ならびに単一の外部メモリインターフェイスを用いてバッファの効率的な使用をサポートするためのシステムおよび方法

出願人 オラクル・インターナショナル・コーポレイション
発明者 アガーワル,ウッタム
出願日 2019年1月23日 (1年2ヶ月経過) 出願番号 2019-009654
公開日 2019年6月13日 (9ヶ月経過) 公開番号 2019-091482
状態 未査定
技術分野 バス制御 入出力制御 情報転送方式
主要キーワード 出力制御ブロック シリアル相互接続 リクエスト命令 書込操作 フラッシュ操作 高性能ネットワーク リクエストトランザクション バッファリスト
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2019年6月13日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (19)

課題

コンピューティング環境において、入力/出力(I/O)仮想化サポートする。

解決手段

ステムは、1つ以上の仮想ホストバスアダプタ(vHBA)に関連付けられた複数のパケットバッファを有する空きバッファプールを含む。各々のvHBAは、1つ以上のパケットバッファに指向するバッファポインタの主要リンクリストを保持する。さらに、入力/出力(I/O)装置に関連付けられたオンチップメモリ上で、コンテキストテーブルを定義する。このコンテキストテーブルは、ディスク読取操作に割当てられた1つ以上のパケットバッファに指向するバッファポインタの一時リンクリストを保持する。I/O装置は、物理ホストバスアダプタ(HBA)からディスク読取データを受信すると、コンテキストテーブルを開き、バッファポインタの一時リンクリストを更新し、コンテキストテーブルが閉じられると、一時リンクリストを主要リンクリストに合併する。

概要

背景

背景
インフィニバンド(IB)技術は、クラウドコンピューティングファブリック基盤として、その応用が増加しつつである。より大きなクラウドコンピューティングアーキテクチャが導入されるため、従来のネットワークおよびストレージに関連する性能上および管理上のボトルネックが重大な問題となっている。このような問題を対処することは、本発明の実施形態の一般的な意図である。

概要

コンピューティング環境において、入力/出力(I/O)仮想化サポートする。システムは、1つ以上の仮想ホストバスアダプタ(vHBA)に関連付けられた複数のパケットバッファを有する空きバッファプールを含む。各々のvHBAは、1つ以上のパケットバッファに指向するバッファポインタの主要リンクリストを保持する。さらに、入力/出力(I/O)装置に関連付けられたオンチップメモリ上で、コンテキストテーブルを定義する。このコンテキストテーブルは、ディスク読取操作に割当てられた1つ以上のパケットバッファに指向するバッファポインタの一時リンクリストを保持する。I/O装置は、物理ホストバスアダプタ(HBA)からディスク読取データを受信すると、コンテキストテーブルを開き、バッファポインタの一時リンクリストを更新し、コンテキストテーブルが閉じられると、一時リンクリストを主要リンクリストに合併する。

目的

図8に示すように、外部入来メモリ810は、空きバッファプール820を提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

コンピューティング環境において、入力/出力(I/O)仮想化サポートするためのシステムであって、ネットワークファブリック上のサーバに関連付けられたチップを備え、前記チップは、複数のパケットバッファを含む外部メモリに関連付けられており、前記チップは、物理ホストバスアダプタ(HBA)から受信したディスク読取データを含む1つ以上のパケットの状態を保存するオンチップメモリを含み、前記チップは、前記外部メモリ上の前記複数のパケットバッファ内の前記1つ以上のパケットをキューに入れ、前記1つ以上のパケットの状態に基づいて、前記外部メモリから前記1つ以上のパケットを読出し、および前記1つ以上のパケットを前記ネットワークファブリック上の前記サーバに送信するように動作する、システム。

請求項2

前記ネットワークファブリックは、インフィニバンド(IB)ファブリックであり、前記サーバは、1つ以上のキューペア(QP)に関連付けられる、請求項1に記載システム。

請求項3

前記複数のパケットバッファは、1つ以上のバッファリストに格納され、各バッファリストは、前記サーバに関連付けられたキューペア(QP)に対応する、請求項2に記載システム。

請求項4

前記チップは、1つ以上のIBヘッダシーケンス番号とを前記物理HBAから受信した各パケットに追加するように動作する、請求項2または3に記載のシステム。

請求項5

少なくとも1つのIBヘッダは、IB命令を含む、請求項4に記載のシステム。

請求項6

前記IBファブリック内のキューペア(QP)をターゲティングする複数のパケットは、パケットシーケンス番号スペース共有するように配置される、請求項2〜5のいずれか1項に記載のシステム。

請求項7

前記サーバに関連付けられたQPのために、複数のディスク読取命令、リモートダイレクトメモリアクセス(RDMA)読取リクエストおよび送信命令多重化することをサポートするように、複数のコンテキストが開かれる、請求項2〜6のいずれか1項に記載のシステム。

請求項8

前記1つ以上のパケットの状態は、前記外部メモリに格納された前記1つ以上のパケットがすべてキューに入れられたことを示す、および/または、1つ以上の関連IB命令が更新されたことを示す、請求項1〜7のいずれか1項に記載のシステム。

請求項9

前記オンチップメモリ内の各エントリは、2ビットの幅を有する、請求項1〜8のいずれか1項に記載のシステム。

請求項10

前記オンチップメモリ内の各エントリの一方のビットは、関連IB命令を更新する必要があるか否かを示し、他方のビットは、チップがキューに入れられたパケットを前記外部メモリから読出すことができるか否かを示す、請求項9に記載のシステム。

請求項11

コンピューティング環境において、効率的なパケット処理をサポートするための方法であって、ネットワークファブリック上のサーバに関連付けられたチップを提供するステップを備え、前記チップは、複数のパケットバッファを含む外部メモリに関連付けられており、物理ホストバスアダプタ(HBA)から受信したディスク読取データを含む1つ以上のパケットの状態をオンチップメモリ上に保存するステップとを含み、前記チップは、前記外部メモリ上の前記複数のパケットバッファ内の前記1つ以上のパケットをキューに入れ、前記1つ以上のパケットの状態に基づいて、前記外部メモリから前記1つ以上のパケットを読出し、および前記1つ以上のパケットを前記ネットワークファブリック上の前記サーバに送信するように動作する、方法。

請求項12

前記ネットワークファブリックは、インフィニバンド(IB)ファブリックであり、前記サーバは、1つ以上のキューペア(QP)に関連付けられる、請求項11に記載の方法。

請求項13

前記複数のパケットバッファを1つ以上のバッファリストに格納するステップをさらに含み、各バッファリストは、前記サーバに関連付けられたキューペア(QP)に対応する、請求項12に記載の方法。

請求項14

1つ以上のIBヘッダとシーケンス番号とを前記物理HBAから受信した各パケットに追加するように、前記チップを構成するステップをさらに含む、請求項12または13に記載の方法。

請求項15

少なくとも1つのIBヘッダは、IB命令を含む、請求項14に記載の方法。

請求項16

パケットシーケンス番号スペースを共有するように、前記IBファブリック内のキューペア(QP)をターゲティングする複数のパケットを配置するステップをさらに含む、請求項12〜15のいずれか1項に記載の方法。

請求項17

前記サーバに関連付けられたQPのために、複数のディスク読取命令、リモートダイレクトメモリアクセス(RDMA)読取リクエストおよび送信命令を多重化することをサポートするように、複数のコンテキストを開くステップをさらに含む、請求項12〜16のいずれか1項に記載の方法。

請求項18

前記外部メモリに格納された前記1つ以上のパケットがすべてキューに入れられたことを示すように、および/または、1つ以上の関連IB命令が更新されたことを示すように、前記1つ以上のパケットの状態を構成するステップをさらに含む、請求項11〜17のいずれか1項に記載の方法。

請求項19

前記オンチップメモリ内の各エントリは、2ビットの幅を有し、前記オンチップメモリ内の各エントリの一方のビットは、関連IB命令を更新する必要があるか否かを示し、他方のビットは、チップがキューに入れられたパケットを前記外部メモリから読出すことができるか否かを示す、請求項11〜18のいずれか1項に記載の方法。

請求項20

命令を格納する非一時的な機械読取可能記媒体であって、前記命令は、実行されると、以下のステップをシステムに実行させ、当該以下のステップは、ネットワークファブリック上のサーバに関連付けられたチップを提供するステップを含み、前記チップは、複数のパケットバッファを含む外部メモリに関連付けられており、物理ホストバスアダプタ(HBA)から受信したディスク読取データを含む1つ以上のパケットの状態をオンチップメモリ上に保存するステップと、前記外部メモリ上の前記複数のパケットバッファ内の前記1つ以上のパケットをキューに入れ、前記1つ以上のパケットの状態に基づいて、前記外部メモリから前記1つ以上のパケットを読出し、および前記1つ以上のパケットを前記ネットワークファブリック上の前記サーバに送信するように、前記チップを動作させるステップとを含む、非一時的な機械読取可能記憶媒体。

請求項21

コンピューティング環境において、I/O仮想化をサポートするためのシステムであって、コンピューティング環境内の1つ以上の仮想ホストバスアダプタ(vHBA)に関連付けられた複数のパケットバッファを含む空きバッファプールを含み、前記vHBAの各々は、1つ以上のパケットバッファに指向するバッファポインタの主要リンクリストを前記空きバッファプールに保存し、入力/出力(I/O)装置に関連付けられたオンチップメモリ上で定義されたコンテキストテーブルを含み、前記コンテキストテーブルは、ディスク読取操作のために、前記空きバッファプールから割当てられた1つ以上のパケットバッファに指向するバッファポインタの一時リンクリストを保存し、前記I/O装置は、ディスク読取操作を実行する物理ホストバスアダプタ(HBA)からすディスク読取データを受信すると、前記コンテキストテーブルを開き、前記バッファポインタの一時リンクリストを更新し、および前記コンテキストテーブルが閉じられると、前記バッファポインタの一時リンクリストを前記バッファポインタの主要リンクリストに合併するように動作する、システム。

請求項22

前記I/O装置は、前記ディスク読取操作を開始するように、インフィニバンド(IB)ファブリック上のサーバを動作させる、請求項21に記載のシステム。

請求項23

前記I/O装置は、IBヘッダとシーケンス番号とを前記物理HBAから受信した各パケットに追加する、請求項21または22に記載のシステム。

請求項24

前記I/O装置は、完全メッセージまたはIB最大伝送ユニットMTU)パケットを受信すると、前記外部メモリに格納されたディスク読取データを読出すように動作する、請求項21〜23のいずれか1項に記載のシステム。

請求項25

仮想HBAは、IBドメインにおいて、異なるパケットシーケンス番号(PSN)スペースを保留する、請求項21〜24のいずれか1項に記載のシステム。

請求項26

前記I/O装置は、前記vHBAに関連付けられた異なるディスク読取操作のために、異なるコンテキストテーブルを保存する、請求項21〜25のいずれか1項に記載のシステム。

請求項27

コンテキストテーブルは、前記I/O装置が前記仮想HBAに関連付けられた別のコンテキストテーブルを開くと、閉じられる、請求項21〜26のいずれか1項に記載のシステム。

請求項28

前記別のコンテキストテーブルは、前記空きバッファプールから割当てられた1つ以上のパケットバッファに指向するバッファポインタの新たな一時リンクリストを保存する、請求項27に記載のシステム。

請求項29

前記I/O装置は、前記仮想HBAが別のディスク読取操作からデータを受信すると、別のコンテキストテーブルを開く、請求項27または28に記載のシステム。

請求項30

前記I/O装置は、前記仮想HBAが書込専用命令、RDMA書込最終命令送信専用命令およびRDMA読取リクエスト命令のうち1つの命令を受信すると、別のコンテキストテーブルを開く、請求項27〜29のいずれか1項に記載のシステム。

請求項31

コンピューティング環境において、効率的なパケット処理をサポートするための方法であって、前記コンピューティング環境内の1つ以上の仮想ホストバスアダプタ(vHBA)に関連付けられた複数のパケットバッファを含む空きバッファプールを提供するステップを含み、前記vHBAの各々は、1つ以上のパケットバッファに指向するバッファポインタの主要リンクリストを前記空きバッファプールに保存し、入力/出力(I/O)装置に関連付けられたオンチップメモリにおいて、コンテキストテーブルを定義するステップを含み、前記コンテキストテーブルは、ディスク読取操作のために、前記空きバッファプールから割当てられた1つ以上のパケットバッファに指向するバッファポインタの一時リンクリストを保存し、前記ディスク読取操作を実行する物理ホストバスアダプタ(HBA)からディスク読取データを受信すると、コンテキストテーブルを開き、前記バッファポインタの一時リンクリストを更新し、および前記コンテキストテーブルが閉じられると、前記バッファポインタの一時リンクリストを前記バッファポインタの主要リンクリストに合併するように、前記I/O装置を動作させるステップを含む、方法。

請求項32

前記ディスク読取操作を開始するように、インフィニバンド(IB)ファブリック上のサーバを動作させるステップをさらに含む、請求項31に記載の方法。

請求項33

IBヘッダとシーケンス番号とを前記物理HBAから受信した各パケットに追加するステップをさらに含む、請求項31または32に記載の方法。

請求項34

完全メッセージまたはIB最大伝送ユニット(MTU)パケットを受信すると、前記外部メモリに格納されたディスク読取データを読出すステップをさらに含む、請求項31〜33のいずれか1項に記載の方法。

請求項35

異なるパケットシーケンス番号(PSN)スペースをIBドメインに保留するように、各仮想HBAを構成するステップをさらに含む、請求項31〜34のいずれか1項に記載の方法。

請求項36

前記vHBAに関連付けられた異なるディスク読取操作のために、異なるコンテキストテーブルを保管するステップをさらに含む、請求項31〜35のいずれか1項に記載の方法。

請求項37

前記I/O装置が前記仮想HBAに関連付けられた別のコンテキストテーブルを開くと、コンテキストテーブルを閉じるステップをさらに含む、請求項31〜36のいずれか1項に記載の方法。

請求項38

前記空きバッファプールから割当てられた1つ以上のパケットバッファに指向するバッファポインタの新たな一時リンクリストを保存するように、前記別のコンテキストテーブルを構成するステップをさらに含む、請求項37に記載の方法。

請求項39

前記仮想HBAが別のディスク読取操作からデータ、または書込専用命令、RDMA書込最終命令、送信専用命令およびRDMA読取リクエスト命令のうち1つの命令を受信すると、別のコンテキストテーブルを開くステップをさらに含む、請求項37または38に記載の方法。

請求項40

命令を格納する非一時的な機械読取可能記憶媒体であって、前記命令は、実行されると、以下のステップをシステムに実行させ、当該以下のステップは、前記ネットワーク環境内の1つ以上の仮想ホストバスアダプタ(vHBA)に関連付けられた複数のパケットバッファを含む空きバッファプールを提供するステップを含み、前記vHBAの各々は、1つ以上のパケットバッファに指向するバッファポインタの主要リンクリストを前記空きバッファプールに保存し、入力/出力(I/O)装置に関連付けられたオンチップメモリにおいて、コンテキストテーブルを定義するステップを含み、前記コンテキストテーブルは、ディスク読取操作のために、前記空きバッファプールから割当てられた1つ以上のパケットバッファに指向するバッファポインタの一時リンクリストを保存し、前記ディスク読取操作を実行する物理ホストバスアダプタ(HBA)からディスク読取データを受信すると、コンテキストテーブルを開き、前記バッファポインタの一時リンクリストを更新し、および前記コンテキストテーブルが閉じられると、前記バッファポインタの一時リンクリストを前記バッファポインタの主要リンクリストに合併するように、前記I/O装置を動作させるステップとを含む、非一時的な機械読取可能記憶媒体。

請求項41

コンピューティング環境において、入力/出力(I/O)仮想化をサポートするためのシステムであって、メモリ内の空きバッファプールを含み、前記空きバッファプールは、2次元リンクリストおよび1次元リンクリストを備え、前記2次元リンクリストの各エントリは、連続したメモリ位置で複数のパケットバッファを含み、前記1次元リンクリストの各エントリは、単一のパケットバッファを含み、I/O装置は、前記空きバッファプールを用いて、物理ホストバスアダプタ(HBA)から受信したディスク読取データを保存するように動作する、システム。

請求項42

前記I/O装置は、前記ディスク読取操作を開始するように、インフィニバンド(IB)ファブリック上のサーバを動作させる、請求項41に記載のシステム。

請求項43

前記I/O装置は、1つ以上のIBヘッダとシーケンス番号とを前記物理HBAから受信した各パケットに追加する、請求項41または42に記載のシステム。

請求項44

前記I/O装置は、完全メッセージまたはIB最大伝送ユニット(MTU)パケットを受信すると、前記外部メモリに格納されたディスク読取データを読出すように動作する、請求項41〜43のいずれか1項に記載のシステム。

請求項45

前記I/O装置は、1つ以上の仮想ホストバスアダプタ(vHBA)をサポートしており、各vHBAは、IBドメインにおいて、異なるパケットシーケンス番号(PSN)スペースを保留する、請求項41〜44のいずれか1項に記載のシステム。

請求項46

前記I/O装置は、パケットがリモートダイレクトメモリアクセス(RDMA)書込トランザクションまたはRDMA読取リクエストトランザクションのいずれかを実行する場合、前記メモリにおいてこのパケットをキューに入れるように動作する、請求項41〜45のいずれか1項に記載のシステム。

請求項47

前記I/O装置は、前記キューに入れられた前記パケットがRDMA書込トランザクション用のものである場合、前記2次元リンクリストからスーパーブロックを割当てるように動作する、請求項46に記載のシステム。

請求項48

前記I/O装置は、前記キューに入れられた前記パケットがRDMA読取リクエストトランザクション用のものであり、且つ、前記スーパーブロックに1つ以上のパケットバッファが残されている場合、前記1次元リンクリストからパケットバッファを割当てるように動作する、請求項47に記載のシステム。

請求項49

前記I/O装置は、前記キューに入れられた前記パケットがRDMA読取リクエストトランザクション用のものであり、且つ、前記スーパーブロックにパケットバッファが残されていない場合、前記2次元リンクリストからスーパーブロックを割当てるように動作する、請求項47に記載のシステム。

請求項50

前記I/O装置は、前記vHBAのために、単純リンクリストにパケットバッファを保留するように動作する、請求項41〜49のいずれか1項に記載のシステム。

請求項51

ネットワーク環境において、効率的なパケット処理をサポートするための方法であって、メモリに空きバッファプールを提供するステップを含み、前記空きバッファプールは、2次元リンクリストおよび1次元リンクリストを含み、前記2次元リンクリストの各エントリが連続したメモリ位置で複数のパケットバッファを含み、および前記1次元リンクリストの各エントリが単一のパケットバッファを含むようにするステップを含み、I/O装置を介して、前記空きバッファプールを用いて、物理ホストバスアダプタ(HBA)から受信したデータ読取ディスクを保存するステップを含む、方法。

請求項52

ディスク読取操作を開始するように、インフィニバンド(IB)ファブリック上のサーバを動作させるステップをさらに含む、請求項51に記載の方法。

請求項53

1つ以上のIBヘッダとシーケンス番号とを前記物理HBAから受信した各パケットに追加するステップをさらに含む、請求項51または52に記載の方法。

請求項54

完全メッセージまたはIB最大伝送ユニット(MTU)パケットを受信すると、前記外部メモリに格納されたディスク読取データを読出すステップをさらに含む、請求項51〜53のいずれか1項に記載の方法。

請求項55

1つ以上の仮想ホストバスアダプタ(vHBA)をサポートするステップをさらに含み、各vHBAは、IBドメインにおいて、異なるパケットシーケンス番号(PSN)スペースを保留する、請求項51〜54のいずれか1項に記載の方法。

請求項56

パケットがリモートダイレクトメモリアクセス(RDMA)書込トランザクションまたはRDMA読取リクエストトランザクションのいずれかを実行する場合、前記外部メモリにおいてこのパケットをキューに入れるステップをさらに含む、請求項51〜55のいずれか1項に記載の方法。

請求項57

前記キューに入れられた前記パケットがRDMA書込トランザクション用のものである場合、前記2次元リンクリストからスーパーブロックを割当てるステップをさらに含む、請求項56に記載の方法。

請求項58

前記キューに入れられた前記パケットがRDMA読取リクエストトランザクション用のものであり、且つ、前記スーパーブロックに1つ以上のパケットバッファが残されている場合、前記1次元リンクリストからパケットバッファを割当てるステップをさらに含む、請求項57に記載の方法。

請求項59

前記キューに入れられた前記パケットがRDMA読取リクエストトランザクション用のものであり、且つ、前記スーパーブロックにパケットバッファが残されていない場合、前記2次元リンクリストからスーパーブロックを割当てるステップと、前記vHBAのために、単純リンクリストにおいてパケットバッファを保留するステップとをさらに含む、請求項57に記載の方法。

請求項60

命令を格納する非一時的な機械読取可能記憶媒体であって、前記命令は、実行されると、以下のステップをシステムに実行させ、当該以下のステップは、メモリに空きバッファプールを提供するステップを含み、前記空きバッファプールは、2次元リンクリストおよび1次元リンクリストを含み、前記2次元リンクリスト各エントリが連続したメモリ位置で複数のパケットバッファを含み、および前記1次元リンクリストの各エントリが単一のパケットバッファを含むようにするステップを含み、I/O装置を介して、前記空きバッファプールを用いて、物理ホストバスアダプタ(HBA)から受信したデータ読取ディスクを保存するステップを含む、非一時的な機械読取可能記憶媒体。

請求項61

コンピューティング環境において、入力/出力(I/O)仮想化をサポートするためのシステムであって、前記システムは、以下のシステム、すなわち、(i)請求項1〜10のいずれか1項に記載のシステムと、(ii)請求項21〜30のいずれか1項に記載のシステムと、(iii)請求項41〜50のいずれか1項に記載のシステムとのうち、少なくとも2つを含む。

請求項62

機械読取可能形式プログラム命令を含むコンピュータプログラムであって、これらのプログラム命令は、コンピュータシステムによって実行されると、以下のステップを前記コンピュータシステムに実行させ、当該以下のステップは、(i)請求項11〜19のいずれか1項に記載の方法と、(ii)請求項31〜39のいずれか1項に記載のシステムと、(iii)請求項51〜59のいずれか1項に記載のシステムとのうち少なくとも1つを含む。

請求項63

機械読取可能形式で非一時的な記憶媒体上に格納されている請求項62に記載の前記コンピュータプログラムを含むコンピュータプログラム製品

技術分野

0001

著作権表示
この特許文書の開示の一部には、著作権保護の対象となるものが含まれている。著作権者は、特許商標の特許ファイルまたは記録に掲載された特許文書または特許開示の複製に対しては異議を唱えないが、その他の場合、すべての著作権留保する。

0002

発明の分野
本発明は、一般に、コンピュータシステムに関連し、特に、コンピューティング環境において、入力/出力(I/O)仮想化サポートに関連する。

背景技術

0003

背景
インフィニバンド(IB)技術は、クラウドコンピューティングファブリック基盤として、その応用が増加しつつである。より大きなクラウドコンピューティングアーキテクチャが導入されるため、従来のネットワークおよびストレージに関連する性能上および管理上のボトルネックが重大な問題となっている。このような問題を対処することは、本発明の実施形態の一般的な意図である。

課題を解決するための手段

0004

概要
ステムおよび方法は、コンピューティング環境において、入力/出力(I/O)仮想化をサポートすることができる。システムは、チップを含むことができる。このチップは、ネットワークファブリック上のサーバに関連付けられている。さらに、このチップは、複数のパケットバッファを含む外部メモリに関連付けられている。また、オンチップメモリは、物理ホストバスアダプタ(HBA)から受信したディスク読取データを含む1つ以上のパケットの状態を保存する。さらに、チップは、外部メモリ上の複数のパケットバッファ内の1つ以上のパケットをキューに入れ、1つ以上のパケットの状態に基づいて、外部メモリから1つ以上のパケットを読出し、1つ以上のパケットをネットワークファブリック上のサーバに送信するように動作する。

0005

システムおよび方法は、コンピューティング環境において、入力/出力(I/O)仮想化をサポートすることができる。システムは、1つ以上の仮想ホストバスアダプタ(vHBA)に関連付けられた複数のパケットバッファを含む空きバッファプールを含み、vHBAの各々は、1つ以上のパケットバッファに指向するバッファポインタの主要リンクリストを空きバッファプールに保存する。また、入力/出力(I/O)装置に関連付けられたオンチップメモリ上で、コンテキストテーブルを定義することができる。このコンテキストテーブルは、ディスク読取操作のために、空きバッファプールから割当てられた1つ以上のパケットバッファに指向するバッファポインタの一時リンクリストを保存する。I/O装置は、ディスク読取操作を実行する物理ホストバスアダプタ(HBA)からすディスク読取データを受信すると、コンテキストテーブルを開き、バッファポインタの一時リンクリストを更新し、およびコンテキストテーブルが閉じられると、バッファポインタの一時リンクリストをバッファポインタの主要リンクリストに合併するように、動作する。

0006

本明細書に記載のシステムおよび方法は、コンピューティング環境において、入力/出
力(I/O)仮想化をサポートすることができる。システムは、メモリにおいて、空きバッファプールを備えることができる。I/O装置は、空きバッファプールを用いて、物理ホストバスアダプタ(HBA)から受信したディスク読取データを保存するように動作する。空きバッファプールは、2次元リンクリストおよび1次元リンクリストを含むことができる。2次元リンクリストの各エントリは、連続したメモリ位置で複数のパケットバッファを含み、1次元リンクリストの各エントリは、単一のパケットバッファを含む。

図面の簡単な説明

0007

さまざまなメモリインターフェイスを用いて、入力/出力(I/O)仮想化をサポートすることを示す図である。
本発明の一実施形態に従って、単一のメモリインターフェイスを用いて、入力/出力(I/O)仮想化をサポートすることを示す図である。
本発明の一実施形態に従って、単一のメモリインターフェイスを用いて、入来トラフィックを処理するための体系をサポートすることを示す図である。
本発明の一実施形態に従って、I/O装置上でディスク読取操作を開始することを示す図である。
本発明の一実施形態に従って、I/O装置上で要求したIOCBを抽出することを示す図である。
本発明の一実施形態に従って、I/O装置上でディスク読取データを処理することを示す図である。
本発明の一実施形態に従って、I/O装置上でディスク読取操作を完了する処理を示す図である。
本発明の一実施形態に従って、複数の仮想ホストバスアダプタ(vHBA)を用いて、I/O仮想化をサポートすることを示す図である。
本発明の一実施形態に従って、仮想ホストバスアダプタ(vHBA)において、複数のコンテキストをサポートすることを示す図である。
本発明の一実施形態に従って、オンチップメモリを用いて、外部メモリ上でキューに入れられたパケットの状態を保存することを示す図である。
本発明の一実施形態に従って、単一のメモリインターフェイスを用いて、入力/出力(I/O)仮想化をサポートすることを示す例示的なフローチャートである。
本発明の一実施形態に従って、空きバッファプールを用いて、複数の仮想ホストバスアダプタ(vHBA)をサポートすることを示す図である。
本発明の一実施形態に従って、ハイブリッドリンクリスト構造を用いて、ディスク読取操作をサポートすることを示す図である。
本発明の一実施形態に従って、ハイブリッドのリンクリスト構造を用いて、ヘッドラインブロッキングを回避することを示す図である。
本発明の一実施形態に従って、ハイブリッドリンクリスト構造を用いて、ヘッドラインブロッキングを回避することを示す例示的なフローチャートである。
本発明の一実施形態に従って、I/O装置のために2次元リンクリスト構造をサポートすることを示す図である。
本発明の一実施形態に従って、I/O装置のためにメモリの効率的な使用をサポートすることを示す図である。
本発明の一実施形態に従って、コンピューティング環境において、効率的なパケット処理をサポートすることを示す例示的なフローチャートである。

実施例

0008

詳細な説明
本発明は、限定することなく、例示として、添付の図面に示される。図面において、同様の参照番号は、同様の要素を標記する。本開示において、「一実施形態」または「1つの実施形態」または「いくつかの実施形態」を言及する場合、必ずしも同様の実施形態に
限定されず、少なくとも1つの実施形態を意味することに留意すべきである。

0009

本発明の以下の説明において、高性能ネットワークの一例として、インフィニバンド(IB)ネットワークを使用する。限定することなく、他の種類の高性能ネットワークを使用できることは、当業者には明らかであろう。また、本発明の以下の説明において、ストレージネットワークの一例として、ファイバチャネル(FC)ストレージネットワークを使用する。限定することなく、他の種類のストレージネットワークを使用できることは、当業者には明らかであろう。

0010

本明細書に記載のシステムおよび方法は、1つ以上の仮想ホストバスアダプタ(vHBA)を用いて、入力/出力(I/O)仮想化をサポートすることができる。

0011

入力/出力(I/O)仮想化
2つの異なるメモリインターフェイスに基づいて、IBファブリック上で、I/O仮想化をサポートすることができる。

0012

図1は、異なるメモリインターフェイスを用いて、入力/出力(I/O)仮想化をサポートすることを示す図である。図1に示すように、I/O装置100は、ファイバチャネル(FC)ドメイン101およびインフィニバンド(IB)ドメイン102を用いて、入来トラフィック、たとえばストレージネットワーク105からIBファブリック104へのディスク読取データを処理することができる。

0013

図1に示すように、ファイバチャネル(FC)ドメイン101は、物理ホストバスアダプタ(HBA)103に接続することができる。物理HBA103は、たとえばFC命令を用いて、ディスク読取操作を実行することができ、たとえば周辺機器相互接続エクスプレスPCIエクスプレスまたはPCIe)命令を用いて、データおよびコンテキストをFCドメイン101に送信することができる。

0014

FCドメイン101は、FCコンテキストリスト121を保存することができる。FCコンテキストリスト121は、さまざまな仮想ホストバスアダプタ(vHBA)に関連する情報およびコンテキストを含むことができる。また、FCドメイン101は、受信したディスク読取データおよび/またはコンテキストを外部メモリ、たとえば、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)111に記憶することができる。

0015

図1に示すように、FCドメイン101とIBドメイン102とは、シリアル相互接続を介して直接に接続されている。IBドメイン102は、FCドメイン101からFCデータおよびコンテキストを受信することができ、シーケンス順序付けおよびコンテキストの管理のために、受信したFCデータおよびコンテキストをIBコンテキストリスト122内の異なるキューペア(QP)にマッピングすることができる。また、IBドメイン102は、受信したディスク読取データおよびコンテキストを外部メモリ、たとえばSDRAM112に保存することができる。受信したディスク読取データおよびコンテキストは、IBフォーマットであってもよい。次に、IBドメイン102は、これらの情報をIBファブリック104に転送することができる。

0016

このように、システムは、複数の異なるメモリインターフェイスを用いて、ストレージネットワーク105からIBファブリック104への入来トラフィックを処理することができる。

0017

単一のメモリインターフェイス
本発明の一実施形態によれば、システムは、単一のメモリインターフェイスを用いて、
I/O仮想化をサポートする、たとえば入来トラフィックおよび送出トラフィックの両方のためにIBファブリック上に作成された異なる仮想HBA用の並列FCコンテキストを管理することができる。

0018

図2は、本発明の一実施形態に従って、単一のメモリインターフェイスを用いて、入力/出力(I/O)仮想化をサポートすることを示す図である。図2に示すように、I/O装置200は、単一のFC/IBドメイン201を表すチップを用いて、ストレージネットワーク205からIBファブリック204への入来トラフィック、たとえばディスク読取データを処理することができる。

0019

単一のFC/IBドメイン201は、物理ホストバスアダプタ(HBA)203に直接に接続することができる。物理HBA203は、FC命令を用いて、ディスク読取操作を実行することができる。物理HBA203は、PCIe命令を用いて、ディスク読取データおよびコンテキストをFC/IBドメイン201に送信することもできる。その後、FC/IBドメイン201は、IBプロトコルを用いて、受信したディスク読取データおよびコンテキストをIBファブリック204に送信することができる。

0020

図2に示すように、FC/IBドメイン201は、vHBA/QP情報リスト220を保存することができる。vHBA/QP情報リスト220は、受信したFCデータおよびコンテキストをIBコンテキストリスト内の異なるキューペア(QP)にマッピングすることができる。また、FC/IBドメイン201は、たとえばIBフォーマットのディスク読取データおよびコンテキストを外部メモリ、たとえばSDRAM210に保存することができる。

0021

本発明の一実施形態によれば、FCコンテキストリストをIB信頼性のある接続(RC)キューペア(QP)リストに合併することによって、2つの異なるメモリインターフェイスの代わりに、単一のメモリインターフェイスを使用することができる。たとえば、システムは、一時コンテキストリストをIBドメインにマッピングする前に、外部メモリバッファのために、この一時コンテキストリストの動的リストを保有することができる。この手法は、2つの異なる外部メモリを使用することを回避することができ、IBドメインからバックプレシャーメッセージ(back pressure message)をFCドメインに送信する
ことを回避することができる。したがって、システムは、同一のデータおよび/またはコンテキストを複数回格納することを回避することができ、遅延を改善する。さらに、2つの異なるチップおよびメモリインターフェイスの代わりに、単一のチップおよびメモリインターフェイスを使用することは、システムのコストを低減することができる。

0022

また、システムは、2つの異なるドメイン間に通信を行うために、外部(たとえば、ベンダ固有インターフェイスに依存しない。単一のメモリインターフェイスが使用されるため、FC/IBドメイン201は、バッファサイズを知り、外部メモリ、たとえばSDRAM210のバッファを超過することを回避することができる。単一のメモリインターフェイス手法によって、vHBAがダウンした場合、より良いフラッシュ操作を行うことができる。IBドメインとFCドメインとの間にメッセージの送受信がないため、フラッシュ操作を迅速かつ奇麗に行うことができる。

0023

図3は、本発明の一実施形態に従って、単一のメモリインターフェイスを用いて、入来トラフィックを処理するための体系300をサポートすることを示す図である。図3に示すように、単一のメモリインターフェイスに関連付けられているFC/IBドメイン320を用いて、ストレージネットワークに接続している物理ホストバスアダプタ(HBA)330からIBファブリック上のサーバ310への入来トラフィックを処理することができる。

0024

テップ301において、サーバ310は、たとえば、初期ブロックをRC送信メッセージとしてFC/IBドメイン320に送信することによって、ディスク読取操作を始動することができる。次に、ステップ302において、FC/IBドメイン320は、メッセージを受信したことをサーバ310に知らせることができる。

0025

続いて、ステップ303において、サーバ310は、記述子リング書込インデックスを更新することができ、1つ以上の新たな入力/出力制御ブロック(IOCB)が存在していることをFC/IBドメイン320に知らせることができる。次に、ステップ304において、FC/IBドメイン320は、メッセージを受信したことをサーバ310に知らせることができる。

0026

また、FC/IBドメイン320は、受信した書込インデックス値を読取インデックス値と比較することができる。値が異なる場合、FC/IBドメイン320は、ステップ305において、RDMA読取命令を用いて、サーバ310から1つ以上のIOCBを取得しようとする。よって、ステップ306において、サーバ310は、1つ以上のIOCBをRDMA読取応答データとしてFC/IBドメイン320に送信することができる。

0027

FC/IBドメイン320は、サーバ310からIOCBを受信すると、利用可能なコンテキストが存在する場合に、このコンテキストを開くことができる。本明細書において、コンテキストは、オンチップメモリを用いてチップ上に保存された特定命令の状態を示すものである。その後、FC/IBドメイン320は、このIOCB命令を物理HBA330にプッシュすることができる。

0028

たとえば、ステップ307において、FC/IBドメイン320は、ポインタ、たとえば応答書込インデックスを更新することができる。この応答書込インデックスは、要求したIOCBが利用可能であることをHBA330に表示する。次に、ステップ308において、HBA330は、IOCBリクエストの読取を試行することができ、ステップ309において、FC/IBドメイン320は、IOCBリクエスト読取データをHBA330に送信することができる。それに応じて、HBA330は、ディスク読取操作を実行することができる。

0029

本発明の一実施形態によれば、並列サーバのIOCB命令を処理するために、上記のステップ301〜309は、同時に行うことができる。すなわち、FC/IBドメイン320は、複数の並列コンテキストを同時に保存および処理することができる。

0030

また、HBA330は、ステップ311〜319において、ディスク読取データをFC/IBドメイン320に送信することができる。これに応じて、FC/IBドメイン320は、ステップ321〜329において、RDMA書込操作を実行することによって、ディスク読取データをIBファブリック上のサーバ310送信することができる。

0031

本発明の一実施形態によれば、システムは、ディスク読取データが完全にサーバ310またはホストに転送されたことを確保することができる。ステップ331において、サーバ310は、ディスク読取データの受信を確認するために、メッセージをFC/IBドメイン320に送信することができる。

0032

さらに、ステップ332において、ディスク読取データが完全に送信された場合、物理HBA330は、対応するIOCBリクエストが完全に処理されたことを示すIOCB応答をFC/IBドメイン320に送信することができる。これに応じて、ステップ333において、FC/IBドメイン320は、RC送信メッセージを用いて、サーバ310に
IOCB応答を送信することができる。

0033

最後に、ステップ334において、サーバは、IOCB応答の受信を確認することができ、ステップ335において、FC/IBドメイン320は、ポインタ、たとえばIOCB応答がサーバ310に送信されたことをHBA330に示す応答読取インデックスを更新することができる。

0034

本発明の一実施形態によれば、FC/IBドメイン320は、データパス内の異なる種類の入来トラフィック、たとえば、vHBA上のコンテキストのためのRDMA読取リクエスト、物理HBAからのディスク読取データ、およびvHBA上のコンテキストのために、物理HBAから受信したIOCB応答を処理することができる。本実施形態において、ディスク書込データを取得するためのRDMA読取リクエストは、FC/IBドメイン320によって内部で生成することができ、ディスク読取データおよびIOCB応答は、PCIeバス(PCI-Express bus)を介して、物理HBAから受信することができる。

0035

図4は、本発明の一実施形態に従って、I/O装置上でディスク読取操作を開始することを示す図である。図4に示すように、I/O装置400、たとえばFC/IBドメイン401を表すチップは、IBファブリック上のサーバ402から書込インデックス412を取得することができる。

0036

FC/IBドメイン401は、取得した書込インデックス412の値を読取インデックス値のコピーと比較することができる。値が異なる場合、FC/IBドメイン401は、RDMA読取命令413を用いて、サーバ402から1つ以上の要求したIOCB411を取得することができる。これらのRDMA読取命令413は、IBフォーマットに変換することができ、FC/IBドメイン401に関連付けられた外部入来メモリ410内の空きバッファプール420に保存することもできる。

0037

本実施形態において、RDMA読取命令421を入来DRAM410に格納する前に、キューロジックは、RDMA読取リクエストに利用可能なバッファが外部入来メモリ410に存在することを確認することができる。その後、FC/IBドメイン401は、物理HBA403からサーバ402への入来トラフィックを処理することができる。

0038

図5は、本発明の一実施形態に従って、I/O装置上で要求したIOCBを抽出することを示す図である。図5に示すように、I/O装置500、たとえばFC/IBドメイン501を表すチップは、IBファブリック上のサーバ502からRDMA読取応答データを受信することができる。

0039

IBプロトコルを用いて、予期通りにサーバ502からRDMA応答読取データを完全に受信すると、FC/IBドメイン501は、外部入来メモリ510内の空きバッファプール520に保存されたRDMA読取リクエスト521をキューから除外することができる。その後、FC/IBドメイン501は、受信したRDMA読取応答データ512を保存されたRDMA読取リクエスト521と比較することができる。

0040

また、FC/IBドメイン501は、受信したRDMA読取応答データ512を解析することができ、IOCBリクエストをHBA503に転送する前に、RDMA読取応答データ512に含まれたIOCBリクエスト511を抽出することができる。

0041

図6は、本発明の一実施形態に従って、I/O装置上でディスク読取データを処理することを示す図である。図6に示すように、I/O装置600、たとえばFC/IBドメイン601を表すチップは、IOCBリクエスト613をHBA603に転送する前に、I
OCBリクエスト613用のコンテキスト612を開くことができる。

0042

本発明の一実施形態によれば、FC/IBドメイン601は、IOCBリクエスト613用のコンテキスト612を開く前に、IOCBリクエスト命令613用のHBA603からのディスク読取データ611を格納するのに十分なスペース(たとえば、外部入来メモリ610に保留したDRAMスペース621)を有することを確認することができる。したがって、システムは、(たとえば、ICOBリクエスト命令613内の)ディスク読取命令が発行されると、FC/IBドメイン601が物理HBA603にバックプレシャーを与えないことを確認することができる。

0043

FC/IBドメイン601から、ICOBリクエスト命令613内のディスク読取命令を受信した後、HBA603は、(たとえば、FCプロトコルを用いて)ストレージ上で、実際のディスク読取操作を実行することができる。HBA603は、PCI/PCIe書込トランザクションを用いて、ディスク読取データ611をFC/IBドメイン601に返送することができる。

0044

FC/IBドメイン601は、コンテキストを開くときに、ディスク読取命令のために外部入来メモリ610の空きバッファプール620にスペース621を保留しているため、受信したディスク読取データ611を外部入来メモリ610内のパケットバッファに書込む操作を開始することができる。また、FC/IBドメイン601は、ディスク読取データ611を外部入来メモリ610内のパケットバッファに書込む前に、IBヘッダおよびシーケンス番号をディスク読取データ611のために受信したパケットに追加することができる。よって、ディスク読取データ611のために受信した格納パケットは、IBフォーマットであってもよい。

0045

また、FC/IBドメイン601は、完全メッセージ(たとえば、RDMA読取リクエスト)またはIB最大伝送ユニットMTU)パケット(たとえば、RDMA書込専用パケット)が利用可能な場合、格納されたディスク読取データ611を外部入来メモリ610に読出すことができる。その後、FC/IBドメイン601は、外部入来メモリ610内の空きバッファプール620から読出されたIBパケットをディスク読取データ631としてIBファブリック上のサーバ602に送信することができる。

0046

図7は、本発明の一実施形態に従って、I/O装置上でディスク読取操作を完了する処理を示す図である。図7に示すように、たとえば、I/O装置700、たとえばFC/IBドメイン701を表すチップを用いて、IBファブリック上の物理HBA703からサーバ702への入来トラフィックを処理することができる。

0047

ディスク読取データが完全に送信された場合、HBA703は、コンテキスト712に関連付けられた対応のIOCBリクエストが完全に処理されたことを示すIOCB応答711をFC/IBドメイン701に送信することができる。その後、FC/IBドメイン701は、IBヘッダおよびシーケンス番号をIOCB応答711に追加することができ、IOCB応答721を外部入来メモリ710内の空きバッファプール720に格納することができる。

0048

メッセージまたはパケットを送信する準備ができると、FC/IBドメイン701は、IBプロトコルを用いて、ホスト/サーバ702にIOCB応答721を送信することができる。IOCB713応答を受信すると、ホスト/サーバ702は、ディスク読取IOCBリクエスト命令731がハードウェアによって完全に処理されたことを確認することができる。

0049

また、FC/IBドメイン701は、コンテキスト用のIOCB応答721を送信した後、関連するコンテキスト712を閉じることができる(すなわち、状態メモリ消去し、外部入来メモリ710内の保留スペースを削除することができる)。

0050

複数のコンテキスト
図8は、本発明の一実施形態に従って、複数の仮想ホストバスアダプタ(vHBA)を用いて、I/O仮想化をサポートすることを示す図である。図8に示すように、I/O装置800、たとえばFC/IBドメイン801を表すチップを用いて、入来トラフィック830を処理することができる。入来トラフィック830は、物理HBA803からIBファブリック上のサーバ802に転送された複数のパケット、たとえばパケット831〜839を含むことができる。

0051

また、FC/IBドメイン801は、1つ以上のvHBA、たとえば、vHBA A851、vHBA B852およびvHBA C853をサポートすることができる。vHBA A851、vHBA B852およびvHBA C853は、IBサーバ802に関連付けられたキューペア(QP)、たとえばQP A841、QP B842およびQP C843にそれぞれ対応することができる。

0052

さらに、FC/IBドメイン801は、外部入来メモリ810を用いて、1つ以上の受信パケットを格納することができる。FC/IBドメイン801は、単一のメモリインターフェイスの使用をサポートするために、FCコンテキスト情報、たとえばvHBA A851、vHBA B852およびvHBA C853をIBコンテキストリスト、たとえばQP A841、QP B842およびQP C843に合併することができる。

0053

図8に示すように、外部入来メモリ810は、空きバッファプール820を提供することができる。空きバッファプール820は、1つ以上のバッファリスト、たとえばバッファリストA821、バッファリストB822およびバッファリストC823を含む。バッファリストA821、バッファリストB822およびバッファリストC823の各々を用いて、特定のQP(またはvHBA)をターゲットする1つ以上の受信パケットを格納することができる。

0054

たとえば、FC/IBドメイン801は、vHBA A851に関連付けられたバッファリストA821内のQP A841をターゲットするパケット832および839をキューに入れることができる。同様に、FC/IBドメイン801は、vHBA B852に関連付けられたバッファリストB822内のQP B842をターゲットするパケット833および838をキューに入れることができ、vHBA C853に関連付けられたバッファリストC823内のQP C843をターゲットするパケット831をキューに入れることができる。

0055

また、FC/IBドメイン801は、受信した複数のパケット831〜839の状態を保存することができる制御構造811を含むことができる。さらに、FC/IBドメイン801は、読取ロジック812を用いて、格納されたパケット831〜839のうち1つ以上を読出すことができる。

0056

本発明の一実施形態によれば、FC/IBドメイン801は、IBドメイン内のQPのために、複数のディスク読取命令、RDMA読取リクエスおよびRC送信命令多重化をサポートするために、vHBA A851〜vHBA C853内の複数のコンテキストを開くことができる。

0057

図9は、本発明の一実施形態に従って、仮想ホストバスアダプタ(vHBA)において
、複数のコンテキストをサポートすることを示す図である。図9に示すように、I/O装置、たとえばFC/IBドメイン900を表すチップは、たとえば、QP904のために物理HBA903上で複数のディスク読取命令を実行するために、単一のvHBA901内の複数のコンテキスト、たとえばコンテキストI 910およびコンテキストII 920を開くことができる。

0058

たとえば、コンテキストI 910は、物理HBA903から受信したいくつかのパケット、たとえばC1D1 911、C1D2 912およびC1D3 913を含むことができる。C1D1 911は、コンテキストI 910用のディスク読取データD1を含み、C1D2 912は、コンテキストI 910用のディスク読取データD2を含み、C1D3 913は、コンテキストI 910用のディスク読取データD3を含むことができる。

0059

また、コンテキストII 920は、物理HBA903から受信したいくつかのパケットC2D1 921およびC2D2 922を含むことができる。C2D1 921は、コンテキストII 920用のディスク読取データD1を含み、C2D2 922は、コンテキストII 920用のディスク読取データD2を含むことができる。

0060

また、FC/IBドメイン900は、物理HBA903から受信したパケットをIBファブリック上のQP904に送信する前に、このパケットに対応のシーケンス番号(PSN)および異なるIBヘッダを追加することができる。

0061

本発明の一実施形態によれば、同一のQPたとえば(vHBA901に関連付けられた)QP904をターゲットするすべてのパケットは、IBドメイン内で単一PSNスペース902を共有することができる。図9に示すように、PSNスペース902において、パケットをP0、P1、・・・、P(N)の順序編成することができる。ここでは、P1=P0+1、P2=P1+1、・・・、P(N)=P(N−1)+1。

0062

一方、IBドメイン内でPSNスペース902を共有する場合、動作中に、IBドメイン内のPSN番号割当体系を用いて発信パケットの順序を変更することができないため、異なるコンテキストにおいて、IBヘッダおよびシーケンス番号を単一のメモリインターフェイスに基づいてHBA803から受信したパケットに追加することを複雑化する可能性がある。

0063

図9に示すように、コンテキストI 910用のディスク読取データが完全に処理される前に、コンテキストII 920用のディスク読取データが入来すると、vHBA901にヘッドラインブロッキングという問題が生じる可能性がある。たとえば、システムが別のディスク書込操作を行っている最中に、FC/IBドメイン900がディスク書込操作のためにRDMA読取リクエストをスケジュールしようとするときに、このような問題が生じる。

0064

図10は、本発明の一実施形態に従って、オンチップメモリを用いて、外部メモリ上でキューに入れられたパケットの状態を保存することを示す図である。図10に示すように、I/O装置1000、たとえばFC/IBドメイン1000を表すチップは、単一のvHBA/QP内の複数のコンテキスト、たとえばコンテキストI 1010およびコンテキストII 1020を開くことができる。各コンテキストは、1つ以上のパケットを含むことができる。たとえば、コンテキストI 1010は、パケットC1D1 1011、C1D2 1012およびC1D3 1013を含み、コンテキストII 1020は、パケットC2D1 1021およびC2D2 1022を含むことができる。

0065

本発明の一実施形態によれば、FCは/IBドメイン1000は、シーケンス番号およびさまざまなIBヘッダを物理HBA1005から受信した各パケットに追加することができる。IBヘッダは、特定のパケットをIBファブリック1004に送信するときに、この特定のパケットに適用することができるIB命令を含むことができる。

0066

たとえば、コンテキスト用のディスク読取データのサイズがIB最大伝送ユニット(MTU)のサイズと同一である場合、IBヘッダ内のキューに入れられたIB命令は、コンテキストメモリに指定された仮想アドレス(VA)を有する「RDMA書込専用」命令にすることができる。逆に、所定のコンテキスト用のディスク読取データのサイズがIB MTUのサイズよりも大きい場合、ディスク読取データを複数のパケットに分割することができる。各パケットのIBヘッダ内のキューに入れられた命令は、コンテキストメモリにより指定されたVAを有する「最初のRDMA書込」命令、「中間のRDMA書込」命令および「最後のRDMA書込」命令のいずれか1つであってもよい。ディスク読取データのサイズに応じて、「中間のRDMA書込」命令を有するようにパケットをキューに入れなくてもよく、または「中間のRDMA書込」命令を有するように複数のパケットをキューに入れてもよい。

0067

図10に示すように、初期PSNは、P0であり、ディスク読取データは、IBMTUよりも大きい。第1のパケット(C1D1 1011)を受信すると、システムは、PSNとしてのP0および「最初のRDMA書込」命令をパケットに追加することができる。次のパケット(C1D2 1012)を受信すると、システムは、PSNとしてのP1(すなわち、P0+1)および「中間のRDMA書込」命令をパケットに追加することができる。第3のパケット(C2D1 1021)を受信すると、システムは、PSNとしてのP2(すなわち、P1+1)および「最初のRDMA書込」命令をパケットに追加することができる。さらに、パケット(C2D2 1022)を受信すると、システムは、PSNとしてのP3(すなわち、P2+1)および「最後のRDMA書込」命令をパケットに追加することができる。

0068

しかしながら、上記一連の操作には、整合性問題が存在している。パケットC1D2 1012に追加されたIB命令は、「中間のRDMA書込」命令である。システムは、ディスク読取データのサイズに応じて、次のパケットに追加されたIB命令が「中間のRDMA書込」命令または「最後のRDMA書込」命令のいずれかであると予期している。しかしながら、図10に示すように、次のパケットC2D1 1021が異なるコンテキストII 1020からのものであるため、FC/IBドメイン1000は、新たな命令、たとえば、「最初のRDMA書込」命令または「RDMA書込専用」命令をパケット(そのPSNが正確であっても)に追加することができる。また、FC/IBドメイン1000が、別のコンテキストのために記述子の取得またはRC送信IOCB応答を行うため、RDMA読取リクエストをキューに入れようとする際に、同様の問題が生じる可能性もある。

0069

この問題を解決するために、システムは、既にキューに入れられたパケットに関連付けられたIB命令を更新することができる。たとえば、FC/IBドメイン1000がパケットC2D1 1021を受信した後、システムは、C1D2 1012のIB命令、すなわち「中間のRDMA書込」命令1007を「最後のRDMA書込」命令1008に変更することができる。

0070

本発明の一実施形態によれば、整合性を確保するために、FC/IBドメイン1000は、オンチップメモリ1002を用いて、外部メモリ1001上でキューに入れられたパケット1006の状態1009を格納することができる。

0071

このオンチップメモリ1002は、異なるパースペクティブ(perspective)に有益で
あり得る。まず、パケットがキューに入れられ、必要に応じてパケットに関連付けられたIB命令が更新された場合に限り、外部メモリからパケットを読取りおよびパケットをホストに送信するように、読取ロジックを確保することができる。次に、複数のコンテキストをサポートするために、既にキューに入れられたパケットに関連付けられたIB命令を必要に応じて更新することができる。

0072

たとえば、オンチップメモリ1002は、2ビットの幅(および64Kの深さ)を有することができる。オンチップメモリ1002内のエントリの第1ビット、たとえばビット0は、IB命令を変更または更新する必要があるか否かを示し、第2ビット、たとえばビット1は、FC/IBドメイン1000の読取ロジックが外部メモリ1001からキューに入れられたパケットを取出すことができるか否かを示すことができる。

0073

以下の表1は、一連のパケットが到着する場合に、例示のオンチップメモリに格納された異なるパケットの状態を示している。

0074

0075

上記の表1に示すように、第1のパケット、すなわちC2D1をキューに入れるときに、オンチップステートメモリは、2′b00である。このとき、読取ロジックは、このパケットを読取ることができない。その理由は、パケットが他のコンテキストから来る場合、システムがこのパケットの命令を変更する必要があるからである。

0076

次のパケットC2D2が来るときに、前のパケット、すなわちC2D1のオンチップ状態は、2′b10に変更されている。このとき、パケットは、正常にキューに入れられ、読取ロジックは、このパケットを読出すことができる。この場合、C2D2が同様のコンテキストII(C2)から来たため、命令を変更する必要がない。

0077

さらに、第3のパケット、すなわちC1D1が来るときに、C2D2のオンチップメモリの状態は、2′b11に変更されている。このとき、パケットは、キューに入れられ読取側で命令を変更する必要がある。読取ロジックは、このパケットを読出すことができ、このパケットを送信する前に、命令を「中間のRDMA書込」命令から「最後のRDMA書込」命令に変更することができる。

0078

図11は、本発明の一実施形態に従って、単一のメモリインターフェイスを用いて、入力/出力(I/O)仮想化をサポートすることを示す例示的なフローチャートである。図11に示すように、ステップ1101において、システムは、ネットワークファブリック上のサーバに関連付けられ、且つ、複数のパケットバッファを含む外部メモリに関連付け
られているチップを提供することができる。また、ステップ1102において、システムは、物理ホストバスアダプタ(HBA)から受信したディスク読取データを含む1つ以上のパケットの状態をオンチップメモリに保存することができる。また、ステップ1103において、システムは、外部メモリ上の複数のパケットバッファ内の1つ以上のパケットをキューに入れ、1つ以上のパケットの状態に基づいて、外部メモリから1つ以上のパケットを読出し、およびネットワークファブリック上のサーバに1つ以上のパケットを送信するように、チップを動作させることができる。

0079

ハイブリッドリンクリスト構造
本発明の一実施形態によれば、システムは、ハイブリッドリンクリスト構造を用いて、仮想ホストバスアダプタ(vHBA)内の複数のコンテキストに関連付けられた入来トラフィックを処理することができる。このハイブリッドリンクリスト構造は、主要リンクリストおよび一時リンクリストを含むことができる。

0080

図12は、本発明の一実施形態に従って、空きバッファプールを用いて、複数の仮想ホストバスアダプタ(vHBA)をサポートすることを示す図である。図12に示すように、I/O装置1200、たとえばFC/IBドメイン1204を表すチップは、たとえば、空きバッファプール1210を用いて、異なる仮想ホストバスアダプタ(vHBA)、たとえばvHBA I 1201およびvHBA II 1202に関連付けられ得る入来トラフィック1203を処理することができる。

0081

また、各vHBAは、入来トラフィック1203から受信した各種パケットを空きバッファプール1210内のパケットバッファに格納するために、バッファポインタの1つ以上のリンクリストを保存することができる。たとえば、vHBA I 1201は、主要リンクリストI 1211を保存することができ、vHBA II 1202は、主要リンクリストII 1212を保存することができる。

0082

図13は、本発明の一実施形態に従って、ハイブリッドリンクリスト構造を用いて、さまざまなディスク読取操作をサポートすることを示す図である。図13に示すように、I/O装置1300、たとえばFC/IBドメインを表すチップは、複数のディスク読取操作を並列で実行するために、単一のvHBA1303内の複数のコンテキスト、たとえばコンテキストA 1301およびコンテキストB 1302を開くことができる。

0083

本発明の一実施形態によれば、FC/IBドメインは、各ディスク読取操作のために、オンチップメモリ上で、コンテキストテーブルを定義することができる。たとえば、FC/IBドメインは、コンテキストA 1301のディスク読取データを受信した場合、オンチップメモリ1310上で、コンテキストテーブルA 1311を開くことができる。コンテキストテーブルA 1311は、空きバッファプール1320から割当てられた1つ以上のパケットバッファに指向するバッファポインタの一時リンクリストを保存することができる。また、コンテキストテーブルA 1311は、所定のトランザクション用の仮想アドレスを保存することもできる。

0084

コンテキストA 1301の入来データが来るときに、ディスクデータをIBヘッダおよびPSN番号とともに外部SDRAMメモリ内の空きバッファプール1320に書込むことができる。図13に示すように、コンテキストメモリ内のバッファポインタの一時リンクリスト1321が更新されるが、所定のvHBA用のバッファポインタの主要リンクリスト1330が変更されない。

0085

本発明の一実施形態によれば、異なるディスク読取操作のために、複数のコンテキストを開くことができる。新たに開いたコンテキストのディスク読取データが来るときに、シ
ステムは、外部SDRAMメモリから以前に開かれたコンテキストに格納されたデータを読出すことができ、必要に応じて、コンテキストリスト末尾のIBヘッダ内の命令を更新することができる。たとえば、所定のコンテキストのためのディスク読取データがIBMTUよりも大きいときに、IBヘッダにキューに入れられた命令が「最初のRDMA書込」命令である場合、その命令を「RDMA書込専用」命令に変更することができ、IBヘッダにキューに入れられた命令が「中間のRDMA書込」命令である場合、その命令を「最後のRDMA書込」命令に変更することができる。

0086

図13に示すように、FC/IBドメインが異なるコンテキストB 1302からデータを受信する場合、一時リンクリスト1321をvHBA1303の主要リンクリスト1330に合併することができる。たとえば、vHBA1303の主要リンクリスト1330のテールポインタを一時リンクリスト1321のヘッドポインタに変更することができ、一時リンクリスト1321のテールポインタを主要リンクリスト1330の新たなテールポインタになる。よって、新たなコンテキストのデータは、新たなPSNを有する新たなコンテキストメモリに書込まれることができる。それに応じて、そのコンテキストの一時ポインタは、更新されることができる。

0087

同様に、システムは、新たなコンテキスト内の「RDMA書込専用」命令、「最後のRDMA書込」命令、「送信専用」命令、およびRDMA読取リクエストなどの命令を実行する必要がある場合、以前に開かれたコンテキストを閉じ、一時リンクリスト1321を主要リンクリスト1330に合併することができる。

0088

図14は、本発明の一実施形態に従って、ハイブリッドのリンクリスト構造を用いて、ヘッドラインブロッキングを回避することを示す図である。図14に示すように、コンテキスト1401を閉じ、vHBAに1403の主要リンクリスト1430を更新した後、I/O装置1400、たとえばFC/IBドメインを表すチップは、コンテキストB 1402のために、オンチップメモリ1410内の新たなコンテキストテーブルB 1412を開くことができる。コンテキストテーブルB 1412は、空きバッファプール1420から割当てられたパケットバッファに指向するバッファポインタを含む新たな一時リンクリストB 1422を保存することができる。

0089

図14に示すように、コンテキストB 1402内の受信したディスク読取データ(またはRDMA読取リクエスト)に対する処理は、コンテキストA 1401内の受信したディスク読取データの処理によってブロックされるため、システムは、ヘッドラインブロッキングを回避することができる。よって、所定のvHBA内の異なるコンテキストのディスク読取データを並列に処理することができる。

0090

図15は、本発明の一実施形態に従って、ハイブリッドリンクリスト構造を用いて、ヘッドラインブロッキングを回避することを示す例示的なフローチャートである。図15に示すように、ステップ1501において、システムは、ネットワーク環境内の1つ以上の仮想ホストバスアダプタ(vHBA)に関連付けられた複数のパケットバッファを含む空きバッファプールを提供することができる。各々のvHBAは、空きバッファプール内の1つ以上のパケットバッファに指向するバッファポインタの主要リンクリストを保存する。ステップ1502において、システムは、入力/出力(I/O)装置に関連付けられたオンチップメモリ上で、コンテキストテーブルを定義することができる。コンテキストテーブルは、ディスク読取操作のために空きバッファプールから割当てられた1つ以上のパケットバッファに指向するバッファポインタの一時リンクリストを保存する。ステップ1503において、システムは、I/O装置がディスク読取操作を実行する物理ホストバスアダプタ(HBA)からディスク読取データを受信すると、コンテキストテーブルを開き、一時リンクリストを更新し、およびコンテキストテーブルを閉じたと、バッファポイン
タの一時リンクリストをバッファポインタの主要リンクリストに合併するように、I/O装置を動作させることができる。

0091

一体化メモリ構造
本発明の一実施形態によれば、ディスク読取データがHBAチップから送信されるときに、システムは、ディスク読取データを一体化メモリ構造内のさまざまなデータバッファに格納することができる。

0092

図16は、本発明の一実施形態に従って、I/O装置のために2次元リンクリスト構造をサポートすることを示す図である。図16に示すように、システムは、空きバッファプール1600内の2次元リンクリスト1610を用いて、入来パケットバッファを管理することができる。2次元リンクリスト1610は、複数のエントリを含むことができる。各エントリは、スーパーブロック(たとえば、スーパーブロック1601〜1609)であってもよい。

0093

本発明の一実施形態によれば、スーパーブロック1601〜1609は、連続したメモリ位置に格納された複数のパケットを表すことができる。また、スーパーブロック1601〜1609の各々は、バッファ管理のために、内部でパケットバッファリストに指向することができる。したがって、オンチップリソース使用の観点から、2次元リンクリスト構造は、非常に効率的である。システムは、バッファされるパケットの数を最大にしながら、オンチップメモリ上のリンクリストのサイズを最小にすることができる。

0094

たとえば、さまざまなサイズの(オーバーヘッドを含む)IBパケットを収容するために、2次元リンクリスト1610は、8Kのスーパーブロックを含むことができる。また、各スーパーブロックは、(各々が8KBのサイズを有する)8つのパケットを保存することができる64KB(512Kb)のサイズを有することができる。図16に示すように、スーパーブロック1601は、8つのパケットバッファ、すなわち、パケットバッファ1611〜1618を含むことができる。

0095

2次元リンクリスト1610によって、FC/IBドメインは、異なるQPをターゲットする読取データディスクをIBドメインに格納することができる。図16に示すように、FC/IBドメインは、異なるポインタを用いて、2次元リンクリスト1610内のさまざまなスーパーブロックのリンクリストにアクセスすることができる。たとえば、FC/IBドメインは、スーパーブロック1602、スーパーブロック1604およびスーパーブロック1608を含むスーパーブロックのリンクリストに指向するQP Aヘッドポインタ1621(および/またはQP Aテールポインタ1622)を保存することができる。また、FC/IBドメインは、スーパーブロック1606、スーパーブロック1605およびスーパーブロック1609を含むスーパーブロックのリンクリストに指向するQP Bヘッドポインタ1623(および/またはQP Bテールポインタ1624)を保存することができる。

0096

本発明の一実施形態によれば、システムは、2次元ハイブリッドリンクリスト1610を所定のインフィニバンド(IB)RC QP接続の1次元リンクリストと動的に合併することによって、外部DRAMメモリの効率的な使用をサポートすることができる。したがって、システムは、小さいサイズのパケットを固定サイズのスーパーブロックに格納することによるメモリスペースの浪費を避けることができる。

0097

たとえば、FC/IBドメインは、ディスク読取リクエストを実行するために、空きバッファプール1600にバッファの有無を照会することができる。空きバッファプール1600に十分なパケットバッファがある場合に、FC/IBドメインは、物理HBAにデ
スク読取IOCBリクエストを発行することができる。ディスク読取リクエストに要求されたバッファは、空きバッファプール1600に保留され、現在のコンテキストがFC/IBドメインによって解放されるまで、他の後続のリクエストに使用されない。

0098

また、システムは、RDMA読取リクエストを保存するバッファ(たとえば、4Kバッファ)のリストを定義することができる。システムは、RDMA読取リクエストが発行されるたびに、RDMA読取リクエストに利用可能なスペースが外部メモリに保留されており、RDMA読取リクエストがRDMA書込操作にブロックされないことを保証することができる。

0099

2次元リンクリスト1610のみを使用する場合、システムは、RDMA読取リクエストに128個のキューペア(またはvHBA)に共有される4Kのパケットバッファを提供するために、64K(スーパーブロックのサイズ)×4K×128バイトのスペースをメモリに確保する必要がある。このスペースが8K(パケットバッファのサイズ)×4K×128バイトであるパケットバッファのメモリ使用量よりも実質的に多いため、この手法は、メモリを浪費する。

0100

図17は、本発明の一実施形態に従って、I/O装置のためにメモリの効率的な使用をサポートすることを示す図である。図17に示すように、I/O装置1700、たとえばFC/IBドメインを表すチップは、空きバッファプール1701を用いて、さまざまなパケットのキュー入れ(1730)をサポートすることができる。空きバッファプール1701は、スーパーブロック1711〜1719を包含する2次元リンクリスト1710、およびパケットバッファ1721〜1729を包含する1次元リンクリスト1720を含むことができる。この2次元リンクリスト1710は、図16に示された2次元リンクリスト1610と類似してもよい。

0101

本発明の一実施形態によれば、空きバッファプール1701において、異なる種類のトランザクションをキューに入れることができる。たとえば、これらのトランザクションを用いて、RDMA書込命令1742およびRDMA読取リクエスト1741を実行することができる。

0102

パケットをキューに入れた(1730)場合、トランザクションの種類に基づいて、2次元リンクリスト1710からまたは単一の1次元リンクリスト1720から、空きバッファを割当てることができる。

0103

また、システムは、さまざまなバッファされたパケットの状態を保存するために、チップ上でリンクリストの制御構造1740を保有することができる。制御構造1740は、たとえば、メモリスーパーブロック位置のヘッドポインタ(たとえば、13ビットのSBLHEAD)、スーパーブロック内のパケットオフセット位置のヘッドポインタ(たとえば、3ビットのPKTHEAD)、メモリスーパーブロック位置のテールポインタ(たとえば、13ビットのSBLKTAIL)、スーパーブロック内のパケットオフセット位置のテールポインタ(たとえば、3ビットのPKTTAIL)、およびパケットバッファが2次元リンクリストから割当てられているかまたは1次元リンクリストから割当てられているかを示すフラグ(たとえば、1ビットのLISTTYPE)を格納することができる。また、制御構造1740は、QP/vHBAの数に基づいて深さ情報を格納することができ、必要な制御情報に基づいて幅情報を格納することができる。

0104

本発明の一実施形態によれば、システムは、異なるキュー入れシナリオをサポートすることができる。

0105

キューに入れられたトランザクションがRDMA書込命令用のものである場合、システムは、2次元リンクリスト1710からバッファまたはスーパーブロックを取得することができる。

0106

逆に、キューに入れられたトランザクションがRDMA読取命令用のものである場合、以前にキューに入れられたトランザクションに割当てられたスーパーブロックにパケットバッファが残されていないときに、システムは、1次元リンクリスト1720からバッファを取得することができる。

0107

一方、RDMA書込操作が進行中に、RDMA読取リクエスト用のトランザクションがキューに入れられる場合もある。利用可能なパケットバッファが存在する場合、システムは、RDMA書込動作に割当てられたスーパーブロック内の現在のパケット位置で、RDMA読取リクエストをキューに入れることができる。

0108

また、特定のQP/vHBAのために、単一リンクリスト1720からのパケットバッファを保留することができる。単一リンクリスト1720から保留されたバッファは、RDMA書込パケットまたはRDMA読取リクエストパケットのいずれかに使用されることができる。さらに、システムは、制御メモリ内のLISTTYPEフィールドにフラグを付けることができる。よって、デキュー(dequeue)ロジックおよび/または読取ロジッ
クは、1つのパケットが単一リンクリスト1720のキューに入れられたことを知ることができる。

0109

このように、システムは、効率的なパケット処理を実現することができ、外部メモリの浪費を回避することができる。

0110

図18は、本発明の一実施形態に従って、コンピューティング環境において、効率的なパケット処理をサポートすることを示す例示的なフローチャートである。図18に示すように、ステップ1801において、システムは、2次元リンクリストおよび1次元リンクリストを含む空きバッファプールをメモリに提供することができる。また、ステップ1802において、システムは、2次元リンクリストの各エントリが連続したメモリ位置に複数のパケットバッファを有すること、および1次元リンクリストの各エントリが単一のパケットバッファを有することを可能にする。次に、1803において、I/O装置は、物理ホストバスアダプタ(HBA)から受信したディスク読取データを空きバッファプールに格納することができる。

0111

本発明の一実施形態は、コンピューティング環境において、I/O仮想化をサポートするためのシステムを提供する。このシステムは、コンピューティング環境内の1つ以上の仮想ホストバスアダプタ(vHBA)に関連付けられた複数のパケットバッファを含む空きバッファプールを含み、vHBAの各々は、1つ以上のパケットバッファに指向するバッファポインタの主要リンクリストを空きバッファプールに保存し、入力/出力(I/O)装置に関連付けられたオンチップメモリ上で定義されたコンテキストテーブルを含み、コンテキストテーブルは、ディスク読取操作のために、空きバッファプールから割当てられた1つ以上のパケットバッファに指向するバッファポインタの一時リンクリストを保存する。I/O装置は、ディスク読取操作を実行する物理ホストバスアダプタ(HBA)からすディスク読取データを受信すると、コンテキストテーブルを開き、バッファポインタの一時リンクリストを更新し、およびコンテキストテーブルが閉じられると、バッファポインタの一時リンクリストをバッファポインタの主要リンクリストに合併するように動作する。

0112

上記に提供されたシステムにおいて、I/O装置は、ディスク読取操作を開始するよう
に、インフィニバンド(IB)ファブリック上のサーバを動作させる。

0113

上記に提供されたシステムにおいて、I/O装置は、IBヘッダとシーケンス番号とを物理HBAから受信した各パケットに追加する。

0114

上記に提供されたシステムにおいて、I/O装置は、完全メッセージまたはIB最大伝送ユニット(MTU)パケットを受信すると、外部メモリに格納されたディスク読取データを読出すように動作する。

0115

上記に提供されたシステムにおいて、各仮想HBAは、IBドメインにおいて、異なるパケットシーケンス番号(PSN)スペースを保留する。

0116

上記に提供されたシステムにおいて、I/O装置は、vHBAに関連付けられた異なるディスク読取操作のために、異なるコンテキストテーブルを保存する。

0117

上記に提供されたシステムにおいて、コンテキストテーブルは、I/O装置が仮想HBAに関連付けられた別のコンテキストテーブルを開くと、閉じられる。

0118

上記に提供されたシステムにおいて、別のコンテキストテーブルは、空きバッファプールから割当てられた1つ以上のパケットバッファに指向するバッファポインタの新たな一時リンクリストを保存する。

0119

上記に提供されたシステムにおいて、I/O装置は、仮想HBAが別のディスク読取操作からデータを受信すると、別のコンテキストテーブルを開く。

0120

上記に提供されたシステムにおいて、I/O装置は、仮想HBAが書込専用命令、RDMA書込最終命令、送信専用命令およびRDMA読取リクエスト命令のうち1つの命令を受信すると、別のコンテキストテーブルを開く。

0121

本発明の一実施形態は、コンピューティング環境において、効率的なパケット処理をサポートするための方法を提供する。この方法は、コンピューティング環境内の1つ以上の仮想ホストバスアダプタ(vHBA)に関連付けられた複数のパケットバッファを含む空きバッファプールを提供するステップを含み、vHBAの各々は、1つ以上のパケットバッファに指向するバッファポインタの主要リンクリストを空きバッファプールに保存し、入力/出力(I/O)装置に関連付けられたオンチップメモリにおいて、コンテキストテーブルを定義するステップを含み、コンテキストテーブルは、ディスク読取操作のために、空きバッファプールから割当てられた1つ以上のパケットバッファに指向するバッファポインタの一時リンクリストを保存し、ディスク読取操作を実行する物理ホストバスアダプタ(HBA)からディスク読取データを受信すると、コンテキストテーブルを開き、バッファポインタの一時リンクリストを更新し、およびコンテキストテーブルが閉じられると、バッファポインタの一時リンクリストをバッファポインタの主要リンクリストに合併するように、I/O装置を動作させるステップを含む。

0122

上記に提供された方法は、ディスク読取操作を開始するように、インフィニバンド(IB)ファブリック上のサーバを動作させる。

0123

上記に提供された方法は、IBヘッダとシーケンス番号とをHBAから受信した各パケットに追加するステップをさらに含む。

0124

上記に提供された方法は、完全メッセージまたはIB最大伝送ユニット(MTU)パケ
ットを受信すると、外部メモリに格納されたディスク読取データを読出すステップをさらに含む。

0125

上記に提供された方法は、IBドメインにおいて、異なるパケットシーケンス番号(PSN)スペースを保留するように、各仮想HBAを構成するステップをさらに含む。

0126

上記に提供された方法は、vHBAに関連付けられた異なるディスク読取操作のために、異なるコンテキストテーブルを保存するステップをさらに含む。

0127

上記に提供された方法は、I/O装置が仮想HBAに関連付けられた別のコンテキストテーブルを開くと、コンテキストテーブルを閉じるステップをさらに含む。

0128

上記に提供された方法は、空きバッファプールから割当てられた1つ以上のパケットバッファに指向するバッファポインタの新たな一時リンクリストを保存するように、別のコンテキストテーブルを構成するステップをさらに含む。

0129

上記に提供された方法は、仮想HBAが別のディスク読取操作からデータ、または書込専用命令、RDMA書込最終命令、送信専用命令およびRDMA読取リクエスト命令のうち1つの命令を受信すると、別のコンテキストテーブルを開くステップをさらに含む。

0130

本発明の一実施形態は、命令を格納する非一時的な機械読取可能記媒体を提供する。これらの命令は、実行されると、以下のステップをシステムに実行させ、当該以下のステップは、ネットワーク環境内のつ以上の仮想ホストバスアダプタ(vHBA)に関連付けられた複数のパケットバッファを含む空きバッファプールを提供するステップを含み、vHBAの各々は、1つ以上のパケットバッファに指向するバッファポインタの主要リンクリストを空きバッファプールに保存し、入力/出力(I/O)装置に関連付けられたオンチップメモリにおいて、コンテキストテーブルを定義するステップを含み、コンテキストテーブルは、ディスク読取操作のために、空きバッファプールから割当てられた1つ以上のパケットバッファに指向するバッファポインタの一時リンクリストを保存し、ディスク読取操作を実行する物理ホストバスアダプタ(HBA)からディスク読取データを受信すると、コンテキストテーブルを開き、バッファポインタの一時リンクリストを更新し、およびコンテキストテーブルが閉じられると、バッファポインタの一時リンクリストをバッファポインタの主要リンクリストに合併するように、I/O装置を動作させるステップを含む。

0131

本発明の一実施形態は、コンピューティング環境において、入力/出力(I/O)仮想化をサポートするためのシステムを提供する。このシステムは、メモリ内の空きバッファプールを含み、空きバッファプールは、2次元リンクリストおよび1次元リンクリストを備え、2次元リンクリストの各エントリは、連続したメモリ位置で複数のパケットバッファを含み、1次元リンクリストの各エントリは、単一のパケットバッファを含み、I/O装置は、空きバッファプールを用いて、物理ホストバスアダプタ(HBA)から受信したディスク読取データを保存するように動作する。

0132

上記に提供されたシステムにおいて、I/O装置は、ディスク読取操作を開始するように、インフィニバンド(IB)ファブリック上のサーバを動作させる。

0133

上記に提供されたシステムにおいて、I/O装置は、1つ以上のIBヘッダとシーケンス番号とを物理HBAから受信した各パケットに追加する。

0134

上記に提供されたシステムにおいて、I/O装置は、完全メッセージまたはIB最大伝
送ユニット(MTU)パケットを受信すると、外部メモリに格納されたディスク読取データを読出すように動作する。

0135

上記に提供されたシステムにおいて、I/O装置は、1つ以上の仮想ホストバスアダプタ(vHBA)をサポートしており、各vHBAは、IBドメインにおいて、異なるパケットシーケンス番号(PSN)スペースを保留する。

0136

上記に提供されたシステムにおいて、I/O装置は、パケットがリモートダイレクトメモリアクセス(RDMA)書込トランザクションまたはRDMA読取リクエストトランザクションのいずれかを実行する場合、このパケットを外部メモリにキュー入れするように動作する。

0137

上記に提供されたシステムにおいて、I/O装置は、キューに入れられたパケットがRDMA書込トランザクション用のものである場合、2次元リンクリストからスーパーブロックを割当てるように動作する。

0138

上記に提供されたシステムにおいて、I/O装置は、I/O装置は、キューに入れられたパケットがRDMA読取リクエストトランザクション用のものであり、且つ、スーパーブロックに1つ以上のパケットバッファが残された場合、1次元リンクリストからパケットバッファを割当てるように動作する。

0139

上記に提供されたシステムにおいて、I/O装置は、キューに入れられたパケットがRDMA読取リクエストトランザクション用のものであり、且つ、スーパーブロックに1つ以上のパケットバッファが残された場合、2次元リンクリストからスーパーブロックを割当てるように動作する。

0140

上記に提供されたシステムにおいて、I/O装置は、vHBAのために、単純リンクリストにおいてパケットバッファを保留するように動作する。

0141

本発明の一実施形態は、ネットワーク環境において、効率的なパケット処理をサポートするための方法を提供する。この方法は、メモリに空きバッファプールを提供するステップを含み、空きバッファプールは、2次元リンクリストおよび1次元リンクリストを含み、2次元リンクリスト各エントリを連続したメモリ位置で複数のパケットバッファを含み、および1次元リンクリストの各エントリを単一のパケットバッファを含むようにするステップを含み、I/O装置を介して、空きバッファプールを用いて、物理ホストバスアダプタ(HBA)から受信したデータ読取ディスクを保存するステップを含む。

0142

上記に提供された方法は、ディスク読取操作を開始するように、インフィニバンド(IB)ファブリック上のサーバを動作させるステップをさらに含む。

0143

上記に提供された方法は、1つ以上のIBヘッダとシーケンス番号とを物理HBAから受信した各パケットに追加するステップをさらに含む。

0144

上記に提供された方法は、完全メッセージまたはIB最大伝送ユニット(MTU)パケットを受信すると、外部メモリに格納されたディスク読取データを読出すステップをさらに含む。

0145

上記に提供された方法は、1つ以上の仮想ホストバスアダプタ(vHBA)をサポートするステップをさらに含み、各vHBAは、IBドメインにおいて、異なるパケットシーケンス番号(PSN)スペースを保留する。

0146

上記に提供された方法は、パケットがリモートダイレクトメモリアクセス(RDMA)書込トランザクションまたはRDMA読取リクエストトランザクションのいずれかを実行する場合、このパケットを外部メモリにキュー入れするステップをさらに含む。

0147

上記に提供された方法は、キューに入れられたパケットがRDMA書込トランザクション用のものである場合、2次元リンクリストからスーパーブロックを割当てるステップをさらに含む。

0148

上記に提供された方法は、キューに入れられたパケットがRDMA読取リクエストトランザクション用のものであり、且つ、スーパーブロックに1つ以上のパケットバッファが残された場合、1次元リンクリストからパケットバッファを割当てるステップをさらに含む。

0149

上記に提供された方法は、キューに入れられたパケットがRDMA読取リクエストトランザクション用のものであり、且つ、スーパーブロックに1つ以上のパケットバッファが残された場合、2次元リンクリストからスーパーブロックを割当てるステップと、
vHBAのために、単純リンクリストにおいてパケットバッファを保留するステップとをさらに含む。

0150

本発明の一実施形態は、命令を格納する非一時的な機械読取可能記憶媒体を提供する。命令は、実行されると、以下のステップをシステムに実行させ、当該以下のステップは、メモリに空きバッファプールを提供するステップを含み、空きバッファプールは、2次元リンクリストおよび1次元リンクリストを含み、2次元リンクリスト各エントリを連続したメモリ位置で複数のパケットバッファを含み、および1次元リンクリストの各エントリを単一のパケットバッファを含むようにするステップを含み、I/O装置を介して、空きバッファプールを用いて、物理ホストバスアダプタ(HBA)から受信したデータ読取ディスクを保存するステップを含む。

0151

本発明の多くの特徴は、ハードウェア、ソフトウェアファームウェア、またはそれらの組合せの内部で、またはそれらを用いて、またはそれらの援助をもって実現されることができる。したがって、本発明の特徴は、(たとえば、1つ以上のプロセッサを含む)処理システムを用いて実施されることができる。

0152

本発明の特徴は、コンピュータプログラム製品の内部で、またはそれを用いて、またはその援助をもって実現されることができる。コンピュータプログラム製品は、本明細書に記載の特徴のいずれかを実現するように、処理システムをプログラムさせるために使用することができる命令をその上に/中に格納する記憶媒体またはコンピュータ読取可能媒体である。記憶媒体は、フロッピーディスク登録商標)、光ディスク、DVD、CD−ROMマイクロドライブおよび光磁気ディスクを含む任意の種類のディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAMフラッシュメモリデバイス磁気または光カード、(分子メモリICを含む)ナノシステム、または指令および/またはデータの格納に適した任意の種類の媒体またはデバイスを含むことができるが、これらに限定されない。

0153

機械読取可能媒体のいずれかに格納された本発明の特徴は、処理システムのハードウェアを制御するため、および本発明の結果を利用する他の機構対話できる処理システムを可能にするために、ソフトウェアおよび/またはファームウェアに組込むことができる。このようなソフトウェアまたはファームウェアは、アプリケーションコードデバイスドライバオペレーティングシステム実行環境コンテナ含むことができるが、これらに
限定されない。

0154

また、本発明の特徴は、たとえば特定用途向け集積回路ASIC)のようなハードウェア部品を用いて、ハードウェアにおいて実現されてもよい。本明細書に記載の機能を実行するようにハードウェア状態マシン実装することは、当業者には明らかであろう。

0155

さらに、本発明は、1つ以上の従来の汎用または専用デジタルコンピュータコンピューティング装置コンピューティング機械、または1つ以上のプロセッサ、メモリおよび/または本開示の教示に従ってプログラムされたコンピュータ読取可能記憶媒体を含むマイクロプロセッサを用いて、簡便に実施することができる。ソフトウェア分野の当業者には明らかなように、本開示の教示に基づいて、熟練したプログラマは、適切なソフトウェアコーディングを容易に用意することができる。

0156

上記で本発明のさまざまな実施形態を説明したが、これらの実施形態は、限定の目的ではなく、例示として提示されていることが理解すべきである。本発明の精神および範囲から逸脱することなく、本発明に形式上および詳細上のさまざまな変更を行うことができることは、当業者には明らかであろう。

0157

本発明は、特定の機能およびそれらの関係を示す機能的構造ブロックを用いて説明しました。説明の便宜のために、これらの機能的構造ブロックは、多くの場合、本明細書において任意に定義されている。特定の機能およびそれらの関係が適切に実行される限り、代替的な構造ブロックを定義することができる。任意の代替的な構造ブロックは、本発明の範囲および精神に含まれる。

0158

本発明の上記説明は、例示および説明のために提供されている。本発明を網羅的であることにまたは開示された形態に厳密に限定することを意図するものではない。本発明の幅および範囲は、上述した例示的な実施形態のいずれかに限定されない。多くの修正および変更は、当業者にとって明らかであろう。修正および変更は、開示された特徴の任意の適切な組合せを含む。実施形態は、本発明の原理およびその実際の応用を最善に説明するために選択され説明された。よって、当業者は、さまざまな実施形態により本発明を理解し、考えられる特定の用途に適したさまざまな修正を行うことができる。なお、本発明の範囲が添付の特許請求の範囲およびその等価物によって定義されることが意図される。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ