(57)【特許請求の範囲】
【請求項１】
クロック生成回路と、マルチスレッドプロセッサとで構成されるプロセッサシステムであって、
前記クロック生成回路は、前記マルチスレッドプロセッサの動作周波数を変化させるための周波数制御信号に基づいて、前記マルチスレッドプロセッサのプロセッサクロックを生成するクロック生成手段を有し、
前記マルチスレッドプロセッサは、当該マルチスレッドプロセッサの動作周波数を変化させるための周波数制御信号を出力する制御手段と、前記制御手段が出力する周波数制御信号に基づいて実行させるスレッドのスレッド番号を選択して出力するスケジュール手段と、前記スケジュール手段が出力するスレッド番号のスレッドを前記プロセッサクロックに同期して実行する実行手段と、を有し、
前記スケジュール手段は、
前記周波数制御信号が、前記動作周波数が所定の周波数であることを示す場合に、前記スレッド番号を一定周期で出力するように当該スレッド番号をテーブルの要素として保持している第１のスレッドスケジュールテーブルと、
前記周波数制御信号が、前記動作周波数を前記所定の周波数から変化させたことを示す場合に、前記スレッド番号を前記一定周期と同じ周期で出力するように当該スレッド番号をテーブルの要素として保持している第２のスレッドスケジュールテーブルと、
前記第１のスレッドスケジュールテーブルと前記第２のスレッドスケジュールテーブルとにそれぞれ保持されている各要素をテーブルから順に繰り返し読み出す読み出し手段と、
前記周波数制御信号により前記動作周波数が所定の周波数の場合、前記読み出し手段により前記第１のスレッドスケジュールテーブルから読み出された要素を選択して出力し、前記周波数制御信号により前記動作周波数を前記所定の周波数から変化させた場合、前記読み出し手段により前記第２のスレッドスケジュールテーブルから読み出された要素を選択して出力する出力手段と、を含むことを特徴とするプロセッサシステム。
【請求項２】
前記第１及び第２のスレッドスケジュールテーブルは、前記スレッド番号を前記一定周期又は前記一定周期と同じ周期で出力する必要があるか否かを示す情報を更に保持し、
前記スケジュール手段は、前記スレッド番号を一定周期で出力又は前記一定周期と同じ周期で出力する必要がないスレッド番号を保持する第３のスレッドスケジュールテーブルと、前記第３のスレッドスケジュールテーブルに保持された前記スレッド番号をテーブルから順に繰り返し読み出す手段とを更に有し、
前記情報が前記スレッド番号を前記一定周期又は前記一定周期と同じ周期で出力する必要がないことを示す場合に、前記出力手段は、前記第３のスレッドスケジュールテーブルから読み出されたスレッド番号を出力することを特徴とする請求項１に記載のプロセッサシステム。
【請求項３】
クロック生成回路と、マルチスレッドプロセッサとで構成されるプロセッサシステムであって、
前記クロック生成回路は、前記マルチスレッドプロセッサの動作周波数を変化させるための周波数制御信号に基づいて、前記マルチスレッドプロセッサのプロセッサクロックを生成するクロック生成手段を有し、
前記マルチスレッドプロセッサは、当該マルチスレッドプロセッサの動作周波数を変化させるための周波数制御信号を出力する制御手段と、前記制御手段が出力する周波数制御信号に基づいて実行させるスレッドのスレッド番号を選択して出力するスケジュール手段と、前記スケジュール手段が出力するスレッド番号のスレッドを前記プロセッサクロックに同期して実行する実行手段と、を有し、
前記スケジュール手段は、
前記動作周波数によらず一定周期で出力されるべきスレッドのスレッド番号をテーブルの要素として保持しているスレッドスケジュールテーブルと、
前記スレッドスケジュールテーブルに保持されている各要素をテーブルから順に繰り返し読み出す読み出し手段と、
前記周波数制御信号が、前記動作周波数が基準の周波数であることを示す場合、前記読み出し手段により前記スレッドスケジュールテーブルから読み出された要素を出力し、前記周波数制御信号が、前記動作周波数が前記基準の周波数のｎ倍であることを示す場合、前記読み出し手段により前記スレッドスケジュールテーブルから読み出された要素をｎ周期のうち１周期は出力し、ｎ−１周期は出力しないようにする出力手段と、を含むことを特徴とするプロセッサシステム。
【請求項４】
前記スレッドスケジュールテーブルは、前記スレッド番号を一定周期で出力する必要があるか否かを示す情報を更に保持し、
前記スケジュール手段は、前記スレッド番号を一定周期で出力する必要がないスレッド番号を保持する第２のスレッドスケジュールテーブルと、前記第２のスレッドスケジュールテーブルに保持された前記スレッド番号をテーブルから順に繰り返し読み出す手段とを更に有し、
前記情報が前記スレッド番号を一定周期で出力する必要がないことを示す場合に、前記出力手段は、前記第２のスレッドスケジュールテーブルから読み出されたスレッド番号を出力することを特徴とする請求項３に記載のプロセッサシステム。
【請求項５】
マルチスレッドプロセッサの動作周波数を変化させるための周波数制御信号をクロック生成回路へ出力し、該周波数制御信号に基づいて前記クロック生成回路で生成された前記マルチスレッドプロセッサのプロセッサクロックを入力するマルチスレッドプロセッサであって、
前記動作周波数を変化させるための周波数制御信号を出力する制御手段と、
前記制御手段が出力する周波数制御信号に基づいて実行させるスレッドのスレッド番号を選択して出力するスケジュール手段と、
前記スケジュール手段が出力するスレッド番号のスレッドを前記プロセッサクロックに同期して実行する実行手段と、を有し、
前記スケジュール手段は、
前記周波数制御信号が、前記動作周波数が所定の周波数であることを示す場合に、前記スレッド番号を一定周期で出力するように当該スレッド番号をテーブルの要素として保持している第１のスレッドスケジュールテーブルと、
前記周波数制御信号が、前記動作周波数を前記所定の周波数から変化させたことを示す場合に、前記スレッド番号を前記一定周期と同じ周期で出力するように当該スレッド番号をテーブルの要素として保持している第２のスレッドスケジュールテーブルと、
前記第１のスレッドスケジュールテーブルと前記第２のスレッドスケジュールテーブルとにそれぞれ保持されている各要素をテーブルから順に繰り返し読み出す読み出し手段と、
前記周波数制御信号により前記動作周波数が所定の周波数の場合、前記読み出し手段により前記第１のスレッドスケジュールテーブルから読み出された要素を選択して出力し、前記周波数制御信号により前記動作周波数を前記所定の周波数から変化させた場合、前記読み出し手段により前記第２のスレッドスケジュールテーブルから読み出された要素を選択して出力する出力手段と、を含むことを特徴とするマルチスレッドプロセッサ。
【請求項６】
前記第１及び第２のスレッドスケジュールテーブルは、前記スレッド番号を前記一定周期又は前記一定周期と同じ周期で出力する必要があるか否かを示す情報を更に保持し、
前記スケジュール手段は、前記スレッド番号を一定周期で出力又は前記一定周期と同じ周期で出力する必要がないスレッド番号を保持する第３のスレッドスケジュールテーブルと、前記第３のスレッドスケジュールテーブルに保持された前記スレッド番号をテーブルから順に繰り返し読み出す手段とを更に有し、
前記情報が前記スレッド番号を前記一定周期又は前記一定周期と同じ周期で出力する必要がないことを示す場合に、前記出力手段は、前記第３のスレッドスケジュールテーブルから読み出されたスレッド番号を出力することを特徴とする請求項５に記載のマルチスレッドプロセッサ。
【請求項７】
マルチスレッドプロセッサの動作周波数を変化させるための周波数制御信号をクロック生成回路へ出力し、該周波数制御信号に基づいて前記クロック生成回路で生成された前記マルチスレッドプロセッサのプロセッサクロックを入力するマルチスレッドプロセッサであって、
前記動作周波数を変化させるための周波数制御信号を出力する制御手段と、
前記制御手段が出力する周波数制御信号に基づいて実行させるスレッドのスレッド番号を選択して出力するスケジュール手段と、
前記スケジュール手段が出力するスレッド番号のスレッドを前記プロセッサクロックに同期して実行する実行手段と、を有し、
前記スケジュール手段は、
前記動作周波数によらず一定周期で出力されるべきスレッドのスレッド番号をテーブルの要素として保持しているスレッドスケジュールテーブルと、
前記スレッドスケジュールテーブルに保持されている各要素をテーブルから順に繰り返し読み出す読み出し手段と、
前記周波数制御信号が、前記動作周波数が基準の周波数であることを示す場合、前記読み出し手段により前記スレッドスケジュールテーブルから読み出された要素を出力し、前記周波数制御信号が、前記動作周波数が前記基準の周波数のｎ倍であることを示す場合、前記読み出し手段により前記スレッドスケジュールテーブルから読み出された要素をｎ周期のうち１周期は出力し、ｎ−１周期は出力しないようにする出力手段と、を含むことを特徴とするマルチスレッドプロセッサ。
【請求項８】
前記スレッドスケジュールテーブルは、前記スレッド番号を一定周期で出力する必要があるか否かを示す情報を更に保持し、
前記スケジュール手段は、前記スレッド番号を一定周期で出力する必要がないスレッド番号を保持する第２のスレッドスケジュールテーブルと、前記第２のスレッドスケジュールテーブルに保持された前記スレッド番号をテーブルから順に繰り返し読み出す手段とを更に有し、
前記情報が前記スレッド番号を一定周期で出力する必要がないことを示す場合に、前記出力手段は、前記第２のスレッドスケジュールテーブルから読み出されたスレッド番号を出力することを特徴とする請求項７に記載のマルチスレッドプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサの動作周波数が変化した時にも特定のスレッドに対して処理性能を一定にするマルチスレッドプロセッサにおけるスレッドスケジュール方法に関する。
【背景技術】
【０００２】
従来、プロセッサシステムにおいて、システムに接続された装置が一定周期でデータの送受信を行うならば、データの取りこぼしや供給不足を起こさないためにシステムの処理性能が一定であることを保証する必要がある（例えば、特許文献１参照）。
【０００３】
例えば、ソフトウェアによりシリアルデータ通信を行うならば、データ転送時の時間軸のずれによるデータ転送誤りを起こさないように、プロセッサシステムの処理速度が一定であることを保証しなくてはならない。
【０００４】
この処理性能が一定であることを保証する際には、タイマを用いて一定周期の割り込みを発生させる方法が一般に用いられている。また、一部のプロセッサでは、キャッシュや分岐予測機構のようなプロセッサの処理性能を変動させる機構をプロセッサから排除することで処理性能が一定であることを保証している。例えば、Ubicom社のIP3023プロセッサは、キヤッシュや分岐予測機構を搭載しないことで処理性能が一定であることを保証している。尚、プロセッサの処理性能を変動させる機構は、多くの場合、プロセッサの性能を高めるが、時にプロセッサの性能を低下させる可能性があるからである。
【特許文献１】特開平07-114517号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、これらのプロセッサシステムでは、処理性能を一定にすることが可能であるが、制約もある。例えば、タイマを用いて一定周期の割り込みを発生させる方法では、割り込み起動及び終了にかかるサイクルによるオーバーヘッドのために、処理の周期が非常に短い用途に用いることができない。また、処理性能を変動させる機構をプロセッサから排除する方法では、プロセッサのクロック周波数によって処理性能が変化するため、プロセッサのクロック周波数を低くすることで消費電力を低減させることができない。
【０００６】
本発明は、上記課題を解決するためになされたもので、処理の周期が非常に短い場合やプロセッサの消費電力を低減するために、プロセッサのクロック周波数を低下させた場合でも処理性能を一定にすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、クロック生成回路と、マルチスレッドプロセッサとで構成されるプロセッサシステムであって、前記クロック生成回路は、前記マルチスレッドプロセッサの動作周波数を変化させるための周波数制御信号に基づいて、前記マルチスレッドプロセッサのプロセッサクロックを生成するクロック生成手段を有し、前記マルチスレッドプロセッサは、当該マルチスレッドプロセッサの動作周波数を変化させるための周波数制御信号を出力する制御手段と、前記制御手段が出力する周波数制御信号に基づいて実行させるスレッドのスレッド番号を選択して出力するスケジュール手段と、前記スケジュール手段が出力するスレッド番号のスレッドを前記プロセッサクロックに同期して実行する実行手段と、を有し、前記スケジュール手段は、前記周波数制御信号が、前記動作周波数が所定の周波数であることを示す場合に、前記スレッド番号を一定周期で出力するように当該スレッド番号をテーブルの要素として保持している第１のスレッドスケジュールテーブルと、前記周波数制御信号が、前記動作周波数を前記所定の周波数から変化させたことを示す場合に、前記スレッド番号を前記一定周期と同じ周期で出力するように当該スレッド番号をテーブルの要素として保持している第２のスレッドスケジュールテーブルと、前記第１のスレッドスケジュールテーブルと前記第２のスレッドスケジュールテーブルとにそれぞれ保持されている各要素をテーブルから順に繰り返し読み出す読み出し手段と、前記周波数制御信号により前記動作周波数が所定の周波数の場合、前記読み出し手段により前記第１のスレッドスケジュールテーブルから読み出された要素を選択して出力し、前記周波数制御信号により前記動作周波数を前記所定の周波数から変化させた場合、前記読み出し手段により前記第２のスレッドスケジュールテーブルから読み出された要素を選択して出力する出力手段と、を含むことを特徴とする。
【０００８】
また、本発明は、マルチスレッドプロセッサの動作周波数を変化させるための周波数制御信号をクロック生成回路へ出力し、該周波数制御信号に基づいて前記クロック生成回路で生成された前記マルチスレッドプロセッサのプロセッサクロックを入力するマルチスレッドプロセッサであって、前記動作周波数を変化させるための周波数制御信号を出力する制御手段と、前記制御手段が出力する周波数制御信号に基づいて実行させるスレッドのスレッド番号を選択して出力するスケジュール手段と、前記スケジュール手段が出力するスレッド番号のスレッドを前記プロセッサクロックに同期して実行する実行手段と、を有し、前記スケジュール手段は、前記周波数制御信号が、前記動作周波数が所定の周波数であることを示す場合に、前記スレッド番号を一定周期で出力するように当該スレッド番号をテーブルの要素として保持している第１のスレッドスケジュールテーブルと、前記周波数制御信号が、前記動作周波数を前記所定の周波数から変化させたことを示す場合に、前記スレッド番号を前記一定周期と同じ周期で出力するように当該スレッド番号をテーブルの要素として保持している第２のスレッドスケジュールテーブルと、前記第１のスレッドスケジュールテーブルと前記第２のスレッドスケジュールテーブルとにそれぞれ保持されている各要素をテーブルから順に繰り返し読み出す読み出し手段と、前記周波数制御信号により前記動作周波数が所定の周波数の場合、前記読み出し手段により前記第１のスレッドスケジュールテーブルから読み出された要素を選択して出力し、前記周波数制御信号により前記動作周波数を前記所定の周波数から変化させた場合、前記読み出し手段により前記第２のスレッドスケジュールテーブルから読み出された要素を選択して出力する出力手段と、を含むことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、プロセッサの動作周波数をスレッドスケジューラに入力することにより、処理性能を一定にする必要があるスレッドがスケジュールされる周期を一定にすることができる。これにより、処理の周期が非常に短い場合やプロセッサの消費電力を低減するために、プロセッサのクロック周波数を低下させた場合でも処理性能を一定にすることができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
【００１１】
図１は、本実施形態におけるマルチスレッドプロセッサシステムの構成の一例を示す図である。図１に示すように、マルチスレッドプロセッサシステムは、クロック生成回路（CLKGEN）１００とマルチスレッドプロセッサ１０１とから構成されている。このクロック生成回路１００とマルチスレッドプロセッサ１０１とは、少なくともプロセッサクロック（CLK）１２０と周波数制御信号（FREQCTRL）１２１とで接続されている。
【００１２】
また、マルチスレッドプロセッサ１０１は、プロセッサクロック１２０に同期して動作するため、マルチスレッドプロセッサ１０１の動作周波数はプロセッサクロック１２０の周波数に比例する。ここで、周波数制御信号１２１はプロセッサクロック１２０の周波数を変化させるための信号である。以下の説明では、周波数制御信号１２１が「０」のとき、プロセッサクロック１２０の周波数が100MHz、また「１」のとき、プロセッサクロック１２０の周波数が200MHzであるとして、本実施形態における動作を説明する。
【００１３】
ここで、マルチスレッドプロセッサ１０１はスレッドスケジューラ（SCHED）１１０と、データパス１１６と、制御回路（CTRL）１１５とから構成されている。このデータパス１１６には、少なくとも２つのプログラムカウンタと、レジスタファイル（RF）１１２と、数値演算ユニット（ALU）１１３と、メモリ（MEM）１１４とが含まれる。尚、図１では、プログラムカウンタはPC#0（１１１ａ）〜PC#3（１１１ｄ）の４つとしている。
【００１４】
次に、図２を用いて、マルチスレッドプロセッサ１０１における各ブロックの動作及び代表的な信号の接続関係について説明する。
【００１５】
図２において、スレッドスケジューラ１１０は、制御回路１１５が出力する周波数制御信号１２１に基づいて実行させるスレッド番号（thread #）２０１を選択し、データパス１１６に出力する。これにより、データパス１１６は、まず実行するスレッド番号２０１に対応するプログラムカウンタをプログラムカウンタ１１１ａ〜１１１ｄから選択する。そして、データパス１１６は選択したプログラムカウンタと実行するスレッド番号２０１とを用いて、命令フェッチ、命令デコード、実行、オペランドフェッチ、結果の格納を、レジスタファイル１１２、数値演算ユニット１１３、メモリ１１４を用いて行う。
【００１６】
上述した命令実行の結果は、レジスタファイル１１２、メモリ１１４に格納され、また条件分岐を行うためのフラグ、制御レジスタへの書き込み結果については、信号２０４を用いて制御回路１１５に出力する。この信号２０４により制御回路１１５はデータパスの出力結果を受け取り、スレッドスケジューラ１１０、データパス１１６への各種制御信号を生成する。そして、生成された制御信号は、スレッドスケジューラ１１０への制御信号２０２、データパス１１６への制御信号２０３として出力される。
【００１７】
次に、図３を用いて、マルチスレッドプロセッサ１０１の動作周波数が変化しても特定のスレッドの処理性能を一定に保つことができるスレッドスケジューラ１１０の構成及び動作について説明する。尚、図３では、説明を簡単にするため、プロセッサの動作周波数を200MHzと100MHzの２段階としている。
【００１８】
図３は、マルチスレッドプロセッサ１０１におけるスレッドスケジューラ１１０の構成の一例を示す図である。図３に示すように、スレッドスケジューラ１１０はプロセッサの動作周波数毎に特定のスレッドの処理性能を一定に制御するために、２つのハードリアルタイムスレッドテーブル２２０ａ、２２０ｂを備えている。そして、ハードリアルタイムスレッドテーブル２２０ａ、２２０ｂには、決められたサイクル数毎にスケジュールする必要があるスレッド（ハードリアルタイムスレッド）が保持されている。
【００１９】
これに対して、ノンリアルタイムスレッドテーブル２２１には、決められたサイクル数毎にスケジュールする必要がないスレッド（性能を保証する必要がないスレッド）が保持されている。
【００２０】
ここで、スレッドスケジューラ１１０は、プロセッサの動作周波数に基づいて、ハードリアルタイムスレッドテーブル２２０ａ、２２０ｂかノンリアルタイムスレッドテーブル２２１の何れかに記録されているスレッドを選択する。具体的には、制御回路１１５から出力される周波数制御信号１２１に応じて、マルチプレクサ１４７がハードリアルタイムスレッドテーブル２２０ａ又は２２０ｂに記憶されているスレッド２２３ａ又は２２３ｂの何れかを選択する。また同時に、マルチプレクサ１４８がハードリアルタイムスレッドテーブル２２０ａ又は２２０ｂに記憶されているスレッドスケジュール情報２２４ａ又は２２４ｂの何れかを選択する。そして、選択されたスレッドスケジュール情報に基づいてマルチプレクサ２４４がハードリアルタイムスレッドテーブル２２０ａ、２２０ｂかノンリアルタイムスレッドテーブル２２１の何れかに記録されているスレッドをスレッド番号２０１として出力する。
【００２１】
［動作周波数が一定］
まず、動作周波数が200MHzに固定されている、即ち周波数制御信号１２１が常に「１」の場合に、スレッドスケジューラ１１０が実行するスレッドスケジュールの方法について説明する。この場合は、従来のリアルタイム性を保証できるマルチスレッドプロセッサと同じ動作である。即ち、周波数制御信号１２１が常に「１」であるので、マルチプレクサ１４７、１４８でハードリアルタイムスレッドテーブル２２０ｂのみが参照され、ハードリアルタイムスレッドテーブル２２０ａは参照されない。従って、リアルタイム性を保証できるマルチスレッドプロセッサでは、ハードリアルタイムスレッドテーブル２２０ａ、マルチプレクサ１４７、１４８を省略することができる。
【００２２】
ここでハードリアルタイムスレッドテーブルポインタ（HRTP）２４２は、サイクル毎にインクリメンタ２４７によって「１」ずつ増加し、ハードリアルタイムスレッドテーブル２２０ｂの要素はサイクル毎に上から順に読み出される。図３に示す例では、ハードリアルタイムスレッドテーブル２２０ｂは８個の要素を保持している。即ち、８サイクル分のスレッドのスケジュールを保持している。
【００２３】
また、ハードリアルタイムスレッドテーブル２２０ｂの各要素は、ハードリアルタイムビット２２４ｂとスレッドＩＤ２２３ｂとからなる。ここで、ハードリアルタイムビット２２４ｂが「１」の場合には、スレッドＩＤ２２３ｂに示されるスレッドをスケジュールすることを示している。一方、ハードリアルタイムビット２２４ｂが「０」の場合には、ノンリアルタイムスレッドテーブル２２１に記録されているスレッドを順に実行する。
【００２４】
即ち、この例では、１サイクル目はスレッド０を、２サイクル目はスレッド１を実行し、３サイクル目〜５サイクル目はノンリアルタイムスレッドテーブル２２１のスレッドを実行する。そして、６サイクル目はスレッド１を実行し、７サイクル目、８サイクル目はノンリアルタイムスレッドテーブル２２１のスレッドを実行する。
【００２５】
このように、ハードリアルタイムスレッドテーブル２２０ｂは８サイクル分のスレッドスケジュールを保持しているので、９サイクル目は１サイクル目と同じになる。これ以降１〜８サイクル目のハードリアルタイムスレッドテーブル２２０ｂの要素が繰り返し順に読み出される。
【００２６】
また、ノンリアルタイムスレッドテーブル２２１に記録されているスレッドは、ハードリアルタイムビット２２４ｂが「０」の場合にのみ順に実行される。即ち、ハードリアルタイムビット２２４ｂが「０」で、ノンリアルタイムスレッドテーブルポインタ２４３が指すスレッドＩＤをノンリアルタイムスレッドテーブル２２１がマルチプレクサ２４４によって選択され、スレッド番号２０１として出力される。また同時に、ノンリアルタイムスレッドテーブルポインタ２４３は、マルチプレクサ２４９で選択されたインクリメンタ２４８によってインクリメントされる。
【００２７】
他方、ハードリアルタイムビット２２４ｂが「１」の場合、ハードリアルタイムスレッドテーブル２２０ｂが出力するスレッドＩＤがマルチプレクサ２４４によって選択され、スレッド番号２０１として出力される。尚、ノンリアルタイムスレッドテーブルポインタ２４３は更新しない。
【００２８】
このように、プロセッサの動作周波数が一定である時は、ハードリアルタイムスレッドが決められたサイクル毎にスケジュールされるため、特定のスレッドの処理性能を一定に保つことができる。
【００２９】
［動作周波数が変化］
次に、プロセッサの動作周波数が１／２（100MHz）に変化した場合に、マルチスレッドプロセッサ１０１におけるスレッドスケジューラ１１０が実行するスレッドスケジュールの方法について説明する。
【００３０】
尚、動作周波数によらず処理性能が一定である必要があるスレッドはスレッド０とする。この場合、周波数制御信号１２１が「０」になり、マルチプレクサ１４７及び１４８によってハードリアルタイムスレッドテーブル２２０ａが参照される。
【００３１】
また、プロセッサの動作周波数が１／２であるため、ハードリアルタイムスレッドテーブル２２０ａに含まれるスレッド０の割合をハードリアルタイムスレッドテーブル２２０ｂの２倍にしている。
【００３２】
また、スレッド０がスケジュールされる位相がプロセッサの動作周波数によらず同じになるように、元々スケジュールされる１サイクル目の他に要素数８×（１／２）＝４サイクルを加えた５サイクル目にスレッド０がスケジュールされるようにする。
【００３３】
ここで、プロセッサの動作周波数が１／２に変化したことにより、ハードリアルタイムスレッドテーブル２２０ａを読み出す周期は２倍となる。しかし、処理性能が一定であることが要求されるスレッド０は、ハードリアルタイムスレッドテーブル２２０ａに２倍で含まれているため、結局スレッド０は同じ周期でスケジュールされる。
【００３４】
このように、本実施形態では、プロセッサの動作周波数の切り替えと共にハードリアルタイムスレッドテーブルを切り替えることで、プロセッサの動作周波数が変化した場合にも特定のスレッドの処理性能を一定に保つことができる。この結果、図４に示すように、プロセッサの動作周波数を200MHzと100MHzで切り替えた場合に、従来例ではスレッド０のスケジュールされる周期が変化していたが、本実施形態ではスレッド０を常に40ns周期でスケジュールすることができる。即ち、一定の性能を保つことができる。
【００３５】
［他の実施形態］
次に、図面を参照しながら本発明に係る他の実施形態について詳細に説明する。
【００３６】
他の実施形態では、プロセッサの動作周波数が基準となる周波数のｎ倍になった場合、ｎ回のうち１回は選択信号を有効にするが、ｎ回のうちｎ−１回は選択信号を無効にする回路を備えるものである。
【００３７】
また、プロセッサの動作周波数が変化しても処理性能を一定にする必要があるスレッドは、この選択信号が「１」の時だけスケジュールするようにしている。これにより、特定のスレッドの処理性能を一定にすることを可能にしている。尚、説明を簡単にするため、プロセッサの動作周波数を２段階、最大のプロセッサ動作周波数は基準となるプロセッサの動作周波数の２倍とした場合を例に説明する。
【００３８】
他の実施形態におけるマルチスレッドプロセッサシステムの構成は、図１を用いて説明した本実施形態の構成と同様であり、その説明は省略する。
【００３９】
図５は、他の実施形態におけるスレッドスケジューラの構成の一例を示す図である。尚、図３に示す構成と同じ機能を有するものには同一の符号を付している。
【００４０】
図５に示すように、スレッドスケジューラは、少なくともハードリアルタイムスレッドテーブル２２２と、ノンリアルタイムスレッドテーブル２２１と、スレッド選択信号生成回路２４０とで構成されている。ここで、スレッド選択信号生成回路２４０はプロセッサの動作周波数によらず一定サイクル数だけ選択信号を有効にする信号（TSEL OUT）１４１を生成する回路であり、図６を用いて更に詳述する。また、ハードリアルタイムスレッドテーブル２２２には、スレッドＩＤ２２３と、２つのスレッドの情報２２４、２２５とが保持されている。２つのスレッドは、決められたプロセッササイクル数毎にスケジュールする必要があるスレッド（ハードリアルタイムスレッド）と、プロセッサのクロック周波数によらず一定の処理性能が必要なスレッド（リアルタイムスレッド）である。
【００４１】
図６は、スレッド選択信号生成回路２４０の構成の一例を示す図である。スレッド選択信号生成回路２４０は、周波数制御信号１２１が「１」の場合、サイクル数を計数するカウンタ２６２と、周波数制御信号１２１が「０」の場合、「１」を出力するゲート２６３及びインバータ２６４とで構成されている。
【００４２】
尚、図６に示す例では、周波数制御信号１２１が「０」の場合、８サイクルは選択信号１４１として有効を示す「１」を出力し、次の８サイクルは選択信号１４１として無効を示す「０」を出力するものとする。そのため、カウンタ２６２として、４ビットバイナリカウンタを用いてサイクル数の計数を行い、Ｑ３を出力信号とする。
【００４３】
まず、周波数制御信号１２１が「０」（基準となるプロセッサの動作周波数）の場合に、スレッドスケジューラが実行するスレッドスケジュールの方法について説明する。この場合、スレッド選択信号生成回路２４０のインバータ２６４及びゲート２６３により選択信号１４１として、常に「１」が出力される。
【００４４】
ここでハードリアルタイムスレッドテーブルポインタ（HRTP）２４２は、サイクル毎にインクリメンタ２４７によって「１」ずつ増加し、ハードリアルタイムスレッドテーブル２２２の要素はサイクル毎に上から順に読み出される。図５に示す例では、ハードリアルタイムスレッドテーブル２２２は８サイクル分のスレッドのスケジュールを保持しているため、保持されている要素は８個である。
【００４５】
また、ハードリアルタイムスレッドテーブル２２２の要素は、ハードリアルタイムビット２２４とリアルタイムビット２２５とスレッドＩＤ２２３とからなる。ここで、ハードリアルタイムビット２２４は決められたプロセッササイクル数毎にスケジュールする必要があるスレッドであることを示している。また、リアルタイムビット２２５はプロセッサのクロック周波数によらず一定の処理性能が必要なスレッドであることを示している。
【００４６】
この例では、スレッド選択信号生成回路２４０が常に「１」を出力しているため、ハードリアルタイムビット２２４とリアルタイムビット２２５の何れかが「１」の場合、ハードリアルタイムスレッドテーブル２２２のスレッドが選択される。即ち、マルチプレクサ２４４への選択信号１４６が「１」の場合は、ポインタ２４２が指すハードリアルタイムスレッドテーブル２２２のスレッドＩＤで示されるスレッド１４４が選択され、スレッド番号２０１として出力される。同時にポインタ２４２はインクリメンタ２４７によってインクリメントされる。
【００４７】
それ以外の場合（ハードリアルタイムビット２２４とリアルタイムビット２２５の両方が「０」の場合）は、ノンリアルタイムスレッドテーブル２２１のスレッドが選択される。即ち、マルチプレクサ２４４への選択信号１４６が「０」の場合は、ポインタ２４３が指すノンリアルタイムスレッドテーブル２２１のスレッドＩＤで示されるスレッド１４５が選択され、スレッド番号２０１として出力される。同時に、ポインタ２４３はインクリメンタ２４８によってインクリメントされる。
【００４８】
次に、周波数制御信号１２１が「１」（最大のプロセッサ動作周波数）の場合に、スレッドスケジューラが実行するスレッドスケジュールの方法について説明する。この場合、最大のプロセッサ動作周波数が基準となるプロセッサ動作周波数の２倍であるので、スレッド選択信号生成回路２４０は２サイクルに１サイクルだけ選択信号を有効にする。
【００４９】
尚、この例では、ハードリアルタイムスレッドテーブル２２２の要素数が８であることから、８サイクルは選択信号１４１として有効を示す「１」を出力し、次の８サイクルは選択信号１４１として無効を示す「０」を出力する。これにより、１６サイクルの中で、８サイクルだけ選択信号１４１を有効にすることができる。
【００５０】
また、選択信号１４１が「１」の場合は、周波数制御信号１２１が「０」（基準となるプロセッサ動作周波数）の場合と同じなので、選択信号１４１が「０」の場合のスレッドスケジュール方法について説明する。
【００５１】
まず、スレッド選択信号生成回路２４０が選択信号１４１として「０」を出力しているため、ハードリアルタイムビット２２４が「１」の場合にのみ、ハードリアルタイムスレッドテーブル２２２のスレッドが選択される。即ち、マルチプレクサ２４４への選択信号１４６が「１」の場合は、ポインタ２４２が指すハードリアルタイムスレッドテーブル２２２のスレッドＩＤで示されるスレッド１４４が選択され、スレッド番号２０１として出力される。同時にポインタ２４２はインクリメンタ２４７によってインクリメントされる。
【００５２】
それ以外の場合（ハードリアルタイムビット２２４が「０」の場合）は、ノンリアルタイムスレッドテーブル２２１のスレッドが選択される。即ち、マルチプレクサ２４４への選択信号１４６が「０」の場合は、ポインタ２４３が指すノンリアルタイムスレッドテーブル２２１のスレッドＩＤで示されるスレッド１４５が選択され、スレッド番号２０１として出力される。同時に、ポインタ２４３はインクリメンタ２４８によってインクリメントされる。
【００５３】
図７は、他の実施形態におけるスレッドスケジュールのタイミングチャートを示す図である。周波数制御信号（FREQCTRL）１２１が「１」の場合、最初の８サイクルはポインタ（HRTP）２４２が指すテーブル２２２内のリアルタイムスレッドがスケジュールされる。しかし、次の８サイクルはリアルタイムスレッドがスケジュールされる周期を一定にするため、リアルタイムスレッドの代わりにノンリアルタイムスレッドがスケジュールされる（０→Ｎ）。また、周波数制御信号（FREQCTRL）１２１が「０」の場合は、常にテーブル２２２内のリアルタイムスレッドがスケジュールされる。
【００５４】
このように、プロセッサの動作周波数が基準となる周波数のｎ倍になった時に、ｎ回のうち１回は選択信号を有効にする。しかし、ｎ回のうちｎ−１回は選択信号を無効にする回路を設けることでプロセッサの動作周波数が変化した際にも特定のスレッドの処理性能を一定に保っている。この結果、図７に示すように、プロセッサの動作周波数によらず、スレッド０を一定の周期でスケジュールすることができる。即ち、一定の性能を保つことができる。
【００５５】
尚、本発明は複数の機器（例えば、ホストコンピュータ，インターフェース機器，リーダ，プリンタなど）から構成されるシステムに適用しても、１つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用しても良い。
【００５６】
また、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行する。これによっても、本発明の目的が達成されることは言うまでもない。
【００５７】
この場合、記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【００５８】
このプログラムコードを供給するための記録媒体としては、例えばフロッピー（登録商標）ディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【００５９】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、次の場合も含まれることは言うまでもない。即ち、プログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合。
【００６０】
更に、記録媒体から読出されたプログラムコードがコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００６１】
【図１】本実施形態におけるマルチスレッドプロセッサシステムの構成の一例を示す図である。
【図２】マルチスレッドプロセッサ１０１における各ブロックの動作及び代表的な信号の接続関係を説明するための図である。
【図３】マルチスレッドプロセッサ１０１におけるスレッドスケジューラ１１０の構成の一例を示す図である。
【図４】本実施形態におけるスレッドスケジュールの結果を示す図である。
【図５】他の実施形態におけるスレッドスケジューラの構成の一例を示す図である。
【図６】スレッド選択信号生成回路２４０の構成の一例を示す図である。
【図７】他の実施形態におけるスレッドスケジュールの結果を示す図である。
【符号の説明】
【００６２】
１００  クロック生成回路（CLKGEN）
１０１  マルチスレッドプロセッサ
１１０  スレッドスケジューラ（SCHED）
１１５  制御回路（CTRL）
１１６  データパス
１２０  プロセッサクロック（CLK）
１２１  周波数制御信号（FREQCTRL）
２２０  ハードリアルタイムスレッドテーブル
２２１  ノンリアルタイムスレッドテーブル
２２２  ハードリアルタイムスレッドテーブル
２２３  スレッド
２２４  スレッドスケジュール情報
【図１】
0004574493.tif 000002
【図２】
0004574493.tif 000003
【図３】
0004574493.tif 000004
【図４】
0004574493.tif 000005
【図５】
0004574493.tif 000006
【図６】
0004574493.tif 000007
【図７】
0004574493.tif 000008