(57)【要約】【課題】不揮発性メモリを有するシステムに対し電力を動的に割り当てるシステム及び方法を提供する。【解決手段】システムの電力バジェットマネージャーは、システムに得られる合計電力量が所定の電力レベル（例えば、低電力状態）より低いかどうか決定することができる。システムが低電力状態で動作する間に、電力バジェットマネージャーは、システムの種々のコンポーネント（例えば、プロセッサ及び不揮発性メモリ）間で電力を動的に割り当てることができる。【選択図】図４
2012069100.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ及び不揮発性メモリ（ＮＶＭ）を備えたシステムの電力を動的に管理するための方法において、
前記システムを低電力状態で動作する段階であって、前記システムは、外部充電装置から電力を受け取り、その受け取られた電力は、前記システムと前記外部充電装置との間のハンドシェーク段階中に所定の電力レベルを有するものである段階と、
前記ハンドシェーク段階を遂行する段階と、
前記プロセッサ及びＮＶＭが前記所定の電力レベルを越えずに集合的に動作するように前記プロセッサ及びＮＶＭの各々に電力バジェットを動的に割り当てる段階と、
を備えた方法。
【請求項２】
前記システムのバッテリは、前記システムが通常のモードで動作できるに充分な電力を前記システムに独立して与えることができない、請求項１に記載の方法。
【請求項３】
電力バジェットを動的に割り当てる前記段階は、
前記プロセッサに第１の電力バジェットを割り当てる段階、
前記ＮＶＭにアクセスするための要求を前記プロセッサから発生する段階、
前記プロセッサに第２の電力バジェットを割り当てる段階であって、その第２の電力バジェットは、前記第１の電力バジェットより低いものである段階、及び
前記プロセッサが前記第２の電力バジェットを越えないように、前記プロセッサをストールして、前記プロセッサによる電力消費を制限する段階、
を更に含む請求項１に記載の方法。
【請求項４】
要求を発生する前記段階は、一度にＮＶＭの利用可能な全てのダイのサブセットにアクセスするように前記要求を制限することを含み、そのサブセットは、そこに含まれるダイの数が、同時にアクセスできる全てのダイより少ない、請求項３に記載の方法。
【請求項５】
前記ストールする段階は、前記プロセッサをクロックゲーティングすることを更に含む、請求項３に記載の方法。
【請求項６】
前記ストールする段階は、前記プロセッサのクロック速度を絞ることを含む、請求項３に記載の方法。
【請求項７】
前記ＮＶＭに第３の電力バジェットを割り当てる段階を更に備え、前記第２及び第３の電力バジェットの組み合わせは、前記所定の電力レベル以下である、請求項３に記載の方法。
【請求項８】
前記第３の電力バジェットは、前記第２の電力バジェットより高い、請求項７に記載の方法。
【請求項９】
前記プロセッサのストールを中断する要求を受け取る段階、及び
前記プロセッサのストールを中断する要求を受け取るのに応答して、前記プロセッサに前記第１の電力バジェットを割り当てる段階、
を更に含む請求項７に記載の方法。
【請求項１０】
前記中断する要求を受け取る段階は、少なくとも１つのメモリ動作が完了するときを指示するフラグを受け取ることを更に含む、請求項３に記載の方法。
【請求項１１】
前記ＮＶＭに第４の電力バジェットを割り当てる段階を更に含み、前記第１及び第４の電力バジェットの組み合わせは、前記所定の電力レベル以下である、請求項９に記載の方法。
【請求項１２】
前記第１の電力バジェットは、前記第４の電力バジェットより高い、請求項１０に記載の方法。
【請求項１３】
プロセッサと、
前記プロセッサと通信するように働く不揮発性メモリ（ＮＶＭ）であって、ＮＶＭコントローラ及び複数のＮＶＭダイを含み、ＮＶＭコントローラは、複数のＮＶＭダイのいずれかを選択的にイネーブルするように働くＮＶＭと、
前記プロセッサ及びＮＶＭの累積電力消費が所定の電力レベルを越えないように前記プロセッサ及びＮＶＭに各電力バジェットを動的に割り当てるように働く電力バジェットマネージャーと、
を備えたシステム。
【請求項１４】
前記電力バジェットマネージャーは、前記プロセッサ及び前記ＮＶＭコントローラの少なくとも一方において実施される、請求項１３に記載のシステム。
【請求項１５】
前記ＮＶＭコントローラは、高い電力レベルで動作するよう前記プロセッサに命令する中断要求を前記プロセッサに与えるように働く、請求項１３に記載のシステム。
【請求項１６】
前記電力バジェットマネージャーは、
得られる電力量を監視し、
前記得られる電力量に基づいて前記システムの複数のコンポーネントの各コンポーネントに電力バジェットを割り当てる、
ように働く請求項１３に記載のシステム。
【請求項１７】
前記システムの複数のコンポーネントは、前記プロセッサ及びＮＶＭの少なくとも１つを含む、請求項１６に記載のシステム。
【請求項１８】
前記電力バジェットマネージャーは、得られる電力量に関連した状態を検出するように働く、請求項１６に記載のシステム。
【請求項１９】
電子装置に電力バジェットを割り当てる方法において、
電子装置に得られる合計電力量が所定の電力レベルより低いことを決定する段階と、
前記電子装置の複数のコンポーネントの各コンポーネントに各電力バジェットを動的に割り当てる段階と、
を備えた方法。
【請求項２０】
各電力バジェットを動的に割り当てる前記段階は、更に、不揮発性メモリに割り当てられた電力バジェットをその不揮発性メモリの１つ以上のコンポーネントへと細分化することを含む、請求項１９に記載の方法。
【請求項２１】
得られる合計電力量を決定する前記段階は、前記電子装置が外部充電装置から少量の電力を受け取り且つ前記電子装置のバッテリが前記電子装置を独立して付勢できない低電力状態を検出する段階を含む、請求項１９に記載の方法。
【請求項２２】
前記低電力状態を検出する段階は、
前記電子装置がユニバーサルシリアルバス（ＵＳＢ）プロトコルを経て前記外部充電装置と通信することを検出する段階、及び
前記ＵＳＢプロトコルのハンドシェーク段階がまだ完了しないことを検出する段階、
を含む請求項２０に記載の方法。
【請求項２３】
前記システムに得られる合計電力量が前記所定の電力レベルより高いことを決定する段階、及び
前記システムの複数のコンポーネントの各コンポーネントに割り当てられた各電力バジェットを除去する段階、
を更に含む請求項１９に記載の方法。
【請求項２４】
前記得られる合計電力量を決定する段階は、前記外部充電装置と電子装置との間の前記ＵＳＢのハンドシェーク段階が完了したことを検出する段階を含む、請求項２３に記載の方法。
【請求項２５】
前記複数のコンポーネントは、装置プロセッサ及び不揮発性ＮＡＮＤフラッシュメモリを含み、その装置プロセッサには第１の電力バジェットが割り当てられ、そして前記ＮＡＮＤフラッシュメモリには第２の電力バジェットが割り当てられる、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを有するシステムの電力を、システムの１つ以上の電力状態に基づいて動的に割り当てることに係る。
【背景技術】
【０００２】
ＮＡＮＤフラッシュメモリ及び他の形式の不揮発性メモリ（ＮＶＭ）は、一般に、大量記憶に使用される。例えば、ポータブルメディアプレーヤ又はセルラー電話のような電子装置は、音楽、ビデオを記憶するためのローフラッシュメモリ又はフラッシュカード、並びに他のメディアをしばしば備えている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
電子装置は、バッテリのような内部電源により供給される電力を使用して動作し、バッテリのような内部電源は、それを補充するため時々充電を必要とする。その内部電源は、電子装置を充電装置に結合することにより（例えば、充電装置の端子を電子装置の端子に物理的に接続することにより）再充電することができる。しかしながら、充電装置を最初に電子装置に結合したときには、電子装置が充電装置から限定された量の電力しか引き出せない時間インターバルがある。この時間インターバル中には、電子装置のあるコンポーネント又はそのようなコンポーネントの組み合わせが機能できなくなるか、又はこの制限された電力バジェットのもとで動作するときに完全に機能する能力に障害が生じることがある。
【課題を解決するための手段】
【０００４】
システムの電力を１つ以上の電力状態に基づいて動的に割り当てるためのシステム及び方法が開示される。このシステムは、プロセッサ、不揮発性メモリ（ＮＶＭ）、及び電力バジェットマネージャーを含む電子装置（例えば、ポータブルメディアプレーヤ又はセルラー電話）を備えている。
【０００５】
ＮＶＭは、例えば、フラッシュメモリ（例えば、ＮＡＮＤフラッシュメモリ）のような適当な形式のメモリである。ＮＶＭは、１つ以上のＮＶＭダイと、それらダイのアクセス及び動作を可能にする関連回路とを含む。ある実施形態では、ＮＶＭは、それ自身のコントローラ及び他のコンポーネント、例えば、エラー修正コードモジュールも含む。
【０００６】
電力バジェットマネージャー（例えば、装置プロセッサ又はＮＶＭに実施される）は、得られる電力の量を監視し、そしてプロセッサ、ＮＶＭ及びシステム内の他のコンポーネントの各々、或いはプロセッサ及び／又はＮＶＭ内のコンポーネントへ電力バジェットを動的に割り当てることができる。例えば、一実施形態では、電力バジェットマネージャーは、システムが低電力状態で動作していることを検出できる。低電力状態とは、システムが外部充電源から少量の電力（例えば、１００ｍＡの所定電力レベル）しか受け取らないときであって且つシステムの内部電源（例えば、バッテリ）では電子装置を付勢できない場合であるとここに定義する。このような低電力状態は、例えば、電子装置と外部充電装置との間のユニバーサルシリアルバス（ＵＳＢ）プロトコルハンドシェークシーケンス中に生じる。この低電力状態を検出するのに応答して、電力バジェットマネージャーは、システムの１つ以上のコンポーネントの各コンポーネントに各電力バジェットを動的に割り当てることができる。例えば、電力バジェットマネージャーは、プロセッサ及びＮＶＭが低電力状態中に得られる電力を越えないように集合的に動作できるように、プロセッサ及びＮＶＭの各々に電力バジェットを動的に割り当てることができる。
【０００７】
各コンポーネント（例えば、プロセッサ又はＮＶＭ）の電力バジェットは、多数の技術を使用して実施することができる。例えば、一実施形態では、電力バジェットマネージャーは、プロセッサをストールして、プロセッサが動作するのを防止し、電力バジェットに従うように電力を保存することができる。プロセッサは、クロックゲーティングのような多数の技術により（例えば、プロセッサ回路の１つ以上の部分をディスエイブルすることにより）ストールすることができる。別の例として、プロセッサは、そのクロック速度を絞る（例えば、そのクロック速度を所定のレベルに下げる）ことによりストールすることができる。更に別の例として、電力バジェットマネージャーは、例えば、電力をＮＶＭの１つ以上のコンポーネントへ細分化することによりＮＶＭの電力消費を制御することができる。
【０００８】
又、電力バジェットマネージャーは、任意の適当な技術を使用してプロセッサのストールを中断することもできる。例えば、電力バジェットマネージャーは、ＮＶＭコントローラにより発生された１つ以上のフラグを受け取るのに応答してプロセッサのストールを中断することができ、１つ以上のフラグは、１つ以上のメモリ動作が完了したときを指示することができる。別の例として、電力バジェットマネージャーは、ＮＶＭコントローラから中断要求を受け取るのに応答してプロセッサのストールを中断することができる。
【０００９】
ある実施形態では、現在電力レベルが低電力状態の電力レベルを越えることを電力バジェットマネージャーが検出した場合に、電力バジェットマネージャーは、システムの１つ以上のコンポーネントの各コンポーネントに割り当てられる各電力バジェットを除去することができる。各電力バジェットが除去された後に、システムのコンポーネントは、必要とされる電流を外部充電装置から引き出すことができる。他の実施形態では、電力バジェットマネージャーは、システムの種々のコンポーネントの電力消費を監視し、そしてそれに応じて電力を割り当てることができる。
【００１０】
本発明の前記及び他の態様並びに効果は、全体を通して同じ部分が同じ参照文字で示された添付図面を参照してなされた以下の詳細な説明から明らかとなろう。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態により構成された電子装置の回路図である。
【図２】本発明の実施形態により構成された電子装置の回路図である。
【図３】本発明の実施形態により形成された例示的電子システムの回路図である。
【図４】本発明の実施形態による電子装置のコンポーネントに対する電力バジェット割り当てを例示するグラフである。
【図５】本発明の実施形態による動的電力割り当てのためのプロセスを例示するフローチャートである。
【図６】本発明の実施形態によりシステムに電力バジェットを割り当てるためのプロセスを例示するフローチャートである。
【発明を実施するための形態】
【００１２】
図１は、電子装置１００の回路図である。ある実施形態では、電子装置１００は、ポータブルメディアプレーヤ（例えば、カリフォルニア州クパチーノのアップル社により入手できるｉＰｏｄTM）、セルラー電話（例えば、アップル社により入手できるｉＰｈｏｎｅTM）、ポケットサイズのパーソナルコンピュータ、パーソナルデジタルアシスタンス（ＰＤＡ）、デスクトップコンピュータ、ラップトップコンピュータ、及び他の適当な形式の電子装置であり、又はそれらを含む。
【００１３】
電子装置１００は、システム・オン・ア・チップ（ＳｏＣ）１１０及び不揮発性メモリ（ＮＶＭ）１２０を含むことができる。ＮＶＭ１２０は、フローティングゲート又は電荷トラップ技術に基づくＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、消去可能なプログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的に消去可能なプログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、強誘電性ＲＡＭ（ＦＲＡＭ）、磁気抵抗性ＲＡＭ（ＭＲＡＭ）、他の既知の又は将来の形式の不揮発性メモリ技術、又はその組み合わせを含むことができる。
【００１４】
ある実施形態では、ＮＶＭ１２０は、内部チップ選択信号を使用して内部チャンネル（例えば、ＮＶＭコントローラ１２２とＮＶＭダイ１２４との間の１つ以上のデータ経路）を経てＮＶＭダイ１２４にアクセスし且つそれを管理するためにＮＶＭコントローラ１２２を含むことができる。ある場合には、ＮＶＭコントローラ１２２は、ＮＶＭダイ１２４のうちのいずれかのダイを選択的にイネーブルすることができる。例えば、ＮＶＭダイ１２４のうちの特定のダイにアクセスするために装置プロセッサ１１２から要求（例えば、読み取り、プログラム又は消去要求）を受け取るのに応答して、ＮＶＭコントローラ１２２は、装置プロセッサ１１２により要求されたダイを選択的にイネーブルすることができる。
【００１５】
ＮＶＭコントローラ１２２は、ウェアレベリング、不良ブロック管理、及び論理的／物理的変換動作のようなメモリ管理機能を遂行することができる。ＮＶＭ１２０は、データエラー（例えば、フリップされたビット）を検出して修正するためのエラー修正コード（ＥＣＣ）エンジン１２６を含むことができる。このＥＣＣエンジン１２６は、その機能を異なる位置で実施できることを指示するために破線のボックスで示されている。ある実施形態では、ＥＣＣエンジン１２６は、ＮＶＭコントローラ１２２におけるハードウェアコンポーネントとして、又はＮＶＭコントローラ１２２により実行されるソフトウェアコンポーネントとして実施することができる。ある実施形態では、ＥＣＣエンジン１２６は、ＮＶＭ１２０におけるスタンドアローンモジュールである。
【００１６】
ＮＶＭコントローラ１２２により実施される１つ以上の機能は、ＳｏＣ１１０によって実施できることが理解される。従って、ある実施形態では、ＮＶＭコントローラ１２２は、ＳｏＣ１１０の一部分として含まれてもよい。このような実施形態では、ＮＶＭ１２０は、ダイ１２４及び関連回路（例えば、電荷ポンプ、行列デコーダ、等）を含むことができるが、ＮＶＭコントローラは含まない。
【００１７】
ＮＶＭダイ１２４は、最小の消去単位である「ブロック」へ編成できると共に、最小のプログラム可能で且つ読み取り可能な単位である「ページ」へ編成することもできる。各ダイ１２４は、１つ以上の平面（又はバンク）に配列できる複数のブロックを含むことができる。各平面又はダイからのブロックは、実質上、一緒にリンクされて、「スーパーブロック」を形成する。ＮＶＭダイ１２４の各メモリ位置（例えば、ページ又はブロック）は、物理的アドレス（例えば、物理的ページアドレス又は物理的ブロックアドレス）を使用してアドレスすることができる。
【００１８】
図１及びそれ以降の図、並びにここに開示する種々の実施形態は、時々、フラッシュ技術の使用に関連して説明する。しかしながら、これは、限定を意図したものではなく、他の形式の不揮発性メモリも実施することができる。又、電子装置１００は、例えば、図面が複雑になり過ぎるのを防ぐために図１には示されていない電源又はユーザ入力又は出力コンポーネントのような他のコンポーネントを含むことができる。
【００１９】
ＳｏＣ１１０は、装置プロセッサ１１２、メモリ１１４、及びＮＶＭインターフェイス１１８を含むことができる。装置プロセッサ１１２は、ＳｏＣ１１０の一般的な動作及び機能、並びにＳｏＣ１１０又は装置１００の他のコンポーネントを制御することができる。例えば、ユーザ入力、及び／又はアプリケーション又はオペレーティングシステムのインストラクションに応答して、装置プロセッサ１１２は、ＮＶＭ１２０からデータを得たり又はそこにデータを記憶したりするためにＮＶＭインターフェイス１１８へ読み取り又は書き込みコマンドを発生することができる。即ち、ＮＶＭインターフェイス１１８は、ＮＶＭ１２０と装置プロセッサ１１２との間の通信を可能にする。明瞭化のために、装置プロセッサ１１２が記憶又は検索のために要求するデータは、そのデータがユーザ又はユーザアプリケーションに直接関連していなくても、「ユーザデータ」と称される。むしろ、ユーザデータは、（例えば、アプリケーション又はオペレーティングシステムを経て）装置プロセッサ１１２により発生され又は得られたデジタル情報の適当なシーケンスである。
【００２０】
装置プロセッサ１１２は、ハードウェア、ソフトウェア及びファームウェアの任意の組み合わせ、並びに電子装置１００の機能を駆動するように働くコンポーネント、回路又はロジックを含む。例えば、装置プロセッサ１１２は、ＮＶＭ１２０又はメモリ１１４に記憶されたソフトウェア／ファームウェアの制御の下で動作する１つ以上のプロセッサを含む。
【００２１】
ある実施形態では、装置プロセッサ１１２は、電子装置１００の１つ以上のコンポーネントへ電力バジェットを動的に割り当てることのできる電力バジェットマネージャー１２８を含むことができる。その１つ以上のコンポーネントは、例えば、装置プロセッサ１１２、ＮＶＭ１２０、ＮＶＭインターフェイス１１８、及び電子装置１００の他の適当なコンポーネントを含むことができる。ある実施形態では、電力バジェットは、電子装置１００に得られる又はＳｏＣ１１０及びＮＶＭ１２０に得られる合計電力量に基づいて割り当てることができる。電力バジェットマネージャー１２８は、図１の装置プロセッサ１１２において実施されるものとして示されているが、当業者に明らかなように、電力バジェットマネージャー１２８は、それに加えて又はそれに代わってＮＶＭコントローラ１２２において実施されてもよい。動的な電力割り当ては、図３から５を参照して以下に詳細に述べる。
【００２２】
メモリ１１４は、適当な形式の揮発性又は不揮発性メモリ、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ）ＲＡＭ、キャッシュメモリ、リードオンリメモリ（ＲＯＭ）、又はその組み合わせを含むことができる。メモリ１１４は、ユーザデータをＮＶＭ１２０へプログラミングするか又はそこから読み取るために一時的に記憶できるデータソースを含むことができる。ある実施形態では、メモリ１４は、装置プロセッサ１１２の一部分として実施されるプロセッサのためのメインメモリとして働くことができる。
【００２３】
ＮＶＭインターフェイス１１８は、装置プロセッサ１１２とＮＶＭ１２０との間のインターフェイス又はドライバとして働くように構成されたハードウェア、ソフトウェア及び／又はファームウェアの適当な組み合わせを含む。ＮＶＭインターフェイス１１８に含まれたソフトウェアモジュールについては、それに対応するプログラムコードがＮＶＭ１２０又はメモリ１１４に記憶される。
【００２４】
ＮＶＭインターフェイス１１８は、装置プロセッサ１１２がＮＶＭ１２０にアクセスしそしてＮＶＭ１２０のメモリ位置（例えば、ページ、ブロック、スーパーブロック、集積回路）及びそこに記憶されたデータ（例えば、ユーザデータ）を管理できるようにする種々の機能を遂行することができる。例えば、ＮＶＭインターフェイス１１８は、装置プロセッサ１１２からの読み取り又は書き込みコマンドを解釈し、ウェアレベリングを遂行し、そしてＮＶＭ１２０のバスプロトコルに適合する読み取り及びプログラムインストラクションを発生することができる。
【００２５】
ＮＶＭインターフェイス１１８及び装置プロセッサ１１２は、個別のモジュールとして示されているが、これは、本発明の実施形態の説明を簡単化するために過ぎない。これらのモジュールは、ハードウェアコンポーネント、ソフトウェアコンポーネント、又はその両方を共有することを理解されたい。例えば、装置プロセッサ１１２の一部分として実施されるプロセッサは、ＮＶＭインターフェイス１１８のためのソフトウェアベースのメモリドライバを実行する。従って、装置プロセッサ１１２及びＮＶＭインターフェイス１１８の各部分を集合的に「制御回路」と称してもよい。
【００２６】
図１は、ＮＶＭ１２０がそれ自身のコントローラ（例えば、ＮＶＭコントローラ１２２）をもつ電子装置を示す。ある実施形態では、電子装置１００は、ＮＶＭ１２０と、ＮＶＭインターフェイス１１８の幾つかの部分又は全ての部分（例えば、以下に述べる変換レイヤ）とを含むフラッシュ又はＳＤカードのようなターゲット装置を含むことができる。これらの実施形態では、ＳｏＣ１１０又は装置プロセッサ１１２は、ターゲット装置のためのホストコントローラとして働いてもよい。例えば、ホストコントローラとして、ＳｏＣ１１０は、ターゲット装置へ読み取り又は書き込み要求を発生することができる。
【００２７】
図２は、電子装置２００の回路図で、１つ以上の実施形態による電子装置１００（図１）のファームウェア、ソフトウェア及び／又はハードウェアコンポーネントの幾つかを詳細に示している。電子装置２００は、図１に示す装置１００に関連して上述した特徴及び機能のいずれかを有し、そしてその逆のことも言える。電子装置２００は、ファイルシステム２１０、ＮＶＭドライバ２１２、ＮＶＭバスコントローラ２１６、及びＮＶＭ２２０を含むことができる。ある実施形態では、ファイルシステム２１０及びＮＶＭドライバ２１２は、ソフトウェア又はファームウェアモジュールであり、そしてＮＶＭバスコントローラ２１６及びＮＶＭ２２０は、ハードウェアモジュールである。従って、これらの実施形態では、ＮＶＭドライバ２１２は、ＮＶＭインターフェイス２１８のソフトウェア又はファームウェア態様を表し、そしてＮＶＭバスコントローラ２１６は、ＮＶＭインターフェイス２１８のハードウェア態様を表す。
【００２８】
ファイルシステム２１０は、適当な形式のファイルシステムを含み、そして電子装置２００のオペレーティングシステムの一部分（例えば、図１の装置プロセッサ１１２の一部分）でよい。ある実施形態では、ファイルシステム２１０は、ページの論理的／物理的マッピングを与えるフラッシュファイルシステムを含む。ファイルシステム２１０は、以下に述べるＮＶＭドライバ２１２の機能の幾つか又は全部を遂行し、それ故、ファイルシステム２１０及びＮＶＭドライバ２１２は、個別のモジュールであってもよいし、なくてもよい。
【００２９】
ファイルシステム２１０は、アプリケーション及び／又はオペレーティングシステムのためのファイル及びフォルダ構造を管理することができる。ファイルシステム２１０は、電子装置２００で実行されるアプリケーション又はオペレーティングシステムの制御のもとで動作し、そして情報をＮＶＭ２２０から読み取るか又はそこに記憶することをアプリケーション又はオペレーティングシステムが要求するときにＮＶＭドライバ２１２に書き込み及び読み取りコマンドを与えることができる。各読み取り又は書き込みコマンドと共に、ファイルシステム２１０は、ユーザデータをどこから読み取り又はどこへ書き込むかを指示する論理的アドレス、例えば、論理的ページアドレス、又はページオフセット付きの論理的ブロックアドレスを与えることができる。
【００３０】
ファイルシステム２１０は、ＮＶＭ２２０に直接適合しない読み取り及び書き込み要求をＮＶＭドライバ２１２に与えることがある。例えば、論理的アドレスが、ハードドライブベースシステムの典型である慣習又はプロトコルを使用することがある。ハードドライブベースシステムは、フラッシュメモリとは異なり、ブロック消去を最初に遂行せずに、メモリ位置にオーバーライトすることができる。更に、ハードドライブは、装置の寿命を延ばすためのウェアレベリングも、フラッシュベース装置に特有の他の技術も必要としない。それ故、ＮＶＭインターフェイス２１８は、ファイルシステム要求を取り扱うためのメモリ特有、ベンダー特有又はその両方の機能を遂行すると共に、他の管理機能をＮＶＭ２２０に適した仕方で遂行することができる。
【００３１】
ＮＶＭドライバ２１２は、変換レイヤ２１４を含むことができる。ある実施形態では、変換レイヤ２１４は、フラッシュ変換レイヤ（ＦＴＬ）であるか、又はそれを含む。書き込み動作では、変換レイヤ２１４は、与えられた論理的アドレスを、ＮＶＭ２２０の消去された空き物理的位置へマップすることができる。読み取り動作では、変換レイヤ２１４は、与えられた論理的アドレスを使用して、要求されたデータが記憶されている物理的アドレスを決定することができる。各ＮＶＭは、ＮＶＭのサイズ又はベンダーに基づいて異なるレイアウトを有するので、このマッピング動作は、メモリ及び／又はベンダー特有のものである。変換レイヤ２１４は、論理的／物理的アドレスマッピングに加えて他の適当な機能を遂行することができる。例えば、変換レイヤ２１４は、フラッシュ変換レイヤの典型である他の機能、例えば、不要データ収集及びウェアレベリングのいずれかを遂行することができる。
【００３２】
ＮＶＭドライバ２１２は、ＮＶＭアクセス要求（例えば、プログラム、読み取り及び／又は消去要求）を完了させるためにＮＶＭバスコントローラ２１６とインターフェイスする。バスコントローラ２１６は、ＮＶＭ２２０へのハードウェアインターフェイスとして働き、そしてバスプロトコル、データレート、及び／又はＮＶＭ２２０の他の仕様を使用して、ＮＶM２２０と通信することができる。
【００３３】
ＮＶＭインターフェイス２１８は、ここでは時々「メタデータ」と称されるメモリ管理データに基づいてＮＶＭ２２０を管理することができる。メタデータは、ＮＶＭドライバ２１２により発生されてもよいし、又はＮＶＭドライバ２１２の制御のもとで動作するモジュールにより発生されてもよい。例えば、メタデータは、論理的アドレスと物理的アドレスとの間のマッピングを管理するのに使用される情報、不良ブロック管理、ウェアレベリング、“ＥＣＣ”データ、又はその組み合わせを含むことができる。メタデータは、ファイルシステム２１０により与えられるデータを、論理的アドレスのようなユーザデータと共に含んでもよい。従って、一般的に、「メタデータ」は、ユーザデータに関する情報、又は不揮発性メモリの動作及びメモリ位置を管理するために一般的に使用される情報を指す。
【００３４】
ＮＶＭインターフェイス２１８は、ＮＶＭ２２０にメタデータを記憶するように構成される。ある実施形態では、ＮＶＭインターフェイス２１８は、ユーザデータに関連したメタデータを、ユーザデータが記憶された同じメモリ位置（例えば、ページ）に記憶することができる。例えば、ＮＶＭインターフェイス２１８は、ユーザデータ、それに関連した論理的アドレス、及びユーザデータのためのＥＣＣデータを、ＮＶＭ２２０の１つ以上のメモリ位置に記憶することができる。又、ＮＶＭインターフェイス２１８は、ユーザデータに関する他の形式のメタデータを同じメモリ位置に記憶することもできる。例えば、メタデータは、記憶されたデータが良好なデータであるかどうか指示するフラグを含む。
【００３５】
ＮＶＭインターフェイス２１８は、ＮＶＭ２２０の始動時に又はＮＶＭ２２０の動作中に、どんなデータがその特定位置に存在するか電子装置２００で決定できるように、論理的アドレス及びそれに関連したユーザ情報それ自体を記憶する。特に、ファイルシステム２１０は、ユーザデータを、その物理的アドレスではなく、その論理的アドレスに基づいて参照するので、ＮＶＭインターフェイス２１８は、ユーザデータ及び論理的アドレスを一緒に記憶して、それらの関連性を維持する。例えば、ＮＶＭインターフェイス２１８が論理的セクタを物理的ページへと直接的にマップする実施形態では、ＮＶＭインターフェイス２１８は、論理的／物理的マッピング、及び情報それ自体を、ＮＶＭのページに記憶することができる。
【００３６】
図３を参照すれば、ここに例示する電子システムの回路図が示されている。この電子システム３００は、電子装置３０２、及び外部充電電源３１０を含むことができる。ある実施形態では、電子装置３０２は、図１の電子装置１００及び／又は図２の電子装置２００と同じであるか又は実質的に同様である。
【００３７】
例えば、電子装置３０２は、ホストシステム又はプロセッサ３０４（例えば、図１のＳｏＣ１１０）、及びＮＶＭ３０６（例えば、図１のＮＶＭ１２０又は図２のＮＶＭ２２０）を含むことができる。ある場合には、電子装置３０２は、少なくとも所定レベルに充電されたときに、電子装置３０２に給電することのできるバッテリ３０８を含むことができる。しかしながら、電子装置３０２が、長期間、非充電であったときには、バッテリ３０８は、実質的に全ての電荷が最終的に尽きていることがある。そのような状態では、バッテリ３０８は、電子装置３０２及び１つ以上のそのコンポーネントに給電することができない。
【００３８】
ある実施形態では、電子装置３０２は、１つ以上の電力接続部３３６を経て外部の充電装置３１０に電子装置３０２を結合することにより、再充電することができる。外部の充電装置３１０は、電子装置３０２へ電力を供給できる適当な電子充電装置又はシステムを含むことができる。例えば、外部の充電装置３１０は、ラップトップコンピュータ、電源、又はドッキングステーションを含むことができる。更に、電力接続部３３６は、例えば、ユニバーサルシリアルバス（ＵＳＢ）接続、ＵＳＢ２．０接続、シリアル接続、パラレル接続、ファイアワイヤ接続、他の適当なワイヤード又はワイヤレス電力接続、及び／又はその組み合わせを含むことができる。
【００３９】
しかしながら、電子装置３０２が電力接続部３３６を経て外部の充電装置３１０に最初に結合されるときには、外部の充電装置３１０から引き出せる電流量が制限される。例えば、電子装置３０２がＵＳＢ接続を使用して外部の充電装置３１０に結合される場合には、電子装置３０２は、外部充電装置３１０から最大量の電力（例えば、５００ｍＡ、１Ａ又は２Ａの最大電流）を引き出せるまでに、外部充電装置３１０とのハンドシェーク段階を完了させることが最初に必要となる。このハンドシェーク段階とは、電子装置３０２がどれほど多くの電流を充電装置３１０から引き出せるか決定するための電子装置３０２と外部充電装置３１０との間のネゴシエーションプロセスである。このハンドシェーク段階中には、限定された量の電力しか供給されないが、ハンドシェークが完了すると、「合意された」電力レベルを与えることができる。
【００４０】
その結果、ハンドシェーク段階を完了する前に、電子装置３０２は、外部充電装置３１０から限定された量の電力（例えば、通常動作中の５００ｍＡの最大電流に対して１００ｍＡの最大電流）しか引き出すことができない。従って、限定された電力バジェットが与えられると、プロセッサ３０４は、選択的コンポーネント（１つ又は複数）を動作できるに充分な電力が与えられるよう保証するためにその種々のコンポーネント（例えば、ＮＶＭ及びプロセッサ）間に電力を動的に割り当てることが必要になる。
【００４１】
当業者に明らかなように、プロセッサ３０４及びＮＶＭ３０６に電力を割り当てるのに加えて、又はそれに代わって、電子装置３０２の他のコンポーネント（１つ又は複数）にも電力を動的に割り当てることができる。又、当業者に明らかなように、この説明は、ＵＳＢプロトコルから生じる低電力状態に向けられるが、電子装置３０２は、低電力シナリオに応答して、その種々のコンポーネント間で電力を動的に割り当てることができる。従って、低電力状態とは、電子装置３０２がその通常の動作モード（例えば、音楽を再生したり、セルホンのコールを促進したりする）で動作できるに充分な電力を内部電源（例えば、バッテリ３０８）が電子装置３０２に供給できない状態である。同時に、外部の充電装置（例えば、外部充電装置３１０）も、少量の電力（例えば、１００ｍＡの所定電力レベル）しか電子装置３０２に供給できない。
【００４２】
図４は、電子装置（例えば、図１の電子装置１００、図２の電子装置２００、又は図３の電子装置３０２）のコンポーネントに対する電力バジェット割り当て４００を例示するグラフである。当業者に明らかなように、時間インターバルｔ0ないしｔ5は、一定の縮尺で描かれておらず、それ故、ある場合には、ある時間インターバルが、他の時間インターバルに比して、実際上、著しく長い又は短いことがある。
【００４３】
時間ｔ0において、電力バジェットマネージャー（例えば、図１の電力バジェットマネージャー１２８）は、メモリシステムが低電力状態で動作していることを決定できる。その結果、電力バジェットマネージャーは、電力バジェット４０２をプロセッサ（例えば、図１のＳｏＣ１１０又は図３のプロセッサ３０４）に割り当て、そして電力バジェット４０４をＮＶＭ（例えば、図１のＮＶＭ１２０、図２のＮＶＭ２２０又は図３のＮＶＭ３０６）に割り当てることができる。電力バジェット４０２及び４０４の組み合わせは、電力レベル４２０以下である。時間ｔ0とｔ5との間では、電力レベル４２０は、ハンドシェーク段階中に与えられる電力レベル（例えば、１００ｍＡ）であり、そして時間ｔ5の後では、電力レベル４２２は、ハンドシェーク段階が完了した後に与えられる電力レベル（例えば、５００ｍＡ、１Ａ又は２Ａ）である。更に、プロセッサは、最初に大きな電力（例えば、１つ以上の要求を発生するための付加的な電力）を使用する必要があるので、電力バジェット４０２は、電力バジェット４０４より大きい。
【００４４】
次いで、時間ｔ0と時間ｔ1との間に、プロセッサは、ＮＶＭにアクセスする要求（例えば、読み取り、消去又はプログラム要求）を発生する。一実施形態において、プロセッサは、システムブートアップ用の１つ以上のプログラム（例えば、オペレーティングシステム）をＮＶＭがロードするための要求を発生することができる。
【００４５】
その要求が発生された後に、時間ｔ1において、電力バジェットマネージャーは、電力バジェット４０６及び４０８をプロセッサ及びＮＶＭに各々割り当てることができる。電力バジェット４０６及び４０８の組み合わせは、電力レベル４２０以下である。
【００４６】
ある場合には、少量の電力を時間ｔ1にプロセッサに割り当ててもよい。というのは、プロセッサは、要求を発生した後に他の著しい動作を遂行する必要がないからである。それ故、電力バジェット４０６は、電力バジェット４０２より低い。
【００４７】
対照的に、ＮＶＭは、プロセッサから要求を受け取った後に、ほとんどのシステム動作（例えば、システムブートアップ用の１つ以上のプログラムをロードする）を遂行するので、ＮＶＭは、プロセッサに比して付加的な電力を必要とする。それ故、電力バジェット４０８は、電力バジェット４０６より高い。
【００４８】
ある実施形態では、プロセッサが時間ｔ1と時間ｔ2との間に電力バジェット４０６を満足させるために、電力バジェットマネージャーは、プロセッサをストールすることができる。例えば、電力バジェットマネージャーは、プロセッサをクロックゲーティングすることにより（例えば、プロセッサ回路の１つ以上の部分をディスエイブルすることにより）プロセッサをストールすることができる。別の例として、電力バジェットマネージャーは、プロセッサのクロック速度を絞る（例えば、クロック速度を最小レベルに減少する）ことによりプロセッサをストールすることができる。
【００４９】
次いで、時間ｔ2に、電力バジェットマネージャーは、中断要求を受け取るのに応答して、プロセッサのストールを中断することができる。例えば、電力バジェットマネージャーは、電子システム（例えば、図３の電子システム３００）の１つ以上のコンポーネントから中断要求を受け取る。ある実施形態では、電力バジェットマネージャーは、ＮＶＭから中断要求を受け取る。例えば、ＮＶＭコントローラ（例えば、図１のＮＶＭコントローラ１２２）は、高い電力レベルで動作するようにプロセッサに命令する中断要求をプロセッサに与えることができる。別の例として、ＮＶＭコントローラは、１つ以上のフラグを発生することができ、その１つ以上のフラグは、１つ以上のメモリ動作が完了したときを指示することができる。
【００５０】
プロセッサのストールを中断する要求が受け取られたことを電力バジェットマネージャーが決定した場合には、電力バジェットマネージャーは、電力バジェット４０２及び４０４を各々プロセッサ及びＮＶＭに割り当てることができる。従って、ある実施形態では、時間ｔ2と時間ｔ3との間に割り当てられた電力バジェットは、時間ｔ0と時間ｔ1との間に割り当てられた電力バジェットと同じ又は同様である。
【００５１】
時間ｔ2には、プロセッサに多量の電力を割り当てることができる。というのは、プロセッサは、システム動作を遂行し続ける（例えば、１つ以上のシステムアプリケーションを実行する）ために付加的な電力を必要とするからである。それに対応して、プロセッサは、ストールが中断された後にほとんどのシステム動作を遂行するので、電力バジェット４０２は、電力バジェット４０４より高い。
【００５２】
当業者であれば、電力バジェット割り当て４００に示された電力バジェットは、単なる例示に過ぎず、システムの各コンポーネントに割り当てられる実際の電力バジェットは、１つ以上のファクタに依存することが明らかであろう。その１つ以上のファクタは、例えば、システムの現在状態、システムの１つ以上の将来状態、得られる全電力、プロセッサにより発生される要求の形式（例えば、読み取り、プログラム又は消去要求）、他の適当なファクタ、及び／又はその組み合わせを含むことができる。
【００５３】
従って、例えば、時間ｔ3と時間ｔ4との間に、電力バジェットマネージャーは、得られる電力のほぼ全部をプロセッサに割り当てることができ（例えば、電力バジェット４１０）、これは、プロセッサが付加的な動作を遂行できるようにする。更に、時間ｔ4と時間ｔ5との間に、電力バジェットマネージャーは、得られる電力のほぼ全部をＮＶＭに割り当てることができ（例えば、電力バジェット４１２）、これは、ＮＶＭが付加的な動作を遂行できるようにする。
【００５４】
次いで、時間ｔ5に、ハンドシェーク動作が完了し、電力バジェットマネージャーは、低電力状態で動作するようにもはや制限されない。この時点で、電力バジェットマネージャーは、新たな電力レベル４２２に基づいて電力を割り当てることができる。
【００５５】
図５及び６を参照すれば、本発明の種々の実施形態による例示的プロセスのフローチャートが示されている。これらのプロセスは、システム（例えば、図１のシステム１００）の１つ以上のコンポーネントにより実行することができる。例えば、電力バジェットマネージャー（例えば、図１の電力バジェットマネージャー１２８）は、これらプロセスの１つ以上のステップを遂行することができる。
【００５６】
先ず、図５を参照すれば、動的な電力割り当てのためのプロセス５００が示されている。このプロセス５００は、ステップ５０２で始まり、電力バジェットマネージャーは、システム（例えば、図３の電子装置３０２）に対して得られる電力の量を監視する。
【００５７】
ステップ５０４において、電力バジェットマネージャーは、システム（例えば、図３の電子装置３０２）に対して得られる合計電力量が所定の電力レベルより低いかどうか決定することができる。ステップ５０４において、システムに対して得られる合計電力量が所定の電力レベルより低くないと電力バジェットマネージャーが決定した場合には、プロセス５００は、ステップ５０６において終了となる。
【００５８】
そうではなく、ステップ５０４において、システムに対して得られる合計電力量が所定の電力レベルより低いと電力バジェットマネージャーが決定した場合には、プロセス５００は、ステップ５０８に進む。例えば、電力バジェットマネージャーは、システムが低電力状態で動作していると検出することがある。低電力状態の間に、電子装置（例えば、図１の電子装置１００、図２の電子装置２００、及び／又は図３の電子装置３０２）のバッテリ（例えば、図３のバッテリ３０８）は、システムに給電することができない。又、同時に、電子装置は、外部充電装置（例えば、図３の外部充電装置３１０）から少量の電力（例えば、１００ｍＡの所定電力レベル）を受け取ることもできる。例えば、電力バジェットマネージャーは、電子装置がＵＳＢプロトコルを経て外部充電装置と通信していること、及びＵＳＢプロトコルのハンドシェーク段階がまだ完了していないことを検出することにより、低電力状態を検出することができる。
【００５９】
次いで、ステップ５０８において、電力バジェットマネージャーは、システムの１つ以上のコンポーネントの各コンポーネントに各電力バジェットを動的に割り当てることができる。ある実施形態では、電力バジェットマネージャーは、得られる電力量に基づいて各電力バジェットを割り当てることができる。例えば、電力バジェットマネージャーは、プロセッサ（例えば、図１のＳｏＣ１１０又は図３のプロセッサ３０４）及びＮＶＭ（例えば、図１のＮＶＭ１２０、図２のＮＶＭ２２０又は図３のＮＶＭ３０６）の各々に電力バジェットを動的に割り当てて、プロセッサ及びＮＶＭが所定の電力レベルを越えることなく集合的に動作できるようにする。換言すれば、電力バジェットマネージャーは、プロセッサ及びＮＶＭの累積電力消費を監視して、その累積電力消費が所定の電力レベルを越えないよう保証することができる。
【００６０】
他の実施形態では、電力バジェットマネージャーは、例えば、ＮＶＭの１つ以上のコンポーネント（例えば、図１の１つ以上のＮＶＭダイ１２４、又は図１のＮＶＭコントローラ１２２）に割り当てられた電力を細分化することにより、ＮＶＭの電力消費を制御することができる。ある場合には、電力バジェットマネージャーは、ＮＶＭの現在動作状態に基づいてＮＶＭのコンポーネント間で電力を細分化することができる。従って、ＮＶＭのどのコンポーネントが多くの電力を必要とするかに基づいて、電力バジェットマネージャーは、それらのコンポーネントに高い電力バジェットを、そして残りのコンポーネントに低い電力バジェットを対応的に割り当てることができる。
【００６１】
更に別の実施形態では、電力バジェットマネージャーは、システムの種々のコンポーネントの電力消費を監視し、それに応じて、電力を割り当てることができる。従って、システムの特定のコンポーネントが最も電力を消費し又は消費する必要があることを検出するのに応答して、電力バジェットマネージャーは、そのコンポーネントに大きな電力バジェットを対応的に割り当てることができる。
【００６２】
システムの種々のコンポーネントに異なる電力バジェットを動的に割り当てることにより、電力バジェットマネージャーは、システムの性能を向上させることができる。例えば、ＮＶＭが現在使用されていない場合には、電力バジェットマネージャーは、高い電力バジェットをプロセッサに割り当てることができる。次いで、プロセッサは、付加的な動作を遂行することで、この高い電力バジェットの利点を取り入れることができる。この性能向上は、メモリコンポーネントに固定の電力スレッシュホールドを所定の期間割り当てるシステムでは達成できない。
【００６３】
ステップ５１０へと続いて、電力バジェットマネージャーは、システムに得られる合計電力量が所定の電力レベルより高いかどうか決定することができる。ステップ５１０において、システムに得られる合計電力量が所定の電力レベルより高くないと電力バジェットマネージャーが決定した場合には、プロセス５００は、ステップ５０８へ復帰する。ステップ５０８において、電力バジェットマネージャーは、システムのコンポーネントに電力バジェットを動的に割り当て続けることができる。
【００６４】
そうではなく、ステップ５１０において、システムに得られる合計電力量が所定の電力レベルより高いと電力バジェットマネージャーが決定した場合には、プロセス５００は、ステップ５１２へ進む。例えば、電力バジェットマネージャーは、システムが高電力状態で動作していることを検出する。高電力状態の間に、電子装置は、外部充電装置から多量の電力（例えば、５００ｍＡ）を受け取ることができる。しかしながら、電子装置のバッテリは、いかなる電力も供給できず、又はシステムを付勢するに充分な電力を供給できないことがある。ある実施形態では、電力バジェットマネージャーは、外部充電装置と電子装置との間のＵＳＢプロトコルのハンドシェーク段階が完了したことを検出することで、高電力状態を検出する。
【００６５】
別の例として、電力バジェットマネージャーは、システムがフル電力状態で動作していることを検出する。フル電力状態の間には、電子装置は、外部充電装置及び／又はバッテリからフル電力を受け取ることができる。ある実施形態では、電力バジェットマネージャーは、電子装置のバッテリがフル充電されたことを検出することで、システムがフル電力状態で動作していると検出することができる。
【００６６】
次いで、ステップ５１２において、電力バジェットマネージャーは、システムの１つ以上のコンポーネントの各々に割り当てられた各電力バジェットを除去することができる。各電力バジェットが除去された後に、システムのコンポーネントは、必要とされる電流を外部充電装置から引き出すことができる。プロセス５００は、ステップ５０６で終了となる。
【００６７】
図６を参照すれば、システム（例えば、図３の電子装置３０２）に電力バジェットを割り当てるためのプロセス６００が示されている。ある実施形態では、プロセス６００は、プロセス５００（図５）のステップ５０８を詳細に表している。従って、システムは、低電力状態で動作し、この状態では、システムは、外部充電装置（例えば、図３の外部充電装置３１０）から電力を受け取り、且つ内部電源（例えば、図３のバッテリ３０８）は、それ自身でシステムを付勢することができない。ある実施形態では、受電する合計電力が所定の電力レベル（例えば、１００ｍＡ）である。
【００６８】
以下の説明は、低電力状態に応答してプロセッサ（例えば、図１のＳｏＣ１１０又は図３のプロセッサ３０４）をストールすることに関するが、当業者であれば、ＮＶＭ（例えば、図１のＮＶＭ１２０、図２のＮＶＭ２２０、又は図３のＮＶＭ３０６）のプロセッサ、例えばＮＶＭコントローラ（例えば、図１のＮＶＭコントローラ１２２）にも、同様の解決策を適用することができる。従って、低電力状態が長時間続く場合には、プロセッサ及びＮＶＭコントローラは、システムの性能を向上させるためにストールプロセスを交替することができる。
【００６９】
プロセス６００は、ステップ６０２で開始する。ステップ６０４において、電力バジェットマネージャー（例えば、図１の電力バジェットマネージャー１２８）は、第１の電力バジェット（例えば、図４の電力バジェット４０２）をプロセッサに割り当てることができる。
【００７０】
次いで、ステップ６０６において、プロセッサは、ＮＶＭ（例えば、図１のＮＶＭ１２０、図２のＮＶＭ２２０、又は図３のＮＶＭ３０６）にアクセスするための要求（例えば、読み取り、消去、又はプログラム要求）を発生する。例えば、プロセッサは、１つ以上のＮＶＭダイ（例えば、図１のＮＶＭダイ１２４）のメモリ位置に記憶されたデータにアクセスするための読み取り要求を発生することができる。別の例として、プロセッサは、１つ以上のＮＶＭダイのメモリ位置へデータをプログラムするためのプログラム要求を発生することができる。ある実施形態では、低電力状態で動作する間に電力を保存するために、プロセッサ又はＮＶＭコントローラ（例えば、図１のＮＶＭコントローラ１２２）は、一度にＮＶＭの１つのダイにしかアクセスしないように要求を制限することができる。他の実施形態では、入力／出力（Ｉ／Ｏ）信号がプロセッサとＮＶＭコントローラとの間に転送される間に他のシステム動作を阻止することができる。
【００７１】
ステップ６０８へと続いて、電力バジェットマネージャーは、プロセッサに第２の電力バジェット（例えば、図４の電力バジェット４０６）を割り当てることができ、ここで、第２の電力バジェットは、第１の電力バジェットより低い。要求を発生した後、プロセッサは、他の著しい動作を遂行する必要がないので、プロセッサには、少量の電力しか割り当てられない。
【００７２】
ステップ６１０において、電力バジェットマネージャーは、第３の電力バジェット（例えば、図４の電力バジェット４０８）をＮＶＭに割り当てることができ、ここで、第２及び第３の電力バジェットの組み合わせは、所定の電力レベル（例えば、図４の電力レベル４２０）以下である。ある場合には、ＮＶＭは、プロセッサから要求を受け取った後に、ほとんどのシステム動作を遂行するので、ＮＶＭは、プロセッサに比して付加的な電力を必要とする。従って、第３の電力バジェットは、第２の電力バジェットより高い。
【００７３】
次いで、ステップ６１２において、電力バジェットマネージャーは、プロセッサが第２の電力バジェットを越えないようにプロセッサをストールして電力消費を制限することができる。例えば、プロセッサは、クロックゲーティングにより（例えば、プロセッサ回路の１つ以上の部分をディスエイブルすることにより）ストールすることができる。別の例として、プロセッサは、そのクロック速度を絞る（例えば、そのクロック速度を最小レベルへ下げる）ことによりストールすることができる。
【００７４】
ステップ６１４へと続いて、電力バジェットマネージャーは、プロセッサのストールを中断する要求が受け取られたかどうか決定することができる。例えば、電力バジェットマネージャーは、電子システム（例えば、図３の電子システム３００）の１つ以上のコンポーネントから中断要求を受け取る。例えば、電力バジェットマネージャー（及び／又はプロセッサ）は、電子装置（例えば、図１の電子装置１００、図２の電子装置２００、及び／又は図３の電子装置３０２）のコンポーネントから、或いは電子装置に結合された外部充電装置（例えば、図３の外部充電装置３１０）から中断要求を受け取る。
【００７５】
ある実施形態では、電力バジェットマネージャーは、ＮＶＭから中断要求を受け取る。例えば、ＮＶＭコントローラは、高い電力レベルで動作するようにプロセッサに命令する中断要求をプロセッサに与えることができる。ある実施形態では、プロセッサとＮＶＭコントローラとの間のＩ／Ｏ信号の転送を許すために中断要求が送信される。別の例として、ＮＶＭコントローラは、１つ以上のメモリ動作が完了したときを指示する１つ以上のフラグを発生することができる。
【００７６】
ステップ６１４において、ストールを中断する要求が受け取られなかったと電力バジェットマネージャーが決定した場合には、プロセス６００は、ステップ６１２へ復帰する。ステップ６１２において、電力バジェットマネージャーは、プロセッサのストールを続けることができる。
【００７７】
そうではなくて、ステップ６１４において、ストールを中断する要求が受け取られたと電力バジェットマネージャーが決定した場合には、プロセス６００は、ステップ６１６へ進む。
【００７８】
ステップ６１６において、電力バジェットマネージャーは、第１の電力バジェットをプロセッサに割り当てることができる。ある実施形態では、システム動作（例えば、Ｉ／Ｏ信号をＮＶＭコントローラへ又はそこから転送する）を遂行し続けるためにプロセッサが多量の電力を必要とするために、第１の電力バジェットが割り当てられる。
【００７９】
次いで、ステップ６１８において、電力バジェットマネージャーは、第４の電力バジェット（例えば、図４の電力バジェット４０４）をＮＶＭに割り当てることができ、ここで、第１及び第４の電力バジェットの組み合わせは、所定の電力レベル以下である。ある場合には、プロセッサは、ストールが中断された後にほとんどのシステム動作を遂行するので、ＮＶＭに比して付加的な電力を必要とする。従って、第１の電力バジェットは、第４の電力バジェットより高い。次いで、プロセスは、ステップ６２０で終了となる。
【００８０】
図５及び６のプロセス５００及び６００は、各々、単なる例示に過ぎないことを理解されたい。本発明の範囲から逸脱せずに、いずれのステップを除去し、変更し又は結合してもよく、又、付加的なステップを追加してもよい。
【００８１】
本発明の以上の実施形態は、説明上表現されたもので、これに限定されない。
【符号の説明】
【００８２】
１００：電子装置
１１０：システム・オン・ア・チップ（ＳｏＣ）
１１２：装置プロセッサ
１１８：ＮＶＭインターフェイス
１２０：不揮発性メモリ（ＮＶＭ）
１２２：ＮＶＭコントローラ
１２４：ＮＶＭダイ
１２８：電力バジェットマネージャー
２００：電子装置
２１０：ファイルシステム
２１２：ＮＶＭドライバ
２１４：変換レイヤ
２１６：ＮＶＭバスコントローラ
２２０：ＮＶＭ
３０２：電子装置
３０４：ホストシステム又はプロセッサ
３０６：ＮＶＭ
３０８：バッテリ
３１０：外部充電装置
３３６：電力接続部
４００：電力バジェット割り当て
４０２、４０４、４０６、４０８：電力バジェット
４２０、４２２：電力レベル
【図１】
2012069100.tif 000003
【図２】
2012069100.tif 000004
【図３】
2012069100.tif 000005
【図４】
2012069100.tif 000006
【図５】
2012069100.tif 000007
【図６】
2012069100.tif 000008
【手続補正書】
【提出日】平成23年9月22日(2011.9.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサ及び不揮発性メモリ（ＮＶＭ）を備えたシステムの電力を動的に管理するための方法において、
前記システムを低電力状態で動作する段階であって、前記システムは、外部充電装置から電力を受け取り、その受け取られた電力は、前記システムと前記外部充電装置との間のハンドシェーク段階中に所定の電力レベルを有するものである段階と、
前記ハンドシェーク段階を遂行する段階と、
前記プロセッサ及びＮＶＭが前記所定の電力レベルを越えずに集合的に動作するように前記プロセッサ及びＮＶＭの各々に電力バジェットを動的に割り当てる段階と、
を備えた方法。
【請求項２】
前記システムのバッテリは、前記システムが通常のモードで動作できるに充分な電力を前記システムに独立して与えることができない、請求項１に記載の方法。
【請求項３】
電力バジェットを動的に割り当てる前記段階は、
前記プロセッサに第１の電力バジェットを割り当てる段階、
前記ＮＶＭにアクセスするための要求を前記プロセッサから発生する段階、
前記プロセッサに第２の電力バジェットを割り当てる段階であって、その第２の電力バジェットは、前記第１の電力バジェットより低いものである段階、及び
前記プロセッサが前記第２の電力バジェットを越えないように、前記プロセッサをストールして、前記プロセッサによる電力消費を制限する段階、
を更に含む請求項１に記載の方法。
【請求項４】
要求を発生する前記段階は、一度にＮＶＭの利用可能な全てのダイのサブセットにアクセスするように前記要求を制限することを含み、そのサブセットは、そこに含まれるダイの数が、同時にアクセスできる全てのダイより少ない、請求項３に記載の方法。
【請求項５】
前記ストールする段階は、前記プロセッサのクロック速度を絞ることを含む、請求項３に記載の方法。
【請求項６】
前記ＮＶＭに第３の電力バジェットを割り当てる段階を更に備え、前記第２及び第３の電力バジェットの組み合わせは、前記所定の電力レベル以下である、請求項３に記載の方法。
【請求項７】
前記第３の電力バジェットは、前記第２の電力バジェットより高い、請求項６に記載の方法。
【請求項８】
前記プロセッサのストールを中断する要求を受け取る段階、及び
前記プロセッサのストールを中断する要求を受け取るのに応答して、前記プロセッサに前記第１の電力バジェットを割り当てる段階、
を更に含む請求項６に記載の方法。
【請求項９】
前記中断する要求を受け取る段階は、少なくとも１つのメモリ動作が完了するときを指示するフラグを受け取ることを更に含む、請求項３に記載の方法。
【請求項１０】
前記ＮＶＭに第４の電力バジェットを割り当てる段階を更に含み、前記第１及び第４の電力バジェットの組み合わせは、前記所定の電力レベル以下である、請求項８に記載の方法。
【請求項１１】
前記第１の電力バジェットは、前記第４の電力バジェットより高い、請求項１０に記載の方法。
【請求項１２】
プロセッサと、
前記プロセッサと通信するように働く不揮発性メモリ（ＮＶＭ）であって、ＮＶＭコントローラ及び複数のＮＶＭダイを含み、ＮＶＭコントローラは、複数のＮＶＭダイのいずれかを選択的にイネーブルするように働くＮＶＭと、
前記プロセッサ及びＮＶＭの累積電力消費が所定の電力レベルを越えないように前記プロセッサ及びＮＶＭに各電力バジェットを動的に割り当てるように働く電力バジェットマネージャーと、
を備えたシステム。
【請求項１３】
前記ＮＶＭコントローラは、高い電力レベルで動作するよう前記プロセッサに命令する中断要求を前記プロセッサに与えるように働く、請求項１２に記載のシステム。
【請求項１４】
前記電力バジェットマネージャーは、
得られる電力量を監視し、
前記得られる電力量に基づいて前記システムの複数のコンポーネントの各コンポーネントに電力バジェットを割り当てる、
ように働く請求項１２に記載のシステム。
【請求項１５】
電子装置に電力バジェットを割り当てる方法において、
電子装置に得られる合計電力量が所定の電力レベルより低いことを決定する段階と、
前記電子装置の複数のコンポーネントの各コンポーネントに各電力バジェットを動的に割り当てる段階と、
を備えた方法。
【請求項１６】
各電力バジェットを動的に割り当てる前記段階は、更に、不揮発性メモリに割り当てられた電力バジェットをその不揮発性メモリの１つ以上のコンポーネントへと細分化することを含む、請求項１５に記載の方法。
【請求項１７】
得られる合計電力量を決定する前記段階は、前記電子装置が外部充電装置から少量の電力を受け取り且つ前記電子装置のバッテリが前記電子装置を独立して付勢できない低電力状態を検出する段階を含む、請求項１５に記載の方法。
【請求項１８】
前記低電力状態を検出する段階は、
前記電子装置がユニバーサルシリアルバス（ＵＳＢ）プロトコルを経て前記外部充電装置と通信することを検出する段階、及び
前記ＵＳＢプロトコルのハンドシェーク段階がまだ完了しないことを検出する段階、
を含む請求項１６に記載の方法。
【請求項１９】
前記システムに得られる合計電力量が前記所定の電力レベルより高いことを決定する段階、及び
前記システムの複数のコンポーネントの各コンポーネントに割り当てられた各電力バジェットを除去する段階、
を更に含む請求項１５に記載の方法。
【請求項２０】
前記得られる合計電力量を決定する段階は、前記外部充電装置と電子装置との間の前記ＵＳＢのハンドシェーク段階が完了したことを検出する段階を含む、請求項１９に記載の方法。
【請求項２１】
前記複数のコンポーネントは、装置プロセッサ及び不揮発性ＮＡＮＤフラッシュメモリを含み、その装置プロセッサには第１の電力バジェットが割り当てられ、そして前記ＮＡＮＤフラッシュメモリには第２の電力バジェットが割り当てられる、請求項１５に記載の方法。
【外国語明細書】
2012069100.tif 000009
2012069100.tif 000010
2012069100.tif 000011
2012069100.tif 000012
2012069100.tif 000013
2012069100.tif 000014
2012069100.tif 000015
2012069100.tif 000016
2012069100.tif 000017
2012069100.tif 000018
2012069100.tif 000019
2012069100.tif 000020
2012069100.tif 000021
2012069100.tif 000022
2012069100.tif 000023
2012069100.tif 000024
2012069100.tif 000025
2012069100.tif 000026
2012069100.tif 000027
2012069100.tif 000028
2012069100.tif 000029
2012069100.tif 000030
2012069100.tif 000031
2012069100.tif 000032
2012069100.tif 000033
2012069100.tif 000034
2012069100.tif 000035
2012069100.tif 000036
2012069100.tif 000037
2012069100.tif 000038
2012069100.tif 000039
2012069100.tif 000040
2012069100.tif 000041
2012069100.tif 000042
2012069100.tif 000043
2012069100.tif 000044
2012069100.tif 000045
2012069100.tif 000046
2012069100.tif 000047