(57)【特許請求の範囲】
【請求項１】
処理システムにより実現される方法であって、
前記処理システムは、
プロセッサ、
メモリ、
記憶装置、
複数のポート、
ホストオペレーティングシステム、
前記ホストオペレーティングシステムによりアクセス可能なホストコントローラインタフェース、及び
前記ホストオペレーティングシステムによりアクセス不可であって、前記ホストコントローラインタフェースと異なる帯域外コントローラインタフェースを有し、
前記帯域外コントローラインタフェースは、前記ホストコントローラインタフェースと前記複数のポートの共有ポートを共有し、
前記処理システムが、
前記ホストコントローラインタフェースを介し前記記憶装置にアクセスするための第１コマンドを受信するステップと、
前記帯域外コントローラインタフェースを介し前記記憶装置にアクセスするための第２コマンドを受信するステップと、
前記第１コマンドの実行前に前記第１コマンドの実行により結果となることが予想される前記記憶装置の予想される状態を決定するステップと、
前記第２コマンドの実行が前記予想される状態を妨げないと判断したことに応答して、前記第２コマンドの実行前に前記第１コマンドを実行するステップであって、前記第２コマンドは、前記ホストオペレーティングシステムの関与なく実行される、前記第１コマンドを実行するステップと、
を含む方法。
【請求項２】
前記第２コマンドの実行が前記予想される状態を妨げる場合、前記第２コマンドをキャンセルし、前記第１コマンドを実行するステップをさらに有する、請求項１記載の方法。
【請求項３】
前記第２コマンドの実行が前記予想される状態を妨げる場合、前記記憶装置の前記予想される状態と異なる所望の状態が実現されるまで前記第２コマンドを遅延するステップと、
前記第１コマンドを実行するステップと、
前記記憶装置の所望の状態が実現されると、前記第２コマンドを実行するステップと、
をさらに有する、請求項１記載の方法。
【請求項４】
前記第２コマンドの実行が前記予想される状態を妨げる場合、前記第２コマンドの実行後に前記予想される状態を復元するための第３コマンドを決定し、前記第３コマンドの実行後まで前記第１コマンドの終了の通知を遅延しながら、前記第１コマンド、前記第２コマンド及び第３コマンドを実行するステップをさらに有する、請求項１記載の方法。
【請求項５】
前記ホストオペレーティングシステムは、前記第１及び第２コマンドが受信されると、前記第１及び第２コマンドの実行中はアクティブである、請求項１記載の方法。
【請求項６】
前記第１コマンドを前記ホストコントローラインタフェースに関連する第１メモリに配置するステップと、
前記帯域外コントローラインタフェースによるアクセスから前記第１メモリをプロテクトするステップと、
前記第２コマンドを前記帯域外コントローラインタフェースに関連する第２メモリに配置するステップと、
前記ホストオペレーティングシステム及び前記ホストコントローラインタフェースによるアクセスから前記第２メモリをプロテクトするステップと、
をさらに有する、請求項１記載の方法。
【請求項７】
プロセッサと、
記憶装置と、
複数のポートと、
ホストオペレーティングシステムと、
前記ホストオペレーティングシステムによりアクセス可能なホストコントローラインタフェースと、
前記ホストオペレーティングシステムによりアクセス不可であって、前記ホストコントローラインタフェースと異なる帯域外コントローラインタフェースであって、前記帯域外コントローラインタフェースは、前記ホストコントローラインタフェースと前記複数のポートの共有ポートを共有する、前記帯域外コントローラインタフェースと、
前記プロセッサに接続されるメモリであって、前記メモリは、
前記ホストコントローラインタフェースを介し前記記憶装置にアクセスするための第１コマンドを受信し、
前記帯域外コントローラインタフェースを介し前記記憶装置にアクセスするための第２コマンドを受信し、
前記第１コマンドの実行前に前記第１コマンドの実行により結果となることが予想される前記記憶装置の予想される状態を決定し、
前記第２コマンドの実行が前記予想される状態を妨げるか判断し、
前記第２コマンドの実行が前記予想される状態を妨げないと判断したことに応答して、前記ホストオペレーティングシステムの関与なしに実行される前記第２コマンドの実行前に前記第１コマンドを実行する命令を有する前記メモリと、
を有するシステム。
【請求項８】
前記命令はさらに、前記第２コマンドの実行が前記予想される状態を妨げる場合、前記第２コマンドをキャンセルし、前記第１コマンドを実行する命令を有する、請求項７記載のシステム。
【請求項９】
前記命令はさらに、前記第２コマンドの実行が前記予想される状態を妨げる場合、
前記記憶装置の所望の状態が実現されるまで前記第２コマンドを遅延し、
前記第１コマンドを実行し、
前記記憶装置の所望の状態が実現されると、前記第２コマンドを実行する命令を有する、請求項７記載のシステム。
【請求項１０】
前記命令はさらに、前記第２コマンドの実行が前記予想される状態を妨げる場合、前記第２コマンドの実行後に前記予想される状態を復元するための第３コマンドを決定し、前記第３コマンドの実行後までに前記第１コマンドの終了の通知を遅延しながら、前記第１コマンド、前記第２コマンド及び前記第３コマンドを実行する命令を有する、請求項７記載のシステム。
【請求項１１】
前記命令はさらに、前記第１及び第２コマンドが受信されると、前記第１及び第２コマンドの実行中、前記ホストオペレーティングシステムがアクティブである命令を有する、請求項７記載のシステム。
【請求項１２】
前記命令はさらに、
前記第１コマンドを前記ホストコントローラインタフェースに関連する第１メモリに配置し、
前記帯域外コントローラインタフェースによるアクセスから前記第１メモリをプロテクトし、
前記第２コマンドを前記帯域外コントローラインタフェースに関連する第２メモリに配置し、
前記ホストオペレーティングシステム及び前記ホストコントローラインタフェースによるアクセスから前記第２メモリをプロテクトする命令を有する、請求項７記載のシステム。
【請求項１３】
コンピュータ可読記憶媒体と、
前記コンピュータ可読記憶媒体の命令と、
を有するコンピュータプログラムであって、
前記命令は、処理システムにおいて実行されると、前記処理システムに処理を実行させ、
前記処理システムは、
プロセッサ、
メモリ、
記憶装置、
複数のポート、
ホストオペレーティングシステム、
前記ホストオペレーティングシステムによりアクセス可能なホストコントローラインタフェース、及び
前記ホストオペレーティングシステムによりアクセス不可であって、前記ホストコントローラインタフェースと異なる帯域外コントローラインタフェースを有し、
前記帯域外コントローラインタフェースは、前記ホストコントローラインタフェースと前記複数のポートの共有ポートを共有し、
前記処理は、
前記ホストコントローラインタフェースを介し前記記憶装置にアクセスするための第１コマンドを受信し、
前記帯域外コントローラインタフェースを介し前記記憶装置にアクセスするための第２コマンドを受信し、
前記第１コマンドの実行前に前記第１コマンドの実行により結果となることが予想される前記記憶装置の予想される状態を決定し、
前記第２コマンドの実行が前記予想される状態を妨げるか判断し、
前記第２コマンドの実行が前記予想される状態を妨げないと判断したことに応答して、前記ホストオペレーティングシステムの関与なしに実行される前記第２コマンドの実行前に前記第１コマンドを実行する、
ことを有するコンピュータプログラム。
【請求項１４】
前記命令はさらに、前記処理システムに、前記第２コマンドの実行が前記予想される状態を妨げる場合、前記第２コマンドをキャンセルし、前記第１コマンドを実行する処理を実行させる、請求項１３記載のコンピュータプログラム。
【請求項１５】
前記命令はさらに、前記処理システムに、前記第２コマンドの実行が前記予想される状態を妨げる場合、
前記記憶装置の所望の状態が実現されるまで前記第２コマンドを遅延し、
前記第１コマンドを実行し、
前記記憶装置の所望の状態が実現されると、前記第２コマンドを実行する、
処理を実行させる、請求項１３記載のコンピュータプログラム。
【請求項１６】
前記命令はさらに、前記処理システムに、前記第２コマンドの実行が前記予想される状態を妨げる場合、
前記第２コマンドの実行後に前記予想される状態を復元するための第３コマンドを決定し、
前記第３コマンドの実行後まで前記第１コマンドの終了の通知を遅延しながら、前記第１コマンド、前記第２コマンド及び前記第３コマンドを実行する、
処理を実行させる、請求項１３記載のコンピュータプログラム。
【請求項１７】
前記命令はさらに、前記処理システムに、前記第１及び第２コマンドが受信されると、前記第１及び第２コマンドの実行中、前記ホストオペレーティングシステムがアクティブである、処理を実行させる、請求項１３記載のコンピュータプログラム。
【請求項１８】
前記命令はさらに、前記処理システムに、
前記第１コマンドを前記ホストコントローラインタフェースに関連する第１メモリに配置し、
前記帯域外コントローラインタフェースによるアクセスから前記第１メモリをプロテクトし、
前記第２コマンドを前記帯域外コントローラインタフェースに関連する第２メモリに配置し、
前記ホストオペレーティングシステム及び前記ホストコントローラインタフェースによるアクセスから前記第２メモリをプロテクトする、
命令を実行させる、請求項１３記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権保護を受ける題材がここに含まれる。著作権所有者は、特許商標庁のファイル又はレコードに現れるとき、何れの者による特許開示のファクシミリの複製に対しては異議はないが、そうでない場合には、著作権に対するすべての権利を留保する。
【０００２】
本開示は、一般に企業及びクライアント／サーバ計算環境の管理に関する。
【背景技術】
【０００３】
データバックアップ及びリカバリ、アンチウイルススキャン、ディスクリペア、マルウェアの削除などのオンラインストレージサービスが、ストレージツールがインストールされたリモートネットワークサーバとの通信を介しクライアントコンピュータに現在広範に利用可能である。クライアントコンピュータとリモートサーバとの間の通信は、典型的には、クライアントコンピュータにインストールされたソフトウェアエージェントを用いて確立される。しかしながら、このようなソフトウェアエージェントは、常に容易にインストールされるとは限らず、クライアントコンピュータ上のウイルス又はマルウェアによってシャットダウン又は感染する可能性がある。
【０００４】
また、現在のオンラインストレージサービスとソフトウェアエージェントとは、クライアントコンピュータのオペレーティングシステムに依存する。従って、オペレーティングシステムは、オンラインストレージサービスが提供可能になる前にクライアントシステムに供給される必要がある。さらに、オペレーティングシステムが故障又は無効であるとき、リモートサーバは、クライアントコンピュータのマスストレージにアクセスする機会を失い、オンラインストレージサービスをクライアントコンピュータに提供することができない。
【図面の簡単な説明】
【０００５】
【図１】図１は、本発明の一実施例によるポート共有ハードウェアを介した記憶装置への帯域外アクセスを可能にするよう構成されるシステムのブロック図である。
【図２】図２は、本発明の一実施例による記憶装置への帯域外アクセスを可能にするポート共有ハードウェア及び関連するファームウェアの処理のフローチャートである。
【発明を実施するための形態】
【０００６】
本発明の実施例は、ポート共有ハードウェアを介した記憶装置への帯域外アクセスを可能にする方法、装置、システム及びコンピュータプログラムプロダクトを提供する。記憶装置への帯域外アクセスを提供することは、オペレーティングシステムが機能的でないときと共に、オペレーティングシステムがアクティブであるときにシステム管理機能が実行されることを可能にする。管理サービスから生じるストレージコマンドは、ホストオペレーティングシステムにより発行されるストレージコマンドとインタリーブ可能である。ホストオペレーティングシステムは、それの記憶装置に対するオーナシップ及び制御を維持するが、本発明は、ホストオペレーティングシステムが動作中に管理活動が実行されることを可能にする。
【０００７】
一実施例では、方法は、前記ホストコントローラインタフェースを介し前記記憶装置にアクセスするための第１コマンドを受信するステップと、前記帯域外コントローラインタフェースを介し前記記憶装置にアクセスするための第２コマンドを受信するステップと、前記第１コマンドの実行後に前記記憶装置の予想される状態を決定するステップと、前記第２コマンドの実行が前記予想される状態を妨げるか判断するステップと、前記第２コマンドの実行が前記予想される状態を妨げない場合、前記第２コマンドの実行前に前記第１コマンドを実行するステップであって、前記第２コマンドは、前記ホストオペレーティングシステムの関与なく実行される、前記第１コマンドを実行するステップとを有する。前記第２コマンドの実行が前記予想される状態を妨げる場合、本方法は、前記第２コマンドをキャンセルし、前記第１コマンドを実行するステップ、前記第２コマンドの実行が前記予想される状態を妨げない場合、前記記憶装置の所望の状態が実現されるまで前記第２コマンドを遅延するステップ、前記第１コマンドを実行するステップ、前記記憶装置の所望の状態が実現されると、前記第２コマンドを実行するステップ、及び／又は前記第２コマンドの実行後に前記予想される状態を復元するための第３コマンドを決定し、前記第３コマンドの実行後まで前記第１コマンドの終了の通知を遅延しながら、前記第１コマンド、前記第２コマンド及び第３コマンドを実行するステップをさらに有してもよい。一実施例では、前記ホストオペレーティングシステムは、前記第１及び第２コマンドが受信されると、前記第１及び第２コマンドの実行中はアクティブである。本方法はさらに、前記第１コマンドを前記ホストコントローラインタフェースに関連する第１メモリに配置するステップと、前記帯域外コントローラインタフェースによるアクセスから前記第１メモリをプロテクトするステップと、前記第２コマンドを前記帯域外コントローラインタフェースに関連する第２メモリに配置するステップと、前記ホストオペレーティングシステム及び前記ホストコントローラインタフェースによるアクセスから前記第２メモリをプロテクトするステップとをさらに有してもよい。
【０００８】
明細書における本発明の“一実施例”又は“実施例”という表現は、当該実施例に関連して説明される特定の特徴、構成又は特性が本発明の少なくとも１つの実施例に含まれることを意味する。従って、明細書全体における各所に出現する“一実施例では”、“一実施例によると”などのフレーズの出現は、必ずしもすべてが同一の実施例を参照しているとは限らない。
【０００９】
説明のため、具体的な構成及び詳細が、本発明の完全な理解を提供するために与えられる。しかしながら、本発明の実施例はここに提供される具体的な詳細なしに実現可能であることは、当業者に明らかであろう。さらに、本発明を不明りょうにしないように、周知の特徴は省略又は簡単化されてもよい。本記載を通じて各種具体例が与えられる。これらは単に、本発明の特定の実施例の説明である。本発明の範囲は、与えられた具体例に限定されるものでない。
【００１０】
ここでのストレージサービスは、限定することなく、クライアントコンピュータへのオペレーティングシステムイメージの初期的な提供、データバックアップ及びリカバリ、ディスクリペア、アンチウイルススキャン及びマルウェアの削除、セキュリティシステムのインストール及びシステムパフォーマンスの最適化を含む。
【００１１】
“帯域外”という用語は、クライアント装置のオペレーティングシステム（ＯＳ）から独立して実行されるクライアント装置の管理モジュールとサーバ装置との間の通信など、メインストリームから独立した通信を説明するのに利用される。
【００１２】
図１は、本発明の一実施例によるポート共有ハードウェアを介した記憶装置への帯域外アクセスを可能にするよう構成されるシステム１００のブロック図である。ミニアドバンストホストコントローラインタフェース（ＡＨＣＩ）１１０は、ホストＡＨＣＩ１２０とポート１０２（個別にポート０〜ポート５とラベル付けされた）を共有する帯域外コントローラインタフェースを表す。ミニＡＨＣＩ１１０は、システム１００のホストオペレーティングシステム１０６によりアクセス不可であり、ホストＡＨＣＩ１２０は、ホストオペレーティングシステム１０６によりアクセス可能である。ミニＡＨＣＩ１１０は、リモートストレージ管理サービス１０８がネットワーク接続１０９を介しシステム１００にストレージサービスを提供することによって、システム１００の記憶装置１６０Ａ〜１６０Ｆへのアクセスを提供する。ミニＡＨＣＩ１１０により提供されるアクセスは、ホストオペレーティングシステム１０６の支援から独立して及び支援なしに提供される。ホストＡＨＣＩ１２０は、ホストオペレーティングシステム１０６によるシステム１００の記憶装置１６０Ａ〜１６０Ｆへのアクセスを提供する。ホストＡＨＣＩ１２０はまた、ホストオペレーティングシステムに不揮発性メモリ１３６へのアクセスを提供するため、ポート１０４（個別にポート６，７とラベル付けされた）へのアクセスを提供する。
【００１３】
ストレージコマンドがミニＡＨＣＩ１１０を介し発行されると、ミニＡＨＣＩ１１０は、管理コマンドを処理するため確保されたメモリＭＥ  ＵＭＡ１３４に格納されているファームウェアテーブル１１２にコマンド情報を配置する。コマンド情報は、コマンドと、当該コマンドが実行されるデータへのポインタとを含む。これらのデータポインタは、記憶装置１６０Ａ〜１６０Ｆがアクセス可能なページに変換される。ミニＡＨＣＩ１１０は、コマンド処理ブロック１４０にコマンドがメモリに配置されたことを通知するための信号を送信する。メモリＭＥ  ＵＭＡ１３４は、６つの共有されているポート１０２（個別にポート０〜ポート５にラベル付けされる）のそれぞれについて１つのスロットを有し、これにより、１つの管理コマンドが各ポートについて処理されることを可能にする。メモリＭＥ  ＵＭＡ１３４に格納されているファームウェアテーブル１１２は、ホストオペレーティングシステム１０６によりアクセス不可であり、ミニＡＨＣＩインタフェース１１０を介してのみアクセス可能である。
【００１４】
ストレージコマンドがホストＡＨＣＩ１２０を介しホストオペレーティングシステムにより発行されると、ホストＡＨＣＩ１２０は、ホストメモリ１３２の位置に格納されているホストテーブル１２２にコマンド情報を配置する。コマンド情報は、コマンドデータと、当該コマンドが実行されるデータへのポインタとの双方を含む。これらのデータポインタは、記憶装置１６０Ａ〜１６０Ｆがアクセス可能なページに変換される。ホストＡＨＣＩ１２０は、コマンドがメモリに配置されていることをコマンド処理ブロック１４０に通知するための信号を送信する。ホストメモリ１３２は、８つのポート１２０及び１０４（個別に共有ポート０〜５及びＮＶＭポート６，７としてラベル付けされる）のそれぞれについて３２個のスロットを有し、これにより、各ポートについて３２個までのコマンドが処理されることを可能にする。ホストメモリ１３２に格納されているホストテーブル１２２は、ホストＡＨＣＩ１２０を介しホストオペレーティングシステム１０６によりアクセス可能であるが、ミニＡＨＣＩインタフェース１１０を介してアクセス不可である。メモリＭＥ  ＵＭＡ１３４は、チップセットハードウェアを介しホストＡＨＣＩ１２０を介したアクセスからプロテクトされ、ホストメモリ１３２は、同様にチップセットハードウェアを介しミニＡＨＣＩインタフェース１１０を介したアクセスによるアクセスからプロテクトされる。メモリリファレンスアドレスが各インタフェースの範囲外である場合、メモリを参照するリクエストはハードウェアによってドロップされる。
【００１５】
コマンド処理ブロック１４０は、指定されたメモリ位置（ホストにより開始されたコマンドのためのホストメモリ１３２と管理により開始されたコマンドのためのＭＥ  ＵＭＡ１３４）からコマンドをフェッチするフェッチシーケンサブロック１４２を有する。コマンドがメモリ位置に配置されたことを示す信号が受信されると、フェッチシーケンサブロック１４２は、ホストメモリ１３２又はＭＥ  ＵＭＡメモリ１３４の何れからコマンド情報をフェッチする。実行ブロック１４４はコマンドを実行し、ＤＭＡブロック１４６は、実行用のトランザクション循環バッファ１４８に直接的なメモリアクセス命令を配置する。
【００１６】
フェッチシーケンサブロック１４２は、コマンド信号の送信元のコントローラ（ミニＡＨＣＩ１１０又はホストＡＨＣＩ１２０）に基づき、適切なコマンドテーブルからコマンドをフェッチする。当該情報は、ＤＭＡブロック１４６を介してＤＭＡ転送を開始トランザクション循環バッファ１４８の先頭に転送される（ハードウェアベースキュー）。ＤＭＡ転送が進捗中、ＡＴＡコマンドフィルタブロック１７０は、テーブル１５０に従ってフォーマット化され、以下においてさらに説明されるトランザクションバッファエントリのフラグ及びＩＯタグフィールドを設定するため、コマンド情報を調べる。ＡＴＡコマンドフィルタブロック１７０によるＡＴＡコマンドの調査中、ルックアップテーブル１８０が、一意的なＡＴＡコマンド識別子に対して参照される。コマンド識別子のマッチングが、要求されたホストコマンドとルックアップテーブル１８０のエントリとの間で実行されるとき、トランザクションバッファエントリ１５０のフラグフィールドは、当該コマンド識別子のルックアップテーブルデータに従って設定される。
【００１７】
エントリがトランザクション循環バッファ１４８に配置されると、実行ブロック１４４は、トランザクション循環バッファ１４８の最後尾からのコマンドを実行するよう通知される。装置１６０Ａ〜Ｆの１つにコマンド情報を送信する前、実行ユニット１４４は、実行しようとしているトランザクション循環バッファ１４８のエントリのフラグフィールドを調べる。インタラプトネクストコマンドビットが設定されている場合、実行ユニット１４４は、次のコマンドがトランザクション循環バッファ１４８から実行されるとき、管理サービス１０８を中断するための内部的なフラグを設定する。インタラプトビフォアエグゼキューションビットが設定されている場合、実行ユニット１４４は、決定のため管理サービス１０８を中断し、実行ユニット１４４が実行が継続可能であるという信号を受信すると実行を継続し、これにより、管理サービス１０８に決定をするための時間を可能にする。
【００１８】
実行ユニット１４４が、装置１６０Ａ〜Ｆの１つにコマンドを送信することが許容されていると判断すると、実行ユニット１４４は、トランザクション循環バッファ１４８から当該装置にトランザクション循環バッファのエントリ１５０のＣＦＩＳフィールドのＤＭＡを通知する。装置がコマンドを完了すると、ホストＡＨＣＩ１２０のコントローラに通常は直接向かうすべての状態変更及びレスポンス情報が、トランザクション循環バッファ１４８に戻る。インタラプトビフォアコンプリーションビットが、コマンドが実行されるトランザクション循環バッファエントリ１５０のフラグフィールドにおいて設定される場合、実行ブロック１４４は、完了情報を調べるため、管理サービス１０８を中断する。管理サービス１０８が完了情報の調査を終了すると、管理サービス１０８は実行ユニット１４４に通知し、実行ユニット１４４は、完了情報及び状態のホストＡＨＣＩコントローラ１２０へのＤＭＡ転送を実行する。
【００１９】
トランザクション循環バッファのエントリは、テーブル１５０に従って定式化される。図示された実施例では、トランザクション循環バッファの各エントリは、２０個のダブルワードを含む。トランザクション循環バッファのトータルのメモリ要求は、従って、６つの共有ポートのトータル１．４キロバイトに対して、各ポートについて２４０バイトである。他の実施例では、２つの非共有ポートについてメモリがまたトランザクション循環バッファに割り当てられ、これにより、８つすべてのポートのメモリを割り当てる。トランザクション循環バッファのエントリのフォーマットの最初のダブルワードにおいて、ビット００〜０７は、コマンドがミニＡＨＣＩ１１０を介し管理サービス１０８によって、又はホストＡＨＣＩ１２０を介しホストによって開始されたか示す。ビット０８〜１５は、特別なフラグのために利用され、例えば、ビット８は、コマンドの実行前にインタラプトが生成されることを示し、ビット９は、コマンドの終了が通知される前にインタラプトが生成されることを示し、ビット１０は、次のコマンドの処理前にインタラプトが生成されることを示す。ビット１０は、装置の状態に影響を与えうる２以上のコマンドのシーケンスが、装置の状態が変更される前に特定可能となるように、次のコマンドの調査を可能にする。ビット１６〜３１が確保される。
【００２０】
トランザクション循環バッファのエントリフォーマットの第２ダブルワードは、コマンドパラメータのために利用され、１６個のダブルワードが、コマンドファームウェア情報構造（ＡＨＣＩ規格で用いられるＣＦＩＳと同様のＣＦＩＳ）のために利用され、２つのダブルワードが、コマンド完了パラメータのために利用される。
【００２１】
ＡＴＡコマンドフィルタブロック１７０は、さらなる管理処理が必要か判断するため、コマンドを調べるのにコマンド処理ブロック１４０により利用される。コマンド処理ブロック１４０の処理は、以下の図２を参照してさらに説明される。
【００２２】
図１を再び参照して、プラットフォーム１００がフルパワーであるとき、アッパーメモリエリア（ＵＭＡ）として参照されるメモリの部分が、管理処理及びミニＡＨＣＩ１１０による利用のために利用可能である。ホストオペレーティングシステム１０６は、一般にシステム初期化時にＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）により設定されるメモリ隔離機構のため、ＭＥ−ＵＭＡ１３４にアクセスすることができない。このメモリ隔離機構は、ホストオペレーティングシステム１０６の実行前、ＭＥ−ＵＭＡメモリ１３４へのアクセスをロックする。ホストオペレーティングシステム１０６から管理サービス１０８による利用のため当該メモリ部分を隔離することによって、管理処理のインテグリティは、ホストオペレーティングシステム１０６に影響を与えうるウイルス又は他のマルウェアから保護される。
【００２３】
図２は、本発明の一実施例による記憶装置への帯域外アクセスを可能にするためのポート共有ハードウェア及び関連するファームウェアの処理のフローチャートである。図２のステップは、図１のコマンド処理モジュール１４０のコンポーネントによって実行されるとしてここでは説明される。“コマンドに関連する信号を受信”ステップ２０５では、コマンド処理モジュール１４０は、コマンド情報がホストメモリ１３２のホストテーブル１２２又はＭＥ  ＵＭＡ１３４のファームウェアテーブル１１２の何れかに配置されたという信号をミニＡＨＣＩ１１０又はホストＡＨＣＩ１２０を介し受信する。制御は、“管理又はホストにより開始されたコマンド？”判定ポイント２１０に移行し、当該コマンドが管理サービス１０８またはホストオペレーティングシステム１０６により開始されたか判断される。コマンドがホストオペレーティングシステム１０６により開始された場合、制御は、“コマンドを調査”ステップ２１５に移行し、コマンド情報がホストメモリ１３２のホストテーブル１２２から抽出される。コマンドが、さらなる管理処理が必要であるか判断するため調べられる。例えば、記憶装置にデータを格納するためのシンプルなリード／ライトコマンドは、さらなる管理処理を必要とせず、記憶装置をアイドル状態に配置するためのコマンドは、以降の何れの管理コマンドも終了するとアイドル状態に装置を戻すことを補償するため、さらなる管理処理を要求する。制御は、“コマンドを調査”ステップ２１５から、管理処理が必要か判断するための“管理処理が必要？”判定ポイント２１５に移行する。管理処理が“管理処理が必要？”判定ポイント２２０において必要でない場合、シンプルリード／ライトコマンドと同様に、制御は、“ホストコマンドを処理”ステップ２３０に移行し、ホストコマンドが実行される。ホストコマンドが実行された後、ホストコマンドの処理が終了され、当該処理が終了する。
【００２４】
“管理処理が必要？”判定ポイント２２０において、管理処理が必要である場合、制御は、“必要とされるさらなる管理処理のタイプを決定”ステップ２４０に移行する。装置の状態がホストコマンドにより変更される状況では、コマンド処理モジュール１４０は、さらなる管理処理がホストコマンドの終了により実行する。例えば、コマンド処理モジュール１４０は、ホストコマンドの処理が完了したことを通知する前にインタラプトが生成されることを補償するため、トランザクション循環バッファ１４８へのホストコマンドの配置時にフラグを設定してもよい。他の例として、コマンド処理モジュール１４０は、ホストコマンドが記憶装置をリセットした場合、保留中の管理コマンドをキャンセルしてもよい。
【００２５】
“管理又はホストにより開始されたコマンド？”判定ポイント２１０において、コマンドがミニＡＨＣＩ１１０を介し管理サービス１０８により開始されている場合、制御は、“発行済みホストコマンド？”判定ポイント２５０に移行する。ホストコマンドの何れも実行を待機していない場合、制御は、“管理コマンドを処理”判定ポイント２６５に移行し、管理コマンドが実行される。管理コマンドの実行後、コマンドの処理は終了し、当該処理は終了する。
【００２６】
“発行済みホストコマンド？”判定ポイント２５０において、ホストコマンドが実行を待機している場合、制御は、“ホストコマンドを終了することを許可”ステップ２５５に移行する。実行用のキューのすべてのホストコマンドが、管理コマンドのさらなる処理前に終了することが許可される。管理コマンドの実行における当該遅延は、管理サービスが記憶装置に対して実行される前に、記憶装置が安定状態に入ることを可能にする。
【００２７】
“ホストコマンドが終了することを許可”ステップ２５５から、制御は、“装置状態が与えられると、管理コマンドは依然として有効？”判定ポイント２６０に移行する。発行済みホストコマンドにより実行される処理は、当該段階における管理コマンドの実行が無効である状態に記憶装置を配置することが可能である。例えば、ホストにより開始されたコマンドは、さらなる管理コマンドがもはや不要となるように、記憶装置をリセットしてもよい。管理コマンドが無効である場合、実行されると、制御は、“必要なさらなる管理処理のタイプを決定”ステップ２４０に移行する。例えば、異なる管理コマンドを実行用にキューすることが必要であるかもしれない。あるいは、さらなる管理コマンドは不要であるが、保留中の管理コマンドを実行することなくキャンセルすることが必要であるかもしれない。さらに、実行前に次のコマンドを調査するためのフラグ、コマンドの処理の終了が通知される前に中断を要求するためのフラグ、又はコマンドの実行後に中断を要求するためのフラグなど、フラグを設定することによってコマンドの実行のフローを制御する必要があるかもしれない。
【００２８】
“装置状態が与えられると、管理コマンドは依然として有効？”判定ポイント２６０において、管理コマンドが有効のままである場合、制御は、“管理コマンドを処理”ステップ２６５に移行する。管理コマンドが実行され、コマンドの処理が終了する。
【００２９】
ここで用いられる“処理システム”及び“データ処理システム”という用語は、単一のマシーン又は一緒に動作する通信接続されたマシーン又は装置のシステムを広範に含むことが意図される。処理システムの具体例は、限定することなく、分散計算システム、スーパーコンピュータ、ハイパフォーマンス計算システム、計算クラスタ、メインフレームコンピュータ、ミニコンピュータ、クライアントサーバシステム、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、ラップトップコンピュータ、タブレット、電話、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、携帯装置、オーディオ及び／又はビデオ装置などのエンタテイメント装置、及び情報を処理又は送信する他の装置を含む。
【００３０】
図１のプラットフォーム１００は、キーボード、マウスなどの従来の入力装置からの入力によって、及び／又は他のマシーン、生体フィードバック又は他の入力ソース若しくは信号から受信したコマンドによって、少なくとも部分的に制御されてもよい。プラットフォーム１００は、ネットワークインタフェースコントローラ（ＮＩＣ）、モデム、又は他の通信ポート若しくは結合などを介し、１以上のリモートデータ処理システム（図示せず）との１以上の接続を利用してもよい。
【００３１】
プラットフォーム１００は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、イントラネット、インターネットなどの物理的及び／又は論理的ネットワークを介し他の処理システム（図示せず）に相互接続されてもよい。ネットワークに関する通信は、無線周波数（ＲＦ）、衛星、マイクロ波、ＩＥＥＥ８０２．１１、ブルートゥース、光、赤外線、ケーブル、レーザなどを含む、各種有線及び／又は無線短距離又は長距離キャリア及びプロトコルを利用してもよい。
【００３２】
ここに開示された機構の実施例は、ハードウェア、ソフトウェア、ファームウェア又はこのような実現形態のアプローチの組み合わせにより実現されてもよい。本発明の実施例は、少なくとも１つのプロセッサ、データ処理システム（揮発性及び不揮発性メモリ及び／又は記憶要素を含む）、少なくとも１つの入力装置及び少なくとも１つの出力装置を有するプログラマブルシステム上で実行されるコンピュータプログラムとして実現されてもよい。
【００３３】
プログラムコードは、ここに記載される機能を実行し、出力情報を生成するため入力データに適用される。本発明の実施例はまた、ここに開示される構成、回路、装置、プロセッサ及び／又はシステムの特徴を規定するＨＤＬなどの設計データを有するか、又は本発明の処理を実行する命令を含むマシーンアクセス可能媒体を含む。このような実施例はまた、プログラムプロダクトと呼ばれてもよい。
【００３４】
このようなマシーンアクセス可能な記憶媒体は、限定することなく、ハードディスク、フロッピー（登録商標）ディスク、光ディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−ＲＷ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅｗｒｉｔａｂｌｅ）及び光磁気ディスクを含む他の何れかのタイプのディスク、ＲＯＭ、ＤＲＡＭ、ＳＲＡＭ、ＥＰＲＯＭ、ＦＬＡＳＨ、ＥＥＰＲＯＭなどのＲＡＭなどの半導体装置、磁気若しくは光カード、又は電子指示を格納するのに適した他の何れかのタイプの媒体などの記憶媒体を含む、マシーン又は装置により構成若しくは製造される有形な粒子の配置を含むものであってもよい。
【００３５】
出力情報は、既知の方法により１以上の出力装置に適用されてもよい。この適用のため、処理システムは、例えば、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、又はマイクロプロセッサなどのプロセッサを有する何れかのシステムを含む。
【００３６】
プログラムは、処理システムと通信するためのハイレベル手続き型又はオブジェクト指向型プログラミング言語により実現されてもよい。プログラムはまた、所望される場合、アセンブリ又はマシーン言語により実現されてもよい。実際、ここに開示される機構は、何れか特定のプログラミング言語に範囲が制限されるものでない。何れの場合でも、言語はコンパイル又はインタープリットされた言語であってもよい。
【００３７】
ポート共有ハードウェアを用いた記憶装置への帯域外アクセスを可能にする方法及びシステムの実施例が提供される。本発明の特定の実施例が図示及び説明されたが、添付した請求項の範囲から逸脱することなく、多数の変更、変形及び改良が可能であることは、当業者に明らかであろう。従って、本発明から逸脱することなく、それの広範な側面において変更及び改良が可能であることを当業者は認識するであろう。添付した請求項は、本発明の真の範囲及び趣旨に属するすべての変更、変形及び改良をその範囲内に含むものである。
【図１】
0005583849.tif 000002
【図２】
0005583849.tif 000003