(57)【要約】【課題】アクセス手法が異なる複数のキャッシュを統合して、キャッシュ全体の容量の低減化を図る。【解決手段】１クロック周期で複数の処理を実行する並列プロセッサ１３と主記憶との間に設けられ、主記憶に記憶されている命令及びデータの一部を記憶する、複数のバンク１９及び複数のポート１１を有する多ポート命令・データ統合キャッシュ１０である。さらに、複数のポートは、並列プロセッサから命令をアクセスするための１個以上の命令ポートからなる命令ポートユニット１２ａ、１２ｃ、１２ｄと並列プロセッサからデータをアクセスするための１個以上のデータポートからなる命令ポートユニット１２ｂとを有し、命令ポートからバンクに対して指定できるデータ幅を、データポートからバンクに対して指定できるデータ幅より大きく設定した。【選択図】    図２
2004157593.tif 000002
【特許請求の範囲】
【請求項１】
１クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、前記主記憶に記憶されている命令及びデータの一部を記憶する、複数のバンク及び複数のポートを有する多ポート命令・データ統合キャッシュであって、
前記複数のポートは、前記並列プロセッサから命令をアクセスするための１個以上の命令ポートからなる命令ポートユニットと前記並列プロセッサからデータをアクセスするための１個以上のデータポートからなるデータポートユニットとを有し、
前記命令ポートからバンクに対して指定できるデータ幅を、前記データポートからバンクに対して指定できるデータ幅より大きく設定した
ことを特徴とする多ポート命令・データ統合キャッシュ。
【請求項２】
前記命令ポートから連続しない複数バンクにアクセス可能とし、前記データポートから全てのバンクにアクセス可能とする
ことを特徴とする請求項１記載の多ポート命令・データ統合キャッシュ。
【請求項３】
ＨＭＡ構造で構成されていることを特徴とする請求項１又は２記載の多ポート命令・データ統合キャッシュ。
【請求項４】
クロスバスイッチネットワーク構造で構成されていることを特徴とする請求項１又は２記載の多ポート命令・データ統合キャッシュ。
【請求項５】
１クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュであって、
前記主記憶に記憶されている命令データの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリと、
前記並列プロセッサが前記多ポートバンクメモリを命令キャッシュとしてアクセスしたとき、指定された命令データを前記多ポートバンクメモリから命令キャッシュの命令データとして読出す命令データ読出手段と、
前記並列プロセッサが前記多ポートバンクメモリをトレースキャッシュとしてアクセスしたとき、指定された命令データを前記多ポートバンクメモリからトレースキャッシュのトレースデータとして読出すトレースデータ読出手段と
を備えた多ポート命令・トレース統合キャッシュ。
【請求項６】
１クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュであって、
前記主記憶に記憶されている命令データの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリと、
前記並列プロセッサから出力されるフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、アクセスする命令データがトレースキャッシュのデータか否かを示す識別ビット、前記フェッチアドレスにおける上位桁に設定されたタグ１、前記フェッチアドレスにおける下位桁に設定されたタグ２、及び前記多ポートバンクメモリの各バンクに記憶された命令データを指定する複数のアドレスが記憶されたタグディレクトリと、
前記タグ１及び識別ビットに基づいて、アクセスする命令データが前記多ポートバンクメモリに記憶されていると判定する命令キャッシュヒット判定回路と、
前記タグ１、前記タグ２及び識別ビットに基づいて、アクセスする命令データ列が前記多ポートバンクメモリに記憶されていると判定するトレースキャッシュヒット判定回路と、
前記トレースキャッシュヒット判定回路のヒット判定に応じて、前記タグディレクトリの対応する領域に記憶された複数のアドレスのうちの所定数のアドレスを選択して前記多ポートバンクメモリへ送出して、各バンクの命令データを同時に読出しさせるフェッチアドレス選択部と
を備えたことを特徴とする多ポート命令・トレース統合キャッシュ。
【請求項７】
１クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュであって、
前記主記憶に記憶されている命令データの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリと、
フェッチライン・アドレスキャッシュから前記並列プロセッサのフェッチアドレスに基づく互いに異なるフェッチアドレスがそれぞれ入力され、この入力されたフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、アクセスする命令データがトレースキャッシュのデータか否かを示す識別ビット、前記フェッチアドレスにおける上位桁に設定されたタグ１、前記フェッチアドレスにおける下位桁に設定されたタグ２が記憶された複数のタグディレクトリと、
前記タグディレクトリ毎に設けられ、前記タグ１及び識別ビットに基づいて、アクセスする命令データが前記多ポートバンクメモリに記憶されていると判定する複数の命令キャッシュヒット判定回路と、
前記タグディレクトリ毎に設けられ、前記タグ１、前記タグ２及び識別ビットに基づいて、アクセスする命令データ列が前記多ポートバンクメモリに記憶されていると判定する複数のトレースキャッシュヒット判定回路と、
前記各キャッシュヒット判定回路のヒット判定に応じて、対応するタグディレクトリに入力されている各フェッチアドレスを前記多ポートバンクメモリへ送出して、各バンクの命令データを同時に読出すバンクアクセス回路と
を備えたことを特徴とする多ポート命令・トレース統合キャッシュ。
【請求項８】
１クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュであって、
前記主記憶に記憶されている命令データの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリと、
前記並列プロセッサから出力されるフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、前記フェッチアドレスにおける上位桁に設定されたタグ１が記憶された命令用タグディレクトリと、
前記並列プロセッサから出力されるフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、前記フェッチアドレスにおける上位桁に設定されたタグ１、前記フェッチアドレスにおける下位桁に設定されたタグ２、及び前記多ポートバンクメモリの各バンクに記憶された命令データを指定する複数のアドレスが記憶されたトレース用タグディレクトリと、
前記タグ１に基づいて、アクセスする命令データが前記多ポートバンクメモリに記憶されていると判定する命令キャッシュヒット判定回路と、
前記タグ１、前記タグ２に基づいて、アクセスする命令データ列が前記多ポートバンクメモリに記憶されていると判定するトレースキャッシュヒット判定回路と、
前記トレースキャッシュヒット判定回路のヒット判定に応じて、前記タグディレクトリの対応する領域に記憶された複数のアドレスのうちの所定数のアドレスを選択して前記多ポートバンクメモリへ送出して、各バンクの命令データを同時に読出しさせるフェッチアドレス選択部と
を備えたことを特徴とする多ポート命令・トレース統合キャッシュ。
【請求項９】
１クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュであって、
前記主記憶に記憶されている命令データの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリと、
フェッチライン・アドレスキャッシュから前記並列プロセッサのフェッチアドレスに基づく互いに異なるフェッチアドレスがそれぞれ入力され、この入力されたフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、前記フェッチアドレスにおける上位桁に設定されたタグ１が記憶された複数の命令用タグディレクトリと、
前記フェッチライン・アドレスキャッシュから前記並列プロセッサのフェッチアドレスに基づく互いに異なるフェッチアドレスがそれぞれ入力され、この入力されたフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、前記フェッチアドレスにおける上位桁に設定されたタグ１、前記フェッチアドレスにおける下位桁に設定されたタグ２が記憶された複数のトレース用タグディレクトリと、
前記タグディレクトリ毎に設けられ、前記タグ１に基づいて、アクセスする命令データが前記多ポートバンクメモリに記憶されていると判定する複数の命令キャッシュヒット判定回路と、
前記タグディレクトリ毎に設けられ、前記タグ１及び前記タグ２に基づいて、アクセスする命令データ列が前記多ポートバンクメモリに記憶されていると判定する複数のトレースキャッシュヒット判定回路と、
前記各キャッシュヒット判定回路のヒット判定に応じて、対応するタグディレクトリに入力されている各フェッチアドレスを前記多ポートバンクメモリへ送出して、各バンクの命令データを同時に読出すバンクアクセス回路と
を備えたことを特徴とする多ポート命令・トレース統合キャッシュ。
【請求項１０】
前記タグディレクトリの各領域に記憶された複数のアドレスは、該当領域が前回ヒットしたとき実行された各命令のアドレスに基づいて更新されることを特徴とする請求項６又は８記載の多ポート命令・トレース統合キャッシュ。
【請求項１１】
前記タグディレクトリの各領域に記憶された複数のアドレスは、該当領域が前回ヒットしたとき実行された各命令のアドレス、及びこの各命令の次に分岐が可能な分岐先の命令のアドレスを含むことを特徴とする請求項１０記載の多ポート命令・トレース統合キャッシュ。
【請求項１２】
前記フェッチアドレス選択部は、分岐予測部から入力された各命令の分岐予測に基づいて前記所定数のアドレスを選択することを特徴とする請求項１０又は１１記載の多ポート命令・トレース統合キャッシュ。
【請求項１３】
前記フェッチライン・アドレスキャッシュから出力される複数のフェッチアドレスは、このフェッチアドレスが前回ヒットしたとき実行された各命令のアドレスに基づいて更新されることを特徴とする請求項７又は９記載の多ポート命令・トレース統合キャッシュ。
【請求項１４】
前記フェッチライン・アドレスキャッシュから出力される複数のフェッチアドレスは、このフェッチアドレスが前回ヒットしたとき実行された各命令のアドレス、及びこの各命令の次に分岐が可能な分岐先の命令のアドレスを含むことを特徴とする請求項１３記載の多ポート命令・トレース統合キャッシュ。
【請求項１５】
１クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、前記主記憶に記憶されている命令、トレース及びデータの一部を記憶する、複数のバンク及び複数のポートを有する多ポート命令・トレース・データ統合キャッシュであって、
前記複数のポートは、前記並列プロセッサから命令をアクセスするための１個以上の命令ポートからなる命令ポートユニットと前記並列プロセッサからトレースをアクセスするための１個以上のトレースポートからなるトレースポートユニットと前記並列プロセッサからデータをアクセスするための１個以上のデータポートからなるデータポートユニットとを有し、
前記命令ポート及びトレースポートからバンクに対して指定できる各データ幅を、前記データポートからバンクに対して指定できるデータ幅より大きく設定した
ことを特徴とする多ポート命令・トレース・データ統合キャッシュ。
【請求項１６】
１クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとデータキャッシュとを統合した多ポート命令・トレース・データ統合キャッシュであって、
前記主記憶に記憶されている命令及びデータの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリと、
前記並列プロセッサから出力されるフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、アクセスする命令又はデータがトレースキャッシュのデータか否かを示す識別ビット、前記フェッチアドレスにおける上位桁に設定されたタグ１、前記フェッチアドレスにおける下位桁に設定されたタグ２、及び前記多ポートバンクメモリの各バンクに記憶された命令又はデータを指定する複数のアドレスが記憶されたタグディレクトリと、
前記タグ１及び識別ビットに基づいて、アクセスする命令又はデータが前記多ポートバンクメモリに記憶されていると判定する命令キャッシュヒット判定回路と、
前記タグ１、前記タグ２及び識別ビットに基づいて、アクセスする命令が前記多ポートバンクメモリに記憶されていると判定するトレースキャッシュヒット判定回路と、
前記各キャッシュヒット判定回路のヒット判定に応じて、前記タグディレクトリの対応する領域に記憶された複数のアドレスのうちの所定数のアドレスを選択して前記多ポートバンクメモリへ送出して、各バンクの命令又はデータを同時に読出しさせるフェッチアドレス選択部と、
前記多ポートバンクメモリから読出された複数のデータから前記並列プロセッサが必要とするデータを選択する選択回路と
を備えたことを特徴とする多ポート命令・トレース・データ統合キャッシュ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセッサとプログラムや各種のデータや情報を記憶した主記憶との間に設けられたキャッシュに係わり、特に、命令キャッシュとデータキャッシュとを統合した多ポート命令・データ統合キャッシュ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュ、及び命令キャッシュとトレースキャッシュとデータキャッシュとを統合した多ポート命令・トレース・データ統合キャッシュに関する。
【０００２】
【従来の技術】
一般に、図２９（ａ）に示すように、プロセッサ１の処理速度を向上させるために、プロセッサ１と主記憶３との間にキャッシュ２を介在させている。このキャッシュ２に、主記憶３に記憶された各種の情報（データ）のうちの、プロセッサ１が頻繁にアクセスする情報を複写（コピー）しておく。そして、プロセッサ１は、主記憶３の代わりにこのキャッシュ２をアクセスすることにより、高速処理が可能となる。
【０００３】
したがって、プロセッサ１がキャッシュ２をアクセスしたが目標とする情報（データ）がキャッシュ２に記憶されていないとキャッシュミスとなり、目標とする情報（データ）を主記憶３から読出してキャッシュ２に書込む。この主記憶３とキャッシュ２との間で取り交わす情報（データ）の最小単位を単位ブロックと称する。
【０００４】
近年、プロセッサ１の処理速度を向上させるために、スーパースカラプロセッサに代表される１クロック周期で複数の処理を実行する並列プロセッサが実用化されている。この並列処理を行うプロセッサ１においては、例えばキャッシュ２から命令（機械命令）とデータ（演算用データ）とを同時にアクセスする必要がある。一つのメモリから同時に複数の情報（データ）に対するアクセスを実施するためには、一つのメモリに複数のポート（書込／読出端子）が必要である。
【０００５】
しかし、キャッシュに使用できる程の大容量の多ポートメモリを作成する技術が存在しないため、これまでは、機械命令、演算用データに対するそれぞれのアクセスパターンが異なることを利用して、それぞれ独立の１ポートキャッシュを設けていた。例えば、図２９（ｂ）は、図２９（ａ）のキャッシュ２を、命令（機械命令）のみを記憶する命令キャッシュ４と、データ（演算用データ）のみを記憶するデータキャッシュ５とに分割した例を示す。
【０００６】
なお、命令のアクセスパターンとデータのアクセスパターンとの相違点は、一つの命令は、分割できない複数のステップで構成されており、連続したアドレスにアクセスされる。したがって、要求されるデータ幅（１度に読出す情報データのビット数）は大きい。これに対して、データは、比較的ランダムにアクセスされることが多いので、要求されるデータ幅は小さい。
【０００７】
しかしながら、主記憶３に記憶される個々のプログラム毎に、各キャッシュ４、５に最適な記憶容量が異なる。したがって、各キャッシュ４、５の容量を合計した一つのキャッシュ２に比較して、フラグメンテーションが発生し、記憶容量の使用効率が低下するのみならず、ワーキングセットが大きいプログラムを実行させるとキャッシュミス率が上昇する問題が生じる。
【０００８】
さらに、一般的に、メモリにおけるプロセッサにてアクセス可能なポート数を増加すると、ポート数の２乗に比例してメモリの必要面積が増加する（例えば、非特許文献１参照）。そのため、面積コストと配線遅延が増大し、大容量のキャッシュを構成する事が困難であった。
【０００９】
さらに、図２９（ｃ）に示すように、命令キャッシュ４の他にトレースキャッシュ６を設けることによって、プロセッサ１の高速化を図ることができる。トレースキャッシュ６内には、プロセッサ１が一度実行した命令列が記憶されている。そして、プロセッサ１は、新たに命令を実行する場合は、命令キャッシュ４とトレースキャッシュ６とをアドレス（フェッチアドレス）で同時に検索して、両方ヒットすれば、トレースキャッシュ６の命令列のデータを採用し、トレースキャッシュ６がヒットしなかった場合は、命令キャッシュ４の命令のデータを採用する。
【００１０】
この命令キャッシュ４とトレースキャッシュ６の詳細動作を図３０を用いて説明する。
主記憶３に記憶されたプログラム７内に、各命令に対応するＡ〜Ｅの基本ブロックが記憶されている。なお、実行順序は、Ａの基本ブロックを先頭とし、Ｂを飛ばして、Ｃ、Ｄの基本ブロックに分岐する。
【００１１】
このような状態において、命令キャッシュ４内には、プログラム７内のＡ〜Ｅの基本ブロックが１ライン毎に先頭から順番に格納される。一方、トレースキャッシュ６内には、実際に実行されたＡ、Ｃ、Ｄの基本ブロックが順番に格納される。
【００１２】
次に、前回のＡ、Ｃ、Ｄの実行履歴と同様に再度Ａの基本ブロックから実行を行う場合を考える。この場合、命令キャッシュ４内には、命令の各基本ブロックはメモリに格納されている順序と同じように命令キャッシュ４内に格納されている。そのために、プロセッサ１は、まず、命令キャッシュ４内から、Ａ、Ｂ、Ｃの基本ブロックを含む１ラインをフェッチし、その後、Ｂを破棄してから、Ｃ、Ｄ、Ｅの基本ブロックを含む１ラインをフェッチする。したがって、プロセッサ１は、目標とするＡ、Ｃ、Ｄの基本ブロックをフェッチするために２サイクル必要となる。
【００１３】
これに対して、トレースキャッシュ６内には一度実行された命令列（Ａ、Ｃ、Ｄの基本ブロック）が格納されているので、命令列（基本ブロック列）の分断に対応でき、プロセッサ１のフェッチ効率が上昇する。
【００１４】
このように、命令キャッシュ４のみでは１６命令の中に３〜４個存在するとされる分岐命令による命令列の分断に起因してフェッチ効率が低下するので、トレースキャッシュ６を設けている。そして、前述したように、プロセッサ１は、２つのキャッシュ４、６のヒット状況を確認し、トレースキャッシュ６がヒットしていればトレースキャッシュ６から、トレースキャッシュ６がキャッシュミスしていれば命令キャッシュ４から目的とする命令列（基本ブロック列）をフェッチしている。
【００１５】
しかし、このように、命令キャッシュ４の他にトレースキャッシュ６を設けた場合においてもまだ次のような問題が生じる。
【００１６】
トレースキャッシュ６と命令キャッシュ４とでは、時系列で必要となるキャッシュ容量が変化するが、トレースキャッシュ６と命令キャッシュ４の各容量は固定されているため容量比を動的に変化させることが出来ない。したがって、キャッシュ全体の利用率が低下する。
【００１７】
命令キャッシュ４とトレースキャッシュ６に重複する命令（基本ブロック）が存在するので、キャッシュ全体の利用率が低下する。
【００１８】
分岐予測がＡの基本ブロックからＢの基本ブロックへ分岐すると予測した場合、トレースキャッシュ６からＡの基本ブロックしか命令を発行（フェッチ）できない。
【００１９】
トレースキャッシュ６内には、一つの基本ブロックを先頭として格納されるため、図３０のように、実行終了した命令列がＡ、Ｃ、Ｄと存在する場合において、トレースキャッシュ６内には、別にＣ、Ｄを先頭としたデータ列も格納される可能性がある。このためトレースキャッシュ６内でデータ（基本ブロック）の重複が生じ、キャッシュの有効利用率が低下する。
【００２０】
【非特許文献１】
Ｈ．Ｊ．Ｍａｔｔａｕｓｃｈ，  Ｋ．Ｋｉｓｈｉ  ａｎｄ  Ｔ．Ｇｙｏｈｔｅｎ，  “Ａｒｅａ−ｅｆｆｉｃｉｅｎｔ  ｍｕｌｔｉ−ｐｏｒｔ  ＳＲＡＭｓ  ｆｏｒ  ｏｎ−ｃｈｉｐ  ｓｔｏｒａｇｅ  ｈｉｇｈ  ｒａｎｄｏｍ−ａｃｃｅｓｓ  ｂａｎｄｗｉｄｔｈ”  ＩＥＩＣＥ  Ｔｒａｎｓ  ｏｎ  Ｅｌｅｃｔｒｏｎｉｃｓ  ｖｏｌ  Ｅ８４−Ｃ，  Ｎｏ．３，  ２００１，  ｐ４１０−４１７
【００２１】
【発明が解決しようとする課題】
このように、従来の図２９（ｂ）に示す命令キャッシュ４とデータキャッシュ５とを個別に設けたキャッシュシステムや、図２９（ｃ）に示す命令キャッシュ４の他にトレースキャッシュ６を設けたキャッシュシステムにおいては、個々のキャッシュが小容量になり、各キャッシュ相互か間で余剰容量の相互融通ができなくなり、全体としてのキャッシュミスの発生率が上昇する。さらに、命令キャッシュとトレースキャッシュとの間においては、データ（基本ブロック）の重複記憶が生じ、キャッシュの有効利用率が低下する。
【００２２】
本発明はこのような事情に鑑みてなされたものであり、バンク構造を用い、各ポートに対するデータ幅及び容量を任意に設定でき、その結果、アクセスパターンの異なる命令やデータの情報を１つのキャッシュに統合でき、フラグメンテーションの発生を防止し、キャッシュの実効容量を増加させることができる多ポート命令・データ統合キャッシュ、多ポート命令・トレース統合キャッシュ、及び多ポート命令・トレース・データ統合キャッシュを提供することを目的とする。
【００２３】
【課題を解決するための手段】
上記課題を解消するために、請求項１の多ポート命令・データ統合キャッシュは、１クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、主記憶に記憶されている命令及びデータの一部を記憶する複数のバンク及び複数のポートを有する。
【００２４】
さらに、多ポート命令・データ統合キャッシュにおける複数のポートは、並列プロセッサから命令をアクセスするための１個以上の命令ポートからなる命令ポートユニットと並列プロセッサからデータをアクセスするための１個以上のデータポートからなるデータポートユニットとを有している。
【００２５】
そして、命令ポートからバンクに対して指定できるデータ幅を、データポートからバンクに対して指定できるデータ幅より大きく設定している。
【００２６】
また、請求項２においては、命令ポートから連続しない複数バンクにアクセス可能とし、データポートから全てのバンクにアクセス可能とする。
【００２７】
このように構成された多ポート命令・データ統合キャッシュにおいては、バンク構造メモリを採用することにより、基本的に各ポートから同時にアクセスするバンクの数を変更することでアクセス可能なデータ幅を変更することが可能である。
【００２８】
そして、命令ポートからバンクに対して指定できるデータ幅を、データポートからバンクに対して指定できるデータ幅より大きく設定している。さらに、命令ポートから連続しない複数バンクにアクセス可能としているので、各命令ポートにおいて、たとえ一度にフェッチできる命令列のビット数（基本ブロックの大きさ）を示すデータ幅を大きく設定しても、アクセス競合の発生が抑制できる。逆に、データポートにおいては、一度にフェッチされるデータのビット数は小さく、かつ比較的ランダムにアクセスされるので、全てのバンクにアクセス可能とする。
【００２９】
また、多ポート命令・データ統合キャッシュにおいては、バンク構造を採用しているので、少ないポート数で面積大容量の多ポートキャッシュが構成可能になる。さらに、複数のキャッシュを１つのバンク構造の多ポートキャッシュに置換えることでキャッシュ全体のフラグメンテーションを抑制することが可能である。
【００３０】
さらに、請求項３、請求項４は、多ポート命令・データ統合キャッシュをＨＭＡ構造やクロスバスイッチネットワーク構造で構成している。
【００３１】
このように、多ポート命令・データ統合キャッシュをＨＭＡ構造やクロスバスイッチネットワーク構造を用いて構成することによって、この統合キャッシュに組込まれるポート数を大幅に減少でき、統合キャッシュを、面積効率が高く、小型に構成できる。
【００３２】
また、請求項５は、１クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュである。
【００３３】
そして、主記憶に記憶されている命令データの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリと、並列プロセッサが多ポートバンクメモリを命令キャッシュとしてアクセスしたとき、指定された命令データを多ポートバンクメモリから命令キャッシュの命令データとして読出す命令データ読出手段と、並列プロセッサが多ポートバンクメモリをトレースキャッシュとしてアクセスしたとき、指定された命令データを多ポートバンクメモリからトレースキャッシュのトレースデータとして読出すトレースデータ読出手段とを備えている。
【００３４】
このように構成された多ポート命令・トレース統合キャッシュにおいて、多ポートバンクメモリには、主記憶に記憶されている命令データの一部が記憶されている。したがって、多ポートバンクメモリ内に記憶されている各命令データは、命令キャッシュの命令データか、トレースキャッシュのトレースデータを構成する命令データかの区別はない。
【００３５】
そして、並列プロセッサがフェッチアドレスで多ポートバンクメモリ内の命令データを指定したときに、例えばキャッシュヒット回路等を用いて、命令キャッシュとしてアクセスしているのか、トレースキャッシュとしてアクセスしているのかを判定して、該当命令データを命令キャッシュの命令データとして読出したり、トレースキャッシュのトレースデータとして読出す。
【００３６】
したがって、トレースキャッシュのデータと命令キャッシュのデータとを同一キャッシュ内に共存することが可能なり、キャッシュ容量の有効利用が実現する。また、同一命令データの重複記憶が抑制される。
【００３７】
さらに請求項６は、１クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュである。
【００３８】
そして、主記憶に記憶されている命令データの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリを設けている。また、並列プロセッサから出力されるフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、アクセスする命令データがトレースキャッシュのデータか否かを示す識別ビット、フェッチアドレスにおける上位桁に設定されたタグ１、フェッチアドレスにおける下位桁に設定されたタグ２、及び多ポートバンクメモリの各バンクに記憶された命令データを指定する複数のアドレスが記憶されたタグディレクトリを設けている。
【００３９】
さらに、タグ１及び識別ビットに基づいて、アクセスする命令データが多ポートバンクメモリに記憶されていると判定する命令キャッシュヒット判定回路と、タグ１、タグ２及び識別ビットに基づいて、アクセスする命令データ列が多ポートバンクメモリに記憶されていると判定するトレースキャッシュヒット判定回路と、トレースキャッシュヒット判定回路のヒット判定に応じて、タグディレクトリの対応する領域に記憶された複数のアドレスのうちの所定数のアドレスを選択して前記多ポートバンクメモリへ送出して、各バンクの命令データを同時に読出しさせるフェッチアドレス選択部とを設けている。
【００４０】
このように構成された命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュにおいては、命令キャッシュとトレースキャッシュでのアクセス方法の統一、及び、アクセス時にどちらのデータなのかを識別することが必要となる。命令キャッシュでは連続した命令が格納されているため、ライン内のデータに自由にアクセスすることが可能である。それに対し、トレースキャッシュでは動的命令流れの順序で命令列が並んでいるため、先頭のアドレスからしかアクセスできない。
【００４１】
このアクセス方法を統一するため、請求項６ではトレースキャッシュのデータなのか否かを識別するビットと、アクセス用に２つのタグ１、２を用意する。命令キャッシュによるアクセスではタグ１しか必要とせず、トレースキャッシュ用のデータではアドレスの下位ビットを比較するためにタグ１に加えてタグ２を用いてトレースデータの開始位置の比較を行いアクセスする。
【００４２】
このようなアクセス方法を採用することにより、トレースキャッシュのデータと命令キャッシュのデータとを同一キャッシュ内に共存することが可能なり、キャッシュ容量の有効利用が実現する。
【００４３】
また、統合したキャッシュを有効に利用するために、キャッシュにバンク構成を利用してラインを微細化している。これにより、命令フェッチ時には複数のバンクから命令列を読出すことが可能とし、分岐予測に従って命令列がフェッチされる。
【００４４】
また、請求項７は、１クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュである。
【００４５】
そして、主記憶に記憶されている命令データの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリが設けられている。さらに、フェッチライン・アドレスキャッシュ（ＦＬＡＣ）から並列プロセッサのフェッチアドレスに基づく互いに異なるフェッチアドレスがそれぞれ入力され、この入力されたフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、アクセスする命令データがトレースキャッシュのデータか否かを示す識別ビット、フェッチアドレスにおける上位桁に設定されたタグ１、フェッチアドレスにおける下位桁に設定されたタグ２が記憶された複数のタグディレクトリが設けられている。また、タグディレクトリ毎に設けられ、タグ１及び識別ビットに基づいて、アクセスする命令データが前記多ポートバンクメモリに記憶されていると判定する複数の命令キャッシュヒット判定回路と、タグディレクトリ毎に設けられ、タグ１、前記タグ２及び識別ビットに基づいて、アクセスする命令データ列が多ポートバンクメモリに記憶されていると判定する複数のトレースキャッシュヒット判定回路と、各キャッシュヒット判定回路のヒット判定に応じて、対応するタグディレクトリに入力されている各フェッチアドレスを多ポートバンクメモリへ送出して、各バンクの命令データを同時に読出すバンクアクセス回路とが設けられている。
【００４６】
このように構成された多ポート命令・トレース統合キャッシュにおいては、次にアクセスすべき複数のアドレスはタグディレクトリでなくて、統合キャッシュ外のフェッチライン・アドレスキャッシュ（ＦＬＡＣ）に記憶されている。フェッチライン・アドレスキャッシュ（ＦＬＡＣ）から出力される複数のフェッチアドレスに対応するために、統合キャッシュ内に複数のタグディレクトリが形成されている。
【００４７】
請求項８は、１クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュである。
【００４８】
そして、主記憶に記憶されている命令データの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリと、並列プロセッサから出力されるフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、前記フェッチアドレスにおける上位桁に設定されたタグ１が記憶された命令用タグディレクトリと、並列プロセッサから出力されるフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、フェッチアドレスにおける上位桁に設定されたタグ１、フェッチアドレスにおける下位桁に設定されたタグ２、及び多ポートバンクメモリの各バンクに記憶された命令データを指定する複数のアドレスが記憶されたトレース用タグディレクトリと、タグ１に基づいて、アクセスする命令データが多ポートバンクメモリに記憶されていると判定する命令キャッシュヒット判定回路と、タグ１、タグ２に基づいて、アクセスする命令データ列が多ポートバンクメモリに記憶されていると判定するトレースキャッシュヒット判定回路と、トレースキャッシュヒット判定回路のヒット判定に応じて、タグディレクトリの対応する領域に記憶された複数のアドレスのうちの所定数のアドレスを選択して多ポートバンクメモリへ送出して、各バンクの命令データを同時に読出しさせるフェッチアドレス選択部とを備えている。
【００４９】
このように構成された多ポート命令・トレース統合キャッシュにおいては、統合キャッシュ内に設けられたタグディレクトリを、命令用タグディレクトリとトレース用タグディレクトリとに分割している。よって、命令用タグディレクトリ及びトレース用タグディレクトリ内にはトレース識別ビットを設定する必要ない。したがって、各キャッシュヒット判定回路の判定処理が簡素化される。
【００５０】
請求項９は、１クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュである。
【００５１】
そして、主記憶に記憶されている命令データの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリと、フェッチライン・アドレスキャッシュ（ＦＬＡＣ）から並列プロセッサのフェッチアドレスに基づく互いに異なるフェッチアドレスがそれぞれ入力され、この入力されたフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、フェッチアドレスにおける上位桁に設定されたタグ１が記憶された複数の命令用タグディレクトリと、フェッチライン・アドレスキャッシュから並列プロセッサのフェッチアドレスに基づく互いに異なるフェッチアドレスがそれぞれ入力され、この入力されたフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、フェッチアドレスにおける上位桁に設定されたタグ１、フェッチアドレスにおける下位桁に設定されたタグ２が記憶された複数のトレース用タグディレクトリと、タグディレクトリ毎に設けられ、タグ１に基づいて、アクセスする命令データが多ポートバンクメモリに記憶されていると判定する複数の命令キャッシュヒット判定回路と、タグディレクトリ毎に設けられ、タグ１及びタグ２に基づいて、アクセスする命令データ列が多ポートバンクメモリに記憶されていると判定する複数のトレースキャッシュヒット判定回路と、各キャッシュヒット判定回路のヒット判定に応じて、対応するタグディレクトリに入力されている各フェッチアドレスを多ポートバンクメモリへ送出して、各バンクの命令データを同時に読出すバンクアクセス回路とを備えている。
【００５２】
このように構成された多ポート命令・トレース統合キャッシュにおいては、各トレース用タグディレクトリに次にアクセスすべきアドレスは記憶されていなくて、統合キャッシュ外のフェッチライン・アドレスキャッシュ（ＦＬＡＣ）に記憶されている。フェッチライン・アドレスキャッシュ（ＦＬＡＣ）から出力される複数のフェッチアドレスに対応するために、統合キャッシュ内に複数の命令用タグディレクトリ及びトレース用タグディレクトリが形成されている。
【００５３】
請求項１０においては、タグディレクトリの各領域に記憶された複数のアドレスは、該当領域が前回ヒットしたとき実行された各命令のアドレスに基づいて更新される。
【００５４】
請求項１１においては、タグディレクトリの各領域に記憶された複数のアドレスは、該当領域が前回ヒットしたとき実行された各命令のアドレス、及びこの各命令の次に分岐が可能な分岐先の命令のアドレスを含む。
【００５５】
請求項１２においては、フェッチアドレス選択部は、分岐予測部から入力された各命令の分岐予測に基づいて前記所定数のアドレスを選択する。
【００５６】
請求項１３においては、フェッチライン・アドレスキャッシュ（ＦＬＡＣ）から出力される複数のフェッチアドレスは、このフェッチアドレスが前回ヒットしたとき実行された各命令のアドレスに基づいて更新される。
【００５７】
請求項１４においては、フェッチライン・アドレスキャッシュ（ＦＬＡＣ）から出力される複数のフェッチアドレスは、このフェッチアドレスが前回ヒットしたとき実行された各命令のアドレス、及びこの各命令の次に分岐が可能な分岐先の命令のアドレスを含む。
【００５８】
前述したように、バンク構成を利用することにより、複数バンクから同時に複数命令をフェッチするためは、複数のアドレスの発行が必要となる。このため、タグディレクトリの各領域に記憶された複数のアドレス又はフェッチライン・アドレスキャッシュから出力される複数のアドレスを、毎サイクル分岐命令による命令列の分断に対応するために、分岐予測に従ったパス（各命令の実行経路）に存在する複数の命令をフェッチするため複数のアドレスとしている。
【００５９】
請求項１５は、１クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、主記憶に記憶されている命令、トレース及びデータの一部を記憶する、複数のバンク及び複数のポートを有する多ポート命令・トレース・データ統合キャッシュである。
【００６０】
そして、複数のポートは、並列プロセッサから命令をアクセスするための１個以上の命令ポートからなる命令ポートユニットと並列プロセッサからトレースをアクセスするための１個以上のトレースポートからなるトレースポートユニットと並列プロセッサからデータをアクセスするための１個以上のデータポートからなるデータポートユニットとを有している。さらに、命令ポート及びトレースポートからバンクに対して指定できる各データ幅を、データポートからバンクに対して指定できるデータ幅より大きく設定している。
【００６１】
このように各ポートを設定することによって、一つのキャッシュに、命令キャッシュ、トレースキャッシュ、及びデータキャッシュを組込むことが可能となり、キャッシュ全体としての必要とする記憶容量をさらに減少できる。
【００６２】
請求項１６は、１クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとデータキャッシュとを統合した多ポート命令・トレース・データ統合キャッシュである。
【００６３】
そして、主記憶に記憶されている命令及びデータの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリと、並列プロセッサから出力されるフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、アクセスする命令又はデータがトレースキャッシュのデータか否かを示す識別ビット、フェッチアドレスにおける上位桁に設定されたタグ１、フェッチアドレスにおける下位桁に設定されたタグ２、及び多ポートバンクメモリの各バンクに記憶された命令又はデータを指定する複数のアドレスが記憶されたタグディレクトリと、タグ１及び識別ビットに基づいて、アクセスする命令又はデータが多ポートバンクメモリに記憶されていると判定する命令キャッシュヒット判定回路と、タグ１、タグ２及び識別ビットに基づいて、アクセスする命令が多ポートバンクメモリに記憶されていると判定するトレースキャッシュヒット判定回路と、各キャッシュヒット判定回路のヒット判定に応じて、タグディレクトリの対応する領域に記憶された複数のアドレスのうちの所定数のアドレスを選択して多ポートバンクメモリへ送出して、各バンクの命令又はデータを同時に読出しさせるフェッチアドレス選択部と、多ポートバンクメモリから読出された複数のデータから並列プロセッサが必要とするデータを選択する選択回路とを備えている。
【００６４】
このように構成された多ポート命令・トレース・データ統合キャッシュにおいても、一つのキャッシュに、命令キャッシュ、トレースキャッシュ、及びデータキャッシュを組込むことが可能となり、キャッシュ全体としての必要とする記憶容量をさらに減少できる。
【００６５】
【発明の実施の形態】
以下、本発明の各実施形態を図面を用いて説明する。
（第１実施形態）
図１は本発明の第１実施形態に係わる多ポート命令・データ統合キャッシュを１クロック周期で複数の処理を実行する並列プロセッサに接続した状態を示す模式図である。
【００６６】
多ポート命令・データ統合キャッシュ１０（以下、統合キャッシュ１０と略記する）には、１番から１５番の１５個のポート１１が設けられている。各ポート１１は統合キャッシュ１０内のアドレスを指定するアドレス端子と、統合キャッシュ１０の該当アドレスに対してアクセスされるデータが入出力されるデータ端子とで構成されている。
【００６７】
この１５個のポート１１は、複数のポートユニット１２ａ、１２ｂ、１２ｃ、１２ｄに分割される。ポートユニット１２ａは１〜４番の４個のポート１１が所属し、ポートユニット１２ｂは５番の１個のポート１１が所属し、ポートユニット１２ｃは６〜１３番の８個のポート１１が所属し、ポートユニット１２ｄは１４〜１５番の２個のポート１１が所属する。
【００６８】
並列プロセッサ１３には、統合キャッシュ１０の１番から１５番の各ポート１１に対応した１５個のポート１４が設けられている。この１５個のポート１４は、統合キャッシュ１０と同様に複数のアクセスポートユニット１５ａ、１５ｂ、１５ｃ、１５ｄに分割される。
【００６９】
図２は、統合キャッシュ１０の概略構成を示す模式である。この統合キャッシュ１０内には、１６個のバンク構造体１７が組込まれている。各バンク構造体１７はポート数変換回路１８とバンク１９とで構成されている。バンク１９が組込まれた１６個のバンク構造体１７は、６個のバンクユニット１６ａ〜１６ｆに区分けされている。
【００７０】
バンクユニット１６ａ、１６ｂに組込まれた各バンク構造体１７のポート数変換回路１８は、ポート１１側のＮ１個のポートを１個のポートに変換してバンク１９に接続する。したがって、バンク１９は１個のポートのみを有する１ポートメモリを構成する。
【００７１】
バンクユニット１６ｃ、１６ｅに組込まれた各バンク構造体１７のポート数変換回路１８は、ポート１１側のＮ２個のポートを１個のポートに変換してバンク１９に接続する。同様に、バンクユニット１６ｄ、１６ｆに組込まれた各バンク構造体１７のポート数変換回路１８は、ポート１１側のＮ３個のポートを１個のポートに変換してバンク１９に接続する。
【００７２】
各ポートユニット１２ａ〜１２ｄの各ポート１１は各ポートユニット１２ａ〜１２ｄにて指定された数のバンク１９、及び指定された位置のバンク１９にアクセス可能である。
【００７３】
この例では、ポートユニット１２ｂのポート１１から全てのバンク１９ヘアクセスが可能である。すなわち、ポートユニット１２ｂのポート１１はデータポートとして機能する。
【００７４】
その他の各ポートユニット１２ａ、１２ｃ、１２ｄの各ポート１１のアクセスは、バンク１９をプリデコードする事によりアクセスを制限し、データ幅の大きなポート１１として動作する。また、各ポートユニット１２ａ、１２ｃ、１２ｄからアクセスできるバンク１９も制限されており、連続したバンク１９へのアクセスが禁止されている。これにより、各ポートユニット１２ａ、１２ｃ、１２ｄが必要とする合計の容量の相違にも対応する。すなわち、ポートユニット１２ａ、１２ｃ、１２ｄの各ポート１１は命令ポートとして機能する。
【００７５】
このように構成された統合キャッシュ１０においては、並列プロセッサ１３から統合キャッシュ１０に記憶された命令をフェッチする場合は、指定された命令ポート（ポートユニット１２ａ、１２ｃ、１２ｄ）の各ポート１１にアドレスを印加し、データをフェッチする場合は、指定されたデータポート（ポートユニット１２ｂ）のポート１１にアドレスを印加すればよい。
【００７６】
図３は、図２に示す多ポート命令・データ統合キャッシュ１０を、特許文献１に提唱されている階層構造型多ポートメモリアーキテクチャ（Ｈｉｅｒａｒｃｈｉｃａｌ  Ｍｕｌｔｉ−ｐｏｒｔ  Ｍｅｍｏｒｙ  Ａｒｃｈｉｔｅｃｔｕｒｅ    以下ＨＭＡと略記する）構造を用いて構成した場合のブロック構成図である。
【００７７】
このＨＭＡ構造を用いて構成された統合キャッシュ１０は、大きく分けて、第１階層と第２階層とから構成されている。
第２階層は、大きく分けて、マトリックス状に配列された、バンク１９とポート数変換回路１８とからなる複数のバンク構造体１７と、バンク行選択回路２０と、バンク列選択回路２１とで構成されている。
【００７８】
バンク行選択回路２０とバンク列選択回路２１は、１番〜１５番の各ポート１１から入力されたｎ＝１５個のアドレスＡＤを、ｎ個の行バンク選択信号ＲＳｎ、ｎ個の列バンク選択信号ＣＳｎ、及びｎ個のレジスタアドレスＡｎに変換する。このｎ個の行バンク選択信号ＲＳｎ、ｎ個の列バンク選択信号ＣＳｎでｎ個の各データＤｎがアクセスされるバンク構造体１７が決定される。
【００７９】
この場合、各ポート１１は同時に同一アドレスを出力するとバンク競合が発生するので、各バンク構造体１７は複数のポート１１から同時に指定されることはないとして説明する。
【００８０】
バンク１９とポート数変換回路１８とからなるバンク構造体１７で構成される第１階層のバンク１９は、大きく分けて、マトリックス状に配列された複数のレジスタ２２と、レジスタ行選択回路２３と、レジスタ列選択回路２４とで構成されている。
【００８１】
ポート数変換回路１８は、ｎ個の行バンク選択信号ＲＳｎ、ｎ個の列バンク選択信号ＣＳｎから自己が指定されていることを示すバンク選択信号Ｓ、ｎ個のレジスタアドレスＡｎから選択した、自己のレジスタアドレスＡ、及びｎ個のデータＤｎから選択した自己のデータＤをバンク１９へ送出する。
【００８２】
バンク１９のレジスタ行選択回路２３とレジスタ列選択回路２４とは、自己が指定されていることを示すバンク選択信号Ｓを受信すると、レジスタアドレスＡを用いて、最終的にアクセスすべきレジスタ２２を特定する行レジスタ選択信号ＲＳ、列レジスタ選択信号ＣＳを出力する。したがって、最終的にアクセスすべき１個のレジスタ２２が動作状態になる。なお、データＤは全部のレジスタ２２に印加されているが、動作状態の１個のレジスタ２２がデータＤを取込む。
【００８３】
このように、統合キャッシュ１０をＨＭＡ構造を用いて構成することによって、この統合キャッシュ１０に組込まれるポート数を大幅に減少でき、統合キャッシュ１０を、面積効率が高く、小型に構成できる。
【００８４】
（第２実施形態）
図４は本発明の第２実施形態の係わる多ポート命令・データ統合キャッシュの概略構成図である。図２に示す第２実施形態の統合キャッシュ１０と同一部分には同一符号を付して重複する部分の詳細説明を省略する。
【００８５】
この実施形態の統合キャッシュ１０においては、ポート数変換回路１８ａがバンク１９ａの外に位置している。そして、この統合キャッシュ１０は、図５に示すクロスバスイッチネットワーク構造で実現される。
【００８６】
すなわち、１番から１５番の各ポート１１の各信号路２５には、この各信号路２５に直交しそれぞれバンク１９ａに接続された複数の信号路２６が設けられている。各信号路２５と各信号路２６との交点には両信号路２５、２６を導通するスイッチ２７が接続されている。各スイッチ２７と信号路２６とでポート数変換回路１８ａを構成している。
【００８７】
各ポート１１に印加されているアドレスの下位ビットで選択すべきバンク１９ａに接続されるポート数変換回路１８ａのスイッチ２７を閉じることによって、各ポート１１は任意のバンク１９ａに接続可能となる。
【００８８】
このように、クロスバスイッチネットワークで構成された統合キャッシュ１０においても、この統合キャッシュ１０に組込まれるポート数を大幅に減少できるので、先に説明したＨＭＡ構造を用いた統合キャッシュ１０とほぼ同様の作用効果を得ることができる。
【００８９】
さらに、第１、第２の実施形態の統合キャッシュ１０における別の効果を説明する。
ポート数変換回路１８、１８ａの変換数を工夫すれば、各ポートユニット１２ａ〜１２ｄの各ポート１１から見ると、任意のポート数、バンク１９，１９ａ自体が持つものの整数倍のデータ幅と容量が得られているように見える。しかし、実際には１つの統合キャッシュ１０であるため、命令キャッシュ４とデータキャッシュ５を統合した際のキャッシュミス率の低下という利点を得ることもできる。
【００９０】
命令キャッシュ４とデータキャッシュ５を統合した統合キャッシュ１０と従来の分割キャッシュについて、シミュレータ（Ｓｉｍｐｌｅ  Ｓｃａｌａｒ  ｖｅｒ２．０）を用いキャッシュミス率を算出した結果を図６に示す。
【００９１】
グラフの横軸は、分割キャッシュにおける合計の容量であり、統合キャッシュの容量に等しい。また、分割キャッシュとは、従来までの命令キャッシュとデータキャッシュが分割されている形態を示す。
【００９２】
図６に示すように、各統合キャッシュのミス率は容量で約１．５倍の各分割キャッシュのミス率とほぼ等しいという結論が得られる。これは、二つのキャッシュを統合した事により、命令キャッシュ４のデータ領域とデータキャッシュ５のデータ領域と境界が定まっておらず、時間毎にキャッシュ内のライン（記憶領域）をフレキシブルに活用でき、それぞれに最適なメモリ容量を振り分け直す事ができるためと考えられる。以上により、多ポート統合キャッシュの有効性が証明された。
【００９３】
なお、キャッシュを多ポートにして統合すると、命令ポート、データポート間、及びそれら同士のアクセス競合が発生して、並列プロセッサ１３におけるアクセス処理速度の性能低下も考えられる。
【００９４】
しかしながら、アクセス競合によるペナルティは１サイクルで十分なのに対して、キャッシュミスによるペナルティは、キャッシュ内のデータの書き直しのために、数サイクルから十数サイクル必要である。そのため、アクセス競合確率がキャッシュミス率と同程度なら問題ないといえる。
【００９５】
そこで、先のシミュレーション結果からキャッシュアクセスのトレースデータを抽出し、そこから各バンク数に対するアクセス競合確率を計算した。その結果を図７に示す。この結果から、バンク数が１６〜３２以上あれば、アクセス競合率は、キャッシュミスの確率とほぼ同等となり、アクセス競合は問題にならない。
【００９６】
各実施形態の統合キャッシュ１０は、マルチバンクアーキテクチャに基づいて構成されている。このマルチバンクアーキテクチャでは、図２、図４に示すように、バンク構造を用いた上で、各バンク１９、１９ａヘのアクセスを１ポートに制限するポート数変換回路１８を使用することにより高面積効率、高速化を図っている。
【００９７】
例えば、図８に示すように、４個の命令ポート（データ幅；３２ビット）、２個のデータポート（データ幅；８ビット）の統合キャッシュ１０を構成する場合について検証する。
【００９８】
命令ポートは、各バンク１９のアドレスの下位２ビットでプリデコードされており、特定のバンク１９にしかアクセスできない構造とし、同時には連続したアドレスヘのアクセスでは、必ずアクセス競合が起こらないような構成とする。さらに、連続しないアドレスヘのアクセスも、アドレスの下位２ビットが衝突しない限り可能である。一方、データポートは、命令ポートより連続したアドレスヘのアクセスの確率は低いため、１６個の全てのバンク１９にアクセスできる構造である。
【００９９】
このように、この構成を用いれば、アクセス性能をさほど低下させずに、命令キャッシュ４とデータキャッシュ５とを一つの統合キャッシュ１０に統合でき、従来の命令キャッシュ４とデータキャッシュ５のポートを個別に設けた場合に比較して、面積コストも半分程度になると見積もっている。
【０１００】
（第３実施形態）
図９は本発明の第３実施形態に係わる多ポート命令・トレース統合キャッシュが組込まれた並列プロセッサの要部を示す模式図である。
【０１０１】
並列プロセッサにおける図示しないアドレス発生部から出力された例えば３２ビット構成のフェッチアドレス３８は、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュ３０及び分岐予測部３１へ入力される。
【０１０２】
多ポート命令・トレース統合キャッシュ３０（以下、統合キャッシュ３０と略記する）は、一つのフェッチアドレス３８が入力されると、このフェッチアドレスと分岐予測部３１から入力される予測パスに基づいて、内部に設けられた複数のバンクのうちの４つのバンクに同時にフェッチし、４単位ブロックの１６命令を発行する。
【０１０３】
統合キャッシュ３０から発行された各命令は、命令バッファ３２を介して、命令実行部３３で実行される。命令実行部３３で一度実行された各命令は蓄積ユニット（Ｆｉｌｌ  Ｕｎｉｔ  ）３４に入力される。この蓄積ユニット３４内には、４個の命令蓄積バッファ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｆｉｌｌ  Ｂｕｆｆｅｒ  ＩＦＢ）３５と、アドレス蓄積バッファ（Ａｄｄｒｅｓｓ  Ｆｉｌｌ  Ｂｕｆｆｅｒ  ＡＦＢ）３６とが設けられている。命令蓄積バッファ（ＩＦＢ）３５及びアドレス蓄積バッファ（ＡＦＢ）３６とに１ライン分の命令及び１ライン分のアドレスデータが蓄積されると、これらのデータはトレースデータとして統合キャッシュ３０に帰還される。統合キャッシュ３０において、キャッシュミスが発生すると、主記憶３７の命令データを取込む。
【０１０４】
統合キャッシュ３０内には、例えば、図１０に示すように、タグディレクトリ３９、ビット判定回路４０、フェッチアドレス選択部４１、複数のバンク（ｂａｎｋ）４２で構成された多ポートバンクメモリ４３、バンクアクセス回路４４が設けられている。前記各バンク４２に各命令のデータ（命令データ）が記憶されている。
【０１０５】
多ポートバンクメモリ４３内に形成された各バンク４２内には、複数の命令データが単位ブロック毎に単独の命令キャッシュデータとして、又は、他の命令データと共にトレースキャッシュデータとして記憶されている。
【０１０６】
なお、この多ポートバンクメモリ４３とバンクアクセス回路４４とを第１実施形態で説明したＨＭＡ構造を用いて構成することができる。さらに、これらを第２実施形態で説明したクロスバスイッチネットワーク構造を用いて実現することも可能である。
【０１０７】
図１１は、タグディレクトリ３９及びビット判定回路４０の詳細構成図である。フェッチアドレス３８は上位ビットにタグ（ｔａｇ）１が設定され、中間ビットにインデックス（ｉｎｄｅｘ）が設定され、下位ビットにタグ（ｔａｇ）２が設定されている。
【０１０８】
タグディレクトリ３９において、各インデックスで指定される領域４５には、この領域４５が有効であることを示す有効（ｖａｌｉｄ）ビット、トレースキャッシュからのデータであることを示す識別ビットとしてのトレース（ｔｒａｃｅ）ビット、タグ１、トレースキャッシュからのデータの場合に先頭アドレスであることを特定するためのタグ２、及び、蓄積ユニット３４のアドレス蓄積バッファ（ＡＦＢ）３６からトレースデータとし入力されたトレースフェッチアドレスの集合４６が記憶されている。
【０１０９】
ヒット判定回路４０は、命令キャッシュヒット判定回路４７とトレースキャッシュヒット判定回路４８とで構成されている。命令キャッシュヒット判定回路４７は、比較器４７ａ、アンドゲート４７ｂ、インバータ４７ｃ、アンドゲート４７ｄで形成されている。そして、領域４５における有効（ｖａｌｉｄ）ビットが有効で、トレース（ｔｒａｃｅ）ビットが無効で、タグ１が一致すれば、命令キャッシュのデータがヒットする。
【０１１０】
一方、トレースキャッシュヒット判定回路４８は、比較器４７ａ、４８ａ、アンドゲート４７ｂ、４８ｂ、４８ｃとで構成され、領域４５における有効（ｖａｌｉｄ）ビットが有効で、トレース（ｔｒａｃｅ）ビットが有効で、タグ１、２が一致すれば、トレースキャッシュのデータがヒットする。
【０１１１】
トレースキャッシュと命令キャッシュと両方のデータでヒットした場合、ヒット判定回路４０からトレースキャッシュからのデータを出力する。
【０１１２】
この方式により、トレースキャッシュのデータと命令キャッシュのデータの格納先をこのタグディレクトリ３９における同一のインデックスが指定する領域４５のトレースフェッチアドレス集合４６として設定できる。したがって、入力したフェッチアドレスを効率良く複数の命令に置換えでき、前述した従来のトレースキャッシュと命令キャッシュを設けた場合における問題点である重複する命令列の問題を解決することが可能となる。
【０１１３】
図１０において、ヒット判定回路４０から出力されたトレースキャッシュ又は命令キャッシュのヒット情報はフェッチアドレス選択部４１へ送出される。フェッチアドレス選択部４１は、入力したヒット情報がトレースキャッシュ判定回路４８からのヒット情報の場合、タグディレクトリ３９におけるインデックスが指定する領域４５のトレースフェッチアドレス集合４６から、分岐予測部３１から出力される予測パスが指定するバンク４２内のデータを読出すための複数のフェッチアドレスを選択してバンクアクセス回路４４へ送出する。すなわち、トレースデータの先頭アドレスが二つのタグ１、２で特定されるとこの先頭アドレスに続く各データのフェッチアドレスが選択される。
【０１１４】
バンクアクセス回路４４は、入力された各フェッチアドレスが指定する各バンク４２内の各１単位ブロック分のデータ（命令データ）を読出して命令バッファ３３へ出力する。
【０１１５】
また、フェッチアドレス選択部４１は、入力したヒット情報が命令キャッシュ判定回路４７からのヒット情報の場合、トレースデータは存在しないので、タグ１とインデックスで指定するバンクから４つの連続したバンク４２をアクセスして、各１単位ブロック分のデータ（命令データ）を読出して命令バッファ３３へ出力する。
【０１１６】
次に、蓄積ユニット３４のアドレス蓄積バッファ（ＡＦＢ）３６から統合キャッシュ３０におけるタグディレクトリ３９の領域４５に書込まれるトレースフェッチアドレスの集合４６の生成方法を説明する。
【０１１７】
統合キャッシュ３０がバンク構成を採用する場合、トレースデータは各バンク４２に対して、基本ブロック単位で格納されているため、複数のバンク４２から分岐予測に従ったバンクをフェッチすることによりトレースを生成する。このため、それらのバンク４２のアドレスを発行することが必要となる。トレースキャッシュでは命令の実行履歴を確認するために、この方法を利用しアクセスされるバンク４２のアドレスを生成する方法を示す。
【０１１８】
一般に、トレースキャッシュを利用する場合、命令実行部３３で一度実行された命令列を蓄積ユニット３４で結合していくことにより分岐の飛び込み先から分岐命令までの一連の命令列をキャッシュに格納する。以降、この一連の命令列を「擬似的な基本ブロック」と呼ぶ。「擬似的な基本ブロック」のサイズを確認することにより、過去の履歴から連続してアクセスされると予測される部分を抽出できる。
【０１１９】
トレースキャッシュではこの「擬似的な基本ブロック」単位で命令を格納していくため、１つのラインには最大１つの分岐命令しか存在しない。このため、各ラインは分岐を行う先は１つ、また分岐を行わないもしくは分岐命令が存在しないのなら連続したバンク４２にアクセスすることになる。
【０１２０】
図１３に、多ポートバンクメモリ４３内におけるトレースのライン単位でのフェッチの詳細を示す。アドレス（ａｄｄｒｅｓｓ）１から始まるトレースの始めのバンク（ｂａｎｋ）０に存在する「擬似的な基本ブロック」はバンク（ｂａｎｋ）２のアドレス２へ分岐し、次はアドレス３へ分岐する。
【０１２１】
このアドレス１、２、３を発行するためには、分岐予測を行った上で予測先がどのバンク４２に存在するのかの情報が必要となる。この方式を実現するために、実行終了した命令列を結合する蓄積ユニット３４内に、アドレスと命令データを分割するために、前述したように、４個の命令蓄積バッファ（ＩＦＢ）３５とアドレス蓄積バッファ（ＡＦＢ）３６とが設けられている。
【０１２２】
命令蓄積バッファ（ＩＦＢ）３５は、前述したように、実行終了した命令のデータを格納する。前述したように命令実行部３３は同時に１６命令を実行し、かつ各バンク４２の１ラインは４命令なので、図１６、図１８、図１９に示すように、４命令毎に、合計４個設けられている。
【０１２３】
アドレス蓄積バッファ（ＡＦＢ）３６は、前述したように、トレースを生成する一連の「疑似的な基本ブロック」のアドレスの集合を格納する。すなわち、アドレス蓄積バッファ（ＡＦＢ）３６はバンク構成を利用したキャッシュのためにフェッチされる可能性のある複数のフェッチアドレスを一つに結合するものであり、命令の各アドレスが入力される。
【０１２４】
トレースキャッシュではバンク単位で命令の結合を行う場合、各バンク４２のラインには分岐命令は１つ存在する（ｔａｋｅｎ）、又は全く存在しない（ｎｏｔ  ｔａｋｅｎ）の２種類であるため、あるバンク４２から分岐するバンク４２は連続したもの、もしくは分岐先のターゲットとなる。このため、アドレス蓄積バッファ（ＡＦＢ）３６は、フェッチの際に４個のバンク４２を同時に読出す場合は、図１４に示す様に、バンク１からバンク８へ至るパス１からバンク１からバンク１５へ至るパス８までの合計８つのパスが考えられる。
【０１２５】
各バンク４２に分岐先のターゲットが存在する可能性があるため、アドレス蓄積バッファ（ＡＦＢ）３６内には、図１５に示すように、７つのアドレスを格納できる。さらに、アドレス蓄積バッファ（ＡＦＢ）３６内の各アドレスには、有効ビットと、バンク４２のライン内には分岐命令が存在しない場合も存在するので分岐命令が存在するか否かを示す分岐命令識別ビットも設ける。また、アドレス蓄積バッファ（ＡＦＢ）３６内には、どのパスの履歴が格納されているかを示すため８ビットのパス履歴保証ビットも設ける。
【０１２６】
次に、実行された命令のデータを格納するための命令蓄積バッファ（ＩＦＢ）３５における格納状況を図１６に示す。４個のＡの基本ブロック、３個のＢの基本ブロック、６個のＣの基本ブロックとの合計１３個の命令が実行されたとする。この１３個の命令は、４個のＡの基本ブロック、３個のＢの基本ブロック、６個のＣの基本ブロックとの３個の「擬似的な基本ブロック」に分割され、ざらに、各「擬似的な基本ブロック」は、それぞれ４単位ブロックで構成されるバンク４２のラインサイズに分割される。この状態で、４個の命令蓄積バッファ（ＩＦＢ）３５にそれぞれ格納される。
【０１２７】
次に、図１６に示す命令列が実行された場合におけるアドレス蓄積バッファ（ＡＦＢ）３６に格納される各アドレスの状態を説明する。図１７の上段に示すように、今回結合された命令列は、１つ目の分岐命令は分岐を行い（ｔａｋｅｎ）、２つ目の分岐命令は分岐を行っていない（ｎｏｔ  ｔａｋｅｎ）ため、太線で示すようなパスを実行している。バンク６からバンク１２へは分岐命令は存在しないため、バンク６では分岐命令が存在しないために分岐命令が成立しないのと同様に、連続したバンクにアクセスされる。
【０１２８】
今回のパスが実行されたとき、実行結果によりアドレス蓄積バッファ（ＡＦＢ）３６内には、図１８のようにアドレスが結合されている。実行されたパスは５なので、パス履歴情報ビットは５ビット目を１とし、そのパスは有効とする。
【０１２９】
実行されたパスではＢの基本ブロックからＣの基本ブロックヘは分岐不成立であるが、Ｂの基本ブロックの分岐命令は実行を行い分岐先アドレスは計算しているので、Ｂの基本ブロックの分岐命令が分岐が成立した場合のために分岐成立先のＤのアドレスを格納する。
【０１３０】
実行されなかったバンクの分岐情報は不明なため、有効ビットは０とし、命令の発行を不可能としている。もしＡの基本ブロックが分岐しないとした場合、Ａから連続するバンクを読出すこととなり、この次のバンクの情報は不明なため、連続したアドレスを発行し、命令をフェッチする。このとき、アドレス蓄積バッファ（ＡＦＢ）３６の情報を保持しておき、実行終了した命令列を確認することで新たにこのアドレス蓄積バッファ（ＡＦＢ）３６に情報を加えることが可能となる。
【０１３１】
次に、図１８に示す今の情報を保持した上でＡ、Ｂ、Ｄの基本ブロックが実行された場合のアドレス蓄積バッファ（ＡＦＢ）３６に対するアドレスの格納状態を図１９に示す。この場合、図２０に示すように、実行されたパスは７となるので、パス履歴情報ビットの７ビット目を１とする。
【０１３２】
この動作を繰り返すことにより命令のパスの履歴を蓄積、抽出することができる。よって、トレースを格納する場合、命令蓄積バッファ（ＩＦＢ）３５のトレースの命令データがキャッシュ（多ポートバンクメモリ４３の各バンク４２）に格納され、アドレス蓄積バッファ（ＡＦＢ）３６の各アドレスはタグディレクトリ３９の対応する領域４５にフェッチアドレスの集合４６として格納される。
【０１３３】
一度実行されただけでは実行履歴と同じ命令列しか十分に命令発行することはできない。バンク構成を行わないトレースキャッシュでは物理的に命令列を履歴通りに連続して格納するため、パスが変わるたびに命令の格納が必要となる。しかし、実施形態の統合キャッシュ３０のように、バンク構成を利用した場合、アドレス蓄積バッファ（ＡＦＢ）が十分に情報を保持していれば、柔軟な命令発行が可能となる。
【０１３４】
このことを、実際にトレースフェッチアドレスを利用して連続したバンク４２をフェッチする方法を用いて説明する。図２０のように、パス５とパス７の履歴を持っている場合、その２つのパスについては十分な命令発行が可能となる。このパスが分岐予測に従い、次はパス１を実行するとした場合、Ａの基本ブロックのみ発行し、次のサイクルでＡから連続するアドレスのフェッチを行う。この場合、一時的に十分な命令発行ができないが、このパスが実行された後またアドレス蓄積バッファ（ＡＦＢ）３６を上書きすることで、次はパス１、５、７の場合は十分な命令発行を行うことができるようになる。
【０１３５】
（第４実施形態）
図２１は本発明の第４実施形態に係わる多ポート命令・トレース統合キャッシュが組込まれた並列プロセッサの要部を示す模式図である。図９に示す第３実施形態の多ポート命令・トレース統合キャッシュが組込まれた並列プロセッサの要部と同一部分には同一符号を付して重複する部分の詳細説明は省略する。
【０１３６】
この第４実施形態においては、フェッチライン・アドレスキャッシュ（ＦＬＡＣ）５１が設けられている。また、蓄積ユニット４３のアドレス蓄積バッファ（ＡＦＢ）３６に蓄積された各アドレスは多ポート命令・トレース統合キャッシュ５０（以下、統合キャッシュ５０と略記する）ではなくて、フェッチライン・アドレスキャッシュ（ＦＬＡＣ）５１へ送出される。
【０１３７】
フェッチライン・アドレスキャッシュ（ＦＬＡＣ）５１は、並列プロセッサからフェッチアドレス３８が入力すると、フェッチアドレス３８と、アドレス蓄積バッファ（ＡＦＢ）３６から入力された複数のアドレスのうち、分岐予測部３１の予測パスに基づいて選択された３つのフェッチアドレスとの合計４つのフェッチアドレスを統合キャッシュ５０へ送出する。
【０１３８】
図２３にフェッチライン・アドレスキャッシュ（ＦＬＡＣ）５１と統合キャッシュ５０との詳細構成を示す。フェッチライン・アドレスキャッシュ（ＦＬＡＣ）５１内には、タグディレクトリ５２とヒット判定回路５３とフェッチアドレス選択部５４とが設けられている。タグディレクトリ５２のフェッチアドレス３８のインデックスが指定する領域には、図２４に示すように、タグ１、アドレス蓄積バッファ（ＡＦＢ）３６から入力された複数のアドレスからなるトレースフェッチアドレスの集合４６が書込まれる。
【０１３９】
ヒット判定回路５３がヒットすると、フェッチアドレス選択部５４が分岐予測部３１の予測パスに基づいてトレースフェッチアドレスの集合４６から３つのフェッチアドレスを選択して統合キャッシュ５０へ送出する。また、フェッチライン・アドレスキャッシュ（ＦＬＡＣ）５１は入力されたフェッチアドレス３８をそのまま統合キャッシュ５０へ送出する。
【０１４０】
統合キャッシュ５０内には、入力される４つフェッチアドレスにそれぞれ対応して４つのタグディレクトリ５５が設けられている。各タグディレクトリ５５におけるフェッチアドレスのインデックスが指定する領域には、有効（ｖａｌｉｄ）ビット、トレースキャッシュからのデータであることを示すトレース（ｔｒａｃｅ）ビット、タグ１、トレースキャッシュからのデータの場合に先頭アドレスであることを特定するためのタグ２が設けられている。
【０１４１】
ヒット判定回路４０がヒットすると、該当フェッチアドレスのインデックス部分をフェッチアドレスとして多ポートメモリ４３のバンクアクセス回路４４へ送出する。バンクアクセス回路４４は、入力された各フェッチアドレスが指定するバンク４２内の各１単位ブロック分のデータ（命令データ）を読出して命令バッファ３３へ出力する。
【０１４２】
このように構成された第４実施形態の統合キャッシュ５０の特徴を説明する。
【０１４３】
第３実施形態の統合キャッシュ３０においては、トレースフェッチアドレスが有効な所までをフェッチを行なっている。図２２の命令蓄積バッファ（ＩＢＦ）３５に示すように、トレースフェッチアドレスはＡの「疑似的な基本ブロック」が分岐成立し、Ｂの「疑似的な基本ブロック」が分岐は不成立で、Ｃの基本ブロックに続くパスの情報を保持しているとする。この場合、もしＢの基本ブロックがＤへ分岐すると予測した場合、トレースの内容が保証されているＡ、Ｂの基本ブロックしか命令フェッチを行なわなかった。しかし、Ｄの基本ブロックが命令キャッシュデータとして保持している可能性があるため、Ｄのアドレスも発行し、もしヒットすれば同時に命令発行を行なうことが望ましい。
【０１４４】
このため、第３実施形態の統合キャッシュ３０に対してアドレスを１つしか発行していなかったが、第４実施形態の統合キャッシュ５０に対して４つのアドレスを発行する。このため統キャッシュ５０ではタグディレクトリ５５を４つ多重化して持つ。また、フェッチライン・アドレッスキャッシュ（ＦＬＡＣ）５１がそれら４つのフェッチのためのフェッチアドレスを生成する。
【０１４５】
この第４実施形態では、まずフェッチの先頭アドレスはフェッチライン・アドレッスキャッシュ（ＦＬＡＣ）５１にアクセスされる。フェッチライン・アドレッスキャッシュ（ＦＬＡＣ）５１でヒットした場合、フェッチライン・アドレッスキャッシュ（ＦＬＡＣ）５１から対応する４つのアドレスを統合キャッシュ５０に発行する。フェッチライン・アドレッスキャッシュ（ＦＬＡＣ）５１から発行されるアドレスはフェッチされる可能性のあるアドレスの集合なので、分岐予測に従い、フェッチされるアドレスを選択する。先頭のアドレスはフェッチライン・アドレッスキャッシュ（ＦＬＡＣ）５１にアクセスする時と同様のアドレスが入力される。
【０１４６】
すなわち、この第４実施形態においては、フェッチライン・アドレッスキャッシュ（ＦＬＡＣ）５１にアクセスすることによりトレースを生成するアドレスを発行する。そして、分岐予測によりアドレス蓄積バッファ（ＡＦＢ）３６で実行されてないトレースの方向へ分岐すると予測した場合においても、そのアドレスを発行し、命令キャッシュとしてデータを持っていないかを確認することが可能となる。
【０１４７】
但し、統合キャッシュ５０はタグの比較を４個のアドレスで行なわなくてはならないため、４個のタグディレクトリ５５が設けられている。統合キャッシュ５０ではこの４つのアドレスを受けとり、ヒット判定を行なう。もし、トレースフェッチアドレスとして保証されていない基本ブロックがヒットした場合は、その命令列も同時に命令フェッチを行なう。この方式により、１度の命令フェッチの際に、途中までがトレースデータで、途中からは初めて実行される命令キャッシュのデータという命令列を同時にフェッチすることが可能となる。
【０１４８】
（第５実施形態）
図２５は本発明の第５実施形態に係わる多ポート命令・トレース統合キャッシュの要部を取出して示すブロック図である。図１０に示す第３実施形態の多ポート命令・トレース統合キャッシュ３０と同一部分には同一符号を付して重複する部分の詳細説明を省略する。
【０１４９】
この第５実施形態の多ポート命令・トレース統合キャッシュは、図１０に示す第３実施形態の多ポート命令・トレース統合キャッシュ３０におけるタグディレクトリ３９を、命令用タグディレクトリ３９ａとトレース用タグディレクトリ３９ｂとに分割している。
【０１５０】
そして、命令用タグディレクトリ３９ａにおけるフェッチアドレス３８のインデックスに指定される各領域４５には、この領域４５が有効であることを示す有効（ｖａｌｉｄ）ビット、及びタグ１が記憶されている。また、トレース用タグディレクトリ３９ｂにおけるフェッチアドレス３８のインデックスに指定される各領域４５には、この領域４５が有効であることを示す有効（ｖａｌｉｄ）ビット、タグ１、タグ２、及びトレースフェッチアドレスの集合４６が記憶されている。
【０１５１】
命令キャッシュヒット判定回路４０ａは、領域４５における有効（ｖａｌｉｄ）ビットが有効で、タグ１が一致すれば、命令キャッシュのデータがヒットする。一方、トレースキャッシュヒット判定回路４０ｂは、領域４５における有効（ｖａｌｉｄ）ビットが有効で、タグ１、２が一致すれば、トレースキャッシュのデータがヒットする。命令キャッシュヒット判定回路４０ａ及びトレースキャッシュヒット判定回路４０ｂがヒットした場合におけるフェッチアドレス選択部４１以降の動作は、図１０に示す第３実施形態に係わる多ポート命令・トレース統合キャッシュ３０とほぼ同じであるので説明を省略する。なお、同時にヒットした場合は、トレースキャッシュヒット判定回路４０ｂのヒットが優先される。
【０１５２】
このように構成された第５実施形態の多ポート命令・トレース統合キャッシュにおいては、各タグディレクトリ３９ａ、３９ｂに、トレース識別ビットを設定する必要ない。したがって、各キャッシュヒット判定回路４０ａ、４０ｂの判定処理が簡素化される。
【０１５３】
なお、図２５に示した第５実施形態の多ポート命令・トレース統合キャッシュにおいては、トレース用タグディレクトリ３９ｂにおける各領域４５にトレースフェッチアドレスの集合４６が記憶さているが、このトレースフェッチアドレスの集合４６を、トレース用タグディレクトリ３９ｂでなくて、図１２に示す第４実施形態の多ポート命令・トレース統合キャッシュと同様に、外部のフェッチライン・アドレスキャッシュ（ＦＬＡＣ）５１に格納することが可能である。
【０１５４】
この場合、図１２に示す第４実施形態の多ポート命令・トレース統合キャッシュと同様に、多ポート命令・トレース統合キャッシュ内に、複数の命令用タグディレクトリ３９ａと複数のトレース用タグディレクトリ３９ｂと、各タグディレクトリ３９ａ、３９ｂに対応して、複数の命令キャッシュヒット判定回路４０ａ及び複数のトレースキャッシュヒット判定回路４０ｂが設けられている。
【０１５５】
（第６実施形態）
図２６は本発明の第６実施形態に係わる多ポート命令・トレース・データ統合キャッシュの概略構成図である。図８に示す多ポート命令・データ統合キャッシュ１０と同一部分には同一符号を付して重複する部分の詳細説明を省略する。
【０１５６】
この第６実施形態の多ポート命令・トレース・データ統合キャッシュ６０（以降、統合キャッシュ６０と略記する）は、従来の命令キャッシュとトレースキャッシュとデータキャッシュとの３つのキャッシュを統合した統合キャッシュである。
【０１５７】
この第６実施形態の統合キャッシュ６０においては、Ｉ０〜Ｉ７の８個の命令ポート１１（データ幅：６４ビット）、この８個の命令ポートと重複するＩ０〜Ｉ７の８個のトレースポート１１（データ幅：６４ビット）、及びＤ０、Ｄ１の２個のデータポート１１（データ幅：８ビット）が設けられている。
【０１５８】
各命令ポート、各トレースポートは、各バンク１９のアドレスの下位２ビットでプリデコードされており、特定のバンク１９にしかアクセスできない構造とし、同時には連続したアドレスヘのアクセスでは、必ずアクセス競合が起こらないような構成とする。さらに、連続しないアドレスヘのアクセスも、アドレスの下位２ビットが衝突しない限り可能である。一方、データポートは、命令ポート及びトレースポートより連続したアドレスヘのアクセスの確率は低いため、全てのバンク１９にアクセスできる構造である。さらに、各バンク１９には、各ポート１１側の４個のポートをバンク１９側に対する１個のポートに変換するポート数変換回路１８が取付けられている。
【０１５９】
図８の統合キャッシュ１０においては同時に４命令を読出し可能とした。
これに対して、この図２６の統合キャッシュ６０においては、この統合キャッシュ６０を命令キャッシュとしてアクセスする場合、４つの命令のみなく、Ｉ０〜Ｉ７の８個の命令ポートを用いて、同時に８つの連続するバンク１９にアクセスし、合計８個の連続する命令を読出すことが可能である。
【０１６０】
また、この統合キャッシュ６０をトレースキャッシュとしてアクセスする場合、上述した他の実施形態と同じく、Ｉ０〜Ｉ７の８個のトレースポートを用いて、履歴を使用して対応するバンク１９にアクセスして、命令列からなるトレースデータを読出す。この場合、完全に連続したバンク１９でなくて、履歴によっては連続しないバンク１９にアクセス可能である。
【０１６１】
また、この統合キャッシュ６０をデータキャッシュとしてアクセスする場合、Ｄ０、Ｄ１の２個のデータポートを用いて各バンク１９にアクセスして、データを読出す。
【０１６２】
このように、構成された第６実施形態の統合キャッシュ６０においては、従来の命令キャッシュとトレースキャッシュとデータキャッシュとの３つのキャッシュを１つのキャッシュに統合できるので、キャッシュ全体としての必要とする記憶容量をさらに減少できる。
【０１６３】
（第７実施形態）
図２７は本発明の第７実施形態に係わる多ポート命令・トレース・データ統合キャッシュ６１の概略構成図である。図１０に示す第３実施形態の多ポート命令・トレース統合キャッシュ３０と同一部分には同一符号を付して重複する部分の詳細説明は省略する。
【０１６４】
この第７実施形態の多ポート命令・トレース・データ統合キャッシュ６１（以下、統合キャッシュ６１と省略する）においては、多ポートバンクメモリ４３の各バンク４２から各データを読出すバンクアクセス回路４４の出力ポートとして、命令データ及びトレースデータを読出すための出力ポートの他に、命令ではない通常のデータ（ワード）を読出すための出力ポートが設けられている。
【０１６５】
そして、選択された４つのバンク４２から通常のデータ（ワード）の出力ポートを介して読出された１ラインの４データ（４ワード）のうちプロセッサが必要とする１つのデータ（１ワード）を選択する選択回路６２が組込まれている。
【０１６６】
すなわち、この第７実施形態の統合キャッシュ６１においては、図１０に示す第３実施形態の統合キャッシュ３０における命令及びトレースの読出し機能をそのまま使用する。そして、命令の読出しの機能（アクセス機能）をそのままデータの読出し機能（アクセス機能）に使用する。
【０１６７】
第３実施形態の統合キャッシュ３０における命令キャッシュのデータ幅は４命令であるので、この命令の読出しの機能（アクセス機能）に対してデータキャッシュとしてアクセスすると、４命令に対応する連続する４ワードが取出される。したがって、上述したように、選択回路６２を用いて、プロセッサが必要とする１つのデータ（ワード）を選択する必要がある。
【０１６８】
命令キャッシュとしての１ラインの４データ（４ワード）のアドレスは、下位２ビットは必ず［００］から始まり、［０１］、［１０］、［１１］へと続く。したがって、図２８に示すようように、プロセッサが必要とする１つのデータとして、プロセッサから出力されフェッチアドレス３８の下位２ビットの値と一致したデータを選択して、命令バッファ３２へ送出する。
【０１６９】
なお、データキャッシュとしてこの統合キャッシュ６１に対してアクセスを行った結果、トレースキャッシュとしてヒットした場合、データキャッシュとしてのデータが保証できないために、キャッシュミスと判定する。
【０１７０】
このように構成された第７実施形態の統合キャッシュ６１においては、命令の読出しの機能（アクセス機能）をそのままデータの読出し機能（アクセス機能）に使用することによって、従来の命令キャッシュとトレースキャッシュとデータキャッシュとの３つのキャッシュを１つのキャッシュに統合できるので、キャッシュ全体としての必要とする記憶容量をさらに減少できる。
【０１７１】
なお、本発明は上述した各実施形態の統合キャッシュに限定されるものではない。各実施形態の統合キャッシュにおいては、統合キャッシュのバンクから１度に４個の命令又はデータを読出すように構成した。しかしながら、１度に読出す命令又はデータの数は４個に限定されるものではなくて、任意に設定することが可能である。
【０１７２】
【発明の効果】
以上説明したように、本発明の多ポート命令・データ統合キャッシュ、多ポート命令・トレース統合キャッシュ、及び多ポート命令・トレース・データ統合キャッシュにおいては、バンク構造を用い、各ポートに対するデータ幅及び容量を任意に設定でき、その結果、アクセスパターンの異なる命令やデータの情報を１つのキャッシュに統合でき、フラグメンテーションの発生を防止し、キャッシュの実効容量を増加させることができる。
【図面の簡単な説明】
【図１】本発明の第１実施形態の多ポート命令・データ統合キャッシュを並列プロセッサに接続した状態を示す模式図
【図２】同統合キャッシュの概略構成図
【図３】同統合キャッシュをＨＭＡ構造を用いて構成した場合の詳細構成図
【図４】本発明の第２実施形態の多ポート命令・データ統合キャッシュの概略構成図
【図５】同統合キャッシュをクロスバスイッチネットワーク構造を用いて構成した場合の詳細構成図
【図６】第１、第２の実施形態の統合キャッシュにおける容量とミス率との関係を示す図
【図７】第１、第２の実施形態の統合キャッシュにおけるバンク数と競合発生率との関係を示す図
【図８】第１の実施形態の統合キャッシュを実際の並列プロセッサに応用した状態を示す図
【図９】本発明の第３実施形態に係わる多ポート命令・トレース統合キャッシュが適用される並列プロセッサの要部を示す模式図
【図１０】同統合キャッシュの概略構成図
【図１１】同統合キャッシュのタグディレクトリ及びヒット判定回路の詳細構成図
【図１２】同統合キャッシュの多ポートバンクメモリの詳細構成図
【図１３】同統合キャッシュにおける各バンクに対するアドレス指定状態を示す図
【図１４】同統合キャッシュにおける各バンクの分岐先を示す図
【図１５】同統合キャッシュが組込まれた並列プロセッサのアドレス蓄積バッファの記憶内容を示す図
【図１６】同統合キャッシュが組込まれた並列プロセッサの命令蓄積バッファの記憶内容を示す図
【図１７】同統合キャッシュが組込まれた並列プロセッサにおける実行されるパスを示す図
【図１８】同統合キャッシュが組込まれた並列プロセッサのアドレス蓄積バッファの記憶内容を示す図
【図１９】同じく同統合キャッシュが組込まれた並列プロセッサのアドレス蓄積バッファの記憶内容を示す図
【図２０】同統合キャッシュが組込まれた並列プロセッサの命令フェッチアドレスの発行状態を示す図
【図２１】本発明の第４実施形態に係わる多ポート命令・トレース統合キャッシュが適用される並列プロセッサの要部を示す模式図
【図２２】同統合キャッシュの効果を説明するための図
【図２３】同統合キャッシュの概略構成図
【図２４】同統合キャッシュのタグディレクトリ及びヒット判定回路の詳細構成図
【図２５】本発明の第５実施形態に係わる多ポート命令・トレース統合キャッシュの概略構成図
【図２６】本発明の第６実施形態に係わる多ポート命令・トレース・データ統合キャッシュの概略構成図
【図２７】本発明の第７実施形態に係わる多ポート命令・トレース・データ統合キャッシュの概略構成図
【図２８】同統合キャッシュの選択回路の動作を説明するための図
【図２９】従来のキャッシュとプロセッサとの関係を示す図
【図３０】従来のトレースキャッシュと命令キャッシュとの動作を示す図
【符号の説明】
１０…多ポート命令・データ統合キャッシュ
１１、１４…ポート
１２ａ〜１２ｄ…ポートユニット
１３…並列プロセッサ
１５ａ〜１５ｄ…アクセスポートユニット
１８、１８ａ…ポート数変換回路
１９、１９ａ、４２…バンク
３０、５０…多ポート命令・トレース統合キャッシュ
３１…分岐予測部
３２…命令バッファ
３３…命令実行部
３４…蓄積ユニット
３５…命令蓄積バッファ
３６…アドレス命令蓄積バッファ
３７…主記憶
３８…フェッチアドレス
３９、５２、５５…タグディレクトリ
３９ａ…命令用タグディレクトリ
３９ｂ…トレース用タグディレクトリ
４０…ヒット判定回路
４１、５４…フェッチアドレス選択部
４３…多ポートバンクメモリ
４４…バンクアクセス回路
４７、４０ａ…命令キャッシュヒット判定回路
４８、４０ｂ…トレースキャッシュヒット判定回路
５１…フェッチライン・アドレスキャッシュ
６０、６１…多ポート命令・トレース・データ統合キャッシュ
【図１】
2004157593.tif 000003
【図２】
2004157593.tif 000004
【図３】
2004157593.tif 000005
【図４】
2004157593.tif 000006
【図５】
2004157593.tif 000007
【図６】
2004157593.tif 000008
【図７】
2004157593.tif 000009
【図８】
2004157593.tif 000010
【図９】
2004157593.tif 000011
【図１０】
2004157593.tif 000012
【図１１】
2004157593.tif 000013
【図１２】
2004157593.tif 000014
【図１３】
2004157593.tif 000015
【図１４】
2004157593.tif 000016
【図１５】
2004157593.tif 000017
【図１６】
2004157593.tif 000018
【図１７】
2004157593.tif 000019
【図１８】
2004157593.tif 000020
【図１９】
2004157593.tif 000021
【図２０】
2004157593.tif 000022
【図２１】
2004157593.tif 000023
【図２２】
2004157593.tif 000024
【図２３】
2004157593.tif 000025
【図２４】
2004157593.tif 000026
【図２５】
2004157593.tif 000027
【図２６】
2004157593.tif 000028
【図２７】
2004157593.tif 000029
【図２８】
2004157593.tif 000030
【図２９】
2004157593.tif 000031
【図３０】
2004157593.tif 000032
【手続補正書】
【提出日】平成15年2月7日(2003.2.7)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００７８
【補正方法】変更
【補正の内容】
【００７８】
バンク行選択回路２０とバンク列選択回路２１は、１番〜１５番の各ポート１１から入力されたｎ＝１５個のアドレスＡＤを、ｎ個の行バンク選択信号ＲＳｎ、ｎ個の列バンク選択信号ＣＳｎ、及びｎ個のバンク内アドレスＡｎに変換する。このｎ個の行バンク選択信号ＲＳｎ、ｎ個の列バンク選択信号ＣＳｎでｎ個の各データＤｎがアクセスされるバンク構造体１７が決定される。


