(57)【要約】      （修正有）【課題】  動的分散リソース割当を実行するシステム及び方法を提供する。【解決手段】  この動的分散リソース割当は、バトンパッシング法を使用して実行される。リソース割当の制御は、互いに物理的に離れたところに位置する割当エージェント１００と割当解除エージェント１２５間で分離されている。割当解除エージェント１２５は、各クロックサイクルごとに、１つ又は複数のバトンを割当エージェント１００に渡す。１つのバトンは、１つの利用可能なリソースを表している。割当エージェント１００は、１つ又は複数の使用されていないバトンを割当解除エージェント１２５に渡すか、或いは、１つ又は複数の以前渡されたバトンを使用する。【選択図】      図１
2004206718.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータプロセッサに使用する分散リソース割当システムであって、
第１リソースを割当解除し、前記第１リソースの状態について伝達する割当解除エージェントと、
前記割当解除エージェントから離れたところに位置し、前記割当解除エージェントから前記リソースの状態情報を受信し、同時に第２リソースの状態について前記割当解除エージェントに伝達する割当エージェントと、を有するシステム。
【請求項２】
コンピュータプロセッサに使用する動的分散リソース割当システムであって、
第１クロックサイクルの開始時点で第１リソースを渡す割当解除エージェントと、
前記割当解除エージェントから前記第１リソースを受け取る割当エージェントと、
前記コンピュータプロセッサにおいて前記第１リソースを割り当てる割当ブロックと、
前記コンピュータプロセッサにおいて前記第１リソースを割当解除する割当解除ブロックと、を有するシステム。
【請求項３】
コンピュータプロセッサにおいてリソースを割り当てる方法であって、
リソースを割当解除する割当解除エージェントから、リソースを割り当てる割当エージェントに対して、前記割当エージェントからのリソースに対する要求とは無関係に、少なくとも１つのリソースを渡す段階と、
前記割当エージェントから前記割当解除エージェントに前記リソースを返す段階と、を有する方法。
【請求項４】
コンピュータプロセッサにおいてリソースを割り当てるシステムであって、
第１リソースを割当解除するべく、割当解除エージェントを構成する手段と、
前記第１リソースを割り当てるべく、割当エージェントを構成する手段と、
前記割当エージェントからの前記リソースに対する要求とは無関係に、前記割当解除エージェントから前記割当エージェントに対して前記第１リソースを渡す手段と、
前記割当解除エージェントから前記割当エージェントへの前記第１リソースの供給とは無関係に、前記割当エージェントから前記割当解除エージェントに第２リソースを返す手段と、を有するシステム。
【請求項５】
スーパースカラープロセッサにおける分散リソース割当システムであって、
各クロックサイクルにおいて、複数のリソースの中の利用可能な第１リソースに関する通知を割当エージェントに送り、前記割当エージェントから使用されていない第２リソースに関する通知を受け取る割当解除エージェントと、
前記割当解除エージェントと通信可能に接続されており、前記第１リソースを割当解除する割当解除ブロックと、
前記割当解除エージェントから離れたところに位置しており、前記アベイラビリティに関する通知を受け取り、前記受信した通知とは無関係に、各クロックサイクルにおいて、前記使用されていないリソースに関する通知を送信する前記割当エージェントと、
前記割当エージェントに通信可能に接続されており、前記第１リソースを割り当てる割当ブロックと、を有するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプロセッサに関し、更に詳しくは、コンピュータプロセッサにおけるリソースの割当に関するものである。
【背景技術】
【０００２】
コンピュータシステムにおいては、高性能のプロセッサに対してリソースを割り当てる必要がある。このリソースには、例えば、バッファやキャッシュメモリなどの要素が含まれる。プロセッサシステムの場合、バッファが具備可能なエントリ数が３２であるのに対し、プロセッサが発行可能な命令数が１２８であるため、プロセッサの最大性能を引き出すべく、一般的なバッファの割当及び再割当が実行されている。動的リソース割当と呼ばれるこの割当及び再割当は、スーパースカラープロセッサの場合に、特に重要である。
【０００３】
動的リソース割当に伴う問題点の１つが、リソース割当及び割当解除ブロックを配置する場所の問題である。通常、物理的に広範囲に分散している複数の論理素子の場合に、リソースの割当及び割当解除が必要となる。従来の動的割当システムでは、実際の割当及び割当解除を実行するのに、割当用及び割当解除用の２つの物理的に別個の論理ブロックを使用している。これらの素子が互いに遠く離れたところに位置していれば、リソースの割当及び割当解除に要する時間は、通常、数クロックサイクル程度の長いものになってしまう。割当及び割当解除を制御するべく、中央割当ブロックが使用されている。この中央割当ブロックは、割当ブロック及び割当解除ブロックとは物理的に別個のものになっており、これら２つのブロック間のどこかの地点に位置している。この結果、これらのブロックが通信する際に、時間的な伝達遅延が発生することになる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従って、プロセッサにおけるリソースの割当及び割当解除に伴う前述の問題点を克服するシステム及び方法を提供することが望ましい。
【課題を解決するための手段】
【０００５】
本発明では、スーパースカラープロセッサなどのプロセッサにおいてバトンパッシング法を使用することにより、１つのプロセスでリソースの割当と割当解除を実行する。本発明では、割当エージェントと割当解除エージェントという２つのブロックを使用し、リソースの割当と割当解除を制御している。これら割当エージェント及び割当解除エージェントは、物理的に別個のブロックであってよい。割当エージェントは、割当ブロックに物理的に近接して位置しており、割当解除エージェントは、割当解除ブロックに物理的に近接して位置している。一方は割当ブロックの近くに位置し、他方は割当解除ブロックの近くに位置可能なこれら２つのブロックを使用して割当及び割当解除を制御することにより、伝達遅延が減少する。
【０００６】
割当エージェント及び割当解除エージェントは、バトンの組を使用し、互いにリソースのアベイラビリティについて伝達する。それぞれのバトンは、利用可能なリソースを表している。それぞれの割当エージェント及び割当解除エージェントは、互いにバトンを継続的にやり取りする。一実施例においては、使用されていないバトンが割当解除エージェント内に保存される。割当解除エージェントは、各クロックサイクルごとに、割当エージェントに対して１つ又は複数の予備のバトンを渡す。割当エージェントは、この同じクロックサイクルにおいて、以前渡されたバトンを使用するか、或いは、それを割当解除エージェントに返す。割当エージェントは、バトンを使用してリソースを割り当てる。割当解除エージェントから割当エージェントにバトンの組を渡す決定と、１つ又は複数のバトンを割当又は割当解除する決定は、互いに無関係に実行される。この結果、分散リソースの割当及び割当解除が実現する。
【発明の効果】
【０００７】
本発明によれば、有利なことに、単一の割当／割当解除ブロックを有する高クロックレートシステムに伴う時間的な伝達遅延を回避することができる。
【発明を実施するための最良の形態】
【０００８】
本発明の好適な実施例に関する以下の説明は、例えば、コンピュータプロセッサにおいて使用されるリソース割当の観点で提示されている。実施例の中には、図４又は５に示されているロジックで実装可能なものも存在している。しかしながら、当業者であれば、多くのその他の論理ブロック、ハードウェア、ソフトウェア、又はファームウェアで本発明を実装可能であることを認知するであろう。説明を容易にするべく、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせにおいて実施されるコンピュータロジックを「論理ブロック」という用語で呼ぶこととする。
【０００９】
以下に、添付の図面を参照し、本発明の様々な実施例について説明するが、これらの添付図面においては、同様の参照符号によって同一又は機能的に類似の要素を示している。又、これらの図面におけるそれぞれの参照符号の最も左側の桁は、その参照符号が最初に使用される図面の番号を表している。
【００１０】
図１を参照すれば、リソース割当のいくつかのコンポーネントを示すブロックダイアグラムが示されている。図には、ＤＥＣＯＤＥエージェント１００、割当（ＡＬＬＯＣ）ブロック１０５、割当解除（ＤＥＡＬＬＯＣ）ブロック１２０、中央予約局（ＣＲＳ）１２５、及びバトンを格納する１つ又は複数の分散バッファ１１０、１１５が示されている。この図示の実施例においては、割当解除エージェントは、ＣＲＳ１２５と呼ばれており、割当エージェントは、ＤＥＣＯＤＥ１００と呼ばれている。ＤＥＣＯＤＥブロック１００とＣＲＳブロック１２５は、互いに物理的に別個に位置している。一実施例においては、ＤＥＣＯＤＥブロック１００とＣＲＳブロック１２５は、略クロックサイクルの半分の時間だけ離れて位置している。本発明の一実施例においては、ＤＥＣＯＤＥブロック１００とＡＬＬＯＣブロック１０５は、物理的に互いに近接して位置している。一実施例においては、ＣＲＳブロック１２５とＤＥＡＬＬＯＣブロック１２０は、物理的に互いに近接して位置している。
【００１１】
それぞれのバトンは、利用可能なリソースを表している。これらのバトンは、ＣＲＳ１２５（割当解除エージェント）内に保存することができる。各クロックサイクルごとに、ＣＲＳブロック１２５（割当解除ブロック）は、１つ又は複数のバトンをＤＥＣＯＤＥブロック１００（割当エージェント）に渡す。又、各クロックサイクルごとに、ＤＥＣＯＤＥブロック１００（割当エージェント）は、以前渡されたバトンを使用するか、或いは、使用していないバトンをＣＲＳブロック１２５（割当解除エージェント）に返す。図１に示されている分散バッファ１１０、１１５は、ＣＲＳブロック１２５とＤＥＣＯＤＥブロック１００間でやり取りされるこれらのバトンを格納する。ＣＲＳブロック１２５からＤＥＣＯＤＥブロック１００に渡されるバトンの最大数は、リソースを割当可能な最大レートと一致する。
【００１２】
以前渡されたバトン１１０のどれかをＤＥＣＯＤＥブロック１００が使用したかどうかに関係なく、ＣＲＳブロック１２５は、バトンをＤＥＣＯＤＥブロック１００に渡す。一実施例においては、ＤＥＣＯＤＥブロック１００は、自分が使用しないＣＲＳブロック１２５から渡されたバトン１１０を拒絶する。別の実施例においては、ＤＥＣＯＤＥブロック１００は、以前渡された使用していないバトン１１５を返却し、新しく渡されたバトン１１０を受け取る。当業者であれば、割当エージェント１００及び割当解除エージェント１２５、並びにリソースの割当及び割当解除を制御するバトンパッシング法を使用しシステムを実装する多数の方法が存在していることを認知するであろう。
【００１３】
次に図２を参照すれば、本発明の一実施例のタイミングを示すタイミング図が示されている。一方は立ち上がりエッジ２０５、他方は立ち上がりエッジ２１０を有する２つのクロックサイクルと共に、ＣＲＳブロック１２５、分散バッファ１１０（バトン）、ＤＥＣＯＤＥブロック１００、及び分散バッファ１１５（バトン）が示されている。第１クロックサイクル（立ち上がりエッジ２０５）において、ＣＲＳブロック１２５は、分散バッファ１１０を介し、ＤＥＣＯＤＥブロック１００に対して１つ又は複数のバトンを送る。又、このクロックサイクルにおいては、ＤＥＣＯＤＥブロック１００は、以前渡されたバトンを使用するか、或いは、１つ又は複数の使用していないバトンをＣＲＳブロック１２５に返す（但し、図を簡単にするべく、このプロセスは図２には示されていない）。次のクロックサイクル（立ち上がりグエッジ２１０）においては、ＤＥＣＯＤＥブロック１００は、分散バッファ１１５を介し、使用していないバトンを返送することができる。或いは、この代わりに、ＤＥＣＯＤＥブロック１００は、以前渡されたバトンのリソースを割り当てることも可能である。又、このクロックサイクルにおいても、ＣＲＳブロック１２５は、ＤＥＣＯＤＥブロック１００に対して１つ又は複数のバトンを送る（但し、この場合にも、図を簡単にするべく、このプロセスは図２には示されていない）。
【００１４】
次に図３を参照すれば、これまでＤＥＣＯＤＥブロック１００として示されていた割当エージェントに使用するロジックの一例が示されている。このＤＥＣＯＤＥブロック１００は、レジスタＤＥＡＬＬＯＣ１２０と分散バッファ１１０を有している。分散バッファ１１０は、ＣＲＳブロック１２５からＤＥＣＯＤＥブロック１００に渡されたバトンを格納する。ＤＥＣＯＤＥブロック１００は、レジスタＤＥＡＬＬＯＣ１２０から構成されている。ＤＥＡＬＬＯＣブロック１２０は、使用していないリソースをＣＲＳブロック１２５に渡す。
【００１５】
次に図４を参照すれば、本発明の第１実施例によるＣＲＳブロック１２５に使用されるロジックが示されている。ＣＲＳブロック１２５は、ＡＬＬＯＣレジスタ１０５、「左から右方向に最初のものを検出する」ブロック４０５、「割当スロット０」レジスタ４１０、「右から左方向に最初のものを検出する」ブロック４１５、「割当スロット１」レジスタ４２５、２つのＶレジスタ４６５、４７５、論理ＡＮＤゲート４２０、４３５、４４５、４５０、４５５、論理ＯＲゲート４３０、４４０、論理ＮＯＲゲート４００、論理インバータ４８０、４８５、４９０、及び分散バッファ１１０を有している。この図示の実施例を使用し、最大２つのリソースを割り当てることができる。当業者であれば、例えば、このロジックの少なくとも一部を複製することにより、３つ以上のリソースを割り当てるべく、このロジックを拡張可能であることを認知するであろう。又、当業者であれば、ＣＲＳブロック１２５を実装するべく、多くのその他の論理ブロックを使用可能であることを認知するであろう。ＣＲＳブロック１２５に使用するロジックとしては、ＣＲＳブロック１２５が、使用されていない又は割り当てられているリソースを追跡すると共に、それら使用されていない又は割り当てられているリソースについてＤＥＣＯＤＥブロック１００に伝達できるようになるものであれば、どのようなロジックであってもよい。従って、図４に示されているこの実施例は、かかるロジックの一例に過ぎないものである。
【００１６】
この図示の実施例においては、単項符号化法を使用し、リソースを追跡するための数字を表している。単項符号化法とは、１と０の組を使用して数字を表す符号化法である。但し、単項符号化法は、二進符号化法とは異なるものである。単項符号化法で表された数字は、０のストリーム内における１の位置に基づいて判定される。例えば、最下位ビットに存在する１は、数字のゼロを表している。最下位から２つ目のビットに存在する１は、１を表している。最下位から３つ目のビットに存在している１は、２を表すことになる。表１には、これら及び単項符号化法のその他の例が示されている。
【００１７】
【表１】
2004206718.tif 000003
【００１８】
単項符号化法によれば、ＡＮＤ及びＯＲゲートを使用して集合演算を実現できるため、集合演算を容易に実装可能である。当業者であれば、集合Ａと集合Ｂが単項符号化されている場合に、「集合Ａ  ∪  集合Ｂ」という和集合の実行が「Ａ  ＡＮＤ  Ｂ」論理関数によって実現可能であることを認知するであろう。同様に、「集合Ａ  ∩  集合Ｂ」という共通集合（ここで、集合Ａと集合Ｂは、単項符号化されている）は、「Ａ  ＯＲ  Ｂ」論理関数によって実現可能である。リソースの使用又はリソースの返却を集合の減算又は加算と見なすことができるため、単項符号化法のこの特性は重要である。
【００１９】
図示のＡＬＬＯＣレジスタ１０５においては、リソースごとに１つのビットが割り当てられている。一実施例においては、論理１は、割り当てられたリソースを表している。各サイクルごとに、ＵＳＥＤ［１：０］ベクトルが算出される。このベクトルは、表２に示されているように、０個、１個、又は２個のリソースが割り当てられているかどうかを示している。当業者であれば、３つ以上のリソースを割り当てるべく、ＡＬＬＯＣレジスタ１０５を変更可能であることを認知するであろう。
【００２０】
【表２】
2004206718.tif 000004
【００２１】
この図示の実施例においては、「割当スロット」レジスタ４１０、４２５は、渡されたバトンを表している。これらのレジスタ４１０、４２５は、ＤＥＣＯＤＥブロックが使用できるように、ＤＥＣＯＤＥブロック１００に渡されたリソースを保存する。これらのレジスタは、最初にリセットされ（即ち、すべてゼロになり）、それらに対応するＶビット４６５、４７５もリセットされる。それぞれのＶビット４６５、４７５は、「割当スロット」レジスタ４１０、４２５内の対応するビットを和集合演算しリソースが割り当てられているかどうかを示す単一ビットを形成することにより、クロックごとに更新される。ＤＥＣＯＤＥブロック１００は、各クロックごとに、このＵＳＥＤベクトルを使用し、割り当てられたリソースエントリの中の使用したものについてＣＲＳ１２５に通知する。この使用したリソースは、「割当スロット」レジスタ４１０、４２５に対する書き込み許可を使用して更新される。この更新により、「割当スロット」レジスタ４１０、４２５の内容がＡＬＬＯＣレジスタ１０５の内容にマージされる。ＮＯＲゲート４００を使用し、ＤＥＣＯＤＥブロック１００に渡されている使用されていないリソースを一時的に移動させる。「最初のものを検出する」ブロック４０５、４１５は、最初のものを検出するブロックである。「左から右方向に最初のものを検出する」ブロック４０５は、単項符号化された数字をチェックし、左側から見て最初のもの（即ち、最上位のもの）を検出する。「右から左方向に最初のものを検出する」ブロック４１５は、単項符号化された数字をチェックし、右側から見て最初のもの（即ち、最下位のもの）を検出する。これらの「最初のものを検出する」ブロック４１０、４１５は、０個、１個、又は２個の使用されていないリソースを選択し、それらをＡＬＬＯＣブロック１０５が利用できるようにする。
【００２２】
次に図５を参照すれば、ＣＲＳブロック１２５に使用するロジックの代替実施例が示されている。このＣＲＳブロック１２５は、「使用されていない」レジスタ５００、「最初のものを検出する」ブロック５０５、バトン５１０（即ち、リソース）、ＡＮＤ論理ゲート５１５、５２５、ＯＲ論理ゲート５２０、インバータ５３５、５４０、５４５、並びにバッファ５３５、５４０、及び５４５を有している。「使用されていない」レジスタ５００を使用し、使用されていないリソースを追跡する。一実施例においては、この「使用されていない」レジスタ５００内の論理１は、使用されていないリソースを示し、論理０は、割当られているリソースを示している。又、一実施例においては、この「使用されていない」レジスタ５００は、Ｎホット数を出力する。Ｎホット数とは、ストリーム内にＮ個の１が存在する１と０の単項符号化ストリームのことである（ここで、Ｎは、１以上の整数である）。「最初のものを検出する」ブロック５０５は、最初のものを検出する。この「最初のものを検出する」ブロック５０５は、１ホット数を出力し、これは、出力された１と０のストリームの中に存在する論理１が１つのみであることを意味している。この最初の１は、最初の使用されていないリソースを示している。この使用されていないリソースは、バトンレジスタ５１０内に保存され、ＤＥＣＯＤＥブロック１００に渡される。
【００２３】
次に図６を参照すれば、本発明によるバトンパッシング法が示されている。第１クロックサイクルにおいては、ＣＲＳブロック１２５は、第１リソース及び第２リソースをＤＥＣＯＤＥブロック１００に割り当てる（６１０）。本実施例においては、ＣＲＳブロック１２５は、リソースの割当の際に、第１リソースとして、キューの最上位から見て最初の利用可能なエントリを選択し、第２リソースとして、キューの最下位から見て最初の利用可能なエントリを選択する。具体的には、第１リソースに関しては、ａ−ａｓｓｉｇｎｅｄ［ｎ−１：０］が００００．．．．０００１であり、第２リソースに関しては、ｂ−ａｓｓｉｇｎｅｄ［ｎ−１：０］が１０００．．．．００００である。このベクトルパラメータｎは、利用可能なリソース（即ち、エントリ＃ｎ、エントリ＃ｎ−１、．．．エントリ＃０）の合計数を表している。値が１の［ｎ−１：０］内のビットの番号は、割り当てられたエントリ番号を示している。例えば、１０個の利用可能なリソースが存在する場合、このベクトルは、ａ−ａｓｓｉｇｎｅｄ［９：０］及びｂ−ａｓｓｉｇｎｅｄ［９：０］として表現される。第１リソースとしてエントリ＃９を割り当てる場合には、ａ−ａｓｓｉｇｎｅｄ［９：０］が０００００００００１であり、第２リソースとしてエントリ＃０を割り当てる場合には、ｂ−ａｓｓｉｇｎｅｄ［９：０］が１０００００００００となる。
【００２４】
第２クロックサイクルにおいて、ＣＲＳブロック１２５は、第１リソース及び第２リソースをＤＥＣＯＤＥブロック１００に割り当てる（６２０）。具体的には、ＣＲＳブロック１２５は、以前割り当てた第１リソースと第２リソースが、使用停止の通知を受領するまで、ＤＥＣＯＤＥブロック１００によって使用されたものと見なすため、ａ−ａｓｓｉｇｎｅｄ［９：０］は、００００．．．．００１０であり、ｂ−ａｓｓｉｇｎｅｄ［９：０］は、０１００．．．．００００となる。１０個のリソースの例においては、ａ−ａｓｓｉｇｎｅｄ［９：０］は、００００００００１０であり、ｂ−ａｓｓｉｇｎｅｄ［０：０］は、０１００００００００である。この同じクロックサイクルにおいて、ＤＥＣＯＤＥブロック１００は、第１クロックサイクルにおいて割り当てられたリソースを使用していない（６１５）。具体的には、第１リソース及び第２リソースをＣＲＳブロック１２５に返却する際のＵＳＥＤ［１：０］（「１：０」は、ＤＥＣＯＤＥブロック１００によって使用されたリソースを表している）は、００となる。
【００２５】
第３クロックサイクルにおいて、ＣＲＳブロック１２５は、第１リソースと第２リソースを割り当てる（６３０）。具体的には、ＣＲＳブロック１２５は、第１クロックサイクルにおいて割り当てた第１リソースと第２リソースがＤＥＣＯＤＥブロック１００によって使用されなかったという旨の通知を受領していると共に、第２クロックサイクルにおいて割り当てた第１リソース及び第２リソースが使用されたものと見なすため、ａ−ａｓｓｉｇｎｅｄ［９：０］は００００．．．．０００１となり、ｂ−ａｓｓｉｇｎｅｄ［９：０］は１０００．．．．００００となる。１０個のリソースの例においては、ａ−ａｓｓｉｇｎｅｄ［９：０］は、０００００００００１であり、ｂ−ａｓｓｉｇｎｅｄ［０：０］は、１０００００００００である。この同じクロックサイクルにおいて、ＤＥＣＯＤブロック１００は、第２クロックサイクルにおいて割り当てられた第１リソースを使用している（６２５）。具体的には、第２リソースをＣＲＳブロック１２５に返却する際のＵＳＥＤ［１：０］は、０１となる。
【００２６】
第４クロックサイクルにおいて、ＣＲＳブロック１２５は、第１リソース及び第２リソースを割り当てる（６４０）。具体的には、ＣＲＳブロック１２５は、第２クロックサイクルにおいて割り当てた第２リソースがＤＥＣＯＤＥブロック１００によって使用されなかったという旨の通知を受領していると共に、第３クロックサイクルにおいて割り当てた第１リソース及び第２リソースが使用されたものと見なすため、ａ−ａｓｓｉｇｎｅｄ［９：０］は、００００．．．．０１００であり、ｂ−ａｓｓｉｇｎｅｄ［９：０］は、０１００．．．．００００となる。１０個のリソースの例においては、ａ−ａｓｓｉｇｎｅｄ［９：０］は、０００００００１００であり、ｂ−ａｓｓｉｇｎｅｄ［０：０］は０１００００００００である。この同じクロックサイクルにおいて、ＤＥＣＯＤＥブロック１００は、第３クロックサイクルにおいて割り当てられた第１リソース及び第２リソースを使用している（６２５）。具体的には、いずれのリソースもＣＲＳブロック１２５に返却されず、ＵＳＥＤ［１：０］は、１１となる。
【００２７】
第５クロックサイクルにおいては、ＣＲＳブロック１２５は、第１リソース及び第２リソースを割り当てる（６５０）。具体的には、ＣＲＳブロック１２５は、第３クロックサイクルにおいて割り当てられた第１リソースがＤＥＣＯＤＥブロック１００によって使用されたという旨の通知を受領していると共に、第４クロックサイクルにおいて割り当てた第１リソース及び第２リソースが使用されたものと見なすため、ａ−ａｓｓｉｇｎｅｄ［９：０］は、００００．．．．１０００であり、ｂ−ａｓｓｉｇｎｅｄ［９：０］は、００１０．．．０００となる。１０個のリソースの例においては、ａ−ａｓｓｉｇｎｅｄ［９：０］は００００００１０００であり、ｂ−ａｓｓｉｇｎｅｄ［０：０］は００１０００００００である。この同じクロックサイクルにおいて、ＤＥＣＯＤＥブロック１００は、第４クロックサイクルにおいて割り当てられた第１リソースを使用している（６３５）。具体的には、第２リソースをＣＲＳブロック１２５に返却する際のＵＳＥＤ［１：０］は、１０である。
【００２８】
別の実施例においては、ＤＥＣＯＤＥブロック１００は、ＣＲＳブロック１２５に対し、使用されていないリソースについてＵＮＵＳＥＤ［ｎ−１：０］ベクトルで通知する。第１クロックサイクルにおいて割り当てられたリソースをＤＥＣＯＤＥブロック１００が使用していない（６１５）第２クロックサイクルにおいては、ＵＮＵＳＥＤ［ｎ−１：０］は、１０００．．．．０００１となる。１０個のリソースの例においては、ＵＮＵＳＥＤ［ｎ−１：０］は、１００００００００１である。第２クロックサイクルにおいて割り当てられた第１リソースをＤＥＣＯＤＥブロック１００が使用している（６２５）第３クロックサイクルにおいては、ＵＮＵＳＥＤ［ｎ−１］は、０１００．．．．００００となる。１０個のリソースの例においては、ＵＮＵＳＥＤ［ｎ−１：０］は、０１００００００００である。第３クロックサイクルにおいて割り当てられた第１リソース及び第２リソースをＤＥＣＯＤＥブロック１００が使用している（６３５）第４クロックサイクルにおいて、ＵＮＵＳＥＤ［ｎ−１］は００００．．．．００００である。１０個のリソースの例においては、ＵＮＵＳＥＤ［ｎ−１：０］は、００００００００００である。第４クロックサイクルにおいて割り当てられた第２リソースをＤＥＣＯＤＥブロック１００が使用している（６４５）第５クロックサイクルにおいては、ＵＮＵＳＥＤ［ｎ−１］は００００．．．．０１００となる。１０個のリソースの例においては、ＵＮＵＳＥＤ［ｎ−１：０］は、０００００００１００である。
【００２９】
本発明によれば、有利なことに、単一の割当／割当解除ブロックを有する高クロックレートシステムに伴う時間的な伝達遅延を回避することができる。尚、本発明の特定の実施例及びアプリケーションについて例示及び説明したが、本発明は、本明細書において開示した実施例に限定されるものではないことを理解されたい。当業者には、様々な変更や変形が明らかであろう。添付の特許請求の範囲に定義されている本発明の精神及び範囲を逸脱することなく、それらの変更や変形も、本明細書において開示した本発明の方法及び装置の構成、動作、及び詳細事項の範囲内で実施可能である。
【００３０】
（付記１）
コンピュータプロセッサに使用する分散リソース割当システムであって、
第１リソースを割当解除し、前記第１リソースの状態について伝達する割当解除エージェントと、
前記割当解除エージェントから離れたところに位置し、前記割当解除エージェントから前記リソースの状態情報を受信し、同時に第２リソースの状態について前記割当解除エージェントに伝達する割当エージェントと、を有するシステム。
（付記２）
物理的に前記割当エージェントに近接して位置し、前記第１リソースを割り当てる割当ブロックを更に有する付記１記載のシステム。
（付記３）
物理的に前記割当解除エージェントに近接して位置し、前記第２リソースを割当解除する割当解除ブロックを更に有する付記１記載のシステム。
（付記４）
前記割当エージェントと前記割当解除エージェント間の距離は、略クロックサイクルの半分に相当する伝達遅延時間を有している付記１記載のシステム。
（付記５）
前記割当解除エージェントは、前記第２リソースの状態について伝達する前記割当エージェントとは無関係に、前記第１リソースの状態について伝達する付記１記載のシステム。
（付記６）
コンピュータプロセッサに使用する動的分散リソース割当システムであって、
第１クロックサイクルの開始時点で第１リソースを渡す割当解除エージェントと、
前記割当解除エージェントから前記第１リソースを受け取る割当エージェントと、
前記コンピュータプロセッサにおいて前記第１リソースを割り当てる割当ブロックと、
前記コンピュータプロセッサにおいて前記第１リソースを割当解除する割当解除ブロックと、を有するシステム。
（付記７）
前記割当ブロックは、物理的に前記割当エージェントに近接して位置している付記６記載のシステム。
（付記８）
前記割当解除ブロックは、物理的に前記割当解除エージェントに近接して位置している付記６記載のシステム。
（付記９）
前記割当解除エージェントは、前記割当エージェントから離れたところに位置している付記６記載のシステム。
（付記１０）
前記割当エージェントは、前記第１クロックサイクルの直後の第２クロックサイクルの開始時点で、前記割当解除エージェントに前記第１リソースを渡すべく構成されている付記６記載のシステム。
（付記１１）
前記割当エージェントは、前記第１クロックサイクルの直後の第２クロックサイクルの開始時点で、前記割当解除エージェントに第２リソースを渡すべく構成されている付記６記載のシステム。
（付記１２）
前記割当解除エージェントは、前記第２クロックサイクルの開始時点で、第３リソースを前記割当エージェントに渡すべく構成されている付記１１記載のシステム。
（付記１３）
コンピュータプロセッサにおいてリソースを割り当てる方法であって、
リソースを割当解除する割当解除エージェントから、リソースを割り当てる割当エージェントに対して、前記割当エージェントからのリソースに対する要求とは無関係に、少なくとも１つのリソースを渡す段階と、
前記割当エージェントから前記割当解除エージェントに前記リソースを返す段階と、を有する方法。
（付記１４）
前記割当エージェント及び前記割当解除エージェントが互いに物理的に離れたところに位置している付記１３記載に方法。
（付記１５）
前記割当解除エージェントと前記割当エージェント間の距離は、略クロックサイクルの半分に相当する伝達遅延時間を有している付記１４記載の方法。
（付記１６）
前記割当エージェントに近接して位置する割当ブロックを使用して前記リソースを割り当てる段階を更に有する付記１３記載の方法。
（付記１７）
前記割当解除エージェントに近接して位置する割当解除ブロックを使用して前記リソースを割当解除する段階を更に有する付記１３記載の方法。
（付記１８）
前記割当解除エージェントから前記割当エージェントに対して実行される少なくとも１つのリソースの提供は、各クロックサイクルごとに実行される付記１３記載の方法。
（付記１９）
コンピュータプロセッサにおいてリソースを割り当てるシステムであって、
第１リソースを割当解除するべく、割当解除エージェントを構成する手段と、
前記第１リソースを割り当てるべく、割当エージェントを構成する手段と、
前記割当エージェントからの前記リソースに対する要求とは無関係に、前記割当解除エージェントから前記割当エージェントに対して前記第１リソースを渡す手段と、
前記割当解除エージェントから前記割当エージェントへの前記第１リソースの供給とは無関係に、前記割当エージェントから前記割当解除エージェントに第２リソースを返す手段と、を有するシステム。
（付記２０）
前記第１リソース及び前記第２リソースは、同一リソースである付記１９記載のシステム。
（付記２１）
前記第１リソース及び前記第２リソースは、異なるリソースである付記１９記載のシステム。
（付記２２）
前記第２リソースを返す手段は、前記第１リソースを渡す手段が前記第１リソースを渡すクロックサイクルと同じクロックサイクルにおいて、前記第２リソースを返す付記１９記載のシステム。
（付記２３）
前記割当解除エージェントと前記割当エージェントは、互いに物理的に離れたところに位置している付記１９記載のシステム。
（付記２４）
前記割当解除エージェント及び前記割当エージェント間の遅延時間は、略クロックサイクルの半分である付記２３記載のシステム。
（付記２５）
前記第１リソースは、メモリ要素である付記１９記載のシステム。
（付記２６）
スーパースカラープロセッサにおける分散リソース割当システムであって、
各クロックサイクルにおいて、複数のリソースの中の利用可能な第１リソースに関する通知を割当エージェントに送り、前記割当エージェントから使用されていない第２リソースに関する通知を受け取る割当解除エージェントと、
前記割当解除エージェントと通信可能に接続されており、前記第１リソースを割当解除する割当解除ブロックと、
前記割当解除エージェントから離れたところに位置しており、前記アベイラビリティに関する通知を受け取り、前記受信した通知とは無関係に、各クロックサイクルにおいて、前記使用されていないリソースに関する通知を送信する前記割当エージェントと、
前記割当エージェントに通信可能に接続されており、前記第１リソースを割り当てる割当ブロックと、を有するシステム。
（付記２７）
前記割当エージェントは、次のクロックサイクルにおいて、前記割当解除エージェントに対し、前記利用可能な第１リソースが使用されていないリソースであることを通知するべく更に構成されている付記２６記載のシステム。
（付記２８）
前記アベイラビリティに関する通知の伝達遅延時間は、略クロックサイクルの半分である付記２６記載のシステム。
【図面の簡単な説明】
【００３１】
【図１】本発明によるバトンパッシングシステムのブロックダイアグラムである。
【図２】本発明の一実施例によるバトンパッシングシステムのタイミングを示すタイミング図である。
【図３】本発明の一実施例によるＤＥＣＯＤＥ論理ブロックを示す論理図である。
【図４】本発明の第１実施例によるＣＲＳ論理ブロックを示す論理図である。
【図５】本発明の第２実施例によるＣＲＳ論理ブロックを示す論理図である。
【図６】本発明の一実施例によるバトンパッシング方法のブロックダイアグラムである。
【符号の説明】
【００３２】
１００…ＤＥＣＯＤＥブロック
１０５…ＡＬＬＯＣ（割当）ブロック
１１０，１１５…分散バッファ
１２０…ＤＥＡＬＬＯＣ（割当解除）ブロック
１２５…ＣＲＳ（中央予約局）ブロック
４６５，４７５…Ｖビット
５００…未使用レジスタ
５１０…バトン
【図１】
2004206718.tif 000005
【図２】
2004206718.tif 000006
【図３】
2004206718.tif 000007
【図４】
2004206718.tif 000008
【図５】
2004206718.tif 000009
【図６】
2004206718.tif 000010