(57)【特許請求の範囲】
【請求項１】
主記憶と処理装置との間にそれぞれの動作速度の相違をバッファリングするために設けられ、前記処理装置から与えられるアクセス要求に応答して、前記主記憶との間でブロック単位で命令情報の授受を行なう命令補助記憶装置と、
前記主記憶から読出され、前記命令補助記憶装置に転送される読出ブロックに含まれる命令を解析して、前記読出ブロックに続くブロックである次ブロックを前記主記憶から読み出すことが必要か否かを予測する命令解析手段と、
前記命令解析手段の予測に応答して、前記次ブロックの読み出しが必要であると予測された場合、前記次ブロックを前記主記憶から読出して、前記命令補助記憶装置に格納させるための次ブロック読出手段とを備え、
前記命令解析手段は、前記読出ブロックと前記次ブロックとの領域外に分岐すると予測される命令でないことを検出して、前記次ブロックを読出すことが必要であると予測する予測手段を含む、
先行読出機能付命令キャッシュメモリ。
【請求項２】
前記命令解析手段は、
前記読出ブロック内から分岐すると予測される命令である分岐予測命令を検出する分岐予測命令検出手段と、
前記分岐予測命令が、自身のアドレスより大きいアドレスに分岐する前方分岐か否かを判定する前方分岐判定手段と、
前記予測手段とを含み、
前記予測手段は、前記分岐判定手段が前記分岐予測命令が前方分岐であると判定した場合に、前記次ブロックを読出すことが必要であるとさらに予測する
請求項１記載の先行読出機能付命令キャッシュメモリ。
【請求項３】
主記憶と処理装置との間にそれぞれの動作速度の相違をバッファリングするために設けられ、前記処理装置から与えられるアクセス要求に応答して、前記主記憶との間でブロック単位で命令情報の授受を行なう命令補助記憶装置と、
前記主記憶から読出され、前記命令補助記憶装置に転送される読出ブロックに含まれる命令を解析して、前記読出ブロックに続くブロックである次ブロックを前記主記憶から読み出すことが必要か否かを予測する命令解析手段と、
前記命令解析手段の予測に応答して、前記次ブロックの読み出しが必要であると予測された場合、前記次ブロックを前記主記憶から読出して、前記命令補助記憶装置に格納させるための次ブロック読出手段とを備え、
特定の命令が予め定められており、
前記命令解析手段は、前記読出ブロックに前記特定の命令が存在することを検出して、前記次ブロックを読出すことが必要であると予測する予測手段を含む、
先行読出機能付命令キャッシュメモリ。
【請求項４】
主記憶と処理装置との間にそれぞれの動作速度の相違をバッファリングするために設けられ、前記処理装置から与えられるアクセス要求に応答して、前記主記憶との間でブロック単位で命令情報の授受を行なう命令補助記憶装置と、
前記主記憶から読出され、前記命令補助記憶装置に転送される読出ブロックに含まれる命令を解析して、分岐命令を含む場合に分岐先アドレスを計算し、当該分岐先アドレスの命令を含むブロックである分岐先ブロックを前記主記憶から読み出す必要があるか否かを判定する命令解析手段と、
前記命令解析手段の判定に応答して、前記分岐先ブロックの読み出しが必要と判定された場合、前記分岐先ブロックを前記主記憶から読出して、前記命令補助記憶装置に格納させるための分岐先ブロック読出手段とを備え、
前記命令解析手段は、前記分岐命令が絶対分岐命令あるいはプログラムカウンタ相対分岐命令である場合に、前記分岐先ブロックを前記主記憶から読み出すことが必要であると判定する判定手段を備える、
先行読出機能付命令キャッシュメモリ。
【請求項５】
主記憶と処理装置との間にそれぞれの動作速度の相違をバッファリングするために設けられ、前記処理装置から与えられるアクセス要求に応答して、前記主記憶との間でブロック単位で命令情報の授受を行なう命令補助記憶装置を備え、前記命令補助装置は前記アクセス要求で指示されるブロックの情報を保持していない場合に、そのブロックの情報を前記主記憶から取り込み、
前記主記憶から読出され、前記命令補助記憶装置に転送される読出ブロックに含まれる命令を解析して、分岐命令を含む場合に分岐先アドレスを計算し、当該分岐先アドレスの命令を含むブロックである分岐先ブロックの読み出しを指示する、前記アクセス要求と等価な疑似アクセス要求を前記補助記憶装置に出力する先行読出制御手段をさらに備え、
前記先行読出制御手段は、前記分岐命令が絶対分岐命令あるいはプログラムカウンタ相対分岐命令である場合に、前記分岐先ブロックを前記主記憶から読み出すことが必要であると判定する判定手段を備える、
先行読出機能付命令キャッシュメモリ。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、マイクロプロセッサなどの処理装置と主記憶との間に位置し、双方の動作速度の相違をバッファリングするための先行読出機能付命令キャッシュメモリに関し、特に、そのヒット率の向上に関する。
【０００２】
【従来の技術】
通常プロセッサでは、記憶階層はいくつかのレベルから構成される。そしてこれらの記憶階層の管理は、隣接する２つのレベル間ごとに行なわれる。
【０００３】
図２５を参照して、ＣＰＵ１８に近い方の記憶装置２００をキャッシュ、遠い方の記憶装置をメモリ２２と呼ぶ。この２つのレベルにおいて、記憶管理の対象となるデータの最小単位をブロックと呼ぶ。キャッシュとメモリとの間のデータの授受はブロック単位で行なわれる。
【０００４】
ＣＰＵ１８はキャッシュ２００に対し、コントロール信号（ロード／ストア）とアドレスとからなるアクセス要求を出力する。キャッシュ２００は内部にアクセス要求で指示されるアドレスの内容を保持している場合、速やかにデータをＣＰＵ１８に出力し、保持しておらずキャッシュに対するアクセスが失敗した場合、メモリ２２に対しコントロール信号（ロード／ストア）とアドレスとからなる読出要求を出力し、読出要求で指示されるアドレスのデータをメモリ２２から取り込み、ＣＰＵ１８に転送する。
【０００５】
キャッシュに対するアクセスが失敗したこと（対象とするデータがキャッシュ２００内に見つからないこと）をミスと呼ぶ。ミス率とは、アクセスが失敗する割合をいう。ヒット率はミス率の逆であり、アクセスが成功する割合をいう。ミスペナルティとは、キャッシュ２００中のブロックをメモリ２２から転送されるブロックで置換える時間と、そのブロックへのアクセス要求を出したＣＰＵ１８までデータを送る時間とを足し合わせたものをいう。
【０００６】
一般に、プロセッサの性能を示すＣＰＵ時間は、以下の式で与えられる。
【０００７】
ＣＰＵ時間＝実行命令数×（１命令当りのクロック数（ＣＰＩ）＋
１命令当りの平均ミス回数×ミスペナルティ）×クロックサイクル時間
この式より、同じＣＰＵであっても、キャッシュの挙動によってその性能に影響があることが分かる。ＣＰＩが小さく、クロック周波数の高いＣＰＵにおいては、キャッシュミスによる性能低下はより深刻なものになる。なぜなら、ＣＰＩ値が小さければ小さいほど、キャッシュミスの影響の割合が大きくなるからである。
【０００８】
また、ＣＰＵが異なっても主記憶に使うメモリチップは同種のものであることが多い。したがって主記憶アクセス時間だけを見れば、どんなコンピュータでもほとんど相違がない。ミスペナルティは、ミスの処理に必要な時間をＣＰＵクロック数で表わした値として表現される。主記憶のアクセス速度が同じであっても、ＣＰＵのクロック数が高くなればなるほどミスペナルティの値が大きくなる。そのためクロック周波数の高いＣＰＵにおいては、キャッシュミスによる性能低下がより深刻なものとなる。
【０００９】
【発明が解決しようとする課題】
以上より、キャッシュミスはプロセッサの性能に大きな影響を及ぼすことがわかる。すなわちミスが発生する確率の大小が、システムの性能に大きな重要性を持つ。
【００１０】
キャッシュメモリは、命令（専用）キャッシュとデータ（専用）キャッシュとに分割される場合がある。命令とデータとのためにそれぞれ別個の独立したキャッシュを設けることにより、それぞれ命令とデータとの取扱いに最適な構成をとることができるため、システム全体の性能向上には有利である。特に命令キャッシュメモリにおいては、一連の命令が実行される態様をより深く研究することにより、命令キャッシュメモリの動作をより最適化できる可能性が存在する。
【００１１】
この発明は上記問題点を解決するためになされたもので、キャッシュミスの発生する確率の低い命令キャッシュメモリを得ることを目的とする。
【００１２】
【課題を解決するための手段】
この発明に係る請求項１記載の先行読出機能付命令キャッシュメモリは、主記憶と処理装置との間にそれぞれの動作速度の相違をバッファリングするために設けられ、前記処理装置から与えられるアクセス要求に応答して、前記主記憶との間でブロック単位で命令情報の授受を行なう命令補助記憶装置と、前記主記憶から読出され、前記命令補助記憶装置に転送される読出ブロックに含まれる命令を解析して、前記読出ブロックに続くブロックである次ブロックを前記主記憶から読み出すことが必要か否かを予測する命令解析手段と、前記命令解析手段の予測に応答して、前記次ブロックの読み出しが必要であると予測された場合、前記次ブロックを前記主記憶から読出して、前記命令補助記憶装置に格納させるための次ブロック読出手段とを備え、前記命令解析手段は、前記読出ブロックと前記次ブロックとの領域外に分岐すると予測される命令でないことを検出して、前記次ブロックを読出すことが必要であると予測する予測手段を含んでいる。
【００１５】
また、請求項２記載の先行読出機能付命令キャッシュメモリのように、前記命令解析手段は、前記読出ブロック内から分岐すると予測される命令である分岐予測命令を検出する分岐予測命令検出手段と、前記分岐予測命令が、自身のアドレスより大きいアドレスに分岐する前方分岐か否かを判定する前方分岐判定手段と、前記予測手段とを含み、前記予測手段は、前記分岐判定手段が前記分岐予測命令が前方分岐であると判定した場合に、前記次ブロックを読出すことが必要であるとさらに予測するように構成してもよい。
【００１６】
この発明に係る請求項３記載の先行読出機能付命令キャッシュメモリは、主記憶と処理装置との間にそれぞれの動作速度の相違をバッファリングするために設けられ、前記処理装置から与えられるアクセス要求に応答して、前記主記憶との間でブロック単位で命令情報の授受を行なう命令補助記憶装置と、前記主記憶から読出され、前記命令補助記憶装置に転送される読出ブロックに含まれる命令を解析して、前記読出ブロックに続くブロックである次ブロックを前記主記憶から読み出すことが必要か否かを予測する命令解析手段と、前記命令解析手段の予測に応答して、前記次ブロックの読み出しが必要であると予測された場合、前記次ブロックを前記主記憶から読出して、前記命令補助記憶装置に格納させるための次ブロック読出手段とを備え、特定の命令が予め定められており、前記命令解析手段は、前記読出ブロックに前記特定の命令が存在することを検出して、前記次ブロックを読出すことが必要であると予測する予測手段を備えている。
【００１７】
この発明に係る請求項４記載の先行読出機能付命令キャッシュメモリは、主記憶と処理装置との間にそれぞれの動作速度の相違をバッファリングするために設けられ、前記処理装置から与えられるアクセス要求に応答して、前記主記憶との間でブロック単位で命令情報の授受を行なう命令補助記憶装置と、前記主記憶から読出され、前記命令補助記憶装置に転送される読出ブロックに含まれる命令を解析して、分岐命令を含む場合に分岐先アドレスを計算し、当該分岐先アドレスの命令を含むブロックである分岐先ブロックを前記主記憶から読み出す必要があるか否かを判定する命令解析手段と、前記命令解析手段の判定に応答して、前記分岐先ブロックの読み出しが必要と判定された場合、前記分岐先ブロックを前記主記憶から読出して、前記命令補助記憶装置に格納させるための分岐先ブロック読出手段とを備え、前記命令解析手段は、前記分岐命令が絶対分岐命令あるいはプログラムカウンタ相対分岐命令である場合に、前記分岐先ブロックを前記主記憶から読み出すことが必要であると判定する判定手段を備えている。
【００２５】
この発明に係る請求項５記載の先行読出機能付命令キャッシュメモリは、主記憶と処理装置との間にそれぞれの動作速度の相違をバッファリングするために設けられ、前記処理装置から与えられるアクセス要求に応答して、前記主記憶との間でブロック単位で命令情報の授受を行なう命令補助記憶装置を備え、前記命令補助装置は前記アクセス要求で指示されるブロックの情報を保持していない場合に、そのブロックの情報を前記主記憶から取り込み、前記主記憶から読出され、前記命令補助記憶装置に転送される読出ブロックに含まれる命令を解析して、分岐命令を含む場合に分岐先アドレスを計算し、当該分岐先アドレスの命令を含むブロックである分岐先ブロックの読み出しを指示する、前記アクセス要求と等価な疑似アクセス要求を前記補助記憶装置に出力する先行読出制御手段をさらに備え、前記先行読出制御手段は、前記分岐命令が絶対分岐命令あるいはプログラムカウンタ相対分岐命令である場合に、前記分岐先ブロックを前記主記憶から読み出すことが必要であると判定する判定手段を備えている。
【００２６】
【作用】
この発明における請求項１記載の先行読出機能付命令キャッシュメモリにおいて、命令解析手段は主記憶から読出され、命令補助記憶装置に転送されるブロックである読出ブロックに含まれる命令を解析して、読出ブロックに続くブロックである次ブロックを主記憶から読出すことが必要か否かが予測する。そして、次ブロック読出手段は、命令解析手段により主記憶からの読み出しが必要であると予測された場合、次ブロックを主記憶から読出し、命令補助記憶装置に転送する。
【００２７】
したがって、請求項１記載の先行読出機能付命令キャッシュメモリは、読出ブロックの命令の実行に先立って、必要に応じて次ブロックの転送を行うことにより、次ブロックへのアクセス要求が発生したときにミスが発生しないようにしている。
【００２８】
この際、次ブロックを主記憶から読出すことが必要か否かの命令解析手段による予測に基づき次ブロックの読出しが行なわれるので、不要なブロックが読出されてしまう可能性は低い。
【００３１】
さらに、請求項１記載の先行読出機能付命令キャッシュメモリの命令解析手段における予測手段は、分岐すると予測される命令である分岐予測命令が存在していた場合でも、それが当該読出ブロックと次ブロックとの領域外に分岐すると予測される命令でない場合には、次ブロックを読出すことが必要であると予測する。
【００３２】
すなわち、予測手段は、分岐予測命令であっても、読出ブロックと次ブロック内に分岐する命令であれば、次ブロックがアクセスされる可能性は高いため、次ブロックを読出すことが必要であると予測している。
【００３３】
また、請求項２記載の先行読出機能付命令キャッシュメモリでは、分岐予測命令検出手段により、読出ブロックに含まれる分岐予測命令が検出されると、前方分岐判定手段により、検出された分岐予測命令が前方分岐か否かが判定される。そして、予測手段により、検出された分岐予測命令が前方分岐であると判定された場合に、次ブロックを読出すことが必要であると予測される。
【００３４】
すなわち、予測手段は、分岐予測命令でも後方分岐の場合には他のブロックに分岐することが多いが、前方分岐では他のブロックに分岐する確率が低いため、次ブロックを読出すことが必要であると予測している。
【００３５】
また、請求項３記載の先行読出機能付命令キャッシュメモリの命令解析手段における予測手段は、読出ブロックに特定の命令が存在することを検出して、次ブロックを読出すことが必要であると予測する。
【００３７】
この発明における請求項４記載の先行読出機能付命令キャッシュメモリにおいて、命令解析手段は、主記憶から読出され、命令補助記憶装置に転送される読出ブロックに含まれる命令を解析して、分岐命令を含む場合に分岐先アドレスを計算し、当該分岐先アドレスの命令を含むブロックである分岐先ブロックを主記憶から読み出す必要があるか否かを判定する。そして、分岐先ブロック読出手段は分岐先ブロックの読み出しが必要と判定された場合、分岐先ブロックを主記憶から読出して、命令補助記憶装置に格納させる。
【００３８】
したがって、請求項４記載の先行読出機能付命令キャッシュメモリは、読出ブロックの命令の実行に先立って、必要に応じて分岐先ブロックの転送を行うことにより、分岐先ブロックへのアクセス要求が発生したときにミスが発生しないようにしている。
【００３９】
この際、分岐先ブロックを主記憶から読出すことが必要か否かの命令解析手段による判断に基づき分岐先ブロックの読出しが行なわれるので、不要な分岐先ブロックが読出されてしまう可能性は低い。
【００４０】
加えて、請求項４記載の先行読出機能付命令キャッシュメモリの命令解析手段の判定手段は、分岐命令が絶対分岐命令あるいはプログラムカウンタ相対分岐命令である場合に、分岐先ブロックを主記憶から読み出すことが必要であると判定する。
【００４１】
読出ブロックに絶対分岐命令あるいはプログラムカウンタ相対分岐命令が存在している場合は分岐先ブロックがアクセスされる可能性が高いため、判定手段の上記判定の精度は高い。
【００５１】
この発明における請求項５記載の先行読出機能付命令キャッシュメモリの先行読出制御手段は、主記憶から読出され、命令補助記憶装置に転送される読出ブロックに含まれる命令を解析して、分岐命令を含む場合に分岐先アドレスを計算し、当該分岐先アドレスの命令を含むブロックである分岐先ブロックの読み出しを指示するアクセス要求と等価な疑似アクセス要求を補助記憶装置に出力する。
【００５２】
したがって、先行読出制御手段は、読出ブロックに分岐命令が存在する場合、補助記憶装置に対する分岐先ブロックでのアクセスを行うため、分岐先ブロックが補助記憶装置に存在しないとき、補助記憶装置は主記憶に対する分岐先ブロックの読み出しを要求して、分岐先ブロックを自動的に取り込み、分岐先ブロックが補助記憶装置に存在するとき、分岐先ブロックの読み出し要求を発しないため主記憶には全くアクセスしない。
【００５３】
【実施例】
以下、本発明を３つの実施例に基づいて詳細に説明する。なお、本発明は様々な局面を持っており、以下に示す３つの実施例は、それらの曲面をある特定の組合わせで実現したものである。したがってこれ以外の組合わせについても、上述の特許請求の範囲に規定されたものであれば本願に含まれることは言うまでもない。
【００５４】
＜＜第１の実施例＞＞
第１の実施例は、命令補助記憶装置たる命令キャッシュからの読出要求に応答してメモリから１ブロックの命令情報が読出された場合に、その読出された１ブロック内に分岐予測命令が存在するか否かを検出し、存在していない場合には次のブロックも続けてメモリから読出して命令キャッシュに転送する先行読出機能付命令キャッシュに関する。
【００５５】
１ブロック内の命令情報に分岐予測命令が含まれない場合、次のブロックに対するアクセス要求が出される確率は極めて高い。したがって予め次のブロックをメモリから読出して命令キャッシュに転送しておくことにより、次のブロックのアクセス要求が発生したときにミスとなることはなく、ヒット率が上昇する。また、読出された１ブロック内に分岐予測命令が存在する場合には、次のブロックを読出しても無駄となる可能性が高い。そうした場合には次のブロックは読出されないので、キャッシュメモリへの無駄な転送が行なわれずに済む。また、キャッシュメモリ内に既に格納されていた、よりアクセスされる頻度の高いブロックがこの次ブロックの読出により命令キャッシュから消去されることがない。したがってさらにキャッシュミスの確率が低下できる。
【００５６】
図１はこの発明の第１の実施例である先行読出機能付命令キャッシュメモリの構成をを示すブロック図である。同図に示すように、メモリ２２は記憶階層の下位の部分を構成する記憶装置であり、命令キャッシュ３０は上位の部分を構成する記憶装置である。命令キャッシュ３０は特に、命令のみを記憶する命令キャッシュであり、ＣＰＵによる命令の実行速度と、メモリ２２からの読出速度との相違をバッファリングするために設けられたものである。
【００５７】
一般的に命令キャッシュ３０は、ＣＰＵから命令のアクセス要求が与えられる。命令キャッシュ３０は要求されたデータが命令キャッシュ３０内に存在しない場合、メモリ２２に対する読出信号と、読出したいブロック（読出ブロック）を示すアドレスとをメモリ２２に向けて転送する。転送の具体的方法は後述する。
【００５８】
図１を参照して、本発明の先行読出機能付命令キャッシュ２０は、メモリ２２と図示されないプロセッサとの間に設けられる。先行読出機能付命令キャッシュ２０は、メモリ２２からブロック単位で命令を読出して格納しておく命令補助記憶装置たる命令キャッシュ３０と、命令キャッシュ３０の先行読出を制御する先行読出制御部３２とを含む。
【００５９】
先行読出制御部３２は、メモリ２２から読出ブロックのアドレスを格納するアドレスレジスタ４４と、アドレスレジスタ４４に保持された値を１ブロック分加算するカウンタ４６と、与えられる選択信号に応答して、命令キャッシュ３０またはカウンタ４６の出力を選択してアドレスレジスタ４４に与えるためのセレクタ４８と、アドレスレジスタ４４に格納された値により指定されるアドレスから読出された１ブロックの命令を一旦格納し、命令キャッシュ３０に与える命令レジスタ４０と、命令レジスタ４０に格納された１ブロックの命令内に分岐予測命令が含まれるか否かを判定し、含まれない場合にはセレクタ４８、メモリ２２、および命令キャッシュ３０を制御して次ブロックの命令をメモリ２２から命令キャッシュ３０に転送させるための命令解析部４２とを含む。先行読出制御部３２のうち、命令解析部４２以外の部分が次ブロック読出手段に相当する。
【００６０】
図２は命令レジスタ４０及び命令解析部４２の内部構成を示すブロック図である。同図に示すように、命令レジスタ４０は、ｎ個の命令１〜命令ｎをそれぞれ格納するｎ個のレジスタ４０−１〜４０−ｎから構成される。
【００６１】
命令解析部４２は、それぞれレジスタ４０−１〜４０−ｎに接続され、各レジスタに分岐予測命令が含まれるか否かを検出するための分岐予測命令検出回路６２−１〜６２−ｎと、分岐予測命令検出回路６２−１〜６２−ｎの出力と、命令キャッシュ３０からの読出信号とに応答して、セレクタ４８に対する選択信号とメモリ２２に対する読出信号とを出力するための読出信号発生回路６０と、読出信号発生回路６０の出力に応答して、命令キャッシュ３０へのコントロール信号を発生するためのコントロール信号発生回路６４とを含む。なお読出信号発生回路６０は、分岐予測命令検出回路６２−１〜６２−ｎのいずれからも、分岐予測命令が検出されたことを示す信号が与えられない場合に、セレクタ４８に対して図１に示すカウンタ４６の出力を選択する選択信号を与えるように動作する。
【００６２】
図２に示す分岐予測命令検出回路６２−１〜６２−ｎはそれぞれ同一の構成を有する。以下「ｍ」は、１からｎまでの任意の整数を表わすものとする。
【００６３】
図３は分岐予測命令検出回路６２−ｍの内部構成を示す説明図である。同図に示すように、分岐予測命令検出回路６２−ｍは、分岐予測命令を予め格納する分岐予測命令レジスタ７０と、命令レジスタ４０−ｍおよび分岐予測命令レジスタ７０の双方に接続され、レジスタ４０−ｍに格納されている命令と、分岐予測命令レジスタ７０に格納されている分岐予測命令とが一致しているか否かを検出し一致検出信号を読出信号発生回路６０に与えるための一致検出回路７２とを含む。
【００６４】
図４は読出信号発生回路６０の内部構成を示す回路図である。同図に示すように、読出信号発生回路６０は、分岐予測命令検出回路６２−１〜６２−ｎに接続されたｎ個の入力を有するＮＡＮＤゲート８２と、命令キャッシュ３０から与えられる読出信号を一旦ラッチするラッチ回路８０と、ＮＡＮＤゲート８２の出力とラッチ回路８０の出力とに接続された２つの入力を有するＡＮＤゲート８４と、ＡＮＤゲート８４の出力と、命令キャッシュ３０からの読出信号とが与えられる２つの入力を有するＯＲゲート８６とから構成される。なお、ラッチ８０はＣＰＵ１８の動作用のクロックＣＫをさらに受け、このクロックＣＫに同期して命令キャッシュ３０から得られる読出要求を記憶する。
【００６５】
ＡＮＤゲート８４の出力がセレクタ４８に対する選択信号、ＯＲゲート８６の出力がメモリ２２に対する読出信号となる。
【００６６】
以下、図１〜図４で示した第１の実施例の先行読出機能付命令キャッシュの動作を説明する。
【００６７】
ここで、ＣＰＵから、命令キャッシュ３０内に存在しないデータが要求されたものとする。この場合命令キャッシュ３０は、命令解析部４２に対して読出信号を与える。命令キャッシュ３０はまた、セレクタ４８に対して当該命令に対するブロックのアドレスを与える。命令解析部４２は、命令キャッシュ３０から読出信号を受け、セレクタ４８を制御して命令キャッシュ３０から出力されたアドレスを選択させる。セレクタ４８は命令キャッシュ３０の出力したアドレスをアドレスレジスタ４４に格納させる。
【００６８】
メモリ２２は、アドレスレジスタ４４により示されたブロックを命令レジスタ４０に転送する。命令キャッシュ３０はさらに、命令解析部４０から与えられるコントロール信号に応答して、命令レジスタ４０に格納された１ブロック分のデータを格納する。
【００６９】
カウンタ４６は、アドレスレジスタ４４に格納されている値を１ブロック分加算し、再びセレクタ４８に与える。
【００７０】
命令解析部４２は、後述のようにして命令レジスタ４０に格納された１ブロック分の命令内に、分岐すると予測される命令である分岐予測命令があるか否かを判定する。分岐予測命令がなかった場合には、命令解析部４２はセレクタ４８を制御してカウンタ４６の出力を選択させる。セレクタ４８の出力はアドレスレジスタ４４に格納される。命令解析部４２はまた、メモリ２２に対して読出信号を与える。したがってメモリ２２は、アドレスレジスタ４４により指定された１ブロック次のブロックを命令レジスタ４０に対して転送する。命令解析部４２はまた、命令キャッシュ３０に対してコントロール信号を与え、命令レジスタ４０の内容を格納させる。
【００７１】
図２〜図４を参照して、命令解析部４２は以下のように動作する。
【００７２】
特に図３を参照して、分岐予測命令検出回路６２−ｍの一致検出回路７２は、レジスタ４０−ｍに格納されている命令と分岐予測命令レジスタ７０に格納されている分岐予測命令とが一致するか否かを判定し、一致する場合には分岐信号を生成し読出信号発生回路６０に与える。再び図２を参照して、ｎ個の分岐予測命令検出回路６２−１〜６１−ｎの各々においてこの処理が行なわれる。
【００７３】
図４を参照して、ＮＡＮＤゲート８２は、分岐予測命令検出回路６２−１〜６２−ｎから与えられる信号のうちのひとつでも分岐信号である場合には読出信号を出力せず、そうでない場合、読出信号を出力する。
【００７４】
ラッチ回路８０は、クロックＣＫに同期して命令キャッシュ３０からの検出信号を一旦ラッチし、ＡＮＤゲート８４に与える。したがって、ＡＮＤゲート８４は、最初に命令キャッシュ３０から読出信号がメモリ２２に与えられたのと１クロック遅れてＮＡＮＤゲート８２の出力をセレクタ４８およびＯＲゲート８６に与える。分岐予測命令検出回路６２−１〜６２−ｎからの信号がすべて分岐信号でなければＡＮＤゲート８４から読出信号が出力され、図１に示されるセレクタ４８はカウンタ４６の出力を選択することになる。
【００７５】
さらにＯＲゲート８６は、命令キャッシュ３０からの読出信号とＡＮＤゲート８４の出力との論理和をとり読出信号としてメモリ２２に与える。したがってメモリ２２は、最初に命令キャッシュ３０から指定された読出ブロックの次のブロックを命令レジスタ４０に与える。命令キャッシュ３０は命令レジスタ４０の出力を格納する。
【００７６】
図２に示されるコントロール信号発生回路６４は、メモリ２２に対する読出信号が出力された後、命令レジスタ４０に１ブロックのデータが格納されると、命令キャッシュ３０に対して命令レジスタ４０の出力を格納するコントロール信号を発生して命令キャッシュ３０に与えるためのものである。命令レジスタ４０を介さず直接メモリ１２２の出力を格納してもよい。
【００７７】
ふたたび図２を参照して、分岐予測命令検出回路６２−１〜６２−ｎの少なくとも１つで、対応するレジスタに格納されている命令が分岐予測命令と一致していることが検出された場合、図４に示されるＮＡＮＤゲート８２の出力は読出を指示しない値となる。セレクタ４８に対する選択信号はなく、ＯＲゲート８６からは次の読出信号が与えられない限り読出信号は出力されない。したがって次のブロックの転送は行なわれない。
【００７８】
命令キャッシュにおいては、ＣＰＵから要求されるデータは連続性が高い。したがって現在要求されている次のブロックが要求される可能性は高い。本実施例のように予め命令キャッシュに次のブロックを転送しておげば、キャッシュミスが生じる可能性が低減されシステムの性能向上につながる。また本実施例では、命令解析部４２の動作により、次のブロックを転送することが必要かどうかが予測され、必要な場合にのみ次ブロックの転送が行なわれる。したがって不要なデータの転送を防止することができる。また命令キャッシュ３０が一杯である場合、新たにメモリ２２からデータが転送されると、現在格納されているブロックを消去する必要がある。不要なデータの格納のために、現在格納されているブロックであって、しかも必要となる可能性のあるブロックが消去される恐れが小さくなり、さらにキャッシュミスの確率が低下する。
【００７９】
＜＜第２の実施例＞＞
本発明の第２の実施例について説明する。この第２の実施例では、命令キャッシュから、メモリに対する読出要求があった場合、要求された読出ブロックをメモリから読出して一旦格納する。さらに、格納された読出ブロック内に分岐命令があるかどうかを判定し、分岐命令が存在しない場合には第１の実施例と同様に次のブロックを連続して読出す。分岐命令が存在している場合であっても、その分岐命令が自身のアドレスより大きいアドレスに分岐する前方分岐である場合、およびその分岐命令の分岐先アドレスが当該読出ブロック内または次ブロック内である場合には次ブロックを読出すこととしている。一般に分岐命令が前方分岐の場合には約半分の確率で分岐が生じ、自身のアドレスより小さいアドレスに分岐する後方分岐の場合には多くの場合分岐が生じる。後方分岐の場合、分岐すると予測して分岐予測命令として扱い、前方分岐の場合には分岐しないものとして取扱ってもよい。また分岐命令が存在していたとしても、その分岐先アドレスが読出ブロックまたは次ブロック内であれば次ブロックを予め読出しておくことが有効である。したがってこの第２の実施例により、仮に分岐予測命令が読出されたブロック内に含まれていても、次ブロックを先行読出しておくことが有効であり、キャッシュミスの確率を低下できるという効果がある。
【００８０】
図５はこの発明の第２の実施例である先行読出機能付命令キャッシュメモリの構成を示すブロック図である。同図に示すように、第２の実施例の先行読出機能付命令キャッシュ１００は、図示されないＣＰＵとメモリ２２との間に設けられる。先行読出機能付命令キャッシュ１００は、命令キャッシュ１０４と先行読出制御部１０２とを含む。
【００８１】
命令キャッシュ１０４はデータを格納するデータアレイ部１１２と、格納されているデータがどのブロックのデータであるかを示すタグ部１１４とを含む。
【００８２】
先行読出制御部１０２は、第１の実施例と同様にアドレスレジスタ４４とカウンタ４６とセレクタ４８とを含む。但し、カウンタ４６の出力は本実施例の場合タグ部１１４にも与えられる。先行読出制御部１０２はまた命令レジスタ４０と命令解析部１１０とを含む。命令解析部１１０は命令キャッシュ１０４と命令レジスタ４０とセレクタ４８とに接続され、命令レジスタ４０に格納された読出ブロックに含まれる命令が分岐予測命令か否か、分岐予測命令であったとしてその分岐先が命令レジスタ４０に読出された読出ブロック内またはその次ブロック内か否か、また前方分岐か否かを判定する。
【００８３】
命令解析部１１０は、判定結果に従ってセレクタ４８、メモリ２２、命令キャッシュ１０４を制御して必要であれば次ブロックをメモリ２２から命令キャッシュ１０４に転送する。
【００８４】
命令解析部１１０には、命令キャッシュ１０４のタグ部１１４から、ミス信号１１６が与えられる。ミス信号１１６は、本実施例の場合、カウンタ４６の出力するアドレスに該当するブロックが命令キャッシュ１０４内に存在していない場合に生成される信号である。ミス信号はまた、ＣＰＵからアクセス要求があったブロックが命令キャッシュ１０４内に存在していない場合も発生される。
【００８５】
図６を参照して、命令解析部１１０は、命令１〜命令ｎをそれぞれ格納したレジスタ４０−１〜４０−ｎに対応して設けられたｎ個の次ブロック読出信号発生回路１２０−１〜１２０−ｎと、次ブロック読出信号発生回路１２０−１〜１２０−ｎの出力および命令キャッシュ１０４からの読出信号に応答して、セレクタ４８に対する選択信号およびメモリ２２（図５）に与えるべき読出信号を発生する読出信号発生回路６０と、読出信号発生回路６０の出力と命令キャッシュ１０４からのミス信号１１６とが与えられるＡＮＤゲート１２２と、ＡＮＤゲート１２２の出力に応答して命令キャッシュ１０４に与えるコントロール信号を発生するコントロール信号発生回路６４とを含む。ＡＮＤゲート１２２の出力がメモリ２２に対する読出信号となる。
【００８６】
読出信号発生回路６０は、図２および図４に示される第１の実施例のそれと同じである。したがってここではその詳細については繰返さない。
【００８７】
図７を参照して、次ブロック読出信号発生回路１２０−ｍは、命令ｍが分岐予測命令か否かを検出するための分岐予測命令検出回路１３０と、アドレスレジスタ４４からのアドレスおよび命令ｍの内容とに基づいて分岐先アドレスを計算するための分岐先アドレス計算回路１３２と、アドレスレジスタ４４に格納されているアドレスに１ブロック分を加算する加算器１３４と、アドレスレジスタ４４が格納している読出ブロックのアドレスと分岐先アドレス計算回路１３２により計算されたアドレスのブロックとが一致するか否かを判定するための一致検出回路１３６と、加算器１３４の出力するアドレスと分岐先アドレス計算回路１３２の出力とが一致するか否かを判定するための一致検出回路１３８と、一致検出回路１３６および１３８の出力に２つの入力が接続されたＯＲゲート１４０と、分岐予測命令検出回路１３０の出力とＯＲゲート１４０の出力とに接続された２つの入力を有するＡＮＤゲート１４４と、分岐予測命令検出回路１３０の出力する分岐信号を反転するためのＮＯＴ回路１４２と、ＮＯＴ回路１４２の出力とＡＮＤゲート１４４の出力とに接続された２つの入力を有するＯＲゲート１４６とから構成される。
【００８８】
図８を参照して、分岐予測命令検出回路１３０は、分岐命令を格納するレジスタ１６０と、レジスタ４０−ｍから与えられる命令ｍと分岐命令レジスタ１６０に格納されている分岐命令とが一致するか否かを判定するための一致検出回路１６２と、分岐先アドレス計算回路１３２の出力する分岐先アドレスをアドレスレジスタ４４の格納しているアドレスから減算するための減算器１６４と、一致検出回路１６２の出力および減算器１６４の出力にそれぞれ接続された２つの入力を有するＡＮＤゲート１６６とを含む。ＡＮＤゲート１６６の出力を分岐信号と呼ぶ。なお本実施例の場合、たとえば命令の第１ビットと第２ビットとが“１”の場合に分岐命令であると予め決めておき、それに従って命令セットを指定しておくものとする。したがってこの場合一致検出回路１６２による比較はたとえば第１ビットおよび第２ビットなど、その命令が分岐命令か否かを示すビットのみに対して行なわれる。
【００８９】
図５〜図８を参照してこの第２の実施例は以下のように動作する。命令キャッシュ１０４は、ＣＰＵから要求されたデータがデータアレイ１１２に含まれない場合読出要求信号を命令解析部１１０に与える。同時にミス信号１１６も命令解析部１１０に与える。
【００９０】
図６を参照して、読出信号発生回路６０は与えられた読出信号に応答して読出信号を生成し、ＡＮＤゲート１２２はこの読出信号をメモリ２２に与える。このとき読出信号発生回路６０が発生する選択信号は、セレクタ４８が命令キャッシュ１０４からのアドレスを選択するような値となっている。したがって命令キャッシュ１０４から出力されるアドレスはアドレスレジスタ４４に格納される。
【００９１】
メモリ２２は、命令解析部１１０から与えられる読出信号に応答し、アドレスレジスタ４４で示されるアドレスのデータを１ブロック分、命令レジスタ４０に与える。命令解析部１１０は、図６に示されるコントロール信号発生回路６４により命令キャッシュ１０４に、命令レジスタ４０の内容を格納させる。
【００９２】
図６に示される次ブロック読出信号発生回路１２０−１〜１２０−ｎは各々以下のように動作する。
【００９３】
図７に示される分岐先アドレス計算回路１３２は、命令ｍが分岐命令である場合、アドレスレジスタ４４に格納されているアドレスに基づき命令ｍの分岐先アドレスを計算し、分岐先アドレスのデータが格納されている分岐先ブロックのアドレスを生成する。このアドレスは分岐予測命令検出回路１３０、一致検出回路１３６および１３８に与えられる。
【００９４】
図８を参照して、一致検出回路１６２は、レジスタ４０−ｍに格納されている命令ｍの所定ビットが分岐命令レジスタ１６０に格納されている分岐命令の所定ビットと一致するか否かを判定し、一致する場合には一致信号をＡＮＤゲート６６に与える。
【００９５】
減算器１６４は、アドレスレジスタ４４に格納されているアドレスから分岐先アドレス計算回路１３２から与えられる分岐先アドレスを減算し、結果が正の場合に後方分岐であることを示す信号をＡＮＤゲート１６６に与える。ＡＮＤゲート１６６の出力は分岐信号であり、命令ｍが分岐命令であってかつ後方分岐の場合にのみ出力される。
【００９６】
図７を参照して、一致検出回路１３６および１３８はそれぞれ、分岐先アドレスが、アドレスレジスタ４４に格納されているブロックのアドレスまたはその１ブロック次のアドレスと等しいか否かを判定し、一致している場合にはそれぞれ一致信号をＯＲゲート１４０に与える。したがってＯＲゲート１４０の出力は、分岐先アドレスが読出ブロック内か、次ブロック内である場合にＨレベルとなる。
【００９７】
既に述べたように分岐予測命令検出回路１３０の出力する分岐信号（図８参照）は、命令ｍが分岐命令であってかつ後方分岐の場合のみにＨレベルとなる。したがってＡＮＤゲート１４４の出力は、命令ｍが後方分岐命令であってかつ分岐先アドレスが直前に読出ブロックまたはその次のブロックに存在している場合にＨレベルとなる。ＡＮＤゲート１４４の出力はＯＲゲート１４６に与えられる。
【００９８】
ＮＯＴ回路１４２の出力は、命令ｍが分岐命令でないか、または分岐命令であっても前方分岐である場合にはＨレベルとなる。したがってＯＲゲート４６の出力は、命令ｍが分岐命令であってかつ後方分岐であり、分岐先アドレスが読出ブロックまたはその次のブロック外である場合にのみＬレベルとなる。この場合次ブロックの読出は行なわれない。
【００９９】
再び図６を参照して、命令が後方分岐命令以外であると予測された場合、読出信号発生回路６０は第１の実施例と同様に選択信号を発生してセレクタ４８に与え、また読出信号を発生してＡＮＤゲート１２２に与える。次ブロックのアドレスを示す信号はカウンタ４６から命令キャッシュ１０４のタグ部１１４に与えられる。命令キャッシュ１０４のタグ部１１４は、読出ブロックがデータアレイ１１２に既に格納されているか否かを判定し、存在していない場合にはミス信号１１６を再びＡＮＤゲート１２２に与える。この場合読出信号がＡＮＤゲート１２２を介してメモリ２２に与えられ、さらにコントロール信号がコントロール信号発生回路６４により発生されて命令キャッシュ１０４に与えられる。既に次ブロックが命令キャッシュ内に格納されている場合にはミス信号１１６は与えられない。したがって読出信号は発生されず、次のブロックの転送も行なわれない。これにより、既に命令キャッシュに格納されているブロックをメモリから転送するという無駄な動作を防ぐことができる。なお、ＡＮＤゲート１２２を設げず、ミス信号に関係なく読出を行なっても、先行読出自体は同様に行なえる。
【０１００】
以上のようにこの第２の実施例によれば、命令が分岐予測命令であっても、分岐先がアクセス要求されている読出ブロックまたはその次のブロックである場合には、次のブロックをメモリからキャッシュに転送するための制御信号が生成される。したがって分岐予測命令であっても、分岐先アドレスによってはブロックの先行読出を行なうことができ、キャッシュミスの確率を低下できる。また、命令が分岐命令であって前方分岐の場合にも同様に次ブロックを読出す制御信号が生成される。そのため後方分岐の分岐命令を分岐予測命令として扱うことができ、無駄なブロックの転送を少なくすることが可能になる。
【０１０１】
＜＜第３の実施例＞＞
第３の実施例は、命令として、次のブロックをメモリからキャッシュにロードする命令を予め用意しておく実施例である。本実施例については、命令解析部についてのみそのブロック図を示す。他の部分の構成は第１及び第２の実施例と同様である。予め次ブロックの内容をメモリから読みだすことを指示する次ブロックロード命令を特定しておき、必要に応じて次ブロックロード命令を命令中に挿入しておくことにより、読出されたブロック中に次ブロックロード命令がある場合、次のブロックを命令キャッシュに転送できる。したがって次ブロックロード命令を効果的に命令中に配置することにより、キャッシュミスの低下を防ぐことができる。
【０１０２】
図９はこの発明の第３の実施例である先行読出機能付命令キャッシュメモリの命令解析部周辺の構成を示すブロック図である。同図に示すように、第３の実施例の先行読出機能付命令キャッシュの命令解析部１８０は、命令１〜命令ｎにそれぞれ対応して設けられたｎ個の分岐予測命令検出回路１８２−１〜１８２−ｎと、分岐予測命令検出回路１８２−１〜１８２、ｎの出力に接続されたｎ個の入力を有するＯＲゲート１８４と、ＯＲゲート１８４の出力に接続され、命令キャッシュをコントロールするコントロール信号を発生するためのコントロール信号発生回路６４と、ＯＲゲート１８４の出力と命令キャッシュからの読出信号とが与えられる２つの入力を有するＯＲゲート１８６とを含む。ＯＲゲート１８６の出力はメモリ２２に対する読出信号となる。またＯＲゲート１８４の出力はセレクタ４８に対する選択信号である。
【０１０３】
図１０を参照して次ブロックロード命令検出部１８２−ｍは、次ブロックロード命令を格納したレジスタ１９２と、命令ｍと次ブロックロード命令とが一致するか否かを検出し、一致した場合に次ブロックロード信号を発生するための一致検出回路１９４とを含む。
【０１０４】
図９および図１０を参照してこの第３の実施例の先行読出機能付命令キャッシュの命令解析部は以下のように動作する。
【０１０５】
命令キャッシュから読出要求が発生した場合、ＯＲゲート１８６を介してその読出信号はメモリ２２に与えられる。メモリ２２から１ブロック分の命令が命令レジスタ４０に転送され、さらに命令キャッシュに転送される。
【０１０６】
図１０を参照して、次ブロックロード命令検出部１８２−１〜１８２ｎの各々においては、一致検出回路１９４が、命令ｍと次ブロックロード命令とが一致するか否かを判定し、一致する場合に次ブロックロード信号を生成して図９に示すＯＲゲート１８４に与える。
【０１０７】
ＯＲゲート１８４は、次ブロックロード信号が１つでも検出された場合、ＯＲゲート１８６を介してメモリ２２に対する読出信号を与える。同じくＯＲゲート１８４の出力はセレクタ４８に対する選択信号となる。セレクタ４８は、第１の実施例および第２の実施例と同様に命令キャッシュから最初に与えられた読出ブロックの次のアドレスのブロックを選択してアドレスレジスタ４４（図１参照）に与え、したがって次ブロックが命令キャッシュに転送されることになる。
【０１０８】
１つも次ブロックロード命令が検出されなかった場合、ＯＲゲート１８４から読出信号は発生されず、したがって次ブロックの転送は行なわれない。
【０１０９】
なおコントロール信号発生回路６４は、上述した最初のブロックと次ブロックとの命令キャッシュへの格納タイミングを制御するコントロール信号を発生して命令キャッシュに与えるためのものである。
【０１１０】
以上のようにこの第３の実施例によれば、読出されたブロックに含まれる命令が分岐予測命令であるか否かを判定する必要がなく、高速に次のブロックをメモリからキャッシュに転送する信号を生成することができる。並列動作が可能なマシンの場合、並列に実行できる命令は限られている。そのため多くのサイクルにおいて、使用されていないユニットがマシン内に存在する。そのユニットを利用し、次のブロックをメモリからキャッシュに転送することを指示する命令を実行することができる。このように構成することにより、命令が分岐予測命令であるか否かを判定する必要がなく、高速に次のブロックをメモリからキャッシュに転送する信号を生成することができ、また次ブロックロード命令を予め適切な箇所に配置しておくことにより、キャッシュミスが発生する確率を低くすることができる。
【０１１１】
＜＜第４の実施例＞＞＞
図１１はこの発明の第４の実施例である先行読み出し機能付命令キャッシュメモリの構成を示すブロック図である。同図において、メモリ２２は、記憶階層の下位の部分を構成する記憶装置であり、命令キャッシュ３０は、上位の部分を構成する記憶装置で、特に、命令のみを記憶し、ＣＰＵによる命令の実行速度と、メモリ２２からの読み出し速度との相違をバッファリングするために設けられたものである。
【０１１２】
命令キャッシュ３０は、ＣＰＵのアクセス要求で指示されたブロックのデータが命令キャッシュ３０内にない場合、コントロール信号として読出要求と、そして読み出したいブロックを示す読出アドレスを読出制御部３に出力する。また、命令キャッシュ３０は、ＣＰＵのアクセス要求で指示されたブロックのデータが命令キャッシュ３０内に存在する場合、読出要求及び読出アドレスを出力することなく、ブロックのデータをＣＰＵが接続されるデータバスに出力する。
【０１１３】
読出制御部３は、メモリ２２から読み出したい命令を含むブロックのアドレスを格納するアドレスレジスタ４４と、与えられる選択信号に応答して、命令キャッシュ３０または、命令解析部５から与えられる分岐先アドレスの出力を選択してアドレスレジスタ４４に与えるセレクタ３３と、アドレスレジスタ４４に格納された値により指定されるアドレスから読みだされた１ブロックの命令を一旦格納し、命令キャッシュに与える命令レジスタ４０と、命令レジスタ４０に格納された１ブロックに分岐命令が含まれるか否かを検出し、含まれる場合には、分岐先アドレスを計算し、セレクタ３３、メモリ２２および命令キャッシュ３０を制御して、必要な命令が含まれるブロックをメモリ２２から命令キャッシュ３０に転送させるための命令解析部５とから構成される。なお、読出制御部３のうち、命令解析部５以外の部分が分岐先ブロック読出手段に相当する。
【０１１４】
以下に、ＣＰＵから、命令キャッシュ内にないデータを要求され、命令キャッシュにおいてメモリからのブロックの読み出しが発生した場合の動作を説明する。
【０１１５】
１．命令キャッシュ３０は、要求された命令の読み出しアドレスをセレクタ３３及びアドレス・レジスタ４４を経由して、メモリ２２に読み出しを所望するアドレスを送信し、また、読出要求を命令解析部５を経由してメモリ２２に送信する。
【０１１６】
２．メモリ２２から読みだされた読出ブロックは、命令レジスタ４０に記憶された後、命令キャッシュ３０に転送される。命令解析部５は、命令レジスタ４０に格納されている命令の中から分岐命令の存在の有無を解析し、分岐命令がある場合、命令によって（ＰＣ相対命令などの場合）は、アドレスレジスタ４４の値を参照して分岐先アドレスを計算する。また、命令解析部５は、分岐先アドレスのブロック（分岐先ブロック）をメモリ２２から命令キャッシュ３０に転送するか否かの制御信号を命令キャッシュ３０に出力し、メモリ２２に対し読み出しを制御する読出信号を出力し、セレクタ３３には、どのアドレスをアドレスレジスタ４４に格納するかを選択するアドレス選択信号を出力する。
【０１１７】
３．メモリ２２は、命令解析部５から与えられた読出信号に従って、アドレスレジスタ４４に格納されているアドレスのブロックを命令レジスタ４０を介して命令キャッシュ３０に転送する。
【０１１８】
４．以下、命令キャッシュ３０から読出要求があるか、命令レジスタ４０に格納したブロックに分岐命令が存在しなくなるまで、上記３．〜５．の動作を繰り返す。
【０１１９】
命令キャッシュにおいては、読出信号により取り込んだ読出ブロックに分岐命令が含まれている場合、分岐先の命令を含む分岐先ブロックがキャッシュ内にない場合が多い。従って、第４の実施例の先行読み出し機能付命令キャッシュメモリのように、あらかじめ分岐先ブロックをメモリから命令キャッシュに転送しておけば、キャッシュ・ミスが生じる可能性が低減され、システムの性能向上につながる。
【０１２０】
＜命令解析部＞
図１２は命令解析部５の内部構成を示すブロック図である。
【０１２１】
一般に、分岐命令には、絶対アドレス分岐、ＰＣ（プログラムカウンタ）相対分岐、レジスタ間接分岐などが存在する。本発明が対象とする分岐命令は、絶対アドレス分岐及びＰＣ相対分岐である。絶対アドレス分岐の命令コードは、絶対アドレス分岐であることを示すオペコードと分岐先アドレスで構成される。ＰＣ相対分岐の命令コードは、ＰＣ相対分岐であることを示すオペコードと、分岐命令と分岐先の命令のアドレス差であるオフセットで構成される。
【０１２２】
命令レジスタ４０はｎ個の命令１〜ｎをそれぞれ格納するレジスタ４０−１〜４０−ｎで相成される。命令解析部５は、それぞれレジスタ４０−１〜４０−ｎに接続され、分岐命令が含まれるか否かを検出し、含まれる場合、どの種類の分岐命令であるかと分岐先アドレスまたはオフセットを検出するための分岐命令解析回路２２０−１〜２２０−ｎと、分岐命令解析回路２２０−１〜２２０−ｎの出力に応答して、アドレスレジスタ４４の出力と、分岐命令解析回路２２０−１〜２２０−ｎから得られる分岐情報を利用して分岐先アドレスを計算し、分岐先命令読出信号を発生するアドレス生成回路４１と、アドレス生成回路４１の出力と命令キャッシュ３０からの読出要求とに応答して、セレクタ３３に対する選択信号とメモリ２２に対する読出信号を出力する読出信号発生回路４９と、読出信号発生回路４９の出力に応答して、命令キャッシュ３０への制御信号を発生するためのキャッシュ制御信号発生回路４３を含む。図１２に示す分岐命令解析回路２２０−１〜２２０−ｎはそれぞれ同一の構成を呈する。以下、ｍは、１〜ｎの任意の整数を表すものとする。
【０１２３】
以下に、これらの動作を説明する。基本的な動作は、命令解析部５において、命令レジスタ４０に格納された読出ブロックの内容を解析し、分岐命令があるか否かを判断し、分岐命令がある場合、分岐先アドレスを計算し、その命令を含むブロックをメモリ２２から命令キャッシュ３０に転送する制御信号を生成する。以下に詳しく説明する。
【０１２４】
１．分岐命令解析回路２２０−ｍは、命令レジスタ４０−ｍに格納されている命令を解析し、分岐命令であるか否かを検出し、分岐命令である場合、その分岐命令が、ＰＣ相対分伎、絶対アドレス分岐、それ以外を判定し、分岐命令の種類と、ＰＣ相対分岐の場合はオフセットを分岐先情報とし、絶対アドレス分岐の場合は分岐アドレスを分岐先情報として、アドレス生成回路４１に転送する。この際、ＰＣ相対分岐、絶対アドレス分岐以外の分岐の場合は、分岐先アドレスが計算できないため、分岐命令以外と同様の扱いを行なう。
【０１２５】
２．アドレス生成回路４１は、分岐命令解析回路２２０−１〜２２０−ｎから与えられた分岐先情報とアドレスレジスタ４４の出力を利用して、分岐先アドレスを計算する。ＰＣ相対分岐の場合は、分岐命令のアドレス＋オフセットを、絶対アドレス分岐の場合は、分岐先情報によって得られたアドレスを分岐先アドレスとする。また、分岐命令解析回路２２０−１〜２２０−ｎの出力を利用して、分岐命令（ＰＣ分岐、絶対アドレス分岐）が含まれる場合、分岐先の命令を含む分岐先ブロックをメモリ２２から読みだすための分岐先命令読出信号を生成する。分岐命令以外の命令のみ場合、分岐先命令読出信号は生成しない。
【０１２６】
３．読出信号発生回路４９は、命令キャッシュ３０からの読出要求と、アドレス生成回路４１の出力である分岐先命令読出信号とに基づき、メモリ２２に対する読出要求を出力する。また、命令キャッシュ３０からの読出要求がある場合は、命令キャッシュ３０から与えられるアドレスを選択し、分岐先命令読出信号が生成されている場合、アドレス生成回路４１の出力である分岐先アドレスの選択を指示する選択信号をセレクタ３３に送信する。ただし、命令キャッシュ３０からの読出要求はアドレス生成回路４１からの分岐先命令読出信号より優先する。
【０１２７】
４．キャッシュ制御信号発生回路４３は、読出信号発生回路４９から読出信号を受け取り、命令キャッシュ３０を制御する制御信号を命令キャッシュ３０に出力する。
【０１２８】
図１３は分岐命令解析回路２２０の内部構成を示すブロック図であり、図１４は解析部５１の内部構成を示すブロック図である。
【０１２９】
以下、分岐命令解析回路２２０−ｍの構成を図１３を用いて説明する。図１３に示すように、分岐命令解析回路２２０−ｍは、命令レジスタ４０−ｍに格納されている命令をデコードし、オペコードと分岐先アドレスを計算するための絶対アドレスあるいはオフセットを生成するデコード回路５０と、オペコードを受取り、命令が絶対分岐か、ＰＣ分岐か、それ以外かを解析する解析部５１とからなる。
【０１３０】
解析部５１は、図１４に示すように、絶対分岐命令のオペコードを記憶する記憶部５２と、ＰＣ相対分岐命令のオペコードを記憶する記憶部５３と、記憶部５２の出力とデコード回路５０から出力されるオペコードを入力とする比較回路５４と、記憶部５３の出力とオペコードとを入力する比較回路５５と、比較回路５４の出力結果と比較回路５５の出力結果を入力とし、比較回路５４の出力と比較回路５５の出力のどちらかが“１”の場合に“０”を出力するＸＮＯＲゲート５６とからなる。種類を表す信号は、比較回路５４、５５、ＸＮＯＲゲート５６それぞれの出力を合わせて３ビットにし、比較回路５４の出力は第１ビット、比較回路５５の出力は第２ビット、ＸＮＯＲゲート５６の出力は第３ビットとして命令の種類を表す。即ち、信号の値が“１”の場合は、絶対分岐、”２”の場合は、ＰＣ相対分岐、”４”の場合は、分岐命令でないことを表す。
【０１３１】
以下に、これらの動作を説明する。
【０１３２】
１．デコード回路５０は、命令レジスタ４０−ｍの命令をデコードし、オペコードと分岐先アドレスを計算するための絶対アドレスもしくはオフセットを生成する。このデコード回路５００は、ＣＰＵ内のデコード回路から、分岐命令を検出し、絶対アドレスもしくはオフセットを検出する機能のみを取り出して簡単化したもので十分である。
【０１３３】
２．解析部５１では、比較回路５４によって、デコード回路５０から得られるオペコードと記憶部５２に記憶されている絶対分岐命令のオペコードとを比較する。また、比較回路５５によって、デコード回路５０から得られるオペコードと記憶部５３に記憶されている相対分岐命令のオペコードとを比較する。分岐命令が絶対分岐の場合は、比較回路５４の出力が“１”となり、ＰＣ相対分岐の場合は、比較回路５５の出力が“１”となり、それ以外の場合は、ＸＯＲゲートの出力が“１”となる。これらの信号は、命令の種類を表す信号としてアドレス生成回路４１へ送られる。
【０１３４】
図１５はアドレス生成回路４１の内部構成を示すブロック図である。同図に示すように、アドレス生成回路４１は、アドレスレジスタ４４と分岐命令解析回路２２０−１〜２２０−ｎの出力にしたがって、分岐先のアドレスを生成する分岐先アドレス生成回路１１−１〜１１−ｎと分岐先アドレス生成回路１１−１〜１１−ｎより得られる分岐先アドレスの１つを分岐命令解析回路２２０−１〜２２０−ｎの出力にしたがって選択するセレクタ２６４、と分岐命令解析回路２２０−１〜２２０−ｎの出力にしたがって読出信号を生成する読出回路２６５とからなる。分岐先アドレス生成回路１１−ｍは、アドレスレジスタ４４の値と、ｍを加算する加算器２６１と、加算器２６１の出力結果とオフセットとを加算する加算器２６２と、分岐命令解析回路２２０−ｍから得られた命令の種類を示す信号にしたがって加算器２６２の出力結果か絶対アドレスを選択するセレクタ２６３からなる。
【０１３５】
以下、アドレス生成回路４１の動作を説明する。
【０１３６】
１．命令レジスタ４０−ｍに格納されている命令が分岐命令である場合、分岐先アドレスは、分岐先アドレス生成回路１１−ｍで計算される。加算器２６１は、アドレスレジスタ４４に格納されている命令レジスタ内にある読出ブロックのアドレスと、命令が格納されているレジスタの番号ｍを加算する。これは、分岐命令のアドレスを知るためである。加算器２６２は、加算器２６１の出力と、分岐命令解析回路２２０−ｍより得られたオフセットを加算し、分岐先アドレスを計算する。セレクタ２６３では、命令がＰＣ分岐の場合加算器２６２の出力を、絶対アドレス分岐の場合は、分岐命令解析回路２２０−ｍの出力である絶対アドレスを選択する。
【０１３７】
２．セレクタ２６４は、分岐先アドレス生成回路１１−１〜１１−ｎの出力の中から、分岐命令解析回路２２０−１〜２２０−ｎの命令の種類を表す信号にしたがって、分岐先アドレスを選択する。例えば、命令ｋが分岐命令である場合、４０−ｋの分岐命令の種類を表す信号が“１”または、”２”になる。セレクタ２６４は、この信号にしたがって、分岐先アドレス生成回路１１−ｋの出力結果を分岐先アドレスとして選択する。
【０１３８】
３．読み出し回路２６５は、分岐命令解析回路２２０−１〜２２０−ｎの出力である命令の種類の信号の中に、一つでも分岐命令であることを示す信号があれば、分岐先の命令を読みだす必要があることを示す分岐先読出信号を生成する。
【０１３９】
図１６は読出信号発生回路４９の内部構成を示すブロック図である。同図に示すように、読出信号発生回路４９は、命令キャッシュ３０より与えられる読出要求を一旦ラッチするラッチ８０と、アドレス生成回路４１から出力される分岐先読出信号とラッチ８０の出力とに接続されたＡＮＤゲート８４と、ＡＮＤゲート８４の出力と、命令キャッシュ３０からの読出要求とが与えられるＯＲゲート８６とから構成される。ＡＮＤゲート８４からの出力が、セレクタ３３に対する選択信号、ＯＲゲート８６の出力がメモリ２２に対する読出信号となる。なお、ラッチ８０はＣＰＵ１８の動作用のクロックＣＫをさらに受け、このクロックＣＫに同期して命令キャッシュ３０から得られる読出要求を記憶する。
【０１４０】
以下、読出信号発生回路４９の動作を説明する。
【０１４１】
１．ラッチ８０は、命令キャッシュ３０からの読出要求を一旦ラッチし、ＡＮＤゲート８４に与える。従って、ＡＮＤゲート８４は、最初に命令キャッシュ３０から読出要求がメモリ２２に与えられたのと１クロック遅れてアドレス生成回路４１から得られる分岐先読出信号をセレクタ３３およびＯＲゲート８６に与える。アドレス生成回路４１の分岐先読出信号が真ならば、ＡＮＤゲート８５から読出信号が出力され、セレクタ３３は、分岐先アドレスを選択することになる。
【０１４２】
２．ＯＲゲート８６は、命令キャッシュ３０からの読出要求とＡＮＤゲート８５の出力との論理和を取り、読出信号としてメモリ２２に与える。従って、メモリ２２は、最初、命令キャッシュ３０から読出要求があったブロックを命令レジスタ４０にあたえ、命令キャッシュ３０は、命令レジスタ４０の出力を格納する。次に、命令レジスタ４０に格納された命令の中に分岐命令があった場合、メモリ２２は、分岐先ブロックを命令レジスタ４０に与え、命令キャッシュ３０は、命令レジスタ４０の出力を格納する。
【０１４３】
図１２に示されたキャッシュ制御信号発生回路４３は、命令キャッシュ３０からメモリ２２に対する読出要求が出力された後、命令レジスタ４０に１ブロックのデータが格納されると、命令キャッシュ３０に対して命令レジスタ４０の出力を格納する制御信号を発生するためのものである。このとき、命令レジスタ４０を介さずに直接メモリ２２の出力を格納するように構成してもよい。
【０１４４】
命令キャッシュにおいては、分岐が生じると、分岐先の命令がキャッシュ内に格納されていない可能性が高い。そこで、第４の実施例の先行読出機能付命令キャッシュメモリのように、あらかじめ命令キャッシュに分岐先の命令を転送しておけば、キャッシュミスが生じる可能性が低減され、システムの性能向上につながる効果を奏する。
【０１４５】
さらに、読出ブロックに存在する分岐命令が分岐する確率が高い絶対分岐命令あるいはＰＣ相対分岐命令のときに、分岐先ブロックを主記憶であるメモリ２２から命令キャッシュ３０に転送するようにすることにより、効率的に命令キャッシュ３０に分岐先ブロックを取り込むことができる。
【０１４６】
＜＜第５の実施例＞＞
分岐先の命令を含む分岐先ブロックが既にキャッシュ内にある場合は、メモリ２２からブロックを読みだす必要がない。このように構成することにより分岐先の命令を含むブロックがキャッシュ内にあるかどうかを検知し、既に存在する場合は、読み出しを行なわないように制御できる。
【０１４７】
図１７はこの発明の第５の実施例である先行読み出し機能付命令キャッシュメモリの構成を示すブロック図である。同図に示すように、読出制御部４はセレクタ３３からレジスタ４４に転送される読出アドレスと命令解析部６からの読出要求とがＣＰＵ１８からアクセス要求と等価な疑似アクセス要求として命令キャッシュ３０に出力される。なお、他の構成は図１１で示した第４の実施例の先行読出機能付命令キャッシュメモリと同様である。
【０１４８】
図１８は図１７の命令解析部６及びセレクタ３３の内部構成を示すブロック図である。
【０１４９】
上記した機能を実現するために、セレクタ３３の出力であるアドレスと命令解析部６内のアドレス生成回路４１から出力される分岐先読出信号とを、通常ＣＰＵ１８から与えられる命令キャッシュ３０へのアクセス要求と等価な疑似アクセス要求として与える。さらに、アドレス生成回路４１から出力される分岐先読出信号は、選択信号としてセレクタ３３に与えられるがメモリ２２には与えられない。また、読出信号発生回路４９が取り除かれる。他の構成は図１２で示した第４の実施例の命令解析部５と同じである。
【０１５０】
第５の実施例の命令解析部６の基本的な動作は、図１２と同様である。異なる点を以下に示す。
【０１５１】
１．アドレス生成回路４１で計算された分岐先アドレスは、分岐先読出信号にを受けるセレクタ３３で選択され、命令キャッシュ３０へ送られる。また、アドレス生成回路４１の出力である分岐先読出信号は命令キャッシュ３０に送られる。すなわち、アドレス生成回路４１から出力される分岐先読出信号及び分岐先アドレスが疑似アクセス要求てして命令キャッシュ３０に送られる。
【０１５２】
疑似アクセス要求により、命令キャッシュ３０は、命令キャッシュ３０内に分岐先アドレスを含む分岐先ブロックが存在しない場合は、通常のキャッシュミス動作を行い、読出要求を命令解析部６に出力し、読出アドレスをセレクタ３３に出力することにより、メモリ２２から分岐先ブロックの内容を取り込む。
【０１５３】
２．一方、命令キャッシュ３０に分岐先ブロックが存在する場合に、読出要求及び読出アドレスが出力されないため、分岐先ブロックがメモリ２２から取り込まれることはない。
【０１５４】
このように第５の実施例は、命令解析部６を構成することにより、読出ブロック内に分岐命令が存在し、かつ命令キャッシュ３０内に分岐先アドレスを含む分岐先ブロックが存在しない場合に、はじめて分岐先ブロックをメモリ２２から命令キャッシュ３０に転送している。
【０１５５】
その結果、既に分岐先ブロックが命令キャッシュ３０に存在するにもかかわらずメモリ２２〜命令キャッシュ３０への分岐先ブロックのメモリアクセスが行なわれないため、効率的なメモリアクセスを行うことができる。
【０１５６】
＜＜第６の実施例＞＞
図１９はこの発明の第６の実施例である先行読出機能付命令キャッシュメモリの読出信号発生回路４９を示すブロック図である。なお、第６の実施例の全体構成は図１１で示した第４の実施例の構成と同様であり、命令解析部５の内部構成は図１２で示した第４の実施例と同様である。
【０１５７】
分岐先ブロックが、現在読み出している読出ブロックと等しい場合もありうる。この場合に、もう一度同じブロックを読みだすことは無駄である。第６の実施例の先行読出機能付命令キャッシュメモリは、この無駄を省く機能を付けたものである。
【０１５８】
基本的な構成は、図１１で示した第１の実施例の先行読出機能付命令キャッシュメモリと同じであるが、図１１のアドレス生成回路４１の出力である分岐先アドレスと、アドレスレジスタ４４の出力を読出信号発生回路４９の入力として付加する必要がある。
【０１５９】
図１６で示した第１の実施例の読出信号発生回路４９との相違点を図１９を用いて説明する。第６の実施例の読出信号発生回路４９は、図１６の読出信号発生回路４９の構成に、アドレスレジスタ４４の出力とアドレス生成回路４１の出力である分岐先アドレス入力とする比較回路７３と、比較回路７３の出力の否定とＡＮＤゲート８５の出力を入力とし、ＯＲゲート８６に接続されるＡＮＤゲート８４を付加した構成である。
【０１６０】
基本的な動作は、図１６の読出信号発生回路４９と同様である。異なる点を以下に示す。
【０１６１】
１．比較回路７３は、アドレス生成回路で計算された分岐先アドレスとアドレスレジスタ内のアドレスを比較する。比較回路７３の出力は、信号を反転させて、ＡＮＤゲート８４に与えられる。
【０１６２】
２．ＡＮＤゲート８４は、ＡＮＤゲート８５の出力と比較回路７３の出力の反転された信号の論理積を取り、アドレスが等しくなく、かつ、読出ブロック内に分岐命令を含む場合、分岐先の命令を読みだすための読出信号を発生させる。この信号は、セレクタ３３への選択信号となる。
【０１６３】
３．ＯＲゲート８６は、ＡＮＤゲート８４の出力と、ラッチ８０の論理和を取り、命令キャッシュ３０からの読出信号がある場合と、命令キャッシュからの読出信号があった次のサイクルで、分岐先命令を含む分岐先ブロックを読みだす必要がある場合に、メモリ２２に対する読出信号を発生させる。
【０１６４】
このように第６の実施例は、読出信号発生回路４９を構成することにより、第４の実施例の効果に加え、現在読み出している読出ブロックに分岐先の命令が含まれる場合、無駄なメモリアクセスを行なう必要がなくなり、次に続くメモリアクセスに影響することがない。したがって、より効率的に分岐先ブロックを命令キャッシュ３０に転送することができる。
【０１６５】
＜＜第７の実施例＞＞
図２０はこの発明の第７の実施例である先行読出機能付命令キャッシュメモリの分岐命令解析回路２２０−ｍに含まれる解析部５１の構成を示すブロック図である。なお、第７の実施例の全体構成は図１１で示した第４の実施例の構成と同様であり、命令解析部５の内部構成は図１２で示した第４の実施例と同様である。
【０１６６】
分岐先命令は、必ず分岐する訳ではない。分岐しない場合、分岐先の命令をキャッシュに取り込む必要はない。また、分岐命令が分岐するか否かはある程度予測できる。そこで、分岐命令があると必ず分岐先の命令を含む分岐先ブロックをキャッシュに読み込むのではなく、ある程度予測して、必要と思われる場合にのみ読み込む機能を付加したのが第７の実施例である。
【０１６７】
基本的な構成は、図１４で示した第１の実施例の解析部５１と同じである。図１４の解析部５１との相違点を図２０を用いて説明する。第７の実施例の解析部５１は、図１４の構成に、デコード回路５０の出力であるオペコードを入力とし、分岐予測信号を発生する分岐予測回路５９と、分岐予測信号と比較回路５４の出力を入力とし論理積を出力するＡＮＤゲート５７と分岐予測信号と比較回路５５の出力を入力とし論理積を出力するＡＮＤゲート５８とを付加したものである。そして、ＡＮＤゲート５７及び５８それぞれの出力がＸＮＯＲゲート５６の入力となる。したがって、種類を表す信号は、ＡＮＤゲート５７、５８、ＸＮＯＲゲート５６それぞれの出力を合わせて３ビットにし、ＡＮＤゲート５７の出力は第１ビット、ＡＮＤゲート５８の出力は第２ビット、ＸＮＯＲゲート５６の出力は第３ビットとして命令の種類を表す。即ち、信号の値が“１”の場合は、絶対分岐、”２”の場合は、ＰＣ相対分岐、”４”の場合は、分岐命令でないことを表す。
【０１６８】
基本的な動作は、図１４の解析部５１の動作と同様である。異なる点を以下に示す。
【０１６９】
１．分岐予測回路５９は、オペコードを調べ、分岐すると予測できる場合、分岐予測信号を生成する。
【０１７０】
２．ＡＮＤゲート５７は、オペコードが絶対分岐と等しいか否かを比較する比較回路５４の出力と、分岐予測信号の論理積を取り、オペコードが絶対分岐命令であり、分岐すると予測される場合、分岐先ブロックの読み出しが必要な絶対分岐命令であることを示す信号を発生する。
【０１７１】
３．ＡＮＤゲート５８は、オペコードがＰＣ相対分岐と等しいか否かを比較する比較回路５５の出力と、分岐予測信号の論理積を取り、オペコードがＰＣ相対分岐であり、分岐すると予測される場合、分岐先ブロックの読み出しが必要なＰＣ相対分岐命令であることを示す信号を発生する。
【０１７２】
以下、分岐予測回路５９の内部構成を図２１を用いて説明する。図２１においては、分岐予測命令をあらかじめ定めておく。分岐予測回路５９は、分岐予測命令を記憶する記憶部２８１と、記憶部２８１の出力とオペコードとを入力とする比較回路２８２とから構成される。
【０１７３】
以下に、分岐予測回路５９の動作を説明する。
【０１７４】
１．分岐することが予測される分岐命令であることを意味する、分岐予測命令を予め設定しておく。例えば、命令のビット列の第１ビットから第３ビットまでが１の場合は、分岐予測命令であると定める。
【０１７５】
２．分岐予測命令を格納する記憶部２８１においては、あらかじめ定められた分岐予測命令を格納しておく。例えば、１．で定めたように命令の第１ビットから第３ビットまでが１の場合に分岐予測命令であるとすると、記憶部２８１においては第１ビットから第３ビットまでが、１であるデータを記憶しておく。
【０１７６】
３．比較回路２８２においてては、オペコードと、記憶部２８１の値とを比較し、命令が分岐予測命令である場合、分岐予測信号を生成する。例えば、上記したように分岐予測命令を設定した場合、比較回路２８２においてオペコードの第１ビットと記憶部２８１の第１ビットを比較、同様に第２ビット、第３ビットを比較し全てが一致していたら分岐予測命令であると判断し、分岐予測信号を生成する。
【０１７７】
このように、命令として分岐予測命令を作成し、分岐予測回路を図２１のように構成することにより、命令が、あらかじめ定められた分岐予測命令であるか否を検出できる。
【０１７８】
第７の実施例の先行読出機能付命令キャッシュメモリは、以上の機能を付加することにより、分岐命令が分岐しないと予測される場合に、分岐先ブロックをメモリから読みだすことがなく、無駄なメモリアクセスが行なわれず、次に続くメモリアクセスに影響することがない。したがって、より効率的に分岐先ブロックを命令キャッシュ３０に転送することができる。
【０１７９】
＜＜第８の実施例＞＞
図２２はこの発明の第８の実施例である先行読出機能付命令キャッシュメモリの分岐予測回路５９の構成を示すブロック図である。なお、第８の実施例の全体構成は図１１で示した第４の実施例の構成と同様であり、命令解析部５の内部構成は図１２で示した第４の実施例と同様である。
【０１８０】
一般に、分岐命令が前方分岐の場合には、約５０％の確率で分岐が生じ、後方分岐の場合には、かなり高い確率で分岐が生じる。そのため、後方分岐の場合、分岐すると予測して、分岐予測命令として扱ってもよい。図２２は、分岐命令が後方分岐である場合、分岐予測信号を発生するものである。
【０１８１】
この機能を実現するためには、図２０で示した解析部５１の構成において、分岐予測回路５９に対し、図１１のアドレスレジスタ４４の出力と、図１３のデコード回路５０の出力である絶対アドレスまたは、オフセットがをさらに入力される。図２２で示す第８の実施例の分岐予測回路５９は、図１１で示したアドレスレジスタ４４の出力と図１３で示したデコード回路５０の出力とを入力とし、減算結果を図２０のＡＮＤゲートに接続する減算器２８３と、図１３のデコード回路５０の出力を入力とし、比較結果を図２０のＡＮＤゲート５８に接続する比較器２８４とからなる。
【０１８２】
以下に、この回路の動作を説明する。
【０１８３】
１．減算器２８３は、図１１のアドレスレジスタ４４の出力である分岐先ブロックのアドレスから、図１３のデコード回路５０の出力である絶対アドレスを減算して、正の値ならば、後方分岐であるとして分岐予測信号を図２０のＡＮＤゲート５７に出力する。
【０１８４】
２．比較器２８４は、図１３のデコード回路５０の出力であるオフセットが負の値であるかどうかを比較し、負の値ならば、後方分岐であるとして分岐予測信号を図２０のＡＮＤゲート５８に出力する。
【０１８５】
一般に、分岐命令が前方分岐の場合は約５０％の確率で分岐が生じ、後方分岐の場合はかなり高い確率で分岐が生じる。そのため、後方分岐の場合、分岐すると予測し、分岐予測命令として扱う。このように構成することにより、第８の実施例の分岐予測回路５９は、第７の実施例の分岐予測回路５９のようにあらかじめ分岐予測命令を設定することなく、第７の実施例と同様の効果を得ることができる。
【０１８６】
＜＜第９の実施例＞＞
図２３はこの発明の第９の実施例である先行読出機能付命令キャッシュメモリの分岐予測回路５９の構成を示すブロック図である。なお、第９の実施例の全体構成は図１１で示した第４の実施例の構成と同様であり、命令解析部５の内部構成は図１２で示した第４の実施例と同様である。
【０１８７】
予め、分岐先ブロックを主記憶から読みだす可能性の高い分岐命令に、分岐先ブロックを主記憶から読みだすことを規定する分岐情報ビットを付加しておく。そして、命令解析部５は、分岐命令に分岐情報ビットが立っているか否かを検出し、その結果に基づいて分岐予測信号を出力するが第９の実施例である。
【０１８８】
この機能を実現するためには、図２３で示す第９の実施例の分岐予測回路５９は、オペコード中の１ビット（分岐情報ビット）を入力とし、その分岐情報ビットが“１”であるか否かを比較して、その比較結果に基づき分岐予測信号を出力する比較回路２８５から構成される。
【０１８９】
したがって、第９の実施例の分岐予測回路５９は以下のように動作する。
【０１９０】
比較器２８５は、オペコードが“１”であるかどうかを比較し、“１”であれば分岐予測信号を出力し、そうでなければ分岐予測信号を出力しない。
【０１９１】
このように構成することにより、第９の実施例の分岐予測回路５９は、１ビットのオペコードを比較するだけで分岐予測信号を出力することができ、第７及び第８の実施例と同様の効果を得ることができる。
【０１９２】
＜＜第１０実施例＞＞
図２４はこの発明の第１０の実施例である先行読出機能付命令キャッシュメモリにおける分岐命令解析回路２２０−ｍと読出信号発生回路４９の構成を示すブロック図である。なお、第１０の実施例の全体構成は図１１で示した第４の実施例の構成と同様であり、命令解析部５の内部構成は図１２で示した第４の実施例と同様である。
【０１９３】
第１０の実施例においては、あらかじめ分岐先ブロックを読みだすことを示す先行読み出し命令を、分岐先の命令を含むブロックを読みだす必要がある分岐命令と同じブロック内に挿入しておく。
【０１９４】
分岐命令解析回路２２０−ｍは、図１３で示した分岐命令解析回路２２０の構成に、命令が先行読み出し命令であるか否かを判定する機能を付加したものである。分岐命令解析回路２２０−ｍは、図１３の構成に加えて、先行読み出し命令のオペコードを記憶する記憶部２９０と、記憶部２９０の出力とデコード回路５０の出力であるオペコードを入力とし、比較結果を出力とする比較回路２９１とをさらに備えた構成となる。
【０１９５】
第１０の実施例の読出信号発生回路４９は、図１６で示した読出信号発生回路４９の構成に加えて、分岐命令解析回路２２０−１〜２２０−ｎの比較回路２９１の出力を入力とするｎ入力のＯＲゲート２９２と、図１１のアドレス生成回路４１の出力である分岐命令読出信号とＯＲゲート９３の出力を入力とするＡＮＤゲートを付加し、ＡＮＤゲート２９３の出力をＡＮＤゲート８４の入力に変更したものである。
【０１９６】
以下に、第１０の実施例の動作を説明する。
【０１９７】
１．分岐命令解析回路２２０−ｍの比較回路２９１は、デコード回路５０より得られたオペコードと記憶部２９０の出力を比較し、命令が先行読み出し命令の場合、先行読み出し命令であることを示す先行読み出し命令信号を発生する。
【０１９８】
２．読出信号発生回路４９のＯＲゲート２９２は、分岐命令解析回路２２０−１〜２２０−ｎの比較回路２９１の出力の論理和を取り、ブロック内に先行読み出し命令があるか否かをＡＮＤゲート２９３に与える。
【０１９９】
３．ＡＮＤゲート２９３は、図１１のアドレス生成回路４１の出力である分岐命令読出信号とＯＲゲート２９２の出力の論理積を取って、分岐先ブロックを読み出す必要があることを示す信号を生成しＡＮＤゲート８５に転送する。
【０２００】
以上のように構成することにより、読出ブロック内に先行読み出し命令が存在するときのみ分岐先ブロックを読みだせばよく、無駄なメモリアクセスを行なう必要がなくなり、次に続くメモリアクセスに影響することがない。したがって、より効率的に分岐先ブロックを命令キャッシュ３０に転送することができる。
【０２０１】
すなわち、予めそこから分岐することがわかっているブロックやその確率が高いブロックなど、分岐先ブロックを読出す必要のある、またはその必要性の高いブロックに先行読み出し命令を含ませておけば、好便に分岐先ブロックを読出してアクセスに備えることができる。
【０２０２】
【発明の効果】
この発明における請求項１記載の先行読出機能付命令キャッシュメモリにおいて、命令解析手段は主記憶から読出され、命令補助記憶装置に転送されるブロックである読出ブロックに含まれる命令を解析して、読出ブロックに続くブロックである次ブロックを主記憶から読出すことが必要か否かが予測する。そして、次ブロック読出手段は、命令解析手段により主記憶からの読み出しが必要であると予測された場合、次ブロックを主記憶から読出し、命令補助記憶装置に転送する。
【０２０３】
したがって、請求項１記載の先行読出機能付命令キャッシュメモリは、読出ブロックの命令の実行に先立って、必要に応じて次ブロックの転送を行うことにより、次ブロックへのアクセス要求が発生したときにミスが発生しないようにしている。
【０２０４】
この際、次ブロックを主記憶から読出すことが必要か否かの命令解析手段による予測に基づき次ブロックの読出しが行なわれるので、不要なブロックが読出されてしまう可能性は低い。
【０２０５】
その結果、キャッシュミスの発生する確率の低い命令キャッシュメモリを得ることができる。
【０２０９】
さらに、請求項１記載の先行読出機能付命令キャッシュメモリの命令解析手段における予測手段は、分岐すると予測される命令である分岐予測命令が存在していた場合でも、それが当該読出ブロックと次ブロックとの領域外に分岐すると予測される命令でない場合には、次ブロックを読出すことが必要であると予測する。
【０２１０】
すなわち、予測手段は、分岐予測命令であっても、読出ブロックと次ブロック内に分岐する命令であれば、次ブロックがアクセスされる可能性は高いため、次ブロックを読出すことが必要であると予測している。
【０２１１】
その結果、キャッシュミスの発生する確率の低い命令キャッシュメモリを得ることができる。
【０２１２】
また、請求項２記載の先行読出機能付命令キャッシュメモリでは、分岐予測命令検出手段により、読出ブロックに含まれる分岐予測命令が検出されると、前方分岐判定手段により、検出された分岐予測命令が前方分岐か否かが判定される。そして、予測手段により、検出された分岐予測命令が前方分岐であると判定された場合に、次ブロックを読出すことが必要であると予測される。
【０２１３】
すなわち、予測手段は、分岐予測命令でも後方分岐の場合には他のブロックに分岐することが多いが、前方分岐では他のブロックに分岐する確率が低いため、次ブロックを読出すことが必要であると予測している。
【０２１４】
その結果、分岐予測命令の種類の応じて予測することにより、キャッシュミスの発生する確率が低く、かつシステム全体の性能を向上させることができる命令キャッシュメモリを得ることができる。
【０２１５】
また、請求項３記載の先行読出機能付命令キャッシュメモリの命令解析手段における予測手段は、読出ブロックに特定の命令が存在することを検出して、次ブロックを読出すことが必要であると予測する。
【０２１８】
この発明における請求項４記載の先行読出機能付命令キャッシュメモリにおいて、命令解析手段は、主記憶から読出され、命令補助記憶装置に転送される読出ブロックに含まれる命令を解析して、分岐命令を含む場合に分岐先アドレスを計算し、当該分岐先アドレスの命令を含むブロックである分岐先ブロックを主記憶から読み出す必要があるか否かを判定する。そして、分岐先ブロック読出手段は分岐先ブロックの読み出しが必要と判定された場合、分岐先ブロックを主記憶から読出して、命令補助記憶装置に格納させる。
【０２１９】
したがって、請求項４記載の先行読出機能付命令キャッシュメモリは、読出ブロックの命令の実行に先立って、必要に応じて分岐先ブロックの転送を行うことにより、分岐先ブロックへのアクセス要求が発生したときにミスが発生しないようにしている。
【０２２０】
この際、分岐先ブロックを主記憶から読出すことが必要か否かの命令解析手段による判断に基づき分岐先ブロックの読出しが行なわれるので、不要な分岐先ブロックが読出されてしまう可能性は低い。
【０２２１】
その結果、キャッシュミスの発生する確率の低い命令キャッシュメモリを得ることができる。
【０２２２】
加えて、請求項４記載の先行読出機能付命令キャッシュメモリの命令解析手段の判定手段は、分岐命令が絶対分岐命令あるいはプログラムカウンタ相対分岐命令である場合に、分岐先ブロックを主記憶から読み出すことが必要であると判定する。
【０２２３】
読出ブロックに絶対分岐命令あるいはプログラムカウンタ相対分岐命令が存在している場合は分岐先ブロックがアクセスされる可能性が高いため、判定手段の上記判定の精度は高い。
【０２２４】
その結果、効率的に分岐先ブロックを補助記憶装置に取り込みながら、キャッシュミスの発生する確率が低く、かつシステム全体の性能を向上させることができる命令キャッシュメモリを得ることができる。
【０２３７】
この発明における請求項５記載の先行読出機能付命令キャッシュメモリの先行読出制御手段は、主記憶から読出され、命令補助記憶装置に転送される読出ブロックに含まれる命令を解析して、分岐命令を含む場合に分岐先アドレスを計算し、当該分岐先アドレスの命令を含むブロックである分岐先ブロックの読み出しを指示するアクセス要求と等価な疑似アクセス要求を補助記憶装置に出力する。
【０２３８】
したがって、先行読出制御手段は、読出ブロックに分岐命令が存在する場合、補助記憶装置に対する分岐先ブロックでのアクセスを行うため、分岐先ブロックが補助記憶装置に存在しないとき、補助記憶装置は主記憶に対する分岐先ブロックの読み出しを要求して、分岐先ブロックを自動的に取り込み、分岐先ブロックが補助記憶装置に存在するとき、分岐先ブロックの読み出し要求を発しないため主記憶には全くアクセスしない。
【０２３９】
その結果、補助記憶装置内にすでに分岐先ブロックが存在する場合には、メモリアクセスが行なわれないため、主記憶から補助記憶装置への分岐先ブロックの転送を効率的に行うとともに、キャッシュミスの発生する確率が低い命令キャッシュメモリを得ることができる。
【図面の簡単な説明】
【図１】この発明の第１の実施例にである先行読出機能付命令キャッシュメモリの構成を示すブロック図である。
【図２】第１の実施例の命令解析部の内部構成を示すブロック図である。
【図３】分岐予測命令検出回路の内部構成を示すブロック図である。
【図４】読出信号発生回路の内部構成を示すブロック図である。
【図５】この発明の第２の実施例である先行読出機能付命令キャッシュメモリの構成を示すブロック図である。
【図６】第２の実施例の命令解析部の内部構成を示すブロック図である。
【図７】次ブロック読出信号発生回路の内部構成を示すブロック図である。
【図８】分岐予測命令検出回路の内部構成を示すブロック図である。
【図９】この発明の第３の実施例である先行読出機能付命令キャッシュメモリの命令解析部の内部構成を示すブロック図である。
【図１０】第３の実施例の次ブロックロード命令検出部のブロック図である。
【図１１】この発明の第４の実施例である先行読み出し機能付き命令キャッシュの構成を示すブロック図である。
【図１２】第４の実施例の命令解析部の内部構成を示すブロック図である。
【図１３】第４の実施例の分岐命令解析回路の内部構成を示すブロック図である。
【図１４】第４の実施例の解析部の内部構成を示すブロック図である。
【図１５】第４の実施例のアドレス生成回路の内部構成を示すブロック図である。
【図１６】第４の実施例の読出信号発生回路の内部構成を示すブロック図である。
【図１７】この発明の第５の実施例である先行読み出し機能付き命令キャッシュの構成を示すブロック図である。
【図１８】第５の実施例の命令解析部の内部構成を示すブロック図である。
【図１９】この発明の第６の実施例である先行読出機能付命令キャッシュメモリにおける読出信号発生回路内部構成を示すブロック図である。
【図２０】この発明の第７の実施例である先行読出機能付命令キャッシュメモリにおける分岐命令解析回路内の解析部の内部構成を示すブロック図である。
【図２１】第７の実施例の解析部の中の分岐予測回路の内部構成を示すブロック図である。
【図２２】この発明の第８の実施例である先行読出機能付命令キャッシュメモリにおける分岐命令解析回路内の解析部の中の分岐予測回路の内部構成を示すブロック図である。
【図２３】この発明の第９の実施例である先行読出機能付命令キャッシュメモリにおける分岐命令解析回路内の解析部の中の分岐予測回路の内部構成を示すブロック図である。
【図２４】この発明の第１０の実施例である先行読出機能付命令キャッシュメモリにおける分岐命令解析回路及び読出信号発生回路の内部構成を示すブロック図である。
【図２５】記憶装置の階層構造を模式的に示す図である。
【符号の説明】
３，４  読出制御部、５，６，４２，１１０，１８０  命令解析部、１６  カウンタ、２０，１００  先行読出機能付命令キャッシュメモリ、３０，１０４  命令キャッシュメモリ、３２，１０２，１８０  先行読出制御部、４０  命令レジスタ、４１  アドレス生成回路、４３  キャッシュ制御信号発生回路、４４  アドレスレジスタ、４８  セレクタ、４９  読出信号発生回路、５９  分岐予測回路、６４  コントロール信号発生回路、７２，１３６，１３８，１６２，１９４  一致検出回路、６２−１〜６２−ｎ，１３０，１８２−１〜１８２−ｎ  分岐予測命令検出回路、１３２  分岐先アドレス計算回路。
【図１】
0003590427.tif 000002
【図２】
0003590427.tif 000003
【図３】
0003590427.tif 000004
【図４】
0003590427.tif 000005
【図５】
0003590427.tif 000006
【図６】
0003590427.tif 000007
【図７】
0003590427.tif 000008
【図８】
0003590427.tif 000009
【図９】
0003590427.tif 000010
【図１０】
0003590427.tif 000011
【図１１】
0003590427.tif 000012
【図１２】
0003590427.tif 000013
【図１３】
0003590427.tif 000014
【図１４】
0003590427.tif 000015
【図１５】
0003590427.tif 000016
【図１６】
0003590427.tif 000017
【図１７】
0003590427.tif 000018
【図１８】
0003590427.tif 000019
【図１９】
0003590427.tif 000020
【図２０】
0003590427.tif 000021
【図２１】
0003590427.tif 000022
【図２２】
0003590427.tif 000023
【図２３】
0003590427.tif 000024
【図２４】
0003590427.tif 000025
【図２５】
0003590427.tif 000026