(57)【特許請求の範囲】
【請求項１】
メモリアレイの読出し対象アドレスに記憶されているデータを読出しデータとして前記メモリアレイから読み出して読出しデータ保持部に保持させるメモリ読出し部と、
前記読出しデータ保持部に保持されている前記読出しデータを要求元に出力する読出しデータ出力部と、
前記メモリアレイに対する書込みデータおよび前記読出しデータに基づいて前記メモリアレイの書込み対象アドレスに書込みを行うメモリ書込み部と、
前記メモリアレイからの読出しおよび書込みを同一アドレスに連続して行う旨のリードライトコマンドが発行された際には、前記リードライトコマンドの指定アドレスを前記読出し対象アドレスとして前記メモリ読出し部および前記読出しデータ出力部を動作させるよう制御し、前記リードライトコマンドの指定アドレスを前記書込み対象アドレスとして前記メモリ書込み部を動作させるよう制御する制御部と
を具備する記憶装置。
【請求項２】
メモリアレイの読出し対象アドレスに記憶されているデータを読出しデータとして前記メモリアレイから読み出して読出しデータ保持部に保持させるメモリ読出し部と、
前記読出しデータ保持部に保持されている前記読出しデータを要求元に出力する読出しデータ出力部と、
前記メモリアレイに対する書込みデータおよび前記読出しデータに基づいて前記メモリアレイの書込み対象アドレスに書込みを行うメモリ書込み部と、
前記メモリアレイへのライトコマンドと前記メモリアレイにアクセスすることなく前記読出しデータ保持部に保持されている前記読出しデータを要求元に出力する旨のデータ出力コマンドとの組合せが発行された際には、前記ライトコマンドの指定アドレスを前記読出し対象アドレスとして前記メモリ読出し部を動作させるよう制御し、前記ライトコマンドの指定アドレスを前記書込み対象アドレスとして前記メモリ書込み部を動作させるよう制御し、前記データ出力コマンドに従って前記読出しデータ出力部を動作させるよう制御する制御部と
を具備する記憶装置。
【請求項３】
メモリアレイの読出し対象アドレスに記憶されているデータを読出しデータとして前記メモリアレイから読み出して読出しデータ保持部に保持させるメモリ読出し部と、
前記読出しデータ保持部に保持されている前記読出しデータを要求元に出力する読出しデータ出力部と、
前記メモリアレイに対する書込みデータおよび前記読出しデータに基づいて前記メモリアレイの書込み対象アドレスに書込みを行うメモリ書込み部と、
前記メモリアレイからのリードコマンドと前記読出しデータ保持部に新たなデータを保持させずに書込みを行う旨のブラインドライトコマンドとの組合せが発行された際には、前記リードコマンドの指定アドレスを前記読出し対象アドレスとして前記メモリ読出し部および前記読出しデータ出力部を動作させるよう制御し、前記ブラインドライトコマンドの指定アドレスを前記書込み対象アドレスとして前記メモリ書込み部を動作させるよう制御する制御部と
を具備する記憶装置。
【請求項４】
前記メモリアレイのバンク毎に直前に読み出したアドレスを保持して、前記書込み対象アドレスのバンクに対応して保持されるアドレスと前記書込み対象アドレスとを比較することにより、前記書込み対象アドレスと前記読出し対象アドレスとの一致を検出するアドレス一致検出部をさらに具備し、
前記制御部は、前記書込み対象アドレスと前記読出し対象アドレスとが一致する場合にのみ前記メモリ書込み部を動作させるよう制御する
請求項３記載の記憶装置。
【請求項５】
記憶装置と、前記記憶装置に対するアクセス要求を制御するメモリコントローラと、前記記憶装置に対するアクセスコマンドを前記メモリコントローラに発行するホストコンピュータとを具備する情報処理システムであって、
前記記憶装置は、メモリアレイの読出し対象アドレスに記憶されているデータを読出しデータとして前記メモリアレイから読み出して読出しデータ保持部に保持させるメモリ読出し部と、前記読出しデータ保持部に保持されている前記読出しデータを要求元に出力する読出しデータ出力部と、前記メモリアレイに対する書込みデータおよび前記読出しデータに基づいて前記メモリアレイの書込み対象アドレスに書込みを行うメモリ書込み部と、前記メモリアレイからの読出しおよび書込みを同一アドレスに連続して行う旨のリードライトコマンドが発行された際には、前記リードライトコマンドの指定アドレスを前記読出し対象アドレスとして前記メモリ読出し部および前記読出しデータ出力部を動作させるよう制御し、前記リードライトコマンドの指定アドレスを前記書込み対象アドレスとして前記メモリ書込み部を動作させるよう制御する制御部とを備える
情報処理システム。
【請求項６】
メモリアレイからの読出しおよび書込みを同一アドレスに連続して行う旨のリードライトコマンドが発行された際に、
前記リードライトコマンドの指定アドレスを読出し対象アドレスとしてメモリアレイの前記読出し対象アドレスに記憶されているデータを読出しデータとして前記メモリアレイから読み出して読出しデータ保持部に保持させるメモリ読出し手順と、
前記読出しデータ保持部に保持されている前記読出しデータを要求元に出力する読出しデータ出力手順と、
前記リードライトコマンドの指定アドレスを書込み対象アドレスとして前記メモリアレイに対する書込みデータおよび前記読出しデータに基づいて前記メモリアレイの前記書込み対象アドレスに書込みを行うメモリ書込み手順と
を具備する記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、記憶制御装置に関する。詳しくは、記憶領域に対するアクセスを効率化させる記憶制御装置、記憶装置、および、その記憶制御方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
【背景技術】
【０００２】
不揮発メモリの一種である抵抗変化メモリにおいては、電流パルスあるいは電圧パルスを印加することによってメモリセルの抵抗値を変化させて、情報を記録する。低抵抗状態にあるセルを高抵抗状態に変化させるパルスと、高抵抗状態にあるセルを低抵抗状態に変化させるパルスとでは、その電圧または電流の極性や大きさが異なる。既に低抵抗状態にあるセルへ、低抵抗状態に変化させるパルスを更に印加すると、セルの特性が劣化するおそれがある。高抵抗状態にあるセルにおいても同様である。したがって、このようなメモリセルに書込みを行う際には、書込みパルスを印加する前に現在のセルの状態を読み出して、現在のセルの状態と書き込もうとする値とが一致している場合には、そのセルにはパルス印加を行わないような制御を行うことが望ましい。このような制御を行うことにより、セルの寿命を延ばすことができ、また、不要なパルス印加による消費電力を削減することができる。例えば、抵抗変化を利用した相変化メモリを想定して、メモリセルへの書込みの際に、現在の値を読み出して、現在の値と書き込もうとする値とが異なるビットにのみ書込みパルスを印加する半導体記憶装置が提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２４４６０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の従来技術では、メモリセルへの書込みの際に、一旦、現在の値を読み出すことにより、不要なパルス印加を回避している。しかしながら、データを読み出した直後に同じアドレスに新しいデータを書き込む状況を想定すると、同じデータを続けて２回読み出すことになり、無駄な動作を行っていることになる。このような状況は、ウェアレベリングやデータスワップなどにおいて生じるものであり、実用上、高速な処理が要求される。【０００５】
本技術はこのような状況に鑑みて生み出されたものであり、同一アドレスに対する読出しおよび書込みが続く際に、記憶領域に対するアクセスを効率化させることを目的とする。
【課題を解決するための手段】
【０００６】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、メモリアレイの所定のアドレスに記憶されているデータを読出しデータとして上記メモリアレイから読み出して読出しデータ保持部に保持させるメモリ読出し部と、上記読出しデータ保持部に保持されている上記読出しデータを要求元に出力する読出しデータ出力部と、上記メモリアレイに対する書込みデータおよび上記読出しデータに基づいて上記メモリアレイの書込み対象アドレスに書込みを行うメモリ書込み部と、上記書込み対象アドレスと上記所定のアドレスとが一致する場合にのみ上記メモリ書込み部を動作させるよう制御する制御部とを具備する記憶装置およびその記憶制御方法である。これにより、書込みを行う際のプレリード処理を不要にするという作用をもたらす。【０００７】
また、この第１の側面において、上記制御部は、上記メモリアレイからの読出しおよび書込みを同一アドレスに連続して行う旨のコマンドが発行された際に上記書込み対象アドレスと上記所定のアドレスとが一致すると判断するようにしてもよい。【０００８】
また、この第１の側面において、上記制御部は、上記読出しデータ保持部に保持されている上記読出しデータを要求元に出力する旨のコマンドが発行された際に上記書込み対象アドレスと上記所定のアドレスとが一致すると判断するようにしてもよい。【０００９】
また、この第１の側面において、上記制御部は、上記書込み対象アドレスについて上記読出しデータ保持部に新たなデータを保持させずに書込みを行う旨のコマンドが発行された際に上記書込み対象アドレスと上記所定のアドレスとが一致すると判断するようにしてもよい。【００１０】
また、この第１の側面において、上記制御部は、上記書込み対象アドレスと上記所定のアドレスとの上記一致を検出するアドレス一致検出部を備えて、上記書込み対象アドレスと上記所定のアドレスとが一致するか否かを判断するようにしてもよい。【００１１】
また、本技術の第２の側面は、記憶装置と、上記記憶装置に対するアクセス要求を制御するメモリコントローラと、上記記憶装置に対するアクセスコマンドを上記メモリコントローラに発行するホストコンピュータとを具備する情報処理システムであって、上記記憶装置は、メモリアレイの所定のアドレスに記憶されているデータを読出しデータとして上記メモリアレイから読み出して読出しデータ保持部に保持させるメモリ読出し部と、上記読出しデータ保持部に保持されている上記読出しデータを要求元に出力する読出しデータ出力部と、上記メモリアレイに対する書込みデータおよび上記読出しデータに基づいて上記メモリアレイの書込み対象アドレスに書込みを行うメモリ書込み部と、上記書込み対象アドレスと上記所定のアドレスとが一致する場合にのみ上記メモリ書込み部を動作させるよう制御する制御部とを備える情報処理システムである。これにより、ホストコンピュータからの要求に従って書込みを行う際のプレリード処理を不要にするという作用をもたらす。
【発明の効果】
【００１２】
本技術によれば、同一アドレスに対する読出しおよび書込みが続く際に、記憶領域に対するアクセスを効率化させることができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１３】
【図１】本技術の実施の形態におけるメモリシステムの構成例を示す図である。
【図２】本技術の実施の形態におけるＮＶＭアレイ３１１を構成する不揮発メモリの一例としての抵抗変化型メモリの抵抗状態を示す図である。
【図３】本技術の実施の形態における比較器３１４の真理値表の一例を示す図である。
【図４】本技術の実施の形態におけるＮＶＭアレイ３１１のセンス動作の一例を示す流れ図である。
【図５】本技術の実施の形態におけるＮＶＭアレイ３１１のプログラム動作の一例を示す流れ図である。
【図６】本技術の実施の形態における記憶装置３００のアドレス空間の一例を示す図である。
【図７】本技術の実施の形態における記憶装置３００のリードコマンドの処理手順例を示す流れ図である。
【図８】本技術の実施の形態における記憶装置３００のリードコマンドの処理手順例を示すタイミング図である。
【図９】本技術の実施の形態における記憶装置３００のライトコマンドの処理手順例を示す流れ図である。
【図１０】本技術の実施の形態における記憶装置３００のライトコマンドの処理手順例を示すタイミング図である。
【図１１】本技術の第１の実施の形態における記憶装置３００のＲＷコマンドの処理手順例を示す流れ図である。
【図１２】本技術の第１の実施の形態における記憶装置３００のＲＷコマンドの処理手順例を示すタイミング図である。
【図１３】本技術の第１の実施の形態におけるメモリコントローラ２００のコマンド受信処理手順例を示す流れ図である。
【図１４】本技術の第１の実施の形態におけるメモリコントローラ２００のコマンド送出手順例を示す流れ図である。
【図１５】本技術の第２の実施の形態における記憶装置３００のＤＡＴＡＯＵＴコマンドの処理手順例を示す流れ図である。
【図１６】本技術の第２の実施の形態における記憶装置３００のＤＡＴＡＯＵＴコマンドの処理手順例を示すタイミング図である。
【図１７】本技術の第３の実施の形態における記憶装置３００のＢＷコマンドの処理手順例を示す流れ図である。
【図１８】本技術の第３の実施の形態における記憶装置３００のＢＷコマンド単体の処理手順例を示すタイミング図である。
【図１９】本技術の第３の実施の形態における記憶装置３００のＢＷコマンドをリードコマンドの直後に実行する際の処理手順例を示すタイミング図である。
【図２０】本技術の第４の実施の形態におけるリードアドレス検出レジスタ３２７の一構成例を示す図である。
【図２１】本技術の第４の実施の形態における記憶装置３００のＩＦ３２０による処理手順例を示す流れ図である。
【図２２】本技術の第４の実施の形態における高速ライトの処理手順例を示すタイミング図である。
【図２３】本技術の第６の実施の形態におけるメモリコントローラ２００による処理手順例を示す流れ図である。
【図２４】本技術の第７の実施の形態におけるメモリコントローラ２００による処理手順例を示す流れ図である。
【発明を実施するための形態】
【００１４】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（ＲＷコマンドを利用する例）
２．第２の実施の形態（ＤＡＴＡＯＵＴコマンドを利用する例）
３．第３の実施の形態（ＢＷコマンドを利用する例）
４．第４の実施の形態（メモリ装置による検出を契機とする例）
５．第５の実施の形態（ホストコンピュータによるコマンド発行の例）
６．第６の実施の形態（データスワップの適用例）
７．第７の実施の形態（リフレッシュの適用例）
【００１５】
＜１．第１の実施の形態＞
［メモリシステムの構成］
図１は、本技術の実施の形態におけるメモリシステムの構成例を示す図である。なお、この図および以降の図では各実施の形態の説明に必要な回路構成と信号線のみを記しているが、メモリシステムとして必要なその他の回路および信号線も備えるものとする。
【００１６】
このメモリシステムは、ホストコンピュータ１００と、メモリコントローラ２００と、１つ以上の記憶装置３００とを備える。記憶装置３００は、インターフェース（ＩＦ）３２０と、１つ以上のバンク３１０とから構成される。
【００１７】
ホストコンピュータ１００は、記憶装置３００に対するデータのリード処理やライト処理等を要求するコマンドを発行するものである。このホストコンピュータ１００は、Ｈｏｓｔ＿ＣｍｄＡｄｄｒ信号線１０９により、メモリコントローラ２００の動作を指示するコマンドと、コマンドの操作対象を示すアドレスとを連続して送信する。また、このホストコンピュータ１００は、Ｈｏｓｔ＿Ｄａｔａ信号線１０８により、メモリコントローラ２００との間のデータの送受信を行う。
【００１８】
メモリコントローラ２００は、ホストコンピュータ１００と通信してコマンドを受信し、記憶装置３００に対するアクセスを行うものである。このメモリコントローラ２００は、Ｈｏｓｔ＿ＣｍｄＡｄｄｒ信号線１０９によって受信したコマンドおよびアドレスを一時的に保持するコマンドアドレスレジスタ２１０を備える。また、このメモリコントローラ２００は、受信したデータを一時的に保持するデータバッファ２２０を備える。また、このメモリコントローラ２００は、Ｍｅｍｏｒｙ＿Ｓｔａｔｕｓ信号線２０７によって受信した記憶装置３００内部の状態を保持するステータスレジスタ２３０を備える。また、このメモリコントローラ２００は、データのエラー検出と訂正を行うＥＣＣ回路２４０を備える。
【００１９】
このメモリコントローラ２００は、ＩＦ＿ＣｍｄＡｄｄｒ信号線２０９により、記憶装置３００の様々な動作を指示するコマンドと、操作対象のアドレスとを記憶装置３００内のＩＦ３２０に送信する。そして、ＩＦ＿Ｄａｔａ信号線２０８を介してＩＦ３２０との間でデータを送受信する。また、このメモリコントローラ２００は、Ｍｅｍｏｒｙ＿Ｓｔａｔｕｓ信号線２０７により、記憶装置３００内部の状態をＩＦ３２０から受信して、ステータスレジスタ２３０に保持する。
【００２０】
バンク３１０の各々は、ＮＶＭ（Non-Volatile Memory：不揮発メモリ）アレイ３１１と、リードラッチ３１２と、ライトラッチ３１３と、比較器３１４とを備える。ＮＶＭアレイ３１１は、データを記憶する記憶領域である。このＮＶＭアレイ３１１は、２次元または３次元格子上に並べられた多数の不揮発メモリセルと、それらメモリセルを制御する周辺回路とからなる構造を有する。リードラッチ３１２およびライトラッチ３１３は、ＮＶＭアレイ３１１へのアクセスに際してデータを一時的に保持するための回路である。これらリードラッチ３１２およびライトラッチ３１３は、ラッチ回路、フリップフロップ回路、または、ＳＲＡＭなどによって実現してもよい。比較器３１４は、論理ゲートからなり、リードラッチ３１２およびライトラッチ３１３の内容を比較して、ＮＶＭアレイ３１１がパルス印加を行う際の参照信号（Ｄａｔａ＿Ｓｅｔ信号線３１７およびＤａｔａ＿Ｒｅｓｅｔ信号線３１８）を生成するための回路である。
【００２１】
なお、この実施の形態では、リードラッチ３１２、ライトラッチ３１３および比較器３１４が記憶装置３００のバンク３１０に設けられることを想定したが、これらはメモリコントローラ２００に設けるようにしてもよい。
【００２２】
また、ＩＦ３２０は、特許請求の範囲に記載の制御部の一例であることを想定して説明したが、制御部の機能をメモリコントローラ２００に設けるようにしてもよい。
【００２３】
［ＮＶＭアレイの特性］
図２は、本技術の実施の形態におけるＮＶＭアレイ３１１を構成する不揮発メモリの一例としての抵抗変化型メモリの抵抗状態を示す図である。
【００２４】
抵抗変化型メモリのメモリセルは、セット動作によりＬＲＳ（低抵抗状態）に遷移し、リセット動作によりＨＲＳ（高抵抗状態）に遷移する。低抵抗状態と高抵抗状態との間で抵抗状態を可逆的に変化させることにより、１つのメモリセルによって１ビットを記憶することが可能な不揮発メモリが実現される。この実施の形態では、一例として、ＨＲＳを「０」が記録された状態、ＬＲＳを「１」が記録された状態と定義する。
【００２５】
セット動作は、１つのメモリセルの両端にセットパルスと呼ばれる電圧（または電流）パルスを印加することによって実現される。リセット動作は、１つのメモリセルの両端にリセットパルスと呼ばれる電圧（または電流）パルスを印加することによって実現される。
【００２６】
［比較器］
図３は、本技術の実施の形態における比較器３１４の真理値表の一例を示す図である。比較器３１４は、書き込もうとする値（Ｃｏｍｐａｒｅ＿Ｗ）が、既存の値（Ｃｏｍｐａｒｅ＿Ｒ）と同じ場合には、Ｄａｔａ＿Ｓｅｔ信号線３１７およびＤａｔａ＿Ｒｅｓｅｔ信号線３１８のいずれにも「０」を出力する。一方、Ｃｏｍｐａｒｅ＿ＷがＣｏｍｐａｒｅ＿Ｒと異なっている場合、Ｃｏｍｐａｒｅ＿Ｗ＝１ならＤａｔａ＿Ｓｅｔ信号線３１７のみを「１」とし、Ｃｏｍｐａｒｅ＿Ｗ＝０ならＤａｔａ＿Ｒｅｓｅｔ信号線３１８のみを「１」とする。
【００２７】
なお、同図では比較器３１４の入出力が１ビットである場合を想定したが、比較器３１４の入出力は多ビットとすることもできる。その場合、入出力の各ビットに対して並列に、上述の真理値表に基づいた演算を行う。
【００２８】
［ＮＶＭアレイの動作］
本技術の実施の形態におけるＮＶＭアレイ３１１は、ＩＦ３２０からのＡｒｒａｙ＿Ｃｏｎｔｒｏｌ信号線３２２の値に応じて、Ａｒｒａｙ＿Ａｄｄｒｅｓｓ信号線３２１によって指定されるメモリセルの操作を行う。
【００２９】
ＮＶＭアレイ３１１は、メモリセルをセットまたはリセットするために必要なデータ入力バス（Ｄａｔａ＿Ｓｅｔ信号線３１７およびＤａｔａ＿Ｒｅｓｅｔ信号線３１８）を備える。また、ＮＶＭアレイ３１１は、メモリセルから読み出したデータを出力するバス（Ｒｅａｄ＿Ｌａｔｃｈ＿Ｉｎ信号線３１９）を備える。また、ＮＶＭアレイ３１１は、Ａｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６により、自身の状態をＩＦ３２０に伝達する。
【００３０】
ＮＶＭアレイ３１１は、Ａｒｒａｙ＿Ｃｏｎｔｒｏｌ信号線３２２の信号として「センス（Sense）」および「プログラム（Program）」を認識し、それ以外の信号が入力されても何もしない。
【００３１】
Ａｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６が「レディ（Ready）」を示すとき、ＩＦ３２０はＡｒｒａｙ＿Ｃｏｎｔｒｏｌ信号線３２２の信号として「センス」または「プログラム」を出力する。これにより、ＮＶＭアレイ３１１に新たなセンス動作またはプログラム動作を開始させる。
【００３２】
Ａｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６が「プログラム中（Programming）」または「センス中（Sensing）」を示すとき、ＩＦ３２０からＡｒｒａｙ＿Ｃｏｎｔｒｏｌ信号線３２２に「センス」または「プログラム」を出力することは禁止される。
【００３３】
なお、Ｒｅａｄ＿Ｌａｔｃｈ＿Ｉｎ信号線３１９は、特許請求の範囲に記載のメモリ読出し部の一例である。
【００３４】
図４は、本技術の実施の形態におけるＮＶＭアレイ３１１のセンス動作の一例を示す流れ図である。このセンス動作は、ＩＦ３２０からのＡｒｒａｙ＿Ｃｏｎｔｒｏｌ信号線３２２に「センス」が出力されることにより開始する。
【００３５】
まず、ＮＶＭアレイ３１１は、Ａｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６を「センス中」にする（ステップＳ９１１）。次に、Ａｒｒａｙ＿Ａｄｄｒｅｓｓ信号線３２１に出力されるアドレス値（図の例では「０」）を参照し、当該アドレスのメモリセルの抵抗値を測定して、リード閾値との比較によって、その論理値を判定する（ステップＳ９１２）。このようにして読み出されたデータは、Ｒｅａｄ＿Ｌａｔｃｈ＿Ｉｎ信号線３１９に出力される（ステップＳ９１３）。
【００３６】
ＮＶＭアレイ３１１がＡｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６を「レディ」にセットして、センス動作は完了する（ステップＳ９１４）。
【００３７】
図５は、本技術の実施の形態におけるＮＶＭアレイ３１１のプログラム動作の一例を示す流れ図である。このプログラム動作は、ＩＦ３２０からのＡｒｒａｙ＿Ｃｏｎｔｒｏｌ信号として「プログラム」が出力されることにより開始する。例として、操作対象のアドレス(Ａｒｒａｙ＿Ａｄｄｒｅｓｓ)は「０」とし、アドレス＃０に既に書き込まれている値は「００１１」とする。また、Ｄａｔａ＿Ｓｅｔ信号線３１７には「０１００」が、Ｄａｔａ＿Ｒｅｓｅｔ信号線３１８には「００１０」がそれぞれセットされているものとする。
【００３８】
まず、ＮＶＭアレイ３１１は、Ａｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６を「プログラム中」にする（ステップＳ９２１）。次に、Ｄａｔａ＿Ｓｅｔ信号線３１７を参照して、アドレス＃０のビット列のうち、Ｄａｔａ＿Ｓｅｔ信号線３１７の値によって示されたビットのみを選択して、セットパルスを印加する（ステップＳ９２２）。この例ではＤａｔａ＿Ｓｅｔ信号線３１７が「０１００」であるため、上位から２つめのビットのみが選択され、アドレス＃０は「００１１」から「０１１１」に書き換えられる。続いて、パルス印加を行ったビットの抵抗測定を行い、「１」が読み出されることの確認が行われる。セットパルスによる抵抗変化が不完全であり、「１」が読み出されなかった場合には（ステップＳ９２３：Ｎｏ）、再度セットパルスの印加が行われる。
【００３９】
その後、同様に、Ｄａｔａ＿Ｒｅｓｅｔ信号線３１８を参照して、アドレス＃０のビット列のうちＤａｔａ＿Ｒｅｓｅｔ信号線３１８によって示されたビットのみを選択して、リセットパルスを印加される（ステップＳ９２４）。そして、正しく「０」が読み出されることの確認が行われる。「０」が読み出されなかった場合には（ステップＳ９２４：Ｎｏ）、再度リセットパルスの印加が行われる。この例ではＤａｔａ＿Ｒｅｓｅｔ信号線３１８が「００１０」であるため、上位から３つめのビットのみが選択され、アドレス＃０は「０１１１」から「０１０１」に書換えられる。
【００４０】
ＮＶＭアレイ３１１がＡｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６を「レディ」にセットして、プログラム動作は完了する（ステップＳ９２６）。
【００４１】
［アドレス空間］
図６は、本技術の実施の形態における記憶装置３００のアドレス空間の一例を示す図である。この実施の形態におけるＩＦ＿ＣｍｄＡｄｄｒ信号線２０９の示すアドレスは、バンク番号と、バンク内のＮＶＭアレイ３１１を最小アクセス単位ごとに区切りその個々に対して一意に割当てられた番号とを含む。最小アクセス単位は、例えば１Ｋバイトである。
【００４２】
アドレスは全部１９ビットであり、上位３ビットがバンク番号、下位１６ビットがバンク内のアドレスを示す。１つの記憶装置３００に８（２の３乗）個のバンクを有し、１つのバンクに６５５３６（２の１６乗）個のアドレスを有する。このとき、１つの記憶装置３００あたりの記録容量は、８×６５５３６×１Ｋバイト＝５１２Ｍバイトとなる。
【００４３】
［コマンド］
メモリコントローラ２００による記憶装置３００へのアクセスは、リードコマンド、ライトコマンド、および、ＲＷコマンドの３つのコマンドの組み合わせによって実現される。各々の動作を以下に示す。なお、ＲＷコマンドは、特許請求の範囲に記載のメモリアレイからの読出しおよび書込みを同一アドレスに連続して行う旨のコマンドの一例である。
【００４４】
図７は、本技術の実施の形態における記憶装置３００のリードコマンドの処理手順例を示す流れ図である。また、図８は、本技術の実施の形態における記憶装置３００のリードコマンドの処理手順例を示すタイミング図である。ここでは例として、ＩＦ＿ＣｍｄＡｄｄｒ信号線２０９に指定されるアドレスが、バンク＃０内のアドレス＃０を指している場合を想定する。
【００４５】
メモリコントローラ２００が、リードコマンドおよびアドレス＃０（図では「Ｒ＿Ａ０」と表す）をＩＦ＿ＣｍｄＡｄｄｒ信号線２０９に出力すると、リードコマンドの処理が開始する。まず、ＩＦ３２０は、バンク＃０のＡｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６を参照し、その値が「レディ」になるまで待機する（ステップＳ９３１、Ｓ９３２）。「レディ」になると（ステップＳ９３１：Ｙｅｓ）、ＩＦ３２０は、バンク＃０のＡｒｒａｙ＿Ａｄｄｒｅｓｓ信号線３２１に「０」を、Ａｒｒａｙ＿Ｃｏｎｔｒｏｌ信号線３２２に「センス」を出力する（図では「Ｓ」と表す）（ステップＳ９３３）。これにより、ＮＶＭアレイ３１１がセンス動作を開始するとともに、Ａｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６は「センス中」に遷移する。
【００４６】
一定時間経過後に、ＮＶＭアレイ３１１から読み出されたデータがＲｅａｄ＿Ｌａｔｃｈ＿Ｉｎ信号線３１９に出力され、リードラッチ３１２に蓄積される。Ｒｅａｄ＿Ｌａｔｃｈ＿Ｉｎ信号線３１９へのデータ出力が完了すると、Ａｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６は「レディ」に遷移する。
【００４７】
ＩＦ３２０は、Ａｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６が「レディ」になるまで待機する（ステップＳ９３４、Ｓ９３５）。「レディ」になると（ステップＳ９３４：Ｙｅｓ）、Ｌａｔｃｈ＿Ｃｏｎｔｒｏｌ信号線３２３に制御信号「Ｒ」を出力して、リードラッチ３１２に蓄積された読出しデータを、Ｒｅａｄ＿Ｌａｔｃｈ＿Ｏｕｔ信号線３２４を介して読み出す。そして、ＩＦ３２０は、この読み出したデータを、ＩＦ＿Ｄａｔａ信号線２０８を介してメモリコントローラ２００に出力する（ステップＳ９３６）。
【００４８】
なお、Ｒｅａｄ＿Ｌａｔｃｈ＿Ｏｕｔ信号線３２４は、特許請求の範囲に記載の読出しデータ出力部の一例である。
【００４９】
図９は、本技術の実施の形態における記憶装置３００のライトコマンドの処理手順例を示す流れ図である。また、図１０は、本技術の実施の形態における記憶装置３００のライトコマンドの処理手順例を示すタイミング図である。ここでは例として、ＩＦ＿ＣｍｄＡｄｄｒ信号線２０９において指定されるアドレスが、バンク＃０内のアドレス＃０を指している場合を想定する。
【００５０】
メモリコントローラ２００が、ライトコマンドとアドレス＃０（図では「Ｗ＿Ａ０」と表す）をＩＦ＿ＣｍｄＡｄｄｒ信号線２０９に出力すると、ライトコマンドの処理が開始する。メモリコントローラ２００は、ライトコマンドの発行とともに、書込みデータ（図では「Ｗ＿Ｄａｔａ」と表す）を、ＩＦ＿Ｄａｔａ信号線２０８に出力する。ＩＦ３２０は、受け取った書込みデータを、バンク＃０のＷｒｉｔｅ＿Ｌａｔｃｈ＿Ｉｎ信号線３２５に順次出力する（ステップＳ９４１）。
【００５１】
書込みデータの入力開始と同時に、ＩＦ３２０はバンク＃０のＡｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６を参照し、その値が「レディ」となるのを待つ（ステップＳ９４２、Ｓ９４３）。「レディ」になると（ステップＳ９４２：Ｙｅｓ）、ＩＦ３２０は、バンク＃０のＡｒｒａｙ＿Ａｄｄｒｅｓｓ信号線３２１に「０」を、Ａｒｒａｙ＿Ｃｏｎｔｒｏｌ信号線３２２に「センス」を出力する（ステップＳ９４４）。これにより、ＮＶＭアレイ３１１がセンス動作を開始するとともに、Ａｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６は「センス中」に遷移する。
【００５２】
一定時間経過後に、Ａｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６は「レディ」に遷移し、その時点で、ＮＶＭアレイ３１１から読み出したデータのリードラッチ３１２への入力が完了している。ＩＦ３２０は、Ａｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６が「レディ」になるまで待機する（ステップＳ９４５、Ｓ９４６）。「レディ」になると（ステップＳ９４５：Ｙｅｓ）、ＩＦ３２０は、Ｌａｔｃｈ＿Ｃｏｎｔｒｏｌ信号線３２３に制御信号「Ｃ」を送信することにより、リードラッチ３１２およびライトラッチ３１３に蓄積されたデータを、比較器３１４に出力するよう命令する。これにより、リードラッチ３１２からはＣｏｍｐａｒｅ＿Ｒ信号線３１５を介してセンス動作によって得た読出しデータが、ライトラッチ３１３からはＣｏｍｐａｒｅ＿Ｗ信号線３１６を介して書込みデータが、それぞれ出力される（ステップＳ９４７）。Ｃｏｍｐａｒｅ＿Ｒ信号線３１５とＣｏｍｐａｒｅ＿Ｗ信号線３１６は、比較器３１４による演算を経て、Ｄａｔａ＿Ｓｅｔ信号線３１７およびＤａｔａ＿Ｒｅｓｅｔ信号線３１８に変換されて、ＮＶＭアレイ３１１に入力される。
【００５３】
ＩＦ３２０は、続いて、バンク＃０のＡｒｒａｙ＿Ｃｏｎｔｒｏｌ信号線３２２に「プログラム」を出力する（図では「Ｐ」と表す）（ステップＳ９４８）。これにより、ＮＶＭアレイ３１１がプログラム動作を開始するとともに、Ａｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６は「プログラム中」に遷移し、プログラム動作の完了とともに「レディ」に戻る。ＩＦ３２０は、Ａｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６が「レディ」になるまで待機する（ステップＳ９５１、Ｓ９５２）。「レディ」となったことをＩＦ３２０が確認すると（ステップＳ９５１：Ｙｅｓ）、ライトコマンドは完了する。
【００５４】
図１１は、本技術の第１の実施の形態における記憶装置３００のＲＷコマンドの処理手順例を示す流れ図である。また、図１２は、本技術の第１の実施の形態における記憶装置３００のＲＷコマンドの処理手順例を示すタイミング図である。ここでは例として、ＩＦ＿ＣｍｄＡｄｄｒ信号線２０９において指定されるアドレスが、バンク＃０内のアドレス＃０を指している場合を想定する。
【００５５】
メモリコントローラ２００が、ＲＷコマンドとアドレス＃０（図では「Ｗ＿Ａ０」と表す）をＩＦ＿ＣｍｄＡｄｄｒ信号線２０９に出力すると、ＲＷコマンドの処理が開始する。メモリコントローラ２００は、ＲＷコマンドの発行とともに、書込みデータ（図では「Ｗ＿Ｄａｔａ」と表す）を、ＩＦ＿Ｄａｔａ信号線２０８に出力する。ＩＦ３２０は、受け取った書込みデータを、バンク＃０のＷｒｉｔｅ＿Ｌａｔｃｈ＿Ｉｎ信号線３２５に順次出力する（ステップＳ９６１）。
【００５６】
書込みデータの入力開始と同時に、ＩＦ３２０はバンク＃０のＡｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６を参照し、その値が「レディ」となるのを待つ（ステップＳ９６２、Ｓ９６３）。「レディ」になると（ステップＳ９６２：Ｙｅｓ）、ＩＦ３２０は、バンク＃０のＡｒｒａｙ＿Ａｄｄｒｅｓｓ信号線３２１に「０」を、Ａｒｒａｙ＿Ｃｏｎｔｒｏｌ信号線３２２に「センス」を出力する（ステップＳ９６４）。これにより、ＮＶＭアレイ３１１がセンス動作を開始するとともに、Ａｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６は「センス中」に遷移する。
【００５７】
一定時間経過後に、Ａｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６は「レディ」に遷移し、その時点で、ＮＶＭアレイ３１１から読み出したデータのリードラッチ３１２への入力が完了している。ＩＦ３２０は、Ａｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６が「レディ」になるまで待機する（ステップＳ９６５、Ｓ９６６）。「レディ」になると（ステップＳ９６５：Ｙｅｓ）、Ｌａｔｃｈ＿Ｃｏｎｔｒｏｌ信号線３２３に制御信号「Ｃ＋Ｒ」を送信する。これにより、リードラッチ３１２およびライトラッチ３１３に蓄積されたデータを、比較器３１４に出力させるとともに（ステップＳ９６８）、Ｒｅａｄ＿Ｌａｔｃｈ＿Ｏｕｔ信号線３２４にも出力させる。このＲｅａｄ＿Ｌａｔｃｈ＿Ｏｕｔ信号線３２４に出力されたデータは、ＩＦ３２０からＩＦ＿Ｄａｔａ信号線２０８を介してメモリコントローラ２００に出力される（ステップＳ９６７）。Ｃｏｍｐａｒｅ＿Ｒ信号線３１５と、Ｒｅａｄ＿Ｌａｔｃｈ＿Ｏｕｔ信号線３２４は独立しており、同時動作が可能である。
【００５８】
ＩＦ３２０は、続いて、バンク＃０のＡｒｒａｙ＿Ｃｏｎｔｒｏｌ信号線３２２に「プログラム」を出力する（図では「Ｐ」と表す）（ステップＳ９６９）。これにより、ＮＶＭアレイ３１１がプログラム動作を開始するとともに、Ａｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６は「プログラム中」に遷移し、プログラム動作の完了とともに「レディ」に戻る。ＩＦ３２０は、Ａｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６が「レディ」になるまで待機する（ステップＳ９７１、Ｓ９７２）。「レディ」となったことをＩＦ３２０が確認すると（ステップＳ９７１：Ｙｅｓ）、ＲＷコマンドは完了する。
【００５９】
このように、ＲＷコマンドの処理では、データをリードラッチ３１２に読み出すところまではライトコマンドと同じ動作であるが、リードラッチに蓄積したデータを比較器３１４に出力するだけでなくＲｅａｄ＿Ｌａｔｃｈ＿Ｏｕｔ信号線３２４にも出力する。これにより、ＲＷコマンドは、ライトコマンドと同じ実行時間で、同一アドレスへの書込みおよび読出しを実現することができる。
【００６０】
なお、ステップＳ９６４は、特許請求の範囲に記載のメモリ読出し手順の一例である。また、ステップＳ９６７は、特許請求の範囲に記載の読出しデータ出力手順の一例である。また、ステップＳ９６９は、特許請求の範囲に記載のメモリ書込み手順の一例である。
【００６１】
［ホストコンピュータおよびメモリコントローラの動作］
メモリコントローラ２００は、Ｈｏｓｔ＿ＣｍｄＡｄｄｒ信号線１０９を介して、ホストコンピュータ１００からのコマンドおよびアドレスを受信する。ホストコンピュータ１００は、記憶装置３００へのデータ書込みを指示するＨｏｓｔ＿ＷＲＩＴＥコマンド、記憶装置３００からの読出しを指示するＨｏｓｔ＿ＲＥＡＤコマンドの少なくとも２種類のコマンドを送信する。その際、それらコマンドのアクセス対象となるアドレスを送信する。また、ホストコンピュータ１００は、ライトコマンドの送信と同時に、Ｈｏｓｔ＿Ｄａｔａ信号線１０８を介して書込みデータをメモリコントローラ２００に出力する。
【００６２】
図１３は、本技術の第１の実施の形態におけるメモリコントローラ２００のコマンド受信処理手順例を示す流れ図である。メモリコントローラ２００は、ホストコンピュータ１００からのコマンドを受信するたびに、この流れ図の処理を開始する。
【００６３】
Ｈｏｓｔ＿ＷＲＩＴＥコマンド以外を受信した場合には（ステップＳ９８１：Ｎｏ）、Ｈｏｓｔ＿ＣｍｄＡｄｄｒ信号線１０９からの信号はコマンドアドレスレジスタ２１０に格納される（ステップＳ９８５）。
【００６４】
Ｈｏｓｔ＿ＷＲＩＴＥコマンドを受信した場合には（ステップＳ９８１：Ｙｅｓ）、メモリコントローラ２００は、Ｈｏｓｔ＿Ｄａｔａ信号線１０８から書込みデータを受信して、データバッファ２２０に格納する（ステップＳ９８２）。そして、受信したＨｏｓｔ＿ＷＲＩＴＥコマンドと同じアドレスに対するリードコマンドが、コマンドアドレスレジスタ２１０に存在するか否かを調べる。コマンドアドレスレジスタ２１０に存在しない場合には（ステップＳ９８３：Ｎｏ）、ライトコマンドと受信したアドレスとをコマンドアドレスレジスタ２１０に追加する。コマンドアドレスレジスタ２１０に存在する場合には（ステップＳ９８３：Ｙｅｓ）、同じアドレスに対するリードコマンドのうち、最後に受信したものをＲＷコマンドに書き換える（ステップＳ９８４）。そして、Ｈｏｓｔ＿ＷＲＩＴＥコマンドとともに受信してデータバッファ２２０に格納したデータを、このＲＷコマンドに対応する書込みデータとする。
【００６５】
図１４は、本技術の第１の実施の形態におけるメモリコントローラ２００のコマンド送出手順例を示す流れ図である。メモリコントローラ２００は、コマンドアドレスレジスタ２１０に蓄積された命令を処理する。
【００６６】
メモリコントローラ２００は、一定時間ごとに、コマンドアドレスレジスタ２１０から、最も古い（最初に追加された）コマンドアドレスを１つ取り出す（ステップＳ９９１）。そして、取り出したアドレスに対応するバンクが「レディ」であるかを、ステータスレジスタ２３０を参照して調べる。「レディ」でなければ（ステップＳ９９２：Ｎｏ）、そのまま処理を終了する。「レディ」であれば（ステップＳ９９２：Ｙｅｓ）、取り出したコマンドアドレスをＩＦ＿ＣｍｄＡｄｄｒ信号線２０９に送出する（ステップＳ９９３）。取り出したコマンドがライトコマンドまたはＲＷコマンドである場合には（ステップＳ９９４：Ｙｅｓ）、Ｈｏｓｔ＿ＷＲＩＴＥコマンドとともにホストコンピュータ１００から受信した書込みデータがデータバッファ２２０に格納されていることになる。そのため、これをＩＦ＿Ｄａｔａ信号線２０８に送出する（ステップＳ９９５）。メモリコントローラ２００は、最後に送出したコマンドアドレスをコマンドアドレスレジスタ２１０から削除して（ステップＳ９９６）、処理を終了する。
【００６７】
これら一連の処理により、メモリコントローラ２００は、ホストコンピュータ１００からのＨｏｓｔ＿ＲＥＡＤコマンドに対応するリードコマンドをＩＦ３２０に送出する前に、同一アドレスに対するＨｏｓｔ＿ＷＲＩＴＥコマンドを受信したか否かを判定する。そのようなＨｏｓｔ＿ＷＲＩＴＥコマンドについては、メモリコントローラ２００は、ＲＷコマンドを使用することにより、リードコマンドとライトコマンドを各々実行するよりも短い時間で処理を行うことができる。
【００６８】
このように、本技術の第１の実施の形態によれば、同一アドレスに対するリードコマンドおよびライトコマンドをＲＷコマンドに差し替えることにより、処理を高速化することができる。
【００６９】
＜２．第２の実施の形態＞
第１の実施の形態において説明したように、ＩＦ＿Ｄａｔａ信号線２０８は、複数のバンクによって共有されるデータバスである。あるバンクにおいて書込みまたは読出しを行っている間に他のバンクに別のコマンドを発行するといった、並列動作をさせることも想定される。ただし、第１の実施の形態では、あるバンクにＲＷコマンドを発行した後に、続けて他のバンクにリードコマンドやライトコマンドを発行する場合には、データの衝突を避ける必要がある。すなわち、メモリコントローラ２００は、ＲＷコマンドに対する読出しデータの出力と、後続のコマンドに対するデータ入出力とが衝突しないように、コマンドの発行間隔を調節する必要がある。特に、センス動作にかかる時間が一定の値でない場合には、データ衝突の回避が難しくなる。そこで、第２の実施の形態では、リードラッチ３１２からＩＦ３２０へのデータ出力のみを行う記憶装置３００のＤＡＴＡＯＵＴコマンドを定義し、ＲＷコマンドと同様の動作を、ライトコマンドとＤＡＴＡＯＵＴコマンドとの組合せによって実現する。なお、ＤＡＴＡＯＵＴコマンドは、特許請求の範囲に記載の読出しデータ保持部に保持されている読出しデータを要求元に出力する旨のコマンドの一例である。
【００７０】
［ＤＡＴＡＯＵＴコマンド］
図１５は、本技術の第２の実施の形態における記憶装置３００のＤＡＴＡＯＵＴコマンドの処理手順例を示す流れ図である。また、図１６は、本技術の第２の実施の形態における記憶装置３００のＤＡＴＡＯＵＴコマンドの処理手順例を示すタイミング図である。ここでは例として、ライトコマンドおよびＤＡＴＡＯＵＴコマンドともに、バンク＃０のアドレス＃０に発行した場合を想定する。
【００７１】
ＩＦ３２０は、ＤＡＴＡＯＵＴコマンドを受信すると、リードラッチ３１２の内容をメモリコントローラ２００に出力する（ステップＳ８１１）。メモリコントローラ２００は、まずライトコマンドを発行し、ＮＶＭアレイ３１１の状態が「センス中」から「レディ」になったことをＭｅｍｏｒｙ＿Ｓｔａｔｕｓ信号線２０７により検知した後、ＤＡＴＡＯＵＴコマンドを発行する（図では「ＤＯ＿Ａ０」と表す）。これにより、ライトラッチ３１３からＮＶＭアレイ３１１への書込みが行われている間（Ａｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６が「プログラム中」である間）に、リードラッチ３１２からデータを出力することができる。すなわち、ＲＷコマンドと同様に、ライトコマンドと同様な実行時間により、同一アドレスへの書込みと読出しとを処理することができる。
【００７２】
なお、上述の例においてはＤＡＴＡＯＵＴコマンドにも他のコマンドと同様にアドレス「０」を付して発行しているが、ＤＡＴＡＯＵＴコマンドはＮＶＭアレイ３１１にアクセスしないため、実行に必要なのはバンク番号のみである。したがって、アドレスのビット列のうちバンクを示す部分のみを出力するようにしてもよい。
【００７３】
第１の実施の形態においてはＡｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６が「レディ」になった直後にＲｅａｄ＿Ｌａｔｃｈ＿Ｏｕｔ信号線３２４からデータ出力が開始されるが、この第２の実施の形態では読出しデータの出力がやや遅れる。これは、第２の実施の形態ではＩＦ３２０がＤＡＴＡＯＵＴコマンドを認識してからデータ出力を行うためである。また、この第２の実施の形態では２つのコマンドの組合せによってＲＷコマンド１つ分の機能を実現するため、第１の実施の形態よりもコマンドバスを多く占有することになる。
【００７４】
このように、本技術の第２の実施の形態によれば、同一アドレスに対するリードコマンドおよびライトコマンドを、ライトコマンドとＤＡＴＡＯＵＴコマンドの組合せに差し替えることにより、処理を高速化することができる。
【００７５】
＜３．第３の実施の形態＞
上述の第１の実施の形態では、ライトコマンドと同じ実行時間でデータ出力を同時に行える点で速度改善効果が大きい手法である。しかし、書込みデータを先に入力して読出したデータが後で出力されることになり、通常のリードコマンドとライトコマンドを順に行う場合と比べて、ＩＦ＿Ｄａｔａ信号線２０８におけるデータの順序が逆になってしまう。そのため、メモリシステムの構成によってはメモリコントローラ２００からの制御が煩雑になるおそれがある。
【００７６】
そこで、この第３の実施の形態では、通常のリードコマンドとライトコマンドを順に行う場合と同じデータの入出力順をとりながら、高速化を行うための手法を示す。具体的には、通常のリードコマンドとライトコマンドに加えて、書込みの最初に行われるセンス動作を省略した、ＢＷ（ＢＬＩＮＤ  ＷＲＩＴＥ）コマンドを導入する。
【００７７】
図１７は、本技術の第３の実施の形態における記憶装置３００のＢＷコマンドの処理手順例を示す流れ図である。なお、ＢＷコマンドは、特許請求の範囲に記載の書込み対象アドレスについて読出しデータ保持部に新たなデータを保持させずに書込みを行う旨のコマンドの一例である。
【００７８】
このＢＷコマンドの処理は、通常のライトコマンドの処理手順において、Ａｒｒａｙ＿Ｃｏｎｔｒｏｌ信号線３２２に「センス」を出力する処理と、その後のＡｒｒａｙ＿Ｓｔａｔｕｓ信号線３２６の確認処理を省いたものに相当する。すなわち、図９に示した流れ図においてステップＳ９４４乃至Ｓ９４６を省いたものになる。したがって、ここでの説明は省略する。この第３の実施の形態では、センス動作が省略され、リードラッチ３１２に既に格納されている値がＣｏｍｐａｒｅ＿Ｒ信号線３１５に出力される。
【００７９】
図１８は、本技術の第３の実施の形態における記憶装置３００のＢＷコマンド単体の処理手順例を示すタイミング図である。また、図１９は、本技術の第３の実施の形態における記憶装置３００のＢＷコマンドをリードコマンドの直後に実行する際の処理手順例を示すタイミング図である。
【００８０】
先にリードコマンドを処理することにより、読出しデータはリードラッチ３１２に格納される。そして、ＢＷコマンドの処理においては、改めてセンス動作を行うことなく、リードラッチ３１２に既に格納されている値を利用して比較器３１４における比較を行う。これにより、センス動作に要する処理時間を削減することができる。また、処理の順序は通常のリードコマンドとライトコマンドを順に行う場合と同様であるため、制御の煩雑化を避けることができる。
【００８１】
このように、本技術の第３の実施の形態によれば、同一アドレスに対するリードコマンドおよびライトコマンドを、リードコマンドとＢＷコマンドの組合せに差し替えることにより、処理を高速化することができる。
【００８２】
＜４．第４の実施の形態＞
上述の第１の実施の形態では、メモリコントローラ２００がホストコンピュータ１００からの命令を蓄積し、同一アドレスに対するリードコマンドとライトコマンドを他のコマンドに置き換えていた。これに対し、第４の実施の形態では、記憶装置３００のＩＦ３２０がその処理を行う。
【００８３】
図２０は、本技術の第４の実施の形態におけるリードアドレス検出レジスタ３２７の一構成例を示す図である。このリードアドレス検出レジスタ３２７はＩＦ３２０に設けられる。このリードアドレス検出レジスタ３２７は、バンク毎に１つのレジスタ番号が割当てられており、そのバンクにおいて直前に読出しが行われたアドレスを保持するレジスタである。第４の実施の形態では、このリードアドレス検出レジスタ３２７を利用して、ライト処理の内容を切り替える。
【００８４】
なお、リードアドレス検出レジスタ３２７は、特許請求の範囲に記載のアドレス一致検出部の一例である。
【００８５】
図２１は、本技術の第４の実施の形態における記憶装置３００のＩＦ３２０による処理手順例を示す流れ図である。ここでは、アドレスＸはバンクＹに属することを想定している。
【００８６】
ＩＦ＿ＣｍｄＡｄｄｒ信号線２０９にリードコマンドが出力されると（ステップＳ８４１：リード）、ＩＦ３２０は通常のリードコマンドと同様に処理を実行する（ステップＳ８４２）。その後、読出し対象となったアドレスを、リードアドレス検出レジスタ３２７に格納する。すなわち、アドレスＸがバンクＹに属しているとき、アドレスＸに対する読出し処理を行った後、レジスタ番号ＹがＸに上書きされる（ステップＳ８４３）。
【００８７】
ＩＦ＿ＣｍｄＡｄｄｒ信号線２０９にライトコマンドが出力されると（ステップＳ８４１：ライト）、リードアドレス検出レジスタ３２７から書込み対象のバンクに対応する値が読み出され、書込み対象アドレスと比較される（ステップＳ８４４）。それらが一致している場合には（ステップＳ８４５：Ｙｅｓ）、ＩＦ３２０はＢＷコマンドと同様の処理を実行する（ステップＳ８４６）。一方、一致していない場合には（ステップＳ８４５：Ｎｏ）、通常のライトコマンドと同様の処理を実行する（ステップＳ８４７）。前回読み出されたアドレスと同じアドレスに書込みを行う場合、読出し処理の中でセンス動作が行われている。したがって、リードラッチ３１２にはＮＶＭアレイ３１１から読み出されたデータが格納されているため、センス動作を行うことなくリードラッチ３１２の値をＣｏｍｐａｒｅ＿Ｒ信号として参照し、正しく書込みを行うことができる。
【００８８】
このようにして書込みを実行した後には、既にＮＶＭアレイ３１１の値が更新されており、次に同じアドレスへライトコマンドが発行されたとしても、もはやリードラッチ３１２の値をＣｏｍｐａｒｅ＿Ｒ信号としては使用することはできない。そのため、ＩＦ３２０はリードアドレス検出レジスタ３２７の値を無効なアドレスで初期化する（ステップＳ８４８）。
【００８９】
ＩＦ３２０は、リードコマンドおよびライトコマンド以外のコマンドを扱う場合もある（ステップＳ８４１：その他）。例えば、メモリアクセスを休止して低消費電力状態に入るためのコマンドなどが考えられる。そのようなコマンドにおいて、リードラッチ３１２に変化を及ぼす可能性がある場合には（ステップＳ８５２：Ｙｅｓ）、リードアドレス検出レジスタ３２７を初期化する（ステップＳ８５３）。これにより、次にライトコマンドを受信したときに、誤ったリードラッチ３１２の値をＣｏｍｐａｒｅ＿Ｒ信号線３１５の値として参照しないようにする。
【００９０】
図２２は、本技術の第４の実施の形態における高速ライトの処理手順例を示すタイミング図である。最初のリードコマンド（図では「Ｒ＿Ａ０」と表す）の受信時に、その対象アドレス「０」が保持される。その後、同じアドレスに対するライトコマンド（図では「Ｗ＿Ａ０」と表す）を受信後、センス動作を行うことなく書込みが実行される。
【００９１】
このように、本技術の第４の実施の形態によれば、ＩＦ３２０によって、同一アドレスに対するリードコマンドおよびライトコマンドを、リードコマンドとＢＷコマンドの組合せに差し替えることにより、処理を高速化することができる。
【００９２】
＜５．第５の実施の形態＞
上述の第１の実施の形態では、同じアドレスに対して、Ｈｏｓｔ＿ＲＥＡＤコマンドの後にＨｏｓｔ＿ＷＲＩＴＥコマンドが発行されたことを、メモリコントローラ２００が検出することにより、ＲＷコマンドの発行を行っていた。これに対し、第５の実施の形態では、同一アドレスに対して読出しを行った直後に書込みを行うことをホストコンピュータ１００が予め認識できる場合を想定して、ホストコンピュータ１００が、メモリコントローラ２００からＲＷコマンドを発行するよう指示する。
【００９３】
ホストコンピュータ１００からメモリコントローラ２００にＨｏｓｔ＿ＲＷコマンドとアドレス、書込みデータが送信される。メモリコントローラ２００は、Ｈｏｓｔ＿ＲＷコマンドを受信すると、上述の図１３と同様の処理を行う。すなわち、ＲＷコマンドと受信したアドレスをコマンドアドレスレジスタ２１０に追加し、書込みデータをデータバッファに格納する。その後、上述の図１４と同様の処理手順により、ＩＦ３２０にＲＷコマンドとデータを送出する。
【００９４】
なお、ＲＷコマンドに代えて、第２および第３の実施の形態において説明したＤＡＴＡＯＵＴコマンドやＢＷコマンドをホストコンピュータ１００が発行するようにしてもよい。
【００９５】
このように、本技術の第５の実施の形態によれば、同一アドレスに対して読出しを行った直後に書込みを行うことをホストコンピュータ１００が認識して、メモリコントローラ２００からＲＷコマンドなどを発行するように指示することができる。
【００９６】
＜６．第６の実施の形態＞
不揮発メモリには書換回数に制限があり、書換寿命を延ばすためにはセル間の書換回数のばらつきを抑制することが効果的である。そのため、不揮発メモリの書換寿命を管理するために、書換回数の多いセルと少ないセルとの間でデータの入れ替えを行うウェアレベリングと呼ばれる処理が知られている。また、メモリシステムにおいては、アドレス空間にスワップ領域と呼ばれる領域を設定し、メインメモリのデータをスワップ領域に一時的に退避する処理が一般的に行われる。ホストコンピュータは、スワップ領域に退避していたデータを読み出してメインメモリへ書き込むとともに、スワップ領域の同じアドレスに新しいデータを書込む、データスワップと呼ばれる処理をしばしば行う。この第６の実施の形態では、上述の第３の実施の形態において説明したＢＷコマンドを用いてデータスワップを高速化する手法について説明する。
【００９７】
図２３は、本技術の第６の実施の形態におけるメモリコントローラ２００による処理手順例を示す流れ図である。ホストコンピュータ１００は、Ｈｏｓｔ＿ＣｍｄＡｄｄｒ信号線１０９を介して、ＳＷＡＰコマンドと、入れ替えの対象となる２つのアドレスをメモリコントローラ２００に送信する。ここで、２つのアドレスはそれぞれ、異なるバンクまたは異なるメモリ装置を指すものであることを前提とする。
【００９８】
メモリコントローラ２００は、ＳＷＡＰコマンドを受信すると（ステップＳ８６１）、２つのアドレスそれぞれに対するリードコマンドを、ＩＦ＿ＣｍｄＡｄｄｒ信号線２０９を介して記憶装置３００に発行する。このとき、２つのアドレスが示す記憶装置３００が同じ場合には（ステップＳ８６２：Ｙｅｓ）、ＩＦ＿ＣｍｄＡｄｄｒ信号線２０９やＩＦ＿Ｄａｔａ信号線２０８において信号が衝突するおそれがある。そこで、両社が衝突しないように、必要な間隔を空けて２つのリードコマンドを発行する（ステップＳ８６３、Ｓ８６４）。一方、２つのアドレスが示す記憶装置３００が異なっており、ＩＦ＿ＣｍｄＡｄｄｒ信号線２０９やＩＦ＿Ｄａｔａ信号線２０８が独立である場合には、衝突のおそれがないため、２つのリードコマンドを同時に発行する（ステップＳ８６５）。
【００９９】
一定時間経過後、メモリコントローラ２００は、ＩＦ＿Ｄａｔａ信号線２０８から出力される読出しデータを受け取り、ＥＣＣ回路２４０によりエラー検出および訂正を行った後、データバッファ２２０に蓄積する（ステップＳ８６６）。データバッファ２２０に２つのアドレスからの読出しデータが揃った後（ステップＳ８６７：Ｙｅｓ）、２つのアドレスにＢＷコマンドを発行し、高速書込みを行う（ステップＳ８６８）。
【０１００】
ＢＷコマンド送信後、Ｍｅｍｏｒｙ＿Ｓｔａｔｕｓ信号線２０７を参照し（ステップＳ８６９）、２つのアドレスがそれぞれ属するバンクが、２つとも「プログラム中」から「レディ」に遷移したことを確認して（ステップＳ８７１、Ｓ８７２）、処理を終了する。
【０１０１】
このように、本技術の第６の実施の形態によれば、ＢＷコマンドを用いてデータスワップを高速化することができる。
【０１０２】
＜７．第７の実施の形態＞
不揮発メモリにおいては、記録された値が読出しのたびにわずかに変化し、一定回数の読出しを繰り返すと、読出し不良が発生する可能性がある。これをリードディスターブ不良と呼ぶ。このリードディスターブ不良を防ぐために、一定回数の読出しを行った後には、データの再書き込みが行われる。これをリフレッシュと呼ぶ。このリフレッシュは、データを読み出した後、エラーを検出および訂正し、再び同じアドレスに書込みを行うことによって実現される。この第７の実施の形態では、上述の第３の実施の形態において説明したＢＷコマンドを用いてリフレッシュを高速化する手法について説明する。
【０１０３】
図２４は、本技術の第７の実施の形態におけるメモリコントローラ２００による処理手順例を示す流れ図である。メモリコントローラ２００が、ホストコンピュータ１００からＨｏｓｔ＿ＣｍｄＡｄｄｒ信号線１０９を介してリフレッシュコマンドおよびアドレスを受信すると、この処理手順が開始する。まず、ＩＦ＿ＣｍｄＡｄｄｒ信号線２０９を介して、ホストコンピュータ１００から受信したアドレスが指し示す記憶装置３００のアドレスに、リードコマンドを送信する（ステップＳ８８１）。一定時間経過後、ＩＦ＿Ｄａｔａ信号線２０８から出力される読出しデータを受信して、ＥＣＣ回路２４０によりエラー検出および訂正を行う（ステップＳ８８２）。また、ＥＣＣ回路２４０は、エラー訂正が発生したか否かを示す信号を出力する。メモリコントローラ２００はこれを受けて、エラー訂正が発生しなかった場合（リードディスターブ不良は発生しておらず、全ビットが正しく読み出せた場合）には（ステップＳ８８３：Ｎｏ）、何もせずにリフレッシュ処理は完了となる。一方、エラー訂正が発生した場合（リードディスターブ不良が発生し、誤った値が読み出された場合）には（ステップＳ８８３：Ｙｅｓ）、当該アドレスに対して、訂正後のデータとともにＢＷコマンドを送信する（ステップＳ８８４）。
【０１０４】
ＢＷコマンド送信後、Ｍｅｍｏｒｙ＿Ｓｔａｔｕｓ信号線２０７を参照し（ステップＳ８８５）、当該バンクが「プログラム中」から「レディ」に遷移したことを確認して（ステップＳ８８６、Ｓ８８７）、処理を終了する。
【０１０５】
これにより、リードラッチ３１２に保持された読出しデータとＥＣＣによるエラー訂正後のデータとが比較され、訂正の生じたビットにのみプログラム動作により書込み電圧が印加され、リードディスターブ不良が訂正される。
【０１０６】
このように、本技術の第７の実施の形態によれば、ＢＷコマンドを用いてリフレッシュを高速化することができる。
【０１０７】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１０８】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【０１０９】
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
【０１１０】
なお、本技術は以下のような構成もとることができる。
（１）メモリアレイの所定のアドレスに記憶されているデータを読出しデータとして前記メモリアレイから読み出して読出しデータ保持部に保持させるメモリ読出し部と、
前記読出しデータ保持部に保持されている前記読出しデータを要求元に出力する読出しデータ出力部と、
前記メモリアレイに対する書込みデータおよび前記読出しデータに基づいて前記メモリアレイの書込み対象アドレスに書込みを行うメモリ書込み部と、
前記書込み対象アドレスと前記所定のアドレスとが一致する場合にのみ前記メモリ書込み部を動作させるよう制御する制御部と
を具備する記憶装置。
（２）前記制御部は、前記メモリアレイからの読出しおよび書込みを同一アドレスに連続して行う旨のコマンドが発行された際に前記書込み対象アドレスと前記所定のアドレスとが一致すると判断する
前記（１）に記載の記憶装置。
（３）前記制御部は、前記読出しデータ保持部に保持されている前記読出しデータを要求元に出力する旨のコマンドが発行された際に前記書込み対象アドレスと前記所定のアドレスとが一致すると判断する
前記（１）に記載の記憶装置。
（４）前記制御部は、前記書込み対象アドレスについて前記読出しデータ保持部に新たなデータを保持させずに書込みを行う旨のコマンドが発行された際に前記書込み対象アドレスと前記所定のアドレスとが一致すると判断する
前記（１）に記載の記憶装置。
（５）前記制御部は、前記書込み対象アドレスと前記所定のアドレスとの前記一致を検出するアドレス一致検出部を備えて、前記書込み対象アドレスと前記所定のアドレスとが一致するか否かを判断する
前記（１）に記載の記憶装置。
（６）記憶装置と、前記記憶装置に対するアクセス要求を制御するメモリコントローラと、前記記憶装置に対するアクセスコマンドを前記メモリコントローラに発行するホストコンピュータとを具備する情報処理システムであって、
前記記憶装置は、メモリアレイの所定のアドレスに記憶されているデータを読出しデータとして前記メモリアレイから読み出して読出しデータ保持部に保持させるメモリ読出し部と、前記読出しデータ保持部に保持されている前記読出しデータを要求元に出力する読出しデータ出力部と、前記メモリアレイに対する書込みデータおよび前記読出しデータに基づいて前記メモリアレイの書込み対象アドレスに書込みを行うメモリ書込み部と、前記書込み対象アドレスと前記所定のアドレスとが一致する場合にのみ前記メモリ書込み部を動作させるよう制御する制御部とを備える
情報処理システム。
（７）メモリアレイの所定のアドレスに記憶されているデータを読出しデータとして前記メモリアレイから読み出して読出しデータ保持部に保持させるメモリ読出し手順と、
前記読出しデータ保持部に保持されている前記読出しデータを要求元に出力する読出しデータ出力手順と、
前記メモリアレイの書込み対象アドレスと前記所定のアドレスとが一致する場合にのみ前記メモリアレイに対する書込みデータおよび前記読出しデータに基づいて前記メモリアレイの前記書込み対象アドレスに書込みを行うメモリ書込み手順と
を具備する記憶制御方法。
【符号の説明】
【０１１１】
１００  ホストコンピュータ
２００  メモリコントローラ
２１０  コマンドアドレスレジスタ
２２０  データバッファ
２３０  ステータスレジスタ
２４０  ＥＣＣ回路
３００  記憶装置
３１０  バンク
３１１  ＮＶＭアレイ
３１２  リードラッチ
３１３  ライトラッチ
３１４  比較器
３２７  リードアドレス検出レジスタ
【図１】
0006447629.tif 000002
【図２】
0006447629.tif 000003
【図３】
0006447629.tif 000004
【図４】
0006447629.tif 000005
【図５】
0006447629.tif 000006
【図６】
0006447629.tif 000007
【図７】
0006447629.tif 000008
【図８】
0006447629.tif 000009
【図９】
0006447629.tif 000010
【図１０】
0006447629.tif 000011
【図１１】
0006447629.tif 000012
【図１２】
0006447629.tif 000013
【図１３】
0006447629.tif 000014
【図１４】
0006447629.tif 000015
【図１５】
0006447629.tif 000016
【図１６】
0006447629.tif 000017
【図１７】
0006447629.tif 000018
【図１８】
0006447629.tif 000019
【図１９】
0006447629.tif 000020
【図２０】
0006447629.tif 000021
【図２１】
0006447629.tif 000022
【図２２】
0006447629.tif 000023
【図２３】
0006447629.tif 000024
【図２４】
0006447629.tif 000025