(57)【要約】 【課題】エラー発生確率の低下、アクセス速度の向上、および低消費電力化を図る。【解決手段】メモリシステムは、不揮発メモリと、不揮発メモリより高速アクセスが可能で、不揮発メモリに対するアクセス情報を不揮発メモリにアクセスする前に記憶する記憶部と、記憶部の空き容量、または記憶部に記憶されるアクセス情報に基づいて、不揮発メモリの書込みパルス幅を制御するメモリ制御部と、を備える。【選択図】図１
2018049672.tif 000002
【特許請求の範囲】
【請求項１】
不揮発メモリと、
前記不揮発メモリより高速アクセスが可能で、前記不揮発メモリに対するアクセス情報を前記不揮発メモリにアクセスする前に記憶する記憶部と、
前記記憶部の空き容量、または前記記憶部に記憶される前記アクセス情報に基づいて、前記不揮発メモリの書込みパルス幅を制御するメモリ制御部と、を備える、メモリシステム。
【請求項２】
前記記憶部に記憶される前記アクセス情報は、プロセッサにより発行される前記不揮発メモリに対するアクセスのコマンド、アクセスするべきアドレス、およびデータを含む、請求項１に記載のメモリシステム。
【請求項３】
前記メモリ制御部は、前記記憶部の空き容量、または前記記憶部に記憶される書込みコマンドおよび読み出しコマンドに基づいて、前記不揮発メモリの書込みパルス幅を制御する、請求項１または２に記載のメモリシステム。
【請求項４】
前記メモリ制御部は、前記記憶部の空き容量、または前記記憶部に記憶される書込みコマンドおよび読み出しコマンドに基づいて、第１書込みパルス幅にて前記不揮発メモリにデータを書き込んだ後に書き込んだデータを読み出して検証するベリファイ処理を行う第１モードと、前記第１モードの前記第１書込みパルス幅よりも長い第２書込みパルス幅で前記ベリファイ処理なしでデータを書込む第２モードと、のいずれか一方を選択する、請求項３に記載のメモリシステム。
【請求項５】
前記メモリ制御部は、前記記憶部に空き容量がないか、または前記記憶部に記憶される書込みコマンドの後に実行するべき読み出しコマンドがある場合、前記第２モードを選択する、請求項４に記載のメモリシステム。
【請求項６】
前記不揮発メモリは、複数のメモリ領域を含んでおり、
前記記憶部は、前記複数のメモリ領域のうち、アクセスするべきメモリ領域に対応づけて前記アクセス情報を記憶する、請求項１乃至５のいずれか一項に記載のメモリシステム。
【請求項７】
前記メモリ制御部は、前記記憶部に記憶される一つのメモリ領域に対するアクセス情報を処理した後に、他のメモリ領域に対するアクセス情報を順に処理する、請求項６に記載のメモリシステム。
【請求項８】
前記メモリ制御部は、アクセスするべき各メモリ領域ごとに、前記第１モードまたは前記第２モードを選択する、請求項６または７に記載のメモリシステム。
【請求項９】
前記メモリ制御部は、前記第１モードを選択する場合には、書込み対象の一つのメモリ領域へのデータの書き込みを順に行い、前記一つのメモリ領域に対するアクセスが終了して、別のメモリ領域へのアクセスを開始する前に、前記一つのメモリ領域に書き込んだデータのベリファイ処理を行う、請求項８に記載のメモリシステム。
【請求項１０】
前記メモリ制御部は、前記記憶部に記憶される一つのメモリ領域に対するアクセス情報の中に書込みコマンドと読み出しコマンドとが含まれている場合、前記記憶部に記憶された順序に従って、前記同一のメモリ領域に対する書込み処理と読み出し処理とを実行する、請求項８または９に記載のメモリシステム。
【請求項１１】
前記記憶部は、揮発メモリを備える、請求項１乃至１０のいずれか一項に記載のメモリシステム。
【請求項１２】
前記不揮発メモリは、ＭＲＡＭ（Magnetoresistive Random Access Memory）を備える、請求項１乃至１１のいずれか一項に記載のメモリシステム。
【請求項１３】
プロセッサと、
前記プロセッサによりアクセスされる不揮発メモリと、
前記不揮発メモリより高速アクセスが可能で、前記不揮発メモリに対するアクセス情報を前記不揮発メモリにアクセスする前に記憶する記憶部と、
前記記憶部の空き容量、または前記記憶部に記憶される前記アクセス情報に基づいて、前記不揮発メモリの書込みパルス幅を制御するメモリ制御部と、を備える、プロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムおよびプロセッサシステムに関する。
【背景技術】
【０００２】
携帯情報端末に用いられるプロセッサは低消費電力であることが求められる。このため、キャッシュメモリやメインメモリを不揮発性メモリで置き換える検討が行われている。ＭＲＡＭ（Magnetoresistive Random Access Memory）は種々の不揮発性メモリの中で高い書き換え耐性と、高速に読出しと書込みを行う動作性能と、高集積可能なセル面積の３つの特徴を同時に満たしうるものとして注目されている。ＭＲＡＭをキャッシュとして利用する際に動作速度が他の不揮発性メモリに比べて高速であることと、面積効率が従来のメモリに比べて高く、大容量の高速キャッシュをプロセッサに搭載できることから、ＭＲＡＭに対して大きな期待が寄せられている。特にＭＲＡＭの中でも、ＳＴＴ−ＭＲＡＭ（Spin Transfer Torque MRAM）と呼ばれる垂直磁気のスピン注入を用いた方式は、書き込み電流と書き込み遅延が非常に小さく、高速動作が可能なため、幅広い応用が期待されている。
【０００３】
しかしながら、ＭＲＡＭは、ＳＲＡＭやＤＲＡＭに比べて、書き込み時のエラー発生確率が高いという問題がある。データを書き込んだ後に読み出して検証するベリファイ処理を行うことも考えられるが、ベリファイ処理に時間がかかるため、アクセス速度は低下してしまう。あるいは、書込み電圧を高くすることも考えられるが、消費電力が増える要因になる。また、書込みパルス幅を長くすることも考えられるが、やはりアクセス速度が低下してしまう。
【０００４】
このように、キャッシュメモリやメインメモリをＭＲＡＭ等の不揮発メモリで構成したとしても、エラー発生確率が高くなったり、アクセス速度が低下したり、消費電力が低下するなどの問題が生じるおそれが高い。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−２２７２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の一態様は、エラー発生確率の低下、アクセス速度の向上、および低消費電力化を実現可能なメモリシステムおよびプロセッサシステムを提供するものである。
【課題を解決するための手段】
【０００７】
本実施形態では、不揮発メモリと、
前記不揮発メモリより高速アクセスが可能で、前記不揮発メモリに対するアクセス情報を前記不揮発メモリにアクセスする前に記憶する記憶部と、
前記記憶部の空き容量、または前記記憶部に記憶される前記アクセス情報に基づいて、前記不揮発メモリの書込みパルス幅を制御するメモリ制御部と、を備える、メモリシステムが提供される。
【図面の簡単な説明】
【０００８】
【図１】一実施形態によるメモリシステムを備えたプロセッサシステムの概略構成を示すブロック図。
【図２】ＭＲＡＭの構造を示す図。
【図３】キュー格納部の構造を示す図。
【図４】ページクラスタ制御部により生成されるクラスタの一例を示す図。
【図５】コントローラコア部の処理動作の一例を示すフローチャート。
【図６】コントローラコア部の処理動作の一例を示すフローチャート。
【発明を実施するための形態】
【０００９】
以下、図面を参照しながら、一実施形態について説明する。図１は一実施形態によるメモリシステム１を備えたプロセッサシステム２の概略構成を示すブロック図である。図１のプロセッサシステム２は、メモリシステム１の他に、プロセッサ３を含むホスト回路４を備えている。
【００１０】
ホスト回路４の具体的な内部構成は問わない。ホスト回路４内に設けられるプロセッサ３は、シングルコアのプロセッサ３でもよいし、マルチコアのプロセッサ３でもよい。ホスト回路４の内部構成は任意であり、例えば、ホスト回路４内には、１階層以上のキャッシュメモリが設けられていてもよい。また、ホスト回路４内には、プロセッサ３から発行されるアドレスを管理するＭＭＵ（Memory Management Unit）、アドレス変換を行うページテーブルやＴＬＢ（Translation Lookaside Buffer）などが設けられていてもよい。
【００１１】
メモリシステム１は、メモリコントローラ５と、ＭＲＡＭ６とを有する。メモリシステム１内のＭＲＡＭ６は、垂直磁化方式のＭＴＪ（Magnetic Tunnel Junction）記憶素子を用いたスピン注入書込みを行うＳＴＴ−ＭＲＡＭでもよいし、他の書込み方式のＭＲＡＭ６でもよい。
【００１２】
図１のＭＲＡＭ６は、プロセッサ３によりアクセスされるメインメモリでもよいし、メインメモリよりもアクセス優先順位が高いキャッシュメモリでもよい。例えば、ホスト回路４内に、プロセッサ３と低次のキャッシュメモリが含まれている場合、図１のＭＲＡＭ６は高次のキャッシュメモリでもよい。
【００１３】
なお、図１のＭＲＡＭ６を、ＲｅＲＡＭなどの他の不揮発メモリに置き換えてもよい。また、図１のＭＲＡＭ６をメインメモリとして用いる場合、図１のＭＲＡＭ６の他に、ＤＲＡＭ（Dynamic RAM）等の揮発メモリを設けて、ハイブリッド構成のメインメモリにしてもよい。
【００１４】
図１のメモリコントローラ５は、ホスト回路４内のプロセッサ３からのアクセス要求に応じて、ＭＲＡＭ６に対するデータの書き込み制御と読み出し制御とを行う。図１のメモリコントローラ５は、ＭＲＡＭ制御部７と、クロック同期化部８と、ホストインタフェース部９と、コントローラコア部１０とを有する。
【００１５】
ＭＲＡＭ制御部７は、ＭＲＡＭ６に対するデータの書き込み制御と読み出し制御を行う。クロック同期化部８は、外部から入力されたクロック信号ＣＬＫに同期化した信号を生成して、ＭＲＡＭ制御部７に供給する。これにより、ＭＲＡＭ制御部７は、外部から入力されたクロック信号ＣＬＫに同期させて、ＭＲＡＭ６に対するデータの書き込み制御と読み出し制御を行う。
【００１６】
ホストインタフェース部９は、ホスト回路４との間で各種の信号を送受する。ホスト回路４からホストインタフェース部９に送信される信号は、例えば、コマンド、アドレス、データなどである。コマンドは、書込みコマンドと読み出しコマンドを含んでいる。ホストインタフェース部９からホスト回路４に送信される信号は、例えば、コマンド応答信号、アドレス、データ、ビジー信号などである。
【００１７】
コントローラコア部１０は、ＭＲＡＭ制御部７とともに、ＭＲＡＭ６へのアクセス制御を行う。コントローラコア部１０は、キュー格納部（記憶部）１１と、キュー追加部１２と、キューポップ部１３と、ページクラスタ制御部１４と、キュー実行部１５と、ベリファイ制御部１６と、キュー出力部１７と、状態遷移制御部１８と、初期化制御部１９と、アドレス生成部２０と、バンク管理部２１とを有する。
【００１８】
キュー格納部１１は、ホスト回路４がＭＲＡＭ６に対して要求するアクセス情報をＭＲＡＭ６にアクセスする前に一時的に記憶する。以下では、個々のアクセス情報をキューと呼ぶ。個々のキューは、コマンド、アドレスおよびデータを含んでいる。
【００１９】
キュー格納部１１は、例えば、Ｄ型フリップフロップなどからなるレジスタで構成可能である。キュー格納部１１は、小容量ながらも、ＭＲＡＭ６よりも高速にデータの書込みおよび読み出しを行うことができる。
【００２０】
キュー追加部１２は、ホスト回路４から新たなアクセス情報が送信されてきた場合に、そのアクセス情報を新たなキューとしてキュー格納部１１に書き込む制御を行う。また、後述するように、ＭＲＡＭ６に対するベリファイ処理を後回しにした場合には、キュー追加部１２は、ベリファイ処理のためのキューをＭＲＡＭ制御部７から受け取って、キュー格納部１１に追加する制御を行う。
【００２１】
ページクラスタ制御部１４は、キュー格納部１１内のキューをページ単位に分類して、ページ単位のクラスタを生成し、各クラスタごとにキューを取り出す制御を行う。キューポップ部１３は、ページクラスタ制御部１４の制御の下で、次に実行されるべきキューをキュー格納部１１から取り出して、キュー実行部１５に供給する。
【００２２】
キュー実行部１５は、キュー格納部１１からキューポップ部１３を介して取り出されたキューに含まれるコマンドを実行する。コマンドが書込みコマンドであれば、後述するように、書込みモードの選択を行う。キュー実行部１５は、キュー格納部１１内のキューをページ単位で分類した各クラスタに含まれる各キューごとに書込みモードを選択する。
【００２３】
後述するように、本実施形態では、書込みモードとして、第１モードと第２モードを有する。第１モードは、キュー格納部１１の空き容量、またはキュー格納部１１に格納されているキューに基づいて、ＭＲＡＭ６にデータを書き込んだ後に書き込んだデータを読み出して検証するベリファイ処理を行うモードである。第２モードは、第１モードよりも長い書込みパルス幅でベリファイ処理なしでデータを書き込むモードである。
【００２４】
より具体的には、キュー実行部１５は、各クラスタ内の書込みコマンドの数Ｎｗと、各クラスタ内の読み出しコマンドの数Ｎｒと、各クラスタ内の総コマンド数Ｎｑとを計測する。そして、キュー実行部１５は、Ｎｑがキュー格納部１１に格納可能な最大数に達した場合か、あるいはＮｗ＞Ｎｒの場合に、第２モードを選択し、それ以外では、第１モードを選択する。
【００２５】
キュー実行部１５は、Ｎｗ＞Ｎｒか否かを判定する代わりに、書込みコマンドの後に少なくとも一つ以上の読み出しコマンドが続いているか否かを判定してもよい。この場合、書込みコマンドの後に少なくとも一つ以上の読み出しコマンドが続いている場合には、第１モードを選択し、書込みコマンドの後に読み出しコマンドが続いていなければ、第２モードを選択する。
【００２６】
第２モードは、第１モードよりも、書込みパルス幅を長くしているため、ベリファイ処理を行わなくても、エラー発生確率は低いと考えられる。逆の言い方をすると、第２モードでは、エラー発生確率が実用上問題がない程度にまで下がるように、書込みパルス幅を長くする。
【００２７】
第１モードは、第２モードよりも書込みパルス幅が短いため、ＭＲＡＭ６への高速の書込みが可能であるが、そのままではエラー発生確率が高くなるおそれがある。このため、書込み後にベリファイ処理を行い、ベリファイ処理により書込みエラーが検出されると、再度の書込みを行う。ただし、書込みコマンドのたびにベリファイ処理を行っていては、後続のキューを迅速に処理できず、キュー格納部１１が満杯になってしまう。特に、書込みコマンドの後に読み出しコマンドがある場合、書込みコマンドの処理の中でベリファイ処理まで行うとすると、読み出しコマンドの処理タイミングが遅れてしまい、プロセッサ３の処理性能が低下してしまう。そこで、本実施形態では、第１モード時には、同じページ内の書込みコマンドをベリファイ処理なしで連続的に実行し、ページを移動する際に、そのページ内のベリファイ処理をまとめて実行する。これにより、同じページ内の読み出しコマンドを迅速に処理でき、アクセス性能の低下を防止できる。
【００２８】
ベリファイ制御部１６は、キュー実行部１５が第１モードを選択したときに、各書込みコマンドのベリファイ処理を後回しにする制御を行う。具体的には、ベリファイ処理のためのキューを生成して、キュー追加部１２に送付する。キュー追加部１２は、ベリファイ処理のためのキューをキュー格納部１１に追加で格納する。
【００２９】
状態遷移制御部１８は、キュー実行部１５でのキューの実行結果に基づいて、ＭＲＡＭ６にアクセスするための各種制御信号を生成する。初期化制御部１９は、電源起動時等にコントローラコア部１０の内部を初期化する制御を行う。アドレス生成部２０は、キューに含まれるアドレスに基づいて、ＭＲＡＭ６にアクセスするためのアドレスを生成する。
【００３０】
バンク管理部２１は、ＭＲＡＭ６を複数のバンクに分割して、各バンクごとにアクセス制御を行う。各バンクごとに複数のページを含んでいる。バンク管理部２１は、各バンクごとにアクセスするべきページを個別に選択することができる。
【００３１】
図２はＭＲＡＭ６の構造を示す図である。図２に示すように、ＭＲＡＭ６は、複数のバンクｂ１〜ｂｎに分かれており、各バンクは複数のメモリ領域６ａを有する。各メモリ領域６ａは、それぞれ個別のページに対応している。各メモリ領域６ａごとに、駆動するワード線が異なっている。プロセッサ３からのアクセス情報に含まれるアドレスをデコードすることで、駆動するワード線が決定されるが、ワード線は負荷が大きいため、駆動するのに時間がかかる。このため、各ページに対応した各メモリ領域６ａにアクセスする場合、そのメモリ領域６ａに対する書込み処理と読み出し処理を連続的に行った方がよい。
【００３２】
また、異なるページのメモリ領域６ａにアクセスするには、新たなアドレスをデコードして新たなワード線を駆動する処理が必要であり、このような処理はページのオープン処理と呼ばれている。また、あるページのメモリ領域６ａへのアクセスを終了する場合の処理はクローズ処理と呼ばれている。例えば、ページＡのメモリ領域６ａへのアクセスから、同一バンク内のページＢのメモリ領域６ａへのアクセスに切り替える場合、ページＡのクローズ処理を行った後に、ページＢのオープン処理を行う必要がある。通常、各バンクで開いた状態にしておけるページの数は１ページであるため、同一バンク内の別のページにアクセスするためには、開いているページをクローズ処理する必要がある。これは、各バンクに実装されているセンスアンプ回路と読み出したデータを格納するロウバッファ回路の数に限りがあり、開いたままの状態にしておくことのできるページの数に限りがあるためである。
【００３３】
このように、ページを切り替えるたびに、オープン処理とクローズ処理が必要になることから、ページの切替はできるだけ少なくするのが望ましい。このため、本実施形態では、キュー格納部１１内のキューをページごとに分けた複数のクラスタを生成し、各クラスタごとにＭＲＡＭ６へのアクセスを行うようにしている。
【００３４】
図３はキュー格納部１１の構造を示す図である。キュー格納部１１は、ページ単位には分かれておらず、ホスト回路４からのアクセス情報が順に格納される。アクセス情報は、コマンド、アドレスおよびデータを含むため、キュー格納部１１には、これら３種類の情報を格納する領域が設けられている。上述したように、キュー格納部１１は、例えばレジスタにより構成されるが、ＳＲＡＭのような高速メモリで構成してもよい。
【００３５】
キュー格納部１１内のキューをクラスタに分ける処理は、ページクラスタ制御部１４により行われる。図４はページクラスタ制御部１４により生成されるクラスタの一例を示す図である。図４のクラスタＡとＢは、それぞれページＡとページＢに対応している。クラスタＡには、ページＡに対するキューの情報が格納されている。より具体的には、クラスタＡとＢには、それぞれページＡとＢに対する書込みコマンドや読み出しコマンドが格納されている。クラスタＡとＢには、ホスト回路４内のプロセッサ３が発行した順序にアクセス情報が記憶されている。
【００３６】
キュー実行部１５は、クラスタＡの先頭のアクセス情報のコマンドから順に実行する。先頭のコマンドを実行する前に、クラスタＡに対応するページＡのオープン処理を行う。
【００３７】
クラスタＡ内のコマンドは、書込みコマンドと読み出しコマンドを含んでいる。読み出しコマンドの場合は、予め定めた手順でＭＲＡＭ６から指定されたアドレスに対応するデータの読み出しを行う。書込みコマンドの場合は、後述するように、キュー格納部１１の空き容量、またはキュー格納部１１内のキューに基づいて、第１モードまたは第２モードを選択して、ＭＲＡＭ６へのデータの書き込みを行う。例えば、第１モードを選択した場合は、クラスタＡ内のすべての書込みコマンドをベリファイ処理なしで順に実行する。そして、クラスタＡ内のすべてのコマンドの実行が終了して、次のクラスタの処理を開始する前に、ベリファイ処理をまとめて行う。次のクラスタの処理を開始する前にベリファイ処理を行う理由は、次のクラスタの処理が同一バンクの別のページであったときに、ページＡのクローズ処理が行われてしまうためである。ページＡのクローズ処理を実行した後でベリファイ処理を行おうとすると、再度ページＡのオープン処理を行う必要が生じ、メモリアクセスの効率が低下してしまうため、次のクラスタの処理を開始する前に、ベリファイ処理をまとめて行う方が、効率が良い。
【００３８】
なお、図４のクラスタＡのように、読み出しコマンドと書込みコマンドが混在している場合、キュー実行部１５は、その順番はそのまま維持して、各コマンドを実行する。すなわち、読み出しコマンドと書込みコマンドの実行順序を入れ替えることはしない。コマンドの順番を入れ替えて実行すると、データの整合性が取れなくなるおそれがあるが、本実施形態では、読出コマンドと書込みコマンドの順番を入れ替えないため、データの整合性が取れないといった不具合は生じない。このように、キュー実行部１５は、第１モード時の書込みコマンド実行の際のベリファイ処理だけを後回しにすることに関してだけ、アウト・オブ・オーダ処理を行う。
【００３９】
ここで、各クラスタを処理するにあたって、ページのオープン／クローズのポリシとして、オープンページポリシとクローズドページポリシとがある。オープンページポリシは、同一バンク内の別のページにアクセスするまでは、いったんオープンしたページをオープンし続けるポリシである。このポリシでは、次にアクセスするのが別のページだった場合には、今までオープンしていたページのクローズ処理を行う必要がある。一方、次にアクセスするのが同一のページだった場合は、ページをオープンしたままにするため、ページのオープン処理を省略できる。クローズドページポリシは、ページへのアクセスが完了すると、その都度、必ずページをクローズするポリシである。次にそのバンクに来るアクセスが別のページだった場合、クローズ処理を前もって行うことができるため、オープン処理をスムーズに行うことができる反面、次にそのバンクに来るアクセスが同一ページでも、クローズ処理とオープン処理を行わなければならない。
【００４０】
キュー実行部１５は、図４のクラスタＡ内のすべてのコマンド実行を終えると、次に、クラスタＢのコマンド実行を開始する。ＭＲＡＭ６がクローズドページポリシを採用している場合、もしくは、クラスタＢのページＢがクラスタＡのページＡと同一バンクの別なページであった場合、クラスタＡのページＡはクローズ処理を行う。クラスタＢのページＢがすでに開かれているページでなかった場合、図４のクラスタＢを実行するにあたって、クラスタＢに対応するページＢのオープン処理を行う。キュー実行部１５は、クラスタＢの先頭のアクセス情報のコマンドから順に実行する。実行すべきコマンドが書込みコマンドの場合には、第１モードまたは第２モードを選択する。例えば、キューの空き容量がゼロであった場合、第２モードを選択する。キュー実行部１５は、第２モードを選択した場合には、クラスタＢ内の各書込みコマンドを実行する際に、書込みパルス幅を長くする。
【００４１】
図５および図６はコントローラコア部１０の処理動作の一例を示すフローチャートである。図５はオープンページポリシを採用した場合のフローチャート、図６はクローズドページポリシを採用した場合のフローチャートである。図５および図６のフローチャートは、図１の中で、主にページクラスタ制御部１４、キュー実行部１５、ベリファイ制御部１６および状態遷移制御部１８が行う処理を示している。図５および図６の処理を行うページクラスタ制御部１４、キュー実行部１５、ベリファイ制御部１６および状態遷移制御部１８は、メモリ制御部を構成している。このメモリ制御部は、キュー格納部１１の空き容量、またはキュー格納部１１に格納されているアクセス情報に基づいて、ＭＲＡＭ６の書込みパルス幅を制御する。言い換えると、メモリ制御部は、キュー格納部１１の空き容量、またはキュー格納部１１に格納されている書込みコマンドと読み出しコマンドに基づいて、ＭＲＡＭ６の書込みパルス幅を制御する。
【００４２】
まず、図５のフローチャートの処理を説明する。キュー実行部１５は、キュー格納部１１内の未処理のページに対応するクラスタを選択する（ステップＳ１）。上述したように、クラスタの生成は、ページクラスタ制御部１４により行われる。次に、該当ページがすでにオープンしているか否かを判定する（ステップＳ２）。まだ該当ページがオープンしていなければ、現在オープンしているページをクローズする（ステップＳ３）。
【００４３】
次に、キュー実行部１５は、選択したクラスタに対応するページをオープンする（ステップＳ４）。ここでは、ＭＲＡＭ制御部７を介して、該当するページに対応するメモリ領域６ａのワード線を駆動する。
【００４４】
次に、キュー実行部１５は、キューポップ部１３を介してクラスタ内の各キューを先頭から順に取り込む（ステップＳ５）。次に、キュー実行部１５は、取り込んだキューのコマンドが読み出しコマンドか否かを判定する（ステップＳ６）。読み出しコマンドであれば、ＭＲＡＭ制御部７を介して、ＭＲＡＭ６の該当するアドレスにアクセスして、該当するデータを読み出す制御を行う（ステップＳ７）。
【００４５】
ステップＳ６の判定がＮＯの場合は、書込みコマンドであると判断して、キュー格納部１１に空き容量がないか否かを判定する（ステップＳ８）。あるいは、ステップＳ８では、キュー格納部１１に格納されたキューの書込みコマンド数が読出コマンド数より多いか否かを判定してもよい。あるいは、ステップＳ８では、ステップＳ３で取り込んだキューの書込みコマンドの後に読み出しコマンドが続いているか否かを判定してもよい。
【００４６】
ステップＳ８の判定がＹＥＳの場合は、第２モードを選択する（ステップＳ９）。そして、状態遷移制御部１８にて、通常の書込みパルス幅より長い書込みパルスを生成して、ＭＲＡＭ制御部７を介してＭＲＡＭ６にアクセスし、ステップＳ５で取り込んだキューにて指定されるアドレスにデータを書き込む（ステップＳ１０）。この場合、書込みパルス幅が長いため、データ書き込みの信頼性は高いと考えられることから、ベリファイ処理は省略される。
【００４７】
なお、ステップＳ１０で生成される書込みパルスのパルス幅は、ベリファイ処理がなくてもデータ書き込みの信頼性が十分高いとみなされる程度のパルス幅であり、このようなパルス幅を事前に調べておく。
【００４８】
ステップＳ８の判定がＮＯの場合は、第１モードを選択する（ステップＳ１１）。そして、状態遷移制御部１８にて、通常の書込みパルスを生成して、ＭＲＡＭ制御部７を介してＭＲＡＭ６にアクセスし、ステップＳ５で取り込んだキューにて指定されるアドレスにデータを書き込む（ステップＳ１２）。
【００４９】
ステップＳ１０またはＳ１２の処理が終了した場合、クラスタ内にまだキューが残っているか否かを判定する（ステップＳ１３）。まだキューが残っている場合（ステップＳ１３の判定がＹＥＳの場合）には、ステップＳ５以降の処理を繰り返す。ステップＳ１３の判定がＮＯの場合には、未処理のページに対応するクラスタがまだ存在するか否かを判定する（ステップＳ１４）。未処理のクラスタが存在する場合（ステップＳ１４がＹＥＳの場合）には、ステップＳ１以降の処理を繰り返す。未処理のクラスタが存在しない場合（ステップＳ１４がＮＯの場合）には、図５の処理を終了する。
【００５０】
次に、図６のフローチャートの処理を説明する。まず、未処理のクラスタを選択する（ステップＳ２１）。次に、選択したクラスタに対応するページをオープンする（ステップＳ２２）。クローズドページポリシの場合、同一バンク内の同一ページへのアクセスが継続する場合であっても、各アクセスが終了するたびにページのクローズ処理を行う。よって、新たなアクセスを開始する際には必ずページのオープン処理が必要となる。
【００５１】
その後、ステップＳ２３〜Ｓ３１は、図５のステップＳ５〜Ｓ１３と同様であるため、説明を省略する。ステップＳ３１でクラスタ内にキューが残っていないと判定されると、今までオープンしていたページをクローズする（ステップＳ３２）。このように、図６では各クラスタの処理が終わるたびにページをクローズする点で、図５とは異なる。その後、未処理のクラスタが存在するか否かを判定し（ステップＳ３３）、まだ存在すればステップＳ２２以降の処理を繰り返し、存在しなければ図６の処理を終了する。
【００５２】
このように、本実施形態では、ＭＲＡＭ６等の不揮発メモリにアクセスする際に、キュー格納部１１の空き容量、またはキュー格納部１１に格納されているキューに基づいて、不揮発メモリの書込みパルス幅を制御する。より具体的には、キュー格納部１１の空き容量がない場合や、キュー格納部１１に格納された書込みコマンド数が読み出しコマンド数よりも大きい場合には、不揮発メモリへの書込みパルスのパルス幅を通常よりも長くする。これにより、ベリファイ処理を行わなくても、エラー発生確率が増大するおそれがなくなる。また、ベリファイ処理が不要となることで、キュー格納部１１に格納できないキューが発生するおそれを回避できる。
【００５３】
また、本実施形態では、書込みコマンドの後に読み出しコマンドが続かない場合には、書込みパルスのパルス幅を長くしてベリファイ処理を不要とし、書込みコマンドの後に読み出しコマンドが続く場合には、同じページ内のデータ書き込みをベリファイ処理なしで順次行った後に、そのページをクローズする際にまとめてベリファイ処理を行う。これにより、読み出しコマンドの実行タイミングを早めることができ、プロセッサ３の不揮発メモリに対するアクセス性能を向上できる。
【００５４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５５】
１  メモリシステム、２  プロセッサシステム、３  プロセッサ、４  ホスト回路、５  メモリコントローラ、６  ＭＲＡＭ、７  ＭＲＡＭ制御部、８  クロック同期化部、９  ホストインタフェース部、１０  コントローラコア部、１１  キュー格納部、１２  キュー追加部、１３  キューポップ部、１４  ページクラスタ制御部、１５  キュー実行部、１６  ベリファイ制御部、１７  キュー出力部、１８  状態遷移制御部、１９  初期化制御部、２０  アドレス生成部、２１  バンク管理部
【図１】
2018049672.tif 000003
【図２】
2018049672.tif 000004
【図３】
2018049672.tif 000005
【図４】
2018049672.tif 000006
【図５】
2018049672.tif 000007
【図６】
2018049672.tif 000008