(57)【特許請求の範囲】
【請求項１】
順不同に命令を実行するコンピュータのシステムであって、
奇数バンクと偶数バンクをもつデータ・キャッシュと、
１プロセッサ・サイクルの間に、対応する複数のキャッシュ・バンクへ複数のアドレスを同時に送るように構成されるプロセッサと、を有し、
該プロセッサは、
命令を取り出すよう構成された命令フェッチ機構と、
前記命令フェッチ機構から命令を受け取るように構成され、前記命令を算術命令およびメモリ命令にソートするように構成されるソート機構と、を備えており、
前記ソート機構から前記メモリ命令を受け取るように構成される待ち行列と、を有し、
該待ち行列は、
各々がアドレスを維持するように、前記アドレスが奇数であるか偶数であるか判断するように、そして前記アドレスが奇数であるか偶数であるかに依存してそれぞれの奇数および偶数要求を生成するように構成される、複数のアドレス並べ替えバッファ・スロットと、
前記奇数および偶数要求をそれぞれ受け取るように、また奇数および偶数アドレスを前記データ・キャッシュへ出力するために前記アドレス並べ替えバッファ・スロットを制御するように構成されるバンク・アービトレーション機構と、を備える、
順不同に命令を実行するコンピュータのシステム。
【請求項２】
順不同に命令を実行するコンピュータの性能を向上するシステムであって、
奇数バンクと偶数バンクをもつデータ・キャッシュと、
プロセッサと、を有し、
該プロセッサは、
命令を取り出す命令フェッチ手段と、
前記命令フェッチ手段から命令を受け取り、前記命令を算術命令およびメモリ命令にソートするソート手段と、
前記ソート手段から前記メモリ命令を受け取る待ち行列手段と、を備えており、
該待ち行列手段は、
各々がアドレスを維持するように、前記アドレスが奇数であるか偶数であるか判断するように、そして前記アドレスが奇数であるか偶数であるかに依存してそれぞれの奇数および偶数要求を生成するように構成される、複数のアドレス並べ替えバッファ・スロットと、
前記奇数および偶数要求をそれぞれ受け取るように、また前記アドレスを１プロセッサ・サイクルの間に前記データ・キャッシュの各バンクへ出力するために前記アドレス並べ替えバッファ・スロットを制御するように構成されるバンク・アービトレーション手段と、を備える、
順不同に命令を実行するコンピュータの性能を向上するシステム。
【請求項３】
順不同に命令を実行するコンピュータのシステムであって、
複数のバンクをもつデータ・キャッシュと、
１プロセッサ・サイクルの間に、対応する複数のキャッシュ・バンクへ複数のアドレスを同時に送るように構成されるプロセッサであって、該アドレスが、奇数バンクおよび偶数バンクに指向される奇数データ・アドレスおよび偶数データ・アドレスを有する、プロセッサと、
命令キャッシュから該命令を取り出す命令フェッチ機構と、
前記命令フェッチ機構から命令を受け取るように構成され、前記命令を算術命令およびメモリ命令にソートするように構成されるソート機構と、
前記ソート機構から前記メモリ命令を受け取るように構成されるメモリ待ち行列と、を有し、
該メモリ待ち行列は、
各々がアドレスを維持するように、前記アドレスが奇数であるか偶数であるか判断するように、そして前記アドレスが奇数であるか偶数であるかに依存してそれぞれの奇数および偶数要求を生成するように構成される、複数のアドレス並べ替えバッファ・スロットと、
前記奇数および偶数要求をそれぞれ受け取るように、またデータを前記データ・キャッシュへ出力するために前記アドレス並べ替えバッファ・スロットを制御するように構成される奇数および偶数バンク・アービトレータと、を備える、
順不同に命令を実行するコンピュータのシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にコンピュータ・プロセッサ・アーキテクチャに関し、特に、順不同に命令を実行するプロセッサからデータ・キャッシュへのアドレスのスループットを増加させ、それによって性能を高めるアドレス集合システムおよび方法に関する。
【０００２】
【従来の技術】
一般に、コンピュータ・プロセッサ(処理ユニット)は、システムの演算を指示する制御ユニット、および計算演算を実施する算術論理ユニット(ALU)からなる。プロセッサの設計は、１つまたは複数のレジスタ組の選択、これらレジスタ間の通信経路、およびこれらがどのように動作するか指示し、制御する手段を伴う。普通、プロセッサは、主メモリに保有される一連の命令からなるプログラムによって指示される。各々の命令は、通常長さが１または複数ワードの１グループのビットであり、プロセッサによって実行される演算を明示する。一般に、プロセッサの基本サイクルは、(a)命令を主メモリから命令レジスタへフェッチするステップと、(b) その命令を解読する(すなわちそれが示すなされるべきことを判断する。各々の命令は、実施される演算および演算が適用されるデータを示す)ステップと、(c)その命令によって明示される演算を実行するステップと、(d)次の命令が位置するところを判断するステップとを含む。普通、次の命令とは、現在の命令のすぐ後に続くものである。
【０００３】
しかし、２またはそれ以上のスカラ演算が並行に実施されるスーパースカラ・プロセッサのような高性能なプロセッサにおいて、プロセッサは、順不同である、またはプロセッサを駆動するソフトウェアによって規定される順序と一貫しない順序である命令を実施するように設計されることができる。これらのシステムで、命令は、それらがプログラムによって規定されるシーケンスに現れるときに対し、それらが実行されることができるときに実行される。さらに、順不同の命令の実行の後、その結果は、命令の順序と一致するように最終的に並べ替えられる。
【０００４】
性能を最適化するために、キャッシュ・メモリがしばしばコンピュータのプロセッサに関連して用いられる。キャッシュ・メモリは、コンピュータのプロセッサと主メモリの間に位置する高速なバッファである。プロセッサで現在使用中のデータおよび命令は、キャッシュ・メモリへ移動させられ、それによって２つの利益をもたらす。第１に、プロセッサのメモリ要求に関する平均アクセス時間が低減され、プロセッサのスループットを増加させる。第２に、それによって利用可能なメモリ帯域幅のプロセッサの利用が低減されるので、システム・バス上のその他のデバイスは、プロセッサのじゃまをすることなくメモリを使用することができる。このようにキャッシュ・メモリは、主メモリからプロセッサへの命令およびデータのフローの速度を上げるために使用される。主メモリのサイクル時間は、典型的にプロセッサのクロッキング速度よりも遅いので、このキャッシュ・ファンクションが重要である。
【０００５】
プロセッサがあるデータラインについてデータ・キャッシュにアクセスするとき、プロセッサはそのキャッシュにアドレスを送る。キャッシュは、アドレスからキャッシュ索引を解析し、所望のデータラインを含みうる１つまたは複数の記憶位置を選択するためにそれを使用する。キャッシュは、いくつかの設計で、１または複数の位置に対応する実ページ番号(RPN)であるタグ、およびそのタグに対応するデータラインが有効であるか無効であるかを示すステータス・インジケータ(indicator)を出力する。
【０００６】
典型的にキャッシュに関連する支援回路は、ステータス・インジケータおよびタグを受け取る。ステータス・インジケータが無効データを示すとき、支援回路は「ミス(miss)」表示をプロセッサに送り、その場合、プロセッサはそのデータラインについて主メモリをアクセスしなければならない。ステータス・インジケータが有効データを示すとき、支援回路は、キャッシュが所望のデータラインを現在格納しているか判断するために、タグをアドレスの残りのものと比較する。キャッシュが、タグの比較によって判断されるように要求されるデータラインを持たないとき、支援回路は、「ミス」表示をプロセッサに送り、その場合、プロセッサはそのデータラインについて主メモリをアクセスしなければならない。キャッシュが、タグの比較によって判断されるように要求されるデータラインを持つとき、支援回路は、「ヒット(hit)」表示をプロセッサに送り、要求されるデータラインを読み取るようにプロセッサを促進する。
【０００７】
命令の順不同の実行を実施するプロセッサでは、データ・キャッシュへの複数の同時のアクセスを行ない、プロセッサからキャッシュ・メモリへのスループットおよびプロセッサの速度全体を高めることが望ましい。１つのポートがキャッシュ・メモリへの各々のアクセスに対応する複数のポートを持つキャッシュ・メモリを利用することが可能である。しかしこの解法は、これらのキャッシュの設計が高価であるため望ましくなく、大きいオフチップ・キャッシュを実現する安価なプロセッサおよびコンピュータの大量生産には適さない。
【０００８】
【発明が解決しようとする課題】
本発明の目的は、上述されるような従来技術の不適当な点および不足した点を克服することである。
【０００９】
本発明の別の目的は、順不同に命令を実行するプロセッサの性能を改善することである。
【００１０】
本発明の別の目的は、コンピュータのプロセッサに関連するデータ・キャッシュ(DCACHE)への複数のアクセスを安価に実現するシステムおよび方法を提供することである。
【００１１】
本発明の別の目的は、プロセッサによるDCACHEのアドレッシングおよびDCACHEからプロセッサへのデータ転送の効率を増大させるシステムおよび方法を提供することである。
【００１２】
本発明の別の目的は、DCACHEから関連するプロセッサへのデータのスループットを増加させ、信頼性を保証するシステムおよび方法を提供することである。
【００１３】
【課題を解決するための手段】
簡単に言うと、本発明は、プロセッサに関連するDCACHEの読み取りポートの使用を最大限にすることによって、順不同に命令を実行するプロセッサの性能を高めるアドレス集合システムを提供する。本質的に、プロセッサは、例えばメモリ待ち行列(MQUEUE)のような命令並べ替え機構の命令によって生成される複数のアドレスを、ランダム・アクセス・メモリ(RAM)のような対応する単一ポートの記憶装置からなるそれぞれのキャッシュ・バンクに送るように構成される。好ましい実施例で、奇数メモリ・アドレスおよび偶数メモリ・アドレスは、各々のサイクルの間に同時にDCACHEに送られる。
【００１４】
アーキテクチャで、プロセッサは、命令キャッシュ(ICACHE)、ICACHEから命令を取り出す命令フェッチ機構(IFETCH)、IFETCHから命令を受け取り、その命令を算術命令およびメモリ命令にソートするソート機構、およびソート機構からメモリ命令を受け取り、順不同に命令を実行することを許すMQUEUEのような並べ替え機構を含む。MQUEUEは、複数のアドレス並べ替えバッファ・スロット(ARBSLOT)、奇数バンク・アービトレータおよび偶数バンク・アービトレータを含む。ARBSLOTの各々は、アドレスを維持し、アドレスが奇数であるか偶数であるか判断し、アドレスが奇数であるか偶数であるかに依存して、それぞれの奇数または偶数要求のいずれかを生成する。奇数および偶数バンク・アービトレータは、それぞれ奇数および偶数アドレスに関連する要求を受け取り、アドレスをキャッシュへ出力するようにスロットを制御する。
【００１５】
またこの発明は、プロセッサでデータ・アドレスを処理し、プロセッサからデータ・キャッシュへのデータ・アドレスのスループットを増加させる新しい方法を提供する。広く概念化されるような方法は、キャッシュに複数の独立したバンクを維持するステップと、プロセッサでデータ・アドレスを集めるステップと、データ・アドレスの各々をバンクの中の特定の一つに割り当てるステップと、プロセッサの１サイクルの間に、バンクの各々にアドレスを伝達するステップとを含む。
【００１６】
【発明の実施の形態】
図１に示されるように、本発明のアドレス集合システム80(より詳しくは図３を参照)および関連する方法は、コンピュータ11内で実現され、特に、プロセッサ14内の命令フェッチ/実行システム12のメモリ待ち行列(MQUEUE)38b、およびコンピュータ11のプロセッサ14に接続されるデータ・キャッシュ(DCACHE)24に関連する。一般に、コンピュータ11は、プロセッサ14、プロセッサ14を駆動するソフトウェア(S/W)18をもつ主メモリ16、参照矢印23で示されるように、プロセッサ14と相互接続するランダム・アクセス・メモリ(RAM)のような単一ポートの記憶装置の形式のDCACHE24、およびプロセッサ14および主メモリ16と相互接続する１または複数のバスのようなシステム・インターフェース22からなる。演算において、プロセッサ14の命令フェッチ/実行システム12がソフトウェア18を実行するとき、プロセッサ14で現在使用中のデータは、MQUEUE38bの命令の制御によってDCACHE24へ転送され、それによってプロセッサのメモリ要求に関する平均アクセス時間を減少させ、システム・インターフェース22のトラフィックを最小限にする。最後に、新しいアドレス集合システム100を除いては、前述のコンピュータ構成要素およびそれらの相互作用はすべて従来技術でよく知られており、理解されていることを述べなければならない。
【００１７】
DCACHE24の典型的なキャッシュ・ラインは、タグ、ステータス・インジケータおよびデータを含む。所望のデータラインを含みうる１つまたは複数の記憶位置を選ぶために、キャッシュ索引が、DCACHE24に送られ、DCACHE24で使用される。キャッシュ索引の受領に応答して、DCACHE24は、１つまたは複数の位置に対応し、好ましい実施例において実ページ番号(RPN)であるタグ、タグに対応するデータラインが有効であるか無効であるか示すステータス・インジケータ、および有効または無効でありうるデータを出力する。典型的に、ステータス・インジケータは以下の状態を示す。「無効」は、存在するデータがないことを意味する。「有効、共有(valid shared)」は、データは存在するが、どこかほかに位置することがありえることを意味する。「有効、専有、クリーン(valid private clean)」は、ラインが唯一のコピーをもち、DCACHE24がまだラインに書き込みをしていないことを意味する。「有効、専有、ダーティ(valid private dirty)」は、ラインが唯一のコピーをもち、DCACHE24がすでにラインに書き込みをしている(従ってラインを主メモリ16へコピーする必要がある)ことを意味する。
【００１８】
DCACHE24に関連するタグ比較機構228(図示せず)は、ステータス・インジケータおよびタグを受け取る。ステータス・インジケータが無効データを示すとき、タグ比較機構は、「ミス」表示をプロセッサ14へ送り、その場合プロセッサ14は、そのデータラインについて主メモリ16にアクセスする。ステータス・インジケータが有効なデータを示すとき、タグ比較機構は、DCACHE24が所望のデータラインを現在格納しているかどうか判断するために、タグをアドレスの残りのものと比較する。DCACHE24が、タグ比較によって判断されるように、要求されるデータラインを持たないとき、タグ比較機構は、「ミス」表示をプロセッサ14へ送り、その場合プロセッサ14は、そのデータラインについて主メモリ16をアクセスする。DCACHE24が、タグ比較によって判断されるように、要求されるデータラインをもつ場合、タグ比較機構は、「ヒット」表示をプロセッサ14へ送り、要求されるデータラインを読み取るようにプロセッサ14を促進する。
【００１９】
命令フェッチ/実行システム12の可能な実施例が、図２のブロック図によって示される。図２で示すように、命令フェッチ/実行システム12は、命令をソフトウェア18(図１)から格納する命令キャッシュ(ICACHE)26をもつ。命令フェッチ機構(IFETCH)28はICACHE26と連絡し、最終の実行のためにICACHE26から命令を取り出す。好ましい実施例では、IFETCH28は、一度に４命令(各々３２ビット)をフェッチし、その命令をソート機構32へ転送する。
【００２０】
ソート機構32は、各々の命令が、算術論理ユニット(ALU)またはメモリのどちらに向けられているか判断し、それに応じて、対応する参照矢印36a、36bで示されるように命令を算術論理ユニット待ち行列(AQUEUE)38aおよびMQUEUE38bへそれぞれ分配する。
【００２１】
AQUEUE38aは複数のALU命令処理機構39a(好ましい実施例で数は28)を含み、それらは、参照矢印43で示されるように算術論理ユニット42へ指示されるそれぞれの命令を格納するレジスタ41aを持つ。AQUEUE38aの命令は、任意の可能な順序で(好ましくはデータフロー形態で)実行され、それらが完了するとき、その結果が捕らえられ、完了とマークされる。
【００２２】
AQUEUE38aによって制御されるALU42は、インターフェース45で示されるように、リネーム(rename)・レジスタ44a、44bおよび汎用レジスタ46からオペランドを取り出すことができる。ALU42がオペランド上に演算したあと、演算の結果は、参照矢印49で示されるように、AQUEUEリネーム・レジスタ44aに格納される。
【００２３】
MQUEUE38bは、複数の命令処理機構39bを含む。それぞれの命令処理機構39bは、それぞれのメモリ命令を格納するレジスタ41bを含み、また参照数字48によって表示される、それぞれのアドレスを格納するアドレス並べ替えバッファ・スロット(ARBSLOT、好ましい実施例で数は28である)を含む。MQUEUE38bの中のメモリ命令は、メモリへの「ロード」および「格納」として分類されることができる。「ロード」は、データをメモリ(DCACHE24または主メモリ16)からレジスタへ転送する要求であり、「格納」は、データをレジスタからメモリへ転送する要求である。
【００２４】
命令の実行の間に、第１のフェーズは、アドレスを計算するために、規定される数学的演算をオペランドに実行することを伴い、第２のフェーズは、計算されたアドレスに基づくデータについてメモリ/キャッシュをアクセスすることを伴う。MQUEUE38bは、任意の可能な順序で(好ましくはデータフロー形態で)各々の命令および実行の２つのフェーズ(アドレス計算およびメモリ/キャッシュ・アクセス)を実行する。命令が完了すると、その結果は、MQUEUEリネーム・レジスタ44bによって捕らえられ、命令は、MQUEUE38bで完了とマークされる。好ましい実施例において、MQUEUE38bは、１サイクルあたり４命令(各々３２ビット)までをソート機構32から受け取り、参照矢印51bによって示されるように、１サイクルあたり２命令(３２ビット)までを退去機構52へ転送する。
【００２５】
より詳しくは、命令の実行の第１フェーズの間に、アドレスはアドレス計算器58によって生成される。アドレス計算器58は、リネーム・レジスタ44bから取り出されるオペランドに基づいてアドレスを計算し、参照矢印62で示されるように、MQUEUE38bの中の命令に対応するARBSLOT48へ(実または仮想)アドレスを渡す。命令による計算の制御は、図２の参照矢印64で示される。メモリの命令の実行の第２フェーズが遂行されるとき、計算されたアドレス(キャッシュ索引を含む)が、参照矢印54で示されるようにDCACHE24へ転送され、DCACHE24でロードまたは格納を達成する。好ましい実施例では、可能であれば２つのアドレスが、各々のサイクルにMQUEUE38bからDCACHE24へ転送される。DCACHE24がアドレスを処理すると、データ結果は、参照矢印56で示されるようにリネーム・レジスタ44bへ転送される。
【００２６】
退去機構52は、参照矢印51a、51bで示されるように、待ち行列38a、38bの各々から実行された命令を受け取る(好ましくは１サイクルあたり２つの32ビット)。退去機構52は、命令の結果をアーキテクチャの状態に付する。ソフトウェア18(図１)は、退去機構52によってアーキテクチャの状態に変換されない結果には気付かない。退去機構52は、それぞれ参照矢印73、74で示されるように、命令の結果を命令の属性に依存して汎用レジスタ46および/または制御レジスタ72へ移動させることにより、ソフトウェア18によって規定されるプログラムの順序で待ち行列38a、38bの命令を退去させ、そして参照矢印76a、76bで示されるように、命令の結果がリネーム・レジスタ44a、44bから汎用レジスタ46へ渡される。
【００２７】
退去機構52がDCACHE24のデータラインへの格納をもたらす命令を退去させるとき、退去機構52は、データラインをDCACHE24へ送り、ラインに対応するステータス・インジケータに「ダーティ」とマークし、ラインが変わり、主メモリ16でのラインを更新するために最終的に主メモリ16に送られなければならないことを示す。
【００２８】
また退去機構52は、命令に関連する例外があるかどうか判断するための論理をもつ。例外とは、現在退去させている命令の１つに対応する特別な状況を示すフラグである。例外が起きた場合、退去機構52は、例外を示した命令の後に続く待ち行列38a、38b内のすべての命令を捨て、IFETCH28に、再実行のために未解決の命令をもう一度取り出させる、または特別な状況を扱うための特別なソフトウェアを取り出させる。
【００２９】
アドレス集合システムおよび方法
ここで本発明のアドレス集合システム80が、図３を参照して記述される。アドレス集合システムに従って、プロセッサ14は、複数のアドレスを、DCACHE24を形成する対応する単一ポートの記憶装置のそれぞれのキャッシュ・バンクへ送るように構成される。好ましい実施例で、奇数メモリ・アドレスおよび偶数メモリ・アドレスは、各サイクルの間に同時にDCACHEの奇数および偶数キャッシュへ送られる。
【００３０】
アドレス集合システム80は、図３に示されるように、主にMQUEUE38bに位置する資源を通って実現される。アドレス計算器28は加算器82a、82bを伴い、それらの各々は、リネーム・レジスタ44bから２つの入力オペランド84(図１の参照矢印45)を受け取る。加算器82a、82bは、それらそれぞれの入力オペランド84に演算して、アドレス62a、62bをそれぞれ生成する。
【００３１】
この発明に従って構築されるMQUEUE38bは、１つが各々のアドレスを格納する複数のARBSLOT48を含む。好ましい実施例では、28のARBSLOT48があるが、任意の数が用いられることができる。奇数バンク・アービトレータ84aおよび偶数バンク・アービトレータ84bは両方とも、それぞれ矢印86a、86bで示されるように、ARBSLOT48の各々と連絡する。典型的に、２つのアドレスが各サイクルの間にMQUEUE38bによってDCACHE24へ送られ、好ましい実施例では、一方が奇数であり、他方が偶数である。奇数および偶数アドレスは、参照矢印88a、88bによって示されるようにそれぞれARBSLOT48から出力される、またはバイパス・パス92a、92bから出力される。本質的に、バイパス・パス92a、92bはそうするように制御されるとき、それぞれの入力62a、62b上のアドレスを直接DCACHE24へ送る。バイパス・パス92a、92bは、DCACHE24へ転送される準備をしている有効なアドレス(奇数または偶数キャッシュポートのいずれかに関する)がないときに利用されるので、サイクルが消費されず、高性能が達成される。
【００３２】
MQUEUE38bの各々の命令は、その依存の状態がいったんクリアになると、そのアドレスを計算する。アドレスが計算されると、命令はこのステータスを示し、アドレスがDCACHE24へ送り出されるようにMQUEUE38bに要求する。裁定(arbitration)論理、すなわち命令に対応するアドレスが奇数であるか偶数であるかに依存する奇数バンク・アービトレータ84aまたは偶数バンク・アービトレータ84bはいずれも、アドレスをDCACHE24に送り出すときおよび送り出すかどうかを判断する。対応するアービトレータ84a、84bは、最も古いアドレス(奇数または偶数のいずれも)を選び、最も古いものを送り出す。
【００３３】
MQUEUE38bの命令は、オペランドが利用可能になるとき、順不同に実行する。それゆえ、アドレスは順不同に計算され、MQUEUE38bによって受け取られるアドレスは順不同でありえる。しかし、MQUEUE38bからDCACHE24へ送られるアドレスの順序は、ソフトウェア18(図１)によって規定される順序で優先順位をつけられる。この実施例は、優先順位が最も古い命令に与えられるので性能の利点をもたらし、その形状は、アドレスをソフトウェア18(図１)へ最適にインターフェースする。
【００３４】
さらに図３に示されるように、マルチプレクサ機構93は、MQUEUE38bからの直接のおよびバイパスのパスを扱う。マルチプレクサ機構93は、アドレス88a、92aおよび88b、92bをそれぞれMQUEUE38bから受け取るマルチプレクサ(MUX)94a、94bを含む。本質的に、マルチプレクサ94a、94bは、アドレスがARBSLOT48からDCACHE24に伝達されるか、または代替としてアドレスがバイパス・パス92a、92bからDCACHE24に伝達されるかを制御する。マルチプレクサ94a、94bは、参照矢印96で示されるように奇数または偶数アービトレータ84a、84bによって制御される。マルチプレクサ94a、94bは、参照矢印99a、99bで示されるように、選ばれたアドレスをそれぞれの奇数および偶数バンク98a、98bへ転送する。典型的な演算で、奇数アドレスおよび偶数アドレスは、１サイクルの間にDCACHE24へ転送される。時には奇数または偶数アドレスのどちらかのみ利用可能であり、その場合、１つの奇数または偶数アドレスだけが特定のサイクルの間にDCACHE24へ転送される。しかし、上述の筋書きはまれである。最後に、マルチプレクサ94a、94bは、DCACHE24のポートを要求するARBSLOT48がないときにバイパス・パス92a、92bを選ぶように制御される。
【００３５】
アドレスを奇数および偶数組にソートし、アービトレータ84a、84bに関する要求を生成するための、各々のARBSLOT48に関連する論理が、図４に明らかにされる。図４を参照して、各々のアドレスは、ARBSLOTレジスタ104に格納される。各々のアドレスは、DCACHE24にアクセスするためのキャッシュ索引101、１つまたは複数の奇数/偶数(Ｏ/Ｅ)ビット102、DCACHE24と相対的なバイト・オフセットを構成する複数のビット103を含む。典型的に、キャッシュがアクセスされるとき、バイト・オフセット103は無視される。上述の要素は、好ましい実施例において連続している。
【００３６】
各々のARBSLOT48は、レジスタ104のＯ/Ｅビット102を調べて、ミスに従属する(dependent-on-miss、ＤＭ)入力114の反転(〜ＤＭ)と、キャッシュ・アドレス有効入力(CA_VALID)116と、アービトレータ84aについて奇数要求107またはアービトレータ84bについて偶数要求109を導出する、またはどちらも導出しないためのキャッシュ未決定入力(ＣＰ)118とを受け取る。アーキテクチャに関して、ARBSLOT48の論理は、ＤＭ入力から〜ＤＭを生成するためのインバータ112、Ｏ/Ｅビット102から〜Ｏ/Ｅを生成するためのインバータ113、奇数要求を生成するためのＡＮＤ論理106、偶数要求109を生成するためのＡＮＤ論理108を含む。奇数および偶数の要求107、109は、それぞれ奇数および偶数アービトレータ84a、84bへ送られる(図３)。
【００３７】
ＡＮＤ論理106への入力は、Ｏ/Ｅビット102、信号〜ＤＭ114'、このARBSLOT48レスが有効アドレスを含むか含まないかを示す信号CA_VALID116、アドレスがDCACHE24へ送られる必要があるかないかを示す信号ＣＰ118である。信号CA_VALID116およびCP118は両方とも、生成される要求107、109について順にアサートされなければならない。ARBSLOT48が、DCACHE24にはないがすでに主メモリ16(図１)から要求されているデータを現在必要とするとき、ＤＭ入力114がアサートされる(〜ＤＭはアサートから外される(deasserted))。このミスデータに従属するすべてのARBSLOT48は、アサートされるＤＭ入力114を与えられ、対応するARBSLOT48は、主メモリ16からデータを要求することを控える。例として、ＤＭ入力114を生成するために利用されうる回路は、この発明者によって、同日に出願されている「Miss Tracking System And Method」というタイトルの同時継続出願特許の明細書に詳細に記述されている。
【００３８】
偶数要求109を生成するＡＮＤ論理108は、〜Ｏ/Ｅ102、〜ＤＭ114'、CA_VALID116およびＣＰ118を受け取る。上述の信号すべてがアサートされるとき、ＡＮＤ論理108は、偶数アービトレータ84bについて偶数要求109を生成する。
【００３９】
各々の奇数および偶数バンク・アービトレータ84a、84b(図３)の可能な実現に関連する特定の論理が、図５ないし図８を参照して詳細に述べられる。簡潔にするために、アービトレータ84a、84bのうちの一方だけに関する論理が、図５ないし図７に示され、この後に記述されるが、論理は他方に関しても大体同じであることが理解されなければならない。
【００４０】
好ましい実施例で、図５のアービトレータ84は、MQUEUE38b内に位置する最も古い命令を判断し、送り出すように設計される。ARBSLOT48はそれぞれ、１つの要求(REQ[27:0]のうちの１つ)を各々のアービトレータ84に提供する。これらの要求REQ[27:0]に基づいて、アービトレータ84(奇数または偶数)は、各サイクルの間に１つのARBSLOT48(奇数または偶数)にのみアドレスを送り出す能力を許可する。この点で、アービトレータ84は、ARBSLOT48にそれぞれGRANT[27:0]を与える。
【００４１】
アーキテクチャにおいて、図５に示されるように、各々のアービトレータ84は、最も古い８要求のグループ(すなわちREQ[27:24]、REQ[23:16]、REQ[15:8]、REQ[7:0]のうちの１つ。好ましい実施例ではARBSLOT48および命令は２８しかないので、４番目のグループは４しかもたないことに注意されたい)を判断するための最も古い論理121を含む。最も古い論理121は、４つの退去ポインタRET[25, 17, 9, 1]を受け取り、参照矢印122で示されるように、１つがそれぞれの８要求のグループに対応する４つの信号OLD[3:0]を出力する。退去ポインタRET[27:0]は、退去すべき次の２命令が位置するところを示す。所与の時間に、上述の退去ポインタのうち２つがアサートされ、それによって最も古い要求REQ[27:0]を示す。本質的に、退去ポインタRET[27:0]は、アサートされる変数(「1」)を含むチェーンの中の２つのラッチをもつ循環シフト・チェーンから生成され、それら退去ポインタの各々は、関連するMQUEUE命令が退去するときは必ず、アサートから外される変数(「0」)へ移行する。
【００４２】
下位完了(low done)論理124は、最も古い要求のグループの最初の半分が送り出しを完了したかどうか判断する。例えば、要求REQ[7:0]が最も古いグループであると仮定する。この筋書きで、下位完了論理124は、要求REQ[3:0]がすでに退去しているかどうか判断する。下位完了論理124は、それに入力される入力退去ポインタRET[25, 21, 17, 13, 9, 5, 1]に基づいて、参照矢印126で示されるように、この情報を示す１つの信号(LOW_DONE)を出力する。
【００４３】
各々の４要求のグループ(すなわちREQ[27:24, 23:20, 19:16, 15:12, 11:8, 7:4, 3:0]は、グループに集められ、ＯＲ論理へ送られる。簡潔にするために、最初の２つの４要求のグループ([REQ[7:4, 3:0])のみ図５に示される。図示されるように、参照番号131-134、136-139で示される各々の４要求のグループ(REQ[7:4、3:0])は、それぞれＯＲ論理141、142へ伝達され、参照数字143、144で示されるように対応する信号REQOR[0]、REQOR[1]を生成する。ゆえにＯＲ演算は、REQOR[27:0]に基づいてREQOR[6:0]をもたらす。
【００４４】
許可判断論理146は、REQ[27:0]に基づく信号OLD[3:0]122、LOW_DONE126、およびREQOR[6:0]を受け取る。上述の信号の論理状態に基づいて、許可判断論理146は、対応する許可信号GRANT[27:0]の１つをアサートすることにより、ARBSLOT48の１つからアドレスを送り出す。
【００４５】
最も古い論理の好ましい実施例は、図６で明らかにされる。図６に示されるように、最も古い論理121は、退去ポインタRET[25, 17, 9, 1]に基づいて、どの８要求のグループが最も古いかを示すために１ビットを設定する循環変化チェーン161を実現する。チェーン161は、退去ポインタRET[1] 164によって作動し、最も古い信号OLD[0] 168を提供するマスター/スレーブ・ラッチ(Ｍ/Ｓ)166に接続されるトランジスタ162と、退去ポインタRET[9] 174によって作動し、Ｍ/Ｓラッチ166と最も古い信号OLD[1] 178を提供するＭ/Ｓラッチ176の間に接続されるトランジスタ172と、退去ポインタRET[17] 184によって作動し、Ｍ/Ｓラッチ176と最も古い信号OLD[2] 188を提供するＭ/Ｓラッチ186の間に接続されるトランジスタ182と、退去ポインタRET[25] 194によって作動し、Ｍ/Ｓラッチ186と最も古い信号OLD[3] 198を生成するＭ/Ｓラッチ196の間に接続されるトランジスタ192とを含む。対応する参照数字164、174、184、194で示される退去ポインタRET[25, 17, 9, 1]は、退去すべき次の２命令が位置するところを示すことを思い出されたい。所与の時間に、OLD[3:0]の１つがアサートされ、最も古い８要求の組を示す。
【００４６】
下位完了論理124の好ましい実施例は、図７に示される。図７を参照して、下位完了論理124は、それぞれの参照数字201-208によって示される退去ポインタRET[29, 25, 21, 17, 13, 9, 5, 1]の状態に基づいて、信号LOW_DONE126を生成する。下位完了論理124はラッチ211を含み、それは、その設定(SET)およびクリア(CLR)入力でそれぞれ退去ポインタRET[9,5] 201、202を受け取り、ワイヤ-ＯＲ出力126に接続されるソース216を持つトランジスタ214を作動させる出力212を生成する。ラッチ221は、その設定およびクリア入力でそれぞれ退去ポインタRET[17, 13] 203、204を受け取り、ワイヤ-ＯＲ出力126に接続されるソース226をもつトランジスタ224を作動させる出力222を生成する。ラッチ231は、その設定およびクリア入力でそれぞれ退去ポインタRET[25, 21] 205、206を受け取り、ワイヤ-ＯＲ出力126に接続されるソース236をもつトランジスタ234を作動させる出力232を生成する。ラッチ241は、その設定およびクリア入力で退去ポインタRET[27, 1]207、208を受け取り、ワイヤ-ＯＲ出力126に接続されるソース246をもつトランジスタ244を作動させる出力242を生成する。前述の配置によって、下位完了論理124は、最も古い８のグループのどちらの半分がすでに退去しているか判断する。
【００４７】
最も古い命令を識別する必要はなく、最も古い４命令の組を識別しさえすればよいことに留意されたい。最も古い命令と最も若い有効な命令の間には常にギャップがあり、この論理は必ずしも最も古い命令を選択する必要がないので、これで十分である。
【００４８】
許可判断論理146(図５)を実現する好ましい実施例が、図８で詳細に明らかにされる。図８を参照すると、許可判断論理146は、入力OLD[3:0]、LOW_DONEおよびREQOR[6:0]を受け取る資格(qualify)論理252を含む。資格論理252は、図８に示されるように、上述の入力に基づいてブール方程式およびＯＲ論理254、256を実現し、一連の資格信号QUAL[6:0]を生成する。簡潔にするために、最初の８要求REQ[7:0]についてのブール方程式と、参照数字258、259で示されるようにそれらの対応する結果の資格信号QUAL[1:0]のみが図８に示される。しかし、ブール方程式のパターンは、繰り返し行われる。資格信号QUAL[6:0]は、どの４要求のグループが、次の送り出し許可について注目されるかを示す。したがって、要求REQ[7:0]のケースでは、資格信号QUAL[1,0]は、どの４要求が(REQ[7:4]またはREQ[3:0]のどちらが)送り出しを許可するために次に注目されるべきか示す。
【００４９】
さらに許可判断論理146は、複数のＡＮＤ論理機構を含み、簡潔にするために参照数字261-268で示されるように、最初の８つだけが図示されている。最初の８つのＡＮＤ論理機構261-268は、GRANT[7:0]を生成するために、資格信号QUAL[1:0]、REQ[7:0]および〜REQ[6:0]を評価する。
【００５０】
より詳しくは、ＡＮＤ論理261は、資格信号QUAL[0]および要求REQ[0]を受け取り、それに基づいて、最初のARBSLOTが送り出すか否か判断する許可信号GRANT[0]を生成する。ＡＮＤ論理262は、要求REQ[1]、〜REQ[0]およびQUAL[0]を受け取り、参照数字152で示されるように、対応するARBSLOT48が送り出すときを判断するために対応するARBSLOT48に送られる許可信号GRANT[1]を生成する。ＡＮＤ論理263は、要求REQ[2]、〜REQ[1]、〜REQ[0]およびQUAL[0]を受け取り、それに基づいて、参照数字153で示されるように、対応するARBSLOT48が送り出すときを判断するために対応するARBSLOT48に送られる許可信号GRANT[2]を生成する。ＡＮＤ論理264は、REQ[3]、〜REQ[2]、〜REQ[1]、〜REQ[0]およびQUAL[0]を受け取り、それに基づいて、参照数字154で示されるように、対応するARBSLOT48が送り出すときを判断するために対応するARBSLOT48に送られる許可信号GRANT[3]をする。ＡＮＤ論理265は、REQ[4]およびQUAL[1]を受け取り、それに基づいて、参照数字155で示されるように、対応するARBSLOT48が送り出すときを判断するために、対応するARBSLOT48に送られる許可信号GRANT[4]を判断する。ＡＮＤ論理266は、REQ[5]、〜REQ[4]およびQUAL[1]を受け取り、それに基づいて、参照数字156で示されるように、対応するARBSLOT48が送り出すときを判断するために対応するARBSLOT48に送られる許可信号GRANT[5]を判断する。ＡＮＤ論理267は、REQ[6]、〜REQ[5]、〜REQ[4]、およびQUAL[1]を受け取り、それに基づいて、参照数字157で示されるように、対応するARBSLOT48が送り出すときを判断するために対応するARBSLOT48に送られる許可信号GRANT[6]を生成しする。ＡＮＤ論理268は、REQ[7]、〜REQ[6]、〜REQ[5]、〜REQ[4]およびQUAL[1]を受け取り、それに基づいて、参照数字158で示されるように、対応するARBSLOT48がそのアドレスを送り出すときを判断するために対応するARBSLOT48に送られる許可信号GRANT[7]を生成する。
【００５１】
上述した発明の好ましい実施例に、多くの変形や修正が行われることができる。例として、プロセッサ14の待ち行列38a、38bは、予約ステーションを含む適当な命令並べ替え機構によって置き換えられることができる。
【００５２】
本発明は例として次の実施態様を含む。
（１）順不同に命令を実行するコンピュータ(11)のシステム(80)であって、
複数のバンク(98a、98b)をもつデータ・キャッシュ(24)と、
１プロセッサ・サイクルの間に、複数のアドレスを、対応する複数のキャッシュ・バンク(98a、98b)へ同時に送られるように構成されるプロセッサ(14)と、
を備える上記システム。
（２）上記アドレスが、奇数バンク(98a)および偶数バンク(98b)に指向される奇数データ・アドレスおよび偶数データ・アドレスをもつ、
上記(1)のシステム(80)。
（３）順不同に命令を実行し、上記順不同の命令に従って上記データ・アドレスを受け取る、上記プロセッサ(14)に関連する手段(48)を備える、
上記(1)のシステム(80)。
【００５３】
（４）上記プロセッサ(14)は、
命令キャッシュ(26)と、
上記命令キャッシュ(26)から命令を取り出す命令フェッチ機構(28)と、
上記命令フェッチ機構(28)から命令を受け取るように構成され、上記命令を算術命令およびメモリ命令にソートするように構成されるソート機構(32)と、
各々がアドレスを維持するように、上記アドレスが奇数であるか偶数であるか判断するように、そして上記アドレスが奇数であるか偶数であるかに依存してそれぞれの奇数および偶数要求(86a、86b)を生成するように構成される、複数のアドレス並べ替えバッファ・スロット(48)をもつ、上記ソート機構(32)から上記メモリ命令を受け取るように構成される上記メモリ待ち行列(38b)と、
上記奇数および偶数要求(86a、86b)をそれぞれ受け取るように、またデータを上記データキャッシュ(24)へ出力するために上記アドレス並べ替えバッファ(48)を制御するように構成される奇数および偶数バンク・アービトレータと、
を備える、上記(2)のシステム(80)。
【００５４】
（５）上記キャッシュが複数の単一ポートのランダム・アクセス・メモリを含む、上記(2)のシステム(80)。
（６）上記奇数および偶数バンク・アービトレータは、上記奇数および偶数の命令のうちのどれがそれぞれ最も早く受け取られるかを判断するように構成され、また上記最も早い奇数および偶数の命令が上記データキャッシュ(24)に一緒に送られるように構成される、
上記(4)のシステム(80)。
【００５５】
（７）プロセッサ(14)でデータ・アドレスを処理し、プロセッサ(14)からデータ・キャッシュ(24)へのデータ・アドレス(99a、99b)のスループットを増加させる方法(80)であって、
上記キャッシュに複数の独立したバンク(98a、98b)を維持するステップと、
上記プロセッサ(14)でデータ・アドレス(62a、62b)を集めるステップと、
各々の上記データ・アドレス(99a、99b)を上記バンク(98a、98b)の特定の一つに割り当てるステップと、
上記プロセッサ(14)の１サイクルの間に、アドレス(99a、99b)を上記バンク(98a、98b)の各々に伝達するステップと、
を含む上記方法(80)。
【００５６】
（８）さらに、
上記データ・アドレス(99a、99b)を上記プロセッサ(14)の奇数および偶数データ・アドレス(99a、99b)へソートするステップと、
上記プロセッサ(14)の上記１サイクルの間に、奇数データ・アドレス(99a)、その後に偶数データ・アドレス(99b)を伝達するステップと、
を含む、上記(7)の方法。
（９）さらに、
上記キャッシュ(24)の各々の上記バンク(98a、98b)について単一ポートのランダム・アクセス・メモリを利用するステップと、
を含む、
上記(7)の方法(80)。
（１０）さらに、
順不同に命令を実行するステップと、
上記順不同の命令に従って上記データ・アドレス(99a、99b)を計算するステップと、
を含む、上記(7)の方法(80)。
【００５７】
【発明の効果】
本発明によると、プロセッサからデータ・キャッシュへの複数のアクセスを安価に実現し、データのスループットを高めることにより、順不同に命令を実行するプロセッサの性能を改善することができる。
【図面の簡単な説明】
【図１】本発明のアドレス集合システムを実現するコンピュータを示すブロック図。
【図２】図１のプロセッサの命令フェッチ/実行システムおよびその図１のプロセッサに関連するデータキャッシュ(DCACHE)との関係を示すブロック図。
【図３】図１の新しいアドレス集合システムの可能な実施例を示すブロック図。
【図４】アドレスを奇数および偶数の組にソートするための、図３の各々のアドレス並べ替えバッファ・スロット(ARBSLOT)の論理の可能な実施例を示すブロック図。
【図５】図３のアービトレータの可能な実施例を示す、アーキテクチャ全体の高レベルのブロック図。
【図６】図５の最も古い論理のブロック図。
【図７】図５の下位完了論理のブロック図。
【図８】図５の許可判断論理のブロック図。
【図９】図５の許可判断論理のブロック図。
【図１０】図５の許可判断論理のブロック図。
【符号の説明】
２４        データ・キャッシュ(DCASH)
２６        命令キャッシュ(ICASHE)
２９        命令フェッチ機構(IFETCH)
３２        ソート機構(SORT)
３８ｂ      メモリ待ち行列(MQUEUE)
４８        アドレス並べ替えバッファ・スロット(ARBSLOT)
８４ａ      奇数アービトレータ
８４ｂ      偶数アービトレータ
８６ａ      奇数要求
８６ｂ      偶数要求
９８ａ      奇数バンク
９８ｂ      偶数バンク
【図１】
0003876033.tif 000002
【図２】
0003876033.tif 000003
【図３】
0003876033.tif 000004
【図４】
0003876033.tif 000005
【図５】
0003876033.tif 000006
【図６】
0003876033.tif 000007
【図７】
0003876033.tif 000008
【図８】
0003876033.tif 000009
【図９】
0003876033.tif 000010
【図１０】
0003876033.tif 000011