(57)【要約】【課題】消費電力の制御精度を向上させ、許容される消費電力に基づいて半導体記憶装置の性能を十分に発揮させることができる半導体記憶装置、半導体記憶装置の制御方法および制御プログラムの提供を図る。【解決手段】複数のコマンドにより同時にアクセス可能な複数のメモリブロックMB,200,201,202,…を含むメモリアレイ２、および、前記複数のメモリブロックを制御するメモリコントローラ１を有する半導体記憶装置であって、前記メモリコントローラは、前記複数のコマンドに対する消費電力が予め格納された電力テーブル１０と、前記電力テーブルの出力を受け取って、実行中および次に実行するコマンドによる消費電力を計算する電力計算部１１と、前記電力計算部の出力を受け取って、前記複数のコマンドによる前記複数のメモリブロックのアクセスによる消費電力の合計が、予め定められた許容電力を超えないように制御するコマンド制御部１５と、を有する。【選択図】図６
2016212580.tif 000002
【特許請求の範囲】
【請求項１】
複数のコマンドにより同時にアクセス可能な複数のメモリブロックを含むメモリアレイ、および、前記複数のメモリブロックを制御するメモリコントローラを有する半導体記憶装置であって、
前記メモリコントローラは、
前記複数のコマンドに対する消費電力が予め格納された電力テーブルと、
前記電力テーブルの出力を受け取って、実行中および次に実行するコマンドによる消費電力を計算する電力計算部と、
前記電力計算部の出力を受け取って、前記複数のコマンドによる前記複数のメモリブロックのアクセスによる消費電力の合計が、予め定められた許容電力を超えないように制御するコマンド制御部と、を有する、
ことを特徴とする半導体記憶装置。
【請求項２】
前記電力テーブルは、
前記複数のコマンドにおける少なくとも１つのコマンドを、消費電力に基づいて少なくとも２つに分割された電力消費状態と、分割された前記電力消費状態の消費電力が格納されている、
ことを特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
前記電力消費状態は、
前記少なくとも１つのコマンドを実行するコマンド実行状態と、
前記少なくとも１つのコマンドによりデータを転送するデータ転送状態と、を含む、
ことを特徴とする請求項２に記載の半導体記憶装置。
【請求項４】
前記メモリアレイは、前記メモリブロックが設けられた複数のチャネルを有し、
前記メモリコントローラは、さらに、
前記複数のチャネルに対応し、それぞれの前記チャネルに設けられた前記メモリブロックが実行するコマンドを格納する複数のコマンドキューと、
それぞれの前記コマンドキューに格納されているコマンドを先行して読み取る先行読取部と、を有する、
ことを特徴とする請求項１乃至請求項３のいずれか１項に記載の半導体記憶装置。
【請求項５】
前記メモリコントローラは、さらに、
前記複数のコマンドに対する優先度が予め格納された優先度テーブルを有する、
ことを特徴とする請求項１乃至請求項４のいずれか１項に記載の半導体記憶装置。
【請求項６】
同時にアクセス可能な複数のメモリブロックを有する半導体記憶装置の制御方法であって、
前記複数のメモリブロックに対する少なくとも１つのコマンドを、消費電力に基づいて少なくとも２つの電力消費状態に分割し、
前記複数のメモリブロックに対するアクセスを、分割された前記電力消費状態に基づいて制御する、
ことを特徴とする半導体記憶装置の制御方法。
【請求項７】
前記複数のメモリブロックに対するアクセスの制御は、
実行中および次に実行するコマンドによる消費電力を計算し、
計算された前記実行中および次に実行するコマンドによる消費電力を受け取って、前記複数のコマンドによる前記複数のメモリブロックのアクセスによる消費電力の合計が、予め定められた許容電力を超えないように制御する、
ことを特徴とする請求項６に記載の半導体記憶装置の制御方法。
【請求項８】
同時にアクセス可能な複数のメモリブロックと、前記複数のメモリブロックを制御する演算処理装置有する半導体記憶装置の制御プログラムであって、
前記演算処理装置に、
前記複数のメモリブロックに対する少なくとも１つのコマンドを、消費電力に基づいて少なくとも２つの電力消費状態に分割する手順と、
前記複数のメモリブロックに対するアクセスを、分割された前記電力消費状態に基づいて制御する手順と、を実行させる。
ことを特徴とする半導体記憶装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で言及する実施例は、半導体記憶装置、半導体記憶装置の制御方法および制御プログラムに関する。
【背景技術】
【０００２】
近年、ＮＡＮＤフラッシュデバイスを複数搭載したソリッドステートドライブ(ＳＳＤ：Solid State Drive、フラッシュＳＳＤ)に代表される半導体記憶装置が実用化されている。
【０００３】
ＮＡＮＤフラッシュデバイスを複数搭載したＳＳＤは、シークタイムやサーチタイムが不要で衝撃にも強く、高速起動が可能なため、ハードディスクドライブ(ＨＤＤ：Hard Disk Drive)の代替としての利用が進められている。
【０００４】
このようなＳＳＤにおいて、複数のＮＡＮＤフラッシュデバイスで同時にコマンドを実行すると、消費電力が許容値を超えてしまうという課題がある。そこで、同時に動作するＮＡＮＤフラッシュデバイスの数を制限する等により、消費電力が許容値を超えないように制御している。
【０００５】
ところで、従来、消費電力が許容値を超えないようにした半導体記憶装置、半導体記憶装置の制御方法および制御プログラムとしては、様々なものが提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−０４９５８６号公報
【特許文献２】特開平１０−３２０５１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述したように、例えば、複数のＮＡＮＤフラッシュデバイスで同時にコマンドを実行すると、消費電力が許容値を超えてしまうため、同時に動作するＮＡＮＤフラッシュデバイスの数を制限して消費電力の制御を行っている。
【０００８】
しかしながら、同時に動作するＮＡＮＤフラッシュデバイスの数を制限するだけでは、例えば、電力に余裕があるにも関わらず、さらなるコマンドの実行が不可となる場合が生じることもある。
【０００９】
すなわち、デバイス数を制限するだけでは、半導体記憶装置(ＳＳＤ)の電力制御を高精度に行うことが難しく、例えば、半導体記憶装置の性能を、許容される消費電力に基づいて十分に発揮させることが困難となっている。
【課題を解決するための手段】
【００１０】
一実施形態によれば、複数のコマンドにより同時にアクセス可能な複数のメモリブロックを含むメモリアレイ、および、前記複数のメモリブロックを制御するメモリコントローラを有する半導体記憶装置が提供される。
【００１１】
前記メモリコントローラは、前記複数のコマンドに対する消費電力が予め格納された電力テーブルと、前記電力テーブルの出力を受け取って、実行中および次に実行するコマンドによる消費電力を計算する電力計算部と、コマンド制御部と、を有する。
【００１２】
前記コマンド制御部は、前記電力計算部の出力を受け取って、前記複数のコマンドによる前記複数のメモリブロックのアクセスによる消費電力の合計が、予め定められた許容電力を超えないように制御する。
【発明の効果】
【００１３】
開示の半導体記憶装置、半導体記憶装置の制御方法および制御プログラムは、消費電力の制御精度を向上させ、許容される消費電力に基づいて半導体記憶装置の性能を十分に発揮させることができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】図１は、半導体記憶装置の一例を模式的に示すブロック図である。
【図２】図２は、半導体記憶装置の一例における各動作と消費電力の時間変化の例を説明するための電力波形図である。
【図３】図３は、半導体記憶装置の動作の一例を説明するための図である。
【図４】図４は、本実施例の半導体記憶装置において、読み出しコマンドとプログラムコマンドを分割した場合における消費電力の時間変化の例を説明するための電力波形図である。
【図５】図５は、本実施例の半導体記憶装置の動作の一例を説明するための図である。
【図６】図６は、半導体記憶装置の第１実施例を示すブロック図である。
【図７】図７は、図６に示す第１実施例の半導体記憶装置における電力テーブルの一例を説明するための図である。
【図８】図８は、図６に示す第１実施例の半導体記憶装置における処理の一例を説明するためのフローチャートである。
【図９】図９は、半導体記憶装置の第２実施例を示すブロック図である。
【図１０】図１０は、図９に示す第２実施例の半導体記憶装置における優先度テーブルの一例を説明するための図である。
【図１１】図１１は、図９に示す第２実施例の半導体記憶装置における処理の一例を説明するためのフローチャートである。
【図１２】図１２は、半導体記憶装置の第３実施例を示すブロック図である。
【発明を実施するための形態】
【００１５】
まず、本実施例の半導体記憶装置、半導体記憶装置の制御方法および制御プログラムを詳述する前に、図１〜図３を参照して、半導体記憶装置の一例およびその問題点を説明する。
【００１６】
図１は、半導体記憶装置の一例を模式的に示すブロック図である。図１に示されるように、半導体記憶装置(ＳＳＤ)は、メモリコントローラ(ＮＡＮＤコントローラ)１およびメモリアレイ２を有する。
【００１７】
メモリアレイ２は、複数のメモリブロックＭＢを含み、メモリコントローラ１の複数のチャネルCh.0，Ch.1，Ch.2，…に対して、それぞれ複数のメモリブロックＭＢが設けられ、データバスを共有するようになっている。
【００１８】
例えば、チャネルCh.0には、複数のメモリブロック(ＭＢ)200，201，202，…が接続され、チャネルCh.1には、複数のメモリブロック210，211，212，…が接続され、そして、チャネルCh.2には、複数のメモリブロック220，221，222，…が接続されている。
【００１９】
一例として、各メモリブロックＭＢ(ＮＡＮＤフラッシュデバイス)は、６０００ブロックを含み、各ブロックは、２５６ページ分の容量を含み、そして、１ページ分のデータは、例えば、１６ｋバイトとされている。なお、チャネルの数および各メモリブロックＭＢの構成(容量)等は、仕様に基づいて様々な値に設定することができるのはいうまでもない。
【００２０】
ここで、メモリコントローラ１は、複数のチャネルCh.0，Ch.1，Ch.2，…を独立(並列)に動作させる、すなわち、ＮＡＮＤコマンド(読み出し(Read)，プログラム(Program)，消去(Erase))を同時に実行させることができる。なお、データ転送は、各チャネルCh.0，Ch.1，Ch.2，…において、接続された複数のメモリブロックにおけるいずれか１つが実行可能である。
【００２１】
図２は、半導体記憶装置の一例における各動作と消費電力の時間変化の例を説明するための電力波形図である。すなわち、図２は、例えば、１ページ分のデータに対して、読み出し処理(読み出しコマンド)，プログラム処理(プログラムコマンド)および消去処理(消去コマンド)を実行したときの電力波形を示す。
【００２２】
図２に示されるように、１ページ分のデータに対して、読み出し処理を実行する場合、最大で１００ｍＷの電力が消費され、プログラム処理を実行する場合、最大で１５０ｍＷの電力が消費され、そして、消去処理を実行する場合、２００ｍＷの電力が消費される。
【００２３】
なお、図２において、ステータス読み出し処理(ステータス読み出しコマンド)は、ＳＳＤ(ＮＡＮＤフラッシュメモリ)の状態を読み出すためのもので、４０ｍＷの電力が消費される。
【００２４】
すなわち、読み出し処理を実行する場合、消費電力は、１００ｍＷの期間が経過した後、８０ｍＷの期間があり、その後、読み出し処理が終了して０ｍＷとなる。また、プログラム処理を実行する場合、消費電力は、８０ｍＷの期間が経過した後、１５０ｍＷの期間があり、その後、プログラム処理が終了して０ｍＷとなる。
【００２５】
さらに、消去処理を実行する場合、消費電力は、２００ｍＷでほぼ一定の比較的長い期間を経過した後、消去処理が終了して０ｍＷとなる。また、ステータス読み出し処理を実行する場合、消費電力は、４０ｍＷでほぼ一定の比較的短い期間を経過した後、ステータス読み出し処理が終了して０ｍＷとなる。
【００２６】
図３は、半導体記憶装置の動作の一例を説明するための図であり、電力制限が４６０ｍＷの場合、すなわち、半導体記憶装置(ＳＳＤ)に許容される消費電力が４６０ｍＷの場合の動作の一例を説明するためのものである。
【００２７】
図２を参照して説明したように、各メモリブロック(例えば、チャネルCh.0のメモリブロック200〜202：＃０〜＃２)において、消費電力が最大となるのは、消去処理を実行するときの２００ｍＷである。
【００２８】
そのため、許容される消費電力が４６０ｍＷの場合、同時に処理できるメモリブロックの数は、全てのメモリブロックが消去処理を実行する場合を考慮して、２個(このときの消費電力は、２００ｍＷ×２＝４００ｍＷ)となる。
【００２９】
従って、図３に示されるように、同時に処理を行うのは、例えば、読み出し処理を行うメモリブロック＃０と消去処理を行うメモリブロック＃２の２個、或いは、書き込み処理を行うメモリブロック＃１と消去処理を行うメモリブロック＃２の２個となる。
【００３０】
このように、複数のメモリブロック(ＮＡＮＤフラッシュデバイス)で同時にコマンドを実行する場合、消費電力が許容値を超えないように、同時に動作するメモリブロックの数を制限して消費電力の制御を行うことになる。
【００３１】
しかしながら、同時に動作するメモリブロックの数を制限するだけでは、例えば、電力に余裕があるにも関わらず、さらなるコマンドの実行が不可となる場合が生じ得る。具体的に、図３において、例えば、時刻Ｔ１１およびＴ１４では、＃０と＃２の２個のメモリブロックが同時に動作するが、このときの消費電力の合計は、それぞれ３００ｍＷおよび２８０ｍＷとなる。
【００３２】
また、例えば、時刻Ｔ１２およびＴ１３では、＃１と＃２の２個のメモリブロックが同時に動作するが、このときの消費電力の合計は、それぞれ３５０ｍＷおよび２４０ｍＷとなる。
【００３３】
すなわち、メモリブロック(ＮＡＮＤフラッシュデバイス)の数を制限するだけでは、半導体記憶装置(ＳＳＤ)の電力制御を高精度に行うことが難しく、例えば、半導体記憶装置の性能を、許容される消費電力に基づいて十分に発揮させることが困難となっている。
【００３４】
以下、半導体記憶装置、半導体記憶装置の制御方法および制御プログラムの実施例を、添付図面を参照して詳述する。なお、本実施例は、例えば、同時にアクセス可能な複数のメモリブロックを有する半導体記憶装置に対して適用することができる。
【００３５】
なお、以下の記載では、半導体記憶装置として、ＮＡＮＤフラッシュＳＳＤを一例として説明するが、本実施例の適用は、ＮＡＮＤフラッシュＳＳＤやＳＳＤに限定されるものではない。
【００３６】
図４は、本実施例の半導体記憶装置において、読み出しコマンドとプログラムコマンドを分割した場合における消費電力の時間変化の例を説明するための電力波形図である。図４に示されるように、例えば、読み出しコマンド(読み出し処理)を実行する場合、１つの読み出しコマンドを、コマンド実行(状態)とデータ転送(状態)の２つの電力消費状態に分割する。
【００３７】
ここで、読み出しコマンドにおけるコマンド実行の消費電力は、所定のメモリセルをアクセスし、そのメモリセルに格納された１ページ分のデータをレジスタに読み出すのに要する電力であり、例えば、１００ｍＷである。また、読み出しコマンドにおけるデータ転送の消費電力は、レジスタに保持された１ページ分のデータを転送するのに要する電力であり、例えば、８０ｍＷである。
【００３８】
さらに、例えば、プログラムコマンド(プログラム処理)を実行する場合、例えば、１つのプログラムコマンドを、データ転送(状態)とコマンド実行(状態)の２つの電力消費状態に分割する。
【００３９】
ここで、プログラムコマンドにおけるデータ転送の消費電力は、プログラムする１ページ分のデータをレジスタに転送するのに要する電力であり、例えば、８０ｍＷである。また、プログラムコマンドにおけるコマンド実行の消費電力は、レジスタに保持された１ページ分のデータを所定のメモリセルにプログラムする(書き込む)のに要する電力であり、例えば、１５０ｍＷである。
【００４０】
なお、レジスタとしては、例えば、デュアルポートレジスタが適用され、例えば、読み出しコマンドまたはプログラムコマンドのコマンド実行と共に、データ転送を同時に実行できるようになっている。
【００４１】
このように、本実施例では、少なくとも１つのコマンドを、消費電力に基づいて少なくとも２つの電力消費状態に分割し、その分割された電力消費状態の消費電力により、メモリセルアレイ(メモリブロック)に対するアクセスを制御する。
【００４２】
上述した説明では、読み出しコマンドおよびプログラムコマンドを、それぞれコマンド実行およびデータ転送の２つの電力消費状態に分割しているが、分割数は２つに限定されず、さらに分割数を増加して、より一層消費電力の制御精度を向上させることもできる。
【００４３】
すなわち、本実施例によれば、分割された電力消費状態に基づいてアクセス制御を行うことで、消費電力の制御精度を向上させ、許容される消費電力を最大限に活用し、半導体記憶装置の性能を十分に発揮させることが可能となる。
【００４４】
図５は、本実施例の半導体記憶装置の動作の一例を説明するための図であり、電力制限が４６０ｍＷの場合、すなわち、半導体記憶装置(ＳＳＤ)に許容される消費電力が４６０ｍＷの場合の動作の一例を説明するためのものである。図５において、メモリブロック＃０〜＃３は、例えば、後述する図６のチャネルCh.0におけるメモリブロック200〜203：＃０〜＃３)に相当する。
【００４５】
図４を参照して説明したように、本実施例では、読み出しコマンドを、消費電力が１００ｍＷのコマンド実行と、８０ｍＷのデータ転送に分割し、また、プログラムコマンドを、消費電力が８０ｍＷのデータ転送と、１５０ｍＷのコマンド実行に分割する。
【００４６】
さらに、分割した複数の電力消費状態(データ転送，コマンド実行)に基づいて、例えば、消費電力の合計が、上限の４６０ｍＷを超えることなく近づけるように、すなわち、多くのコマンド(電力消費状態)を同時に実行できるように制御する。
【００４７】
具体的に、図５において、例えば、時刻Ｔ２１では、＃０，＃１および＃２の３個のメモリブロックが同時に動作し、このときの消費電力の合計は、３８０ｍＷとなる。すなわち、時刻Ｔ２１では、＃０における読み出しコマンドのコマンド実行(１００ｍＷ)，＃１におけるデータ転送(８０ｍＷ)および＃２における消去コマンドの実行(２００ｍＷ)が並列(同時)に行われる。
【００４８】
また、例えば、時刻Ｔ２２では、＃１，＃２および＃３の３個のメモリブロックが同時に動作し、このときの消費電力の合計は、４３０ｍＷとなる。すなわち、時刻Ｔ２２では、＃１におけるプログラムコマンドのコマンド実行(１５０ｍＷ)，＃２における消去コマンドの実行(２００ｍＷ)および＃３におけるデータ転送(８０ｍＷ)が並列に行われる。
【００４９】
さらに、例えば、時刻Ｔ２３およびＴ２４では、＃０〜＃３の４個のメモリブロックが同時に動作し、このときの消費電力の合計は、それぞれ４２０ｍＷおよび４６０ｍＷとなる。
【００５０】
すなわち、時刻Ｔ２３では、＃０における読み出しコマンドのコマンド実行(１００ｍＷ)，＃１におけるステータス読み出しコマンドの実行(４０ｍＷ)，＃２における消去コマンドの実行(２００ｍＷ)および＃３におけるデータ転送(８０ｍＷ)が並列に行われる。
【００５１】
そして、時刻Ｔ２４では、＃０におけるデータ転送(８０ｍＷ)，＃１におけるデータ転送(８０ｍＷ)，＃２における消去コマンドの実行(２００ｍＷ)および＃３における読み出しコマンドのコマンド実行(１００ｍＷ)が並列に行われる。
【００５２】
このように、図５と、前述した図３の比較から明らかなように、本実施例によれば、消費電力の制御精度を向上させることができ、許容される消費電力に基づいて半導体記憶装置の性能を十分に発揮させることが可能となる。
【００５３】
図６は、半導体記憶装置の第１実施例を示すブロック図である。図６に示されるように、半導体記憶装置(ＳＳＤ)は、メモリコントローラ(ＮＡＮＤコントローラ)１およびメモリアレイ２を有し、例えば、上位のＣＰＵ３とバス(例えば、ＰＣＩ Express)を介して接続される。
【００５４】
メモリアレイ２は、複数のメモリブロックＭＢを含み、メモリコントローラ１の複数のチャネルCh.0，Ch.1，Ch.2，…に対して、それぞれ複数のメモリブロックＭＢが設けられ、データバスを共有するようになっている。
【００５５】
例えば、チャネルCh.0には、複数のメモリブロック(ＭＢ)200，201，202，203，…が接続され、チャネルCh.1には、複数のメモリブロック210，211，212，213，…が接続されている。
【００５６】
ここで、図１を参照して説明したように、チャネルの数および各メモリブロックＭＢの構成等は、仕様に基づいて様々な値に設定することができる。また、メモリコントローラ１は、複数のチャネルCh.0，Ch.1，Ch.2，…を独立(並列)に動作させることができる。なお、データ転送は、各チャネルCh.0，Ch.1，Ch.2，…において、接続された複数のメモリブロックにおけるいずれか１つが実行可能である。
【００５７】
メモリコントローラ１は、電力テーブル１０、電力計算部１１、複数のチャネルCh.0，Ch.1，Ch.2，…のそれぞれに対して設けられたコマンドキュー130，131，132，…および先行読取部140，141，142，…、ＰＣＩｅ制御部１２並びにコマンド制御部１５を含む。
【００５８】
電力テーブル１０は、各コマンドに対する消費電力、或いは、各コマンドの電力消費状態(例えば、コマンド実行およびデータ転送)に対する消費電力を予め保持する。電力計算部１１は、例えば、実行中のコマンド(電力消費状態)と、次に実行されるコマンド(電力消費状態)の合計電力を計算する。
【００５９】
コマンドキュー130，131，132，…は、それぞれのチャネルCh.0，Ch.1，Ch.2，…に対するコマンドを格納し、先行読取部140，141，142，…は、対応するコマンドキュー130，131，132，…に格納されている次のコマンドを先行して読み取る。
【００６０】
コマンド制御部１５は、電力計算部１１から出力される電力計算結果に基づき、それぞれのチャネルCh.0，Ch.1，Ch.2，…に対して、コマンドキュー130，131，132，…の中から次に実行するコマンド(電力消費状態)を選択して実行する。なお、ＰＣＩｅ制御部１２は、例えば、メモリコントローラ１を、ＰＣＩ Expressを介してＣＰＵ３に接続するためのものである。
【００６１】
図７は、図６に示す第１実施例の半導体記憶装置における電力テーブルの一例を説明するための図であり、電力テーブル１０に予め保持される各コマンド(電力消費状態)と消費電力の関係を示すものである。
【００６２】
図７に示されるように、電力テーブル１０には、例えば、図４および図５を参照して説明した各コマンド(電力消費状態)と消費電力の関係が保持されている。具体的に、例えば、メモリセルの１ページ分のデータをレジスタに読み出す読み出しコマンドにおけるコマンド実行(ページ読み出し)の消費電力は、１００ｍＷとされている。
【００６３】
また、レジスタに保持された１ページ分のデータをメモリセルにプログラムするプログラムコマンドにおけるコマンド実行(ページプログラム)の消費電力は、１５０ｍＷとされている。
【００６４】
さらに、消去コマンドの実行(ブロック消去)の消費電力は、２００ｍＷとされ、また、ステータス読み出しコマンドの実行の消費電力は、４０ｍＷとされている。そして、読み出しコマンドにおけるデータ転送およびプログラムコマンドにおけるデータ転送の消費電力は、両方とも８０ｍＷとされている。
【００６５】
図８は、図６に示す第１実施例の半導体記憶装置における処理の一例を説明するためのフローチャートである。図８に示されるように、処理(消費電力の制御処理)を開始すると、ステップＳＴ１１において、『Ｐ』を、実行中のコマンド(電力消費状態)の消費電力の合計値として計算し、ステップＳＴ１２に進む。
【００６６】
ステップＳＴ１２では、『ｐ』を、次に実行するコマンド(電力消費状態：コマンドまたはデータ転送)の消費電力の合計値として計算し、ステップＳＴ１３に進み、『Ｐ＋ｐ』が電力許容値(許容される消費電力、上限)を超えているかどうかを判定する。
【００６７】
ステップＳＴ１３において、『Ｐ＋ｐ』が電力許容値を超えていないと判定すると、ステップＳＴ１４に進んで、コマンドを実行し、『Ｐ』を『Ｐ＋ｐ』として、実行中コマンドの消費電力の更新を行って、ステップＳＴ１２に戻り、同様の処理を繰り返す。
【００６８】
すなわち、『Ｐ＋ｐ≦電力許容値』ならば、実行中のコマンドと共に、次に実行するコマンドまたはデータ転送をそのまま実行し、ステップＳＴ１２に戻って、さらに、次に実行するコマンドまたはデータ転送に対して同様の処理を行う。
【００６９】
一方、ステップＳＴ１３において、『Ｐ＋ｐ』が電力許容値を超えていると判定するとステップＳＴ１５に進み、他に実行可能なコマンドまたはデータ転送(電力消費状態)があるかどうかを判定する。
【００７０】
ステップＳＴ１５において、他に実行可能なコマンドまたはデータ転送があると判定すると、ステップＳＴ１２に戻って、その実行可能なコマンドまたはデータ転送に対して、同様の処理を繰り返す。
【００７１】
また、ステップＳＴ１５において、他に実行可能なコマンドまたはデータ転送がないと判定すると、ステップＳＴ１６に進んで、実行中のコマンドまたはデータ転送のうち１つが完了するのを待ち、その後、ステップＳＴ１２に戻り、同様の処理を繰り返す。
【００７２】
すなわち、ステップＳＴ１３で『Ｐ＋ｐ＞電力許容値』と判定すると、その次のコマンドまたはデータ転送が実行可能であれば合計電力を評価し、許容値以下であれば実行し、許容値以上であれば、さらにその次のコマンドまたはデータ転送について評価する。
【００７３】
なお、ステップＳＴ１６において、実行中のコマンドまたはデータ転送のうち１つが完了するのを待つが、その処理が完了した場合には、『Ｐ』から完了した処理に要した消費電力を減算してステップＳＴ１２に戻ることになる。
【００７４】
以上において、図８に示す処理(半導体記憶装置の制御プログラム)は、例えば、メモリコントローラ１におけるコマンド制御部１５により実行されるが、例えば、上位のＣＰＵ３により実行することも可能である。
【００７５】
すなわち、半導体記憶装置(ＳＳＤ)に設けられた演算処理装置(１５)が自身の制御プログラムを実行することもできるが、例えば、ＳＳＤが設けられたシステムのＣＰＵ(命令を発行するＣＰＵ)３が制御プログラムを実行して、ＳＳＤを制御することもできる。
【００７６】
図９は、半導体記憶装置の第２実施例を示すブロック図である。図９と、前述した図６の比較から明らかなように、本第２実施例の半導体記憶装置では、第１実施例の半導体記憶装置ｎおメモリコントローラに対して、優先度テーブル１６が追加されている。
【００７７】
すなわち、第２実施例の半導体記憶装置において、メモリコントローラ１は、優先度テーブル１６を含み、実行可能なコマンドが複数ある場合、優先度の高いコマンドを先に実行するようになっている。
【００７８】
ここで、優先度テーブル１６におけるコマンド(電力消費状態)と優先度(優先順位)の関係は、例えば、システムの仕様等に基づいて予め設定しておくことができるが、例えば、処理状況に応じて、動的に優先度を変化させることも可能である。
【００７９】
図１０は、図９に示す第２実施例の半導体記憶装置における優先度テーブルの一例を説明するための図であり、優先度テーブル１６に予め保持される各コマンドと優先度の関係を示すものである。なお、優先度は、数が小さい方が、優先順位が高いものとする。
【００８０】
図１０に示されるように、優先度テーブル１６には、図７を参照して説明した電力テーブル１０と同様の項目(各コマンド、電力消費状態)と優先度の関係が保持されている。具体的に、例えば、メモリセルの１ページ分のデータをレジスタに読み出す読み出しコマンドにおけるコマンド実行(ページ読み出し)の優先度は、『２』とされている。
【００８１】
また、レジスタに保持された１ページ分のデータをメモリセルにプログラムするプログラムコマンドにおけるコマンド実行(ページプログラム)の優先度は、『５』とされている。
【００８２】
さらに、消去コマンドの実行(ブロック消去)の優先度は、『６』とされ、また、ステータス読み出しコマンドの実行の優先度は、『１』とされている。そして、読み出しコマンドにおけるデータ転送の優先度は、『３』とされ、プログラムコマンドにおけるデータ転送の優先度は、『４』とされている。
【００８３】
なお、図１０に示す各コマンド(電力消費状態)と優先度の関係は、単なる一例であり、様々なものが考えられる。また、各コマンドと優先度の関係は、動的に変化させることも可能なのは、上述した通りである。
【００８４】
図１１は、図９に示す第２実施例の半導体記憶装置における処理の一例を説明するためのフローチャートである。図１１に示されるように、処理(消費電力の制御処理)を開始すると、ステップＳＴ２１において、『Ｐ』を，消費電力の合計値、『Ｒ』を，優先度の最低値より小さい値(例えば、『７』)、そして、『Ｃ』を，コマンドなしとして、ステップＳＴ２２に進む。
【００８５】
ステップＳＴ２２では、『ｃ』を，次に実行するコマンド(電力消費状態：コマンドまたはデータ転送)、『ｐ』を，ｃの消費電力、そして、『ｒ』を，ｃの優先度として、ステップＳＴ２３に進む。
【００８６】
ステップＳＴ２３では、『Ｐ＋ｐ』が電力許容値を超えているかどうかを判定し、『Ｐ＋ｐ』が電力許容値を超えていると判定すると、ステップＳＴ２４に進む。また、ステップＳＴ２３において、『Ｐ＋ｐ』が電力許容値を超えていないと判定すると、ステップＳＴ２６に進んで、『Ｒ＜ｒ』が成立するかどうかを判定する。
【００８７】
すなわち、ステップＳＴ２３において、『Ｐ＋ｐ≦電力許容値』と判定すると、ステップＳＴ２６に進み、ｃの優先度『ｒ』が『Ｒ』よりも大きい(優先順位が低い)かどうかを判定する。
【００８８】
ステップＳＴ２６において、『Ｒ＜ｒ』が成立すると判定すると、『Ｃ』を『ｃ』とし、『Ｒ』を『ｒ』として、ステップＳＴ２４に進み、『Ｒ＜ｒ』が成立しないと判定すると、そのままステップＳＴ２４に進む。
【００８９】
すなわち、『Ｐ＋ｐ＞電力許容値』のとき、および、『Ｐ＋ｐ≦電力許容値』であるが『Ｒ≧ｒ』のときには、そのままステップＳＴ２４に進む。また、『Ｐ＋ｐ≦電力許容値』であるが『Ｒ＜ｒ』であるときには、『Ｃ』を『ｃ』とし，『Ｒ』を『ｒ』とした後、ステップＳＴ２４に進み、他に実行可能なコマンド(電力消費状態)があるかどうかを判定する。
【００９０】
ステップＳＴ２４において、他に実行可能なコマンドがあると判定すると、ステップＳＴ２２に戻って、その実行可能なコマンドに対して、同様の処理を繰り返す。また、ステップＳＴ２４において、実行可能なコマンドがないと判定すると、ステップＳＴ２５に進んで、Ｃがコマンドなしの場合は、第１実施例(ＳＴ１６)と同様に待ち、それ以外の場合はＣを実行し、ステップＳＴ２２に戻って、同様の処理を繰り返す。
【００９１】
このように、第２実施例の半導体記憶装置は、メモリコントローラ１に優先度テーブル１６を設け、優先度の高いコマンド(電力消費状態)の処理を優先的に行うことで、より一層、半導体記憶装置の性能を向上させることが可能になる。
【００９２】
図１２は、半導体記憶装置の第３実施例を示すブロック図である。図１２と、前述した図６の比較から明らかなように、本第３実施例の半導体記憶装置では、第１実施例の半導体記憶装置のメモリコントローラにおいて、コマンド制御部１５からＰＣＩｅ制御部１２に対して、信号線(通知線)１７が設けられている。
【００９３】
すなわち、第３実施例の半導体記憶装置において、ＣＰＵ３は、メモリコントローラ１のＰＣＩｅ制御部１２および通知線１７を介して、コマンド制御部１５から、電力許容値を超えたかどうかの通知信号を受け取るようになっている。
【００９４】
すなわち、コマンド制御部１５は、コマンドキュー130，131，132，…に格納されたコマンド(次のコマンド)を実行すると許容電力を超えることが分かった場合には、コマンドを発行した上位のＣＰＵ３に対して、その旨を通知する。
【００９５】
なお、通知を受け取ったシステムにおける上位のＣＰＵ(コマンドを発行したＣＰＵ)３は、半導体記憶装置(ＳＳＤ)の状態を認識して、実行中のタスク(コマンド)を他に切り替えるか、或いは、低電力状態に移行するといった制御を行う。
【００９６】
このように、第３実施例の半導体記憶装置によれば、例えば、電力許容値を超えるような場合には、コマンド実行を抑制して、許容電力範囲内の正常動作を行うことが可能になる。
【００９７】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではない。また、明細書のそのような記載は、発明の利点および欠点を示すものでもない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【００９８】
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
（付記１）
複数のコマンドにより同時にアクセス可能な複数のメモリブロックを含むメモリアレイ、および、前記複数のメモリブロックを制御するメモリコントローラを有する半導体記憶装置であって、
前記メモリコントローラは、
前記複数のコマンドに対する消費電力が予め格納された電力テーブルと、
前記電力テーブルの出力を受け取って、実行中および次に実行するコマンドによる消費電力を計算する電力計算部と、
前記電力計算部の出力を受け取って、前記複数のコマンドによる前記複数のメモリブロックのアクセスによる消費電力の合計が、予め定められた許容電力を超えないように制御するコマンド制御部と、を有する、
ことを特徴とする半導体記憶装置。
【００９９】
（付記２）
前記電力テーブルは、
前記複数のコマンドにおける少なくとも１つのコマンドを、消費電力に基づいて少なくとも２つに分割された電力消費状態と、分割された前記電力消費状態の消費電力が格納されている、
ことを特徴とする付記１に記載の半導体記憶装置。
【０１００】
（付記３）
前記電力消費状態は、
前記少なくとも１つのコマンドを実行するコマンド実行状態と、
前記少なくとも１つのコマンドによりデータを転送するデータ転送状態と、を含む、
ことを特徴とする付記２に記載の半導体記憶装置。
【０１０１】
（付記４）
前記メモリアレイは、前記メモリブロックが設けられた複数のチャネルを有し、
前記メモリコントローラは、さらに、
前記複数のチャネルに対応し、それぞれの前記チャネルに設けられた前記メモリブロックが実行するコマンドを格納する複数のコマンドキューと、
それぞれの前記コマンドキューに格納されているコマンドを先行して読み取る先行読取部と、を有する、
ことを特徴とする付記１乃至付記３のいずれか１項に記載の半導体記憶装置。
【０１０２】
（付記５）
前記メモリコントローラは、さらに、
前記コマンドキューに格納されたコマンドを実行すると前記許容電力を超える場合、前記コマンドを発行した上位のＣＰＵに対して通知する通知線を有する、
ことを特徴とする付記４に記載の半導体記憶装置。
【０１０３】
（付記６）
前記メモリコントローラは、さらに、
前記複数のコマンドに対する優先度が予め格納された優先度テーブルを有する、
ことを特徴とする付記１乃至付記５のいずれか１項に記載の半導体記憶装置。
【０１０４】
（付記７）
前記優先度テーブルは、
前記複数のコマンドにおける少なくとも１つのコマンドを、消費電力に基づいて少なくとも２つに分割された電力消費状態と、分割された前記電力消費状態の優先度が格納されている、
ことを特徴とする付記６に記載の半導体記憶装置。
【０１０５】
（付記８）
前記電力消費状態は、
前記少なくとも１つのコマンドを実行するコマンド実行状態と、
前記少なくとも１つのコマンドによりデータを転送するデータ転送状態と、を含む、
ことを特徴とする付記７に記載の半導体記憶装置。
【０１０６】
（付記９）
前記メモリブロックは、ＮＡＮＤフラッシュデバイスであり、
前記半導体記憶装置は、ＮＡＮＤフラッシュソリッドステートドライブである、
ことを特徴とする付記１乃至付記８のいずれか１項に記載の半導体記憶装置。
【０１０７】
（付記１０）
同時にアクセス可能な複数のメモリブロックを有する半導体記憶装置の制御方法であって、
前記複数のメモリブロックに対する少なくとも１つのコマンドを、消費電力に基づいて少なくとも２つの電力消費状態に分割し、
前記複数のメモリブロックに対するアクセスを、分割された前記電力消費状態に基づいて制御する、
ことを特徴とする半導体記憶装置の制御方法。
【０１０８】
（付記１１）
前記複数のメモリブロックに対するアクセスの制御は、
実行中および次に実行するコマンドによる消費電力を計算し、
計算された前記実行中および次に実行するコマンドによる消費電力を受け取って、前記複数のコマンドによる前記複数のメモリブロックのアクセスによる消費電力の合計が、予め定められた許容電力を超えないように制御する、
ことを特徴とする付記１０に記載の半導体記憶装置の制御方法。
【０１０９】
（付記１２）
前記複数のメモリブロックに対するアクセスの制御は、
前記次に実行するコマンドを実行すると前記許容電力を超える場合、前記コマンドを発行した上位のＣＰＵに対して、前記次に実行するコマンドを実行すると前記許容電力を超える通知を行う、
ことを特徴とする付記１１に記載の半導体記憶装置の制御方法。
【０１１０】
（付記１３）
前記上位のＣＰＵは、前記通知を受け取って、前記次に実行するコマンドを他のコマンドに切り替える、
ことを特徴とする付記１２に記載の半導体記憶装置の制御方法。
【０１１１】
（付記１４）
前記複数のメモリブロックに対するアクセスの制御は、さらに、
実行中および次に実行するコマンドによる優先度を加えて制御する、
ことを特徴とする付記１０乃至付記１３のいずれか１項に記載の半導体記憶装置の制御方法。
【０１１２】
（付記１５）
同時にアクセス可能な複数のメモリブロックと、前記複数のメモリブロックを制御する演算処理装置有する半導体記憶装置の制御プログラムであって、
前記演算処理装置に、
前記複数のメモリブロックに対する少なくとも１つのコマンドを、消費電力に基づいて少なくとも２つの電力消費状態に分割する手順と、
前記複数のメモリブロックに対するアクセスを、分割された前記電力消費状態に基づいて制御する手順と、を実行させる。
ことを特徴とする半導体記憶装置の制御プログラム。
【符号の説明】
【０１１３】
１    メモリコントローラ(ＮＡＮＤコントローラ)
２    メモリアレイ
３    ＣＰＵ
１０    電力テーブル
１１    電力計算部
１２    ＰＣＩｅ制御部
１５    コマンド制御部
１６    優先度テーブル
１７    通知線
130，131，132，…    コマンドキュー
140，141，142，…    先行読取部
200，201，202，203，…， 210，211，212，213，…， 220，221，222，223，…，ＭＢ    メモリブロック(ＮＡＮＤフラッシュデバイス)
【図１】
2016212580.tif 000003
【図２】
2016212580.tif 000004
【図３】
2016212580.tif 000005
【図４】
2016212580.tif 000006
【図５】
2016212580.tif 000007
【図６】
2016212580.tif 000008
【図７】
2016212580.tif 000009
【図８】
2016212580.tif 000010
【図９】
2016212580.tif 000011
【図１０】
2016212580.tif 000012
【図１１】
2016212580.tif 000013
【図１２】
2016212580.tif 000014