IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エスケイ ハイニックス ナンド プロダクト ソリューションズ コーポレーションの特許一覧

特表2024-516072ランダム書き込みSSDワークロードに対する動的なプログラム一時中断無効化
<>
  • 特表-ランダム書き込みSSDワークロードに対する動的なプログラム一時中断無効化 図1
  • 特表-ランダム書き込みSSDワークロードに対する動的なプログラム一時中断無効化 図2
  • 特表-ランダム書き込みSSDワークロードに対する動的なプログラム一時中断無効化 図3A
  • 特表-ランダム書き込みSSDワークロードに対する動的なプログラム一時中断無効化 図3B
  • 特表-ランダム書き込みSSDワークロードに対する動的なプログラム一時中断無効化 図4
  • 特表-ランダム書き込みSSDワークロードに対する動的なプログラム一時中断無効化 図5
  • 特表-ランダム書き込みSSDワークロードに対する動的なプログラム一時中断無効化 図6
  • 特表-ランダム書き込みSSDワークロードに対する動的なプログラム一時中断無効化 図7
  • 特表-ランダム書き込みSSDワークロードに対する動的なプログラム一時中断無効化 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-12
(54)【発明の名称】ランダム書き込みSSDワークロードに対する動的なプログラム一時中断無効化
(51)【国際特許分類】
   G06F 12/00 20060101AFI20240405BHJP
