(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024044695
(43)【公開日】2024-04-02
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
G06F 12/06 20060101AFI20240326BHJP
G11C 7/10 20060101ALI20240326BHJP
G11C 16/04 20060101ALI20240326BHJP
G11C 16/26 20060101ALI20240326BHJP
G06F 12/00 20060101ALI20240326BHJP
G06F 12/02 20060101ALI20240326BHJP
【FI】
G06F12/06 550A
G11C7/10 515
G11C16/04 170
G11C16/26 100
G06F12/00 597U
G06F12/02 530C
【審査請求】未請求
【請求項の数】18
【出願形態】OL
(21)【出願番号】P 2022150394
(22)【出願日】2022-09-21
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】三浦 雄志
【テーマコード(参考)】
5B160
5B225
【Fターム(参考)】
5B160CA11
5B160CD04
5B225BA01
5B225CA01
5B225DA09
5B225DE06
5B225EA05
5B225EA07
5B225FA01
(57)【要約】
【課題】データの読出し効率を向上させる。
【解決手段】一実施形態のメモリシステムは、各々が複数のメモリセルを含む第1プレーン及び第2プレーンを含む不揮発性メモリと、第1信号線を介して第1プレーン及び第2プレーンにコマンドを送信し、第2信号線を介して第1プレーン及び第2プレーンからデータを受信するように構成されたメモリコントローラと、を備える。メモリコントローラは、第1プレーンが第1処理を実行中である場合、第1条件が満たされるまで、第2プレーンに第1処理の予約を指示する第1コマンドの送信を待機するように構成される。
【選択図】
図10
【特許請求の範囲】
【請求項1】
各々が複数のメモリセルを含む第1プレーン及び第2プレーンを含む不揮発性メモリと、
第1信号線を介して前記第1プレーン及び前記第2プレーンにコマンドを送信し、第2信号線を介して前記第1プレーン及び前記第2プレーンからデータを受信するように構成されたメモリコントローラとを備え、
前記メモリコントローラは、前記第1プレーンが第1処理を実行中である場合、第1条件が満たされるまで、前記第2プレーンに前記第1処理の予約を指示する第1コマンドの送信を待機するように構成される、
メモリシステム。
【請求項2】
前記第1処理は、前記不揮発性メモリから読み出されたデータを前記メモリコントローラへ送信する処理を含む、
請求項1記載のメモリシステム。
【請求項3】
前記第1条件は、前記第1プレーンが実行中の前記第1処理を完了する第1時刻と、現時点から前記第1コマンドの送信を開始した場合に前記第1コマンドの送信が完了する第2時刻との差が閾値以下であることを含む、
請求項1記載のメモリシステム。
【請求項4】
前記不揮発性メモリは、複数のメモリセルを含む第3プレーンを更に含み、
前記メモリコントローラは、前記第1信号線を介して前記第3プレーンにコマンドを更に送信し、前記第2信号線を介して前記第3プレーンからデータを更に受信するように構成され、
前記第1プレーンが前記第1処理を実行中である場合、前記第1条件が満たされるまで、前記第3プレーンに前記第1処理の予約を指示する第2コマンドの送信を更に待機するように構成される、
請求項1記載のメモリシステム。
【請求項5】
前記メモリコントローラは、コンパクション処理を実行中の場合、前記第2プレーンが前記コンパクション処理に関して前記第1処理に要する時間と第2処理に要する時間との第1合計時間と、前記第3プレーンが前記コンパクション処理に関して前記第1処理に要する時間と前記第2処理に要する時間との第2合計時間とを比較した結果に基づいて、前記第1コマンド及び前記第2コマンドのいずれを先に送信するかを判定するように構成され、
前記第2処理は、前記不揮発性メモリからデータを読み出す処理を含む、
請求項4記載のメモリシステム。
【請求項6】
前記メモリコントローラは、前記第1合計時間が前記第2合計時間より多い場合、前記第1コマンドを前記第2コマンドより先に送信するように構成される、
請求項5記載のメモリシステム。
【請求項7】
前記メモリコントローラは、コンパクション処理又はランダムリード処理を実行中の場合、前記第2プレーンに関連付けられてキューイングされたコマンドの第1数と、前記第3プレーンに関連付けられてキューイングされたコマンドの第2数とを比較した結果に基づいて、前記第1コマンド及び前記第2コマンドのいずれを先に送信するかを判定するように構成される、
請求項4記載のメモリシステム。
【請求項8】
前記メモリコントローラは、前記第1数が前記第2数より多い場合、前記第1コマンドを前記第2コマンドより先に送信するように構成される、
請求項7記載のメモリシステム。
【請求項9】
前記メモリコントローラは、ランダムリード処理を実行中の場合、前記第2プレーンに関連付けられるコマンドがキューイングされた第1順番と、前記第3プレーンに関連付けられるコマンドがキューイングされた第2順番とを比較した結果に基づいて、前記第1コマンド及び前記第2コマンドのいずれを先に送信するかを判定するように構成される、
請求項4記載のメモリシステム。
【請求項10】
前記メモリコントローラは、前記第1順番が前記第2順番より先の場合、前記第1コマンドを前記第2コマンドより先に送信するように構成される、
請求項9記載のメモリシステム。
【請求項11】
各々が複数のメモリセルを含む第1プレーン、第2プレーン、及び第3プレーンを含む不揮発性メモリと、
第1信号線を介して前記第1プレーン、前記第2プレーン、及び前記第3プレーンにコマンドを送信し、第2信号線を介して前記第1プレーン、前記第2プレーン、及び前記第3プレーンからデータを受信するように構成されたメモリコントローラとを備え、
前記メモリコントローラは、前記第1プレーンが第1処理を実行中に前記第3プレーンに前記第1処理の予約を指示する第2コマンドが送信済みであり、かつ第2条件が満たされる場合、前記第2プレーンに前記第1処理の予約を指示する第1コマンドを送信するように構成される、
メモリシステム。
【請求項12】
前記第1処理は、前記不揮発性メモリから読み出されたデータを前記メモリコントローラへ送信する処理を含む、
請求項11記載のメモリシステム。
【請求項13】
前記メモリコントローラは、コンパクション処理を実行中の場合、前記第2プレーンが前記コンパクション処理に関して前記第1処理に要する時間と第2処理に要する時間との第1合計時間と、前記第3プレーンが前記コンパクション処理に関して前記第1処理に要する時間と前記第2処理に要する時間との第2合計時間と、を比較した結果に基づいて、前記第2条件が満たされるか否かを判定するように構成され、
前記第2処理は、前記不揮発性メモリからデータを読み出す処理を含む、
請求項11記載のメモリシステム。
【請求項14】
前記メモリコントローラは、前記第1合計時間が前記第2合計時間より多い場合、前記第2条件が満たされると判定するように構成される、
請求項13記載のメモリシステム。
【請求項15】
前記メモリコントローラは、コンパクション処理又はランダムリード処理を実行中の場合、前記第2プレーンに関連付けられてキューイングされたコマンドの第1数と、前記第3プレーンに関連付けられてキューイングされたコマンドの第2数とを比較した結果に基づいて、前記第2条件が満たされるか否かを判定するように構成される、
請求項11記載のメモリシステム。
【請求項16】
前記メモリコントローラは、前記第1数が前記第2数より多い場合、前記第2条件が満たされると判定するように構成される、
請求項15記載のメモリシステム。
【請求項17】
前記メモリコントローラは、ランダムリード処理を実行中の場合、前記第2プレーンに関連付けられるコマンドがキューイングされた第1順番と、前記第3プレーンに関連付けられるコマンドがキューイングされた第2順番とを比較した結果に基づいて、前記第2条件が満たされるか否かを判定するように構成される、
請求項11記載のメモリシステム。
【請求項18】
前記メモリコントローラは、前記第1順番が前記第2順番より先の場合、前記第2条件が満たされると判定するように構成される、
請求項17記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、メモリシステムに関する。
【背景技術】
【0002】
不揮発にデータを記憶する不揮発性メモリと、不揮発性メモリを制御するメモリコントローラとを備えるメモリシステムが知られている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許第11036412号明細書
【特許文献2】米国特許第10818328号明細書
【特許文献3】米国特許出願公開第2021/0208780号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
データの読出し効率を向上させる。
【課題を解決するための手段】
【0005】
実施形態のメモリシステムは、各々が複数のメモリセルを含む第1プレーン及び第2プレーンを含む不揮発性メモリと、第1信号線を介して上記第1プレーン及び上記第2プレーンにコマンドを送信し、第2信号線を介して上記第1プレーン及び上記第2プレーンからデータを受信するように構成されたメモリコントローラと、を備える。上記メモリコントローラは、上記第1プレーンが第1処理を実行中である場合、第1条件が満たされるまで、上記第2プレーンに上記第1処理の予約を指示する第1コマンドの送信を待機するように構成される。
【図面の簡単な説明】
【0006】
【
図1】第1実施形態に係る情報処理システムの構成の一例を示すブロック図。
【
図2】第1実施形態に係るメモリシステムの内部構成の一例を示すブロック図。
【
図3】第1実施形態に係るチャネルで用いられる信号線の一例を示すブロック図。
【
図4】第1実施形態に係るチップセットの構成の一例を示すブロック図。
【
図5】第1実施形態に係るメモリインタフェース回路の構成の一例を示すブロック図。
【
図6】第1実施形態に係るメモリシステムにおける送信コマンド調整処理の概要の一例を示すフローチャート。
【
図7】第1実施形態に係るメモリシステムにおける優先度の割当て方針の例を示す図。
【
図8】第1実施形態に係るメモリシステムにおける送信候補抽出処理の一例を示すフローチャート。
【
図9】第1実施形態に係るメモリシステムにおけるコマンド送信処理の一例を示すフローチャート。
【
図10】第1実施形態に係るメモリシステムにおける送信コマンド調整処理での動作例を示す図。
【
図11】第2実施形態に係るメモリシステムにおける送信候補抽出処理の一例を示すフローチャート。
【
図12】第2実施形態に係るメモリシステムにおけるコマンド送信処理の一例を示すフローチャート。
【
図13】第2実施形態に係るメモリシステムにおける送信コマンド調整処理での動作例を示す図。
【発明を実施するための形態】
【0007】
以下、実施形態につき図面を参照して説明する。説明に際し、略同一の機能及び構成を有する構成要素については、同一符号を付す。また、以下に示す実施形態は、技術的思想を例示するものである。実施形態は、構成部品の材質、形状、構造、配置等を特定するものではない。実施形態は、種々の変更を加えることができる。
【0008】
1.第1実施形態
1.1 構成
1.1.1 情報処理システム
第1実施形態に係る情報処理システムについて説明する。
【0009】
図1は、第1実施形態に係る情報処理システムの構成を示すブロック図である。情報処理システム1は、ホスト2及びメモリシステム3を含む。ホスト2及びメモリシステム3は、ホストバスHBを介して接続される。
【0010】
ホスト2は、パーソナルコンピュータ、携帯情報端末、またはサーバ等の電子機器である。
【0011】
メモリシステム3は、メモリカード、またはSSD(Solid State Drive)等の記憶媒体である。
【0012】
メモリシステム3は、メモリコントローラ10及び不揮発性メモリ20を含む。メモリコントローラ10及び不揮発性メモリ20は、メモリバスMBを介して接続される。
【0013】
メモリコントローラ10は、SoC(System-on-a-Chip)のようなIC(Integrated Circuit)チップである。メモリコントローラ10は、受信した要求に基づいて不揮発性メモリ20を制御する。
【0014】
不揮発性メモリ20は、例えば、NAND型フラッシュメモリである。不揮発性メモリ20は、不揮発にデータを記憶する。
【0015】
1.1.2 メモリシステム
次に、メモリシステム3の内部構成について、
図2を用いて説明する。
図2は、第1実施形態に係るメモリシステムの内部構成の一例を示すブロック図である。
【0016】
メモリコントローラ10は、ホストインタフェース(ホストI/F)11、制御部12、並びにメモリインタフェース(メモリI/F)13-0及びメモリI/F13-1を含む。
【0017】
ホストI/F11は、ホストバスHBを介して外部のホスト2と接続されるハードウェアインタフェースである。ホストI/F11は、ホスト2とメモリコントローラ10との間のインタフェース規格に従った通信を行う。ホストI/F11が準拠するインタフェース規格は、例えば、SATA(Serial advanced technology attachment)、またはPCIeTM(PCI express)等である。
【0018】
制御部12は、メモリコントローラ10の全体を制御する回路である。制御部12は、FTL(Flash Translation Layer)として機能してもよい。制御部12は、例えば、ハードウェアとして、CPU(Central processing unit)等のプロセッサ、ROM(Read only memory)、及びRAM(Random Access Memory)を含む。
【0019】
メモリI/F13-0及びメモリI/F13-1の各々は、メモリバスMBを介して不揮発性メモリ20と接続されるハードウェアインタフェースである。メモリI/F13-0及びメモリI/F13-1の各々は、不揮発性メモリ20とメモリコントローラ10との間のインタフェース規格に従った通信を行う。メモリI/F13-0及びメモリI/F13-1が準拠するインタフェース規格は、例えば、NANDインタフェース規格である。
【0020】
不揮発性メモリ20は、チップセット21-0及びチップセット21-1を含む。
【0021】
チップセット21-0及びチップセット21-1の各々は、メモリチップの集合である。チップセット21-0は、メモリI/F13-0に対応する。チップセット21-1は、メモリI/F13-1に対応する。
【0022】
メモリバスMBは、チャネルCH0及びチャネルCH1を含む。
【0023】
チャネルCH0及びチャネルCH1は、互いに異なる信号線で構成される。チャネルCH0は、チップセット21-0とメモリI/F13-0との間を接続する。チャネルCH1は、チップセット21-1とメモリI/F13-1との間を接続する。
【0024】
図3は、第1実施形態に係るチャネルで用いられる信号線の一例を示すブロック図である。
図3では、一例として、メモリI/F13-0とチップセット21-0との間で送受信される信号線が示される。なお、メモリI/F13-1とチップセット21-1との間で送受信される信号線は、メモリI/F13-0とチップセット21-0との間で送受信される信号線と同等である。
【0025】
チャネルCH0で用いられる信号線は、例えば、信号線CMD及び信号線DQを含む。
【0026】
信号線CMDは、例えば、2本の信号線である。信号線CMDは、メモリI/F13-0からチップセット21-0へのコマンド及びアドレスの送信に用いられる。
【0027】
信号線DQは、例えば、信号線CMDと異なる8本の信号線である。信号線DQは、チップセット21-0に書き込まれるデータ及びチップセット21-0から読み出されるデータの送受信に用いられる。
【0028】
メモリI/F13-0は、信号線CMDを用いてコマンド及びアドレスをチップセット21-0に送信しつつ、信号線DQを用いてデータをチップセット21-0から受信するように構成される。すなわち、メモリI/F13-0は、信号線CMDを用いたコマンド及びアドレスのチップセット21-0への送信と、信号線DQを用いたデータのチップセット21-0からの受信とを、並行して実行するように構成される。
【0029】
1.1.3 チップセット
図4は、第1実施形態に係るチップセットの構成の一例を示すブロック図である。
図4では、一例として、チップセット21-0の構成が示される。なお、チップセット21-1の構成は、チップセット21-0の構成と同等である。
【0030】
チップセット21-0は、メモリチップCP0及びメモリチップCP1を含む。メモリチップCP0及びメモリチップCP1は、チャネルCH0を介して、メモリI/F13-0に対して並列に動作するように構成される。
【0031】
メモリチップCP0は、プレーンPN<0>及びPN<1>を含む。メモリチップCP1は、プレーンPN<2>及びPN<3>を含む。プレーンPN<0>及びPN<1>は、メモリチップCP0内で並列に動作するように構成される。プレーンPN<2>及びPN<3>は、メモリチップCP1内で並列に動作するように構成される。つまり、プレーンPN<0>、PN<1>、PN<2>、及びPN<3>は、チャネルCH0を介して、メモリI/F13-0に対して並列に動作するように構成される。
【0032】
プレーンPN<0>、PN<1>、PN<2>、及びPN<3>の各々は、(n+1)個のブロックBLK0、…、及びBLKnを含む。nは、例えば、自然数である。ブロックBLKは、複数のメモリセルを含む。ブロックBLKは、データ消去の最小単位である。データ読出しの最小単位は、ブロックBLKより小さい。
【0033】
以下では、メモリI/F13-0に対して並列に動作するプレーンPNの総数は、“プレーン数”とも呼ばれる(
図4の例では、4個)。プレーンPN<0>、PN<1>、PN<2>、及びPN<3>のうちの任意の1個は、プレーンPNと表記する。
【0034】
1.1.4 メモリI/F
図5は、第1実施形態に係るメモリI/Fの構成の一例を示すブロック図である。
図5では、一例として、メモリI/F13-0の構成が示される。なお、メモリI/F13-1の構成は、メモリI/F13-0の構成と同等である。
【0035】
メモリI/F13-0は、チャネルキュー31、選択部32、プレーンキュー33<0>、33<1>、33<2>、及び33<3>、並びにスケジューラ34を含む。プレーンキュー33<0>、33<1>、33<2>、及び33<3>のうちの任意の1個は、プレーンキュー33と表記する。
【0036】
チャネルキュー31は、コマンド及びアドレスの組をキューイングするためのメモリである。チャネルキュー31には、例えば、コマンドと、及び当該コマンドが実行されるチップCP、プレーンPN、及びブロックBLKを特定するアドレスと、が関連づけてキューイングされる。チャネルキュー31にキューイングされたコマンドは、対応する処理の実行に応じて、チャネルキュー31から消去される。チャネルキュー31にキューイングされるコマンドの例としては、リードコマンド及びライトコマンドが挙げられる。
【0037】
選択部32は、チャネルキュー31とプレーンキュー33<0>、33<1>、33<2>、及び33<3>との間でコマンドを受け渡すための回路である。選択部32は、チャネルキュー31にキューイングされた複数のコマンドから、プレーンPN<0>、PN<1>、PN<2>、及びPN<3>の各々にキューイングさせるコマンドを1個ずつ選択する。選択部32は、選択されたコマンドを複数のコマンドに細分化する。リードコマンドが選択される場合、選択部32は、例えば、リードコマンドを、リードセンス、データアウト予約、データアウト実行、及びステータスリードの4個のコマンドに細分化する。選択部32は、細分化された複数のコマンドを、対応するプレーンキュー33に記憶させる。リードセンス、データアウト予約、データアウト実行、及びステータスリードはそれぞれ、リードセンス処理の実行、データアウト処理の予約、データアウト処理の実行、及びステータスリード処理の実行を指示するコマンドである。リードセンス処理は、メモリセルの閾値電圧をセンスすることで、当該メモリセルに記憶されるデータを判定する処理である。データアウト処理は、リードセンス処理によって判定されたデータをメモリコントローラ10に送信する処理である。ステータスリード処理は、リードセンス処理が実行中か否かを判定する処理である。例えば、リードセンス処理を実行中のプレーンPNは、ステータスリード処理にフェイルする。リードセンス処理を実行中でないプレーンPNは、ステータスリード処理にパスする。
【0038】
プレーンキュー33<0>、33<1>、33<2>、及び33<3>はそれぞれ、プレーンPN<0>、PN<1>、PN<2>、及びPN<3>に次に送信されるコマンド及びアドレスの組をキューイングするためのメモリである。プレーンキュー33<0>、33<1>、33<2>、及び33<3>の各々には、例えば、チャネルキュー31によって細分化されたコマンドと、及び当該コマンドが実行されるブロックBLKを特定するアドレスと、が関連づけてキューイングされる。プレーンキュー33<0>、33<1>、33<2>、及び33<3>にキューイングされたコマンドは、対応する処理の実行に応じて、プレーンキュー33<0>、33<1>、33<2>、及び33<3>から消去される。
【0039】
スケジューラ34は、コマンドの送信タイミングを制御する回路である。スケジューラ34は、処理状態及び優先度に基づき、プレーンキュー33<0>、33<1>、33<2>、及び33<3>の各々にキューイングされたコマンドの送信タイミングを決定する。処理状態は、プレーンPNが処理を実行中か否か、及び実行中の処理の種類等を判定するための情報である。処理状態は、例えば、ビジー状態、アイドル状態、及びレディ状態を含む。直近に送信されたコマンドがリードセンスである場合、スケジューラ34は、プレーンPNの処理状態をビジー状態として管理する。直近に送信されたコマンドがデータアウト予約である場合、スケジューラ34は、プレーンPNの処理状態をアイドル状態として管理する。スケジューラ34は、ステータスリード処理にパスしたプレーンPNの状態をレディ状態として管理する。優先度は、プレーンキュー33<0>、33<1>、33<2>、及び33<3>の各々にキューイングされたデータアウト予約の送信順番を判定するため情報である。優先度は、例えば、正の数であってもよい。スケジューラ34は、高い優先度に対応付けられたデータアウト予約ほど、先に送信するように構成される。
【0040】
1.2 動作
次に、第1実施形態に係るメモリシステムにおける動作について説明する。
【0041】
1.2.1 送信コマンド調整処理の概要
図6は、第1実施形態に係るメモリシステムにおける送信コマンド調整処理の概要の一例を示すフローチャートである。
【0042】
開始条件が満たされると(開始)、スケジューラ34は、ループ処理を実行する(S10)。開始条件は、1個前の送信コマンド調整処理の開始から所定の時間が経過することでもよい。所定の時間は、1回の送信コマンド調整処理に要する時間より長く設計される。開始条件は、1個前の送信コマンド調整処理が終了することでもよい。S10のループ処理は、プレーン数だけループする。S10のループ処理のループ単位は、S11の処理、S12の処理、及びS13の処理を含む。
【0043】
S10のループ処理のループ単位において、スケジューラ34は、1個のプレーンPNを選択する(S11)。プレーンPNの選択方式としては、例えば、ラウンドロビン方式が適用される。以下では、S11の処理で選択されたプレーンPN、及びS11の処理で選択されたプレーンPNに対応するプレーンキュー33はそれぞれ、プレーンPN<x>及びプレーンキュー33<x>と表記する。
【0044】
スケジューラ34は、プレーンPN<x>に優先度を割当てる(S12)。
【0045】
スケジューラ34は、S12の処理で割当てられた優先度に基づき、送信候補抽出処理を実行する(S13)。
【0046】
送信候補抽出処理は、プレーンキュー33<x>にキューイングされたコマンドから次に送信するコマンドの候補となる送信候補を抽出する処理である。送信候補抽出処理によって、S10のループ処理が終了した時点で、最大1個のリードセンス、最大1個のデータアウト予約、及び最大1個のステータスリードが送信候補として抽出される。
【0047】
S10のループ処理が終了すると、スケジューラ34は、コマンド送信処理を実行する(S30)。コマンド送信処理は、抽出された送信候補から、1個のコマンドを送信する処理である。
【0048】
S30の処理が終了すると、送信コマンド調整処理は終了となる(終了)。
【0049】
1.2.2 優先度割当ての詳細
図7は、第1実施形態に係るメモリシステムにおける優先度の割当て方針の例を示す図である。
図7は、
図6におけるS12の処理に対応する。
図7では、優先度の割当て方針が異なる3種類のケースが示される。
【0050】
第1ケースは、コンパクション処理に伴うリードコマンドがチャネルキュー31にキューイングされる場合に対応する。第2ケースは、ランダムリード処理に伴うリードコマンドがチャネルキュー31にキューイングされ、かつスループットを重視する場合に対応する。第3ケースは、ランダムリード処理に伴うリードコマンドがチャネルキュー31にキューイングされ、かつレイテンシを重視する場合に対応する。
【0051】
第1ケースでは、スケジューラ34は、残りのリードコマンドで実行されるリードセンス処理及びデータアウト処理の合計時間を、プレーンPNごとに算出する。スケジューラ34は、プレーンPN<x>に、算出された合計時間の多さに応じた優先度を割り当てる。例えば、合計時間が最も多い場合、スケジューラ34は、プレーンPN<x>に最も高い優先度を割り当てる。
【0052】
第2ケースでは、スケジューラ34は、チャネルキュー31にキューイングされたリードコマンドの数を、プレーンPNごとに算出する。スケジューラ34は、プレーンPN<x>に、算出されたリードコマンド数の多さに応じた優先度を割り当てる。例えば、リードコマンド数が最も多い場合、スケジューラ34は、プレーンPN<x>に最も高い優先度を割り当てる。
【0053】
なお、第2ケースでは、第1ケースと同様に、スケジューラ34は、プレーンPN<x>に、残りのリードコマンドで実行されるリードセンス処理及びデータアウト処理の合計時間の多さに応じた優先度を割り当ててもよい。
【0054】
第3ケースでは、スケジューラ34は、チャネルキュー31にキューイングされたリードコマンドの到着順を、プレーンPNごとに算出する。スケジューラ34は、プレーンPN<x>に、算出された到着順の早さに応じた優先度を割り当てる。例えば、到着順が最も早い場合、スケジューラ34は、プレーンPN<x>に最も高い優先度を割り当てる。
【0055】
1.2.3 送信候補抽出処理の詳細
図8は、第1実施形態に係るメモリシステムにおける送信候補抽出処理の一例を示すフローチャートである。
図8は、
図6におけるS13の処理に対応する。
【0056】
プレーンPN<x>に関するS12の処理が終わると(開始)、スケジューラ34は、第1抽出条件が満たされるか否かを判定する(S21)。第1抽出条件は、プレーンPN<x>の処理状態がアイドル状態であり、かつプレーンキュー33<x>にリードセンスがキューイングされており、かつ送信候補として抽出されたリードセンスがないことである。
【0057】
第1抽出条件が満たされる場合(S21;true)、スケジューラ34は、プレーンキュー33<x>にキューイングされたリードセンスを送信候補として抽出する(S22)。
【0058】
第1抽出条件が満たされない場合(S21;false)、又はS22の処理の後、スケジューラ34は、第2抽出条件が満たされるか否かを判定する(S23)。第2抽出条件は、プレーンPN<x>の処理状態がレディ状態であり、かつプレーンキュー33<x>にデータアウト予約がキューイングされており、かつ予約されたデータアウト処理がなく、かつプレーンPN<x>の優先度が第1閾値より高いことである。第1閾値は、優先度の最小値以上かつ優先度の最大値以下の数である。
【0059】
第2抽出条件が満たされる場合(S23;true)、スケジューラ34は、プレーンキュー33<x>にキューイングされたデータアウト予約を送信候補として抽出する(S24)。
【0060】
S24の後、スケジューラ34は、プレーンPN<x>の優先度を第1閾値に代入する(S25)。
【0061】
第2抽出条件が満たされない場合(S23;false)、又はS25の処理の後、スケジューラ34は、第3抽出条件が満たされるか否かを判定する(S26)。第3抽出条件は、プレーンPN<x>の処理状態がビジー状態であり、かつプレーンキュー33<x>にステータスリードがキューイングされており、かつ送信候補として抽出されたステータスリードがないことである。
【0062】
第3抽出条件が満たされる場合(S26;true)、スケジューラ34は、プレーンキュー33<x>にキューイングされたステータスリードを送信候補として抽出する(S27)。
【0063】
第3抽出条件が満たされない場合(S26;false)、又はS27の処理の後、送信候補抽出処理は、終了となる(終了)。
【0064】
1.2.4 コマンド送信処理の詳細
図9は、第1実施形態に係るメモリシステムにおけるコマンド送信処理の一例を示すフローチャートである。
図9は、
図6におけるS30の処理に対応する。
【0065】
S10のループ処理が終わると(開始)、スケジューラ34は、送信候補として抽出されたデータアウトがあるか否かを判定する(S31)。
【0066】
送信候補として抽出されたデータアウト予約がある場合(S31;true)、スケジューラ34は、送信タイミング条件が満たされるか否かを判定する(S32)。送信タイミング条件は、実行中のデータアウト処理の完了予定時刻と、データアウト予約の送信完了予定時刻との差分が第2閾値以下であることである。データアウト予約の送信完了予定時刻とは、S32の判定時点(現時点)からデータアウト予約の送信を開始した場合に、データアウト予約の送信が完了する予定時刻である。第2閾値は、例えば、他のコマンドの送信に要する時間以下となるように設計される。すなわち、送信タイミング条件が満たされることは、実行中のデータアウト処理が完了するまでに、S32の判定時点からデータアウト予約以外のコマンドを送信する時間がないこと、と置き換えてもよい。
【0067】
送信タイミング条件が満たされる場合(S32;true)、スケジューラ34は、送信候補として抽出されたデータアウト予約を送信する(S33)。
【0068】
S33の処理の後、スケジューラ34は、第1閾値を、例えば、優先度の最小値に初期化する(S34)。
【0069】
送信候補として抽出されたデータアウト予約がない場合(S31;false)、又は送信タイミング条件が満たされない場合(S32;false)、スケジューラ34は、送信候補として抽出されたリードセンスがあるか否かを判定する(S35)。
【0070】
送信候補として抽出されたリードセンスがある場合(S35;true)、スケジューラ34は、送信候補として抽出されたリードセンスを送信する(S36)。
【0071】
送信候補として抽出されたリードセンスがない場合(S35;false)、スケジューラ34は、送信候補として抽出されたステータスリードがあるか否かを判定する(S37)。
【0072】
送信候補として抽出されたステータスリードがある場合(S37;true)、スケジューラ34は、送信候補として抽出されたステータスリードを送信する(S38)。
【0073】
S34の処理の後、S36の処理の後、S38の処理の後、又は送信候補として抽出されたステータスリードがない場合(S37;false)、コマンド送信処理は終了となる(終了)。
【0074】
1.2.5 動作例
図10は、第1実施形態に係るメモリシステムにおける送信コマンド調整処理での動作例を示す図である。
図10では、チャネルキュー31にキューイングされる一連のリードコマンドに応じて細分化されたコマンドの送信時間及びコマンドに対応する処理の実行時間が、プレーンPN<0>、PN<1>、PN<2>、及びPN<3>の各々について示される。
【0075】
図10で示されるコマンドの送信時間は、リードセンス送信時間、ステータスリード送信時間、及びデータアウト予約送信時間である。
図10では、ステータスリード送信時間の終了は、対象のプレーンPNがステータスリード処理にパスしたことを意味する。
【0076】
図10で示される処理の実行時間は、リードセンス処理時間及びデータアウト処理時間である。
図10では、データアウト処理の開始を指示するデータアウト実行の送信時間は、省略される。
【0077】
以下では、
図10を参照して、時刻T11から時刻T14までの動作について説明する。時刻T11は、プレーンPN<0>がレディ状態になる時刻である。時刻T12は、プレーンPN<1>がレディ状態になる時刻である。時刻T13は、プレーンPN<3>で実行中のデータアウト処理の完了予定時刻と、データアウト予約の送信完了予定時刻との差分が第2閾値以下となる時刻である。時刻T14は、プレーンPN<1>で実行中のデータアウト処理の完了予定時刻と、データアウト予約の送信完了予定時刻との差分が第2閾値以下となる時刻である。期間D11は、時刻T11以上かつ時刻T12未満の期間である。期間D11において、プレーンPN<1>、PN<2>、及びPN<3>の処理状態はそれぞれ、ビジー状態、ビジー状態、及びアイドル状態である。期間D12は、時刻T12以上かつ時刻T13未満の期間である。期間D12において、プレーンPN<2>及びPN<3>の処理状態はそれぞれ、ビジー状態及びアイドル状態である。期間D13は、時刻T13以上かつ時刻T14未満の期間である。
【0078】
期間D11における優先度の割当て処理(S12)で、スケジューラ34は、プレーンPN<0>に割り当てられた優先度を第1閾値に代入する。
【0079】
期間D11における送信候補抽出処理(S13)で、スケジューラ34は、プレーンキュー33<0>にキューイングされたデータアウト予約を送信候補として抽出する。
【0080】
期間D11におけるコマンド送信処理(S30)で、スケジューラ34は、プレーンPN<3>で実行中のデータアウト処理の完了予定時刻と、データアウト予約の送信完了予定時刻との差分が第2閾値を超えると判定する。このため、期間D11にわたって、スケジューラ34は、プレーンPN<0>にデータアウト予約を送信しない。すなわち、期間D11にわたって、プレーンPN<0>は、レディ状態である。
【0081】
期間D12における優先度の割当て処理(S12)で、スケジューラ34は、プレーンPN<1>に第1閾値より高い優先度を割り当てる。
【0082】
期間D12における送信候補抽出処理(S13)で、スケジューラ34は、プレーンキュー33<0>にキューイングされたデータアウト予約に代えて、プレーンキュー33<1>にキューイングされたデータアウト予約を送信候補として抽出する。
【0083】
期間D12におけるコマンド送信処理(S30)で、スケジューラ34は、プレーンPN<3>で実行中のデータアウト処理の完了予定時刻と、データアウト予約の送信完了予定時刻との差分が第2閾値を超えると判定する。このため、期間D12にわたって、スケジューラ34は、プレーンPN<0>及びPN<1>にデータアウト予約を送信しない。すなわち、期間D12にわたって、プレーンPN<0>及びPN<1>は、レディ状態である。
【0084】
時刻T13におけるコマンド送信処理(S30)で、スケジューラ34は、プレーンPN<3>で実行中のデータアウト処理の完了予定時刻と、データアウト予約の送信完了予定時刻との差分が第2閾値以下であると判定する。このため、時刻T13において、スケジューラ34は、プレーンPN<1>にデータアウト予約を送信する。これに伴い、第1閾値が初期化される。
【0085】
期間D13のうちプレーンPN<1>へのデータアウト予約の送信が完了した後、プレーンPN<1>の処理状態は、アイドル状態となる。期間D13において、プレーンPN<2>の処理状態は、ビジー状態である。期間D13において、プレーンPN<3>の処理状態は、アイドル状態又はビジー状態である。期間D13において、プレーンPN<3>のデータアウト処理が完了すると、スケジューラ34は、プレーンPN<1>にデータアウト実行を送信する。これに伴い、プレーンPN<1>はデータアウト処理を開始する。
【0086】
期間D13における送信候補抽出処理(S13)で、スケジューラ34は、プレーンキュー33<0>にキューイングされたデータアウト予約を送信候補として抽出する。
【0087】
期間D13におけるコマンド送信処理(S30)で、スケジューラ34は、プレーンPN<1>で実行中のデータアウト処理の完了予定時刻と、データアウト予約の送信完了予定時刻との差分が第2閾値を超えると判定する。このため、期間D13にわたって、スケジューラ34は、プレーンPN<0>にデータアウト予約を送信しない。すなわち、期間D13にわたって、プレーンPN<0>は、レディ状態である。
【0088】
時刻T14において、スケジューラ34は、プレーンPN<1>で実行中のデータアウト処理の完了予定時刻と、データアウト予約の送信完了予定時刻との差分が第2閾値以下であると判定する。このため、時刻T14において、スケジューラ34は、プレーンPN<0>にデータアウト予約を送信する。
【0089】
1.3 第1実施形態に係る効果
第1実施形態によれば、スケジューラ34は、プレーンPN<3>がデータアウト処理を実行中である場合、送信タイミング条件が満たされるまで、プレーンPN<0>及びPN<1>にデータアウト予約の送信を待機するように構成される。これにより、プレーンPN<3>のデータアウト処理が完了する直前で、データアウト予約を送信するプレーンPNを決定できる。このため、データアウト予約がキューイングされた時点で次にデータアウト処理を実行するプレーンPNを決定する場合よりも、データの読出し効率が高くなるプレーンPNを選択できる。
【0090】
コンパクション処理を実行中の場合、スケジューラ34は、プレーンPN<0>、PN<1>、PN<2>、及びPN<3>の各々で実行されるリードセンス処理及びデータアウト処理の回数を把握できる。第1実施形態によれば、コンパクション処理を実行中の場合、スケジューラ34は、残りのリードセンス処理及びデータアウト処理の合計時間の多さに応じて、プレーンPNに優先度を割り当てる。これにより、残りのリードセンス処理及びデータアウト処理の合計時間のプレーンPN毎の偏りを少なくすることができる。したがって、コンパクション処理の処理効率を向上させることができる。
【0091】
ランダムリード処理を実行中の場合、チャネルキュー31にキューイングされるキューの数は、上限値が設けられる。第1実施形態によれば、ランダムリード処理を実行中であり、かつスループットを重視する場合、スケジューラ34は、チャネルキュー31にキューイングされたキューの数に応じて、プレーンPNに優先度を割り当て得る。これにより、チャネルキュー31にキューイングされたキューの数のプレーンPN毎の偏りを少なくすることができる。したがって、スループットを向上させることができる。
【0092】
第1実施形態によれば、ランダムリード処理を実行中であり、かつレイテンシを重視する場合、スケジューラ34は、チャネルキュー31にキューイングされたキューの順番に応じて、プレーンPNに優先度を割り当て得る。これにより、チャネルキュー31にキューイングされたキューが送信されるまでの時間のプレーンPN毎の偏りを少なくすることができる。したがって、レイテンシを向上させることができる。
【0093】
2. 第2実施形態
次に、第2実施形態に係るメモリシステムについて説明する。第2実施形態に係るメモリシステムでは、データアウト予約に関する送信候補抽出処理及びコマンド送信処理が第1実施形態と異なる。以下では、第1実施形態と異なる動作について説明する。
【0094】
2.1 送信候補抽出処理の詳細
図11は、第2実施形態に係るメモリシステムにおける送信候補抽出処理の一例を示すフローチャートである。
図11は、第1実施形態における
図8に対応する。
【0095】
プレーンPN<x>に関するS12の処理が終わると(開始)、スケジューラ34は、第1抽出条件が満たされるか否かを判定する(S41)。
【0096】
第1抽出条件が満たされる場合(S41;true)、スケジューラ34は、プレーンキュー33<x>にキューイングされたリードセンスを送信候補として抽出する(S42)。
【0097】
第1抽出条件が満たされない場合(S41;false)、又はS42の処理の後、スケジューラ34は、第4抽出条件が満たされるか否かを判定する(S43)。第4抽出条件は、プレーンPN<x>の処理状態がレディ状態であり、かつプレーンキュー33<x>にデータアウト予約がキューイングされており、かつプレーンPN<x>の優先度が第1閾値及び第3閾値より高いことである。
【0098】
第3閾値は、0以上かつ優先度の最大値以下の数である。第3閾値は、例えば、データアウト実行の送信に応じて、例えば0に初期化される。
【0099】
第4抽出条件が満たされる場合(S43;true)、スケジューラ34は、プレーンキュー33<x>にキューイングされたデータアウト予約を送信候補として抽出する(S44)。
【0100】
S44の後、スケジューラ34は、プレーンPN<x>の優先度を第1閾値に代入する(S45)。
【0101】
第4抽出条件が満たされない場合(S43;false)、又はS45の処理の後、スケジューラ34は、第3抽出条件が満たされるか否かを判定する(S46)。
【0102】
第3抽出条件が満たされる場合(S46;true)、スケジューラ34は、プレーンキュー33<x>にキューイングされたステータスリードを送信候補として抽出する(S47)。
【0103】
第3抽出条件が満たされない場合(S46;false)、又はS47の処理の後、送信候補抽出処理は、終了となる(終了)。
【0104】
2.2 コマンド送信処理の詳細
図12は、第2実施形態に係るメモリシステムにおけるコマンド送信処理の一例を示すフローチャートである。
図12は、第1実施形態における
図9に対応する。
【0105】
S10のループ処理が終わると(開始)、スケジューラ34は、送信候補として抽出されたリードセンスがあるか否かを判定する(S51)。
【0106】
送信候補として抽出されたリードセンスがある場合(S51;true)、スケジューラ34は、送信候補として抽出されたリードセンスを送信する(S52)。
【0107】
送信候補として抽出されたリードセンスがない場合(S52;false)、スケジューラ34は、送信候補として抽出されたデータアウト予約があるか否かを判定する(S53)。
【0108】
送信候補として抽出されたデータアウト予約がある場合(S53;true)、スケジューラ34は、送信候補として抽出されたデータアウト予約を送信する(S54)。
【0109】
S54の処理の後、スケジューラ34は、第3閾値に、第1閾値を代入する(S55)。
【0110】
S55の処理の後、スケジューラ34は、第1閾値を、例えば、優先度の最小値に初期化する(S56)。
【0111】
送信候補として抽出されたデータアウト予約がない場合(S53;false)、スケジューラ34は、送信候補として抽出されたステータスリードがあるか否かを判定する(S57)。
【0112】
送信候補として抽出されたステータスリードがある場合(S57;true)、スケジューラ34は、送信候補として抽出されたステータスリードを送信する(S58)。
【0113】
S52の処理の後、S56の処理の後、S58の処理の後、又は送信候補として抽出されたステータスリードがない場合(S57;false)、コマンド送信処理は終了となる(終了)。
【0114】
2.3 動作例
図13は、第2実施形態に係るメモリシステムにおける送信コマンド調整処理での動作例を示す図である。
図13は、第1実施形態における
図10に対応する。
【0115】
以下では、
図13を参照して、時刻T21から時刻T24までの動作について説明する。時刻T21は、プレーンPN<0>がレディ状態になる時刻である。時刻T21において、プレーンPN<1>、PN<2>、及びPN<3>の処理状態はそれぞれ、ビジー状態、ビジー状態、及びアイドル状態である。時刻T22は、プレーンPN<1>がレディ状態になる時刻である。時刻T22において、プレーンPN<0>、PN<2>、及びPN<3>の処理状態はそれぞれ、アイドル状態、ビジー状態、及びアイドル状態である。時刻T23は、プレーンPN<3>で実行中のデータアウト処理が完了する時刻である。時刻T23において、プレーンPN<0>、PN<1>、及びPN<2>の処理状態はそれぞれ、アイドル状態、アイドル状態、及びビジー状態である。時刻T24は、プレーンPN<1>で実行中のデータアウト処理が完了する時刻である。時刻T24において、プレーンPN<2>及びPN<3>の処理状態はそれぞれ、ビジー状態、及びビジー状態である。
【0116】
時刻T21における送信候補抽出処理(S13)で、スケジューラ34は、プレーンキュー33<0>にキューイングされたデータアウト予約を送信候補として抽出する。これに伴い、プレーンPN<0>に割り当てられた優先度が第1閾値に代入される。
【0117】
時刻T21におけるコマンド送信処理(S30)で、スケジューラ34は、プレーンPN<0>にデータアウト予約を送信する。データアウト予約の送信が完了した後、プレーンPN<0>は、アイドル状態となってデータアウト処理が予約される。これに伴い、第1閾値が第3閾値に代入される。その後、第1閾値は、初期化される。
【0118】
時刻T22における優先度の割当て処理(S12)で、スケジューラ34は、プレーンPN<1>に第1閾値及び第3閾値より高い優先度を割り当てる。
【0119】
S12の処理に伴い、時刻T22における送信候補抽出処理(S13)で、スケジューラ34は、プレーンキュー33<1>にキューイングされたデータアウト予約を送信候補として抽出する。これに伴い、プレーンPN<1>に割り当てられた優先度が第1閾値に代入される。
【0120】
時刻T22におけるコマンド送信処理(S30)で、スケジューラ34は、プレーンPN<1>にデータアウト予約を送信する。データアウト予約の送信が完了した後、プレーンPN<1>は、アイドル状態となってデータアウト処理が予約される。これに伴い、第1閾値が第3閾値に代入される。その後、第1閾値は、初期化される。
【0121】
時刻T23において、スケジューラ34は、プレーンPN<1>にデータアウト実行を送信する。これに伴い、プレーンPN<1>は、データアウト処理を開始する。また、第3閾値は初期化される。
【0122】
時刻T23における送信候補抽出処理(S13)で、スケジューラ34は、プレーンキュー33<3>にキューイングされたリードセンス、及びプレーンキュー33<0>にキューイングされたデータアウト予約を送信候補として抽出する。
【0123】
時刻T23におけるコマンド送信処理(S30)で、スケジューラ34は、プレーンPN<3>にリードセンスを送信する。リードセンスの送信が完了した後、プレーンPN<3>は、ビジー状態となる。
【0124】
また、プレーンPN<3>にリードセンスが送信された後の時刻におけるコマンド送信処理(S30)で、スケジューラ34は、データアウト予約を送信する。アイドル状態となってデータアウト処理が予約される。データアウト予約の送信が完了した後、プレーンPN<0>は、アイドル状態となってデータアウト処理が予約される。
【0125】
時刻T24において、スケジューラ34は、プレーンPN<0>にデータアウト実行を送信する。これに伴い、プレーンPN<0>は、データアウト処理を開始する。
【0126】
2.4 第2実施形態に係る効果
第2実施形態によれば、スケジューラ34は、データアウト処理の実行中にプレーンPN<0>にデータアウト予約を送信済みであり、かつプレーンPN<1>の優先度が第1閾値及び第3閾値より高い場合、プレーンPN<1>にデータアウト予約を送信する。このため、データアウト予約がキューイングされた時点で次にデータアウト処理を実行するプレーンPNを決定する場合よりも、データの読出し効率が高くなるプレーンPNを選択できる。
【0127】
コンパクション処理を実行中の場合、スケジューラ34は、プレーンPN<0>、PN<1>、PN<2>、及びPN<3>の各々で実行されるリードセンス処理及びデータアウト処理の回数を把握できる。第2実施形態によれば、コンパクション処理を実行中の場合、スケジューラ34は、残りのリードセンス処理及びデータアウト処理の合計時間の多さに応じて、プレーンPNに優先度を割り当てる。これにより、残りのリードセンス処理及びデータアウト処理の合計時間のプレーンPN毎の偏りを少なくすることができる。したがって、コンパクション処理の処理効率を向上させることができる。
【0128】
ランダムリード処理を実行中の場合、チャネルキュー31にキューイングされるキューの数は、上限値が設けられる。第2実施形態によれば、ランダムリード処理を実行中であり、かつスループットを重視する場合、スケジューラ34は、チャネルキュー31にキューイングされたキューの数に応じて、プレーンPNに優先度を割り当て得る。これにより、チャネルキュー31にキューイングされたキューの数のプレーンPN毎の偏りを少なくすることができる。したがって、スループットを向上させることができる。
【0129】
第2実施形態によれば、ランダムリード処理を実行中であり、かつレイテンシを重視する場合、スケジューラ34は、チャネルキュー31にキューイングされたキューの順番に応じて、プレーンPNに優先度を割り当て得る。これにより、チャネルキュー31にキューイングされたキューが送信されるまでの時間のプレーンPN毎の偏りを少なくすることができる。したがって、レイテンシを向上させることができる。
【0130】
3. その他
上述の第1実施形態及び第2実施形態では、不揮発性メモリ20が2個のチップセット21-0及び21-1を含む場合について説明したが、これに限られない。不揮発性メモリ20は、3個以上のチップセットを含んでいてもよい。不揮発性メモリ20は、1個のチップセットを含んでいてもよい。
【0131】
上述の第1実施形態及び第2実施形態では、チップセット21-0が2個のメモリチップCP0及びCP1を含む場合について説明したが、これに限られない。チップセット21-0は、3個以上のメモリチップを含んでいてもよい。チップセット21-0は、1個のメモリチップを含んでいてもよい。
【0132】
上述の第1実施形態及び第2実施形態では、チップセット21-0が4個のプレーンPN<0>、PN<1>、PN<2>、及びPN<3>を含む場合について説明したが、これに限られない。チップセット21-0は、5個以上のプレーンを含んでいてもよい。チップセット21-0は、2個又は3個のプレーンを含んでいてもよい。
【0133】
実施形態は例示であり、発明の範囲はそれらに限定されない。
【符号の説明】
【0134】
1…情報処理システム
2…ホスト
3…メモリシステム
10…メモリコントローラ
11…ホストインタフェース
12…制御部
13-0,13-1…メモリインタフェース
20…不揮発性メモリ
21-0,21-1…チップセット
31…チャネルキュー
32…選択部
33<0>,33<1>,33<2>,33<3>…プレーンキュー
34…スケジューラ
35…送信部
HB…ホストバス
MB…メモリバス
CH0,CH1…チャネル
CMD,DQ…信号線
CP0,CP1…メモリチップ
PN<0>,PN<1>,PN<2>,PN<3>…プレーン
BLK0,BLKn…ブロック