(58)【調査した分野】(Int.Cl.,DB名)
前記1つ以上のクライアントの少なくとも1つのクライアントは、複数のコアを含み、前記複数のノードのマスタノードは、調停割り込みに対して前記複数のコアの割り込み優先度を前記複数のノードに記憶するように構成されている、請求項1に記載のコンピューティングシステム。
調停割り込みに対するコアの優先度が前記第1のノードにおいて更新されたと判定したことに応答して、前記第1のノードは、前記マスタノードに記憶された調停割り込みに対してコアの優先度を更新するために、前記マスタノードに前記更新された優先度を送信するように構成されている、請求項4に記載のコンピューティングシステム。
前記1つ以上のクライアントの少なくとも1つのクライアントは、複数のコアを含み、少なくとも前記第1のノードは、前記複数のコアの各コアに対して固定割り込み識別子(ID)のインジケーションを記憶するように構成されている、請求項1に記載のコンピューティングシステム。
前記1つ以上のクライアントの少なくとも1つのクライアントは、複数のコアを含み、前記方法は、前記複数のノードのマスタノードによって、調停割り込みに対して前記複数のコアの割り込み優先度を前記複数のノードに記憶することを更に備えた、請求項9に記載の方法。
調停割り込みに対するコアの優先度が前記第1のノードにおいて更新されたと判定したことに応答して、前記方法は、前記第1のノードによって、前記マスタノードに記憶された調停割り込みに対してコアの優先度を更新するために、前記マスタノードに前記更新された優先度を送信することを更に備えた、請求項13に記載の方法。
前記1つ以上のクライアントの少なくとも1つのクライアントは、複数のコアを含み、前記方法は、少なくとも前記第1のノードによって、前記複数のコアの各コアに対して固定割り込み識別子(ID)のインジケーションを記憶することを更に備えた、請求項9に記載の方法。
【発明を実施するための形態】
【0008】
本発明は様々な修正及び代替的な形式を許容することができ、特定の実施形態は、図面中の例として示され、本明細書で詳細に説明される。しかしながら、図面及びそれに対する詳細な説明は、開示された特定の形式に本発明を限定することを意図していない。逆に、本発明は、添付の特許請求の範囲によって定義されるような本発明の範囲内に収まる全ての修正、同等物、及び代替物を網羅することが理解されるべきである。
【0009】
以下の説明では、本明細書で提示される方法及び機構の完全な理解をもたらすために、多数の特定の詳細が示される。しかしながら、当業者は、様々な実施形態がそれらの特定の詳細なしに実施されてもよいことを認識するべきである。いくつかの例では、本明細書で説明されるアプローチを曖昧にすることを回避するために、公知の構造、構成要素、信号、コンピュータプログラム命令、及び技術が詳細には示されていない。例示の単純さ及び簡潔さのために、図面に示される要素は、必ずしも同一縮尺で記述されていないことが認識されよう。例えば、要素のいくつかの寸法は、他の要素に対して拡張されてもよい。
【0010】
マルチノードコンピューティングシステムに対して効率的な電力管理を実行する様々なシステム、装置、方法、及びコンピュータ可読媒体が開示される。様々な実施形態では、処理ノードは、アプリケーションを処理するための1つ以上のクライアントを含む。ノード内のクライアントの例は、汎用中央処理装置(CPU)、グラフィックプロセシングユニット(GPU)、アクセラレーテッドプロセシングユニット(APU)、及び入力/出力(I/O)デバイスなどを含む。処理ノードはまた、少なくとも電力コントローラ、及び他のノードとメッセージを転送するための複数のリンクインタフェースを含む。本明細書で使用されるように、処理ノードは、ノードとも称される。
【0011】
いくつかの実施形態では、コンピューティングシステムは、マルチノードシステムであり、マルチノードシステムは、各々がその自身の1つ以上のクライアント及び電力コントローラを有する、ノードの複数のコピーを含む。様々な実施形態では、コンピューティングシステムは、共有メモリアーキテクチャを利用し、共有メモリアーキテクチャでは、所与のノード内の所与のプロセッサは、別のノードのリモートメモリにアクセスするよりも短い待ち時間によりそのローカルメモリにアクセスする。言い換えると、コンピューティングシステムは、非一様メモリアクセス(NUMA)アーキテクチャを利用し、コンピューティングシステム内のノードの各々は、NUMAノードである。
【0012】
複数のノードの第1のノードの電力コントローラは、その1つ以上のクライアントの各クライアントがアイドルであるときを判定する。加えて、電力コントローラは、第1のノードのダイナミックランダムアクセスメモリ(DRAM)など、第1のノードのシステムメモリにアクセスすることを試みているリモートメモリ要求が存在しないときを判定する。それらの条件が満たされると電力コントローラが判定するとき、実施形態では、電力コントローラは、そのリンクのうちの1つ以上の上で1つ以上のノードに、第1のノードのパワーダウンした状態を指定するインジケーションを送信する。その後、第1のノードは、パワーダウンさせるために、そのキャッシュをフラッシュすること、プローブフィルタの各エントリを取り消すこと、及びプローブフィルタ内のエントリを無効にした結果として受信されたダーティキャッシュラインにより第1のノードに接続されたシステムメモリを更新することなど、複数のステップを実行する。その後、ステップは、リンクインタフェースに対してドライバを無効にすること、1つ以上のクライアント及び1つ以上のクライアントとメモリコントローラとの間の通信ファブリック転送トラフィックに対してクロックを無効にすること、及びダイナミックランダムアクセスメモリ(DRAM)が使用されるときにセルフリフレッシュを実行するようシステムメモリを設定することなどを含む。
【0013】
第1のノードがパワーダウンしたままの時間の量を増大させるために、一実施形態では、上記説明されたように、キャッシュをフラッシュすること、及びプローブフィルタを取り消すことが実行される。他の実施形態では、パワーダウンした第1のノードに直接接続された第2のノードは、第3のノードからブロードキャストプローブを受信し、第2のノードは、第1のノードがパワーダウンしたと第2のノードが判定するときに、パワーダウンした第1のノードに対してミス応答を生成する。第2のノードは、第1のノードに、第1のノードを呼び出し、第1のノードにパワーダウンした状態からアクティブ状態に遷移させるブロードキャストプローブを送信しない。第2のノードは、パワーダウンした第1のノードの代わりに、第3のノードにミス応答を送信する。
【0014】
いくつかの実施形態では、コンピューティングシステムは、複数のプロセッサコアの割り込み優先度をコンピューティングシステムに記憶するためのマスタノードを含み、割り込み優先度は、調停割り込みに対応する。したがって、調停割り込みは、ブロードキャストメッセージではなく、ポイントツーポイントユニキャストメッセージによりプロセッサコアによって扱われる。同様に、コンピューティングシステム内の複数のプロセッサコアは、複数のプロセッサコアの各プロセッサコアに対して固定割り込み識別子(ID)の記憶をサポートすることによって、ブロードキャストメッセージではなく、ポイントツーポイントメッセージにより固定割り込みを扱う。したがって、パワーダウンしたノードは、割り込みを扱うためのブロードキャストプローブによっては呼び出されない。それらの実施形態及び他の実施形態が可能であり、考慮される。
【0015】
図1を参照して、処理ノード100の一実施形態の全体ブロック図が示される。示されるように、処理ノード100は、クライアント110の各々の間の通信ファブリック120、プローブフィルタ113、メモリコントローラ130、電力コントローラ170、及びリンクインタフェース180を含む。いくつかの実施形態では、処理ノード100の構成要素は、システムオンチップ(SOC)など、集積回路(IC)上の個々のダイである。他の実施形態では、構成要素は、システムインパッケージ(SiP)またはマルチチップモジュール(MCM)内の個々のダイである。
【0016】
様々な実施形態では、通信ファブリック120は、クライアント110とメモリコントローラ130との間で前後にトラフィックを転送し、それぞれの通信プロトコルをサポートするためのインタフェースを含む。いくつかの実施形態では、通信ファブリック120は、少なくとも、要求及び応答を記憶するためのキュー、内部ネットワークにわたって要求を送信する前に受信された要求の間で調停するための選択ロジック、パケットを構築及び復号するためのロジック、並びにパケットに対して経路を選択するためのロジックを含む。
【0017】
例示される実施形態では、クライアント110は、中央処理装置(CPU)112、グラフィックプロセシングユニット(GPU)114、及びハブ116を含む。ハブ116は、マルチメディアエンジン118と通信するために使用される。CPU112、GPU114、及びマルチメディアエンジン118は、アプリケーションを処理することが可能なコンピューティングリソースの例である。示されないが、他の実施形態では、他のタイプのコンピューティングリソースがクライアント110に含まれる。実施形態では、GPU114は、相当な数の並列実行レーンを有する高並列データマイクロアーキテクチャを含む。一実施形態では、マイクロアーキテクチャは、並列実行レーンに対して単一命令複数データ(SIMD)パイプラインを使用する。マルチメディアエンジン118は、マルチメディアアプリケーションに対して音声データ及び視覚データを処理するためのプロセッサを含む。
【0018】
いくつかの実施形態では、CPU112内の1つ以上のプロセッサコアの各々は、所与の選択された命令セットアーキテクチャ(ISA)に従って命令を実行するための回路を含む。様々な実施形態では、CPU112内のプロセッサコアの各々は、所与のISAの命令を処理するために使用されるスーパースカラ、マルチスレッドマイクロアーキテクチャを含む。本明細書で使用されるように、プロセッサコアは、コアとも称される。一実施形態では、CPU112は、各々が2つのソフトウェアスレッドを処理するための2つのハードウェアスレッドを含む、8個のコアを含む。したがって、そのような実施形態では、CPU112は、16個のスレッドを同時に処理することが可能である。他の実施形態では、同時マルチスレッドに対するいずれかの数のスレッドがCPU112によってサポートされる。
【0019】
リンクインタフェース180は、リンク上でメッセージを転送することによって、処理ノード100と他の処理ノードとの間の通信をサポートする。様々な実施形態では、ノードの間でリンクにわたって送信されたメッセージは、1つ以上のノードについての動作状態のインジケーション、要求への応答、割り込み、及び他の情報を含む。様々な実施形態では、各リンクは、2つのノードの間のポイントツーポイント通信チャネルである。物理レベルにおいて、リンクは、1つ以上のレーンを含む。いくつかの実施形態では、リンクインタフェース180、前記対応するリンク、及び他のノードは、PCI(Peripheral Component Interconnect Express)、InfiniBand、RapidIO、及びHyperTransportなどの通信プロトコル接続を含む。いくつかの実施形態では、リンクインタフェース180は、相互接続リンクを介して他のノードと通信するために使用される制御ロジック及びバッファまたはキューを含む。
【0020】
単一のメモリコントローラ130が示されるが、他の実施形態では、別の数のメモリコントローラが処理ノード100において使用される。様々な実施形態では、メモリコントローラ130は、通信ファブリック120を介してクライアント110からメモリ要求を受信し、メモリ要求をスケジュールし、システムメモリ及びメインメモリのうちの1つ以上にスケジュールされたメモリ要求を送信する。メモリコントローラ130はまた、システムメモリ及びメインメモリから応答を受信し、クライアント110内の対応する要求元に応答を送信する。様々な実施形態では、システムメモリは、I/Oコントローラ及びバス160及びメモリバス150を通じてメインメモリからのデータにより充填される。元のメモリ要求を完了するために、要求されたブロックによる対応するキャッシュ充填ラインは、クライアント110内でメインメモリからキャッシュメモリサブシステムの対応する1つに搬送される。キャッシュ充填ラインは、キャッシュのうちの1つ以上のレベルに配置される。
【0021】
いくつかの実施形態では、処理ノード100のアドレス空間は、少なくともCPU112、GPU114、及びハブ116、並びに入力/出力(I/O)周辺機器デバイス(図示せず)及び他のタイプのコンピューティングリソースなどの1つ以上の構成要素にわたって分割される。メモリマップは、どのアドレスがどの構成要素にマッピングされるかを判定し、よって、特定のアドレスについてのメモリ要求がCPU112、GPU114、及びハブ116のどの1つに経路指定されるべきかを判定するために維持される。実施形態では、システムメモリは、様々なダイナミックランダムアクセスメモリ(DRAM)の1つであり、対応するプロトコルは、メモリコントローラ130によってサポートされる。プロトコルは、クロックサイクルごとのデータ転送の回数、信号電圧レベル、信号タイミング、信号及びクロック位相、並びにクロック周波数など、情報転送のために使用される値を判定する。いくつかの実施形態では、メインメモリは、様々なタイプの不揮発性の、データのランダムアクセス二次記憶装置の1つである。メインメモリの例は、ハードディスクドライブ(HDD)及びソリッドステートディスク(SSD)である。
【0022】
一実施形態では、電力コントローラ170は、クライアント110からデータを収集する。いくつかの実施形態では、電力コントローラ170はまた、メモリコントローラ130からデータを収集する。いくつかの実施形態では、収集されたデータは、予め定められたサンプリングされた信号を含む。サンプリングされた信号の切り替えは、切り替えられたキャパシタンスの量を示す。サンプリングするための選択された信号の例は、クロックゲータイネーブル信号、バスドライバイネーブル信号、コンテンツアドレス指定可能メモリ(CAM)における不一致、及びCAMワードライン(WL)ドライバなどを含む。実施形態では、電力コントローラ170は、所与のサンプリング間隔の間にノード100内で電力消費を特徴付けるデータを収集する。
【0023】
いくつかの実施形態では、ノード100内のオンダイ電流センサ及び温度センサも、電力コントローラ170に情報を送信する。電力コントローラ170は、センサ情報、発行命令または発行スレッドのカウント、及びノード100に対して電力消費を推定する重み付けサンプリングされた信号の合計のうちの1つ以上を使用する。電力コントローラ170は、ノード100が閾値制限を上回って(下回って)動作している場合に電力消費を減少させる(または、増大させる)。いくつかの実施形態では、電力コントローラ170は、クライアント110内のコンピューティングリソースの各々に対してそれぞれの電力性能状態(P−状態)を選択する。P−状態は、少なくとも動作電圧及び動作クロック周波数を含む。様々な実施形態では、電力コントローラ170及びノード100は、N P−状態をサポートし、Nは、正の非ゼロの整数である。
【0024】
様々な実施形態では、処理ノード100は、マルチノードシステム内の複数のノードの1つのノードである。実施形態では、システムは、複数のサーバのサーバである。時に、サーバにバッチとして送信されるジョブは、各サーバに割り当てられない。所与のサーバは、相当の時間量の間にアイドルになることができる。電力消費を減少させるために、サーバ内の複数のノードは、パワーダウンすることができる。様々な実施形態では、電力コントローラ170は、クライアント110のうちの1つ以上がアイドルになるときを検出する。クライアント110の各々がアイドルになる場合、次いで、実施形態では、電力コントローラ170は、リンクインタフェース180を介してそのリンクのうちの1つ以上の上で1つ以上のノードに、パワーダウンした状態を指定するインジケーションを中継する。いくつかの実施形態では、電力コントローラ170は、CPU112及びGPU114の各々に、そのキャッシュメモリサブシステム内の各キャッシュをフラッシュするメッセージを送信する。
【0025】
加えて、電力コントローラ170は、プローブフィルタ113の各エントリを取り消すと共に、プローブフィルタ113内のエントリを取り消した結果として受信されたダーティキャッシュラインによりシステムメモリを更新するメッセージを送信する。その後、電力コントローラ170は、リンクインタフェースに対してドライバを無効にし、クライアント110及び通信ファブリック120、メモリコントローラ130に対してクロックを無効にし、ダイナミックランダムアクセスメモリ(DRAM)が使用されるときにセルフリフレッシュを実行するようシステムメモリを設定するメッセージを送信する。
【0026】
多くのディレクトリに基づくキャッシュコヒーレンシプロトコルは、コンピューティングシステム内の様々なキャッシュの間で通信するための、メモリコントローラなどのコヒーレンシポイントから渡される、メッセージまたはプローブの使用を含む。実施形態では、通信ファブリック120は、プローブフィルタ113を維持する。様々な実施形態では、プローブフィルタ113は、複数のエントリを有するディレクトリとして実装される。プローブフィルタ113のエントリは、データのキャッシュされたコピーの存在を示す情報を包含する。いくつかの実施形態では、各エントリは、有効ビット、キャッシュラインのタグ、キャッシュラインのキャッシュコヒーレンシ状態を指定するインジケーション、ノード所有権識別子(ID)、データのキャッシュされたコピーをローカルシステムメモリに記憶するリモートクライアントとのリモートノードの1つ以上のノードID、及びクリーン/ダーティ状態、などを記憶する。いくつかの実施形態では、キャッシュコヒーレンシ状態は、修正され、所有され、排他的であり、共有され、及び取り消しされる。
【0027】
プローブフィルタ113内のエントリは、コンピューティングシステム内の他の処理ノードのキャッシュに記憶されたコピーを有する、処理ノード100内の各キャッシュラインを追跡する。処理ノード100にローカルに、または別の処理ノードにリモートであるかに関わらず、システムメモリに記憶されたラインがキャッシュされる場合、ラインについてのエントリは次いで、プローブフィルタ113において割り振られる。プローブフィルタ113のエントリ内の割り振られたエントリの不存在は、特定のラインがキャッシュされていないことを示す。プローブを無条件にブロードキャストするのではなく、特定のコヒーレンシ動作を生じさせるためにプローブが搬送される必要がある特定のサブシステム(データのキャッシュされたコピーを包含することができる)を判定するためにプローブフィルタ113が使用される。
【0028】
様々な実施形態では、CPU112によって処理されている複数のスレッドの各々は、割り込みをアサートし、割り込みサービスルーチンのアドレスを受信することが可能である。様々な実施形態では、処理ノード100は、マルチプロセッサコンピューティングシステム内で割り込みを経路指定するための割り込みリダイレクションをサポートするマルチノードコンピューティングシステムの1つのノードである。このプロトコルは、コンピューティングシステムの複数のノード内のプロセッサの間で割り込みを送信する。割り込みモードまたは割り込みタイプに基づいて、割り込みは、割り込み識別子(ID)に基づいて割り込みを検出するプロセッサから特定のノード内の特定のプロセッサに送信される。一実施例では、IDは、特定のノード内の特定のプロセッサを識別するために使用される。本明細書で使用されるように、それらのタイプの割り込みは、「固定割り込み」と称される。固定割り込みを扱うために選択されたプロセッサは、IDに基づいて固定される。同様に、異なる割り込みモードまたは異なる割り込みタイプに基づいて、割り込みは、調停に基づいて割り込みを検出するプロセッサから特定のノード内の特定のプロセッサに送信される。一実施例では、プロセッサ内の各ハードウェアスレッドまたは各コアは、割り込み優先度を割り当てられ、最下位優先度を有するプロセッサ(複数可)は、アサートされた割り込みを扱うよう、調停ロジックによって選択される。本明細書で使用されるように、それらのタイプの割り込みは、「調停割り込み」と称される。いくつかの実施形態では、異なるプロセッサの間で割り込みを送信するために使用されるプロトコルは、APIC(アドバンストプログラム可能割り込みコントローラ)プロトコルであり、コアまたはコア内のハードウェアスレッドのいずれかを識別するために使用される識別子は、APIC IDである。
【0029】
実施形態では、割り込みコントローラ111は、リンクインタフェース180を介して、リモートCPU上のコアによってアサートされた複数の割り込みに加えて、CPU112上で稼働する複数のスレッドによってアサートされた複数の割り込みを受信する。割り込みコントローラ111はまた、APICプロトコルなどの選択された割り込み経路指定プロトコルに基づいて、リンクインタフェース180を介してCPU112内の他のコア及びリモートCPU内の他のコアに割り込みを経路指定する。いくつかの実施例では、割り込みコントローラ111は、割り込みを使用可能にする他のコアに割り込みを送信する。他のコアは、ローカルまたはリモートであるかに関わらず、割り込みハンドラとも称される、所与の割り込みサービスルーチンを処理することによって割り込みを使用可能にする。いくつかの実施形態では、割り込みコントローラ111は、CPU112の外側に位置し、通信ファブリック120を介して、GPU114、ハブ116、I/O周辺機器デバイス、及びリモートコンピューティングデバイスなどの複数の他のソースから割り込みを受信する。
【0030】
様々な実施形態では、処理ノード100は、コンピューティングシステムにおける割り込みの調停のための複数のプロセッサコアの割り込み優先度を記憶する、マルチノードシステム内のマスタノードである。前の例では、CPU112は、8個のコアを有し、その各々は、2つのスレッドを同時に処理することが可能である。したがって、一実施形態では、CPU112は、1つが16個のハードウェアスレッドの各々に対するものであり、2つがコアごとの割り込み優先度である、調停割り込みに対する16個の割り込み優先度を有する。他の実施形態では、調停割り込みに対する割り込み優先度の粒度は、コアレベルにあり、所与のコアに対する複数のハードウェアスレッドの各々は、調停割り込みに対して同一の割り込み優先度を有する。更なる他の実施形態では、各スレッドは、同一の割り込み優先度により設定される。スレッドに対する割り込み優先度割り当ての他の組み合わせが可能であり、考慮される。
【0031】
コンピューティングシステムが4個のノードを有し、その各々がCPU112と同様のCPUを有し、各コアが調停割り込みに対して2つの割り込み優先度を有する場合、次いで、いくつかの実施形態では、コンピューティングシステムは、64個の割り込み優先度を有する。しかしながら、調停割り込みに対して、実施形態では、最下位割り込み優先度を有するハードウェアスレッド(または、コア)は、調停割り込みを使用可能にするよう割り当てられる。いくつかの実施形態では、割り込みコントローラ111は、1つが4個のノードの各々についての調停割り込みに対する割り込み優先度である、4個の割り込み優先度を記憶する。所与のノードに対する1つの割り込み優先度は、所与のノード内のコアに割り当てられた16個の割り込み優先度の最下位割り込み優先度である。
【0032】
マスタノード以外の第1のノード内のコアが調停割り込みをアサートするとき、第1のノードは、リンクインタフェース180及び通信ファブリック120を介して、マスタノードの割り込みコントローラにメッセージをポイントツーポイントで送信する。そのようなケースでは、ブロードキャストメッセージは、第1のノードに1つ以上の割り込み優先度を送信するよう各々の他のノードに通知するために、第1のノードによっては使用されない。第1のノードからのポイントツーポイント通信に応答して、マスタノードの割り込みコントローラ111は、4個の記憶された割り込み優先度の最下位割り込み優先度を判定する。実施形態では、マスタノードの割り込みコントローラ111はまた、4個の記憶された割り込み優先度の識別された最下位割り込み優先度を有するコアを含む、第2のノードを識別する。様々な実施形態では、マスタノードの割り込みコントローラ111は、第2のノード内の識別されたコアに、ポイントツーポイントメッセージにおいて調停割り込みを送信する。したがって、調停割り込みは、ブロードキャストメッセージではなく、ポイントツーポイントユニキャストメッセージにより扱われる。様々な実施形態では、調停割り込みが上記実施例における第1のノードなどのリモートノードによってアサートされるのではなく、マスタノード内のローカルコア、入力/出力(I/O)デバイス、またはその他が調停割り込みをアサートするときに同様のポイントツーポイント通信が使用される。
【0033】
様々な実施形態では、オペレーティングシステムなどのソフトウェアは、パワーダウンしている処理ノード100内のコアの調停割り込みに対して割り込み優先度を再割り当てする。実施形態では、ソフトウェアは、最大値または活性ノードの割り込み優先度よりも少なくとも大きい値に割り込み優先度を再割り当てする。したがって、パワーダウンしたノードは、コンピューティングシステムにおいてアサートされた調停割り込みを呼び出し及び使用可能にするために、マスタノードによっては選択されない。
【0034】
CPU112内のコアが調停割り込みをアサートするとき、メッセージは、割り込みコントローラ111に送信される。それに応答して、割り込みコントローラ111は、応答において4個の記憶された割り込み優先度の最下位割り込み優先度を送信する。残りのステップは、応答において識別されたノード内の識別されたコアに、ユニキャスト通信において調停割り込みを送信することなど、上記と同様である。再度、ブロードキャストメッセージは送信されない。したがって、パワーダウンしたノードは、調停割り込みを呼び出すためのブロードキャストプローブによって呼び出されない。ブロードキャストメッセージではなく、ユニキャストメッセージを使用することも、調停割り込みに加えて、固定割り込みに対して実行される。
【0035】
図2を参照して、マルチノードコンピューティングシステム200の一実施形態の全体ブロック図が示される。例示される実施形態では、パッケージ210は、リンク240によって相互に直接接続されたノード220A及び220Bを含む。いくつかの実施形態では、パッケージ210及び230の各々は、サーバ内のマルチソケットマザーボードのソケットに配置されたマルチチップモジュール(MCM)である。示されるように、ノード220Aは、クライアント222A〜222C、電力コントローラ224、及び割り込みコントローラ(IC)228を含む。クライアント222A〜222Cの例は、CPU、GPU、マルチメディアエンジン、及びI/O周辺機器デバイスなどである。示されるように、少なくともクライアント222Aは、プローブフィルタ(PF)223を含む。
【0036】
いくつかの実施形態では、割り込みコントローラ228は、スタンドアロンコントローラとして使用されるのではなく、クライアント222A〜222Cの1つの中に位置する。様々な実施形態では、電力コントローラ224は、電力コントローラ170(
図1の)機能性を有する。リンクインタフェース、通信ファブリック、メモリインタフェース、位相ロックループ(PLL)、または他のクロック生成回路は、例示を容易にするために示されない。
【0037】
実施形態では、リンク240〜246は、PCI、InfiniBand、RapidIO、及びHyperTransportなどの通信プロトコル接続を利用する。いくつかの実施形態では、コンピューティングシステム200は、リンク240〜246に加えて、ノード220A〜220Dの間の他のリンクを含む。実施形態では、それらの他のリンクは、サービス要求へのデータ伝送のために使用され、リンク240〜246は、システム全体のパワーダウンをネゴシエートするためのメッセージなどのメッセージングのために使用される。
【0038】
様々な実施形態では、コンピューティングシステム200は、ノード220A〜220Dの各々がリクエスタである、階層的トポロジを使用する。階層の低レベルまたは第1のレベルにおいて、各ノードは、各々の他のノードに直接接続される。例えば、ノード220Aは、リンク240を通じてパッケージ210内のノード220Bに直接接続される。同様に、ノード220Cは、リンク242を通じてパッケージ230内のノード220Dに直接接続される。階層の上位レベルまたは第2のレベルにおいて、各ノードは、他の階層内の単一のノードに接続される。例えば、パッケージ210内のノード220Aは、リンク244を通じてパッケージ230内のノード220Cに直接接続される。しかしながら、ノード220Aは、パッケージ230内のノード220Dに直接接続されない。同様に、パッケージ210内のノード220Bは、リンク246を通じてパッケージ230内のノード220Dに直接接続される。しかしながら、ノード220Bは、パッケージ230内のノード220Cに直接接続されない。他の実施形態では、ルートノードとリーフノードとの間の各中間ノードは、単一の上流ノードに直接接続され、単一の下流ノードに直接接続される、ツリーまたはリングトポロジが使用される。他の実施形態では、様々な他のトポロジが可能であり、考慮される。
【0039】
一実施例では、ノード220Bがパワーダウンした場合、ノード220Bのパワーダウンしたままの時間量を増加させるために、一実施形態では、キャッシュをフラッシュし、プローブフィルタ223を取り消すことが実行される。加えて、ノード220Aなど、パワーダウンしたノード220Bに直接接続された別のノードは、特定のブロードキャストプローブに対するパワーダウンしたノード220Bの代わりに応答をスプーフする。一実施例では、ノード220Aは、ノード220Cから、キャッシュラインの直近の有効なコピーを検索するブロードキャストプローブを受信する。ノード220Bが、パワーダウンする前にその1つ以上のキャッシュメモリサブシステムをフラッシュしていたので、ノード220Bは、要求されたキャッシュラインのコピーを有することができない。
【0040】
ノード220Bがパワーダウンしたとノード220Aが判定するとき、ノード220Aは、パワーダウンしたノード220Bに対してミス応答を生成する。いくつかの実施形態では、ノード220Bがパワーダウンしたとノード220Dが判定するとき、ノード220Dも、パワーダウンしたノード220Bの代わりにミス応答を生成する。ノード220A及び220Dのいずれも、パワーダウンしたノード220Bに、ノード220Bを呼び出し、その空きキャッシュに起因してミス応答を報告するようノード220Bにパワーダウンした状態からアクティブ状態に単純に遷移させる、ブロードキャストプローブを送信しない。ノード220A及びノード220Dのうちの1つ以上は、パワーダウンしたノード220Bの代わりにノード220Cにミス応答を送信する。電力コントローラ224及びリンクインタフェースに対するロジック(図示せず)うちの1つ以上は、キャッシュラインに対してブロードキャストプローブの状態を検出し、ノード220Bがパワーダウンする。したがって、ロジックは、パワーダウンしたノード220Bの代わりにミス応答をスプーフする。
【0041】
様々な実施形態では、コンピューティングシステム200は、ノード220A〜220Dの所与の1つ内の所与のプロセッサが、別のノードのリモートメモリにアクセスするよりも短い待ち時間によりそのローカルメモリにアクセスする、共有メモリアーキテクチャを利用する。言い換えると、コンピューティングシステム200は、非一様メモリアクセス(NUMA)アーキテクチャを利用し、ノード220A〜220Dの各々は、NUMAノードである。実施形態では、ノード220A内の通信ファブリック(図示せず)は、メモリ要求が使用可能にされるようにプローブフィルタ(PF)223を維持する。様々な実施形態では、プローブフィルタ223は、プローブフィルタ113(
図1の)と同一の機能性を有し、同一のタイプの情報を記憶する。
【0042】
実施形態では、プローブフィルタ223内のエントリは、ノード220B〜220Dのうちの1つ以上がデータのブロックの共有コピーを包含することを示す情報を包含する。そのブロックへの排他的アクセスのためのコマンドに応答して、取り消しプローブは、ノード220B〜220Dのうちの1つ以上に搬送される。概して、要求を発行するノード220A〜220Dのノードは、「要求」ノードと称される。ノード220A〜220Dのノードは、要求のメモリアドレスがそのノードに結合されたシステムメモリにマッピングする場合に「ホーム」ノードと称される。ノード220A〜220Dのノードは、そのノード内のキャッシュがメモリブロックの直近のコピーを現在記憶している場合に「所有者」ノードと称される。プローブは、キャッシュがブロックのコピーを有しているかどうかを判定し、任意選択で、キャッシュがブロックを配置するべき状態を示すために使用される。プローブを受信する各ノードは、そのプローブフィルタをチェックし、プローブに応答する。全てのプローブ応答が受信されると、コマンドが完了に進む。
【0043】
ノード220Aの電力コントローラ224がクライアント222A〜222Cのそれぞれがアイドルであると判定し、ノード220Aのシステムメモリにアクセスすることを試みているリモートメモリ要求が存在しないと判定するとき、実施形態では、システム全体電力コントローラ224は、ノード220B〜220Dのうちの1つ以上に、ノード220Aのパワーダウンした状態を指定するインジケーションを送信する。その後、システム全体電力コントローラ224は、クライアント222A〜222Cに、それらのキャッシュをフラッシュし、プローブフィルタ223などのプローブフィルタの各エントリを取り消すメッセージを送信する。ノード220Aは、プローブフィルタ223内のエントリを取り消した結果として受信されたダーティキャッシュラインによりそのシステムメモリを更新する。
【0044】
いくつかの実施形態では、電力コントローラ224は、上記ステップが実行された後、ノード220Aのパワーダウンを進める。他の実施形態では、電力コントローラ224は、上記ステップが実行された後に所与の待ち時間は経過した場合、パワーダウンを進める。所与の待ち時間が経過しておらず、タスクが受信される場合、実施形態では、電力コントローラ224は、ノード220Aをアイドル状態からアクティブ状態に遷移させ、そのリンク240及び244の各々の上でアクティブ状態のインジケーションを送信し、クライアント222A〜222Cに、受信されたタスクを処理するインジケーションを送信する。更なる他の実施形態では、電力コントローラ224は、ノード220Aのパワーダウンを進めるかどうか、または受信されたタスクを処理するかどうかを判定するために、待ち時間に従って追加の情報を使用する。追加の情報の例は、タスクに対するサービス品質(QoS)または他の優先度レベル、プロセスまたはソフトウェアスレッド識別子(ID)、及びクライアント222A〜222Cの1つを識別するハードウェアIDなどである。ノード220Aがパワーダウンしていると電力コントローラ224が判定する場合、次いで、実施形態では、電力コントローラ224は、リンクインタフェースに対してドライバを無効にし、クライアント222A〜222Cに対してクロックを無効にし、DRAMが使用されるときにセルフリフレッシュを実行するようシステムメモリを設定する。
【0045】
電力コントローラ224がノード220Aをパワーダウンさせた直後を含むいずれかのときに、呼び出し状態が発生してもよい。呼び出し状態は、ローカルキャッシュプローブに対して活性ノードからリモート要求を受信すること、システムメモリ内のローカルデータに対して活性ノードからリモートメモリ要求を受信すること、及びオペレーティングシステムから割り当てられたタスクを受信することなどのうちの1つ以上を含む。上記ステップは、パワーダウンさせる前にキャッシュをフラッシュすること、パワーダウンさせる前にプローブフィルタを取り消すこと、ノード220A〜220Dのそれぞれに固定割り込みIDを記憶すること、ノード220A〜220Dのマスタノードにノードに対する最下位割り込み優先度を記憶すること、及び特定のキャッシュラインを探索するブロードキャストプローブに対してパワーダウンしたノードの代わりにミス応答をスプーフすることを含む。加えて、オペレーティングシステムなどのソフトウェアは、更新がない初期の固定割り込みIDを維持することに加え、タスクを処理するようパワーダウンしたノードを呼び出すのではなく、ノードがスケジューリングタスクによってパワーダウンした状態にあるままでいる時間量を長くすること、及び活性ノードにデータを移動させることを支援する。
【0046】
様々な実施形態では、ノード220Aは、コンピューティングシステム200内のマスタノードであり、割り込みコントローラ228は、調停割り込みに対して複数のプロセッサコアの割り込み優先度をコンピューティングシステム200に記憶する。実施形態では、ブロードキャストメッセージではなく、ユニキャストメッセージにより調停割り込みを扱うために使用されるステップは、処理ノード100に対する前に説明されたステップである。例えば、調停割り込みは、最下位割り込み優先度に基づいて、調停ロジックによって選択されたプロセッサコアによって使用可能にされる。いくつかの実施形態では、割り込みコントローラ228はまた、プロセッサコアの各々に対する固定割り込み識別子(ID)をコンピューティングシステム200に記憶する。実施形態では、固定割り込み識別子(ID)は、アドバンストプログラム可能割り込みコントローラ(APIC)IDである。調停割り込みとは対照的に、コンピューティングシステム200内の所与のプロセッサコアが固定割り込みをアサートするとき、所与のプロセッサコアは、特定のプロセッサコアに、アサートされた固定割り込みに一致する固定割り込みIDと共に固定割り込みを送信する必要がある。
【0047】
実施形態では、固定割り込みIDは、順次方式において、オペレーティングシステムなどのソフトウェアによって割り当てられる。したがって、ノード220A内の割り込みコントローラ228及びノード220B〜220D内の各々の割り込みコントローラは、各々の個々の固定割り込みIDを記憶するのではなく、固定割り込みIDの範囲を記憶する。CPUが8個のコアを含み、その各々が2つのソフトウェアスレッドを処理するための2つのハードウェアスレッドを含む、前の例を使用して、CPUは、16個の固定割り込みIDを有する。例示される実施形態では、コンピューティングシステム200は、4個のノードを有し、その各々は、同様のCPUを有し、よって、64個の固定割り込みIDが存在する。ノード220A〜220Dのそれぞれが個々の固定割り込みIDを記憶するために64個のエントリテーブルを使用するのではなく、実施形態では、ノード220A〜220Dのそれぞれは、各々のノードに対して2つの固定割り込みID、または合計で8個の固定割り込みIDを記憶する。
【0048】
一実施形態では、ノード220A〜220Dの各々は、各ノードに対して、順次的な固定割り込みIDの範囲の開始固定割り込みID及び終了固定割り込みをコンピューティングシステム200に記憶する。例えば、オペレーティングシステムがノード220Aに固定割り込みID0〜15を順次的に割り当てる場合、次いで、ノード220A〜220Dのそれぞれは、16個の固定割り込みIDの各々ではなく、ノード220Aに対して値0及び15を記憶する。コンピューティングシステム200におけるノード220C内の所与のコアが固定割り込みID9により固定割り込みをアサートするとき、コンピューティングシステム200に対する固定割り込みIDの相対的に小さな記憶装置へのルックアップは、ノード220AがID9により固定割り込みを使用可能にするために割り当てられたプロセッサコアを有することを示す。その後、ノード220Cは、固定割り込みID9を割り当てられたプロセッサコアにより固定割り込みを使用可能にするよう、ノード220Aにユニキャストメッセージを送信する。ID9により固定割り込みを使用可能にするために割り当てられたプロセッサコアを有するノード220A〜220Dのノードを発見するよう、ブロードキャストプローブは送信されない。
【0049】
相対的に稀であるが、オペレーティングシステムが固定割り込みIDを再割り当てすることが可能である。いくつかの実施形態では、ノード220A〜220Dのうちの1つ以上は、割り当てられた固定割り込みIDの初期のソフトウェアコピーをスヌープする。一実施形態では、メモリアドレス範囲などの位置が既知であり、その後にチェックが続く読み出し操作は、いずれかの変更が行われたかどうかを判定するよう実行される。別の実施形態では、ソフトウェア処理は、初期値をチェックし、結果を報告するよう呼び出される。初期の固定割り込みIDの更新が行われる場合、次いで、一実施形態では、ノード220A〜220Dの各々は、固定割り込みIDのそのコピーを取り消す。それに続いて、ブロードキャストメッセージは、固定割り込みを使用可能にするために使用される。別の実施形態では、ノード220A〜220Dの各々は、固定割り込みIDのそのコピーを更新する。それに続いて、ユニキャストメッセージはなお、固定割り込みを使用可能にするために使用される。
【0050】
ここで、
図3を参照して、マルチノードコンピューティングシステムに対して電力管理を実行する方法300の一実施形態が示される。議論の目的のため、この実施形態におけるステップ(
図4〜6におけるステップと共に)は、順番に示される。しかしながら、説明される方法の様々な実施形態では、説明される要素のうちの1つ以上は、同時に実行され、示されるのとは異なる順序で実行され、または完全に省略されることに留意されよう。他の追加の要素も必要に応じて実行される。本明細書で説明される様々なシステムまたは装置のいずれかは、方法300を実装するように構成される。
【0051】
固定割り込み識別子(ID)は、マルチノードシステムにおいて初期化される(ブロック302)。固定割り込みIDは、どのプロセッサコアまたはプロセッサコア内のどのハードウェアスレッドが一致する固定割り込みIDにより固定割り込みを使用可能にするよう割り当てられるかを指定する。様々な実施形態では、オペレーティングシステムは、固定割り込みIDを初期化し、実施形態では、固定割り込みIDは、順次方式において初期化される。固定割り込みIDは、コンピューティングシステム内のノードにブロードキャストされる(ブロック304)。例えば、オペレーティングシステムは、コンピューティングシステムに対して、ノードの各々に固定割り込みIDのインジケーションを送信する。代わりに、1つ以上のノードは、コンピューティングシステムに対して、固定割り込みIDを取得するよう特定のメモリ位置をスヌープする。更なる他の実施例では、1つ以上のノードは、コンピューティングシステムに対して固定割り込みIDを判定するよう、オペレーティングシステムへのシステムコールを実行する。各ノードは、受信された固定割り込みIDに基づいて、各ノードに対して固定割り込みIDのコピーを更新する(ブロック306)。したがって、ブロードキャストメッセージは、固定割り込みを扱うために必要とされない。
【0052】
複数のノードはタスクを処理する(ブロック308)。ノード内の1つ以上のクライアントは、コンピュータプログラムまたはソフトウェアアプリケーションを実行する。いくつかの実施形態では、複数のノードは、マルチソケットサーバ内にあり、バッチジョブは、複数のノードのうちの1つ以上にタスクを割り当てるオペレーティングシステムによって受信される。様々な実施形態では、マルチノードコンピューティングシステムは、非一様メモリアクセス(NUMA)アーキテクチャを利用し、ノードの各々は、NUMAノードである。
【0053】
第1のノードが固定割り込みをアサートし(条件ブロック310の分岐で「はい」)、記憶された固定割り込みIDがなおも使用されている場合(条件ブロック312の分岐で「はい」)、次いで、固定割り込みを使用可能にする第2のノードは、記憶された固定割り込みIDに基づいて識別される(ブロック314)。固定割り込みは、ユニキャストメッセージにおいて第2のノードに送信される(ブロック324)。固定割り込みを使用可能にするためにブロードキャストメッセージが使用されない。したがって、第2のノードがアクティブ状態にある場合、固定割り込みを使用可能にするようパワーダウンしたノードは呼び出されていない。
【0054】
ノードが固定割り込みをアサートしない場合(条件ブロック310の分岐で「いいえ」)、次いで、初期化された固定割り込みIDのソフトウェアコピーがスヌープされる(ブロック316)。前に説明されたように、コンピューティングシステム内のノードのうちの1つ以上は、割り当てられた固定割り込みIDの初期のソフトウェアコピーをスヌープする。一実施形態では、メモリアドレス範囲などの位置が既知であり、その後にチェックが続く読み出し操作は、いずれかの変更が行われたかどうかを判定するよう実行される。別の実施形態では、ソフトウェア処理は、初期値をチェックし、結果を報告するよう呼び出される。いずれかの更新が行われると判定される場合(条件ブロック318の分岐で「はい」)、次いで、複数のノード内の固定割り込みIDの記憶は、更新され、または取り消されるかのいずれかである(ブロック320)。取り消しまたは更新する決定は、更新の頻度及び固定割り込みIDのコピーを記憶するために使用される方式に基づいた設計選択である。前に説明されたように、各々の個々の固定割り込みIDではなく、固定割り込みIDの範囲が記憶される。範囲を記憶することは、使用される記憶の量を減少させる。
【0055】
更新が行われないと判定される場合(条件ブロック318の分岐で「いいえ」)、次いで、方法300の制御フローは、タスクが複数のノードによって処理されるブロック308に戻る。第1のノードが固定割り込みをアサートするが(条件ブロック310の分岐で「はい」)、記憶された固定割り込みIDがもはや使用されない場合(条件ブロック312の分岐で「いいえ」)、次いで、固定割り込みを使用可能にする第2のノードは、システム内の他のノードへのブロードキャストメッセージに基づいて識別される(ブロック322)。その後、固定割り込みは、ユニキャストメッセージにおいて第2のノードに送信される(ブロック324)。
【0056】
ここで、
図4を参照して、マルチノードコンピューティングシステムに対して電力管理を実行する方法400の別の実施形態が示される。方法300と同様に、方法400に対するマルチノードコンピューティングシステムは、非一様メモリアクセス(NUMA)アーキテクチャを利用し、ノードの各々は、NUMAノードである。調停割り込みに対する割り込み優先度は、マルチノードシステムにおいて初期化される(ブロック402)。実施形態では、最下位評価割り込み優先度は、どのプロセッサコアまたはプロセッサコア内のどのハードウェアスレッドが調停割り込みを使用可能にするよう割り当てられるかを指定する。
【0057】
割り込み優先度は、コンピューティングシステム内の複数のノードのマスタノードにブロードキャストされる(ブロック404)。例えば、オペレーティングシステムは、マスタモードに、コンピューティングシステムに対する割り込み優先度のインジケーションを送信する。代わりに、マスタノードは、調停割り込みに対する割り込み優先度を取得するよう、特定のメモリ位置をスヌープする。更なる他の実施例では、マスタノードは、コンピューティングシステムに対して割り込み優先度を判定するよう、オペレーティングシステムへのシステムコールを実行する。
【0058】
複数のノードは、タスクを実行する(ブロック406)。ノード内の1つ以上のクライアントは、コンピュータプログラムまたはソフトウェアアプリケーションを実行する。いくつかの実施形態では、複数のノードは、マルチソケットサーバ内にあり、バッチジョブは、複数のノードのうちの1つ以上にタスクを割り当てるオペレーティングシステムによって受信される。様々な実施形態では、オペレーティングシステムがコアの割り込み優先度を更新することを可能にするバックグラウンド処理が稼働する。コアに対する割り込み優先度が更新される場合(条件ブロック408の分岐で「はい」)、次いで、コアに対する更新された割り込み優先度は、マスタノードに送信される(ブロック410)。いくつかの実施形態では、マスタノードは、各ノードに対する最下位割り込み優先度のみを記憶する。最下位割り込み優先度が更新されない場合、次いで、実施形態では、更新がマスタノードに送信されない。
【0059】
ノードが調停割り込みをアサートしない場合(条件ブロック412の分岐で「いいえ」)、次いで、方法400の制御フローは、複数のノードがタスクを処理するブロック406に戻る。第1のノードが調停割り込みをアサートする場合(条件ブロック412の分岐で「はい」)、次いで、コアに対して最下位優先度を有するノードを識別する要求がマスタノードに送信される(ブロック414)。要求は、複数のブロードキャストメッセージではなく、単一のユニキャストメッセージである。マスタノードからの返信に基づいて、調停割り込みを使用可能にする第2のノードが識別される(ブロック416)。
【0060】
複数のコアが同一の割り込み優先度を有するとき、実施形態では、マスタノードは、複数のノードから活性ノードを選択する。複数の活性ノードが存在する場合、次いで、マスタノードは、ラウンドロビン方式、要求ノードからの最小数のホップを有するノードを選択する距離方式、または他の選択方式を使用する。調停割り込みは、ユニキャストメッセージにおいて第2のノードに送信される(ブロック418)。ブロードキャストメッセージは、調停割り込みを使用可能にするために使用されない。したがって、マスタノード及び第2のノードの各々がアクティブ状態にある場合、固定割り込みを使用可能にするようパワーダウンしたノードは呼び出されていない。
【0061】
ここで、
図5を参照して、マルチノードコンピューティングシステムに対して電力管理を実行する方法500の別の実施形態が示される。方法300及び400と同様に、方法500に対するマルチノードコンピューティングシステムは、非一様メモリアクセス(NUMA)アーキテクチャを利用し、ノードの各々は、NUMAノードである。複数のノードは、タスクを処理する(ブロック502)。複数のノードの各々は、メモリ要求が使用可能にされるようにプローブフィルタを維持する(ブロック504)。
【0062】
所与のノードは、その1つ以上のクライアントの各々がアイドルであると判定する場合(条件ブロック506の分岐で「はい」)、次いで、所与のノードは、プローブフィルタ内の各々のエントリを取り消す(ブロック508)。いくつかの実施形態では、所与のノードはまた、プローブフィルタ内のエントリを取り消す前に、そのシステムメモリにアクセスすることを試みているリモートメモリ要求が存在しないと判定する。所与のノードは、取り消されたエントリ及び対応するメッセージまたはリモートノードに送信されたプローブに起因して受信される、リモートノードに記憶されたダーティキャッシュラインによりそのシステムメモリを更新する(ブロック510)。その後、所与のノードがパワーダウンする(ブロック512)。様々な実施形態では、所与のノードをパワーダウンさせることは、リンクインタフェースに対してドライバを無効にすること、クライアント及び通信ファブリックに対してクロックを無効にすること、並びにDRAMが使用されるときにセルフリフレッシュを実行するようシステムメモリを設定することのうちの1つ以上を含む。
【0063】
ここで、
図6を参照して、マルチノードコンピューティングシステムに対して電力管理を実行する方法600の別の実施形態が示される。方法300〜500と同様に、方法600に対するマルチノードコンピューティングシステムは、非一様メモリアクセス(NUMA)アーキテクチャを利用し、ノードの各々は、NUMAノードである。複数のノードは、タスクを処理する(ブロック602)。第1のノードがキャッシュラインに対してブロードキャストプローブを生成する場合(条件ブロック604の分岐で「はい」)、次いで、ブロードキャストプローブは、システム内の他のノードに送信される(ブロック606)。コンピューティングシステム内の第2のノードは、ブロードキャストプローブを受信する(ブロック608)。
【0064】
いずれかの隣接するノードがパワーダウンすると第2のノードが判定しない場合(条件ブロック610の分岐で「いいえ」)、次いで、第2のノードは、第2のノードに対して生成された応答を第2のノードから第1のノードに送信する(ブロック612)。第2のノードはまた、選択されたノードトポロジにおいて使用されるノードの接続性に基づいて、1つ以上の他の隣接するノードにブロードキャストプローブを中継する。
【0065】
隣接する第3のノードがパワーダウンすると第2のノードが判定する場合(条件ブロック610の分岐で「はい」)、次いで、第2のノードは、第3のノードにブロードキャストプローブを送信することを行わない(ブロック614)。第2のノードは、第3のノードに対してミス応答を生成する(ブロック616)。第2のノードは、ミス応答を第2のノードから第1のノードに送信する(ブロック618)。したがって、第2のノードは、特定のキャッシュラインを探索するブロードキャストプローブに対して、パワーダウンした第3のノードの代わりに、ミス応答をスプーフする。ミス応答により応答するために、第3のノードは呼び出されない。その後、方法600の制御フローは、ブロック612に移動する。
【0066】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令は、前に説明された方法及び/または機構を実装するために使用される。プログラム命令は、Cなどの高レベルのプログラミング言語においてハードウェアの挙動を記述する。代わりに、Verilogなどのハードウェア設計言語(HDL)が使用される。プログラム命令は、非一時的コンピュータ可読記憶媒体に記憶される。多数のタイプの記憶媒体が利用可能である。記憶媒体は、プログラム実行のためにコンピューティングシステムにプログラム命令及び付随するデータを提供するための使用の間に、コンピューティングシステムによってアクセス可能である。コンピューティングシステムは、プログラム命令を実行するように構成された少なくとも1つ以上のメモリ及び1つ以上のプロセッサを含む。
【0067】
上記説明された実施形態は、実装態様の非限定的な例にすぎないことが強調されるべきである。上記開示が完全に認識されると、多数の変形及び修正が当業者にとって明らかになるであろう。以下の特許請求の範囲は、全てのそのような変形及び修正を包含するものと解釈されることが意図される。