(57)【要約】【課題】  不揮発性半導体メモリへのデータ転送に要する時間を短縮できるメモリコントローラを提供する。【解決手段】  メモリに転送すべきデータが入力されるバッファと、メモリに転送すべきデータから、所定データ長毎にＥＣＣパリティを生成するＥＣＣパリティ生成部と、生成したＥＣＣパリティを所定データ長毎に付加してメモリに送るメモリインターフェースと、を備え、ＥＣＣパリティ生成部は、メモリに転送すべきデータが所定データ長未満であるとき、所定データ長に満たない部分のデータを“０”とみなし、所定データ長未満のデータからＥＣＣパリティを生成する。【選択図】      図１０
2008009943.tif 000002
【特許請求の範囲】
【請求項１】
メモリに接続可能であり、前記メモリを制御するメモリコントローラであって、
前記メモリに転送すべきデータが入力されるバッファと、
前記メモリに転送すべきデータから、所定データ長毎にＥＣＣパリティを生成するＥＣＣパリティ生成部と、
前記生成したＥＣＣパリティを前記所定データ長毎に付加して前記メモリに送るメモリインターフェースと、を備え、
前記ＥＣＣパリティ生成部は、前記メモリに転送すべきデータが前記所定データ長未満であるとき、前記所定データ長に満たない部分のデータを“０”とみなし、前記所定データ長未満のデータから前記ＥＣＣパリティを生成することを特徴とするメモリコントローラ。
【請求項２】
前記ＥＣＣ生成部は、前記所定データ長未満のデータを反転したデータからパリティを生成し、前記生成したパリティを反転させたパリティを前記メモリインターフェースに送り、
前記メモリインターフェースは、少なくとも前記所定データ長未満のデータに、前記反転させたパリティを付加して、前記メモリに送ることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記ＥＣＣ生成部は、前記所定データ長未満のデータからパリティを生成し、前記生成したパリティを前記メモリインターフェースに送り、
前記メモリインターフェースは、少なくとも前記所定データ長未満のデータに、前記パリティを付加し、
前記メモリインターフェースが出力した少なくとも前記所定データ長未満のデータ、及び前記パリティをそれぞれ反転させて前記メモリに送ることを特徴とする請求項１に記載のメモリコントローラ。
【請求項４】
前記ＥＣＣパリティ生成部は、エラー訂正符号として巡回符号を用いることを特徴とする請求項１乃至請求項３いずれか一項に記載のメモリコントローラ。
【請求項５】
前記巡回符号はリードソロモン符号であることを特徴とする請求項４に記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はメモリコントローラに係わり、特に、ＥＣＣ（Error Correcting Code）回路を備えたメモリコントローラに関する。
【背景技術】
【０００２】
不揮発性半導体メモリを主記憶として持つメモリカードのページフォーマットには、管理情報が書き込まれる冗長部領域を、ページ毎に１箇所しか確保できないものがある。特に、不揮発性半導体メモリが多値メモリであったときには、このようなページフォーマットが採用される。多値の不揮発性半導体メモリは、分割書き込みができないからである。
【０００３】
上記ページフォーマットを採用し、かつ、データがページの途中までしか書き込まれなかった、即ち、データが所定データ長に満たなかった、と仮定する。
【０００４】
この場合、不揮発性半導体メモリをコントロールするメモリコントローラは、冗長部データ領域に管理情報を書き込むために、管理情報が書き込まれたフォーマットの１箇所にダミーデータを付加し、この箇所のデータ長を、エラー検知訂正（ＥＣＣ）用のパリティを発生させる所定データ長とする。この後、メモリコントローラは、その中に持つＥＣＣコアに、ダミーデータ＋管理情報を含む所定データ長のデータ列を入力する。次いで、所定データ長のデータ列からＥＣＣパリティを生成する。次いで、ダミーデータと、管理情報と、ＥＣＣパリティとを含むデータ列を不揮発性半導体メモリに送り、このデータ列のデータを不揮発性半導体メモリに書き込む。
【０００５】
しかし、不揮発性半導体メモリが持つページバッファのクリア状態はデータ“１”である。つまり、ダミーデータはオール“１”にしなければならず、ＥＣＣパリティは、オール“１”のダミーデータ＋管理情報のデータ列から生成されることになる。
【０００６】
このように現状のメモリコントローラは、オール“１”のダミーデータをＥＣＣコアに入力すること、及びオール“１”のダミーデータ＋管理情報のデータ列からＥＣＣパリティを生成することを実行する。このため、不揮発性半導体メモリへのデータ転送に要する時間の短縮が阻害されている。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
この発明は、不揮発性半導体メモリへのデータ転送に要する時間を短縮できるメモリコントローラを提供する。
【課題を解決するための手段】
【０００８】
この発明の一態様に係るメモリコントローラは、メモリに接続可能であり、前記メモリを制御するメモリコントローラであって、前記メモリに転送すべきデータが入力されるバッファと、前記メモリに転送すべきデータから、所定データ長毎にＥＣＣパリティを生成するＥＣＣパリティ生成部と、前記生成したＥＣＣパリティを前記所定データ長毎に付加して前記メモリに送るメモリインターフェースと、を備え、前記ＥＣＣパリティ生成部は、前記メモリに転送すべきデータが前記所定データ長未満であるとき、前記所定データ長に満たない部分のデータを“０”とみなし、前記所定データ長未満のデータから前記ＥＣＣパリティを生成する。
【発明の効果】
【０００９】
この発明によれば、不揮発性半導体メモリへのデータ転送に要する時間を短縮できるメモリコントローラを提供できる。
【発明を実施するための最良の形態】
【００１０】
以下、この発明の一実施形態を、図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【００１１】
（第１実施形態）
エラー訂正符号に、例えば、巡回符号を用いると、所定データ長未満のデータ列から生成したＥＣＣパリティと、所定データ長に満たない部分をデータ“０”で埋めた所定データ長のデータ列から生成したＥＣＣパリティとは同じ結果になることがある。例えば、図１に示すように、所定データ長未満のデータ列から生成したＥＣＣパリティを生成した、とする。これをパリティＡとする。同様に、図２に示すように、所定データ長に満たない部分をデータ“０”で埋めた所定データ長のデータ列からＥＣＣパリティを生成した、とする。これをパリティＢとする。エラー訂正符号に巡回符号、例えば、リードソロモン符号を用いると、図３に示すように、パリティＡとパリティＢとは同じになる。
【００１２】
なお、図１乃至図３は、パリティＡとパリティＢとが同じになる、という現象を説明するために簡略化して示した図である。データ列の数等は実際ものとは異なることに留意されたい。このことは、図４以降の図面においても同様である。
【００１３】
第１実施形態は、所定データ長に満たないデータ列の部分をデータ“０”とみなす。これにより、管理情報のみの短いデータ列からでも正確なＥＣＣパリティを生成すること、さらには、ＥＣＣコアへのダミーデータの入力を省略することに成功した。
【００１４】
以下、より詳しく説明する。
【００１５】
まず、実施形態の理解を助けるために、参考例として、ダミーデータを付加するデータ転送方式を説明しておく。なお、この説明は実施形態の理解の一助であるとともに、実施形態の説明の一部をなす。
【００１６】
図４に、所定データ長を有するデータ列の構造を示す。
【００１７】
図４に示すように、所定データ長とは、パリティを何ビット毎に付加するか、を決める単位である。エラー検知訂正は所定データ長毎に実行される。所定データ長の中で検知可能なエラーの数、及び訂正可能なエラーの数はエラー訂正符号の能力に応じて決まる。
【００１８】
いま、所定データ長未満の短いデータ列がメモリコントローラに入力された、仮定する。所定データ長未満の短いデータ列の一例は、図４に示すように、管理情報である。
【００１９】
次に、図５に示すように、メモリコントローラは、所定データ長に満たない部分にダミーデータ“１”を付加し、所定データ長に満たない部分をデータ“１”で埋めることで、管理情報を含むデータ列を所定データ長とする。ダミーデータが“１”であることの理由は、不揮発性半導体メモリのページバッファのクリア状態は“１”であるからである。クリア状態“１”は、不揮発性半導体メモリのメモリセルが消去状態にあることを意味する。
【００２０】
次に、メモリコントローラは、所定データ長の、“ダミーデータ＋管理情報”のデータ列をＥＣＣコアに入力する。ＥＣＣコアは“ダミーデータ＋管理情報”のデータ列からＥＣＣパリティを生成する。
【００２１】
次に、図６に示すように、メモリコントローラは、不揮発性半導体メモリのページバッファに、“ダミーデータ＋管理情報＋パリティ”のデータ列を転送する。ページバッファは、転送された“ダミーデータ＋管理情報＋パリティ”のデータ列を一時的に保持する。この後、ページバッファに一時的に保持されたデータに従って、不揮発性半導体メモリのメモリセルにデータが書き込まれる。
【００２２】
ここで、ページバッファのクリア状態とパリティが生成されるデータ列との関係を考える。図７に、参考例におけるページバッファのクリア状態とパリティを生成するデータ列との関係を示す。図７に示す関係はページバッファのクリア状態が“１”のときの関係である。この関係は、図８に示すように変形させることができる。
【００２３】
図８に示す関係はページバッファのクリア状態が“１の反転”と考えた場合の関係である。この場合に、“ダミーデータ＋管理情報”のデータ列を反転させる。すると、図８に示す関係は、図７に示す関係と全く同じになる。さらに、図８に示す関係は図９に示す関係に変形できる。“１”の反転は“０”であるからである。
【００２４】
本欄の冒頭でも述べたように、所定データ長未満のデータ列から生成したＥＣＣパリティと、所定データ長に満たない部分をデータ“０”で埋めた所定データ長のデータ列から生成したＥＣＣパリティとは、同じ結果になる。そこで、図１０に示すように、不揮発性半導体メモリに転送すべきデータが所定データ長未満であるとき、本例では管理情報が所定データ長未満であるとき、所定データ長に満たない部分のデータを“０”とみなす。本例ではダミーデータを全て“０”とみなす。さらに、本例ではダミーデータを“０”とみなしたので、管理情報を反転させる。このようにすれば反転された管理情報のみの短いデータ列から、正しいパリティを生成することができる。
【００２５】
次に、転送すべきデータを、不揮発性半導体メモリに実際に転送するときの第１例を説明する。
【００２６】
（第１例）
メモリコントローラから不揮発性半導体メモリにデータを転送するとき、転送すべきデータ、本例では管理情報を反転させた状態で転送すると、転送すべきデータと違ったデータが転送されることになる。
【００２７】
そこで、本例に係るメモリコントローラは、図１１に示すようにＥＣＣコアには反転された管理情報を入力するが、不揮発性半導体メモリには、図１２に示すように反転されていない管理情報を転送する。これにより、転送すべきデータと違ったデータが転送されないように配慮する。
【００２８】
さらに、本例のメモリコントローラは、図１１に示すように反転された管理情報からパリティ（パリティａ）を生成する。このパリティ（パリティａ）“/Ｙ”は、反転された管理情報から生成されたパリティであるから、反転されていない管理情報から生成されたパリティではない。パリティ（パリティａ）“/Ｙ”を、反転されていない管理情報のパリティとして不揮発性半導体メモリに転送すると、誤ったＥＣＣが実行されることになる。
【００２９】
そこで、本例に係るメモリコントローラは、図１１に示すようにパリティ（パリティａ）“/Ｙ”を反転させる。パリティ（パリティａ）“/Ｙ”はパリティ（パリティｂ）“Ｙ”になる。パリティ（パリティｂ）“Ｙ”は“オール“１”のダミーデータ＋管理情報”のデータ列から生成したパリティそのものである。このことは、例えば、図６に示したデータの状態と全く同じであることからも分かる。
【００３０】
最後に、図１２に示すように、メモリコントローラは、“オール“１”のダミーデータ＋管理情報”のデータ列と、ＥＣＣコアにて生成したパリティ（パリティｂ）“Ｙ”とを不揮発性半導体メモリに転送する。もしくは図１３に示すように、メモリコントローラは、ダミーデータの転送をページバッファのクリア状態“１”を利用することで省略し、管理情報と、パリティ（パリティｂ）“Ｙ”とを不揮発性半導体メモリに転送するようにしても良い。
【００３１】
このように、第１例によれば、所定データ長未満の短いデータ列からでも、正しいパリティを生成することができる。従って、パリティを生成するための演算処理は、データ列が短い分、簡略化することができる。パリティを生成するための演算処理が簡略化されることで、メモリコントローラは、不揮発性半導体メモリへのデータ書き込みに要する時間を短縮することができる。
【００３２】
（第２例）
第２例が、第１例と異なるところは、転送すべきデータを、ページバッファのクリア状態の反転とみなすことにある。
【００３３】
この場合には、ダミーデータは全て“０”になる。従って、図１４に示すように、ＥＣＣコアに管理情報のみを入力し、ＥＣＣコアは管理情報のみでパリティを生成すれば良い。
【００３４】
最後に、図１５に示すように、“ダミーデータ＋管理情報”のデータ列と、ＥＣＣコアにて生成したパリティとをそれぞれ反転して不揮発性半導体メモリに転送する。もしくは図１６に示すように、メモリコントローラは、ダミーデータの転送をページバッファのクリア状態“１”を利用することで省略し、管理情報及びパリティをそれぞれ反転して不揮発性半導体メモリに転送するようにしても良い。
【００３５】
第２例においても、第１例と同様に、所定データ長未満の短いデータ列からでも、正しいパリティを生成することができる。従って、パリティを生成するための演算処理は、データ列が短い分、簡略化することができる。パリティを生成するための演算処理が簡略化されることで、メモリコントローラは、不揮発性半導体メモリへのデータ転送に要する時間を短縮することができる。
【００３６】
次に、本実施形態を適用できるページフォーマットの一例を説明する。
【００３７】
図１７Ａは、ページフォーマットの一例を示す図である。
【００３８】
図１７Ａに示すページフォーマットは、管理情報が書き込まれる冗長部データ領域を、ページ毎に１箇所しか確保できない例である。特に、不揮発性半導体メモリが多値メモリ、もしくは多値方式の採用が可能なメモリであったときには、図１７Ａに示すようなページフォーマットが採用される。
【００３９】
図１７Ａに示すように、一例に係るページフォーマットは、ページの末尾に管理情報を書き込む冗長部領域を１箇所有する。一例に係るページフォーマットは、ユーザーデータ０〜ユーザデータ３を含む。ユーザーデータ０〜ユーザデータ３はデータ部領域である。データ部領域はホスト機器からのデータが書き込まれる領域である。ユーザーデータ０〜ユーザデータ２はそれぞれ所定データ長を有する。パリティ部領域は、ユーザーデータ０〜ユーザデータ２の後ろにそれぞれ設定される。パリティ０はユーザーデータ０のパリティであり、同様に、パリティ１はユーザーデータ１のパリティ、パリティ２はユーザーデータ２のパリティである。ページ末尾のユーザーデータ３の後ろには冗長部領域が確保され、管理情報は冗長部領域に書き込まれる。“ユーザーデータ３＋管理情報”のデータ列で所定データ長となる。パリティ３は“ユーザーデータ３＋管理情報”のパリティとなる。
【００４０】
ユーザーデータは、必ずしも１ページを使い切る、というものではない。
【００４１】
例えば、図１７Ｂに示すように、ユーザーデータ０と管理情報のみを書き込む場合もある。この場合には、管理情報を書き込むために、末尾のユーザーデータ３にはダミーデータを書き込み、“ダミーデータ＋管理情報”のデータ列からパリティ３を生成する。これは、上述した通りである。
【００４２】
このような一例に係るページフォーマットに、本実施形態を適用すると、図１７Ｃに示すようなものになる。
【００４３】
図１７Ｃは、データ転送方式に上記第２例を適用した場合であり、ユーザーデータ０と管理情報のみを書き込む場合である。
【００４４】
第２例を適用すると、メモリコントローラは、ユーザーデータ０、及びそのパリティであるパリティ０を、それぞれ反転させて不揮発性半導体メモリに転送する。この後、メモリコントローラは、管理情報、及び第２例に従って生成した管理情報のパリティであるパリティ３を、それぞれ反転させて不揮発性半導体メモリに転送する。
【００４５】
このように、本実施形態は、管理情報が書き込まれる冗長部データ領域を、ページ毎に１箇所しか確保できないページフォーマットに適用することができる。
【００４６】
なお、第１例についてはページフォーマットの適用例を省略したが、第１例も第２例と同様に、例えば、図１７Ａに示すようなページフォーマットに適用できることは言うまでもない。
【００４７】
（第２実施形態）
第２実施形態は、第１実施形態を適用したメモリコントローラのハード構成に関する例である。
【００４８】
（第１例）
図１８、及び図１９は、この発明の第２実施形態に係るメモリコントローラのハード構成の第１例を示すブロック図である。図１８は不揮発性半導体メモリへのライト処理時、図１９は不揮発性半導体メモリからのリード処理時を示す。また、本第１例は、第１実施形態で説明した第１例に係るデータ転送方式に従ったものである。さらに、本第１例は、図１７Ａ〜図１７Ｃに示したページフォーマットを適用する。
【００４９】
（ライト処理時）
図１８に示すように、ホスト機器（図示せず）から書き込みデータがメモリコントローラ３００のホストインターフェースモジュール（Ｈｏｓｔ Ｉｎｔｅｒｆａｃｅ Ｍｏｄｕｌｅ：ＨＩＭ）１に入力される。
【００５０】
ＨＩＭ１は、例えば、ページフォーマットの末尾にまで書き込みデータがあるときには、書き込みデータをデータ部に書き込み、書き込みデータが書き込まれたデータ部をピンポンバッファ（Ｐｉｎｇ−Ｐｏｎｇ Ｂｕｆｆｅｒ）３に転送する。
【００５１】
ピンポンバッファ３は、データ部に、例えば、管理情報が書き込まれる冗長部を付加し、“データ部＋冗長部”のデータ列をメモリインターフェース（ＮＡＮＤ Ｉｎｔｅｒｆａｃｅ）５に入力する。さらに、ピンポンバッファ３は、“データ部＋冗長部”のデータ列を、インバータ１１を介して反転させてＥＣＣコア７に入力する。
【００５２】
なお、例えば、ページフォーマットの末尾に書き込みデータがないときには、ＨＩＭ１、又はピンポンバッファ３は、データ部にダミーデータ列を書き込む。
【００５３】
ＥＣＣコア７は、反転された“データ部＋冗長部”のデータ列からＥＣＣパリティを生成する。ただし、“データ部”にダミーデータ列が書き込まれている場合には、ＥＣＣコア７は、第１実施形態の第１例に従って“冗長部”のみのデータ列からＥＣＣパリティを生成する。これにより、ＥＣＣパリティを生成するための演算処理を簡略化する。生成されたＥＣＣパリティはインバータ１３を介して反転させ、反転させたＥＣＣパリティをメモリインターフェース５に入力する。
【００５４】
メモリインターフェース５は、ピンポンバッファ３から直接に入力された“データ部＋冗長部”に、“ＥＣＣパリティ部”を付加する。ＥＣＣパリティ部には、反転されたＥＣＣパリティが書き込まれる。メモリインターフェース５は、“データ部＋冗長部”に、反転されたＥＣＣパリティが書き込まれた“ＥＣＣパリティ部”を付加して、不揮発性半導体メモリ４００に転送する。
【００５５】
転送された“データ部＋冗長部＋ＥＣＣパリティ部”のデータ列は、不揮発性半導体メモリ４００のページバッファ（図示せず）に入力され、ここに一時的に保持される。この後、ページバッファに一時的に保持された“データ部＋冗長部＋ＥＣＣパリティ部”のデータ列は、不揮発性半導体メモリのメモリセル（図示せず）に書き込まれる。不揮発性半導体メモリ４００の一例はＮＡＮＤ型フラッシュメモリである。
【００５６】
（リード処理時）
図１９に示すように、不揮発性半導体メモリ４００から読み出された読み出しデータがメモリコントローラ３００のメモリインターフェース５に入力される。読み出しデータは、“データ部＋冗長部＋ＥＣＣパリティ部”のデータ列である。
【００５７】
メモリインターフェース５は、“データ部＋冗長部＋ＥＣＣパリティ部”のデータ列を、インバータ１５を介して反転させてＥＣＣコア７に入力する。さらに、メモリインターフェース５は、“データ部＋冗長部＋ＥＣＣパリティ部”のデータ列から、“データ部＋冗長部”を切り離してピンポンバッファ３に入力する。
【００５８】
ＥＣＣコア７は、“データ部＋冗長部＋ＥＣＣパリティ部”のデータ列から、修正データを生成する。修正データは、読み出しデータ（“データ部＋冗長部”）にエラーがあれば、そのエラーを修正するデータである。修正データは、インバータ１７を介して反転させてピンポンバッファ３に入力する。
【００５９】
ピンポンバッファ３は、読み出しデータ（“データ部＋冗長部”）にエラーがあれば、反転された修正データに基づいて、そのエラーを修正する。エラーが無ければそのままである。
【００６０】
リード処理が、ホスト機器への読み出しであるとき、ピンポンバッファ３は、エラーがあれば修正された読み出しデータ（“データ部＋冗長部”）から“データ部”を切り離し、ＨＩＭ１に入力する。ＨＩＭ１は、“データ部”のデータを読み出しデータとして、ホスト機器へ送る。
【００６１】
また、リード処理が、不揮発性半導体メモリへの書き戻し処理であるとき、ピンポンバッファ３は、図１８に示したライト処理に戻る。なお、図１９には、エラーがあれば修正された読み出しデータ（“データ部＋冗長部”）を、インバータ１１を介して反転させてＥＣＣコア７に入力することを示しておく。
【００６２】
なお、ＥＣＣコア７によるエラー修正処理は、一致／不一致、例えば、エクスクルーシブオアの論理で行われるため、入力／出力の反転処理は省略することが可能である。例えば、図１９に示すインバータ１５、１７を省略することも可能である。
【００６３】
本第２実施形態の第１例によれば、第１実施形態の第１例に係るデータ転送方式を実現する、メモリコントローラのハード構成の一例を得ることができる。
【００６４】
（第２例）
図２０、及び図２１は、この発明の第２実施形態に係るメモリコントローラのハード構成の第２例を示すブロック図である。図２０は不揮発性半導体メモリへのライト処理時、図２１は不揮発性半導体メモリからのリード処理時を示す。また、本第２例は、第１実施形態で説明した第２例に係るデータ転送方式に従ったものである。さらに、本第２例は、図１７Ａ〜図１７Ｃに示したページフォーマットを適用する。
【００６５】
（ライト処理時）
ライト処理時には、図２０に示すように、メモリインターフェース５が出力する“データ部＋冗長部＋ＥＣＣパリティ部”のデータ列を、例えば、メモリインターフェース５と不揮発性半導体メモリ４００との間に設けられたインバータ１９を用いて反転させて、不揮発性半導体メモリ４００に転送すれば良い。
【００６６】
ただし、ＥＣＣコア７は、“データ部＋冗長部”のデータ列からＥＣＣパリティを生成するが、“データ部”にダミーデータ列が書き込まれている場合には、ＥＣＣコア７は、第１実施形態の第２例に従って“冗長部”のみのデータ列からＥＣＣパリティを生成する。これにより、ＥＣＣパリティを生成するための演算処理を簡略化する。
【００６７】
（リード処理時）
リード処理時には、図２１に示すように、不揮発性半導体メモリ４００から読み出された読み出しデータを、例えば、メモリインターフェース５と不揮発性半導体メモリ４００との間に設けられたインバータ２１を用いて反転させて、メモリインターフェース５に入力すれば良い。
【００６８】
本第２実施形態の第２例によれば、第１実施形態の第１例に係るデータ転送方式を実現する、メモリコントローラのハード構成の一例を得ることができる。
【００６９】
（第３実施形態）
第３実施形態は、上記実施形態において説明したメモリコントローラを適用できる電子機器に関する例である。
【００７０】
上記実施形態において説明したメモリコントローラを適用できる電子機器の一例としては、記憶媒体、例えば、メモリカードを挙げることができる。以下、メモリカードの一例を説明する。
【００７１】
（メモリカードの一例）
図２２は、メモリカードの一例を示す図である。
【００７２】
図２２に示すように、メモリカード１００は、ホスト機器２００と、バスインタフェース６００を介してデータを送受信する。メモリカード１００は、ホスト機器２００に設けられたスロットに対して挿抜可能に形成される。
【００７３】
メモリカード１００は、メモリコントローラ３００と、不揮発性半導体メモリ（以下フラッシュメモリ）４００と、カード端子５００とを備える。
【００７４】
メモリコントローラ３００は、フラッシュメモリ４００を制御する。フラッシュメモリ４００の一例は、ＮＡＮＤ型フラッシュメモリである。
【００７５】
カード端子５００は、メモリコントローラ３００に電気的に接続される信号ピンであり、メモリカード１００の外部ピンとして機能する。本例のカード端子５００は、複数の信号ピン（第１ピン乃至第９ピン）を備える。第１ピン〜第９ピンに対する信号の割り当ての一例を、図２３に示す。
【００７６】
図２３に示すように、データ０乃至データ３は、第７ピン、第８ピン、第９ピン、及び第１ピンにそれぞれ割り当てられる。なお、第１ピンは、データ３だけでなく、カード検出信号に対しても割り当てられる。さらに、第２ピンはコマンドに割り当てられ、第３ピン、及び第６ピンは接地電位Ｖｓｓに、第４ピンは電源電位Ｖｄｄに、第５ピンはクロック信号に割り当てられる。
【００７７】
外部端子５００、及びバスインタフェース６００は、ホスト機器２００内のホスト機器コントローラ（図示せず）と、メモリカード１００との通信に使用される。例えば、ホスト機器コントローラは、第１ピン乃至第９ピンを介してメモリカード１００内のメモリコントローラ３００と各種信号、及びデータを通信する。例えば、メモリカード１００にデータを書き込むときには、ホスト機器コントローラは、書き込みコマンドを、第２ピンを介してメモリコントローラ３００に送信する。このとき、メモリコントローラ３００は、第５ピンに供給されるクロック信号に応答して、第２ピンに与えられる書き込みコマンドを取り込む。コマンドの入力に割り当てられる第２ピンは、データ３用の第１ピンと接地電位Ｖｓｓ用の第３ピンとの間に配置される。
【００７８】
これに対し、メモリコントローラ３００とフラッシュメモリ４００との間の通信は、例えば、８ビットのＩＯ線（データライン）７００を介して行われる。
【００７９】
メモリコントローラ３００が、フラッシュメモリ４００にデータを書き込むときには、メモリコントローラ３００は、ＩＯ線７００を介してデータ入力コマンド８０ｈ、カラムアドレス、ページアドレス、データ、及びプログラムコマンド１０ｈをフラッシュメモリ４００に順次入力する。ここで、コマンド８０ｈの“ｈ”は１６進数を示すものであり、実際には“１０００００００”という８ビットの信号が、８ビットのＩＯ線７００にパラレルに与えられる。また、フラッシュメモリ４００に対するコマンドの送信、及びデータの送受信は、ともにＩＯ線７００を共用して行われる。
【００８０】
図２４は、メモリカードのハード構成の一例を示すブロック図である。
【００８１】
ホスト機器２００は、メモリカード１００に対してアクセスを行うためのハードウェア、及びソフトウェアを備える。ホスト機器２００の例としては、携帯電話、デジタルカメラ（ビデオカメラ、スチルカメラ）、オーディオ機器、オーディオ／ビジュアル機器、ゲーム機器、電子楽器、テレビジョン、パーソナルコンピュータ、パーソナルデジタルアシスタント、ボイスレコーダ、ＰＣカード、及び電子書籍端末等を挙げることができる。
【００８２】
メモリカード１００は、ホスト機器２００に接続された時に電源供給を受けて動作し、ホスト機器２００からのアクセスに応じた処理を行う。
【００８３】
フラッシュメモリ４００は、消去時の消去ブロックサイズ（消去単位のブロックサイズ）が所定サイズ（例えば、２５６ｋＢ）に定められている。また、このフラッシュメモリ４００に対して、ページと称する単位（例えば、２ｋＢ）でデータの書き込み、及び読み出しが行われる。
【００８４】
メモリコントローラ３００は、フラッシュメモリ４００内部の物理状態（例えば、何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか）を管理する。メモリコントローラ３００は、ホスト機器インターフェース３０１、ＣＰＵ（Central Processing Unit）３０３、メモリインターフェース（フラッシュインターフェース）３０５、ＲＯＭ（Read Only Memory）３０７、ＲＡＭ（Random Access Memory）３０９、バッファ（Buffer）３１１、及びＥＣＣコア（ECC core）３１３を含む。
【００８５】
ホスト機器インターフェース３０１は、ホスト機器２００とメモリコントローラ３００との間のインターフェース処理を行う。ホスト機器インターフェース３０１は、図１８乃至図２１に示したＨＩＭ１に対応する。
【００８６】
ＣＰＵ３０３は、メモリカード１００全体の動作を制御する。ＣＰＵ３０３は、例えば、メモリカード１００が電源供給を受けたときに、ＲＯＭ３０７に格納されているファームウェア（制御プログラム）をＲＡＭ３０９上に読み出して所定の処理を実行することにより、各種のテーブルをＲＡＭ３０９上に作成する。
【００８７】
また、ＣＰＵ３０３は、書き込みコマンド、読み出しコマンド、消去コマンドをホスト機器２００から受け取り、フラッシュメモリ４００に対して所定の処理を実行したり、バッファ３１１を通じたデータ転送処理を制御したりする。
【００８８】
ＲＯＭ３０７は、ＣＰＵ３０３により制御される制御プログラムなどを格納する。
【００８９】
ＲＡＭ３０９は、ＣＰＵ３０３の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する。
【００９０】
メモリインターフェース３０５は、メモリコントローラ３００とフラッシュメモリ４００との間のインターフェース処理を行う。メモリインターフェース３０５は、図１８乃至図２１に示したメモリインターフェース５に対応する。
【００９１】
バッファ３１１は、ホスト機器２００から送られてくるデータをフラッシュメモリ４００へ書き込む際に、一定量のデータ（例えば、１ページ分）を一時的に記憶したり、フラッシュメモリ４００から読み出されるデータをホスト機器２００へ送り出す際に、一定量のデータを一時的に記憶したりする。バッファ３は、図１８乃至図２１に示したピンポンバッファ３に対応する。
【００９２】
ＥＣＣコア３１３は、フラッシュメモリ４００へデータを書き込む際、ホスト機器２００から送られてくるデータからＥＣＣパリティを生成し、フラッシュメモリ４００からデータを読み出す際、ＥＣＣパリティに基づいて書き込んだデータと読み出したデータとの間に誤りがある場合には、これを検知して修正する。ＥＣＣコア３１３は、図１８乃至図２１に示したＥＣＣコア７に対応する。
【００９３】
上記実施形態において説明したメモリコントローラは、図２２乃至図２４に示したようなメモリカードに適用することができる。
【００９４】
このように上記実施形態によれば、不揮発性半導体メモリへのデータ転送に要する時間を短縮できるメモリコントローラを提供できる。
【００９５】
また、上記実施形態は、以下の態様を含む。
【００９６】
（１）  メモリに接続可能であり、前記メモリを制御するメモリコントローラであって、
前記メモリに転送すべきデータが入力されるバッファと、
前記メモリに転送すべきデータから、所定データ長毎にＥＣＣパリティを生成するＥＣＣパリティ生成部と、
前記生成したＥＣＣパリティを前記所定データ長毎に付加して前記メモリに送るメモリインターフェースと、を備え、
前記ＥＣＣパリティ生成部は、前記メモリに転送すべきデータが前記所定データ長未満であるとき、前記所定データ長に満たない部分のデータを“０”とみなし、前記所定データ長未満のデータから前記ＥＣＣパリティを生成するメモリコントローラ。
【００９７】
（２）  （１）の態様に係るメモリコントローラにおいて、前記ＥＣＣ生成部は、前記所定データ長未満のデータを反転したデータからパリティを生成し、前記生成したパリティを反転させたパリティを前記メモリインターフェースに送り、
前記メモリインターフェースは、少なくとも前記所定データ長未満のデータに、前記反転させたパリティを付加して、前記メモリに送るメモリコントローラ。
【００９８】
（３）  （１）の態様に係るメモリコントローラにおいて、前記ＥＣＣ生成部は、前記所定データ長未満のデータからパリティを生成し、前記生成したパリティを前記メモリインターフェースに送り、
前記メモリインターフェースは、少なくとも前記所定データ長未満のデータに、前記パリティを付加し、
前記メモリインターフェースが出力した少なくとも前記所定データ長未満のデータ、及び前記パリティをそれぞれ反転させて前記メモリに送るメモリコントローラ。
【００９９】
（４）  （１）乃至（３）いずれか一つの態様に係るメモリコントローラにおいて、前記ＥＣＣパリティ生成部は、エラー訂正符号として巡回符号を用いるメモリコントローラ。
【０１００】
（５）  （４）の態様に係るメモリコントローラにおいて、前記巡回符号はリードソロモン符号であるメモリコントローラ。
【０１０１】
以上、この発明をいくつかの実施形態により説明したが、この発明は各実施形態に限定されるものではなく、その実施にあたっては発明の要旨を逸脱しない範囲で種々に変形することが可能である。
【０１０２】
また、各実施形態は単独で実施することが可能であるが、適宜組み合わせて実施することも可能である。
【０１０３】
また、各実施形態は種々の段階の発明を含んでおり、各実施形態において開示した複数の構成要件の適宜な組み合わせにより、種々の段階の発明を抽出することが可能である。
【０１０４】
また、上記実施形態は、この発明を、不揮発性半導体メモリをコントロールするコントローラに適用した例に基づき説明したが、この発明はメモリコントローラに限られるものではなく、このコントローラを内蔵した半導体集積回路装置、例えば、プロセッサ、システムＬＳＩ等もまた、この発明の範疇である。
【０１０５】
また、不揮発性半導体メモリの一例としてＮＡＮＤ型フラッシュメモリを例示したが、上記実施形態に係わるメモリコントローラによってコントロールされる不揮発性半導体メモリは、ＮＡＮＤ型フラッシュメモリに限られるものではなく、ＡＮＤ型、ＮＯＲ型等、ＮＡＮＤ型以外のフラッシュメモリでも良い。
【図面の簡単な説明】
【０１０６】
【図１】図１は所定データ長未満のデータからパリティＡを生成した状態を示す図
【図２】図２は所定データ長のデータからパリティＢを生成した状態を示す図
【図３】図３はパリティＡとパリティＢとの関係を示す図
【図４】図４は所定データ長を有するデータ列の構造を示す図
【図５】図５は参考例に係るデータ転送方式を示す図
【図６】図６は参考例に係るデータ転送方式を示す図
【図７】図７は参考例におけるページバッファのクリア状態とパリティを生成するデータ列との関係を示す図
【図８】図８は図７に示す関係の変形を示す図
【図９】図９は図８に示す関係の変形を示す図
【図１０】図１０はこの発明の第１実施形態に係るデータ転送方式の基本構成を示す図
【図１１】図１１はこの発明の第１実施形態に係るメモリコントローラが実行するデータ転送方式の第１例を示す図
【図１２】図１２はこの発明の第１実施形態に係るメモリコントローラが実行するデータ転送方式の第１例を示す図
【図１３】図１３はこの発明の第１実施形態に係るメモリコントローラが実行するデータ転送方式の第１例を示す図
【図１４】図１４はこの発明の第１実施形態に係るメモリコントローラが実行するデータ転送方式の第２例を示す図
【図１５】図１５はこの発明の第１実施形態に係るメモリコントローラが実行するデータ転送方式の第２例を示す図
【図１６】図１６はこの発明の第１実施形態に係るメモリコントローラが実行するデータ転送方式の第２例を示す図
【図１７】図１７Ａ〜図１７Ｃはこの発明を適用できるページフォーマットの一例を示す図
【図１８】図１８はこの発明の第２実施形態に係るメモリコントローラのハード構成（ライト処理時）の第１例を示すブロック図
【図１９】図１９はこの発明の第２実施形態に係るメモリコントローラのハード構成（リード処理時）の第１例を示すブロック図
【図２０】図２０はこの発明の第２実施形態に係るメモリコントローラのハード構成（ライト処理時）の第２例を示すブロック図
【図２１】図２１はこの発明の第２実施形態に係るメモリコントローラのハード構成（リード処理時）の第２例を示すブロック図
【図２２】図２２はメモリカードの一例を示す図
【図２３】図２３はメモリカードの信号割り当ての一例を示す図
【図２４】図２４はメモリカードのハード構成の一例を示すブロック図
【符号の説明】
【０１０７】
３００…メモリコントローラ、３…ピンポンバッファ（バッファ）、７…ＥＣＣコア（ＥＣＣパリティ生成部）、５…メモリインターフェース
【図１】
2008009943.tif 000003
【図２】
2008009943.tif 000004
【図３】
2008009943.tif 000005
【図４】
2008009943.tif 000006
【図５】
2008009943.tif 000007
【図６】
2008009943.tif 000008
【図７】
2008009943.tif 000009
【図８】
2008009943.tif 000010
【図９】
2008009943.tif 000011
【図１０】
2008009943.tif 000012
【図１１】
2008009943.tif 000013
【図１２】
2008009943.tif 000014
【図１３】
2008009943.tif 000015
【図１４】
2008009943.tif 000016
【図１５】
2008009943.tif 000017
【図１６】
2008009943.tif 000018
【図１７】
2008009943.tif 000019
【図１８】
2008009943.tif 000020
【図１９】
2008009943.tif 000021
【図２０】
2008009943.tif 000022
【図２１】
2008009943.tif 000023
【図２２】
2008009943.tif 000024
【図２３】
2008009943.tif 000025
【図２４】
2008009943.tif 000026