(57)【特許請求の範囲】
【請求項１】
主記憶装置から読み出した少数の命令を保持する命令記憶手段と、
前記命令記憶手段から命令を読み込み命令発行バッファに保持し、前記命令発行バッファに保持した命令をパイプライン処理する命令処理手段を備える命令処理プロセッサにおいて、
前記命令処理手段から前記命令記憶手段へのアクセスができない期間に、前記命令処理手段が分岐命令を実行したことにより前記命令記憶手段に命令読み出し要求が発生した場合、前記命令読み出しの読み出し先アドレスを保持する命令アドレス保持手段をパイプラインの外に備え、
前記命令処理手段は、前記命令処理手段から前記命令記憶手段へのアクセスができない期間中であっても、前記命令発行バッファに保持済みの命令の命令処理を継続することを特徴とする命令処理プロセッサ。
【請求項２】
前記命令アドレス保持手段に保持されるアドレスが、そのアドレスの実行順において、１つ前の命令と比べ、不連続であることを特徴とする請求項１に記載された命令処理プロセッサ。
【請求項３】
前記命令記憶手段が、キャッシュメモリであることを特徴とする請求項１または請求項２に記載された命令処理プロセッサ。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、キャッシュメモリを利用する命令処理プロセッサに関し、特に、高速動作中にキャッシュミスによる命令処理の停止を減少させる命令処理プロセッサに適用して有効な技術に関するものである。
【０００２】
【従来の技術】
従来、ＲＩＳＣなどの高機能情報処理装置の命令処理プロセッサの性能向上の手段として、キャッシュメモリが使用されている。
【０００３】
キャッシュメモリについては、「ヘネシー＆パターソン  コンピュータ・アーキテクチャ設計・実現・評価の定量的アプローチ、Ｊｏｈｎ  Ｌ．Ｈｅｎｎｅｓｓｙ、Ｄａｖｉｄ  Ａ．Ｐａｔｔｅｒｓｏｎ著、日経ＢＰ社」等の多くの文献に記載されており、その概要は次の通りである。
【０００４】
キャッシュメモリは、主記憶装置と命令処理プロセッサの間に存在する小容量で高速な記憶装置であり、実行中のプログラムが局所的に参照しているアドレスの内容を保持している。
【０００５】
このキャッシュメモリを使用し、実行中のプログラムが、主記憶装置よりも高速な記憶装置であるキャッシュメモリを参照して、メモリへのアクセスを行うことによって、実行中のプログラムのメモリアクセスに要する時間を短縮し、その結果として、命令処理プロセッサの性能を向上させることが可能である。
【０００６】
キャッシュメモリを利用する場合、キャッシュメモリの記憶容量が少ないため、必要情報がキャッシュメモリの中に入っていない状態が、発生する可能性がある。この状態を、キャッシュミスという。
【０００７】
前記キャッシュミスの間に、キャッシュメモリが主記憶装置からキャッシュミスとなった情報を読み出すため、その間に命令処理装置がキャッシュメモリの情報を読み出すことはできない。
【０００８】
【発明が解決しようとする課題】
本発明者は、前記従来技術を検討した結果、以下の問題点を見いだした。
【０００９】
すなわち、従来の命令処理プロセッサにおいて、キャッシュミスが発生した場合、命令アドレスを変更する命令とその後続命令の処理を止める必要があるという問題があった。
【００１０】
クロックがますます高速化する命令処理プロセッサでは、命令アドレスを変更する命令とその後続命令の処理を止める処理の時間的負担のため、キャッシュミス中の処理が重要な課題になり、これからの命令処理プロセッサの性能向上に大きな影響を与えることになる。
【００１１】
本発明の目的は、命令処理手段から命令記憶手段へのアクセスができない期間に、前記命令処理手段から前記命令記憶手段に命令読み出し要求がある場合、前記命令処理手段での命令処理の状態を保持する時間的負担を軽減することが可能な技術を提供することにある。
【００１２】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述及び添付図面によって明らかになるであろう。
【００１３】
【課題を解決するための手段】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、下記のとおりである。
【００１４】
（１）少数の命令を保持する命令記憶手段と、命令処理手段を備える命令処理プロセッサにおいて、前記命令処理手段から前記命令記憶手段へのアクセスができない期間に、前記命令処理手段が命令を実行したことにより前記命令記憶手段に命令読み出し要求が発生した場合、前記命令読み出しの読み出し先アドレスを保持する命令アドレス保持手段を備える。
【００１５】
（２）命令アドレス保持手段に保持されるアドレスが、そのアドレスの実行順において、１つ前の命令と比べ、不連続である前記命令処理プロセッサ。
【００１６】
（３）前記命令記憶手段が、キャッシュメモリである前記命令処理プロセッサ。
【００１７】
【作用】
前記各手段によれば、まず、前記命令処理手段にて、前記命令記憶手段から供給される命令を処理する。
【００１８】
次に、前記命令処理手段での次の命令の実行に備え、前記命令記憶手段から命令を供給する。
【００１９】
この時、もし、前記命令処理手段へ供給する命令が、前記命令記憶手段に存在しないという状態が発生すると、主記憶装置から前記命令記憶手段に命令の供給を行う。
【００２０】
前記主記憶装置から、前記命令記憶手段へ命令を転送している間に、前記命令処理手段から前記命令記憶手段に命令読み出しがある場合、前記命令処理手段からの命令読み出しの読み出し先アドレスを、前記命令アドレス保持手段に保持する。
【００２１】
前記主記憶装置から、前記命令記憶手段への命令の転送が終了した後、前記命令アドレス保持手段に保持されているアドレスの命令を、前記命令記憶手段から読み出して、前記命令処理手段にて実行する。
【００２２】
この結果、前記命令処理手段での命令処理の状態を保持する時間的負担を軽減することが可能となる。
【００２３】
【実施例】
以下、図面を参照して本発明の実施例を詳細に説明する。
【００２４】
なお、実施例を説明するための全図において、同一機能を有するものは同一符号を付け、その繰り返しの説明は省略する。
【００２５】
（実施例１）
図１は、本発明の一実施例（実施例１）である命令処理プロセッサの概念を示す図である。図１において、１０は命令記憶手段、３０は命令処理手段、４０は命令アドレス保持手段である。
【００２６】
命令処理手段３０での命令の実行に必要な命令と、そのいくつかの後続命令が、命令記憶手段１０から読み出され、信号線１１を通して命令処理手段３０に送られ、命令処理手段３０が命令の処理を行う。
【００２７】
命令処理手段３０での命令処理に必要な命令が、命令記憶手段１０に保持されていなければ、必要な命令が主記憶装置から命令記憶手段１０に送られる。
【００２８】
命令記憶手段１０が、主記憶装置から命令の読み出し中の状態で、命令処理手段３０から、信号線３１を通して、命令の読み出し信号が送られたら、読み出しの対象となる命令アドレスを命令アドレス保持手段４０に一時的に保持する。
【００２９】
次に、命令記憶手段１０が、主記憶装置から行っている命令の読み出しが終了したら、命令アドレス保持手段４０に一時的に保持された命令アドレスが、信号線４１を通してセレクタ５０に選択され、信号線５１を通して命令記憶手段１０から読み出される。
【００３０】
図２は、本発明の一実施例（実施例１）である命令処理プロセッサの概略構成と主記憶装置を示す図である。図２において、１００は主記憶装置、１０２は命令記憶手段である命令キャッシュ、１０４は命令発行バッファ、１０６は命令処理手段である命令処理ユニット、１２０は命令アドレス保持手段である命令アドレスバッファ、１３５は命令アドレスバッファ制御ユニットである。
【００３１】
図２では、後述する図６に示す命令キャッシュ１０２を制御するキャッシュ制御ユニット１０９は省略している。
【００３２】
本実施例１の命令処理プロセッサでは、４命令が命令キャッシュ１０２から同時に命令発行バッファ１０４に書き込まれ、命令処理ユニット１０６により、最大２命令を並列に処理することが可能である。
【００３３】
命令処理ユニット１０６が、必要な命令をアドレス線１０７を通して命令キャッシュ１０２から読み出す。
【００３４】
読み出す命令が命令キャッシュ１０２に保持されていれば、バス１０３を通して、読み出す命令とそのいくつかの連続アドレスの後続命令が、命令発行バッファ１０４に送られる。
【００３５】
命令発行バッファ１０４が、最大２命令をバス１０５を通して命令処理ユニット１０６に送る。
【００３６】
もし、プログラムの流れにより、不連続アドレスの命令が必要な場合、命令を読み出す信号が、アドレス線１０７を通してセレクタ１２２に選択され、アドレス線１２３により命令キャッシュ１０２を読み出す。
【００３７】
要求された命令が、命令キャッシュ１０２に保持されていなければ、アドレス線１２４を通して主記憶装置１００に命令の要求が出され、バス１０１を通して命令キャッシュ１０２に書き込まれる。
【００３８】
もし、命令要求がアドレス線１２３を通して行われている最中に、命令キャッシュ１０２がアドレス線１２４を通して主記憶装置１００に命令を要求していれば、命令アドレスバッファ制御ユニット１３５が、命令キャッシュ１０２から主記憶装置処理中信号１３１と、命令処理ユニット１０６から命令キャッシュ要求発生信号１３２より、アドレスバッファ書き込みイネーブル信号１３４を命令アドレスバッファ１２０に送り、命令アドレスバッファ１２０に、要求された命令アドレスを書き込む。
【００３９】
バス１０１を通して主記憶装置１００から命令キャッシュ１０２への処理が終了すれば、命令アドレスバッファ制御ユニット１３５が、主記憶装置処理中信号１３１と命令アドレスバッファ保持中信号１３３より命令アドレスバッファ出力信号選択信号１３６をセレクタ１２２に送り、命令アドレスバッファ出力１２１を選択し、アドレス線１２３を通して、命令キャッシュ１０２を読み出す。
【００４０】
図３は、本実施例１の命令処理プロセッサでの命令処理の概要を示すパイプライン図である。図３において、パイプラインのステージ数は６であり、各ステージの処理概要が、次の様に定義される。
【００４１】
ＰＣは命令アドレスを変更するステージ、ＩＦは命令を命令キャッシュ１０２から持ってくるステージ、Ｄは命令のデコードを行うステージ、Ｅは演算を行うステージ、Ａは演算用データを処理するステージ、Ｗは演算結果をレジスタに書き込むステージである。
【００４２】
また、図３において、１００、１１０、１２０等の記号は、命令キャッシュ１０２から持ってくる４命令を示し、０、１、２等の記号は、２命令の処理を示している。
【００４３】
キャッシュミスが命令５がＤ−ステージの時に生じ、キャッシュミスが発生した時点の処理中の命令２、３の処理が終了可能である。その後続命令４が、アドレスを変更する分岐命令であり、Ａ−ステージで分岐先アドレスであるターゲットアドレスを出す。
【００４４】
命令処理ユニット１０６の出力ラッチから分岐先のターゲットアドレスが出力される時、命令アドレスバッファ制御ユニット１３５が、主記憶装置処理中信号１３１と命令キャッシュ要求発生信号１３２からアドレスバッファ書き込みイネーブル信号１３４を生成し、命令アドレスバッファ１２０に書き込みの許可が行われ、アドレス線１０７のアドレスが書き込まれる。
【００４５】
キャッシュミスの処理が終了すれば、命令アドレスバッファ制御ユニット１３５が、主記憶装置処理中信号１３１と命令アドレスバッファ保持中信号１３３により命令アドレスバッファ出力信号選択信号１３６を生成し、セレクタ１２２を制御し、命令アドレスバッファ１２０のアドレスをアドレス線１２３に出す。
【００４６】
図６は、従来の命令処理プロセッサの概略構成と主記憶装置を示す図である。図６において、１０９はキャッシュ制御ユニットである。
【００４７】
命令処理ユニット１０６が、アドレス線１０７を用い、キャッシュ制御ユニット１０９を通じて、命令キャッシュ１０２に該当命令を読み出させ、読み出された命令をバス１０３を通し、命令発行バッファ１０４に送らせる。
【００４８】
命令発行バッファ１０４が、受け取った命令を同時処理可能であるかを判定し、命令処理ユニット１０６に命令を発行する。
【００４９】
キャッシュミスが発生したら、命令キャッシュ１０２が、キャッシュ制御ユニット１０９を通じて、主記憶装置１００に必要な命令を要求する。キャッシュ制御ユニット１０９が、その間に命令処理ユニット１０６からのアドレス線１０７を受け付けることはできない。
【００５０】
従来の命令処理プロセッサにおいて、キャッシュミスが発生し、命令キャッシュ１０２が、キャッシュ制御ユニット１０９を通じて、主記憶装置１００に必要な命令を要求する間、命令キャッシュ１０２が、キャッシュ制御ユニット１０９を通じて、命令処理ユニット１０６からのアドレス線１０７を受け付けることができない。
【００５１】
前記命令処理プロセッサにおいて、キャッシュミスが発生しても、命令発行バッファ１０４に命令が、キャッシュミス以前から保持されていたら、その命令を命令処理ユニット１０６に供給可能であるが、キャッシュミス中に命令処理ユニット１０６により処理可能である命令は連続命令に限り、分岐命令等の命令アドレスを変更する命令を処理することはできない。
【００５２】
このため、命令アドレスを変更する命令とその後続命令の処理を止める必要があり、その処理を行うための時間的負担が大きいという問題があった。
【００５３】
図７は、従来の命令処理プロセッサで命令処理中に、キャッシュミスが発生した時の処理概要を示すパイプライン図である。
【００５４】
図７に示す命令処理の例において、キャッシュミスは命令１５０がＤ−ステージに入った段階で発生するが、後続命令が命令発行バッファ１０４に保持されていれば、その後続命令が連続である限り処理可能である。
【００５５】
この例では、命令４が分岐命令であり、Ａ−ステージで命令アドレスを変更するため、命令アドレスを変更する命令とその後続命令の処理を止めるために、Ａ、Ｅ、とＤ−ステージをロックする必要がある。
【００５６】
しかし、このパイプラインロックを行うためには、命令４、５と６の情報を保持するラッチをすべて止める必要があり、これを実行するための時間的負担が大きい。
【００５７】
以上説明した様に、本実施例１の命令処理プロセッサにおいては、分岐先アドレスを命令アドレスバッファ１２０に保持するので、パイプラインをロックする必要がなくなり、高速な処理が可能となる。
【００５８】
（実施例２）
図４は、本発明の他の実施例（実施例２）である命令処理プロセッサの概略構成と主記憶装置を示す図である。図４において、本実施例２の命令処理プロセッサは、命令アドレスを保持する手段である命令アドレスバッファとして、命令アドレスバッファ−１（１２０Ａ）と命令アドレスバッファ−２（１２０Ｂ）の２つ備えるものである。
【００５９】
図４では、図６に示す命令キャッシュ１０２を制御するキャッシュ制御ユニット１０９は省略している。
【００６０】
ディレイドブランチを持つコンピュータアーキテクチャでは、現在実行している命令のアドレスであるフロントの命令アドレスと、次に実行する命令のアドレスであるバックの命令アドレスの保証が必要であるため、フロント用の命令アドレスとバック用の命令アドレスを保持することが必要である。
【００６１】
図５は、本実施例２の命令処理プロセッサでの命令処理の概要を示すパイプライン図である。図５において、命令５のＤ−ステージでキャッシュミスが発生するが、ディレイドブランチに分岐命令がさらにあるため、命令４のＡ−ステージでターゲットアドレスｔ１を出してから、命令５のＡ−ステージでターゲットアドレスｔ２を出す。
【００６２】
最初の分岐命令である命令４に対し、命令アドレスバッファ制御ユニット１３５が、主記憶装置処理中信号１３１と命令キャッシュ要求発生信号１３２からアドレスバッファ−１書き込みイネーブル信号１３４Ａを生成し、命令アドレスバッファ−１（１２０Ａ）に書き込みの許可が行われ、命令４のターゲットアドレスｔ１が書き込まれる。
【００６３】
次の分岐命令である命令５に対し、命令アドレスバッファ制御ユニット１３５が、主記憶装置処理中信号１３１と命令キャッシュ要求発生信号１３２と命令アドレスバッファ−１保持中信号１３３Ａからアドレスバッファ−２書き込みイネーブル信号１３４Ｂを生成し、命令アドレスバッファ−２（１２０Ｂ）に書き込みの許可が行われ、命令５のターゲットアドレスｔ２が書き込まれる。
【００６４】
キャッシュミスの処理が終了すれば、命令アドレスバッファ制御ユニット１３５が、主記憶装置処理中信号１３１と命令アドレスバッファ−１保持中信号１３３Ａにより命令アドレスバッファ出力信号選択信号１３６を生成し、セレクタ１２２を制御し、命令アドレスバッファ−１（１２０Ａ）に保持されたターゲットアドレスｔ１をアドレス線１２３に出す。
【００６５】
次のサイクルで命令アドレスバッファ制御ユニット１３５が、主記憶装置処理中信号１３１と命令アドレスバッファ−２保持中信号１３３Ｂにより命令アドレスバッファ出力信号選択信号１３６を生成し、セレクタ１２２を制御し、命令アドレスバッファ−２（１２０Ｂ）に保持されたターゲットアドレスをアドレス線１２３に出す。
【００６６】
以上説明した様に、本実施例２の命令処理プロセッサにおいては、キャッシュミス中に命令４により不連続アドレスが１つ出力され、そのディレイドスロットにある命令５で、もう１つの不連続アドレスが出力されても、それらの不連続アドレスを命令アドレスバッファ−１（１２０Ａ）と命令アドレスバッファ−２（１２０Ｂ）に保持するので、パイプラインをロックする必要がなくなり、高速な処理が可能となる。
【００６７】
以上、本発明を、前記実施例に基づき具体的に説明したが、本発明は、前記実施例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは勿論である。
【００６８】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば、下記のとおりである。
【００６９】
（１）少数の命令を保持する命令記憶手段と、命令処理手段を備える命令処理プロセッサにおいて、前記命令処理手段から前記命令記憶手段へのアクセスが可能でない期間に、前記命令処理手段から前記命令記憶手段に命令読み出し要求がある場合、前記命令読み出しの読み出し先アドレスを命令アドレス保持手段に保持するので、前記命令処理手段での命令処理の状態を保持する時間的負担を軽減することが可能である。
【図面の簡単な説明】
【図１】本発明の一実施例（実施例１）である命令処理プロセッサの概念を示す図である。
【図２】本発明の一実施例（実施例１）である命令処理プロセッサの概略構成と記憶装置を示す図である。
【図３】実施例１の命令処理プロセッサでの命令処理の概略を示すパイプライン図である。
【図４】本発明の他の実施例（実施例２）である命令処理プロセッサの概略構成と記憶装置を示す図である。
【図５】実施例２の命令処理プロセッサでの命令処理の概略を示すパイプライン図である。
【図６】従来の命令処理プロセッサの概略構成を示す図である。
【図７】従来の命令処理プロセッサでの命令処理の概略を示すパイプライン図である。
【符号の説明】
１０…命令記憶手段、３０…命令処理手段、４０…命令アドレス保持手段、１００…主記憶装置、１０２…命令キャッシュ、１０４…命令発行バッファ、１０６…命令処理ユニット、１２０…命令アドレスバッファ、１２０Ａ…命令アドレスバッファ−１、１２０Ｂ…命令アドレスバッファ−２、１３５…命令アドレスバッファ制御ユニット。
【図１】
0003574693.tif 000002
【図２】
0003574693.tif 000003
【図３】
0003574693.tif 000004
【図４】
0003574693.tif 000005
【図５】
0003574693.tif 000006
【図６】
0003574693.tif 000007
【図７】
0003574693.tif 000008