(57)【要約】【課題】利便性の高いメモリシステムを得ること。【解決手段】メモリシステムは、ホストに接続可能である。メモリシステムは、不揮発性の第１メモリと、ホストと第１メモリとの間のデータ転送を実行するコントローラ回路とを備える。コントローラ回路は、ホストとメモリシステムとの間のデータの転送レートを測定し、ホストによる処理能力に対応した性能レベルを転送レートに基づいて演算する。コントローラ回路は、データ転送の性能を性能レベルに制御する。【選択図】図６
2019053522.tif 000002
【特許請求の範囲】
【請求項１】
ホストに接続可能なメモリシステムであって、
不揮発性の第１メモリと、
前記ホストと前記第１メモリとの間のデータ転送を実行するコントローラ回路と、
を備え、
前記コントローラ回路は、前記ホストと前記メモリシステムとの間のデータの転送レートを測定し、前記ホストによる処理能力に対応した性能レベルを前記転送レートに基づいて演算し、前記データ転送の性能を前記性能レベルに制御する、第１のモードで動作する、
メモリシステム。
【請求項２】
前記コントローラ回路は、前記メモリシステムのデータ転送の最大性能よりも小さく、かつ、前記転送レートよりも大きい値を前記性能レベルとして設定する、
請求項１に記載のメモリシステム。
【請求項３】
前記第１のモードにおいて、前記コントローラ回路は、前記転送レートと第１の閾値との比較に基づいて第２のモードに遷移し、
前記第２のモードにおいて、前記コントローラ回路は、前記データ転送の性能を最低のレベルに制御する、
請求項１に記載のメモリシステム。
【請求項４】
前記第２のモードにおいて、前記コントローラ回路は、前記転送レートと前記第１の閾値よりも大きい第２の閾値との比較に基づいて前記第１のモードに遷移する、
請求項３に記載のメモリシステム。
【請求項５】
前記第１のモードにおいて、前記コントローラ回路は、前記転送レートが前記第１の閾値よりも大きい第２の閾値を下回った場合に第３のモードに遷移し、
前記第３のモードにおいて、前記コントローラ回路は、前記転送レートが前記第２の閾値を上回った場合に前記第１のモードに遷移し、
前記第３のモードにおいて、前記コントローラ回路は、前記転送レートが継続して前記第１の閾値を下回った場合、前記第２のモードに遷移する、
請求項３に記載のメモリシステム。
【請求項６】
前記コントローラ回路は、前記転送レートの測定を異なるタイミングで複数回実行し、測定毎に前記転送レートの測定値を取得し、前記複数回の測定によって得られた複数の測定値のうちの最大値よりも大きい値を前記性能レベルとして設定する、
請求項２に記載のメモリシステム。
【請求項７】
第２メモリをさらに備え、
前記コントローラ回路は、各測定において前記転送レートの測定値が第１の閾値を上回った場合、前記測定値を前記第２メモリに記録し、前記転送レートの測定値が前記第１の閾値を下回った場合、前記測定値を前記第２メモリに記録せず、前記第２メモリに記録された１以上の測定値のうちの最大値よりも大きい値を前記性能レベルとして設定する、
請求項６に記載のメモリシステム。
【請求項８】
前記コントローラ回路は、前記最大値に１より大きい定数を乗算し、乗算によって得られた値を前記性能レベルとして設定する、
請求項７に記載のメモリシステム。
【請求項９】
前記第１メモリは、複数のメモリチップを備え、
前記コントローラ回路は、前記複数のメモリチップのうちの並列にアクセスするメモリチップの数を制御することによって、前記データ転送の能力を前記性能レベルに制御する、
請求項１に記載のメモリシステム。
【請求項１０】
前記コントローラ回路は、前記第１メモリまたは前記コントローラ回路を駆動するクロックの周波数を制御することによって、前記データ転送の能力を前記性能レベルに制御する、
請求項１に記載のメモリシステム。
【請求項１１】
不揮発性のメモリとホストとの間のデータ転送を制御する方法であって、
前記ホストとの間のデータの転送レートを測定するステップと、
前記ホストによる処理能力に対応した性能レベルを前記転送レートに基づいて演算するステップと、
前記データ転送の性能を前記性能レベルに制御するステップと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、メモリシステムおよび方法に関する。
【背景技術】
【０００２】
従来、不揮発性メモリを有するメモリシステムが知られている。メモリシステムに関し、必要な性能を確保しつつ消費電力を低減することが要望されている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
一つの実施形態は、利便性の高いメモリシステムおよび方法を提供することを目的とする。
【課題を解決するための手段】
【０００４】
一つの実施形態によれば、メモリシステムは、ホストに接続可能である。メモリシステムは、不揮発性の第１メモリと、ホストと第１メモリとの間のデータ転送を実行するコントローラ回路とを備える。コントローラ回路は、ホストとメモリシステムとの間のデータの転送レートを測定し、ホストによる処理能力に対応した性能レベルを転送レートに基づいて演算する。コントローラ回路は、データ転送の性能を性能レベルに制御する。
【図面の簡単な説明】
【０００５】
【図１】図１は、実施形態のメモリシステムの構成を示す図である。
【図２】図２は、実施形態のリングバッファに測定値が記録される様子を示す模式図である。
【図３】図３は、実施形態のメモリシステムの４つの状態を示す図である。
【図４】図４は、実施形態のメモリシステムの起動時の動作の一例を示すフローチャートである。
【図５】図５は、実施形態のメモリシステムの未制御状態での動作の一例を示すフローチャートである。
【図６】図６は、実施形態のメモリシステムのアクティブ制御状態での動作の一例を示すフローチャートである。
【図７】図７は、実施形態のメモリシステムのアイドル遷移状態での動作の一例を示すフローチャートである。
【図８】図８は、実施形態のメモリシステムのアイドル制御状態での動作の一例を示すフローチャートである。
【図９】図９は、実施形態の性能レベルと測定値との推移の一例を示す図である。
【発明を実施するための形態】
【０００６】
以下に添付図面を参照して、実施形態にかかるメモリシステムおよび方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【０００７】
（実施形態）
図１は、実施形態のメモリシステム１の構成を示す図である。メモリシステム１は、ホスト２と接続可能である。メモリシステム１とホスト２との間の通信路の規格は、特定の規格に限定されない。一例では、ＳＡＳ（Serial  Attached  SCSI）が採用され得る。
【０００８】
ホスト２は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどが該当する。メモリシステム１は、ホスト２からアクセスコマンド（リードコマンドおよびライトコマンド）を受け付けることができる。各アクセスコマンドは、アクセス先を示す論理アドレスを含んでいる。論理アドレスは、メモリシステム１がホスト２に提供する論理アドレス空間内の位置を示す。
【０００９】
メモリシステム１は、メモリコントローラ１０と、ＮＡＮＤ型のフラッシュメモリ（ＮＡＮＤメモリ）２０と、電源回路３０と、を備えている。
【００１０】
ＮＡＮＤメモリ２０は、１以上のメモリチップ２１によって構成される。ここでは、ＮＡＮＤメモリ２０は、１以上のメモリチップ２１として、１６個のメモリチップ２１ａ〜２１ｐを備える。
【００１１】
ＮＡＮＤメモリ２０を構成する１６個のメモリチップ２１は、それぞれ、４つのチャネル（ｃｈ．０〜ｃｈ．３）の何れかを介してメモリコントローラ１０に接続されている。図１の例に従えば、メモリチップ２１ａ〜２１ｄは、チャネル０（ｃｈ．０）に接続されている。メモリチップ２１ｅ〜２１ｈは、チャネル１（ｃｈ．１）に接続されている。メモリチップ２１ｉ〜２１ｌは、チャネル２（ｃｈ．２）に接続されている。メモリチップ２１ｍ〜２１ｐは、チャネル３（ｃｈ．３）に接続されている。
【００１２】
各チャネルは、Ｉ／Ｏ信号線および制御信号線を含む、配線群によって構成される。Ｉ／Ｏ信号線は、例えば、データ、アドレス、およびコマンドを送受信するための信号線である。制御信号線は、例えば、ＷＥ（ライトイネーブル）信号、ＲＥ（リードイネーブル）信号、ＣＬＥ（コマンドラッチイネーブル）信号、ＡＬＥ（アドレスラッチイネーブル）信号、ＷＰ（ライトプロテクト）信号等を送受信するための信号線である。
【００１３】
メモリコントローラ１０は、各チャネルを個別に制御することができる。メモリコントローラ１０は、４つのチャネルを同時に制御することによって、それぞれ接続されたチャネルが異なる合計４つのメモリチップ２１を同時に動作させることができる。
【００１４】
なお、メモリシステム１に具備されるチャネルの数は、４つに限定されない。また、各チャネルに接続されているメモリチップ２１の数は、４つに限定されない。
【００１５】
各メモリチップ２１は、ＮＡＮＤメモリ２０の記憶領域を構成するメモリセルアレイを備えている。メモリセルアレイには、ホスト２から受信したデータおよびメモリシステム１の動作に必要となるデータ（ファームウェアプログラムおよび管理情報など）が格納される。
【００１６】
なお、ＮＡＮＤメモリ２０は、不揮発性の第１メモリの一例である。第１メモリとして、任意の種類の不揮発性メモリが採用可能である。例えば、第１メモリとして、ＮＯＲ型のフラッシュメモリ、ＭＲＡＭ（Magnetoresistive  Random  Access  Memory）、ＲｅＲＡＭ（Resistive  Random  Access  Memory）、またはＰＣＭ（Phase  Change  Random  Access  Memory）が採用可能である。
【００１７】
電源回路３０は、メモリコントローラ１０およびＮＡＮＤメモリ２０を駆動するための内部電源を生成し、生成した内部電源をメモリコントローラ１０およびＮＡＮＤメモリ２０のそれぞれに供給する。
【００１８】
メモリコントローラ１０は、メモリシステム１全体の制御を実行する回路である。例えば、メモリコントローラ１０は、後述のＲＡＭ（Random  Access  Memory）１３を介して、ホスト２とＮＡＮＤメモリ２０との間のデータ転送を実行する。
【００１９】
メモリコントローラ１０は、ＣＰＵ（Central  Processing  Unit）１１、ホストインタフェースコントローラ（ホストＩ／Ｆコントローラ）１２、ＲＡＭ１３、ＮＡＮＤコントローラ１４、クロックコントローラ１５、および電力制御部１６を備える。メモリコントローラ１０は、例えばＳｏＣ（System-On-Chip）として構成され得る。メモリコントローラ１０は、複数のチップによって構成されてもよい。
【００２０】
ＮＡＮＤコントローラ１４は、ＮＡＮＤメモリ２０に対するアクセスを実行する回路である。
【００２１】
クロックコントローラ１５は、メモリコントローラ１０の各構成要素およびＮＡＮＤメモリ２０を動作させるクロックを生成する。そして、クロックコントローラ１５は、生成したクロックを各構成要素およびＮＡＮＤメモリ２０に供給する。
【００２２】
ＲＡＭ１３は、キャッシュ、バッファ、およびワーキングエリアとして機能するメモリである。例えば、ＲＡＭ１３は、ＤＲＡＭ（Dynamic  Random  Access  Memory）、ＳＲＡＭ（Static  Random  Access  Memory）、またはこれらの組み合わせによって構成される。ＲＡＭ１３は、メモリコントローラ１０の外部に配置されてもよい。
【００２３】
ＲＡＭ１３には、リングバッファ１３１が設けられている。また、ＲＡＭ１３には、カウント値１３２が記録される。リングバッファ１３１およびカウント値１３２は、次に説明するホストインタフェースコントローラ１２によって操作される。
【００２４】
ホストインタフェースコントローラ１２は、ホスト２とメモリコントローラ１０との間の情報（コマンド、データ）の送受信を制御する。特に、実施形態では、ホストインタフェースコントローラ１２は、ホスト２とメモリシステム１との間のデータの転送量の測定と、転送量の測定値の記録と、を実行することができる。
【００２５】
ホストインタフェースコントローラ１２は、単位時間当たりのデータの転送量（即ち転送レート）を所定の時間間隔で測定する。そして、測定値が閾値Ｔａ（ただしＴａ＞０）を上回った場合、ホストインタフェースコントローラ１２は、その測定値をリングバッファ１３１に記録する。ホストインタフェースコントローラ１２は、新しい測定値を、リングバッファ１３１の最も古くに測定値が書き込まれた位置に記録する。
【００２６】
図２は、リングバッファ１３１に測定値が記録される様子を示す模式図である。本図では、リングバッファ１３１は、アドレスが連続したＮ個の領域１３３を備えている。各領域１３３には、１つの測定値が格納される。各測定値は、本図の例では、ＫｉＢの単位を有している。Ｎ個の領域１３３のそれぞれには、矢印１３４で示されるように、アドレスの順番で測定値が上書き形式で格納される。最後尾の領域１３３に測定値が格納された後は、先頭の領域１３３に測定値が格納される。このように構成されることにより、リングバッファ１３１は、リングバッファ１３１に入力された複数の測定値のうちの最新のＮ個の測定値を保持することができる。
【００２７】
ホストインタフェースコントローラ１２は、さらに、測定値が閾値Ｔｂ（ただしＴａ＞Ｔｂ＞０）を下回った場合、カウント値１３２を１だけインクリメントし、測定値が閾値Ｔｂを下回っていない場合、カウント値１３２をゼロにリセットすることができる。このように操作されることにより、カウント値１３２は、単位時間当たりのデータの転送量が連続して閾値Ｔｂを下回った期間に相当する。
【００２８】
なお、転送量は、異なるタイミングで複数回測定されればよく、転送量の測定のタイミングは任意に設定され得る。また、ホストインタフェースコントローラ１２は、メモリシステム１からホスト２に転送されるデータの転送量のみを測定してもよいし、ホスト２からメモリシステム１に転送されるデータの転送量のみを測定してもよい。ここでは、ホストインタフェースコントローラ１２は、一例として、メモリシステム１からホスト２に転送されるデータとホスト２からメモリシステム１に転送されるデータとの合計の転送量を測定することとする。また、単位時間は、任意に設定可能である。また、ホストインタフェースコントローラ１２は、単位時間当たりに受信したコマンド数を、単位時間当たりのデータの転送量と見なして測定してもよい。
【００２９】
ＣＰＵ１１は、予めメモリシステム１に内蔵されるプログラム（ファームウェアプログラム）に基づいて動作するプロセッサである。ファームウェアプログラムは、例えばＮＡＮＤメモリ２０の所定位置に格納されている。ＣＰＵ１１は、メモリシステム１の起動時に、ＮＡＮＤメモリ２０からＲＡＭ１３にファームウェアプログラムをロードする。そして、ＣＰＵ１１は、ＲＡＭ１３にロードされたファームウェアプログラムを実行する。ＣＰＵ１１は、ファームウェアプログラムに従って、メモリコントローラ１０の種々の機能を実現する。
【００３０】
特に、ＣＰＵ１１は、ホスト２とＮＡＮＤメモリ２０との間のデータ転送の性能を制御する。データ転送の性能は、メモリシステム１の消費電力と相関関係を有する。例えば、データ転送の性能が低減せしめられると、メモリシステム１の消費電力が低減され、データ転送の性能が高められると、メモリシステム１の消費電力が増加する。実施形態では、消費電力を効率的に低減するために、データ転送の性能制御に関する４つの状態が定義される。状態は、モードと換言され得る。即ち、メモリコントローラ１０は、４つのモードで動作し得る。ＣＰＵ１１は、リングバッファ１３１に記録された測定値と、カウント値１３２と、に基づいて、状態間の遷移を実行する。そして、ＣＰＵ１１は、状態に応じて性能レベルを決定する。
【００３１】
性能レベルは、メモリシステム１のデータ転送の性能の設定値を表す。メモリシステム１のデータ転送の性能とは、即ち、メモリコントローラ１０のホスト２とＮＡＮＤメモリ２０との間のデータ転送の性能である。性能レベルは、性能が最大限に抑制された状態において転送可能な最大の量を最小値とし、性能が全く抑制されていない状態において転送可能な最大の量を最大値とする範囲内で設定可能である。なお、性能レベルは、必ずしもデータの転送量で表現されていなくてもよい。性能レベルは、正規化された量で表現されてもよい。
【００３２】
図３は、４つの状態を示す図である。本図に示されるように、未制御状態、アイドル制御状態、アクティブ制御状態、およびアイドル遷移状態が定義されている。
【００３３】
未制御状態は、データ転送の性能の抑制が全く行われない状態（モード）である。未制御状態では、メモリコントローラ１０は、ホスト２とＮＡＮＤメモリ２０との間のデータ転送を、メモリシステム１の最大の性能で実行することができる。メモリシステム１の起動直後においては、ＣＰＵ１１は、未制御状態を設定する。未制御状態では、ＣＰＵ１１は、設定可能な範囲内の最大値を性能レベルとして設定する。
【００３４】
アクティブ制御状態は、ホスト２の処理能力に対応した性能でホスト２とＮＡＮＤメモリ２０との間のデータ転送が実行される状態（モード）である。ホスト２の処理能力とは、ホスト２のデータの転送能力である。
【００３５】
ここでは一例として、ＣＰＵ１１は、アクティブ制御状態では、リングバッファ１３１に記録されたＮ個の測定値のうちの最大の測定値（Ｔｍａｘとする）を、ホスト２の処理能力を表す量として見なす。そして、ＣＰＵ１１は、Ｔｍａｘに所定の定数Ｃｏｎｓｔを乗算し、乗算によって得られた値を、メモリシステム１の性能の性能レベルとする。定数Ｃｏｎｓｔは、１より若干大きい値（例えば１．２など）である。これにより、性能レベルは、ホスト２の処理能力に若干のマージンを加えた値に設定される。
【００３６】
なお、アクティブ制御状態での性能レベルの決定方法はこれに限定されない。例えば、ＣＰＵ１１は、Ｔｍａｘに所定の正の定数を加算して得られる値を性能レベルとして設定してもよい。または、ＣＰＵ１１は、リングバッファ１３１に記録された所定個の測定値に対し、微分、積分、２階微分、平均化、平滑化、などの任意の演算を行って、ホスト２の処理の能力に応じた性能レベルを演算してもよい。
【００３７】
アイドル制御状態は、性能が最大限に抑制された状態（モード）である。アイドル制御状態では、ＣＰＵ１１は、設定可能な範囲内の最小値を性能レベルのレベル値として設定する。即ち、メモリコントローラ１０は、アイドル制御状態では、メモリシステム１のデータ転送の性能を最低のレベルに制御する。
【００３８】
アイドル遷移状態は、アクティブ制御状態からアイドル制御状態に至る際の準備段階として用意された状態（モード）である。
【００３９】
なお、メモリコントローラ１０は、図３に示されるように、未制御状態からアクティブ制御状態またはアイドル制御状態に遷移することができる。また、メモリコントローラ１０は、アクティブ制御状態からアイドル遷移状態に遷移することができる。また、メモリコントローラ１０は、アイドル遷移状態からアクティブ制御状態またはアイドル制御状態に遷移することができる。また、メモリコントローラ１０は、アイドル制御状態からアクティブ制御状態に遷移することができる。また、メモリコントローラ１０は、アイドル制御状態から未制御状態に遷移することができる。各遷移の条件については後述する。
【００４０】
ＣＰＵ１１は、性能レベルを電力制御部１６に送信する。電力制御部１６は、データ転送の性能を、ＣＰＵ１１から受信した性能レベルに制御する。データ転送の性能を抑制するための方法としては、任意の方法が採用され得る。
【００４１】
例えば、電力制御部１６は、クロックコントローラ１５に、各電子部品に供給されるクロックの周波数の変更を指示する。電力制御部１６は、メモリコントローラ１０を動作させるクロックの周波数を変更してもよいし、ＮＡＮＤメモリ２０を動作させるクロックの周波数を変更してもよい。クロックの供給先の電子部品は、供給されるクロックの周波数が低下せしめられることで、動作速度が低下し、データ転送の性能が抑制される。他の条件が同一である場合においては、電子部品に供給されるクロックの周波数が小さいほど、データ転送の性能が抑制される。
【００４２】
別の例では、電力制御部１６は、ＮＡＮＤメモリ２０の並列動作数を変更する。図１の例に従えば、メモリコントローラ１０は、４つのチャネルを同時に制御することで、それぞれ異なるチャネルに接続された４つのメモリチップ２１を並列に動作させることができる。電力制御部１６は、同時に制御するチャネルの数を例えば４つから１〜３つに減らすことによって、並列にアクセスされるメモリチップ２１の数を減らすことができる。他の条件が同一である場合においては、並列にアクセスされるメモリチップ２１の数が減少すると、データ転送の性能が抑制される。
【００４３】
なお、並列動作数は、同時に制御されるチャネルの数に限定されない。電力制御部１６は、バンクインターリーブの実行／非実行を切り替えてもよい。バンクインターリーブによれば、それぞれ異なるチャネルに含まれる複数のメモリチップ２１によって１つのバンクが構成される。例えば、４つのメモリチップ２１ａ、２１ｅ、２１ｉ、２１ｍは、１つのバンクを構成し、４つのメモリチップ２１ｂ、２１ｆ、２１ｊ、２１ｎは、他のバンクを構成する。メモリコントローラ１０は、１つのバンクにアクセスしている最中に、他のバンクに対してデータまたはコマンドの送受信を行うことができる。このように、メモリコントローラ１０は、バンクインターリーブによって、同一のチャネルに属する複数のメモリチップ２１に並列にアクセスすることが可能である。電力制御部１６がバンクインターリーブを停止することによって、並列にアクセスされるメモリチップ２１の数が減少する。その結果、データ転送の性能が抑制される。
【００４４】
電力制御部１６は、例えば、性能レベルのとりうる値ごとにクロックの周波数と並列動作数とを規定したテーブルを記憶している。そのテーブルによれば、性能レベルが大きいほどデータ転送の性能が高くなるように、クロックの周波数と並列動作数とが規定されている。電力制御部１６は、性能レベルを受信すると、受信した性能レベルに対応したクロックの周波数と並列動作数とをテーブルから取得する。そして、電力制御部１６は、取得したクロックの周波数および並列動作数を設定する。
【００４５】
次に、図４〜図８を参照して、実施形態のメモリシステム１の動作を説明する。
【００４６】
図４は、起動時のメモリシステム１の動作の一例を示すフローチャートである。本図に示されるように、メモリシステム１が起動されると（Ｓ１０１）、ＣＰＵ１１は、未制御状態で性能制御を実行する（Ｓ１０２）。そして、起動直後における状態の設定動作が完了する。
【００４７】
図５は、未制御状態でのメモリシステム１の動作の一例を示すフローチャートである。本図に示されるように、未制御状態では、ＣＰＵ１１は、性能レベルとして最大値を設定する（Ｓ２０１）。性能レベルは、電力制御部１６に送信され、電力制御部１６は、データ転送の性能を性能レベルに制御する。即ち、電力制御部１６は、データ転送の性能を最大にする。例えば、電力制御部１６は、各電子部品に供給されるクロックの周波数を設定可能な範囲内の最大値に設定し、ＮＡＮＤメモリ２０の並列動作数を設定可能な範囲内の最大値に設定する。
【００４８】
続いて、ホストインタフェースコントローラ１２は、単位時間当たりのデータの転送量を測定する（Ｓ２０２）。なお、メモリシステム１が他の状態に遷移しない限り、Ｓ２０２の処理は、所定の時間間隔で繰り返される。
【００４９】
Ｓ２０２の処理の後、ホストインタフェースコントローラ１２は、転送量の測定値が閾値Ｔａを上回ったか否かを判定する（Ｓ２０３）。転送量の測定値が閾値Ｔａを上回った場合（Ｓ２０３、Ｙｅｓ）、ホストインタフェースコントローラ１２は、その測定値をリングバッファ１３１に記録する（Ｓ２０４）。
【００５０】
ＣＰＵ１１は、リングバッファ１３１に保持されている測定値の数（記録数）を監視している。ＣＰＵ１１は、測定値の記録数が閾値Ｎｔｈを上回ったか否かを判定する（Ｓ２０５）。ただし、閾値Ｎｔｈは、リングバッファ１３１が備える領域１３３の数（即ちＮ）より小さい値である。測定値の記録数が閾値Ｎｔｈを上回った場合（Ｓ２０５、Ｙｅｓ）、ＣＰＵ１１は、性能制御の状態を未制御状態からアクティブ制御状態に遷移させ（Ｓ２０６）、未制御状態での動作が終了する。
【００５１】
転送量の測定値が閾値Ｔａを上回っていない場合（Ｓ２０３、Ｎｏ）、ホストインタフェースコントローラ１２は、転送量の測定値が閾値Ｔｂを下回ったか否かを判定する（Ｓ２０７）。転送量の測定値が閾値Ｔｂを下回った場合（Ｓ２０７、Ｙｅｓ）、ホストインタフェースコントローラ１２は、カウント値１３２を１だけインクリメントする（Ｓ２０８）。
【００５２】
ＣＰＵ１１は、カウント値１３２を監視しており、カウント値１３２が閾値Ｃｔｈを上回ったか否かを判定する（Ｓ２０９）。カウント値１３２が閾値Ｃｔｈを上回った場合（Ｓ２０９、Ｙｅｓ）、ＣＰＵ１１は、カウント値１３２をゼロでリセットし（Ｓ２１０）、性能制御の状態を未制御状態からアイドル制御状態に遷移させ（Ｓ２１１）、未制御状態での動作が終了する。
【００５３】
転送量の測定値が閾値Ｔｂを下回っていない場合（Ｓ２０７、Ｎｏ）、ホストインタフェースコントローラ１２は、カウント値１３２をゼロでリセットする（Ｓ２１２）。
【００５４】
測定値の記録数が閾値Ｎｔｈを上回っていない場合（Ｓ２０５、Ｎｏ）、またはカウント値１３２が閾値Ｃｔｈを上回っていない場合（Ｓ２０９、Ｎｏ）、またはＳ２１２の処理の後、Ｓ２０２の処理が再び実行される。
【００５５】
なお、比較の処理（Ｓ２０３、Ｓ２０５、Ｓ２０７、Ｓ２０９）において、閾値と比較対象の量（転送量の測定値、測定値の記録数、またはカウント値）とが等しい場合の処理は、上記の説明に限定されない。例えば、Ｓ２０３の判定処理において、転送量の測定値が閾値Ｔａと等しい場合、メモリコントローラ１０は、Ｓ２０７の処理ではなくＳ２０４の処理を実行してもよい。また、Ｓ２０５の判定処理において、測定値の記録数が閾値Ｎｔｈと等しい場合、メモリコントローラ１０は、Ｓ２０２の処理ではなくＳ２０６の処理を実行してもよい。また、Ｓ２０７の判定処理において、転送量の測定値が閾値Ｔｂと等しい場合、メモリコントローラ１０は、Ｓ２１２の処理ではなくＳ２０８の処理を実行してもよい。また、Ｓ２０９の判定処理において、カウント値１３２が閾値Ｃｔｈと等しい場合、メモリコントローラ１０は、Ｓ２０２の処理ではなくＳ２１０の処理を実行してもよい。
【００５６】
このように、未制御状態では、メモリコントローラ１０は、転送量の測定値と閾値Ｔａとの比較に基づいてアクティブ制御状態に移行する。具体的には、メモリコントローラ１０は、測定値が閾値Ｔａを上回った場合、その測定値をリングバッファ１３１に記録し、リングバッファ１３１に記録された測定値の数が閾値Ｎｔｈを上回った場合、アクティブ制御状態に移行する。
【００５７】
また、未制御状態では、メモリコントローラ１０は、転送量の測定値と閾値Ｔｂとの比較に基づいてアイドル制御状態に移行する。具体的には、メモリコントローラ１０は、所定の回数（即ち所定の期間）、連続して得られたすべての測定値が閾値Ｔｂを下回った場合、アイドル制御状態に移行する。
【００５８】
図６は、アクティブ制御状態でのメモリシステム１の動作の一例を示すフローチャートである。本図に示されるように、アクティブ制御状態では、ＣＰＵ１１は、リングバッファ１３１に格納されている複数の測定値のうちの最大値（Ｔｍａｘ）を取得する（Ｓ３０１）。そして、ＣＰＵ１１は、Ｃｏｎｓｔ＊Ｔｍａｘを性能レベルとして設定する（Ｓ３０２）。ただし、Ｃｏｎｓｔは、１より大きい定数である。性能レベルは、電力制御部１６に送信され、電力制御部１６は、データ転送の性能を性能レベルに制御する。
【００５９】
続いて、ホストインタフェースコントローラ１２は、単位時間当たりのデータの転送量を測定する（Ｓ３０３）。なお、メモリシステム１が他の状態に遷移しない限り、Ｓ３０３の処理は、所定の時間間隔で繰り返される。
【００６０】
Ｓ３０３の処理の後、ホストインタフェースコントローラ１２は、転送量の測定値が閾値Ｔａを上回ったか否かを判定する（Ｓ３０４）。転送量の測定値が閾値Ｔａを上回った場合（Ｓ３０４、Ｙｅｓ）、ホストインタフェースコントローラ１２は、その測定値をリングバッファ１３１に記録する（Ｓ３０５）。そして、Ｓ３０１の処理が再び実行される。
【００６１】
転送量の測定値が閾値Ｔａを上回っていない場合（Ｓ３０４、Ｎｏ）、ホストインタフェースコントローラ１２は、ＣＰＵ１１に通知する。通知を受けたＣＰＵ１１は、性能制御の状態をアクティブ制御状態からアイドル遷移状態に遷移させ（Ｓ３０６）、アクティブ制御状態での動作が終了する。
【００６２】
なお、Ｓ３０４の判定処理において、転送量の測定値が閾値Ｔａと等しい場合、メモリコントローラ１０は、Ｓ３０６の処理ではなくＳ３０５の処理を実行してもよい。
【００６３】
このように、アクティブ制御状態では、メモリコントローラ１０は、転送量の測定値と閾値Ｔａとの比較に基づいてアイドル遷移状態に移行する。具体的には、メモリコントローラ１０は、転送量の測定値が閾値Ｔａを下回った場合、アイドル遷移状態に移行する。
【００６４】
図７は、アイドル遷移状態でのメモリシステム１の動作の一例を示すフローチャートである。本図に示されるように、アイドル遷移状態では、ホストインタフェースコントローラ１２は、単位時間当たりのデータの転送量を測定する（Ｓ４０１）。そして、ホストインタフェースコントローラ１２は、転送量の測定値が閾値Ｔａを上回ったか否かを判定する（Ｓ４０２）。転送量の測定値が閾値Ｔａを上回った場合（Ｓ４０２、Ｙｅｓ）、ホストインタフェースコントローラ１２は、ＣＰＵ１１に通知する。通知を受けたＣＰＵ１１は、性能制御の状態をアイドル遷移状態からアクティブ制御状態に遷移させ（Ｓ４０３）、アイドル遷移状態での動作が終了する。
【００６５】
転送量の測定値が閾値Ｔａを上回っていない場合（Ｓ４０２、Ｎｏ）、ホストインタフェースコントローラ１２は、転送量の測定値が閾値Ｔｂを下回ったか否かを判定する（Ｓ４０４）。転送量の測定値が閾値Ｔｂを下回った場合（Ｓ４０４、Ｙｅｓ）、ホストインタフェースコントローラ１２は、カウント値１３２を１だけインクリメントする（Ｓ４０５）。
【００６６】
ＣＰＵ１１は、カウント値１３２が閾値Ｃｔｈを上回ったか否かを判定する（Ｓ４０６）。カウント値１３２が閾値Ｃｔｈを上回った場合（Ｓ４０６、Ｙｅｓ）、ＣＰＵ１１は、カウント値１３２をゼロでリセットし（Ｓ４０７）、性能制御の状態をアイドル遷移制御状態からアイドル制御状態に遷移させ（Ｓ４０８）、アイドル遷移状態での動作が終了する。
【００６７】
転送量の測定値が閾値Ｔｂを下回っていない場合（Ｓ４０４、Ｎｏ）、ホストインタフェースコントローラ１２は、カウント値１３２をゼロでリセットする（Ｓ４０９）。Ｓ４０９の処理の後、またはカウント値１３２が閾値Ｃｔｈを上回っていない場合（Ｓ４０６、Ｎｏ）、Ｓ４０１の処理が再び実行される。
【００６８】
なお、Ｓ４０２の判定処理において、転送量の測定値が閾値Ｔａと等しい場合、メモリコントローラ１０は、Ｓ４０４の処理ではなくＳ４０３の処理を実行してもよい。また、Ｓ４０４の判定処理において、転送量の測定値が閾値Ｔｂと等しい場合、メモリコントローラ１０は、Ｓ４０９の処理ではなくＳ４０５の処理を実行してもよい。また、Ｓ４０６の判定処理において、カウント値１３２が閾値Ｃｔｈと等しい場合、メモリコントローラ１０は、Ｓ４０１の処理ではなくＳ４０７の処理を実行してもよい。
【００６９】
このように、アイドル遷移状態では、メモリコントローラ１０は、転送量の測定値と閾値Ｔａとの比較に基づいてアクティブ制御状態に移行する。具体的には、メモリコントローラ１０は、転送量の測定値が閾値Ｔａを上回った場合、アクティブ制御状態に移行する。
【００７０】
また、メモリコントローラ１０は、転送量の測定値と閾値Ｔｂとの比較に基づいてアイドル制御状態に移行する。具体的には、メモリコントローラ１０は、転送量の測定値が閾値Ｔｂを下回った場合、アイドル制御状態に移行する。
【００７１】
図８は、アイドル制御状態でのメモリシステム１の動作の一例を示すフローチャートである。本図に示されるように、アイドル制御状態では、ＣＰＵ１１は、性能レベルとして、設定可能な範囲内の最小値を設定する（Ｓ５０１）。性能レベルは、電力制御部１６に送信され、電力制御部１６は、データ転送の性能を性能レベルに制御する。
【００７２】
続いて、ホストインタフェースコントローラ１２は、単位時間当たりのデータの転送量を測定する（Ｓ５０２）。そして、ホストインタフェースコントローラ１２は、転送量の測定値が閾値Ｔａを上回ったか否かを判定する（Ｓ５０３）。転送量の測定値が閾値Ｔａを上回った場合（Ｓ５０３、Ｙｅｓ）、ホストインタフェースコントローラ１２は、その測定値をリングバッファ１３１に記録する（Ｓ５０４）。
【００７３】
ＣＰＵ１１は、測定値の記録数が閾値Ｎｔｈを上回ったか否かを判定する（Ｓ５０５）。測定値の記録数が閾値Ｎｔｈを上回った場合（Ｓ５０５、Ｙｅｓ）、ＣＰＵ１１は、性能制御の状態をアイドル制御状態からアクティブ制御状態に遷移させ（Ｓ５０６）、アイドル制御状態での動作が終了する。
【００７４】
転送量の測定値が閾値Ｔａを上回っていない場合（Ｓ５０３、Ｎｏ）、ホストインタフェースコントローラ１２は、転送量の測定値が閾値Ｔｂを上回ったか否かを判定する（Ｓ５０７）。転送量の測定値が閾値Ｔｂを上回った場合（Ｓ５０７、Ｙｅｓ）、ホストインタフェースコントローラ１２は、ＣＰＵ１１に通知する。通知を受けたＣＰＵ１１は、性能制御の状態をアイドル制御状態から未制御状態に遷移させ（Ｓ５０８）、アイドル制御状態での動作が終了する。
【００７５】
測定値の記録数が閾値Ｎｔｈを上回っていない場合（Ｓ５０５、Ｎｏ）、または転送量の測定値が閾値Ｔｂを上回っていない場合（Ｓ５０７、Ｎｏ）、Ｓ５０２の処理が再び実行される。
【００７６】
なお、Ｓ５０３の判定処理において、転送量の測定値が閾値Ｔａと等しい場合、メモリコントローラ１０は、Ｓ５０７の処理ではなくＳ５０４の処理を実行してもよい。また、Ｓ５０５の判定処理において、測定値の記録数が閾値Ｎｔｈと等しい場合、メモリコントローラ１０は、Ｓ５０２の処理ではなくＳ５０６の処理を実行してもよい。また、Ｓ５０７の判定処理において、転送量の測定値が閾値Ｔｂと等しい場合、メモリコントローラ１０は、Ｓ５０２の処理ではなくＳ５０８の処理を実行してもよい。
【００７７】
このように、アイドル制御状態では、メモリコントローラ１０は、少なくとも転送量の測定値と閾値Ｔａとの比較に基づいてアクティブ制御状態に移行する。具体的には、転送量の測定値が閾値Ｔａを上回り、かつ、リングバッファ１３１における測定値の記録数が閾値Ｎｔｈを上回っている場合に、メモリコントローラ１０は、アクティブ制御状態に移行する。
【００７８】
また、アイドル制御状態では、メモリコントローラ１０は、少なくとも転送量の測定値と閾値Ｔｂとの比較に基づいて未制御状態に移行する。具体的には、転送量の測定値が閾値Ｔｂを上回り、かつ、リングバッファ１３１における測定値の記録数が閾値Ｎｔｈを下回っている場合に、メモリコントローラ１０は、未制御状態に移行する。
【００７９】
図９は、性能レベルと測定値（即ち実際の転送量）との推移の一例を示す図である。本図の横軸は、起動からの経過時間を示している。起動直後からｔ１まではメモリシステム１は未制御状態にあり、メモリコントローラ１０は、最大の性能で動作することができる。ここでは、メモリコントローラ１０が最大の性能を発揮した場合においては、メモリコントローラ１０は、「１００」の転送量でデータ転送を実行することが可能であることとしている。即ち、起動直後からｔ１までは、性能レベルは「１００」で固定されている。
【００８０】
ｔ１においては、測定値の記録数が閾値Ｎｔｈに到達することで、メモリコントローラ１０がアクティブ制御状態に遷移する。そして、アクティブ制御状態に遷移後、ｔ２において、メモリコントローラ１０は、実際の転送量（ここでは「４０」）に対応した性能レベル（ここでは「６０」）に性能を抑制する。即ち、メモリコントローラ１０は、アクティブ制御状態において、ホスト２の処理能力よりも大きく、かつ自身の最大の性能よりも小さい性能で、データ転送を実行する。
【００８１】
ｔ２〜ｔ３においては、実際の転送量の増加に応じて、性能レベルが「９０」付近まで引き上げられている。
【００８２】
ｔ３の後、実際の転送量が減少している。しかしながら、アクティブ性能状態においては、リングバッファ１３１に格納されたＮ個の測定値のうちの最大値に依存して変動する。よって、時刻ｔ３において実際の転送量が減少してからＮ個の測定値の全てが書き換わるｔ４までの間、性能レベルは「９０」付近で一定となる。その後、性能レベルは「７５」付近まで減少する（ｔ５）。
【００８３】
ｔ６において実際の転送量がゼロになると、メモリシステム１がアイドル遷移状態に移行する。アイドル遷移状態においては、性能レベルはアイドル遷移状態に移行した際の値である「７５」付近から変更されない。よって、アイドル遷移状態において実際の転送量が急増した場合であっても、メモリコントローラ１０は、「７５」までの性能でデータ転送を実行することができる。
【００８４】
ｔ６において実際の転送量がゼロになった後、時刻ｔ７においてカウント値１３２がＣｔｈに至ると、メモリコントローラ１０は、アイドル制御状態に遷移する。ｔ７において、メモリコントローラ１０は、最小の性能レベル（ここでは２０）まで性能を抑制する。
【００８５】
以上述べたように、メモリコントローラ１０は、アクティブ制御状態において、ホスト２の転送能力に応じて性能レベルを演算し、自身のデータ転送の性能を性能レベルに制御する。
【００８６】
例えば、ホスト２の処理能力がメモリシステム１のデータ転送の能力より低い場合を考える。メモリコントローラ１０は上述の構成を備えているので、ホスト２は、メモリシステム１に対して最大の処理能力を発揮することができる。一方、メモリシステム１は、上述の構成により、ホスト２の処理能力に応じて自身の性能を抑制している。よって、メモリシステム１の消費電力は、メモリシステム１が最大の性能を発揮する場合に比べて低減される。つまり、メモリシステム１は、必要な性能を確保しつつ消費電力を低減することが可能であるので、利便性が高い。
【００８７】
また、メモリコントローラ１０は、上述の構成を備えていることから、アクティブ制御状態において、自身の最大の性能よりも小さく、かつ、ホスト２の処理能力よりも大きな性能で、データ転送を実行することができる。
【００８８】
よって、メモリシステム１は、必要な性能を確保しつつ消費電力を低減することが可能となる。
【００８９】
また、メモリコントローラ１０は、少なくとも転送量の測定値と閾値Ｔｂとの比較に基づいて、アクティブ制御状態からアイドル遷移状態を経由してアイドル制御状態に遷移する。メモリコントローラ１０は、アイドル制御状態では、自身の性能を最低のレベルに制御する。
【００９０】
よって、メモリシステム１は、実際の転送量が著しく減少した場合には、消費電力を最大限に抑制することができる。
【００９１】
また、メモリコントローラ１０は、少なくとも転送量の測定値と閾値Ｔａとの比較に基づいて、アイドル制御状態からアクティブ制御状態に遷移する。
【００９２】
よって、メモリシステム１は、実際の転送量が増加した場合には、アクティブ制御状態に復帰することが可能である。
【００９３】
なお、メモリコントローラ１０は、アクティブ制御状態からアイドル遷移状態を経由してアイドル制御状態に遷移する。アクティブ制御状態において転送量の測定値が閾値Ｔａを下回った場合に、メモリコントローラ１０は、アイドル遷移状態に遷移する。アイドル遷移状態において転送量の測定値が閾値Ｔａを上回った場合に、メモリコントローラ１０は、アクティブ制御状態に遷移する。アイドル遷移状態において転送量の測定値が継続して閾値Ｔｂを下回った場合に、メモリコントローラ１０は、アイドル制御状態に遷移する。
【００９４】
アイドル遷移状態が設けられていることによって、アクティブ制御状態とアイドル遷移状態との間で頻繁に状態が遷移することが防止される。
【００９５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９６】
１  メモリシステム、２  ホスト、１０  メモリコントローラ、１１  ＣＰＵ、１２  ホストインタフェースコントローラ、１３  ＲＡＭ、１４  ＮＡＮＤコントローラ、１５  クロックコントローラ、１６  電力制御部、２０  ＮＡＮＤメモリ、２１  メモリチップ、３０  電源回路、１３１  リングバッファ、１３２  カウント値。
【図１】
2019053522.tif 000003
【図２】
2019053522.tif 000004
【図３】
2019053522.tif 000005
【図４】
2019053522.tif 000006
【図５】
2019053522.tif 000007
【図６】
2019053522.tif 000008
【図７】
2019053522.tif 000009
【図８】
2019053522.tif 000010
【図９】
2019053522.tif 000011