(57)【要約】【課題】利便性の高いメモリシステムを得ること。【解決手段】メモリシステムは、ホストに接続可能である。メモリシステムは、不揮発性の第１メモリと、温度センサと、コントローラとを備える。コントローラは、コマンドの受信の状況と温度センサによる検出温度とを取得し、取得した状況および取得した検出温度に応じてメモリシステムの性能を抑制する。【選択図】図４
2019046321.tif 000002
【特許請求の範囲】
【請求項１】
ホストに接続可能なメモリシステムであって、
不揮発性の第１メモリと、
温度センサと、
コマンドの受信の状況と前記温度センサによる検出温度とを取得し、前記取得した状況および前記取得した検出温度に応じて前記メモリシステムの性能を抑制するコントローラと、
を備えるメモリシステム。
【請求項２】
前記ホストから受信し実行が完了していないコマンドが格納されるコマンドキューをさらに備え、
前記コントローラは、前記コマンドキューに格納されているコマンドの数に基づいて前記状況を取得する、
請求項１に記載のメモリシステム。
【請求項３】
前記状況は、前記コマンドキューに格納されているコマンドの数であり、
前記コントローラは、前記数が第１値である第１の場合、前記検出温度が前記第１の場合と同じであり前記数が前記第１値よりも大きい第２値である第２の場合に比べて、前記性能の抑制の度合いを小さくする、
請求項２に記載のメモリシステム。
【請求項４】
前記状況は、前記コマンドキューに格納されているコマンドの数であり、
前記コントローラは、前記検出温度が第１値である第１の場合、前記数が前記第１の場合と同じであり前記検出温度が前記第１値よりも小さい第２値である第２の場合に比べて、前記性能の抑制の度合いを大きくする、
請求項２に記載のメモリシステム。
【請求項５】
前記状況と、前記検出温度と、前記性能の抑制の度合いと、の関係が記録された第１情報が格納された第２メモリをさらに備え、
前記コントローラは、前記取得した状況を示す第１値と、前記取得した検出温度である第２値と、に対応する前記性能の抑制の度合いである第３値を前記第１情報に基づいて取得し、前記性能を前記第３値に応じた度合いに抑制する、
請求項１に記載のメモリシステム。
【請求項６】
前記第２メモリには、目標温度を示す第２情報がさらに格納され、
前記コントローラは、前記性能を前記第３値に応じた度合いに抑制した後に再び前記温度センサによる検出温度を取得し、前記再び取得した検出温度である第４値と前記目標温度とを比較し、前記第４値が前記目標温度より大きい場合、前記第１値と前記第２値とに前記第３値より大きい度合いを示す第５値が対応するように前記第１情報を更新する、
請求項５に記載のメモリシステム。
【請求項７】
前記第２メモリには、目標温度を示す第２情報がさらに格納され、
前記コントローラは、前記性能を前記第３値に応じた度合いに抑制した後に再び前記温度センサによる検出温度を取得し、前記再び取得した検出温度である第４値と前記目標温度とを比較し、前記第４値が前記目標温度より小さい場合、前記第１値と前記第２値とに前記第３値より小さい度合いを示す第５値が対応するように前記第１情報を更新する、
請求項５に記載のメモリシステム。
【請求項８】
前記状況は、前記コマンドキューに格納されている全てのコマンドのうちの、前記第１メモリへのアクセスを要するコマンドである第１コマンドの数である、
請求項２に記載のメモリシステム。
【請求項９】
前記ホストと前記第１メモリとの間のデータ転送のためのバッファをさらに備え、
前記コントローラは、前記コマンドキューにリードコマンドが格納されている場合、前記リードコマンドによって要求されたデータが前記バッファに格納されているか否かを判定し、前記データが前記バッファに格納されていない場合、前記リードコマンドは前記第１コマンドに該当すると判定する、
請求項８に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
従来、不揮発性メモリを備えるメモリシステムが知られている。メモリシステムは、自身の温度が高くなりすぎると、性能が低下したり破損したりする虞がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−５０８１８号公報
【特許文献２】米国特許第９１８３０００号明細書
【特許文献３】特開２０１７−２７５４１号公報
【特許文献４】米国特許出願公開第２０１７／０３０７７７号明細書
【特許文献５】特開２０１４−１６７８０９号公報
【特許文献６】米国特許出願公開第２０１４／１７３２６８号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一つの実施形態は、利便性の高いメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
一つの実施形態によれば、メモリシステムは、ホストに接続可能である。メモリシステムは、不揮発性の第１メモリと、温度センサと、コントローラとを備える。コントローラは、コマンドの受信の状況と温度センサによる検出温度とを取得し、取得した状況および取得した検出温度に応じてメモリシステムの性能を制御する。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１の実施形態のメモリシステムの構成を示す図である。
【図２】図２は、第１の実施形態のＲＡＭの構成を示す図である。
【図３】図３は、スロットリングレベル情報のデータ構造の一例を示す図である。
【図４】図４は、第１の実施形態のメモリシステムの動作を説明するフローチャートである。
【図５】図５は、第２の実施形態のＲＡＭの構成を示す図である。
【図６】図６は、第２の実施形態の目標温度情報のデータ構造の一例を示す図である。
【図７】図７は、第２の実施形態のメモリシステムの動作を説明するフローチャートである。
【図８】図８は、第３の実施形態のＲＡＭの構成を示す図である。
【図９】図９は、第３の実施形態の第２目標温度情報のデータ構造の一例を示す図である。
【図１０】図１０は、第３の実施形態のメモリシステムの動作を説明するフローチャートである。
【図１１】図１１は、第４の実施形態のＲＡＭの構成を示す図である。
【図１２】図１２は、第４の実施形態の、対象コマンドの数を監視する動作を示すフローチャートである。
【図１３】図１３は、第４の実施形態の、メモリシステムの性能を制御する動作を説明するフローチャートである。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００８】
（第１の実施形態）
図１は、第１の実施形態のメモリシステムの構成を示す図である。メモリシステム１は、ホスト２と接続可能である。メモリシステム１とホスト２との間の通信路の規格は、特定の規格に限定されない。一例では、ＳＡＳ（Serial  Attached  SCSI）が採用され得る。
【０００９】
ホスト２は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどが該当する。メモリシステム１は、ホスト２からアクセスコマンド（リードコマンドおよびライトコマンド）を受け付けることができる。各アクセスコマンドは、アクセス先を示す論理アドレスを含んでいる。論理アドレスは、メモリシステム１がホスト２に提供する論理アドレス空間内の位置を示す。
【００１０】
メモリシステム１は、メモリコントローラ１０と、ＮＡＮＤ型のフラッシュメモリ（ＮＡＮＤメモリ）２０と、電源回路３０と、温度センサ４０とを備えている。
【００１１】
ＮＡＮＤメモリ２０は、１以上のメモリチップ２１によって構成される。ここでは、ＮＡＮＤメモリ２０は、１以上のメモリチップ２１として、１６個のメモリチップ２１ａ〜２１ｐを備える。
【００１２】
ＮＡＮＤメモリ２０を構成する１６個のメモリチップ２１は、それぞれ、４つのチャネル（ｃｈ．０〜ｃｈ．３）の何れかを介してメモリコントローラ１０に接続されている。図１の例に従えば、メモリチップ２１ａ〜２１ｄは、チャネル０（ｃｈ．０）に接続されている。メモリチップ２１ｅ〜２１ｈは、チャネル１（ｃｈ．１）に接続されている。メモリチップ２１ｉ〜２１ｌは、チャネル２（ｃｈ．２）に接続されている。メモリチップ２１ｍ〜２１ｐは、チャネル３（ｃｈ．３）に接続されている。
【００１３】
各チャネルは、Ｉ／Ｏ信号線および制御信号線を含む、配線群によって構成される。Ｉ／Ｏ信号線は、例えば、データ、アドレス、およびコマンドを送受信するための信号線である。制御信号線は、例えば、ＷＥ（ライトイネーブル）信号、ＲＥ（リードイネーブル）信号、ＣＬＥ（コマンドラッチイネーブル）信号、ＡＬＥ（アドレスラッチイネーブル）信号、ＷＰ（ライトプロテクト）信号等を送受信するための信号線である。
【００１４】
メモリコントローラ１０は、各チャネルを個別に制御することができる。メモリコントローラ１０は、４つのチャネルを同時に制御することによって、それぞれ接続されたチャネルが異なる合計４つのメモリチップ２１を同時に動作させることができる。
【００１５】
なお、メモリシステム１に具備されるチャネルの数は、４つに限定されない。また、各チャネルに接続されているメモリチップ２１の数は、４つに限定されない。
【００１６】
各メモリチップ２１は、ＮＡＮＤメモリ２０の記憶領域を構成するメモリセルアレイを備えている。メモリセルアレイには、ホスト２から受信したデータおよびメモリシステム１の動作に必要となるデータ（ファームウェアプログラムおよび管理情報など）が格納される。
【００１７】
なお、ＮＡＮＤメモリ２０は、不揮発性の第１メモリの一例である。第１メモリとして、任意の種類の不揮発性メモリが採用可能である。例えば、第１メモリとして、ＮＯＲ型のフラッシュメモリ、ＭＲＡＭ（Magnetoresistive  Random  Access  Memory）、ＲｅＲＡＭ（Resistive  Random  Access  Memory）、またはＰＣＭ（Phase  Change  Random  Access  Memory）が採用可能である。
【００１８】
電源回路３０は、メモリコントローラ１０およびＮＡＮＤメモリ２０を駆動するための内部電源を生成し、生成した内部電源をメモリコントローラ１０およびＮＡＮＤメモリ２０のそれぞれに供給する。
【００１９】
温度センサ４０は、メモリシステム１の温度を検出し、検出値（検出温度）をメモリコントローラ１０に送る。
【００２０】
メモリシステム１には、メモリコントローラ１０、ＮＡＮＤメモリ２０、電源回路３０などの複数の電子部品が実装され、それぞれの温度は、メモリシステム１の動作状態やそれぞれの電子部品の負荷などによって異なる。よって、厳密には、メモリシステム１の温度は均一ではない。そこで、実施形態では、メモリシステム１の温度とは、温度センサ４０が設けられた位置で検出された温度と定義する。温度センサ４０は、一例では、ＮＡＮＤメモリ２０またはメモリコントローラ１０など、高温になりやすい電子部品の近傍に設けられる。温度センサ４０は、高温になりやすい電子部品の温度に応じた温度を、メモリシステム１の温度として検出する。
【００２１】
なお、メモリシステム１に設けられる温度センサ４０の数は、特定の数に限定されない。メモリシステム１に複数の温度センサ４０が設けられる場合には、メモリコントローラ１０は、それぞれ異なる温度センサ４０によって得られた複数の検出温度に対して所定の演算（例えば平均化、最大値抽出など）を実行し、演算によって得られた値を検出温度として使用してもよい。
【００２２】
メモリコントローラ１０は、内部に備える各構成要素の協働によって、メモリシステム１全体の制御を実行する。例えば、メモリコントローラ１０は、後述のデータバッファ１３２を介して、ホスト２とＮＡＮＤメモリ２０との間のデータ転送を実行する。
【００２３】
メモリコントローラ１０は、ＣＰＵ（Central  Processing  Unit）１１と、ホストインタフェースコントローラ（ホストＩ／Ｆコントローラ）１２と、ＲＡＭ１３と、ＮＡＮＤコントローラ１４と、クロックコントローラ１５と、備える。メモリコントローラ１０は、例えばＳｏＣ（System-On-Chip）として構成され得る。メモリコントローラ１０は、複数のチップによって構成されてもよい。
【００２４】
ＲＡＭ１３は、キャッシュ、バッファ、およびワーキングエリアとして機能するメモリである。例えば、ＲＡＭ１３は、ＤＲＡＭ（Dynamic  Random  Access  Memory）、ＳＲＡＭ（Static  Random  Access  Memory）、またはこれらの組み合わせによって構成される。ＲＡＭ１３は、メモリコントローラ１０の外部に配置されてもよい。
【００２５】
図２は、第１の実施形態のＲＡＭ１３の構成を示す図である。本図に示されるように、ＲＡＭ１３は、コマンドキュー１３１およびデータバッファ１３２を備える。
【００２６】
コマンドキュー１３１は、ホスト２から受信したアクセスコマンドが格納される。コマンドキュー１３１に格納されたアクセスコマンドは、順次実行される。そして、アクセスコマンドの実行が完了すると、そのアクセスコマンドは、コマンドキュー１３１から削除される。
【００２７】
データバッファ１３２は、ホスト２から受信したデータおよびＮＡＮＤメモリ２０から読み出されたデータが格納される。ホスト２から受信しデータバッファ１３２に格納されたデータは、所定のタイミングでＮＡＮＤメモリ２０に書き込まれる。また、ＮＡＮＤメモリ２０から読み出されデータバッファ１３２に格納されたデータは、所定のタイミングでホスト２に送信される。データバッファ１３２は、ホスト２から受信したデータが書き込まれる領域とＮＡＮＤメモリ２０から読み出されたデータが書き込まれる領域とに分割されていてもよい。また、データバッファ１３２は、キャッシュとして構成されてもよい。
【００２８】
また、ＲＡＭ１３には、スロットリングレベル情報１３３が格納される。スロットリングレベル情報１３３の詳細については後述する。
【００２９】
図１の説明に戻る。ホストインタフェースコントローラ１２は、ホスト２とメモリコントローラ１０との間の情報（コマンド、データ）の送受信を制御する。例えば、ホストインタフェースコントローラ１２は、ホスト２から受信したアクセスコマンドをコマンドキュー１３１に書き込む。また、ホストインタフェースコントローラ１２は、アクセスコマンドに応じた処理が完了すると、コマンドキュー１３１からそのアクセスコマンドを削除する。
【００３０】
また、ホストインタフェースコントローラ１２は、ホスト２から受信したデータをデータバッファ１３２に書き込む。また、ホストインタフェースコントローラ１２は、ＮＡＮＤメモリ２０から読み出されてデータバッファ１３２に格納されたデータをホスト２に送信する。
【００３１】
ＮＡＮＤコントローラ１４は、ＣＰＵ１１による制御下で、ＮＡＮＤメモリ２０に対するアクセスを実行する。例えば、ＮＡＮＤコントローラ１４は、データバッファ１３２に格納されているデータをＮＡＮＤメモリ２０に書き込んだり、ＮＡＮＤメモリ２０に格納されているデータを読み出して、読み出したデータをデータバッファ１３２に格納したりする。
【００３２】
クロックコントローラ１５は、メモリコントローラ１０の各構成要素およびＮＡＮＤメモリ２０を動作させるクロックを生成する。そして、クロックコントローラ１５は、生成したクロックを各構成要素およびＮＡＮＤメモリ２０に供給する。
【００３３】
ＣＰＵ１１は、予めメモリシステム１に内蔵されるプログラム（ファームウェアプログラム）に基づいて動作するプロセッサである。ファームウェアプログラムは、例えばＮＡＮＤメモリ２０の所定位置に格納されている。ＣＰＵ１１は、メモリシステム１のスタートアップ時に、ＮＡＮＤメモリ２０からＲＡＭ１３にファームウェアプログラムをロードする。そして、ＣＰＵ１１は、ＲＡＭ１３にロードされたファームウェアプログラムを実行する。ＣＰＵ１１は、ファームウェアプログラムに従って、メモリコントローラ１０の種々の機能を実現する。
【００３４】
ここで、実施形態の一つの特徴を説明する。実施形態によれば、メモリコントローラ１０は、メモリシステム１の温度が高くなりすぎることを防止するために、温度センサ４０から受信する検出温度と、ホスト２からのアクセスコマンドの受信の状況と、に応じて、メモリシステム１の性能の抑制を実行する。性能の抑制とは、メモリシステム１の性能を最大性能よりも低い度合いに制御することである。メモリシステム１の性能が抑制されると、メモリシステム１に具備される一部または全部の電子部品の消費電力が低下し、それらの電子部品での発熱量が減少する。メモリコントローラ１０は、メモリシステム１の性能を段階的に調整することによって、メモリシステム１の温度が高くなりすぎないようにする。
【００３５】
メモリコントローラ１０は、一例として、コマンドキュー１３１に格納されているコマンドの数を、アクセスコマンドの受信の状況を示す値として使用する。メモリコントローラ１０は、検出温度が同一である条件下では、コマンドキュー１３１に格納されているコマンドの数が少ないほど抑制の度合いを小さくする。
【００３６】
コマンドキュー１３１に格納されているコマンドの数が少ない場合、それらのコマンドの処理の際に発生する合計の熱量が小さい。また、それらのコマンドの処理が完了した後、メモリシステム１の温度が低下することが見込まれる。即ち、コマンドキュー１３１に格納されているコマンドの数が少ない場合、メモリシステム１の性能を抑制しなくても、温度の上昇を抑制することが可能である。よって、メモリコントローラ１０は、コマンドキュー１３１に格納されているコマンドの数が少ない場合、コマンドキュー１３１に格納されているコマンドの数が多い場合に比べてメモリシステム１の性能の抑制の度合いを小さくする。これにより、性能の抑制の弊害であるレイテンシの悪化を低減することができる。
【００３７】
コマンドキュー１３１に格納されているコマンドの数が多い場合、それらのコマンドの処理の際に発生する合計の熱量が大きく、また、それらのコマンドの処理にかかる時間が長い。従って、メモリシステム１の性能を抑制しない場合、メモリシステム１の温度が上昇する。メモリコントローラ１０は、コマンドキュー１３１に格納されているコマンドの数が多い場合、メモリシステム１の温度の上昇を抑制するために、メモリシステム１の性能の抑制の度合いを大きくする。
【００３８】
また、メモリコントローラ１０は、コマンドキュー１３１に格納されているコマンドの数が同一である条件下では、検出温度が高いほど抑制の度合いを大きくする。
【００３９】
なお、メモリシステム１の性能の抑制方法は、特定の方法に限定されない。一例では、メモリコントローラ１０は、クロックコントローラ１５に指示して、各電子部品に供給されるクロックの周波数を低下させる。メモリコントローラ１０は、メモリコントローラ１０を動作させるクロックの周波数を低下させてもよいし、ＮＡＮＤメモリ２０を動作させるクロックの周波数を低下させてもよい。クロックの供給先の電子部品は、供給されるクロックの周波数が低下せしめられることで、動作速度が低下し、メモリシステム１の性能が抑制される。電子部品に供給されるクロックの周波数が小さいほど、メモリシステム１の性能の抑制の度合いが大きくなる。
【００４０】
別の例では、メモリコントローラ１０は、ＮＡＮＤメモリ２０の並列動作数を少なくすることによって、メモリシステム１の性能を抑制する。図１の例に従えば、メモリコントローラ１０は、４つのチャネルを同時に制御することで、それぞれ異なるチャネルに接続された４つのメモリチップ２１を並列に動作させることができる。メモリコントローラ１０は、同時に制御するチャネルの数を例えば４つから１〜３つに減らすことによって、並列に動作せしめられるメモリチップ２１の数を減らすことができる。同時に制御されるチャネルの数が減少することによって、並列にアクセスされるメモリチップ２１の数が減少するので、メモリシステム１の性能が抑制される。ＮＡＮＤメモリ２０の並列動作数が少ないほど、メモリシステム１の性能の抑制の度合いが大きくなる。
【００４１】
なお、並列動作数は、同時に制御されるチャネルの数に限定されない。メモリコントローラ１０は、バンクインターリーブを停止することによって、メモリシステム１の性能を抑制してもよい。バンクインターリーブによれば、それぞれ異なるチャネルに含まれる複数のメモリチップ２１によって１つのバンクが構成される。例えば、４つのメモリチップ２１ａ、２１ｅ、２１ｉ、２１ｍは、１つのバンクを構成し、４つのメモリチップ２１ｂ、２１ｆ、２１ｊ、２１ｎは、他のバンクを構成する。メモリコントローラ１０は、１つのバンクにアクセスしている最中に、他のバンクに対してデータまたはコマンドの送受信を行うことができる。このように、メモリコントローラ１０は、バンクインターリーブによって、同一のチャネルに属する複数のメモリチップ２１を同時に動作させることが可能である。即ち、バンクインターリーブは、各バンクを並列動作要素とする並列動作の手法の１つである。メモリコントローラ１０がバンクインタリーブを停止することによって、同時に動作せしめられるメモリチップ２１の数が減少し、メモリシステム１の性能の抑制の度合いが大きくなる。
【００４２】
さらに別の例では、メモリコントローラ１０は、ＮＡＮＤメモリ２０に対して連続して複数のアクセスを行う場合に、アクセス間に待機時間を挿入する。待機時間が長くなるほど、メモリシステム１の性能の抑制の度合いが大きくなる。
【００４３】
さらに別の例では、メモリコントローラ１０は、複数のアクセスコマンドを連続して実行する場合に、アクセスコマンドの実行の間に待機時間を挿入する。例えば、メモリコントローラ１０は、１つのアクセスコマンドに応じた処理を実行完了してから、待機時間として設定された時間が経過した後に、そのアクセスコマンドに応じた応答をホスト２に送信する。待機時間が長くなるほど、メモリシステム１の性能の抑制の度合いが大きくなる。
【００４４】
メモリコントローラ１０は、１つの方法のみを用いてメモリシステム１の性能の抑制の度合いを変化させてもよいし、複数の方法の組み合わせによってメモリシステム１の性能の抑制の度合いを調整してもよい。例えば、メモリコントローラ１０は、まず、ＮＡＮＤメモリ２０の並列動作数を少なくすることによって、メモリシステム１の性能を抑制する。そして、メモリコントローラ１０は、ＮＡＮＤメモリ２０の並列動作数を少なくした後にさらに抑制の度合いを大きくする場合には、ＮＡＮＤメモリ２０またはメモリコントローラ１０に供給されるクロックの周波数を低下させる。
【００４５】
以降、メモリシステム１の性能の抑制の度合いを、スロットリングレベルと表記する。スロットリングレベルのレベル値が大きいほど、メモリシステム１の性能の抑制の度合いが大きい。また、以降、特に断りがない限り、コマンドの数は、コマンドキュー１３１に格納されているアクセスコマンドの数を意味することとする。
【００４６】
コマンドの数と、メモリシステム１の温度と、スロットリングレベルと、の関係は、スロットリングレベル情報１３３によって規定される。図３は、スロットリングレベル情報１３３のデータ構造の一例を示す図である。本図の例では、スロットリングレベル情報１３３は、テーブルの構造を有している。ＣＰＵ１１は、当該テーブルの複数の行のうちの一を、コマンドの数に基づいて選択する。また、ＣＰＵ１１は、当該テーブルの複数の列のうちの一を、温度センサ４０による検出温度に基づいて選択する。ＣＰＵ１１は、選択した行と選択した列との交点のセルに記録されたレベル値を、スロットリングレベルとして設定し、設定されたレベル値に応じた性能の抑制を実行する。
【００４７】
スロットリングレベル情報１３３は、検出温度が同じである条件下では、コマンドの数が少ない場合、コマンドの数が多い場合に比べて小さいレベル値を取得できるように、構成されている。図３に示される例に従えば、例えば検出温度が６０℃であり、コマンドの数が０または１である場合、対応するスロットリングレベルのレベル値は１である。また、検出温度が６０℃であり、コマンドの数が２または３である場合、対応するスロットリングレベルのレベル値は２である。
【００４８】
また、スロットリングレベル情報１３３は、コマンドの数が同じである条件下では、検出温度が高い場合、検出温度が低い場合に比べて大きいレベル値が取得できるように、構成されている。例えば、コマンドの数が２であり、検出温度が５０℃である場合、対応するスロットリングレベルのレベル値は１である。また、コマンドの数が２であり、検出温度が６０℃である場合、対応するスロットリングレベルのレベル値は２である。
【００４９】
続いて、第１の実施形態のメモリシステム１の動作を説明する。図４は、第１の実施形態のメモリシステム１の動作を説明するフローチャートである。ここでは、図４に示す各処理をＣＰＵ１１が実行することとして説明する。
【００５０】
まず、ＣＰＵ１１は、コマンドキュー１３１を参照することによって、コマンドキュー１３１内のコマンドの数を取得する（Ｓ１０１）。また、ＣＰＵ１１は、温度センサ４０による検出温度を取得する（Ｓ１０２）。そして、ＣＰＵ１１は、取得したコマンドの数と検出温度とを用いてスロットリングレベル情報１３３を検索し、スロットリングレベル情報１３３からレベル値を取得する（Ｓ１０３）。
【００５１】
続いて、ＣＰＵ１１は、取得したレベル値をスロットリングレベルの設定値として設定する（Ｓ１０４）。ＣＰＵ１１は、設定したレベル値に応じてメモリシステム１の性能を制御する。
【００５２】
例えば、メモリコントローラ１０は、レベル値毎に制御の内容を予め記憶する。制御の内容とは、性能の抑制に関する内容であり、例えば、クロックの周波数の設定値、並列動作数の設定値、ＮＡＮＤメモリ２０へのアクセス間に挿入される待機時間の設定値、ホスト２とのアクセス間に挿入される待機時間の設定値、またはこれらの組み合わせである。メモリコントローラ１０は、設定したレベル値に対応付けられた内容の制御を実行することで、メモリシステム１の性能を、設定したレベル値に応じた度合いに制御する。
【００５３】
ＣＰＵ１１は、Ｓ１０４の処理の後から（即ち設定されたレベル値に応じた制御を開始してから）、所定時間が経過したか否かを判定する（Ｓ１０５）。所定時間が経過していない場合（Ｓ１０５、Ｎｏ）、ＣＰＵ１１は、Ｓ１０５の処理を再び実行する。所定時間が経過した場合（Ｓ１０５、Ｙｅｓ）、ＣＰＵ１１は、Ｓ１０１の処理を再び実行する。
【００５４】
なお、以上の説明においては、コマンドの受信の状況を示す値として、コマンドキュー１３１に格納されているコマンドの数を用いた。コマンドの受信の状況を示す値は、これに限定されない。例えば、単位時間当たりにホスト２から受信したアクセスコマンドの数（換言するとアクセスコマンドの受信頻度）が、コマンドの受信の状況を示す値として使用され得る。別の例では、コマンドキュー１３１に格納されているコマンドの数の所定期間の移動平均が、コマンドの受信の状況を示す値として使用され得る。
【００５５】
また、スロットリングレベル情報１３３はテーブルの構造を有するとして説明した。スロットリングレベル情報１３３のデータ構造は、テーブルに限定されない。スロットリングレベル情報１３３は、コマンドの受信の状況と、メモリシステム１の温度と、スロットリングレベルと、の関係を規定する関数として構成されてもよい。
【００５６】
また、図４の動作は、ＣＰＵ１１によって実行される、として説明した。図４の動作のうちの一部または全部は、ハードウェア回路によって実行されてもよい。
【００５７】
また、図４の説明において、ＣＰＵ１１は、設定したレベル値に応じた制御を開始してからの経過時間に応じてＳ１０１の処理を再び実行した。ＣＰＵ１１は、設定したレベル値に応じた制御を開始してから処理したコマンドの数に応じてＳ１０１の処理を実行してもよい。
【００５８】
以上述べたように、第１の実施形態によれば、メモリコントローラ１０は、コマンドの受信の状況と温度センサ４０による検出温度とを取得し、取得した状況および取得した検出温度に応じてメモリシステム１の性能を制御する。
【００５９】
よって、例えば、実行すべきコマンドの数が少ない場合など、性能を強く抑制しなくてもメモリシステム１の温度が低下することが見込まれる場合には、メモリコントローラ１０は、メモリシステム１の性能の抑制の度合いを小さくすることができる。これにより、レイテンシをいたずらに悪化させることが防止されるので、メモリシステム１の利便性が向上する。
【００６０】
なお、第１の実施形態によれば、メモリコントローラ１０は、コマンドキュー１３１に格納されているコマンドの数をコマンドの受信の状況を示す値として使用する。よって、メモリコントローラ１０は、簡単なアルゴリズムでコマンドの受信の状況を示す数値を得ることができる。なお、前述したように、コマンドの受信の状況を示す値は、コマンドキュー１３１に格納されているコマンドの数に限定されない。
【００６１】
また、第１の実施形態によれば、メモリコントローラ１０は、コマンドキュー１３１に格納されているコマンドの数が第１値である第１の場合、温度センサ４０による検出温度が第１の場合と同じでありコマンドキュー１３１に格納されているコマンドの数が第１値よりも大きい第２値である第２の場合に比べて、メモリシステム１の性能の抑制の度合いを小さくする。これにより、レイテンシをいたずらに悪化させることが防止される。
【００６２】
また、第１の実施形態によれば、メモリコントローラ１０は、検出温度が第３値である第３の場合、コマンドキュー１３１に格納されているコマンドの数が第３の場合と同じであり検出温度が第３値よりも小さい第４値である第４の場合に比べて、メモリシステム１の性能の抑制の度合いを大きくする。これにより、メモリコントローラ１０は、メモリシステム１の温度が高いほど、温度の上昇を抑制するフィードバックを行うことが可能となる。
【００６３】
（第２の実施形態）
ここでは、第１の実施形態と異なる点について主に説明する。第２の実施形態では、メモリコントローラ１０は、目標温度を記憶している。メモリコントローラ１０は、レベル値に応じて性能の抑制を実行した結果、メモリシステム１の温度が目標温度まで低下しなかった場合には、スロットリングレベル情報１３３を更新することで、メモリシステム１の性能をより大きな度合いに抑制するようにする。即ち、メモリコントローラ１０は、スロットリングレベル情報１３３によって規定されている、コマンドの受信の状況と、メモリシステム１の温度と、スロットリングレベルと、の関係を、更新することができる。
【００６４】
図５は、第２の実施形態のＲＡＭ１３の構成を示す図である。本図に示されるように、ＲＡＭ１３は、コマンドキュー１３１およびデータバッファ１３２を備える。また、ＲＡＭ１３には、スロットリングレベル情報１３３および目標温度情報１３４が格納される。
【００６５】
図６は、第２の実施形態の目標温度情報１３４のデータ構造の一例を示す図である。本図に示される例では、目標温度情報１３４は、テーブルの構造を有している。ＣＰＵ１１は、当該テーブルの複数の行のうちの一を、コマンドの数によって選択する。また、ＣＰＵ１１は、当該テーブルの複数の列のうちの一を、温度センサ４０による検出温度に基づいて選択する。ＣＰＵ１１は、選択した行と選択した列との交点のセルに記録された数値を、目標温度として使用する。
【００６６】
図６に示される例に従えば、例えば検出温度が５０℃である場合には、目標温度として４５℃が使用される。検出温度が６０℃である場合には、目標温度として５５℃が使用される。検出温度が７０℃である場合には、目標温度として６５℃が使用される。検出温度が８０℃である場合には、目標温度として７５℃が使用される。なお、図６の例では、目標温度はコマンドの数に依存しない。目標温度が、コマンドの数に応じて変化するように目標温度情報１３４が構成されてもよい。
【００６７】
図７は、第２の実施形態のメモリシステム１の動作を説明するフローチャートである。
【００６８】
まず、ＣＰＵ１１は、コマンドキュー１３１を参照することによって、コマンドキュー１３１内のコマンドの数を取得する（Ｓ２０１）。また、ＣＰＵ１１は、温度センサ４０による検出温度を取得する（Ｓ２０２）。そして、ＣＰＵ１１は、取得したコマンドの数と検出温度とを用いてスロットリングレベル情報１３３を検索し、スロットリングレベル情報１３３からレベル値を取得する（Ｓ２０３）。また、ＣＰＵ１１は、取得したコマンドの数と検出温度とを用いて目標温度情報１３４を検索し、目標温度情報１３４から目標温度を取得する（Ｓ２０４）。
【００６９】
続いて、ＣＰＵ１１は、取得したレベル値をスロットリングレベルの設定値として設定する（Ｓ２０５）。ＣＰＵ１１は、設定したレベル値に応じてメモリシステム１の性能を制御する。
【００７０】
ＣＰＵ１１は、Ｓ２０５の処理の後から（即ち設定されたレベル値に応じた制御を開始してから）、所定時間が経過したか否かを判定する（Ｓ２０６）。所定時間が経過していない場合（Ｓ２０６、Ｎｏ）、ＣＰＵ１１は、Ｓ２０６の処理を再び実行する。
【００７１】
所定時間が経過した場合（Ｓ２０６、Ｙｅｓ）、ＣＰＵ１１は、温度センサ４０による検出温度を再び取得する（Ｓ２０７）。そして、ＣＰＵ１１は、検出温度が目標温度より低いか否かを判定する（Ｓ２０８）。検出温度が目標温度より低くない場合（Ｓ２０８、Ｎｏ）、ＣＰＵ１１は、スロットリングレベル情報１３３に定義されたＳ２０３の処理において検索に用いた条件に対応するレベル値を、１だけ大きな値で上書きする（Ｓ２０９）。
【００７２】
検出温度が目標温度より低い場合（Ｓ２０８、Ｙｅｓ）、またはＳ２０９の後、ＣＰＵ１１は、Ｓ２０１の処理を再び実行する。
【００７３】
例えば、スロットリングレベル情報１３３の検索時の条件が検出温度が７０℃でありコマンドの数が１である場合、図３の例に従えば、その条件に対応するレベル値は２である。また、同一の条件での目標温度は、図６の例に従えば、６５℃である。ＣＰＵ１１は、スロットリングレベルとして２を設定した後に、メモリシステム１の温度が６５℃を下回らなかった場合、Ｓ２０９において、例えば、同一の条件に対応するレベル値を、２から３に更新する。これにより、以降に、同一の条件に至った場合には、スロットリングレベルとして３が設定される。即ち、メモリシステム１の性能の抑制の度合いが大きくなる。
【００７４】
なお、以上の説明においては、ＣＰＵ１１は、スロットリングレベル情報１３３に定義されたレベル値を、現在の値よりも１だけ大きな値で更新した。ＣＰＵ１１は、現在の値よりも２以上大きな値で更新してもよい。
【００７５】
また、以上の説明においては、検出温度が目標温度と等しい場合、ＣＰＵ１１は、Ｓ２０９の処理に進んだ。検出温度が目標温度と等しい場合の処理はこれに限定されない。ＣＰＵ１１は、Ｓ２０１の処理に進んでもよい。
【００７６】
このように、第２の実施形態によれば、メモリコントローラ１０は、メモリシステム１の性能をスロットリングレベル情報１３３から取得した第１のレベル値に抑制した後、再び検出温度を取得する。メモリコントローラ１０は、再び取得した検出温度が目標温度より高い場合、同一条件が、第１のレベル値よりも大きい第２のレベル値に対応するように、スロットリングレベル情報１３３を更新する。
【００７７】
この構成により、メモリシステム１は、過去に設定されたレベル値とそのレベル値が設定された際の結果との関係に応じて、スロットリングレベルの設定方法を変えることができる。メモリシステム１の温度が高くなりすぎることをより確実に防止できるようになるので、メモリシステム１の利便性がさらに向上する。
【００７８】
（第３の実施形態）
第２の実施形態では、メモリコントローラ１０は、性能の抑制を開始後、検出温度が目標温度を下回ったか否かに応じてスロットリングレベル情報１３３を更新した。スロットリングレベル情報１３３の更新ルールはこれに限定されない。第３の実施形態では、第２の実施形態と異なる更新ルールの例を説明する。なお、ここでは、第２の実施形態と異なる点について重点的に説明し、それ以外の点については説明を省略する。
【００７９】
図８は、第３の実施形態のＲＡＭ１３の構成を示す図である。本図に示されるように、ＲＡＭ１３は、コマンドキュー１３１およびデータバッファ１３２を備える。また、ＲＡＭ１３には、スロットリングレベル情報１３３、目標温度情報１３４および第２目標温度情報１３５が格納される。
【００８０】
第３の実施形態では、メモリコントローラ１０は、性能の抑制を開始後、検出温度が目標温度範囲よりも高い場合、スロットリングレベル情報１３３に規定されたレベル値を、より大きな値で更新する。また、メモリコントローラ１０は、性能の抑制を開始後、検出温度が目標温度範囲よりも低い場合、スロットリングレベル情報１３３に規定されたレベル値を、より小さな値で更新する。
【００８１】
第２目標温度情報１３５は、目標温度範囲の下限値を定めた情報である。図９は、第２目標温度情報１３５のデータ構造の一例を示す図である。本図に示される例では、第２目標温度情報１３５は、テーブルの構造を有している。ＣＰＵ１１は、当該テーブルの複数の行のうちの一を、コマンドの数によって選択する。また、ＣＰＵ１１は、当該テーブルの複数の列のうちの一を、温度センサ４０による検出温度に基づいて選択する。ＣＰＵ１１は、選択した行と選択した列との交点のセルに記録された数値を、目標温度範囲の下限値（以降、目標温度下限値）として使用する。
【００８２】
図９に示される例に従えば、例えば検出温度が５０℃である場合には、目標温度下限値として４０℃が使用される。検出温度が６０℃である場合には、目標温度下限値として５０℃が使用される。検出温度が７０℃である場合には、目標温度下限値として６０℃が使用される。検出温度が８０℃である場合には、目標温度下限値として７０℃が使用される。なお、図９の例では、目標温度下限値はコマンドの数に依存しない。目標温度下限値が、コマンドの数に応じて変化するように第２目標温度情報１３５が構成されてもよい。
【００８３】
なお、ＣＰＵ１１は、目標温度情報１３４に記録された温度を、目標温度範囲の上限値（以降、目標温度上限値）として使用する。目標温度情報１３４は、例えば図６に示されるデータ構造を有している。同一条件下では、第２目標温度情報１３５から検索される目標温度下限値は、目標温度情報１３４から検索される目標温度上限値よりも小さくなるように、目標温度情報１３４および第２目標温度情報１３５が構成される。
【００８４】
図１０は、第３の実施形態のメモリシステム１の動作を説明するフローチャートである。
【００８５】
まず、ＣＰＵ１１は、コマンドキュー１３１を参照することによって、コマンドキュー１３１内のコマンドの数を取得する（Ｓ３０１）。また、ＣＰＵ１１は、温度センサ４０による検出温度を取得する（Ｓ３０２）。そして、ＣＰＵ１１は、取得したコマンドの数と検出温度とを用いてスロットリングレベル情報１３３を検索し、スロットリングレベル情報１３３からレベル値を取得する（Ｓ３０３）。また、ＣＰＵ１１は、取得したコマンドの数と検出温度とを用いて目標温度情報１３４および第２目標温度情報１３５を検索し、目標温度情報１３４から目標温度上限値を、第２目標温度情報１３５から目標温度下限値をそれぞれ取得する（Ｓ３０４）。
【００８６】
続いて、ＣＰＵ１１は、取得したレベル値をスロットリングレベルの設定値として設定する（Ｓ３０５）。ＣＰＵ１１は、設定したレベル値に応じてメモリシステム１の性能を制御する。
【００８７】
ＣＰＵ１１は、Ｓ３０５の処理の後から（即ち設定されたレベル値に応じた制御を開始してから）、所定時間が経過したか否かを判定する（Ｓ３０６）。所定時間が経過していない場合（Ｓ３０６、Ｎｏ）、ＣＰＵ１１は、Ｓ３０６の処理を再び実行する。
【００８８】
所定時間が経過した場合（Ｓ３０６、Ｙｅｓ）、ＣＰＵ１１は、温度センサ４０による検出温度を再び取得する（Ｓ３０７）。そして、ＣＰＵ１１は、検出温度が目標温度上限値より低いか否かを判定する（Ｓ３０８）。検出温度が目標温度上限値より低くない場合（Ｓ３０８、Ｎｏ）、ＣＰＵ１１は、Ｓ３０３の処理においてスロットリングレベル情報１３３の検索に用いた条件に対応するレベル値を、１だけ大きな値で上書きする（Ｓ３０９）。
【００８９】
検出温度が目標温度上限値より低い場合（Ｓ３０８、Ｙｅｓ）、ＣＰＵ１１は、検出温度が目標温度下限値より低いか否かを判定する（Ｓ３１０）。検出温度が目標温度下限値より低い場合（Ｓ３１０、Ｙｅｓ）、ＣＰＵ１１は、Ｓ３０３の処理においてスロットリングレベル情報１３３の検索に用いた条件に対応するレベル値を、１だけ小さな値で上書きする（Ｓ３１１）。
【００９０】
Ｓ３０９の後か、検出温度が目標温度下限値より低くない場合（Ｓ３１０、Ｎｏ）か、またはＳ３１１の後、ＣＰＵ１１は、Ｓ３０１の処理を再び実行する。
【００９１】
なお、以上の説明においては、ＣＰＵ１１は、スロットリングレベル情報１３３に定義されたレベル値を、１だけ加減した。レベル値の変更量は２以上であってもよい。
【００９２】
また、以上の説明においては、検出温度が目標温度上限値と等しい場合、ＣＰＵ１１は、Ｓ３０９の処理に進んだ。検出温度が目標温度上限値と等しい場合の処理はこれに限定されない。ＣＰＵ１１は、Ｓ３１０の処理に進んでもよい。
【００９３】
また、検出温度が目標温度下限値と等しい場合、ＣＰＵ１１は、Ｓ３０１の処理に進んだ。検出温度が目標温度下限値と等しい場合の処理はこれに限定されない。ＣＰＵ１１は、Ｓ３１１の処理に進んでもよい。
【００９４】
このように、第３の実施形態によれば、メモリコントローラ１０は、メモリシステム１の性能をスロットリングレベル情報１３３から取得した第１のレベル値に抑制した後、再び検出温度を取得する。メモリコントローラ１０は、再び取得した検出温度が目標温度範囲の下限値よりも低い場合、同一条件におけるスロットリングレベルが、第１のレベル値よりも小さい第２のレベル値に対応するように、スロットリングレベル情報１３３を更新する。
【００９５】
この構成により、メモリシステム１は、過去に設定されたレベル値とそのレベル値が設定された際の結果との関係に応じて、スロットリングレベルの設定方法を変えることができる。メモリシステム１の性能を必要以上に抑制することが防止されるので、メモリシステム１の利便性がさらに向上する。
【００９６】
（第４の実施形態）
ここでは、第１の実施形態と異なる点について主に説明する。
【００９７】
メモリセルアレイに対するアクセスは、ＮＡＮＤメモリ２０での発熱を引き起こす主たる要因である。そこで、第４の実施形態では、コマンドキュー１３１に格納されているコマンドのうち、メモリセルアレイへのアクセス即ちＮＡＮＤメモリ２０へのアクセスを要するコマンドを推定し、推定したコマンドの数を、コマンドの受信の状況を示す値として使用する。以降、ＮＡＮＤメモリ２０へのアクセスを要するコマンドとして推定されたコマンドを、対象コマンドと表記する。
【００９８】
図１１は、第４の実施形態のＲＡＭ１３の構成を示す図である。本図に示されるように、ＲＡＭ１３は、コマンドキュー１３１およびデータバッファ１３２を備える。また、ＲＡＭ１３には、スロットリングレベル情報１３３および対象コマンドの数１３６が格納される。
【００９９】
図１２は、第４の実施形態の対象コマンドの数を監視する動作を示すフローチャートである。ＣＰＵ１１は、コマンドキュー１３１に新たにコマンドが入力されたか否かを判定する（Ｓ４０１）。コマンドキュー１３１に新たにコマンドが入力された場合（Ｓ４０１、Ｙｅｓ）、ＣＰＵ１１は、そのコマンドは、ＮＡＮＤメモリ２０へのアクセスを要するコマンド（対象コマンド）に該当するか否かを判定する（Ｓ４０２）。
【０１００】
コマンドが対象コマンドに該当するか否かは、任意の方法で判定され得る。
【０１０１】
リードコマンドによって読み出し対象として指定されたデータがそのリードコマンドの実行時にデータバッファ１３２に格納されている場合、ＣＰＵ１１は、そのデータをデータバッファ１３２からホスト２に送ることができる。即ち、そのリードコマンドは、ＮＡＮＤメモリ２０へのアクセスを必要としないコマンドである。これに対し、リードコマンドによって読み出し対象として指定されたデータがそのリードコマンドの実行時にデータバッファ１３２に格納されていない場合、ＣＰＵ１１は、そのデータをＮＡＮＤメモリ２０から読み出す必要が生じる。即ち、そのリードコマンドは、対象コマンドに該当する。
【０１０２】
Ｓ４０２では、例えばＣＰＵ１１は、コマンドキュー１３１にリードコマンドが格納されている場合には、コマンドキュー１３１に格納されている各コマンドの実行の順番に基づいて、そのリードコマンドによって読み出し対象として指定されたデータがそのリードコマンドの実行時にデータバッファ１３２に格納されているか否かを判断する。そして、そのリードコマンドによって読み出し対象として指定されたデータがそのリードコマンドの実行時にデータバッファ１３２に格納されている場合、ＣＰＵ１１は、そのリードコマンドを対象コマンドと見なさない。そのリードコマンドによって読み出し対象として指定されたデータがそのリードコマンドの実行時にデータバッファ１３２に格納されていない場合、ＣＰＵ１１は、そのリードコマンドを対象コマンドとして見なす。
【０１０３】
なお、上に述べた対象コマンドの特定方法は、一例である。例えばＣＰＵ１１は、コマンドキュー１３１にリードコマンドが格納されている場合、そのリードコマンドによって読み出し対象として指定されたデータがＳ４０２の実行時において格納されているか否かに基づいて、そのリードコマンドが対象コマンドに該当するか否かを判定してもよい。
【０１０４】
コマンドキュー１３１に新たにコマンドが入力されたコマンドが対象コマンドに該当する場合（Ｓ４０２、Ｙｅｓ）、ＣＰＵ１１は、対象コマンドの数１３６をインクリメントする（Ｓ４０３）。ＣＰＵ１１は、対象コマンドの数１３６に１を加算し、加算によって得られた値でＲＡＭ１３内の対象コマンドの数１３６を更新する。
【０１０５】
コマンドキュー１３１に新たにコマンドが入力されたコマンドが対象コマンドに該当しない場合（Ｓ４０２、Ｎｏ）、ＣＰＵ１１は、Ｓ４０３をスキップする。
【０１０６】
コマンドキュー１３１に新たにコマンドが入力されていない場合（Ｓ４０１、Ｎｏ）、コマンドキュー１３１に新たにコマンドが入力されたコマンドが対象コマンドに該当しない場合（Ｓ４０２、Ｎｏ）、またはＳ４０３の後、ＣＰＵ１１は、対象コマンドの実行が完了したか否かを判定する（Ｓ４０４）。
【０１０７】
例えば、ＣＰＵ１１は、Ｓ４０２において対象コマンドとして特定したコマンドを、リストまたはフラグなどを用いて記憶する。そして、ＣＰＵ１１は、Ｓ４０４では、コマンドの実行の完了を検知した場合、そのコマンドが対象コマンドに該当するか否かを、リストまたはフラグなどに基づいて判定する。なお、対象コマンドの実行が完了したか否かの判定の方法はこれに限定されない。
【０１０８】
対象コマンドの実行が完了した場合（Ｓ４０４、Ｙｅｓ）、ＣＰＵ１１は、対象コマンドの数１３６をデクリメントする（Ｓ４０５）。ＣＰＵ１１は、対象コマンドの数１３６から１を減算し、減算によって得られた値でＲＡＭ１３内の対象コマンドの数１３６を更新する。
【０１０９】
対象コマンドの実行が完了していない場合（Ｓ４０４、Ｎｏ）、ＣＰＵ１１は、Ｓ４０５をスキップする。対象コマンドの実行が完了していない場合（Ｓ４０４、Ｎｏ）、またはＳ４０５の後、ＣＰＵ１１は、Ｓ４０１を再び実行する。
【０１１０】
このように、ＣＰＵ１１は、コマンドキュー１３１に格納されている対象コマンドの数を監視する。
【０１１１】
図１３は、第４の実施形態の、メモリシステム１の性能を制御する動作を説明するフローチャートである。
【０１１２】
まず、ＣＰＵ１１は、ＲＡＭ１３から対象コマンドの数１３６を取得する（Ｓ５０１）。また、ＣＰＵ１１は、温度センサ４０による検出温度を取得する（Ｓ５０２）。そして、ＣＰＵ１１は、取得した対象コマンドの数１３６と検出温度とを用いてスロットリングレベル情報１３３を検索し、スロットリングレベル情報１３３からレベル値を取得する（Ｓ５０３）。第４の実施形態においては、ＣＰＵ１１は、対象コマンドの数１３６に基づいてスロットリングレベル情報１３３の列を選択する。
【０１１３】
続いて、ＣＰＵ１１は、取得したレベル値をスロットリングレベルの設定値として設定する（Ｓ５０４）。ＣＰＵ１１は、設定したレベル値に応じてメモリシステム１の性能を制御する。ＣＰＵ１１は、Ｓ５０４の後から（即ち設定されたレベル値に応じた制御を開始してから）、所定時間が経過したか否かを判定する（Ｓ５０５）。所定時間が経過していない場合（Ｓ５０５、Ｎｏ）、ＣＰＵ１１は、Ｓ５０５の判定処理を再び実行する。所定時間が経過した場合（Ｓ５０５、Ｙｅｓ）、ＣＰＵ１１は、Ｓ５０１の処理を再び実行する。
【０１１４】
以上述べたように、第４の実施形態によれば、メモリコントローラ１０は、コマンドキュー１３１に格納されている全てのコマンドのうちの、ＮＡＮＤメモリ２０へのアクセスを要するコマンド（即ち対象コマンド）の数を、コマンドの受信の状況を示す値として使用する。これにより、メモリコントローラ１０は、ＮＡＮＤメモリ２０の発熱に影響しないコマンドを除外してスロットリングレベルを決定することができるので、必要以上にメモリシステム１の性能を抑制することを防止することができる。
【０１１５】
なお、一例では、メモリコントローラ１０は、リードコマンドによって読み出し対象として指定されたデータがデータバッファ１３２に格納されている場合、そのリードコマンドを対象コマンドと見なさない。また、メモリコントローラ１０は、リードコマンドによって読み出し対象として指定されたデータがデータバッファ１３２に格納されていない場合、そのリードコマンドを対象コマンドと見なす。よって、リードコマンドに関し、そのリードコマンドが対象コマンドに該当するか否かの判定が可能である。
【０１１６】
なお、ここでは、第１の実施形態のメモリシステム１に対して第４の実施形態を適用した例を説明した。第４の実施形態は、第２および第３の実施形態のメモリシステム１に対して適用され得る。
【０１１７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１１８】
１  メモリシステム、２  ホスト、１０  メモリコントローラ、１１  ＣＰＵ、１２  ホストインタフェースコントローラ、１３  ＲＡＭ、１４  ＮＡＮＤコントローラ、１５  クロックコントローラ、２０  ＮＡＮＤメモリ、２１  メモリチップ、３０  電源回路、４０  温度センサ、１３１  コマンドキュー、１３２  データバッファ、１３３  スロットリングレベル情報、１３４  目標温度情報、１３５  第２目標温度情報、１３６  対象コマンドの数。
【図１】
2019046321.tif 000003
【図２】
2019046321.tif 000004
【図３】
2019046321.tif 000005
【図４】
2019046321.tif 000006
【図５】
2019046321.tif 000007
【図６】
2019046321.tif 000008
【図７】
2019046321.tif 000009
【図８】
2019046321.tif 000010
【図９】
2019046321.tif 000011
【図１０】
2019046321.tif 000012
【図１１】
2019046321.tif 000013
【図１２】
2019046321.tif 000014
【図１３】
2019046321.tif 000015