(57)【特許請求の範囲】
【請求項１】
命令を実行する演算部と、
前記演算部で実行する命令をデコードし、オペコードを出力する命令デコード部と、
割り込み信号を受け付ける割り込みレジスタと、を備え、
前記命令デコード部は、命令に対応させて前記オペコードを記憶した命令コードマップを備え、入力された前記命令に応じて前記オペコードを出力し、
前記命令デコード部によりデコードされる前記命令は、一般命令及び追加命令のうちの少なくとも一方を含み、
前記命令コードマップは、前記一般命令に対して出力する一般オペコードのセットを記憶する通常命令領域と、前記追加命令に対して出力する追加オペコードのセットを記憶する追加命令領域とを含み、前記割り込みレジスタが受け付けた前記割り込み信号の種類に応じて前記追加命令領域に記憶された前記追加オペコードのセットを他のオペコードのセットに切り替え、
前記割り込み信号は、タイマー処理ハンドラを起動する割り込み信号、クロック処理ハンドラを起動する割り込み信号、ウォッチドックリセット処理ハンドラを起動する割り込み信号、及びＤＭＡ転送ハンドラを起動するする割り込み信号のうちのいずれかを含むことを特徴とするプロセッサ。
【請求項２】
前記命令デコード部はさらに、
前記一般命令をデコードし、一般オペコードを出力する一般命令デコーダと、
前記追加命令をデコードし、追加オペコードを出力する複数の追加命令デコーダであって、前記追加オペコードの前記セットのそれぞれに対応した複数の追加命令デコーダと、
前記複数の追加命令デコーダの出力する追加オペコードを、前記割り込みレジスタのデータに応じて選択するオペコード選択回路と、
前記一般命令デコーダの出力する前記一般オペコードと、前記オペコード選択回路の出力する前記追加オペコードの一方を、選択する最終選択回路と、を備える請求項１記載のプロセッサ。
【請求項３】
前記割り込み信号は、多重割り込み関係を有し、
前記割り込みレジスタは、スタック構造を有する請求項１または２記載のプロセッサ。
【請求項４】
前記割り込み信号に応じて行う処理を記述する命令列のうち少なくとも一部の命令列を記憶するシーケンサをさらに備え、
前記割り込み信号に応じて処理を行うときにフェッチされた前記追加命令が、前記シーケンサに記憶された命令列を開始させる命令である場合、前記シーケンサは、前記少なくとも一部の命令列を前記命令デコード部に出力する請求項１から３のいずれか１項記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサに関する。
【背景技術】
【０００２】
近年、プロセッサ（ＣＰＵ）を搭載した半導体処理装置が広い分野で使用されている。例えば、自動車は、車種によっては１００個程度の半導体処理装置が搭載されている。このような特定用途向けの半導体処理装置では、コスト面から汎用の半導体処理装置が使用されるが、実際に使用される状態では、特定用途の特化した処理を繰り返し行う場合が多く、特定の命令が頻繁に実行される。そこで、顧客アプリケーションの最適化要求に柔軟かつ迅速に対応するため、アプリケーションごとに、特定用途向けの命令を追加することが可能なプロセッサを搭載した半導体処理装置が使用される。このようなプロセッサでは、追加命令のための専用インターフェースを用意して、専用のオペコードを割り当てる方法が一般的に用いられている。
【０００３】
図１は、命令を追加することが可能なプロセッサを搭載した一般的なコンピュータのハードウェアの概略構成図である。このようなコンピュータが半導体処理装置として実現され、各部に搭載される。図１において、矢印付き太線がデータの流れを、矢印付き細線が命令の流れを、矢印付き破線が命令オペレーション制御信号の流れを示す。
【０００４】
図１の（Ａ）に示すように、コンピュータは、プロセッサ１１と、命令メモリ２１と、データメモリ２２と、追加命令を処理する特定処理演算器２３と、を有する。プロセッサ１１は、命令デコード部１２と、演算器１３と、レジスタファイル１４と、データ転送ブロック１５と、を有する。命令デコード部１２は、命令メモリ２１から読み出した命令をフェッチし、フェッチした命令をデコードして演算器１３で実行するための命令オペレーション制御信号（オペコード）を生成して演算器１３に出力する。さらに、命令デコード部１２は、命令の実行に必要なデータの情報をデータ転送ブロック１５に送る。データ転送ブロック１５は、命令を実行するのに必要なデータをデータメモリ２２から読み出し、レジスタファイル１４に格納する。演算器１３は、オペコードに従ってレジスタファイル１４に格納されたデータ（データを使用しない場合もある）を処理し、処理結果のデータをレジスタファイル１４に格納する。データ転送ブロック１５は、処理結果のデータを、レジスタファイル１４から読み出して、データメモリ２２に記憶する。以上が、プロセッサの一般的な動作である。
【０００５】
特定処理演算器２３が追加命令を処理する場合には、特定処理演算器２３をプロセッサ１１に接続する。プロセッサ１１は、特定処理演算器２３を接続するためのインターフェースを有する。このインターフェースは、命令デコード部１２がデコードした命令が追加命令である場合に、命令オペレーション制御信号（オペコード）を特定処理演算器２３に出力し、特定処理演算器２３とレジスタファイル１４との間でデータを入出力する。ここでは、このインターフェースおよび演算器１３を有する部分を演算部と称する。特定処理演算器２３は、追加命令に対応するオペコードに従ってレジスタファイル１４に格納されたデータを処理し、処理結果のデータをレジスタファイル１４に格納する。
【０００６】
図１の（Ｂ）は、命令デコード部１２が有する命令コードマップの例を示す図である。命令デコード部１２は、命令に対応させてオペコードを記憶した命令コードマップを有し、入力された命令に対応するオペコードを読み出して出力する。
【０００７】
図１の（Ｂ）は、４×８の命令コードマップを示しており、３２個の命令に対してオペコードを発生する。例えば、追加命令は、４行目の１×８個の領域に割り当てられ、演算器１３が実行する一般命令は１〜３行目の３×８個の領域に割り当てられる。
【０００８】
図１の（Ｂ）に示すように、３２個の命令領域のうち、８個の命令領域が追加命令に割り当てられるため、一般命令は２４個以内に制限され、追加命令は８個以内に制限されるため、一般命令および追加命令の両方とも実行可能な命令数を確保するのが難しかった。この命令数の確保は、追加命令を処理する特定処理演算器２３を接続する場合に限らず、演算器１３が基本的な命令だけでなく特殊な命令を実行する場合などにも問題になる。
命令コードマップを大きくすれば、実行可能な命令数を増加することが可能であるが、その分命令コードを表すビット数を増加させる必要があり、プロセッサの回路規模が大幅に増加する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平５−８８８８５号公報
【特許文献２】特開平１１−２１２８０４号公報
【特許文献３】特開２００１−１８４２０９号公報
【特許文献４】特開平７−１３７５８号公報
【特許文献５】特表２００４−５１１０４４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
実施形態によれば、プロセッサが有している機能を利用して、実際の使用に適した形で実行可能な命令数を増加することができるプロセッサが実現される。
【課題を解決するための手段】
【００１１】
本発明の観点によれば、命令を実行する演算部と、演算部で実行する命令をデコードし、オペコードを出力する命令デコード部と、割り込み信号を受け付ける割り込みレジスタと、を備え、命令デコード部は、命令に対応させて前記オペコードを記憶した命令コードマップを備え、入力された前記命令に応じてオペコードを出力し、命令コードマップは、命令の一部である追加命令に対して出力するオペコードのセットを切替オペコードとして複数セット記憶しており、割り込み信号に応じて切替オペコードのセットを切り替えるプロセッサが提供される。
【発明の効果】
【００１２】
実施形態のプロセッサによれば、割り込み信号と関連して命令コードマップを切り替えることにより、実際の使用に適した形で実行可能な命令数を増加することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、命令を追加することが可能なプロセッサを搭載した一般的なコンピュータのハードウェアの概略構成図である。
【図２】図２は、第１実施形態のコンピュータのハードウェアの概略構成図である。
【図３】図３は、割込レジスタ（ＲＥＧ）の構成を示す図である。
【図４】図４は、命令デコード部における命令デコードマップを示す図であり、（Ａ）から（Ｄ）は割込み番号１から４に対応して追加命令領域のオペコードの変化を示す。
【図５】図５は、第１実施形態のコンピュータにおける命令デコード部の構成を示す図である。
【図６】図６は、追加命令を使用する割込み処理のプログラム例を示す図である。
【図７】図７は、割り込み信号がプロセッサに入力され、追加命令デコーダが切り替わるタイミングを示すタイムチャートである。
【図８】図８は、第２実施形態のコンピュータのハードウェアの概略構成図である。
【発明を実施するための形態】
【００１４】
図２は、第１実施形態のコンピュータのハードウェアの概略構成図である。
第１実施形態のコンピュータは、プロセッサ３１と、命令メモリ２１と、データメモリ２２と、追加命令を処理する特定処理演算器２３と、を有する。プロセッサ３１は、命令デコード部３２と、演算器３３と、レジスタファイル３４と、データ転送ブロック３５と、割込レジスタ（ＲＥＧ）３６と、を有する。命令デコード部３２は、追加命令デコーダ４２を有する。
【００１５】
半導体処理装置を含むチップ内外で発生される割込み信号を受け付けるプロセッサが知られている。プロセッサ３１は、割込み信号に応答して、割込みハンドラに分岐して割り込み処理を実行し、割込み処理が終了するとリターン（ＲＥＴＩ）命令により元の処理を実行するように復帰する。割込み信号は、実行する優先度に応じて割り込み番号が割り当てられた多重割込み構造を有している。プロセッサ３１は、割込み処理を実行中により優先度の高い割込み信号を受け付けると、それまでの割込み処理を中断してより優先度の高い割込み処理を実行し、それが終了した後、中断した割込み処理に復帰する。割込みＲＥＧ３６は、割込み番号を保持するレジスタであり、プロセッサ３１が割込みハンドラに分岐してからＲＥＴＩ命令により元の処理に復帰するまで、割込み番号を保持する。
【００１６】
図３は、割込レジスタ（ＲＥＧ）３６の構成を示す図である。上記のような優先度に応じた多重割り込み番号を保持するため、割込ＲＥＧ３６はスタック構造を有し、保持している割り込み番号に応じて通知信号を出力する。
【００１７】
図２に戻り、命令デコード部３２は、命令メモリ２１から読み出した命令をフェッチし、フェッチした命令をデコードし、演算器３３または特定処理演算器２３で実行するための命令オペレーション制御信号（オペコード）を生成する。ここで、デコードした命令が演算器３３で実行する一般命令である場合には、生成したオペコードを演算器３３に出力し、デコードした命令が特定処理演算器２３で実行する追加命令である場合には、生成したオペコードを特定処理演算器２３に出力する。追加命令であるか否かの判定は、割込ＲＥＧ３６からの割込み番号を示す通知信号によって、追加命令デコーダ４２内で割込み番号ごとに個別にデコードすることにより行なわれる。また、追加命令デコーダ４２は、割込み番号に応じて命令コードマップを切り替える。
【００１８】
命令デコード部３２は、オペコードを演算器１３または特定処理演算器２３に出力すると共に、命令の実行に必要なデータの情報をデータ転送ブロック１５に送る。データ転送ブロック３５は、命令を実行するのに必要なデータをデータメモリ２２から読み出し、レジスタファイル３４に格納する。演算器３３は、オペコードに従ってレジスタファイル３４に格納されたデータを処理し、処理結果のデータをレジスタファイル３４に格納する。データ転送ブロック３５は、処理結果のデータを、レジスタファイル３４から読み出して、データメモリ２２に記憶する。
【００１９】
以上のように、第１実施形態のコンピュータは、割込ＲＥＧ３６が割込み信号を受け付け、割込ＲＥＧ３６における割込み信号の受け付け状態に応じて、追加命令デコーダ４２が制御される以外の構成および動作は、図１で説明した一般的なコンピュータと同じである。
【００２０】
図４は、命令デコード部３２における命令デコードマップを示す図であり、（Ａ）から（Ｄ）は割込み番号１から４に対応して追加命令領域のオペコードの変化を示す。
割込み番号１の割込み信号はタイマー処理ハンドラを起動し、割込み番号２の割込み信号はクロック処理ハンドラを起動し、割込み番号３の割込み信号はウォッチドックリセット処理ハンドラを起動し、割込み番号４の割込み信号はＤＭＡ転送ハンドラを起動する。
【００２１】
タイマー処理ハンドラで処理を行う場合には、割込み番号１の割込み信号をプロセッサ３１に入力する。これに応じて、命令デコードマップは、４行目の後半の４個の命令が、タイマー処理ハンドラでの処理に使用する追加命令に対応するように切り替えられる。割込み番号１の割込み信号が入力されてタイマー処理ハンドラが起動されている間、追加命令デコーダ４２は、命令デコードマップの４行目の後半の４個の命令コードが入力されると、図４の（Ａ）の命令デコードマップに規定されたオペコードを出力する。同様に、割込み番号２の割込み信号が入力されてクロック処理ハンドラが起動されている間、追加命令デコーダ４２は、命令デコードマップの４行目の後半の４個の命令コードが入力されると、図４の（Ｂ）の命令デコードマップに規定されたオペコードを出力する。割込み番号３または４の割込み信号が入力されてウォッチドックリセット処理ハンドラまたはＤＭＡ転送ハンドラが起動されている場合には、図４の（Ｃ）または（Ｄ）の命令デコードマップに規定されたオペコードが出力される。なお、命令デコードマップの追加命令領域以外の命令、すなわち図４の（Ａ）から（Ｄ）の１〜３行目の２４個の命令および４行目の前半の４個の命令が入力された場合には、割込み信号の入力にかかわらず、同一の各領域に対応するオペコードが出力される。
【００２２】
以上のように、命令デコードマップにおける３２個の命令領域のうち、２８個が通常命令領域であり、４個が追加命令領域であり、４個が追加命令領域は各割込み番号ごとに異なる追加命令領域とすることができるので、合計では１６個の追加命令を実装できる。したがって、図１の（Ｂ）の例と比較すると、実装できる通常命令は４個増加し、追加命令は８個増加する。
【００２３】
前述のように、特定用途向けの命令を追加することが可能なプロセッサを搭載した半導体処理装置が使用されるが、その顧客アプリケーションを分析すると、追加命令は、割込み処理に対応して使用されることが多いことが判明した。そのため第１実施形態のように、追加命令領域に対応する追加命令を、割込み信号の種類に応じて切り替えても実用上問題がない。言い換えれば、追加命令を特定の割込み処理でのみ使用できるようにしても問題ない。さらに、第１実施形態では、割り込みハンドラを起動する割込み信号を入力するだけであり、命令デコードマップにおける追加命令領域の切替を指示する信号を追加および入力する必要がなく、信号数の増加およびステップ数の増加を抑制できる。なお、異なる割り込み処理で、同一の命令を追加命令として別々に規定してもよい。
【００２４】
図５は、第１実施形態のコンピュータにおける命令デコード部３２の構成を示す図である。
図５に示すように、命令デコード部３２は、一般命令デコーダ４１と、追加命令デコーダ４２Ａ〜４２Ｄと、追加命令オペコード選択回路４３と、最終選択回路４４と、論理和ゲート４５と、ＡＮＤゲート４６を有する。
【００２５】
一般命令デコーダ４１は、追加命令以外の一般命令をデコードし、一般オペコードを出力する。
【００２６】
追加命令デコーダ４２Ａ〜４２Ｄは、それぞれ追加命令をデコードし、割り込み番号に対応した追加命令オペコードを出力する。例えば、追加命令デコーダ４２Ａは、図４の（Ａ）の割り込み番号１の追加命令領域の命令コードに対応したオペコードを出力する。以下、追加命令デコーダ４２Ｂ〜４２Ｄも、同様に、図４の（Ｂ）〜（Ｄ）の追加命令領域の命令コードに対応したオペコードを出力する。追加命令デコーダ４２Ａ〜４２Ｄのそれぞれは、追加命令をデコードすると同時に、デコードできたことを示すValid信号を生成し、追加命令オペコードと同時に出力する。もし、追加命令が有効な領域ではなくデコードができなかった場合、つまりＮＯＰ(No OPeration)がデコードされた場合は、Valid信号はネゲートされる。
【００２７】
追加命令オペコード選択回路４３は、追加命令デコーダ４２Ａ〜４２Ｄの出力する追加命令オペコードを、割込ＲＥＧ３６の出力する通知信号に応じて選択する。例えば、通知信号が割り込み信号１を示す場合には、追加命令オペコード選択回路４３は、追加命令デコーダ４２Ａの出力を選択する。以下同様に、追加命令オペコード選択回路４３は、通知信号が割り込み信号２〜４を示す場合には、追加命令デコーダ４２Ｂ〜４２Ｄの出力する追加命令オペコードを選択する。さらに、追加命令オペコード選択回路４３は、追加命令デコーダ４２Ａ〜４２Ｄの出力するValid信号の論理和を演算し、いずれかの追加命令デコーダ４２Ａ〜４２Ｄの出力するValid信号が有効である場合には“１”を、そうでない場合には“０”を出力する。
【００２８】
論理和ゲート４５は、通知信号の論理和を演算する。演算結果は、割り込みハンドラのいずれかが起動されている場合に“１”、いずれの割り込みハンドラも起動されていない場合に“０”になる。ＡＮＤゲートは、Valid信号と論理和ゲート４５の論理積を演算する。演算結果は、割り込みハンドラのいずれかが起動されており、追加命令が有効にデコードされた場合に“１”に、それ以外の場合に“０”になる。
【００２９】
最終選択回路４４は、ＡＮＤゲートの出力が“０”の場合に一般命令デコーダ４１の出力する一般オペコードを選択し、ＡＮＤゲートの出力が“１”の場合に追加命令オペコード選択回路４３の出力する追加命令オペコードを、選択する。
【００３０】
図６は、追加命令を使用する割込み処理のプログラム例を示す図である。この割込み処理は、タイマー処理である。このプログラムでは、一般命令では明に指定しなければいけない内容でも、割込みハンドラごとに処理が明確であるものについては、命令コードの中に処理を定義せずとも、デコード情報として予め織り込んでおくことができる。そのため、命令コードサイズを最小限にすることが出来る。この例では、タイマー制御レジスタを使用するが、ウォッチドックタイマ制御レジスタを使用する場合も同じである。さらに、この二つの制御レジスタはそれぞれ専用の割込み処理ハンドラ内でアクセスする場合には独立しているため、それぞれのステータス(status)レジスタを読む命令コードは同じにすることが可能であり、命令コードサイズを増やさずに済む。
【００３１】
図７は、割り込み信号がプロセッサ３１に入力され、追加命令デコーダ４２Ａ〜４２Ｄが切り替わるタイミングを示すタイムチャートである。図７に示すように、割り込みが入っていない状態で割込み信号１が入ったため、割込ＲＥＧ３６の出力する通知信号は“１”になり、追加命令が入力された場合には、追加命令デコーダ４２Ａの出力する追加命令オペコードが選択される状態になる。なお、フェッチした命令コードが追加命令領域でない場合は、一般命令が選択される。ここで、割込み信号１に対応する割込みハンドラの処理中に、より優先度の高い割り込み信号２が入った場合、プロセッサ３１は優先度の高い割込み処理に制御を移し、同時に割込ＲＥＧ３６の出力も“２”に切り替わる。割込み処理信号２に対応する割込み処理が終了して、復帰命令（RETI）信号が出力されると、割込み処理は保留されていた割込み処理信号１に対応する割込みハンドラへ制御が移る。
【００３２】
第１実施形態で例として示した追加命令は、簡単のために演算命令としたが、本質的にはこれに限定する必要は無く、ロードストアや分岐命令などでもよい。
また、第１実施形態において、プロセッサは、割込み番号を契機に命令空間のページを切り替えるため、割込ＲＥＧへのレジスタライトアクセスや、ソフトウェアによって遅延割り込みを発生させることによっても、命令空間のページ切り替えが可能である。
【００３３】
第１実施形態では、割込み信号により、割込み処理ハンドラが起動し、命令は命令メモリ２１から命令を順次読み出して割込み処理を行う。これに対して、次に説明する第２実施形態では、割込み処理で行う処理を記述する一連の命令列の一部の命令列をプロセッサに記憶しておき、割込み処理ハンドラが起動されるとプロセッサ内に記憶されている命令列を利用して割込み処理を実行する。プロセッサ内に記憶されている命令列は、追加命令により開始される一連の命令である。
【００３４】
図８は、第２実施形態のコンピュータのハードウェアの概略構成図である。
第２実施形態のコンピュータは、プロセッサ５１内に、シーケンサ５２と、命令選択回路５３と、を有することが、第１実施形態と異なり、他の部分は同じである。シーケンサ５２は、割込み処理で行う処理を記述する一連の命令列の一部の命令列を記憶しており、この命令列は追加命令により開始される。命令選択回路５３は、シーケンサ５２から命令が出力される場合にはシーケンサ５２から出力される命令を選択し、それ以外の場合には命令メモリ２１から読み出した命令を選択する。
【００３５】
第２実施形態では、プロセッサ５１は、割込みハンドラが起動されていない状態では、命令メモリ２１から命令を読み出して通常の処理を行う。割り込み信号が入力されると、第１実施形態と同様に、割り込み信号の種類に応じて命令デコードマップの追加命令領域が切り替えられる。ここで、命令メモリ２１からフェッチした追加命令が、シーケンサ５２に記憶した命令列を開始させる追加命令である場合には、シーケンサ５２から出力される命令にしたがって割り込み処理を行なう。なお、命令メモリ２１からフェッチした追加命令が、シーケンサ５２に記憶した命令列を開始させる追加命令でない場合には、第１実施形態と同様の割込み処理を行う。
【００３６】
以上、第１および第２実施形態を説明したが、各種の変形例が可能であるのはいうまでもない。例えば、第１および第２実施形態では、追加命令を実行する特定処理演算器２３を接続し、割り込み信号の種類に応じて命令デコードマップの追加命令領域が切り替える場合を例として説明した。しかし、第１および第２実施形態の構成は、特定処理演算器２３を接続しない場合にも同様に適用できる。例えば、命令デコードマップの追加命令領域に相当する領域を切替領域として、割り込み信号の種類に応じて、切替領域の命令を、割り込み信号の種類に応じた命令に切り替える。この場合でも、切替領域に対応する命令を、割込み信号の種類に応じて、割り込み処理に適した特殊な追加命令に切り替えることにより、顧客の所望の命令を実際の使用に即して利用可能にし、信号数の増加およびステップ数の増加を生じない。
【００３７】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【符号の説明】
【００３８】
２１    命令メモリ
２２    データメモリ
２３    特定処理演算器
３１    プロセッサ
３２    命令デコード部
３３    演算器
３４    レジスタファイル
３５    データ転送ブロック
３６    割込レジスタ（ＲＥＧ）
４１    一般命令デコーダ
４２，４２Ａ−４２Ｄ    追加命令デコーダ
【図１】
0005922353.tif 000002
【図２】
0005922353.tif 000003
【図３】
0005922353.tif 000004
【図４】
0005922353.tif 000005
【図５】
0005922353.tif 000006
【図６】
0005922353.tif 000007
【図７】
0005922353.tif 000008
【図８】
0005922353.tif 000009