説明

プロセッサ

【課題】プロセッサが有している機能を利用して、実際の使用に適した形で実行可能な命令数を増加したプロセッサの実現。
【解決手段】命令を実行する演算部23,33と、演算部で実行する命令をデコードし、オペコードを出力する命令デコード部32と、割り込み信号を受け付ける割り込みレジスタ36と、を有し、命令デコード部は、命令に対応させてオペコードを記憶した命令コードマップを有し、入力された命令に応じてオペコードを出力し、命令コードマップは、命令の一部である追加命令に対して出力するオペコードのセットを切替オペコードとして複数セット記憶しており、割り込み信号に応じて切替オペコードのセットを切り替えるプロセッサ。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プロセッサに関する。
【背景技術】
【0002】
近年、プロセッサ(CPU)を搭載した半導体処理装置が広い分野で使用されている。例えば、自動車は、車種によっては100個程度の半導体処理装置が搭載されている。このような特定用途向けの半導体処理装置では、コスト面から汎用の半導体処理装置が使用されるが、実際に使用される状態では、特定用途の特化した処理を繰り返し行う場合が多く、特定の命令が頻繁に実行される。そこで、顧客アプリケーションの最適化要求に柔軟かつ迅速に対応するため、アプリケーションごとに、特定用途向けの命令を追加することが可能なプロセッサを搭載した半導体処理装置が使用される。このようなプロセッサでは、追加命令のための専用インターフェースを用意して、専用のオペコードを割り当てる方法が一般的に用いられている。
【0003】
図1は、命令を追加することが可能なプロセッサを搭載した一般的なコンピュータのハードウェアの概略構成図である。このようなコンピュータが半導体処理装置として実現され、各部に搭載される。図1において、矢印付き太線がデータの流れを、矢印付き細線が命令の流れを、矢印付き破線が命令オペレーション制御信号の流れを示す。
【0004】
図1の(A)に示すように、コンピュータは、プロセッサ11と、命令メモリ21と、データメモリ22と、追加命令を処理する特定処理演算器23と、を有する。プロセッサ11は、命令デコード部12と、演算器13と、レジスタファイル14と、データ転送ブロック15と、を有する。命令デコード部12は、命令メモリ21から読み出した命令をフェッチし、フェッチした命令をデコードして演算器13で実行するための命令オペレーション制御信号(オペコード)を生成して演算器13に出力する。さらに、命令デコード部12は、命令の実行に必要なデータの情報をデータ転送ブロック15に送る。データ転送ブロック15は、命令を実行するのに必要なデータをデータメモリ22から読み出し、レジスタファイル14に格納する。演算器13は、オペコードに従ってレジスタファイル14に格納されたデータ(データを使用しない場合もある)を処理し、処理結果のデータをレジスタファイル14に格納する。データ転送ブロック15は、処理結果のデータを、レジスタファイル14から読み出して、データメモリ22に記憶する。以上が、プロセッサの一般的な動作である。
【0005】
特定処理演算器23が追加命令を処理する場合には、特定処理演算器23をプロセッサ11に接続する。プロセッサ11は、特定処理演算器23を接続するためのインターフェースを有する。このインターフェースは、命令デコード部12がデコードした命令が追加命令である場合に、命令オペレーション制御信号(オペコード)を特定処理演算器23に出力し、特定処理演算器23とレジスタファイル14との間でデータを入出力する。ここでは、このインターフェースおよび演算器13を有する部分を演算部と称する。特定処理演算器23は、追加命令に対応するオペコードに従ってレジスタファイル14に格納されたデータを処理し、処理結果のデータをレジスタファイル14に格納する。
【0006】
図1の(B)は、命令デコード部12が有する命令コードマップの例を示す図である。命令デコード部12は、命令に対応させてオペコードを記憶した命令コードマップを有し、入力された命令に対応するオペコードを読み出して出力する。
【0007】
図1の(B)は、4×8の命令コードマップを示しており、32個の命令に対してオペコードを発生する。例えば、追加命令は、4行目の1×8個の領域に割り当てられ、演算器13が実行する一般命令は1〜3行目の3×8個の領域に割り当てられる。
【0008】
図1の(B)に示すように、32個の命令領域のうち、8個の命令領域が追加命令に割り当てられるため、一般命令は24個以内に制限され、追加命令は8個以内に制限されるため、一般命令および追加命令の両方とも実行可能な命令数を確保するのが難しかった。この命令数の確保は、追加命令を処理する特定処理演算器23を接続する場合に限らず、演算器13が基本的な命令だけでなく特殊な命令を実行する場合などにも問題になる。
命令コードマップを大きくすれば、実行可能な命令数を増加することが可能であるが、その分命令コードを表すビット数を増加させる必要があり、プロセッサの回路規模が大幅に増加する。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開平5−88885号公報
【特許文献2】特開平11−212804号公報
【特許文献3】特開2001−184209号公報
【特許文献4】特開平7−13758号公報
【特許文献5】特表2004−511044号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
実施形態によれば、プロセッサが有している機能を利用して、実際の使用に適した形で実行可能な命令数を増加することができるプロセッサが実現される。
【課題を解決するための手段】
【0011】
本発明の観点によれば、命令を実行する演算部と、演算部で実行する命令をデコードし、オペコードを出力する命令デコード部と、割り込み信号を受け付ける割り込みレジスタと、を備え、命令デコード部は、命令に対応させて前記オペコードを記憶した命令コードマップを備え、入力された前記命令に応じてオペコードを出力し、命令コードマップは、命令の一部である追加命令に対して出力するオペコードのセットを切替オペコードとして複数セット記憶しており、割り込み信号に応じて切替オペコードのセットを切り替えるプロセッサが提供される。
【発明の効果】
【0012】
実施形態のプロセッサによれば、割り込み信号と関連して命令コードマップを切り替えることにより、実際の使用に適した形で実行可能な命令数を増加することができる。
【図面の簡単な説明】
【0013】
【図1】図1は、命令を追加することが可能なプロセッサを搭載した一般的なコンピュータのハードウェアの概略構成図である。
【図2】図2は、第1実施形態のコンピュータのハードウェアの概略構成図である。
【図3】図3は、割込レジスタ(REG)の構成を示す図である。
【図4】図4は、命令デコード部における命令デコードマップを示す図であり、(A)から(D)は割込み番号1から4に対応して追加命令領域のオペコードの変化を示す。
【図5】図5は、第1実施形態のコンピュータにおける命令デコード部の構成を示す図である。
【図6】図6は、追加命令を使用する割込み処理のプログラム例を示す図である。
【図7】図7は、割り込み信号がプロセッサに入力され、追加命令デコーダが切り替わるタイミングを示すタイムチャートである。
【図8】図8は、第2実施形態のコンピュータのハードウェアの概略構成図である。
【発明を実施するための形態】
【0014】
図2は、第1実施形態のコンピュータのハードウェアの概略構成図である。
第1実施形態のコンピュータは、プロセッサ31と、命令メモリ21と、データメモリ22と、追加命令を処理する特定処理演算器23と、を有する。プロセッサ31は、命令デコード部32と、演算器33と、レジスタファイル34と、データ転送ブロック35と、割込レジスタ(REG)36と、を有する。命令デコード部32は、追加命令デコーダ42を有する。
【0015】
半導体処理装置を含むチップ内外で発生される割込み信号を受け付けるプロセッサが知られている。プロセッサ31は、割込み信号に応答して、割込みハンドラに分岐して割り込み処理を実行し、割込み処理が終了するとリターン(RETI)命令により元の処理を実行するように復帰する。割込み信号は、実行する優先度に応じて割り込み番号が割り当てられた多重割込み構造を有している。プロセッサ31は、割込み処理を実行中により優先度の高い割込み信号を受け付けると、それまでの割込み処理を中断してより優先度の高い割込み処理を実行し、それが終了した後、中断した割込み処理に復帰する。割込みREG36は、割込み番号を保持するレジスタであり、プロセッサ31が割込みハンドラに分岐してからRETI命令により元の処理に復帰するまで、割込み番号を保持する。
【0016】
図3は、割込レジスタ(REG)36の構成を示す図である。上記のような優先度に応じた多重割り込み番号を保持するため、割込REG36はスタック構造を有し、保持している割り込み番号に応じて通知信号を出力する。
【0017】
図2に戻り、命令デコード部32は、命令メモリ21から読み出した命令をフェッチし、フェッチした命令をデコードし、演算器33または特定処理演算器23で実行するための命令オペレーション制御信号(オペコード)を生成する。ここで、デコードした命令が演算器33で実行する一般命令である場合には、生成したオペコードを演算器33に出力し、デコードした命令が特定処理演算器23で実行する追加命令である場合には、生成したオペコードを特定処理演算器23に出力する。追加命令であるか否かの判定は、割込REG36からの割込み番号を示す通知信号によって、追加命令デコーダ42内で割込み番号ごとに個別にデコードすることにより行なわれる。また、追加命令デコーダ42は、割込み番号に応じて命令コードマップを切り替える。
【0018】
命令デコード部32は、オペコードを演算器13または特定処理演算器23に出力すると共に、命令の実行に必要なデータの情報をデータ転送ブロック15に送る。データ転送ブロック35は、命令を実行するのに必要なデータをデータメモリ22から読み出し、レジスタファイル34に格納する。演算器33は、オペコードに従ってレジスタファイル34に格納されたデータを処理し、処理結果のデータをレジスタファイル34に格納する。データ転送ブロック35は、処理結果のデータを、レジスタファイル34から読み出して、データメモリ22に記憶する。
【0019】
以上のように、第1実施形態のコンピュータは、割込REG36が割込み信号を受け付け、割込REG36における割込み信号の受け付け状態に応じて、追加命令デコーダ42が制御される以外の構成および動作は、図1で説明した一般的なコンピュータと同じである。
【0020】
図4は、命令デコード部32における命令デコードマップを示す図であり、(A)から(D)は割込み番号1から4に対応して追加命令領域のオペコードの変化を示す。
割込み番号1の割込み信号はタイマー処理ハンドラを起動し、割込み番号2の割込み信号はクロック処理ハンドラを起動し、割込み番号3の割込み信号はウォッチドックリセット処理ハンドラを起動し、割込み番号4の割込み信号はDMA転送ハンドラを起動する。
【0021】
タイマー処理ハンドラで処理を行う場合には、割込み番号1の割込み信号をプロセッサ31に入力する。これに応じて、命令デコードマップは、4行目の後半の4個の命令が、タイマー処理ハンドラでの処理に使用する追加命令に対応するように切り替えられる。割込み番号1の割込み信号が入力されてタイマー処理ハンドラが起動されている間、追加命令デコーダ42は、命令デコードマップの4行目の後半の4個の命令コードが入力されると、図4の(A)の命令デコードマップに規定されたオペコードを出力する。同様に、割込み番号2の割込み信号が入力されてクロック処理ハンドラが起動されている間、追加命令デコーダ42は、命令デコードマップの4行目の後半の4個の命令コードが入力されると、図4の(B)の命令デコードマップに規定されたオペコードを出力する。割込み番号3または4の割込み信号が入力されてウォッチドックリセット処理ハンドラまたはDMA転送ハンドラが起動されている場合には、図4の(C)または(D)の命令デコードマップに規定されたオペコードが出力される。なお、命令デコードマップの追加命令領域以外の命令、すなわち図4の(A)から(D)の1〜3行目の24個の命令および4行目の前半の4個の命令が入力された場合には、割込み信号の入力にかかわらず、同一の各領域に対応するオペコードが出力される。
【0022】
以上のように、命令デコードマップにおける32個の命令領域のうち、28個が通常命令領域であり、4個が追加命令領域であり、4個が追加命令領域は各割込み番号ごとに異なる追加命令領域とすることができるので、合計では16個の追加命令を実装できる。したがって、図1の(B)の例と比較すると、実装できる通常命令は4個増加し、追加命令は8個増加する。
【0023】
前述のように、特定用途向けの命令を追加することが可能なプロセッサを搭載した半導体処理装置が使用されるが、その顧客アプリケーションを分析すると、追加命令は、割込み処理に対応して使用されることが多いことが判明した。そのため第1実施形態のように、追加命令領域に対応する追加命令を、割込み信号の種類に応じて切り替えても実用上問題がない。言い換えれば、追加命令を特定の割込み処理でのみ使用できるようにしても問題ない。さらに、第1実施形態では、割り込みハンドラを起動する割込み信号を入力するだけであり、命令デコードマップにおける追加命令領域の切替を指示する信号を追加および入力する必要がなく、信号数の増加およびステップ数の増加を抑制できる。なお、異なる割り込み処理で、同一の命令を追加命令として別々に規定してもよい。
【0024】
図5は、第1実施形態のコンピュータにおける命令デコード部32の構成を示す図である。
図5に示すように、命令デコード部32は、一般命令デコーダ41と、追加命令デコーダ42A〜42Dと、追加命令オペコード選択回路43と、最終選択回路44と、論理和ゲート45と、ANDゲート46を有する。
【0025】
一般命令デコーダ41は、追加命令以外の一般命令をデコードし、一般オペコードを出力する。
【0026】
追加命令デコーダ42A〜42Dは、それぞれ追加命令をデコードし、割り込み番号に対応した追加命令オペコードを出力する。例えば、追加命令デコーダ42Aは、図4の(A)の割り込み番号1の追加命令領域の命令コードに対応したオペコードを出力する。以下、追加命令デコーダ42B〜42Dも、同様に、図4の(B)〜(D)の追加命令領域の命令コードに対応したオペコードを出力する。追加命令デコーダ42A〜42Dのそれぞれは、追加命令をデコードすると同時に、デコードできたことを示すValid信号を生成し、追加命令オペコードと同時に出力する。もし、追加命令が有効な領域ではなくデコードができなかった場合、つまりNOP(No OPeration)がデコードされた場合は、Valid信号はネゲートされる。
【0027】
追加命令オペコード選択回路43は、追加命令デコーダ42A〜42Dの出力する追加命令オペコードを、割込REG36の出力する通知信号に応じて選択する。例えば、通知信号が割り込み信号1を示す場合には、追加命令オペコード選択回路43は、追加命令デコーダ42Aの出力を選択する。以下同様に、追加命令オペコード選択回路43は、通知信号が割り込み信号2〜4を示す場合には、追加命令デコーダ42B〜42Dの出力する追加命令オペコードを選択する。さらに、追加命令オペコード選択回路43は、追加命令デコーダ42A〜42Dの出力するValid信号の論理和を演算し、いずれかの追加命令デコーダ42A〜42Dの出力するValid信号が有効である場合には“1”を、そうでない場合には“0”を出力する。
【0028】
論理和ゲート45は、通知信号の論理和を演算する。演算結果は、割り込みハンドラのいずれかが起動されている場合に“1”、いずれの割り込みハンドラも起動されていない場合に“0”になる。ANDゲートは、Valid信号と論理和ゲート45の論理積を演算する。演算結果は、割り込みハンドラのいずれかが起動されており、追加命令が有効にデコードされた場合に“1”に、それ以外の場合に“0”になる。
【0029】
最終選択回路44は、ANDゲートの出力が“0”の場合に一般命令デコーダ41の出力する一般オペコードを選択し、ANDゲートの出力が“1”の場合に追加命令オペコード選択回路43の出力する追加命令オペコードを、選択する。
【0030】
図6は、追加命令を使用する割込み処理のプログラム例を示す図である。この割込み処理は、タイマー処理である。このプログラムでは、一般命令では明に指定しなければいけない内容でも、割込みハンドラごとに処理が明確であるものについては、命令コードの中に処理を定義せずとも、デコード情報として予め織り込んでおくことができる。そのため、命令コードサイズを最小限にすることが出来る。この例では、タイマー制御レジスタを使用するが、ウォッチドックタイマ制御レジスタを使用する場合も同じである。さらに、この二つの制御レジスタはそれぞれ専用の割込み処理ハンドラ内でアクセスする場合には独立しているため、それぞれのステータス(status)レジスタを読む命令コードは同じにすることが可能であり、命令コードサイズを増やさずに済む。
【0031】
図7は、割り込み信号がプロセッサ31に入力され、追加命令デコーダ42A〜42Dが切り替わるタイミングを示すタイムチャートである。図7に示すように、割り込みが入っていない状態で割込み信号1が入ったため、割込REG36の出力する通知信号は“1”になり、追加命令が入力された場合には、追加命令デコーダ42Aの出力する追加命令オペコードが選択される状態になる。なお、フェッチした命令コードが追加命令領域でない場合は、一般命令が選択される。ここで、割込み信号1に対応する割込みハンドラの処理中に、より優先度の高い割り込み信号2が入った場合、プロセッサ31は優先度の高い割込み処理に制御を移し、同時に割込REG36の出力も“2”に切り替わる。割込み処理信号2に対応する割込み処理が終了して、復帰命令(RETI)信号が出力されると、割込み処理は保留されていた割込み処理信号1に対応する割込みハンドラへ制御が移る。
【0032】
第1実施形態で例として示した追加命令は、簡単のために演算命令としたが、本質的にはこれに限定する必要は無く、ロードストアや分岐命令などでもよい。
また、第1実施形態において、プロセッサは、割込み番号を契機に命令空間のページを切り替えるため、割込REGへのレジスタライトアクセスや、ソフトウェアによって遅延割り込みを発生させることによっても、命令空間のページ切り替えが可能である。
【0033】
第1実施形態では、割込み信号により、割込み処理ハンドラが起動し、命令は命令メモリ21から命令を順次読み出して割込み処理を行う。これに対して、次に説明する第2実施形態では、割込み処理で行う処理を記述する一連の命令列の一部の命令列をプロセッサに記憶しておき、割込み処理ハンドラが起動されるとプロセッサ内に記憶されている命令列を利用して割込み処理を実行する。プロセッサ内に記憶されている命令列は、追加命令により開始される一連の命令である。
【0034】
図8は、第2実施形態のコンピュータのハードウェアの概略構成図である。
第2実施形態のコンピュータは、プロセッサ51内に、シーケンサ52と、命令選択回路53と、を有することが、第1実施形態と異なり、他の部分は同じである。シーケンサ52は、割込み処理で行う処理を記述する一連の命令列の一部の命令列を記憶しており、この命令列は追加命令により開始される。命令選択回路53は、シーケンサ52から命令が出力される場合にはシーケンサ52から出力される命令を選択し、それ以外の場合には命令メモリ21から読み出した命令を選択する。
【0035】
第2実施形態では、プロセッサ51は、割込みハンドラが起動されていない状態では、命令メモリ21から命令を読み出して通常の処理を行う。割り込み信号が入力されると、第1実施形態と同様に、割り込み信号の種類に応じて命令デコードマップの追加命令領域が切り替えられる。ここで、命令メモリ21からフェッチした追加命令が、シーケンサ52に記憶した命令列を開始させる追加命令である場合には、シーケンサ52から出力される命令にしたがって割り込み処理を行なう。なお、命令メモリ21からフェッチした追加命令が、シーケンサ52に記憶した命令列を開始させる追加命令でない場合には、第1実施形態と同様の割込み処理を行う。
【0036】
以上、第1および第2実施形態を説明したが、各種の変形例が可能であるのはいうまでもない。例えば、第1および第2実施形態では、追加命令を実行する特定処理演算器23を接続し、割り込み信号の種類に応じて命令デコードマップの追加命令領域が切り替える場合を例として説明した。しかし、第1および第2実施形態の構成は、特定処理演算器23を接続しない場合にも同様に適用できる。例えば、命令デコードマップの追加命令領域に相当する領域を切替領域として、割り込み信号の種類に応じて、切替領域の命令を、割り込み信号の種類に応じた命令に切り替える。この場合でも、切替領域に対応する命令を、割込み信号の種類に応じて、割り込み処理に適した特殊な追加命令に切り替えることにより、顧客の所望の命令を実際の使用に即して利用可能にし、信号数の増加およびステップ数の増加を生じない。
【0037】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【符号の説明】
【0038】
21 命令メモリ
22 データメモリ
23 特定処理演算器
31 プロセッサ
32 命令デコード部
33 演算器
34 レジスタファイル
35 データ転送ブロック
36 割込レジスタ(REG)
41 一般命令デコーダ
42,42A−42D 追加命令デコーダ

