(57)【要約】      （修正有）【課題】アクセススループットの向上を図るメモリ装置を提供する。【解決手段】メモリシステム１はホスト装置２とメモリ装置３とを有する。メモリ装置３は、メモリデバイス３１と、コントローラ３２とを有する。メモリデバイスは、複数のメモリチップ３１１を有する。コントローラは、複数のメモリ３２５（コマンドキュー）を含む。コントローラは、ホスト装置からメモリチップに関するアクセス要求を受信した際に、何れかのメモリにメモリチップが割り当て済みであるか否かを判定する。コントローラは、割り当て済みでないときにはメモリチップがいずれも割り当てられていないメモリに、メモリチップを新たに割り当て、新たに割り当てられたメモリに、ホスト装置から受信したアクセス要求に対応するコマンドをエンキューするように構成されている。【選択図】図１
2020154827.tif 000002
【特許請求の範囲】
【請求項１】
第１メモリチップと、第２メモリチップとを有するメモリデバイスと、
第１メモリと第２メモリとを含むコントローラと、
を具備し、
前記コントローラは、
ホスト装置から前記第１メモリチップに関するアクセス要求を受信した際に、
前記第１メモリと前記第２メモリのうちのいずれかに、前記第１メモリチップが割り当て済みであるか否かを判定し、
前記判定の結果、割り当て済みでないときには、前記第１メモリチップ及び前記第２メモリチップのいずれも割り当てられていない、前記第１メモリ及び前記第２メモリのうちのいずれかに、前記第１メモリチップを新たに割り当て、
前記新たに割り当てられた、前記第１メモリ及び前記第２メモリのうちのいずれかに、前記ホスト装置から受信した前記アクセス要求に対応するコマンドをエンキューする、
ように構成されている、メモリ装置。
【請求項２】
前記コントローラは、前記判定の結果、割り当て済みである際には、前記割り当て済みの、前記第１メモリ及び前記第２メモリのうちのいずれかに、前記ホスト装置から受信した前記アクセス要求に対応するコマンドをエンキューする、
ようにさらに構成されている、請求項１記載のメモリ装置。
【請求項３】
前記コントローラは、前記第１メモリチップが割り当てられた前記第１メモリ及び前記第２メモリのいずれかにエンキューされているすべての前記コマンドがデキューされたときに、前記第１メモリチップが割り当てられた前記第１メモリ及び前記第２メモリのいずれかを割り当て済みでない状態に戻す、請求項１又は２記載のメモリ装置。
【請求項４】
前記コントローラは、前記第１メモリ及び前記第２メモリに対する前記第１メモリチップ及び第２メモリチップの割り当ての関係を表によって管理する、請求項１乃至３のいずれか１項に記載のメモリ装置。
【請求項５】
前記第１メモリ及び前記第２メモリはＦＩＦＯ形式の記憶装置である、請求項１乃至４いずれか１項に記載のメモリ装置。
【請求項６】
第１メモリチップと第２メモリチップとを有するメモリデバイスを、第１メモリと第２メモリとを有するコントローラによって制御するメモリ装置の制御方法であって、
ホスト装置から前記第１メモリチップに関するアクセス要求を受信した際に、第１メモリと前記第２メモリのうちのいずれかに、前記第１メモリチップが割り当て済みであるか否かを判定し、
前記判定の結果、割り当て済みでないときには、前記第１メモリチップ及び前記第２メモリチップのいずれも割り当てられていない、前記第１メモリ及び前記第２メモリのうちのいずれかに、前記第１メモリチップを新たに割り当て、
前記新たに割り当てられた、前記第１メモリ及び前記第２メモリのうちのいずれかに、前記ホスト装置から受信した前記アクセス要求に対応するコマンドをエンキューする、
メモリ装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリ装置及びその制御方法に関する。
【背景技術】
【０００２】
記録メディアとして、ＮＡＮＤ型フラッシュメモリを用いたメモリ装置が広く普及している。この種のＮＡＮＤ型フラッシュメモリを用いたメモリ装置の１つとして、ＳＳＤ（Solid State Drive）が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１５−２６３５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
実施形態は、メモリ装置におけるアクセススループットの向上を図る。
【課題を解決するための手段】
【０００５】
実施形態のメモリ装置は、メモリデバイスと、コントローラとを有する。メモリデバイスは、第１メモリチップと、第２メモリチップとを有する。コントローラは、第１メモリと第２メモリとを含む。コントローラは、ホスト装置から第１メモリチップに関するアクセス要求を受信した際に、第１メモリと第２メモリのうちのいずれかに、第１メモリチップが割り当て済みであるか否かを判定し、判定の結果、割り当て済みでないときには、第１メモリチップ及び第２メモリチップのいずれも割り当てられていない、第１メモリ及び第２メモリのうちのいずれかに、第１メモリチップを新たに割り当て、新たに割り当てられた、第１メモリ及び第２メモリのうちのいずれかに、ホスト装置から受信したアクセス要求に対応するコマンドをエンキューするように構成されている。
【図面の簡単な説明】
【０００６】
【図１】図１は、実施形態に係るメモリシステムの全体の構成例を示す図である。
【図２】図２は、実施形態におけるコマンド処理を示すフローチャートである。
【図３】図３は、コマンドキューの割り当ての状態の割り当てを管理するためのデータの一例である。
【図４】図４は、実施形態におけるチップ番号の割り当て解除の動作を示すフローチャートである。
【図５Ａ】図５Ａは、実施形態におけるメモリ装置の動作の具体例を説明するための図である。
【図５Ｂ】図５Ｂは、実施形態におけるメモリ装置の動作の具体例を説明するための図である。
【図５Ｃ】図５Ｃは、実施形態におけるメモリ装置の動作の具体例を説明するための図である。
【図６Ａ】図６Ａは、図５Ａの動作に伴うキュー−チップ表を示す図である。
【図６Ｂ】図６Ｂは、図５Ｂの動作に伴うキュー−チップ表を示す図である。
【図６Ｃ】図６Ｃは、図５Ｃの動作に伴うキュー−チップ表を示す図である。
【図７Ａ】図７Ａは、比較例における各コマンドキューへの要求の発生確率のグラフである。
【図７Ｂ】図７Ｂは、実施形態における各コマンドキューへの要求の発生確率のグラフである。
【発明を実施するための形態】
【０００７】
以下、本発明の実施形態について図面を参照して説明する。
【０００８】
［１］メモリシステムの構成
［１−１］メモリシステムの全体構成
図１は、実施形態に係るメモリシステムの全体の構成例を示すブロック図である。メモリシステム１は、ホスト装置２と、メモリ装置３とを有している。ホスト装置２と、メモリ装置３とは通信できるように構成されている。メモリ装置３は、ホスト装置２からの要求に応じてデータの書き込み、読み出し、消去をするように構成されている。
【０００９】
［１−２］ホスト装置２の構成
ホスト装置２は、図１に示すように、ＭＰＵ（Micro Processing Unit）２１、ホストインターフェース回路（Ｉ／Ｆ）２２、ＲＯＭ（Read Only Memory）２３、及びＲＡＭ（Random Access Memory）２３を有する。ホスト装置２は、メモリ装置３にデータを書き込んだり、メモリ装置３からデータを読み出したりする一般的な装置であって、特定の装置に限定されるものではない。ここで、実施形態のホスト装置２は、メモリ装置３に対し、複数のコマンドを並行して発行することができる。ホスト装置２は、図１に示す以外の要素を有していてもよい。
【００１０】
ＭＰＵ２１は、ホスト装置２の全体の動作を制御する処理装置である。ホスト装置２が電源供給を受けた際、ＲＯＭ２３に格納されているファームウェアがＲＡＭ２４上に読み出される。ＭＰＵ２１は、ファームウェアに従って所定の処理を実行する。また、ＭＰＵ２１は、ＲＯＭ２３及びＲＡＭ２４に保持されるプログラムに従って種々の機能を実現する。
【００１１】
ホストインターフェース回路２２は、ホスト装置２と外部との間の通信を行うハードウェアインターフェースである。ホストインターフェース回路２２は、ホスト装置２と外部との通信に必要な所定の取り決めに沿って動作する。
【００１２】
ＲＯＭ２３は、読み出し専用の半導体記憶装置である。ＲＯＭ２３は、ＭＰＵ２１により実行されるファームウェア、各種のプログラムを格納している。ＲＯＭ２３の代わりに、又はＲＯＭ２３に加えて、ハードディスク等の一般的な書き込みが可能なストーレジデバイスが用いられてもよい。
【００１３】
ＲＡＭ２４は、任意に書き込みできる半導体記憶装置である。ＲＡＭ２４は、ＭＰＵ１２の作業エリアとして使用され、ＲＯＭ２３に格納されているファームウェア等を一時的に記憶する。
【００１４】
［１−２］  メモリ装置３の構成
メモリ装置３は、例えばＳＳＤである。実施形態のメモリ装置３は、ホスト装置２から並行して発行された複数のコマンドを並行して処理することができる。メモリ装置３は、図１に示すように、メモリデバイス３１及びコントローラ３２を有する。
【００１５】
メモリデバイス３１は、複数のメモリチップ３１１によって構成されている。個々のメモリチップは、ＮＡＮＤ型フラッシュメモリを含み、固有のチップ番号を有している。ＮＡＮＤ型フラッシュメモリは、データを不揮発に記憶する。ＮＡＮＤ型フラッシュメモリは、複数のメモリセルを含むページと呼ばれる単位でデータを書き込み、また読み出す。各ページには、固有の物理アドレスが割り当てられている。更にＮＡＮＤ型フラッシュメモリデバイス３１は、複数のページを含むブロックと呼ばれる単位でデータを消去する。なお、ブロック単位で物理アドレスが割り当てられていてもよい。
【００１６】
コントローラ３２は、メモリデバイス３１の制御をする制御装置である。コントローラ３２は、ホスト装置２からの要求に応じて、メモリデバイス３１に対してデータの書き込み、読み出し、及び消去を命令する。また、コントローラ３２は、コマンドキューにより、個々のメモリチップ３１１のコマンドの受け付け状態を管理する。すなわち、メモリデバイス３１内の各メモリチップからレディ／ビジー信号を受信し、各メモリチップがレディ状態（コマンド受け付け可能な状態）であるかビジー状態（コマンド受け付け不可能な状態）であるかを管理する。
【００１７】
図１に示すようにコントローラ３２は、ホストインターフェース回路３２１、ＭＰＵ３２２、ＲＯＭ３２３、ＲＡＭ３２４、コマンドキュー３２５、及びＮＡＮＤインターフェース回路（Ｉ／Ｆ）３２６を有している。
【００１８】
ホストインターフェース回路３２１は、メモリ装置３とホスト装置２との間の通信を行うハードウェアインターフェースである。より具体的には、ホストインターフェース回路３２１は、ホスト装置２のホストインターフェース回路２２との間で、種々のコマンド及びデータの授受を制御する。
【００１９】
ＭＰＵ３２２は、メモリデバイス３１の全体の動作を制御する処理装置である。メモリ装置３が電源供給を受けた際、ＲＯＭ３２３に格納されているファームウェアがＲＡＭ３２４上に読み出される。ＭＰＵ３２２は、このファームウェアに従って所定の処理を実行する。ＭＰＵ３２２は、ファームウェアに従って各種のテーブルをＲＡＭ３２４上で作成したり、ホスト装置２から受けたコマンドに従ってメモリデバイス３１に対する所定の処理を実行したりする。テーブルは、例えばホスト装置２から要求された論理アドレスを、この論理アドレスと対応するメモリチップ３１１上の物理アドレスに変換するためのルックアップテーブルを含む。
【００２０】
ＲＯＭ２３は、読み出し専用の半導体記憶装置である。ＲＯＭ３２３は、ＭＰＵ３２２により制御されるファームウェア等を格納する。
【００２１】
ＲＡＭ２４は、任意に書き込みできる半導体記憶装置である。ＲＡＭ３２４は、ＭＰＵ３２２の作業エリアとして使用される。また、ＲＡＭ３２４は、ＲＯＭ３２３に格納されているファームウェア、ＭＰＵ３２２によって作成されるデータベースを一時的に記憶する。また、ＲＡＭ３２４は、コマンドキューの割り当ての状態を管理するためのデータを一時的に記憶してもよい。実施形態におけるコマンドキューの割り当ての状態は、コマンドキューに対するチップ番号の割り当ての有無である。チップ番号が割り当てられたコマンドキューは、対応するチップ番号のメモリチップ３１１に関連するコマンドをキューイングするために使用される。
【００２２】
コマンドキュー３２５は、ＭＰＵ３２２からのコマンドをキューイングするメモリである。コマンドキュー３２５は、例えばＦＩＦＯ（First-In First-Out）メモリである。コマンドキュー３２５は、複数用意されており、それぞれ固有のキュー番号を有している。コマンドキュー３２５の数は、例えばホスト装置２において同時発行できるコマンドの数と同数である。ＭＰＵ３２２はホストからのコマンドを、ホストから指定されるアドレスと対応するコマンドキュー３２５に格納する（エンキュー）。コマンドキュー３２５に格納されたコマンドは、格納された順に実行される。実行されるコマンドはコマンドキュー３２５から取り出される（デキュー）。このデキューされたコマンドに基づいて、ＮＡＮＤインターフェース回路３２６は、コマンドに指定されるチップ番号のメモリチップ３１１に対して、データの書き込み、読み出し、消去を行う。コマンドキュー３２５には、同一チップ番号に関連する複数のコマンドが格納され得る。
【００２３】
ＮＡＮＤインターフェース回路３２６は、コントローラ３２とメモリデバイス３１との間でのコマンド及びデータの送受のためのインターフェース処理を行うハードウェアインターフェースである。
【００２４】
［２］  メモリシステムの動作
図２は、実施形態におけるコマンド処理を示すフローチャートである。コマンドを受信すると、ステップＳ１において、ＭＰＵ３２２は、ＲＡＭ３２４に作成したルックアップテーブルを参照することで、受信したコマンドによって指定された論理アドレスに対応するメモリデバイス３１上の物理アドレスを特定する。
【００２５】
ステップＳ２において、ＭＰＵ３２２は、ステップＳ１で特定した物理アドレスに対応するチップ番号が割り当て済みであるか否かを判定する。ＭＰＵ３２２は、コマンドキューの割り当ての状態のデータによってステップＳ２の判定を行う。コマンドキューの割り当ての状態のデータは、例えばＲＡＭ３２４に記憶されている。ステップＳ２において、ステップＳ１で特定した物理アドレスに対応するチップ番号が割り当て済みであると判定された場合（Ｓ２  ＹＥＳ）、処理はステップＳ３に移行する。ステップＳ２において、ステップＳ１で特定した物理アドレスに対応するチップ番号が割り当て済みでないと判定された場合（Ｓ２  ＮＯ）、処理はステップＳ４に移行する。
【００２６】
図３は、コマンドキューの割り当ての状態のデータの一例である。図３の例では、コマンドキューの割り当ての状態がキュー−チップ表で管理される。キュー−チップ表は、コマンドキュー毎にチップ番号の割り当ての状態を管理する。キューチップ表は、コマンドキューに対して割り当て済みのチップ番号を記憶している。また、キュー−チップ表は、チップ番号が割り当て済みでないコマンドキューに対して未割り当てであることを示す情報を記憶している。
【００２７】
ＭＰＵ３２２は、例えば図３で示したキュー−チップ表を参照し、ステップＳ１で特定した物理アドレス対応するチップ番号があるときには、ステップＳ１で特定した物理アドレスに対応するチップ番号が割り当て済みであると判定する。
【００２８】
ステップＳ３において、ＭＰＵ３２２は、ステップＳ１で特定した物理アドレスに対応するチップ番号が割り当てられているコマンドキューにコマンドをエンキューする。その後、ＭＰＵ３２２は処理を終了する。
【００２９】
ステップＳ４において、ＭＰＵ３２２は、チップ番号が割り当て済みでないコマンドキューのうちの１つに、ステップＳ１で特定した物理アドレスに対応するメモリチップのチップ番号を割り当てる。このとき、ＭＰＵ３２２は、コマンドキューの割り当ての状態のデータも更新する。その後、処理はステップＳ３に移行する。
【００３０】
図４は、実施形態におけるチップ番号の割り当て解除の動作を示すフローチャートである。
【００３１】
ステップＳ６において、ＭＰＵ３２２は、割り当て済みのコマンドキューのうちで、処理が完了したもの、すなわちすべてのコマンドがデキューされたものがあるか否かを判定する。ステップＳ６において、処理が完了したものがないと判定されたときには、図４の処理は終了する。ステップＳ６において、処理が完了したものがあると判定されたときには、処理はステップＳ７に移行する。
【００３２】
ステップＳ７において、ＭＰＵ３２２は、処理が完了したコマンドキューをチップ番号が未割り当てのコマンドキューに戻す。このとき、ＭＰＵ３２２は、例えばＲＡＭ３２４に記憶されている、コマンドキューの割り当ての状態のデータも更新する。その後、ＭＰＵ３２２は、処理を終了する（終了）。
【００３３】
以下、具体例を用いて図２及び図４の処理を説明する。図５Ａ−図５Ｃは、メモリ装置３の動作の具体例を説明するための図である。また、図６Ａ−図６Ｃは、図５Ａ−図５Ｃの動作に伴うキュー−チップ表を示す図である。ここで、以下の例では、ホスト装置２からのコマンドの同時発行数ＱＤ＝６４、コマンドキュー３２５の数Ｍ＝６４（キュー番号０から６３）、メモリチップ３１１の数Ｎ＝２５６（チップ番号０から２５５）であるとする。
【００３４】
図５Ａの時点では、チップ０とチップ７だけがコマンドキューに割り当てられている。チップ５はコマンドキューに割り当てられていない。このとき、キュー−チップ表においては、図６Ａに示すように、例えばキュー０に割り当てられているチップ番号はチップ０であり、キュー１に割り当てられているチップ番号はチップ７であり、他のキュー番号に割り当てられているチップ番号は未割り当てである。
【００３５】
ここで、コマンドによって指定されたアドレスはチップ５と対応していたとする。このとき、ＭＰＵ３２２は、図５Ｂに示すように、未割り当てのコマンドキューのうちの例えばキュー２のコマンドキューに、チップ５を割り当てる。そして、ＭＰＵ３２２は、コマンドを、キュー２のコマンドキューにエンキューする。また、ＭＰＵ３２２は、図６Ｂに示すように、例えばキュー−チップ表を更新する。
【００３６】
その後、キュー２のコマンドキューに保持されているすべてのコマンドがデキューされたときには、ＭＰＵ３２２は、図５Ｃに示すように、キュー２のコマンドキューを未割り当てに戻す。また、ＭＰＵ３２２は、図６Ｃに示すように、例えばキュー２の割り当ての状態を未割り当てに更新する。この未割り当てに戻されたコマンドキューは、他の未割り当てのコマンドキューと同様に、チップ番号が再び割り当てられたときに使用できる。
【００３７】
以上説明したように実施形態によれば、コマンドキューに対してチップ番号を予め割り当てておくのではなく、必要になったときに未割り当てのコマンドキューのうちの１つにチップ番号を割り当てるようにしている。これにより、メモリ装置におけるアクセススループットの向上が図られる。
【００３８】
例えば、メモリ装置におけるアクセススループットの向上のための手法の１つとして、１つのコマンドキューに対して予め複数のチップ番号を割り当てる手法が考えられる。
【００３９】
このような手法であると、ホスト装置２からのコマンドの同時発行数ＱＤ＝６４、コマンドキュー３２５の数Ｍ＝６４、メモリチップ３１１の数Ｎ＝２５６の場合において、例えば１つのコマンドキューに対して４つのチップ番号が割り当てられる。各コマンドキューへの要求がランダムで行われるとすると、各コマンドキューへの要求の発生確率は、確率１／６４、試行回数６４の二項分布で表される。図７Ａは、上記比較例における各コマンドキューへの要求の発生確率のグラフである。図７Ａでは、要求の発生数が５以上についての発生確率の図示は省略されている。要求の発生数が５以上についての発生確率はゼロとみなせるためである。
【００４０】
ランダムの場合であっても、ホスト装置２からのコマンドの発行数が少ない短期間では要求に偏りが生じ得る。図７Ａの例では、３５％程度のコマンドキューについては要求が発生していない。したがって、並行動作しているメモリチップの数はおおよそ、６４×（１−０．３５）≒４２程度となる。一方、図７Ａの例では、２０％以上のコマンドキューに対して２個以上の要求が発生している。４つのチップ番号に対する要求が１つのコマンドキューにキューイングされているので、２個以上の要求は別のメモリチップ３１１への要求を含む場合がある。これらの別のメモリチップ３１１への要求は、コマンドキューを別にすれば並行して処理することができる。
【００４１】
これに対し、実施形態の手法において、図７Ａと同様の各コマンドキューへの要求の発生確率が計算されると、この発生確率は、確率１／２５６、試行回数６４の二項分布で表される。図７Ｂは、要求の発生確率のグラフである。図７Ｂでは、要求の発生数が５以上についての発生確率の図示は省略されている。要求の発生数が５以上についての発生確率はゼロとみなせるためである。
【００４２】
図７Ｂの例では、７８％程度のコマンドキューについては要求が発生しない。したがって、並行動作しているメモリチップの数はおおよそ、２５６×（１−０．７８）≒５６程度となる。図７Ａと図７Ｂの比較から明らかなように、実施形態の手法により、並行動作しているメモリチップの数を増加させることができる。これにより、メモリ装置３におけるアクセススループットが向上する。
【００４３】
ここで、実施形態ではチップ番号の割り当てはメモリ装置３のＭＰＵ３２２によってソフトウェア的に行われる。これに対し、チップ番号の割り当てはハードウェア回路で行われてもよい。
【００４４】
ここで、実施形態では、チップ番号の割り当てが行われる場合に１つのコマンドキューに対して１つのチップ番号が割り当てられている。これは、ホスト装置２からのメモリ装置３へのアクセスがランダムなときに特に有効である。仮に、ホスト装置２からのメモリ装置３へのアクセスがランダムでなく、ある偏りを持つときには、チップ番号の割り当てが行われる場合に複数のコマンドキューに対して１つのチップ番号が割り当てられてもよい。また、実施形態ではホスト装置２から要求された順にチップ番号の割り当てが行われる。しかしながら、必ずしもホスト装置２からの要求の傾向によっては必ずしもホスト装置２から要求された順にチップ番号の割り当てが行われなくてもよい。
【００４５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことが出来る。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４６】
１  メモリシステム
２  ホスト装置
３  メモリ装置
２１  ＭＰＵ
２２  ホストインターフェース回路
２３  ＲＯＭ
２４  ＲＡＭ
３１  メモリデバイス
３２  コントローラ
３１１  メモリチップ
３２１  ホストインターフェース回路
３２２  ＭＰＵ
３２３  ＲＯＭ
３２４  ＲＡＭ
３２５  コマンドキュー
３２６  ＮＡＮＤインターフェース回路
【図１】
2020154827.tif 000003
【図２】
2020154827.tif 000004
【図３】
2020154827.tif 000005
【図４】
2020154827.tif 000006
【図５Ａ】
2020154827.tif 000007
【図５Ｂ】
2020154827.tif 000008
【図５Ｃ】
2020154827.tif 000009
【図６Ａ】
2020154827.tif 000010
【図６Ｂ】
2020154827.tif 000011
【図６Ｃ】
2020154827.tif 000012
【図７Ａ】
2020154827.tif 000013
【図７Ｂ】
2020154827.tif 000014