(57)【要約】  一実施形態において、システムが、複数のコアと複数のキューとを含むプロセッサを含む。各キューは、コアの少なくとも１つにより処理されることになるパケットを記憶するための記憶場所を含む。各キューは、アクティブ又は非アクティブのうち１つである対応する状態を有する。各アクティブキューは、到来パケットを記憶することを可能にされ、各非アクティブキューは、到来パケットの記憶を不能にされる。各キューは、キューの占有された記憶場所の数を含む対応するキュー深さを有する。上記システムは、パケット配布ロジックをさらに含み、アクティブキューのキュー深さの和を含む合計キュー深さに基づいて複数のキューのうちの第１のキューの状態を第１の状態から第２の状態に変更するかどうかを決定する。他の実施形態が説明され、請求される。
2018512648.tif 000002
【特許請求の範囲】
【請求項１】
複数のコアと複数のキューとを含むプロセッサであって、各キューは、前記コアの少なくとも１つにより処理されるパケットを記憶する記憶場所を含み、各キューは、アクティブ及び非アクティブのうちの１つである対応する状態を有し、各アクティブキューは、到来パケットを記憶することを可能にされ、各非アクティブキューは、前記到来パケットの記憶を不能にされ、各キューは、該キューの占有された記憶場所の数を含む対応するキュー深さを有する、プロセッサと、
前記アクティブキューのキュー深さの和を含む合計キュー深さに基づいて前記複数のキューのうちの第１キューの状態を第１状態から第２状態に変更するかを決定するパケット配布ロジックと、
を含むシステム。
【請求項２】
前記合計キュー深さが第１閾値を超えているとき、前記パケット配布ロジックは、前記第１キューの状態を第１状態の非アクティブから第２状態のアクティブに変更する、請求項１に記載のシステム。
【請求項３】
前記第１キューの状態がアクティブに変更された後、前記パケット配布ロジックは、前記到来パケットを前記第１キューに記憶されるように向ける、請求項２に記載のシステム。
【請求項４】
前記プロセッサは、電力管理ユニット（ＰＭＵ）をさらに含み、前記第１キューのアクティブ化に応答して、前記ＰＭＵは、対応するコアを、低減された電力状態から、該低減された電力状態よりもより多くの電力を消費するアクティブ電力状態に変更する、請求項２に記載のシステム。
【請求項５】
前記合計キュー深さが、第２閾値より小さいとき、前記パケット配布ロジックは、第２キューの状態を、第１状態のアクティブから第２状態の非アクティブに変更する、請求項１に記載のシステム。
【請求項６】
前記第２キューのキュー深さは、前記アクティブキューのキュー深さのうち最小である、請求項５に記載のシステム。
【請求項７】
前記プロセッサは、電力管理ユニット（ＰＭＵ）をさらに含み、前記第２キューのアクティブ解除に応答して、前記ＰＭＵは、対応するコアのコア状態をアクティブ状態から低減された電力状態に変更する、請求項５に記載のシステム。
【請求項８】
前記パケット配布ロジックは、前記第２キューのアクティブ解除に応答して、対応するコアをアクティブ状態から低減された電力状態に変更させる、請求項５に記載のシステム。
【請求項９】
前記パケット配布ロジックは、到来パケットを、対応する状態がアクティブである第３キューに記憶されるように向け、前記第３キューのキュー深さは、前記アクティブキューのキュー深さのうち最小である、請求項１乃至８のうちいずれか１項に記載のシステム。
【請求項１０】
前記プロセッサに結合され、かつ前記パケット配布ロジックを含むネットワークインターフェースカード（ＮＩＣ）、をさらに含み、前記ＮＩＣは、ネットワークからの到来パケットを受信し、前記パケット配布ロジックは、各々の到来パケットについて、対応するアクティブキューを選択して前記到来パケットを記憶する、請求項１乃至８のうちいずれか１項に記載のシステム。
【請求項１１】
命令を含むコンピュータプログラムであって、前記命令は実行されると、
複数のコアと複数のキューとを含むプロセッサのアクティブキューの合計キュー深さを決定することであって、各コアは、該コアにより処理されるパケットを記憶する少なくとも１つの対応するキューを有し、各キューは、アクティブ及び非アクティブのうちの１つである対応する状態を有し、各アクティブキューは、前記プロセッサに結合されたネットワークインターフェースカード（ＮＩＣ）から受信される到来パケットを受信しかつ記憶することを可能にされ、各非アクティブキューは、前記到来パケットの受信及び記憶を不能にされ、各アクティブキューは、該キュー内の占有された場所の数を含む関連付けられたキュー深さを有し、前記合計キュー深さは、前記アクティブキューのキュー深さの和を含む、ことと、
少なくとも前記合計キュー深さに基づいて、前記複数のキューのうちの第１キューの状態を変更するかを決定することと、
をシステムに実行させる、コンピュータプログラム。
【請求項１２】
前記合計キュー深さが第１閾値を超えていることに応答して前記第１キューの状態を非アクティブからアクティブに変更する命令、をさらに含む請求項１１に記載のコンピュータプログラム。
【請求項１３】
前記第１キューの状態がアクティブに変更された後、前記到来パケットを記憶のために前記第１キューに向ける命令、をさらに含む請求項１２に記載のコンピュータプログラム。
【請求項１４】
前記第１キューのアクティブ化に応答して、対応するコアを低電力状態から、該低電力状態よりもより多くの電力を消費するアクティブ電力状態に置く命令、をさらに含む請求項１２に記載のコンピュータプログラム。
【請求項１５】
前記合計キュー深さが第２閾値より小さいことに応答して、前記第１キューの状態をアクティブから非アクティブに変更する命令、をさらに含む請求項１１乃至１４のうちいずれか１項に記載のコンピュータプログラム。
【請求項１６】
前記第２閾値は、ある時間にわたる前記合計キュー深さの変化のレートに基づいて決定される、請求項１５に記載のコンピュータプログラム。
【請求項１７】
前記第１キューのアクティブ解除に応答して、対応するコアをアクティブ電力状態から、該アクティブ電力状態よりもより少ない電力を消費する低減された電力状態に変更させる命令、をさらに含む請求項１５に記載のコンピュータプログラム。
【請求項１８】
複数のアクティブキューの各々について、複数のコアと複数のキューとを含むプロセッサの占有された記憶場所の数を含む対応するキュー深さを決定することであって、各キューは、前記コアの少なくとも１つに関連付けられ、各キューは、アクティブ及び非アクティブのうちの１つである対応する状態を有し、各アクティブキューは、前記プロセッサに結合されたネットワークインターフェースカード（ＮＩＣ）から受信される到来パケットを記憶することを可能にされ、各非アクティブキューは、前記到来パケットの受信及び記憶を不能にされ、各コアは、前記アクティブキューの少なくとも１つから受信される１つ以上のパケットを処理する、ことと、
前記ＮＩＣからの前記到来パケットを、前記対応するキュー深さに基づいて、前記アクティブキューから選択された第１アクティブキューに向けることと、
を含む方法。
【請求項１９】
前記到来パケットを、前記対応するキュー深さが前記アクティブキューのそれぞれのキュー深さのうち最小であることに応答して、前記第１アクティブキューに向けること、をさらに含む請求項１８に記載の方法。
【請求項２０】
少なくとも合計キュー深さに基づいて、前記複数のキューのうちの第２キューの対応する状態を変更するかを決定すること、をさらに含み、前記合計キュー深さは、前記アクティブキューのキュー深さの和を含む、請求項１８に記載の方法。
【請求項２１】
前記第２キューの対応する状態を、前記合計キュー深さが第１閾値を超えていることに応答して非アクティブからアクティブに変更すること、をさらに含む請求項２０に記載の方法。
【請求項２２】
前記第２キューのアクティブ化に応答して、対応するコアを低電力状態から、該低電力状態よりもより多くの電力を消費するアクティブ電力状態に変更させること、をさらに含む請求項２１に記載の方法。
【請求項２３】
前記第２キューの対応する状態を、前記合計キュー深さが第２閾値より小さいことに応答してアクティブから非アクティブに変更することと、対応するコアをアクティブ電力状態から、該アクティブ電力状態よりもより少ない電力を消費する低減された電力状態に変更させることと、をさらに含む請求項２０に記載の方法。
【請求項２４】
前記第２閾値は、ある時間にわたる前記合計キュー深さの変化のレートに基づいて決定される、請求項２３に記載の方法。
【請求項２５】
請求項１８乃至２４のうちいずれか１項に記載の方法を実行する手段を含む装置。
【請求項２６】
請求項１１乃至１７のうちいずれか１項に記載のコンピュータプログラムを記憶したコンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、システムの電力管理に関し、より詳細には、マルチコアプロセッサの電力管理に関する。
【背景技術】
【０００２】
半導体処理及びロジック設計における進化は、集積回路デバイス上に存在可能なロジック量の増加を許容している。結果として、コンピュータシステム構成は、システム内における単一又は複数の集積回路から、個々の集積回路上における複数のハードウェアスレッド、複数のコア、複数のデバイス、及び／又は完全なシステムへと発展している。さらに、集積回路の密度が増大するにつれ、コンピューティングシステムの（組み込み型システムからサーバへの）電力要件もまた上昇している。さらに、ソフトウェア非効率、及びそのハードウェアの要件もまた、コンピューティングデバイスエネルギー消費の増加を引き起こしている。実際、コンピューティングデバイスは、アメリカ合衆国などの国の電気供給全体のうちかなりのパーセンテージを消費していることを、いくつかの研究が示している。結果として、集積回路に関連付けられたエネルギー効率及び節約の必要が切実である。上記必要は、サーバ、デスクトップコンピュータ、ノートブック、Ｕｌｔｒａｂｏｏｋ（登録商標）、タブレット、モバイルフォン、プロセッサ、組み込み型システム等が（典型的なコンピュータ、自動車、及びテレビに含むことからバイオテクノロジーまで）より一層普及するとき、増大することになる。
【図面の簡単な説明】
【０００３】
【図１】本発明の一実施形態に従う、システムのブロック図である。
【図２】本発明の別の実施形態に従う、システムのブロック図である。
【図３】本発明の一実施形態に従う、システムのブロック図である。
【図４】本発明の一実施形態に従う、方法のフロー図である。
【図５】本発明の別の実施形態に従う、方法のフロー図である。
【図６】本発明の別の実施形態に従う、方法のフロー図である。
【図７】本発明の別の実施形態に従う、システムのブロック図である。
【図８】本発明の別の実施形態に従う、システムのブロック図である。
【発明を実施するための形態】
【０００４】
マルチコアプロセッサを含むシステム内で電力を節約するために、いくつかのマルチコアプロセッサは、１つ以上のコアが低電力状態（例えば、低減されたクロック周波数、低減された動作電圧、又はいくつかのスリープ状態のうち１つであり、コアのいくつか又はすべてのコア回路がオフにされる）に置かれることを許容する。例えば、低アクティビティの期間の間にエネルギーを節減するために、コアはスリープ状態に置かれることがあり、上記スリープ状態は、例えば、アドバンストコンフィグレーションアンドパワーインターフェース（Advanced  Configuration  and  Power  Interface）（ＡＣＰＩ）標準、例えば２０１４年４月に公開されたＲｅｖ５．１に従う、コアがアクティブ状態（Ｃ０）であるときよりもより少ない電力を消費する状態Ｃ１乃至ＣＮのうち１つである。別法として、１つ以上のコアが低い電力パフォーマンス（power-performance）状態に置かれることがあり、該状態は、例えば、アドバンストコンフィグレーションアンドパワーインターフェース（ＡＣＰＩ）標準、例えば２０１４年４月に公開されたＲｅｖ５．１に従う、アクティブ状態（Ｐ０）におけるコアのクロック周波数及び／又は動作電圧と比較してクロック周波数及び／又は動作電圧が低減され得る状態Ｐ１乃至ＰＮのうちの１つである。
【０００５】
コンピュータシステムはネットワークに結合されることがあり、ネットワークから、コンピュータシステムはデータパケットを受信することができる。コンピュータシステムは、ネットワークを介して受信される到来（incoming）データパケットを処理するマルチコアプロセッサを含むことができる。
【０００６】
処理されるべき到来データパケットの、プロセッサのコアへのランダムな配布は、プロセッサにおける電力使用非効率を結果としてもたらす可能性がある。実施形態において、メカニズムが採用されて、受信ネットワークトラフィック、例えばネットワークから受信されたデータパケット（さらに、本明細書においてパケット）を、アクティブコア内で処理されるように導くことができ、非アクティブの（例えば、アクティブ解除された（deactivated））コアに、非アクティブ、例えばスリープ状態又は低減された電力状態のままであることを許容する。上記メカニズムは、負荷閾値が達せられたとき、スリープしているコアを起こす（wake）ことができる。負荷条件に基づいて、コアを、高電力状態から低電力状態に、又は低電力状態から高電力状態に移行させることができる。電力節減の一目標は、プロセッサのアクティブコアが受信ネットワークトラフィックを処理すると同時に、最大数のコアをスリープ状態のままにさせることであり得、上記目標は、本明細書に提示される実施形態を介して実現することができる。
【０００７】
実施形態において、ネットワークインターフェースカード（ＮＩＣ）及びプロセッサが一緒に作用して、ＮＩＣを介してネットワークから受信されるパケットを処理するのに利用されるアクティブコアの総数（count）を最小化することにより、電力節減を達成することができる。ＮＩＣは、１つ以上のキューバッファ（又は、本明細書において「キュー」）をアクティブ解除する（又は、アクティブ化する（activate））ことができ、各キューは、パケットが届けられるべきコアに対応する。パケットをアクティブコアに与える（feed）アクティブキューの総数の最小化は、最大数のコアが低電力状態、例えばスリープ状態に、又は、低減された電力／パフォーマンス状態、例えばその通常クロック周波数から低減されたクロック周波数における動作若しくは低減された電圧における動作に置かれる（又はそれにとどまる）ことを可能にすることができる。
【０００８】
実施形態において、負荷条件に基づいて、コアを、高電力使用状態から、対応するキューのアクティブ解除に関連付けられた低電力使用状態に、又は、低電力使用状態から、対応するキューのアクティブ化に関連付けられた高電力使用状態に移行させることができる。
【０００９】
一実施形態において、メカニズムが、受信トラフィックの処理を、すべての利用可能コアよりもより少ないコアに集約することができる。例えば、３つのコアを有し、その各々が１０％のキャパシティで動作するプロセッサについて、作業負荷を、３０％のキャパシティで稼働する１つのコアに再配布することができる。残りの２つのコアはパワーセービング状態（例えば、Ｃ（１）〜Ｃ（Ｎ）等）に置くことができ、さらなる受信トラフィックがさらなる処理電力を正当化するとき、上記残りの２つのコアのうち一方又は双方のコアを再アクティブ化することができる。上記メカニズムは、アクティブキューの総数を最小化するキュースケジューリング機能を提供するＮＩＣにより実装することができる。
【００１０】
一例として、上記メカニズムは、下記のとおり、擬似コード（ここで、キュー深さ（queue  depth）（ｉ）はｉ番目のキュー内の記憶場所の占有の測定であり、各記憶場所はパケットを記憶することができる）：
Ｉｆ  キュー深さ（ｉ）の和  ＞  第１の閾値（例えば、７５％の深さ），  非アクティブキューのプールから１つ以上のキューをアクティブ化する
Ｅｌｓｅ  Ｉｆ  キュー深さの和  ＜  第２の閾値（例えば、２５％の深さ），  １つ以上のキューをアクティブ解除する（及び、アクティブ解除されるキューにさらなる到来パケットを送信しない）
Ｅｌｓｅ  Ｃｏｎｔｉｎｕｅ
に従って実装することができる。
【００１１】
実施形態において、Ｃ状態又はＰ状態のための構成可能アクションを、ＮＩＣからコアへの割り込みとして実装することができる。キュー閾値（例えば、上記擬似コード内の第１の閾値）が超えられ、対応するキューがアクティブ化されるとき、コアをＮＩＣが起こすことができる。
【００１２】
実施形態において、「ワンショット」割り込みをホストがプログラムすることができる。ワンショット割り込みをＮＩＣがトリガして、スリープモードの、キューによりパケットを与えられてアクティブ化されることになるコアを、起こすことができる。
【００１３】
他の実施形態において、プロセッサ上で稼働するソフトウェアが、新たにアクティブ化されたキュー内に記憶されているパケットの存在を検出してもよく、記憶されたパケットを処理するために対応するコアをスリープ状態又は低電力／パフォーマンス状態から再アクティブ化させることができる。
【００１４】
実施形態において、１つ以上のコアが、フルアクティブモードにおいて、例えば、高いクロック周波数及びフルの動作電圧で動作することができ、同時に、他のコアは、低周波数及び／又は低減された電圧における動作にとどまることができる。実施形態において、トラフィックを、高クロック周波数（及び、フル動作電圧）で動作する１つ以上のコアに向けることができ、同時に、他のコアは、低電力状態においてアイドルであり得る。いくつかの実施形態において、上記閾値は、動的であり得、例えば、他のパラメータに応じて決定することができ、該パラメータは、例えば、キュー深さの変化のレート、例えば、キュー深さの和（本明細書において、合計キュー深さ）のある時間にわたる変化のレートなどである。アクティブコアの総数の低減は、電力節減を結果としてもたらすことができる。
【００１５】
図１は、本発明の一実施形態に従う装置のブロック図である。装置１００が、プロセッサ１１０と、プロセッサ１１０に結合されたネットワーク情報カード（ＮＩＣ）１３０
とを含む。プロセッサ１１０は、コア１１２１〜１１２Ｎ、キュー１１４１〜１１４Ｎ、インターコネクトロジック１１６、キャッシュメモリ１１８、電力管理ユニット１２０を含み、他のコンポーネントを含んでもよい。ＮＩＣ１３０は、パケット配布ロジック（packet  distribution  logic）１３２を含む。
【００１６】
動作において、ＮＩＣ１３０は、ネットワーク入力１４０、例えば、ＮＩＣ１３０が結合されているネットワーク（図示されていない）からの到来データパケットを受信することができる。パケット配布ロジック１３２は、各キューの占有度、例えば、対応するコアにより処理されるパケットで占有されたキューのうちの部分に基づいて、キュー１１４からアクティブキューの総数を増加させるか（又は、減少させるか）を決定することができる。パケット配布ロジック１３２は、いずれのキューが到来パケットの各々を受信すべきかを決定することができ、ＮＩＣ１３０は、各到来パケットを対応する宛先キュー１１４ｉに導くことができる。
【００１７】
各々の受信した到来パケットについて、対応する宛先キュー１１４ｉを、各アクティブキューのキュー深さ（例えば、占有）に基づいて決定することができる。例えば、ＮＩＣ１３０は、各パケットを、複数のアクティブキューのうち最も低いキュー深さ（例えば、最小の占有度）を有する対応するキューに導くことができる。
【００１８】
一実施形態において、パケット配布ロジック１３２は、すべてのアクティブキューの合計キュー深さが第１の閾値を超えている（例えば、合計占有が第１の閾値を超えている）ことを決定することができ、パケット配布ロジック１３２は、到来トラフィック（例えば、到来パケット）を扱うためにアクティブ化されるべき非アクティブキューを選択することができる。特定のキューのアクティブ化には、より低い電力状態（例えば、スリープ状態、例えばスリープ状態Ｃ１〜ＣＮのうちの１つ、又は、低電力／パフォーマンス状態、例えば低電力／パフォーマンス状態Ｐ１〜ＰＮのうちの１つ）からアクティブ状態への、対応するコアのアクティブ化が伴うことができる。
【００１９】
特定のキューをアクティブ化すると、さらなる到来パケットが上記特定のキュー内に置かれて、対応するコアのアクティブ化の後、対応するコアにより処理されることができる。一実施形態において、ＮＩＣ１３０は受信したパケットを配布し、最も低い占有度を有する（例えば、最小数のパケットを記憶している）アクティブキューが次の到来パケットを受信する。
【００２０】
パケット配布ロジック１３２は、アクティブキューの占有度を監視することができ、すべてのアクティブキューの合計占有（例えば、合計キュー深さ）が第２の閾値を下回る場合、パケット配布ロジック１３２は、アクティブである選択されたキューをアクティブ解除することができる。選択されたキュー内のいかなる残りのパケットも処理された後、対応するコアが、低電力状態、例えばＣ１〜ＣＮ又はＰ１〜ＰＮに置かれることができる。
【００２１】
ゆえに、パケット配布ロジック１３２は、キュー１１４の各々を監視して、高い占有（高い合計キュー深さ）又は低い占有（低い合計キュー深さ）があるかを決定することができる。合計占有が低い場合、パケット配布ロジック１３２は、キュー１１４のうち１つ以上をアクティブ解除することができ、アクティブ解除されたキュー内のいかなる残りのパケットも処理された後、対応するコアが、より低い電力状態に置かれることができる。別法として、プロセッサ１１０内で稼働するソフトウェアが、対応するコアを、対応するキューが空いていると検出することに応答して、より低い電力状態に置かせてもよい。
【００２２】
一実施形態において、ＰＭＵ１２０は、各コア１１２ｉのアクティビティレベルを監視することができ、アクティブ解除されたキューに対応する特定のコアがアイドルであることを検出することができ、このことは、ＰＭＵ１２０に対して、上記特定のコアの電力を下げる（power  down）ように示すことができる。アクティブ解除されているいかなるキューも、アクティブ解除されたキューが空になるまで、その対応するコアにパケットを与えることを継続することができる。アクティブ解除されたキューが空であるとき、対応するコアは、低電力消費状態、例えば、スリープ状態Ｃ１〜ＣＮ又は低減された電力状態Ｐ１〜ＰＮのうちの１つに置かれることができる。さらなるパケットは、アクティブ解除されたキューに供給されない。コアを低電力消費状態又は低減された電力消費状態に置くことで、プロセッサ１１０の全体的エネルギー消費を低めることができる。
【００２３】
図２は、本発明の別の実施形態に従うシステムのブロック図である。システム２００が、プロセッサ２１０と、プロセッサ２１０に結合されたネットワーク情報カード（ＮＩＣ）２３０とを含む。プロセッサ２１０は、コア２１２１〜２１２Ｎ、キュー２１４１〜２１４Ｎ、インターコネクトロジック２１６、キャッシュメモリ２１８、電力管理ユニット２２０、パケット配布ロジック２２２を含み、他のコンポーネントを含んでもよい。
【００２４】
動作において、ＮＩＣ２３０は、ネットワーク入力２４０、例えば、ＮＩＣ２３０が結合されているネットワーク（図示されていない）からの到来データパケットを受信することができる。ＮＩＣ２３０は、到来データパケットをパケット配布ロジック２２２に伝達することができる。パケット配布ロジック２２２は、いずれのキューが到来パケットの各々を受信すべきかを決定することができ、各到来パケットを対応する宛先キュー２１４ｉに向けることができる。
【００２５】
各々の受信した到来パケットについて、対応する宛先キューを、各アクティブキューのキュー深さに基づいて決定することができる。例えば、パケット配布ロジック２２２は、各パケットを、複数のアクティブキューのうち最小のキュー深さを有するキューに向けることができる。
【００２６】
パケット配布ロジック２２２は、各キューのキュー深さの和に基づいて、キュー２１４ｉのうちいずれがアクティブ化され又はアクティブ解除されるべきかを決定することができる。一実施形態において、パケット配布ロジックは、すべてのアクティブキューの合計利用可能キャパシティが第１の閾値を超えていることを決定することができ、アクティブ化すべき特定のキューを選択してアクティブキューの総数を増加させることができる。上記特定のキューをアクティブ状態に変更することには、より低い電力状態、例えばＣ１〜ＣＮ又はＰ１〜ＰＮからの、対応するコアのアクティブ化が伴うことができる。一実施形態において、パケット配布ロジック２２２は、「ワンショット」割り込みをトリガして、対応するコアを起こすことができる。別法として、プロセッサ内で稼働するソフトウェアが、対応するキュー内に記憶されたパケットに基づいて、コアの電力を上げる（power  up）ように決定してもよい。別法として、ＰＭＵ２２０が、各コアのアクティビティレベルを監視してもよく、特定のコアに対する増加したトラフィックの、ＰＭＵ２２０による検出に応答して、上記対応するコアの動作パラメータ（例えば、動作電圧及びクロック周波数）を変更してもよい。
【００２７】
ネットワーク入力２４０が継続する（例えば、パケットがネットワークから受信される）とき、パケット配布ロジック２２２は、受信したパケットを、アクティブであるキューに配布する。一実施形態において、最小のキュー深さを有するアクティブキューが、到来パケットを受信する。
【００２８】
パケット配布ロジック２２２は、アクティブキューの合計キュー深さが第２の（例えば、低い）閾値より少ないことを決定することができる。パケット配布ロジック２２２は、アクティブキューのうち１つがアクティブ解除されるべきであると決定することができる。アクティブ解除について選択された特定のキューは、パケット配布ロジック２２２からさらなる到来パケットを受信しない。代わって、上記特定のキュー内に記憶されたパケットが、対応するコアにより処理されることになり、上記特定のキューが空くとき、対応するコアが、より低い電力状態、例えばＣ１〜ＣＮ又はＰ１〜ＰＮに置かれることができる。さらなるパケットは、非アクティブキューに供給されない。コアを低電力消費状態又は低減された電力消費状態に置くことは、プロセッサ２１０のより低い全体的エネルギー消費を結果としてもたらすことができる。非アクティブキューと対応するコアとは、増加したネットワークトラフィックに応答して、ある将来の時間に再アクティブ化されることができる。
【００２９】
図３は、本発明の別の実施形態に従うシステムのブロック図である。システム３００が、プロセッサ３１０と、ネットワークインターフェースカード（ＮＩＣ）３７０とを含む。
【００３０】
動作において、ＮＩＣ３７０は、ネットワーク入力３８０を介してネットワークからパケットを受信する。パケット配布ロジック３６０（例えば、ハードウェア、ファームウェア、ソフトウェア、又はこれらの組み合わせ）が、ネットワーク入力３８０を介して受信される各パケットについて、対応するコア３１２ｉがパケットを受信しかつ処理する準備ができるまでパケットが一時的に記憶されるべきキュー３１４ｉ（例えば、３１４１〜３１４Ｎ）を決定する。図３の実施形態において、各キュー３１４ｉは、単一のコア３１２ｉに対応する。他の実施形態において、複数のキューが単一のコアに与えてもよく、あるいは、単一のキューが複数のコアに与えてもよい。
【００３１】
パケット配布ロジック３６０は、占有に関して、キュー３１４１〜３１４Ｎの各々を監視することができる。すなわち、図３に示されるとおり、キュー３１４ｉは、占有された領域３４２を含み、領域３４２は、場所３１６１、３１８１、３２０１、３２４１、及び３２６１を含む。場所３１６１〜３２６１の各々が、ＮＩＣ３７０から受信されたパケットを記憶する。キュー３１４１は、占有されていない領域３４４を含み、領域３４４は、空いている場所３２８１及び３３０１を含む。同様に、キュー３１４２は、占有された領域３４６を含み、領域３４６は、場所３１６２、３１８２、３２０２、及び３２２２を含む。場所３１６２、３１８２、３２０２、３２２２の各々が、ＮＩＣ３７０から受信されたパケットを記憶する。キュー３１４２は、占有されていない領域３４４を含み、領域３４４は、空いている場所３２４２、３２６２、３２８２、及び３３０２を含む。キュー３１４３は、占有された領域３５０（例えば、占有された場所３１６３、３１８３）と、占有されていない領域３５２（例えば、３２０３〜３３０３）とを含む。キュー３１４Ｎは、占有された領域３５４（例えば、占有された場所３１６Ｎ）と占有されていない領域３５２（例えば、３１８Ｎ〜３３０Ｎ）とを含む。
【００３２】
パケット配布ロジック３６０は、合計キュー深さ（例えば、合計占有）、例えば、アクティブキュー内のすべての占有された記憶場所の総数、例えば、３４２、３４６、３５０、・・・３５４内のすべての場所の総数を決定することができる。パケット配布ロジック３６０は、第１の閾値（例えば、高い閾値）に対する合計キュー深さの比較を実行することができる。合計キュー深さが、第１の閾値より大きい場合、パケット配布ロジック３６０は、さらなるキューを非アクティブ状態からアクティブ化するように決定して、到来パケットのための記憶可用性を増大させることができる。パケット配布ロジック３６０は、上記さらなるキューをアクティブとして、例えば、到来パケットを受信するのに利用可能として指定することができる。
【００３３】
上記さらなるキューは、低電力状態から起こされる（又は、アクティビティレベルに引き上げられる）べきさらなるコア（図示されていない）に与えることができる。ゆえに、さらなる実行キャパシティが正当化されるとき、選択された非アクティブキューが、アクティブ化されて到来パケットを受信することができ、スリープ状態又は低電力状態にある対応する非アクティブコアが、フルにアクティブ化され、あるいはアクティビティのより高いレベルに引き上げられることができる。一実施形態において、対応するコア３１２ｉは、パケット配布ロジック３６０からのワンショット割り込みメッセージを介して覚醒される（awakened）ことができる。別の実施形態において、プロセッサ内で稼働するソフトウェアが、例えば、その非アクティブ状態からアクティブ化されるキュー内の、１つ以上のメモリ場所を監視することができる。パケットがアクティブ化されたキューに到着するとき、上記ソフトウェアは、対応するコアをアクティブ化させて、アクティブ化されたキューに到着したパケットを処理することができる。
【００３４】
パケット配布ロジック３６０は、第２の閾値、例えば低い閾値に対する、合計キュー深さの比較を実行することができる。合計キュー深さが第２の閾値より小さい場合、パケット配布ロジック３６０は、アクティブ状態にある選択されたキュー、例えばキュー３１４３をアクティブ解除するように決定することができる。キュー３１４３が、パケット配布ロジック３６０によりアクティブ解除されるとき、さらなる到来パケットは、キュー３１４３内に記憶されない。キュー３１４３内に（例えば、場所３１６３及び３１８３に）記憶されるパケットは、コア３１２３により処理されることになる。キュー３１４３が空くとき、コア３１２３は、例えば電力管理ユニット（ＰＭＵ）３３０により、スリープ状態（又は、低電力状態）に置かれることができる。いくつかの実施形態において、ＰＭＵ３３０は、対応するコアのアクティビティレベルを綿密に監視することができる。特定のコアに記憶されたパケットが処理され終え、コアがアイドルになった後、ＰＭＵ３３０は、コアをスリープ状態（例えば、Ｃ１〜ＣＮ）に、又は低減された電力／パフォーマンス状態（例えば、Ｐ１〜ＰＮ）に置くことができる。アクティブキューの数の低減は、アクティブコアの数の低減を可能にすることができ、このことは、プロセッサ３１０の全体的エネルギー消費を低減させることができる。
【００３５】
図４は、本発明の別の実施形態に従うシステムのブロック図である。システム４００が、プロセッサ４１０と、プロセッサに結合されたネットワークインターフェースカード（ＮＩＣ）４６０とを含み、他のコンポーネント、例えばダイナミックランダムアクセスメモリ等（図示されていない）を含んでもよい。プロセッサ４１０は、複数のコア４１２１〜４１２Ｎ、パケット配布ロジック４２０（例えば、ハードウェア、ファームウェア、ソフトウェア、又はこれらの組み合わせ）、電力管理ユニット（ＰＭＵ）４３０、複数のキューを含み、上記複数のキューは、キューバンドル（queue  bundles）４２２、４２４、４２６、４３２、４３４、４３６、及び４３８を含む。プロセッサ４１０は、他のコンポーネント（図示されていない）、例えば、キャッシュメモリ、インターコネクトロジック等を含んでもよい。ＮＩＣ４６０は、パケット配布ロジック４７０（例えば、ハードウェア、ファームウェア、ソフトウェア、又はこれらの組み合わせ）を含む。
【００３６】
動作において、ＮＩＣ４６０は、ネットワーク入力４８０を介してネットワークからパケットを受信することができる。パケット配布ロジック４７０は、ネットワーク入力４８０を介して受信される各パケットについて、キューバンドル（例えば、１つ以上のキューのセット）内の特定のキューを決定して、対応するコア４１２ｉ（コア４１２１〜４１２Ｎのうちｉ番目のコア）がパケットを受信しかつ処理する準備ができるまでパケットを一時的に記憶する。図４の実施形態において、キューバンドル４３２は、パケットをコア４１２１に与え、キューバンドル４３４及び４３６は、パケットをコア４１２２に与え、キューバンドル４３８は、パケットをコア４１２Ｎ−１及び４１２Ｎに与える。他の実施形態において、各キューバンドルが、パケットを１つ以上のコアに与えてもよい。
【００３７】
パケット配布ロジック４７０は、利用可能記憶キャパシティに関して、キューバンドル４３２、４３４、４３６、・・・４３８の各々を監視することができる。パケット配布ロジック４７０は、合計キュー深さ（例えば、４３２、４３４、４３６、・・・４３８内のすべての占有された場所の総数）を決定することができる。パケット配布ロジック４７０は、第１の閾値（例えば、高い閾値）に対する合計キュー深さの比較を実行することができる。合計キュー深さが第１の閾値より大きい場合、パケット配布ロジック４７０は、さらなるキューバンドルを非アクティブ状態からアクティブ化するように決定して、到来パケットのための記憶可用性を増大させることができる。さらなるアクティブ化されたキューバンドルは、さらなるコア（図示されていない）が低電力状態から覚醒された後、該コアに与えることができる。
【００３８】
パケット配布ロジック４７０は、上記さらなるキューバンドルをアクティブとして、例えば、到来パケットを受信するのに利用可能として指定することができる。一実施形態において、パケット配布ロジック４７０は、「ウェイクアップメッセージ」をさらなるコアに送信することができる。別の実施形態において、プロセッサ４１０上で稼働するソフトウェアが、アクティブ化されたキューバンドルに対して到来パケットが送信されたことを検出することができ、対応するコア（４１２ｉのうち１つ）を起こして、アクティブ化されたキューバンドルにより供給されることになる到来パケットを処理させることができる。
【００３９】
ゆえに、さらなる実行キャパシティが正当化されるとき、さらなるキューバンドルが、アクティブ化されて到来パケットを受信することができ、スリープ状態（又は、低電力状態）における１つ（又は複数）の対応するコアが、アクティブ化され、又はその低電力状態からアクティビティのより高いレベルに引き上げられて、上記さらなるアクティブ化されたキューバンドルからパケットを受信することができる。
【００４０】
パケット配布ロジック４７０は、第２の閾値、例えば低い閾値に対する、合計キュー深さの比較を実行することができる。合計キュー深さが第２の閾値より小さい場合、パケット配布ロジック４７０は、アクティブ状態にある選択されたキューバンドル、例えばキューバンドル４３２をアクティブ解除するように決定することができる。キューバンドル４３２がパケット配布ロジック４７０によりアクティブ解除されるとき、さらなる到来パケットは、キューバンドル４３２内に記憶されない。キューバンドル４３２内に記憶されるパケットは、コア４１２１により処理されることになる。キューバンドル４３２が空くとき、コア４１２１は、例えばＰＭＵ４３０により、スリープ状態（又は、低電力状態）に置かれることができる。ゆえに、アクティブキューの数の低減は、アクティブコアの数の低減を可能にすることができ、このことは、プロセッサ４１０の全体的エネルギー消費を低減させることができる。
【００４１】
ＰＭＵ４３０は、各コアのアクティビティレベルを監視することができる。特定のキューバンドルがアクティブ解除される場合、対応するコアに記憶されたパケットが処理され終え、対応するコアがアイドルになった後、ＰＭＵ４３０は、対応するコアを、動作電圧の低減、クロック周波数の低減、又はこれらの組み合わせによって、スリープ状態（例えば、Ｃ１〜ＣＮ）に、又は低電力状態（例えば、Ｐ１〜ＰＮ）に置くことができる。別法として、プロセッサ４１０上で稼働するソフトウェアが、キュー内の場所の占有を監視することができる。キュー深さが特定のレベルを下回るとき、上記ソフトウェアは、対応するコアに、非アクティブ、例えば、スリープ状態（例えば、Ｃ１〜ＣＮ）又は低電力状態（例えば、Ｐ１〜ＰＮ）になるように指令することができる。
【００４２】
プロセッサ４１０内のパケット配布ロジック４２０は、パケットを第１のコアから第２のコアに再配布して、例えば、アクティブキューの総数及びアクティブコアの総数を最小化することができる。このことは、電力節減を結果としてもたらすことができる。例えば、パケット配布ロジック４２０は、選択されたパケット（例えば、処理され、キューバンドル４３２及び４３４内に一時的に記憶されることになるパケット）を、コア４１２１及び４１２２による上記選択されたパケットの処理の前に、キュー４２２及び４２４を介して受け入れることができ、上記選択されたパケットを、コア４１２Ｎにより処理されることになるキュー４２６に再配布することができる。（キュー４２２、４２４、４２６の構成は単に例示であり、他の構成が企図されることに留意する。）パケットの再配布は、キューバンドル４３２及び４３４内で処理を待ついかなる残りのパケットも除去することにより、キューバンドル４３２及び４３４のアクティブ解除と、対応するコア４１２１及び４１２２のアクティブ解除又は電力低減とを許容することができる。
【００４３】
図５は、本発明の一実施形態に従う方法のフロー図である。方法５００がブロック５０２で始まり、ブロック５０２において、プロセッサに、例えばマルチコアプロセッサにインターフェースされたネットワークインターフェースカード（ＮＩＣ）において、ネットワークからパケットを受信する。判断のひし形５０４へ続き、キュー深さの和が閾値１（例えば、高い閾値）を超えている場合、ブロック５０６に進み、パケット配布ロジック（これは、ＮＩＣ内又はプロセッサ内に位置し得る）が、１つのキューをアクティブキューのプールに追加する（キューをアクティブ化する）ことができる。対応するコアが、アクティブ化されて、アクティブ化されたキューにより受信されたパケットを処理することができる。判断のひし形５０８に移り、キュー深さの和が閾値２（例えば、低い閾値）より小さい場合、ブロック５１２に移り、パケット配布ロジックは、１つのキューをアクティブ解除し、例えば、選択されたキューをアクティブキューのプールから除去する。対応するコアが、アクティブ解除されることができる。ブロック５１２に進み、受信されたパケットを、アクティブキューの中から選ばれたキューに向けることができる。一実施形態において、受信したパケットを記憶するのに選ばれるキューは、最も少なく投入された（populated）アクティブキューである。
【００４４】
上記方法はブロック５０２に戻り、後続のパケットがＮＩＣにより受信される。
【００４５】
図６は、本発明の別の実施形態に従う方法である。方法６００は、マルチコアプロセッサの電力管理ユニット（ＰＭＵ）によってマルチコアプロセッサの各キューを監視して、プロセッサのいずれのキューが例えばパケット配布ロジックによりアクティブ解除されたかを決定し、その対応するキューがアクティブ解除され及び空である各コアの電力を下げる（又は、低減された電力レベルで動作させる）方法であり、上記パケット配布ロジックは、プロセッサとインターフェースするネットワークインターフェースカード（ＮＩＣ）に位置し得る（あるいは、プロセッサ内に位置し得る）。
【００４６】
キューは、インデックスｉ＝１，Ｎでラベル付けすることができる。各キューｉは、対応するコアによる実行のためにパケットを記憶し、該対応するコアに与える。
【００４７】
ブロック６０２において、インデックスｉはゼロ（０）に等しく設定される。ブロック６０４へ続き、インデックスｉはイチ（１）だけインクリメントされる。判断のひし形６０６に進み、インデックスｉがＮより大きく、ここでＮはプロセッサ内のキューの合計数である場合、上記方法はブロック６０２に戻り、各キューの考慮が再度始まる。ｉがＮより小さい場合、判断のひし形６０８に進み、ｉ番目のキューがアクティブである場合、ブロック６０４に戻り、インデックスｉはインクリメントされ、例えば、順次的に次のキューが考慮される。判断のひし形６０８において、ｉ番目のキューが非アクティブである（例えば、アクティブ解除されている）場合、判断のひし形６１０に進み、（非アクティブの）ｉ番目のキュー内に処理されることを待っているパケットがある場合、ブロック６１４へ続き、プロセッサの電力管理ユニットが、ｉ番目のコアが電力を上げられたままであってｉ番目のキュー内のパケットを処理することを許容する。判断のひし形６１０に戻り、ｉ番目のキュー内に記憶されたすべてのパケットが処理された（例えば、ｉ番目のキューが空である）とき、ブロック６１２に進み、ＰＭＵはｉ番目のコアを低電力又はスリープ状態に置く。
【００４８】
ゆえに、ＰＭＵは、コアのアクティビティレベルが、（ＮＩＣ内に又はプロセッサ内に位置する）パケット配布ロジックによる対応するキューのアクティブ解除に起因して停止したことを、検出することができる。ＰＭＵは、対応するアクティブ解除されたキュー内に記憶されたパケットが処理された後、コアを低電力状態（例えば、低減された電力／パフォーマンス状態又はスリープ状態）に置くことができる。
【００４９】
次に図７を参照すると、本発明の別の実施形態に従うシステム７００のブロック図が示され、システム７００は、マルチドメインプロセッサ７０２及びネットワークインターフェースカード７０４を含む。図７の実施形態に示されるとおり、プロセッサ７０２は、複数のドメインを含む。具体的に、コアドメイン７１０が、複数のコア７１００〜７１０ｎを含み、各コアは、対応するキュー７０８０〜７０８ｎを介してパケットを供給されることができる。プロセッサ７０２は、１つ以上のグラフィックスエンジンを含むことができるグラフィックスドメイン７２０をさらに含み、システムエージェントドメイン７５０がさらに存在し得る。いくつかの実施形態において、システムエージェントドメイン７５０は、コアドメインとは独立した周波数で実行することができ、常時パワーオンされたままであって電力制御イベント及び電力管理を扱うことができ、そのため、ドメイン７１０及び７２０が制御されて、高い電力状態及び低い電力状態に動的に入り、及び出ることができる。ドメイン７１０及び７２０の各々は、異なる電圧及び／又は電力で動作することができる。３つのドメインのみ図示されているが、本発明の範囲はこの点で限定されないことを理解されたく、さらなるドメインが他の実施形態において存在できることに留意する。例えば、複数のコアドメインが存在し、各々が少なくとも１つのコアを含んでもよい。
【００５０】
一般に、各コア７１０は、様々な実行ユニット及びさらなる処理要素に対して追加で、低レベルキャッシュをさらに含むことができる。同様にして、様々なコアが、互いに、及び、複数のユニットのラストレベルキャッシュ（ＬＬＣ）７４００〜７４０ｎで形成された共有キャッシュメモリに結合されてもよい。様々な実施形態において、ＬＬＣ７４０は、コア及びグラフィックスエンジン並びに様々なメディア処理回路の間で共有されることができる。ゆえに、図示されるとおり、リングインターコネクト７３０が、コアを一緒に結合し、コアとグラフィックスドメイン７２０とシステムエージェント回路７５０とにおける相互接続を提供する。一実施形態において、インターコネクト７３０はコアドメインの一部であり得る。しかしながら、他の実施形態において、リングインターコネクトはその独自のドメインのものであり得る。
【００５１】
さらに図示されるとおり、システムエージェントドメイン７５０は、ディスプレイコントローラ７５２を含むことができ、ディスプレイコントローラ７５２は、関連付けられたディスプレイの制御及び該ディスプレイに対するインターフェースを提供することができる。さらに図示されるとおり、システムエージェントドメイン７５０は、電力管理ユニット７５５を含むことができ、電力管理ユニット７５５は、本明細書に説明される実施形態に従い、各コアを動作させるための対応する電力レベルを決定する。
【００５２】
プロセッサ７０２は、パケット配布ロジック７０６を含むネットワークインターフェースカード７０４に結合され、本発明の実施形態に従い、パケット配布ロジック７０６は、キュー７０８０〜７０８ｎのうちいずれがネットワークから受信された到来パケットを受信すべきかを決定することができ、アクティブキューの総数を増加させ又は減少させるかどうかを決定することができる。例えば、パケット配布ロジック７０６は、合計キュー深さの第１の（例えば、高い）閾値に対する比較、又は第２の（例えば、低い）閾値に対する比較に基づいて、事前に非アクティブのキューをアクティブ化するように、あるいは現在アクティブのキューをアクティブ解除するように決定することができる。特定のキューがアクティブ解除される場合、ＰＣＵ７５５は、本発明の実施形態に従い、上記特定のキュー内の残りのパケットが処理された後、対応するコアを低電力状態、例えば、スリープ状態又は低電力／パフォーマンス状態に置くことにより、対応するコアにより消費される電力を低減させることができる。
【００５３】
図７にさらに示されるとおり、プロセッサ７００は、統合されたメモリコントローラ（integrated  memory  controller）（ＩＭＣ）７７０をさらに含むことができ、ＩＭＣ７７０は、システムメモリ、例えばダイナミックランダムアクセスメモリ（ＤＲＡＭ）などに対するインターフェースを提供することができる。複数のインターフェース７８００〜７８０ｎが存在して、プロセッサと他の回路との間の相互接続を可能にすることができる。例えば、一実施形態において、少なくとも１つのダイレクトメディアインターフェース（ＤＭＩ）インターフェースが、１つ以上のＰＣＩｅＴＭインターフェースと同様に提供されてもよい。またさらに、さらなるプロセッサ又は他の回路などの他のエージェント間における通信を提供するために、１つ以上のＱＰＩインターフェースがさらに提供されてもよい。図７の実施形態において上記高レベルで図示されているが、本発明の範囲は上記の点で限定されないことを理解されたい。
【００５４】
次に図８を参照すると、システム８００のブロック図が示され、システム８００は、ネットワークインターフェースカード（ＮＩＣ）８０４に結合された一代表的なシステムオンチップ（ＳｏＣ）８０２を含む。図示される実施形態において、ＳｏＣ８００は、スマートフォン又は他の低電力デバイス、例えばタブレットコンピュータ又は他のポータブルコンピューティングデバイスなどへの組み入れに対して最適化される低電力動作について構成された、マルチコアＳｏＣであり得る。一例として、ＳｏＣ８００は、非対称の又は異なるタイプのコア、例えば、より高い電力の及び／又はより低いの電力コアの組み合わせ、例えばアウトオブオーダコア及びインオーダコアなどを用いて実装することができる。種々の実施形態において、上記コアは、Ｉｎｔｅｌ（登録商標）アーキテクチャＴＭコア設計又はＡＲＭアーキテクチャ設計に基づいてもよい。さらに別の実施形態において、ＩｎｔｅｌコアとＡＲＭコアとの混合が、所与のＳｏＣに実装されてもよい。
【００５５】
図８に見られるとおり、ＳｏＣ８００は、複数の第１のコア８１２０〜８１２３を有する第１のコアドメイン８１０を含み、第１のコア８１２０〜８１２３の各々が、対応するキュー８１４０〜８１４３を介してパケットを受信する。一例において、コア８１２０〜８１２３は、低電力コア、例えばインオーダコアなどであり得る。一実施形態において、第１のコア８１２０〜８１２３は、ＡＲＭ  Ｃｏｒｔｅｘ  Ａ５３コアで実装されてもよい。同様にして、上記コアは、コアドメイン８１０のキャッシュメモリ８１５に結合する。さらに、ＳｏＣ８０２は、第２のコアドメイン８２０を含む。図８の例示において、第２のコアドメイン８２０は、複数のコア８２２０〜８２２３を有し、コア８２２０〜８２２３の各々が、対応するキュー８２４０〜８２４３を介してパケットを受信する。一例において、上記コア８２２０〜８２２３は、第１のコア８１２よりもより高い電力消費コアであり得る。一実施形態において、第２のコア８２２０〜８２２３はアウトオブオーダコアであり得、アウトオブオーダコアはＡＲＭ  Ｃｏｒｔｅｘ  Ａ５７コアで実装されてもよい。同様にして、上記コア８２２０〜８２２３は、コアドメイン８２０のキャッシュメモリ８２５に結合する。図８に示される例は各ドメイン内に４つのコアを含むが、より多くの又はより少ないコアが他の例において所与のドメイン内に存在してもよいことを理解することに留意されたい。
【００５６】
キュー８１４０〜８１４３及び８２４０〜８２４３の各々は、ＮＩＣ８０４に結合することができる。ＮＩＣ８０４は、パケット配布ロジック８０６を含み、パケット配布ロジック８０６は、キュー８１４０〜８１４３及び８２４０〜８２４３のうちいずれがネットワークから受信された到来パケットを受信すべきであるかを決定することができる。パケット配布ロジック８０６は、本発明の実施形態に従い、アクティブキューの総数を増加させるか又は減少させるかどうかをさらに決定することができる。例えば、パケット配布ロジック８０６は、合計キュー深さの、第１の（例えば、高い）閾値に対する比較、又は第２の（例えば、低い）閾値に対する比較に基づいて、非アクティブキューをアクティブ化するように、又は現在アクティブなキューをアクティブ解除するように決定することができる。特定のキューがアクティブ解除されることになる場合、対応するコアにより消費される電力は低減される可能性があり、例えば、コアが、例えばＳｏＣ８０２の電力管理ユニット（図示されていない）により、スリープ状態に、又は低減された電力／パフォーマンス状態に置かれることができる。
【００５７】
図８をさらに参照すると、グラフィックスドメイン８３０がさらに提供され、グラフィックスドメイン８３０は、グラフィックス作業負荷を独立して実行するように構成された１つ以上のグラフィックス処理ユニット（ＧＰＵ）を含むことができ、上記グラフィックス作業負荷は、例えば、コアドメイン８１０及び８２０の１つ以上のコアにより提供される。一例として、ＧＰＵドメイン８３０は、グラフィックス及びディスプレイレンダリング動作を提供することに追加で、様々な画面サイズについてディスプレイサポートを提供するのに使用することができる。
【００５８】
図示されるとおり、様々なドメインがコヒーレントインターコネクト８４０に結合する。コヒーレントインターコネクト８４０は、一実施形態においてキャッシュコヒーレントインターコネクトファブリックであり得、キャッシュコヒーレントインターコネクトファブリックは、同様にして、統合されたメモリコントローラ８５０に結合する。コヒーレントインターコネクト８４０は、いくつかの例において、共有キャッシュメモリ、例えばＬ３キャッシュなどを含むことができる。一実施形態において、メモリコントローラ８５０は、オフチップメモリとの通信の複数のチャネル、例えばＤＲＡＭ（簡素化のため図８の例示には示されていない）の複数のチャネルなどを提供するダイレクトメモリコントローラであり得る。
【００５９】
種々の例において、コアドメインの数は変動し得る。例えば、モバイルコンピューティングデバイスへの組み入れに適した低電力ＳｏＣについて、図８に示されるものなどの限られた数のコアドメインが存在し得る。またさらに、上記低電力ＳｏＣにおいて、より高い電力のコアを含むコアドメイン８２０は、より少数のこうしたコアを有してもよい。例えば、一実装において、２つのコア８２２が提供されて、低減された電力消費レベルにおける動作を可能にすることができる。さらに、種々のコアドメインが、割り込みコントローラにさらに結合されて、種々のドメイン間における作業負荷の動的スワッピングを可能にしてもよい。
【００６０】
さらに別の実施形態において、より多数のコアドメインと、さらなる動作ＩＰロジックとが、ＳｏＣが他のコンピューティングデバイス、例えばデスクトップ、サーバ、高パフォーマンスコンピューティングシステム、基地局などへの組み入れのためにより高いパフォーマンス（及び、電力）レベルにスケーリングされることができる点で、存在してもよい。１つのこうした例として、各々が所与の数のアウトオブオーダコアを有する４つのコアドメインが提供され得る。またさらに、動作ＧＰＵサポート（これは、一例として、ＧＰＧＰＵの形式をとり得る）に追加で、特定の機能（例えば、ウェブサービング、ネットワーク処理、スイッチング等）のための最適化されたハードウェアサポートを提供する１つ以上のアクセラレータが、さらに提供されてもよい。さらに、入力／出力インターフェースが存在して、上記アクセラレータをオフチップコンポーネントに結合してもよい。
【００６１】
さらなる実施形態が以下に説明される。
【００６２】
第１の実施形態において、システムが、複数のコアと複数のキューとを含むプロセッサを含み、各キューは、上記コアの少なくとも１つにより処理されるパケットを記憶する記憶場所を含み、各キューは、アクティブ及び非アクティブのうちの１つである対応する状態を有し、各アクティブキューは、到来パケットを記憶することを可能にされ、各非アクティブキューは、上記到来パケットの記憶を不能にされ、各キューは、該キューの占有された記憶場所の数（a  count  of  occupied  storage  locations）を含む対応するキュー深さを有する。当該システムは、上記アクティブキューのキュー深さの和を含む合計キュー深さに基づいて上記複数のキューのうちの第１キューの状態を第１状態から第２状態に変更するかを決定するパケット配布ロジックをさらに含む。
【００６３】
第２の実施形態が、第１の実施形態の要素を含み、上記合計キュー深さが第１閾値を超えているとき、上記パケット配布ロジックは、上記第１キューの状態を第１状態の非アクティブから第２状態のアクティブに変更する。
【００６４】
第３の実施形態が、第２の実施形態の要素を含み、上記第１キューの状態がアクティブに変更された後、上記パケット配布ロジックは、上記到来パケットを上記第１キューに記憶されるように向ける。
【００６５】
第４の実施形態が、第２の実施形態の要素を含み、上記プロセッサは、電力管理ユニット（ＰＭＵ）をさらに含み、上記第１キューのアクティブ化に応答して、上記ＰＭＵは、対応するコアを、低減された電力状態から、該低減された電力状態よりもより多くの電力を消費するアクティブ電力状態に変更する。
【００６６】
第５の実施形態が、第１の実施形態の要素を含み、上記合計キュー深さが、第２閾値より小さいとき、上記パケット配布ロジックは、第２キューの状態を、第１状態のアクティブから第２状態の非アクティブに変更する。
【００６７】
第６の実施形態が、第５の実施形態の要素を含み、上記第２キューのキュー深さは、上記アクティブキューのキュー深さのうち最小である。
【００６８】
第７の実施形態が、第５の実施形態の要素を含み、上記プロセッサは、電力管理ユニット（ＰＭＵ）をさらに含み、上記第２キューのアクティブ解除に応答して、上記ＰＭＵは、対応するコアのコア状態をアクティブ状態から低減された電力状態に変更する。
【００６９】
第８の実施形態が、第５の実施形態の要素を含み、上記パケット配布ロジックは、上記第２キューのアクティブ解除に応答して、対応するコアをアクティブ状態から低減された電力状態に変更させる。
【００７０】
第９の実施形態が、実施形態１乃至８のうちいずれか１つの要素を含み、上記パケット配布ロジックは、到来パケットを、対応する状態がアクティブである第３キューに記憶されるように向け、上記第３キューのキュー深さは、上記アクティブキューのキュー深さのうち最小である。
【００７１】
第１０の実施形態が、実施形態１乃至８のうちいずれか１つの要素を含み、上記プロセッサに結合され、かつ上記パケット配布ロジックを含むネットワークインターフェースカード（ＮＩＣ）、をさらに含み、上記ＮＩＣは、ネットワークからの到来パケットを受信し、上記パケット配布ロジックは、各々の到来パケットについて、対応するアクティブキューを選択して上記到来パケットを記憶する。
【００７２】
第１１の実施形態が、命令を含む少なくとも１つのマシン読取可能記憶媒体を含み、上記命令は実行されると、システムが、複数のコアと複数のキューとを含むプロセッサのアクティブキューの合計キュー深さを決定することであって、各コアは、該コアにより処理されるパケットを記憶する少なくとも１つの対応するキューを有し、各キューは、アクティブ及び非アクティブのうちの１つである対応する状態を有し、各アクティブキューは、上記プロセッサに結合されたネットワークインターフェースカード（ＮＩＣ）から受信される到来パケットを受信しかつ記憶することを可能にされ、各非アクティブキューは、上記到来パケットの受信及び記憶を不能にされ、各アクティブキューは、該キュー内の占有された場所の数を含む関連付けられたキュー深さを有し、上記合計キュー深さは、上記アクティブキューのキュー深さの和を含む、ことと、少なくとも上記合計キュー深さに基づいて、上記複数のキューのうちの第１キューの状態を変更するかを決定することと、を可能にする。
【００７３】
第１２の実施形態が、第１１の実施形態の要素を含み、上記合計キュー深さが第１閾値を超えていることに応答して上記第１キューの状態を非アクティブからアクティブに変更する命令をさらに含む。
【００７４】
第１３の実施形態が、第１２の実施形態の要素を含み、上記第１キューの状態がアクティブに変更された後、上記到来パケットを記憶のために上記第１キューに向ける命令をさらに含む。
【００７５】
第１４の実施形態が、第１２の実施形態の要素を含み、上記第１キューのアクティブ化に応答して、対応するコアを低電力状態から、該低電力状態よりもより多くの電力を消費するアクティブ電力状態に置く命令をさらに含む。
【００７６】
第１５の実施形態が、実施形態１１乃至１４のうちいずれか１つの要素を含み、上記合計キュー深さが第２閾値より小さいことに応答して、上記第１キューの状態をアクティブから非アクティブに変更する命令をさらに含む。
【００７７】
第１６の実施形態が、第１５の実施形態の要素を含み、上記第２閾値は、ある時間にわたる上記合計キュー深さの変化のレートに基づいて決定される。
【００７８】
第１７の実施形態が、第１５の実施形態の要素を含み、上記第１キューのアクティブ解除に応答して、対応するコアをアクティブ電力状態から、該アクティブ電力状態よりもより少ない電力を消費する低減された電力状態に変更させる命令をさらに含む。
【００７９】
第１８の実施形態が、方法であり、当該方法は、複数のアクティブキューの各々について、複数のコアと複数のキューとを含むプロセッサの占有された記憶場所の数を含む対応するキュー深さを決定することを含み、各キューは、上記コアの少なくとも１つに関連付けられ、各キューは、アクティブ及び非アクティブのうちの１つである対応する状態を有し、各アクティブキューは、上記プロセッサに結合されたネットワークインターフェースカード（ＮＩＣ）から受信される到来パケットを記憶することを可能にされ、各非アクティブキューは、上記到来パケットの受信及び記憶を不能にされ、各コアは、上記アクティブキューの少なくとも１つから受信される１つ以上のパケットを処理する。当該方法は、上記ＮＩＣからの上記到来パケットを、上記対応するキュー深さに基づいて、上記アクティブキューから選択された第１アクティブキューに向けることをさらに含む。
【００８０】
第１９の実施形態が、第１８の実施形態の要素を含み、上記到来パケットを、上記対応するキュー深さが上記アクティブキューのそれぞれのキュー深さのうち最小であることに応答して、上記第１アクティブキューに向けること、をさらに含む。
【００８１】
第２０の実施形態が、第１８の実施形態の要素を含み、少なくとも合計キュー深さに基づいて、上記複数のキューのうちの第２キューの対応する状態を変更するかを決定することをさらに含み、上記合計キュー深さは、上記アクティブキューのキュー深さの和を含む。
【００８２】
第２１の実施形態が、第２０の実施形態の要素を含み、上記第２キューの対応する状態を、上記合計キュー深さが第１閾値を超えていることに応答して非アクティブからアクティブに変更することをさらに含む。
【００８３】
第２２の実施形態が、第２１の実施形態の要素を含み、上記第２キューの対応する状態がアクティブに変更された後、上記到来パケットを記憶のために上記第２キューに向けることをさらに含む。
【００８４】
第２３の実施形態が、第２１の実施形態の要素を含み、上記第２キューのアクティブ化に応答して、対応するコアを低電力状態から、該低電力状態よりもより多くの電力を消費するアクティブ電力状態に変更させることをさらに含む。
【００８５】
第２４の実施形態が、第２０の実施形態の要素を含み、上記第２キューの対応する状態を、上記合計キュー深さが第２閾値より小さいことに応答してアクティブから非アクティブに変更することをさらに含む。
【００８６】
第２５の実施形態が、第２４の実施形態の要素を含み、上記第２閾値は、ある時間にわたる上記合計キュー深さの変化のレートに基づいて決定される。
【００８７】
第２６の実施形態が、第２４の実施形態の要素を含み、上記第２キューの対応する状態が非アクティブに変わることに応答して、対応するコアをアクティブ電力状態から、該アクティブ電力状態よりもより少ない電力を消費する低減された電力状態に変更させることをさらに含む。
【００８８】
第２７の実施形態が、装置であり、当該装置は、実施形態１８〜２６のうちいずれか１つの方法を実行する手段を含む。
【００８９】
第２８の実施形態が、実施形態１８〜２６のうちいずれか１つの方法を実行する装置である。
【００９０】
第２９の実施形態が、方法であり、当該方法は、複数のコアと複数のキューとを含むプロセッサのアクティブキューの合計キュー深さを決定することを含み、各コアは、該コアにより処理されるパケットを記憶する少なくとも１つの対応するキューを有し、上記合計キュー深さは、上記複数のキューのうちすべてのアクティブキューの占有された場所の数を含み、上記アクティブキューのうちの各キューは、アクティブキューの占有された場所の数を含む対応するキュー深さを有し、各キューは、アクティブ及び非アクティブのうちの１つである対応する状態を有し、各アクティブキューは、上記プロセッサに結合されたネットワークインターフェースカード（ＮＩＣ）からの到来パケットを受信しかつ記憶することを可能にされ、各非アクティブキューは、上記到来パケットの受信及び記憶を不能にされる。当該方法は、少なくとも上記合計キュー深さに基づいて、上記複数のキューのうちの第１キューの対応する状態を変更するかを決定することをさらに含む。
【００９１】
第３０の実施形態が、第２９の実施形態の要素を含み、上記合計キュー深さが第１閾値より大きいことに応答して、上記第１キューの対応する状態を非アクティブからアクティブに変更することをさらに含む。
【００９２】
第３１の実施形態が、第２９の実施形態の要素を含み、上記合計キュー深さが第２閾値より小さいことに応答して、上記第１キューの対応する状態をアクティブから非アクティブに変更することをさらに含む。
【００９３】
第３２の実施形態が、第３１の実施形態の要素を含み、上記第１キューの対応する状態が非アクティブに変わることに応答して、対応するコアをアクティブ電力状態から、該アクティブ電力状態よりもより少ない電力を消費する低減された電力状態に変更させることをさらに含む。
【００９４】
実施形態は、多くの種々のタイプのシステムにおいて使用されてよい。例えば、一実施形態において、通信デバイスを、本明細書に説明される様々な方法及び手法を実行するように配置することができる。当然ながら、本発明の範囲は通信デバイスに限定されず、代わって、他の実施形態が、コンピューティングデバイス上で実行されることに応答して本明細書に説明される方法及び手法の１つ以上をデバイスに実行させる命令を処理する他タイプの装置、又は該命令を含む１つ以上のマシン読取可能媒体に向けられることが可能である。
【００９５】
実施形態は、コードにおいて実装されてもよく、命令を実行するようにシステムをプログラムするのに使用できる上記命令を記憶させた非一時的記憶媒体に記憶されてもよい。実施形態は、さらに、データにおいて実装されてもよく、少なくとも１つのマシンにより使用される場合に該少なくとも１つのマシンに１つ以上の動作を実行するための少なくとも１つの集積回路を製作させる非一時的記憶媒体に記憶されてもよい。記憶媒体には、これらに限られないが、フロッピーディスク、光ディスクを含む任意タイプのディスク、ソリッドステートドライブ（ＳＳＤ）、コンパクトディスク読取専用メモリ（ＣＤ−ＲＯＭ）、コンパクトディスクリライタブル（ＣＤ−ＲＷ）、磁気光ディスク、半導体デバイス、例えば読取専用メモリ（ＲＯＭ）など、ランダムアクセスメモリ（ＲＡＭ）、例えばダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）など、消去可能プログラマブル読取専用メモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的消去可能プログラマブル読取専用メモリ（ＥＥＰＲＯＭ）、磁気若しくは光学カード、又は電子命令を記憶するのに適した任意の他タイプの媒体を含むことができる。
【００９６】
本発明は、限られた数の実施形態に関して説明されたが、これらからの多数の修正及びバリエーションを当業者は十分理解するであろう。別記の請求項は、本発明の真の主旨及び範囲内に入るときすべての上記修正及びバリエーションをカバーすることが意図される。
【図１】
2018512648.tif 000003
【図２】
2018512648.tif 000004
【図３】
2018512648.tif 000005
【図４】
2018512648.tif 000006
【図５】
2018512648.tif 000007
【図６】
2018512648.tif 000008
【図７】
2018512648.tif 000009
【図８】
2018512648.tif 000010
【国際調査報告】
2018512648.tif 000011
2018512648.tif 000012