【特許請求の範囲】
【請求項1】
命令を実行する演算部と、
前記演算部で実行する命令をデコードし、オペコードを出力する命令デコード部と、
割り込み信号を受け付ける割り込みレジスタと、を備え、
前記命令デコード部は、命令に対応させて前記オペコードを記憶した命令コードマップを備え、入力された前記命令に応じて前記オペコードを出力し、
前記命令コードマップは、前記命令の一部である追加命令に対して出力するオペコードのセットを切替オペコードとして複数セット記憶しており、前記割り込み信号に応じて前記切替オペコードのセットを切り替えることを特徴とするプロセッサ。
【請求項2】
前記命令デコード部は、
前記追加命令以外の一般命令をデコードし、一般オペコードを出力する一般命令デコーダと、
前記追加命令をデコードし、追加オペコードを出力する追加命令デコーダであって、前記複数セットに対応した複数の追加命令デコーダと、
前記複数の追加命令デコーダの出力する追加オペコードを、前記割り込みレジスタのデータに応じて選択するオペコード選択回路と、
前記一般命令デコーダの出力する前記一般オペコードと、前記オペコード選択回路の出力する前記追加オペコードの一方を、選択する最終選択回路と、を備える請求項1記載のプロセッサ。
【請求項3】
前記割り込み信号は、多重割り込み関係を有し、
前記割り込みレジスタは、スタック構造を有する請求項1または2記載のプロセッサ。
【請求項4】
前記命令セットに含まれる連続命令により処理する一連の命令列を記憶するシーケンサを備え、
前記シーケンサは、前記命令デコード部により前記連続命令であることの検出に応じて、前記一連の命令列を前記命令デコード部に出力する請求項1から3のいずれか1項記載のプロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate