(57)【要約】  アクセス単位毎の書込み時間が一定でないメモリであっても、書込み時間を短縮する。  書込み時間予測情報保持部は、複数のメモリモジュールに対する書込み時間を予測するための書込み時間予測情報を複数のメモリモジュールの各々について保持する。リクエスト選択部は、複数のメモリモジュールの各々について書込みを要求する複数の書込みリクエストのうちより長い書込み時間が予測される書込みリクエストを書込み時間予測情報に基づいて優先して選択する。
2016117190.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリモジュールに対する書込み時間を予測するための書込み時間予測情報を前記複数のメモリモジュールの各々について保持する書込み時間予測情報保持部と、
前記複数のメモリモジュールの各々について書込みを要求する複数の書込みリクエストのうちより長い前記書込み時間が予測される前記書込みリクエストを前記書込み時間予測情報に基づいて優先して選択するリクエスト選択部と
を具備するメモリコントローラ。
【請求項２】
前記書込み時間予測情報を生成して前記書込み時間予測情報保持部に保持させる書込み時間予測情報生成部をさらに具備する請求項１記載のメモリコントローラ。
【請求項３】
前記書込み時間予測情報生成部は、前記書込み時間を前記複数のメモリモジュール毎に計測して前記書込み時間予測情報として前記書込み時間予測情報保持部に保持させる請求項２記載のメモリコントローラ。
【請求項４】
前記書込み時間予測情報生成部は、書込みを行った前記複数のメモリモジュールからデータの読出しを行い当該読み出したデータと前記書込みに係る書込みデータとが一致するか否かを判断するベリファイの回数を前記複数のメモリモジュールの各々について計測して前記書込み時間予測情報として前記書込み時間予測情報保持部に保持させる請求項２記載のメモリコントローラ。
【請求項５】
前記書込み時間予測情報生成部は、前記複数のメモリモジュールにおける書込み回数を前記複数のメモリモジュールの各々について計測して前記書込み時間予測情報として前記書込み時間予測情報保持部に保持させる請求項２記載のメモリコントローラ。
【請求項６】
前記複数のメモリモジュールから読み出した読出しデータの誤りの検出および訂正を行う誤り訂正部をさらに具備し、
前記書込み時間予測情報生成部は、前記訂正された前記読出しデータにおける前記誤り訂正部によって誤りが訂正されたビット数を前記複数のメモリモジュールの各々について計測して前記書込み時間予測情報として前記書込み時間予測情報保持部に保持させる
請求項２記載のメモリコントローラ。
【請求項７】
前記書込み時間予測情報生成部は、前記複数のメモリモジュールにおける書込み不成功回数を前記複数のメモリモジュールの各々について計測して前記書込み時間予測情報として前記書込み時間予測情報保持部に保持させる請求項２記載のメモリコントローラ。
【請求項８】
前記複数のメモリモジュール毎に設けられて前記複数のメモリモジュールの各々についての前記書込みリクエストを保持して先入れ先出しする複数のリクエストキューをさらに具備し、
前記リクエスト選択部は、前記複数のリクエストキューの先頭に保持された前記書込みリクエストに対して前記書込み時間予測情報に基づく前記選択を行う
請求項１記載のメモリコントローラ。
【請求項９】
前記複数のメモリモジュールは、データを記憶する記憶領域がページサイズにより分割されたページを単位としてアクセスされ、
前記書込み時間予測情報保持部は、前記ページ毎に前記書込み時間予測情報を保持する
請求項１記載のメモリコントローラ。
【請求項１０】
前記複数のメモリモジュールは、データを記憶する記憶領域がページサイズにより分割されたページを単位としてアクセスされ、
前記書込み時間予測情報保持部は、前記複数のページからなるブロック毎に前記書込み時間予測情報を保持する
請求項１記載のメモリコントローラ。
【請求項１１】
データを記憶する記憶領域が複数のメモリバンクにより構成されたメモリモジュールにおける前記複数のメモリバンクに対する書込み時間を予測するための書込み時間予測情報を前記複数のメモリバンクの各々について保持する書込み時間予測情報保持部と、
前記複数のメモリバンクの各々について書込みを要求する複数の書込みリクエストのうちより長い前記書込み時間が予測される前記書込みリクエストを前記書込み時間予測情報に基づいて優先して選択するリクエスト選択部と
を具備するメモリコントローラ。
【請求項１２】
複数のメモリモジュールと、
前記複数のメモリモジュールに対する書込み時間を予測するための書込み時間予測情報を前記複数のメモリモジュールの各々について保持する書込み時間予測情報保持部と、
前記複数のメモリモジュールの各々について書込みを要求する複数の書込みリクエストのうちより長い前記書込み時間が予測される前記書込みリクエストを前記書込み時間予測情報に基づいて優先して選択するリクエスト選択部と
を具備する記憶装置。
【請求項１３】
複数のメモリモジュールと、
前記複数のメモリモジュールに対する書込み時間を予測するための書込み時間予測情報を前記複数のメモリモジュールの各々について保持する書込み時間予測情報保持部と、
前記複数のメモリモジュールの各々について書込みを要求する複数の書込みリクエストのうちより長い前記書込み時間が予測される前記書込みリクエストを前記書込み時間予測情報に基づいて優先して選択するリクエスト選択部と
を備える記憶装置と、
前記記憶装置にアクセスするホストコンピュータと
を具備する情報処理システム。
【請求項１４】
複数のメモリモジュールの各々について書込みを要求する複数の書込みリクエストのうちより長い書込み時間が予測される前記書込みリクエストを前記書込み時間を予測するための書込み時間予測情報に基づいて優先して選択するリクエスト選択手順を具備するメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メモリコントローラに関する。詳しくは、不揮発メモリに対するデータの書込みおよび検証を行うメモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法に関する。
【背景技術】
【０００２】
従来、情報処理装置において揮発メモリであるＤＲＡＭ（Dynamic Random Access Memory）や不揮発メモリ（nonvolatile memory）等のメモリにより構成された記憶装置が使用されている。この記憶装置においては、情報処理装置を構成するホストコンピュータが発行したコマンドに基づいて、データのアクセスが行われる。情報処理装置の処理能力を高めるため、発行されたコマンドを高速に処理可能な記憶装置が要求されている。【０００３】
不揮発メモリは、データの書込み後に書込みが正常に行われたか否かを判定するベリファイとベリファイの結果に基づく再書込みとを必要とする。このような不揮発メモリには、ＮＡＮＤ型フラッシュメモリ、ＲｅＲＡＭ（Resistance RAM）、ＰＣＲＡＭ（Phase-Change RAM）およびＭＲＡＭ（Magnetoresistive RAM）などが該当する。これらベリファイおよび再書込みの回数は、メモリセル毎に異なる回数になる。例えば、メモリセルにおけるデータを記憶する記憶素子の物性はメモリセル毎に異なっており、ベリファイの回数もメモリセル毎に異なることとなる。また、不揮発メモリは、書込みにより記憶素子が損傷を受けて劣化する。そのため、書込みの頻度が高いメモリセルほどベリファイの回数が増加する。これにより、アクセス単位であるページ毎の書込み時間もページ毎に変化する。その結果、このような不揮発メモリを使用した記憶装置に対して発行された複数の書込みコマンドについては、それぞれ書込みに要する時間が異なることとなる。なお、ベリファイおよび再書込みの回数が所定の限度数に達しても、書込みが正常に行われていない場合には、当該ページにおける書込みは不成功と判断される。この場合、例えば、エラー処理が行われる。【０００４】
一方、ＤＲＡＭの一種であるＳＤＲＡＭ（Synchronous DRAM）には、書込みの際にメモリセルのアクティベートやプリチャージによる待ち時間が存在する。このため、ＳＤＲＡＭにおいては、メモリセルにデータを書き込むために要する時間は一定であるものの、待ち時間を含めた書込みコマンドの実行時間がコマンド毎に異なることとなる。このようなＳＤＲＡＭを複数使用した記憶装置において、複数発行された書込みコマンドの処理を高速化するシステムが提案されている。例えば、発行されたコマンドを保持するコマンド履歴バッファとコマンドの発行順序を変更する順序制御部とを有するメモリコントローラを備えるシステムが提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−１５４１１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述の従来技術では、ＳＤＲＡＭを複数使用する記憶装置を想定して、コマンドの発行順序の変更制御を行っている。具体的には、過去に発行されたコマンドによりプリチャージ等の待ち時間が発生しているＳＤＲＡＭが存在する場合に、このＳＤＲＡＭ以外のＳＤＲＡＭに対するコマンドを先に発行するように発行順序が変更される。このように、上述の従来技術によれば、複数のＳＤＲＡＭに対するコマンドの処理時間を短縮することができる。しかしながら、この従来技術は、プリチャージ等の所定の待ち時間が発生するＳＤＲＡＭを想定したものである。上述のＲｅＲＡＭのような書込み時間がアクセス単位毎に異なるメモリを使用した記憶装置においては、書込み時間を短縮することができないという問題がある。【０００７】
本技術はこのような状況に鑑みて生み出されたものであり、アクセス単位であるページ毎の書込み時間が一定でないメモリを使用した記憶装置において、書込み時間を短縮することを目的とする。
【課題を解決するための手段】
【０００８】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、複数のメモリモジュールに対する書込み時間を予測するための書込み時間予測情報を上記複数のメモリモジュールの各々について保持する書込み時間予測情報保持部と、上記複数のメモリモジュールの各々について書込みを要求する複数の書込みリクエストのうちより長い上記書込み時間が予測される上記書込みリクエストを上記書込み時間予測情報に基づいて優先して選択するリクエスト選択部とを具備するメモリコントローラである。これにより、複数の書込みリクエストのうちより長い上記書込み時間が予測される上記書込みリクエストが優先して選択されるという作用をもたらす。【０００９】
またこの第１の側面において、上記書込み時間予測情報を生成して上記書込み時間予測情報保持部に保持させる書込み時間予測情報生成部をさらに具備してもよい。これにより、書込み時間予測情報が生成されるという作用をもたらす。【００１０】
またこの第１の側面において、上記書込み時間予測情報生成部は、上記書込み時間を上記複数のメモリモジュール毎に計測して上記書込み時間予測情報として上記書込み時間予測情報保持部に保持させてもよい。これにより、メモリモジュール毎に計測された書込み時間により書込み時間予測情報が生成されるという作用をもたらす。【００１１】
またこの第１の側面において、上記書込み時間予測情報生成部は、書込みを行った上記複数のメモリモジュールからデータの読出しを行い当該読み出したデータと上記書込みに係る書込みデータとが一致するか否かを判断するベリファイの回数を上記複数のメモリモジュールの各々について計測して上記書込み時間予測情報として上記書込み時間予測情報保持部に保持させてもよい。これにより、メモリモジュール毎に計測されたベリファイの回数により書込み時間予測情報が生成されるという作用をもたらす。【００１２】
またこの第１の側面において、上記書込み時間予測情報生成部は、上記複数のメモリモジュールにおける書込み回数を上記複数のメモリモジュールの各々について計測して上記書込み時間予測情報として上記書込み時間予測情報保持部に保持させてもよい。これにより、メモリモジュール毎に計測された書込み回数により書込み時間予測情報が生成されるという作用をもたらす。【００１３】
またこの第１の側面において、上記複数のメモリモジュールから読み出した読出しデータの誤りの検出および訂正を行う誤り訂正部をさらに具備し、上記書込み時間予測情報生成部は、上記訂正された上記読出しデータにおける上記誤り訂正部によって誤りが訂正されたビット数を上記複数のメモリモジュールの各々について計測して上記書込み時間予測情報として上記書込み時間予測情報保持部に保持させてもよい。誤りが訂正されたビットに対応するメモリセルは記憶素子が過度に損傷している可能性がある。この場合には、ベリファイ回数が増加するため、誤りが訂正されたビット数により書込み時間を予測することができる。これにより、メモリモジュール毎に計測された誤りが訂正されたビット数により書込み時間予測情報が生成されるという作用をもたらす。【００１４】
またこの第１の側面において、上記書込み時間予測情報生成部は、上記複数のメモリモジュールにおける書込み不成功回数を上記複数のメモリモジュールの各々について計測して上記書込み時間予測情報として上記書込み時間予測情報保持部に保持させてもよい。これにより、メモリモジュール毎に計測された書込み不成功回数により書込み時間予測情報が生成されるという作用をもたらす。【００１５】
またこの第１の側面において、上記複数のメモリモジュール毎に設けられて上記複数のメモリモジュールの各々についての上記書込みリクエストを保持して先入れ先出しする複数のリクエストキューをさらに具備し、上記リクエスト選択部は、上記複数のリクエストキューの先頭に保持された上記書込みリクエストに対して上記書込み時間予測情報に基づく上記選択を行ってもよい。これにより、リクエストキューの先頭に保持された書込みリクエストが選択されるという作用をもたらす。【００１６】
またこの第１の側面において、上記複数のメモリモジュールは、データを記憶する記憶領域がページサイズにより分割されたページを単位としてアクセスされ、上記書込み時間予測情報保持部は、上記ページ毎に上記書込み時間予測情報を保持してもよい。これにより、ページ毎の書込み時間予測情報に基づいて書込みリクエストが選択されるという作用をもたらす。【００１７】
またこの第１の側面において、上記複数のメモリモジュールは、データを記憶する記憶領域がページサイズにより分割されたページを単位としてアクセスされ、上記書込み時間予測情報保持部は、上記複数のページからなるブロック毎に上記書込み時間予測情報を保持してもよい。これにより、ブロック毎の書込み時間予測情報に基づいて書込みリクエストが選択されるという作用をもたらす。【００１８】
またこの第１の側面において、データを記憶する記憶領域が複数のメモリバンクにより構成されたメモリモジュールにおける上記複数のメモリバンクに対する書込み時間を予測するための書込み時間予測情報を上記複数のメモリバンクの各々について保持する書込み時間予測情報保持部と、上記複数のメモリバンクの各々について書込みを要求する複数の書込みリクエストのうちより長い上記書込み時間が予測される上記書込みリクエストを上記書込み時間予測情報に基づいて優先して選択するリクエスト選択部とを具備してもよい。これにより、メモリバンクを有するメモリモジュールにおいて、複数の書込みリクエストのうちより長い上記書込み時間が予測される上記書込みリクエストが優先して選択されるという作用をもたらす。【００１９】
また、本技術の第２の側面は、複数のメモリモジュールと、上記複数のメモリモジュールに対する書込み時間を予測するための書込み時間予測情報を上記複数のメモリモジュールの各々について保持する書込み時間予測情報保持部と、上記複数のメモリモジュールの各々について書込みを要求する複数の書込みリクエストのうちより長い上記書込み時間が予測される上記書込みリクエストを上記書込み時間予測情報に基づいて優先して選択するリクエスト選択部とを具備する記憶装置である。これにより、複数の書込みリクエストのうちより長い上記書込み時間が予測される上記書込みリクエストが優先して選択されるという作用をもたらす。【００２０】
また、本技術の第３の側面は、複数のメモリモジュールと、上記複数のメモリモジュールに対する書込み時間を予測するための書込み時間予測情報を上記複数のメモリモジュールの各々について保持する書込み時間予測情報保持部と、上記複数のメモリモジュールの各々について書込みを要求する複数の書込みリクエストのうちより長い上記書込み時間が予測される上記書込みリクエストを上記書込み時間予測情報に基づいて優先して選択するリクエスト選択部とを備える記憶装置と、上記記憶装置にアクセスするホストコンピュータとを具備する情報処理システムである。これにより、複数の書込みリクエストのうちより長い上記書込み時間が予測される上記書込みリクエストが優先して選択されるという作用をもたらす。【００２１】
また、本技術の第４の側面は、複数のメモリモジュールの各々について書込みを要求する複数の書込みリクエストのうちより長い書込み時間が予測される上記書込みリクエストを上記書込み時間を予測するための書込み時間予測情報に基づいて優先して選択するリクエスト選択手順を具備するメモリの制御方法である。これにより、複数の書込みリクエストのうちより長い上記書込み時間が予測される上記書込みリクエストが優先して選択されるという作用をもたらす。
【発明の効果】
【００２２】
本技術によれば、ページ毎の書込み時間が一定でないメモリにおいて、書込み時間を短縮することができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００２３】
【図１】本技術の実施の形態における情報処理システムの構成例を示す図である。
【図２】本技術の実施の形態におけるメモリモジュールの構成例を示す図である。
【図３】本技術の第１の実施の形態におけるメモリ３００の構成例を示す図である。
【図４】本技術の実施の形態におけるメモリセルの構成例を示す図である。
【図５】本技術の第１の実施の形態におけるメモリアクセス制御部２５０の構成例を示す図である。
【図６】本技術の第１の実施の形態における書込み時間予測情報生成部２５８の構成例を示す図である。
【図７】本技術の第１の実施の形態における書込み時間予測情報を示す図である。
【図８】本技術の第１の実施の形態における書込みリクエスト選択処理を示す図である。
【図９】本技術の第１の実施の形態におけるコマンド受信処理の処理手順の一例を示す図である。
【図１０】本技術の第１の実施の形態における書込みリクエスト出力処理の処理手順の一例を示す図である。
【図１１】本技術の第１の実施の形態におけるレスポンス入力処理の処理手順の一例を示す図である。
【図１２】本技術の第１の実施の形態における書込み時間計測開始処理の処理手順の一例を示す図である。
【図１３】本技術の第１の実施の形態における書込み時間計測終了処理の処理手順の一例を示す図である。
【図１４】本技術の第２の実施の形態における書込み時間予測情報を示す図である。
【図１５】本技術の第３の実施の形態における書込み時間予測情報を示す図である。
【図１６】本技術の第４の実施の形態におけるメモリ３００の構成例を示す図である。
【発明を実施するための形態】
【００２４】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（ページ毎の書込み時間予測情報を使用する場合の例）
２．第２の実施の形態（ブロック毎の書込み時間予測情報を使用する場合の例）
３．第３の実施の形態（メモリモジュール毎の書込み時間予測情報を使用する場合の例）
４．第４の実施の形態（メモリバンクを有するメモリモジュールにおいてページまたはブロック毎の書込み時間予測情報を使用する場合の例）
【００２５】
＜１．第１の実施の形態＞
［情報処理システムの構成］
図１は、本技術の実施の形態における情報処理システムの構成例を示す図である。同図の情報処理システムは、ホストコンピュータ１００と、メモリコントローラ２００と、メモリ３００とを備える。なお、メモリコントローラ２００およびメモリ３００は、記憶装置を構成する。
【００２６】
ホストコンピュータ１００は、情報処理システムにおける各種の処理を行うものである。このホストコンピュータ１００は、メモリコントローラ２００を介して、メモリ３００に対して書込みまたは読出し等のコマンドを発行してアクセスを行う。信号線１０１は、ホストコンピュータ１００とメモリコントローラ２００とを電気的に接続するものである。
【００２７】
メモリコントローラ２００は、メモリ３００を制御するものである。このメモリコントローラ２００は、ホストコンピュータ１００から発行された書込みおよび読出しコマンドを解釈し、これに基づく書込みおよび読出しリクエストをメモリ３００に対して要求する。
【００２８】
メモリ３００は、データを記録するものである。メモリコントローラ２００から要求されたリクエストに基づいて、このデータに対するアクセスが行われる。この際、メモリ３００とメモリコントローラ２００との間でデータの転送が行われる。なお、メモリ３００は、メモリモジュールにより構成されている。ここで、メモリモジュールとは、データを記憶するモジュールであり、単一のまたは複数のメモリチップ等により構成されたモジュールである。信号線２０１は、メモリコントローラ２００とメモリ３００とを電気的に接続するものである。
【００２９】
ホストコンピュータ１００は、書込みを行う際に、書込みコマンドとこれに付随する書込みデータをメモリコントローラ２００に対して発行する。ここで、書込みコマンドとは、書込みを表すオペコード、書込み先アドレスおよび書込みデータ数により構成されたコマンドを表している。メモリコントローラ２００は、書込みコマンドとこれに付随する書込みデータに基づいて書込みリクエストを生成し、メモリ３００に対して要求する。メモリ３００は、このリクエストに基づいて書込みを行う。その後、メモリ３００は、書込みの結果をレスポンスとしてメモリコントローラ２００に対して出力する。
【００３０】
一方、読出しの際には、ホストコンピュータ１００は、読出しコマンドをメモリコントローラ２００に対して発行する。ここで、読出しコマンドとは、読出しを表すオペコード、読出し先アドレスおよび読出しデータ数により構成されたコマンドを表している。メモリコントローラ２００は、この読出しコマンドに基づいて読出しリクエストを生成し、メモリ３００に対して要求する。メモリ３００は、このリクエストに基づいて読出しを行い、読み出したデータをメモリコントローラ２００に対して出力する。メモリコントローラ２００は、この出力されたデータを読出しデータとしてホストコンピュータ１００に出力する。
【００３１】
［メモリモジュールの構成］
図２は、本技術の実施の形態におけるメモリモジュールの構成例を示す図である。同図におけるａは、メモリチップ３７１により構成されたメモリモジュール３７０の例を表したものである。また、同図におけるｂは、２個のメモリチップ３８１および３８２により構成されたメモリモジュール３８０の例を表したものである。これらのメモリモジュールを構成するメモリチップとして、不揮発メモリであるＲｅＲＡＭにより構成されたメモリチップを想定する。このＲｅＲＡＭは、抵抗変化型メモリであり、抵抗値を可逆的に変化させて記憶を行う記憶素子を有するメモリである。
【００３２】
［メモリコントローラの構成］
メモリコントローラ２００は、ホストインターフェース２１０と、プロセッサ２２０と、ＲＯＭ２３０と、ＲＡＭ２４０と、メモリアクセス制御部２５０と、メモリインターフェース２９０とを備える。
【００３３】
ホストインターフェース２１０は、ホストコンピュータとのやり取りを行うものである。プロセッサ２２０は、メモリコントローラ２００内の各部を制御するものである。ＲＯＭ２３０は、プロセッサ２２０のファームウェアを記憶するメモリである。ＲＡＭ２４０は、プロセッサ２２０の処理に必要なデータを一時的に記憶するメモリである。メモリアクセス制御部２５０は、メモリ３００に対するリクエストの要求等を行うものである。バス２０９は、これらメモリコントローラ２００内の各部を相互に接続するものである。メモリインターフェース２９０は、メモリ３００と間のやり取りを行うものである。
【００３４】
ホストコンピュータ１００からホストインターフェース２１０を介して書込み等のコマンドが発行された場合、プロセッサ２２０は、このコマンドをメモリアクセス制御部２５０に転送する。その後、メモリアクセス制御部２５０は、コマンドをリクエストに変換し、メモリインターフェース２９０を介してメモリ３００に対して要求する。このメモリアクセス制御部２５０の詳細については、後述する。
【００３５】
［メモリの構成］
図３は、本技術の第１の実施の形態におけるメモリ３００の構成例を示す図である。このメモリ３００は、メモリチップ＃０（３２０）と、メモリチップ＃１（３３０）と、メモリチップ＃２（３４０）と、メモリチップ＃３（３５０）とを備える。なお、メモリチップ＃０（３２０）乃至＃３（３５０）は、特許請求の範囲に記載のメモリモジュールの一例である。すなわち、本技術の第１の実施の形態においては、４個のメモリモジュールを有するメモリ３００を想定し、これらのメモリモジュールはそれぞれ単一のメモリチップにより構成されることを想定する。なお、これらのメモリモジュールは、それぞれ独立したデータのアクセスが可能である。
【００３６】
メモリチップ＃０（３２０）乃至＃３（３５０）は、データを記憶する記憶領域を有する半導体素子である。前述のように、本技術の実施の形態においては、これらのメモリチップとしてＲｅＲＡＭにより構成されたメモリチップを想定する。さらに、上述の記憶領域は複数のページにより構成され、このページを単位としてアクセスされることを想定する。このページのサイズは、例えば、５１２Ｋバイトである。これらのメモリチップは、それぞれ独立したデータのアクセスが可能である。メモリコントローラ２００は、リクエストを要求する際、これらメモリチップを識別するための識別番号をリクエストに付加する。上述の例では、この識別番号には、＃０乃至＃３が該当する。なお、この識別番号は、例えば、メモリチップ＃０（３２０）乃至＃３（３５０）を選択するためのチップセレクト信号に変換されて、メモリ３００に対して出力される方式を採ることができる。この場合、リクエストは、メモリチップ＃０（３２０）乃至＃３（３５０）に共通して入力され、チップセレクト信号により選択されたメモリチップのみが、当該リクエストに応じた処理を行うこととなる。
【００３７】
［メモリセルの構成］
図４は、本技術の実施の形態におけるメモリセルの構成例を示す図である。同図は、図３において説明したメモリチップ＃０（３２０）等を構成するＲｅＲＡＭの記憶領域におけるメモリセルの構成を表したものである。同図に表したように、記憶素子３２１およびＭＯＳＦＥＴ３２２により１ビットのメモリセル３２３が構成される。なお、ＭＯＳＦＥＴ３２２は、記憶素子３２１を駆動するトランジスタである。記憶素子３２１の一端は共通の信号線であるプレート線に接続され、他端はＭＯＳＦＥＴ３２２のドレイン端子に接続されている。ＭＯＳＦＥＴ３２２のゲート端子は複数のワード線のうちの1本に接続され、ソース端子は複数のビット線のうちの１本に接続されている。ワード線およびビット線は、メモリセル３２３を構成するＭＯＳＦＥＴ３２２に対してＸＹマトリクス状に配線されている。これにより、ワード線およびビット線からそれぞれ１本を選択して信号を入力することにより、１個のメモリセル３２３が選択されてデータの書込みまたは読出しが行われる。例えば、同図において左端に記載されたメモリセル３２３を選択する場合には、ワード線＃０およびビット線＃０を選択する。
【００３８】
記憶素子３２１は、データを記憶する素子である。この記憶素子３２１は、印加された電圧の極性により抵抗値が変化する。例えば、記憶素子３２１のプレート線に接続された端子を基準として、記憶素子３２１の他の端子に正の極性となる電圧（書込み電圧）を印加することにより記憶素子３２１を高抵抗の状態にすることができる。逆に、記憶素子３２１の他の端子に負の極性となる書込み電圧を印加することにより記憶素子３２１を低抵抗の状態にすることができる。なお、以後の説明では、高抵抗の状態をＨＲＳ（High Resistance State）、低抵抗の状態をＬＲＳ（Low Resistance State）と称する。これら２つの状態を論理値に対応させて、データの記憶を行う。例えば、記憶素子３２１がＬＲＳの場合を値「１」、記憶素子３２１がＨＲＳの場合を値「０」とすることができる。このように、記憶素子３２１の抵抗値を変化させて、メモリセル３２３にデータを書き込むことができる。なお、メモリセル３２３に値「１」を書き込む操作をセット操作、メモリセル３２３に値「０」を書き込む操作をリセット操作と称し、これら２つの操作を行うことにより書込みが行われる。
【００３９】
なお、これらのセット操作およびリセット操作は、複数のメモリセル３２３に対して同時に行われる。セット操作を行う際には、複数のワード線のうちの1本を選択する。例えばワード線＃０を選択し、オン電圧を印加する。これにより、ワード線＃０に接続されたＭＯＳＦＥＴ３２２がオン状態になる。次に、セット操作を行うメモリセル３２３に接続されたビット線を選択し、プレート線に対して負の極性となる書込み電圧を印加する。すると、選択されたビット線に接続されたメモリセル３２３の記憶素子３２１は、ＬＲＳとなり、値「１」が書き込まれる。リセット操作を行う際には、セット操作と同様にワード線＃０を選択してオン電圧を印加する。次に、リセット操作を行うメモリセル３２３に接続されたビット線を選択し、プレート線に対して正の極性となる書込み電圧を印加する。すると、選択されたビット線に接続されたメモリセル３２３の記憶素子３２１は、ＨＲＳとなり、値「０」が書き込まれる。このようにして、１本のワード線に接続された複数のメモリセルに対して書込みを行うことができる。この１度の書込み操作により書込み可能なメモリセル３２３の数が前述したページサイズに該当する。同図の例では、ページサイズとしてはｍビットを想定する。
【００４０】
上述のセット操作およびリセット操作の実行後には、ベリファイが行われる。ここで、ベリファイとは、メモリセル３２３に所望の書込みデータが書き込まれているか否かを判断する処理である。ベリファイの結果、メモリセル３２３に所望の書込みデータが書き込まれていない場合には、再度セット操作またはリセット操作を行う。このベリファイは、書込みを行ったメモリセルから読出しを行い、読み出したデータと書込みに係る書込みデータとが等しいか否かを判断することにより行うことができる。記憶素子３２１の特性は、メモリセル３２３毎にばらつきがあり、１度のセット操作またはリセット操作により書込みが終了するメモリセル３２３がある一方、数度の書込みおよびベリファイを経て書込みが終了するメモリセル３２３も存在する。このため、書込みに要する時間は、ページ毎に変動する。また、所定の回数のベリファイおよび再書込みを行ったにもかかわらず、メモリセル３２３の値が所望の値にならない場合には、メモリ３００は、当該ページにおいて書込みが失敗したものとして処理することができる。
【００４１】
前述のように、メモリ３００は、書込みの結果をレスポンスとしてメモリコントローラ２００に対して出力する。書込み処理が成功した場合には、メモリ３００は、メモリコントローラ２００に対して書込み成功のレスポンスを出力する。一方、書込みが失敗した場合には、メモリ３００は、書込み失敗のレスポンスを出力する。メモリ３００から書込み失敗のレスポンスが出力された場合、メモリコントローラ２００またはホストコンピュータ１００により書込み失敗に応答する処理が行われる。
【００４２】
なお、メモリセル３２３に対するデータの読出しは、記憶素子３２１に対して書込み電圧より低い電圧を印加して流れる電流を測定し、ＬＲＳおよびＨＲＳを判断することにより行う。
【００４３】
［メモリアクセス制御部の構成］
図５は、本技術の第１の実施の形態におけるメモリアクセス制御部２５０の構成例を示す図である。このメモリアクセス制御部２５０は、コマンド変換部２５１と、リクエストキュー＃０（２５２）と、リクエストキュー＃１（２５３）と、リクエストキュー＃２（２５４）と、リクエストキュー＃３（２５５）と、リクエスト選択部２５６とを備える。また、このメモリアクセス制御部２５０は、リクエスト制御部２５７と、書込み時間予測情報生成部２５８と、書込み時間予測情報保持部２５９と、誤り訂正部２６１とを備える。
【００４４】
コマンド変換部２５１は、ホストコンピュータ１００が発行したコマンドとこれに含まれる書込み先および読出し先アドレス等をリクエストに変換するものである。ここで、ホストコンピュータ１００が発行したコマンドに含まれる書込み先および読出し先アドレスはページを単位とするページアドレスにより表され、書込みおよび読出しデータ数はページ数により表されるものと想定する。また、１個のリクエストによりアクセス可能なデータ数を１ページと想定する。コマンドのデータ数が複数のページである場合には、コマンド変換部２５１は、このコマンドを複数のリクエストに変換して、複数のメモリチップに割り当てる。
【００４５】
この割当て方法として、書込み先および読出し先のページアドレスの下位２ビットをメモリチップ＃０（３２０）乃至＃３（３５０）の識別番号に割り当てる方法を採ることができる。例えば、コマンドが書込みコマンドであり、書込み先ページアドレスが０ｘ０、データ数が４ページの場合には、コマンド変換部２５１は、このコマンドを４個のリクエストに変換する。これら４個のリクエストは、メモリチップ＃０（３２０）乃至＃３（３５０）にそれぞれ割り当てられる。このようにして、コマンド変換部２５１は、コマンドをメモリチップ＃０（３２０）乃至＃３（３５０）に対するリクエストに変換し、次に説明するリクエストキューに保持させる。
【００４６】
リクエストキュー＃０（２５２）乃至＃３（２５５）は、コマンド変換部２５１により変換されたリクエストを保持するとともに、保持したリクエストを先入れ先出しするものである。また、このリクエストキュー＃０（２５２）乃至＃３（２５５）は、メモリ３００における同一の識別番号のメモリチップ＃０（３２０）乃至＃３（３５０）と１対１に対応している。すなわち、これらのリクエストキューの個数は、メモリチップの個数と同じであり、対応するメモリチップのリクエストのみを保持する。これらのリクエストキューとして、ＦＩＦＯ（First-In First-Out）メモリを使用することができる。
【００４７】
書込み時間予測情報保持部２５９は、書込み時間予測情報を保持するものである。ここで、書込み時間予測情報とは、メモリチップ＃０（３２０）乃至＃３（３５０）に対する書込み時間の予測値である。本技術の第１の実施の形態においては、メモリチップ＃０（３２０）乃至＃３（３５０）は、ページを単位としてアクセスされる。このため、書込み時間予測情報は、ページ毎に生成されて書込み時間予測情報保持部２５９に保持される。この書込み時間予測情報保持部２５９として、ＤＲＡＭ等の揮発性メモリにより構成されたメモリを使用することができる。なお、この場合には、情報処理システムの停止時に、書込み時間予測情報保持部２５９に保持された書込み時間予測情報を不揮発メモリ等に保存する必要がある。そして、情報処理システムの起動時に、この不揮発メモリから書込み時間予測情報を読み出して書込み時間予測情報保持部２５９に保持させる処理が必要となる。書込み時間予測情報の詳細は、後述する。
【００４８】
リクエスト選択部２５６は、リクエストキュー＃０（２５２）乃至＃３（２５５）の先頭に保持されたリクエストを選択するものである。このリクエスト選択部は、リクエストを受理可能なメモリチップが２個以上存在し、かつ、これらのメモリチップに対応するリクエストキューにリクエストがそれぞれ保持されている場合に、これらのリクエストを選択する。なお、リクエストを受理可能なメモリチップとは、リクエストが発行されておらず、書込み等の処理を行っていないメモリチップである。リクエストキューに保持されたリクエストが書込みリクエストの場合には、リクエスト選択部２５６は、長い書込み時間が予測されるリクエストを優先して選択する。この選択は、書込み時間予測情報保持部２５９に保持された書込み時間予測情報に基づいて行われる。なお、リクエストを受理可能なメモリチップが１個の場合には、リクエスト選択部２５６は、当該メモリチップに対応するリクエストキューのリクエストを選択し、リクエスト制御部２５７に出力する。
【００４９】
リクエスト制御部２５７は、メモリ３００との間のリクエストのやり取りを制御するものである。このリクエスト制御部２５７は、リクエスト選択部２５６により選択されたリクエストをメモリ３００に対して出力する。リクエストが書込みリクエストの場合には、後述する書込み時間予測情報生成部２５８に対してリクエストを出力した旨の通知（リクエスト送出通知）を出力する。また、このリクエスト制御部２５７は、出力したリクエストに対するレスポンスがメモリ３００から入力された際には、書込み時間予測情報生成部２５８に対してレスポンスが入力された旨の通知（レスポンス受信通知）を出力する。リクエスト送出通知はメモリチップの識別番号およびページアドレスを伴い、レスポンス受信通知はメモリチップの識別番号を伴って出力される。
【００５０】
書込み時間予測情報生成部２５８は、メモリチップ＃０（３２０）乃至＃３（３５０）におけるページ毎の書込み時間を計測し、書込み時間予測情報として書込み時間予測情報保持部２５９に保持させるものである。書込み時間予測情報生成部２５８の詳細については、後述する。
【００５１】
誤り訂正部２６１は、書込みデータに対する符号化および読出しデータに対する復号を行うものである。ここで、符号化とは、書込みデータにパリティを付加してＥＣＣ符号にする処理である。このパリティには、例えば、ＢＣＨ（Bose Chaudhuri Hocquenghem）符号を使って生成されたパリティを使用することができる。また、復号とは、ＥＣＣ符号から元のデータを取り出す処理である。この復号の際、データの誤り検出および訂正が行われる。
【００５２】
［書込み時間予測情報生成部の構成］
図６は、本技術の第１の実施の形態における書込み時間予測情報生成部２５８の構成例を示す図である。この書込み時間予測情報生成部２５８は、制御部２７１と、ページアドレス保持部＃０（２７２）と、ページアドレス保持部＃１（２７３）と、ページアドレス保持部＃２（２７４）と、ページアドレス保持部＃３（２７５）とを備える。また、書込み時間予測情報生成部２５８は、タイマ＃０（２７６）と、タイマ＃１（２７７）と、タイマ＃２（２７８）と、タイマ＃３（２７９）とを備える。
【００５３】
ページアドレス保持部＃０（２７２）乃至＃３（２７５）は、リクエスト制御部２５７が出力した書込みリクエストのページアドレスを保持するものである。このページアドレス保持部＃０（２７２）乃至＃３（２７５）は、同一の識別番号のメモリチップ＃０（３２０）乃至＃３（３５０）と１対１に対応し、これらメモリチップの書込みリクエストのページアドレスを保持する。
【００５４】
タイマ＃０（２７６）乃至＃３（２７９）は、書込みに要する時間を計時するタイマである。このタイマ＃０（２７６）乃至＃３（２７９）は、同一の識別番号のメモリチップ＃０（３２０）乃至＃３（３５０）と１対１に対応し、これらの書込み時間を計時する。これらのタイマは、次に説明する制御部２７１により、計時の開始および停止が制御される。
【００５５】
制御部２７１は、ページアドレス保持部＃０（２７２）乃至＃３（２７５）およびタイマ＃０（２７６）乃至＃３（２７９）を制御するものである。この制御部２７１は、リクエスト制御部２５７からリクエスト送出通知が出力された場合に、リクエスト送出通知に含まれるメモリチップの識別番号に基づいて、対応するタイマおよびページアドレス保持部に対して処理を行う。例えば、リクエスト送出通知に含まれるメモリチップ識別番号がメモリチップ＃０（３２０）を表している場合には、制御部２７１は、タイマ＃０（２７６）に計時を開始させる。さらに、制御部２７１は、ページアドレス保持部＃０（２７２）にリクエスト送出通知に含まれるページアドレスを保持させる。
【００５６】
また、リクエスト制御部２５７からレスポンス受信通知が出力された場合に、制御部２７１は、レスポンス受信通知に含まれるメモリチップの識別番号に基づいて、対応するタイマに対して計時を停止させる。その後、制御部２７１は、計時した時間をタイマから取得するとともに、対応するページアドレス保持部よりページアドレスを取得し、メモリチップの識別番号とともに書込み時間予測情報保持部２５９に対して出力する。これにより、計測された書込み時間が書込み時間予測情報として書込み時間予測情報保持部２５９に保持される。
【００５７】
［書込み時間予測情報］
図７は、本技術の第１の実施の形態における書込み時間予測情報を示す図である。同図は、書込み時間予測情報保持部２５９に保持される書込み時間予測情報を表したものである。本技術の第１の実施の形態における書込み時間予測情報は、各メモリチップにおける書込みに要した時間をページアドレス毎に記録したものである。なお、書込み時間は、μｓ単位の値としている。この記録された書込み時間により、リクエスト選択部２５６の選択対象となっている書込みリクエストの書込み時間を予測することができる。リクエスト選択部２５６は、メモリチップ識別番号およびページアドレスにより、書込み時間予測情報から当該書込みリクエストの書込み時間の予測情報を取得する。次に、リクエスト選択部２５６は、この予測情報に基づいて長い書込み時間が予測されるメモリチップに対する書込みリクエストを選択する。
【００５８】
［書込みリクエスト選択処理］
図８は、本技術の第１の実施の形態における書込みリクエスト選択処理を示す図である。同図は、メモリチップ＃０乃至＃３のリクエスト入力とレスポンス出力との関係を表したものである。なお、リクエストの入力に要する時間には、１μｓを想定している。一方、書込みに要する時間はメモリチップ毎に異なっており、それぞれ同図に記載した通りの時間を想定している。例えば、メモリチップ＃０では、書込み時間は１０μｓを想定している。なお、これらの書込み時間は、図７において説明した書込み時間予測情報のうちページアドレス０ｘ０００００に対応する書込み時間と同じ時間にしている。同図におけるａは、対応するメモリチップの識別番号順にリクエストを選択して実行させた場合を表しており、同図におけるｂは予測される書込み時間が長い順にリクエストを選択して実行させた場合を表している。これにより、４個のリクエストの入力からレスポンス出力までの時間は、同図におけるａが１９μｓであるのに対して、同図におけるｂが１６μｓと短縮されていることが分かる。このように、書込みリクエストを予測される書込み時間が長い順に選択して実行させることにより、複数の書込みリクエストをより早く実行することができる。
【００５９】
［書込み処理］
図９は、本技術の第１の実施の形態におけるコマンド受信処理の処理手順の一例を示す図である。ホストコンピュータからコマンドが発行されると、メモリコントローラ２００は、本処理を開始する。まず、コマンド変換部２５１は、コマンドをリクエストに変換する（ステップＳ９０１）。次に、コマンド変換部２５１は、リクエストの要求先のメモリチップに対応するリクエストキューにリクエストを保持させ（ステップＳ９０２）、コマンド受信処理を終了する。
【００６０】
図１０は、本技術の第１の実施の形態における書込みリクエスト出力処理の処理手順の一例を示す図である。まず、メモリコントローラ２００は、リクエストが発行可能か否かを判断する（ステップＳ９５１）。すなわち、リクエストに基づく処理を行っていないメモリチップが存在し、当該メモリチップに対応するリクエストキューにリクエストが保持されている場合に、メモリコントローラ２００は、リクエストを発行可能と判断する。リクエストが発行可能でない場合は、メモリコントローラ２００は、リクエストが発行可能になるまで待機する（ステップＳ９５１）。リクエストが発行可能の場合には（ステップＳ９５１：Ｙｅｓ）、メモリコントローラ２００は、発行可能なリクエストの個数を調べる（ステップＳ９５３）。発行可能なリクエストが１個の場合には（ステップＳ９５３：Ｙｅｓ）、リクエスト選択部２５６により当該リクエストが選択され（ステップＳ９５５）、ステップＳ９５６の処理に移行する。
【００６１】
一方、発行可能なリクエストが２個以上の場合には（ステップＳ９５３：Ｎｏ）、リクエスト選択部２５６は、書込み時間予測情報に基づいてリクエストを選択する（ステップＳ９５４）。その後、メモリコントローラ２００は、ステップＳ９５６の処理に移行する。ステップＳ９５６において、リクエスト選択部２５６は、リクエストをリクエストキューから取得し（ステップＳ９５６）、メモリ３００に対して出力する（ステップＳ９５７）。次に、リクエスト制御部２５７は、書込み時間予測情報生成部２５８に対してリクエスト送出通知の出力を行う（ステップＳ９５８）。その後、メモリコントローラ２００は、再度ステップＳ９５１の処理に移行し、書込みリクエスト出力処理を繰返し実行する。
【００６２】
［レスポンス入力処理］
図１１は、本技術の第１の実施の形態におけるレスポンス入力処理の処理手順の一例を示す図である。リクエスト制御部２５７は、メモリ３００からレスポンスが入力されるまで待機し（ステップＳ８０１）、レスポンスが入力された場合には（ステップＳ８０１：Ｙｅｓ）、書込み時間予測情報生成部２５８に対してレスポンス受信の通知を行う（ステップＳ８０２）。その後、リクエスト制御部２５７は、再度ステップＳ８０１の処理に移行し、レスポンス入力処理を繰返し実行する。
【００６３】
［書込み時間計測開始処理］
図１２は、本技術の第１の実施の形態における書込み時間計測開始処理の処理手順の一例を示す図である。書込み時間予測情報生成部２５８は、リクエスト制御部２５７からリクエスト送出通知が入力されるまで待機する（ステップＳ８５１）。リクエスト送出通知が入力されると（ステップＳ８５１：Ｙｅｓ）、書込み時間予測情報生成部２５８は、ページアドレスをリクエスト送出通知に含まれるメモリチップ識別番号に対応するページアドレス保持部に保持させる（ステップＳ８５２）。次に、書込み時間予測情報生成部２５８は、リクエスト送出通知に含まれるメモリチップ識別番号に対応するタイマの計時を開始させる（ステップＳ８５３）。その後、書込み時間予測情報生成部２５８は、ステップＳ８５１の処理に移行し、書込み時間計測開始処理を繰返し実行する。
【００６４】
［書込み時間計測終了処理］
図１３は、本技術の第１の実施の形態における書込み時間計測終了処理の処理手順の一例を示す図である。書込み時間予測情報生成部２５８は、リクエスト制御部２５７からレスポンス受信通知が入力されるまで待機する（ステップＳ８７１）。レスポンス受信通知が入力されると（ステップＳ８７１：Ｙｅｓ）、書込み時間予測情報生成部２５８は、レスポンス受信通知に含まれるメモリチップ識別番号に対応するタイマの計時を停止させる（ステップＳ８７２）。次に、書込み時間予測情報生成部２５８は、レスポンス受信通知に含まれるメモリチップ識別番号に対応するページアドレス保持部からページアドレスを取得する（ステップＳ８７３）。次に、書込み時間予測情報生成部２５８は、メモリチップ識別番号、ページアドレスおよび書込み時間を書込み時間予測情報保持部２５９に対して出力する（ステップＳ８７４）。その後、書込み時間予測情報生成部２５８は、ステップＳ８７１の処理に移行し、書込み時間計測終了処理を繰返し実行する。
【００６５】
このように、本技術の第１の実施の形態では、メモリチップ（メモリモジュール）における書込み時間を計測し、書込み時間予測情報として保持する。複数の書込みリクエストを要求する際には、長い書込み時間が予測される書込みリクエストを書込み時間予測情報に基づいて優先して選択し、メモリモジュールに対して要求することにより、書込み時間を短縮することができる。
【００６６】
［第１の変形例］
上述の実施の形態では、計測した書込み時間を書込み時間予測情報としていた。これに対し、メモリ３００において行われるベリファイの回数を計測し、書込み時間予測情報としてもよい。書込み時間とベリファイ回数は比例関係にあり、ベリファイ回数により書込み時間を予測することが可能なためである。
【００６７】
ベリファイ回数の計測は、例えば、以下のようにメモリ３００からベリファイ回数を取得して行うことができる。第１の変形例におけるメモリチップ＃０（３２０）乃至＃３（３５０）は、レスポンスを出力する際、書込み結果に加えてベリファイ回数をさらに出力する。リクエスト制御部２５７は、レスポンス受信通知を出力する際、メモリチップ識別番号等に加えてベリファイ回数をさらに出力する。書込み時間予測情報生成部２５８は、このベリファイ回数を書込み時間予測情報として書込み時間予測情報保持部２５９に保持させる。これにより、ベリファイ回数を書込み時間予測情報として書込み時間予測情報保持部２５９に保持させることができる。
【００６８】
これにより、メモリコントローラ２００における書込み時間の計測を省略することができ、メモリコントローラ２００における処理を簡略化することができる。
【００６９】
［第２の変形例］
上述の実施の形態では、計測した書込み時間を書込み時間予測情報としていた。これに対し、メモリチップ＃０（３２０）乃至＃３（３５０）における書込み回数を書込み時間予測情報としてもよい。図４において説明した記憶素子３２１は、書込みにより損傷を受け、書込み回数の増加とともにベリファイ回数が増加する。すなわち、書込み時間と書込み回数は比例関係にあり、書込み回数により書込み時間を予測することが可能なためである。
【００７０】
書込み回数の取得は、以下のように行うことができる。第２の変形例における書込み時間予測情報生成部２５８は、リクエスト送出通知が出力される毎に、書込み時間予測情報保持部２５９に保持された書込み回数である書込み時間予測情報を取得してインクリメントを行い、書込み時間予測情報保持部２５９に保持させる。これにより、書込み回数を書込み時間予測情報として書込み時間予測情報保持部２５９に保持させることができる。
【００７１】
これにより、メモリコントローラ２００における書込み時間の計測を省略することができ、メモリコントローラ２００における処理を簡略化することができる。
【００７２】
［第３の変形例］
上述の実施の形態では、計測した書込み時間を書込み時間予測情報としていた。これに対し、メモリチップ＃０（３２０）乃至＃３（３５０）における書込み不成功回数を書込み時間予測情報としてもよい。図４において説明したように所定の回数のベリファイおよび再書込みを行ったにもかかわらずメモリセル３２３の値が所望の値にならない場合には、メモリ３００は、書込みが失敗したものとして処理する。この処理として、メモリ３００は、書込みの条件、例えば、記憶素子３２１に印加する書込み電圧を変更して再度書込みを行う処理を採ることができる。このような、書込み失敗の処理を行うシステムにおいては、書込み不成功回数と書込み時間が比例することになり、書込み時間の代わりに書込み不成功回数により書込み時間を予測することが可能なためである。
【００７３】
書込み不成功回数の取得は、以下のように行うことができる。メモリチップ＃０（３２０）乃至＃３（３５０）は、レスポンスを出力する際、書込み結果に加えて書込み不成功回数をさらに出力する。リクエスト制御部２５７は、レスポンス受信通知を出力する際、メモリチップ識別番号等に加えて書込み不成功回数をさらに出力する。書込み時間予測情報生成部２５８は、レスポンス受信通知に含まれる書込み不成功回数を書込み時間予測情報として書込み時間予測情報保持部２５９に保持させる。これにより、書込み不成功回数を書込み時間予測情報として書込み時間予測情報保持部２５９に保持させることができる。
【００７４】
これにより、メモリコントローラ２００における書込み時間の計測を省略することができ、メモリコントローラ２００における処理を簡略化することができる。
【００７５】
［第４の変形例］
上述の実施の形態では、計測した書込み時間を書込み時間予測情報としていた。これに対し、誤り訂正部２６１における誤りが訂正されたビット数を書込み時間予測情報としてもよい。読み出したデータに対して誤りが訂正されたビットに対応するメモリセルは、記憶素子３２１が過度に損傷していると考えられる。そのようなメモリセルを有するページに対する書込みは、ベリファイの回数および書込み不成功回数が多いと考えられ、書込み時間の代わりに誤りが訂正されたビット数により書込み時間を予測することが可能なためである。
【００７６】
誤りが訂正されたビット数の取得は、以下のように行うことができる。誤り訂正部２６１は、読み出したデータに対して誤りの訂正を行った際に、誤りが訂正されたビット数を書込み時間予測情報生成部２５８に対して出力する。書込み時間予測情報生成部２５８は、この誤りが訂正されたビット数を書込み時間予測情報として書込み時間予測情報保持部２５９に保持させる。これにより、誤りが訂正されたビット数を書込み時間予測情報として書込み時間予測情報保持部２５９に保持させることができる。
【００７７】
これにより、メモリコントローラ２００における書込み時間の計測を省略することができ、メモリコントローラ２００における処理を簡略化することができる。
【００７８】
＜２．第２の実施の形態＞
上述の実施の形態では、ページ毎に書込み時間予測情報を計測して保持していた。これに対し、本技術の第２の実施の形態では、複数のページ毎に計測して保持する。これにより、書込み時間予測情報のサイズを小さくすることができる。
【００７９】
［書込み時間予測情報］
図１４は、本技術の第２の実施の形態における書込み時間予測情報を示す図である。同図は、各メモリチップにおける書込みに要した時間を複数のページにより構成されるブロック毎に記録したものである。同図においては、各メモリチップの書込み時間予測情報を２５６個のブロック毎に保持している。ブロックのサイズとしては、例えば、４０９６ページを想定することができる。これは、図７において説明したページアドレスのうち、上位８ビットをブロックのアドレスとし、各メモリチップの記憶領域を２６５個のブロックに分割した場合と等価な構成である。このような構成にした場合、それぞれのブロックに含まれるページは、ページアドレスが連続することとなり、同じブロックに含まれるページには、同じ使用形態のデータファイルが保存される可能性が高くなる。このため、ブロックに含まれる各ページは、同等の書込み回数になることが予想され、書込み時間も近い値となる可能性が高い。したがって、ブロック単位で書込み時間予測情報を保持し、これを用いてブロックに含まれるページの書込み時間を予測することができる。
【００８０】
ブロック毎に書込み時間予測情報を管理することにより、書込み時間予測情報のサイズを小さくすることができる。例えば、図１４における書込み時間予測情報のエントリー数は、図７における書込み時間予測情報の４０９６分の１の値にすることができる。
【００８１】
なお、ブロック毎の書込み時間として、ブロックに含まれるページにおける書込み時間の平均値を使用することができる。これは、ブロックに含まれるページに対してｎ回の書込みがあった場合の平均値をＴａｖｅ（ｎ）とした場合、例えば、次式に基づいて算出することができる。
Ｔａｖｅ（ｎ）＝（Ｔａｖｅ（ｎ−１）＋Ｔｎ）／２    ・・・式１
ただし、Ｔａｖｅ（ｎ−１）は、ｎ−１回目の書込みが行われた際の書込み時間の平均値を表す。Ｔｎは、ｎ回目の書込み時間を表す。この場合、１回目の書込みの際には、Ｔａｖｅ（ｎ−１）およびＴｎに１回目の書込み時間を代入して平均値を算出する。また、例えば、次式に基づいて算出することもできる。
Ｔａｖｅ（ｎ）＝（（ｎ−１）×Ｔａｖｅ（ｎ−１）＋Ｔｎ）／ｎ    ・・・式２
この式２を利用する場合には、書込み回数ｎによる重み付けを行うため、式１を利用する場合と比べて計算量が増加し、さらにブロック毎に書込み回数ｎを保持する必要がある。しかし、より正確な書込み時間の平均値を算出することができる。
【００８２】
リクエスト選択部２５６は、メモリチップ識別番号およびブロックアドレスであるページアドレスの上位８ビットの値により、書込み時間予測情報保持部２５９に保持された書込み時間予測情報から書込み時間の予測情報を取得する。これ以外のメモリアクセス制御部２５０およびメモリコントローラ２００の構成は本技術の第１の実施の形態におけるメモリアクセス制御部２５０およびメモリコントローラ２００と同様であるため、説明を省略する。
【００８３】
このように、本技術の第２の実施の形態によれば、ブロック単位で書込み時間予測情報を保持することにより、書込み時間予測情報のサイズを小さくすることができ、メモリコントローラ２００を小型化することができる。
【００８４】
＜３．第３の実施の形態＞
上述の第１の実施の形態では、ページ毎に書込み時間予測情報を保持していた。これに対し、本技術の第３の実施の形態では、メモリモジュールに相当するメモリチップ毎に保持する。これにより、書込み時間予測情報のサイズを小さくすることができる。
【００８５】
［書込み時間予測情報］
図１５は、本技術の第３の実施の形態における書込み時間予測情報を示す図である。同図は、各メモリチップにおける書込みの際の優先順位を表したものである。また、この優先順位は、メモリチップの書込み時間の長い順に番号付けを行ったものである。メモリチップ＃０（３２０）乃至＃３（３５０）における書込み時間が既知の場合には、メモリコントローラ２００における書込み時間の計測を省略し、書込み時間予測情報として固定された優先順位を使用することができる。例えば、使用するメモリチップについて工場出荷時に書込み時間の計測を行い、これに基づく優先順位を生成して書込み時間予測情報として書込み時間予測情報保持部２５９に保持させる。リクエスト選択部２５６は、メモリチップ識別番号により、書込み時間予測情報保持部２５９に保持された書込み時間予測情報からメモリチップの優先順位を取得して、長い書込み時間が予測されるメモリチップに対する書込みリクエストを選択する。本技術の第３の実施の形態においては、書込み時間の計測を行わないため、書込み時間予測情報生成部２５８を備える必要はない。これ以外のメモリアクセス制御部２５０およびメモリコントローラ２００の構成は本技術の第１の実施の形態におけるメモリアクセス制御部２５０およびメモリコントローラ２００と同様であるため、説明を省略する。
【００８６】
このように、本技術の第３の実施の形態によれば、書込み時間予測情報としてメモリチップ（メモリモジュール）毎の固定の優先順位を使用することにより、書込み時間予測情報のサイズを小さくすることができる。また、書込み時間予測情報生成部を省略することができ、メモリコントローラ２００を小型化することができる。
【００８７】
［変形例］
上述の第３の実施の形態では、書込みリクエストの実行の際に、書込み時間の計測を行わず、固定の優先順位を書込み時間予測情報にしていた。これに対し、書込み時間の計測を行い、メモリチップ毎の平均値を算出して書込み時間予測情報にしてもよい。書込み時間予測情報のサイズを小さくすることができるとともに、メモリチップの使用に伴う書込み時間の変化に応じて書込み時間予測情報を変更することができるためである。この場合、書込み時間予測情報生成部２５８により書込み時間の計測が行われ、メモリチップ毎の平均値が算出される。次に、この平均値が書込み時間予測情報として書込み時間予測情報保持部２５９に保持される。なお、平均値の算出には、本技術の第２の実施の形態において説明した方式を用いることができる。
【００８８】
＜４．第４の実施の形態＞
上述の第１の実施の形態では、ページ毎に書込み時間予測情報を保持していた。これに対し、本技術の第４の実施の形態では、メモリモジュールを構成するメモリバンク毎に書込み時間予測情報を保持する。これにより、メモリバンクを有するメモリモジュールを使用したシステムにおいても書込み時間予測情報に基づいて、長い書込み時間が予測される書込みリクエストを優先して実行することにより書込み処理を高速化することができる。
【００８９】
［メモリの構成］
図１６は、本技術の第４の実施の形態におけるメモリ３００の構成例を示す図である。このメモリ３００は、メモリチップ＃０（３２０）乃至＃３（３５０）をメモリチップ３６０に変更した点において、図３において説明したメモリ３００と異なっている。
【００９０】
メモリチップ３６０は、メモリバンク＃０（３６１）と、メモリバンク＃１（３６２）と、メモリバンク＃２（３６３）と、メモリバンク＃３（３６４）とを備える。ここでメモリバンクとは、メモリモジュールであるメモリチップ３６０の記憶領域の構成単位である。このメモリバンクは、バンクアドレスにより指定する必要がある。このため、書込みまたは読出しリクエストには、メモリチップ識別番号に代えてバンクアドレスを付加する必要がある。また、これらのメモリバンクは、それぞれ独立したデータのアクセスが可能であり、ページを単位としてアクセスされる。
【００９１】
なお、メモリチップ（３６０）は、特許請求の範囲に記載のメモリモジュールの一例である。すなわち、本技術の第４の実施の形態においては、単一のメモリモジュールを有するメモリ３００を想定し、このメモリモジュールは４個のメモリバンクを有する1個のメモリチップにより構成されることを想定する。この場合、書込み時間予測情報保持部２５９は、メモリバンク＃０（３６１）乃至＃３（３６４）の各々についての書込み時間予測情報を保持する。書込み時間予測情報生成部２５８は、メモリバンク＃０（３６１）乃至＃３（３６４）の各々についての書込み時間予測情報を生成する。リクエストキュー＃０（２５２）乃至＃３（２５５）は、メモリバンク＃０（３６１）乃至＃３（３６４）の各々についてのリクエストを保持する。さらに、リクエスト選択部２５６は、メモリバンク＃０（３６１）乃至＃３（３６４）についての書込みリクエストのうちより長い書込み時間が予測される書込みリクエストを書込み時間予測情報に基づいて選択する。
【００９２】
これ以外の情報処理システムの構成は本技術の第１の実施の形態において説明した情報処理システムと同様であるため、説明を省略する。
【００９３】
このように、本技術の第４の実施の形態では、複数のメモリバンクを有するメモリチップ（メモリモジュール）において、より長い書込み時間が予測される書込みリクエストを書込み時間予測情報に基づいて優先して実行する。これにより、書込み時間を短縮することができる。
【００９４】
［変形例］
上述の第４の実施の形態では、メモリバンクを有するメモリチップにおいてページ毎に書込み時間予測情報を保持していた。これに対し、各メモリバンクにおける複数のページにより構成されたブロック毎に書込み時間予測情報を保持しても良い。本技術の第２の実施の形態と同様に書込み時間予測情報のサイズを小さくすることができるためである。なお、ブロック毎の書込み時間予測情報の計測は、本技術の第２の実施の形態と同様の方式を使用することができる。
【００９５】
以上のように、本技術の実施の形態では、ページ毎の書込み時間が一定でないメモリモジュールにおいて、より長い書込み時間が予測される書込みリクエストを書込み時間予測情報に基づいて優先して選択し、実行する。これより、書込み時間を短縮することができる。
【００９６】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【００９７】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【００９８】
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
【００９９】
なお、本技術は以下のような構成もとることができる。
（１）複数のメモリモジュールに対する書込み時間を予測するための書込み時間予測情報を前記複数のメモリモジュールの各々について保持する書込み時間予測情報保持部と、
前記複数のメモリモジュールの各々について書込みを要求する複数の書込みリクエストのうちより長い前記書込み時間が予測される前記書込みリクエストを前記書込み時間予測情報に基づいて優先して選択するリクエスト選択部と
を具備するメモリコントローラ。
（２）前記書込み時間予測情報を生成して前記書込み時間予測情報保持部に保持させる書込み時間予測情報生成部をさらに具備する前記（１）に記載のメモリコントローラ。
（３）前記書込み時間予測情報生成部は、前記書込み時間を前記複数のメモリモジュール毎に計測して前記書込み時間予測情報として前記書込み時間予測情報保持部に保持させる前記（２）に記載のメモリコントローラ。
（４）前記書込み時間予測情報生成部は、書込みを行った前記複数のメモリモジュールからデータの読出しを行い当該読み出したデータと前記書込みに係る書込みデータとが一致するか否かを判断するベリファイの回数を前記複数のメモリモジュールの各々について計測して前記書込み時間予測情報として前記書込み時間予測情報保持部に保持させる前記（２）に記載のメモリコントローラ。
（５）前記書込み時間予測情報生成部は、前記複数のメモリモジュールにおける書込み回数を前記複数のメモリモジュールの各々について計測して前記書込み時間予測情報として前記書込み時間予測情報保持部に保持させる前記（２）に記載のメモリコントローラ。
（６）前記複数のメモリモジュールから読み出した読出しデータの誤りの検出および訂正を行う誤り訂正部をさらに具備し、
前記書込み時間予測情報生成部は、前記訂正された前記読出しデータにおける前記誤り訂正部によって誤りが訂正されたビット数を前記複数のメモリモジュールの各々について計測して前記書込み時間予測情報として前記書込み時間予測情報保持部に保持させる前記（２）に記載のメモリコントローラ。
（７）前記書込み時間予測情報生成部は、前記複数のメモリモジュールにおける書込み不成功回数を前記複数のメモリモジュールの各々について計測して前記書込み時間予測情報として前記書込み時間予測情報保持部に保持させる前記（２）に記載のメモリコントローラ。
（８）前記複数のメモリモジュール毎に設けられて前記複数のメモリモジュールの各々についての前記書込みリクエストを保持して先入れ先出しする複数のリクエストキューをさらに具備し、
前記リクエスト選択部は、前記複数のリクエストキューの先頭に保持された前記書込みリクエストに対して前記書込み時間予測情報に基づく前記選択を行う
前記（１）から（７）のいずれかに記載のメモリコントローラ。
（９）前記複数のメモリモジュールは、データを記憶する記憶領域がページサイズにより分割されたページを単位としてアクセスされ、
前記書込み時間予測情報保持部は、前記ページ毎に前記書込み時間予測情報を保持する
前記（１）から（８）のいずれかに記載のメモリコントローラ。
（１０）前記複数のメモリモジュールは、データを記憶する記憶領域がページサイズにより分割されたページを単位としてアクセスされ、
前記書込み時間予測情報保持部は、前記複数のページからなるブロック毎に前記書込み時間予測情報を保持する
前記（１）から（８）のいずれかに記載のメモリコントローラ。
（１１）データを記憶する記憶領域が複数のメモリバンクにより構成されたメモリモジュールにおける前記複数のメモリバンクに対する書込み時間を予測するための書込み時間予測情報を前記複数のメモリバンクの各々について保持する書込み時間予測情報保持部と、
前記複数のメモリバンクの各々について書込みを要求する複数の書込みリクエストのうちより長い前記書込み時間が予測される前記書込みリクエストを前記書込み時間予測情報に基づいて優先して選択するリクエスト選択部と
を具備するメモリコントローラ。
（１２）複数のメモリモジュールと、
前記複数のメモリモジュールに対する書込み時間を予測するための書込み時間予測情報を前記複数のメモリモジュールの各々について保持する書込み時間予測情報保持部と、
前記複数のメモリモジュールの各々について書込みを要求する複数の書込みリクエストのうちより長い前記書込み時間が予測される前記書込みリクエストを前記書込み時間予測情報に基づいて優先して選択するリクエスト選択部と
を具備する記憶装置。
（１３）複数のメモリモジュールと、
前記複数のメモリモジュールに対する書込み時間を予測するための書込み時間予測情報を前記複数のメモリモジュールの各々について保持する書込み時間予測情報保持部と、
前記複数のメモリモジュールの各々について書込みを要求する複数の書込みリクエストのうちより長い前記書込み時間が予測される前記書込みリクエストを前記書込み時間予測情報に基づいて優先して選択するリクエスト選択部と
を備える記憶装置と、
前記記憶装置にアクセスするホストコンピュータと
を具備する情報処理システム。
（１４）複数のメモリモジュールの各々について書込みを要求する複数の書込みリクエストのうちより長い書込み時間が予測される前記書込みリクエストを前記書込み時間を予測するための書込み時間予測情報に基づいて優先して選択するリクエスト選択手順を具備するメモリの制御方法。
【符号の説明】
【０１００】
１００  ホストコンピュータ
２００  メモリコントローラ
２１０  ホストインターフェース
２２０  プロセッサ
２３０  ＲＯＭ
２４０  ＲＡＭ
２５０  メモリアクセス制御部
２５１  コマンド変換部
２５６  リクエスト選択部
２５７  リクエスト制御部
２５８  書込み時間予測情報生成部
２５９  書込み時間予測情報保持部
２６１  誤り訂正部
２７１  制御部
２７２〜２７５  ページアドレス保持部
２７６〜２７９  タイマ
２９０  メモリインターフェース
３００  メモリ
３２０、３３０、３４０、３５０、３６０、３７１、３８１、３８２  メモリチップ
３７０、３８０  メモリモジュール
３２１  記憶素子
３２２  ＭＯＳＦＥＴ
３２３  メモリセル
３６１〜３６４  メモリバンク
【図１】
2016117190.tif 000003
【図２】
2016117190.tif 000004
【図３】
2016117190.tif 000005
【図４】
2016117190.tif 000006
【図５】
2016117190.tif 000007
【図６】
2016117190.tif 000008
【図７】
2016117190.tif 000009
【図８】
2016117190.tif 000010
【図９】
2016117190.tif 000011
【図１０】
2016117190.tif 000012
【図１１】
2016117190.tif 000013
【図１２】
2016117190.tif 000014
【図１３】
2016117190.tif 000015
【図１４】
2016117190.tif 000016
【図１５】
2016117190.tif 000017
【図１６】
2016117190.tif 000018
【国際調査報告】
2016117190.tif 000019
2016117190.tif 000020