"不揮発性記憶装置と、前記不揮発性記憶装置と通信を行う情報処理装置とを有するメモリシステムであって、前記情報処理装置は、前記不揮発性記憶装置の第1の論理アドレス領域からデータを読み出し、前記第1の論理アドレス領域に対応する読み出しデータが第1の関数で表されるデータと同じである場合に、前記不揮発性記憶装置に、前記第1の論理アドレス領域のデータを無効にするための削除通知を行う第1の制御回路を具備し、前記不揮発性記憶装置は、不揮発性記憶媒体と、有効なデータに対応する論理アドレスと物理アドレスとを関連付ける管理テーブルと、前記削除通知により指定された論理アドレスを無効にするように前記管理テーブルを書き換え、前記情報処理装置から受信した読み出し命令に含まれる論理アドレスが無効である場合に、前記第1の関数で表されるデータを前記情報処理装置に送信する第2の制御回路と、を具備することを特徴とするメモリシステム。前記第1の関数は、特定のデータパターンであることを特徴とする請求項1に記載のメモリシステム。前記不揮発性記憶媒体は、前記第1の関数を格納する記憶領域を有し、前記第1の制御回路は、前記記憶領域の前記第1の関数を第2の関数に書き換え、前記不揮発性記憶装置から読み出された読み出しデータが前記第1の関数で表されるデータと同じである第2の論理アドレス領域に、前記第1の関数で表されるデータを書き込むことを特徴とする請求項1又は2に記載のメモリシステム。第1のデータを格納する記憶領域を有する不揮発性記憶装置と、前記不揮発性記憶装置と通信を行う情報処理装置とを有するメモリシステムであって、前記情報処理装置は、前記不揮発性記憶装置の第1の論理アドレス領域からデータを読み出し、前記第1の論理アドレス領域に対応する読み出しデータが前記第1のデータと同じである場合に、前記不揮発性記憶装置に、前記第1の論理アドレス領域を前記記憶領域に関連付けるための削除通知を行う第1の制御回路を具備し、前記不揮発性記憶装置は、不揮発性記憶媒体と、論理アドレスと物理アドレスとを関連付ける管理テーブルと、前記削除通知により指定された論理アドレスを前記記憶領域に関連付けるように前記管理テーブルを書き換え、前記情報処理装置から受信した読み出し命令に含まれる論理アドレスが前記記憶領域を指定している場合に、前記第1のデータを前記情報処理装置に送信する第2の制御回路と、を具備することを特徴とするメモリシステム。前記第1の制御回路は、ユーザから指示を受けた場合に、前記削除通知に関する処理を実行することを特徴とする請求項1乃至4のいずれかに記載のメモリシステム。前記第1の制御回路は、規定の時刻に到達した場合に、前記削除通知に関する処理を実行することを特徴とする請求項1乃至4のいずれかに記載のメモリシステム。前記第2の制御回路は、前記削除通知に関する処理を実行するための命令を前記情報処理装置に送信し、前記第1の制御回路は、前記不揮発性記憶装置から前記命令を受けた場合に、前記削除通知に関する処理を実行することを特徴とする請求項1乃至4のいずれかに記載のメモリシステム。情報処理装置と通信を行う不揮発性記憶装置であって、不揮発性記憶媒体と、有効なデータに対応する論理アドレスと物理アドレスとを関連付ける管理テーブルと、前記不揮発性記憶媒体からデータを読み出し、前記読み出しデータが第1の関数で表されるデータと同じである場合に、前記読み出しデータの論理アドレスを無効にするように前記管理テーブルを書き換え、前記情報処理装置から受信した読み出し命令に含まれる論理アドレスが無効である場合に、前記第1の関数で表されるデータを前記情報処理装置に送信する制御回路と、を具備することを特徴とする不揮発性記憶装置。前記第1の関数は、特定のデータパターンであることを特徴とする請求項8に記載のメモリシステム。情報処理装置と通信を行う不揮発性記憶装置であって、不揮発性記憶媒体と、第1のデータを格納する記憶領域と、論理アドレスと物理アドレスとを関連付ける管理テーブルと、前記不揮発性記憶媒体からデータを読み出し、前記読み出しデータが前記第1のデータと同じである場合に、前記読み出しデータの論理アドレスを前記記憶領域に関連付けるように前記管理テーブルを書き換え、前記情報処理装置から受信した読み出し命令に含まれる論理アドレスが前記記憶領域を指定している場合に、前記第1のデータを前記情報処理装置に送信する制御回路と、を具備することを特徴とする不揮発性記憶装置。前記制御回路は、前記情報処理装置から一定期間アクセスがない場合に、前記管理テーブルを書き換える処理を実行することを特徴とする請求項8乃至10のいずれかに記載の不揮発性記憶装置。前記制御回路は、前記情報処理装置から命令を受けた場合に、前記管理テーブルを書き換える処理を実行することを特徴とする請求項8乃至10のいずれかに記載の不揮発性記憶装置。前記制御回路は、不揮発性記憶媒体のフリーブロック数が規定値を下回った場合に、前記管理テーブルを書き換える処理を実行することを特徴とする請求項8乃至10のいずれかに記載の不揮発性記憶装置。不揮発性記憶装置の制御方法であって、前記不揮発性記憶装置の第1の論理アドレス領域からデータを読み出す工程と、前記第1の論理アドレス領域に対応する読み出しデータが第1の関数で表されるデータと同じであるか否かを判定する工程と、前記読み出しデータと前記第1の関数で表されるデータとが同じである場合に、前記不揮発性記憶装置に、前記第1の論理アドレス領域のデータを無効にするための削除通知を行う工程と、を具備することを特徴とする不揮発性記憶装置の制御方法。前記第1の関数は、特定のデータパターンであることを特徴とする請求項14に記載の不揮発性記憶装置の制御方法。前記不揮発性記憶装置に格納された前記第1の関数を第2の関数に書き換える工程と、前記不揮発性記憶装置から読み出された読み出しデータが前記第1の関数で表されるデータと同じである第2の論理アドレス領域に、前記第1の関数で表されるデータを書き込む工程と、をさらに具備することを特徴とする請求項14又は15に記載の不揮発性記憶装置の制御方法。不揮発性記憶装置の制御方法であって、前記不揮発性記憶装置は、第1のデータを格納する記憶領域を有し、前記制御方法は、前記不揮発性記憶装置の第1の論理アドレス領域からデータを読み出す工程と、前記第1の論理アドレス領域に対応する読み出しデータが前記第1のデータと同じであるか否かを判定する工程と、前記読み出しデータが前記第1のデータと同じである場合に、前記不揮発性記憶装置に、前記第1の論理アドレス領域を前記記憶領域に関連付けるための削除通知を行う工程と、を具備することを特徴とする不揮発性記憶装置の制御方法。実施形態は、読み出し動作を高速化し、かつ書き込みに利用可能なフリーブロックを増加させることが可能なメモリシステム、不揮発性記憶装置及びその制御方法を提供する。実施形態に係るメモリシステムは、不揮発性記憶装置と、前記不揮発性記憶装置と通信を行う情報処理装置とを有するメモリシステムであって、前記情報処理装置は、前記不揮発性記憶装置の第1の論理アドレス領域からデータを読み出し、前記第1の論理アドレス領域に対応する読み出しデータが第1の関数で表されるデータと同じである場合に、前記不揮発性記憶装置に、前記第1の論理アドレス領域のデータを無効にするための削除通知を行う第1の制御回路を具備する。前記不揮発性記憶装置は、不揮発性記憶媒体と、有効なデータに対応する論理アドレスと物理アドレスとを関連付ける管理テーブルと、前記削除通知により指定された論理アドレスを無効にするように前記管理テーブルを書き換え、前記情報処理装置から受信した読み出し命令に含まれる論理アドレスが無効である場合に、前記第1の関数で表されるデータを前記情報処理装置に送信する第2の制御回路とを具備する。実施形態に係る不揮発性記憶装置の制御方法であって、前記不揮発性記憶装置の第1の論理アドレス領域からデータを読み出す工程と、前記第1の論理アドレス領域に対応する読み出しデータが第1の関数で表されるデータと同じであるか否かを判定する工程と、前記読み出しデータと前記第1の関数で表されるデータとが同じである場合に、前記不揮発性記憶装置に、前記第1の論理アドレス領域のデータを無効にするための削除通知を行う工程とを具備する。SSDの空き領域が枯渇している、すなわちSSDコントローラに有効なデータを全く持っていないと認識されているNAND型フラッシュメモリの物理ブロックフリーブロックが枯渇している場合、そのSSDに書き込みを行うと、SSDコントローラに有効なデータを持っていると認識されているNAND型フラッシュメモリの物理ブロックアクティブブロック上の無効なデータ領域を検索し、有効なデータを整理NAND整理して新たなフリーブロックを確保する処理に負荷がかかり、書き込みのパフォーマンスが著しく劣化してしまう。また、NAND型フラッシュメモリに無効データが多い、すなわちSSD上での空き領域が枯渇している状況で書き込みが行われると、特定の領域に書き込みが集中したり、頻繁に発生するNAND整理でNAND型フラッシュメモリの余分な消去が発生したりするため、SSDの信頼性が著しく劣化する可能性がある。以下、実施形態について図面を参照して説明する。以下に示す幾つかの実施形態は、本発明の技術思想を具体化するための装置および方法を例示したものであって、構成部品の形状、構造、配置などによって、本発明の技術思想が特定されるものではない。なお、以下の説明において、同一の機能及び構成を有する要素については、同一符号を付し、重複説明は必要な場合にのみ行う。[第1の実施形態][1.メモリシステムの構成]図1は、第1の実施形態に係るメモリシステム1のブロック図である。メモリシステム1は、ホスト装置情報処理装置2と、外部記憶装置としての不揮発性記憶装置3とを備えている。不揮発性記憶装置3として、本実施形態では、SSDSolidStateDriveを例に挙げて説明する。SSD3は、インターフェースコントローラ10、SSDコントローラ制御回路11、メインメモリとしてのDRAM12、不揮発性記憶媒体としてのNAND型フラッシュメモリ13、及びこれらを接続するバスを備えている。インターフェースコントローラ10は、ホスト装置2とのインターフェース処理を実行する。インターフェースコントローラ10は、例えばSATASerialAdvancedTechnologyAttachment規格に準拠した通信インターフェースでホスト装置2に接続され、SATA規格に準拠したインターフェース処理を実行する。インターフェース規格については、SATA以外に、SASSerialAttachedSCSIやUSBuniversalserialbusなどを用いてもよい。SSDコントローラ11は、SSD3全体の各種動作を制御する。SSDコントローラ11は、NAND型フラッシュメモリ13に格納されているプログラムをDRAM12に読み出して所定の処理を実行することにより、各種テーブルをDRAM12に作成する。また、SSDコントローラ11は、ホスト装置2から書き込み命令、読み出し命令、消去命令などを受信し、これらの命令に応答してNAND型フラッシュメモリ13に所定の処理を実行する。NAND型フラッシュメモリ13は、n1個のNANDメモリチップChip0~Chipnによって構成されている。nは、0以上の整数である。NANDメモリチップChip0~Chipnは、並列動作が可能なように構成されていてもよい。各NANDメモリチップは、複数のフラッシュメモリセルからなるメモリセルアレイ、及び周辺回路例えば、ロウデコーダ、カラムデコーダ、ページバッファ、データキャッシュなどを備えている。NAND型フラッシュメモリ13のメモリセルアレイは、複数のブロックから構成され、各ブロックは、複数のページから構成されている。ブロックは、データ消去の最小単位であり、ページは、データ書き込み及び読み出しの最小単位である。NAND型フラッシュメモリ13のメモリセルアレイを構成するメモリセルトランジスタは、半導体基板上に形成された積層ゲート構造を備えたMOSFETMetalOxideSemiconductorFieldEffectTransistorから構成される。積層ゲート構造は、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層浮遊ゲート電極、及び浮遊ゲート電極上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。メモリセルトランジスタは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じてデータを記憶する。メモリセルトランジスタは、1ビットを記憶するように構成されていてもよいし、多値2ビット以上のデータを記憶するように構成されていてもよい。また、メモリセルトランジスタは浮遊ゲート電極を有する構造に限らず、MONOSMetalOxideNitrideOxideSilicon型など、電荷蓄積層としての窒化界面に電子をトラップさせることで閾値電圧を調整可能な構造であってもよい。MONOS型のメモリセルトランジスタについても同様に、1ビットを記憶するように構成されていてもよいし、多値を記憶するように構成されていてもよい。また、不揮発性記憶媒体として、特開2010-161199や特開2011-29586に記述されるような3次元的にメモリセルが配置された半導体記憶媒体であってもよい。DRAM12は、ホスト装置2とNAND型フラッシュメモリ13との間でのデータ転送用キャッシュ、及びSSDコントローラ11の作業用メモリなどとして機能する。DRAM12の作業領域用メモリに記憶されるものとしては、起動時などにNAND型フラッシュメモリ13から読み出される管理テーブルや関数fなどがある。DRAM12は、管理テーブルを格納する記憶領域12A、及び関数fを格納する記憶領域12Bを含んでいる。管理テーブル及び関数fについての詳細は後述する。メインメモリとしては、DRAM以外のメモリを用いてもよい。メインメモリとしては、ランダムアクセスメモリRAMを用いることが望ましい。メインメモリとしては、DRAMの他に、SRAM、FeRAMFerroelectricRandomAccessMemory、MRAMMagnetoresistiveRandomAccessMemory、PCRAMPhaseChangeRandomAccessMemoryなどを用いてもよい。また、上記メインメモリは、独立したチップとしてSSD基板上に実装してもよいし、組み込み型メモリとしてSSDコントローラ内に実装してもよい。図2は、DRAM12に格納される管理テーブルの一部を説明する図である。ホスト装置2がSSD3へ命令を送信すると、インターフェースコントローラ10を介してその命令がSSDコントローラ11に送られる。SSDコントローラ11は、受信した命令を処理する。その際、SSDコントローラ11は、DRAM12上の管理テーブルを参照することで、適宜ホスト装置2より受信した論理アドレスを物理アドレスに変換する。論理アドレスとは、ホスト装置2で管理しているアドレスであり、物理アドレスとは、SSD3で管理している実アドレスである。図2に示すように、管理テーブルは、フリーブロックテーブル、アクティブブロックテーブル、及びアクティブページテーブルを含む。物理ブロックID及び物理ページアドレスは物理アドレスに含まれる。アクティブブロックテーブルは、物理ブロックIDと論理アドレスとを結び付けて管理しており、アクティブブロックテーブルに登録されている物理ブロックアクティブブロックは、少なくともSSDコントローラ11にとっては有効なデータを保持していることになる。フリーブロックテーブルは、論理アドレスに結び付けられていない物理ブロックを管理している。フリーブロックテーブルに登録されている物理ブロックフリーブロックは、論理アドレスに結び付けられていないため、有効なデータを保持していないことになる。アクティブページテーブルは、物理ページアドレスと論理アドレスとを結び付けて管理しており、アクティブページテーブルに登録されている物理ページアクティブページは、少なくともSSDコントローラ11にとっては有効なデータを保持していることになる。また、アクティブページテーブルに登録されている物理ページは、これが属する物理ブロックIDと関連付けられている。なお、管理テーブルで管理されている論理アドレスは、SSD3で管理できる最小データサイズ又はそれより大きいデータサイズのアドレスである。次に、ホスト装置2の構成について説明する。図3は、ホスト装置2のブロック図である。CPU制御回路20がホスト装置2における中央演算処理装置であり、ホスト装置2における種々の演算及び制御はCPU20によって行われる。CPU20はサウスブリッジ21を介してSSD3や、DVD-ROMなどの光学ドライブ31の制御を行う。CPU20は、ノースブリッジ22を介して、メインメモリとしてのDRAM23の制御を行う。ユーザは、キーボード29やマウス30などの入力装置を通してホスト装置2の制御を行い、キーボード29やマウス30からの信号はUSBUniversalSerialBusコントローラ28及びサウスブリッジ21を介してCPU20で処理される。CPU20は、ノースブリッジ22及び表示コントローラ24を介してディスプレイ表示装置25に画像データやテキストデータなどを送る。ユーザは、ディスプレイ25を介してホスト装置2からの画像データやテキストデータなどを視認することができる。CPU20は、BIOSBasicInputOutputSystem-ROM26に格納されたBIOSを実行する。BIOSは、ハードウェア制御のためのプログラムである。その他、CPU20は、サウスブリッジ21を介してLANLocalAreaNetworkコントローラ27を制御する。DRAM23は、CPU20の作業用メモリとして機能し、OSOperatingSystemを格納する記憶領域23A、最適化プログラムを格納する記憶領域23B、最適化フラグを格納する記憶領域23C、及び関数fを格納する記憶領域23Dを含んでいる。OSは、一般的に知られているように、ホスト装置2の入出力装置を管理し、ディスクやメモリを管理し、ソフトウェアがホスト装置2のハードウェアを利用可能にするための制御を行うなど、ホスト装置2全体を管理するプログラムである。最適化プログラム及び最適化フラグについての詳細は後述する。OS、最適化プログラム、及び関数fは、ホスト装置2が電源オフとなっている時は、図4に示すようにSSD3のNAND型フラッシュメモリ13に格納されているが、ホスト装置2の起動時又はプログラム起動時に、NAND型フラッシュメモリ13からDRAM23にロードされる。NAND型フラッシュメモリ13は、OSを格納する記憶領域13A、最適化プログラムを格納する記憶領域13B、関数fを格納する記憶領域13C、及び管理テーブルを格納する記憶領域13Dを含んでいる。また、NAND型フラッシュメモリ13は、ユーザデータを格納する記憶領域図示せずを含んでいる。次に、メモリシステム1の構成例について説明する。メモリシステム1は、例えば、デスクトップコンピュータやノートブック型のポータブルコンピュータとして実現し得る。図5は、メモリシステム1としてのデスクトップコンピュータの概略図である。デスクトップコンピュータ1は、情報処理装置本体40、ディスプレイ25、キーボード29、及びマウス30などを備えている。情報処理装置本体40は、主要なハードウェアが搭載されたマザーボード41、SSD3、及び電源装置42などを備えている。SSD3は、SATAケーブルを介してマザーボード41に物理的に接続され、マザーボード41上に実装されたサウスブリッジを介して、同じくマザーボード上に実装されたCPU20に電気的に接続されている。電源装置42は、デスクトップコンピュータ1で使用される各種電源を発生し、電源ケーブルを介してマザーボード41やSSD3などに電源を供給する。図6は、メモリシステム1としてのポータブルコンピュータの概略図である。ポータブルコンピュータ1は、情報処理装置本体50、及びディスプレイユニット51から構成されている。ディスプレイユニット51は、例えばLCDLiquidCrystalDisplayで構成される表示装置25が組み込まれている。ディスプレイユニット51は、情報処理装置本体50に対し、この本体50の上面が露出される開放位置と本体2の上面を覆う閉塞位置との間を回動自由に取り付けられている。本体2は薄い箱形の筐体を有しており、その上面には、電源スイッチ52、キーボード29、タッチパッド53等が配置されている。また、本体50も、デスクトップコンピュータと同様に、SSD3、マザーボード、及び電源装置などを備えている。その他、メモリシステム1はスチルカメラ或いはビデオカメラなどの撮像装置などであってもよいし、ゲーム機器やカーナビゲーションシステムなどであってもよい。[2.動作]<2-1.書き込み動作>図7は、SSD3の書き込み動作を示すフローチャートである。SSD3は、ホスト装置2から書き込み命令を受信するステップS10。書き込み命令には、書き込みコマンド、論理アドレス、及びデータが含まれる。続いて、SSDコントローラ11は、DRAM12からフリーブロックテーブルを読み出し、フリーブロックテーブルから物理ブロックIDを取得するステップS11。フリーブロックが存在しない場合は、後述するNAND整理処理を行い、物理ブロックIDを取得するステップS13,S12。続いて、SSDコントローラ11は、取得した物理ブロックIDに対応するフリーブロックに対してプログラム処理を行うステップS14。続いて、SSDコントローラ11は、プログラムされた物理ブロックIDをフリーブロックテーブルから削除するステップS15。続いて、SSDコントローラ11は、アクティブブロックテーブル及びアクティブページテーブルを更新するステップS16。すなわち、プログラムされたブロックに対応する論理アドレス及び物理ブロックIDをアクティブブロックテーブルに追加し、さらに、論理アドレス、物理ブロックID及び物理ページアドレスをアクティブページテーブルに追加する。なお、ステップS14のプログラム処理の前に、書き込み対象の物理ブロックについて消去を行ってもよい。<2-2.NAND整理処理>次に、SSD3のNAND整理処理について説明する。図8は、SSD3のNAND整理処理を示すフローチャートである。ある物理ブロックに対し、その物理ブロックに含まれる全ページのうちアクティブページテーブルに含まれているアクティブページ有効ページは論理アドレスに対応付けられている。一方、ある物理ブロックに含まれる全ページが有効ページであるとは限らず、有効ページに該当しないページ無効ページは論理アドレスに対応付けられていない。物理ブロックは無効ページの分だけデータに空きがあることになり、これら無効ページと有効ページとを分類することでフリーブロックを確保することができる。まず、SSDコントローラ11は、列番号i=0、空き領域累積量s=0に設定するステップS20。続いて、SSDコントローラ11は、DRAM12からアクティブブロックテーブルの先頭行を読み出し、物理ブロックIDを取得するステップS21。ステップS21にて取得した物理ブロックIDを現在物理ブロックIDと呼ぶ。続いて、SSDコントローラ11は、DRAM12からアクティブページテーブルを読み出し、現在物理ブロックIDに含まれる全物理ページアドレスを取得するステップS22。続いて、SSDコントローラ11は、現在物理ブロックのうち無効ページのサイズを算出し、この無効ページサイズを変数vに代入するステップS23。続いて、SSDコントローラ11は、v>0であるか否かを判定しステップS24。v>0である場合は、現在物理ブロックIDを整理対象ブロックリストに追加するステップS26。一方、ステップS24において無効ページがないと判定された場合、SSDコントローラ11は、現在物理ブロックIDをインクリメントして、作業対象を次の物理ブロックIDに移すステップS25。続いて、SSDコントローラ11は、空き領域累積量sに変数vを加算するステップS27。続いて、SSDコントローラ11は、空き領域累積量sが物理ブロックサイズに到達したか否か、すなわちこれまでに取得した無効ページのサイズ総量が物理ブロックサイズに到達したか否かを判定するステップS28。空き領域累積量sが物理ブロックサイズに到達してない場合、列番号iに1を加算した後ステップS25、ステップS21以下の処理を繰り返す。一方、空き領域累積量sが物理ブロックサイズに到達した場合、SSDコントローラ11は、整理対象ブロックリストの全物理ブロックから全アクティブページのデータを読み出し、この読み出したデータをDRAM12に格納するステップS29。続いて、SSDコントローラ11は、整理対象ブロックリストの全物理ブロックに対して消去処理を行うステップS30。続いて、SSDコントローラ11は、アクティブブロックテーブル、フリーブロックテーブル、及びアクティブページテーブルを更新するステップS31。すなわち、消去処理が行われた物理ブロックをアクティブブロックテーブルから削除してフリーブロックテーブルに追加し、また、データが読み出されたアクティブページをアクティブページテーブルから削除する。続いて、SSDコントローラ11は、DRAM12に格納された全アクティブページのデータをフリーブロックにプログラムするステップS32。続いて、SSDコントローラ11は、アクティブブロックテーブル、フリーブロックテーブル、及びアクティブページテーブルを更新するステップS31。すなわち、プログラムされた物理ブロックをフリーブロックテーブルから削除してアクティブブロックテーブルに追加し、また、プログラムされた物理ページをアクティブページテーブルに追加する。このように、NAND整理はNAND型フラッシュメモリ13の読み出し動作、消去動作、及びプログラム動作を多数伴うため、多くの時間を要する。よって、フリーブロックが枯渇した状況で書き込みを行うとNAND整理が発生するため、ホスト装置2からみた書き込み処理速度が低下し、かつNAND型フラッシュメモリ13の信頼性が低下する可能性がある。なお、ステップS30の消去処理はステップS13のNAND整理内では行わずに、ステップS14の書き込み動作直前に行うようにしてもよい。<2-3.削除通知処理>次に、SSD3の削除通知処理について説明する。INCITSATA8ACSで採用されたdatasetmanagementcommand通称、トリムコマンドがある。このトリムコマンドは、削除通知として機能する。削除通知処理は、ホスト装置上でデータが削除された場合、削除されたデータの存在する論理アドレス空間をSSDに通知することにより、以後SSD上でもその領域を空き領域として扱うことができる方式である。削除通知を受信した場合には、SSDは管理テーブルにアクセスして該当領域を無効化する処理を行う。無効化処理では、SSDの管理テーブルを書き換えて該当領域が無効であることにすればよく、実際に該当領域のデータそのものを消さなくてもよいし、消してもよい。図9は、SSD3の削除通知処理を示すフローチャートである。SSD3は、ホスト装置2から削除通知を受信するステップS40。削除通知には、削除コマンド、及び論理アドレスが含まれる。続いて、SSDコントローラ11は、DRAM12からアクティブページテーブルを読み出すステップS41。続いて、SSDコントローラ11は、削除通知によって指定された削除対象となる論理アドレス領域に対応する全ページのうち、ページ内全領域が削除通知対象である全ページをアクティブページテーブルから削除するステップS42。続いて、SSDコントローラ11は、DRAM12からアクティブブロックテーブルを読み出すステップS43。続いて、SSDコントローラ11は、アクティブブロックテーブルを参照し、アクティブページテーブルに物理ブロックIDを持たない物理ブロックをアクティブブロックテーブルから削除しフリーブロックテーブルに追加するステップS44。このように、SSD3は、NAND整理以外に、削除通知処理によってもフリーブロックを確保することができる。なお、ホスト装置2が削除通知を行うデータサイズは、SSD3が管理テーブルで管理している最小データサイズ以上であればよい。<2-4.読み出し動作>次に、SSD3の読み出し動作について説明する。図10は、SSD3の読み出し動作を示すフローチャートである。SSD3は、ホスト装置2から読み出し命令を受信するステップS50。読み出し命令には、読み出しコマンド、及び論理アドレスが含まれる。続いて、SSDコントローラ11は、DRAM12からアクティブブロックテーブルを読み出すステップS51。続いて、SSDコントローラ11は、ホスト装置2から受信した論理アドレスに対応する物理ブロックIDを参照するステップS52。アクティブブロックテーブルに物理ブロックIDが存在する場合、SSDコントローラ11は、以後、既書き込み領域読み出し処理を行う。すなわち、SSDコントローラ11は、アクティブページテーブルを読み出しステップS53、NAND型フラッシュメモリ13の該当ページを読み出すステップS54。そして、SSDコントローラ11は、読み出したデータをホスト装置2に送信するステップS55。一方、ホスト装置2から受信した論理アドレスに対応する物理ブロックIDがアクティブブロックテーブルに存在しない場合、SSDコントローラ11は、以後、未書き込み領域読み出し処理を行う。すなわち、SSDコントローラ11は、NAND型フラッシュメモリ13の読み出し処理を行わず、関数fで表されたデータをホスト装置2からの要求に対応するデータ長分ホスト装置2に送信するステップS56。具体的には、関数fで表されたデータは、アドレスAi、データDiとすると、関数fAi=Diiは0以上の整数を満たす。関数fは、ユーザ側で自由に設定することが可能であり、本実施形態では、論理アドレスLBA:LogicalBlockAddressingを変数として、関数fLBA=0と定義する。この例の場合、SSDコントローラ11は、ホスト装置2からの要求に対応するデータ長分の0で埋め尽くされたデータをホスト装置2に送信する。未書き込み領域読み出し動作は、NAND型フラッシュメモリ13の読み出し処理が伴わない。このため、アクティブページテーブルの読み出し処理及びNAND型フラッシュメモリ13の読み出し処理が伴う既書き込み領域読み出し動作に比べ、未書き込み領域読み出し動作は高速に行われる。<2-5.最適化処理>次に、ホスト装置2の最適化処理について説明する。図11は、ホスト装置2の最適化処理を示すフローチャートである。論理アドレス空間を物理ページサイズで区切って考え、区切った要素を論理ページと定義する。ホスト装置2のCPU20は、ある特定のフラグこれを最適化フラグと呼ぶを監視しステップS60、最適化フラグが立っていることを確認すると、現在論理アドレスを0に設定するステップS61。続いて、CPU20は、現在論理アドレスからページサイズ分のデータ、すなわち現在論理アドレスから1つの論理ページ分を読み出すための読み出し命令をSSD3に送信するステップS62。これに対して、SSD3は、ホスト装置2から受信した読み出し命令に従って読み出し処理を行い、読み出しデータをホスト装置2に送信する。続いて、CPU20は、SSD3から1つの論理ページ分の読み出しデータを受信するステップS63。続いて、CPU20は、読み出しデータが全て0で埋め尽くされているか否かを判定するステップS64。読み出しデータが全て0で埋め尽くされている場合、CPU20は、読み出した論理アドレス領域に対して削除通知を行うステップS65。これに対して、SSD3は、前述した削除通知処理を行う。続いて、CPU20は、現在論理アドレスにページサイズ分を追加するステップS66。続いて、CPU20は、全論理ページを読み出すまで、ステップS62~S66の処理を繰り返すステップS67。この最適化処理によって削除通知処理が行われた論理ページ群は、対応する論理アドレスがアクティブページテーブルから削除されるため、SSD3内部では物理アドレスに対応付けられていない。削除通知処理が行われた論理ページに関してSSD3に読み出し命令を送信すると、図10の未書き込み領域読み出し動作が行われ、ホスト装置2は0で埋め尽くされたデータをSSD3から受信するため、ホスト装置2からみたSSD3内部のデータは最適化処理前と変わらない。一方、未書き込み領域読み出し動作は、既書き込み領域読み出し動作よりも高速に行われるため、削除通知対象の論理ページ読み出しのパフォーマンスは、最適化処理前に比べて増大する。なお、ホスト装置2は、最適化フラグが立っていることを確認し、かつSSD3がアイドル状態の時に最適化処理を行うようにしてもよい。これにより、SSD3の通常動作書き込み動作などにおけるパフォーマンスが低下するのを防ぐことができる。この最適化処理は、全LBA領域について行ってもよいし、一部のLBA領域に限定して行ってもよい。例えば、最適化処理を行う範囲を10ギガバイトの範囲に限定して行ってもよい。その場合、例えば、初回の最適化処理はLBA=0から10ギガバイトの範囲にわたって実行し、次に最適化フラグが立って最適化処理が開始されると、前回最適化を行った領域の末尾の次のLBA例えばLBA=010ギガバイト1から10ギガバイトの範囲にわたって実行するようにしてもよい。このようにして、全LBA領域を複数回に分けて最適化処理を行うことで、1回の最適化処理にかかる時間を短縮することができる。<2-6.最適化フラグ設定処理>次に、ホスト装置2の最適化フラグ設定処理について説明する。図12は、ホスト装置2の最適化フラグ設定処理を示すフローチャートである。ユーザは、ホスト装置2の最適化プログラムを起動し、GUIGraphicalUserInterface上のボタン若しくはメニューを選択して最適化機能を呼び出す、又は、コマンドラインから最適化プログラムを起動し、コマンドを入力して最適化機能を呼び出す。図13は、最適化プログラムのGUIの一例を示す概略図である。図13のGUIに対して、ユーザはマウスなどを用いてOKボタンを選択する。このようなユーザの操作により、ホスト装置2の最適化機能が呼び出される。ホスト装置2のCPU20は、ユーザによって最適化機能が呼び出されたか否かを監視しているステップS70。ユーザによって最適化機能が呼び出されると、CPU20は、DRAM23の記憶領域23Cに最適化フラグを立てる。以後、最適化フラグが立っていることが確認されると、前述した最適化処理が行われる。[3.効果]以上詳述した第1の実施形態によれば、以下のような効果が得られる。ホスト装置2上で有効なユーザデータのうち特定パターンの繰り返しであるような論理アドレス領域に関して、ホスト装置2からSSD3に対し削除通知を送信し、当該論理アドレス領域を削除する。そして、削除通知処理が行われたユーザデータをNAND型フラッシュメモリ13以外の特定領域DRAMなどから読み出すことで、当該ユーザデータの読み出し動作を高速化することができる。また、SSD3に削除通知を行うことでフリーブロックを確保することができるため、最適化処理後は書き込み動作のパフォーマンスが向上し、かつSSD3の信頼性が劣化するのを低減することができる。この効果は、ホスト装置2上で有効なユーザデータのうち0で埋め尽くされたデータが多ければ多いほど効果が増大する。図14は、0で埋め尽くされたデータの割合と平均読み出し速度との関係を示すグラフである。平均読み出し速度とは、ある特定の期間に発生した読み出し動作の読み出し速度を平均したものである。SSD3に格納されたユーザデータのうち0で埋め尽くされたデータの割合が大きくなるほど未書き込み領域読み出し動作が増えるため、平均読み出し速度が速くなる。図15は、0で埋め尽くされたデータの割合とフリーブロック量との関係を示すグラフである。図15のグラフのかさ上げされた部分は、ユーザ領域以外のフリーブロック量である。SSD3に格納されたユーザデータのうち0で埋め尽くされたデータの割合が大きくなるほどホスト装置2からみたフリーブロック量が多くなる。例えば、Windows登録商標においてSSD3に対しフルフォーマットを行うと、SSD3の全論理アドレスに対し0データが書き込まれることになる。これにより、フリーブロックの数が大幅に減少してしまうため、書き込みパフォーマンスが低下し、以後の書き込み動作でSSD3の信頼性が劣化しやすくなる。ところが、フルフォーマット後のSSD3に対して本実施形態の最適化処理を行うと、0で埋め尽くされた領域全てに関し削除通知処理が行われるため、フリーブロックの数が大幅に増大する。これにより、書き込みパフォーマンスが増大し、以後の書き込み動作におけるSSD3の信頼性が劣化するのを低減することができる。本実施形態は、SSD3がアイドル状態の時にSSD3に対して最適化処理を行って管理テーブルを書き換えるソフトウェアやファームウェアをホスト装置2に実装するだけで実現できる。よって、本実施形態を実現するための機能を低コストかつ容易に実現できる。また、SSD3がアイドル状態の時に最適化処理が行われるようにすることが望ましく、それにより本実施形態を実現した場合でもSSD3の書き込み等のパフォーマンス低下を伴わない。なお、上記説明では、未書き込み領域読み出し動作においてSSDコントローラ11がホスト装置2に送信するデータとして0で埋め尽くされたデータを用いたが、関数fで表されたデータはユーザ側で自由に設定することが可能である。例えば、関数fLBA=1と定義することで、1で埋め尽くされたデータを用いてもよい。また、関数fLBA=LBAと定義することで、LBAで表されたデータを用いてもよい。さらに、論理アドレス空間を分割して管理し、第1のパーティションに対しては削除通知に0で埋め尽くされたデータを用い、第2のパーティションに対しては削除通知に1で埋め尽くされたデータを用いるようにしてもよい。この場合の関数fは、例えば、fLBA=0LBA<Cap/2fLBA=1LBA≧Cap/2と定義される。Capは、SSD3の記憶容量である。また、最適化処理でSSD3から読み出された論理ページが特定のデータパターンXXのデータサイズはページサイズと同じと同じである場合に、ホスト装置2が削除通知を行うようにしてもよい。この場合、関数f=Xになっているものとする。この削除通知をSSD3が受信した場合、SSDコントローラ11は、未書き込み領域読み出し動作においてDRAM12に格納されたデータパターンXをホスト装置2に送信する。削除通知に特定のデータパターンを用いる例は、メモリシステム1が頻繁に同じデータを扱う場合に特に有効である。本実施形態では、簡単のため、NAND型フラッシュメモリの物理アドレスは管理情報においてLBAに対して直接関連付けられていたが、例えば特開2009-217603号のようにセクタサイズの2以上の自然数倍の管理単位を用いてLBAを管理し、LBAではなく、上記管理単位とNAND型フラッシュメモリとの対応関係を管理情報に記述するようにしてもよい。LBAの管理単位などのように、NAND型フラッシュメモリの物理アドレスとLBAとの対応関係を記述する管理情報は様々な形態をとりうるが、物理アドレスとLBAとの対応関係を記述するテーブル論物変換テーブルの取る形態の詳細は、本実施形態の本質には影響しない。また、本実施形態においては、NAND型フラッシュメモリにホスト装置から受信したデータが書き込まれるとき、ホスト装置から受信したデータそのもの平文が記録されるとしたが、平文をランダマイズしてNAND型フラッシュメモリに記憶したり、平文を暗号化してNAND型フラッシュメモリに記憶したりする場合にも本実施形態は適用可能である。[第2の実施形態]第1の実施形態の最適化処理では、全論理アドレスを読み出すようにしているのに対して、第2の実施形態では、ホスト装置2内のOSの管理領域にアクセスすることでファイルリストを取得し、ファイル単位で最適化処理を行うようにしている。図16は、第2の実施形態に係るホスト装置2の最適化処理を示すフローチャートである。ホスト装置2のCPU20は、最適化フラグを監視しステップS80、最適化フラグが立っていることを確認すると、OSからファイル管理情報を取得し、ファイル管理情報に登録されている全ファイルを最適化対象ファイルリストに追加するステップS81。最適化対象ファイルリストは、例えばホスト装置2のDRAM23に格納される。続いて、CPU20は、最適化対象ファイルリストの先頭ファイルを現在ファイルに設定するステップS82。続いて、CPU20は、現在ファイルを読み出すための読み出し命令をSSD3に送信するステップS83。これに対して、SSD3は、ホスト装置2から受信した読み出し命令に従って読み出し処理を行い、読み出しデータをホスト装置2に送信する。続いて、CPU20は、SSD3から現在ファイルに対応する読み出しデータを受信するステップS84。続いて、CPU20は、読み出したファイル内に0で埋め尽くされた論理ページが存在するか否かを判定するステップS85。0で埋め尽くされた論理ページが存在する場合、CPU20は、該当する論理ページに対して削除通知を行うステップS86。これに対して、SSD3は、前述した削除通知処理を行う。続いて、CPU20は、最適化対象ファイルリスト内の次のファイルを現在ファイルに設定するステップS87。続いて、CPU20は、最適化対象ファイルリスト内の全ファイルを読み出すまで、ステップS83~S87の処理を繰り返すステップS88。以上詳述したように第2の実施形態では、最適化処理において、全論理アドレス空間に対する読み出し動作を行わず、ホスト装置2上で有効なファイルに対してのみ読み出し動作を行うようにしている。このため、最適化対象のデータ量を減らすことができるため、最適化処理にかかる時間を短縮することができる。この最適化処理は、全ファイルについて行ってもよいし、一部のファイルに限定して行ってもよい。例えば、最適化処理を行うファイル数を10000個に限定して行ってもよい。その場合、例えば、初回の最適化処理はファイルリスト先頭から10000個にわたって実行し、次に最適化フラグが立って最適化処理が開始されると、前回最適化を行った最後のファイルの次のファイル例えば、ファイルリストの0100001番目から10000個にわたって実行するようにしてもよい。或いは、最適化処理を行うファイルの容量を10ギガバイトに限定して行ってもよい。その場合、例えば、初回の最適化処理はファイルリスト先頭から合計10ギガバイト分のファイルにわたって実行し、次に最適化フラグが立って最適化処理が開始されると、前回最適化を行った最後のファイルの次のファイルから合計10ギガバイト分のファイルにわたって実行するようにしてもよい。このようにして、全ファイルを複数回に分けて最適化処理を行うことで、1回の最適化処理にかかる時間を短縮することができる。[第3の実施形態]第3の実施形態は、最適化フラグ設定処理に関する他の実施例であり、ホスト装置2の時計が規定の時刻に到達した時に、最適化フラグを立てるようにしている。図17は、第3の実施形態に係るホスト装置2の最適化フラグ設定処理を示すフローチャートである。ホスト装置2は、時計を有しており、ホスト装置2のCPU20は、この時計が規定の時刻に到達したか否かを監視しているステップS90。規定の時刻に到達した場合、CPU20は、DRAM23の記憶領域23Cに最適化フラグを立てる。以後、最適化フラグが立っていることが確認されると、前述した最適化処理が行われる。第3の実施形態では、メモリシステム1は、ユーザの明示的な指示なしにバックグラウンドで最適化処理を行うことが可能である。[第4の実施形態]第4の実施形態は、最適化フラグ設定処理に関する他の実施例であり、SSD3からホスト装置2へ送信される情報をトリガとして、最適化フラグ設定処理を開始するようにしている。SSD3からホスト装置2へ送信される最適化処理の実施を促す情報を最適化起動情報と呼ぶ。SSD3内部で管理している情報の一つとして、例えば、フリーブロック数がある。第4の実施形態では、このフリーブロック数を用いて最適化起動情報を生成する。まずは、SSD3側の動作について説明する。図18は、第4の実施形態に係るSSD3の最適化起動情報の生成処理を示すフローチャートである。SSDコントローラ11は、フリーブロック数を監視しておりステップS100、フリーブロック数が規定値例えば、設計時に予め決められている規定値を下回った場合、SSDコントローラ11は、ホスト装置2に最適化起動情報を送信するステップS101。上記規定値としては、例えば、SSD3の書き込み動作において、書き込み速度を一定以上に保つために必要なフリーブロックの最低数を用いることができる。次に、ホスト装置2側の動作について説明する。図19は、ホスト装置2の最適化フラグ設定処理を示すフローチャートである。ホスト装置2のCPU20は、SSD3から最適化起動情報を受信したか否かを監視しているステップS110。最適化起動情報を受信すると、CPU20は、DRAM23の記憶領域23Cに最適化フラグを立てる。以後、最適化フラグが立っていることが確認されると、前述した最適化処理が行われる。最適化起動情報の監視及び授受には、例えば、メモリの自己診断機能であるSMARTSelfMonitoringAnalysisandReportingTechnologyのコマンドであるSMARTREADDATAB0hD0h又はベンダー独自のコマンドを用いてもよい。或いは、CPU20は、例えば、SMARTのコマンドであるSMARTREADDATAB0hD0h又はベンダー独自のコマンドを用いてSSD3のフリーブロック数を直接監視し、フリーブロック数が規定値例えば、設計時に予め決められている規定値で、最適化プログラム23B上に保持されているを下回った場合、CPU20がDRAM23の記憶領域23Cに最適化フラグを立てるようにしてもよい。第4の実施形態では、SSD3側の最適なタイミングで最適化処理を行うことが可能である。[第5の実施形態]第5の実施形態は、関数fで定義されるデータパターンを、SSD3の使用状況に応じて変更可能なようにメモリシステム1を構成している。図20は、第5の実施形態に係るホスト装置2の最適化処理を示すフローチャートである。特定のデータパターンをXと表記し、関数f=Xになっているものとする。図20のステップS120~S123は、図11のステップS60~S63と同じである。続いて、CPU20は、読み出しデータが関数fで表されるデータパターンと同じであるか否かを判定するステップS124。読み出しデータが関数fで表されるデータパターンと同じである場合、CPU20は、読み出した論理アドレス領域に対して削除通知を行うステップS125。これに対して、SSD3は、前述した削除通知処理を行う。続いて、CPU20は、現在論理アドレスにページサイズ分を追加するステップS126。続いて、CPU20は、全論理ページを読み出すまで、ステップS122~S126の処理を繰り返すステップS127。続いて、CPU20は、全論理アドレス領域のうちデータパターンXの領域の合計サイズを算出するステップS128。続いて、CPU20は、全論理アドレス領域のうちデータパターンXと異なるデータパターンX ́の領域の合計サイズを算出するステップS129。続いて、CPU20は、データパターンX ́の合計サイズがデータパターンXの合計サイズより大きいか否かを判定するステップS130。データパターンX ́の合計サイズがデータパターンXの合計サイズ以下である場合、CPU20は、最適化処理を終了する。一方、データパターンX ́の合計サイズがデータパターンXの合計サイズより大きい場合、DRAM23の記憶領域23Dに格納されている関数f=Xを関数f=X ́に書き換えるステップS131。ステップ130における判定条件をデータパターンX ́の合計サイズ≧データパターンXの合計サイズとすると、データパターンX ́の合計サイズとデータパターンXの合計サイズがほぼ等しい時に関数fの書き換えが頻繁に発生するため、例えばデータパターンX ́の合計サイズ≧1.1×データパターンXの合計サイズのように、判定条件にマージンを持たせることが望ましい。現時点では、データパターンXである論理ページ群については削除通知処理が行われているので、SSD3は、この論理ページをアクティブページとして管理していない。このため、CPU20は、データパターンXである論理ページ群についてデータパターンXに書き換える書き込み命令をSSD3に送信するステップS132。続いて、CPU20は、NAND型フラッシュメモリ13の記憶領域13Cに格納されている関数f=Xを関数f=X ́に書き換える命令をSSD3に送信するステップS133。関数fの書き換え命令は、例えばベンダー独自のコマンドを用いてもよい。これに対して、SSD3は、NAND型フラッシュメモリ13の記憶領域13Cに関数f=X ́を書き込むとともに、DRAM12の関数fを更新する。以上詳述したように第5の実施形態によれば、削除通知対象であるデータパターンを変更することができる。これにより、最も存在確率が高いデータパターンに対して未書き込み領域読み出し動作が行われることになるので、読み出し動作を高速化することができる。なお、ファイル単位で最適化処理を行う第2の実施形態に第5の実施形態を適用することも可能である。[第6の実施形態]第6の実施形態は、SSD3自身が前述した最適化処理と同じ処理を行うようにしている。図21は、第6の実施形態に係るメモリシステム1のブロック図である。SSD3のDRAM12は、最適化フラグを格納する記憶領域12Cを含んでいる。その他の構成は、図1と同じである。本実施形態では、ホスト装置2は、最適化プログラム23B、最適化フラグ23C、及び関数f23Dを保持しなくてもよい。SSDコントローラ11は、DRAM12の記憶領域12Cに最適化フラグを立てる。図22は、DRAM12に格納される管理テーブルの一部を説明する図である。最適化処理を重複して行わないために、アクティブページテーブルには、最適化済マークが追加されていることが望ましい。最適化済マークは、論理アドレスに対応して設けられている。最適化済マークは、後述する最適化処理が実施されたか否かを判断するための情報である。SSD3の書き込み動作は、第1の実施形態で示した図7のフローチャートと同じである。ただし、図7のステップS16においてアクティブページテーブルを更新する際、最適化済マーク=false偽を追加する。次に、最適化処理について説明する。図23は、SSD3の最適化処理を示すフローチャートである。SSDコントローラ11は、DRAM12の記憶領域12Cに最適化フラグが立っていることを確認するとステップS140、アクティブページテーブルの1行目を現在行に設定するステップS141。続いて、SSDコントローラ11は、DRAM12からアクティブページテーブルの現在行を読み出すステップS142。続いて、SSDコントローラ11は、現在行に含まれる最適化済マークを確認することで、現在行が示す物理ページが最適化済みであるか否かを判定するステップS143。物理ページが最適化済みである場合最適化済マーク=True真は、当該物理ページに対して最適化処理は行われない。一方、物理ページが最適化済みでない場合最適化済マーク=false、SSDコントローラ11は、NAND型フラッシュメモリ13から現在行が示す物理ページを読み出すステップS144。続いて、SSDコントローラ11は、読み出しデータが0で埋め尽くされている関数fLBA=0の場合か否かを判定するステップS145。読み出しデータが0で埋め尽くされている場合、SSDコントローラ11は、アクティブページテーブルから現在行を削除するステップS146。或いは、現在行の要素に無効なデータを書き込むことで、現在行を無効化してもよい。読み出しデータが0で埋め尽くされていない場合、SSDコントローラ11は、現在行の最適化済マークにTrueを書き込むステップS147。続いて、SSDコントローラ11は、アクティブページテーブルの次の行を現在行に設定するステップS148。続いて、SSDコントローラ11は、ホスト装置2から割込み命令を受信した場合は、最適化処理を終了すべく、ステップS151に移行する。ホスト装置2から割込み命令を受信していない場合は、SSDコントローラ11は、アクティブページテーブルの全行を読み出すまで、ステップS142~S148の処理を繰り返すステップS150。続いて、SSDコントローラ11は、アクティブブロックテーブル及びフリーブロックテーブルを更新するステップS151。すなわち、アクティブブロックテーブルを参照し、アクティブページテーブルに要素を持たない物理ブロックをアクティブブロックテーブルから削除してフリーブロックテーブルに追加する。なお、割込み命令が急を要する場合には、アクティブブロックテーブル及びフリーブロックテーブルの更新を後で行うようにしてもよい。SSD3の読み出し動作及びNAND整理動作については、第1の実施形態と同じである。従って、最適化処理によって削除された論理ページに関してホスト装置2がSSD3に読み出し命令を送信すると、図10の未書き込み領域読み出し動作が行われ、ホスト装置2は0で埋め尽くされたデータをSSD3から受信する関数fLBA=0の場合ため、ホスト装置2からみたSSD3内部のデータは最適化処理前と変わらない。一方、未書き込み領域読み出し動作は、既書き込み領域読み出し動作よりも高速に行われるため、最適化対象の論理ページ読み出しのパフォーマンスは、最適化処理前に比べて増大する。また、第6の実施形態によれば、ホスト装置2の処理負担を軽減することができる。なお、最適化フラグを立てる条件としては、ホスト装置2から、例えばベンダー独自のコマンドなどによって明示的に指示された場合でもよいし、ホスト装置2から明示的に指示された場合でなくてもよい。例えば、ホスト装置2から一定期間例えば10秒アクセスがない場合に、SSDコントローラ11がDRAM12の記憶領域12Cに最適化フラグを立てるようにしてもよい。また、第4の実施形態と同様に、SSDコントローラ11は、フリーブロック数を監視しており、フリーブロック数が規定値例えば、設計時に予め決められている規定値を下回った場合に、DRAM12の記憶領域12Cに最適化フラグを立てるようにしてもよい。上記最適化は、アクティブページテーブルの全要素について行うようにしてもよいが、一部の要素に限定して行うようにしてもよい。例えば、各最適化動作において、10000個の要素に限定して行うようにしてもよい。この場合、初回の最適化ではアクティブページテーブルの0番目~9999番目の要素について最適化を行い、次回の最適化では10000番目~19999番目の要素について最適化を行い、次回の最適化では20000番目~29999番目の要素について最適化を行う、というようにしてもよい。このようにアクティブページテーブルを分割して最適化を行うことで、一回の最適化に要する時間を短縮することができる。なお、上記説明では、未書き込み領域読み出し動作においてSSDコントローラ11がホスト装置2に送信するデータとして0で埋め尽くされたデータを用いたが関数fLBA=0の場合、関数fで表されたデータはユーザ側で自由に設定することが可能であり、ステップS145において、データパターンと関数fの比較が行われる。例えば、関数fLBA=1と定義することで、1で埋め尽くされたデータを用いてもよい。また、関数fLBA=LBAと定義することで、LBAで表されたデータを用いてもよい。さらに、論理アドレス空間を分割して管理し、第1のパーティションに対しては最適化に0で埋め尽くされたデータを用い、第2のパーティションに対しては最適化に1で埋め尽くされたデータを用いるようにしてもよい。この場合の関数fは、例えば、fLBA=0LBA<Cap/2fLBA=1LBA≧Cap/2と定義される。Capは、SSD3の記憶容量である。また、ステップS145で、NAND型フラッシュメモリ13のあるLBAから読み出されたデータが特定のデータパターンXXのデータサイズはページサイズと同じと同じである場合に、SSDコントローラ11が最適化処理を行うようにしてもよいステップS146。この場合、関数f=Xに該当する。この削除通知をSSD3が受信した場合、SSDコントローラ11は、未書き込み領域読み出し動作においてDRAM12に格納されたデータパターンXをホスト装置2に送信する。削除通知に特定のデータパターンを用いる例は、メモリシステム1が頻繁に同じデータを扱う場合に特に有効である。本実施形態では、簡単のため、NAND型フラッシュメモリの物理アドレスは管理情報においてLBAに対して直接関連付けられていたが、例えば特開2009-217603号のようにセクタサイズの2以上の自然数倍の管理単位を用いてLBAを管理し、LBAではなく、上記管理単位とNAND型フラッシュメモリとの対応関係を管理情報に記述するようにしてもよい。LBAの管理単位などのように、NAND型フラッシュメモリの物理アドレスとLBAとの対応関係を記述する管理情報は様々な形態をとりうるが、物理アドレスとLBAとの対応関係を記述するテーブル論物変換テーブルの取る形態の詳細は、本実施形態の本質には影響しない。また、本実施形態においては、NAND型フラッシュメモリにホスト装置から受信したデータが書き込まれるとき、ホスト装置から受信したデータそのもの平文が記録されるとしたが、平文をランダマイズしてNAND型フラッシュメモリに記憶したり、平文を暗号化してNAND型フラッシュメモリに記憶したりする場合にも本実施形態は適用可能である。その際、ステップS145におけるデータの比較は、復号後の平文について行われることが望ましいが、復号前のランダマイズデータ又は暗号化データについて行ってもよい。[第7の実施形態]第7の実施形態は、ホスト装置がある論理アドレス領域をSSDから読み出したデータが比較元データと同一である場合、ホスト装置が上記論理アドレス領域に対して削除通知を行う。そして、上記論理アドレス領域に対応する論理アドレスを、NAND型フラッシュメモリ上の物理アドレスを疑似的に割り当てた比較元データ領域に対応するよう管理テーブルを書き換えることで、繰り返しパターンであるようなユーザデータの読み出し動作を高速化し、SSDが利用可能なフリーブロックを増加させるようにしている。[1.メモリシステムの構成]比較元データ領域に格納されているデータ比較元データがNAND型フラッシュメモリの物理アドレス領域で繰り返し存在する場合、上記物理アドレス領域に対応するLBA論理アドレスは本実施形態により比較元データ領域に全て対応付けられる。これにより、最大で繰り返しデータパターンのデータ量-繰り返しデータ領域のデータ量に相当する物理ブロックがフリーブロックとなるため、SSDコントローラが利用可能なフリーブロックを増加させることができる。上記比較元データ領域は、DRAMなどのRAM、SSDコントローラ内のLSI若しくはRAM、又はNAND型フラッシュメモリ上に割り当てられる。それぞれの場合について以下に説明する。なお、本実施形態では簡単のため、NAND型フラッシュメモリの最小管理単位は物理ページサイズに等しいとする一般的には最小管理単位は物理ページサイズの自然数倍であればよい。<比較元データ領域がDRAM上の場合>図24は、比較元データ領域がDRAM12上に割り当てられる場合のメモリシステム1のブロック図である。以後、簡単のため、NAND型フラッシュメモリ13の個別チップはブロック図から省略する。DRAM12は、比較元データを格納する記憶領域12Dを備えている。NAND型フラッシュメモリ13は、バックアップ用の比較元データ以後、バックアップ比較元データというを格納する記憶領域13Eを備えている。NAND型フラッシュメモリ13の記憶領域13Eには、工場出荷時に例えば0で埋め尽くされたデータのような初期データが書き込まれている。DRAM12の記憶領域12DとNAND型フラッシュメモリ13の記憶領域13Eとのサイズは等しい。SSD3の起動時に、SSDコントローラ11は、バックアップ比較元データをDRAM12に読み出す。本実施形態では、第1の実施形態に比べて、物理アドレスのアドレスマッピング方法に特徴がある。図25は、物理アドレスのマッピングテーブルを説明する図である。図25のhは、16進数表記を意味している。NAND型フラッシュメモリ13の全物理ページには物理ブロックIDと物理ページアドレスとが割り当てられており、全物理ページは互いに区別可能になっている。第1の実施形態では、物理アドレスにはNAND型フラッシュメモリ13の物理ページのみが割り当てられていたが、本実施形態では、DRAM12上の記憶領域12D比較元データ領域がNAND型フラッシュメモリの物理アドレスとして割り当てられる。比較元データ領域の管理単位は、NAND型フラッシュメモリ13の最小管理単位に等しい、つまり本実施形態では、物理ページサイズに等しい。比較元データ領域の疑似的な物理ブロックIDは、アドレスマッピング方式によってNAND型フラッシュメモリ13の物理ブロックIDと区別できるようになっている。比較元データ領域が割り当てられているDRAM12の物理アドレス領域はNAND型フラッシュメモリの物理ページサイズごとに分割して管理され、DRAM12の物理アドレスが小さい順にそれら管理単位に対して疑似的な物理ページアドレスが昇り順で割り当てられる。比較元データ領域のサイズがNAND型フラッシュメモリ13の物理ブロックサイズより大きい場合は、比較元データ領域が割り当てられているDRAM12の物理アドレス領域をNAND型フラッシュメモリ13の物理ブロックサイズごとに分割し、DRAM12の物理アドレスが小さい順にそれらに対して疑似的な物理ブロックIDを昇り順で割り当て、物理ページアドレスは0~最大物理ページアドレスを繰り返す。比較元データ領域に割り当てられている物理ブロックIDは、工場出荷時の段階からアクティブブロックテーブルに登録されている。比較元データ領域のサイズは、NAND型フラッシュメモリ13の最小管理単位の自然数倍になっている、つまり本実施形態では、物理ページサイズの自然数倍になっている。比較元データ領域のサイズはNAND型フラッシュメモリ13の物理ブロックのサイズ以上でもよいし、未満でもよい。以後、本実施形態では簡単のため、比較元データ領域のサイズは1物理ページ分とする図26。比較元データ領域のサイズが複数物理ページ分の場合は、例えば比較元データ領域を物理ページごとに分割して処理すればよいので、実施形態の本質は同じである。<比較元データ領域がSSDコントローラ上の場合>図27は、比較元データ領域がSSDコントローラ11上に割り当てられる場合のメモリシステム1のブロック図である。SSDコントローラ11上のSRAMその他のRAMでもよい又はLSIその他のROMでもよいには、比較元データを格納する記憶領域11A比較元データ領域が割り当てられている。記憶領域11AがRAMの場合は、DRAMの場合と同じように、SSD3の起動時に、SSDコントローラ11は、バックアップ比較元データを記憶領域11Aに読み出す。記憶領域11AがROMの場合は、工場出荷時に例えば0で埋め尽くされたデータのような初期データがROMに書き込まれている。図28に示すように、物理アドレスのマッピングテーブル方式は、前述したDRAMの場合と同じである。以後、本実施形態では簡単のため、比較元データ領域のサイズは1物理ページ分とする図29。<比較元データ領域がNAND型フラッシュメモリ上の場合>図30は、比較元データ領域がNAND型フラッシュメモリ13上に割り当てられる場合のメモリシステム1のブロック図である。NAND型フラッシュメモリ13の一部領域には、比較元データを格納する記憶領域13E比較元データ領域が割り当てられている。NAND型フラッシュメモリ13の比較元データ領域には、工場出荷時に例えば0で埋め尽くされたデータのような初期データが書き込まれている。図31は、物理アドレスのマッピングテーブルを説明する図である。NAND型フラッシュメモリ13の全物理ページには物理ブロックIDと物理ページアドレスとが割り当てられており、かつ、これら物理ページ群の一部が比較元データ領域として割り当てられる。比較元データ領域における管理単位などのデータ管理方式は、その他のNAND型フラッシュメモリ13上の領域と同じである。比較元データ領域のサイズは、NAND型フラッシュメモリ13の最小管理単位の自然数倍になっている、つまり本実施形態では、物理ページサイズの自然数倍になっている。比較元データ領域の先頭アドレスは、いずれかの物理ページの先頭アドレスに等しい物理ページの途中であってはいけない。比較元データ領域に割り当てられている物理ブロックIDは、工場出荷時の段階からアクティブブロックテーブルに登録されていることが望ましい。比較元データ領域のサイズはNAND型フラッシュメモリ13の物理ブロックのサイズ以上でもよいし、未満でもよい。以後、本実施形態では簡単のため、比較元データ領域のサイズは1物理ページ分とする図32。比較元データ領域のサイズが複数物理ページ分の場合は、例えば比較元データ領域を物理ページごとに分割して処理すればよいので、実施形態の本質は同じである。以上、比較元データ領域がDRAM12、SSDコントローラ11、又はNAND型フラッシュメモリ13上に割り当てられた場合について説明してきたが、いずれの場合であっても、比較元データ領域は通常のNAND型フラッシュメモリの物理ページと同等の物理アドレスマッピングがされ、同等に扱うことができる。よって、以降の説明は、比較元データ領域が確保される部分DRAM12、SSDコントローラ11、又はNAND型フラッシュメモリ13に関わらず同じように実施可能である。次に、ホスト装置2の構成について説明する。図33は、ホスト装置2のブロック図である。DRAM23は、関数fの代わりに、比較元データを格納する記憶領域23Eを含んでいる。その他の構成は、第1の実施形態の図3と同じである。ホスト装置2のCPU20は、ホスト装置2の起動時又は最適化プログラムの起動時に、SSD3に比較元データを読み出すための読み出し命令を送信し、SSD3から読み出された比較元データをDRAM23の記憶領域23Eに格納する。読み出しには、読み出しコマンドを用いてもよいし、ベンダー独自のコマンドなどその他のコマンドを用いてもよい。或いは、ホスト装置2に接続された他の外部記憶装置に比較元データを保存しておき、ホスト装置2の起動時又は最適化プログラムの起動時に、ホスト装置2のCPU20が当該外部記憶装置から比較元データを読み出すようにしてもよい。[2.動作]<2-1.NAND整理処理>図34は、SSD3のNAND整理処理を示すフローチャートである。SSDコントローラ11は、列番号i=0、空き領域累積量s=0に設定するステップS160。続いて、SSDコントローラ11は、DRAM12からアクティブブロックテーブルの先頭行を読み出し、物理ブロックIDを取得するステップS161。ステップS161にて取得した物理ブロックIDを現在物理ブロックIDと呼ぶ。続いて、SSDコントローラ11は、図26、図29又は図32のアドレスマッピングに基づき、現在物理ブロックIDが比較元データ領域を含むか否かを判定するステップS162。現在物理ブロックIDが比較元データ領域を含む場合、SSDコントローラ11は、現在物理ブロックIDをインクリメントして、作業対象を次の物理ブロックIDに移すステップS163。現在物理ブロックIDが比較元データ領域を含まない場合、第1の実施形態の図8と同様に、DRAM12からアクティブページテーブルを読み出し、現在物理ブロックIDに含まれる全物理ページアドレスを取得するステップS164。このようにして、比較元データ領域はNAND整理対象から除外される。比較元データ領域はNAND整理対象から除外されるのが望ましいが、比較元データ領域をNAND整理対象としてもよい。以後のフローは第1の実施形態の図8と同じである。<2-2.削除通知処理>次に、SSD3の削除通知処理について説明する。図35は、SSD3の削除通知処理を示すフローチャートである。SSD3は、ホスト装置2から削除通知を受信するステップS180。削除通知には、削除コマンド、及び論理アドレスが含まれる。続いて、SSDコントローラ11は、DRAM12からアクティブページテーブルを読み出すステップS181。続いて、SSDコントローラ11は、アクティブページテーブルにおいて、削除通知によって指定された削除対象となる論理アドレス領域削除対象論理領域を比較元データ領域と関連付けるステップS182。本実施形態では、比較元データ領域のサイズは1物理ページ分であるので、削除対象論理領域は1論理ページ分である。続いて、SSDコントローラ11は、DRAM12からアクティブブロックテーブルを読み出すステップS183。続いて、SSDコントローラ11は、アクティブブロックテーブルを参照し、アクティブページテーブルに物理ブロックIDを持たない物理ブロックをアクティブブロックテーブルから削除してフリーブロックテーブルに追加するステップS184。このように、SSD3は、NAND整理以外に、削除通知処理によってもフリーブロックを確保することができる。<2-3.読み出し動作>次に、SSD3の読み出し動作について説明する。図36は、SSD3の読み出し動作を示すフローチャートである。SSD3は、ホスト装置2から読み出し命令を受信するステップS190。読み出し命令には、読み出しコマンド、及び論理アドレスが含まれる。続いて、SSDコントローラ11は、DRAM12からアクティブブロックテーブルを読み出しステップS191、ホスト装置2から受信した論理アドレスに対応する物理ブロックIDを参照する。続いて、SSDコントローラ11は、アクティブページテーブルを読み出しステップS192、図26、図29又は図32のアドレスマッピングに基づき、該当する物理アドレスの読み出し動作を行うステップS193。この時、読み出し対象がDRAM12やSSDコントローラ11上の比較元データ領域である場合は、読み出し動作が高速に行われるため、読み出しパフォーマンスが向上する。そして、SSDコントローラ11は、読み出したデータをホスト装置2に送信するステップS194。<2-4.最適化処理>次に、ホスト装置2の最適化処理について説明する。図37は、ホスト装置2の最適化処理を示すフローチャートである。最適化フラグの設定処理は、これまでに述べたホスト装置2の処理と同様である。ホスト装置2のCPU20は、最適化フラグを監視しステップS200、最適化フラグが立っていることを確認すると、現在論理アドレスを0に設定するステップS201。続いて、CPU20は、現在論理アドレスからページサイズ分のデータ、すなわち現在論理アドレスから1つの論理ページ分を読み出すための読み出し命令をSSD3に送信するステップS202。これに対して、SSD3は、ホスト装置2から受信した読み出し命令に従って読み出し処理を行い、読み出しデータをホスト装置2に送信する。続いて、CPU20は、SSD3から1つの論理ページ分の読み出しデータを受信するステップS203。続いて、CPU20は、読み出しデータがDRAM23の記憶領域23Eに格納された比較元データと一致しているか否かを判定するステップS204。読み出しデータが比較元データと一致している場合、CPU20は、読み出した論理アドレス領域に対して削除通知を行うステップS205。これに対して、SSD3は、前述した削除通知処理を行う。続いて、CPU20は、現在論理アドレスにページサイズ分を追加するステップS206。続いて、CPU20は、全論理ページを読み出すまで、ステップS202~S206の処理を繰り返すステップS207。最適化を行うLBA領域は全LBA領域であってもよいし、LBA領域の一部であってもよい。この最適化処理によって削除通知処理が行われた論理ページ群は、SSD3内の比較元データ領域の物理アドレスに関連付けられることになる。削除通知処理が行われた論理ページに関してホスト装置2がSSD3に読み出し命令を送信すると、比較元データをSSD3から受信するため、ホスト装置2からみたSSD内部のデータは最適化処理前と変わらない。一方、比較元データ領域がSSD3側のDRAMやSSDコントローラに存在する場合、比較元データの読み出し動作は高速に行われるため、削除通知対象の論理ページ読み出しのパフォーマンスは、最適化処理前に比べて増大する。[3効果]以上詳述した第7の実施形態によれば、以下のような効果が得られる。ホスト装置2上で有効なユーザデータのうち比較元データと同じである論理アドレス領域に関して、ホスト装置2からSSD3に対して削除通知を送信する。これにより、削除通知が行われた論理アドレスがSSD3内の比較元データ領域の物理アドレスに関連付けられる。そして、削除通知処理が行われたユーザデータをSSD3側のDRAMやSSDコントローラに存在する比較元データ領域から読み出すことで、当該ユーザデータの読み出し動作を高速化することができる。また、最適化処理を行うことでフリーブロックを確保することができるため、最適化処理後は書き込み動作のパフォーマンスが向上し、かつSSD3の信頼性劣化が軽減する。本実施形態の効果は、ホスト装置2上で有効なユーザデータのうち比較元データに一致するデータが多ければ多いほど効果が増大する。[4実施例]実施例1第8の実施形態に第2の実施形態を適用してもよい。すなわち、実施例1は、第2の実施形態と同様に、ホスト装置内のOSの管理領域にアクセスすることでファイルリストを取得し、ファイル単位で最適化処理を行うようにしている。図38は、実施例1に係るホスト装置2の最適化処理を示すフローチャートである。ファイル単位でSSD3から読み出しデータを受信する工程は、第2の実施形態の図16と同じである。続いて、ホスト装置2のCPU20は、読み出したファイル内に比較元データと一致する論理ページが存在するか否かを判定するステップS215。比較元データと一致する論理ページが存在する場合、CPU20は、該当する論理ページに対して削除通知を行うステップS216。これに対して、SSD3は、前述した削除通知処理を行う。その後の工程は、第2の実施形態の図16と同じである。以上詳述したように実施例1では、最適化処理において、全論理アドレス空間に対する読み出し動作を行わず、ホスト装置2上で有効なファイルに対してのみ読み出し動作を行うようにしている。このため、最適化対象のデータ量を減らすことができるため、最適化処理にかかる時間を短縮することができる。最適化を行うファイルは全ファイルであってもよいし、一部のファイルであってもよい。実施例2SSD上の比較元データ、及びホスト装置上の比較元データは、工場出荷後に書き換えられてもよい。図39は、実施例2に係るホスト装置2の比較元データ書き換え処理を示すフローチャートである。ホスト装置2のCPU20は、例えばユーザの指示に応答して、DRAM23の記憶領域23Eに格納された旧比較元データを新比較元データに書き換えるステップS220。続いて、CPU20は、比較元データを書き換えるための書き換え命令、及び比較元データをSSD3に送信するステップS221。比較元データを書き換えるための書き換え命令は、通常の書き込み命令でもよいし、ベンダー独自の命令などその他命令でもよい。図40は、実施例2に係るSSD3の比較元データ書き換え処理を示すフローチャートである。SSD3は、ホスト装置2から比較元データの書き換え命令、及び比較元データを受信するステップS230。SSD3の比較元データを書き換える場合、NAND型フラッシュメモリ13のデータに矛盾が生じないようにする必要がある。そこで、SSDコントローラ11は、旧比較元データに関連付けられた論理ページに旧比較元データを書き込むステップS231。例えば、SSDコントローラ11は、旧比較元データをNAND型フラッシュメモリ13の論理アドレス領域のうち旧比較元データに関連付けられた論理ページの数だけ複製し、これら論理ページに旧比較元データを書き込む。続いて、SSDコントローラ11は、NAND型フラッシュメモリ13やDRAM12の比較元データ領域を新比較元データに書き換えるステップS232。本実施形態では、簡単のため、各種物理アドレスは管理情報においてLBAに対して直接関連付けられていたが、例えば特開2009-217603号のようにセクタサイズの2以上の自然数倍の管理単位を用いてLBAを管理し、LBAではなく、上記管理単位とNAND型フラッシュメモリとの対応関係を管理情報に記述するようにしてもよい。LBAの管理単位などのように、NAND型フラッシュメモリの物理アドレスとLBAとの対応関係を記述する管理情報は様々な形態をとりうるが、物理アドレスとLBAとの対応関係を記述するテーブル論物変換テーブルの取る形態の詳細は、本実施形態の本質には影響しない。また、本実施形態においては、NAND型フラッシュメモリにホスト装置から受信したデータが書き込まれるとき、ホスト装置から受信したデータそのもの平文が記録されるとしたが、平文をランダマイズしてNAND型フラッシュメモリに記憶したり、平文を暗号化してNAND型フラッシュメモリに記憶したりする場合にも本実施形態は適用可能である。[第8の実施形態]第8の実施形態は、第7の実施形態で示した比較元データに関する最適化処理をSSD3自身が行うようにしている。SSD3が備える比較元データ領域の構成は第7の実施形態と同じであり、SSD3が備える比較元データ領域は、DRAMなどのRAM、SSDコントローラ内のLSI若しくはRAM、又はNAND型フラッシュメモリ上に割り当てられる。また、第7の実施形態と同様に、本実施形態では簡単のため、比較元データ領域のサイズは1物理ページ分とする。図41は、第8の実施形態に係るSSD3の最適化処理を示すフローチャートである。SSDコントローラ11は、DRAM12の記憶領域12Cに最適化フラグが立っていることを確認するとステップS240、アクティブページテーブルの1行目を現在行に設定するステップS241。続いて、SSDコントローラ11は、DRAM12からアクティブページテーブルの現在行を読み出すステップS242。続いて、SSDコントローラ11は、現在行が示す物理アドレスが比較元データ領域であるか否かを判定するステップS243。現在行が示す物理アドレスが比較元データ領域である場合は、当該物理アドレスに対して最適化処理は行われない。一方、現在行が示す物理アドレスが比較元データ領域でない場合は、NAND型フラッシュメモリ13から現在行が示す物理ページを読み出すステップS244。続いて、SSDコントローラ11は、読み出しデータが比較元データと一致しているか否かを判定するステップS245。読み出しデータが比較元データと一致している場合、SSDコントローラ11は、アクティブページテーブルの現在行に、比較元データ領域に疑似的に割り当てられた物理ブロックID、及び比較元データ領域に疑似的に割り当てられた物理ページアドレスを書き込むステップS246。読み出されたデータが比較元データ領域のデータに一致しない場合は、当該物理ページに対して最適化処理は行われない。その後、第6の実施形態の図23と同様に、アクティブページテーブルの全行に対して最適化処理が行われる。最適化処理は一部の行について行われてもよい。続いて、SSDコントローラ11は、アクティブブロックテーブル及びフリーブロックテーブルを更新するステップS250。すなわち、SSDコントローラ11は、アクティブブロックテーブルを参照し、NAND型フラッシュメモリ13の比較元データ領域以外の領域のうちアクティブページテーブルに要素を持たない物理ブロックに関して、アクティブブロックテーブルから削除してフリーブロックテーブルに追加する。なお、割込み命令が急を要する場合には、アクティブブロックテーブル及びフリーブロックテーブルの更新を後で行うようにしてもよい。SSD3の読み出し動作及びNAND整理動作については、第7の実施形態と同じである。以上詳述したように第8の実施形態によれば、比較元データ領域のデータと同じデータを有する物理ページが複数ある場合、最適化処理により複数の論理アドレスLBAが単一の比較元データ領域に関連付けられることになる。上記論理アドレスに関連付けられていた物理ページは解放されることになり、それによりフリーブロックを新たに確保できた場合は、最適化処理後は書き込み動作のパフォーマンスが向上し、かつSSD3の信頼性劣化が軽減する。また、比較元データ領域がRAM上やSSDコントローラ上に確保されている場合は、比較元データ領域に関連付けられた論理アドレスに関してホスト装置2がSSD3に読み出し命令を送信すると、NAND型フラッシュメモリ13の読み出しが伴う読み出し動作よりも高速に読み出し動作が行われる。これにより、読み出しパフォーマンスが向上する。本実施形態の効果は、NAND型フラッシュメモリ13に書き込まれたデータのうち比較元データ領域に一致するデータが多ければ多いほど増大する。なお、第7の実施形態と同様に、SSD上の比較元データは、工場出荷後に書き換えるようにしてもよい。この場合は、旧比較元データをNAND型フラッシュメモリ13の論理アドレス領域のうち旧比較元データに関連付けられた論理ページの数だけ複製し、これら論理ページに旧比較元データを書き込む。その後、NAND型フラッシュメモリ13やDRAM12の比較元データ領域を新比較元データに書き換えることで、データに矛盾が生じない。また、最適化フラグを立てる条件としては、ホスト装置2から明示的に指示された場合に限らない。すなわち、第6の実施形態と同様に、ホスト装置2から一定期間例えば10秒アクセスがない場合に最適化フラグを立てるようにしてもよいし、フリーブロック数が規定値例えば、設計時に予め決められている規定値を下回った場合に最適化フラグを立てるようにしてもよい。本実施形態では、簡単のため、各種物理アドレスは管理情報においてLBAに対して直接関連付けられていたが、例えば特開2009-217603号のようにセクタサイズの2以上の自然数倍の管理単位を用いてLBAを管理し、LBAではなく、上記管理単位とNAND型フラッシュメモリとの対応関係を管理情報に記述するようにしてもよい。LBAの管理単位などのように、NAND型フラッシュメモリの物理アドレスとLBAとの対応関係を記述する管理情報は様々な形態をとりうるが、物理アドレスとLBAとの対応関係を記述するテーブル論物変換テーブルの取る形態の詳細は、本実施形態の本質には影響しない。また、本実施形態においては、NAND型フラッシュメモリにホスト装置から受信したデータが書き込まれるとき、ホスト装置から受信したデータそのもの平文が記録されるとしたが、平文をランダマイズしてNAND型フラッシュメモリに記憶したり、平文を暗号化してNAND型フラッシュメモリに記憶したりする場合にも本実施形態は適用可能である。その際、ステップS245におけるデータの比較は、復号後の平文について行われることが望ましいが、復号前のランダマイズデータまたは暗号化データについて行ってもよい。[第9の実施形態]第1乃至6の実施形態では、ホスト装置情報処理装置内又はSSD内の関数fLBAを用いて最適化処理を行っている。第9の実施形態では、最適化プログラム設計時、製品設計時若しくは工場出荷前において、又は工場出荷後において関数fLBAを決定する手法について説明する。特に、SSDにインストールするOSやシステム構成が決定しているときは、それらシステムに対して最適な関数fLBAを最適化プログラム設計時、製品設計時若しくは工場出荷前に設定しておくことが望ましい。実施例1図42は、論理アドレス及びデータの一例を示す図である。SSDの論理アドレス領域は、論理アドレスLBAによってホスト装置に認識される。論理アドレスは1セクタが最小管理単位となっており、1セクタは例えば512バイトである。図42のように、各セクタに対し論理アドレス0000h、0001h、0002h、、ba02h、が割り当てられている。図42は、あるSSD搭載パーソナルコンピュータにおいて、予めOSやその他ソフトウェアをインストールしておいてから出荷する場合に、SSDに出荷前に書き込まれるデータパターンの例である。或いは、実際には書かれていなくても、エンドユーザが書き込むであろうデータを想定してシミュレートして以下のように関数fLBAを決定してもよい。SSDは例えば出荷前にフルフォーマットが行われ、全論理アドレス領域に0データが書き込まれる。その後、SSDにOSやその他ソフトウェアがインストールされ、一部セクタに0でないデータが書き込まれる図42のLBA=0000h、0001h、0003h、ba02hなど。書き込みが行われていない論理アドレスに関しては0で埋め尽くされた1セクタ長のデータ0fillセクタが書き込まれたままである図42のLBA=0002h、0004h、0005h、ba03hなど。LBA=ba03h以降はデータが書かれておらず、全て0fillセクタのままである。全論理アドレスを読み出して、0fillセクタと比較することで、図43のような0fillセクタの存在確率分布を導くことができる。また、比較時に、0fillセクタとなっているセクタ数合計を全論理アドレス領域の合計容量で割ると、正味の0fillセクタの割合を導くことができる。関数fLBA=0000固定値、0は512バイト分の繰り返しとすることで、最大で0fillセクタとなっているセクタ数合計相当のブロックを開放してフリーブロックを確保することができる。また、最適化処理は、この正味の0fillセクタの割合が有意であるとき例えば5以上であるときにのみ行うようにしてもよい。また、関数fLBAの書き換えは、この正味の0fillセクタの割合が有意であるとき例えば5以上であるときにのみ行うようにしてもよい。0fillセクタの割合が有意であるかどうかの基準は、例えば、以下のように決定される。1書き込み応答時間が所定値例えば仕様書に提示されたスペック以下となることを保証できるためのフリーブロックの全容量に占める割合2WriteAmplificationWAが所定値以下となることを保証できるためのフリーブロックの全容量に占める割合なお、上記WAは以下のようにして定義される。WA=NAND型フラッシュメモリに書き込まれたデータの総サイズ/ホスト装置からSSDに転送された書き込みデータの総サイズ又は、WA=ブロックの総消去回数×ブロックサイズ/ホスト装置からSSDに転送された書き込みデータの総サイズなお、上記NAND型フラッシュメモリに書き込まれたデータの総サイズは、ユーザデータだけでなく、管理情報、ECCの冗長データ、暗号化キーなど、ユーザデータ以外のデータも含むことが望ましい。実施例2図44は、関数fLBAが固定値とならない例である。ある論理アドレス領域ではあるデータパターンが頻発し、ある論理アドレス領域では別のデータパターンが頻発するというように、論理アドレス領域によって頻発する繰り返しパターンが異なる場合がある。図44のように、論理アドレス領域の前半では0fillセクタが多数存在する一方、論理アドレス領域の後半では1fillデータ全ビットが1で埋め尽くされたデータ、16進数で表すとfで埋め尽くされたデータということになるが多数存在するよう場合を考える。0fillセクタの存在確率分布及び1fillセクタの存在確率分布は図45のようになる。この場合、関数fLBA=0000固定値としたり、関数fLBA=1111固定値とするよりも、関数fLBA=0000hLBA≦c000h,fLBA=1111hLBA≦c000hのように、関数fLBAを2つの論理アドレス領域で異なる値とするほうが、解放できるセクタ数が多くなるため望ましい。実施例3図46は、3つの論理アドレス領域で頻発するデータが異なる場合である。0fillセクタの存在確率分布、320afillセクタ320aデータで埋め尽くされた1セクタ長のデータの存在確率分布、及び1fillセクタの存在確率分布は図47のようになる。この場合、関数fLBA=0000hLBA≦7fffh,fLBA=320a320a320ah8000h≦LBA≦c000h,fLBA=1111hLBA≦c001hのように、関数fLBAを3つの論理アドレス領域で異なる値とするほうが、解放できるセクタ数が多くなるため望ましい。実施例4実施例4では、論理アドレス領域をサイズLごとに分割した管理単位を用いる。サイズLはLBAの最小単位以上である。関数fLBAは管理単位の内部では一定値をとるが、異なる管理単位間では関数fLBAは異なってもよい。先頭の管理単位では関数fLBA=D0固定値、次の管理単位では関数fLBA=D1固定値、というようになる。この場合の関数fLBAは、以下のように表される。fLBA=D00≦LBA≦L-1,fLBA=D1L≦LBA≦2L-1,fLBA=D22L≦LBA≦3L-1,,DkkL≦LBA≦k1L-1,Dkk=0、1、は、サイズがLの任意のデータパターンである。Dkk=0、1、の選び方には任意性があり、最適なDkを選ぶことで最適な関数fLBAが決定される。Dkの各種候補に対して、SSDの出荷前検査装置、情報処理装置のCPU、又はSSDコントローラは、以下の手法で点数付けを行う。1各種セクタごとのデータを読み出す又は、セクタの整数倍ごとにデータを読み出してもよいし、管理単位ごとにデータを読み出してもよい21で読み出したデータが関数fLBAに等しいか否かを判定するセクタの整数倍ごとにデータを読み出した場合は、その中の全セクタが関数fLBAに等しいか否かを判定する3等しい場合は1点、等しくない場合は0点と点数をつける4SSDの全論理アドレス領域に対して点数付けを行い、点数の合計を算出する代表して一部領域のみについて点数付けを行ってもよいそして、もっとも高得点となったDkが最適ということになり、このDkを用いて最適な関数fLBAが決定される。例えば、L=128MiBMiB=1048576バイトとすると、SSDの全論理アドレス領域を始端から均等に128MiBごとに区切り、それぞれの区画を読み出し、区画内全データが関数fLBAに等しいか否かを判定し、等しい場合は1点加算し、合計点数を計算する。その点数計算を例えばD0,D1,=0000,0000,,FFFF,FFFF,,FFFF,0000,,0000,FFFF,のような複数の候補について行い、もっとも得点の高い候補を最適なD0,D1,として選定して関数fLBAを決定する。実施例5実施例4では、管理単位として固定長に区切った区画を用いたが、可変長に区切った区画を管理単位として用いてもよい。この場合の関数fLBAは、以下のように表される。fLBA=D0L0=0≦LBA≦L1-1,fLBA=D1L1≦LBA≦L2-1,fLBA=D2L2≦LBA≦L3-1,,DkLk≦LBA≦Lk1-1,Dkk=0、1、は、サイズがLの任意のデータパターンである。L0<L1<L2<Lk<である。実施例6実施例6は、同一データで埋め尽くされているセクタが少ないため、前述の手法を適用しても十分な効果が得られないが、データとLBAとに一定の相関がある場合のケースである図48。このような場合には、より一般的な関数fLBAの決定手法を用いることが好ましい。例えば、複数の関数fLBAの候補を用意し、それぞれのfLBAに対して前述の点数付けを行い、もっとも高得点のfLBAを最適なfLBAとして決定する。実施例6では、図49に示すように、データとLBAとに一定の相関があるセクタが解放される。実施例7例えば、2種類のパラメータa,bについて、関数fLBA=a×LBAbを定義し、パラメータa,bを振ったものを関数fLBAの候補として用いる。そして、もっとも高得点のa,bを求め、もっとも高得点のa,bを用いて関数fLBAを決定してもよい。図50は、実施例7に係る関数fLBAの決定方法を説明する図である。図50には、パラメータbがb1、b2、b3の場合を図示している。パラメータaを変えると、a,b=a0,b2がもっとも得点の高い。よって、関数fLBA=a0×LBAb2が算出される。より一般的には、LBAがSATA規格において一般的な48ビットLBAである場合にはLBA=d0,d1,d2,,d47tという列数48のベクトルとしtは転置記号、Aを512×48の行列とし、bを列数40961セクタ=512バイト=4096ビットのベクトルとすることで、関数fLBA=A×LBAbというように関数fLBAを列数4096のベクトル形式で取得してもよい。この場合、ベクトルfLBAの1列目が1ビット目のデータに、2列目が2ビット目のデータに、、という対応関係がある。さらに一般的には、LBAがnビットで記述されるとき、LBA=d0,d1,d2,,dn-1tという列数nのベクトルとし、Aをn×mの行列とし、bを列数mのベクトルとすることで、関数fLBA=A×LBAbというように関数fLBAを列数mのベクトル形式で取得してもよい。上記各実施形態で説明したコントローラの処理は、プログラムで実現することも可能である。プログラムのフローチャートは、上記各実施形態で示したフローチャートを使用することができる。上記各実施形態では、不揮発性記憶装置3としてSSDを例に挙げて説明したが、SSD以外の不揮発性記憶装置に広く適用可能であり、例えば、磁性媒体プラッタを用いたハードディスクドライブHDDや、NAND型フラッシュメモリと磁性媒体プラッタの両方を用いたハイブリッドハードディスクドライブハイブリッドHDDに適用することも可能である。本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。"