説明

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

【課題】メモリ内の一群のデータ列に対するエラー訂正コードの付与規則を柔軟に設定する。
【解決手段】記憶制御装置は、エラー訂正コード付与規則保持部とエラー訂正部とを備える。エラー訂正コード付与規則保持部は、メモリ内の一群のデータ列に対するエラー訂正コードの付与規則を一群のデータ列のアドレスごとに対応付けて保持する。エラー訂正部は、メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた付与規則に従ってメモリ内の一群のデータ列についてエラー訂正を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本技術は、記憶制御装置に関する。詳しくは、エラー訂正コードに基づくエラー訂正を行う記憶制御装置、記憶装置、情報処理システム、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
【背景技術】
【0002】
メモリを使用する際、メモリに記憶されたデータにおいてエラー(誤り)が生じていないかを検出し、訂正するために、エラー訂正コード(ECC:Error Correcting Code)が付与されることがある。特に、不揮発性メモリにおいてはこのエラー訂正コードを用いることが一般的となっている。すなわち、書込み時にエラー訂正コードを生成してそのエラー訂正コードをデータとともにメモリ上に記録しておいて、読出し時にはデータとエラー訂正コードとを同時に読み出してエラー訂正処理が行われる。これにより、メモリのデータ保持特性を改善することができる。
【0003】
このようなエラー訂正コードを使用する際、データ保持特性の改善の程度をメモリの領域毎に変更したい場合がある。例えば、偶数ページよりも奇数ページの方が高いエラー発生率を有する場合を想定し、2つの連続する奇偶ページ間で奇数ページにパリティビット数を多く割り振る半導体記憶装置が提案されている(例えば、特許文献1参照。)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−282923号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述の従来技術では、ページ間で異なる方式のエラー訂正コードを付与している。しかしながら、上述の従来技術ではエラー発生率の大きさに応じて奇偶ページの何れか一方にパリティビット数を多く割り振っており、ビット数の割当てはエラー発生率によって自動的に決められてしまう。これに対し、例えばファイルシステムでは特定のファイルについてデータ保持特性を向上させたい場合があり、そのためにはシステムから自由にエラー訂正コードの方式を設定できる必要が生じる。
【0006】
本技術はこのような状況に鑑みて生み出されたものであり、メモリ内の一群のデータ列に対するエラー訂正コードの付与規則を柔軟に設定することを目的とする。
【課題を解決するための手段】
【0007】
本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、メモリ内の一群のデータ列に対するエラー訂正コードの付与規則を上記一群のデータ列のアドレスごとに対応付けて保持するエラー訂正コード付与規則保持部と、上記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた上記付与規則に従って上記メモリ内の上記一群のデータ列についてエラー訂正を行うエラー訂正部とを具備する記憶制御装置またはその記憶制御方法である。これにより、一群のデータ列に対して予め定義されたエラー訂正コードの付与規則に従って、エラー訂正を実行させるという作用をもたらす。
【0008】
また、この第1の側面において、上記付与規則は、上記一群のデータ列の全体から上記エラー訂正コードが生成される場合と、上記一群のデータ列を構成する複数の部分データ列の各々から独立して上記エラー訂正コードが生成される場合の何れであるかを定義するようにしてもよい。これにより、一群のデータ列の全体または部分データ列のうち定義されたエラー訂正コードの付与規則に従って、エラー訂正を実行させるという作用をもたらす。
【0009】
また、この第1の側面において、上記エラー訂正部は、上記一群のデータ列を構成する複数の部分データ列の各々から独立して上記エラー訂正コードが生成される旨が上記アクセスアドレスに対応付けられた上記付与規則において定義されている場合、上記複数の部分データ列のうち上記アクセスに係る部分データ列のみについてエラー訂正を行うようにしてもよい。これにより、アクセスに係る部分データ列以外の部分データ列についてはエラー訂正を省略するという作用をもたらす。
【0010】
また、この第1の側面において、上記メモリに対してライトアクセスが発生した場合、上記ライトアクセスにおいて指示された上記付与規則に従って上記ライトアクセスに係るライトデータに対するエラー訂正コードを生成するエラー訂正コード生成部をさらに具備してもよい。これにより、ライトアクセスを契機として、ライトデータに対するエラー訂正コードを生成するという作用をもたらす。また、この場合において、上記エラー訂正コード生成部は、上記一群のデータ列を構成する複数の部分データ列の各々から独立して上記エラー訂正コードが生成される旨が上記ライトアドレスに対応付けられた上記付与規則において定義されている場合、上記複数の部分データ列のうち上記ライトアクセスに係る部分データ列のみについてエラー訂正コードを生成するようにしてもよい。これにより、ライトアクセスに係る部分データ列以外の部分データ列についてはエラー訂正コードの生成を省略するという作用をもたらす。
【0011】
また、この第1の側面において、上記エラー訂正コード付与規則保持部は、リクエストを発行するホストコンピュータからの指示に従って上記付与規則を保持するようにしてもよい。これにより、ホストコンピュータからの指示を契機として付与規則を保持するという作用をもたらす。
【0012】
また、この第1の側面において、上記エラー訂正コード付与規則保持部は、上記メモリに対してライトアクセスが発生した場合、上記ライトアクセスにおいて指示された上記付与規則を上記ライトアクセスに係るライトアドレスに対応付けて保持するようにしてもよい。これにより、ライトアクセスを契機として付与規則を保持するという作用をもたらす。
【0013】
また、この第1の側面において、上記メモリに対するアクセスアドレスが論理アドレスである場合に上記論理アドレスを物理アドレスに変換して上記メモリに出力するアドレス変換部をさらに具備し、上記エラー訂正コード付与規則保持部は、上記付与規則を上記一群のデータ列の上記論理アドレスごとに対応付けて保持し、上記エラー訂正部は、上記論理アドレスに対応付けられた上記付与規則に従って上記メモリ内の上記一群のデータ列についてエラー訂正を行うようにしてもよい。これにより、一群のデータ列の論理アドレスごとにエラー訂正コードの付与規則を定義するという作用をもたらす。
【0014】
また、この第1の側面において、上記メモリに対するアクセスアドレスが論理アドレスである場合に上記論理アドレスを物理アドレスに変換して上記メモリに出力するアドレス変換部をさらに具備し、上記エラー訂正コード付与規則保持部は、上記付与規則を上記一群のデータ列の上記物理アドレスごとに対応付けて保持し、上記エラー訂正部は、上記物理アドレスに対応付けられた上記付与規則に従って上記メモリ内の上記一群のデータ列についてエラー訂正を行うようにしてもよい。これにより、一群のデータ列の物理アドレスごとにエラー訂正コードの付与規則を定義するという作用をもたらす。
【0015】
また、本技術の第2の側面は、データ領域において一群のデータ列に対するエラー訂正コードを上記一群のデータ列とともに記憶するメモリと、上記一群のデータ列に対する上記エラー訂正コードの付与規則を上記一群のデータ列のアドレスごとに対応付けて保持するエラー訂正コード付与規則保持部と、上記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた上記付与規則に従って上記メモリ内の上記一群のデータ列についてエラー訂正を行うエラー訂正部とを具備する記憶装置である。これにより、メモリにおける一群のデータ列に対して予め定義されたエラー訂正コードの付与規則に従って、エラー訂正を実行させるという作用をもたらす。
【0016】
また、この第2の側面において、上記付与規則は、上記一群のデータ列の全体から上記エラー訂正コードが生成される場合と、上記一群のデータ列を構成する複数の部分データ列の各々から独立して上記エラー訂正コードが生成される場合の何れであるかを定義し、上記メモリは、上記一群のデータ列を構成する複数の部分データ列の各々から独立して上記エラー訂正コードが生成される旨を上記付与規則が定義する場合、上記複数の部分データ列の各々に連続する位置に上記エラー訂正コードを記憶するようにしてもよい。これにより、部分データ列とエラー訂正コードを連続する位置に記憶して、まとめて読み出すことを容易にするという作用をもたらす。
【0017】
なお、この第2の側面において、上記メモリは不揮発性メモリであることが想定される。
【0018】
また、本技術の第3の側面は、一群のデータ列に対してエラー訂正コードを記憶するメモリと、上記一群のデータ列に対する上記エラー訂正コードの付与規則を上記一群のデータ列のアドレスごとに対応付けて保持するエラー訂正コード付与規則保持部と、上記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた上記付与規則に従って上記メモリ内の上記一群のデータ列についてエラー訂正を行うエラー訂正部と、上記メモリに対して上記データ領域のリードまたはライトを要求するリクエストを発行するホストコンピュータとを具備する情報処理システムである。これにより、ホストコンピュータからのメモリアクセスリクエストを処理する際に、メモリにおける一群のデータ列に対して予め定義されたエラー訂正コードの付与規則に従って、エラー訂正を実行させるという作用をもたらす。
【発明の効果】
【0019】
本技術によれば、メモリ内の一群のデータ列に対するエラー訂正コードの付与規則を柔軟に設定することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【0020】
【図1】本技術の実施の形態における情報処理システムの一構成例を示す図である。
【図2】本技術の実施の形態におけるRAM260のメモリマップの概要例を示す図である。
【図3】本技術の実施の形態におけるメモリ300の一構成例を示す図である。
【図4】本技術の実施の形態のメモリ300におけるページ構造の一例を示す図である。
【図5】本技術の実施の形態における空きページテーブル261の一構成例を示す図である。
【図6】本技術の実施の形態におけるアドレス変換テーブル262の一構成例を示す図である。
【図7】本技術の第1の実施の形態におけるECCタイプテーブル264の一構成例を示す図である。
【図8】本技術の第1の実施の形態における記憶制御装置200の機能構成例を示す図である。
【図9】本技術の実施の形態におけるライトデータと論理ページの関係を説明するための図である。
【図10】本技術の実施の形態におけるライトデータと論理ページの関係を説明するための他の図である。
【図11】本技術の実施の形態における情報処理システムの読出し動作例を示す流れ図である。
【図12】本技術の実施の形態における情報処理システムの書込み動作例を示す流れ図である。
【図13】本技術の実施の形態における情報処理システムの論理ページの部分書換え処理の動作例を示す流れ図である。
【図14】本技術の第2の実施の形態における記憶制御装置200の機能構成例を示す図である。
【発明を実施するための形態】
【0021】
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(論理ページアドレス毎にECCタイプを設定する例)
2.第2の実施の形態(物理ページアドレス毎にECCタイプを設定する例)
3.変形例
【0022】
<1.第1の実施の形態>
[情報処理システムの構成]
図1は、本技術の実施の形態における情報処理システムの一構成例を示す図である。この情報処理システムは、ホストコンピュータ100と、記憶制御装置200と、メモリ300とを備えている。ホストコンピュータ100は、この情報処理システムにおける各処理を実行する装置である。メモリ300は、ホストコンピュータ100の処理に必要なデータを記憶するメモリである。このメモリ300としては、不揮発性メモリを想定する。このメモリ300は、データとともにエラー訂正コード(ECC)を記憶することにより、データ保持特性の改善を図る。記憶制御装置200は、ホストコンピュータ100とメモリ300の間に接続され、ホストコンピュータ100からのリクエストに応じてメモリ300の制御を行う装置である。なお、エラー訂正コードはエラー(誤り)検出の機能も包含しているため、誤り検出符号、エラー検出符号、エラー検出コードなどと呼称する場合もある。
【0023】
記憶制御装置200は、ホストインターフェース210と、メモリインターフェース230と、制御部240と、ROM250と、RAM260と、ECC処理部270とを備えている。これらはバス290を介して相互に接続されている。
【0024】
ホストインターフェース210は、ホストコンピュータ100との間のやりとりを行うインターフェース回路である。メモリインターフェース230は、メモリ300との間のやりとりを行うインターフェース回路である。
【0025】
制御部240は、記憶制御装置200における種々の処理を実行する処理装置である。ROM250は、制御部240において実行されるプログラムやその実行に必要なパラメータなどを記憶する読出し専用のメモリである。RAM260は、制御部240における処理に必要な作業領域を記憶するメモリである。
【0026】
ECC処理部270は、メモリ300に記憶されるエラー訂正コードに関する処理を行うものである。このECC処理部270は、後述するように、エラー訂正コードを生成する機能およびメモリ300から読み出されたデータとエラー訂正コードとからエラー訂正を行う機能を含む。
【0027】
メモリ300のアクセス空間は固定長の物理ページに区分けして管理される。メモリ300の物理ページの各々は論理ページにマッピングされる。ホストコンピュータ100からは、基本的には論理アドレスによりアクセスされる。以下では、論理ページのデータサイズを256バイトとし、物理ページには256バイトのデータおよび16バイトのエラー訂正コードが記憶されるものとする。ただし、これらのサイズは一例であり、本技術はこれに限定されるものではない。
【0028】
図2は、本技術の実施の形態におけるRAM260のメモリマップの概要例を示す図である。ここでは、RAM260には、空きページテーブル261と、アドレス変換テーブル262と、データバッファ263と、ECCタイプテーブル264と、論理ページイメージ領域266と、物理ページイメージ領域267とが記憶されている。なお、制御部240において実行されるプログラムならびにその実行の際に使用される領域等もRAM260の内部に確保される。
【0029】
空きページテーブル261は、メモリ300内の物理ページの使用状況を管理するテーブルである。この空きページテーブル261では、後述するように、物理ページアドレスごとに対応する物理ページの使用状況が保持される。
【0030】
アドレス変換テーブル262は、ホストコンピュータ100から供給された論理アドレスをメモリ300の物理アドレスに変換するためのテーブルである。このアドレス変換テーブル262では、後述するように、論理ページアドレスごとに対応する物理ページアドレスが保持される。なお、アドレス変換テーブル262は、特許請求の範囲に記載のアドレス変換部の一例である。
【0031】
データバッファ263は、ホストコンピュータ100からメモリ300に対するライトデータを保持するためのバッファである。この実施の形態では、少なくとも、ホストから指示されるライトコマンドを構成するライトデータの最大サイズと等しいデータを保持するものとする。
【0032】
ECCタイプテーブル264は、エラー訂正コードのタイプをページごとに管理するテーブルである。このECCタイプテーブル264では、後述するように、論理ページアドレスごとに対応するページのエラー訂正コードタイプ(ECCタイプ)が保持される。エラー訂正コードタイプについては後述する。なお、ECCタイプテーブル264は、特許請求の範囲に記載のエラー訂正コード付与規則保持部の一例である。
【0033】
論理ページイメージ領域266は、ホストコンピュータ100から把握される論理ページのイメージを保持するための領域である。物理ページイメージ領域267は、メモリ300側における物理ページのイメージを保持するための領域である。この実施の形態では、論理ページイメージ領域266は論理ページのサイズと同じ256バイトの領域であり、物理ページイメージ領域267は物理ページのサイズと同じ272バイトの領域である。
【0034】
空きページテーブル261、アドレス変換テーブル262、ECCタイプテーブル264の3種類のテーブルは、電源が断たれている間はメモリ300の予め決められた位置に記憶されている。記憶制御装置200は電源投入時の初期化処理において、予め決められた位置からこれら3種類のテーブルを読み出し、RAM260内に一時的に蓄積する。記憶制御装置200はホストコンピュータ100から電源断の予告を受けると、これら3種類のテーブルをメモリ300の予め決められた位置に書き込む。また、予期せぬ電源遮断による影響を最小限に抑えるため、一定時間経過または一定回数の処理などの節目ごとに、これら3種類のテーブルをメモリ300に書き込む処理を行う。
【0035】
図3は、本技術の実施の形態におけるメモリ300の一構成例を示す図である。このメモリ300は、制御インターフェース310と、アドレスデコーダ320と、メモリセル330と、ページバッファ340と、制御部380とを備えている。これらはバス390を介して相互に接続されている。
【0036】
制御インターフェース310は、記憶制御装置200との間のやりとりを行うインターフェース回路である。この制御インターフェース310は、記憶制御装置200から転送される情報やデータの入力、および、記憶制御装置200に転送する情報やデータの出力を行う。
【0037】
メモリセル330は記憶素子であり、ここでは不揮発性メモリを想定する。このメモリセル330は、1ビットのデータを記録する単メモリセルが二次元に配列された構造を有する。例えば、水平方向に物理ページの272バイト分の単メモリセルを並べたものを、垂直方向に物理ページアドレスに沿って並べることにより構成される。
【0038】
アドレスデコーダ320は、制御インターフェース310から入力された物理ページアドレスをデコードして、物理ページに対応する一本のワードラインをドライブする。アドレスデコーダ320とメモリセル330の間には全ての物理ページに対して一本ずつのワードラインが配線されている。メモリセル330においてドライブされたワードラインに対応する物理ページがアクティブとなる。
【0039】
ページバッファ340は、メモリセル330の物理ページと同一のサイズを持つバッファである。このページバッファ340は、メモリセル330においてアクティブとなった物理ページとのあいだでデータのやりとりを行う。
【0040】
制御部380は、メモリ300の全体を制御するものである。制御部380は、記憶制御装置200からの指示がライトの場合には、制御インターフェース310に転送された物理アドレスをアドレスデコーダ320に供給し、メモリセル330上の指定された物理ページをアクティブにする。さらに、制御部380は、制御インターフェース310に転送されたライトデータをページバッファ340に供給し、メモリセル330に対してライト指示を行う。これによりアクティブとなっている物理ページに対して書込みが行われる。
【0041】
制御部380は、記憶制御装置200からの指示がリードの場合には制御インターフェース310に転送された物理アドレスをアドレスデコーダ320に入力し、メモリセル330上の指定された物理ページをアクティブとする。さらに、制御部380は、メモリセル330に対してリード指示を行う。これによりアクティブとなっている物理ページが読み出されてページバッファ340に供給される。制御部380は、ページバッファ340に読み出されたデータを制御インターフェース310に供給して、制御インターフェース310を介して記憶制御装置200へ転送する。
【0042】
なお、以下の説明では、ホストコンピュータ100から指定される論理アドレス、および、記憶制御装置200内部で扱う論理ページアドレスを"0x"で始まる16進数の記述方法で記述し、物理ページアドレスを10進数で記述する。
【0043】
[ページ構造]
図4は、本技術の実施の形態のメモリ300におけるページ構造の一例を示す図である。同図(a)に示すように、この実施の形態ではメモリセル330に記憶される物理ページのサイズを272バイトとしている。そして、この物理ページに256バイトのデータと16バイトのエラー訂正コード(パリティ)を記憶する場合、エラー訂正コードの付与規則として以下の2つのタイプを想定する。
【0044】
タイプAでは、同図(b)に示すように、272バイトの物理ページを34バイトのサブページに分割し、それぞれを32バイトのデータと2バイトのパリティとして使用する。一方、タイプBでは、同図(c)に示すように、272バイトの物理ページを256バイトのデータと16バイトのパリティとして使用する。これら2つのタイプの何れをエラー訂正コードの付与規則として使用するかは、ECCタイプテーブル264において管理される。なお、1ページの256バイトのデータは、特許請求の範囲に記載の一群のデータ列の一例である。また、1ページを分割したサブページの32バイトのデータは、特許請求の範囲に記載の部分データ列の一例である。
【0045】
タイプAの構造は8つの独立したサブページを備えているため、ECC処理部270の能力によっては同時に8つのサブページを処理することでエラー訂正コード生成処理およびエラー訂正処理を高速化することができる。また、タイプBは長い語調であるため比較的計算量の多いLDPC符号などを使用することにより、タイプAに比較して計算時間は長くなるが、データ保持の信頼性をより高めることができる。
【0046】
同図(b)では、タイプAのページ構造の例として、32バイトのデータと2バイトのパリティが隣り合って記録されることを想定しているが、メモリセルの機能が許容する場合にはこれらを自由な形式により分割してもよい。例えば、2バイトのパリティを離れた領域にまとめて記録するようにしてもよい。
【0047】
このECCタイプの指定は、例えばライトコマンドにおいて行われる。その場合、ライトコマンド内の特定のフィールドによって指定するようにしてもよく、また、別のコマンドコードを使い分けるようにしてもよい。また、ECCタイプを設定するための独立したコマンドを新たに設けてもよい。例えば、重要なファイルを書き込む直前にECCタイプ設定コマンドを実行して、それに続いて通常のライトコマンドを実行することにより、ECCタイプ設定コマンドにより設定されたECCタイプにより書込みを行うことができる。
【0048】
[テーブル構成]
図5は、本技術の実施の形態における空きページテーブル261の一構成例を示す図である。この空きページテーブル261は、物理ページアドレスごとに対応する物理ページの使用状況を保持している。この空きページテーブル261のそれぞれのエントリ(行)は、「物理ページアドレス」と「使用状況」の二つの要素により構成されている。
【0049】
この空きページテーブル261では、各エントリ中の「物理ページアドレス」において示される物理ページの状況が「使用状況」に示される。ここで、「使用状況」は、メモリセル330における物理ページが使われていない(未使用)、使われている(使用中)、または、エラー等の理由により現在使われておらず今後も使われることが推奨されない(使用不能)の何れかの状態を示す。
【0050】
この空きページテーブル261は、各エントリを「物理ページアドレス」の数値の昇順に並べている。空きページテーブル261に登録されているエントリの数は、メモリ300内のメモリセル330が備える物理ページの数と等しい。
【0051】
なお、空きページテーブル261における「物理ページアドレス」の数値は0から始まり1ずつ増加する数値であり、エントリ番号から容易に計算することが可能である。したがって、エントリの項目から「物理ページアドレス」を削除して、エントリの構成要素を「使用状況」のみとすることも可能である。
【0052】
図6は、本技術の実施の形態におけるアドレス変換テーブル262の一構成例を示す図である。このアドレス変換テーブル262は、論理ページアドレスごとに対応する物理ページアドレスを保持している。すなわち、このアドレス変換テーブル262は、ホストコンピュータ100との間で使用される論理アドレスと、記憶制御装置200およびメモリ300において使用される物理アドレスとの対応関係を示している。
【0053】
この実施の形態における記憶制御装置200内部では、ホストコンピュータ100から指定される論理アドレスを論理ページアドレス単位で管理している。ここで、論理ページと物理ページは1対1の関係を有しており、1つの論理ページに1つの物理ページが割り当てられる。論理ページのサイズは256バイトであり、これは物理ページ内のデータの合計である256バイトと等しい。ホストコンピュータ100から指定される論理アドレスを論理ページサイズで除した商が論理ページアドレスとなり、除算の剰余が論理ページ内のオフセットアドレスとなる。
【0054】
アドレス変換テーブル262のそれぞれのエントリは「論理ページアドレス」と、「割当状況」と、「物理ページアドレス」の3つの要素によって構成されている。各エントリ中の「論理ページアドレス」で示される論理ページに、物理ページが割り当てられている("割当済")か、否("未割当")かが「割当状況」に示される。そして、「割当状況」が"割当済"の論理ページについては、対応する物理ページのアドレスが「物理ページアドレス」に示される。
【0055】
同図の例では、「論理ページアドレス」が"0x0000−0002"のエントリでは、「割当状況」が"未割当"となっているため、「物理ページアドレス」の値に意味がない。このため、このエントリに対する「物理ページアドレス」の値は"−"を示している。
【0056】
アドレス変換テーブル262は、各エントリを「論理ページアドレス」の数値の昇順に並べている。アドレス変換テーブル262に登録されているエントリの数は、記憶制御装置200がホストコンピュータ100に対して公開している論理アドレス空間の大きさ(バイト単位)を論理ページのサイズである256バイトで除した商に等しい。
【0057】
アドレス変換テーブル262に登録されているエントリの数は、メモリ300内のメモリセル330に備えられた物理ページの数より小さい。空きページテーブル261の説明で示したように、物理ページがエラー等の理由により使用不能とされることがあるなどの理由により、物理ページの数は論理ページの数に対して十分な余裕を確保してあるためである。
【0058】
なお、アドレス変換テーブル262における「論理ページアドレス」の数値は0から始まり1ずつ増加する数値であり、エントリ番号から容易に計算することが可能である。したがって、エントリの項目から「論理ページアドレス」を削除して、エントリの構成要素を「割当状況」と「物理ページアドレス」とすることも可能である。
【0059】
図7は、本技術の第1の実施の形態におけるECCタイプテーブル264の一構成例を示す図である。このECCタイプテーブル264は、論理ページアドレスごとに対応するページのエラー訂正コードタイプ(ECCタイプ)を保持している。
【0060】
ECCタイプテーブル264のそれぞれのエントリは、「論理ページアドレス」と、「ECCタイプ」との2つの要素によって構成されている。エントリ中の「論理ページアドレス」に対応する論理ページにおけるエラー訂正コードの付与規則がタイプAであるか、タイプBであるかを「ECCタイプ」によって示している。
【0061】
ECCタイプテーブル264は、各エントリを「論理ページアドレス」の数値の昇順に並べている。ECCタイプテーブル264に登録されているエントリの数は、記憶制御装置200がホストコンピュータ100に対して公開している論理アドレス空間の大きさ(バイト単位)を論理ページのサイズである256バイトで除した商に等しい。
【0062】
なお、ECCタイプテーブル264の「論理ページアドレス」の数値は0から始まり1ずつ増加する数値であり、エントリ(行)番号から容易に計算することが可能である。したがって、エントリの項目から「論理ページアドレス」を削除し、エントリの構成要素を「ECCタイプ」のみとすることも可能である。
【0063】
アドレス変換テーブル262の場合と同様に、ECCタイプテーブル264に登録されているエントリの数は、メモリ300内のメモリセル330に備えられた物理ページの数より小さい。
【0064】
[記憶制御装置の機能]
図8は、本技術の第1の実施の形態における記憶制御装置200の機能構成例を示す図である。ここでは、上述のアドレス変換テーブル262およびECCタイプテーブル264を示している。また、ECC処理部270の一部として、ECC生成部271とエラー訂正部272とを示している。
【0065】
ECC生成部271は、ライトの際に指定されたECCタイプに従ってエラー訂正コードを生成するものである。エラー訂正コードの付与対象となるデータが全てライトデータに含まれている場合には、ECC生成部271はライトコマンド(ライトリクエスト)のライトデータを用いてエラー訂正コードを生成する。一方、ライトデータ以外のデータとともにエラー訂正コードを生成する必要がある場合には、ECC生成部271はメモリ300からリードされたデータも用いてエラー訂正コードを生成する。このECC生成部271によって生成されたエラー訂正コードは、データとともにメモリ300に記憶される。その際のライトアドレスは、アドレス変換テーブル262から供給された物理アドレスである。また、ライトの際に指定されたECCタイプは、ECCタイプテーブル264において、ライトコマンドのライトアドレスである論理アドレスに対応するエントリに保持される。なお、ECC生成部271は、特許請求の範囲に記載のエラー訂正コード生成部の一例である。
【0066】
エラー訂正部272は、メモリ300から読み出されたデータおよびエラー訂正コードを用いてエラー訂正を行うものである。その際に用いられるエラー訂正コードの付与規則は、ECCタイプテーブル264から供給される。ECCタイプテーブル264は、リードコマンドのリードアドレスである論理アドレスに基づいてECCタイプを出力する。なお、メモリ300において使用されるリードアドレスは、アドレス変換テーブル262から供給された物理アドレスである。エラー訂正部272は、ECCタイプテーブル264から出力されたECCタイプに従ってエラー検出を行い、必要に応じてエラー訂正を行った上で、データを出力する。この出力されたデータは、リードデータとしてホストコンピュータ100に返送され、または、ライトデータとともに物理ページを構成するデータとしてECC生成部271に供給される。なお、エラー訂正部272は、特許請求の範囲に記載のエラー訂正部の一例である。
【0067】
[ライトデータと論理ページの関係]
図9は、本技術の実施の形態におけるライトデータと論理ページの関係を説明するための図である。この例では、ライトコマンドの開始論理アドレスが"0x0000−0000−00F0"であり、ライトサイズが512バイトである場合を示している。すなわち、このライトコマンドは、論理ページ"0x0000−0000"から"0x0000−0002"の3つの論理ページに跨って書込みを行う。
【0068】
ライトコマンドの処理の際には論理ページ単位で行われるため、図示するように3つの論理ページに分解(分割)する必要がある。論理ページ"0x0000−0000"では、ライト開始位置のページ内オフセットアドレスは"0xF0"であり、ページ内ライトサイズは16バイトである。論理ページ"0x0000−0001"では、ライト開始位置のページ内オフセットアドレスは先頭の"0x00"であり、ページ内ライトサイズは全体の256バイトである。論理ページ"0x0000−0002"では、ライト開始位置のページ内オフセットアドレスは先頭の"0x00"であり、ページ内ライトサイズは240バイトである。
【0069】
この例の論理ページ"0x0000−0000"のように、ページ内オフセットアドレスが"0x00"と異なる場合には、その論理ページの先頭には書換えが生じない。また、論理ページ"0x0000−0002"のように、ページ内オフセットアドレスが"0x00"であって、かつ、ページ内ライトサイズが256バイトに満たない場合には、その論理ページの末尾には書換えが生じない。
【0070】
図10は、本技術の実施の形態におけるライトデータと論理ページの関係を説明するための他の図である。この例では、ライトコマンドの開始論理アドレスが"0x0000−0000−0120"であり、ライトサイズが128バイトである場合を示している。すなわち、このライトコマンドは、論理ページのサイズよりも小さく、かつ、複数の論理ページに跨らず、論理ページ"0x0000−0001"の一部分のみに対して書込みを行う。
【0071】
この場合、論理ページ"0x0000−0001"において、ライト開始位置のページ内オフセットアドレスは"0x20"であり、ページ内ライトサイズは128バイトである。この例の論理ページ"0x0000−0001"のように、ページ内オフセットアドレスが0と異なり、かつ、ページ内ライトサイズが256バイトに満たない場合には、論理ページの途中に書換えが発生する。
【0072】
[情報処理システムの動作]
図11は、本技術の実施の形態における情報処理システムの読出し動作例を示す流れ図である。まず、ホストコンピュータ100から指示されたリードコマンド(リードリクエスト)はホストインターフェース210を介して記憶制御装置200に入力される。リードコマンドは「リードアドレス」および「リードデータサイズ」から構成されている。「リードアドレス」は、読出し対象データの論理アドレスである。
【0073】
制御部240は、リードコマンドを構成する「リードアドレス」と「リードデータサイズ」を、論理ページ単位に分割する(ステップS911)。具体的には、書込み動作において図9および図10を参照して説明した論理ページ単位の分割と同様である。これにより、論理ページごとに「ページ内オフセットアドレス」と「ページ内リードサイズ」が計算により得られる。
【0074】
そして、ステップS911において分割された論理ページ単位のうち、読出し処理が未処理のものが未だ残っているか否かが判定される(ステップS912)。論理ページ単位の読出し処理が残っていない場合には(ステップS912:No)、リードコマンドの処理終了をホストコンピュータ100に通知して読出し動作を終了する(ステップS922)。
【0075】
一方、論理ページ単位の読出し処理が残っている場合には(ステップS912:Yes)、残っている論理ページ単位の読出し処理の中から、一つを選択する(ステップS913)。ここでは、論理ページアドレスの若い順に選択することを想定する。そして、選択された論理ページ単位の読出し処理に対応する論理ページの情報を、アドレス変換テーブル262およびECCタイプテーブル264から取得する(ステップS914)。
【0076】
そして、処理を行うべき論理ページに物理ページが割り当てられているか否かを確認する(ステップS915)。すなわち、「割当状況」が"未割当"であった場合には、ステップS919に進み、"割当済"であった場合にはステップS916に進む。
【0077】
「割当状況」が"未割当"であった場合(ステップS915:No)、リード対象の論理ページに対する物理ページが割り当てられていない状況であるため、ホストコンピュータ100に通知すべきデータを準備する(ステップS919)。具体的には、論理ページイメージ領域266をゼロクリアする。ここで、ゼロクリアではなく、"0x00"、"0xFF"等の周期的なデータや予め定められた特定のデータを用いて初期化してもよい。また、この例ではステップS919を通るたびに初期化するということになっているが、電源投入時等に初期化を行う特別な領域をRAM260に用意しておいて、物理ページの割当てがなされていない論理ページへの読出しがあった場合に、特別な領域のデータを通知することも可能である。
【0078】
また、物理ページの割り当てられていない論理ページへの読出しに対して、メモリ300内の予め割り当てられた物理ページを読み出してホストコンピュータ100に転送することも可能である。予め割り当てられた物理ページに予め書込みを行うことで、メモリごとに異なるデータをホストコンピュータ100に転送することができる。
【0079】
「割当状況」が"割当済"であった場合(ステップS915:Yes)、その論理ページに対応するデータの読出しを行う(ステップS916)。このときの物理ページアドレスは、ステップS914においてアドレス変換テーブル262から読み出した「物理ページアドレス」である。このとき、記憶制御装置200はメモリ300に対して、読出しの指示および物理ページアドレスを通知する。メモリ300は指定された物理ページアドレスに対応する物理ページの内容を読み出して、記憶制御装置200に転送する。記憶制御装置200はメモリ300から転送された物理ページのデータを物理ページイメージ領域267に格納する。
【0080】
次に、ECC処理部270のエラー訂正部272が、エラー訂正を行う(ステップS917)。その際、エラー訂正部272には、ステップS914においてECCタイプテーブル264から取得したECCタイプと、物理ページイメージ領域267の先頭アドレスと、エラー訂正の指示とが与えられる。エラー訂正部272は、ECCタイプとしてタイプAが指定された場合、物理ページイメージ領域267の先頭アドレスから34バイトを読み出し、32バイトのユーザデータに2バイトのパリティが付加されているものと解釈しエラー訂正処理を行う。そして、その結果を物理ページイメージ領域267の同じ位置に書き戻す。これを8回繰り返してエラー訂正処理を完了する。一方、ECCタイプとしてタイプBが指定された場合、物理ページイメージ領域267の先頭アドレスから272バイトを読み出し、256バイトのユーザデータに16バイトのパリティが付加されているものと解釈してエラー訂正処理を行う。そして、その結果を物理ページイメージ領域267の同じ位置に書き戻す。
【0081】
次に、制御部240が、物理ページイメージ領域267からデータを抜き出して、論理ページイメージ領域266に転送する(ステップS918)。具体的には、ECCタイプとしてタイプAが指定された場合、物理ページイメージ領域267の先頭から32バイトを読み出して論理ページイメージ領域266に転送し、読み出しを2バイト分スキップする。これを8回繰り返してユーザデータの抜き出しを終了する。一方、ECCタイプとしてタイプBが指定された場合、物理ページイメージ領域267の先頭から256バイトを読み出して、論理ページイメージ領域266に転送する。
【0082】
これらによって論理ページイメージ領域266が準備されると(ステップS918またはS919)、論理ページイメージ領域266のデータはホストコンピュータ100に転送される(ステップS921)。すなわち、論理ページイメージ領域266の「ページ内オフセットアドレス」の位置から「ページ内リードサイズ」分の転送が行われる。ここで用いる「ページ内オフセットアドレス」と「ページ内リードサイズ」はステップS911において計算されたものである。その後、ステップS912からの処理を繰り返す。
【0083】
なお、この実施の形態では、データ抜き出し処理(ステップS918)およびホストコンピュータ100への転送処理(ステップS921)においてそれぞれデータコピーを行っているが、物理ページイメージ領域267から直接転送するようにしてもよい。
【0084】
図12は、本技術の実施の形態における情報処理システムの書込み動作例を示す流れ図である。まず、ホストコンピュータ100から指示されたライトコマンド(ライトリクエスト)は、ホストインターフェース210を介して記憶制御装置200に入力される。ライトコマンドは、「ライトアドレス」、「ECCタイプ」、「ライトデータサイズ」、および「ライトデータ」から構成される。このうち「ライトデータ」は、RAM260のデータバッファ263に一時的に格納される。また、「ライトアドレス」は、書込み対象データの論理アドレスである。
【0085】
制御部240は、ライトコマンドを構成する「ライトアドレス」と「ライトデータサイズ」を、上述のように論理ページ単位に分割する(ステップS931)。これにより、論理ページごとに「ページ内オフセットアドレス」および「ページ内ライトサイズ」が得られる。また、制御部240は、ホストコンピュータ100から与えられてデータバッファ263に一時格納されたライトデータを論理ページごとに分解したそれぞれの領域の先頭アドレスをすべて計算する。論理ページ単位の分割については図9および図10により説明したとおりである。以下のステップS932以降の処理は、ステップS931で分割された論理ページ単位に対して繰り返し行われる。
【0086】
ステップS931において分割された論理ページ単位のうち、書込み処理が未処理のものが未だ残っているか否かが判定される(ステップS932)。論理ページ単位の書込み処理が残っていない場合には(ステップS932:No)、ライトコマンドの処理終了をホストコンピュータ100に通知して書込み動作を終了する(ステップS955)。
【0087】
一方、論理ページ単位の書込み処理が残っている場合には(ステップS932:Yes)、残っている論理ページ単位の書込み処理の中から、一つを選択する(ステップS933)。ここでは、論理ページアドレスの若い順に選択することを想定する。そして、選択された論理ページ単位の読出し処理に対応する論理ページの情報を、アドレス変換テーブル262およびECCタイプテーブル264から取得する(ステップS934)。
【0088】
そして、処理を行うべき論理ページに物理ページが割り当てられているか否かを確認する(ステップS935)。すなわち、「割当状況」が"割当済"であった場合には、ステップS938に進み、"未割当"であった場合にはステップS936に進む。
【0089】
「割当状況」が"未割当"であった場合、空きページテーブル261に基づいて使用可能な物理ページを確保する(ステップS936)。具体的には「使用状況」が"未使用"であるエントリを検索して、その「使用状況」に"使用中"の値を代入する。なお、空きページテーブル261において使用可能な物理ページが存在しない場合には、その旨をホストコンピュータ100に通知する等の処理が行われるが、ここでは説明を省略する。
【0090】
物理ページが確保されると、アドレス変換テーブル262の対応するエントリにおいて、「割当状況」が"割当済"に変更されるとともに、確保された物理ページアドレスが「物理ページアドレス」に設定される(ステップS937)。さらに、内部変数の新規ページフラグに、処理中の論理ページは新規に割当てが行われた旨が記録される。
【0091】
次に、処理中の論理ページに対する書込みは論理ページの全体を書き換えるものであるか否かが判断される(ステップS938)。具体的には、処理中の論理ページに対する処理において、分割された論理ページ単位の「ライトデータサイズ」の値が"256"に等しい場合には、全体を書き換えるものと判断する(ステップS938:Yes)。一方、分割された論理ページ単位の「ライトデータサイズ」の値が"256"に等しくない場合には、部分を書き換えるものと判断する(ステップS938:No)。
【0092】
処理中の論理ページに対する書込みが論理ページの全体を書き換えるものである場合(ステップS938:Yes)、データバッファ263のデータが論理ページイメージ領域266に転送される(ステップS939)。具体的には、データバッファ263に一時格納されたライトデータを論理ページごとに分解したそれぞれの領域の先頭アドレスから、論理ページ分の256バイトが論理ページイメージ領域266に転送される。なお、それぞれの領域の先頭アドレスはステップS931において計算されたものである。
【0093】
処理中の論理ページに対する書込みが論理ページの全体を書き換えるものでない場合(ステップS938:No)、論理ページの部分書換えが行われる(ステップS940)。この論理ページの部分書換えの処理について、図13を参照して説明する。
【0094】
図13は、本技術の実施の形態における情報処理システムの論理ページの部分書換え処理の動作例を示す流れ図である。まず、ここでは、新規ページフラグの内容がチェックされる(ステップS941)。すなわち、ステップS937において新規に割当てが行われた旨が新規ページフラグに記録されている場合には(ステップS941:Yes)、論理ページイメージ領域266がクリアされる(ステップS942)。
【0095】
一方、新規に割当てが行われた旨が新規ページフラグに記録されていない場合には(ステップS941:No)、書込み対象の論理ページに対応するデータの読出しを行う(ステップS943)。このときの物理ページアドレスは、ステップS934においてアドレス変換テーブル262から読み出された情報を利用することができる。ここで読み出された物理ページの内容は物理ページイメージ領域267に反映され、物理ページイメージ領域267上でエラー訂正部272によるエラー訂正が行われる。そして、物理ページイメージ領域267の中からデータ部分が抜き出されて、論理ページイメージ領域266に転送される。
【0096】
その後、論理ページイメージ領域266において、部分書換えが行われる(ステップS944)。具体的には、論理ページイメージ領域266の「ページ内オフセットアドレス」の位置から「ページ内ライトサイズ」分の書き換えが行われる。ここで用いられる「ページ内オフセットアドレス」および「ページ内ライトサイズ」は、ステップS931において計算されたものである。
【0097】
図12に戻って、ここまでの処理によって準備された論理ページイメージ領域266に基づいて、物理ページイメージ領域267が形成される(ステップS951)。具体的にはECCタイプとしてタイプAが指定された場合、論理ページイメージ領域266の先頭から32バイトを読み出して物理ページイメージ領域267に転送し、書込み位置をパリティの2バイト分スキップする。これを8回繰り返してページ構造の形成を終了する。一方、ECCタイプとしてタイプBが指定された場合、論理ページイメージ領域266の先頭から256バイトを読み出して物理ページイメージ領域267に転送する。
【0098】
次に、ECC処理部270のECC生成部271が、エラー訂正コードの生成処理を行う(ステップS952)。その際、ECC生成部271には、ホストコンピュータ100からライトコマンドのパラメータとして取得したECCタイプと、物理ページイメージ領域267の先頭アドレスと、エラー訂正コード(パリティ)生成の指示とが与えられる。ECC生成部271は、ECCタイプとしてタイプAが指定された場合、物理ページイメージ領域267の先頭から32バイトを読み出し、2バイトのパリティを計算して、物理ページイメージ領域267に書き戻して34バイトのサブページを完成する。これを8回繰り返して物理ページイメージ領域267を完成する。一方、ECCタイプとしタイプBが指定された場合、物理ページイメージ領域267の先頭から256バイトを読み出し、16バイトのパリティを計算し、物理ページイメージ領域267に書き戻して、物理ページイメージ領域267を完成する。
【0099】
このようにして完成した物理ページイメージ領域267の内容は、メモリ300に書き込まれる(ステップS953)。その際、制御部240は、書込み指示および物理ページアドレスを、メモリインターフェース230を経由してメモリ300に出力する。ここで、物理ページアドレスは、ステップS943において読み出された物理ページまたはステップS936において新たに割り当てられた物理ページのアドレスである。メモリ300は、物理ページアドレスにおいて指定された物理ページに対して、受け取ったライトデータを書き込む。
【0100】
そして、制御部240は、ECCタイプテーブル264のライトアドレスに対応するエントリに、ホストコンピュータ100からライトコマンドのパラメータとして受け取ったECCタイプを書き込んで更新する(ステップS954)。
【0101】
なお、ステップS953およびステップS954におけるメモリ300への書込みとECCタイプテーブル264の更新は、順不同であり、どちらを先に処理しても、同時に処理しても構わない。両者の処理が完了すると、ステップS932に戻って処理を繰り返す。
【0102】
このように、本技術の第1の実施の形態によれば、ECCタイプテーブル264において論理ページごとにECCタイプを任意に定義することができる。このECCタイプの設定は、ホストコンピュータ100からのライトコマンドにおいて指定することができ、ライトデータに対する信頼性を自由に定義することができる。すなわち、予め定められた固定パターンやメモリチップの都合によらず、ホストコンピュータ100からの視点による判断をデータの記憶に対して適用することができる。
【0103】
<2.第2の実施の形態>
[記憶制御装置の機能]
図14は、本技術の第2の実施の形態における記憶制御装置200の機能構成例を示す図である。この第2の実施の形態は、ECCタイプテーブル264に供給されるアドレスが物理アドレスである点において異なっており、それ以外の点については第1の実施の形態と同様の機能構成を備えている。
【0104】
すなわち、第1の実施の形態においては図7に示したようにECCタイプテーブル264において論理ページアドレスごとにECCタイプを保持していたが、この第2の実施の形態では物理ページアドレスごとにECCタイプを保持する。そのため、ECCタイプテーブル264に供給されるアドレスも物理ページアドレスとなる。これにより、この第2の実施の形態では、ECCタイプテーブル264において物理ページごとにECCタイプを任意に定義することができる。
【0105】
<3.変形例>
[部分書換えの際のエラー訂正コード再計算の省略]
ECCタイプがタイプAのページに対する部分書換えの場合、書換えの影響を受けないサブページについては、本来、エラー訂正コードを再計算する必要がない。そこで、この変形例では、このような部分書換えにおいて、書換えの影響を受けないサブページについては、ステップS952においてエラー訂正コードの再計算を行わない。この場合、ステップS943において読み出され、エラー訂正処理が施された物理ページイメージ領域267に保存されているデータをそのまま利用することができる。ただし、新規割当てではない既存の論理ページの部分書換えであり、かつ、ECCタイプに変更がないことが条件である。
【0106】
具体的には、この変形例では、ステップS943において読み出された論理ページのECCタイプがタイプAである場合には、その旨の情報を既存ページ部分書換え可能フラグとして残しておく。そして、ステップS952においてエラー訂正コードの生成を行う際に、ライトコマンドのECCタイプがタイプAであり、かつ、既存ページ部分書換え可能フラグが有効である場合には、以下の処理を各サブページに対して行う。すなわち、エラー訂正コードの生成を行う前に、各サブページに対する書換えが発生しているか否かを判断し、ページ内書換え範囲に含まれないサブページについてはエラー訂正コード生成および物理ページイメージ領域267への出力をスキップする。ページ内書換え範囲に各サブページが含まれる場合には各サブページに対するエラー訂正コード生成および物理ページイメージ領域267への出力を行う。
【0107】
これにより、物理ページイメージ領域267には、部分書換え範囲に係るサブページのみに、エラー訂正コードの再計算および上書きを行ったデータが用意される。
【0108】
[部分読出しの際のエラー訂正の省略]
処理中の論理ページのECCタイプがいずれもタイプAである場合、読出し対象となるサブページのみをエラー訂正して、それ以外のサブページについてはエラー訂正を省略してもよい。具体的には、ステップS917においてエラー訂正処理を行う際に、ECCタイプとしてタイプAが指定されている場合、以下の処理を各サブページに対して行う。すなわち、各サブページのエラー訂正処理を行う前に、各サブページに対する転送が要求されているか否かを判断し、ページ内読出し範囲にそのサブページが含まれない場合にはそのサブページに対するエラー訂正処理をスキップする。一方、ページ内読出し範囲に各サブページが含まれる場合にはそのサブページに対するエラー訂正処理を行う。
【0109】
これにより物理ページイメージ領域267には、部分読出し範囲に係るサブページのみに、エラー訂正処理が施されたデータが用意される。
【0110】
[サブページ単位の転送]
処理中の論理ページのECCタイプがいずれもタイプAである場合、エラー訂正処理が終わったサブページから順次、ホストコンピュータ100に転送するようにしてもよい。すなわち、上述の実施の形態では、エラー訂正処理(ステップS917)、データ抜き出し(ステップS918)、ホストコンピュータ100への転送(ステップS921)を論理ページ単位で逐次に行っているが、これらをサブページ単位で行ってもよい。これにより処理の高速化を図ることができる。
【0111】
さらに、上述の部分読出しの際のエラー訂正処理の省略を組み合わせると、サブページ単位でホストコンピュータ100への転送が発生する場合にのみ、エラー訂正処理とデータ抜き出しとホストコンピュータ100への転送を行うということができる。
【0112】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【0113】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disk)、メモリカード、ブルーレイディスク(Blu-ray Disc(登録商標))等を用いることができる。
【0114】
なお、本技術は以下のような構成もとることができる。
(1)メモリ内の一群のデータ列に対するエラー訂正コードの付与規則を前記一群のデータ列のアドレスごとに対応付けて保持するエラー訂正コード付与規則保持部と、
前記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行うエラー訂正部と
を具備する記憶制御装置。
(2)前記付与規則は、前記一群のデータ列の全体から前記エラー訂正コードが生成される場合と、前記一群のデータ列を構成する複数の部分データ列の各々から独立して前記エラー訂正コードが生成される場合の何れであるかを定義する
前記(1)に記載の記憶制御装置。
(3)前記エラー訂正部は、前記一群のデータ列を構成する複数の部分データ列の各々から独立して前記エラー訂正コードが生成される旨が前記アクセスアドレスに対応付けられた前記付与規則において定義されている場合、前記複数の部分データ列のうち前記アクセスに係る部分データ列のみについてエラー訂正を行う
前記(1)または(2)に記載の記憶制御装置。
(4)前記メモリに対してライトアクセスが発生した場合、前記ライトアクセスにおいて指示された前記付与規則に従って前記ライトアクセスに係るライトデータに対するエラー訂正コードを生成するエラー訂正コード生成部をさらに具備する前記(1)から(3)のいずれかに記載の記憶制御装置。
(5)前記エラー訂正コード生成部は、前記一群のデータ列を構成する複数の部分データ列の各々から独立して前記エラー訂正コードが生成される旨が前記ライトアドレスに対応付けられた前記付与規則において定義されている場合、前記複数の部分データ列のうち前記ライトアクセスに係る部分データ列のみについてエラー訂正コードを生成する
前記(4)に記載の記憶制御装置。
(6)前記エラー訂正コード付与規則保持部は、リクエストを発行するホストコンピュータからの指示に従って前記付与規則を保持する前記(1)から(5)のいずれかに記載の記憶制御装置。
(7)前記エラー訂正コード付与規則保持部は、前記メモリに対してライトアクセスが発生した場合、前記ライトアクセスにおいて指示された前記付与規則を前記ライトアクセスに係るライトアドレスに対応付けて保持する前記(1)から(6)のいずれかに記載の記憶制御装置。
(8)前記メモリに対するアクセスアドレスが論理アドレスである場合に前記論理アドレスを物理アドレスに変換して前記メモリに出力するアドレス変換部をさらに具備し、
前記エラー訂正コード付与規則保持部は、前記付与規則を前記一群のデータ列の前記論理アドレスごとに対応付けて保持し、
前記エラー訂正部は、前記論理アドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行う
前記(1)から(7)のいずれかに記載の記憶制御装置。
(9)前記メモリに対するアクセスアドレスが論理アドレスである場合に前記論理アドレスを物理アドレスに変換して前記メモリに出力するアドレス変換部をさらに具備し、
前記エラー訂正コード付与規則保持部は、前記付与規則を前記一群のデータ列の前記物理アドレスごとに対応付けて保持し、
前記エラー訂正部は、前記物理アドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行う
前記(1)から(8)のいずれかに記載の記憶制御装置。
(10)データ領域において一群のデータ列に対するエラー訂正コードを前記一群のデータ列とともに記憶するメモリと、
前記一群のデータ列に対する前記エラー訂正コードの付与規則を前記一群のデータ列のアドレスごとに対応付けて保持するエラー訂正コード付与規則保持部と、
前記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行うエラー訂正部と
を具備する記憶装置。
(11)前記付与規則は、前記一群のデータ列の全体から前記エラー訂正コードが生成される場合と、前記一群のデータ列を構成する複数の部分データ列の各々から独立して前記エラー訂正コードが生成される場合の何れであるかを定義し、
前記メモリは、前記一群のデータ列を構成する複数の部分データ列の各々から独立して前記エラー訂正コードが生成される旨を前記付与規則が定義する場合、前記複数の部分データ列の各々に連続する位置に前記エラー訂正コードを記憶する
前記(10)に記載の記憶装置。
(12)前記メモリは不揮発性メモリである前記(10)または(11)に記載の記憶装置。
(13)一群のデータ列に対してエラー訂正コードを記憶するメモリと、
前記一群のデータ列に対する前記エラー訂正コードの付与規則を前記一群のデータ列のアドレスごとに対応付けて保持するエラー訂正コード付与規則保持部と、
前記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行うエラー訂正部と、
前記メモリに対して前記データ領域のリードまたはライトを要求するリクエストを発行するホストコンピュータと
を具備する情報処理システム。
(14)メモリ内の一群のデータ列に対するエラー訂正コードの付与規則を前記一群のデータ列のアドレスごとに対応付けて定義するエラー訂正コード付与規則定義手順と、
前記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行うエラー訂正手順と
を具備する記憶制御方法。
【符号の説明】
【0115】
100 ホストコンピュータ
200 記憶制御装置
210 ホストインターフェース
230 メモリインターフェース
240 制御部
261 空きページテーブル
262 アドレス変換テーブル
263 データバッファ
264 ECCタイプテーブル
266 論理ページイメージ領域
267 物理ページイメージ領域
270 ECC処理部
271 ECC生成部
272 エラー訂正部
290 バス
300 メモリ
310 制御インターフェース
320 アドレスデコーダ
330 メモリセル
340 ページバッファ
380 制御部
390 バス

