(57)【特許請求の範囲】
【請求項１】
複数の半導体ストレージデバイスに跨がってデータを分散させるストレージアレイ内の一つの半導体ストレージデバイスとして動作可能なメモリシステムであって、
不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、ホストから受信されるデータを前記不揮発性メモリに書き込む書き込み動作と、前記メモリシステムを管理する内部動作とを実行するように構成されたコントローラとを具備し、
前記コントローラは、
前記内部動作が開始される場合に、前記開始される前記内部動作の内容に基づいて、前記内部動作の開始に起因する前記書き込み動作の性能低下の量を推定し、
前記推定される前記書き込み動作の性能低下の量を、前記ホストまたは前記ストレージアレイ内の他の一つ以上の半導体ストレージデバイスに通知するように構成されている、メモリシステム。
【請求項２】
前記内部動作は、前記不揮発性メモリのガベージコレクション動作、前記メモリシステムの過熱を防ぐ熱保護動作、前記メモリシステムの電力消費を前記メモリシステムに許容される最大電力以下に抑える電力制限動作のうちの、少なくとも一つを含む請求項１記載のメモリシステム。
【請求項３】
前記内部動作は、前記不揮発性メモリのガベージコレクション動作を含み、
前記コントローラは、前記ガベージコレクション動作が開始される場合、前記開始される前記ガベージコレクション動作においてコピーすることが必要なデータ量に基づいて、前記書き込み動作の性能低下の量を推定するように構成されている請求項１記載のメモリシステム。
【請求項４】
前記コントローラは、前記内部動作の終了によって前記書き込み動作の性能が回復される場合、前記書き込み動作の性能の回復を前記ホストまたは前記ストレージアレイ内の他の一つ以上の半導体ストレージデバイスに通知するように構成されている請求項１記載のメモリシステム。
【請求項５】
前記内部動作は、前記メモリシステムの過熱を防ぐ熱保護動作を含み、
前記不揮発性メモリは、複数の不揮発性メモリチップを含み、
前記コントローラは、
前記メモリシステム内の温度センサによって検出される温度に基づいて、前記熱保護動作のために、並列動作される不揮発性メモリチップの数、または前記複数の不揮発性メモリチップが並列動作される第１期間と前記複数の不揮発性メモリチップが動作されない第２期間とを含む１サイクル内における前記第１期間の割合を制限し、
前記制限された前記並列動作される不揮発性メモリチップの数または前記制限された前記第１期間の割合に基づいて、前記書き込み動作の性能低下の量を推定するように構成されている請求項１記載のメモリシステム。
【請求項６】
前記内部動作は、前記メモリシステムの電力消費を前記メモリシステムに許容される最大電力以下に抑える電力制限動作を含み、
前記不揮発性メモリは、複数の不揮発性メモリチップを含み、
前記コントローラは、
前記メモリシステムに許容される最大電力と、前記複数の不揮発性メモリチップの各々の電力消費量とに基づいて、前記電力制限動作のために、並列動作される不揮発性メモリチップの数、または前記複数の不揮発性メモリチップが並列動作される第１期間と前記複数の不揮発性メモリチップが動作されない第２期間とを含む１サイクル内における前記第１期間の割合を制限し、
前記制限された前記並列動作される不揮発性メモリチップの数または前記制限された前記第１期間の割合に基づいて、前記書き込み動作の性能低下の量を推定するように構成されている請求項１記載のメモリシステム。
【請求項７】
前記内部動作は、前記不揮発性メモリのガベージコレクション動作、前記メモリシステムの過熱を防ぐ熱保護動作、前記メモリシステムの電力消費を前記メモリシステムに許容される最大電力以下に抑える電力制限動作を含み、
前記コントローラは、前記推定される前記書き込み動作の性能低下の量と、前記書き込み動作の性能低下の要因が前記ガベージコレクション動作、前記熱保護動作、または前記電力制限動作のいずれであるかを示す要因情報とを、前記ホストまたは前記ストレージアレイ内の他の一つ以上の半導体ストレージデバイスに通知するように構成されている請求項１記載のメモリシステム。
【請求項８】
前記書き込み動作の性能低下の量は、前記内部動作の開始に起因する前記書き込み動作の低下後の性能、または前記内部動作に起因する前記書き込み動作の性能の低下量のいずれかを示す請求項１記載のメモリシステム。
【請求項９】
複数の半導体ストレージデバイスに跨がってデータを分散させるストレージアレイ内の一つの半導体ストレージデバイスとして動作可能なメモリシステムであって、
不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、ホストから受信されるデータを前記不揮発性メモリに書き込む書き込み動作と、前記メモリシステムを管理するための内部動作であって、前記不揮発性メモリのガベージコレクション動作、前記メモリシステムの過熱を防ぐ熱保護動作、および前記メモリシステムの電力消費を前記メモリシステムに許容される最大電力以下に抑える電力制限動作を含む内部動作とを実行するように構成されたコントローラとを具備し、
前記コントローラは、
前記内部動作が開始される場合に、前記開始される前記内部動作の内容に基づいて、前記内部動作の開始に起因する前記書き込み動作の性能低下の量を推定し、
前記推定される前記書き込み動作の性能低下の量と、前記書き込み動作の性能低下の要因が前記ガベージコレクション動作、前記熱保護動作、または前記電力制限動作のいずれであるかを示す要因情報とを、前記ホストまたは前記ストレージアレイ内の他の一つ以上の半導体ストレージデバイスに通知するように構成されているメモリシステム。
【請求項１０】
複数の半導体ストレージデバイスに跨がってデータを分散させるストレージアレイ内の一つの半導体ストレージデバイスとして動作可能なメモリシステムの制御方法であって、
ホストから受信されるデータを前記メモリシステム内の不揮発性メモリに書き込む書き込み動作を実行することと、
前記メモリシステムを管理するための内部動作を実行することと、
前記内部動作が開始される場合に、前記開始される前記内部動作の内容に基づいて、前記内部動作の開始に起因する前記書き込み動作の性能低下の量を推定することと、
前記推定される前記書き込み動作の性能低下の量を、前記ホストまたは前記ストレージアレイ内の他の一つ以上の半導体ストレージデバイスに通知することとを具備する、制御方法。
【請求項１１】
前記内部動作は、前記不揮発性メモリのガベージコレクション動作、前記メモリシステムの過熱を防ぐ熱保護動作、前記メモリシステムの電力消費を前記メモリシステムに許容される最大電力以下に抑える電力制限動作のうちの、少なくとも一つを含む請求項１０記載の制御方法。
【請求項１２】
前記内部動作は、前記不揮発性メモリのガベージコレクション動作、前記メモリシステムの過熱を防ぐ熱保護動作、前記メモリシステムの電力消費を前記メモリシステムに許容される最大電力以下に抑える電力制限動作を含み、
前記通知することは、前記推定される前記書き込み動作の性能低下の量と、前記書き込み動作の性能低下の要因が前記ガベージコレクション動作、前記熱保護動作、または前記電力制限動作のいずれであるかを示す要因情報とを、前記ホストまたは前記ストレージアレイ内の他の一つ以上の半導体ストレージデバイスに通知することを含む請求項１０記載の制御方法。
【請求項１３】
前記内部動作の終了によって前記書き込み動作の性能が回復される場合、前記書き込み動作の性能の回復を前記ホストまたは前記ストレージアレイ内の他の一つ以上の半導体ストレージデバイスに通知することをさらに具備する請求項１０記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリを制御する技術に関する。
【背景技術】
【０００２】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
【０００３】
このようなメモリシステムの一つとして、ＮＡＮＤフラッシュ技術ベースのソリッドステートドライブ（ＳＳＤ）が知られている。
【０００４】
ＳＳＤは、その低電力消費、高性能という特徴により、様々なコンピュータのメインストレージとして使用されている。
【０００５】
また、より高い性能、より大きな容量を得るために複数のＳＳＤを利用するアレイ技術も開発されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許出願公開第２０１２／００３６３０９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ＳＳＤのアレイを効率良く動作させるためには、アレイ内の複数のＳＳＤを協調動作させることが望まれる。このため、この協調動作のために必要な有用な情報を提供可能な新たな仕組みの実現が要求される。
【０００８】
本発明が解決しようとする課題は、ホストまたはアレイ内の他のＳＳＤに有用な情報を提供可能なメモリシステムおよび制御方法を提供することである。
【課題を解決するための手段】
【０００９】
実施形態によれば、複数の半導体ストレージデバイスに跨がってデータを分散させるストレージアレイ内の一つの半導体ストレージデバイスとして動作可能なメモリシステムは、不揮発性メモリと、前記不揮発性メモリに電気的に接続され、ホストから受信されるデータを前記不揮発性メモリに書き込む書き込み動作と、前記メモリシステムを管理するための内部動作とを実行するように構成されたコントローラとを具備する。前記コントローラは、前記内部動作が開始される場合に、前記開始される前記内部動作の内容に基づいて、前記内部動作の開始に起因する前記書き込み動作の性能低下の量を推定する。前記コントローラは、前記推定される前記書き込み動作の性能低下の量を、前記ホストまたは前記ストレージアレイ内の他の一つ以上の半導体ストレージデバイスに通知する。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係るメモリシステムが適用されるストレージアレイを含む情報処理システムの構成例を説明するブロック図。
【図２】実施形態に係るメモリシステムが適用されるストレージアレイを含む情報処理システムの別の構成例を説明するブロック図。
【図３】実施形態に係るメモリシステムが適用されるストレージアレイの書き込み動作の例を説明する図。
【図４】ストレージアレイ内のあるＳＳＤの書き込み性能が低下した場合のストレージアレイの書き込み動作を説明する図。
【図５】ストレージアレイ内のあるＳＳＤの書き込み性能低下期間に別のＳＳＤによって実行されるガベージコレクション（ＧＣ）動作を説明する図。
【図６】ストレージアレイ内のあるＳＳＤの書き込み性能低下期間に別のＳＳＤによって実行される、書き込み動作およびＧＣ動作を説明する図。
【図７】ストレージアレイ内のあるＳＳＤの書き込み性能低下期間に別のＳＳＤによって実行されるスロットリング動作を説明する図。
【図８】送り出し側ＳＳＤとして機能するメモリシステムの構成例を説明するブロック図。
【図９】送り出し側ＳＳＤとして機能するメモリシステムによって実行される、ホストからのデータの書き込み用にフリーブロックを順次割り当てる動作を説明するための図。
【図１０】送り出し側ＳＳＤとして機能するメモリシステムによって実行されるガベージコレクション動作を説明する図。
【図１１】送り出し側ＳＳＤとして機能するメモリシステム内のＮＡＮＤインタフェースと複数のＮＡＮＤメモリチップとの関係を説明する図。
【図１２】送り出し側ＳＳＤとして機能するメモリシステムによって実行されるデューティー制御動作を説明する図。
【図１３】送り出し側ＳＳＤとして機能するメモリシステムによって実行される性能低下通知処理の例を説明するための図。
【図１４】送り出し側ＳＳＤとして機能するメモリシステムによって実行される性能低下通知処理の別の例を説明するための図。
【図１５】送り出し側ＳＳＤとして機能するメモリシステムによって実行されるＧＣ動作および性能低下通知処理の手順を説明するフローチャート。
【図１６】送り出し側ＳＳＤとして機能するメモリシステムによって実行される熱スロットリング動作および性能低下通知処理の手順を説明するフローチャート。
【図１７】送り出し側ＳＳＤとして機能するメモリシステムによって実行される電力制限スロットリング動作および性能低下通知処理の手順を説明するフローチャート。
【図１８】受け側ＳＳＤとして機能するメモリシステムの構成例を説明するブロック図。
【図１９】性能低下通知が受信された時に、受け側ＳＳＤとして機能するメモリシステムによって実行される書き込み性能低下処理の手順を説明するフローチャート。
【図２０】性能低下通知が受信された時に、受け側ＳＳＤとして機能するメモリシステムによって実行されるＧＣ動作の手順を説明するフローチャート。
【図２１】性能低下通知が受信された時に、受け側ＳＳＤとして機能するメモリシステムによって実行されるスロットリング動作の手順を説明するフローチャート。
【図２２】送り出し側ＳＳＤおよび受け側ＳＳＤの双方の機能を有するメモリシステムの構成例を説明するブロック図。
【図２３】ホストの構成例を説明するブロック図。
【図２４】同実施形態のメモリシステムとホストとを含むコンピュータの構成例を示す図。
【発明を実施するための形態】
【００１１】
以下、図面を参照して、実施形態を説明する。  
まず、図１を参照して、一実施形態に係るメモリシステムを含む情報処理システム１の構成を説明する。
【００１２】
このメモリシステムは、不揮発性メモリにデータをライトし、不揮発性メモリからデータをリードするように構成された半導体ストレージデバイスである。このメモリシステムは、例えば、ＮＡＮＤフラッシュ技術ベースのソリッドステートドライブ（ＳＳＤ）３として実現されている。
【００１３】
情報処理システム１は、ホスト（ホストデバイス）２と、複数の半導体ストレージデバイス（ＳＳＤ）を含むストレージアレイ（ＳＳＤアレイ）とを含む。このＳＳＤアレイは、ＲＡＩＤレベル０、ＲＡＩＤレベル５、ＲＡＩＤレベル６、のようなＲＡＩＤアレイによって実現されていてもよい。
【００１４】
本実施形態のＳＳＤ３は、ＳＳＤアレイ内の一つの半導体ストレージデバイス（ＳＳＤ）として機能することができる。ＳＳＤアレイ内の一つのＳＳＤだけが本実施形態のＳＳＤ３によって実現されていてもよいし、ＳＳＤアレイ内の全てのＳＳＤが、本実施形態のＳＳＤ３によって実現されていてもよい。図１では、ＳＳＤアレイ内の全てのＳＳＤが、本実施形態のＳＳＤ３によって実現されている場合が例示されている。
【００１５】
このＳＳＤアレイにおいては、ストライピングによってデータが複数のＳＳＤ３に跨がって分散される。ホスト２によってＳＳＤアレイに書き込まれるべきデータは、あるデータサイズを有する複数のデータブロックに分割され、これらデータブロックがストライピングによって複数のＳＳＤ３に跨がって分散される。
【００１６】
ＳＳＤアレイがＲＡＩＤレベル５またはＲＡＩＤレベル６によって実現されている場合には、パリティーブロックを伴ったデータがストライピングによって複数のＳＳＤ３に跨がって分散される。
【００１７】
以下では、限定されないが、ＳＳＤアレイがＲＡＩＤレベル０（ストライピング）に対応するＲＡＩＤアレイである場合を主として説明する。
【００１８】
図１では、ＳＳＤアレイが４つのＳＳＤ３（ＳＳＤ＃１、ＳＳＤ＃２、ＳＳＤ＃３、ＳＳＤ＃４）から構成されている場合が想定されている。
【００１９】
ホスト２によってＳＳＤアレイに書き込まれるべきデータは、４つのデータブロック“Ｄａｔａ＃１”、“Ｄａｔａ＃２”、“Ｄａｔａ＃３”、“Ｄａｔａ＃４”に分割される。そして、これらデータブロック“Ｄａｔａ＃１”、“Ｄａｔａ＃２”、“Ｄａｔａ＃３”、“Ｄａｔａ＃４”が、ホスト２からＳＳＤ＃１、ＳＳＤ＃２、ＳＳＤ＃３、ＳＳＤ＃４に送信され、これらデータブロック“Ｄａｔａ＃１”、“Ｄａｔａ＃２”、“Ｄａｔａ＃３”、“Ｄａｔａ＃４”を書き込む動作がＳＳＤ＃１、ＳＳＤ＃２、ＳＳＤ＃３、ＳＳＤ＃４によって同時に実行される。データブロック“Ｄａｔａ＃１”、“Ｄａｔａ＃２”、“Ｄａｔａ＃３”、“Ｄａｔａ＃４”は、一つのストライプを構成する。
【００２０】
これら４つのデータブロック“Ｄａｔａ＃１”、“Ｄａｔａ＃２”、“Ｄａｔａ＃３”、“Ｄａｔａ＃４”の書き込みが完了すると、次の４つのデータブロック“Ｄａｔａ＃５”、“Ｄａｔａ＃６”、“Ｄａｔａ＃７”、“Ｄａｔａ＃８”が、ホスト２からＳＳＤ＃１、ＳＳＤ＃２、ＳＳＤ＃３、ＳＳＤ＃４に送信され、これらデータブロック“Ｄａｔａ＃５”、“Ｄａｔａ＃６”、“Ｄａｔａ＃７”、“Ｄａｔａ＃８”を書き込む動作がＳＳＤ＃１、ＳＳＤ＃２、ＳＳＤ＃３、ＳＳＤ＃４によって同時に実行される。
【００２１】
ホスト２は、サーバ、パーソナルコンピュータのような情報処理装置である。ＳＳＤアレイ内の各ＳＳＤ３は、情報処理装置に内蔵されてもよいし、情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
【００２２】
ホスト２と各ＳＳＤ３とを相互接続するためのインタフェースとしては、ＳＣＳＩ、Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ（ＳＡＳ）、ＡＴＡ、Ｓｅｒｉａｌ  ＡＴＡ（ＳＡＴＡ）、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）等が使用し得る。
【００２３】
本実施形態のＳＳＤ３は、送り出し側ＳＳＤまたは受け側ＳＳＤの少なくとも一方として機能し得る。送り出し側ＳＳＤとは、このＳＳＤの書き込み性能の低下の量をホスト２またはＳＳＤアレイ内の他のＳＳＤに通知する機能を有するＳＳＤを意味する。受け側ＳＳＤとは、送り出し側ＳＳＤの書き込み性能の低下の量を送り出し側ＳＳＤまたはホスト３から受信し、送り出し側ＳＳＤの書き込み性能の低下の量に基づいて自身の書き込み性能を低下させる機能を有するＳＳＤを意味する。
【００２４】
ＳＳＤ３の書き込み性能は、ＳＳＤ３を管理するための内部動作によって低下される場合がある。このような内部動作の典型的な例には、ガベージコレクション動作、ＳＳＤ３の過熱を防ぐ熱保護動作（例えば熱スロットリング）、ＳＳＤ３の電力消費をＳＳＤ３に許容される最大電力以下に抑える電力制限動作（例えば電力制限スロットリング）等が含まれる。
【００２５】
ＳＳＤ３の書き込み性能とは、ホスト２から受信されるデータをＳＳＤ３内の不揮発性メモリに書き込む書き込み動作の性能を意味する。この書き込み性能は、ライトスループットによって表されても良い。ライトスループットは、単位時間当たりにホスト２からＳＳＤ３に転送可能なデータ量、つまりデータ転送レートを示す。
【００２６】
今、ＳＳＤ＃２が送り出し側ＳＳＤとして機能する場合を想定する。
【００２７】
ＳＳＤ＃２の書き込み性能（ライトスループット）が内部動作の開始によって低下されることが想定される場合、ＳＳＤ＃２は、この内部動作の内容に基づいて、ＳＳＤ＃２の低下後の書き込み性能を推定し、ＳＳＤ＃２の書き込み性能の低下の量をホスト２またはＳＳＤアレイ内の他のＳＳＤに通知する。例えば、ＳＳＤ＃２の書き込み性能が、内部動作が実行されていない通常状態時の書き込み性能（例えば、１Ｇバイト／秒の転送レート）から５１２Ｍバイト／秒の転送レートに低下されることが推定される場合には、ＳＳＤ＃２は、ＳＳＤアレイ内の全てのＳＳＤの書き込み性能を５１２Ｍバイト／秒に揃えるために、ＳＳＤ＃２の書き込み性能が５１２Ｍバイト／秒に低下することを示す通知をホスト２またはＳＳＤアレイ内の他の各ＳＳＤに送信してもよい。
【００２８】
ホスト２からまたは送り出し側ＳＳＤからこの通知を受信した各ＳＳＤ（受け側ＳＳＤ）は、受信された通知によって指定される書き込み性能の低下の量に基づいて、自身の書き込み性能を低下させることができる。
【００２９】
例えば、この通知を受信した各ＳＳＤは、自身の書き込み性能を、受信された通知によって指定される低下後の書き込み性能（ここでは、５１２Ｍバイト／秒の転送レート）にまで、低下させるための制御を行ってもよい。例えば、この通知を受信した各ＳＳＤが１Ｇバイト／秒の書き込み性能で動作している場合において、これら各ＳＳＤは、自身の書き込み性能（書き込み速度）を５１２Ｍバイト／秒に低下させることによって自身の電力消費を低減しても良い。あるいは、これら各ＳＳＤは、自身の書き込み性能を５１２Ｍバイト／秒に低下させ、かつ残りの書き込み性能（ここでは、５１２Ｍバイト／秒）を使用してガベージコレクション動作を前もって実行してもよい。
【００３０】
このように、送り出し側ＳＳＤの通知機能は、送り出し側ＳＳＤの書き込み性能が低下している期間を、他のＳＳＤが自身の電力消費の低減またはガベージコレクション動作を前もって実行するために有効利用することを可能にする。
【００３１】
送り出し側ＳＳＤの書き込み性能の低下の量をホスト２に通知するための方法としては、送り出し側ＳＳＤの書き込み性能の低下の量をホスト２に報告可能な任意の方法を使用することができる。例えば、送り出し側ＳＳＤが内部動作を開始する時に、送り出し側ＳＳＤは、ホスト２に割り込み信号を送信することによって送り出し側ＳＳＤの書き込み性能の低下の量をホスト２に通知してもよい。あるいは、ホスト２がポーリングによって送り出し側ＳＳＤの内部レジスタを定期的にリードする機能を有している場合には、送り出し側ＳＳＤは、この内部レジスタに、送り出し側ＳＳＤの書き込み性能の低下の量をセットしてもよい。
【００３２】
送り出し側ＳＳＤから書き込み性能の低下の量が通知されたホスト２は、この書き込み性能の低下の量をＳＳＤアレイ内の他の各ＳＳＤに送信しても良い。あるいは、送り出し側ＳＳＤから書き込み性能の低下の量が通知されたホスト２は、この書き込み性能の低下の量に基づいて、ＳＳＤアレイ内の他の各ＳＳＤの書き込み性能を低下させるための制御を実行しても良い。
【００３３】
送り出し側ＳＳＤの書き込み性能の低下の量は、ホスト２（ホストＣＰＵ）を介さずに、ＳＳＤアレイ内の他の各ＳＳＤに通知してもよい。この通知の方法としては、ホスト２（例えばホストＣＰＵ）を介さずに、ＳＳＤ間で通信することを可能な任意の方法を使用し得る。例えば、ＳＳＤアレイ内の各ＳＳＤがＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）バスを介してホスト２に電気的に接続されている場合には、ＰＣＩｅバス間を接続するためのバススイッチを介して送り出し側ＳＳＤと他の各ＳＳＤとの間の通信（エンドツーエンド通信）を実行しても良い。
【００３４】
あるいは、図２に示されているように、アレイコントローラ（例えばＲＡＩＤコントローラ）２Ａを介して各ＳＳＤがホスト２に電気的に接続されるアレイ構成が使用されているケースにおいては、アレイコントローラ２Ａを介して送り出し側ＳＳＤと他の各ＳＳＤとの間の通信を実行しても良い。
【００３５】
アレイコントローラ２Ａは、ホスト２から受信されるライトデータをストライピングによって複数のＳＳＤ３に跨がって分散される制御を実行する。アレイコントローラ２Ａは、ＲＡＩＤコントローラによって実現されていてもよい。
【００３６】
図３は、ＳＳＤアレイの書き込み動作の例を示す。
【００３７】
ここでは、ＳＳＤアレイが、４つのＳＳＤ＃１〜＃４を含む場合を想定する。
【００３８】
ホスト２またはアレイコントローラ２Ａは、例えば、所定サイズ（例えば１２８Ｋバイト）のデータを４つのデータブロック（例えば各データブロックのサイズは３２Ｋバイト）に分割し、これら４つのデータブロックの書き込みを４つのＳＳＤ＃１〜＃４に並列に実行させる。
【００３９】
例えば、タイミングＴ１０で、ホスト２またはアレイコントローラ２Ａは、４つのＳＳＤ３に、ライトコマンドとデータブロックとを順次送信する。この場合、１２８Ｋバイトのデータの最初の３２Ｋバイトのデータブロックは、ＳＳＤ＃１にライトデータとして送信される。この１２８Ｋバイトのデータの２番目の３２Ｋバイトのデータブロックは、ＳＳＤ＃２にライトデータとして送信される。この１２８Ｋバイトのデータの３番目の３２Ｋバイトのデータブロックは、ＳＳＤ＃３にライトデータとして送信される。この１２８Ｋバイトのデータの最後の３２Ｋバイトのデータブロックは、ＳＳＤ＃４にライトデータとして送信される。
【００４０】
ＳＳＤ＃１〜＃４は、受信したデータブロックを、ＳＳＤ＃１〜＃４内の不揮発性メモリにそれぞれ書き込む。ＳＳＤ＃１〜＃４によるデータ書き込み動作の完了後、例えばタイミングＴ１１で、ホスト２またはアレイコントローラ２Ａは、４つのＳＳＤ３に、ライトコマンドと次の１２８Ｋバイトデータ内のデータブロックとを順次送信する。この場合、次の１２８Ｋバイトのデータの最初の３２Ｋバイトのデータブロックは、ＳＳＤ＃１にライトデータとして送信される。この１２８Ｋバイトのデータの２番目の３２Ｋバイトのデータブロックは、ＳＳＤ＃２にライトデータとして送信される。この１２８Ｋバイトのデータの３番目の３２Ｋバイトのデータブロックは、ＳＳＤ＃３にライトデータとして送信される。この１２８Ｋバイトのデータの最後の３２Ｋバイトのデータブロックは、ＳＳＤ＃４にライトデータとして送信される。
【００４１】
図４は、ＳＳＤアレイ内のあるＳＳＤの書き込み性能が低下した場合のＳＳＤアレイの書き込み動作の例を示す。
【００４２】
図４では、ＳＳＤ＃２の書き込み性能の低下によってＳＳＤ＃２の書き込み動作がスケジュールされたタイミングＴ１１で完了しなかった場合が想定されている。
【００４３】
タイミングＴ１１で、ホスト２またはアレイコントローラ２Ａは、次の１２８Ｋバイトのデータの最初のデータブロックをＳＳＤ＃１に送信することができる。
【００４４】
しかし、ＳＳＤ＃２は、その書き込み動作が進行中であるビジー状態であるので、ＳＳＤ＃２は次の書き込み動作を開始することができない。つまり、ホスト２またはアレイコントローラ２ＡからＳＳＤ＃２への次のデータブロックの送信は、ＳＳＤ＃２の現在の書き込み動作が完了するまで待たされる。このＳＳＤ＃２がボトルネックとなることにより、ホスト２またはアレイコントローラ２ＡからＳＳＤ＃３、ＳＳＤ＃４へのデータブロックを送信も待たされる。
【００４５】
ＳＳＤ＃２のデータ書き込み動作の完了後、例えばタイミングＴ１２で、ホスト２またはアレイコントローラ２Ａは、ＳＳＤ＃２、ＳＳＤ＃３、ＳＳＤ＃４に、ライトコマンドとこの１２８Ｋバイトのデータ内のデータブロックとを順次送信する。この１２８Ｋバイトのデータの２番目の３２Ｋバイトのデータブロックは、ＳＳＤ＃２にライトデータとして送信される。この１２８Ｋバイトのデータの３番目の３２Ｋバイトのデータブロックは、ＳＳＤ＃３にライトデータとして送信される。この１２８Ｋバイトのデータの最後の３２Ｋバイトのデータブロックは、ＳＳＤ＃４にライトデータとして送信される。
【００４６】
したがって、タイミングＴ１１〜Ｔ１２の期間においては、ＳＳＤ＃３、ＳＳＤ＃４は、実行すべきワークロードが無いアイドル状態に維持される可能性がある。
【００４７】
ホスト２またはアレイコントローラ２ＡからＳＳＤ＃１への次のデータブロックの通信は、ＳＳＤ＃４のデータ書き込み動作の完了まで待たされる。したがって、タイミングＴ１２〜Ｔ１３の期間においては、ＳＳＤ＃１がアイドル状態に維持される可能性がある。
【００４８】
このように、ＳＳＤアレイ全体の書き込み性能は、ＳＳＤ＃２の低下した書き込み性能に律速される。
【００４９】
図５は、ＳＳＤアレイ内のＳＳＤ＃２の書き込み性能低下期間に別のＳＳＤによって実行されるガベージコレクション（ＧＣ）動作を示す。
【００５０】
ＳＳＤ＃２は、上述したように、送り出し側ＳＳＤとして機能することができる。したがって、ＳＳＤ＃２の書き込み性能が低下する時、ＳＳＤ＃２は、その書き込み性能の低下の量をホスト２またはＳＳＤアレイ内の他の各ＳＳＤに通知することができる。
【００５１】
これにより、例えば、ＳＳＤ＃１、ＳＳＤ＃３、ＳＳＤ＃４の各々は、ＳＳＤ＃２のデータ書き込み動作の完了を待っているタイミングＴ１１〜Ｔ１２の期間において、ガベージコレクション（ＧＣ）動作を前もって実行することができる。
【００５２】
ガベージコレクション（ＧＣ）動作を前もって実行するとは、残りフリーブロックの数がガベージコレクション（ＧＣ）動作を開始すべき閾個数以下に低下する前に、ガベージコレクション（ＧＣ）動作を開始することを意味する。これにより、ＳＳＤ＃１、ＳＳＤ＃３、ＳＳＤ＃４の各々のフリーブロックの数を早い時期に増やすことができるので、ＳＳＤ＃１、ＳＳＤ＃３、ＳＳＤ＃４が次のＧＣ動作を開始するタイミングを遅らせることができる。よって、ガベージコレクション（ＧＣ）動作の開始に起因するＳＳＤ＃１、ＳＳＤ＃３、ＳＳＤ＃４の各々の書き込み性能の低下時期を遅らせることができる。
【００５３】
図６は、ＳＳＤアレイ内のＳＳＤ＃２の書き込み性能低下期間に別のＳＳＤによって実行される、書き込み動作およびガベージコレクション（ＧＣ）動作を示す。
【００５４】
図５では、ＳＳＤ＃１、ＳＳＤ＃３、ＳＳＤ＃４の各々が、タイミングＴ１１〜Ｔ１２の期間において、ガベージコレクション（ＧＣ）動作を実行する場合を説明したが、図６では、ＳＳＤ＃１、ＳＳＤ＃３、ＳＳＤ＃４の各々は、タイミングＴ１０〜Ｔ１２の期間において、ホスト２から受信されるデータの書き込み動作とガベージコレクション（ＧＣ）動作とを並列に実行する。
【００５５】
例えば、ＳＳＤ＃１〜ＳＳＤ＃４が１Ｇバイト／秒の書き込み性能で動作している場合において、ＳＳＤ＃２の書き込み性能が５１２Ｍバイト／秒に低下した場合には、ＳＳＤ＃１、ＳＳＤ＃３、ＳＳＤ＃４の各々は、５１２Ｍバイト／秒の書き込み性能をホスト２から受信されるデータの書き込みに使用し且つ残りの５１２Ｍバイト／秒の書き込み性能をガベージコレクション（ＧＣ）動作に使用することによって、ホスト２から受信されるデータの書き込み動作とガベージコレクション（ＧＣ）動作とを並列に実行することができる。
【００５６】
図７は、ＳＳＤアレイ内のＳＳＤ＃２の書き込み性能低下期間に別のＳＳＤによって実行されるスロットリング動作を示す。
【００５７】
ここで、スロットリング動作とは、書き込み性能を制限する動作を意味する。スロットリング動作の例は以下の通りである。
【００５８】
（１）同時駆動（並列動作）される不揮発性メモリチップの数を制限する
（２）複数の不揮発性メモリチップが同時駆動（並列動作）される第１期間と複数の不揮発性メモリチップが駆動（動作）されない第２期間とを含む１サイクル内における第１期間の割合（デューティー）を制限する
（３）同時駆動（並列動作）される不揮発性メモリチップの数を制限し、且つデューティー）を制限する
ＳＳＤ＃１、ＳＳＤ＃３、ＳＳＤ＃４の各々は、タイミングＴ１０〜Ｔ１２の期間において、スロットリング動作を実行することによって各々の書き込み性能を、ＳＳＤ＃２の低下された書き込み性能と同程度の低い書き込み性能に低下させる。
【００５９】
通常、ＳＳＤのライトスループットが高くなるほど、ＳＳＤの電力消費は増える。よって、ＳＳＤ＃１、ＳＳＤ＃３、ＳＳＤ＃４の書き込み性能を落とすことにより、ＳＳＤ＃１、ＳＳＤ＃３、ＳＳＤ＃４の電力消費を低減することができる。
【００６０】
このように、本実施形態では、送り出し側ＳＳＤは、残りフリーブロックの数等を示す情報ではなく、その書き込み性能の低下の量（例えば、低下後の書き込み性能）そのものを示す通知をホスト２または他のＳＳＤに送信する。これにより、他の各ＳＳＤは、自身の書き込み性能を、容易に、送り出し側ＳＳＤの低下された書き込み性能と同程度の低い性能に低下させることができ、この結果、ホスト２による特別な処理無しで、ＳＳＤアレイ内の全てのＳＳＤの書き込み性能を効率良くバランスさせることができる。
【００６１】
図８は、上述の送り出し側ＳＳＤとして機能するＳＳＤ３の構成例を示す。
【００６２】
ＳＳＤ３は、コントローラ４、不揮発性メモリ（ＮＡＮＤメモリ）５、ＤＲＡＭ６、および温度センサ７を備える。ＮＡＮＤメモリ５は、限定されないが、複数のＮＡＮＤメモリチップ（不揮発性メモリチップ）を含んでいてもよい。
【００６３】
ＮＡＮＤメモリ５は、多数のＮＡＮＤブロック（ブロック）Ｂ０〜Ｂｍ−１を含む。ブロックＢ０〜Ｂｍ−１は、消去単位として機能する。ブロックは「物理ブロック」または「消去ブロック」と称されることもある。
【００６４】
ブロックＢ０〜Ｂｍ−１は多数のページ（物理ページ）を含む。つまり、ブロックＢ０〜Ｂｍ−１の各々は、ページＰ０〜Ｐｎ−１を含む。ＮＡＮＤメモリ５においては、データのリードおよびデータのライトはページ単位で実行される。データの消去はブロック単位で実行される。
【００６５】
コントローラ４は、Toggle、ONFIのようなＮＡＮＤインタフェース１３を介して、不揮発性メモリであるＮＡＮＤメモリ５に電気的に接続されている。ＮＡＮＤインタフェース１３は、複数のチャンネルを有していてもよい。各チャンネルには、幾つかのＮＡＮＤメモリチップが接続される。コントローラ４は、ＮＡＮＤインタフェース１３に接続された複数のＮＡＮＤメモリチップに書き込み動作および読み出し動作を並列に実行させることができる。
【００６６】
コントローラ４は、ＮＡＮＤメモリ５のデータ管理とＮＡＮＤメモリ５のブロック管理とを実行するように構成されたフラッシュトランスレーション層（ＦＴＬ）として機能し得る。
【００６７】
データ管理には、（１）論理ブロックアドレス（ＬＢＡ）と物理アドレスとの間の対応関係を示すマッピング情報の管理、（２）ページ単位のリード／ライトとブロック単位の消去動作とを隠蔽するための処理、等が含まれる。ＬＢＡと物理アドレスとの間のマッピングの管理は、論理物理アドレス変換テーブルとして機能するルックアップテーブル（ＬＵＴ）３３を用いて実行される。ルックアップテーブル（ＬＵＴ）３３は、所定の管理サイズ単位で、ＬＢＡと物理アドレスとの間のマッピングを管理する。ホスト２からのライトコマンドの多くは、４Ｋバイトのデータの書き込みを要求する。したがって、ルックアップテーブル（ＬＵＴ）３３は、例えば４Kバイト単位で、ＬＢＡと物理アドレスとの間のマッピングを管理してもよい。あるＬＢＡに対応する物理アドレスは、このＬＢＡのデータがライトされたＮＡＮＤメモリ５内の物理記憶位置を示す。物理アドレスは、物理ブロックアドレスと物理ページアドレスとを含む。物理ページアドレスは全てのページに割り当てられており、また物理ブロックアドレスは全てのブロックに割り当てられている。
【００６８】
ページへのデータ書き込みは、１消去サイクル当たり１回のみ可能である。
【００６９】
このため、コントローラ４は、同じＬＢＡへのライト（上書き）を、ＮＡＮＤメモリ５上の別のページにマッピングする。つまり、コントローラ４は、この別のページにデータをライトする。そして、コントローラ４は、ルックアップテーブル（ＬＵＴ）３３を更新してこのＬＢＡをこの別のページに関連付けると共に、元のページ（つまりこのＬＢＡが関連付けられていた古いデータ）を無効化する。
【００７０】
ブロック管理には、不良ブロックの管理と、ウェアレベリングと、ガベージコレクション等が含まれる。ウェアレベリングは、物理ブロックそれぞれのプログラム／イレーズ回数を平準化するための動作である。
【００７１】
ガベージコレクションは、ＮＡＮＤメモリ５内のフリースペースを作り出すための動作である。このガベージコレクション動作は、ＮＡＮＤメモリ５のフリーブロックの個数を増やすため、有効データと無効データとが混在する幾つかのブロック内の全ての有効データを別のブロック（コピー先フリーブロック）にコピーする。有効データは、あるＬＢＡに関連付けられている最新のデータである。無効データは、そのデータの更新または削除によってもはやホスト２によって利用されなくなったデータ、つまりどのＬＢＡにも関連付けられていない古いデータである。そして、ガベージコレクション動作は、ルックアップテーブル（ＬＵＴ）３３を更新して、コピーされた有効データのＬＢＡそれぞれを正しい物理アドレスにマッピングする。有効データが別のブロックにコピーされることによって無効データのみなったブロックはフリーブロックとして開放される。これによって、このブロックは消去後に再利用することが可能となる。
【００７２】
ホスト２は、ライトコマンドをＳＳＤ３に送信する。このライトコマンドは、ライトデータ（つまり書き込むべきデータ）の論理アドレス（開始論理アドレス）と、転送長とを含む。この実施形態においては、ＬＢＡが論理アドレスとして使用されるが、他の実施形態においてはオブジェクトＩＤが論理アドレスとして使用されても良い。ＬＢＡは、論理セクタ（論理ブロック）に付与されるシリアル番号によって表現される。シリアル番号はゼロから始まる。論理セクタのサイズは、例えば５１２バイトである。
【００７３】
ＳＳＤ３のコントローラ４は、ライトコマンド内の開始論理アドレスと転送長とによって指定されるライトデータを、ＮＡＮＤメモリ５内のブロックのページにライトする。さらに、コントローラ４は、ルックアップテーブル（ＬＵＴ）３３を更新することによって、ライトされたデータに対応するＬＢＡを、このデータがライトされた物理記憶位置を示す物理アドレスにマッピングする。
【００７４】
より詳しくは、コントローラ４は、ＮＡＮＤメモリ５内のフリーブロックの一つを、ホスト２からのデータの書き込みのために割り当てる。この割り当てられたブロックは、ホスト２からのデータが書き込まれるべき書き込み対象ブロックであり、「書き込み先ブロック」、または「入力ブロック」、等とも称される。コントローラ４は、ルックアップテーブル（ＬＵＴ）３３を更新しながら、ホスト２から受信されるライトデータを書き込み対象ブロック（書き込み先ブロック）の利用可能ページに順次書き込む。書き込み先ブロックに利用可能ページが無くなった場合に、コントローラ４は、新たなフリーブロックを書き込み先ブロックとして割り当てる。
【００７５】
次に、コントローラ４の構成について説明する。
【００７６】
コントローラ４は、ホストインタフェース１１、ＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４、ＳＲＡＭ１５等を含む。これらＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４、ＳＲＡＭ１５は、バス１０を介して相互接続される。
【００７７】
ホストインタフェース１１は、ホスト２から様々なコマンド（ライトコマンド、リードコマンド、アンマップ（ＵＮＭＡＰ）コマンド、等）を受信する。
【００７８】
ライトコマンドは、ＳＳＤ３に対し、このライトコマンドによって指定されたデータをライトするように要求する。ライトコマンドは、ライトされるべき最初の論理ブロックのＬＢＡ（開始ＬＢＡ）と、転送長（論理ブロックの数）とを含む。リードコマンドは、ＳＳＤ３に対し、このリードコマンドによって指定されたデータをリードするように要求する。リードコマンドは、リードされるべき最初の論理ブロックのＬＢＡ（開始ＬＢＡ）と、転送長（論理ブロックの数）とを含む。
【００７９】
ＣＰＵ１２は、ホストインタフェース１１、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４、ＳＲＡＭ１５を制御するように構成されたプロセッサである。ＣＰＵ１２は、上述のＦＴＬの処理に加え、ホスト２からの様々なコマンドを処理するためのコマンド処理等を実行する。
【００８０】
例えば、コントローラ４がホスト２からライトコマンドを受信した時、ＣＰＵ１２の制御の下、コントローラ４はライトコマンドによって指定されるライトデータをＮＡＮＤメモリ５に書き込む以下の書き込み動作を実行する。
【００８１】
つまり、コントローラ４は、ライトデータを現在の書き込み先ブロックの物理記憶位置（利用可能ページ）に書き込み、そしてルックアップテーブル（ＬＵＴ）３３を更新して、ライトコマンドに含まれるＬＢＡ（開始ＬＢＡ）にこの物理記憶位置の物理アドレスをマッピングする。
【００８２】
これらＦＴＬ処理およびコマンド処理は、ＣＰＵ１２によって実行されるファームウェアによって制御されてもよい。このファームウェアは、ＣＰＵ１２を、ガベージコレクション（ＧＣ）動作制御部２１、熱保護スロットリング制御部２２、電力制限スロットリング制御部２３、および書き込み性能低下通知部２４として機能させる。
【００８３】
ガベージコレクション動作制御部２１は、ガベージコレクション動作の対象として選択される幾つかのブロック（断片化されたブロック）内の有効データを別のブロック（コピー先ブロック）にコピーするガベージコレクション動作を実行する。ガベージコレクション動作は、例えば、ＮＡＮＤメモリ６内のフリーブロックの個数が所定の閾個数以下に低下した場合に実行される。ガベージコレクション動作はＳＳＤ３のリソースおよび性能を消費する。このため、ガベージコレクション動作の実行中は、ホスト２から受信されるデータを書き込み先ブロックに書き込む書き込み動作の性能（つまり、書き込み性能）が低下される場合がある。
【００８４】
熱保護スロットリング制御部２２は、温度センサ７よって検出される温度に基づき、ＳＳＤ３の過熱を防ぐための熱保護動作（熱スロットリング動作）を実行する。熱スロットリング動作は、ＳＳＤ３の書き込み性能を制限することによって実行される。より詳しくは、熱保護スロットリング制御部２２は、温度センサ７よって検出される温度に基づいて、同時駆動（並列動作）されるＮＡＮＤメモリチップの数を制限するか、あるいは複数のＮＡＮＤメモリチップが同時駆動（並列動作）される第１期間とこれらＮＡＮＤメモリチップが駆動（動作）されない第２期間とを含む１サイクル内における第１期間の割合を制限する。
【００８５】
電力制限スロットリング制御部２３は、ＳＳＤ３の電力消費をＳＳＤ３に許容される最大電力以下に抑える電力制限動作（電力制限スロットリング動作）を実行する。ＳＳＤ３に許容される最大電力は、ホスト２によってＳＳＤ３に予め通知されていてもよい。この最大電力は、ＳＳＤ３が消費することが許可された最大の電力消費量を示す。
【００８６】
電力制限スロットリング動作も、ＳＳＤ３の書き込み性能を制限することによって実行することができる。より詳しくは、電力制限スロットリング制御部２３は、ＳＳＤ３に許容される最大電力と、各ＮＡＮＤメモリチップの電力消費量とに基づいて、同時駆動（並列動作）されるＮＡＮＤメモリチップの数を制限するか、あるいは複数のＮＡＮＤメモリチップが同時駆動（並列動作）される第１期間とこれらＮＡＮＤメモリチップが駆動（動作）されない第２期間とを含む１サイクル内における第１期間の割合を制限する。
【００８７】
書き込み性能低下通知部２４は、内部動作（ガベージコレクション動作、熱スロットリング動作、または電力制限スロットリング動作）が開始される場合に、開始される内部動作の内容に基づいて、内部動作の開始に起因する書き込み性能の低下の量を推定し、推定される書き込み性能の低下の量を、ホスト２またはＳＳＤアレイ内の他の一つ以上のＳＳＤに通知する。
【００８８】
推定される書き込み性能の低下の量は、内部動作の開始に起因する書き込み性能の低下後の性能であってもよい。この場合、例えば、書き込み性能が１Ｇバイト／秒から５００Ｍバイト／秒に低下される場合には、５００Ｍバイト／秒が書き込み性能の低下の量として推定されても良い。
【００８９】
あるいは、推定される書き込み性能の低下の量は、内部動作に起因する書き込み性能の低下量、つまり通常状態の書き込み性能から、低下後の書き込み性能を引いた値であってもよい。この場合、例えば、書き込み性能が１Ｇバイト／秒から５００Ｍバイト／秒に低下される場合には、５２４Ｍバイト／秒（＝１０２４−５００）が書き込み性能の低下の量として推定されても良い。
【００９０】
内部動作の終了によって書き込み性能が回復した時、書き込み性能低下通知部２４は、書き込み性能が通常状態の書き込み性能（１Ｇバイト／秒）に回復したことをホスト２またはＳＳＤアレイ内の他の一つ以上のＳＳＤに通知してもよい。
【００９１】
次に、コントローラ４内の他のコンポーネントについて説明する。
【００９２】
ＮＡＮＤインタフェース１３は、ＣＰＵ１２の制御の下、ＮＡＮＤメモリ５を制御するように構成されたＮＡＮＤコントローラである。ＮＡＮＤインタフェース１３は、マルチチャンネル、例えば、８個のチャンネル（ＣＨ＃１〜ＣＨ＃８）を含んでいてもよい。各チャンネルは、データ、コマンド、およびアドレスを転送するためのバスを含む。
【００９３】
ＤＲＡＭインタフェース１４は、ＣＰＵ１２の制御の下、ＤＲＡＭ６を制御するように構成されたＤＲＡＭコントローラである。
【００９４】
ＤＲＡＭ６の記憶領域の一部は、ＮＡＮＤメモリ５にライトすべきデータを一時的に格納するためのライトバッファ（ＷＢ）３１として利用されてもよい。また、ＤＲＡＭ６の記憶領域は、ガベージコレクション（ＧＣ）動作中に移動されるデータを一時的に格納するためのＧＣバッファ３２として利用されてもよい。また、ＤＲＡＭ６の記憶領域は、上述のルックアップテーブル３３の格納のために用いられてもよい。
【００９５】
ＳＳＤ３は、さらに他の様々な管理情報を保持していてもよい。このような管理情報の例には、物理アドレスそれぞれに対応する有効／無効フラグを保持するページ管理テーブルが含まれていても良い。各有効／無効フラグは、対応する物理アドレス（物理ページ）が有効であるか無効であるかを示す。物理ページが有効であるとは、その物理ページ内のデータが有効データであることを意味する。物理ページが無効であるとは、その物理ページ内のデータが更新（書き替え）によって無効化されたデータであることを意味する。
【００９６】
次に、ホスト２の構成について説明する。
【００９７】
ホスト２は、様々なプログラムを実行する情報処理装置である。情報処理装置によって実行されるプログラムには、アプリケーションソフトウェアレイヤ４１、オペレーティングシステム（ＯＳ）４２、ファイルシステム４３が含まれる。
【００９８】
一般に知られているように、オペレーティングシステム（ＯＳ）４２は、ホスト２全体を管理し、ホスト２内のハードウェアを制御し、アプリケーションがハードウェアおよびＳＳＤ３を使用することを可能にするための制御を実行するように構成されたソフトウェアである。
【００９９】
ファイルシステム４３は、ファイルの操作（作成、保存、更新、削除等）のための制御を行うために使用される。例えば、ＺＦＳ、Ｂｔｒｆｓ、ＸＦＳ、ｅｘｔ４、ＮＴＦＳなどがファイルシステム４３として使用されても良い。あるいは、ファイルオブジェクトシステム（例えば、Ceph Object Storage Daemon）、Key Value Store System (例えば、Rocks DB) がファイルシステム４３として使用されても良い。
【０１００】
様々なアプリケーションソフトウェアスレッドがアプリケーションソフトウェアレイヤ４１上で走る。アプリケーションソフトウェアスレッドの例としては、クライアントソフトウェア、データベースソフトウェア、仮想マシン等がある。
【０１０１】
アプリケーションソフトウェアレイヤ４１がリードコマンドまたはライトコマンドのようなリクエストをＳＳＤ３に送出することが必要な時、アプリケーションソフトウェアレイヤ４１は、ＯＳ４２にそのリクエストを送出する。ＯＳ４２はそのリクエストをファイルシステム４３に送出する。ファイルシステム４３は、そのリクエストを、コマンド（リードコマンド、ライトコマンド等）にトランスレートする。ファイルシステム４３は、コマンドを、ＳＳＤ３に送出する。ＳＳＤ３からのレスポンスが受信された際、ファイルシステム４３は、そのレスポンスをＯＳ４２に送出する。ＯＳ４２は、そのレスポンスをアプリケーションソフトウェアレイヤ４１に送出する。
【０１０２】
さらに、ホスト２は、デバイス性能管理部４４を含んでいてもよい。デバイス性能管理部４４は、ＳＳＤアレイ内のあるＳＳＤから性能低下の通知を受信し、受信した性能低下の通知を、ＳＳＤアレイ内の他の各ＳＳＤに送信する。
【０１０３】
図９は、フリーブロックをホスト２からのデータの書き込み用に順次割り当てる動作を示す。
【０１０４】
コントローラ４は、フリーブロックリスト６０によって示されるフリーブロックの一つを書き込み先ブロック６２として割り当てる。
【０１０５】
コントローラ４は、ホスト２から受信されるライトデータをライトバッファ３１に書き込む。この後、コントローラ４は、ルックアップテーブル（ＬＵＴ）３３を更新しながら、ライトバッファ３１内のライトデータを書き込み先ブロック６２の先頭ページから最終ページに向けて順次ライトする。
【０１０６】
書き込み先ブロック６２に利用可能ページが無くなったならば、コントローラ４は、書き込み先ブロック６２をアクティブブロック（データを含むブロック）として管理する。このために、コントローラ４は、書き込み先ブロック６２をアクティブブロックリスト６１に移動する。そして、コントローラ４は、フリーブロックリスト６０のフリーブロックを新たな書き込み先ブロック６２として割り当てる。
【０１０７】
アクティブブロックリスト６１内の何れかのブロックの全てのデータがその更新によって無効化されたならば、このブロックはフリーブロックリスト６０に移動される。
【０１０８】
フリーブロックリスト６０内のフリーブロックの数が所定の閾値以下に低下したならば、フリーブロックを作り出す上述のガベージコレクション（ＧＣ）動作が実行される。
【０１０９】
図１０は、コントローラ４によって実行されるガベージコレクション（ＧＣ）動作を示す。
【０１１０】
図１０では、４つのブロックＢ１１、Ｂ１２、Ｂ１３、Ｂ１４がＧＣ動作の対象に選択された場合が例示されている。コントローラ４は、有効データ（つまり有効ページ）と無効データ（つまり無効ページ）が混在するブロックからＧＣ動作の対象とすべき幾つかのブロックを選択する。コントローラ４は、物理アドレスそれぞれに対応する有効／無効フラグを保持する上述のページ管理テーブルを参照することによって、無効データの量の多いブロックを優先的にＧＣ動作の対象として選択してもよい。コントローラ４は、ＧＣ動作の対象である各ブロック内の有効データを一つ以上のコピー先ブロックにコピーする。
【０１１１】
ＧＣ動作に必要なコピー先ブロックの個数は、ＧＣ動作によってコピーすべき有効データの量に基づいて決定される。図１０では、２つのフリーブロックがコピー先ブロックＢ１０１、Ｂ１０２として割り当てられた場合が示されている。
【０１１２】
コピー先ブロックＢ１０１、Ｂ１０２は有効データで満たされる。ブロックＢ１１、Ｂ１２、Ｂ１３、Ｂ１４は、有効データを含まないフリーブロックとなる。フリーブロックとなったブロックＢ１１、Ｂ１２、Ｂ１３、Ｂ１４は、フリーブロックリスト６０に移動される。
【０１１３】
図１１は、ＮＡＮＤインタフェース１３と複数のＮＡＮＤメモリチップとの関係を示す。
【０１１４】
図１１においては、ＮＡＮＤインタフェース１３が有する８個のチャンネル（ＣＨ＃１〜ＣＨ＃８）の各々に４つのＮＡＮＤメモリチップが接続されている場合が例示されている。コントローラ４の制御の下、ＮＡＮＤインタフェース１３は、チャンネル当たりの同時駆動（並列動作）されるＮＡＮＤメモリチップの数を変更することができる。
【０１１５】
チャンネル当たりの並列動作されるＮＡＮＤメモリチップの数が４に設定されたならば、同時駆動（並列動作）されるＮＡＮＤメモリチップの総数は３２となる（最大書き込み性能）。
【０１１６】
チャンネル当たりの並列動作されるＮＡＮＤメモリチップの数が３に設定されたならば、同時駆動（並列動作）されるＮＡＮＤメモリチップの総数は２４となる（最大書き込み性能の７５％の書き込み性能）。
【０１１７】
チャンネル当たりの並列動作されるＮＡＮＤメモリチップの数が２に設定されたならば、同時駆動（並列動作）されるＮＡＮＤメモリチップの総数は１６となる（最大書き込み性能の５０％の書き込み性能）。
【０１１８】
チャンネル当たりの並列動作されるＮＡＮＤメモリチップの数が１に設定されたならば、同時駆動（並列動作）されるＮＡＮＤメモリチップの総数は８となる（最大書き込み性能の２５％の書き込み性能）。
【０１１９】
同時駆動（並列動作）されるＮＡＮＤメモリチップの数（総数）を変更することにより、ＳＳＤ３の書き込み性能、電力消費、発熱量を調整することができる。
【０１２０】
図１２は、デューティー制御動作を示す。
【０１２１】
ＮＡＮＤメモリ５にデータを書き込むための書き込み動作においては、３２個のＮＡＮＤメモリチップは間欠駆動される。間欠駆動のためのサイクル（デューティー幅）は、書き込み動作が実行されるオン期間と、書き込み動作が実行されないオフ期間とを含む。
【０１２２】
オン期間においては、３２個の全てのＮＡＮＤメモリチップが同時駆動（並列動作）される。各ＮＡＮＤメモリチップは書き込み動作が進行中のビジー状態となる。
【０１２３】
オフ期間においては、３２個の全てのＮＡＮＤメモリチップが駆動（動作）されない。各ＮＡＮＤメモリチップは書き込み動作および読み出し動作が実行されないアイドル状態となる。
【０１２４】
１つのサイクルに対するオン期間の割合を制御することによって、ＳＳＤ３の書き込み性能、ＳＳＤ３の書き込み性能、電力消費、発熱量を調整することができる。例えば、１サイクル（デューティー幅）が１０秒である場合において、オン期間が１秒に設定されたならば（デューティー比＝１０％）、ＳＳＤ３の書き込み性能は最大書き込み性能の１０％に制限される。ＳＳＤ３の１０秒間の平均電力消費は、最大書き込み性能時の電力消費の１／１０となる。
【０１２５】
図１３は、送り出し側ＳＳＤによって実行される性能低下通知処理の例を示す。
【０１２６】
送り出し側ＳＳＤとして機能するＳＳＤ＃２内のコントローラ４は、必要に応じて、そのＳＳＤ＃２の書き込み性能の低下の要因となる処理（上述の内部動作）を開始する（ステップＳ１１）。ステップＳ１１においては、コントローラ４は、ＳＳＤ＃２の書き込み性能の低下の量を推定し、ＳＳＤ＃２の書き込み性能が低下することを示す性能低下の通知をホスト２に送信する。この性能低下の通知は、推定される書き込み性能（例えば、低下後の書き込み性能）と、要因情報とを含む。要因情報は、この書き込み性能の低下の要因がガベージコレクション（ＧＣ）動作、熱スロットリング動作、または電力制限スロットリング動作のいずれであるかを示す。
【０１２７】
ホスト２が性能低下の通知をＳＳＤ＃２から受信した時、ホスト２は、受信した性能低下の通知をＳＳＤ＃１、ＳＳＤ＃３、ＳＳＤ＃４にそれぞれ送信する。ＳＳＤ＃１、ＳＳＤ＃３、ＳＳＤ＃４の各々は、自身の書き込み性能を、受信された低下後の書き込み性能にまで低下させるように構成された受け側ＳＳＤとして機能する。ＳＳＤ＃１のコントローラは、自身の書き込み性能を、受信された低下後の書き込み性能にまで低下させる処理を実行する（ステップＳ１２）。ステップＳ１２では、ＳＳＤ＃１のコントローラは、ＳＳＤ＃１の書き込み性能が受信された低下後の書き込み性能よりも低くならない範囲で、ＧＣ動作を実行してもよい。あるいは、ＳＳＤ＃１のコントローラは、ＳＳＤ＃１の書き込み性能が受信された低下後の書き込み性能よりも低くならない範囲で、同時駆動されるＮＡＮＤメモリチップの数またはデューティー比を制限するスロットリング動作を実行してもよい。ＳＳＤ＃１のコントローラは、受信された要因情報に基づいて、ＧＣ動作、またはスロットリング動作のいずれを実行するかを決定してもよい。
【０１２８】
例えば、受信された要因情報が、ＧＣ動作、または電力制限（スロットリング動作）を示すならば、ＳＳＤ＃１のコントローラは、ＧＣ動作またはスロットリング動作のいずれを実行しても良い。
【０１２９】
一方、書き込み性能の低下の要因が「過熱を防ぐための熱保護」（熱スロットリング動作）であることを示すならば、ＳＳＤ＃１のコントローラは、ＧＣ動作ではなく、スロットリング動作によって自身の書き込み性能を低下させる。これにより、ＳＳＤアレイ全体の過度の温度上昇を抑制することができる。
【０１３０】
同様に、ＳＳＤ＃３、ＳＳＤ＃４も、自身の書き込み性能を、受信された低下後の書き込み性能にまで低下させる処理を実行する（ステップＳ１３、Ｓ１４）。
【０１３１】
図１４は、送り出し側ＳＳＤによって実行される性能低下通知処理の別の例を示す。
【０１３２】
送り出し側ＳＳＤとして機能するＳＳＤ＃２内のコントローラ４は、必要に応じて、そのＳＳＤ＃２の書き込み性能の低下の要因となる処理（上述の内部動作）を開始する（ステップＳ２１）。ステップＳ２１においては、コントローラ４は、ＳＳＤ＃２の書き込み性能の低下の量を推定し、性能低下の通知をＳＳＤ＃１、ＳＳＤ＃３、ＳＳＤ＃４にそれぞれ送信する。この性能低下の通知は、推定される書き込み性能（例えば、低下後の書き込み性能）と、上述の要因情報とを含む。
【０１３３】
ＳＳＤ＃１、ＳＳＤ＃３、ＳＳＤ＃４は、自身の書き込み性能を、受信された低下後の書き込み性能にまで低下させる処理を実行する（ステップＳ２２、Ｓ２３、Ｓ２４）。
【０１３４】
図１５のフローチャートは、送り出し側ＳＳＤによって実行されるＧＣ動作および性能低下通知処理の手順を示す。
【０１３５】
送り出し側ＳＳＤのコントローラ４は、残りフリーブロックの数を定期的にチェックし（ステップＳ３１）、残りフリーブロックの数が閾個数以下であるか否かを判定する（ステップＳ３２）。
【０１３６】
残りフリーブロックの数が閾個数以下であるならば（ステップＳ３２のＹＥＳ）、コントローラ４は、無効データ量の多い上位幾つかのブロックをＧＣ対象ブロック（ＧＣ候補）として選択する（ステップＳ３３）。コントローラ４は、ＧＣ動作においてコピーすることが必要なデータ量、つまりＧＣ対象ブロックそれぞれの有効データの量に基づいて、ＧＣ期間中の送り出し側ＳＳＤの書き込み性能（例えば、ＧＣに起因する低下後の書き込み性能）を推定する（ステップＳ３４）。
【０１３７】
コントローラ４は、推定された書き込み性能と要因情報（ＧＣ動作）とを含む性能低下の通知をホスト２またはＳＳＤアレイ内の他の各ＳＳＤに送信することによって、送り出し側ＳＳＤの書き込み性能が低下することと、送り出し側ＳＳＤの書き込み性能がどの程度の性能にまで低下されるかと、この書き込み性能の低下の要因とを、ホスト２またはＳＳＤアレイ内の他の各ＳＳＤに通知する（ステップＳ３５）。
【０１３８】
コントローラ４は、ＧＣ対象ブロックそれぞれの有効データを一つ以上のコピー先ブロックにコピーすることによってフリーブロックの数を増やすＧＣ動作を実行する（ステップＳ３６）。ステップＳ３６では、コントローラ４は、ホスト２から受信されるライトデータ（ホストデータ）を書き込み先ブロックに書き込む処理とＧＣ動作とを並列に実行する。この場合、コントローラ４は、ＧＣ動作においてコピーすることが必要なデータ量に基づいて、書き込み先ブロックに書き込むホスト２からのライトデータの量とＧＣ動作のためにコピー先ブロックにコピーするデータの量との比率を決定し、この比率でライトデータを書き込む処理とＧＣ動作とを並列に実行してもよい。
【０１３９】
ＧＣ動作が完了したならば（ステップＳ３７のＹＥＳ）、コントローラ４は、送り出し側ＳＳＤの書き込み性能の回復の通知をホスト２またはＳＳＤアレイ内の他の各ＳＳＤに送信することによって、送り出し側ＳＳＤの書き込み性能が通常状態時の書き込み性能に回復することをホスト２またはＳＳＤアレイ内の他の各ＳＳＤに通知する（ステップＳ３８）。書き込み性能の回復の通知には、通常状態時の書き込み性能を示す値（例えば、１Ｇバイト／秒）が含まれていてもよい。
【０１４０】
図１６のフローチャートは、送り出し側ＳＳＤによって実行される熱スロットリング動作および性能低下通知処理の手順を示す。
【０１４１】
送り出し側ＳＳＤのコントローラ４は、温度センサ７によって検出される送り出し側ＳＳＤ内の温度を定期的にチェックし、この検出温度が閾温度Ｔ１以上であるか否かを判定する（ステップＳ４１）。
【０１４２】
検出温度が閾温度Ｔ１以上であるならば（ステップＳ４１のＹＥＳ）、コントローラ４は、同時駆動するＮＡＮＤメモリチップの数、または上述のデューティー比を決定する（ステップＳ４２）。コントローラ４は、決定された同時駆動するＮＡＮＤメモリチップの数、または決定されたデューティー比に基づいて、温度保護期間（熱スロットリング動作期間）中の送り出し側ＳＳＤの書き込み性能（例えば、熱スロットリング動作に起因する低下後の書き込み性能）を推定する（ステップＳ４３）。
【０１４３】
コントローラ４は、推定された書き込み性能と要因情報（熱スロットリング動作）とを含む性能低下の通知をホスト２またはＳＳＤアレイ内の他の各ＳＳＤに送信することによって、送り出し側ＳＳＤの書き込み性能が低下することと、送り出し側ＳＳＤの書き込み性能がどの程度の性能にまで低下されるかと、この書き込み性能の低下の要因とを、ホスト２またはＳＳＤアレイ内の他の各ＳＳＤに通知する（ステップＳ４４）。
【０１４４】
コントローラ４は、ステップＳ４２における決定に基づいて同時駆動するＮＡＮＤメモリチップの数またはデューティー比を制限することによって、熱スロットリング動作を開始する（ステップＳ４５）。この熱スロットリング動作により、送り出し側ＳＳＤの発熱量が低下される。
【０１４５】
コントローラ４は、温度センサ７によって検出される送り出し側ＳＳＤ内の温度を定期的にチェックし、この検出温度が閾温度Ｔ２以下に下がったか否かを判定する（ステップＳ４６）。閾温度Ｔ２は、閾温度Ｔ１よりも低い温度に設定されていてもよい。
【０１４６】
検出温度が閾温度Ｔ２以下であるならば（ステップＳ４６のＹＥＳ）、コントローラ４は、同時駆動するＮＡＮＤメモリチップの数の制限またはデューティー比の制限を解除することによって熱スロットリング動作を終了する（ステップＳ４７）。そして、コントローラ４は、送り出し側ＳＳＤの書き込み性能の回復の通知をホスト２またはＳＳＤアレイ内の他の各ＳＳＤに送信することによって、送り出し側ＳＳＤの書き込み性能が通常状態時の書き込み性能に回復することをホスト２またはＳＳＤアレイ内の他の各ＳＳＤに通知する（ステップＳ４８）。書き込み性能の回復の通知には、通常状態時の書き込み性能を示す値（例えば、１Ｇバイト／秒）が含まれていてもよい。
【０１４７】
図１６では、検出温度に基づいて２つの状態（熱スロットリング動作の開始、熱スロットリング動作の停止）を切り替える動作を説明したが、検出温度に基づいて、同時駆動するＮＡＮＤメモリチップの数またはデューティー比を多段階で切り替える制御を実行してもよい。例えば、検出温度が閾温度Ｔ１と閾温度Ｔ２の間の閾温度Ｔ３にまで低下した時に、同時駆動するＮＡＮＤメモリチップの数またはデューティー比を再決定し、再決定されたＮＡＮＤメモリチップの数またはデューティー比に基づいて同時駆動するＮＡＮＤメモリチップの数またはデューティー比を制限してもよい。この場合、コントローラ４は、再決定されたＮＡＮＤメモリチップの数またはデューティー比に基づいて書き込み性能の低下の量を再び推定し、推定された書き込み性能と要因情報（熱スロットリング動作）とを含む性能低下の通知をホスト２またはＳＳＤアレイ内の他の各ＳＳＤに送信してもよい。
【０１４８】
図１７のフローチャートは、送り出し側ＳＳＤによって実行される電力制限スロットリング動作および性能低下通知処理の手順を示す。
【０１４９】
送り出し側ＳＳＤのコントローラ４は、送り出し側ＳＳＤの電力消費と送り出し側ＳＳＤに許容される最大電力との関係に基づいて電力制限を開始すべきか否か、つまり電力制限開始条件が満たされたかどうかを判定する（ステップＳ５１）。送り出し側ＳＳＤの電力消費は、１つのＮＡＮＤメモリチップ当たりの電力消費量と、同時駆動されるＮＡＮＤメモリチップの数（またはデューティー比）との関数によって算出される。送り出し側ＳＳＤの電力消費が、ホスト２によって送り出し側ＳＳＤに許容された最大電力よりも大きいならば、コントローラ４は、送り出し側ＳＳＤの電力消費が送り出し側ＳＳＤに許容された最大電力以下になるように、送り出し側ＳＳＤに許容された最大電力と、ＮＡＮＤメモリチップの各々の電力消費量（１チップ当たりの電力消費量）とに基づいて、同時駆動するＮＡＮＤメモリチップの数、または上述のデューティー比を決定する（ステップＳ５２）。
【０１５０】
コントローラ４は、決定された同時駆動するＮＡＮＤメモリチップの数、または決定されたデューティー比に基づいて、電力制限期間（電力制限スロットリング動作期間）中の送り出し側ＳＳＤの書き込み性能（例えば、電力制限スロットリング動作に起因する低下後の書き込み性能）を推定する（ステップＳ５３）。
【０１５１】
コントローラ４は、推定された書き込み性能と要因情報（熱スロットリング動作）とを含む性能低下の通知をホスト２またはＳＳＤアレイ内の他の各ＳＳＤに送信することによって、送り出し側ＳＳＤの書き込み性能が低下することと、送り出し側ＳＳＤの書き込み性能がどの程度の性能にまで低下されるかと、この書き込み性能の低下の要因とを、ホスト２またはＳＳＤアレイ内の他の各ＳＳＤに通知する（ステップＳ５４）。
【０１５２】
コントローラ４は、ステップＳ５２における決定に基づいて同時駆動するＮＡＮＤメモリチップの数またはデューティー比を制限することによって、電力制限スロットリング動作を開始する（ステップＳ５５）。この電力制限スロットリング動作により、送り出し側ＳＳＤの電力消費が低下される。
【０１５３】
ホスト２は、必要に応じて、送り出し側ＳＳＤに許容される最大電力を変更してもよい。例えば、ホスト２がＳＳＤアレイ全体の書き込み性能の増加を望むならば、ホスト２は各ＳＳＤに許容すべき最大電力を増加しても良い。この場合、コントローラ４は、送り出し側ＳＳＤに許容される変更された最大電力に基づいて、電力制限の必要性がなくなったか否かを判定する（ステップＳ５６）。
【０１５４】
電力制限の必要性がないならば（ステップＳ５６のＹＥＳ）、コントローラ４は、同時駆動するＮＡＮＤメモリチップの数の制限またはデューティー比の制限を解除することによって電力制限スロットリング動作を終了する（ステップＳ５７）。そして、コントローラ４は、送り出し側ＳＳＤの書き込み性能の回復の通知をホスト２またはＳＳＤアレイ内の他の各ＳＳＤに送信することによって、送り出し側ＳＳＤの書き込み性能が通常状態時の書き込み性能に回復することをホスト２またはＳＳＤアレイ内の他の各ＳＳＤに通知する（ステップＳ５８）。書き込み性能の回復の通知には、通常状態時の書き込み性能を示す値（例えば、１Ｇバイト／秒）が含まれていてもよい。
【０１５５】
なお、ホスト２は、情報処理システム１の電力消費を低減するために、ホスト２は各ＳＳＤに許容すべき最大電力を減少しても良い。この場合、コントローラ４は、送り出し側ＳＳＤの電力消費が送り出し側ＳＳＤに許容された変更された最大電力以下になるように、送り出し側ＳＳＤに許容された変更された最大電力と、ＮＡＮＤメモリチップの各々の電力消費量（１チップ当たりの電力消費量）とに基づいて、同時駆動するＮＡＮＤメモリチップの数、または上述のデューティー比を再決定する。そして、コントローラ４は、再決定されたＮＡＮＤメモリチップの数またはデューティー比に基づいて同時駆動するＮＡＮＤメモリチップの数またはデューティー比を制限する。コントローラ４は、再決定されたＮＡＮＤメモリチップの数またはデューティー比に基づいて書き込み性能の低下の量を再び推定し、推定された書き込み性能と要因情報（電力制限スロットリング動作）とを含む性能低下の通知をホスト２またはＳＳＤアレイ内の他の各ＳＳＤに送信する。
【０１５６】
図１８は、上述の受け側ＳＳＤとして機能するＳＳＤ３の構成例を示す。
【０１５７】
受け側ＳＳＤは、送り出し側ＳＳＤの書き込み性能低下通知部２４の代わりに、書き込み性能調整部２５を含む。
【０１５８】
書き込み性能調整部２５は、ホスト２または他のＳＳＤから他のＳＳＤの書き込み性能が低下することを示す通知を受信し、この通知によって指定される書き込み性能の低下の量と、この通知によって指定される性能低下の要因と基づいて、受け側ＳＳＤの書き込み性能を低下させる処理を実行する。
【０１５９】
受信された通知に含まれる要因情報がＧＣ動作または電力制限スロットリングであるならば、書き込み性能調整部２５は、ＧＣ動作を実行してもよい。この場合、書き込み性能調整部２５は、書き込み性能の低下の量に基づいて、書き込み先ブロックに書き込むホスト２からのライトデータの量とＧＣ動作のためにコピー先ブロックにコピーするデータの量との比率を決定する。そして、この比率に基づいて、書き込み性能調整部２５は、ガベージコレクション動作制御部２１を使用してＧＣ動作を実行する。
【０１６０】
例えば、ライトデータの量とＧＣ動作のためにコピーするデータの量との比率が１対１であるならば、所定の量のライトデータが書き込み先ブロックに書き込まれる度に、所定の量の有効データをＧＣ対象ブロックからコピー先ブロックにコピーする動作が実行されてもよい。
【０１６１】
受信された通知に含まれる要因情報が熱スロットリングであるならば、書き込み性能調整部２５は、ＧＣ動作を実行せず、スロットリング動作によって受け側ＳＳＤの書き込み性能を低下させる。この場合、書き込み性能調整部２５は、書き込み性能の低下の量に基づいて、同時駆動するＮＡＮＤメモリチップの数またはデューティー比を決定し、決定された同時駆動するＮＡＮＤメモリチップの数または決定されたデューティー比に基づいて、同時駆動するＮＡＮＤメモリチップの数またはデューティー比を制限する。
【０１６２】
図１９のフローチャートは、受け側ＳＳＤによって実行される書き込み性能低下処理の手順を示す。
【０１６３】
受け側ＳＳＤのコントローラ４がホスト２または他のＳＳＤから他のＳＳＤの書き込み性能の低下の通知を受信した時（ステップＳ６１のＹＥＳ）、コントローラ４は、この受信された通知に含まれる要因情報に基づいて他のＳＳＤの書き込み性能の低下の要因をチェックする（ステップＳ６２）。
【０１６４】
他のＳＳＤの書き込み性能の低下の要因がＧＣ動作であるならば（ステップＳ６３のＹＥＳ）、受け側ＳＳＤのコントローラ４は、ＧＣ動作を前もって実行することによってまたはスロットリング動作を実行することによって受け側ＳＳＤの書き込み性能を、他のＳＳＤの低下後の書き込み性能とほぼ等しい性能にまで低下させる（ステップＳ６４）。
【０１６５】
他のＳＳＤの書き込み性能の低下の要因が熱保護（熱スロットリング）であるならば（ステップＳ６５のＹＥＳ）、受け側ＳＳＤのコントローラ４は、スロットリング動作を実行することによって受け側ＳＳＤの書き込み性能を、他のＳＳＤの低下後の書き込み性能とほぼ等しい性能にまで低下させる（ステップＳ６６）。ＳＳＤアレイ全体の過度に温度上昇を防ぐために、受け側ＳＳＤがＧＣ動作を前もって実行することは禁止される。
【０１６６】
他のＳＳＤの書き込み性能の低下の要因が電力制限（電力制限スロットリング）であるならば（ステップＳ６７のＹＥＳ）、受け側ＳＳＤのコントローラ４は、スロットリング動作を実行することによって受け側ＳＳＤの書き込み性能を、他のＳＳＤの低下後の書き込み性能とほぼ等しい性能にまで低下させる（ステップＳ６８）。あるいは、受け側ＳＳＤのコントローラ４は、受け側ＳＳＤの電力消費が受け側ＳＳＤに許容された最大電力を超えない範囲内で、ＧＣ動作を前もって実行してもよい。
【０１６７】
なお、受け側ＳＳＤのコントローラ４がホスト２または他のＳＳＤから他のＳＳＤの書き込み性能の回復の通知を受信した時、コントローラ４は、ＧＣ動作を停止またはスロットリング動作を停止することよって受け側ＳＳＤの書き込み性能を通常状態時の書き込み性能（例えば、１Ｇバイト／秒）に回復する処理を実行する。
【０１６８】
図２０のフローチャートは、性能低下通知が受信された時に受け側ＳＳＤによって実行されるＧＣ動作の手順を示す。
【０１６９】
受け側ＳＳＤのコントローラ４は、書き込み性能の低下の量に基づいて、書き込み先ブロックに書き込むホスト２からのライトデータの量とＧＣ動作のためにコピー先ブロックにコピーするデータの量との比率を算出し（ステップＳ７１）、この比率でＧＣ動作を実行する（ステップＳ７２）。
【０１７０】
例えば、受け側ＳＳＤのコントローラ４が書き込み性能（１Ｇバイト／秒）で動作しており、送り出し側ＳＳＤの書き込み性能が５１２Ｍバイト／秒に低下される場合には、受け側ＳＳＤのコントローラ４は、受け側ＳＳＤの書き込み性能を５１２Ｍバイト／秒に低下させ、かつ残りの書き込み性能（ここでは、５１２Ｍバイト／秒）をＧＣ動作のために使用してもよい。この場合、ライトデータの量とＧＣ動作のためにコピーするデータの量との比率は１対１となる。ステップＳ７２では、ホスト２からのライトデータの量とＧＣ動作のためにコピーするデータの量との比率が１対１となるように書き込み動作とＧＣ動作とが並行して実行される。
【０１７１】
図２１のフローチャートは、性能低下通知が受信された時に受け側ＳＳＤによって実行されるスロットリング動作の手順を示す。
【０１７２】
受け側ＳＳＤのコントローラ４は、書き込み性能の低下の量に基づいて、受け側ＳＳＤ内で同時駆動するＮＡＮＤメモリチップの数または受け側ＳＳＤ内のＮＡＮＤメモリチップを間欠動作させるためのデューティー比を決定し（ステップＳ８１）、このＮＡＮＤメモリチップの数またはデューティー比でスロットリング動作を実行しながら書き込み動作を実行する（ステップＳ８２）。
【０１７３】
図２２は、送り出し側ＳＳＤおよび受け側ＳＳＤの双方の機能を有するＳＳＤの構成例を示す。
【０１７４】
送り出し側ＳＳＤおよび受け側ＳＳＤの双方の機能を有するＳＳＤ３のコントローラ４は、上述の書き込み性能低下通知部２４と上述の書き込み性能調整部２５の双方を含む。
【０１７５】
図２３は、ホスト２として機能する情報処理装置のハードウェア構成例を示す。
【０１７６】
この情報処理装置は、サーバコンピュータ、またはパーソナルコンピュータとして実現される。この情報処理装置は、プロセッサ（ＣＰＵ）１０１、メインメモリ１０２、ＢＩＯＳ−ＲＯＭ１０３、ネットワークコントローラ１０５、周辺インタフェースコントローラ１０６、コントローラ１０７、およびエンベデッドコントローラ（ＥＣ）１０８等を含む。
【０１７７】
プロセッサ１０１は、この情報処理装置の各コンポーネントの動作を制御するように構成されたＣＰＵである。このプロセッサ１０１は、複数のＳＳＤ３のいずれか１つまたは他のストレージデバイスからメインメモリ１０２にロードされる様々なプログラムを実行する。メインメモリ１０２は、ＤＲＡＭのようなランダムアクセスメモリから構成される。プロセッサ１０１によって実行されるプログラムは、上述のアプリケーションソフトウェアレイヤ４１、ＯＳ４２、ファイルシステム４３、およびデバイス性能管理部４４を含む。
【０１７８】
また、プロセッサ１０１は、不揮発性メモリであるＢＩＯＳ−ＲＯＭ１０３に格納された基本入出力システム（ＢＩＯＳ）も実行する。ＢＩＯＳはハードウェア制御のためのシステムプログラムである。
【０１７９】
ネットワークコントローラ１０５は、有線ＬＡＮコントローラ、無線ＬＡＮコントローラのような通信デバイスである。周辺インタフェースコントローラ１０６は、ＵＳＢデバイスのような周辺デバイスとの通信を実行するように構成されている。
【０１８０】
コントローラ１０７は、複数のコネクタ１０７Ａにそれぞれ接続されるデバイスとの通信を実行するように構成されている。本実施形態では、複数のＳＳＤ３が複数のコネクタ１０７Ａにそれぞれ接続される。コントローラ１０７は、ＲＡＩＤコントローラの機能を有するチップセットであってもよい。プロセッサ１０１がＰＣＩｅ  Ｓｗｉｔｃｈを含むならば、複数のＳＳＤ３の各々は、ＰＣＩｅバスを介してプロセッサ１０１に直接的に接続されてもよい。
【０１８１】
ＥＣ１０８は、情報処理装置の電力管理を実行するように構成されたシステムコントローラとして機能する。ＥＣ１０８は、ユーザによる電源スイッチの操作に応じて情報処理装置をパワーオンおよびパワーオフする。ＥＣ１０８はワンチップマイクロコントローラのような処理回路として実現されている。ＥＣ１０８は、キーボード（ＫＢ）などの入力デバイスを制御するキーボードコントローラを内蔵していてもよい。
【０１８２】
図２４は、複数のＳＳＤ３とホスト２とを含む情報処理装置の構成例を示す。
【０１８３】
この情報処理装置は、ラックに収容可能な薄い箱形の筐体２０１を備える。多数のＳＳＤ３は筐体２０１内に配置されても良い。この場合、各ＳＳＤ３は筐体２０１の前面２０１Ａに設けられたスロットに取り外し可能に挿入されてもよい。
【０１８４】
システムボード（マザーボード）２０２は筐体２０１内に配置される。システムボード（マザーボード）２０２上においては、ＣＰＵ１０１、メモリ１０２、ネットワークコントローラ１０５、コントローラ１０７を含む様々な電子部品が実装されている。これら電子部品がホスト２として機能する。
【０１８５】
以上説明したように、本実施形態の送り出し側ＳＳＤによれば、送り出し側ＳＳＤによって内部動作が開始される場合に、ホスト２から受信されるデータをＮＡＮＤメモリ５に書き込む書き込み動作の性能低下の量が推定され、この推定される書き込み動作の性能低下の量が、ホスト２またはＳＳＤアレイ内の他の一つ以上のＳＳＤに通知される。したがって、アレイ内のＳＳＤが協調動作することを可能にするために有用な情報をホスト２または他のＳＳＤに提供することが可能となり、これによってＳＳＤアレイ内の他のＳＳＤが、送り出し側ＳＳＤの書き込み性能が低下している期間を有効利用することが可能となる。
【０１８６】
なお、本実施形態では、不揮発性メモリとしてＮＡＮＤメモリを例示した。しかし、本実施形態の機能は、例えば、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｈａｓｅ  ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、又は、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような他の様々な不揮発性メモリにも適用できる。
【０１８７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１８８】
２…ホスト、３…ＳＳＤ、４…コントローラ、５…ＮＡＮＤメモリ、２１…ガベージコレクション動作制御、２２…熱保護スロットリング制御部、２３…電力制限スロットリング制御部、２４…書き込み性能低下通知部。
【図１】
0006517684.tif 000002
【図２】
0006517684.tif 000003
【図３】
0006517684.tif 000004
【図４】
0006517684.tif 000005
【図５】
0006517684.tif 000006
【図６】
0006517684.tif 000007
【図７】
0006517684.tif 000008
【図８】
0006517684.tif 000009
【図９】
0006517684.tif 000010
【図１０】
0006517684.tif 000011
【図１１】
0006517684.tif 000012
【図１２】
0006517684.tif 000013
【図１３】
0006517684.tif 000014
【図１４】
0006517684.tif 000015
【図１５】
0006517684.tif 000016
【図１６】
0006517684.tif 000017
【図１７】
0006517684.tif 000018
【図１８】
0006517684.tif 000019
【図１９】
0006517684.tif 000020
【図２０】
0006517684.tif 000021
【図２１】
0006517684.tif 000022
【図２２】
0006517684.tif 000023
【図２３】
0006517684.tif 000024
【図２４】
0006517684.tif 000025