(57)【要約】      （修正有）【課題】処理システムのパフォーマンス向上を実現する分散型アービトレーションを管理する。【解決手段】マルチサイクル要求であることを示す標識が、スライス・アービタに提供され、もしマルチサイクル要求がある場合は、１つのスライス（第1のスライス）だけが、その関連するバスを許可される。この方法はさらに、第１のスライスよりも低いレイテンシーを有する他の要求元スライスからのいずれの要求についても、これら他の要求元スライスと最長レイテンシーを持つスライスとの間のレイテンシーの差を所定のサイクル・カウンタ値に加えた値、による時間が経過するまで、これをブロックする。この方法はまた、第１のスライスよりも高いレイテンシーを持つスライスからの要求を、所定のサイクル・カウンタ値から第１のスライスと当該高いレイテンシーを持つスライスとの間のレイテンシーの差を引いた値、による時間が経過するまで、ブロックする。【選択図】図２
2004318876.tif 000002
【特許請求の範囲】
【請求項１】
転送供給側の複数のスライスと転送受信側との間のアービトレーションを管理する方法であって、前記スライスが、複数の関連するバスを介して前記転送受信側に結合されており、前記複数のスライスのそれぞれが、前記転送受信側に至るまでの異なったレイテンシーを有しており、
前記複数のスライスのうちの１つまたは複数が関与する転送要求を受信するステップと、
前記転送要求が複数のデータ・サイクルを必要とするか否かを判断するステップと、
前記転送要求には複数のデータ・サイクルが必要であると判断したことに応答して、前記複数のスライスのうちの第１のスライスだけに対して前記バスのうちの関連する１つを許可するステップと、
前記転送要求には複数のデータ・サイクルは必要でないと判断したことに応答して、前記転送要求に関わる前記複数のスライスのすべてに対して、関連するバスを許可するステップと、
を有する方法。
【請求項２】
前記複数のスライスのうちの前記第１のスライスとして、前記転送要求に関わる前記複数のスライスのうちで最高レイテンシーを持つものを選択するステップ、をさらに有する、請求項１に記載の方法。
【請求項３】
前記転送要求には複数のデータ・サイクルが必要であると判断したことに応答して、前記転送供給側において、前記複数のスライスのうちの前記第１のスライスよりも低いレイテンシーを持つ第２のスライスからの要求を、所定のサイクル・カウンタ値の期間に、前記複数のスライスのうちの前記第１のスライスの持つ前記レイテンシーと前記第２のスライスの持つ前記レイテンシーとの間の差を加えた値、による時間が経過するまでブロックするステップ、をさらに有する、請求項１に記載の方法。
【請求項４】
前記転送要求には複数のデータ・サイクルが必要であると判断したことに応答して、前記転送供給側において、前記第１のスライスからの更なる要求を、所定のサイクル・カウンタ値による時間が経過するまでブロックするステップ、をさらに有する、請求項１に記載の方法。
【請求項５】
前記転送要求には複数のデータ・サイクルが必要であると判断したことに応答して、前記転送供給側において、前記複数のスライスのうちの前記第１のスライスよりも高いレイテンシーを持つ第２のスライスからの要求を、前記所定のサイクル・カウンタ値から、前記第２のスライスの持つ前記レイテンシーと前記複数のスライスのうちの前記第１のスライスの持つ前記レイテンシーとの間の差を引いた値、による時間が経過するまでブロックするステップ、をさらに有する、請求項４に記載の方法。
【請求項６】
前記複数のスライスのうちの前記第１のスライスとして、前記要求に関わる前記複数のスライスのうちで最高レイテンシーを持つものを選択するステップと、
前記転送要求には複数のデータ・サイクルが必要であると判断したことに応答して、前記転送供給側において、前記複数のスライスのうちの前記第１のスライスよりも低いレイテンシーを持つ第３のスライスからの要求を、所定のサイクル・カウンタ値に、前記複数のスライスのうちの前記第１のスライスの持つ前記レイテンシーと前記第３のスライスの持つ前記レイテンシーとの間の差を加えた値、による時間が経過するまでブロックするステップと、
をさらに有する、請求項５に記載の方法。
【請求項７】
前記転送受信側において、前記複数のスライスのうちの前記第１のスライスよりも低いレイテンシーを持つ第２のスライスからの要求を、所定のサイクル・カウント値による時間が経過するまでキルするステップ、をさらに有する、請求項６に記載の方法。
【請求項８】
前記転送受信側において、前記複数のスライスのうちの前記第１のスライスよりも低いレイテンシーを持つ第２のスライスからの要求であって、前記許可の後、前記複数のスライスのうちの前記第１のスライスの持つ前記レイテンシーと前記第２のスライスの持つ前記レイテンシーとの間の差による時間の範囲内に行われた要求をキルするステップと、
前記転送受信側において、前記複数のスライスのうちの前記第１のスライスよりも高いレイテンシーを持つ第３のスライスからの要求のアービトレーションを、前記第３のスライスの持つ前記レイテンシーと前記複数のスライスのうちの前記第１のスライスの持つ前記レイテンシーとの間の差による時間が経過したときに、受け入れるステップと、
をさらに有する、請求項６に記載の方法。
【請求項９】
前記転送要求には複数のデータ・サイクルが必要であると判断したことに応答して、前記転送供給側において、前記複数のスライスのうちの前記第１のスライスよりも高いレイテンシーを持つ第２のスライスからの要求を、所定のサイクル・カウンタ値から、前記第２のスライスの持つ前記レイテンシーと前記複数のスライスのうちの前記第１のスライスの持つ前記レイテンシーとの間の差を引いた値、による時間が経過するまでブロックするステップ、をさらに有する、請求項１に記載の方法。
【請求項１０】
前記転送受信側において、前記複数のスライスのうちの前記第１のスライスよりも低いレイテンシーを持つ第２のスライスからのマルチサイクル要求であって、前記許可の後、前記複数のスライスのうちの前記第１のスライスの持つ前記レイテンシーと前記第２スライスの持つレイテンシーとの間の差による時間の範囲内に行われたマルチサイクル要求をキルするステップ、をさらに有する、請求項１に記載の方法。
【請求項１１】
前記転送受信側において、前記複数のスライスのうちの前記第１のスライスよりも低いレイテンシーを持つ第２のスライスからの要求を、所定のサイクル・カウント値による時間が経過するまでキルするステップ、をさらに有する、請求項１に記載の方法。
【請求項１２】
前記転送受信側において、前記複数のスライスのうちの前記第１のスライスよりも高いレイテンシーを持つ第２のスライスからのマルチサイクル要求のアービトレーションを、前記第２のスライスの持つ前記レイテンシーと前記複数のスライスのうちの前記第１のスライスの持つ前記レイテンシーとの間の差による時間が経過したときに、受け入れるステップ、をさらに有する、請求項１に記載の方法。
【請求項１３】
プロセッサ内にあり、転送要求に関連するデータを受信する転送受信ユニットと、
前記転送受信ユニットに結合され、また、それぞれに前記転送受信ユニットに複数のバスのうちの関連する１つのバスによって結合されている複数のスライスを有する、リソースであって、前記複数のスライスが、前記転送受信ユニットに至るまでの異なった要求レイテンシーを有する、リソースと、
前記バスについての要求を調停するため前記複数のスライスに結合されたスライス・アービタであって、前記スライス・アービタが、個々の要求がマルチサイクル転送要求であるか否か、についての指示を生成するための回路を含み、それによって前記スライス・アービタの動作が前記指示の状態に従って変更されるスライス・アービタと、
を有するプロセッサ。
【請求項１４】
前記スライス・アービタが、前記指示がマルチサイクル転送要求を示している場合には、前記複数のスライスのうちの第１のスライスだけに対して前記バスのうちの関連する１つを許可し、また、前記要求が単一サイクル転送要求である場合には、関係するすべてのスライスに対して、関連するバスを許可する、請求項１３に記載のプロセッサ。
【請求項１５】
前記スライス・アービタが、前記複数のスライスのうちの前記第１のスライスとして、要求に関わる前記複数のスライスのうちの最高レイテンシーを持つスライスを選択する、請求項１４に記載のプロセッサ。
【請求項１６】
前記スライス・アービタが、前記複数のスライスのうちの前記第１のスライスよりも低いレイテンシーを持つ第２のスライスからの要求を、所定のサイクル・カウンタ値に、前記複数のスライスのうちの前記第１のスライスの持つ前記レイテンシーと前記第２のスライスの持つ前記レイテンシーとの間の差を加えた値、による時間が経過するまでブロックする、請求項１４に記載のプロセッサ。
【請求項１７】
前記スライス・アービタが、前記第１のスライスからの追加の要求を、所定のサイクル・カウンタ値による時間が経過するまでブロックする、請求項１４に記載のプロセッサ。
【請求項１８】
前記スライス・アービタが、前記複数のスライスのうちの前記第１のスライスよりも高いレイテンシーを持つ第２のスライスからの要求を、前記所定のサイクル・カウンタ値から、前記第２のスライスの持つ前記レイテンシーと前記複数のスライスのうちの前記第１のスライスの持つ前記レイテンシーとの間の差を引いた値、による時間が経過するまでブロックする、請求項１４に記載のプロセッサ。
【請求項１９】
前記複数のスライスに結合され、前記転送受信ユニットにおいて前記スライス・アービタの行った決定を履行するための、コア・アービタをさらに有し、また、前記コア・アービタが、前記許可の後、所定のカウンタ値による時間が経過するまでの間に行われた、前記複数のスライスのうちの前記第１のスライスよりも低いレイテンシーを持つ第２のスライスからのマルチサイクル要求をキルするためのカウンタ回路を有する、請求項１４に記載のプロセッサ。
【請求項２０】
前記複数のスライスに結合され、前記転送受信ユニットにおいて前記スライス・アービタの行った決定を履行するための、コア・アービタをさらに有し、また、前記コア・アービタが、前記複数のスライスのうちの前記第１のスライスよりも低いレイテンシーを持つ第２のスライスからのマルチサイクル要求であって、前記許可の後、前記複数のスライスのうちの前記第１のスライスの持つ前記レイテンシーと前記第２スライスの持つ前記レイテンシーとの間の差による時間の範囲内で行われたマルチサイクル要求をキルするための回路を有する、請求項１４に記載のプロセッサ。
【請求項２１】
前記複数のスライスに結合され、前記転送受信ユニットにおいて前記スライス・アービタの行った決定を履行する、コア・アービタをさらに有し、また、前記コア・アービタが、前記複数のスライスのうちの前記第１のスライスよりも高いレイテンシーを持つ第２のスライスからのマルチサイクル転送要求を、前記第２のスライスの持つ前記レイテンシーと前記複数のスライスのうちの前記第１のスライスの持つ前記レイテンシーとの間の差による時間が経過したときに調停するための回路を有する、請求項１４に記載のプロセッサ。
【請求項２２】
プロセッサ内の転送受信ユニットと、
前記転送受信ユニットに結合されており、また、前記転送受信ユニットに至るまでの異なったレイテンシーを持つ複数のスライスを有する、リソースと、
前記複数のスライスに結合され、前記複数のスライスを前記転送受信ユニットに結合するバスのための要求を調停する、スライス・アービタと、
個々の要求がマルチサイクル転送要求か否かを判断する手段であって、それにより前記スライス・アービタの動作が前記指示の状態に従って変更される手段と、
を有するプロセッサ。
【請求項２３】
前記複数のスライスに結合され、前記転送受信ユニットにおいて前記スライス・アービタによって行われた決定を履行する、コア・アービタと、
前記決定手段が、個々の要求がマルチサイクル転送要求であると判断したことに応答して、前記スライスから前記転送受信ユニットに供給される転送データの到来順序を維持する手段と、
をさらに有する、請求項２２に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、プロセッサおよびコンピューティング・システムに関し、より詳細には、プロセッサ内での、複数のスライス間で異なったレイテンシー（データ転送にかかる待ち時間）を持つ要求パスおよびデータ・パス上での分散型バス・アービトレーション（調停）に関するものである。
【背景技術】
【０００２】
今日の高速プロセッサには、様々なリソースと、１つまたは複数のプロセッサ・コア、キャッシュ、およびメモリとの間での非常に効率的な通信を可能にする、ハイレベルの統合化と非同期設計とが組み込まれており、その結果、データ転送および他の通信が、プロセッサ内でデジタル信号を伝播するほぼ限界の速度にて行われている。
【０００３】
具体的には、高速プロセッサの内部バスでは、異なったレイテンシーを持つパスを介してデータおよびコマンドを転送することができ、また、最大伝播時間のために（短くするのが）制限された長い同期サイクルを必要とすることなしに、データおよびコマンドの妥当性が適切に検査され、それらが順序どおりに転送されるようにするロジック（論理構成、論理回路）が備わっている。これは、今日のプロセッサにおいて、制御信号のみならず、データ値、プログラム命令、およびコマンドが、多数の論理ステージを介してパイプライン処理されることが可能で、これら信号が通過するステージの段数がチップ・レイアウトに大きく依存しているような場合には、特にそうである。
【０００４】
処理システム内でのこうした論理実装の一つに、プロセッサ・コア・アービタ（調停器、調停回路）および１つまたは複数のスライス・アービタを含む、分散型アービトレーション（調停）方式がある。この分散方式によって、あるリソースからプロセッサ・コアへのデータ転送要求の早期の指示が可能になる。分散型アービトレーションの場合では、この早期の指示のタイミングは、データの物理的な常駐位置によって決まり、一方、集中型アービトレーション手法では一般に、要求を中央のポイントに中継し、アービトレーション決定を行い、次いでその決定をプロセッサ・コアに中継するのに必要な追加のサイクルを経た後でしか、こうした指示は提供されない。したがって、集中型アービトレーションでは、データが使用可能であることに関する指示をプロセッサ・コアに提供するのが非常に遅れることになる。
【０００５】
こうした分散型アービトレーション方式では、スライス・アービタに結合されたリソースが、１つまたは複数のスライスからプロセッサ・コアにデータを転送する準備ができたときに、当該スライス・アービタが、転送に必要なバスの割当てを決定し、それによって、いつ当該バス上にデータを置いてよいかをこれらスライスに対して指示する。それと同時に、かつ並行して、これらの要求はコア・アービタに送られ、その結果、プロセッサ・コアは、データ転送動作についての指示を早めに受け取る。コア・アービタは、要求元スライスからの個々のデータのレイテンシー分の時間が経過した後で、これら要求を受け取り、スライス・アービタ側で並行して行われている同じアービトレーション決定を履行し、データが届きつつあることをプロセッサ・コアに早めに指示し、続いて、これらスライスのデータがプロセッサ・コアでラッチ（またはロード）可能となる適切なときに、これらスライスから有効データが転送されるようにする。
【０００６】
一般に、単一サイクルのデータ転送動作のシーケンスを扱うのに必要なロジックはあまり複雑ではないが、それはそれぞれの要求元のレイテンシーが分かっており、また、スライス・アービタ側における（および並行してコア・アービタ側における）更なる許可は、、それぞれのスライスの既知のレイテンシーに基づいて、別のスライスの要求を許可した後の特定の数サイクルの間は、ブロック（阻止）することができるからである。最長レイテンシーのスライスからの更なる要求をブロックする必要は全く無く、また、より速いスライスからの要求は、以前に調停された要求から届くデータがすでに選択されているので、データがコアに送信されはするが、ロードのためにスライス・アービタまたはコア・アービタのいずれによっても選択されることがないようなサイクルにおいては、ブロックされる。
【０００７】
上述のように、コア・アービタは、スライス・アービタと同じアービトレーション決定を行うが、これらスライスからコア・アービタに至るまでの異なったレイテンシーのせいで、必ずしもスライス・アービタ側と同じ順序で許可が行われるとは限らない。ただし、スライス・アービタによって許可されたのと同じ要求が、コア・アービタによって許可される。スライス・アービタ側とコア・アービタ側では、許可する順序が必ずしも一致しないことになるので、プロセッサ・コア側で（たとえば、戻ってきたデータのアドレスやタグを用いることによって）データを再度同期させる。コア・アービタは、マルチプレクサを介してこれらスライスをコアに結合する個々のバスを選択する決定を行う。コア・アービタは、所与のサイクルにおいて許可すべき適切なスライスを決定し、このようにして、適切なコア・レジスタにデータをロードするため適切なマルチプレクサ選択を行うことができる。
【０００８】
上述のように、コア・アービタは、それぞれのスライスのレイテンシーについての既知のサイクル数の差異に準拠した、スライス・アービタのための決定許可ロジック、に適合するロジックに基づいて決定を行う。いつスライス・アービタが、それぞれのスライスに関連するバスを許可したかを知ることによって、これらスライスから提供されるすべてのデータを使用することができ、また分散型アービトレーション手法では、スライス・アービタによって許可されたすべての転送の正常な終了が履行されるので、（所与のサイクルにおいて、マルチプレクサに対する競合が生じたために）データ転送に失敗したことをスライスに通知する必要はない。
【０００９】
しかし、もしこのようなシステムにおいてマルチサイクル要求が行われているとしたら、データが不正確にプロセッサ・コアに送られ、再試行処理または誤ったデータ転送が余儀なくされることになることもある。たとえば、最高レイテンシーのスライスが関与する要求が、すぐ後の最低レイテンシーのスライスからの要求の前に許可されるであろう。しかし、コア・アービタは、最低レイテンシーのスライスがかなり後にならないとコア・アービタに到来しないので、まず最低レイテンシーのスライスからの要求を許可することになる。単一サイクル要求については、順不同な決定の間で生じるマルチプレクサの競合を防ぐには、上述のブロッキングで十分であるが、もしマルチサイクル要求が許可されると、既存のブロッキング方式では競合を防ぐのには不十分である。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
したがって、分散型アービトレーション・システムにおいて、改良型のマルチサイクル・データ転送動作を実現するアービトレーション・システムおよび方法を提供することが望ましい。
【課題を解決するための手段】
【００１１】
分散型アービトレーション方式において、改良型のマルチサイクル・データ転送動作を提供する目的は、ある方法および装置で実現される。当該方法では、データ転送動作がマルチサイクル要求かどうかを判断し、要求がマルチサイクル要求であるという判断に応答して、第１のスライスだけに関連するバスを許可する。この方法ではさらに、当該第１のスライスよりも低いレイテンシーを持つ別の要求元スライスからの要求は、当該別の要求元スライスと最長レイテンシーのスライスとの間のレイテンシーの差に所定のサイクル数を加えた値による時間が経過するまで、これをブロックする。この方法ではまた、所定のサイクル数を経るまで、当該第１のスライスからの追加の要求もブロックする。この方法ではさらに、当該第１のスライスよりも高いレイテンシーを持ったスライスからの要求も、当該第１のスライスと当該より高いレイテンシーを持つスライスとの間のレイテンシーの差を所定のサイクル・カウンタ値から引いた値による時間が経過するまで、これをブロックする。当該装置は、本発明の一実施形態にしたがってプロセッサ内で本発明の方法を遂行するためのロジックを有している。
【００１２】
本発明の前述その他の目的、特徴および利点は、添付の図面に示す本発明の好ましい実施形態についての以下のより具体的な記述から明らかなものとなる。
【発明を実施するための最良の形態】
【００１３】
次に図面、特に図１を参照すると、本発明による方法および装置を実施するプロセッサ１０のブロック図が示されている。プロセッサ１０は一般に対称型マルチプロセシング・システム（ＳＭＰ）で使用されるタイプのものであり、他のプロセッサによって実行される命令を、キャッシュ内またはプロセッサ１０内のリソースにロードされた値と関係させることができるものであ、る。しかし、本発明の技術は、（転送の受信側によって開始されたコマンドに結果的に応答しての完了要求であることもある）転送要求が転送の供給側から提供されるようなデータ転送機構、を有するいずれのプロセッサにも適用される。単一のプロセッサ・システムには、たとえばあるいくつかの値が記憶装置または他のリソースからプロセッサ・コアに再ロードされる場合に、こうしたデータ転送機構を含めることがきる。本発明の文脈におけるデータ転送という用語は、即時のデータ転送要求がデータの供給側で発生する場合におけるある動作を意味し、具体的な例では、データ転送を要求するリソースからプロセッサ・コアに至る動作を意味する。また「データ転送」によって規定される転送のタイプは、「データ値」（プログラムで使用される変数や定数など）の転送に限定されず、プログラム命令、内部コマンド、アドレス値、タグなどの転送をも含む。
【００１４】
プロセッサ１０は、プロセッサ１０内のプログラム命令の実行およびデータの移動を制御するコア実行ユニット１４を含む。コア実行ユニット１４は、命令シーケンサ・ユニット１２、プリフェッチ・ユニット１３、キャッシュ・インターフェイス・ユニット１６、オンボードのＬ１キャッシュ１７およびＬ２キャッシュ１８、ならびに浮動小数点ユニット１５など様々なリソースに結合されている。一部のデータ転送命令は、単一のデータ値に対するものであり、このデータ値は、特定の要求元スライスから単一サイクルで取り出すことができる。しかし、マルチサイクルのデータ転送命令もまたコア実行ユニット１４によってサポートされており、それには、複数のバス・サイクルが複数のデータ値を取り出せるよう調整されていることが必要であり、それはたとえば、Ｌ２キャッシュ１８の１つまたは複数のキャッシュ・ラインである場合がある。
【００１５】
データ転送命令は、他のリソースのコア実行ユニット１４への接続において、ならびに、およびコア実行ユニット１４以外の装置間での接続においでも実施することもできる。本明細書に開示するバス・アービトレーションの技術は、データ転送動作を必要としており、また、データ、プログラム命令またはコマンドを処理システム内の別のユニット（転送受信側ユニット）に供給するための共有バス、に結合された複数のスライス（データ供給側）を有している、処理システムのどんな部分にも適用することができる。
【００１６】
次に図２を参照すると、プロセッサ１０内の回路の細部が示されている。本発明の技術を説明するために、Ｌ２キャッシュ１８とコア実行ユニット１４との間の接続を用いるが、本発明は、前述のように、プロセッサ１０内の他のユニット間の接続に拡張され、また高速相互接続バス上の複数プロセッサ間などのアービトレーション方式にも一般に適用され、この高速相互接続バスでは、受信側ユニットにて早期のデータ供給の指示を受け取ることが必要であり、それ故、インターフェイス上で分散型アービトレーションが実施されるのだということを理解されたい。
【００１７】
スライスＭ１、Ｍ２およびＭ３は、Ｌ２キャッシュ１８内の記憶ユニットであり、コア実行ユニット１４に対して異なったレイテンシーを持つが、それは、Ｌ２キャッシュ１８のアーキテクチュアのせいか、または、プロセッサ１０内でのスライスＭ１、Ｍ２およびＭ３の物理的位置のせいである場合がある。３つのスライスの図は例示的なものであり、本発明の技術は、任意の数のスライスに、または一般に、任意の種類のデータ提供元に拡張される。スライスＭ１、Ｍ２およびＭ３は、コア実行ユニット１４をＬ２キャッシュ１８に接続する関連バス２８Ａ〜２８Ｃを介して、コア実行ユニット１４に結合される。コア実行ユニット１４へのデータの供給も例示的なものであり、本発明の技術は、任意のデータ受信側に適用される。要求パス２６は、単一の制御パスのこともあるし、実際にはバス２８Ａ〜２８Ｃであることもあり、こうしたバスを介して、データ転送要求の指示がコア・アービタ２２に送られる。スライス・アービタ２４は、スライスＭ１、Ｍ２およびＭ３に結合され、それぞれのスライスＭ１、Ｍ２およびＭ３から要求の指示を受け取る。スライス・アービタ２４の役割は、スライスＭ１、Ｍ２およびＭ３からコア実行ユニット１４内のマルチプレクサ２０へのデータ供給に関する競合ならびに順序制御誤りを防ぐことである。マルチプレクサ２０は、１サイクルごとに、バス２８Ａ〜２８Ｃのうちの１つからしかデータを選択することができないので、スライス・アービタの役割は、同じサイクルでマルチプレクサ２０に届くはずの、スライスＭ１、Ｍ２およびＭ３からのデータ送信を行わないようにして、複数のスライスから同時に到来するデータのロスを回避することである。コア・アービタ２２の役割は、所与のサイクルで、（あるとすれば）どのデータをマルチプレクサ２０から供給するかを判断することである。マルチプレクサ２０は、プロセッサ・コア内に集中型マルチプレクサとして示されているが、本発明の他の実施形態によるシステム内のマルチプレクサでは、データ転送動作のデータの宛先がマルチプレクサ・アドレスによって決まり、また、データ有効信号のタイミングを、異なったマルチプレクサ・レイテンシーに従って調整することができる、分散型マルチプレクサを組み込むことができる。
【００１８】
コア・アービタ２２は、スライス・アービタ２４によって許可された要求に関連するデータの順序およびサイクル・タイミングを決定する役割を担っており、その結果、コア実行ユニット１４に到来するデータの順序およびサイクル・タイミング（それらは、スライス・アービタ２４で行われる決定によって指示される）が、データのコア実行ユニット１４への適切なロードが行えるように、正しく決定されることになる。スライスＭ１、Ｍ２およびＭ３からの要求レイテンシーＬ１、Ｌ２およびＬ３は異なっており、ここでの例では、最高レイテンシーＬ３から最低レイテンシーＬ１へち順序付けされる。コア・アービタ２２はまた、レイテンシーＬ４でデータ有効信号を供給し、このことで、コア実行ユニット１４内のレジスタへ適切なデータを供給するようにマルチプレクサ／ラッチ２０が動作する。データ有効信号をアサートするまでの追加のレイテンシーによって、スライス・アービタ２４側で許可されなかったためその後無効化されている要求を、キル（止める）／ブロック（妨げる）することができる。データも同様に、スライスＭ１、Ｍ２およびＭ３の要求から、Ｌ４だけ遅延され、その結果、データの有効なアサート（行使、主張）が、提供されるデータとうまく並ぶように行われる。もしデータおよびデータ有効信号が遅延しないのなら、（すなわち、要求とデータがスライスＭ１、Ｍ２およびＭ３から同時に送出される場合）と、スライス・アービタ２４がバス２８Ａ〜２８Ｃ上へのデータのロードをブロックする時間はなくなっていることであろうし、その後にマルチプレクサ２０上で、それが拒否されていることになって、不必要な電力を消費させ、不必要な仕事によってスライスはビジー（使用中）にされる。データ有効／データ遅延は、要求とデータの間の、固定サイクル・オフセットのみを表しているので、いかなる帯域幅に関するペナルティもこうした遅延には関連付けられていない。
【００１９】
本発明の文脈において、マルチサイクル動作の場合には、スライス・アービタ２４によって再ロード・バスがそのスライスよりも高いレイテンシーのマルチサイクル動作用のスライスに既に許可されているときには、スライスＭ１およびＭ２から送られ、コア・アービタ２２に移動中である要求を、コア・アービタ２２がキルできることが必要不可欠である。上述の動作によって、スライス・アービタ２４によって決定された許可が、コア・アービタ２２で履行され、その結果、スライス・アービタ２４によって許可されなかったが、コア・アービタ２２によって受け取られた要求が、コア・アービタ２２で誤って許可されることがなくなる。データ有効信号Ｌ４≧Ｌ３−Ｌ１であるレイテンシーの関係から、こうした要求をキルする能力を具現化するのに必要な時間が提供される。単一サイクル動作について、表Ｉにスライス・アービタ２４の動作を示す。
【００２０】
【表１】
2004318876.tif 000003
【００２１】
表１の左３つの欄は、コア・アービタ２４に提示された、それぞれのスライスＭ１、Ｍ２およびＭ３からの要求を示し、ロジック「１」は要求している状態を、「０」は、要求していない状態を表す。スライス要求のすべての組合せについて、すべての要求されたスライスがサイクル１で許可されるが、これは、サイクル１でコアに向かって既に進行中のものはないと仮定しており、これは、スライス・アービタ２４によっていずれかの要求が許可される前の初期状態である。要求が許可された後では、コア実行ユニット１４に移動しているデータに関連する、より長いレイテンシーによって決まるサイクルにおいて、スライスＭ１およびＭ２からの更なる要求がブロックされなければならない。
【００２２】
たとえば、３つのスライスＭ１、Ｍ２およびＭ３がすべて、サイクル１で始まるデータ転送の開始を許可された場合、スライスＭ３からの更なる要求を、スライス・アービタ２４上でブロックする必要はないが、これは、スライスＭ３からの次の要求がコア・アービタ２２に（サイクルＬ３＋１で）伝播する前に、当該第１の転送サイクルが（サイクルＬ３で）既に完了しているからである。しかし、スライスＭ１およびＭ２からの更なる要求は、その要求が、それらのデータの到来とスライスＭ３からの要求に対して提供されるデータの到来とを同時に発生させるものである場合は、当該到達するサイクルにてブロックされなければならない。要求後、データはＬ４サイクルだけ遅延されるので、別のスライスからのデータは、スライスＭ３からの当該データと同じサイクルにて到来し、マルチプレクサ２０は、両方のスライスからのデータをロードすることはできないこともある。スライスＭ１からの要求もまた、当該要求がスライスＭ２からの要求と同時に到達するかもしれないようなサイクル、すなわち当該データがサイクルＬ２にて到来するようなサイクルである場合においては、そしてスライスＭ１からの場合は、サイクル１＋Ｌ２−Ｌ１にて到来するようなサイクルである場合には、ブロックされなければならない。一般に、この表は、スライス・アービタ２４で許可された以前の要求がコア・アービタ２２に到達するような特定のサイクルについての要求をブロックし、複数のスライスからの要求を満たすデータが同時に到達することが回避されることを反映している。
【００２３】
上述の説明では、当該スライスについて、要求レイテンシーがデータレイテンシーと等しいと仮定している。もし（上述のデータ／データ有効レイテンシー以外に）データレイテンシーが要求レイテンシーと一定サイクル数分異なる場合には、当該許可サイクルを、当該データ・レイテンシーの超過分に等しい値だけ遅延させなければならない（たとえば、もし当該データ・イテンシーが要求レイテンシーよりも４サイクル分長い場合には、表を、サイクル１ではなく、サイクル４での許可として示すようにする）。もしデータ・レイテンシーの差が様々である場合には、システムでは、そのうちの最高データ・レイテンシーを待つこともできるし、また、保留中のサイクルに関わる最高データ・レイテンシーを遅延させる複雑なロジックを実装することもできる。
【００２４】
上述のアービトレーション方式は、コア・アービタ２２およびスライス・アービタ２４が要求を異なる時間に許可したとしても、エラーなく実装することができるが、それは、データと同じレイテンシーをＬ４サイクルずらしたレイテンシーで、要求タイプがコア実行ユニット１４に供給されるためである。スライス・アービタ２４はある順序で要求を許可し、コア・アービタ２２は別の順序で要求を許可する（もしこれら要求が両スライス間のレイテンシーの時間差の範囲内である場合）が、データを常に適切な宛先にソートすることができなくてはならず、それは要求のレイテンシーおよびデータのレイテンシーがスライスごとに同じであり、それ故、当該データが各要求からＬ４サイクル分オフセットされるためである。もし複数の要求がコア・アービタ２２に同時に到来した場合には、まず最長レイテンシーのスライスの要求が許可され、これは表１に従ったスライス・アービタ２４での許可と一致する。このように、前記のプロセスに従って要求を許可することによって、コア・アービタ２２は、バス２８Ａ〜Ｃ上に提供されたデータを、提供元のスライスと常に関連付けることができる。
【００２５】
しかし、マルチサイクル要求（データ転送動作を完遂するのに複数サイクルを必要とするサイクル・タイプ）を実施する場合には、表１に概要を示したアービトレーション方式では失敗するが、これは、スライスの要求が、別のスライスのマルチサイクル要求がまだ処理されている間に許可することが可能であり、単一サイクルでの要求をブロックしても、他のマルチサイクルまたは単一サイクル動作と供に、マルチサイクル動作間の動作動作マルチプレクサにおける競合は回避されない。マルチサイクル動作のデータと他の動作のデータとの間の競合を回避するために、分散型アービトレーション・システムを変更して、保留中のマルチサイクル・データ転送動作の完了を保証するのに十分な時間だけ、追加の動作の要求をブロックするようにすることができる。効率的な動作を成し遂げるために、スライス・アービタ２４およびコア・アービタ２２では、マルチサイクル動作の指示が使用され、この指示は一般に、要求の指示から解読可能な動作タイプであるが、もう１つの方法として、別個の制御パスを介して供給されることもある。
【００２６】
表２は、すべての要求がマルチサイクル動作タイプである場合の、スライス・アービタ２４の動作を示している。
【００２７】
【表２】
2004318876.tif 000004
【００２８】
最長レイテンシーを持った要求元スライスが最初に許可される。他のスライスからの要求は、所定のサイクル・カウンタ値「Ｋ」が経過するまで、その後のすべてのサイクルでブロックされるが、このＫは、少なくとも当該マルチサイクル・データ転送動作を完了するのに必要な最小サイクル数である。最長レイテンシーのスライスの要求が許可された後、Ｋ個のサイクルが経過した時点である、サイクル１＋Ｋまで、そのスライスをブロックすることが観察される。さらに、それよりも低いレイテンシーのスライスからのマルチサイクル要求は、サイクル１＋Ｋにそのレイテンシーの差に等しいサイクル数を加えた期間が経過するまでブロックされ、それによってマルチサイクル転送が完了することと、当該低いレイテンシーのスライスからのマルチサイクル要求が、そのマルチサイクル転送要求がコア実行ユニット１４に伝わる前には、コア・アービタ２２側で受信されないようにすることとが保証される。
【００２９】
さらに、より高いレイテンシーのスライスからのマルチサイクル要求は、Ｋサイクル経過した時間から、当該許可されたスライスと各々のより高いレイテンシーを持ったスライスとの差の分のレイテンシーを引いた値のサイクル数の間ブロックされる。たとえば、スライスＭ１が、マルチサイクル転送を実施する、許可されたスライスである場合、スライスＭ２の要求は、サイクル１＋Ｋ−（Ｌ２−Ｌ１）までブロックされ、またスライスＭ３の要求は、サイクル１＋Ｋ−（Ｌ３−Ｌ１）までブロックされることで、コア実行ユニット１４に伝播されるマルチサイクル要求とのデータ衝突の潜在性が回避されるまで、より高いレイテンシーを持つスライスからの要求はを遅延させられる。
【００３０】
スライス・アービタ２４によって受信される要求が、単一サイクル要求とマルチサイクル要求の混在したものである場合、以下の規則によって、これら要求に応答してバス２８Ａ〜Ｃをブロックおよび許可するための処理方式（表１の方式または表２の方式）が選択される。
１）いずれかのより低いレイテンシーを持つ要求がマルチサイクル動作のためのものである場合、最高レイテンシーの要求が単一サイクルであったか、それともマルチサイクルであったかに関係なく、その要求は表２の規則に従い許可をされない。
２）最高レイテンシーの要求が、単一サイクル動作のためのものである場合、他のより低いレイテンシーの単一サイクル要求が、表１の規則に従って許可される。
３）最高レイテンシーの要求がマルチサイクル動作のためのものである場合、他のより低いレイテンシーの単一サイクル要求は、もし当該要求がサイクル１で発生するか、または、表１に示した、要求元スライスをブロックするサイクルの前に発生した場合には、表１の規則に従って許可される。そのスライスについての当該特定のブロッキング・サイクルの後は、そのスライスから行われるいずれの要求も、表２の規則に従ってブロックされる。
【００３１】
たとえば、スライスＭ１、Ｍ２およびＭ３がすべてサイクル１で要求しており、かつスライスＭ１およびＭ３からの要求はマルチサイクルであるが、スライスＭ２からの要求は単一サイクルである場合、スライスＭ３およびＭ２は、上記の規則１および規則３に従ってそのバスを許可されるが、Ｍ１は、規則１に従ってそのバスを許可されない。サイクル２で、スライスＭ１が次いで単一サイクル要求を行った場合、スライスＭ１はそのバスを許可されるが、それは規則３および表１に従えば、サイクル２での要求は、１＋（Ｌ３−Ｌ１）＝３よりも小さく、従ってその要求はブロックされないためである。
【００３２】
スライス・アービタ２４に対する変更に加えて、コア・アービタ２２も同様に修正され、その結果、表１または表２と、上記の単一サイクルおよびマルチサイクルの混在する要求についての規則とに従って、スライス・アービタ２４で許可された、より高いレイテンシーのスライスからの単一サイクルまたはマルチサイクル転送が到来したときに、より低いレイテンシーのスライスからのマルチサイクル動作に対する誤った許可の補償が行われる。表３は、コア・アービタ２２で「キル」しなければならないマルチサイクル要求を示している。「キル」の実施によっては、スライス・アービタ２４、または、スライスＭ１、Ｍ２、もしくはＭ３は影響を受けないが、スライス・アービタ２４で拒否された要求をコア・アービタ２２で許可することも、また前に拒否された要求に対するデータ有効信号をアサートすることも回避され、そうしなければ、(当該「キル」の実施は)コア実行ユニット１４で、無効または誤ったデータのマルチプレクスおよび／またはラッチを行うことになってしまう。
【００３３】
【表３】
2004318876.tif 000005
【００３４】
表３を見ると、サイクル１より前のサイクルで既に許可されている要求が、コア・アービタ２２で「キル」されることが分かり、キルすることによって、到来する拒否された要求は効果的に無視される。表３は、マルチサイクル再ロード動作を実施するスライスに対して、サイクル１での許可に基づいて要求をキルすることを示している。サイクル１より前にスライス・アービタ２４で許可された、より低いレイテンシーのスライスからのマルチサイクル要求は、もしそれらがマルチサイクル再ロード・スライスとその要求元スライスとの間のレイテンシーの差の時間内に許可される場合は、キルされる。したがって、データ有効信号を生成するのに必要な時間は、スライス間の最長のレイテンシー差よりも長くなければならない。たとえば、図示する実施形態では、Ｌ４≧Ｌ３−Ｌ１となる。
【００３５】
コア・アービタ２２はまた、スライス・アービタ２４内のサイクル・カウンタ動作と同様に、カウンタも使用して、後続の単一サイクルおよびマルチサイクル動作をブロックする。このカウンタは、あるマルチサイクル動作が許可された後、その許可サイクルから始まってＫ＋１サイクルの間、後続の動作に対する許可をブロックする。
【００３６】
そうでなければ、前がマルチサイクル転送であるためコア・アービタ２２でブロックされるはずの一部のマルチサイクル要求は、表４に示すように、アービトレーションのために有効にもされなければならない。
【００３７】
【表４】
2004318876.tif 000006
【００３８】
サイクル１で、コア・アービタ２２によって、マルチサイクル要求についてより低いレイテンシーのスライスが許可されている場合は、スライス・アービタ２４によって当該より低いレイテンシーの要求よりも優先して許可された、コア・アービタ２２に到来するより高いレイテンシーのスライスの要求は、コア・アービタ２２でアービトレーションが可能とならなければならない。表４は、（より低いレイテンシーの）マルチサイクル要求のデータ提供元と、スライス・アービタ２４で以前にバスを許可されている（より高いレイテンシーの）スライスとの間のレイテンシーの差の時間内に到来する要求を許可することが示されている。
【００３９】
次に図３を参照すると、上述のシステム内でのバス動作が示されている。コア実行ユニット１４における、要求／データの供給が、要求の指示２９およびマルチプレクサ入力データ２９Ａを転送するパイプラインにおけるセル（実際には、各スライスにつき単一バスであることがある）にて示されている。要求ラインＲＭ１、ＲＭ２およびＲＭ３は、コア・アービタ２４に対する、データ転送要求の指示である。要求パイプライン２９およびデータ・パイプライン２９Ａ中のセルは、各サイクルに対応しており、最も左のセルがサイクル１である。サイクル１では、マルチサイクル動作を示すＭＵＬＴＩがアサートされていなので、３つの要求のすべてがアサートされ許可される。サイクル２では、１サイクル・レイテンシーのため、要求がＭ１から供給される。サイクル５では、要求がＭ２から供給され、サイクル７では、要求がＭ３から供給される。サイクル３で、ＲＭ２が再びアサートされるが、しかし、（表１の）サイクル１でのスライスＭ３の許可に基づくスライスＭ２の許可をブロックするための式が、１＋（Ｌ３−Ｌ２）＝サイクル１＋６−４＝サイクル３であるので、スライス・アービタ２４ではブロックされる。上述の、許可を拒否することによって、コア実行ユニット１４内で、スライスＭ２からのデータが、Ｍ３スライスからのデータと、サイクル７＋Ｌ４（この例では、Ｌ４＝６）で、マルチプレクサ２０に対して競合することがなくなる（ｃ１は潜在的な競合関係を示す）。サイクル７で、両方の要求がコア・アービタ２２に到来すること、および、スライスＭ３が最長レイテンシーを持つスライスであるので、コア・アービタ２２はまた、スライスＭ２よりもスライスＭ３を選択することに留意されたい。
【００４０】
次いで、Ｍ２の要求が、サイクル４で許可され、サイクル８でコア・アービタ２２に到来し、サイクル１４でデータを供給する。マルチサイクル要求が、サイクル７で、Ｍ２から行われ、この要求が許可され、サイクル１１で、コア実行ユニット１４に到来し始める。サイクル１２で、単一サイクル動作用にＲＭ１、ＲＭ２およびＲＭ３が、再びアサートされるが、ＲＭ１については、７＋Ｋ＋Ｌ２−Ｌ１＝サイクル２０まで、ＲＭ２については、７＋Ｋ＝サイクル１７まで、ＲＭ３については、７＋Ｋ−（６−４）＝サイクル１５までブロックされる。スライス・アービタ２４によって許可されたスライスからの再ロード・データだけが、実際には再ロード・バス２８上にロードされ、このロードされたデータが、Ｌ４の遅延（この例では、６サイクル）およびスライスのレイテンシーによって決まるサイクルでコアに到来する。
【００４１】
上述の許可された要求に対するデータであるＭ１、Ｍ２およびＭ３がバス・パイプライン２９Ａに表されており、このパイプラインがバス２８Ａ〜２８Ｃからマルチプレクサ２０に入力される有効データを表している。データ有効信号によって、コア実行ユニット１４内のレジスタ（またはマルチプレクサ２０の内部ラッチ）にデータがラッチされる。データ／データ有効信号と、コア・アービタ２２に到来する要求との間の遅延は、本明細書では６サイクルとして示すＬ４である。データは、当該要求が届いてからＬ４サイクル後に、マルチプレクサ２０を介してコア・実行ユニット１４にロードされる。したがって、上に示すように、スライス・アービタ２４にて、表２に従って要求をブロックすることによって、上に示したマルチサイクル動作が終了した直後（サイクル７＋Ｋ）にスライス・アービタ２４によって行われる許可が、直前に終了したマルチサイクル動作を実施したスライスとそれより高いレイテンシーを持つスライスとの間のレイテンシー差による時間が経過するまで拒否され、それによって、コア・アービタ２２によってこうした要求が拒否されることが回避され、その結果、コア・アービタ２２がマルチサイクル動作の後に許可された要求を誤って拒否することがなくなる。
【００４２】
次に図４および５を参照すると、本発明の一実施形態による方法が示されている。データ転送要求がスライス・アービタ２４で受信され（ステップ３０）、その要求が以前の処理でブロックされていない場合には（判断３１）、最高レイテンシーのスライスが許可され（ステップ３２）、それより低いレイテンシーのマルチサイクル要求はすべてブロックされる。最高レイテンシーの要求がマルチサイクル動作でない場合には（判断３３）、デフォルトの単一サイクル処理によってすべての要求元スライスが許可され、供給が、直前に許可されたスライス・データの供給と一致するようなサイクルでは、更なる要求はブロックされる（ステップ３４）。そうでなく、もし最高レイテンシーの要求がマルチサイクル要求である場合は、それより低いレイテンシーの単一サイクル要求は、もしその要求がデフォルトの単一サイクル処理についてのブロッキング・サイクルよりも前に行われた場合に、それは許可される（ステップ３５）。次いで、より低いレイテンシーのスライスからの要求は、最高レイテンシーとそのスライスのレイテンシーとの間のそれぞれの差にに所定のカウンタ値を加えた値による時間が経過するまでブロックされる（ステップ３８）。また最高レイテンシーの（許可された）スライスからの更なる要求は、所定のカウンタ値による時間が経過するまでブロックされる（ステップ４０）。最後に、より高いレイテンシーのスライスからの要求が、所定のカウンタ値から、そのより高いレイテンシーとそのスライスのレイテンシーとの間のそれぞれの差を引いた値による時間が経過するまでブロックされる（ステップ４２）。
【００４３】
コア・アービタ２２では、より低いレイテンシーのマルチサイクル要求が、より高いレイテンシーのマルチサイクル動作が直前に許可された後、カウント値Ｋによる時間が経過するまでの間に届いた場合には、それをキルする（ステップ４３）。さらには、より低いレイテンシーのマルチサイクル要求は、もしそれが、当該より高いレイテンシーの要求と同時に到来するか、または、それより以前であってかつ当該マルチサイクルの要求元のレイテンシーと当該より低いレイテンシーを持つ要求元のレイテンシーとの間の差に等しいサイクル数の範囲内に到来する場合に、それをキルする（ステップ４４）。より高いレイテンシーのマルチサイクル要求は、もしそれが、より低いレイテンシーのマルチサイクル要求と同時に到来するか、または、それより以降であってかつ当該マルチサイクルの要求元のレイテンシーと当該より低いレイテンシーを持つマルチサイクルの要求元レイテンシーとの間の差に等しいサイクル数の範囲内に到来する場合に、それを受け入れる（ステップ４６）。
【００４４】
一般に、上述のスライス・アービタのステップは、スライス・アービタで要求が受信されるのと同時に実施され、上述のコア・アービタについてのステップは、コア・アービタに要求が到来するのと同時に実施されるが、特定の論理設計のために、また、ブロック、キルおよび受入れ動作の特定のタイミングに依存して、それと多少異なることがある。
【００４５】
本発明を、好ましい実施形態を参照して具体的に示し説明したが、本発明の趣旨および範囲を逸脱せずに、前述のまたはその他の、形態および詳細における変更を実施できることは、当業者には理解されるであろう。
【図面の簡単な説明】
【００４６】
【図１】本発明の一実施形態によるプロセッサのブロック図である。
【図２】図１のプロセッサ１０内をさらに詳細に示すブロック図である。
【図３】本発明の一実施形態によるプロセッサ内でのデータ転送動作を示すタイミング図である。
【図４】本発明の一実施形態による方法を示すフローチャートである。
【図５】本発明の一実施形態による方法を示すフローチャートである。
【符号の説明】
【００４７】
１０  プロセッサ
１２  命令シーケンサ・ユニット
１３  プリフェッチ・ユニット
１４  コア実行ユニット
１５  浮動小数点ユニット
１６  キャッシュ・インターフェイス・ユニット
１７  Ｌ１キャッシュ
１８  Ｌ２キャッシュ
１９  バス・インターフェイス・ユニット
２０  マルチプレクサ
２２  コア・アービタ
２４  スライス・アービタ
２６  要求パス
２８Ａ  バス
２８Ｂ  バス
２８Ｃ  バス
２９  要求パイプライン
２９Ａ  データ・パイプライン
【図１】
2004318876.tif 000007
【図２】
2004318876.tif 000008
【図３】
2004318876.tif 000009
【図４】
2004318876.tif 000010
【図５】
2004318876.tif 000011