JP2022092965A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2022092965A JP2022092965A JP2020205991A JP2020205991A JP2022092965A JP 2022092965 A JP2022092965 A JP 2022092965A JP 2020205991 A JP2020205991 A JP 2020205991A JP 2020205991 A JP2020205991 A JP 2020205991A JP 2022092965 A JP2022092965 A JP 2022092965A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- processing
- memory controller
- read
- memory system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/32—Timing circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
- G06F13/26—Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/22—Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
Description
実施形態は、メモリシステムに関する。
不揮発性メモリであるNAND型フラッシュメモリと、不揮発性メモリを制御するメモリコントローラと、を含むメモリシステムが知られている。メモリシステムには、ライトスループット、及びリードレイテンシに関する要求が定められる。ライトスループットは、単位時間あたりに不揮発性メモリへ書き込むことができるデータ量である。リードレイテンシは、不揮発性メモリから読み出したデータを、メモリシステムの外部に出力するために要する時間である。ライトスループット及びリードレイテンシは、互いにトレードオフの関係となり得る。
一つの実施形態は、ライトスループット及びリードレイテンシのトレードオフを調整する手段を提供する。
実施形態のメモリシステムは、不揮発性メモリと、ホスト機器からの第1要求に基づいて、上記不揮発性メモリに、データを読み出す第1処理を実行させるように構成されたメモリコントローラと、を備える。上記メモリコントローラは、上記不揮発性メモリに第2処理を実行させている間に上記ホスト機器から上記第1処理を受信した場合、上記メモリコントローラ内にある未実行の上記第1要求の数である第1数が、2以上の整数である第1閾値以上となるまで、上記第2処理の中断を保留するように構成される。
以下、実施形態につき図面を参照して説明する。説明に際し、略同一の機能及び構成を有する構成要素については、同一符号を付す。また、以下に示す実施形態は、技術的思想を例示するものである。実施形態には、種々の変更を加えることができる。
1.第1実施形態
1.1 構成
1.1.1 情報処理システム
第1実施形態に係る情報処理システムの構成について説明する。
1.1 構成
1.1.1 情報処理システム
第1実施形態に係る情報処理システムの構成について説明する。
図1は、第1実施形態に係る情報処理システムの構成を示すブロック図である。図1に示すように、情報処理システム1は、ホスト機器2及びメモリシステム3を含む。
ホスト機器2は、メモリシステム3を使用してデータを処理するデータ処理装置である。ホスト機器2は、例えば、パーソナルコンピュータ又はデータセンタ内のサーバである。
メモリシステム3は、ホスト機器2に接続されるように構成された記憶装置である。メモリシステム3は、例えば、SDTMカードのようなメモリカード、UFS(universal flash storage)、SSD(solid state drive)である。メモリシステム3は、ホスト機器2からの要求(コマンド)に応じてデータのプログラム処理、リード処理、イレース処理を実行する。メモリシステム3は、内部処理としてプログラム処理、リード処理、及びイレース処理を実行してもよい。
1.1.2 メモリシステム
第1実施形態に係るメモリシステムの内部構成について説明する。
第1実施形態に係るメモリシステムの内部構成について説明する。
メモリシステム3は、不揮発性メモリ10及びメモリコントローラ20を含む。
不揮発性メモリ10は、各々が不揮発にデータを記憶する複数のメモリセルトランジスタを含む。不揮発性メモリ10は、例えば、NAND型フラッシュメモリである。
メモリコントローラ20は、例えばSoC(system-on-a-chip)のような集積回路で構成される。メモリコントローラ20は、ホスト機器2からの要求に基づいて、不揮発性メモリ10を制御する。具体的には、例えば、メモリコントローラ20は、ホスト機器2からのライト要求に基づいて、ライトデータを不揮発性メモリ10に書き込む。また、メモリコントローラ20は、ホスト機器2からのリード要求に基づいて、リードデータを不揮発性メモリ10から読み出す。そして、メモリコントローラ20は、リードデータをホスト機器2に送信する。
次に、メモリコントローラ20の内部構成について説明する。メモリコントローラ20は、制御回路21、バッファメモリ22、ホストインタフェース回路23、メモリインタフェース回路24、及びコマンドキュー25を含む。以下に説明されるメモリコントローラ20の各部21-25の機能は、ハードウェア構成、又はハードウェア資源とファームウェアとの組合せ構成のいずれでも実現可能である。
制御回路21は、メモリコントローラ20の全体を制御する回路である。制御回路21は、例えば、CPU(central processing unit)のようなプロセッサ、及びROM(read only memory)を含む。
バッファメモリ22は、ホスト機器2と不揮発性メモリ10との間でデータをバッファリングするためのメモリである。バッファメモリ22は、例えば、SRAM(static random access memory)である。バッファメモリ22は、ライトデータ、及びリードデータを一時的に記憶する。
ホストインタフェース回路(ホストI/F)23は、メモリコントローラ20とホスト機器2との間の通信を司る。ホストインタフェース回路23は、ホストバスを介してホスト機器2と接続される。ホストバスは、例えば、SDTMインタフェース、SAS(serial attached SCSI(small computer system interface))、SATA(serial ATA(advanced technology attachment))、又はPCIeTM(peripheral component interconnect express)に準拠したバスである。
メモリインタフェース回路(メモリI/F)24は、不揮発性メモリ10とメモリコントローラ20との間の通信を司る。メモリインタフェース回路24は、メモリバスBUSを介して不揮発性メモリ10と接続される。メモリバスBUSは、例えば、SDR(single data rate)インタフェース、トグルDDR(double data rate)インタフェース、又はONFI(Open NAND flash interface)に準拠したバスである。
コマンドキュー25は、ホスト機器2からの要求をキューイングするためのメモリである。コマンドキュー25は、例えばSRAMである。コマンドキュー25は、例えば、優先度付きキューである。コマンドキュー25は、各々が優先度を有する複数の要求を記憶するように構成される。コマンドキュー25内に記憶された複数の要求は、対応する優先度順に実行される。コマンドキュー25内の要求は、対応する処理の実行に応じて、コマンドキュー25から消去される。
次に、不揮発性メモリ10とメモリコントローラ20との間でやり取りされる信号の一例を説明する。図2は、第1実施形態に係るメモリバスで用いられる信号の一例を示すブロック図である。
メモリバスBUSで用いられる信号は、例えば、チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、リードイネーブル信号REn、ライトプロテクト信号WPn、レディ・ビジー信号RBn、及び入出力信号I/Oを含む。本明細書において、信号の名称の末尾のnは、その信号が“L(Low)”レベルの場合にアサートされることを意味する。
信号CEnは、不揮発性メモリ10をイネーブルにするための信号である。
信号CLE及びALEは、不揮発性メモリ10への入力信号I/Oがそれぞれコマンド及びアドレスであることを不揮発性メモリ10に通知する信号である。
信号WEnは、入力信号I/Oを不揮発性メモリ10に取り込ませるための信号である。
信号REnは、不揮発性メモリ10から出力信号I/Oを読み出すための信号である。
信号WPnは、データの書き込み及び消去の禁止を不揮発性メモリ10に指示するための信号である。
信号RBnは、不揮発性メモリ10がレディ状態であるか、それともビジー状態であるかを示す信号である。レディ状態は、不揮発性メモリ10がメモリコントローラ20からの命令を受信出来る状態である。ビジー状態は、後述するサスペンド処理の実行を指示するサスペンドコマンドのような一部のコマンドを除き、不揮発性メモリ10がメモリコントローラ20からの命令を受信出来ない状態である。信号RBnは、“L”レベルがビジー状態を示す。
入出力信号I/Oは、例えば8ビットの信号である。入出力信号I/Oは、不揮発性メモリ10とメモリコントローラ20との間で送受信されるデータの実体である。入出力信号I/Oは、コマンド、アドレス、並びにライトデータ及びリードデータ等のデータを含む。
1.2 動作
次に、第1実施形態に係るメモリシステムにおける動作について説明する。
次に、第1実施形態に係るメモリシステムにおける動作について説明する。
1.2.1 プログラム処理
図3は、第1実施形態に係るメモリシステムにおけるプログラム処理を含む一連の処理の一例を示すフローチャートである。
図3は、第1実施形態に係るメモリシステムにおけるプログラム処理を含む一連の処理の一例を示すフローチャートである。
プログラム条件が満たされると(開始)、メモリコントローラ20は、サスペンド判定処理を伴うプログラム処理を不揮発性メモリ10に実行させる(S1)。
プログラム条件が満たされることは、ホスト機器2からのライト要求に応じて、バッファメモリ22内に一定量のライトデータが記憶されることを含む。また、プログラム条件が満たされることは、メモリコントローラ20が、内部処理において実行するプログラム処理の開始条件が満たされることを含む。内部処理は、ガベージコレクション(コンパクション)処理、リフレッシュ処理、ウェアレベリング処理、及び不揮発性メモリ10の管理情報の不揮発化処理を含む。
プログラム処理に際して、メモリコントローラ20は、バッファメモリ22内のライトデータを不揮発性メモリ10に送信する。不揮発性メモリ10は、受信したライトデータを不揮発性メモリ10内のページバッファ(図示せず)に記憶させる(データイン)。不揮発性メモリ10は、ページバッファに記憶されたライトデータに基づき、不揮発性メモリ10内のメモリセルアレイ(図示せず)へのプログラム処理を実行する。
サスペンド判定処理は、サスペンド条件を満たすか否かに基づいて、サスペンド処理を実行するか否かを判定する処理である。サスペンド処理は、不揮発性メモリ10が実行しているプログラム処理等を中断させる処理である。サスペンド処理を実行するタイミングを調整することにより、メモリコントローラ20は、リードレイテンシとライトスループットとのトレードオフを調整することができる。
サスペンド判定処理を伴うプログラム処理が終了すると、メモリコントローラ20は、ステータスリード処理を不揮発性メモリ10に実行させる(S2)。ステータスリード処理は、メモリコントローラ20が不揮発性メモリ10の状態を把握するために、不揮発性メモリ10のステータスを読み出す処理である。これにより、メモリコントローラ20は、不揮発性メモリ10がプログラム処理を終了したことを確認することができる。
S2の処理においてプログラム処理が終了した旨のステータスをメモリコントローラ20が不揮発性メモリ10から受信すると、プログラム処理を含む一連の処理は終了となる(終了)。
1.2.2 サスペンド判定処理
図4は、第1実施形態に係るメモリシステムにおけるサスペンド判定処理を含む一連の処理の一例を示すフローチャートである。サスペンド判定処理を含む一連の処理は、サスペンド判定処理の開始条件に応じて実行される。図4の例では、サスペンド判定処理の開始条件は、メモリコントローラ20がホスト機器2からリード要求を受信することである。
図4は、第1実施形態に係るメモリシステムにおけるサスペンド判定処理を含む一連の処理の一例を示すフローチャートである。サスペンド判定処理を含む一連の処理は、サスペンド判定処理の開始条件に応じて実行される。図4の例では、サスペンド判定処理の開始条件は、メモリコントローラ20がホスト機器2からリード要求を受信することである。
すなわち、ホスト機器2からリード要求を受信すると(開始)、メモリコントローラ20は、不揮発性メモリ10がプログラム処理中であるか否かを判定する(S10)。
プログラム処理中でない場合(S10;false)、メモリコントローラ20は、受信したリード要求に基づくリード処理を不揮発性メモリ10に実行させる(S11)。S11の処理が終わると、サスペンド判定処理を含む一連の処理は終了となる(終了)。
プログラム処理中である場合(S10;true)、メモリコントローラ20は、サスペンド条件が満たされるか否かを判定する(S12)。図4の例におけるサスペンド条件は、コマンドキュー25内のリード要求が閾値N個以上であることである。閾値Nは、2以上の整数である(N≧2)。
コマンドキュー25内にリード要求が閾値N個以上ない場合(S12;false)、メモリコントローラ20は、プログラム処理の中断を保留する。すなわち、メモリコントローラ20は、プログラム処理を中断しない。これにより、サスペンド判定処理を含む一連の処理は終了となる(終了)。
コマンドキュー25内のリード要求が閾値N個以上である場合(S12;true)、メモリコントローラ20は、不揮発性メモリ10にサスペンド処理を実行させる(S13)。
サスペンド処理によってプログラム処理が中断された後、メモリコントローラ20は、リード要求に基づくリード処理を不揮発性メモリ10に実行させる(S14)。
S14の処理が終わるたびに、メモリコントローラ20は、コマンドキュー25内にリード要求がまだあるか否かを判定する(S15)。
コマンドキュー25内にリード要求がまだある場合(S15;true)、メモリコントローラ20は、リード要求に基づくリード処理を不揮発性メモリ10に実行させる(S14)。これにより、コマンドキュー25内の全てのリード要求に対応するリード処理が実行されるまで、S14及びS15の処理が繰り返される。
コマンドキュー25内にリード要求がない場合(S15;false)、メモリコントローラ20は、不揮発性メモリ10にレジューム処理を実行させる(S16)。
S16の処理が終わると、サスペンド判定処理を含む一連の処理は終了となる(終了)。
1.2.3 メモリシステムの状態遷移
図5は、第1実施形態に係るメモリシステムのプログラム処理に関する複数の状態間の関係を示す状態遷移図である。図5では、図3及び図4に示した処理に関してメモリシステム3が取り得る複数の状態間の関係が示される。
図5は、第1実施形態に係るメモリシステムのプログラム処理に関する複数の状態間の関係を示す状態遷移図である。図5では、図3及び図4に示した処理に関してメモリシステム3が取り得る複数の状態間の関係が示される。
まず、メモリシステム3の取り得る複数の状態について説明する。
図5に示すように、メモリシステム3のプログラム処理に関する状態は、プログラムレディ状態STS1、プログラムビジー状態STS2、及びプログラムサスペンド状態STS3を含む。プログラムレディ状態STS1は、メモリシステム3におけるプログラム処理の実行が許可されている状態である。プログラムビジー状態STS2は、メモリシステム3がプログラム処理を実行している状態である。プログラムサスペンド状態STS3は、メモリシステム3がプログラム処理の実行を中断している状態である。プログラムビジー状態STS2において、メモリシステム3は、リード処理の実行を禁止する。プログラムレディ状態STS1及びプログラムサスペンド状態STS3において、メモリシステム3は、リード処理の実行を許可する。
プログラムレディ状態STS1は、待ちリード要求なし状態STS11、及びリード処理中状態STS12を含む。待ちリード要求なし状態STS11は、プログラムレディ状態STS1において、コマンドキュー25内に未実行のリード要求が1つも記憶されていない状態である。リード処理中状態STS12は、プログラムレディ状態STS1において、メモリシステム3がリード処理を実行している状態である。
プログラムビジー状態STS2は、待ちリード要求なし状態STS21、及びサスペンド処理保留中状態STS22を含む。待ちリード要求なし状態STS21は、プログラムビジー状態STS2において、コマンドキュー25内に未実行のリード要求が1つも記憶されていない状態である。サスペンド処理保留中状態STS22は、メモリシステム3がサスペンド処理の開始を保留している状態である。
プログラムサスペンド状態STS3は、サスペンド処理中状態STS31、リード処理中状態STS32、及びレジューム処理中状態STS33を含む。サスペンド処理中状態STS31は、メモリシステム3がサスペンド処理を実行している状態である。リード処理中状態STS32は、プログラムサスペンド状態STS3において、メモリシステム3がリード処理を実行している状態である。レジューム処理中状態STS33は、メモリシステム3がレジューム処理を実行している状態である。レジューム処理は、中断中のプログラム処理を再開させる処理である。
次に、各状態を遷移させるイベントについて説明する。
待ちリード要求なし状態STS11においてホスト機器2からリード要求を受信すると(E1)、メモリシステム3は、リード処理の実行を開始することによってリード処理中状態STS12に遷移する。リード処理中状態STS12においてホスト機器2から更なるリード要求を受信すると(E2)、メモリシステム3は、コマンドキュー25内の全てのリード要求に対応するリード処理を完了させるまで、リード処理中状態STS12を維持する。コマンドキュー25内の全てのリード要求に対応するリード処理が完了すると(E3)、メモリシステム3は、待ちリード要求なし状態STS11に遷移する。
待ちリード要求なし状態STS11においてプログラム処理を開始すると(E4)、メモリシステム3は、待ちリード要求なし状態STS21に遷移する。待ちリード要求なし状態STS21においてプログラム処理が完了すると(E5)、メモリシステム3は、待ちリード要求なし状態STS11に遷移する。待ちリード要求なし状態STS21においてリード要求を受信すると(E6)、メモリシステム3は、サスペンド処理保留中状態STS22に遷移する。
サスペンド条件が満たされない場合(E7)、メモリシステム3は、サスペンド処理保留中状態STS22を維持する。サスペンド処理保留中状態STS22においてプログラム処理が完了すると(E8)、メモリシステム3は、リード処理中状態STS12に遷移する。サスペンド処理保留中状態STS22においてサスペンド条件が満たされると(E9)、メモリシステム3は、サスペンド処理中状態STS31に遷移する。
サスペンド処理中状態STS31においてサスペンド処理が完了すると(E10)、メモリシステム3は、リード処理中状態STS32に遷移する。リード処理中状態STS32においてホスト機器2から更なるリード要求を受信すると(E11)、メモリシステム3は、コマンドキュー25内の全てのリード要求に対応するリード処理を完了させるまで、リード処理中状態STS32を維持する。コマンドキュー25内の全てのリード要求に対応するリード処理が完了すると(E12)、メモリシステム3は、レジューム処理中状態STS33に遷移する。レジューム処理が完了すると(E13)、メモリシステム3は、待ちリード要求なし状態STS21に遷移する。
すなわち、プログラムレディ状態STS1においてプログラム処理を開始すると(E4)、メモリシステム3は、プログラムビジー状態STS2に遷移する。プログラムビジー状態STS2においてプログラム処理が完了すると(E5又はE8)、メモリシステム3は、プログラムレディ状態STS1に遷移する。プログラムビジー状態STS2においてサスペンド条件が満たされると(E9)、メモリシステム3は、プログラムサスペンド状態STS3に遷移する。プログラムサスペンド状態STS3においてレジューム処理が完了すると(E13)、メモリシステム3は、プログラムビジー状態STS2に遷移する。
1.2.4 サスペンド判定処理を伴うプログラム処理における状態遷移
図6は、第1実施形態に係るメモリシステムのサスペンド判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図6の例では、閾値Nが2である場合が示される。なお、図6の例では、時刻t10以前において、メモリシステム3の状態は、待ちリード要求なし状態STS11であるものとする。
図6は、第1実施形態に係るメモリシステムのサスペンド判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図6の例では、閾値Nが2である場合が示される。なお、図6の例では、時刻t10以前において、メモリシステム3の状態は、待ちリード要求なし状態STS11であるものとする。
図6に示すように、時刻t10において、メモリコントローラ20は、プログラム処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、待ちリード要求なし状態STS21となる。
時刻t11において、メモリコントローラ20は、1個目のリード要求(第1リード要求)を受信する。これにより、コマンドキュー25内のリード要求数は、閾値N(=2)個未満の1個となる。このため、メモリシステム3の状態は、サスペンド処理保留中状態STS22となる。
時刻t12において、メモリコントローラ20は、2個目のリード要求(第2リード要求)を受信する。これにより、コマンドキュー25内のリード要求数は、閾値N(=2)と等しい2個となる。このため、メモリコントローラ20は、サスペンド処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、サスペンド処理中状態STS31となる。
時刻t13において、サスペンド処理が終了する。そして、メモリコントローラ20は、第1リード要求に基づくリード処理(第1リード処理)を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、リード処理中状態STS32となる。
時刻t14において、第1リード処理が終了する。そして、メモリコントローラ20は、第2リード要求に基づくリード処理(第2リード処理)を不揮発性メモリ10に実行させる。メモリシステム3は、リード処理中状態STS32を維持する。
時刻t15において、第2リード処理が終了する。メモリコントローラ20は、コマンドキュー25内のリード要求数が0個であることを確認した後、レジューム処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、レジューム処理中状態STS33となる。
時刻t16において、レジューム処理が終了する。そして、メモリコントローラ20は、プログラム処理を不揮発性メモリ10に再開させる。これに伴い、メモリシステム3の状態は、待ちリード要求なし状態STS21となる。
時刻t17において、プログラム処理が終了する。その後、メモリコントローラ20は、不揮発性メモリ10にデータが問題なく書き込まれたことをステータスリード処理によって確認する。これにより、メモリシステム3の状態は、待ちリード要求なし状態STS11に戻る。
1.3 第1実施形態に係る効果
第1実施形態によれば、メモリコントローラ20は、コマンドキュー25内のリード要求の数が閾値N個以上となるまで、サスペンド処理を保留する。これにより、メモリコントローラ20は、1回のプログラム処理の中断中に、少なくとも閾値N個のリード処理をまとめて実行することができる。このため、リード要求を受信する毎にプログラム処理を中断する場合よりも、サスペンド処理及びレジューム処理の回数を低減することができる。したがって、リード要求を受信する毎にプログラム処理を中断する場合よりも、サスペンド処理及びレジューム処理に要する時間の合計(累積オーバヘッド)を減らすことができると共に、ライトスループットの低下を抑制できる。
第1実施形態によれば、メモリコントローラ20は、コマンドキュー25内のリード要求の数が閾値N個以上となるまで、サスペンド処理を保留する。これにより、メモリコントローラ20は、1回のプログラム処理の中断中に、少なくとも閾値N個のリード処理をまとめて実行することができる。このため、リード要求を受信する毎にプログラム処理を中断する場合よりも、サスペンド処理及びレジューム処理の回数を低減することができる。したがって、リード要求を受信する毎にプログラム処理を中断する場合よりも、サスペンド処理及びレジューム処理に要する時間の合計(累積オーバヘッド)を減らすことができると共に、ライトスループットの低下を抑制できる。
また、第1実施形態によれば、コマンドキュー25内のリード要求の数が閾値N個以上の場合、メモリコントローラ20は、サスペンド処理を実行する。これにより、メモリコントローラ20は、サスペンド条件が満たされれば、プログラム処理の完了を待つことなく、リード処理を実行することができる。このため、プログラム処理の完了後にリード処理を実行する場合よりも、リード要求を受信してからリード処理の完了までに要する時間を短縮することができる。したがって、プログラム処理の完了後にリード処理を実行する場合よりも、リードレイテンシの増加を抑制できる。
このように、第1実施形態によれば、リード要求を受信する毎にプログラム処理を中断する場合よりも改善されたライトスループットと、プログラム処理の完了後にリード処理を実行する場合よりも改善されたリードレイテンシと、を両立させることができる。したがって、ライトスループット及びリードレイテンシのトレードオフを調整する手段を提供することができる。
1.4 第1実施形態の変形例
上述の第1実施形態では、メモリコントローラ20が、未実行のリード要求が閾値N個以上となるまでサスペンド処理を保留する場合について説明したが、実施形態はこれに限られない。例えば、メモリコントローラ20は、1個目のリード要求の受信からの経過時間に基づいて、サスペンド処理を保留する期間を制御してもよい。以下の説明では、第1実施形態と同等の構成及び動作については説明を省略し、第1実施形態と異なる構成及び動作について主に説明する。
上述の第1実施形態では、メモリコントローラ20が、未実行のリード要求が閾値N個以上となるまでサスペンド処理を保留する場合について説明したが、実施形態はこれに限られない。例えば、メモリコントローラ20は、1個目のリード要求の受信からの経過時間に基づいて、サスペンド処理を保留する期間を制御してもよい。以下の説明では、第1実施形態と同等の構成及び動作については説明を省略し、第1実施形態と異なる構成及び動作について主に説明する。
1.4.1 メモリコントローラの構成
図7は、第1実施形態の変形例に係るメモリコントローラの構成を示すブロック図である。図7に示すように、メモリコントローラ20は、タイマ26を更に含む。
図7は、第1実施形態の変形例に係るメモリコントローラの構成を示すブロック図である。図7に示すように、メモリコントローラ20は、タイマ26を更に含む。
タイマ26は、時間を計測する。例えば、タイマ26は、制御回路21からの開始指示に基づき、計測を開始する(スタート)。タイマ26は、制御回路21からの一時停止指示に基づき、計測を一時停止する(サスペンド)。タイマ26は、制御回路21からの再開指示に基づき、一時停止した計測を再開する(レジューム)。タイマ26は、制御回路21からの終了指示に基づき、計測を終了する(ストップ)。
タイマ26のスタート前、及びストップ後において、タイマ26は、停止中の状態である。計測を開始してから計測を終了するまでの間、タイマ26は、計測中の状態である。第1実施形態の変形例では、タイマ26は、リード要求を受信したことによりメモリシステム3の状態がサスペンド処理保留中状態STS22になってからの経過時間を計測する。
メモリコントローラ20は、例えば、タイマ26の計測の開始時からの計測値を取得する。これにより、メモリコントローラ20は、所望の時点からの経過時間を把握することができる。
1.4.2 プログラム処理
図8は、第1実施形態の変形例に係るメモリシステムにおけるプログラム処理を含む一連の処理の一例を示すフローチャートである。
図8は、第1実施形態の変形例に係るメモリシステムにおけるプログラム処理を含む一連の処理の一例を示すフローチャートである。
プログラム条件が満たされると(開始)、メモリコントローラ20は、サスペンド判定処理を伴うプログラム処理を不揮発性メモリ10に実行させる(S1)。
サスペンド判定処理を伴うプログラム処理が完了すると、メモリコントローラ20は、ステータスリード処理を不揮発性メモリ10に実行させる(S2)。
S2の処理において不揮発性メモリ10からプログラム処理が完了した旨のステータスを受信すると、メモリコントローラ20は、タイマ26が計測中であるか否かを判定する(S3)。
タイマ26が計測中である場合(S3;true)、メモリコントローラ20は、タイマ26をストップさせる(S4)。S4の処理が終わると、プログラム処理を含む一連の処理は終了となる(終了)。
また、タイマ26が計測中でない場合(S3;false)、S4の処理を実行することなく、プログラム処理を含む一連の処理は終了となる(終了)。
1.4.3 サスペンド判定処理
図9は、第1実施形態の変形例に係るメモリシステムにおけるサスペンド判定処理を含む一連の処理の一例を示すフローチャートである。図9の例では、サスペンド判定処理の開始条件は、メモリコントローラ20がホスト機器2からリード要求を受信すること、又はタイマ26の計測値が閾値T1以上になること、である。閾値T1は、正の実数である。
図9は、第1実施形態の変形例に係るメモリシステムにおけるサスペンド判定処理を含む一連の処理の一例を示すフローチャートである。図9の例では、サスペンド判定処理の開始条件は、メモリコントローラ20がホスト機器2からリード要求を受信すること、又はタイマ26の計測値が閾値T1以上になること、である。閾値T1は、正の実数である。
すなわち、ホスト機器2からリード要求を受信した、又はタイマ26の計測値が閾値T1以上となった場合(開始)、メモリコントローラ20は、プログラム処理中であるか否かを判定する(S20)。
プログラム処理中でない場合(S20;false)、メモリコントローラ20は、受信したリード要求に基づくリード処理を不揮発性メモリ10に実行させる(S21)。S21の処理が終わると、サスペンド判定処理を含む一連の処理は終了となる(終了)。
プログラム処理中である場合(S20;true)、メモリコントローラ20は、サスペンド条件が満たされるか否かを判定する(S22)。図9の例におけるサスペンド条件は、コマンドキュー25内のリード要求が閾値N個以上である、又はタイマ26の計測値が閾値T1以上であること、である。
コマンドキュー25内のリード要求が閾値N個以上なく、かつタイマ26の計測値が閾値T1未満である場合(S22;false)、メモリコントローラ20は、プログラム処理の中断を保留する。すなわち、メモリコントローラ20は、プログラム処理を中断しない。そして、メモリコントローラ20は、コマンドキュー25内のリード要求が1個、かつタイマ26が停止中であるか否かを判定する(S23)。
コマンドキュー25内のリード要求が1個でない、又はタイマ26が停止中でない場合(S23;false)、サスペンド判定処理を含む一連の処理は終了となる(終了)。
コマンドキュー25内のリード要求が1個、かつタイマ26が停止中である場合(S23;true)、メモリコントローラ20は、タイマ26をスタートさせる(S24)。
S24の処理が終わると、タイマ26が計測中の状態を維持しつつ、サスペンド判定処理を含む一連の処理は終了となる(終了)。
コマンドキュー25内のリード要求が閾値N個以上である、又はタイマ26の計測値が閾値T1以上である場合(S22;true)、メモリコントローラ20は、タイマ26をストップさせる(S25)。
タイマ26をストップさせた後、メモリコントローラ20は、不揮発性メモリ10にサスペンド処理を実行させる(S26)。
サスペンド処理によってプログラム処理が中断された後、メモリコントローラ20は、リード要求に基づくリード処理を不揮発性メモリ10に実行させる(S27)。
S27の処理が終わるたびに、メモリコントローラ20は、コマンドキュー25内にリード要求がまだあるか否かを判定する(S28)。
コマンドキュー25内にリード要求がまだある場合(S28;true)、メモリコントローラ20は、リード要求に基づくリード処理を不揮発性メモリ10に実行させる(S27)。これにより、コマンドキュー25内の全てのリード要求に対応するリード処理が実行されるまで、S27及びS28の処理が繰り返される。
コマンドキュー25内にリード要求がない場合(S28;false)、メモリコントローラ20は、不揮発性メモリ10にレジューム処理を実行させる(S29)。
S29の処理が終わると、タイマ26が停止中の状態を維持しつつ、サスペンド判定処理を含む一連の処理は終了となる(終了)。
1.4.4 サスペンド判定処理を伴うプログラム処理における状態遷移
図10は、第1実施形態の変形例に係るメモリシステムのサスペンド判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図10の例では、コマンドキュー25内のリード要求数が閾値N個に達する前に、タイマ26の計測値が閾値T1に達することによって、サスペンド処理が実行される場合が示される。なお、図10の例では、時刻t20以前において、メモリシステム3の状態は、待ちリード要求なし状態STS11であるものとする。また、時刻t20以前において、タイマ26は停止中の状態であるとする。
図10は、第1実施形態の変形例に係るメモリシステムのサスペンド判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図10の例では、コマンドキュー25内のリード要求数が閾値N個に達する前に、タイマ26の計測値が閾値T1に達することによって、サスペンド処理が実行される場合が示される。なお、図10の例では、時刻t20以前において、メモリシステム3の状態は、待ちリード要求なし状態STS11であるものとする。また、時刻t20以前において、タイマ26は停止中の状態であるとする。
図10に示すように、時刻t20において、メモリコントローラ20は、プログラム処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、待ちリード要求なし状態STS21となる。
時刻t21において、メモリコントローラ20は、第1リード要求を受信する。これにより、コマンドキュー25内のリード要求数は、閾値N個未満の1個となる。このため、メモリシステム3の状態は、サスペンド処理保留中状態STS22となる。また、メモリコントローラ20は、第1リード要求の受信に応じて、タイマ26をスタートさせる。
時刻t22において、タイマ26の計測値が閾値T1に達する。メモリコントローラ20は、タイマ26をストップさせる。その後、メモリコントローラ20は、サスペンド処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、サスペンド処理中状態STS31となる。
時刻t23において、メモリコントローラ20は、第2リード要求を受信する。これにより、コマンドキュー25内のリード要求数は、2個となる。メモリシステム3は、サスペンド処理中状態STS31を維持する。
時刻t24において、サスペンド処理が終了する。そして、メモリコントローラ20は、第1リード処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、リード処理中状態STS32となる。
時刻t25において、第1リード処理が終了する。そして、メモリコントローラ20は、第2リード処理を不揮発性メモリ10に実行させる。メモリシステム3は、リード処理中状態STS32を維持する。
時刻t26において、第2リード処理が終了する。メモリコントローラ20は、コマンドキュー25内のリード要求数が0個であることを確認した後、レジューム処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、レジューム処理中状態STS33となる。
時刻t27において、レジューム処理が終了する。そして、メモリコントローラ20は、プログラム処理を不揮発性メモリ10に再開させる。これに伴い、メモリシステム3の状態は、待ちリード要求なし状態STS21となる。
時刻t28において、プログラム処理が終了する。その後、メモリコントローラ20は、不揮発性メモリ10にデータが問題なく書き込まれたことをステータスリード処理によって確認する。これにより、メモリシステム3の状態は、待ちリード要求なし状態STS11に戻る。
1.4.5 第1実施形態の変形例に係る効果
第1実施形態の変形例によれば、メモリコントローラ20は、コマンドキュー25内に1個目のリード要求が記憶されたことに応じて、タイマ26をスタートさせる。タイマ26の計測値が閾値T1に達した場合、メモリコントローラ20は、コマンドキュー25内のリード要求数が閾値N個以上であるか否かによらず、サスペンド処理を実行する。これにより、リード要求を受信したメモリコントローラ20は、閾値T1以内の期間でサスペンド処理を開始することができる。このため、第1実施形態において説明した効果を奏すると共に、2個目以降のリード要求を受信しない場合におけるリードレイテンシの増加を抑制できる。
第1実施形態の変形例によれば、メモリコントローラ20は、コマンドキュー25内に1個目のリード要求が記憶されたことに応じて、タイマ26をスタートさせる。タイマ26の計測値が閾値T1に達した場合、メモリコントローラ20は、コマンドキュー25内のリード要求数が閾値N個以上であるか否かによらず、サスペンド処理を実行する。これにより、リード要求を受信したメモリコントローラ20は、閾値T1以内の期間でサスペンド処理を開始することができる。このため、第1実施形態において説明した効果を奏すると共に、2個目以降のリード要求を受信しない場合におけるリードレイテンシの増加を抑制できる。
2. 第2実施形態
次に、第2実施形態に係るメモリシステムについて説明する。第2実施形態は、タイマ26の計測値が閾値に達するまでサスペンド処理を禁止する点において、第1実施形態と異なる。すなわち、第2実施形態では、タイマ26は、プログラム処理開始からの経過時間、及びレジューム処理終了からの経過時間を計測する。以下の説明では、第1実施形態の変形例と同等の構成及び動作については説明を省略し、第1実施形態の変形例と異なる構成及び動作について主に説明する。
次に、第2実施形態に係るメモリシステムについて説明する。第2実施形態は、タイマ26の計測値が閾値に達するまでサスペンド処理を禁止する点において、第1実施形態と異なる。すなわち、第2実施形態では、タイマ26は、プログラム処理開始からの経過時間、及びレジューム処理終了からの経過時間を計測する。以下の説明では、第1実施形態の変形例と同等の構成及び動作については説明を省略し、第1実施形態の変形例と異なる構成及び動作について主に説明する。
2.1 プログラム処理
図11は、第2実施形態に係るメモリシステムにおけるプログラム処理を含む一連の処理の一例を示すフローチャートである。
図11は、第2実施形態に係るメモリシステムにおけるプログラム処理を含む一連の処理の一例を示すフローチャートである。
プログラム条件が満たされると(開始)、メモリコントローラ20は、タイマ26をスタートさせる(S0)。
タイマ26の計測を開始させた後、メモリコントローラ20は、サスペンド判定処理を伴うプログラム処理を不揮発性メモリ10に実行させる(S1)。
なお、タイマ26をスタートさせるタイミングと、サスペンド判定処理を伴うプログラム処理を開始させるタイミングとは、同時であってもよい。すなわち、タイマ26は、サスペンド判定処理を伴うプログラム処理の開始時点から計測をスタートしてもよい。タイマ26は、不揮発性メモリ10内のページバッファへのデータイン処理の開始時点から計測をスタートしてもよい。タイマ26は、不揮発性メモリ10内のページバッファへのデータイン処理の完了時点から計測をスタートしてもよい。
S2以降の処理は、図8を参照して説明した第1実施形態の変形例の処理と同等であるため、説明を省略する。
2.2 第1サスペンド判定処理
まず、第1サスペンド判定処理について説明する。第1サスペンド判定処理は、プログラム処理中における1回目のサスペンド処理までに実行されるサスペンド判定処理である。
まず、第1サスペンド判定処理について説明する。第1サスペンド判定処理は、プログラム処理中における1回目のサスペンド処理までに実行されるサスペンド判定処理である。
図12は、第2実施形態に係るメモリシステムにおける第1サスペンド判定処理を含む一連の処理の一例を示すフローチャートである。図12の例では、第1サスペンド判定処理の開始条件は、プログラム処理における1回目の計測中において、メモリコントローラ20がホスト機器2からリード要求を受信すること、又はタイマ26の計測値が閾値T2以上になること、である。閾値T2は、正の実数である。
すなわち、プログラム処理における1回目の計測中において、ホスト機器2からリード要求を受信した、又はタイマ26の計測値が閾値T2以上となった場合(開始)、メモリコントローラ20は、第1サスペンド条件が満たされるか否かを判定する(S30)。図12の例における第1サスペンド条件は、コマンドキュー25内にリード要求があり、かつタイマ26の計測値が閾値T2以上であること、である。
コマンドキュー25内にリード要求があり、かつタイマ26の計測値が閾値T2以上である場合(S30;true)、メモリコントローラ20は、タイマ26をストップさせる(S31)。
タイマ26をストップさせた後、メモリコントローラ20は、不揮発性メモリ10に、プログラム処理中における1回目のサスペンド処理を実行させる(S32)。
サスペンド処理によってプログラム処理が中断された後、メモリコントローラ20は、リード要求に基づくリード処理を不揮発性メモリ10に実行させる(S33)。
S33の処理が終わるたびに、メモリコントローラ20は、コマンドキュー25内にリード要求がまだあるか否かを判定する(S34)。
コマンドキュー25内にリード要求がまだある場合(S34;true)、メモリコントローラ20は、リード要求に基づくリード処理を不揮発性メモリ10に実行させる(S33)。これにより、コマンドキュー25内の全てのリード要求に対応するリード処理が実行されるまで、S33及びS34の処理が繰り返される。
コマンドキュー25内にリード要求がない場合(S34;false)、メモリコントローラ20は、不揮発性メモリ10にレジューム処理を実行させる(S35)。
レジューム処理が終わると、メモリコントローラ20は、タイマ26をスタートさせる(S36)。
S36の処理が終わると、タイマ26が計測中の状態を維持しつつ、第1サスペンド判定処理を含む一連の処理は終了となる(終了)。
コマンドキュー25内にリード要求がない、又はタイマ26の計測値がT2未満である場合(S30;false)、メモリコントローラ20は、プログラム処理の中断を保留する。すなわち、メモリコントローラ20は、プログラム処理を中断しない。このため、タイマ26が計測中の状態を維持しつつ、第1サスペンド判定処理を含む一連の処理は終了となる(終了)。
2.3 第1サスペンド判定処理を伴うプログラム処理における状態遷移
図13は、第2実施形態に係るメモリシステムの第1サスペンド判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図13の例では、1回目の計測中において、コマンドキュー25内にリード要求が記憶された後に、タイマ26の計測値が閾値T2に達することによって、サスペンド処理が実行される場合が示される。なお、図13の例では、時刻t30以前において、メモリシステム3の状態は、待ちリード要求なし状態STS11であるものとする。
図13は、第2実施形態に係るメモリシステムの第1サスペンド判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図13の例では、1回目の計測中において、コマンドキュー25内にリード要求が記憶された後に、タイマ26の計測値が閾値T2に達することによって、サスペンド処理が実行される場合が示される。なお、図13の例では、時刻t30以前において、メモリシステム3の状態は、待ちリード要求なし状態STS11であるものとする。
図13に示すように、時刻t30において、メモリコントローラ20は、プログラム処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、待ちリード要求なし状態STS21となる。また、メモリコントローラ20は、プログラム処理の開始から、タイマ26をスタートさせる。
時刻t31において、メモリコントローラ20は、第1リード要求を受信する。これにより、コマンドキュー25内のリード要求数は、1個となる。しかしながら、タイマ26の計測値は閾値T2未満であるため、メモリコントローラ20は、プログラム処理の中断を保留する。このため、メモリシステム3の状態は、サスペンド処理保留中状態STS22となる。
時刻t32において、メモリコントローラ20は、第2リード要求を受信する。これにより、コマンドキュー25内のリード要求数は、2個となる。しかしながら、タイマ26の計測値は閾値T2未満であるため、メモリシステム3は、サスペンド処理保留中状態STS22を維持する。
時刻t33において、タイマ26の計測値が閾値T2に達する。メモリコントローラ20は、タイマ26をストップさせる。その後、メモリコントローラ20は、サスペンド処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、サスペンド処理中状態STS31となる。
時刻t34において、サスペンド処理が終了する。そして、メモリコントローラ20は、第1リード要求に基づくリード処理(第1リード処理)を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、リード処理中状態STS32となる。
時刻t35において、第1リード処理が終了する。そして、メモリコントローラ20は、第2リード要求に基づくリード処理(第2リード処理)を不揮発性メモリ10に実行させる。メモリシステム3は、リード処理中状態STS32を維持する。
時刻t36において、第2リード処理が終了する。メモリコントローラ20は、コマンドキュー25内のリード要求数が0個であることを確認した後、レジューム処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、レジューム処理中状態STS33となる。
時刻t37において、レジューム処理が終了する。そして、メモリコントローラ20は、プログラム処理を不揮発性メモリ10に再開させる。また、メモリコントローラ20は、タイマ26をスタートさせる。これに伴い、メモリシステム3の状態は、待ちリード要求なし状態STS21となる。
2.4 第2サスペンド判定処理
次に、第2サスペンド判定処理について説明する。第2サスペンド判定処理は、プログラム処理中における2回目以降のサスペンド処理において実行されるサスペンド判定処理である。
次に、第2サスペンド判定処理について説明する。第2サスペンド判定処理は、プログラム処理中における2回目以降のサスペンド処理において実行されるサスペンド判定処理である。
図14は、第2実施形態に係るメモリシステムにおける第2サスペンド判定処理を含む一連の処理の一例を示すフローチャートである。図14の例では、第2サスペンド判定処理の開始条件は、プログラム処理における2回目以降の計測中において、メモリコントローラ20がホスト機器2からリード要求を受信すること、又はタイマ26の計測値が閾値T3以上になること、である。閾値T3は、正の実数である。閾値T3は、閾値T2と等しくてもよい。閾値T3は、閾値T2と異なっていてもよい。
すなわち、プログラム処理における2回目以降の計測中において、ホスト機器2からリード要求を受信した、又はタイマ26の計測値が閾値T3以上となった場合(開始)、メモリコントローラ20は、第2サスペンド条件が満たされるか否かを判定する(S40)。図14の例における第2サスペンド条件は、コマンドキュー25内にリード要求があり、かつタイマ26の計測値が閾値T3以上であること、である。
コマンドキュー25内にリード要求があり、かつタイマ26の計測値が閾値T3以上である場合(S40;true)、メモリコントローラ20は、タイマ26をストップさせる(S41)。
タイマ26をストップさせた後、メモリコントローラ20は、不揮発性メモリ10に、プログラム処理中における2回目以降のサスペンド処理を実行させる(S42)。
サスペンド処理によってプログラム処理が中断された後、メモリコントローラ20は、リード要求に基づくリード処理を不揮発性メモリ10に実行させる(S43)。
S43の処理が終わるたびに、メモリコントローラ20は、コマンドキュー25内にリード要求がまだあるか否かを判定する(S44)。
コマンドキュー25内にリード要求がまだある場合(S44;true)、メモリコントローラ20は、リード要求に基づくリード処理を不揮発性メモリ10に実行させる(S43)。これにより、コマンドキュー25内の全てのリード要求に対応するリード処理が実行されるまで、S43及びS44の処理が繰り返される。
コマンドキュー25内にリード要求がない場合(S44;false)、メモリコントローラ20は、不揮発性メモリ10にレジューム処理を実行させる(S45)。
レジューム処理が終わると、メモリコントローラ20は、タイマ26をスタートさせる(S46)。
S46の処理が終わると、タイマ26が計測中の状態を維持しつつ、第2サスペンド判定処理を含む一連の処理は終了となる(終了)。
コマンドキュー25内にリード要求がない、又はタイマ26の計測値がT3未満である場合(S40;false)、メモリコントローラ20は、プログラム処理の中断を保留する。すなわち、メモリコントローラ20は、プログラム処理を中断しない。このため、タイマ26が計測中の状態を維持しつつ、第2サスペンド判定処理を含む一連の処理は終了となる(終了)。
2.5 第2サスペンド判定処理を伴うプログラム処理における状態遷移
図15は、第2実施形態に係るメモリシステムの第2サスペンド判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図15の例には、図13の例の続きとして時刻t37以降の処理の一例が示される。図15の例では、2回目の計測中において、コマンドキュー25内にリード要求が記憶された後に、タイマ26の計測値が閾値T3に達することによって、サスペンド処理が実行される場合が示される。
図15は、第2実施形態に係るメモリシステムの第2サスペンド判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図15の例には、図13の例の続きとして時刻t37以降の処理の一例が示される。図15の例では、2回目の計測中において、コマンドキュー25内にリード要求が記憶された後に、タイマ26の計測値が閾値T3に達することによって、サスペンド処理が実行される場合が示される。
図15に示すように、時刻t38において、メモリコントローラ20は、プログラム処理における3個目のリード要求(第3リード要求)を受信する。これにより、コマンドキュー25内のリード要求数は、1個となる。しかしながら、タイマ26の計測値は閾値T3未満であるため、メモリコントローラ20は、プログラム処理の中断を保留する。これにより、メモリシステム3の状態は、サスペンド処理保留中状態STS22となる。
時刻t39において、メモリコントローラ20は、プログラム処理における4個目のリード要求(第4リード要求)を受信する。これにより、コマンドキュー25内のリード要求数は、2個となる。しかしながら、タイマ26の計測値は閾値T3未満であるため、メモリシステム3は、サスペンド処理保留中状態STS22を維持する。
時刻t40において、タイマ26の計測値が閾値T3に達する。メモリコントローラ20は、タイマ26をストップさせる。その後、メモリコントローラ20は、サスペンド処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、サスペンド処理中状態STS31となる。
時刻t41において、サスペンド処理が終了する。そして、メモリコントローラ20は、第3リード要求に基づくリード処理(第3リード処理)を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、リード処理中状態STS32となる。
時刻t42において、第3リード処理が終了する。そして、メモリコントローラ20は、第4リード要求に基づくリード処理(第4リード処理)を不揮発性メモリ10に実行させる。メモリシステム3は、リード処理中状態STS32を維持する。
時刻t43において、第4リード処理が終了する。メモリコントローラ20は、コマンドキュー25内のリード要求数が0個であることを確認した後、レジューム処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、レジューム処理中状態STS33となる。
時刻t44において、レジューム処理が終了する。そして、メモリコントローラ20は、プログラム処理を不揮発性メモリ10に再開させる。また、メモリコントローラ20は、タイマ26をスタートさせる。これに伴い、メモリシステム3の状態は、待ちリード要求なし状態STS21となる。
時刻t45において、プログラム処理が終了する。その後、メモリコントローラ20は、不揮発性メモリ10にデータが問題なく書き込まれたことをステータスリード処理によって確認する。これにより、メモリシステム3の状態は、待ちリード要求なし状態STS11に戻る。
2.6 第2実施形態に係る効果
第2実施形態によれば、メモリコントローラ20は、プログラム処理の開始からの経過時間が閾値T2以上となるまで、サスペンド処理を保留する。これにより、プログラム処理の開始直後にサスペンド禁止期間を設けることができる。また、メモリコントローラ20は、前回のレジューム処理の終了からの経過時間が閾値T3以上となるまで、サスペンド処理を保留する。これにより、2つのサスペンド処理の間に少なくとも閾値T3のサスペンド禁止期間を設けることができる。このため、リード要求を受信する毎にサスペンド処理を実行する場合よりも、サスペンド処理が高頻度で繰り返されることを抑制できる。したがって、リード要求を受信する毎にサスペンド処理を実行する場合よりも、ライトスループットの低下を抑制できる。
第2実施形態によれば、メモリコントローラ20は、プログラム処理の開始からの経過時間が閾値T2以上となるまで、サスペンド処理を保留する。これにより、プログラム処理の開始直後にサスペンド禁止期間を設けることができる。また、メモリコントローラ20は、前回のレジューム処理の終了からの経過時間が閾値T3以上となるまで、サスペンド処理を保留する。これにより、2つのサスペンド処理の間に少なくとも閾値T3のサスペンド禁止期間を設けることができる。このため、リード要求を受信する毎にサスペンド処理を実行する場合よりも、サスペンド処理が高頻度で繰り返されることを抑制できる。したがって、リード要求を受信する毎にサスペンド処理を実行する場合よりも、ライトスループットの低下を抑制できる。
また、第2実施形態によれば、コマンドキュー25内のリード要求があり、かつタイマの計測値が閾値T2以上の場合、メモリコントローラ20は、サスペンド処理を実行する。これにより、メモリコントローラ20は、サスペンド条件が満たされれば、プログラム処理の完了を待つことなく、リード処理を実行することができる。このため、プログラム処理の完了後にリード処理を実行する場合よりも、リード要求を受信してからリード処理の完了までに要する時間を短縮することができる。したがって、プログラム処理の完了後にリード処理を実行する場合よりも、リードレイテンシの増加を抑制できる。
このように、第2実施形態によれば、リード要求を受信する毎にプログラム処理を中断する場合よりも改善されたライトスループットと、プログラム処理の完了後にリード処理を実行する場合よりも改善されたリードレイテンシと、を両立させることができる。したがって、第1実施形態と同様に、ライトスループット及びリードレイテンシのトレードオフを調整する手段を提供することができる。
なお、第2実施形態では、第1サスペンド判定処理及び第2サスペンド判定処理をいずれも実行する場合について説明したが、実施形態はこれに限られない。例えば、メモリコントローラ20は、第1サスペンド判定処理を実行し、第2サスペンド判定処理を実行しなくてもよい。メモリコントローラ20は、第2サスペンド判定処理を実行し、第1サスペンド判定処理を実行しなくてもよい。
2.7 第2実施形態の変形例
上述の第2実施形態では、メモリコントローラ20が、サスペンド禁止期間を設ける場合について説明したが、実施形態はこれに限られない。例えば、メモリコントローラ20は、サスペンド禁止期間内であっても、コマンドキュー25内のリード要求数が閾値以上となった場合には、サスペンド処理を実行してもよい。以下の説明では、第2実施形態と同等の構成及び動作については説明を省略し、第2実施形態と異なる構成及び動作について主に説明する。
上述の第2実施形態では、メモリコントローラ20が、サスペンド禁止期間を設ける場合について説明したが、実施形態はこれに限られない。例えば、メモリコントローラ20は、サスペンド禁止期間内であっても、コマンドキュー25内のリード要求数が閾値以上となった場合には、サスペンド処理を実行してもよい。以下の説明では、第2実施形態と同等の構成及び動作については説明を省略し、第2実施形態と異なる構成及び動作について主に説明する。
2.7.1 サスペンド判定処理
図16は、第2実施形態の変形例に係るメモリシステムにおける第2サスペンド判定処理を含む一連の処理の一例を示すフローチャートである。図16の例では、図14を参照して説明した第2実施形態の一連の処理において、S40の処理に代えて、S40-1及びS40-2の処理が実行される場合が示される。
図16は、第2実施形態の変形例に係るメモリシステムにおける第2サスペンド判定処理を含む一連の処理の一例を示すフローチャートである。図16の例では、図14を参照して説明した第2実施形態の一連の処理において、S40の処理に代えて、S40-1及びS40-2の処理が実行される場合が示される。
コマンドキュー25内にリード要求が閾値N個以上ある場合(S40-1;true)、メモリコントローラ20は、タイマ26をストップさせる(S41)。
コマンドキュー25内にリード要求が閾値N個以上ない場合(S40-1;false)、メモリコントローラ20は、コマンドキュー25内にリード要求があり、かつタイマ26の計測値が閾値T3以上であるか否かを判定する(S40-2)。
コマンドキュー25内にリード要求があり、かつタイマ26の計測値が閾値T3以上である場合(S40-2;true)、メモリコントローラ20は、タイマ26をストップさせる(S41)。
コマンドキュー25内にリード要求がない、又はタイマ26の計測値が閾値T3未満である場合(S40-2;false)、タイマ26が計測中の状態を維持しつつ、第2サスペンド判定処理を含む一連の処理は終了となる(終了)。
S42以降の処理は、図14におけるS42以降の処理と同等であるため、説明を省略する。
2.7.2 第2サスペンド判定処理を伴うプログラム処理における状態遷移
図17は、第2実施形態の変形例に係るメモリシステムの第2サスペンド判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図17の例には、図15の例と同様、図13の例の続きとして時刻t37以降の処理の一例が示される。図17の例では、2回目の計測中にコマンドキュー25内のリード要求数が閾値N(=2)個に達したことにより、タイマ26の計測値が閾値T3に達する前に、サスペンド処理が実行される場合が示される。
図17は、第2実施形態の変形例に係るメモリシステムの第2サスペンド判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図17の例には、図15の例と同様、図13の例の続きとして時刻t37以降の処理の一例が示される。図17の例では、2回目の計測中にコマンドキュー25内のリード要求数が閾値N(=2)個に達したことにより、タイマ26の計測値が閾値T3に達する前に、サスペンド処理が実行される場合が示される。
図17に示すように、時刻t38において、メモリコントローラ20は、第3リード要求を受信する。これにより、コマンドキュー25内のリード要求数は、閾値N個未満の1個となる。このため、メモリシステム3の状態は、サスペンド処理保留中状態STS22となる。
時刻t39において、メモリコントローラ20は、第4リード要求を受信する。これにより、コマンドキュー25内のリード要求数は、2個となる。この際、タイマ26の計測値は閾値T3未満であるものの、リード要求数が閾値N個以上となる。このため、メモリコントローラ20は、タイマ26をストップさせる。その後、メモリコントローラ20は、不揮発性メモリ10にサスペンド処理を実行させる。これに伴い、メモリシステム3の状態は、サスペンド処理中状態STS31となる。
時刻t40において、タイマ26の計測値が閾値T3に達する。なお、時刻t41’~t45’の処理は、図15における時刻t41~t45と同等の処理が、期間ΔT(=t40-t39)だけ早まって実行される。その後、メモリコントローラ20は、不揮発性メモリ10にデータが問題なく書き込まれたことをステータスリード処理によって確認する。これにより、メモリシステム3の状態は、待ちリード要求なし状態STS11に戻る。
2.7.3 第2実施形態の変形例に係る効果
第2実施形態の変形例によれば、メモリコントローラ20は、タイマ26の計測値が閾値T3以上であるか否かによらず、コマンドキュー25内のリード要求数が閾値N個以上となった時点でサスペンド処理を実行する。これにより、ライトスループット及びリードレイテンシのトレードオフを調整しつつ、リードレイテンシの増加を抑制することができる。
第2実施形態の変形例によれば、メモリコントローラ20は、タイマ26の計測値が閾値T3以上であるか否かによらず、コマンドキュー25内のリード要求数が閾値N個以上となった時点でサスペンド処理を実行する。これにより、ライトスループット及びリードレイテンシのトレードオフを調整しつつ、リードレイテンシの増加を抑制することができる。
なお、第2実施形態の変形例では、第2実施形態における第2サスペンド判定処理に対して、リード要求数に関する判定処理を加える場合について説明しているが、実施形態はこれに限られない。例えば、第2実施形態における第1サスペンド判定処理に対して、リード要求数に関する判定処理を加えてもよい。すなわち、メモリコントローラ20は、プログラム処理の開始を起点とするサスペンド禁止期間の経過の有無に関わらず、コマンドキュー25内にN個以上のリード要求がたまったら、不揮発性メモリ10にサスペンド処理を実行させてもよい。このように、タイマ26がプログラム処理開始からの経過時間を計測する場合でも、第2実施形態の変形例と同等の効果を奏することができる。
3. 第3実施形態
次に、第3実施形態に係るメモリシステムについて説明する。第3実施形態は、プログラム処理が中断される期間に、不揮発性メモリ10に対して並行して実行されるリード処理を積極的に実行するようにサスペンド処理の実行タイミングを制御する点において、第1実施形態及び第2実施形態と異なる。以下の説明では、第1実施形態と同等の構成及び動作については説明を省略し、第1実施形態と異なる構成及び動作について主に説明する。
次に、第3実施形態に係るメモリシステムについて説明する。第3実施形態は、プログラム処理が中断される期間に、不揮発性メモリ10に対して並行して実行されるリード処理を積極的に実行するようにサスペンド処理の実行タイミングを制御する点において、第1実施形態及び第2実施形態と異なる。以下の説明では、第1実施形態と同等の構成及び動作については説明を省略し、第1実施形態と異なる構成及び動作について主に説明する。
3.1 不揮発性メモリの構成
図18は、第3実施形態に係る不揮発性メモリの構成の一例を示すブロック図である。図18に示すように、不揮発性メモリ10は、複数のプレーンPB(PB0、…、PBm)を含む(mは1以上の整数)。複数のプレーンPBの各々は、複数のメモリセルトランジスタを含む。複数のプレーンPBは、互いに並列に動作可能である。
図18は、第3実施形態に係る不揮発性メモリの構成の一例を示すブロック図である。図18に示すように、不揮発性メモリ10は、複数のプレーンPB(PB0、…、PBm)を含む(mは1以上の整数)。複数のプレーンPBの各々は、複数のメモリセルトランジスタを含む。複数のプレーンPBは、互いに並列に動作可能である。
3.2 サスペンド判定処理
図19は、第3実施形態に係るメモリシステムにおけるサスペンド判定処理を含む一連の処理の一例を示すフローチャートである。図4の例と同様、図19の例では、サスペンド判定処理の開始条件は、メモリコントローラ20がホスト機器2からリード要求を受信することである。
図19は、第3実施形態に係るメモリシステムにおけるサスペンド判定処理を含む一連の処理の一例を示すフローチャートである。図4の例と同様、図19の例では、サスペンド判定処理の開始条件は、メモリコントローラ20がホスト機器2からリード要求を受信することである。
S50及びS51の処理は、図4におけるS10及びS11の処理と同等であるため、説明を省略する。
プログラム処理中である場合(S50;true)、メモリコントローラ20は、サスペンド条件が満たされるか否かを判定する(S52)。図19の例におけるサスペンド条件は、異なるM個のプレーンPBに対するリード要求がそれぞれ閾値L個以上コマンドキュー25内にあることである。数Mは、2以上(m+1)以下の整数である(2≦M≦m+1)。数Mは、不揮発性メモリ10に含まれるプレーン数(m+1)と等しくてもよく、プレーン数(m+1)と異なっていてもよい。閾値Lは、1以上の整数である(L≧1)。
M個のうち少なくとも1個のプレーンPBに対するリード要求がコマンドキュー25内に閾値L個以上ない場合(S52;false)、メモリコントローラ20は、プログラム処理の中断を保留する。すなわち、メモリコントローラ20は、プログラム処理を中断しない。これにより、サスペンド判定処理を含む一連の処理は終了となる(終了)。
異なるM個のプレーンPBに対するリード要求がそれぞれ閾値L個以上コマンドキュー25内にある場合(S52;true)、メモリコントローラ20は、不揮発性メモリ10にサスペンド処理を実行させる(S53)。
サスペンド処理によってプログラム処理が中断された後、メモリコントローラ20は、リード要求に基づくリード処理を不揮発性メモリ10に実行させる(S54)。不揮発性メモリ10は、異なるMプレーンに対するリード処理を並行して実行する。
S54の処理が終わるたびに、メモリコントローラ20は、コマンドキュー25内にリード要求がまだあるか否かを判定する(S55)。
コマンドキュー25内にリード要求がまだある場合(S55;true)、モリコントローラ20は、リード要求に基づくリード処理を不揮発性メモリ10に実行させる(S54)。コマンドキュー25内に少なくとも2個以上のプレーンPBに対するリード要求がある場合、メモリコントローラ20は、2個以上のプレーンPBに対してリード処理を並行して実行させてもよい。コマンドキュー25内に1個のプレーンPBに対するリード要求しかない場合、不揮発性メモリ10は、1個のプレーンPBに対するリード処理を実行させてもよい。これにより、コマンドキュー25内の全てのリード要求に対応するリード処理が実行されるまで、S54及びS55の処理が繰り返される。
コマンドキュー25内にリード要求がない場合(S55;false)、メモリコントローラ20は、不揮発性メモリ10にレジューム処理を実行させる(S56)。
S56の処理が終わると、サスペンド判定処理を含む一連の処理は終了となる(終了)。
3.3 サスペンド判定処理を伴うプログラム処理における状態遷移
図20は、第3実施形態に係るメモリシステムのサスペンド判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図20の例では、閾値Lが1、かつ数Mが2である場合が示される。なお、図20の例では、時刻t50以前において、メモリシステム3の状態は、待ちリード要求なし状態STS11であるものとする。
図20は、第3実施形態に係るメモリシステムのサスペンド判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図20の例では、閾値Lが1、かつ数Mが2である場合が示される。なお、図20の例では、時刻t50以前において、メモリシステム3の状態は、待ちリード要求なし状態STS11であるものとする。
図20に示すように、時刻t50において、メモリコントローラ20は、不揮発性メモリ10のプレーンPB0及びPB1に対してプログラム処理を並行して実行させる。これに伴い、メモリシステム3の状態は、待ちリード要求なし状態STS21となる。
時刻t51において、メモリコントローラ20は、プレーンPB0からのリードを要求する第1リード要求(PB0)を受信する。これにより、コマンドキュー25内のリード要求数は、プレーンPB0に対して閾値L(=1)個となる。しかしながら、コマンドキュー25内のリード要求数は、プレーンPB1に対して閾値L(=1)個未満の0個である。このため、メモリシステム3の状態は、サスペンド処理保留中状態STS22となる。
時刻t52において、メモリコントローラ20は、プレーンPB1からのリードを要求する第2リード要求(PB1)を受信する。これにより、コマンドキュー25内のリード要求数は、プレーンPB0及びPB1の各々に対して閾値L(=1)個となる。このため、メモリコントローラ20は、サスペンド処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、サスペンド処理中状態STS31となる。
時刻t53において、サスペンド処理が終了する。そして、メモリコントローラ20は、プレーンPB0に対する第1リード処理(PB0)を不揮発性メモリ10に実行させる。また、メモリコントローラ20は、第1リード処理(PB0)と並行して、プレーンPB1に対する第2リード処理(PB1)を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、リード処理中状態STS32となる。
時刻t54において、第1リード処理(PB0)及び第2リード処理(PB1)が終了する。メモリコントローラ20は、コマンドキュー25内のリード要求数が0個であることを確認した後、レジューム処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、レジューム処理中状態STS33となる。
時刻t55において、レジューム処理が終了する。そして、メモリコントローラ20は、不揮発性メモリ10のプレーンPB0及びPB1に対する並行したプログラム処理を再開させる。これに伴い、メモリシステム3の状態は、待ちリード要求なし状態STS21となる。
時刻t56において、プログラム処理が終了する。その後、メモリコントローラ20は、不揮発性メモリ10にデータが問題なく書き込まれたことをステータスリード処理によって確認する。これにより、メモリシステム3の状態は、待ちリード要求なし状態STS11に戻る。
3.4 第3実施形態に係る効果
第3実施形態によれば、コマンドキュー25内の互い異なるM個のプレーンPBに対するリード要求の数がそれぞれ閾値L個以上となるまで、メモリコントローラ20は、サスペンド処理を保留する。これにより、メモリコントローラ20は、1回のプログラム処理の中断中に、M個のプレーンPBのそれぞれに対する閾値L個以上のリード処理をまとめて実行することができる。このため、1個のプレーンPBに対するリード要求を受信する毎にプログラム処理を中断する場合よりも、サスペンド処理及びレジューム処理の回数を低減することができる。したがって、1個のプレーンPBに対するリード要求を受信する毎にプログラム処理を中断する場合よりも、累積オーバヘッドを減らすと共に、ライトスループットの低下を抑制できる。
第3実施形態によれば、コマンドキュー25内の互い異なるM個のプレーンPBに対するリード要求の数がそれぞれ閾値L個以上となるまで、メモリコントローラ20は、サスペンド処理を保留する。これにより、メモリコントローラ20は、1回のプログラム処理の中断中に、M個のプレーンPBのそれぞれに対する閾値L個以上のリード処理をまとめて実行することができる。このため、1個のプレーンPBに対するリード要求を受信する毎にプログラム処理を中断する場合よりも、サスペンド処理及びレジューム処理の回数を低減することができる。したがって、1個のプレーンPBに対するリード要求を受信する毎にプログラム処理を中断する場合よりも、累積オーバヘッドを減らすと共に、ライトスループットの低下を抑制できる。
また、第3実施形態によれば、コマンドキュー25内の互い異なるM個のプレーンPBに対するリード要求の数がそれぞれ閾値L個以上の場合、メモリコントローラ20は、サスペンド処理を実行する。これにより、メモリコントローラ20は、サスペンド条件が満たされれば、プログラム処理の完了を待つことなく、リード処理を実行することができる。このため、プログラム処理の完了後にリード処理を実行する場合よりも、リード要求を受信してからリード処理の完了までに要する時間を短縮することができる。したがって、プログラム処理の完了後にリード処理を実行する場合よりも、リードレイテンシの増加を抑制できる。
このように、第3実施形態によれば、リード要求を受信する毎にプログラム処理を中断する場合よりも改善されたライトスループットと、プログラム処理の完了後にリード処理を実行する場合よりも改善されたリードレイテンシと、を両立させることができる。したがって、ライトスループット及びリードレイテンシのトレードオフを調整する手段を提供することができる。
1個のプレーンPBに対するリード要求を受信する毎にプログラム処理を中断する場合、M個のプレーンPBにおいて、リード処理を実行するプレーンPBと、リード処理を実行しないプレーンPBと、の両方が存在する。リード処理を実行しないプレーンPBは、他のプレーンPBのリード処理が終了するまで、待機状態となる。このことは、不揮発性メモリ10の稼働率の低下の要因となり、好ましくない。第3実施形態によれば、プログラム処理の1回の中断中に、M個のプレーンPBによる並行したリード処理を少なくともL回実行する。このため、不揮発性メモリ10の稼働率の低下を抑制できる。
3.5 第3実施形態の第1変形例
上述の第3実施形態では、M個のプレーンPBに対してそれぞれ閾値L個以上のリード要求がコマンドキュー25内に蓄積されるまでメモリコントローラ20がサスペンド処理を保留する場合について説明したが、実施形態はこれに限られない。例えば、メモリコントローラ20は、第1実施形態の変形例のように、1個目のリード要求の受信からの経過時間に基づいて、サスペンド処理を保留する期間を制御してもよい。すなわち、第3実施形態の第1変形例では、タイマ26は、リード要求を受信したことによりメモリシステム3の状態がサスペンド処理保留中状態STS22になってからの経過時間を計測する。以下の説明では、第1実施形態の変形例及び第3実施形態と同等の構成及び動作については説明を省略し、第1実施形態の変形例及び第3実施形態と異なる構成及び動作について主に説明する。
上述の第3実施形態では、M個のプレーンPBに対してそれぞれ閾値L個以上のリード要求がコマンドキュー25内に蓄積されるまでメモリコントローラ20がサスペンド処理を保留する場合について説明したが、実施形態はこれに限られない。例えば、メモリコントローラ20は、第1実施形態の変形例のように、1個目のリード要求の受信からの経過時間に基づいて、サスペンド処理を保留する期間を制御してもよい。すなわち、第3実施形態の第1変形例では、タイマ26は、リード要求を受信したことによりメモリシステム3の状態がサスペンド処理保留中状態STS22になってからの経過時間を計測する。以下の説明では、第1実施形態の変形例及び第3実施形態と同等の構成及び動作については説明を省略し、第1実施形態の変形例及び第3実施形態と異なる構成及び動作について主に説明する。
3.5.1 サスペンド判定処理
図21は、第3実施形態の第1変形例に係るメモリシステムにおけるサスペンド判定処理を含む一連の処理の一例を示すフローチャートである。図21の例では、図9の例と同様、サスペンド判定処理の開始条件は、メモリコントローラ20がホスト機器2からリード要求を受信すること、又はタイマ26の計測値が閾値T1以上になること、である。
図21は、第3実施形態の第1変形例に係るメモリシステムにおけるサスペンド判定処理を含む一連の処理の一例を示すフローチャートである。図21の例では、図9の例と同様、サスペンド判定処理の開始条件は、メモリコントローラ20がホスト機器2からリード要求を受信すること、又はタイマ26の計測値が閾値T1以上になること、である。
S60及びS61の処理は、図9におけるS20及びS21の処理と同等であるため、説明を省略する。
プログラム処理中である場合(S60;true)、メモリコントローラ20は、サスペンド条件が満たされるか否かを判定する(S62)。図21の例におけるサスペンド条件は、異なるM個のプレーンPBに対するリード要求がそれぞれ閾値L個以上コマンドキュー25内にある、又はタイマ26の計測値が閾値T1以上であること、である。
少なくとも1個のプレーンPBに対するリード要求が閾値L個以上なく、かつ計測値が閾値T1未満である場合(S62;false)、メモリコントローラ20は、プログラム処理の中断を保留する。すなわち、メモリコントローラ20は、プログラム処理を中断しない。そして、メモリコントローラ20は、コマンドキュー25内のリード要求が1個、かつタイマ26が停止中であるか否かを判定する(S63)。
コマンドキュー25内のリード要求が1個、かつタイマ26が停止中である場合(S63;true)、メモリコントローラ20は、タイマ26をスタートさせる(S64)。
S64の処理が終わると、タイマ26が計測中の状態を維持しつつ、サスペンド判定処理を含む一連の処理は終了となる(終了)。
M個のプレーンPBに対するリード要求がそれぞれ閾値L個以上である、又はタイマ26の計測値が閾値T1以上である場合(S62;true)、メモリコントローラ20は、タイマ26をストップさせる(S65)。
タイマ26をストップさせた後、メモリコントローラ20は、不揮発性メモリ10にサスペンド処理を実行させる(S66)。
サスペンド処理によってプログラム処理が中断された後、メモリコントローラ20は、リード要求に基づくリード処理を不揮発性メモリ10に実行させる(S67)。コマンドキュー25内に少なくとも2個以上のプレーンPBに対するリード要求がある場合、メモリコントローラ20は、2個以上のプレーンPBに対してリード処理を並行して実行させてもよい。コマンドキュー25内に1個のプレーンPBに対するリード要求しかない場合、メモリコントローラ20は、1個のプレーンPBに対するリード処理を実行させてもよい。
S67の処理が終わるたびに、メモリコントローラ20は、コマンドキュー25内にリード要求がまだあるか否かを判定する(S68)。
コマンドキュー25内にリード要求がまだある場合(S68;true)、メモリコントローラ20は、リード要求に基づくリード処理を不揮発性メモリ10に実行させる(S67)。コマンドキュー25内に少なくとも2個以上のプレーンPBに対するリード要求がある場合、メモリコントローラ20は、2個以上のプレーンPBに対してリード処理を並行して実行させてもよい。コマンドキュー25内に1個のプレーンPBに対するリード要求しかない場合、不揮発性メモリ10は、1個のプレーンPBに対するリード処理を実行させてもよい。これにより、コマンドキュー25内の全てのリード要求に対応するリード処理が実行されるまで、S67及びS68の処理が繰り返される。
コマンドキュー25内にリード要求がない場合(S68;false)、メモリコントローラ20は、不揮発性メモリ10にレジューム処理を実行させる(S69)。
S69の処理が終わると、タイマ26が停止中の状態を維持しつつ、サスペンド判定処理を含む一連の処理は終了となる(終了)。
3.5.2 サスペンド判定処理を伴うプログラム処理における状態遷移
図22は、第3実施形態の第1変形例に係るメモリシステムのサスペンド判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図22の例では、M個のプレーンPBに対するリード要求数がそれぞれ閾値L個に達する前に、タイマ26の計測値が閾値T1に達することによって、サスペンド処理が実行される場合が示される。図22の例では、閾値Lが1、かつ数Mが2である場合が示される。なお、図22の例では、時刻t60以前において、メモリシステム3の状態は、待ちリード要求なし状態STS11であるものとする。
図22は、第3実施形態の第1変形例に係るメモリシステムのサスペンド判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図22の例では、M個のプレーンPBに対するリード要求数がそれぞれ閾値L個に達する前に、タイマ26の計測値が閾値T1に達することによって、サスペンド処理が実行される場合が示される。図22の例では、閾値Lが1、かつ数Mが2である場合が示される。なお、図22の例では、時刻t60以前において、メモリシステム3の状態は、待ちリード要求なし状態STS11であるものとする。
図22に示すように、時刻t60において、メモリコントローラ20は、不揮発性メモリ10のプレーンPB0及びPB1に対してプログラム処理を並行して実行させる。これに伴い、メモリシステム3の状態は、待ちリード要求なし状態STS21となる。
時刻t61において、メモリコントローラ20は、第1リード要求(PB0)を受信する。これにより、コマンドキュー25内のリード要求数は、プレーンPB0に対してL(=1)個となる。しかしながら、コマンドキュー25内のリード要求数は、プレーンPB1に対して閾値L(=1)個未満の0個である。このため、メモリシステム3の状態は、サスペンド処理保留中状態STS22となる。メモリコントローラ20は、第1リード要求(PB0)の受信に応じて、タイマ26をスタートさせる。
時刻t62において、タイマ26の計測値が閾値T1に達する。メモリコントローラ20は、タイマ26をストップさせる。その後、メモリコントローラ20は、サスペンド処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、サスペンド処理中状態STS31となる。
時刻t63において、プレーンPB1に対するリード要求を受信していない状態のまま、サスペンド処理が終了する。そして、メモリコントローラ20は、第1リード処理(PB0)を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、リード処理中状態STS32となる。
時刻t64において、第1リード処理(PB0)が終了する。メモリコントローラ20は、コマンドキュー25内のリード要求数が0個であることを確認した後、レジューム処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、レジューム処理中状態STS33となる。
時刻t65において、レジューム処理が終了する。そして、メモリコントローラ20は、不揮発性メモリ10のプレーンPB0及びPB1に対する並行したプログラム処理を再開させる。これに伴い、メモリシステム3の状態は、待ちリード要求なし状態STS21となる。
時刻t66において、プログラム処理が終了する。その後、メモリコントローラ20は、不揮発性メモリ10にデータが問題なく書き込まれたことをステータスリード処理によって確認する。これにより、メモリシステム3の状態は、待ちリード要求なし状態STS11に戻る。
3.5.3 第3実施形態の第1変形例に係る効果
第3実施形態の第1変形例によれば、メモリコントローラ20は、コマンドキュー25内に待ちリード要求なし状態STS11となってから1個目のリード要求が記憶されたことに応じて、タイマ26をスタートさせる。タイマ26の計測値が閾値T1に達した場合、メモリコントローラ20は、コマンドキュー25内のM個のプレーンPBに対するリード要求数がそれぞれ閾値L個以上であるか否かによらず、サスペンド処理を実行する。これにより、リード要求を受信したメモリコントローラ20は、閾値T1以内の期間でサスペンド処理を実行することができる。このため、第3実施形態において説明した効果を奏すると共に、2個目以降のリード要求を受信しない場合におけるリードレイテンシの増加を抑制できる。
第3実施形態の第1変形例によれば、メモリコントローラ20は、コマンドキュー25内に待ちリード要求なし状態STS11となってから1個目のリード要求が記憶されたことに応じて、タイマ26をスタートさせる。タイマ26の計測値が閾値T1に達した場合、メモリコントローラ20は、コマンドキュー25内のM個のプレーンPBに対するリード要求数がそれぞれ閾値L個以上であるか否かによらず、サスペンド処理を実行する。これにより、リード要求を受信したメモリコントローラ20は、閾値T1以内の期間でサスペンド処理を実行することができる。このため、第3実施形態において説明した効果を奏すると共に、2個目以降のリード要求を受信しない場合におけるリードレイテンシの増加を抑制できる。
3.6 第3実施形態の第2変形例
メモリコントローラ20は、M個のプレーンPBの各々に対するリード要求を受信したか否かによらず、未実行のリード要求の総数に基づいて、サスペンド処理を保留する期間を制御してもよい。以下の説明では、第3実施形態と同等の構成及び動作については説明を省略し、第3実施形態と異なる構成及び動作について主に説明する。
メモリコントローラ20は、M個のプレーンPBの各々に対するリード要求を受信したか否かによらず、未実行のリード要求の総数に基づいて、サスペンド処理を保留する期間を制御してもよい。以下の説明では、第3実施形態と同等の構成及び動作については説明を省略し、第3実施形態と異なる構成及び動作について主に説明する。
3.6.1 サスペンド判定処理
図23は、第3実施形態の第2変形例に係るメモリシステムにおけるサスペンド判定処理を含む一連の処理の一例を示すフローチャートである。図19の例と同様、図23の例では、サスペンド判定処理の開始条件は、メモリコントローラ20がホスト機器2からリード要求を受信することである。
図23は、第3実施形態の第2変形例に係るメモリシステムにおけるサスペンド判定処理を含む一連の処理の一例を示すフローチャートである。図19の例と同様、図23の例では、サスペンド判定処理の開始条件は、メモリコントローラ20がホスト機器2からリード要求を受信することである。
S70及びS71の処理は、図19におけるS50及びS51の処理と同等であるため、説明を省略する。
プログラム処理中である場合(S70;true)、メモリコントローラ20は、サスペンド条件が満たされるか否かを判定する(S72)。図23の例におけるサスペンド条件は、異なるM個のプレーンPBに対するリード要求がそれぞれ閾値L個以上コマンドキュー25内にあること、又はコマンドキュー25内にリード要求が閾値N個以上あること、である。
なお、図18等では特に図示していないが、不揮発性メモリ10は、複数のチップを有する場合がある。この場合、複数のチップの各々が複数のプレーンPB0~PBmを含む。不揮発性メモリ10が複数のチップを有する場合、メモリコントローラ20は、チップ毎にコマンドキュー25を有する。そして、S72の処理においてメモリコントローラ20は、判定対象のチップに対応するコマンドキュー25内にリード要求が閾値N個以上あるか否かを判定する。
M個のうち少なくとも1個のプレーンPBに対するリード要求がコマンドキュー25内に閾値L個以上なく、かつコマンドキュー25内のリード要求が閾値N個以上ない場合(S72;false)、メモリコントローラ20は、プログラム処理の中断を保留する。すなわち、メモリコントローラ20は、プログラム処理を中断しない。これにより、サスペンド判定処理を含む一連の処理は終了となる(終了)。
M個のプレーンPBに対するリード要求がそれぞれ閾値L個以上コマンドキュー25内にある場合、又はコマンドキュー25内のリード要求が閾値N個以上の場合(S72;true)、メモリコントローラ20は、不揮発性メモリ10にサスペンド処理を実行させる(S73)。
S74~S76の処理は、図19におけるS54~S56の処理と同等であるため、説明を省略する。
3.6.2 サスペンド判定処理を伴うプログラム処理における状態遷移
図24は、第3実施形態の第2変形例に係るメモリシステムのサスペンド判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図24の例では、M個のプレーンPBに対するリード要求数がそれぞれ閾値L個に達する前に、コマンドキュー25内のリード要求数が閾値N個に達することによって、サスペンド処理が実行される場合が示される。図24の例では、閾値Nが2、かつ閾値Lが1である場合が示される。なお、図24の例では、時刻t70以前において、メモリシステム3の状態は、待ちリード要求なし状態STS11であるものとする。
図24は、第3実施形態の第2変形例に係るメモリシステムのサスペンド判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図24の例では、M個のプレーンPBに対するリード要求数がそれぞれ閾値L個に達する前に、コマンドキュー25内のリード要求数が閾値N個に達することによって、サスペンド処理が実行される場合が示される。図24の例では、閾値Nが2、かつ閾値Lが1である場合が示される。なお、図24の例では、時刻t70以前において、メモリシステム3の状態は、待ちリード要求なし状態STS11であるものとする。
図24に示すように、時刻t70において、メモリコントローラ20は、不揮発性メモリ10のプレーンPB0及びPB1に対してプログラム処理を並行して実行させる。これに伴い、メモリシステム3の状態は、待ちリード要求なし状態STS21となる。
時刻t71において、メモリコントローラ20は、第1リード要求(PB0)を受信する。これにより、コマンドキュー25内のリード要求数は、プレーンPB0に対してL(=1)個となる。しかしながら、コマンドキュー25内のリード要求数は、プレーンPB1に対して閾値L(=1)個未満の0個である。このため、メモリシステム3の状態は、サスペンド処理保留中状態STS22となる。
時刻t72において、メモリコントローラ20は、プレーンPB0からのリードを要求する第2リード要求(PB0)を受信する。これにより、コマンドキュー25内のリード要求の総数は、閾値N(=2)個となる。このため、メモリコントローラ20は、サスペンド処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、サスペンド処理中状態STS31となる。
時刻t73において、サスペンド処理が終了する。そして、メモリコントローラ20は、第1リード処理(PB0)を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、リード処理中状態STS32となる。
時刻t74において、第1リード処理(PB0)処理が終了する。そして、メモリコントローラ20は、プレーンPB0に対する第2リード処理(PB0)を不揮発性メモリ10に実行させる。メモリシステム3は、リード処理中状態STS32を維持する。
時刻t75において、第2リード処理(PB0)が終了する。メモリコントローラ20は、コマンドキュー25内のリード要求数が0個であることを確認した後、レジューム処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、レジューム処理中状態STS33となる。
時刻t76において、レジューム処理が終了する。そして、メモリコントローラ20は、不揮発性メモリ10のプレーンPB0及びPB1に対する並行したプログラム処理を再開させる。これに伴い、メモリシステム3の状態は、待ちリード要求なし状態STS21となる。
時刻t77において、プログラム処理が終了する。その後、メモリコントローラ20は、不揮発性メモリ10にデータが問題なく書き込まれたことをステータスリード処理によって確認する。これにより、メモリシステム3の状態は、待ちリード要求なし状態STS11に戻る。
3.6.3 第3実施形態の第2変形例に係る効果
第3実施形態の第2変形例によれば、コマンドキュー25内のリード要求数が閾値N個に達した場合、メモリコントローラ20は、M個のプレーンPBに対するリード要求数がそれぞれ閾値L個以上であるか否かによらず、サスペンド処理を実行する。これにより、M個のプレーンPBに対するリード要求を均等に受信しない場合においても、メモリコントローラ20は、サスペンド処理を実行することができる。このため、第3実施形態において説明した効果を奏すると共に、リード要求対象のプレーンPBに偏りがある場合におけるリードレイテンシの増加を抑制できる。
第3実施形態の第2変形例によれば、コマンドキュー25内のリード要求数が閾値N個に達した場合、メモリコントローラ20は、M個のプレーンPBに対するリード要求数がそれぞれ閾値L個以上であるか否かによらず、サスペンド処理を実行する。これにより、M個のプレーンPBに対するリード要求を均等に受信しない場合においても、メモリコントローラ20は、サスペンド処理を実行することができる。このため、第3実施形態において説明した効果を奏すると共に、リード要求対象のプレーンPBに偏りがある場合におけるリードレイテンシの増加を抑制できる。
4. 第4実施形態
次に、第4実施形態に係るメモリシステムについて説明する。第4実施形態は、期間の短い中断の頻度を下げるために、レジューム処理を実行するタイミングを調整する点において、第1実施形態乃至第3実施形態と異なる。すなわち、第4実施形態では、タイマ26は、サスペンド処理開始又は完了からの経過時間を計測する。以下の説明では、第1実施形態の変形例と同等の構成及び動作については説明を省略し、第1実施形態の変形例と異なる構成及び動作について主に説明する。
次に、第4実施形態に係るメモリシステムについて説明する。第4実施形態は、期間の短い中断の頻度を下げるために、レジューム処理を実行するタイミングを調整する点において、第1実施形態乃至第3実施形態と異なる。すなわち、第4実施形態では、タイマ26は、サスペンド処理開始又は完了からの経過時間を計測する。以下の説明では、第1実施形態の変形例と同等の構成及び動作については説明を省略し、第1実施形態の変形例と異なる構成及び動作について主に説明する。
4.1 プログラム処理
図25は、第4実施形態に係るメモリシステムにおけるプログラム処理を含む一連の処理の一例を示すフローチャートである。
図25は、第4実施形態に係るメモリシステムにおけるプログラム処理を含む一連の処理の一例を示すフローチャートである。
プログラム条件が満たされると(開始)、メモリコントローラ20は、レジューム判定処理を伴うプログラム処理を不揮発性メモリ10に実行させる(S5)。レジューム判定処理は、レジューム条件を満たすか否かに基づいて、レジューム処理を実行するか否かを判定する処理である。レジューム処理を実行するタイミングを調整することにより、メモリコントローラ20は、リードレイテンシとライトスループットとのトレードオフを調整することができる。
レジューム判定処理を伴うプログラム処理が完了すると、メモリコントローラ20は、ステータスリード処理を不揮発性メモリ10に実行させる(S6)。
S6の処理においてプログラム処理が完了した旨のステータスをメモリコントローラ20が不揮発性メモリ10から受信すると、プログラム処理を含む一連の処理は終了となる(終了)。
4.2 レジューム判定処理
図26は、第4実施形態に係るメモリシステムにおけるレジューム判定処理を含む一連の処理の一例を示すフローチャートである。レジューム判定処理を含む一連の処理は、レジューム判定処理の開始条件に応じて実行される。図26の例では、レジューム判定処理の開始条件は、サスペンド条件が満たされることである。サスペンド条件は、第1実施形態乃至第3実施形態の説明における例を含む任意のサスペンド条件が適用可能である。また、サスペンド条件は、無条件であってもよい。
図26は、第4実施形態に係るメモリシステムにおけるレジューム判定処理を含む一連の処理の一例を示すフローチャートである。レジューム判定処理を含む一連の処理は、レジューム判定処理の開始条件に応じて実行される。図26の例では、レジューム判定処理の開始条件は、サスペンド条件が満たされることである。サスペンド条件は、第1実施形態乃至第3実施形態の説明における例を含む任意のサスペンド条件が適用可能である。また、サスペンド条件は、無条件であってもよい。
サスペンド条件が満たされると(開始)、メモリコントローラ20は、タイマ26をスタートさせる(S80)。
タイマ26の計測が開始すると、メモリコントローラ20は、不揮発性メモリ10にサスペンド処理を実行させる(S81)。なお、メモリコントローラ20は、サスペンド処理が完了してからタイマ26をスタートさせてもよい。
サスペンド処理によってプログラム処理が中断された後、メモリコントローラ20は、リード要求に基づくリード処理を不揮発性メモリ10に実行させる(S82)。
リード処理が終了すると、メモリコントローラ20は、ホスト機器2から新たなリード要求を受信する又はタイマ26の計測値が閾値T4以上となるまで、待機する(S83)。閾値T4は、正の実数である。
S83の待機処理が終了すると、メモリコントローラ20は、まだコマンドキュー25内にリード要求があるか否かを判定する(S84)。
まだコマンドキュー25内にリード要求がある場合(S84;true)、メモリコントローラ20は、リード要求に基づくリード処理を不揮発性メモリ10に実行させる(S82)。これにより、コマンドキュー25内の全てのリード要求に対応するリード処理が実行されるまで、S82~S84の処理が繰り返される。
コマンドキュー25内にリード要求がない場合(S84;false)、メモリコントローラ20は、プログラム処理の再開を決定する。そして、メモリコントローラ20は、タイマ26をストップさせる(S85)。すなわち、図26の例におけるレジューム条件は、タイマ26の計測値が閾値T4以上であり、かつ未実行のリード要求がないこと、である。
タイマ26をストップさせた後、メモリコントローラ20は、不揮発性メモリ10にレジューム処理を実行させる(S86)。
S86の処理が終わると、レジューム判定処理を含む一連の処理は終了となる(終了)。
4.3 メモリシステムの状態遷移
図27は、第4実施形態に係るメモリシステムのプログラム処理に関する複数の状態間の関係を示す状態遷移図である。
図27は、第4実施形態に係るメモリシステムのプログラム処理に関する複数の状態間の関係を示す状態遷移図である。
まず、メモリシステム3の取り得る複数の状態について説明する。
図27に示すように、メモリシステム3のプログラム処理に関する状態は、プログラムレディ状態STS1、プログラムビジー状態STS2、及びプログラムサスペンド状態STS3を含む。プログラムレディ状態STS1及びプログラムビジー状態STS2は、図5を参照して説明した第1実施形態と同等であるため、説明を省略する。
プログラムサスペンド状態STS3は、サスペンド処理中状態STS31、リード処理中状態STS32、及びレジューム処理中状態STS33に加え、レジューム処理保留中状態STS34を含む。レジューム処理保留中状態STS34は、レジューム処理の開始を保留している状態である。
次に、各状態を遷移させるイベントについて説明する。
E1~E11、及びE13のイベントについては、図5を参照して説明した第1実施形態と同等であるため、説明を省略する。
コマンドキュー25内の全てのリード要求に対応するリード処理が完了すると(E12A)、メモリシステム3は、レジューム処理保留中状態STS34に遷移する。レジューム処理保留中状態STS34においてホスト機器2から更なるリード要求を受信すると(E14)、メモリシステム3は、リード処理中状態STS32に遷移する。レジューム条件が満たされない場合(E15)、メモリシステム3は、レジューム処理保留中状態STS34を維持する。レジューム処理保留中状態STS34においてレジューム条件が満たされると(E16)、メモリシステム3は、レジューム処理中状態STS33に遷移する。
4.4 レジューム判定処理を伴うプログラム処理における状態遷移
図28は、第4実施形態に係るメモリシステムのレジューム判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図28の例では、プログラム処理の中断期間において、1回目のリード処理が終わった後、タイマ26の計測値が閾値T4に達する前に、2個目のリード要求を受信する場合が示される。
図28は、第4実施形態に係るメモリシステムのレジューム判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図28の例では、プログラム処理の中断期間において、1回目のリード処理が終わった後、タイマ26の計測値が閾値T4に達する前に、2個目のリード要求を受信する場合が示される。
図28に示すように、時刻t80において、メモリコントローラ20は、第1リード要求を受信する。これに伴い、メモリシステム3の状態は、待ちリード要求なし状態STS21からサスペンド処理保留中状態STS22となる。
時刻t81において、サスペンド条件が満たされたことに応じて、メモリコントローラ20は、タイマ26をスタートさせる。また、メモリコントローラ20は、サスペンド処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、サスペンド処理中状態STS31となる。なお、メモリコントローラ20は、サスペンド処理が完了してからタイマ26をスタートさせてもよい。
時刻t82において、サスペンド処理が終了する。メモリコントローラ20は、第1リード処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、リード処理中状態STS32となる。
時刻t83において、第1リード処理が終了する。これに伴い、メモリシステム3の状態は、レジューム処理保留中状態STS34となる。
時刻t84において、メモリコントローラ20は、第2リード要求を受信する。この時点において、タイマ26の計測値は閾値T4未満である。このため、メモリコントローラ20は、第2リード処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、リード処理中状態STS32となる。
時刻t85において、第2リード処理が終了する。これに伴い、メモリシステム3の状態は、レジューム処理保留中状態STS34となる。
時刻t86において、タイマ26の計測値が閾値T4に達する。メモリコントローラ20は、タイマ26をストップさせる。その後、メモリコントローラ20は、レジューム処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、レジューム処理中状態STS33となる。
時刻t87において、レジューム処理が終了する。そして、メモリコントローラ20は、プログラム処理を不揮発性メモリ10に再開させる。これにより、メモリシステム3の状態は、待ちリード要求なし状態STS21に戻る。
4.5 第4実施形態に係る効果
第4実施形態によれば、メモリコントローラ20は、コマンドキュー25内にリード要求があるか否かによらず、サスペンド処理の開始又は完了からの経過時間が閾値T4以上となるまで、レジューム処理を保留する。これにより、コマンドキュー25内のリード要求がなくなった直後にレジューム処理が実行されることを抑制するレジューム禁止期間を設けることができる。このため、プログラム理の中断期間中にコマンドキュー25内からリード要求がなくなってからタイマ26の計測値が閾値T4に達するまでの間に受信したリード要求に応じて、メモリコントローラ20は、同一の中断期間中にリード処理を実行できる。このように、第4実施形態によれば、コマンドキュー25内のリード要求がなくなった直後にレジューム処理を実行する場合よりも、1回のプログラム処理中に発生する中断の回数の増加を抑制できる。したがって、主にプログラム処理の中断中の2回目以降に実行されるリード処理のリードレイテンシの増加を抑制できる。
第4実施形態によれば、メモリコントローラ20は、コマンドキュー25内にリード要求があるか否かによらず、サスペンド処理の開始又は完了からの経過時間が閾値T4以上となるまで、レジューム処理を保留する。これにより、コマンドキュー25内のリード要求がなくなった直後にレジューム処理が実行されることを抑制するレジューム禁止期間を設けることができる。このため、プログラム理の中断期間中にコマンドキュー25内からリード要求がなくなってからタイマ26の計測値が閾値T4に達するまでの間に受信したリード要求に応じて、メモリコントローラ20は、同一の中断期間中にリード処理を実行できる。このように、第4実施形態によれば、コマンドキュー25内のリード要求がなくなった直後にレジューム処理を実行する場合よりも、1回のプログラム処理中に発生する中断の回数の増加を抑制できる。したがって、主にプログラム処理の中断中の2回目以降に実行されるリード処理のリードレイテンシの増加を抑制できる。
第4実施形態によれば、閾値T4を適切に設定することにより、レジューム処理保留中状態STS34の期間を、コマンドキュー25内のリード要求がなくなった直後にレジューム処理を実行する場合における累積オーバヘッドよりも短くできる。これにより、ライトスループットの低下を抑制できる。
レジューム判定処理は、サスペンド判定処理と独立して実行され得る。このため、第4実施形態と第1実施形態乃至第3実施形態とを組み合わせることができる。したがって、第1実施形態乃至第3実施形態に係る効果と共に、第4実施形態に係る効果を奏することができる。
4.6 第4実施形態の変形例
上述の第4実施形態では、メモリコントローラ20が、サスペンド処理の開始又は完了からの経過時間に基づいて、レジューム処理を保留する期間を制御する場合について説明したが、実施形態はこれに限られない。例えば、メモリコントローラ20は、サスペンド処理中におけるリード処理の終了からの経過時間に基づいて、レジューム処理を保留する期間を制御してもよい。すなわち、第4実施形態の変形例では、タイマ26は、メモリシステム3の状態がプログラムサスペンド状態STS3である際に実行されるリード処理の終了からの経過時間を計測する。以下の説明では、第4実施形態と同等の構成及び動作については説明を省略し、第4実施形態と異なる構成及び動作について主に説明する。
上述の第4実施形態では、メモリコントローラ20が、サスペンド処理の開始又は完了からの経過時間に基づいて、レジューム処理を保留する期間を制御する場合について説明したが、実施形態はこれに限られない。例えば、メモリコントローラ20は、サスペンド処理中におけるリード処理の終了からの経過時間に基づいて、レジューム処理を保留する期間を制御してもよい。すなわち、第4実施形態の変形例では、タイマ26は、メモリシステム3の状態がプログラムサスペンド状態STS3である際に実行されるリード処理の終了からの経過時間を計測する。以下の説明では、第4実施形態と同等の構成及び動作については説明を省略し、第4実施形態と異なる構成及び動作について主に説明する。
4.6.1 レジューム判定処理
図29は、第4実施形態の変形例に係るメモリシステムにおけるレジューム判定処理を含む一連の処理の一例を示すフローチャートである。
図29は、第4実施形態の変形例に係るメモリシステムにおけるレジューム判定処理を含む一連の処理の一例を示すフローチャートである。
サスペンド条件が満たされると(開始)、メモリコントローラ20は、不揮発性メモリ10にサスペンド処理を実行させる(S90)。
サスペンド処理によってプログラム処理が中断された後、メモリコントローラ20は、リード要求に基づくリード処理を不揮発性メモリ10に実行させる(S91)。
リード処理が終了すると、メモリコントローラ20は、タイマ26をスタートさせる(S92)。
タイマ26の計測が開始すると、メモリコントローラ20は、ホスト機器2から新たなリード要求を受信する又はタイマ26の計測値が閾値T5以上となるまで、待機する(S93)。閾値T5は、正の実数である。
S93の待機処理が終了すると、メモリコントローラ20は、まだコマンドキュー25内にリード要求があるか否かを判定する(S94)。
まだコマンドキュー25内にリード要求がある場合(S94;true)、メモリコントローラ20は、タイマ26をストップさせる(S95)。
タイマ26をストップさせた後、メモリコントローラ20は、リード要求に基づくリード処理を不揮発性メモリ10に実行させる(S91)。これにより、コマンドキュー25内の全てのリード要求に対応するリード処理が実行されるまで、S91~S95の処理が繰り返される。
コマンドキュー25内にリード要求がない場合(S94;false)、メモリコントローラ20は、プログラム処理の再開を決定する。そして、メモリコントローラ20は、タイマ26をストップさせる(S96)。すなわち、図29の例におけるレジューム条件は、タイマ26の計測値が閾値T5以上であり、かつ未実行のリード要求がないこと、である。
タイマ26をストップさせた後、メモリコントローラ20は、不揮発性メモリ10にレジューム処理を実行させる(S97)。
S97の処理が終わると、レジューム判定処理を含む一連の処理は終了となる(終了)。
4.6.2 レジューム判定処理を伴うプログラム処理における状態遷移
図30は、第4実施形態の変形例に係るメモリシステムのレジューム判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図30の例では、プログラム処理の中断期間において、1回目のリード処理が終わった後、タイマ26の計測値が閾値T5に達する前に、2個目のリード要求を受信する場合が示される。
図30は、第4実施形態の変形例に係るメモリシステムのレジューム判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図30の例では、プログラム処理の中断期間において、1回目のリード処理が終わった後、タイマ26の計測値が閾値T5に達する前に、2個目のリード要求を受信する場合が示される。
図30に示すように、時刻t90において、メモリコントローラ20は、第1リード要求を受信する。これに伴い、メモリシステム3の状態は、待ちリード要求なし状態STS21からサスペンド処理保留中状態STS22となる。
時刻t91において、サスペンド条件が満たされたことに応じて、メモリコントローラ20は、サスペンド処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、サスペンド処理中状態STS31となる。
時刻t92において、サスペンド処理が終了する。メモリコントローラ20は、第1リード処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、リード処理中状態STS32となる。
時刻t93において、第1リード処理が終了する。これに伴い、メモリシステム3の状態は、レジューム処理保留中状態STS34となる。メモリコントローラ20は、タイマ26をスタートさせる。
時刻t94において、メモリコントローラ20は、第2リード要求を受信する。この時点において、タイマ26の計測値は閾値T5未満である。このため、メモリコントローラ20は、タイマ26をストップさせた後、第2リード処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、リード処理中状態STS32となる。
時刻t95において、第2リード処理が終了する。これに伴い、メモリシステム3の状態は、レジューム処理保留中状態STS34となる。メモリコントローラ20は、タイマ26を再びスタートさせる。
時刻t96において、タイマ26の計測値が閾値T5に達する。このため、メモリコントローラ20は、タイマ26をストップさせた後、レジューム処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、レジューム処理中状態STS33となる。
時刻t97において、レジューム処理が終了する。そして、メモリコントローラ20は、プログラム処理を不揮発性メモリ10に再開させる。これにより、メモリシステム3の状態は、待ちリード要求なし状態STS21に戻る。
4.6.3 第4実施形態の変形例に係る効果
第4実施形態の変形例によれば、メモリコントローラ20は、コマンドキュー25内にリード要求があるか否かによらず、サスペンド処理中に実行されたリード処理の終了からの経過時間が閾値T5以上となるまで、レジューム処理を保留する。これにより、コマンドキュー25内のリード要求がなくなった直後にレジューム処理が実行されることを抑制するレジューム禁止期間を設けることができる。このため、第4実施形態と同等の効果を奏することができる。
第4実施形態の変形例によれば、メモリコントローラ20は、コマンドキュー25内にリード要求があるか否かによらず、サスペンド処理中に実行されたリード処理の終了からの経過時間が閾値T5以上となるまで、レジューム処理を保留する。これにより、コマンドキュー25内のリード要求がなくなった直後にレジューム処理が実行されることを抑制するレジューム禁止期間を設けることができる。このため、第4実施形態と同等の効果を奏することができる。
5. 第5実施形態
次に、第5実施形態に係るメモリシステムについて説明する。第5実施形態は、コマンドキュー25内にリード要求がある場合でも強制的にレジューム処理を実行するように制御する点において、第1実施形態乃至第4実施形態と異なる。すなわち、第5実施形態では、タイマ26は、サスペンド処理の開始又は完了からの経過時間を計測する。以下の説明では、コマンドキュー25内にリード要求がある場合に実行されるレジューム処理と、コマンドキュー25内にリード要求がない場合に実行されるレジューム処理と、を区別する。コマンドキュー25内にリード要求がある場合に実行されるレジューム処理は、「強制レジューム処理」とも称される。以下の説明では、第1実施形態乃至第4実施形態と同等の構成及び動作については説明を省略し、第1実施形態乃至第4実施形態と異なる構成及び動作について主に説明する。
次に、第5実施形態に係るメモリシステムについて説明する。第5実施形態は、コマンドキュー25内にリード要求がある場合でも強制的にレジューム処理を実行するように制御する点において、第1実施形態乃至第4実施形態と異なる。すなわち、第5実施形態では、タイマ26は、サスペンド処理の開始又は完了からの経過時間を計測する。以下の説明では、コマンドキュー25内にリード要求がある場合に実行されるレジューム処理と、コマンドキュー25内にリード要求がない場合に実行されるレジューム処理と、を区別する。コマンドキュー25内にリード要求がある場合に実行されるレジューム処理は、「強制レジューム処理」とも称される。以下の説明では、第1実施形態乃至第4実施形態と同等の構成及び動作については説明を省略し、第1実施形態乃至第4実施形態と異なる構成及び動作について主に説明する。
5.1 レジューム判定処理
図31は、第5実施形態に係るメモリシステムにおけるレジューム判定処理を含む一連の処理の一例を示すフローチャートである。図31の例では、図26の例と同様、レジューム判定処理の開始条件は、サスペンド条件が満たされることである。
図31は、第5実施形態に係るメモリシステムにおけるレジューム判定処理を含む一連の処理の一例を示すフローチャートである。図31の例では、図26の例と同様、レジューム判定処理の開始条件は、サスペンド条件が満たされることである。
S100~S102の処理は、図26におけるS80~S82の処理と同等であるため、説明を省略する。
リード処理が終了すると、メモリコントローラ20は、まだコマンドキュー25内にリード要求があるか否かを判定する(S103)。
まだコマンドキュー25内にリード要求がある場合(S103;true)、メモリコントローラ20は、タイマ26の計測値が閾値T6以上であるか否かを判定する(S104)。閾値T6は、正の実数である。
タイマ26の計測値が閾値T6未満の場合(S104;false)、メモリコントローラ20は、リード要求に基づくリード処理を不揮発性メモリ10に実行させる(S102)。これにより、タイマ26の計測値が閾値T6に達する、又はコマンドキュー25内のリード要求が無くなるまで、リード処理が実行される。
タイマ26の計測値が閾値T6以上の場合(S104;true)、メモリコントローラ20は、不揮発性メモリ10に強制レジューム処理を実行させる(S105)。すなわち、図31の例における強制レジューム条件は、未実行のリード要求があり、かつタイマ26の計測値が閾値T6以上であることである。
コマンドキュー25内からリード要求がない場合(S103;false)、メモリコントローラ20は、不揮発性メモリ10にレジューム処理を実行させる(S106)。すなわち、図31の例におけるレジューム条件は、未実行のリード要求がないことである。
レジューム処理又は強制レジューム処理が終了すると、メモリコントローラ20は、タイマ26をストップさせる(S107)。
S107の処理が終わると、レジューム判定処理を含む一連の処理は終了となる(終了)。
5.2 メモリシステムの状態遷移
図32は、第5実施形態に係るメモリシステムのプログラム処理に関する複数の状態間の関係を示す状態遷移図である。
図32は、第5実施形態に係るメモリシステムのプログラム処理に関する複数の状態間の関係を示す状態遷移図である。
まず、メモリシステム3の取り得る複数の状態について説明する。
図32に示すように、メモリシステム3のプログラム処理に関する状態は、プログラムレディ状態STS1、プログラムビジー状態STS2、及びプログラムサスペンド状態STS3を含む。プログラムレディ状態STS1及びプログラムビジー状態STS2は、図27を参照して説明した第4実施形態と同等であるため、説明を省略する。
プログラムサスペンド状態STS3は、サスペンド処理中状態STS31、リード処理中状態STS32、レジューム処理中状態STS33、及びレジューム処理保留中状態STS34に加え、強制レジューム処理中状態STS35を含む。強制レジューム処理中状態STS35は、強制レジューム処理を実行している状態である。
次に、各状態を遷移させるイベントについて説明する。
E1~E11、E12A、E13~E15のイベントについては、図27を参照して説明した第4実施形態と同等であるため、説明を省略する。
リード処理中状態STS32において強制レジューム条件が満たされると(E17)、メモリシステム3は、強制レジューム処理中状態STS35に遷移する。
強制レジューム処理中状態STS35において強制レジューム処理が完了すると(E18)、メモリシステム3は、サスペンド処理保留中状態STS22に遷移する。
すなわち、プログラムサスペンド状態STS3においてレジューム処理又は強制レジューム処理が完了すると(E13又はE18)、メモリシステム3は、プログラムビジー状態STS2に遷移する。
5.3 レジューム判定処理を伴うプログラム処理における状態遷移
図33は、第5実施形態に係るメモリシステムのレジューム判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図33の例では、プログラム処理の中断期間において、2回目のリード処理中にタイマ26の計測値が閾値T6に達する場合が示される。この場合において、2回目のリード処理中に3個目のリード要求が受信されても、同一の中断期間中に3回目のリード処理が実行されることなく、強制レジューム処理が実行される。
図33は、第5実施形態に係るメモリシステムのレジューム判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図33の例では、プログラム処理の中断期間において、2回目のリード処理中にタイマ26の計測値が閾値T6に達する場合が示される。この場合において、2回目のリード処理中に3個目のリード要求が受信されても、同一の中断期間中に3回目のリード処理が実行されることなく、強制レジューム処理が実行される。
図33に示す時刻t100~t104までの期間における処理は、図28に示す時刻t80~t84までの期間における処理と同等であるため、説明を省略する。
時刻t105において、タイマ26の計測値が閾値T6に達する。メモリシステム3は、第2リード処理のリード処理中状態STS32を維持する。
時刻t106において、メモリコントローラ20は、第3リード要求を受信する。メモリシステム3は、第2リード処理のリード処理中状態STS32を維持する。
時刻t107において、第2リード処理が終了する。この時点において、コマンドキュー25内には第3リード要求がある。しかしながら、タイマ26の計測値は閾値T6以上である。このため、メモリコントローラ20は、強制レジューム処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、強制レジューム処理中状態STS35となる。
時刻t108において、強制レジューム処理が終了する。これに伴い、メモリコントローラ20は、タイマ26をストップさせた後、プログラム処理を不揮発性メモリ10に再開させる。これにより、メモリシステム3の状態は、サスペンド処理保留中状態STS22に戻る。
その後、図33では図示が省略されるが、再びサスペンド条件が満たされた場合、メモリコントローラ20は、プログラム処理の次の中断期間中に第3リード処理を実行し得る。
5.4 第5実施形態に係る効果
第5実施形態によれば、サスペンド処理の開始又は完了からの経過時間が閾値T6に達した場合、メモリコントローラ20は、コマンドキュー25内にリード要求が残っていても強制的にレジューム処理を実行する。これにより、一度に大量のリード要求を受信した際に、プログラム処理の中断期間が過剰に長引くことを回避できる。このため、ライトスループットの過剰な低下を抑制しつつ、ライトスループットとリードレイテンシのトレードオフを調整することができる。
第5実施形態によれば、サスペンド処理の開始又は完了からの経過時間が閾値T6に達した場合、メモリコントローラ20は、コマンドキュー25内にリード要求が残っていても強制的にレジューム処理を実行する。これにより、一度に大量のリード要求を受信した際に、プログラム処理の中断期間が過剰に長引くことを回避できる。このため、ライトスループットの過剰な低下を抑制しつつ、ライトスループットとリードレイテンシのトレードオフを調整することができる。
また、第5実施形態によれば、プログラム処理の中断期間が閾値T6を過剰に超えることを制限できる。このため、不揮発性メモリ10の信頼性の悪化を抑制できる。
5.5 第5実施形態の変形例
上述の第5実施形態では、メモリコントローラ20が、サスペンド処理の開始又は完了からの経過時間に基づいて、強制レジューム処理の開始タイミングを制御する場合について説明したが、実施形態はこれに限られない。例えば、メモリコントローラ20は、プログラム処理における累計の中断期間の長さに基づいて、強制レジューム処理の開始タイミングを制御してもよい。すなわち、第5実施形態の変形例では、タイマ26は、プログラム処理中における累計の中断期間を計測する。以下の説明では、第5実施形態と同等の構成及び動作については説明を省略し、第5実施形態と異なる構成及び動作について主に説明する。
上述の第5実施形態では、メモリコントローラ20が、サスペンド処理の開始又は完了からの経過時間に基づいて、強制レジューム処理の開始タイミングを制御する場合について説明したが、実施形態はこれに限られない。例えば、メモリコントローラ20は、プログラム処理における累計の中断期間の長さに基づいて、強制レジューム処理の開始タイミングを制御してもよい。すなわち、第5実施形態の変形例では、タイマ26は、プログラム処理中における累計の中断期間を計測する。以下の説明では、第5実施形態と同等の構成及び動作については説明を省略し、第5実施形態と異なる構成及び動作について主に説明する。
5.5.1 プログラム処理
図34は、第5実施形態の変形例に係るメモリシステムにおけるプログラム処理を含む一連の処理の一例を示すフローチャートである。
図34は、第5実施形態の変形例に係るメモリシステムにおけるプログラム処理を含む一連の処理の一例を示すフローチャートである。
S5及びS6の処理は、図25におけるS5及びS6の処理と同等であるため、説明を省略する。
S6の処理において不揮発性メモリ10からプログラム処理が完了した旨のステータスを受信すると、メモリコントローラ20は、タイマ26が計測中であるか否かを判定する(S7)。
タイマ26が計測中である場合(S7;true)、メモリコントローラ20は、タイマ26をストップさせる(S8)。S8の処理が終わると、プログラム処理を含む一連の処理は終了となる(終了)。
また、タイマ26が計測中でない場合(S7;false)、S8の処理を実行することなく、プログラム処理を含む一連の処理は終了となる(終了)。
5.5.2 レジューム判定処理
図35は、第5実施形態の変形例に係るメモリシステムにおけるレジューム判定処理を含む一連の処理の一例を示すフローチャートである。図35の例では、レジューム判定処理の開始条件は、サスペンド条件が満たされ、かつタイマ26の計測値が閾値T7未満であることである。サスペンド条件は、第1実施形態乃至第3実施形態の説明における例を含む任意のサスペンド条件が適用可能である。また、サスペンド条件は、無条件であってもよい。
図35は、第5実施形態の変形例に係るメモリシステムにおけるレジューム判定処理を含む一連の処理の一例を示すフローチャートである。図35の例では、レジューム判定処理の開始条件は、サスペンド条件が満たされ、かつタイマ26の計測値が閾値T7未満であることである。サスペンド条件は、第1実施形態乃至第3実施形態の説明における例を含む任意のサスペンド条件が適用可能である。また、サスペンド条件は、無条件であってもよい。
サスペンド条件が満たされ、かつタイマ26の計測値が閾値T7未満である場合(開始)、メモリコントローラ20は、タイマ26がサスペンド中であるか否かを判定する(S110)。
タイマ26がサスペンド中でない(すなわち、タイマ26がストップ中である)場合(S110;false)、メモリコントローラ20は、タイマ26をスタートさせる(S111)。
タイマ26がサスペンド中である場合(S110;true)、メモリコントローラ20は、タイマ26の計測を再開させる(S112)。
タイマ26が計測中の状態になると、メモリコントローラ20は、不揮発性メモリ10にサスペンド処理を実行させる(S113)。
サスペンド処理によってプログラム処理が中断された後、メモリコントローラ20は、リード要求に基づくリード処理を不揮発性メモリ10に実行させる(S114)。
リード処理が終了すると、メモリコントローラ20は、まだコマンドキュー25内にリード要求があるか否かを判定する(S115)。
まだコマンドキュー25内にリード要求がある場合(S115;true)、メモリコントローラ20は、タイマ26の計測値が閾値T7以上であるか否かを判定する(S116)。閾値T7は、正の実数である。
タイマ26の計測値が閾値T7未満の場合(S116;false)、メモリコントローラ20は、リード要求に基づくリード処理を不揮発性メモリ10に実行させる(S114)。これにより、タイマ26の計測値が閾値T7に達する、又はコマンドキュー25内のリード要求が無くなるまで、リード処理が実行される。
タイマ26の計測値が閾値T7以上の場合(S116;true)、メモリコントローラ20は、不揮発性メモリ10に強制レジューム処理を実行させる(S117)。すなわち、図35の例における強制レジューム条件は、未実行のリード要求があり、かつタイマ26の計測値が閾値T7以上であることである。
コマンドキュー25内にリード要求がない場合(S115;false)、メモリコントローラ20は、不揮発性メモリ10にレジューム処理を実行させる(S118)。すなわち、図35の例におけるレジューム条件は、未実行のリード要求がないことである。
レジューム処理又は強制レジューム処理が終了すると、メモリコントローラ20は、タイマ26をサスペンドさせる(S119)。
S119の処理が終わると、レジューム判定処理を含む一連の処理は終了となる(終了)。
なお、図35の例では、タイマ26の計測期間に、サスペンド処理及びレジューム処理が実行される期間が含まれる場合について説明したが、実施形態はこれに限られない。例えば、タイマ26の計測期間には、サスペンド処理及びレジューム処理の両方、又はいずれか片方が実行される期間が含まれなくてもよい。この場合、図35におけるS113の処理は、S110の処理の前に実行され得る。また、S119の処理は、S114の処理とS115の処理との間に実行され得る。
5.5.3 レジューム判定処理を伴うプログラム処理における状態遷移
図36は、第5実施形態の変形例に係るメモリシステムのレジューム判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図36の例では、タイマ26の計測期間に、サスペンド処理及びレジューム処理の両方が含まれる場合が示される。また、図36の例では、2回目のリード処理中に、タイマ26の計測値が閾値T7に達する場合が示される。この場合において、2回目のリード処理の終了前に3個目のリード要求を受信しても、同一の中断期間中に3回目のリード処理が実行されることなく、強制レジューム処理が実行される。なお、図36の例では、時刻t110の時点でタイマ26は停止している(つまり、計測値が0である)ものとする。
図36は、第5実施形態の変形例に係るメモリシステムのレジューム判定処理を伴うプログラム処理における状態遷移の一例を示したタイムチャートである。図36の例では、タイマ26の計測期間に、サスペンド処理及びレジューム処理の両方が含まれる場合が示される。また、図36の例では、2回目のリード処理中に、タイマ26の計測値が閾値T7に達する場合が示される。この場合において、2回目のリード処理の終了前に3個目のリード要求を受信しても、同一の中断期間中に3回目のリード処理が実行されることなく、強制レジューム処理が実行される。なお、図36の例では、時刻t110の時点でタイマ26は停止している(つまり、計測値が0である)ものとする。
図36に示すように、時刻t110において、メモリコントローラ20は、第1リード要求を受信する。これに伴い、メモリシステム3の状態は、待ちリード要求なし状態STS21からサスペンド処理保留中状態STS22となる。
時刻t111において、サスペンド条件が満たされる。タイマ26はストップ中であるため、メモリコントローラ20は、タイマ26をスタートさせる。また、メモリコントローラ20は、サスペンド処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、サスペンド処理中状態STS31となる。
時刻t112において、サスペンド処理が終了する。メモリコントローラ20は、第1リード処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、第1リード処理のリード処理中状態STS32となる。
時刻t113において、第1リード処理が終了する。メモリコントローラ20は、レジューム処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、レジューム処理中状態STS33となる。
時刻t114において、レジューム処理が終了する。メモリコントローラ20は、タイマ26の計測をサスペンドさせる。これにより、タイマ26の計測値はT7_1(=t114-t111)となる。なお、計測値T7_1は、閾値T7より小さいものとする。メモリシステム3の状態は、待ちリードなし状態STS21となる。
時刻t115において、メモリコントローラ20は、第2リード要求を受信する。これに伴い、メモリシステム3の状態は、サスペンド処理保留中状態STS22となる。
時刻t116において、サスペンド条件が再び満たされる。タイマ26はサスペンド中であるため、メモリコントローラ20は、タイマ26の計測を再開させる。また、メモリコントローラ20は、サスペンド処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、サスペンド処理中状態STS31となる。
時刻t117において、メモリコントローラ20は、第3リード要求を受信する。メモリシステム3は、サスペンド処理中状態STS31を維持する。
時刻t118において、サスペンド処理が終了する。メモリコントローラ20は、第2リード処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、第2リード処理のリード処理中状態STS32となる。
時刻t119において、タイマ26の計測値が閾値T7に達する。メモリシステム3は、第2リード処理のリード処理中状態STS32を維持する。
時刻t120において、第2リード処理が終了する。この時点において、コマンドキュー25内には第3リード要求がある。しかしながら、タイマ26の計測値は閾値T7以上である。このため、メモリコントローラ20は、強制レジューム処理を不揮発性メモリ10に実行させる。これに伴い、メモリシステム3の状態は、強制レジューム処理中状態STS35となる。
時刻t121において、強制レジューム処理が終了する。これに伴い、メモリコントローラ20は、タイマ26の計測をサスペンドさせた後、プログラム処理を不揮発性メモリ10に再開させる。これにより、メモリシステム3の状態は、サスペンド処理保留中状態STS22に戻る。
その後、図36では図示が省略されるが、再びサスペンド条件が満たされたとしても、タイマ26の計測値が閾値T7を超えているため、メモリコントローラ20は、第3リード処理を実行するためにプログラム処理を中断させない。
5.5.3 第5実施形態の変形例に係る効果
第5実施形態の変形例によれば、1回のプログラム処理における中断期間の累積時間が閾値T7に達した場合、メモリコントローラ20は、コマンドキュー25内にリード要求が残っていても強制的にレジューム処理を実行する。これにより、一度に大量のリード要求を受信した際に、プログラム処理の中断期間が過剰に長引くことを回避できる。このため、ライトスループットの過剰な低下を抑制しつつ、ライトスループットとリードレイテンシのトレードオフを調整することができる。
第5実施形態の変形例によれば、1回のプログラム処理における中断期間の累積時間が閾値T7に達した場合、メモリコントローラ20は、コマンドキュー25内にリード要求が残っていても強制的にレジューム処理を実行する。これにより、一度に大量のリード要求を受信した際に、プログラム処理の中断期間が過剰に長引くことを回避できる。このため、ライトスループットの過剰な低下を抑制しつつ、ライトスループットとリードレイテンシのトレードオフを調整することができる。
また、第5実施形態の変形例によれば、1回のプログラム処理における中断期間の累積時間が閾値T7を過剰に超えることを制限できる。このため、不揮発性メモリ10の信頼性の悪化を抑制できる。
6. 第6実施形態
次に、第6実施形態に係るメモリシステムについて説明する。第6実施形態は、サスペンド条件又はレジューム条件(若しくは強制レジューム条件)を動的に調整する点において、第1実施形態乃至第5実施形態と異なる。以下の説明では、第1実施形態乃至第5実施形態と同等の構成及び動作については説明を省略し、第1実施形態乃至第5実施形態と異なる構成及び動作について主に説明する。
次に、第6実施形態に係るメモリシステムについて説明する。第6実施形態は、サスペンド条件又はレジューム条件(若しくは強制レジューム条件)を動的に調整する点において、第1実施形態乃至第5実施形態と異なる。以下の説明では、第1実施形態乃至第5実施形態と同等の構成及び動作については説明を省略し、第1実施形態乃至第5実施形態と異なる構成及び動作について主に説明する。
6.1 パラメタ変更処理
図37は、第6実施形態に係るメモリシステムにおけるパラメタ変更処理の一例を示すフローチャートである。
図37は、第6実施形態に係るメモリシステムにおけるパラメタ変更処理の一例を示すフローチャートである。
図37に示すように、観測条件を満たすと(開始)、メモリコントローラ20は、メモリシステム3のワークロードを観測する(S121)。
観測条件は、例えば、「所定の時刻になること」のように、定期的に満たされる条件を含み得る。また、観測条件は、例えば、「所定の処理が終了すること」のように、不定期に満たされる条件を含み得る。
ワークロードの特性は、例えば、コマンドキュー25内のリード要求の数(queue depth(QD)数、又はoutstanding I/O(OIO)数)、メモリシステム3のアイドル期間、バッファメモリ22内のライトデータ量を含む。なお、アイドル期間とは、メモリシステム3がホスト機器2からの要求に応じたリード処理やプログラム処理等の処理を実行していない期間である。
S121の処理で観測したワークロードに基づいて、メモリコントローラ20は、サスペンド条件及び/又はレジューム条件を変更する(S122)。サスペンド条件を変更することは、例えば、第1実施形態乃至第3実施形態において説明した閾値N、M、及びL、並びに閾値T1~T3を変更することを含む。レジューム条件を変更することは、例えば、第4実施形態及び第5実施形態において説明した閾値T4~T7を変更することを含む。
より具体的には、例えば、リード要求のQD数が閾値未満の場合、メモリシステム3のアイドル状態の時間が閾値以上の場合、又はバッファメモリ22内のライトデータ量が閾値未満の場合、メモリコントローラ20は、閾値N、M、及びLのうちの少なくとも1つを小さくする、及び/又は閾値T1~T3の少なくとも1つを小さくする。この場合、閾値Nは、0又は1となってもよい。閾値Lは、0となってもよい。閾値T1~T3は、0となってもよい。リード要求のQD数が閾値未満の場合、メモリシステム3のアイドル状態の時間が閾値以上の場合、又はバッファメモリ22内のライトデータ量が閾値未満の場合、メモリコントローラ20は、閾値T4~T7の少なくとも1つを大きくする。
S122の処理が終わると、パラメタ変更処理は終了する(終了)。
6.2 第6実施形態に係る効果
第6実施形態によれば、メモリコントローラ20は、ワークロードを観測する。例えば、ワークロードとして観測したバッファメモリ22内のライトデータ量が少ない場合、ホスト機器2からのライトスループット要求が比較的低いことが期待される。また、例えば、ワークロードとして観測したリード要求のQD数が小さい場合、ホスト機器2から短いリードレイテンシを要求されていることが期待される。このように、ワークロードを観測することによって、ライトスループットとリードレイテンシとの間のトレードオフを、どちらに比重をおいて調整すべきか、をメモリコントローラ20が把握することができる。
第6実施形態によれば、メモリコントローラ20は、ワークロードを観測する。例えば、ワークロードとして観測したバッファメモリ22内のライトデータ量が少ない場合、ホスト機器2からのライトスループット要求が比較的低いことが期待される。また、例えば、ワークロードとして観測したリード要求のQD数が小さい場合、ホスト機器2から短いリードレイテンシを要求されていることが期待される。このように、ワークロードを観測することによって、ライトスループットとリードレイテンシとの間のトレードオフを、どちらに比重をおいて調整すべきか、をメモリコントローラ20が把握することができる。
観測の結果、ライトスループットよりもリードレイテンシに対する要求を優先した方がよいと判断できる場合には、メモリコントローラ20は、閾値N、M、及びLのうちの少なくとも1つを小さくする、閾値T1~T3の少なくとも1つを小さくする、及び/又は閾値T4~T7の少なくとも1つを大きくする。これにより、メモリコントローラ20は、メモリシステム3の稼働中に、よりリードレイテンシに対する要求を優先した運用に、動的に変更することができる。このため、より自由度の高いメモリシステム3の運用が可能となる。
6.3 第6実施形態の変形例
上述の第6実施形態では、メモリコントローラ20が、自律的にサスペンド条件及び/又はレジューム条件を変更する場合について説明したが、実施形態はこれに限られない。例えば、メモリコントローラ20は、ホスト機器2からの要求に基づいて、サスペンド条件及び/又はレジューム条件を変更してもよい。以下の説明では、第6実施形態と同等の構成及び動作については説明を省略し、第6実施形態と異なる構成及び動作について主に説明する。
上述の第6実施形態では、メモリコントローラ20が、自律的にサスペンド条件及び/又はレジューム条件を変更する場合について説明したが、実施形態はこれに限られない。例えば、メモリコントローラ20は、ホスト機器2からの要求に基づいて、サスペンド条件及び/又はレジューム条件を変更してもよい。以下の説明では、第6実施形態と同等の構成及び動作については説明を省略し、第6実施形態と異なる構成及び動作について主に説明する。
6.3.1 パラメタ変更処理
図38は、第6実施形態の変形例に係るメモリシステムにおけるパラメタ変更処理の一例を示すフローチャートである。
図38は、第6実施形態の変形例に係るメモリシステムにおけるパラメタ変更処理の一例を示すフローチャートである。
図38に示すように、ホスト機器2からパラメタ変更要求を受信すると(開始)、メモリコントローラ20は、受信したパラメタ変更要求に基づき、サスペンド条件及び/又はレジューム条件を変更する(S125)。
S125の処理が終わると、パラメタ変更処理は終了する(終了)。
6.3.2 第6実施形態の変形例に係る効果
第6実施形態の変形例によれば、メモリコントローラ20は、ホスト機器2からの要求に基づき、サスペンド条件及び/又はレジューム条件を変更する。これにより、よりホスト機器2の要望に添った動作を実現できる。
第6実施形態の変形例によれば、メモリコントローラ20は、ホスト機器2からの要求に基づき、サスペンド条件及び/又はレジューム条件を変更する。これにより、よりホスト機器2の要望に添った動作を実現できる。
7. その他
上述の第1実施形態乃至第6実施形態及び各実施形態の変形例は、種々の変形が適用可能である。
上述の第1実施形態乃至第6実施形態及び各実施形態の変形例は、種々の変形が適用可能である。
例えば、上述した第1実施形態乃至第6実施形態及び各実施形態の変形例では、プログラム処理が中断される場合について説明したが、実施形態及び変形例はこれに限られない。例えば、プログラム処理に代えて、イレース処理が中断される場合も、同様に実施形態及び変形例に適用可能である。
また、例えば、上述した第5実施形態及び第5実施形態の変形例では、タイマ26の計測値に基づいて強制レジューム条件が規定される場合について説明したが、実施形態及び変形例はこれに限られない。例えば、メモリコントローラ20は、プログラム処理中に実行されたリード要求の数Xや、プログラム処理中に不揮発性メモリ10から読み出されたリードデータの量Yに基づいて強制レジューム条件を規定してもよい。具体的には、未実行のリード要求があり、かつ上述した数X又は量Yが閾値以上の場合、メモリコントローラ20は、不揮発性メモリ10に強制レジューム処理を実行させてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…情報処理システム
2…ホスト機器
3…メモリシステム
10…不揮発性メモリ
20…メモリコントローラ
21…制御回路
22…バッファメモリ
23…ホストI/F
24…メモリI/F
25…コマンドキュー
26…タイマ
BUS…メモリバス
2…ホスト機器
3…メモリシステム
10…不揮発性メモリ
20…メモリコントローラ
21…制御回路
22…バッファメモリ
23…ホストI/F
24…メモリI/F
25…コマンドキュー
26…タイマ
BUS…メモリバス
Claims (21)
- 不揮発性メモリと、
ホスト機器からの第1要求に基づいて、前記不揮発性メモリに、データを読み出す第1処理を実行させるように構成されたメモリコントローラと、
を備え、
前記メモリコントローラは、
前記不揮発性メモリに第2処理を実行させている間に前記ホスト機器から前記第1要求を受信した場合、前記メモリコントローラ内にある、未実行の前記第1要求の数である第1数が、2以上の整数である第1閾値以上となるまで、前記第2処理の中断を保留するように構成される、
メモリシステム。 - 前記メモリコントローラは、前記第2処理の中断を保留している間に第1期間が第2閾値以上となった場合、前記第2処理を中断するようにさらに構成され、
前記第1期間は、前記第1数が1以上である、連続した期間である、
請求項1記載のメモリシステム。 - 前記メモリコントローラは、前記第2処理の中断を保留している間に第2期間が第3閾値以上となり、かつ前記第1数が1以上である場合、前記第2処理を中断するようにさらに構成され、
前記第2期間は、前記第2処理が実行中である連続した期間であり、かつ前記第2処理が中断中の期間を含まない、
請求項1記載のメモリシステム。 - 前記第2期間の始点は、前記第2処理の開始時である、
請求項3記載のメモリシステム。 - 前記第2期間の始点は、前記第2処理の中断からの再開時である、
請求項3記載のメモリシステム。 - 前記メモリコントローラは、前記第2処理が中断している間に、第3期間が第4閾値以上となるまで、中断した前記第2処理の再開を保留するようにさらに構成され、
前記第3期間は、前記第2処理が中断中である連続した期間である、
請求項1記載のメモリシステム。 - 前記メモリコントローラは、前記第2処理が中断している間に、
前記不揮発性メモリに前記第1処理を実行させ、
第4期間が第5閾値以上となるまで、中断した前記第2処理の再開を保留するように構成され、
前記第4期間は、前記第2処理が中断中であり、かつ前記第1処理が実行中でない連続した期間である、
請求項1記載のメモリシステム。 - 前記メモリコントローラは、前記第2処理が中断している間に、第5期間が第6閾値以上となった場合、中断した前記第2処理を再開するようにさらに構成され、
前記第5期間は、前記第2処理が中断中の期間である、
請求項1記載のメモリシステム。 - 前記第5期間は、連続した期間である、
請求項8記載のメモリシステム。 - 前記第5期間は、前記第1処理の期間を間に挟む、断続した前記第2処理が中断中の期間の累積期間である、
請求項8記載のメモリシステム。 - 前記メモリコントローラは、前記メモリシステムのワークロード又は前記ホスト機器からの第2要求に基づき、前記第1閾値を変更するようにさらに構成され、
前記ワークロードの特性は、前記第1数、前記メモリシステムのアイドル時間、及び前記ホスト機器から受信し前記不揮発性メモリへの書き込みが完了していないデータの量のうちの1つを含む、
請求項1記載のメモリシステム。 - 前記メモリコントローラは、前記メモリシステムのワークロード又は前記ホスト機器からの第2要求に基づき、前記第2閾値を変更するようにさらに構成され、
前記ワークロードの特性は、前記第1数、前記メモリシステムのアイドル時間、及び前記ホスト機器から受信し前記不揮発性メモリへの書き込みが完了していないデータの量のうちの1つを含む、
請求項2記載のメモリシステム。 - 前記メモリコントローラは、前記メモリシステムのワークロード又は前記ホスト機器からの第2要求に基づき、前記第3閾値を変更するようにさらに構成され、
前記ワークロードの特性は、前記第1数、前記メモリシステムのアイドル時間、及び前記ホスト機器から受信し前記不揮発性メモリへの書き込みが完了していないデータの量のうちの1つを含む、
請求項3記載のメモリシステム。 - 前記メモリコントローラは、前記メモリシステムのワークロード又は前記ホスト機器からの第2要求に基づき、前記第4閾値を変更するようにさらに構成され、
前記ワークロードの特性は、前記第1数、前記メモリシステムのアイドル時間、及び前記ホスト機器から受信し前記不揮発性メモリへの書き込みが完了していないデータの量のうちの1つを含む、
請求項6記載のメモリシステム。 - 前記メモリコントローラは、前記メモリシステムのワークロード又は前記ホスト機器からの第2要求に基づき、前記第5閾値を変更するようにさらに構成され、
前記ワークロードの特性は、前記第1数、前記メモリシステムのアイドル時間、及び前記ホスト機器から受信し前記不揮発性メモリへの書き込みが完了していないデータの量のうちの1つを含む、
請求項7記載のメモリシステム。 - 前記メモリコントローラは、前記メモリシステムのワークロード又は前記ホスト機器からの第2要求に基づき、前記第6閾値を変更するようにさらに構成され、
前記ワークロードの特性は、前記第1数、前記メモリシステムのアイドル時間、及び前記ホスト機器から受信し前記不揮発性メモリへの書き込みが完了していないデータの量のうちの1つを含む、
請求項8記載のメモリシステム。 - 前記第2処理は、プログラム処理又はイレース処理を含む、
請求項1記載のメモリシステム。 - 第1プレーン及び第2プレーンを含む不揮発性メモリと、
ホスト機器からの、前記第1プレーンに対応する第1要求及び前記第2プレーンに対応する第2要求に基づいて、前記不揮発性メモリに、前記第1プレーン及び前記第2プレーンから並行してデータを読み出す第1処理を実行させるように構成されたメモリコントローラと、
を備え、
前記メモリコントローラは、
前記不揮発性メモリに第2処理を実行させている間に前記ホスト機器から前記第1要求又は前記第2要求を受信した場合、前記メモリコントローラ内にある未実行の前記第1要求の数である第1数、及び、前記メモリコントローラ内にある未実行の前記第2要求の数である第2数、の各々が、1以上の整数である第1閾値以上となるまで、前記第2処理の中断を保留するように構成される、
メモリシステム。 - 前記メモリコントローラは、前記第2処理の中断を保留している間に第1期間が第2閾値以上となった場合、前記第2処理を中断するようにさらに構成され、
前記第1期間は、前記第1数又は前記第2数が1以上である、連続した期間である、
請求項18記載のメモリシステム。 - 前記メモリコントローラは、前記第2処理の中断を保留している間に、前記第1数及び前記第2数の和が2以上の整数である第2閾値以上となった場合、前記第2処理を中断するようにさらに構成される、
請求項18記載のメモリシステム。 - 不揮発性メモリと、
ホスト機器からの第1要求に基づいて、前記不揮発性メモリにデータを読み出す第1処理を実行させように構成されたメモリコントローラと、
を備え、
前記メモリコントローラは、
前記不揮発性メモリに第2処理を実行させている間に前記ホスト機器から前記第1要求を受信した場合、前記第2処理を中断させ、前記不揮発性メモリに前記第1処理を実行させ、
前記第2処理が中断中である連続した期間が閾値以上となるまで、中断した前記第2処理の再開を保留し、
前記期間が前記閾値以上となったことに応じて、中断した前記第2処理を再開するように構成される、
メモリシステム。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020205991A JP2022092965A (ja) | 2020-12-11 | 2020-12-11 | メモリシステム |
TW110118989A TWI832056B (zh) | 2020-12-11 | 2021-05-26 | 記憶體系統 |
CN202110799130.6A CN114625310A (zh) | 2020-12-11 | 2021-07-15 | 存储器系统 |
US17/471,569 US11790997B2 (en) | 2020-12-11 | 2021-09-10 | Memory system |
US18/459,501 US20230420060A1 (en) | 2020-12-11 | 2023-09-01 | Memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020205991A JP2022092965A (ja) | 2020-12-11 | 2020-12-11 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022092965A true JP2022092965A (ja) | 2022-06-23 |
Family
ID=81896924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020205991A Pending JP2022092965A (ja) | 2020-12-11 | 2020-12-11 | メモリシステム |
Country Status (4)
Country | Link |
---|---|
US (2) | US11790997B2 (ja) |
JP (1) | JP2022092965A (ja) |
CN (1) | CN114625310A (ja) |
TW (1) | TWI832056B (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11650753B2 (en) | 2021-07-27 | 2023-05-16 | Beijing Tenafe Electronic Technology Co., Ltd. | Firmware-controlled and table-based conditioning for synchronous handling of exception cases |
CN115840542B (zh) * | 2023-02-24 | 2023-06-02 | 浪潮电子信息产业股份有限公司 | 一种硬盘的请求处理方法、系统、存储介质和电子设备 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9811532B2 (en) * | 2010-05-03 | 2017-11-07 | Panzura, Inc. | Executing a cloud command for a distributed filesystem |
US20130031431A1 (en) * | 2011-07-28 | 2013-01-31 | Eran Sharon | Post-Write Read in Non-Volatile Memories Using Comparison of Data as Written in Binary and Multi-State Formats |
US9515204B2 (en) * | 2012-08-07 | 2016-12-06 | Rambus Inc. | Synchronous wired-or ACK status for memory with variable write latency |
US9489141B2 (en) * | 2014-12-18 | 2016-11-08 | Nimble Storage, Inc. | Efficient scheduling of Input/Output requests to reduce latency and maximize throughput in a flash storage device |
US10289596B2 (en) | 2016-06-07 | 2019-05-14 | Macronix International Co., Ltd. | Memory and method for operating a memory with interruptible command sequence |
JP2017224370A (ja) * | 2016-06-15 | 2017-12-21 | 東芝メモリ株式会社 | 半導体記憶装置及びメモリシステム |
JP2019053795A (ja) | 2017-09-13 | 2019-04-04 | 東芝メモリ株式会社 | メモリシステム |
US10509747B2 (en) | 2018-05-17 | 2019-12-17 | Seagate Technology Llc | Memory access operation suspend/resume |
JP2020155182A (ja) | 2019-03-20 | 2020-09-24 | キオクシア株式会社 | メモリシステム及び不揮発性メモリ |
US10956081B2 (en) | 2019-04-18 | 2021-03-23 | Intel Corporation | Method, system, and apparatus for multi-tiered progressive memory program operation suspend and resume |
-
2020
- 2020-12-11 JP JP2020205991A patent/JP2022092965A/ja active Pending
-
2021
- 2021-05-26 TW TW110118989A patent/TWI832056B/zh active
- 2021-07-15 CN CN202110799130.6A patent/CN114625310A/zh active Pending
- 2021-09-10 US US17/471,569 patent/US11790997B2/en active Active
-
2023
- 2023-09-01 US US18/459,501 patent/US20230420060A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220189561A1 (en) | 2022-06-16 |
US20230420060A1 (en) | 2023-12-28 |
CN114625310A (zh) | 2022-06-14 |
TW202223632A (zh) | 2022-06-16 |
TWI832056B (zh) | 2024-02-11 |
US11790997B2 (en) | 2023-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108713184B (zh) | 在存储器装置中执行擦除暂停操作的方法和设备 | |
US20230420060A1 (en) | Memory system | |
US9753771B2 (en) | System-on-chip including multi-core processor and thread scheduling method thereof | |
TWI744677B (zh) | 記憶體系統 | |
KR102532206B1 (ko) | 메모리 컨트롤러 및 그것을 포함하는 스토리지 장치 | |
US8990535B2 (en) | Method for operating memory controller, and memory system including the same | |
US20130073797A1 (en) | Memory device | |
US20170075610A1 (en) | Solid state memory system with power management mechanism and method of operation thereof | |
US11132143B2 (en) | Universal flash storage (UFS) device and computing device and computing device including storage UFS device for reporting buffer size based on reuse time after erase | |
TWI789817B (zh) | 用來進行記憶裝置的存取管理之方法、記憶裝置及其控制器、主裝置以及電子裝置 | |
US9746902B2 (en) | System-on-chip including multi-core processor and dynamic power management method thereof | |
US10372379B2 (en) | Command processing method and storage controller using the same | |
US10115458B2 (en) | Perform read or write on a non-volatile memory having a pending read or write based on temperature thereof | |
US20230035828A1 (en) | Solid state drive (ssd) and operating method | |
KR20200057311A (ko) | 통신되는 데이터의 양을 동작의 중단 빈도에 따라 스로틀링하는 스토리지 장치 | |
KR20100031132A (ko) | 플래시 메모리 시스템에서 페이징된 가비지 수집과 하우스 키핑 동작 | |
CN111065997A (zh) | 用于存储介质的协同数据迁移 | |
KR20210143611A (ko) | 멀티 테넌시를 지원하는 스토리지 장치 및 이의 동작 방법 | |
KR20160071951A (ko) | 반도체 장치 및 이의 동작 방법 | |
KR102560251B1 (ko) | 반도체 장치 및 반도체 시스템 | |
US20190310795A1 (en) | Suspending and resuming a read operation for a non-volatile memory | |
CN110908595B (zh) | 存储装置及信息处理系统 | |
US10725706B1 (en) | Apparatus and method of scheduling universal flash storage refresh operations according to a refresh handover mechanism | |
KR102349422B1 (ko) | 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 반도체 저장장치 | |
KR102509487B1 (ko) | 메모리 시스템 및 그것의 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20230106 |