(57)【特許請求の範囲】
【請求項１】
性能評価ツールが搭載されるホスト装置と、リード及びライト可能な不揮発性メモリを有する外部記憶装置と、前記ホスト装置と前記外部記憶装置を接続するインタフェース部とを備える情報処理装置において、
前記性能評価ツールは、
前記ホスト装置に搭載されたＯＳまたは前記性能評価ツール以外のソフトウェアが前記外部記憶装置と通常にアクセスするときの命令、応答を含むコマンドおよび前記コマンドに関する時間情報を前記ＯＳから取得して、アクセスログとして逐次記録するアクセスログ取得部と、
前記アクセスログに含まれる時間情報を用いて、前記外部記憶装置の性能情報の測定対象期間から前記外部記憶装置に対するコマンドが非アクティブである時間を除外した実効時間情報を演算し、前記アクセスログ取得部によって記録されたアクセスログと前記実効時間情報とを用いて前記外部記憶装置の性能情報を演算して、この演算結果を性能情報ログとして記録する性能ログ取得部と、
を備えることを特徴とする情報処理装置。 
【請求項２】
前記ホスト装置は、複数のスレッドが並列に動作可能なマルチスレッド方式が採用され、
前記性能ログ取得部は、複数のスレッドを総合して性能情報を演算する場合は、前記性能情報の測定対象期間から全てのスレッドにおける前記コマンドが非アクティブである時間を除外した実効時間情報を用いて性能情報を演算することを特徴とする請求項１に記載の情報処理装置。 
【請求項３】
前記ホスト装置は、複数のスレッドが並列に動作可能なマルチスレッド方式が採用され、
前記性能ログ取得部は、スレッド毎に性能情報を演算する場合は、前記性能情報の測定対象期間から当該スレッドにおいて外部記憶装置に対するコマンドが非アクティブである時間を除外した実効時間情報を用いて性能情報を演算することを特徴とする請求項１または２に記載の情報処理装置。 
【請求項４】
前記アクセスログ取得部は、前記アクセスログを記録するアクセスログテーブルを有し、
前記性能ログ取得部は、前記性能情報ログを記録する性能ログテーブルを有することを特徴とする請求項１乃至３の何れか一つに記載の情報処理装置。 
【請求項５】
前記アクセスログは、前記コマンドの開始時刻、終了時刻を示す時刻情報、コマンド内容、データ長を含むことを特徴とする請求項１乃至４の何れか一つに記載の情報処理装置。 
【請求項６】
前記性能情報ログは、転送データレート、処理コマンドレート、応答時間、処理時間のうちの少なくとも一つを含むことを特徴とする１乃至５の何れか一つに記載の情報処理装置。 
【請求項７】
前記性能ログ取得部は、性能情報ログに記憶された性能情報が許容範囲外になると、外部記憶装置の性能を許容範囲内に戻すための最適化処理を前記外部記憶装置に対し実行することを特徴とする請求項１乃至６の何れか一つに記載の情報処理装置。 
【請求項８】
前記外部記憶装置の不揮発性メモリは、ページ単位で読み出し及び書き込みが行われ、前記ページ単位より大きなブロック単位で消去が行われる不揮発性半導体メモリであり、
前記最適化処理は、データが保持されていない前記外部記憶装置の論理アドレスに対する削除通知を前記外部記憶装置に通知することである請求項７に記載の情報処理装置。 
【請求項９】
前記最適化処理は、不連続な前記外部記憶装置の論理アドレス領域を連続アドレス領域とするデフラグ処理をＯＳ上で実行することである請求項７に記載の情報処理装置。 
【請求項１０】
前記外部記憶装置の不揮発性メモリは、ページ単位で読み出し及び書き込みが行われ、前記ページ単位より大きなブロック単位で消去が行われる不揮発性半導体メモリであり、
前記最適化処理は、前記不揮発性半導体メモリのデータ整理を実行させて未使用のブロックを増加させるための命令を外部記憶装置に対し通知することである請求項７に記載の情報処理装置。 
【請求項１１】
前記外部記憶装置の不揮発性メモリは、ページ単位で読み出し及び書き込みが行われ、前記ページ単位より大きなブロック単位で消去が行われる不揮発性半導体メモリであり、前記外部記憶装置は、前記ホスト装置から所定期間アクセスがないとき、前記不揮発性半導体メモリのデータ整理を実行して未使用のブロックを増加させるものであって、
前記最適化処理は、ＯＳまたは性能評価ツール以外のソフトウェアに対し、外部記憶装置の不揮発性メモリを使用するアクセスを所定期間禁止させることである請求項７に記載の情報処理装置。 
【請求項１２】
前記性能ログ取得部は、前記アクセスログ取得部による前記ホスト装置のＣＰＵ使用率を監視し、前記ＣＰＵ使用率が第１の閾値を越えると、前記アクセスログ取得部をアンロードし、このアンロード後、ＣＰＵ使用率が前記閾値より小さい第２の閾値を下回ると、前記アクセスログ取得部をロードすることを特徴とする請求項１乃至１１の何れか一つに記載の情報処理装置。 
【請求項１３】
前記性能ログ取得部は、前記アクセスログ取得部のアンロード、ロードを周期的に実行することを特徴とする請求項１乃至１１の何れか一つに記載の情報処理装置。 
【請求項１４】
リード及びライト可能な不揮発性メモリを有する外部記憶装置に接続されるホスト装置に搭載され、前記外部記憶装置の性能を評価する性能評価ツールにおいて、
前記ホスト装置に搭載されたＯＳまたは前記性能評価ツール以外のソフトウェアが前記外部記憶装置と通常にアクセスするときの命令、応答を含むコマンドと前記コマンドに関する時間情報とを前記ＯＳから取得して、アクセスログとして逐次記録するアクセスログ取得部と、
前記アクセスログに含まれる時間情報を用いて、前記外部記憶装置の性能情報の測定対象期間から前記外部記憶装置に対するコマンドが非アクティブである時間を除外した実効時間情報を演算し、前記アクセスログ取得部によって記録されたアクセスログと前記実効時間情報とを用いて前記外部記憶装置の性能情報を演算して、この演算結果を性能情報ログとして記録する性能ログ取得部と、
を備えることを特徴とする性能評価ツール。 
【請求項１５】
前記ホスト装置は、複数のスレッドが並列に動作可能なマルチスレッド方式が採用され、
前記性能ログ取得部は、複数のスレッドを総合して性能情報を演算する場合は、前記性能情報の測定対象期間から全てのスレッドにおける前記コマンドが非アクティブである時間を除外した実効時間情報を用いて性能情報を演算することを特徴とする請求項１４に記載の性能評価ツール。 
【請求項１６】
前記ホスト装置は、複数のスレッドが並列に動作可能なマルチスレッド方式が採用され、
前記性能ログ取得部は、スレッド毎に性能情報を演算する場合は、前記性能情報の測定対象期間から当該スレッドにおいて外部記憶装置に対するコマンドが非アクティブである時間を除外した実効時間情報を用いて性能情報を演算することを特徴とする請求項１４または１５に記載の性能評価ツール。 
【請求項１７】
ホスト装置にインタフェースを介して接続される外部記憶装置であって、リード及びライト可能な不揮発性メモリを有する外部記憶装置の性能を評価する性能評価方法において、
前記ホスト装置に搭載されたＯＳまたは性能評価ツール以外のソフトウェアが前記外部記憶装置と通常にアクセスするときの命令、応答を含むコマンドと前記コマンドに関する時間情報とを前記ＯＳから取得して、アクセスログとして逐次記録し、
前記アクセスログに含まれる時間情報を用いて、前記外部記憶装置の性能情報の測定対象期間から前記外部記憶装置に対するコマンドが非アクティブである時間を除外した実効時間情報を演算し、前記記録されたアクセスログと前記実効時間情報とを用いて前記外部記憶装置の性能情報を演算して、この演算結果を性能情報ログとして記録する
ことを特徴とする外部記憶装置の性能評価方法。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置、性能評価ツール、外部記憶装置の性能評価方法に関する。
【背景技術】
【０００２】
ハードディスク、ソリッドステートドライブ（ＳＳＤ）などの外部記憶装置に対して情報処理装置から発行される主な命令として、データ読み出し命令及びデータ書き込み命令がある。データ読み出し命令においては、情報処理装置から外部記憶装置に対して外部記憶装置上の論理アドレス（ＬＢＡ：Logical Block Addressing）及びデータ長の情報を含んだ命令が送信され、それを受けて外部記憶装置のコントローラは命令で指定されたデータを記録メディアから読み出し、読み出したデータを情報処理装置に返す。データ書き込み命令においては、情報処理装置から外部記憶装置に対して外部記憶装置上の論理アドレス（ＬＢＡ）及びデータ長の情報を含んだ命令が送信され、外部記憶装置が書き込み可能な状態になると、情報処理装置は外部記憶装置に対しデータを送信し、外部記憶装置のコントローラは受信したデータを命令で指定されたＬＢＡのデータとして記録メディアに書き込む。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−１０７１２６号公報
【特許文献２】特開２０１０−２２４６２９号公報
【特許文献３】特許第４５５８０５４号
【特許文献４】米国登録特許７６８４９６２号
【特許文献５】米国登録特許７１８４９３２号
【特許文献６】米国登録特許７２３１３２２号
【特許文献７】特表２０１０−５１１２２５号公報
【非特許文献】
【０００４】
【非特許文献１】SNIA, Solid State Storage Performance Test Specification http://www.snia.org/
【非特許文献２】An overview of SYSmark(商標) 2007 Previewhttp://www.bapco.com/support/technical_documents/SYSmark2007Preview_WhitePaper.pdf
【非特許文献３】PCMark Vantage Whitepaper v1.0http://www.futuremark.com/pressroom/companypdfs/PCMark_Vantage_Whitepaper_v1.0_(PDF)?m=v
【非特許文献４】PCMark05 Whitepaper v1.0http://www.futuremark.com/pressroom/companypdfs/PCMark05_Whitepaper_1_0.pdf?m=v
【非特許文献５】IOmeter User’s Guidehttp://www.iometer.org/doc/downloads.html
【非特許文献６】Samsung SSD Magician USER GUIDEhttp://www.samsungssd.com/faq
【非特許文献７】CrystalDiskMarkマニュアルhttp://crystalmark.info/software/CrystalDiskMark/manual-ja/http://crystalmark.info/software/CrystalDiskMark/manual-en/
【非特許文献８】外部記憶装置の速度をモニタするソフトhttp://www.forest.impress.co.jp/docs/review/20100222_350600.htmlhttp://hansolav.net/gadgets/drivemeter/
【非特許文献９】ATA/ATAPI Command Set - 2 (ACS-2) d2015r6 Feb.22.2011http://www.t13.org/Documents/UploadedDocuments/docs2011/d2015r6-ATAATAPI_Command_Set_-_2_ACS-2.pdf  ・９８ページ目〜９９ページ目、５０ページ目：Ｄａｔａ  Ｓｅｔ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｍｍａｎｄ（トリムコマンド）  ・３４２ページ目〜３６５ページ目：ＳＣＴ  Ｃｏｍｍａｎｄ  Ｔｒａｎｓｐｏｒｔ  ・２１８ページ目〜２１９ページ目、３２４ページ目〜３２５ページ目：Ｒｅａｄ  ＦＰＤＭＡ  ＱＵＥＵＥＤ／ＷＲＩＴＥ  ＦＰＤＭＡ  ＱＵＥＵＥＤ
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一つの実施形態は、外部記憶装置の信頼性にほとんど影響を与えずに、ユーザが実使用で感じた外部記憶装置の体感性能をリアルタイムで定量化して監視することを実現する情報処理装置、性能評価ツール、外部記憶装置の性能評価方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一つの実施形態によれば、情報処理装置は、性能評価ツールが搭載されるホスト装置と、リード及びライト可能な不揮発性メモリを有する外部記憶装置と、前記ホスト装置と外部記憶装置を接続するインタフェース部とを備える。性能評価ツールは、アクセスログ取得部と、性能ログ取得部とを備える。アクセスログ取得部は、前記ホスト装置に搭載されたＯＳまたは性能評価ツール以外のソフトウェアが前記外部記憶装置と通常にアクセスするときの命令、応答を含むコマンドを前記ＯＳから取得して、アクセスログとして逐次記録する。性能ログ取得部は、アクセスログ取得部によって記録されたアクセスログを用いて前記外部記憶装置の性能情報を演算して、この演算結果を性能情報ログとして記録する。
【図面の簡単な説明】
【０００７】
【図１】図１は、コンピュータシステムの外観的構成を示す図である。
【図２】図２は、第１の実施形態のホストの機能構成例を示すブロック図である。
【図３】図３は、性能評価ツールをＳＳＤに保存する場合のコンピュータシステムの機能構成例を示すブロック図である。
【図４】図４は、性能評価ツールをその他の外部記憶装置に保存する場合のコンピュータシステムの機能構成例を示すブロック図である。
【図５】図５は、性能評価ツールをＷＥＢからインストールする場合のコンピュータシステムの機能構成例を示すブロック図である。
【図６】図６は、性能評価ツールを光学ドライブからインストールする場合のコンピュータシステムの機能構成例を示すブロック図である。
【図７】図７は、性能評価ツールをＵＳＢメモリからインストールする場合のコンピュータシステムの機能構成例を示すブロック図である。
【図８】図８は、ホストの階層的機能構成例を示すブロック図である。
【図９】図９は、ＳＳＤの機能構成例を示すブロック図である。
【図１０】図１０は、ＳＳＤの管理情報を示す図である。
【図１１】図１１は、ＬＢＡとＳＳＤの管理単位との関係を示す図である。
【図１２】図１２は、ＬＢＡから物理アドレスを特定する手順を示すフローチャートである。
【図１３】図１３は、ＳＳＤの読み出し動作例を示すフローチャートである。
【図１４】図１４は、ＳＳＤの読み出し動作例を示すフローチャートである。
【図１５】図１５は、ＳＳＤの書き込み動作例を示すフローチャートである。
【図１６】図１６は、ＳＳＤの書き込み動作例を示すフローチャートである。
【図１７】図１７は、ＳＳＤのＮＡＮＤメモリの整理の動作例を示すフローチャートである。
【図１８】図１８は、削除通知の受信したときのＳＳＤの動作例を示すフローチャートである。
【図１９】図１９は、ＳＳＤの転送データレートの計時的劣化を示す図である。
【図２０】図２０は、ＳＳＤでの自動ＮＡＮＤ整理の動作例を示すフローチャートである。
【図２１】図２１は、比較例としての読み出し性能試験の動作例を示す工程図である。
【図２２】図２２は、比較例としての書き込み性能試験の動作例を示す工程図である。
【図２３】図２３は、性能評価ツールがアクセス情報を取得するための動作概念を示す図である。
【図２４】図２４は、アクセスログテーブルの一例を示す図である。
【図２５】図２５は、他のアクセスログテーブルの一例を示す図である。
【図２６】図２６は、アクセス情報取得ツールによるアクセス情報の取得動作例を示すフローチャートである。
【図２７】図２７は、アクセス情報取得ツールによるアクセス情報の取得動作例を示すフローチャートである。
【図２８】図２８は、性能ログテーブルの一例を示す図である。
【図２９】図２９は、性能情報取得ツールによる性能情報の取得動作例を示すフローチャートである。
【図３０】図３０は、性能情報取得ツールによる性能情報の取得動作例を示すフローチャートである。
【図３１】図３１は、性能情報取得ツールによる性能ログの表示動作例を示すフローチャートである。
【図３２】図３２は、性能ログの表示例を示す図である。
【図３３】図３３は、性能ログの他の表示例を示す図である。
【図３４】図３４は、複数スレッドが動作しているときのコマンド状態と、複数スレッドを総合的に評価する際のコマンドの非アクティブ時間を示す図である。
【図３５】図３５は、First Party DMA Read（fp DMA Read）コマンドを示す図である。
【図３６】図３６は、First Party DMA Write（fp DMA Write）コマンドを示す図である。
【図３７】図３７は、非ＮＣＱのDMA Readコマンドを示す図である。
【図３８】図３８は、非ＮＣＱのDMA Writeコマンドを示す図である。
【図３９】図３９は、性能情報取得ツールによる転送データレートの演算手順を示す工程図である。
【図４０】図４０は、寄与度を説明するための図である。
【図４１】図４１は、性能情報取得ツールによる処理コマンドレートの演算手順を示す工程図である。
【図４２】図４２は、性能情報取得ツールによる平均応答時間の演算手順を示す工程図である。
【図４３】図４３は、性能情報取得ツールによる性能情報のバックアップ手順を示すフローチャートである。
【図４４】図４４は、性能情報取得ツールによる性能情報のバックアップ手順を示すフローチャートである。
【図４５】図４５は、複数スレッドが動作しているときのコマンド状態と、複数スレッドをスレッド毎に評価する際のコマンドの非アクティブ時間を示す図である。
【図４６】図４６は、複数スレッドをスレッド毎に評価する際の性能ログテーブルの一例を示す図である。
【図４７】図４７は、シーケンシャルアクセス／ランダムアクセスでの分類、データ長による分類を行った場合の性能ログテーブルの一例を示す図である。
【図４８】図４８は、コマンドをシーケンシャルアクセス及びランダムアクセスの何れであるかを識別する動作手順の一例を示すフローチャートである。
【図４９】図４９は、ＳＳＤの性能が低下した際の性能情報取得ツールによる動作手順の一例を示すフローチャートである。
【図５０】図５０は、ＳＳＤの性能が低下した際の性能情報取得ツールによる動作手順の一例を示すフローチャートである。
【図５１】図５１は、デフラグを示す図である。
【図５２】図５２は、ＳＳＤの性能が低下した際の性能情報取得ツールによる動作手順の一例を示すフローチャートである。
【図５３】図５３は、ＳＳＤの性能が低下した際の性能情報取得ツールによる動作手順の一例を示すフローチャートである。
【図５４】図５４は、ハードディスクドライブ（ＨＤＤ）の転送データレートのＬＢＡ依存性を示す図である。
【図５５】図５５は、ＨＤＤの性能が低下した際の性能情報取得ツールによる動作手順の一例を示すフローチャートである。
【図５６】図５６は、第３の実施形態のホストの機能構成例を示すブロック図である。
【図５７】図５７は、第３の実施形態での性能情報取得ツールによる動作例を示すフローチャートである。
【図５８】図５８は、アクセス情報取得ツールをアンロード、ロードする動作例を示す図である。
【図５９】図５９は、アクセス情報取得ツールをアンロード、ロードする動作例を示す図である。
【発明を実施するための形態】
【０００８】
外部記憶装置の読み出し及び書き込みの性能を測る尺度として、転送データレート、処理コマンドレート、応答時間、処理時間、相対スコアなどがある。
【０００９】
転送データレートは、単位時間あたりに外部記憶装置との間で授受されたデータ量である。例えば、データ読み出しにおいて、１秒あたり平均して２５０ＭｉＢのデータを情報処理装置が外部記憶装置から受信している場合は、外部記憶装置の読み出しの転送レートは２５０ＭｉＢ／ｓとなる。
【００１０】
処理コマンドレートは、単位時間あたりに外部記憶装置との間で授受された命令数である。例えば、データ書き込みにおいて、情報処理装置が外部記憶装置に対する命令について１秒あたり平均して１０００００個の命令を完了している場合は、前記外部記憶装置の読み出しの転送レートは１０００００ＩＯＰＳとなる。
【００１１】
応答時間は、情報処理装置が外部記憶装置に命令を送ってから、その命令に関する処理が完了するまでの時間である。読み出し命令の場合は、その命令のデータを情報処理装置が受信完了するまでの時間であり、書き込み命令の場合は、その命令に対する終了応答を情報処理装置が外部記憶装置から受信するまでの時間である。例えば、データ読み出し命令において、その命令のデータを情報処理装置が受信完了するまでに１０ミリ秒要した場合は、外部記憶装置の応答時間は１０ミリ秒となる。
【００１２】
処理時間は、情報処理装置上である特定のアプリケーションまたはある特定の処理を外部記憶装置に対して開始してから完了するまでに要した時間である。例えば、外部記憶装置内での１０ＧＢｙｔｅのファイルコピーに要する時間が５０秒であった場合、１０Ｇｂｙｔｅのファイルコピーの処理時間は５０秒となる。
【００１３】
相対スコアは、各種条件における複数のスコア（転送データレート、処理コマンドレート、応答時間、処理時間など）に重みづけをして加算・減算・乗算・除算することによって得られるスコアである。
・PCMark05(商標)  http://www.futuremark.com/
・PCMark VANTAGE(商標)  http://www.futuremark.com/
・SYSmark 2007 Preview (商標) http://www.bapco.com/
などの指標が相対スコアの例としてあげられる。
【００１４】
外部記憶装置の性能の測る際の条件はさまざまである。主な条件として、読み出し（書き込み）するＬＢＡのパターンがある。これはおおまかにシーケンシャルとランダムの二通りに分かれる。
【００１５】
シーケンシャルパターンとは、連続したＬＢＡが順次付与されるアクセスパターンである。すなわち、あるＬＢＡに対しあるデータ長の読み出し命令（書き込み命令）を情報処理装置が外部記憶装置に送信し、前記ＬＢＡに対し前記データ長分だけインクリメントしたＬＢＡに対してあるデータ長の読み出し命令（書き込み命令）を情報処理装置が外部記憶装置に送信し、以後このＬＢＡのインクリメントによる読み出し命令（書き込み命令）を繰り返し続けるアクセスパターンである。ランダムパターンとは、ランダムで不連続なＬＢＡが順次付与されるアクセスパターンである。
【００１６】
外部記憶装置の性能の測る際の他の条件としては、読み出し（書き込み）するＬＢＡの範囲（アクセスレンジ）、読み出し（書き込み）する際の１コマンドあたりのデータ転送長（ペイロード長）、マルチスレッドの場合に読み出し（書き込み）する際のスレッド数、読み出し（書き込み）するデータの中身、測定時間などがある。
【００１７】
このように多数の指標や条件が存在する外部記憶装置の性能評価であるが、指標と測定条件が同じであっても性能が常に同じであるというわけではない。特に外部記憶装置がＳＳＤである場合は、ＳＳＤの性能は、ＳＳＤの記録メディアであるフラッシュメモリの物理アドレスとＬＢＡの対応関係を管理する論物変換テーブルの状態に大きく依存する。これは、ＳＳＤでは、論理アドレス（ＬＢＡ）と物理アドレス（ＮＡＮＤ１０の記憶位置）との関係は予め静的に決定されておらず、データの書込み時に動的に関係付けられる論物変換方式が採用されているからである。例えば、同じＬＢＡアドレス上のデータを上書きする場合は、つぎのような操作が行われる。論理アドレスＡ１に有効なデータが保存されており、記憶領域としてはブロックＢ１が使用されていたとする。情報処理装置から論理アドレスＡ１のデータ（サイズはブロックと同じとする）を上書きするコマンドを受信した場合、フリーブロック（ブロックＢ２とする）を１個確保し、そのフリーブロックに情報処理装置から受信したデータを書き込む。その後、論理アドレスＡ１とブロックＢ２を関係付ける。その結果、ブロックＢ２はアクティブブロックになり、ブロックＢ１に保存されたデータは無効になるためブロックＢ１はフリーブロックとなる。このように、ＳＳＤでは、同じ論理アドレスＡ１のデータであっても、実際の記録領域として使用されるブロックは書込みの度に変化する。なお、フリーブロックを選択する際には、通常、全てのブロックの消去回数、消去間隔を概ね等しくするウェアレベリング処理が実行されている。
【００１８】
このような外部記憶装置の内部状態のばらつきを測定結果から排除するため、例えば非特許文献１として提示したSNIAのSolid State Storage Performance Test Specificationにおいては、測定の前条件(Preconditioning)の規格が存在する。ただし、ユーザが所有するＳＳＤの内部状態はユーザのＳＳＤの用途、ＳＳＤを接続しているコンピュータのハードウェア環境、コンピュータ上で動作するソフトウェアの種類、使用時間などによって千差万別であり、前述の規格に従って行われた前条件後のＳＳＤの内部状態が、ユーザが実際に各種アプリケーションを動作させている時（実使用時）に性能を体感している際のＳＳＤの内部状態と一致しているとは限らない。
【００１９】
そこで、実使用の合間に前条件を行わずにユーザ自身が測定を実行することによって、ユーザの所有するＳＳＤの性能を把握こともできる。これにより、規格化された統一的な方法に比べ、ユーザは自身が体感する性能に比較的近い性能指標を得ることができる。しかし、この手法には以下の問題点がある。
【００２０】
前述したとおり、ＳＳＤの内部状態は時々刻々と変化するので、外部からのアクセスにナイーブである。よって、測定そのものがＳＳＤの内部状態に影響を与えてしまうため、測定により内部状態がユーザの実使用時の内部状態からかけ離れてしまい、測定結果がユーザの体感速度から乖離してしまう。例えば、性能測定そのものによってシーケンシャル書き込みのアクセスがコンピュータからＳＳＤに対して発生すると、書き込み対象のＬＢＡと実際にデータが書かれたフラッシュメモリ上の物理アドレスの対応関係がＳＳＤ内部の論物変換テーブルに反映されることで、ＳＳＤの内部状態が変化し、その変化した内部状態が測定結果に影響を与え、最終的に計算されたＳＳＤの性能はユーザの実際に体感した性能から乖離する。実際、多くの性能測定ツールにおいては、各種測定の前に前条件としてＳＳＤに対して数ギガバイト以上のデータ量でシーケンシャル書き込みが行われる仕様となっており、これらのツールより測定される性能はユーザの体感する性能から大きく乖離する。
【００２１】
前述のとおり、一般的な性能測定ツールによる性能測定にはコンピュータからＳＳＤに対する大量の書き込みが発生するが、これによりＳＳＤの記録メディアであるフラッシュメモリの消去回数が増大する。フラッシュメモリは消去回数が増加するにつれ不良率が高くなるため、性能測定によりＳＳＤの信頼性が劣化することになる。故に、ＳＳＤの信頼性劣化を加速させないよう、ユーザはＳＳＤの性能監視を頻繁に行うことができない。
【００２２】
前述のとおり、性能測定のソフトウェアや条件は多岐にわたる。これらソフトウェアや条件の選択によって、読み出し/書き込み、シーケンシャル/ランダム、アクセスレンジ、ペイロード長、スレッド数が規定される。以下、これらを総称してワークロードと呼ぶ。一方、性能測定時に選択したワークロードと、ユーザが各種アプリケーションで作業をしている際にＳＳＤに発生するワークロード（実使用ワークロード）が一致するとは限らない。ユーザ各々がＳＳＤとコンピュータ間のインターフェースのプロトコルを解析してユーザに適したワークロードを見出すことは困難である。
【００２３】
また、外部記憶装置に対する読み出し書き込み量をもとに、外部記憶装置の性能を監視するソフトウェアもある（非特許文献８参照）。しかし、この従来技術においては、
読み出し転送データレート＝(測定期間中に読み出されたデータ量)／(測定時間の長さ)
書き込み転送データレート＝(測定期間中に書き込まれたデータ量)／(測定時間の長さ)
となっている。
しかし、外部記憶装置に対するアクセスの合間に、ユーザの入力待ち、ＣＰＵなどその他ハードウェアの応答待ちなどがあると、測定期間中に読み出されたデータ量が減少する一方、測定時間の長さは一定であるため、転送データレートは減少する。とくに、ユーザが外部記憶装置に対してほとんどアクセスしないようなアプリケーションを実行していたり、情報処理装置がアプリケーションを実行していないアイドル状態であったりする場合においては、外部記憶装置の転送データレートは、外部記憶装置の本来の性能にかかわらず、ゼロまたはゼロに極めて近い値を示す。そして、転送データレートがゼロに近い値を示したからといって、ユーザが体感する外部記憶装置の性能が悪いわけではない。すなわち、この従来技術によって取得される性能は、外部記憶装置以外の外的要因の影響を極めて受けやすく、外部記憶装置の性能や、ユーザの感じる外部記憶装置の体感性能を取得できているとは言い難い。
【００２４】
以上のような理由から、現状の性能測定ツールによる性能測定は各ユーザが実使用で感じる体感性能を反映しているとは言い難い。また、性能測定の際に余分な書き込みを行うことは、外部記憶装置の信頼性上好ましくない。そこで、本実施形態では、外部記憶装置の信頼性に影響を与えずに、ユーザが実使用で感じた外部記憶装置の体感性能をリアルタイムに正確に把握可能な性能測定ツールを提供する。
【００２５】
以下に添付図面を参照して、実施形態にかかる情報処理装置、性能評価ツール、外部記憶装置の性能評価方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【００２６】
（第１の実施形態）
図１に、外部記憶装置が搭載される情報処理装置としてのコンピュータシステム１の外観的構成を示す。図１は、一般的なデスクトップ型のパーソナルコンピュータ１の構成を示している。外部記憶装置としてのＳＳＤ１０は電源ケーブル１３１を介して電源回路１３２に接続されことで電源供給され、ＳＡＴＡ（Serial Advanced Technology Attachment）ケーブル１３６を介してマザーボード１３０に物理的に接続されることで、マザーボード１３０との通信を可能にする。ＳＡＴＡケーブル１３６を介した通信はＳＡＴＡ規格に従う。マザーボード１３０には、ＣＰＵなど（図示せず）が搭載されている。マザーボード１３０には、ディスプレイ１３３、キーボード１３４、マウス１３５などが接続されている。コンピュータシステムとしては、デスクトップ型に限らず、ラップトップ型やノート型のパーソナルコンピュータにも適用可能である。
【００２７】
また、外部記憶装置が搭載される機器システム（ホスト１００）としては、その他に、スチルカメラ、ビデオカメラなどの撮像装置などであってもよいし、ゲーム機器やカーナビゲーションシステムなどであってもよい。また、ＳＳＤ１０の代わりにハードディスクドライブ（ＨＤＤ）やハイブリッドハードディスクドライブ（ハイブリッドＨＤＤ）など他の外部記憶装置を用いてもよい。また、ＳＳＤとコンピュータの接続規格として、ＳＡＴＡ規格以外に、ＵＳＢ（Universal Serial Bus）規格などの他のインターフェース規格を用いてもよい。
【００２８】
図２は、ＳＳＤ１０を搭載したホスト１００のシステム構成例を示すものである。ホスト１００は、ＣＰＵ２００、ノースブリッジ２０１、ＤＲＡＭ，ＭＲＡＭなどの主メモリ２０２、表示コントローラ２０３、ディスプレイ１３３、サウスブリッジ２０５、光学ドライブ２０６、ＢＩＯＳ−ＲＯＭ２０７、ＬＡＮコントローラ２０８、ＵＳＢコントローラ２０９、キーボード１３４、マウス１３５等を備えている。
【００２９】
ＣＰＵ２００は、ホスト１００の動作を制御するために設けられたプロセッサであり、ＳＳＤ１０から主メモリ２０２にロードされるオペレーティングシステム（ＯＳ）を実行する。更に、光学ドライブ２０６が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも１つの処理の実行を可能にした場合に、ＣＰＵ２００は、それらの処理を実行する。
【００３０】
また、ＣＰＵ２００は、ＢＩＯＳ−ＲＯＭ２０７に格納されたシステムＢＩＯＳ（Basic Input Output System）も実行する。尚、システムＢＩＯＳは、ホスト１００内のハードウェア制御のためのプログラムである。
【００３１】
ノースブリッジ２０１は、ＣＰＵ２００のローカルバスと接続するブリッジデバイスである。ノースブリッジ２０１には、主メモリ２０２をアクセス制御するメモリコントローラも内蔵されている。また、ノースブリッジ２０１は、表示コントローラ２０３との通信などを実行する機能も有している。
【００３２】
主メモリ２０２は、プログラムやデータを一時的に記憶し、ＣＰＵ２００のワークエリアとして機能する。主メモリ２０２は、例えばＤＲＡＭやＭＲＡＭから構成される。ビデオコントローラ２０３は、コンピュータシステムのディスプレイ１３３を制御するビデオ再生コントローラである。
【００３３】
サウスブリッジ２０５は、ＣＰＵ２００のローカルバスと接続するブリッジデバイスである。サウスブリッジ２０５は、各種ソフトウェア及びデータを格納する記憶装置であるＳＳＤ１０を、ＡＴＡインタフェース９０を介して制御する。
【００３４】
ホスト１００では、セクタ単位でＳＳＤ１０へのアクセスを行う。ＡＴＡインタフェース９０を介して、ライトコマンド（ライト要求）、リードコマンド（リード要求）、フラッシュコマンド等がＳＳＤ１０に入力される。
【００３５】
また、サウスブリッジ２０５は、ＢＩＯＳ−ＲＯＭ２０７、光学ドライブ２０６、ＬＡＮコントローラ２０８、ＵＳＢコントローラ２０９をアクセス制御するための機能も有している。ＵＳＢコントローラ２０９にキーボード１３４、マウス１３５が接続されている。
【００３６】
図２において、ＯＳ１５０、性能評価ツール１１０、アクセスログテーブル１２０、性能ログテーブル１２５、ソフトウェア（ワープロソフトや数値計算ソフトや画像編集ソフトなど）１４０は、コンピュータシステムの電源がオフの時はＳＳＤ１０上に保持されており、ホストの電源オン時またはそれらの機能を呼び出した際は、ＳＳＤ１０から主メモリ２０２上にロードされる。ソフトウェア１４０は、性能評価ツール１１０以外のソフトウェアであって、ＳＳＤ１０を使用するソフトウェアである。性能評価ツール１１０は、ＳＳＤ１０の性能評価を行うソフトウェアであり、アクセス情報取得ツール１１１と、性能情報取得ツール１１２を備えている。
【００３７】
性能評価ツール１１０は、例えば、図３に示すように、ホスト１００が電源オフになっているときはＳＳＤ１０のＮＡＮＤメモリ２０に性能評価ツール１１０Ａとして格納されているが、ホスト１００の起動時またはプログラム起動時に、ＮＡＮＤメモリ２０から主メモリ２０２にロードされる。一方、ホスト１００に複数の外部記憶装置が接続されている場合は、図４に示すように、性能評価ツール１１０は、性能評価ツール１００Ｂとして、ＳＳＤ１０とは別の外部記憶装置３００に格納されており、ホスト１００の起動時またはプログラム起動時に、外部記憶装置３００から主メモリ２０２にロードされるようにしてもよい。特に、外部記憶装置３００がＯＳ１５０を格納するシステムドライブとして使用されており、ＳＳＤ１０が文書や静止画データや動画データなどユーザデータを格納するデータドライブとして使用されている場合は、システムドライブとしての外部記憶装置３００にはＯＳやアプリケーションプログラムを主として格納するドライブとして使用し、データドライブとしてのＳＳＤ１０にはユーザデータを格納するドライブとして使用するというように、ドライブ１０とドライブ３００の役割を明確に分ける観点で、システムドライブとしての外部記憶装置３００に性能評価ツール１１０を格納することが望ましい。
【００３８】
性能評価ツールのセットアップをユーザが行う労力を省く観点では、例えば図３や図４に示したように、性能評価ツールがＳＳＤ１０や外部記憶装置３００に格納された状態でメモリシステム１が出荷され、店頭に並び、ユーザの手に渡ることが望ましい。一方、ユーザが性能評価ツールのインストールの可否を選択できるようにする観点、及びユーザに最新の性能評価ツールを提供できるようにするという観点では、性能評価ツールは、ＷＥＢからのダウンロード、またはＤＶＤ−ＲＯＭやＵＳＢメモリなど外部記憶媒体からのインストールによりＳＳＤ１０や外部記憶装置１００２１に格納できるようにすることが望ましい。
【００３９】
図５は性能評価ツールをＷＥＢからダウンロードする場合の一例を示すものである。図５において、性能評価ツール１１０ＣはＷＥＢサーバ内の記憶媒体４００に格納されており、性能評価ツール１１０Ｃはインターネットやローカルネットワークや無線ＬＡＮなどのネットワークを介して、たとえばＬＡＮコントローラ２０８を経由してＳＳＤ１０あるいは外部記憶装置３００にダウンロードされる。
【００４０】
図６はＤＶＤ−ＲＯＭやＣＤ−ＲＯＭなど光学メディアから性能評価ツールをインストールする場合の一例を示すものである。性能評価ツール１１０ＤはＤＶＤ−ＲＯＭやＣＤ−ＲＯＭなどの光学メディア５００に格納されており、光学メディア５００が光学ドライブ２０６にセットされることで、性能評価ツール１１０Ｄは光学ドライブ２０６を介してＳＳＤ１０あるいは外部記憶装置３００にインストールされる。
【００４１】
図７はＵＳＢメモリから性能評価ツールをインストールする場合の一例を示すものである。性能評価ツールはＵＳＢメモリ６００に格納されており、ＵＳＢメモリ６００がＵＳＢコントローラ２０９に接続されることで、性能評価ツール１１０ＥはＵＳＢコントローラ２０９を介してＳＳＤ１０あるいは外部記憶装置３００にインストールされる。ＵＳＢメモリ６００のかわりに、ＳＤカードなどその他外部メモリであってもよいのはもちろんである。ユーザによる入手容易性の観点から、光学メディア５００やＵＳＢメモリ６００はＳＳＤ１０の出荷時に、付属品としてＳＳＤ１０と一緒に梱包されていることが望ましい。一方、光学メディア５００やＵＳＢメモリ６００は、ソフトウェア商品として単独に販売されてもよいし、雑誌や書籍の付録として付属していてもよい。
【００４２】
アクセス情報取得ツール１１１は、ＯＳ１５０または性能評価ツール１１０以外のソフトウェア１４０がＳＳＤ１０と通常にアクセスするときのコマンドをアクセスログとしてアクセスログテーブル１２０に逐次記録する。性能情報取得ツール１１２は、アクセスログテーブル１２０に記録されたアクセスログを用いてＳＳＤ１０の性能情報を演算して、この演算結果を性能情報ログとして性能ログテーブル１２５に記録する。
【００４３】
図８に、ホスト１００の各種要素の階層構造を示す。性能評価ツール１１０及びソフトウェア１４０は、ＯＳ１５０を経由してＳＳＤ１０と通信する。すなわち、性能評価ツール１１０やソフトウェア１４０がＳＳＤ１０に対してアクセスする必要が生じた場合、性能評価ツール１１０及びソフトウェア１４０はＯＳ１５０を介して命令、応答、データの授受を行う。
【００４４】
図９に、ＳＳＤ１０の内部構成例を示す。ＳＳＤ１０は、不揮発性半導体メモリとしてのＮＡＮＤ型フラッシュメモリ（以下ＮＡＮＤメモリと略す）２０と、ＡＴＡインタフェース９０を介してホスト１００との通信を行うインタフェースコントローラ３０と、インタフェースコントローラ３０とＮＡＮＤメモリ２０との中間バッファとして機能するキャシュメモリ（ＣＭ）４０ａを有する揮発性半導体メモリとしてのＲＡＭ（Random Access Memory）４０と、ＮＡＮＤメモリ２０及びＲＡＭ４０の管理、制御、及びインタフェースコントローラ３０の制御を行うメモリコントローラ５０と、ＮＡＮＤメモリ２０から読み出されたデータの誤り訂正処理を実行するＥＣＣ回路５８と、これら構成要素を接続するバス５７を備える。
【００４５】
ＲＡＭ４０としては、ＤＲＡＭ（Dynamic Random Access Memory）、ＳＲＡＭ（Static Random Access Memory）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＰＲＡＭ（Phase Change Random Access Memory）などを採用することができる。
【００４６】
ＮＡＮＤメモリ２０は、ホスト１００によって指定されたユーザデータを記憶したり、ユーザデータを管理する管理テーブルを記憶したり、ＲＡＭ４０で管理される管理情報をバックアップ用に記憶したりする。ＮＡＮＤメモリ２０は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位であるブロックを複数個備える。物理ブロックは複数の物理ページよりなる。物理ページは、データの書き込み及び読み出しの単位である。
【００４７】
ＮＡＮＤメモリ２０のメモリセルアレイを構成するメモリセルトランジスタは、半導体基板上に形成された積層ゲート構造を備えたＭＯＳＦＥＴ（Metal Oxide Semiconductor Field Effect Transistor）から構成される。積層ゲート構造は、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層（浮遊ゲート電極）、及び浮遊ゲート電極上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。メモリセルトランジスタは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じてデータを記憶する。メモリセルトランジスタは、１ビットを記憶するように構成されていてもよいし、多値（２ビット以上のデータ）を記憶するように構成されていてもよい。また、メモリセルトランジスタは浮遊ゲート電極を有する構造に限らず、ＭＯＮＯＳ（Metal-Oxide-Nitride-Oxide-Silicon）型など、電荷蓄積層としての窒化界面に電子をトラップさせることで閾値電圧を調整可能な構造であってもよい。ＭＯＮＯＳ型のメモリセルトランジスタについても同様に、１ビットを記憶するように構成されていてもよいし、多値を記憶するように構成されていてもよい。また、メモリセルとして、特開２０１０−１６１１９９号公報や特開２０１１−２９５８６号公報に記述されるような３次元的に配置されたメモリセルであってもよい。
【００４８】
ＲＡＭ４０は、ホスト１００とＮＡＮＤメモリ２０間でのデータ転送用キャッシュとして機能するキャッシュメモリ（ＣＭ）４０ａを有する。また、ＲＡＭ４０は、管理情報記憶用メモリ及び作業領域用メモリとして機能する。ＲＡＭ４０で管理される管理テーブルは、ＮＡＮＤメモリ２０に記憶されている各種管理テーブルが起動時などに展開されたものであり、定期的あるいは電源断時にＮＡＮＤメモリ２０に退避保存される。
【００４９】
メモリコントローラ５０は、ＮＡＮＤメモリ２０に記憶されたシステムプログラム（ファームウエア）を実行するプロセッサと、各種ハードウェア回路などによってその機能が実現され、ホスト１００からのライト要求、キャッシュフラッシュ要求、リード要求等の各種コマンドに対するホスト１００−ＮＡＮＤメモリ２０間のデータ転送制御、ＲＡＭ４０及びＮＡＮＤメモリ２０に記憶された各種管理テーブルの更新・管理などを実行する。インタフェースコントローラ３０は、メモリコントローラ５０の制御の下で、ＡＴＡインタフェース９０を介してホスト装置１００との間で命令及びデータを送受信する。
【００５０】
ホスト１００はＳＳＤ１０に対し、リード要求またはライト要求を発行する際には、ＡＴＡインタフェース９０を介して論理アドレスとしてのＬＢＡ（Logical Block Addressing）を入力する。ＬＢＡは、論理セクタ（サイズ：例えば５１２Ｂ）に対して０からの通し番号をつけた論理アドレスである。また、ホスト１００はＳＳＤ１０に対し、リード要求またはライト要求を発行する際には、ＬＢＡと併せて、リード要求またはライト要求の対象となるセクタサイズを入力する。
【００５１】
ホスト１００から命令が入力されると、インタフェースコントローラ３０がその命令を受信し、受信した命令をメモリコントローラ５０に送信する。メモリコントローラ５０は受信した命令を処理する。前述したように、命令にはＬＢＡが含まれ、ホスト１００はＬＢＡにより外部記憶装置のデータの位置を指定する。メモリコントローラ５０は、ＲＡＭ４０上の管理情報を参照することで、ホスト１００より受信した論理アドレスとしてのＬＢＡを物理アドレスに変換する。変換された物理アドレスにより、ＮＡＮＤメモリ２０上の物理的なメモリセルの位置が特定される。
【００５２】
図１０にＳＳＤ１０で使用する管理情報の構成を示す。これらの管理情報は、前述したように、ＮＡＮＤメモリ２０で不揮発記憶されている。ＮＡＮＤメモリ２０で記憶された管理情報がＳＳＤ１０の起動時にＲＡＭ４０に展開されて使用される。ＲＡＭ４０上の管理情報は、定期的あるいは電源断時にＮＡＮＤメモリ２０に退避保存される。ＲＡＭ４０がＭＲＡＭやＦｅＲＡＭなどのような不揮発ＲＡＭである場合には、この管理情報はＲＡＭ４０にのみ記憶されるようにしてもよく、この場合はこの管理情報はＮＡＮＤメモリ２０には記憶されない。
【００５３】
図１０に示すように、管理情報は、フリーブロックテーブル２１と、アクティブブロックテーブル２２と、トラックテーブル（トラック単位の論物変換テーブル）２３と、クラスタテーブル（クラスタ単位の論物変換テーブル）２４を含む。
【００５４】
ＬＢＡは、図１１に示すように、セクタ（サイズ：例えば５１２Ｂ）に対して０からの通し番号をつけた論理アドレスである。本実施形態においては、ＳＳＤ１０の論理アドレス（ＬＢＡ）の管理単位として、ＬＢＡの下位（ｓ＋１）ビット目から上位のビット列で構成されるクラスタアドレスと、ＬＢＡの下位（ｓ＋ｔ＋１）ビットから上位のビット列で構成されるトラックアドレスとを定義する。すなわち、論理セクタは、ホスト１００からの最小アクセス単位である。クラスタは、ＳＳＤ内部で「小さなデータ」を管理する管理単位であり、セクタサイズの自然数倍がクラスタサイズとなるように定められる。また、トラックは、ＳＳＤ内部で「大きなデータ」を管理する管理単位であり、クラスタサイズの２以上の自然数倍がトラックサイズとなるように定められる。したがって、トラックアドレスはＬＢＡをトラックサイズで割ったものであり、トラック内アドレスはＬＢＡをトラックサイズで割った余りであり、クラスタアドレスはＬＢＡをクラスタサイズで割ったものであり、クラスタ内アドレスはＬＢＡをクラスタサイズで割った余りである。以下の説明では、便宜上、トラックのサイズは１物理ブロックに記録可能なデータのサイズに等しい（物理ブロックにＥＣＣ回路５８で行う誤り訂正の冗長ビットが含まれる場合はこれを除いたサイズ）とし、クラスタのサイズは１物理ページに記録可能なデータのサイズに等しい（物理ページにＥＣＣ回路５８で行う誤り訂正の冗長ビットが含まれる場合はこれを除いたサイズ）とする。
【００５５】
・フリーブロックテーブル（ＦＢテーブル）２１は、ＮＡＮＤメモリ２０に書き込みを行うときに書き込み用に新規に割り当てることのできるＮＡＮＤメモリの用途未割り当ての物理ブロック（フリーブロック：ＦＢ）のＩＤを管理する。また、物理ブロックＩＤ毎に消去回数を管理している。
・アクティブブロックテーブル（ＡＢテーブル）２２は、用途が割り当てられた物理ブロックであるアクティブブロック（ＡＢ）を管理する。また、物理ブロックＩＤ毎に消去回数を管理している。
・トラックテーブル２３は、トラックアドレスと、このトラックアドレスに対応するトラックデータが記憶される物理ブロックＩＤとの対応関係を管理する。
・クラスタテーブル２４は、クラスタアドレスと、このクラスタアドレスに対応するクラスタデータが記憶される物理ブロックＩＤと、このクラスタアドレスに対応するクラスタデータが記憶される物理ブロック内ページアドレスとの対応関係を管理する。
【００５６】
つぎに、図１２を用いてＳＳＤ１０においてＬＢＡから物理アドレスを特定する手順（ＬＢＡ正引き変換）について説明する。ＬＢＡが指定されたとき、メモリコントローラ５０はＬＢＡからトラックアドレスとクラスタアドレスとクラスタ内アドレスを計算する。
【００５７】
メモリコントローラ５０は、まずトラックテーブル２３を検索し、計算したトラックアドレスに対応する物理ブロックＩＤを特定する（ステップＳ１００、Ｓ１０１）。メモリコントローラ５０は、特定した物理ブロックＩＤが有効であるか否かを判定し（ステップＳ１０２）、物理ブロックＩＤがヌルではなく有効な値である場合は（ステップＳ１０２：Yes）、この物理ブロックＩＤがアクティブブロックテーブル２２にエントリされているか否かを検索する（ステップＳ１０３）。アクティブブロックテーブル２２に物理ブロックＩＤがエントリされている場合は（ステップＳ１０４：Ｙｅｓ）、この物理ブロックＩＤの指定する物理ブロックの先頭位置からトラック内アドレス分だけシフトした位置が指定されたＬＢＡに対応するＮＡＮＤメモリ２０上の物理的な位置となる（ステップＳ１０５）。このような場合には、ＬＢＡに対応するＮＡＮＤメモリ２０上の物理的な位置の特定にはクラスタテーブル２４を必要とせず、このようなＬＢＡを「トラック管理されているＬＢＡ」と呼ぶ。ステップＳ１０４において、アクティブブロックテーブル２２に物理ブロックＩＤがエントリされていない場合は（ステップＳ１０４：Ｎｏ）、指定されたＬＢＡは対応する物理アドレスを持たないことになり、このような状態を「未書き込み状態」と呼ぶ（ステップＳ１０６）。
【００５８】
ステップＳ１０２において、指定されたトラックアドレスに対応する物理アドレスがヌルであり無効な値の場合は（ステップＳ１０２：Ｎｏ）、メモリコントローラ５０はＬＢＡからクラスタアドレスを計算し、クラスタテーブル２４を検索し、計算したクラスタアドレスに対応する物理ブロックＩＤ及び対応する物理ブロック内ページアドレスをクラスタテーブル２４から取得する（ステップＳ１０７）。物理ブロックＩＤと物理ブロック内ページアドレスが指定する物理ページの先頭位置からクラスタ内アドレス分だけシフトした位置が指定されたＬＢＡに対応するＮＡＮＤメモリ２０上の物理的な位置となる。このような場合は、ＬＢＡに対応するＮＡＮＤメモリ２０上の物理的な位置は、トラックテーブル２３のみからは特定できず、クラスタテーブル２４の参照を必要とすることになり、このようなＬＢＡを「クラスタ管理されているＬＢＡ」という（ステップＳ１０８）。
【００５９】
つぎに、図１３、図１４を用いてＳＳＤ１０における読み出し動作を説明する。ＳＳＤ１０がホスト１００から読み出し命令を受信した場合は（ステップＳ１１０）、メモリコントローラ５０がこの読み出し命令をＲＡＭ４０上の読み出し命令待ち行列に追加し（ステップＳ１１１）、読み出し命令を受理した旨をホスト１００に返信する。
【００６０】
一方、メモリコントローラ５０は、ＲＡＭ４０上の読み出し命令待ち行列に命令が存在している場合、読み出し処理を実行可能な状態になっているか否かを判定し（ステップＳ１２０）、読み出し処理を実行可能な状態になったと判断すると、先の図１２に示したＬＢＡ正引き変換手順にしたがってホスト１００から受信したＬＢＡからデータの物理的な位置を特定する（ステップＳ１２１）。メモリコントローラ５０は、特定した位置の物理ページからデータを読み出し（ステップＳ１２３）、読み出したデータをインタフェースコントローラ３０を介してホスト１００に送信する（ステップＳ１２４）。なお、ＮＡＮＤメモリ２０から読み出したデータは、いったんＲＡＭ４０に書き込み、ＲＡＭ４０に書き込んだデータをホスト１００に送信するようにしてもよい。
【００６１】
つぎに、図１５、図１６を用いてＳＳＤ１０における書き込み動作を説明する。ＳＳＤ１０がホスト１００から書き込み命令を受信した場合は（ステップＳ１３０）、メモリコントローラ５０がこの書き込み命令をＲＡＭ４０上の読み出し命令待ち行列に追加し（ステップＳ１３１）、書き込み命令を受理した旨をホスト１００に返信する。
【００６２】
一方、メモリコントローラ５０は、ＲＡＭ４０上の書き込み命令待ち行列に命令が存在している場合、書き込み処理を実行可能な状態になっているか否かを判定し（ステップＳ１４０）、書き込み処理を実行可能な状態になったと判断すると、ホスト１００に書き込み可能であることを通知し、ホスト１００から書き込みデータを受信し、受信したデータをＲＡＭ４０のキャッシュメモリ４０ａに記憶する。つぎに、メモリコントローラ５０はフリーブロックテーブル２１を読み出し（ステップＳ１４１）、フリーブロックテーブル２１からフリーブロックの物理ブロックＩＤを取得する。フリーブロックが存在しない場合は（ステップＳ１４２）、メモリコントローラ５０は後述するＮＡＮＤメモリ２０の整理（ＮＡＮＤ整理）を行い（ステップＳ１４３）、この整理の後、フリーブロックテーブル２１を読み出し（ステップＳ１４４）、フリーブロックテーブル２１からフリーブロックの物理ブロックＩＤを取得する。
【００６３】
つぎに、メモリコントローラ５０は、書き込み命令で指定されているＬＢＡが未書き込み状態であるか否かを検索するために、先の図１２に示した正引き変換手順にしたがってＬＢＡに対応する有効なデータがＮＡＮＤメモリ２０に記憶済みであるか否か判定する（ステップＳ１４５、Ｓ１４６）。
【００６４】
ＬＢＡが未書き込み状態である場合は（ステップＳ１４６：Yes）、メモリコントローラ５０は、キャッシュメモリ４０ａに記憶している受信データをフリーブロックに書き込み（ステップＳ１４７）、書き込みを行ったフリーブロック（新物理ブロック）のＩＤ及びその消去回数をアクティブブロックテーブル２２に登録し、書き込みを行った物理ブロックのＩＤをフリーブロックテーブル２１から削除する（ステップＳ１５１）。この際、受信データのＬＢＡをトラック単位の区画（トラック区画）で区切り、トラック区画内がデータで埋め尽くされているか否かを判定することで、トラック管理するかクラスタ管理するかを判定する（ステップＳ１５２）。すなわち、トラック区画内がデータで埋め尽くされている場合は、トラック管理となり、トラック区画内がデータで埋め尽くされていない場合は、クラスタ管理となる。クラスタ管理の場合は、クラスタテーブル２４を書き換えて、ＬＢＡに新物理ブロックＩＤを関連付け（ステップＳ１５３）、さらにトラックテーブル２３を書き換えて、ＬＢＡに無効な物理ブロックＩＤ（例えば、ヌル）を関連付ける。トラック管理の場合は、トラックテーブルを書き換えて、ＬＢＡに新物理ブロックＩＤを関連付ける（ステップＳ１５４）。
【００６５】
一方、ステップＳ１４６において、ＬＢＡが未書き込み状態でない場合は、メモリコントローラ５０は正引き変換により得られた物理ブロックＩＤをもとに、対応する物理ブロック内全データをＮＡＮＤメモリ２０から読み出して、ＲＡＭ４０に書き込む（ステップＳ１４８）。そして、キャッシュメモリ４０ａに記憶されているデータとＮＡＮＤメモリ２０から読み出してＲＡＭ４０に書き込んだデータとをＲＡＭ４０上で合成し（ステップＳ１４９）、合成したデータをフリーブロックに書き込む（ステップＳ１５０）。メモリコントローラ５０は、書き込みを行ったフリーブロック（新物理ブロック）のＩＤ及びその消去回数をアクティブブロックテーブル２２に登録し、書き込みを行った物理ブロックのＩＤをフリーブロックテーブルから削除する（ステップＳ１５１）。ＬＢＡがクラスタ管理である場合は、クラスタテーブル２４の旧物理ブロックＩＤを新物理ブロックＩＤに書き換える（ステップＳ１５２、Ｓ１５３）。トラック管理の場合は、トラックテーブルの旧物理ブロックＩＤを新物理ブロックＩＤに書き換える（ステップＳ１５２、Ｓ１５４）。さらに、メモリコントローラ５０は、旧物理ブロックＩＤ及びその消去回数をフリーブロックテーブル２１に追加し、旧物理ブロックＩＤ及びその消去回数をアクティブブロックテーブル２２から削除する（ステップＳ１５５）。
【００６６】
ＳＳＤ１０の全ＬＢＡの容量は、ＳＳＤ１０のＮＡＮＤメモリ２０の全容量よりも小さく設計されているため、書き込み動作がトラック単位で書き込まれ続ける限りはフリーブロックが枯渇することはない。一方、未書き込みＬＢＡに対してクラスタ単位の書き込みが多数発生した場合、クラスタ単位の書き込み一つに対してクラスタよりも容量の大きい物理ブロックが割り当てられることになるため、書き込まれるデータ容量よりも多くのＮＡＮＤメモリ２０物理ブロックを必要とすることになり、それによりフリーブロックが枯渇する可能性がある。フリーブロックが枯渇した場合は、以下に示すＮＡＮＤメモリ２０の整理によってフリーブロックを新たに確保することができる。
【００６７】
ユーザデータがクラスタ管理とトラック管理のどちらの管理方式で管理されるかは、ホスト１００からの書き込みパターンに依存する。例えば、ホスト１００からＳＳＤ１０へトラックサイズ以上のサイズのシーケンシャル書き込みが行われた場合は、書き込みデータはトラックサイズより大きい連続したＬＢＡ領域に分布するため、トラック管理されることになる。一方、例えば、ホスト１００からＳＳＤ１０へクラスタサイズのランダム書き込みが行われた場合は、書き込みデータはそれぞれ異なるトラックに属する不連続なＬＢＡ領域に分布するため、クラスタ管理されることになる。
【００６８】
つぎに、図１７を用いてＳＳＤ１０におけるＮＡＮＤ整理を説明する。物理ブロックに記憶されている全てのクラスタが有効クラスタであるとは限らず、有効クラスタに該当しない無効クラスタはＬＢＡに対応付けられていない。有効クラスタとは最新のデータを記憶しているクラスタであり、無効クラスタとは同一ＬＢＡのデータが他の場所に書きこまれ、参照されることがなくなったクラスタである。物理ブロックは無効クラスタの分だけデータに空きがあることになり、有効クラスタのデータを集めて違うブロックに書き直すＮＡＮＤ整理を実行することでフリーブロックを確保することができる。
【００６９】
まず、物理ブロックＩＤｉ＝０にし、空き領域累積量Ｓ＝０にする（ステップＳ１６０）。メモリコントローラ５０は、このＩＤがｉ＝０の物理ブロックがトラックテーブル２３にエントリされているか否かを判定する（ステップＳ１６１）。トラックテーブルにエントリされている場合はｉを＋１し（ステップＳ１６２）、つぎの番号のＩＤを持つ物理ブロックについて同様の判定を行う（ステップＳ１６１）。すなわち、物理ブロックＩＤがトラックテーブル２３に含まれている場合は、この物理ブロックのデータはトラック管理であるため、ＮＡＮＤ整理対象に含めない。
【００７０】
メモリコントローラ５０は、ＩＤ＝ｉの物理ブロックがトラック管理でない場合は（ステップＳ１６１：No）、つぎにクラスタテーブル２４を参照し、ＩＤ＝ｉの物理ブロックに含まれる有効クラスタのアドレスを全て取得する（ステップＳ１６３）。そして、メモリコントローラ５０は、取得した有効クラスタの総容量分のサイズｖを求め（ステップＳ１６４）、ｖ＜物理ブロックサイズであるときは（ステップＳ１６５）、現在物理ブロックのＩＤをＮＡＮＤ整理対象ブロックリストに加える（ステップＳ１６６）。さらに、メモリコントローラ５０は、取得クラスタ累計量Ｓに現在物理ブロックの取得クラスタ容量ｖを加算し、取得クラスタ累計量Ｓを更新する（ステップＳ１６７）。
【００７１】
ステップＳ１６５で、ｖ＜物理ブロックサイズでないとき、あるいはステップＳ１６８で取得クラスタ累計量Ｓが物理ブロックサイズに到達していない場合は、メモリコントローラ５０は、ｉを＋１し（ステップＳ１６２）、つぎの番号のＩＤを持つ物理ブロックについて、ステップＳ１６１〜Ｓ１６７の手順を前記同様に実行する。そして、ステップＳ１６８で、取得クラスタ累計量Ｓが物理ブロックサイズに到達するまで、ステップＳ１６１〜Ｓ１６７の手順を繰り返す。
【００７２】
そして、ステップＳ１６８において、取得クラスタ累計量Ｓが物理ブロックサイズに到達した場合は、メモリコントローラ５０は、ＮＡＮＤ整理対象ブロックリスト上の全物理ブロックについての全有効クラスタのデータをＮＡＮＤメモリ２０から読み出してＲＡＭ４０に書き込み（ステップＳ１６９）、さらに、ＮＡＮＤ整理対象ブロックリスト上の全物理ブロックに対して消去処理を行い（ステップＳ１７０）、消去処理を行った全物理ブロックをアクティブブロックテーブル２２から削除してフリーブロックテーブル２１に追加する（その際、消去回数をインクリメントする、ステップＳ１７１）。そして、メモリコントローラ５０は、フリーブロックテーブル２１から新たなフリーブロックを取得し、取得したフリーブロックに対しＲＡＭ４０に書き込んだデータを書き込み（ステップＳ１７２）、データを書き込んだフリーブロックの物理ブロックＩＤ及び当該ブロックの消去回数をアクティブブロックテーブル２２に追加し、さらにデータが書き込まれたブロックのブロックＩＤをフリーブロックテーブル２１から削除する（ステップＳ１７３）。さらに、メモリコントローラ５０は、今回のＮＡＮＤ整理に対応するように、クラスタテーブル２４におけるクラスタアドレス、物理ブロックＩＤ及び物理ブロック内ページアドレスを更新する（ステップＳ１７４）。
【００７３】
なお、図１７の手順では、フリーブロックにデータを詰め込むことを優先するＮＡＮＤ整理を行ったが、ステップＳ１６４で、ｖを物理ブロックサイズから取得したクラスタの容量を減算することによって求め、ステップＳ１６５でｖ＞０か否かを判定し、ｖ＞０の場合はステップＳ１６８に移行し、ｖ＞０でない場合はステップＳ１６２に移行させるようにすることで、フリーブロックを確保することを優先するＮＡＮＤ整理を行うようにしてもよい。
【００７４】
このように、ＮＡＮＤ整理はＮＡＮＤメモリ２０の物理ブロックの読み出し動作、書き込み動作及び消去動作を多く伴うため、多くの時間を要する。よって、フリーブロックが枯渇した状況で書き込みを行うとＮＡＮＤ整理が発生し、ホスト１００からみた書き込み処理速度が低下する。このように、ＳＳＤの内部状態は時々刻々と変化し、外部からのアクセスに対して非常にナイーブである。
【００７５】
つぎに、図１８を用いてＳＳＤ１０における削除通知について説明する。削除通知は、ホスト１００上のＯＳ１５０でデータの削除が行われた場合に、ホスト１００から外部記憶装置に対して送信される命令である。削除通知の例として、例えば、ＩＮＣＩＴＳ  ＡＴＡ／ＡＴＡＰＩ  Ｃｏｍｍａｎｄ  Ｓｅｔ−２（ＡＣＳ−２）で記述されているData Set Management Command(通称トリム（ＴＲＩＭ）コマンド)があげられる。これは、ＯＳ１５０上でデータが削除された場合、削除されたデータの存在する論理アドレス領域（ＬＢＡ領域）を、ＬＢＡ及びセクタ数の組みよりなるＬＢＡ  Ｒａｎｇｅ  Ｅｎｔｒｙとして外部記憶装置に通知することにより、以後外部記憶装置上でもその領域を空き領域として扱うことができる方式である。削除通知により、ＳＳＤ１０はフリーブロックを新たに確保することができる。なお、トリムコマンドの機能は、Ｄａｔａ  Ｓｅｔ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｍｍａｎｄだけでなく、たとえば、ＩＮＣＩＴＳ  ＡＣＳ−２で記述されているＳＣＴ  Ｃｏｍｍａｎｄ  Ｔｒａｎｓｐｏｒｔや、その他ベンダー独自のコマンドなどその他コマンドによって実現してもよい。
【００７６】
ＳＳＤ１０がホスト１００から削除通知を受信した場合は（ステップＳ１８０）、メモリコントローラ５０は、削除通知に含まれるＬＢＡを先の図１２に示した手順に従ってＬＢＡ正引き変換する。メモリコントローラ５０は、削除通知に含まれるＬＢＡがトラック管理である場合は（ステップＳ１８１：Yes）、物理ブロックＩＤをフリーブロックテーブル２１に追加してアクティブブロックテーブル２２から削除する（ステップＳ１８４）。一方、メモリコントローラ５０は、削除通知に含まれるＬＢＡがクラスタ管理である場合は（ステップＳ１８１：No）、物理ブロックに対応する全クラスタをクラスタテーブル２４から削除し（ステップＳ１８２）、トラックテーブル２３において、ＬＢＡに対応するトラックに対応する物理ブロックＩＤに適当な有効値（例えばFFFF）を記入し（ステップＳ１８３）、物理ブロックＩＤをフリーブロックテーブル２１に追加してアクティブブロックテーブル２２から削除する（ステップＳ１８４）。ＳＳＤ１０では、ＮＡＮＤ整理以外に、削除通知処理によってもフリーブロックを確保することができる。
【００７７】
次にＳＳＤ１０の性能低下について説明する。図１９はＳＳＤ１０の性能低下についての概念図である。まずは書き込み動作の性能低下について述べる（図１９の実線）。工場出荷直後はＳＳＤ１０に何もデータが書かれておらず、全ＬＢＡが未書き込み状態であり、ほとんどすべての物理ブロックがフリーブロックとなっている。このようなときには、ホスト１００からＳＳＤ１０に書き込み命令があると、メモリコントローラ５０は即座にフリーブロックに対してデータを書き込むことができる。一方、ユーザがＳＳＤ１０を使用していくにつれて書き込み量が増大し、フリーブロック数が減少する。特に、トラックサイズ未満の書き込みが大量にあった場合、データはクラスタ単位で管理され、クラスタ単位の書き込み一つに対してクラスタよりも容量の大きい物理ブロックが割り当てられることになる。このため、クラスタ管理下では、書き込まれるデータ容量よりも多くのＮＡＮＤメモリ２０物理ブロックを必要とすることになり、それによりフリーブロックが枯渇していく。フリーブロック残量が少なくなるにつれ、ＮＡＮＤ整理の発生する確率が増大し、さらに、ＳＳＤ１０に保存されているユーザデータが増えるにつれ、ＮＡＮＤ整理時に、一つのフリーブロックを確保するために読み出さなければいけないアクティブブロックの数が増えることになるので、ＮＡＮＤ整理に要する時間も増大する。
【００７８】
書き込みに要する時間は、おおまかに、
書き込み時間＝物理ブロックへの書き込み時間＋ＮＡＮＤ整理発生確率×ＮＡＮＤ整理時間
と現される（実際にはこのほかに管理テーブル処理時間なども加わる）。累積書き込みデータ量が増えるにつれて、ＮＡＮＤ整理発生確率とＮＡＮＤ整理時間の両方が増大することになるため、書き込み性能は加速的に低下する。一方、書き込み性能低下状態において、例えばシーケンシャル書き込みを行うと、トラック管理のデータの比率が増えることでフリーブロックの量が増えるので、書き込み性能が回復する。また、書き込み性能低下状態において、未書き込み状態でないＬＢＡ領域に対して削除通知を行うと、未書き込み状態でないＬＢＡ領域に対応するアクティブブロックが解放されてフリーブロックになるので、書き込み性能が回復する。
【００７９】
図２０は、ＳＳＤ１０がホスト１００からのアクセス頻度が少ないときに自ら行うＮＡＮＤ整理手順を示すものである。ＳＳＤ１０が一定時間（例えば１０秒）以上ホスト１００からコマンドを受信していない場合（アイドル時）、あるいはＳＳＤ１０が一定時間以上ホスト１００からＮＡＮＤメモリ２０へのアクセスが必要なコマンド（メディアアクセスコマンド）を受信していない場合に（ステップＳ１９０）、ＮＡＮＤ整理を行うことによって（ステップＳ１９１）、事前にフリーブロックが確保され、これによって書き込み性能の劣化を防ぐことができる（自動ＮＡＮＤ整理）。自動ＮＡＮＤ整理の発生頻度を上げることでより効果的に性能劣化を防ぐことができるが、一方でＮＡＮＤメモリ２０の消去回数が増えることになり、ＳＳＤ１０の信頼性の劣化要因になるので、性能と信頼性のトレードオフの関係の中でＮＡＮＤ整理開始までの時間を適切に調整する必要がある。
【００８０】
次に、読み出し動作の性能低下について述べる（図１９の破線）。トラック管理のユーザデータを読み出す場合は、トラックテーブル２３を検索して正引き変換すればよく、検索対象の要素数は高々、全容量÷トラックサイズである。一方、クラスタ管理のユーザデータの場合、トラックテーブル２３の検索に加えて、クラスタテーブル２４も検索対象としなければならず、検索対象の要素数は最大、全容量÷クラスタサイズである。クラスタサイズはトラックサイズよりも大幅に小さいのが通常であるため、クラスタテーブル２４の検索対象要素数はトラックテーブルの検索対象要素数より大幅に多く、検索時間が大幅に増大する。それにより、読み出しにかかる時間が増大する。例えば、１トラックを４０９６個のクラスタより構成したした場合、クラスタテーブル２４の要素数はトラックテーブル２３の要素数の４０９６倍である。以上のように、ＳＳＤ１０に対するクラスタ管理のデータ書き込みが増大するにつれ、読み出し性能は低下する。一方、読み出し性能低下状態において、例えばシーケンシャル書き込みを行うと、トラック管理のデータが増えるため、読み出し性能は回復する。
【００８１】
図２１は、比較例として示す一般的な読み出し動作についての性能試験の一例である。読み出し性能試験においては、ホスト１００は、テスト対象ＬＢＡ領域に対し読み出し用のテストデータパターンをシーケンシャル書き込みし、この書き込み後、開始時刻を計測し、計測した開始時刻をホスト１００の主メモリ２０２に保持する。さらに、ホスト１００は、テスト対象ＬＢＡ領域に対するテスト用読み出し命令をＳＳＤ１０に送信することで、書き込みパターンをＳＳＤ１０で読み出させ、読み出されたデータを受信することで、読み出しを終了する。そして、読み出し終了した時刻を計測し、計測した終了時刻をホスト１００の主メモリ２０２に保持する。その後、ＣＰＵ２００が終了時刻から開始時刻を減算することでテスト時間を求め、さらにテスト用読み出しデータ量をテスト時間で除算し、これを読み出し転送データレートとする。
【００８２】
図２２は、比較例として示す一般的な書き込み動作についての性能試験の一例である。書き込み性能試験においては、テスト対象ＬＢＡ領域に対しテストデータパターンをシーケンシャル書き込みし（書かない試験もある）、この書き込み後、開始時刻を計測し、計測した開始時刻をホスト１００の主メモリ２０２に保持する。さらに、ホスト１００は、テスト対象ＬＢＡ領域に対するテスト用書き込み命令をＳＳＤ１０に送信することで、書き込みパターンをＳＳＤ１０で書き込ませ、ＳＳＤ１０から書き込み終了通知を受信することで、書き込みを終了する。そして、書き込み終了した時刻を計測し、計測した終了時刻をホスト１００の主メモリ２０２に保持する。その後、ＣＰＵ２００が終了時刻から開始時刻を減算することでテスト時間を求め、さらにテスト用書き込みデータ量をテスト時間で除算し、これを書き込み転送データレートとする。
【００８３】
このように、上記の性能測定では、ＳＳＤ１０に対する多量の書き込みが発生してしまい、測定そのものがＳＳＤの内部状態に影響を与えてしまうため、測定により内部状態がユーザの実使用時の内部状態からかけ離れてしまい、測定結果がユーザの体感速度から乖離してしまう。例えば、性能測定によってシーケンシャル書き込みのアクセスがホスト１００からＳＳＤ１０に対して発生することで、ＳＳＤ１０の管理情報が書き換わり、クラスタ管理のデータがトラック管理になったり、フリーブロックが減少したりし、書き込み測定・読み出し測定の双方において最終的に計算されたＳＳＤの性能は、測定前の状態の性能であるユーザの実際に体感した性能から乖離する。実際、多くの性能測定ツールにおいては、各種測定でＳＳＤに対して数ギガバイト以上のデータ量でシーケンシャル書き込みが行われる仕様となっており、これらのツールより測定される性能はユーザの体感する性能から大きく乖離する。
【００８４】
以下、本実施の形態の要部について説明する。本実施の形態では、図２に示した主メモリ２０２上の性能評価ツール１１０を用いて性能測定が行われる。性能評価ツール１１０は、前述したように、アクセス情報取得ツール１１１及び性能情報取得ツール１１２を備える。性能評価ツール１１０は、図８に示したように、ＯＳ１５０と情報を授受し、またハードウェアとの命令、応答、データのやり取りにはＯＳ１５０を経由する点においては、一般的なソフトウェア１４０と同じである。一方、本実施形態の性能評価ツール１１０は、図２３に示すように、性能評価ツール１１０以外のソフトウェア１４０がＯＳ１５０を経由してＳＳＤ１０とコマンド（命令、応答、データ）の授受を行った時、少なくとも命令、応答のログをＯＳから受け取る。勿論、命令、応答及びデータのログを受け取るようにしてもよい。
【００８５】
さらに、性能評価ツール１１０は、ＯＳ１５０自身の要求によりＯＳ１５０がＳＳＤ１０とコマンド（命令、応答、データ）の授受を行った時、命令、応答のログをＯＳ１５０から受け取る。勿論、命令、応答及びデータのログを受け取るようにしてもよい。
【００８６】
また、性能評価ツール１１０は、性能評価ツール１１０自身がＯＳ１５０を経由してＳＳＤ１０と命令、応答、データの授受を行った時、命令、応答のログをＯＳ１５０から受け取ってもよいが（勿論、命令、応答、データのログを受け取るようにしてもよい）、本実施の形態では、簡略化のため、性能評価ツール１１０自身とＳＳＤ１０との命令、応答、データのやりとりのログはＯＳ１５０から取得しないことにする。
【００８７】
ＯＳ１５０またはソフトウェア１４０がＳＳＤ１０とアクセスしたときに、このアクセスの際のコマンドのログをＯＳ１５０またはソフトウェア１４０からＯＳ１５０を介して受け取るのは、性能評価ツール１１０のアクセス情報取得ツール１１１が実行する。性能評価ツール１１０のアクセス情報取得ツール１１１が受け取るアクセスログには、図２４に示すように、時刻情報（粗時刻情報、詳細時刻情報を含む）、コマンド方向情報、スレッド識別情報（キューＩＤ）、コマンド内容情報、データ長情報、ＬＢＡ情報などを含む。
【００８８】
時刻情報（粗時刻情報）は、ＳＳＤ１０との命令、応答、データのやりとりの行われた時刻を、例えば秒単位の粒度で取得したものである。時刻はＯＳ１５０により取得されるが、ＢＩＯＳなどから取得してもよい。やりとりの行われた時刻の代わりに、このログの受け渡しが行われた時刻を用いても良い。
【００８９】
時刻情報（詳細時刻情報）は、ＳＳＤ１０との命令・応答・データのやりとりの行われた時刻を秒未満の粒度である例えばμｓｅｃ単位で取得したものである。この時刻もＯＳ１５０により取得されるが、ＢＩＯＳなどから取得してもよい。やりとりの行われた時刻の代わりに、このログの受け渡しが行われた時刻を用いても良い。秒単位以上の桁は切り捨てられる。切り捨てを行わず時刻をすべてμｓｅｃ単位で管理し、粗時刻情報の項目を省略してもよい。
【００９０】
コマンド方向情報は、ＳＳＤ１０に対する命令（要求送信）か、ＳＳＤ１０からの応答（完了通知）かについての情報である。例えば、SATA規格の場合、ＩＮＣＩＴＳ  ＡＣＳ−２記載の60h READ FPDMA QUEUEDコマンドにおいて、60h READ FPDMA QUEUEDコマンドのRegister Host to Device(RegHD)がホスト１００からＳＳＤ１０に送信されたとき、命令（要求送信）としてログをＯＳ１５０から受け取り、60h READ FPDMA QUEUEDコマンドのSet Device Bits(SDB)をＳＳＤ１０から受信した時、同コマンドが完了したとして完了通知のログをＯＳ１５０から受け取る。また、SATA規格の61h WRITE FPDMA QUEUEDコマンドにおいて、61h WRITE FPDMA QUEUEDコマンドのRegHDがホスト１００からＳＳＤ１０に送信されたとき、命令（要求送信）としてログをＯＳ１５０から受け取り、61h WRITE FPDMA QUEUEDコマンドのSDBをＳＳＤ１０から受信した時、同コマンドが完了したとして完了通知のログをＯＳ１５０から受け取る。コマンドが終了しない異常時を除けば、コマンドは命令（要求送信）と応答（完了通知）の対を必ず持つことになり、要求送信がコマンド開始、応答（完了通知）がコマンド終了を示し、これらの差分がコマンド実行に要した時間となる。
【００９１】
スレッド識別情報（キューＩＤ）は、ＳＳＤ１０に対する要求が複数スレッドで行われる場合は、それぞれのスレッドを区別するＩＤである。このスレッドはＯＳ１５０上で管理されるスレッドでもよいし、ＳＳＤ１０とのインターフェース上で管理されるスレッドでもよい。ＳＳＤ１０とのインターフェースインターフェース上で管理されるスレッドには、例えばSATA規格のNative Command Queuing（ＮＣＱ）があり、この場合のキューＩＤは０から３１までが割り振られる。
【００９２】
コマンド内容情報は、例えば、書き込み(Write)か、読み出し(Read)かを識別する情報である。なお、例えばSATA規格の場合、ＩＮＣＩＴＳ  ＡＣＳ−２記載の60h READ FPDMA QUEUEDや25h READ DMA EXTやC8h READ DMAなどのように読み出しコマンドや書き込みコマンドの情報をさらに細かく分類してもよい。本実施の形態では、簡単化のため、書き込み(Write)か、読み出し(Read)かの粒度で情報を取得することにする。書き込みや読み出し以外のコマンドのログを取得してもよいが、本実施の形態では書き込みと読み出しのコマンドのみログを取得することにする。完了通知の場合は、無効値（NULL）が記入される。
【００９３】
データ長情報は、コマンドで指定された先頭ＬＢＡからどれだけの長さを読み出す（あるいは書き込む）かを指定する情報である。ＳＡＴＡ規格におけるセクタカウントに相当する。例えば、ＬＢＡ＝０hに対する書き込みコマンドでデータ長が８h セクタである場合は、ＬＢＡ＝０hからＬＢＡ＝７hにわたる連続した領域が書き込み対象となり、かつその書き込みデータ量は８h セクタ＝４ＫｉＢである。完了通知の場合は、無効値（NULL）が記入される。
【００９４】
ＬＢＡ情報は、コマンドで指定された先頭ＬＢＡの情報である。
【００９５】
性能評価ツール１１０のアクセス情報取得ツール１１１がＯＳ１５０から受け取ったアクセスログは、図２に示す主メモリ２０２上のアクセスログテーブル１２０に逐次蓄えられていく（追記形式）。アクセスログテーブル１２０は、例えば図２４に示すような形式を有し、時刻情報（粗時刻情報、詳細時刻情報を含む）、コマンド方向情報、スレッド識別情報（キューＩＤ）、コマンド内容情報、データ長情報、ＬＢＡ情報などを含んでいる。なお、アクセスログテーブル１２０は、図２５に示すように、要求送信ログと完了通知ログの２つに分けられたログから構成されてもよい。図２５では、ＬＢＡ情報を省略している。
【００９６】
図２６、図２７に、アクセス情報取得ツール１１１によるアクセスログテーブル１２０へのログ追記の手順を示す。アクセス情報取得ツール１１１は、読み出しコマンドまたは書き込みコマンドがＳＳＤ１０に送信されたことを検出すると（図２６：ステップＳ２０１）、このコマンドに対応するアクセスログをアクセスログテーブル１２０に追記する（ステップＳ２０２）。また、アクセス情報取得ツール１１１は、読み出しコマンドに対する応答または書き込みコマンドに対する応答がＳＳＤ１０から受信されたことを検出すると（図２７：ステップＳ２１１）、このコマンド応答に対応するアクセスログをアクセスログテーブル１２０に追記する（ステップＳ２１２）。
【００９７】
アクセスログテーブル１２０に記憶されたアクセスログは、性能評価ツール１１０の性能情報取得ツール１１２によって性能ログ情報に変換され、図２に示す主メモリ２０２上に保持された性能ログテーブル１２５に追記されていく。性能ログ情報は定期的に（例えば１０秒ごと）計算され、所定周期の性能情報として性能ログテーブル１２５に追記される。図２８は、性能ログテーブル１２５の一例を示すものであり、記録要素として、時刻情報、総転送データレート、読み出し転送データレート、 書き込み転送データレートなどを含む。図２８では、転送データレートを記録しているが、前述した処理コマンドレート、応答時間、処理時間、相対スコアなど他の性能を記録してもよい。
【００９８】
時刻情報は、この場合は秒単位以上で管理しており、アクセスログテーブル１２０に含まれる性能計算対象のコマンド群のうち、最後に完了したコマンドの完了時刻を用いている。この時刻情報として、秒単位未満で管理するようにしてもよい。最後に完了したコマンドの完了時刻の代わりに、最初に命令要求が送信されたコマンドの命令要求時刻でもよいし、性能計算対象の時間範囲の始端または末端の時刻を用いても良い。
【００９９】
総転送データレート(ＭｉＢ／ｓ)は、ＳＳＤ１０からホスト１００に読み出し完了したデータ、及びホスト１００からＳＳＤ１０に書き込み完了したデータに関する転送データレートのことである。図２８では、単位は１秒あたりに転送されるデータ量（単位：ＭｉＢ）を示すＭｉＢ／ｓとしている。性能計算対象期間でデータの授受が一切行われなかった場合は、無効値（NULL）を記入するか、あるいは当該行を追加しない。
【０１００】
読み出し転送データレート(ＭｉＢ／ｓ)は、ＳＳＤ１０からホスト１００に読み出し完了したデータに関する転送データレートのことである。図２８では、単位は１秒あたりに転送されるデータ量（単位：ＭｉＢ）を示すＭｉＢ／ｓとしている。性能計算対象期間でデータ読み出しが一切完了しなかった場合は、無効値（NULL）を記入する。
【０１０１】
書き込み転送データレート(ＭｉＢ／ｓ)は、ホスト１００からＳＳＤ１０に書き込み完了したデータに関する転送データレートのことである。図２８では、単位は１秒あたりに転送されるデータ量（単位：ＭｉＢ）を示すＭｉＢ／ｓとしている。性能計算対象期間でデータ書き込みが一切完了しなかった場合は、無効値（NULL）を記入する。
【０１０２】
性能情報取得ツール１１２によって行われるアクセスログから性能ログへの変換は、図２９、図３０に示すような手順で実行される。なお、図２９、図３０に示す手順のいずれか一方を採用することにしてもよいし、図２９及び図３０に示す手順の両方を実行するようにしてもよい。
【０１０３】
図２９に示す手順では、性能情報取得ツール１１２は、所定の性能計算周期毎に、アクセスログテーブル１２０に記憶されたアクセスログを用いて性能を計算し、計算した性能を性能ログテーブル１２５に追記する。すなわち、性能情報取得ツール１１２は、所定の性能計算周期（例えば１０秒）が経過すると（ステップＳ２２０）、アクセスログテーブル１２０に記憶されたアクセスログを用いて、時刻情報、総転送データレート、読み出し転送データレート、書き込み転送データレートなどの性能ログ情報を計算し（ステップＳ２２１）、計算した性能ログ情報を性能ログテーブル１２５に追記し（ステップＳ２２２）、性能ログに追記が完了すると、性能の計算に用いられたアクセスログをアクセスログテーブル１２０から消去する（ステップＳ２２３）。
【０１０４】
図３０に示す手順では、アクセスログテーブル１２０のサイズの上限値が決めており、性能情報取得ツール１１２は、アクセスログテーブル１２０のサイズが上限値に到達した場合に、アクセスログテーブル１２０に記憶されたアクセスログを用いて性能を計算し、計算した性能を性能ログテーブル１２５に追記する。すなわち、性能情報取得ツール１１２は、アクセスログテーブル１２０のサイズが上限値に到達すると（ステップＳ２３０）、アクセスログテーブル１２０に記憶されたログを用いて、時刻情報、総転送データレート、読み出し転送データレート、 書き込み転送データレートなどの性能ログ情報を計算し（ステップＳ２３１）、計算した性能ログ情報を性能ログテーブル１２５に追記し（ステップＳ２３２）、性能ログに追記が完了すると、性能の計算に用いられたアクセスログをアクセスログテーブル１２０から消去する（ステップＳ２３３）。
【０１０５】
図２９、図３０のどちらの手順の場合においても、性能の計算に用いられたコマンドはアクセスログテーブル１２０から消去されるため、データサイズの大きなアクセスログテーブル１２０は、データサイズの小さな性能ログテーブル１２５に順次変換されていくことになる。
【０１０６】
なお、図２９及び図３０に示す手順を併用する場合は、アクセスログテーブル１２０のサイズの上限値に達するまでは、所定の性能計算周期毎に性能ログを計算し、アクセスログテーブル１２０のサイズの上限値に達した時点で、アクセスログテーブル１２０に記録されている全てのアクセスログを用いて性能ログを計算し、この時点で初めてアクセスログテーブル１２０に記録されているアクセスログを消去するといった手法を採用することが可能である。また、アクセスログの消去は、アクセスログテーブル１２０の要素全てではなく、アクセスログ１２０の一部についてのみ行うようにしてもよく、その場合、たとえばアクセスログ１２０の時刻が古い要素から順次消去していくことが望ましい。
【０１０７】
このようにして性能ログテーブル１２５に記録された性能ログは、性能情報取得ツール１１２によって監視されている。図３１は、性能ログテーブル１２５の監視手順を示すものである。性能情報取得ツール１１２は、性能ログテーブル１２５が更新されたか否かを判定しており（ステップＳ２４０）、性能ログテーブル１２５が更新されると、性能ログテーブル１２５の記憶内容をディスプレイ１３３に表示する（ステップＳ２４１）。図３２は、ディスプレイ１３３上に表示される性能ログ情報の一例を示すもので、この場合は、総転送データレートが時刻を横軸にして、リアルタイムで表示されている。ＳＳＤ１０に対し読み書きアクセスが無い期間が一定以上の期間存在する場合は、図３３のように、当該期間のグラフを非表示にするか、アクセスがないことが明らかに判るように表示することが望ましい。
【０１０８】
つぎに、性能情報取得ツール１１２によって行われるアクセスログから性能ログへの変換について詳細に説明する。ここでは総転送データレートを計算する場合を示す。読み出し転送データレートの場合は読み出しコマンドについてのみ考えればよく、書き込み転送データレートの場合は書き込みコマンドについてのみ考えればよい。図３４に示すように、ＳＳＤ１０へのアクセスは複数スレッドで行われることが多い。図３４の場合は、最大の３２スレッドの場合を示している。
【０１０９】
図３４において、クロスハッチングが付された横棒及びハッチングが付された横棒が各種スレッドにおけるコマンドのアクティブ状態を示しており、横棒の左端はコマンドの開始時刻、横棒の右端はコマンドの終了時刻を示す。例えば、ＳＡＴＡ規格におけるNative Command Queuing(NCQ)のReadコマンドであるFirst Party DMA Read（fp DMA Read）コマンドの場合は、図３５に示すように、コマンドの開始時刻は該コマンドにおけるRegister Host to DeviceのFrame Instruction Structure(FIS)がホスト１００からＳＳＤ１０に送信された時刻であり、コマンドの終了時刻はSet Device BitのFISをホスト１００がＳＳＤ１０から受信完了した時刻である。
【０１１０】
また、ＮＣＱのWriteコマンドであるFirst Party DMA Read（fp DMA Write）コマンドの場合は、図３６に示すように、コマンドの開始時刻は、該コマンドにおけるRegister Host to DeviceのFISがホスト１００からＳＳＤ１０に送信された時刻であり、コマンドの終了時刻はSet Device BitのFISをホスト１００がＳＳＤ１０から受信完了した時刻である。
【０１１１】
ＮＣＱに該当しないコマンドについても本発明は適用可能であり、例えば、DMA Readコマンドの場合は、図３７に示すように、コマンドの開始時刻は、該コマンドにおけるRegister Host to DeviceのFISがホスト１００からＳＳＤ１０に送信された時刻であり、コマンドの終了時刻は、Register Device to Hostをホスト１００がＳＳＤ１０から受信完了した時刻である。
【０１１２】
また、ＮＣＱに該当しないWriteコマンドであるDMA Writeコマンドの場合は、図３８に示すように、コマンドの開始時刻は該コマンドにおけるRegister Host to DeviceのFISがホスト１００からＳＳＤ１０に送信された時刻であり、コマンドの終了時刻はRegister Device to HostのFISをホスト１００がＳＳＤ１０から受信完了した時刻である。また、本実施形態ではＳＡＴＡの場合について述べるが、本発明がＳＡＳやＵＳＢなど他のインターフェースにも適用できるのはもちろんである。
【０１１３】
図３４において、時刻ｔ０、ｔ１、ｔ２、ｔ３は性能情報が計算される時刻を示している。全てのコマンドが性能情報が計算されるまでに全て完了しているとは限らず、ハッチングが付された横棒のように、時刻ｔ０、ｔ１、ｔ２、ｔ３でそれぞれ区切られる各時間領域Δｔ１、Δｔ２、Δｔ３、Δｔ４をまたがっているコマンドも中には存在する。また、各時間領域Δｔ１、Δｔ２、Δｔ３、Δｔ４内で、常にＳＳＤ１０へのコマンドがアクティブであるとは限らない。コマンドがアクティブであるとは、ＳＳＤ１０でコマンドが実行中であることをいう。コマンドが非アクティブである期間とは、ホスト１００のＣＰＵ２００が演算待ちであったり、ユーザの操作待ちであったりする期間などである。
【０１１４】
図３９は、性能情報としての転送データレートの計算手順の一例を示すものである。この手順では、複数のスレッドを総合的に判断して転送データレートを計算する。また、この手順では、時刻ｔn-1から時刻ｔnの間の転送データレートの計算手順を示しており、このような手順が性能計算周期毎に繰り返される。計算開始がトリガされると、性能情報取得ツール１１２は、アクセスログテーブル１２０を読み出す（ステップＳ２５０）。性能情報取得ツール１１２は、アクセスログテーブル１２０に記録された時刻情報をもとに、時刻ｔn-1から時刻ｔnの間で、ＳＳＤ１０に対する何れのコマンドもアクティブでない時間（コマンド非アクティブ時間）の合計δnを取得する（ステップＳ２５１）。以下、δnを非アクティブ合計時間という。図３４に示す例では、時刻ｔ０から時刻ｔ１の間では、全ての時間において、複数のスレッドの中のいずれかのスレッドでコマンドがアクティブになっており、δn＝０である。時刻ｔ１から時刻ｔ２の間では、コマンド非アクティブ時間としてδaが存在し、δn＝δaである。時刻ｔ２から時刻ｔ３の間では、コマンド非アクティブ時間としてδb、δcが存在し、δn＝δb＋δcである。
【０１１５】
次に、性能情報取得ツール１１２は、性能測定対象期間の終了時刻ｔnから性能測定対象期間の開始時刻ｔn-1を減算し、性能測定対象期間Δｔnを求める。さらに、性能情報取得ツール１１２は、性能測定対象期間Δｔnから非アクティブ合計時間δnを減算し、実効性能測定対象期間Δtn´（=Δｔn−δn）を求める（ステップＳ２５２）。非アクティブ合計時間δnを減算することによって、ホスト１００においてＣＰＵ２００の演算時間やユーザの応答待ちなど、ＳＳＤ１０以外の要因を性能測定から除外することができる。
【０１１６】
つぎに、性能情報取得ツール１１２は、アクセスログテーブル１２０の記録情報をもとに、時刻ｔn-1から時刻ｔnの間に開始してかつ完了したコマンドのリストを取得して、それらのデータ長を加算することでデータ量合計（＝Ｓ０）を計算する（ステップＳ２５３）。また、性能情報取得ツール１１２は、アクセスログテーブル１２０の記録情報をもとに、前周期である時刻ｔn-2から時刻ｔn-1の間に開始して、現周期である時刻ｔn-1から時刻ｔnの間に完了したコマンドのリストを取得して、それぞれのコマンドのデータ量に対し、
寄与度＝コマンドが時刻ｔn-1から時刻ｔnの間にアクティブな時間／コマンドが時刻ｔn-2から時刻ｔnの間のアクティブな時間
で定義される寄与度をかけたものの合計（＝Ｓ１）を計算する（ステップＳ２５４）。
【０１１７】
図４０は、２つの周期（ｔ０〜ｔ１、ｔ１〜ｔ２）に跨るコマンドを示すもので、Ｂはコマンドが時刻ｔ０から時刻ｔ１の間にアクティブな時間であり、Ｃはコマンドが時刻ｔ１から時刻ｔ２の間にアクティブな時間であり、Ａはコマンドが時刻ｔ０から時刻ｔ２の間にアクティブな時間である。このコマンドについての時刻ｔ０から時刻ｔ１の期間の寄与度はＢ／Ａとなり、時刻ｔ１から時刻ｔ２の期間の寄与度はＣ／Ａとなる。このように、コマンドの全データ量に対し各周期内のアクティブ時間を用いて比例配分を行うことで、前周期に開始されて現周期に終了したコマンドについての現周期分のデータ量を導出する。
【０１１８】
つぎに、性能情報取得ツール１１２は、アクセスログテーブル１２０の記録情報をもとに、現周期である時刻ｔn-1から時刻ｔnの間に開始して、次周期である時刻ｔnから時刻ｔn+1の間に完了したコマンドのリストを取得して、それぞれのコマンドのデータ量に対し、前述した寄与度をかけたものの合計（＝Ｓ２）を計算する（ステップＳ２５５）。
【０１１９】
さらに、性能情報取得ツール１１２は、下式にしたがって転送データレートを計算する（ステップＳ２５６）。
転送データレート＝（Ｓ０＋Ｓ１＋Ｓ２）／Δｔn´
【０１２０】
なお、図３９の手順では、性能測定対象期間（ｔn-1〜ｔn）の前後の一周期（ｔn-2〜ｔn-1、ｔn〜ｔn+1）を参照して転送データレートを計算するようにしたが、性能測定対象期間（ｔn-1〜ｔn）に終了するコマンドが、性能測定対象期間のｎ周期前に開始されている場合は（ｎは自然数）、図４０に示したものと同様の比例配分を行って、性能測定対象期間（ｔn-1〜ｔn）からｎ周期前までを参照して転送データレートを計算するようにしてもよい。同様に、性能測定対象期間（ｔn-1〜ｔn）に開始されるコマンドが、性能測定対象期間のｎ周期後に終了している場合は（ｎは自然数）、性能測定対象期間（ｔn-1〜ｔn）からｎ周期後までを参照して転送データレートを計算するようにしてもよい。
【０１２１】
図４１は、性能情報としての処理コマンドレートの計算手順の一例を示すものである。処理コマンドレートは、前述したように、単位時間あたりにＳＳＤ１０との間で授受された命令数である。図４１の処理内容は、図３９に示した転送データレートの計算における１つのコマンドのデータ量を１とした場合に等しい。計算開始がトリガされると、性能情報取得ツール１１２は、アクセスログテーブル１２０を読み出す（ステップＳ２６０）。性能情報取得ツール１１２は、アクセスログテーブル１２０に記録された時刻情報をもとに、時刻ｔn-1から時刻ｔnの間で、ＳＳＤ１０に対する何れのコマンドもアクティブでない時間（コマンド非アクティブ時間）の合計δnを取得する（ステップＳ２６１）。
【０１２２】
次に、性能情報取得ツール１１２は、性能測定対象期間の終了時刻ｔnから性能測定対象期間の開始時刻ｔn-1を減算し、性能測定対象期間Δｔnを求める。さらに、性能情報取得ツール１１２は、性能測定対象期間Δｔnから非アクティブ合計時間δnを減算し、実効性能測定対象期間Δｔn´（=Δｔn−δn）を求める（ステップＳ２６２）。つぎに、性能情報取得ツール１１２は、アクセスログテーブル１２０の記録情報をもとに、時刻ｔn-1から時刻ｔnの間に開始してかつ完了したコマンドのリストを取得して、それらのコマンドの個数を求めることでコマンド数（＝Ｓ０）を計算する（ステップＳ２６３）。また、性能情報取得ツール１１２は、アクセスログテーブル１２０の記録情報をもとに、前周期である時刻ｔn-2から時刻ｔn-1の間に開始して、現周期である時刻ｔn-1から時刻ｔnの間に完了したコマンドのリストを取得して、前述と同様にしてそれぞれのコマンドの現周期に対する寄与度を計算し、寄与度の合計（＝Ｓ１）を計算する（ステップＳ２６４）。つぎに、性能情報取得ツール１１２は、アクセスログテーブル１２０の記録情報をもとに、現周期である時刻ｔn-1から時刻ｔnの間に開始して、次周期である時刻ｔnから時刻ｔn+1の間に完了したコマンドについても同様の計算を行って寄与度の合計（＝Ｓ２）を計算する（ステップＳ２６５）。さらに、性能情報取得ツール１１２は、下式にしたがって処理コマンドレートを計算する（ステップＳ２６６）。
処理コマンドレート＝（Ｓ０＋Ｓ１＋Ｓ２）／Δｔn´
【０１２３】
図４２は、性能情報としての平均応答時間の計算手順の一例を示すものである。計算開始がトリガされると、性能情報取得ツール１１２は、アクセスログテーブル１２０を読み出す（ステップＳ２７０）。性能情報取得ツール１１２は、アクセスログテーブル１２０の記録情報をもとに、時刻ｔn-1から時刻ｔnの間の性能測定対象期間に完了したコマンド数（＝Ｄ）を取得し（ステップＳ２７１）、時刻ｔn-1から時刻ｔnの間に完了したコマンドのアクティブな時間合計（＝Ｓ）を計算し（ステップＳ２７２）、ＳをＤで除算することで平均応答時間を導出する（ステップＳ２７３）。
【０１２４】
他の性能情報として、最大応答時間を採用する場合は、性能情報取得ツール１１２がアクセスログテーブル１２０を参照して、時刻ｔn-1から時刻ｔnの間に完了したコマンドのアクティブな時間の最大値を取得することで得られる。また、アプリケーション処理時間は、コマンド応答時間の計算において、コマンドのかわりにアプリケーションまたはアプリケーションの各種スレッドのアクティブな時間を用いることで計算することができる。アプリケーション処理時間の計算においては、たとえばＣＰＵの処理待ちやユーザからの入力待ちなどでＳＳＤへのアクセスが発生していない場合は、アプリケーションの動作時間からＳＳＤへのアクセスが発生していない時間を減算し、これをアプリケーション処理時間とすることが望ましい。また、相対スコアは上述した各種スコアの結果または、各種スコアの計算過程における各種パラメータを加算・減算・乗算・除算することによって得られる。
【０１２５】
前述したように、性能ログはホスト１００の主メモリ２０２上に追記されていくが、主メモリ２０２上に保持しているだけでは、ホスト１００の電源がオフになるとその情報が消えてしまう。そこで、図４３に示すように、性能情報取得ツール１１２が性能ログのサイズがある規定値に達したか否かを判定し（ステップＳ２８０）、性能ログのサイズがある規定値に達した場合、性能ログをＳＳＤ１０やその他の外部記憶装置（ＨＤＤやＵＳＢメモリなど）に記録し（ステップＳ２８１）、その後、主メモリ２０２上に保持している性能ログを削除する（ステップＳ２８２）。なお、性能ログをＳＳＤ１０に記録した後、主メモリ２０２上に保持している性能ログをそのまま保持するようにしてもよい。ホスト１００の電源がオフになり、その後ＯＮになった場合は、性能評価ツール１１０がＳＳＤ１０やその他の外部記憶装置に保存された性能ログを再度主メモリ２０２に読み出せばよい。
【０１２６】
また、図４４に示すように、性能情報取得ツール１１２は、性能ログを前回保存してから一定時間（例えば１０分）経過したか否かを判定し（ステップＳ２９０）、一定時間が経過した時、性能ログをＳＳＤ１０やその他の外部記憶装置（ＨＤＤやＵＳＢメモリなど）に記録し（ステップＳ２９１）、その後、主メモリ２０２上に保持している性能ログを削除するようにしてもよい（ステップＳ２９２）。この場合も、性能ログをＳＳＤ１０に記録した後、主メモリ２０２上に保持している性能ログをそのまま保持するようにしてもよい。
【０１２７】
ところで、図３９に示した性能計算手順では、全てのスレッド（ＡＴＡ規格のＮＣＱにおけるタグや、ＯＳ内部のスレッドなど）を総合した性能計算を行ったが、性能情報を各スレッドごとに計算してもよい。特に、一部のＳＳＤのようにＮＡＮＤメモリ２０へのアクセスを各スレッドごとに独立に制御できる場合は、スレッドごとの性能情報も取得することがより望ましい。以下では、スレッド毎の性能情報として、スレッド毎の総転送データレートを計算する場合を示すが、性能情報として、読み出しの転送データレート、書き込みの転送データレート、処理コマンドレート、応答時間、処理時間、相対スコアなどの他の性能指標を取得してもよい。
【０１２８】
図４５は、ＡＴＡ規格のＮＣＱにおいて、各タグ毎の性能情報を計算する場合の例である。一般的には、ＮＣＱだけでなく、ＯＳ１５０におけるスレッド番号毎の性能情報、その他インターフェース規格におけるスレッドごとの性能情報のような、スレッド毎の性能情報を取得するようにしてもよい。図４５において、Ｑ0はＡＴＡ規格のＮＣＱにおけるタグ番号＝０に、Ｑ1はタグ番号＝１に、…、Ｑ31はタグ番号＝３１に対応し、スレッド（キュー）は合計で３１個存在する。クロスハッチングが付された横棒及びハッチングが付された横棒は、図３４と同様、スレッドにおけるコマンドがアクティブな状態を示し、横棒の左端はコマンドの開始時刻（例えば、コマンドのRegHDが送信された時刻）、横棒の右端はコマンドの終了時刻を示す（例えば、コマンドのSDBを受信した時刻）。時刻ｔ0、ｔ1、ｔ2、ｔ3は性能情報が計算される時間である。ハッチングが付された横棒は、時刻ｔ0、ｔ1、ｔ2、ｔ3でそれぞれ区切られる時間領域をまたがっているコマンドを示している。また、前述したように、各時間領域Δｔ１、Δｔ２、Δｔ３、Δｔ４内で、常にＳＳＤ１０へのコマンドがアクティブであるとは限らず、ホスト１００のＣＰＵ２００が演算待ちであったり、ユーザの操作待ちであったりするコマンドが非アクティブである期間δが存在する。
【０１２９】
先の図３９などに示した手順では、全てのスレッドを総合的に判断した性能計算を行うために、非アクティブ期間は、複数のスレッド中でＳＳＤ１０に対する何れのコマンドもアクティブでない期間とした（図３４のδａ、δｂ、δｃ参照）。これに対し、スレッド毎の性能情報を各別に計算する場合は、図４５に示すように、横棒が存在しない期間は、全て、コマンドが実行中でない、非アクティブ期間δ（δ1、δ2、…）となる。したがって、例えば、スレッドＱ0の時刻ｔ0〜時刻ｔ1の期間の実効性能測定対象期間Δｔn´は、Δｔ1−δ1を計算することによって求めることができる。また、スレッドＱ1の時刻ｔ0〜時刻ｔ1の期間の実効性能測定対象期間Δｔn´は、Δｔ1−（δ2＋δ3）を計算することによって求めることができる。また、スレッドＱ5の時刻ｔ0〜時刻ｔ1の期間の実効性能測定対象期間Δｔn´は、Δｔ1−（δ4＋δ5＋δ6）を計算することによって求めることができる。
【０１３０】
つぎに、先の図３９を参照して、性能情報として転送データレートを計算する場合の手順を説明する。計算開始がトリガされると、性能情報取得ツール１１２は、アクセスログテーブル１２０を読み出す（ステップＳ２５０）。性能情報取得ツール１１２は、アクセスログテーブル１２０に記録された時刻情報をもとに、ある一つのスレッド（この場合はスレッドＱ0とする）における時刻ｔn-1から時刻ｔnの間の、非アクティブ時間δの合計δnを取得する（ステップＳ２５１）。次に、性能情報取得ツール１１２は、性能測定対象期間の終了時刻ｔnから性能測定対象期間の開始時刻ｔn-1を減算し、性能測定対象期間Δｔnを求め、さらに性能測定対象期間Δｔnから非アクティブ合計時間δnを減算し、実効性能測定対象期間Δｔn´（=Δｔn−δn）を求める（ステップＳ２５２）。
【０１３１】
つぎに、性能情報取得ツール１１２は、アクセスログテーブル１２０の記録情報をもとに、時刻ｔn-1から時刻ｔnの間に開始してかつ完了したスレッドＱ0のコマンドのリストを取得して、それらのデータ長を加算することでデータ量合計（＝Ｓ０）を計算する（ステップＳ２５３）。また、性能情報取得ツール１１２は、アクセスログテーブル１２０の記録情報をもとに、前周期である時刻ｔn-2から時刻ｔn-1の間に開始して、現周期である時刻ｔn-1から時刻ｔnの間に完了したスレッドＱ0のコマンドのリストを取得して、前述と同様にしてそれぞれのコマンドの現周期に対する寄与度を計算し、それぞれのコマンドのデータ量に対し各寄与度をかけたものの合計（＝Ｓ１）を計算する（ステップＳ２５４）。つぎに、性能情報取得ツール１１２は、アクセスログテーブル１２０の記録情報をもとに、現周期である時刻ｔn-1から時刻ｔnの間に開始して、次周期である時刻ｔnから時刻ｔn+1の間に完了したスレッドＱ0のコマンドについても同様の計算を行って寄与度を計算し、それぞれのコマンドのデータ量に対し各寄与度をかけたものの合計（＝Ｓ２）を計算する（ステップＳ２５５）。さらに、性能情報取得ツール１１２は、下式にしたがってスレッドＱ0における現周期の転送データレートを計算する（ステップＳ２５６）。
転送データレート＝（Ｓ０＋Ｓ１＋Ｓ２）／Δｔn´
このような処理を、各スレッドについて繰り返し実行する。
【０１３２】
図４６は、転送データレートをスレッド毎に計算した場合の性能ログテーブル１２５の一例を示すものである。図４６に示すように、性能ログテーブル１２５には、スレッド毎にかつ測定対象期間毎に、総転送データレートが記録されている。性能ログとしては、総転送データレート、読み出し転送データレート、書き込み性能転送データレートそれぞれについて集計してもよい。性能ログを、転送データレート、処理コマンドレート応答時間、処理時間、相対スコアそれぞれについて集計してもよい。また、（Ｑ1とＱ2）、（Ｑ3とＱ4）のように、複数のスレッド（キュー）をグループ化して、グループ毎に性能ログを記録するようにしてもよい。性能ログは図３２と同様に、グラフによってディスプレイ１３３上に可視化することができる。また、図３３と同様に、あるスレッドにおいてＳＳＤ１０に対し読み書きアクセスが無い期間が一定以上の期間存在する場合は、当該スレッドにおける当該期間のグラフを非表示にするか、当該スレッドに対してアクセスがないことが明らかに判るように表示することが望ましい。
【０１３３】
このように第１の実施形態によれば、性能評価ツール１１０は、ホスト１００の通常使用時に、ソフトウェア１４０やＯＳ１５０がＳＳＤ１０と授受したコマンドのアクセスログを取得してアクセスログテーブル１２０に記憶し、この記憶したアクセスログを用いてＳＳＤの性能情報を演算することとしたので、性能測定用の特別な書き込み、性能測定用の特別な測定期間が発生せず、ユーザが体感しているユーザの実使用に極めて外部記憶装置の時々刻々の性能情報を正確に把握することができ、また外部記憶装置の信頼性低下に対して悪影響を及ぼすことがない。また、時間情報を用いて性能情報を演算する場合、外部記憶装置に対するコマンドが非アクティブである時間を除外した実効時間情報を用いて性能情報を演算することとしたので、ユーザの入力待ち、ＣＰＵなどその他ハードウェアの応答待ちなどに影響されずに、外部記憶装置の性能を正確に把握することが可能となる。なお、性能ログをＳＳＤ１０に保存する場合のみ、ＳＳＤ１０への余分な書き込みが発生するが、性能ログはデータサイズが非常に小さいため、ＳＳＤ１０の性能や信頼性に与える影響は極めて少ないし、性能情報取得時間間隔を長くすればするほど、その影響をさらに小さくすることができる。
【０１３４】
（第２の実施形態）
第２の実施形態では、性能ログをシーケンシャルアクセス（シーケンシャル読み出し、シーケンシャル書き込み）とランダムアクセス（ランダム読み出し、ランダム書き込み）に分類し、さらに性能ログをデータ長で分類するようにしている。図４７は、第２の実施形態が適用された性能ログテーブル１２５を示すもので、性能情報としてはデータ転送レートが示されている。図４７に示すように、性能ログテーブル１２５は、シーケンシャル読み出し、シーケンシャル書き込み、ランダム読み出し、ランダム書き込みの４つのテーブルに分類されている。さらに、各テーブルは、複数の異なるデータ長によっても分類されている。例えば、小さなサイズである４ＫＢ毎にシーケンシャルアクセスを行う場合と、比較的大きなサイズである１２８ＫＢ毎にシーケンシャルアクセスを行う場合とで、ＳＳＤ１０の性能が異なってくるので、本実施形態では、データ長に応じた性能分類を行っている。
【０１３５】
図４８は、シーケンシャルアクセスであるかランダムアクセスであるかを識別するための手順の一例を示すものである。性能情報取得ツール１１２は、アクセスログテーブル１２０に記録されたアクセスログ情報を時系列順に読み出し、各コマンドログ情報を読み出しコマンドであるか書き込みコマンドであるかに応じて分類し、さらにデータ長に応じても分類する（ステップＳ３００）。つぎに、性能情報取得ツール１１２は、リードかライトかによって分類しかつデータ長毎に分類した１つのグループについて、当該アクセスログ情報に含まれるコマンドのＬＢＡが、直前のアクセスログ情報に含まれるコマンドのＬＢＡに対し直前のアクセスログ情報に含まれるデータ長を加算した結果と等しいか否かを判定し（ステップＳ３０１）、等しい場合は当該アクセスログ情報をシーケンシャルアクセスに分類する（ステップＳ３０３）。また、ステップＳ３０１の判断がＮＯである場合は、性能情報取得ツール１１２は、当該アクセスログ情報の直後のアクセスログ情報に含まれるコマンドのＬＢＡが、当該アクセスログ情報に含まれるコマンドのＬＢＡに対し当該アクセスログ情報に含まれるデータ長を加算した結果と等しいか否かを判定し（ステップＳ３０２）、等しい場合は当該アクセスログ情報をシーケンシャルアクセスに分類し（ステップＳ３０３）、等しくない場合は、ランダムアクセスに分類する（ステップＳ３０４）。このような処理を、分類したグループ毎に実行する。
【０１３６】
なお、上記の処理は、複数のスレッドが存在する場合は、複数のスレッドを総合的に見て、シーケンシャルかランダムであるかを判定するようにしたほうが望ましい。また、現コマンドと次のコマンドとのＬＢＡの連続性が所定コマンド数以上続いた場合に、シーケンシャルと判断し、そうでない場合にランダムと判断するようにしてもよい。さらに、現コマンドと次のコマンドとのＬＢＡの連続性が所定のデータサイズ以上続いた場合に、シーケンシャルと判断し、そうでない場合にランダムと判断するようにしてもよい。
【０１３７】
第２の実施形態によれば、性能ログをシーケンシャルアクセスとランダムアクセスに分類しているので、ＳＳＤの性能をシーケンシャルアクセスとランダムアクセスに分類して評価することが可能となる。また、性能ログをデータ長に応じて分類しているので、ＳＳＤの性能をデータ長に分類して評価することが可能となる。
【０１３８】
（第３の実施形態）
第３の実施形態では、性能情報取得ツール１１２は、リアルタイム監視している性能情報をもとにＳＳＤ１０の性能低下を検知し、ＳＳＤ１０の性能回復するための処理を実行するようにする。前述したように、ＳＳＤ１０の性能が低下すると、転送データレートが低下し、処理コマンドレートが低下し、応答時間が増加し、処理時間は増加する。相対スコアは各スコア値に依存して悪化する。転送データレートの下限値、処理コマンドレートの下限値、応答時間の上限値、処理時間の上限値、または相対スコアの閾値を定め、これらの境界条件値を越えた時、ＳＳＤ１０の性能が低下したと判定することができる。以下、転送データレートの場合についてのみ述べるが、その他の性能指標の場合においても同様に処理可能である。また、各境界条件値値は、例えばＳＳＤの設計時の設計期待値や、顧客に提示した最低スペックなどにより定めることができる。
【０１３９】
図４９は、転送データレートが下限値を下回ったときに、削除通知（例えばトリムコマンド）を行うことで性能を回復させる手順を示すものである。性能情報取得ツール１１２は、性能ログテーブル１２５の記憶情報に基づき転送データレートが下限値を下回ったか否かを判定しており（ステップＳ３１０）、転送データレートが下限値を下回った場合、ＯＳ１５０からファイル管理情報を取得し、取得したファイル管理情報に基づき、データの存在しないＬＢＡ領域のＬＢＡを取得し（ステップＳ３１１）、取得したＬＢＡ領域に対して削除通知（例えばトリムコマンド）を発行する（ステップＳ３１２）。これにより、ＳＳＤ１０のフリーブロック数が増大し、ＳＳＤ１０の性能が回復する。
【０１４０】
図５０は、転送データレートが下限値を下回ったときに、ホスト１００上でデフラグ（defragmentation）を行うことで性能を回復させる手順を示すものである。性能情報取得ツール１１２は、転送データレートが下限値を下回った場合（ステップＳ３２０）、例えばホスト１００に搭載されているファイル最適化ツール（デフラグツール）などを用いてホスト１００上でデフラグを実行する（ステップＳ３２１）。通常、外部記憶装置は使用が進むに伴い、図５１（ａ）に示すように、ファイルや空き領域が断片化してくる。ユーザデータは通常ＯＳ１５０によってファイル単位で管理されているが、同一ファイルにも関わらず、そのデータが不連続なＬＢＡ領域に保存されていることがある（図５１（ａ）に示すファイル“a.dat”）。この時、断片化ファイル“a.dat”を読み出すと、それぞれのＬＢＡ領域に対して読み出しコマンドを発行しなければならず、読み出し性能が劣化する。デフラグ機能では、この断片化したデータを連続したＬＢＡ領域に対して再配置することで、図５１（ｂ）に示すように、断片化状態を解消する。このようなデフラグによる性能回復は、不揮発性記憶装置１０の処理すべき読み出しコマンドのコマンド数を低減させる効果があるため、ＮＡＮＤフラッシュメモリを記憶媒体とするＳＳＤに限らず、例えばハードディスクドライブのようなその他不揮発性記憶装置に対しても有効である。さらに、ハードディスクドライブにおいては、読み出し対象のＬＢＡ領域が断片化していると、ヘッダのシーク回数が増えて性能が劣化するため、デフラグは有効である。
【０１４１】
ＯＳ１５０上のファイル管理テーブルでデータを格納されていないとされる領域（空き領域）は、ユーザが使用を重ねるにつれ、図５１（ｃ）に示すように、不連続なＬＢＡ領域に分散するようになる。この状態で、ユーザが新たにファイルを作成・更新すると、ＯＳ１５０が断片化したＬＢＡ領域をデータ書き込み用として割り当てる場合があり、この時、本来は連続したＬＢＡ領域に対する一度の書き込みで済むはずの書き込み動作が、断片化した複数のＬＢＡ領域に対する書き込みになってしまうことがあり、これにより書き込み性能が劣化する。デフラグ機能では、図５１（ｄ）に示すように、この断片化した空き領域にユーザデータを移動して埋めるようＬＢＡの再配置を行うことで、空き領域の断片化を解消する。それにより、外部記憶装置に対する書き込み性能が向上する。このようなデフラグによる性能回復は、不揮発性記憶装置１０の処理すべき書き込みコマンドのコマンド数を低減させる効果があるため、ＮＡＮＤフラッシュメモリを記憶媒体とするＳＳＤに限らず、例えばハードディスクドライブのようなその他不揮発性記憶装置に対しても有効である。さらに、ハードディスクドライブにおいては、書き込み対象のＬＢＡ領域が断片化していると、ヘッダのシーク回数が増えて性能が劣化するため、デフラグは有効である。
【０１４２】
図５２は、転送データレートが下限値を下回ったときに、強制的にＮＡＮＤ整理を行うようＳＳＤ１０に命令を送信することで性能を回復させる手順を示すものである。当該命令は、たとえばＩＮＣＩＴＳ  ＡＣＳ−２に記述されているＳＣＴ  Ｃｏｍｍａｎｄ  Ｔｒａｎｓｐｏｒｔやその他ベンダー独自のコマンドなどによって行ってもよい。性能評価ツール１１０は、転送データレートが下限値を下回った場合（ステップＳ３３０）、ＮＡＮＤ整理を行うようＳＳＤ１０に命令を送信する（ステップＳ３３１）。これにより、ＳＳＤ１０上でＮＡＮＤ整理が行われ、フリーブロック数が増大し、ＳＳＤ１０の性能が回復する。
【０１４３】
図５３は、転送データレートが下限値を下回ったときに、ソフトウェア１４０またはＯＳ１５０から一定時間以上ＳＳＤ１０に一切の命令を送信しないように制御するかまたはＳＳＤ１０にメディアアクセスコマンド（ＮＡＮＤメモリ２０に対するアクセスが発生するコマンド）をソフトウェア１４０またはＯＳ１５０から送信させないように制御することで、ＳＳＤ１０上で前述の自動ＮＡＮＤ整理を発生させ、性能を回復させる手順を示すものである。性能情報取得ツール１１２は、転送データレートが下限値を下回った場合（ステップＳ３４０）、ソフトウェア１４０またはＯＳ１５０から一定時間以上ＳＳＤ１０に一切の命令を送信しないようにするかまたはＳＳＤ１０にメディアアクセスコマンドを送信しないようにする（ステップＳ３４１）。このようにしてＳＳＤ１０でＮＡＮＤ整理を発生させることで、ＳＳＤ１０のフリーブロック数が増大し、ＳＳＤ１０の性能が回復する。
【０１４４】
図５４はハードディスクドライブ（ＨＤＤ）の転送データレートのＬＢＡ依存性を示すものである。ＨＤＤは通常ＬＢＡが小さいデータほどＨＤＤの磁気ディスクの外周部に位置し、ＬＢＡが大きいデータほどＨＤＤの磁気ディスクの内周部に位置する。一方、磁気ディスクの角速度は一定であることから、ＨＤＤの外周部ほど単位時間あたりにヘッダを通過するビット数が大きく、ＨＤＤの内周部ほど単位時間あたりにヘッダを通過するビット数が小さくなる。このため、図５４に示すように、ＬＢＡが大きくなればなるほど性能は低下する。
【０１４５】
図５５は、外部記憶装置としてＨＤＤが採用された場合の性能回復手順を示すものである。性能情報取得ツール１１２は、転送データレートが下限値を下回った場合（ステップＳ３５０）、ＬＢＡの大きなデータをＬＢＡの小さな空き領域に移動する（ステップＳ３５１）。これにより、ＨＤＤの性能劣化を回復することができる。
【０１４６】
以上のように、転送データレートが下限値を下回ったときに、ＳＳＤの最適化を行うよう各種コマンドを送信したりＳＳＤを制御したりすることで、ＳＳＤの性能を回復させることができる。なお、本実施形態の最適化機能は、本実施形態で述べた最適化機能の具体例に限定されるものではない。
【０１４７】
以上で用いられた境界条件値を超えた場合、上述した性能最適化を行う代わりに、ユーザに警告メッセージを表示するようにしてもよい。また、上記境界条件値（上限値・下限値など）は、外部記憶装置の設計段階で固定値に定めてもよいし、後から動的に変更可能としてもよい。例えば、ある下限値を境界条件値として定めている時、上記した最適化を行っても性能回復が見られない場合や最適化があまりに高頻度に頻発してしまうような場合は、下限値をさらに引き下げて条件を緩めることも有効である。境界条件を動的なものとする場合には、その動的な境界条件値を、図５６に示すように、ホスト１００の主メモリ２０２上に保持するようにすればよい。図５６では、主メモリ２０２内に、境界条件値を記憶する境界条件値記憶領域１２６が設けられている。また、図５７に示すように、性能評価ツール１１０は、境界条件が変更された場合（ステップＳ３６０）、変更された境界条件値をＳＳＤ１０に保存して（ステップＳ３６１）、不揮発化することとしてもよい。
【０１４８】
なお、境界条件値を決める際には、性能ログテーブル１２５に保存された過去の性能情報をもとに境界条件を定めてもよい。例えば、初回電源オン後、所定期間（例えば１か月）の平均性能情報をＳＳＤ１０内に保持しておき、この平均性能情報の例えば０．８倍を境界条件として定めておけば、出荷直後の性能より性能が２割悪化した段階で、ＳＳＤ１０に対し上記した最適化を行うことになる。
【０１４９】
（第４の実施形態）
これまでの実施形態においては、性能評価ツール１１０は、アクセス情報取得ツール（アクセス情報取得プログラム）１１１が常時、ソフトウェア１４０のアクセス情報を監視し、アクセスログテーブル１２０にアクセス情報を追記するように構成されていた。一方、ホスト１００のＣＰＵの性能が極端に低い場合など、アクセス情報取得ツール１１１のＣＰＵ負荷が高く、性能評価ツール１１０以外の演算処理効率を低下させてしまう場合には、アクセス情報取得を低減することが望ましい。このため、性能評価ツール１１０の性能情報取得ツール１１２がＣＰＵ使用率をＯＳ１５０から定期的に取得し、ホスト１００のＣＰＵ使用率が所定値以上の場合にはアクセス情報取得ツール１１１をアンロードしてアクセスログを取得しないようにしてもよい。
【０１５０】
図５８は、ＣＰＵ使用率に基づいて性能情報取得ツール１１２がアクセス情報取得ツール１１１をアンロード、再ロードするための手順を示すものである。ホスト１００の起動後、性能評価ツール１１０の性能情報取得ツール１１２が起動され、性能情報取得ツール１１２がアクセス情報取得ツール１１１をロードする（ステップＳ５７０）。性能情報取得ツール１１２はＣＰＵ使用率をＯＳ１５０から定期的に取得し、ＣＰＵ使用率が所定値Ｊ１（例えば８０％）以上であるか否かを判断する（ステップＳ５７１）。性能情報取得ツール１１２は、ＣＰＵ使用率が所定値Ｊ１以上の場合は、ＣＰＵの負荷が高すぎると判断し、その他のアプリケーションの処理を優先させるため、アクセス情報取得ツール１１１をアンロードする（ステップＳ５７２）。その後、性能情報取得ツール１１２は、ＣＰＵ使用率をＯＳ１５０から定期的に取得し、ＣＰＵ使用率が所定値Ｊ２（例えば６０％）以下であるか否かを判断する（ステップＳ５７３）。性能情報取得ツール１１２は、ＣＰＵ使用率が所定値Ｊ２以下の場合は、ＣＰＵの負荷が軽減されたと判断し、アクセス情報取得ツール１１１を再ロードしてアクセスログの取得を再開する（ステップＳ５７０）。
【０１５１】
所定値Ｊ１、Ｊ２は、アクセス情報取得ツール１１１のロードとアンロードの切り替えが頻繁に発生して、切り替え動作自体がホスト１００への負荷になることを防ぐために、Ｊ１＞Ｊ２＋マージンであることが望ましい。例えば、マージンは２０％程度に設定する。また、ＣＰＵが高負荷である状況におけるＣＰＵ使用率監視（ステップＳ５７３）は、監視自体がＣＰＵへの負荷になることを防ぐために、ステップＳ５７３でのＣＰＵ使用率の取得時間間隔をステップＳ５７１でのＣＰＵ使用率の取得時間間隔よりも長くとることが望ましい。
【０１５２】
図５９は、一定時間ごとに性能情報取得ツール１１２がアクセス情報取得ツール１１１をアンロード、再ロードするための手順を示すものである。性能情報取得ツール１１２は、アクセス情報取得ツール１１１をロードした後（ステップＳ５８０）、一定時間（例えば１時間）が経過したか否かを判定し（ステップＳ５８１）、一定時間が経過すると、アクセス情報取得ツール１１１をアンロードする（ステップＳ５８２）。その後、性能情報取得ツール１１２は、一定時間（例えば１時間）が経過したか否かを判定し（ステップＳ５８３）、一定時間が経過すると、アクセス情報取得ツール１１１を再ロードしてアクセスログの取得を再開する（ステップＳ５８０）。このように、一定時間ごとにアクセスログを取得する期間と取得しない期間とを切り替えるようにしている。
【０１５３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１５４】
１  コンピュータシステム（パーソナルコンピュータ）、１０  ＳＳＤ、２０  ＮＡＮＤフラッシュメモリ、２１  フリーブロックテーブル、２２  アクティブブロックテーブル、２３  トラックテーブル、２４  クラスタテーブル、３０  インタフェースコントローラ、４０  ＲＡＭ、５０  メモリコントローラ、９０  ＡＴＡインタフェース、１００  ホスト、１１０  性能評価ツール、１１１  アクセス情報取得ツール、１１２  性能情報取得ツール、１２０  アクセスログテーブル、１４０  （その他の）ソフトウェア、１５０  オペレーティングシステム、２０２  主メモリ。
【図１】
0005611909.tif 000002
【図２】
0005611909.tif 000003
【図３】
0005611909.tif 000004
【図４】
0005611909.tif 000005
【図５】
0005611909.tif 000006
【図６】
0005611909.tif 000007
【図７】
0005611909.tif 000008
【図８】
0005611909.tif 000009
【図９】
0005611909.tif 000010
【図１０】
0005611909.tif 000011
【図１１】
0005611909.tif 000012
【図１２】
0005611909.tif 000013
【図１３】
0005611909.tif 000014
【図１４】
0005611909.tif 000015
【図１５】
0005611909.tif 000016
【図１６】
0005611909.tif 000017
【図１７】
0005611909.tif 000018
【図１８】
0005611909.tif 000019
【図１９】
0005611909.tif 000020
【図２０】
0005611909.tif 000021
【図２１】
0005611909.tif 000022
【図２２】
0005611909.tif 000023
【図２３】
0005611909.tif 000024
【図２４】
0005611909.tif 000025
【図２５】
0005611909.tif 000026
【図２６】
0005611909.tif 000027
【図２７】
0005611909.tif 000028
【図２８】
0005611909.tif 000029
【図２９】
0005611909.tif 000030
【図３０】
0005611909.tif 000031
【図３１】
0005611909.tif 000032
【図３２】
0005611909.tif 000033
【図３３】
0005611909.tif 000034
【図３４】
0005611909.tif 000035
【図３５】
0005611909.tif 000036
【図３６】
0005611909.tif 000037
【図３７】
0005611909.tif 000038
【図３８】
0005611909.tif 000039
【図３９】
0005611909.tif 000040
【図４０】
0005611909.tif 000041
【図４１】
0005611909.tif 000042
【図４２】
0005611909.tif 000043
【図４３】
0005611909.tif 000044
【図４４】
0005611909.tif 000045
【図４５】
0005611909.tif 000046
【図４６】
0005611909.tif 000047
【図４７】
0005611909.tif 000048
【図４８】
0005611909.tif 000049
【図４９】
0005611909.tif 000050
【図５０】
0005611909.tif 000051
【図５１】
0005611909.tif 000052
【図５２】
0005611909.tif 000053
【図５３】
0005611909.tif 000054
【図５４】
0005611909.tif 000055
【図５５】
0005611909.tif 000056
【図５６】
0005611909.tif 000057
【図５７】
0005611909.tif 000058
【図５８】
0005611909.tif 000059
【図５９】
0005611909.tif 000060