(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-04
(45)【発行日】2024-10-15
(54)【発明の名称】メモリシステム、および情報処理システム
(51)【国際特許分類】
G06F 12/00 20060101AFI20241007BHJP
G06F 12/02 20060101ALI20241007BHJP
【FI】
G06F12/00 550E
G06F12/00 597U
G06F12/02 530E
(21)【出願番号】P 2021047518
(22)【出願日】2021-03-22
【審査請求日】2023-09-11
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】栗田 貴宏
(72)【発明者】
【氏名】菅野 伸一
(72)【発明者】
【氏名】佐々木 勇輝
【審査官】豊田 真弓
(56)【参考文献】
【文献】特開2018-120439(JP,A)
【文献】特開2019-149197(JP,A)
【文献】特表2012-523631(JP,A)
【文献】特表2009-503746(JP,A)
【文献】特表2012-523593(JP,A)
【文献】特開2020-046752(JP,A)
【文献】特開2006-172495(JP,A)
【文献】特開2017-117055(JP,A)
【文献】特開2019-125111(JP,A)
【文献】特開2011-227664(JP,A)
【文献】特開2020-030875(JP,A)
【文献】特開2019-121350(JP,A)
【文献】米国特許出願公開第2017/0285988(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 12/02
(57)【特許請求の範囲】
【請求項1】
ホスト装置に接続可能なメモリシステムであって、
不揮発性メモリと、
前記不揮発性メモリを制御し、前記ホスト装置からの第1指示に応じて前記メモリシステムの消費電力量を抑制するコントローラと、
を備え
、
前記コントローラは、
前記ホスト装置と前記不揮発性メモリとの間でデータを転送し、
第1値と、第2値と、を前記ホスト装置から受信し、
前記第1指示に応じて、前記ホスト装置と前記不揮発性メモリとの間で前記第2値に対応した量のデータを、前記消費電力量が前記第1値に対応した量を越えないように転送する、メモリシステム。
【請求項2】
ホスト装置に接続可能なメモリシステムであって、
不揮発性メモリと、
前記不揮発性メモリを制御し、前記ホスト装置からの第1指示に応じて前記メモリシステムの消費電力量を抑制するコントローラと、
を備え、
前記不揮発性メモリは、複数のメモリセルトランジスタを備え、前記複数のメモリセルトランジスタのそれぞれは、格納されるデータのビット数が可変に構成され、
前記コントローラは、
第1値と、第2値と、を前記ホスト装置から受信し、
前記第1指示に応じて、前記第2値に対応した期間における前記消費電力量が前記第1値に対応した量を越えないように、前記消費電力量を制御し、
前記消費電力量の上限値の推移を規定する電力量計画を、前記第1値と、前記第2値と、に基づいて生成し、
前記第1指示に応じて、前記電力量計画に基づいて前記消費電力量を制御し、
第1動作モードと、前記第1動作モードよりも消費電力量が少ない第2動作モードと、を含む複数の動作モードで動作することが可能であり、
前記電力量計画に基づいて前記複数の動作モードの間の切り替えを実行し、
前記第2動作モードにおいて、前記ホスト装置からの通知を受信し、前記通知に対応したビット数のデータをライト先のメモリセルトランジスタにライトする、メモリシステム。
【請求項3】
ホスト装置に接続可能なメモリシステムであって、
不揮発性メモリと、
前記不揮発性メモリを制御し、前記ホスト装置からの第1指示に応じて前記メモリシステムの消費電力量を抑制するコントローラと、
を備え、
前記不揮発性メモリは、複数のメモリセルトランジスタを備え、前記複数のメモリセルトランジスタのそれぞれは、格納されるデータのビット数が可変に構成され、前記複数のメモリセルトランジスタは、それぞれに格納されたデータが一括にイレースされる複数のブロックに分割されており、
前記コントローラは、
第1値と、第2値と、を前記ホスト装置から受信し、
前記第1指示に応じて、前記第2値に対応した期間における前記消費電力量が前記第1値に対応した量を越えないように、前記消費電力量を制御し、
前記消費電力量の上限値の推移を規定する電力量計画を、前記第1値と、前記第2値と、に基づいて生成し、
前記第1指示に応じて、前記電力量計画に基づいて前記消費電力量を制御し、
第1動作モードと、前記第1動作モードよりも消費電力量が少ない第2動作モードと、を含む複数の動作モードで動作することが可能であり、
前記電力量計画に基づいて前記複数の動作モードの間の切り替えを実行し、
前記第2動作モードにおいて、
前記ホスト装置から通知を受信し、
前記通知が第1ビット数に対応する場合には、前記第1ビット数のデータをライト先のメモリセルトランジスタにライトし、
前記通知が前記第1ビット数よりも小さい第2ビット数に対応し、かつ前記複数のブロックのうちのフリーブロックの数が第3値よりも小さい場合には、前記第1ビット数のデータをライト先のメモリセルトランジスタにライトし、
前記通知が前記第2ビット数に対応し、かつ前記複数のブロックのうちのフリーブロックの数が第3値よりも大きい場合には、前記第2ビット数のデータをライト先のメモリセルトランジスタにライトする、メモリシステム。
【請求項4】
ホスト装置に接続可能なメモリシステムであって、
不揮発性メモリと、
前記不揮発性メモリを制御し、前記ホスト装置からの第1指示に応じて前記メモリシステムの消費電力量を抑制するコントローラと、
を備え、
前記不揮発性メモリは、複数のメモリセルトランジスタを備え、前記複数のメモリセルトランジスタのそれぞれは、格納されるデータのビット数が可変に構成され、
前記コントローラは、
第1値と、第2値と、を前記ホスト装置から受信し、
前記第1指示に応じて、前記第2値に対応した期間における前記消費電力量が前記第1値に対応した量を越えないように、前記消費電力量を制御し、
ライト先のメモリセルトランジスタにライトするデータのビット数を減らすことによって前記消費電力量を抑制する、メモリシステム。
【請求項5】
ホスト装置に接続可能なメモリシステムであって、
不揮発性メモリと、
前記不揮発性メモリを制御し、前記ホスト装置からの第1指示に応じて前記メモリシステムの消費電力量を抑制するコントローラと、
を備え、
前記コントローラは、
第1値と、第2値と、を前記ホスト装置から受信し、
前記第1指示に応じて、前記第2値に対応した期間における前記消費電力量が前記第1値に対応した量を越えないように、前記消費電力量を制御し、
前記消費電力量の上限値の推移を規定する電力量計画を、前記第1値と、前記第2値と、に基づいて生成し、
前記第1指示に応じて、前記電力量計画に基づいて前記消費電力量を制御し、
前記ホスト装置と前記不揮発性メモリとの間でデータを転送する第1処理と、前記不揮発性メモリ内でデータを転記する第2処理と、を実行し、
第1動作モードと、前記第1動作モードよりも消費電力量が少ない第2動作モードと、前記第1動作モードよりも前記第2処理の処理量が多い第3動作モードと、を含む複数の動作モードで動作することが可能であり、
前記電力量計画に基づいて前記複数の動作モードの間の切り替えを実行する、メモリシステム。
【請求項6】
前記コントローラは、前記ホスト装置と前記不揮発性メモリとの間でデータを転送する第1処理と、前記不揮発性メモリ内でデータを転記する第2処理と、を実行し、前記第1指示に応じて前記第2処理の処理量を減らす、
請求項1
から請求項4の何れか一項に記載のメモリシステム。
【請求項7】
前記不揮発性メモリは、それぞれに格納されたデータが一括にイレースされる複数のブロックを備え、
前記コントローラは、ガベージコレクションを実行し、
前記第1指示を受信した場合、格納された有効なデータの量のみに基づく第1のポリシーに従って前記複数のブロックのうちから前記ガベージコレクションにおける転記元のブロックを選択し、
前記第1指示を受信していない場合、前記第1のポリシーと異なる第2のポリシーに従って前記複数のブロックのうちから前記ガベージコレクションにおける転記元のブロックを選択する、
請求項1
から請求項5の何れか一項に記載のメモリシステム。
【請求項8】
前記第1のポリシーは、前記複数のブロックのうちの格納された有効なデータの量が少ないブロックほど優先的に前記転記元のブロックとして選択するポリシーである、
請求項
7に記載のメモリシステム。
【請求項9】
前記第2のポリシーは、最後に書き込まれた時刻に基づいて前記複数のブロックのうちから前記ガベージコレクションにおける転記元のブロックを選択するポリシーである、
請求項
7に記載のメモリシステム。
【請求項10】
前記コントローラは、前記ホスト装置からの前記消費電力量に関する第1情報を受信し、前記第1情報に基づいて前記消費電力量を取得する、
請求項
1から請求項
5の何れか一項に記載のメモリシステム。
【請求項11】
前記複数のメモリセルトランジスタは、それぞれに格納されたデータが一括にイレースされる複数のブロックに分割されており、
前記コントローラは、
前記複数のブロックのうちのフリーブロックの数が第3値よりも小さい場合には、ライト先のメモリセルトランジスタに第1ビット数のデータをライトし、
前記複数のブロックのうちのフリーブロックの数が第3値よりも多い場合には、ライト先のメモリセルトランジスタに前記第1ビット数よりも少ない第2ビット数のデータをライトする、
請求項
4に記載のメモリシステム。
【請求項12】
前記コントローラは、前記消費電力量の抑制の可否に関連する情報を前記ホスト装置からの第2指示に応じて前記ホスト装置に送信する、
請求項1から請求項
5の何れか一項に記載のメモリシステム。
【請求項13】
ホスト装置と、
前記ホスト装置に接続された
請求項1から請求項5の何れか一項に記載のメモリシステムと、
を備
える情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本実施形態は、メモリシステム、および情報処理システムに関する。
【背景技術】
【0002】
SSD(Solid State Drive)などのメモリシステムは、コントローラと不揮発性メモリとを備える。コントローラは、ホスト装置からの要求に応じて、不揮発性メモリから読み出したデータをホスト装置へ送信する処理や、ホスト装置から受信したデータを不揮発性メモリへ書き込む処理等を制御する。さらに、コントローラは、不揮発性メモリ内でデータを移動させる転記(transcription)処理等を実行する。メモリシステムでは、ホスト装置と不揮発性メモリとの間のデータの送受信だけでなく、転記処理においても電力が消費される。
【先行技術文献】
【特許文献】
【0003】
【文献】米国特許出願公開第2019/310956号明細書
【文献】米国特許出願公開第2015/89123号明細書
【文献】特開2018-169979号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
一つの実施形態によれば、ホスト装置が消費電力量を制御できるメモリシステム、情報処理システム、およびメモリシステムの消費電力量を制御できるホスト装置、を提供することを目的とする。
【課題を解決するための手段】
【0005】
一つの実施形態によれば、メモリシステムは、ホスト装置に接続可能である。メモリシステムは、不揮発性メモリと、不揮発性メモリを制御するコントローラと、を備える。コントローラは、ホスト装置からの第1指示に応じてメモリシステムの消費電力量を抑制する。コントローラは、ホスト装置と不揮発性メモリとの間でデータを転送する。コントローラは、第1値と、第2値と、をホスト装置から受信する。コントローラは、第1指示に応じて、ホスト装置と不揮発性メモリとの間で第2値に対応した量のデータを、消費電力量が第1値に対応した量を越えないように転送する。
【図面の簡単な説明】
【0006】
【
図1】
図1は、第1の実施形態の情報処理システムの構成の一例を示す模式的な図である。
【
図2】
図2は、第1の実施形態にかかるメモリチップの構成の一例を示す模式的な図である。
【
図3】
図3は、第1の実施形態にかかるブロックの回路構成を示す模式的な図である。
【
図4】
図4は、第1の実施形態の種々の記憶モードにおける各区分を説明する図である。
【
図5】
図5は、第1の実施形態のブロックの状態遷移の一例を示す図である。
【
図6】
図6は、第1の実施形態のホスト装置とメモリシステムとの間で転送される情報の一例を説明するための図である。
【
図7】
図7は、第1の実施形態の転記処理の一例であるガベージコレクションの動作の一例を説明するためのフローチャートである。
【
図8】
図8は、第1の実施形態の転記処理の別の一例であるエビクションの動作の一例を説明するためのフローチャートである。
【
図9】
図9は、第1の実施形態の動作モードの遷移にかかる動作の一例を説明するためのフローチャートである。
【
図10】
図10は、第2の実施形態のガベージコレクションにおける、転記元のブロックBLKの選択方法の一例を説明するための図である。
【
図11】
図11は、第2の実施形態の動作モードの遷移にかかる動作の一例を説明するためのフローチャートである。
【
図12】
図12は、第3の実施形態のコントローラが生成する消費電力量計画の一例を示す模式的な図である。
【
図13】
図13は、第3の実施形態の動作モードの遷移にかかる動作の一例を説明するためのフローチャートである。
【
図14】
図14は、第3の実施形態のメモリシステムの構成の一例を示す模式的な図である。
【
図15】
図15は、第3の実施形態のメモリシステムが消費電力に関する情報を受信する方法の一例を説明するための図である。
【
図16】
図16は、第3の実施形態にかかる消費電力量計画の変更例を説明するための図である。
【
図17】
図17は、第4の実施形態のコントローラが生成する消費電力量計画の一例を示す模式的な図である。
【
図18】
図18は、第4の実施形態の動作モードの遷移にかかる動作の一例を説明するためのフローチャートである。
【
図19】
図19は、第5の実施形態の動作モードの遷移にかかる動作の一例を説明するためのフローチャートである。
【
図20】
図20は、第6の実施形態にかかるメモリシステムの電力量制限モードでの動作の一例を示すフローチャートである。
【
図21】
図21は、第7の実施形態にかかるメモリシステムの電力量制限モードでの動作の一例を示すフローチャートである。
【
図22】
図22は、第8の実施形態にかかるメモリシステムの電力量制限モードでの動作の一例を示すフローチャートである。
【
図23】
図23は、第9の実施形態のメモリシステムがホスト装置に対して動作ステータス情報を送信する方法の一例を説明するための図である。
【発明を実施するための形態】
【0007】
以下に添付図面を参照して、実施形態にかかるメモリシステム、情報処理システム、およびホスト装置を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【0008】
(第1の実施形態)
図1は、第1の実施形態の情報処理システム10の構成の一例を示す模式的な図である。
【0009】
情報処理システム10は、例えば各種コンピュータやサーバなどである。各種コンピュータのうちポータブルなコンピュータは、ラップトップ型のパーソナルコンピュータ、携帯電話、スマートフォン、ポータブルな音楽プレーヤー、撮像装置、などである。ホスト装置2は、例えば情報処理システム10に具備されるプロセッサである。メモリシステム1は、例えばSSDである。メモリシステム1は、各種コンピュータやサーバなどに外部接続されてもよい。
【0010】
メモリシステム1は、ホスト装置2と通信インタフェース3で接続される。ホスト装置2は、メモリシステム1をデータのストレージとして利用し得る。通信インタフェース3の規格は、特定の規格に限定されない。例えば、SAS(Serial Attached SCSI)、SATA(Serial ATA)、PCI express(PCIe、登録商標)、またはNVM express(NVMe、登録商標)などが通信インタフェース3の規格として採用され得る。
【0011】
メモリシステム1は、ホスト装置2からアクセスコマンド(例えば、ライトコマンドまたはリードコマンド)を受信する。メモリシステム1は、ライトコマンドに応じて、ライトが要求されたユーザデータを記憶する。メモリシステム1は、リードコマンドに応じて、リードが要求されたユーザデータをホスト装置2に送信する。
【0012】
なお、アクセスコマンドは、論理アドレスを含む。メモリシステム1は、ホスト装置2に論理的なアドレス空間を提供する。論理アドレスは、当該アドレス空間における位置を示す。ホスト装置2は、論理アドレスを用いることによって、ユーザデータをライトする位置またはユーザデータの読み出しを行う位置を指定する。つまり、論理アドレスは、ホスト装置2から指定される位置情報である。
【0013】
メモリシステム1は、コントローラ100とNANDメモリ200とを備える。コントローラ100はメモリバス300によってNANDメモリ200に接続されている。NANDメモリ200は、不揮発性メモリの一例である。
【0014】
コントローラ100は、NANDメモリ200の制御を実行する。
【0015】
コントローラ100は、ホスト装置2からライトが要求されたデータをNANDメモリ200にライトしたり、ホスト装置2からリードが要求されたデータをNANDメモリ200からリードしてホスト装置2に送ったりする。つまり、コントローラ100は、ホスト装置2とNANDメモリ200との間のデータ転送を実行する。ホスト装置2とNANDメモリ200との間のデータ転送を、ホストアクセス処理、と表記する。
【0016】
さらに、コントローラ100は、NANDメモリ200内でデータを転記する転記処理を実行する。転記処理は、ガベージコレクションまたはエビクション(eviction)、などを含む。転記処理の詳細については後述する。
【0017】
コントローラ100は、プロセッサ101、ホストインタフェース(ホストI/F)102、RAM(Random Access Memory)103、バッファメモリ104、メモリインタフェース(メモリI/F)105、および内部バス106を備える。プロセッサ101、ホストI/F102、RAM103、バッファメモリ104、およびメモリI/F105は、内部バス106に電気的に接続されている。
【0018】
なお、コントローラ100は、SoC(System-on-a-Chip)として構成され得る。または、コントローラ100は、複数のチップによって構成され得る。RAM103またはバッファメモリ104は、コントローラ100の外部に配されていてもよい。
【0019】
ホストI/F102は、ホスト装置2から受信したアクセスコマンドおよびユーザデータなどを内部バス106に出力する。ユーザデータは、内部バス106を介してバッファメモリ104に送られる。
【0020】
また、ホストI/F102は、NANDメモリ200から読み出されたユーザデータおよびプロセッサ101からの応答などをホスト装置2へ送信する。
【0021】
バッファメモリ104は、ホスト装置2とNANDメモリ200との間のデータ転送のためのバッファとして機能するメモリである。バッファメモリ104は、例えば、SRAM(Static Random Access Memory)またはSDRAM(Synchronous Dynamic Random Access Memory)などの揮発性メモリによって構成される。なお、バッファメモリ104を構成するメモリの種類はこれらに限定されない。バッファメモリ104は、任意の種類の不揮発性メモリによって構成されてもよい。
【0022】
メモリI/F105は、ユーザデータ等をNANDメモリ200にライトする処理およびNANDメモリ200からリードする処理を、プロセッサ101からの指示に基づいて制御する。
【0023】
プロセッサ101は、コンピュータプログラムを実行することができる回路である。プロセッサ101は、例えばCPU(Central Processing Unit)である。プロセッサ101は、予め所定位置(例えばNANDメモリ200)に格納されていたファームウェアプログラムに基づいてコントローラ100の各構成要素を統括的に制御し、これによってホストアクセス処理および転記処理を含む種々の処理を実現する。
【0024】
なお、プロセッサ101が実行する処理の一部または全部は、ハードウェア回路によって実行されてもよい。プロセッサ101が実行する処理の一部または全部は、FPGA(Field-Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)によって実行されてもよい。
【0025】
RAM103は、バッファ、キャッシュ、またはワーキングメモリとしての機能をプロセッサ101に提供する。RAM103は、DRAM(Dynamic Random Access Memory)、SRAM、またはこれらの組み合わせによって構成される。なお、RAM103を構成するメモリの種類はこれらに限定されない。
【0026】
なお、コントローラ100は、これらの構成要素に替えて、またはこれらの構成要素に加えて、任意の構成要素を備え得る。例えば、コントローラ100は、ユーザデータに対して所定の処理(例えば符号化または復号化)を行う回路を備えていてもよい。
【0027】
NANDメモリ200は、ユーザデータ等を不揮発に記憶できる。NANDメモリ200は、1以上のメモリチップ201によって構成される。ここでは一例として、NANDメモリ200は、4つのメモリチップ201-0,201-1,201-2,201-3によって構成されている。メモリチップ201は、NAND型フラッシュメモリのメモリチップである。
【0028】
図2は、第1の実施形態にかかるメモリチップ201の構成の一例を示す模式的な図である。メモリチップ201は、周辺回路210およびメモリセルアレイ211を備える。
【0029】
メモリセルアレイ211は、各々が複数の不揮発性メモリセルトランジスタの集合である複数のブロックBLK(BLK0、BLK1、BLK2、…)を備える。各ブロックBLKは、各々がワード線およびビット線に関連付けられたメモリセルトランジスタの集合である複数のストリングユニットSU(SU0、SU1、SU2、…)を備える。ストリングユニットSUの各々は、複数のメモリセルトランジスタが直列接続された複数のNANDストリング212を備える。なお、ストリングユニットSU内のNANDストリング212の数は任意である。
【0030】
周辺回路210は、例えば、ロウデコーダ、カラムデコーダ、センスアンプ、ラッチ回路、および電圧発生回路を含む。周辺回路210は、コントローラ100からの指示に応じて、メモリセルアレイ211に対し、当該指示に対応した動作を実行する。コントローラ100からの指示は、ライト、リード、およびイレースを含む。
【0031】
図3は、第1の実施形態にかかるブロックBLKの回路構成を示す模式的な図である。なお、各ブロックBLKは、同一の構成を有している。ブロックBLKは、例えば4つのストリングユニットSU0~SU3を有する。各ストリングユニットSUは、複数のNANDストリング212を含む。
【0032】
NANDストリング212の各々は、例えば64個のメモリセルトランジスタMT(MT0~MT63)および選択トランジスタST1、ST2を含んでいる。メモリセルトランジスタMTは、制御ゲートと電荷蓄積層とを備え、データを不揮発に保持する。そして64個のメモリセルトランジスタMT(MT0~MT63)は、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に直列接続されている。なお、メモリセルトランジスタMTは、電荷蓄積層に絶縁膜を用いたMONOS型であってもよいし、電荷蓄積層に導電膜を用いたFG型であってもよい。さらに、NANDストリング212内のメモリセルトランジスタMTの個数は64個に限定されない。
【0033】
ストリングユニットSU0~SU3の各々における選択トランジスタST1のゲートは、各々の選択ゲート線SGD0~SGD3に接続される。これに対してストリングユニットSU0~SU3の各々における選択トランジスタST2のゲートは、例えば選択ゲート線SGSに共通接続される。ストリングユニットSU0~SU3の各々における選択トランジスタST2のゲートは、ストリングユニットSU毎に異なる選択ゲート線SGS0~SGS3(不図示)に接続されてもよい。同一のブロックBLK内にある各メモリセルトランジスタMT0~MT63の制御ゲートは、各々のワード線WL0~WL63に共通接続される。
【0034】
ストリングユニットSU内にある各NANDストリング212の選択トランジスタST1のドレインは、各々異なるビット線BL(BL0~BL(L-1)、但しLは2以上の自然数)に接続される。また、ビット線BLは、複数のブロックBLK間で各ストリングユニットSU内にある1つのNANDストリング212を共通に接続する。更に、各選択トランジスタST2のソースは、ソース線SLに共通に接続されている。
【0035】
つまりストリングユニットSUは、各々が異なるビット線BLに接続され、且つ同一の選択ゲート線SGDに接続された複数のNANDストリング212の集合である。またブロックBLKは、ワード線WLを共通にする複数のストリングユニットSUの集合である。そしてメモリセルアレイ211は、少なくとも1のビット線BLを共通にする複数のブロックBLKの集合である。
【0036】
周辺回路210によるライトおよびリードは、1つのストリングユニットSUにおける1つのワード線WLに接続されたメモリセルトランジスタMTに対して、一括して実行され得る。ライトおよびリードの際に、一括して選択されるメモリセルトランジスタMTの群をメモリセルグループMCGと表記する。そして、1つのメモリセルグループMCGにライトされる、あるいはリードされる1ビットのデータの集まりの単位をページと表記する。
【0037】
周辺回路210によるイレースは、ブロックBLK単位で実行される。即ち、1つのブロックBLKに格納された全てのデータは、まとめてイレースされる。
【0038】
なお、メモリセルアレイ211の構成は、
図2および
図3に示された構成に限定されない。例えば、メモリセルアレイ211は、NANDストリング212が2次元的に又は3次元的に配列された構成を有していてもよい。
【0039】
メモリセルアレイ211に対するライトにおいては、周辺回路210は、ライト先のページを構成する各メモリセルトランジスタMTの電荷蓄積層に、データに対応した量の電荷を注入する。そして、メモリセルアレイ211からのリードにおいては、周辺回路210は、リード先のページを構成する各メモリセルトランジスタMTから、電荷蓄積層に蓄積された電荷量に応じたデータを読み出す。
【0040】
各メモリセルトランジスタMTは、n(n≧1)ビットの値を保持可能である。nが1であるモードは、SLC(Single Level Cell)と称される。各メモリセルトランジスタMTにnビットの値が保持される場合、メモリセルグループMCG当たりの記憶容量はnページ分のサイズに等しくなる。nが2であるモードは、MLCと称される。nが3であるモードは、TLCと称される。nが4であるモードは、QLC(Quad Level Cell)と称される。1メモリセルにnビットの値を保持するこれらのモードを、記憶モードと表記する。
【0041】
各メモリセルトランジスタMTのしきい値電圧は、周辺回路210によって一定の範囲内でコントロールされる。しきい値電圧のコントローラブルな範囲は、2のn乗の数の区分に分割され、各区分にそれぞれ異なるnビットの値がアサインされる。
【0042】
図4は、第1の実施形態の種々の記憶モードにおける各区分を説明する図である。
図4に示すように、しきい値電圧の範囲(コントローラブルな範囲)は、複数の区分4に分割される。例えば、SLCの場合、しきい値電圧の範囲は、2つの区分4に分割される。MLCの場合、しきい値電圧の範囲は、4つの区分4に分割される。TLCの場合、しきい値電圧の範囲は、8つの区分4に分割される。QLCの場合、しきい値電圧の範囲は、16個の区分4に分割される。1メモリセルに保持される値のビット数が多いほど、各区分4の範囲が狭い。各区分4には、値がアサインされる。SLCの場合、低電圧側の区分4に値“1”がアサインされ、高電圧側の区分4に値“0”がアサインされる。MLCの場合、最も低電圧側の区分4に値“11”がアサインされ、他の3つの区分4には、電圧の順番に、それぞれ、“01”、“00”、“10”がアサインされる。なお、各区分4への値のアサイン方法は上記の例に限定されない。なお、以降、n、つまり1つのメモリセルトランジスタMTに保持される値のビット数を、レベル数、と表記することがある。
【0043】
メモリセルアレイ211に対するライトにおいては、周辺回路210は、ライト先のページを構成する各メモリセルトランジスタMTの電荷蓄積層に、ライト対象のデータがアサインされた区分4に対応した量の電荷を注入する。メモリセルアレイ211からのリードにおいては、周辺回路210は、リード先のページを構成する各メモリセルトランジスタMTのしきい値電圧が属する区分4を判定し、判定によって取得した区分4にアサインされたデータを、リードデータとして出力する。
【0044】
メモリセルアレイ211に対するイレースにおいては、周辺回路210は、メモリセルアレイ211の基板側にイレース電圧を印加する。そして、周辺回路210は、イレース対象のブロックBLKの全てのワード線WLを接地電位に導通させる。すると、選択されたブロックBLK内の各メモリセルトランジスタMTにおいては、電荷蓄積層に蓄えられていた電荷が放電される。その結果、選択されたブロックBLK内の各メモリセルトランジスタMTの状態は、データがイレースされたと見なされる状態(即ち最も低電圧側の区分4)に遷移する。
【0045】
メモリシステム1は、単一の記憶モードでのみリードおよびライトが可能に構成され得る。または、メモリシステム1は、動作中に記憶モードの切り替えが可能に構成され得る。記憶モードの切り替えが可能である場合、切り替えの単位の記憶領域の範囲は任意である。例えば、メモリシステム1は、ブロックBLK単位で記憶モードの切り替えが可能であってもよい。
【0046】
メモリシステム1が、動作中における記憶モードの切り替えが可能に構成される場合、メモリシステム1が備える記憶領域の内の一部(例えば一部のブロックBLK)の記憶モードが第1の記憶モードに固定され、他の一部(例えば他の一部のブロックBLK)の記憶モードが第1の記憶モードと異なる第2の記憶モードに固定され、メモリシステム1は、使用したい記憶モードに応じてライト先のブロックBLKを選択してもよい。または、メモリシステム1は、動作中に記憶領域(例えば各ブロックBLK)の記憶モードを複数の記憶モードの間で変更することが可能に構成されてもよい。
【0047】
以降の説明では、一例として、メモリシステム1は、SLCとTLCとの間で記憶モードを切り替えることが可能に構成されていることとする。
【0048】
続いて、ブロックBLKの状態遷移について説明する。
図5は、第1の実施形態のブロックBLKの状態遷移の一例を示す図である。ハッチングされた矢印は、ブロックBLKの状態遷移を示しており、実線の矢印は、データの移動を示している。
【0049】
ブロックBLKの状態としては、少なくとも、オープンブロック、アクティブブロック、およびフリーブロックがある。1以上のアクティブブロックは、アクティブブロックプールを構成し、1以上のフリーブロックは、フリーブロックプールを構成する。
【0050】
オープンブロックとは、データの書き込み途中のブロックである。即ち、オープンブロックは、データが書き込まれ得る領域を残した状態にあるブロックである。
【0051】
アクティブブロックは、データの書き込みが終了したブロックのうちの、まだ再利用できないブロックである。データの書き込みが終了したブロックのうちの、有効なユーザデータが格納されているブロックは、アクティブブロックとして管理される。再利用とは、オープンブロックに遷移させることをいう。
【0052】
フリーブロックは、有効なユーザデータが格納されていないブロックである。フリーブロックは、再利用可能なブロックである。
【0053】
例えば、オープンブロックに1ブロックBLK分のデータがライトされた後、そのオープンブロックはアクティブブロックに遷移する。アクティブブロックに格納されているデータは、有効な状態と無効な状態とのうちの何れかである。
【0054】
アクティブブロックに或るデータ(第1のデータと表記する)が格納されている状態で、ホスト装置2から第1のデータが送られてきた際に指定された論理アドレス値と同一の論理アドレス値が指定されて第2のデータが送られてきた場合、コントローラ100は、オープンブロックの空のページに第2のデータを書き込み、アクティブブロックに格納されている第1のデータを無効なデータとして管理する。よって、アクティブブロックに格納されているデータには、有効なユーザデータと無効なユーザデータとが混在し得る。
【0055】
なお、ホスト装置2が、古いデータをメモリシステム1に送った際に指定した論理アドレス値と同一の論理アドレス値を指定して新しいデータを送ることを、書き換え(rewrite)と表記する。
【0056】
アクティブブロックは、ガベージコレクションによってフリーブロックに遷移する。ガベージコレクションは、アクティブブロックであるブロックBLKに格納されている有効なデータをオープンブロックであるブロックBLKに転記(transcribe)して、転記元のブロックBLKに格納されている全てのデータを無効化する処理をいう。これによって、転記元のブロックBLKは、アクティブブロックからフリーブロックに遷移する。なお、転記は、転送、または移動と換言することができる。
【0057】
フリーブロックは、格納されているデータがイレースされた後、オープンブロックに遷移する。
【0058】
なお、データが有効とは、そのデータが格納されている位置が何れかの論理アドレス値に対応付けられていることをいう。データが無効とは、そのデータが格納されている位置が何れの論理アドレス値にも対応付けられていないことをいう。また、「空の」状態とは、ここでは、無効なデータおよび有効なデータの何れも記憶されていない状態をいう。即ち、空のページは、データの書き込みが可能な空き領域である。なお、ブロックBLK内の位置と論理アドレス値との対応関係は、コントローラ100が維持および更新する。
【0059】
ホストアクセス処理と、転記処理と、のそれぞれのためにオープンブロックが個別に用意されていてもよい。ホストアクセス処理用のオープンブロックと転記処理用のオープンブロックとが用意されてもよい。ブロックBLK単位で記憶モードの切り替えが可能である場合、オープンブロックは、記憶モード毎に用意されてもよい。
【0060】
転記処理は、ガベージコレクションの他に、エビクションを含む。エビクションは、メモリシステム1が2以上の異なる記憶モードが使用可能に構成された場合に実行される。
【0061】
例えば第1の記憶モードと、第1の記憶モードよりもレベル数が小さい第2の記憶モードとの間でライトの際の記憶モードを切り替えることが可能に構成されたメモリシステムについて考える。そのようなメモリシステムにおいて、第2の記憶モードでの書き込みの場合、第1の記憶モードでの書き込みの場合に比べて、多くの容量の記憶領域が必要になる。よって、第2の記憶モードでの書き込みが行われると、第1の記憶モードでの書き込みが行われる場合に比べて、フリーブロックの消費量が多くなるとともに、メモリシステムに書き込み可能な合計のデータ量が少なくなる。そこで、コントローラは、第2の記憶モードでのデータの書き込みが完了すると、後に、当該データを読み出して、読み出した当該データを第1の記憶モードで書き戻す処理を実行する。これによって、フリーブロックの数が回復するとともに、メモリシステムに書き込み可能な合計のデータ量が回復する。エビクションは、第2の記憶モードでのデータの書き込みが完了した後に、当該データを読み出して、読み出した当該データを第1の記憶モードで書き戻す処理である。
【0062】
エビクションでは、例えば、第2の記憶モードでデータが書き込まれたアクティブブロックが転記元として選択され、選択された転記元から有効データが読み出される。そして、読み出された有効データは、他のブロックBLK(オープンブロック)に、第1の記憶モードで書き込まれる。転記元のブロックBLK内の全ての有効なデータの移動が完了すると、転記元のブロックBLKは、アクティブブロックからフリーブロックに遷移する。よって、エビクションによってもフリーブロックが生成されることになる。
【0063】
ホスト装置2は、メモリシステム1の消費電力量を制御したい場合がある。例えば情報処理システム10がバッテリを備えたポータブルなコンピュータである場合、情報処理システム10が電源に接続されているか否かなどによって、メモリシステム1の消費電力量を制御することが考えられる。情報処理システム10が電源に接続されている場合、情報処理システム10は、電源からの豊富な電力を使用することができるので、メモリシステム1が必要とする電力量を十分にメモリシステム1に供給することができる。情報処理システム10が電源に接続されておらず、バッテリに蓄えられたエネルギーによって動作している場合、情報処理システム10は、情報処理システム10が電源に接続されている場合に比べて、メモリシステム1に供給する電力量を少なくする。
【0064】
実施形態では、メモリシステム1は、ホスト装置2から電力量に関連する情報を受信することが可能に構成されている。第1の実施形態では、メモリシステム1は、電力量に関連する情報の一例として、電力量制限指示を受信することができる。メモリシステム1の動作モードは、電力量制限指示を受信すると、消費電力量が抑制された動作モードに遷移する。なお、消費電力量が抑制されていない動作モードを、通常モードと表記する。消費電力量が抑制された動作モードを、電力量制限モード、と表記する。
【0065】
コントローラ100は、電力量制限モードにおいては、通常モードにおける場合に比べて、転記処理の処理量を減らす。転記処理の処理量を減らす方法は特定の方法に限定されない。
【0066】
一例では、コントローラ100は、転記処理の実行頻度を、通常モードと電力量制限モードとで異ならせる。即ち、コントローラ100は、電力量制限モードにおける転記処理の実行頻度を、通常モードにおける転記処理の実行頻度よりも低くする。電力量制限モードにおいては、通常モードにおける場合に比べ、転記処理の実行頻度が低くされた分、転記処理の処理量が減る。電力量制限モードにおいては、通常モードにおける場合に比べ、転記処理の処理量が減る分、メモリシステム1の消費電力量が抑制される。
【0067】
別の例では、コントローラ100は、転記処理の開始条件を、通常モードと電力量制限モードとで異ならせる。例えば、フリーブロックの数が判定しきい値を下回ることがガベージコレクション(またはエビクション)の開始条件である場合、通常モードと電力量制限モードとで異なる値を判定しきい値として使用する。具体的には、コントローラ100は、通常モードにおいては、第1設定値を判定しきい値として使用し、電力量制限モードにおいては、第1設定値よりも小さい第2設定値を判定しきい値として使用する。これによって、電力量制限モードにおいては、通常モードにおける場合に比べ、ガベージコレクション(またはエビクション)が実行され難くなり、ガベージコレクション(またはエビクション)の処理量が減る。電力量制限モードにおいては、通常モードにおける場合に比べ、ガベージコレクション(またはエビクション)の処理量が減る分、メモリシステム1の消費電力量が抑制される。
【0068】
電力量制限モードにおいて処理量が減らされる対象となる処理は、全ての転記処理であってもよいし、一部の転記処理だけであってもよい。例えば、ガベージコレクションのみが対象であってもよいし、エビクションのみが対象であってもよいし、両方が対象であってもよい。
【0069】
このように、コントローラ100は、動作モードに応じた動作を実行する。つまり、メモリシステム1の動作モードは、コントローラ100の動作モードと考えることができる。以降では、コントローラ100の動作モードは、メモリシステム1の動作モードを意味することとする。
【0070】
続いて、第1の実施形態にかかる情報処理システム10の動作を説明する。
【0071】
図6は、第1の実施形態のホスト装置2とメモリシステム1との間で転送される情報の一例を説明するための図である。なお、
図6の説明においては、初期状態においてはメモリシステム1の動作モードは通常モードであることとしている。
【0072】
ホスト装置2は、通常モードにあるメモリシステム1に対してデータのリードやデータのライトを実行することができる(S101)。ホスト装置2は、メモリシステム1の動作モードを電力量制限モードに遷移させたい場合、メモリシステム1に電力量制限指示を送信する(S102)。
【0073】
例えばNVMe(登録商標)などでは、全てのコマンド値に対して実際の動作が定義されている訳ではない。動作が未定義のコマンド値をベンダーが任意の動作にアサインすることができる。このようなベンダーが任意の動作にアサインすることができるコマンド値は、ベンダースペシフィックと呼ばれている。ベンダーは、通信インタフェース3の規格によって用意されたベンダースペシフィックなコマンド値を、電力量制限指示にアサインすることができる。後述の電力量制限解除指示にも、ベンダースペシフィックな別のコマンド値をアサインすることができる。
【0074】
または、電力量制限指示(および電力量制限解除指示)は、通信インタフェース3の規格に組み込まれていてもよい。
【0075】
または、ホスト装置2とメモリシステム1とは、電力量制限指示(および電力量制限解除指示)を転送するための専用の信号線で接続され、ホスト装置2は、当該専用の信号線を介して電力量制限指示(および電力量制限解除指示)をメモリシステム1に送信してもよい。
【0076】
メモリシステム1は、電力量制限指示を受信すると、通常モードから電力量制限モードに遷移する。ホスト装置2は、電力量制限モードのメモリシステム1に対してデータのリードやデータのライトを実行することができる(S103)。
【0077】
ホスト装置2は、メモリシステム1の動作モードを電力量制限モードから通常モードに戻したい場合、メモリシステム1に電力量制限解除指示を送信する(S104)。メモリシステム1は、電力量制限解除指示を受信すると、電力量制限モードから通常モードに遷移する。ホスト装置2は、通常モードのメモリシステム1に対してデータのリードやデータのライトを実行することができる(S105)。
【0078】
以降、ホスト装置2およびメモリシステム1は、S101~S105と同様の動作を繰り返すことができる。
【0079】
図7は、第1の実施形態の転記処理の一例であるガベージコレクションの動作の一例を説明するためのフローチャートである。
【0080】
コントローラ100は、ガベージコレクションを実行するか否かを判定する(S201)。ガベージコレクションを実行するか否かの判定の方法は、特定の方法に限定されない。例えば前述したように、コントローラ100は、ガベージコレクションを実行するか否かを、フリーブロックの数と判定しきい値との比較に基づいて判定することができる。または、コントローラ100は、ガベージコレクションの実行頻度が所定の頻度となるように、ガベージコレクションを実行するか否かを判定することができる。
【0081】
ガベージコレクションを実行しないと判定された場合(S201:No)、コントローラ100は、S201の判定処理を再び実行する。
【0082】
ガベージコレクションを実行すると判定された場合(S201:Yes)、コントローラ100は、1つのアクティブブロックを転記元のブロックBLKとして選択する(S202)。
【0083】
そして、コントローラ100は、転記元のブロックBLKに格納されている全ての有効なデータを、転記先のブロックBLKに転記する(S203)。つまり、コントローラ100は、転記元のブロックBLKに格納されている全ての有効なデータを転記先のブロックBLKにコピーし、転記元の格納されている全てのデータを無効化する。これによって、転記元のブロックBLKに格納されていた有効なデータは、転記先のブロックBLKに転記される。なお、転記先のブロックBLKは、オープンブロックとして設定されたブロックBLKである。
【0084】
そして、コントローラ100は、転記元のブロックBLKを、フリーブロックに設定する(S204)。
【0085】
そして、制御がS201に移行する。
【0086】
図8は、第1の実施形態の転記処理の別の一例であるエビクションの動作の一例を説明するためのフローチャートである。
【0087】
コントローラ100は、エビクションを実行するか否かを判定する(S301)。エビクションを実行するか否かの判定の方法は、特定の方法に限定されない。例えば前述したように、コントローラ100は、エビクションを実行するか否かを、フリーブロックの数と判定しきい値との比較に基づいて判定することができる。または、コントローラ100は、エビクションの実行頻度が所定の頻度となるように、ガベージコレクションを実行するか否かを判定することができる。
【0088】
エビクションを実行しないと判定された場合(S301:No)、コントローラ100は、S301の判定処理を再び実行する。
【0089】
エビクションを実行すると判定された場合(S301:Yes)、コントローラ100は、SLCモードでデータがライトされた1つのアクティブブロックを、転記元のブロックBLKとして選択する(S302)。
【0090】
そして、コントローラ100は、転記元のブロックBLKに格納されている全ての有効なデータを、転記先のブロックBLKにTLCモードで転記する(S303)。つまり、コントローラ100は、転記元のブロックBLKに格納されている全ての有効なデータを転記先のブロックBLKにTLCモードでライトし、転記元の格納されている全てのデータを無効化する。これによって、転記元のブロックBLKに格納されていた有効なデータは、転記先のブロックBLKに転記せしめられる。なお、転記先のブロックBLKは、オープンブロックとして設定されたブロックBLKであり、かつデータがTLCモードでライトされるブロックBLKである。
【0091】
そして、コントローラ100は、転記元のブロックBLKを、フリーブロックに設定する(S304)。
【0092】
そして、制御がS301に移行する。
【0093】
図9は、第1の実施形態の動作モードの遷移にかかる動作の一例を説明するためのフローチャートである。なお、
図9の説明においては、初期状態でのメモリシステム1の動作モードは通常モードであることとしている。
【0094】
コントローラ100は、ホスト装置2から電力量制限指示を受信したか否かを判定する(S401)。電力量制限指示を受信していないと判定された場合(S401:No)、コントローラ100は、S401の判定処理を再び実行する。
【0095】
電力量制限指示を受信したと判定された場合(S401:Yes)、コントローラ100は、通常モードから電力量制限モードに遷移する(S402)。つまり、コントローラ100は、転記処理の処理量を低減する。
【0096】
S402の後、コントローラ100は、ホスト装置2から電力量制限解除指示を受信したか否かを判定する(S403)。電力量制限解除指示を受信していないと判定された場合(S403:No)、コントローラ100は、S403の判定処理を再び実行する。
【0097】
電力量制限解除指示を受信したと判定された場合(S403:Yes)、コントローラ100は、電力量制限モードから通常モードに遷移する(S404)。つまり、コントローラ100は、転記処理の処理量の低減を解除する。
【0098】
そして、制御がS401に移行する。
【0099】
なお、以上の説明においては、メモリシステム1は、電力量制限解除指示に応じて電力量制限モードから通常モードに遷移した。電力量制限モードから通常モードに遷移するためのトリガは、電力量制限解除指示の受信のみに限定されない。コントローラ100は、自律的にメモリシステム1の動作モードを電力量制限モードから通常モードに遷移させてもよい。例えば、メモリシステム1の動作モードが電力量制限モードに遷移してからの経過時間が所定時間に達したとき、コントローラ100は、メモリシステム1の動作モード電力量制限モードから通常モードに遷移させてもよい。または、コントローラ100は、転記処理の処理量の低減を継続することが困難になった場合に、メモリシステム1の動作モード電力量制限モードから通常モードに遷移させてもよい。
【0100】
以上述べたように、第1の実施形態によれば、コントローラ100は、ホスト装置2とNANDメモリ200との間でデータを転送するデータ転送処理と、NANDメモリ200内でデータを転記する転記処理と、を実行することができる。そして、コントローラ100は、ホスト装置2からの電力量制限指示に応じて転記処理の処理量を減らす。
【0101】
メモリシステム1が上記のように構成されたことにより、ホスト装置2によるメモリシステム1の消費電力量の制御が可能となる。
【0102】
(第2の実施形態)
第2の実施形態においては、転記処理のうちのガベージコレクションの動作が、通常モードと電力量制限モードとで異なる。より具体的には、ガベージコレクションにおいて転記元のブロックBLKを選択するポリシーが、通常モードと電力量制限モードとで異なる。第2の実施形態では、第1の実施形態と異なる点について説明し、第1の実施形態と同じ点については説明を省略するか、または簡略的に説明する。なお、第2の実施形態は、第1の実施形態と併用され得る。
【0103】
図10は、第2の実施形態のガベージコレクションにおける、転記元のブロックBLKの選択方法の一例を説明するための図である。
【0104】
図10には、複数(ここでは一例として6つ)のブロックBLKが描画されている。当該6つのブロックBLKは、アクティブブロックであり、メモリシステム1のアクティブブロックは当該6つのブロックBLKで全部であることとする。また、
図10には、6つのブロックBLKが、アクティブブロックに遷移した時刻(換言すると、最後にデータがライトされた時刻)の順番に配列されている。6つのブロックBLKを、ブロックBLKa~BLKfと表記する。ここでは、ブロックBLKaが、アクティブブロックに遷移した時刻が最も新しく、ブロックBLKa、ブロックBLKb、ブロックBLKc、ブロックBLKd、ブロックBLKeの順に、アクティブブロックに遷移した時刻が新しい。ブロックBLKa~BLKfのそれぞれにおいて、斜線部の面積は、格納されている有効なデータの量に対応する。
【0105】
コントローラ100(例えばプロセッサ101)は、各ブロックBLKがアクティブブロックとなった時刻の順番および各ブロックBLKに格納されている有効なデータの量を記録し、記録している内容を随時、更新する。
【0106】
電力量制限モードにおいては、コントローラ100は、格納されている有効なデータの量が最も少ないブロックBLKをガベージコレクションにおける転記元のブロックBLKとして選択する。
図10の例では、コントローラ100は、例えば、それぞれはアクティブブロックである6つのブロックBLKa~BLKfのうちのブロックBLKcを転記元のブロックBLKとして選択する。
【0107】
ガベージコレクションにおいては、転記元のブロックBLKから転記先のブロックBLKに有効なデータが移動されることによって、転記元のブロックBLKをフリーブロックにすることができる。転記元のブロックBLKに格納されている有効なデータの量が少ないほど、1個のフリーブロックを生成するために移動されるデータの量が少ないので、1個のフリーブロックを生成するために必要となる電力量が少ない。電力量制限モードにおいては、格納されている有効なデータの量が最も少ないブロックBLKがガベージコレクションにおける転記元のブロックBLKとして選択されることで、ガベージコレクションに要する電力量が抑制される。
【0108】
なお、電力量制限モードにおいては、格納されている有効なデータの量が最も少ないブロックBLKが必ずしも転記元のブロックBLKとして選択されないケースがあってもよい。
【0109】
例えば、コントローラ100は、各ブロックBLKに格納されている有効なデータの量を正確でない粗い粒度の数値情報として記録してもよい。そのような場合、格納されている有効なデータの量が少ないブロックBLKを見つけ出すことが可能である。
【0110】
別の例では、コントローラ100によって記録された各ブロックBLKに格納されている有効なデータの量の更新のタイミングと、各ブロックBLKに格納されている有効なデータの量の変動のタイミングと、の間にラグがあってもよい。そのような場合においても、格納されている有効なデータの量が少ないブロックBLKを見つけ出すことが可能である。
【0111】
これらの例においては、格納されている有効なデータの量が少ないブロックBLKを優先的に転記元のブロックBLKとして選択することは可能である。電力量制限モードにおいては、格納されている有効なデータの量が少ないブロックBLKを優先的に転記元のブロックBLKとして選択する限り、転記元のブロックBLKの選択方法は種々に変更され得る。
【0112】
格納されている有効なデータの量が少ないブロックBLKを優先的に転記元のブロックBLKとして選択するさらに方法の別の例では、コントローラ100は、1つのブロックBLKの容量に対して十分に小さい量をしきい値として記憶しておき、格納されている有効なデータの量と当該しきい値との比較に基づいてガベージコレクションにおける転記元のブロックBLKを選択する方法が考えられる。コントローラ100は、格納されている有効なデータの量が当該しきい値よりも少ないブロックBLKを探し、最初に見つかったブロックBLKをガベージコレクションにおける転記元のブロックBLKとして選択してもよい。
【0113】
通常モードにおいては、コントローラ100(例えばプロセッサ101)は、アクティブブロックに遷移した時刻が最も古いブロックBLK、換言すると最後にデータがライトされた時刻が最も古いブロックBLK、をガベージコレクションにおける転記元のブロックBLKとして選択する。
図10の例では、コントローラ100は、ブロックBLKfを転記元のブロックBLKとして選択する。
【0114】
アクティブブロックとなった時刻が古いブロックBLKにデータが有効な状態で残っていることは、長期間、そのデータの書き換えが実行されなかったことを意味する。このような長期間にわたって有効な状態が維持される傾向があるデータの状態をコールドと表記する。これに対し、短期間で書き換えが行われて無効になる傾向があるデータの状態を、ホットと表記する。
【0115】
コールドなデータに対する書き換えは、今後もしばらく実行されない可能性が高い。よって、アクティブブロックに遷移した時刻が最も古いブロックBLKをガベージコレクションにおける転記元のブロックBLKとして選択すると、コールドなデータをいくつかのブロックBLKにまとめることができる。コールドなデータをいくつかのブロックBLKにまとめると、全ブロックBLKの利用効率が向上し、これによって、ガベージコレクションの効率を将来的に向上させることができる。
【0116】
なお、通常モードにおいては、最後にデータがライトされた時刻が最も古いブロックBLKが必ずしもガベージコレクションにおける転記元のブロックBLKとして選択されなくてもよい。
【0117】
例えば、コントローラ100は、通常モードにおいては、最後にデータがライトされた時刻が古いブロックBLKを優先的にガベージコレクションにおける転記元のブロックBLKとして選択し得る。
【0118】
または、通常モードにおいては、コントローラ100は、最後にデータがライトされた時刻に関する条件に任意の条件を加えた複雑な判定に基づいてガベージコレクションにおける転記元のブロックBLKを選択してもよい。例えば、コントローラ100は、最後にデータがライトされた時刻が古いいくつかのブロックBLKのうちの、格納されている有効なデータの量が出来るだけ少ないブロックBLKを、ガベージコレクションにおける転記元のブロックBLKとして選択してもよい。
【0119】
図11は、第2の実施形態の動作モードの遷移にかかる動作の一例を説明するためのフローチャートである。
【0120】
図11の説明においては、コントローラ100は、電力量制限モードにおいては、一例として、格納されている有効なデータの量が最も少ないブロックBLKをガベージコレクションにおける転記元のブロックBLKとして選択することとする。また、コントローラ100は、通常モードにおいては、一例として、最後にデータがライトされた時刻が最も古いブロックBLKをガベージコレクションにおける転記元のブロックBLKとして選択することとする。また、
図11の初期状態においてはメモリシステム1の動作モードは通常モードであることとしている。
【0121】
コントローラ100(例えばプロセッサ101)は、メモリシステム1がホスト装置2から電力量制限指示を受信したか否かを判定する(S501)。メモリシステム1が電力量制限指示を受信していないと判定された場合(S501:No)、コントローラ100は、S501の判定処理を再び実行する。
【0122】
メモリシステム1が電力量制限指示を受信したと判定された場合(S501:Yes)、コントローラ100は、電力量制限モードに遷移する(S502)。電力量制限モードにおいては、コントローラ100は、格納されている有効なデータの量が最も少ないブロックBLKをガベージコレクションにおける転記元として選択するポリシーを使用する。
【0123】
S502の後、コントローラ100は、ホスト装置2から電力量制限解除指示を受信したか否かを判定する(S503)。電力量制限解除指示を受信していないと判定された場合(S503:No)、コントローラ100は、S503の判定処理を再び実行する。
【0124】
電力量制限解除指示を受信したと判定された場合(S503:Yes)、コントローラ100は、通常モードに遷移する(S504)。通常モードにおいては、コントローラ100は、最後にデータがライトされた時刻が最も古いブロックBLKをガベージコレクションにおける転記元として選択するポリシーを使用する。
【0125】
そして、制御がS501に移行する。
【0126】
このように、第2の実施形態においては、コントローラ100は、電力量制限モードにおいて、格納された有効なデータの量のみに基づくポリシーに従ってガベージコレクションにおける転記元のブロックBLKを選択する。また、コントローラ100は、通常モードにおいては、電力量制限モードにおけるポリシーと異なるポリシーに従ってガベージコレクションにおける転記元のブロックBLKを選択する。
【0127】
より具体的には、コントローラ100は、電力量制限モードにおいては、格納された有効なデータの量が少ないブロックBLKほど優先的に転記元のブロックとして選択する。
【0128】
よって、電力量制限モードにおいては、1個のフリーブロックを生成するために移動されるデータの量を少なくすることができるので、ガベージコレクションに要する電力量を抑制することができる。その結果、電力量制限モードにおいて、メモリシステム1の消費電力量を抑制することができる。
【0129】
さらに、コントローラ100は、通常モードにおいては、最後に書き込まれた時刻に基づいてガベージコレクションにおける転記元のブロックBLKを選択し得る。
【0130】
そのような場合、例えばコールドなデータをいくつかのブロックBLKにまとめておくことができるので、ガベージコレクションの効率が将来的に向上する。なお、前述したように、通常モードにおいて転記元のブロックBLKを選択するポリシーは、この例に限定されない。
【0131】
(第3の実施形態)
第3の実施形態では、コントローラ100は、ホスト装置2からの指示に基づいて消費電力量に関する計画(消費電力量計画と表記する)を生成する。そして、コントローラ100は、消費電力量の推移が消費電力量計画を満足するように、メモリシステム1の動作モードを電力量制限モードと通常モードとの間での切り替えを実行する。
【0132】
以降、第3の実施形態について説明する。第3の実施形態では、第1の実施形態と異なる点について説明し、第1の実施形態と同じ点については説明を省略するか、または簡略的に説明する。
【0133】
コントローラ100は、具体的には、ホスト装置2から、電力制限指示のほかに、予定消費電力量と、計画期間と、を受信することができる。メモリシステム1がホスト装置2から受信する予定消費電力量は、第1値の一例である。メモリシステム1がホスト装置2から受信する計画期間は、第2値の一例である。
【0134】
計画期間は、電力量制限モードでの動作が可能な期間を規定する。例えば、計画期間が「30分」であれば、計画期間の開始時刻から30分が経過するまでの間、消費電力量計画に基づき、メモリシステム1の動作モードが電力量制限モードと通常モードとの間での切り替えが実行される。
【0135】
なお、ホスト装置2から受信する計画期間は、計画期間の長さを直接に表す数値情報であってもよい。ホスト装置2から受信する計画期間は、計画期間の開始時刻を示す数値情報および終了時刻を示す数値情報の対であってもよい。ホスト装置2から受信する計画期間は、終了時刻を示す数値情報であってもよい。ホスト装置2から受信する計画期間が終了時刻を示す数値情報である場合、計画期間の開始時刻の特定方法は任意である。例えば、コントローラ100は、電力量制限指示を計画期間の開始の指示として解釈するように構成され得る。
【0136】
または、複数の数値情報が予めコントローラ100に設定され、複数の数値情報のそれぞれは、計画期間として設定可能な数値情報であり、識別子が対応付けられていてもよい。そして、ホスト装置2は、識別子を送信することによって複数の数値情報から計画期間として設定する数値情報を選択してもよい。
【0137】
予定消費電力量は、計画期間内に消費できる電力量を規定する。
【0138】
なお、ホスト装置2から受信する予定消費電力量は、予定消費電力量を直接に表す数値情報であってもよい。
【0139】
または、複数の数値情報が予めコントローラ100に設定され、複数の数値情報のそれぞれは、予定消費電力量として設定可能な数値情報であり、識別子が対応付けられていてもよい。そして、ホスト装置2は、識別子を送信することによって複数の数値情報から予定消費電力量として設定する数値情報を選択してもよい。
【0140】
コントローラ100は、予定消費電力量と、計画期間と、に基づき、消費電力量計画を作成する。
【0141】
図12は、第3の実施形態のコントローラ100が生成する消費電力量計画の一例を示す模式的な図である。横軸は、計画期間が開始してからの経過時間を示す。縦軸は、計画期間が開始してからの消費電力量を示す。
図12の例では、予定消費電力量は1000mWhであり、計画期間は30分であることとしている。
【0142】
点線は、消費電力量計画を表している。この例では、消費電力量が0mWhから1000mWhまで時間に対してリニアに増加するように、消費電力量計画が生成されている。そして、計画期間の終了時、つまり計画期間が開始してから30分が経過したタイミングに、計画期間が開始してからの消費電力量が1000mWhとなるように、消費電力量の勾配が決められている。
【0143】
コントローラ100は、電力量制限指示に応じて、消費電力量計画に基づく電力量の制御を開始する。より具体的には、コントローラ100は、メモリシステム1の動作モードを必要に応じて電力量制限モードに遷移させることによって、実際の消費電力量の推移が消費電力量計画が示す推移をできるだけ越えないようにメモリシステム1の消費電力量を制御する。つまり、消費電力量計画は、消費電力量の上限値の推移を規定する。
【0144】
コントローラ100は、消費電力量の推移が消費電力計画によって規定された上限値の推移を越えないように動作モードの切り替えを実行することによって、計画期間において予定消費電力量を超えないようにメモリシステム1の消費電力量を抑制することができる。
【0145】
図12には、メモリシステム1での実際の消費電力量の推移の一例(実線を参照)を示している。上記した制御によって、実際の消費電力量の推移が消費電力量計画によって規定された上限値の推移を越えないように制御されていることが読み取れる。
【0146】
図13は、第3の実施形態の動作モードの遷移にかかる動作の一例を説明するためのフローチャートである。
【0147】
コントローラ100は、メモリシステム1がホスト装置2から、予定消費電力量と、計画期間と、電力制限指示と、を受信したか否かを判定する(S601)。
【0148】
メモリシステム1がホスト装置2から、予定消費電力量と、計画期間と、電力制限指示と、を受信していない場合(S601:No)、コントローラ100は、S601の処理を再び実行する。
【0149】
メモリシステム1がホスト装置2から、予定消費電力量と、計画期間と、電力制限指示と、を受信した場合(S601:Yes)、コントローラ100は、予定消費電力量と、計画期間と、に基づき、消費電力量計画を生成する(S602)。
【0150】
続いて、コントローラ100は、既に受信した電力制限指示に応じて、電力量の制御を開始する。つまり、コントローラ100は、計画期間を開始する(S603)。
【0151】
計画期間では、コントローラ100は、計画期間が開始されてからの消費電力量と、消費電力量計画によって規定される上限値と、の比較に基づいて動作モードを決定する。
【0152】
より具体的には、コントローラ100は、計画期間が開始してから現在までの経過時間(時間tと表記する)が経過した時点における、消費電力量計画によって規定される消費電力量の上限値E(t)を計算する(S604)。
【0153】
E(t)は、例えば下記の式(1)を用いて計算される。なお、ここでは一例として、消費電力量計画は、
図12を用いて説明した方法で生成されていることとしている。
【0154】
E(t)=Ep*t/tp ・・・(1)
ここで、Epは予定消費電力量であり、tpは計画期間の長さである。式(1)においては、tは0以上かつtp以下の値をとることとしている。
【0155】
続いて、コントローラ100は、計画期間が開始してからの消費電力量(Ecと表記する)がE(t)よりも少ないか否かを判定する(S605)。
【0156】
EcがE(t)よりも少ない場合(S605:Yes)、コントローラ100は、通常モードで動作する(S606)。EcがE(t)よりも少なくない場合(S605:No)、コントローラ100は、電力量制限モードで動作する(S607)。
【0157】
S606またはS607の後、コントローラ100は、計画期間の終了タイミングが到来したか否かを判定する(S608)。計画期間の終了タイミングが到来していない場合(S608:No)、コントローラ100は、S604の処理を再び実行する。計画期間の終了タイミングが到来した場合(S608:Yes)、コントローラ100は、計画期間を終了する(S609)。つまり、コントローラ100の動作モードが電力量制限モードであった場合、コントローラ100は、通常モードに遷移する。コントローラ100の動作モードが通常モードであった場合、コントローラ100は、通常モードでの動作を継続する。S609によって、一連の動作が終了する。
【0158】
なお、第3の実施形態のコントローラ100の通常モードにおける動作は、第1の実施形態のコントローラ100の通常モードにおける動作または第2の実施形態のコントローラ100の通常モードにおける動作と同じであってもよい。
【0159】
第3の実施形態のコントローラ100の電力量制限モードにおける動作は、第1の実施形態のコントローラ100の電力量制限モードにおける動作または第2の実施形態のコントローラ100の電力量制限モードにおける動作と同じであってもよい。
【0160】
S604からS608までのループ処理は、計画期間に対して十分に短い時間間隔で繰り返される。よって、当該ループ処理が繰り返されることによって、消費電力量の推移が消費電力量計画として定められた推移をできるだけ越えないように動作モードの切り替えが実行される。その結果、計画期間における消費電力量が予定消費電力量を越えないように消費電力量が抑制される。
【0161】
なお、以上では、EcがE(t)と等しい場合には、コントローラ100は電力量制限モードで動作する、として説明した。EcがE(t)と等しい場合の処理はこれに限定されない。EcがE(t)と等しい場合には、コントローラ100は通常モードで動作してもよい。
【0162】
また、コントローラ100が自身の消費電力量を取得する方法は、特定の方法に限定されない。
【0163】
一例では、メモリシステム1に消費電力をモニターするための回路を設けることが考えられる。
図14は、第3の実施形態のメモリシステム1の構成の一例を示す模式的な図である。なお、
図14では、第1の実施形態に含まれる構成と同じ構成については図示を省略している。
【0164】
図14に示すように、情報処理システム10は、電源装置5を備える。メモリシステム1は、コントローラ100とNANDメモリ200のほかに、電源回路400を備える。電源回路400は、電源装置5に電力供給線6によって接続されている。電源回路400は、電源装置5から電力供給線6を介して供給される電力に基づいてコントローラ100およびNANDメモリ200を動作させるための電力を生成し、生成した電力をコントローラ100およびNANDメモリ200に供給する。
【0165】
そして、電源回路400は、測定回路401を備える。測定回路401は、メモリシステム1の消費電力を測定する。測定回路401による測定結果は、コントローラ100に送信される。コントローラ100は、得られた測定結果に基づいて消費電力量を計算する。
【0166】
測定回路401は、メモリシステム1の基板(図示せず)に設けられていてもよい。そのような場合、測定回路401は、例えば、基板に流れる電流量を測定する。測定回路401による測定結果は、コントローラ100に送信される。コントローラ100は、得られた測定結果と、定格電圧と、に基づいて消費電力量を計算する。
【0167】
別の例では、NANDメモリ200への1回のライトあたりに消費される電力量、NANDメモリ200からの1回のリードあたりに消費される電力量、通信インタフェース3において単位サイズのデータの転送あたりに消費される電力量、各構成要素が定常状態において消費する電力量、などのパラメータが所定の位置(例えばNANDメモリ200)に予め格納されている。そして、コントローラ100は、これらのパラメータと、各メモリチップ201が実際に実行したリードの回数と、各メモリチップ201が実際に実行したライトの回数と、通信インタフェース3を介したデータの転送量と、などに基づいてメモリシステム1での消費電力量を計算する。
【0168】
さらに別の例では、メモリシステム1は、メモリシステム1の消費電力に関する情報がホスト装置2から入力されるように構成されてもよい。
【0169】
図15は、第3の実施形態のメモリシステム1が消費電力に関する情報を受信する方法の一例を説明するための図である。
【0170】
図15に示されるように、ホスト装置2は、まず、予定消費電力量、計画期間、および電力制限指示を送信する(S701)。すると、メモリシステム1では、コントローラ100が計画期間を開始する(S702)。計画期間においては、ホスト装置2とメモリシステム1との間でデータの送受信が実行される合間に、ホスト装置2は、消費電力情報をメモリシステム1に送信する(S703)。
【0171】
消費電力情報は、消費電力情報が送信されるタイミングにおけるメモリシステム1の消費電力であってもよい。消費電力情報は、所定のタイミング以降にメモリシステム1で消費された電力量であってもよい。所定のタイミングは、例えば、計画期間の開始タイミングであってもよいし、前回に消費電力情報が送信されたタイミングであってもよいし、これら以外のタイミングであってもよい。消費電力情報は、メモリシステム1に流れた電流量であってもよい。つまり、消費電力情報は、メモリシステム1が消費電力量の計算に供することができる、消費電力に関する任意の物理量である。
【0172】
消費電力情報の送信は、任意のコマンドを用いることによって送信され得る。例えば、1つのベンダースペシフィックなコマンドが、消費電力情報の送信のためのコマンドとしてアサインされていてもよい。消費電力情報の送信のためのコマンドが通信インタフェース3の規格に組み込まれていてもよい。ホスト装置2とメモリシステム1とは、消費電力情報を転送するための専用の信号線で接続され、ホスト装置2は、当該専用の信号線を介して消費電力情報をメモリシステム1に送信してもよい。
【0173】
ホスト装置2からメモリシステム1への消費電力情報の送信は、定期的に、または任意のタイミングで、1回以上、実行される。コントローラ100は、ホスト装置2から受信した消費電力情報に基づいて消費電力量を計算することができる。
【0174】
計画期間が終了すると(S704)、ホスト装置2は、消費電力情報の送信を終了することができる。
【0175】
なお、ホスト装置2は、計画期間以外の期間にも消費電力情報を送信してもよい。また、メモリシステム1が消費電力情報のリクエストをホスト装置2に送信し、ホスト装置2は、当該リクエストに応じて消費電力情報の送信を行ってもよい。ホスト装置2がメモリシステム1に消費電力情報を送信するための方法は、種々に変更することが可能である。
【0176】
なお、ホスト装置2は、予定消費電力量と、計画期間と、電力量制限指示と、をまとめて送信しなくてもよい。メモリシステム1は、予定消費電力量、計画期間、またはその両方を、電力量制限指示とは異なるタイミングで受信することが可能に構成されてもよい。
【0177】
例えば、メモリシステム1は、予定消費電力量と、計画期間と、をホスト装置2から受信する。その後、メモリシステム1は、電力量制限指示を受信すると、当該電力量制限指示に応じて計画期間を開始してもよい。
【0178】
以上では、消費電力量計画の一例として、
図12の点線に示す消費電力量計画を説明した。消費電力量計画は、
図12に挙げた例に限定されない。さらに、メモリシステム1は、計画期間中に消費電力量計画が変更可能に構成されてもよい。例えば、コントローラ100は、計画期間中の任意のタイミングにおいて、既に消費した電力量から予定消費電力量まで時間に対してリニアに消費電力量の上限値が増加するような消費電力量計画を新たに生成し、新たに生成した消費電力量計画に基づく動作を開始してもよい。つまり、コントローラ100は、計画期間中に消費電力量計画を再生成してもよい。コントローラ100は、計画期間中のそれぞれ異なる複数のタイミングにおいて消費電力量計画の再生成を行ってもよい。ホスト装置2は、消費電力量計画の再生成のタイミングをメモリシステム1に指示してもよい。
【0179】
また、ホスト装置2は、計画期間中に適宜、消費電力量計画の変更を指示してもよい。
【0180】
また、計画期間の前半にリードまたはライトが集中することで計画期間の前半に電力消費が大きくなることが見込まれる場合、コントローラ100は、計画期間の前半においては消費電力量の上限値に余裕を持たせてもよい。
【0181】
図16は、第3の実施形態にかかる消費電力量計画の変更例を説明するための図である。例えば、計画期間の前半にホスト装置2からのアクセス量が多く(heavy)なるなどによって、
図16の(A)に示されるように実際の消費電力量の推移が当初生成された消費電力量計画によって規定される上限値の推移に近いかまたは越える場合がある。そのような場合、消費電力量計画によって規定される上限値がボトルネックとなることによって、ホスト装置2とメモリシステム1との間のアクセスの性能が抑制されてしまう。
【0182】
そこで、コントローラ100は、
図16の(B)の点線に示されるように、消費電力量計画を、消費電力量の上限値の推移がゼロでない正の値を切片として有する1次関数に変更する。これによって、
図16の(B)の実線に示されるように、ホスト装置2からのアクセス量が多く(heavy)なることで計画期間の前半に電力消費が大きくなったとしても、消費電力量が上限値によって抑制されることが防止される。つまり、計画期間の前半にホスト装置2とメモリシステム1との間のアクセスの性能が抑制されることが防止される。
【0183】
消費電力量計画の変更のトリガは任意である。計画期間の前半の消費電力量の上限値に余裕を持たせた関数を使用する指示をホスト装置2が送信し、コントローラ100は、当該指示に応じて消費電力計画を変更してもよい。または、コントローラ100は、実際の消費電力量の推移が当初生成された消費電力量計画によって規定される上限値の推移に近いかまたは越えることを検出した場合に、自律的に消費電力計画を変更してもよい。
【0184】
また、コントローラ100は、計画期間の開始時に
図16の(B)の点線に示されるような消費電力量計画を生成し、消費電力量計画の変更を行わなくてもよい。
【0185】
また、
図16の(B)に示した消費電力量計画の関数は、計画期間の前半において消費電力量の上限値に余裕を持たせるための関数の一例である。計画期間の前半において消費電力量の上限値に余裕を持たせるための関数として、べき関数が採用されてもよい。
【0186】
このように、第3の実施形態によれば、コントローラ100は、予定消費電力量と、計画期間と、をホスト装置2から受信する。そして、コントローラ100は、電力量制限指示に応じて、計画期間における消費電力量が予定消費電力量を越えないように、メモリシステム1の消費電力量を制御する。
【0187】
よって、ホスト装置2は、限られた期間に限られた電力量でメモリシステム1を動作させることが可能となる。
【0188】
例えば、情報処理システム10が、メモリシステム1と、揮発性メモリと、バッテリと、を備えたポータブルなコンピュータである場合がある。ホスト装置2は、バッテリに蓄えられた電力によって駆動され、かつ、バッテリの残りの電力量が乏しくなってきたとき、当該残りの電力量を用いて揮発性メモリの内容を不揮発性メモリ、つまりこの場合はメモリシステム1、に保存する。この動作は、PLP(Power Loss Protection)と称される。PLPでは、バッテリの残りの電力量が乏しいため、メモリシステム1の消費電力量をバッテリの残りの電力量に応じた電力量に抑制することが望まれる。
【0189】
第3の実施形態にかかるメモリシステム1は、計画期間において消費電力量が予定消費電力量を越えないように動作することができる。よって、ホスト装置2は、バッテリの残りの電力量に基づいて予定消費電力量および計画期間を決定し、電力量制限指示とともに予定消費電力量および計画期間をメモリシステム1に送信すれば、乏しい電力量を用いてPLPの動作を実現することが可能となる。
【0190】
また、第3の実施形態によれば、コントローラ100は、消費電力量の上限値の推移を規定する消費電力量計画を、予定消費電力量と、計画期間と、に基づいて生成し、電力量制限指示に応じて、消費電力量計画に基づいてメモリシステム1の消費電力量を抑制する。
【0191】
よって、計画期間における消費電力量が予定消費電力量を越えないようにメモリシステム1の消費電力量を制御することが可能となる。
【0192】
また、第3の実施形態によれば、コントローラ100は、通常モードと、通常モードよりも消費電力量が少ない電力量制限モードと、で動作することが可能である。そして、コントローラ100は、消費電力量計画に基づいて、通常モードと、電力量制限モードとの間の切り替えを実行する。
【0193】
よって、計画期間における消費電力量が予定消費電力量を越えないようにメモリシステム1の消費電力量を制御することが可能となる。
【0194】
また、第3の実施形態によれば、コントローラ100は、一例として、ホスト装置2からの消費電力量情報を受信して、当該消費電力量情報に基づいてメモリシステム1の消費電力量を取得することが可能に構成され得る。
【0195】
そのような場合、消費電力量にかかる物理量を測定する回路をメモリシステム1に設けることが不要となる。
【0196】
なお、計画期間を終了する条件は、ホスト装置2から第2値として指定された長さが経過することだけに限定されない。例えば、コントローラ100は、計画期間中に電力量制限解除指示を受信すると、計画期間を終了してもよい。
【0197】
(第4の実施形態)
第3の実施形態にかかる消費電力量計画では、消費電力量の上限値の推移が時間の関数として規定された。第4の実施形態にかかる消費電力量計画では、消費電力量の上限値の推移がホスト装置2からNANDメモリ200に転送されるデータの量の関数として規定される。ホスト装置2からNANDメモリ200に転送されるデータの量を、ホストライト量、と表記する。
【0198】
以降、第3の実施形態と異なる点について説明する。第3の実施形態と同じ点については説明を省略するか、または簡略的に説明する。
【0199】
第4の実施形態では、メモリシステム1は、ホスト装置2から、予定消費電力量と、予定ホストライト量と、を受信することができる。予定ホストライト量は、第2値の別の一例である。コントローラ100は、予定消費電力量と、予定ホストライト量と、に基づいて消費電力量計画を生成する。
【0200】
図17は、第4の実施形態のコントローラ100が生成する消費電力量計画の一例を示す模式的な図である。
図17において、横軸は、計画期間が開始してからのホストライト量を示す。縦軸は、計画期間が開始してからの消費電力量を示す。
図17の例では、予定消費電力量は1000mWhであり、予定ホストライト量は50GBであることとしている。
【0201】
点線は、消費電力量計画を表している。この例では、消費電力量が0mWhから1000mWhまでホストライト量に対してリニアに増加するように、消費電力量計画が生成されている。そして、計画期間の終了時、つまり計画期間が開始してからのホストライト量が50GBに達したタイミングに、計画期間が開始してからの消費電力量が1000mWhとなるように、消費電力量の勾配が決められている。
【0202】
コントローラ100は、電力量制限指示に応じて、消費電力量計画に基づく電力量の制御を開始する。より具体的には、コントローラ100は、メモリシステム1の動作モードを必要に応じて電力量制限モードに遷移させることによって、実際の消費電力量の推移が消費電力量計画によって規定される上限値の推移をできるだけ越えないようにメモリシステム1の消費電力量を制御する。
【0203】
図17には、メモリシステム1での実際の消費電力量の推移の一例(実線を参照)を示している。上記した制御によって、実際の消費電力量の推移が消費電力量計画によって規定された上限値の推移を越えないように制御されていることが読み取れる。
【0204】
図18は、第4の実施形態の動作モードの遷移にかかる動作の一例を説明するためのフローチャートである。
【0205】
コントローラ100は、メモリシステム1がホスト装置2から、予定消費電力量と、予定ホストライト量と、電力制限指示と、を受信したか否かを判定する(S801)。
【0206】
メモリシステム1がホスト装置2から、予定消費電力と、予定ホストライト量と、電力制限指示と、を受信していない場合(S801:No)、コントローラ100は、S801の処理を再び実行する。
【0207】
メモリシステム1がホスト装置2から、予定消費電力と、予定ホストライト量と、電力制限指示と、を受信した場合(S801:Yes)、コントローラ100は、予定消費電力量と予定ホストライト量とに基づき、消費電力量計画を生成する(S802)。
【0208】
続いて、コントローラ100は、既に受信した電力制限指示に応じて、電力量の制御を開始する。つまり、計画期間を開始する(S803)。
【0209】
計画期間では、コントローラ100は、計画期間が開始されてからの消費電力量と、消費電力量計画と、の比較に基づいて動作モードを決定する。
【0210】
より具体的には、コントローラ100は、まず、消費電力量計画によって規定される消費電力量の上限値E(W)を計算する(S804)。
【0211】
E(W)は、例えば下記の式(2)を用いて計算される。なお、ここでは一例として、消費電力量計画は、
図17を用いて説明した方法で生成されていることとしている。
【0212】
E(W)=Ep*W/Wp ・・・(2)
ここで、Wは計画期間が開始してから現在までのホストライト量である。Epは予定消費電力量であり、Wpは予定ホストライト量である。式(2)においては、Wは0以上Wp以下の値をとることとしている。
【0213】
続いて、コントローラ100は、計画期間が開始してから現在までの消費電力量EcがE(W)よりも小さいか否かを判定する(S805)。Ecの取得方法は、特定の方法に限定されない。Ecは、第3の実施形態と同様の方法で取得される。
【0214】
EcがE(W)よりも小さい場合(S805:Yes)、コントローラ100は、通常モードで動作する(S806)。EcがE(W)よりも小さくない場合(S805:No)、コントローラ100は、電力量制限モードで動作する(S807)。
【0215】
S806またはS807の後、コントローラ100は、WがWpに到達したか否かを判定する(S808)。WがWpに到達していない場合(S808:No)、コントローラ100は、S804の処理を再び実行する。WがWpに到達した場合(S808:Yes)、コントローラ100は、計画期間を終了する(S809)。つまり、コントローラ100の動作モードが電力量制限モードであった場合、コントローラ100は、通常モードに遷移する。コントローラ100の動作モードが通常モードであった場合、コントローラ100は、通常モードでの動作を継続する。S809によって、一連の動作が終了する。
【0216】
なお、第4の実施形態のコントローラ100の通常モードにおける動作は、第1の実施形態のコントローラ100の通常モードにおける動作または第2の実施形態のコントローラ100の通常モードにおける動作と同じであってもよい。
【0217】
第4の実施形態のコントローラ100の電力量制限モードにおける動作は、第1の実施形態のコントローラ100の電力量制限モードにおける動作または第2の実施形態のコントローラ100の電力量制限モードにおける動作と同じであってもよい。
【0218】
S804からS808までのループ処理は、例えば所定の時間間隔で繰り返される。所定の時間間隔は、計画期間の長さに比べて十分に短い。よって、S804からS808までのループ処理が繰り返されることによって、消費電力量計画として定められた上限値を消費電力量ができるだけ越えないように動作モードの切り替えが実行される。その結果、消費電力量が予定消費電力量を越えないように消費電力量が抑制しながら、予定ホストライト量として設定された量のデータのライトを実行することが可能となる。
【0219】
なお、以上では、EcがE(W)と等しい場合には、コントローラ100は電力量制限モードで動作する、として説明した。EcがE(W)と等しい場合の処理はこれに限定されない。EcがE(W)と等しい場合には、コントローラ100は通常モードで動作してもよい。
【0220】
また、消費電力量計画は、
図17に挙げた例に限定されない。消費電力量計画を表す関数として任意の関数が採用され得る。
【0221】
さらに、メモリシステム1は、計画期間中に消費電力量計画が変更可能に構成されてもよい。例えば、コントローラ100は、計画期間中に既に消費した電力量から予定消費電力量までホストライト量に対してリニアに消費電力量の上限値が増加するように、消費電力量計画を再生成してもよい。
【0222】
また、ホスト装置2は、計画期間中に適宜、消費電力量計画の変更を指示してもよい。
【0223】
また、コントローラ100は、計画期間中に電力量制限解除指示を受信すると、電力量制限解除指示に応じて計画期間を終了してもよい。
【0224】
また、ホスト装置2は、予定消費電力量と、予定ホストライト量と、電力量制限指示と、をまとめて送信しなくてもよい。メモリシステム1は、予定消費電力量、予定ホストライト量、またはその両方を、電力量制限指示とは異なるタイミングで受信することが可能に構成されてもよい。
【0225】
このように、第4の実施形態によれば、コントローラ100は、予定消費電力量と、予定ホストライト量と、をホスト装置2から受信する。そして、コントローラ100は、予定ホストライト量として指定された量のデータを、消費電力量が予定消費電力量を越えないように転送する。
【0226】
よって、ホスト装置2は、限られた期間に限られた量のデータを転送することが可能となる。
【0227】
第4の実施形態の技術は、第3の実施形態と同様に、PLPに役立てることができる。例えば、ホスト装置2は、バッテリの残りの電力量に基づいて予定消費電力量および予定ホストライト量を決定し、電力量制限指示とともに予定消費電力量および予定ホストライト量をメモリシステム1に送信すれば、乏しい電力量を用いてPLPの動作を実現することが可能となる。
【0228】
なお、以上に述べた例では、メモリシステム1は、ホストライト量に基づいて消費電力量を制御することが可能に構成された。メモリシステム1は、NANDメモリ200からホスト装置2に転送されるデータの量(ホストリード量と表記する)に基づいて消費電力量を制御することが可能に構成されてもよい。
【0229】
例えば、メモリシステム1は、ホスト装置2から予定消費電力量と予定ホストリード量とを受信することができる。コントローラ100は、予定消費電力量と予定ホストリード量とに基づいて、消費電力量の上限値がホストリード量の関数として定義された消費電力量計画を生成し、ホストリード量と消費電力量計画とに基づいて消費電力量を制御してもよい。
【0230】
または、メモリシステム1は、ホストライト量およびホストリード量の両方に基づいて消費電力量を制御してもよい。コントローラ100は、予定消費電力量と予定ホストリード量と予定ホストライト量とに基づいて、消費電力量の上限値がホストリード量およびホストライト量の関数として定義された消費電力量計画を生成し、ホストリード量とホストライト量と消費電力量計画とに基づいて消費電力量を制御してもよい。
【0231】
以降、ホストライト量、ホストリード量、またはその両方を、ホストアクセス量、と総称する場合がある。
【0232】
(第5の実施形態)
第3および第4の実施形態においては、消費電力量計画によって規定される上限値よりも消費電力量が小さい場合には、コントローラ100は、メモリシステム1の動作モードを通常モードとした。第5の実施形態においては、コントローラ100は、消費電力量が上限値よりも著しく小さい場合には、メモリシステム1の動作モードを、通常モードよりも転記処理の処理量を増やしたモードにする。つまり、コントローラ100は、豊富に使える電力量を利用して転記処理の処理量を増加させる。通常モードよりも転記処理の処理量を増やしたモードを、大電力モード(high power mode)、と表記する。
【0233】
転記処理の処理量の増加方法は、特定の方法に限定されない。例えば、コントローラ100は、大電力モードにおいては、転記処理の実行頻度を通常モードにおける転記処理の実行頻度よりも高くしてもよい。
【0234】
または、コントローラ100は、転記処理の開始条件を、大電力モードと通常モードとで異ならせる。例えば、フリーブロックの数が判定しきい値を下回ることがガベージコレクション(またはエビクション)の開始条件である場合、大電力モードと通常モードとで異なる値を判定しきい値として使用する。具体的には、コントローラ100は、通常モードにおいては、第1設定値を判定しきい値として使用し、大電力モードにおいては、第1設定値よりも大きい第3設定値を判定しきい値として使用する。これによって、大電力モードにおいてはガベージコレクション(またはエビクション)の処理量が増加する。
【0235】
以降、第5の実施形態について説明する。ここでは一例として、消費電力量計画は、第3の実施形態と同様に、消費電力量の上限値が時間の関数として定義されていることとする。
【0236】
図19は、第5の実施形態の動作モードの遷移にかかる動作の一例を説明するためのフローチャートである。なお、第5の実施形態の電力量にかかる動作は、S605の処理の後にS901およびS902が追加された点で、
図13に示した第3の実施形態の電力量にかかる動作と異なっている。以下、第3の実施形態の電力量にかかる動作と異なる点について説明する。
【0237】
S605の判定処理において、EcがE(t)よりも小さいと判定された場合(S605:Yes)、コントローラ100は、消費電力量計画によって規定される消費電力量の上限値E(t)と実際の消費電力量Ecとの差分、つまり(E(t)-Ec)、が電力量に関するしきい値Ethよりも大きいか否かを判定する(S901)。Ethは、予め設定された正の実数である。
【0238】
(E(t)-Ec)がEthよりも大きい場合(S901:Yes)、コントローラ100は、大電力モードで動作する(S902)。(E(t)-Ec)がEthよりも大きくない場合(S901:No)、コントローラ100は、通常モードで動作する(S606)。
【0239】
S902、S606またはS607の後、コントローラ100は、S608の判定処理を実行する。
【0240】
なお、以上では、(E(t)-Ec)がEthと等しい場合には、コントローラ100は通常モードで動作する、として説明した。(E(t)-Ec)がEthと等しい場合の処理はこれに限定されない。(E(t)-Ec)がEthと等しい場合には、コントローラ100は大電力モードで動作してもよい。
【0241】
また、第5の実施形態においても、ホスト装置2は、予定消費電力量と、計画期間と、電力量制限指示と、をまとめて送信しなくてもよい。メモリシステム1は、予定消費電力量、計画期間、またはその両方を、電力量制限指示とは異なるタイミングで受信することが可能に構成されてもよい。
【0242】
このように、第5の実施形態によれば、コントローラ100は、通常モードと、電力量制限モードと、通常モードよりも転記処理の処理量が多い大電力モードと、の間で動作モードの切り替えが可能に構成される。コントローラ100は、消費電力量計画に基づいて動作モードの切り替えを実行する。
【0243】
電力量を豊富に利用できる場合には転記処理の処理量を増加させることでフリーブロックの数を増やすことができる。フリーブロックの数が多くなると、電力量制限モードでの動作を長く続けることが可能となる。
【0244】
なお、以上では、消費電力量計画は、消費電力量の上限値が時間の関数として定義されていることとした。第5の実施形態は、消費電力量計画が、第4の実施形態のように、消費電力量の上限値が、ホストアクセス量(ホストライト量、ホストリード量、またはその両方)の関数として定義されている場合においても適用可能である。
【0245】
(第6の実施形態)
一般に、1つのメモリセルトランジスタMTに保持される値のビット数(つまり前述したレベル数)が小さい記憶モードでは、レベル数が大きい記憶モードに比べて、より少ない時間でのライトおよびリードが可能であり、かつ、ライトおよびリードに消費される消費電力もより少ない。
【0246】
しかしながら、レベル数が小さい記憶モードでは、レベル数が大きい記憶モードに比べてフリーブロックの消費量が多い。レベル数が小さい記憶モードでのライトが継続されることによってフリーブロックが枯渇すると、エビクションの実行が必要となる。エビクションが実行されると、エビクションの処理量に応じて消費電力が増加する。
【0247】
そこで、フリーブロックの数が十分であるときにレベル数が小さい記憶モードでライトを行うことにすれば、エビクションを含む転記処理の処理量を抑制した状態でも、一時的ではあるが消費電力量をさらに抑制することが可能である。
【0248】
第6の実施形態によれば、メモリシステム1は、一例として、SLCモードとTLCモードとのうちからライト時の記憶モードを切り替えることが可能である。そして、コントローラ100は、電力量制限モードにおいて、フリーブロックの数が十分にある場合には、SLCモードでデータのライトを実行する。電力量制限モードにおいて、フリーブロックの数が十分でないときは、コントローラ100は、TLCモードでデータのライトを実行する。
【0249】
なお、第6の実施形態は、第3の実施形態、第4の実施形態、および第5の実施形態のいずれとも併用され得る。ここでは一例として、第3の実施形態と併用される例について説明する。
【0250】
図20は、第6の実施形態にかかるメモリシステム1の電力量制限モードでの動作の一例を示すフローチャートである。
【0251】
電力量制限モードにおいては、コントローラ100は、計画期間の残り時間に対してフリーブロックの数が十分であるか否かを判定する(S1001)。
【0252】
S1001の判定の具体的な方法は、特定の方法に限定されない。一例では、フリーブロックの数が計画期間の残り時間に応じて決まるしきい値よりも大きい場合には、コントローラ100は、計画期間の残り時間に対してフリーブロックの数が十分であると判定する。フリーブロックの数が計画期間の残り時間に応じて決まるしきい値よりも小さい場合には、コントローラ100は、計画期間の残り時間に対してフリーブロックの数が十分でないと判定する。フリーブロックの数が計画期間の残り時間に応じて決まるしきい値と等しい場合には、コントローラ100は、計画期間の残り時間に対してフリーブロックの数が十分であると判定してもよいし、計画期間の残り時間に対してフリーブロックの数が十分でないと判定してもよい。
【0253】
計画期間の残り時間に応じて決まるしきい値は、例えば、計画期間の残り時間に比例するしきい値である。計画期間の残り時間に応じて決まるしきい値の計算方法はこれに限定されない。計画期間の残り時間に応じて決まるしきい値は、第3値の一例である。
【0254】
計画期間の残り時間に対してフリーブロックの数が十分である場合(S1001:Yes)、コントローラ100は、メモリシステム1の動作モードを第1電力量制限モードとする(S1002)。第1電力量制限モードでは、コントローラ100は、第1の実施形態または第2の実施形態で述べた電力量制限モードでの動作に加えて、NANDメモリ200に対してデータをライトするときは、SLCモードでデータのライトを行う。
【0255】
計画期間の残り時間に対してフリーブロックの数が十分でない場合(S1001:No)、コントローラ100は、メモリシステム1の動作モードを第2電力量制限モードとする(S1003)。第2電力量制限モードでは、コントローラ100は、第1の実施形態または第2の実施形態で述べた電力量制限モードでの動作に加えて、NANDメモリ200に対してデータをライトするときは、TLCモードでデータのライトを行う。
【0256】
S1002またはS1003の後、コントローラ100は、電力量制限モードでの動作を終了するか否かを判定する(S1004)。つまり、コントローラ100は、メモリシステム1の動作モードを電力量制限モードから他のモード(例えば通常モード)に遷移させるか否かを判定する。動作モードの遷移の条件は、第3の実施形態で述べた条件と同じであるため、ここでは説明を省略する。
【0257】
電力量制限モードでの動作を終了しない場合(S1004:No)、コントローラ100は、S1001の処理を再び実行する。電力量制限モードでの動作を終了する場合(S1004:Yes)、コントローラ100は、電力量制限モードでの動作を終了する。
【0258】
このように、第6の実施形態では、コントローラ100は、消費電力量計画に従って電力量制限モードになっている間、レベル数を減らす、つまり1個のメモリセルトランジスタMTに格納されるデータのビット数を減らすことによって、メモリシステム1の消費電力量を抑制することができる。
【0259】
よって、レベル数を減らさない場合に比べ、消費電力量をさらに抑制することが可能である。
【0260】
また、第6の実施形態では、コントローラ100は、フリーブロックの数が第3値(上記の例では残り時間に応じて決まるしきい値)より小さい場合には、1つのメモリセルトランジスタあたりに第1ビット数のデータを書き込むモード(上記の例ではTLCモード)でデータをライトする。コントローラ100は、フリーブロックの数が第3値(上記の例では残り時間に応じて決まるしきい値)より大きい場合には、1つのメモリセルトランジスタあたりに第1ビット数よりも少ない第2ビット数のデータを書き込むモード(上記の例ではSLCモード)でデータをライトする。
【0261】
よって、レベル数を減らさない場合に比べ、消費電力量をさらに抑制することが可能である。
【0262】
なお、前述したように、第6の実施形態は、第3の実施形態に替えて第4の実施形態とも併用され得る。第6の実施形態が第4の実施形態と併用される場合には、コントローラ100は、S1001において、残りのホストライト量、つまり予定ホストアクセス量から計画期間が開始してからのホストアクセス量を減算して得られる量、に対してフリーブロックの数が十分であるか否かを判定する。なお、予定ホストアクセス量は、ホスト装置2から第2値として受信する予定ホストライト量、予定ホストリード量、またはそれら両方であり、消費電力量計画の生成に使用される量である。残りのホストアクセス量に対してフリーブロックの数が十分である場合、コントローラ100は、S1002の処理を実行する。残りのホストアクセス量に対してフリーブロックの数が十分でない場合、コントローラ100は、S1003の処理を実行する。
【0263】
残りのホストアクセス量に対してフリーブロックの数が十分であるか否かの判定方法は、特定の方法に限定されない。例えば、フリーブロックの数が残りのホストアクセス量をブロックBLKの数に換算して得られるしきい値よりも少ない場合、コントローラ100は、残りのホストアクセス量に対してフリーブロックの数が十分でないと判定する。フリーブロックの数が残りのホストアクセス量をブロックBLKの数に換算して得られるしきい値よりも多い場合、コントローラ100は、残りのホストアクセス量に対してフリーブロックの数が十分であると判定する。フリーブロックの数が残りのホストアクセス量をブロックBLKの数に換算して得られるしきい値と等しい場合、コントローラ100は、残りのホストアクセス量に対してフリーブロックの数が十分であると判定してもよいし、残りのホストアクセス量に対してフリーブロックの数が十分でないと判定してもよい。
【0264】
残りのホストアクセス量をブロックBLKの数に換算して得られるしきい値は、第3値の別の一例である。なお、第3値はこれに限定されない。
【0265】
なお、第6の実施形態は、第5の実施形態とも併用され得る。つまり、コントローラ100は、消費電力量計画に従って大電力モードで動作することが可能である。
【0266】
第6の実施形態においては、通常モード(および大電力モード)においてデータのライトに使用される記憶モードは、任意である。通常モード(および大電力モード)においては、豊富な電力を利用可能であるので、コントローラ100は、TLCモードでデータのライトを行ってもよい。
【0267】
(第7の実施形態)
ホスト装置2は、ユーザデータのライトをメモリシステム1に要求する際に、ライト対象のユーザデータの属性情報を送信することができる。この属性情報を、データカラー(data color)と表記する。第7の実施形態では、ホスト装置2は、ライト対象のユーザデータがホットであるかコールドであるかを、データカラーによってメモリシステム1に指示することができる。以降、ホスト装置2がメモリシステム1に対して送信するライト対象のユーザデータを、ライトデータと表記する。
【0268】
データがSLCモードでライトされた場合、後にそのデータに対してエビクションが必要になる。しかしながら、SLCモードでライトされたデータが、エビクションの実行前に無効になった場合、そのデータに関するエビクションの実行が不要になり、エビクションに要する電力量が削減される。
【0269】
第7の実施形態では、コントローラ100は、電力量制限モードにおいては、データカラーによってホットであることが示されたライトデータを、SLCモードによってメモリチップ201にライトする。これによって、当該ライトデータをTLCモードによってメモリチップ201にライトする場合に比べて、ライトに要する電力量を抑制することができる。そして、SLCモードでライトされた、データカラーによってホットであることが示されたライトデータが、エビクションが実行される前に無効になって当該ライトデータのエビクションが不要になれば、エビクションに要する電力量が削減され、その結果、さらなる電力量の抑制が可能となる。
【0270】
なお、第7の実施形態は、第3の実施形態~第5の実施形態の何れとも併用され得る。
【0271】
図21は、第7の実施形態にかかるメモリシステム1の電力量制限モードでの動作の一例を示すフローチャートである。第7の実施形態の電力量制限モードでは、コントローラ100は、第3の実施形態~第5の実施形態における電力量制限モードの動作に加えて、
図21に説明する一連の動作を実行する。
【0272】
電力量制限モードにおいて、コントローラ100は、メモリシステム1がホスト装置2からライトコマンドを受信したか否かを判定する(S1101)。メモリシステム1がホスト装置2からライトコマンドを受信していない場合(S1101:No)、コントローラ100は、S1101の処理を再び実行する。
【0273】
メモリシステム1がホスト装置2からライトコマンドを受信した場合(S1101:Yes)、コントローラ100は、メモリシステム1が当該ライトコマンドとともにデータカラーをホスト装置2から受信したか否かを判定する(S1102)。
【0274】
メモリシステム1がホスト装置2からデータカラーを受信した場合(S1102:Yes)、コントローラ100は、当該データカラーは「ホット」を示しているか否かを判定する(S1103)。当該データカラーが「ホット」を示している場合(S1103:Yes)、コントローラ100は、受信したライトコマンドによってライトが要求されたデータをSLCモードでメモリチップ201にライトする(S1104)。
【0275】
メモリシステム1がライトコマンドとともにデータカラーを受信していない場合(S1102:No)、またはメモリシステム1がライトコマンドとともに「ホット」を示していないデータカラーを受信した場合(S1103:No)、コントローラ100は、受信したライトコマンドによってライトが要求されたデータをTLCモードでメモリチップ201にライトする(S1105)。
【0276】
S1104またはS1105の後、コントローラ100は、電力量制限モードでの動作を終了するか否かを判定する(S1106)。つまり、コントローラ100は、メモリシステム1の動作モードを電力量制限モードから他のモード(例えば通常モード)に遷移させるか否かを判定する。動作モードの遷移の条件は、他の実施形態で述べた通りであるため、ここでは説明を省略する。
【0277】
電力量制限モードでの動作を終了しない場合(S1106:No)、コントローラ100は、S1101の処理を再び実行する。電力量制限モードでの動作を終了する場合(S1106:Yes)、コントローラ100は、電力量制限モードでの動作を終了する。
【0278】
このように、第7の実施形態によれば、コントローラ100は、電力量制限モードにおいて、ホスト装置2から指示されたデータカラーに対応した記憶モードでライトデータをNANDメモリ200にライトする。
【0279】
よって、例えばホスト装置2は、短時間で書き換える可能性があるデータをメモリシステム1に送信する場合は、当該データはホットであることをメモリシステム1に通知すれば、メモリシステム1においては、エビクションの処理量を減らすことができる可能性が高くなり、消費電力量をさらに抑制することができる可能性が高くなる。
【0280】
また、ホスト装置2は、PLPにおいて、揮発性メモリからメモリシステム1にデータを送信する際に、当該データはホットであることを通知してもよい。その場合、データのライトに要する時間が短縮されるとともに、データのライトに要する消費電力量を低減することが可能となる。
【0281】
また、情報処理システム10は、ハイバネーションを実行できる場合がある。ハイバネーションは、揮発性メモリのデータをまるごと不揮発性メモリ(ここでは例えばメモリシステム1)に保存して電源オフ状態となり、次に起動されたとき、保存されたデータを不揮発性メモリから揮発性メモリにそのまま復元する機能である。ハイバネーションによって、電源オフ状態となる前の状態に迅速に復帰することが可能である。
【0282】
ハイバネーションにおいてメモリシステム1にセーブされるデータは、次に起動された後は不要となる。よって、ハイバネーションにおいてメモリシステム1にセーブされるデータはホットであると考えられる。ホスト装置2は、ハイバネーションにおいてデータをメモリシステム1に送信する際には、当該データはホットであることを通知してもよい。
その場合、データのライトに要する時間が短縮されるとともに、データのライトに要する消費電力量を低減することが可能となる。
【0283】
(第8の実施形態)
第7の実施形態では、コントローラ100は、データカラーに基づいて記憶モードの選択を行った。コントローラ100は、データカラーだけでなくフリーブロックの数に基づいて記憶モードの選択を行ってもよい。
【0284】
第8の実施形態は、第3の実施形態~第5の実施形態の何れとも併用され得る。ここでは一例として、第8の実施形態が第3の実施形態と併用された場合の動作について説明する。
【0285】
図22は、第8の実施形態にかかるメモリシステム1の電力量制限モードでの動作の一例を示すフローチャートである。
【0286】
第8の実施形態にかかるメモリシステム1の電力量制限モードでの動作は、S1103の判定処理の後にS1201の判定処理が追加された点で、
図21に示した第7の実施形態にかかる動作と異なっている。以下、第7の実施形態と異なる点について説明する。
【0287】
S1103の判定処理においてYesと判定された場合、つまりライトコマンドとともに受信したデータカラーが「ホット」を示している場合、コントローラ100は、計画期間の残り時間に対してフリーブロックの数が十分であるか否かを判定する(S1201)。
【0288】
S1201の処理は、例えば第6の実施形態において
図20を用いて説明したS1001の処理と同じである。つまり、コントローラ100は、フリーブロックの数と第3値との比較に基づいて、計画期間の残り時間に対してフリーブロックの数が十分であるか否かを判定する。フリーブロックの数が第3値よりも少ない場合には、コントローラ100は、計画期間の残り時間に対してフリーブロックの数が十分でないと判定する。フリーブロックの数が第3値よりも多い場合には、コントローラ100は、計画期間の残り時間に対してフリーブロックの数が十分であると判定する。フリーブロックの数が第3値と等しい場合には、コントローラ100は、計画期間の残り時間に対してフリーブロックの数が十分であると判定してもよいし、計画期間の残り時間に対してフリーブロックの数が十分でないと判定してもよい。
【0289】
計画期間の残り時間に対してフリーブロックの数が十分である場合(S1201:Yes)、コントローラ100は、受信したライトコマンドによってライトが要求されたデータをSLCモードでメモリチップ201にライトする(S1104)。計画期間の残り時間に対してフリーブロックの数が十分でない場合(S1201:No)、コントローラ100は、受信したライトコマンドによってライトが要求されたデータをTLCモードでメモリチップ201にライトする(S1105)。
【0290】
なお、前述したように、第8の実施形態は、第3の実施形態に替えて第4の実施形態とも併用され得る。第8の実施形態が第4の実施形態と併用される場合には、コントローラ100は、S1001において、例えば、残りのホストライト量、つまり予定ホストアクセス量から計画期間が開始してからのホストアクセス量を減算して得られる量、に対してフリーブロックの数が十分であるか否かを判定する。
【0291】
第8の実施形態は、第5の実施形態とも併用され得る。つまり、コントローラ100は、消費電力量計画に従って大電力モードで動作することが可能である。
【0292】
このように、第8の実施形態によれば、電力量制限モードにおいては、コントローラ100は、次のように動作する。即ち、ホスト装置2から通知されたデータカラーがTLCモードに対応するデータカラーであるコールドである場合、コントローラ100は、ライトデータをTLCモードでNANDメモリ200にライトする。ホスト装置2から通知されたデータカラーがSLCモードに対応するデータカラーであるホットであり、かつフリーブロックの数が第3値よりも少ない場合、コントローラ100は、ライトデータをTLCモードでNANDメモリ200にライトする。ホスト装置2から通知されたデータカラーがSLCモードに対応するデータカラーであるホットであり、かつフリーブロックの数が第3値よりも多い場合、コントローラ100は、ライトデータをSLCモードでNANDメモリ200にライトする。
【0293】
コントローラ100は、たとえホスト装置2からライトデータはホットである旨の通知を受けた場合であっても、残りのフリーブロックの数に余裕がない場合にはTLCモードでライトデータをNANDメモリ200にライトする。これによって、計画期間中にフリーブロックが枯渇してエビクションの実行が必要になることを防止することができる。
【0294】
(第9の実施形態)
いくつかの実施形態では、電力量制限モードで動作では、コントローラ100は、転記処理の処理量を低減したり、NANDメモリ200へのデータのライトの際にレベル数が少ない記憶モードを使用したりした。しかしながら、電力量制限モードにおいて転記処理の処理量を低減したりレベル数が少ない記憶モードを使用したりすると、通常モードに比べてフリーブロックの数の減少速度が早くなる。フリーブロックが枯渇すると、コントローラ100は、電力量制限モードでの動作を継続することが困難になる。
【0295】
第9の実施形態では、メモリシステム1は、ホスト装置2に対し、消費電力量の抑制の可否に関連するステータス情報を送信することが可能である。このステータス情報を、関連情報、と表記する。
【0296】
ホスト装置2は、関連情報を、メモリシステム1を電力量制限モードで動作させるタイミング、メモリシステム1を電力量制限モードで動作させる期間、計画期間の開始タイミング、または計画期間、などの決定に利用することができる。
【0297】
関連情報は、例えば、電力量制限モードでの動作が可能な期間(または計画期間として設定可能な期間)の最大値を表す数値情報である。コントローラ100は、フリーブロックの数などに基づき、電力量制限モードでの動作が可能な期間(または計画期間として設定可能な期間)の最大値を計算し、当該最大値を関連情報としてホスト装置2に送信する。
【0298】
別の例では、関連情報は、フリーブロックの数である。コントローラ100は、フリーブロックの数を関連情報としてホスト装置2に送信する。ホスト装置2は、関連情報として受信したフリーブロックの数に基づいて、電力量制限モードでの動作が可能な期間(または計画期間として設定可能な期間)の最大値を計算する。
【0299】
さらに別の例では、関連情報は、電力量制限モードでの動作(または計画期間の開始)の可否を表すバイナリ情報であってもよい。または、関連情報は、電力量制限モードでの動作(または計画期間の開始)を禁止する期間の長さを表す数値情報であってもよい。または、関連情報は、予定消費電力量として設定可能な最大値であってもよい。
【0300】
このように、関連情報の内容は、任意に構成され得る。
【0301】
図23は、第9の実施形態のメモリシステム1がホスト装置2に対して関連情報を送信する方法の一例を説明するための図である。
図23の説明では、一例として、計画期間として設定可能な期間の最大値を表す数値情報であることとする。
【0302】
ホスト装置2は、メモリシステム1に対し、まず、関連情報出力指示を送信する(S1301)。
【0303】
関連情報出力指示は、任意のコマンドを用いることによって送信され得る。例えば、ベンダースペシフィックなコマンド値が、関連情報出力指示の送信のためのコマンドとしてアサインされていてもよい。関連情報出力指示の送信のためのコマンドが通信インタフェース3の規格に組み込まれていてもよい。ホスト装置2とメモリシステム1とは、関連情報出力指示を転送するための専用の信号線で接続され、ホスト装置2は、当該専用の信号線を介して関連情報出力指示をメモリシステム1に送信してもよい。
【0304】
メモリシステム1では、コントローラ100は、関連情報出力指示に応じて関連情報(この例では計画期間として設定可能な期間の最大値tmax)を計算する(S1302)。例えば、コントローラ100は、現時点でのフリーブロックの数を取得し、取得したフリーブロックの数に基づき、計画期間として設定可能な期間の最大値を計算する。
【0305】
そして、コントローラ100は、計算によって得られた最大値を、関連情報としてホスト装置2に送信する(S1303)。
【0306】
ホスト装置2は、tmaxよりも短い期間を計画期間として決定し(S1304)、予定消費電力量、決定した計画期間、および電力量制限指示をメモリシステム1に送信する(S1305)。
【0307】
なお、前述したように、コントローラ100は、電力量制限モードでの動作が可能な期間の最大値、現在のフリーブロックの数、電力量制限モードの動作が可能か否かを示すバイナリ情報、計画期間の設定が可能か否かを示すバイナリ情報、電力量制限モードでの動作を禁止する期間の長さを表す数値情報、計画期間の開始を禁止する期間の長さを表す数値情報、予定消費電力量として設定可能な最大値、またはこれらの全部または一部の組み合わせを、関連情報として送信し得る。
【0308】
なお、第9の実施形態は、第1~第8の実施形態の何れとも併用され得る。関連情報の内容は、第9の実施形態と併用される実施形態に応じて種々に変更され得る。
【0309】
このように、第9の実施形態においては、コントローラ100は、消費電力量の抑制の可否に関連する情報である関連情報を、ホスト装置2からの関連情報出力指示に応じてホスト装置2に送信する。
【0310】
よって、ホスト装置2は、メモリシステム1が電力量制限モードに遷移できるか否か、メモリシステム1が電力量制限モードで動作することが可能な期間、メモリシステム1に計画期間を開始させることができるか否か、計画期間として設定可能な期間、などを判断することが可能となる。
【0311】
(変形例)
メモリシステム1のコントローラ100は、関連情報をホスト装置2に送信しなくてもよい。
【0312】
例えば、メモリシステム1のコントローラ100は、電力量制限解除指示を受信したタイミングから所定の期間は、電力量制限指示を受信しても、電力量制限指示に応じた動作を実行しないように構成されてもよい。または、メモリシステム1のコントローラ100は、電力量制限解除指示を受信したタイミングから所定の期間は、電力量制限指示を受信しても、電力量制限指示に応じた動作を開始せずに、替わりに、電力量制限指示に応じた動作を実行しない旨をホスト装置2に送信してもよい。
【0313】
または、メモリシステム1のコントローラ100は、計画期間の終了タイミングから所定の期間は、電力量制限指示を受信しても、電力量制限指示に応じた動作を実行しないように構成されてもよい。メモリシステム1のコントローラ100は、計画期間の終了タイミングから所定の期間は、電力量制限指示を受信しても、電力量制限指示に応じた動作を開始せずに、替わりに、電力量制限指示に応じた動作を実行しない旨をホスト装置2に送信してもよい。
【0314】
(第10の実施形態)
ホスト装置2は、第1~第9の実施形態のメモリシステム1に対し、任意の判断に基づき、各種指示(電力量制限指示、電力量制限解除指示、または関連情報出力指示、など)または各種情報(予定消費電力量、計画期間、または予定ホストアクセス量、など)を送信することができる。
【0315】
例えば、情報処理システム10がポータブルなコンピュータである場合、ホスト装置2は、情報処理システム10が電源から電力供給を受けているか否かに基づいて、電力量制限指示を送信することができる。
【0316】
または、ホスト装置2は、所定の期間(例えば1日、または1週間、など)におけるオペレータによる情報処理システム10の使い方を学習する。オペレータによる情報処理システム10の使い方として学習される情報は、具体的には、ワークロードの変化、情報処理システム10の電源への接続/切断のタイミング、またはバッテリの容量の時間変化の履歴、などである。ホスト装置2は、学習によって得られた情報に基づき、情報処理システム10の電力に関する今後の状況を予測する。そして、ホスト装置2は、予測に基づき、各種指示または各種情報をメモリシステム1に送信する。
【0317】
一例では、電源からの電力供給が途絶えた場合であっても、ワークロードが軽く、かつホスト装置2がすぐに電源からの電力供給が再開されると予測した場合には、ホスト装置2は、電力量制限指示の送信を実行せず、メモリシステム1の動作を通常モードに維持させる。
【0318】
別の例では、情報処理システム10が電源から電力供給を受けている場合であっても、ホスト装置が、すぐに電源からの電力供給が途絶えると予測した場合には、ホスト装置2は、電力量制限指示をメモリシステム1に送信することによってメモリシステム1の消費電力量を抑制し、抑制された分の電力量をバッテリへの充電に充てる。
【0319】
このように、ホスト装置2は、任意の判断に基づき、メモリシステム1の消費電力量の制御を実行することができる。
【0320】
第1~第10の実施形態によれば、メモリシステム1は、不揮発性メモリであるNANDメモリ200と、NANDメモリ200を制御するコントローラ100と、を備える。コントローラ100は、ホスト装置2からの電力量制限指示に応じてメモリシステム1の消費電力量を抑制する。
【0321】
よって、ホスト装置2が消費電力量を制御することが可能となる。
【0322】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0323】
1 メモリシステム、2 ホスト装置、3 通信インタフェース、4 区分、5 電源装置、6 電力供給線、10 情報処理システム、100 コントローラ、101 プロセッサ、102 ホストインタフェース、103 RAM、104 バッファメモリ、105 メモリインタフェース、106 内部バス、200 NANDメモリ、201 メモリチップ、210 周辺回路、211 メモリセルアレイ、212 NANDストリング、300 メモリバス、400 電源回路、401 測定回路。