(57)【要約】スケジューラキュー割り当てロジックを実装するシステム、装置及び方法が開示されている。プロセッサは、少なくともデコードユニット、スケジューラキュー割り当てロジック、スケジューラキュー、ピッカー及び実行ユニットを含む。割り当てロジックは、各クロックサイクルにおいてデコードユニットから複数の動作を受信する。割り当てロジックは、プロセッサの様々な実行ユニットによって実行可能な様々なタイプの動作ごとに別々の論理ユニットを含む。様々なタイプの動作ごとに、割り当てロジックは、所与のクロックサイクルにおいてスケジューラキューに様々な数の動作を割り当てるために、可能な割当順列のいずれが妥当であるかを判定する。割り当てロジックは、所与のクロックサイクルにおいて割り当てる動作の数の表示を受信し、そして、割り当てロジックは、表示によって指定された動作の数に対して妥当な割当順列の１つを選択する。【選択図】図７
2021525919.tif 000002
【特許請求の範囲】
【請求項１】
複数の実行ユニットと、
前記複数の実行ユニットに結合されている複数のスケジューラキューと、
デコードユニットと、
前記デコードユニット及び前記複数のスケジューラキューに結合されているスケジューリングロジックと、を備えるシステムであって、
前記スケジューリングロジックは、
所与のサイクルにおいて前記デコードユニットから複数の動作を受信し、
前記複数の動作の複数の割当順列を判定し、割当順列は、前記複数のスケジューラキューのうちの１つまたは複数への前記複数の動作のうちの１つまたは複数の割り当てを定義するものであり、
前記所与のサイクルにおいて前記複数のスケジューラキューのうちの１つまたは複数に割り当てる動作の所与の数の表示を受信し、
前記複数の割当順列のうちの１つに一致する動作を、前記複数のスケジューラキューのうちの前記１つまたは複数に割り当てるように構成されている回路を備える、システム。
【請求項２】
前記回路が、さらに、前記所与のサイクルにおいて現在格納されている動作の数が最も多いスケジューラキューに動作を割り当てることを回避するように構成されている、請求項１に記載のシステム。
【請求項３】
前記複数の割当順列が、前記所与のサイクルにおいて割り当てる少なくとも２つの異なる数の動作のための割当順列を備える、請求項１に記載のシステム。
【請求項４】
前記複数の動作が、第１のタイプの動作及び第２のタイプの動作を備える、請求項１に記載のシステム。
【請求項５】
前記回路が、さらに、
前記第１のタイプの動作のための第１の複数の割当順列が妥当であるかどうかを判定し、前記第１の複数の割当順列から、妥当である第１の割当順列を選択し、
前記第２のタイプの動作のための第２の複数の割当順列が妥当であるかどうかを判定し、前記第２の複数の割当順列から、妥当である第２の割当順列を選択し、
前記第１のタイプの動作を、前記第１の割当順列に一致するように、前記所与のサイクルにおいて前記複数のスケジューラキューに割り当て、
前記第２のタイプの動作を、前記第２の割当順列に一致するように、前記所与のサイクルにおいて前記複数のスケジューラキューに割り当てるように構成されている、請求項４に記載のシステム。
【請求項６】
前記複数の割当順列が、所与の数の動作及び前記複数のスケジューラキューに対する全ての可能な割当順列を備える、請求項１に記載のシステム。
【請求項７】
前記複数の割当順列のうちの前記１つに一致する前記動作が、妥当である割当順列に相当し、
所与の割当順列は、前記所与の割当順列の各動作が、各割り当てられた動作を実行可能な実行ユニットに割り当てられているときに妥当である、請求項１に記載のシステム。
【請求項８】
所与のサイクルにおいてデコードユニットから複数の動作を受信することと、
前記複数の動作の複数の割当順列を判定することであって、割当順列は、前記複数の動作のうちの１つまたは複数の、複数のスケジューラキューのうちの１つまたは複数への割り当てを定義するものである、前記判定することと、
前記所与のサイクルにおいて前記複数のスケジューラキューのうちの１つまたは複数に割り当てる動作の所与の数の表示を受信することと、
前記複数の割当順列のうちの１つに一致する動作を、前記複数のスケジューラキューのうちの前記１つまたは複数に割り当てることと、を含む、方法。
【請求項９】
前記所与のサイクルにおいて現在格納されている動作の数が最も多いスケジューラキューに動作を割り当てることを回避することをさらに含む、請求項８に記載の方法。
【請求項１０】
前記複数の割当順列が、前記所与のサイクルにおいて割り当てる少なくとも２つの異なる数の動作のための割当順列を備える、請求項８に記載の方法。
【請求項１１】
前記複数の動作が、第１のタイプの動作及び第２のタイプの動作を備える、請求項８に記載の方法。
【請求項１２】
前記第１のタイプの動作のための第１の複数の割当順列が妥当であるかどうかを判定し、前記第１の複数の割当順列から、妥当である第１の割当順列を選択することと、
前記第２のタイプの動作のための第２の複数の割当順列が妥当であるかどうかを判定し、前記第２の複数の割当順列から、妥当である第２の割当順列を選択することと、
前記第１のタイプの動作を、前記第１の割当順列に一致するように、前記所与のサイクルにおいて前記複数のスケジューラキューに割り当てることと、
前記第２のタイプの動作を、前記第２の割当順列に一致するように、前記所与のサイクルにおいて前記複数のスケジューラキューに割り当てることと、をさらに含む、請求項１１に記載の方法。
【請求項１３】
前記複数の割当順列が、所与の数の動作及び前記複数のスケジューラキューに対する全ての可能な割当順列を備える、請求項８に記載の方法。
【請求項１４】
前記複数の割当順列のうちの前記１つに一致する前記動作が、妥当である割当順列に相当し、
所与の割当順列は、前記所与の割当順列の各動作が、各割り当てられた動作を実行可能な実行ユニットに割り当てられているときに妥当である、請求項８に記載の方法。
【請求項１５】
メモリと、
前記メモリに結合されているプロセッサであって、
所与のサイクルにおいて前記デコードユニットから複数の動作を受信し、
前記複数の動作の複数の割当順列を判定し、割当順列は、前記複数の動作のうちの１つまたは複数の、前記複数のスケジューラキューのうちの１つまたは複数への割り当てを定義するものであり、
前記所与のサイクルにおいて前記複数のスケジューラキューのうちの１つまたは複数に割り当てる動作の所与の数の表示を受信し、
前記複数の割当順列のうちの１つに一致する動作を、前記複数のスケジューラキューのうちの前記１つまたは複数に割り当てるように構成されている前記プロセッサと、を備える、装置。
【請求項１６】
前記プロセッサが、さらに、前記所与のサイクルにおいて現在格納されている動作の数が最も多いスケジューラキューに動作を割り当てることを回避するように構成されている、請求項１５に記載の装置。
【請求項１７】
前記複数の割当順列は、前記所与のサイクルにおいて割り当てる少なくとも２つの異なる数の動作のための割当順列を備える、請求項１５に記載の装置。
【請求項１８】
前記複数の動作が、第１のタイプの動作及び第２のタイプの動作を備える、請求項１５に記載の装置。
【請求項１９】
前記プロセッサが、さらに、
前記第１のタイプの動作のための第１の複数の割当順列が妥当であるかどうかを判定し、前記第１の複数の割当順列から、妥当である第１の割当順列を選択し、
前記第２のタイプの動作のための第２の複数の割当順列が妥当であるかどうかを判定し、前記第２の複数の割当順列から、妥当である第２の割当順列を選択し、
前記第１のタイプの動作を、前記第１の割当順列に一致するように、前記所与のサイクルにおいて前記複数のスケジューラキューに割り当て、
前記第２のタイプの動作を、前記第２の割当順列に一致するように、前記所与のサイクルにおいて前記複数のスケジューラキューに割り当てるように構成されている、請求項１８に記載の装置。
【請求項２０】
前記複数の割当順列のうちの前記１つに一致する前記動作が、妥当である割当順列に相当し、
所与の割当順列は、前記所与の割当順列の各動作が、各割り当てられた動作を実行可能な実行ユニットに割り当てられているときに妥当である、請求項１５に記載の装置。
【発明の詳細な説明】
【背景技術】
【０００１】
プロセッサパイプラインは、実行中の命令により動作する多くの様々なユニットを含む。これらのユニットには、デコードユニット、スケジューラキュー、ピッカー及び実行ユニットが含まれる。デコードユニットは、フェッチされた命令を命令動作へとデコードする。命令動作は、本明細書中で「ｏｐ」とも称される。一般的に言って、ｏｐは、実行ユニットに含まれるハードウェアが実行することが可能な動作である。様々な実装例において、各命令は、実行されると命令セットアーキテクチャにしたがってその命令に対して定義された動作のパフォーマンスをもたらす１つまたは複数のｏｐに変換される。
【０００２】
ピッカーは、スケジューラキューからｏｐを選択し、それは実行ユニットによって実行される。様々なクロックサイクルにおいて、実行ユニットの全てで実行するのに利用可能なｏｐが不十分である。他のサイクルにおいて、準備ができているｏｐが多すぎ、それら全てが実行ユニットによって実行されることは可能でない。したがって、実行ユニットの稼働率及び／またはスループットを向上させる技術が望まれる。
【０００３】
本明細書中に記載する方法及び機構の利点は、添付の図面と併せて以下の説明を参照することによってより良く理解され得る。
【図面の簡単な説明】
【０００４】
【図１】コンピューティングシステムの一実装例のブロック図である。
【図２】プロセッサパイプラインの一実装例のブロック図である。
【図３】プロセッサパイプラインの一部の一実装例のブロック図である。
【図４】スケジューラキュー割り当てロジックの一実装例のブロック図である。
【図５】最初の妥当なＮ−ｏｐ割り当て検索ユニットの一実装例のブロック図である。
【図６】割当順列を選択するためのプライオリティマトリクスの一実装例のブロック図である。
【図７】スケジューラキュー割り当てロジックを実装する方法の一実装例を例示する一般化されたフロー図である。
【図８】プライオリティマトリクスを実装する方法の一実装例を例示する一般化されたフロー図である。
【発明を実施するための形態】
【０００５】
以下の説明において、本明細書中に提示される方法及び機構の完全な理解を提供するために多くの具体的な詳細が記載される。しかしながら、当業者は、これらの具体的な詳細なしに様々な実装例が実施され得ることを理解すべきである。場合によっては、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術は、本明細書中に記載される手法を分かりづらくしないために詳細が示されていない。例示の簡潔さ及び明瞭さのために、図に示される要素は必ずしも縮尺通りでないことが理解されよう。例えば、要素の一部の寸法は、他の要素に比べて拡大されている場合がある。
【０００６】
スケジューラキュー割り当てロジックを実装する様々なシステム、装置及び方法が本明細書中に開示される。システムは、１つまたは複数のメモリに結合されている１つまたは複数のプロセッサを含む。各プロセッサは、命令をフェッチ、処理、及び実行する複数のパイプラインステージを有するプロセッサパイプラインを含む。一実装例では、プロセッサは、命令のアウトオブオーダー実行を用いる。命令は、フェッチされ、そしてデコードユニットによって命令動作（すなわちｏｐ）へとデコードされる。デコードユニットは、デコードされたｏｐをスケジューラキュー割り当てロジックに伝達する。スケジューラキュー割り当てロジックは、ｏｐを、ｏｐのタイプ（例えば、算術論理演算ユニット（ＡＬＵ）ｏｐ、アドレス生成ｏｐ）に基づいて異なるストリームに分割する。例えば、異なる３つのタイプのｏｐがある場合、割り当てロジックは、ｏｐを第１のストリーム、第２のストリーム、そして第３のストリームに分割する。各ストリームはその後、ストリームにおける特定のタイプのｏｐに対する割り当て可能性を処理する別々の論理ユニットに入力される。
【０００７】
一実装例では、別々の各論理ユニット（異なるｏｐタイプに対応する）は、複数の様々な順列割当の妥当性をチェックする。例えば、所与のｏｐタイプの実行ユニットに結合されているピッカーが取り付けられているスケジューラキューが５個及び現在のクロックサイクルに対して１つまたは複数のタイプの異なるｏｐが５個ある場合、所与の論理ユニット（所与のｏｐタイプに対する）は、５個の異なるｏｐがこれら５個の異なるスケジューラキューに割り当てられるとき、１２０個の可能な割当順列のうちいずれが妥当であるかを判定する。一般的に言えば、割当順列は、１つまたは複数の動作の、１つまたは複数のスケジューラキューへの割り当てを定義する。所与の割当順列が妥当であるかを判定するのに、判定は、所与の割当順列により、各ｏｐがそのタイプのｏｐを処理可能である実行ユニットに割り当てられる状態になるか（すなわち、割当順列が、処理のためｏｐの妥当な割り当てをもたらすか）否かに関してなされる。また、所与の論理ユニットは、５個より少ないｏｐが異なるスケジューラキューに割り当てられるとき、可能な割当順列のいずれが妥当であるかを判定する。例えば、所与の論理ユニットは、４個のｏｐのみが５個の異なるスケジューラキューのうちの４個に割り当てられる場合に、いずれの割当順列が妥当であるかを判定する。また、所与の論理ユニットは、３個のｏｐのみが５個の異なるスケジューラキューのうちの３個に割り当てられる場合に、いずれの割当順列が妥当であるかを判定する。同様に、所与の論理ユニットは、２個のｏｐのみが５個の異なるスケジューラキューのうちの２個に割り当てられる場合に、かつ、単一のｏｐのみが５個の異なるスケジューラキューのうちの１個に割り当てられる場合に、いずれの割当順列が妥当かを判定する。他の実装例は、５以外の他の数の異なるスケジューラキューを有することを理解すべきである。ただし、上記の技術は、これらの他の実装例で同様の方法で実行可能である。
【０００８】
割当順列は、特定のタイプのｏｐを処理可能である実行ユニットに入力を行うピッカーが取り付けられているスケジューラキューに各ｏｐが割り当てられる場合に、妥当である。様々な実装例では、一部の実行ユニットは、全ての様々なｏｐタイプのサブセットしか実行できない。また、所与のｏｐタイプは、特定の実行ユニットでのみ実行できる複数の異なるサブタイプを有し得る。例えば、ＡＬＵ  ｏｐには、加算ｏｐ、乗算ｏｐ、除算ｏｐなどが含まれるが、一実装例では、ＡＬＵ実行ユニットの全てが除算ｏｐを実行できるわけではない。他のＡＬＵ実行ユニットは、様々な可能なＡＬＵ  ｏｐタイプの全てのサブセットしか実行できない場合がある。同様に、他のタイプのｏｐの場合、特定の実行ユニットは、これらのｏｐタイプのサブセットしか実行できない場合があるが、他の実行ユニットは、これらｏｐタイプの全てを実行可能である。
【０００９】
一実装例では、所与の論理ユニットが、スケジューラキューのうちの１つまたは複数にｏｐが割り当てられないときにいずれの割当順列が妥当であるかを判定する際、所与の論理ユニットは、様々なスケジューラキューの占有率状態に関する入力（すなわち、いくつの動作が現在キューに格納されているか―キューはどれくらい「満杯」か）を受信する。所与の論理ユニットは、複数の妥当な割当順列が存在する場合、いずれの妥当な割当順列を選択するかを判定するのに役立つようにこれらの入力を用いる。例えば、所与の論理ユニットは、様々なスケジューラキューの中で最も多い数のｏｐを現在格納しているスケジューラキューへのｏｐのスケジューリングを回避する。言い換えれば、占有率が最も高いスケジューラキューは、所与のサイクルにおいてｏｐが割り当てられないスケジューラキューとなる。所与の論理ユニットが、１つより多いスケジューラキューにｏｐがないままとする割当順列の妥当性をチェックしているとき、所与の論理ユニットは、ｏｐが最も多いキューを、ｏｐが割り当てられないキューとして選択する。
【００１０】
所与のサイクルにおいて、スケジューラキュー割り当てロジックは、様々な割当順列に対してかつ所与のサイクルにおいて割り当てられている様々な数のｏｐに対して妥当性信号を生成する。スケジューラキュー割り当てロジックはまた、プロセッサによってサポートされている様々なｏｐタイプごとにこれらの妥当性信号も生成する。一実装例では、スケジューラキュー割り当てロジックは、所与のサイクルにおいて割り当てるｏｐの数の表示を受信する。この表示は、スケジューラキュー割り当てロジックが妥当性信号を生成するのと並行して生成される。スケジューラキュー割り当てロジックは、所与のサイクルにおいていくつかのｏｐをこの表示によって指定されたｏｐの数と一致するように割り当てる。言い換えると、この表示により、所与のサイクルにおいてｏｐを割り当てるためにいずれの妥当性信号が検討されるかが絞り込まれる。例えば、表示が所与のサイクルにおいて７個のｏｐを割り当てることを指定している場合、スケジューラキュー割り当てロジックは、７−ｏｐ割り当てに対する妥当な割当順列の１つを選択する。一実装例では、スケジューラキュー割り当てロジックは、７−ｏｐ割り当てに対する最初の妥当な割当順列を選択する。代替として、表示が所与のサイクルにおいて３個のｏｐを割り当てることを指定している場合、スケジューラキュー割り当てロジックは、３−ｏｐ割り当てに対する妥当な割当順列の１つを選択する。割り当てるのに他の数のｏｐを指定する他の表示の場合、スケジューラキュー割り当てロジックは、指定された数に対する妥当な割当順列の１つを選択する。本開示の残りの部分で説明するこれらのかつ他の技術を用いることによって、プロセッサは、実行ユニットのスループットを最大化する方法で、ｏｐを様々な実行ユニットに動的に割り当てることが可能になる。
【００１１】
ここで図１を参照すると、コンピューティングシステム１００の一実装例のブロック図が示される。一実装例では、コンピューティングシステム１００は、少なくともプロセッサ１０５Ａ〜Ｎ、入力／出力（Ｉ／Ｏ）インターフェース１２０、バス１２５、メモリコントローラ（複数可）１３０、ネットワークインターフェース１３５及びメモリデバイス（複数可）１４０を含む。他の実装例では、コンピューティングシステム１００は、他のコンポーネントを含み、かつ／または、コンピューティングシステム１００は、異なるように構成される。プロセッサ１０５Ａ〜Ｎは、システム１００に含まれる任意の数のプロセッサを表す。
【００１２】
一実装例では、プロセッサ１０５Ａは、中央処理装置（ＣＰＵ）などの汎用プロセッサである。一実装例では、プロセッサ１０５Ｎは、高並列アーキテクチャを有するデータ並列プロセッサである。データ並列プロセッサは、グラフィックスプロセッシングユニット（ＧＰＵ）、デジタルシグナルプロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）などを含む。一部の実装例では、プロセッサ１０５Ａ〜Ｎは、複数のデータ並列プロセッサを含む。
【００１３】
メモリコントローラ（複数可）１３０は、プロセッサ１０５Ａ〜Ｎ及びＩ／Ｏインターフェース１２０に結合されているＩ／Ｏデバイス（図示せず）によってアクセス可能な任意の数及びタイプのメモリコントローラを表す。メモリコントローラ（複数可）１３０は、任意の数及びタイプのメモリデバイス（複数可）１４０に結合されている。メモリデバイス（複数可）１４０は、任意の数及びタイプのメモリデバイスを表す。例えば、メモリデバイス（複数可）１４０に含まれるメモリのタイプは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、強誘電体ランダムアクセスメモリ（ＦｅＲＡＭ）などを含む。
【００１４】
Ｉ／Ｏインターフェース１２０は、任意の数及びタイプのＩ／Ｏインターフェース（例えば、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス、ＰＣＩ−Ｅｘｔｅｎｄｅｄ（ＰＣＩ−Ｘ）、ＰＣＩＥ（ＰＣＩ  Ｅｘｐｒｅｓｓ）バス、ギガビットイーサネット（ＧＢＥ）バス、ユニバーサルシリアルバス（ＵＳＢ））を表す。様々なタイプの周辺機器（図示せず）が、Ｉ／Ｏインターフェース１２０に結合されている。そうした周辺機器は、（以下に限定するものではないが）ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック、または他のタイプのゲームコントローラ、メディア記録デバイス、外部ストレージデバイス、ネットワークインターフェースカードなどを含む。ネットワークインターフェース１３５は、ネットワークメッセージをネットワーク経由で送受信するのに用いられる。
【００１５】
様々な実装例では、コンピューティングシステム１００は、コンピュータ、ラップトップ、モバイルデバイス、ゲーム機、サーバ、ストリーミングデバイス、ウェアラブルデバイス、または様々な他のタイプのコンピューティングシステムもしくはデバイスのいずれかである。コンピューティングシステム１００のコンポーネントの数は実装例ごとに異なることに留意されたい。例えば、他の実装例では、図１に示す数よりも多いまたは少ない数の各コンポーネントが存在する。他の実装例では、コンピューティングシステム１００は、図１に示さない他のコンポーネントを含むことにも留意されたい。さらに、他の実装例では、コンピューティングシステム１００は図１に示す方法とは異なる方法で構成される。
【００１６】
ここで図２を参照すると、プロセッサパイプライン２００の一実装例のブロック図が示される。様々な実装例では、プロセッサ１０５Ａ〜Ｎ（図１の）が、プロセッサパイプライン２００の１つまたは複数のインスタンスを含む。一実装例では、プロセッサパイプライン２００は、少なくともフェッチユニット２１０、デコードユニット２１５、スケジューラキュー割り当てロジック２２０、キュー２２５Ａ〜Ｎ及び実行ユニット２３０Ａ〜Ｎを含む。キュー２２５Ａ〜Ｎは本明細書中でスケジューラキューとも称されることに留意されたい。プロセッサパイプライン２００はまた、図を分かりづらくしないために図示されていない他のコンポーネント（例えば、分岐予測ユニット、命令キャッシュ）も含むことも理解すべきである。他の実装例では、プロセッサパイプライン２００は、他の適切な方法で構成される。
【００１７】
一実装例では、フェッチユニット２１０は、メモリ及び／または命令キャッシュからプログラムストリームの命令をフェッチし、フェッチユニット２１０は、フェッチされた命令をデコードユニット２１５に伝達する。デコードユニット２１５は、フェッチされた命令を命令動作（すなわち、略してｏｐ）へとデコードする。ｏｐはマイクロ−ｏｐまたはｕｏｐとも称されることに留意されたい。一般に、命令動作は、実行ユニット２３０Ａ〜Ｎに含まれるハードウェアが実行可能である動作である。様々な実装例では、各命令は、実行されると命令セットアーキテクチャにしたがってその命令に対して定義された動作のパフォーマンスをもたらす１つまたは複数のｏｐに変換される。任意のタイプの命令セットアーキテクチャが、プロセッサパイプライン２００によって用いられる。デコードユニット２１５は、命令のタイプ、ソースオペランドなどを特定し、各デコードされたｏｐは、デコード情報の一部と併せて命令を含む。各命令が単一のｏｐに変換される実装例では、各ｏｐは、対応する命令またはその一部（例えば、ｏｐコードフィールドまたは命令のフィールド）である。一部の実装例では、デコードユニット２１５は、命令に対するｏｐを生成する回路及び／またはマイクロコードの任意の組み合わせを含む。例えば、一実装例では、比較的単純なｏｐ生成（例えば命令あたり１個または２個のｏｐ）はハードウェアで対処され、より広範なｏｐ生成（例えば命令に対して３個より多いｏｐ）はマイクロコードで対処される。
【００１８】
デコードユニット２１５からのｏｐは、スケジューラキュー割り当てロジック２２０に提供される。スケジューラキュー割り当てロジック２２０は、ｏｐをスケジューラキュー２２５Ａ〜Ｎにどのように割り当てるかを判定する。様々な実装例では、ｏｐをキュー２２５Ａ〜Ｎに割り当てるための複数の様々な割当順列が存在する。本明細書中で用いるように、割当順列は、１つまたは複数のｏｐの、１つまたは複数のキューへの特定のｏｐ−キュー割り当てとして定義される。一実装例では、スケジューラキュー割り当てロジック２２０は、プロセッサパイプライン２００に対して最大化されている実行スループットをもたらすであろう割当順列を選択しようとする。スケジューラキュー割り当てロジック２２０はまた、ｏｐが、特定のタイプのｏｐを実際に実行可能である実行ユニット２３０Ａ〜Ｎに結合されているキュー２２５Ａ〜Ｎに割り当てられるように、割当順列を選択する。プロセッサパイプライン２００に示すように、各キュー２２５Ａ〜Ｎは、対応する実行ユニット２３０Ａ〜Ｎに結合されている。しかしながら、他の実装例では、１つまたは複数のキュー２２５Ａ〜Ｎは、複数の実行ユニット２３０Ａ〜Ｎに結合されている。
【００１９】
所与のクロックサイクルにおいて妥当な割当順列を選択した後、ｏｐは、選択された割当順列に一致するようにキュー２２５Ａ〜Ｎに割り当てられる。依存関係が解決されｏｐの実行準備ができると、ピッカー（図示せず）は、実行ユニット２３０Ａ〜Ｎで実行するために、キュー２２５Ａ〜Ｎからｏｐを選択する。一実装例では、個々の実行ユニット２３０Ａ〜Ｎは、典型的なプログラムシーケンスで遭遇する様々なタイプのｏｐの全てのサブセットしか実行できない。したがって、スケジューラキュー割り当てロジック２２０は、これらのｏｐがこれらの具体的なタイプのｏｐを実行可能である実行ユニット２３０Ａ〜Ｎによって実行されるように、ｏｐを適切なキュー２２５Ａ〜Ｎに割り当てる。
【００２０】
ここで図３を参照すると、プロセッサパイプライン３００の一部の一実装例のブロック図が示される。一実装例では、プロセッサパイプライン３００の一部は、プロセッサパイプライン２００内に含まれる。デコードユニット（図示せず）は、命令をｏｐへとデコードし、そして、ｏｐは、マルチプレクサ（すなわちｍｕｘ）３１０Ａ及びｍｕｘ３１０Ｂに提供される。各ｍｕｘ３１０Ａ〜Ｂは、取り付けられているスケジューリング論理ユニット３２０Ａ〜Ｂにそれぞれ対応するタイプである最初のＮ個のｏｐを選択する。論理ユニット３１５Ａ〜Ｂは、ｍｕｘ３１０Ａ〜Ｂにそれぞれ結合される選択信号を提供する。
【００２１】
第１のｏｐタイプのスケジューリング論理ユニット３２０Ａ及び第２のｏｐタイプのスケジューリング論理ユニット３２０Ｂは、任意の数及びタイプのスケジューリング論理ユニットを表す。同様に、ｍｕｘ３１０Ａ〜Ｂは、任意の数のスケジューリング論理ユニットに結合されている任意の数のｍｕｘを表す。実装例に応じて、プロセッサは、任意の数の様々なｏｐタイプ（例えば、ＡＬＵ  ｏｐ、アドレス生成ｏｐ、浮動小数点ｏｐ、固定小数点ｏｐ、分岐ｏｐ、乗算ｏｐ、除算ｏｐ）を処理する。一実装例では、第１のｏｐタイプのスケジューリング論理ユニット３２０Ａは、ＡＬＵ  ｏｐをキュー３２５Ａ〜Ｎに割り当て、第２のｏｐタイプのスケジューリング論理ユニット３２０Ｂは、アドレス生成ｏｐをキュー３５０Ａ〜Ｎに割り当てる、等々。他の実装例では、第１のｏｐタイプのスケジューリング論理ユニット３２０Ａ及び第２のｏｐタイプのスケジューリング論理ユニット３２０Ｂは、他のタイプのｏｐを、対応するキューに割り当てる。
【００２２】
一実装例では、各キュー３２５Ａ〜Ｎ及び３５０Ａ〜Ｎは、第１のタイプのｏｐ及び第２のタイプのｏｐを格納する。別の実装例では、キュー３２５Ａ〜Ｎ及び３５０Ａ〜Ｎの１つまたは複数は、第１のタイプまたは第２のタイプのｏｐのみを格納する。２つより多いタイプのｏｐを有する実装例では、各キュー３２５Ａ〜Ｎ及び３５０Ａ〜Ｎは、３つ以上のタイプのｏｐ、２つ以上のタイプのｏｐ、または単一のタイプのｏｐを格納する。異なる実装例では、任意の数の異なるタイプのｏｐを格納している異なる数及びタイプのキューがあるだろうことを理解すべきである。
【００２３】
各キュー３２５Ａ〜Ｎは、対応する実行ユニット３３５Ａ〜Ｎまたは３４５Ａ〜Ｎで実行するためにｏｐを選択する任意の数のピッカー３３０Ａ〜Ｎ及び３４０Ａ〜Ｎを有する。同様に、各キュー３５０Ａ〜Ｎは、対応する実行ユニット３６５Ａ〜Ｎまたは３７５Ａ〜Ｎで実行するためにｏｐを選択する任意の数のピッカー３６０Ａ〜Ｎ及び３７０Ａ〜Ｎを有する。一実装例では、キュー３２５Ａに格納可能な異なるタイプのｏｐごとに、キュー３２５Ａに対するピッカー３３０Ａ〜Ｎが存在する。それぞれ異なるタイプのｏｐは、異なるタイプの実行ユニットで実行され、実行ユニット３３５Ａ〜Ｎは、異なるタイプのｏｐを実行する任意の数の異なる実行ユニットを表す。一実装例では、いくつかの実行ユニットは、１つより多いタイプのｏｐを実行可能であることに留意されたい。
【００２４】
他のキューにおいて、各ピッカーは、ピッカーに結合されている実行ユニットで実行されるだろうｏｐをキューから選択する。例えば、ピッカー３４０Ａ〜Ｎは、それぞれ実行ユニット３４５Ａ〜Ｎで実行されるｏｐをキュー３２５Ｎから選択し、ピッカー３６０Ａ〜Ｎは、それぞれ実行ユニット３６５Ａ〜Ｎで実行されるｏｐをキュー３５０Ａから選択し、ピッカー３７０Ａ〜Ｎは、それぞれ実行ユニット３７５Ａ〜Ｎで実行されるｏｐをキュー３５０Ｎから選択する。一実装例では、プロセッサパイプラインによってサポートされている異なるタイプのｏｐごとに、（ピッカーを介して）各キューに結合されている異なる実行ユニットが存在する。しかしながら、一部の実装例では、一部のキューは、プロセッサパイプラインによって実行されている様々なタイプのｏｐ全てのサブセットしか格納しない。例えば、プロセッサが２種類のｏｐ（ＡＬＵ及びアドレス生成のｏｐ）を実行する実装例では、一部のキューはＡＬＵ  ｏｐのみを格納し、他のキューはアドレス生成ｏｐのみを格納する。
【００２５】
様々なｏｐタイプのためのスケジューラキュー及び実行ユニットの数は実装例ごとに異なることを理解すべきである。本開示を通して説明される例は、実装の非限定的な例を例示することを意図している。他の実装例では、他の数のスケジューラキュー、実行ユニット及び他の関連構造を用いるプロセッサが可能であり、企図される。
【００２６】
ここで図４を参照すると、所与のｏｐタイプのためのスケジューラ論理ユニット４００の一実装例のブロック図が示される。一実装例では、スケジューラキュー割り当てロジック（例えば、図２のスケジューラキュー割り当てロジック２２０）は、異なるｏｐタイプごとに別々のスケジューラ論理ユニット４００を含む。別の実装例では、第１のｏｐタイプのスケジューリング論理３２０Ａ及び第２のｏｐタイプのスケジューリング論理３２０Ｂは、スケジューラ論理ユニット４００に示されるコンポーネントを含む。
【００２７】
一実施形態では、デコードユニットからのｏｐは、論理ユニット４１０、ｍｕｘ４１５及び論理ユニット４３０に結合される。論理ユニット４１０は、特定のスケジューラ論理ユニット４００に対応する所与のタイプであるｏｐのみをデコードユニットから選択する選択信号を生成する。例えば、１０個のｏｐが所与のサイクルにおいてデコードユニットによってデコードされ、３個のｏｐのみが特定のスケジューラ論理ユニット４００に対応する所与のタイプである場合、これら３個のｏｐが、ｍｕｘ４１５からユニット４２０及びプライオリティマトリクス４２１〜４２９に出力される。デコードユニットによってデコードされるｏｐの数は、サイクルごとに、かつ実装例ごとに異なるものであり、所与のタイプのｏｐの数も、サイクルごとに、かつ実装例ごとに異なるものになることに留意されたい。
【００２８】
ｍｕｘ４１５から出力されるｏｐは、ユニット４２０及びプライオリティマトリクス４２１〜４２９に提供される。一実装例では、ユニット４２０は、最初の妥当なＮ−ｏｐ割り当て検索ユニットであり、ここでＮは整数であり、Ｎの値は、所与のｏｐタイプの実行ユニットに入力を行うピッカーの数によって決定される。例えば、所与のｏｐタイプの実行ユニットに結合されている６個のピッカーが存在する場合、Ｎは６に等しく、ユニット４２０は、６個のｏｐを、所与のｏｐタイプの実行ユニットに入力を行うピッカーを有する６個の異なるスケジューラキューに割り当てることの様々な可能な組み合わせの全てに対して、いずれの割当順列が妥当であるかを判定する。次に、ユニット４２０は、様々な可能な割当順列から、最初の妥当な割当順列を選択する。この割当順列は、ｍｕｘ４３５に結合される。一実装例では、ピッカーと実行ユニットに１対１の対応関係があり、各ピッカーは、スケジューラキューに取り付けられていることに留意されたい。ピッカーは、ピッカーに結合されている実行ユニットによって実行可能であるｏｐを、その取り付けられているスケジューラキューから選択する。
【００２９】
一実装例では、（Ｎ−１）−ｏｐ割り当てプライオリティマトリクス４２１は、（Ｎ−１）個のｏｐを（Ｎ−１）個の異なるスケジューラキューに割り当てることの様々な順列の組み合わせの全てに対して、いずれの割当順列が妥当であるかを判定する。上記の例では、Ｎ＝６である場合、プライオリティマトリクス４２１は、５個のｏｐが６個のスケジューラキューのうちの５個に割り当てられるときの様々な割当順列の妥当性をチェックする。プライオリティマトリクス４２１はまた、スケジューラキューのそれぞれに既にいくつの保留中のｏｐが格納されているかを示すスケジューラキュー占有率データも受信する。一実装例では、プライオリティマトリクス４２１は、最も高い占有率を有するキューにｏｐを割り当てない妥当な割当順列を選択する。
【００３０】
実装例に応じて、（Ｎ−２）個のｏｐがＮ個のスケジューラキューのうちの（Ｎ−２）個に割り当てられるときの様々な割当順列の妥当性をチェックし、（Ｎ−３）個のｏｐがＮ個のスケジューラキューのうちの（Ｎ−３）個に割り当てられるときの様々な割当順列の妥当性をチェックする等を行う任意の数の他のプライオリティマトリクスが在る。一実装例では、これらのプライオリティマトリクスのそれぞれは、Ｎ個の異なるスケジューラキューの中で最も多くのｏｐを既に格納しているスケジューラキューへのｏｐの割り当てを回避する妥当な割当順列を選択する。これらの選択された割当順列は、次に、ｍｕｘ４３５に結合される。
【００３１】
スケジューラ論理ユニット４００に示される最後のプライオリティマトリクスは、単一−ｏｐ割り当てプライオリティマトリクス４２９である。プライオリティマトリクス４２９は、Ｎ個の異なるスケジューラキューのそれぞれに単一のｏｐを割り当てることの妥当性をチェックする。一実装例では、プライオリティマトリクス４２９は、様々なスケジューラキューの中で最も少ない数のｏｐを格納しているスケジューラキューに単一のｏｐを割り当てることを優先する。プライオリティマトリクス４２９は、Ｎ個の様々な可能な割り当てから妥当な割り当てを選択し、次に、この選択された割り当ての表示をｍｕｘ４３５に送信する。
【００３２】
一実装例では、論理ユニット４３０は、所与のクロックサイクルにおいてスケジューラキューに割り当てるｏｐの数を判定する。一実装例では、論理ユニット４３０は、割り当てられているｏｐの数は、所与のクロックサイクルにおいてピッカー−実行ユニットあたりで１つより多いｏｐを必要としないことを保証する。一実装例では、論理ユニット４３０は、ユニット４２０及びプライオリティマトリクス４２１〜４２９が妥当な割当順列を選択するのと並行して、割り当てるｏｐの数を判定する。論理ユニット４３０は、所与のクロックサイクルにおいてスケジューラキューに割り当てるｏｐの数の判定に基づいて、選択信号を生成し、論理ユニット４３０は、この選択信号をｍｕｘ４３５に伝達する。次に、ｍｕｘ４３５は、論理ユニット４３０によって生成された選択信号に基づいて、特定のｏｐ割当順列をｍｕｘ４３５の出力に結合する。例えば、一実装例では、ｍｕｘ４３５への入力は、Ｎ個のｏｐ、Ｎ−１個のｏｐ、Ｎ−２個のｏｐなどの割り当て、そして１個のｏｐの割り当てに至るまでの割り当てのための様々なｏｐ割当順列である。論理ユニット４３０からの選択信号は、これら割当順列のいずれがｍｕｘ４３５の出力に結合されるかを判定する。スケジューラキュー割り当てロジック（例えば、図２のスケジューラキュー割り当てロジック２２０）は、この選択されたｏｐ割当順列を用いて、所与のクロックサイクルにおいてスケジューラキューにｏｐを割り当てる方法を判定する。
【００３３】
ここで図５を参照すると、最初の妥当なＮ−ｏｐ検索ユニット５００の一実装例のブロック図が示される。一実装例では、最初の妥当なＮ−ｏｐ割り当て検索ユニット５００の構成要素は、（図４の）最初の妥当なＮ−ｏｐ割り当て検索ユニット４２０内に含まれる。最初の妥当なＮ−ｏｐ割り当て検索ユニット５００は、所与のクロックサイクルにおいて特定のｏｐタイプに対するピッカーが取り付けられた利用可能なスケジューラキューの全てにｏｐを割り当てるための妥当な割当順列を検索しようとする。一実装例では、最初の妥当なＮ−ｏｐ割り当て検索ユニット５００は、ＡＮＤゲート５０５Ａ〜Ｐ、論理ユニット５１０及びｍｕｘ５２０を含む。他の実装例では、最初の妥当なＮ−ｏｐ割り当て検索ユニット５００は、他のコンポーネントを用いてかつ／またはコンポーネントの他の配置を用いて実装される。
【００３４】
ＡＮＤゲート５０５Ａ〜Ｐの数は、実装例によって異なり、所与のｏｐタイプの実行ユニットに入力を行うピッカーの数に対する様々な可能な割当順列の数に基づくものである。一実装例では、所与のｏｐタイプに対するピッカーが取り付けられているスケジューラキューへのｏｐの様々な可能な割当順列ごとに、異なるＡＮＤゲート５０５Ａ〜Ｐが存在する。例えば、ユニット５００に対応する所与のｏｐタイプに対するスケジューラキューに３つのピッカー−実行ユニットの組み合わせが取り付けられている場合、３個のスケジューラキューに対する３個のｏｐの６つの異なる可能な割当順列のそれぞれをテストするための６つのＡＮＤゲート５０５Ａ〜Ｐが存在する。所与のタイプのｏｐに対する他の数のスケジューラキュー、ピッカー、そして実行ユニットの組み合わせの場合、ＡＮＤゲート５０５Ａ〜Ｐの数は、対応するスケジューラキューの全てにｏｐを割り当てるための様々な可能な割当順列の全てをテストするように、異なるだろう。
【００３５】
各ＡＮＤゲート５０５Ａ〜Ｐは、スケジューラキューに取り付けられているピッカー−実行ユニットの組み合わせに基づいて、様々なスケジューラキューへのｏｐの割り当ての妥当性をテストする。第１の、第２の、かつ第Ｎのｏｐは、現在のクロックサイクルにおいてデコードユニットによってデコードされたｏｐを指す。第１のｏｐは、プログラム順で最も古いｏｐを指し、第２のｏｐは、プログラム順で２番目に古いｏｐを指す、等々。一実装例では、ピッカーと実行ユニットの間に１対１の対応関係がある。言い換えると、各ピッカーは、対応する実行ユニットに結合されている。前述のように、一実装例では、スケジューラキューには、実行ユニットに入力を行うピッカーが取り付けられており、これら実行ユニットは、ｏｐタイプのサブセットしか実行できない。各ＡＮＤゲート５０５Ａ〜Ｐは、スケジューラキューに結合されているピッカーによって入力される実行ユニットが、所与の割当順列に対してスケジューラキューに割り当てられているｏｐを実行可能かどうか、を判定する。所与のＡＮＤゲートにおいて、各実行ユニットが、その対応するスケジューラキューに割り当てられているｏｐを実行可能である場合、所与のＡＮＤゲートは、割当順列が妥当であると示す高出力（つまり、「１」ビット）を生成する。そうではなく、実行ユニットのいずれかが、その対応するスケジューラキューに割り当てられているｏｐを実行できない場合、所与のＡＮＤゲートは、低出力（つまり、「０」ビット）を生成する。
【００３６】
一実装例では、最初の論理検索ユニット５１０は、ＡＮＤゲート５０５Ａ〜Ｐからの最初の「１」出力を選択する。「最初の」「１」出力を構成する方向は、実装例によって異なる。一実装例では、最初の「１」出力は、ＡＮＤゲート５０５Ａの方向からのものであり、別の実装例では、最初の「１」出力は、ＡＮＤゲート５０５Ｐの方向からのものである。他の実装例では、最初の論理検索ユニット５１０は、妥当な割当順列が複数ある場合、いずれの割当順列を選択するか判定するために他の技術を用いる。最初の論理検索ユニット５１０の出力は、ｍｕｘ５２０に結合され、最初の論理検索ユニット５１０のこの出力は、ｍｕｘ５２０への割当順列入力の１つを選択する。一実装例では、ｍｕｘ５２０への各割当順列入力は、この割当順列が全体的なスケジューラキュー割り当てロジック（例えば、図２のスケジューラキュー割り当てロジック２２０）によって選択されるものと最終的になる場合、後続の論理ユニットによって使用可能な方法で、スケジューラキューへのｏｐの割り当てを指定して、これらのｏｐを対応するスケジューラキューに割り当てる。他の実装例では、最初の妥当なＮ−ｏｐ検索ユニット５００は、図５に示されるものと同等の機能を行う論理ゲートの他の構成で実装されることに留意されたい。
【００３７】
ここで図６を参照すると、割当順列を選択するためのプライオリティマトリクス６１０の一実装例のブロック図が示される。一実装例では、プライオリティマトリクス４２１（図４の）は、プライオリティマトリクス６１０のコンポーネントを含む。一実装例では、プライオリティマトリクス６１０は、計Ｎ個のスケジューラキューのうちの（Ｎ−１）個のスケジューラキューに（Ｎ−１）個のｏｐが割り当てられるときに妥当な割当順列を選択するように実装される。これにより、スケジューラキューの１つを、所与のクロックサイクルにおいてｏｐが割り当てられないままとする。
【００３８】
図５の最初の論理検索ユニット５００と同様に、プライオリティマトリクス６１０は、（Ｎ−１）個のｏｐを（Ｎ−１）個のスケジューラキューに割り当てるための様々な可能な割当順列の妥当性をテストする複数のＡＮＤゲート６０５Ａ〜Ｐに結合されている。一実装例では、プライオリティマトリクス６１０はまた、Ｎ個のスケジューラキューに既に格納されているｏｐの数を指定するスケジューラキュー占有率データも受信する。一実装例では、プライオリティマトリクス６１０は、所与のクロックサイクルにおいて最も多くのｏｐを有する（すなわち、最も高い占有率）スケジューラキューにｏｐを割り当てない、最初の妥当な割当順列を選択する。次に、この割当順列は、ｍｕｘ６２０に結合される入力から選択される。後続の論理ユニットが（Ｎ−１）個のｏｐが所与のクロックサイクルにおいて割り当てられるべきと判断した場合、この割当順列が、所与のクロックサイクルにおいてスケジューラキューにｏｐを割り当てるのに、スケジューラキュー割り当てロジックによって使用される。スケジューラキュー割り当てロジックはまた、プライオリティマトリクス６１０と同じ構造にしたがう他のプライオリティマトリクスも含む。これらの他のプライオリティマトリクスは、（Ｎ−２）個のｏｐが所与のクロックサイクルにおいて割り当てられるとき、（Ｎ−３）個のｏｐが所与のクロックサイクルにおいて割り当てられるときなど、所与のクロックサイクルにおける１個のｏｐの割り当てに至るまで、割当順列を判定するために用いられる。
【００３９】
ここで図７を参照すると、スケジューラキュー割り当てロジックを実装する方法７００の一実装例が示される。説明のために、本実装例でのステップ及び図８でのステップを順次示す。しかしながら、記載される方法の様々な実装例では、記載される要素のうちの１つまたは複数が、同時に実行される、示されるのとは異なる順序で実行される、または、全体的に省略されることに留意されたい。他の追加の要素も必要に応じて実行される。本明細書中に記載される様々なシステムまたは装置のいずれも、方法７００を実装するように構成されている。
【００４０】
デコードユニットは、所与のサイクルにおいて複数のｏｐをデコードする（ブロック７０５）。デコードユニットは、複数のｏｐをスケジューラキュー割り当てロジックに伝達する（ブロック７１０）。スケジューラキュー割り当てロジックは、複数のｏｐを、異なるｏｐタイプに対応するｏｐのストリームへと分割する（ブロック７１５）。次に、ｏｐタイプごとに、スケジューラキュー割り当てロジックは、複数のスケジューラキューにｏｐを割り当てるための複数の様々な割当順列に対する妥当性信号を生成する（ブロック７２０）。一実装例では、スケジューラキュー割り当てロジックは、ブロック７２０において様々な可能な割当順列の全てに対して妥当性信号を生成する。様々な可能な割当順列には全て、１からスケジューラキューの数までの様々な数のｏｐに対する順列が含まれる。
【００４１】
また、ブロック７１５及び７２０と並行して、スケジューラキュー割り当てロジックは、所与のサイクルにおいて割り当てるｏｐの数の表示を受信する（ブロック７２５）。次に、スケジューラキュー割り当てロジックは、表示によって指定されたｏｐの数に対応する妥当な割当順列を選択する（ブロック７３０）。一実装例では、スケジューラキュー割り当てロジックは、ブロック７３０において最初の妥当な割当順列を選択する。他の実装例では、スケジューラキュー割り当てロジックは、複数の割当順列が妥当なときにいずれの割当順列を選択するかを判定するのに他の技術を用いる。次に、スケジューラキュー割り当てロジックは、選択された割当順列に一致するように、ｏｐをスケジューラキューに割り当てる（ブロック７３５）。ブロック７３５後、方法７００は終了する。一実装例では、方法７００は、後続のクロックサイクルごとに繰り返されることに留意されたい。
【００４２】
ここで図８を参照すると、プライオリティマトリクスを実装する方法８００の一実装例が示される。プライオリティマトリクスは、デコードユニットから複数のｏｐを受信する（ブロック８０５）。プライオリティマトリクスはまた、複数のスケジューラキューに対するキュー占有率状態も受信する（ブロック８１０）。プライオリティマトリクスは、複数のスケジューラキューの全てよりも少ないスケジューラキューにｏｐを割り当てるための様々な割当順列の妥当性をテストする（ブロック８１５）。例えば、５個のスケジューラキューがある場合、一実装例では、プライオリティマトリクスは、４個のｏｐを、５個のスケジューラキューのうちの４個に割り当てる様々な方法の妥当性をテストする。別の実装例では、プライオリティマトリクスは、３個のｏｐを、５個のスケジューラキューのうちの３個に割り当てる様々な方法の妥当性をテストする。他の実装例では、５以外の他の数のスケジューラキューがあることを理解すべきである。
【００４３】
次に、プライオリティマトリクスは、占有率が最も高いキューへのｏｐの割り当てを回避する割当順列を選択する（ブロック８２０）。他の実装例では、プライオリティマトリクスは、占有率が最も高い２つのキューへのｏｐの割り当てを回避する割当順列を選択し、占有率が最も高い３つのキューへのｏｐの割り当てを回避する割当順列を選択する、等々。次に、プライオリティマトリクスは、選択された割当順列の表示を生成する（ブロック８２５）。一実装例では、プライオリティマトリクスは、選択された割当順列の表示を、スケジューラキュー割り当てロジックの次のレベルのｍｕｘに伝達する。ブロック８２５後、方法８００は終了する。一実装例では、方法８００はクロックサイクルごとに実行されることに留意されたい。さらに、一実装例では、スケジューラキュー割り当てロジックは、複数のプライオリティマトリクスを含み、方法８００は、異なるプライオリティマトリクスごとに実行される。
【００４４】
様々な実装例において、ソフトウェアアプリケーションのプログラム命令が、本明細書中に記載された方法及び／または機構を実装するのに用いられる。例えば、汎用または特殊目的プロセッサによって実行可能なプログラム命令が企図されている。様々な実装例では、そうしたプログラム命令は、高水準プログラミング言語によって表される。他の実装例では、プログラム命令は、高水準プログラミング言語からバイナリ、中間、または他の形式にコンパイルされる。代替として、ハードウェアの動作または設計を記述するプログラム命令が書かれる。そうしたプログラム命令は、Ｃなどの高水準プログラミング言語によって表される。代替として、Ｖｅｒｉｌｏｇなどのハードウェア設計言語（ＨＤＬ）が用いられる。様々な実装例では、プログラム命令は、各種の非一時的なコンピュータ可読格納媒体のいずれかに格納される。格納媒体は、プログラム命令をコンピューティングシステムにプログラム実行のために提供するために、使用中にコンピューティングシステムによってアクセス可能である。一般的に言って、そうしたコンピューティングシステムは、プログラム命令を実行するように構成された少なくとも１つまたは複数のメモリ及び１つまたは複数のプロセッサを含む。
【００４５】
上記の実装例は実装の単なる非限定的な例であることを強調すべきである。上述の開示が完全に理解されると、多数の変形例及び変更例が、当業者に明らかとなろう。以下の特許請求の範囲は全てのそうした変形例及び変更例を包括すると解釈されることが意図される。
【図１】
2021525919.tif 000003
【図２】
2021525919.tif 000004
【図３】
2021525919.tif 000005
【図４】
2021525919.tif 000006
【図５】
2021525919.tif 000007
【図６】
2021525919.tif 000008
【図７】
2021525919.tif 000009
【図８】
2021525919.tif 000010
【国際調査報告】
2021525919.tif 000011
2021525919.tif 000012
2021525919.tif 000013