(57)【要約】【課題】領域ロックを使用して、接続されたホストシステムから受信されたＩ／Ｏ要求をコントローラ内の複数の処理スタック（１０２、１０４）のうちの１つに効率的に転送するための方法および構造を記憶コントローラ（１００）内に提供すること。【解決手段】コントローラ内の領域ロックモジュール（１０６）は、それぞれの処理スタックが記憶デバイスのブロックアドレスの範囲に関して領域ロックを要求することを可能にする。Ｉ／Ｏ要求が複数の処理スタックのうちの特定の１つに転送されるべきブロックアドレスの範囲を識別するために転送タイプのロック要求を確立することが可能である。【選択図】図１
2014120151.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数のホストシステム（１２０）に結合するように適合され、かつ結合した１つまたは複数の記憶デバイス（１３０）においてデータを管理するように適合された記憶コントローラ（１００）であって、
接続されたホストシステムから受信された高速経路処理用にフォーマットされたＩ／Ｏ要求を処理するように適合された高速経路回路（１０２）と、
前記コントローラのプロセッサにおいて動作するファームウェア処理スタック（１０４）であって、任意のフォーマットのＩ／Ｏ要求を処理するように適合されたファームウェア処理スタック（１０４）と、
前記高速経路回路に結合し、かつ前記ファームウェア処理スタックに結合した領域ロックモジュール（１０６）であって、ブロックアドレスの指定された範囲をロックするためのロック要求信号を受信するように適合され、ブロックアドレスの現在ロックされている範囲の状況に基づいて、受信された高速経路フォーマットＩ／Ｏ要求が前記ファームウェア処理スタックに転送されるべきかどうかを判断するようにさらに適合された領域ロックモジュール（１０６）とを備え、
前記高速経路フォーマットＩ／Ｏの処理が前記ファームウェア処理スタックに転送されるべきであることを判断することに応答して、前記高速経路フォーマットＩ／Ｏ要求を処理するための前記ファームウェア処理スタックに転送するように適合された
記憶コントローラ（１００）。
【請求項２】
前記ファームウェア処理スタックが、ブロックアドレスの範囲内のブロックにアクセスすることを試みる高速経路フォーマットＩ／Ｏ要求が前記ファームウェア処理スタックによって処理されるべきであることを判断することに応答して、ブロックアドレスの前記範囲に関して転送タイプの領域ロックを確立するためのロック要求を前記領域ロックモジュールに適用するように適合され、
前記領域ロックモジュールが、前記ファームウェア処理スタックからの前記ロック要求の受信に応答して、ブロックアドレスの範囲に関して転送タイプの領域ロックを確立するようにさらに適合され、
前記コントローラが、転送タイプの領域ロックが前記高速経路フォーマットＩ／Ｏ要求の高速経路回路処理によって影響を受けることになるブロックアドレスの範囲に関して確立されていることを検出することに応答して、受信された高速経路フォーマットＩ／Ｏ要求を前記ファームウェア処理スタックに転送するようにさらに適合された
請求項１に記載のコントローラ。
【請求項３】
前記ファームウェア処理スタックに結合したキャッシュメモリ（１０８）であって、前記ファームウェア処理スタックによる書込みＩ／Ｏ要求の処理によって影響を受けるブロックアドレスに関する書込みデータを記憶するように適合されたキャッシュメモリ（１０８）をさらに備え、
前記ファームウェア処理スタックが、ブロックアドレスの範囲内のブロックアドレスに関するデータを前記キャッシュメモリ内に記憶することに応答して、ブロックアドレスの前記範囲に関して転送タイプの領域ロック要求を前記領域ロックモジュールに適用するようにさらに適合された
請求項２に記載のコントローラ。
【請求項４】
前記ファームウェア処理スタックが、ライトバック・キャッシュメモリとして前記キャッシュメモリを管理する、
請求項３に記載のコントローラ。
【請求項５】
前記ファームウェア処理スタックに結合した不良ブロックメモリ（１１０）であって、前記記憶デバイスの潜在的な不良ブロックのブロックアドレスを識別する不良ブロック情報を記憶するように適合された、不良ブロックメモリ（１１０）をさらに備え、
前記ファームウェア処理スタックが、ブロックアドレスの範囲内のブロックアドレスを識別するエントリーを前記不良ブロックメモリ内に記憶することに応答して、ブロックアドレスの前記範囲に関して転送タイプの領域ロック要求を前記領域ロックモジュールに適用するようにさらに適合された
請求項２に記載のコントローラ。
【請求項６】
前記高速経路回路が、前記高速経路フォーマットＩ／Ｏ要求に関するコンテキスト情報を前記領域ロックモジュールに適用して、
前記領域ロックモジュールが、前記コンテキスト情報に従って、前記高速経路フォーマットＩ／Ｏ要求を処理するための前記ファームウェア処理スタックに転送するようにさらに適合された
請求項１に記載のコントローラ。
【請求項７】
前記高速経路回路が、前記高速経路フォーマットＩ／Ｏの処理が前記ファームウェア処理スタックに転送されるべきであることを示す、前記領域ロックモジュールからの信号に応答して、前記高速経路フォーマットＩ／Ｏ要求を処理するための前記ファームウェア処理スタックに転送するようにさらに適合された、
請求項１に記載のコントローラ。
【請求項８】
１つまたは複数のホストシステム（１２０）に結合するように適合され、かつ１つまたは複数の記憶デバイス（１３０）に結合するように適合された記憶コントローラ（１００）内で動作可能な方法であって、前記記憶コントローラが、ホストシステムから受信された高速経路フォーマットＩ／Ｏ要求を処理するための高速経路回路（１０２）を有し、かつ任意のフォーマットのＩ／Ｏ要求を処理するためのファームウェア処理スタック（１０４）を有し、前記方法が、
高速経路フォーマットＩ／Ｏ要求を受信することと、
前記コントローラの領域ロックモジュール（１０６）の動作によって、ブロックアドレスの現在ロックされている範囲の状況に基づいて、前記受信された高速経路フォーマットＩ／Ｏが前記ファームウェア処理スタックに転送されるべきかどうかを判断することと、
前記高速経路フォーマットＩ／Ｏ要求が処理するための前記ファームウェア処理スタックに転送されるべきであるという判断に応答して、前記高速経路フォーマットＩ／Ｏ要求を処理するための前記ファームウェア処理スタックに転送することと
を含む方法。
【請求項９】
前記高速経路フォーマットＩ／Ｏ要求の受信に応答して、前記高速経路回路からの高速経路ロック要求信号を前記領域ロックモジュールに印加することであって、前記高速経路ロック要求が前記高速経路フォーマットＩ／Ｏ要求に関する情報を含む、印加することをさらに含み、
前記判断することのステップが、
領域ロックモジュールの動作によって、前記高速経路ロック要求信号と共に提供された前記情報に基づいて、前記受信された高速経路フォーマットＩ／Ｏ要求がブロックアドレスのロックされた範囲内のブロックアドレスを対象とするかどうかを判断することを含む、
請求項８に記載の方法。
【請求項１０】
前記ファームウェア処理スタックの動作によって、ブロックアドレスの範囲にアクセスを試みている高速経路フォーマットＩ／Ｏ要求が前記ファームウェア処理スタックに転送されるべきである前記範囲を識別することと、
ブロックアドレスの前記識別された範囲に関して転送タイプのロックの確立を要求する、前記ファームウェア処理スタックからの転送タイプのロック要求信号を前記領域ロックモジュールに印加することと、
前記領域ロックモジュールの動作によって、前記転送タイプのロック要求信号の受信に応答して、前記転送タイプのロック要求信号内で識別されたブロックアドレスの前記範囲に関して前記転送タイプのロックを確立することとをさらに含み、
前記判断することのステップが、
ブロックアドレスの現在ロックされた範囲の状況に基づいて、前記高速経路フォーマットＩ／Ｏ要求の処理が前記ファームウェア処理スタックに転送されるべきであるように、前記受信された高速経路フォーマットＩ／Ｏ要求が前記確立された転送タイプのロックに関連するブロックアドレスの前記範囲内のブロックアドレスを対象とするかどうかを判断することをさらに含む、
請求項９に記載の方法。
【請求項１１】
前記コントローラが前記ファームウェア処理スタックに結合したキャッシュメモリ（１０８）を有し、前記ファームウェア処理スタックがライトバック・キャッシュとして前記キャッシュメモリを管理し、
前記方法が、
前記ファームウェア処理スタックの動作によって、前記ファームウェア処理スタックによる書込みＩ／Ｏ要求を処理することに応答して、書込みデータを前記キャッシュメモリ内に記憶することをさらに含み、
前記識別することのステップが、
キャッシュメモリ内に記憶された前記書込みデータに関連するブロックアドレスを含むブロックアドレスの前記範囲を識別することをさらに含む
請求項１０に記載の方法。
【請求項１２】
前記コントローラが前記ファームウェア処理に結合した不良ブロックメモリ（１１０）を有し、
前記方法が、
前記ファームウェア処理スタックの動作によって、前記記憶デバイス上の潜在的な不良ブロックのブロックアドレスを識別する情報を前記不良ブロックメモリ内に記憶することをさらに含み、
前記識別することのステップが、
潜在的な不良ブロックのブロックアドレスを前記不良ブロックメモリ内に含むブロックアドレスの前記範囲を識別することをさらに含む、
請求項１０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全体として、記憶コントローラに関し、より詳細には、領域ロック構造を使用して、Ｉ／Ｏ要求を記憶コントローラの複数のＩ／Ｏ処理スタックのうちの１つに転送するための方法および構造に関する。
【０００２】
関連特許
本特許は（本明細書で集合的に「関連特許」と呼ばれる）以下の共同所有された米国特許および／または特許出願に関する。
２０１０年４月１４日に出願した、「ＡＰＰＡＲＡＴＵＳ  ＡＮＤ  ＭＥＴＨＯＤＳ  ＦＯＲ  ＴＲＥＥ  ＭＡＮＡＧＥＭＥＮＴ  ＡＳＳＩＳＴ  ＣＩＲＣＵＩＴ  ＩＮ  Ａ  ＳＴＯＲＡＧＥ  ＳＹＳＴＥＭ」という表題の米国特許出願第１２／７６０，４１５号
２０１０年４月１４日に出願した、「ＡＰＰＡＲＡＴＵＳ  ＡＮＤ  ＭＥＴＨＯＤＳ  ＦＯＲ  ＲＥＧＩＯＮ  ＬＯＣＫ  ＭＡＮＡＧＥＭＥＮＴ  ＡＳＳＩＳＴ  ＣＩＲＣＵＩＴ  ＩＮ  Ａ  ＳＴＯＲＡＧＥ  ＳＹＳＴＥＭ」という表題の米国特許出願第１２／７６０，４３４号
２００５年１０月１９日に出願した、「ＭＥＴＨＯＤＳ  ＡＮＤ  ＳＹＳＴＥＭＳ  ＦＯＲ  ＬＯＣＫＩＮＧ  ＩＮ  ＳＴＯＲＡＧＥ  ＣＯＮＴＲＯＬＬＥＲＳ」という表題の米国特許第７，５２９，９０２号
【０００３】
これらのすべては参照によって本明細書に組み込まれている。
【背景技術】
【０００４】
記憶コントローラは、１つまたは複数のホストシステムからＩ／Ｏ要求を受信して、そのような受信された要求を処理して、記憶コントローラに結合した記憶デバイス上にデータを記憶するか、またはその記憶デバイス上のデータを取り出すように適合されたデバイスである。例えば、ＲＡＩＤ（独立ドライブの冗長アレイ）記憶コントローラは、それぞれが１つまたは複数の物理記憶デバイスの一部を含む、１つまたは複数の論理ボリュームを管理する。ＲＡＩＤコントローラは、論理ボリュームの論理ブロックアドレスを記憶デバイスの対応する物理ブロックにマッピングし、（論理ボリュームに関して定義された特定のＲＡＩＤ記憶管理技法の冗長性ポリシーとストライピングポリシーとに従って）強化された信頼性および／もしくは性能のためのデータの冗長性ならびに／またはストライピングを提供する。
【０００５】
高性能記憶コントローラが、Ｉ／Ｏ要求を処理する際に記憶コントローラの性能を強化するためにキャッシュメモリを利用することは一般的である。例えば、要求されたデータを、論理ボリュームを含む記憶デバイスから取り出すことよりも、要求されたデータをキャッシュメモリから取り出すことによって、後続の読取りＩ／Ｏ要求をはるかに迅速に満たすことができるように、ホストシステムによって論理ボリュームに書き込まれたデータを記憶コントローラのキャッシュメモリ内に記憶することが可能である。一部の記憶コントローラは、データがキャッシュメモリと記憶デバイスの両方に書き込まれる「ライトスルー（ｗｒｉｔｅ−ｔｈｒｏｕｇｈ）」キャッシュとしてキャッシュメモリを管理することができる。一部のコントローラは、データがキャッシュメモリに書き込まれ、ある後の時点で（例えば、記憶コントローラがＩ／Ｏ要求をあまり忙しく処理していないときに）だけ記憶デバイスにポスト／フラッシュされる「ライトバック（ｗｒｉｔｅ−ｂａｃｋ）」モードでキャッシュメモリを管理することができる。ライトバックモードの場合、キャッシュメモリ内にはあるが、記憶デバイス上にまだ記憶されていない（「ダーティデータ（ｄｉｒｔｙ  ｄａｔａ）」と呼ばれる）データが存在する場合もある。
【０００６】
一部の記憶コントローラ（例えば、高性能ＲＡＩＤ記憶コントローラ）は、Ｉ／Ｏ要求を処理するための複数の処理経路または処理スタックを記憶コントローラ内に提供する。例えば、ＬＳＩ  Ｃｏｒｐｏｒａｔｉｏｎからの一部の記憶コントローラは、ファームウェア処理スタック（例えば、コントローラの汎用プロセッサまたは専用プロセッサによって実行されるファームウェア命令として一般に実施される第２の／従来の処理経路）と共に動作可能な「高速経路」処理回路（例えば、第１の処理経路／処理スタック）を提供する。ＬＳＩ  Ｃｏｒｐｏｒａｔｉｏｎの高速経路処理回路は、ホストシステム上の専用ドライバと協働して、高速経路回路が要求を迅速に処理することを可能にするようにフォーマットされたＩ／Ｏ要求をより迅速に処理する（例えば、ホストシステム拡張ドライバは、ＲＡＩＤマッピングを理解して、基礎となる物理記憶デバイスに直接的にアクセスするために高速経路要求を生成し、それにより、高速経路回路がＩ／Ｏ要求を迅速に処理することを可能にする）。ファームウェア処理経路は、（例えば、高速経路Ｉ／Ｏ要求としてのそのフォーマットにかかわらず、Ｉ／Ｏ要求を処理するために）任意のホストシステムから受信された任意のタイプのＩ／Ｏ要求を処理するように適合されている。ファームウェアスタックは、命令を実行して、完全なＲＡＩＤマッピングおよびＲＡＩＤ管理を提供する汎用プロセッサを使用して、より一般化された処理に対処する。したがって、ファームウェア処理スタックは、より柔軟ではあるが、高速経路回路が行うよりも、Ｉ／Ｏ要求の処理がより遅い。
【０００７】
複数の処理スタックを有する（例えば、高速経路回路経路とファームウェア処理スタックとを有する）そのような記憶コントローラでは、記憶コントローラによる一部の初期処理は、複数の処理スタックのうちどれが特定のＩ／Ｏ要求を処理するのに適しているかを判断する必要がある。この初期処理は、要因の数に応じて、複雑なプロセスであり得る。例えば、記憶コントローラがライトバックモードでそのキャッシュメモリを利用する場合、高速経路処理回路の使用は、まだ記憶デバイスにフラッシュまたはポストされていない現在ダーティデータが記憶コントローラのキャッシュメモリ内に存在する場合、データの整合性問題を生じさせる可能性がある。オプションで、高速経路回路をそのようなコントローラ内で同調することが可能であり、それにより、その高速経路回路がキャッシュメモリのコンテンツを認識せず、したがって、ダーティデータがフラッシュされた場合に後で上書き可能なデータを記憶デバイスに書き込むことができるようになる。または、高速経路回路によってアクセスされるブロックに関するダーティデータ（より最新なデータ）が現在キャッシュメモリ内に記憶されているため、高速経路回路は記憶デバイスから最新でないデータを読み取ることができる。さらに、例えば、ファームウェア処理スタックが論理ボリュームからもしくは特定の記憶デバイスからデータを記憶する際または取り出す際に回避すべき不良ブロックのリストを維持する場合、高速経路処理回路は、その不良ブロックのリストを認識していない可能性があり、潜在的な不良ブロックにアクセスすることを試みることによって、この場合も、データの整合性問題を生じさせる可能性がある。高速経路回路は、ファームウェア処理スタックだけが不良であり得ることを認識しているそのような不良ブロックからデータを読み取ることまたはそのような不良ブロックに書き込むことを試みる場合がある。ファームウェアＩ／Ｏ要求処理スタックが、より小さなＩ／Ｏ要求を結合して（ｃｏａｌｅｓｃｉｎｇ）、フルストライプ書込み（ｆｕｌｌ−ｓｔｒｉｐ  ｗｒｉｔｅｓ）を形成すること、Ｉ／Ｏ要求をストリーミングするための最適化など、ある種の最適化に現在従事しているその他の状況が生じる可能性がある。これらのおよびその他の理由は、特定のプロセッサを指定または選好するためにホストが要求を符号化するにもかかわらず、記憶コントローラのあるＩ／Ｏ要求プロセッサを別のＩ／Ｏプロセッサよりも選好させる可能性がある。
【０００８】
複数の処理スタックのうちのどれがＩ／Ｏ要求を処理するのに最も適しているかを判断する様々な状態を明らかにすることは、時間がかかり、かつ複雑な手順であり得る。したがって、本技法は、ある状態が生じる可能性がある場合、これらのまたはその他の潜在的な問題を回避するために、複数の処理スタックのうちの１つの使用を単に無効にする（例えば、ＬＳＩ  Ｃｏｒｐｏｒａｔｉｏｎの記憶コントローラの高速経路Ｉ／Ｏ処理回路の使用を無効にする）ことができる。例えば、（特定の高速経路Ｉ／Ｏ要求がそのダーティデータにアクセスできるかどうかにかかわらず）何らかのダーティデータが現在ライトバック・キャッシュメモリ内に記憶されている場合、または（特定の高速経路Ｉ／Ｏ要求がそれらの不良ブロックにアクセスすることができるかどうかにかかわらず）何らかのブロックがファームウェア処理スタックによって「不良ブロック」として指定されている場合、ファームウェア処理スタックは、高速経路処理回路を無効にして、より遅いが、より一般化されたその処理経路を介して、すべてのＩ／Ｏ要求を処理することを選択する。慎重な設計手法では、高速経路回路を対象とするＩ／Ｏ要求の処理によってこれらのおよびその他の問題が生じることを回避するためにＬＳＩ高速経路Ｉ／Ｏ処理回路を単に無効にすることが可能である。高速経路Ｉ／Ｏ処理回路の使用を無効にすることは、記憶コントローラの性能を劣化させる可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
したがって、Ｉ／Ｏ処理スタックのうちのどれが特定のＩ／Ｏ要求を処理するのに最も適しているかを効果的かつ効率的に判断し、データの整合性の問題のリスクなしに、受信されたＩ／Ｏ要求を好ましい選択されたＩ／Ｏ処理スタックに転送することが現在の課題である。
【課題を解決するための手段】
【００１０】
本発明は、上記のおよびその他の問題を解決し、それによって、領域ロックを使用して、接続されたホストシステムから受信されたＩ／Ｏ要求を記憶コントローラ内の複数の処理スタックのうちの１つに効率的に転送するための方法および構造をそのコントローラ内に提供することによって、有用な最新技術を前進させる。コントローラ内の領域ロックモジュールは、それぞれの処理スタックが記憶デバイスのブロックアドレスの範囲に関して領域ロックを要求することを可能にする。Ｉ／Ｏ要求が複数の処理スタックのうちの特定の１つに転送されるべきブロックアドレスの範囲を識別するために転送タイプのロック要求を確立することが可能である。
【００１１】
高速経路フォーマットＩ／Ｏ要求を処理するための高速経路回路と、任意の形態のＩ／Ｏ要求を処理するためのファームウェア処理スタックとを有するコントローラの１つの例示的な実施形態では、ファームウェア処理スタックは、領域ロックモジュールがブロックアドレスの範囲に関して転送タイプの領域ロックを確立することを要求することができる。ブロックアドレスの範囲は、キャッシュ内および／または潜在的な不良ブロックアドレス内のダーティデータに関連する。高速経路回路がＩ／Ｏ要求を処理するためにブロックの範囲をロックすることを試みるとき、Ｉ／Ｏ要求に関するブロックの範囲のいずれかの部分をカバーする転送タイプのロックは、Ｉ／Ｏ要求をファームウェア処理スタックに転送させることになる。
【００１２】
本発明の一態様では、１つまたは複数のホストシステムに結合するように適合され、かつ記憶コントローラに結合した１つまたは複数の記憶デバイスにおいてデータを管理するように適合された記憶コントローラが提供される。この記憶コントローラは、接続されたホストシステムから受信された高速経路処理用にフォーマットされたＩ／Ｏ要求を処理するように適合された高速経路回路と、コントローラのプロセッサにおいて動作するファームウェア処理スタックであって、任意のフォーマットのＩ／Ｏ要求を処理するように適合されたファームウェア処理スタックとを備える。コントローラは、高速経路回路に結合し、かつファームウェア処理スタックに結合した領域ロックモジュールをさらに備える。領域ロックモジュールは、ブロックアドレスの指定された範囲をロックするためのロック要求信号を受信するように適合され、ブロックアドレスの現在ロックされている範囲の状況に基づいて、受信された高速経路フォーマットＩ／Ｏ要求がファームウェア処理スタックに転送されるべきかどうかを判断するようにさらに適合されている。記憶コントローラは、高速経路フォーマットＩ／Ｏがファームウェア処理スタックに転送されるべきであることを判断することに応答して、高速経路フォーマットＩ／Ｏ要求を処理するためのファームウェア処理スタックに転送するようにさらに適合されている。
【００１３】
本発明のその他の態様は、方法を実施するコンピュータ可読媒体と、方法自体とを提供する。この方法は、１つまたは複数のホストシステムに結合するように適合され、かつ１つまたは複数の記憶デバイスに結合するように適合された記憶コントローラ内で動作可能である。記憶コントローラは、ホストシステムから受信された高速経路フォーマットＩ／Ｏ要求を処理するための高速経路回路を有し、かつ任意のフォーマットのＩ／Ｏ要求を処理するためのファームウェア処理スタックを有する。この方法は、高速経路フォーマットＩ／Ｏ要求を受信することと、コントローラの領域ロックモジュールの動作によって、ブロックアドレスの現在ロックされている範囲の状況に基づいて、受信された高速経路フォーマットＩ／Ｏがファームウェア処理スタックに転送されるべきであるかどうかを判断することとを含む。この方法は、次いで、高速経路フォーマットＩ／Ｏ要求がファームウェア処理スタックに転送されるべきであるという判断に応答して、高速経路フォーマットＩ／Ｏ要求を処理するためのファームウェア処理スタックに転送する。
【図面の簡単な説明】
【００１４】
【図１】Ｉ／Ｏ要求の処理をコントローラのある処理スタックから別の処理スタックに転送するために転送タイプの領域ロックの管理を実現するための、本発明の特徴および態様に従って拡張された例示的な記憶コントローラのブロック図である。
【図２】Ｉ／Ｏ要求の処理をコントローラのある処理スタックから別の処理スタックに転送するために転送タイプの領域ロックの管理を実現するための、本発明の特徴および態様による例示的な方法を説明する流れ図である。
【図３】Ｉ／Ｏ要求の処理をコントローラのある処理スタックから別の処理スタックに転送するために転送タイプの領域ロックの管理を実現するための、本発明の特徴および態様による例示的な方法を説明する流れ図である。
【図４】Ｉ／Ｏ要求の処理をコントローラのある処理スタックから別の処理スタックに転送するために転送タイプの領域ロックの管理を実現するための、本発明の特徴および態様による例示的な方法を説明する流れ図である。
【図５】Ｉ／Ｏ要求の処理をコントローラのある処理スタックから別の処理スタックに転送するために転送タイプの領域ロックの管理を実現するための、本発明の特徴および態様による例示的な方法を説明する流れ図である。
【図６】Ｉ／Ｏ要求の処理をコントローラのある処理スタックから別の処理スタックに転送するために転送タイプの領域ロックの管理を実現するための、本発明の特徴および態様による例示的な方法を説明する流れ図である。
【図７】Ｉ／Ｏ要求の処理をコントローラのある処理スタックから別の処理スタックに転送するために転送タイプの領域ロックの管理を実現するための、本発明の特徴および態様による例示的な方法を説明する流れ図である。
【図８】Ｉ／Ｏ要求の処理をコントローラのある処理スタックから別の処理スタックに転送するために転送タイプの領域ロックの管理を実現するための、本発明の特徴および態様による例示的な方法を説明する流れ図である。
【図９】図２から図８の方法を実施するコンピュータ可読媒体を受信するように適合された、図１の記憶コントローラなど、記憶コントローラの例示的なコンピューティングデバイスのブロック図である。
【発明を実施するための形態】
【００１５】
図１は、１つまたは複数のホストシステム１２０に結合し、かつ１つまたは複数の記憶デバイス１３０に結合するように適合された拡張記憶コントローラ１００を備えたシステムのブロック図である。ホストシステム１２０は、記憶デバイス１３０にアクセスするためのＩ／Ｏ要求を生成する任意の適切なコンピューティングデバイスまたはその他のシステムであってもよい。記憶デバイス１３０は、磁気ディスクドライブまたは光ディスクドライブ、固体ドライブなど、データを記憶するための任意の適切なデバイスであってもよい。記憶コントローラ１００は、インターフェース１５０によってホストシステム１２０に結合可能である。インターフェース１５０は、例えば、シリアル・アタッチド（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ）ＳＣＳＩ（ＳＡＳ）、パラレルＳＣＳＩ、パラレル・アドバンスド・テクノロジー・アタッチメント（ｐａｒａｌｌｅｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）（ＰＡＴＡ）、シリアルＡＴＡ（ＳＡＴＡ）、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩエクスプレスなど、ＰＣＩの変形を含むＰＣＩ）などを含めて、記憶コントローラ１００をホストシステム１２０に結合するための任意の適切な通信媒体および通信プロトコルを備えることが可能である。記憶コントローラ１００は、インターフェース１５２を経由して記憶デバイス１３０に結合可能である。インターフェース１５２は、例えば、パラレルＳＣＳＩ／ＳＡＳ、ＰＡＴＡ、ＳＡＴＡ、ＰＣＩ、ファイバー・チャネルなどを含めて、記憶コントローラ１００を記憶デバイス１３０に結合するための任意の適切な通信媒体および通信プロトコルを備えることが可能である。
【００１６】
記憶コントローラ１００は、両方とも、記憶デバイス１３０にアクセスすることによって、接続されたホストシステムから受信されたＩ／Ｏ要求を処理するように適合された高速経路回路１０２とファームウェア処理スタック１０４とを備える。回路１０２およびスタック１０４は両方とも、処理「スタック」と呼ばれる場合がある。したがって、コントローラ１００は、Ｉ／Ｏ要求を処理するための複数のスタックを備える。さらに、コントローラ１００のある実施形態では、設計変更として、任意の数のそのような処理スタックを提供することが可能である。コントローラ１００は、概して、本明細書において下でさらに議論される領域ロックを含む転送情報に基づいて、Ｉ／Ｏ要求をある処理スタックから別の処理スタックに転送するように動作可能である。ある処理スタックがＩ／Ｏ要求を正確に処理することができるならば、データの潜在的な汚染を回避するために領域ロックによるそのような転送を使用することが可能である。例えば、性能の強化および最適化のために別の処理スタックに対してある処理スタックを選好するために転送領域ロックを使用することも可能である。
【００１７】
ファームウェア処理スタック１０４は、汎用プロセッサおよび専用プロセッサ（図示せず）と、汎用プロセッサまたは専用プロセッサによって実行するためにプログラム命令およびデータを記憶するための関連するプログラムならびにデータメモリ（図示せず）とを備える。ファームウェア処理スタック１０４のプログラム命令は、スタック１０４が任意の適切なコマンド構造に従ってフォーマットされたＩ／Ｏ要求をホストシステム１２０から受信して、その受信されたＩ／Ｏ要求を処理して、記憶デバイス１３０上の情報にアクセスすることを可能にする。
【００１８】
上述のように、スタック１０４は、論理ボリュームを対象とするＩ／Ｏ要求に関連するＲＡＩＤ記憶管理を含めて、いずれかのＩ／Ｏ要求およびすべてのＩ／Ｏ要求を処理する柔軟性を提供するが、スタック１０４の処理は、ある種のタイプのＩ／Ｏ要求の処理に所望されるよりもより遅い場合がある。したがって、記憶コントローラ１００は、高速経路回路１０２をさらに備える。高速経路回路１０２は、システム１２０内の拡張ドライバから受信された、高速経路回路１０２によって処理するためにフォーマットされたＩ／Ｏ要求に対処するために特に設計された電子回路を備える。ＬＳＩ  Ｃｏｒｐｏｒａｔｉｏｎからのいくつかの記憶コントローラは、データにアクセスする際に記憶コントローラ１００の性能を改善するために拡張ドライバモジュールと組み合わせたそのような高速経路回路の使用を例示する。概して、ホストシステム１２０の拡張ドライバ（図示せず）は、ＲＡＩＤ管理に関してコントローラ１００によって維持されるマッピング情報に類似した、記憶コントローラ１００によって管理されるＲＡＩＤ論理ボリュームに関するマッピング情報に対するアクセスを有する。ホスト１２０の拡張ドライバは、ファームウェア処理スタック１０４を利用する記憶コントローラ１００よりも、必須の論理対物理マッピング（ｌｏｇｉｃａｌ  ｔｏ  ｐｈｙｓｉｃａｌ  ｍａｐｐｉｎｇ）をより迅速かつ効率的に選択的に実行することができる。そのような場合、ホストシステム１２０の拡張ドライバは、任意の必要とされる論理対物理マッピングまたはその他の必要とされる論理ボリューム管理演算に関してその独自の処理能力を利用して、高速経路フォーマットＩ／Ｏ要求を作成する。高速経路フォーマットＩ／Ｏ要求は、次いで、記憶コントローラ１００に転送されて、高速経路回路１０２によって処理される。
【００１９】
ファームウェア処理スタック１０４は、任意の適切なプロセッサまたはシステムバス１５４によって、キャッシュメモリ１０８と不良ブロックメモリ１１０とに結合する。キャッシュメモリ１０８および不良ブロックメモリ１１０のそれぞれは、例えば、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、フラッシュメモリなどを含めて、任意の適切なメモリ構成要素を含むことが可能である。当技術分野で一般に知られているように、ファームウェア処理スタック１０４は、記憶デバイス１３０宛ての書込みＩ／Ｏ要求に関連するデータを記憶するためにキャッシュメモリ１０８を利用する。管理キャッシュメモリ１０８のライトスルーモードで、ファームウェア処理スタック１０４は、書込みＩ／Ｏ要求に関連する書込みデータをキャッシュメモリ１０８内に記憶して、その書込みデータを記憶デバイス１３０上にも（実質的に同時に）記憶する。キャッシュメモリ１０８内にそのように記憶されたデータは、次いで、起動するとき、それに関するデータが現在キャッシュメモリ内に記憶されているブロックアドレスからデータを要求する後続の読取り要求をより迅速に満たすために、ファームウェア処理スタック１０４によって利用可能である。加えて、ファームウェア処理スタック１０４は、特定のブロックアドレス、または潜在的な不良ブロックであり得るブロックアドレスの範囲を識別することができる。ファームウェア処理スタック１０４内で任意の適切な技法を利用して、「不良」と見なすことができるブロックを識別することが可能である。ファームウェア処理スタック１０４は、Ｉ／Ｏ要求のその処理において回避すべきブロックに留意するために、そのようなブロックアドレスを不良ブロックメモリ１１０内に記録する。コントローラ１００内のこれらのおよびその他の機能は、本発明の転送タイプの領域ロックの特徴および態様の利益を享受することができる。１つの要求処理スタックまたは要求処理回路を対象とする要求が異なる処理スタックまたは処理回路に転送されるべき、コントローラ１００内の何らかの状況において、本発明の転送タイプの領域ロックの特徴および態様は、最小のオーバヘッド処理でそのような判断を効率的に行うことを実現する。
【００２０】
高速経路回路１０２およびファームウェア処理スタック１０４は両方とも、（例えば、それぞれ、通信経路１５６および１５８を経由して）コントローラ１００の領域ロックモジュール１０６と相互に作用する。領域ロックモジュール１０６は、ロック要求を高速経路回路１０２から受信して、領域ロック解放要求をファームウェア処理スタック１０４から受信するための任意の適切な回路を備える。領域ロック要求は、概して、それに関してＩ／Ｏ要求処理スタックがアクセス（すなわち、読取りのための一時的な共有アクセス、何らかの動作のための独占的なアクセスなど）を必要とするブロックアドレスの範囲を識別する。例えば、高速経路回路１０２が受信された高速経路フォーマットＩ／Ｏ要求を処理するために必要とされる、影響を受けたブロックアドレスの範囲を識別するとき、高速経路回路１０２は、経路１５６を経由して、領域ロックモジュール１０６に対してロック要求を発行する。領域ロックモジュール１０６は、高速経路回路１０２またはファームウェア処理スタック１０４のいずれかに対して現在ロックされているブロックの範囲を識別するデータ構造を関連する領域ロックメモリ（図示せず）内に維持する。新しいロック要求に応答して、領域ロックモジュール１０６は、新しい要求によって識別されたブロックアドレスの範囲が現在許可されている領域ロックに関連するブロックアドレスの範囲のいずれかの部分と重複するかどうかを判断する。そのような重複が検出された場合、領域ロックモジュール１０６は、そのロックを拒否するか、またはその新しい要求に関するブロックアドレスの範囲が現在許可されているロックに関連するブロックアドレスのいずれかの部分と重複しなくなるまで、ロックを許可することを遅延させる。同様に、高速経路処理回路１０２およびファームウェア処理スタック１０４は、そのアクセスの必要性が満たされたとき（すなわち、関連するＩ／Ｏ要求が処理されたとき）、領域ロックモジュール１０６に対してロック解放要求も発行する。いくつかの例示的な実施形態では、領域ロックモジュール１０６は、受信されたＩ／Ｏ要求が、高速経路Ｉ／Ｏ要求としてフォーマットされているか、またはそのようにフォーマットされていないかを検出するための初期経路指定構成要素として機能することも可能である。そのような例示的な実施形態では、モジュール１０６を（適切な通信媒体および通信プロトコルを介して）ホスト１２０に直接的に結合することが可能であるのに対して、回路１０２およびスタック１０４は、その場合、モジュール１０６と直接的に（したがって、ホスト１２０と間接的に）結合する。コントローラ１００の要素のこれらのおよびその他の構成ならびに配置は、設計変更として、当業者に明らかになるであろう。
【００２１】
本発明の特徴および態様により、ファームウェア処理スタック１０４は、（経路１５８を経由して）領域ロックモジュール１０６に対して転送タイプのロック要求を発行することができる。転送タイプのロック要求は、考えられるデータ汚染を回避するために、かつ／または性能強化の最適化を可能にするために、それに関して、ブロックアドレスの識別された範囲に影響を及ぼし得るすべてのＩ／Ｏ要求が複数のＩ／Ｏ要求処理スタックのどちら一方（例えば、高速経路回路１０２またはファームウェア処理スタック１０４）に転送されるべきであるブロックアドレスの範囲を識別する。より詳細には、例えば、ファームウェア処理スタック１０４は、キャッシュメモリ１０８およびメモリの不良ブロック１１０の使用を管理することができる。上述のように、ファームウェア処理スタック１０４がライトバックモードでキャッシュメモリ１０８を管理するとき、受信されたＩ／Ｏ要求に関連する書込みデータをキャッシュメモリ１０８内に記憶して、「ダーティデータ」としてマーキングすることが可能である。ファームウェア処理スタック１０４がそのようなダーティデータをキャッシュメモリ１０８内に記憶するとき、ファームウェア処理スタック１０４は、それに関してさらなるＩ／Ｏ要求がファームウェア処理スタック１０４に転送されるべきブロックアドレスの対応する範囲を識別するために、領域ロックモジュール１０６に対して転送タイプのロック要求を発行することも可能である。高速経路回路１０２が次に高速経路フォーマットＩ／Ｏ要求に関するブロックアドレスの範囲をロックすることを試みるとき、領域ロックモジュール１０６は、許可された転送タイプのロックの重複を検出して、高速経路フォーマット要求をさらに処理するためのファームウェア処理スタック１０４に転送することを余儀なくすることになる。したがって、ファームウェア処理スタックがすでに転送タイプの領域ロックを獲得しているブロックアドレスの範囲宛ての高速経路フォーマットＩ／Ｏ要求は、ファームウェア処理スタック１０４によって処理するために、高速経路回路１０２から転送されることになる。上述のように、領域ロックは、ファームウェア処理スタック１０４によって処理するために、高速経路フォーマットＩ／Ｏ要求を高速経路回路１０２から転送するためのいくつもの理由により、ファームウェア処理スタック１０４によって採用可能である。上述のようにデータ汚染を回避すること以外に、転送領域ロックは、より小さな動作を結合してより大きな動作にすること、Ｉ／Ｏ処理スタック間のロード・バランシング、ストリーミングＩ／Ｏ最適化など、利用可能であり得る様々な最適化の適切な動作を保証するために、ファームウェア処理スタック１０４によって利用可能である。
【００２２】
太線の破線矢印１６０および１６２は、ファームウェア処理スタック１０４によってさらに処理するために、高速経路回路１０２によって受信された高速経路フォーマットＩ／Ｏ要求の転送を表す。いくつかの例示的な実施形態では、領域ロックモジュール１０６は、高速経路フォーマットＩ／Ｏ要求を処理する前に、高速経路回路１０２がブロックアドレスの範囲をロックすることを試みることに応答して、（破線矢印１６２によって示されるように）転送を実行することができる。その他の例示的な実施形態では、高速経路回路１０２は、ブロックアドレスの範囲に関するそのアクセスロック要求が高速経路フォーマットＩ／Ｏ要求によってアクセスされることを要求して、さらに処理するために、ブロックアドレスの影響を受けた範囲がファームウェア処理スタック１０４に転送されるべきであることを示す拒否信号を領域ロックモジュール１０６から受信することが可能である。そのような例示的な実施形態では、破線矢印１６０によって示されるように、高速経路回路１０２自体が高速経路フォーマットＩ／Ｏ要求をファームウェア処理スタック１０４に転送するための処理を実行することができる。
【００２３】
いくつかの例示的な実施形態では、領域ロックモジュール１０６は、潜在的に重複するロック要求の位置を突き止めるための迅速な検索を可能にするために、現在許可されているロック（アクセスロック、ならびに転送タイプのロック）に関する情報をツリー構造で維持する。このツリー構造エントリーは、領域ロックモジュール１０６による迅速な検索を可能にするためにブロックアドレスの範囲によって組織される。このツリー構造は、領域ロックモジュール１０６内の適切に設計されたカスタム回路によって維持可能であり、またはその他の例示的な実施形態では、領域ロックモジュール１０６の回路に関連する追加のカスタム回路論理によって提供可能である。上述の関連特許は、そのようなツリー構造を実施することに関して、かつそのようなツリー構造を管理するように適合されたカスタム回路に関して例示的な詳細を提供する。そのようなツリー構造は、１つの可能な実施形態を表す点を理解されよう。ロックに関する情報を記録および取り出すために、多数のその他のデータ構造および対応する管理記録を用いることが可能である。例えば、これらのためにハッシュ表構造を用いることが可能である。
【００２４】
高速経路フォーマットＩ／Ｏ要求の転送および転送タイプの領域ロックの関連する管理に関する、記憶コントローラ１００の動作の方法の例示的な追加の詳細が、他の図面に関して本明細書において下で議論される。当業者は、本発明の転送タイプの領域ロックの特徴および態様は、（例えば、ファームウェア／従来の処理スタックと共にＬＳＩ  Ｃｏｒｐｏｒａｔｉｏｎの高速経路回路など）少なくとも２つの処理スタック／処理プロセッサを有する任意の記憶コントローラ・アーキテクチャ内で適用可能であり得る点を容易に認識されよう。本発明の特徴および態様は、要求を（名目上、要求の対象となる）ある処理スタックからコントローラの別の処理スタックに転送するために迅速な決定が所望される、任意のそのような記憶コントローラ・アーキテクチャに有利に適用することができる。さらに、当業者は、完全に機能的な記憶コントローラ内に存在し得る多数の追加の要素および等価の要素を容易に認識されよう。この議論を分かりやすく、短くするために、そのような追加の要素および等価の要素は本明細書で省略される。
【００２５】
図２から図８は、本発明の特徴および態様による、高速経路フォーマットＩ／Ｏ要求を記憶コントローラの高速経路処理回路からファームウェア処理スタックに転送するのを管理するための例示的な方法を説明する流れ図である。図２から図８の方法は、概して、図１の記憶コントローラ１００など、拡張記憶コントローラ内で動作可能である。ステップ２００で、拡張記憶コントローラは、高速経路フォーマットＩ／Ｏ要求を受信する。そのような要求は、拡張記憶コントローラの高速経路回路によって直接的に受信可能であるか、または受信されたＩ／Ｏ要求が高速経路Ｉ／Ｏ要求としてフォーマットされているかどうかを判断して、そうである場合、その要求を高速経路回路に転送するように動作可能な、コントローラの選択モジュールによって当初受信可能である。ステップ２０２で、拡張記憶コントローラは、許可されたロックの現在の状況に基づいて、詳細には、本明細書において下でさらに議論される転送タイプのロックに基づいて、高速経路フォーマットＩ／Ｏ要求がファームウェア処理スタックによって処理されるべき任意のブロックアドレスに対するアクセスを試みているかどうかを判断する。概して、高速経路回路は、受信された高速経路フォーマットＩ／Ｏ要求内で識別されたブロックアドレスの範囲に対するアクセスを要求している拡張記憶コントローラの領域ロックモジュールにロック要求信号を印加することになる。領域ロックモジュールは、次いで、ブロックアドレスの識別された範囲が任意の現在許可されているロックに関連するブロックアドレスの範囲と重複するかどうかについて、ステップ２０２によって示される判断を行う。詳細には、領域ロックモジュールは、ブロックアドレスの要求された範囲が領域ロックモジュールによって先に許可された任意の転送タイプのロックと重複するかどうかを判断することになる。ブロックアドレスのそのような重複が識別されない場合、ステップ２０４は、高速経路フォーマットＩ／Ｏ要求に従って、ブロックアドレスの識別された範囲にアクセスするために、高速経路回路の通常の処理を継続する（次いで、領域ロックモジュールによって許可されたアクセスロックを解放する）。あるいは、領域ロックモジュールが高速経路フォーマットＩ／Ｏ要求によってアクセスされることになるブロックアドレスの範囲が先に許可された転送タイプのロック要求内のブロックアドレスの範囲の何らかの部分と重複することを判断した場合、Ｉ／Ｏ要求を満たすために、高速経路フォーマットＩ／Ｏ要求をファームウェア処理スタックに転送するために、次にステップ２０６が動作可能である。高速経路フォーマットＩ／Ｏ要求を拡張記憶コントローラのファームウェア処理スタックにそのように転送することによって、データ汚染を回避することができ、（現在実施されているように）拡張記憶コントローラの高速経路回路を完全に無効にせずにファームウェア処理スタック最適化を有利に利用することができる。これにより、高速経路回路によって処理され得る高速経路フォーマットＩ／Ｏ要求に関して、拡張記憶コントローラの所望される性能レベルを維持することが可能であると同時に、ファームウェア処理スタックに転送されるべき要求をそういうものとして迅速に識別することができる。
【００２６】
図３は、領域ロックを使用することによって、高速経路フォーマットＩ／Ｏ要求を拡張記憶コントローラの高速経路回路からファームウェア処理スタックに転送するための、本発明の特徴および態様によるある方法の例示的な追加の詳細を説明する流れ図である。図３の方法は、拡張記憶コントローラの領域ロックモジュールと共に動作可能な拡張記憶コントローラの高速経路回路による処理を反映する。ステップ３００で、高速経路フォーマットＩ／Ｏ要求がホストシステムから受信される（すなわち、ホストから直接的に受信されるか、または拡張記憶コントローラの予備選択構成要素を介して間接的に受信される）。ステップ３０２は、次いで、高速経路フォーマットＩ／Ｏ要求によってアクセスするために識別されたブロックアドレスの範囲にアクセスすることを要求するロック要求信号を領域ロックモジュールに印加する。ブロックアドレスの範囲は、高速経路フォーマットＩ／Ｏ要求内で受信された情報によって識別される。したがって、領域ロックモジュールにそのように印加された信号は、アクセスロックの要求、ならびにＩ／Ｏ要求によって影響を受けるブロックアドレスの範囲の両方を示すことができる。いくつかの例示的な実施形態では、領域ロックモジュールにそのように印加された信号は、領域ロックモジュールがその要求を拡張記憶コントローラのファームウェア処理スタックに転送するために必要な可能性があるすべての情報を領域ロックモジュールに提供するために十分なコンテンツ情報をさらに含むことが可能である。ステップ３０４で、高速経路回路は、その要求されたロックが許可されたかどうかを判断する。いくつかの例示的な実施形態では、領域ロックモジュールは、その要求されたロックが許可されたか、または拒否されたかを示す信号を高速経路回路に返すことができる。要求された信号が許可された場合、高速経路回路の動作によって高速経路フォーマットＩ／Ｏ要求の処理を完了し（ステップ３０６）、次いで、適切な解放信号を領域ロックモジュールに印加することによって、許可されたアクセスロックを解放する（ステップ３１０）ためのステップ３０６および３０８が動作可能である。いくつかの実施形態では、ロックされることが要求されたブロックの範囲がファームウェア処理スタックによって獲得された転送タイプのロックと重複することにより、要求されたロックが拒否された場合、領域ロックモジュールは、ステップ３０２で印加されたロック要求信号内で提供されたコンテキスト情報に基づいて、Ｉ／Ｏ要求をファームウェア処理スタックに転送するために必要なすべての処理を実行する。そのような実施形態では、高速経路回路は、次の高速経路フォーマットＩ／Ｏ要求の受信を待つだけで、さらなるどんな処理も実行する必要はない。その他の例示的な実施形態では、領域ロックモジュールは、その領域ロック要求の拒否を示し、その拒否が先に許可された転送タイプの領域ロック要求に起因することをさらに示す信号を高速経路回路に返す。そのような例示的な実施形態では、高速経路フォーマットＩ／Ｏ要求をファームウェア処理スタックに移転（ｔｒａｎｓｆｅｒ）または転送する（例えば、Ｉ／Ｏ要求を領域ロックモジュール自体によってではなく、高速経路回路の動作によってファームウェア処理スタックに転送する）ために、次にステップ３１２が動作可能である。
【００２７】
図４は、拡張記憶コントローラ内の領域ロックモジュール（例えば、図１の記憶コントローラ１００の領域ロックモジュール１０６）の処理の例示的な追加の詳細を提供する流れ図である。図４の処理は、拡張記憶コントローラの高速経路回路から受信されたロック要求信号に応答した、領域ロックモジュールの処理を主に説明する。ファームウェア処理スタックから受信されたアクセスロック要求の受信に応答して、類似の処理を実行することが可能である。そのような類似の処理は、当業者に容易に明らかになり、したがって、この議論を分かりやすく、短くするために本明細書では省略される。高速経路回路からのアクセスロック要求の受信に応答して、ステップ４００は、ロックのそのツリー構造に新しいエントリーを追加する（それぞれのエントリーに関連するブロックアドレスの範囲によって判断される適切な場所内に追加される）。次に、ステップ４０２は、ロック要求内で識別されたブロックアドレスの範囲が先に許可されたロック要求（すなわち、アクセスロックまたは転送タイプのロックを含めて、任意のタイプの先に許可されたロック要求）に関連するブロックアドレスの範囲の何らかの部分と重複するかどうかを判断する。重複しない場合、ステップ４０４は、ブロックアドレスの識別された範囲に関して高速経路回路に許可されたとして新しいロックエントリーをマーキングして、Ｉ／Ｏ動作を実行するためのその動作を継続するように高速経路回路に信号伝達する。ステップ４０２がロックされることになるブロックアドレスの要求された範囲が１つまたは複数の先に許可されたロック要求に関連するブロックアドレスの範囲と重複することを判断した場合、ステップ４０６は、重複している先に許可されたロックのうちのいずれかが転送タイプのロックであるかどうかを判断する。そうである場合、ステップ４０８は、このときファームウェア処理スタックに転送されている（間もなく転送されることになる）Ｉ／Ｏ要求に関して転送されたロックとして新しく加えられたロックエントリーをマーキングする。
【００２８】
ステップ４０８の後に、またはステップ４０６が新しいロック要求が許可された転送タイプのロックと重複しないことを判断した場合、処理はステップ４１０に進み、いずれかの他の要求（例えば、アクセスロックなど、非転送タイプの要求）が高速経路回路から受信されたロック要求のブロックアドレスの範囲と重複する可能性があるかどうかを判断する。重複する場合、ステップ４１２は、すべてのそのような他の先に許可されたロックが解放されるまで待つ。
【００２９】
ステップ４１２の後に、またはステップ４１０が他のそのようなロックが重複しないことを判断した場合、処理はステップ４１４に進み、ロックツリー内に新しく追加されたエントリーがこのとき転送されたとしてマーキングされているかどうかを判断する。マーキングされていない場合、ステップ４０４は、そのロックエントリーが、このとき、ブロックの識別された範囲に関して高速経路回路に許可されていることをマーキングして、その許可に関して高速経路回路に信号伝達し、それにより、高速経路回路が高速経路フォーマットＩ／Ｏ要求のその処理を継続することを可能にする。
【００３０】
ステップ４１４は、新しいロックエントリーがこのとき転送されたとしてマーキングされていることを判断して、ステップ４１６は、ブロックアドレスの識別された範囲に関してファームウェア処理スタックに許可されたとして、新しく追加されたロックエントリーをマーキングする。高速経路フォーマットＩ／Ｏ要求は、これにより、やがて最終的に処理するためのファームウェア処理スタックに転送される。高速経路回路によって要求のそれ以上の処理は実行されない。その他の例示的な実施形態では、上記のように、領域ロックモジュールは、そのロック要求が拒否されており、ファームウェア処理スタックに転送されるべきであることを高速経路回路に単に信号伝達することが可能であり、それにより、高速経路回路自体が要求を高速ファームウェア処理スタックに転送するための処理を実行することを可能にする。
【００３１】
図４の方法でやはり示されるのは、先に許可されたロック要求を解放するための方法の処理ステップである。Ｉ／Ｏ要求処理スタック（例えば、高速経路回路またはファームウェア処理スタック）は、許可されたロックを取得したＩ／Ｏ要求のその処理を完了したとき、ステップ４２０は、処理スタックから受信された適切な解放信号に応答して、先に許可されたロックを解放する。
【００３２】
図５、図６、および図７は、転送タイプの領域ロックを要求して、ファームウェア処理スタック内の特定の処理に応答して、先に許可された転送タイプの領域ロックを解放するための、拡張記憶コントローラのファームウェア処理スタック（例えば、図１の記憶コントローラ１００のファームウェア処理スタック１０４）内の処理の例示的な追加の詳細を示す。上記のように、ファームウェア処理スタックは、ライトバックモードでそのキャッシュメモリを利用して書込み要求を処理するとき、ダーティデータ（すなわち、まだ記憶デバイスにフラッシュまたはポストされていないダーティデータ）がキャッシュメモリ内にあるブロックアドレスの範囲に関して転送タイプの領域ロックが許可されることを要求する。図５は、ダーティデータをそのキャッシュメモリ内に記憶することに応答して、そのような転送タイプのロックを要求するためのファームウェア処理スタックの処理の例示的な追加の詳細を説明する。ステップ５００で、ファームウェア処理スタックは、データをライトバックモードでそのキャッシュメモリ内に記憶することによって、書込みＩ／Ｏ要求を処理する。ステップ５０２で、ファームウェア処理スタックは、キャッシュメモリ内の影響を受けたブロックを、そのキャッシュメモリがまだ記憶デバイスにポストまたはフラッシュされていないブロックアドレスに対応するデータを含むことを示す「ダーティデータ」としてマーキングする。ステップ５０４で、ファームウェア処理スタックは、ダーティデータがキャッシュメモリ内に記憶されているブロックアドレスの範囲を識別する転送タイプのロック要求信号を領域ロックモジュールに印加する。
【００３３】
図６は、ダーティデータが記憶デバイスに成功裏にフラッシュまたはポストされたとき、先に許可された転送タイプのロックを解放するためのファームウェア処理スタックのさらなる処理を説明する。ステップ６００で、ファームウェア処理スタックは、永続的に記憶するために、ダーティデータブロックをキャッシュメモリから記憶デバイスにフラッシュまたはポストするために適切な処理を実行する。次いで、ステップ６０２は、キャッシュメモリ内の「ダーティデータ」にもはや関連しないブロックアドレスの範囲を識別する転送タイプのロック解放信号を領域ロックモジュールに印加する。領域ロックモジュールは、次いで、先に許可された転送タイプのロックを解放することができる。
【００３４】
図７は、不良ブロックを表すことが可能なブロックアドレスの範囲に関して転送タイプのロックが許可されることを要求するためのファームウェア処理スタックの処理の例示的な追加の詳細を説明する流れ図である。上述のように、ファームウェア処理スタックは、ブロックアドレスの特定のブロックまたは特定の範囲を利用する際に遭遇する様々なタイプのエラーのうちのいずれかに応答して、ブロックを「不良」と指定することができる。ステップ７００で、ファームウェア処理スタックは、１つまたは複数のブロックアドレスをファームウェア処理スタックに関連する不良ブロックメモリ内に記憶されたその不良ブロックリストに追加する。ステップ７０２で、ファームウェア処理スタックは、転送タイプの領域ロックがファームウェア処理スタックを処理することによって「不良」ブロックとして識別されたブロックアドレスの識別された範囲に関して許可されることを要求する転送タイプのロック要求信号を領域ロックモジュールに印加する。
【００３５】
図８は、不良として先にマーキングされたブロック（対応する転送タイプのロックを用いて不良としてマーキングされたブロックの範囲）が成功裏に更新されているとき（例えば、先に不良としてマーキングされたブロックに対する成功裏の書込み時に）先に許可された転送タイプのロックを解放するためのファームウェア処理スタックのさらなる処理を説明する。ステップ８００で、ファームウェア処理スタックは、（例えば、１つの／複数の不良ブロックに対する成功裏の書込み動作の完了に関連して）１つまたは複数のブロックを不良ブロックリストから除去するための適切な処理を実行する。次いで、ステップ８０２は、更新された不良ブロックリスト内の不良ブロックにもはや関連しないブロックアドレスの範囲を識別する転送タイプのロック解放信号を領域ロックモジュールに印加する。領域ロックモジュールは、次いで、先に許可された転送タイプのロックを解放することができる。
【００３６】
当業者は、図２から図８に関して説明された方法など、完全に機能的な方法内に存在し得る多数の追加および均等のステップを容易に認識されよう。そのような追加および均等のステップは、この議論を分かりやすく、短くするために本明細書で省略されている。
【００３７】
本明細書で開示された実施形態は、ソフトウェア、ハードウェア、ファームウェア、またはそれらの様々な組合せの形をとることが可能である。１つの特定の実施形態では、本明細書で開示された様々な動作を実行するように記憶デバイスの処理システム（例えば、記憶コントローラ）を導くために、ソフトウェアが使用される。図９は、ある例示的な実施形態において所望される機能を実行するために、コンピュータ可読媒体内に記憶されたプログラム命令を実行するように動作可能な、図１の記憶コントローラ１００内のファームウェア処理スタック１０４など、処理システム９００を例示する。処理システム９００は、コンピュータ可読記憶媒体９１２において有形に実施されるプログラム命令を実行することによって上記の動作を実行するように動作可能である。この点で、本発明の実施形態は、コンピュータまたは任意のその他の命令実行システムによって使用するためのプログラムコードを提供するコンピュータ可読記憶媒体９１２を経由してアクセス可能なコンピュータプログラムの形をとることが可能である。
【００３８】
この説明では、コンピュータ可読記憶媒体９１２は、コンピュータによって使用するためのプログラムを含むかまたは記憶することが可能な任意のものであってもよい。コンピュータ可読記憶媒体９１２は、電子デバイス、磁気デバイス、光デバイス、電磁デバイス、赤外線デバイス、または半導体デバイスであってもよい。コンピュータ可読記憶媒体９１２の例は、固体メモリ（例えば、フラッシュメモリ）、磁気テープ、取外し可能コンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、剛性磁気ディスク、および光ディスクを含む。光ディスクの現在の例は、コンパクトディスク読出し専用メモリ（ＣＤ−ＲＯＭ）と、コンパクトディスク読出し／書込み（ＣＤ−Ｒ／Ｗ）と、ＤＶＤとを含む。
【００３９】
プログラムコードを記憶および／または実行するのに適している処理システム９００は、システムバス９５０を介して、プログラムおよびデータメモリ９０４とキャッシュメモリ・サブシステム９０８とに結合した少なくとも１つのプロセッサ９０２を含む。プログラムおよびデータメモリ９０４は、プログラムコードの実際の実行の間に用いられるローカルメモリと、大容量記憶装置と、実行の間にコードおよび／またはデータが大容量記憶装置から取り出される回数を削減するために、少なくともいくつかのプログラムコードおよび／またはデータの一時的な記憶を提供するキャッシュメモリとを含むことが可能である。
【００４０】
入出力、すなわちＩ／Ｏデバイス９０６（例えば、記憶デバイスとホストシステムとを結合するためのデバイス）をさらに含むことが可能である。高速経路回路９０８および領域ロックモジュール９１４は、処理システム９００が、本明細書において上で議論されたように、高速経路フォーマットＩ／Ｏ要求を迅速に処理して、ブロックアドレスのロックを調整することを可能にするために、システムと統合されることも可能である。
【００４１】
本発明が図面および前述の説明で例示され説明されているが、そのような図および説明は、特性の点で限定的ではなく、例示と見なされるべきである。本発明の一実施形態およびその若干の変形が示され、説明されている。詳細には、例示的なソフトウェア実施形態またはファームウェア実施形態として示され、説明されている特徴は、カスタマイズされた論理回路として等しく実施可能であり、逆も同様である。本発明の趣旨に該当するすべての変更形態および修正形態に関して保護が所望される。当業者は、本発明の範囲に包含される上述の実施形態の改変形態を理解されよう。結果として、本発明は、上で議論された特定の例および図に限定されず、以下の特許請求の範囲およびその均等物によってのみ限定される。
【図１】
2014120151.tif 000003
【図２】
2014120151.tif 000004
【図３】
2014120151.tif 000005
【図４】
2014120151.tif 000006
【図５】
2014120151.tif 000007
【図６】
2014120151.tif 000008
【図７】
2014120151.tif 000009
【図８】
2014120151.tif 000010
【図９】
2014120151.tif 000011