(57)【要約】【課題】命令によってＣＰＵ等の主演算部に処理を待たせる場合に、待たせる時間を正確に制御する。【解決手段】情報処理装置であって、メモリから読み出された命令に従って処理を行う主演算部と、前記メモリから読み出された命令のうちの所定の命令に従って処理を行う拡張演算部とを有する。前記拡張演算部は、クロック信号のパルスをカウントし、前記メモリから読み出された命令が前記主演算部を待機させる待機命令である場合には、待機すべきであることを示す信号を、前記待機命令において指定された待機カウント数に相当するカウントが完了するまで出力する信号生成回路を有する。前記主演算部は、前記待機すべきであることを示す信号が出力されている間は、処理を停止する。【選択図】図１
2009163338.tif 000002
【特許請求の範囲】
【請求項１】
メモリから読み出された命令に従って処理を行う主演算部と、
前記メモリから読み出された命令のうちの所定の命令に従って処理を行う拡張演算部とを備え、
前記拡張演算部は、
クロック信号のパルスをカウントし、前記メモリから読み出された命令が前記主演算部を待機させる待機命令である場合には、待機すべきであることを示す信号を、前記待機命令において指定された待機カウント数に相当するカウントが完了するまで出力する信号生成回路を有し、
前記主演算部は、
前記待機すべきであることを示す信号が出力されている間は、処理を停止する
ことを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置において、
前記主演算部は、
値を格納するレジスタを有し、
前記信号生成回路は、
前記待機命令において前記レジスタが指定されている場合には、前記レジスタに格納されている値を前記待機カウント数として用いる
ことを特徴とする情報処理装置。
【請求項３】
請求項１に記載の情報処理装置において、
前記信号生成回路は、
前記待機命令において記述されている値を前記待機カウント数として用いる
ことを特徴とする情報処理装置。
【請求項４】
請求項１に記載の情報処理装置において、
前記拡張演算部は、
値を格納するレジスタを有し、
前記信号生成回路は、
前記待機命令において前記レジスタが指定されている場合には、前記レジスタに格納されている値を前記待機カウント数として用いる
ことを特徴とする情報処理装置。
【請求項５】
請求項１に記載の情報処理装置において、
前記信号生成回路は、
前記待機カウント数を保持する比較値保持回路と、
前記クロック信号のパルスをカウントするカウンタと、
前記カウンタのカウント値と前記比較値保持回路に保持された前記待機カウント数とを比較し、比較結果を出力する比較器と、
前記待機すべきであることを示す信号を、一致するという結果を前記比較結果が示すまで出力する制御回路とを有する
ことを特徴とする情報処理装置。
【請求項６】
請求項１に記載の情報処理装置において、
前記信号生成回路は、
前記メモリから読み出された命令が演算命令である場合には、前記演算命令で指示された演算を行い、
前記メモリから読み出された命令が前記待機命令である場合には、前記クロック信号のパルスをカウントし、前記待機すべきであることを示す信号を、前記待機命令において指定された待機カウント数に相当するカウントが完了するまで出力する
ことを特徴とする情報処理装置。
【請求項７】
請求項１に記載の情報処理装置において、
前記信号生成回路は、
前記所定の演算を行う演算回路を有し、前記メモリから読み出された命令が前記待機命令である場合には、前記待機命令において指定された待機カウント数に相当するカウントを前記演算回路を用いて行う
ことを特徴とする情報処理装置。
【請求項８】
請求項１に記載の情報処理装置において、
前記信号生成回路は、
前記主演算部に対して割り込み要求信号が与えられた場合には、前記待機すべきであることを示す信号の出力を終了する
ことを特徴とする情報処理装置。
【請求項９】
請求項１に記載の情報処理装置において、
前記主演算部に前記クロック信号を供給するクロック制御回路を更に備え、
前記クロック制御回路は、
前記信号生成回路から前記待機すべきであることを示す信号が出力されると、前記主演算部への前記クロック信号の供給を停止する
ことを特徴とする情報処理装置。
【請求項１０】
請求項１に記載の情報処理装置において、
前記信号生成回路は、
前記メモリから読み出された命令が制御信号を生成する第１の信号生成命令である場合には、前記第１の信号生成命令において指定されたカウント数に相当するカウントが完了すると、
前記制御信号を当該情報処理装置の外部に出力する
ことを特徴とする情報処理装置。
【請求項１１】
請求項１０に記載の情報処理装置において、
前記信号生成回路は、
前記メモリから読み出された命令が前記制御信号を繰り返し生成する第２の信号生成命令である場合には、前記第２の信号生成命令において指定されたカウント数に相当するカウントを行う毎に、
前記制御信号を当該情報処理装置の外部に出力し、
前記メモリから読み出された命令が前記制御信号の生成を終了する信号生成終了命令である場合には、前記制御信号の出力を終了する
ことを特徴とする情報処理装置。
【請求項１２】
請求項１０に記載の情報処理装置において、
前記信号生成回路は、
前記第１の信号生成命令が割り込み命令である場合には、前記主演算部に対して割り込みを行うための割り込み要求信号を前記制御信号として出力する
ことを特徴とする情報処理装置。
【請求項１３】
請求項１に記載の情報処理装置において、
前記信号生成回路は、
前記メモリから読み出された命令が制御信号を生成する信号生成命令である場合には、
前記信号生成命令において指定された第１のカウント数に相当するカウントが完了するまでは、
前記制御信号として第１の値を当該情報処理装置の外部に出力し、
前記信号生成命令において指定された第２のカウント数に相当するカウントが完了するまでは、
前記制御信号として第２の値を当該情報処理装置の外部に出力する
ことを特徴とする情報処理装置。
【請求項１４】
請求項１に記載の情報処理装置において、
前記信号生成回路は、
前記クロック信号の設定された基準サイクル数毎に、前記クロック信号のパルスをカウントする
ことを特徴とする情報処理装置。
【請求項１５】
請求項１４に記載の情報処理装置において、
前記信号生成回路は、
前記待機カウント数を保持する比較値保持回路と、
前記クロック信号のパルスをカウントする第１のカウンタと、
前記第１のカウンタのカウント値と前記比較値保持回路に保持された前記待機カウント数とを比較し、その結果を第１の比較結果として出力する第１の比較器と、
前記基準サイクル数を保持する基準サイクル保持回路と、
前記クロック信号のパルスをカウントし、第２の比較結果に従ってリセットされる第２のカウンタと、
前記第２のカウンタのカウント値と前記基準サイクル保持回路に保持された前記基準サイクル数とを比較し、その結果を前記第２の比較結果として出力する第２の比較器と、
前記待機すべきであることを示す信号を、前記第２のカウンタのカウント値が前記基準サイクル数以上になったことを前記第１の比較結果が示すまで出力する制御回路とを有し、
前記第１のカウンタは、一致するという結果を前記第２の比較結果が示す場合にのみカウントを行う
ことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ等の主演算部と所定の演算を実行する拡張演算部とを有する情報処理装置に関する。
【背景技術】
【０００２】
基本性能向上のために、主として処理を行うＣＰＵに加えて、所定の演算を実行する拡張演算器を有する情報処理装置の例が、特許文献１に開示されている。拡張演算器は、受け取った命令が実行可能である場合には、ＣＰＵから演算に係わるデータを受け取って演算を実行し、その結果をＣＰＵに出力する。拡張演算器を有することにより、ＣＰＵが実行できない特別な命令が実行可能となり、拡張演算器を持たない場合よりプログラムのコードサイズを小さくすることができる。これにより命令メモリの容量を小さくすることができる。また、拡張演算器が演算を実行している間はＣＰＵは別の命令を実行することができるので、情報処理装置の基本性能が向上する。
【０００３】
用途に応じた構成の拡張演算器を用いるようにすることにより、ＣＰＵの物理的構成を変更することなく、情報処理装置としての性能を上げることが容易となる。また、拡張演算器のみを用途によって改変すればよいので、一から専用の情報処理装置を作成する場合に比べて、開発に要する時間を短縮することができるという利点もある。
【特許文献１】特開平８−３０５５６８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
このような情報処理装置においても、ＣＰＵの処理を一定期間待たせる場合には、ＣＰＵにＮＯＰ命令やループ命令を実行させている。しかし、ＣＰＵによる命令フェッチ時のバスにおける競合によって、予定していた待ち時間と実際の待ち時間との間に誤差が生じてしまい、プログラムの修正が必要になるという問題があった。
【０００５】
また、一定時間経過後に割り込みや外部回路の制御を行うことは、ＣＰＵから直接行うことはできないので、外部のタイマを操作してその出力信号によって制御する必要があった。すなわち、複雑な手順で操作することが必要であり、そのための機能を加えることで回路面積が増加するという問題があった。
【０００６】
本発明は、命令によってＣＰＵ等の主演算部に処理を待たせる場合に、待たせる時間を正確に制御することを目的とする。
【課題を解決するための手段】
【０００７】
前記課題を解決するため、本発明が講じた手段は、情報処理装置として、メモリから読み出された命令に従って処理を行う主演算部と、前記メモリから読み出された命令のうちの所定の命令に従って処理を行う拡張演算部とを有するものである。前記拡張演算部は、クロック信号のパルスをカウントし、前記メモリから読み出された命令が前記主演算部を待機させる待機命令である場合には、待機すべきであることを示す信号を、前記待機命令において指定された待機カウント数に相当するカウントが完了するまで出力する信号生成回路を有する。前記主演算部は、前記待機すべきであることを示す信号が出力されている間は、処理を停止する。
【０００８】
これによると、拡張演算部が所定の命令において指定された待機カウント数に基づいて生成した信号によって、主演算部が処理を停止する。処理を待機させるために主演算部に命令を実行させる必要がないので、命令フェッチの際に外部バスを用いることに起因して生じる予測待ち時間と実際の待ち時間との間の誤差がなくなる。また、このような処理を１つの命令で実現するので、プログラムのコードサイズを小さくすることができ、プログラムの作成を容易にすることができる。
【発明の効果】
【０００９】
本発明によれば、命令によってＣＰＵ等に処理を待たせる場合に、バスの状態の影響を受けることがなく、待たせる時間を正確に制御することができる。１つの命令を用い、クロック信号のサイクル数を指定すればよいので、プログラムの作成が容易になる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００１１】
（第１の実施形態）
図１は、本発明の第１の実施形態に係る情報処理装置の構成を示すブロック図である。図１の情報処理装置１００は、主演算部としてのＣＰＵ（central processing unit）１１０と、拡張演算部としての拡張演算器１２０と、ＲＯＭ（read-only memory）１３０とを有している。ＣＰＵ１１０は、ＣＰＵ命令デコーダ１１１と、ＣＰＵ制御回路１１２と、汎用レジスタ１１３と、演算器１１４とを有している。拡張演算器１２０は、拡張命令デコーダ１２１と、拡張命令制御回路１２２と、演算器１２３，１２４と、信号生成回路としての制御信号発生回路１２５と、セレクタ１２６と、論理和回路１２７とを有している。
【００１２】
ＣＰＵ１１０及び拡張演算器１２０は、クロック信号ＣＬＫに同期して動作する。ＣＰＵ１１０は、各種情報処理を実行する機能を有しており、命令アドレスをＲＯＭ１３０に出力する。ＲＯＭ１３０は、受け取った命令アドレスに対応する命令を、命令バス１４１を経由して命令デコーダ１１１及び拡張命令デコーダ１２１に供給する。
【００１３】
ＣＰＵ命令デコーダ１１１は、命令バス１４１から供給された命令をデコードし、デコード結果を出力する。ＣＰＵ制御回路１１２は、ＣＰＵ命令デコーダ１１１のデコード結果であるデコード信号ＣＤＣの内容と、拡張演算器１２０から供給される制御信号ＥＣＰとに基づいて、各種制御信号ＰＣＮを生成し、ＣＰＵ１１０の各回路に出力する。
【００１４】
汎用レジスタ１１３は、データを格納するレジスタＤ０，Ｄ１，Ｄ２，Ｄ３を有している。演算器１１４は、ＣＰＵ制御回路１１２から供給される制御信号に従って、データ入力バス１４３及びデータ入力バス１４４から入力された値に対する演算を行い、演算処理結果をデータ出力バス１４５に出力する。
【００１５】
拡張演算器１２０は、ＲＯＭ１３０から供給される命令が拡張命令の場合に、その拡張命令に従って各種情報処理を実行する機能を有している。拡張命令デコーダ１２１は、命令バス１４１から供給された拡張命令をデコードし、デコード結果を出力する。拡張命令制御回路１２２は、拡張命令デコーダ１２１のデコード結果であるデコード信号ＥＤＣの内容に従って、制御信号ＩＣ１，ＩＣ２，ＩＣ３，ＩＣＳを生成し出力する。
【００１６】
演算器１２３は、制御信号ＩＣ１に従って、データ入力バス１４３及びデータ入力バス１４４から入力された値に対して演算処理を行い、得られた演算処理結果ＰＯ１及び制御信号ＥＣ１を出力する。演算器１２４は、制御信号ＩＣ２に従って、データ入力バス１４３及びデータ入力バス１４４から入力された値に対して演算処理を行い、得られた演算処理結果ＰＯ２及び制御信号ＥＣ２を出力する。制御信号発生回路１２５は、制御信号ＩＣ３と、データ入力バス１４３から入力された値に基づいて演算処理を行い、制御信号ＥＣ３を出力する。
【００１７】
セレクタ１２６は、制御信号ＩＣＳに従って、演算器１２３の演算処理結果ＰＯ１と、演算器１２４の演算処理結果ＰＯ２とのいずれか１つを選択し、選択された値をデータ出力バス１４５に出力する。論理和回路１２７は、制御信号ＥＣ１，ＥＣ２及びＥＣ３の論理和を求め、制御信号ＥＣＰとして出力する。
【００１８】
図２は、図１の制御信号発生回路１２５の構成例を示すブロック図である。制御信号発生回路１２５は、制御回路６２と、比較値保持回路６４と、カウンタ回路６６と、比較器６８とを有している。
【００１９】
制御回路６２は、制御信号ＩＣ３と、データ入力バス１４３の値と、比較器６８から供給される一致信号ＣＭＲとに従って、比較値保持回路６４を制御するための制御信号ＣＨと、カウンタ回路６６を制御するための制御信号ＣＣと、制御信号ＥＣ３とを生成し、出力する。比較値保持回路６４は、制御信号ＣＨに従って、データ入力バス１４３からの入力値の出力データＣＭＶとしての出力、データ入力バス１４３からの入力値の保持、及び保持している値の出力データＣＭＶとしての出力を行う。
【００２０】
カウンタ回路６６は、制御信号ＣＣに従って、クロック信号ＣＬＫのパルスのカウントアップ、リセット、及びカウント値の出力データＣＮＴとしての出力を行う。比較器６８は、比較値保持回路６４の出力データＣＭＶと、カウンタ回路６６の出力データＣＮＴとを比較し、比較結果を一致信号ＣＭＲとして制御回路６２に出力する。
【００２１】
図３は、図１の情報処理装置１００の動作の例を示すタイミングチャートである。ウェイト命令（待機命令）は、その命令に指定された時間だけＣＰＵ１１０の処理を待機させる拡張命令であり、待機させる時間は例えば待機カウント数で表される。ウェイト命令は、例えば「ＷＡＩＴ  Ｄｍ」（ＤｍはレジスタＤ０〜Ｄ３のいずれかを示す）と記述される。この場合、レジスタＤｍに格納された値（待機カウント数）だけカウンタ回路６６がカウントアップするまで、ＣＰＵ１１０の処理が待たされる。
【００２２】
図３において、ＩＦステージとは、命令がＲＯＭ１３０から読み出される処理が行われている段階を示す。ＤＥＣステージとは、ＲＯＭ１３０から読み出された命令を、ＣＰＵ命令デコーダ１１１及び拡張命令デコーダ１２１がデコード処理を行い、制御信号を出力する処理が行われている段階を示す。ＥＸステージとは、デコードの結果得られた制御信号によって、ＣＰＵ１１０及び拡張演算器１２０が演算を実行する処理が行われている段階を示す。各ステージの「Ｗ」は、ウェイト命令の処理中であることを示し、「Ｎ」は、ウェイト命令の後続の命令の処理中であることを示す。
【００２３】
ＣＰＵ１１０は、ＲＯＭ１３０から命令バス１４１を経由してウェイト命令を読み出す。時刻Ｔ１からＣＰＵ命令デコーダ１１１は、ウェイト命令をデコードし、得られたデコード信号ＣＤＣを出力する。ＣＰＵ制御回路１１２は、デコード信号ＣＤＣに基づいて各種制御信号ＰＣＮを生成し、ＣＰＵ１１０の各回路に出力する。
【００２４】
ＣＰＵ命令デコーダ１１１とほぼ同じタイミングで、拡張演算器１２０の拡張命令デコーダ１２１は、ウェイト命令をデコードし、得られたデコード信号ＥＤＣを出力する。拡張命令制御回路１２２は、ウェイト命令が実行されたことをデコード信号ＥＤＣから判定し、時刻Ｔ１〜Ｔ２の間、制御信号ＩＣ３として「１」を出力する。また、拡張命令制御回路１２２は、ウェイト命令以外の命令が実行されないように、制御信号ＩＣ１，ＩＣ２，ＩＣＳとして「０」を出力する。
【００２５】
時刻Ｔ２から、ＣＰＵ１１０は、ウェイト命令のデコードの結果得られた各種制御信号ＰＣＮに従って、ウェイト命令で指定された、汎用レジスタ１１３のレジスタＤｍから値を読み出し、データ入力バス１４３に出力する。例として、レジスタＤｍが格納している値は３であるとする。制御信号発生回路１２５内の制御回路６２は、制御信号ＩＣ３が「１」なので、ウェイト命令動作を開始し、制御信号ＣＨ，ＣＣを出力する。
【００２６】
制御信号ＣＨに従って、比較値保持回路６４は、データ入力バス１４３の値を保持して、出力データＣＭＶとして値「３」を出力する。制御信号ＣＣに従って、カウンタ回路６６は、出力データＣＮＴとして「０」を出力し、カウント値を「１」カウントアップする。比較器６８は、出力データＣＭＶと出力データＣＮＴの値を比較し、一致しないので一致信号ＣＭＲとして「０」を出力する。制御回路６２は、一致信号ＣＭＲが「０」なので、待機すべきであることを示す信号として、制御信号ＥＣ３を「１」にして出力する。
【００２７】
論理和回路１２７は、制御信号ＥＣＰとして「１」を出力する。ＣＰＵ制御回路１１２は、制御信号ＥＣＰが「１」なので、各種制御信号ＰＣＮを出力し、時刻Ｔ３からＣＰＵ１１０のパイプライン動作を停止させる。
【００２８】
時刻Ｔ３以降、制御信号発生回路１２５は動作を続け、サイクル毎にカウンタ回路６６をカウントアップし、比較値保持回路６４の出力データＣＭＶとカウンタ回路６６の出力データＣＮＴとを比較し、値が一致するまで動作を継続する。時刻Ｔ５で、比較値保持回路６４の出力データＣＭＶとカウンタ回路６６の出力データＣＮＴとが一致するので、比較器６８は一致信号ＣＭＲとして「１」を出力する。
【００２９】
制御回路６２は、一致信号ＣＭＲが「１」なので、ウェイト命令動作の終了と判断し、制御信号ＥＣ３として「０」を出力する。すると、論理和回路１２７は、制御信号ＥＣＰとして「０」を出力する。ＣＰＵ制御回路１１２は、制御信号ＥＣＰが「０」なので、各種制御信号ＰＣＮを出力し、時刻Ｔ６からＣＰＵ１１０のパイプライン動作を再開させる。
【００３０】
図３に示すように、ウェイト命令に指定されたレジスタＤｍの値を３に設定すれば、４サイクルの期間、ＣＰＵの処理を待たせることができる。レジスタＤｍへのサイクル数の設定値は、「待ち時間×動作周波数−１」とすればよく、容易に求めることができる。
【００３１】
以上説明したように、情報処理装置１００においては、ＣＰＵの処理を一定期間、待たせる必要があるときには、レジスタＤｍに値を設定してウェイト命令を実行すればよい。拡張演算器１２０においてカウントを行うので、バスの状態の影響を受けることなく、ＣＰＵ等に処理を待たせる時間を正確に制御することができる。
【００３２】
なお、第１の実施形態では、カウント回路６６はカウントアップを行うと説明したが、カウントダウンを行うことによって、制御信号発生回路１２５の機能を実現することもできる。また、信号の論理は上記とは逆であってもよい。
【００３３】
また、ウェイト命令に記述されたレジスタＤｍが格納する値を待機カウント数として用いる場合について説明したが、ウェイト命令に値を直接記述し、その値を、待機カウント数として用いるようにしてもよい。
【００３４】
また、拡張演算器１２０内に複数のサイクル数設定レジスタを設けることとし、ウェイト命令にＤｍとして記述された値に従って、サイクル数設定レジスタを１つ選択し、そのレジスタの値を、待機カウント数として用いるようにしてもよい。
【００３５】
（第２の実施形態）
図１の装置によると、ＣＰＵ等に処理を待たせるために制御信号発生回路１２５が必要であり、回路規模が増大する。そこで、本実施形態では、拡張演算器１２０内のウェイト命令実行中に動作をしない演算器のリソースを用いることにより、回路規模の増大を抑えるようにする。
【００３６】
図４は、本発明の第２の実施形態に係る情報処理装置の構成を示すブロック図である。図４の情報処理装置２００は、拡張演算器１２０に代えて拡張演算器２２０を有する点以外は、図１の情報処理装置１００と同様である。拡張演算器２２０は、演算器１２４に代えて演算器２２４を有し、制御信号発生回路１２５を有しない点以外は、拡張演算器１２０と同様である。情報処理装置１００の構成要素と同一の構成要素については、同一の参照番号を付してその説明を省略する。
【００３７】
図５は、図４の演算器２２４の構成例を示すブロック図である。演算器２２４は、制御回路２６２と、乗算器２６３と、セレクタ２６４，２６７，２６９と、レジスタ２６５，２６６と、加算器２６８とを有している。乗算器２６３、セレクタ２６４，２６７、レジスタ２６５，２６６、及び加算器２６８は、積和演算を行う演算回路を構成している。
【００３８】
演算器２２４は、積和演算を行う回路である。演算器２２４は、拡張命令制御回路１２２から供給される制御信号ＩＣ２に従って、データ入力バス１４３から入力された値と、データ入力バス１４４から入力された値との間で乗算又は積和演算を行い、得られた結果を演算処理結果ＰＯ２として出力し、パイプライン制御のために制御信号ＥＣ２を出力する。更に、演算器２２４は、制御信号ＩＣ３に従って、データ入力バス１４３から入力された値に基づいて演算処理を行い、図１の制御信号発生回路１２５と同様の処理を行い、その結果を、制御信号ＥＣ３として出力する。
【００３９】
乗算命令は、乗算のための拡張命令であり、例えば「ＭＵＬ  Ｄｍ，Ｄｎ」（Ｄｍ及びＤｎはレジスタＤ０〜Ｄ３のいずれかを示す）と記述される。積和命令は、積和のための拡張命令であり、例えば「ＭＡＣ  Ｄｍ，Ｄｎ」（Ｄｍ及びＤｎはレジスタＤ０〜Ｄ３のいずれかを示す）と記述される。積和結果取得命令は、積和の結果を取得するための拡張命令であり、例えば「ＧＥＴＭＡＣ  Ｄｎ」（Ｄｍ及びＤｎはレジスタＤ０〜Ｄ３のいずれかを示す）と記述される。
【００４０】
乗算命令が実行される際の情報処理装置２００の動作について説明する。ウェイト命令の場合と同様に、ＣＰＵ１１０は、ＲＯＭ１３０から乗算命令を読み出し、デコードを行い、得られたデコード信号ＣＤＣを出力する。ＣＰＵ制御回路１１２は、デコード信号ＣＤＣに基づいて各種制御信号ＰＣＮを生成し、ＣＰＵ１１０の各回路に出力する。
【００４１】
ＣＰＵ命令デコーダ１１１とほぼ同じタイミングで、拡張演算器２２０の拡張命令デコーダ１２１は、乗算命令をデコードし、得られたデコード信号ＥＤＣを出力する。拡張命令制御回路１２２は、乗算命令が実行されたことをデコード信号ＥＤＣから判定し、制御信号ＩＣ２，ＩＣＳを出力する。また、拡張命令制御回路１２２は、乗算命令以外の命令が実行されないように、制御信号ＩＣ１，ＩＣ３を出力する。
【００４２】
ＣＰＵ１１０は、乗算命令のデコードの結果得られた各種制御信号ＰＣＮに従って、汎用レジスタ１１３のレジスタＤｍから値を読み出してデータ入力バス１４３に出力し、汎用レジスタ１１３のレジスタＤｎから値を読み出してデータ入力バス１４４に出力する。乗算器２６３は、データ入力バス１４３の値とデータ入力バス１４４の値とを乗算し、その乗算結果を出力する。
【００４３】
演算器２２４の制御回路２６２は、制御信号ＩＣ２に従って乗算処理を開始し、制御信号ＳＬ３を出力する。セレクタ２６９は、制御信号ＳＬ３に従って乗算器２６３の出力を選択し、演算処理結果ＰＯ２として出力する。セレクタ１２６は、制御信号ＩＣＳに従って、演算器２２４の演算処理結果ＰＯ２を選択し、選択された値をデータ出力バス１４５に出力する。ＣＰＵ１１０は、データ出力バス１４５の値を、汎用レジスタ１１３のレジスタＤｎに格納する。
【００４４】
次に、積和命令及び積和結果取得命令が実行される際の情報処理装置２００の動作について説明する。積和命令の処理の際も、乗算命令の場合と同様に、ＲＯＭ１３０から命令が読み出されてデコードされ、各種制御信号ＰＣＮが出力される。
【００４５】
ＣＰＵ命令デコーダ１１１とほぼ同じタイミングで、拡張命令デコーダ１２１は、積和命令をデコードし、得られたデコード信号ＥＤＣを出力する。拡張命令制御回路１２２は、積和命令が実行されたことをデコード信号ＥＤＣから判定し、制御信号ＩＣ２を出力する。また、拡張命令制御回路１２２は、積和命令以外の命令が実行されないように、制御信号ＩＣ１，ＩＣ３，ＩＣＳを出力する。ＣＰＵ１１０は、積和命令のデコードの結果得られた各種制御信号ＰＣＮに従って、汎用レジスタ１１３のレジスタＤｍから値を読み出してデータ入力バス１４３に出力し、汎用レジスタ１１３のレジスタＤｎから値を読み出してデータ入力バス１４４に出力する。
【００４６】
制御回路２６２は、制御信号ＩＣ２に従って積和処理を開始し、制御信号ＳＬ１，ＳＬ２，ＳＬ３，ＳＲ１，ＳＲ２，ＥＣ２を生成して出力する。セレクタ２６４は、制御信号ＳＬ１に従って、乗算器２６３の出力を選択し、出力する。レジスタ２６５は、制御信号ＳＲ１に従って、セレクタ２６４から出力された値を格納し、出力する。レジスタ２６６は、制御信号ＳＲ２に従って、保持している値を出力する。セレクタ２６７は、制御信号ＳＬ２に従って、レジスタ２６６から出力された値を選択し、出力する。
【００４７】
次のサイクルで、加算器２６８は、レジスタ２６５から出力された値とセレクタ２６７から出力された値とを加算し、得られた結果を出力する。レジスタ２６６は、制御信号ＳＲ２に従って、加算器２６８から出力された値を格納する。
【００４８】
積和命令実行後に、積和結果取得命令を実行する。積和結果取得命令の処理の際も、乗算命令の場合と同様に、ＲＯＭ１３０から命令が読み出されてデコードされ、各種制御信号ＰＣＮが出力される。
【００４９】
ＣＰＵ命令デコーダ１１１とほぼ同じタイミングで、拡張命令デコーダ１２１は、積和結果取得命令をデコードし、得られたデコード信号ＥＤＣを出力する。拡張命令制御回路１２２は、積和結果取得命令が実行されたことをデコード信号ＥＤＣから判定し、制御信号ＩＣ２，ＩＣＳを出力する。また、拡張命令制御回路１２２は、積和結果取得命令以外の命令が実行されないように、制御信号ＩＣ１，ＩＣ３を出力する。
【００５０】
制御回路２６２は、制御信号ＩＣ２に従って積和結果取得処理を開始し、制御信号ＳＬ３を生成して出力する。セレクタ２６９は、制御信号ＳＬ３に従って、レジスタ２６６から出力された値を選択し、出力する。セレクタ１２６は、制御信号ＩＣＳに従って、演算器２２４から出力された演算処理結果ＰＯ２を選択し、データ出力バス１４５に出力する。ＣＰＵ１１０は、データ出力バス１４５の値を、汎用レジスタ１１３のレジスタＤｎに格納する。
【００５１】
次に、ウェイト命令が実行される際の情報処理装置２００の動作について説明する。ここでは演算器２２４の動作についてのみ説明する。その他の構成要素の動作は、第１の実施形態と同様である。汎用レジスタ１１３のレジスタＤｍから読み出された値が、データ入力バス１４３に出力されているとする。制御回路２６２は、制御信号ＩＣ３に従ってウェイト処理を開始し、制御信号ＳＬ１，ＳＲ１，ＳＬ２，ＥＣ３を生成して出力する。
【００５２】
セレクタ２６４は、制御信号ＳＬ１に従ってデータ入力バス１４３の値を選択し、出力する。レジスタ２６５は、制御信号ＳＲ１に従って、セレクタ２６４から出力された値を格納し、出力する。セレクタ２６７は、制御信号ＳＬ２に従って、「−１」を選択し、出力する。加算器２６８は、レジスタ２６５から出力された値とセレクタ２６７から出力された値とを加算し、得られた結果をセレクタ２６４及びレジスタ２６６に出力し、キャリーアウトを制御回路２６２に出力する。
【００５３】
制御信号ＳＬ１が「１」の間はウェイト命令が実行される。制御回路２６２は、加算器２６８のキャリーアウトが「１」の間は制御信号ＥＣ３として「１」を出力する。このとき、制御信号ＥＣＰとして「１」が出力される。ＣＰＵ制御回路１１２は、制御信号ＥＣＰが「１」なので、各種制御信号ＰＣＮによってＣＰＵ１１０のパイプライン動作を停止させる。
【００５４】
ウェイト命令実行中は、セレクタ２６４は、制御信号ＳＬ１に従って、加算器２６８から出力される値を選択して出力し、レジスタ２６５は、制御信号ＳＲ１に従って、セレクタ２６４から出力される値を保持し、出力する。加算器２６８は、前述のようなレジスタ２６５から出力された値とセレクタ２６７から出力された値との加算をサイクル毎に繰り返す。
【００５５】
制御回路２６２は、加算器２６８のキャリーアウトが「０」になったとき、ウェイト処理を終了すべきであると判定し、制御信号ＥＣ３として「０」を出力する。ＣＰＵ制御回路１１２は、制御信号ＥＣ３によって制御信号ＥＣＰが「０」になるので、各種制御信号１４６によってＣＰＵ１１０のパイプライン動作を再開させる。
【００５６】
（第３の実施形態）
図１の装置によると、パイプラインを停止させるので、待機状態を解除する必要がある場合に、ＣＰＵ１１０は外部からの割り込みを受け付けることができない。そこで本実施形態では、拡張演算器１２０の制御信号発生回路１２５にも割り込み信号を与えることにより、ウェイト命令を実行中であっても割り込みが可能となるようにする。
【００５７】
図６は、本発明の第３の実施形態に係る情報処理装置の構成を示すブロック図である。図６の情報処理装置２００は、拡張演算器１２０に代えて拡張演算器３２０を有する点以外は、図１の情報処理装置１００と同様である。拡張演算器３２０は、制御信号発生回路１２５に代えて制御信号発生回路３２５を有する点以外は、拡張演算器１２０と同様である。割り込み制御回路３０２は、情報処理装置２００の外部から供給される割り込みのための制御信号ＩＮＲが「０」になると、ＣＰＵ１１０に割り込みを行う。情報処理装置１００の構成要素と同一の構成要素については、同一の参照番号を付してその説明を省略する。
【００５８】
図７は、図６の制御信号発生回路３２５の構成例を示すブロック図である。制御信号発生回路３２５は、論理和回路３６９を更に有している点以外は、図２の制御信号発生回路１２５と同様である。
【００５９】
図８は、図６の情報処理装置３００の動作の例を示すタイミングチャートである。例として、制御信号ＩＮＲは負論理であるとして説明する。この場合、制御信号ＩＮＲが「０」になることにより、割り込み処理が開始される。第１の実施形態と同様にウェイト命令「ＷＡＩＴ  Ｄｍ」が実行される場合について、図３の場合と異なる点についてのみ説明する。
【００６０】
レジスタＤｍが格納している値は５であるとし、制御信号ＩＮＲは「１」であるとする。時刻Ｔ４までの動作は、図３の場合と同様である。ただし、論理和回路３６９は、比較器６８から出力される一致信号ＣＭＲと、制御信号ＩＮＲを反転させた結果との論理和を求め、その結果を信号ＣＩＮとして一致信号ＣＭＲに代えて制御回路６２に与える。
【００６１】
時刻Ｔ４〜Ｔ５において、割り込み要求が発生したとする。このとき、制御信号ＩＮＲが「０」になる。割り込み制御回路３０２は、ＣＰＵ１１０に割り込みを行う。しかし、ＣＰＵ１１０は、ウェイト命令実行中であってパイプラインを停止しているため、割り込みを受け付けない。
【００６２】
論理和回路３６９は、制御信号ＩＮＲが「０」になると、信号ＣＩＮとして「１」を出力する。制御回路６２は、信号ＣＩＮが「１」になると、第１の実施形態において比較器６８が一致と判定したときと同様に、ウェイト命令動作の終了と判断し、制御信号ＥＣ３として「０」を出力する。すると、論理和回路１２７は、制御信号ＥＣＰとして「０」を出力する。
【００６３】
ＣＰＵ制御回路１１２は、制御信号ＥＣＰが「０」なので、各種制御信号ＰＣＮを出力し、時刻Ｔ５からＣＰＵ１１０のパイプライン動作を再開させる。すると、割り込み制御回路３０２から割り込みが行われている状態であるので、ＣＰＵ１１０は割り込み処理を開始する。
【００６４】
以上のように、図６の情報処理装置によると、ウェイト命令の実行中であっても、ＣＰＵ１１０が割り込み処理を実行することができる。
【００６５】
なお、割り込み信号は負論理であるとして説明したが、正論理であってもよい。この場合には、論理和回路３６９の構成を変えればよい。また、割り込み信号が複数ある場合には、それらの論理和を制御信号発生回路３２５へ供給するようにすればよい。
【００６６】
（第４の実施形態）
図１の装置によると、ＣＰＵ１１０が待機している間にも、ＣＰＵ１１０は電力を消費する。そこで本実施形態では、拡張演算器１２０から出力される制御信号ＥＣＰを用いて、待機中にはＣＰＵ１１０へのクロック信号の供給を停止し、無駄な電力消費を抑えるようにする。
【００６７】
図９は、本発明の第４の実施形態に係る情報処理装置の構成を示すブロック図である。図９の情報処理装置４００は、クロック制御回路４８０を更に有する点以外は、図１の情報処理装置１００と同様である。情報処理装置１００の構成要素と同一の構成要素については、同一の参照番号を付してその説明を省略する。
【００６８】
図１０は、図９のクロック制御回路４８０の構成例を示すブロック図である。クロック制御回路４８０は、インバータ４８２と、フリップフロップ（ＦＦ）４８４と、論理積回路４８６とを有している。
【００６９】
インバータ４８２は、情報処理装置４００の外部から供給されるクロック信号ＣＬＫを、その論理を反転させて出力する。ＦＦ４８４は、インバータ４８２の出力に同期して、拡張演算器１２０から供給される制御信号ＥＣＰの値を保持し、その値を制御信号ＦＥＣとして出力する。論理積回路４８６は、制御信号ＦＥＣを反転した値とクロック信号ＣＬＫとの論理積を求め、クロック信号ＣＫＰとしてＣＰＵ１１０に出力する。ＣＰＵ１１０は、クロック信号ＣＫＰに従って動作する。
【００７０】
図１１は、図９の情報処理装置４００の動作の例を示すタイミングチャートである。ウェイト命令の実行中ではない場合には、制御信号ＥＣＰが「０」であるので、クロック信号ＣＬＫとクロック信号ＣＫＰとはほぼ同じ波形となる。第１の実施形態と同様にウェイト命令「ＷＡＩＴ  Ｄｍ」が実行される場合について、図３の場合と異なる点についてのみ説明する。レジスタＤｍが格納している値は５であるとする。時刻Ｔ２までの動作は、図３の場合と同様である。
【００７１】
時刻Ｔ２において制御信号ＥＣＰが「１」になるので、時刻Ｔ２〜Ｔ３において、ＦＦ４８４は、制御信号ＦＥＣを「１」にする。制御信号ＦＥＣが「１」なので、論理積回路４８６は、クロック信号ＣＫＰとして「０」を出力する。この状態は、時刻Ｔ８の前まで続く。クロック制御回路４８０から供給されるクロック信号ＣＫＰが「０」のままであるので、ＣＰＵ１１０は、その全体の動作を停止する。
【００７２】
時刻Ｔ７において、比較値保持回路６４の出力データＣＭＶとカウンタ回路６６の出力データＣＮＴとが一致するので、比較器６８は一致信号ＣＭＲとして「１」を出力する。制御回路６２は、一致信号ＣＭＲが「１」なので、ウェイト命令動作の終了と判断し、制御信号ＥＣ３として「０」を出力する。すると、論理和回路１２７は、制御信号ＥＣＰとして「０」を出力する。
【００７３】
制御信号ＥＣＰが「０」なので、クロック制御回路４８０のＦＦ４８４は、制御信号ＦＥＣとして「０」を出力する。論理積回路４８６は、クロック信号ＣＫＰとしてクロック信号ＣＬＫをそのまま出力する。したがって、時刻Ｔ８から、ＣＰＵ１１０へのクロック信号ＣＫＰの供給が再開され、ＣＰＵ１１０は通常のパイプライン動作を開始する。
【００７４】
以上のように、図９の情報処理装置はクロック制御回路４８０を有しているので、ウェイト命令実行中にＣＰＵ１１０に無駄なクロック信号を供給することがなくなり、電力消費を抑えることができる。
【００７５】
なお、演算器１２３又は１２４が、拡張命令によって複数サイクルＣＰＵ１１０を待たせて演算処理をする場合にも、同様にＣＰＵ１１０へのクロック信号ＣＫＰの供給を制御することができ、拡張演算実行時の電力消費を抑えることができる。
【００７６】
（第５の実施形態）
本実施形態では、拡張演算器が外部の回路を制御する例について説明する。
【００７７】
図１２は、本発明の第５の実施形態に係る情報処理装置の構成を示すブロック図である。図１２の情報処理装置５００は、拡張演算器１２０に代えて拡張演算器５２０を有する点以外は、図１の情報処理装置１００と同様である。拡張演算器５２０は、制御信号発生回路１２５に代えて制御信号発生回路５２５を有する点以外は、拡張演算器１２０と同様である。情報処理装置１００の構成要素と同一の構成要素については、同一の参照番号を付してその説明を省略する。
【００７８】
図１３は、図１２の制御信号発生回路５２５の構成例を示すブロック図である。制御信号発生回路５２５は、制御回路６２に代えて制御回路５６２を有している点以外は、図２の制御信号発生回路１２５と同様である。
【００７９】
図１４は、図１２の情報処理装置５００の動作の例を示すタイミングチャートである。外部信号出力命令Ａ（信号生成命令）は、拡張演算器５２０に、ＣＰＵが設定した時間の経過後に、情報処理装置５００の外部へ制御信号を出力させるための拡張命令である。外部信号出力命令Ｂ（信号生成命令）は、拡張演算器５２０に、ＣＰＵが設定した時間の間隔で、情報処理装置５００の外部へ制御信号を繰り返し出力させるための拡張命令である。信号生成終了命令は、外部信号出力命令Ｂのための動作を終了するための拡張命令である。
【００８０】
以下では、例として、外部信号出力命令Ａ及び外部信号出力命令Ｂが出力させる制御信号が、割り込み要求のための制御信号であり、信号生成終了命令として割り込み終了命令を用いる場合について説明する。外部信号出力命令Ａ、外部信号出力命令Ｂ及び割り込み終了命令は、それぞれ、例えば「ＳＷＩＯ  Ｄｍ」、「ＳＷＩＩ  Ｄｍ」、「ＳＷＩＥ」（ＤｍはレジスタＤ０〜Ｄ３のいずれかを示す）と記述される。
【００８１】
図１４において、各ステージの「ＩＯ」は、外部信号出力命令Ａの処理中であることを示し、「ＩＩ」は、外部信号出力命令Ｂの処理中であることを示し、「ＩＥ」は、割り込み終了命令の処理中であることを示す。
【００８２】
外部信号出力命令Ａが実行される際の情報処理装置５００の動作について説明する。ウェイト命令の場合と同様に、ＣＰＵ１１０は、ＲＯＭ１３０から外部信号出力命令Ａを読み出し、デコードを行い、得られたデコード信号ＣＤＣを出力する。ＣＰＵ制御回路１１２は、デコード信号ＣＤＣに基づいて各種制御信号ＰＣＮを生成し、ＣＰＵ１１０の各回路に出力する。
【００８３】
拡張演算器５２０の拡張命令デコーダ１２１は、外部信号出力命令Ａをデコードし、得られたデコード信号ＥＤＣを出力する。拡張命令制御回路１２２は、外部信号出力命令Ａが実行されたことをデコード信号ＥＤＣから判定し、時刻Ｔ１〜Ｔ２において制御信号ＩＣ３を出力する。
【００８４】
時刻Ｔ２において、ＣＰＵ１１０は、外部信号出力命令Ａのデコードの結果得られた各種制御信号ＰＣＮに従って、汎用レジスタ１１３のレジスタＤｍから値を読み出してデータ入力バス１４３に出力する。制御信号発生回路５２５の制御回路５６２は、制御信号ＩＣ３に従って外部信号出力命令Ａの処理を開始する。制御回路５６２は、図２の制御回路６２と同様に、比較値保持回路６４及びカウンタ回路６６を制御する。比較器６８は、比較値保持回路６４の出力データＣＭＶと、カウンタ回路６６の出力データＣＮＴとを比較し、両者が一致しないので、一致信号ＣＭＲとして「０」を出力する。
【００８５】
外部信号出力命令Ａを実行中は、制御回路５６２は、常に制御信号ＥＣ３として「０」を出力し、ＣＰＵ１１０のパイプライン動作を停止させることはない。また、一致信号ＣＭＲが「０」なので、制御回路５６２は、制御信号ＩＮＲとして「１」を出力する。外部信号出力命令Ａの実行中は、比較値保持回路６４は値を保持し、カウンタ回路６６はカウントアップを続ける。比較器６８は、出力データＣＭＶと出力データＣＮＴとが一致するまで一致信号ＣＭＲとして「０」を出力するので、制御回路５６２は、制御信号ＩＮＲとして「１」を出力し続ける。
【００８６】
時刻Ｔ５において、出力データＣＭＶと出力データＣＮＴとが一致するので、比較器６８は、一致信号ＣＭＲとして「１」を出力する。制御回路５６２は、一致信号ＣＭＲが「１」なので、制御信号ＩＮＲとして「０」を出力し、時刻Ｔ６において外部信号出力命令Ａのための動作を終了する。割り込み制御回路３０２は、拡張演算器５２０から供給される制御信号ＩＮＲが「０」になるので、割り込み信号をＣＰＵ１１０に出力し、ＣＰＵ１１０は割り込み処理を開始する。
【００８７】
以上のように、拡張演算器５２０が、その外部に制御信号ＩＮＲを出力するので、外部信号出力命令Ａを実行することにより、レジスタＤｍに設定されたサイクル数の経過後に、ＣＰＵ１１０に割り込みを行うことができる。
【００８８】
外部信号出力命令Ｂが実行される際の情報処理装置５００の動作について説明する。時刻Ｔ６，Ｔ７において、ＣＰＵ１１０は、ＲＯＭ１３０から外部信号出力命令Ｂを読み出し、デコードを行う。ＣＰＵ制御回路１１２は、ＣＰＵ１１０内部の各回路に各種制御信号ＰＣＮを出力する。
【００８９】
拡張演算器５２０の拡張命令デコーダ１２１は、外部信号出力命令Ｂをデコードし、得られたデコード信号ＥＤＣを出力する。拡張命令制御回路１２２は、外部信号出力命令Ｂが実行されたことをデコード信号ＥＤＣから判定し、拡張演算器５２０内の各回路に制御信号を出力する。
【００９０】
時刻Ｔ８において、制御信号発生回路５２５の制御回路５６２は、制御信号ＩＣ３に従って外部信号出力命令Ｂの処理を開始する。制御回路５６２は、図２の制御回路６２と同様に、比較値保持回路６４及びカウンタ回路６６を制御する。また、制御回路５６２は、外部信号出力命令Ｂが実行中であるという情報を保持する。
【００９１】
比較器６８は、比較値保持回路６４の出力データＣＭＶと、カウンタ回路６６の出力データＣＮＴとを比較する。時刻Ｔ８〜Ｔ１０においては、両者が一致しないので、比較器６８は、一致信号ＣＭＲとして「０」を出力し、制御回路５６２は、制御信号ＩＮＲとして「１」を出力する。
【００９２】
時刻Ｔ１０において、出力データＣＭＶと出力データＣＮＴとが一致するので、比較器６８は、一致信号ＣＭＲとして「１」を出力し、制御回路５６２は、制御信号ＩＮＲとして「０」を出力する。制御回路５６２は、外部信号出力命令Ｂが実行中であるという情報を保持しているので、一致信号ＣＭＲが「１」になっても、カウンタ回路６６の出力データＣＮＴの値を「０」にリセットするだけで、動作を終了せず、時刻Ｔ１１以降も同じ動作を繰り返し実行する。
【００９３】
外部信号出力命令Ｂを実行中に、新たな外部信号出力命令Ｂを実行した場合には、図１４の時刻Ｔ１９に示すように、比較値保持回路６４の出力データＣＭＶが書き換えられるが、外部信号出力命令Ｂの処理は継続される。この場合には、出力データＣＭＶが書き換えられた時点から、制御回路５６２は、新たな外部信号出力命令Ｂに設定されたサイクル数毎に、割り込み要求を繰り返し出力する動作を繰り返す。
【００９４】
また、図１４の時刻Ｔ２６に示すように、割り込み終了命令を実行した時点で、制御信号発生回路５２５の制御回路５６２は動作を終了し、カウンタ回路６６をリセットする。
【００９５】
このように、外部信号出力命令Ｂを実行することにより、レジスタＤｍに設定したサイクル数毎に割り込み要求を出力することができ、割り込み終了命令を実行することにより、外部信号出力命令Ｂのための動作を終了させることができる。
【００９６】
なお、拡張演算器５２０から出力される制御信号ＩＮＲは、ＣＰＵ１１０への割り込みの制御を行う割り込み制御回路３０２に与えられているが、情報処理装置５００の外部にある回路、例えばプロセッサ、タイマ、Ａ／Ｄ変換器等に与えるようにしてもよい。すると、制御信号ＩＮＲによってこれらの回路を制御することができる。
【００９７】
以上のように、拡張演算器５２０は、制御信号発生回路５２５の制御信号ＩＮＲを情報処理装置５００の外部の回路に出力しているので、情報処理装置５００は、１つの拡張命令を実行することによって、情報処理装置５００の外部の回路を直接制御することができる。
【００９８】
（第６の実施形態）
図１２の装置によると外部回路の制御が可能となるが、外部回路の制御には特定の波形を有する制御信号が必要な場合が多い。そこで本実施形態では、拡張演算器１２０に供給される２つのデータを用いて、制御信号が「０」である期間の長さと、「１」である期間の長さとを設定するようにし、任意の波形の制御信号を出力することができるようにする。
【００９９】
図１５は、本発明の第６の実施形態に係る情報処理装置の構成を示すブロック図である。図１５の情報処理装置６００は、拡張演算器１２０に代えて拡張演算器６２０を有する点以外は、図１の情報処理装置１００と同様である。拡張演算器６２０は、制御信号発生回路１２５に代えて制御信号発生回路６２５を有する点以外は、拡張演算器１２０と同様である。Ａ／Ｄ変換器６０２は、情報処理装置６００の外部にあり、拡張演算器６２０の制御信号発生回路６２５から供給される制御信号ＣＡＤに従ってＡ／Ｄ変換処理を行う。情報処理装置１００の構成要素と同一の構成要素については、同一の参照番号を付してその説明を省略する。
【０１００】
図１６は、図１５の制御信号発生回路６２５の構成例を示すブロック図である。制御信号発生回路６２５は、制御回路６２に代えて制御回路６６２を有し、比較値保持回路６６５と、セレクタ６６７とを更に有している点以外は、図２の制御信号発生回路１２５と同様である。
【０１０１】
図１７は、図１５の情報処理装置６００の動作の例を示すタイミングチャートである。信号生成命令は、ＣＰＵが設定したサイクル数を用いて、値が「０」である期間の長さと、値が「１」である期間の長さとが指定された制御信号を生成するための拡張命令である。信号生成命令は、例えば「ＳＷＳＧ  Ｄｍ，Ｄｎ」（Ｄｍ，ＤｎはレジスタＤ０〜Ｄ３のいずれかを示す）と記述される。図１７において、各ステージの「ＳＧ」は、信号生成命令の処理中であることを示す。
【０１０２】
信号生成命令が実行される際の情報処理装置６００の動作について説明する。ウェイト命令の場合と同様に、ＣＰＵ１１０は、ＲＯＭ１３０から信号生成命令を読み出し、デコードを行い、得られたデコード信号ＣＤＣを出力する。ＣＰＵ制御回路１１２は、デコード信号ＣＤＣに基づいて各種制御信号ＰＣＮを生成し、ＣＰＵ１１０の各回路に出力する。
【０１０３】
拡張演算器６２０の拡張命令デコーダ１２１は、信号生成命令をデコードし、得られたデコード信号ＥＤＣを出力する。拡張命令制御回路１２２は、信号生成命令が実行されたことをデコード信号ＥＤＣから判定し、時刻Ｔ１〜Ｔ２において制御信号ＩＣ３を出力する。
【０１０４】
時刻Ｔ２において、ＣＰＵ１１０は、信号生成命令のデコードの結果得られた各種制御信号ＰＣＮに従って、汎用レジスタ１１３のレジスタＤｍから値を読み出してデータ入力バス１４３に出力し、汎用レジスタ１１３のレジスタＤｎから値を読み出してデータ入力バス１４４に出力する。制御信号発生回路６２５内の制御回路６６２は、制御信号ＩＣ３に従って、信号生成命令の処理を開始し、制御信号ＣＨ，ＣＣ，ＣＳを生成して出力する。
【０１０５】
比較値保持回路６４は、制御信号ＣＨに従って、データ入力バス１４３の値を保持し、出力データＣＭ１として出力する。比較値保持回路６６５は、制御信号ＣＨに従って、データ入力バス１４４の値を保持し、出力データＣＭ２として出力する。セレクタ６６７は、制御信号ＣＳに従って、出力データＣＭ１を選択して出力する。カウンタ回路６６は、制御信号ＣＣに従って、カウントアップを開始し、カウント値を出力データＣＮＴとして出力する。
【０１０６】
比較器６８は、セレクタ６６７の出力データと出力データＣＮＴとを比較し、両者が一致しないので、一致信号ＣＭＲとして「０」を出力する。制御回路６６２は、信号生成命令を実行中は、常に、制御信号ＥＣ３として「０」を出力し、ＣＰＵ１１０のパイプライン動作を停止させることはない。また、一致信号ＣＭＲが「０」なので、制御回路６６２は、制御信号ＣＡＤとして「１」を出力する。
【０１０７】
信号生成命令の実行中は、比較値保持回路６４及び６６５は値を保持し、カウンタ回路６６はカウントアップを続ける。比較器６８は、セレクタ６６７の出力データと出力データＣＮＴとが一致するまで、一致信号ＣＭＲとして「０」を出力するので、制御回路６６２は、制御信号ＣＡＤとして「１」を出力し続ける。
【０１０８】
時刻Ｔ５において、セレクタ６６７の出力データと出力データＣＮＴとが一致するので、比較器６８は、一致信号ＣＭＲとして「１」を出力する。制御回路６６２は、一致信号ＣＭＲが「１」なので、時刻Ｔ６において制御信号ＣＡＤとして「０」を出力し、セレクタ６６７への制御信号を切り替え、カウンタ回路６６をリセットしてカウンタ回路６６の保持する値を「０」にする。
【０１０９】
セレクタ６６７は、制御回路６６２からの制御信号に従って、出力データＣＭ２を選択して出力する。カウンタ回路６６は、制御回路６６２からの制御信号に従って、再びカウントアップを開始し、カウント値を出力データＣＮＴとして出力する。比較器６８は、セレクタ６６７の出力データと出力データＣＮＴとを比較し、両者が一致しないので、一致信号ＣＭＲとして「０」を出力する。
【０１１０】
制御回路６６２の制御によって、比較値保持回路６４，６６５は値を保持し、カウンタ回路６６はカウントアップを続ける。比較器６８は、セレクタ６６７の出力データと出力データＣＮＴとが一致するまで、一致信号ＣＭＲとして「０」を出力するので、制御回路６６２は、制御信号ＣＡＤとして「１」を出力し続ける。
【０１１１】
時刻Ｔ８において、セレクタ６６７の出力データと出力データＣＮＴとが一致するので、比較器６８は、一致信号ＣＭＲとして「１」を出力する。制御回路６６２は、一致信号ＣＭＲが「１」なので、制御信号ＣＡＤとして「０」を出力し、時刻Ｔ９において信号生成命令のための動作を終了する。Ａ／Ｄ変換器６０２は、拡張演算器６２０から供給される制御信号ＣＡＤの波形に基づいて、Ａ／Ｄ変換処理を実行する。
【０１１２】
以上のように、拡張演算器６２０は、信号生成命令を実行することにより、ＣＰＵ１１０の汎用レジスタ１１３から読み出された２つのデータを用いて、値が「０」である期間の長さと、値が「１」である期間の長さとが指定された制御信号を生成することができる。
【０１１３】
なお、第５の実施形態で説明した外部信号出力命令Ｂのように、信号生成命令の動作を繰り返し実行する命令を実装することは、制御回路６６２を用いれば容易に実現できる。また、本実施形態では、レジスタＤｍが「１」の期間、レジスタＤｎが「０」の期間のサイクル数を指定する場合について説明したが、逆であってもよい。
【０１１４】
（第７の実施形態）
以上の実施形態では、拡張命令に関する期間の長さをクロック信号のサイクル数で指定しているが、クロック信号の周波数を変更すると、指定するサイクル数を変更する必要がある。そこで本実施形態では、クロック信号の周波数を変更しても、ソフトウェアプログラムの変更をしなくても済むようにする。
【０１１５】
図１８は、本発明の第７の実施形態に係る情報処理装置の構成を示すブロック図である。図１８の情報処理装置７００は、拡張演算器１２０に代えて拡張演算器７２０を有する点以外は、図１の情報処理装置１００と同様である。拡張演算器７２０は、制御信号発生回路１２５に代えて制御信号発生回路７２５を有する点以外は、拡張演算器１２０と同様である。情報処理装置１００の構成要素と同一の構成要素については、同一の参照番号を付してその説明を省略する。
【０１１６】
図１９は、図１８の制御信号発生回路７２５の構成例を示すブロック図である。制御信号発生回路７２５は、制御回路６２及びカウンタ回路６６に代えて制御回路７６２及びカウンタ回路７６６を有し、基準サイクル保持回路７７４と、カウンタ回路７７６と、比較器７７８と、論理積回路７６９とを更に有している点以外は、図２の制御信号発生回路１２５と同様である。カウンタ回路７６６は、比較器７７８から出力される制御信号ＣＭＲ２が「１」である場合に、クロック信号ＣＬＫのパルスのカウントを行う。その他の点は、カウンタ回路６６と同様である。
【０１１７】
図２０は、図１８の情報処理装置７００の動作の例を示すタイミングチャートである。基準サイクル設定命令は、制御信号発生回路７２５の基準サイクル保持回路７７４に、ＣＰＵが設定したサイクル数を保持させる拡張命令である。基準サイクル設定命令は、例えば「ＰＵＴＤ  Ｄｍ」（ＤｍはレジスタＤ０〜Ｄ３のいずれかを示す）と記述される。図２０において、各ステージの「ＰＤ」は、基準サイクル設定命令の処理中であることを示す。
【０１１８】
基準サイクル設定命令が実行される際の情報処理装置７００の動作について説明する。ウェイト命令の場合と同様に、ＣＰＵ１１０は、ＲＯＭ１３０から基準サイクル設定命令を読み出し、デコードを行い、得られたデコード信号ＣＤＣを出力する。ＣＰＵ制御回路１１２は、デコード信号ＣＤＣに基づいて各種制御信号ＰＣＮを生成し、ＣＰＵ１１０の各回路に出力する。
【０１１９】
拡張演算器７２０の拡張命令デコーダ１２１は、基準サイクル設定命令をデコードし、得られたデコード信号ＥＤＣを出力する。拡張命令制御回路１２２は、基準サイクル設定命令が実行されたことをデコード信号ＥＤＣから判定し、時刻Ｔ１〜Ｔ２において制御信号ＩＣ３を出力する。
【０１２０】
時刻Ｔ２で、ＣＰＵ１１０は、基準サイクル設定命令で指定された、汎用レジスタ１１３のレジスタＤｍから値を読み出し、データ入力バス１４３に出力する。制御信号発生回路７２５内の制御回路７６２は、制御信号ＩＣ３に従って制御信号ＣＳＨを出力し、基準サイクル設定命令のための動作を終了する。基準サイクル保持回路７７４は、制御信号ＣＳＨに従って、レジスタＤｍから読み出されたデータ入力バス１４３の値を基準サイクル数として保持し、これを出力データＲＣとして出力する。
【０１２１】
基準サイクル設定命令の場合と同様に、ＣＰＵ１１０は、次の命令であるウェイト命令の読み出し、デコードを行い、ＣＰＵ制御回路１１２は、各種制御信号ＰＣＮを生成する。拡張命令デコーダ１２１は、ウェイト命令をデコードし、得られたデコード信号ＥＤＣを出力する。拡張命令制御回路１２２は、ウェイト命令が実行されたことをデコード信号ＥＤＣから判定し、時刻Ｔ２〜Ｔ３において制御信号ＩＣ３を出力する。
【０１２２】
時刻Ｔ３において、ＣＰＵ１１０は、ウェイト命令のデコードの結果得られた各種制御信号ＰＣＮに従って、汎用レジスタ１１３のレジスタＤｍから値を読み出してデータ入力バス１４３に出力する。制御回路７６２は、制御信号ＩＣ３に従って、ウェイト命令の処理を開始し、制御信号ＣＨ，ＣＣ，ＣＳＨ，ＣＣ２を生成して出力する。
【０１２３】
基準サイクル保持回路７７４は、制御信号ＣＳＨに従って、保持している値を出力データＲＣとして出力する。カウンタ回路７７６は、制御信号ＣＣ２に従って、クロック信号ＣＬＫのパルスのカウントアップ動作を行い、カウント値を出力データＣＮＴ２として出力する。比較器７７８は、出力データＲＣと出力データＣＮＴ２とを比較し、両者が一致しないので、「０」を制御信号ＣＭＲ２として出力する。
【０１２４】
比較値保持回路６４は、制御信号ＣＨに従って、レジスタＤｍから読み出されたデータ入力バス１４３の値をウェイトサイクル数として保持し、これを出力データＣＭＶとして出力する。カウンタ回路７６６は、制御信号ＣＭＲ２が「０」なので、カウントアップ動作は行わず、保持している値を出力データＣＮＴとして出力する。比較器６８は、出力データＣＭＶと出力データＣＮＴとを比較し、両者が一致しないので、「０」を制御信号ＣＭＲとして出力する。
【０１２５】
論理積回路７６９は、制御信号ＣＭＲと制御信号ＣＭＲ２との間の論理積を求め、得られた「０」を制御信号ＣＭＰとして出力する。制御回路７６２は、制御信号ＣＭＰが「０」なので、制御信号ＥＣ３として「１」を出力する。このとき、論理和回路１２７は、制御信号ＥＣＰとして「１」を出力する。ＣＰＵ制御回路１１２は、制御信号ＥＣＰが「１」なので、各種制御信号ＰＣＮを出力し、時刻Ｔ３からＣＰＵ１１０のパイプライン動作を停止させる。
【０１２６】
時刻Ｔ４では、制御信号ＣＭＲ２が「０」なので、カウンタ回路７６６は、カウントアップ動作は行わず、保持している値を出力データＣＮＴとして出力する。出力データＣＭＶと出力データＣＮＴとは一致しないので、比較器６８は制御信号ＣＭＲとして「０」を出力する。カウンタ回路７７６がカウントアップ動作を行うが、出力データＲＣと出力データＣＮＴ２とは一致しないので、制御信号ＣＭＲ２，ＣＭＰは「０」であり、制御回路７６２から出力される制御信号ＥＣ３は変わらない。
【０１２７】
時刻Ｔ５では、制御信号ＣＭＲ２が「０」なので、カウンタ回路７６６は、カウントアップ動作は行わず、保持している値を出力データＣＮＴとして出力する。出力データＣＭＶと出力データＣＮＴとは一致しないので、比較器６８は制御信号ＣＭＲとして「０」を出力する。カウンタ回路７７６がカウントアップ動作を行い、出力データＲＣと出力データＣＮＴ２とが一致するので、比較器７７８は、「１」を制御信号ＣＭＲ２として出力する。論理積回路７６９は、制御信号ＣＭＲと制御信号ＣＭＲ２との間の論理積を求め、得られた「０」を制御信号ＣＭＰとして出力する。このため、制御信号ＥＣ３は変わらない。
【０１２８】
時刻Ｔ６では、制御信号ＣＭＲ２が「１」なので、カウンタ回路７６６は、カウントアップ動作を行い、カウント値を出力データＣＮＴとして出力する。出力データＣＭＶと出力データＣＮＴとは一致しないので、比較器６８は制御信号ＣＭＲとして「０」を出力する。カウンタ回路７７６は、制御信号ＣＭＲ２によってリセットされ、カウント値が「０」になる。再び出力データＲＣと出力データＣＮＴ２とは一致しなくなるので、比較器７７８は、制御信号ＣＭＲ２として「０」を出力する。制御信号ＣＭＰは「０」なので、制御信号ＥＣ３は変わらない。同様の動作が時刻Ｔ１４まで繰り返される。
【０１２９】
時刻Ｔ１４では、制御信号ＣＭＲ２が「０」なので、カウンタ回路７６６は、カウントアップ動作は行わず、保持している値を出力データＣＮＴとして出力する。出力データＣＭＶと出力データＣＮＴとが一致するので、比較器６８は制御信号ＣＭＲとして「１」を出力する。カウンタ回路７７６がカウントアップ動作を行い、出力データＲＣと出力データＣＮＴ２とが一致するので、比較器７７８は、「１」を制御信号ＣＭＲ２として出力する。論理積回路７６９は、制御信号ＣＭＲと制御信号ＣＭＲ２との間の論理積を求め、得られた「１」を制御信号ＣＭＰとして出力する。
【０１３０】
制御回路７６２は、制御信号ＣＭＰが「１」なので、ウェイト命令動作の終了と判断し、制御信号ＥＣ３として「０」を出力する。このとき、論理和回路１２７は、制御信号ＥＣＰとして「０」を出力する。ＣＰＵ制御回路１１２は、制御信号ＥＣＰが「０」なので、各種制御信号ＰＣＮを出力し、時刻Ｔ１５からＣＰＵ１１０のパイプライン動作を再開させる。
【０１３１】
図２０に示されているように、基準サイクル設定命令によってレジスタＤｍの値を基準サイクル保持回路７７４に設定した後、ウェイト命令を実行すると、「（基準サイクル数＋１）×（ウェイトサイクル数＋１）」サイクルの期間、ＣＰＵ１１０の処理を待たせることができる。したがって、クロック信号ＣＬＫの周波数に応じて基準サイクル数の設定を変更すれば、ウェイトサイクル数の設定を変更しなくても、ＣＰＵ１１０の待機時間を一定に保つことができる。したがって、クロック信号ＣＬＫの周波数を変更しても、ソフトウェアプログラムを変更する必要がなくなる。
【０１３２】
例えば、クロック信号ＣＬＫが１０ＭＨｚのときには、汎用レジスタ１１３に９を設定して基準サイクル数が９となるようにし、クロック信号ＣＬＫが１５ＭＨｚのときには、汎用レジスタ１１３に１４を設定して基準サイクル数が１４となるようにすればよい。汎用レジスタ１１３に９を設定してウェイト命令を実行する場合には、いずれの場合にも、ＣＰＵ１１０の処理を１０マイクロ秒の間待たせることができる。
【０１３３】
以上のように、図１８の情報処理装置によると、クロック信号の周波数を変更してＣＰＵ１１０の動作周波数を変更した場合でも、ソフトウェアプログラムの変更をせずに、ＣＰＵ１１０を一定時間待たせるようにすることができる。
【０１３４】
なお、制御信号発生回路７２５を、第１〜第６の実施形態において用いるようにしてもよい。
【０１３５】
図２１は、図１９の制御信号発生回路７２５の変形例を示すブロック図である。図１９の制御信号発生回路７２５に代えて、図２１の制御信号発生回路８２５を用いるようにしてもよい。制御信号発生回路８２５は、制御回路６２、カウンタ回路６６及び比較器６８に代えて制御回路８６２、カウンタ回路８６６及び比較器８６８を有し、基準サイクル保持回路７７４を更に有している点以外は、図２の制御信号発生回路１２５と同様である。
【０１３６】
基準サイクル保持回路７７４は、制御信号ＣＳＨに従って、レジスタＤｍから読み出されたデータ入力バス１４３の値を基準サイクル数として保持し、これを出力データＲＣとして出力する。カウンタ回路８６６は、制御信号ＣＣに従って、クロック信号ＣＬＫのパルス毎に、基準サイクル保持回路７７４から供給される出力データＲＣの値を加算し、得られたカウント値を出力データＣＮＴとして出力する。比較器８６８は、比較値保持回路６４の出力データＣＭＶと、カウンタ回路８６６の出力データＣＮＴとを比較し、出力データＣＮＴの値が出力データＣＭＶの値以上になったときに、「１」を制御信号ＣＭＲとして制御回路８６２に出力する。
【０１３７】
制御信号発生回路８２５によると、基準サイクル設定命令によって基準サイクル数を基準サイクル保持回路７７４に設定した後、ウェイト命令を実行すると、「ウェイトサイクル数÷基準サイクル数」で求められる数のサイクルの期間、ＣＰＵ１１０の処理を待たせることができる。
【０１３８】
例えば、クロック信号ＣＬＫが１０ＭＨｚの場合には基準サイクル設定命令により基準サイクル数を２に設定し、クロック信号ＣＬＫが２０ＭＨｚの場合には基準サイクル設定命令により基準サイクル数を１に設定すれば、ウェイトサイクル数を１００にしてウェイト命令を実行するときに、いずれの場合でもＣＰＵ１１０の処理を５マイクロ秒の間待たせることができる。したがって、クロック信号ＣＬＫの周波数を変更しても、ソフトウェアプログラムを変更する必要がなくなる。
【０１３９】
また、制御信号発生回路８２５を用いた方が、制御信号発生回路７２５を用いる場合よりも回路規模を小さくすることができる。
【産業上の利用可能性】
【０１４０】
以上説明したように、本発明は、ＣＰＵ等の主演算部に処理を待たせる場合に、待たせる時間を正確に制御することができるので、情報処理装置等について有用である。
【図面の簡単な説明】
【０１４１】
【図１】本発明の第１の実施形態に係る情報処理装置の構成を示すブロック図である。
【図２】図１の制御信号発生回路の構成例を示すブロック図である。
【図３】図１の情報処理装置の動作の例を示すタイミングチャートである。
【図４】本発明の第２の実施形態に係る情報処理装置の構成を示すブロック図である。
【図５】図４の演算器２２４の構成例を示すブロック図である。
【図６】本発明の第３の実施形態に係る情報処理装置の構成を示すブロック図である。
【図７】図６の制御信号発生回路の構成例を示すブロック図である。
【図８】図６の情報処理装置の動作の例を示すタイミングチャートである。
【図９】本発明の第４の実施形態に係る情報処理装置の構成を示すブロック図である。
【図１０】図９のクロック制御回路の構成例を示すブロック図である。
【図１１】図９の情報処理装置の動作の例を示すタイミングチャートである。
【図１２】本発明の第５の実施形態に係る情報処理装置の構成を示すブロック図である。
【図１３】図１２の制御信号発生回路の構成例を示すブロック図である。
【図１４】図１２の情報処理装置の動作の例を示すタイミングチャートである。
【図１５】本発明の第６の実施形態に係る情報処理装置の構成を示すブロック図である。
【図１６】図１５の情報処理装置の動作の例を示すタイミングチャートである。
【図１７】図１５の情報処理装置の動作の例を示すタイミングチャートである。
【図１８】本発明の第７の実施形態に係る情報処理装置の構成を示すブロック図である。
【図１９】図１８の制御信号発生回路の構成例を示すブロック図である。
【図２０】図１８の情報処理装置の動作の例を示すタイミングチャートである。
【図２１】図１９の制御信号発生回路の変形例を示すブロック図である。
【符号の説明】
【０１４２】
６２，２６２，５６２，６６２，７６２，８６２  制御回路
６４  比較値保持回路
６６，７６６，７７６，８６６  カウンタ回路
６８，７７８，８６８  比較器
１１０  ＣＰＵ（主演算部）
１２０，２２０，３２０，５２０，６２０，７２０  拡張演算器（拡張演算部）
１１３  汎用レジスタ
１２５，３２５，５２５，６２５，７２５，８２５  制御信号発生回路（信号生成回路）
２２４  演算器（信号生成回路）
４８０  クロック制御回路
７６２  基準サイクル保持回路
【図１】
2009163338.tif 000003
【図２】
2009163338.tif 000004
【図３】
2009163338.tif 000005
【図４】
2009163338.tif 000006
【図５】
2009163338.tif 000007
【図６】
2009163338.tif 000008
【図７】
2009163338.tif 000009
【図８】
2009163338.tif 000010
【図９】
2009163338.tif 000011
【図１０】
2009163338.tif 000012
【図１１】
2009163338.tif 000013
【図１２】
2009163338.tif 000014
【図１３】
2009163338.tif 000015
【図１４】
2009163338.tif 000016
【図１５】
2009163338.tif 000017
【図１６】
2009163338.tif 000018
【図１７】
2009163338.tif 000019
【図１８】
2009163338.tif 000020
【図１９】
2009163338.tif 000021
【図２０】
2009163338.tif 000022
【図２１】
2009163338.tif 000023