(57)【要約】【課題】  メモリの使用効率がよく、しかも、周辺回路も簡単に構成することができるプロセッサを提供する。【解決手段】  メモリＭのエリアＭｉには、実行された分岐命令のアドレスが記憶される。エリアＭａ、Ｍｂには、実行された分岐命令に設定された２つの分岐先アドレスが記憶される。エリアＭｄには、実行された分岐命令の実行結果が第１の分岐先アドレスか第２の分岐先アドレスかに応じて一定数が加算または減算される整数値データが記憶される。そして、分岐命令検出回路１１、正負検出回路１６、セレクタ１７が、カウンタ１から出力される命令コードが分岐命令であるか否かをチェックし、分岐命令であった場合にその分岐命令がエリアＭｉに記憶されているか否かをチェックし、記憶されていた場合はエリアＭｄ内のデータに基づいて、エリアＭａ、Ｍｂ内の分岐先アドレスの一方を予測アドレスとして選択しカウンタ１にセットする。【選択図】    図１
2006092112.tif 000002
【特許請求の範囲】
【請求項１】
実行された分岐命令のアドレスが記憶される第１の記憶手段と、
前記実行された分岐命令に設定された１または複数の分岐先アドレスが記憶される第２の記憶手段と、
前記実行された分岐命令の実行結果が記憶される第３の記憶手段と、
所定タイミング先において実行される命令コードが分岐命令であるか否かをチェックし、分岐命令であった場合にその分岐命令が前記第１の記憶手段に記憶されているか否かをチェックし、記憶されていた場合にその分岐命令に対応する前記第３の記憶手段内のデータが指示する前記第２の記憶手段内のデータに従って分岐予測を行う分岐予測手段と、
を具備することを特徴とするプロセッサ。
【請求項２】
実行された分岐命令のアドレスが記憶される第１の記憶手段と、
前記実行された分岐命令に設定された第１、第２の分岐先アドレスが記憶される第２の記憶手段と、
前記実行された分岐命令の実行結果が第１の分岐先アドレスか第２の分岐先アドレスかに応じて一定数が加算または減算される整数値データが記憶される第３の記憶手段と、
所定タイミング先において実行される命令コードが分岐命令であるか否かをチェックし、分岐命令であった場合にその分岐命令が前記第１の記憶手段に記憶されているか否かをチェックし、記憶されていた場合に該分岐命令に対応する前記第３の記憶手段内のデータに基づいて、該分岐命令に対応する前記第２の記憶手段内の分岐先アドレスの一方を選択して分岐予測アドレスとする分岐予測手段と、
を具備することを特徴とするプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサやシーケンサ等、プログラムを解読して種々の制御を行うプロセッサに関する。
【背景技術】
【０００２】
周知のように、プロセッサにおいては、分岐命令がしばしば利用される。この分岐命令を実行するに当たり、分岐命令をデコードして分岐先を検知し、その後分岐先へスキップする処理は、分岐先を検知してからそのアドレスへ飛ぶまでの間の時間がかかり、このため、処理速度が遅くなる欠点がある。そこで、近年、分岐先を過去の分岐実績から予め予測しておき、分岐命令をデコード後即座に分岐先へスキップできるようにしたプロセッサが開発されている。このプロセッサは、例えば、図２に示す分岐予測のためのフィールドをキャッシュメモリ内に持っており、分岐命令が格納される場合には、分岐予測結果、分岐先アドレスを専用フィールドに格納しておく。また、分岐予測は最近の実行結果から得る。そして、分岐予測フィールド内のデータに基づいて分岐を行う。図２において説明すると、インデックス２、Ｎ−１に分岐命令が格納されており、最近の実行結果によると、インデックス２の分岐命令では分岐が成立してアドレス１にジャンプしており、インデックスＮ−１の分岐命令では分岐が成立せず、インデックスＮの命令が引き続き実行される。
【０００３】
しかしながら、このプロセッサは分岐命令以外にも一様にメモリを割り振るため、メモリの使用効率が悪い欠点がある。
また、特許文献１にも同様のマイクロコンピュータが記載されている。しかしながら、このマイクロコンピュータもメモリの使用効率が悪く、また、周辺回路が複雑になる欠点がある。
【特許文献１】特開2001-142703号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は上記事情を考慮してなされたもので、その目的は、メモリの使用効率がよく、しかも、周辺回路も簡単に構成することができるプロセッサを提供することにある。
【課題を解決するための手段】
【０００５】
この発明は上記の課題を解決するためになされたもので、請求項１に記載の発明は、実行された分岐命令のアドレスが記憶される第１の記憶手段と、前記実行された分岐命令に設定された１または複数の分岐先アドレスが記憶される第２の記憶手段と、前記実行された分岐命令の実行結果が記憶される第３の記憶手段と、所定タイミング先において実行される命令コードが分岐命令であるか否かをチェックし、分岐命令であった場合にその分岐命令が前記第１の記憶手段に記憶されているか否かをチェックし、記憶されていた場合にその分岐命令に対応する前記第３の記憶手段内のデータが指示する前記第２の記憶手段内のデータに従って分岐予測を行う分岐予測手段とを具備することを特徴とするプロセッサである。
【０００６】
請求項２に記載の発明は、実行された分岐命令のアドレスが記憶される第１の記憶手段と、前記実行された分岐命令に設定された第１、第２の分岐先アドレスが記憶される第２の記憶手段と、前記実行された分岐命令の実行結果が第１の分岐先アドレスか第２の分岐先アドレスかに応じて一定数が加算または減算される整数値データが記憶される第３の記憶手段と、所定タイミング先において実行される命令コードが分岐命令であるか否かをチェックし、分岐命令であった場合にその分岐命令が前記第１の記憶手段に記憶されているか否かをチェックし、記憶されていた場合に該分岐命令に対応する前記第３の記憶手段内のデータに基づいて、該分岐命令に対応する前記第２の記憶手段内の分岐先アドレスの一方を選択して分岐予測アドレスとする分岐予測手段とを具備することを特徴とするプロセッサである。
【発明の効果】
【０００７】
この発明によれば、メモリの使用効率がよく、しかも、周辺回路も簡単に構成することができる効果が得られる。
【発明を実施するための最良の形態】
【０００８】
以下、図面を参照し、この発明の実施の形態について説明する。図１はこの発明の一実施の形態によるプロセッサの構成を示すブロック図である。この図において、符号１はプログラムセットカウンタであり、このプログラムセットカウンタ１のカウント値がアドレスバス２へ出力されると、プログラムＲＯＭ（図示略）から命令コードが読み出され、データバス３を介してシフトレジスタ４に書き込まれる。シフトレジスタ４はその命令コードをクロックパルスの所定タイミング遅延させてデコーダ５へ出力する。デコーダ５はシフトレジスタ４から出力される命令コードをデコードし、その結果をＡＬＵ（Arithmetic Logic Unit）６へ出力すると共に、命令コードが分岐命令であった場合は、２つの分岐先アドレス（ＡＤ−ａ、ＡＤ−ｂとする）をラッチ７に記憶させる。ＡＬＵ６はデコーダ５によってデコードされた命令を実行し、その結果をデータバス３へ出力する（図示省略）と共に回路各部へ出力する。
【０００９】
符号Ｍは分岐制御メモリであり、分岐命令のアドレスが記憶される分岐命令エリアＭｉと、分岐先アドレスＡＤ−ａが記憶される分岐先エリアＭａと、分岐先アドレスＡＤ−ｂが記憶される分岐先エリアＭｂと、整数値データが記憶される整数値データエリアＭｄとを有している。ここで、整数値データとは、過去に分岐先アドレスＡＤ−ａとＡＤ−ｂのどちらへより多く分岐されたかを示すデータであり、分岐先アドレスＡＤ−ａへより多く分岐された場合は（＋）の整数値、分岐先アドレスＡＤ−ｂへより多く分岐された場合は（−）の整数値となる。
【００１０】
符号１１は分岐命令検出回路であり、プログラムセットカウンタ１から出力されるアドレスが分岐命令エリアＭｉ内に記憶されているアドレスのいずれかと一致するか否かをチェックし、いずれかと一致した場合はプログラムセットカウンタ１へプリセット指令を出力する。１２はプログラム実行カウンタであり、ＡＬＵ６において実行される命令コードのアドレスを出力する。１３は分岐命令検出回路であり、プログラム実行カウンタ１２から出力されたアドレスが分岐命令エリアＭｉ内に記憶されているアドレスのいずれかと一致するか否かをチェックする。そして、いずれとも一致していない場合は、プログラム実行カウンタ１２内の分岐命令のアドレスを分岐命令エリアＭｉに記憶させると共に、ラッチ７内の分岐先アドレスＡＤ−ａ、ＡＤ−ｂを分岐先エリアＭａ、Ｍｂに記憶させ、また、整数値データエリアＭｄに、ＡＬＵ６における実行分岐先がＡＤ−ａであった場合は「＋１」を、ＡＤ−ｂであった場合は「−１」を書き込む。また、カウンタ１２内のアドレスが分岐命令エリアＭｉ内のアドレスのいずれかと一致していた場合は、ＡＬＵ６における実行分岐先がＡＤ−ａの時、演算回路１４へ指示して（図示省略）整数値データを＋１し、ＡＤ−ｂの時は整数値データを−１する。なお、整数値データエリアＭｄ内のデータが同エリアＭｄのビット数で決まる正の最大値または負の最小値に達した場合は、加算または減算が停止される。
【００１１】
符号１６は正負検出回路であり、整数値データエリアＭｄ内のデータが（＋）か（−）かを検出し、（＋）の場合には”１”を（−）の場合には”０”をセレクタ１７へ出力する。セレクタ１７は正負検出回路１６の出力が”１”の時分岐先エリアＭａ内のデータを出力し、”０”の時は分岐先エリアＭｂ内のデータを出力する。１８は分岐予測判定回路であり、ＡＬＵ６から出力される、実行分岐先と正負検出回路１６から出力される整数値データが示す分岐先とを比較し、両者が異なっていた時プログラムセットカウンタ１へ実行分岐先を出力してプリセットする。両者が一致していない場合は処理を行わない。
【００１２】
次に、上記実施形態によるプロセッサの動作を説明する。
このプロセッサは、前述したように、ＡＬＵ６において分岐命令が実行される毎に分岐命令に係るデータが分岐制御メモリＭに記憶される。すなわち、その分岐命令のアドレスが分岐命令エリアＭｉに記憶されていない場合は、カウンタ１２内の分岐命令のアドレス、ラッチ７内の分岐先アドレスＡＤ−ａ、ＡＤ−ｂがエリアＭｉ、Ｍａ、Ｍｂに各々記憶されると共に、整数値データエリアＭｄに、分岐先に応じて「＋１」または「−１」が記憶される。また、カウンタ１２内のアドレスが分岐命令エリアＭｉ内に記憶されていた場合は、ＡＬＵ６における実行分岐先に応じて整数値データが＋１または−１される。
【００１３】
この結果、分岐命令エリアＭｉ内に記憶された各分岐命令について、実行分岐先がＡＤ−ａの回数が多い場合は整数値データエリアＭｄの整数値データが（＋）となり、一方、分岐先ＡＤ−ｂへ分岐することが多い場合は整数値データエリアＭｄの整数値データが（−）となる。したがって、整数値データエリアＭｄ内の整数値データの極性を調べることによって、その分岐命令の分岐先を予測することができる。
【００１４】
分岐命令検出回路１１、セレクタ１７、正負検出回路１６は分岐制御メモリＭ内のデータに基づいて分岐命令の分岐先を予測し、予測した分岐先をプログラムセットカウンタ１へプリセットする。すなわち、分岐命令検出回路１１はプログラムセットカウンタ１から出力されるアドレスが分岐命令エリアＭｉに記憶されているアドレスのいずれかと一致するか否かをチェックし、一致した場合はプリセット信号をプログラムセットカウンタ１へ出力する。なお、以下、この一致した分岐命令を分岐命令ＢＮとする。上記一致があった場合、エリアＭｉ内の分岐命令ＢＮに対応する分岐先アドレスＡＤ−ａ、ＡＤ−ｂが分岐先エリアＭａ、Ｍｂから読み出され、セレクタ１７へ出力される。
【００１５】
一方、正負検出回路１６は、分岐命令ＢＮに対応する整数値データエリアＭｄ内のデータをチェックし、そのデータが（＋）であった時は”１”を、（−）であった時は（０）をセレクタ１７へ出力する。これにより、正負検出回路１６から”１”が出力された時はセレクタ１７から分岐先アドレスＡＤ−ａがプログラムセットカウンタ１へ出力され、上記プリセット信号によってカウンタ１にプリセットされ、また、正負検出回路１６から”０”が出力された時はセレクタ１７から分岐先アドレスＡＤ−ｂがプログラムセットカウンタ１へ出力され、上記プリセット信号によってカウンタ１にプリセットされる。このようにして、過去の分岐命令の実行に基づいて予測された分岐先アドレスがカウンタ１にプリセットされる。
【００１６】
次に、上述した分岐命令ＢＮがＡＬＵ６において実行され、分岐先アドレスがＡＬＵ６から出力されると、分岐予測判定回路１８が正負検出回路１６の出力に基づいて、予測分岐先がＡＬＵ６から出力された実行分岐先に一致しているか否かを判断する。そして一致していた場合はその分岐先アドレスの命令コードが既にシフトレジスタ４に用意されているので、そのまま処理が続けられる。一方、一致していなかった場合は、分岐先判定回路１８がクリア信号ＣＲをシフトレジスタ４へ出力してシフトレジスタ４をクリアし、また、プログラムセットカウンタ１にＡＬＵ６から出力された実行分岐先アドレスをプリセットする。以後、プリセットされたアドレスに基づいて実行分岐先の命令コードが読み出されてシフトレジスタ４にセットされ、次いで、その命令コードがデコーダ５によってデコードされ、ＡＬＵ６において実行される。
なお、整数値データエリアＭｄのビット数を変更することで、分岐履歴を変更することができ、これにより、予測精度を変更することができる。
【産業上の利用可能性】
【００１７】
この発明は、マイクロプロセッサやシーケンサ等のプロセッサに用いて好適である。
【図面の簡単な説明】
【００１８】
【図１】この発明の一実施形態によるプロセッサの構成を示すブロック図である。
【図２】従来のプロセッサにおける分岐予測を説明するための図である。
【符号の説明】
【００１９】
１…プログラムセットカウンタ、２…アドレスバス、３…データバス、５…デコーダ、６…ＡＬＵ、７…ラッチ、１１…分岐命令検出回路、１２…プログラム実行カウンタ、１３…分岐命令検出回路、１４…演算回路、１６…正負検出回路、１７…セレクタ、１８…分岐予測判定回路。Ｍ…分岐制御メモリ、Ｍｉ…分岐命令エリア、Ｍａ、Ｍｂ…分岐先エリア、Ｍｄ…整数値データエリア。
【図１】
2006092112.tif 000003
【図２】
2006092112.tif 000004