【FI】
G06F12/00 560A
G06F12/00 597U
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023557058
(86)(22)【出願日】2022-04-26
(85)【翻訳文提出日】2023-10-06
(86)【国際出願番号】 US2022026393
(87)【国際公開番号】W WO2022232177
(87)【国際公開日】2022-11-03
(31)【優先権主張番号】17/241,976
(32)【優先日】2021-04-27
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】523351302
【氏名又は名称】エスケイ ハイニックス ナンド プロダクト ソリューションズ コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】アンゴス、ヴィヴェック
(72)【発明者】
【氏名】カールトン、デイヴィッド
(72)【発明者】
【氏名】ガンガドハール、サルベシュ
(72)【発明者】
【氏名】ゴールズ、マーク
(72)【発明者】
【氏名】ペルスター、デイヴィッド、 ジェイ.
(72)【発明者】
【氏名】ヴェムラ、ニーレッシュ
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160CD01
(57)【要約】
電子装置の一実施形態が、1つまたは複数の基板、および1つまたは複数の基板に連結されたコントローラを含んでよく、コントローラには、複数のNANDデバイスを含んだNANDベースの記憶媒体へのアクセスを制御し、複数のNANDデバイスのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであるかどうかを判定し、そうであると判定した場合、特定のNANDデバイスに限りプログラム一時中断操作を無効にする回路が含まれる。他の実施形態が開示されており、特許請求されている。
【特許請求の範囲】
【請求項1】
1つまたは複数の基板;および
前記1つまたは複数の基板に連結されたコントローラ、前記コントローラには、
複数のNANDデバイスを含んだNANDベースの記憶媒体へのアクセスを制御し、
前記複数のNANDデバイスのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであるかどうかを判定し、そうであると判定した場合、
前記特定のNANDデバイスに限りプログラム一時中断操作を無効にする
回路が含まれる
を備える、電子装置。
【請求項2】
前記回路がさらに、
前記特定のNANDデバイスについてホスト読み取りが保留中であるかどうかを判定し;そうであると判定した場合、
前記特定のNANDデバイスに限り前記プログラム一時中断操作を有効にする、請求項1に記載の電子装置。
【請求項3】
前記回路がさらに、
前記複数のNANDデバイスのそれぞれのコマンドキューを維持し;
前記コマンドキューのそれぞれと関連付けられたカウンタ値を維持して、前記コマンドキューのそれぞれについてそれぞれのホスト読み取りをカウントする、請求項2に記載の電子装置。
【請求項4】
前記回路がさらに、
ホスト読み取りからのコマンドが前記特定のNANDデバイスの前記コマンドキューに配置されると、前記特定のNANDデバイスの前記コマンドキューと関連付けられた前記カウンタ値をインクリメントし;
前記ホスト読み取りからの前記コマンドが前記特定のNANDデバイスの前記コマンドキューから消去されると、前記特定のNANDデバイスの前記コマンドキューと関連付けられた前記カウンタ値をデクリメントする、請求項3に記載の電子装置。
【請求項5】
前記回路がさらに、
前記特定のNANDデバイスの前記コマンドキューと関連付けられた前記カウンタ値がゼロである場合、前記複数のNANDデバイスのうち前記特定のNANDデバイスに対する前記現行ワークロードが前記ランダム書き込みワークロードであると判定する、請求項4に記載の電子装置。
【請求項6】
前記回路がさらに、
前記特定のNANDデバイスの前記コマンドキューと関連付けられた前記カウンタ値がゼロ以外である場合、前記特定のNANDデバイスについて前記ホスト読み取りが保留中であると判定する、請求項4に記載の電子装置。
【請求項7】
前記コントローラおよび前記NANDベースの記憶媒体がソリッドステートドライブに組み込まれている、請求項1から6のいずれか一項に記載の電子装置。
【請求項8】
複数のNANDデバイスを含んだNANDベースの記憶媒体;および
前記NANDベースの記憶媒体に通信可能に連結されたコントローラ、前記コントローラには、
前記複数のNANDデバイスのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであるかどうかを判定し、そうであると判定した場合、
前記特定のNANDデバイスに限りプログラム一時中断操作を無効にする、
回路が含まれる
を備える、電子ストレージシステム。
【請求項9】
前記回路がさらに、
前記特定のNANDデバイスについてホスト読み取りが保留中であるかどうかを判定し;そうであると判定した場合、
前記特定のNANDデバイスに限り前記プログラム一時中断操作を有効にする、請求項8に記載の電子ストレージシステム。
【請求項10】
前記回路がさらに、
前記複数のNANDデバイスのそれぞれのコマンドキューを維持し;
前記コマンドキューのそれぞれと関連付けられたカウンタ値を維持して、前記コマンドキューのそれぞれについてそれぞれのホスト読み取りをカウントする、請求項9に記載の電子ストレージシステム。
【請求項11】
前記回路がさらに、
ホスト読み取りからのコマンドが前記特定のNANDデバイスの前記コマンドキューに配置されると、前記特定のNANDデバイスの前記コマンドキューと関連付けられた前記カウンタ値をインクリメントし;
前記ホスト読み取りからの前記コマンドが前記特定のNANDデバイスの前記コマンドキューから消去されると、前記特定のNANDデバイスの前記コマンドキューと関連付けられた前記カウンタ値をデクリメントする、請求項10に記載の電子ストレージシステム。
【請求項12】
前記回路がさらに、
前記特定のNANDデバイスの前記コマンドキューと関連付けられた前記カウンタ値がゼロである場合、前記複数のNANDデバイスのうち前記特定のNANDデバイスに対する前記現行ワークロードが前記ランダム書き込みワークロードであると判定する、請求項11に記載の電子ストレージシステム。
【請求項13】
前記回路がさらに、
前記特定のNANDデバイスの前記コマンドキューと関連付けられた前記カウンタ値がゼロ以外である場合、前記特定のNANDデバイスについて前記ホスト読み取りが保留中であると判定する、請求項11に記載の電子ストレージシステム。
【請求項14】
前記コントローラおよび前記NANDベースの記憶媒体がソリッドステートドライブに組み込まれている、請求項8から13のいずれか一項に記載の電子ストレージシステム。
【請求項15】
ストレージを制御する方法であって、
複数のNANDデバイスを含んだNANDベースの記憶媒体へのアクセスを制御する段階;
前記複数のNANDデバイスのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであるかどうかを判定する段階;およびそうであると判定した場合、
前記特定のNANDデバイスに限りプログラム一時中断操作を無効にする段階
を備える、方法。
【請求項16】
前記特定のNANDデバイスについてホスト読み取りが保留中であるかどうかを判定する段階;およびそうであると判定した場合、
前記特定のNANDデバイスに限り前記プログラム一時中断操作を有効にする段階
をさらに備える、請求項15に記載の方法。
【請求項17】
前記複数のNANDデバイスのそれぞれのコマンドキューを維持する段階;および
前記コマンドキューのそれぞれと関連付けられたカウンタ値を維持して、前記コマンドキューのそれぞれについてそれぞれのホスト読み取りをカウントする段階
をさらに備える、請求項16に記載の方法。
【請求項18】
ホスト読み取りからのコマンドが前記特定のNANDデバイスの前記コマンドキューに配置されると、前記特定のNANDデバイスの前記コマンドキューと関連付けられた前記カウンタ値をインクリメントする段階;および
前記ホスト読み取りからの前記コマンドが前記特定のNANDデバイスの前記コマンドキューから消去されると、前記特定のNANDデバイスの前記コマンドキューと関連付けられた前記カウンタ値をデクリメントする段階
をさらに備える、請求項17に記載の方法。
【請求項19】
前記特定のNANDデバイスの前記コマンドキューと関連付けられた前記カウンタ値がゼロである場合、前記複数のNANDデバイスのうち前記特定のNANDデバイスに対する前記現行ワークロードが前記ランダム書き込みワークロードであると判定する段階をさらに備える、請求項18に記載の方法。
【請求項20】
前記特定のNANDデバイスの前記コマンドキューと関連付けられた前記カウンタ値がゼロ以外である場合、前記特定のNANDデバイスについて前記ホスト読み取りが保留中であると判定する段階をさらに備える、請求項18に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本願は、2021年4月27日に出願した米国特許出願第17/241,976号の利益を主張し、当該米国特許出願はその全体が参照により本明細書に組み込まれる。
【背景技術】
【0002】
特定のNAND媒体デバイスでは、1回の読み取りまたは1回のプログラム操作コマンド(すなわち、書き込みコマンド)のいずれかで、NANDデバイスまたはNANDデバイス内のNANDアレイに一度にアクセスすることが可能になる場合がある。ここで、NANDアレイは一連のNANDストリングを含んでよく、NANDストリングは複数のNANDセルを含んでよい。待機中の読み取り操作に対応するためにプログラム操作が一時中断される場合があり、その後に読み取り操作が完了すると、プログラム操作を再開することができる。これは、プログラム操作の一時中断-再開と呼ばれている。プログラム操作のレイテンシは読み取り操作のレイテンシより1桁大きい場合があり、読み取り操作のレイテンシを改善するために、NANDソリッドステートドライブ(SSD)では、NANDデバイスのプログラム操作一時中断-再開(PSR)機能を活用して、NANDアレイに対する進行中のプログラム操作を一時中断(休止)し、キューに入れられた1つまたは複数の読み取り操作を進めて、これが完了した後に、一時中断したプログラム操作を再開できるようにする。NANDデバイスまたはNANDデバイス内のNANDアレイに対するプログラム操作では、NAND媒体に書き込み操作を行う。マルチレベルセル(MLC)NANDなどのNANDにプログラムする(すなわち、書き込む)ために、プログラム操作が行われてよい。プログラム操作は、他の種類のNAND(例えば、クアッドレベルセル(QLC)、トライレベルセル(TLC)、シングルレベルセル(SLC)など)および他の種類の不揮発性メモリにも行われてよい。
【図面の簡単な説明】
【0003】
本明細書において説明する題材は、例として図示されており、添付図面における限定として図示されているわけではない。説明を簡潔かつ明確なものにするために、図面に図示される要素は、必ずしも縮尺通りに描かれていない。例えば、いくつかの要素の寸法は、明確にするために他の要素に対して誇張されることがある。さらに、適切であると考えられる場合、対応する要素または類似する要素を示すために、参照符号が図面の間で繰り返し用いられている。図面は、以下の通りである。
【0004】
図1】一実施形態による電子ストレージシステムの一例に関するブロック図である。
【0005】
図2】一実施形態による電子装置の一例に関するブロック図である。
【0006】
図3A】一実施形態によるストレージ制御方法の一例に関するフローチャートである。
図3B】一実施形態によるストレージ制御方法の一例に関するフローチャートである。
【0007】
図4】一実施形態によるストレージ制御方法の別の例に関するフローチャートである。
【0008】
図5】一実施形態によるストレージ制御方法の別の例に関するフローチャートである。
【0009】
図6】一実施形態による様々なNAND操作のタイミングをベースラインと比較した説明図である。
【0010】
図7】一実施形態によるコンピューティングシステムの別の例に関するブロック図である。
【0011】
図8】一実施形態によるソリッドステートドライブ(SSD)デバイスの一例に関するブロック図である。
【発明を実施するための形態】
【0012】
添付図面を参照して、1つまたは複数の実施形態または実装例をここで説明する。特定の構成および配置について説明するが、これは例示のみを目的として行われることを理解されたい。当業者であれば、本明細書の趣旨および範囲から逸脱することなく他の構成および配置が使用され得ることを認識するであろう。当業者には、本明細書で説明する手法および/または配置が、本明細書で説明するもの以外の様々な他のシステムおよびアプリケーションにおいても使用され得ることが明らかとなるであろう。
【0013】
以下の説明では、例えばシステムオンチップ(SoC)アーキテクチャといったアーキテクチャにおいて明示され得る様々な実装例を記載しているが、本明細書で説明する手法および/または配置の実現は、特定のアーキテクチャおよび/またはコンピューティングシステムに限定されることはなく、同様の目的の任意のアーキテクチャおよび/またはコンピューティングシステムにより実現されてよい。例えば、例として複数の集積回路(IC)チップおよび/またはパッケージを使用した様々なアーキテクチャ、および/またはセットトップボックス、スマートフォンなどといった様々なコンピューティングデバイスおよび/または民生用電子(CE)デバイスによって、本明細書で説明する手法および/または配置が実現され得る。さらに、以下の説明には、例えば、ロジックの実装例、システムコンポーネントの種類および相互関係、ロジックの分割/統合の選択など、多数の具体的な詳細が記載されているかもしれないが、そのような具体的な詳細がなくても、特許請求される主題を実施することができる。他の例において、例えば制御構造および完全なソフトウェア命令シーケンスといったいくつかの題材は、本明細書で開示される題材を不明瞭にしないために、詳細に示されていないことがある。
【0014】
本明細書で開示される題材は、ハードウェア、ファームウェア、ソフトウェアまたはそれらの任意の組み合わせで実現されてよい。本明細書で開示される題材は、1つまたは複数のプロセッサにより読み取られて実行され得る、マシン可読媒体に格納された命令としても実現され得る。マシン可読媒体は、マシン(例えば、コンピューティングデバイス)により可読な形式で情報を格納または送信するための任意の媒体および/またはメカニズムを含み得る。例えば、マシン可読媒体としては、リードオンリメモリ(ROM);ランダムアクセスメモリ(RAM);磁気ディスク記憶媒体;光学記憶媒体;フラッシュメモリデバイス;電気的形式、光学的形式、音響的形式、または他の形式の伝搬信号(例えば、搬送波、赤外線信号、デジタル信号など)、および他のものが含まれてよい。
【0015】
本明細書における「1つの実装例」、「一実装例」、「例示的な一実装例」などへの言及は、説明される実装例が特定の特徴、構造、または特性を含み得ることを示すが、あらゆる実施形態がそのような特定の特徴、構造、または特性を必ずしも含まなくてもよい。さらに、そのような文言は、必ずしも同じ実装例を参照しているわけではない。さらに、特定の特徴、構造、または特性が一実施形態に関連して説明される場合、本明細書において明示的に説明されているか否かにかかわらず、他の実装例に関連してそのような特徴、構造、または特性がもたらされることは当業者の知識の範囲内であることが述べられている。
【0016】
本明細書で説明される様々な実施形態は、メモリコンポーネントおよび/またはメモリコンポーネントに対するインタフェースを含んでよい。そのようなメモリコンポーネントは、揮発性および/または不揮発性(NV)のメモリを含んでよい。揮発性メモリは、媒体により格納されたデータの状態を維持するのに電力を必要とする記憶媒体であってよい。揮発性メモリの非限定的な例としては、ダイナミックRAM(DRAM)またはスタティックRAM(SRAM)といった様々な種類のRAMが含まれてよい。ある特定の種類のDRAMがメモリモジュールに用いられることがあり、それは同期ダイナミックRAM(SDRAM)である。NVメモリ(NVM)は、媒体により格納されたデータの状態を維持するのに電力を必要としない記憶媒体であってよい。1つの実施形態において、メモリデバイスはブロックアドレス指定可能なメモリデバイスを含んでよく、例えば、NAND技術に基づくものである。1つの実施形態において、メモリデバイスは複数の閾値レベルを有するNANDフラッシュメモリ、または他のメモリを用いるメモリデバイスを含んでもよく、またはそうでなくてもよい。メモリデバイスは、ダイ自体および/またはパッケージングされたメモリ製品を指すことがある。
【0017】
図1を参照すると、電子ストレージシステム10の一実施形態は、複数のNANDデバイスを含んだNANDベースの記憶媒体12、およびNANDベースの記憶媒体12に通信可能に連結されたコントローラ11を含んでよい。例えば、NANDデバイスが1つのNANDダイに対応してよい。コントローラ11には、複数のNANDデバイスのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであるかどうかを判定し、そうであると判定した場合、特定のNANDデバイスに限りプログラム一時中断操作を無効にする回路13が含まれてよい。いくつかの実施形態において、回路13はさらに、特定のNANDデバイスについてホスト読み取りが保留中であるかどうかを判定し、そうであると判定した場合、特定のNANDデバイスに限りプログラム一時中断操作を有効にするように構成されてよい。
【0018】
例えば、回路13は、複数のNANDデバイスのそれぞれのコマンドキュー(例えば、NANDデバイスキュー(NDQ))を維持し、コマンドキューのそれぞれと関連付けられたカウンタ値を維持して、コマンドキューのそれぞれについてそれぞれのホスト読み取りをカウントするように構成されてよい。いくつかの実施形態において、回路13はさらに、ホスト読み取りからのコマンドが特定のNANDデバイスのコマンドキューに配置されると、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値をインクリメントし、ホスト読み取りからのコマンドが特定のNANDデバイスのコマンドキューから消去されると、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値をデクリメントするように構成されてよい。例えば、回路13は、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値がゼロである場合、複数のNANDデバイスのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであると判定し、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値がゼロ以外である場合、特定のNANDデバイスについてホスト読み取りが保留中であると判定するように構成されてもよい。ここでの実施形態のいずれかにおいて、コントローラ11およびNANDベースの記憶媒体12は、ソリッドステートドライブ(SSD)に組み込まれてよい。
【0019】
上記コントローラ11、NANDベースの記憶媒体12、回路13、および他のシステムコンポーネントのそれぞれの実施形態が、ハードウェア、ソフトウェア、またはそれらの任意の好適な組み合わせで実現されてよい。例えば、ハードウェア実装例には、例としてプログラマブルロジックアレイ(PLA)、フィールドプログラマブルゲートアレイ(FPGA)、複合プログラマブルロジックデバイス(CPLD)といった構成可能なロジック、または例として特定用途向け集積回路(ASIC)、相補型金属酸化物半導体(CMOS)またはトランジスタ-トランジスタロジック(TTL)技術といった回路技術を用いた固定機能ロジックハードウェア、またはそれらの任意の組み合わせが含まれてよい。コントローラ11の実施形態には、汎用コントローラ、特殊目的コントローラ、メモリコントローラ、ストレージコントローラ、マイクロコントローラ、汎用プロセッサ、特殊目的プロセッサ、中央プロセッサユニット(CPU)、実行ユニットなどが含まれてよい。いくつかの実施形態において、NANDベースの記憶媒体12、回路13、および/または他のシステムメモリは、コントローラ11を含め様々なコンポーネント内に配置されても、またはそれと同じ場所に(例えば、同じダイに)配置されてもよい。
【0020】
代替的に、または追加的に、これらのコンポーネントの全部または一部が、プロセッサまたはコンピューティングデバイスにより実行されるマシン可読またはコンピュータ可読記憶媒体(例えば、RAM、ROM、プログラマブルROM(PROM)、ファームウェア、フラッシュメモリなど)に格納されたロジック命令のセットとして、1つまたは複数のモジュールに実装されてよい。例えば、コンポーネントのオペレーションを実行するためのコンピュータプログラムコードは、Python(登録商標)、Perl、Java(登録商標)、Smalltalk(登録商標)、C++、C#などといったオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語といった従来の手続き型プログラミング言語を含め、オペレーティングシステム(OS)に適用可能な/適切な1つまたは複数のプログラミング言語の任意の組み合わせで記述されてよい。例えば、NANDベースの記憶媒体12、他のNANDベースの記憶媒体、または他のシステムメモリは、コントローラ11により実行されると、システム10にシステム10の1つまたは複数のコンポーネント、特徴、または態様を実現させる命令のセットを格納してよい(例えば、回路13が、特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであるかどうかを判定する、特定のNANDデバイスに限りプログラム一時中断操作を無効にするなど)。
【0021】
ここで図2を参照すると、電子装置14の一実施形態は、1つまたは複数の基板15、および1つまたは複数の基板15に連結されたコントローラ16を含んでよい。コントローラ16には、複数のNANDデバイスを含んだNANDベースの記憶媒体へのアクセスを制御し、複数のNANDデバイスのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであるかどうかを判定し、そうであると判定した場合、特定のNANDデバイスに限りプログラム一時中断操作を無効にする回路17が含まれてよい。いくつかの実施形態において、回路17はさらに、特定のNANDデバイスについてホスト読み取りが保留中であるかどうかを判定し、そうであると判定した場合、特定のNANDデバイスに限りプログラム一時中断操作を有効にするように構成されてよい。
【0022】
例えば、回路17は、複数のNANDデバイスのそれぞれのコマンドキューを維持し、コマンドキューのそれぞれと関連付けられたカウンタ値を維持して、コマンドキューのそれぞれについてそれぞれのホスト読み取りをカウントするように構成されてよい。いくつかの実施形態において、回路17はさらに、ホスト読み取りからのコマンドが特定のNANDデバイスのコマンドキューに配置されると、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値をインクリメントし、ホスト読み取りからのコマンドが特定のNANDデバイスのコマンドキューから消去されると、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値をデクリメントするように構成されてよい。例えば、回路17は、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値がゼロである場合、複数のNANDデバイスのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであると判定し、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値がゼロ以外である場合、特定のNANDデバイスについてホスト読み取りが保留中であると判定するように構成されてもよい。ここでの実施形態のいずれかにおいて、コントローラおよびNANDベースの記憶媒体は、ソリッドステートドライブ(SSD)に組み込まれてよい。
【0023】
回路17の実施形態は、システム、装置、コンピュータ、デバイスなど(例えば、本明細書に説明されているものなど)に実装されてよい。より具体的には、回路17のハードウェア実装例には、例えばPLA、FPGA、CPLDといった構成可能なロジック、または、例えばASIC、CMOS、またはTTL技術といった回路技術を用いた固定機能ロジックハードウェア、またはそれらの任意の組み合わせが含まれてよい。代替的に、または追加的に、回路17は、プロセッサまたはコンピューティングデバイスにより実行されるマシン可読またはコンピュータ可読記憶媒体(例えば、RAM、ROM、PROM、ファームウェア、フラッシュメモリなど)に格納されたロジック命令のセットとして、1つまたは複数のモジュールに実装されてよい。例えば、コンポーネントのオペレーションを実行するためのコンピュータプログラムコードは、Python(登録商標)、Perl、Java(登録商標)、Smalltalk(登録商標)、C++、C#などといったオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語といった従来の手続き型プログラミング言語を含め、OSに適用可能な/適切な1つまたは複数のプログラミング言語の任意の組み合わせで記述されてよい。
【0024】
例えば、回路17は半導体装置に実装されてよく、この装置は1つまたは複数の基板15を含んでよく、1つまたは複数の基板15に回路17が連結されている。いくつかの実施形態において、回路17は、半導体基板(例えば、シリコン、サファイア、ガリウムヒ素など)上にある構成可能なロジックおよび固定機能ハードウェアロジックのうち1つまたは複数に少なくとも部分的に実装されてよい。例えば、回路17は、基板15の中に配置されたトランジスタのチャネル領域を有する基板15に連結されたトランジスタアレイおよび/または他の集積回路コンポーネントを含んでよい。回路17および基板15の間の境界面は、階段接合でなくてもよい。回路17は、基板15の初期ウェハー上に成長したエピタキシャル層を含むとみなされてもよい。
【0025】
ここで図3A図3Bを参照すると、ストレージを制御する方法20の一実施形態は、ブロック21において複数のNANDデバイスを含んだNANDベースの記憶媒体へのアクセスを制御する段階、ブロック22において複数のNANDデバイスのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであるかどうかを判定する段階、およびそうであると判定した場合、ブロック23において特定のNANDデバイスに限りプログラム一時中断操作を無効にする段階を含んでよい。方法20のいくつかの実施形態はさらに、ブロック24において特定のNANDデバイスについてホスト読み取りが保留中であるかどうかを判定する段階、およびそうであると判定した場合、ブロック25において特定のNANDデバイスに限りプログラム一時中断操作を有効にする段階を含んでよい。
【0026】
例えば、方法20は、ブロック26において複数のNANDデバイスのそれぞれのコマンドキューを維持する段階、およびブロック27においてコマンドキューのそれぞれと関連付けられたカウンタ値を維持して、コマンドキューのそれぞれについてそれぞれのホスト読み取りをカウントする段階も含んでもよい。方法20のいくつかの実施形態はさらに、ブロック28において、ホスト読み取りからのコマンドが特定のNANDデバイスのコマンドキューに配置されると、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値をインクリメントする段階、およびブロック29において、ホスト読み取りからのコマンドが特定のNANDデバイスのコマンドキューから消去されると、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値をデクリメントする段階を含んでよい。例えば、方法20には、ブロック30において、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値がゼロである場合、複数のNANDデバイスのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであると判定する段階、および/またはブロック31において、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値がゼロ以外である場合、特定のNANDデバイスについてホスト読み取りが保留中であると判定する段階も含まれてよい。ここでの実施形態のいずれかにおいて、NANDベースの記憶媒体は、ブロック32においてSSDに組み込まれてよい。
【0027】
方法20の実施形態は、例えば、本明細書で説明したようなシステム、装置、コンピュータ、デバイスなどに実装されてよい。より具体的には、方法20のハードウェア実装例には、例えばPLA、FPGA、CPLD、疎粒度再構成可能ファブリック(CGRA)といった構成可能なロジック、または、例えばASIC、CMOS、またはTTL技術といった回路技術を用いた固定機能ロジックハードウェア、またはそれらの任意の組み合わせが含まれてよい。代替的に、または追加的に、方法20は、プロセッサまたはコンピューティングデバイスにより実行されるマシン可読またはコンピュータ可読記憶媒体(例えば、RAM、ROM、PROM、ファームウェア、フラッシュメモリなど)に格納されたロジック命令のセットとして、1つまたは複数のモジュールに実装されてよい。例えば、コンポーネントのオペレーションを実行するためのコンピュータプログラムコードは、Python(登録商標)、Perl、Java(登録商標)、Smalltalk(登録商標)、C++、C#などといったオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語といった従来の手続き型プログラミング言語を含め、OSに適用可能な/適切な1つまたは複数のプログラミング言語の任意の組み合わせで記述されてよい。
【0028】
例えば、方法20は、以下の実施例22~28に関連して説明されるコンピュータ可読媒体に実装されてよい。方法20の実施形態またはその一部は、ファームウェア、アプリケーション(例えば、アプリケーションプログラミングインタフェース(API)を通じて)、またはオペレーティングシステム(OS)上で動作するドライバソフトウェアに実装されてよい。さらに、ロジック命令としては、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、状態設定データ、集積回路用構成データ、電子回路および/またはハードウェアに固有の他の構造上のコンポーネント(例えば、ホストプロセッサ、中央演算処理装置/CPU、マイクロコントローラなど)を個別化する状態情報が挙げられてよい。
【0029】
有利なことに、いくつかの実施形態では、SSDのランダム書き込み性能を最適化する技術を提供できる。いくつかのNAND媒体システムでは、プログラムコマンド(すなわち、書き込み)または読み取りコマンドのいずれかでNANDアレイに一度にアクセスすることが可能になる。プログラムレイテンシが読み取りレイテンシより1桁大きくなり得るので、ホスト読み取りレイテンシ(例えば、SSDの利用者には重要な指標)を改善するために、いくつかのNAND型SSDでは、NAND型SSDのプログラム一時中断-再開(PSR)機能を活用することがあり、これにより、進行中のプログラム操作を一時中断(休止)することができ、次いで、キューに入れられた1つまたは複数のホスト読み取りが完了した後に、一時中断したプログラム操作を再開することができる。
【0030】
SSDにおけるランダム書き込みワークロードのスループットに関する1つの障害は、NANDプログラミング時間(tProg)である。ランダム書き込みワークロードの際に、SSDは内部でNANDアレイから無効データを読み取り、それを新たな位置にプログラムして、新たな未書き込み領域を解放する。問題となるのは、ランダム書き込みワークロードの際に入ってくる内部読み取りに起因したプログラム操作の一時中断によって、プログラムコマンドを完了するのに要する時間が増加するので、ランダム書き込みワークロードのスループットの障害となるオーバーヘッドを助長することである。有利なことに、いくつかの実施形態では、ホスト読み取りレイテンシに対する影響をほとんどなくして、または最小にして、SSDのランダム書き込み性能を改善する技術を提供する。
【0031】
いくつかの実施形態では、ランダム書き込みワークロードの際に(任意の他のワークロードではなく)、PSRコマンドを消去するか、または無効にする技術を提供する。有利なことに、いくつかの実施形態では実効tProgを低減するか、または最小にすることが可能になるので、NANDデバイス操作のために利用可能なSSDコントローラ帯域幅の利用が増える。いくつかの実施形態が、ランダム書き込みワークロードに効果的に利用されることがある。その理由は、ランダム書き込みワークロードの際にホスト読み取りが存在しないので、SSDではランダム書き込みワークロードの際にホストスループットのためにワークロードを改善または最適化すると共に、他のワークロードではホスト読み取りレイテンシへの影響がないことも保証できるからである。有利なことに、いくつかの実施形態は、主要なSSD指標(ランダム読み取りおよび任意の混合読み取り/書き込みワークロードにおけるホスト読み取りレイテンシなど)に悪影響を与えることなくランダム書き込みスループットに多大な利益をもたらす比較的低い複雑度の技術を用いて実現され得る。
【0032】
NAND型SSDにおけるランダム書き込みワークロードでは、ホストにより書き込まれていたが、もはや有効ではないNANDをガベージコレクトする目的で、あるNAND位置から新たなNAND位置へデータを動かすためにSSDコントローラによる内部読み取りが生じ、これにより、無効なNANDを新たな書き込みのために再利用できるようになる。ガベージコレクションのプロセスでは、SSDコントローラは一般に、残りの有効なホスト書き込みデータを対象となる退避(eviction)NANDデバイスからSSDコントローラへと読み取り、これにより、ホスト書き込みデータを誤り訂正符号(ECC)アルゴリズムで訂正することができ、その後に、ホスト書き込みデータがその新たなNAND位置に書き込まれるようにスケジューリングすることができる。有利なことに、いくつかの実施形態では、NANDデバイスを対象とする内部読み取りを、NANDデバイスを対象とするホスト読み取りと区別し、対象となるNDQにホスト読み取りが存在している場合に限り、PSR操作を有効にする。
【0033】
SSDコントローラチャネルとは、SSDコントローラおよびNANDデバイスの間でデータを動かす専用のダイレクトメモリアクセス(DMA)エンジンのことを指す場合がある。チャネルオーバーヘッドとは、チャネルの帯域幅を消費する任意の付加的な本質的でないDMAコマンドまたはステータスコマンドのトラフィックのことを指す場合がある。
【0034】
いくつかの実施形態では、ランダム書き込みワークロードの際に限りPSR操作を無効にし、有利なことに、チャネルオーバーヘッドを低減するか、または最小にすることでランダム書き込みスループットを改善し、且つ実効tProgを低減することでスループットを上げるか、または最大にする。しかしながら、他のワークロードでPSRを無効にすると、特に混合ワークロードでは、読み取りを送り出す前に、読み取りの前にあるプログラムが完了するのを待つ必要があるので、読み取りレイテンシの増加を引き起こす。いくつかの実施形態では、ホスト読み取りレイテンシが混合読み取り/書き込みワークロードに影響を受けないように、PSR操作を動的に有効にしたり無効にしたりする。有利なことに、ランダム書き込みワークロードのスループットを改善するために、PSRオーバーヘッドもランダム書き込みワークロードから減らされるか、または排除される。
【0035】
いくつかの実施形態では、動的PSR無効化が、全体的なSSDレベルではなく、NANDデバイスレベルごとに局限的に行われる。有利なことに、そのような局限的な動的PSR無効化は、SSD内のNANDデバイスのサブセットだけに局限化され得る任意のランダム書き込みワークロードに対してスケーリングできる。ランダム書き込みワークロードがNANDデバイスのサブセットだけに局限化され得る場合の非限定的な例としては、SSDがNVMエクスプレス(NVMe)セット、NAND分割をホストに公開するNVMeエンデュランスグループ(Endurance Groups)などを実装している場合;SSDがメディアバンキング(media banking)の形式で内蔵NAND分割を実装している場合;ホストワークロードがそのランダム書き込みにおいてバースト的である場合;または一部の全てではないNANDデバイスをガベージコレクションのために(例えば、または媒体ポリシーのためにさえ)内部読み取りに公開することになる任意の種類の正確または不正確なホスト書き込みデータ配置を可能にする任意の種類のNVMeホスト仕様をSSDが実装している場合が挙げられる。
【0036】
いくつかの実施形態では、局限化されたランダム書き込みワークロードに限り、NANDデバイスごとにPSRを動的に無効にする技術を提供することがある。同様に(例えば、追加的にまたは代替的に)、いくつかの実施形態では、NANDデバイスがホスト読み取りの対象となった場合および/または保留中のホスト読み取りを有する場合に限り、PSRを有効にする技術を提供することがある。
【0037】
SSDには、NANDデバイスが進行中のコマンドで忙しい間に、NANDデバイスに送り出されるNANDコマンドを記録するソフトウェアキューを提供する技術が組み込まれることがある。いくつかの実装例において、ソフトウェアキューはNANDデバイスキュー(NDQ)と呼ばれることがある。いくつかの実施形態では、NDQにおけるホスト読み取りの数を調べるのに維持されるカウンタ(例えば、SSDコントローラに実装される)を提供する。以下、このカウンタはホスト読み取りカウンタ(HRC)と呼ばれる。いくつかの実施形態において、HRCは、NDQと関連付けられたNANDデバイスに対して、NDQ管理がPSR操作を有効にするのか、またはPSR操作を無効にするのかを判定するのに用いられる最も重要なメカニズムであってよい。各NDQはそれ自体のカウンタインスタンスを有しており、これにより、各NANDデバイスはNANDデバイスを対象とする局限化されたワークロードを有する。例えば、SSDがSSDコントローラに付属した10個のNANDデバイスを有する場合、10個のNDQがあることになるので10個のHRCがあり、NDQごとに1つのHRCがある。さらに、SSDアーキテクチャおよびホストワークロードに応じて、各NDQは異なるワークロードを経験することがある。そういうものとして、実施形態に関連した本明細書の残りの部分では、ワークロードとはNANDデバイスごとに局限化されたワークロードのことを指す。
【0038】
図4を参照すると、ストレージを制御する方法40の一実施形態がNANDCmdEnQueuetoNDQと呼ばれてよい。SSDコントローラが新たなNANDコマンドのNANDデバイス対象を決定すると、SSDコントローラはそのコマンドを対象となるNANDデバイスキューに入れる準備が整う。入ってくる新たなNANDコマンドは、四角枠41においてNDQに追加される。四角枠42において、NDQに入れられる新たなNANDコマンドがホスト読み取りコマンドから生成されたNANDコマンドである場合、四角枠43においてHRCは、関連したNDQに対してインクリメントされる。NAND読み取りコマンドが、例えば、ガベージコレクションのためにSSDコントローラにより内部で生成された場合、カウンタはインクリメントされない。後で、ホスト読み取りから生成されたNAND読み取りコマンドがNDQから消去されると、HRCはデクリメントされる(図5を参照)。
【0039】
図5を参照すると、ストレージを制御する方法50の一実施形態がNANDCmdDispatchtoNDQと呼ばれてよい。任意のNAND読み取り要求(例えば、内部またはホスト)が四角枠51においてNDQの先頭に到達した場合(例えば、読み取り要求がSSDコントローラチャネルに、したがって対象となるNANDデバイスに送り出されようとしている場合)、そのNDQのHRCが四角枠52において評価される。四角枠52においてHRCがゼロである場合(例えば、現行ワークロードはランダム書き込みワークロードであることを意味する)、四角枠53においてPSRがこのコマンドに対して無効になる。この場合のNAND読み取りコマンドは、ホスト読み取りではなく、内部SSDコントローラ読み取りのはずなので、対象となるNANDデバイスに(内部)読み取りを送り出すことができる前に、対象となるデバイスに未処理のプログラムがある場合、継続中のプログラムが完了するまで強制的に待機させられることになる。
【0040】
四角枠52においてHRCがゼロではない(例えば、現行ワークロードにホスト読み取りコマンドから生成されたNANDコマンドが含まれていることを意味する)場合、四角枠54においてPSRがこのコマンドに対して有効になる。NDQと関連付けられた対象となるデバイス上でプログラムが継続中である場合、NDQはホストおよび内部の両方の読み取りコマンドを用いて混合している可能性があるのでPSR操作が有効になり、継続中のプログラムを休止して、プログラムを一時中断した後にNAND読み取りコマンドを送り出すことができる可能性があるPSRポリシーごとに、プログラム一時中断操作が発行されてよい。方法50は次に、四角枠55においてNANDコマンドがホスト読み取りから送り出されたかどうかを判定する段階、およびそうであると判定した場合、四角枠56においてHRCをデクリメントする段階に進むことができる。
【0041】
NDQにホスト読み取りが存在しないときにPSRを無効にし、NDQにホスト読み取りが存在しているときにPSRを有効にすると、純粋な読み取りおよび混合読み取り/書き込みのワークロードにおけるホスト読み取りコマンドの読み取りレイテンシの利点を維持すると共に、PSR操作および関連するチャネルオーバーヘッドがランダム書き込みワークロードから排除されることを動的に保証する。有利なことに、局限的な動的PSR無効化を用いることなく同様に構成されたベースラインと比較すると、いくつか実施形態では、1秒当たりの入力/出力操作数(IOPS)、実効tProg、およびランダム書き込みワークロード性能に関して著しい改善を示す。
【0042】
図6を参照すると、説明のためのタイミングダイアグラム60で、1つのNANDデバイスに対する局限的な動的PSR無効化技術を用いた一実施形態とベースラインを比較している。図6に示すように、局限的な動的PSR無効化技術を用いた実施形態ではPSRオーバーヘッドが実質的に排除されており、ベースラインでは、局限的な動的PSR無効化技術を用いた実施形態と比較するとホスト書き込みにもっと多くの時間がかかっている。tProgの改善はPSRオーバーヘッドの低減による可能性があり、読み取りが継続中のプログラムの進行を中断することはできない。
【0043】
ここで説明した技術は、様々なコンピューティングシステム(例えば、デスクトップ、ワークステーション、サーバ、ラックシステムなどといった非携帯型コンピューティングデバイス、スマートフォン、タブレット、超携帯型パーソナルコンピュータ(UMPC)、ラップトップコンピュータ、Ultrabookコンピューティングデバイス、スマートウォッチ、スマートグラス、スマートブレスレットなどといった携帯型コンピューティングデバイス、および/またはモノのインターネット(IoT)デバイス(例えば、センサ、カメラなど)といったクライアント/エッジデバイスを含む)に提供されてよい。
【0044】
図7をここで参照すると、コンピューティングシステム100の一実施形態は、1つまたは複数のプロセッサ102-1~102-N(ここでは一般に「複数のプロセッサ102」または「プロセッサ102」と呼ばれる)を含んでよい。複数のプロセッサ102は、相互接続またはバス104を介して通信することができる。各プロセッサ102は、様々なコンポーネントを含んでよく、明確にするために、その一部だけをプロセッサ102-1を参照して説明する。したがって、残りのプロセッサ102-2~102-Nのそれぞれは、プロセッサ102-1を参照して説明される同じまたは同様のコンポーネントを含んでよい。
【0045】
いくつかの実施形態において、プロセッサ102-1は、1つまたは複数のプロセッサコア106-1~106-M(ここでは「複数のコア106」またはより一般的に「コア106」と呼ばれる)、キャッシュ108(様々な実施形態では共有キャッシュであっても、またはプライベートキャッシュであってもよい)および/またはルータ110を含んでよい。プロセッサコア106は、1つの集積回路(IC)チップに実装されてよい。さらにチップは、1つまたは複数の共有キャッシュおよび/またはプライベートキャッシュ(キャッシュ108など)、バスまたは相互接続(バスまたは相互接続112など)、メモリコントローラ、または他のコンポーネントを含んでよい。
【0046】
いくつかの実施形態において、ルータ110は、プロセッサ102-1および/またはシステム100の様々なコンポーネント同士の間で通信するのに用いられてよい。さらに、プロセッサ102-1は、1つより多くのルータ110を含んでよい。さらに、プロセッサ102-1の内部または外部にある様々なコンポーネント同士の間でデータルーティングを可能にするために、多数のルータ110が通信してよい。
【0047】
キャッシュ108は、プロセッサ102-1の1つまたは複数のコンポーネント(コア106など)が利用するデータ(例えば、命令を含む)を格納してよい。例えば、キャッシュ108は、プロセッサ102のコンポーネントがより高速にアクセスするために、メモリ114に格納されたデータをローカルにキャッシュしてよい。図7に示すように、メモリ114は、相互接続104を介してプロセッサ102と通信することができる。いくつかの実施形態において、(共有され得る)キャッシュ108は様々なレベルを有してよく、例えば、キャッシュ108は、中間レベルキャッシュおよび/またはラストレベルキャッシュ(LLC)であってもよい。また、コア106のそれぞれは、レベル1(L1)キャッシュ(116-1)(ここでは一般に「L1キャッシュ116」と呼ばれる)を含んでよい。プロセッサ102-1の様々なコンポーネントは、バス(例えば、バス112)および/またはメモリコントローラまたはハブを通じて、キャッシュ108と直接的に通信することができる。
【0048】
図7に示すように、メモリ114は、メモリコントローラ120を通じてシステム100の他のコンポーネントに連結されてよい。メモリ114は揮発性メモリを含んでよく、主メモリまたはシステムメモリと区別なく呼ばれることがある。メモリコントローラ120が相互接続104およびメモリ114の間に連結されているように示されていても、メモリコントローラ120はシステム100のどこか他の所に配置されてもよい。例えば、いくつかの実施形態において、メモリコントローラ120またはその一部が、複数のプロセッサ102のうちの1つに設けられてよい。
【0049】
システム100は、(例えば、有線インタフェースまたは無線インタフェースを介してコンピュータネットワークおよび/またはクラウド129と通信する)ネットワークインタフェース128を介して、他のデバイス/システム/ネットワークと通信することができる。例えば、ネットワークインタフェース128は、(例えば、米国電気電子技術者協会(IEEE)802.11インタフェース(IEEE802.11a/b/g/n/acなどを含む)、セルラインタフェース、3G、4G、LTE、Bluetooth(登録商標)などを介して)ネットワーク/クラウド129と無線で通信するためのアンテナ(不図示)を含んでよい。
【0050】
システム100は、SSDコントローラロジック125を介して相互接続104に連結されたSSD130などのストレージデバイスも含んでよい。したがって、ロジック125は、システム100の様々なコンポーネントによるSSD130へのアクセスを制御することができる。さらに、図7ではロジック125が相互接続104に直接的に連結されているように示されていても、ロジック125は代替的にストレージバス/相互接続(例えば、SATA(シリアルアドバンスドテクノロジーアタッチメント)バス、ペリフェラルコンポーネントインターコネクト(PCI)(またはPCIエクスプレス(PCIe)インタフェース)、NVMエクスプレス(NVMe)など)を介して、システム100の1つまたは複数の他のコンポーネントと通信することができる(例えば、ストレージバスが、バスブリッジ、チップセットなどのようないくつかの他のロジックを介して相互接続104に連結されている場合)。さらに、ロジック125はメモリコントローラロジック(例えば、図8を参照して説明するもの)に組み込まれても、または様々な実施形態において同じ集積回路(IC)デバイスに(例えば、SSD130と同じ回路基板デバイス上に、またはSSD130と同じ筐体内に)設けられてもよい。
【0051】
さらに、ロジック125および/またはSSD130は、1つまたは複数のセンサ(不図示)に連結されて、1つまたは複数のセンサにより検出された値のステータスまたはその値を示す情報を(例えば、1つまたは複数のビットまたは信号の形式で)受信することができる。これらのセンサは、コア106、相互接続104または112、プロセッサ102の外部にあるコンポーネント、SSD130、SSDバス、SATAバス、ロジック125、回路160などを含めたシステム100(または本明細書で説明した他のコンピューティングシステム)のコンポーネントに近接して設けられて、システム/プラットフォームの電力/熱的挙動に影響を与える様々な要因(例えば、温度、動作周波数、動作電圧、消費電力、および/またはコア間の通信アクティビティなど)の変動を検知することができる。
【0052】
図8は、一実施形態に従って、SSD130の様々なコンポーネントのブロック図を図示している。図8に図示するように、回路160は、SSD130またはコントローラ382の内部などといった様々な位置に配置されてよく、図7に関連して説明した同様の技術を含んでよい。SSD130は、コントローラ382(さらには、1つまたは複数のプロセッサコアまたはプロセッサ384、およびメモリコントローラロジック386を含む)、キャッシュ138、RAM388、ファームウェアストレージ390、および1つまたは複数のNANDデバイス392-1~392-N(まとめてNAND媒体392)を含む。NAND媒体392は、1つまたは複数のメモリチャネルまたはバスを介して、メモリコントローラロジック386に連結されている。また、SSD130は、インタフェース(SATA、SAS、PCIe、NVMeなどといったインタフェース)を介してロジック125と通信する。プロセッサ384および/またはコントローラ382は、NANDデバイス392-1~392-Nに書き込まれるデータ、またはそこから読み取られるデータを圧縮/伸張することができる。
【0053】
図7および図8に図示するように、SSD130は回路160を含んでよく、これは、SSD130と同じ筐体内にあっても、および/またはSSD130のプリント回路基板(PCB)上に完全に一体化されてもよい。図1図6を参照して説明した特徴/態様/操作のうち1つまたは複数が、図7および/または図8のコンポーネントのうち1つまたは複数により行われてよい。また、図1図6の特徴/態様/操作のうち1つまたは複数が、ファームウェア390にプログラムされてよい。さらに、SSDコントローラロジック125も、回路160を含んでよい。有利なことに、回路160は、システム10(図1)、装置14(図2)、方法20(図3A図3B)、方法40(図4)、方法50(図5)、タイミングダイアグラム60(図6)、および/または本明細書で説明した特徴のいずれかの1つまたは複数の態様を実現するための技術を含み得る。
【0054】
例えば、回路160は、1つまたは複数のNANDデバイス392-1~392-Nのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであるかどうかを判定し、そうであると判定した場合、特定のNANDデバイスに限りプログラム一時中断操作(または、例えばPSR操作)を無効にするように構成されてよい。有利なことに、PSRを無効にすることで、tProgが改善され、1秒当たりのI/Oまたはランダム書き込み性能が改善される。いくつかの実施形態において、回路160はさらに、特定のNANDデバイスについてホスト読み取りが保留中であるかどうかを判定し、そうであると判定した場合、特定のNANDデバイスに限りプログラム一時中断操作を有効にするように構成されてよい。
【0055】
例えば、回路160は、1つまたは複数のNANDデバイス392-1~392-Nのそれぞれに対するNDQ(例えば、コマンドキュー)を維持し、NDQのそれぞれと関連付けられたHRC(例えば、カウンタ値)を維持して、NDQのそれぞれについてそれぞれのホスト読み取りをカウントするように構成されてよい。いくつかの実施形態において、回路160はさらに、ホスト読み取りからのコマンドが特定のNANDデバイスのNDQに配置されると、特定のNANDデバイスのNDQと関連付けられたHRCをインクリメントし、ホスト読み取りからのコマンドが特定のNANDデバイスのNDQから消去されると、特定のNANDデバイスのNDQと関連付けられたHRCをデクリメントするように構成されてよい。例えば、回路160は、特定のNANDデバイスのNDQと関連付けられたHRCがゼロである場合、1つまたは複数のNANDデバイス392-1~392-Nのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであると判定し、特定のNANDデバイスのNDQと関連付けられたHRCがゼロ以外である場合、特定のNANDデバイスについてホスト読み取りが保留中であると判定するように構成されてもよい。
【0056】
他の実施形態において、SSD130は、任意の好適なストレージ/メモリ/技術/媒体に置き換えられてよい。いくつかの実施形態において、回路160は、1つまたは複数の基板(例えば、シリコン、サファイア、ガリウムヒ素、プリント回路基板(PCB)など)に連結されてよく、1つまたは複数の基板内に配置されたトランジスタのチャネル領域を含んでよい。他の実施形態において、SSD130は、2つまたはそれより多くの種類の記憶媒体を含んでよい。例えば、ストレージの大部分は、NANDであってよく、さらに何らかのより高速で、より小さい粒度でアクセス可能(例えば、バイトアドレス可能)なNVMを含んでよい。SSD130は代替的に、または追加的に、永続的揮発性メモリ(例えば、バッテリまたはコンデンサで電力をバックアップするDRAMまたはSRAM)を含んでもよい。例えば、SSD130は、エネルギー貯蔵コンデンサを用いた電力損失保護(PLI)技術を含んでよい。エネルギー貯蔵コンデンサは、進行中の任意のコマンドを完了し、DRAM/SRAM内のどのデータも不揮発性NAND媒体に必ず記録されるのに十分なエネルギー(電力)を供給することができる。コンデンサは、永続的揮発性メモリのバックアップバッテリとして機能することができる。図7および図8に示すように、回路160の特徴または態様が、システム100全体に分散されても、および/またはシステム100の様々なコンポーネントと同じ場所に配置されても/これと一体化されてもよい。
【0057】
[追加の留意点および実施例]
【0058】
実施例1は電子装置を含み、本装置は、1つまたは複数の基板、および1つまたは複数の基板に連結されたコントローラを含み、コントローラには、複数のNANDデバイスを含んだNANDベースの記憶媒体へのアクセスを制御し、複数のNANDデバイスのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであるかどうかを判定し、そうであると判定した場合、特定のNANDデバイスに限りプログラム一時中断操作を無効にする回路が含まれる。
【0059】
実施例2は実施例1に記載の装置を含み、回路はさらに、特定のNANDデバイスについてホスト読み取りが保留中であるかどうかを判定し、そうであると判定した場合、特定のNANDデバイスに限りプログラム一時中断操作を有効にする。
【0060】
実施例3は実施例2に記載の装置を含み、回路はさらに、複数のNANDデバイスのそれぞれのコマンドキューを維持し、コマンドキューのそれぞれと関連付けられたカウンタ値を維持して、コマンドキューのそれぞれについてそれぞれのホスト読み取りをカウントする。
【0061】
実施例4は実施例3に記載の装置を含み、回路はさらに、ホスト読み取りからのコマンドが特定のNANDデバイスのコマンドキューに配置されると、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値をインクリメントし、ホスト読み取りからのコマンドが特定のNANDデバイスのコマンドキューから消去されると、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値をデクリメントする。
【0062】
実施例5は実施例4に記載の装置を含み、回路はさらに、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値がゼロである場合、複数のNANDデバイスのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであると判定する。
【0063】
実施例6は実施例4から5のいずれかに記載の装置を含み、回路はさらに、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値がゼロ以外である場合、特定のNANDデバイスについてホスト読み取りが保留中であると判定する。
【0064】
実施例7は実施例1から6のいずれかに記載の装置を含み、コントローラおよびNANDベースの記憶媒体はソリッドステートドライブに組み込まれている。
【0065】
実施例8は電子ストレージシステムを含み、本システムは、複数のNANDデバイスを含んだNANDベースの記憶媒体、およびNANDベースの記憶媒体に通信可能に連結されたコントローラを含み、コントローラには、複数のNANDデバイスのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであるかどうかを判定し、そうであると判定した場合、特定のNANDデバイスに限りプログラム一時中断操作を無効にする回路が含まれる。
【0066】
実施例9は実施例8に記載のシステムを含み、回路はさらに、特定のNANDデバイスについてホスト読み取りが保留中であるかどうかを判定し、そうであると判定した場合、特定のNANDデバイスに限りプログラム一時中断操作を有効にする。
【0067】
実施例10は実施例9に記載のシステムを含み、回路はさらに、複数のNANDデバイスのそれぞれのコマンドキューを維持し、コマンドキューのそれぞれと関連付けられたカウンタ値を維持して、コマンドキューのそれぞれについてそれぞれのホスト読み取りをカウントする。
【0068】
実施例11は実施例10に記載のシステムを含み、回路はさらに、ホスト読み取りからのコマンドが特定のNANDデバイスのコマンドキューに配置されると、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値をインクリメントし、ホスト読み取りからのコマンドが特定のNANDデバイスのコマンドキューから消去されると、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値をデクリメントする。
【0069】
実施例12は実施例11に記載のシステムを含み、回路はさらに、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値がゼロである場合、複数のNANDデバイスのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであると判定する。
【0070】
実施例13は実施例11から12のいずれかに記載のシステムを含み、回路はさらに、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値がゼロ以外である場合、特定のNANDデバイスについてホスト読み取りが保留中であると判定する。
【0071】
実施例14は実施例8から13のいずれかに記載のシステムを含み、コントローラおよびNANDベースの記憶媒体はソリッドステートドライブに組み込まれている。
【0072】
実施例15はストレージを制御する方法を含み、本方法は、複数のNANDデバイスを含んだNANDベースの記憶媒体へのアクセスを制御する段階、複数のNANDデバイスのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであるかどうかを判定する段階、およびそうであると判定した場合、特定のNANDデバイスに限りプログラム一時中断操作を無効にする段階を備える。
【0073】
実施例16は実施例15に記載の方法を含み、さらに、特定のNANDデバイスについてホスト読み取りが保留中であるかどうかを判定する段階、およびそうであると判定した場合、特定のNANDデバイスに限りプログラム一時中断操作を有効にする段階を備える。
【0074】
実施例17は実施例16に記載の方法を含み、さらに、複数のNANDデバイスのそれぞれのコマンドキューを維持する段階、およびコマンドキューのそれぞれと関連付けられたカウンタ値を維持して、コマンドキューのそれぞれについてそれぞれのホスト読み取りをカウントする段階を備える。
【0075】
実施例18は実施例17に記載の方法を含み、さらに、ホスト読み取りからのコマンドが特定のNANDデバイスのコマンドキューに配置されると、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値をインクリメントする段階、およびホスト読み取りからのコマンドが特定のNANDデバイスのコマンドキューから消去されると、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値をデクリメントする段階を備える。
【0076】
実施例19は実施例18に記載の方法を含み、さらに、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値がゼロである場合、複数のNANDデバイスのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであると判定する段階を備える。
【0077】
実施例20は実施例18から19のいずれかに記載の方法を含み、さらに、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値がゼロ以外である場合、特定のNANDデバイスについてホスト読み取りが保留中であると判定する段階を備える。
【0078】
実施例21は実施例15から20のいずれかに記載の方法を含み、NANDベースの記憶媒体はソリッドステートドライブに組み込まれている。
【0079】
実施例22は、複数の命令を含んだ少なくとも1つの非一時的マシン可読媒体を含み、この命令は、コンピューティングデバイスでの実行に応答してコンピューティングデバイスに、複数のNANDデバイスを含んだNANDベースの記憶媒体へのアクセスを制御させ、複数のNANDデバイスのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであるかどうかを判定させ、そうであると判定した場合、特定のNANDデバイスに限りプログラム一時中断操作を無効にさせる。
【0080】
実施例23は実施例22に記載の少なくとも1つの非一時的マシン可読媒体を含み、この媒体は複数のさらなる命令を含み、この命令は、コンピューティングデバイスでの実行に応答してコンピューティングデバイスに、特定のNANDデバイスについてホスト読み取りが保留中であるかどうかを判定させ、そうであると判定した場合、特定のNANDデバイスに限りプログラム一時中断操作を有効にさせる。
【0081】
実施例24は実施例23に記載の少なくとも1つの非一時的マシン可読媒体を含み、この媒体は複数のさらなる命令を含み、この命令は、コンピューティングデバイスでの実行に応答してコンピューティングデバイスに、複数のNANDデバイスのそれぞれのコマンドキューを維持させ、コマンドキューのそれぞれと関連付けられたカウンタ値を維持させて、コマンドキューのそれぞれについてそれぞれのホスト読み取りをカウントさせる。
【0082】
実施例25は実施例24に記載の少なくとも1つの非一時的マシン可読媒体を含み、この媒体は複数のさらなる命令を含み、この命令は、コンピューティングデバイスでの実行に応答してコンピューティングデバイスに、ホスト読み取りからのコマンドが特定のNANDデバイスのコマンドキューに配置されると、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値をインクリメントさせ、ホスト読み取りからのコマンドが特定のNANDデバイスのコマンドキューから消去されると、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値をデクリメントさせる。
【0083】
実施例26は実施例25に記載の少なくとも1つの非一時的マシン可読媒体を含み、この媒体は複数のさらなる命令を含み、この命令は、コンピューティングデバイスでの実行に応答してコンピューティングデバイスに、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値がゼロである場合、複数のNANDデバイスのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであると判定させる。
【0084】
実施例27は実施例25から26のいずれかに記載の少なくとも1つの非一時的マシン可読媒体を含み、この媒体は複数のさらなる命令を含み、この命令は、コンピューティングデバイスでの実行に応答してコンピューティングデバイスに、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値がゼロ以外である場合、特定のNANDデバイスについてホスト読み取りが保留中であると判定させる。
【0085】
実施例28は実施例22から27のいずれかに記載の少なくとも1つの非一時的マシン可読媒体を含み、NANDベースの記憶媒体はソリッドステートドライブに組み込まれている。
【0086】
実施例29はストレージコントローラ装置を含み、本装置は、複数のNANDデバイスを含んだNANDベースの記憶媒体へのアクセスを制御するための手段、複数のNANDデバイスのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであるかどうかを判定するための手段、およびそうであると判定した場合、特定のNANDデバイスに限りプログラム一時中断操作を無効にするための手段を備える。
【0087】
実施例30は実施例29に記載の装置を含み、さらに、特定のNANDデバイスについてホスト読み取りが保留中であるかどうかを判定するための手段、およびそうであると判定した場合、特定のNANDデバイスに限りプログラム一時中断操作を有効にするための手段を備える。
【0088】
実施例31は実施例30に記載の装置を含み、さらに、複数のNANDデバイスのそれぞれのコマンドキューを維持するための手段、およびコマンドキューのそれぞれと関連付けられたカウンタ値を維持して、コマンドキューのそれぞれについてそれぞれのホスト読み取りをカウントするための手段を備える。
【0089】
実施例32は実施例31に記載の装置を含み、さらに、ホスト読み取りからのコマンドが特定のNANDデバイスのコマンドキューに配置されると、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値をインクリメントするための手段、およびホスト読み取りからのコマンドが特定のNANDデバイスのコマンドキューから消去されると、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値をデクリメントするための手段を備える。
【0090】
実施例33は実施例32に記載の装置を含み、さらに、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値がゼロである場合、複数のNANDデバイスのうち特定のNANDデバイスに対する現行ワークロードがランダム書き込みワークロードであると判定するための手段を備える。
【0091】
実施例34は実施例32から33のいずれかに記載の装置を含み、さらに、特定のNANDデバイスのコマンドキューと関連付けられたカウンタ値がゼロ以外である場合、特定のNANDデバイスについてホスト読み取りが保留中であると判定するための手段を備える。
【0092】
実施例35は実施例29から34のいずれかに記載の装置を含み、NANDベースの記憶媒体はソリッドステートドライブに組み込まれている。
【0093】
「連結される」という用語は、本明細書では、問題となっているコンポーネント同士の間の直接的または間接的な任意の種類の関係を指すのに用いられてよく、電気的接続、機械的接続、流体的接続、光学的接続、電磁的接続、電気機械的接続、または他の接続に適用することができる。さらに、「第1」、「第2」などの用語は、説明を容易にするために限り本明細書で用いられることがあり、別段の指示がない限り、特定の時間的意味または経時的意味を持たない。
【0094】
本願および特許請求の範囲において、「~のうち1つまたは複数」という用語につながった一連の項目は、記載された用語の任意の組み合わせを意味してよい。例えば「A、B、およびCのうち1つまたは複数」という文言、および、「A、B、またはCのうち1つまたは複数」という文言は両方とも、A;B;C;AおよびB;AおよびC;BおよびC;またはA、B、およびCを意味してよい。本明細書で説明したシステムの様々なコンポーネントが、ソフトウェア、ファームウェア、および/またはハードウェア、および/またはこれらの任意の組み合わせで実現されてよい。例えば、本明細書で説明したシステムまたはデバイスの様々なコンポーネントが、少なくとも部分的に、例えば、スマートフォンなどのコンピューティングシステムの中に見られることがあるようなコンピューティングSoCのハードウェアで提供されてよい。当業者であれば、本明細書で説明したシステムが、対応する図に描かれていない追加のコンポーネントを含んでよいことを認識するであろう。例えば、本明細書で説明したシステムは、明確にするために描かれていないビットストリームマルチプレクサまたはデマルチプレクサモジュールなどといった追加のコンポーネントを含んでよい。
【0095】
本明細書で説明した例示的なプロセスの実現には、図示した順序で示す全てのオペレーションの実行が含まれてよいが、本開示はこの点に関して限定されることはなく、様々な例において、本明細書における例示的なプロセスの実現には、示したオペレーションのサブセットのみ、図示したのとは異なる順序で行われるオペレーション、または追加のオペレーションが含まれてよい。
【0096】
さらに、本明細書で説明したオペレーションのうちいずれか1つまたは複数は、1つまたは複数のコンピュータプログラム製品により提供される命令に応答して実行されてよい。そのようなプログラム製品は、例えばプロセッサにより実行されると、本明細書で説明した機能をもたらし得る命令を提供する信号担持媒体を含んでよい。コンピュータプログラム製品は、任意の形式の1つまたは複数のマシン可読媒体で提供されてよい。したがって、例えば、1つまたは複数の画像処理装置またはプロセッサコアを含んだプロセッサが、1つまたは複数のマシン可読媒体によりプロセッサに送られるプログラムコードおよび/または命令または命令セットに応答して、本明細書における例示的なプロセスのブロックのうち1つまたは複数を実行してよい。一般に、マシン可読媒体は、本明細書で説明したデバイスおよび/またはシステムのいずれかに、本明細書で説明したオペレーションの少なくとも一部、および/または本明細書で説明したデバイス、システム、または任意のモジュールまたはコンポーネントの任意の部分を実現させることができるプログラムコードおよび/または命令または命令セットの形式でソフトウェアを搬送してよい。
【0097】
本明細書で説明した任意の実装例において、「モジュール」という用語は、本明細書で説明した機能を提供するように構成されたソフトウェアロジック、ファームウェアロジック、ハードウェアロジック、および/または回路の任意の組み合わせのことを指す。ソフトウェアは、ソフトウェアパッケージ、コード、および/または命令セットまたは命令として具現化されてよく、本明細書で説明した任意の実装例において、「ハードウェア」は、例えば、ハードワイヤード回路、プログラマブル回路、ステートマシン回路、固定機能回路、実行ユニット回路、および/またはプログラマブル回路により実行される命令を格納したファームウェアを、単独でまたは任意の組み合わせで含んでよい。これらのモジュールは、より大きいシステムの一部を形成する回路(例えば、集積回路(IC)およびシステムオンチップ(SoC)など)として、まとめてまたは個別に具現化されてよい。
【0098】
様々な実施形態が、ハードウェア要素、ソフトウェア要素、またはその両方の組み合わせを用いて実現されてよい。ハードウェア要素の例としては、プロセッサ、マイクロプロセッサ、回路、回路素子(例えば、トランジスタ、抵抗、コンデンサ、およびインダクタなど)、集積回路、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、およびチップセットなどが挙げられてよい。ソフトウェアの例としては、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、方法、手順、ソフトウェアインタフェース、アプリケーションプログラムインタフェース(API)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはそれらの任意の組み合わせが挙げられてよい。一実施形態がハードウェア要素および/またはソフトウェア要素のいずれを用いて実現されるのかの判断は、所望の計算レート、電力レベル、耐熱性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバス速度、および他の設計上または性能上の制約といった任意の数の要因によって異なる場合がある。
【0099】
少なくとも1つの実施形態の1つまたは複数の態様が、マシン可読媒体に格納された、プロセッサ内の様々なロジックを表す代表的な命令によって実現されてよく、この命令は、マシンによって読み取られると、本明細書で説明した手法を行うためのロジックをマシンに作成させる。そのような表現は、IPコアとして知られており、ロジックまたはプロセッサを実際に作る製造機械にロードするために、有形のマシン可読媒体に格納されて、様々な顧客または製造施設に供給されてよい。
【0100】
本明細書に記載された特定の特徴を、様々な実装例を参照して説明してきたが、この説明は、限定的な意味で解釈されるように意図したものではない。したがって、本明細書で説明した実装例の様々な変更および他の実装例は、本開示が関連する当業者には明らかであるが、本開示の趣旨および範囲の中にあるとみなされる。
【0101】
これらの実施形態は、そのように説明した実施形態に限定されないが、添付した特許請求の範囲の範囲から逸脱することなく変更および改変を伴って実施されてもよいことが認識されるであろう。例えば、上記実施形態は、特徴の特定の組み合わせを含んでよい。しかしながら、上記実施形態は、この点に関して限定されることはなく、様々な実装例において、上記実施形態は、そのような特徴のサブセットのみの実行、そのような特徴の異なる順序での実行、そのような特徴の異なる組み合わせでの実行、および/または明示的に記載されたそれらの特徴に対する追加の特徴の実行を含んでよい。したがって、これらの実施形態の範囲は、添付した特許請求の範囲を、そのような特許請求の範囲が権利を有する等価物の全範囲と共に参照して判断されるべきである。
図1
図2
図3A
図3B
図4
図5
図6
図7
図8
【国際調査報告】