【特許請求の範囲】
【請求項1】
メモリ内の一群のデータ列に対するエラー訂正コードの付与規則を前記一群のデータ列のアドレスごとに対応付けて保持するエラー訂正コード付与規則保持部と、
前記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行うエラー訂正部と
を具備する記憶制御装置。
【請求項2】
前記付与規則は、前記一群のデータ列の全体から前記エラー訂正コードが生成される場合と、前記一群のデータ列を構成する複数の部分データ列の各々から独立して前記エラー訂正コードが生成される場合の何れであるかを定義する
請求項1記載の記憶制御装置。
【請求項3】
前記エラー訂正部は、前記一群のデータ列を構成する複数の部分データ列の各々から独立して前記エラー訂正コードが生成される旨が前記アクセスアドレスに対応付けられた前記付与規則において定義されている場合、前記複数の部分データ列のうち前記アクセスに係る部分データ列のみについてエラー訂正を行う
請求項1記載の記憶制御装置。
【請求項4】
前記メモリに対してライトアクセスが発生した場合、前記ライトアクセスにおいて指示された前記付与規則に従って前記ライトアクセスに係るライトデータに対するエラー訂正コードを生成するエラー訂正コード生成部をさらに具備する請求項1記載の記憶制御装置。
【請求項5】
前記エラー訂正コード生成部は、前記一群のデータ列を構成する複数の部分データ列の各々から独立して前記エラー訂正コードが生成される旨が前記ライトアドレスに対応付けられた前記付与規則において定義されている場合、前記複数の部分データ列のうち前記ライトアクセスに係る部分データ列のみについてエラー訂正コードを生成する
請求項4記載の記憶制御装置。
【請求項6】
前記エラー訂正コード付与規則保持部は、リクエストを発行するホストコンピュータからの指示に従って前記付与規則を保持する請求項1記載の記憶制御装置。
【請求項7】
前記エラー訂正コード付与規則保持部は、前記メモリに対してライトアクセスが発生した場合、前記ライトアクセスにおいて指示された前記付与規則を前記ライトアクセスに係るライトアドレスに対応付けて保持する請求項1記載の記憶制御装置。
【請求項8】
前記メモリに対するアクセスアドレスが論理アドレスである場合に前記論理アドレスを物理アドレスに変換して前記メモリに出力するアドレス変換部をさらに具備し、
前記エラー訂正コード付与規則保持部は、前記付与規則を前記一群のデータ列の前記論理アドレスごとに対応付けて保持し、
前記エラー訂正部は、前記論理アドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行う
請求項1記載の記憶制御装置。
【請求項9】
前記メモリに対するアクセスアドレスが論理アドレスである場合に前記論理アドレスを物理アドレスに変換して前記メモリに出力するアドレス変換部をさらに具備し、
前記エラー訂正コード付与規則保持部は、前記付与規則を前記一群のデータ列の前記物理アドレスごとに対応付けて保持し、
前記エラー訂正部は、前記物理アドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行う
請求項1記載の記憶制御装置。
【請求項10】
データ領域において一群のデータ列に対するエラー訂正コードを前記一群のデータ列とともに記憶するメモリと、
前記一群のデータ列に対する前記エラー訂正コードの付与規則を前記一群のデータ列のアドレスごとに対応付けて保持するエラー訂正コード付与規則保持部と、
前記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行うエラー訂正部と
を具備する記憶装置。
【請求項11】
前記付与規則は、前記一群のデータ列の全体から前記エラー訂正コードが生成される場合と、前記一群のデータ列を構成する複数の部分データ列の各々から独立して前記エラー訂正コードが生成される場合の何れであるかを定義し、
前記メモリは、前記一群のデータ列を構成する複数の部分データ列の各々から独立して前記エラー訂正コードが生成される旨を前記付与規則が定義する場合、前記複数の部分データ列の各々に連続する位置に前記エラー訂正コードを記憶する
請求項10記載の記憶装置。
【請求項12】
前記メモリは不揮発性メモリである請求項10記載の記憶装置。
【請求項13】
一群のデータ列に対してエラー訂正コードを記憶するメモリと、
前記一群のデータ列に対する前記エラー訂正コードの付与規則を前記一群のデータ列のアドレスごとに対応付けて保持するエラー訂正コード付与規則保持部と、
前記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行うエラー訂正部と、
前記メモリに対して前記データ領域のリードまたはライトを要求するリクエストを発行するホストコンピュータと
を具備する情報処理システム。
【請求項14】
メモリ内の一群のデータ列に対するエラー訂正コードの付与規則を前記一群のデータ列のアドレスごとに対応付けて定義するエラー訂正コード付与規則定義手順と、
前記メモリに対してアクセスが発生した場合にそのアクセスアドレスに対応付けられた前記付与規則に従って前記メモリ内の前記一群のデータ列についてエラー訂正を行うエラー訂正手順と
を具備する記憶制御方法。

【図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


【公開番号】特開2013−101455(P2013−101455A)
【公開日】平成25年5月23日(2013.5.23)
【国際特許分類】
【出願番号】特願2011−244266(P2011−244266)
【出願日】平成23年11月8日(2011.11.8)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】