(57)【要約】【課題】  フラッシュ読取コマンド完了の時間推定に基づくホスト読取コマンドリターンのリオーダリングを提供する。【解決手段】  読取コマンドに応答するホストへのデータリターンを管理して、ソリッドステートドライブ（ＳＳＤ）の動作モニタは、対応するフラッシュダイ上の読取動作を完了するまでの推定時間を特徴とする数値指標を保持するのに使用されるカウンタを管理する。タイマは、経時でカウンタをデクリメントする周期的なイベントを生成する。各カウンタに記憶される値は、対応するダイに送られたフラッシュ動作に対して生成され、一般に、動作履歴および動作の物理的な位置に基づく。読取コマンドが特定のダイに送られる予定の場合は常に、その特定の読取動作に対する時間推定が検索され、この情報に基づいて、データをホストに返す最適な順序が決定される。【選択図】  図４
2014110058.tif 000002
【特許請求の範囲】
【請求項１】
ソリッドステートドライブ（ＳＳＤ）装置がホストから受け取った読取コマンドに応答する前記ホストへのリターンを管理するための方法であって、
前記ホストからデータ読取コマンドを受け取るステップと、
前記読取コマンドに対応するそれぞれの不揮発性メモリダイに送られた動作ごとの完了までの推定時間に基づいて、前記読取コマンドの完了までの総推定時間を計算するステップと、
前記読取コマンドの完了までの前記総推定時間に基づいて、前記ホストから受け取った他のデータ読取コマンドに対して、要求されたデータをどんな順序で前記ホストに返すべきかを決定するステップと、
前記要求されたデータを、決定された前記順序で前記ホストに返すステップと、
を含む方法。
【請求項２】
ソリッドステートドライブ（ＳＳＤ）装置がホストから受け取った読取コマンドに応答する前記ホストへのリターンを管理するための方法であって、
前記ホストからデータ読取コマンドを受け取るステップと、
それぞれの不揮発性メモリダイに送られた動作ごとに動作コストを生成するステップであって、各動作コストを周期的なイベントに基づいて経時でデクリメントするステップと、
前記読取コマンドに対応する前記それぞれの不揮発性メモリダイに送られた動作ごとの現在の動作コストに基づいて、前記読取コマンドの総コストを計算するステップと、
前記読取コマンドの前記総コストに基づいて、前記ホストから受け取った他のデータ読取コマンドに対して、要求されたデータをどんな順序で前記ホストに返すべきかを決定するステップと、
前記要求されたデータを、決定された前記順序で前記ホストに返すステップと、
を含む方法。
【請求項３】
動作コストを生成するステップが、（１）ターゲット不揮発性メモリダイがアイドル状態であるか否か、（２）ターゲット不揮発性メモリダイが消去動作でビジー状態であるか否か、（３）ターゲット不揮発性メモリダイがページプログラム動作でビジー状態であるか否か、および（４）ターゲット不揮発性メモリダイが読取動作でビジー状態であるか否か、のうちの少なくとも１つに基づいて、動作コストを生成するステップを含む、
請求項２に記載の方法。
【請求項４】
動作コストを生成するステップが、不揮発性メモリダイに送られた対応する動作の完了までの時間を推定するステップを含む、
請求項２に記載の方法。
【請求項５】
動作コストを生成するステップが、不揮発性メモリダイ上の動作の物理的な位置に基づいて動作コストを生成するステップを含む、
請求項２に記載の方法。
【請求項６】
動作コストを生成するステップが、不揮発性メモリダイの動作履歴に基づいて動作コストを生成するステップを含む、
請求項２に記載の方法。
【請求項７】
前記要求されたデータを前記ホストに返すステップが、第１の読取コマンドに対応する第１の動作コストよりも、第２の読取コマンドに対応する第２の動作コストが少ないことに基づいて、前記第１の動作コストを有する第１の要求されたデータの前に、前記第２の動作コストを有する第２の要求されたデータを前記ホストに返すステップを含む、
請求項２に記載の方法。
【請求項８】
前記第１の読取コマンドを前記ホストから受け取った後、前記第２の読取コマンドを前記ホストから受け取った、
請求項７に記載の方法。
【請求項９】
前記動作コストが推定動作コストであり、
動作コストを生成するステップが、
前記推定動作コストと、不揮発性メモリダイに送られた対応する動作の完了までの時間との差を特定するステップと、
前記差に基づいて、前記推定動作コストを調整するステップと、
を含む、
請求項２に記載の方法。
【請求項１０】
不揮発性メモリダイと、前記不揮発性メモリダイ上の動作を管理するためのコントローラと、を含むソリッドステートドライブ（ＳＳＤ）であって、
前記コントローラがホストから受け取ったデータ読取コマンドの動作コストの要求を前記コントローラから受け取り、
それぞれの不揮発性メモリダイに送られた動作ごとの完了までの時間を示す動作コストを生成し、前記対応するカウンタに前記動作コストを記憶することを含み、各カウンタがそれぞれの不揮発性メモリダイに関連付けられたカウンタを管理し、
周期的なイベントを生成するタイマに基づいて各動作コストをデクリメントし、
前記コントローラが受け取った前記読取コマンドに対応するそれぞれの不揮発性メモリダイに送られた動作ごとの現在の動作コストを前記コントローラに返し、前記現在の動作コストが、前記読取コマンドに対応するそれぞれの不揮発性メモリダイに関連付けられた各カウンタの現在の値に基づく、
ように構成された動作モニタと、
前記それぞれの不揮発性メモリダイに送られた動作ごとの現在の動作コストに基づいて、前記読取コマンドの総コストを計算し、
前記読取コマンドの前記総コストに基づいて、前記ホストから受け取った他のデータ読取コマンドに対して、前記要求されたデータをどんな順序で前記ホストに返すべきかを決定する、
ように構成された前記コントローラと、
を含む、ＳＳＤ。
【請求項１１】
１つまたは複数のチャンネルバス制御をさらに含み、
カウンタを管理する前記動作モニタが、前記１つまたは複数のチャンネルバス制御からの情報に基づいて動作ごとの動作コストを生成するステップであって、前記情報から、不揮発性メモリダイに送られた動作の期間が、前記不揮発性メモリダイに関連付けられたチャンネルバスを監視することにより決定されるステップを含む、
請求項１０に記載のＳＳＤ。
【請求項１２】
前記不揮発性メモリダイ上の消去動作の完了時間に対応する値を管理するための１つまたは複数の消去コストレジスタと、
前記不揮発性メモリダイ上の読取動作の完了時間に対応する値を記憶するための１つまたは複数の読取コストレジスタと、
前記不揮発性メモリダイ上の書込動作の完了時間に対応する値を記憶するための１つまたは複数のプログラムコストレジスタと、
を含み、
動作ごとに動作コストを生成するステップが、前記消去コストレジスタ、前記読取コストレジスタおよび前記プログラムコストレジスタに関連する１つまたは複数のそれぞれの値に基づく、
請求項１０に記載のＳＳＤ。
【請求項１３】
カウンタを管理する前記動作モニタが、
カウンタからの動作コストと、対応する不揮発性メモリダイに送られた対応する動作の完了までの実際の時間との差を特定するステップと、
前記差に基づいて、前記カウンタの前記動作コストを調整するステップと、
を含む、
請求項１０に記載のＳＳＤ。
【請求項１４】
１つまたは複数の命令シーケンスを記憶するソリッドステートドライブコントローラであって、１つまたは複数のプロセッサによって実行される時、
ホストからデータ読取コマンドを受け取り、
前記読取コマンドに対応するそれぞれの不揮発性メモリダイに送られた動作ごとの完了までの推定時間に基づいて、前記読取コマンドの完了までの総推定時間を計算し、
前記読取コマンドの完了までの前記総推定時間に基づいて、前記ホストから受け取った他のデータ読取コマンドに対して、要求されたデータをどんな順序で前記ホストに返すべきかを決定し、
前記要求されたデータを、決定された前記順序で前記ホストに返す、
性能をもたらすコントローラ。
【請求項１５】
１つまたは複数の命令シーケンスを記憶するソリッドステートドライブコントローラであって、１つまたは複数のプロセッサによって実行される時、
ホストからデータ読取コマンドを受け取り、
それぞれの不揮発性メモリダイに送られた動作ごとに動作コストを生成し、各動作コストを周期的なイベントに基づいて経時でデクリメントし、
前記読取コマンドに対応する前記それぞれの不揮発性メモリダイに送られた動作ごとの現在の動作コストに基づいて、前記読取コマンドの総コストを計算し、
前記読取コマンドの前記総コストに基づいて、前記ホストから受け取った他のデータ読取コマンドに対して、要求されたデータをどんな順序で前記ホストに返すべきかを決定し、
前記要求されたデータを、決定された前記順序で前記ホストに返す、
性能をもたらすコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ソリッドステートドライブ（ＳＳＤ）からホストにデータを返す順序を決定するための推定機構に関する。
【背景技術】
【０００２】
ソリッドステートドライブ（ＳＳＤ）は、データを永続的に記憶するためにメモリユニットとして集積回路アセンブリを使用するデータ記憶装置である。ＳＳＤ技術は、従来のブロック入力／出力（Ｉ／Ｏ）ハードディスクドライブ（ＨＤＤ）と互換性がある電子インターフェースを使用する。ＳＳＤはいかなる移動機械部品も用いず、このことにより、可動読取書込ヘッドを使用し、回転している磁気ディスク上にデータを記憶させる従来のＨＤＤと区別される。
【０００３】
現在、ほとんどのＳＳＤは、ＮＡＮＤ型フラッシュメモリを使用する。ＮＡＮＤ型フラッシュメモリは、電力がない状態でデータを保持し、（フラッシュメモリはＥＥＰＲＯＭから開発されたため）電気的に消去し、再プログラムすることができる不揮発性メモリの形態である。さらに、ハイブリッドドライブは、頻繁にアクセスされるデータの性能を改善するために典型的にはハードディスクドライブおよびＳＳＤキャッシュを含む、ＳＳＤおよびＨＤＤの両方の特徴を同じユニット内に併せ持つ。フラッシュメモリは、浮遊ゲートトランジスタから作られたメモリセルのアレイに情報を記憶する。
【０００４】
エンタープライズＳＳＤの実装は、例えばサーバにおいて、典型的にデスクトップならびにラップトップのＨＤＤドライブおよびＳＳＤドライブと異なり、より高い性能基準が保たれている。すなわち、エンタープライズＳＳＤは、比較的高いＩ／Ｏ性能を提供することが典型的に要求される。したがって、最適な読取専用および読取／書込混合性能は、多くのＳＳＤ開発技術者の目標である。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の実施形態は、ソリッドステートドライブ（ＳＳＤ）記憶装置で使用するための、読取コマンドに応答するホストへのデータリターンの管理に関する。最適な読取専用および読取／書込混合性能は、データをホストに返す順序に影響を受け、データをホストに返す順序は、ホストが読取コマンドを送った順序に必ずしも一致しない。
【課題を解決するための手段】
【０００６】
一実施形態によれば、ソリッドステートドライブ（ＳＳＤ）の動作モニタは、対応するフラッシュダイ上の読取動作を完了する推定時間を特徴付ける数値指標、すなわち動作コストを管理するのに使用するカウンタを管理するために構成される。動作モニタは、カウンタをデクリメントする周期的なイベントを生成するタイマを起動する。各カウンタ内に記憶される値は、対応するダイに送られたフラッシュ動作に対して生成され、一般に動作の履歴および物理的な位置に基づく。読取コマンドが特定のダイに送られる予定の場合は常に、コントローラファームウェアは例えば、その特定のフラッシュ読取動作の時間推定を検索することができる。この情報に基づいて、データをホストに返す最適な順序を決定することができる。この順序は、ホストへのデータ転送を予定しプログラムするために使用され、最適な順序は、他の読取コマンドによってブロックされる読取コマンドの数が最小であるシーケンスを表し、これはブロッカコマンドが、ホストに返すことができる、それらの対応データを有していない場合である。
【０００７】
ＳＳＤ装置が受け取った読取コマンドに応答するホストへのリターンを管理するための方法の一実施形態によれば、ホストからデータコマンドを受け取り、それぞれの不揮発性メモリダイに送られた動作ごとに動作コストが生成される。各動作コストは、周期的なイベント（例えば、時間刻み）を生成するタイマに基づいてデクリメントされる。このように、対応するダイを読み取る時間が経時で減少すると、カウンタ内に示される動作コストが経時で減少する。ホストから受け取った読取コマンドの総コストは、読取コマンドに関連付けられた各それぞれの不揮発性メモリダイに送られた動作ごとの現在の動作コストに基づいて計算される。読取コマンドの総コストに基づいて、ホストから受け取った他の読取コマンドに対して、要求されたデータをホストに返す順序が決定される。
【０００８】
発明の概要の章で検討した実施形態は、本明細書で検討するすべての実施形態を示唆、説明、または教示することを意図していない。したがって本発明の実施形態は、この章で検討したものの追加の、またはそれとは異なる特徴を含んでもよい。
【０００９】
本発明の実施形態は、添付図面の図において限定としてではなく一例として示し、図中の同じ参照符号は同様の要素を指す。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態が実施され得る例示的動作環境を示すブロック図である。
【図２】本発明の実施形態が実施され得る、メモリ動作モニタに注目した例示的動作環境の一部を示すブロック図である。
【図３】本発明の一実施形態による、メモリ動作モニタを示すブロック図である。
【図４】本発明の一実施形態による、ホストへのリターンを管理するための方法を示すフローチャートである。
【発明を実施するための形態】
【００１１】
ソリッドステートドライブ（ＳＳＤ）記憶装置で使用するための、ホストからの読取コマンドに応答するホストへのデータリターンを管理するための手法を記載する。以下の記述では、説明の目的で、本明細書に記載の本発明の実施形態を完全に理解するために多くの特定の詳細を述べる。しかしながら本明細書に記載の本発明の実施形態は、これらの特定の詳細なしに実施してもよいことが明らかであろう。他の事例では、本明細書に記載の本発明の実施形態を不必要に曖昧にしないように、よく知られている構造および装置をブロック図形式で示す。
【００１２】
［ソリッドステートドライブ構造］
本発明の一実施形態は、ソリッドステートドライブ（ＳＳＤ）記憶装置を管理するために使用してもよい。図１は、本発明の実施形態が実施され得る例示的動作環境を示すブロック図である。図１は、主要な通信インターフェース１０６を介してホストデバイス１０４と通信可能に接続されたＳＳＤ１０２を備えた一般的なＳＳＤ構造１００を示す。本発明の一実施形態は、図１に示したような構造に限定されず、むしろ実施形態は、ＳＳＤ以外の動作環境に適用可能であってもよく、図１に示した構造以外のＳＳＤ構造内で実施してもよい。例えば実施形態は、データを書き込み、かつ読み取るための不揮発性メモリ記憶構成要素に依存する他の環境において動作するように実施してもよい。
【００１３】
ホストデバイス１０４（または単に「ホスト」）は、特に１つもしくは複数のメモリデバイスにデータＩ／Ｏ要求または呼び出しを行う任意の種類の計算ハードウェアまたは計算ソフトウェアを広く示す。例えば、ホスト１０４は、コンピュータ、タブレット、携帯電話、または一般に、メモリを含むもしくはメモリと相互作用する任意の種類の計算装置上で実行するオペレーティングシステムであってもよい。ホストデバイス１０４をＳＳＤ１０２に連結する主要インターフェース１０６は、例えばコンピュータの内部バスまたは通信ケーブルまたは無線通信リンクなどであってもよい。
【００１４】
図１に示した例示的ＳＳＤ１０２は、インターフェース１１０と、コントローラ１１２（例えば、その中にファームウェア論理を有するコントローラ）と、アドレッシング部１１４の機能ブロックと、データバッファキャッシュ１１６と、エラー訂正コード（ＥＣＣ）１１８と、１つまたは複数の不揮発性メモリ構成要素１２０ａ、１２０ｂ、１２０ｎとを含む。
【００１５】
インターフェース１１０は、構成要素間、すなわち本内容においてＳＳＤ１０２とホストデバイス１０４との間の相互作用の点であり、ハードウェアとソフトウェアの両方のレベルで適用可能である。これにより、入力／出力システムおよび関連するプロトコルを介して、構成要素同士が通信することができる。ハードウェアインタフェースは、機械的、電気的および論理的な信号によって、インターフェースおよび、信号の順序を付けるためのプロトコルにおいて典型的に表される。一般的かつ標準的なインターフェースのうちのいくつかの限定しない例には、ＳＣＳＩ（小型コンピュータシステムインターフェース）、ＳＡＳ（シリアル接続ＳＣＳＩ）およびＳＡＴＡ（シリアルＡＴＡ）がある。
【００１６】
ＳＳＤ１０２はコントローラ１１２を含み、コントローラ１１２は不揮発性メモリ１２０ａ、１２０ｂ、１２０ｎをホストデバイス１０４へなど、不揮発性メモリ構成要素（例えばＮＡＮＤフラッシュ）をホストへ橋架けする電子機器を組み込む。コントローラは典型的に、ファームウェアレベルコードを実行し、かつＳＳＤ性能において重要な因子である埋め込みプロセッサである。
【００１７】
コントローラ１１２は、アドレッシング部１１４の機能ブロックを介して不揮発性メモリ１２０ａ、１２０ｂ、１２０ｎとインターフェースする。アドレッシング部１１４の機能は、例えば、ホスト１０４から、ＳＳＤ１０２上の、すなわちＳＳＤ１０２の不揮発性メモリ１２０ａ、１２０ｂ、１２０ｎ上の、対応する物理的なブロックアドレスまでの論理ブロックアドレス（ＬＢＡｓ）間のマッピングを管理するよう動作する。不揮発性メモリページおよびホストセクタは寸法が異なるため、ＳＳＤは、セクタへのホスト書込みデータまたはセクタからのホスト読取データをＳＤＤが変換することができるデータ構造と、そのデータが実際に配置される物理的な不揮発性メモリページとを構築し維持しなければならない。このテーブル構造、すなわち「マッピング」は、ＤＲＡＭまたは、コントローラ１１２およびアドレッシング部１１４にアクセス可能ないくつかの他のローカル揮発性メモリ構成要素などのＳＳＤの揮発性メモリ１２２内に１セッション中、構築し維持されてもよい。あるいは、テーブル構造は、不揮発性メモリ１２０ａ、１２０ｂ、１２０ｎなどのＳＳＤの不揮発性メモリ内に複数のセッションにわたって、より永続的に維持されてもよい。
【００１８】
アドレッシング部１１４は、不揮発性メモリ１２０ａ、１２０ｂ、１２０ｎに加えて、データバッファキャッシュ１１６およびエラー訂正コード（ＥＣＣ）１１８と相互作用する。ＳＳＤ１０２のデータバッファキャッシュ１１６は、ハードディスクドライブ内のキャッシュと類似した、キャッシュとしてのＤＲＡＭを典型的に使用する。データバッファキャッシュ１１６は、キャッシュデータの今後の要求を速めるためのキャッシュとして役割を果たすと同様に、不揮発性メモリ構成要素間のデータ送信用のバッファまたは記憶領域として役割を果たす。データバッファキャッシュ１１６は典型的に、揮発性メモリと共に実装されるため、揮発性メモリに記憶されたデータはキャッシュに永久的には記憶されず、すなわちデータは永続的ではない。
【００１９】
ＥＣＣ１１８は、重複データまたはパリティデータをメッセージに追加するシステムであり、送信工程中、または記憶時に多数のエラーが生じた場合、受信機によって回復することができるようになっている。
【００２０】
最後に、ＳＳＤ１０２は１つまたは複数の不揮発性メモリ１２０ａ、１２０ｂ、１２０ｎの構成要素を含む。限定しない例として、不揮発性メモリ構成要素１２０ａ、１２０ｂ、１２０ｎは、フラッシュメモリ（例えばＮＡＮＤもしくはＮＯＲフラッシュ）、または、現在もしくは将来利用可能な他の種類のソリッドステートメモリとして実装してもよい。不揮発性メモリ１２０ａ、１２０ｂ、１２０ｎの構成要素は、データが永続的に記憶される実際のメモリ電子構成要素である。ＳＳＤ１０２の不揮発性メモリ１２０ａ、１２０ｂ、１２０ｎの構成要素は、ハードディスクドライブ（ＨＤＤ）記憶装置内のハードディスクの類似物と考えることができる。
【００２１】
ホストからの読取コマンドに応答するホストへのデータリターンを管理する本発明の実施形態を記載する。結果として、読取コマンドに関連するデータをホストに返すべき最適な順序を決定することができ、より高性能なＳＳＤ記憶装置が達成可能である。
【００２２】
［メモリ動作モニタ］
図２は、本発明の一実施形態が実施され得る、メモリ動作モニタに注目した例示的動作環境の一部を示すブロック図である。例示的動作環境２００は、ＣＰＵ２０４に通信可能に連結されたメモリ動作モニタ２０２（以下「動作モニタ」と呼ぶ）を含む。動作モニタ２０２は、１つまたは複数のチャンネル２０６ａ、２０６ｂ、２０６ｎにさらに連結され、各チャンネルは１つまたは複数の不揮発性メモリダイに連結される。例示的な目的として、図２は、ダイ２０８ａ０、ダイ２０８ａ１、ダイ２０８ａ２に連結され、それらと通信するチャンネル２０６ａと、ダイ２０８ｂ０、２０８ｂ１、２０８ｂ２に連結され、それらと通信するチャンネル２０６ｂと、ダイ２０８ｎ０、２０８ｎ１、２０８ｎ２に連結され、それらと通信するチャンネル２０６ｎとを示す。図２に示したチャンネルおよび対応するメモリダイの数は、例を目的としており、本発明の実施形態は示した厳密な構造に限定されないことに留意されたい。
【００２３】
実施形態によれば、動作モニタ２０２は図３を参照して説明するように動作する。一般に、動作モニタ２０２は、コントローラが実行可能な作業を行うのを支援するように構成されるハードウェアアクセラレータと見なすことができる。一実施形態によれば、動作モニタ２０２は、コントローラ１１２（図１）内に実装されるが、本発明の実施形態の実施はそれほど限定されない。したがって動作モニタ２０２は、本質的にＳＳＤ１０２（図１）内のいかなる場所にも、例えば１つまたは複数のメモリダイ２０８ａ０〜２０８ｎ２内にさえ実装することができるであろう。動作モニタ２０２は、ファームウェアまたはハードウェア内に実装されてもよい。図３を参照してより詳細に説明するように、動作モニタ２０２は推定器の機能として一般に機能する。
【００２４】
動作環境２００は、動作モニタ２０２の機能性に関連する指示、手順などを実行する専用または共用のＣＰＵ２０４を含んでもよい。ＣＰＵ２０４は、メモリダイ２０８ａ０〜２０８ｎ２に関連する動作を行うための実行可能な論理を実行することができるＳＳＤ１０２のプロセッサである。同様に、チャンネル２０６ａ、２０６ｂ、２０６ｎの各々は、それらそれぞれのメモリダイと同様に、互いにインターフェースする。チャンネルは、複数の実体または構成要素の間の通信「パイプライン」と考えることができる。したがって、ＳＳＤ１０２のチャンネル２０６ａ、２０６ｂ、２０６ｎは、動作モニタ２０２と各チャンネルのそれぞれのメモリダイとの間、およびＣＰＵ２０４と各チャンネルのそれぞれのメモリダイとの間の通信回線および動作回線として機能する。
【００２５】
フラッシュメモリは、一種の不揮発性メモリである。フラッシュメモリは、一種の電気的消去プログラム可能読取専用メモリ（ＥＥＰＲＯＭ）である。メモリダイは、不揮発性メモリのハードウェアユニットである。フラッシュメモリダイは、個別の集積回路ダイであり、そのようなダイは少なくとも１つのフラッシュメモリ集積回路を含む。ダイは、データがフラッシュメモリ上に記憶される低レベル媒体である。
【００２６】
図３は、本発明の一実施形態による、メモリ動作モニタを示すブロック図である。図３のメモリ動作モニタ２０２は、複数のダイカウンタを含み、ダイカウンタの各々は、１つまたは複数の対応するメモリダイに関連付けられている。例えば、ダイカウンタ３０２ａ０、３０２ａ１、３０２ａ２は、対応するダイ２０８ａ０、２０８ａ１、２０８ａ２（図２）に関連付けられ、ダイカウンタ３０２ｂ０、３０２ｂ１、３０２ｂ２は、対応するダイ２０８ｂ０、２０８ｂ１、２０８ｂ２（図２）に関連付けられ、またダイカウンタ３０２ｎ０、３０２ｎ１、３０２ｎ２は、対応するダイ２０８ｎ０、２０８ｎ１、２０８ｎ２（図２）に関連付けられている。メモリダイの数と同様に、図３に示したダイカウンタの数は例を目的としており、本発明の実施形態は示した厳密な構造およびダイカウンタの数に限定されないことに留意されたい。
【００２７】
ダイカウンタ３０２ａ０〜３０２ｎ２は、対応するダイ２０８ａ０〜２０８ｎ２（図２）上の読取動作に関連する完了時間を追跡するために使用されるデータ構造である。特定のダイ上の読取動作を完了する推定時間は、対応するダイカウンタに記憶されている「動作コスト」数値指標によって特徴付けられる。ダイカウンタ３０２ａ０〜３０２ｎ２に記憶される動作コスト値は、ダイ２０８ａ０〜２０８ｎ２に送られたすべてのフラッシュ動作に対して生成され、一実施形態によれば、ダイ履歴および動作の物理的な位置に基づく。
【００２８】
メモリ動作モニタ２０２は、ダイカウンタ３０２ａ０〜３０２ｎ２に関連付けられたタイマ３０４を含む。タイマ３０４は、時間刻みなどのダイカウンタ３０２ａ０〜３０２ｎ２をすべてデクリメントする周期的なイベントを生成する。限定しない例として、タイマ３０４は１μｓの時間刻みを生成してもよい。タイマ３０４は一旦初期化されると、いずれの読取コマンドにかかわらず時を刻む。タイマ３０４は、例えば、設定可能であることが多い固定周波数で、デクリメントするデジタルカウンタとして実装されてもよい。より精巧なタイマでは、比較論理を使用して、タイマ値を、ソフトウェアまたは他の論理によって設定された特定値と比較してもよい。この比較論理は、タイマ値が既定値と一致すると、何らかの作用を引き起こす。この種のタイマは、例えばパルスを生成するために使用することができる。一実施形態によれば、パルスを生成するために比較論理を使用するデジタルカウンタは、ダイカウンタ３０２ａ０〜３０２ｎ２内の値をデクリメントするために使用される。しかしながら、使用されるタイマの種類は実施態様によって異なってもよい。
【００２９】
このように、動作モニタ２０２は、動作コストを備えたダイカウンタ３０２ａ０〜３０２ｎ２をロードし、タイマ３０４が時間を刻むごとにこれらの動作コスト値をデクリメントすることによって、ソリッドステートドライブを含むすべてのフラッシュダイ上のフラッシュ読取動作の完了時間を推定かつ管理する。
【００３０】
メモリ動作モニタ２０２は、１つまたは複数のプログラムコストレジスタ３１４ａ、３１４ｂ、３１４ｃ、３１４ｎを含む。プログラムコストレジスタ３１４ａ〜３１４ｎは、書込動作としても知られているページプログラム動作を完了するのにかかる時間を考慮するのに使用される。図３に示したプログラムコストレジスタの数は、例を目的としており、本発明の実施形態は示した厳密な構造およびプログラムコストレジスタの数に限定されない。コストレジスタの数は、設計上の選択の問題であってもよく、例えば不揮発性メモリ１２０ａ〜１２０ｎ（図１）およびＳＳＤ１０２（図１）構造に基づいてもよい。しかしながら、一実施形態によれば、プログラムコストに対して４つの取り得る値を保持するために４つのコストレジスタが使用され、そのようなプログラムコスト値は、不揮発性メモリ１２０ａ〜１２０ｎ内のページ位置によるばらつきをプログラムすることを考慮する。一般的なプログラムコストレジスタ３１４ａ〜３１４ｎの値は不揮発性メモリ１２０ａ〜１２０ｎから予め決定することができるが、これらの値は要求されたデータが記憶される不揮発性メモリ上の関連位置に基づいて、および不揮発性メモリの種類などに基づいて変化する。
【００３１】
動作モニタ２０２は、消去コストレジスタ３１０および読取コストレジスタ３１２を含む。消去コストレジスタ３１０は、消去動作を完了するのにかかる時間を示す値を記憶するために使用され、読取コストレジスタ３１２は、読取動作を完了するのにかかる時間を示す値を記憶するために使用される。単純にするため、単一の消去コストレジスタ３１０および単一の読取コストレジスタ３１２を図３に示した。本明細書で記載したより広い教示を比較的単純に実施するため、図示したように本発明の実施形態を実施することができるであろう。すなわち、単純な実施では、単純なレジスタを利用して、様々なコスト情報を記憶してもよい。
【００３２】
しかしながら、読取、消去およびプログラムのコストは、ＳＳＤの寿命にわたって、およびダイ２０８ａ０〜２０８ｎ２内の様々なブロックにわたって変化する。したがって、実施形態の実施は、コストが推定される粒度レベルの点で異なってもよい。よって、実施形態の比較的より複雑な実施は、メモリ３０８を使用して、ダイ、ブロックまたはページ単位で、およびドライブの寿命にわたるこれらのコスト変化として、読取、消去、プログラムのコストの多くのばらつきを記憶してもよい。コスト数値指標の多くのばらつきを記憶する、より大きいメモリ３０８は、より正確にコスト推定を行いやすいため、コスト粒度対推定精度は実施レベルで管理することができるトレードオフである。
【００３３】
プログラム（すなわち書込動作）コスト、読取コスト、および消去コストが考慮される１つの理由は、不揮発性メモリダイ２０８ａ０〜２０８ｎ２上の読取動作の完了時間、ひいてはデータをホスト１０４（図１）に返す最適な順序が、例えば、ホスト書込動作およびガーベジコレクション動作（すなわちランダムミックスシナリオ）による読取動作、ならびに、同じダイ（すなわちランダム読取シナリオ）をターゲットとする他のホストコマンドによる読取動作と同時に実行する書込、消去、読取の動作により影響を受けることである。したがって、データをホスト１０４（図１）に返すべきコマンドの最適な順序は、少なくとも部分的に、背景動作と同様にランダムミックスシナリオおよびランダム読取シナリオにより、ホストがＳＳＤ１０２（図１）にコマンドを送った順序に必ずしも一致しない。
【００３４】
動作モニタ２０２の制御論理３０６は、ダイカウンタ３０２ａ０〜３０２ｎ２を取り込んで管理し、かつ、プログラムコストレジスタ３１４ａ〜３１４ｎ、消去コストレジスタ３１０および読取コストレジスタ３１２などの様々なレジスタ、ならびに動作モニタ２０２の代替の実施形態で実施されてもよい任意の他のレジスタを構成するように実行する論理である。制御論理３０６はまた、複数のダイ２０８ａ０〜２０８ｎ２（図２）にわたる、または複数の不揮発性メモリ１２０ａ〜１２０ｎ（図１）にわたる様々な動作コスト（例えば、消去コスト、読取コスト）を平均するなど、現在または実際の動作完了時間に基づいてレジスタ動作コストを調整するなどの、データをホスト１０４に返す最適な順序の決定を支援して、他の作業および計算を行ってもよい。制御論理３０６の範囲は、限定されるものではなく、他の機能を行うためのそのような論理の展開が具体的に考慮される。
【００３５】
動作モニタ２０２は、１つまたは複数のチャンネルバス制御３１６ａ、３１６ｂ、３１６ｎを含み、各々はそれぞれのチャンネル２０６ａ、２０６ｂ、２０６ｎ（図２）に対応する。一実施形態によれば、チャンネルバス制御３１６ａ〜３１６ｎは、例えば、その上でチャンネル２０６ａ〜２０６ｎがダイ２０８ａ０〜２０８ｎ２への動作を促進するチャンネルバス（図２）をスヌープすることにより、ダイ２０８ａ０〜２０８ｎ２（図２）上の動作の開始および終了を検出するように構成される。そのような検出された動作活動は、ダイカウンタ３０２ａ０〜３０２ｎ２の動作コスト値を取り込んで管理するために制御論理３０６によって使用することができる。
【００３６】
動作モニタ２０２のメモリ３０８は、様々な目的での動作モニタ２０２によって使用可能なメモリであり、それらのうちのいくつかは、所望のコスト数値指標の粒度、および動作モニタ２０２内で具体化されてもよい自動調整特徴の文脈において、より詳細に本明細書で述べる。メモリ３０８の種類および形態は限定されず、関連する設計制約、目標などに基づいて実施態様によって異なる。
【００３７】
［ホストへのリターンを管理するための方法］
図４は、本発明の一実施形態による、ホストへのリターンを管理するための方法を示すフローチャートである。図４に示した工程は、ＳＳＤ１０２（図１）などのＳＳＤ内で実施してもよい。さらに具体的には、図４に示した工程は、一実施形態によるＳＳＤ１０２のコントローラ１１２（図１）内で実施してもよい。さらに一実施形態によれば、図４の工程はメモリ動作モニタ２０２（図２）内で実施する。プロセス論理は、ＳＳＤ１０２内のアナログもしくはデジタルハードウェア回路として、またはＳＳＤ１０２内のＣＰＵ２０４（図２）もしくはＭＰＵなどのプロセッサによって実行されるファームウェア命令として実施してもよい。
【００３８】
図４のブロック４０２では、データ読取コマンドをホストから受け取る。例えば、データ読取コマンドは、ＳＳＤ１０２（図１）のインターフェース１１０（図１）を介してコントローラ１１２（図１）においてホストデバイス１０４（図１）から受け取る。待ち行列型コマンドシステムでは、ホストは多数の、すなわちＳＳＤ１０２が同時かつ瞬時に処理することができる量を超える読取および書込コマンドをＳＳＤ１０２などの記憶装置に送ることができる。顕著には、ホストがコマンドを送る順序は、必ずしも、最良のＳＳＤ性能のための、ホストに応答し、またデータを返す最良の順序ではない。これは、例えばターゲットダイがアイドル状態であるか否か、および、ターゲットダイが消去動作、ページプログラム動作または読取動作でビジー状態であるか否かに基づいて、フラッシュメモリダイからデータを読み取る待ち時間が異なることが一因である。
【００３９】
コントローラ１１２（図１）は、不揮発性メモリ１２０ａ〜１２０ｎ（図１）内のどこにデータが記憶されているかの「知識」を有する。このように、コントローラ１１２は、要求を受け取る順序で要求に応答してデータをメモリから取り出してもよいが、例えば、不揮発性メモリが現在何をどのように動作しているか、メモリの前の動作は何であったか、関連データはメモリ内のどこに位置しているかなどによって、動作はかかる時間量が異なる。著しくは、本明細書で説明した実施形態は、性能目的でデータをホストに返す最適な順序を決定する。対照的に、次いで最適でないリターン順序が用いられる場合、システムはデータをホストに返すことができる前に、他のメモリ動作が完了するのをより長くおよび／またはより頻繁に待つ必要がある場合が多い。
【００４０】
ブロック４０４では、動作コストが、それぞれの不揮発性メモリダイに送られる動作ごとに生成される。例えば、消去コストレジスタ３１０（図３）、読取コストレジスタ３１２（図３）およびプログラムコストレジスタ３１４ａ〜３１４ｎ（図３）に基づいて、ならびに、ターゲットメモリダイが現在何を処理しているのか、または何を待ち行列に入れているのかに基づいて、メモリ動作モニタ２０２（図２）の制御論理３０６（図３）は、ターゲットダイ（例えば、図２の１つまたは複数のダイ２０８ａ０〜２０８ｎ２）に対する動作コストを、対応するダイカウンタ３０２ａ０〜３０２ｎ２（図３）内に、構築かつ記憶する。動作コストは、必ずしもではないが、ホストからの読取要求に応答して生成されてもよいことに留意されたい。
【００４１】
一実施形態によれば、カウンタに記憶される動作コスト値は、特定の読取コマンドについて、ダイに送られたすべての不揮発性メモリ動作に対して自動的に生成される。先述したように、制御論理３０６（図３）は、チャネルバス制御３１６ａ〜３１６ｎ（図３）によってそれぞれのチャンネルバスから得られた情報、例えば動作の開始および終了時間を使用し、読取コマンドに応答して様々なダイカウンタ３０２ａ０〜３０２ｎ２（図３）に対して現在の値を計算することができる。あるいは、カウンタに記憶される動作コスト値は、すべての不揮発性メモリダイに対して、自動的に生成され、常時管理されるため、ホストからの読取コマンドに応答して要求される時、利用可能である。このように、制御論理３０６は、チャネルバス制御３１６ａ〜３１６ｎによってそれぞれのチャンネルバスから得た情報を使用し、経時で様々なダイカウンタ３０２ａ０〜３０２ｎ２の初期化およびフラッシングを引き起こすことができる。
【００４２】
ブロック４０６では、各動作コストが、周期的なイベントを生成するタイマに基づいて経時でデクリメントされる。例えば、対応するダイカウンタ３０２ａ０〜３０２ｎ２（図３）内のターゲットダイ（例えば、図２の１つまたは複数のダイ２０８ａ０〜２０８ｎ２）に対して生成された動作コストは、タイマ３０４（図３）の時間刻みに基づいて、経時でデクリメントされる。１つまたは複数のダイが消去動作、読取動作、または書込動作で現在ビジー状態であると仮定すると、次いで、対応するダイ内の動作コストは、それぞれの現在の動作の完了までの時間を反映する。次いで、時間が経過し、動作が完了すると、現在の動作の動作コストを現在の動作完了に一致する０にデクリメントする目的で、ダイカウンタ内の動作コストは、デクリメントするタイマ３０４の時間刻みに基づいて、相応に減少している。
【００４３】
ＮＡＮＤフラッシュなどの特定の種類の不揮発性メモリについては、メモリから読み取ったり、またはメモリに書き込んだりすることができるデータの最大量は１ページである。例えば、１ページは８Ｋｂのデータであり得る。したがって、読取または書込コマンドは、複数のダイにわたって広げられることが多い。読取動作について記述するホストデータコマンドを受け取ると、コントローラ１１２（図１）のファームウェアは、データコマンドをダイ読取コマンドに分けることができ、ダイ読取コマンドの数はコマンドの長さに依存する。例えば、８Ｋｂページで、ホストからの６４Ｋｂの読取コマンドは、ダイからの８つの読取り、すなわち６４Ｋｂの読取コマンドに対して各８Ｋｂの８つの読取りを必要とするであろう。
【００４４】
ブロック４０８では、ホストから受け取った読取コマンドの総コストが、それぞれの不揮発性メモリダイに送られた動作ごとの現在の動作コストに基づいて計算される。例えば、ダイからデータの各セグメントを検索するのに必要な全ての読取動作の完了までの最大時間が計算される。６４Ｋｂの読取コマンド例を続け、ホストからの読取コマンドを満たすために読み取る必要がある８つのダイのそれぞれに対する動作コストが、このセットのダイ読取動作の完了までの最大時間を決定するために比較され、読取コマンドの総動作コストを計算する。説明したように、各読取動作の完了までの時間は、各ダイが現在何を行っているかを考慮しており、各ダイがその動作寿命の間に何を行ったかを考慮してもよい。
【００４５】
例えば一実施形態によれば、動作モニタ２０２（図３）は記述したようなダイカウンタ３０２ａ０〜３０２ｎ２（図３）内に動作コストを構築かつ維持する役割を果たし、一方、コントローラ１１２（図１）のファームウェアは、ブロック４０８でのように、総動作コストを計算する役割を果たす。しかしながら、機能性の分布は実施態様によって異なり、記述した分布に限定されない。例えば、代替の一実施形態では、総動作コストは、動作モニタ２０２によって計算され、コントローラ１１２のファームウェアに返されてもよい。
【００４６】
ブロック４１０では、ブロック４０８で計算された読取コマンドの総コストに基づいて、ホストから受け取った他の読取コマンドに対して、要求されたデータをどんな順序でホストに返すべきかが決定される。説明したように、ホストがコマンドを送る順序は、必ずしも最良のＳＳＤ性能のための、応答し、データをホストに返す最良の順序ではない。図４の方法は、様々な読取コマンドをホストから受け取る順序を第一に考慮せずに、データをホストに返す「最良の」または「最適な」順序を推定する。そのため、動作コストが最小である、すなわち完了までの時間が最短であるダイ動作は、動作コストおよび完了時間がより大きいダイ動作の前に、ホストに返すことができる。その結果、より短い動作のリターンをブロックする、より長い動作を回避するようにリターンは待ち行列に入れられる。
【００４７】
例えば一実施形態によれば、コントローラ１１２（図１）のファームウェアは、ブロック４１０でのように、リターン順序を決定する役割を果たす。しかしながら、機能性の分布は実施態様によって異なり、記述した分布に限定されない。例えば、代替の一実施形態では、リターン順序は動作モニタ２０２によって計算され、コントローラ１１２のファームウェアに返されてもよい。
【００４８】
動作コスト推定工程がどのように進むかを要約すると、一実施形態によれば、読取コマンドをホスト１０４（図１）から受け取ると、コントローラ１１２（図１）は、読取コマンドによってターゲットとされた（図２のダイ２０８ａ０〜２０８ｎ２の）各不揮発性メモリダイの動作コストについて、動作モニタ２０２（図２および図３）に問い合わせる。コントローラ１１２は、各ターゲットダイの動作についての現在の状況を考慮して、各ターゲットダイの読取りを完了する時間量について動作モニタ２０２に効果的に問い合わせる。次いでコントローラ１１２は、すべてのターゲットダイに対する動作コストに基づいて、読取コマンドの総コストを計算する。読取コマンドの総コストから、コントローラは、ホストからの他の読取コマンドに対して読取コマンドに応答するデータを返す高性能な順序を決定することができる。
【００４９】
［推定器機構の自動調整］
フラッシュメモリの特性および作業能力は経時で、そして使用で変わり（例えばプログラム時間、消去時間などを）、また動作コスト推定が部分的にフラッシュの特性に基づくため、初期動作コスト値は、フラッシュが不揮発性メモリに使用される一実施形態において、ドライブの寿命の間、調整されてもよい。そのため、消去コストレジスタ３１０、読取コストレジスタ３１２、およびプログラムコストレジスタ３１４ａ〜３１４ｎ（図３）内の値は、使用で生じる完了時間のばらつきに基づいて、すなわちフラッシュの動作履歴に基づいて経時で調整されてもよい。
【００５０】
一実施形態によれば、動作モニタ２０２（図２）は、フラッシュの物理的性質による経時での動作コスト変化を特定するために、様々な動作に対して各ダイが使用される回数を追跡する。この目的で、動作モニタ２０２は、チャンネルバス制御３１６ａ〜３１６ｎ（図３）から得てもよい、フラッシュからの実際のデータを使用し、フラッシュの劣化に伴い、動作コストレジスタ値を調整してもよい。そのような情報は、各フラッシュメモリ構成要素に関連した正確なダイ依存の劣化を与え、そして、動作モニタ２０２のメモリ３０８（図３）に記憶することができるであろう。そのような情報の正確さは実施態様によって異なってもよく、このように「ダイごと」または「ブロックごと」で収集し、記憶することができるであろう。したがって、メモリ３０８は、フラッシュ劣化データに実施される精度レベルに基づいて、相応に大きさを形成することができる。
【００５１】
上述の明細書では、本発明の実施形態について、実施態様によって異なり得る多数の特定の詳細を参照し説明した。したがって本発明のもの、および本出願人により発明であるように意図されたものの唯一の指標は、特許請求範囲が由来する特定の形式の、いかなる以下の補正も含む本出願に由来する一組の特許請求範囲である。このような特許請求範囲に含まれる用語の、本明細書において明示的に記載したいかなる定義も、特許請求の範囲に使用したような用語の意味を規定するものとする。したがって請求項内で明示的に記載しない限界、素子、特性、特徴、利点、または属性により、このような請求項の範囲が決して制限されるべきではない。したがって本明細書と添付図面は限定的ではなく例示的であると解釈すべきである。
【符号の説明】
【００５２】
１００  ソリッドステートドライブ（ＳＳＤ）構造
１０２  ＳＳＤ
１０４  ホストデバイス
１０６  主要インターフェース
１１０  インターフェース
１１２  コントローラ
１１４  アドレッシング部
１１６  データバッファキャッシュ
１１８  エラー訂正コード（ＥＣＣ）
１２０ａ、１２０ｂ、１２０ｎ  不揮発性メモリ構成要素
１２２  揮発性メモリ
２００  動作環境
２０２  メモリ動作モニタ
２０４  ＣＰＵ
２０６ａ、２０６ｂ、２０６ｎ  チャンネル
２０８ａ０、２０８ａ１、２０８ａ２、２０８ｂ０、２０８ｂ１、２０８ｂ２、２０８ｎ０、２０８ｎ１、２０８ｎ２  メモリダイ
３０２ａ０、３０２ａ１、３０２ａ２、３０２ｂ０、３０２ｂ１、３０２ｂ２、３０２ｎ０、３０２ｎ１、３０２ｎ２  ダイカウンタ
３０４  タイマ
３０６  制御論理
３０８  メモリ
３１０  消去コストレジスタ
３１２  読取コストレジスタ
３１４ａ、３１４ｂ、３１４ｃ、３１４ｎ  プログラムコストレジスタ
３１６ａ、３１６ｂ、３１６ｎ  チャンネルバス制御機構
４０２、４０４、４０６、４０８、４１０、４１２  ブロック
【図１】
2014110058.tif 000003
【図２】
2014110058.tif 000004
【図３】
2014110058.tif 000005
【図４】
2014110058.tif 000006