(57)【特許請求の範囲】
【請求項１】
命令及びデータを格納した外部記憶装置と、
前記外部記憶装置に格納されている命令またはデータのアドレスを出力する外部アドレスバスと、
バスアクセス制御信号を出力して前記外部データバスをアクセスするバスインタフェイス部と、
前記バスアクセス制御信号が出力され、前記外部アドレスバスへアドレスが出力された場合に、前記外部記憶装置との間で命令またはデータを入出力する外部データバスと、
前記外部記憶装置に格納されている命令またはデータの一部または全部を格納する内部記憶装置と、
分岐命令を処理する場合に分岐先を予測する分岐予測手段を有するパイプライン処理機構と
を備えたデータ処理装置において、
次の命令またはデータの読み込みに際して、前記次の命令またはデータが前記内部記憶装置に記憶されている場合はそれを前記内部記憶装置から読み込み、次の命令またはデータが前記内部記憶装置に記憶されていない場合は前記バスインタフェイス部に前記外部記憶装置をアクセスさせて前記次の命令またはデータを読み込むデータ読み込み手段と、
前記分岐予測手段が分岐先を予測していない場合に第１の値になり、分岐先を予測している場合に第２の値になる制御信号を発生する制御信号発生手段と、
前記制御信号が第２の値である場合に前記データ読み込み手段が前記バスインタフェイス部に前記外部記憶装置をアクセスさせることを禁じる読み込み禁止手段と
を備え、
前記制御信号発生手段は、次に読み込む命令またはデータのアドレスが即値で指定される場合には、前記分岐予測手段が分岐先を予測しているか否かには拘わらずに前記制御信号の値を前記第１の値に決定すべくなしてあることを特徴とするデータ処理装置。
【請求項２】
命令及びデータを格納した外部記憶装置と、
前記外部記憶装置に格納されている命令またはデータのアドレスを出力する外部アドレスバスと、
バスアクセス制御信号を出力して前記外部データバスをアクセスするバスインタフェイス部と、
前記バスアクセス制御信号が出力され、前記外部アドレスバスへアドレスが出力された場合に、前記外部記憶装置との間で命令またはデータを入出力する外部データバスと、
前記外部記憶装置に格納されている命令またはデータの一部または全部を格納する内部記憶装置と、
分岐命令を処理する場合に分岐先を予測する分岐予測手段を有するパイプライン処理機構と
を備えたデータ処理装置において、
次の命令またはデータの読み込みに際して、前記次の命令またはデータが前記内部記憶装置に記憶されている場合はそれを前記内部記憶装置から読み込み、次の命令またはデータが前記内部記憶装置に記憶されていない場合は前記バスインタフェイス部に前記外部記憶装置をアクセスさせて前記次の命令またはデータを読み込むデータ読み込み手段と、
前記分岐予測手段が分岐先を予測していない場合に第１の値になり、分岐先を予測している場合に第２の値になる制御信号を発生する制御信号発生手段と、
前記制御信号が第２の値である場合に前記データ読み込み手段が前記バスインタフェイス部に前記外部記憶装置をアクセスさせることを禁じる読み込み禁止手段と、
前記読み込み禁止手段により外部記憶装置へのアクセスが禁じられた場合にそのアクセス先のアドレスを記憶するアドレス保持手段と
を備え、
前記制御信号発生手段は、次に読み込む命令またはデータのアドレスが即値で指定される場合には前記制御信号の値を前記第１の値に決定すべくなしてあり、
前記データ読み込み手段は、前記分岐予測手段による分岐先の予測が正しいことが確定した場合に前記アドレス保持手段に記憶されているアドレスで再度命令またはデータの読み込みを行なうべくなしてあること
を特徴とするデータ処理装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明はデータ処理装置に関し、具体的には内蔵キャッシュメモリ及びパイプライン処理機構を有するデータ処理装置に関し、更に詳述すれば、そのようなデータ処理装置において命令及びデータのアクセス処理を高速化するための技術に関する。
【０００２】
【従来の技術】
従来の一般的なデータ処理装置では、メインメモリ上に記憶されているプログラムを処理するために、メインメモリ上の命令及びデータをシステムバスを通じてデータ処理装置内に取り込む。その際、データ処理装置内でのプログラムの処理時間に比してメインメモリに対するアクセス速度が遅い場合にはデータ処理装置からメインメモリへのアクセス回数を減少させてメインメモリのアクセス速度を見掛け上早くする目的で、所謂キャッシュメモリを使用する場合が多い。
【０００３】
キャッシュメモリとは、比較的高速なメモリセルで構成された比較的小規模な記憶装置であり、データ処理装置がメインメモリに対して一度アクセスして取り込んだ命令あるいはデータを記憶させておくことにより、同一の命令あるいはデータをデータ処理装置が再度アクセスした場合にはメインメモリをアクセスせずにキャッシュメモリからその命令あるいはデータを得ることにより、メインメモリをその都度アクセスする場合に比して高速に命令あるいはデータを使用することを可能とする。
【０００４】
一方、種々の機械装置、たとえば近年急速にエレクトロニクス化が進んでいる家電製品あるいは産業用機械等のための組み込み制御用のデータ処理装置では、使用するプログラム及びデータ量が比較的小さいため、内蔵RAM あるいは内蔵ROM を備え、それらにプログラム及びデータを記憶させておくことにより、高速なアクセスを実現している。
たとえば、三菱電機株式会社製の16ビットマイクロコンピュータM37700M2-XXXFPにおいてはそのユーザーズマニュアル (1989年３月発行) に示されているように、メモリマップ上のアドレス”007F16”〜”027F16”に内蔵RAM が、アドレス”C00016”〜”FFFF16”に内蔵ROM がそれぞれ配置されている。なおここで、”16”は16進数を表している。内蔵RAM は主としてデータの格納, サブルーチンの呼び出し及び割り込み発生時のスタック領域として使用され、内蔵ROM は主としてプログラムの格納に使用される。
【０００５】
このような小規模のシステムにおいては、キャッシュメモリを使用してもその効果は充分には発揮されず、キャッシュメモリよりも明示的に操作可能な内蔵RAM の方がシステムの性能向上の面からは有効である。
一方、比較的大規模なシステムでは、膨大なメモリ空間を使用するため、内蔵RAM の容量では処理すべきデータを格納するには不十分である。従って、小規模な内蔵メモリの容量でシステム全体の性能を向上させるには、内蔵メモリをキャッシュメモリとして使用する場合が多い。
【０００６】
このようにデータ処理装置の用途に応じて、内蔵メモリをキャッシュメモリとして使用する方が有効である場合と、内蔵データRAM として使用する方が有効である場合とがある。従って、従来のデータ処理装置では、その目的用途に応じて内蔵キャッシュメモリと内蔵RAM とのいずれか一方を備えている場合が多い。
【０００７】
また、近年の一般的なデータ処理装置においては、パイプライン処理機構を備え、複数の命令を内部のパイプラインステージで並列処理するとによって性能を向上させている。このパイプライン処理の利点は、メインメモリから命令をフェッチする処理に始まって命令を実行する処理、更には命令実行の結果をメインメモリにストアする処理までの一連の処理がいくつかの機能ブロックに分割されて各ステージで同時に処理されるため、見掛け上は複数の命令が並列処理されて性能が向上することである。しかし、パイプライン処理機構を備えたデータ処理装置により処理される命令の全てが必ずしも並列処理可能であるわけではなく、たとえば条件付き分岐命令を処理する場合、分岐命令が実際に処理されるまでは次にどの命令をパイプラインに取り込めばよいのかが判明しないので、並列処理は出来なくなる。
【０００８】
そこで、条件付き分岐命令がパイプライン内に取り込まれた場合には、その分岐命令が実際に分岐を発生するか否か、また分岐するのであればどの命令へ分岐するかを予測（分岐予測）して後続の命令を取り込むような手法が採用されている。しかし、分岐予測の結果は実際の分岐とは異なることもあり、また間違った予測に従ってメモリ等の外部装置をアクセスした場合には、アクセス出来ないアドレス、たとえばメモリ等のハードウェアが実際には接続されていないアドレスをアクセスする可能性もある。そのような場合には、応答速度遅くなる可能性があり、性能が劣化する。このため、分岐予測中に命令を取り込んだり、あるいはパイプラインに取り込まれた命令がメモリ等の外部装置をアクセスしようとした場合には、その時点で一旦処理を中断し、分岐命令が実行されて分岐予測が正しかったことが確定した後に処理を再開する必要があった。
【０００９】
【発明が解決しようとする課題】
多目的に使用される汎用データ処理装置では、内蔵キャッシュメモリと内蔵RAM とのいずれがシステムの性能向上に有効であるかはその応用分野によって異なる。内蔵キャッシュメモリのみを有しているデータ処理装置を比較的小規模な内蔵RAM に適したシステムに使用した場合、使用するメモリ空間が小さいため、キャッシュ内に無駄な領域が発生する可能性が高く、明示的に操作可能な内蔵RAM を使用した方がシステム性能は向上する。一方、比較的大規模なメモリ空間を扱うシステムでは使用するメモリ空間が膨大になるため、内蔵RAM の容量では不十分であり、内蔵RAM を有効に利用するためには頻繁に内蔵RAM 内の命令あるいはデータを入れ換える必要が生じる。この場合、プログラムの負担も増加し、そのための処理もまた必要になるため、内蔵キャッシュメモリを備えた方が性能は向上する。
【００１０】
また、内蔵キャッシュメモリと内蔵RAM との双方を備えている場合は、メモリとして使用可能なハードウェア量が同じであればそれぞれはいずれか一方のみを備える場合の半分の容量になるため、共に能力が低下する。
また、パイプライン処理を行なうデータ処理装置においては、分岐予測してから実際に分岐が確定するまでの間に、不確定なアドレスの命令あるいはデータをアクセスしようとすると、処理が中断されてパイプライン処理の並列処理が出来なくなり、やはり性能が低下する。
【００１１】
本発明はこのような事情に鑑みてなされたものであり、種々の応用分野で高い処理性能を発揮するデータ処理装置を実現することを目的とする。
また、パイプライン処理機構を備えたデータ処理装置において、分岐予測が行なわれている場合にも、処理の中断を可及的に少なくして迅速な処理が可能なデータ処理装置の提供を目的とする。
【００１２】
【課題を解決するための手段】
本発明は、パイプライン処理機構において分岐予測が行なわれている場合以外の場合にはキャッシュメモリまたは外部記憶装置へのアクセスが行なわれ、分岐予測が行なわれている場合にはキャッシュメモリへのアクセスのみが行なわれて外部記憶装置へのアクセスは禁じられる。またアクセス先を保持しておくアドレス保持手段を備え、外部記憶装置へのアクセスが可能になった時点でアドレス保持手段に保持されているアドレスにより外部記憶装置へのアクセスが行なわれる。
【００１４】
【作用】
本発明では、分岐予測が行なわれている場合には外部記憶装置へのアクセスが禁止されるが、分岐予測が正しかったことが確定して外部記憶装置へのアクセスが可能になった時点で直ちにアクセスがアドレス保持手段に保持されているアドレスにより行なわれる。
また、次に読み込む命令またはデータのアドレスが即値で指定される場合には、分岐予測手段が分岐先を予測しているか否かには拘わらずに制御信号の値を分岐予測手段が分岐先を予測していない場合の値に決定する。
【００１６】
【実施例】
以下、本発明をその実施例を示す図面に基づいて詳述する。
図１は本発明のデータ処理装置の一実施例としての32ビットマイクロプロセッサ及びその周辺回路の構成を示すブロック図である。
【００１７】
このマイクロプロセッサの内部を機能的に大きく分けると、命令デコード部21, オペランドアドレス計算部22, PC計算部23, マイクロROM 24, 演算部25, 命令フェッチ部26, オペランドアクセス部１, バスインタフェイス部13等に分けられる。
【００１８】
バスインタフェイス部13は32ビット幅の外部アドレスバス15と、32ビット幅の外部データバス16と、外部制御信号線17とを介して、主記憶装置（メインメモリ）28, ２次記憶装置29及びその他の入出力装置 (キーボード, ディスプレイ, プリンタ等)30 と接続されている。また、命令フェッチ部26とオペランドアクセス部１とはそれぞれ独立してキャッシュメモリを内蔵している。
【００１９】
また、本実施例のマイクロプロセッサは図２の模式図に示されているように６段のパイプライン処理を行なう。
具体的には、本実施例のマイクロプロセッサのパイプラインはパイプラインの上流側から下流側へ、命令フェッチステージ31, 命令デコードステージ32, オペランドアドレス計算ステージ33, オペランドフェッチステージ34, 実行ステージ35, ストアステージ36の６段である。
【００２０】
プログラムはまず、命令フェッチステージ31で主記憶装置28からパイプラインに取り込まれ、次段の命令デコードステージ32で命令コードが解読される。解読された命令が条件付き分岐命令である場合は命令デコードステージ32で分岐予測が行なわれ、次の命令は分岐予測先からパイプラインに取り込まれる。そして、命令デコードステージ32で解読された命令がオペランドを有する場合には、オペランドアドレス計算ステージ33でオペランドのアドレスが計算され、更にメモリ等からのデータのフェッチを伴う場合は次段のオペランドフェッチステージ34でデータが取り込まれる。その後、実行ステージ35で命令が実行され、実行結果のストアが必要が場合にはストアステージ36で命令実行結果のデータが主記憶装置28等のメモリにストアされる。
【００２１】
図３は本実施例のマイクロプロセッサのキャッシュメモリを内蔵したオペランドアクセス部１の構成例を示すブロック図、図４は同じく内蔵キャッシュモードと内蔵RAM モードとの切り換え及びキャッシュヒット信号の生成に関する回路の構成例を示す回路図、図５はキャッシュアクセスの際のタイミングチャートである。
【００２２】
図３において、参照符号２は本実施例のオペランドアクセス部１に内蔵されているキャッシュメモリのタグ部を、３はデータ部を、90はバリッドビット部をそれぞれ示している。
データ部３は4Kバイトの容量を有し、後述する BMCレジスタ900(図９参照) のDMビットの値に応じて決定される内蔵メモリモード信号９の値が”０”であればダイレクトマップ方式の内蔵キャッシュメモリとして、また”１”であれば内蔵RAM としてそれぞれ動作する内蔵キャッシュモードと内蔵RAM モードとに切り換えられる。内蔵キャッシュモード時には、タグ部２が20ビット, バリッドビット部90が１ビットで、データ部３が16バイトを１ブロックとする 256エントリのデータを記憶することが出来る。なお、キャッシュメモリ中のデータが更新された場合には対応する外部メモリ上のデータも同時に書き換えられるライトスルー方式で動作する。
【００２３】
上述のような内蔵キャッシュモードと内蔵RAM モードとの切り換えは具体的には後述するセレクタ41で行なわれる。
参照符号４はDMADDRレジスタであり、後述する如く、内蔵RAM モード時に内蔵RAM が割り付けられるメモリ空間のベースアドレスである20ビットの内蔵RAM ベースアドレスを記憶する。このDMADDRレジスタ４に記憶されている内蔵RAM ベースアドレスはセレクタ41へ出力されている。なお、この内蔵RAM ベースアドレスは命令により任意の値をDMADDRレジスタ４に記憶させることが可能である。
【００２４】
参照符号５はタグ部２から出力されたタグ情報を一時的に保持するタグ出力レジスタであり、タグ部２と同様に20ビット構成である。また、参照符号91はバリッドビット部90から出力されたバリッドビットの値を一時的に保持するバリッドビットレジスタであり、バリッドビット部90と同様に１ビット構成である。
タグ出力レジスタ５に保持されたタグ情報はセレクタ41へ、バリッドビットレジスタ91に保持されたバリッドビットの値はゲート71へそれぞれ出力される。なお、このゲート71は内蔵メモリモード信号９が”０”である場合、即ち内蔵キャッシュモード時には開路していてバリッドビットの値をバリッド信号43として比較器18へ出力する。
【００２５】
参照符号10はデータ出力レジスタであり、内部アドレスバス６から与えられたアドレスに対応するデータ部３のエントリから読み出されるデータを一時的に保持する。このデータ出力レジスタ10はゲート72を介して内部データバス14に接続された出力経路を有している。ゲート72は前述の比較器18からキャッシュヒット信号11が出力された場合（キャッシュヒット信号11の値が”１”）に開路し、データ出力レジスタ10に保持されているデータを内部データバス14へ出力する。
【００２６】
また、データ出力レジスタ10はゲート73を介して内部データバス14に接続された入力経路を有している。ゲート73は前述の比較器18からキャッシュヒット信号11が出力された場合に開路し、内部データバス14上のデータをデータ出力レジスタ10に入力させる。
【００２７】
参照符号74は３入力の ANDゲートであり、内蔵メモリモード信号９，キャッシュヒット信号11及び後述するバススヌープ信号20が入力される。この ANDゲート74は上述の３入力全てが”１”である場合にその出力信号を”１”にしてバリッドビットレジスタ91の内容をクリアして”０”にする。
【００２８】
参照符号75は３入力のORゲートであり、後述する第１プリフェッチ要求信号７, 第２プリフェッチ要求信号８及びバススヌープ信号20が入力され、出力信号をキャッシュリード信号42としてタグ部２及びデータ部３に与えられる。キャッシュリード信号42が与えられている状態（キャッシュリード信号42の値が”１”）で内部アドレスバス６からアドレスが与えられると、タグ部２, バリッドビット部90, データ部３の対応するするエントリからタグ情報がタグ出力レジスタ５へ、バリッドビットがバリッドビットレジスタ91へ、データがデータ出力レジスタ10へそれぞれ出力される。
【００２９】
参照符号77はインバータであり、比較器18から出力されたキャッシュヒット信号11を反転して ANDゲート76に入力させる。 ANDゲート76はこのインバータ77の出力の他に第２プリフェッチ要求信号８も入力されており、その出力信号はプリフェッチ中止信号19として出力されてオペランドフェッチステージ34に入力される。
従って、キャッシュヒット信号11が”０”で第２プリフェッチ要求信号８が”１”である場合には、プリフェッチ中止信号19は”１”になる。
【００３０】
次に、図４を参照して内蔵キャッシュモードと内蔵RAM モードとの切り換え及びキャッシュヒット信号11の生成に関する回路、具体的にはセレクタ41及び比較器18について説明する。
セレクタ41には内蔵メモリモード信号９と、DMADDRレジスタ４に保持されている20ビットの内蔵RAM ベースアドレスの各ビット（以下、それぞれ4-0, 4-1…4-19という）と、20ビット構成のタグ出力レジスタ５の各ビット（以下、それぞれ5-0, 5-1…5-19という) と、内部アドレスバス６から入力されるフェッチアドレスの上位20ビット（以下、それぞれ6-0, 6-1…6-19という) とが入力されている。内蔵RAM ベースアドレスの各ビット4-0, 4-1…4-19はそれぞれトランスファーゲート87-0, 87-1…87-19 を介して比較器18内のEXORゲート83-0, 83-1…83-19 の一方の入力端子に、タグ出力レジスタ５の各ビット5-0, 5-1…5-19はそれぞれトランスファーゲート86-0, 86-1…86-19 を介してEXORゲート83-0, 83-1…83-19 の一方の入力端子に入力されており、フェッチアドレスの上位20ビット6-0, 6-1…6-19はそれぞれEXORゲート83-0, 83-1…83-19 の他方の入力端子に入力されている。
【００３１】
また、図４において、参照符号85はインバータであり、内蔵メモリモード信号９を反転して出力する。
上述の各トランスファーゲート86-0, 86-1…86-19 及び87-0, 87-1…87-19 はいずれも内蔵メモリモード信号９及びそれをインバータ85で反転した信号により開閉制御される。具体的には、内蔵メモリモード信号９が”０”である場合にはトランスファーゲート86-0, 86-1…86-19 が開路してそれぞれタグ出力レジスタ５の各ビット5-0, 5-1…5-19を出力してEXORゲート83-0, 83-1…83-19 の一方の入力端子に入力する。また、内蔵メモリモード信号９が”１”である場合にはトランスファーゲート87-0, 87-1…87-19 が開路してそれぞれ内蔵RAM ベースアドレスの各ビット4-0, 4-1…4-19を出力してEXORゲート83-0, 83-1…83-19 の一方の入力端子に入力する。
【００３２】
従って、内蔵メモリモード信号９が”０”である場合にはフェッチアドレスの上位20ビット6-0, 6-1…6-19はそれぞれ対応するタグ出力レジスタ５の各ビット5-0, 5-1…5-19とEXORゲート83-0, 83-1…83-19 で比較され、両者が同一の値であれば各EXORゲート83-0, 83-1…83-19 の出力信号が”０”になる。また、内蔵メモリモード信号９が”１”である場合にはフェッチアドレスの上位20ビット6-0, 6-1…6-19はそれぞれ対応する内蔵RAM ベースアドレスの各ビット4-0, 4-1…4-19とEXORゲート83-0, 83-1…83-19 で比較され、両者が同一の値であれば各EXORゲート83-0, 83-1…83-19 の出力信号が”０”になる。
【００３３】
比較器18内には、上述のEXORゲート83-0, 83-1…83-19 の他に、プルアップされた信号線80が入力端子に接続されたインバータ88と、このインバータ82の出力信号を一方の入力端子に入力する２入力がいずれも負論理である ANDゲート82と、前述の各EXORゲート83-0, 83-1…83-19 の出力信号がゲートに与えられているトランジスタ84-0, 84-1…84-19 と、図３に示されているゲート71の出力信号であるバリッド信号43が入力されるインバータ89とが備えられている。なお、インバータ89の出力信号は上述の ANDゲート82の他方の入力端子に入力されている。各トランジスタ84-0, 84-1…84-19 のソースは前述の信号線80に、ドレインは接地電位にそれぞれ接続されている。従って、いずれかのEXORゲート83-0, 83-1…83-19 への２入力が不一致であればその出力信号は”１”になって信号線80はいずれかのトランジスタ84-0, 84-1…84-19 によって接地電位に接続される。これにより、インバータ88の入力が”０”になってその出力信号が”１”になるので、 ANDゲート82の出力信号であるキャッシュヒット信号11は”０”になる。
一方、全てのEXORゲート83-0, 83-1…83-19 への２入力が一致していればそれぞれの出力信号は”０”になって信号線80はいずれのトランジスタ84-0, 84-1…84-19 によっても接地電位に接続されることはない。これにより、インバータ88の入力が”１”になってその出力信号が”０”になり、バリッド信号43が”１”であれば ANDゲート82の両入力が”０”になるので、その出力信号であるキャッシュヒット信号11は”１”になる。
【００３４】
ここで、いずれかのEXORゲート83-0, 83-1…83-19 への２入力が不一致であるということは、内蔵メモリモード信号９が”０”である場合にはフェッチアドレスの上位20ビット6-0, 6-1…6-19とタグ出力レジスタ５の各ビット5-0, 5-1…5-19とのいずれかの対応するビット同士の値が不一致であることを意味しており、それはキャッシュミスしたということである。また、内蔵メモリモード信号９が”１”である場合には、フェッチアドレスの上位20ビット6-0, 6-1…6-19と内蔵RAM ベースアドレスの各ビット4-0, 4-1…4-19とのいずれかの対応するビット同士の値が不一致であることを意味しており、それは内蔵RAM へのアクセスではないということである。
【００３５】
図６乃至図９はキャッシュメモリに関係するレジスタの一部のフィールド及びその意味を示す模式図である。
図６に示されているDMADDRレジスタは図３に参照符号４にて示されており、内蔵RAM モード時に内蔵RAM が割り付けられるメモリ空間のベースアドレスである20ビットの内蔵RAM ベースアドレスを記憶するレジスタである。
図７に示されているNCADDRレジスタの各ビットは4Gバイトのメモリ空間を32個の128Mバイトのアドレス空間に分割し、それぞれの128Mバイトのアドレス空間に対応して各アドレス空間のキャッシュ取り込みの禁止を指定する。
【００３６】
図８に示されている BMPレジスタはキャッシュのパージを指定するレジスタであり、ビット20であるDPビットまたはビット28であるIPビットに”１”が設定されることによりデータキャッシュまたは命令キャッシュのパージがそれぞれ行なわれる。
図９に示されている BMCレジスタはキャッシュの動作モードとリプレースとを制御する。内蔵メモリモード信号９は BMCレジスタのビット26, 27(DM)の値に応じて生成される。
【００３７】
次に、図５のタイミングチャートに則して、まず内蔵キャッシュモード時 (DM＝10、即ち内蔵メモリモード信号９が”０”) の動作を説明する。
なお、図５のタイミングチャートにおいて、波形W1は本発明のデータ処理装置の内部クロックを、波形W2は内部アドレスバス６上のアドレスを、波形W3はタグ部２から出力されるタグ情報を、波形W4はデータ部３から出力されるデータを、波形W5はDMADDRレジスタ４から出力される内蔵RAM ベースアドレスを、波形W6は第１プリフェッチ要求信号７または第２プリフェッチ要求信号８を、波形W7はキャッシュヒット信号11を、波形W8は外部バスアクセスのための信号を、波形W9は内部データバス14上のデータをそれぞれ示している。
【００３８】
クロックCL１において、第１プリフェッチ要求信号７または第２プリフェッチ要求信号８のいずれかが”１”であり且つ内部アドレスバス６にアドレス値が入力されると、その下位８ビットがデコードされて 256エントリの内のいずれかが指定され、そのエントリに対応するタグ部２のタグ情報がタグ出力レジスタ５へ、バリッドビット部90のバリッドビットがバリッドビットレジスタ91へ、データ部３のデータがデータ出力レジスタ10へそれぞれ出力される。この際、内蔵メモリモード信号９は”０”であるので、比較器18にはタグ５とフェッチアドレス６の上位20ビットとが入力され、両者が一致し且つバリッドビット部90が”１”であれば、クロックCL２においてキャッシュヒット信号11が出力される。
【００３９】
上述のようにフェッチアクセスがキャッシュヒットすればゲート72が開路するので、データ部３から出力されてデータ出力レジスタ10に保持されていたデータが内部データバス14へ出力される。データストアの場合はゲート73が開路するので、内部データバス14上の値がデータ出力レジスタ10を通じてデータ部３の対応するエントリに書き込まれ、更に外部メモリ上のデータも書き換える必要があるため、バスインタフェイス部13へ書き込み要求が出力される。
【００４０】
一方、クロックCL４において上述同様にデータフェッチが開始されてもキャッシュミスした場合は、外部バスアクセスが有効となってクロックCL７において外部データバス16から内部データバス14へデータが取り込まれる。
【００４１】
一方、内蔵RAM モード(DM ＝01) である場合は、内蔵メモリモード信号９が”１”であるので、DMADDRレジスタ４に保持されている内蔵RAM ベースアドレスの各ビット4-0, 4-1…4-19がフェッチアドレスの上位20ビット6-0, 6-1…6-19とそれぞれ比較器18により比較される。全てのビットが一致すれば、内蔵キャッシュモード時と同様にキャッシュヒット信号11が出力される。また内部アドレスバス６からフェッチアドレスが与えられた時点でデータ部３からは対応するデータが出力されてデータ出力レジスタ10に保持されているので、キャッシュヒットすれば、データフェッチの場合はデータ出力レジスタ10からデータが内部データバス14へ出力され、データストアの場合は内部データバス14上の値がデータ部３の対応するエントリに書込まれる。但しこの際、バスインタフェイス部13へ書き込み要求が出力されることはない。
【００４２】
ところで、複数のマイクロプロセッサを接続したシステムにおいては、一つのマイクロプロセッサの内蔵キャッシュメモリ内のデータが書き換えられた場合には、外部メモリの書換えと共に他のマイクロプロセッサの内蔵キャッシュメモリの同一の領域も書き換えるか、あるいは無効化する必要がある。そのため、キャッシュメモリを内蔵するマイクロプロセッサは外部アドレスを常時監視しており、キャッシュメモリに読み込んでいる領域と同一の領域に他のデータ処理装置が書き込みを行なう場合、キャッシュメモリ内の該当する領域を無効にする機能を備えている。この機能をバススヌープ機能と称する。
但し、内蔵RAM に対しては、各マイクロプロセッサ固有のワーキングレジスタとして使用されるため、バススヌープの対象にはならない。
【００４３】
上述のような複数のマイクロプロセッサが共通の外部アドレスバス15, 外部データバス16, 外部制御信号線17を介して主記憶装置28等の外部装置に接続されている構成においては、それぞれのデータ処理装置が外部データバス16を使用して外部装置をアクセスする権利をバス権という。このバス権を本発明のデータ処理装置が解放している場合、即ち他の装置に外部データバス16の使用権を譲っている場合に、他のデータ処理装置が外部データバス16を使用して外部装置 (たとえば主記憶装置28) に対してデータの書き換えを行なっていることを外部制御信号線17へ出力されているメモリライト信号とデータストローブ信号 (外部データバス16上に有効なデータが出力されていることを示す信号) の状態によりバスインタフェイス部13が検出すると、バスインタフェイス部13はバススヌープ信号20を”１”にすると同時に外部アドレスバス15上のデータを内部アドレスバス６へ出力する。
【００４４】
そして、オペランドフェッチの場合と同様に、タグ５と内部アドレスバス６の上位20ビットとが一致していて且つバリッドビットレジスタ91が”１”であればキャッシュヒット信号11が出力される。そしてこの際、バススヌープ信号20が”１”であり且つ内蔵キャッシュモード (内蔵メモリモード信号９が”０”) であれば、 ANDゲート74から出力される信号によりバリッドビットレジスタ91の内容が”０”にされ、これがバリッドビット部90へ送られて対応するバリッドビットが”０”にされる。即ち、データ部３の対応するデータが無効にされる。
【００４５】
本発明の実施例は従来のダイレクトマップ方式の内蔵キャッシュメモリのシステムに、図４に示されている構成と、データストア時に外部バスに書き込み要求を出力するか否かを選択する回路を付加するのみにて構成されている。しかし、他の実施例として、内蔵RAM モード時には内蔵キャッシュメモリとは独立した回路で内蔵メモリをアクセスする手法、あるいは内蔵RAM 時にはタグ部２に内蔵RAM のアドレスを書き込んでおくという手法もある。この場合、内蔵メモリの一部を内蔵RAM とし、その他の一部を内蔵キャッシュメモリとして分割して使用することも可能である。
【００４６】
次に、フェッチリトライ機構について説明する。
図10に本発明のデータ処理装置としての32ビットマイクロプロセッサのオペランドフェッチステージ34とその前後の各ステージとの間で送受される信号及びオペランドフェッチステージ34とオペランドアクセス部１との間で送受される信号を模式的に示す。なお、オペランドフェッチステージ34はパイプライン処理の概念的なステージであるが、ここではオペランドアクセス部１以外のオペランドフェッチのために必要なハードウェア及びソフトウェアを一括した概念として示している。また、図11にオペランドフェッチステージ34内に位置するフェッチリトライ機構60の構成例の回路図を示す。
【００４７】
オペランドフェッチステージ34へは、オペランドアドレス計算ステージ33から分岐予測信号53, プリフェッチ要求信号51及びオペランドアドレス52が、実行ステージ35からはフェッチ要求信号57が、またオペランドアクセス部１からはプリフェッチ中止信号19及びアクノリッジ信号55がそれぞれ与えられる。オペランドフェッチステージ34からは、実行ステージ35へはアドレス値56が、オペランドアクセス部１へは第１プリフェッチ要求信号７及び第２プリフェッチ要求信号８が与えられる。
【００４８】
なお、参照符号37はストアバッファであり、ストアステージ36によりデータがストアされる際に使用される。
また、オペランドアドレス計算ステージ33からオペランドフェッチステージ34に与えられるプリフェッチ要求信号51, オペランドフェッチステージ34からオペランドアクセス部１に与えられる第１プリフェッチ要求信号７及び第２プリフェッチ要求信号８はオペランドのプリフェッチを指示するための信号であり、実行ステージ35からオペランドフェッチステージ34に与えられるフェッチ要求信号57は次の命令のフェッチを指示するための信号である。
【００４９】
図11に示されているように、本発明のデータ処理装置の一実施例としてのマイクロプロセッサのオペランドフェッチステージ34内に位置するフェッチリトライ機構60はその内部にFAレジスタ61Ａ, FBレジスタ61Ｂの二つのレジスタを備えている。
FAレジスタ61Ａは、オペランドアドレス計算ステージ33から与えられるオペランドアドレス52を保持し、ゲート62を介して実行ステージ35へアドレス値56として出力する。また、オペランドアドレス52はゲート64を介して内部アドレスバス６へ出力される。
なお、ゲート62及び64は後述する ANDゲート67の出力信号が”１”である場合にいずれも開路する。
【００５０】
FBレジスタ61Ｂにはゲート63を介してFAレジスタ61Ａの出力が入力されるようになっている。ゲート63はオペランドアクセス部１から与えられるアクノリッジ信号55が”１”である場合に開路してFAレジスタ61Ａが保持しているオペランドアドレスをFBレジスタ61Ｂに保持させる。
このFBレジスタ61Ｂに保持されたオペランドアドレスはゲート65を介して内部アドレスバス６へ出力される。なお、ゲート65は後述する ANDゲート69の出力信号が”１”である場合に開路する。
またFAレジスタ61Ａに保持されているオペランドアドレスはゲート66を介して内部アドレスバス６へ出力される。なお、ゲート66は前述の ANDゲート67の出力信号が”１”である場合に開路する。
【００５１】
従って、オペランドアドレス計算ステージ33からオペランドフェッチステージ34へ入力されたオペランドアドレス52は、ゲート64を介して内部アドレスバス６へ、FAレジスタ61Ａに一旦保持された上でゲート66を介して内部アドレスバス６へ、FAレジスタ61Ａからゲート63を介してFBレジスタ61Ｂに一旦保持された上でゲート65を介して内部アドレスバス６へ、という３通りの内のいずれかの経路で内部アドレスバス６へ出力されてオペランドアクセス部１に与えられる他、FAレジスタ61Ａからゲート62を介して実行ステージ35へもアドレス値56として出力される。
【００５２】
ANDゲート67は３入力であり、実行ステージ35から出力されるフェッチ要求信号57, オペランドアドレス計算ステージ33から出力されるプリフェッチ要求信号51及びインバータ68の出力信号が入力される。インバータ68の入力信号は、オペランドアクセス部１から出力されるプリフェッチ中止信号19をラッチするラッチ95の出力である。なお、このラッチ95はフェッチ要求信号57が”１”になるとクリアされる。
従って、フェッチ要求信号57, プリフェッチ要求信号51が”１” (有効) であり且つプリフェッチ中止信号19が”０” (無効) である場合に ANDゲート67の出力信号は”１”になる。これは、フェッチ要求信号57により実行ステージ35から次の命令のフェッチが要求されており、プリフェッチ要求信号51によりオペランドアドレス計算ステージ33からオペランドのプリフェッチが要求されており、且つプリフェッチ中止信号19によりオペランドアクセス部１からプリフェッチの中止が要求されていない場合にのみ ANDゲート67の出力信号が”１”になることを意味している。
この ANDゲート67の出力信号は前述の如くゲート62, 64, 66の制御信号となっている他、後述する ANDゲート96, 97にも与えられている。
【００５３】
ANDゲート69は２入力であり、ラッチ95の出力及びインバータ99の出力が与えられている。インバータ99はオペランドアドレス計算ステージ33から出力されている分岐予測信号53を反転するために備えられている。従って、 ANDゲート69の出力信号はプリフェッチ中止信号19が”１”で分岐予測信号53が”０”の場合に”１”になる。これは、プリフェッチ中止信号19によりオペランドアクセス部１からプリフェッチの中止が要求されており、且つ分岐予測信号53によりオペランドアドレス計算ステージ33から分岐予測が行なわれていないことが知らされている場合にのみ ANDゲート69の出力信号が”１”になることを意味している。
この ANDゲート69の出力信号は前述のゲート65の制御信号となっている。
【００５４】
ANDゲート96及び97の一方の入力端子には前述の如く ANDゲート67の出力信号が入力されているが、 ANDゲート96の他方の入力端子には分岐予測信号53をインバータ98で反転した信号が、 ANDゲート97の他方の入力端子には分岐予測信号53がそのまま入力されている。 ANDゲート96の出力信号は第１プリフェッチ要求信号７として、 ANDゲート97の出力信号は第２プリフェッチ要求信号８としてオペランドアクセス部１へそれぞれ出力されている。従って、 ANDゲート67の出力信号が”１”である場合に、オペランドアドレス計算ステージ33で分岐予測が行なわれている場合 (分岐予測信号53が”１”) には ANDゲート97から第２プリフェッチ要求信号８が、分岐予測が行なわれていない場合 (分岐予測信号53が”０”) には ANDゲート96から第１プリフェッチ要求信号７がそれぞれオペランドアクセス部１へ出力される。
【００５５】
次に、上述のような構成のフェッチリトライ機構60の動作について、図12のタイミングチャートを参照して説明する。ここで、プリフェッチ中止信号19は最初は無効 (”０”) であるとする。
なお、図12のタイミングチャートにおいて、波形W11 は本発明のデータ処理装置の内部クロックを、波形W12 は内部アドレスバス６上のアドレスを、波形W13 はタグ部２から出力されるタグ情報を、波形W14 はデータ部３から出力されるデータを、波形W15 はキャッシュヒット信号11を、波形W16 はプリフェッチ要求信号51を、波形W17 は第１プリフェッチ要求信号７を、波形W18 は第２プリフェッチ要求信号８を、波形W19 はキャッシュヒット信号11を、波形W20 はプリフェッチ中止信号19を、波形W21 は内部データバス14上のデータをそれぞれ示している。
【００５６】
図12のクロックCL11において、オペランドアドレス計算ステージ33からオペランドアドレス52と共にプリフェッチ要求信号51がオペランドフェッチステージ34に入力されると、オペランドアドレス52の値がFAレジスタ61Ａに入力されて保持される。
この際、実行ステージ35からフェッチ要求信号57が出力されていれば（その値が”１”であれば）、 ANDゲート67の出力信号が”１”になっているためゲート64が開路する。これにより、オペランドアドレス52は内部アドレスバス６へ出力されてオペランドアクセス部１に与えられる。それと共に、プリフェッチ要求信号51もオペランドアクセス部１へ出力されるが、この時点でパイプライン中の先行する命令で分岐予測が実行されていなければ分岐予測信号53が”０”なので第１プリフェッチ要求信号７が、パイプライン中の先行する命令で分岐予測がされていれば分岐予測信号53が”１”になるので第２プリフェッチ要求信号８がそれぞれ出力される。
【００５７】
オペランドアドレス計算ステージ33からプリフェッチ要求信号51が入力された時点で実行ステージ35からフェッチ要求信号57が与えられていなければゲート64が開路しないので、オペランドアドレス52は内部アドレスバス６へは出力されずにFAレジスタ61Ａに保持されたままとなる。そして、実行ステージ35からフェッチ要求信号57が出力されると ANDゲート67の出力が”１”になってゲート66が開路するので、FAレジスタ61Ａからオペランドアドレス52がフェッチアドレスとして内部アドレスバス６へ出力され、同時にパイプライン中の先行する命令で分岐予測が実行されていなければ分岐予測信号53が”０”なので第１プリフェッチ要求信号７がオペランドアクセス部１へ出力される。
【００５８】
パイプラインの先行する命令で分岐予測がされていても (分岐予測信号53が”１”であっても) 、たとえばフェッチするアドレスが即値で指定されている場合にはそのアドレス値はプログラム実行中には動的に変化することはなく、プログラマが明示的に指定したアドレス値であるため、必ずアクセス可能な領域を示すと考えられる。そのような場合は、分岐予測が外れて外部装置をアクセスしても問題はないので、第２プリフェッチ要求信号８ではなく、第１プリフェッチ要求信号７が出力される。
【００５９】
第１プリフェッチ要求信号７または第２プリフェッチ要求信号８がオペランドアクセス部１に受け付けられてアクノリッジ信号55が返送されてくるとゲート63が開路するので、アクセス要求の対象になっているアドレス値、即ちFAレジスタ61Ａに保持されているオペランドアドレス52ががFBレジスタ61Ｂに入力されて保持され、FAレジスタ61Ａは次の命令のオペランドアドレス52を取り込むことが出来るようになる。
【００６０】
オペランドアクセス部１は、図３に示されているように、第１プリフェッチ要求信号７または第２プリフェッチ要求信号８が入力されると、フェッチされるべきデータがキャッシュメモリ内にあればキャッシュヒットとしてキャッシュヒット信号11をクロックCL12において出力し、対応するデータをデータ出力レジスタ10から内部データバス14へ出力する。そして、オペランドフェッチステージ34は内部データバス14上のデータを実行ステージ35へ送る。また、第１プリフェッチ要求信号７発生時には、内蔵キャッシュメモリへのアクセスと同時にバスインタフェイス部13にもフェッチ要求が出力される。そして、キャッシュミスすれば外部データバス16からオペランドデータが取り込まれて演算部25へ送られる。キャッシュヒットすれば、キャッシュヒット信号11により外部へのフェッチはキャンセルされる。
【００６１】
但し、クロックCL14, CL15において上述同様に動作した後、第２プリフェッチ要求信号８の発生時点でキャッシュミスした場合には、クロックCL15におてAND ゲート76からプリフェッチ中止信号19が出力されてオペランドフェッチステージ34にキャッシュミスしたことが知らされる。
【００６２】
プリフェッチ中止信号19が入力されると、オペランドフェッチステージ34はオペランドアドレス計算ステージ33からの入力を止め、パイプラインの先行するステージにある予測段階の分岐命令が確定するまで処理を中断する。その後、実行ステージ35において分岐条件が確定し、分岐が予測通り実行されればクロックCL17において実行ステージ35からフェッチ要求信号57が出力されて処理が再開される。但し、この時点で分岐予測信号53は”０”になっているため今回は第１プリフェッチ要求信号７が出力される。
【００６３】
ところで、上述のプリフェッチ中止信号19の出力により処理が中断した時点では既に更に次の命令のオペランドアドレスがFAレジスタ61Ａに入力されている可能性があるため、処理を再開した１回目の時点ではまだラッチ95はクリアされておらず、また分岐予測信号53は”０”になっているのでゲート65が開路している。これにより、FBレジスタ61Ｂに保持されている中断したフェッチのフェッチアドレスが内部アドレスバス６へ出力される。そして、その直後にラッチ95の値がクリアされる。
なお、分岐が予測と異なっていれば、パイプライン中のデータを全てクリアして分岐先の命令から順にパイプラインに取り込んで処理を再開する。
【００６４】
本発明のデータ処理装置の一実施例としてのマイクロプロセッサのオペランドフェッチに関する動作のフローを図13のフローチャートに示す。なお、図13のフローチャートは、オペランドアドレス計算ステージ33から出力される１回のプリフェッチ要求に対する動作を示している。
【００６５】
まずオペランドアドレス計算ステージ33からプリフェッチ要求信号51が出力され (ステップS1) 、この時点で分岐予測が行なわれていなければ、換言すれば分岐予測信号53が”０”であれば、ステップS8以降ステップS11 の動作が行なわれる。このステップS8乃至ステップS11 は通常のメモリフェッチ動作である。
具体的には、オペランドアクセス部１内のキャッシュメモリ及び外部データバス16がアクセスされ (ステップS8) 、キャッシュヒットすれば、換言すればキャッシュヒット信号11が”１”であればオペランドアクセス部１内のキャッシュメモリがアクセスされてデータがフェッチされ (ステップS10)、キャッシュミスすれば、換言すればキャッシュヒット信号11が”０”であれば外部データバス16がアクセスされてデータがフェッチされる (ステップS11)。
【００６６】
一方、ステップS2において分岐予測が行なわれていれば、換言すれば分岐予測信号53が”１”であれば、オペランドアクセス部１内のキャッシュメモリのみがアクセスされる (ステップS3) 。この結果、キャッシュヒットすれば (ステップS4) 、オペランドアクセス部１内のキャッシュメモリからデータフェッチが行なわれる (ステップS10)。
ステップS4においてキャッシュミスすれば、一旦オペランドフェッチが中断される (ステップS5) 。ここで分岐予測の結果が未だ未確定であれば、フェッチ中断の状態になる (ステップS5) 。しかし、分岐予測が正しかった場合には前述のステップS8以降の動作が行なわれる。但し、分岐予測に失敗した場合はパイプラインの各ステージを一旦クリアして分岐先の命令が新たにパイプラインに取り込まれる。
【００６７】
従来のマイクロプロセッサであれば、図13に破線にて示されているように、ステップS2において分岐予測が行なわれている場合にはフェッチ中断 (ステップS5) の状態になり、分岐予測が正しかったことが確定した後にステップS8乃至ステップS11 のメモリフェッチ動作が実行されていた。しかし、本発明のデータ処理装置としてのマイクロプロセッサでは、ステップS3及びステップS4の動作を付加することにより、ステップS4でキャッシュヒットした場合には、ステップS5のフェッチ中断ステップS5乃至ステップS6を行なわずに、ステップS10 のメモリフェッチ動作を直ちに行い、ステップS4においてキャッシュミスした場合にのみ外部バスのアクセスを抑止して分岐予測の成功が確定した後に再度アクセスするようにした。
この一連の動作は上述のフェッチリトライ機構により実現される。このようなフェッチリトライ機構により、本発明のデータ処理装置では処理能力が向上する。
【００６８】
なお、上記実施例ではデータのフェッチに関して説明したが、命令のフェッチに関しても同様に実施可能であることは言うまでもない。
【００６９】
【発明の効果】
以上に詳述したように本発明によれば、分岐予測が行なわれている場合には外部記憶装置へのアクセスが禁止されるが、分岐予測が正しかったことが確定して外部記憶装置へのアクセスが可能になった時点で直ちにアクセスがアドレス保持手段に保持されているアドレスにより行なわれる。このため、分岐予測が行なわれていてもキャッシュミスした場合、換言すれば外部記憶装置へのアクセスが必要な場合にのみ処理が中断されるので、キャッシュメモリを有効に利用することが可能になる。
また、パイプラインの先行する命令で分岐予測がされていても、たとえばフェッチするアドレスが即値で指定されるアドレッシングモード、即ち即値モードである場合にはそのアドレス値はプログラム実行中には動的に変化することはなく、プログラマが明示的に指定したアドレス値であるため、必ずアクセス可能な領域を示すと考えられるので、分岐予測が外れて外部装置をアクセスしても問題はなく、従って外部記憶装置へのアクセスが行なわれる。これにより、内蔵RAM に命令，データがキャッシュされていない場合に所定のアドレッシングモードにおいては外部記憶装置へのアクセスを行なうことが可能になる。
【図面の簡単な説明】
【図１】本発明のデータ処理装置の一実施例としての32ビットマイクロプロセッサ及びその周辺回路の構成を示すブロック図である。
【図２】本発明のデータ処理装置の６段のパイプライン処理機構を示す模式図である。
【図３】本発明に係るデータ処理装置のキャッシュメモリを内蔵したオペランドアクセス部の構成例を示すブロック図である。
【図４】本発明のデータ処理装置の内蔵キャッシュモードと内蔵RAM モードとの切り換え及びキャッシュヒット信号の生成に関する回路の構成例を示す回路図である。
【図５】本発明のデータ処理装置のキャッシュアクセスの際のタイミングチャートである。
【図６】  DMADDRレジスタのフィールド及びその意味を示す模式図である。
【図７】  NCADDRレジスタのフィールド及びその意味を示す模式図である。
【図８】   BMPレジスタのフィールド及びその意味を示す模式図である。
【図９】   BMCレジスタのフィールド及びその意味を示す模式図である。
【図１０】本発明のデータ処理装置のオペランドフェッチステージとその前後の各ステージとの間で送受される信号及びオペランドフェッチステージとオペランドアクセス部との間で送受される信号を示す模式図である。
【図１１】オペランドフェッチステージ内に位置するフェッチリトライ機構の構成例を示す回路図である。
【図１２】  本発明のデータ処理装置のフェッチリトライ機構の動作を示すタイミングチャートである。
【図１３】本発明のデータ処理装置のオペランドフェッチに関する動作の手順を示すフローチャートである。
【符号の説明】
１    オペランドアクセス部
４    DMADDRレジスタ
13    バスインタフェイス部
15    外部アドレスバス
16    外部データバス
17    外部制御信号線
18    比較器
19    プリフェッチ中止信号
28    主記憶装置
31    命令フェッチステージ
32    命令デコードステージ
33    オペランドアドレス計算ステージ
34    オペランドフェッチステージ
35    実行ステージ
36    ストアステージ
41    セレクタ
60    フェッチリトライ機構
61B   FBレジスタ
74    EXORゲート
75     ANDゲート
900    BMCレジスタ
【図１】
0003639927.tif 000002
【図２】
0003639927.tif 000003
【図３】
0003639927.tif 000004
【図４】
0003639927.tif 000005
【図５】
0003639927.tif 000006
【図６】
0003639927.tif 000007
【図７】
0003639927.tif 000008
【図８】
0003639927.tif 000009
【図９】
0003639927.tif 000010
【図１０】
0003639927.tif 000011
【図１１】
0003639927.tif 000012
【図１２】
0003639927.tif 000013
【図１３】
0003639927.tif 000014