(57)【要約】【課題】  処理システム内における付加的なバス設計および構造を必要とせずに命令に対する適時のスケジューリングおよび発行を行う。【解決手段】  制御リザベーションステーション（ＣＲＳ）とデータリザベーションステーション（ＤＲＳ）とを含むリザベーションステーションシステムが、演算エントリを受信すると共に、各演算エントリについて、スケジューリング状態情報、オペランド状態情報およびオペランド情報を特定する。このリザベーションステーションシステムは、スケジューリング状態情報およびオペランド情報をＣＲＳ内にＣＲＳ用エントリとして記憶し、且つ、演算状態情報およびオペランド情報をＤＲＳ内にＤＲＳ用エントリとして記憶する。ＣＲＳ用エントリが準備完了として特定されたとき、それらは機能ユニットにより実行されるためにスケジューリングされて発行される。【選択図】      図１
2004199694.tif 000002
【特許請求の範囲】
【請求項１】
制御リザベーションステーションおよびデータリザベーションステーションを配備する段階と、
少なくとも１個の演算エントリを受信する段階と、
各演算エントリに対し、スケジューリング状態情報、オペランド状態情報およびオペコード情報を特定する段階と、
前記スケジューリング状態情報および前記オペランド状態情報を制御リザベーションステーション用エントリとして前記制御リザベーションステーション内に記憶する段階と、
前記オペコード情報および前記オペランド状態情報をデータリザベーションステーション用エントリとして前記データリザベーションステーション内に記憶する段階と、
を備えて成る、プロセッサシステムにおいて演算エントリを処理する方法。
【請求項２】
前記演算エントリは実行のための命令に基づく、請求項１記載の方法。
【請求項３】
制御リザベーションステーションのひとつのクロックサイクルの間において、各制御リザベーションステーション用エントリに対する前記スケジューリング状態情報およびオペランド状態情報を検証する段階と、
準備完了状態を表すオペランド状態情報を有する制御リザベーションステーション用エントリを、スケジューリングに対して適格とマーク付けする段階と、
を更に備えて成る、請求項１記載の方法。
【請求項４】
前記スケジューリング状態情報は、
前記演算エントリのスケジューリング状態と、
演算エントリタグと、
を備えて成る、請求項１記載の方法。
【請求項５】
前記オペランド状態情報は、
オペランドデータを準備完了もしくは待機と特定する状態パラメータと、
前記状態パラメータがオペランドデータを待機と特定する場合に、オペランドデータを生成するために演算エントリを特定するオペランドタグと、
を更に備えて成る、請求項１記載の方法。
【請求項６】
演算エントリを選択すべく構成された選択ユニットと；
前記演算エントリを読み取り且つ結果を生成すべく構成された解析ユニットであって、前記演算エントリは、オペコードと、第１オペランド状態情報と、第２オペランド状態情報と、オペランドデータと、第１オペランドエントリタグと、第２オペランドエントリタグとを含み、当該解析ユニットは、
前記第１オペランド状態情報、前記第２オペランド状態情報、前記第１オペランドエントリタグおよび前記第２オペランドエントリタグを読み取るべく構成された制御リザベーションステーション、及び
オペコードおよびオペランドデータを読み取るべく構成されたデータリザベーションステーション、
を更に備えて成る、解析ユニットと；
前記解析ユニットから受信したデータタグを配信すべく構成されたブロードキャストユニットと；
を備えて成る、演算エントリを処理するシステム。
【請求項７】
前記制御リザベーションステーションは、準備完了状態を表す前記第１および第２オペランド状態情報に応じて前記演算エントリをスケジューリングすべく構成される、請求項６記載のシステム。
【請求項８】
前記選択ユニットは１個取出し及び発火ユニットである、請求項６記載のシステム。
【請求項９】
処理のために演算エントリを準備する第１準備手段と、
処理のために前記演算エントリを準備する第２準備手段と、
前記演算エントリを受信する手段と、
前記演算エントリから、スケジューリング状態情報、オペランド状態情報およびオペコード情報を特定する手段と、
前記スケジューリング状態情報およびオペランド状態情報を第１エントリとして前記第１準備手段内に記憶する第１記憶手段と、
前記オペコード情報およびオペランド状態情報を第２エントリとして前記第２準備手段内に記憶する第２記憶手段と、
を備えて成る、演算エントリを処理するシステム。
【請求項１０】
オペランド状態情報とオペランドタグとを各々が含む少なくとも１個のオペランドレコードを待機する命令であって、機能ユニットにより実施されるべき演算を特定するオペコードと関連付けられた命令、を機能ユニットに対して発行すべく準備するリザベーションシステムであって、
各オペランド状態情報および各対応オペランドタグが制御リザベーションステーション用エントリを備えた、複数のオペランド状態情報および対応する複数のオペランドタグを読み込み、
有効とマーク付けされ且つ準備完了状態に在るオペランドデータを有する各制御リザベーションステーション用エントリを特定してスケジューリングし、且つ、
スケジューリングされた各制御リザベーションステーション用エントリに対するスケジューリングタグを配信する、
如く構成された中央制御リザベーションステーションと；
複数のオペコードおよび複数のオペランドデータを読み込み、
スケジューリングされた各制御リザベーションステーション用エントリに対するスケジューリングタグを受信し、且つ、
スケジューリングされた各制御リザベーションステーション用エントリに対するスケジューリングタグに対応する命令を読み取る、
如く構成された、前記中央制御リザベーションステーションから分散された１個以上のデータリザベーションステーションと；
を備えて成る、リザベーションシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータ処理用の命令のスケジューリング方法に関し、より詳細には、プロセッサ内の機能ユニットにより命令を処理するスケジューリング方式および機構（scheduling scheme and mechanism）に関する。
【背景技術】
【０００２】
従来のリザベーションステーション（reservation station）は、データフローの演算エントリがプロセッサの機能ユニットにおいて実行されるべくスケジューリングされて発行される前に、該エントリがそれらの従属構成部分を待つための機構である。上記従属構成部分は、上記演算エントリが処理を継続するために提供されるべきオペランド（operand）である。また機能ユニットとしてはたとえば、論理演算ユニットまたは乗算器ユニットが挙げられる。この設計態様の利点は、データが一度だけ配信されることである。
【０００３】
従来のリザベーションステーションは、リザベーションステーションによりデータフロー演算をスケジューリングする２つの手法の内の一方を用いる。第１の手法は、分散型リザベーションステーションという手法である。この手法においては、プロセッサの全体に亙り複数のリザベーションステーションが分散される。各リザベーションステーションは典型的に、１個もしくは２個の機能ユニットに接続される。分散型リザベーションステーションにおいて各演算がそのオペランドの全てを受信したとき、該演算は夫々の機能ユニットにより実行されるべくスケジューリングされる。
【０００４】
しかしこの第１手法に対しては、単一クロックサイクル内で各々が実施されるという相次ぐ従属演算をスケジューリングするときに相当のタイミング問題が生ずる。特に、以下の操作は単一クロックサイクル内で完了されねばならない：(1)スケジューリングされるべき演算を選択すること、(2)スケジューリングされるべき演算に関連する結果タグを読み取ること、(3)他のリザベーションステーションに対して該結果タグを配信すること、(4)配信された結果タグを、ローカルリザベーションステーションにおいて準備未了状態（non-ready state）にある全てのオペランドに亙り整合させること、および、(5)全てのオペランドの状態を準備未了状態から準備完了（ready）状態に更新すること。
【０００５】
従来の分散型リザベーションステーションの手法によると、クロック速度が高まると上記の５つの段階のタイミングを作り出すことが次第に困難となる。その理由のひとつは、特にプロセッサ内において各リザベーションステーションが近接配置されていないシステムにおいて、上記第３段階すなわち他のリザベーションステーションに対する結果タグの配信が相当の時間量を取るからである。故に分散型リザベーションステーションの手法は相当の処理遅延を引き起こし得る、と言うのも、相次ぐ単一クロックサイクルの演算エントリをスケジューリングして発行するためには付加的なクロックサイクルが必要とされるからである。
【０００６】
リザベーションステーションによりデータフローをスケジューリングする第２の手法は、集中型リザベーションステーションを用いる。この手法においては単一の集中型リザベーションステーションを選択することで、複数の分散型リザベーションステーションは排除される。集中型リザベーションステーションの利点は、他のリザベーションステーションに対して結果タグを配信するために時間を消費する段階が効率的に排除されることである。
【０００７】
但しこの第２手法の問題は、各演算がスケジューリングされるときにオペランドデータが上記リザベーションステーションに対して配信され且つ該リザベーションステーションから配信されるべきことである。上記集中型リザベーションステーションに対して配信され且つ該集中型リザベーションステーションから配信されるオペランドデータのフローによればプロセッサにおけるデータバスの本数は３倍以上にも増加する、と言うのも、ダイアディック機能ユニット（dyadic functional unit）の各々は分散型リザベーションステーション手法で用いられる単一の結果バスではなく２本のソースバスおよび１本の結果バスを要するからである。この付加的なバス設計および構造によれば、チップの複雑さ、実施、コスト、および、集積回路チップ上に必要とされるスペース量が増大する。
【０００８】
故に、処理システム内における付加的なバス設計および構造を必要とせずに命令に対する適時のスケジューリングおよび発行を行うリザベーションステーションシステムに対する要望が在る。
【発明の開示】
【課題を解決するための手段】
【０００９】
本発明の一実施形態は、制御リザベーションステーションと１個以上のデータリザベーションステーションとを有するリザベーションステーションシステムを含む。（たとえば２つの数を乗算する命令などの）演算エントリに関する情報は、上記制御リザベーションステーションと１個以上のデータリザベーションステーションの間で分割される。上記制御リザベーションステーションは、上記演算エントリからスケジューリング状態およびオペランド状態に関する情報を読み取り且つ記憶する中央箇所として機能すべく構成される。上記１個以上のデータリザベーションステーションは、オペランド状態およびオペランドデータ自体に関する上記演算エントリからの情報を読み取り且つ記憶する箇所として機能すべく構成される。
【００１０】
該実施形態において上記制御リザベーションステーションは、上記演算エントリに対するスケジューリング状態情報およびオペランド状態情報を読み取り且つ記憶すべく構成される。上記スケジューリング状態情報はたとえば、上記演算エントリに対する状態および上記演算エントリに対するスケジューリングタグを含む。上記演算状態情報は、上記演算エントリに対するオペランド状態情報および対応するオペランドタグを有する１個以上のオペランドレコードを含み得る。
【００１１】
上記で特定されたスケジューリング状態情報およびオペランド状態情報の読み取りおよび記憶に加え、上記制御リザベーションステーションは、該制御リザベーションステーションにおいて有効状態を有するとしてマーク付けされたエントリであって準備完了状態に在るオペランドを有するエントリを検証および特定すべく構成され得る。上記制御リザベーションステーションはまた、これらの判定基準を満足する各エントリを発行するためにスケジューリングする様にも構成され得る。更に、上記制御リザベーションステーションは、スケジューリングされたエントリに関連するタグを上記データリザベーションステーションに対し且つ当該制御リザベーションステーション内においても配信することで従属オペランド状態情報を更新すべく構成され得る。
【００１２】
各データリザベーションステーションは、上記オペランド状態情報およびオペランドデータ自体を読み取り且つ記憶すべく構成され得る。特に上記データリザベーションステーションは、上記演算エントリに対するオペランド状態情報および対応オペランドタグを含む１個以上のオペランドレコードを読み取り且つ記憶する。上記オペランドデータはまた、オペランドとも称される。各データリザベーションステーションはまた、オペコード（opcode）情報を読み取り且つ記憶すべく構成され得る。オペコード情報は、上記リザベーションステーションシステムから命令がスケジューリングされるときに特定機能ユニットにより実施されるべき演算を特定する。
【００１３】
これに加え、各データリザベーションステーションは、スケジューリングされた各制御リザベーションステーション用エントリに対するスケジューリングタグを受信すべく且つスケジューリングされた各制御リザベーションステーション用エントリに対するスケジューリングタグに対応する命令を読み取るべく構成され得る。更に各データリザベーションステーションは、スケジューリングされた命令の実行の結果を捕捉すべく構成され得ることから、これらの結果は上記リザベーションステーションシステム内における他のエントリに適用され得る。これらの結果は、スケジューリングのために準備される他の演算エントリを完成すべく用いられ得るオペランドデータを提供する。
【００１４】
開示された様にリザベーションステーションを構成することで、本発明は、スケジューリングが未決である演算エントリに対するオペランドデータを迅速に配信する集中型リザベーションステーションの利点、ならびに、更に少ない本数のデータバスを用いる分散型リザベーションステーションの利点を提供する。たとえば上記リザベーションステーションシステムの構成は、スケジューリング情報に焦点を当てた制御リザベーションステーションを好適に提供する。上記制御リザベーションステーションは、スケジューリング目的に対するタグ配信遅延を好適に排除する。これに加えて上記スケジューリングロジックはその機能を実施する上で更なる時間を有する、と言うのもタグ配信遅延は、スケジューリング“ループ”時間全体の、すなわち命令がスケジューリングのために最終的に準備完了となる如くオペランド結果が行き来するのを待機する時間の、相当の部分を表すからである。
【００１５】
別の例においては１個以上のデータリザベーションステーションにより、命令が発行のためにスケジューリングされたとき、後に当該システムを介して結果データを制御リザベーションステーションが送信するためにのみ該制御リザベーションステーションに対して結果データを送信する必要性が好適に回避される。故に上記１個以上のデータリザベーションステーションは、それらの間における且つそれらとプロセッサ内の制御リザベーションステーションとの間における多数のオペランドバスに対する必要性を好適に排除する。
【００１６】
本明細書に記述される特徴および利点は全てを網羅するものでなく、特に、当業者であれば図面、明細書および各請求項に鑑みて多くの付加的な特徴および利点は明らかであろう。更に、本明細書中で用いられる用語は基本的に読み易さおよび説明目的のために選択されており、発明の主題を限定するものでないことを銘記すべきである。
【００１７】
本発明の上記のおよび他の更に詳細な目的および特徴は、添付図面を参照した以下の詳細な説明により更に十分に開示される。
【発明を実施するための最良の形態】
【００１８】
概略的に演算エントリは、たとえばプロセッサにより実行される命令を含むデータフロー演算を含む。実行されるべく、上記演算エントリは機能ユニットにおける実行のためにスケジューリングされねばならない。機能ユニットは、たとえば論理演算ユニット、加算器、比較器もしくは乗算器などの任意の機能処理ユニットとされ得る。但し演算エントリは、それが準備完了状態となるまで、機能ユニットに向けてスケジューリングされない。上記準備完了状態としては、上記機能ユニットにおいて用いられる必要な全てのオペランドデータが揃えられた状態が挙げられる。一定の場合において演算エントリは、機能ユニットで実行された先行スケジューリング演算エントリからの更新もしくは結果を受信するまで、準備完了状態にならない。故に本発明は、準備完了状態に在る演算エントリを追尾してスケジューリングするリザベーションステーションシステムを包含する。
【００１９】
図１は、本発明の一実施形態に係る、プロセッサ内で演算エントリをスケジューリングするリザベーションステーションシステム101を示している。リザベーションステーションシステム101は、１個以上の演算エントリ120を受信する。リザベーションステーションシステム101はまた、発行に対して命令をスケジューリング130すると共に、スケジューリングされて発行された命令を実行した結果としてのオペランドデータの更新140を受信する。
【００２０】
リザベーションステーションシステム101は、自身が受信した各演算エントリを読み取ると共に、該エントリを１個以上のレジスタもしくはメモリバッファ内に記憶すべく構成され得る。リザベーションステーションシステム101は、制御（もしくは中央）リザベーションステーション（“ＣＲＳ”）150およびデータリザベーションステーション（“ＤＲＳ”）160を含む。制御リザベーションステーション150は、演算エントリ120を読み取るべく、且つ、１個以上の制御リザベーションステーション用エントリを記憶すべく構成される。各制御リザベーションステーション用エントリは、スケジューリング状態152と演算エントリタグ154とを備えたスケジューリング状態情報を含む。各制御リザベーションステーション用エントリはまた、演算エントリ120から読み取られた１個以上のオペランドレコード156も含む。スケジューリング状態152はスケジューリング状態タグとも称され得ると共に、１個以上のオペランドレコード156はオペランドレコードタグとも称され得ることを銘記されたい。
【００２１】
スケジューリング状態152は、演算エントリ120が有効である（すなわちスケジューリングを待機している）かまたは無効である（すなわち既にスケジューリングされた）かを表す如く、該エントリの状態を提供する。演算エントリタグ154は、演算エントリ120を識別すべく用いられる固有番号を提供する。各オペランドレコード156は、オペランド状態情報およびオペランドタグを含む。上記オペランド状態情報は、演算エントリ120が準備完了（すなわちデータが有効）であるか待機している（すなわちデータが未だ利用可能でない）かに関する情報を提供する。上記オペランドタグは、必要なオペランドデータを生成する命令のタグを提供する。演算エントリタグ154は宛先オペランド（destination operand）に対して用いられ得る一方、オペランドレコード156はソースオペランドに対して用いられ得ることを銘記されたい。
【００２２】
データリザベーションステーション160は、演算エントリ120を読み取ると共に１個以上のデータリザベーションステーション用エントリを記憶すべく構成される。各データリザベーションステーション用エントリは、オペコード情報（opcode information）162と、対応するオペランドデータ164を含む１個以上のオペランドレコードとを含む。オペコード情報162は、命令がスケジューリングされて機能ユニットに発行されたときに該機能ユニットにより実施されるべき演算を特定する。対応するオペランドデータ164を含むオペランドレコードは、オペランドデータ自体と、制御リザベーションステーション150に関して先に記述されたオペランドレコード情報とを含む。
【００２３】
図２は、本発明の一実施形態に係る、演算エントリ120に対するプロセッサ内のデータフローシステム201および処理の流れ図である。データフローシステム201の該実施形態は、スケジューリングロジック210と、（たとえばＡＮＤゲートなどの）論理ユニット215と、制御リザベーションステーション150からの１個以上の制御リザベーションステーション用エントリ220と、データリザベーションステーション160からのひとつ以上のデータリザベーションステーション用エントリ230と、比較器225、235、245および255と、データバス240とを含む。データバス240はたとえば、プロセッサチップレイアウトの一端から他端に亙り得る長ワイヤまたは導体とされ得る。一実施形態においては、データリザベーションステーション160用の各エントリに対して少なくとも一本のデータバスが在る。
【００２４】
図２において制御リザベーションステーション用エントリ220は、スケジューリング状態（“Ｖ”）152、演算エントリタグ154、および、２個のオペランドレコード156を含む。制御リザベーションステーション用エントリ220の各オペランドレコード156は、オペランド状態およびオペランドタグを含む。データリザベーションステーション用エントリ230は、オペコード情報162および２個のオペランドレコード164を含む。データリザベーションステーション用エントリ230の各オペランドレコード164は、オペランド状態、オペランドタグおよびオペランドデータを含む。
【００２５】
概略的に制御リザベーションステーション用エントリ220は、各オペランドレコード156のオペランド状態が有効か否かを決定することで、該エントリの全てのエントリが有効か否かを調べるべくチェックを行う。もし各オペランドレコード156のオペランド状態が有効であれば、制御リザベーションステーション用エントリ220はスケジューリングロジック210を介してスケジューリングされる。論理ユニット215はＡＮＤゲートとされ得るが、該ゲートは、各入力が論理high（たとえば論理“1”）であることを検証することで、スケジューリングのために通過されたデータが実際に準備完了であることを確認する。一実施形態においてデータリザベーションステーション160は、スケジューリングロジック210の出力によりインデックス付けされる。スケジューリングロジック210はまた、制御リザベーションステーション150をインデックス付けするためにも用いられる。
【００２６】
一旦スケジューリングされたなら、制御リザベーションステーション用エントリ220の各オペランドレコード156のオペランド状態は無効に設定されると共に、スケジューリングロジック210の出力は、スケジューリングされた制御リザベーションステーション用エントリ220に対応するデータリザベーションステーション用エントリ230へのインデックスとして用いられる。これに加え、制御リザベーションステーション150の各オペランドレコード156のオペランドタグは、データバス240により全てのデータリザベーションステーション160に対して配信され且つ制御リザベーションステーション150内で配信される。各オペランドレコード156のオペランドタグを制御リザベーションステーション150自体内で配信することにより、これらのオペランドレコードに依存するオペランドレコードは、それらのオペランド状態を準備完了に設定する。制御リザベーションステーション150内においては、どのオペランドレコード164が“準備未了（not ready）”を示すオペランド状態を有するかを調べるべく比較器225、235により各オペランドレコード164をチェックすることで各オペランドレコード156が更新されることから、配信データからの当該結果を待機するエントリと整合する結果が捕捉され得る。
【００２７】
制御リザベーションステーション用エントリ220に対応するデータリザベーションステーション用エントリ230を有するデータリザベーションステーション160が演算エントリタグ154を受信したとき、該データリザベーションステーションはスケジューリングロジック210の出力をインデックスとして用いて命令を読み取る。これに加え、比較器245、255はどのオペランドレコード164が“準備未了”を示すオペランド状態を有するかを調べるべくチェックすることから、制御リザベーションステーション150からの配信データからの整合エントリが捕捉される。この捕捉は、同一クロックサイクル内でもしくは次のクロックサイクルにより生じ得る。この様にして、引き続く各演算エントリ120は完全なオペランドレコードの提供を受けると共に、制御リザベーションステーション150によるスケジューリングに対して準備完了となる。
【００２８】
図３は、本発明の一実施形態に係る、プロセッサに対するデータフロースケジューリングシステム301を示している。データフロースケジューリングシステム301によれば制御リザベーションステーション150およびデータリザベーションステーション160を備えた分割データフロースケジューリング方式および機構を用いることで、データフロースケジューリングシステム301内におけるデータ経路が１クロックサイクルで踏破され得る。
【００２９】
データフロースケジューリングシステム301において制御リザベーションステーション150は、１個以上の演算列（operational row）305、１個取出し及び発火ユニット（pick one and fire unit）340、（読取及び結果ユニット350の一部とされ得る）第２読取ユニット345、ブロードキャストユニット370、比較器375、付加的ロジック（additional logic）380、レジスタ385、および、タグレジスタ（待機）390を含む。各演算列305に対しては、準備完了フィールド310、第１オペランド状態（Ｒ１）315、第２オペランド状態（Ｒ２）320、および、論理ＡＮＤゲートまたは回路330が在る。
【００３０】
データリザベーションステーション160は、（読取及び結果ユニット350の一部とされ得る）第１読取ユニット335、（同様に読取及び結果ユニット350の一部とされ得る）結果ユニット355、上記比較器375、上記付加的ロジック380、上記レジスタ385および上記タグレジスタ（待機）390を含む。
【００３１】
制御リザベーションステーション150において１個取出し及び発火ユニット340は、１個以上の演算列305と読取及び結果ユニット350の第２読取ユニット345とに対して連結される。読取及び結果ユニット350は、実行ユニット360およびブロードキャストユニット370に連結される。ブロードキャストユニット370は、比較器375に連結される。比較器375は、付加的ロジック380およびタグレジスタ（待機）390に連結される。付加的ロジック380はレジスタ385に連結される。更に、データリザベーションステーション160において、読取及び結果ユニット350の第１読取ユニット335は実行ユニット360にも連結される。
【００３２】
１個取出し及び発火ユニット340は、論理high（もしくは論理“1”）に在る論理ＡＮＤゲート330の出力により表された如くスケジューリングに対して準備完了した演算列305を取出すべく構成される。１個取出し及び発火ユニット340は１個の演算列305を取出し得るが、１個以上の演算列305（もしくはエントリ）をも選択可能であり、これにより複数のエントリが同時に準備完了とされ得る。論理ＡＮＤゲート330は、準備完了フィールド310、第１オペランド315および第２オペランド315から論理highを受けたときに、処理準備完了信号すなわち論理highを順方向送信する。
【００３３】
示された如く論理ゲート330および１個取出し及び発火ユニット340により演算列305が選択されたなら、その演算列305における情報は読取及び結果ユニット350へと順方向送信される。読取及び結果ユニット350は、上記列から演算エントリ120に関する適切なパラメータもしくはフィールドを、制御リザベーションステーション150およびデータリザベーションステーション160内へと読み取るべく構成される。これを行うために読取及び結果ユニット350は、オペコード情報およびオペランドデータを読み取る第１読取ユニット335と、たとえば第１オペランド状態（Ｒ１）315およびそのオペランドタグならびに第２オペランド状態（Ｒ２）320およびそのオペランドタグを読み取る第２読取ユニット345とを含む。
【００３４】
この情報を用いて制御リザベーションステーション150およびデータリザベーションステーション160は、準備完了した演算エントリをスケジューリングすべく前述された様に機能する。準備完了した演算エントリに対し、結果ユニット355は命令を且つ第１読取ユニット335は対応するオペランドデータを、実行のために実行ユニット360に発行する。
【００３５】
読取及び結果ユニット350はまた、各オペランドタグをブロードキャストユニット370に対しても順方向送信する。ブロードキャストユニット370は、各オペランドタグをデータリザベーションステーション160に対して且つ制御リザベーションステーション150内において送信たとえばブロードキャストすべく構成される。詳細には、どのオペランドレコードが“準備未了”を表すオペランド状態を有するかを調べる夫々の比較器（集合的に375）により制御リザベーションステーション150およびデータリザベーションステーション160内の各オペランドレコードをチェックすることで各オペランドレコードは更新されることから、配信データからはこれらのエントリに対する整合エントリが捕捉され得る。この様にして各演算列305におけるオペランド状態情報は“有効”へと設定され得ることから、制御リザベーションステーション150は引き続き、スケジューリングロジック210によるスケジューリングのためにそれらの演算列をマーク付けし得る。付加的ロジック380、レジスタ385およびタグレジスタ（待機）390は、各エントリの第１オペランド状態（Ｒ１）および第２オペランド状態（Ｒ２）の演算が準備完了であるか否かを、（たとえばソースからの）オペランドタグを（たとえば宛先からの）ブロードキャストタグと比較することでチェックすべく用いられる。
【００３６】
図４乃至図６は、本発明の一実施形態に係る、機能ユニットに対する演算エントリ120の発行をスケジューリングする処理を示すフローチャートである。最初に図４を参照すると該図は、本発明に係る、プロセッサに対するデータフローシステム201において演算エントリに対する情報を受信かつ記憶する処理の一実施形態を示している。最初に該処理は、開始410すると共にデータフローを受信420する。上記データフローは、１個以上の演算エントリ120を含む。該処理は、スケジューリング状態情報およびオペランド情報を読み取り、制御リザベーションステーション150に記憶430する。該処理はまた、オペコード情報およびオペランド情報を読み取り、１個以上のデータリザベーションステーション160の内のひとつのデータリザベーションステーションへと記憶440する。読み取られて記憶されたこれらのパラメータは、図３に関して前述された如く１個以上の演算列305における演算列として反映され得る。次に上記処理は終了450する。
【００３７】
図５は、本発明に係る、プロセッサに対するデータフローシステム201において制御リザベーションステーション用エントリの発行をスケジューリングする処理の一実施形態を示している。該処理は開始510すると共に、制御リザベーションステーション150からの１個以上の制御リザベーションステーション（“ＣＲＳ”）用エントリであってスケジューリング状態情報のスケジューリング状態152が“有効”とマーク付けされ且つオペランドレコード156におけるオペランド状態情報が“準備完了状態”とマーク付けされたエントリをスケジューリング520する。一旦スケジューリングされたなら上記処理は、制御リザベーションステーション用エントリに対するスケジューリング状態情報を“無効状態”として設定530する。該処理は次に、スケジューリングされた制御リザベーションステーション用エントリに対応する演算エントリタグ154をブロードキャストユニット370により配信540する。演算エントリタグ154はまた、制御リザベーションステーション150内においても配信される。次に上記処理は終了550する。
【００３８】
図６は、本発明に係る、プロセッサに対するデータフローシステム201においてデータリザベーションステーション用エントリを更新する処理の一実施形態を示している。該処理は開始610すると共に、データリザベーションシステム160は制御リザベーションステーション150から演算エントリタグ154を受信620し、且つ、この演算エントリタグ154を用いることでオペランドレコード164におけるタグと比較630を行う。命令は実行ユニット360へと発行されて該機能ユニットにより実行される。
【００３９】
次に該処理は、制御リザベーションステーション150およびデータリザベーションステーション160におけるオペランド情報を更新640する。更新される情報としては、制御リザベーションステーション150のオペランド状態156およびデータリザベーションステーション160のオペランド状態が挙げられる。更新される情報としては、オペランドデータ164も挙げられる。特に該処理は完了した命令からのオペランド情報を捕捉650することで、結果的オペランドデータをデータリザベーションステーション160における他のデータリザベーションステーション用エントリに対して配信する。次に上記処理は終了660する。
【００４０】
本発明は、制御リザベーションステーション150とデータリザベーションステーション160との間でリザベーションステーションの機能を分割する利点を提供する。制御リザベーションステーション150は、プロセッサチップの全体に亙り分散される各リザベーションステーションに伴う遅延を減少もしくは排除する。１個以上のデータリザベーションステーション160によれば、データは更に効率的な様式で各機能ユニットに対して配信され且つ利用可能とされ得る。更に、１個の制御リザベーションステーション150および１個以上のデータリザベーションステーションによれば、分散型リザベーションステーションの複数のデータバスラインに伴う複雑さが減少される。故に本発明は、複雑さと大寸のチップ面積に対する必要性とを減少し乍ら単一クロックサイクル内で演算を完了する速度を有するスケジューリング方式および機構を提供する。
【００４１】
本発明のプロセッサはたとえば、中央処理ユニット、マイクロコントローラ処理ユニットまたはデジタル信号プロセッサなどの通常の処理ユニットである。更に該プロセッサは、スーパスカラプロセッサ（super-scalar processor）、縮小命令セットコンピュータ（“ＲＩＳＣ”）プロセッサ、または命令レベル並列（“ＩＬＰ”）プロセッサとされ得る。上記リザベーションステーションシステムに対するバッファメモリもしくはレジスタは、プロセッサの内部とされ得るか、または、別体の揮発性もしくは不揮発性メモリとされ得る。上記リザベーションステーションシステムに対する各処理および方式は、ソフトウェアもしくはファームウェア実行ユニットにより構成され得る。代替的に上記リザベーションステーションシステムは、処理ソフトウェアもしくはファームウェア上のもしくはそれらと組み合わされたハードウェア実行ユニットにより構成され得る。
【００４２】
本発明の特定の実施形態および用途が図示かつ記述されたが、本発明が本明細書中に開示された通りの実施形態に限定されないことは理解される。当業者であれば、種々の改変および変更は明らかであろう。これらの改変および変更は、添付の各請求項に限定された発明の精神および有効範囲から逸脱することなく、本明細書中に開示された本発明方法および装置の配置、動作および詳細に対して為され得る。
【００４３】
以上、本発明を特にその好ましい実施の形態を参照して詳細に説明した。本発明の容易な理解のため、本発明の具体的な形態を以下に付記する。
【００４４】
（付記１）  制御リザベーションステーションおよびデータリザベーションステーションを配備する段階と、
少なくとも１個の演算エントリを受信する段階と、
各演算エントリに対し、スケジューリング状態情報、オペランド状態情報およびオペコード情報を特定する段階と、
前記スケジューリング状態情報および前記オペランド状態情報を制御リザベーションステーション用エントリとして前記制御リザベーションステーション内に記憶する段階と、
前記オペコード情報および前記オペランド状態情報をデータリザベーションステーション用エントリとして前記データリザベーションステーション内に記憶する段階と、
を備えて成る、プロセッサシステムにおいて演算エントリを処理する方法。
【００４５】
（付記２）  前記演算エントリは実行のための命令に基づく、付記１記載の方法。
【００４６】
（付記３）  制御リザベーションステーションのひとつのクロックサイクルの間において、各制御リザベーションステーション用エントリに対する前記スケジューリング状態情報およびオペランド状態情報を検証する段階と、
準備完了状態を表すオペランド状態情報を有する制御リザベーションステーション用エントリを、スケジューリングに対して適格とマーク付けする段階と、
を更に備えて成る、付記１記載の方法。
【００４７】
（付記４）  適格とマーク付けされた少なくとも１個の制御リザベーションステーション用エントリを、実行ユニットによる実行のためにスケジューリングする段階を更に備えて成る、付記３記載の方法。
【００４８】
（付記５）  前記スケジューリング状態情報から提供されたスケジューリングタグを受信する段階と、
適格とする前記マーク付けに応じて前記スケジューリングタグに対応するデータリザベーションステーション用エントリを読み取る段階と、
を更に備えて成る、付記３記載の方法。
【００４９】
（付記６）  前記スケジューリングタグの受信に応じて前記制御リザベーションステーションおよび前記データリザベーションステーションにおけるオペランド状態情報を更新する段階を更に備えて成る、付記５記載の方法。
【００５０】
（付記７）  前記演算エントリを実行する段階と、
前記演算エントリの実行の完了から帰着する配信データを捕捉する段階と、
前記捕捉データに対応するデータリザベーションステーション用エントリを更新する段階と、
を更に備えて成る、付記５記載の方法。
【００５１】
（付記８）  前記スケジューリング状態情報は、
前記演算エントリのスケジューリング状態と、
演算エントリタグと、
を備えて成る、付記１記載の方法。
【００５２】
（付記９）  前記スケジューリング状態は、前記演算エントリがスケジューリングを待機しているかまたは既にスケジューリングされたかを表す、付記８記載の方法。
【００５３】
（付記１０）  前記演算エントリタグは、前記データリザベーションステーションにおいて対応するデータリザベーションステーション用エントリへのインデックスを更に備える、付記８記載の方法。
【００５４】
（付記１１）  前記オペランド状態情報は、
オペランドデータを準備完了もしくは待機と特定する状態パラメータと、
前記状態パラメータがオペランドデータを待機と特定する場合に、オペランドデータを生成するために演算エントリを特定するオペランドタグと、
を更に備えて成る、付記１記載の方法。
【００５５】
（付記１２）  前記演算エントリは、前記状態パラメータを準備完了と特定することに応じてスケジューリングされる、付記１１記載の方法。
【００５６】
（付記１３）  演算エントリを選択すべく構成された選択ユニットと；
前記演算エントリを読み取り且つ結果を生成すべく構成された解析ユニットであって、前記演算エントリは、オペコードと、第１オペランド状態情報と、第２オペランド状態情報と、オペランドデータと、第１オペランドエントリタグと、第２オペランドエントリタグとを含み、当該解析ユニットは、
前記第１オペランド状態情報、前記第２オペランド状態情報、前記第１オペランドエントリタグおよび前記第２オペランドエントリタグを読み取るべく構成された制御リザベーションステーション、及び
オペコードおよびオペランドデータを読み取るべく構成されたデータリザベーションステーション、
を更に備えて成る、解析ユニットと；
前記解析ユニットから受信したデータタグを配信すべく構成されたブロードキャストユニットと；
を備えて成る、演算エントリを処理するシステム。
【００５７】
（付記１４）  前記制御リザベーションステーションは、準備完了状態を表す前記第１および第２オペランド状態情報に応じて前記演算エントリをスケジューリングすべく構成される、付記１３記載のシステム。
【００５８】
（付記１５）  スケジューリングされつつある前記演算エントリに応じて前記オペコードにより特定された機能を実施すべく構成された実行ユニットを更に備えて成る、付記１４記載のシステム。
【００５９】
（付記１６）  前記選択ユニットは１個取出し及び発火ユニットである、付記１３記載のシステム。
【００６０】
（付記１７）  処理のために演算エントリを準備する第１準備手段と、
処理のために前記演算エントリを準備する第２準備手段と、
前記演算エントリを受信する手段と、
前記演算エントリから、スケジューリング状態情報、オペランド状態情報およびオペコード情報を特定する手段と、
前記スケジューリング状態情報およびオペランド状態情報を第１エントリとして前記第１準備手段内に記憶する第１記憶手段と、
前記オペコード情報およびオペランド状態情報を第２エントリとして前記第２準備手段内に記憶する第２記憶手段と、
を備えて成る、演算エントリを処理するシステム。
【００６１】
（付記１８）  前記演算エントリは実行のための命令に基づく、付記１７記載のシステム。
【００６２】
（付記１９）  第１クロックサイクルの間において前記第１準備手段内の前記スケジューリング状態情報およびオペランド状態情報を検証する手段と、
準備完了状態に在るオペランド状態情報を有する前記第１エントリに応じて該第１エントリをスケジューリングに対して適格とマーク付けする手段と、
を更に備えて成る、付記１７記載のシステム。
【００６３】
（付記２０）  適格とマーク付けされたならば前記第１エントリを実行のためにスケジューリングする手段を更に備えて成る、付記１９記載のシステム。
【００６４】
（付記２１）  前記スケジューリング状態情報から提供されるスケジューリングタグを受信する手段と、
適格とする前記マーク付けに応じて前記スケジューリングタグに対応する演算エントリを読み取る手段と、
を更に備えて成る、付記１９記載のシステム。
【００６５】
（付記２２）  前記スケジューリングタグの受信に応じて前記第１および第２手段におけるオペランド状態情報を更新する手段を更に備えて成る、付記２１記載のシステム。
【００６６】
（付記２３）  前記演算エントリを実行する手段と、
前記演算エントリの実行の完了から帰着する配信データを捕捉する手段と、
を更に備えて成る、付記２１記載のシステム。
【００６７】
（付記２４）  前記スケジューリング状態情報は、
前記演算エントリのスケジューリング状態と、
演算エントリタグと、
を備えて成る、付記１７記載のシステム。
【００６８】
（付記２５）  前記スケジューリング状態は、前記演算エントリがスケジューリングを待機しているかまたは既にスケジューリングされたかを表す、付記２４記載のシステム。
【００６９】
（付記２６）  前記演算エントリタグは、前記第２手段における対応エントリへのインデックスを更に備える、付記２４記載のシステム。
【００７０】
（付記２７）  前記オペランド状態情報は、
データが準備完了であるか待機であるかを特定する状態パラメータと、
演算エントリを特定してオペランドデータを生成するオペランドタグと、
を更に備えて成る、付記１７記載のシステム。
【００７１】
（付記２８）  前記演算エントリは、前記状態パラメータを準備完了と特定することに応じてスケジューリングされる、付記２７記載のシステム。
【００７２】
（付記２９）  前記第１準備手段は制御リザベーションステーションから成る、付記１７記載のシステム。
【００７３】
（付記３０）  前記第２準備手段はデータリザベーションステーションから成る、付記１７記載のシステム。
【００７４】
（付記３１）  前記第１記憶手段はメモリから成る、付記１７記載のシステム。
【００７５】
（付記３２）  前記第１記憶手段はレジスタから成る、付記１７記載のシステム。
【００７６】
（付記３３）  前記第２記憶手段はメモリから成る、付記１７記載のシステム。
【００７７】
（付記３４）  前記第２記憶手段はレジスタから成る、付記１７記載のシステム。
【００７８】
（付記３５）  前記実行手段は実行ユニットから成る、付記２３記載のシステム。
【００７９】
（付記３６）  配信データを捕捉する前記手段はレジスタから成る、付記２３記載のシステム。
【００８０】
（付記３７）  オペランド状態情報とオペランドタグとを各々が含む少なくとも１個のオペランドレコードを待機する命令であって、機能ユニットにより実施されるべき演算を特定するオペコードと関連付けられた命令、を機能ユニットに対して発行すべく準備するリザベーションシステムであって、
各オペランド状態情報および各対応オペランドタグが制御リザベーションステーション用エントリを備えた、複数のオペランド状態情報および対応する複数のオペランドタグを読み込み、
有効とマーク付けされ且つ準備完了状態に在るオペランドデータを有する各制御リザベーションステーション用エントリを特定してスケジューリングし、且つ、
スケジューリングされた各制御リザベーションステーション用エントリに対するスケジューリングタグを配信する、
如く構成された中央制御リザベーションステーションと；
複数のオペコードおよび複数のオペランドデータを読み込み、
スケジューリングされた各制御リザベーションステーション用エントリに対するスケジューリングタグを受信し、且つ、
スケジューリングされた各制御リザベーションステーション用エントリに対するスケジューリングタグに対応する命令を読み取る、
如く構成された、前記中央制御リザベーションステーションから分散された１個以上のデータリザベーションステーションと；
を備えて成る、リザベーションシステム。
【００８１】
（付記３８）  前記中央制御リザベーションステーションは、前記スケジューリングタグの受信に応じて前記オペランド状態情報を更新すべく構成される、付記３７記載のリザベーションシステム。
【００８２】
（付記３９）  前記１個以上のデータリザベーションステーションは更に、読み取られた各命令の実行に応じて前記オペランドデータを受信すべく構成される、付記３７記載のリザベーションシステム。
【００８３】
（付記４０）  前記制御リザベーションステーションは更に、各制御リザベーションステーション用エントリに対するスケジューリング状態を含むべく構成される、付記３７記載のリザベーションシステム。
【００８４】
（付記４１）  前記１個以上のデータリザベーションステーションは更に、読み取られた各命令を機能ユニットに送信すべく構成される、付記３７記載のリザベーションシステム。
【００８５】
（付記４２）  前記制御リザベーションステーションはメモリバッファから成る、付記３７記載のリザベーションシステム。
【００８６】
（付記４３）  前記制御リザベーションステーションはレジスタから成る、付記３７記載のリザベーションシステム。
【００８７】
（付記４４）  前記１個以上のデータリザベーションステーションはメモリバッファから成る、付記３７記載のリザベーションシステム。
【００８８】
（付記４５）  前記制御リザベーションステーションはレジスタから成る、付記３７記載のリザベーションシステム。
【図面の簡単な説明】
【００８９】
【図１】図１は、本発明の一実施形態に係る、プロセッサ内で演算エントリをスケジューリングするリザベーションステーションシステムを示す図である。
【図２】図２は、本発明の一実施形態に係る、演算エントリに対するプロセッサ内のデータフローシステムおよび処理の流れ図である。
【図３】図３は、本発明の一実施形態に係る、プロセッサに対するデータフロースケジューリングシステムを示す図である。
【図４】図４は、本発明の一実施形態に係る、プロセッサに対するデータフロースケジューリングシステムにおいて演算エントリに対する情報を受信かつ記憶する処理を示す図である。
【図５】図５は、本発明の一実施形態に係る、プロセッサに対するデータフロースケジューリングシステムにおいて制御リザベーションステーション用エントリの発行をスケジューリングする処理を示す図である。
【図６】図６は、本発明の一実施形態に係る、プロセッサに対するデータフロースケジューリングシステムにおいてデータリザベーションステーション用エントリを更新する処理を示す図である。
【符号の説明】
【００９０】
101…リザベーションステーションシステム
120…演算エントリ
130…スケジューリング
140…更新
150…制御リザベーションステーション
160…データリザベーションステーション
152…スケジューリング状態
154…演算エントリタグ
156…オペランドレコード
162…オペコード情報
164…オペランドデータ
201…プロセッサ内のデータフローシステム
210…スケジューリングロジック
215…論理ユニット
220…制御リザベーションステーション用エントリ
230…データリザベーションステーション用エントリ
225、235、245、255…比較器
240…データバス
301…データフロースケジューリングシステム
305…演算列
310…準備完了フィールド
315…第１オペランド状態（Ｒ１）
320…第２オペランド状態（Ｒ２）
330…論理ＡＮＤゲートまたは回路
335…第１読取ユニット
340…１個取出し及び発火ユニット
345…第２読取ユニット
350…読取及び結果ユニット
355…結果ユニット
360…実行ユニット
370…ブロードキャストユニット
375…比較器
380…付加的ロジック
385…レジスタ
390…タグレジスタ（待機）
【図１】
2004199694.tif 000003
【図２】
2004199694.tif 000004
【図３】
2004199694.tif 000005
【図４】
2004199694.tif 000006
【図５】
2004199694.tif 000007
【図６】
2004199694.tif 000008