(57)【要約】【課題】消費電力を低減出来る半導体装置を提供すること。【解決手段】実施形態に係る半導体装置１は、データを保持可能なＮＡＮＤ型フラッシュメモリ２２と、データについての誤りを検出・訂正する誤り訂正部３８と、データ毎に、使用される誤り訂正方式についての情報を有するテーブル３５、３６とを具備する。誤り訂正部は、前記テーブル内の前記情報に従って、適用する誤り訂正方式を前記データ毎に選択する。【選択図】図９
2012084127.tif 000002
【特許請求の範囲】
【請求項１】
データを保持可能なＮＡＮＤ型フラッシュメモリと、
前記データについての誤りを検出・訂正する誤り訂正部と、
前記データ毎に、使用される誤り訂正方式についての情報を有するテーブルと
を具備し、前記誤り訂正部は、前記テーブル内の前記情報に従って、適用する誤り訂正方式を前記データ毎に選択する
ことを特徴とする半導体装置。
【請求項２】
オペレーティングシステム及び／またはアプリケーションを実行するプロセッサを更に備え、
前記誤り訂正方式についての情報は、前記オペレーティングシステム及び／またはアプリケーションにより与えられる
ことを特徴とする請求項１記載の半導体装置。
【請求項３】
前記誤り訂正部は、第１誤り訂正方式の第１回路と、第２誤り訂正方式の第２回路とを含み、
前記第１回路と前記第２回路は、誤り訂正能力が異なる
ことを特徴とする請求項１または２記載の半導体装置。
【請求項４】
前記ＮＡＮＤ型フラッシュメモリは、第１の単位で複数のメモリセルから一括してデータを読み出し、
書き込み時において、前記第１誤り訂正方式は、前記第１の単位よりも小さい第２の単位毎にパリティを生成し、前記第２誤り訂正方式は、前記第１の単位でパリティを生成する
ことを特徴とする請求項３記載の半導体装置。
【請求項５】
前記テーブルにおいて、第１のアクセス速度を必要とするデータについては前記第１誤り訂正方式が関連付けられ、
前記第１のアクセス速度より低速の第２のアクセス速度を必要とするデータについては前記第２誤り訂正方式が関連付けられる
ことを特徴とする請求項４記載の半導体装置。
【請求項６】
前記データを、前記ＮＡＮＤ型フラッシュメモリ内においてコピーする制御部を更に備え、
前記制御部は、前記テーブル内の前記誤り訂正方式に基づいて、コピー先となる領域を選択する
ことを特徴とする請求項１または２記載の半導体装置。
【請求項７】
前記誤り訂正部は、第１誤り訂正方式と、前記第１誤り訂正方式よりも誤り訂正能力の高く且つ低速の第２誤り訂正能力とを使用可能とされ、
前記制御部は、コピー対象となるデータが前記第１誤り訂正方式に関連付けられていた場合、第１誤り発生頻度を有する領域を前記コピー先の領域として選択し、
コピー対象となるデータが前記第２誤り訂正方式に関連付けられていた場合、前記第１誤り発生頻度よりも高い第２誤り発生頻度を有する領域を前記コピー先の領域として選択する
ことを特徴とする請求項６記載の半導体装置。
【請求項８】
コピー対象となるデータが前記第１誤り訂正方式に関連付けられ、且つ第１誤り発生頻度を有する領域を前記コピー先の領域として選択できない場合、
前記制御部は、前記第２誤り発生頻度を有する領域を前記コピー先の領域として選択すると共に、コピーの際に誤り訂正方式を前記第１誤り訂正方式から前記第２誤り訂正方式に変更する
ことを特徴とする請求項７記載の半導体装置。
【請求項９】
前記ＮＡＮＤ型フラッシュメモリは、ページ単位でデータの書き込み及び読み出しが可能であり、
前記制御部は、前記コピー対象となるデータが複数のページにある場合、該複数のページのデータを１ページに統合しつつ、統合した前記データにつき前記第２誤り訂正方式を適用して、前記コピー先の領域に書き込む
ことを特徴とする請求項８記載の半導体装置。
【請求項１０】
前記テーブルは更に、前記データ毎に誤り発生頻度に関する情報を保持し、
前記制御部は、前記誤り発生頻度が所定の閾値を超えた際に、前記データをコピーする
ことを特徴とする請求項６乃至９いずれか１項記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明の実施形態は、半導体装置に関する。
【背景技術】
【０００２】
従来、ストレージデバイスとして、ＮＡＮＤ型フラッシュメモリが広く用いられている。またＮＡＮＤ型フラッシュメモリでは、ＥＣＣ機能もまた、広く用いられている。しかしながら従来のＥＣＣ機能であると、消費電力が大きくなる場合がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−０５９４２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
消費電力を低減出来る半導体装置を提供する。
【課題を解決するための手段】
【０００５】
実施形態に係る半導体装置は、データを保持可能なＮＡＮＤ型フラッシュメモリと、前記データについての誤りを検出・訂正する誤り訂正部と、前記データ毎に、使用される誤り訂正方式についての情報を有するテーブルとを具備し、前記誤り訂正部は、前記テーブル内の前記情報に従って、適用する誤り訂正方式を前記データ毎に選択する。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態に係る半導体装置のブロック図。
【図２】第１実施形態に係るＮＡＮＤコントローラのブロック図。
【図３】第１実施形態に係るカラーリングテーブルの模式図。
【図４】第１実施形態に係るデータの書き込み方法のフローチャート。
【図５】第１実施形態に係るアドレス変換テーブルの模式図。
【図６】第１実施形態に係るＥＣＣ部のブロック図。
【図７】第１実施形態に係るページデータの模式図。
【図８】第１実施形態に係るページデータの模式図。
【図９】第１実施形態に係るデータの読み出し方法のフローチャート。
【図１０】第１実施形態に係るデータの書き込み方法のフローチャート。
【図１１】第２実施形態に係るＥＣＣ部のブロック図。
【図１２】第２実施形態に係るページデータの模式図。
【図１３】第２実施形態に係るデータの読み出し方法のフローチャート。
【図１４】第２実施形態に係るデータの書き込み方法のフローチャート。
【図１５】第３実施形態に係るＥＣＣ部のブロック図。
【図１６】第３実施形態に係る半導体装置のブロック図。
【図１７】第４実施形態に係るＮＡＮＤ型フラッシュメモリのブロック図。
【図１８】第４実施形態に係るアドレス変換テーブルの模式図。
【図１９】第４実施形態に係るデータコピー方法のフローチャート。
【図２０】第４実施形態に係るデータコピー方法を示す概念図。
【図２１】第４実施形態の変形例に係るデータコピー方法を示す概念図。
【図２２】第５実施形態に係る記録装置のブロック図。
【図２３】第５実施形態に係るドライブ制御回路のブロック図。
【図２４】第５実施形態に係るパーソナルコンピュータの斜視外観図。
【発明を実施するための形態】
【０００７】
以下、実施形態を、図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【０００８】
［第１実施形態］  
第１実施形態に係る半導体装置について、以下説明する。
【０００９】
１．半導体装置の構成について  
まず、本実施形態に係る半導体装置の構成につき、図１を用いて説明する。図１は、本実施形態に係る半導体装置のブロック図である。
【００１０】
本実施形態に係る半導体装置は、プロセッサと、メインメモリとして使用されるＮＡＮＤ型フラッシュメモリと、このＮＡＮＤ型フラッシュメモリへのアクセスを管理するメモリ管理装置とを備えた情報処理システムである。
【００１１】
図１に示すように半導体装置１は、大まかには情報処理装置１０及び記憶装置２０を備えており、両者は例えばバス等により互いに通信可能に接続されている。情報処理装置１０及び記憶装置２０は、共に同一の半導体基板上に形成されても良いし、別個のチップとして形成されても良い。また記憶装置２０は複数の半導体メモリを備え、本実施形態では揮発性半導体メモリ２１及び不揮発性半導体メモリ２２を含む。
【００１２】
１．１  情報処理装置１０の構成について  
まず、情報処理装置１０の構成について説明する。図１に示すように情報処理装置１０は、複数のプロセッサ１１、２次キャッシュメモリ１２、バス１３、及びメモリ管理装置１４を備え、例えばＳｏＣ（system on chip）により形成される。
【００１３】
プロセッサ１１の各々は、１次キャッシュメモリ１６及びＭＭＵ（memory management unit）１５を備える。プロセッサ１１としては、例えばＣＰＵ（Central Processing Unit）が用いられるが、ＭＰＵ（Micro Processor Unit）、ＧＰＵ（Graphic Processor Unit）などのような他の処理ユニットが用いられてもよい。また図１において、プロセッサ１１の数は４つであるが、１つ以上であればよい。またプロセッサ１１は、２次キャッシュメモリ１２を共有し、バス１３を介してメモリ管理装置１４と電気的に接続される。そして、メモリ管理装置１４を介して記憶装置２０にアクセスする。更にプロセッサ１１は、記憶装置２０からＯＳを読み出しこれを実行し、更に記憶装置２０等からアプリケーションを読み出し、これをＯＳ上で実行する。
【００１４】
メモリ管理装置１４は、記憶装置２０内の揮発性半導体メモリ２１及び不揮発性半導体メモリ２２と電気的に接続されている。そしてメモリ管理装置１４は、プロセッサ１１の要求に応じて記憶装置２０へアクセスし、データを記憶装置２０から読み出し、またはデータを記憶装置２０へ書き込む。またメモリ管理装置１４は、プロセッサ１１と非同期に動作可能であり、プロセッサ１１での処理実行中に、不揮発性半導体メモリに対してウェアレベリング（wear leveling）、ガーベージコレクション（garbage collection）、及びコンパクション（compaction）などの処理を実行出来る。
【００１５】
１．２  記憶装置２０の構成について  
次に、引き続き図１を参照して、記憶装置２０の構成について説明する。前述の通り、記憶装置２０は、揮発性半導体メモリ２１及び複数の不揮発性半導体メモリ２２を備えている。
【００１６】
これらの揮発性半導体メモリ２１及び不揮発性半導体メモリ２２は、プロセッサ１１のメインメモリとして使用される。本実施形態では、不揮発性半導体メモリ２２に十分なメモリ量が確保され、不揮発性半導体メモリ２２のメモリ容量は揮発性半導体メモリ２１よりも大きい。そして、揮発性半導体メモリ２１には、例えば、最近アクセスされたデータ、使用頻度の高いデータなどのアクセスされる可能性の高いデータが不揮発性半導体メモリ２２からキャッシュされる。プロセッサ１１が揮発性半導体メモリ２１にアクセスした際に、揮発性半導体メモリ２１にアクセス対象データが存在しない場合、不揮発性半導体メモリ２２から揮発性半導体メモリ２１に、必要なデータが転送される。このように、揮発性半導体メモリ２１と不揮発性半導体メモリ２２とを組み合わせて使用することで、揮発性半導体メモリ２１のメモリ容量より大きいメモリ空間がメインメモリとして使用可能となる。
【００１７】
本実施形態において揮発性半導体メモリ２１は、例えばＤＲＡＭ（Dynamic Random Access Memory）である。しかしながら揮発性半導体メモリ２１としては、ＤＲＡＭに代えて、ＦＰＭ−ＤＲＡＭ（Fast Page Mode DRAM）、ＥＤＯ−ＤＲＡＭ（Extended Data Out DRAM）、またはＳＤＲＡＭ（Synchronous DRAM）などのような、コンピュータにおいてメインメモリとして利用されるメモリを用いてもよい。また、ＤＲＡＭ程度の高速ランダムアクセスが可能であり、アクセス可能上限回数に実質的な制限がないのであれば、揮発性半導体メモリ２１に代えて、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）などの不揮発性ランダムアクセスメモリが用いられてもよい。そして揮発性半導体メモリ２１は、不揮発性半導体メモリ２２よりも小容量（例えば１２８Ｍバイト〜４Ｇバイトなど)だが高速にアクセス可能である。
【００１８】
また本実施形態において不揮発性半導体メモリ２２は、例えばＮＡＮＤ型フラッシュメモリである。従って以下の説明では、不揮発性半導体メモリ２２をＮＡＮＤ型フラッシュメモリ２２と呼ぶことがある。しかしながら不揮発性半導体メモリ２２は、例えばＮＯＲ型フラッシュメモリなど、他の不揮発性半導体メモリであっても良い。不揮発性半導体メモリ２２は、揮発性半導体メモリ２１よりも大容量(例えば３２Ｇバイト〜５１２Ｇバイトなど)だがアクセス時間が長い。
【００１９】
本実施形態のように不揮発性半導体メモリ２２がＮＡＮＤ型フラッシュメモリの場合、書き込みと読み出しとはページ単位で実行される。消去は複数ページを含むブロック単位で行われる。
【００２０】
１．３  メモリ管理装置１４の構成について  
次に、上記メモリ管理装置１４の構成について、特にＮＡＮＤ型フラッシュメモリ２２を管理するための構成に着目して、図２を用いて説明する。図２は、メモリ管理装置１４のブロック図である。
【００２１】
１．３．１  メモリ管理装置１４の全体構成について
図２に示すようにメモリ管理装置１４は、ＮＡＮＤ処理部３０、記憶部３１、及びＮＡＮＤコントローラ３３を備えている。
【００２２】
記憶部３１は、ＤＲＡＭ等の揮発性半導体メモリやＮＯＲ型フラッシュメモリ等の不揮発性半導体メモリ等であって良い。そして記憶部３１は、カラーリングテーブル３５及びアドレス変換テーブル３６を保持する。カラーリングテーブル３５は、データ毎に、種々の基準を基にして当該データを特徴付ける情報（これをカラーリング情報と呼ぶ）を保持する。またアドレス変換テーブル３６は、プロセッサ１１からメモリ管理装置１４へのアクセスに用いられるアドレス（以下、これをＣＰＵ物理アドレスと呼ぶ）と、ＮＡＮＤ型フラッシュメモリ２２内においてＣＰＵ物理アドレスに対応する領域のアドレス（以下、これをＮＡＮＤ物理アドレスと呼ぶ）との関係を保持する。カラーリングテーブル３５及びアドレス変換テーブル３６内の情報は、プロセッサ１１によって実行されるＯＳやアプリケーションから与えられても良いし、ＮＡＮＤ処理部３０から与えられても良い。なお、カラーリングテーブル３５及びアドレス変換テーブル３６については、後に詳細に説明する。
【００２３】
ＮＡＮＤ処理部３０は、プロセッサ１１からのＮＡＮＤ型フラッシュメモリ２２へのアクセス（データの書き込み／読み出し／消去）を受け付ける。そして、アクセスに応じた処理を実行するよう、ＮＡＮＤコントローラ３３に命令する。この際、ＮＡＮＤ処理部３０は、アドレス変換テーブル３６を参照して、プロセッサ１１から受信したＣＰＵ物理アドレスをＮＡＮＤ物理アドレスに変換して、これをＮＡＮＤコントローラ３３に供給する。またＮＡＮＤ処理部３０は、プロセッサ１１からの命令に応じて、及び／またはプロセッサ１１から独立して、ＮＡＮＤ型フラッシュメモリ２２におけるウェアレベリング、ガーベージコレクション、及びコンパクションの必要性を判断し、必要であればこれを実行するようＮＡＮＤコントローラ３３に命令する。また、この結果に応じて、カラーリングテーブル３５やアドレス変換テーブル３６を更新する。ＮＡＮＤ処理部３０は、上記処理を実行するためのソフトウェアによって実現されても良いし、ハードウェアによって実現されても良い。ソフトウェアによって実現される場合、このソフトウェアはＮＡＮＤ型フラッシュメモリ２２内に保持されていても良い。そして例えば電源投入時などにおいて、ＮＡＮＤ型フラッシュメモリ２２からこのソフトウェアがＮＡＮＤ処理部３０に読み出されて実行されるようにしても良い。
【００２４】
ＮＡＮＤコントローラ３３は、ＮＡＮＤ処理部３０の命令に応答して、ＮＡＮＤ型フラッシュメモリ２２へのアクセスを司る。すなわちＮＡＮＤコントローラ３３は、コマンド／アドレス発行部３７及びＥＣＣ（error checking and correcting）部３８を備えている。
【００２５】
コマンド／アドレス発行部３７は、ＮＡＮＤ処理部３０からの命令に応じて、データの書き込み／読み出し／消去コマンドを発行し、これをＮＡＮＤ物理アドレスと共にＮＡＮＤ型フラッシュメモリ２２へ出力する。これらのコマンド及びアドレスは、ＮＡＮＤ型フラッシュメモリ２２全体の動作を司るシーケンサに与えられる。そしてシーケンサは、このコマンドを受信することで起動し、コマンドに応じた処理を開始する。
【００２６】
ＥＣＣ部３８は、ＮＡＮＤ型フラッシュメモリ２２から読み出したデータ、及びＮＡＮＤ型フラッシュメモリ２２に書き込むべきデータにつき、誤り訂正処理（ＥＣＣ処理と呼ぶことがある）を行う。すなわちＥＣＣ部３８は、データの読み出し時には、ＮＡＮＤ型フラッシュメモリ２２から読み出したデータ内のパリティからシンドロームを生成し、これにより誤り検出を行う。そして誤りが発見された際には、これを訂正する。そして、訂正後のデータが、例えば揮発性半導体メモリ２１やプロセッサ１１に供給される。他方、データの書き込み時には、例えばプロセッサ１１や揮発性半導体メモリ２１からデータを受信する。そして、受信したデータについてパリティを生成し、受信したデータにパリティを付加して、これを書き込みデータとしてＮＡＮＤ型フラッシュメモリ２２のページバッファに転送する。
【００２７】
なお本実施形態に係るＥＣＣ部３８は、複数の方式により誤り訂正が可能である。各データに対していずれの方式の誤り訂正が適用されるかは、少なくともＯＳやアプリケーションが把握しており、またその情報はカラーリングテーブル３５及び／またはアドレス変換テーブル３６に保持されている。従ってＮＡＮＤ処理部３０は、データの書き込み及び読み出しアクセスを受信した際には、カラーリングテーブル３５及び／またはアドレス変換テーブル３６を参照し、適用すべき誤り訂正方式を選択して、これをＥＣＣ部３８に通知する。
【００２８】
１．３．２  カラーリングテーブル３５について  
次に、上記カラーリングテーブル３５の詳細について説明する。本実施形態では、データ毎にカラーリング情報が付与される。カラーリング情報が付与されるデータの単位は、例えば、読み出し及び書き込みの最小の単位である。例えば、読み出し及び書き込みの最小の単位は、ＮＡＮＤ型フラッシュメモリ２２のページサイズである。以下において、カラーリングテーブル３５によりカラーリング情報が対応付けられるデータのサイズはページサイズであるとして説明するが、これに限定されるものではない。
【００２９】
図３は、カラーリングテーブル３５の模式図である。カラーリングテーブル３５は、データ毎にカラーリング情報を対応付け、エントリ単位でカラーリング情報を格納する。カラーリングテーブル３５の各エントリには、インデックスが付されている。インデックスとは、ＣＰＵ物理アドレスを基に生成される値である。従ってＮＡＮＤ処理部３０は、プロセッサ１１からアクセスが為された際には、受信したＣＰＵ物理アドレスに対応するインデックスにより管理されているエントリを参照することで、当該データのカラーリング情報を取得出来る。
【００３０】
カラーリング情報は、個々のデータに特有の情報であり、静的カラー情報と、動的カラー情報とを含む。静的カラー情報は、カラーリング情報が付与される当該データの特性に基づいて生成される情報であり、例えば当該データの記憶装置２０上の配置（書き込み）領域を決定するヒントとなる情報を含む。動的カラー情報は、データの読み出しと書き込みの回数と頻度の少なくとも一方を含む情報である。
【００３１】
図３に示すように静的カラー情報は、当該データの重要度、静的書き込み頻度、静的読み出し頻度、データ寿命、ＥＣＣ情報、及びデータ生成時刻を含む。以下、それぞれについて説明する。  
(i)重要度とは、データの種類等に基づいて、当該データの重要性を推測して設定される値である。重要度は、例えば、ファイルシステムに保持されるファイルの特性、またはプログラムに一次的に使用される領域（例えばスタック領域、ヒープ領域など）の特性により推測される。  
(ii)静的書き込み頻度とは、データの種類等に基づいて、当該データが書き込まれる頻度を推測して設定される値である。例えば、静的書き込み頻度は、書き込み頻度が高いと推測されるデータほど、高い値が設定される。  
(iii)静的読み出し頻度とは、データの種類等に基づいて、当該データが読み出される頻度を推測して設定される値である。例えば、静的読み出し頻度は、読み出し頻度が高いと推測されるデータほど、高い値が設定される。  
(iv)データ寿命とは、データの種類等に基づいて、当該データが消去されずにデータとして使用される期間（データの寿命）を推測して設定される値である。  
(v)ＥＣＣ情報は、データの種類等に基づいて決定され、ＥＣＣ部３８で使用すべき誤り訂正方式に関する情報である。例えば、高速に読み出されることが求められるデータの場合、例えばＯＳは、当該データについては高速で誤り訂正可能な方式を使用するよう決定し、その旨がＥＣＣ情報としてカラーリングテーブル３５に書き込まれる。
【００３２】
上記の静的カラー情報は、データを生成するプログラム（プロセス）により、静的に、予め決められた値である。また、ＯＳが、データのファイル拡張子またはファイルヘッダ等に基づいて、静的カラー情報を予測してもよい。そして、プログラムやＯＳによって、静的カラー情報がカラーリングテーブル３５に記録される。
【００３３】
次に動的カラー情報について説明する。動的カラー情報は、データの書き込み回数及び読み出し回数を含む。ここで、データの書き込み回数とは、当該データが揮発性半導体メモリ２１に書き込まれた回数である。データの読み出し回数とは、当該データが記憶装置２０から読み出された回数である。
【００３４】
これらの動的カラー情報は、例えばＮＡＮＤ処理部３０によって管理される。すなわちＮＡＮＤ処理部３０は、データが書き込まれる度に当該データの書き込み回数をインクリメントし、データが読み出される度に当該データの読み出し回数をインクリメントする。
【００３５】
上記の重要度、静的書き込み頻度、静的読み出し頻度、及びデータ寿命は、例えば記憶装置２０のうちのいずれの領域にデータを格納すべきかを決定するために使用され得る。このような例を、図４のフローチャートを参照して説明する。図４は、記憶装置２０へのデータ格納時の処理の一例を示すフローチャートである。
【００３６】
図示するようにＮＡＮＤ処理部３０はまず、書き込み要求が発生した場合、書き込みデータに対応するカラーリング情報を参照する（ステップＳ１０）。そしてＮＡＮＤ処理部３０は、カラーリング情報の「データ寿命」を参照し、書き込み対象データのデータ寿命を判断する（ステップＳ１１）。
【００３７】
書き込み対象データのデータ寿命が短いと判断された場合（ステップＳ１２、ＹＥＳ）には、ＮＡＮＤ処理部３０は、書き込み対象データを格納すべきメモリ領域として揮発性半導体メモリ２１を選択し（ステップＳ１３）、決定する（ステップＳ１４）。
【００３８】
ステップＳ１１においてデータ寿命が長いと判断された場合（ステップＳ１２、ＮＯ）には、ＮＡＮＤ処理部３０は、書き込み対象データのカラーリング情報の「重要度」を参照し、書き込み対象データの重要度を判断する（ステップＳ１４）。
【００３９】
ステップＳ１４において書き込み対象データの重要度が高いと判断された場合（ステップＳ１５、ＹＥＳ）には、ＮＡＮＤ処理部３０は、書き込み対象データを格納すべきメモリ領域として、耐久性（信頼性）の高い不揮発性半導体メモリ２２を選択する（ステップＳ１６）。耐久性の高い不揮発性半導体メモリ２２は、例えば各メモリセルが２値（１ビット）データを保持するＮＡＮＤ型フラッシュメモリ２２（以下、“ＳＬＣ（single level cell）のＮＡＮＤ型フラッシュメモリ２２”と呼ぶ）である。さらにＮＡＮＤ処理部３０は、書き込み対象データのカラーリング情報に基づき、書き込み対象データを揮発性半導体メモリ２１にキャッシュするか否か（カラーリング情報によるキャッシュ方式）の判断を行う（ステップＳ１７）。そして、書き込み対象データを格納するメモリ領域を、ＳＬＣのＮＡＮＤ型フラッシュメモリ２２に決定する（ステップＳ１２）。
【００４０】
ステップＳ１４において重要度が低いと判断された場合（ステップＳ１５、ＮＯ）には、ＮＡＮＤ処理部３０は、書き込み対象データを格納すべきメモリ領域として、耐久性の低い不揮発性半導体メモリ２２を選択する（ステップＳ１８）。耐久性の低い不揮発性半導体メモリ２２は、例えば各メモリセルが２値を超える値（２ビット以上）のデータを保持するＮＡＮＤ型フラッシュメモリ２２（以下、“ＭＬＣ（multi-level cell）のＮＡＮＤ型フラッシュメモリ２２”と呼ぶ）である。さらにＮＡＮＤ処理部３０は、書き込み対象データのカラーリング情報（動的カラー情報、静的カラー情報）により、書き込み対象データの読み出し頻度、書き込み頻度の判断を行う（ステップＳ１９）。
【００４１】
ステップＳ１９において書き込み対象データの読み出し頻度、書き込み頻度が高いと判断された場合（ステップＳ２０、ＹＥＳ）には、ＮＡＮＤ処理部３０は、書き込み対象データを格納すべきメモリ領域として、ＳＬＣのＮＡＮＤ型フラッシュメモリ２２を選択して（ステップＳ１６）、ステップＳ１７に進む。
【００４２】
他方、ステップＳ１９において、読み出し頻度、書き込み頻度が低いと判断された場合（ステップＳ２０、ＮＯ）には、ＭＬＣのＮＡＮＤ型フラッシュメモリ２２を選択したまま、ステップＳ１７に進む。
【００４３】
以上のように、カラーリング情報は、例えば書き込みデータをいずれのメモリ領域に格納すべきかを決定するために用いることが出来る。但し、図４のフローチャートは、その決定方法の一例を示すに過ぎず、その他の方法を用いても良い。例えば、データ生成時刻及び現在時刻を用いて、動的な書き込み頻度及び読み出し頻度を求め、これに応じて決定しても良い。
【００４４】
１．３．３  アドレス変換テーブル３８について  
次に、アドレス変換テーブル３８について説明する。図５は、本実施形態に係るアドレス変換テーブル３８の模式図である。
【００４５】
図示するようにアドレス変換テーブル３８では、ＣＰＵ物理アドレスの各々につき、対応するＮＡＮＤ物理アドレス、及び有効ビットが、テーブル形式で管理される。
【００４６】
ここで、ＣＰＵ物理アドレスとＮＡＮＤ物理アドレスについて簡単に説明する。前述の通り、ＣＰＵ物理アドレスとは、プロセッサ１１からメモリ管理装置１４にアクセスが為される際に使用されるアドレスであり、プロセッサ１１がある特定のデータを指定するために使用される。
【００４７】
これに対してＮＡＮＤ物理アドレスは、ＮＡＮＤ型フラッシュメモリ２２内における物理的な領域のアドレスである。ＮＡＮＤ型フラッシュメモリ２２に書き込まれたデータは、ＮＡＮＤ型フラッシュメモリ２２内の物理領域を転々と移動する。すなわち、あるＣＰＵ物理アドレスＡＤＤＣＰＵ１に対応するデータが最初に書き込まれた領域のＮＡＮＤ物理アドレスがＡＤＤＮＡＮＤ１であったとすると、このデータはその後、ＡＤＤＮＡＮＤ２の領域に移動し、次にＡＤＤＮＡＮＤ３の領域に移動し、更にＡＤＤＮＡＮＤ４の領域に移動する。つまり、ＮＡＮＤ物理アドレスは、ＡＤＤＮＡＮＤ１から、ＡＤＤＮＡＮＤ２、ＡＤＤＮＡＮＤ３、ＡＤＤＮＡＮＤ４、…、と、時間と共に変化していく。この理由は、ＮＡＮＤ型フラッシュメモリではデータの上書きが許されていないため、データの更新時には別の物理領域に更新データを書き込まなければならないことや、ウェアレベリングやガーベージコレクションにより、定期的にデータの移動があること、などが挙げられる。
【００４８】
このような理由により、ＣＰＵ物理アドレスとＮＡＮＤ物理アドレスとの関係を常に把握しておく必要があり、そのためにアドレス変換テーブル３６が設けられる。
【００４９】
アドレス変換テーブル３６では、ＣＰＵ物理アドレス毎にエントリが割り当てられる。そして、各エントリに、対応するＮＡＮＤ物理アドレス及び有効ビットが格納される。有効ビットは、対応するエントリが有効であるか否かを示す情報である。有効ビットが“１”の際、当該エントリは有効とされ、“０”の際には無効とされる。有効ビットの初期値は“０”である。そして有効ビットが“０”の際であるエントリは、ＣＰＵ物理アドレスのマッピングされていないエントリであるか、またはＣＰＵ物理アドレスがマッピングされたがその後消去されたエントリである。有効ビットが“１”であるエントリには、ＣＰＵ物理アドレスがマッピングされており、揮発性半導体メモリ２１とＮＡＮＤ型フラッシュメモリ２２の少なくとも一方に、当該ＣＰＵ物理アドレスに対応する領域が存在する。
【００５０】
なお、アドレス変換テーブル３６の各エントリは、カラーリングテーブル３６と同様に、ＮＡＮＤ型フラッシュメモリ２２のページ単位で割り当てられても良く、以下ではこの場合を例に説明を続ける。しかし、勿論、この場合に限らず、種々のサイズ毎にエントリを割り当てることが出来る。
【００５１】
２．半導体装置１の動作について  
次に、上記構成の半導体装置１の動作について、データの読み出し時及び書き込み時におけるメモリ管理装置１４の動作について、以下説明する。
【００５２】
２．１  メモリ管理装置１４の動作原理について  
まず、メモリ管理装置１４の動作の基本原理について、データの読み出し時及び書き込み時についてそれぞれ説明する。
【００５３】
２．１．１  データの読み出し時について  
データの読み出し時においては、ＮＡＮＤ処理部３０は、まずプロセッサ１１から読み出しコマンドとＣＰＵ物理アドレスＡＤＤＣＰＵ１を受信する。するとＮＡＮＤ処理部３０は、記憶部３１内のアドレス変換テーブル３６を参照して、ＡＤＤＣＰＵ１に対応するＮＡＮＤ物理アドレスＡＤＤＮＡＮＤ１及びＥＣＣ情報を把握する。
【００５４】
次にＮＡＮＤ処理部３０は、ＮＡＮＤコントローラ３３のコマンド／アドレス発行部３７にＡＤＤＮＡＮＤ１を転送すると共に、読み出しコマンドを発行するよう命令する。これに応答してコマンド／アドレス発行部３７は、ＮＡＮＤ型フラッシュメモリ２２のシーケンサに対して、読み出しコマンド及びＡＤＤＮＡＮＤ１を出力する。
【００５５】
またＮＡＮＤ処理部３０は、カラーリングテーブル３５を参照して得たＥＣＣ情報に基づき、これに対応する誤り訂正方式を選択するよう、ＥＣＣ部３８に命令する。その結果、ＥＣＣ部３８では、選択された誤り訂正方式による処理を行う回路がイネーブルとされ、その他の方式による処理を行う回路はディセーブルとされる。
【００５６】
ＮＡＮＤ型フラッシュメモリ１１では、読み出しコマンドに応答して、ＡＤＤＮＡＮＤ１に対応するページデータＤＲＥＡＤがページバッファに読み出され、更にＥＣＣ部３８に転送される。するとＥＣＣ部３８では、選択された誤り訂正方式に従って、ＤＲＥＡＤにつき誤り検出及び誤り訂正を実行する。
【００５７】
２．１．２  データの書き込み時について  
データの書き込み時は、上記読み出し時と逆の処理を行う。すなわちＮＡＮＤ処理部３０は、まずプロセッサ１１から書き込みコマンド、データＤＷＲＩＴＥ、及びＣＰＵ物理アドレスＡＤＤＣＰＵ２を受信する。するとＮＡＮＤ処理部３０は、記憶部３１内のアドレス変換テーブル３６を参照して、ＡＤＤＣＰＵ２に対応するＮＡＮＤ物理アドレスＡＤＤＮＡＮＤ２及びＥＣＣ情報を把握する。
【００５８】
次にＮＡＮＤ処理部３０は、カラーリングテーブル３５を参照して得たＥＣＣ情報に基づき、これに対応する誤り訂正方式を選択するよう、ＥＣＣ部３８に命令する。その結果、ＥＣＣ部３８では、選択された誤り訂正方式による処理を行う回路がイネーブルとされ、その他の方式のための回路はディセーブルとされる。
【００５９】
そしてＥＣＣ部３８は、ＤＷＲＩＴＥにつき、選択された誤り訂正方式に従って誤り訂正符号（パリティ）を生成し、データＤＷＲＩＴＥ及び誤り訂正符号を、ＮＡＮＤ型フラッシュメモリ１１のページバッファに転送する。
【００６０】
またＮＡＮＤ処理部３０は、ＮＡＮＤコントローラ３３のコマンド／アドレス発行部３７にＡＤＤＮＡＮＤ２を転送すると共に、書き込みコマンドを発行するよう命令する。これに応答してコマンド／アドレス発行部３７は、ＮＡＮＤ型フラッシュメモリ２２のシーケンサに対して、書き込みコマンド及びＡＤＤＮＡＮＤ１を出力する。
【００６１】
ＮＡＮＤ型フラッシュメモリ１１では、書き込みコマンドに応答して、ページバッファに転送されたデータＤＷＲＩＴＥ及び誤り訂正符号を、ＡＤＤＮＡＮＤ１に対応する領域に書き込む。
【００６２】
２．２  ＥＣＣ部３８と動作の具体例  
次に、上記構成及び動作の具体例について、特にＥＣＣ部３８に着目して、以下説明する。
【００６３】
２．２．１  ＥＣＣ部３８の構成について  
図６は、本例に係るＥＣＣ部３８のブロック図である。なお、図６に示す矢印はデータの読み出し時における信号の流れを示しているが、書き込み時には逆になる。
【００６４】
図示するようにＥＣＣ部３８は、ＣＲＣ（cyclic redundancy check）部４０、第１ＥＣＣ回路４１、第２ＥＣＣ回路４２、及び選択回路４３を備えている。
【００６５】
ＣＲＣ部４０は、データの読み出し時には、データに含まれるＣＲＣ方式に従った検査データをチェックする。またデータの書き込み時には、書き込みデータにつき、ＣＲＣ方式に従った検査データを生成する。
【００６６】
第１ＥＣＣ回路４１は、信号Ｅｎｂ１によってイネーブルとされ、第１誤り訂正方式に従って、誤り検出及び誤り訂正を実行する。すなわち、データの書き込み時には、第１誤り訂正方式に従って第１パリティＰ１を生成する。他方、データの読み出し時には、第１誤り訂正方式に従ってシンドロームを生成し、誤りの検出及び訂正を行う。第１誤り訂正方式は、第１の誤り訂正能力を有する。
【００６７】
第２ＥＣＣ回路４２は、信号Ｅｎｂ２によってイネーブルとされ、第２誤り訂正方式に従って、誤り検出及び誤り訂正を実行する。すなわち、データの書き込み時には、第２誤り訂正方式に従って第２パリティＰ２を生成する。他方、データの読み出し時には、第２誤り訂正方式に従ってシンドロームを生成し、誤りの検出及び訂正を行う。第２誤り訂正方式は、第２の誤り訂正能力を有する。信号Ｅｎｂ１、Ｅｎｂ２は、例えばＮＡＮＤ処理部３０から与えられる。
【００６８】
選択回路４３は、例えばＮＡＮＤ処理部３０の命令に従って、第１ＥＣＣ回路４１の出力と第２ＥＣＣ回路４２の出力とのいずれかを選択する。
【００６９】
図７は、第１誤り訂正方式が選択された際に生成されるページデータの概念図である。図示するように、プロセッサ１１（または揮発性半導体メモリ２１）から与えられる書き込みデータ（これをメインデータＤmainと呼ぶ）は、Ｎ個（Ｎは２以上の自然数）に分割される。分割されたＮ個のデータを、それぞれメインデータＤ１〜ＤＮと呼ぶ。そして、Ｎ個のメインデータＤ１〜ＤＮにつき、第１ＥＣＣ回路４１が第１パリティＰ１〜ＰＮをそれぞれ生成し、またＣＲＣ部４０が検査データＣＲＣ１〜ＣＲＣＮをそれぞれ生成する。なお、メインデータＤｉ、第１パリティＰｉ、及び検査データＣＲＣｉ（ｉは１〜Ｎのいずれか）をまとめて第ｉセクタと呼ぶことにする。
【００７０】
図８は、第２誤り訂正方式が選択された際に生成されるページデータの概念図である。図示するように、第２ＥＣＣ回路４２は、メインデータＤmainにつき第２パリティＰ２を生成し、これをメインデータＤmainの後ろに付加する。
【００７１】
なお、本例においては、第２の誤り訂正能力は、第１の誤り訂正能力よりも優れたものとされ、誤り訂正能力は例えば以下のように定義される。すなわち、  
誤り訂正能力＝誤り訂正可能ビット数／符号長  
符号長＝メインデータビット数＋パリティビット数  
である。但し、第１の誤り訂正能力についてのメインデータビット数は、メインデータＤｉのビット数であり、第２の誤り訂正能力についてのメインデータビット数は、メインデータＤmainのビット数（＝Ｄ１〜ＤＮのビット数の和）である。
【００７２】
更に、第１の誤り訂正方式ではＥＣＣ処理がセクタ単位で行われるため、第１ＥＣＣ回路４１の回路規模は第２ＥＣＣ回路４２の回路規模よりも小さい。そして第１ＥＣＣ回路４１の処理速度は、第２ＥＣＣ回路４２の処理速度よりも高速である。従って、ＯＳまたはアプリケーションは、高速なアクセスが必要とされるデータについては第１誤り訂正方式（図７に示すデータ形式）を適用し、高速なアクセスが必要とされないデータについては第２誤り訂正方式（図８に示すデータ形式）を適用する。
【００７３】
２．２．２  データの読み出し時の動作について  
次に、データの読み出し時の動作につき、図９を用いて説明する。図９は、読み出し時のフローチャートである。
【００７４】
先に説明した通り、コマンド／アドレス発行部３７が読み出しコマンドを発行すると（ステップＳ３０）、ＮＡＮＤ型フラッシュメモリ２２からデータＤＲＥＡＤがページ単位で読み出される（ステップＳ３１）。データＤＲＥＡＤは、第１誤り訂正方式を使用していれば、図７に示す構造を有し、第２誤り訂正方式を使用していれば、図８に示す構造を有している。
【００７５】
またＮＡＮＤ処理部３０は、カラーリングテーブル３５を参照して、当該データＤＲＥＡＤについてのＥＣＣ情報を確認する（ステップＳ３２）。その結果、第１誤り訂正方式で無ければ、すなわち第２誤り訂正方式が使用されていれば（ステップＳ３３、ＮＯ）、ＮＡＮＤ処理部３０は信号Ｅｎｂ２＝“Ｈ”として、第２ＥＣＣ回路４２を活性化する（ステップＳ３４）。また信号Ｅｎｂ１＝“Ｌ”として、第１ＥＣＣ回路４１を非活性化する（ステップＳ３５）。そして、第２ＥＣＣ回路４２が、データＤＲＥＡＤにおける第２パリティＰ２を用いてＥＣＣ処理を実行する（ステップＳ３６）。その後、選択回路４３は、第２ＥＣＣ回路４２で処理されたデータを選択して、プロセッサ１１や揮発性半導体メモリ２１へ出力する。
【００７６】
他方、ステップＳ３２において第１誤り訂正方式であれば（ステップＳ３３、ＹＥＳ）、ＮＡＮＤ処理部３０は、信号Ｅｎｂ１＝“Ｈ”として第１ＥＣＣ回路４１を活性化し（ステップＳ３７）、信号Ｅｎｂ２＝“Ｌ”として第２ＥＣＣ回路４２を非活性化する（ステップＳ３８）。そしてＣＲＣ部４０が、検査データＣＲＣｉをチェックする（ステップＳ３９）。そしてステップＳ３９の結果、誤りが検出されなければ（ステップＳ４０、ＹＥＳ）、第１ＥＣＣ回路４１が、第ｉセクタにつき、ＥＣＣ処理を実行する（ステップＳ４１）。選択回路４３は、第１ＥＣＣ回路４１で処理されたデータを選択して、プロセッサ１１や揮発性半導体メモリ２１へ出力する。ステップＳ３９〜Ｓ４１の処理は、第１〜第Ｎセクタの全てにつき、順次実行される。但し、ＣＲＣエラーが発生した場合には（ステップＳ４０、ＮＯ）、データの読み出しはエラーとなって、処理は終了する。
【００７７】
２．２．３  データの書き込み時の動作について  
次に、データの書き込み時の動作につき、図１０を用いて説明する。図１０は、書き込み時のフローチャートである。
【００７８】
先に説明した通り、メモリ管理装置１４は、プロセッサ１１から書き込みデータＤＷＲＩＴＥを受信する（ステップＳ５０）。データＤＷＲＩＴＥは、図７におけるメインデータＤ１〜ＤＮの集合、言い換えれば図８におけるメインデータＤmainに相当する。
【００７９】
またＮＡＮＤ処理部３０は、カラーリングテーブル３５を参照して、当該データＤＷＲＩＴＥについてのＥＣＣ情報を確認する（ステップＳ５１）。その結果、第１誤り訂正方式であれば（ステップＳ５２、ＹＥＳ）、ＣＲＣ部４０がメインデータＤｉにつき、検査データＣＲＣｉを生成する（ステップＳ５３）。なお、ｉの初期値は“１”とする。引き続きＮＡＮＤ処理部３０は、信号Ｅｎｂ１＝“Ｈ”として第１ＥＣＣ回路４１を活性化し（ステップＳ５４）、信号Ｅｎｂ２＝“Ｌ”として第２ＥＣＣ回路４２を非活性化する（ステップＳ５５）。そして第１ＥＣＣ回路４１が、第ｉセクタにつき、ＥＣＣ処理を実行する（ステップＳ５６）。つまり、メインデータＤｉを用いて第１パリティＰ１−ｉを生成する。以上の結果、第ｉセクタデータが完成する。以上の処理を、全セクタにつき繰り返す（ステップＳ５７、ＮＯ、ステップＳ５８）。
【００８０】
以上の結果、図７に示す構造を有するデータが完成し、ＮＡＮＤ型フラッシュメモリ２２のページバッファへ転送される。そしてコマンド／アドレス発行部３７が書き込みコマンドを発行する（ステップ５９）。
【００８１】
他方、ステップＳ５２において第２誤り訂正方式が選択されていれば（ステップＳ５２、ＮＯ）、ＮＡＮＤ処理部３０は信号Ｅｎｂ２＝“Ｈ”として、第２ＥＣＣ回路４２を活性化する（ステップＳ６０）。また信号Ｅｎｂ１＝“Ｌ”として、第１ＥＣＣ回路４１を非活性化する（ステップＳ６１）。そして、第２ＥＣＣ回路４２が、データＤＷＲＩＴＥ（メインデータＤmain）についてＥＣＣ処理を実行して、第２パリティＰ２を生成する（ステップＳ６２）。その結果、図８に示す構造を有するデータが完成する。そして、このデータがＮＡＮＤ型フラッシュメモリ２２のページバッファへ転送され、書き込みコマンドが発行される（ステップ５９）。
【００８２】
３．本実施形態に係る効果  
以上のように、本実施形態に係る半導体装置であると、消費電力を低減出来る。本効果につき、以下説明する。
【００８３】
本実施形態に係るメモリ管理装置１４は、カラーリング情報としてＥＣＣ情報を有している。ＥＣＣ情報とは、適用されている、または適用すべき誤り訂正方式をデータ毎に示す情報である。そしてメモリ管理装置１４は、データへのアクセス要求があった際には、このＥＣＣ情報に基づいて、必要なＥＣＣ回路のみを動作させる。従って、ＥＣＣ回路の動作を必要最小限とすることが出来、消費電力を低減出来る。
【００８４】
より具体的には、本実施形態に係る構成は、第１誤り訂正方式と、第１誤り訂正方式より低速であるが訂正能力の高い第２誤り訂正方式とをサポートする。そして、高速なアクセスが必要なデータに対しては第１誤り訂正方式を適用し、低速のアクセスで良いデータに対しては第２誤り訂正方式を適用し、この情報がＥＣＣ情報としてアドレス変換テーブルに登録される。
【００８５】
従って、高速なアクセスが必要なデータに対してアクセスがあった際には、ＮＡＮＤ処理部３０はＥＣＣ情報に基づき、第１誤り訂正方式に従ったＥＣＣ処理を行う第１ＥＣＣ回路４１を動作させる。この際、第２誤り訂正方式に従ったＥＣＣ処理を行う第２ＥＣＣ回路４２は動作させない。
【００８６】
他方、低速のアクセスで良いデータに対してアクセスがあった際には、ＮＡＮＤ処理部３０はＥＣＣ情報に基づき、第２ＥＣＣ回路４２を動作させ、第１ＥＣＣ回路４１を動作させない。
【００８７】
このように、第１、第２ＥＣＣ回路４１、４２のうち、必要とするいずれか一方のみが動作し、両方が同時に動作することがない。従って、ＥＣＣ部３８での消費電力を低減出来ると共に、確実に誤りを訂正しつつ、プロセッサ１１によるアクセス速度についての要求を満たすことが出来る。
【００８８】
また、本実施形態に係る第１誤り訂正方式であると、より高速なデータアクセスが可能となる。この点につき、以下説明する。
【００８９】
ＮＡＮＤ型フラッシュメモリでは、メモリセルアレイの端部の領域がＥＣＣデータ用の領域として使用されることが一般的である。従って、１ページのデータ構造は、図８に示すように、カラムアドレスの小さい領域からまずメインデータが配置され、このメインデータの後ろにまとめてパリティが配置される。
【００９０】
データの読み出し時において、ページバッファとＥＣＣ部との間のバス幅がページサイズより小さい場合には、データはカラムアドレス順にバス幅単位でＥＣＣ部に転送される。従ってＥＣＣ部は、メインデータの全てがＥＣＣ部に転送され、引き続きパリティのＥＣＣ部への転送が完了するまで、ＥＣＣ処理を開始することが出来ない。
【００９１】
これに対して本実施形態に係る第１ＥＣＣ回路４１は、図７で説明したように、セクタ毎にＥＣＣ処理を実行する。より具体的には、１ページに書き込むべきメインデータを、Ｎ個のグループに分割し、個々のグループ毎に第１パリティＰ１−ｉを生成する。そしてこの第１パリティＰ１−ｉは、第１パリティＰ１−ｉを生成するために使用したメインデータＤｉの直後に置かれる。
【００９２】
つまり、１ページ内のデータ構造は、カラムアドレスの小さい順から、メインデータＤ１／パリティＰ１−１／メインデータＤ２／パリティＰ１−２／…といった並びになる。従って、ＥＣＣ部３８の第１ＥＣＣ回路４１は、メインデータＤ１及びパリティＰ１−１を受信した時点で、第２セクタ以降の残りのデータの受信を待つことなく、第１セクタについてのＥＣＣ処理を開始出来る。それ以降のセクタについても同様である。
【００９３】
従って、セクタ単位で順次ＥＣＣ処理を実行し、そしてＥＣＣ処理の終了したセクタから順に、データをプロセッサ１１や揮発性半導体メモリ２１に供給出来る。よって、プロセッサ１１は高速にデータをアクセス出来る。このことは、ＮＡＮＤ型フラッシュメモリ２２がメインメモリとして使用される形態において、より好ましい効果と言うことが出来る。
【００９４】
なお、ＮＡＮＤ処理部３０は、ＮＡＮＤ物理アドレスからページ番号及びセクタ番号を算出し、更にページ内のカラムアドレスを算出する。この際、図７に示すデータ形式と図８に示すデータ形式とでは、ページ内における有効データの位置の計算方法が異なる。
【００９５】
ＮＡＮＤ物理アドレスがページ単位で割り当てられているとすると、図７に示すデータ形式の場合、以下のように算出される。すなわち、  
ページ番号＝int（ＮＡＮＤ物理アドレス／データ数／セクタ数）  
セクタ番号＝int（ＮＡＮＤ物理アドレス／データ数）modセクタ数  
カラムアドレス＝（データ数＋パリティ数＋ＣＲＣ数）×セクタ番号  
但し、データ数、パリティ数、及びＣＲＣ数はそれぞれ、各セクタ内におけるメインデータＤｉのビット数、第１パリティＰ１−ｉのビット数、及び検査データＣＲＣｉのビット数であり、例えばそれぞれ１２８バイト、４バイト、及び１バイトである。またint（Ａ）は、Ａの整数部分を取得し、ＡmodＢは、ＡをＢで除算した際の余りを取得する演算を示す。
【００９６】
また図８に示すデータ形式の場合、以下のように算出される。すなわち、  
ページ番号＝int（ＮＡＮＤ物理アドレス／データ数）  
カラムアドレス＝０  
この場合、例えばデータ数は１０２４バイトであり、パリティ数（第２パリティＰ２のビット数）は４２バイトである。
【００９７】
［第２実施形態］  
次に、第２実施形態に係る半導体装置について説明する。本実施形態は、上記第１実施形態において図７乃至図１０を用いて説明したＥＣＣ部３８の別の具体例に関するものである。以下では、第１実施形態と異なる点についてのみ説明する。
【００９８】
１．ＥＣＣ部３８の構成について  
図１１は、本例に係るＥＣＣ部３８のブロック図である。図１１に示す矢印はデータの読み出し時における信号の流れを示しているが、書き込み時には逆になる。
【００９９】
図示するように本実施形態に係るＥＣＣ部３８は、第１実施形態で説明した図６の構成においてＣＲＣ部を排した構成を有しており、その他は第１実施形態と同様である。また本例においては、第２の誤り訂正能力は、第１の誤り訂正能力と同じか、それより優れたものとされている。処理速度は第１の実施形態で説明した通りであり、第１ＥＣＣ回路４１の処理速度は、第２ＥＣＣ回路４２の処理速度よりも高速である。他方で、回路規模は、第２ＥＣＣ回路４２の方が第１ＥＣＣ回路４１よりも小さく、また第２ＥＣＣ回路４２の符号化率Ｒ２は、第１ＥＣＣ回路４１の符号化率Ｒ１よりも優れている。すなわち、Ｒ１＜Ｒ２である。なお符号化率とは、入力データと出力データ（入力データにパリティを付加したもの）との比率であり、例えば入力データのビット数がＢ１、パリティのビット数がＢ２であれば、符号化率はＢ１／（Ｂ１＋Ｂ２）となる。従って、ＯＳまたはアプリケーションは、高速なアクセスが必要とされるデータについては第１誤り訂正方式を適用し、高速なアクセスが必要とされないデータについては第２誤り訂正方式を適用する。
【０１００】
図１２は、第１誤り訂正方式が選択された際に生成されるページデータの概念図である。図示するように、本実施形態では、第１実施形態で説明した図７の構成において、各セクタからＣＲＣを排したものに相当する。なお、セクタ数Ｍ（Ｍは２以上の自然数）は、Ｎと同じであっても良いし異なっていても良い。
【０１０１】
第２誤り訂正方式が選択された際に生成されるページデータは、第１実施形態で説明した通りである。
【０１０２】
２．本実施形態に係る動作  
２．１  データの読み出し時の動作について  
次に、データの読み出し時の動作につき、図１３を用いて説明する。図１３は、読み出し時のフローチャートである。
【０１０３】
図示するように、本実施形態に係る動作は、第１実施形態で説明した図９において、ＣＲＣに関する処理（ステップＳ３９、Ｓ４０）を排したものである。
【０１０４】
２．２  データの書き込み時の動作について  
次に、データの書き込み時の動作につき、図１４を用いて説明する。図１４は、書き込み時のフローチャートである。
【０１０５】
図示するように、本実施形態に係る動作は、第１実施態様で説明したFIG.10において、ＣＲＣに関する処理（ステップＳ５３）を排したものである。
【０１０６】
３．本実施形態に係る効果  
以上のように、第１の実施形態は、複数の誤り訂正方式が同一の誤り訂正能力を有する場合にも適用でき、第１の実施形態と同様の効果が得られる。
【０１０７】
［第３実施形態］  
次に、第３実施形態に係る半導体装置について説明する。本実施形態は、上記第１実施形態で説明したＥＣＣ部３８の具体例と、第２実施形態で説明したＥＣＣ部３８の具体例とを組み合わせたものである。つまり、ページデータが、第１実施形態で説明した図７、図８に示すフォーマットと、第２実施形態で説明した図１２に示すフォーマットとの、３つのフォーマットを取り得る場合に関する。以下では、第１、第２実施形態と異なる点についてのみ説明する。
【０１０８】
１．ＥＣＣ部３８の構成について  
本実施形態では、図７、図８、及び図１２に示すフォーマットを、それぞれ第１乃至第３フォーマットと呼び、これがＥＣＣ情報としてカラーリングテーブル３５に保持される。
【０１０９】
図１５は、本実施形態に係るＥＣＣ部３８のブロック図である。図示するように、ＥＣＣ部３８のブロック構成自体は、第１実施形態で説明した図６と同じである。但し、ＣＲＣ部４０は、信号Ｅｎｂ１＝“Ｈ”の際に活性化される。他方、信号Ｅｎｂ１＝“Ｌ”の際には非活性化され、ＣＲＣ部４０は入力信号をそのまま出力する。また第１ＥＣＣ回路４１は、信号Ｅｎｂ３＝“Ｈ”の際にも活性化される。
【０１１０】
第１フォーマットが選択される場合には、Ｅｎｂ１＝“Ｈ”、Ｅｎｂ２＝“Ｌ”、Ｅｎｂ３＝“Ｌ”とされる。すなわち、この場合にＥＣＣ部３８は、第１実施形態において第１誤り訂正方式が選択された場合と同一の動作を行う。
【０１１１】
第２フォーマットが選択される場合には、Ｅｎｂ１＝“Ｌ”、Ｅｎｂ２＝“Ｈ”、Ｅｎｂ３＝“Ｌ”とされる。すなわち、この場合にＥＣＣ部３８は、第１実施形態において第２誤り訂正方式が選択された場合と同一の動作を行う。
【０１１２】
第３フォーマットが選択される場合には、Ｅｎｂ１＝“Ｌ”、Ｅｎｂ２＝“Ｌ”、Ｅｎｂ３＝“Ｈ”とされる。すなわち、この場合にＥＣＣ部３８は、第２実施形態において第１誤り訂正方式が選択された場合と同一の動作を行う。
【０１１３】
２．具体例  
図１６は、本実施形態に係るメモリ管理装置１４及びＮＡＮＤ型フラッシュメモリ２２の主要部のみを例示的に示す概念図である。
【０１１４】
図示するように、ＮＡＮＤ型フラッシュメモリ２２のページＰＧ１〜ＰＧ３には、第１〜第３フォーマットのデータがそれぞれ書き込まれている。また、これらのページＰＧ１〜ＰＧ３のＮＡＮＤ物理アドレスは、それぞれ（１１１１＿１１１１ｈ）、（１１１１＿１１１２ｈ）、及び（１１１１＿１１１３ｈ）であったとする。なお、アドレスを示す数字の末尾の“ｈ”は、“ｈ”より前の８桁の数字が１６進数であることを示す。
【０１１５】
また、メモリ管理装置１４のアドレス変換テーブル３６には、３つのＣＰＵ物理アドレス（００００＿０００１ｈ）、（００００＿０００２ｈ）、及び（００００＿０００３ｈ）が登録されている。そして、これらのＣＰＵ物理アドレスにはそれぞれ、ＮＡＮＤ物理アドレス（１１１１＿１１１１ｈ）、（１１１１＿１１１２ｈ）、及び（１１１１＿１１１３ｈ）が対応付けられている。従って、カラーリングテーブル３５においてこれらのＣＰＵ物理アドレスに対応するエントリには、ＥＣＣ情報としてそれぞれ、第１フォーマットであることを示す値“１”、第２フォーマットであることを示す値“２”、及び第３フォーマットであることを示す値“３”が割り当てられている。
【０１１６】
例えば、プロセッサ１１から、ＣＰＵ物理アドレス（００００＿０００１ｈ）を用いて読み出しアクセスが為された場合、メモリ管理装置１４は、これに対応するページＰＧ１を読み出す。そしてＥＣＣ部３８は、ＥＣＣ情報＝“１”に基づいて、第１フォーマットについてのＥＣＣ処理（すなわち、第１実施形態において第１誤り訂正方式が選択された際の処理）を実行する。
【０１１７】
また、ＣＰＵ物理アドレス（００００＿０００２ｈ）を用いて読み出しアクセスが為された場合、メモリ管理装置１４は、これに対応するページＰＧ２を読み出す。そしてＥＣＣ部３８は、ＥＣＣ情報＝“２”に基づいて、第２フォーマットについてのＥＣＣ処理を実行する。
【０１１８】
更に、ＣＰＵ物理アドレス（００００＿０００３ｈ）を用いて読み出しアクセスが為された場合、メモリ管理装置１４は、これに対応するページＰＧ３を読み出す。そしてＥＣＣ部３８は、ＥＣＣ情報＝“３”に基づいて、第３フォーマットについてのＥＣＣ処理を実行する。
【０１１９】
３．本実施形態に係る効果  
以上のように、第１実施形態と第２実施形態とを組み合わせて実施することも可能である。
【０１２０】
［第４実施形態］  
次に、第４実施形態に係る半導体装置について説明する。本実施形態は、上記第１実施形態において、ウェアレベリングやガーベージコレクションの際にＥＣＣ情報を使用するものである。以下では、第１実施形態で説明を省略した点、及び第１実施形態と異なる点についてのみ説明する。
【０１２１】
１．本実施形態に係る構成について  
１．１  ＮＡＮＤ型フラッシュメモリの構成について  
図１７は、ＮＡＮＤ型フラッシュメモリ２２の構成を示すブロック図である。図示するようにＮＡＮＤ型フラッシュメモリ２２は、メモリセルアレイ５０及びページバッファ５１を備えている。
【０１２２】
まず、メモリセルアレイ５０について説明する。図示するようにメモリセルアレイ５０は、Ｓ個（Ｓは２以上の自然数）のメモリブロックＢＬＫ（ＢＬＫ０〜ＢＬＫ（Ｓ−１））を備えている。各メモリブロックＢＬＫはそれぞれ、Ｌ個（Ｌは２以上の自然数）のＮＡＮＤセル５３を備えている。ＮＡＮＤセル５３の各々は、例えば３２個のメモリセルトランジスタＭＴ（ＭＴ０〜ＭＴ３１）と、選択トランジスタＳＴ１、ＳＴ２とを含んでいる。メモリセルトランジスタＭＴは、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層（例えば浮遊ゲート）と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲートとを有する積層ゲート構造を備えている。なお、メモリセルトランジスタＭＴの個数は３２個に限られず、８個や１６個、６４個、１２８個、２５６個等であってもよく、その数は限定されるものではない。メモリセルトランジスタＭＴは、選択トランジスタＳＴ１、ＳＴ２間に、その電流経路が直列接続されるようにして配置されている。直列接続されたメモリセルトランジスタＭＴの一端側のドレインは選択トランジスタＳＴ１のソースに接続され、他端側のソースは選択トランジスタＳＴ２のドレインに接続されている。
【０１２３】
同一行にあるメモリセルトランジスタＭＴの制御ゲートはいずれかのワード線ＷＬ（ＷＬ０〜ＷＬ３１）に共通接続され、同一行にあるメモリセルの選択トランジスタＳＴ１、ＳＴ２のゲートは、それぞれセレクトゲート線ＳＧＤ、ＳＧＳに共通接続されている。
【０１２４】
またメモリセルアレイ５０において、メモリブロックＢＬＫはワード線ＷＬに直交する方向に配列されており、同一列にある選択トランジスタＳＴ１のドレインは、ビット線ＢＬ（ＢＬ０〜ＢＬ（Ｌ−１））に共通接続される。選択トランジスタＳＴ２のソースはソース線ＳＬに共通接続される。
【０１２５】
上記構成において、同一のメモリブロックＢＬＫ内にある複数のＮＡＮＤセル２３は、一括してデータが消去される。また、同一のワード線ＷＬに接続された複数のメモリセルトランジスタＭＴには一括してデータが書き込まれ、また読み出され、この単位がページとなる。従って、ＳＬＣのＮＡＮＤ型フラッシュメモリでは、各ブロックＢＬＫ内のワード線本数は３２本であるから、ブロックＢＬＫあたりのページ数も３２ページである。
【０１２６】
他方、ＭＬＣのＮＡＮＤ型フラッシュメモリでは、各メモリセルトランジスタＭＴが保持するマルチビットのビット毎にページが割り当てられる。つまり、データの書き込み及び読み出しは、ビット毎に行われる。従って、例えば各メモリセルトランジスタＭＴが２ビットデータを保持する場合、ブロックＢＬＫあたりのページ数は、（３２×２）＝６４ページとなる。３ビットデータを保持する場合には、（３２×３）＝９６ページであり、以下同様である。
【０１２７】
ページバッファ５１は、データの書き込み時には、メモリ管理装置１４から受信した書き込みデータを保持し、これを各ビット線ＢＬに転送して、メモリセルトランジスタＭＴへのデータの書き込みを実行する。またデータの読み出し時には、各ビット線ＢＬに読み出されたデータをセンス・増幅して、メモリ管理装置１４へ転送する。
【０１２８】
１．２  アドレス変換テーブル３６について  
次に、本実施形態に係るアドレス変換テーブル３６について、図１８を用いて説明する。図１８は、本実施形態に係るアドレス変換テーブル３６を示す模式図である。
【０１２９】
図示するようにアドレス変換テーブル３６は、第１実施形態で説明した図５において更に頻度情報フィールドを備えた構成を有している。頻度情報フィールドは、対応するＣＰＵ物理アドレスにおける誤りの発生頻度を示す頻度情報を格納する。この頻度情報は、例えばＥＣＣ部３８での誤り検出結果に基づいて、ＮＡＮＤ処理部３０によって作成、更新される。また誤り発生頻度の具体例としては、当該データの読み出し時において発生した誤りビット数の累積値、誤りの発生した累積回数、または対応するページを消去した累積回数などである。
【０１３０】
１．３  ウェアレベリング及びガーベージコレクションについて  
次に、ウェアレベリング及びガーベージコレクションについて簡単に説明する。
【０１３１】
ウェアレベリングとは、メモリブロックＢＬＫ毎の書き換え回数を管理して、特定のメモリブロックＢＬＫにデータのアクセスが集中しないようにする処理である。
【０１３２】
例えばあるメモリブロックＢＬＫ１にデータを書き込む際に、当該メモリブロックＢＬＫ１の書き込み頻度が高い場合には、書き込み頻度の低い別のメモリブロックＢＬＫ２にこのデータを書き込むと共に、メモリブロックＢＬＫ１に既に書き込まれていたデータをメモリブロックＢＬＫ２にコピーする。これがウェアレベリングである。なお、ウェアレベリングは必ずしもデータの書き込み時に実行されなくても良く、あるメモリブロックＢＬＫ１の書き込み頻度が一定の閾値を超えた際に、あるタイミングでメモリブロックＢＬＫ１全体を別のメモリブロックＢＬＫ２にコピーしても良い。
【０１３３】
ガーベージコレクションとは、有効データの少なくなった幾つかのメモリブロックＢＬＫ内の有効データを、別の消去済みメモリブロックＢＬＫにコピーし、元のメモリブロックＢＬＫを消去して、これを消去済みメモリブロックＢＬＫとして使用する方法である。
【０１３４】
ＮＡＮＤ型フラッシュメモリ２２では、セレクトゲート線ＳＧＳに近いワード線ＷＬ０から順番にデータが書き込まれる。つまり、データは追記のみが許容され、上書きは禁止される。
【０１３５】
従って、例えばメモリブロックＢＬＫ０のワード線ＷＬ０のデータを更新する場合には、メモリブロックＢＬＫ０のワード線ＷＬ０のデータはそのままに、消去状態にある例えばメモリブロックＢＬＫ１のいずれかのワード線ＷＬに更新データを書き込む。この際、メモリブロックＢＬＫ０のワード線ＷＬ０に残っているデータは、無効なデータである。
【０１３６】
このデータの更新回数が増加すると、いずれ消去状態のメモリブロックＢＬＫが無くなり、データの書き込みが出来なくなる。この問題を解消するのがガーベージコレクションである。
【０１３７】
すなわち、例えば図１７において、メモリブロックＢＬＫ０、ＢＬＫ１ではワード線ＷＬ０〜ＷＬ１５のデータが既に更新済み（更新データは別のメモリブロックＢＬＫに書き込まれている）であり、ワード線ＷＬ１６〜ＷＬ３１のデータのみが有効データであったとする。またメモリブロックＢＬＫ（Ｓ−１）が消去状態であったとする。
【０１３８】
この場合、メモリブロックＢＬＫ０、ＢＬＫ１におけるワード線ＷＬ１６〜ＷＬ３１のデータを、メモリブロックＢＬＫ（Ｓ−１）のワード線ＷＬ０〜ＷＬ３１にコピーする。そしてメモリブロックＢＬＫ０、ＢＬＫ１を消去する。これにより、新たに２つの消去ブロック（ＢＬＫ０、ＢＬＫ１）を確保出来る。
【０１３９】
以上のウェアレベリング及びガーベージコレクションは、ＮＡＮＤ処理部３０によって制御される。この際、ＮＡＮＤ処理部３０は、適用されている誤り訂正方式に基づいて、コピー先の領域を選択する。本動作について、以下説明する。
【０１４０】
２．本実施形態に係る動作について  
２．１  ウェアレベリング及びガーベージコレクション時の動作について  
次に、ウェアレベリング及びガーベージコレクション時の本実施形態に係るメモリ管理装置１４の動作について、図１９を用いて説明する。図１９は、メモリ管理装置１４の動作を示すフローチャートである。
【０１４１】
図示するようにＮＡＮＤ処理部３０は、常に、または定期的に、または処理を行っていない空き時間に、アドレス変換テーブル３６の頻度情報を監視する（ステップＳ７０）。そして、アドレス変換テーブル３６の各エントリについて、誤りの発生頻度が第１の閾値Ｆth１を超えているか否かを判断する。第１の閾値Ｆth１は、例えばエントリ毎（すなわちＣＰＵ物理アドレス毎、更に言い換えればページ毎）に設定され、その情報は例えばＯＳによってＮＡＮＤ処理部３０に与えられる。
【０１４２】
いずれかのエントリにおいて、誤りの発生頻度が第１の閾値Ｆth１を超えていた場合（ステップＳ７１、ＹＥＳ）、ＮＡＮＤ処理部３０は、当該エントリに対応するデータを、別のページへ移動させることを決定する。そしてＮＡＮＤ処理部３０は、カラーリングテーブル３５において当該エントリに対応するＥＣＣ情報を参照して、現在適用されている誤り訂正方式を確認する（ステップＳ７２）。
【０１４３】
ステップＳ７２の結果、第２誤り訂正方式であった場合、すなわち誤り訂正能力の高い方式が適用されていた場合には（ステップＳ７３、ＮＯ）、ＮＡＮＤ処理部３０は、コピー先の領域として、誤り発生頻度の高いページを候補とする（ステップＳ７４）。この際の誤り発生頻度の高低は、例えば第２の閾値Ｆth２を基準として判断される。なお、例えばＦth２≦Ｆth１である。
【０１４４】
そしてＮＡＮＤ処理部３０は、誤り訂正方式を変えることなく、誤り発生頻度の高い空きページに対してデータをコピーするよう、ＮＡＮＤコントローラ３３に命令する（ステップＳ７５）。この結果、ＮＡＮＤ型フラッシュメモリ２２では、当該エントリに対応するデータがページバッファ５１に読み出され、引き続きこのデータが空きページにコピーされる。
【０１４５】
なお、誤り発生頻度の低い空きページしか無い場合には、当該空きページにデータがコピーされる。
【０１４６】
ステップＳ７２の結果、第１誤り訂正方式であった場合、すなわち誤り訂正能力の低い方式が適用されていた場合には（ステップＳ７３、ＹＥＳ）、ＮＡＮＤ処理部３０は、コピー先の領域として、誤り発生頻度の低いページを候補とする（ステップＳ７６）。従ってＮＡＮＤ処理部３０は、アドレス変換テーブル３６を参照して、誤り発生頻度の低い空きページあるか否かを判断する。
【０１４７】
誤り発生頻度の低い空きページがあれば（ステップＳ７７、ＹＥＳ）、ＮＡＮＤ処理部３０は、誤り訂正方式を変えることなく、当該空きページに対してデータをコピーするよう、ＮＡＮＤコントローラ３３に命令する（ステップＳ７８）。この結果、ＮＡＮＤ型フラッシュメモリ２２では、当該エントリに対応するデータがページバッファ５１に読み出され、引き続きこのデータが空きページにコピーされる。
【０１４８】
誤り発生頻度の低い空きページが無ければ（ステップＳ７７、ＮＯ）、ＮＡＮＤ処理部３０は、誤り訂正方式を第２誤り訂正方式に変更した上で、誤り発生頻度の高い空きページに対してデータをコピーするよう、ＮＡＮＤコントローラ３３に命令する（ステップＳ７４、Ｓ７５）。この結果、当該エントリに対応するデータがページバッファ５１に読み出され、引き続きこのデータがＥＣＣ部３８に転送される。そしてＥＣＣ部３８は、誤り検出及び誤り訂正を行う。その後ＥＣＣ部３８は、第２誤り訂正方式でＥＣＣ処理を行って第２パリティＰ２を生成し、第２パリティＰ２を含むデータをページバッファ５１に転送する。そして、このデータが空きページにコピーされる。
【０１４９】
２．２  動作の具体例について  
次に、上記説明した動作の具体例について、図２０を用いて説明する。図２０は、メモリブロックＢＬＫ、ページデータ、並びにカラーリングテーブル３５及びアドレス変換テーブル３６を示し、データコピーの様子を模式的に示す概念図である。
【０１５０】
図示するように、メモリブロックＢＬＫ０のページＰＧ１に、第１誤り訂正方式が適用されたデータＰＤ１が格納されている。以下、このデータＰＤ１についての誤り発生頻度Ｆ１が第１の閾値Ｆth１を超え、空きページＰＧ１０またはＰＧ２０にコピーされる場合を、それぞれをＣＡＳＥ Ｉ及びＣＡＳＥ IIとして説明する。
【０１５１】
（ＣＡＳＥ Ｉ）  
まず、コピー対象となるデータＰＤ１には第１誤り訂正方式が適用されている（図１９のステップＳ７３、ＹＥＳ）。従ってＮＡＮＤ処理部３０は、コピー先の領域として、誤り発生頻度が第２の閾値Ｆth２を超えていないページを候補とする（ステップＳ７６）。
【０１５２】
ＣＡＳＥ Ｉでは、ページＰＧ１０が空きページであり、且つその誤り発生頻度Ｆ１０は第２の閾値Ｆth２未満である（アドレス変換テーブル３６参照）。従ってＮＡＮＤ処理部３０は、データＰＤ１をそのままページＰＧ１０にコピーする（ステップＳ７８）。
【０１５３】
（ＣＡＳＥ II）  
次にＣＡＳＥ IIについて説明する。ＣＡＳＥ IIは、ページＰＧ１０が使用中で、ページＰＧ２０が空きページであり、且つその誤り発生頻度Ｆ２０は第２の閾値Ｆth２以上である場合に相当する（ステップＳ７７、ＮＯ）。
【０１５４】
この場合、ＮＡＮＤ処理部３０は、データＤ１をページＰＧ２０にコピーする。この際、ＮＡＮＤ処理部３０は、誤り訂正方式を第１誤り訂正方式から第２誤り訂正方式に変更する（ステップＳ７５）。
【０１５５】
３．本実施形態に係る効果  
本実施形態に係る構成であると、上記第１実施形態で説明した効果に加えて、データのアクセス速度の低下を効率的に抑制出来る、という効果が得られる。本効果について、以下説明する。
【０１５６】
第１実施形態で説明したように、高速アクセスが求められるデータについては第１誤り訂正方式が適用され、そうではないデータについては第２誤り訂正方式が適用される。この関係は、ウェアレベリング及びガーベージコレクション後であっても維持されることが望ましい。
【０１５７】
この点、本実施形態によれば、ウェアレベリング及びガーベージコレクションの際、コピー対象となるデータに適用されている誤り訂正方式に基づいて、コピー先の領域を決定している。より具体的には、第１誤り訂正方式のデータをコピーする際には、誤り発生頻度の低いページをコピー先とする。これにより、コピー後においても第１誤り訂正方式を適用して、高速なアクセスを可能とする。また同時に、コピー先の領域は誤り発生頻度の低いページであるので、第１誤り訂正方式であっても十分に誤りを訂正出来る。
【０１５８】
他方、第２誤り訂正方式のデータをコピーする際には、誤り発生頻度の高いページをコピー先とする。これにより、誤り発生頻度の低い空きページを無駄に使うことを抑制できる。つまり、誤り発生頻度の低い空きページを、第１誤り訂正方式のデータのために効率的に使用できる。なお、コピー先の領域の誤り発生頻度が高くても、第２誤り訂正方式は誤り訂正能力が高いため、十分に誤りを訂正出来る。
【０１５９】
また、誤り発生頻度の低い空きページが無い場合には、コピー対象データが第１誤り訂正方式のデータであったとしても、誤り発生頻度の高いページをコピー先としなければならない。この場合には、ＮＡＮＤ処理部３０は、誤り訂正方式を第１誤り訂正方式から第２誤り訂正方式に変更した上で、データをコピーする。これにより、コピー後も十分に誤りを訂正出来る。
【０１６０】
（本実施形態の第１変形例）  
なお、図２０で説明したＣＡＳＥ IIでは、データＤ１は、別のブロックＢＬＫ２にコピーされるのでは無く、メモリブロックＢＬＫ０に再度書き込まれても良い。
【０１６１】
すなわち、ＮＡＮＤ処理部３０は、誤り発生頻度の低い空きページが無いと判断すると（図１９のステップＳ７７、ＮＯ）、データＰＤ１のみ、またはメモリブロックＢＬＫ０内の全有効データを読み出し、これを例えば揮発性半導体メモリ２２に一時的に保持させる。その後ＮＡＮＤ処理部３０は、メモリブロックＢＬＫ０を消去する。そして、消去後のメモリブロックＢＬＫ０に、揮発性半導体メモリ２２に保持させたデータをコピーする。この際、データＰＤ１は、第２誤り訂正方式が適用されて、メモリブロックＢＬＫ０に書き込まれる（ステップＳ７５）。
【０１６２】
このように、誤り訂正方式を第１誤り訂正方式から第２誤り訂正方式に変更する場合には、コピー先の領域には特に制限は無い。従って、コピー先の領域として、もともとデータＰＤ１が保持されていたメモリブロックＢＬＫ０を使用しても良い。これは、例えば図１９のステップＳ７５において、空きページ（データのコピー先として使用できる領域）が全く無い場合にも適用出来る。
【０１６３】
（本実施形態の第２変形例）  
また図２０で説明したＣＡＳＥ IIでは、ページＰＧ２０にデータを書き込む際、複数のページが１ページに統合されても良い。このような例を図２１に示す。
【０１６４】
図示するように、コピーが必要なデータＰＤ１、ＰＤ２が２つのページＰＧ１、ＰＧ２に存在し、共に第１誤り訂正方式が適用されていたとする。このような場合、ページＰ１についてのメインデータＤmain１（Ｄ１〜ＤＮ）と、ページＰ２についてのメインデータＤmain２（Ｄ１〜ＤＮ）とを、１つのデータＤmain３にまとめる。更に、このデータＤmain３について第２パリティＰ２を生成し、メインデータＤmain３と第２パリティＰ２とを含むデータＰＤ３を、ページＰＧ２０に書き込んでも良い。
【０１６５】
すなわち、誤り訂正方式を第１誤り訂正方式から第２誤り訂正方式に変更することで、１ページに含まれるパリティのビット数は大幅に少なくなる。そこで、パリティのビット数が減少することで空いた領域に、別のページのメインデータを格納することで、効率的にデータを記憶出来る。
【０１６６】
従って、本例は以下の条件の全てが満たされる場合に可能となる。すなわち、  
・コピー対象となるページが２ページ以上あること、  
・コピーの際、誤り訂正方式が、もとの誤り訂正方式よりも訂正能力の低い誤り訂正方式に変更されること（つまり、コピーによってパリティのビット数が減少すること）、及び  
・統合されるページのメインデータの和と、それについてのパリティと、の総和が、ページサイズ以下であること。
【０１６７】
［第５実施形態］  
次に、第５実施形態に係る半導体装置につき説明する。本実施形態は、上記第１乃至第４実施形態で説明したメモリ管理装置１４の機能を、ＳＳＤ（Solid State Drive）に適用したものである。
【０１６８】
図２２は、ＳＳＤ１００の構成を示すブロック図である。図示するようにＳＳＤ１００は、データ保存用の複数のＮＡＮＤ型フラッシュメモリ２００、データ転送用又は作業領域用のＤＲＡＭ１０１、これらを制御するドライブ制御回路１０２、及び電源回路１０３を備えている。ドライブ制御回路１０２は、ＳＳＤ１００の外部に設けられる状態表示用ＬＥＤを制御するための制御信号を出力する。なお、ＤＲＡＭ１０１に代えて、ＦｅＲＡＭ（ferroelectric random access memory）を用いてもよい。
【０１６９】
ＳＳＤ１００は、ＡＴＡインターフェース（ＡＴＡ  Ｉ／Ｆ）を介して、パーソナルコンピュータ等のホスト装置との間でデータを送受信する。また、ＳＳＤ１００は、ＲＳ２３２Ｃインターフェース（ＲＳ２３２Ｃ  Ｉ／Ｆ）を介して、デバッグ用機器との間でデータを送受信する。
【０１７０】
電源回路１０３は、外部電源を受け、この外部電源を用いて複数の内部電源を生成する。これらの内部電源は、ＳＳＤ１００内の各部に供給される。また、電源回路１０３は、外部電源の立ち上がりを検知して、パワーオンリセット信号を生成する。パワーオンリセット信号は、ドライブ制御回路１０２に送られる。
【０１７１】
図２３は、ドライブ制御回路１０２の構成を示すブロック図である。ドライブ制御回路１０２は、データアクセス用バス１０４、第１の回路制御用バス１０５、及び第２の回路制御用バス１０６を備えている。
【０１７２】
第１の回路制御用バス１０５には、ドライブ制御回路１０２全体を制御するプロセッサ１０７が接続されている。また、第１の回路制御用バス１０５には、各管理プログラム（ＦＷ：firmware）のブート用プログラムが格納されたブートＲＯＭ１０８がＲＯＭコントローラ１０９を介して接続されている。また、第１の回路制御用バス１０５には、電源回路１０３からのパワーオンリセット信号を受けて、リセット信号及びクロック信号を各部に供給するクロックコントローラ１１０が接続されている。
【０１７３】
第２の回路制御用バス１０６は、第１の回路制御用バス１０５に接続されている。第２の回路制御用バス１０６には、状態表示用ＬＥＤにステータス表示用信号を供給するパラレルＩＯ（ＰＩＯ）回路１１１、ＲＳ２３２Ｃインターフェースを制御するシリアルＩＯ（ＳＩＯ）回路１１２が接続されている。
【０１７４】
ＡＴＡインターフェースコントローラ（ＡＴＡコントローラ）１１３、第１のＥＣＣ（Error Check and Correct）回路１１４、ＮＡＮＤコントローラ１１５、及びＤＲＡＭコントローラ１１９は、データアクセス用バス１０４と第１の回路制御用バス１０５との両方に接続されている。ＡＴＡコントローラ１１３は、ＡＴＡインターフェースを介してホスト装置との間でデータを送受信する。データアクセス用バス１０４には、データ作業領域として使用されるＳＲＡＭ１２０がＳＲＡＭコントローラ１２１を介して接続されている。
【０１７５】
ＮＡＮＤコントローラ１１５は、４つのＮＡＮＤ型フラッシュメモリ２００とのインターフェース処理を行うＮＡＮＤインターフェース回路（ＮＡＮＤ  Ｉ／Ｆ）１１８、制御部１１７、及びＮＡＮＤ型フラッシュメモリ−ＤＲＡＭ間のアクセス制御を行うＤＭＡ転送制御用ＤＭＡコントローラ１１６を備えている。そして制御部１１７は、第１乃至第４実施形態で説明したメモリ管理装置１４の機能を有する。すなわち制御部１１７は、図２で説明したＮＡＮＤ処理部３０、記憶部３１、及びＮＡＮＤコントローラ３３を備え、第１乃至第４実施形態で説明した動作を実行する。
【０１７６】
図２４は、ＳＳＤ１００を搭載したポータブルコンピュータ２００の一例を示す斜視図である。ポータブルコンピュータ２００は、本体２０１、及び表示ユニット２０２を備えている。表示ユニット２０２は、ディスプレイハウジング２０３と、このディスプレイハウジング２０３に収容された表示装置２０４とを備えている。
【０１７７】
［変形例など］  
以上のように、第１乃至第５実施形態に係る半導体装置１は、データを保持可能なＮＡＮＤ型フラッシュメモリ２２と、前記データについての誤りを検出・訂正する誤り訂正部３８と、前記データ毎に、使用される誤り訂正方式についての情報（ＥＣＣ情報）を有するテーブル（カラーリングテーブル３５またはアドレス変換テーブル３６）とを具備する。そして誤り訂正部は、前記テーブル内の前記情報に従って、適用する誤り訂正方式を前記データ毎に選択する。
【０１７８】
本構成により、誤り訂正部では必要最小限のＥＣＣ回路のみが活性化され、半導体装置１の消費電力を削減出来る。
【０１７９】
なお実施形態は、上記説明した第１乃至第５実施形態に限定されるものではなく、種々の変形が可能である。例えば、第１、第２実施形態では、誤り訂正方式が２種類の場合について説明し、第３実施形態では３種類の場合について説明した。しかし、それ以上の種類の誤り訂正方式が使用可能であっても良い。また、各誤り訂正方式によるデータフォーマットは、上記実施形態で挙げたフォーマットに限らず、種々のフォーマットが使用されて良い。
【０１８０】
また、ＥＣＣ情報は、カラーリングテーブル３５ではなくアドレス変換テーブル３６に記録されて良いし、またはカラーリングテーブル３５とアドレス変換テーブル３６の両方に記録されても良い。
【０１８１】
また第１乃至第４実施形態では、半導体装置１として、ＮＡＮＤ型フラッシュメモリをメインメモリとして使用するシステムを例に挙げ、また第５実施形態ではＳＳＤを例に挙げて説明した。しかし、これらのシステムに限定されるものでは無く、例えばＮＡＮＤ型フラッシュメモリをメインメモリとして使用しない場合であっても良いし、またＳＤＴＭメモリカードなどにも適用出来る。なお、ＳＳＤやＳＤメモリカードの例では、図３で説明したようなカラーリングテーブルは特に必須では無い。この場合には、ホスト機器からＥＣＣ情報のみを与えられれば十分である。また、不揮発性半導体メモリ２２としてはＮＡＮＤ型フラッシュメモリに限らず、その他の半導体メモリ全般に適用出来る。更に、記憶装置２０は半導体メモリに限らず、磁気記録媒体や光学的な記録媒体など、誤り訂正処理を行う記録媒体全般に適用出来る。
【０１８２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１８３】
１…半導体装置、１０…情報処理装置、１１…プロセッサ、１２…２次キャッシュメモリ、１３…バス、１４…メモリ管理装置、１５…ＭＭＵ、１６…１次キャッシュメモリ、２０…記憶装置、２１…揮発性半導体メモリ、２２…ＮＡＮＤ型フラッシュメモリ、３０…ＮＡＮＤ処理部、３１…記憶部、３３…ＮＡＮＤコントローラ、３５…カラーリングテーブル、３６…アドレス変換テーブル、３７…コマンド／アドレス発行部、３８…ＥＣＣ部、４０…ＣＲＣ部、４１…第１ＥＣＣ回路、４２…第２ＥＣＣ回路、４３…選択回路
【図１】
2012084127.tif 000003
【図２】
2012084127.tif 000004
【図３】
2012084127.tif 000005
【図４】
2012084127.tif 000006
【図５】
2012084127.tif 000007
【図６】
2012084127.tif 000008
【図７】
2012084127.tif 000009
【図８】
2012084127.tif 000010
【図９】
2012084127.tif 000011
【図１０】
2012084127.tif 000012
【図１１】
2012084127.tif 000013
【図１２】
2012084127.tif 000014
【図１３】
2012084127.tif 000015
【図１４】
2012084127.tif 000016
【図１５】
2012084127.tif 000017
【図１６】
2012084127.tif 000018
【図１７】
2012084127.tif 000019
【図１８】
2012084127.tif 000020
【図１９】
2012084127.tif 000021
【図２０】
2012084127.tif 000022
【図２１】
2012084127.tif 000023
【図２２】
2012084127.tif 000024
【図２３】
2012084127.tif 000025
【図２４】
2012084127.tif 000026