(57)【要約】【課題】  簡単な構成によって、命令の実行時間の相違に基づくハザードの発生を防止すること。【解決手段】  情報処理装置１においては、命令コードに含まれる実行サイクル数に基づいて、サイクルコントローラ２１が、その命令コードが実行される際に、クロック原信号をマスクし、実行ステージを２サイクル継続させる。したがって、簡単な構成によって、命令の実行時間の相違に基づくハザードの発生を防止することが可能となる。【選択図】  図１
2006126893.tif 000002
【特許請求の範囲】
【請求項１】
発振器によって発生された信号を制御してプロセッサにクロック信号を供給するクロック制御装置であって、
前記プロセッサにおいて実行される命令の実行サイクル数に応じて、前記発振器によって発生された信号をマスクし、前記プロセッサに供給するクロック信号の周期を変化させるサイクル数変更手段を含むことを特徴とするクロック制御装置。
【請求項２】
前記サイクル数変更手段は、
前記プロセッサにおいて実行される命令の実行サイクル数に応じたクロックマスク信号を出力するマスク信号出力手段と、
前記発振器によって発生された信号と、前記マスク信号出力手段によって出力されたクロックマスク信号との論理積を取得し、前記プロセッサに供給するクロック信号とする演算手段とを含み、
前記マスク信号出力手段において前記クロックマスク信号の論理を切り換えることにより、前記発振器によって発生された信号をマスクすることを特徴とする請求項１記載のクロック制御装置。
【請求項３】
所定周期のクロック信号を発生するクロック発振手段と、
実行時における実行サイクル数を示す情報を含む命令コードを取得するフェッチ手段と、
前記命令コードをデコードし、該命令コードの実行サイクル数を取得するデコード手段と、
前記デコード手段によって取得された前記命令コードの実行サイクル数に基づいて、該命令コードが実行される場合に、前記クロック発振手段によって発生されたクロック信号をマスクし、クロック信号の周期を変化させるサイクル数変更手段と、
前記サイクル数変更手段によって周期が変化されたクロック信号に従って、前記命令コードを実行する実行手段と、
を含むことを特徴とする情報処理装置。
【請求項４】
前記サイクル数変更手段は、
前記命令コードの実行サイクル数に応じたクロックマスク信号を出力するマスク信号出力手段と、
前記クロック発振手段によって発生されたクロック信号と、前記マスク信号出力手段によって出力されたクロックマスク信号との論理積を取得し、前記実行手段に出力する演算手段とを含み、
前記マスク信号出力手段において前記クロックマスク信号の論理を切り換えることにより、前記発振器によって発生された信号をマスクすることを特徴とする請求項３記載の情報処理装置。
【請求項５】
発振器によって発生された信号を制御してプロセッサにクロック信号を供給するクロック制御方法であって、
前記プロセッサにおいて実行される命令の実行サイクル数に応じて、前記発振器によって発生された信号をマスクし、前記プロセッサに供給するクロック信号の周期を変化させるサイクル数変更ステップを含むことを特徴とするクロック制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサに供給するクロック信号を制御するクロック制御装置、それを備えた情報処理装置およびプロセッサに供給するクロック信号を制御するためのクロック制御方法に関する。
【背景技術】
【０００２】
従来、パイプライン処理を行うプロセッサにおいては、命令毎の処理の複雑性や計算量に比例して、その実行時間が増加する。そのため、通常は１サイクル分の実行ステージで処理が終了するのに対し、通常より複雑な処理や計算量の多い処理においては、２サイクル分の実行ステージを要する場合がある。
このような場合、２サイクル分の実行ステージを要する命令（以下、「２サイクル命令」と言う。）の直後に通常の命令（以下、「１サイクル命令」と言う。）が発行されると、図４に示すように、レジスタファイルへの書き込みタイミング（ＷＢ：Write Backステージ）が重複することとなり、ハザードが生じてしまう。
【０００３】
そこで、このような状態となることを回避するために、従来、以下のような方法が用いられていた。
第１の方法は、２サイクル命令の直後に１サイクル命令が発行される場合、図５に示すように、１サイクル命令のデコードをインターロック信号によって１サイクル遅らせるものである。
【０００４】
また、第２の方法は、図６に示すように、プロセッサの設計上、全ての命令を２サイクル命令とするものである。
さらに、他の方法として、レジスタファイルに書き込むデータを一時的に退避させるバッファを備えておき、レジスタファイルへの書き込みポートが使用中である場合（ライトバックステージが重複した場合）、レジスタファイルに書き込めないデータをバッファに退避しておき、レジスタファイルへの書き込みポートが空いた後に、データの書き込みを行う技術が知られている（例えば、特許文献１参照）。
【特許文献１】特開平５−３０７４８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述の第１の方法においては、命令の発行順序に応じてインターロック信号の制御を行う必要があるため、回路構成が複雑になるという問題があった。
また、上述の第２の方法においては、１サイクル分の実行ステージで処理が終了する命令であっても、実行ステージの２サイクル目を待つ必要があるため、時間調整のための回路を付加する必要があった。
【０００６】
さらに、特許文献１に記載された技術においては、レジスタファイルに書き込むデータを一時的に退避させるバッファを備えることから、新たにレジスタ等を付加することとなり、回路規模が増大するという問題があった。
このように、パイプライン処理を行う従来のプロセッサでは、簡単な構成によって、命令の実行時間の相違に基づくハザードの発生を防止することは困難であった。
【０００７】
本発明の課題は、簡単な構成によって、命令の実行時間の相違に基づくハザードの発生を防止することである。
【課題を解決するための手段】
【０００８】
以上の課題を解決するため、本発明は、
発振器によって発生された信号を制御してプロセッサにクロック信号を供給するクロック制御装置であって、前記プロセッサにおいて実行される命令の実行サイクル数に応じて、前記発振器によって発生された信号をマスクし、前記プロセッサに供給するクロック信号の周期を変化させるサイクル数変更手段（例えば、図１のサイクルコントローラ２１およびＡＮＤ回路２２）を含むことを特徴としている。
【０００９】
このような構成により、プロセッサにおいて実行される命令の全てを１サイクル命令として取り扱うことができる。
したがって、簡単な構成によって、命令の実行時間の相違に基づくハザードの発生を防止することが可能となる。
また、前記サイクル数変更手段は、前記プロセッサにおいて実行される命令の実行サイクル数に応じたクロックマスク信号を出力するマスク信号出力手段（例えば、図１のサイクルコントローラ２１）と、前記発振器によって発生された信号と、前記マスク信号出力手段によって出力されたクロックマスク信号との論理積を取得し、前記プロセッサに供給するクロック信号とする演算手段（例えば、図１のＡＮＤ回路２２）とを含み、前記マスク信号出力手段において前記クロックマスク信号の論理を切り換えることにより、前記発振器によって発生された信号をマスクすることを特徴としている。
【００１０】
このような構成により、命令の実行サイクル数に応じたクロックマスク信号の出力と、そのクロックマスク信号と発振器の出力信号の論理積の演算とを行う簡単な構成によって、命令の実行時間の相違に基づくハザードの発生を防止することが可能となる。
また、本発明は、
所定周期のクロック信号を発生するクロック発振手段（例えば、図１のクロック発振器１０）と、実行時における実行サイクル数を示す情報を含む命令コードを取得するフェッチ手段（例えば、図１のフェッチユニット３１）と、前記命令コードをデコードし、該命令コードの実行サイクル数を取得するデコード手段（例えば、図１のプログラムコントローラ３２あるいはユニット群３３）と、前記デコード手段によって取得された前記命令コードの実行サイクル数に基づいて、該命令コードが実行される場合に、前記クロック発振手段によって発生されたクロック信号をマスクし、クロック信号の周期を変化させるサイクル数変更手段（例えば、図１のサイクルコントローラ２１およびＡＮＤ回路２２）と、前記サイクル数変更手段によって周期が変化されたクロック信号に従って、前記命令コードを実行する実行手段（例えば、図１のユニット群３３）とを含むことを特徴とする情報処理装置である。
【００１１】
このような構成により、命令をデコードすることにより得られる実行サイクル数に応じて、クロック信号がマスクされ、実行ステージのサイクル長が変化する。そのため、情報処理装置において実行される命令の全てを１サイクル命令として取り扱うことができる。
したがって、簡単な構成によって、命令の実行時間の相違に基づくハザードの発生を防止することが可能となる。
【００１２】
また、前記サイクル数変更手段は、前記命令コードの実行サイクル数に応じたクロックマスク信号を出力するマスク信号出力手段（例えば、図１のサイクルコントローラ２１）と、前記クロック発振手段によって発生されたクロック信号と、前記マスク信号出力手段によって出力されたクロックマスク信号との論理積を取得し、前記実行手段に出力する演算手段（例えば、図１のＡＮＤ回路２２）とを含み、前記マスク信号出力手段において前記クロックマスク信号の論理を切り換えることにより、前記発振器によって発生された信号をマスクすることを特徴としている。
【００１３】
このような構成により、命令の実行サイクル数に応じたクロックマスク信号の出力と、そのクロックマスク信号と発振器の出力信号の論理積の演算とを行う簡単な構成によって、命令の実行時間の相違に基づくハザードの発生を防止することが可能となる。
また、本発明は、
発振器によって発生された信号を制御してプロセッサにクロック信号を供給するクロック制御方法であって、前記プロセッサにおいて実行される命令の実行サイクル数に応じて、前記発振器によって発生された信号をマスクし、前記プロセッサに供給するクロック信号の周期を変化させるサイクル数変更ステップを含むことを特徴としている。
【００１４】
このように、本発明によれば、簡単な構成によって、命令の実行時間の相違に基づくハザードの発生を防止することが可能となる。
【発明を実施するための最良の形態】
【００１５】
以下、図を参照して本発明に係るクロック制御装置の実施の形態を説明する。
まず、構成を説明する。
図１は、本発明に係るクロック制御装置２０を適用した情報処理装置１の機能構成を示すブロック図である。
図１において、情報処理装置１は、クロック発振器１０と、クロック制御装置２０と、プロセッサ３０と、命令メモリ４０と、データメモリ５０とを含んで構成される。
【００１６】
クロック発振器１０は、水晶発振器あるいはＳＡＷ（Surface Acoustic Wave）発振器を含んで構成され、情報処理装置１に供給するクロック信号（以下、「供給クロック信号」と言う。）の基となるクロック原信号を発生する。そして、クロック発振器１０は、発生したクロック原信号をクロック制御装置２０に出力する。
クロック制御装置２０は、プロセッサ３０に供給するクロック信号を制御するものであり、サイクルコントローラ２１と、ＡＮＤ回路２２と、クロック分配器２３とをさらに含んで構成される。
【００１７】
サイクルコントローラ２１は、後述するステートマシンの状態遷移条件に従って、クロック発振器１０によって発生されたクロック原信号の１クロックをマスクするか否かを制御するクロックマスク信号を出力する。具体的には、サイクルコントローラ２１は、後述するように、プログラムコントローラ３２およびユニット群３３から入力されるサイクル長判定信号が“１”（実行される命令が２サイクル命令であることを示すハイレベル信号）である場合に、所定タイミングのクロック原信号をマスクする“０”を示すクロックマスク信号（ローレベル信号）をＡＮＤ回路２２に出力する。一方、サイクルコントローラ２１は、プログラムコントローラ３２およびユニット群３３から入力されるサイクル長判定信号が“０”（実行される命令が１サイクル命令であることを示すローレベル信号）である場合に、クロック原信号をマスクしない“１”を示すクロックマスク信号（ハイレベル信号）をＡＮＤ回路２２に出力する。
【００１８】
なお、サイクルコントローラ２１は、命令がデコードされたサイクルから実行されるサイクルまでのタイミングを調整するため、プログラムコントローラ３２およびユニット群３３から入力されるサイクル長判定信号をフリップフロップに一旦記憶し、１サイクル遅延させた後の信号を用いてクロックマスク信号の生成を行う（図３参照）。
ＡＮＤ回路２２は、クロック発振器１０から入力されたクロック原信号と、サイクルコントローラ２１から入力されたクロックマスク信号との論理積を演算し、演算結果が“１”である場合、クロック発振器１０から入力されたクロック原信号をそのまま供給クロック信号として出力する。一方、ＡＮＤ回路２２は、演算結果が“０”である場合、クロック発振器１０から入力されたクロック原信号を所定タイミングでマスクし、所定の１周期をローレベルとした供給クロック信号を出力する。
【００１９】
クロック分配器２３は、ＡＮＤ回路２２から入力された供給クロック信号をプログラムコントローラ３２およびユニット群３３に分配して出力する。
プロセッサ３０は、クロック制御装置２０から供給される供給クロック信号によって動作するプロセッサであり、フェッチユニット３１と、プログラムコントローラ３２と、ユニット群３３とをさらに含んで構成される。
【００２０】
フェッチユニット３１は、プログラムコントローラ３２によってアドレスが入力された命令メモリ４０から、所定の命令コードを取得し、プログラムコントローラ３２およびユニット群３３に出力する。
プログラムコントローラ３２は、実行対象となる命令コードの実行順序を管理するためのプログラムカウンタ（不図示）を備えている。そして、プログラムコントローラ３２は、プログラムカウンタに記憶された命令メモリ４０のアドレスを、順次命令メモリ４０に出力する。
【００２１】
また、プログラムコントローラ３２は、フェッチユニット３１によって入力された命令コードをデコードし、その命令コードの内容に応じて、プロセッサ３０のステータスを、割り込み処理あるいは通常の処理を示す状態に変更したり、その命令コードが分岐命令であった場合にプログラムカウンタの値を分岐先のアドレスにジャンプさせたりする。
さらに、プログラムコントローラ３２は、命令コードをデコードした結果、分岐命令等、ユニット群３３において実行されない命令については、デコードの結果得られる実行サイクル数に応じたサイクル長判定信号（実行サイクル数が“１”である場合、サイクル長判定信号として“０”、実行サイクル数が“２”である場合、サイクル長判定信号として“１”）をサイクルコントローラ２１に出力する。
【００２２】
ユニット群３３は、命令コードをデコードするデコードユニット、デコードされた命令コードを実行する実行ユニットを備えている。そして、ユニット群３３は、命令コードをデコードすることにより、実行ユニットにおいて実行される命令の実行サイクル数を取得し、その実行サイクル数に応じたサイクル長判定信号（実行サイクル数が“１”である場合、サイクル長判定信号として“０”、実行サイクル数が“２”である場合、サイクル長判定信号として“１”）をサイクルコントローラ２１に出力する。
【００２３】
さらに、ユニット群３３は、実行ユニットの実行結果をレジスタあるいはデータメモリ５０に書き込む。
命令メモリ４０は、プロセッサ３０において実行される命令コード列を記憶するメモリである。命令メモリ４０に記憶された命令コードには、その命令が実行される場合の実効サイクル数が含まれており、デコードされることによって、その実行サイクル数が判別される。
【００２４】
データメモリ５０は、プロセッサ３０において演算対象となるデータや、プロセッサ３０の演算結果であるデータを記憶するメモリである。
次に、動作を説明する。
初めに、サイクルコントローラ２１の動作について説明する。
図２は、サイクルコントローラ２１の動作を規定するステートマシンを示す図である。
【００２５】
図２において、サイクルコントローラ２１は、クロック発振器１０のクロック信号をマスクしない状態である“ＩＤＬＥ”と、クロック発振器１０のクロック信号をマスクする状態である“ＭＡＳＫ”との２つの状態を遷移する。
そして、サイクルコントローラ２１は、“ＩＤＬＥ”および“ＭＡＳＫ”のいずれにおいても、サイクル長判定信号が“０”である場合には“ＩＤＬＥ”に遷移する。また、サイクルコントローラ２１は、“ＩＤＬＥ”および“ＭＡＳＫ”のいずれにおいても、サイクル長判定信号が“１”である場合には“ＭＡＳＫ”に遷移する。
【００２６】
さらに、サイクルコントローラ２１は、“ＩＤＬＥ”の状態においては、クロックマスク信号として“１”（クロック原信号をマスクしないハイレベル信号）を出力し、“ＭＡＳＫ”の状態においては、クロックマスク信号として“０”（クロック原信号をマスクするローレベル信号）を出力する。
続いて、情報処理装置１全体の動作について説明する。
【００２７】
図３は、情報処理装置１の動作例を示すタイミングチャートである。
情報処理装置１には、通常、図３（ａ）に示すように、クロック発振器１０によって生成されたクロック原信号が入力されている。
そして、例えば、図３のサイクル２において、図３（ｆ）に示すように、命令メモリ４０に記憶された第１命令コードがフェッチユニット３１によって取得されたとする。なお、この第１命令コードは２サイクル命令であるものとする。
【００２８】
すると、サイクル３において、第１命令コードがデコードされると共に、パイプライン処理により、図３（ｇ）に示すように、命令メモリ４０に記憶された第２命令コードがフェッチユニット３１によって取得される。なお、この第２命令コードは１サイクル命令であるものとする。
第１命令コードがデコードされた結果、第１命令コードは２サイクル命令であることから、図３（ｂ）に示すように、サイクルコントローラ２１に対し、サイクル長判定信号として“１”が入力される。なお、サイクル長判定信号は、デコードステージの間、継続して出力される。
【００２９】
すると、サイクルコントローラ２１は、図３（ｃ）に示すように１サイクル遅延されたサイクル長判定信号に応じて、図３（ｄ）に示すように、クロックマスク信号として“０”を出力する。
その結果、ＡＮＤ回路２２は、図３（ｅ）に示すように、サイクル５のクロック原信号をマスクした供給クロック信号を出力する。
【００３０】
これにより、サイクル４において開始された第１命令コードの実行ステージおよび第２命令コードのデコードステージが、サイクル５までの２サイクル継続される。
そして、第２命令コードがデコードされた結果、第２命令コードは１サイクル命令であることから、サイクルコントローラ２１に対し、サイクル長判定信号として“０”が入力される。
【００３１】
すると、サイクルコントローラ２１は、図３（ｄ）に示すように、クロックマスク信号として“１”を出力し、その結果、ＡＮＤ回路２２は、図３（ｄ）に示すように、クロック原信号をマスクせずに、そのまま供給クロック信号として出力する。
この後、フェッチユニット３１によってフェッチされる命令コードの実行サイクル数に応じて、サイクルコントローラ２１が所定のクロックマスク信号を出力し、２サイクル命令が実行される場合には、クロック原信号がマスクされ、実行ステージが２サイクル継続する。
【００３２】
以上のように、本発明を適用した情報処理装置１においては、命令コードに含まれる実行サイクル数に基づいて、サイクルコントローラ２１が、その命令コードが実行される際に、クロック原信号をマスクし、実行ステージを２サイクル継続させる。
したがって、簡単な構成によって、命令の実行時間の相違に基づくハザードの発生を防止することが可能となる。
【００３３】
なお、本実施の形態においては、命令コードが１サイクル命令および２サイクル命令である場合を例に挙げて説明したが、３サイクル以上の実行サイクルを有する命令を含むことも可能である。この場合、サイクルコントローラ２１が、各命令コードの実行サイクル数に応じて、クロック原信号をマスクする期間を変化させれば良い。
【図面の簡単な説明】
【００３４】
【図１】本発明に係るクロック制御装置２０を適用した情報処理装置１の機能構成を示すブロック図である。
【図２】サイクルコントローラ２１の動作を規定するステートマシンを示す図である。
【図３】情報処理装置１の動作例を示すタイミングチャートである。
【図４】２サイクル命令の直後に１サイクル命令が実行される場合のタイミングチャートを示す図である。
【図５】従来の第１の方法におけるタイミングチャートを示す図である。
【図６】従来の第２の方法におけるタイミングチャートを示す図である。
【符号の説明】
【００３５】
１  情報処理装置、１０  クロック発振器、２０  クロック制御装置、２１  サイクルコントローラ、２２  ＡＮＤ回路、２３  クロック分配器、３０  プロセッサ、３１  フェッチユニット、３２  プログラムコントローラ、３３  ユニット群、４０  命令メモリ、５０  データメモリ
【図１】
2006126893.tif 000003
【図２】
2006126893.tif 000004
【図３】
2006126893.tif 000005
【図４】
2006126893.tif 000006
【図５】
2006126893.tif 000007
【図６】
2006126893.tif 000008