説明

記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法

【課題】物理アドレス空間上での配置を意識することなくデータの保持特性を強化する。
【解決手段】エラー訂正コード管理部は、データおよびその第1ECCを単位データとして複数の単位データを記憶部に記憶し、複数の単位データにおける所定の複数の単位データに対応してその第2ECCを記憶部に記憶する場合において、所定の複数の単位データと当該所定の複数の単位データに対応する第2ECCとの対応関係をエントリ毎に管理する。アドレス管理部は、論理アドレスとエラー訂正コード管理部におけるエントリとの対応関係を管理する。エラー訂正部は、リード対象の論理アドレスに対応するエラー訂正コード管理部におけるエントリをアドレス管理部から取得して当該エントリにおいて管理される所定の複数の単位データおよび第2ECCに基づいてエラー訂正を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本技術は、記憶制御装置に関する。詳しくは、エラー訂正コードに基づくエラー訂正を行う記憶制御装置、記憶装置、情報処理システム、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
【背景技術】
【0002】
メモリを使用する際、メモリに記憶されたデータにおいてエラー(誤り)が生じていないかを検出し、訂正するために、エラー訂正コード(ECC:Error Correcting Code)が付与されることがある。特に、NANDフラッシュメモリなどの不揮発性メモリにおいてはこのエラー訂正コードを用いることが一般的となっており、予め決められたデータ単位ごとにECCが付加されてデータが記録される。これにより、データの保持特性が強化される。例えば、データ領域におけるワード単位のデータに対して、ECC領域にECCを記憶する不揮発性メモリシステムが提案されている(例えば、特許文献1参照。)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2011−039585号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述の従来技術では、ECCは物理アドレスが連続したデータに対して生成される。しかし、ホストコンピュータが論理アドレスによって保持特性を強化しようとするデータを指定する場合、それに対応する物理アドレス空間上で連続した不揮発性メモリの領域に記録されているとは限らない。そのため、保持特性を強化しようとするデータを物理アドレス空間の連続した領域に対してコピーした上で、保持特性の強化コマンドを実行する必要が生じる。すなわち、コピーによるオーバーヘッドによりメモリシステムとしてのパフォーマンスは低下するおそれがある。
【0005】
本技術はこのような状況に鑑みて生み出されたものであり、物理アドレス空間上での配置を意識することなくデータの保持特性を強化することを目的とする。
【課題を解決するための手段】
【0006】
本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、データおよびそのデータの第1のエラー訂正コードを単位データとして複数の単位データを記憶部に記憶し、上記複数の単位データにおける所定の複数の単位データに対応してその第2のエラー訂正コードを上記記憶部に記憶する場合において、上記所定の複数の単位データと当該所定の複数の単位データに対応する上記第2のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、論理アドレスと上記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部と、リード対象の論理アドレスに対応する上記エラー訂正コード管理部におけるエントリを上記アドレス管理部から取得して当該エントリにおいて管理される上記所定の複数の単位データおよび上記第2のエラー訂正コードに基づいてエラー訂正を行うエラー訂正部とを具備する記憶制御装置またはその記憶制御方法である。これにより、物理アドレス空間上の任意の複数の単位データに対応する第2のエラー訂正コードによってエラー訂正を行うという作用をもたらす。
【0007】
また、この第1の側面において、上記所定の複数の単位データは上記記憶部において非連続な物理アドレスに記憶されるように構成してもよい。これにより、非連続な物理アドレスに記憶される複数の単位データに対応する第2のエラー訂正コードによってエラー訂正を行うという作用をもたらす。
【0008】
また、この第1の側面において、上記アドレス管理部は、それぞれの論理アドレスに対応する上記第2のエラー訂正コードが記憶されているか否かを示すエラー訂正コードフラグを管理し、上記エラー訂正部は、上記エラー訂正コードフラグが上記第2のエラー訂正コードが記憶されている旨を示す場合のみ上記エラー訂正を行うようにしてもよい。これにより、エラー訂正コードフラグを参照することによって無駄なエラー訂正処理をスキップさせるという作用をもたらす。
【0009】
また、この第1の側面において、上記エラー訂正コード管理部は、上記所定の複数の単位データの結合順序を規定し、上記エラー訂正部は、上記結合順序に従って上記所定の複数の単位データを結合して上記エラー訂正を行うようにしてもよい。これにより、物理アドレス空間上の任意の複数の単位データを任意の順序で結合したデータに対応する第2のエラー訂正コードによってエラー訂正を行うという作用をもたらす。
【0010】
また、この第1の側面において、上記エラー訂正コード管理部は、上記所定の複数の単位データに対応する上記第2のエラー訂正コードの上記記憶部における物理アドレスを保持し、上記エラー訂正部は、上記第2のエラー訂正コードの上記物理アドレスに従って上記記憶部から上記第2のエラー訂正コードを取得するようにしてもよい。これにより、物理アドレス空間上の任意の複数の単位データの物理アドレスに従って、対応する第2のエラー訂正コードによってエラー訂正を行うという作用をもたらす。
【0011】
また、この第1の側面において、上記エラー訂正コード管理部は、上記所定の複数の単位データに対応する上記第2のエラー訂正コードの上記記憶部における物理アドレス内オフセットをさらに保持し、上記エラー訂正部は、上記第2のエラー訂正コードの上記物理アドレスおよび上記物理アドレス内オフセットに従って上記記憶部から上記第2のエラー訂正コードを取得するようにしてもよい。これにより、同一物理アドレスに記憶された複数の第2ECCから選択してエラー訂正を行うという作用をもたらす。
【0012】
また、この第1の側面において、データ保持特性強化コマンドを受け取ると当該データ保持特性強化コマンドにおいて指定された論理アドレスの範囲に記憶されているデータについて上記第2のエラー訂正コードを生成するエラー訂正コード生成部と、上記データ保持特性強化コマンドを受け取ると上記指定された論理アドレスの範囲に記憶されているデータについて対応する上記第2のエラー訂正コードとの対応関係を保持するエントリを上記エラー訂正コード管理部に新たに確保し、その新たに確保されたエントリと上記指定された論理アドレスとの対応関係を上記アドレス管理部に登録するエントリ管理部とをさらに具備してもよい。これにより、データ保持特性強化コマンドを契機としてデータ保持特性強化処理を実行するという作用をもたらす。
【0013】
また、この第1の側面において、上記エントリ管理部は、データ保持特性強化解除コマンドを受け取ると当該データ保持特性強化解除コマンドにおいて指定された論理アドレスの範囲に記憶されているデータについて対応する上記第2のエラー訂正コードとの対応関係を保持するエントリを上記エラー訂正コード管理部において解放し、その解放されたエントリと上記指定された論理アドレスとの対応関係を上記アドレス管理部において削除するようにしてもよい。データ保持特性強化解除コマンドを契機としてデータ保持特性強化解除処理を実行するという作用をもたらす。
【0014】
また、この第1の側面において、上記エラー訂正コード管理部は、エントリ毎に上記第2のエラー訂正コードに対応する単位データの数を保持し、上記エントリ管理部は、エントリを新たに確保する際には上記単位データの数がゼロを示すエントリを対象とするようにしてもよい。これにより、新たにデータ保持特性を強化する際にエラー訂正コード管理部における空きエントリを利用するという作用をもたらす。
【0015】
また、この第1の側面において、上記エラー訂正コード管理部は、エントリ毎に上記第2のエラー訂正コードに対応する単位データの数を保持し、上記エントリ管理部は、エントリを新たに確保する際には上記単位データの数が所定数に満たないエントリを対象とするようにしてもよい。これにより、新たにデータ保持特性を強化する際にエラー訂正コード管理部において対象データの物理アドレスに1つ以上の空きがあるエントリを利用するという作用をもたらす。
【0016】
また、この第1の側面において、上記アドレス管理部は、それぞれの論理アドレスについて最後にアクセスされた時刻を最終アクセス時刻として保持し、上記最終アクセス時刻から所定期間経過するとその論理アドレスに記憶されているデータについて上記第2のエラー訂正コードを生成するエラー訂正コード生成部と、上記最終アクセス時刻から所定期間経過するとその論理アドレスに記憶されているデータについて対応する上記第2のエラー訂正コードとの対応関係を保持するエントリを上記エラー訂正コード管理部に新たに確保し、その新たに確保されたエントリと上記指定された論理アドレスとの対応関係を上記アドレス管理部に登録するエントリ管理部とをさらに具備してもよい。これにより、長い間書き換えられていないデータについては消失するおそれがあるため、データ保持特性強化を施すという作用をもたらす。この場合において、上記エントリ管理部は、上記最終アクセス時刻から所定期間経過するまでの間に上記第2のエラー訂正コードが記憶されている場合には、その論理アドレスに記憶されているデータについて対応する上記第2のエラー訂正コードとの対応関係を保持するエントリを上記エラー訂正コード管理部において解放し、その解放されたエントリと上記指定された論理アドレスとの対応関係を上記アドレス管理部において削除するようにしてもよい。これにより、アクセス頻度が高いデータについては消失するおそれが低いため、データ保持特性強化を解除するという作用をもたらす。
【0017】
また、本技術の第2の側面は、データおよびそのデータの第1のエラー訂正コードを単位データとして複数の単位データを記憶する単位データ記憶部と、上記複数の単位データにおける所定の複数の単位データに対応してその第2のエラー訂正コードを記憶するエラー訂正コード記憶部と、上記所定の複数の単位データと当該所定の複数の単位データに対応する上記第2のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、論理アドレスと上記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部と、リード対象の論理アドレスに対応する上記エラー訂正コード管理部におけるエントリを上記アドレス管理部から取得して当該エントリにおいて管理される上記所定の複数の単位データおよび上記第2のエラー訂正コードに基づいてエラー訂正を行うエラー訂正部とを具備する記憶装置である。これにより、物理アドレス空間上の任意の複数の単位データに対応する第2のエラー訂正コードによってエラー訂正を記憶装置において行うという作用をもたらす。
【0018】
また、この第2の側面において、上記単位データ記憶部および上記エラー訂正コード記憶部は不揮発性メモリであってもよい。
【0019】
また、本技術の第3の側面は、データおよびそのデータの第1のエラー訂正コードを単位データとして複数の単位データを記憶する単位データ記憶部と、上記複数の単位データにおける所定の複数の単位データに対応してその第2のエラー訂正コードを記憶するエラー訂正コード記憶部と、上記所定の複数の単位データと当該所定の複数の単位データに対応する上記第2のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、論理アドレスと上記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部と、リード対象の論理アドレスに対応する上記エラー訂正コード管理部におけるエントリを上記アドレス管理部から取得して当該エントリにおいて管理される上記所定の複数の単位データおよび上記第2のエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と、上記単位データ記憶部に対するアクセスを要求するリクエストを発行するホストコンピュータとを具備する情報処理システムである。これにより、物理アドレス空間上の任意の複数の単位データに対応する第2のエラー訂正コードによってエラー訂正を情報処理システムにおいて行うという作用をもたらす。
【発明の効果】
【0020】
本技術によれば、物理アドレス空間上での配置を意識することなくデータの保持特性を強化することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【0021】
【図1】本技術の実施の形態における情報処理システムの一構成例を示す図である。
【図2】本技術の実施の形態における不揮発性記憶領域303の記憶内容の一例を示す図である。
【図3】本技術の実施の形態における不揮発性記憶領域303の管理態様の一例を示す図である。
【図4】本技術の実施の形態におけるアドレス変換テーブル341の一構成例を示す図である。
【図5】本技術の実施の形態における第2ECC管理テーブル342の一構成例を示す図である。
【図6】本技術の実施の形態におけるライト処理の処理手順の一例を示す図である。
【図7】本技術の実施の形態におけるリード処理の処理手順の一例を示す図である。
【図8】本技術の実施の形態におけるデータ保持特性強化処理の処理手順の一例を示す図である。
【図9】本技術の実施の形態におけるアドレス変換テーブル341の第1の数値例を示す図である。
【図10】本技術の実施の形態におけるアドレス変換テーブル341の第2の数値例を示す図である。
【図11】本技術の実施の形態における第2ECC管理テーブル342の第1の数値例を示す図である。
【図12】本技術の実施の形態における第2ECC管理テーブル342の第2の数値例を示す図である。
【図13】本技術の実施の形態におけるデータ保持特性強化解除処理の処理手順の一例を示す図である。
【図14】本技術の実施の形態における第2ECC管理テーブル342の第3の数値例を示す図である。
【図15】本技術の実施の形態におけるアドレス変換テーブル341の第3の数値例を示す図である。
【図16】本技術の実施の形態における第2ECC管理テーブル342の変形例(第2ECC物理アドレス内オフセット)を示す図である。
【図17】本技術の実施の形態におけるアドレス変換テーブル341の変形例(論理アドレス上で関連性のないデータ)の更新前の数値例を示す図である。
【図18】本技術の実施の形態における第2ECC管理テーブル342の変形例(論理アドレス上で関連性のないデータ)の更新前の数値例を示す図である。
【図19】本技術の実施の形態におけるアドレス変換テーブル341の変形例(論理アドレス上で関連性のないデータ)の更新後の数値例を示す図である。
【図20】本技術の実施の形態における第2ECC管理テーブル342の変形例(論理アドレス上で関連性のないデータ)の更新後の数値例を示す図である。
【図21】本技術の実施の形態におけるアドレス変換テーブル341の変形例(最終アクセス時刻)の数値例を示す図である。
【図22】本技術の実施の形態における不揮発性記憶領域303の変形例(複数の論理アドレス)の記憶内容の一例を示す図である。
【図23】本技術の実施の形態におけるアドレス変換テーブル341の変形例(複数の論理アドレス)の数値例を示す図である。
【図24】本技術の実施の形態における第2ECC管理テーブル342の変形例(複数の論理アドレス)の数値例を示す図である。
【発明を実施するための形態】
【0022】
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態
2.変形例
【0023】
<1.第1の実施の形態>
[情報処理システムの構成]
図1は、本技術の実施の形態における情報処理システムの一構成例を示す図である。この情報処理システムは、ホストコンピュータ100とメモリシステム400とを備える。ホストコンピュータ100は、メモリシステム400に対して、リードまたはライトなどのリクエスト(コマンド)を発行して、それに対する応答(レスポンス)を受け取る。
【0024】
メモリシステム400は、ホストコンピュータ100からリードコマンドを受信することによりデータの読出しを行う。また、メモリシステム400は、ホストコンピュータ100からライトコマンドを受信することによりデータの書込みを行う。また、メモリシステム400は、データ保持特性強化コマンドを受信することによりデータの保持特性を強化するためのエラー訂正コード(ECC:Error Correcting Code)を付与する。
【0025】
リードコマンドでは、リード対象データの先頭論理アドレスとデータサイズとがパラメータとしてホストコンピュータ100により指定される。ライトコマンドでは、ライト対象の先頭論理アドレスとデータサイズとがパラメータとしてホストコンピュータ100により指定されるとともに、ライト対象データが送信される。データ保持特性強化コマンドでは、データ保持特性強化対象の論理アドレスの先頭アドレスとデータサイズとがパラメータとしてホストコンピュータ100により指定される。
【0026】
メモリシステム400は、不揮発性メモリ300と、メモリコントローラ200とを備える。不揮発性メモリ300は、メモリコントローラ200と接続するための外部インターフェース302と、不揮発性記憶領域303とを備えている。不揮発性記憶領域303は、データ記憶領域310と、第1ECC記憶領域320と、第2ECC記憶領域330と、テーブル記憶領域340とを備えている。それぞれの領域に記憶される内容については後述する。
【0027】
メモリコントローラ200は、不揮発性メモリ300を制御するためのコントローラである。このメモリコントローラ200は、第1ECC生成部210と、第2ECC生成部220と、テーブル管理部230と、データライト処理部240とを備えている。また、このメモリコントローラ200は、データリード処理部250と、第1ECC訂正部260と、第2ECC訂正部270と、ECC切替処理部280とを備えている。また、このメモリコントローラ200は、ホストコンピュータ100と接続するためのホストインターフェース201と、不揮発性メモリ300と接続するためのメモリインターフェース203とを備えている。
【0028】
第1ECC生成部210は、ホストコンピュータ100からライトコマンドにより受信したデータに対して付加するエラー訂正コード(第1ECC)を生成するものである。第2ECC生成部220は、データの保持特性を強化するためのエラー訂正コード(第2ECC)を生成するものである。テーブル管理部230は、後述するアドレス変換テーブルや第2ECC管理テーブルなどを管理するためのものである。データライト処理部240は、不揮発性メモリ300に対してデータのライト処理を行うものである。データリード処理部250は、不揮発性メモリ300からデータのリード処理を行うものである。第1ECC訂正部260は、第1ECCを用いてデータの誤り検出および訂正を行うものである。第2ECC訂正部270は、第2ECCを用いてデータの誤り検出および訂正を行うものである。ECC切替処理部280は、第1ECCでは誤り訂正ができなかった場合に、第2ECCを用いたデータの誤り検出および訂正を行うための切替処理を行うものである。
【0029】
なお、第2ECC訂正部270は、特許請求の範囲に記載のエラー訂正部の一例である。また、第2ECC生成部220は、特許請求の範囲に記載のエラー訂正コード生成部の一例である。また、テーブル管理部230は、特許請求の範囲に記載のエントリ管理部の一例である。また、データ記憶領域310および第1ECC記憶領域320は、特許請求の範囲に記載の単位データ記憶部の一例である。また、第2ECC記憶領域330は、特許請求の範囲に記載のエラー訂正コード記憶部の一例である。
【0030】
[不揮発性記憶領域303の記憶形式]
図2は、本技術の実施の形態における不揮発性記憶領域303の記憶内容の一例を示す図である。不揮発性記憶領域303は、例えば34バイトを単位データとしてデータのリードおよびライトが可能であり、34バイト毎に物理アドレスが割り当てられているものとする。
【0031】
34バイトの単位データは、例えば32バイトのデータと、そのデータの2バイトのエラー訂正コード(第1ECC)とからなる。すなわち、データ記憶領域310における32バイトのデータに対して、2バイトの第1ECCが付与されて第1ECC記憶領域320に記憶される。なお、一般的には、不揮発性記憶領域303の単位データ幅をNバイト、データサイズをAバイト、付与される第1ECCのサイズをBバイトとすると、次式が成り立つ。
A+B ≦ N
【0032】
さらに、例えば4つの単位データに対して34バイトの別のエラー訂正コード(第2ECC)を付与することを想定する。この第2ECCは第2ECC記憶領域330に記憶される。この第2ECCの付与対象となる単位データは、物理アドレス空間上で非連続な物理アドレスに記憶されていてもよい。なお、一般的には、付与される第2ECCのサイズをCバイトとすると、次式が成り立つ。
C ≦ N
【0033】
これら単位データおよび第2ECCの不揮発性記憶領域303上の記憶アドレスは、以下に説明する各テーブルにより管理される。
【0034】
なお、この例では、不揮発性メモリとして、特に、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ(NVRAM:Non-Volatile RAM)に適用するのが好適である。不揮発性ランダムアクセスメモリの例としては、PCRAM(Phase-Change RAM)、MRAM(Magnetoresistive RAM)、ReRAM(Resistance RAM)などが挙げられる。また、フラッシュメモリに適用することも可能である。
【0035】
図3は、本技術の実施の形態における不揮発性記憶領域303の管理態様の一例を示す図である。単位データおよび第2ECCの不揮発性記憶領域303上の記憶アドレスは、アドレス変換テーブル341および第2ECC管理テーブル342によって管理される。
【0036】
アドレス変換テーブル341は、論理アドレスと物理アドレスの対応関係を管理するためのテーブルである。この例では、論理アドレスに対応する第2ECC管理テーブル342のインデックスを保持している。なお、アドレス変換テーブル341は、特許請求の範囲に記載のアドレス管理部の一例である。
【0037】
第2ECC管理テーブル342は、第2ECCを管理するテーブルである。この例では、第2ECCの物理アドレスと、その第2ECCに対応する単位データの物理アドレスとをエントリ毎に保持しており、各エントリにはインデックス(第2ECCインデックス)が付与されている。なお、第2ECC管理テーブル342は、特許請求の範囲に記載のエラー訂正コード管理部の一例である。
【0038】
これらアドレス変換テーブル341および第2ECC管理テーブル342は、テーブル記憶領域340に記憶される。
【0039】
[アドレス変換テーブルの構成]
図4は、本技術の実施の形態におけるアドレス変換テーブル341の一構成例を示す図である。このアドレス変換テーブル341は、論理アドレスと、物理アドレスと、データフラグと、第2ECCフラグと、第2ECCインデックスとを関連付けて保持している。
【0040】
論理アドレスは、ホストコンピュータ100において指定される不揮発性記憶領域303のアドレスである。物理アドレスは、不揮発性記憶領域303における物理アドレスである。なお、ここでは、論理アドレスおよび物理アドレスを"0x"で始まる16進数の記述方法によって示している。
【0041】
データフラグは、対応する物理アドレスにデータおよび第1ECCが記憶されているか否を示すフラグである。データフラグが「True」であればデータおよび第1ECCが書き込まれていることを示し、「False」であればデータおよび第1ECCが書き込まれていないことを示す。データフラグが「False」を示す物理アドレスから読み出されるデータは、メモリの初期値となる。なお、NANDフラッシュの場合、初期値は全てのビットが「1」となる
【0042】
第2ECCフラグは、対応する物理アドレスに記憶されているデータに対して第2ECCが付与されているか否かを示すフラグである。第2ECCフラグが「True」であれば第2ECCが付与されてデータ保持特性が強化されていることを示し、「False」であれば第2ECCが付与されていないことを示す。
【0043】
第2ECCインデックスは、第2ECCフラグが「True」を示すときに有効な値であり、第2ECC管理テーブル342の各エントリに付与されている第2ECCインデックスを保持するものである。この図4の例では、アドレス変換テーブル341のエントリ710、711、712および713において、第2ECCインデックスとして「Zi」が保持されている。
【0044】
[第2ECC管理テーブルの構成]
図5は、本技術の実施の形態における第2ECC管理テーブル342の一構成例を示す図である。この第2ECC管理テーブル342は、各エントリにおいて、第2ECCインデックスと、データ数と、第2ECC物理アドレスと、第0乃至第3番目データの物理アドレスが保持されている。
【0045】
第2ECCインデックスは、第2ECC管理テーブル342のエントリを識別するためのインデックスを保持するものである。この第2ECCインデックスの値はアドレス変換テーブル341の対応するエントリに保持され、これによりアドレス変換テーブル341と第2ECC管理テーブル342とが関連付けられる。
【0046】
データ数は、このエントリに含まれるデータの数を示すものである。
【0047】
第2ECC物理アドレスは、このエントリに含まれるデータの第2ECCが記憶されている物理アドレスを保持するものである。
【0048】
第0乃至第3番目データの物理アドレスは、このエントリに含まれるデータの物理アドレスを順番に保持するものである。第0乃至第3番目データの物理アドレスのうち、上述のデータ数によって示される数のデータに対応するもののみが有効である。この例では、第2ECCインデックスが「001」のエントリにおいては、データ数が「2」を示しているため、第0および第1番目データの物理アドレスの2つのみが有効である。また、第2ECCインデックスが「000」のエントリにおいては、データ数が「0」を示しているため、第0乃至第3番目データの物理アドレスの全てが無効である。
【0049】
[ライト処理の処理手順]
図6は、本技術の実施の形態におけるライト処理の処理手順の一例を示す図である。メモリシステム400は、ホストコンピュータ100から、ホストインターフェース201を介してライトコマンドおよびライトデータを受信する。ライトコマンドは、ライト対象の先頭論理アドレスおよびデータサイズをパラメータとして有する。ここにいうデータサイズは、論理アドレスで指定される領域を単位とした数値として表される。例えば、論理アドレスで指定される領域のサイズが32バイトのメモリシステムにおいて、データサイズとして「2」が指定された場合、ホストコンピュータ100から受信してライトするデータのサイズは32×2=64バイトとなる。
【0050】
メモリコントローラ200は、ライトコマンドのパラメータとして受信したライト対象の先頭論理アドレスとデータサイズに基づいて、論理アドレス単位に処理を分割する(ステップS911)。1回の処理で実行されるのは1論理アドレスであり、ライトされるデータのサイズは単位論理アドレスにより指定される領域のサイズとなる。例えば、ライト対象の先頭論理アドレスとして「xi1」、データサイズとして「1」が指定された場合には、1回の処理が行われる。また、ライト対象の先頭論理アドレスとして「xi1」、データサイズとして「2」が指定された場合には、2回の処理に分割される。
【0051】
そして、ライト処理の対象となる論理アドレスが決定される(ステップS912)。対象となる論理アドレスは、ライト対象の先頭論理アドレスから順番に決定されていく。ライト対象の先頭論理アドレスとして「xi1」、データサイズとして「2」が指定された場合、最初に処理を実行する論理アドレスは「xi1」に決定される。そして、次に対象となる論理アドレスは「xi1+1」に決定される。
【0052】
そして、対象となる論理アドレスに対応するアドレス変換情報がアドレス変換テーブル341から取得される(ステップS913)。このアドレス変換情報は、図4において説明した、物理アドレス、データフラグ、第2ECCフラグ、および、第2ECCインデックスである。例えば、図4の例では、対象となる論理アドレスが「xi1」の場合、物理アドレスとして「yi1」、データフラグとして「True」、第2ECCフラグとして「True」、第2ECCインデックスとして「zi」がそれぞれ取得される。
【0053】
そして、ホストコンピュータ100から受信したデータから第1ECCが計算される(ステップS914)。第1ECCの算出に使用されるデータのサイズは、1論理アドレスで指定される領域のサイズ(例えば32バイト)である。
【0054】
ステップS913において取得されたデータフラグが「False」を示している場合には(ステップS915:No)、今回のライト処理によりデータが書き込まれるため、そのエントリのデータフラグは「True」に更新される(ステップS916)。その後、ステップS918の処理に進む。一方、データフラグが「True」となっている場合には(ステップS915:Yes)、さらに第2ECCフラグが「True」となっている場合(ステップS917:Yes)、ステップS921以降の処理を行う。それ以外の場合には、ステップS918の処理に進む。
【0055】
第2ECCフラグが「True」となっている場合の処理として、データに対応する第2ECCによりエラー訂正を行うための物理アドレス情報を取得する(ステップS921)。この物理アドレス情報は、上述の第2ECC管理テーブル342によって管理されているデータ数、第2ECC物理アドレス、および、第0乃至第3番目データの物理アドレスである。ここで取得される物理アドレス情報は、ステップS913において取得された第2ECCインデックスと一致する値を有する第2ECC管理テーブル342のエントリから取得される。
【0056】
例えば、アドレス変換テーブル341が図4に示す値を保持し、第2ECC管理テーブル342が図5に示す値を保持しているときを想定する。論理アドレス「xi1」にライトが発生した際に取得される物理アドレス情報は、第2ECCインデックスが「zi」となる第2ECC管理テーブル342のエントリから取得される。すなわち、データ数は「4」、第2ECC物理アドレスは「ei」、第0番目データの物理アドレスは「yi0」、第1番目データの物理アドレスは「yi1」、第2番目データの物理アドレスは「yi2」、第3番目データの物理アドレスは「yi3」となる。
【0057】
そして、ステップS921において取得された物理アドレス情報に基づいて、第2ECC、データ、および、第1ECCが不揮発性記憶領域303から読み出される(ステップS922)。例えば、第2ECC管理テーブル342から取得された第2ECC物理アドレスが「ei」、データ数が「4」、第0乃至第3番目データの物理アドレスが「yi0」、「yi1」、「yi2」、および、「yi3」である場合を想定する。この場合、物理アドレス「ei」からは第2ECC、物理アドレス「yi0」、「yi1」、「yi2」、および、「yi3」からは、データおよび第1ECCが読み出される。
【0058】
ステップS922において読み出された第2ECCを用いて、データおよび第1ECCのエラー訂正が実行され、その成否により処理手順が分岐する(ステップS923)。このとき、ステップS921において取得されたデータ数が「4」より小さい場合、足りないデータについては不揮発性メモリ300の初期値によってパディングした上で、エラー訂正を実行する。
【0059】
第2ECCを用いたエラー訂正が成功した場合には(ステップS923:Yes)、ステップS924以降の処理が行われる。一方、エラー訂正に失敗した場合には(ステップS923:No)、ライトコマンドのエラー終了がホストコンピュータ100に通知される(ステップS927)。このホストコンピュータ100への通知後、そのライトコマンドはエラー終了となる。
【0060】
ステップS923においてエラー訂正が成功した場合、その物理アドレスに記憶されていたデータおよび第1ECCを、ホストコンピュータ100から受信したデータおよびステップS914において算出された第1ECCに置き換える(ステップS924)。例えば、アドレス変換テーブル341が図4で示される値を保持し、第2ECC管理テーブル342が図5に示される値を保持しているとき、論理アドレス「xi1」に書き込みが発生した場合を想定する。この場合、第1番目データの物理アドレス「yi1」に記憶されているデータおよび第1ECCを、ホストコンピュータ100から受信したデータおよびそのデータから算出された第1ECCに置き換える。
【0061】
次に、ステップS924において置換されたデータおよび第1ECCについて、その第2ECCが算出される(ステップS925)。例えば、アドレス変換テーブル341が図4で示される値を保持し、第2ECC管理テーブル342が図5に示される値を保持しているとき、論理アドレス「xi1」にライトが発生した場合を想定する。この場合、物理アドレス「yi0」から読み出されたデータと第1ECCが第0番目データ、物理アドレス「yi2」から読み出されたデータと第1ECCが第2番目データ、物理アドレス「yi3」から読み出されたデータと第1ECCが第3番目データとなる。また、ホストコンピュータ100から受信したデータおよびそのデータから算出された第1ECCが第1番目データとなる。これら第0乃至3番目データを順番に連結させて、第2ECCが算出される。
【0062】
このようにして算出された第2ECCは、ステップS921において取得された第2ECCの物理アドレスに書き込まれる(ステップS926)。この第2ECCの書込みが完了すると、ステップS918以降の処理が実行される。
【0063】
ステップS916、S917またはS926の処理の後、データと、ステップS914において算出された第1ECCとが、不揮発性記憶領域303に書き込まれる(ステップS918)。そのライト対象の物理アドレスは、ステップS913において取得された物理アドレスである。
【0064】
そして、ステップS911において分割した処理が全て終了したかが判定され(ステップS919)、処理が残っている場合にはステップS912以降の処理が繰り返される。一方、全ての処理が終了したと判定された場合には(ステップS919:No)、ライトコマンドが正常に実行された旨がホストコンピュータ100に通知される(ステップS929)。ホストコンピュータ100への通知が終了した後は、そのライトコマンドの処理は正常終了となる。
【0065】
[リード処理の処理手順]
図7は、本技術の実施の形態におけるリード処理の処理手順の一例を示す図である。メモリシステム400は、ホストコンピュータ100から、ホストインターフェース201を介してリードコマンドを受信する。リードコマンドは、リード対象の先頭論理アドレスおよびデータサイズをパラメータとして有する。データサイズは、ライトコマンドと同様に、論理アドレスで指定される領域を単位とした数値として表される。
【0066】
メモリコントローラ200は、リードコマンドのパラメータとして受信したリード対象の先頭論理アドレスおよびデータサイズに基づいて、論理アドレス単位に処理を分割する(ステップS931)。1回の処理で実行されるのは1論理アドレスであり、読み出されるデータのサイズは単位論理アドレスで指定される領域のサイズとなる。例えば、リード対象の先頭論理アドレスとして「xi1」、データサイズとして「1」が指定された場合には1回の処理に分割され、リード対象の先頭論理アドレスとして「xi1」、データサイズとして「2」が指定された場合には2回の処理に分割される。
【0067】
そして、リード処理の対象となる論理アドレスが決定される(ステップS932)。対象となる論理アドレスは、リード対象の先頭論理アドレスから順番に決定されていく。リード対象の先頭論理アドレスとして「xi1」、データサイズとして「2」が指定された場合、最初に処理を実行する論理アドレスは「xi1」に決定される。そして、次に対象となる論理アドレスは「xi1+1」に決定される。
【0068】
そして、対象となる論理アドレスに対応するアドレス変換情報がアドレス変換テーブル341から取得される(ステップS933)。このアドレス変換情報は、図4において説明した、物理アドレス、データフラグ、第2ECCフラグ、および、第2ECCインデックスである。例えば、図4の例では、対象となる論理アドレスが「xi1」の場合、物理アドレスとして「yi1」、データフラグとして「True」、第2ECCフラグとして「True」、第2ECCインデックスとして「zi」がそれぞれ取得される。
【0069】
ステップS933において取得されたデータフラグが「False」を示している場合には(ステップS934:No)、ステップS933において取得された物理アドレスからデータのみが読み出される(ステップS935)。このとき、読み出される値は不揮発性メモリの初期値である。このデータの読出しの後はステップS938の処理が行われる。
【0070】
一方、データフラグが「True」を示している場合には(ステップS934:Yes)、ステップS933において取得された物理アドレスからデータおよび第1ECCが読み出される(ステップS936)。そして、読み出された第1ECCを用いてデータのエラー訂正が実行され、エラー訂正の成否に応じて処理が分岐する(ステップS937)。すなわち、エラー訂正に成功した場合にはステップS938の処理が行われ、エラー訂正に失敗した場合にはステップS941以降の処理が行われる。
【0071】
第1ECCを用いたエラー訂正に失敗した場合には(ステップS937:No)、ステップS933において取得された第2ECCフラグの値に応じて処理が分岐する(ステップS941)。すなわち、第2ECCフラグが「False」を示している場合には(ステップS941:No)、それ以上のエラー訂正はできないため、リードコマンドのエラー終了がホストコンピュータ100に通知される(ステップS947)。このホストコンピュータ100への通知後、そのリードコマンドはエラー終了となる。
【0072】
一方、第2ECCフラグが「True」を示している場合には(ステップS941:Yes)、データに対応する第2ECCによりエラー訂正を行うための物理アドレス情報を取得する(ステップS942)。この物理アドレス情報は、上述の第2ECC管理テーブル342によって管理されているデータ数、第2ECC物理アドレス、および、第0乃至第3番目データの物理アドレスである。ここで取得される物理アドレス情報は、ステップS913において取得された第2ECCインデックスと一致する値を有する第2ECC管理テーブル342のエントリから取得される。
【0073】
例えば、アドレス変換テーブル341が図4に示す値を保持し、第2ECC管理テーブル342が図5に示す値を保持しているときを想定する。論理アドレス「xi1」にライトが発生した際に取得される物理アドレス情報は、第2ECCインデックスが「zi」となる第2ECC管理テーブル342のエントリから取得される。すなわち、データ数は「4」、第2ECC物理アドレスは「ei」、第0番目データの物理アドレスは「yi0」、第1番目データの物理アドレスは「yi1」、第2番目データの物理アドレスは「yi2」、第3番目データの物理アドレスは「yi3」となる。
【0074】
そして、ステップS942において取得された物理アドレス情報に基づいて、第2ECC、データ、および、第1ECCが不揮発性記憶領域303から読み出される(ステップS943)。例えば、第2ECC管理テーブル342から取得された第2ECC物理アドレスが「ei」、データ数が「4」、第0乃至第3番目データの物理アドレスが「yi0」、「yi1」、「yi2」、および、「yi3」である場合を想定する。この場合、物理アドレス「ei」からは第2ECC、物理アドレス「yi0」、「yi2」、および、「yi3」からは、データおよび第1ECCが読み出される。ただし、物理アドレス「yi1」に記憶されている第1番目データについては、既にステップS936において読み出されているため、ここでのデータの読出しは省略することができる。
【0075】
そして、ステップS943において読み出された第2ECCを用いて、ステップS943において読み出されたデータおよび第1ECCのエラー訂正が行われ、そのエラー訂正の成否によって処理が分岐する(ステップS944)。このとき、ステップS942において取得されたデータ数が「4」より小さい場合、足りないデータについては不揮発性メモリ300の初期値によってパディングした上で、エラー訂正を実行する。
【0076】
第2ECCを用いたエラー訂正が成功した場合には(ステップS944:Yes)、ステップS938以降の処理が行われる。一方、エラー訂正に失敗した場合には(ステップS944:No)、リードコマンドのエラー終了がホストコンピュータ100に通知される(ステップS947)。このホストコンピュータ100への通知後、そのリードコマンドはエラー終了となる。
【0077】
ステップS935、S937またはS944の処理の後、第1ECCまたは第2ECCを用いたエラー訂正処理によって成功したデータがホストコンピュータ100に転送される(ステップS938)。
【0078】
そして、ステップS931において分割した処理が全て終了したかが判定され(ステップS939)、処理が残っている場合にはステップS932以降の処理が繰り返される。一方、全ての処理が終了したと判定された場合には(ステップS939:No)、リードコマンドが正常に実行された旨がホストコンピュータ100に通知される(ステップS949)。ホストコンピュータ100への通知が終了した後は、そのリードコマンドの処理は正常終了となる。
【0079】
[データ保持特性強化処理の処理手順]
図8は、本技術の実施の形態におけるデータ保持特性強化処理の処理手順の一例を示す図である。メモリシステム400は、ホストコンピュータ100から、ホストインターフェース201を介してデータ保持特性強化コマンドを受信する。データ保持特性強化コマンドは、データ保持特性強化対象の先頭論理アドレスおよびデータサイズをパラメータとして有する。データサイズは、ライトコマンドと同様に、論理アドレスで指定される領域を単位とした数値として表される。
【0080】
メモリコントローラ200は、データ保持特性強化コマンドのパラメータとして受信したデータ保持特性強化対象の先頭論理アドレスおよびデータサイズに基づいて、論理アドレス単位に処理を分割する(ステップS951)。1回の処理で実行されるのは第2ECCを付与するデータサイズであり、この例では4論理アドレスを1単位とする。ただし、データサイズで指定された値が「4」で割り切れない場合には、先頭論理アドレスから4論理アドレスずつ処理を実行し、最後に4論理アドレスに満たない数の論理アドレスを1単位として処理をする。例えば、データサイズとして「4」が指定された場合は4論理アドレスの処理を1回実行し、データサイズに「10」が指定された場合には4論理アドレスの処理を2回実行し、最後の処理で2論理アドレスの処理を1回実行する。
【0081】
そして、データ保持特性強化の対象となる論理アドレスが決定される(ステップS952)。対象となる論理アドレスは、データ保持特性強化対象の先頭論理アドレスからステップS951において分割された単位で決定されていく。
【0082】
そして、対象となる1単位分の論理アドレスに対応するアドレス変換情報がアドレス変換テーブル341から取得される(ステップS953)。このアドレス変換情報は、図4において説明した、物理アドレス、データフラグ、第2ECCフラグ、および、第2ECCインデックスである。この処理では、最大4論理アドレス分の物理アドレス、データフラグ、第2ECCフラグ、第2ECCインデックスが取得される。
【0083】
例えば、アドレス変換テーブル341の値として図9に示す例を想定する。処理対象の論理アドレスが「xj」から4論理アドレスの場合は、論理アドレス「xj」の物理アドレスとして「yj0」、データフラグの値として「True」、第2ECCフラグの値として「False」が取得される。また、論理アドレス「xj+1」の物理アドレスとして「yj1」、データフラグの値として「False」、第2ECCフラグの値として「False」が取得される。また、論理アドレス「xj+2」の物理アドレスとして「yj2」、データフラグの値として「True」、第2ECCフラグの値として「False」が取得される。また、論理アドレス「xj+3」の物理アドレスとして「yj3」、データフラグの値として「True」、第2ECCフラグの値として「False」が取得される。一方、処理対象の論理アドレスが「xj+4」から1論理アドレスの場合は、論理アドレス「xj+4」の物理アドレスとして「yj4」、データフラグの値として「False」、第2ECCフラグの値として「False」が取得される。
【0084】
なお、この例において取得される第2ECCインデックスの値は、第2ECCフラグが「False」であるため無効な値となる。
【0085】
ステップS953において取得された物理アドレスからデータおよび第1ECCを不揮発性記憶領域303から読み出す(ステップS954)。ステップS953において取得されたデータフラグが「False」である物理アドレスから読み出されるデータおよび第1ECCは、メモリの初期値となる。例えば、アドレス変換テーブル341の値として図10に示す例を想定する。
【0086】
処理対象の論理アドレスが「xj」から4論理アドレスの場合は、物理アドレス「yj0」、ス「yj1」、「yj2」および「yj3」からデータおよび第1ECCが読み出される。一方、処理対象の論理アドレスが「xj+4」から1論理アドレスの場合は、物理アドレス「yj4」からデータおよび第1ECCが読み出される。このとき、物理アドレス「yj4」に対応するデータフラグが「False」を示しているため、物理アドレス「yj4」から読み出されるデータは不揮発性メモリの初期値となる。
【0087】
ステップS954において読み出された第1ECCを用いて、データのエラー訂正が実行され、その成否により処理手順が分岐する(ステップS955)。このエラー訂正は、ステップS953において取得されたデータフラグが「True」となっている物理アドレスから読み出されたデータについてのみ実行される。ステップS953において取得されたデータフラグが「False」となっている物理アドレスから読み出されたデータのエラー訂正は成功として扱う。全てのユーザーデータのエラー訂正が成功した場合はステップS956の処理に進み、それ以外の場合にはステップS969の処理に進む。
【0088】
第1ECCを用いたエラー訂正に失敗した場合には(ステップS955:No)、データ保持特性強化コマンドのエラー終了がホストコンピュータ100に通知される(ステップS969)。このホストコンピュータ100への通知後、そのデータ保持特性強化コマンドはエラー終了となる。
【0089】
第1ECCを用いたエラー訂正が成功した場合には(ステップS955:Yes)、第2ECC管理テーブル342の空きエントリの検索が行われる(ステップS956)。空きエントリの検索の際には、第2ECC管理テーブル342の中でデータ数が「0」を示すエントリが検索され、そのエントリの第2ECCインデックスの値が取得される。
【0090】
そして、ステップS956において検索されたエントリにおいて第2ECC物理アドレスが取得される(ステップS957)。
【0091】
そして、ステップS954において読み出されたデータと第1ECCの値を、論理アドレスの小さい順に連結させて、第2ECCを算出する(ステップS958)。4論理アドレスに満たない数の論理アドレスの処理では、足りないサイズのデータと第1ECCについては不揮発性メモリ300の初期値によってパディングする。
【0092】
例えば、アドレス変換テーブル341の値として図9に示す例を想定する。処理対象の論理アドレスが「xj」から4論理アドレスの場合は、物理アドレス「yj0」、「yj1」、「yj2」および「yj3」からデータおよび第1ECCが読み出される。このとき、物理アドレス「yj1」に対応するデータフラグが「False」を示しているため、物理アドレス「yj1」から読み出されるデータおよび第1ECCは不揮発性メモリの初期値となる。読み出されたデータは、物理アドレス「yj0」のデータ、第1ECC、物理アドレス「yj1」のデータ、第1ECC、物理アドレス「yj2」のデータ、第1ECC、物理アドレス「yj3」のデータ、第1ECCの順に連結され、第2ECCが算出される。
【0093】
一方、処理を行う論理アドレスが「xj+4」から1論理アドレスの場合は、物理アドレス「yj4」からデータと第1ECC、以降の3物理アドレスから読み出されたデータは不揮発性メモリ300の初期値でパディングし、第2ECCを算出する。この例の場合、データは全て不揮発性メモリ300の初期値となる。
【0094】
ステップS958において算出された第2ECCは、ステップS957において取得された物理アドレスに書き込まれる(ステップS959)。
【0095】
そして、ステップS956において検索されたエントリにおいてデータ数、第0乃至第3番目データの物理アドレスの値が更新される(ステップS961)。データ数には、第2ECCを算出した際に使用されたデータが記憶されている物理アドレスの数を設定される。第0番目データの物理アドレスには、連結されたデータおよび第1ECCの先頭のデータの物理アドレスが設定される。第1乃至第3番目データの物理アドレスには、連結された順に、データおよび第1ECCの物理アドレスが設定される。
【0096】
例えば、アドレス変換テーブル341の値として図9、第2ECC管理テーブル342の値として図11に示す値を有する例を想定する。処理対象の論理アドレスが「xj」から4論理アドレスで、ステップS956において取得された第2ECCインデックスが「zj0」である場合の更新後のエントリの値を図12の上部に示す。一方、処理対象の論理アドレスが「xj+4」から1論理アドレスで、ステップS956において取得された第2ECCインデックスが「zj4」である場合の更新後のエントリの値を図12の下部に示す。
【0097】
そして、アドレス変換テーブル341の値のうち、第2ECCフラグと第2ECCインデックスの値を更新して、不揮発性メモリ300を更新する(ステップS962)。このとき、第2ECCには「True」が設定され、第2ECCインデックスにはステップS956において取得された第2ECCインデックスが設定される。
【0098】
例えば、アドレス変換テーブル341の値として図9、第2ECC管理テーブル342の値として図11に示す値を有する場合を想定する。処理対象の論理アドレスが「xj」から4論理アドレスで、ステップS956において取得された第2ECCインデックス「zj0」である場合の更新後のアドレス変換テーブル341の値を図10のエントリ730乃至733に示す。一方、処理対象の論理アドレスが「xj+4」から1論理アドレスで、ステップS956において取得された第2ECCインデックスが「zj4」である場合の更新後のアドレス変換テーブル341の値を図10のエントリ734に示す。
【0099】
そして、ステップS961において分割した処理が全て終了したかが判定され(ステップS963)、処理が残っている場合にはステップS952以降の処理が繰り返される。一方、全ての処理が終了したと判定された場合には(ステップS963:No)、データ保持特性強化コマンドが正常に実行された旨がホストコンピュータ100に通知される(ステップS964)。ホストコンピュータ100への通知が終了した後は、そのデータ保持特性強化コマンドの処理は正常終了となる。
【0100】
[データ保持特性強化解除処理の処理手順]
図13は、本技術の実施の形態におけるデータ保持特性強化解除処理の処理手順の一例を示す図である。メモリシステム400は、ホストコンピュータ100から、ホストインターフェース201を介してデータ保持特性強化解除コマンドを受信する。データ保持特性強化解除コマンドは、データ保持特性強化解除対象の先頭論理アドレスおよびデータサイズをパラメータとして有する。データサイズは、ライトコマンドと同様に、論理アドレスで指定される領域を単位とした数値として表される。
【0101】
メモリコントローラ200は、データ保持特性強化解除コマンドのパラメータとして受信したデータ保持特性強化解除対象の先頭論理アドレスおよびデータサイズに基づいて、論理アドレス単位に処理を分割する(ステップS971)。1回の処理で実行されるのは1論理アドレスであるものとして開始するが、処理の効率化のために複数の論理アドレスの解除が同時に可能と判別される場合は、1回の処理で複数の論理アドレスの処理を実行する。詳細は以下の説明における該当個所において説明する。
【0102】
そして、データ保持特性強化解除の対象となる論理アドレスが決定される(ステップS972)。処理を開始する論理アドレスは、先頭からステップS971において分割された1論理アドレスで、かつ、解除処理が実行されていない論理アドレスである。
【0103】
そして、対象となる論理アドレスに対応するアドレス変換情報がアドレス変換テーブル341から取得される(ステップS973)。このアドレス変換情報は、図4において説明した、物理アドレス、データフラグ、第2ECCフラグ、および、第2ECCインデックスである。
【0104】
例えば、アドレス変換テーブル341の値として図10に示す値を有する場合を想定する。処理対象の論理アドレスが「xj」の場合は、論理アドレス「xj」の物理アドレスとして「yj0」、データフラグの値として「True」、第2ECCフラグの値として「True」、第2ECCインデックスの値として「zj0」がそれぞれ取得される。一方、処理対象の論理アドレスが「xj+4」から1論理アドレスの場合は、論理アドレス「xj+4」の物理アドレスとして「yj4」、データフラグの値として「False」、第2ECCフラグの値として「True」がそれぞれ取得される。また、第2ECCインデックスの値として「zj4」が取得される。
【0105】
そして、ステップS973において取得された物理アドレスに記憶されたデータに付与された第2ECCを計算するための物理アドレス情報が取得される(ステップS974)。第2ECCを計算するための物理アドレス情報は、第2ECC管理テーブル342で管理されている、データ数、第2ECC物理アドレス、第0乃至第3番目データの物理アドレスである。物理アドレス情報は、ステップS973において取得された第2ECCインデックスと一致する値を有する第2ECC管理テーブル342のエントリから取得される。
【0106】
例えば、アドレス変換テーブル341が図10に示す値を保持し、第2ECC管理テーブル342が図12に示す値を保持しているときを想定する。論理アドレス「xj」が処理対象である場合に取得される物理アドレス情報は、第2ECCインデックスが「zj0」となる第2ECC管理テーブル342のエントリから取得される。すなわち、データ数は「4」、第2ECC物理アドレスは「ej0」、第0番目データの物理アドレスは「yj0」、第1番目データの物理アドレスは「yj1」、第2番目データの物理アドレスは「yj2」、第3番目データの物理アドレスは「yj3」となる。
【0107】
そして、ステップS974において取得された第0乃至第3番目データの物理アドレスの中でデータ保持特性強化解除となる論理アドレスが決定される(ステップS975)。すなわち、取得された第0乃至第3番目データの物理アドレスの中で、データ保持特性強化解除コマンドで指定された論理アドレスに対応する物理アドレスに該当するものがあれば、今回同時にデータ保持特性強化解除を行うものとして決定される。
【0108】
例えば、アドレス変換テーブル341が図10に示す値を保持し、第2ECC管理テーブル342が図12に示す値を保持しているとき、データ保持特性強化解除コマンドで、論理アドレス「xj」から3論理アドレスが範囲として指定された場合を想定する。このとき、ステップS972において処理対象の論理アドレスが「xj」に決定されると、ステップS975では、論理アドレス「xj+1」と「xj+2」が、論理アドレス「xj」の処理と同時にデータ保持特性の解除を実行する論理アドレスとして決定される。
【0109】
そして、ステップS974において取得された物理アドレス情報に基づいて、第2ECC、データおよび第1ECCが不揮発性記憶領域303から読み出される(ステップS976)。例えば、アドレス変換テーブル341が図10に示す値を保持し、第2ECC管理テーブル342が図12に示す値を保持しているときを想定する。ステップS975においてデータ保持特性強化解除対象の論理アドレス「xj」、「xj+1」、「xj+2」が決定された場合、物理アドレス「ei0」から第2ECCが読み出される。また、物理アドレス「yj0」乃至「yj3」から第0乃至第3番目データが読み出される。このとき、第0乃至第3番目データのそれぞれは、データおよび第1ECCからなる。
【0110】
そして、ステップS976において読み出された第2ECCを用いて、データおよび第1ECCのエラー検出処理が行われ、その成否によって処理が分岐する(ステップS977)。すなわち、エラーが検出された場合にはステップS978以降の処理が行われ、エラーが検出されなかった場合にはステップS981以降の処理が行われる。なお、ステップS974において取得されたデータ数が「4」より小さい場合、足りないデータについては不揮発性メモリ300の初期値によってパディングしてエラー検出が行われる。
【0111】
エラーが検出された場合(ステップS977:Yes)、ステップS976において読み出された第2ECCを用いてエラー訂正処理が行われ、その成否によって処理が分岐する(ステップS978)。すなわち、全てのデータおよび第1ECCについてエラー訂正に成功した場合にはステップS979以降の処理が行われ、エラー訂正の失敗が生じた場合にはステップS989の処理が行われる。なお、ステップS974において取得されたデータ数が「4」より小さい場合、足りないデータについては不揮発性メモリ300の初期値によってパディングしてエラー検出が行われる。
【0112】
第2ECCを用いたエラー訂正に成功した場合(ステップS978:Yes)、エラーが発生したデータおよび第1ECCを、エラー訂正されたデータおよび第1ECCに書き直す(ステップS979)。この処理で書き直されるデータおよび第1ECCはデータ保持特性の強化を解除する論理アドレスであるか否かにかかわらず、ステップS978において訂正されたデータおよび第1ECCが書直し対象となる。
【0113】
第2ECCを用いてもエラー訂正に成功しなかった場合(ステップS978:No)、データ保持特性強化解除コマンドのエラー終了がホストコンピュータ100に通知される(ステップS989)。このホストコンピュータ100への通知後、そのデータ保持特性強化解除コマンドはエラー終了となる。
【0114】
ステップS977(No)またはS979の処理の後、第2ECCを再計算する必要があるか否かが判断される(ステップS981)。すなわち、S974において取得された第2ECC物理アドレス情報に、ステップS975において決定されたデータ保持特性強化解除対象の論理アドレス以外の論理アドレスに対応する物理アドレスが存在するかが判断される。データ保持特性強化解除対象以外の物理アドレスが存在する場合には(ステップS981:Yes)、第2ECCが再計算され(ステップS982)、不揮発性記憶領域303の第2ECC記憶領域330に記憶される(ステップS983)。この場合、ステップS977においてエラーが検出されていた場合には、エラー訂正後のデータおよび第1ECCから第2ECCが計算される。エラーが検出されていなければ読み出されたままのデータおよび第1ECCから第2ECCが計算される。
【0115】
例えば、アドレス変換テーブル341が図10に示す値を保持し、第2ECC管理テーブル342が図12に示す値を保持しているときを想定する。このとき、ステップS975においてデータ保持特性強化解除対象の論理アドレス「xj」、「xj+1」、「xj+2」が決定された場合、データ保持特性強化解除対象となっていない論理アドレスは「xj+3」である。ステップS982において第2ECCを算出するために用いられるデータは、物理アドレス「yj3」から読み出され、エラー訂正済みのデータおよび第1ECCとなる。第2ECCの算出に必要なデータサイズに満たない部分は、メモリの初期値でパディングする。なお、ステップS983において第2ECCが記憶される物理アドレスは、ステップS974において取得された第2ECC物理アドレスである。
【0116】
ステップS981(No)またはS983の処理の後、ステップS974において取得された第2ECC物理アドレス情報を更新し、第2ECC管理テーブル342を不揮発性記憶領域303のテーブル記憶領域340に記憶する(ステップS984)。例えば、アドレス変換テーブル341が図10に示す値を保持し、第2ECC管理テーブル342が図12に示す値を保持しているときを想定する。このとき、ステップS975においてデータ保持特性強化解除対象の論理アドレス「xj」、「xj+1」、「xj+2」が決定された場合、第2ECC物理アドレス情報のデータ数は「1」、第0番目データの物理アドレスは「yj3」に更新される。第1乃至第3番目データの物理アドレスは、データ数は「1」であるため、無効な値として扱われる。この例による更新後の第2ECC管理テーブル342の内容を図14の上部に示す。
【0117】
そして、アドレス変換テーブル341において、データ保持特性強化を解除する論理アドレスの第2ECCフラグが「False」に設定される(ステップS985)。例えば、アドレス変換テーブル341が図10に示す値を保持し、第2ECC管理テーブル342が図12に示す値を保持しているときを想定する。このとき、ステップS975においてデータ保持特性強化解除対象の論理アドレス「xj」、「xj+1」、「xj+2」が決定された場合、論理アドレス「xj」、「xj+1」、「xj+2」に対応する第2ECCフラグが「False」に設定される。第2ECCフラグが「False」に設定された論理アドレスの第2ECCインデックスは無効な値として扱われる。この例による更新後のアドレス変換テーブル341を図15のエントリ740、741および742に示す。
【0118】
そして、ステップS971において分割した処理が全て終了したかが判定され(ステップS986)、処理が残っている場合にはステップS972以降の処理が繰り返される。一方、全ての処理が終了したと判定された場合には(ステップS986:No)、データ保持特性強化解除コマンドが正常に実行された旨がホストコンピュータ100に通知される(ステップS987)。ホストコンピュータ100への通知が終了した後は、そのデータ保持特性強化解除コマンドの処理は正常終了となる。
【0119】
[実施の形態の効果]
このように、本技術の実施の形態によれば、第2ECC管理テーブル342において第2ECCおよびその対象データの物理アドレスを管理することにより、物理アドレス空間上での配置を意識することなくデータの保持特性を強化することができる。
【0120】
<2.変形例>
[上書きを伴わない不揮発性メモリへの適用]
上述の実施の形態では、不揮発性メモリ300においてデータの上書きが可能であることを想定して説明したが、例えばNANDフラッシュメモリのように上書きができないメモリも存在する。上書きができないメモリの場合、不揮発性メモリにデータを書き込む前にデータの消去処理を実行する必要がある。これ以外の点については上述の実施の形態と同様の手法を採ることができ、不連続なアドレスに書き込まれたデータと、それに付加された第2ECCの物理アドレスの管理をすることができる。
【0121】
[複数の第2ECCを同一物理アドレスに記憶する場合]
上述の実施の形態では、1つの物理アドレスの領域には1つの第2ECCを記憶していたが、これに限定されず複数の第2ECCを同一物理アドレスに記憶することも可能である。この場合、図16に示すように、第2ECC管理テーブル342において、新たに第2ECC物理アドレス内オフセットを保持する。そして、この第2ECC物理アドレス内オフセットによって、そのエントリの第2ECCが第2ECC物理アドレスにおけるどの位置に記憶されているかを示す。これにより、複数の第2ECCを同一物理アドレスに記憶するように構成することができる。なお、各データを論理アドレスにより管理を行えば第2ECC物理アドレス内オフセットを導入する必要はないが、この例によれば、物理アドレスによって管理することにより個々のアドレス変換を不要にして、高速にアクセスを行うことができるという利点がある。
【0122】
なお、一般的には、不揮発性記憶領域303の単位データ幅をNバイト、付与される第2ECCのサイズをCバイトとすると、n×C≦Nを満たす範囲でのnが同一物理アドレスにおける第2ECCの数である。このとき、第2ECC物理アドレス内オフセットiは、次式を満たす整数である。
0≦i≦(n−1)
【0123】
[論理アドレス上で関連性のないデータと組み合わせて第2ECCを生成する場合]
上述の実施の形態では、論理アドレス空間において連続する複数のデータを連結して第2ECCを生成していたが、これに限定されず論理アドレス上で関連性のないデータと組み合わせて第2ECCを生成してもよい。この場合、データ保持特性強化処理の際の空きエントリの検索方法が影響を受ける。すなわち、上述の実施の形態では第2ECCを記憶する物理アドレスを決定する際にステップS956において空きエントリを検索していたが、この場合には対象データの物理アドレスに1つ以上の空きがあるエントリを検索すればよい。
【0124】
例えば、アドレス変換テーブル341が図17に示す値を保持し、第2ECC管理テーブル342が図18に示す値を保持しているときに、データ保持特性強化コマンドで先頭論理アドレスとして「xj」、データサイズとして「5」が指定されたことを想定する。このとき、論理アドレス「xj」、「xj+1」、「xj+2」、「xj+3」については、上述の実施の形態と同様の手法によりデータ保持特性の強化処理が行われる。そして、論理アドレス「xj+4」については、ステップS956において対象データの物理アドレスに1つ以上の空きがあるエントリが検索される。つまり、データ数が「3」以下のエントリを検索すればよい。この場合、図18の第2ECC管理テーブル342であれば、第2ECCインデックス「zh0」のエントリも検索条件に適合する。
【0125】
また、ステップS958の処理では、論理アドレス「xj+4」の第2ECCを算出するときに、図18に示す物理アドレス「yh0」に記憶されているデータと第1ECCを読み出す。そして、論理アドレス「xj+4」に対応する物理アドレス「yj4+4」から読み出してエラー訂正をしたデータおよび第1ECCを連結させて、第2ECCの計算を実行する。
【0126】
このようにして更新された後のアドレス変換テーブル341の例を図19に、第2ECC管理テーブル342の例を図20にそれぞれ示す。
【0127】
[アクセス時刻の経過を契機としてデータ保持特性強化を行う場合]
上述の実施の形態では、データ保持特性の強化およびその解除をホストコンピュータ100からのコマンドにより実行していたが、データ保持特性強化等の契機はこれに限定されない。例えば、メモリコントローラ200内にタイマーを設け、メモリコントローラ200が自発的にデータ保持特性強化やその解除を行ってもよい。この場合、ホストコンピュータ100からのリードコマンドやライトコマンドによってアクセスされた論理アドレスごとに、最後にアクセスされた時刻(最終アクセス時刻)を管理する。最終アクセス時刻は、リードコマンドまたはライトコマンドの実行により更新される。
【0128】
図21に、最終アクセス時刻をパラメータとして有するアドレス変換テーブル341の例を示す。最終アクセス時刻から経過した時間が予め定められた時間を超えていて、かつ、第2ECCフラグが「False」である場合には、メモリコントローラ200は自発的にデータ保持特性強化処理を実行する。また、最終アクセス時刻から経過した時間が予め定められた時間を超えておらず、かつ、第2ECCフラグが「True」である場合には、コントローラは自発的にデータ保持特性強化解除処理を実行するようにしてもよい。
【0129】
[1つの物理アドレスが示す領域に複数の論理アドレスが対応する場合]
上述の実施の形態では、1物理アドレスで指定される領域に対して1論理アドレスで指定されるサイズのデータを記憶していたが、これに限定されない。例えば、1物理アドレスで指定される領域に対して複数の論理アドレスで指定されるサイズのデータを記憶するようにしてもよい。1物理アドレスで指定される領域に対して複数の論理アドレスで指定されるサイズのデータを記憶可能なメモリに、m組のデータおよび第1ECCを記憶した例を図22に示す。
【0130】
この場合、データおよび第1ECCの記憶位置を特定するために、物理アドレスだけではなく、物理アドレス内オフセットが必要になる。この物理アドレス内オフセットを導入した場合のアドレス変換テーブル341の例を図23に、第2ECC管理テーブル342の例を図24にそれぞれ示す。
【0131】
なお、この例は、不揮発性メモリとして、特に、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリに適用するのが好適である。フラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。また、不揮発性ランダムアクセスメモリ(NVRAM)に適用することも可能である。
【0132】
[NVM Expressへの適用]
上述の実施の形態の応用例として、「NVM Express」への適用例について説明する。「NVM Express」とは、NVMHCIワーキンググループにより策定された、フラッシュメモリを利用したSSD(Solid State Drive)のためのインターフェースである。
【0133】
まず、Dataset Management Commandにおいて、Access Frequencyの値が"Infrequent writes and infrequent reads to the LBA range"である場合、データ保持特性強化処理を行う。そして、Access Frequencyの値が"Frequent writes and frequent reads to the LBA range"である場合、データ保持特性強化の解除を行う。なお、このDataset Management Commandは、記録したデータをデバイスが最適化するためのコマンドである。
【0134】
また、Read Commandにおいて、Access Frequencyの値が"Infrequent writes and infrequent reads to the LBA range"の場合、リード処理実行後にデータ保持特性強化処理を行う。そして、Access Frequencyの値が"Frequent writes and frequent reads to the LBA range"の場合、リード処理実行後にデータ保持特性強化の解除処理を行う。
【0135】
また、Write Commandにおいて、Access Frequencyの値が"Infrequent writes and infrequent reads to the LBA range"の場合、ライト処理実行後にデータ保持特性強化処理を行う。そして、Access Frequencyの値が"Frequent writes and frequent reads to the LBA range"の場合、ライト処理実行後にデータ保持特性強化の解除処理を行う。
【0136】
これにより、本技術の実施の形態を「NVM Express」に適用することができる。
【0137】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【0138】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disk)、メモリカード、ブルーレイディスク(Blu-ray Disc(登録商標))等を用いることができる。
【0139】
なお、本技術は以下のような構成もとることができる。
(1)データおよびそのデータの第1のエラー訂正コードを単位データとして複数の単位データを記憶部に記憶し、前記複数の単位データにおける所定の複数の単位データに対応してその第2のエラー訂正コードを前記記憶部に記憶する場合において、前記所定の複数の単位データと当該所定の複数の単位データに対応する前記第2のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、
論理アドレスと前記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部と、
リード対象の論理アドレスに対応する前記エラー訂正コード管理部におけるエントリを前記アドレス管理部から取得して当該エントリにおいて管理される前記所定の複数の単位データおよび前記第2のエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と
を具備する記憶制御装置。
(2)前記所定の複数の単位データは前記記憶部において非連続な物理アドレスに記憶される前記(1)に記載の記憶制御装置。
(3)前記アドレス管理部は、それぞれの論理アドレスに対応する前記第2のエラー訂正コードが記憶されているか否かを示すエラー訂正コードフラグを管理し、
前記エラー訂正部は、前記エラー訂正コードフラグが前記第2のエラー訂正コードが記憶されている旨を示す場合のみ前記エラー訂正を行う
前記(1)または(2)に記載の記憶制御装置。
(4)前記エラー訂正コード管理部は、前記所定の複数の単位データの結合順序を規定し、
前記エラー訂正部は、前記結合順序に従って前記所定の複数の単位データを結合して前記エラー訂正を行う前記(1)から(3)のいずれかに記載の記憶制御装置。
(5)前記エラー訂正コード管理部は、前記所定の複数の単位データに対応する前記第2のエラー訂正コードの前記記憶部における物理アドレスを保持し、
前記エラー訂正部は、前記第2のエラー訂正コードの前記物理アドレスに従って前記記憶部から前記第2のエラー訂正コードを取得する
前記(1)から(4)のいずれかに記載の記憶制御装置。
(6)前記エラー訂正コード管理部は、前記所定の複数の単位データに対応する前記第2のエラー訂正コードの前記記憶部における物理アドレス内オフセットをさらに保持し、
前記エラー訂正部は、前記第2のエラー訂正コードの前記物理アドレスおよび前記物理アドレス内オフセットに従って前記記憶部から前記第2のエラー訂正コードを取得する
前記(5)に記載の記憶制御装置。
(7)データ保持特性強化コマンドを受け取ると当該データ保持特性強化コマンドにおいて指定された論理アドレスの範囲に記憶されているデータについて前記第2のエラー訂正コードを生成するエラー訂正コード生成部と、
前記データ保持特性強化コマンドを受け取ると前記指定された論理アドレスの範囲に記憶されているデータについて対応する前記第2のエラー訂正コードとの対応関係を保持するエントリを前記エラー訂正コード管理部に新たに確保し、その新たに確保されたエントリと前記指定された論理アドレスとの対応関係を前記アドレス管理部に登録するエントリ管理部と
をさらに具備する前記(1)から(6)のいずれかに記載の記憶制御装置。
(8)前記エントリ管理部は、データ保持特性強化解除コマンドを受け取ると当該データ保持特性強化解除コマンドにおいて指定された論理アドレスの範囲に記憶されているデータについて対応する前記第2のエラー訂正コードとの対応関係を保持するエントリを前記エラー訂正コード管理部において解放し、その解放されたエントリと前記指定された論理アドレスとの対応関係を前記アドレス管理部において削除する
前記(7)に記載の記憶制御装置。
(9)前記エラー訂正コード管理部は、エントリ毎に前記第2のエラー訂正コードに対応する単位データの数を保持し、
前記エントリ管理部は、エントリを新たに確保する際には前記単位データの数がゼロを示すエントリを対象とする
前記(7)に記載の記憶制御装置。
(10)前記エラー訂正コード管理部は、エントリ毎に前記第2のエラー訂正コードに対応する単位データの数を保持し、
前記エントリ管理部は、エントリを新たに確保する際には前記単位データの数が所定数に満たないエントリを対象とする
前記(7)に記載の記憶制御装置。
(11)前記アドレス管理部は、それぞれの論理アドレスについて最後にアクセスされた時刻を最終アクセス時刻として保持し、
前記最終アクセス時刻から所定期間経過するとその論理アドレスに記憶されているデータについて前記第2のエラー訂正コードを生成するエラー訂正コード生成部と、
前記最終アクセス時刻から所定期間経過するとその論理アドレスに記憶されているデータについて対応する前記第2のエラー訂正コードとの対応関係を保持するエントリを前記エラー訂正コード管理部に新たに確保し、その新たに確保されたエントリと前記指定された論理アドレスとの対応関係を前記アドレス管理部に登録するエントリ管理部と
をさらに具備する前記(1)から(10)のいずれかに記載の記憶制御装置。
(12)前記エントリ管理部は、前記最終アクセス時刻から所定期間経過するまでの間に前記第2のエラー訂正コードが記憶されている場合には、その論理アドレスに記憶されているデータについて対応する前記第2のエラー訂正コードとの対応関係を保持するエントリを前記エラー訂正コード管理部において解放し、その解放されたエントリと前記指定された論理アドレスとの対応関係を前記アドレス管理部において削除する
前記(11)に記載の記憶制御装置。
(13)データおよびそのデータの第1のエラー訂正コードを単位データとして複数の単位データを記憶する単位データ記憶部と、
前記複数の単位データにおける所定の複数の単位データに対応してその第2のエラー訂正コードを記憶するエラー訂正コード記憶部と、
前記所定の複数の単位データと当該所定の複数の単位データに対応する前記第2のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、
論理アドレスと前記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部と、
リード対象の論理アドレスに対応する前記エラー訂正コード管理部におけるエントリを前記アドレス管理部から取得して当該エントリにおいて管理される前記所定の複数の単位データおよび前記第2のエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と
を具備する記憶装置。
(14)前記単位データ記憶部および前記エラー訂正コード記憶部は不揮発性メモリである前記(13)に記載の記憶装置。
(15)データおよびそのデータの第1のエラー訂正コードを単位データとして複数の単位データを記憶する単位データ記憶部と、
前記複数の単位データにおける所定の複数の単位データに対応してその第2のエラー訂正コードを記憶するエラー訂正コード記憶部と、
前記所定の複数の単位データと当該所定の複数の単位データに対応する前記第2のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、
論理アドレスと前記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部と、
リード対象の論理アドレスに対応する前記エラー訂正コード管理部におけるエントリを前記アドレス管理部から取得して当該エントリにおいて管理される前記所定の複数の単位データおよび前記第2のエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と、
前記単位データ記憶部に対するアクセスを要求するリクエストを発行するホストコンピュータと
を具備する情報処理システム。
(16)データおよびそのデータの第1のエラー訂正コードを単位データとして複数の単位データを記憶する単位データ記憶部と、前記複数の単位データにおける所定の複数の単位データに対応してその第2のエラー訂正コードを記憶するエラー訂正コード記憶部と、前記所定の複数の単位データと当該所定の複数の単位データに対応する前記第2のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、論理アドレスと前記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部とを備える記憶装置における記憶制御方法であって、
リード対象の論理アドレスに対応する前記エラー訂正コード管理部におけるエントリを前記アドレス管理部から取得するエントリ取得手順と、
前記取得されたエントリにおいて管理される前記所定の複数の単位データおよび前記第2のエラー訂正コードに基づいてエラー訂正を行うエラー訂正手順と
を具備する記憶制御方法。
【符号の説明】
【0140】
100 ホストコンピュータ
200 メモリコントローラ
201 ホストインターフェース
203 メモリインターフェース
210 第1ECC生成部
220 第2ECC生成部
230 テーブル管理部
240 データライト処理部
250 データリード処理部
260 第1ECC訂正部
270 第2ECC訂正部
280 ECC切替処理部
300 不揮発性メモリ
302 外部インターフェース
303 不揮発性記憶領域
310 データ記憶領域
320 第1ECC記憶領域
330 第2ECC記憶領域
340 テーブル記憶領域
341 アドレス変換テーブル
342 第2ECC管理テーブル
400 メモリシステム

