(57)【要約】【課題】メモリ内の一群のデータ列に対するエラー訂正コードの付与規則を柔軟に設定する。【解決手段】記憶制御装置は、エラー訂正コード付与規則保持部とエラー訂正部とを備える。エラー訂正コード付与規則保持部は、メモリ内の一群のデータ列に対するエラー訂正コードの付与規則を一群のデータ列のアドレスごとに対応付けて保持する。エラー訂正部は、メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた付与規則に従ってメモリ内の一群のデータ列についてエラー訂正を行う。【選択図】図１
2013101455.tif 000002
【特許請求の範囲】
【請求項１】
メモリ内の一群のデータ列に対するエラー訂正コードの付与規則を前記一群のデータ列のアドレスごとに対応付けて保持するエラー訂正コード付与規則保持部と、
前記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行うエラー訂正部と
を具備する記憶制御装置。
【請求項２】
前記付与規則は、前記一群のデータ列の全体から前記エラー訂正コードが生成される場合と、前記一群のデータ列を構成する複数の部分データ列の各々から独立して前記エラー訂正コードが生成される場合の何れであるかを定義する
請求項１記載の記憶制御装置。
【請求項３】
前記エラー訂正部は、前記一群のデータ列を構成する複数の部分データ列の各々から独立して前記エラー訂正コードが生成される旨が前記アクセスアドレスに対応付けられた前記付与規則において定義されている場合、前記複数の部分データ列のうち前記アクセスに係る部分データ列のみについてエラー訂正を行う
請求項１記載の記憶制御装置。
【請求項４】
前記メモリに対してライトアクセスが発生した場合、前記ライトアクセスにおいて指示された前記付与規則に従って前記ライトアクセスに係るライトデータに対するエラー訂正コードを生成するエラー訂正コード生成部をさらに具備する請求項１記載の記憶制御装置。
【請求項５】
前記エラー訂正コード生成部は、前記一群のデータ列を構成する複数の部分データ列の各々から独立して前記エラー訂正コードが生成される旨が前記ライトアドレスに対応付けられた前記付与規則において定義されている場合、前記複数の部分データ列のうち前記ライトアクセスに係る部分データ列のみについてエラー訂正コードを生成する
請求項４記載の記憶制御装置。
【請求項６】
前記エラー訂正コード付与規則保持部は、リクエストを発行するホストコンピュータからの指示に従って前記付与規則を保持する請求項１記載の記憶制御装置。
【請求項７】
前記エラー訂正コード付与規則保持部は、前記メモリに対してライトアクセスが発生した場合、前記ライトアクセスにおいて指示された前記付与規則を前記ライトアクセスに係るライトアドレスに対応付けて保持する請求項１記載の記憶制御装置。
【請求項８】
前記メモリに対するアクセスアドレスが論理アドレスである場合に前記論理アドレスを物理アドレスに変換して前記メモリに出力するアドレス変換部をさらに具備し、
前記エラー訂正コード付与規則保持部は、前記付与規則を前記一群のデータ列の前記論理アドレスごとに対応付けて保持し、
前記エラー訂正部は、前記論理アドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行う
請求項１記載の記憶制御装置。
【請求項９】
前記メモリに対するアクセスアドレスが論理アドレスである場合に前記論理アドレスを物理アドレスに変換して前記メモリに出力するアドレス変換部をさらに具備し、
前記エラー訂正コード付与規則保持部は、前記付与規則を前記一群のデータ列の前記物理アドレスごとに対応付けて保持し、
前記エラー訂正部は、前記物理アドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行う
請求項１記載の記憶制御装置。
【請求項１０】
データ領域において一群のデータ列に対するエラー訂正コードを前記一群のデータ列とともに記憶するメモリと、
前記一群のデータ列に対する前記エラー訂正コードの付与規則を前記一群のデータ列のアドレスごとに対応付けて保持するエラー訂正コード付与規則保持部と、
前記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行うエラー訂正部と
を具備する記憶装置。
【請求項１１】
前記付与規則は、前記一群のデータ列の全体から前記エラー訂正コードが生成される場合と、前記一群のデータ列を構成する複数の部分データ列の各々から独立して前記エラー訂正コードが生成される場合の何れであるかを定義し、
前記メモリは、前記一群のデータ列を構成する複数の部分データ列の各々から独立して前記エラー訂正コードが生成される旨を前記付与規則が定義する場合、前記複数の部分データ列の各々に連続する位置に前記エラー訂正コードを記憶する
請求項１０記載の記憶装置。
【請求項１２】
前記メモリは不揮発性メモリである請求項１０記載の記憶装置。
【請求項１３】
一群のデータ列に対してエラー訂正コードを記憶するメモリと、
前記一群のデータ列に対する前記エラー訂正コードの付与規則を前記一群のデータ列のアドレスごとに対応付けて保持するエラー訂正コード付与規則保持部と、
前記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行うエラー訂正部と、
前記メモリに対して前記データ領域のリードまたはライトを要求するリクエストを発行するホストコンピュータと
を具備する情報処理システム。
【請求項１４】
メモリ内の一群のデータ列に対するエラー訂正コードの付与規則を前記一群のデータ列のアドレスごとに対応付けて定義するエラー訂正コード付与規則定義手順と、
前記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行うエラー訂正手順と
を具備する記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、記憶制御装置に関する。詳しくは、エラー訂正コードに基づくエラー訂正を行う記憶制御装置、記憶装置、情報処理システム、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
【背景技術】
【０００２】
メモリを使用する際、メモリに記憶されたデータにおいてエラー（誤り）が生じていないかを検出し、訂正するために、エラー訂正コード（ＥＣＣ：Error Correcting Code）が付与されることがある。特に、不揮発性メモリにおいてはこのエラー訂正コードを用いることが一般的となっている。すなわち、書込み時にエラー訂正コードを生成してそのエラー訂正コードをデータとともにメモリ上に記録しておいて、読出し時にはデータとエラー訂正コードとを同時に読み出してエラー訂正処理が行われる。これにより、メモリのデータ保持特性を改善することができる。
【０００３】
このようなエラー訂正コードを使用する際、データ保持特性の改善の程度をメモリの領域毎に変更したい場合がある。例えば、偶数ページよりも奇数ページの方が高いエラー発生率を有する場合を想定し、２つの連続する奇偶ページ間で奇数ページにパリティビット数を多く割り振る半導体記憶装置が提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２８２９２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述の従来技術では、ページ間で異なる方式のエラー訂正コードを付与している。しかしながら、上述の従来技術ではエラー発生率の大きさに応じて奇偶ページの何れか一方にパリティビット数を多く割り振っており、ビット数の割当てはエラー発生率によって自動的に決められてしまう。これに対し、例えばファイルシステムでは特定のファイルについてデータ保持特性を向上させたい場合があり、そのためにはシステムから自由にエラー訂正コードの方式を設定できる必要が生じる。
【０００６】
本技術はこのような状況に鑑みて生み出されたものであり、メモリ内の一群のデータ列に対するエラー訂正コードの付与規則を柔軟に設定することを目的とする。
【課題を解決するための手段】
【０００７】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、メモリ内の一群のデータ列に対するエラー訂正コードの付与規則を上記一群のデータ列のアドレスごとに対応付けて保持するエラー訂正コード付与規則保持部と、上記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた上記付与規則に従って上記メモリ内の上記一群のデータ列についてエラー訂正を行うエラー訂正部とを具備する記憶制御装置またはその記憶制御方法である。これにより、一群のデータ列に対して予め定義されたエラー訂正コードの付与規則に従って、エラー訂正を実行させるという作用をもたらす。
【０００８】
また、この第１の側面において、上記付与規則は、上記一群のデータ列の全体から上記エラー訂正コードが生成される場合と、上記一群のデータ列を構成する複数の部分データ列の各々から独立して上記エラー訂正コードが生成される場合の何れであるかを定義するようにしてもよい。これにより、一群のデータ列の全体または部分データ列のうち定義されたエラー訂正コードの付与規則に従って、エラー訂正を実行させるという作用をもたらす。
【０００９】
また、この第１の側面において、上記エラー訂正部は、上記一群のデータ列を構成する複数の部分データ列の各々から独立して上記エラー訂正コードが生成される旨が上記アクセスアドレスに対応付けられた上記付与規則において定義されている場合、上記複数の部分データ列のうち上記アクセスに係る部分データ列のみについてエラー訂正を行うようにしてもよい。これにより、アクセスに係る部分データ列以外の部分データ列についてはエラー訂正を省略するという作用をもたらす。
【００１０】
また、この第１の側面において、上記メモリに対してライトアクセスが発生した場合、上記ライトアクセスにおいて指示された上記付与規則に従って上記ライトアクセスに係るライトデータに対するエラー訂正コードを生成するエラー訂正コード生成部をさらに具備してもよい。これにより、ライトアクセスを契機として、ライトデータに対するエラー訂正コードを生成するという作用をもたらす。また、この場合において、上記エラー訂正コード生成部は、上記一群のデータ列を構成する複数の部分データ列の各々から独立して上記エラー訂正コードが生成される旨が上記ライトアドレスに対応付けられた上記付与規則において定義されている場合、上記複数の部分データ列のうち上記ライトアクセスに係る部分データ列のみについてエラー訂正コードを生成するようにしてもよい。これにより、ライトアクセスに係る部分データ列以外の部分データ列についてはエラー訂正コードの生成を省略するという作用をもたらす。
【００１１】
また、この第１の側面において、上記エラー訂正コード付与規則保持部は、リクエストを発行するホストコンピュータからの指示に従って上記付与規則を保持するようにしてもよい。これにより、ホストコンピュータからの指示を契機として付与規則を保持するという作用をもたらす。
【００１２】
また、この第１の側面において、上記エラー訂正コード付与規則保持部は、上記メモリに対してライトアクセスが発生した場合、上記ライトアクセスにおいて指示された上記付与規則を上記ライトアクセスに係るライトアドレスに対応付けて保持するようにしてもよい。これにより、ライトアクセスを契機として付与規則を保持するという作用をもたらす。
【００１３】
また、この第１の側面において、上記メモリに対するアクセスアドレスが論理アドレスである場合に上記論理アドレスを物理アドレスに変換して上記メモリに出力するアドレス変換部をさらに具備し、上記エラー訂正コード付与規則保持部は、上記付与規則を上記一群のデータ列の上記論理アドレスごとに対応付けて保持し、上記エラー訂正部は、上記論理アドレスに対応付けられた上記付与規則に従って上記メモリ内の上記一群のデータ列についてエラー訂正を行うようにしてもよい。これにより、一群のデータ列の論理アドレスごとにエラー訂正コードの付与規則を定義するという作用をもたらす。
【００１４】
また、この第１の側面において、上記メモリに対するアクセスアドレスが論理アドレスである場合に上記論理アドレスを物理アドレスに変換して上記メモリに出力するアドレス変換部をさらに具備し、上記エラー訂正コード付与規則保持部は、上記付与規則を上記一群のデータ列の上記物理アドレスごとに対応付けて保持し、上記エラー訂正部は、上記物理アドレスに対応付けられた上記付与規則に従って上記メモリ内の上記一群のデータ列についてエラー訂正を行うようにしてもよい。これにより、一群のデータ列の物理アドレスごとにエラー訂正コードの付与規則を定義するという作用をもたらす。
【００１５】
また、本技術の第２の側面は、データ領域において一群のデータ列に対するエラー訂正コードを上記一群のデータ列とともに記憶するメモリと、上記一群のデータ列に対する上記エラー訂正コードの付与規則を上記一群のデータ列のアドレスごとに対応付けて保持するエラー訂正コード付与規則保持部と、上記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた上記付与規則に従って上記メモリ内の上記一群のデータ列についてエラー訂正を行うエラー訂正部とを具備する記憶装置である。これにより、メモリにおける一群のデータ列に対して予め定義されたエラー訂正コードの付与規則に従って、エラー訂正を実行させるという作用をもたらす。
【００１６】
また、この第２の側面において、上記付与規則は、上記一群のデータ列の全体から上記エラー訂正コードが生成される場合と、上記一群のデータ列を構成する複数の部分データ列の各々から独立して上記エラー訂正コードが生成される場合の何れであるかを定義し、上記メモリは、上記一群のデータ列を構成する複数の部分データ列の各々から独立して上記エラー訂正コードが生成される旨を上記付与規則が定義する場合、上記複数の部分データ列の各々に連続する位置に上記エラー訂正コードを記憶するようにしてもよい。これにより、部分データ列とエラー訂正コードを連続する位置に記憶して、まとめて読み出すことを容易にするという作用をもたらす。
【００１７】
なお、この第２の側面において、上記メモリは不揮発性メモリであることが想定される。
【００１８】
また、本技術の第３の側面は、一群のデータ列に対してエラー訂正コードを記憶するメモリと、上記一群のデータ列に対する上記エラー訂正コードの付与規則を上記一群のデータ列のアドレスごとに対応付けて保持するエラー訂正コード付与規則保持部と、上記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた上記付与規則に従って上記メモリ内の上記一群のデータ列についてエラー訂正を行うエラー訂正部と、上記メモリに対して上記データ領域のリードまたはライトを要求するリクエストを発行するホストコンピュータとを具備する情報処理システムである。これにより、ホストコンピュータからのメモリアクセスリクエストを処理する際に、メモリにおける一群のデータ列に対して予め定義されたエラー訂正コードの付与規則に従って、エラー訂正を実行させるという作用をもたらす。
【発明の効果】
【００１９】
本技術によれば、メモリ内の一群のデータ列に対するエラー訂正コードの付与規則を柔軟に設定することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００２０】
【図１】本技術の実施の形態における情報処理システムの一構成例を示す図である。
【図２】本技術の実施の形態におけるＲＡＭ２６０のメモリマップの概要例を示す図である。
【図３】本技術の実施の形態におけるメモリ３００の一構成例を示す図である。
【図４】本技術の実施の形態のメモリ３００におけるページ構造の一例を示す図である。
【図５】本技術の実施の形態における空きページテーブル２６１の一構成例を示す図である。
【図６】本技術の実施の形態におけるアドレス変換テーブル２６２の一構成例を示す図である。
【図７】本技術の第１の実施の形態におけるＥＣＣタイプテーブル２６４の一構成例を示す図である。
【図８】本技術の第１の実施の形態における記憶制御装置２００の機能構成例を示す図である。
【図９】本技術の実施の形態におけるライトデータと論理ページの関係を説明するための図である。
【図１０】本技術の実施の形態におけるライトデータと論理ページの関係を説明するための他の図である。
【図１１】本技術の実施の形態における情報処理システムの読出し動作例を示す流れ図である。
【図１２】本技術の実施の形態における情報処理システムの書込み動作例を示す流れ図である。
【図１３】本技術の実施の形態における情報処理システムの論理ページの部分書換え処理の動作例を示す流れ図である。
【図１４】本技術の第２の実施の形態における記憶制御装置２００の機能構成例を示す図である。
【発明を実施するための形態】
【００２１】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（論理ページアドレス毎にＥＣＣタイプを設定する例）
２．第２の実施の形態（物理ページアドレス毎にＥＣＣタイプを設定する例）
３．変形例
【００２２】
＜１．第１の実施の形態＞
［情報処理システムの構成］
図１は、本技術の実施の形態における情報処理システムの一構成例を示す図である。この情報処理システムは、ホストコンピュータ１００と、記憶制御装置２００と、メモリ３００とを備えている。ホストコンピュータ１００は、この情報処理システムにおける各処理を実行する装置である。メモリ３００は、ホストコンピュータ１００の処理に必要なデータを記憶するメモリである。このメモリ３００としては、不揮発性メモリを想定する。このメモリ３００は、データとともにエラー訂正コード（ＥＣＣ）を記憶することにより、データ保持特性の改善を図る。記憶制御装置２００は、ホストコンピュータ１００とメモリ３００の間に接続され、ホストコンピュータ１００からのリクエストに応じてメモリ３００の制御を行う装置である。なお、エラー訂正コードはエラー（誤り）検出の機能も包含しているため、誤り検出符号、エラー検出符号、エラー検出コードなどと呼称する場合もある。
【００２３】
記憶制御装置２００は、ホストインターフェース２１０と、メモリインターフェース２３０と、制御部２４０と、ＲＯＭ２５０と、ＲＡＭ２６０と、ＥＣＣ処理部２７０とを備えている。これらはバス２９０を介して相互に接続されている。
【００２４】
ホストインターフェース２１０は、ホストコンピュータ１００との間のやりとりを行うインターフェース回路である。メモリインターフェース２３０は、メモリ３００との間のやりとりを行うインターフェース回路である。
【００２５】
制御部２４０は、記憶制御装置２００における種々の処理を実行する処理装置である。ＲＯＭ２５０は、制御部２４０において実行されるプログラムやその実行に必要なパラメータなどを記憶する読出し専用のメモリである。ＲＡＭ２６０は、制御部２４０における処理に必要な作業領域を記憶するメモリである。
【００２６】
ＥＣＣ処理部２７０は、メモリ３００に記憶されるエラー訂正コードに関する処理を行うものである。このＥＣＣ処理部２７０は、後述するように、エラー訂正コードを生成する機能およびメモリ３００から読み出されたデータとエラー訂正コードとからエラー訂正を行う機能を含む。
【００２７】
メモリ３００のアクセス空間は固定長の物理ページに区分けして管理される。メモリ３００の物理ページの各々は論理ページにマッピングされる。ホストコンピュータ１００からは、基本的には論理アドレスによりアクセスされる。以下では、論理ページのデータサイズを２５６バイトとし、物理ページには２５６バイトのデータおよび１６バイトのエラー訂正コードが記憶されるものとする。ただし、これらのサイズは一例であり、本技術はこれに限定されるものではない。
【００２８】
図２は、本技術の実施の形態におけるＲＡＭ２６０のメモリマップの概要例を示す図である。ここでは、ＲＡＭ２６０には、空きページテーブル２６１と、アドレス変換テーブル２６２と、データバッファ２６３と、ＥＣＣタイプテーブル２６４と、論理ページイメージ領域２６６と、物理ページイメージ領域２６７とが記憶されている。なお、制御部２４０において実行されるプログラムならびにその実行の際に使用される領域等もＲＡＭ２６０の内部に確保される。
【００２９】
空きページテーブル２６１は、メモリ３００内の物理ページの使用状況を管理するテーブルである。この空きページテーブル２６１では、後述するように、物理ページアドレスごとに対応する物理ページの使用状況が保持される。
【００３０】
アドレス変換テーブル２６２は、ホストコンピュータ１００から供給された論理アドレスをメモリ３００の物理アドレスに変換するためのテーブルである。このアドレス変換テーブル２６２では、後述するように、論理ページアドレスごとに対応する物理ページアドレスが保持される。なお、アドレス変換テーブル２６２は、特許請求の範囲に記載のアドレス変換部の一例である。
【００３１】
データバッファ２６３は、ホストコンピュータ１００からメモリ３００に対するライトデータを保持するためのバッファである。この実施の形態では、少なくとも、ホストから指示されるライトコマンドを構成するライトデータの最大サイズと等しいデータを保持するものとする。
【００３２】
ＥＣＣタイプテーブル２６４は、エラー訂正コードのタイプをページごとに管理するテーブルである。このＥＣＣタイプテーブル２６４では、後述するように、論理ページアドレスごとに対応するページのエラー訂正コードタイプ（ＥＣＣタイプ）が保持される。エラー訂正コードタイプについては後述する。なお、ＥＣＣタイプテーブル２６４は、特許請求の範囲に記載のエラー訂正コード付与規則保持部の一例である。
【００３３】
論理ページイメージ領域２６６は、ホストコンピュータ１００から把握される論理ページのイメージを保持するための領域である。物理ページイメージ領域２６７は、メモリ３００側における物理ページのイメージを保持するための領域である。この実施の形態では、論理ページイメージ領域２６６は論理ページのサイズと同じ２５６バイトの領域であり、物理ページイメージ領域２６７は物理ページのサイズと同じ２７２バイトの領域である。
【００３４】
空きページテーブル２６１、アドレス変換テーブル２６２、ＥＣＣタイプテーブル２６４の３種類のテーブルは、電源が断たれている間はメモリ３００の予め決められた位置に記憶されている。記憶制御装置２００は電源投入時の初期化処理において、予め決められた位置からこれら３種類のテーブルを読み出し、ＲＡＭ２６０内に一時的に蓄積する。記憶制御装置２００はホストコンピュータ１００から電源断の予告を受けると、これら３種類のテーブルをメモリ３００の予め決められた位置に書き込む。また、予期せぬ電源遮断による影響を最小限に抑えるため、一定時間経過または一定回数の処理などの節目ごとに、これら３種類のテーブルをメモリ３００に書き込む処理を行う。
【００３５】
図３は、本技術の実施の形態におけるメモリ３００の一構成例を示す図である。このメモリ３００は、制御インターフェース３１０と、アドレスデコーダ３２０と、メモリセル３３０と、ページバッファ３４０と、制御部３８０とを備えている。これらはバス３９０を介して相互に接続されている。
【００３６】
制御インターフェース３１０は、記憶制御装置２００との間のやりとりを行うインターフェース回路である。この制御インターフェース３１０は、記憶制御装置２００から転送される情報やデータの入力、および、記憶制御装置２００に転送する情報やデータの出力を行う。
【００３７】
メモリセル３３０は記憶素子であり、ここでは不揮発性メモリを想定する。このメモリセル３３０は、１ビットのデータを記録する単メモリセルが二次元に配列された構造を有する。例えば、水平方向に物理ページの２７２バイト分の単メモリセルを並べたものを、垂直方向に物理ページアドレスに沿って並べることにより構成される。
【００３８】
アドレスデコーダ３２０は、制御インターフェース３１０から入力された物理ページアドレスをデコードして、物理ページに対応する一本のワードラインをドライブする。アドレスデコーダ３２０とメモリセル３３０の間には全ての物理ページに対して一本ずつのワードラインが配線されている。メモリセル３３０においてドライブされたワードラインに対応する物理ページがアクティブとなる。
【００３９】
ページバッファ３４０は、メモリセル３３０の物理ページと同一のサイズを持つバッファである。このページバッファ３４０は、メモリセル３３０においてアクティブとなった物理ページとのあいだでデータのやりとりを行う。
【００４０】
制御部３８０は、メモリ３００の全体を制御するものである。制御部３８０は、記憶制御装置２００からの指示がライトの場合には、制御インターフェース３１０に転送された物理アドレスをアドレスデコーダ３２０に供給し、メモリセル３３０上の指定された物理ページをアクティブにする。さらに、制御部３８０は、制御インターフェース３１０に転送されたライトデータをページバッファ３４０に供給し、メモリセル３３０に対してライト指示を行う。これによりアクティブとなっている物理ページに対して書込みが行われる。
【００４１】
制御部３８０は、記憶制御装置２００からの指示がリードの場合には制御インターフェース３１０に転送された物理アドレスをアドレスデコーダ３２０に入力し、メモリセル３３０上の指定された物理ページをアクティブとする。さらに、制御部３８０は、メモリセル３３０に対してリード指示を行う。これによりアクティブとなっている物理ページが読み出されてページバッファ３４０に供給される。制御部３８０は、ページバッファ３４０に読み出されたデータを制御インターフェース３１０に供給して、制御インターフェース３１０を介して記憶制御装置２００へ転送する。
【００４２】
なお、以下の説明では、ホストコンピュータ１００から指定される論理アドレス、および、記憶制御装置２００内部で扱う論理ページアドレスを"０ｘ"で始まる１６進数の記述方法で記述し、物理ページアドレスを１０進数で記述する。
【００４３】
［ページ構造］
図４は、本技術の実施の形態のメモリ３００におけるページ構造の一例を示す図である。同図（ａ）に示すように、この実施の形態ではメモリセル３３０に記憶される物理ページのサイズを２７２バイトとしている。そして、この物理ページに２５６バイトのデータと１６バイトのエラー訂正コード（パリティ）を記憶する場合、エラー訂正コードの付与規則として以下の２つのタイプを想定する。
【００４４】
タイプＡでは、同図（ｂ）に示すように、２７２バイトの物理ページを３４バイトのサブページに分割し、それぞれを３２バイトのデータと２バイトのパリティとして使用する。一方、タイプＢでは、同図（ｃ）に示すように、２７２バイトの物理ページを２５６バイトのデータと１６バイトのパリティとして使用する。これら２つのタイプの何れをエラー訂正コードの付与規則として使用するかは、ＥＣＣタイプテーブル２６４において管理される。なお、１ページの２５６バイトのデータは、特許請求の範囲に記載の一群のデータ列の一例である。また、１ページを分割したサブページの３２バイトのデータは、特許請求の範囲に記載の部分データ列の一例である。
【００４５】
タイプＡの構造は８つの独立したサブページを備えているため、ＥＣＣ処理部２７０の能力によっては同時に８つのサブページを処理することでエラー訂正コード生成処理およびエラー訂正処理を高速化することができる。また、タイプＢは長い語調であるため比較的計算量の多いＬＤＰＣ符号などを使用することにより、タイプＡに比較して計算時間は長くなるが、データ保持の信頼性をより高めることができる。
【００４６】
同図（ｂ）では、タイプＡのページ構造の例として、３２バイトのデータと２バイトのパリティが隣り合って記録されることを想定しているが、メモリセルの機能が許容する場合にはこれらを自由な形式により分割してもよい。例えば、２バイトのパリティを離れた領域にまとめて記録するようにしてもよい。
【００４７】
このＥＣＣタイプの指定は、例えばライトコマンドにおいて行われる。その場合、ライトコマンド内の特定のフィールドによって指定するようにしてもよく、また、別のコマンドコードを使い分けるようにしてもよい。また、ＥＣＣタイプを設定するための独立したコマンドを新たに設けてもよい。例えば、重要なファイルを書き込む直前にＥＣＣタイプ設定コマンドを実行して、それに続いて通常のライトコマンドを実行することにより、ＥＣＣタイプ設定コマンドにより設定されたＥＣＣタイプにより書込みを行うことができる。
【００４８】
［テーブル構成］
図５は、本技術の実施の形態における空きページテーブル２６１の一構成例を示す図である。この空きページテーブル２６１は、物理ページアドレスごとに対応する物理ページの使用状況を保持している。この空きページテーブル２６１のそれぞれのエントリ（行）は、「物理ページアドレス」と「使用状況」の二つの要素により構成されている。
【００４９】
この空きページテーブル２６１では、各エントリ中の「物理ページアドレス」において示される物理ページの状況が「使用状況」に示される。ここで、「使用状況」は、メモリセル３３０における物理ページが使われていない（未使用）、使われている（使用中）、または、エラー等の理由により現在使われておらず今後も使われることが推奨されない（使用不能）の何れかの状態を示す。
【００５０】
この空きページテーブル２６１は、各エントリを「物理ページアドレス」の数値の昇順に並べている。空きページテーブル２６１に登録されているエントリの数は、メモリ３００内のメモリセル３３０が備える物理ページの数と等しい。
【００５１】
なお、空きページテーブル２６１における「物理ページアドレス」の数値は０から始まり１ずつ増加する数値であり、エントリ番号から容易に計算することが可能である。したがって、エントリの項目から「物理ページアドレス」を削除して、エントリの構成要素を「使用状況」のみとすることも可能である。
【００５２】
図６は、本技術の実施の形態におけるアドレス変換テーブル２６２の一構成例を示す図である。このアドレス変換テーブル２６２は、論理ページアドレスごとに対応する物理ページアドレスを保持している。すなわち、このアドレス変換テーブル２６２は、ホストコンピュータ１００との間で使用される論理アドレスと、記憶制御装置２００およびメモリ３００において使用される物理アドレスとの対応関係を示している。
【００５３】
この実施の形態における記憶制御装置２００内部では、ホストコンピュータ１００から指定される論理アドレスを論理ページアドレス単位で管理している。ここで、論理ページと物理ページは１対１の関係を有しており、１つの論理ページに１つの物理ページが割り当てられる。論理ページのサイズは２５６バイトであり、これは物理ページ内のデータの合計である２５６バイトと等しい。ホストコンピュータ１００から指定される論理アドレスを論理ページサイズで除した商が論理ページアドレスとなり、除算の剰余が論理ページ内のオフセットアドレスとなる。
【００５４】
アドレス変換テーブル２６２のそれぞれのエントリは「論理ページアドレス」と、「割当状況」と、「物理ページアドレス」の３つの要素によって構成されている。各エントリ中の「論理ページアドレス」で示される論理ページに、物理ページが割り当てられている（"割当済"）か、否（"未割当"）かが「割当状況」に示される。そして、「割当状況」が"割当済"の論理ページについては、対応する物理ページのアドレスが「物理ページアドレス」に示される。
【００５５】
同図の例では、「論理ページアドレス」が"０ｘ００００−０００２"のエントリでは、「割当状況」が"未割当"となっているため、「物理ページアドレス」の値に意味がない。このため、このエントリに対する「物理ページアドレス」の値は"−"を示している。
【００５６】
アドレス変換テーブル２６２は、各エントリを「論理ページアドレス」の数値の昇順に並べている。アドレス変換テーブル２６２に登録されているエントリの数は、記憶制御装置２００がホストコンピュータ１００に対して公開している論理アドレス空間の大きさ（バイト単位）を論理ページのサイズである２５６バイトで除した商に等しい。
【００５７】
アドレス変換テーブル２６２に登録されているエントリの数は、メモリ３００内のメモリセル３３０に備えられた物理ページの数より小さい。空きページテーブル２６１の説明で示したように、物理ページがエラー等の理由により使用不能とされることがあるなどの理由により、物理ページの数は論理ページの数に対して十分な余裕を確保してあるためである。
【００５８】
なお、アドレス変換テーブル２６２における「論理ページアドレス」の数値は０から始まり１ずつ増加する数値であり、エントリ番号から容易に計算することが可能である。したがって、エントリの項目から「論理ページアドレス」を削除して、エントリの構成要素を「割当状況」と「物理ページアドレス」とすることも可能である。
【００５９】
図７は、本技術の第１の実施の形態におけるＥＣＣタイプテーブル２６４の一構成例を示す図である。このＥＣＣタイプテーブル２６４は、論理ページアドレスごとに対応するページのエラー訂正コードタイプ（ＥＣＣタイプ）を保持している。
【００６０】
ＥＣＣタイプテーブル２６４のそれぞれのエントリは、「論理ページアドレス」と、「ＥＣＣタイプ」との２つの要素によって構成されている。エントリ中の「論理ページアドレス」に対応する論理ページにおけるエラー訂正コードの付与規則がタイプＡであるか、タイプＢであるかを「ＥＣＣタイプ」によって示している。
【００６１】
ＥＣＣタイプテーブル２６４は、各エントリを「論理ページアドレス」の数値の昇順に並べている。ＥＣＣタイプテーブル２６４に登録されているエントリの数は、記憶制御装置２００がホストコンピュータ１００に対して公開している論理アドレス空間の大きさ（バイト単位）を論理ページのサイズである２５６バイトで除した商に等しい。
【００６２】
なお、ＥＣＣタイプテーブル２６４の「論理ページアドレス」の数値は０から始まり１ずつ増加する数値であり、エントリ（行）番号から容易に計算することが可能である。したがって、エントリの項目から「論理ページアドレス」を削除し、エントリの構成要素を「ＥＣＣタイプ」のみとすることも可能である。
【００６３】
アドレス変換テーブル２６２の場合と同様に、ＥＣＣタイプテーブル２６４に登録されているエントリの数は、メモリ３００内のメモリセル３３０に備えられた物理ページの数より小さい。
【００６４】
［記憶制御装置の機能］
図８は、本技術の第１の実施の形態における記憶制御装置２００の機能構成例を示す図である。ここでは、上述のアドレス変換テーブル２６２およびＥＣＣタイプテーブル２６４を示している。また、ＥＣＣ処理部２７０の一部として、ＥＣＣ生成部２７１とエラー訂正部２７２とを示している。
【００６５】
ＥＣＣ生成部２７１は、ライトの際に指定されたＥＣＣタイプに従ってエラー訂正コードを生成するものである。エラー訂正コードの付与対象となるデータが全てライトデータに含まれている場合には、ＥＣＣ生成部２７１はライトコマンド（ライトリクエスト）のライトデータを用いてエラー訂正コードを生成する。一方、ライトデータ以外のデータとともにエラー訂正コードを生成する必要がある場合には、ＥＣＣ生成部２７１はメモリ３００からリードされたデータも用いてエラー訂正コードを生成する。このＥＣＣ生成部２７１によって生成されたエラー訂正コードは、データとともにメモリ３００に記憶される。その際のライトアドレスは、アドレス変換テーブル２６２から供給された物理アドレスである。また、ライトの際に指定されたＥＣＣタイプは、ＥＣＣタイプテーブル２６４において、ライトコマンドのライトアドレスである論理アドレスに対応するエントリに保持される。なお、ＥＣＣ生成部２７１は、特許請求の範囲に記載のエラー訂正コード生成部の一例である。
【００６６】
エラー訂正部２７２は、メモリ３００から読み出されたデータおよびエラー訂正コードを用いてエラー訂正を行うものである。その際に用いられるエラー訂正コードの付与規則は、ＥＣＣタイプテーブル２６４から供給される。ＥＣＣタイプテーブル２６４は、リードコマンドのリードアドレスである論理アドレスに基づいてＥＣＣタイプを出力する。なお、メモリ３００において使用されるリードアドレスは、アドレス変換テーブル２６２から供給された物理アドレスである。エラー訂正部２７２は、ＥＣＣタイプテーブル２６４から出力されたＥＣＣタイプに従ってエラー検出を行い、必要に応じてエラー訂正を行った上で、データを出力する。この出力されたデータは、リードデータとしてホストコンピュータ１００に返送され、または、ライトデータとともに物理ページを構成するデータとしてＥＣＣ生成部２７１に供給される。なお、エラー訂正部２７２は、特許請求の範囲に記載のエラー訂正部の一例である。
【００６７】
［ライトデータと論理ページの関係］
図９は、本技術の実施の形態におけるライトデータと論理ページの関係を説明するための図である。この例では、ライトコマンドの開始論理アドレスが"０ｘ００００−００００−００Ｆ０"であり、ライトサイズが５１２バイトである場合を示している。すなわち、このライトコマンドは、論理ページ"０ｘ００００−００００"から"０ｘ００００−０００２"の３つの論理ページに跨って書込みを行う。
【００６８】
ライトコマンドの処理の際には論理ページ単位で行われるため、図示するように３つの論理ページに分解（分割）する必要がある。論理ページ"０ｘ００００−００００"では、ライト開始位置のページ内オフセットアドレスは"０ｘＦ０"であり、ページ内ライトサイズは１６バイトである。論理ページ"０ｘ００００−０００１"では、ライト開始位置のページ内オフセットアドレスは先頭の"０ｘ００"であり、ページ内ライトサイズは全体の２５６バイトである。論理ページ"０ｘ００００−０００２"では、ライト開始位置のページ内オフセットアドレスは先頭の"０ｘ００"であり、ページ内ライトサイズは２４０バイトである。
【００６９】
この例の論理ページ"０ｘ００００−００００"のように、ページ内オフセットアドレスが"０ｘ００"と異なる場合には、その論理ページの先頭には書換えが生じない。また、論理ページ"０ｘ００００−０００２"のように、ページ内オフセットアドレスが"０ｘ００"であって、かつ、ページ内ライトサイズが２５６バイトに満たない場合には、その論理ページの末尾には書換えが生じない。
【００７０】
図１０は、本技術の実施の形態におけるライトデータと論理ページの関係を説明するための他の図である。この例では、ライトコマンドの開始論理アドレスが"０ｘ００００−００００−０１２０"であり、ライトサイズが１２８バイトである場合を示している。すなわち、このライトコマンドは、論理ページのサイズよりも小さく、かつ、複数の論理ページに跨らず、論理ページ"０ｘ００００−０００１"の一部分のみに対して書込みを行う。
【００７１】
この場合、論理ページ"０ｘ００００−０００１"において、ライト開始位置のページ内オフセットアドレスは"０ｘ２０"であり、ページ内ライトサイズは１２８バイトである。この例の論理ページ"０ｘ００００−０００１"のように、ページ内オフセットアドレスが０と異なり、かつ、ページ内ライトサイズが２５６バイトに満たない場合には、論理ページの途中に書換えが発生する。
【００７２】
［情報処理システムの動作］
図１１は、本技術の実施の形態における情報処理システムの読出し動作例を示す流れ図である。まず、ホストコンピュータ１００から指示されたリードコマンド（リードリクエスト）はホストインターフェース２１０を介して記憶制御装置２００に入力される。リードコマンドは「リードアドレス」および「リードデータサイズ」から構成されている。「リードアドレス」は、読出し対象データの論理アドレスである。
【００７３】
制御部２４０は、リードコマンドを構成する「リードアドレス」と「リードデータサイズ」を、論理ページ単位に分割する（ステップＳ９１１）。具体的には、書込み動作において図９および図１０を参照して説明した論理ページ単位の分割と同様である。これにより、論理ページごとに「ページ内オフセットアドレス」と「ページ内リードサイズ」が計算により得られる。
【００７４】
そして、ステップＳ９１１において分割された論理ページ単位のうち、読出し処理が未処理のものが未だ残っているか否かが判定される（ステップＳ９１２）。論理ページ単位の読出し処理が残っていない場合には（ステップＳ９１２：Ｎｏ）、リードコマンドの処理終了をホストコンピュータ１００に通知して読出し動作を終了する（ステップＳ９２２）。
【００７５】
一方、論理ページ単位の読出し処理が残っている場合には（ステップＳ９１２：Ｙｅｓ）、残っている論理ページ単位の読出し処理の中から、一つを選択する（ステップＳ９１３）。ここでは、論理ページアドレスの若い順に選択することを想定する。そして、選択された論理ページ単位の読出し処理に対応する論理ページの情報を、アドレス変換テーブル２６２およびＥＣＣタイプテーブル２６４から取得する（ステップＳ９１４）。
【００７６】
そして、処理を行うべき論理ページに物理ページが割り当てられているか否かを確認する（ステップＳ９１５）。すなわち、「割当状況」が"未割当"であった場合には、ステップＳ９１９に進み、"割当済"であった場合にはステップＳ９１６に進む。
【００７７】
「割当状況」が"未割当"であった場合（ステップＳ９１５：Ｎｏ）、リード対象の論理ページに対する物理ページが割り当てられていない状況であるため、ホストコンピュータ１００に通知すべきデータを準備する（ステップＳ９１９）。具体的には、論理ページイメージ領域２６６をゼロクリアする。ここで、ゼロクリアではなく、"０ｘ００"、"０ｘＦＦ"等の周期的なデータや予め定められた特定のデータを用いて初期化してもよい。また、この例ではステップＳ９１９を通るたびに初期化するということになっているが、電源投入時等に初期化を行う特別な領域をＲＡＭ２６０に用意しておいて、物理ページの割当てがなされていない論理ページへの読出しがあった場合に、特別な領域のデータを通知することも可能である。
【００７８】
また、物理ページの割り当てられていない論理ページへの読出しに対して、メモリ３００内の予め割り当てられた物理ページを読み出してホストコンピュータ１００に転送することも可能である。予め割り当てられた物理ページに予め書込みを行うことで、メモリごとに異なるデータをホストコンピュータ１００に転送することができる。
【００７９】
「割当状況」が"割当済"であった場合（ステップＳ９１５：Ｙｅｓ）、その論理ページに対応するデータの読出しを行う（ステップＳ９１６）。このときの物理ページアドレスは、ステップＳ９１４においてアドレス変換テーブル２６２から読み出した「物理ページアドレス」である。このとき、記憶制御装置２００はメモリ３００に対して、読出しの指示および物理ページアドレスを通知する。メモリ３００は指定された物理ページアドレスに対応する物理ページの内容を読み出して、記憶制御装置２００に転送する。記憶制御装置２００はメモリ３００から転送された物理ページのデータを物理ページイメージ領域２６７に格納する。
【００８０】
次に、ＥＣＣ処理部２７０のエラー訂正部２７２が、エラー訂正を行う（ステップＳ９１７）。その際、エラー訂正部２７２には、ステップＳ９１４においてＥＣＣタイプテーブル２６４から取得したＥＣＣタイプと、物理ページイメージ領域２６７の先頭アドレスと、エラー訂正の指示とが与えられる。エラー訂正部２７２は、ＥＣＣタイプとしてタイプＡが指定された場合、物理ページイメージ領域２６７の先頭アドレスから３４バイトを読み出し、３２バイトのユーザデータに２バイトのパリティが付加されているものと解釈しエラー訂正処理を行う。そして、その結果を物理ページイメージ領域２６７の同じ位置に書き戻す。これを８回繰り返してエラー訂正処理を完了する。一方、ＥＣＣタイプとしてタイプＢが指定された場合、物理ページイメージ領域２６７の先頭アドレスから２７２バイトを読み出し、２５６バイトのユーザデータに１６バイトのパリティが付加されているものと解釈してエラー訂正処理を行う。そして、その結果を物理ページイメージ領域２６７の同じ位置に書き戻す。
【００８１】
次に、制御部２４０が、物理ページイメージ領域２６７からデータを抜き出して、論理ページイメージ領域２６６に転送する（ステップＳ９１８）。具体的には、ＥＣＣタイプとしてタイプＡが指定された場合、物理ページイメージ領域２６７の先頭から３２バイトを読み出して論理ページイメージ領域２６６に転送し、読み出しを２バイト分スキップする。これを８回繰り返してユーザデータの抜き出しを終了する。一方、ＥＣＣタイプとしてタイプＢが指定された場合、物理ページイメージ領域２６７の先頭から２５６バイトを読み出して、論理ページイメージ領域２６６に転送する。
【００８２】
これらによって論理ページイメージ領域２６６が準備されると（ステップＳ９１８またはＳ９１９）、論理ページイメージ領域２６６のデータはホストコンピュータ１００に転送される（ステップＳ９２１）。すなわち、論理ページイメージ領域２６６の「ページ内オフセットアドレス」の位置から「ページ内リードサイズ」分の転送が行われる。ここで用いる「ページ内オフセットアドレス」と「ページ内リードサイズ」はステップＳ９１１において計算されたものである。その後、ステップＳ９１２からの処理を繰り返す。
【００８３】
なお、この実施の形態では、データ抜き出し処理（ステップＳ９１８）およびホストコンピュータ１００への転送処理（ステップＳ９２１）においてそれぞれデータコピーを行っているが、物理ページイメージ領域２６７から直接転送するようにしてもよい。
【００８４】
図１２は、本技術の実施の形態における情報処理システムの書込み動作例を示す流れ図である。まず、ホストコンピュータ１００から指示されたライトコマンド（ライトリクエスト）は、ホストインターフェース２１０を介して記憶制御装置２００に入力される。ライトコマンドは、「ライトアドレス」、「ＥＣＣタイプ」、「ライトデータサイズ」、および「ライトデータ」から構成される。このうち「ライトデータ」は、ＲＡＭ２６０のデータバッファ２６３に一時的に格納される。また、「ライトアドレス」は、書込み対象データの論理アドレスである。
【００８５】
制御部２４０は、ライトコマンドを構成する「ライトアドレス」と「ライトデータサイズ」を、上述のように論理ページ単位に分割する（ステップＳ９３１）。これにより、論理ページごとに「ページ内オフセットアドレス」および「ページ内ライトサイズ」が得られる。また、制御部２４０は、ホストコンピュータ１００から与えられてデータバッファ２６３に一時格納されたライトデータを論理ページごとに分解したそれぞれの領域の先頭アドレスをすべて計算する。論理ページ単位の分割については図９および図１０により説明したとおりである。以下のステップＳ９３２以降の処理は、ステップＳ９３１で分割された論理ページ単位に対して繰り返し行われる。
【００８６】
ステップＳ９３１において分割された論理ページ単位のうち、書込み処理が未処理のものが未だ残っているか否かが判定される（ステップＳ９３２）。論理ページ単位の書込み処理が残っていない場合には（ステップＳ９３２：Ｎｏ）、ライトコマンドの処理終了をホストコンピュータ１００に通知して書込み動作を終了する（ステップＳ９５５）。
【００８７】
一方、論理ページ単位の書込み処理が残っている場合には（ステップＳ９３２：Ｙｅｓ）、残っている論理ページ単位の書込み処理の中から、一つを選択する（ステップＳ９３３）。ここでは、論理ページアドレスの若い順に選択することを想定する。そして、選択された論理ページ単位の読出し処理に対応する論理ページの情報を、アドレス変換テーブル２６２およびＥＣＣタイプテーブル２６４から取得する（ステップＳ９３４）。
【００８８】
そして、処理を行うべき論理ページに物理ページが割り当てられているか否かを確認する（ステップＳ９３５）。すなわち、「割当状況」が"割当済"であった場合には、ステップＳ９３８に進み、"未割当"であった場合にはステップＳ９３６に進む。
【００８９】
「割当状況」が"未割当"であった場合、空きページテーブル２６１に基づいて使用可能な物理ページを確保する（ステップＳ９３６）。具体的には「使用状況」が"未使用"であるエントリを検索して、その「使用状況」に"使用中"の値を代入する。なお、空きページテーブル２６１において使用可能な物理ページが存在しない場合には、その旨をホストコンピュータ１００に通知する等の処理が行われるが、ここでは説明を省略する。
【００９０】
物理ページが確保されると、アドレス変換テーブル２６２の対応するエントリにおいて、「割当状況」が"割当済"に変更されるとともに、確保された物理ページアドレスが「物理ページアドレス」に設定される（ステップＳ９３７）。さらに、内部変数の新規ページフラグに、処理中の論理ページは新規に割当てが行われた旨が記録される。
【００９１】
次に、処理中の論理ページに対する書込みは論理ページの全体を書き換えるものであるか否かが判断される（ステップＳ９３８）。具体的には、処理中の論理ページに対する処理において、分割された論理ページ単位の「ライトデータサイズ」の値が"２５６"に等しい場合には、全体を書き換えるものと判断する（ステップＳ９３８：Ｙｅｓ）。一方、分割された論理ページ単位の「ライトデータサイズ」の値が"２５６"に等しくない場合には、部分を書き換えるものと判断する（ステップＳ９３８：Ｎｏ）。
【００９２】
処理中の論理ページに対する書込みが論理ページの全体を書き換えるものである場合（ステップＳ９３８：Ｙｅｓ）、データバッファ２６３のデータが論理ページイメージ領域２６６に転送される（ステップＳ９３９）。具体的には、データバッファ２６３に一時格納されたライトデータを論理ページごとに分解したそれぞれの領域の先頭アドレスから、論理ページ分の２５６バイトが論理ページイメージ領域２６６に転送される。なお、それぞれの領域の先頭アドレスはステップＳ９３１において計算されたものである。
【００９３】
処理中の論理ページに対する書込みが論理ページの全体を書き換えるものでない場合（ステップＳ９３８：Ｎｏ）、論理ページの部分書換えが行われる（ステップＳ９４０）。この論理ページの部分書換えの処理について、図１３を参照して説明する。
【００９４】
図１３は、本技術の実施の形態における情報処理システムの論理ページの部分書換え処理の動作例を示す流れ図である。まず、ここでは、新規ページフラグの内容がチェックされる（ステップＳ９４１）。すなわち、ステップＳ９３７において新規に割当てが行われた旨が新規ページフラグに記録されている場合には（ステップＳ９４１：Ｙｅｓ）、論理ページイメージ領域２６６がクリアされる（ステップＳ９４２）。
【００９５】
一方、新規に割当てが行われた旨が新規ページフラグに記録されていない場合には（ステップＳ９４１：Ｎｏ）、書込み対象の論理ページに対応するデータの読出しを行う（ステップＳ９４３）。このときの物理ページアドレスは、ステップＳ９３４においてアドレス変換テーブル２６２から読み出された情報を利用することができる。ここで読み出された物理ページの内容は物理ページイメージ領域２６７に反映され、物理ページイメージ領域２６７上でエラー訂正部２７２によるエラー訂正が行われる。そして、物理ページイメージ領域２６７の中からデータ部分が抜き出されて、論理ページイメージ領域２６６に転送される。
【００９６】
その後、論理ページイメージ領域２６６において、部分書換えが行われる（ステップＳ９４４）。具体的には、論理ページイメージ領域２６６の「ページ内オフセットアドレス」の位置から「ページ内ライトサイズ」分の書き換えが行われる。ここで用いられる「ページ内オフセットアドレス」および「ページ内ライトサイズ」は、ステップＳ９３１において計算されたものである。
【００９７】
図１２に戻って、ここまでの処理によって準備された論理ページイメージ領域２６６に基づいて、物理ページイメージ領域２６７が形成される（ステップＳ９５１）。具体的にはＥＣＣタイプとしてタイプＡが指定された場合、論理ページイメージ領域２６６の先頭から３２バイトを読み出して物理ページイメージ領域２６７に転送し、書込み位置をパリティの２バイト分スキップする。これを８回繰り返してページ構造の形成を終了する。一方、ＥＣＣタイプとしてタイプＢが指定された場合、論理ページイメージ領域２６６の先頭から２５６バイトを読み出して物理ページイメージ領域２６７に転送する。
【００９８】
次に、ＥＣＣ処理部２７０のＥＣＣ生成部２７１が、エラー訂正コードの生成処理を行う（ステップＳ９５２）。その際、ＥＣＣ生成部２７１には、ホストコンピュータ１００からライトコマンドのパラメータとして取得したＥＣＣタイプと、物理ページイメージ領域２６７の先頭アドレスと、エラー訂正コード（パリティ）生成の指示とが与えられる。ＥＣＣ生成部２７１は、ＥＣＣタイプとしてタイプＡが指定された場合、物理ページイメージ領域２６７の先頭から３２バイトを読み出し、２バイトのパリティを計算して、物理ページイメージ領域２６７に書き戻して３４バイトのサブページを完成する。これを８回繰り返して物理ページイメージ領域２６７を完成する。一方、ＥＣＣタイプとしタイプＢが指定された場合、物理ページイメージ領域２６７の先頭から２５６バイトを読み出し、１６バイトのパリティを計算し、物理ページイメージ領域２６７に書き戻して、物理ページイメージ領域２６７を完成する。
【００９９】
このようにして完成した物理ページイメージ領域２６７の内容は、メモリ３００に書き込まれる（ステップＳ９５３）。その際、制御部２４０は、書込み指示および物理ページアドレスを、メモリインターフェース２３０を経由してメモリ３００に出力する。ここで、物理ページアドレスは、ステップＳ９４３において読み出された物理ページまたはステップＳ９３６において新たに割り当てられた物理ページのアドレスである。メモリ３００は、物理ページアドレスにおいて指定された物理ページに対して、受け取ったライトデータを書き込む。
【０１００】
そして、制御部２４０は、ＥＣＣタイプテーブル２６４のライトアドレスに対応するエントリに、ホストコンピュータ１００からライトコマンドのパラメータとして受け取ったＥＣＣタイプを書き込んで更新する（ステップＳ９５４）。
【０１０１】
なお、ステップＳ９５３およびステップＳ９５４におけるメモリ３００への書込みとＥＣＣタイプテーブル２６４の更新は、順不同であり、どちらを先に処理しても、同時に処理しても構わない。両者の処理が完了すると、ステップＳ９３２に戻って処理を繰り返す。
【０１０２】
このように、本技術の第１の実施の形態によれば、ＥＣＣタイプテーブル２６４において論理ページごとにＥＣＣタイプを任意に定義することができる。このＥＣＣタイプの設定は、ホストコンピュータ１００からのライトコマンドにおいて指定することができ、ライトデータに対する信頼性を自由に定義することができる。すなわち、予め定められた固定パターンやメモリチップの都合によらず、ホストコンピュータ１００からの視点による判断をデータの記憶に対して適用することができる。
【０１０３】
＜２．第２の実施の形態＞
［記憶制御装置の機能］
図１４は、本技術の第２の実施の形態における記憶制御装置２００の機能構成例を示す図である。この第２の実施の形態は、ＥＣＣタイプテーブル２６４に供給されるアドレスが物理アドレスである点において異なっており、それ以外の点については第１の実施の形態と同様の機能構成を備えている。
【０１０４】
すなわち、第１の実施の形態においては図７に示したようにＥＣＣタイプテーブル２６４において論理ページアドレスごとにＥＣＣタイプを保持していたが、この第２の実施の形態では物理ページアドレスごとにＥＣＣタイプを保持する。そのため、ＥＣＣタイプテーブル２６４に供給されるアドレスも物理ページアドレスとなる。これにより、この第２の実施の形態では、ＥＣＣタイプテーブル２６４において物理ページごとにＥＣＣタイプを任意に定義することができる。
【０１０５】
＜３．変形例＞
［部分書換えの際のエラー訂正コード再計算の省略］
ＥＣＣタイプがタイプＡのページに対する部分書換えの場合、書換えの影響を受けないサブページについては、本来、エラー訂正コードを再計算する必要がない。そこで、この変形例では、このような部分書換えにおいて、書換えの影響を受けないサブページについては、ステップＳ９５２においてエラー訂正コードの再計算を行わない。この場合、ステップＳ９４３において読み出され、エラー訂正処理が施された物理ページイメージ領域２６７に保存されているデータをそのまま利用することができる。ただし、新規割当てではない既存の論理ページの部分書換えであり、かつ、ＥＣＣタイプに変更がないことが条件である。
【０１０６】
具体的には、この変形例では、ステップＳ９４３において読み出された論理ページのＥＣＣタイプがタイプＡである場合には、その旨の情報を既存ページ部分書換え可能フラグとして残しておく。そして、ステップＳ９５２においてエラー訂正コードの生成を行う際に、ライトコマンドのＥＣＣタイプがタイプＡであり、かつ、既存ページ部分書換え可能フラグが有効である場合には、以下の処理を各サブページに対して行う。すなわち、エラー訂正コードの生成を行う前に、各サブページに対する書換えが発生しているか否かを判断し、ページ内書換え範囲に含まれないサブページについてはエラー訂正コード生成および物理ページイメージ領域２６７への出力をスキップする。ページ内書換え範囲に各サブページが含まれる場合には各サブページに対するエラー訂正コード生成および物理ページイメージ領域２６７への出力を行う。
【０１０７】
これにより、物理ページイメージ領域２６７には、部分書換え範囲に係るサブページのみに、エラー訂正コードの再計算および上書きを行ったデータが用意される。
【０１０８】
［部分読出しの際のエラー訂正の省略］
処理中の論理ページのＥＣＣタイプがいずれもタイプＡである場合、読出し対象となるサブページのみをエラー訂正して、それ以外のサブページについてはエラー訂正を省略してもよい。具体的には、ステップＳ９１７においてエラー訂正処理を行う際に、ＥＣＣタイプとしてタイプＡが指定されている場合、以下の処理を各サブページに対して行う。すなわち、各サブページのエラー訂正処理を行う前に、各サブページに対する転送が要求されているか否かを判断し、ページ内読出し範囲にそのサブページが含まれない場合にはそのサブページに対するエラー訂正処理をスキップする。一方、ページ内読出し範囲に各サブページが含まれる場合にはそのサブページに対するエラー訂正処理を行う。
【０１０９】
これにより物理ページイメージ領域２６７には、部分読出し範囲に係るサブページのみに、エラー訂正処理が施されたデータが用意される。
【０１１０】
［サブページ単位の転送］
処理中の論理ページのＥＣＣタイプがいずれもタイプＡである場合、エラー訂正処理が終わったサブページから順次、ホストコンピュータ１００に転送するようにしてもよい。すなわち、上述の実施の形態では、エラー訂正処理（ステップＳ９１７）、データ抜き出し（ステップＳ９１８）、ホストコンピュータ１００への転送（ステップＳ９２１）を論理ページ単位で逐次に行っているが、これらをサブページ単位で行ってもよい。これにより処理の高速化を図ることができる。
【０１１１】
さらに、上述の部分読出しの際のエラー訂正処理の省略を組み合わせると、サブページ単位でホストコンピュータ１００への転送が発生する場合にのみ、エラー訂正処理とデータ抜き出しとホストコンピュータ１００への転送を行うということができる。
【０１１２】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１１３】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disk）、メモリカード、ブルーレイディスク（Blu-ray Disc（登録商標））等を用いることができる。
【０１１４】
なお、本技術は以下のような構成もとることができる。
（１）メモリ内の一群のデータ列に対するエラー訂正コードの付与規則を前記一群のデータ列のアドレスごとに対応付けて保持するエラー訂正コード付与規則保持部と、
前記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行うエラー訂正部と
を具備する記憶制御装置。
（２）前記付与規則は、前記一群のデータ列の全体から前記エラー訂正コードが生成される場合と、前記一群のデータ列を構成する複数の部分データ列の各々から独立して前記エラー訂正コードが生成される場合の何れであるかを定義する
前記（１）に記載の記憶制御装置。
（３）前記エラー訂正部は、前記一群のデータ列を構成する複数の部分データ列の各々から独立して前記エラー訂正コードが生成される旨が前記アクセスアドレスに対応付けられた前記付与規則において定義されている場合、前記複数の部分データ列のうち前記アクセスに係る部分データ列のみについてエラー訂正を行う
前記（１）または（２）に記載の記憶制御装置。
（４）前記メモリに対してライトアクセスが発生した場合、前記ライトアクセスにおいて指示された前記付与規則に従って前記ライトアクセスに係るライトデータに対するエラー訂正コードを生成するエラー訂正コード生成部をさらに具備する前記（１）から（３）のいずれかに記載の記憶制御装置。
（５）前記エラー訂正コード生成部は、前記一群のデータ列を構成する複数の部分データ列の各々から独立して前記エラー訂正コードが生成される旨が前記ライトアドレスに対応付けられた前記付与規則において定義されている場合、前記複数の部分データ列のうち前記ライトアクセスに係る部分データ列のみについてエラー訂正コードを生成する
前記（４）に記載の記憶制御装置。
（６）前記エラー訂正コード付与規則保持部は、リクエストを発行するホストコンピュータからの指示に従って前記付与規則を保持する前記（１）から（５）のいずれかに記載の記憶制御装置。
（７）前記エラー訂正コード付与規則保持部は、前記メモリに対してライトアクセスが発生した場合、前記ライトアクセスにおいて指示された前記付与規則を前記ライトアクセスに係るライトアドレスに対応付けて保持する前記（１）から（６）のいずれかに記載の記憶制御装置。
（８）前記メモリに対するアクセスアドレスが論理アドレスである場合に前記論理アドレスを物理アドレスに変換して前記メモリに出力するアドレス変換部をさらに具備し、
前記エラー訂正コード付与規則保持部は、前記付与規則を前記一群のデータ列の前記論理アドレスごとに対応付けて保持し、
前記エラー訂正部は、前記論理アドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行う
前記（１）から（７）のいずれかに記載の記憶制御装置。
（９）前記メモリに対するアクセスアドレスが論理アドレスである場合に前記論理アドレスを物理アドレスに変換して前記メモリに出力するアドレス変換部をさらに具備し、
前記エラー訂正コード付与規則保持部は、前記付与規則を前記一群のデータ列の前記物理アドレスごとに対応付けて保持し、
前記エラー訂正部は、前記物理アドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行う
前記（１）から（８）のいずれかに記載の記憶制御装置。
（１０）データ領域において一群のデータ列に対するエラー訂正コードを前記一群のデータ列とともに記憶するメモリと、
前記一群のデータ列に対する前記エラー訂正コードの付与規則を前記一群のデータ列のアドレスごとに対応付けて保持するエラー訂正コード付与規則保持部と、
前記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行うエラー訂正部と
を具備する記憶装置。
（１１）前記付与規則は、前記一群のデータ列の全体から前記エラー訂正コードが生成される場合と、前記一群のデータ列を構成する複数の部分データ列の各々から独立して前記エラー訂正コードが生成される場合の何れであるかを定義し、
前記メモリは、前記一群のデータ列を構成する複数の部分データ列の各々から独立して前記エラー訂正コードが生成される旨を前記付与規則が定義する場合、前記複数の部分データ列の各々に連続する位置に前記エラー訂正コードを記憶する
前記（１０）に記載の記憶装置。
（１２）前記メモリは不揮発性メモリである前記（１０）または（１１）に記載の記憶装置。
（１３）一群のデータ列に対してエラー訂正コードを記憶するメモリと、
前記一群のデータ列に対する前記エラー訂正コードの付与規則を前記一群のデータ列のアドレスごとに対応付けて保持するエラー訂正コード付与規則保持部と、
前記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行うエラー訂正部と、
前記メモリに対して前記データ領域のリードまたはライトを要求するリクエストを発行するホストコンピュータと
を具備する情報処理システム。
（１４）メモリ内の一群のデータ列に対するエラー訂正コードの付与規則を前記一群のデータ列のアドレスごとに対応付けて定義するエラー訂正コード付与規則定義手順と、
前記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行うエラー訂正手順と
を具備する記憶制御方法。
【符号の説明】
【０１１５】
１００  ホストコンピュータ
２００  記憶制御装置
２１０  ホストインターフェース
２３０  メモリインターフェース
２４０  制御部
２６１  空きページテーブル
２６２  アドレス変換テーブル
２６３  データバッファ
２６４  ＥＣＣタイプテーブル
２６６  論理ページイメージ領域
２６７  物理ページイメージ領域
２７０  ＥＣＣ処理部
２７１  ＥＣＣ生成部
２７２  エラー訂正部
２９０  バス
３００  メモリ
３１０  制御インターフェース
３２０  アドレスデコーダ
３３０  メモリセル
３４０  ページバッファ
３８０  制御部
３９０  バス
【図１】
2013101455.tif 000003
【図２】
2013101455.tif 000004
【図３】
2013101455.tif 000005
【図４】
2013101455.tif 000006
【図５】
2013101455.tif 000007
【図６】
2013101455.tif 000008
【図７】
2013101455.tif 000009
【図８】
2013101455.tif 000010
【図９】
2013101455.tif 000011
【図１０】
2013101455.tif 000012
【図１１】
2013101455.tif 000013
【図１２】
2013101455.tif 000014
【図１３】
2013101455.tif 000015
【図１４】
2013101455.tif 000016