(57)【要約】【課題】記憶装置とホスト装置との間の通信で用いられる通信インタフェースを適切化する。【解決手段】本実施形態に係る記憶装置は、不揮発性メモリとコントローラとを含む。コントローラは、ホスト装置と第１の通信を行い、不揮発性メモリと第２の通信を行い、前記不揮発性メモリを制御する。コントローラは、検出部と決定部とインタフェース部とを含む。検出部は、第２の通信における第２の転送レートを検出する。決定部は、検出部によって検出された第２の転送レートに基づいて第１の通信における第１の転送レートを決定する。インタフェース部は、決定部によって決定された第１の転送レートによりホスト装置と第１の通信を行う。【選択図】      図１
2019046045.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
ホスト装置と第１の通信を行い、前記不揮発性メモリと第２の通信を行い、前記不揮発性メモリを制御するコントローラと、
を具備し、
前記コントローラは、
前記第２の通信における第２の転送レートを検出する検出部と、
前記検出部によって検出された前記第２の転送レートに基づいて前記第１の通信における第１の転送レートを決定する決定部と、
前記決定部によって決定された前記第１の転送レートにより前記ホスト装置と前記第１の通信を行うインタフェース部と、
を具備する、記憶装置。
【請求項２】
前記検出部は、性能を制限するために設定された性能スロットリング設定値に基づいて、前記第１の転送レートをさらに検出し、
前記決定部は、前記検出部によって検出された前記第１の転送レート及び前記第２の転送レートに基づいて前記第１の通信における調整後の転送レートを決定し、
前記インタフェース部は、前記決定部によって決定された前記調整後の転送レートにより前記ホスト装置と前記第１の通信を行う、
請求項１の記憶装置。
【請求項３】
前記検出部は、前記不揮発性メモリと接続される前記コントローラのチャネルの数と前記第２の通信で用いられる周波数とに基づいて、前記第２の転送レートを求める、請求項１又は請求項２の記憶装置。
【請求項４】
前記検出部は、消費電力を制限するために設定された電力スロットリング設定値に基づいて、前記第２の転送レートを求める、請求項１又は請求項２の記憶装置。
【請求項５】
前記検出部は、温度を制限するために設定された温度スロットリング設定値に基づいて、前記第２の転送レートを求める、請求項１又は請求項２の記憶装置。
【請求項６】
前記検出部は、前記コントローラが前記不揮発性メモリに対して実行するバックグラウンドジョブの帯域消費量に基づいて、前記第２の転送レートを求め、
前記帯域消費量は、前記バックグラウンドジョブを実行することによって低下する転送レートに相当する、
請求項１又は請求項２の記憶装置。
【請求項７】
前記検出部は、前記コントローラが前記不揮発性メモリに対して実行するバックグラウンドジョブの帯域消費率に基づいて、前記第２の転送レートを求め、
前記帯域消費率は、前記不揮発性メモリの書き込み量／前記ホスト装置の書き込み量、に相当する、請求項１又は請求項２の記憶装置。
【請求項８】
不揮発性メモリと、
ホスト装置と第１の通信を行い、前記不揮発性メモリと第２の通信を行い、前記不揮発性メモリを制御するコントローラと、
を具備し、
前記コントローラは、
前記第１の通信における第１の転送レートを検出する検出部と、
前記検出部によって検出された前記第１の転送レートに基づいて前記第１の通信における調整後の転送レートを決定する決定部と、
前記決定部によって決定された前記調整後の転送レートにより前記ホスト装置と前記第１の通信を行うインタフェース部と、
を具備する、記憶装置。
【請求項９】
ホスト装置と、不揮発性メモリと当該不揮発性メモリを制御するコントローラとを含む記憶装置との間で第１の通信を行うことと、
前記コントローラと前記不揮発性メモリとの間の第２の通信における第２の転送レートを検出することと、
前記第２の転送レートに基づいて前記第１の通信における第１の転送レートを決定することと、
決定された前記第１の転送レートにより前記ホスト装置と前記第１の通信を行うことと、
を具備する、通信制御方法。
【請求項１０】
ホスト装置と、不揮発性メモリと当該不揮発性メモリを制御するコントローラとを含む記憶装置との間で通信を行うことと、
前記通信における転送レートを検出することと、
検出された前記転送レートに基づいて前記通信における調整後の転送レートを決定することと、
決定された前記調整後の転送レートにより前記前記ホスト装置と前記通信を行うことと、
を具備する、通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、記憶装置及び通信制御方法に関する。
【背景技術】
【０００２】
記憶装置の一例にＳＳＤ（Solid State Drive）がある。ＳＳＤは、例えば、複数の不揮発性半導体メモリと当該複数の不揮発性半導体メモリを制御するコントローラとを含む。
コントローラは、外部のホスト装置からコマンドを受信し、当該コマンドにしたがって、ホスト装置から受信したデータを不揮発性半導体メモリに書き込み、又は、不揮発性半導体メモリから読み出したデータをホスト装置へ送信する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０１５−５０５０９４号公報
【特許文献２】特表２０１６−５２６７１６号公報
【特許文献３】特開２０１４−７８０６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本実施形態は、ホスト装置に対する通信で用いられる通信インタフェースを適切化する記憶装置及び通信インタフェースの制御方法を提供する。
【課題を解決するための手段】
【０００５】
第１の実施形態に係る記憶装置は、不揮発性メモリとコントローラとを含む。コントローラは、ホスト装置と第１の通信を行い、不揮発性メモリと第２の通信を行い、不揮発性メモリを制御する。コントローラは、検出部と決定部とインタフェース部とを含む。検出部は、第２の通信における第２の転送レートを検出する。決定部は、検出部によって検出された第２の転送レートに基づいて第１の通信における第１の転送レートを決定する。インタフェース部は、決定部によって決定された第１の転送レートによりホスト装置と第１の通信を行う
第２の実施形態に係る記憶装置は、不揮発性メモリとコントローラとを含む。コントローラは、ホスト装置と第１の通信を行い、不揮発性メモリと第２の通信を行い、不揮発性メモリを制御する。コントローラは、検出部と決定部とインタフェース部とを含む。検出部は、第１の通信における第１の転送レートを検出する。決定部は、検出部によって検出された第１の転送レートに基づいて第１の通信における調整後の転送レートを決定する。インタフェース部は、決定部によって決定された調整後の転送レートによりホスト装置と第１の通信を行う。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態に係る記憶装置の構成の一例を示すブロック図。
【図２】第１の実施形態に係る設定候補データの一例を示すデータ構造図。
【図３】第１の実施形態に係る記憶装置で実行される通信制御処理の一例を示すフローチャート。
【図４】第２の実施形態に係る記憶装置の構成の一例を示すブロック図。
【図５】第２の実施形態に係る設定候補データの一例を示すデータ構造図。
【図６】第３の実施形態に係る記憶装置の構成の一例を示すブロック図。
【図７】第３の実施形態に係る記憶装置で実行される通信制御処理の一例を示すフローチャート。
【図８】性能スロットリング設定値に基づいて通信インタフェースのジェネレーション及びリンク幅を決定する場合のデータの依存関係の一例を示すブロック図。
【図９】ＮＡＮＤインタフェースの最大帯域幅と誤り訂正の符号化率とに基づいて通信インタフェースのジェネレーション及びリンク幅を決定する場合のデータの依存関係の一例を示すブロック図。
【図１０】バックエンドのスロットリング設定値に基づいて通信インタフェースのジェネレーション及びリンク幅を決定する場合のデータの依存関係の第１の例を示すブロック図。
【図１１】バックエンドのスロットリング設定値に基づいて通信インタフェースのジェネレーション及びリンク幅を決定する場合のデータの依存関係の第２の例を示すブロック図。
【図１２】バックグラウンドジョブの帯域消費量に基づいて通信インタフェースのジェネレーション及びリンク幅を決定する場合のデータの依存関係の一例を示すブロック図。
【図１３】バックグラウンドジョブの帯域消費率に基づいて通信インタフェースのジェネレーション及びリンク幅を決定する場合のデータの依存関係の一例を示すブロック図。
【発明を実施するための形態】
【０００７】
以下、図面を参照しながら各実施形態について説明する。以下の説明において、略又は実質的に同一の機能及び構成要素については、同一符号を付し、説明を省略するか、又は、必要に応じて説明を行う。
【０００８】
［第１の実施形態］
本実施形態においては、記憶装置とホスト装置との間の通信（以下、フロントエンド通信という）で用いられる通信インタフェースの適切化、すなわちフロントエンド通信における転送レート（フロントエンド転送レート）の調整を行い、電力効率を向上させる記憶装置について説明する。
本実施形態においては、コントローラと不揮発性メモリとの間の通信（以下、バックエンド通信という）における転送レート（以下、バックエンド転送レートという）に基づいて、フロントエンド通信で用いられる調整後のフロントエンド転送レートを決定する。
なお、本実施形態において、フロントエンド転送レートの調整は、例えば、通信インタフェースのジェネレーション（世代）及びリンク幅を変更・更新することにより実現される。しかしながら、フロントエンド転送レートの調整は、他の方法により実現されてもよい。ここで、リンク幅とは、レーンの数に相当する。レーンとは、送信用の伝送路と受信用の伝送路との組を表す。
【０００９】
図１は、本実施形態に係る記憶装置１の構成の一例を示すブロック図である。この図１は、記憶装置１が例えばソリッド・ステート・ドライブ（ＳＳＤ）の場合を例として示している。しかしながら、記憶装置１は、例えば、ハードディスク・ドライブ（ＨＤＤ）、ＳＳＤとＨＤＤとを備えるハイブリッド型記憶装置、メモリカードなどのような他の記憶装置でもよい。この図１では、本実施形態の制御に関係する構成要素のみを示しており、本実施形態に関係のない構成要素は省略している。
【００１０】
記憶装置１は、ホスト装置２と通信可能に接続されており、コントローラ３と不揮発性メモリ４_１〜４_ｎとを含む。
本実施形態においては、不揮発性メモリ４_１〜４_ｎがＮＡＮＤ型フラッシュメモリである場合を例として説明を行う。しかしながら、不揮発性メモリ４_１〜４_ｎは、他の種類のメモリでもよい。より具体的には、不揮発性メモリは、例えば、ＮＯＲ型フラッシュメモリ、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＰＲＡＭ（Phase change Random Access Memory）、ＲｅＲＡＭ（Resistive Random Access Memory）、又は、ＦｅＲＡＭ（Ferroelectric Rand2om Access Memory）などでもよい。また、不揮発性メモリ４_１〜４_ｎは、磁気ディスクなどでもよい。
【００１１】
本実施形態においては、記憶装置１とホスト装置２との間のフロントエンド通信に用いられる通信インタフェース５は、ＰＣＩ Ｅｘｐｒｅｓｓ（登録商標）規格に準拠する場合を例として説明するが、フロントエンド通信には他の通信インタフェースが用いられてもよい。
【００１２】
通信インタフェース５は、例えば、拡張バスの一種であり、Ｉ／Ｏシリアルインタフェースである。通信インタフェース５は、ジェネレーション及びリンク幅に対応する転送レートでデータを通信する。
本実施形態においては、通信インタフェース５のジェネレーションとして、Ｇｅｎ１、Ｇｅｎ２、Ｇｅｎ３が用いられるとするが、通信インタフェース５の他のジェネレーションが用いられてもよい。
リンク幅は、通信インタフェース５では、例えばｘ１，ｘ２，ｘ４，ｘ８，ｘ１２，ｘ１６，ｘ３２などが規格化されているとする。ｘＮ（Ｎは、自然数）は、Ｎ組のレーンによって構成されていることを意味する。
【００１３】
コントローラ３は、バックエンドＢＥ（メモリ通信部）とフロントエンドＦＥ（ホスト通信部）と記憶部６とを含む。コントローラ３は、例えば、ＳｏＣ（System-on-a-chip）でもよく、又は、複数の集積回路を組み合わせて構成されてもよい。
【００１４】
バックエンドＢＥは、ＮＡＮＤ制御回路７とプロセッサＰＢとを含む。
ＮＡＮＤ制御回路７は、ｎ個（ｎは２以上の自然数）のチャネルを持つ。ＮＡＮＤ制御回路７の各チャネルに対して不揮発性メモリ４_１〜４_ｎが接続される。本実施形態において、ＮＡＮＤ制御回路７は、例えば、各チャネルに接続された不揮発性メモリ４_１〜４_ｎを並列にアクセス可能とする。なお、ＮＡＮＤ制御回路７に接続される不揮発性メモリは１つでもよい。
ＮＡＮＤ制御回路７は、不揮発性メモリ４_１〜４_ｎに対する書き込み及び読み出し（アクセス）を制御し、転送レート制御部８と検出部９とを含む。
転送レート制御部８は、コントローラ３と不揮発性メモリ４_１〜４_ｎとの間のバックエンド通信におけるバックエンド転送レートを制御する。
【００１５】
検出部９は、例えば、バックエンド転送レートを検出し、バックエンド転送レートを示す検出データ１０を記憶部６へ書き込む。検出部９は、例えば、最大のバックエンド転送レートを検出するとしてもよい。検出部９は、例えば、コントローラ３と不揮発性メモリ４_１〜４_ｎとの間で送受信されているデータの量を測定し、バックエンド転送レートを算出してもよい。また、検出部９は、例えば、コントローラ３の電力状態からバックエンド転送レートを算出してもよい。
検出部９は、例えば、センサによって測定された記憶装置１における各種の測定値（例えば、消費電力、温度、ＮＡＮＤインタフェースのトグル周波数など）に基づいてバックエンド転送レートを検出してもよい。バックエンド転送レートの検出の詳細については、後述の第３の実施形態で説明する。
検出部９によるバックエンド転送レートの検出は、例えば、所定の間隔で行われてもよく、転送レート制御部８によるバックエンド転送レートの変更をトリガとして行われてもよい。
プロセッサＰＢは、例えばＮＡＮＤ制御回路７などのバックエンドＢＥの各構成要素を制御し、バックエンドＢＥの全体の動作の制御を行う。
【００１６】
記憶部６は、例えばレジスタであり、バックエンドＢＥからフロントエンドＦＥへ送信される検出データ１０を一時的に記憶可能である。バックエンドＢＥは、記憶部６に検出データ１０を書き込み、フロントエンドＦＥは、記憶部６から検出データ１０を読み出す。これにより、フロントエンドＦＥは、バックエンドＢＥから検出データ１０を受信可能である。
【００１７】
フロントエンドＦＥは、記憶部１１、プロセッサＰＦ、インタフェース部１３を含む。
記憶部１１は、設定候補データ１４を記憶する。
設定候補データ１４は、例えば、テーブル形式のデータであり、バックエンド転送レートと、通信インタフェース５のジェネレーションと、通信インタフェース５のリンク幅とを関連付けている。
【００１８】
プロセッサＰＦは、フロントエンドＦＥの各構成要素を制御し、フロントエンドＦＥの全体の動作の制御を行う。プロセッサＰＦは、例えは、決定部１２として機能する。なお、決定部１２は、プロセッサＰＦによって実現されるのではなく、例えばプロセッサＰＦと別構成の回路で実現されてもよい。
決定部１２は、記憶部６から検出データ１０を読み出し、記憶部１１に記憶されている設定候補データ１４の中から、検出データ１０の示すバックエンド転送レートと関連する通信インタフェース５のジェネレーションとリンク幅とを、決定する。この決定部１２は、例えば、バックエンド転送レートを実現可能な範囲で、消費電力を抑制するために必要な最小限の性能（ジェネレーション、リンク幅）を決定する。
【００１９】
インタフェース部１３は、決定部１２によって決定されたジェネレーションとリンク幅とに対応する通信インタフェース５にしたがってホスト装置２のインタフェース部１５とフロントエンド通信を行う。
なお、本実施形態において、プロセッサＰＢとプロセッサＰＦは別構成としているが、１つに統合されてもよい。プロセッサＰＢ，ＰＦとしては、例えば、ＣＰＵ（Central processing unit）、又は、ＭＰＵ（Microprocessor unit）など、各種の演算装置を用いることができる。
【００２０】
図２は、本実施形態に係る設定候補データ１４の一例を示すデータ構造図である。
設定候補データ１４では、各種のバックエンド転送レートに対して、ジェネレーションＧｅｎ１〜Ｇｅｎ３のいずれか、及び、リンク幅ｘ１，ｘ２，ｘ４のいずれか、が関連付けられている。なお、他のジェネレーション、他のリンク幅がバックエンド転送レートに対して関連付けられていてもよい。
【００２１】
設定候補データ１４では、バックエンド転送レートごとに、適切な（例えば必要最低限の性能となる）通信インタフェース５のジェネレーションとリンク幅とが関連付けられている。
【００２２】
ジェネレーションは、Ｇｅｎ１が最も古く、数が大きくなるほど新しい。
ジェネレーションの消費電力に関しては、Ｇｅｎ１の消費電力が最も少なく、ジェネレーションが新しくなるほど消費電力は多くなる。すなわち、ジェネレーションＧｅｎ３の消費電力＞ジェネレーションＧｅｎ２の消費電力＞ジェネレーションＧｅｎ１の消費電力、の関係が成り立つ。
【００２３】
ジェネレーションの転送レートに関しては、ジェネレーションＧｅｎ１の転送レートが最も遅く、ジェネレーションが新しくなるほど転送レートは速くなる。すなわち、ジェネレーションＧｅｎ３の転送レート＞ジェネレーションＧｅｎ２の転送レート＞ジェネレーションＧｅｎ１の転送レート、の関係が成り立つ。
【００２４】
リンク幅は、ｘ１が最も狭く、レーンの数が増えるほど広くなる。
リンク幅の消費電力に関しては、リンク幅ｘ１の消費電力が最も少なく、レーンの数が増えるほど消費電力は多くなる。すなわち、リンク幅ｘ４の消費電力＞リンク幅ｘ２の消費電力＞リンク幅ｘ１の消費電力、の関係が成り立つ。
リンク幅の転送レートに関しては、リンク幅ｘ１の転送レートが最も遅く、レーンの数が増えるほど転送レートは速くなる。すなわち、リンク幅ｘ４の転送レート＞リンク幅ｘ２の転送レート＞リンク幅ｘ１の転送レート、の関係が成り立つ。
【００２５】
設定候補データ１４では、遅いバックエンド転送レートに対して、古いジェネレーション、かつ、レーン数の少ないリンク幅が割り当てられており、バックエンド転送レートが速くなるほど、新しいジェネレーション、かつ、レーン数の多いリンク幅が割り当てられている。より具体的な例で説明すると、設定候補データ１４では、低速のバックエンド転送レートに対して、ジェネレーションＧｅｎ１及びリンク幅ｘ１が関連付けられており、中速のバックエンド転送レートに対して、ジェネレーションＧｅｎ２及びリンク幅ｘ２が関連付けられており、高速のバックエンド転送レートに対して、ジェネレーションＧｅｎ３及びリンク幅ｘ４が関連付けられている。
【００２６】
したがって、例えば、遅いバックエンド転送レートが検出された場合には、古いジェネレーションと狭いリンク幅に対応する通信インタフェース５にしたがって記憶装置１とホスト装置２との間の通信を実行させることができ、これによりバックエンド通信に必要とされる性能を維持しながら、記憶装置１の消費電力を抑制することができる。
【００２７】
図３は、本実施形態に係る記憶装置１で実行される通信制御処理の一例を示すフローチャートである。
ステップＳ３０１において、コントローラ３のインタフェース部１３は、ホスト装置２のインタフェース部１５と通信インタフェース５にしたがってフロントエンド通信を行う。
【００２８】
ステップＳ３０２において、コントローラ３の検出部９は、コントローラ３と不揮発性メモリ４_１〜４_ｎとの間のバックエンド通信におけるバックエンド転送レートを検出する。
ステップＳ３０３において、コントローラ３の決定部１２は、バックエンド転送レートと設定候補データ１４とに基づいて、バックエンド転送レートに対応する通信インタフェース５のジェネレーションとリンク幅とを決定する。
【００２９】
ステップＳ３０４において、コントローラ３のインタフェース部１３は、決定されたジェネレーションとリンク幅とに対応する通信インタフェース５にしたがってフロントエンド通信を行う。
ステップＳ３０５において、コントローラ３は、処理を継続する場合、ステップＳ３０２に戻る。コントローラ３は、処理を継続しない場合、当該通信制御処理を終了する。
【００３０】
以下で、本実施形態に係る記憶装置１と比較例のＳＳＤとの対比説明を行う。
比較例のＳＳＤは、例えば、ホスト装置２のインタフェース部１５が初期起動時に通信インタフェース５のジェネレーションとリンク幅とを決定すると、決定されたジェネレーションとリンク幅とを維持してフロントエンド通信を実行する。比較例のＳＳＤのコントローラに備えられており、不揮発性メモリを制御する比較例のＮＡＮＤ制御回路は、比較例のＳＳＤとホスト装置２との間のフロントエンド通信に影響を与えない。比較例のＳＳＤのコントローラは、不揮発性メモリ４_１〜４_ｎとの通信で用いるバックエンド転送レートを変化させる場合がある。しかしながら、比較例のＳＳＤのコントローラがバックエンド転送レートを変化させた場合であっても、比較例のＳＳＤとホスト装置２との間のフロントエンド通信で用いられる通信インタフェースのジェネレーション及びリンク幅は固定されたままであり、比較例のＳＳＤとホスト装置２との間のフロントエンド通信で消費される電力は、時間単位でほぼ同じになる。したがって、比較例のＳＳＤにおいて、バックエンド転送レートが低い場合には、電力効率が低下する。
【００３１】
これに対して、本実施形態に係る記憶装置１は、バックエンド転送レートを検出し、バックエンド転送レートに対して適切な通信インタフェース５のジェネレーション及びリンク幅を決定し、決定されたジェネレーション及びリンク幅を用いてホスト装置２とコントローラ３との間でフロントエンド通信を行う。本実施形態においては、例えば、バックエンド転送レートが低い場合に、古いジェネレーション、かつ、レーン数の少ないリンク幅の通信インタフェース５を用いてフロントエンド通信が行われる。このように、本実施形態においては、記憶装置１のコントローラ３が主導して記憶装置１とホスト装置２との間のフロントエンド通信で用いられる通信インタフェース５の設定を適切化することができ、記憶装置１の動作時の消費電力を、比較例のＳＳＤの動作時の消費電力よりも低下させることができる。
本実施形態においては、フロントエンド転送レートを調整するために、通信インタフェース５のジェネレーションとリンク幅とが決定及び更新される場合を説明したが、通信インタフェース５のジェネレーションとリンク幅とのうちの一方のみが決定及び更新されるとしてもよい。また、ジェネレーション及びリンク幅の決定及び更新に代えて、他の方法でフロントエンド転送レートを調整し、記憶装置１の消費電力を低減してもよい。
【００３２】
［第２の実施形態］
本実施形態においては、上記第１の実施形態の変形例について説明する。本実施形態においては、記憶装置とホスト装置２との間のフロントエンド通信におけるフロントエンド転送レートに基づいて、通信インタフェース５のジェネレーション及びリンク幅を決定する。
【００３３】
図４は、本実施形態に係る記憶装置１Ａの構成の一例を示すブロック図である。
記憶装置１Ａは、コントローラ３Ａと不揮発性メモリ４_１〜４_ｎとを含む。
コントローラ３Ａは、バックエンドＢＥＡとフロントエンドＦＥＡとを含む。
バックエンドＢＥＡのＮＡＮＤ制御回路７Ａは、転送レート制御部８を含み、不揮発性メモリ４_１〜４_ｎに対するデータの書き込みと読み出しとを制御する。
フロントエンドＦＥＡは、検出部９Ａ、記憶部１１Ａ、プロセッサＰＦ、インタフェース部１３を含む。プロセッサＰＦは、例えは、決定部１２Ａとして機能する。
【００３４】
検出部９Ａは、例えば、フロントエンド転送レートを検出し、フロントエンド転送レート示す検出データ１０Ａを記憶部１１Ａへ書き込む。検出部９Ａは、例えば、最大のフロントエンド転送レートを検出するとしてもよい。ここで、最大のフロントエンド転送レートとは、記憶装置１Ａとホスト装置２との間のフロントエンド通信で必要になる転送レートの最大値であり、通信インタフェース５で実現可能な転送レートの最大値以下の値である。検出部９Ａは、例えば、記憶装置１Ａとホスト装置２との間で送受信されているデータの量を測定して、フロントエンド転送レートを算出してもよい。また、検出部９Ａは、例えば、コントローラ３Ａの電力状態からフロントエンド転送レートを算出してもよい。
【００３５】
検出部９Ａは、例えば、センサによって測定された記憶装置１における各種の測定値（例えば、消費電力、温度、バックグラウンドジョブの帯域消費量、バックグラウンドジョブの帯域消費率など）に基づいてフロントエンド転送レートを検出してもよい。フロントエンド転送レートの検出の詳細については、後述の第３の実施形態で説明する。
検出部９Ａのフロントエンド転送レートの検出は、例えば、所定の間隔で行われてもよく、ＮＡＮＤ制御回路７Ａに備えられている転送レート制御部８によるバックエンド転送レートの変更をトリガとして行われてもよい。
【００３６】
記憶部１１Ａは、検出データ１０Ａと設定候補データ１４Ａとを記憶する。
設定候補データ１４Ａは、例えば、テーブル形式のデータであり、フロントエンド転送レートと、通信インタフェース５のジェネレーションと、通信インタフェース５のリンク幅とを関連付けている。
【００３７】
決定部１２Ａは、記憶部１１Ａから検出データ１０Ａを読み出し、記憶部１１Ａに記憶されている設定候補データ１４Ａの中から、検出データ１０Ａの示すフロントエンド転送レートと関連する通信インタフェース５のジェネレーションとリンク幅とを、決定する。この決定部１２Ａは、例えば、フロントエンド転送レートを実現可能な範囲で、消費電力を抑制するために必要な最小限の性能（ジェネレーション、リンク幅）を決定する。
【００３８】
インタフェース部１３は、決定部１２Ａによって決定されたジェネレーションとリンク幅とに対応する通信インタフェース５にしたがってホスト装置２のインタフェース部１５とフロントエンド通信を行う。
【００３９】
図５は、本実施形態に係る設定候補データ１４Ａの一例を示すデータ構造図である。
設定候補データ１４Ａでは、各種のフロントエンド転送レートに対して、ジェネレーションＧｅｎ１〜Ｇｅｎ３のいずれか、及び、リンク幅ｘ１，ｘ２，ｘ４のいずれかが、関連付けられている。なお、他のジェネレーション、他のリンク幅がフロントエンド転送レートに対して関連付けられていてもよい。
【００４０】
設定候補データ１４Ａでは、フロントエンド転送レートごとに、適切な（例えば必要最低限の性能となる）通信インタフェース５のジェネレーションとリンク幅とが関連付けられている。より具体的な例で説明すると、設定候補データ１４Ａでは、低速のフロントエンド転送レートに対して、ジェネレーションＧｅｎ１及びリンク幅ｘ１が関連付けられており、中速のフロントエンド転送レートに対して、ジェネレーションＧｅｎ２及びリンク幅ｘ２が関連付けられており、高速のフロントエンド転送レートに対して、ジェネレーションＧｅｎ３及びリンク幅ｘ４が関連付けられている。
【００４１】
以上説明した本実施形態に係る設定候補データ１４Ａでは、低いフロントエンド転送レートに対して、古いジェネレーション、かつ、レーン数の少ないリンク幅が割り当てられており、フロントエンド転送レートが高くなるほど、新しいジェネレーション、かつ、レーン数の多いリンク幅が割り当てられている。
したがって、本実施形態において、例えば、低いフロントエンド転送レートが検出された場合には、古いジェネレーションと狭いリンク幅とに対応する通信インタフェース５にしたがってフロントエンド通信を実行させることができ、これによりフロントエンド通信に必要とされる性能を維持しながら、記憶装置１Ａの消費電力を抑制することができる。
本実施形態において、フロントエンド転送レートを調整するために、通信インタフェース５のジェネレーションとリンク幅とのうちの一方のみが、フロントエンド転送レートに基づいて決定及び更新されるとしてもよい。また、ジェネレーション及びリンク幅の決定及び更新に代えて、他の方法でフロントエンド転送レートを調整し、記憶装置１の消費電力を低減してもよい。
【００４２】
なお、上記の第１及び第２の実施形態においては、テーブル形式のデータ構造を持つ設定候補データ１４，１４Ａを用いて通信インタフェース５のジェネレーション及びリンク幅が決定されているが、例えば、バックエンド転送レート又はフロントエンド転送レートに基づいて演算又はプログラムが実現する決定アルゴリズムにより通信インタフェース５のジェネレーション及びリンク幅が決定されてもよい。
【００４３】
［第３の実施形態］
本実施形態は、上記第１及び第２の実施形態の変形例であり、通信インタフェース５のジェネレーション及びリンク幅の決定処理についてより具体的に説明する。
本実施形態においては、各種の測定値又は設定値などに基づいて通信インタフェース５のジェネレーション及びリンク幅を決定する。
本実施形態で用いられる各種の設定値は、例えば、ホスト装置２からの指示に基づいて設定されてもよい。
【００４４】
図６は、本実施形態に係る記憶装置１Ｂの構成の一例を示すブロック図である。
記憶装置１Ｂは、コントローラ３Ｂと不揮発性メモリ４_１〜４_ｎとを含む。
コントローラ３Ｂは、ＮＡＮＤ制御回路７Ａ、測定部１６、記憶部１１Ｂ、プロセッサＰ、インタフェース部１３を含む。
プロセッサＰは、コントローラ３Ｂの各構成要素を制御し、コントローラ３Ｂの全体の動作の制御を行う。プロセッサＰは、例えば、設定部１８、検出部９Ｂ、決定部１２Ｂとして機能する。なお、設定部１８、検出部９Ｂ、決定部１２Ｂの少なくとも１つは、プロセッサＰによって実現されるのではなく、例えばプロセッサＰと別構成の回路で実現されてもよい。
【００４５】
測定部１６は、記憶装置１Ｂの状態を測定する例えばセンサなどの装置である。測定部１６は、例えば、フロントエンド転送レート、バックエンド転送レート、消費電力、温度、ＮＡＮＤインタフェースのトグル周波数などを測定する。測定部１６は、測定値を示す測定データ１９を記憶部１１Ｂに書き込む。
【００４６】
設定部１８は、ホスト装置２からインタフェース部１３経由で受信した設定データ２０を記憶部１１Ｂに書き込む。設定データ２０は、例えば、性能スロットリング設定値、電力スロットリング設定値、消費電力モード設定値、温度スロットリング設定値などを含む。
【００４７】
性能スロットリング設定値は、例えば、記憶装置１Ｂ又はコントローラ３Ｂの性能を制限するために設定される値である。
電力スロットリング設定値は、例えば、記憶装置１Ｂの消費電力を制限するために設定される値である。
消費電力モード設定値は、例えば、記憶装置１Ｂの消費電力に関する通常モード又は省電力モードなどを指定する情報である。本実施形態では、消費電力モード設定値は、例えば、記憶装置１に対して許容されるピーク電力を表すものとする。しかしながら、消費電力モード設定値は、例えば、記憶装置１に適用される消費電力モードに対応する番号などでもよい。
温度スロットリング設定値は、記憶装置１Ｂ又はコントローラ３Ｂの温度を制限するために設定される値である。
【００４８】
検出部９Ｂは、例えば、測定データ１９と設定データ２０とのうちの少なくとも一方に基づいて、フロントエンド転送レートを検出し、フロントエンド転送レート示す検出データ１０Ａを記憶部１１Ｂへ書き込む。検出部９Ｂは、例えば、最大のフロントエンド転送レートを検出するとしてもよい。
また、検出部９Ｂは、例えば、最大のバックエンド転送レートを求め、この求められた最大のバックエンド転送レートに基づいて最大のフロントエンド転送レートを検出するとしてもよい。ここで、最大のバックエンド転送レートとは、ＮＡＮＤ制御回路７Ａと不揮発性メモリ４_１〜４_ｎとの間のバックエンド通信で必要となる転送レートの最大値であり、ＮＡＮＤインタフェースで実現可能な転送レートの最大値以下の値である。ＮＡＮＤインタフェースとは、ＮＡＮＤ制御回路７Ａと不揮発性メモリ４_１〜４_ｎとの間の通信インタフェースである。
【００４９】
記憶部１１Ｂは、測定データ１９、設定データ２０、検出データ１０Ａ、設定候補データ１４Ａを記憶する。
決定部１２Ｂは、記憶部１１Ｂから検出データ１０Ａを読み出し、記憶部１１Ｂに記憶されている設定候補データ１４Ａの中から検出データ１０Ａの示すフロントエンド転送レートと関連する通信インタフェース５のジェネレーションとリンク幅とを決定する。この決定部１２Ｂは、例えば、検出されたフロントエンド転送レートを実現可能な範囲で、消費電力を抑制するために必要な最小限の性能を決定する。
【００５０】
インタフェース部１３は、決定部１２Ｂによって決定されたジェネレーションとリンク幅とに対応する通信インタフェース５にしたがってホスト装置２のインタフェース部１５とフロントエンド通信を行う。
【００５１】
図７は、本実施形態に係る記憶装置１Ｂで実行される通信制御処理の一例を示すフローチャートである。
ステップＳ７０１において、コントローラ３Ｂのインタフェース部１３は、ホスト装置２のインタフェース部１５と通信インタフェース５にしたがってフロントエンド通信を行う。
ステップＳ７０２において、コントローラ３Ｂの検出部９Ｂは、通信インタフェース５を用いるフロントエンド通信におけるフロントエンド転送レートを検出する。このフロントエンド転送レートは、例えば、各種の設定値、測定値に基づいて検出される。
【００５２】
ステップＳ７０３において、コントローラ３Ｂの決定部１２Ｂは、フロントエンド転送レートと設定候補データ１４Ａとに基づいて、フロントエンド転送レートに対応する通信インタフェース５のジェネレーションとリンク幅とを決定する。
ステップＳ７０４において、コントローラ３Ｂのインタフェース部１３は、決定されたジェネレーションとリンク幅とに対応する通信インタフェース５にしたがってフロントエンド通信を行う。
ステップＳ７０５において、コントローラ３Ｂは、処理を継続する場合、ステップＳ７０２に戻る。コントローラ３Ｂは、処理を継続しない場合、当該通信制御処理を終了する。
【００５３】
図８は、性能スロットリング設定値に基づいて通信インタフェース５のジェネレーション及びリンク幅を決定する場合のデータの依存関係の一例を示すブロック図である。
この図８は、データの依存関係を表現するとともに、処理の流れも表現している。なお、後述する図９以降も同様である。
【００５４】
性能スロットリング設定値Ｄ1は、記憶装置１Ｂの性能を制限するための設定値である。設定部１８は、例えば、性能スロットリング設定値Ｄ1「Ｖ1ギガバイト／秒」を設定する。
検出部９Ｂは、性能スロットリング設定値Ｄ1に基づいて、最大のフロントエンド転送レートＤ2「Ｖ1ギガバイト／秒」を検出（推定）する。
決定部１２Ｂは、「Ｖ1ギガバイト／秒」用の通信インタフェース５のジェネレーション及びリンク幅Ｄgl1を決定する。
【００５５】
図９は、ＮＡＮＤインタフェースの最大帯域幅と誤り訂正の符号化率とに基づいて通信インタフェース５のジェネレーション及びリンク幅を決定する場合のデータの依存関係の一例を示すブロック図である。
【００５６】
測定部１６又は設定部１８は、例えば、ＮＡＮＤインタフェースのトグル周波数Ｄ3「Ｖ2ギガバイト／秒」を測定又は設定する。ＮＡＮＤインタフェースとは、ＮＡＮＤ制御回路７Ａと不揮発性メモリ４_１〜４_ｎとの間の通信インタフェースである。
【００５７】
設定部１８は、例えば記憶装置１Ｂにおけるチャネル数Ｄ4「Ｖ3チャネル」を設定する。
検出部９Ｂは、ＮＡＮＤインタフェースのトグル周波数Ｄ3とチャネル数Ｄ4とに基づいて、ＮＡＮＤインタフェースの最大帯域幅Ｄ5「Ｖ2×Ｖ3＝Ｖ4ギガバイト／秒」を求める。
設定部１８は、例えば、符号化率Ｄ6「Ｖ5」を設定している。ＮＡＮＤ制御回路７Ａから不揮発性メモリ４_１〜４_ｎへ書き込まれる書き込みデータの中には、情報ビットと誤り訂正ビットとが含まれる。符号化率Ｄ6は、（情報ビット数／書き込みデータの全ビット数）に相当する。
【００５８】
検出部９Ｂは、ＮＡＮＤインタフェースの最大帯域幅Ｄ5と符号化率Ｄ6とに基づいて、最大のバックエンド転送レートＤ7「Ｖ4×Ｖ5＝Ｖ6ギガバイト／秒」を求める。そして、検出部９Ｂは、最大のバックエンド転送レートＤ7に基づいて、例えば、最大のフロントエンド転送レートＤ8「Ｖ6ギガバイト／秒」を検出（推定）する。
決定部１２Ｂは、「Ｖ6ギガバイト／秒」用の通信インタフェース５のジェネレーション及びリンク幅Ｄgl2を決定する。
【００５９】
図１０は、バックエンドのスロットリング設定値に基づいて通信インタフェース５のジェネレーション及びリンク幅を決定する場合のデータの依存関係の第１の例を示すブロック図である。バックエンドのスロットリング設定値としては、例えば、電力スロットリング設定値、温度スロットリング設定値、不揮発性メモリ４_１〜４_ｎの寿命に関する設定値などがある。この図１０では、バックエンドのスロットリング設定値として電力スロットリング設定値が用いられる場合を例として説明する。
【００６０】
設定部１８は、例えば、消費電力モード設定値Ｄ9から許容電力Ｄ10「Ｖ7ワット」を求め、バックエンドのスロットリング設定値Ｄ11「Ｖ7ワット」を設定する。
検出部９Ｂは、例えば、バックエンドのスロットリング設定値Ｄ11に基づいて、ＮＡＮＤインタフェースのトグル周波数Ｄ3「Ｖ2ギガバイト／秒」を求める。
検出部９Ｂは、例えば、バックエンドのスロットリング設定値Ｄ11に基づいて、同時に駆動することが許容されるチップ数（以下、許容同時駆動チップ数という）Ｄ12「Ｖ8個」を求める。
【００６１】
設定部１８は、例えば、記憶装置１におけるチャネル数Ｄ4「Ｖ3チャネル」を設定する。
【００６２】
検出部９Ｂは、例えば、ＮＡＮＤインタフェースのトグル周波数Ｄ3とチャネル数Ｄ4に基づいて、ＮＡＮＤインタフェースの最大帯域幅Ｄ5「Ｖ2×Ｖ3＝Ｖ4ギガバイト／秒」を求める。
検出部９Ｂは、例えば、ＮＡＮＤインタフェースの最大帯域幅Ｄ5と許容同時駆動チップ数Ｄ12とに基づいて、最大のバックエンド転送レートＤ13「Ｖ4×Ｖ8＝Ｖ9ギガバイト／秒」を求める。なお、最大のバックエンド転送レートＤ13は、例えば、コマンド投入間隔（ウェイト時間）などの値を用いて算出されてもよい。
【００６３】
検出部９Ｂは、例えば、最大のバックエンド転送レートＤ13に基づいて、最大のフロントエンド転送レートＤ14「Ｖ9ギガバイト／秒」を検出する。
決定部１２Ｂは、「Ｖ9ギガバイト／秒」用の通信インタフェース５のジェネレーション及びリンク幅Ｄgl3を決定する。
【００６４】
図１１は、バックエンドのスロットリング設定値に基づいて通信インタフェース５のジェネレーション及びリンク幅を決定する場合のデータの依存関係の第２の例を示すブロック図である。
測定部１６は、温度センサであり、温度Ｄ15を測定する。温度Ｄ15は、例えばＶ10℃であったとする。
【００６５】
設定部１８は、バックエンドのスロットリング設定値Ｄ16を設定する。本実施形態において、バックエンドのスロットリング設定値Ｄ16は、例えば、温度Ｄ15「Ｖ10℃」の場合に性能を「Ｖ11％」に制限することを表す情報とする。
測定部１６又は設定部１８は、例えば、通常時の最大のバックエンド転送レート「Ｖ12ギガバイト／秒」を測定又は設定している。
【００６６】
検出部９Ｂは、性能をＶ11％に制限し、最大のバックエンド転送レートＤ17「Ｖ12×（Ｖ11／１００）＝Ｖ13ギガバイト／秒」を求める。
検出部９Ｂは、最大のバックエンド転送レートＤ17に基づいて、例えば、最大のフロントエンド転送レートＤ18「Ｖ13ギガバイト／秒」を検出する。
決定部１２Ｂは、「Ｖ13ギガバイト／秒」用の通信インタフェース５のジェネレーション及びリンク幅Ｄgl4を決定する。
【００６７】
図１２は、バックグラウンドジョブの帯域消費量に基づいて通信インタフェース５のジェネレーション及びリンク幅を決定する場合のデータの依存関係の一例を示すブロック図である。
【００６８】
検出部９Ｂは、例えば、最大のバックエンド転送レートＤ19「Ｖ14ギガバイト／秒」を求める。
【００６９】
測定部１６又は設定部１８は、例えば、ＮＡＮＤ制御回路７が不揮発性メモリ４_１〜４_ｎに対して実行するバックグラウンドジョブの帯域消費量Ｄ20を測定又は設定する。例えば、コントローラ３Ｂによってある処理が実行されると、当該処理に応じてＮＡＮＤ制御回路７が不揮発性メモリ４_１〜４_ｎをアクセスするバックエンド転送レートが低下する。帯域消費量とは、このある処理を実行することによって低下する転送レートに相当する。
バックグラウンドジョブとしては、例えば、パトロール・リフレッシュ、ガベージコレクションなどがあるが、この図１２では、パトロール・リフレッシュの場合を代表して説明している。
パトロール・リフレッシュの帯域消費量Ｄ20は、「Ｖ15ギガバイト／秒」であるとする。
【００７０】
検出部９Ｂは、最大のバックエンド転送レートＤ19「Ｖ14ギガバイト／秒」からバックグラウンドジョブの帯域消費量Ｄ20「Ｖ15ギガバイト／秒」を引いた値「Ｖ14−Ｖ15＝Ｖ16ギガバイト／秒」を求める。そして、検出部９Ｂは、求めた値「Ｖ16ギガバイト／秒」に基づいて、例えば、最大のフロントエンド転送レートＤ21「Ｖ16ギガバイト／秒」を検出する。
決定部１２Ｂは、「Ｖ16ギガバイト／秒」用の通信インタフェース５のジェネレーション及びリンク幅Ｄgl5を決定する。
【００７１】
図１３は、バックグラウンドジョブの帯域消費率に基づいて通信インタフェース５のジェネレーション及びリンク幅を決定する場合のデータの依存関係の一例を示すブロック図である。
検出部９Ｂは、例えば、最大のバックエンド転送レートＤ22「Ｖ17ギガバイト／秒」を求める。
【００７２】
測定部１６又は設定部１８は、例えば、バックグラウンドジョブの帯域消費率Ｄ23「ＷＡＦ（Write Amplification Factor）＝Ｖ18」を測定又は設定する。このＷＡＦは、（不揮発性メモリ４_１〜４_ｎの書き込み量／ホスト装置２の書き込み量）に基づいて求められる。
【００７３】
検出部９Ｂは、最大のバックエンド転送レートＤ22とバックグラウンドジョブの帯域消費率Ｄ23とに基づいて、例えば、最大のフロントエンド転送レートＤ24「Ｖ17×（１／Ｖ18）＝Ｖ19ギガバイト／秒」を検出する。
決定部１２Ｂは、「Ｖ19ギガバイト／秒」用の通信インタフェース５のジェネレーション及びリンク幅Ｄgl6を決定する。
【００７４】
以上説明した本実施形態においては、記憶装置１Ｂのコントローラ３Ｂが測定値又は設定値に基づいて通信インタフェース５のジェネレーション及びリンク幅を変更し、記憶装置１Ｂの消費電力を抑制することができる。
本実施形態においては、通信インタフェース５のジェネレーション及びリンク幅を、記憶装置１Ｂの最大のフロントエンド転送レートＤ2，Ｄ8，Ｄ14，Ｄ18，Ｄ21，Ｄ24に基づいて決定し、変更することができる。
【００７５】
本実施形態において、最大のフロントエンド転送レートＤ2，Ｄ8，Ｄ14，Ｄ18，Ｄ21，Ｄ24は、性能スロットリング設定値Ｄ1、又は、最大のバックエンド転送レートＤ7，Ｄ13，Ｄ17，Ｄ19，Ｄ22に基づいて決定することができる。
最大のバックエンド転送レートＤ7，Ｄ13は、不揮発性メモリ４_１〜４_ｎのＮＡＮＤインタフェースのトグル周波数Ｄ3とチャネル数Ｄ4に基づいて求めることができる。
【００７６】
最大のバックエンド転送レートＤ7は、符号化率Ｄ6に基づいて求めることができる。
最大のバックエンド転送レートＤ13は、バックエンドのスロットリング設定値（電力スロットリング設定値）Ｄ11に基づいて求めることができる。
バックエンドのスロットリング設定値Ｄ11は、消費電力モード設定値Ｄ9に基づいて求めることができる。当該消費電力モード設定値Ｄ9は、ホスト装置２の指示によって設定されてもよい。
【００７７】
最大のバックエンド転送レートＤ17は、測定部１６によって測定された温度Ｄ15とバックエンドのスロットリング設定値（温度スロットリング設定値）Ｄ16とに基づいて求めることができる。
バックエンドのスロットリング設定値Ｄ16は、ホスト装置２の指示によって設定されてもよい。
【００７８】
最大のフロントエンド転送レートＤ21，Ｄ24は、それぞれバックグラウンドジョブの帯域消費量Ｄ20、及び、バックグラウンドジョブの帯域消費率Ｄ23に基づいて求めることができる。なお、バックグラウンドジョブは、ガベージコレクションでもよく、パトロール・リフレッシュでもよい。
本実施形態で説明した通信インタフェース５のジェネレーション及びリンク幅の各種の決定処理は、適宜組み合わせることができる。
【００７９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８０】
１，１Ａ，１Ｂ…記憶装置、２…ホスト装置、３，３Ａ，３Ｂ…コントローラ、４_１〜４_ｎ…不揮発性メモリ、５…通信インタフェース、６，１１，１１Ａ，１１Ｂ…記憶部、７，７Ａ…ＮＡＮＤ制御回路、８…転送レート制御部、９，９Ａ，９Ｂ…検出部、１０，１０Ａ…検出データ、１２，１２Ａ，１２Ｂ…決定部、１３，１５…インタフェース部、１４，１４Ａ…設定候補データ、ＦＥ，ＦＥＡ…フロントエンド、ＢＥ，ＢＥＡ…バックエンド、１６…測定部、１８…設定部、１９…測定データ、２０…設定データ、Ｐ，ＰＦ，ＰＢ…プロセッサ。
【図１】
2019046045.tif 000003
【図２】
2019046045.tif 000004
【図３】
2019046045.tif 000005
【図４】
2019046045.tif 000006
【図５】
2019046045.tif 000007
【図６】
2019046045.tif 000008
【図７】
2019046045.tif 000009
【図８】
2019046045.tif 000010
【図９】
2019046045.tif 000011
【図１０】
2019046045.tif 000012
【図１１】
2019046045.tif 000013
【図１２】
2019046045.tif 000014
【図１３】
2019046045.tif 000015