【特許請求の範囲】
【請求項1】
データおよびそのデータの第1のエラー訂正コードを単位データとして複数の単位データを記憶部に記憶し、前記複数の単位データにおける所定の複数の単位データに対応してその第2のエラー訂正コードを前記記憶部に記憶する場合において、前記所定の複数の単位データと当該所定の複数の単位データに対応する前記第2のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、
論理アドレスと前記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部と、
リード対象の論理アドレスに対応する前記エラー訂正コード管理部におけるエントリを前記アドレス管理部から取得して当該エントリにおいて管理される前記所定の複数の単位データおよび前記第2のエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と
を具備する記憶制御装置。
【請求項2】
前記所定の複数の単位データは前記記憶部において非連続な物理アドレスに記憶される請求項1記載の記憶制御装置。
【請求項3】
前記アドレス管理部は、それぞれの論理アドレスに対応する前記第2のエラー訂正コードが記憶されているか否かを示すエラー訂正コードフラグを管理し、
前記エラー訂正部は、前記エラー訂正コードフラグが前記第2のエラー訂正コードが記憶されている旨を示す場合のみ前記エラー訂正を行う
請求項1記載の記憶制御装置。
【請求項4】
前記エラー訂正コード管理部は、前記所定の複数の単位データの結合順序を規定し、
前記エラー訂正部は、前記結合順序に従って前記所定の複数の単位データを結合して前記エラー訂正を行う
請求項1記載の記憶制御装置。
【請求項5】
前記エラー訂正コード管理部は、前記所定の複数の単位データに対応する前記第2のエラー訂正コードの前記記憶部における物理アドレスを保持し、
前記エラー訂正部は、前記第2のエラー訂正コードの前記物理アドレスに従って前記記憶部から前記第2のエラー訂正コードを取得する
請求項1記載の記憶制御装置。
【請求項6】
前記エラー訂正コード管理部は、前記所定の複数の単位データに対応する前記第2のエラー訂正コードの前記記憶部における物理アドレス内オフセットをさらに保持し、
前記エラー訂正部は、前記第2のエラー訂正コードの前記物理アドレスおよび前記物理アドレス内オフセットに従って前記記憶部から前記第2のエラー訂正コードを取得する
請求項5記載の記憶制御装置。
【請求項7】
データ保持特性強化コマンドを受け取ると当該データ保持特性強化コマンドにおいて指定された論理アドレスの範囲に記憶されているデータについて前記第2のエラー訂正コードを生成するエラー訂正コード生成部と、
前記データ保持特性強化コマンドを受け取ると前記指定された論理アドレスの範囲に記憶されているデータについて対応する前記第2のエラー訂正コードとの対応関係を保持するエントリを前記エラー訂正コード管理部に新たに確保し、その新たに確保されたエントリと前記指定された論理アドレスとの対応関係を前記アドレス管理部に登録するエントリ管理部と
をさらに具備する請求項1記載の記憶制御装置。
【請求項8】
前記エントリ管理部は、データ保持特性強化解除コマンドを受け取ると当該データ保持特性強化解除コマンドにおいて指定された論理アドレスの範囲に記憶されているデータについて対応する前記第2のエラー訂正コードとの対応関係を保持するエントリを前記エラー訂正コード管理部において解放し、その解放されたエントリと前記指定された論理アドレスとの対応関係を前記アドレス管理部において削除する
請求項7記載の記憶制御装置。
【請求項9】
前記エラー訂正コード管理部は、エントリ毎に前記第2のエラー訂正コードに対応する単位データの数を保持し、
前記エントリ管理部は、エントリを新たに確保する際には前記単位データの数がゼロを示すエントリを対象とする
請求項7記載の記憶制御装置。
【請求項10】
前記エラー訂正コード管理部は、エントリ毎に前記第2のエラー訂正コードに対応する単位データの数を保持し、
前記エントリ管理部は、エントリを新たに確保する際には前記単位データの数が所定数に満たないエントリを対象とする
請求項7記載の記憶制御装置。
【請求項11】
前記アドレス管理部は、それぞれの論理アドレスについて最後にアクセスされた時刻を最終アクセス時刻として保持し、
前記最終アクセス時刻から所定期間経過するとその論理アドレスに記憶されているデータについて前記第2のエラー訂正コードを生成するエラー訂正コード生成部と、
前記最終アクセス時刻から所定期間経過するとその論理アドレスに記憶されているデータについて対応する前記第2のエラー訂正コードとの対応関係を保持するエントリを前記エラー訂正コード管理部に新たに確保し、その新たに確保されたエントリと前記指定された論理アドレスとの対応関係を前記アドレス管理部に登録するエントリ管理部と
をさらに具備する請求項1記載の記憶制御装置。
【請求項12】
前記エントリ管理部は、前記最終アクセス時刻から所定期間経過するまでの間に前記第2のエラー訂正コードが記憶されている場合には、その論理アドレスに記憶されているデータについて対応する前記第2のエラー訂正コードとの対応関係を保持するエントリを前記エラー訂正コード管理部において解放し、その解放されたエントリと前記指定された論理アドレスとの対応関係を前記アドレス管理部において削除する
請求項11記載の記憶制御装置。
【請求項13】
データおよびそのデータの第1のエラー訂正コードを単位データとして複数の単位データを記憶する単位データ記憶部と、
前記複数の単位データにおける所定の複数の単位データに対応してその第2のエラー訂正コードを記憶するエラー訂正コード記憶部と、
前記所定の複数の単位データと当該所定の複数の単位データに対応する前記第2のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、
論理アドレスと前記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部と、
リード対象の論理アドレスに対応する前記エラー訂正コード管理部におけるエントリを前記アドレス管理部から取得して当該エントリにおいて管理される前記所定の複数の単位データおよび前記第2のエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と
を具備する記憶装置。
【請求項14】
前記単位データ記憶部および前記エラー訂正コード記憶部は不揮発性メモリである請求項13記載の記憶装置。
【請求項15】
データおよびそのデータの第1のエラー訂正コードを単位データとして複数の単位データを記憶する単位データ記憶部と、
前記複数の単位データにおける所定の複数の単位データに対応してその第2のエラー訂正コードを記憶するエラー訂正コード記憶部と、
前記所定の複数の単位データと当該所定の複数の単位データに対応する前記第2のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、
論理アドレスと前記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部と、
リード対象の論理アドレスに対応する前記エラー訂正コード管理部におけるエントリを前記アドレス管理部から取得して当該エントリにおいて管理される前記所定の複数の単位データおよび前記第2のエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と、
前記単位データ記憶部に対するアクセスを要求するリクエストを発行するホストコンピュータと
を具備する情報処理システム。
【請求項16】
データおよびそのデータの第1のエラー訂正コードを単位データとして複数の単位データを記憶する単位データ記憶部と、前記複数の単位データにおける所定の複数の単位データに対応してその第2のエラー訂正コードを記憶するエラー訂正コード記憶部と、前記所定の複数の単位データと当該所定の複数の単位データに対応する前記第2のエラー訂正コードとの対応関係をエントリ毎に管理するエラー訂正コード管理部と、論理アドレスと前記エラー訂正コード管理部におけるエントリとの対応関係を管理するアドレス管理部とを備える記憶装置における記憶制御方法であって、
リード対象の論理アドレスに対応する前記エラー訂正コード管理部におけるエントリを前記アドレス管理部から取得するエントリ取得手順と、
前記取得されたエントリにおいて管理される前記所定の複数の単位データおよび前記第2のエラー訂正コードに基づいてエラー訂正を行うエラー訂正手順と
を具備する記憶制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate


【公開番号】特開2013−114521(P2013−114521A)
【公開日】平成25年6月10日(2013.6.10)
【国際特許分類】
【出願番号】特願2011−261091(P2011−261091)
【出願日】平成23年11月30日(2011.11.30)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】