【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００８０
【補正方法】変更
【補正の内容】
【００８０】
バンク１９とポート数変換回路１８とからなるバンク構造体１７で構成される第１階層のバンク１９は、大きく分けて、マトリックス状に配列された複数の１ポートメモリセル２２と、行選択回路２３と、列選択回路２４とで構成されている。


【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００８１
【補正方法】変更
【補正の内容】
【００８１】
ポート数変換回路１８は、ｎ個の行バンク選択信号ＲＳｎ、ｎ個の列バンク選択信号ＣＳｎから自己が指定されていることを示すバンク選択信号Ｓ、ｎ個のバンク内アドレスＡｎから選択した、自己のバンク内アドレスＡ、及びｎ個のデータＤｎから選択した自己のデータＤをバンク１９へ送出する。


【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００８２
【補正方法】変更
【補正の内容】
【００８２】
バンク１９の行選択回路２３と列選択回路２４とは、自己が指定されていることを示すバンク選択信号Ｓを受信すると、バンク内アドレスＡを用いて、最終的にアクセスすべき１ポートメモリセル２２を特定する行セル選択信号ＲＳ、列セル選択信号ＣＳを動作状態にする。したがって、最終的にアクセスすべき１個の１ポートメモリセル２２が動作状態になる。なお、データＤは列セル選択信号ＣＳに載せられて各１ポートメモリセル２２に印加されるが、動作状態の１個の１ポートメモリセル２２がデータＤを取込む。


【手続補正５】
【補正対象書類名】図面
【補正対象項目名】図２
【補正方法】変更
【補正の内容】
【図２】
2004157593.tif 000033
【手続補正６】
【補正対象書類名】図面
【補正対象項目名】図３
【補正方法】変更
【補正の内容】
【図３】
2004157593.tif 000034
【手続補正７】
【補正対象書類名】図面
【補正対象項目名】図４
【補正方法】変更
【補正の内容】
【図４】
2004157593.tif 000035