(57)【要約】【課題】アドレス計算の実行からオペランドキャッシュメモリにアクセスして必要とするオペランドデ−タを得るまでのＴＡＴが長いという問題を解決する。【解決手段】論理アドレスキャッシュ方式を有するプロセッサにおいて、ロ−ド命令処理のＴＡＴを高速化する。ロ−ド命令処理におけるアドレス計算から実効アドレスを得て、この実効アドレス中の索引アドレスをデコ−ドしてからタグメモリセルやデ−タメモリセルにアクセスする従来の構成を改め、索引アドレスが有効になるかどうかをアドレス計算を行わずに先見するとこで直接タグメモリセルやデ−タメモリセルにアクセスする構成にする。これにより、論理回路で表した場合のタグメモリセル、及びデ−タメモリセルまでの論理段数を削減して遅延時間を短縮することでＴＡＴを高速化する。【選択図】　　　図１
2004086761.tif 000002
【特許請求の範囲】
【請求項１】
複数のキャッシュエントリを有するオペランドキャッシュメモリからアクセス先の前記キャッシュエントリの選択を行うオペランドキャッシュメモリアクセス装置において、
桁上げ保存加算のＣＳＡ（Ｃａｒｒｙ　Ｓａｖｅ　Ａｄｄｅｒ）にてアドレスを２つの項にまとめた後、桁上げ伝搬加算のＣＰＡ（Ｃａｒｒｙ　Ｐｒｏｐａｇａｔｉｏｎ　Ａｄｄｅｒ）によるアドレスの加算を行うことなくアクセス先の前記キャッシュエントリを選択する加算結果先見回路を備えることを特徴とするオペランドキャッシュメモリアクセス装置。
【請求項２】
複数のキャッシュエントリを有するオペランドキャッシュメモリからアクセス先の前記キャッシュエントリの選択を行うオペランドキャッシュメモリアクセス装置において、
ベ−スアドレスとインデックスアドレスと変位アドレスを入力して桁上げ保存加算のＣＳＡ（Ｃａｒｒｙ　Ｓａｖｅ　Ａｄｄｅｒ）にて２つの項にまとめた後、桁上げ伝搬加算のＣＰＡ（Ｃａｒｒｙ　Ｐｒｏｐａｇａｔｉｏｎ　Ａｄｄｅｒ）によるアドレスの加算を行うことなくアクセス先の前記キャッシュエントリを選択する加算結果先見回路を備えることを特徴とするオペランドキャッシュメモリアクセス装置。
【請求項３】
前記加算結果先見回路によるアクセス先のキャッシュエントリの選択処理は、ＣＳＡまたはＣＰＡによるベ−スアドレスとインデックスアドレスと変位アドレスのアドレス加算処理と並行して動作することを特徴とする請求項１または２いずれか１項記載のオペランドキャッシュメモリアクセス装置。
【請求項４】
前記加算結果先見回路は、それぞれが前記キャッシュエントリと接続し、ベースアドレスとインデックスアドレスと変位アドレスとを桁上げ保存加算してまとめた２つの２進数値の加算結果が０か否かを加算処理を行うことなく判定し、加算結果として０を判定したいずれか１つの前記加算結果判定回路は、接続した前記キャッシュエントリの駆動を行うことを特徴とする請求項１、２または３いずれか１項記載のオペランドキャッシュメモリアクセス装置。
【請求項５】
前記加算結果先見回路は、前記２つの２進数値の同一ビット順位のビット同士の各ビットを排他的論理和回路に入力してその結果をＡとし、最上位ビットを除く各ビットについてそれぞれ各ビット毎に論理和回路に入力し桁上がりを求めてこれをＢとし、次に前記Ａと最下位ビットを除く前記Ａの１ビット下位の前記Ｂとを排他的論理和回路に入力してその結果をＣとし、最下位ビットについては最下位ビットのＡと外部からの桁上げ信号Ｂとの排他的論理和をＣとして、前記すべてのビットについてのＣが０であると、加算結果が０であると判定することを特徴とする請求項４記載のオペランドキャッシュメモリアクセス装置。
【請求項６】
前記外部からの桁上げ信号は、ベ−スアドレスとインデックスアドレスと命令語中で指定される変位アドレスとの加算結果のアドレスにおいて、そのアドレスの下位ビットであるブロックアドレスのビット数で規定されるビット数分のビットを、ベースアドレスとインデックスアドレスと変位アドレスの最下位方向から切り出し、その３つの値を加算して求めた桁上がりであることを特徴とする請求項５記載のオペランドキャッシュメモリアクセス装置。
【請求項７】
ベ−スアドレスとインデックスアドレスと変位アドレスとをそれぞれが入力するとともに、前記キャッシュエントリ数をｎとしたとき、０から−１、・・・、−（ｎ−１）までのｎ個のいずれか１つの数値を重複することなくそれぞれが入力して、入力した４つの数値を前記２つの２進数値に桁上げ保存加算してまとめ、それぞれが接続された前記加算結果先見回路に出力するＣｏｍｐｒｅｓｓｏｒを備えることを特徴とする請求項４記載のオペランドキャッシュメモリアクセス装置。
【請求項８】
複数のキャッシュエントリを有するオペランドキャッシュメモリからアクセス先の前記キャッシュエントリの選択を行うオペランドキャッシュメモリアクセス方法であって、
ＣＰＡによるベ−スアドレスとインデックスアドレスと命令語中で指定される変位アドレスとの桁上げ保存加算結果である和と桁上げの２つの項を入力し、さらに、０から−１、・・・、−（ｎ−１）までのｎ個のいずれか１つの数値を重複することなく入力して前記２つの項とｎ個の数値それぞれとを桁上げ保存加算してｎ組の２つの２進数値にまとめる第１の手順と、
前記ｎ組の２つの２進数値と最下位ビットへの桁上げ信号とを前記キャッシュエントリ数ｎに等しいｎ個の加算結果先見回路にそれぞれ入力する第２の手順と、
前記加算結果先見回路は、前記２つの２進数値の同一ビット順位のビット同士の各ビットを排他的論理和回路に入力してその結果をＡとし、最上位ビットを除く各ビットについてそれぞれ各ビット毎に論理和回路に入力し桁上がりを求めてこれをＢとし、次に前記Ａと最下位ビットを除く前記Ａの１ビット下位の前記Ｂとを排他的論理和回路に入力してその結果をＣとし、最下位ビットについては最下位ビットのＡと前記最下位ビットへの桁上げ信号との排他的論理和をＣとして、前記すべてのビットについてのＣが０であると、加算結果が０であると判定する第３の手順と、
０と判定したｎ個のいずれか１つの前記加算結果判定回路は、該加算結果先見回路に接続した前記キャッシュエントリの駆動を行う第４の手順と、
を供えることを特徴とするオペランドキャッシュメモリアクセス方法。
【請求項９】
複数のキャッシュエントリを有するオペランドキャッシュメモリからアクセス先の前記キャッシュエントリの選択を行うオペランドキャッシュメモリアクセス方法であって、
ベ−スアドレスとインデックスアドレスと命令語中で指定される変位アドレスとをＣＰＡによる加算処理の前に前記キャッシュエントリ数ｎに等しいｎ個のＣｏｍｐｒｅｓｓｏｒに入力する第１の手順と、
前記Ｃｏｍｐｒｅｓｓｏｒは、入力されたベ−スアドレスとインデックスアドレスと変位アドレスと、０から−１、・・・、−（ｎ−１）までのｎ個のいずれか１つの数値を重複することなくそれぞれが入力して、入力した４つの数値を２つの２進数値にまとめ、それぞれに接続された加算結果先見回路に出力する第２の手順と、
ベ−スアドレスとインデックスアドレスと変位アドレスとの加算結果のアドレスにおけるそのアドレスの下位ビットであるブロックアドレスのビット数で規定されるビット数分のビットを、ベースアドレスとインデックスアドレスと変位アドレスの最下位方向から切り出し、その３つの値を加算して桁上がりを求め前記加算結果先見回路に出力する第３の手順と、
前記加算結果先見回路は、それぞれが前記キャッシュエントリと接続し、入力された前記２つの２進数値と前記桁上がりとから加算処理を行うことなく加算結果が０か否かを判定し、加算結果として０を判定したいずれか１つの前記加算結果判定回路は、接続した前記キャッシュエントリの駆動を行う第４の手順と、
を供えることを特徴とするオペランドキャッシュメモリアクセス方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、オペランドキャッシュメモリへのアクセスを行うに際し、特にアドレスの加算処理を省略することでアクセスの高速化を図るオペランドキャッシュメモリのアクセス装置及びそのアクセス方法に関する。
【０００２】
【従来の技術】
図５は、従来例における論理アドレスオペランドキャッシュの一般的な構成である。図外に存在するレジスタファイルから読み出されたベ−スアドレスＳＹ１００、インデックスアドレスＳＺ１０１、命令語中で指定される変位アドレスＤｉｓｐ１０２の３つの値を加算して実際にアクセスするアドレスが求められる。
【０００３】
前記３つの値１００，１０１，１０２は、加算処理のためにまず桁上げ保存加算器ＣＳＡ１０にて２つの項１１０，１１１にまとめられた後、桁上げ伝搬加算器ＣＰＡ２０にて加算し、加算結果である論理アドレスを得る。
【０００４】
ここで得られた論理アドレスは、その上位ビットからタグアドレス１２０、インデックスアドレス１２１、ブロックアドレス１２２という３つの部分に分けて考えられる。
【０００５】
尚、これら論理アドレスの３つの部分の名称については、当該技術に詳しい技術者においてはこれらの名称とは異なる名称で示す場合もある。しかしながら意味する内容は同じであり、タグアドレス１２０とはキャッシュ内に登録された主記憶上のアドレスと一致するかどうかを比較する部分ビット、インデックスアドレス１２１とはキャッシュ上に存在する複数のデ−タ登録可能場所であるキャッシュエントリを指し示すための検索部分ビット、ブロックアドレスとはキャッシュエントリ上に登録された主記憶上の連続したアドレスに存在するデ−タの中で目的とするデ−タの存在する相対位置を示す部分ビットである。
【０００６】
オペランドキャッシュ本体は、主記憶上のある連続したアドレス内における記憶デ−タのコピ−を保持するデ−タアレイＤＡ５０とデ−タアレイＤＡ５０に登録された主記憶上のコピ−の先頭アドレスを指し示す情報を保持するアドレスアレイＡＡ４０とから成り立っている。
【０００７】
デ−タアレイＤＡ５０には、ブロックアドレス１２２のビット数で表される連続したアドレスのデ−タが、インデックスアドレス１２１のビット数ｐで表されるエントリ数分ｎだけ記憶することができる。桁上げ保存加算器ＣＳＡ１０、及び桁上げ伝搬加算器ＣＰＡ２０により計算された論理アドレスは、まずインデックスアドレス１２１を解析して、アクセスすべきアドレスアレイＡＡ４０とデ−タアレイＤＡ５０のエントリを決定する。そのために、インデックスアドレス１２１はそのビット数で表されるエントリ数ｎ個分のアドレスデコ−ダ３１−０〜３１−（ｎ−１）に入力される。アドレスデコ−ダ３１−０〜３１−（ｎ−１）の出力は、ワ−ド線１３０−０〜１３０−（ｎ−１）を駆動しており、これらのワ−ド線１３０−０〜１３０−（ｎ−１）は、アドレスアレイＡＡ４０、デ−タアレイＤＡ５０の各エントリをアクセスするのに使用される。
【０００８】
インデックスアドレス１２１は、アドレスデコ−ダ３１−０〜３１−（ｎ−１）によりその内容に該当するただ一つのみがアクティブとなり、その出力ワ−ド線１３０−０〜１３０−（ｎ−１）が駆動される。その結果、アドレスアレイＡＡ４０とデータアレイＤＡ５０の該当するエントリがそれぞれ読み出される。
【０００９】
デ−タアレイＤＡ５０から読み出されたキャッシュ上のデ−タは、１つのキャッシュエントリに登録された連続するアドレスに対する主記憶上の値のコピ−であることから、必要とするタ−ゲットのオペランドデ−タを得るために、ブロックアドレス１２２の内容に従い更にデ−タの選択が行われる。この選択処理を行うのがカラムセレクタ７０である。
【００１０】
アドレスアレイＡＡ４０から読み出された該当するキャッシュエントリの主記憶上の先頭アドレス１４０は、タグアドレス１２０とアドレス比較器６０にて比較される。その結果、アドレスが一致すればタ−ゲットとなるオペランドデ−タがキャッシュ上に存在するキャッシュヒットとなる。また、比較結果が不一致であればキャッシュミスヒットであり、タ−ゲットとなるオペランドデ−タを得るためには主記憶を直接アクセスしなければならない。キャッシュヒットの場合は、ヒット信号１５０をアクティブにする。前記カラムセレクタ７０で選択されたオペランドデ−タ１４２は、キャッシュヒット信号１５０により制御されるゲ−ト回路８０により最終的なキャッシュヒット時のオペランドデ−タ１６０として出力される。キャッシュミスヒット時には、キャッシュヒット信号１５０が非アクティブなのでゲ−ト回路８０は開かず、オペランドデ−タ１６０はハイインピ−ダンス状態となって別途主記憶から読み出されたオペランドデ−タが返却されることになる。
【００１１】
このように、一般的なプロセッサにおけるロ−ド命令の処理は以下のような手順で行われる。
【００１２】
第１の手順としては、レジスタより１つないしは２つのレジスタ値を読み出す。ここで最初のレジスタ値がベ−スアドレス、２番目のレジスタ値がインデックスアドレスと呼ばれることが多い。尚、プロセッサのア−キテクチャによってはインデックスアドレスを持たずベ−スアドレスのみを読み出す場合もある。
【００１３】
第２の手順は、命令中に埋め込まれた変位アドレスを取り出す。なお、プロセッサのア−キテクチャによっては変位アドレスを命令中に有しない場合や、変位アドレスをレジスタより読み出す場合もある。
【００１４】
第３の手順は、上記第１、及び第２の手順で得られた２つないしは３つの値を加算して実効アドレスを得る。
【００１５】
第４の手順は、第３の手順により得られた実効アドレスの一部を索引アドレスとしてオペランドキャッシュメモリのアドレスアレイ並びにデ−タアレイにアクセスするためにアドレスデコ−ドを行う。なお、プロセッサのア−キテクチャによってはこの前に実効アドレスを物理アドレスに変換するためにアドレス変換テ−ブルにアクセスしてアドレス変換を行う場合もある。アドレス変換を行わずにオペランドキャッシュメモリにアクセスする方法を論理アドレスキャッシュ、アドレス変換を行ってからオペランドキャッシュメモリにアクセスする方法を物理アドレスキャッシュと呼んで区別する場合もある。
【００１６】
第５の手順は、アドレスアレイからの読み出しデ−タが実効アドレスの上位側ビットデ−タと一致するかどうか比較して一致する場合に、デ−タアレイからの読み出しデ−タをロ−ド命令の処理結果としてレジスタに格納する。なお、アドレスアレイからの読み出しデ−タが実効アドレスの上位側ビットデ−タと一致しなかった場合、オペランドキャッシュメモリへのミスヒットとなり主記憶など下位階層のメモリにアクセスを行ってロ−ド命令の処理結果を得ることになるが、このような状況は本発明の範囲外となるため特に言及しない。
【００１７】
【発明が解決しようとする課題】
上記の各手順における処理時間、すなわち論理回路の遅延時間の総和がロ−ド命令の処理ＴＡＴ（Ｔｕｒｎ　Ａｒｏｕｎｄ　Ｔｉｍｅ）となる。一般にロ−ド命令にはその結果であるオペランドデ−タを使用する演算命令が継続する場合が多い。従って、ロ−ド命令の処理ＴＡＴ分後続の演算命令が待たされることになるため、ロ−ド命令の処理ＴＡＴ短縮は、プロセッサの性能を向上させるためには非常に重要になる。しかるに上記のような手順となるロ−ド命令の処理ＴＡＴは、アドレス加算器、アドレスデコ−ダ、キャッシュメモリアクセスといったそれぞれを論理回路で実装した場合に、非常に論理段数が多かったり、遅延時間が大きな機能ブロックを通過するため、パイプライン化した場合のステ−ジ数が多くなるという問題を必然的に有している。逆にパイプラインステ−ジ数を削減しようとすると、各パイプラインステ−ジ毎の遅延時間が大きくなりプロセッサの動作周波数を高くすることができなくなる。
【００１８】
本発明は、以上説明したようにアドレス計算の実行からオペランドキャッシュメモリにアクセスして必要とするオペランドデ−タを得るまでのＴＡＴが長いという問題の解決を図るオペランドキャッシュメモリのアクセス装置及びそのアクセス方法を提供するものである。
【００１９】
【課題を解決するための手段】
本発明の第１のオペランドキャッシュメモリアクセス装置は、複数のキャッシュエントリを有するオペランドキャッシュメモリからアクセス先の前記キャッシュエントリの選択を行うオペランドキャッシュメモリアクセス装置において、
桁上げ保存加算のＣＳＡ（Ｃａｒｒｙ　Ｓａｖｅ　Ａｄｄｅｒ）にてアドレスを２つの項にまとめた後、桁上げ伝搬加算のＣＰＡ（Ｃａｒｒｙ　Ｐｒｏｐａｇａｔｉｏｎ　Ａｄｄｅｒ）によるアドレスの加算を行うことなくアクセス先の前記キャッシュエントリを選択する加算結果先見回路を備える。
【００２０】
本発明の第２のオペランドキャッシュメモリアクセス装置は、複数のキャッシュエントリを有するオペランドキャッシュメモリからアクセス先の前記キャッシュエントリの選択を行うオペランドキャッシュメモリアクセス装置において、
ベ−スアドレスとインデックスアドレスと変位アドレスを入力して桁上げ保存加算のＣＳＡ（Ｃａｒｒｙ　Ｓａｖｅ　Ａｄｄｅｒ）にて２つの項にまとめた後、桁上げ伝搬加算のＣＰＡ（Ｃａｒｒｙ　Ｐｒｏｐａｇａｔｉｏｎ　Ａｄｄｅｒ）によるアドレスの加算を行うことなくアクセス先の前記キャッシュエントリを選択する加算結果先見回路を備える。
【００２１】
本発明の第３のオペランドキャッシュメモリアクセス装置は、第１または第２の発明において、前記加算結果先見回路によるアクセス先のキャッシュエントリの選択処理は、ＣＳＡ（Ｃａｒｒｙ　Ｓａｖｅ　Ａｄｄｅｒ）またはＣＰＡ（Ｃａｒｒｙ　Ｐｒｏｐａｇａｔｉｏｎ　Ａｄｄｅｒ）によるベ−スアドレスとインデックスアドレスと変位アドレスのアドレス加算処理と並行して動作することを備える。
【００２２】
本発明の第４のオペランドキャッシュメモリアクセス装置は、第１、２または第３の発明において、前記加算結果先見回路は、それぞれが前記キャッシュエントリと接続し、入力された２つの２進数値の加算結果が０か否かを加算処理を行うことなく判定し、加算結果として０を判定したいずれか１つの前記加算結果判定回路は、接続した前記キャッシュエントリの駆動を行うことを備える。
【００２３】
本発明の第５のオペランドキャッシュメモリアクセス装置は、第４の発明において、前記加算結果先見回路は、前記２つの２進数値の同一ビット順位のビット同士の各ビットを排他的論理和回路に入力してその結果をＡとし、最上位ビットを除く各ビットについてそれぞれ各ビット毎に論理和回路に入力し桁上がりを求めてこれをＢとし、次に前記Ａと最下位ビットを除く前記Ａの１ビット下位の前記Ｂとを排他的論理和回路に入力してその結果をＣとし、最下位ビットについては最下位ビットのＡと外部からの桁上げ信号Ｂとの排他的論理和をＣとして、前記すべてのビットについてのＣが０であると、加算結果が０であると判定することを備える。
【００２４】
本発明の第６のオペランドキャッシュメモリアクセス装置は、第５の発明において、前記外部からの桁上げ信号は、ベ−スアドレスとインデックスアドレスと命令語中で指定される変位アドレスとの加算結果のアドレスにおいて、そのアドレスの下位ビットであるブロックアドレスのビット数で規定されるビット数分のビットを、ベースアドレスとインデックスアドレスと変位アドレスの最下位方向から切り出し、その３つの値を加算して求めた桁上がりであることを備える。
【００２５】
本発明の第７のオペランドキャッシュメモリアクセス装置は、第４の発明において、ベ−スアドレスとインデックスアドレスと変位アドレスとをそれぞれが入力するとともに、前記キャッシュエントリ数をｎとしたとき、０から−１、・・・、−（ｎ−１）までのｎ個のいずれか１つの数値を重複することなくそれぞれが入力して、入力した４つの数値を前記２つの２進数値にまとめ、それぞれが接続された前記加算結果先見回路に出力するＣｏｍｐｒｅｓｓｏｒを備える。
【００２６】
本発明の第１のオペランドキャッシュメモリアクセス方法は、複数のキャッシュエントリを有するオペランドキャッシュメモリからアクセス先の前記キャッシュエントリの選択を行うオペランドキャッシュメモリアクセス方法であって、
ＣＰＡによるベ−スアドレスとインデックスアドレスと命令語中で指定される変位アドレスとの桁上げ保存加算結果である和と桁上げの２つの項を入力し、さらに、０から−１、・・・、−（ｎ−１）までのｎ個のいずれか１つの数値を重複することなく入力して前記２つの項とｎ個の数値それぞれとを桁上げ保存加算してｎ組の２つの２進数値にまとめる第１の手順と、
前記ｎ組の２つの２進数値と最下位ビットへの桁上げ信号とを前記キャッシュエントリ数ｎに等しいｎ個の加算結果先見回路にそれぞれ入力する第２の手順と、
前記加算結果先見回路は、前記２つの２進数値の同一ビット順位のビット同士の各ビットを排他的論理和回路に入力してその結果をＡとし、最上位ビットを除く各ビットについてそれぞれ各ビット毎に論理和回路に入力し桁上がりを求めてこれをＢとし、次に前記Ａと最下位ビットを除く前記Ａの１ビット下位の前記Ｂとを排他的論理和回路に入力してその結果をＣとし、最下位ビットについては最下位ビットのＡと前記最下位ビットへの桁上げ信号との排他的論理和をＣとして、前記すべてのビットについてのＣが０であると、加算結果が０であると判定する第３の手順と、
０と判定したｎ個のいずれか１つの前記加算結果判定回路は、該加算結果先見回路に接続した前記キャッシュエントリの駆動を行う第４の手順と、
を供える
本発明の第２のオペランドキャッシュメモリアクセス方法は、複数のキャッシュエントリを有するオペランドキャッシュメモリからアクセス先の前記キャッシュエントリの選択を行うオペランドキャッシュメモリアクセス方法であって、
ベ−スアドレスとインデックスアドレスと命令語中で指定される変位アドレスとをＣＰＡによる加算処理の前に前記キャッシュエントリ数ｎに等しいｎ個のＣｏｍｐｒｅｓｓｏｒに入力する第１の手順と、
前記Ｃｏｍｐｒｅｓｓｏｒは、入力されたベ−スアドレスとインデックスアドレスと変位アドレスと、０から−１、・・・、−（ｎ−１）までのｎ個のいずれか１つの数値を重複することなくそれぞれが入力して、入力した４つの数値を２つの２進数値にまとめ、それぞれに接続された加算結果先見回路に出力する第２の手順と、
ベ−スアドレスとインデックスアドレスと変位アドレスとの加算結果のアドレスにおけるそのアドレスの下位ビットであるブロックアドレスのビット数で規定されるビット数分のビットを、ベースアドレスとインデックスアドレスと変位アドレスの最下位方向から切り出し、その３つの値を加算して桁上がりを求め前記加算結果先見回路に出力する第３の手順と、
前記加算結果先見回路は、それぞれが前記キャッシュエントリと接続し、入力された前記２つの２進数値と前記桁上がりとから加算処理を行うことなく加算結果が０か否かを判定し、加算結果として０を判定したいずれか１つの前記加算結果判定回路は、接続した前記キャッシュエントリの駆動を行う第４の手順と、
を供える。
【００２７】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００２８】
図１は、本発明におけるオペランドキャッシュアクセスに関わる構成の一例である。図外に存在するレジスタファイルから読み出されたベ−スアドレスＳＹ１００、インデックスアドレスＳＺ１０１、命令語中で指定される変位アドレスＤｉｓｐ１０２の３つの値を加算して実際にアクセスするアドレスが求められる。
【００２９】
前記３つの値ベ−スアドレスＳＹ１００、インデックスアドレスＳＺ１０１、変位アドレスＤｉｓｐ１０２の３つは、加算処理のためにまず桁上げ保存加算器ＣＳＡ（Ｃａｒｒｙ　Ｓａｖｅ　Ａｄｄｅｒ）１０にて、和の部分だけの項と、桁上げ部分だけの項との２つの項１１０，１１１にまとめられた後、桁上げ伝搬加算器ＣＰＡ（Ｃａｒｒｙ　Ｐｒｏｐａｇａｔｉｏｎ　Ａｄｄｅｒ）２０にてこの２つの項の加算が行われ、加算結果である論理アドレスを得る。
【００３０】
加算結果として得られる論理アドレスは、その上位ビット側より、タグアドレス１２０、インデックスアドレス１２１、ブロックアドレス１２２の３つの部分に分けることができる。
【００３１】
オペランドキャッシュ本体は、主記憶上のある連続したアドレス内における記憶デ−タのコピ−を保持するデ−タアレイＤＡ５０と、デ−タアレイＤＡ５０に登録された主記憶上のコピ−の先頭アドレスを指し示す情報を保持するアドレスアレイＡＡ４０と、から成り立っている。
【００３２】
デ−タアレイＤＡ５０には、ブロックアドレス１２２のビット数で表される連続したアドレスのデ−タを、インデックスアドレス１２１のビット数で表されるキャッシュのエントリ数分だけ記憶することができる。
【００３３】
一方、桁上げ保存加算器ＣＳＡ１０の出力である２つの項１１０，１１１は、桁上げ伝搬加算器ＣＰＡ２０で加算される前に、インデックスアドレス１２１、及びブロックアドレス１２２のビット位置に相当する下位ビットが、本発明の特徴であるキャッシュのエントリ数ｎに対応してそれぞれ設けられた加算結果先見回路３０−０〜３０−（ｎ−１）にも入力される。これにより、桁上げ伝播加算器ＣＰＡ２０の加算処理と加算結果先見回路３０−０〜３０−（ｎ−１）の処理が並行して行われることになる。
【００３４】
加算結果先見回路３０−０〜３０−（ｎ−１）の出力は、キャッシュメモリの各キャッシュエントリをアクセスするためにアドレスアレイＡＡ４０、及びデ−タアレイＤＡ５０の複数のワ−ド線１３０−０〜１３０−（ｎ−１）をそれぞれ駆動し、接続先のキャッシュエントリを選択する。
【００３５】
デ−タアレイＤＡ５０から読み出されたキャッシュ上のデ−タは、１つのキャッシュエントリに登録された連続するアドレスに対する主記憶上の値のコピ−であることから、必要とするタ−ゲットのオペランドデ−タを得るためにブロックアドレス１２２の内容に従い更にデ−タの選択が行われる。この選択処理を行うのがカラムセレクタ７０である。
【００３６】
アドレスアレイＡＡ４０から読み出された該当するキャッシュエントリの主記憶上における先頭アドレス１４０は、桁上げ伝播加算器ＣＰＡ２０による加算結果のタグアドレス１２０とアドレス比較器６０にて比較される。その結果、アドレスが一致すれば、タ−ゲットとなるオペランドデ−タがキャッシュ上に存在するキャッシュヒットとなる。
【００３７】
キャッシュヒットの場合は、ヒット信号１５０をアクティブにする。前記カラムセレクタ７０で選択されたオペランドデ−タ１４２は、キャッシュヒット信号１５０により制御されるゲ−ト回路８０により最終的なキャッシュヒット時のオペランドデ−タ１６０として出力される。キャッシュミスヒット時には、キャッシュヒット信号１５０が非アクティブなので、ゲ−ト回路８０は開かず、オペランドデ−タ１６０はハイインピ−ダンス状態となって、別途主記憶から読み出されたオペランドデ−タが返却されることになる。
【００３８】
次に、本発明の実施の形態の動作について図面を参照して説明する。
【００３９】
図１は本発明の構成を示すものである。本発明における従来のオペランドキャッシュとの違いは、従来は、図５に示すように、桁上げ伝搬加算器ＣＰＡ２０でアドレス加算を行った後に、そのインデックスアドレス１２１をデコ−ドしてからオペランドキャッシュにアクセスしていた。
【００４０】
一方、本発明では、桁上げ伝搬加算器ＣＰＡ２０でのアドレス加算を行う前に、桁上げ保存加算器ＣＳＡ１０の結果である２つの項１１０，１１１から加算結果先見回路３０−０〜３０−（ｎ−１）によりアクセス対象のキャッシュエントリを検出し、直接オペランドキャッシュにアクセスするようにしたことである。
【００４１】
ｎ個の加算結果先見回路３０−０〜３０−（ｎ−１）は、それぞれ加算結果が０からｎ−１のいずれかになることを、桁上げ伝播加算器ＣＰＡ２０による加算結果が出力される前に先見する。例えば、加算結果先見回路３０−０では、０を先見し、加算結果先見回路３０−１では、１を先見し・・・という具合である。
【００４２】
従って、この加算結果先見回路３０−０〜３０−（ｎ−１）の出力により駆動されるワ−ド線１３０−０〜１３０−（ｎ−１）は、加算した結果をデコ−ドした場合と同じ動作になる。
【００４３】
図２は、加算結果先見回路３０−０〜３０−（ｎ−１）の回路例を示した図である。この回路ではインデックスアドレス１２１のビット数であるｐビットの２つの入力を加算した結果が、０からｎ−１（ｎ＝２のｐ乗値）のうちの０（ｐビットの各ビットが全て０）になることを先見するものである。
【００４４】
ｐビットの２つの数Ｙ［ｐ−１；０］とＺ［ｐ−１；０］を加算した結果が０になるということは、加算した結果の各ビットが０になることである。そのため、２つの数Ｙ［ｐ−１；０］とＺ［ｐ−１；０］のあるビットｉ（０≦ｉ≦ｐ−１）に着目すると、このビットｉが加算した結果０になるためには以下のいずれかであることが必要である。なお、ここでＣ［ｉ］はＹ［ｉ］とＺ［ｉ］の加算結果による上位ビットへの桁上げを表すものとする。
▲１▼　Ｙ［ｉ］＝０、Ｚ［ｉ］＝０、でかつＣ［ｉ−１］＝０
▲２▼　Ｙ［ｉ］＝１、Ｚ［ｉ］＝１、でかつＣ［ｉ−１］＝０
▲３▼　Ｙ［ｉ］＝０、Ｚ［ｉ］＝１、でかつＣ［ｉ−１］＝１
▲４▼　Ｙ［ｉ］＝１、Ｚ［ｉ］＝０、でかつＣ［ｉ−１］＝１
この４通りのいずれかの条件をｐビットの全てで満足すれば、２つの数Ｙ［ｐ−１；０］とＺ［ｐ−１；０］を加算した結果が０になる。
【００４５】
上位ビットへの桁上げであるＣ［ｉ］は、Ｙ［ｉ］とＺ［ｉ］の論理和で求めることができる。
【００４６】
一方、桁上げＣ［ｉ−１］が１であった場合に、加算結果が０になる条件である▲３▼と▲４▼は、Ｙ［ｉ］とＺ［ｉ］の排他的論理和で求めることが出来る。前記２つの結果に対して排他的論理和をとると、前記▲１▼〜▲４▼のいずれかを満足する場合のみに結果が０となる。
【００４７】
前記の処理内容を回路に表したのが、図２の加算結果先見回路３０−０〜３０−（ｎ−１）となる。ここでは、Ｙ［ｐ−１；０］の各ビット３１０−（ｐ−１）〜３１０−０とＺ［ｐ−１；０］の各ビット３１１−（ｐ−１）〜３１１−０がそれぞれ各ビット毎に排他的論理和回路３００−（ｐ−１）〜３００−０に入力されている。これは各ビット毎の和を求めているのに等しい。また、ビットｐ−１を除くｐ−１個の各ビットは、それぞれ各ビット毎に論理和回路３０１−（ｐ−１）〜３０１−０に入力されて、桁上がりを求めている。
【００４８】
各ビット毎の和３１３−（ｐ−１）〜３１３−０と各ビット毎の桁上げ３１４−（ｐ−２）〜３１４−０は、排他的論理和回路３０２−（ｐ−１）〜３０２−１に入力されており、この結果３１５−（ｐ−１）〜３１５−１が前記▲１▼〜▲４▼のいずれかを満足する条件となる。
【００４９】
尚、ここで最下位ビットに対しては論理和回路の結果による１ビット下位からの桁上げがないので、外部から入力される桁上げ信号３１２が使用される。ビット０の和３１３−０と外部からの桁上げ信号３１２がビット０の排他的論理和回路３０２−０に入力され、ビット０が前記▲１▼〜▲４▼のいずれかを満足する条件である信号３１５−０を生成する。
【００５０】
２つの入力Ｙ［ｐ−１；０］とＺ［ｐ−１；０］の加算結果が０になるためには、各ビット毎に加算結果が０になる信号３１５−（ｐ−１）〜３１５−０が全て０であることを求める。このために各ビット毎に加算結果が０になる信号３１５−（ｐ−１）〜３１５−０を論理和回路３０３に入力して、その出力３１６が０になればよい。前記の通り、図２の加算結果先見回路３０−０〜３０−（ｎ−１）の出力信号３１６はその値が０である時に、２つの入力Ｙ［ｐ−１；０］とＺ［ｐ−１；０］の加算結果が０になることを表していることが判る。
【００５１】
図１の構成において、加算結果先見回路３０−０〜３０−（ｎ−１）は、インデックスアドレス１２１のビット数ｐで表されるキャッシュのエントリ数と同じｎ個が存在している。これらの加算結果先見回路３０−０〜３０−（ｎ−１）は、それぞれ加算結果が０〜（ｎ−１）のいずれかになることを先見している。
【００５２】
図２で示した加算結果先見回路３０−０〜３０−（ｎ−１）は加算結果が０になることを先見している回路の構成例であり、その他の加算結果が１〜（ｎ−１）のいずれかになることを先見するには、予め２つの項１１０，１１１に定数−１〜−（ｎ−１）のそれぞれを桁上げ保存加算して、予め３つの加算項を２つに削減した後、図２に示す加算結果が０になることを先見する加算結果先見回路３０−０〜３０−（ｎ−１）に入力することで実現できる。
【００５３】
尚、若干の補足をすると、桁上げ保存加算器ＣＳＡ１０による結果は、桁上げ（ＣＡＲＲＹ）の項と和（ＳＵＭ）の項とからなり、桁上げの項は和の項より１ビット上位側にシフトしているので、厳密には図２で説明した回路はその旨の補正が必要ではあるが、当業者には自明のため説明の簡略化を行ったものである。
【００５４】
以上の説明により、アドレス加算実行とその結果であるインデックスアドレス１２１をデコ−ドしてオペランドキャッシュにアクセスすることなしに、アドレス加算結果を先見してその結果により直接オペランドキャッシュにアクセスすることができる本発明の構成、及び動作が明らかである。
【００５５】
より具体的な例として、図３に示すアドレスを有するシステムにおける２ウェイセットアソシアティブ方式のオペランドキャッシュを考える。図３に示されている通り、このシステムではアドレスは４０ビットであるため仮想アドレス空間は１テラバイトになる。ここでタグアドレス１２０は、ビット０からビット２４までの２５ビット、インデックスアドレス１２１は、ビット２５からビット３２までの８ビット、ブロックアドレスは、ビット３３からビット３９までの７ビットである。
【００５６】
これにより、このシステムにおけるオペランドキャッシュは、１つのエントリにおけるキャッシュブロックサイズが１２８バイト、キャッシュのエントリ数が２５６個となる。
【００５７】
以上がセット毎のオペランドキャッシュであり、２ウェイセットアソシアティブ方式の場合、同じ構成のキャッシュメモリがタグアドレス２つ分に対して用意されている構成となる。各セット毎のキャッシュメモリの容量が１２８バイト×２５６個で３２Ｋバイトであることから、オペランドキャッシュ全体での容量は６４Ｋバイトとなる。
【００５８】
図４は、このような２ウェイセットアソシアティブ方式のオペランドキャッシュに対して、本発明によるアクセス高速化手段を組み込んだ場合の構成例を示している。図外に存在するレジスタファイルから読み出されたベ−スアドレスＳＹ１００、インデックスアドレスＳＺ１０１、命令語中で指定される変位アドレスＤｉｓｐ１０２の３つの値を加算して実際にアクセスするアドレスが求められる。ベ−スアドレスＳＹ１００は４０ビット、インデックスアドレスＳＺ１０１も４０ビット、変位アドレスＤｉｓｐ１０２は、命令セットア−キテクチャに依存するビット幅を有するが、ここでは仮に３２ビットとしておく。
【００５９】
前記３つの値１００，１０１，１０２は加算処理のためにまず桁上げ保存加算器ＣＳＡ１０にて２つの項１１０，１１１にまとめられた後、桁上げ伝搬加算器ＣＰＡ２０にて加算結果である論理アドレスを得る。
【００６０】
本構成ではキャッシュブロックサイズが１２８バイト、キャッシュエントリ数が２５６個であることから、論理アドレスの上位２５ビット（ビット３９〜ビット１５）がタグアドレス１２０、下位７ビット（ビット６〜ビット０）がブロックアドレス１２２となる。
【００６１】
一方、オペランドキャッシュにアクセスするためのインデックスアドレス１２１を先見するために、ベ−スアドレスＳＹ１００の下位１５ビット（ビット１４〜ビット０）とインデックスアドレスＳＺ１０１の下位１５ビット（ビット１４〜ビット０）、並びに変位アドレスＤｉｓｐ１０２の下位１５ビット（ビット１４〜ビット０）が先見を行う先見回路ブロックに供給される。
【００６２】
尚、先見回路ブロックは、４個の項を桁上げ保存加算して２個の項にまとめる４−２Ｃｏｍｐｒｅｓｓｏｒ３２−０〜３２−２５５と、下位７ビットの３個の項を加算してその桁上がりを求める桁上げ先見回路ＣＬＡ３３と、そして図２に示した２個の項の加算結果が０になることを先見する加算結果先見回路３４−０〜３４−２５５と、から構成される。
【００６３】
キャッシュエントリ数は２５６個であるため、先見回路ブロックではベ−スアドレスＳＹ１００、インデックスアドレスＳＺ１０１、変位アドレスＤｉｓｐ１０２からなる共通の３項の加算結果が、それぞれ０から２５５のうちのいずれの値になるかを先見する必要がある。このため、２５６個の４−２Ｃｏｍｐｒｅｓｓｏｒ３２−０〜３２−２５５には前記共通の３項の他に、それぞれに０から２５５の定数値を第４項として加算し、４項を２項にまとめた後、まとめた２項について、２５６個の加算結果先見回路３４−０〜３４−２５５で加算結果が０になるかどうかを先見する。
【００６４】
これにより、２５６個の加算結果先見回路３４−０〜３４−２５５のうちの１つが、０の結果を出力するので、０を出力した先のキャッシュエントリが選択されたことになり、前記共通の３項の加算結果がそれぞれ０から２５５のいずれかになるのを先見するのと等価になる。
【００６５】
また、この先見回路ブロックではブロックアドレス１２２に相当する加算結果は必要ないが、ブロックアドレス１２２を求めた結果の桁上がりはキャッシュエントリを特定するために必要になるので、前記共通の３項における最下位７ビット分の加算結果による桁上がりを桁上げ先見回路ＣＬＡ３３で求め、２５６個の加算結果先見回路３４−０〜３４−２５５の最下位のビットに入力する。
【００６６】
このようにして得られた加算結果先見回路３４−０〜３４−２５５の出力は、それぞれベ−スアドレスＳＹ１００、インデックスアドレスＳＺ１０１、変位アドレスＤｉｓｐ１０２を加算した結果が指し示すオペランドキャッシュ内の該当キャッシュエントリを直接指し示すことになる。従って、この出力をドライバ回路で駆動して、オペランドキャッシュのアドレスアレイ、及びデ−タアレイのワ−ド線とすることになる。
【００６７】
図５ではオペランドキャッシュとして２ウェイセットアソシアティブ構成を採用している。このため、全く同じ容量のウェイ０のアドレスアレイ４０−０とデ−タアレイ５０−０、及びウェイ１のアドレスアレイ４０−１とデ−タアレイ５０−１が存在し、加算結果先見回路３４−０〜３４−２５５でウェイ０のワ−ド線１３０−０〜１３０−２５５、及びウェイ１のワ−ド線１３１−０〜１３１−２５５を共通に駆動する。
【００６８】
尚、ここでアドレスアレイ４０−０、４０−１は、ビット数がタグアドレス１２０と同じ２５ビット幅、ワ−ド数がキャッシュエントリ数と同じ２５６ワ−ドのＲＡＭとなる。また、デ−タアレイ５０−０、５０−１は、ビット数がキャッシュブロックサイズと同じ１２８バイト（１０２４ビット）幅、ワ−ド数がキャッシュエントリ数と同じ２５６ワ−ドのＲＡＭとなる。
【００６９】
オペランドキャッシュへのアクセスの結果、読み出されたアドレスアレイ４０−０、４０−１の出力１４０−０、１４０−１は、各ウェイ毎にアドレス比較器６０−０、６０−１にて、タグアドレス１２０とその値が比較される。
【００７０】
デ−タアレイ５０−０、５０−１の出力１４１−０、１４１−１は、キャッシュブロックサイズと同じ１２８バイト幅であり、ロ−ド命令の実行で必要とされるタ−ゲットオペランドのデ−タ幅は典型的には８バイト幅である。そのため、ブロックアドレス１２２の値により各ウェイ毎のカラム選択回路（ＴａｒｇｅｔＳｅｌｅｃｔｏｒ）７０−０，７０−１において必要なタ−ゲットオペランド部分１４２−０、１４２−１のみを取り出す。
【００７１】
アドレス比較器６０−０，６０−１での比較結果が一致した場合は、ゲ−ト回路８０−０、８０−１を制御して前記カラム選択回路７０−０，７０−１の出力であるタ−ゲットオペランド１４２−０，１４２−１を有効化する。ここで、ウェイ０とウェイ１に登録されているタグアドレスは同じキャッシュエントリでは等しくなることはないので、アドレス比較器６０−０，６０−１は、両方が同時に一致することはない。
【００７２】
ゲ−ト回路８０−０、８０−１の出力１６０−０、１６０−１は、ワイヤ−ド接続されて最終的なタ−ゲットオペランドデ−タ１６１として図外に存在するレジスタファイルへ返却される。なお、ゲ−ト回路８０−０、８０−１の出力は３ステ−ト出力回路になっており、ゲ−ト回路が有効化されない場合にはＨｉｇｈインピ−ダンスの出力状態となる回路である。なお、ウェイ０のアドレス比較器６０−０とウェイ１のアドレス比較器６０−１の両方においてタグアドレス１２０と比較結果が一致しない場合には、キャッシュヒット判定論理回路９０にてキャッシュミスヒットを検出し、ミスヒット信号１７０を制御部に対して返す。この時、タ−ゲットオペランドデ−タ１６１はＨｉｇｈインピ−ダンスの出力状態となる。
【００７３】
キャッシュミスヒットとなった場合には、図外の制御部にてプロセッサ外部の主記憶に対してデ−タ読み出しの処理を行うことになる。前記の通り、本発明における構成は一般的なオペランドキャッシュの構成であるＮウェイセットアソシアティブ方式（Ｎは自然数）に対して適用することが可能であり、そのいずれにおいてもロ−ド命令のＴＡＴを短縮する効果を有していることが明らかである。
【００７４】
【発明の効果】
本発明の効果は、アドレス計算の実行からオペランドキャッシュメモリにアクセスして必要とするオペランドデ−タを得るまでのＴＡＴ（Ｔｕｒｎ　Ａｒｏｕｎｄ　Ｔｉｍｅ）を短縮できることである。これは、本来アドレス計算を行った後にその計算結果の一部のビットを用いてオペランドキャッシュのアドレスアレイ、及びデ−タアレイにアクセスしてオペランドデ−タを得ていたのに対して、アドレス計算を行わずにその入力からアクセスされるであろうアドレスアレイ、及びデ−タアレイのエントリを先見してオペランドキャッシュにアクセスすることによって実現される。これによりアドレス計算からオペランドキャッシュにアクセスするまでの手順の一部を省略して時間を短縮することが可能になり、オペランドデ−タを得るまでのロ−ド命令のＴＡＴを短縮できる。
【図面の簡単な説明】
【図１】本発明の実施例の構成を説明するブロック図である。
【図２】本発明の加算結果先見回路を説明する回路図である。
【図３】本発明のオペランドキャッシュをアクセスするアドレスの構成を表す説明図である。
【図４】本発明の具体的な実施例の構成等を説明する模式図である。
【図５】本発明の従来の構成を説明するブロック図である。
【符号の説明】
１０　　桁上げ保存加算器ＣＳＡ
２０　　桁上げ伝搬加算器ＣＰＡ
３０−０〜３０−（ｎ−１）　　加算結果先見回路
３２−０〜３２−２５５　　４−２Ｃｏｍｐｒｅｓｓｏｒ
３３　　桁上げ先見回路ＣＬＡ
３４−０〜３４−２５５　　加算結果先見回路
４０　　アドレスアレイＡＡ
５０　　デ−タアレイＤＡ
６０　　アドレス比較器
７０　　カラムセレクタ
８０　　ゲ−ト回路
９０　　キャッシュヒット判定論理回路
１００　　ベ−スアドレスＳＹ
１０１　　インデックスアドレスＳＺ
１０２　　変位アドレスＤｉｓｐ
１２０　　タグアドレス
１２１　　インデックスアドレス
１２２　　ブロックアドレス
１３０−０〜１３０−２５５　　ワ−ド線
１３１−０〜１３１−２５５　　ワ−ド線
１４０　　先頭アドレス
１５０　　ヒット信号
１６０　　オペランドデ−タ
１７０　　ミスヒット信号
３０３　　論理和回路
３１２　　桁上げ信号
【図１】
2004086761.tif 000003
【図２】
2004086761.tif 000004
【図３】
2004086761.tif 000005
【図４】
2004086761.tif 000006
【図５】
2004086761.tif 000007