(57)【要約】【課題】  応答性能を最適に調整する記憶装置及び情報処理システムを提供する。【解決手段】  実施形態によれば、記憶装置は、インタフェースを介してホストと接続可能であり、複数のブロックを含む不揮発性メモリと、不揮発性メモリに電気的に接続されたコントローラとを具備する。コントローラは、ホストからリクエスト及びリクエストの応答性能を低下させる旨の通知を受信した場合に、リクエストの処理時間よりも長い応答時間を決定し、応答時間とリクエストの処理時間との差である遊休時間を使って不揮発性メモリのブロック管理処理を実行する第１の性能低下処理を実行するか、又は、応答時間を費やしてリクエストを処理するよう応答性能を低下させる第２の性能低下処理を実行するように構成される。【選択図】  図１
2020046752.tif 000002
【特許請求の範囲】
【請求項１】
インタフェースを介してホストと接続可能であり、
１つ以上のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続されたコントローラと、
を具備し、
前記コントローラは、
前記ホストからリクエスト及び前記リクエストの応答性能を低下させる旨の通知を受信した場合に前記リクエストの処理時間よりも長い応答時間を決定し、前記応答時間と前記リクエストの処理時間との差である遊休時間を使って前記不揮発性メモリのブロック管理処理を実行する第１の性能低下処理を実行するか、又は、前記応答時間を費やして前記リクエストを処理するよう前記応答性能を低下させる第２の性能低下処理を実行するように構成される
記憶装置。
【請求項２】
前記応答性能の調整幅を示す第１の情報と、前記ホストより受信したリクエストの処理時間及び前記応答性能の調整状態とを示す第２の情報とを記憶し、
前記コントローラは、前記第１の情報と前記第２の情報とに基づいて、前記応答時間を決定する
請求項１に記載の記憶装置。
【請求項３】
前記第２の性能低下処理は、前記不揮発性メモリに対するアクセスの並列数を減らす処理である、
請求項１又は請求項２に記載の記憶装置。
【請求項４】
前記ブロック管理処理は、ウェアレベリング又はガベージコレクションである、
請求項１乃至請求項３のいずれか一項に記載の記憶装置。
【請求項５】
ホストと、
請求項１の記憶装置と、
を備え、
前記ホストは、
前記ホストで実行される複数のプロセスを性能特性ごとにグループ分けして管理し、前記グループごとに前記リクエストを発行するプロセスのＩ／Ｏ特性を決定し、
前記Ｉ／Ｏ特性に基づいて、前記記憶装置に対し、前記リクエストに対する応答性能を低下させるか否かの通知を送信する
情報処理システム。
【請求項６】
複数のハードウェアリソースを含むホストと、
請求項１の記憶装置と、
を備え、
前記ホストは、
前記複数のハードウェアリソースの使用率に基づいて、前記リクエストを発行するプロセスのＩ／Ｏ特性を決定し、
前記Ｉ／Ｏ特性に基づいて、前記記憶装置に対し、前記リクエストに対する応答性能を低下させるか否かの通知を送信する
情報処理システム。
【請求項７】
インタフェースを介してホストと接続可能であり、
１つ以上のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続されたコントローラと、
を具備し、
前記コントローラは、前記ホストより受信するリクエストごとの応答性能の調整値を示す情報を記憶し、前記情報に基づいて前記ホストより受信したリクエストに対する応答時間を決定し、前記応答時間と前記受信したリクエストの処理時間との差である遊休時間を使って前記不揮発性メモリのブロック管理処理を実行する第１の性能低下処理を実行するか、又は、前記応答時間を費やして前記受信したリクエストを処理するよう前記応答性能を低下させる第２の性能低下処理を実行するように構成される
記憶装置。
【請求項８】
前記第２の性能低下処理は、前記不揮発性メモリに対するアクセスの並列数を減らす処理である、
請求項７に記載の記憶装置。
【請求項９】
前記ブロック管理処理は、ウェアレベリング又はガベージコレクションである、
請求項７又は請求項８に記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、記憶装置及び情報処理システムに関する。
【背景技術】
【０００２】
近年、不揮発性メモリを備えるストレージが広く普及している。このようなストレージの一つとして、ＮＡＮＤ型フラッシュメモリを備えるソリッドステートドライブ（ＳＳＤ）が知られている。ＳＳＤは、様々なコンピューティングデバイスのメインストレージとして使用されている。
【０００３】
ＳＳＤは、例えばデータのライト又はリードといったリクエストを受信した場合に、ベストエフォートで当該リクエストを処理する。ここで、ベストエフォートとは、意図的に処理を遅延させずに、ＳＳＤの備えるリソースを最大限に活用して処理を実行することを指す。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−１１７０５５号公報
【特許文献２】特許第６１６０８４８号公報
【特許文献３】米国特許第９０１５４０３号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、応答性能を最適に調整する記憶装置及び情報処理システムを提供することである。
【課題を解決するための手段】
【０００６】
実施形態によれば、記憶装置は、インタフェースを介してホストと接続可能であり、複数のブロックを含む不揮発性メモリと、前記不揮発性メモリに電気的に接続されたコントローラとを具備する。前記コントローラは、前記ホストからリクエスト及び前記リクエストの応答性能を低下させる旨の通知を受信した場合に、前記リクエストの処理時間よりも長い応答時間を決定し、前記応答時間と前記リクエストの処理時間との差である遊休時間を使って前記不揮発性メモリのブロック管理処理を実行する第１の性能低下処理を実行するか、又は、前記応答時間を費やして前記リクエストを処理するよう前記応答性能を低下させる第２の性能低下処理を実行するように構成される。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態に係るコンピュータシステムの構成例を示すブロック図。
【図２】ホストとＳＳＤとの間のリクエスト及びレスポンスの第１の例を示す図。
【図３】ホストとＳＳＤとの間のリクエスト及びレスポンスの第２の例を示す図。
【図４】第１の実施形態に係る性能調整に関する属性情報の一例を示す図。
【図５】第１の実施形態に係るＳＳＤの性能調整状態を管理するテーブルの一例を示す図。
【図６】第１の実施形態に係るコンピュータシステムにおける性能調整処理の一例を示すフローチャート。
【図７】第１の実施形態に係るコンピュータシステムにおける性能調整処理の一例を示すタイミングチャート。
【図８】第２の実施形態に係るホストにおけるプロセス管理処理の一例を示すフローチャート。
【図９】第２の実施形態に係るプロセスグループの一例を示す図。
【図１０】第３の実施形態に係るプロセスごとの性能調整を管理するテーブルの一例を示す図。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら各実施形態について説明する。以下の説明において、略又は実質的に同一の機能及び構成要素については、同一符号を付し、必要に応じて説明を行う。
【０００９】
［第１の実施形態］  
本実施形態において、Ｉ／Ｏとは、例えば後述するホスト（ホストデバイス）２からＳＳＤ３へのアクセスを意味する。Ｉ／Ｏ待ちとは、ホスト２がＳＳＤ３からの応答を待っている状態を意味する。ここで、ホストとは、ＳＳＤ３へアクセスする情報処理装置である。
【００１０】
本実施形態において、リクエストとは、例えば処理要求を意味する。リクエストは、主としてホスト２からＳＳＤ３に対して発行される。リクエストを処理したＳＳＤ３は、ホスト２に対してレスポンスを返す。レスポンスとは、リクエストに対して処理結果を応答することを意味する。
【００１１】
以下では、ホスト２とＳＳＤ３で協調しながら、最適な応答性能を定めるホスト２及びＳＳＤ３の構成及び処理について説明する。
【００１２】
図１は、本実施形態に係るコンピュータシステム１の構成例を示すブロック図である。なお、コンピュータシステム１は情報処理システム１とも称される。
【００１３】
コンピュータシステム１は、ホスト２と、ＳＳＤ３とを含む。
【００１４】
ホスト２は、ＳＳＤ３にアクセスする情報処理装置（コンピューティングデバイス）である。ホスト２は、大量かつ多様なデータをＳＳＤ３に保存するサーバ（ストレージサーバ）であってもよいし、パーソナルコンピュータであってもよい。ＳＳＤ３は、ＮＡＮＤ型フラシュメモリのような不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。
【００１５】
ホスト２は、ＳＳＤ３に対してリクエストを発行する際に、当該リクエストについて下記の第１〜第３のケースを把握しうる。第１のケースは、当該リクエストが同期Ｉ／Ｏである場合である。この場合、ホスト２は、ＳＳＤ３よりベストエフォートで当該リクエストに対するレスポンスが返ってくることを期待する。第２のケースは、当該リクエストが非同期Ｉ／Ｏであり、かつ当該リクエストの処理速度のボトルネックがＳＳＤ３へのアクセスではないと把握している場合である。第３のケースは、当該リクエストが非同期Ｉ／Ｏであり、かつ当該リクエストの処理速度のボトルネックがＳＳＤ３へのアクセスであることを把握している場合である。
【００１６】
第１及び第３のケースにおいては、ＳＳＤ３はベストエフォートで当該リクエストを処理することが好ましい。一方、第２のケースにおいては、ボトルネックがＳＳＤ３へのアクセス以外であるため、ＳＳＤ３はホスト２に対してベストエフォートでレスポンスを返す必要は無い。
【００１７】
ＳＳＤ３は記憶装置であり、ホスト２として機能する情報処理装置のメインストレージとして使用され得る。ＳＳＤ３は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブル又はネットワークを介して接続されてもよい。ＳＳＤ３は、例えば、ダイレクト・アタッチド・ストレージ（ＤＡＳ）としてホスト２に電気的に接続されている。
【００１８】
ホスト２とＳＳＤ３とを相互接続するためのインタフェースとしては、ＳＣＳＩ、Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ（ＳＡＳ）、ＡＴＡ、Ｓｅｒｉａｌ  ＡＴＡ（ＳＡＴＡ）、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）（登録商標）、Ｅｔｈｅｒｎｅｔ（登録商標）、Ｆｉｂｒｅ  ｃｈａｎｎｅｌ、ＮＶＭ  Ｅｘｐｒｅｓｓ（ＮＶＭｅ）（登録商標）などが使用され得る。
【００１９】
ＳＳＤ３は、コントローラ４、ＮＡＮＤ型フラッシュメモリ５などを含む。コントローラ４は、例えばＳｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ（ＳｏＣ）のような回路によって実現され得る。ＳＳＤ３は、揮発性メモリであるランダムアクセスメモリ、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）６を備えていてもよい。あるいは、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のようなランダムアクセスメモリがコントローラ４に内蔵されていてもよい。
【００２０】
ＤＲＡＭ６などのランダムアクセスメモリには、例えば、ＮＡＮＤ型フラッシュメモリ５から読み出されたデータを一時的に格納するためのバッファ領域であるリードバッファ、ＮＡＮＤ型フラッシュメモリ５に書き込まれるデータを一時的に格納するためのバッファ領域であるライトバッファ、ガベージコレクションに用いられるバッファなどが設けられている。なお、ＤＲＡＭ６は、コントローラ４の内部に設けられていてもよい。
【００２１】
ＮＡＮＤ型フラッシュメモリ５は、複数のＮＡＮＤ型フラッシュメモリチップ（複数のＮＡＮＤ型フラッシュメモリダイ）を含んでいてもよい。
【００２２】
各チップは、メモリセルアレイを含む。このメモリセルアレイは、複数のＮＡＮＤブロック（ブロック）Ｂ０〜Ｂｍ−１を含む。ブロックＢ０〜Ｂｍ−１は、消去単位として機能する。ブロックは「物理ブロック」又は「消去ブロック」と称されることもある。
【００２３】
ブロックＢ０〜Ｂｍ−１は複数のページ（物理ページ）を含む。つまり、ブロックＢ０〜Ｂｍ−１の各々は、ページＰ０〜Ｐｎ−１を含む。不揮発性メモリにおいては、データの読み出し及びデータの書き込みはページ単位で実行される。データの消去はブロック単位で実行される。
【００２４】
コントローラ４は、ＮＡＮＤ型フラッシュメモリ５を制御するように構成されたメモリコントローラである。
【００２５】
コントローラ４は、例えば、ホストインタフェース１１、ＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４などを含む。これらホストインタフェース１１、ＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４は、バス１０を介して相互接続されていてもよい。
【００２６】
ホストインタフェース１１は、ホスト２から様々なリクエストを受信し、ホスト２へ当該リクエストに対するレスポンスを送信する回路として機能する。リクエストには、例えば、Ｉ／Ｏコマンド、制御コマンド、などの各種コマンドが含まれる。Ｉ／Ｏコマンドには、ライト（書き込み）コマンド、リード（読み出し）コマンド、アンマップコマンド（トリムコマンド）、フォーマットコマンド、フラッシュコマンドなどが含まれうる。なお、ライトコマンドは、プログラムコマンドとも呼ばれる。フォーマットコマンドは、メモリシステム（ＳＳＤ３）全体をアンマップするためのコマンドである。フラッシュコマンドは、メモリシステム内にキャッシュされている（バッファされている）ダーティデータ（ユーザデータ及び関連する管理データ）をＮＡＮＤ型フラッシュメモリ５に書き込むことですべてクリーンな状態にするためのコマンドである。
【００２７】
ＤＲＡＭインタフェース１４は、ＤＲＡＭ６のアクセスを制御するように構成されたＤＲＡＭコントローラとして機能する。
【００２８】
ＮＡＮＤインタフェース１３は、ＮＡＮＤ型フラッシュメモリ５を制御するように構成されたＮＡＮＤ制御回路として機能する。ＮＡＮＤインタフェース１３は、複数のチャンネルを介して、ＮＡＮＤ型フラッシュメモリ５内の複数のチップにそれぞれ接続されていてもよい。
【００２９】
ＣＰＵ１２は、ホストインタフェース１１、ＮＡＮＤインタフェース１３、及びＤＲＡＭインタフェース１４を制御するように構成されたプロセッサである。ＣＰＵ１２は、図示しないＲＯＭなどに格納されている制御プログラム（ファームウェア）を実行することによって様々な処理を行う。
【００３０】
本実施形態において、ＣＰＵ１２は、例えばコマンド制御部２１、フラッシュトランスレーション層（ＦＴＬ）２２などとして機能する。
【００３１】
コマンド制御部２１は、ホスト２より受信する上述のような各種コマンドを処理するためのコマンド処理を実行する。
【００３２】
フラッシュトランスレーション層２２は、ＮＡＮＤ型フラッシュメモリ５のデータ管理及びブロック管理を実行する。
【００３３】
データ管理には、例えば、論理アドレスそれぞれとＮＡＮＤ型フラッシュメモリ５の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理などが含まれる。ここで、論理アドレスは、ＳＳＤ３をアドレス指定するためにホスト２によって使用されるアドレスである。この論理アドレスとしては、例えば、論理ブロックアドレス（ＬＢＡ）が使用される。
【００３４】
論理ブロックアドレス（ＬＢＡ）それぞれと物理アドレスそれぞれとの間のマッピングの管理は、アドレス変換テーブル（論理物理アドレス変換テーブル）として機能するルックアップテーブル２３を用いて実行される。コントローラ４は、ルックアップテーブル２３を使用して、ＬＢＡそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。あるＬＢＡに対応する物理アドレスは、このＬＢＡのデータがライトされたＮＡＮＤ型フラッシュメモリ５内の物理記憶位置を示す。なお、ルックアップテーブル２３は、ＳＳＤ３の電源オン時にＮＡＮＤ型フラッシュメモリ５からＤＲＡＭ６にロードされてもよい。
【００３５】
コマンド制御部２１は、例えばリードコマンドを受信した場合に、論理アドレス（ＬＢＡ）に対応するルックアップテーブル２３のエントリに基づいて、ＬＢＡに対応する物理アドレスを求め、ＮＡＮＤ型フラッシュメモリ５からリードコマンドに応じたデータを読み出す。
【００３６】
また、コマンド制御部２１は、例えばライトコマンドを受信した場合に、当該ライトコマンドに応じてホスト２から受信されたデータを、ＤＲＡＭ６上のバッファに蓄積する。さらに、コマンド制御部２１は、ＮＡＮＤ型フラッシュメモリ５のチップにプログラムコマンドを送ることにより、当該チップに対して、バッファに蓄積されたデータを書き込み先ブロックにプログラムさせる。
【００３７】
一方、ブロック管理には、例えば、ガベージコレクション（ＧＣ）、ウェアレベリングなどが含まれる。
【００３８】
ガベージコレクション制御部２４は、ガベージコレクション（ＧＣ）を実行する。ここで、ＧＣは、データの書き込み先ブロックとしてのフリーブロックを生成するために実行される処理である。より具体的には、ガベージコレクション制御部２４は、既に書き込み済みのブロック（アクティブブロック）からＧＣソースブロックを選択し、ＧＣソースブロックから有効データを集め、それを新しいブロック（ＧＣデスティネーションブロック）に書き込み、有効データが元々格納されていたブロックをフリーブロックとする。
【００３９】
ウェアレベリング制御部２５は、ウェアレベリングを実行する。ウェアレベリングは、ブロックの消去回数を平準化する処理である。特に、消去回数が多いブロックの発生を防ぐことにより、ＳＳＤ３の故障確率を低下させることができる。
【００４０】
ＮＡＮＤ制御部２６は、上述のＮＡＮＤインタフェース１３の制御を実行する。
【００４１】
パフォーマンス制御部３０は、ＳＳＤ３の性能調整処理を実行する。より具体的には、パフォーマンス制御部３０は、例えばホスト２からの通知により性能調整処理を実行するか否かを判定する。性能調整処理を実行する場合、パフォーマンス制御部３０は、ＳＳＤ３の性能調整幅の範囲内で、リクエストに対する応答性能を向上又は低下させる。
【００４２】
パフォーマンス制御部３０は、性能調整処理を実行する際に、ホスト２よりリクエストを受信してから、ホスト２へレスポンスを送信するまでの応答時間（以下、レスポンス時間とする）を算出する。また、パフォーマンス制御部３０は、ベストエフォートでリクエストを処理した場合にかかる処理時間（以下、リクエスト処理時間とする）をあらかじめ算出しておくことが好ましい。
【００４３】
パフォーマンス制御部３０は、このレスポンス時間がリクエスト処理時間よりも長い場合に、このレスポンス時間とリクエスト処理時間との差である遊休時間を算出する。この場合、パフォーマンス制御部３０は、ベストエフォートでリクエストを処理し、かつ遊休時間内で完了する処理（例えば、上述のＧＣ、ウェアレベリングなど）を実行する。
【００４４】
また、この場合、パフォーマンス制御部３０は、例えば遊休時間を費やして（レスポンス時間を費やして）リクエストの処理が完了するように、リクエストに対応する応答性能を低下させてもよい。リクエストに対する応答性能を低下させる例として、例えば、ＮＡＮＤアクセスの並列数を減らすことなどが挙げられる。ＮＡＮＤアクセスの並列数とは、コントローラ４からＮＡＮＤ型フラッシュメモリ５に対して並列的にアクセス可能なチャンネルの数を示す。このＮＡＮＤアクセスの並列数を増やすほど、ＮＡＮＤ型フラッシュメモリ５に対するアクセス速度は向上する。例えば、ＮＡＮＤアクセスの並列数が１６チャンネルである場合のアクセス速度は、ＮＡＮＤアクセスの並列数が８チャンネルである場合に比べおおよそ２倍となる。
【００４５】
パフォーマンス制御部３０は、ＳＳＤ３における性能調整状態を管理し、ホスト２に通知してもよい。ＳＳＤ３の性能調整状態の管理については、図５を用いて後述する。
【００４６】
次に、ホスト２の構成について説明する。ホスト２は、ＤＡＳとして接続されているＳＳＤ３にアクセスするための機能を有する。また、ホスト２は、ネットワーク（クラウド）上のストレージにアクセスするための機能を有していてもよい。
【００４７】
ホスト２は、様々なプログラムを実行する。情報処理装置によって実行されるプログラムには、ファイルシステム４１、オペレーティングシステム（ＯＳ）４２、アプリケーションレイヤ４３などが含まれる。
【００４８】
ファイルシステム４１は、ファイルの操作（作成、保存、更新、削除等）のための制御を行うために使用される。例えば、ＺＦＳ、Ｂｔｒｆｓ、ＸＦＳ、ｅｘｔ４、ＮＴＦＳなどがファイルシステム４１として使用されてもよい。あるいは、ファイルオブジェクトシステム（例えば、Ceph Object Storage Daemon）、Key Value Store System（例えば、Ｒｏｃｋｓ  ＤＢ）がファイルシステム４１として使用されてもよい。
【００４９】
一般に知られているように、オペレーティングシステム（ＯＳ）４２は、ホスト２全体を管理し、ホスト２内のハードウェアを制御し、アプリケーションがハードウェア及びＳＳＤ３を使用することを可能にするための制御を実行するように構成されたソフトウェアである。
【００５０】
オペレーティングシステム４２は、例えば、プロセス管理部５１、ハードウェアリソース管理部５２などを含む。
【００５１】
プロセス管理部５１は、オペレーティングシステム４２上で動作する各種プロセスの状態を管理する。
【００５２】
ハードウェアリソース管理部５２は、ホスト２内のハードウェアリソースの状態を管理する。ホスト２が有するハードウェアリソースの例としては、例えば、ＣＰＵ（Central Processing Unit）、各種ストレージ、メモリ、ネットワークなどが挙げられる。
【００５３】
アプリケーションレイヤ４３上では、様々なアプリケーションソフトウェアスレッドが実行される。アプリケーションソフトウェアスレッドの例としては、クライアントソフトウェア、データベースソフトウェア、仮想マシン等がある。
【００５４】
アプリケーションレイヤ４３がリクエストをＳＳＤ３に送信する際、アプリケーションレイヤ４３は、まずＯＳ４２にそのリクエストを送信する。ＯＳ４２はそのリクエストをファイルシステム４１に送信する。ファイルシステム４１は、当該リクエストを、コマンド（例えば、リードコマンド、ライトコマンドなど）に変換する。ファイルシステム４１は、コマンドを、ＳＳＤ３に送信する。ＳＳＤ３からのレスポンスが受信された際、ファイルシステム４１は、そのレスポンスをＯＳ４２に送信する。ＯＳ４２は、そのレスポンスをアプリケーションレイヤ４３に送信する。
【００５５】
アプリケーションレイヤ４３は、Ｉ／Ｏ特性把握部４３１を含む。Ｉ／Ｏ特性把握部４３１が各プロセスにおいて使用されるハードウェアの状態を監視し、Ｉ／Ｏ待ちがボトルネックであるか否かを判定する。
【００５６】
Ｉ／Ｏ特性把握部４３１は、プロセス管理部５１で管理される各プロセスのＩ／Ｏ特性を把握し、ＳＳＤ３が性能調整を行うか否かを決定する。そして、ホスト２は、ＳＳＤ３にリクエストを送信する際に、当該決定に基づくＳＳＤ３の性能調整に関する通知を送信することにより、ＳＳＤ３に対して性能調整を指示する。なお、この性能調整に関する通知の詳細は、図４を用いて後述する。
【００５７】
Ｉ／Ｏ特性把握部４３１は、例えば、下記第１又は第２の視点で各プロセスのＩ／Ｏ特性を把握する。第１の視点においては、Ｉ／Ｏ特性把握部４３１は、Ｉ／Ｏリクエストを発行した単一のプロセスの状態、種類などに基づいて、当該プロセスのＩ／Ｏ特性を判定する。すなわち、Ｉ／Ｏ特性把握部４３１は、発行するＩ／Ｏリクエストが、当該プロセスの実行にあたりボトルネックであるかどうかを判定する。
【００５８】
具体的には、例えば、プロセスが動画再生である場合、動画再生中のＩ／Ｏリクエストは、動画データをキャッシュするためのリードリクエストである場合が多い。したがって、当該Ｉ／Ｏリクエストは、ベストエフォートでのレスポンスは不要であると判定されてもよい。
【００５９】
一方、第２の視点においては、Ｉ／Ｏ特性把握部４３１は、他のハードウェアリソースの使用率などに基づいて、Ｉ／Ｏリクエストを発行したプロセスのＩ／Ｏ特性を判定する。
【００６０】
具体的には、例えば、ホスト２全体でＣＰＵリソースの使用率が高く、Ｉ／Ｏリクエストを発行したプロセスにおいてもＣＰＵリソースがボトルネックとなる場合、Ｉ／Ｏ特性把握部４３１は、当該Ｉ／Ｏリクエストについてはベストエフォートでのレスポンスは不要であると判定してもよい。
【００６１】
換言すれば、第２の視点によれば、Ｉ／Ｏ特性把握部４３１は、Ｉ／Ｏリクエストを発行した単一のプロセスだけでなく、他の複数のプロセスの実行状態に基づいて当該プロセスのＩ／Ｏ特性を把握可能である。
【００６２】
なお、Ｉ／Ｏ特性把握部４３１は、ＳＳＤ３より性能調整状態を取得してもよい。Ｉ／Ｏ特性把握部４３１は、例えば取得した性能調整状態に基づき、今後のＳＳＤ３の性能調整に関する通知内容を決定してもよい。
【００６３】
図２及び図３は、比較例にかかるコンピュータシステム１Ａにおけるホスト２ＡとＳＳＤ３Ａとの間のリクエスト及びレスポンスの例を示す図である。
【００６４】
図２に示すように、比較例のコンピュータシステム１Ａにおいては、ホスト２ＡはＳＳＤ３Ａに対して、例えば、リードコマンド、ライトコマンドなどを含むリクエストを発行し、ＳＳＤ３Ａに対して送信する（矢印Ａ１）。ＳＳＤ３Ａは、ベストエフォートで受信したリクエストを処理する。そして、ＳＳＤ３Ａは、ホスト２Ａに対し、当該リクエストに対するレスポンスを送信する（矢印Ａ２）。
【００６５】
すなわち、比較例にかかるコンピュータシステム１Ａにおいては、当該リクエストを発行したプロセスにおいてＩ／Ｏ待ちがボトルネックであるか否かにかかわらず、ＳＳＤ３Ａからほぼ同じ時間でレスポンスが送信される。
【００６６】
図３に示すように、比較例のコンピュータシステム１Ａにおいて、ホスト２Ａは、ＳＳＤ３Ａより受信したレスポンスを確認した後、次にＳＳＤ３Ａに依頼する処理が無い場合は、ＳＳＤ３Ａに対してスリープコマンドを送信する（矢印Ａ３）。ＳＳＤ３Ａは、ホスト２Ａに対してスリープ完了通知を送信し（矢印Ａ４）、低消費電力モードに遷移する。このように、比較例のコンピュータシステム１Ａにおいては、ホスト２Ａは、処理対象のリクエストがなくなればＳＳＤ３Ａを低消費電力モードに遷移するよう制御する。ＳＳＤ３Ａが低消費電力モードに遷移することにより、ＳＳＤ３Ａのバックグラウンド処理であるＮＡＮＤ型フラッシュメモリのブロック管理のための処理（例えば、ウェアレベリング、ＧＣなど）の実行が制限され得る。
【００６７】
図４は、本実施形態に係る性能調整に関する属性情報の一例を示す図である。
【００６８】
性能調整に関する属性情報は、例えば２ビットの情報である。この属性情報は、上述のように、ホスト２からＳＳＤ３に送信されるリクエストとともに、ＳＳＤ３に通知される。ＳＳＤ３は、受信した属性情報に基づいて、実行する性能調整処理の内容を決定する。
【００６９】
例えば、属性情報が“００”である場合、ホスト２は、ＳＳＤ３に対して最も高い応答性能で（すなわち、ベストパフォーマンスで）リクエストの処理を要求することを示す。属性情報が“０１”である場合、ホスト２は、ＳＳＤ３に対して現在の応答性能の維持を要求することを示す。属性情報が“１０”である場合、ホスト２は、リクエストを発行したプロセスにおいてＩ／Ｏ待ちが発生している（Ｉ／Ｏボトルネックである）ため、ＳＳＤ３に対して応答性能の向上を要求することを示す。属性情報が“１１”である場合、ホスト２は、他のリソース待ちが発生している（Ｉ／Ｏボトルネックでない）ため、ＳＳＤ３に対して応答性能の低下を要求することを示す。
【００７０】
なお、この属性情報は、例えばＮＶＭｅ規格に規定されるリードコマンド又はライトコマンドの予約領域の一部を用いて実現されてもよい。
【００７１】
また、この属性情報は、例えば性能調整のオン又はオフを示す１ビットの情報でもよく、性能調整の内容をより細かく表現した３ビット以上の情報でもよい。属性情報のビット数が多い場合、例えば、上述のように応答性能を向上又は低下させる要求に、応答性能の調整割合に関する情報を付加してもよい。応答性能の調整割合に関する情報とは、例えば、ベストエフォートからどれだけ応答性能を低下させるか、又は、現在よりどれだけ応答性能を向上させるか、などである。これにより、ＳＳＤ３は、より細かく性能調整を実行できる。
【００７２】
図５は、本実施形態に係るＳＳＤ３の性能調整状態を管理するテーブルＴＢ１の一例を示す図である。
【００７３】
ＳＳＤ３のパフォーマンス制御部３０は、例えば、テーブルＴＢ１を用いて性能調整状態を管理する。テーブルＴＢ１は、例えば、最新のリクエスト処理における性能調整状態を記憶してもよく、又は、過去の数回のリクエスト処理における性能調整状態を記憶してもよい。テーブルＴＢ１は、例えばＤＲＡＭ６などに格納される。
【００７４】
テーブルＴＢ１は、アクセス種別１０１、リクエスト処理時間１０２、調整状態１０３などを関連付けて管理する。
【００７５】
アクセス種別１０１は、リクエストに含まれるコマンドの種類を示す。リクエスト処理時間１０２は、アクセス種別１０１ごとのコマンド処理にかかった時間を示す。
【００７６】
調整状態１０３は、アクセス種別１０１ごとの処理が、例えばベストエフォートからどれだけ性能調整されているかを示す情報である。
【００７７】
例えば、テーブルＴＢ１は、４ＫｉＢランダムリードのリクエスト処理時間１０２がｘ１［ｕｓ］であることを示す。また、テーブルＴＢ１は、４ＫｉＢランダムリードがベストエフォートの状態からｚ１［％］だけ応答性能を低下させるよう調整されていることを示す。
【００７８】
また、ＳＳＤ３には、性能調整可能な調整幅があらかじめ設定されることが好ましい。この調整幅は、例えば、ＮＶＭｅ規格のSet Featuresコマンドなどにより設定可能である。
【００７９】
パフォーマンス制御部３０は、テーブルＴＢ１で管理されるリクエスト処理時間１０２と、この調整幅とに基づいて、現在のリクエストに対するレスポンス時間を算出する。
【００８０】
図６は、本実施形態に係るコンピュータシステムにおける性能調整処理の一例を示すフローチャートである。図６において、ホスト２では、ＳＳＤ３に対してアクセスが必要なあるプロセスが実行されているとする。
【００８１】
ステップＳ１０１において、ホスト２は、ＳＳＤ３に対しＩ／Ｏリクエストを送信する。当該Ｉ／Ｏリクエストは、処理対象のプロセスの指示により実行される。
【００８２】
ステップＳ１０２において、ホスト２のＩ／Ｏ特性把握部４３１は、処理対象のプロセスがＩ／Ｏボトルネックであるか否かを確認する。処理対象のプロセスがＩ／Ｏボトルネックでない場合、処理はステップＳ１０３へ進む。一方、処理対象のプロセスがＩ／Ｏボトルネックである場合、処理はステップＳ１０８へ進む。
【００８３】
ステップＳ１０３において、ホスト２は、ＳＳＤ３に対し、Ｉ／Ｏボトルネックでない旨の通知を行う。より具体的には、ホスト２は、性能調整に関する属性情報“１１”とし、ステップＳ１０１で送信するＩ／Ｏリクエストに、当該属性情報を付加することにより、ＳＳＤ３に対して性能調整の通知を行う。
【００８４】
ステップＳ１０４及びステップＳ１０５は、ＳＳＤ３が受信したＩ／Ｏリクエストに対して応答性能を低下させる処理である。ステップＳ１０４において、パフォーマンス制御部３０は、ホスト２より受信した性能調整の通知に基づき、遊休時間を算出する。ステップＳ１０５において、パフォーマンス制御部３０は、算出された遊休時間内で処理可能なバックグラウンド処理を選択し、実行する。なお、パフォーマンス制御部３０は、遊休時間（レスポンス時間）を費やしてリクエストの処理が完了するよう、リクエストの応答性能を低下させてもよい。
【００８５】
ステップＳ１０６において、ＳＳＤ３は、ホスト２に対して処理したリクエストに対するレスポンスを送信する。
【００８６】
ステップＳ１０７において、パフォーマンス制御部３０は、性能調整状態を管理するテーブルＴＢ１に、リクエスト処理にかかった時間、調整状態などを記録する。
【００８７】
ステップＳ１０８〜Ｓ１１２は、ＳＳＤ３の応答性能を向上させる処理である。
【００８８】
ステップＳ１０８において、ホスト２は、ＳＳＤ３に対し、Ｉ／Ｏボトルネックでない旨の通知を行う。より具体的には、ホスト２は、ステップＳ１０１で送信するＩ／Ｏリクエストに、性能調整に関する属性情報“１０”を付加する。
【００８９】
ステップＳ１０９において、パフォーマンス制御部３０は、応答性能を低下させる処理がすでに実行されているか否かを確認する。より具体的には、パフォーマンス制御部３０は、テーブルＴＢ１の調整状態１０３を読み出すことにより、例えばリクエスト処理の性能をベストエフォートからどれだけ低下させているかを判定する。
【００９０】
応答性能を低下させる処理が実行されている場合、ステップＳ１１０において、パフォーマンス制御部３０は、応答性能を向上させる処理を実行する。より具体的には、パフォーマンス制御部３０は、例えば所定の割合で遊休時間を減らしてもよく、又は、ＮＡＮＤ並列数を増やしてレスポンス時間を短縮してもよい。
【００９１】
一方、ステップＳ１０９において、応答性能を低下させる処理が実行されていない場合、ＳＳＤ３はすでにベストエフォートで動作しているため、応答性能を向上させる処理（ステップＳ１１０）は行われない。
【００９２】
ステップＳ１１１，Ｓ１１２の処理は、ステップＳ１０６，Ｓ１０７の処理と同様であるため、説明を省略する。
【００９３】
図７は、本実施形態に係るコンピュータシステムにおける性能調整処理の一例を示すタイミングチャートである。図７において、横軸は時間を示す。
【００９４】
まず、ホスト２は、ＳＳＤ３に対してＩ／Ｏリクエストを送信する。ＳＳＤ３は、時刻Ｔ１において、受信したＩ／Ｏリクエストに含まれるコマンド処理を開始する。ＳＳＤ３は、当該コマンド処理をベストエフォートで実行し、時間ΔＴＡ後に処理を完了する。その後、ＳＳＤ３は、ホスト２に対し、レスポンスを送信する。
【００９５】
ホスト２は、時刻Ｔ２より、例えばＣＰＵ待機プロセスを実行する。その後、ＳＳＤ３に対し、Ｉ／Ｏボトルネックでない旨の通知とともに、Ｉ／Ｏリクエスト送信する。
【００９６】
ＳＳＤ３のパフォーマンス制御部３０は、受信した当該通知に基づいてＳＳＤ３の応答性能を低下させる。具体的には、パフォーマンス制御部３０は、遊休時間ΔＴｂを算出する。そして、ＳＳＤ３は、例えば、時刻Ｔ３より受信したリクエストに含まれるコマンド処理をベストエフォートで実行し、その後の遊休時間ΔＴｂでＧＣを実行する。その後、ＳＳＤ３は、ホスト２に対し、レスポンスを送信する。なお、コマンド処理時間ΔＴＡと遊休時間ΔＴｂの和が、このＩ／Ｏリクエストに対するレスポンス時間ΔＴＢとなる。
【００９７】
ホスト２は、時刻Ｔ４より、例えばさらにＣＰＵ待機プロセスを実行する。その後、ＳＳＤ３に対し、Ｉ／Ｏボトルネックでない旨の通知とともに、Ｉ／Ｏリクエスト送信する。
【００９８】
ＳＳＤ３のパフォーマンス制御部３０は、受信した当該通知に基づいて、さらにＳＳＤ３の応答性能を低下させる。図７の例では、パフォーマンス制御部３０は、遊休時間を算出した上でレスポンス時間ΔＴＣを算出する。そして、パフォーマンス制御部３０は、時刻Ｔ５より、受信したＩ／Ｏリクエストに含まれるコマンド処理を実行し、コマンド処理時間がこのレスポンス時間ΔＴＣとなるように、例えばＮＡＮＤアクセスの並列数を減らす。その後、ＳＳＤ３は、ホスト２に対し、レスポンスを送信する。
【００９９】
以上説明した本実施形態において、ホスト２は、あるプロセスがＩ／Ｏボトルネックでない場合に、ＳＳＤ３に対し、Ｉ／ＯリクエストとともにＩ／Ｏボトルネックでない旨の通知を送信する。ＳＳＤ３は、当該通知に基づき、ＳＳＤ３の応答性能を低下させる。これにより、ホスト２のユーザの体感性能を低下させることなく、ＳＳＤ３の性能調整を実行できる。
【０１００】
また、ＳＳＤ３は、この性能調整により遊休時間が発生するたびに、遊休時間を使ってウェアレベリング、ＧＣなどのブロック管理を実行する。したがって、ＳＳＤ３においてはブロック管理がなされた状態が維持されるため、例えば、ブロック管理を集中的に行う場合と比べて、恒常的に応答性能を向上させることができる。より具体的には、ＳＳＤ３内部で発生するブロック管理のリクエストの増加のためにホスト２からのリクエストが制限される状態を回避できる。このため、例えば、ホスト２が意図しないタイミングで、急にＳＳＤ３からのレスポンスが遅延することを防ぐことができる。
【０１０１】
また、ホスト２は、性能調整により遅延したタイミングで、当該Ｉ／Ｏリクエストに対するレスポンスを受け取る。ホスト２は、当該プロセスのボトルネックとなるリソースを再度確認する。ここでなおＩ／Ｏ待ちが発生していない場合は、さらにＳＳＤ３に対してＩ／Ｏボトルネックでない旨を通知する。これにより、ホスト２は、ＳＳＤ３の性能調整を連続的に実行できる。
【０１０２】
また、上記ブロック管理を定期的に実行することは、ＳＳＤ３の恒常的なピーク電力の抑制にも寄与する。
【０１０３】
本実施形態において、ＳＳＤ３は、遊休時間を使って実行する処理の内容を変化させることにより、処理速度以外のＳＳＤ３の応答性能を柔軟に改善できる。例えば、ＳＳＤ３の応答性能が低下している場合は、遊休時間を使ってブロック管理を実行することにより、応答性能が改善する。また、ＳＳＤ３の消費電力が高い場合は、遊休時間（レスポンス時間）を費やしてリクエストの処理を実行するためにＮＡＮＤアクセスの並列数を減らすことにより、一時的に消費電力を低下させることができる。
【０１０４】
本実施形態において、ホスト２は、リードコマンド又はライトコマンドのリザーブ領域を利用して、ＳＳＤ３に対して性能調整に関する属性情報を通知する。すなわち、ホスト２は、既存のインタフェースを利用して、ＳＳＤ３に対して当該属性情報を通知できるため、コンピュータシステム１のユーザの利便性が確保される。
【０１０５】
本実施形態において、ホスト２は、１つ以上のハードウェアリソースの使用率などに基づいて、あるプロセスのＩ／Ｏ特性を判定する。すなわち、他の複数のプロセスの実行状態を考慮に入れたＩ／Ｏ特性の判定が可能となるため、Ｉ／Ｏ特性の判定精度が向上する。
【０１０６】
なお、本実施形態においては、ＳＳＤ３はホスト２より受信した単一のＩ／Ｏリクエストに対して性能調整を実行するとして説明した。しかしながら、ＳＳＤ３は、複数のＩ／Ｏリクエストに対して性能調整を実行してもよい。これにより、ＳＳＤ３は、複数のリクエストを１つのトランザクションとして捉えた性能調整が可能となるため、より多くの遊休時間を得ることができる。
【０１０７】
例えば、ＳＳＤ３から動画データを読み出す場合、ホスト２からＳＳＤ３に対して複数回のリードリクエストが送信される。ＳＳＤ３は、例えば、複数のリードリクエストを１連のアクセスシーケンスとしてまとめてテーブルＴＢ１で管理する。これにより、ＳＳＤ３は、複数のリードリクエスト分の遊休時間をまとめて得ることができる。
【０１０８】
［第２の実施形態］  
本実施形態は、第１の実施形態の変形例である。第１の実施形態では、アプリケーションレイヤ４３のＩ／Ｏ特性把握部４３１が、あるプロセスに対して性能調整を行うか否かを決定するとして説明した。一方、本実施形態では、。オペレーティングシステム４２がプロセスをグループ分けし、プロセスグループごとに性能特性を決定する。
【０１０９】
図８は、本実施形態に係るホスト２におけるプロセス管理処理の一例を示すフローチャートである。また、図９は、本実施形態に係るプロセスグループの一例を示す図である。なお、本実施形態において、プロセス管理部５１以外のコンピュータシステム１の構成は、第１の実施形態と同様であるため、説明を省略する。
【０１１０】
ステップＳ３０１において、ホスト２のプロセス管理部５１は、各プロセスを性能特性ごとにグルーピングする。
【０１１１】
より具体的には、プロセス管理部５１は、例えば図９に示すように、複数のプロセスグループを管理する。例えば、プロセスグループＧ１は、Ｉ／Ｏがボトルネックであるプロセス（例えばプロセスＡ，Ｂ）を管理し、プロセスグループＧ２は、他のハードウェアリソースがボトルネックであるプロセス（例えば、プロセスＣ，Ｄ）を管理する。
【０１１２】
このようなプロセスグループを生成することにより、例えば、ホスト２は、ＣＰＵがボトルネックであるプロセスグループに含まれるプロセスを処理する際には、ＳＳＤ３に対して性能調整を行うことを把握できる。また、例えば、ホスト２は、Ｉ／Ｏがボトルネックであるプロセスグループに含まれるプロセスを処理する際には、ＳＳＤ３に対して性能調整を行わないこと（すなわち、ベストエフォートでの処理を要求すること）を把握できる。
【０１１３】
なお、プロセス管理部５１は、例えば各プロセスの性能特性の変化に応じて、各プロセスが所属するプロセスグループを変更することができる。
【０１１４】
ステップＳ３０２において、プロセス管理部５１は、ステップＳ３０１で得られたプロセスグループごとの性能特性に関する情報に基づいて、Ｉ／Ｏリクエストを発行するプロセスのＩ／Ｏ特性を決定する。
【０１１５】
ステップＳ３０３において、プロセス管理部５１は、ＳＳＤ３に対し、Ｉ／Ｏリクエストとともに、決定されたＩ／Ｏ特性に基づいてＩ／Ｏボトルネック発生の有無を通知する。ＳＳＤ３は、当該通知を受けて性能調整を行う。性能調整処理については、図６で上述した処理と同様であるため、説明を省略する。
【０１１６】
ステップＳ３０４において、プロセス管理部５１は、必要に応じて、プロセスごとに所属するプロセスグループを変更する。
【０１１７】
以上説明したように、本実施形態においては、オペレーティングシステム４２が、各プロセスの性能特性に応じてプロセスグループを生成することにより、各プロセスを管理する。これにより、ホスト２においてはプロセスごとにＩ／Ｏ特性を把握するための処理が不要となるため、ホスト２の処理負荷が低減される。
【０１１８】
［第３の実施形態］  
本実施形態は、第２の実施形態の変形例である。本実施形態においては、第２の実施形態に加え、性能調整を要するプロセスが、あらかじめホスト２からＳＳＤ３に通知される。ＳＳＤ３は、ホスト２の指示に従い、プロセスごとの応答性能の調整値を示す情報を記憶する。この情報は、例えばテーブル形式で表される。ＳＳＤ３は、このテーブルにより管理されるプロセスに紐づいたリクエストに対し、当該テーブルに記載された調整値に基づいて応答性能を調整する。ＳＳＤ３で実行する性能調整処理については、図６で上述した処理と同様であるため、説明を省略する。
【０１１９】
なお、本実施形態に係るコンピュータシステム１の構成は、第１の実施形態と同様であるため、説明を省略する。
【０１２０】
図１０は、本実施形態に係るプロセスごとの性能調整を管理するテーブルＴＢ２の一例を示す図である。
【０１２１】
テーブルＴＢ２は、プロセスＩＤ２０１及び調整値２０２などを関連付けて管理する。
【０１２２】
プロセスＩＤ２０１は、プロセスを特定可能な情報であり、例えば、プロセスごとに割り振られたＩＤ番号である。プロセスＩＤは、例えばプロセス名などでもよい。
【０１２３】
調整値２０２は、プロセスに紐づくリクエストを、どれだけ応答性能を落として処理するかを示す数値である。換言すれば、調整値２０２は、プロセスごとに期待される動作性能を示す。例えば、図１０の例では、ＳＳＤ３は、プロセスＩＤ１に紐づくリクエストに対してはベストエフォートで処理することを示し、プロセスＩＤ２に紐づくリクエストに対してはベストエフォートの９０％の応答性能で処理することを示している。
【０１２４】
テーブルＴＢ２に含まれる内容は、柔軟に変更可能であることが好ましい。例えば、ホスト２からの指示又はパフォーマンス制御部３０の指示などにより、テーブルＴＢ２に含まれる内容の変更、更新、削除などが行われてもよい。
【０１２５】
なお、ホスト２は、ＳＳＤ３に対してプロセスＩＤを通知する際に、例えば、ＮＶＭｅ規格に規定されるリードコマンド又はライトコマンドの予約領域の一部を用いてもよい。
【０１２６】
以上説明したように、本実施形態では、ＳＳＤ３内部に性能調整を行うプロセスごとの動作性能の調整値を管理するテーブルが記憶される。これにより、ＳＳＤ３においてプロセスＩＤごとの細かい性能調整が可能となる。
【０１２７】
なお、テーブルＴＢ２は、リクエストと調整値２０２とを関連付け可能な他の態様により表現されてもよい。例えば、テーブルＴＢ２は、データの種別ＩＤと調整値を関連付けて管理してもよい。より具体的には、テーブルＴＢ２は、例えばメタデータに対してはベストエフォートで処理することを示し、動画データであればベストエフォートの９０％の応答性能で処理することを示してもよい。
【０１２８】
本実施形態において、ＳＳＤ３は、例えばホスト２からの要求に応じて、各リクエストの性能調整後の処理時間をホスト２に送信してもよい。性能調整後の処理時間は、例えばテーブルＴＢ１に記録された処理時間でもよく、又は、過去の実行履歴から想定される処理時間でもよい。また、ＳＳＤ３は、ホスト２から当該要求を受信したタイミングで、ＳＳＤ３内部で並列に処理している処理量、余剰容量などのを想定される処理時間に加算し手もよい。ホスト２は、ＳＳＤ３より送信された処理時間に基づいて、上述の調整値２０２を決定してもよい。
【０１２９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１３０】
１…コンピュータシステム、２…ホスト、３…ＳＳＤ、４…コントローラ、５…ＮＡＮＤ型フラッシュメモリ、６…ＤＲＡＭ、１０…バス、１１…ホストインタフェース、１２…ＣＰＵ、１３…ＮＡＮＤインタフェース、１４…ＤＲＡＭインタフェース、２１…コマンド制御部、２２…ＦＴＬ、２３…ルックアップテーブル、２４…ガベージコレクション制御部、２５…ウェアレベリング制御部、２６…ＮＡＮＤ制御部、３０…パフォーマンス制御部、４１…ファイルシステム、４２…オペレーティングシステム、４３…アプリケーションレイヤ、５１…プロセス管理部、５２…ハードウェアリソース管理部、４３１…Ｉ／Ｏ特性把握部、Ｂ０〜Ｂｍ−１…ブロック、Ｐ０〜Ｐｎ−１…ページ。
【図１】
2020046752.tif 000003
【図２】
2020046752.tif 000004
【図３】
2020046752.tif 000005
【図４】
2020046752.tif 000006
【図５】
2020046752.tif 000007
【図６】
2020046752.tif 000008
【図７】
2020046752.tif 000009
【図８】
2020046752.tif 000010
【図９】
2020046752.tif 000011
【図１０】
2020046752.tif 000012