(57)【要約】【課題】レイテンシを低減させるコマンド・プッシュ・モデルを実施するデータ・ストレージ・システムを提供すること。【解決手段】本ホスト・システムは、同システムがＮＶＭ装置の中に位置するコマンド・キューにコマンドをプッシュすることを可能にするために、メモリ制御部の不揮発性メモリ（ＮＶＭ）装置に対してアクセスを有する。ホスト・システムは、メモリ制御部からの介入を必要とせずに各ＩＯを完了し、それによってホスト・システムとメモリ制御部との間の同期化又は初期接続手順の必要が無くなる。書込コマンドでは、ホスト・システムは、書込コマンドがメモリ制御部の待ち行列の中にプッシュされる時点では書込みコマンドが完了しているとみなすので、メモリ制御部は、コマンドの完了のすぐ後に完了割込みをホスト・システムに対して発行する必要はない。これらの特徴を組み合わせることにより、全体のレイテンシが大きく低減されることになる。【選択図】図２
2014154155.tif 000002
【特許請求の範囲】
【請求項１】
システム・プロセッサと、システム・メモリ・デバイスと、を備えるホスト・システムと、
コントローラ・プロセッサと、不揮発性メモリ（ＮＶＭ）デバイスと、入出力（Ｉ／Ｏ）インターフェース・デバイスと、を備えるメモリ・コントローラであって、該ＮＶＭデバイスの一部分はコマンド・キューとして使用される、メモリ・コントローラと、
前記Ｉ／Ｏインターフェース・デバイスに接続された少なくとも１つのソリッド・ステート・ドライブ（ＳＳＤ）であって、該少なくとも１つのＳＳＤは、物理ディスク・ドライブ（ＰＤ）のアレイとして構成されている、少なくとも１つのソリッド・ステート・ドライブ（ＳＳＤ）と、
前記ホスト・システムを前記メモリ・コントローラと相互接続するバスであって、前記ホスト・システムは、該バスを経由して前記ＮＶＭデバイスにアクセスし、前記バスを経由して前記ＮＶＭデバイスの前記コマンド・キューの中にコマンドをプッシュする、バスと、
を備える、データ・ストレージ・システム。
【請求項２】
前記システム・プロセッサは、前記バスを経由して前記ＮＶＭデバイスにアクセスし、前記バスを経由して前記ＮＶＭデバイスの前記コマンド・キューの中に前記コマンドをプッシュするメモリ・ドライバ・プログラムを実行する、請求項１に記載のデータ・ストレージ・システム。
【請求項３】
前記メモリ・コントローラは、前記ＮＶＭデバイスに直接アクセスするダイレクト・メモリ・アクセス（ＤＭＡ）エンジンをさらに備え、前記システム・プロセッサは、前記バスを経由して前記ＤＭＡエンジンに対して前記コマンドをプッシュするメモリ・ドライバ・プログラムを実行し、前記ＤＭＡエンジンは、前記ＮＶＭデバイスの前記コマンド・キューに前記コマンドを記憶する、請求項１に記載のデータ・ストレージ・システム。
【請求項４】
前記ホスト・システムは、前記ＮＶＭデバイスの前記コマンド・キューの中にコマンドがプッシュされたときに前記メモリ・コントローラに通知する、請求項１に記載のデータ・ストレージ・システム。
【請求項５】
前記ホスト・システムと前記ＮＶＭデバイスとは、同じコマンドとデータ構造とを使用する、請求項２に記載のデータ・ストレージ・システム。
【請求項６】
前記バスは、周辺相互接続高速（ＰＣＩｅ）バスであり、前記メモリ・ドライバ・プログラムは、前記ＰＣＩｅバスのベース・アドレス・レジスタ（ＢＡＲ）を使用することにより、前記ＮＶＭデバイスにアクセスする、請求項５に記載のデータ・ストレージ・システム。
【請求項７】
前記ＮＶＭデバイスの一部分がコマンド・キューとして使用される、入出力（Ｉ／Ｏ）インターフェース・デバイスと、
前記Ｉ／Ｏインターフェース・デバイスに接続された少なくとも１つのソリッド・ステート・ドライブ（ＳＳＤ）であって、該少なくとも１つのＳＳＤは、物理ディスク・ドライブ（ＰＤ）のアレイとして構成されている、少なくとも１つのソリッド・ステート・ドライブ（ＳＳＤ）と、
コントローラ・プロセッサと、
一部分がコマンド・キューとして割り付けられた、不揮発性メモリ（ＮＶＭ）デバイスであって、ホスト・システムを前記メモリ・コントローラと相互接続するバスを経由して該ホスト・システムによってアクセスされるように構成されており、該ホスト・システムが該バスを経由して前記ＮＶＭデバイスの前記コマンド・キューの中にコマンドをプッシュすることを可能にするように構成されている、不揮発性メモリ（ＮＶＭ）デバイスと、
を備える、メモリ・コントローラ。
【請求項８】
前記ＮＶＭデバイスは、前記ホスト・システムのプロセッサによって実行されるメモリ・ドライバ・プログラムを経由して前記ホスト・システムによってアクセスされ、前記バスは、周辺相互接続高速（ＰＣＩｅ）バスであり、前記ＮＶＭデバイスは、前記ＰＣＩｅバスのベース・アドレス・レジスタ（ＢＡＲ）を通して前記メモリ・ドライバ・プログラムによってアクセス可能である、請求項７に記載のメモリ・コントローラ。
【請求項９】
前記メモリ・コントローラは、
前記バスを経由して前記ホスト・システムと通信し、前記ＮＶＭデバイスと直接に通信するダイレクト・メモリ・アクセス（ＤＭＡ）エンジンをさらに備え、前記ＤＭＡエンジンは、前記バスを経由して前記ホスト・システムによってアクセスされ、前記ＤＭＡエンジンは、前記メモリ・ドライバ・プログラムによって前記ＤＭＡエンジンに対してプッシュされるコマンドを受信し、前記ＮＶＭデバイスの前記コマンド・キューに前記コマンドを記憶する、請求項７に記載のメモリ・コントローラ。
【請求項１０】
前記ＮＶＭデバイスは、前記ホスト・システムと同じコマンドとデータ構造とを使用する、請求項８に記載のメモリ・コントローラ。
【請求項１１】
データ・ストレージ・システムにおいてレイテンシを低減させるための方法であって、
コントローラ・プロセッサと、不揮発性メモリ（ＮＶＭ）デバイスと、物理ディスク・ドライブ（ＰＤ）のアレイとして構成された少なくとも１つのソリッド・ステート・ドライブ（ＳＳＤ）に接続された入出力（Ｉ／Ｏ）インターフェース・デバイスとを備えるメモリ・コントローラにおいて、該ＮＶＭデバイスの一部分をコマンド・キューとして構成すること、
バスを経由して前記メモリ・コントローラと相互接続されたホスト・システムにより、該バスを経由して該メモリ・コントローラの中にコマンドをプッシュすること、および
前記メモリ・コントローラにおいて、前記ＮＶＭデバイスの前記コマンド・キューに前記コマンドを記憶すること、
を含む、方法。
【請求項１２】
前記ホスト・システムのシステム・プロセッサは、前記バスを経由して前記ＮＶＭデバイスにアクセスし、前記バスを経由して前記ＮＶＭデバイスの前記コマンド・キューの中に前記コマンドをプッシュするためのメモリ・ドライバ・プログラムを実行する、請求項１１に記載の方法。
【請求項１３】
前記メモリ・コントローラは、ダイレクト・メモリ・アクセス（ＤＭＡ）エンジンをさらに備え、前記ホスト・システムのシステム・プロセッサは、前記バスを経由して前記ホスト・システムから前記ＤＭＡエンジンにコマンドをプッシュするためのメモリ・ドライバ・プログラムを実行し、前記ＤＭＡエンジンは、前記バスを経由して前記ＮＶＭデバイスの前記コマンド・キューに前記コマンドを保存する、請求項１１に記載の方法。
【請求項１４】
前記ホスト・システムは、前記ＮＶＭデバイスの前記コマンド・キューの中にコマンドがプッシュされたときに前記メモリ・コントローラに通知する、請求項１２に記載の方法。
【請求項１５】
前記ホスト・システムと前記ＮＶＭデバイスとは、同じコマンドとデータ構造とを使用する、請求項１２に記載の方法。
【請求項１６】
前記バスは、周辺相互接続高速（ＰＣＩｅ）バスであり、前記メモリ・ドライバ・プログラムは、前記ＰＣＩｅバスのベース・アドレス・レジスタ（ＢＡＲ）を使用することにより、前記ＮＶＭデバイスにアクセスする、請求項１５に記載の方法。
【請求項１７】
バスを経由してホスト・システムに接続されたメモリ・コントローラの不揮発性メモリ（ＮＶＭ）デバイスのコマンド・キューの中にコマンドをプッシュするための前記ホスト・システムのプロセッサにより実行されるコンピュータ・プログラムをその上に記憶しており、該コンピュータ・プログラムは、
物理ディスク・ドライブ（ＰＤ）のアレイとして構成されたソリッド・ステート・ドライブ（ＳＳＤ）の１つまたは複数のアドレスを読み取り、または書き込むコマンドを受信するための第１のコード部分と、
前記メモリ・コントローラの中に前記コマンドをプッシュするための第２のコード部分と、
を含む、非一時的コンピュータ読取り可能媒体。
【請求項１８】
前記第２のコード部分は、前記ＮＶＭデバイスの前記コマンド・キューの中に前記コマンドをプッシュし、前記コンピュータ・プログラムは、
前記メモリ・コントローラの前記ＮＶＭデバイスの前記コマンド・キューの中に前記コマンドがプッシュされたときに、前記メモリ・コントローラのプロセッサに通知するための第３のコード部分、
をさらに含む、請求項１７に記載の非一時的コンピュータ読取り可能媒体。
【請求項１９】
前記第２のコード部分は、前記メモリ・コントローラのダイレクト・メモリ・アクセス（ＤＭＡ）エンジンの中に前記コマンドをプッシュし、前記ＤＭＡエンジンは、前記ＤＭＡエンジンが前記コマンド・キューに前記コマンドを保存することを可能にするために、前記ＮＶＭデバイスに直接接続され、また前記コンピュータ・プログラムは、
前記メモリ・コントローラの前記ＮＶＭデバイスの前記コマンド・キューの中に前記コマンドがプッシュされたときに前記メモリ・コントローラのプロセッサに通知するための第３のコード部分、
をさらに含む、請求項１７に記載の非一時的コンピュータ読取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にデータ・ストレージ・システムに関し、より詳細には、データ・ストレージ・システムにおいてコマンド・プッシュ・モデル（ｃｏｍｍａｎｄ−ｐｕｓｈ  ｍｏｄｅｌ）を使用して、書込みレイテンシを低減させるための方法およびシステムに関する。
【背景技術】
【０００２】
ストレージ・アレイまたはディスク・アレイは、複数のハード・ディスク・ドライブ（ＨＤＤ：ｈａｒｄ  ｄｉｓｋ  ｄｒｉｖｅｓ）または類似した永続性のストレージ・ユニットを含むデータ・ストレージ・デバイスである。ストレージ・アレイは、大量のデータを効率的なやり方で記憶することを可能にすることができる。サーバまたはワークステーションは、ストレージ・アレイがサーバまたはワークステーションに対してローカルであるように、ストレージ・アレイと直接に接続されることもある。サーバまたはワークステーションが、ストレージ・アレイに直接に接続される場合には、ストレージ・アレイは、一般的に、ダイレクト・アタッチド・ストレージ（ＤＡＳ：ｄｉｒｅｃｔ−ａｔｔａｃｈｅｄ  ｓｔｏｒａｇｅ）システムと称される。代わりに、サーバまたはワークステーションは、ストレージ・アレイ・ネットワーク（ＳＡＮ：ｓｔｏｒａｇｅ  ａｒｒａｙ  ｎｅｔｗｏｒｋ）を経由してストレージ・アレイにリモートに取り付けられることもある。ＳＡＮシステムにおいては、ストレージ・アレイは、サーバまたはワークステーションに対してローカルではないが、アレイのディスク・ドライブは、サーバまたはワークステーションのオペレーティング・システム（ＯＳ：ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ）に対して、ローカルに取り付けられているように見える。
【０００３】
図１は、コマンド・プル・モデル（ｃｏｍｍａｎｄ−ｐｕｌｌ  ｍｏｄｅｌ）を実施する典型的なデータ・ストレージ・システム２のブロック図を示すものである。システム２は、ホスト・システム３と、メモリ・コントローラ４と、周辺相互接続（ＰＣＩ：ｐｅｒｉｐｈｅｒａｌ  ｉｎｔｅｒｃｏｎｎｅｃｔ）バスまたはＰＣＩ高速（ＰＣＩｅ）バス５とを含む。コントローラ４は、中央演算処理装置（ＣＰＵ：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）６と、メモリ・デバイス７と、Ｉ／Ｏインターフェース・デバイス８とを含む。Ｉ／Ｏインターフェース・デバイス８は、シリアル・アタッチドＳＣＳＩ（ＳＡＳ：Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）規格、シリアル・アドバンスド・テクノロジー・アタッチメント（ＳＡＴＡ：Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）規格、不揮発性メモリ・ホスト・コントローラ・インターフェース高速（ＮＶＭｅ：Ｎｏｎｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ  Ｅｘｐｒｅｓｓ）規格など、知られているデータ転送プロトコル規格に準拠してデータ転送を実行するように構成されている。Ｉ／Ｏインターフェース・デバイス８は、複数の物理ディスク（ＰＤ：ｐｈｙｓｉｃａｌ  ｄｉｓｋｓ）９へのデータの転送、及び複数の物理ディスク９からのデータの転送を制御する。メモリ・コントローラ４は、ＰＣＩバス５を経由してシステムＣＰＵ  １１、およびシステム・メモリ・デバイス１２と通信する。システム・メモリ・デバイス１２は、システムＣＰＵ  １１により実行されるソフトウェア・プログラムと、データとを記憶する。システム・メモリ・デバイス１２の一部分は、コマンド・キュー１３として使用される。
【０００４】
典型的な書込みアクション中に、システムＣＰＵ  １１は、コマンドとデータとをコマンド・キュー１３に保存するメモリ・ドライバ・ソフトウェア・スタック１４を実行する。メモリ・ドライバ１４がコマンド・キュー１３にコマンドを保存するときに、メモリ・ドライバ１４は、コマンドが実行されるための準備ができていることをメモリ・コントローラ４に通知する。コントローラＣＰＵ  ６がコマンドを実行するための準備ができているときに、コントローラＣＰＵ  ６は、１つまたは複数のコマンドと、関連するデータとをバス５を経由してシステム・キュー１３からプルし、またホスト・システム３に対して完了割込み（ｃｏｍｐｌｅｔｉｏｎ  ｉｎｔｅｒｒｕｐｔ）を発行する。それらのコマンドが、メモリ・コントローラ４によって実行されるときに、コントローラＣＰＵ  ６は、コマンドに関連するデータが、コントローラ・メモリ・デバイス７に一時的に記憶され、また次いでその後にＩ／Ｏインターフェース・デバイス８を経由して１つまたは複数のＰＤ  ９に書き込まれるようにさせる。
【０００５】
従来、図１に示されるタイプのＨＤＤ−ベースのシステムの性能は、秒当たりの入出力（ＩＯ）（ＩＯＰＳ）と、いくつかの場合には、秒当たりのメガバイト（ＭＢ／ｓ）との観点から測定されてきている。そのようなストレージ・システムのレイテンシは、一般的に、レイテンシ＿全体＝レイテンシ＿ＳＷ＿スタック＋レイテンシ＿コントローラ＋レイテンシ＿ＨＤＤ＝１／ＩＯＰＳとして与えられ、ここでレイテンシ＿全体は、システムの全体のレイテンシであり、レイテンシ＿ＳＷ＿スタックは、メモリ・ドライバ１４に関連するレイテンシであり、レイテンシ＿コントローラは、メモリ・コントローラ４に関連するレイテンシであり、またレイテンシ＿ＨＤＤは、ＰＤ  ９に関連するレイテンシである。レイテンシ＿ＳＷ＿スタックは、一般的に、およそマイクロ秒（１０−６秒）の程度である。同様に、レイテンシ＿コントローラは、一般的に、およそ１０マイクロ秒の程度である。しかしながら、レイテンシ＿ＨＤＤは、一般的に、およそミリ秒（１０−３秒）または１０ミリ秒の程度である。全体のレイテンシのほぼ９９％は、それらのＨＤＤの極端に低速な機械部品に起因している。それゆえに、実用的な目的のためには、レイテンシ＿ＳＷ＿スタックと、レイテンシ＿コントローラとは、システム性能を決定するときに無視することができる。言い換えれば、システム性能は、レイテンシ＿ＨＤＤに等しいものとして推定することができる。
【０００６】
最近になって、ＰＤ  ９として磁気ＨＤＤを使用することから、ＰＤ  ９としてソリッド・ステート・ドライブ（ＳＳＤ：ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅｓ）またはＳＳＤとＨＤＤとの組合せを使用することへの移り変わりが起こってきている。産業界においては、ＳＳＤ−ベースのソリューションの使用は、ＨＤＤ−ベースのソリューションの進化と見なされる。しかしながら、ＳＳＤ−ベースのソリューションは、ＨＤＤ−ベースのソリューションよりも約１００倍高速であり、またＨＤＤ−ベースのソリューションよりもずっと低い電力しか消費しない。ＳＳＤ−ベースのソリューションにおけるこの観点は、ＳＳＤ−ベースのソリューションにおいても、コマンド・キューからメモリ・コントローラにコマンドをプルするために、以前から存在する上記で説明されたプル手法（ｐｕｌｌ  ｍｅｔｈｏｄｏｌｏｇｙ）を使用し続けるように産業界を導いてきている。また、ＳＳＤ−ベースのソリューションは、産業界において単にＨＤＤ−ベースのソリューションの進化にすぎないものとして見なされているので、ＩＯＰＳは、ＳＳＤ−ベースのソリューションを実施するストレージ・システムにおいてシステム性能を測定するための性能測定基準として使用されてきている。
【０００７】
しかしながら、ＳＳＤ−ベースのソリューションと、ＨＤＤ−ベースのソリューションとの間の違いは、それが目に見えるよりもずっと大きく、また伝統的な測定基準を使用して、ＳＳＤ−ベースのソリューションを実施するシステムの性能を測定するべきではない。ＳＳＤ−ベースのソリューションを実施するシステムにおいては、ストレージ・システムの全体のレイテンシは、レイテンシ＿全体＝レイテンシ＿ＳＷ＿スタック＋レイテンシ＿コントローラ＋レイテンシ＿ＳＳＤ＝１／ＩＯＰＳとして与えられ、ここでレイテンシ＿ＳＷ＿スタックは、メモリ・ドライバ１４に関連するレイテンシであり、レイテンシ＿コントローラは、メモリ・コントローラ４に関連するレイテンシであり、またレイテンシ＿ＳＳＤは、ＰＤ  ９として使用されるＳＳＤに関連するレイテンシである。ＨＤＤのレイテンシとは違って、ＳＳＤのレイテンシは、およそ１０から１００マイクロ秒の程度にあり、例えば、一般に１００から３００マイクロ秒範囲にあり、またメモリ・ドライバ１４と、メモリ・コントローラ４とに関連するレイテンシは、全体のレイテンシに対してそれよりもずっと多くのレイテンシを追加する。したがって、ＳＳＤ−ベースのソリューションを実施するストレージ・システムの全体のレイテンシを算出する際に、レイテンシ＿ＳＷ＿スタックと、レイテンシ＿コントローラとは、もはや無視されるべきではない。
【０００８】
コマンド・プル・アプローチは、メモリ・ドライバ１４と、メモリ・コントローラ４との間にかなりの相互作用を必要とする。これは、それがホスト・システム３の高速なオペレーティング・システム（ＯＳ）側が、より低速のＨＤＤ−ベースのコントローラ側とはほとんど完全に独立していることを可能にし、その結果、ＯＳ側は、より大きなキューの深さ（ＱＤ：ｑｕｅｕｅ  ｄｅｐｔｈ）を提供するためにキュー１３の中でできるだけ多くのコマンドを積み重ねることができるようになり、このより大きなキューの深さは、ＨＤＤ−ベースのソリューションにおいては非常に望ましく、また一般的であるという点で、ＨＤＤ−ベースのシステムにおいては便利なアプローチである。次いで、メモリ・コントローラ４は、それ自体のペースで、キュー１３からコマンドをプルすることができる。この方法は、ＨＤＤ−ベースのソリューションにおいては非常に便利である一方、それは、メモリ・コントローラ４と、ホスト・システム３との間で必要とされる同期化に起因して、及び、メモリ・コントローラ４が、それらが発行されたときよりもずっと後の時点でコマンドをピックアップすることができるという事実に起因して、大量の余分なレイテンシを加える。さらに、多くの場合にそうであるように、メモリ・コントローラ４によって行われるべきたくさんの作業がある場合には、コマンド処理のすべては、メモリ・コントローラ４の作業負荷の残りと必ず競合することになり、これは、全体のレイテンシに対して、より多くのレイテンシを追加する。
【０００９】
上記で説明されたコマンド・プル・モデルは、ＨＤＤ−ベースのソリューションの場合に非常によく機能し、ここでは、完了するために一般的に約１０，０００マイクロ秒かかり得るコマンドに対して５０から５００マイクロ秒を追加することは、本方法が提供する他の利点を仮定すると、無視できる。しかしながら、コマンド・プル・モデルは、アクセス・タイムが、１００マイクロ秒ほどの短い時間であり得るＳＳＤ−ベースのソリューションを実施するストレージ・システムの中で使用されるときに、または１マイクロ秒から５マイクロ秒ほどであるダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ：ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）ライト・バック（ＷＢ：ｗｒｉｔｅ  ｂａｃｋ）バッファがメモリ・コントローラ４の中で使用される場合には、許容可能な結果を生ずることはない。
【００１０】
それにもかかわらず、上記で示されるように、ＳＳＤ−ベースのソリューションを実施するストレージ・システムの全体のレイテンシは、レイテンシ＿ＳＷ＿スタックと、レイテンシ＿コントローラとを推定から除外しながら、依然として、レイテンシ＿ＳＳＤに等しいものとして推定されている。この理由のためにＳＳＤ−ベースのソリューションを実施するストレージ・システムの全体のレイテンシを低減させることにおける試みは、レイテンシ＿ＳＷ＿スタックまたはレイテンシ＿コントローラを低減させることではなく、レイテンシ＿ＳＳＤを低減させることに主として焦点を当てている。
【００１１】
レイテンシ＿ＳＷ＿スタックと、レイテンシ＿コントローラとのうちの一方または両方を低減させることにより、ＳＳＤ−ベースのソリューションを実施し、そして全体のレイテンシを低減させるストレージ・システムについての必要性が存在する。
【発明の概要】
【課題を解決するための手段】
【００１２】
本発明は、データ・ストレージ・システムと、メモリ・コントローラと、方法と、コンピュータ読取り可能媒体とを提供しており、これらのすべては、レイテンシを低減させるコマンド・プッシュ・モデルを実施する。データ・ストレージ・システムは、ホスト・システムと、メモリ・コントローラと、少なくとも１つのＳＳＤと、ホスト・システムとメモリ・コントローラとを相互接続するバスとを備える。ホスト・システムは、システム・プロセッサと、システム・メモリ・デバイスとを備える。メモリ・コントローラは、コントローラ・プロセッサと、不揮発性メモリ（ＮＶＭ：ｎｏｎｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ）デバイスと、入出力（Ｉ／Ｏ：ｉｎｐｕｔ／ｏｕｔｐｕｔ）インターフェース・デバイスとを備える。ＮＶＭデバイスの一部分は、コマンド・キューとして使用される。ＳＳＤは、Ｉ／Ｏインターフェース・デバイスに接続され、またＰＤのアレイとして構成されている。ホスト・システムは、バスを経由してＮＶＭデバイスにアクセスし、バスを経由してＮＶＭデバイスのコマンド・キューの中に、コマンドをプッシュする。
【００１３】
本方法は、
コントローラ・プロセッサと、ＮＶＭデバイスと、ＰＤのアレイとして構成された少なくとも１つのＳＳＤに接続されたＩ／Ｏインターフェース・デバイスとを備えるメモリ・コントローラにおいて、ＮＶＭデバイスの一部分をコマンド・キューとして構成すること、
バスを経由してメモリ・コントローラと相互接続されたホスト・システムにより、バスを経由してメモリ・コントローラの中にコマンドをプッシュすること、および
メモリ・コントローラにおいて、ＮＶＭデバイスのコマンド・キューにコマンドを記憶すること、
を含む。
【００１４】
コンピュータ読取り可能媒体は、バスを経由してホスト・システムに接続されるメモリ・コントローラのＮＶＭデバイスのコマンド・キューの中に、コマンドをプッシュするためのホスト・システムのプロセッサにより実行されるコンピュータ・プログラムをその上に記憶している。コンピュータ・プログラムは、第１のコード部分と、第２のコード部分とを含む。第１のコード部分は、ＰＤのアレイとして構成されるＳＳＤの１つまたは複数のアドレスを読み取り、または書き込むコマンドを受信する。第２のコード部分は、メモリ・コントローラの中に、コマンドをプッシュする。実例となる一実施形態に従って、第２のコード部分は、メモリ・コントローラのＮＶＭデバイスのコマンド・キューの中に、コマンドをプッシュする。別の実例となる実施形態に従って、第２のコード部分は、メモリ・コントローラのＮＶＭデバイスのコマンド・キューにコマンドを記憶するメモリ・コントローラのダイレクト・メモリ・アクセス（ＤＭＡ：ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）エンジンの中に、コマンドをプッシュする。
【００１５】
本発明のこれらおよび他の特徴および利点は、以下の説明と、図面と、特許請求の範囲とから明らかになるであろう。
【図面の簡単な説明】
【００１６】
【図１】コマンド・プル・モデルを実施する、既知のデータ・ストレージ・システムのブロック図である。
【図２】コマンド・プッシュ・モデルを実施する実例となる一実施形態によるデータ・ストレージ・システムのブロック図である。
【図３】コマンド・プッシュ・モデルを実施する別の実例となる実施形態によるデータ・ストレージ・システムのブロック図である。
【図４】図２に示されるデータ・ストレージ・システムによって実行されるコマンド・プッシュ方法を表すフローチャートである。
【図５】図３に示されるデータ・ストレージ・システムによって実行されるコマンド・プッシュ方法を表すフローチャートである。
【発明を実施するための形態】
【００１７】
本発明に従って、メモリ・ドライバと、メモリ・コントローラと、に関連するレイテンシを低減させるコマンド・プッシュ・モデルを実施する、データ・ストレージ・システムが提供される。コマンド・プッシュ・モデルは、書込みコマンドＩＯのための、ホスト・システムと、メモリ・コントローラとの間の同期化についての必要性をなくし、それによって同期化に関連するレイテンシをなくす。コマンドＩＯは、ホスト・システムにおいて発行されるので、ホスト・システムは、メモリ・コントローラのメモリ・デバイスにアクセスし、メモリ・デバイスのコマンド・キューの中に、コマンドＩＯと、関連するデータとをプッシュする。それゆえに、ホスト・システムは、メモリ・コントローラからのどのような介入もなしに各書込みコマンドＩＯを完了し、それによってホスト・システムとメモリ・コントローラとの間の同期化、または初期接続手順（ｈａｎｄｓｈａｋｉｎｇ）についての必要性を取り除いている。
【００１８】
メモリ・コントローラのメモリ・デバイスは、電源障害と、典型的なメモリ・エラーとに対して保護され、したがって、永続性ストレージ要素と考えられることもある。それゆえに、ホスト・システムは、ホスト・システムがメモリ・コントローラのメモリ・デバイスのコマンド・キューの中に、書込みコマンドと、任意の関連するデータとをプッシュする時間には、書込みコマンドＩＯが安全に完了されていると考えることができる。言い換えれば、ホスト・システムの観点から、ホスト・システムが、メモリ・コントローラのメモリ・デバイスのコマンド・キューの中に、書込みコマンドをプッシュするときに、それは、まるでホスト・システムがＰＤ  ９に対して書込みを完了しているかのようである。それゆえに、ホスト・システムは、メモリ・コントローラからのどのような介入もなしに各書込みコマンドＩＯを完了し、それによってホスト・システムと、メモリ・コントローラとの間の同期化、または初期接続手順についての必要性を取り除いている。
【００１９】
さらに、図１を参照して上記で説明されたコマンド・プル・モデルとは対照的に、ホスト・システムが、それがメモリ・コントローラのコマンド・キューの中に書込みコマンドをプッシュする時点で書込みコマンドが完了していると考えるので、本発明のメモリ・コントローラは、ひとたびメモリ・コントローラが書込みコマンドの処理を完了した後に、ホスト・システムに対して完了割込みを発行する必要はない。この特徴により、ホスト・システムと、メモリ・コントローラとは、書込みコマンドに関して互いに独立して動作することができるようになる。これらの特徴のすべての組合せは、レイテンシ＿ＳＷ＿スタックと、レイテンシ＿コントローラとの両方に対する大きな低減をもたらし、これは、全体のレイテンシにおける大きな低減をもたらす。
【００２０】
したがって、コマンドが、システム・メモリ１２のコマンド・キュー１３において用意され、また後でメモリ・コントローラ４の中にプルされ、またメモリ・コントローラ４によって処理される、図１を参照して上記で説明したコマンド・プル・モデルを使用するのではなくて、ホスト・システムは、メモリ・コントローラのメモリ・デバイス内に位置するコマンド・キューの中に、コマンドと、任意の関連するデータとをプッシュする。ホスト・システムが、メモリ・コントローラのメモリ・デバイスのコマンド・キューの中に、コマンドと、任意の関連するデータとをプッシュする方法は、いくつかのやり方で行われる可能性がある。第１の実例となる実施形態によると、ホスト・システムのメモリ・デバイスは、メモリ・コントローラのメモリ・デバイスのコマンド・キューの中に、コマンドと、関連するデータとをプログラムでプッシュする。本明細書において説明される第２の実例となる実施形態によると、メモリ・コントローラのダイレクト・メモリ・アクセス（ＤＭＡ）エンジンは、メモリ・コントローラのメモリ・デバイスのコマンド・キューの中に、コマンドと、任意の関連するデータとをプッシュする。これらの実施形態の両方は、ホスト・システムと、メモリ・コントローラとの間の同期化、または初期接続手順についての必要性を取り除いている。
【００２１】
図２は、コマンド・プッシュ・モデルを実施する第１の実例となる実施形態によるデータ・ストレージ・システム２０のブロック図を示すものである。システム２０は、ホスト・システム３０と、メモリ・コントローラ７０と、周辺相互接続（ＰＣＩ）またはＰＣＩ高速（ＰＣＩｅ）バス６５と、ＰＤ  １２０ａを備える少なくとも１つのＳＳＤ  １２０とを含む。ホスト・システム３０は、システムＣＰＵ  ４０と、システム・メモリ・デバイス６０とを含んでいる。メモリ・コントローラ７０は、ＣＰＵ  ８０と、不揮発性メモリ（ＮＶＭ）デバイス９０と、Ｉ／Ｏインターフェース・デバイス１１０とを含む。ＮＶＭデバイス９０は、一般的にＤＲＡＭデバイスである。ＮＶＭデバイス９０の一部分は、コマンド・キュー９１として使用される。Ｉ／Ｏインターフェース・デバイス１１０は、ＳＡＳ規格、ＳＡＴＡ規格、および／またはＮＶＭｅ規格など、知られているデータ転送プロトコル規格に準拠してデータ転送を実行するように構成されている。Ｉ／Ｏインターフェース・デバイス１１０は、ＳＳＤ（単数または複数）１２０の複数のＰＤ  １２０ａへのデータの転送と、ＳＳＤ（単数または複数）１２０の複数のＰＤ  １２０ａからのデータの転送とを制御する。メモリ・コントローラ７０は、ＰＣＩバス６５と、メモリ・ドライバ５０とを経由してシステムＣＰＵ  ４０と通信する。システム・メモリ・デバイス６０は、システムＣＰＵ  ４０により実行されるソフトウェア・プログラムと、データとを記憶する。
【００２２】
この実例となる実施形態に従って、メモリ・ドライバ５０は、バス６５を経由してＮＶＭデバイス９０と直接に通信する。典型的な書込みアクション中に、システムＣＰＵ  ４０は、メモリ・ドライバ５０を含むソフトウェア・スタックを実行し、このメモリ・ドライバは、ＮＶＭデバイス９０のコマンド・キュー９１の中に、コマンドと、データとをプッシュし、またそのコマンドと、データとが、キュー９１の中にあることをコントローラＣＰＵ  ８０に対して通知する。ホスト・システム３０と、メモリ・コントローラ７０との間の同期化、または初期接続手順は、プッシュ・アクションを実行するためには必要とされない。ひとたびメモリ・ドライバ５０が、コマンド・キュー９１の中に、書込みコマンドと、関連するデータとをプッシュした後に、ホスト・システム３０のＯＳは、書込みコマンドが完了しているとみなす。それゆえに、メモリ・コントローラ７０が、ホスト・システム３０に対して完了割込みを発行して、書込みコマンドが完了されていることをホストＣＰＵ  ４０に通知することは、必要ではない。
【００２３】
コントローラＣＰＵ  ８０がコマンドを実行する用意ができているときに、コントローラＣＰＵ  ８０は、ＮＶＭデバイス９０からコマンドとデータとを取り出し、またコマンドを実行する。書込みコマンドの場合には、コントローラＣＰＵ  ８０は、関連するデータが、Ｉ／Ｏインターフェース・デバイス１１０を経由してＳＳＤ  ＰＤ  １２０ａに対して書き込まれるようにさせる。読取りコマンドの場合には、コントローラＣＰＵ  ８０は、ＮＶＭ  ９０のキャッシュ（明確にするために示されていない）をチェックして、読み取られるべきデータがキャッシュの中にあるかどうかを決定し、またそうである場合には、キャッシュからデータを読み取り、またそれをホスト・システム３０に対して転送する。読み取られるべきデータが、キャッシュの中にない場合には、ＣＰＵ  ８０は、ＳＳＤ  ＰＤ  １２０ａからデータが読み取られ、そしてホスト・システム３０に対して転送されるようにさせる。
【００２４】
図２のコマンド・プッシュ・モデルと、図１のコマンド・プル・モデルとの間の重要な違いのうちの１つは、コントローラＣＰＵ  ８０がコマンドについて知りさえする前に、コマンド所有権が、ホスト・システム３０からＮＶＭデバイス９０のキュー９１へと転送されることである。図１のコマンド・プル・モデルにおいては、書込みコマンドに関連するコマンド所有権は、ホスト・システム３が、メモリ・コントローラ４から完了割込みを受信するまで、転送されない。さらに、図１のコマンド・プル・モデルにおいては、メモリ・コントローラ４の中に、システム・メモリ・デバイス１２のキュー１３からのコマンドをプルするために、コントローラＣＰＵ  ６と、ホスト・システム３との間で、同期化、または初期接続手順が発生する。これらのレイテンシを取り除くことは、一般的に、図１に示されるコマンド・プル・モデルと比べて１桁から２桁の大きさの書込みレイテンシにおける低減をもたらす。
【００２５】
ひとたびそれらのコマンドがＮＶＭ  ９０のキュー９１の中にプッシュされた後に、メモリ・コントローラ７０がコマンドの所有権を取得するので、ＮＶＭ  ９０が電源障害に対して保護されることが重要である。そのような保護は、いくつかのやり方で達成される可能性があるが、１つのやり方は、ＮＶＭ  ９０についてバッテリ・バックアップ（ＢＢＵ：ｂａｔｔｅｒｙ  ｂａｃｋｕｐ）のスーパー・キャパシタ（Ｓｕｐｅｒｃａｐ）ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）デバイスを使用することである。ＢＢＵのＳｕｐｅｒｃａｐ  ＤＲＡＭデバイスまたは他の適切なメモリ・デバイスが、この目的のために選択され得る方法は、当業者によって理解されるであろう。
【００２６】
メモリ・ドライバ５０が、キュー９１の中に、コマンドを効率的にプッシュするために、ＮＶＭデバイス９０は、バス６５を経由してメモリ・ドライバ５０によって直接にアクセス可能であるべきである。このアクセス可能性は、いくつかのやり方で達成されることもある。これを達成すべき１つのやり方は、ホスト・システム３０において使用されるコマンド及びデータ構造と同一のコマンド及びデータ構造を、ＮＶＭデバイス９０においても使用することである。これは、当業者によって理解されることになるように、ベース・アドレス・レジスタ（ＢＡＲ：Ｂａｓｅ  Ａｄｄｒｅｓｓ  Ｒｅｇｉｓｔｒｅｒｓ）の便利なプログラミングを通してＰＣＩｅにおいて可能である。ホスト・システム３からＮＶＭデバイス９０へのデータ転送は、メモリ・ドライバ５０によってプログラムで達成される可能性がある。
【００２７】
メモリ・ドライバ５０はまた、ＮＶＭデバイス９０におけるどの入力がコマンド情報を用いてそれらをマッピングし／タグ付けするために使用可能であるかを決定する方法とともに提供されるべきである。各コマンドは、データ・セットと、コマンド情報とから構成されている。コマンド情報は、読取り／書込み、ブロック・アドレス、ポインタ、フラグなどの情報を含んでいる。コマンド情報は、コマンド・タイプによって異なり、またデータ・セットとは独立に生成される。データ・セットと、コマンド情報との両方は、ＮＶＭ  ９０の中に移動される必要があり、またデータ・セットは、コマンド情報と、データ・セットとの間の整合性を保証するために、対応するコマンド情報を用いてマッピングされ／タグ付けされる必要がある。これが達成される方法は、使用されるメモリ・コントローラ７０のタイプまたは構成に応じて異なる。すべてのメモリ・コントローラは、この機能を提供するために構成可能であるが、ソリューションの効率は、メモリ・コントローラのハードウェア、ソフトウェアおよび／またはファームウェアの実装形態に依存することになる。それゆえに、この問題は、当業者によって理解されるように、ケース・バイ・ケースで対処される必要があることになる。
【００２８】
図３は、ＤＭＡエンジンを使用して、メモリ・コントローラのメモリ・デバイスのキューの中に、コマンドと、データとをプッシュする、第２の実例となる実施形態によるデータ・ストレージ・システム２００のブロック図を示すものである。ＤＭＡエンジンは、ホスト・システムの一部分、またはメモリ・コントローラの一部分とすることができるが、例証の目的のために、それは、メモリ・コントローラの一部分であるように示され、また説明されている。本システム２００は、ホスト・システム２２０と、メモリ・コントローラ２７０と、ＰＣＩバスまたはＰＣＩｅバス２６５と、ＰＤ  ３２０ａを備える少なくとも１つのＳＳＤ  ３２０とを含む。ホスト・システム２２０は、システムＣＰＵ  ２３０と、システム・メモリ・デバイス２６０とを含む。メモリ・コントローラ２７０は、ＤＭＡエンジン２４０と、ＣＰＵ  ２８０と、ＮＶＭデバイス２９０と、Ｉ／Ｏインターフェース・デバイス３１０とを含む。ＮＶＭデバイス２９０は、一般的にＤＲＡＭデバイスであり、またそれは、ＮＶＭ  ９０を参照して上記で説明されたものと同じ保護を有する。ＮＶＭデバイス２９０の一部分は、コマンド・キュー２９１として使用される。Ｉ／Ｏインターフェース・デバイス３１０は、ＳＡＳ規格、ＳＡＴＡ規格、および／またはＮＶＭｅ規格など知られているデータ転送プロトコル規格に準拠してデータ転送を実行するように構成されている。Ｉ／Ｏインターフェース・デバイス３１０は、ＳＳＤ（単数または複数）３２０の複数のＰＤ  ３２０ａへのデータの転送と、ＳＳＤ（単数または複数）３２０の複数のＰＤ  ３２０ａからのデータの転送とを制御する。メモリ・コントローラ２７０は、ＰＣＩバス２６５と、メモリ・ドライバ２５０とを経由してシステムＣＰＵ  ２３０と通信する。システム・メモリ・デバイス２６０は、システムＣＰＵにより実行されるソフトウェア・プログラムと、データとを記憶する。
【００２９】
実例となる実施形態に従って、ＤＭＡエンジン２４０は、バス２６５を経由してメモリ・ドライバ２５０と通信し、ＮＶＭデバイス２９０と直接に通信する。典型的な書込みアクション中に、メモリ・ドライバ２５０は、バス２６５を経由してＤＭＡエンジン２４０に対して、コマンドと、任意の関連するデータとをプッシュする。ＤＭＡエンジン２４０は、ＮＶＭデバイス２９０のコマンド・キュー２９１に、コマンドと、データとを記憶する。ホスト・システム２２０と、メモリ・コントローラ２７０との間の同期化または初期接続手順は、プッシュ・アクションを実行するためには必要とされない。ひとたびＤＭＡエンジン２４０が、コマンド・キュー２９１に書込みコマンドと、関連するデータとを記憶した後に、それは、一般的には割込みを発行することにより、コマンド及びデータがＮＶＭ  ２９０の中にあることをコントローラＣＰＵ  ２８０に通知することが好ましい。ホスト・システム２２０のＯＳは、コマンド及びデータがＤＭＡエンジン２４０に対して転送された時点で書込みコマンドが完了されたとみなす。それゆえに、メモリ・コントローラ２７０が、ホスト・システム２２０に対して完了割込みを発行して、書込みコマンドが完了していることを通知することは、必要ではない。
【００３０】
コントローラＣＰＵ  ２８０がコマンドを実行する用意ができているときに、コントローラＣＰＵ  ２８０は、ＮＶＭデバイス２９０からコマンドとデータとを取り出し、またコマンドを実行する。書込みコマンドの場合には、コントローラＣＰＵ  ２８０は、関連するデータを、Ｉ／Ｏインターフェース・デバイス３１０を経由してＳＳＤ  ＰＤ  ３２０ａに対して書き込ませる。読取りコマンドの場合には、コントローラＣＰＵ  ２８０は、ＮＶＭ  ２９０のキャッシュ（明確にするために示されていない）をチェックして、読み取られるべきデータがキャッシュの中にあるかどうかを決定し、読み取られるべきデータがキャッシュの中にある場合に、キャッシュからデータを読み取り、またそれをホスト・システム２２０に対して転送する。読み取られるべきデータがキャッシュの中にない場合には、ＣＰＵ  ２８０は、ＳＳＤ  ＰＤ  ３２０ａからデータが読み取られ、またホスト・システム２２０に対して転送されるようにさせる。
【００３１】
図２を参照して上記で説明されるコマンド・プッシュ・モデルと同様に、図３のコマンド・プッシュ・モデルを用いて、コマンド所有権は、コントローラＣＰＵ  ２８０がコマンドの存在を認識する前に、ホスト・システム２２０からＮＶＭデバイス２９０のキュー２９１へと転送される。図２を参照して上記で説明されるコマンド・プッシュ・モデルと同様に、図３のコマンド・プッシュ・モデルを用いて、キュー２９１の中にコマンドをプッシュするために、コントローラＣＰＵ  ２８０と、ホスト・システム２２０との間には、同期化または初期接続手順が必要とされることはない。それゆえに、図１を参照して上記で説明されるレイテンシは、取り除かれる。
【００３２】
図４は、図２に示されるホスト・システム３０によって部分的に、またメモリ・コントローラ７０によって部分的に実行される実例となる実施形態によるコマンド・プッシュ方法を表すフローチャートを示すものである。本方法は、単一のコマンドを参照して説明されることになるが、本方法のステップは、複数のコマンドについて同時に実行される可能性もある。システムＣＰＵ  ４０は、ブロック４０１によって示されるように、読取りコマンドまたは書込みコマンドを発行する。ホスト・システム３０のメモリ・ドライバ５０は、ＮＶＭデバイス９０のキュー９１の中に、コマンドをプッシュし、またブロック４０２によって示されるように、コマンドがＮＶＭデバイス９０の中にあることをメモリ・コントローラ７０に通知する。
【００３３】
書込みコマンドの場合には、コマンドに関連するデータは、ＮＶＭデバイス９０の中にプッシュされる。その後に、ＮＶＭデバイス９０から読み取られたコマンド及びデータは、ＳＳＤ（単数または複数）１２０のＰＤ  １２０ａに書き込まれる。ＮＶＭデバイス９０の中にプッシュされている読取りコマンドの場合には、メモリ・コントローラ７０は、一般的に、データがＮＶＭデバイス９０のキャッシュに記憶されるかどうかを判定することになる。メモリ・コントローラ７０が、キャッシュにデータが記憶されている（すなわち、キャッシュ・ヒット）と判定する場合、メモリ・コントローラ７０は、キャッシュからデータを読み取り、またそれをホスト・システム３０に対して転送する。メモリ・コントローラ７０が、キャッシュにデータが記憶されていない（すなわち、キャッシュ・ミス）と判定する場合、メモリ・コントローラ７０は、ＳＳＤ（単数または複数）１２０のＰＤ  １２０ａからデータを読み取り、またデータをホスト・システム３０に対して転送する。
【００３４】
書込みコマンドが、ＮＶＭデバイス９０のキュー９１の中にプッシュされる場合には、ひとたびメモリ・ドライバ５０がキュー９１の中に書込みコマンドをプッシュすれば、ＩＯは、ホスト・システム３０においては完了していることになる。読取りコマンドが、キュー９１の中にプッシュされる場合には、読取りデータがホスト・システム３０に対して戻されるまで、ＩＯは、ホスト・システム３０において完了していることにはならず、これは、読取りコマンドが、図１に示された既知のストレージ・システム２において処理されるやり方である。本発明の方法およびシステムによって達成されるレイテンシにおける低減は、書込みコマンドに関して最も顕著である。これは、ホスト・システム３０からメモリ・コントローラ７０へと書込みコマンドを転送するための同期化がもはや必要とされないこと、及び、書込みコマンドが完了していると見なされるまで、ホスト・システム３０が完了割込みを待つ必要がもはやないという事実に起因する。
【００３５】
図５は、図３に示されるホスト・システム２２０によって部分的に、またメモリ・コントローラ２７０によって部分的に実行される実例となる実施形態によるコマンド・プッシュ方法を表すフローチャートを示すものである。本方法は、単一コマンドを参照して説明されることになるが、本方法のステップはまた、複数のコマンドについて同時に実行される可能性もある。システムＣＰＵ  ２３０は、ブロック５０１によって示されるように、読取りコマンド、または書込みコマンドを発行する。メモリ・コントローラ２７０は、ブロック５０２によって示されるように、ＤＭＡエンジン２４０に対してコマンドをプッシュする。ＤＭＡエンジン２４０は、ブロック５０３によって示されるように、ＮＶＭデバイス２９０のキュー２９１にコマンドを記憶し、またコマンドがＮＶＭデバイス２９０の中にあることをメモリ・コントローラ２７０に通知する。本発明は、コマンドがキュー２９１の中に配置されていることをメモリ・コントローラ２７０に通知する手法によって制限されない。これは、当業者によって理解されることになるように、いくつかのやり方で、例えば、割込みを発行すること、レジスタの中の値をアップデートすることなどで達成される可能性がある。
【００３６】
ホスト・システム３０および２２０の機能と、メモリ・コントローラ７０および２７０の機能とは、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せの形で実施されることもある。ソフトウェアまたはファームウェアの形で機能を実施するためのコンピュータ・コードは、システム・メモリ・デバイス６０および２６０、ＮＶＭデバイス９０または２９０、何らかの他のメモリ・デバイスなどのコンピュータ読取り可能媒体（ＣＲＭ：ｃｏｍｐｕｔｅｒ−ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）の上に記憶される。ＣＲＭは、それだけには限定されないが、磁気ストレージ・デバイスと、ソリッド・ステート・ストレージ・デバイスと、フラッシュ・メモリ・デバイスと、光ストレージ・デバイスとを含めて、任意のタイプのメモリ・デバイスとすることができる。ＣＰＵ  ４０、８０、２３０および２８０のうちの各々は、一般的に、少なくとも１つのマイクロプロセッサを備えるが、例えば、マイクロコントローラと、デジタル信号プロセッサ（ＤＳＰ：ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ）と、特定用途向け集積回路（ＡＳＩＣ：ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）と、システム・オン・チップ（ＳＯＣ：ｓｙｓｔｅｍ  ｏｎ  ａ  ｃｈｉｐ）とを含めて、関連するタスクを実行するために、必要であり、または望ましい機能を提供することができる任意のタイプのプロセッサを備えることができる。用語「プロセッサ」は、その用語が、本明細書において使用されるとき、上記で説明されるタスクと、ＣＰＵ  ４０、８０、２３０および２８０がそれらの役割を実行することを可能にするために必要と見なされる任意の追加のタスクとを実行するようにプログラムされ、または構成されていることもあるこれらおよび他のタイプの計算デバイスを示すことを意図している。
【００３７】
本発明は、本発明の原理および概念を実証する目的のために少数の実例となる、また例示の実施形態に関連して説明されてきていることに注意すべきである。当業者によって理解されることになるように、多数の変形形態が、本発明の範囲を逸脱することなく、上記で説明される実例となる実施形態に対して行われることもある。すべてのそのような変形形態は、本発明の範囲内にある。例えば、ＰＤ  １２０ａおよび３２０ａは、それぞれ図２および３に示されているが、それぞれ少なくとも１つのＳＳＤ  １２０または３２０の形でただ実施されているので、ＰＤ  １２０ａおよび３２０ａは、１つまたは複数のＳＳＤと、１つまたは複数のＨＤＤとの組合せとして実施される可能性がある。
【図１】
2014154155.tif 000003
【図２】
2014154155.tif 000004
【図３】
2014154155.tif 000005
【図４】
2014154155.tif 000006
【図５】
2014154155.tif 000007
【外国語明細書】
2014154155.tif 000008
2014154155.tif 000009
2014154155.tif 000010
2014154155.tif 000011
2014154155.tif 000012
2014154155.tif 000013
2014154155.tif 000014
2014154155.tif 000015
2014154155.tif 000016
2014154155.tif 000017
2014154155.tif 000018
2014154155.tif 000019
2014154155.tif 000020
2014154155.tif 000021
2014154155.tif 000022
2014154155.tif 000023
2014154155.tif 000024
2014154155.tif 000025
2014154155.tif 000026
2014154155.tif 000027
2014154155.tif 000028
2014154155.tif 000029
2014154155.tif 000030