(57)【特許請求の範囲】
【請求項１】
メモリから読み出された第１のデータ単位および当該第１のデータ単位に対応する第１のエラー検出符号に従ってエラー検出を行う第１のエラー検出部と、
前記第１のデータ単位よりも小さい第２のデータ単位に対応する第２のエラー検出符号が前記メモリとは異なるエラー検出符号保持部に保持されている場合に、前記メモリから読み出された前記第２のデータ単位および前記エラー検出符号保持部に保持されている前記第２のエラー検出符号に従ってエラー検出を行う第２のエラー検出部と
を具備する記憶制御装置。
【請求項２】
ライト対象となるデータを含む第１のデータ単位に対応して第１のエラー検出符号を生成して前記第１のデータ単位および前記第１のエラー検出符号をメモリに対してライトさせる第１のエラー検出符号生成部と、
前記第１のデータ単位よりも小さい第２のデータ単位に対応する第２のエラー検出符号を保持するエラー検出符号保持部と、
リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号が前記エラー検出符号保持部に保持されていない場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第１のデータ単位および当該第１のデータ単位に対応する前記第１のエラー検出符号に従ってエラー検出を行う第１のエラー検出部と、
前記リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号が前記エラー検出符号保持部に保持されていない場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号を生成して前記エラー検出符号保持部に保持させる第２のエラー検出符号生成部と、
前記リード対象となるデータを含む前記第２のデータ単位に対応する第２のエラー検出符号が前記エラー検出符号保持部に保持されている場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第２のデータ単位および前記エラー検出符号保持部に保持されている前記第２のエラー検出符号に従ってエラー検出を行う第２のエラー検出部と
を具備する記憶制御装置。
【請求項３】
前記第２のエラー検出符号生成部は、前記ライト対象となるデータを含む前記第２のデータ単位に対応する第２のエラー検出符号が前記エラー検出符号保持部に保持されている場合に、前記ライト対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号を生成して前記エラー検出符号保持部に保持させる
請求項２記載の記憶制御装置。
【請求項４】
前記第１または第２のエラー検出符号はエラー訂正機能を備え、
前記第１または第２のエラー検出部においてエラーが検出された場合に前記第１または第２のエラー検出符号に従ってエラー訂正を行うエラー訂正部をさらに具備する
請求項２記載の記憶制御装置。
【請求項５】
第１のデータ単位に対応する第１のエラー検出符号を前記第１のデータ単位と対応付けて記憶するメモリと、
ライト対象となるデータを含む前記第１のデータ単位に対応して前記第１のエラー検出符号を生成して前記第１のデータ単位および前記第１のエラー検出符号を前記メモリに対してライトさせる第１のエラー検出符号生成部と、
前記第１のデータ単位よりも小さい第２のデータ単位に対応する第２のエラー検出符号を保持するエラー検出符号保持部と、
リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号が前記エラー検出符号保持部に保持されていない場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第１のデータ単位および当該第１のデータ単位に対応する前記第１のエラー検出符号に従ってエラー検出を行う第１のエラー検出部と、
前記リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号が前記エラー検出符号保持部に保持されていない場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号を生成して前記エラー検出符号保持部に保持させる第２のエラー検出符号生成部と、
前記リード対象となるデータを含む前記第２のデータ単位に対応する第２のエラー検出符号が前記エラー検出符号保持部に保持されている場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第２のデータ単位および前記エラー検出符号保持部に保持されている前記第２のエラー検出符号に従ってエラー検出を行う第２のエラー検出部と
を具備する記憶装置。
【請求項６】
前記メモリは、不揮発性メモリである請求項５記載の記憶装置。
【請求項７】
第１のデータ単位に対応する第１のエラー検出符号を前記第１のデータ単位と対応付けて記憶するメモリと、
ライト対象となるデータを含む前記第１のデータ単位に対応して前記第１のエラー検出符号を生成して前記第１のデータ単位および前記第１のエラー検出符号を前記メモリに対してライトさせる第１のエラー検出符号生成部と、
前記第１のデータ単位よりも小さい第２のデータ単位に対応する第２のエラー検出符号を保持するエラー検出符号保持部と、
リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号が前記エラー検出符号保持部に保持されていない場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第１のデータ単位および当該第１のデータ単位に対応する前記第１のエラー検出符号に従ってエラー検出を行う第１のエラー検出部と、
前記リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号が前記エラー検出符号保持部に保持されていない場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号を生成して前記エラー検出符号保持部に保持させる第２のエラー検出符号生成部と、
前記リード対象となるデータを含む前記第２のデータ単位に対応する第２のエラー検出符号が前記エラー検出符号保持部に保持されている場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第２のデータ単位および前記エラー検出符号保持部に保持されている前記第２のエラー検出符号に従ってエラー検出を行う第２のエラー検出部と、
前記メモリに対してデータのリードまたはライトを要求するリクエストを発行するプロセッサと
を具備する情報処理システム。
【請求項８】
ライト対象となるデータを含む第１のデータ単位に対応して第１のエラー検出符号を生成して前記第１のデータ単位および前記第１のエラー検出符号をメモリに対してライトさせる第１のエラー検出符号生成手順と、
前記第１のデータ単位よりも小さい第２のデータ単位に対応する第２のエラー検出符号であってリード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号が前記メモリとは異なるエラー検出符号保持部に保持されていない場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第１のデータ単位および当該第１のデータ単位に対応する前記第１のエラー検出符号に従ってエラー検出を行う第１のエラー検出手順と、
前記リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号が前記エラー検出符号保持部に保持されていない場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号を生成して前記エラー検出符号保持部に保持させる第２のエラー検出符号生成手順と、
前記リード対象となるデータを含む前記第２のデータ単位に対応する第２のエラー検出符号が前記エラー検出符号保持部に保持されている場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第２のデータ単位および前記エラー検出符号保持部に保持されている前記第２のエラー検出符号に従ってエラー検出を行う第２のエラー検出手順と
を具備する記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、記憶制御装置に関する。詳しくは、エラー検出符号をデータとともに記憶するメモリに対して記憶制御を行う記憶制御装置、記憶装置、および、これらにおける処理方法に関する。
【背景技術】
【０００２】
従来、プロセッサとそのワークメモリ（主記憶装置）からなる情報処理システムにおいて、さらにストレージ（補助記憶装置）を備えることにより記憶容量を増やす技術が開発されている。このような情報処理システムにおいては、ワークメモリとしてＤＲＡＭ（Dynamic Random Access Memory）等が用いられる。一方、ストレージとして不揮発性メモリ（ＮＶＭ：Non-Volatile Memory）が用いられることがある。この不揮発性メモリとしては、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ：Non-Volatile RAM）とに大別される。ここで、フラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ＰＣＲＡＭ（Phase-Change RAM）、ＭＲＡＭ（Magnetoresistive RAM）、ＲｅＲＡＭ（Resistance RAM）などが挙げられる。
【０００３】
このような不揮発性メモリでは、データ保持特性を改善するために、エラー訂正コード（ＥＣＣ：Error Correcting Code）によるエラー検出訂正処理を行うことが一般的となっている。すなわち、書込み時にエラー訂正コードを計算してそのエラー訂正コードをデータとともに不揮発性メモリ上に記録しておいて、読出し時にはデータとエラー訂正コードとを同時に読み出してビットエラーの検出および訂正処理が行われる。このようなエラー検出訂正処理を想定すると、エラー訂正コードの単位と不揮発性メモリへのアクセス単位とを一致させることが、性能上有利であることがわかる。両者が一致していない場合には、エラー訂正コードによるエラー検出訂正処理を行うために、アクセス要求のあったデータ以外の部分も不揮発性メモリから読み出す必要があり、アクセス処理のオーバーヘッドが増大する結果となる。
【０００４】
この点、サイズの大きいセクタ単位のアクセスを行うためのバンクとサイズの小さいデータ長のアクセスを行うためのバンクの２つの領域を設けて、それぞれのサイズでエラー検出訂正処理を行う半導体記憶装置が提案されている（例えば、特許文献１参照。）。この半導体記憶装置では、ＮＡＮＤ型フラッシュメモリにおいて、セクタ単位のシーケンシャルアクセス用バンクと、データ単位のランダムアクセス用バンクとが設けられている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−０８４４９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述の従来技術では、アクセス可能な単位のサイズを２種類設けて、それぞれのサイズによってエラー検出訂正処理を行っている。しかしながら、この従来の技術では、ランダムアクセス用バンクではシーケンシャルアクセス用バンクよりも小さなデータ単位でエラー訂正コードを生成するため、エラー訂正コードが占める容量が相対的に大きくなり、容量効率も悪化するという問題がある。この場合、ランダムアクセス用バンクにおける記憶容量が不足した際には、一部のデータをシーケンシャルアクセス用バンクに移行する必要が生じ、システムのパフォーマンスを低下させる要因となってしまう。一般に、ランダムアクセス用バンクはシーケンシャルアクセス用バンクよりも数倍のビットコストとなるため、ランダムアクセス用バンクの容量を大きくしてしまうとシステムコストに直接大きく影響してしまう。
【０００７】
本技術はこのような状況に鑑みて生み出されたものであり、不揮発性メモリの記憶容量を圧迫することなく、アクセスサイズに適したエラー訂正コードを用いてエラー検出訂正処理を行うことを目的とする。
【課題を解決するための手段】
【０００８】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、メモリから読み出された第１のデータ単位および当該第１のデータ単位に対応する第１のエラー検出符号に従ってエラー検出を行う第１のエラー検出部と、上記第１のデータ単位よりも小さい第２のデータ単位に対応する第２のエラー検出符号が上記メモリとは異なるエラー検出符号保持部に保持されている場合に、上記メモリから読み出された上記第２のデータ単位および上記エラー検出符号保持部に保持されている上記第２のエラー検出符号に従ってエラー検出を行う第２のエラー検出部とを具備する記憶制御装置およびその記憶制御方法である。これにより、第１のデータ単位よりも小さい第２のデータ単位に対応する第２のエラー検出符号を用いてエラー検出処理を行わせるという作用をもたらす。
【０００９】
また、本技術の第２の側面は、ライト対象となるデータを含む第１のデータ単位に対応して第１のエラー検出符号を生成して上記第１のデータ単位および上記第１のエラー検出符号をメモリに対してライトさせる第１のエラー検出符号生成部と、上記第１のデータ単位よりも小さい第２のデータ単位に対応する第２のエラー検出符号を保持するエラー検出符号保持部と、リード対象となるデータを含む上記第２のデータ単位に対応する上記第２のエラー検出符号が上記エラー検出符号保持部に保持されていない場合に、上記メモリから読み出された上記リード対象となるデータを含む上記第１のデータ単位および当該第１のデータ単位に対応する上記第１のエラー検出符号に従ってエラー検出を行う第１のエラー検出部と、上記リード対象となるデータを含む上記第２のデータ単位に対応する上記第２のエラー検出符号が上記エラー検出符号保持部に保持されていない場合に、上記メモリから読み出された上記リード対象となるデータを含む上記第２のデータ単位に対応する上記第２のエラー検出符号を生成して上記エラー検出符号保持部に保持させる第２のエラー検出符号生成部と、上記リード対象となるデータを含む上記第２のデータ単位に対応する第２のエラー検出符号が上記エラー検出符号保持部に保持されている場合に、上記メモリから読み出された上記リード対象となるデータを含む上記第２のデータ単位および上記エラー検出符号保持部に保持されている上記第２のエラー検出符号に従ってエラー検出を行う第２のエラー検出部とを具備する記憶制御装置およびその記憶制御方法である。これにより、第１のデータ単位よりも小さい第２のデータ単位に対応する第２のエラー検出符号がエラー検出符号保持部に保持されている場合に、これを用いてエラー検出処理を行わせるという作用をもたらす。
【００１０】
また、この第２の側面において、上記第２のエラー検出符号生成部は、上記ライト対象となるデータを含む上記第２のデータ単位に対応する第２のエラー検出符号が上記エラー検出符号保持部に保持されている場合に、上記ライト対象となるデータを含む上記第２のデータ単位に対応する上記第２のエラー検出符号を生成して上記エラー検出符号保持部に保持させるようにしてもよい。これにより、ライト時にエラー検出符号保持部を更新させるという作用をもたらす。
【００１１】
また、この第２の側面において、上記第１または第２のエラー検出符号はエラー訂正機能を備え、上記第１または第２のエラー検出部においてエラーが検出された場合に上記第１または第２のエラー検出符号に従ってエラー訂正を行うエラー訂正部をさらに具備してもよい。これにより、第１のデータ単位よりも小さい第２のデータ単位に対応する第２のエラー検出符号を用いてエラー訂正処理を行わせるという作用をもたらす。
【００１２】
また、本技術の第３の側面は、第１のデータ単位に対応する第１のエラー検出符号を上記第１のデータ単位と対応付けて記憶するメモリと、ライト対象となるデータを含む上記第１のデータ単位に対応して上記第１のエラー検出符号を生成して上記第１のデータ単位および上記第１のエラー検出符号を上記メモリに対してライトさせる第１のエラー検出符号生成部と、上記第１のデータ単位よりも小さい第２のデータ単位に対応する第２のエラー検出符号を保持するエラー検出符号保持部と、リード対象となるデータを含む上記第２のデータ単位に対応する上記第２のエラー検出符号が上記エラー検出符号保持部に保持されていない場合に、上記メモリから読み出された上記リード対象となるデータを含む上記第１のデータ単位および当該第１のデータ単位に対応する上記第１のエラー検出符号に従ってエラー検出を行う第１のエラー検出部と、上記リード対象となるデータを含む上記第２のデータ単位に対応する上記第２のエラー検出符号が上記エラー検出符号保持部に保持されていない場合に、上記メモリから読み出された上記リード対象となるデータを含む上記第２のデータ単位に対応する上記第２のエラー検出符号を生成して上記エラー検出符号保持部に保持させる第２のエラー検出符号生成部と、上記リード対象となるデータを含む上記第２のデータ単位に対応する第２のエラー検出符号が上記エラー検出符号保持部に保持されている場合に、上記メモリから読み出された上記リード対象となるデータを含む上記第２のデータ単位および上記エラー検出符号保持部に保持されている上記第２のエラー検出符号に従ってエラー検出を行う第２のエラー検出部とを具備する記憶装置である。これにより、第１のデータ単位よりも小さい第２のデータ単位に対応する第２のエラー検出符号がエラー検出符号保持部に保持されている場合に、これを用いてメモリのエラー検出処理を行わせるという作用をもたらす。なお、この第３の側面において、上記メモリは、不揮発性メモリを採用することができる。
【００１３】
また、本技術の第４の側面は、第１のデータ単位に対応する第１のエラー検出符号を上記第１のデータ単位と対応付けて記憶するメモリと、ライト対象となるデータを含む上記第１のデータ単位に対応して上記第１のエラー検出符号を生成して上記第１のデータ単位および上記第１のエラー検出符号を上記メモリに対してライトさせる第１のエラー検出符号生成部と、上記第１のデータ単位よりも小さい第２のデータ単位に対応する第２のエラー検出符号を保持するエラー検出符号保持部と、リード対象となるデータを含む上記第２のデータ単位に対応する上記第２のエラー検出符号が上記エラー検出符号保持部に保持されていない場合に、上記メモリから読み出された上記リード対象となるデータを含む上記第１のデータ単位および当該第１のデータ単位に対応する上記第１のエラー検出符号に従ってエラー検出を行う第１のエラー検出部と、上記リード対象となるデータを含む上記第２のデータ単位に対応する上記第２のエラー検出符号が上記エラー検出符号保持部に保持されていない場合に、上記メモリから読み出された上記リード対象となるデータを含む上記第２のデータ単位に対応する上記第２のエラー検出符号を生成して上記エラー検出符号保持部に保持させる第２のエラー検出符号生成部と、上記リード対象となるデータを含む上記第２のデータ単位に対応する第２のエラー検出符号が上記エラー検出符号保持部に保持されている場合に、上記メモリから読み出された上記リード対象となるデータを含む上記第２のデータ単位および上記エラー検出符号保持部に保持されている上記第２のエラー検出符号に従ってエラー検出を行う第２のエラー検出部と、上記メモリに対してデータのリードまたはライトを要求するリクエストを発行するプロセッサとを具備する情報処理システムである。これにより、プロセッサからのアクセスに対し、第１のデータ単位よりも小さい第２のデータ単位に対応する第２のエラー検出符号がエラー検出符号保持部に保持されている場合に、これを用いてメモリのエラー検出処理を行わせるという作用をもたらす。なお、この第４の側面において、上記メモリは、不揮発性メモリを採用することができる。
【発明の効果】
【００１４】
本技術によれば、不揮発性メモリの記憶容量を圧迫することなく、アクセスサイズに適したエラー訂正コードを用いてエラー検出訂正処理を行うことができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００１５】
【図１】本技術の実施の形態における情報処理システムの全体構成例を示す図である。
【図２】本技術の実施の形態におけるＮＶＭ制御部２００の構成例を示す図である。
【図３】本技術の実施の形態におけるＮＶＭ３００の構成例を示す図である。
【図４】本技術の実施の形態におけるメモリアドレスフィールドの一例を示す図である。
【図５】本技術の実施の形態における第２ＥＣＣバッファ２５０の項目例を示す図である。
【図６】本技術の実施の形態における第２ＥＣＣバッファ２５０の構成例を示す図である。
【図７】本技術の実施の形態における情報処理システムのリード動作手順の一例を示す流れ図である。
【図８】本技術の実施の形態における情報処理システムのライト動作手順の一例を示す流れ図である。
【図９】本技術の実施の形態の情報処理システムによる処理速度向上例を示す図である。
【図１０】本技術の実施の形態の情報処理システムにおける１回目のリード動作のデータフロー例を示す図である。
【図１１】本技術の実施の形態の情報処理システムにおける２回目以降のリード動作のデータフロー例を示す図である。
【図１２】本技術の実施の形態の情報処理システムにおいて第２ＥＣＣバッファ２５０に対応する第２ＥＣＣが存在する場合のライト動作のデータフロー例を示す図である。
【図１３】本技術の実施の形態の情報処理システムにおいて第２ＥＣＣバッファ２５０に対応する第２ＥＣＣが存在しない場合のライト動作のデータフロー例を示す図である。
【発明を実施するための形態】
【００１６】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．実施の形態の構成
２．実施の形態の動作
【００１７】
＜１．実施の形態の構成＞
［情報処理システムの構成例］
図１は、本技術の実施の形態における情報処理システムの全体構成例を示す図である。この情報処理システムは、プロセッサ１１０と、ＤＲＡＭ１２０と、不揮発性メモリ（ＮＶＭ）３００と、ＮＶＭ制御部２００とを備えている。
【００１８】
プロセッサ１１０は、各種プログラムを実行することにより情報処理を遂行する処理装置である。このプロセッサ１１０は、ＤＲＡＭ１２０における記憶領域をワーク領域として、データのロードまたはストアを繰り返すことによりプログラムを実行する。また、このプロセッサ１１０は、ＮＶＭ制御部２００を介してＮＶＭ３００に記憶されている各データに対してアクセスを行う。
【００１９】
ＤＲＡＭ１２０は、プロセッサ１１０の主記憶装置として機能する揮発性のメモリである。このＤＲＡＭ１２０は、プロセッサ１１０におけるプログラムの実行に必要なデータを記憶する。
【００２０】
ＮＶＭ３００は、プロセッサ１１０の補助記憶装置として機能する不揮発性のメモリである。このＮＶＭ３００は、ＮＶＭ制御部２００の制御によりアクセスされる。このＮＶＭ３００は、フラッシュメモリにより構成されてもよく、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）により構成されてもよい。このＮＶＭ３００は、ＳｎＤ（Store and Download）モデルおよびＸＩＰ（eXecute In Plane）モデルの何れにも適用することができる。ＳｎＤモデルでは、ＮＶＭ３００上のデータはＤＲＡＭ１２０を介してプロセッサ１１０からアクセスされる。したがって、ＮＶＭ３００上のデータは一旦ＤＲＡＭ１２０に転送されることによりメモリ空間としてアクセス可能となる。一方、ＸＩＰモデルでは、ＮＶＭ３００に記憶されているデータはそのままプロセッサ１１０のメモリ空間としてアクセス可能である。このＸＩＰモデルの場合、ＤＲＡＭ１２０の役割をＮＶＭ３００に持たせ、ＤＲＡＭ１２０自体を省いて構成してもよい。なお、ＮＶＭ３００は、特許請求の範囲に記載のメモリの一例である。
【００２１】
ＮＶＭ制御部２００は、ＮＶＭ３００を制御するものであり、プロセッサ１１０とＮＶＭ３００とを接続する。このＮＶＭ制御部２００はＮＶＭ３００との間でデータ転送するためのデータバッファを備える。このデータバッファはＮＶＭ制御部２００の外付けメモリデバイスとして実現してもよく、また、内蔵メモリとして実現してもよい。なお、ＮＶＭ制御部２００は、特許請求の範囲に記載の記憶制御装置の一例である。また、ＮＶＭ制御部２００およびＮＶＭ３００は、特許請求の範囲に記載の記憶装置の一例である。
【００２２】
図２は、本技術の実施の形態におけるＮＶＭ制御部２００の構成例を示す図である。このＮＶＭ制御部２００は、プロセッサインターフェース２０１と、ＮＶＭインターフェース２０３と、データバッファ２１０とを備えている。また、第１ＥＣＣ生成部２２０と、第１ＥＣＣ誤り検出部２３０と、第２ＥＣＣ生成部２４０と、第２ＥＣＣバッファ２５０と、第２ＥＣＣバッファ制御部２６０と、第２ＥＣＣ誤り検出部２７０と、誤り訂正部２８０と、アクセス制御部２９０とを備えている。
【００２３】
プロセッサインターフェース２０１は、プロセッサ１１０との間のやりとりを行うためのインターフェースである。また、ＮＶＭインターフェース２０３は、ＮＶＭ３００との間のやりとりを行うためのインターフェースである。
【００２４】
データバッファ２１０は、プロセッサ１１０とＮＶＭ３００との間で転送されるデータのバッファである。プロセッサ１１０からＮＶＭ３００に対するライト（ストア）動作であれば、プロセッサ１１０から受け付けられたデータが保持される。ＮＶＭ３００からプロセッサ１１０に対するリード（ロード）動作であれば、ＮＶＭ３００から読み出されたデータが保持される。
【００２５】
第１ＥＣＣ生成部２２０は、ライト動作の際、データバッファ２１０に保持されたデータについて第１のエラー訂正コード（第１ＥＣＣ）を生成するものである。この第１ＥＣＣ生成部２２０によって生成された第１ＥＣＣは、ＮＶＭ３００においてデータと対応付けて記憶される。したがって、この第１ＥＣＣは、ＮＶＭ３００におけるアクセス単位を符号化対象とするエラー訂正コードであることが好ましい。また、第１ＥＣＣとしては、ＢＣＨ符号を採用することができる。なお、エラー訂正コードはエラー（誤り）検出の機能も包含しているため、誤り検出符号、エラー検出符号、エラー検出コードなどと呼称する場合もある。なお、第１ＥＣＣ生成部２２０は、特許請求の範囲に記載の第１のエラー検出符号生成部の一例である。
【００２６】
第１ＥＣＣ誤り検出部２３０は、リード動作の際、ＮＶＭ３００から読み出されたデータおよび第１ＥＣＣに基づいて、データにおける誤り（エラー）を検出するものである。なお、第１ＥＣＣ誤り検出部２３０は、特許請求の範囲に記載の第１のエラー検出部の一例である。
【００２７】
第２ＥＣＣ生成部２４０は、データバッファ２１０に保持されたデータについて第２のエラー訂正コード（第２ＥＣＣ）を生成するものである。この第２ＥＣＣ生成部２４０によって生成された第２ＥＣＣは、ＮＶＭ３００におけるデータと対応付けて、第２ＥＣＣバッファ２５０に保持される。この第２ＥＣＣの符号化対象の単位は、第１ＥＣＣよりも小さく設定される。例えば、ＮＶＭ３００におけるページアクセスの単位で第１ＥＣＣを生成し、ＮＶＭ３００におけるランダムアクセスの単位で第２ＥＣＣを生成することが考えられる。第１ＥＣＣの符号化対象の単位は、第２ＥＣＣの符号化対象の単位の整数倍であることが好ましい。以下の例では、第１ＥＣＣの符号化対象の単位を２５６バイト、第２ＥＣＣの符号化対象の単位を３２バイトと想定するが、これに限定されるものではない。また、第２ＥＣＣとしては、ハミング符号を採用することができる。なお、第２ＥＣＣ生成部２４０は、特許請求の範囲に記載の第２のエラー検出符号生成部の一例である。また、ページアクセス単位は特許請求の範囲に記載の第１のデータ単位の一例であり、ランダムアクセス単位は特許請求の範囲に記載の第２のデータ単位の一例である。
【００２８】
第２ＥＣＣバッファ２５０は、第２ＥＣＣ生成部２４０において生成された第２ＥＣＣを保持するバッファである。第２ＥＣＣはＮＶＭ３００には記憶されず、この第２ＥＣＣバッファ２５０に一時的に保持される。ＮＶＭ３００には第１ＥＣＣが記憶されているため、基本的なデータ保持特性は第１ＥＣＣにより担保される。したがって、第２ＥＣＣは補助的に利用されるものであり、第２ＥＣＣバッファ２５０に容量上の制約がある場合には第２ＥＣＣを保持しないこともあり得る。この第２ＥＣＣバッファ２５０は同図のようにＮＶＭ制御部２００の内部に存在してもよく、また、ＮＶＭ制御部２００の外部に設けてもよい。なお、第２ＥＣＣバッファ２５０は、特許請求の範囲に記載のエラー検出符号保持部の一例である。この第２ＥＣＣバッファ２５０の構成例については図面を参照して後述する。
【００２９】
第２ＥＣＣバッファ制御部２６０は、第２ＥＣＣバッファ２５０の動作を制御するものである。この第２ＥＣＣバッファ制御部２６０は、第２ＥＣＣバッファ２５０に対するリードおよびライトの制御や、第２ＥＣＣバッファ２５０に保持された第２ＥＣＣとそのアドレスの管理などを行う。
【００３０】
第２ＥＣＣ誤り検出部２７０は、リード動作の際、ＮＶＭ３００から読み出されたデータおよび第２ＥＣＣバッファ２５０に保持されている第２ＥＣＣに基づいて、データにおける誤り（エラー）を検出するものである。なお、第２ＥＣＣ誤り検出部２７０は、特許請求の範囲に記載の第２のエラー検出部の一例である。
【００３１】
誤り訂正部２８０は、第１ＥＣＣ誤り検出部２３０または第２ＥＣＣ誤り検出部２７０において誤り（エラー）が検出された際に、その誤りを訂正するものである。この誤り訂正部２８０は、それぞれの誤りを検出したエラー訂正コードによって誤り訂正を行う。すなわち、第１ＥＣＣ誤り検出部２３０において誤りが検出された場合には第１ＥＣＣにより誤り訂正を行い、第２ＥＣＣ誤り検出部２７０において誤りが検出された場合には第２ＥＣＣにより誤り訂正を行う。なお、誤り訂正部２８０は、特許請求の範囲に記載のエラー訂正部の一例である。
【００３２】
アクセス制御部２９０は、プロセッサ１１０からＮＶＭ３００に対するアクセスを制御するものである。すなわち、このアクセス制御部２９０は、プロセッサ１１０からのコマンドおよびデータに基づいてＮＶＭ３００に対するアクセス制御を行い、その結果をステータスとしてプロセッサ１１０に返す役割を有する。
【００３３】
なお、ここでは、第１ＥＣＣによる訂正処理を前提としているため、第２ＥＣＣの訂正能力は第１ＥＣＣよりも低いもので構わない。例えば、第１ＥＣＣの符号化単位が２５６バイト、第２ＥＣＣの符号化単位が３２バイトとしたとき、第１ＥＣＣにおいて８ビット訂正の訂正能力を有するのであれば、第２ＥＣＣにおいては２ビット訂正の訂正能力でも構わない。この場合、２ビット訂正の訂正能力であれば、ＮＶＭ３００のデータに対して約１０％以下の容量で実現することができ、少ない容量で多くのデータ領域を高速化することができる。
【００３４】
図３は、本技術の実施の形態におけるＮＶＭ３００の構成例を示す図である。ＮＶＭ３００は、上述のように、フラッシュメモリにより構成されてもよく、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）により構成されてもよい。同図（ａ）はＮＶＭ３００をＮＡＮＤ型フラッシュメモリにより構成した場合の例であり、同図（ｂ）はＮＶＭ３００をＮＶＲＡＭにより構成した場合の例である。
【００３５】
ＮＡＮＤ型フラッシュメモリの場合は、ページ毎にまとめてアクセスされるため、第１ＥＣＣ３１２を符号化対象となるデータ３１１に続いて記憶することが好ましい。一方、ＮＶＲＡＭの場合は、ランダムアクセスが可能であることから、第１ＥＣＣ３２２をデータ３２１とは異なる領域に記憶することが好ましい。
【００３６】
［第２ＥＣＣバッファの構成例］
図４は、本技術の実施の形態におけるメモリアドレスフィールドの一例を示す図である。この例では、第１ＥＣＣの符号化対象の単位を２５６バイト、第２ＥＣＣの符号化対象の単位を３２バイトと想定している。したがって、３２ビットアドレス空間とした場合、２５６バイトの第１ＥＣＣ対象データ空間は下位８ビットのアドレスフィールドＮＶＭ−ＡＤＲＬ６２０に割り当てられる。残りの上位２４ビットアドレスフィールドＮＶＭ−ＡＤＲＵ６１０は、タグアドレスとして第２ＥＣＣバッファ２５０における比較対象となる。
【００３７】
下位８ビットアドレスＮＶＭ−ＡＤＲＬ６２０において、３２バイトの第２ＥＣＣ対象データ空間は下位５ビットのアドレスフィールドＮＶＭ−ＡＤＲＬｂ６２２に割り当てられる。残りのアドレスフィールドＮＶＭ−ＡＤＲＬａ６２１は、第２ＥＣＣバッファ２５０において、ページアクセス単位の２５６バイトの中から目的のランダムアクセス単位の３２ビットを特定するために利用される。
【００３８】
図５は、本技術の実施の形態における第２ＥＣＣバッファ２５０の項目例を示す図である。この第２ＥＣＣバッファ２５０はｎ＋１個のエントリ（ｎは１以上の整数）からなるテーブル構成を有しており、各エントリはタグアドレス２５１と第２ＥＣＣ２５２との組合せを保持する。各エントリには、第２ＥＣＣバッファ２５０のバッファ内アドレスＥＢＡＤＲが付与されている。このテーブル構成の記憶素子としては、ＮＶＭ３００と異なり、揮発性メモリを用いることができる。
【００３９】
なお、この例ではフルアソシアティブ方式のキャッシュメモリと同等の構成を想定しており、メモリアドレスとバッファ内アドレスとの間に制約は設けられていないため、各エントリにはメモリアドレスとは無関係に第２ＥＣＣを保持することができる。第２ＥＣＣバッファ２５０に空き領域がなくなった場合も通常のキャッシュメモリと同様のエントリ選択方式を採用することができる。例えば、ＬＲＵ（Least Recently Used）方式により、最近最も使われていないエントリを利用することが考えられる。また、利用頻度が最も低いエントリを利用するようにしてもよい。
【００４０】
タグアドレス２５１はアドレスフィールドの上位部分であり、上述の例では上位２４ビットアドレスフィールドＮＶＭ−ＡＤＲＵに相当する。この例では、それぞれのタグアドレスをＥＢＡＤＲｉ−ＡＤＲＵと表す。ここで、ｉはバッファ内アドレスＥＢＡＤＲを意味する。
【００４１】
第２ＥＣＣ２５２は、上述のようにランダムアクセス単位のデータを符号化対象とするエラー訂正コードである。ここでは、ページアクセス単位の２５６バイトに対してランダムアクセス単位の３２バイトのデータを符号化対象とするため、各エントリには８つずつの第２ＥＣＣが保持される。この例では、それぞれの第２ＥＣＣをＥＢＡＤＲｉ−ＥＣＣ＃ｊと表す。ここで、ｉはバッファ内アドレスＥＢＡＤＲを意味し、ｊはページアクセス単位の２５６バイトにおけるランダムアクセス単位の３２ビットの順序（０乃至７の整数）を意味する。
【００４２】
図６は、本技術の実施の形態における第２ＥＣＣバッファ２５０の構成例を示す図である。この第２ＥＣＣバッファ２５０は、上述のタグアドレス２５１と第２ＥＣＣ２５２との組合せを保持するテーブルと、比較器２５３と、第１の選択器２５４と、第２の選択器２５５とを備える。
【００４３】
比較器２５３は、上位アドレスＮＶＭ−ＡＤＲＵ６１０とタグアドレスＥＢＡＤＲｉ−ＡＤＲＵ２５１とを比較するｎ＋１個の比較器である。この比較結果は第１の選択器２５４に供給される。
【００４４】
第１の選択器２５４は、比較器２５３による比較結果に従って、８個の第２ＥＣＣ２５２からなるｎ＋１個のエントリの中から何れかのエントリを選択するものである。比較器２５３による比較の結果、ｎ＋１個のエントリの何れかに上位アドレスＮＶＭ−ＡＤＲＵ６１０と合致するタグアドレスが存在する場合には、対応するエントリに含まれる８個の第２ＥＣＣ２５２が第１の選択器２５４において選択される。
【００４５】
第２の選択器２５５は、第１の選択器２５４において選択された８個の第２ＥＣＣ２５２の中から、アドレスフィールドＮＶＭ−ＡＤＲＬａ６２１によって特定された第２ＥＣＣを選択するものである。このようにして選択された第２ＥＣＣは、誤り検出のために第２ＥＣＣ誤り検出部２７０に供給される。
【００４６】
なお、ここでは読出しの際に必要な回路構成例を示したが、書込みの際にも同様の要領でメモリアドレスと第２ＥＣＣとの対応関係を特定することになる。
【００４７】
＜２．実施の形態の動作＞
［情報処理システムの動作例］
図７は、本技術の実施の形態における情報処理システムのリード動作手順の一例を示す流れ図である。
【００４８】
第２ＥＣＣバッファ２５０にリード対象となるデータの第２ＥＣＣが存在しなかった場合（ステップＳ９１１）、ＮＶＭ３００からページアクセス単位によるリードアクセスが行われる（ステップＳ９２１）。これにより、データおよび対応する第１ＥＣＣがＮＶＭ３００から読み出される。
【００４９】
ＮＶＭ３００から読み出されたデータおよび第１ＥＣＣに基づいて、第１ＥＣＣ誤り検出部２３０がデータにおける誤りを検出し、誤り訂正部２８０が誤りを訂正する（ステップＳ９２２）。誤り訂正されたデータはデータバッファ２１０に保持される。これと並行して、ＮＶＭ３００から読み出されたデータについて、第２ＥＣＣ生成部２４０において第２ＥＣＣの生成処理が行われる（ステップＳ９２３）。このようにして生成された第２ＥＣＣは第２ＥＣＣバッファ２５０に保持される（ステップＳ９２４）。ページアクセスの単位は、第２ＥＣＣの符号化対象であるランダムアクセスの単位よりも大きいため、複数の第２ＥＣＣを生成するために第２ＥＣＣの生成処理が繰り返される（ステップＳ９２５）。想定している例では、ページアクセスにより２５６バイトのデータが読み出されるため、３２バイトを単位として８つの第２ＥＣＣが生成される。
【００５０】
データバッファ２１０に保持されたページアクセス単位のデータのうち、リード対象となるデータがプロセッサインターフェース２０１を介してプロセッサ１１０に出力される（ステップＳ９２６）。
【００５１】
一方、第２ＥＣＣバッファ２５０にリード対象となるデータの第２ＥＣＣが存在した場合（ステップＳ９１１）、その第２ＥＣＣが第２ＥＣＣバッファ２５０から読み出される（ステップＳ９１２）。これと並行して、そのリード対象となるデータのＮＶＭ３００からの読出しが行われて、データバッファ２１０に保持される（ステップＳ９１３）。
【００５２】
ＮＶＭ３００から読み出されたデータおよび第２ＥＣＣバッファ２５０から読み出された第２ＥＣＣに基づいて、第２ＥＣＣ誤り検出部２７０がデータにおける誤りを検出し、誤り訂正部２８０が誤りを訂正する（ステップＳ９１４）。誤りの訂正が発生した場合にはデータバッファ２１０上で訂正個所が修正され、リード対象となるデータがプロセッサインターフェース２０１を介してプロセッサ１１０に出力される（ステップＳ９１５）。リード対象となるデータが完了していない場合にはデータが終了するまでＮＶＭ３００からの読出しが繰り返される（ステップＳ９１６）。
【００５３】
なお、ステップＳ９２２は、特許請求の範囲に記載の第１のエラー検出手順の一例である。また、ステップＳ９２３は、特許請求の範囲に記載の第２のエラー検出符号生成手順の一例である。また、ステップＳ９１４は、特許請求の範囲に記載の第２のエラー検出手順の一例である。
【００５４】
図８は、本技術の実施の形態における情報処理システムのライト動作手順の一例を示す流れ図である。
【００５５】
ＮＶＭ３００上では第１ＥＣＣによるデータ保護が行われるため、ライト動作の単位はページアクセス単位となる。そのため、まずライト対象データを含むページ全体のデータ（２５６バイト分）をＮＶＭ３００からデータバッファ２１０に読み出す（ステップＳ９３１）。そして、プロセッサ１１０からのライトデータ（３２バイト分）を、データバッファ２１０上のページアクセス単位のデータに埋め込むことにより反映させる（ステップＳ９３２）。
【００５６】
このようにしてライトデータが反映されたデータバッファ２１０上のデータを対象として、第１ＥＣＣ生成部２２０が第１ＥＣＣを生成する（ステップＳ９３３）。これと並行して、第２ＥＣＣバッファ２５０上の第２ＥＣＣが更新される。すなわち、ライト対象データに対応する第２ＥＣＣが第２ＥＣＣバッファ２５０上に存在する場合（ステップＳ９３４）、第２ＥＣＣ生成部２４０がランダムアクセス単位で第２ＥＣＣを生成する（ステップＳ９３５）。生成された第２ＥＣＣは第２ＥＣＣバッファ２５０に保持されることにより更新される（ステップＳ９３６）。ライト対象となるデータの全てについて第２ＥＣＣが生成されていない場合には全ての第２ＥＣＣが生成されるまで第２ＥＣＣ生成処理が繰り返される（ステップＳ９３７）。
【００５７】
ライトデータが反映されたデータバッファ２１０上のページ全体のデータ（２５６バイト分）および第１ＥＣＣ生成部２２０によって生成された第１ＥＣＣは、ＮＶＭ３００に書き込まれる（ステップＳ９３８）。
【００５８】
なお、ステップＳ９３３は、特許請求の範囲に記載の第１のエラー検出符号生成手順の一例である。
【００５９】
［処理速度の向上例］
図９は、本技術の実施の形態の情報処理システムによる処理速度向上例を示す図である。
【００６０】
同図（ａ）は１回目のリード動作タイミングを示している。この場合、第２ＥＣＣバッファ２５０に第２ＥＣＣが保持されていないため、ＮＶＭ３００からページアクセス単位のデータを全て読み出した上で第１ＥＣＣによる誤り検出訂正処理を行う必要がある。したがって、リードビジー期間経過後、ページアクセス単位（２５６バイト分）のデータをＮＶＭ３００からデータバッファ２１０に転送した後に、第１ＥＣＣ誤り検出部２３０および誤り訂正部２８０において誤り検出訂正処理が行われる。その後、データバッファ２１０に保持されたページアクセス単位のデータの中からランダムアクセス単位（３２バイト分）のデータがプロセッサ１１０に転送される。
【００６１】
この１回目のリード動作では、データバッファ２１０への転送と並行して、第２ＥＣＣ生成部２４０において第２ＥＣＣの生成が行われる。想定している例では、ページアクセスにより２５６バイトのデータが読み出されるため、３２バイトを単位として８つの第２ＥＣＣが生成される。
【００６２】
同図（ｂ）は２回目以降のリード動作タイミングを示している。この場合、第２ＥＣＣバッファ２５０に第２ＥＣＣが保持されており、第１ＥＣＣによる誤り検出訂正処理を行う必要がないため、リード対象となるデータのみをＮＶＭ３００からランダムアクセスすることができる。すなわち、リードビジー期間経過後、ランダムアクセス単位（３２バイト分）のデータをＮＶＭ３００からデータバッファ２１０に転送した後に、第２ＥＣＣ誤り検出部２７０および誤り訂正部２８０において誤り検出訂正処理が行われる。その後、データバッファ２１０に保持されたランダムアクセス単位のデータ（３２バイト分）がプロセッサ１１０に転送される。
【００６３】
このように、２回目以降のリード動作では、第２ＥＣＣバッファ２５０に保持されている第２ＥＣＣを利用することができるため、リード対象となるデータのみをＮＶＭ３００からリードすればよく、パフォーマンスを向上させることができる。
【００６４】
［状態別動作まとめ］
図１０は、本技術の実施の形態の情報処理システムにおける１回目のリード動作のデータフロー例を示す図である。この場合、第２ＥＣＣバッファ２５０に第２ＥＣＣが保持されていないため、ＮＶＭ３００からページアクセス単位のデータを全て読み出した上で第１ＥＣＣによる誤り検出訂正処理が行われる。誤り検出訂正処理結果は、データバッファ２１０および第２ＥＣＣ生成部２４０へ出力される。生成された第２ＥＣＣは第２ＥＣＣバッファ２５０上に保持される。
【００６５】
ＮＶＭ３００から読み出されるデータサイズはページサイズ単位であるため、第２ＥＣＣ生成部２４０はランダムアクセス単位に分割して、それぞれについて第２ＥＣＣを生成し、第２ＥＣＣバッファ２５０へ出力する。データバッファ２１０に保持されたページアクセス単位のデータの中からリード対象のランダムアクセス単位のデータがプロセッサ１１０に転送される。
【００６６】
図１１は、本技術の実施の形態の情報処理システムにおける２回目以降のリード動作のデータフロー例を示す図である。この場合、第２ＥＣＣバッファ２５０に第２ＥＣＣが保持されており、第１ＥＣＣによる誤り検出訂正処理を行う必要がなく、第２ＥＣＣによって誤り検出訂正処理が行わる。その結果のデータはデータバッファ２１０を経由してプロセッサインターフェース２０１からプロセッサ１１０に出力される。ＮＶＭ３００からはランダムアクセス単位で読み出され、リード対象となるデータのみを読み出すことができる。
【００６７】
図１２は、本技術の実施の形態の情報処理システムにおいて第２ＥＣＣバッファ２５０に対応する第２ＥＣＣが存在する場合のライト動作のデータフロー例を示す図である。この場合、ライト対象データを含むページ全体のデータをＮＶＭ３００からデータバッファ２１０に読み出す必要がある。そして、プロセッサ１１０からのライトデータを、データバッファ２１０上のページアクセス単位のデータに埋め込むことにより反映させる。その後、ページ全体のデータを第１ＥＣＣ生成部２２０へ供給して第１ＥＣＣを生成し、生成された第１ＥＣＣとライトデータをＮＶＭ３００へ出力する。それと同時に、ページ全体のデータを第２ＥＣＣ生成部２４０へ供給して、ランダムアクセス単位の第２ＥＣＣを生成して、第２ＥＣＣバッファ２５０上の第２ＥＣＣの更新も行う。
【００６８】
図１３は、本技術の実施の形態の情報処理システムにおいて第２ＥＣＣバッファ２５０に対応する第２ＥＣＣが存在しない場合のライト動作のデータフロー例を示す図である。この場合も、ライト対象データを含むページ全体のデータをＮＶＭ３００からデータバッファ２１０に読み出す必要がある。そして、プロセッサ１１０からのライトデータを、データバッファ２１０上のページアクセス単位のデータに埋め込むことにより反映させる。その後、ページ全体のデータを第１ＥＣＣ生成部２２０へ供給して第１ＥＣＣを生成し、生成された第１ＥＣＣとライトデータをＮＶＭ３００へ出力する。ただし、第２ＥＣＣバッファ２５０の更新は必要ないため、第２ＥＣＣの生成も行われない。
【００６９】
このように、本技術の実施の形態によれば、第２ＥＣＣバッファ２５０を設けることにより、ＮＶＭ３００における記憶容量を圧迫することなく、アクセスサイズに応じて第１ＥＣＣまたは第２ＥＣＣを用いてエラー検出訂正処理を行うことができる。第２ＥＣＣバッファ２５０は、キャッシュメモリと同様の構造を有し、必要な容量の第２ＥＣＣのみが保持される。ＮＶＭ３００上のデータを書き換えることや、頻繁にアクセスすることなく、ランダムアクセス性能を向上させることができる。第２ＥＣＣはランダムアクセス単位に対する相対的な容量が大きいため、仮に第２ＥＣＣをＮＶＭ３００に記憶してしまうとアクセス帯域へ影響を与えるおそれがあるが、この実施の形態によればＮＶＭ３００における記憶容量を圧迫することはない。第２ＥＣＣバッファ２５０は不揮発性メモリによって構成することができるため、ビットコストを抑えることができる。
【００７０】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【００７１】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disk）、メモリカード、ブルーレイディスク（Blu-ray Disc（登録商標））等を用いることができる。
【００７２】
なお、本技術は以下のような構成もとることができる。
（１）メモリから読み出された第１のデータ単位および当該第１のデータ単位に対応する第１のエラー検出符号に従ってエラー検出を行う第１のエラー検出部と、
前記第１のデータ単位よりも小さい第２のデータ単位に対応する第２のエラー検出符号が前記メモリとは異なるエラー検出符号保持部に保持されている場合に、前記メモリから読み出された前記第２のデータ単位および前記エラー検出符号保持部に保持されている前記第２のエラー検出符号に従ってエラー検出を行う第２のエラー検出部と
を具備する記憶制御装置。
（２）ライト対象となるデータを含む第１のデータ単位に対応して第１のエラー検出符号を生成して前記第１のデータ単位および前記第１のエラー検出符号をメモリに対してライトさせる第１のエラー検出符号生成部と、
前記第１のデータ単位よりも小さい第２のデータ単位に対応する第２のエラー検出符号を保持するエラー検出符号保持部と、
リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号が前記エラー検出符号保持部に保持されていない場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第１のデータ単位および当該第１のデータ単位に対応する前記第１のエラー検出符号に従ってエラー検出を行う第１のエラー検出部と、
前記リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号が前記エラー検出符号保持部に保持されていない場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号を生成して前記エラー検出符号保持部に保持させる第２のエラー検出符号生成部と、
前記リード対象となるデータを含む前記第２のデータ単位に対応する第２のエラー検出符号が前記エラー検出符号保持部に保持されている場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第２のデータ単位および前記エラー検出符号保持部に保持されている前記第２のエラー検出符号に従ってエラー検出を行う第２のエラー検出部と
を具備する記憶制御装置。
（３）前記第２のエラー検出符号生成部は、前記ライト対象となるデータを含む前記第２のデータ単位に対応する第２のエラー検出符号が前記エラー検出符号保持部に保持されている場合に、前記ライト対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号を生成して前記エラー検出符号保持部に保持させる
前記（２）に記載の記憶制御装置。
（４）前記第１または第２のエラー検出符号はエラー訂正機能を備え、
前記第１または第２のエラー検出部においてエラーが検出された場合に前記第１または第２のエラー検出符号に従ってエラー訂正を行うエラー訂正部をさらに具備する
前記（２）または（３）に記載の記憶制御装置。
（５）第１のデータ単位に対応する第１のエラー検出符号を前記第１のデータ単位と対応付けて記憶するメモリと、
ライト対象となるデータを含む前記第１のデータ単位に対応して前記第１のエラー検出符号を生成して前記第１のデータ単位および前記第１のエラー検出符号を前記メモリに対してライトさせる第１のエラー検出符号生成部と、
前記第１のデータ単位よりも小さい第２のデータ単位に対応する第２のエラー検出符号を保持するエラー検出符号保持部と、
リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号が前記エラー検出符号保持部に保持されていない場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第１のデータ単位および当該第１のデータ単位に対応する前記第１のエラー検出符号に従ってエラー検出を行う第１のエラー検出部と、
前記リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号が前記エラー検出符号保持部に保持されていない場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号を生成して前記エラー検出符号保持部に保持させる第２のエラー検出符号生成部と、
前記リード対象となるデータを含む前記第２のデータ単位に対応する第２のエラー検出符号が前記エラー検出符号保持部に保持されている場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第２のデータ単位および前記エラー検出符号保持部に保持されている前記第２のエラー検出符号に従ってエラー検出を行う第２のエラー検出部と
を具備する記憶装置。
（６）前記メモリは、不揮発性メモリである前記（５）に記載の記憶装置。
（７）第１のデータ単位に対応する第１のエラー検出符号を前記第１のデータ単位と対応付けて記憶するメモリと、
ライト対象となるデータを含む前記第１のデータ単位に対応して前記第１のエラー検出符号を生成して前記第１のデータ単位および前記第１のエラー検出符号を前記メモリに対してライトさせる第１のエラー検出符号生成部と、
前記第１のデータ単位よりも小さい第２のデータ単位に対応する第２のエラー検出符号を保持するエラー検出符号保持部と、
リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号が前記エラー検出符号保持部に保持されていない場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第１のデータ単位および当該第１のデータ単位に対応する前記第１のエラー検出符号に従ってエラー検出を行う第１のエラー検出部と、
前記リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号が前記エラー検出符号保持部に保持されていない場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号を生成して前記エラー検出符号保持部に保持させる第２のエラー検出符号生成部と、
前記リード対象となるデータを含む前記第２のデータ単位に対応する第２のエラー検出符号が前記エラー検出符号保持部に保持されている場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第２のデータ単位および前記エラー検出符号保持部に保持されている前記第２のエラー検出符号に従ってエラー検出を行う第２のエラー検出部と、
前記メモリに対してデータのリードまたはライトを要求するリクエストを発行するプロセッサと
を具備する情報処理システム。
（８）ライト対象となるデータを含む第１のデータ単位に対応して第１のエラー検出符号を生成して前記第１のデータ単位および前記第１のエラー検出符号をメモリに対してライトさせる第１のエラー検出符号生成手順と、
前記第１のデータ単位よりも小さい第２のデータ単位に対応する第２のエラー検出符号であってリード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号が前記メモリとは異なるエラー検出符号保持部に保持されていない場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第１のデータ単位および当該第１のデータ単位に対応する前記第１のエラー検出符号に従ってエラー検出を行う第１のエラー検出手順と、
前記リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号が前記エラー検出符号保持部に保持されていない場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第２のデータ単位に対応する前記第２のエラー検出符号を生成して前記エラー検出符号保持部に保持させる第２のエラー検出符号生成手順と、
前記リード対象となるデータを含む前記第２のデータ単位に対応する第２のエラー検出符号が前記エラー検出符号保持部に保持されている場合に、前記メモリから読み出された前記リード対象となるデータを含む前記第２のデータ単位および前記エラー検出符号保持部に保持されている前記第２のエラー検出符号に従ってエラー検出を行う第２のエラー検出手順と
を具備する記憶制御方法。
【符号の説明】
【００７３】
１１０  プロセッサ
１２０  ＤＲＡＭ
２００  不揮発性メモリ（ＮＶＭ）制御部
２０１  プロセッサインターフェース
２０３  不揮発性メモリ（ＮＶＭ）インターフェース
２１０  データバッファ
２２０  第１ＥＣＣ生成部
２３０  第１ＥＣＣ誤り検出部
２４０  第２ＥＣＣ生成部
２５０  第２ＥＣＣバッファ
２５１  タグアドレス
２５３  比較器
２５４  第１の選択器
２５５  第２の選択器
２６０  第２ＥＣＣバッファ制御部
２７０  第２ＥＣＣ誤り検出部
２８０  誤り訂正部
２９０  アクセス制御部
３００  不揮発性メモリ（ＮＶＭ）
【図１】
0005768654.tif 000002
【図２】
0005768654.tif 000003
【図３】
0005768654.tif 000004
【図４】
0005768654.tif 000005
【図５】
0005768654.tif 000006
【図６】
0005768654.tif 000007
【図７】
0005768654.tif 000008
【図８】
0005768654.tif 000009
【図９】
0005768654.tif 000010
【図１０】
0005768654.tif 000011
【図１１】
0005768654.tif 000012
【図１２】
0005768654.tif 000013
【図１３】
0005768654.tif 000014