(57)【特許請求の範囲】
【請求項１】
論理アドレスの部分ビット列と、該論理アドレスの部分ビット列に対応する絶対アドレスのうち、メモリの索引キーとして必要なビットである予測絶対アドレスとを、対にして記憶するアドレスヒストリテーブル手段と、
レジスタファイルのレジスタ番号に対応するレジスタ値を論理アドレスとみなして、該アドレスヒストリテーブル手段を索引するテーブル索引手段と、
該アドレスヒストリテーブル手段の索引結果である予測絶対アドレスを用いてメモリアクセスを行うメモリアクセス手段と、
前記レジスタファイルのレジスタ番号に対応するレジスタ値に変位値を加算したメモリアクセスアドレスを用いてメモリアクセスを行う場合において、前記加算の結果、メモリブロックの最小単位であるページ境界をまたぐキャリーがレジスタ値から発生するか否かの予測を行うとともに、前記予測結果においてキャリーが発生する場合には、前記加算の結果に増分するキャリー予測手段と、
該論理アドレスから正しい絶対アドレスを取得するアドレス変換バッファ手段と、
該予測絶対アドレスと該正しい絶対アドレスとの一致検出を行うことにより、該予測絶対アドレスを用いて行われるメモリアクセスの結果保証を行う結果保証手段と、
を有することを特徴とする演算処理装置。
【請求項２】
前記キャリー予測手段はさらに、過去に変位値を加算した結果、キャリーが発生したレジスタファイルのレジスタ番号の履歴を保持する変換履歴保持手段を有することを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記テーブル索引手段は、前記レジスタファイルの複数のレジスタ値を加算して、メモリアクセスアドレスとする場合において、該複数のレジスタ値のうちいずれかを選択してアドレスヒストリテーブル手段を索引することを特徴とする請求項１に記載の演算処理装置。
【請求項４】
前記レジスタファイルの複数のレジスタ値を加算した値をメモリアクセスアドレスとする場合において、該複数のレジスタ値の何れもページ内のアドレスを示すバイトインデックスの値を越える場合、論理アドレスから絶対アドレスへの変換結果をアドレスヒストリテーブル手段へ登録することを抑制することを特徴とする請求項１に記載の演算処理装置。
【請求項５】
複数のレジスタファイルのレジスタ値を加算して、メモリアクセスアドレスとする場合において、該複数のレジスタ値の何れもバイトインデックスの値を越える場合、前記複数のレジスタ値に対応するレジスタ番号の組と、該レジスタ番号の組に対応するアドレス変換結果の絶対アドレスを保持する、第２のヒストリテーブル手段を更に備えることを特徴とする請求項１に記載の演算処理装置。
【請求項６】
前記レジスタファイルの複数のレジスタ値を加算して、メモリアクセスアドレスとする場合において、該複数のレジスタ値の何れもバイトインデックスの値を越える場合、前記複数のレジスタ値に対応するレジスタ番号の組と、該レジスタ番号の組に対応するレジスタ値の和である論理アドレスを保持する第３のヒストリテーブル手段を更に備え、
該論理アドレスから、前記ヒストリテーブル手段を索引することを特徴とする請求項１に記載の演算処理装置。
【請求項７】
前記結果保証手段における一致検出の結果、アドレスの一致が得られない場合には、メモリアクセスを中止するとともに、前記取得された絶対アドレスを用いて再度メモリアクセスを行うことを特徴とする請求項１に記載の演算処理装置。
【請求項８】
前記テーブル索引手段は、予め、要求される可能性のある一つ以上の命令フェッチアドレス全てについて前記アドレスヒストリテーブル手段を索引するテーブル索引手段であって、
メモリアクセスに使用する命令フェッチアドレスを選択する優先順位決定手段と、
該優先順位決定手段によって選択された命令フェッチアドレスに対応する絶対アドレスを用いて、メモリアクセスを行う命令フェッチ手段と、
をさらに有することを特徴とする請求項１に記載の演算処理装置。
【請求項９】
前記結果保証手段における一致検出の結果、一致が得られなかった場合には、正しい論理アドレスと絶対アドレスの対をアドレスヒストリテーブル手段に登録することを特徴とする請求項１に記載の演算処理装置。
【請求項１０】
レジスタファイルとアドレスヒストリテーブルを用いて行うメモリアクセス方法において、
論理アドレスの部分ビット列と、該論理アドレスの部分ビット列に対応する絶対アドレスのうち、メモリの索引キーとして必要なビットである予測絶対アドレスとを、前記アドレスヒストリテーブルに対にして記憶する記憶ステップと、
前記レジスタファイルのレジスタ番号に対応するレジスタ値を論理アドレスとみなして、前記アドレスヒストリテーブルを索引するテーブル索引ステップと、
前記アドレスヒストリテーブルの索引結果である予測絶対アドレスを用いてメモリアクセスを行うメモリアクセスステップと、
前記レジスタファイルのレジスタ番号に対応するレジスタ値に変位値を加算したメモリアクセスアドレスを用いてメモリアクセスを行う場合において、該加算の結果、メモリブロックの最小単位であるページ境界をまたぐキャリーが発生する場合には、該加算の結果に増分するキャリー予測ステップと
該論理アドレスから正しい絶対アドレスを取得するアドレス変換ステップと、
該予測絶対アドレスと該正しい絶対アドレスとの一致検出を行うことにより、該予測絶対アドレスを用いて行われるメモリアクセスの結果保証を行う結果保証ステップと、
を有することを特徴とするメモリアクセス方法。
【請求項１１】
前記テーブル索引ステップは、予め、要求される可能性のある一つ以上の命令フェッチアドレス全てについて前記アドレスヒストリテーブル手段を索引するテーブル索引ステップであって、
メモリアクセスに使用する命令フェッチアドレスを選択する優先順位決定ステップと、
該優先順位決定ステップにおいて選択された命令フェッチアドレスに対応する絶対アドレスを用いて、メモリアクセスを行う命令フェッチステップと、
をさらに有することを特徴とする請求項１０に記載のメモリアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想アドレス（論理アドレス）指定を有する情報処理装置において、仮想アドレスによるメモリアクセス指示によって、実アドレスベースのキャッシュメモリをアクセスする装置及び方法に関する。
【背景技術】
【０００２】
論理アドレス（仮想アドレスともいう）ベースのキャッシュシステムでは、シノニム問題、すなわち、複数の論理アドレスが同一の実アドレスを指し示す場合に、キャッシュ上でそれぞれの論理アドレスに対応する場所で、常に同一メモリ内容にしなければならない、というキャッシュ管理上の厄介な問題がある。
【０００３】
また、実アドレスベース（絶対アドレスベース）のキャッシュシステムを構築する場合に、論理アドレスから実アドレスへ変換する際の時間遅延が問題となる。
そこで、アブソリュートアドレスヒストリテーブルと呼ばれる、論理アドレスから実アドレスへの過去の変換履歴を保持しておき、これを参照することで時間遅延を減らす、というものを用いる解決法がある。
【０００４】
ここで、オペランドアクセスにおいては、レジスタ値と変位値（場合によっては複数のレジスタ値と変位値の合計、レジスタ値のみ、即値（変位値）のみのこともある）を加算した結果の論理アドレスをもとにメモリを参照する。従って、どのレジスタを用いるかや、変位値（即値）などは、命令のデコードの時点で判別できるから、レジスタ値が既に確定している場合には、時間的に余裕を持って、論理アドレスを算出してアブソリュートアドレスヒストリテーブルを索引することができる場合もある。
【０００５】
しかしながら、スーパースカラ、あるいはアウトオブオーダなどの命令制御方式では、オペランドアクセスを行う当該命令よりも前に実行されている命令列によるレジスタ変更が確定するよりも前に、当該命令を実行しようとする。この場合には、レジスタファイルから読み出すのではなく、例えば、演算部やキャッシュメモリから、レジスタ値がバイパスされて当該命令が投機的に実行される。
【０００６】
あるいは、近年の高クロック、レイテンシ短縮要求による性能向上を目指す場合においては、レジスタ値が確定していても、そこから論理アドレスを計算してアブソリュートアドレスヒストリテーブルを索引するのでは、時間制約に引っかかってしまうことがある。
【０００７】
従って、このような場合には、たとえ、用いるレジスタや変位値が分かっていたとしても、そこからレジスタを参照して、値を合計して論理アドレスを算出し、それを元にアブソリュートアドレスヒストリテーブルを索引するのは、時間遅延の関係から大きな性能ロスとなる。
【０００８】
ところで、オペランドアドレスの計算においては、変位値が小さいという傾向があるので、まず、仮想メモリを持つアーキテクチャでは、連続する論理アドレスに対して１バイト毎にバラバラに実メモリへ配置するのではなく、一定のブロック（通常２の累乗値）をひとまとまりとして、これを適切な実メモリへ配置する（以下、このブロックの最小単位をページと呼ぶ）。例えば、図１のように、２０ビットから下位のバイトインデックスは実アドレスでも論理アドレスでも同じであるので、上位のセグメントインデックス（１ビット〜１１ビット）、ページインデックス（１２ビット〜１９ビット）を実アドレスに変換する。
【０００９】
従って、キャッシュアクセスの際に必要なアドレスは、下位ビットすなわちバイトインデックス値ではなく、より上位のビット（セグメントインデックス、ページインデックス）である。従って、計算したアドレスを索引アドレスとはせず、計算の元となるレジスタ値の中位ビット部分を、そのまま索引アドレスとして用いる。
【００１０】
このように、レジスタベースで該テーブルを検索すると問題となるのが、変位値を加算した場合に生じるページクロス（繰り上がり）である。繰り上がりを考慮しなければ、もちろん論理的に隣のページが実メモリ上で隣であるとは限らないので、繰り上がりが起きて論理的に隣のページを参照することになった場合には、必ずキャッシュ検索に失敗するので、クロックペナルティが発生する。
【００１１】
しかし、バイパスを含むケースを含めて厳密にレジスタ値、変位値を加算した結果を用いてアブソリュートアドレスヒストリテーブルを索引するのは、やはり時間遅延が問題となる。
【００１２】
また、命令フェッチ側においては、命令フェッチリクエストの種類が多岐にわたる。これら多数のリクエストの中からどの命令フェッチ要求が出るかが確定し、対応する論理アドレスが選択されてから、アブソリュートアドレスヒストリテーブルを索引するのでは、時間遅延が問題となる。
【発明の開示】
【本発明が解決しようとする課題】
【００１３】
本発明の課題は、処理遅延を削減することの出来るメモリアクセス制御装置及び方法を提供することである。
【課題を解決するための手段】
【００１４】
本発明の装置は、論理アドレスの少なくとも部分ビット列と、該論理アドレスの部分ビット列に対応する絶対アドレスのうち、絶対アドレスベースのメモリの索引キーとして必要なビットとを、対にして記憶するアドレスヒストリテーブル手段と、メモリアクセスする場合にレジスタファイルを参照し、該レジスタファイルのレジスタ番号に対応する値を読み出し、該値を論理アドレスとして、該論理アドレスの部分集合を用いて、該アドレスヒストリテーブル手段を索引する手段と、該アドレスヒストリテーブル手段を索引する事によって得られた予測絶対アドレスを用いてメモリアクセスを行う手段と、該論理アドレスから正しい絶対アドレスを取得する手段と、該予測絶対アドレスと該正しい絶対アドレスとの一致検出を行うことにより、該予測絶対アドレスを用いて行われるメモリアクセスの結果保証を行う手段とを備えることを特徴とする。
【００１５】
本発明の方法は、（ａ）論理アドレスの少なくとも部分ビット列と、該論理アドレスの部分ビット列に対応する絶対アドレスのうち、絶対アドレスベースのメモリの索引キーとして必要なビットとを、対にして記憶するステップと、（ｂ）メモリアクセスする場合にレジスタファイルを参照し、該レジスタファイルのレジスタ番号に対応する値を読み出し、該値を論理アドレスとして、該論理アドレスの部分集合を用いて、該ステップ（ａ）の記憶内容を索引するステップと、（ｃ）該ステップ（ｂ）で得られた予測絶対アドレスを用いてメモリアクセスを行うステップと、（ｄ）該論理アドレスから正しい絶対アドレスを取得するステップと、（ｅ）該予測絶対アドレスと該正しい絶対アドレスとの一致検出を行うことにより、該予測絶対アドレスを用いて行われるメモリアクセスの結果保証を行うステップとを備えることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、アクセスすべきメモリを絶対アドレスベースとし、シノニム問題を解決する。更に、命令がデコードされた後に、レジスタ値に基づいて論理アドレスが演算されると並行して、該レジスタ値からメモリにアクセスするための絶対アドレスを予測して、メモリにアクセスを行う。予測が成功したか失敗したかは、演算された論理アドレスから正しく求められた絶対アドレスと、予測絶対アドレスとを比較することによって判断する。予測が成功した場合には、予測絶対アドレスに基づいてメモリアクセスした結果がそのまま使用できるので、処理サイクルが速くなる。また、予測が失敗した場合には、正しく求められた絶対アドレスを用いてメモリアクセスするので、処理が遅れることになるが、従来の論理アドレスベースのメモリアクセスに比べると、シノニム問題を有しない分だけ、より高速にメモリアクセスを行うことが出来る。
【発明を実施するための最良の形態】
【００１７】
本発明の実施形態の記載においては、命令フェッチとオペランドのそれぞれの場合についての実施形態を示す。
オペランドアクセスにおいては、レジスタベースのアブソリュートアドレスヒストリテーブルを用いる際に、大きく以下の問題がある。・メモリアクセスを要求する命令それぞれについて、参照のために使われるレジスタ、及び加算する変位値が通常異なる。
・参照のために使われるレジスタの値を、すぐ前の命令が書き換えている場合があり、レジスタ値の確定まで待つのではクロックペナルティが大きい。
・ある種のアーキテクチャでは、メモリ参照のためのレジスタを複数と、更に変位値を指定可能であり、それらの値の合算値をメモリ参照のための論理アドレスとする。
・メモリ参照のためのレジスタや変位値の加算の結果、元のレジスタ値から見て異なるページである場合がある。
これらの解決のために、
・プロセッサのハードウェア構成上、ページをまたいでしまう場合の計算、すなわちキャリー計算を行っても、時間遅延の問題が発生しないものは、論理アドレスと変位値の  全ビットを使ってキャリー計算を行う。
・特にレジスタ値が確定していない状態でバイパスを行う場合など、キャリー計算が間に合わない場合は、論理アドレスと変位値の一部のビットを使う部分キャリー計算や、  以前のキャリー履歴を格納したキャリーヒストリなどを用いてキャリー予測を行う。  また、時間遅延の許す範囲でなるべく精度の高くなるようにする。
・レジスタを複数指定された場合には、適切な方のレジスタを選択するか、別のアブソリュートアドレスヒストリテーブルを参照する。特にレジスタを二つ指定する場合にお  いては、そのうち一つがバイトインデックス相当範囲内に収まる場合が多く、この場  合はバイトインデックスからはみ出す方のレジスタを選択する手法が有効である。
を組み合わせることができる。もちろん、これらの全てを用いても良いし、時間ロスや回路コストなどの事情から、特に効果があるものだけを選択して使うことも可能である。
【００１８】
特に、レジスタ値をメモリ参照に用いる場合において、命令列を局所的に見た場合に、その命令列がメモリ参照のために用いるレジスタはあわせても特定の数個しかなく、更に、変位値やもう一つのレジスタを加算した場合にページ境界をまたぐものはかなり限られることがほとんどである。
【００１９】
しかしながら、特定のアプリケーションにおいては、（例えば、ベクトル演算などを行うアプリケーションでの配列のインデックスをレジスタに割り当てる場合）、二つのレジスタ値が共に大きくて、論理的にも離れたページを指し示す使い方をすることがある。しかし、例えば、このような演算などでは、組み合わされるレジスタペアがかなり限られており、これらを別のアブソリュートアドレスヒストリテーブルに登録しておくとうまくいく場合が多い。
【００２０】
これらの組み合わせで、テーブル索引時のミスを極力減らすと共に、それでもテーブル索引の結果誤った結果（あるいは無効な結果）を出力してしまう場合にも、ＴＬＢ（Translation-Lookaside   Buffer）検索の結果と比較して、該テーブル索引の結果が誤っていることが判明したら、すぐにキャッシュ検索をやり直すと同時に、正しい結果を該テーブルに書き戻すようにすることで、性能劣化させることのない、実アドレスベースのキャッシュシステムを構築することができる。
【００２１】
命令フェッチにおいては、オペランドアクセスとは異なり、論理アドレス計算において複雑な計算はない。しかし、近年の命令フェッチ方式では、分岐予測やプリフェッチなどが導入されており、通常の命令フェッチとこれらのフェッチ要求の中から適宜選択してメモリアクセスを行う。
【００２２】
近年のアーキテクチャでは、この優先順位の選択が複雑化しており、複雑な選択をした結果をもとに、更にアブソリュートアドレスヒストリテーブルを参照するのでは、時間遅延の問題が発生する。
【００２３】
従って、命令フェッチ要求のそれぞれについては、予めアドレスは判明している、あるいは時間ロスが少なく計算されるのだから、先にそれぞれの要求アドレスに対してアブソリュートアドレスヒストリテーブルを参照しておき、選択信号によるアドレス選択と同様にアブソリュートアドレスヒストリテーブルの索引結果も選択して、実アドレスベースのキャッシュメモリアクセスを行う。
【００２４】
本実施形態の説明では、メモリの１ページは、４キロバイト、すなわちバイトインデックスの幅は１２ビットであるものとする。また、論理アドレスは３１ビット幅であるとものとする。
【００２５】
汎用レジスタは１６本有り、命令のオペランドアクセスにおいては、命令によって、これら汎用レジスタの中から最大２つのレジスタ（ベースレジスタ、インデックスレジスタ）を指定できるものとし、レジスタ指定の際に０番のレジスタを指定したときは、そのレジスタを用いない指定であるものとする。また、これらのレジスタと共に用いる変位値は１２ビットの整定数（０〜４０９５）を指定できるものとする。
【００２６】
また、命令フェッチ部に対しては、命令フェッチポートを３つ持っており、それぞれのポートの後続命令フェッチ、それぞれのポートから分岐予測の分岐先命令フェッチ、ブランチヒストリからバイパスされる分岐先命令フェッチ、分岐命令処理機構からの分岐失敗時の再命令フェッチや起動時、割り込み時などの命令フェッチ、が要求されるものとする。
【００２７】
図２は、従来の論理アドレスベースのキャッシュアクセスサイクルと本実施形態の絶対アドレスベースのキャッシュアクセスサイクルを説明する図である。
命令フェッチ、オペランドアクセスのいずれの場合にも、図２（ｂ）のようなサイクルでキャッシュアクセスが行われる。対比のために、論理アドレスベースの従来のキャッシュシステムでの実行例を図２（ａ）に示してある。ただし、いずれの場合も、キャッシュミス、アドレス一致ミスなどが起こった場合には、Ｒサイクルで生じるはずの結果保証がされず、正しいデータを返すための動作（例えば、２次キャッシュへのアクセスなど）が生じる。ただし、この動作は従来技術と変わらず、ここでは記載を省略する。
【００２８】
図２（ａ）の従来の論理アドレスベースのキャッシュアクセスの場合、まず、Ａサイクルで、フェッチする論理アドレスが生成される。次に、Ｔサイクルで、この論理アドレスに基づいて、ＴＬＢを検索して絶対アドレスを求めると共に、ＬＢＳ（Local   Buffer  Storage ：キャッシュメモリのこと）のタグ及びデータの読み出しが行われる。そして、Ｂサイクルでは、ＴＬＢを検索して得られた絶対アドレスは、２次キャッシュアクセス用に用いられると共に、Ａサイクルで生成された論理アドレスと、読み出されたＬＢＳタグとの論理アドレスの一致検出や、例外検出、ウェイ選択、ウェイ選択に応じて、読み出されたＬＢＳデータをバッファにセットする。そして、Ｒサイクルにおいて、結果保証が行われる。
【００２９】
これに対し、図２（ｂ）の本発明の実施形態においては、Ａサイクルにおいて、フェッチする論理アドレスが生成されると共に、キャッシュメモリにアクセスするための絶対アドレスの予測が行われる。そして、Ｔサイクルで、予測された絶対アドレスに基づいて、ＬＢＳタグの読み出し、及びＬＢＳデータの読み出しが行われる。これらと並行して、Ｔサイクルでは、論理アドレスに基づいてＴＬＢ検索を行い、絶対アドレスを求める。次に、Ｂサイクルで、ＬＢＳタグの読み出し、及び、ＬＢＳデータの読み出しに応じて、例外検出や、ウェイ選択、及び、ＬＢＳデータのバッファへのセットが行われる。更に、Ｂサイクルでは、ＴサイクルでＴＬＢを索引して求められた絶対アドレスと、予測絶対アドレスとの一致検出が行われる。そして、Ｒサイクルにおいて、絶対アドレス一致検出の結果予測が正しかったと判断された場合には、結果保証が行われ、予測が誤っていたと判断された場合には、アブソリュートアドレスヒストリテーブル（ＡＡＨＴ）に正しいアドレスの対応を書き戻す処理が行われる。
【００３０】
図２（ａ）及び（ｂ）を比較して分かる通り、本実施形態を用いれば、論理アドレスベースと比較して絶対アドレスベースのキャッシュシステムでもクロック損失は生じない。唯一差が生じるのは、絶対アドレスの予測を誤った場合であるが、この差については後述する。
【００３１】
図３は、絶対アドレスを並列に求めない従来の構成の絶対アドレスベースのキャッシュアクセスと本実施形態のキャッシュアクセスサイクルについて示す図である。
図３（ａ）は、従来の構成を示している。この場合、Ａサイクルにおいて、フェッチする論理アドレスを生成すると共に、アブソリュートアドレスヒストリテーブル（ＡＡＨＴ）を検索して絶対アドレスを求める。Ｔサイクルでは、生成された論理アドレスに基づいて、ＴＬＢを検索し、絶対アドレスを求める。また、ＡＡＨＴの検索によって得られた絶対アドレスに基づいて、ＬＢＳタグ及びＬＢＳデータを読み出す。そして、Ｂサイクルにおいて、Ａサイクルで得られた絶対アドレスと、Ｔサイクルで求めた絶対アドレスの一致検出を行うと共に、ＬＢＳタグに基づいた例外検出やウェイ選択、ＬＢＳデータのバッファへのセットが行われる。そして、Ｒサイクルにおいて、絶対アドレス一致検出の結果、一致が検出されると、結果保証が行われ、不一致であると判断されると、ＡＡＨＴに正しいアドレス対応を書き戻す処理を行う。
【００３２】
図３（ｂ）は、図２（ｂ）に示した本実施形態における処理サイクルを示したものであり、詳しい説明は省略する。
図３（ａ）及び（ｂ）の比較から分かるように、図３（ａ）の場合は、１サイクルの間に行う作業量が増えてしまい、各サイクルが間延びした結果、処理速度が遅くなっていることが理解される。このように、本実施形態を使用すると、従来の絶対アドレスベースのキャッシュ機構より処理速度を上げることが出来る。
図４は、絶対アドレスを並列に求めない従来の絶対アドレスベースのキャッシュアクセスと本実施形態を比較する図である。
【００３３】
図４（ａ）が従来技術を示す。図４（ａ）に示されるように、まず、Ａサイクルで、フェッチする論理アドレスを生成し、Ｔサイクルで、ＴＬＢを検索して絶対アドレスを求める。次に、Ｄサイクルを設けて、ＬＢＳタグ及びＬＢＳデータを読み出す。そして、Ｂサイクルで、例外検出や、ウェイ選択、ＬＢＳデータのバッファへのセットなどを行い、Ｒサイクルで結果保証を行う。
【００３４】
図４（ｂ）は、図２（ｂ）で説明した本実施形態の場合であり、説明を省略する。
図４（ａ）及び（ｂ）によれば、図４（ａ）では、新たにＤサイクルを設けているので、本実施形態に比べて１クロック処理が遅れることになる。
【００３５】
以上のように、本実施形態の絶対アドレスベースのキャッシュアクセス方法を用いると、従来の論理アドレスベースのキャッシュアクセスの場合と同じ処理速度で処理できると共に、従来の絶対アドレスベースのキャッシュアクセス方法に比べて処理速度が速くなると言う利点がある。更に、本実施形態は、絶対アドレスベースのキャッシュアクセスを採用しているので、論理アドレスベースのキャッシュアクセスを使用している場合に比べ、シノニム問題が生じないという利点がある。上記説明では、従来の論理アドレスベースのキャッシュアクセスと本実施形態は同等の処理速度を有するように説明したが、論理アドレスベースの場合、シノニム問題によって処理遅延が生じるので、本実施形態に従えば、従来の論理アドレスベースのキャッシュアクセスよりも処理が全体的に速くなる利点がある。
【００３６】
本実施形態においては、キャッシュ機構は、ＴＬＢ、ＬＢＳ＿ＤＡＴＡ、ＬＢＳ＿ＴＡＧで構成されているものとする。ＴＬＢは５１２ライン、ＬＢＳはそぞれ１０２４ラインで構成されており、ＬＢＳの１ブロックは６４バイトであるものとする。したがって本構成において、ＬＢＳアクセスのアドレスビットは、ビット＜１６：２５＞となる。本構成では、絶対アドレスベースのキャッシュであるので、＜２０：２５＞は絶対アドレスと論理アドレスが一致するので論理アドレス出力を用い、＜１６：１９＞は本実施形態の予測絶対アドレス出力を用いる。
【００３７】
それと同時に、予測を保証することをかねて、ＴＬＢアクセスを論理アドレスに基づいて行う。ＴＬＢが５１２ラインであるときは、論理アドレスのビット＜１１：１９＞を用いる。つまり、本実施形態に従って出力されたアドレスは、キャッシュ部で、図５のように使われる。
【００３８】
すなわち、ＬＢＳ＿ＴＡＧ（ＬＢＳタグ）、及び、ＬＢＳ＿ＤＡＴＡ（ＬＢＳデータ）は、図５（ａ）のＬＢＳに格納されている。ＬＢＳのアドレス端子ＡＤＲＳには、上記したように、絶対アドレスＡＢＳ＿ＡＤＲＳ＜１６：１９＞と論理アドレスＬＯＧＩＣＡＬ＿ＡＤＲＳ＜２０：２５＞が入力され、データ出力端子ＤＡＴＡＯＵＴからはキャッシュの各種内容が出力される。
【００３９】
また、図５（ｂ）に示されるＴＬＢのアドレス端子ＡＤＲＳには、論理アドレスＬＯＧＩＣＡＬ＿ＡＤＲＳ＜１２：１９＞が入力され、データ出力端子ＤＡＴＡＯＵＴからは、論理アドレスに対応する絶対アドレスが出力される。
【００４０】
図６は、本発明のオペランドアクセスの実施形態の全体の処理の流れを示す図である。
まず、アドレス計算の元データとして、ベースレジスタ値ＢＲ、インデックスレジスタ値ＸＲ、及び、変位値ＤＩＳＰがオペランドアクセス部に入力される。これらのデータは、アドレス演算器ＯＰ−ＥＡＧにおいて、論理アドレスの計算に使用される。ＯＰ−ＥＡＧから出力される論理アドレスは正しく計算された論理アドレスである。この正しく計算された論理アドレスは、ＴＬＢに入力され、対応する絶対アドレスが出力される。
【００４１】
一方、ベースレジスタ値ＢＲ、インデックスレジスタ値ＸＲ、及び、変位値ＤＩＳＰは、論理アドレス予測部に入力され、予測された論理アドレスが出力される。この予測された論理アドレスは、アブソリュートアドレスヒストリテーブルＡＡＨＴに入力され、予測された絶対アドレスが生成される。予測された絶対アドレスは、絶対アドレスベースのキャッシュであるＬＢＳに入力され、キャッシュデータが出力される。
【００４２】
一方、予測された絶対アドレスは、一致検出部に、ＴＬＢからの絶対アドレスと共に入力され、一致するか否かの判断結果が結果保証として出力される。また、ＴＬＢから出力された絶対アドレスは、アブソリュートアドレスヒストリテーブルＡＡＨＴに入力され、論理アドレス−絶対アドレスの正しい対応関係として書き戻しされる。
【００４３】
図７は、オペランドアクセス部の実施形態を示す図である。
オペランドアクセス用のアブソリュートアドレスヒストリテーブルは、３２ライン×４ｗａｙのセットアソシエイティブ方式で、ラインアクセスには論理アドレスの＜１５：１９＞を用いるとする。また、各エントリは、論理アドレスと対になる絶対アドレスのビット＜１６：１９＞（ＡＢＳＯＬＵＴＥ＿ＡＤＲＳ＜１６：１９＞：論理アドレスビット＜１５：１９＞をＡＡＨＴに入力すると予測絶対アドレス＜１６：１９＞が出力される）と、セットアソシエイティブ方式において、アドレスがヒットしたか否か、すなわち、アドレス一致検出する際に用いる論理アドレスのビット＜８：１４＞（ＬＯＧＩＣＡＬ＿ＡＤＲＳ＿ＴＡＧ＜８：１４＞）、及び、リプレース用のフラグ（ＬＡＳＴ＿ＡＣＣＥＳＳ＿ＦＬＡＧ）と、そのエントリが有効であることを示す＋ＶＡＬＩＤから構成されているものとしている。もちろん、一般的には、これ以外の構成も容易に可能であることは当業者には容易に理解できよう。
【００４４】
命令デコード部でデコードされた命令が、アクセス先のアドレス計算を要するメモリアクセスを伴う命令である場合には、命令デコード部は、アドレス計算に必要な情報（レジスタ番号、変位値）をアドレス計算部（ＯＰ＿ＥＡＧ）に引き渡す。すなわち、ベースレジスタ値ＢＲ＜１：３１＞、インデックスレジスタ値ＸＲ＜１：３１＞、及び、変位値ＤＩＳＰ＜０：１１＞がＯＰ＿ＥＡＧに入力される。変位値＜０：１１＞は、ベースレジスタ値ＢＲ＜１：３１＞あるいは、インデックスレジスタ値ＸＲ＜１：３１＞のビット＜２０：３１＞に加算される。
【００４５】
アドレス計算部ＯＰ＿ＥＡＧでは、計算に必要なレジスタが現在実行中の命令によって書き換えられているか否かで、レジスタファイルの参照するか、もしくは書き換えを行っている部分（例えば、メモリからロードされるのならキャッシュ部、演算によって書き変わるなら演算部）からバイパスするかを決定し、その値を利用して論理アドレスの計算をする。すなわち、バイパスする場合には、キャッシュ部あるいは、演算部からＢＹＰＡＳＳ＿ＢＲ＜１：３１＞あるいは、ＢＹＰＡＳＳ＿ＸＲ＜１：３１＞が入力される。また、図７において、ＢＹＰＡＳＳ＿ＢＲやＢＹＰＡＳＳ＿ＸＲがキャリー予測部１０、１１に入力される様子が点線で示されているが、これは、ハードウェアの構成によっては、必要な場合には、ＢＹＰＡＳＳ＿ＢＲやＢＹＰＡＳＳ＿ＸＲを通常のＢＲやＸＲの代わりに用いて、ＡＡＨＴの索引に用いるようにしても良いということである。
【００４６】
本実施形態の装置は、アドレス計算部ＯＰ＿ＥＡＧに付随して設置される。すなわち、論理アドレスの計算と並列して、実アドレスの部分ビット列を予測する。スーパースカラ方式などを採用する装置においては、メモリ参照のためのアドレス計算部ＯＰ＿ＥＡＧは複数置かれる場合があるが、本実施形態の装置の大部分は、それらに対して共用することができる。
【００４７】
本実施形態においては、キャッシュアクセスのためのアドレス計算部ＯＰ＿ＥＡＧを二つ持っているものとする。ただし、以下の説明において、特に複数記さなければ分からない部分を除き、ＥＡＧ＿ｘと代表して記述することにし、複数記述する場合には、ＥＡＧ＿０とＥＡＧ＿１などとして記述する。
【００４８】
ＯＰ＿ＥＡＧには、ＢＲ、ＸＲあるいは、ＢＹＰＡＳＳ＿ＢＲ、ＢＹＰＡＳＳ＿ＸＲが入力されて、論理アドレスＥＡＧ＿ｘ＿ＬＯＧＩＣＡＬ＿ＡＤＲＳ＜１：３１＞が出力される。また、ＢＲとＸＲ（ハードウェア構成によっては、ＢＹＰＡＳＳ＿ＢＲ、及び、ＢＹＰＡＳＳ＿ＸＲも）のビット＜８：１９＞及び、変位値ＤＩＳＰ＜０：１１＞が索引部１２に入力される。ＢＲとＸＲのビット＜８：１９＞は、上記した、ラインアクセスに用いる論理アドレス＜１５：１９＞と、アドレス一致検出に用いる論理アドレス＜８：１４＞を合わせたものである。
【００４９】
索引部１２では、ＢＲ＜８：１９＞がセレクタ１３に入力されると共に、これに“１" を加算した値もセレクタ１３に入力される。同様に、ＸＲ＜８：１９＞と、これに“１" を加算した値は、セレクタ１４に入力される。また、ＢＲ＜２０：３１＞とＤＩＳＰ＜０：１１＞がキャリー予測部１０に入力され、キャリーが生じるか否か、すなわち、アクセスするページが繰り上がるか否かが判断される。この判断に従って、セレクタ１３を制御して、ＢＲ＜８：１９＞そのままか、これに“１" を加えた値を選択する。
【００５０】
全く同様に、セレクタ１４には、ＸＲ＜８：１９＞と、これに“１" を加えたものが入力され、キャリー予測部１１において得られるＸＲ＜２０：３１＞とＤＩＳＰ＜０：１１＞から予測されるキャリー予測に従って、いずれかを選択して出力する。
【００５１】
選択回路１６には、ＢＲ＜１：１９＞、ＸＲ＜１：１９＞、及び、ＢＲ番号であるＢＲ＿ｘ＿ＮＵＭ＜０：３＞、ＸＲ番号であるＸＲ＿ｘ＿ＮＵＭ＜０：３＞が入力され、ベースレジスタ値ＢＲ、インデックスレジスタ値ＸＲのいずれをＡＡＨＴに入力するか、あるいは、両方ともＡＡＨＴには入力しないかが判断される。そして、この判断に従って、セレクタ１５を制御して、適当な値を出力させる。セレクタ１５から出力されたアドレス値は、アブソリュートアドレスヒストリテーブルＡＡＨＴに入力され、予測絶対アドレス値ＥＡＧ＿ｘ＿ＡＢＳ＿ＡＤＲＳ＜１６：１９＞が出力される。
【００５２】
なお、キャリー予測部１０、１１及び、選択回路１６の詳細については、後述する。図８は、ベースレジスタとインデックスレジスタの選択回路（図７の選択回路１６）の構成例を示す図である。
【００５３】
本実施形態ではアドレス幅を３１ビットとしているので、上位３１−１２＝１９ビットの少なくとも一つが１であれば、４０９６以上の値を保持している、すなわち、バイトインデックスの範囲を越える大きな値であることが判定できる。
【００５４】
ベースレジスタ値（＋ＢＲ＿ｘ＿ＤＡＴＡ）、インデックスレジスタ値（＋ＸＲ＿ｘ＿ＤＡＴＡ）が共に大きい場合には、一つのレジスタ値を用いてのアブソリュートアドレスヒストリテーブルの索引は必ず失敗するので、この時には、ベース、インデックスレジスタ値の両方とも選択されない。ベースレジスタ値、インデックスレジスタ値のうち、片方だけが大きい場合、あるいは、片方だけが有効（レジスタ番号指定が“０" でない）であるときには、そちら側が選択される。いずれも無効である場合には、どちらも選択されない。
【００５５】
この回路によって、アブソリュートアドレスヒストリテーブルを索引するレジスタが決定される。
すなわち、図８において、ベースレジスタ番号（＋ＢＲ＿ｘ＿ＮＵＭ＜０：３＞）と、インデックスレジスタ番号（＋ＸＲ＿ｘ＿ＮＵＭ＜０：３＞）がそれぞれ、ＯＲ回路２０及び２１に入力される。ここで、ベースレジスタ番号あるいは、インデックスレジスタ番号がそれぞれ“０" の時のみ、それぞれのＯＲ回路２０、２１から“０" 信号が出力され、ＡＮＤ回路２４、２５に入力される。従って、レジスタ番号として“０" が設定されていた場合には、ＡＮＤ回路２４、２５の出力は“０" となり、レジスタ番号が“０" となっているレジスタのレジスタ値を選択する信号は出力されなくなる。
【００５６】
レジスタ番号が“０" でなく、かつ、レジスタ値の上位ビット（＋ＢＲ＿ｘ＿ＤＡＴＡ＜１：１９＞、＋ＸＲ＿ｘ＿ＤＡＴＡ＜１：１９＞）が全て“０" でないならば、ＯＲ回路２２、２３から“１" の信号が出力される。従って、ＡＮＤ回路２４、２５の出力が“１" となる。いずれかのＡＮＤ回路２４、２５の出力が“１" で、他方が“０" の場合、例えば、ＡＮＤ回路２４の出力が“１" で、ＡＮＤ回路２５の出力が“０" である場合には、ＡＮＤ回路２５の出力は、インバータ２７によって“１" に変換され、アンド回路２８からベースレジスタの選択信号（＋ＢＲ＿ｘ＿ＳＥＬ）が出力される。この場合と逆の場合は、ＡＮＤ回路２４の出力が“０" となり、ＡＮＤ回路２５の出力が“１" となるため、ＡＮＤ回路３０からインデックスレジスタ選択信号（＋ＸＲ＿ｘ＿ＳＥＬ）が出力される。いずれのＡＮＤ回路２４、２５からも“１" の信号が出力された場合には、ＡＮＤ回路２９から、いずれのレジスタも選択しない旨の信号（＋ＢＲ＋ＸＲ＿ｘ＿ＬＡＲＧＥ）が出力される。
【００５７】
次に、キャリー予測部について記述する。キャリー予測を含めて実アドレス予測を１クロックで終わらせるために、ベースレジスタ、インデックスレジスタのそれぞれについて並列に行う。
【００５８】
図９は、キャリー予測部の第１の実施形態を示す図である。
本実施形態では、ベースレジスタデータ（＋ＢＲ＿ｘ＿ＤＡＴＡ）及びインデックスレジスタデータ（＋ＸＲ＿ｘ＿ＤＡＴＡ）のバイトインデックス部の上位２ビットだけを加算することで、キャリー予測を行う。すなわち、選択されたレジスタのバイトインデックス部と変位値のそれぞれ上位２ビットを加算した結果、３ビット目への繰り上がりが生じる場合に、キャリーが生じるものと予測する。
【００５９】
すなわち、まず、ＯＲ回路３１において、ベースレジスタ番号が“０" か否かを判断する。ベースレジスタ番号が“０" である場合には、ＡＮＤ回路３３の出力は“０" となって、ベースレジスタ値に対するキャリー予測信号（＋ＢＲ＿ｘ＿ＣＡＲＲＹ＿ＰＲＥＤＩＣＴは生成されない。ベースレジスタ番号が“０" でないとき、判断回路３２に、ベースレジスタ値（＋ＢＲ＿ｘ＿ＤＡＴＡ）のバイトインデックス部の上位２ビット＜２０＞と＜２１＞及び、変位値（＋ＤＩＳＰ）の上位２ビット＜０＞と＜１＞が入力される。判断回路３２では、＋ＢＲ＿ｘ＿ＤＡＴＡ＜２０＞と＋ＤＩＳＰ＜０＞が共に“１" の場合、＋ＢＲ＿ｘ＿ＤＡＴＡ＜２０＞、ＤＩＳＰ＜０＞、＜１＞が全て“１" の場合、＋ＢＲ＿ｘ＿ＤＡＴＡ＜２０＞、＜２１＞、ＤＩＳＰ＜１＞が全て“１" の場合に、繰り上げが起きるので、これらの場合に、判断回路３２から信号“１" を出力する。従って、今、ベースレジスタ番号が“０" でないので、ＡＮＤ回路３３の出力が“１" となり、ベースレジスタ値のキャリー予測信号（＋ＢＲ＿ｘ＿ＣＡＲＲＹ＿ＰＲＥＤＩＣＴ）が出力される。
【００６０】
図９の下段に記載されているインデックスレジスタ値に対する回路も上記したベースレジスタに対するものと同じであり、ＯＲ回路３４で、インデックスレジスタ番号が“０" であるか否かを判断し、判断回路３５において、インデックスレジスタデータ（＋ＸＲ＿ｘ＿ＤＡＴＡ）のバイトインデックス部の上位２ビットと変位値ＤＩＳＰの上位２ビットを用いて、キャリーが生じるか否かが判断される。そして、インデックスレジスタ番号が“０" でない場合に、キャリーが生じると判断された場合には、ＡＮＤ回路３６から、インデックスレジスタに対するキャリー信号（＋ＸＲ＿ｘ＿ＣＡＲＲＹ＿ＰＲＥＤＩＣＴ）が出力される。
【００６１】
なお、上記実施形態では、バイトインデックス部の上位２ビットと変位値の上位２ビットのみを使ってキャリー予測を行ったが、ハードウェアの構成上、計算時間に余裕が生じるのであれば、ベースレジスタデータ及びインデックスレジスタデータのもっと多くのビットあるいは全ビットをキャリー予測に用いても良い。この場合、判断回路３２及び３５には、ベースレジスタデータのもっと多くのビットあるいは全ビットと変位値のもっと多くのビットあるいは全ビット、及び、インデックスデータの全ビットと変位値のもっと多くのビットあるいは全ビットを入力して、加算を実行し、実際に桁上がりが生じるか否かを判断することになる。このための具体的な構成は、当業者によれば容易に実現可能であろう。
【００６２】
図１０、１１は、キャリー予測部の第２の実施形態を示す図である。まず、キャリー予測部の読み出し部を図１０に示す。本実施形態では、過去に、レジスタ値に変位値を加算した結果キャリーが生じたレジスタ番号を最大二つ記憶しているものとする。以下では、このレジスタ番号記憶部分を、キャリーレジスタ（Carry   Register）＃０、＃１と呼ぶ。なお、本発明においては、キャリーレジスタの数を限定するものではない。
【００６３】
また、本実施形態では、キャリーレジスタの記憶している値が０であるときは、その記憶内容が無効であることを意味するものとする。こうすることで、特別に有効信号を設けなくても良くなり、回路コストを低減することができる。
【００６４】
まず、アドレス演算部ＯＰ＿ＥＡＧ＿ｘからは、ベースレジスタ番号ＢＲ＿ｘ＿ＮＵＭ＜０：３＞、インデックスレジスタ番号ＸＲ＿ｘ＿ＮＵＭ＜０：３＞、及び変位値ＤＩＳＰ＿ｘ＜０：１１＞が入力される。また、キャリーレジスタＣＡＲＲＹ＿ＲＥＧ＃０からは、キャリーレジスタ＃０に記憶されている、ベースレジスタ、あるいは、インデックスレジスタ番号ＣＡＲＲＹ＿ＲＥＧ＿０＿ＮＵＭ＜０：３＞と、キャリーレジスタ＃０に格納されている論理アドレスのバイトインデックス値ＣＡＲＲＹ＿ＲＥＧ＿０＿ＢＹＴＥ＜２０：３１＞が入力される。同様に、キャリーレジスタ＃１からは、ＣＡＲＲＹ＿ＲＥＧ＿１＿ＢＹＴＥ＜２０：２１＞と、ＣＡＲＲＹ＿ＲＥＧ＿１＿ＮＵＭ＜０：３＞が入力される。
【００６５】
比較部４０と４１では、キャリーレジスタ＃０と＃１に対してそれぞれ同じ比較処理を行っている。まず、ベースレジスタ番号ＢＲ＿ｘ＿ＮＵＭとＣＡＲＲＹ＿ＲＥＧ＿０＿ＮＵＭとが比較器４２によって比較され、一致する場合に、“１" が出力される。また、比較器４３においては、ＸＲ＿ｘ＿ＮＵＭとＣＡＲＲＹ＿ＲＥＧ＿０＿ＮＵＭとが比較され、一致する場合に、“１" が出力される。また、ＯＲ回路４４では、ＣＡＲＲＹ＿ＲＥＧ＿０＿ＮＵＭが“０" でないか否かが判断され、“０" でない場合に、“１" が出力される。更に、ＤＩＳＰ＿ｘとＣＡＲＲＹ＿ＲＥＧ＿０＿ＢＹＴＥのバイトインデックスを論理反転したものとの比較が比較器４５において行われる。比較器４５においては、ＤＩＳＰ＿ｘの方が、ＣＡＲＲＹ＿ＲＥＧ＿０＿ＢＹＴＥの論理反転より大きいとき、キャリーが生じることを示すので、この場合に、キャリー信号を“１" とする。そして、これらの信号が、それぞれ、ＡＮＤ回路４６と４７に入力される。従って、キャリーレジスタ＃０に格納されているレジスタ番号とベースレジスタ番号が一致し、キャリーレジスタ＃０に格納されているレジスタ番号が“０" ではなく、かつ、変位値がキャリーレジスタ＃０に格納されているバイトインデックス値の反転値より大きい場合に、ベースレジスタ値のキャリー予測信号＋ＢＲ＿ｘ＿ＲＥＧ＿ＣＡＲＲＹ＿ＰＲＥＤＩＣＴが生成される。これは、キャリーレジスタ＃１側でも同じことで、キャリーレジスタ＃０と＃１のいずれかで、キャリー予測が成り立った場合には、＋ＢＲ＿ｘ＿ＲＥＧ＿ＣＡＲＲＹ＿ＰＲＥＤＩＣＴが生成される。同様に、インデックスレジスタ値についても、ＸＲ＿ｘ＿ＮＵＭとＣＡＲＲＹ＿ＲＥＧ＿０＿ＮＵＭあるいはＣＡＲＲＹ＿ＲＥＧ＿１＿ＮＵＭが等しく、ＣＡＲＲＹ＿ＲＥＧ＿０＿ＮＵＭあるいは、ＣＡＲＲＹ＿ＲＥＧ＿１＿ＮＵＭが“０" でなく、ＤＩＳＰ＿ｘがＣＡＲＲＹ＿ＲＥＧ＿０＿ＢＹＴＥの反転、あるいは、ＣＡＲＲＹ＿ＲＥＧ＿１＿ＢＹＴＥの反転より大きい場合、ＯＲ回路４９からインデックスレジスタに対するキャリー予測信号＋ＸＲ＿ｘ＿ＲＥＧ＿ＣＡＲＲＹ＿ＰＲＥＤＩＣＴが生成される。
【００６６】
図１１に、キャリー予測部のキャリーレジスタへの登録部を示す。
まず、ＥＡＧ＿ｘにおいて計算される際に生じるバイトインデックスからの繰り上がり（本実施形態では、ビット＜２０＞から＜１９＞への桁上がり）信号を＋ＥＡＧ＿ｘ＿ＰＡＧＥ＿ＣＲＯＳＳとする。ベースレジスタとインデックスレジスタの双方が大きい場合には登録する意味がないので、＋ＢＲ＋ＸＲ＿ｘ＿ＬＡＲＧＥ信号を反転してＡＮＤを取ることで、それぞれのＥＡＧで計算された結果を登録すべきか否かを決定する。
【００６７】
また、ベース・インデックスレジスタ選択信号（＋ＢＲ＿ｘ＿ＳＥＬ、＋ＸＲ＿ｘ＿ＳＥＬ）により、格納すべきレジスタ番号（＋ＢＲ＿ｘ＿ＮＵＭ＜０：３＞、＋ＸＲ＿ｘ＿ＮＵＭ＜０：３＞）と、それに対応するレジスタ値のバイトインデックス部分（＋ＢＲ＿ｘ＿ＤＡＴＡ＜０：３＞、＋ＸＲ＿ｘ＿ＤＡＴＡ＜０：３＞）を選択する。なお、図１１で、アンド回路として記載されている素子５０と５１は、それぞれ、＋ＢＲ＿ｘ＿ＳＥＬ、＋ＸＲ＿ｘ＿ＳＥＬによってレジスタ番号を出力するか否かを判断するセレクタあるいはゲートを意味している。そして、ＥＡＧ＿０とＥＡＧ＿１の両方が同じレジスタを使い、かつ、両者とも前述の判定の結果、登録すべきと判断された場合、ＥＡＧ＿１からの登録回路の動作を抑制し（ＡＮＤ回路５２）、ＥＡＧ＿０からの登録回路によって、この共通で用いられたレジスタの番号を、キャリーレジスタに書き込む。
【００６８】
本実施形態では、これら二つのキャリーレジスタの更新の選択のため（どちらを書き換えるか）のフラグ（＋ＲＥＰＬＡＣＥ＿ＦＬＡＧ）を準備している。このフラグは、その値に基づいて書き換えを行う番号が決定される。例えば、このフラグが“０" の時は、キャリーレジスタ＃０を書き換え、“１" の時は、キャリーレジスタ＃１が書き換えられる。また、書き換えが発生する毎に、その信号と排他的論理和（ＥｘＯＲ）を取ることで値を変化させているので、前回書き換えられたのと異なる側が書き換えられるようになっている。
【００６９】
ただし、書き換えを試みる際に、すでに同じレジスタのものが登録されている場合には、書き込み先の決定に＋ＲＥＰＬＡＣＥ＿ＦＬＡＧを用いるのではなく、その同じレジスタが登録されているところへ書き込みを行う。これは図１１中、＋ＣＡＲＲＹ＿ＲＥＧ＿ｎ＿ＮＵＭ＜０：３＞との一致判定をする回路とその後段のゲートで行っている（図１１中点線で囲まれた５３で示された部分）。また、このゲートでは、ＥＡＧ＿０とＥＡＧ＿１の両方がキャリーを発生させた場合には、ＥＡＧ＿０のキャリー情報が０番の方へ、ＥＡＧ＿１のキャリー情報が１番の方へ、それぞれ書き込まれる様にしている。それぞれ図１１の中央付近で、例えば、ＥＡＧ＿０−＞＃１であるならＥＡＧ＿０からの結果をキャリーレジスタの１番に書き込むことを指示する信号であることを示している（図１１中、５５で示される回路素子（セレクタあるいはゲート））。なお、図１１中で、ＡＮＤ回路で示されている素子５５〜６４は、実際には、信号の入力に従って、データを出力するセレクタあるいはゲートであり、ＯＲ回路で示されている素子６５〜６８は、複数入力するデータの内、いずれかが入力されたら、そのデータを出力するというゲートなどである。その他の、図１１に現れている回路素子の内、複数ビットのデータと１ビットの信号が入力しているＡＮＤ回路やＯＲ回路は、その信号の入力などによってデータを出力するゲートなどである。
【００７０】
もちろん、一般的にこのような方法ではなく、別のアルゴリズムで書き込み先を決定することも可能である。
表１は、図１１で実施している、キャリーレジスタの書き込み先決定回路部分の論理を示したものである。表中、「−」はDon't   care（０と１のどちらの値でも良い）を示している。またＣＲ＃ｎは本実施形態のCarry   Register＃ｎを示している。ＲＥＰＬは、＋ＲＥＰＬＡＣＥ＿ＦＬＡＧの値を示している。
【００７１】
【表１】
0003848161.tif 000002
もちろん、これらの方式によるキャリー予測を、同時に複数用いることもできる。この場合、それぞれの予測信号の論理和（ＯＲ）を取って、キャリー予測信号とすれば良い。
【００７２】
前述のようなキャリー予測、及びキャリーレジスタ選択回路に基づいて、アブソリュートアドレスヒストリテーブル索引のための論理アドレス（ＰＲＥＤＩＣＴ＿ＬＡＲ＿ｘ＜８：１９＞）が求められる。
【００７３】
図１２は、アブソリュートアドレスヒストリテーブル索引のための論理アドレス生成回路の構成例を示す図である。
ただし、後述のレジスタペア・ロジカルアドレスヒストリを用いる場合には、ＯＰ＿ＥＡＧ＿０とＯＰ＿ＥＡＧ＿１に対応して設けられている回路で得られた値のいずれか一方を＋ＢＲ＋ＸＲ＿ｘ＿ＬＡＲＧＥ信号で選択して、必要な論理アドレス相当値を用いることになる。
【００７４】
こうして求められる論理アドレス相当値に基づき、アブソリュートアドレスヒストリテーブルを索引し、実アドレスの内必要ビットを出力する。
図１２を説明する。ベースレジスタデータに対する回路とインデックスレジスタデータに対する回路は同じであり、後に、素子７０、７１で、双方の信号のいずれかを出力するようにする（ＯＲを取るような処理をする）ので、ベースレジスタデータに対する回路についてのみ説明する。
【００７５】
ベースレジスタから、ベースレジスタに格納されているアドレス値＋ＢＲ＿ｘ＿ＤＡＴＡ＜８：１９＞が入力される。＋ＢＲ＿ｘ＿ＤＡＴＡ＜８：１９＞は、直接セレクタ７２に入力されると共に、加算器で“１" が加算されたアドレス値もセレクタ７２に入力される。いずれのアドレス値を出力するかは、図図９の回路の出力値である＋ＢＲ＿ｘ＿ＣＡＲＲＹ＿ＰＲＥＤＩＣＴによって決定される。キャリーが発生しない場合には、そのままのアドレス値を、キャリーが発生す
る場合には、加算器によって“１" が加算されたアドレス値を出力する。
【００７６】
そして、図８の回路の出力値＋ＢＲ＿ｘ＿ＳＥＬが素子７３に入力され、セレクタ７２からのアドレス値が出力される。図８の回路から分かるように、＋ＸＲ＿ｘ＿ＳＥＬと＋ＢＲ＿ｘ＿ＳＥＬは同時には“１" にならないので、ベースレジスタに基づいたアドレス値か、インデックスレジスタに基づいたアドレス値のいずれか一方のみが素子７０に入力され、ＡＡＨＴを検索するための論理アドレス値＋ＰＲＥＤＩＣＴ＿ＬＡＲ＿ｘ＜８：１９＞が出力される。また、＋ＢＲ＿ｘ＿ＳＥＬあるいは＋ＸＲ＿ｘ＿ＳＥＬのいずれかが出力されることによって、ＯＲ回路７１を介して、予測の有効性を示す信号＋ＰＲＥＤＩＣＴ＿ＶＡＬＩＤ＿ｘが出力される。
【００７７】
図１３は、アブソリュートアドレスヒストリテーブルのエントリ選択と予測された絶対アドレスを出力するための構成を示す図である。
本実施形態では、４ウェイセットアソシエイティブ方式を仮定している。ＡＡＨＴからは、３２ラインのデータが出力される。これを図１２の回路で得た、ＰＲＥＤＩＣＴ＿ＬＡＲ＿ｘのビット＜１５：１９＞を用いて、セレクタ８０により、４つのウェイにデータを選択出力させる。ウェイ０〜ウェイ３に出力されたアドレスデータの内、ビット＜８：１４＞が各比較器８２に入力され、ＰＲＥＤＩＣＴ＿ＬＡＲ＿ｘのビット＜８：１４＞と比較される。また、ウェイ０〜ウェイ３に出力された、ＡＡＨＴのエントリの有効信号＋ＶＡＬＩＤが８３に入力され、比較器８２において一致したと判断されたウェイの内、エントリが有効なものについて、選択信号が生成され、セレクタ８１において、この選択されたウェイの絶対アドレスＡＢＳＯＬＵＴＥ＿ＡＤＲＳ＜１６：１９＞が、予測絶対アドレスＥＡＧ＿ｘ＿ＡＢＳ＿ＡＤＲＳ＜１６：１９＞として出力される。
【００７８】
インデックスレジスタ値、ベースレジスタ値の両者とも大きいことが判定された場合には、アブソリュートアドレスヒストリテーブル索引に失敗する。この場合、キャッシュ部に、ライトバック抑制信号を送出する様にしても良い。この信号を送出することで、ＴＬＢ索引結果である正しい論理アドレス・実アドレス対は書き戻すことを抑制することができる。これは、この手法を用いる限り、インデックスレジスタ値、ベースレジスタ値の両者とも大きい場合に、今後とも同じケースでは正しくテーブルを索引出来ないから、該結果を書き戻しても今後利用される可能性が低い。すなわち、このように使われないものを書き戻さないことによって、テーブル利用効率を高めることができる。
【００７９】
図１４は、論理アドレスベースのレジスタペアヒストリの構成例を示す図である。
図１４の回路は、図８の回路の出力を論理反転した信号（−ＢＲ＋ＸＲ＿ｘ＿ＬＡＲＧＥ）をトリガとして、ベースレジスタ番号ＢＲ＿ｘ＿ＮＵＭ、インデックスレジスタ番号ＸＲ＿ｘ＿ＮＵＭ、及びＯＰ＿ＥＡＧが算出した論理アドレス（＋ＥＡＧ＿ｘ＿ＬＯＧＩＣＡＬ＿ＡＤＲＳ）がそれぞれ、ラッチ９０、９１、９２に入力され、＋ＬＡＲＧＥ＿ＢＲ＿ｘ＿ＮＵＭ、＋ＬＡＲＧＥ＿ＸＲ＿ｘ＿ＮＵＭ、及び＋ＬＡＲＧＥ＿ＬＡＲ＿ｘとして出力される。
【００８０】
図１４の回路から出力された各信号は、後述する回路によって使用される。
図１５は、絶対アドレスベースのレジスタペアヒストリの構成例を示す図である。
図１５の回路は、図１４の回路と基本的に同じ構成であって、ラッチ９３、９４には、−ＢＲ＋ＸＲ＿ｘ＿ＬＡＲＧＥ、ＢＲ＿ｘ＿ＮＵＭ、及び、ＸＲ＿ｘ＿ＮＵＭが入力される。そして、−ＢＲ＋ＸＲ＿ｘ＿ＬＡＲＧＥをトリガとして、＋ＬＡＲＧＥ＿ＢＲ＿ｘ＿ＮＵＭ、及び、＋ＬＡＲＧＥ＿ＸＲ＿ｘ＿ＮＵＭが出力される。
【００８１】
一方、ラッチ９５には、ＯＰ＿ＥＡＧからの論理アドレスではなく、この論理アドレスをＴＬＢによって変換した絶対アドレス（＋ＴＬＢ＿ｘ＿ＡＢＳ＿ＡＤＲＳ）が入力され、＋ＬＡＲＧＥ＿ＡＢＳ＿ＡＤＲＳ＿ｘとして出力される。
【００８２】
これらの出力信号も後述の回路によって使用される。
図１６は、ベースレジスタ値、インデックスレジスタ値がともに大きい場合に用いるレジスタペア・アドレスヒストリの選択回路の構成例である。
【００８３】
ベースレジスタ番号（＋ＢＲ＿ｘ＿ＮＵＭ）と＋ＬＡＲＧＥ＿ＢＲ＿０＿ＮＵＭ及び、インデックスレジスタ番号（＋ＸＲ＿ｘ＿ＮＵＭ）と＋ＬＡＲＧＥ＿ＸＲ＿０＿ＮＵＭがそれぞれ比較部９６において比較され、互いに等しいときに、
“１" の信号が出力される。同様に、＋ＢＲ＿ｘ＿ＮＵＭと＋ＬＡＲＧＥ＿ＢＲ＿１＿ＮＵＭ、及び、＋ＸＲ＿ｘ＿ＮＵＭと＋ＬＡＲＧＥ＿ＸＲ＿１＿ＮＵＭがそれぞれ比較部９７において比較され、互いに等しいときに、“１" の信号が出力される。
【００８４】
そして、比較部９６、９７の出力は、それぞれＡＮＤ回路９８、９９に入力されると共に、＋ＢＲ＋ＸＲ＿ｘ＿ＬＡＲＧＥがそれぞれのＡＮＤ回路９８、９９に入力される。従って、＋ＢＲ＿ｘ＿ＮＵＭと＋ＬＡＲＧＥ＿ＢＲ＿０＿ＮＵＭが等しく、かつ、＋ＸＲ＿ｘ＿ＮＵＭと＋ＬＡＲＧＥ＿ＸＲ＿０＿ＮＵＭが等しく、かつ、＋ＢＲ＋ＸＲ＿ｘ＿ＬＡＲＧＥが入力された場合に、ＡＮＤ回路９８から、＃ｘのレジスタは、＃０のペアヒストリを使用する旨を指示する＋ＵＳＥ＿ｘ＿ＲＥＧ＿ＰＡＩＲ＿ＨＩＳＴＯＲＹ＿０が出力される。同様に、＋ＢＲ＿ｘ＿ＬＡＲＧＥと＋ＬＡＲＧＥ＿ＢＲ＿１＿ＮＵＭが等しく、かつ、＋ＸＲ＿ｘ＿ＮＵＭと＋ＬＡＲＧＥ＿ＸＲ＿１＿ＮＵＭが等しく、かつ、＋ＢＲ＋ＸＲ＿ｘ＿ＬＡＲＧＥが入力された場合には、ＡＮＤ回路９９から＃ｘのレジスタは、  ＃１のペアヒストリを使用する旨を指示する＋ＵＳＥ＿ｘ＿ＲＥＧ＿ＰＡＩＲ＿ＨＩＳＴＯＲＹ＿１が出力される。
【００８５】
図１７は、レジスタペア・アブソリュートアドレスヒストリの実アドレス出力生成回路の構成例を示した図である。
レジスタペア・アブソリュートアドレスヒストリ（図１５参照）では、ベースレジスタ値、インデックスレジスタ値がともに大きい場合のベースレジスタ番号とインデックスレジスタ番号の組と、それに対応する実アドレス（の部分ビット列）が記憶される。
【００８６】
従って、図１７に示すように、図１５の実アドレス出力である＋ＬＡＲＧＥ＿ＡＢＳ＿ＡＤＲＳ＿０＜８：１９＞が、図１６の回路の＋ＵＳＥ＿ｘ＿ＲＥＧ＿ＰＡＩＲ＿ＨＩＳＴＯＲＹ＿０が入力することにより選択される。同様に、＋ＬＡＲＧＥ＿ＡＢＳ＿ＡＤＲＳ＿１＜８：１９＞は、図１６の回路の＋ＵＳＥ＿ｘ＿ＲＥＧ＿ＰＡＩＲ＿ＨＩＳＴＯＲＹ＿１が入力することによって出力される。このようにして出力される実アドレス信号は、＋ＰＲＥＤＩＣＴ＿ＡＢＳ＿ｘ＿ＰＡＩＲ＜８：１９＞として、出力され、予測絶対アドレスとして使用される。
【００８７】
図１８は、レジスタペア・ロジカルアドレスヒストリの論理アドレス出力を行う回路の構成例を示す図である。
図１８に示すように、図１４の論理アドレス出力である＋ＬＡＲＧＥ＿ＬＡＲ＿０＜８：１９＞が、図１６の回路の＋ＵＳＥ＿ｘ＿ＲＥＧ＿ＰＡＩＲ＿ＨＩＳＴＯＲＹ＿０が入力することにより選択される。同様に、＋ＬＡＲＧＥ＿ＬＡＲ＿１＜８：１９＞は、図１６の回路の＋ＵＳＥ＿ｘ＿ＲＥＧ＿ＰＡＩＲ＿ＨＩＳＴＯＲＹ＿１が入力することによって出力される。
【００８８】
レジスタペアに対応する論理アドレスを覚える（レジスタペア・ロジカルアドレスヒストリ）場合には、図１８の出力の論理アドレスをもとに、アブソリュートアドレスヒストリテーブル索引を行うことになる。もちろん、図１２の出力と論理和を取れば、レジスタを一つしか使わない場合の実施形態とそのまま組み合わせることができる。
【００８９】
前述の実アドレスを保持する場合と比較すると、キャッシュ部のフェッチポートにおいてレジスタペアなどの情報を保持する必要がないので、回路構成は簡単になる。
キャッシュ（ＬＢＳ：Local   Buffer  Storage ）部では、各アクセス要求毎に割り当てられる管理領域（以下、フェッチポートと呼ぶ）が設けられている。
【００９０】
ＴＬＢを検索した結果得られる正しい絶対アドレスと、予測した絶対アドレスとを比較し、一致しなければ、対応するフェッチポートが、ＬＢＳアクセスの優先順位を確保することで、図１９のようなサイクルでＬＢＳを検索するように制御を行う。この際に用いる索引アドレスは、もちろん正しいと分かっているＴＬＢの検索結果の絶対アドレスを用いれば良い。また、ＴＬＢ検索結果の正しいアドレス対を、アブソリュートアドレスヒストリテーブルに書き込めばよい。
【００９１】
すなわち、図１９においては、Ａサイクルでフェッチする論理アドレスを生成すると共に、絶対アドレス予測を行う。Ｔサイクルで、フェッチされた論理アドレスを元にＴＬＢを検索して絶対アドレスを求めると共に、予測絶対アドレスに基づいて、ＬＢＳタグ読み出し、及びＬＢＳデータ読み出しが行われる。そして、Ｂサイクルで、予測絶対アドレスとＴＬＢから得られた正しい絶対アドレスが比較され、不一致が起こる。すると、Ｒサイクルにおいて、ＡＡＨＴに正しいアドレス対応を書き戻すと共に、新たに、処理が始まって、ＴＬＢ検索結果の絶対アドレスに基づいて、新たな処理のＴサイクルで、ＬＢＳタグ及びＬＢＳデータの読み出しが行われる。そして、Ｂサイクルで例外検出、ウェイ選択、バッファへのセットなどが行われ、Ｒサイクルで結果の保証が行われる。
【００９２】
また、予め絶対アドレスの予測が誤ることが分かっている場合、すなわち、
・アブソリュートアドレスヒストリテーブルにヒットしなかった場合
・前述インデックス・ベースレジスタ値が大きいと判定された場合（ただし、レジスタペアヒストリは使用しないとする。レジスタペアヒストリを使用する場合には、予測が  成功する可能性が高いので、通常例外処理は生じない。従って、図２０で説明する例  外処理はレジスタペアヒストリを使用しない場合、あるいは、レジスタペアヒストリ  を使用しても、他の理由で予測失敗が予め分かる場合について述べている。）
には、ＬＢＳを検索しても捨てられるのは分かっている。この場合には、ＬＢＳを検索しないことによって、図２０のような制御、すなわち、ＴＬＢ検索を伴わなくてすむキャッシュ内動作を並行して行うことも可能である。例えば、２クロック前にやはり絶対アドレス予測ミスがあった場合には、このような並列動作が可能である。
【００９３】
また、前述インデックス・ベースレジスタ値が大きいと判定された場合には、そのことをフェッチポートに記憶させておき、ＴＬＢ検索結果をアブソリュートアドレスヒストリテーブルに書き戻すのを抑制しても良い。
【００９４】
すなわち、図２０においては、Ａサイクルで、フェッチする論理アドレス生成を行うと共に、絶対アドレス予測を行う。そして、絶対アドレス予測の失敗が確定すると、絶対アドレスが確定しているキャッシュ検索などの優先順位を確保して、Ｔサイクルにおいて、ＬＢＳタグ及びＬＢＳデータ読み出しなどを行い、以下の処理を行う。一方、絶対アドレス予測が失敗した命令については、ＴサイクルでＴＬＢ検索して、絶対アドレスを求め、Ｂサイクルで絶対アドレスの確定を行うそして、ＲサイクルでＡＡＨＴに正しいアドレスを書き戻す。このとき、ＢＲ、ＸＲが大きいと判定された場合などは書き戻しを抑制する。
【００９５】
更に、Ｂサイクルで絶対アドレスが確定すると、別の処理を起動し、ＡサイクルでＴＬＢ検索結果の絶対アドレスを確定し、後は、通常通り、Ｔサイクルで、ＬＢＳタグ、ＬＢＳデータを読み出し、Ｂサイクルで例外検出、ウェイ選択、バッファへのセットなどを行い、Ｒサイクルで、結果保証を行う。
【００９６】
次に、アブソリュートアドレスヒストリテーブルへの書き込み部について記述する。
図２１は、書き込みウェイを決定する回路の構成例である。
ＴＬＢから絶対アドレスＡＢＳＯＬＵＴＥ＿ＡＤＲＳ＜１６：１９＞と、論理アドレスＬＯＧＩＣＡＬ＿ＡＤＲＳ＜８：１９＞が入力されると、ＬＯＧＩＣＡＬ＿ＡＤＲＳのビット＜１５：１９＞がＡＡＨＴのライン選択に使用され、４つのウェイに論理アドレスタグ、有効フラグ、前回アクセスフラグが出力される。ウェイ０〜４に出力された論理アドレスタグは、ＴＬＢから入力される論理アドレスのビット＜８：１４＞と比較部１００において比較され、タグが一致したウェイに“１" の信号が出力される。ＯＲ回路１０１は、４つのウェイの内一つでもタグが一致したものが存在した場合には、Ｔａｇ＿Ｍａｔｃｈ信号をセレクタ１０２〜１０５に入力する。さらに、ＡＡＨＴから出力されたウェイ０〜３のデータの内、有効フラグがウェイセレクタ（図２２参照）１０６に入力される。ウェイセレクタ１０６は、新たに書き込みを行うべきウェイを決定して各セレクタ１０２〜１０５のセレクタを制御し、論理アドレスタグが一致したウェイが存在し、かつ、書き込みを行えるウェイがそのウェイである場合に、特定のウェイに対する書き込み有効信号ＷＡＹｘ＿ＷＲＩＴＥ＿ＶＡＬを出力する。また、ウェイセレクタ１０６は、前回アクセスフラグを設定する信号ＳＥＴ＿ＬＡＳＴＡＣＣ＿ＦＬＡＧを生成し、これは、絶対アドレスＡＢＳＯＬＵＴＥ＿ＡＤＲＳ＜１６：１９＞、ＬＯＧＩＣＡＬ＿ＡＤＲＳ＿ＴＡＧ＜８：１４＞と共に出力される。また、ＴＬＢから入力される論理アドレスのビット＜８：１４＞は、ＡＡＨＴのライン選択信号ＡＡＨＴ＿ＬＩＮＥ＜０：４＞として出力される。
【００９７】
すなわち、ＴＬＢから書き込むべきデータが来たとき、アブソリュートアドレスヒストリテーブル上に、論理アドレスが一致（タグビットとアクセスビット）するものがある場合には、そこに上書きする。一致するものが無かった場合には、無効なエントリがあったらそこに新規エントリを作成し、全てが埋まっていた場合には、過去のアクセス履歴などから書き込み先を決定し、古いエントリと置き換える（図２２参照）。過去のアクセス履歴から書き込み先を選択する回路（図２２のリプレイスウェイセレクタ１１０）は、セットアソシエイティブ方式のキャッシュシステムなどで既に公知であるので、ここでは詳細を記さない。
【００９８】
図２２は、図２１のウェイセレクタ１０６の構成例を示す図である。
ウェイセレクタ１０６には、ＡＡＨＴから各ウェイの有効信号（＋ＷＡＹｘ＿ＶＡＬＩＤ）と、前回アクセスフラグ（＋ＷＡＹｘ＿ＬＡＳＴＡＣＣ＿ＦＬＡＧ）が入力される。選択回路１１１では、ウェイ０〜３の有効信号の内、無効となっているウェイを探し、書き込みを行うウェイの候補として選択する信号を出力する。ＯＲ回路１１２は、ウェイ０〜３の内、１つでも無効なウェイがあると、無効エントリが存在する旨の信号ＥＸＩＳＴ＿ＩＮＶＡＬＩＤをセレクタ１１５〜１１８に入力する。更に、従来のセットアソシエイティブ方式のウェイ選択に使用されるリプレイスウェイセレクタ１１０に、ウェイ０〜３の前回アクセスフラグを入力して書き換えウェイ選択信号を生成させ、セレクタ１１５〜１１８に入力させると共に、前回アクセスフラグセット信号（＋ＳＥＴ＿ＬＡＳＴＡＣＣ＿ＦＬＡＧ）を出力させる。セレクタ１１５〜１１８は、無効なウェイが存在し、かつ、そのウェイがリプレイスウェイセレクタが選択したウェイと一致する場合、図２１のセレクタ１０２〜１０５に供給するウェイ選択信号（＋ＷＡＹｘ＿ＷＲ＿ＳＥＬ＿ＮＯ＿ＭＡＴＣＨ）を出力する。
【００９９】
以上の回路に基づきウェイが選択されると、図２３のようにして、選択されたウェイに各データを書き込む。
図２３は、アブソリュートアドレスヒストリテーブルへのデータ書き込み部の構成例を示した図である。
【０１００】
図２１の出力であるＡＡＨＴ＿ＬＩＮＥ＜０：４＞（ＬＯＧＩＣＡＬ＿ＡＤＲＳ＜１５：１９＞）は、デコーダ１２０に入力され、３２本のラインの内、どのラインに書き込むかを指示する信号を出力する。図２１では、３２本のラインの内、１本のラインについてのみ構成を記載している。デコーダ１２０からの信号は、素子１２１（ＡＮＤ回路として記載されているが、セレクタあるいはゲートとして作用する）に入力され、図２１の回路から送られてきた、ＳＥＴ＿ＬＡＳＴＡＣＣ＿ＦＬＡＧ、ＡＢＳＯＬＵＴＥ＿ＡＤＲＳ、ＬＯＧＩＣＡＬ＿ＡＤＲＳ＿ＴＡＧ、及び、ＶＡＬＩＤ（＝１、有効信号）が選択出力される。そして、これらのデータは、ラッチで構成されるＡＡＨＴのライン＃ｎに入力される。また、ＡＡＨＴには、図２１からの書き込み有効信号（＋ＷＡＹｘ＿ＷＲＩＴＥ＿ＶＡＬ）が入力され、書き込む有効信号が“１" となったウェイのＡＡＨＴにおいてのみ、ＩＨ端子に入力される信号が“０" となることにより、入力されたデータが保持される。
【０１０１】
図２４は、命令フェッチの場合の本発明の実施形態の全体構成を示す図である。
命令フェッチの場合には、オペランド演算のような処理が必要ないので、フェッチに必要な命令アドレスＩＡＲ、や分岐先命令アドレスＴＩＡＲ等が入力されると、論理アドレスであるＩＡＲやＴＩＡＲは、セレクタ１３０に入力される。また、絶対アドレスベースのキャッシュＬＢＳにアクセスするために、アブソリュートアドレスヒストリテーブルＡＡＨＴにも、これらの論理アドレスは入力され、予測絶対アドレスに変換されて、セレクタ１３１に入力される。セレクタ１３０と１３１に入力された論理／絶対アドレスは、優先順位決定回路１３２によって出力の優先順位が決定され、それぞれセレクタ１３０、１３１から出力される。セレクタ１３０から出力される論理アドレスは、ＴＬＢに入力され、絶対アドレスに変換されて、一致検出部１３３に入力される。
【０１０２】
また、ＡＡＨＴによって予測された絶対アドレスは、セレクタ１３１から出力された後、ＬＢＳに入力され、キャッシュアクセスに使用されると共に、一致検出部１３３に入力されて、ＴＬＢにより得られた正しい絶対アドレスと比較され、結果保証に使用される。
【０１０３】
図２５は、命令フェッチ部の実施形態を示す図である。
図２５において、ＩＡＲ＿Ａ、ＩＡＲ＿Ｂ、ＩＡＲ＿Ｃは各命令フェッチポートの後続アドレス（既に命令フェッチ要求を出した命令列の次アドレス）を保持しており、ＴＩＡＲ＿Ａ、ＴＩＡＲ＿Ｂ、ＴＩＡＲ＿Ｃは各命令フェッチポートの命令列上に存在するので分岐命令が分岐すると予測されたときの分岐先アドレスを保持しており、特にＢＲＨＩＳ＿ＴＩＡＲは最新の分岐予測による分岐先アドレス（分岐予測機構からのバイパス）を示している。また、ＩＡＲＸは割り込み時の復帰アドレスや再命令フェッチアドレス、起動時アドレスなどが格納されており、特にＲＳＢＲ＿ＴＯＱ＿ＴＩＡＲは、分岐処理機構での分岐命令の分岐先アドレスで、再命令フェッチのバイパスの際に有効になる。もちろん、これらのアドレスは一例を挙げたのみであり、一般的にはこのような構成でなくてもかまわない。
【０１０４】
本実施形態では簡単のため、ダイレクトマップ方式のアブソリュートアドレスヒストリテーブルを用いる。もちろん、オペランドアクセス部で示したセットアソシエイティブ方式、あるいは、フルアソシエイティブ方式などを用いることも出来ることは、当業者には容易に理解されよう。
【０１０５】
図２５においては、アドレス源１３５から入力された論理アドレス＜１：３１＞は、それぞれ、セレクタ１３６に入力され、優先順位決定回路１３９の指示によって選択され、命令フェッチ論理アドレスＩＦ＿ＬＯＧＩＣＡＬ＿ＡＤＲＳ＜１：３１＞として出力される。
【０１０６】
一方、各アドレス源１３５からの論理アドレスの内、ビット＜１５：１９＞は、ＡＡＨＴのラインセレクタ１３８に入力され、選択された絶対アドレス＜１６：１９＞がセレクタ１３７に入力される。セレクタ１３７は、セレクタ１３６と同様に、優先順位決定回路１３９によって制御され、所定の優先順位に従って、命令フェッチ絶対アドレスＩＦ＿ＡＢＳ＿ＡＤＲＳ＜１６：１９＞として出力される。なお、優先順位決定回路１３９自身の構成は、公知であるので、詳細な説明は省略する。
【０１０７】
図２５に示されるように、優先順位決定回路（priority  generator ）の遅延が大きい場合に、それぞれの要求アドレスでアブソリュートアドレスを選択しておいてから、その後で優先順位決定回路の出力に基づき、絶対アドレス（と同時に論理アドレス）を選択する。
【０１０８】
また、分岐先アドレスは、オペランドアクセスのアドレスと同様、ベースレジスタとインデックスレジスタ、及び変位値から生成されるので、前述オペランドアクセスと同様に絶対アドレスを予測することができる。この場合の例を図２６に示す。
【０１０９】
図２６は、図２５の構成に、分岐先アドレスを前述のオペランドアクセスのための構成を組み合わせた場合の実施形態を示す図である。
図２６において、図２５と同じ構成要素には同じ参照符号を付し、詳細な説明を省略する。
【０１１０】
アドレス源１３５からの論理アドレスは、セレクタ１３６から、優先順位決定回路１３９の指示のもと、ＩＦ＿ＬＯＧＩＣＡＬ＿ＡＤＲＳ＜１：３１＞として、出力される。また、アドレス源１３５からの論理アドレスのビット＜１５：１９＞を使って、ＡＡＨＴから予測絶対アドレスがラインセレクタ１３８によって選択され、優先順位決定回路１３９の制御のもと、セレクタ１３７から出力されて、セレクタ１４０に入力される。また、セレクタ１４０には、図７で説明した回路から入力される、分岐先命令アドレスの予測絶対アドレスＲＳＢＲ＿ＴＩＡＲ＿ＡＢＳ＿ＡＤＲＳ＜１６：１９＞が入力される。そして、優先順位決定回路１３９の指示によって、セレクタ１４０から信号ＩＦ＿ＡＢＳ＿ＡＤＲＳ＜１６：１９＞として選択出力される。
【０１１１】
アブソリュートアドレスヒストリテーブルへの書き込みは、オペランドアクセス部において説明した内容と本質的に変わらないので、説明を省略する。
オペランドアクセスに関しては、シミュレーション結果では、論理アドレスを計算してアブソリュートアドレスヒストリテーブルを索引する場合の予測ミス率が約１％程度であるのに対して、本特許による予測ミス率が約２％程度であった。論理アドレスを計算してからテーブル索引をする場合には本実施形態による索引手法よりも常に（キャッシュヒットの場合でさえ）１クロック余計にかかる。このクロック差は、パイプライン方式を採用した場合はそのまま影響するので、言うに及ばず、アウトオブオーダ手法を採用する場合でさえ、ＣＰＩ（命令あたりのクロック数：Clock   per   Instruction ）に大きく影響する。それに比較して、予測ミス率増加による損失は、予測ミス事象が１％の発生の差であり、この差による予測ミスの際のペナルティが、論理アドレスを計算してから索引する場合と比較して余計に６クロックかかるとしても、ＣＰＩに影響する損失はせいぜい６×０．０１＝０．０６である。この差は歴然としている。
【０１１２】
命令フェッチに関しては、アブソリュートアドレスヒストリの内容が正しい限り、本実施形態の手法により、図２で示したようにクロック数を増やす必要がない（選択後に検索する手法では常に１クロック余計にかかる）ので、明らかに性能向上に寄与する。シミュレーション結果では、オペランドアクセスの場合よりも少ないテーブルでより高い精度の予測を行うことができており、論理アドレスベースのキャッシュシステムと比較しても、ＣＰＩの差は無視できるものである。
【０１１３】
もちろん、論理アドレスベースのキャッシュシステムと比較すると、シノニム問題が発生しないので、この点でも効果は大きい。
【産業上の利用可能性】
【０１１４】
本発明は、スーパスカラ方式を利用した情報処理装置などの高速演算を要求される装置において、メモリアクセスの高速化を実現し、情報処理装置の処理速度を向上することにより、当該情報処理装置は、気象予報などの大規模データ処理問題に適用可能である。
【図面の簡単な説明】
【０１１５】
【図１】  論理アドレス及び物理アドレスの構成例を説明する図である。
【図２】  従来の論理アドレスベースのキャッシュアクセスサイクル（ａ）と本実施形態の絶対アドレスベースのキャッシュアクセスサイクル（ｂ）を説明する図である。
【図３】  絶対アドレスを並列に求めない従来の構成の絶対アドレスベースのキャッシュアクセス（ａ）と本実施形態のキャッシュアクセスサイクル（ｂ）について示す図である。
【図４】  絶対アドレスを並列に求めない従来の絶対アドレスベースのキャッシュアクセス（ａ）と本実施形態（ｂ）を比較する図である。
【図５】  キャッシュメモリ（ａ）及びＴＬＢ（ｂ）へのアドレス入力の様子を示した図である。
【図６】  本発明のオペランドアクセスの実施形態の全体の処理の流れを示す図である。
【図７】  オペランドアクセス部の実施形態を示す図である。
【図８】  ベースレジスタとインデックスレジスタの選択回路（図７の選択回路１６）の構成例を示す図である。
【図９】  キャリー予測部の第１の実施形態を示す図である。
【図１０】  キャリー予測部の第２の実施形態を示す図（その１）である。
【図１１】  キャリー予測部の第２の実施形態を示す図（その２）である。
【図１２】  アブソリュートアドレスヒストリテーブル索引のための論理アドレス生成回路の構成例を示す図である。
【図１３】  アブソリュートアドレスヒストリテーブルのエントリ選択と予測された絶対アドレスを出力するための構成を示す図である。
【図１４】  論理アドレスベースのレジスタペアヒストリの構成例を示す図である。
【図１５】  絶対アドレスベースのレジスタペアヒストリの構成例を示す図である。
【図１６】  ベースレジスタ値、インデックスレジスタ値がともに大きい場合に用いるレジスタペア・アドレスヒストリの選択回路の構成例である。
【図１７】  レジスタペア・アブソリュートアドレスヒストリの実アドレス出力生成回路の構成例を示した図である。
【図１８】  レジスタペア・ロジカルアドレスヒストリの論理アドレス出力を行う回路の構成例を示す図である。
【図１９】  キャッシュ部でのＴＬＢミスの場合の実行サイクルを示す図である。
【図２０】  予測失敗が予め分かっている場合の実行サイクルを示す図である。
【図２１】  書き込みウェイを決定する回路の構成例である。
【図２２】  図２１のウェイセレクタ１０６の構成例を示す図である。
【図２３】  アブソリュートアドレスヒストリテーブルへのデータ書き込み部の構成例を示した図である。
【図２４】  命令フェッチの場合の本発明の実施形態の全体構成を示す図である。
【図２５】  命令フェッチ部の実施形態を示す図である。
【図２６】  図２５の構成に、分岐先アドレスを前述のオペランドアクセスのための構成を組み合わせた場合の実施形態を示す図である。
【符号の説明】
【０１１６】
（１）フェッチする論理アドレス生成
（２）ＴＬＢ検索して絶対アドレスを求める
（３）ＬＢＳタグ読み出し
（４）ＬＢＳデータ読み出し
（５）例外検出など
（６）ウェイ選択
（７）バッファセット
（８）結果保証
（９）（２次キャッシュアクセス用）
（１０）絶対アドレス予測
（１１）絶対アドレス一致検出
（１２）ＡＡＨＴに正しいアドレス対応を書き戻す
（１３）論理アドレス一致検出
（１４）ＡＡＨＴ検索して絶対アドレスを求める
（１５）ＡＢＳ＿ＡＤＲＳ＜１６：１９＞
（１６）ＬＯＧＩＣＡＬ＿ＡＤＲＳ＜２０：２５＞
（１７）ＬＯＧＩＣＡＬ＿ＡＤＲＳ＜１２：１９＞
（１８）アドレス計算元データ
（１９）オペランドアクセス部
（２０）論理アドレス−絶対アドレスの正しい対応関係の書き戻し
（２１）予測された論理アドレス
（２２）予測された絶対アドレス
（２３）正しく計算された論理アドレス
（２４）対応する絶対アドレス
（２５）絶対アドレスベースのキャッシュ
（２６）ＢＹＰＡＳＳ＿ＢＲ＜１：３１＞
（２７）ＢＹＰＡＳＳ＿ＸＲ＜１：３１＞
（２８）Ｃａｒｒｙ−Ｐｒｅｄｉｃｔｉｏｎ
（２９）Ｓｅｌｅｃｔ−Ｃｉｒｃｕｉｔ
（３０）ＢＲ＿ｘ＿ＮＵＭ＜０：３＞
（３１）ＸＲ＿ｘ＿ＮＵＭ＜０：３＞
（３２）ＥＡＧ＿ｘ＿ＬＯＧＩＣＡＬ＿ＡＤＲＳ＜１：３１＞
（３３）ＥＡＧ＿ｘ＿ＡＢＳ＿ＡＤＲＳ＜１６：１９＞
（３４）Ａｂｓｏｌｕｔｅ  Ａｄｄｒｅｓｓ  Ｈｉｓｔｏｒｙ  Ｔａｂｌｅ（ＡＡＨＴ）
（３５）＋ＢＲ＿ｘ＿ＮＵＭ＜０：３＞
（３６）＋ＢＲ＿ｘ＿ＤＡＴＡ＜１：１９＞
（３７）＋ＸＲ＿ｘ＿ＮＵＭ＜０：３＞
（３８）＋ＸＲ＿ｘ＿ＤＡＴＡ＜１：１９＞
（３９）＋ＢＲ＋ＸＲ＿ｘ＿ＬＡＲＧＥ
（４０）＋ＢＲ＿ｘ＿ＮＵＭ＜０：３＞
（４１）＋ＢＲ＿ｘ＿ＤＡＴＡ＜２０＞
（４２）＋ＢＲ＿ｘ＿ＤＡＴＡ＜２１＞
（４３）＋ＸＲ＿ｘ＿ＮＵＭ＜０：３＞
（４４）＋ＸＲ＿ｘ＿ＤＡＴＡ＜２０＞
（４５）＋ＸＲ＿ｘ＿ＤＡＴＡ＜２１＞
（４６）＋ＢＲ＿ｘ＿ＣＡＲＲＹ＿ＰＲＥＤＩＣＴ
（４７）＋ＸＲ＿ｘ＿ＣＡＲＲＹ＿ＰＲＥＤＩＣＴ
（４８）ＢＲ＿ｘ＿ＮＵＭ＜０：３＞
（４９）ＸＲ＿ｘ＿ＮＵＭ＜０：３＞
（５０）ＣＡＲＲＹ＿ＲＥＧ＃０
（５１）ＣＡＲＲＹ＿ＲＥＧ＿０＿ＮＵＭ＜０：３＞
（５２）ＣＡＲＲＹ＿ＲＥＧ＿０＿ＢＹＴＥ＜２０：３１＞
（５３）ＣＡＲＲＹ＿ＲＥＧ＃１
（５４）ＣＡＲＲＹ＿ＲＥＧ＿１＿ＢＹＴＥ＜２０：３１＞
（５５）ＣＡＲＲＹ＿ＲＥＧ＿１＿ＮＵＭ＜０：３＞
（５６）＋ＢＲ＿ｘ＿ＲＥＧ＿ＣＡＲＲＹ＿ＰＲＥＤＩＣＴ
（５７）＋ＸＲ＿ｘ＿ＲＥＧ＿ＣＡＲＲＹ＿ＰＲＥＤＩＣＴ
（５８）＋ＥＡＧ＿０＿ＰＡＧＥ＿ＣＲＯＳＳ
（５９）＋ＢＲ＋ＸＲ＿０＿ＬＡＲＧＥ
（６０）＋ＥＡＧ＿１＿ＰＡＧＥ＿ＣＲＯＳＳ
（６１）＋ＢＲ＋ＸＲ＿１＿ＬＡＲＧＥ
（６２）＋ＢＲ＿０＿ＮＵＭ＜０：３＞
（６３）＋ＸＲ＿０＿ＮＵＭ＜０：３＞
（６４）＋ＣＡＲＲＹ＿ＲＥＧ＿０＿ＮＵＭ＜０：３＞
（６５）＋ＣＡＲＲＹ＿ＲＥＧ＿１＿ＮＵＭ＜０：３＞
（６６）＋ＲＥＰＬＡＣＥ＿ＦＬＡＧ
（６７）＋ＢＲ＿１＿ＮＵＭ＜０：３＞
（６８）＋ＸＲ＿１＿ＮＵＭ＜０：３＞
（６９）＋ＣＡＲＲＹ＿ＲＥＧ＿１＿ＮＵＭ＜０：３＞
（７０）＋ＣＡＲＲＹ＿ＲＥＧ＿０＿ＮＵＭ＜０：３＞
（７１）＋ＲＥＰＬＡＣＥ＿ＦＬＡＧ
（７２）ＲＥＰＬＡＣＥ＿ＦＬＡＧ
（７３）＋ＲＥＰＬＡＣＥ＿ＦＬＡＧ
（７４）＋ＥＡＧ＿０＿ＰＡＧＥ＿ＣＡＲＲＹ
（７５）＋ＢＲ＿０＿ＤＡＴＡ＜２０：３１＞
（７６）＋ＸＲ＿０＿ＤＡＴＡ＜２０：３１＞
（７７）＋ＥＡＧ＿１＿ＰＡＧＥ＿ＣＡＲＲＹ
（７８）＋ＢＲ＿１＿ＤＡＴＡ＜２０：３１＞
（７９）＋ＸＲ＿１＿ＤＡＴＡ＜２０：３１＞
（８０）ＣＡＲＲＹ＿ＲＥＧ＃０
（８１）ＣＡＲＲＹ＿ＲＥＧ＃１
（８２）＋ＣＡＲＲＹ＿ＲＥＧ＿０＿ＮＵＭ＜０：３＞
（８３）＋ＣＡＲＲＹ＿ＲＥＧ＿０＿ＢＹＴＥ＜２０：３１＞
（８４）＋ＣＡＲＲＹ＿ＲＥＧ＿１＿ＮＵＭ＜０：３＞
（８５）＋ＣＡＲＲＹ＿ＲＥＧ＿１＿ＢＹＴＥ＜２０：３１＞
（８６）＋ＢＲ＿ｘ＿ＤＡＴＡ＜８：１９＞
（８７）＋ＢＲ＿ｘ＿ＣＡＲＲＹ＿ＰＲＥＤＩＣＴ
（８８）＋ＸＲ＿ｘ＿ＤＡＴＡ＜８：１９＞
（８９）＋ＸＲ＿ｘ＿ＣＡＲＲＹ＿ＰＲＥＤＩＣＴ
（９０）＋ＰＲＥＤＩＣＴ＿ＬＡＲ＿ｘ＜８：１９＞
（９１）＋ＰＲＥＤＩＣＴ＿ＶＡＬＩＤ＿ｘ
（９２）３２ｌｉｎｅ．４ｗａｙ
（９３）ＰＲＥＤＩＣＴ＿ＬＡＲ＿ｘ＜８：１９＞
（９４）ＬＯＧＩＣＡＬ＿ＡＤＲＳ＿ＴＡＧ
（９５）ＡＢＳＯＬＵＴＥ＿ＡＤＲＳ＜１６：１９＞
（９６）ＥＡＧ＿ｘ＿ＡＢＳ＿ＡＤＲＳ＜１６：１９＞
（９７）−ＢＲ＋ＸＲ＿ｘ＿ＬＡＲＧＥ
（９８）ＢＲ＿ｘ＿ＮＵＭ＜０：３＞
（９９）ＸＲ＿ｘ＿ＮＵＭ＜０：３＞
（１００）＋ＥＡＧ＿ｘ＿ＬＯＧＩＣＡＬ＿ＡＤＲＳ＜８：１３＞
（１０１）＋ＬＡＲＧＥ＿ＢＲ＿ｘ＿ＮＵＭ＜０：３＞
（１０２）＋ＬＡＲＧＥ＿ＸＲ＿ｘ＿ＮＵＭ＜０：３＞
（１０３）＋ＬＡＲＧＥ＿ＬＡＲ＿ｘ＜８：１９＞
（１０４）＋ＴＬＢ＿ｘ＿ＡＢＳ＿ＡＤＲＳ＜８：１９＞
（１０５）＋ＬＡＲＧＥ＿ＡＢＳ＿ＡＤＲＳ＿ｘ＜８：１９＞
（１０６）＋ＢＲ＿ｘ＿ＮＵＭ＜０：３＞
（１０７）＋ＬＡＲＧＥ＿ＢＲ＿０＿ＮＵＭ＜０：３＞
（１０８）＋ＸＲ＿ｘ＿ＮＵＭ＜０：３＞
（１０９）＋ＬＡＲＧＥ＿ＸＲ＿０＿ＮＵＭ＜０：３＞
（１１０）＋ＢＲ＋ＸＲ＿ｘ＿ＬＡＲＧＥ
（１１１）＋ＢＲ＿ｘ＿ＮＵＭ＜０：３＞
（１１２）＋ＬＡＲＧＥ＿ＢＲ＿１＿ＮＵＭ＜０：３＞
（１１３）＋ＸＲ＿ｘ＿ＮＵＭ＜０：３＞
（１１４）＋ＬＡＲＧＥ＿ＸＲ＿１＿ＮＵＭ＜０：３＞
（１１５）＋ＵＳＥ＿ｘ＿ＲＥＧ＿ＰＡＩＲ＿ＨＩＳＴＯＲＹ＿０
（１１６）＋ＵＳＥ＿ｘ＿ＲＥＧ＿ＰＡＩＲ＿ＨＩＳＴＯＲＹ＿１
（１１７）＋ＬＡＲＧＥ＿ＡＢＳ＿ＡＤＲＳ＿０＜８：１９＞
（１１８）＋ＵＳＥ＿ｘ＿ＲＥＧ＿ＰＡＩＲ＿ＨＩＳＴＯＲＹ＿０
（１１９）＋ＬＡＲＧＥ＿ＡＢＳ＿ＡＤＲＳ＿１＜８：１９＞
（１２０）＋ＵＳＥ＿ｘ＿ＲＥＧ＿ＰＡＩＲ＿ＨＩＳＴＯＲＹ＿１
（１２１）＋ＰＲＥＤＩＣＴ＿ＡＢＳ＿ｘ＿ＰＡＩＲ＜８：１９＞
（１２２）＋ＬＡＲＧＥ＿ＬＡＲ＿０＜８：１９＞
（１２３）＋ＵＳＥ＿ｘ＿ＲＥＧ＿ＰＡＩＲ＿ＨＩＳＴＯＲＹ＿０
（１２４）＋ＬＡＲＧＥ＿ＬＡＲ＿１＜８：１９＞
（１２５）＋ＵＳＥ＿ｘ＿ＲＥＧ＿ＰＡＩＲ＿ＨＩＳＴＯＲＹ＿１
（１２６）＋ＰＲＥＤＩＣＴ＿ＬＡＲ＿ｘ＿ＰＡＩＲ＜８：１９＞
（１２７）ＴＬＢ検索結果の絶対アドレス
（１２８）絶対アドレス確定
（１２９）ＡＡＨＴに正しいアドレス対応を書き戻す（ＢＲ、ＸＲが大きい場合などは書き戻しを抑制）
（１３０）失敗確定
（１３１）絶対アドレスが確定しているキャッシュ検索などの優先順位確保
（１３２）Ｓ−Ｕｎｉｔ（ＴＬＢ）
（１３３）ＡＢＳＯＬＵＴＥ＿ＡＤＲＳ＜１６：１９＞
（１３４）ＬＯＧＩＣＡＬ＿ＡＤＲＳ＜８：１９＞
（１３５）ＡＡＨＴ（３２ｌｉｎｅ／４ｗａｙ）
（１３６）ＬｏｇｉｃａｌＡｄｄｒｅｓｓＴａｇ
Ｖａｌｉｄ＿Ｆｌａｇ
ＬａｓｔＡｃｃｅｓｓＦｌａｇ
（１３７）    Ｖａｌｉｄ
ＬａｓｔＡｃｃｅｓｓ
（１３８）    ＳＥＴ＿ＬＡＳＴＡＣＣ＿ＦＬＡＧ
（１３９）    ＡＡＨＴ＿ＬＩＮＥ＜０：４＞
（１４０）    ＡＢＳＯＬＵＴＥ＿ＡＤＲＳ＜１６：１９＞
ＬＯＧＩＣＡＬ＿ＡＤＲＳ＿ＴＡＧ＜８：１４＞
（１４１）    ＷＡＹ０＿ＷＲＩＴＥ＿ＶＡＬ
（１４２）    ＷＡＹ１＿ＷＲＩＴＥ＿ＶＡＬ
（１４３）    ＷＡＹ２＿ＷＲＩＴＥ＿ＶＡＬ
（１４４）    ＷＡＹ３＿ＷＲＩＴＥ＿ＶＡＬ
（１４５）    ウェイセレクタ
（１４６）    ＋ＷＡＹ０＿ＬＡＳＴＡＣＣ＿ＦＬＡＧ
（１４７）    ＋ＷＡＹ１＿ＬＡＳＴＡＣＣ＿ＦＬＡＧ
（１４８）    ＋ＷＡＹ２＿ＬＡＳＴＡＣＣ＿ＦＬＡＧ
（１４９）    ＋ＷＡＹ３＿ＬＡＳＴＡＣＣ＿ＦＬＡＧ
（１５０）    リプレイスウェイセレクタ
（１５１）    ＥＸＩＳＴ＿ＩＮＶＡＬＩＤ
（１５２）    ＋ＷＡＹ０＿ＷＲ＿ＳＥＬ＿ＮＯ＿ＭＡＴＣＨ
（１５３）    ＋ＷＡＹ１＿ＷＲ＿ＳＥＬ＿ＮＯ＿ＭＡＴＣＨ
（１５４）    ＋ＷＡＹ２＿ＷＲ＿ＳＥＬ＿ＮＯ＿ＭＡＴＣＨ
（１５５）    ＋ＷＡＹ３＿ＷＲ＿ＳＥＬ＿ＮＯ＿ＭＡＴＣＨ
（１５６）    ＋ＳＥＴ＿ＬＡＳＴＡＣＣ＿ＦＬＡＧ
（１５７）    ＡＡＨＴ＿ＬＩＮＥ＜０：４＞（＝ＬＯＧＩＣＡＬ＿ＡＤＲＳ＜
１５：１９＞）
（１５８）    ＳＥＴ＿ＬＡＳＴＡＣＣ＿ＦＬＡＧ
ＡＢＳＯＬＵＴＥ＿ＡＤＲＳ
ＬＯＧＩＣＡＬ＿ＡＤＲＳ＿ＴＡＧ
ＶＡＬＩＤ（＝１）
（１５９）    ＋ＷＡＹ０＿ＷＲＩＴＥ＿ＶＡＬ
（１６０）    ＋ＷＡＹ１＿ＷＲＩＴＥ＿ＶＡＬ
（１６１）    ＋ＷＡＹ２＿ＷＲＩＴＥ＿ＶＡＬ
（１６２）    ＋ＷＡＹ３＿ＷＲＩＴＥ＿ＶＡＬ
（１６３）    アドレス計算元データ群
（１６４）    ＲＳＢＲ＿ＴＯＱ＿ＴＩＡＲ（Ｂｙｐａｓｓ）
（１６５）    ＢＲＨＩＳ＿ＴＩＡＲ（Ｂｙｐａｓｓ）
（１６６）    ＩＦ＿ＬＯＧＩＣＡＬ＿ＡＤＲＳ＜１：３１＞
（１６７）    ＩＦ＿ＡＢＳ＿ＡＤＲＳ＜１６：１９＞
（１６８）    ＲＳＢＲ＿ＴＯＱ＿ＳＥＬＥＣＴ
（１６９）    ＲＳＢＲ＿ＴＩＡＲ＿ＡＢＳ＿ＡＤＲＳ＜１６：１９＞
（１７０）    ＯＰ＿ＥＡＧ（ｆｏｒ  ＲＳＢＲ＿ＴＯＱ＿ＴＩＡＲ）部
【図１】
0003848161.tif 000003
【図２】
0003848161.tif 000004
【図３】
0003848161.tif 000005
【図４】
0003848161.tif 000006
【図５】
0003848161.tif 000007
【図６】
0003848161.tif 000008
【図７】
0003848161.tif 000009
【図８】
0003848161.tif 000010
【図９】
0003848161.tif 000011
【図１０】
0003848161.tif 000012
【図１１】
0003848161.tif 000013
【図１２】
0003848161.tif 000014
【図１３】
0003848161.tif 000015
【図１４】
0003848161.tif 000016
【図１５】
0003848161.tif 000017
【図１６】
0003848161.tif 000018
【図１７】
0003848161.tif 000019
【図１８】
0003848161.tif 000020
【図１９】
0003848161.tif 000021
【図２０】
0003848161.tif 000022
【図２１】
0003848161.tif 000023
【図２２】
0003848161.tif 000024
【図２３】
0003848161.tif 000025
【図２４】
0003848161.tif 000026
【図２５】
0003848161.tif 000027
【図２６】
0003848161.tif 000028
0003848161.tif 000029
0003848161.tif 000030
0003848161.tif 000031
0003848161.tif 000032
0003848161.tif 000033
0003848161.tif 000034
0003848161.tif 000035
0003848161.tif 000036