(57)【要約】【課題】情報処理システムの利便性を向上させる。【解決手段】情報処理システムのメモリコントローラにおいて、リクエスト生成部は、データを記憶するデータ領域とデータの誤り検出および誤り訂正を行うための冗長を記憶する冗長領域とを備える不揮発性メモリに対してデータと冗長とデータおよび冗長からなる符号語との何れかについて書込みまたは読出しを要求するリクエストを生成する。制御部は、生成されたリクエストを発行して不揮発性メモリに対する書込みおよび読出しを制御する。【選択図】図２
2016031626.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するデータ領域と前記データの誤り検出および誤り訂正を行うための冗長を記憶する冗長領域とを備える不揮発性メモリに対して前記データと前記冗長と前記データおよび前記冗長からなる符号語との何れかについて書込みまたは読出しを要求するリクエストを生成するリクエスト生成部と、
前記生成された前記リクエストを発行して前記不揮発性メモリに対する書込みおよび読出しを制御する制御部と
を具備するメモリコントローラ。
【請求項２】
前記データは、ページ単位のページデータであり、
前記冗長は、前記ページデータの誤り検出および誤り訂正を行うためのページ冗長であり、
前記符号語は、前記ページデータおよび前記ページ冗長からなるページ符号語であり、
前記リクエストは、前記ページデータと前記ページ冗長と前記ページ符号語との何れかについて書込みまたは読出しを要求するリクエストである
請求項１記載のメモリコントローラ。
【請求項３】
前記データは、複数の前記ページを含む拡張データと前記ページデータであり、
前記冗長は、前記拡張データの誤り検出および誤り訂正を行うための拡張冗長と前記ページ冗長であり、
前記符号語は、前記拡張データおよび前記拡張冗長からなる拡張符号語と前記ページ符号語であり、
前記リクエストは、前記ページデータと前記ページ冗長と前記ページ符号語と前記拡張データと前記拡張冗長と前記拡張符号語との何れかについて書込みまたは読出しを要求するリクエストである
請求項２記載のメモリコントローラ。
【請求項４】
前記データは、複数の前記ページ符号語を含む符号語ブロックと前記拡張データと前記ページデータであり、
前記冗長は、前記符号語ブロックの誤り検出および誤り訂正を行うための複合冗長と前記拡張冗長と前記ページ冗長であり、
前記符号語は、前記符号語ブロックおよび前記複合冗長からなる複合符号語と前記拡張符号語とページ符号語であり、
前記リクエストは、前記ページデータと前記ページ冗長と前記ページ符号語と前記拡張データと前記拡張冗長と前記拡張符号語と前記符号語ブロックと前記複合冗長と前記複合符号語との何れかについて書込みまたは読出しを要求するリクエストである
請求項３記載のメモリコントローラ。
【請求項５】
前記データは、前記符号語ブロックに含まれる複数の前記ページデータからなるデータブロックと前記符号語ブロックと前記拡張データと前記ページデータであり、
前記冗長は、前記符号語ブロックに含まれる複数の前記ページ冗長および前記複合冗長からなる冗長ブロックと前記複合冗長と前記拡張冗長と前記ページ冗長であり、
前記リクエストは、前記ページデータと前記ページ冗長と前記ページ符号語と前記拡張データと前記拡張冗長と前記拡張符号語と前記符号語ブロックと前記複合冗長と前記複合符号語と前記データブロックと前記冗長ブロックとの何れかについて書込みまたは読出しを要求するリクエストである
請求項４記載のメモリコントローラ。
【請求項６】
前記ページ冗長は、前記ページデータに関する管理情報と前記ページデータおよび前記管理情報の誤り検出および誤り訂正を行うためのパリティとにより構成され、
前記拡張冗長は、前記拡張データに関する拡張管理情報と前記拡張データおよび前記拡張管理情報の誤り検出および誤り訂正を行うための拡張パリティとにより構成される、
請求項５記載のメモリコントローラ。
【請求項７】
前記複合冗長は、前記符号語ブロックに含まれる複数の前記管理情報を含む管理情報ブロックの誤り検出および誤り訂正を行うための管理情報ブロックパリティと前記符号語ブロックの誤り検出および誤り訂正を行うための符号語ブロックパリティとにより構成される請求項６記載のメモリコントローラ。
【請求項８】
前記ページ冗長は、前記管理情報の誤り検出および誤り訂正を行うための管理情報パリティと前記管理情報と前記ページデータおよび前記管理情報および前記管理情報パリティの誤り検出および誤り訂正を行うための二重パリティとにより構成され、
前記拡張冗長は、前記拡張管理情報の誤り検出および誤り訂正を行うための拡張管理情報パリティと前記拡張管理情報と前記拡張データおよび前記拡張管理情報および前記拡張管理情報パリティの誤り検出および誤り訂正を行うための拡張二重パリティとにより構成される請求項６記載のメモリコントローラ。
【請求項９】
前記ページ冗長を生成する第１の符号化部と、
前記ページ符号語に含まれる前記ページ冗長により当該ページ符号語に含まれる前記ページデータの誤り検出と誤り訂正とを行う第１の復号部と、
前記拡張冗長を生成する第２の符号化部と、
前記拡張符号語に含まれる前記拡張冗長により当該拡張符号語に含まれる前記拡張データの誤り検出と誤り訂正とを行う第２の復号部と、
前記複合冗長を生成する第３の符号化部と、
前記複合符号語に含まれる前記複合冗長により当該複合符号語に含まれる前記符号語ブロックの誤り検出と誤り訂正とを行う第３の復号部と
をさらに具備し、
前記制御部は、前記読出しを要求するリクエストの出力により前記不揮発性メモリから入力された前記ページ符号語の前記第１の復号部への転送と前記読出しを要求するリクエストの出力により前記不揮発性メモリから入力された前記拡張符号語の前記第２の復号部への転送と前記読出しを要求するリクエストの出力により前記不揮発性メモリから入力された前記複合符号語の前記第３の復号部への転送とをさらに制御する
請求項５記載のメモリコントローラ。
【請求項１０】
データを記憶するデータ領域と前記データの誤り検出および誤り訂正を行うための冗長を記憶する冗長領域とを備える不揮発性メモリと、
前記不揮発性メモリを制御するメモリコントローラと
を具備し、
前記メモリコントローラは、
前記不揮発性メモリに対して前記データと前記冗長と前記データおよび前記冗長からなる符号語との何れかについて書込みまたは読出しを要求するリクエストを生成するリクエスト生成部と、
前記生成された前記リクエストを発行して前記不揮発性メモリに対する書込みおよび読出しを制御する制御部と
を備える
記憶装置。
【請求項１１】
前記不揮発性メモリは、ページアドレスによりアドレス付けられたページを記憶するバンクにより構成されて前記データ領域と前記冗長領域が異なる前記バンクに割り当てられて同一の前記符号語に属する前記データおよび前記冗長が同じページアドレスの前記バンクにそれぞれ記憶される請求項１０記載の記憶装置。
【請求項１２】
メモリコントローラに書込みまたは読出しを要求するコマンドを出力するホストコンピュータと、
データを記憶するデータ領域と前記データの誤り検出および誤り訂正を行うための冗長を記憶する冗長領域とを備える不揮発性メモリと、
前記コマンドに基づいて前記不揮発性メモリを制御するメモリコントローラと
を具備し、
前記メモリコントローラは、
前記コマンドに基づいて前記不揮発性メモリに対して前記データと前記冗長と前記データおよび前記冗長からなる符号語との何れかについて書込みまたは読出しを要求するリクエストを生成するリクエスト生成部と、
前記生成された前記リクエストを発行して前記不揮発性メモリに対する書込みおよび読出しを制御する制御部と
を備える
情報処理システム。
【請求項１３】
データを記憶するデータ領域と前記データの誤り検出および誤り訂正を行うための冗長を記憶する冗長領域とを備える不揮発性メモリに対して前記データと前記冗長と前記データおよび前記冗長からなる符号語との何れかについて書込みまたは読出しを要求するリクエストを生成するリクエスト生成手順と、
前記生成された前記リクエストを発行して前記不揮発性メモリに対する書込みおよび読出しを制御する制御手順と
を具備するメモリコントローラ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メモリコントローラおよび記憶装置に関する。詳しくは、データの誤り検出および誤り訂正を行うメモリコントローラ、記憶装置、情報処理システム、および、これらにおける制御方法に関する。
【背景技術】
【０００２】
従来、データの記憶信頼性を改善するため、データの誤り検出および訂正を行う誤り訂正符号（ＥＣＣ：Error detection and Correction Code）を用いる情報処理システムが使用されている。この情報処理システムは、ＥＣＣを生成してデータともに不揮発性メモリに記憶させるものである。データを再生する際には、ＥＣＣに基づいてデータの誤り検出および訂正が行われる。このＥＣＣを工夫してデータの長期保存性を高め、記憶信頼性を改善する試みがなされている。例えば、データの誤り検出および誤り訂正を行う標準ＥＣＣを生成するとともに、複数のデータを単位として誤り検出および誤り訂正を行う拡張ＥＣＣを生成する情報処理システムが提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−０８１７７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の従来技術では、データおよびＥＣＣは、不揮発性メモリのデータ領域およびＥＣＣ領域にそれぞれ記憶される。しかし、ホストシステムからこれらの領域に対して個別にアクセスすることはできず、利便性に欠ける問題があった。例えば、ＥＣＣ領域にＥＣＣとデータに関する管理情報とを同時に記憶させる場合には、管理情報のみをアクセスの対象とする場合が生じうる。このような場合、上述の従来技術では、対応することができなかった。
【０００５】
本技術はこのような状況に鑑みて生み出されたものであり、データ領域とＥＣＣ領域に対する個別の書込みおよび読出しを可能とし、情報システムの利便性を向上させることを目的とする。
【０００６】
なお、以降の説明では、次の用語を使用する。誤り訂正符号のビット系列をパリティと称する。管理情報とパリティとを合わせたビット系列を冗長と称する。但し、管理情報を含まずパリティのみの場合も冗長と称する。データと冗長とを合わせたビット系列を符号語と称する。データに当該データの冗長を付加して符号語を生成することを符号化と称する。符号語から元のデータを再生することを復号と称する。
【課題を解決するための手段】
【０００７】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、データを記憶するデータ領域と上記データの誤り検出および誤り訂正を行うための冗長を記憶する冗長領域とを備える不揮発性メモリに対して上記データと上記冗長と上記データおよび上記冗長からなる符号語との何れかについて書込みまたは読出しを要求するリクエストを生成するリクエスト生成部と、上記生成された上記リクエストを発行して上記不揮発性メモリに対する書込みおよび読出しを制御する制御部とを具備するメモリコントローラである。これにより、データ、冗長または符号語の何れかについて書込みまたは読出しを行うという作用をもたらす。
【０００８】
また、この第１の側面において、上記データは、ページ単位のページデータであり、上記冗長は、上記ページデータの誤り検出および誤り訂正を行うためのページ冗長であり、上記符号語は、上記ページデータおよび上記ページ冗長からなるページ符号語であり、上記リクエストは、上記ページデータと上記ページ冗長と上記ページ符号語との何れかについて書込みまたは読出しを要求するリクエストであってもよい。これにより、ページデータ、ページ冗長またはページ符号語の何れかについて書込みまたは読出しを行うという作用をもたらす。
【０００９】
また、この第１の側面において、上記データは、複数の上記ページを含む拡張データと上記ページデータであり、上記冗長は、上記拡張データの誤り検出および誤り訂正を行うための拡張冗長と上記ページ冗長であり、上記符号語は、上記拡張データおよび上記拡張冗長からなる拡張符号語と上記ページ符号語であり、上記リクエストは、上記ページデータと上記ページ冗長と上記ページ符号語と上記拡張データと上記拡張冗長と上記拡張符号語との何れかについて書込みまたは読出しを要求するリクエストであってもよい。これにより、ページデータ、ページ冗長、ページ符号語、拡張データ、拡張冗長または拡張符号語の何れかについて書込みまたは読出しを行うという作用をもたらす。
【００１０】
また、この第１の側面において、上記データは、複数の上記ページ符号語を含む符号語ブロックと上記拡張データと上記ページデータであり、上記冗長は、上記符号語ブロックの誤り検出および誤り訂正を行うための複合冗長と上記拡張冗長と上記ページ冗長であり、上記符号語は、上記符号語ブロックおよび上記複合冗長からなる複合符号語と上記拡張符号語とページ符号語であり、上記リクエストは、上記ページデータと上記ページ冗長と上記ページ符号語と上記拡張データと上記拡張冗長と上記拡張符号語と上記符号語ブロックと上記複合冗長と上記複合符号語との何れかについて書込みまたは読出しを要求するリクエストであってもよい。これにより、ページデータ、ページ冗長、ページ符号語、拡張データ、拡張冗長、拡張符号語、符号語ブロック、複合冗長または複合符号語の何れかについて書込みまたは読出しを行うという作用をもたらす。
【００１１】
また、この第１の側面において、上記データは、上記符号語ブロックに含まれる複数の上記ページデータからなるデータブロックと上記符号語ブロックと上記拡張データと上記ページデータであり、上記冗長は、上記符号語ブロックに含まれる複数の上記ページ冗長および上記複合冗長からなる冗長ブロックと上記複合冗長と上記拡張冗長と上記ページ冗長であり、上記リクエストは、上記ページデータと上記ページ冗長と上記ページ符号語と上記拡張データと上記拡張冗長と上記拡張符号語と上記符号語ブロックと上記複合冗長と上記複合符号語と上記データブロックと上記冗長ブロックとの何れかについて書込みまたは読出しを要求するリクエストであってもよい。これにより、ページデータ、ページ冗長、ページ符号語、拡張データ、拡張冗長、拡張符号語、符号語ブロック、複合冗長、複合符号語、データブロックまたは冗長ブロックの何れかについて書込みまたは読出しを行うという作用をもたらす。
【００１２】
また、この第１の側面において、上記ページ冗長は、上記ページデータに関する管理情報と上記ページデータおよび上記管理情報の誤り検出および誤り訂正を行うためのパリティとにより構成され、上記拡張冗長は、上記拡張データに関する拡張管理情報と上記拡張データおよび上記拡張管理情報の誤り検出および誤り訂正を行うための拡張パリティとにより構成されてもよい。これにより、ページ冗長は、管理情報とページデータおよび管理情報の誤り検出および誤り訂正を行うためのパリティとにより構成され、拡張冗長は、拡張管理情報と拡張データおよび拡張管理情報の誤り検出および誤り訂正を行うための拡張パリティとにより構成されるという作用をもたらす。
【００１３】
また、この第１の側面において、上記複合冗長は、上記符号語ブロックに含まれる複数の上記管理情報を含む管理情報ブロックの誤り検出および誤り訂正を行うための管理情報ブロックパリティと上記符号語ブロックの誤り検出および誤り訂正を行うための符号語ブロックパリティとにより構成されてもよい。これにより、複合冗長は、管理情報ブロックの誤り検出および誤り訂正を行うための管理情報ブロックパリティと符号語ブロックパリティとにより構成されるという作用をもたらす。
【００１４】
また、この第１の側面において、上記ページ冗長は、上記管理情報の誤り検出および誤り訂正を行うための管理情報パリティと上記管理情報と上記ページデータおよび上記管理情報および上記管理情報パリティの誤り検出および誤り訂正を行うための二重パリティとにより構成され、上記拡張冗長は、上記拡張管理情報の誤り検出および誤り訂正を行うための拡張管理情報パリティと上記拡張管理情報と上記拡張データおよび上記拡張管理情報および上記拡張管理情報パリティの誤り検出および誤り訂正を行うための拡張二重パリティとにより構成されてもよい。これにより、ページ冗長は、管理情報パリティと管理情報と二重パリティとにより構成され、拡張冗長は、拡張管理情報パリティと拡張二重パリティとにより構成されるという作用をもたらす。
【００１５】
また、この第１の側面において、上記ページ冗長を生成する第１の符号化部と、上記ページ符号語に含まれる上記ページ冗長により当該ページ符号語に含まれる上記ページデータの誤り検出と誤り訂正とを行う第１の復号部と、上記拡張冗長を生成する第２の符号化部と、上記拡張符号語に含まれる上記拡張冗長により当該拡張符号語に含まれる上記拡張データの誤り検出と誤り訂正とを行う第２の復号部と、上記複合冗長を生成する第３の符号化部と、上記複合符号語に含まれる上記複合冗長により当該複合符号語に含まれる上記符号語ブロックの誤り検出と誤り訂正とを行う第３の復号部とをさらに具備し、上記制御部は、上記読出しを要求するリクエストの出力により上記不揮発性メモリから入力された上記ページ符号語の上記第１の復号部への転送と上記読出しを要求するリクエストの出力により上記不揮発性メモリから入力された上記拡張符号語の上記第２の復号部への転送と上記読出しを要求するリクエストの出力により上記不揮発性メモリから入力された上記複合符号語の上記第３の復号部への転送とをさらに制御してもよい。これにより、第１の符号化部と第２の符号化部と第３の符号化部とにより冗長を生成し、第１の復号部と第２の復号部と第３の復号部とにより復号を行うという作用をもたらす。
【００１６】
また、本技術の第２の側面は、データを記憶するデータ領域と上記データの誤り検出および誤り訂正を行うための冗長を記憶する冗長領域とを備える不揮発性メモリと、上記不揮発性メモリを制御するメモリコントローラとを具備し、上記メモリコントローラは、上記不揮発性メモリに対して上記データと上記冗長と上記データおよび上記冗長からなる符号語との何れかについて書込みまたは読出しを要求するリクエストを生成するリクエスト生成部と、上記生成された上記リクエストを発行して上記不揮発性メモリに対する書込みおよび読出しを制御する制御部とを備える記憶装置である。これにより、データ、冗長または符号語の何れかについて書込みまたは読出しを行うという作用をもたらす。
【００１７】
また、この第２の側面において、上記不揮発性メモリは、ページアドレスによりアドレス付けられたページを記憶するバンクにより構成されて上記データ領域と上記冗長領域が異なる上記バンクに割り当てられて同一の上記符号語に属する上記データおよび上記冗長が同じページアドレスの上記バンクにそれぞれ記憶されてもよい。これにより同一の符号語に属するデータおよび冗長が同じページアドレスのバンクにそれぞれ記憶されるという作用をもたらす。
【００１８】
また、本技術の第３の側面は、メモリコントローラに書込みまたは読出しを要求するコマンドを出力するホストコンピュータと、データを記憶するデータ領域と上記データの誤り検出および誤り訂正を行うための冗長を記憶する冗長領域とを備える不揮発性メモリと、上記コマンドに基づいて上記不揮発性メモリを制御するメモリコントローラと
を具備し、上記メモリコントローラは、上記コマンドに基づいて上記不揮発性メモリに対して上記データと上記冗長と上記データおよび上記冗長からなる符号語との何れかについて書込みまたは読出しを要求するリクエストを生成するリクエスト生成部と、上記生成された上記リクエストを発行して上記不揮発性メモリに対する書込みおよび読出しを制御する制御部とを備える情報処理システムである。これにより、データ、冗長または符号語の何れかについて書込みまたは読出しを行うという作用をもたらす。
【００１９】
また、本技術の第４の側面は、データを記憶するデータ領域と上記データの誤り検出および誤り訂正を行うための冗長を記憶する冗長領域とを備える不揮発性メモリに対して上記データと上記冗長と上記データおよび上記冗長からなる符号語との何れかについて書込みまたは読出しを要求するリクエストを生成するリクエスト生成手順と、上記生成された上記リクエストを発行して上記不揮発性メモリに対する書込みおよび読出しを制御する制御手順とを具備するメモリコントローラ制御方法である。これにより、データ、冗長または符号語の何れかについて書込みまたは読出しを行うという作用をもたらす。
【発明の効果】
【００２０】
本技術によれば、ページ単位のデータと冗長とをメモリの異なる領域に記憶させ、これらデータ、冗長または符号語に対する同一のページアドレスによるアクセスを可能とし、情報システムの利便性を向上させるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００２１】
【図１】本技術の第１の実施の形態における情報処理システムの構成例を示す図である。
【図２】本技術の第１の実施の形態におけるメモリコントローラの構成例を示す図である。
【図３】本技術の第１の実施の形態におけるメモリの構成例を示す図である。
【図４】本技術の第１の実施の形態におけるメモリセルアレイの構成例を示す図である。
【図５】本技術の第１の実施の形態における符号語の構成例を示す図である。
【図６】本技術の第１の実施の形態における冗長の構成例を示す図である。
【図７】本技術の第１の実施の形態におけるリクエストの構成例を示す図である。
【図８】本技術の第１の実施の形態におけるリクエストの属性の例を示す図である。
【図９】本技術の第１の実施の形態におけるリクエスト（複合符号語の書込み）の処理を説明する図である。
【図１０】本技術の第１の実施の形態におけるリクエスト（符号語ブロックの書込み）の処理を説明する図である。
【図１１】本技術の第１の実施の形態におけるリクエスト（データブロックの書込み）の処理を説明する図である。
【図１２】本技術の第１の実施の形態におけるリクエスト（冗長ブロックの書込み）の処理を説明する図である。
【図１３】本技術の第１の実施の形態におけるリクエスト（複合冗長の書込み）の処理を説明する図である。
【図１４】本技術の第１の実施の形態におけるリクエスト（複合符号語の読出し）の処理を説明する図である。
【図１５】本技術の第１の実施の形態におけるリクエスト（符号語ブロックの読出し）の処理を説明する図である。
【図１６】本技術の第１の実施の形態におけるリクエスト（データブロックの読出し）の処理を説明する図である。
【図１７】本技術の第１の実施の形態におけるリクエスト（冗長ブロックの読出し）の処理を説明する図である。
【図１８】本技術の第１の実施の形態におけるリクエスト（複合冗長の読出し）の処理を説明する図である。
【図１９】本技術の第１の実施の形態における書込み処理の処理手順（メモリコントローラ）の一例を示す図である。
【図２０】本技術の第１の実施の形態における冗長生成処理の処理手順（メモリコントローラ）の一例を示す図である。
【図２１】本技術の第１の実施の形態におけるデータおよび冗長出力処理の処理手順（メモリコントローラ）の一例を示す図である。
【図２２】本技術の第１の実施の形態における書込み処理の処理手順（メモリ）の一例を示す図である。
【図２３】本技術の第１の実施の形態におけるデータおよび冗長転送処理の処理手順（メモリ）の一例を示す図である。
【図２４】本技術の第１の実施の形態における読出し処理の処理手順（メモリコントローラ）の一例を示す図である。
【図２５】本技術の第１の実施の形態におけるデータおよび冗長受信処理の処理手順（メモリコントローラ）の一例を示す図である。
【図２６】本技術の第１の実施の形態における復号処理の処理手順（メモリコントローラ）の一例を示す図である。
【図２７】本技術の第１の実施の形態における読出し処理の処理手順（メモリ）の一例を示す図である。
【図２８】本技術の第１の実施の形態におけるデータおよび冗長転送処理の処理手順（メモリ）の一例を示す図である。
【図２９】本技術の第２の実施の形態における冗長の構成例を示す図である。
【図３０】本技術の第２の実施の形態におけるメモリコントローラの構成例を示す図である。
【図３１】本技術の第２の実施の形態の変形例における冗長の構成例を示す図である。
【図３２】本技術の第３の実施の形態におけるメモリコントローラの構成例を示す図である。
【図３３】本技術の第３の実施の形態におけるデータと冗長の転送手順を示す図である。
【図３４】本技術の実施の形態の変形例における冗長の構成例を示す図である。
【発明を実施するための形態】
【００２２】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（冗長にパリティと管理情報とを含む場合の例）
２．第２の実施の形態（冗長にパリティと管理情報のパリティと管理情報とを含む場合の例）
３．第３の実施の形態（データバッファを省略する場合の例）
４．変形例
【００２３】
＜１．第１の実施の形態＞
［情報処理システムの構成例］
図１は、本技術の第１の実施の形態における情報処理システムの構成例を示す図である。同図における情報処理システムは、ホストコンピュータ１００とメモリコントローラ２００とメモリ３００とを備える。ホストコンピュータ１００は、メモリコントローラ２００を介してメモリ３００とデータの入出力を行うものである。このホストコンピュータ１００は、プロセッサ１１０とホストインターフェース１０９とを備える。プロセッサ１１０は、ホストコンピュータ１００の全体の動作を制御するものである。ホストインターフェース１０９は、メモリコントローラ２００とのやり取りを行うインターフェースである。ホストコンピュータ１００によるデータの入出力は、信号線１０１を介してメモリコントローラ２００に対してコマンドを発行することにより行う。データをメモリ３００に書き込む際には、書込みコマンドを発行するとともに、書込み対象のデータをメモリコントローラ２００に出力する。データをメモリ３００から読み出す際には、読出しコマンドをメモリコントローラ２００に対して発行する。その後、メモリ３００から読み出されたデータがメモリコントローラ２００からホストコンピュータ１００に転送され、読出しを終了する。
【００２４】
メモリコントローラ２００は、メモリ３００を制御するものである。このメモリコントローラ２００は、ホストインターフェース２０９と処理部２０７とメモリインターフェース２０８とを備える。ホストインターフェース２０９は、ホストコンピュータ１００とのやり取りを行うものである。処理部２０７は、ホストコンピュータ１００から出力されたコマンドに基づいて処理を行うものである。具体的には、データの符号化および復号の処理を行い、また、データの書込みまたは読出しを要求するリクエストを作成し、メモリ３００に対して発行する。なお、このリクエストは、信号線２０１を介して出力される。メモリインターフェース２０８は、メモリ３００とのやり取りを行うものである。
【００２５】
メモリ３００は、データを記憶するものである。このメモリ３００は、メモリインターフェース３０９とメモリデバイス制御部３０７とメモリセルアレイ３０８とを備える。メモリインターフェース３０９は、メモリコントローラ２００とのやり取りを行うものである。メモリデバイス制御部３０７は、メモリコントローラ２００から発行されたリクエストに基づいてメモリ３００の制御を行うものである。具体的な制御の内容については、後述する。メモリセルアレイ３０８はデータを記憶するものであり、複数のメモリセルを備える。このメモリセルとして、不揮発性メモリ、例えば、ＲｅＲＡＭ（resistance random access memory）を使用することができる。なお、データの書込みおよび読出しはページ単位で行う。このページは、例えば、２５６バイトの大きさである。なお、メモリ３００は、特許請求の範囲に記載の不揮発性メモリの一例である。
【００２６】
［メモリコントローラの構成］
図２は、本技術の第１の実施の形態におけるメモリコントローラの構成例を示す図である。同図におけるホストインターフェース２０９は、ホストコンピュータ１００から発行されたコマンドを処理部２０７内の制御部２１９に転送する。一方、ホストコンピュータ１００との間でやり取りするデータについては、処理部２０７内のワークメモリ２１０との間で双方向の転送を行う。図２におけるメモリインターフェース２０８は、処理部２０７内のメモリインターフェース制御部２２０が出力したリクエストをメモリ３００に転送し、メモリ３００が出力したステータスを処理部２０７内の制御部２１９に転送する。一方、メモリ３００との間でやり取りするデータについては、処理部２０７内のメモリインターフェース制御部２２０との間で双方向の転送を行う。ここで、ステータスは、メモリ３００における書込みの成功または失敗を表す情報である。また、このステータスにはメモリ３００が処理中であることを示す情報も含んでもよい。
【００２７】
図２における処理部２０７は、ワークメモリ２１０と第１符号化部２１１と第１復号部２１２と第２符号化部２１３と第２復号部２１４と第３符号化部２１５と第３復号部２１６とを備える。また、処理部２０７は、データバッファ２１７とリクエスト生成部２１８と制御部２１９とメモリインターフェース制御部２２０と管理情報保持部２２１とを備える。ワークメモリ２１０は、データを保持するものである。このデータには、ホストコンピュータ１００、メモリ３００、第１復号部２１２、第２復号部２１４および第３復号部２１６が出力したデータ等が含まれる。また、ホストコンピュータ１００が出力したデータを第１符号化部２１１、第２符号化部２１３、第３符号化部２１５またはデータバッファ２１７に振り分ける機能も有する。このワークメモリ２１０として、例えば、ＳＲＡＭまたはＤＲＡＭを使用することができる。
【００２８】
第１符号化部２１１は、ページ単位のデータであるページデータの冗長（以下、ページ冗長と称する。）を生成するものである。第２符号化部２１３は、複数のページを含む拡張データの冗長（以下、拡張冗長と称する。）を生成するものである。第３符号化部２１５は、複数のページ符号語を含む符号語ブロックの冗長（以下、複合冗長と称する。）を生成するものである。ここで、ページ符号語とはページデータに対応する符号を表すものであり、ページデータとページ冗長とにより構成される。第１復号部２１２は、ページ符号語に含まれるページ冗長により当該ページ符号語に含まれるページデータの誤り検出と誤り訂正とを行うものである。第２復号部２１４は、拡張符号語に含まれる拡張冗長により当該拡張符号語に含まれる拡張データの誤り検出と誤り訂正とを行うものである。ここで、拡張符号語とは、拡張データに対応する符号語を表すものであり、拡張データと拡張冗長とにより構成される。第３復号部２１６は、複合符号語に含まれる複合冗長により当該複合符号語に含まれる符号語ブロックの誤り検出と誤り訂正とを行うものである。ここで、複合符号語とは、符号語ブロックに対応する符号語を表すものであり、符号語ブロックと複合冗長とにより構成される。これらの詳細については後述する。
【００２９】
データバッファ２１７は、メモリ３００に転送するデータを一時的に保持するものである。このデータバッファとして、例えば、ＳＲＡＭまたはＤＲＡＭを使用することができる。リクエスト生成部２１８は、リクエストを生成するものである。リクエストの詳細については後述する。
【００３０】
メモリインターフェース制御部２２０は、データおよびリクエストの転送を制御する。具体的には、メモリ３００にリクエストおよびデータを転送する際、リクエスト生成部２１８が生成したリクエストとデータバッファ２１７が出力したデータとをメモリ３００に転送する。さらに、第１符号化部２１１、第２符号化部２１３または第３符号化部２１５が生成した冗長を選択してメモリ３００に転送する。逆に、メモリ３００が出力したデータ、冗長およびステータスを転送する際には、第１復号部２１２、第２復号部２１４または第３復号部２１６を選択してデータおよび冗長を転送し、また、ステータスを制御部２１９に転送する。
【００３１】
制御部２１９は、ホストコンピュータ１００が発行したコマンドを解釈してメモリコントローラ２００の各部の制御を行う。具体的には、上述したワークメモリ２１０およびメモリインターフェース制御部２２０における転送の制御、リクエスト生成部２１８におけるリクエスト生成の制御、管理情報保持部２２１の制御を行う。この制御部２１９には、プロセッサを備えた制御回路を使用することができる。管理情報保持部２２１は、管理情報を保持するものである。この管理情報保持部２２１として、例えば、ＳＲＡＭまたはＤＲＡＭを使用することができる。ここで、管理情報とは、データ以外の情報、例えば、ホストコンピュータ１００が指定した論理アドレスとメモリ３００における物理アドレスとの対応関係を示すアドレス変換情報である。
【００３２】
なお、第１符号化部２１１は、特許請求の範囲に記載の第１の符号化部の一例である。第１復号部２１２は、特許請求の範囲に記載の第１の復号部の一例である。第２符号化部２１３は、特許請求の範囲に記載の第２の符号化部の一例である。第２復号部２１４は、特許請求の範囲に記載の第２の復号部の一例である。第３符号化部２１５は、特許請求の範囲に記載の第３の符号化部の一例である。第３復号部２１６は、特許請求の範囲に記載の第３の復号部の一例である。
【００３３】
［メモリの構成］
図３は、本技術の第１の実施の形態におけるメモリの構成例を示す図である。同図におけるメモリインターフェース３０９は、メモリコントローラ２００から発行されたリクエストをメモリデバイス制御部３０７内のメモリ制御部３１１に転送する。また、メモリ制御部３１１が出力したステータスをメモリコントローラ２００に転送する。データおよび冗長については、メモリデバイス制御部３０７内のメモリインターフェース制御部３１０との間で双方向の転送を行う。
【００３４】
図３におけるメモリデバイス制御部３０７は、メモリインターフェース制御部３１０とメモリ制御部３１１とＲＯＭ３１２とを備える。メモリインターフェース制御部３１０は、メモリセルアレイ３０８内の複数のバンクを選択し、当該バンクとの間でデータおよび冗長の転送を双方向に行うものである。メモリ制御部３１１は、メモリコントローラ２００が発行したリクエストを解釈してメモリインターフェース制御部３１０とメモリセルアレイ３０８とを制御するものである。このメモリ制御部３１１は、メモリインターフェース制御部およびメモリセルアレイ３０８に対して制御信号を出力することより、これらを制御する。また、メモリセルアレイ３０８から出力されたステータスによりデータ等の書込みの成功または失敗を判断し、その結果をステータスとしてメモリコントローラ２００に出力する。この判断は次のように行う。メモリセルアレイ内の各バンクは書込みの結果をステータスとしてメモリ制御部３１１に出力する。このステータスが全て成功を表すステータスであった場合には、メモリ制御部３１１は成功と判断する。一方、バンクが出力したステータスに１つでも失敗を表すステータスが存在した場合には、メモリ制御部３１１は失敗と判断する。
【００３５】
ＲＯＭ３１２は、メモリコントローラ２００が出力したリクエストとデータ等の書込みまたは読出し対象となるメモリセルアレイ３０８内のバンクとの対応関係を示すバンク番号変換情報を保持するものである。このＲＯＭ３１２にはＰＲＯＭを使用することができる。
【００３６】
図３におけるメモリセルアレイ３０８は、複数のバンクにより構成され、各バンクはページ単位でアクセス可能なメモリセルを複数備えている。また、各バンクは、独立してデータの書込みまたは読出しを行うことができる。各バンクは、双方向にデータまたは冗長の転送を行うデータ線とステータスを出力するステータス線と制御信号を入力する制御信号線とを備える。この制御信号には、データ転送、書込みまたは読出しを指示する指令とページアドレスが含まれる。図３におけるメモリセルアレイ３０８は、５個バンクにより構成される例を表したものである。
【００３７】
［メモリセルアレイの構成］
図４は、本技術の第１の実施の形態におけるメモリセルアレイの構成例を示す図である。同図におけるメモリセルアレイ３０８は、データ領域と冗長領域とを備えている。データ領域にはバンク＃１乃至＃４が割り当てられ、冗長領域にはバンク＃５が割り当てられている。また、各バンクはｐページのメモリセルを備えている。冗長領域に割り当てられたバンク＃５のメモリセルは、さらに５個のサブページにより構成されており、後述する冗長の種類に応じた所定のサブページに冗長が記憶される。なお、バンク＃５における制御信号は上述した指令とページアドレスに加えてサブページ番号が含まれる。
【００３８】
［符号語の種類と構成］
図５は、本技術の第１の実施の形態における符号語の構成例を示す図である。本技術の第１の実施の形態においてはページ冗長と拡張冗長と復号冗長の３種類の冗長を使用する。図５におけるａは、ページ冗長の場合の符号語、データおよび冗長の関係を表している。ページ符号語においてはページ単位のデータ（ページデータ）について冗長（ページ冗長）を生成する。ページ冗長にはページデータのパリティが含まれる。このパリティには、例えば、ハミング符号を使って生成されたパリティを使用することができる。ページ符号語を図４において説明したメモリセルアレイに記憶させる際には、ページデータをデータ領域に割り当てられたバンクのメモリセルに記憶させ、ページ冗長を冗長領域に割り当てられたバンクにおける同一ページアドレスのサブページに記憶させる。例えば、ページデータをバンク＃１のページ＃１のメモリセルに記憶させ、ページ冗長をバンク＃５のページ＃１かつサブページ＃１のメモリセルに記憶させる。
【００３９】
図５におけるｂは、拡張符号語の場合の符号語、データおよび冗長の関係を表している。同図におけるデータは２ページの大きさである。つまり、拡張符号語においては２ページのサイズのデータ（拡張データ）について冗長（拡張冗長）を生成する。また、拡張冗長に含まれるパリティには、ページ冗長と同じ方式により生成されたパリティを使用する。拡張符号語は、データおよび冗長のサイズがページ符号語の２倍の大きさになる。そのため、拡張符号語をメモリセルアレイに記憶させる際には、拡張データをデータ領域の２個のバンクのメモリセルに記憶させ、ページ冗長を冗長領域のバンクにおける２個のサブページに記憶させる。例えば、ページデータをバンク＃１のページ＃１とバンク＃２のページ＃１のメモリセルに記憶させ、ページ冗長をバンク＃５のページ＃１のサブページ＃１およびサブページ＃２のメモリセルに記憶させる。
【００４０】
図５におけるｃは、複合符号語の場合の符号語、データおよび冗長の関係を表している。同図におけるデータは４個のページ符号語（符号語ブロック）により構成される。つまり、複合符号語においては、符号語ブロックについて冗長（複合冗長）を生成する。なお、符号語ブロックに含まれる４個のページデータをデータブロックと称し、符号語ブロックに含まれる４個のページ冗長と複合冗長とを合わせて冗長ブロックと称する。これらは後述するリクエストにおいて、それぞれデータ２および冗長２として扱われる。複合冗長に含まれるパリティは、ページ冗長と同じ方式かまたは異なる方式、例えば、ＬＤＰＣ（Low Density Parity Check）符号を使って生成されたパリティを使用することができる。複合符号語をメモリセルアレイに記憶させる際には、データブロックをデータ領域のバンクに記憶させ、冗長ブロックを冗長領域のバンクに記憶させる。例えば、データブロックをバンク＃１乃至＃４のページ＃１のメモリセルに記憶させる。冗長ブロックに含まれる４個のページ冗長をバンク＃５のページ＃１のサブページ＃１乃至＃４に記憶させ、複合冗長をバンク＃５のページ＃１のサブページ＃５に記憶させる。
【００４１】
このように、拡張データをページデータの２倍のサイズとし、複合冗長のデータブロックを拡張データの２倍のサイズとする。このデータブロックに含まれるページデータ数とメモリセルアレイ３０８におけるデータ領域に含まれるバンク数とを同じ値とする。同様に、複合冗長の冗長ブロックに含まれる冗長数とメモリセルアレイ３０８における冗長領域のバンク＃５のサブページ数とを同じ値としている。これにより、１つのページアドレスによりアクセス可能なメモリセルに対し、４個のページ符号語または２個の拡張符号語または１個の複合符号を記憶させることができる。なお、冗長領域のバンク＃５におけるサブページ＃１乃至＃４は、ページ冗長と同じサイズとし、サブページ＃５は複合冗長と同じサイズとする。このように、ページのサイズをデータ長の倍数または約数とし、サブページのサイズを冗長の長さと同じかまたは約数とすることにより、データ等を記録する際のメモリセル使用効率を向上させることができる。
【００４２】
但し、上述したページ符号語、拡張符号語および複合符号語の関係および図４において説明したメモリセルアレイの構成はこれに限定されるものではない。例えば、図４における冗長領域のバンク＃５に含まれるサブページは全て同じサイズとし、複合冗長を記憶させる場合には拡張冗長の場合と同様に複数のサブページに記憶させても良い。この場合、図４におけるサブページ＃５の代わりにサブページ＃１乃至＃４と同じサイズのサブページ＃５乃至＃８を配置し、ここに複合冗長を記憶させることとなる。
【００４３】
［冗長の構成］
図６は、本技術の第１の実施の形態における冗長の構成例を示す図である。同図は、ページ冗長と拡張冗長と冗長ブロックのそれぞれの場合における冗長の構成を表したものである。本技術の第１の実施の形態においては、ページ冗長は、ページデータに関する管理情報とページデータおよび管理情報の誤り検出および誤り訂正を行うためのパリティとにより構成される。拡張冗長は、拡張データに関する管理情報である拡張管理情報と拡張データおよび拡張管理情報の誤り検出および誤り訂正を行うための拡張パリティとにより構成される。一方、冗長ブロックの複合冗長は、符号語ブロックのパリティである符号語ブロックパリティのみにより構成されている。
【００４４】
［符号化部および復号部の動作］
図２において説明した第１符号化部２１１は、入力されたページデータおよび当該ページデータに関する管理情報からパリティを生成するとともに、管理情報を加えてページ冗長として出力する。また、第１復号部２１２は、入力されたページ符号語を復号してページデータを出力するとともに、ページ符号語から管理情報を取り出して出力する。第２符号化部２１３は、入力された２ページ分のデータ（拡張データ）および当該拡張データに関する管理情報（拡張管理情報）から拡張パリティを生成するとともに、拡張管理情報を加えて拡張冗長として出力する。また、第２復号部２１４は、入力された拡張符号語を復号して拡張データを出力するとともに、拡張符号語から拡張管理情報を取り出して出力する。第３符号化部２１５は、入力された４個の符号語（符号語ブロック）からパリティ（符号語ブロックパリティ）を生成し、これを複合冗長として出力する。また、第３復号部２１６は、入力された複合符号語を復号して４個の符号語（符号語ブロック）を出力する。
【００４５】
［管理情報］
前述したように、本技術の第１の実施の形態においては、アドレス変換情報を管理情報とすることができる。この管理情報は、メモリ３００の所定の領域に保存されており、起動時にメモリコントローラ２００によりメモリ３００から読み出され、管理情報保持部２２１に転送される。しかし、電源異常等の事故により、この管理情報が破壊される場合がある。このような場合、管理情報の再生が必要となる。本技術の第１の実施の形態においては、データのパリティとこのデータに関連する管理情報の一部とを含む冗長を生成し、メモリセルアレイ３０８の冗長領域に保存する。そして、管理情報の再生を行う際には、冗長領域に保存されている管理情報を読み出して元の管理情報を再生する。これらの制御は制御部２１９が行う。
【００４６】
［リクエストの構成］
図７は、本技術の第１の実施の形態におけるリクエストの構成例を示す図である。同図は、図２において説明したリクエスト生成部２１８が生成するリクエストの構成を表したものである。リクエスト生成部２１８は、ホストコンピュータ１００が出力したコマンドに基づいて、上述した各種の符号語、データおよび冗長についてメモリ３００に対して書込みまたは読出しを要求するリクエストを生成する。図７に表したように、このリクエストは５個のフィールドからなり、それぞれオペレーションコード、符号種別、属性、識別番号およびページアドレスを示す識別子が配置される。オペレーションコードは、リクエストの種類を表すものである。図７には、書込みおよび読出しを表すオペレーションコードを記載した。符号種別は、符号の種類を表すものである。本技術の第１の実施の形態では、ページ符号、拡張符号および複合符号の中から指定する。属性については後述する。識別番号は、書込みまたは読出しの対象となるバンクまたはサブページの番号を表すものである。同様に、ページアドレスは、書込みまたは読出しの対象となるページアドレスを表すものである。
【００４７】
［属性識別子の構成］
図８は、本技術の第１の実施の形態におけるリクエストの属性の例を示す図である。この属性は、リクエストにおけるオペランドの種類を表すものである。同図に表した属性である符号語、データ、冗長、データ２および冗長２は図５に表した符号語等と１対１に対応する。この属性および上述した符号種別により書込みまたは読出しの対象となるデータ等を特定することができる。
【００４８】
［リクエストによる書込みおよび読出し処理］
このようなリクエストが生成され、メモリコントローラ２００からメモリ３００に対して発行される。図３において説明したメモリ制御部３１１は、このリクエストを解釈し、メモリインターフェース制御部３１０およびメモリセルアレイ３０８を制御する。リクエストの種類が「Write」、符号種別が「ページ符号」、属性が「符号語」、識別番号が「１」である場合を例に挙げて、メモリ制御部３１１の制御動作を説明する。まず、メモリ制御部３１１は、メモリインターフェース制御部３１０に対し、メモリコントローラ２００が出力したページ符号語のうちページデータをバンク＃１に転送するようにメモリインターフェース制御部３１０を制御する。また、同バンクの制御信号としてデータ転送を指示する指令とリクエストのページアドレスにより指定されたページアドレスを出力する。その後、書込みを指示する指令を同バンクに出力する。次に、メモリ制御部３１１は、メモリインターフェース制御部３１０に対し、メモリコントローラ２００が出力したページ符号語のうちページ冗長を冗長バンクであるバンク＃５のサブページ＃１に転送するように制御する。データ転送指令および書込み指令も同様に出力される。
【００４９】
このように、符号語は、同じページアドレスのデータ領域および冗長領域に書き込まれる。また、同じ識別番号が割り振られたデータ領域のバンクおよび冗長領域のバンクに含まれるサブページは、対として扱われ、それぞれ同一の符号語に属するデータおよび冗長が記憶される。符号種別が「拡張符号」の場合も同様に、同じ識別番号が割り振られたデータ領域のバンクと冗長領域のバンク＃５に含まれるサブページとは、対として扱われ、リクエストにより指定された識別番号によりサブページ番号が一意に決まる。例えば、符号種別が「拡張符号」、属性が「符号語」、識別番号が「１」のとき、拡張データはバンク＃１と＃２に書き込まれ、拡張冗長はバンク＃５のサブページ＃１と＃２に書き込まれる。これらは、ＲＯＭ３１２に保存されたバンク番号変換情報に基づいて行われる。
【００５０】
次に、複合冗長が指定された場合を例に挙げて、メモリコントローラ２００とメモリ３００におけるリクエストの処理について、図９乃至１８を用いて説明する。
【００５１】
図９は、本技術の第１の実施の形態におけるリクエスト（複合符号語の書込み）の処理を説明する図である。同図は、メモリコントローラ２００のリクエスト出力、データ出力およびステータス入力とメモリセルアレイ３０８の各バンクにおける指令入力、データ入力およびステータス出力との関係を表したものである。
【００５２】
まず、メモリコントローラ２００における処理について説明する。なお、ホストコンピュータ１００が出力した４個のページ符号語（符号語ブロック）がワークメモリ２１０に保存されているものとする。制御部２１９は、ワークメモリ２１０を制御し、符号語ブロックを第３符号化部２１５とデータバッファ２１７とに転送する。第３符号化部２１５は、複合冗長を生成する。また、制御部２１９は、リクエスト生成部２１８に書込みリクエストを生成させる。この間、データバッファ２１７は、符号語ブロックを保持する。その後、生成されたリクエストおよび複合冗長とデータバッファ２１７に保持されていた符号語ブロックとは、メモリインターフェース制御部２２０に集められ、メモリインターフェース２０８を介してメモリ３００に出力される。制御部２１９は、この制御も行う。これにより、メモリコントローラ２００からリクエストが発行され、続いて書込みデータである４ページ分のデータ（データブロック）と冗長ブロックが順に出力される。
【００５３】
次に、メモリ３００における処理について説明する。メモリコントローラ２００から発行されたリクエストは、メモリ制御部３１１に転送される。メモリ制御部３１１は、このリクエストに基づいて、メモリインターフェース制御部３１０を制御し、メモリコントローラ２００から出力されたデータブロックと冗長ブロックをメモリセルアレイ３０８の所定のバンクに転送させる。つまり、データブロックの最初のデータはバンク＃１に転送される。その後、２番目のデータはバンク＃２に、３番目のデータはバンク＃３に、最後のデータはバンク＃４にそれぞれ転送される。また、冗長ブロックはバンク＃５に転送される。この転送の際データ転送指令がメモリ制御部３１１から各バンクに出力され、続いて書込み指令が出力される。書込み処理が終了すると、各バンクはステータスを出力する。メモリ制御部３１１は、これらのステータスを取り込み、書込みの結果を判定してステータスを生成しメモリコントローラ２００に出力する。
【００５４】
図１０は、本技術の第１の実施の形態におけるリクエスト（符号語ブロックの書込み）の処理を説明する図である。メモリコントローラ２００からデータブロックと４個のページ冗長が順に出力され、メモリセルアレイ３０８の各バンクに転送される。図９に関して説明した処理とは、第３符号化部２１５における複合冗長の生成がない点とバンク＃５における複合冗長の書込みがない点が異なっている。
【００５５】
図１１は、本技術の第１の実施の形態におけるリクエスト（データブロックの書込み）の処理を説明する図である。メモリコントローラ２００からデータブロックが出力され、メモリセルアレイ３０８のバンク＃１乃至＃４に転送される。図９に関して説明した処理とは、第３符号化部２１５における複合冗長の生成がない点、データバッファ２１７にはデータブロックのみを入力する点およびバンク＃５における冗長の書込みがない点が異なっている。
【００５６】
図１２は、本技術の第１の実施の形態におけるリクエスト（冗長ブロックの書込み）の処理を説明する図である。メモリコントローラ２００から冗長ブロックが出力され、メモリセルアレイ３０８のバンク＃５に転送される。図９に関して説明した処理とは、データバッファ２１７にはページ冗長のみを入力する点とバンク＃１乃至＃４におけるデータの書込みがない点が異なっている。
【００５７】
図１３は、本技術の第１の実施の形態におけるリクエスト（複合冗長の書込み）の処理を説明する図である。メモリコントローラ２００から複合冗長が出力され、メモリセルアレイ３０８のバンク＃５に転送される。図９に関して説明した処理とは、データバッファ２１７に関する入出力がない点、バンク＃１乃至＃４におけるデータの書込みがない点およびバンク＃５におけるページ冗長部分の書込みがない点が異なっている。
【００５８】
図１４は、本技術の第１の実施の形態におけるリクエスト（複合符号語の読出し）の処理を説明する図である。まず、メモリ３００における処理について説明する。図９に関して説明した書込み処理と同様に、メモリコントローラ２００よりリクエストが発行されると、メモリ制御部３１１は、これを解釈し、各バンクに読出しを指示する指令を出力する。この際、データ転送のタイミングを合わせるため、指令を出力するタイミングをずらしている。メモリセルにおける読出し時間経過後、バンク＃０乃至＃５から順にデータおよび冗長が出力される。これらにより複合符号語が構成され、メモリコントローラ２００に転送される。なお、読出しの際には、ステータスは出力しない。
【００５９】
次に、メモリコントローラ２００における処理を説明する。メモリ３００が出力した複合符号語がメモリインターフェース２０８を介してメモリインターフェース制御部２２０に転送される。その後、この符号語が第３復号部２１６に転送され、復号される。これにより得られた符号語ブロックがワークメモリ２１０に出力される。最後に、ワークメモリ２１０の符号語ブロックがホストコンピュータに転送され、処理を終了する。これらは制御部２１９により制御される。
【００６０】
図１５は、本技術の第１の実施の形態におけるリクエスト（符号語ブロックの読出し）の処理を説明する図である。メモリコントローラ２００よりリクエストが発行されると、メモリ制御部３１１は、各バンクに読出しを指示する指令を出力する。その後、各バンクから出力されたデータおよび冗長により符号語ブロックを構成し、メモリコントローラ２００に転送する。図１４に関して説明した処理とは、複合冗長の読出しがない点、第３復号部２１６に関する入出力がない点および符号語ブロックがメモリインターフェース制御部２２０からワークメモリ２１０に転送される点が異なっている。
【００６１】
図１６は、本技術の第１の実施の形態におけるリクエスト（データブロックの読出し）の処理を説明する図である。メモリコントローラ２００よりリクエストが発行されると、メモリ制御部３１１は、バンク＃１乃至＃４に読出しを指示する指令を出力する。その後、バンクから出力されたデータによりデータブロックを構成し、メモリコントローラ２００に転送する。図１４に関して説明した処理とは、冗長の読出しがない点、第３復号部２１６に関する入出力がない点およびデータブロックがメモリインターフェース制御部２２０からワークメモリ２１０に転送される点が異なっている。
【００６２】
図１７は、本技術の第１の実施の形態におけるリクエスト（冗長ブロックの読出し）の処理を説明する図である。メモリコントローラ２００よりリクエストが発行されると、メモリ制御部３１１は、バンク＃５に読出しを指示する指令を出力する。その後、バンク＃５から出力された冗長ブロックをメモリコントローラ２００に転送する。図１４に関して説明した処理とは、データ部分の読出しがない点、第３復号部２１６に関する入出力がない点および冗長ブロックがメモリインターフェース制御部２２０からワークメモリ２１０に転送される点が異なっている。
【００６３】
図１８は、本技術の第１の実施の形態におけるリクエスト（複合冗長の読出し）の処理を説明する図である。メモリコントローラ２００よりリクエストが発行されると、メモリ制御部３１１は、バンク＃５に読出しを指示する指令を出力する。その後、バンク＃５から出力された複合冗長をメモリコントローラ２００に転送する。図１４に関して説明した処理とは、データおよびページ冗長部分の読出しがない点、第３復号部２１６に関する入出力がない点および複合冗長がメモリインターフェース制御部２２０からワークメモリ２１０に転送される点が異なっている。
【００６４】
以上説明したように、メモリコントローラ２００は、リクエストを生成してメモリ３００に発行する。その後、メモリコントローラ２００とメモリ３００との間でデータおよび冗長のやり取りを行うことにより、書込みおよび読出しの処理が行われる。これを踏まえ、図１に関して説明した情報処理システムにおける書込みおよび読出し処理について図１９乃至２９を参照して説明する。なお、説明はメモリコントローラ２００における処理とメモリ３００における処理とに分けて行う。
【００６５】
［書込み処理の処理手順（メモリコントローラ側の処理）］
図１９は、本技術の第１の実施の形態における書込み処理の処理手順（メモリコントローラ）の一例を示す図である。ホストコンピュータ１００より書込みのコマンドを受け取ると、メモリコントローラ２００は、書込み処理を開始する。まず、管理情報のアドレス変換情報に基づいて、コマンドに含まれる論理アドレスを物理アドレスに変換する（ステップＳ９０１）。なお、本技術の第１の実施の形態において、この物理アドレスにはページアドレスおよびバンク番号が該当する。コマンドの書込み対象がページ符号語、拡張符号語、複合符号語、ページ冗長、拡張冗長、複合冗長または冗長ブロックである場合には、冗長を生成する必要があるため（ステップＳ９０２：Ｙｅｓ）、冗長を生成する（ステップＳ９１０）。一方、コマンドの書込み対象がページデータ、拡張データ、符号語ブロックまたはデータブロックである場合には、冗長を生成する必要がないため（ステップＳ９０２：Ｎｏ）、冗長を生成せず、次の処理に進む。
【００６６】
次に、メモリコントローラ２００は、書込みのリクエストを生成する（ステップＳ９０３）。これは、図２に関して説明したリクエスト生成部２１８により行われる。その後、生成したリクエストをメモリ３００に発行する（ステップＳ９０４）。続いて、リクエストに応じたデータおよび冗長をメモリ３００に出力する（ステップＳ９２０）。これにより、メモリ３００において書込み処理が行われる。メモリコントローラ２００は、メモリ３００からステータスが出力されるのを待つ（ステップＳ９０５）。ステータスが出力されると（ステップＳ９０５：Ｙｅｓ）、このステータスにより書込み失敗の有無を判断する（ステップＳ９０６）。その結果、書込み成功の場合は（ステップＳ９０６：Ｎｏ）、書込み処理を終了する。一方、書込み失敗の場合は（ステップＳ９０６：Ｙｅｓ）、エラー処理を行い（ステップＳ９０７）、書込み処理を終了する。ここで、エラー処理として、例えば、ホストコンピュータ１００に異常終了を通知する処理を行うことができる。
【００６７】
［冗長生成処理の処理手順（メモリコントローラ側の処理）］
図２０は、本技術の第１の実施の形態における冗長生成処理の処理手順（メモリコントローラ）の一例を示す図である。メモリコントローラ２００は、コマンドの書込み対象に基づいて、必要な冗長を判断し、生成する。書込み対象がページ符号語またはページ冗長である場合（ステップＳ９１１：Ｙｅｓ）、メモリコントローラ２００はページ冗長を生成する（ステップＳ９１２）。書込み対象が拡張符号語または拡張冗長である場合（ステップＳ９１１：ＮｏかつステップＳ９１３：Ｙｅｓ）、メモリコントローラ２００は拡張冗長を生成する（ステップＳ９１４）。書込み対象が複合符号語、複合冗長または冗長ブロックである場合（ステップＳ９１１：ＮｏかつステップＳ９１３：Ｎｏ）、メモリコントローラ２００は複合冗長を生成する（ステップＳ９１５）。これら冗長の生成は、図２に関して説明した第１符号化部２１１、第２符号化部２１３および第３符号化部２１５により行われる。なお、本技術の第１の実施の形態においては、ページ冗長はパリティと管理情報とにより構成される。メモリコントローラ２００は、ページデータとこれに関する管理情報とからページ冗長を生成することとなる（ステップＳ９１２）。これは、拡張冗長生成（ステップＳ９１４）についても同様である。
【００６８】
［データ、冗長出力処理の処理手順（メモリコントローラ側の処理）］
図２１は、本技術の第１の実施の形態におけるデータおよび冗長出力処理の処理手順（メモリコントローラ）の一例を示す図である。メモリコントローラ２００は、コマンドの書込み対象に基づいて、データまたは冗長をメモリ３００に対して出力する。まず、コマンドの書込み対象がページ符号語、拡張符号語、複合符号語、ページデータ、拡張データ、符号語ブロックまたはデータブロックである場合には、データを出力する必要があるため（ステップＳ９２１：Ｙｅｓ）、データ出力を行う（ステップＳ９２２）。ここでは、コマンドの書込み対象に基づいて、ページデータ、拡張データまたはデータブロックを選択して出力する。
【００６９】
一方、コマンドの書込み対象がページ冗長、拡張冗長、複合冗長または冗長ブロックである場合には（ステップＳ９２１：Ｎｏ）、データの出力を行わず、次の処理に進む。次に、コマンドの書込み対象がページ符号語、拡張符号語、複合符号語、ページ冗長、拡張冗長、符号語ブロック、複合冗長または冗長ブロックである場合には、冗長を出力する必要があるため（ステップＳ９２３：Ｙｅｓ）、冗長出力を行う（ステップＳ９２４）。ここでは、コマンドの書込み対象に基づいて、ページ冗長、拡張冗長、冗長ブロック、符号語ブロックの冗長部分または複合冗長を選択して出力する。その後、データおよび冗長出力処理を終了する。一方、コマンドの書込み対象がページデータ、拡張データまたはデータブロックである場合には（ステップＳ９２３：Ｎｏ）、冗長の出力を行わず、データおよび冗長出力処理を終了する。
【００７０】
［書込み処理の処理手順（メモリ側の処理）］
図２２は、本技術の第１の実施の形態における書込み処理の処理手順（メモリ）の一例を示す図である。メモリ３００は、メモリコントローラ２００から書込みを要求するリクエストが発行されると、本処理を開始する。まず、リクエストを解釈し、書込みを行うメモリセルのページアドレス、バンク番号およびサブページ番号を取得する（ステップＳ９５１）。次に、これらに対応するメモリセルにデータ、冗長を転送する（ステップＳ９６０）。その後、当該メモリセルからステータスが出力されるのを待つ（ステップＳ９５２）。全てのメモリセルからステータスが出力された場合（ステップＳ９５２：Ｙｅｓ）、メモリ３００はこれらのステータスに書込み失敗を表すステータスが含まれているか否かを調べる（ステップＳ９５３）。書込み失敗を表すステータスが含まれていない場合は（ステップＳ９５３：Ｎｏ）、メモリコントローラ２００に対して書き込み成功を表すステータスを出力し（ステップＳ９５４）、書込み処理を終了する。一方、書込み失敗を表すステータスが含まれている場合は（ステップＳ９５３：Ｙｅｓ）、メモリコントローラ２００に対して書き込み失敗を表すステータスを出力し（ステップＳ９５５）、書込み処理を終了する。
【００７１】
［データ、冗長転送処理の処理手順（メモリ側の処理）］
図２３は、本技術の第１の実施の形態におけるデータおよび冗長転送処理の処理手順（メモリ）の一例を示す図である。メモリ３００は、リクエストの書込み対象に転送すべきデータが存在するか否かを判断する（ステップＳ９６１）。書込み対象がページ符号語、拡張符号語、複合符号語、ページデータ、拡張データ、符号語ブロックまたはデータブロックである場合には（ステップＳ９６１：Ｙｅｓ）、指定バンクにデータを転送する（ステップＳ９６２）。この際、当該バンクの制御信号に、ページアドレスとデータ転送指令を出力する。データ転送後、書込み指令を出力する（ステップＳ９６３）。全データの転送が終了した場合（ステップＳ９６４：Ｙｅｓ）、次の処理に進む。全データの転送が終了していない場合は（ステップＳ９６４：Ｎｏ）、再度ステップＳ９６２からの処理を行う。一方、リクエストの書込み対象が、ページ冗長、拡張冗長、複合冗長または冗長ブロックである場合には（ステップＳ９６１：Ｎｏ）、データ転送を行わず、次の処理に進む。
【００７２】
次に、リクエストの書込み対象が、ページ符号語、拡張符号語、複合符号語、符号語ブロック複合冗長または冗長ブロックである場合には、冗長を転送する必要があるため（ステップＳ９６５：Ｙｅｓ）、冗長バンクに冗長を転送する（ステップＳ９６６）。この際、冗長バンクの制御信号には、ページアドレス、サブページ番号およびデータ転送指令が出力される。冗長転送後、書込み指令が出力される（ステップＳ９６７）。その後、データおよび冗長転送処理を終了する。一方、リクエストの書込み対象が、ページデータ、拡張データまたはデータブロックである場合には（ステップＳ９６５：Ｎｏ）、冗長転送を行わず、データおよび冗長転送処理を終了する。
【００７３】
［読出し処理の処理手順（メモリコントローラ側の処理）］
図２４は、本技術の第１の実施の形態における読出し処理の処理手順（メモリコントローラ）の一例を示す図である。メモリコントローラ２００は、ホストコンピュータ１００から読出しのコマンドを受信すると、読出し処理を開始する。メモリコントローラ２００は、論理アドレスを物理アドレスに変換するアドレス変換（ステップＳ８０１）を行う。次に、読出しのリクエストを生成し（ステップＳ８０３）、このリクエストを発行する（ステップＳ８０４）。その後、メモリ３００が出力するデータおよび冗長の受信を行う（ステップＳ８２０）。リクエストの読出し対象が、ページ符号語、拡張符号語または複合符号語の場合は、復号を行う必要が有るため（ステップＳ８０５：Ｙｅｓ）、復号を行い（ステップＳ８３０）、読出し処理を終了する。リクエストの読出し対象が、ページ符号語、拡張符号語または複合符号語でない場合は（ステップＳ８０５：Ｎｏ）、復号を行わず、読出し処理を終了する。
【００７４】
［データ、冗長受信処理の処理手順（メモリコントローラ側の処理）］
図２５は、本技術の第１の実施の形態におけるデータおよび冗長受信処理の処理手順（メモリコントローラ）の一例を示す図である。メモリコントローラ２００は、コマンドの読出し対象に基づいて、データまたは冗長をメモリ３００から受信する。まず、コマンドの読出し対象がページ符号語、拡張符号語、複合符号語、ページデータ、拡張データ、符号語ブロックまたはデータブロックである場合には、データを受信する必要があるため（ステップＳ８２１：Ｙｅｓ）、データ受信を行う（ステップＳ８２２）。ここでは、コマンドの読出し対象に基づいて、ページデータ、拡張データまたはデータブロックの受信を行う。一方、コマンドの読出し対象がページ冗長、拡張冗長、複合冗長または冗長ブロックである場合には（ステップＳ８２１：Ｎｏ）、データの受信を行わず、次の処理に進む。次に、コマンドの読出し対象がページ符号語、拡張符号語、複合符号語、ページ冗長、拡張冗長、符号語ブロック、複合冗長または冗長ブロックである場合には、冗長を受信する必要があるため（ステップＳ８２３：Ｙｅｓ）、冗長の受信を行う（ステップＳ８２４）。ここでは、コマンドの読出し対象に基づいて、ページ冗長、拡張冗長、冗長ブロック、符号語ブロックの冗長部分または複合冗長の受信を行う。その後、データおよび冗長受信処理を終了する。一方、コマンドの読出し対象がページデータ、拡張データまたはデータブロックである場合には（ステップＳ８２３：Ｎｏ）、冗長の受信を行わず、データおよび冗長受信処理を終了する。
【００７５】
［復号処理の処理手順（メモリコントローラ側の処理）］
図２６は、本技術の第１の実施の形態における復号処理の処理手順（メモリコントローラ）の一例を示す図である。メモリコントローラ２００は、読出し対象に基づいて、復号処理を選択する。読出し対象が、ページ符号語である場合は（ステップＳ８３１：Ｙｅｓ）、ページ符号語の復号を行う（ステップＳ８３５）。読出し対象が、拡張符号語である場合は（ステップＳ８３１：ＮｏかつステップＳ８３２：Ｙｅｓ）、拡張符号語の復号を行う（ステップＳ８３４）。読出し対象が、複合符号語である場合は（ステップＳ８３１：ＮｏかつステップＳ８３２：Ｎｏ）、複合符号語の復号を行う（ステップＳ８３３）。これらの復号は、図２に関して説明した第１復号部２１２、第２復号部２１４および第３復号部２１６により行われる。復号の結果エラーを生じない場合には（ステップＳ８３６：Ｎｏ）、復号処理を終了する。一方、復号の結果エラーを生じた場合、例えば、ページ符号語におけるページデータの誤り訂正に失敗した場合には（ステップＳ８３６：Ｙｅｓ）、復号処理をエラー終了する。この場合、メモリコントローラ２００は、エラーの発生をホストコンピュータ１００に通知する。
【００７６】
［読出し処理の処理手順（メモリ側の処理）］
図２７は、本技術の第１の実施の形態における読出し処理の処理手順（メモリ）の一例を示す図である。メモリ３００は、メモリコントローラ２００から読出しのリクエストが発行されると、本処理を開始する。まず、リクエストを解釈し、読出しを行うメモリセルのページアドレス、バンク番号およびサブページ番号を取得する（ステップＳ８５１）。次に、これらに対応するメモリセルアレイ３０８のバンクに読出しを指示する指令を出力する（ステップＳ８５２）。この際、データ転送のタイミングを合わせるため、指令を出力するタイミングをバンクごとにずらす必要がある。次に、メモリセルアレイ３０８から出力されたデータおよび冗長をメモリコントローラ２００に転送し（ステップＳ８６０）、読出し処理を終了する。
【００７７】
［データおよび冗長転送処理の処理手順（メモリ側の処理）］
図２８は、本技術の第１の実施の形態におけるデータおよび冗長転送処理の処理手順（メモリ）の一例を示す図である。メモリ３００は、リクエストの読出し対象に転送すべきデータが存在するか否かを判断する（ステップＳ８６１）。読出し対象がページ符号語、拡張符号語、複合符号語、ページデータ、拡張データ、符号語ブロックまたはデータブロックである場合には（ステップＳ８６１：Ｙｅｓ）、指定バンクから出力されたデータをメモリコントローラ２００に転送する（ステップＳ８６２）。全データの転送が終了した場合（ステップＳ８６４：Ｙｅｓ）、次の処理に進む。全データの転送が終了していない場合は（ステップＳ８６４：Ｎｏ）、再度ステップＳ８６２の処理を行う。一方、リクエストの読出し対象が、ページ冗長、拡張冗長、複合冗長または冗長ブロックである場合には（ステップＳ８６１：Ｎｏ）、データ転送を行わず、次の処理に進む。次に、メモリ３００は、リクエストの読出し対象に転送すべき冗長が存在するか否かを判断する（ステップＳ８６５）。読出し対象が、ページ符号語、拡張符号語、複合符号語、ページ冗長、拡張冗長、符号語ブロック、複合冗長または冗長ブロックである場合には（ステップＳ８６５：Ｙｅｓ）、冗長バンクから出力された冗長をメモリコントローラ２００に転送する（ステップＳ８６６）。その後データおよび冗長転送処理を終了する。一方、リクエストの書込み対象が、ページデータ、拡張データまたはデータブロックである場合には（ステップＳ８６５：Ｎｏ）、冗長の転送を行わず、データおよび冗長転送処理を終了する。
【００７８】
本技術の第１の実施の形態においては、ページ冗長と拡張冗長と複合冗長の３種類の冗長を使用することをあらかじめ想定して、データ領域および冗長領域を配置し、これらを同一ページアドレスによりアクセス可能としている。これにより、符号語に対するアクセスを高速に行うことができる。また、複合冗長を使用する際に、複合冗長とそのデータ部分である符号語との関係を示す管理テーブルを省くことができる。さらに、すでに記憶させたデータに対する冗長の種類変更を容易にすることができる。例えば、ページ冗長として記憶させた２個のページデータを拡張冗長に変更する際には、冗長領域に新たな拡張冗長を書き込むだけで済む。さらに、本技術の第１の実施の形態においては、冗長領域に管理情報を記憶させている。この管理情報に対してアクセスする際には、冗長領域のみのアクセスでよく、データ領域の不要な書込みおよび読出しを減らすことができる。複合冗長を使用しない場合には、複合冗長の記憶領域として確保した冗長領域のサブページに他のデータ、例えば、バンクにおける書換え回数を記憶させることも可能となる。
【００７９】
このように、第１の実施の形態によれば、ページ単位のデータと冗長をメモリの異なる領域に記憶させ、これらデータ、冗長または符号語を同一のページアドレスによりアクセスする構成とすることにより、情報処理システムの利便性を向上させることができる。
【００８０】
＜２．第２の実施の形態＞
上述の第１の実施の形態では、冗長はパリティと管理情報とにより構成されていた。これに対し本技術の第２の実施の形態では、冗長はパリティと管理情報と管理情報のパリティとを有する構成としている。
【００８１】
図２９は、本技術の第２の実施の形態における冗長の構成例を示す図である。同図における、ページ冗長は、管理情報とそのパリティである管理情報パリティと二重パリティとにより構成されている。この二重パリティは、ページデータ、管理情報および管理情報パリティに対応するパリティである。同様に、拡張冗長は、拡張管理冗長とそのパリティである拡張管理情報パリティと拡張二重パリティとにより構成されている。この拡張二重パリティは、拡張データ、拡張管理情報および拡張管理情報パリティに対応するパリティである。符号語ブロックにおけるページ冗長部分も同様である。これら管理情報パリティと拡張管理冗長パリティとにより、管理情報の誤り検出および誤り訂正を行い、管理情報を保護している。
【００８２】
図３０は、本技術の第２の実施の形態におけるメモリコントローラの構成例を示す図である。本技術の第１の実施の形態におけるメモリコントローラ２００とは、管理情報処理部２２２を備える点が異なっている。この管理情報処理部２２２は、管理情報パリティの生成および管理情報パリティによる管理情報の誤り訂正を行うものである。さらに、この管理情報処理部２２２は、拡張管理情報パリティの生成および拡張管理情報パリティによる拡張管理情報の誤り訂正も行う。制御部２１９は、この管理情報処理部２２２の制御を行う。また、図３０における第１符号化部２１１は、ページデータ、管理情報および管理情報パリティから二重パリティを生成する。第１復号部２１２は、ページ符号語の復号によりページデータ、管理情報および管理情報パリティを再生する。第２符号化部２１３は、拡張データ、拡張管理情報および拡張管理情報パリティから拡張二重パリティを生成する。第２復号部２１４は、拡張符号語の復号により拡張データ、拡張管理情報および拡張管理情報パリティを再生する。これ以外のメモリコントローラ２００の構成およびメモリ３００の構成は本技術の第１の実施の形態と同様であるため、説明を省略する。
【００８３】
このように、本技術の第２の実施の形態においては、データのパリティと管理情報と管理情報パリティとにより構成された冗長を使用することにより、管理情報の保護が強化され、情報処理システムの信頼性を向上させることができる。
【００８４】
［変形例］
上述の第２の実施の形態では、管理情報パリティをパリティおよび管理情報とともに冗長領域のサブページに記憶させていた。これに対し、本技術の第２の実施の形態の変形例では、管理情報パリティ専用のサブページを冗長領域に配置し、ここに管理情報パリティを記憶させる。
【００８５】
図３１は、本技術の第２の実施の形態の変形例における冗長の構成例を示す図である。ページ冗長、拡張冗長および冗長ブロックのページ冗長部分の構成は、図６において説明した冗長と同様の構成にすることができる。しかし、本技術の第２の実施の形態の変形例においては、冗長ブロックにおけるページ冗長部分に含まれる４個の管理情報に対するパリティ（以下、管理情報ブロックパリティと表現する。）を生成し、これを１個のサブページに保存する。このため、本技術の第２の実施の形態の変形例におけるメモリセルアレイ３０８のバンク＃５は６個のサブページを備える構成とし、サブページ＃５を管理情報ブロックパリティ保存用のサブページとしている。
【００８６】
管理情報ブロックパリティの生成は、管理情報処理部２２２が行う。つまり、管理情報処理部２２２は、４個の管理情報に対し一括してパリティを生成する。第１符号化部２１１は、ページデータおよび管理情報からパリティを生成する。第１復号部２１２は、ページ符号語の復号によりページデータおよび管理情報を再生する。第２符号化部２１３は、拡張データおよび拡張管理情報から拡張パリティを生成する。第２復号部２１４は、拡張符号語の復号により拡張データおよび拡張管理情報を再生する。また、管理情報ブロックパリティにアクセスするために、リクエスト生成部２１８は、メモリセルアレイ３０８のバンク＃５のサブページ＃５にアクセスするためのリクエストを生成する機能を有する。これ以外の構成は、メモリ３００および図３０において説明したメモリコントローラ２００と同様であるため、説明を省略する。本技術の第２の実施の形態のように、ページ冗長ごとに管理情報パリティを生成する場合と比較して、処理時間を短縮することができる。
【００８７】
このように、本技術の第２の実施の形態の変形例においても、管理情報パリティを使用することにより、管理情報の保護が強化され、情報処理システムの信頼性を向上させることができる。また、本技術の第２の実施の形態の変形例においては、複数の管理情報に対し一括してパリティを生成するため、処理時間を短縮することができる。
【００８８】
＜３．第３の実施の形態＞
上述の第１の実施の形態では、メモリコントローラ２００はデータバッファ２１７を備えていた。これに対し、本技術の第３の実施の形態では、データと冗長の転送方法を変更することにより、データバッファ２１７を省略している。
【００８９】
図３２は、本技術の第３の実施の形態におけるメモリコントローラの構成例を示す図である。本技術の第３の実施の形態におけるメモリコントローラ２００は、データバッファ２１７を備える必要はない。また、メモリ３００のメモリ制御部３１１は、メモリコントローラ２００からデータおよび冗長が時間的にずれて出力された場合であっても、メモリセルアレイ３０８に書込み可能な構成としている。これ以外のメモリコントローラ２００およびメモリ３００の構成は本技術の第１の実施の形態と同様であるため、説明を省略する。
【００９０】
図３３は、本技術の第３の実施の形態におけるデータと冗長の転送手順を示す図である。同図におけるａは、比較のために本技術の第１の実施の形態におけるデータと冗長の転送手順を表したものであり、ページ符号語の書込みの場合を想定したものである。本技術の第１の実施の形態においては、ホストコンピュータ１００からコマンドが発行され、ワークメモリ２１０にページデータが入力されると、このページデータは、第１符号化部２１１とデータバッファ２１７とに転送される。次に、第１符号化部２１１が冗長を生成する。この間、ページデータは、データバッファ２１７に保持される。第１符号化部２１１における冗長の生成終了を待ってリクエストを発行し、データバッファ２１７からページデータを出力させる。最後に、生成された冗長が出力される。このように、本技術の第１の実施の形態では、リクエスト、データおよび冗長を切れ目なくメモリ３００に対して出力していた。なお、同図におけるａでは冗長生成時間を２μｓ、冗長が生成されてデータおよび冗長の出力が終了するまでの時間を６００ｎｓとしているが、これらは一例であり、ページデータのビット数等により変動する。同図におけるａでは、第１符号化部２１１への入力開始からメモリコントローラ２００におけるデータおよび冗長の出力終了までの時間は、およそ２６００ｎｓである。
【００９１】
これに対し本技術の第３の実施の形態におけるメモリコントローラ２００は、この符号化を行っている間にリクエストとデータをメモリ３００に対して先行して出力する。その後、生成されたページ冗長が出力される。この様子を図３３におけるｂに表した。本技術の第３の実施の形態においては、ページデータとページ冗長とは、一体となって出力されない。しかし、メモリ３００のメモリ制御部３１１は、先に出力されたリクエストを解釈し、属性が「符号語」であった場合には、冗長がメモリコントローラ２００から出力されるまで待機する。その後、遅れて出力された冗長に対する冗長領域のバンクへの転送を実行する。このようにメモリ３００は、ページ符号語の書込みの際、ページデータとページ冗長の出力に時間的なずれがあっても、データと冗長を異なる領域に記憶させるため、それぞれ独立した書込みが可能である。これにより、第１符号化部２１１への入力開始からメモリコントローラ２００におけるデータおよび冗長の出力終了までの時間は、およそ２０５０ｎｓに短縮される。同図におけるｂでは、冗長が生成されて出力が終了するまでの時間を５０ｎｓとしている。同図におけるａと同様、これも出力時間の一例である。なお、書込み対象が拡張符号語および複合符号語であっても、メモリコントローラ２００およびメモリ３００は同様の処理を行う。
【００９２】
このように、本技術の第３の実施の形態では、データと冗長とを異なるタイミングでメモリコントローラ２００からメモリ３００に出力した場合であっても、これらの書込みを行うことができる。これにより、メモリコントローラ２００内のデータバッファを省略することができ、メモリコントローラを簡便な構成とすることができる。また、データおよび冗長の転送時間を短縮することができる。
【００９３】
＜４．変形例＞
上述の本技術の実施の形態では、冗長はパリティと管理情報により構成されていた。これに対し、本技術の実施の形態の変形例では、冗長はパリティのみから構成される。
【００９４】
図３４は、本技術の実施の形態の変形例における冗長の構成例を示す図である。ページ冗長、拡張冗長および冗長ブロックは、パリティのみにより構成されている。本技術の実施の形態の変形例における第１符号化部２１１および第２符号化部２１３は、管理情報を含まない冗長または拡張冗長を生成する。また、第１復号部２１２および第２復号部２１４は、符号語からページデータまたは拡張データを再生する。これ以外のメモリコントローラ２００の構成は図２において説明したメモリコントローラ２００と同様であるため、説明を省略する。
【００９５】
このように、本技術の実施の形態の変形例においては、冗長は管理情報を含んでいないため、メモリセルアレイ３０８の記憶領域を削減することができる。
【００９６】
以上説明したように、本技術の実施の形態によれば、ページ単位のデータと冗長をメモリの異なる領域に記憶させ、これらデータ、冗長または符号語を同一のページアドレスによりアクセスすることができる。これにより、情報処理システムの利便性を向上させることができる。
【００９７】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【００９８】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【００９９】
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
【０１００】
なお、本技術は以下のような構成もとることができる。
（１）データを記憶するデータ領域と前記データの誤り検出および誤り訂正を行うための冗長を記憶する冗長領域とを備える不揮発性メモリに対して前記データと前記冗長と前記データおよび前記冗長からなる符号語との何れかについて書込みまたは読出しを要求するリクエストを生成するリクエスト生成部と、
前記生成された前記リクエストを発行して前記不揮発性メモリに対する書込みおよび読出しを制御する制御部と
を具備するメモリコントローラ。
（２）前記データは、ページ単位のページデータであり、
前記冗長は、前記ページデータの誤り検出および誤り訂正を行うためのページ冗長であり、
前記符号語は、前記ページデータおよび前記ページ冗長からなるページ符号語であり、
前記リクエストは、前記ページデータと前記ページ冗長と前記ページ符号語との何れかについて書込みまたは読出しを要求するリクエストである前記（１）に記載のメモリコントローラ。
（３）前記データは、複数の前記ページを含む拡張データと前記ページデータであり、
前記冗長は、前記拡張データの誤り検出および誤り訂正を行うための拡張冗長と前記ページ冗長であり、
前記符号語は、前記拡張データおよび前記拡張冗長からなる拡張符号語と前記ページ符号語であり、
前記リクエストは、前記ページデータと前記ページ冗長と前記ページ符号語と前記拡張データと前記拡張冗長と前記拡張符号語との何れかについて書込みまたは読出しを要求するリクエストである前記（２）に記載のメモリコントローラ。
（４）前記データは、複数の前記ページ符号語を含む符号語ブロックと前記拡張データと前記ページデータであり、
前記冗長は、前記符号語ブロックの誤り検出および誤り訂正を行うための複合冗長と前記拡張冗長と前記ページ冗長であり、
前記符号語は、前記符号語ブロックおよび前記複合冗長からなる複合符号語と前記拡張符号語とページ符号語であり、
前記リクエストは、前記ページデータと前記ページ冗長と前記ページ符号語と前記拡張データと前記拡張冗長と前記拡張符号語と前記符号語ブロックと前記複合冗長と前記複合符号語との何れかについて書込みまたは読出しを要求するリクエストである前記（３）に記載のメモリコントローラ。
（５）前記データは、前記符号語ブロックに含まれる複数の前記ページデータからなるデータブロックと前記符号語ブロックと前記拡張データと前記ページデータであり、
前記冗長は、前記符号語ブロックに含まれる複数の前記ページ冗長および前記複合冗長からなる冗長ブロックと前記複合冗長と前記拡張冗長と前記ページ冗長であり、
前記リクエストは、前記ページデータと前記ページ冗長と前記ページ符号語と前記拡張データと前記拡張冗長と前記拡張符号語と前記符号語ブロックと前記複合冗長と前記複合符号語と前記データブロックと前記冗長ブロックとの何れかについて書込みまたは読出しを要求するリクエストである前記（４）に記載のメモリコントローラ。
（６）前記ページ冗長は、前記ページデータに関する管理情報と前記ページデータおよび前記管理情報の誤り検出および誤り訂正を行うためのパリティとにより構成され、
前記拡張冗長は、前記拡張データに関する拡張管理情報と前記拡張データおよび前記拡張管理情報の誤り検出および誤り訂正を行うための拡張パリティとにより構成される、前記（５）に記載のメモリコントローラ。
（７）前記複合冗長は、前記符号語ブロックに含まれる複数の前記管理情報を含む管理情報ブロックの誤り検出および誤り訂正を行うための管理情報ブロックパリティと前記符号語ブロックの誤り検出および誤り訂正を行うための符号語ブロックパリティとにより構成される前記（６）に記載のメモリコントローラ。
（８）前記ページ冗長は、前記管理情報の誤り検出および誤り訂正を行うための管理情報パリティと前記管理情報と前記ページデータおよび前記管理情報および前記管理情報パリティの誤り検出および誤り訂正を行うための二重パリティとにより構成され、
前記拡張冗長は、前記拡張管理情報の誤り検出および誤り訂正を行うための拡張管理情報パリティと前記拡張管理情報と前記拡張データおよび前記拡張管理情報および前記拡張管理情報パリティの誤り検出および誤り訂正を行うための拡張二重パリティとにより構成される前記（６）に記載のメモリコントローラ。
（９）前記ページ冗長を生成する第１の符号化部と、
前記ページ符号語に含まれる前記ページ冗長により当該ページ符号語に含まれる前記ページデータの誤り検出と誤り訂正とを行う第１の復号部と、
前記拡張冗長を生成する第２の符号化部と、
前記拡張符号語に含まれる前記拡張冗長により当該拡張符号語に含まれる前記拡張データの誤り検出と誤り訂正とを行う第２の復号部と、
前記複合冗長を生成する第３の符号化部と、
前記複合符号語に含まれる前記複合冗長により当該複合符号語に含まれる前記符号語ブロックの誤り検出と誤り訂正とを行う第３の復号部と
をさらに具備し、
前記制御部は、前記読出しを要求するリクエストの出力により前記不揮発性メモリから入力された前記ページ符号語の前記第１の復号部への転送と前記読出しを要求するリクエストの出力により前記不揮発性メモリから入力された前記拡張符号語の前記第２の復号部への転送と前記読出しを要求するリクエストの出力により前記不揮発性メモリから入力された前記複合符号語の前記第３の復号部への転送とをさらに制御する
前記（５）に記載のメモリコントローラ。
（１０）データを記憶するデータ領域と前記データの誤り検出および誤り訂正を行うための冗長を記憶する冗長領域とを備える不揮発性メモリと、
前記不揮発性メモリを制御するメモリコントローラと
を具備し、
前記メモリコントローラは、
前記不揮発性メモリに対して前記データと前記冗長と前記データおよび前記冗長からなる符号語との何れかについて書込みまたは読出しを要求するリクエストを生成するリクエスト生成部と、
前記生成された前記リクエストを発行して前記不揮発性メモリに対する書込みおよび読出しを制御する制御部と
を備える
記憶装置。
（１１）前記不揮発性メモリは、ページアドレスによりアドレス付けられたページを記憶するバンクにより構成されて前記データ領域と前記冗長領域が異なる前記バンクに割り当てられて同一の前記符号語に属する前記データおよび前記冗長が同じページアドレスの前記バンクにそれぞれ記憶される前記（１０）に記載の記憶装置。
（１２）メモリコントローラに書込みまたは読出しを要求するコマンドを出力するホストコンピュータと、
データを記憶するデータ領域と前記データの誤り検出および誤り訂正を行うための冗長を記憶する冗長領域とを備える不揮発性メモリと、
前記コマンドに基づいて前記不揮発性メモリを制御するメモリコントローラと
を具備し、
前記メモリコントローラは、
前記コマンドに基づいて前記不揮発性メモリに対して前記データと前記冗長と前記データおよび前記冗長からなる符号語との何れかについて書込みまたは読出しを要求するリクエストを生成するリクエスト生成部と、
前記生成された前記リクエストを発行して前記不揮発性メモリに対する書込みおよび読出しを制御する制御部と
を備える
情報処理システム。
（１３）データを記憶するデータ領域と前記データの誤り検出および誤り訂正を行うための冗長を記憶する冗長領域とを備える不揮発性メモリに対して前記データと前記冗長と前記データおよび前記冗長からなる符号語との何れかについて書込みまたは読出しを要求するリクエストを生成するリクエスト生成手順と、
前記生成された前記リクエストを発行して前記不揮発性メモリに対する書込みおよび読出しを制御する制御手順と
を具備するメモリコントローラ制御方法。
【符号の説明】
【０１０１】
１００  ホストコンピュータ
１０１、２０１  信号線
１０９、２０９  ホストインターフェース
１１０  プロセッサ
２００  メモリコントローラ
２０７  処理部
２０８、３０９  メモリインターフェース
２１０  ワークメモリ
２１１  第１符号化部
２１２  第１復号部
２１３  第２符号化部
２１４  第２復号部
２１５  第３符号化部
２１６  第３復号部
２１７  データバッファ
２１８  リクエスト生成部
２１９  制御部
２２０、３１０  メモリインターフェース制御部
２２１  管理情報保持部
２２２  管理情報処理部
３００  メモリ
３０７  メモリデバイス制御部
３０８  メモリセルアレイ
３１１  メモリ制御部
３１２  ＲＯＭ
【図１】
2016031626.tif 000003
【図２】
2016031626.tif 000004
【図３】
2016031626.tif 000005
【図４】
2016031626.tif 000006
【図５】
2016031626.tif 000007
【図６】
2016031626.tif 000008
【図７】
2016031626.tif 000009
【図８】
2016031626.tif 000010
【図９】
2016031626.tif 000011
【図１０】
2016031626.tif 000012
【図１１】
2016031626.tif 000013
【図１２】
2016031626.tif 000014
【図１３】
2016031626.tif 000015
【図１４】
2016031626.tif 000016
【図１５】
2016031626.tif 000017
【図１６】
2016031626.tif 000018
【図１７】
2016031626.tif 000019
【図１８】
2016031626.tif 000020
【図１９】
2016031626.tif 000021
【図２０】
2016031626.tif 000022
【図２１】
2016031626.tif 000023
【図２２】
2016031626.tif 000024
【図２３】
2016031626.tif 000025
【図２４】
2016031626.tif 000026
【図２５】
2016031626.tif 000027
【図２６】
2016031626.tif 000028
【図２７】
2016031626.tif 000029
【図２８】
2016031626.tif 000030
【図２９】
2016031626.tif 000031
【図３０】
2016031626.tif 000032
【図３１】
2016031626.tif 000033
【図３２】
2016031626.tif 000034
【図３３】
2016031626.tif 000035
【図３４】
2016031626.tif 000036