(57)【要約】 【課題】  安全に例外処理を実行することを可能としつつ、回路規模が大きくなってしまうことを抑制することを可能とすること。【解決手段】  ベクトル命令を処理可能であり、その処理中に例外処理の実行を保留させることが可能なプロセッサ１であって、例外処理の要求信号が出力されたときにその例外処理に先立ってベクトルフラッシュ命令をユニット３で処理し、ベクトル命令の処理中に、ベクトルフラッシュ命令が処理されるとベクトル命令の処理が終了するまでフェッチ部２及びプログラムコントローラ５で例外処理の実行を保留するようにした。【選択図】    図１
2005135089.tif 000002
【特許請求の範囲】
【請求項１】
ベクトル命令あるいはマルチサイクル命令を処理可能であり、その処理中に例外処理の実行を保留させることが可能なプロセッサであって、
前記例外処理の開始条件が成立したときにその例外処理に先立って特定命令を処理する特定命令処理手段と、前記ベクトル命令あるいは前記マルチサイクル命令の処理中に、前記特定命令が処理されると前記ベクトル命令あるいは前記マルチサイクル命令の処理が終了するまで前記例外処理の実行を保留させる例外処理保留手段を備えたことを特徴とするプロセッサ。
【請求項２】
前記例外処理保留手段は、前記ベクトル命令あるいは前記マルチサイクル命令の最後のサイクルの処理中に前記例外処理に関する命令コードをデコードさせることを特徴とする請求項１に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクトル命令あるいはマルチサイクル命令を処理可能であり、その処理中に例外処理の実行を保留させることが可能なプロセッサに関する。
【背景技術】
【０００２】
従来、この種の技術としては、例えば、例外処理の直前に、ベクトル命令がとりうる最大サイクル数分のＮＯＰ命令、つまりその最大サイクル数の間、何もしない命令を実行し、ベクトル命令の処理中に例外処理の開始条件が成立しても、ベクトル命令の処理が終了するまでは例外処理の実行が保留されるようにした技術がある。
また、演算対象となるデータを記憶させるレジスタそれぞれに対して使用中であるか否かを示すスコアボードを設け、後続命令が取得されたときに、スコアボードを参照して、その後続命令が使用するレジスタを先行命令が使用しているか否かを検出し、先行命令が使用しているときには、先行命令の処理が終了するまでは後続命令の実行が保留されるようにした技術もある（例えば、特許文献１参照）。
【特許文献１】特開平６−２４２９４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記従来技術のうち前者のものにあっては、常に、例外処理の直前にベクトル命令がとりうる最大サイクル数分のＮＯＰ命令を実行するようになっているため、例えば、例外処理の開始条件が成立すると、スカラ命令の処理のみが行われていて、ベクトル命令の処理が行われていないとき、つまり安全に例外処理を実行することができるときにも例外処理の実行が保留され、処理効率が低下してしまう恐れがあった。
【０００４】
また、後者のものにあっては、先行命令の処理が終了するまで後続命令の実行を保留するようになっているため、ベクトル命令の処理が行われていて、安全に例外処理を実行することができないときのみ例外処理の実行が保留されるものの、例えば、レジスタの数が多いと、スコアボードの数が増え、回路規模が大きくなってしまう恐れがあった。
そこで、本発明は、上記従来技術の未解決の課題を解決することを目的とし、処理効率が低下してしまうことを防止し、また回路規模が大きくなってしまうことを抑制しつつ、安全に例外処理を実行することを可能なプロセッサを提供することを課題とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、第１の発明であるプロセッサは、ベクトル命令あるいはマルチサイクル命令を処理可能であり、その処理中に例外処理の実行を保留させることが可能なプロセッサであって、前記例外処理の開始条件が成立したときにその例外処理に先立って特定命令を処理する特定命令処理手段と、前記ベクトル命令あるいは前記マルチサイクル命令を処理中であることが検出されているときに、前記特定命令が処理されたことが検出されると前記ベクトル命令あるいは前記マルチサイクル命令の処理が終了するまで前記例外処理の実行を保留させる例外処理保留手段を備えたことを特徴とする。
【０００６】
この第１の発明によれば、ベクトル命令あるいはマルチサイクル命令の処理中に例外処理に関する命令コードを取得した場合、そのベクトル命令あるいはマルチサイクル命令の処理が終了するまで、例外処理の実行を保留する。そして、ベクトル命令あるいはマルチサイクル命令の処理が終了すると、例外処理を実行する。したがって、例外処理が行われることにより、処理効率が低下してしまう事態を防止することができ、またベクトル命令あるいはマルチサイクル命令の演算結果が不正な値となる事態を防止することができ、安全に例外処理を実行することが可能となる。
【０００７】
また、例外処理の開始条件が成立したときに特定命令の命令コードを取り出すようにすることで、新たなハードウェアを追加せずに、例外処理の開始条件の成立を検出でき、回路規模が大きくなってしまうことを抑制することが可能となる。
また、第２の発明であるプロセッサは、前記例外処理保留手段は、前記ベクトル命令あるいは前記マルチサイクル命令の最後のサイクルの実行中に前記例外処理に関する命令コードをデコードさせることを特徴とする。
【０００８】
この第２の発明によれば、ベクトル命令あるいはマルチサイクル命令の処理の終了直後に、例外処理を実行でき、前記ベクトル命令あるいは前記マルチサイクル命令の処理が終了してから前記例外処理に関する命令コードをデコードさせる方法に比べ、例外処理の保留時間の長期化を防止することが可能となる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の情報表示装置の一実施形態を図面に基づいて説明する。
図１は、本発明の実施形態におけるプロセッサ１の概略構成を示すブロック図である。この図１に示すように、プロセッサ１は、フェッチ部２と、複数のユニット（デコード部、ＡＬＵ部、乗算部、加減算部、ロード部、ストア部等）３と、レジスタファイル部４と、プログラムコントローラ５と、例外制御部６とを含んで構成されている。
【００１０】
これらのうちフェッチ部２は、プログラムコントローラ５からローレベルのインターロック信号が出力されているか否かを判定し、ローレベルのインターロック信号が出力されている場合には、後述するプログラムカウンタ９に記憶されているアドレスに従って、図示しないメモリから命令コードを取り出し、その取り出された命令コードを複数のユニット３やプログラムコントローラ５に出力する。また、ローレベルのインターロック信号が出力されていない場合、つまりハイレベルのインターロック信号が出力されている場合には、取り出された命令コードを保持し、ユニット３等に出力することを禁止する。
【００１１】
また、各ユニット３は、フェッチ部２から出力された命令コードをデコードし、そのデコード結果に基づいてレジスタファイル部４からデータを読み出し、その読み出されたデータに従って演算を実行し、その演算結果をレジスタファイル部４に書き込む。
さらに、各ユニット３は、図２に示すように、ベクトルステータスコントローラ７と、ベクトルステータスレジスタ８とを含んで構成されている。このベクトルステータスコントローラ７は、図３に示すように、まずプロセッサ１がベクトル命令を実行していない動作状態（以下、状態Ｓ１（Normal）とも呼ぶ。）であるとして、ベクトル命令を実行していることを示すベクトルステータスフラグＦ１を「０」のリセット状態とし、そのリセット状態とされたベクトルステータスフラグＦ１をベクトルステータスレジスタ８に記憶させたのち、フェッチ部２から出力される命令コードのデコード結果に基づいて、対応するユニット３がベクトル命令を取得したか否かを判定し、取得した場合には（Req=1）ベクトル命令を実行する動作状態（以下、状態Ｓ２（Vec）とも呼ぶ。）に遷移し、そうでない場合には（Req=0）この状態Ｓ１を継続する。
【００１２】
前記状態Ｓ２では、ベクトルステータスフラグＦ１を「１」のセット状態とし、そのセット状態とされたベクトルステータスフラグＦ１をベクトルステータスレジスタ８に記憶させたのち、ベクトル命令の最後の実行サイクルの開始タイミングであるか否かを判定し、最後の実行サイクルの開始タイミングである場合には、ベクトル命令の最後の実行サイクルを実行する状態（以下、状態Ｓ３（Vec-or-Dec）とも呼ぶ。）に遷移し、そうでない場合にはこの状態Ｓ２を継続する。
【００１３】
前記状態Ｓ３では、ベクトルステータスフラグＦ１を「０」のリセット状態とし、そのリセット状態とされたベクトルステータスフラグＦ１をベクトルステータスレジスタ８に記憶させたのち、対応するユニット３がベクトル命令を取得したか否かを判定し、取得した場合には（Req=1）前記状態Ｓ２に遷移し、そうでない場合には（Req=0）前記状態Ｓ１に遷移する。
【００１４】
さらに、レジスタファイル部４は、各ユニット３の演算対象となるデータを記憶する所定数のスカラレジスタ及びベクトルレジスタを形成する。
また、プログラムコントローラ５は、プロセッサ１全体を制御するものであり、プログラムカウンタ（ＰＣ）９と、例外処理用プログラムカウンタ（ＥＰＣ）１０とを含んで構成されている。このプログラムカウンタ９は、フェッチ部２に取り出させる命令コードのアドレスを記憶するレジスタである。また、プログラムカウンタ９は、例外制御部６からベクトルフラッシュ命令の命令コードのアドレスや例外処理に関する命令コードのアドレスが出力されると、その出力されたアドレスを記憶する。また、例外処理用プログラムカウンタ１０は、例外制御部６からベクトルフラッシュ命令の命令コードのアドレスが出力されたときに、プログラムカウンタ９に記憶されていたアドレスを退避しておくためのレジスタである。
【００１５】
さらに、プログラムコントローラ５は、図４に示すように、各ユニット３のベクトルステータスレジスタ８に記憶されているベクトルステータスフラグＦ１を取得し、その取得されたベクトルステータスフラグＦ１間の論理和（OR）を算出する。また、プログラムコントローラ５は、フェッチ部２から出力される命令コードをデコードし、そのデコード結果が、例外処理の直前に処理されるベクトルフラッシュ命令であるか否かを判定し、ベクトルフラッシュ命令である場合には、ユニット３でベクトルフラッシュ命令が処理されていることを示すベクトルフラッシュフラグＦ２を「１」のセット状態とし、そうでない場合にはベクトルフラッシュフラグＦ２を「０」のリセット状態とする。
【００１６】
そして、プログラムコントローラ５は、各ベクトルステータスフラグＦ１間の論理和とベクトルフラッシュフラグＦ２との論理積（AND）を算出し、その算出結果が「１」である場合にはハイレベルのインターロック信号をフェッチ部２に出力し、そうでない場合にはローレベルのインターロック信号をフェッチ部２に出力する。
また、例外制御部６は、プロセッサ１に接続された各種デバイスから出力される例外処理の要求信号を取得すると、ベクトルフラッシュ命令の命令コードのアドレスと例外処理に関する命令コードのアドレスとを順次プログラムコントローラ５に出力する。
【００１７】
以上のような構成によって、ベクトル命令の処理中に例外処理の要求信号が例外制御部６に出力されると、プログラムコントローラ５によって、プログラムカウンタ９の値が例外処理用プログラムカウンタ１０に一旦退避され、ベクトルフラッシュ命令のアドレスがプログラムカウンタ９に記憶される。すると、フェッチ部２によって、プログラムカウンタ１０に記憶されているアドレスに従って、ベクトルフラッシュ命令に関する命令コードが取得され、その取得された命令コードが出力され、プログラムコントローラ５によって、その出力された命令コードがデコードされ、ベクトルステータスフラグＦ１が「１」のセット状態とされ、またベクトルステータスコントローラ７によって、ベクトルフラッシュフラグＦ２も「１」のセット状態とされ、それらのフラグＦ１及びＦ２に基づいてハイレベルのインターロック信号が出力される。そして、フェッチ部２によって、取り出された命令コード、つまり例外処理に関する命令コードの出力が禁止されて、例外処理の実行が保留される。
【００１８】
また、ベクトル命令が実行されるうちに、ベクトル命令の最後のサイクルの実行タイミングとなると、ベクトルステータスコントローラ７によって、ベクトルステータスフラグＦ１が「０」のリセット状態とされ、またプログラムコントローラ５によって、ベクトルフラッシュフラグＦ２が「０」のリセット状態に保持され、それらのフラグＦ１及びＦ２に基づいてローレベルのインターロック信号が出力される。そして、フェッチ部２によって、取り出された命令コードがデコードされて、例外処理が実行される。その後、例外処理が終了すると、プログラムコントローラ５によって、例外処理用プログラムカウンタ１０に退避させていたアドレスがプログラムカウンタ９に復帰され、例外処理の要求信号が例外制御部６に出力される前に実行していた処理が再開される。
【００１９】
図５は、ベクトル命令の処理中に、例外処理の要求信号を取得した場合のプロセッサ１の動作例を示すタイミングチャートである。図５においては、クロック信号によって規定されるサイクル毎に、命令コードが順次入力されている。各命令コード（Inst1〜８）は、フェッチアドレスの演算（Fadr）、フェッチ（F）、デコード（D）及び実行（E）の各ステージによって構成されている。また、ベクトル命令である命令コードInst1の実行ステージは、８サイクル（E1〜E8）にわたっている。
【００２０】
図５において、サイクル「１」、「２」では、フェッチ部２によって、各ユニット３及びプログラムコントローラ５に命令コードInst1、２が順に入力され、ベクトルステータスコントローラ７によって、ベクトルステータスフラグＦ１が「０」のリセット状態とされ、プログラムコントローラ５によって、ベクトルフラッシュフラグＦ２が「０」のリセット状態とされ、それらベクトルステータスフラグＦ１とベクトルフラッシュフラグＦ２とに基づいてローレベルのインターロック信号が出力され、通常の動作状態とされる。
【００２１】
また、サイクル「３」では、各ユニット３によって、フェッチ部２から出力されたベクトル命令の命令コードInst1がデコードされ、ベクトルステータスコントローラ７によって、ベクトルステータスフラグＦ１が「１」のセット状態とされ、またプログラムコントローラ５で、ベクトルフラッシュフラグＦ２が「０」のリセット状態に保持され、それらベクトルステータスフラグＦ１とベクトルフラッシュフラグＦ２とに基づいてインターロック信号が出力されない状態が継続され、ベクトル命令を実行する動作状態とされる。
【００２２】
そして、ベクトル命令を実行する動作状態が継続されているときに、サイクル「４」を経て、サイクル「５」で、例外処理の要求信号を例外制御部６が取得したとする。すると、サイクル「６」で、例外制御部６からベクトルフラッシュ命令の命令コードのアドレスが出力され、プログラムコントローラ５によって、プログラムカウンタ９に記憶されていたアドレスが例外処理用プログラムカウンタ１０に退避され、ベクトルフラッシュ命令の命令コードのアドレスがプログラムカウンタ９にセットされ、サイクル「７」で、フェッチ部２によって、そのプログラムカウンタ９にセットされたアドレスに従って、ベクトルフラッシュ命令の命令コードInst6が取り出される。また同時に、サイクル「７」では、例外処理に関する命令コードのアドレスが出力され、プログラムコントローラ５によって、その出力されたアドレスInst7がプログラムカウンタ９にセットされる。
【００２３】
さらに、サイクル「８」では、プログラムコントローラ５において、ベクトルフラッシュ命令の命令コードがデコードされ、ベクトルフラッシュフラグＦ２が「１」のセット状態とされ、またベクトルステータスコントローラ７で、ベクトルステータスフラグＦ１が「１」のセット状態に保持され、それらベクトルステータスフラグＦ１とベクトルフラッシュフラグＦ２とに基づいてハイレベルのインターロック信号がフェッチ部２に出力され、サイクル「９」で、フェッチ部２によって、取り出された命令コード、つまり例外処理に関する命令コードInst6及び7の出力が禁止され、例外処理の実行が保留される。
【００２４】
そして、例外処理の実行が保留された状態が継続され、サイクル「１０」を経て、命令コードInst1の最後の実行サイクルであるサイクル「１１」では、ベクトルステータスコントローラ７によって、ベクトルステータスフラグＦ１が「０」のリセット状態とされ、またプログラムコントローラ５によって、ベクトルフラッシュフラグＦ２が「１」のセット状態で保持され、それらベクトルステータスフラグＦ１とベクトルフラッシュフラグＦ２とに基づいてローレベルのインターロック信号が出力され、フェッチ部２によって、例外処理に関する命令コードInst7及び８の出力が再開され、例外処理に関する命令コードInst 7がデコードされ、例外処理を実行する動作状態とされる。
【００２５】
そして、例外処理を実行する動作状態が継続され、サイクル「１２」「１３」を経て、サイクル「１４」で、例外処理が終了すると、プログラムコントローラ５によって、例外処理用プログラムカウンタ１０に退避させていたアドレスがプログラムカウンタ９に復帰され、例外処理の要求信号が出力される前に実行していた通常の動作状態が再開される。
以上のように、本実施の形態に係るプロセッサ１は、ベクトル命令の処理中にベクトルフラッシュ命令が処理されると、そのベクトル命令の処理が終了するまで、例外処理の実行を保留する。そして、ベクトル命令の処理が終了すると、保留していた例外処理を実行する。したがって、例外処理が行われることにより、処理効率が低下してしまう事態を防止することができ、またベクトル命令の演算結果が不正な値となる事態を防止することができ、安全に例外処理を実行することが可能となる。
【００２６】
また、ベクトルフラッシュ命令がデコードされたときに、ベクトルフラッシュフラグＦ２を「１」のセット状態とされ、ハイレベルのインターロック信号が出力されるようにしたため、新たなハードウェアを追加せずに、例外処理の開始条件の成立を検出でき、回路規模が大きくなってしまうことを抑制することが可能となる。
さらに、ベクトル命令の最後のサイクルの処理中に例外処理に関する命令コードをデコードするようにしたため、ベクトル命令の処理の終了直後に、例外処理を実行でき、ベクトル命令の処理が終了してから例外処理に関する命令コードをデコードさせる開始方法に比べ、例外処理の保留時間の長期化を防止することが可能となる。
【００２７】
なお、図１のユニット３が特定命令処理手段を構成し、図１のフェッチ部２及びプログラムコントローラ５が例外保留手段を構成する。
また、上記実施形態は、本発明に係るプロセッサの一例を示したものであり、その構成等を限定するものではない。
例えば、上記実施形態では、ベクトル命令を処理可能なプロセッサに適用した例を示したが、これに限られるものではなく、例えば、マルチサイクル命令を処理可能なプロセッサに適用し、マルチサイクル命令の処理中に、ベクトルフラッシュ命令が処理されるとマルチサイクル命令の処理が終了するまで例外処理の実行を保留させるようにしてもよい。
【図面の簡単な説明】
【００２８】
【図１】本発明のプロセッサの一実施形態の構成を示す概略構成図である。
【図２】図１のユニットの内部構成を示すブロック図である。
【図３】図１のプロセッサの動作状態を示す状態遷移図である。
【図４】図１のプログラムコントローラの内部構成を示すブロック図である。
【図５】図１のプロセッサの動作を示すタイミングチャートである。
【符号の説明】
【００２９】
１はプロセッサ、２はフェッチ部（例外保留手段）、３はユニット（特定命令処理手段）、４はレジスタファイル部、５はプログラムコントローラ（例外保留手段）、６は例外制御部、７はベクトルステータスコントローラ、８はベクトルステータスレジスタ、９はプログラムカウンタ、１０は例外処理用プログラムカウンタ
【図１】
2005135089.tif 000003
【図２】
2005135089.tif 000004
【図３】
2005135089.tif 000005
【図４】
2005135089.tif 000006
【図５】
2005135089.tif 000007