(57)【要約】      （修正有）【課題】ホストに接続されたソリッドステート記憶デバイスのメモリアレイのフラッシュメモリインターフェイスを介してメモリアクセス動作を管理する方法を提供する。【解決手段】メモリコントローラは、メモリアレイ内で第１のメモリアクセス動作を実行する。第１のメモリアクセス動作は、第１の優先度を有する。メモリアレイ内で実行可能であり、第１の優先度よりも高い優先度を有する、メモリアクセス動作のサスペンドを検出する。検出動作は、メモリアクセス動作のサスペンドとメモリアクセス動作の非サスペンドとを区別する。メモリアレイ内の第１のメモリアクセス動作の実行をサスペンドし、第１の優先度よりも高い優先度を有し、メモリアレイ内で実行可能である、１つ以上のメモリアクセス動作を実行する。メモリアレイ内の第１のメモリアクセス動作の実行を再開する。【選択図】図３
2019200833.tif 000002
【特許請求の範囲】
【請求項１】
ホストに接続されたソリッドステート記憶デバイスのメモリアレイのフラッシュメモリインターフェイスを介してメモリアクセス動作を管理する方法であって、前記方法は、
前記メモリアレイ内で第１のメモリアクセス動作を実行することであって、前記第１のメモリアクセス動作は第１の優先度を有する、ことと、
前記メモリアレイ内で実行可能であり、前記第１の優先度よりも高い優先度を有する、少なくとも１つのメモリアクセス動作のサスペンドを検出することであって、前記検出動作は、メモリアクセス動作のサスペンドとメモリアクセス動作の非サスペンドとを区別する、ことと、
前記検出動作に応答して、前記メモリアレイ内の第１のメモリアクセス動作の実行をサスペンドすることと、
前記サスペンド動作に応答して、前記第１の優先度よりも高い優先度を有し、前記メモリアレイ内で実行可能である、１つ以上のメモリアクセス動作を、前記メモリアレイ内で実行可能である、前記第１の優先度よりも高い優先度を有するメモリアクセス動作が他になくなるまで実行することと、
前記実行動作の完了に応答して、前記メモリアレイ内の前記第１のメモリアクセス動作の実行を再開することと、を含む、方法。
【請求項２】
前記再開動作の前に、前記第１の優先度よりも高い優先度を有し、少なくとも１つの時限サスペンド延長期間の満了前に前記メモリアレイ内で実行可能になる、前記メモリアレイ内の１つ以上の新たに利用可能なメモリアクセス動作を実行することであって、前記少なくとも１つの時限サスペンド延長期間は、前記１つ以上のメモリアクセス動作を実行する動作の終了後に開始する、ことを更に含む、請求項１に記載の方法。
【請求項３】
前記メモリアレイ内で、１つ以上の新たに利用可能なメモリアクセス動作を実行する動作が、前記第１のメモリアクセス動作がサスペンドされたままである間、複数の時限サスペンド延長期間にわたって反復的に実行される、請求項１に記載の方法。
【請求項４】
前記第１のメモリアクセス動作が、間隔のシーケンスに分割され、前記第１のメモリアクセス動作が、サスペンド前の前記間隔のうちの実行間隔で実行され、前記サスペンド動作が、
前記第１のメモリアクセス動作の前記実行間隔が完了するまで、前記第１のメモリアクセス動作のサスペンドを遅延させることと、
前記第１のメモリアクセス動作の前記実行間隔の完了後に、前記メモリアレイ内の前記第１のメモリアクセス動作の実行をサスペンドすることと、を含む、請求項１に記載の方法。
【請求項５】
次の間隔が、前記間隔のシーケンス内の前記実行間隔に続き、前記再開動作は、
前記メモリアレイ内の前記第１のメモリアクセス動作の実行を、前記シーケンスの次の間隔で再開することを含む、請求項４に記載の方法。
【請求項６】
前記実行動作が、
前記実行動作中に、前記メモリ内で実行可能なメモリアクセス動作の再開トリガの検出に応答して、前記メモリアレイ内の前記第１のメモリアクセス動作の実行を再開することを含む、請求項１に記載の方法。
【請求項７】
前記第１のメモリアクセス動作がプログラム動作であり、前記プログラム動作よりも高い優先度を有する他のメモリアクセス動作のうちの少なくとも１つが、ホスト読み出し動作である、請求項１に記載の方法。
【請求項８】
ネストされたレベルのサスペンド及び再開が、複数のレベルのより優先度の高いメモリアクセス動作に対して実行される、請求項１に記載の方法。
【請求項９】
ホストに接続されたソリッドステート記憶デバイスにおいてメモリアクセス動作を管理するためのシステムであって、前記システムは、
１つ以上のメモリアレイと、
フラッシュメモリインターフェイスであって、前記１つ以上のメモリアレイに連結されたメモリコントローラを含み、
前記１つ以上のメモリアレイのうちのメモリアレイ内で第１のメモリアクセス動作を実行し（前記第１のメモリアクセス動作は第１の優先度を有する）、
前記メモリアレイ内で実行可能であり、前記第１の優先度よりも高い優先度を有する、少なくとも１つのメモリアクセス動作のサスペンドを検出し（前記検出動作はメモリアクセス動作のサスペンドとメモリアクセス動作の非サスペンドとを区別する）、
前記検出動作に応答して、前記メモリアレイ内の第１のメモリアクセス動作の実行をサスペンドし、
前記第１のメモリアクセス動作の実行のサスペンドに応答して、前記第１の優先度よりも高い優先度を有する、前記メモリアレイ内で実行可能な１つ以上のメモリアクセス動作を、前記メモリアレイ内で実行可能である、前記第１の優先度よりも高い優先度を有するメモリアクセス動作が他になくなるまで実行し、
前記実行動作の完了に応答して、前記メモリアレイ内の前記第１のメモリアクセス動作の実行を再開するように構成されている、フラッシュメモリインターフェイスと、を含む、システム。
【請求項１０】
前記メモリコントローラが、
前記１つ以上のメモリアクセス動作を実行する動作の終了後に、少なくとも１つの時限サスペンド延長期間を開始するタイマを含み、前記メモリコントローラは、前記再開動作の前に、前記第１の優先度よりも高い優先度を有し、前記少なくとも１つの時限サスペンド延長期間の満了前に前記メモリアレイ内で実行可能になる、前記メモリアレイ内の１つ以上の新たに利用可能なメモリアクセス動作を実行するように更に構成されている、請求項９に記載のシステム。
【請求項１１】
前記第１のメモリアクセス動作が、間隔のシーケンスに分割され、それぞれの間隔は、前記少なくとも１つの時限サスペンド延長期間よりも時間が長く、前記第１のメモリアクセス動作が、サスペンドの前に前記間隔のうちの実行間隔で実行され、前記メモリコントローラが、前記サスペンド動作を、
前記第１のメモリアクセス動作の前記実行間隔が完了するまで、前記第１のメモリアクセス動作のサスペンドを遅延させること、及び、
前記第１のメモリアクセス動作の前記実行間隔の完了後に、前記メモリアレイ内の前記第１のメモリアクセス動作の実行をサスペンドすること、により、前記サスペンド動作を実行するように更に構成されている、請求項１０に記載のシステム。
【請求項１２】
次の間隔が、前記間隔のシーケンス内の前記実行間隔に続き、前記メモリコントローラが、前記シーケンスの次の間隔で前記メモリアレイ内の前記第１のメモリアクセス動作の実行を再開することによって、前記第１のメモリアクセス動作の実行を再開するように更に構成されている、請求項１１に記載のシステム。
【請求項１３】
前記メモリコントローラが、前記メモリアレイ内の１つ以上の新たに利用可能なメモリアクセス動作を、前記第１のメモリアクセス動作がサスペンドされたままである間、複数の時限サスペンド延長期間にわたって反復的に実行するように更に構成されている、請求項９に記載のシステム。
【請求項１４】
前記第１のメモリアクセス動作がプログラム動作であり、前記プログラム動作よりも高い優先度を有する他のメモリアクセス動作のうちの少なくとも１つが、ホスト読み出し動作である、請求項９に記載のシステム。
【請求項１５】
前記メモリコントローラが、前記１つ以上のメモリアクセス動作の実行を中断し、再開トリガ条件が満たされたときに前記第１のメモリアクセス動作を再開するように更に構成されており、前記第１の優先度よりも高い優先度を有する少なくとも１つのメモリアクセス動作が、前記メモリアレイ内で実行可能なままである、請求項９に記載のシステム。
【請求項１６】
より高い優先度を有するメモリアクセス動作が、より低い優先度を有するメモリアクセス動作より先に利用可能にされる、請求項９に記載のシステム。
【請求項１７】
ホストに接続されたソリッドステート記憶デバイスのメモリアレイのフラッシュメモリインターフェイスを介してメモリアクセス動作を管理するプロセスをプロセッサ上で実行するためのプロセッサ実行可能命令を符号化する１つ以上の有形プロセッサ可読記憶媒体であって、前記プロセスは、
前記メモリアレイ内で第１のメモリアクセス動作を実行することであって、前記第１のメモリアクセス動作は第１の優先度を有する、ことと、
前記メモリアレイ内で実行可能であり、前記第１の優先度よりも高い優先度を有する、少なくとも１つのメモリアクセス動作のサスペンドを検出することであって、前記検出動作は、メモリアクセス動作のサスペンドとメモリアクセス動作の非サスペンドとを区別する、ことと、
前記検出動作に応答して、前記メモリアレイ内の第１のメモリアクセス動作の実行をサスペンドすることと、
前記サスペンド動作に応答して、前記第１の優先度よりも高い優先度を有し、実行可能である、前記メモリアレイ内の１つ以上のメモリアクセス動作を、前記メモリアレイ内で実行可能である、前記第１の優先度よりも高い優先度を有するメモリアクセス動作が他になくなるまで実行することと、
前記実行動作の完了に応答して、前記メモリアレイ内の前記第１のメモリアクセス動作の実行を再開することと、を含む、１つ以上の有形プロセッサ可読記憶媒体。
【請求項１８】
前記再開動作の前に、前記第１の優先度よりも高い優先度を有し、少なくとも１つの時限サスペンド延長期間の満了前に前記メモリアレイ内で実行可能になる、前記メモリアレイ内の１つ以上の新たに利用可能なメモリアクセス動作を実行することを更に含み、前記少なくとも１つの時限サスペンド延長期間は、前記１つ以上のメモリアクセス動作を実行する動作の終了後に開始する、請求項１７に記載の１つ以上の有形プロセッサ可読記憶媒体。
【請求項１９】
前記第１のメモリアクセス動作がプログラム動作であり、前記プログラム動作よりも高い優先度を有する他のメモリアクセス動作のうちの少なくとも１つが、ホスト読み出し動作である、請求項１７に記載の１つ以上の有形プロセッサ可読記憶媒体。
【請求項２０】
前記第１のメモリアクセス動作がプログラム動作であり、前記プログラム動作よりも高い優先度を有する他のメモリアクセス動作のうちの少なくとも１つが、マップ読み出し動作である、請求項１７に記載の１つ以上の有形プロセッサ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
３Ｄフラッシュメモリは、２Ｄフラッシュメモリ技術よりも長いプログラム時間を伴う。複数のメモリページが単一の動作でプログラムされるワンショットプログラミングの実行によって、より長いプログラム時間が増加する可能性があり、それにより、ビジーなダイ上に有意なボトルネックが生じ得る。読み出し／書き込みが混在するワークロードでは、より長いプログラム時間により、他のより優先度の高い動作に対するボトルネックが生じ得る。例えば、読み出し動作は、ダイ上の長いプログラム動作によってブロックされたときに、長い待ち時間を経験し得る。
【発明の概要】
【課題を解決するための手段】
【０００２】
本明細書に開示される実施例は、ホストに接続されたソリッドステート記憶デバイスのメモリアレイのフラッシュメモリインターフェイスを介してメモリアクセス動作を管理するためのシステム及び方法を提供する。メモリコントローラは、メモリアレイ内で第１のメモリアクセス動作を実行する。第１のメモリアクセス動作は、第１の優先度を有する。メモリコントローラは、メモリアレイ内で実行可能であり、第１の優先度よりも高い優先度を有する、少なくとも１つのメモリアクセス動作のサスペンドを検出する。検出動作は、メモリアクセス動作のサスペンドとメモリアクセス動作の非サスペンドとを区別する。メモリコントローラは、メモリアレイ内の第１のメモリアクセス動作の実行をサスペンドし、第１の優先度よりも高い優先度を有する、メモリアレイ内で実行可能な１つ以上のメモリアクセス動作を、メモリアレイ内で実行可能である、第１の優先度よりも高い優先度を有するメモリアクセス動作が他になくなるまで実行する。メモリコントローラは、実行動作の完了に応答して、メモリアレイ内の第１のメモリアクセス動作の実行を再開する。
【０００３】
この「発明の概要」は、「発明を実施するための形態」において以下に更に説明される簡潔な形態で概念の選択を紹介するために提供される。この「発明の概要」は、「特許請求の範囲」に記載された対象の重要な特徴又は本質的特徴を識別するようには意図されず、かつ「特許請求の範囲」に記載された対象の範囲を限定するために使用されるようには意図されない。これら及び様々な他の特徴及び利点は、以下の「発明を実施するための形態」を読むことで明らかとなるであろう。
【０００４】
他の実施例もまた、本明細書に説明及び列記される。
【図面の簡単な説明】
【０００５】
【図１】スケジュールされたメモリアレイ動作のサスペンド／再開制御をメモリアレイに提供するための例示的なメモリコントローラを示す。
【図２】少なくとも３次元にデータを格納するのに好適なメモリアレイを含むメモリデバイスの一例を示す。
【図３】メモリアクセス動作のサスペンド及び再開をスケジュール及び実施するための例示的な動作を示す。
【図４】メモリアクセス動作のサスペンド及び再開を管理するための例示的な動作を示す。
【図５】本明細書に記載された技術を実施するのに有用であり得る例示的な処理システムを示す。
【発明を実施するための形態】
【０００６】
図１は、スケジュールされたメモリアレイ動作のサスペンド／再開制御をメモリアレイ１００（データアレイとも称される）に提供するための例示的なメモリコントローラ１２６を示す。メモリアレイ１００は、異なるインクリメンタルステップパルスプログラム（ＩＳＰＰ）電圧を介してプログラム可能なメモリセル（例えば、メモリセル１０２）を含む。メモリアレイのメモリセルは、一般にＮＡＮＤストリングと呼ばれるもので直列に接続されている複数の浮遊ゲートトランジスタメモリセルを含む。このタイプのメモリアレイ１００は、ＮＡＮＤフラッシュメモリとして知られている。ＮＡＮＤフラッシュは、開示された技術での使用に好適なメモリタイプの単に一例であることを理解されたい。
【０００７】
それぞれのＮＡＮＤストリングは、ビット線（例えば、記号が出力バス（例えば、バス１０８）を介して読み取られ得るビット線１０６）に連結される。隣接するＮＡＮＤストリングのセルは、メモリセルのどの列が読み出し動作及びプログラム動作の影響を受けるかを選択するワード線（例えば、ワード線１１０）を介して連結される。選択ゲート１１２、１１４はまた、読み出し動作及びプログラム動作中に、ＮＡＮＤストリングをそれぞれのビット線及び接地に選択的に連結する。一般に、それぞれのワード線は、物理的にアドレス可能な最小のデータユニットである１つ以上のページ（例えば、ページ１１８）に関連付けられ得る。ビット単位のページのサイズ（ユーザーデータ及びエラー訂正コード、すなわちＥＣＣの両方を含み得る）は、ワード線内のＮＡＮＤストリングの数に対応する。ＭＬＣメモリアレイは、対応するビット（例えば、それぞれのページからの全てのビット０）をそれぞれのセル内の固有の電荷レベルに符号化することによって、ワード線上に複数のページを格納する。
【０００８】
フラッシュメモリは、浮遊ゲートを特定の電圧に充電することによって状態を保持する。これにより、指定された読み出し電圧が印加されると、既定量の電流がチャネルを流れる。メモリセル１０２の拡大図１０１は、フラッシュメモリセルトランジスタを示す。フラッシュメモリセルトランジスタは、基板１３６の表面に位置するソース領域１３４及びドレイン領域１３２を含む。ゲート構造は、ソース領域１３４とドレイン領域１３２との間に画定されたチャネル領域上で位置合わせされる。ゲート構造は、浮遊ゲート１３０及び制御ゲート１４０を含む。図示されていないが、浮遊ゲート１３０と基板の表面との間にトンネリング誘電体層が介在し、浮遊ゲート１３０と制御ゲート１４０との間に別の薄い酸化物層又は制御誘電体が介在している。示されている例では、ドレイン電圧Ｖｄはビット線ＢＬから供給され、制御ゲート電圧Ｖｃｇはワード線ＷＬから供給され、ソース電圧Ｖｓは接地などの基準電位に接続されている。
【０００９】
初期状態からプログラムされた状態にメモリセルトランジスタを変更（プログラム）するために、ファウラーノルドハイム（ＦＮ）トンネリングとして知られるプロセスが利用される。簡潔に言えば、制御ゲート１４０と基板１３６との間に比較的大きな正電位差が生じ、基板１３６の表面上のチャネル内の励起電子は、浮遊ゲート１３０に押し進められ、そこにトラップされる。これらの負電荷を持つ電子は、制御ゲート１４０と基板１３６上のチャネルとの間の障壁として機能し、メモリセルトランジスタの閾値電圧を増加させる。メモリセルトランジスタは、制御ゲート１４０と基板との間に大きな負の電位差を形成することによって、その初期状態に戻すことができ、これは、浮遊ゲート１３０と基板１３６との間の薄い酸化物層にわたって電子を引き戻し、それにより電子障壁を除去し、メモリセル１０２の閾値電圧を低下させる。
【００１０】
シングルレベルセル（ＳＬＣ）記憶デバイスでは、それぞれのメモリセルトランジスタが、２つの可能なメモリ状態（「０」又は「１」）のうちの１つに対応する電圧を格納する。例えば、メモリ状態「０」は、第１の電圧範囲に対応し得、メモリ状態「１」は、第２の電圧範囲に対応し得る。
【００１１】
マルチレベルセル（ＭＬＣ）記憶デバイスでは、それぞれのメモリセルトランジスタは、２つ以上のデータビットを格納し、メモリセルトランジスタは、１及び０の可能な組み合わせのうちの異なる１つをそれぞれ表す、一定範囲の可能な電圧のうちのいずれかを想定し得る。例えば、それぞれのメモリセルトランジスタが２つのデータビットを格納する場合、メモリセルトランジスタは、状態００、０１、１０及び１１にそれぞれ対応する４つの異なる電圧範囲のうちの１つの範囲に入る電圧を有し得る。加えて、トリプルレベルセル（ＴＬＣ）記憶デバイス内のメモリセルトランジスタは、セルごとに３つのビットを格納し、クアッドレベルセル（ＱＬＣ）記憶デバイス内のメモリセルトランジスタは、セルごとに４つのビットを格納する。
【００１２】
インクリメンタルステップパルスプログラミング（ＩＳＰＰ）は、ＭＬＣ及びＳＬＣトランジスタにおけるメモリ状態をプログラムするための１つの手法である。プログラムメモリアクセス動作は、メモリへの書き込みとして機能する。ＩＳＰＰでは、プログラム電圧は、大きさが増加する短い連続したプログラムパルスを使用して、選択されたメモリセルの制御ゲートに印加される。例えば、ページがプログラミング動作のために選択される場合、バイアス電圧は、ページのメモリセルが接続されるワード線に印加される。ＩＳＰＰプログラミング方法は、ステップ電圧基準でワード線バイアス電圧を徐々に増加させながら、選択されたページを数回プログラムする。
【００１３】
増加した「ステップ」電圧のそれぞれのパルス間で、プログラム検証動作が実行され、選択されたメモリセルの閾値電圧がプログラム検証電圧レベルを超えて上昇しているか否かをチェックする。ＩＳＰＰプロセスは、選択されたメモリセル（例えば、ページ１０４のセル）のそれぞれの閾値電圧がプログラム検証レベルを超えて上昇するまで継続する。
【００１４】
選択されたメモリセルの閾値電圧がプログラム検証電圧レベルを超えることを必要とすることにより、ＩＳＰＰプロセスは、選択されたメモリセルの可能なプログラム状態ごとに閾値電圧分布に関する下限を効果的に制御する。プログラム電圧を短いパルスで制御ゲートに印加することにより、ＩＳＰＰプロセスは、選択されたメモリセルの閾値電圧がプログラム検証電圧レベルを超えて有意に増加することを防止し、それにより、メモリセルのプログラムされた状態ごとに閾値電圧分布での妥当な上限を維持する。
【００１５】
プログラム動作は、特に読み出し動作と比較して非常に長くなり得る。したがって、記載された技術におけるメモリコントローラ１２６は、様々な種類の読み出し動作（又は他のより優先度の高いメモリアクセス動作）の利益となるように、プログラム動作（又は他のより優先度の低いメモリアクセス動作）のサスペンド及び再開をスケジュールする。このように、より優先度の高い動作は、長く、より優先度の低い動作によってブロックされる可能性が低い。
【００１６】
３Ｄ  ＮＡＮＤでは、ワード線内の全てのページが本質的に一緒にプログラムされている、ワンショットプログラミングアルゴリズムが採用されることが多い。したがって、３Ｄ  ＮＡＮＤのプログラム時間は、読み出し時間と比較して長くなり得、特に平面又は２Ｄ  ＮＡＮＤよりも長くなり得る。平面ＮＡＮＤでは、マルチステッププログラミングアルゴリズムが典型的に採用され、ページは互いに独立してプログラムされる。３Ｄ  ＮＡＮＤでは、ワード線ごとにより多くのページが存在するため、プログラム時間は、セルごとに記憶されたビット数と共に増加する。したがって、ＴＬＣ及びＱＬＣ  ＮＡＮＤのプログラム時間は、典型的には、ＭＬＣ  ２ビット／セルＮＡＮＤよりも大きい。サービス特性の良好な性能及び品質を得るために、プログラムのサスペンド動作は、以下に記載されるように、先行的な読み出し動作を可能にする。
【００１７】
図２は、ホスト２３０及びソリッドステート記憶デバイス２０２を含む例示的なシステム２００を示す。ソリッドステート記憶デバイス２０２は、少なくとも３次元でデータを格納するのに好適な１つ以上のメモリアレイ（例えば、データアレイとも称されるメモリアレイ２０４）を含む。このタイプのメモリブロックは、ワード線（例えば、ワード線２１０）を介して連結された隣接するＮＡＮＤストリングのセルを含む３Ｄ  ＮＡＮＤブロックを含み、また、ＮＡＮＤストリングをそれぞれのビット線（例えば、ビット線２１１）に選択的に連結する選択ゲートを含む。チャネルストリング（２１２）と称される３次元のメモリセルは、対応するビット線及び対応するチャネル選択線を活性化することによって選択される。３Ｄ  ＮＡＮＤフラッシュでは、ワード線方向の集合は、ワード線面と称されることもある。以下に記載されるスクランブル方法は、ビット線（ＢＬ）、ワード線（ＷＬ）及びチャネル選択線（ＣＳＬ）方向のそれぞれにおいて３次元データランダム化をもたらす。
【００１８】
ホスト２３０は、読み出し動作、書き込み動作及び消去動作などのメモリアクセス動作の命令をメモリコントローラ２０６に発行して、メモリアレイ２０４に対するデータの読み取り／書き込みを行い得る。加えて、メモリコントローラ２０６はまた、ホスト２３０からの明示的な命令なしに、メモリアクセス動作を実行し得る。例えば、メモリコントローラ２０６は、再試行読み出し動作、再利用読み出し動作、再マッピング読み出し動作、及び再マッピングプログラム動作を発行してもよい。
【００１９】
それぞれのタイプの動作、及びいくつかの実施態様では個々のメモリアクセス動作自体は、ホストによるか又はメモリコントローラ構成によるかにかかわらず、優先度レベルで指定されてもよい。例えば、メモリコントローラ構成は、特定のプログラム動作よりも高い優先度を有する特定の読み出し動作を指定してもよい。このようにして、メモリコントローラ２０６は、１つ以上の読み出し動作の利益となるように、より優先度の低いプログラム動作のサスペンド及び再開をスケジュールし得る。少なくとも１つの実施例では、任意のメモリアクセス間隔で到達する、高優先度として（例えばファームウェアによって）マーク付けされたメモリアレイに対する任意のホスト読み出しコマンドは、そのメモリアレイがより優先度の低い別のメモリアクセス動作によりビジーである場合には、現在のメモリアクセス間隔が完了した後に、そのメモリアレイに対するサスペンドコマンドをトリガすることになる。
【００２０】
一実施例では、メモリコントローラ２０６は、フロントエンドインターフェイス回路２２０、仮想化回路２２２、及びメディアエンジン回路２２４を含む回路（例えば、ＡＳＩＣとして）で実施される。フロントエンドインターフェイス回路２２０は、ホストメモリアクセス動作命令及びデータをホスト２３０と通信する。仮想化回路２２２は、ソリッドステート記憶デバイスの多数のメモリアレイ内の仮想メモリアドレスと物理メモリアドレスとを変換する。メディアエンジン回路２２４は、フラッシュメディアエンジン（ＦＭＥ）回路と、チャネルごとの個々のフラッシュ変換インターフェイス（ＦＴＩ）回路とを含み、これらの回路は、ソリッドステート記憶デバイス内の個々のメモリアレイへの様々なメモリアクセス動作の制御及びデータ通信を提供する。例示的なメモリアクセス動作としては、限定されるものではないが、読み出し、プログラム、及び消去動作が挙げられ得る。
【００２１】
様々な実施例では、メディアエンジン回路２２４は、本明細書に記載されたプロセスに従ってサスペンド及び再開アクションをスケジュールする。メディアエンジン回路２２４は、デバイス構成メモリ２２６（例えば、このようなメモリ２２６に格納されたデバイス構成ファイル）に格納されたデバイス構成パラメータにアクセスして、プロセスで使用されるタイミング及びカウントを調整する。いくつかの実施態様では、サスペンド／再開機能を制御するファームウェアは、そのようなデバイス構成パラメータにアクセスして、ファームウェアを再構築及び再インストールすることなく、サスペンド／再開機能の動作の変更を可能にし得る。例示的なパラメータとしては、限定されるものではないが、予め指定された時間の間に又は予め指定された数のメモリアクセス動作の間に許容される最大サスペンド数、時限サスペンド延長期間のサイズ、メモリアクセス動作間隔のサイズ、及び異なるメモリアクセス動作又はメモリアクセス動作のタイプの相対的な優先度が挙げられ得る。
【００２２】
いくつかの実施態様では、サスペンド及び再開がネストされてもよいことを理解されたい。例えば、第１のメモリアクセス動作は、第２の（より優先度の高い）メモリアクセス動作の実行を可能にするためにサスペンドされる。その後、第１のメモリアクセス動作がサスペンドされている間に、第２の（より優先度の高い）メモリアクセス動作が、第３の（更に優先度の高い）メモリアクセス動作の実行を可能にするためにサスペンドされる。ネストされたサスペンドレベルの数は、任意の特定の数に限定される必要はなく、それぞれのレベルのサスペンドは、サスペンドされた動作を再開する前に、より優先度の高い複数のメモリアクセス動作が完了することを可能にし得る。サスペンドされた動作を再開することは、サスペンドすることと比較して逆の順序で実行される。サスペンド／再開レベルの数、サスペンド時間の量、サスペンドの数などに対する他の制限も採用されてよい。一例では、第１のメモリアクセス動作は消去動作であり、第２のメモリアクセス動作はプログラム動作（消去動作の優先度よりも高い優先度を有する）であり、第３のメモリアクセス動作は読み出し動作（消去動作及び読み出し動作の優先度よりも高い優先度を有する）である。
【００２３】
図３は、メモリアクセス動作のサスペンド及び再開をスケジュール及び実施するための例示的な動作３００を示す。開始動作３０２は、現在のメモリアレイ内のＬＵＮ（ｉ）（論理ユニット番号）へのメモリアクセス動作を開始する。メモリアクセス動作は、優先度に起因し、それぞれの間隔の完了時にメモリアクセス動作の安全なサスペンドを可能にするように設定された間隔のシーケンスに分割される。いくつかの実施例では、間隔は同サイズであるが、他の実施例は、異なるサイズの間隔を採用してもよい。また、いくつかの実施例では、間隔は、間隔の開始及び終了を設定するタイマに基づいて時限設定される。遅延動作３０４は、開始動作３０２の後、現在実行中のメモリアクセス動作間隔が完了するまで待機する。遅延動作３０４は、メモリアクセス動作がその実行中の安全でない点でサスペンドされないことを確実にする。同サイズの間隔はまた、サービス性能の品質に有益である読み出し時間待ち時間の予測可能性を提供する。
【００２４】
決定動作３０６は、少なくとも１つのより優先度の高いメモリアクセス動作が、現在のメモリアレイ内で実行可能であるか否かを判定する。一実施例では、決定動作３０６は、現在のメモリアレイに対する様々な読み出し、プログラム、及び消去要求が追加される待ち行列を評価してもよい。一例では、開始動作３０２は、第１の優先度を有するプログラム動作を実行してもよく、決定動作３０６は、１つ以上の読み出し動作が待ち行列に受信されており、第１の優先度よりも高い優先度を有することを判定し得る。現在のメモリアレイ内で実行可能な、より優先度の高いメモリアクセス動作が存在しない場合、処理は、遅延動作３０４に再びループバックして、メモリアクセス動作の実行を継続する。より優先度の低いメモリアクセス動作を待ち行列内でより後方に維持しながら、より優先度の高いメモリアクセス動作を待ち行列の前方にプッシュするように、様々なメモリアクセス動作を１つ以上の待ち行列内で再順序付けし得ることを理解されたい。このようにして、より優先度のメモリアクセス動作は、より低い優先度を有するメモリアクセス動作を先に利用可能にし得る。
【００２５】
１つ以上のより優先度の高いメモリアクセス動作が、現在のメモリアレイ内で実行可能である場合、別の決定動作３０８は、同じメモリアクセス動作に対するサスペンドが多すぎる、同じメモリアレイ内である期間のサスペンドが多すぎる、など、このメモリアレイ内で発行されたサスペンドが多すぎるか否かを判定する。そうである場合、処理は、遅延動作３０４に再びループバックして、メモリアクセス動作の実行を継続する。そうでなければ、サスペンド動作３１０が、ＬＵＮ（ｉ）への現在実行中のメモリアクセス動作をサスペンドし、実行動作３１２が、より優先度の高い１つ以上の利用可能なメモリアクセス動作を実行する。決定動作３１４は、１つ以上のより優先度の高いメモリアクセス動作が、メモリアレイ内で実行可能であるか否かを判定する。そうである場合には、処理は、実行動作３１２にループバックする。
【００２６】
メモリアレイ内で実行可能である、より優先度の高いメモリアクセス動作がなくなると、別の遅延動作３１６が、時限サスペンド延長期間の満了を待機する。別の決定動作３１８は、１つ以上のより優先度の高いメモリアクセス動作がメモリアレイ内で実行可能であるか否かを判定する。そのような動作は、時限サスペンド延長期間中に使用可能になるため、「新たに利用可能」と見なされる。１つ以上の新たに利用可能なメモリアクセス動作が、現在のメモリアレイ内で実行可能である場合、実行動作３２０は、それらの新たに利用可能なメモリアクセス動作を実行し、処理は遅延動作３１６に戻る。そうでなければ、再開動作３２２は、より優先度の低いメモリ動作の間隔のシーケンスにおける次の間隔で、より優先度の低いメモリ動作の実行を再開する。
【００２７】
動作優先度の適用は、設計目的に基づいて変更することができる。例えば、いくつかの実施例では、任意の読み出し動作は、プログラム動作又は消去動作よりも高い優先度を有することになる。他の実施例では、読み出しの再試行動作は、サスペンドされたメモリアクセス動作の再開をブロックしないが、それ以外の場合、それらは任意の他の読み出し動作のように処理される。多くの他の変更例が想到される。メモリアクセス動作の相対的な優先度は、ホスト及び記憶デバイスからの装置構成パラメータ及び命令に応じて変更してもよい。
【００２８】
以下に、異なる優先度を有するメモリアクセス動作がどのように処理され得るかについてのいくつかの具体的な例を提供するが、他の変更例を採用してもよい。
【００２９】
●待ち行列内に存在する場合にプログラム動作をサスペンドする、メモリアクセス動作のサスペンド
○ホスト読み出し動作
○マップ読み出し動作（マップエントリがキャッシュされていない場合）。「マップ」は、論理アドレスと物理アドレスとの間のマッピングを格納するメタデータを指す。
【００３０】
○電力イベント又は停電からのドライブの回復を可能にする、チェックポイント読み出し動作（例えば、メタデータの読み出し動作）
●サスペンド中に待ち行列に到着したか又は待ち行列内にある場合、サスペンド中に実行する（ただし、サスペンドをトリガしない）メモリアクセス動作の非サスペンド
○再利用読み出し動作
○全てのエラー回復及びフラッシュポリシー読み出し動作（バックグラウンドスクラブ及びコードレート試験動作中の読み出し動作など）
○第１の読み出し効果に対処するためなど、読み出し基準電圧、エラー訂正コード、及びコードレート設定といったＳＳＤのパラメータを較正及び調整するためのバックグラウンド読み出し動作
●サスペンドをトリガすることもサスペンド中に実行することもできず、プログラム動作がサスペンドされている場合に再開させる、読み出し動作の再開トリガ（低優先度）
○ルートファイルシステム読み出し動作
図４は、メモリアクセス動作のサスペンド及び再開を管理するための例示的な動作４００を示す。実行動作４０２は、メモリアレイ内で第１のメモリアクセス動作を実行する。第１のメモリアクセス動作は、第１の優先度を有する。検出動作４０４は、メモリアレイ内で実行可能であり、第１の優先度よりも高い優先度を有する、少なくとも１つのメモリアクセス動作のサスペンドを検出する。検出動作４０４はまた、メモリアクセス動作のサスペンドとメモリアクセス動作の非サスペンド（及びいくつかの実施例ではメモリアクセス動作の再開トリガ）とを区別する。サスペンド動作４０６は、少なくとも１つのより優先度の高いメモリアクセス動作のサスペンドがメモリアレイ内で実行可能であると判定された場合、現在実行中のメモリアクセス動作の実行をサスペンドする。１つ以上のメモリアクセス動作の非サスペンドが、利用可能であり、第１の優先度よりも高い優先度を有するものとして検出されているが、利用可能であり、第１の優先度よりも高い優先度を有するものとして検出されたメモリアクセス動作のサスペンドがない場合、サスペンド動作４０６は実行しない。一実施例では、サスペンド動作４０６は、サスペンドを開始する前に、メモリアクセス動作の現在実行中の間隔が完了するまで待機する。
【００３１】
実行動作４０８は、サスペンド動作４０６が完了した後に利用可能になる新しくより優先度の高いメモリアクセス動作を含む、利用可能なより優先度の高いメモリアクセス動作を実行する。実行動作４０８は、メモリアレイ内で実行可能である、より優先度の高い追加のメモリアクセス動作がないと完了する。別の実行動作４１０は、時限サスペンド延長期間の満了後、時限サスペンド延長期間中に利用可能になった、新たに利用可能な任意のより優先度の高いメモリアクセス動作を実行する。実行動作４１０はまた、時限サスペンド延長期間の終了時に利用可能である、より優先度の高いメモリアクセス動作がなくなるまで、複数の時限サスペンド延長期間を通して繰り返され得る。再開動作４１２は、より優先度の低いメモリアクセス動作の実行を再開する。いくつかの実施例では、実行動作４１０は省略されてもよい。
【００３２】
いくつかの実施例では、実行動作４０８又は実行動作４１０のいずれかの完了前に、サスペンドされたメモリアクセス動作を再開するための１つ以上の再開トリガ条件が設定されてもよい。例えば、再開トリガ条件は、タイマの満了に設定されてもよく、それにより、メモリコントローラがメモリアレイ内で実行可能である、より優先度の高い追加のメモリアクセス動作がないことを検出したときではなく、メモリコントローラがタイマの満了を検出したときに、実行動作４０８は完了する。別の例では、再開トリガ条件は、より優先度の高いメモリアクセス動作の最大カウントに設定されてもよく、それにより、メモリコントローラが、メモリアレイ内で実行可能である、より優先度の高い追加のメモリアクセス動作がないことを検出したときではなく、メモリコントローラが、サスペンド中に実行するより優先度の高いメモリアクセス動作の数がより優先度の高いメモリアクセス動作の最大カウントに一致するか又はそれを超えたことを検出したときに、実行動作４０８は完了する。更に別の例では、再開トリガ条件は、（例えば、ある期間にわたる）実行されたより優先度の高いメモリアクセス動作と（例えば、その期間にわたる）より優先度の低いメモリアクセス動作との所望の比率に設定されてもよく、それにより、メモリコントローラが、メモリアレイ内で実行可能である、より優先度の高い追加のメモリアクセス動作がないことを検出したときではなく、メモリコントローラが、実行されたより優先度の高いメモリアクセス動作と実行されたより優先度の低いメモリアクセス動作との比率が、既定の最大閾値に一致するか又はそれを超えたことを検出したときに、実行動作４０８は完了する。
【００３３】
実行動作４０８が完了する前に、メモリアクセス動作の再開トリガがメモリアレイ内で実行可能として検出された場合、その優先度が、サスペンド中に実行するより優先度の高いメモリアクセス動作よりも低い場合でも、実行中のメモリアクセス動作は終了し、第１のメモリアクセス動作の実行が再開動作４１２において再開される。
【００３４】
そのような再開トリガ条件はまた、実行動作４１０を先行させるか又は早期に終了させ、再開動作４１２をトリガするために適用されてもよい。他の先行的な再開条件が想到される。
【００３５】
図５は、記載された技術を実施するのに有用であり得る例示的な処理システム５００を示す。処理システム５００は、コンピュータプロセスを実行するための有形コンピュータ可読（又はプロセッサ可読）記憶媒体内に具現化されたコンピュータプログラム製品を実行することができる。データ及びプログラムファイルは、処理システム５００に入力されてもよく、処理システム５００は、１つ以上のプロセッサ（例えば、ＣＰＵ、ＧＰＵ、ＡＳＩＣ）を使用してファイルを読み出し、その中のプログラムを実行する。処理システム５００の要素のうちのいくつかが図５に示されており、図中、入力／出力（Ｉ／Ｏ）セクション５０４、１つ以上のプロセッサ５０６、及びメモリ５０８を有するプロセッサ５０２が示されている。１つ以上のプロセッサ５０６は、１つ以上の処理デバイス又はコアを含んでもよい。プロセッサは、シングルコア又はマルチコアプロセッサであってもよい。処理システム５００は、従来のコンピュータ、分散コンピュータ、コントローラボード、ＡＳＩＣ、又は任意の他のタイプの処理システムであってもよい。記載された技術は、メモリ５０８にロードされたソフトウェア、記憶ユニット５１２に任意選択的に実施され、かつ／又はキャリア信号（例えば、イーサネット（登録商標）、３Ｇ無線、５Ｇ無線、ＬＴＥ（ロングタームエボリューション）など）上で有線又は無線ネットワークリンク５１４を介して通信され、それによって、図５中の処理システム５００は、記載された動作を実施するための特定用途向けマシンに変換される。処理システム５００は、本明細書に開示されているディスクドライブスループットバランス調整システムを支持するように構成されている、特定用途向け処理システムであってもよい。
【００３６】
Ｉ／Ｏセクション５０４は、１つ以上のユーザーインターフェイスデバイス（例えば、キーボード、タッチスクリーン表示ユニット５１８など）又は記憶ユニット５１２に接続されてもよい。記載された技術に従ってシステム及び方法を達成する機構を含むコンピュータプログラム製品は、メモリ５０８内又はそのようなシステム５００の記憶ユニット５１２上に存在してもよい。
【００３７】
通信インターフェイス５２４は、ネットワークリンク５１４を介して処理システム５００を企業ネットワークに接続することができ、コンピュータシステムは、ネットワークリンク５１４を通じて、搬送波内に具現化された命令及びデータを受信し得る。ローカルエリアネットワーク（ＬＡＮ）環境で使用される場合、処理システム５００は、通信デバイスの１つのタイプである通信インターフェイス５２４を介してローカルネットワークに（有線接続又は無線で）接続される。広域ネットワーク（ＷＡＮ）環境で使用される場合、処理システム５００としては、典型的には、モデム、ネットワークアダプタ、又は広域ネットワークを介した通信を確立するための任意の他のタイプの通信デバイスが挙げられる。ネットワーク化された環境では、処理システム５００又はその一部に対して示されるプログラムモジュールは、リモートメモリ記憶デバイス内に記憶されてもよい。図示されているネットワーク接続は、コンピュータ間の通信リンクを確立するための通信デバイスの例であり、他の手段を使用してもよいことが理解される。
【００３８】
例示的実施例では、メモリコントローラ及び他のモジュールを制御するファームウェアは、メモリ５０８及び／又は記憶ユニット５１２に記憶され、プロセッサ５０２によって実行されるプロセッサ実行可能命令によって具現化されてもよい。更に、記憶コントローラは、ＲＡＩＤ０の実施例を支持するように構成されてもよい。ＲＡＩＤ記憶域は、汎用コンピュータ及び専用ソフトウェア（サービスソフトウェアを実行するサーバなど）、特定用途向けコンピューティングシステム及び専用ソフトウェア（サービスソフトウェアを実行するモバイルデバイス又はネットワーク機器など）、又は他のコンピューティング構成を使用して実施されてもよい。加えて、間隔サイズ、優先度、読み出し／プログラムデータ、並びに他のデータ及びパラメータは、メモリ５０８及び／又は記憶ユニット５１２に格納され、プロセッサ５０２によって実行されてもよい。
【００３９】
処理システム５００は、ユーザーデバイス、記憶デバイス、ＩｏＴデバイス、デスクトップ、ラップトップ、コンピューティングデバイスなどのデバイス内に実装されてもよい。処理システム５００は、ユーザーデバイス内又はユーザーデバイスの外部で実行する記憶デバイスであってもよい。
【００４０】
処理システム５００は、様々な有形プロセッサ可読記憶媒体及び無形プロセッサ可読通信信号を含んでもよい。有形プロセッサ可読記憶域は、処理システム５００によってアクセスされ得、かつ揮発性及び不揮発性記憶媒体、取り外し可能及び取り外し不可記憶媒体の両方を含む、任意の利用可能媒体によって具現化され得る。有形プロセッサ可読記憶媒体としては、無形通信信号を除き、プロセッサ可読命令、データ構造、プログラムモジュール又は他のデータなどの情報を格納するための任意の方法又は技術で実施される、揮発性及び不揮発性、取り外し可能及び取り外し不可記憶媒体が挙げられる。有形プロセッサ可読記憶媒体としては、限定されるものではないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ若しくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多目的ディスク（ＤＶＤ）若しくは他の光ディスク記憶域、磁気カセット、磁気テープ、磁気ディスク記憶域若しくは他の磁気記憶デバイス、又は所望の情報を格納するために使用され得、かつ処理システム５００によってアクセスされ得る任意の他の有形媒体が挙げられる。有形プロセッサ可読記憶媒体に対して、無形プロセッサ可読通信信号は、プロセッサ可読命令、データ構造、プログラムモジュール、又は搬送波若しくは他の信号伝達機構などの変調データ信号内に存在する他のデータを具現化し得る。用語「変調データ信号」は、信号内の情報を符号化するように設定又は変更されたその特性のうちの１つ以上を有する信号を意味する。一例として、限定されるものではないが、無形通信信号としては、有線ネットワーク又は直接有線接続などの有線媒体、並びに音響、ＲＦ、赤外線及び他の無線媒体などの無線媒体が挙げられる。
【００４１】
いくつかの実施例は、製品を含んでもよい。製品は、論理を格納するための有形記憶媒体を含んでもよい。記憶媒体の例としては、揮発性又は不揮発性メモリ、取り外し可能又は取り外し不可メモリ、消去可能又は消去不可メモリ、書込み可能又は書き換え可能メモリなどを含む、電子データを格納することができる１つ以上のタイプのコンピュータ可読記憶媒体が挙げられ得る。論理の例としては、ソフトウェア構成要素、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、動作セグメント、メソッド、手順、ソフトウェアインターフェイス、アプリケーションプログラムインターフェイス（ＡＰＩ）、命令セット、計算コード、コンピュータコード、コードセグメント、コンピュータコードセグメント、単語、値、記号、又はこれらの任意の組み合わせなど、様々なソフトウェア要素が挙げられ得る。一実施例では、例えば、製品は、コンピュータによって実行されたときに、コンピュータに記載された実施形態による方法及び／又は動作を実行させる、実行可能コンピュータプログラム命令を格納し得る。実行可能コンピュータプログラム命令としては、ソースコード、コンパイル済みコード、解釈済みコード、実行可能コード、静的コード、動的コードなどの任意の好適なタイプのコードが挙げられ得る。実行可能コンピュータプログラム命令は、特定の動作セグメントを実行するようにコンピュータに命令するための、既定のコンピュータ言語、方法又は構文に従って実施されてもよい。命令は、任意の好適な高レベル、低レベル、オブジェクト指向、視覚、コンパイル済み及び／又は解釈済みのプログラミング言語を使用して実施されてもよい。
【００４２】
データ記憶域及び／又はメモリは、ハードディスク媒体、複数の記憶デバイスを含む記憶域アレイ、光学媒体、ソリッドステートドライブ技術、ＲＯＭ、ＲＡＭ、及び他の技術などの、様々なタイプのプロセッサ可読記憶媒体によって具現化されてもよい。動作は、マイクロプロセッサ、マイクロプロセッサコア、マイクロコントローラ、特定用途向け回路、又は他の処理技術によって実行又は補助されるか否かにかかわらず、ファームウェア、ソフトウェア、配線回路、ゲートアレイ技術及び他の技術に実施されたプロセッサ実行可能命令であってもよい。書き込みコントローラ、記憶コントローラ、データ書き込み回路、データ読み出し及び復元回路、ソートモジュール、及びデータ記憶システムの他の機能モジュールが、システム実施プロセスを実施するプロセッサ可読命令を処理するためのプロセッサを含むか又はこれと共同して動作し得ることが理解されるべきである。
【００４３】
本明細書に記載された本開示の技術の実施形態は、１つ以上のコンピュータシステム内の論理的工程として実施される。本開示の技術の論理的動作は、（１）１つ以上のコンピュータシステム内で実行する一連のプロセッサ実施工程として、及び（２）１つ以上のコンピュータシステム内の相互接続マシン又は回路モジュールとして実施される。実施例は、本開示の技術を実施するコンピュータシステムの性能要求に基づいて選択される。したがって、本明細書に記載されている、本開示の技術の実施形態を形成する論理的動作は、動作、工程、物体、又はモジュールとして、様々に言及される。更に、論理的動作が、明白に別途特許請求されるか又は特定順序が請求項の記載によって本質的に必要とされない限り、所望により追加及び省略しながら任意の順序で実施され得ることが理解されるべきである。
【００４４】
上記の詳述、例、及びデータは、本開示の技術の例示的実施形態の構造及び使用の完全な説明を提供する。本開示の技術の多くの実施形態が本開示の技術の概念及び範囲から逸脱することなく成され得るので、本開示の技術は、以下に添付の特許請求の範囲に帰する。更に、異なる実施形態の構造的特徴は、記載された請求項から逸脱することなく更に別の実施形態に組み合わせられ得る。
【図１】
2019200833.tif 000003
【図２】
2019200833.tif 000004
【図３】
2019200833.tif 000005
【図４】
2019200833.tif 000006
【図５】
2019200833.tif 000007
【外国語明細書】
2019200833000001.pdf