JPH07219772A - データキャッシュ機構 - Google Patents
データキャッシュ機構Info
- Publication number
- JPH07219772A JPH07219772A JP1150794A JP1150794A JPH07219772A JP H07219772 A JPH07219772 A JP H07219772A JP 1150794 A JP1150794 A JP 1150794A JP 1150794 A JP1150794 A JP 1150794A JP H07219772 A JPH07219772 A JP H07219772A
- Authority
- JP
- Japan
- Prior art keywords
- load
- cache
- instruction
- store
- store instructions
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Advance Control (AREA)
Abstract
(57)【要約】
【目的】 オブジェクト・コードの互換性を維持し、命
令レベルの並列度を損なわないために、ハードウェア回
路によってエイリアス・リゾリューションと同様なアド
レス競合を解決することのできる、データキャッシュ機
構を提供することを目的とする。 【構成】 マルチポートデータメモリと、マルチポート
タグメモリと、アドレス競合を判定する NC2 個の比較
器と、N個のロード又はストア命令を同定するN個のロ
ード又はストア信号と比較器で判定された NC2 個のア
ドレス競合の有無を示す信号が入力され、N個のロード
又はストア命令のスケジュールパターンを出力するキャ
ッシュ・ヒットスケジュール手段とを備えたものであ
る。
令レベルの並列度を損なわないために、ハードウェア回
路によってエイリアス・リゾリューションと同様なアド
レス競合を解決することのできる、データキャッシュ機
構を提供することを目的とする。 【構成】 マルチポートデータメモリと、マルチポート
タグメモリと、アドレス競合を判定する NC2 個の比較
器と、N個のロード又はストア命令を同定するN個のロ
ード又はストア信号と比較器で判定された NC2 個のア
ドレス競合の有無を示す信号が入力され、N個のロード
又はストア命令のスケジュールパターンを出力するキャ
ッシュ・ヒットスケジュール手段とを備えたものであ
る。
Description
【0001】
【産業上の利用分野】本発明はデータキャッシュ機構、
特にスーパースカラ等の並列処理CPUの並列度を上げ
るためのメモリアドレスの競合を回避するアルゴリズム
及び機構に関するものである。
特にスーパースカラ等の並列処理CPUの並列度を上げ
るためのメモリアドレスの競合を回避するアルゴリズム
及び機構に関するものである。
【0002】
【従来の技術】スーパスカラは、ハードウェア回路によ
って並列実行可能な命令を検出・スケージュールし、複
数命令の同時実行を行う高速処理プロセッサである。ス
ーパースカラでは、同時実行可能な命令の検出と並列実
行のためのハードウェア機構が必要になるが、従来の逐
次型プロセッサ(スカラプロセッサ)の命令セットを変
更せずに命令レベルの並列処理を達成できる。スーパー
スカラでは、複数命令を同時実行する(言い換えれば、
並列度を上げる)ことによってスカラプロセッサの高速
化を目指したものである。
って並列実行可能な命令を検出・スケージュールし、複
数命令の同時実行を行う高速処理プロセッサである。ス
ーパースカラでは、同時実行可能な命令の検出と並列実
行のためのハードウェア機構が必要になるが、従来の逐
次型プロセッサ(スカラプロセッサ)の命令セットを変
更せずに命令レベルの並列処理を達成できる。スーパー
スカラでは、複数命令を同時実行する(言い換えれば、
並列度を上げる)ことによってスカラプロセッサの高速
化を目指したものである。
【0003】ここで、説明を簡略化するために、以下の
項目を仮定する。 i.スケジューリング対象命令数(同時実行可能かどう
かを扱う命令数)および同時フェッチされる命令数(フ
ェッチブロック)は4命令を基本とする。4命令はプロ
グラム順にそれぞれ命令1(またはInst.1,In
st.はInstructionの略とする)、命令
2、命令3、命令4と呼ぶ。なお、本発明は4命令に限
らず2命令以上N命令まで拡張することは容易である。 ii. 全ての命令は1クロックで実行される。そのため、
浮動小数点演算やアドレス計算を供なうload/st
ore命令などは考慮しない。ただし、ロジックは少し
複雑になるが、実行に数クロックを要する命令を考慮す
ることは容易である。 iii.パイプライン構造は以下のような4ステージ構成を
想定している:命令フェッチ(IF;Instruct
ion Fetch)、命令デコード(ID;Inst
ruction Decode)、実行(EX;Exe
cution)、結果の書き込み(または格納)(W
B;Write Back)である(図3を参照)。
項目を仮定する。 i.スケジューリング対象命令数(同時実行可能かどう
かを扱う命令数)および同時フェッチされる命令数(フ
ェッチブロック)は4命令を基本とする。4命令はプロ
グラム順にそれぞれ命令1(またはInst.1,In
st.はInstructionの略とする)、命令
2、命令3、命令4と呼ぶ。なお、本発明は4命令に限
らず2命令以上N命令まで拡張することは容易である。 ii. 全ての命令は1クロックで実行される。そのため、
浮動小数点演算やアドレス計算を供なうload/st
ore命令などは考慮しない。ただし、ロジックは少し
複雑になるが、実行に数クロックを要する命令を考慮す
ることは容易である。 iii.パイプライン構造は以下のような4ステージ構成を
想定している:命令フェッチ(IF;Instruct
ion Fetch)、命令デコード(ID;Inst
ruction Decode)、実行(EX;Exe
cution)、結果の書き込み(または格納)(W
B;Write Back)である(図3を参照)。
【0004】このようなパイプライン構造は、最初にI
Fステージでは、4命令を同時に命令キャッシュ(また
は主記憶装置)から取り込む。このとき、4命令の先頭
の命令はプログラム・カウンタ(PC)から与えられ
る。次のIDステージの前半で、4命令のオペコード
(加算、減算のような操作を定義するビット列)とオペ
ランド(演算の対象を示す。本例では、具体的にはレジ
スタの番地を指定する。)がそれぞれデコード(解読)
される。そして、この解読の結果、各命令の種類が分か
り、その信号が生成される(本例では、load/st
ore命令を同定するload/store信号とな
り、load/store命令と同じ数の、4つのlo
ad/store信号が生成される)。そして、IDス
テージの後半で、オペランドの値がレジスタ・ファイル
から読み込まれる。この読み込みと並行して命令発行の
ためのスケジューリングがなされる。
Fステージでは、4命令を同時に命令キャッシュ(また
は主記憶装置)から取り込む。このとき、4命令の先頭
の命令はプログラム・カウンタ(PC)から与えられ
る。次のIDステージの前半で、4命令のオペコード
(加算、減算のような操作を定義するビット列)とオペ
ランド(演算の対象を示す。本例では、具体的にはレジ
スタの番地を指定する。)がそれぞれデコード(解読)
される。そして、この解読の結果、各命令の種類が分か
り、その信号が生成される(本例では、load/st
ore命令を同定するload/store信号とな
り、load/store命令と同じ数の、4つのlo
ad/store信号が生成される)。そして、IDス
テージの後半で、オペランドの値がレジスタ・ファイル
から読み込まれる。この読み込みと並行して命令発行の
ためのスケジューリングがなされる。
【0005】次のEXステージではALU(Arith
metic and logicunit:演算処理ユ
ニット)命令は演算を行ない、load/store命
令はデータ・キャッシュにアクセスする。最後のWBス
テージでは、EXステージの結果をレジスタ・ファイル
に書き込む。
metic and logicunit:演算処理ユ
ニット)命令は演算を行ない、load/store命
令はデータ・キャッシュにアクセスする。最後のWBス
テージでは、EXステージの結果をレジスタ・ファイル
に書き込む。
【0006】従来、マルチポート・キャッシュを使用
し、複数のload/store命令がキャッシュにヒ
ットすれば、これら複数の命令の同時実行が可能である
が、この同時実行を可能とするためには、メモリアクセ
ス命令のメモリ参照アドレスが一致する場合(メモリア
ドレス競合)、これを回避する機構が必要である。もし
これらのアドレスが同一であれば、たとえばマルチポー
ト・データメモリを使用していても、同一アドレスへの
同時読み書きや同時書き込みが不可能となるからである
(一種の構造ハザード)。
し、複数のload/store命令がキャッシュにヒ
ットすれば、これら複数の命令の同時実行が可能である
が、この同時実行を可能とするためには、メモリアクセ
ス命令のメモリ参照アドレスが一致する場合(メモリア
ドレス競合)、これを回避する機構が必要である。もし
これらのアドレスが同一であれば、たとえばマルチポー
ト・データメモリを使用していても、同一アドレスへの
同時読み書きや同時書き込みが不可能となるからである
(一種の構造ハザード)。
【0007】従来、このメモリアドレス競合を回避する
ためのソフトウェア指向のアプローチを“エイリアス・
リゾリューション(alias resolutio
n)”といい、Wallは、エイリアス・リゾリューシ
ョンが命令レベルの並列度の抽出に貢献することを示し
た(D.W.Wall,“Limits of Ins
truction−Level Parallelis
m”,Proc. Fourth Int’l Con
f. Architectural Support
for Programming Languages
and Operating Systems,p
p.176−188,1991を参照)。例えば、in
struction inspection(上記文献
を参照)やrun−time disasmbigua
tion(以下RTDと略す)(A.Nicolau,
“Run−Time Disambiguation:
Coping with Statically Un
predictableDependencies”,
IEEE Trans. Comput.,Vol.3
8,No.5,pp.663−678,1988を参
照)などの、高機能最適化コンパイラだけがエイリアス
・リゾリューションを解決できるものであった。
ためのソフトウェア指向のアプローチを“エイリアス・
リゾリューション(alias resolutio
n)”といい、Wallは、エイリアス・リゾリューシ
ョンが命令レベルの並列度の抽出に貢献することを示し
た(D.W.Wall,“Limits of Ins
truction−Level Parallelis
m”,Proc. Fourth Int’l Con
f. Architectural Support
for Programming Languages
and Operating Systems,p
p.176−188,1991を参照)。例えば、in
struction inspection(上記文献
を参照)やrun−time disasmbigua
tion(以下RTDと略す)(A.Nicolau,
“Run−Time Disambiguation:
Coping with Statically Un
predictableDependencies”,
IEEE Trans. Comput.,Vol.3
8,No.5,pp.663−678,1988を参
照)などの、高機能最適化コンパイラだけがエイリアス
・リゾリューションを解決できるものであった。
【0008】
【発明が解決しようとする課題】いくつかのスーパース
カラはload/store命令の正しい実行を保証す
るためにRTDと同様な方法を使用していが、上記のよ
うな方法は、VLIW(Very Long Inst
ruction Word;長命令によって多数のAL
U、ロードストアユニットを独立に並列制御するプロセ
ッサで、ハードウェア回路ではなく、コンパイラが長命
令語の中に含まれる複数の命令が同時に実行可能なよう
に、長命令語を生成する)のようなソース・コードのレ
ベルの並列度を高める場合には効果的だが、オブジェク
ト・コードのレベルでは、エイリアス・リゾリューショ
ンを検出するために、オブジェクト・コードに対し、命
令を挿入しなければならず、並列度を損なうことになる
ため、それほど効果的ではないという問題点があった。
カラはload/store命令の正しい実行を保証す
るためにRTDと同様な方法を使用していが、上記のよ
うな方法は、VLIW(Very Long Inst
ruction Word;長命令によって多数のAL
U、ロードストアユニットを独立に並列制御するプロセ
ッサで、ハードウェア回路ではなく、コンパイラが長命
令語の中に含まれる複数の命令が同時に実行可能なよう
に、長命令語を生成する)のようなソース・コードのレ
ベルの並列度を高める場合には効果的だが、オブジェク
ト・コードのレベルでは、エイリアス・リゾリューショ
ンを検出するために、オブジェクト・コードに対し、命
令を挿入しなければならず、並列度を損なうことになる
ため、それほど効果的ではないという問題点があった。
【0009】また、DSNSプロセッサ(納富・ほか3
名、“DSN型スーパースカラ・プロセッサ・プロトタ
イプのロードストア・パイプライン”、情報処理学会研
究報告、91−ARC−86、1991を参照)では、
ハードウェアによる検出は一切行なわず、コンパイル時
の静的な検出で全て対応しており、このコンパイラは個
々のload/store命令に実行順序を指定する情
報を付加して(すなわち命令を変形している。)、実行
時にこれに基づいて制御しているので、オブジェクト・
コードの互換性がなくなるという問題点があった。
名、“DSN型スーパースカラ・プロセッサ・プロトタ
イプのロードストア・パイプライン”、情報処理学会研
究報告、91−ARC−86、1991を参照)では、
ハードウェアによる検出は一切行なわず、コンパイル時
の静的な検出で全て対応しており、このコンパイラは個
々のload/store命令に実行順序を指定する情
報を付加して(すなわち命令を変形している。)、実行
時にこれに基づいて制御しているので、オブジェクト・
コードの互換性がなくなるという問題点があった。
【0010】本発明は、このような問題点を解決するた
めになされたものであり、オブジェクト・コードの互換
性を維持し、命令レベルの並列度を損なわないために、
ハードウェア回路によってエイリアス・リゾリューショ
ンと同様なアドレス競合を解決するものであり、命令の
実行時に、アドレス競合を検出し、これが無ければマル
チポート・キャッシュを使用することによって、2つ以
上のload/store命令を同時に実行することの
できるデータキャッシュ機構を提供することを目的とす
る。
めになされたものであり、オブジェクト・コードの互換
性を維持し、命令レベルの並列度を損なわないために、
ハードウェア回路によってエイリアス・リゾリューショ
ンと同様なアドレス競合を解決するものであり、命令の
実行時に、アドレス競合を検出し、これが無ければマル
チポート・キャッシュを使用することによって、2つ以
上のload/store命令を同時に実行することの
できるデータキャッシュ機構を提供することを目的とす
る。
【0011】
【課題を解決するための手段】第1の発明に係るデータ
キャッシュ機構は、マルチポートデータメモリと、マル
チポートタグメモリと、N個のload/store命
令間の参照アドレスが同一かどうかのアドレス競合を判
定する NC2 個の比較器と、N個のload/stor
e命令を同定するN個のload/store信号と比
較器で判定された NC2 個のアドレス競合の有無を示す
信号が入力され、N個のload/store命令のキ
ャッシュ・ヒット時の各命令が何クロック目にそれぞれ
データキャッシュ内のデータメモリにアクセスすべきか
を示した信号であるスケジュールパターンを出力するキ
ャッシュ・ヒットスケジュール手段とを備え、キャッシ
ュ・ヒットスケジュール手段の出力するスケジュールパ
ターンに基づいてメモリアドレス競合を回避し、複数の
load/store命令の同時実行を行うものであ
る。
キャッシュ機構は、マルチポートデータメモリと、マル
チポートタグメモリと、N個のload/store命
令間の参照アドレスが同一かどうかのアドレス競合を判
定する NC2 個の比較器と、N個のload/stor
e命令を同定するN個のload/store信号と比
較器で判定された NC2 個のアドレス競合の有無を示す
信号が入力され、N個のload/store命令のキ
ャッシュ・ヒット時の各命令が何クロック目にそれぞれ
データキャッシュ内のデータメモリにアクセスすべきか
を示した信号であるスケジュールパターンを出力するキ
ャッシュ・ヒットスケジュール手段とを備え、キャッシ
ュ・ヒットスケジュール手段の出力するスケジュールパ
ターンに基づいてメモリアドレス競合を回避し、複数の
load/store命令の同時実行を行うものであ
る。
【0012】第2の発明に係るデータキャッシュ機構
は、マルチポートデータメモリと、マルチポートタグメ
モリと、N個のload/store命令がキャッシュ
にヒットしたかミスしたかを判定するN個の第1の比較
器と、N個のload/store命令間の参照アドレ
スが同一ブロック内にあるかどうかのブロック競合を判
定する NC2 個の第2の比較器と、N個のload/s
tore命令を同定するN個のload/store信
号、第1の比較器で判定されたN個のload/sto
re命令のキャッシュヒット/ミス信号及び第2の比較
器で判定された NC2 個のブロック競合の有無を示す信
号が入力され、N個のload/store命令のキャ
ッシュ・ミス時の各命令が何クロック目にそれぞれメイ
ンメモリにアクセスすべきかを示した信号であるスケジ
ュールパターンを出力するキャッシュ・ミススケジュー
ル手段とを備え、キャッシュ・ミススケジュール手段の
出力するスケジュールパターンに基づいて、複数のlo
ad/store命令がキャッシュ・ミス、かつ、同一
ブロック内に存在するときは、ブロックの置き換えを1
回で行うものである。
は、マルチポートデータメモリと、マルチポートタグメ
モリと、N個のload/store命令がキャッシュ
にヒットしたかミスしたかを判定するN個の第1の比較
器と、N個のload/store命令間の参照アドレ
スが同一ブロック内にあるかどうかのブロック競合を判
定する NC2 個の第2の比較器と、N個のload/s
tore命令を同定するN個のload/store信
号、第1の比較器で判定されたN個のload/sto
re命令のキャッシュヒット/ミス信号及び第2の比較
器で判定された NC2 個のブロック競合の有無を示す信
号が入力され、N個のload/store命令のキャ
ッシュ・ミス時の各命令が何クロック目にそれぞれメイ
ンメモリにアクセスすべきかを示した信号であるスケジ
ュールパターンを出力するキャッシュ・ミススケジュー
ル手段とを備え、キャッシュ・ミススケジュール手段の
出力するスケジュールパターンに基づいて、複数のlo
ad/store命令がキャッシュ・ミス、かつ、同一
ブロック内に存在するときは、ブロックの置き換えを1
回で行うものである。
【0013】第3の発明に係るデータキャッシュ機構
は、マルチポートデータメモリと、マルチポートタグメ
モリと、N個のload/store命令間の参照アド
レスが同一かどうかのアドレス競合を判定する NC2 個
の第1の比較器と、N個のload/store命令が
キャッシュにヒットしたかミスしたかを判定するN個の
第2の比較器と、N個のload/store命令間の
参照アドレスが同一ブロック内にあるかどうかのブロッ
ク競合を判定する NC2 個の第3の比較器と、N個のl
oad/store命令を同定するN個のload/s
tore信号と第1の比較器で判定された NC2 個のア
ドレス競合の有無を示す信号が入力され、N個のloa
d/store命令のキャッシュ・ヒット時の各命令が
何クロック目にそれぞれデータキャッシュ内のデータメ
モリにアクセスすべきかを示した信号であるスケジュー
ルパターンを出力するキャッシュ・ヒットスケジュール
手段と、N個のload/store命令を同定するN
個のload/store信号、第2の比較器で判定さ
れたN個のload/store命令のキャッシュヒッ
ト/ミス信号及び第3の比較器で判定された NC2 個の
ブロック競合の有無を示す信号が入力され、N個のlo
ad/store命令のキャッシュ・ミス時の各命令が
何クロック目にそれぞれメインメモリにアクセスすべき
かを示した信号であるスケジュールパターンを出力する
キャッシュ・ミススケジュール手段とを備え、キャッシ
ュ・ヒットスケジュール手段の出力するスケジュールパ
ターンに基づいてメモリアドレス競合を回避し、複数の
load/store命令の同時実行を行い、また、キ
ャッシュ・ミススケジュール手段の出力するスケジュー
ルパターンに基づいて、複数のload/store命
令がキャッシュ・ミス、かつ、同一ブロック内に存在す
るときは、ブロックの置き換えを1回で行うものであ
る。
は、マルチポートデータメモリと、マルチポートタグメ
モリと、N個のload/store命令間の参照アド
レスが同一かどうかのアドレス競合を判定する NC2 個
の第1の比較器と、N個のload/store命令が
キャッシュにヒットしたかミスしたかを判定するN個の
第2の比較器と、N個のload/store命令間の
参照アドレスが同一ブロック内にあるかどうかのブロッ
ク競合を判定する NC2 個の第3の比較器と、N個のl
oad/store命令を同定するN個のload/s
tore信号と第1の比較器で判定された NC2 個のア
ドレス競合の有無を示す信号が入力され、N個のloa
d/store命令のキャッシュ・ヒット時の各命令が
何クロック目にそれぞれデータキャッシュ内のデータメ
モリにアクセスすべきかを示した信号であるスケジュー
ルパターンを出力するキャッシュ・ヒットスケジュール
手段と、N個のload/store命令を同定するN
個のload/store信号、第2の比較器で判定さ
れたN個のload/store命令のキャッシュヒッ
ト/ミス信号及び第3の比較器で判定された NC2 個の
ブロック競合の有無を示す信号が入力され、N個のlo
ad/store命令のキャッシュ・ミス時の各命令が
何クロック目にそれぞれメインメモリにアクセスすべき
かを示した信号であるスケジュールパターンを出力する
キャッシュ・ミススケジュール手段とを備え、キャッシ
ュ・ヒットスケジュール手段の出力するスケジュールパ
ターンに基づいてメモリアドレス競合を回避し、複数の
load/store命令の同時実行を行い、また、キ
ャッシュ・ミススケジュール手段の出力するスケジュー
ルパターンに基づいて、複数のload/store命
令がキャッシュ・ミス、かつ、同一ブロック内に存在す
るときは、ブロックの置き換えを1回で行うものであ
る。
【0014】
【作用】本発明は、ハードウェア回路により、命令の実
行時のアドレス競合を回避し、2つ以上のload/s
tore命令を同時に実行できるようにしたものであ
り、その動作を次の(a)〜(e)に分け説明する。
行時のアドレス競合を回避し、2つ以上のload/s
tore命令を同時に実行できるようにしたものであ
り、その動作を次の(a)〜(e)に分け説明する。
【0015】(a)Load/store命令の実行の
手続き 一連のload/store命令の実行の手続きを図2
に示す。本発明のデータキャッシュ機構では、もしlo
ad/store命令のうち一つでもキャッシュ・ミス
を引き起こしたら、ヒットしたload/store命
令がデータキャッシュにアクセスする前にメインメモリ
・アクセス・アルゴリズム(後述)に基づいてメインメ
モリとの置き換えがなされる。メインメモリとの置き換
えが終了した後、または、全てのload/store
命令がヒットした場合、データメモリ・アクセス・アル
ゴリズムに基づいてload/store命令はキャッ
シュ内のデータメモリにアクセスする。
手続き 一連のload/store命令の実行の手続きを図2
に示す。本発明のデータキャッシュ機構では、もしlo
ad/store命令のうち一つでもキャッシュ・ミス
を引き起こしたら、ヒットしたload/store命
令がデータキャッシュにアクセスする前にメインメモリ
・アクセス・アルゴリズム(後述)に基づいてメインメ
モリとの置き換えがなされる。メインメモリとの置き換
えが終了した後、または、全てのload/store
命令がヒットした場合、データメモリ・アクセス・アル
ゴリズムに基づいてload/store命令はキャッ
シュ内のデータメモリにアクセスする。
【0016】これは、データメモリ・アクセスのための
スケジュール・アルゴリズムを簡易化するためである。
このことにより、load/store命令がデータメ
モリへアクセスする時までに、ミスしたload/st
ore命令は全てヒット状態になっているため、データ
メモリ・アクセス・アルゴリズムが実装されるキャッシ
ュミス・スケジューリング論理回路に入力すべき情報と
して各load/stor命令がヒットであるかを示す
情報が必要でなくなる。
スケジュール・アルゴリズムを簡易化するためである。
このことにより、load/store命令がデータメ
モリへアクセスする時までに、ミスしたload/st
ore命令は全てヒット状態になっているため、データ
メモリ・アクセス・アルゴリズムが実装されるキャッシ
ュミス・スケジューリング論理回路に入力すべき情報と
して各load/stor命令がヒットであるかを示す
情報が必要でなくなる。
【0017】メインメモリ・アクセス・アルゴリズムで
は、ミスした命令間で同一ブロックに属する命令があれ
ば、それらの命令のブロック交換は一回のみで十分であ
り、同一ブロックに属さない命令については属する全て
のブロックがプログラム順に逐次置き換えがなされる。
データメモリ・アクセス・アルゴリズムでは、load
/store命令が同一アドレスを参照しているかどう
かが判別され、同一アドレスである場合は、プログラム
順に逐次実行となり、同一アドレスでなければ、並列実
行が可能となる。
は、ミスした命令間で同一ブロックに属する命令があれ
ば、それらの命令のブロック交換は一回のみで十分であ
り、同一ブロックに属さない命令については属する全て
のブロックがプログラム順に逐次置き換えがなされる。
データメモリ・アクセス・アルゴリズムでは、load
/store命令が同一アドレスを参照しているかどう
かが判別され、同一アドレスである場合は、プログラム
順に逐次実行となり、同一アドレスでなければ、並列実
行が可能となる。
【0018】(b)ブロック競合回避 もし、2つ以上のload/store命令がキャッシ
ュ・ミスとなった場合、データキャツュとメインメモリ
との間にデータバスが一つしかないので、キャッシュ・
ブロックは一ブロックごと置き換えられる。ここで、ブ
ロック(block)とは、高速・小サイズのよりプロ
セッサに近い上位レベルのメモリ(キャッシュ)と、そ
れをバックアップする低速・大サイズのより遠い下位レ
ベルのメモリ(メインメモリ)との間の情報交換の最小
単位をいう。
ュ・ミスとなった場合、データキャツュとメインメモリ
との間にデータバスが一つしかないので、キャッシュ・
ブロックは一ブロックごと置き換えられる。ここで、ブ
ロック(block)とは、高速・小サイズのよりプロ
セッサに近い上位レベルのメモリ(キャッシュ)と、そ
れをバックアップする低速・大サイズのより遠い下位レ
ベルのメモリ(メインメモリ)との間の情報交換の最小
単位をいう。
【0019】もし、そのミスしたアドレスが同じブロッ
ク内にある場合(ブロック競合)、置き換えは一回で十
分である。さもなくば、同一ブロックを2度置き換えて
しまうことになる。そのため、メインメモリへのアクセ
ス・アルゴリズムでは、キャッシュ・ミスがいくつ起き
ているか、およびキャッシュ・ミスしている命令の中
で、同一のブロック内にある命令がいくつあるかに基づ
いて決定される。
ク内にある場合(ブロック競合)、置き換えは一回で十
分である。さもなくば、同一ブロックを2度置き換えて
しまうことになる。そのため、メインメモリへのアクセ
ス・アルゴリズムでは、キャッシュ・ミスがいくつ起き
ているか、およびキャッシュ・ミスしている命令の中
で、同一のブロック内にある命令がいくつあるかに基づ
いて決定される。
【0020】load/store命令間(命令1と
2、命令1と3、命令1と4、命令2と3、命令2と
4、命令3と4)のブロック競合は、load/sto
re命令のtag##index(##は連結を意味す
る)をそれぞれ比較することによって検出される。4つ
のhit/miss信号と6つのブロック競合信号、そ
してスケジューリングされた各命令がload/sto
re命令であるかどうかを同定する4つのload/s
tore信号がキャッシュミス・スケジューリング論理
回路に送られる。
2、命令1と3、命令1と4、命令2と3、命令2と
4、命令3と4)のブロック競合は、load/sto
re命令のtag##index(##は連結を意味す
る)をそれぞれ比較することによって検出される。4つ
のhit/miss信号と6つのブロック競合信号、そ
してスケジューリングされた各命令がload/sto
re命令であるかどうかを同定する4つのload/s
tore信号がキャッシュミス・スケジューリング論理
回路に送られる。
【0021】このキャッシュミス・スケジューリング論
理回路内には、スケジューリング・パターン(各命令の
実行されるべき順序クロックを記述したもの)があらか
じめメインメモリ・アクセス・アルゴリズムに基づいて
実装されている。
理回路内には、スケジューリング・パターン(各命令の
実行されるべき順序クロックを記述したもの)があらか
じめメインメモリ・アクセス・アルゴリズムに基づいて
実装されている。
【0022】(c)メインメモリ・アクセス・アルゴリ
ズム ・命令1に関するスケジューリング則 命令1がload/store命令でない場合、または
load/store命令であっても、キャッシュにヒ
ットした場合はメインメモリにアクセスする必要が無い
ので、メインメモリに対するアクセスは実行不能とな
る。それ以外の場合であれば、メインメモリへのアクセ
スは次のクロックで実行される。
ズム ・命令1に関するスケジューリング則 命令1がload/store命令でない場合、または
load/store命令であっても、キャッシュにヒ
ットした場合はメインメモリにアクセスする必要が無い
ので、メインメモリに対するアクセスは実行不能とな
る。それ以外の場合であれば、メインメモリへのアクセ
スは次のクロックで実行される。
【0023】・命令2に関するスケジューリング則 命令2がload/store命令でない場合、または
load/store命令であっても、キャッシュにヒ
ットした場合はメインメモリに対するアクセスは実行不
能となる。命令1がload/store命令でない場
合、またはload/store命令であってかつキャ
ッシュにヒットした時において、命令2がload/s
tore命令であって、キャッシュにミスした場合は、
次のクロックで実行される。
load/store命令であっても、キャッシュにヒ
ットした場合はメインメモリに対するアクセスは実行不
能となる。命令1がload/store命令でない場
合、またはload/store命令であってかつキャ
ッシュにヒットした時において、命令2がload/s
tore命令であって、キャッシュにミスした場合は、
次のクロックで実行される。
【0024】また、命令1・2が共にload/sto
re命令であってかつキャッシュにミスした場合で、こ
れらが同一のブロックにあれば、命令1のみが次のクロ
ックで実行される。命令2の実行は命令1の実行による
ブロックの置き換えで、同時に実行がなされたことにな
るからである。命令1・2が共にload/store
命令であってかつキャッシュにミスした場合で、これら
が同一のブロックに無い場合は、まず、命令1が次のク
ロックで実行され、命令1による置き換えが終了した時
点で、命令2が実行される。メインメモリ・アクセス・
アルゴリズムが実装されるキャッシュミス・スケジュー
リング論理回路からはスケジューリング・パターンが各
命令に対応したカウンタ−バッファに出力される。
re命令であってかつキャッシュにミスした場合で、こ
れらが同一のブロックにあれば、命令1のみが次のクロ
ックで実行される。命令2の実行は命令1の実行による
ブロックの置き換えで、同時に実行がなされたことにな
るからである。命令1・2が共にload/store
命令であってかつキャッシュにミスした場合で、これら
が同一のブロックに無い場合は、まず、命令1が次のク
ロックで実行され、命令1による置き換えが終了した時
点で、命令2が実行される。メインメモリ・アクセス・
アルゴリズムが実装されるキャッシュミス・スケジュー
リング論理回路からはスケジューリング・パターンが各
命令に対応したカウンタ−バッファに出力される。
【0025】上記の例では、それぞれ命令1、命令2に
は“1”と、“2”がセットされる。スケジューリング
が“1”ということは、次のクロックでの実行を表し、
スケジューリングが“2”ということは、命令1の実行
終了後にデクリメントされ、“1”となり、実行可能状
態となる。また、実行不能状態は“0”で表され、スケ
ジューリング・パターンから出力さるか、または実行終
了時に“1”がデクリメントされることによってその状
態となる。ここで、メインメモリ・アクセスが終了した
場合、あるいは全てのload/store命令がキャ
ッシュ・ヒットした場合は、各命令のカウンタ−バッフ
ァの値が全て“0”になったこと(AND条件)によっ
てデータ・メモリへのアクセスが開始される。命令3以
降は以下同様にして決定される。
は“1”と、“2”がセットされる。スケジューリング
が“1”ということは、次のクロックでの実行を表し、
スケジューリングが“2”ということは、命令1の実行
終了後にデクリメントされ、“1”となり、実行可能状
態となる。また、実行不能状態は“0”で表され、スケ
ジューリング・パターンから出力さるか、または実行終
了時に“1”がデクリメントされることによってその状
態となる。ここで、メインメモリ・アクセスが終了した
場合、あるいは全てのload/store命令がキャ
ッシュ・ヒットした場合は、各命令のカウンタ−バッフ
ァの値が全て“0”になったこと(AND条件)によっ
てデータ・メモリへのアクセスが開始される。命令3以
降は以下同様にして決定される。
【0026】(d)複数のload/store命令が
同時実行可能となる条件(メモリアドレス競合回避) 命令実行時にload/store命令のアドレスはデ
コードされる。もしこれらのアドレスが同一であれば、
同時実行は不可能となる。ただし、同時実行される命令
が全てload命令である場合(読み込みのみ)に限っ
て可能である。この場合を除いて、プログラム順で後の
命令は前の命令より1クロック実行を遅らせなければな
らない。Load命令に限る場合は、同一アドレスを参
照しても同時実行が可能である。
同時実行可能となる条件(メモリアドレス競合回避) 命令実行時にload/store命令のアドレスはデ
コードされる。もしこれらのアドレスが同一であれば、
同時実行は不可能となる。ただし、同時実行される命令
が全てload命令である場合(読み込みのみ)に限っ
て可能である。この場合を除いて、プログラム順で後の
命令は前の命令より1クロック実行を遅らせなければな
らない。Load命令に限る場合は、同一アドレスを参
照しても同時実行が可能である。
【0027】ここで、並列度を上げるため、load命
令だけの時は実行させようとすると、アドレスが同一で
あるという情報だけでなく、各命令がload命令であ
るのかあるいはstore命令であるのかという情報を
も考慮しなければならない。従って、対象とするloa
d/store命令が2命令だけであれば、単純な機構
で実現できるが、3命令以上となると、どのような順番
で実行させるかというスケジューリング・アルゴリズム
(データメモリ・アクセス・アルゴリズム;後述)や、
これを実現するキャッシュヒット・スケジューリング論
理回路(図1を参照)が必要となる。
令だけの時は実行させようとすると、アドレスが同一で
あるという情報だけでなく、各命令がload命令であ
るのかあるいはstore命令であるのかという情報を
も考慮しなければならない。従って、対象とするloa
d/store命令が2命令だけであれば、単純な機構
で実現できるが、3命令以上となると、どのような順番
で実行させるかというスケジューリング・アルゴリズム
(データメモリ・アクセス・アルゴリズム;後述)や、
これを実現するキャッシュヒット・スケジューリング論
理回路(図1を参照)が必要となる。
【0028】このような機構を有することによって、2
つ以上のload/store命令が同時に実行できる
ようになる。Load/store命令が同一アドレス
を参照しているかどうかは、各load/store命
令のデータアドレス内のそれぞれのindex##bl
ock offsetを互いに比較することによって調
べられる。
つ以上のload/store命令が同時に実行できる
ようになる。Load/store命令が同一アドレス
を参照しているかどうかは、各load/store命
令のデータアドレス内のそれぞれのindex##bl
ock offsetを互いに比較することによって調
べられる。
【0029】(e)データメモリ・アクセス・アルゴリ
ズム データメモリへアクセスするためのスケジューリング則
について以下に述べる。 ・命令1に関するスケジューリング則 命令1が、load/stor命令であれば、次のクロ
ックでデータメモリに対するアクセスが実行される。命
令1がload/stor命令でないなら、実行不能と
なる。
ズム データメモリへアクセスするためのスケジューリング則
について以下に述べる。 ・命令1に関するスケジューリング則 命令1が、load/stor命令であれば、次のクロ
ックでデータメモリに対するアクセスが実行される。命
令1がload/stor命令でないなら、実行不能と
なる。
【0030】・命令2に関するスケジューリング則 命令2が、load/store命令でないなら、実行
不能となる。命令1が、load/stor命令でな
く、命令2が、load/store命令であれば、次
のクロックで実行される。命令1・2共にload/s
tore命令で、命令1が参照するメモリアドレスと命
令2が参照するメモリアドレスが異なれば、命令1・2
共に次のクロックで実行される。
不能となる。命令1が、load/stor命令でな
く、命令2が、load/store命令であれば、次
のクロックで実行される。命令1・2共にload/s
tore命令で、命令1が参照するメモリアドレスと命
令2が参照するメモリアドレスが異なれば、命令1・2
共に次のクロックで実行される。
【0031】命令1,2共にload/store命令
で、命令1が参照するメモリアドレスと命令2が参照す
るメモリアドレスが同じ場合、命令1,2共にload
命令の時に限って次のクロックで実行される。それ以外
の組合せ(命令1がload命令で命令2がstore
命令、命令1がstore命令で命令2がload命
令、命令1がstor命令で命令2がstore命令)
では、命令2の実行は1クロック待たされる。命令3以
降は以下同様にして決定される。
で、命令1が参照するメモリアドレスと命令2が参照す
るメモリアドレスが同じ場合、命令1,2共にload
命令の時に限って次のクロックで実行される。それ以外
の組合せ(命令1がload命令で命令2がstore
命令、命令1がstore命令で命令2がload命
令、命令1がstor命令で命令2がstore命令)
では、命令2の実行は1クロック待たされる。命令3以
降は以下同様にして決定される。
【0032】
【実施例】図1は本発明の一実施例に係るデータ・キャ
ッシュ機構のブロック線図である。図において、1はメ
インメモリ、10はマルチポート・データメモリ、11
はマルチポート・タグメモリ、12はキャッシュにヒッ
トしたかミスしたかを判定する比較器であり、ここでは
4命令を例としてあげているため、命令数分で4個の比
較器12を備えている。13は4命令のアドレス競合
(参照アドレスが同一であるかどうか)を判定する比較
器、14は4命令のブロック競合を判定する比較器であ
り、この比較器13及び比較器14を命令1と命令2,
命令1と命令3,命令1と命令4,命令2と命令3,命
令2と命令4,命令3と命令4を比較するためそれぞれ
6個備えている。
ッシュ機構のブロック線図である。図において、1はメ
インメモリ、10はマルチポート・データメモリ、11
はマルチポート・タグメモリ、12はキャッシュにヒッ
トしたかミスしたかを判定する比較器であり、ここでは
4命令を例としてあげているため、命令数分で4個の比
較器12を備えている。13は4命令のアドレス競合
(参照アドレスが同一であるかどうか)を判定する比較
器、14は4命令のブロック競合を判定する比較器であ
り、この比較器13及び比較器14を命令1と命令2,
命令1と命令3,命令1と命令4,命令2と命令3,命
令2と命令4,命令3と命令4を比較するためそれぞれ
6個備えている。
【0033】20はキャッシュ・ミス時のメインメモリ
・アクセス・アルゴリズムが実装されるキャッシュミス
・スケジューリング論理回路(ここでは、一実現例とし
てPLA(Programmable Logic A
rray)を想定する)、21はキャッシュ・ミス用P
LA20から出力されるスケジューリング・パターンを
保持する4個のカウンタ−バッファであり、図1に示す
ように出力がcm1〜cm4である。
・アクセス・アルゴリズムが実装されるキャッシュミス
・スケジューリング論理回路(ここでは、一実現例とし
てPLA(Programmable Logic A
rray)を想定する)、21はキャッシュ・ミス用P
LA20から出力されるスケジューリング・パターンを
保持する4個のカウンタ−バッファであり、図1に示す
ように出力がcm1〜cm4である。
【0034】22は各カウンタ−バッファ21の値が全
て“0”になったかどうか(メインメモリ1へのアクセ
スが終了したこと、又は全てのload/store命
令がキャッシュ・ヒットした時の状態)を判定するAN
D回路(出力信号ck)、25はキャッシュ・ヒット時
のデータメモリ・アクセス・アルゴリズムが実装される
キャッシュヒット・スケジューリング論理回路(ここで
は、一実現例としてPLAを想定する)、26はキャッ
シュ・ヒット用PLA25から出力されるスケジューリ
ング・パターンを保持する4個のカウンタ−バッファで
あり、図1に示すように出力がch1〜ch4である。
て“0”になったかどうか(メインメモリ1へのアクセ
スが終了したこと、又は全てのload/store命
令がキャッシュ・ヒットした時の状態)を判定するAN
D回路(出力信号ck)、25はキャッシュ・ヒット時
のデータメモリ・アクセス・アルゴリズムが実装される
キャッシュヒット・スケジューリング論理回路(ここで
は、一実現例としてPLAを想定する)、26はキャッ
シュ・ヒット用PLA25から出力されるスケジューリ
ング・パターンを保持する4個のカウンタ−バッファで
あり、図1に示すように出力がch1〜ch4である。
【0035】27は各4命令(命令1,命令2,命令
3,命令4)がデータメモリへのアクセスを許可される
かを決定するAND回路(キャッシュ・ヒット用PLA
25の出力であるカウンタ−バッファ26の値とAND
回路22の出力信号ckのAND)であり、AND回路
27を各カウンタ−バッファ26に対応して4個備えて
いる。30はload・store4命令がデータメモ
リにアクセス可能かどうかをスイッチングする選択器、
31はload/store命令がメインメモリにアク
セス可能かどうかをスイッチングする選択器である。
3,命令4)がデータメモリへのアクセスを許可される
かを決定するAND回路(キャッシュ・ヒット用PLA
25の出力であるカウンタ−バッファ26の値とAND
回路22の出力信号ckのAND)であり、AND回路
27を各カウンタ−バッファ26に対応して4個備えて
いる。30はload・store4命令がデータメモ
リにアクセス可能かどうかをスイッチングする選択器、
31はload/store命令がメインメモリにアク
セス可能かどうかをスイッチングする選択器である。
【0036】次に、この実施例の動作について説明す
る。まず、load/storeユニット41,42,
43,44はデータ・キャッシュ・メモリとそれぞれア
ドレスバスとデータバスで結合されており、この各lo
ad/storeユニットにはデコードされたload
/store命令が、そのデコードの結果に基づいて入
力されるようになっている。また、タグ・メモリ11内
のタグデータはload/store命令のindex
(インデックス)によって参照されている。ヒットまた
はミスかはload/store命令のタグ(tag)
とタグ・メモリ11内のタグデータを比較することによ
って決定される。
る。まず、load/storeユニット41,42,
43,44はデータ・キャッシュ・メモリとそれぞれア
ドレスバスとデータバスで結合されており、この各lo
ad/storeユニットにはデコードされたload
/store命令が、そのデコードの結果に基づいて入
力されるようになっている。また、タグ・メモリ11内
のタグデータはload/store命令のindex
(インデックス)によって参照されている。ヒットまた
はミスかはload/store命令のタグ(tag)
とタグ・メモリ11内のタグデータを比較することによ
って決定される。
【0037】また、メインメモリ・アクセスのため、各
load/storeユニット41,42,43,44
に応じて、比較器12により4つのhit/miss信
号がキャッシュ・ミス用PLA20への入力部分として
生成されている。2つ以上のキャッシュ・ミスがあれ
ば、命令間(命令1と2、命令1と3、命令1と4、命
令2と3、命令2と4、命令3と4)のブロック競合は
比較器13(tag##index)によって検出され
る。
load/storeユニット41,42,43,44
に応じて、比較器12により4つのhit/miss信
号がキャッシュ・ミス用PLA20への入力部分として
生成されている。2つ以上のキャッシュ・ミスがあれ
ば、命令間(命令1と2、命令1と3、命令1と4、命
令2と3、命令2と4、命令3と4)のブロック競合は
比較器13(tag##index)によって検出され
る。
【0038】そして、比較器12により生成された4つ
のhit/miss信号、比較器13により検出された
6つのブロック競合信号及び各命令のデコード時に生成
された4つのload/store信号がキャッシュ・
ミス用PLA20に入力されるようになっている。
のhit/miss信号、比較器13により検出された
6つのブロック競合信号及び各命令のデコード時に生成
された4つのload/store信号がキャッシュ・
ミス用PLA20に入力されるようになっている。
【0039】ここで、キャッシュ・ミス用PLA20に
よるミス手続のためのスケジューリング・パターンは、
あらかじめメインメモリ・アクセス・アルゴリズムに基
づいてこれら入力されたデータに対応して求められてい
る。カウンタ−バッファ21の出力(図1のcm1〜c
m4)がPLA20によって“1”にセットされると、
選択器31で対応アドレスがメインメモリにアクセスさ
れ、そのアドレスが有するブロックはメインメモリ1と
置き換えられる。
よるミス手続のためのスケジューリング・パターンは、
あらかじめメインメモリ・アクセス・アルゴリズムに基
づいてこれら入力されたデータに対応して求められてい
る。カウンタ−バッファ21の出力(図1のcm1〜c
m4)がPLA20によって“1”にセットされると、
選択器31で対応アドレスがメインメモリにアクセスさ
れ、そのアドレスが有するブロックはメインメモリ1と
置き換えられる。
【0040】ブロック・メモリの置き換えが完了する
と、カウンタ−バッファ21はデクリメントされる。従
って、“1”にセットされたカウンタバッファは“0”
になる。この“0”は実行不能状態を意味し、キャッシ
ュ・ヒット時にメインメモリ1にアクセスさせないよう
にスケジューリング・パターンとして出力されるか、ま
たは、実行終了後に“1”がデクリメントされることに
よってその状態となる。
と、カウンタ−バッファ21はデクリメントされる。従
って、“1”にセットされたカウンタバッファは“0”
になる。この“0”は実行不能状態を意味し、キャッシ
ュ・ヒット時にメインメモリ1にアクセスさせないよう
にスケジューリング・パターンとして出力されるか、ま
たは、実行終了後に“1”がデクリメントされることに
よってその状態となる。
【0041】また、“2”とセットされたカウンタバッ
ファ2は他の命令がメインメモリ1にアクセスした後デ
クリメントされ、“1”となり、実行可能状態となる。
4つ全てのカウンタ−バッファ21が“0”になると
(図1のAND回路22により判定)、load/st
oreユニットはデータメモリ10にアクセス開始す
る。したがって、キャッシュ・ミスが無い場合は、スケ
ジューリング・パターンによって全ての4つのカウンタ
−バッファは“0”にセットされることになる。
ファ2は他の命令がメインメモリ1にアクセスした後デ
クリメントされ、“1”となり、実行可能状態となる。
4つ全てのカウンタ−バッファ21が“0”になると
(図1のAND回路22により判定)、load/st
oreユニットはデータメモリ10にアクセス開始す
る。したがって、キャッシュ・ミスが無い場合は、スケ
ジューリング・パターンによって全ての4つのカウンタ
−バッファは“0”にセットされることになる。
【0042】また、キャッシュ・ミスが無い場合と、置
き換えが完了した場合には、load/store命令
が他のload/store命令と同じアドレスを参照
しているかどうかについて、比較器14によりinde
x##blockを比較し、アドレス競合を検出する。
そして、比較器14により検出されたアドレス競合を示
す6つの信号及び各命令のデコード時に生成された4つ
のload/store信号がキャッシュ・ヒット用P
LA25に入力される。
き換えが完了した場合には、load/store命令
が他のload/store命令と同じアドレスを参照
しているかどうかについて、比較器14によりinde
x##blockを比較し、アドレス競合を検出する。
そして、比較器14により検出されたアドレス競合を示
す6つの信号及び各命令のデコード時に生成された4つ
のload/store信号がキャッシュ・ヒット用P
LA25に入力される。
【0043】また、キャッシュ・ヒット用PLA25に
よるヒット手続きのためのスケジューリング・パターン
はあらかじめデータメモリ・アクセス・アルゴリズムに
基づいて、各入力されたデータの組合せに対応して求め
られている。カウンタ−バッファの出力(図1のch1
〜ch4)の値が“1”にセットされたものは、データ
メモリ10にアクセスされ、終了するとデクリメントさ
れ“0”となり、実行不能状態となる。この“0”がス
ケジューリング・パターンから出力されることは、該当
命令がload/store命令でないことを意味す
る。
よるヒット手続きのためのスケジューリング・パターン
はあらかじめデータメモリ・アクセス・アルゴリズムに
基づいて、各入力されたデータの組合せに対応して求め
られている。カウンタ−バッファの出力(図1のch1
〜ch4)の値が“1”にセットされたものは、データ
メモリ10にアクセスされ、終了するとデクリメントさ
れ“0”となり、実行不能状態となる。この“0”がス
ケジューリング・パターンから出力されることは、該当
命令がload/store命令でないことを意味す
る。
【0044】カウンタ−バッファの値が“2”にセット
されたものは、他のload/store命令と同一ア
ドレスであることを意味し、他の命令の実行後にデクリ
メントされ、1クロック実行が遅らされることになる。
されたものは、他のload/store命令と同一ア
ドレスであることを意味し、他の命令の実行後にデクリ
メントされ、1クロック実行が遅らされることになる。
【0045】また、PLA20,PLA25の大きさは
入力ビット、積項、出力ビットの3項によって決定され
るものであり、同時実行可能なload/store命
令数をそれぞれ2、3、4に限定した場合のPLA2
0,25の入力ビット、積項、出力ビットを表1に示
す。表1に示すようにそれぞれの入力ビット、積項、出
力ビットからみて、スケジューリングに使用するPLA
の大きさはあまり大きくはならず、ハードウェア回路を
簡易化することができ、そして、論理圧縮アルゴリズム
等を用いて、積項をさらに減らすこともでき、さらにハ
ードウェア回路を簡易化することが可能となる。
入力ビット、積項、出力ビットの3項によって決定され
るものであり、同時実行可能なload/store命
令数をそれぞれ2、3、4に限定した場合のPLA2
0,25の入力ビット、積項、出力ビットを表1に示
す。表1に示すようにそれぞれの入力ビット、積項、出
力ビットからみて、スケジューリングに使用するPLA
の大きさはあまり大きくはならず、ハードウェア回路を
簡易化することができ、そして、論理圧縮アルゴリズム
等を用いて、積項をさらに減らすこともでき、さらにハ
ードウェア回路を簡易化することが可能となる。
【0046】
【表1】
【0047】このように、この実施例では、複雑なハー
ドウェア回路を必要としないで、複数のメモリアクセス
命令の同時実行を実現することが可能となる。また、複
数のメモリアクセス命令がキャッシュ・ミスでかつ同一
ブロック内に存在する場合(ブロック競合)、メインメ
モリとのブロックの置き換えを、簡易なハードウェア回
路で一回で済ますことができ、キャッシュ・ミス操作を
高速化することが可能となる。
ドウェア回路を必要としないで、複数のメモリアクセス
命令の同時実行を実現することが可能となる。また、複
数のメモリアクセス命令がキャッシュ・ミスでかつ同一
ブロック内に存在する場合(ブロック競合)、メインメ
モリとのブロックの置き換えを、簡易なハードウェア回
路で一回で済ますことができ、キャッシュ・ミス操作を
高速化することが可能となる。
【0048】また、上記のキャッシュ・ヒット時とキャ
ッシュ・ミス時の機構を別々に設けることによってさら
にハードウェア回路を複雑化しないようにすることが可
能となる。
ッシュ・ミス時の機構を別々に設けることによってさら
にハードウェア回路を複雑化しないようにすることが可
能となる。
【0049】なお、この実施例ではスーパースカラに適
用したものであるが、スーパースカラに限らずVLIW
(Very Long Instruction Wo
rd;長命令によって多数のALU、ロードストアユニ
ットを独立に並列制御するプロセッサで、ハードウェア
回路ではなく、コンパイラが長命令語の中に含まれる複
数の命令が同時に実行可能なように、長命令語を生成す
る)などの並列処理CPUや、スーパーコンピュータに
も適用することが可能である。
用したものであるが、スーパースカラに限らずVLIW
(Very Long Instruction Wo
rd;長命令によって多数のALU、ロードストアユニ
ットを独立に並列制御するプロセッサで、ハードウェア
回路ではなく、コンパイラが長命令語の中に含まれる複
数の命令が同時に実行可能なように、長命令語を生成す
る)などの並列処理CPUや、スーパーコンピュータに
も適用することが可能である。
【0050】さらに、5段を有するパイプライン構造
(IF,ID,EX,MEM[Memory Acce
ss],WB)(J.L.Hennessy,and
D.A.Patterson,“Computer A
rchitecture:AQuantitative
Approach”,Morgan Kaufman
n Publishers,Inc.,1990を参
照)などほとんどのパイプライン構造にも適用すること
が可能である。
(IF,ID,EX,MEM[Memory Acce
ss],WB)(J.L.Hennessy,and
D.A.Patterson,“Computer A
rchitecture:AQuantitative
Approach”,Morgan Kaufman
n Publishers,Inc.,1990を参
照)などほとんどのパイプライン構造にも適用すること
が可能である。
【0051】
【発明の効果】スーパースカラやVLIWのような並列
処理CPUの並列度をあげるために(高速化につなが
る)、複数のメモリアクセス命令(load/stor
e命令)キャッシュにヒットすれば、同時実行が可能と
なるが、この同時実行を可能とするためにはメモリアク
セス命令のメモリ参照アドレス一致する場合(メモリア
ドレス競合)、このメモリアドレス競合を回避する機構
が必要になる。
処理CPUの並列度をあげるために(高速化につなが
る)、複数のメモリアクセス命令(load/stor
e命令)キャッシュにヒットすれば、同時実行が可能と
なるが、この同時実行を可能とするためにはメモリアク
セス命令のメモリ参照アドレス一致する場合(メモリア
ドレス競合)、このメモリアドレス競合を回避する機構
が必要になる。
【0052】そこで、以上のように本発明によれば、オ
ブジェクト・コードの互換性を保ち、複雑なハードウェ
ア回路を必要としないで、キャッシュ・ヒット時には複
数のメモリアクセス命令の同時実行を実現することがで
き、また、複数のメモリアクセス命令がキャッシュ・ミ
スでかつ同一ブロック内に存在する場合に(ブロック競
合)、このようなブロック競合を検出し、簡易なハード
ウェア回路で、この置き換えを一回で済ますことがで
き、キャッシュ・ミス操作を高速化することができ、さ
らにキャッシュ・ヒット時とキャッシュ・ミス時の機構
を別々に設けることによってさらにハードウェア回路を
複雑化しないようにすることができるという効果を有す
る。
ブジェクト・コードの互換性を保ち、複雑なハードウェ
ア回路を必要としないで、キャッシュ・ヒット時には複
数のメモリアクセス命令の同時実行を実現することがで
き、また、複数のメモリアクセス命令がキャッシュ・ミ
スでかつ同一ブロック内に存在する場合に(ブロック競
合)、このようなブロック競合を検出し、簡易なハード
ウェア回路で、この置き換えを一回で済ますことがで
き、キャッシュ・ミス操作を高速化することができ、さ
らにキャッシュ・ヒット時とキャッシュ・ミス時の機構
を別々に設けることによってさらにハードウェア回路を
複雑化しないようにすることができるという効果を有す
る。
【図1】本発明のデータキャッシュ機構のブロック線図
である。
である。
【図2】load/store命令の実行の手続きを示
す説明図である。
す説明図である。
【図3】スーパースカラのパイプライン構造の説明図で
ある。
ある。
1 メインメモリ 11 タグメモリ 12 キャッシュにヒットしたかミスしたかを判定する
比較器 13 アドレス競合を判定する比較器 14 ブロック競合を判定する比較器 20 キャッシュミス・スケジューリング論理回路 25 キャッシュヒット・スケジューリング論理回路
比較器 13 アドレス競合を判定する比較器 14 ブロック競合を判定する比較器 20 キャッシュミス・スケジューリング論理回路 25 キャッシュヒット・スケジューリング論理回路
Claims (3)
- 【請求項1】 マルチポートデータメモリと、 マルチポートタグメモリと、 N個のロード又はストア命令間の参照アドレスが同一か
どうかのアドレス競合を判定する NC2 個の比較器と、 前記N個のロード又はストア命令を同定するN個のロー
ド又はストア信号と前記比較器で判定された NC2 個の
アドレス競合の有無を示す信号が入力され、前記N個の
ロード又はストア命令のキャッシュ・ヒット時の各命令
が何クロック目にそれぞれデータキャッシュ内のデータ
メモリにアクセスすべきかを示した信号であるスケジュ
ールパターンを出力するキャッシュ・ヒットスケジュー
ル手段とを備え、 前記キャッシュ・ヒットスケジュール手段の出力するス
ケジュールパターンに基づいてメモリアドレス競合を回
避し、複数のロード又はストア命令の同時実行を行うこ
とを特徴とするデータキャッシュ機構。 - 【請求項2】 マルチポートデータメモリと、 マルチポートタグメモリと、 N個のロード又はストア命令がキャッシュにヒットした
かミスしたかを判定するN個の第1の比較器と、 前記N個のロード又はストア命令間の参照アドレスが同
一ブロック内にあるかどうかのブロック競合を判定する
NC2 個の第2の比較器と、 前記N個のロード又はストア命令を同定するN個のロー
ド又はストア信号、前記第1の比較器で判定されたN個
のロード又はストア命令のキャッシュヒット又はミス信
号及び第2の比較器で判定された NC2 個のブロック競
合の有無を示す信号が入力され、前記N個のロード又は
ストア命令のキャッシュ・ミス時の各命令が何クロック
目にそれぞれメインメモリにアクセスすべきかを示した
信号であるスケジュールパターンを出力するキャッシュ
・ミススケジュール手段とを備え、 前記キャッシュ・ミススケジュール手段の出力するスケ
ジュールパターンに基づいて、複数のロード又はストア
命令がキャッシュ・ミス、かつ、同一ブロック内に存在
するときは、ブロックの置き換えを1回で行うことを特
徴とするデータキャッシュ機構。 - 【請求項3】 マルチポートデータメモリと、 マルチポートタグメモリと、 N個のロード又はストア命令間の参照アドレスが同一か
どうかのアドレス競合を判定する NC2 個の第1の比較
器と、 N個のロード又はストア命令がキャッシュにヒットした
かミスしたかを判定するN個の第2の比較器と、 前記N個のロード又はストア命令間の参照アドレスが同
一ブロック内にあるかどうかのブロック競合を判定する
NC2 個の第3の比較器と、 前記N個のロード又はストア命令を同定するN個のロー
ド又はストア信号と前記第1の比較器で判定された NC
2 個のアドレス競合の有無を示す信号が入力され、前記
N個のロード又はストア命令のキャッシュ・ヒット時の
各命令が何クロック目にそれぞれデータキャッシュ内の
データメモリにアクセスすべきかを示した信号であるス
ケジュールパターンを出力するキャッシュ・ヒットスケ
ジュール手段と、 前記N個のロード又はストア命令を同定するN個のロー
ド又はストア信号、前記第2の比較器で判定されたN個
のロード又はストア命令のキャッシュヒット又はミス信
号及び第3の比較器で判定された NC2 個のブロック競
合の有無を示す信号が入力され、前記N個のロード又は
ストア命令のキャッシュ・ミス時の各命令が何クロック
目にそれぞれメインメモリにアクセスすべきかを示した
信号であるスケジュールパターンを出力するキャッシュ
・ミススケジュール手段とを備え、 前記キャッシュ・ヒットスケジュール手段の出力するス
ケジュールパターンに基づいてメモリアドレス競合を回
避し、複数のロード又はストア命令の同時実行を行い、
前記キャッシュ・ミススケジュール手段の出力するスケ
ジュールパターンに基づいて、複数のロード又はストア
命令がキャッシュ・ミス、かつ、同一ブロック内に存在
するときは、ブロックの置き換えを1回で行うことを特
徴とするデータキャッシュ機構。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1150794A JPH07219772A (ja) | 1994-02-03 | 1994-02-03 | データキャッシュ機構 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1150794A JPH07219772A (ja) | 1994-02-03 | 1994-02-03 | データキャッシュ機構 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH07219772A true JPH07219772A (ja) | 1995-08-18 |
Family
ID=11779941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP1150794A Pending JPH07219772A (ja) | 1994-02-03 | 1994-02-03 | データキャッシュ機構 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH07219772A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016149164A (ja) * | 2011-09-23 | 2016-08-18 | クアルコム,インコーポレイテッド | トランザクションメモリ動作を実行するように構成されたプロセッサ |
-
1994
- 1994-02-03 JP JP1150794A patent/JPH07219772A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016149164A (ja) * | 2011-09-23 | 2016-08-18 | クアルコム,インコーポレイテッド | トランザクションメモリ動作を実行するように構成されたプロセッサ |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2938426B2 (ja) | 順不同ロード命令とストア命令との干渉を検出回復するための方法及び装置 | |
EP0368332B1 (en) | Pipeline data processor | |
US6279100B1 (en) | Local stall control method and structure in a microprocessor | |
US5884060A (en) | Processor which performs dynamic instruction scheduling at time of execution within a single clock cycle | |
JP6159825B2 (ja) | ハードウェアポインタを使用したsimdコア内での分岐ブランチに対するソリューション | |
JP3093624B2 (ja) | 投機例外を処理する方法及び装置 | |
US7979637B2 (en) | Processor and method for executing data transfer process | |
JP2834292B2 (ja) | データ・プロセッサ | |
TW201704991A (zh) | 藉由演算法匹配、停用特徵或限制效能之回溯相容性 | |
JPS59114641A (ja) | 割込処理装置 | |
WO2000033183A9 (en) | Method and structure for local stall control in a microprocessor | |
CA2009163A1 (en) | Pipeline processing of register and register modifying specifiers within the same instruction | |
US7200738B2 (en) | Reducing data hazards in pipelined processors to provide high processor utilization | |
US5680637A (en) | Computer having a parallel operating capability | |
US6070238A (en) | Method and apparatus for detecting overlap condition between a storage instruction and previously executed storage reference instruction | |
JP2620511B2 (ja) | データ・プロセッサ | |
JP5326314B2 (ja) | プロセサおよび情報処理装置 | |
KR19990013383A (ko) | 파이프라인 기계에서의 어드레스 파이프라인을 위한 방법 및장치 | |
JP4420055B2 (ja) | マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法 | |
US4969117A (en) | Chaining and hazard apparatus and method | |
JP3182591B2 (ja) | マイクロプロセッサ | |
JPH07219772A (ja) | データキャッシュ機構 | |
US4935849A (en) | Chaining and hazard apparatus and method | |
JP3915019B2 (ja) | Vliwプロセッサ、プログラム生成装置、および記録媒体 | |
WO2002029554A2 (en) | Register move operations |