(57)【特許請求の範囲】
【請求項１】
それぞれに入力されるプログラムカウント更新値に基づいて、それぞれが独立した命令流を生成する複数のハードウェアスレッドと、
予め設定されたスケジュールに従って、前記複数のハードウェアスレッドの使用順序を管理するスレッドスケジューラと、
入力された割り込み要求信号が、前記複数のハードウェアスレッドのいずれかと関連付けられているか否かを判定し、当該割り込み要求信号を前記複数のハードウェアスレッドのいずれか１つに割り当てる割り込みコントローラと、
前記割り込みコントローラによって割り当てられた前記ハードウェアスレッドに対する前記プログラムカウント更新値を生成するプログラムカウント値生成回路と、を備え、
前記割り込みコントローラは、
割り込み要求信号の複数の割り込み要因のそれぞれに対応した複数のチャネル毎に、当該チャネルの割り込み要求信号と前記複数のハードウェアスレッドのうち少なくとも１つとが関連付けられているか否かを示す情報が予め格納されたレジスタを備え、
入力された割り込み要求信号に関連付けられたハードウェアスレッドがある場合、当該割り込み要求信号を前記関連付けられたハードウェアスレッドのいずれか１つに割り当て、関連付けられたハードウェアスレッドがない場合、当該割り込み要求信号を前記複数のハードウェアスレッドのいずれか１つに割り当てるマルチスレッドプロセッサ。
【請求項２】
前記複数のチャネル毎の前記レジスタには、当該チャネルの割り込み要求信号と前記複数のハードウェアスレッドのいずれか１つとが関連付けられているか否かを示す前記情報が予め格納されている、請求項１に記載のマルチスレッドプロセッサ。
【請求項３】
前記複数のチャネル毎の前記レジスタには、当該チャネルの割り込み要求信号と前記複数のハードウェアスレッドの全てとが関連付けられているか否かを示す前記情報が予め格納されている、請求項１に記載のマルチスレッドプロセッサ。
【請求項４】
前記割り込みコントローラは、
割り込み要求信号のチャネル毎の前記レジスタのそれぞれに接続され、かつ、入力された割り込み要求信号のチャネルに基づいて、当該チャネルのレジスタに格納された前記情報を選択するセレクタを、さらに備える、請求項１〜３のいずれか一項に記載のマルチスレッドプロセッサ。
【請求項５】
前記割り込みコントローラは、
複数の割り込み要求信号の優先度を判定するプライオリティ判定部をさらに備える、請求項１〜４のいずれか一項に記載のマルチスレッドプロセッサ。
【請求項６】
請求項１〜５のいずれか一項に記載のマルチスレッドプロセッサにおける割り込み処理方法であって、
入力された割り込み要求信号が、前記複数のハードウェアスレッドのうち１つ又は複数と関連付けられているか否かを判定し、
関連付けられている場合、当該割り込み要求を関連付けられたハードウェアスレッドに割り当てる割り込み処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチスレッドプロセッサ及びその割り込み処理方法に関する。
【背景技術】
【０００２】
近年、プロセッサの処理能力を向上させるためにマルチスレッドプロセッサが提案されている。マルチスレッドプロセッサは、それぞれが独立した命令流を生成するハードウェアスレッドを有する。そして、マルチスレッドプロセッサは、パイプライン処理により命令を処理する演算回路に対していずれのハードウェアスレッドにより生成された命令流を処理させるかを切り替えながら演算処理を実行する。
【０００３】
このとき、マルチスレッドプロセッサは、１つのハードウェアスレッドにより生成された命令をパイプライン中の１つの実行ステージで実行しながら、他の実行ステージにおいて他のハードウェアスレッドにより生成された命令を処理することができる。つまり、マルチスレッドプロセッサの演算回路では、互いに独立関係にある命令がそれぞれ異なる実行ステージで実行されることになる。これにより、マルチスレッドプロセッサは、それぞれの命令流を円滑に処理しながら、パイプラインの実行ステージが何も処理しない時間を削減し、プロセッサの処理能力を向上させる。
【０００４】
特許文献１には、マルチスレッドプロセッサにおいて第１の割り込みを処理中に、第２の割り込みがあった場合、第１の割り込み処理を実行しているハードウェアスレッドとは別のハードウェアスレッドに、第２の割り込み処理を割り当てる技術が開示されている。
【特許文献１】特開２００６−１４６６４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１では、割り込み要求とハードウェアスレッドとが関連付けられていない。そのため、例えば厳密な時間管理が必要な割り込み要求を、厳密な時間管理が必要な処理を実行する所定のハードウェアスレッドに割り当てることができず、システム全体としての信頼性に劣るおそれがあった。
【課題を解決するための手段】
【０００６】
本発明に係るマルチスレッドプロセッサの一態様は、
それぞれが独立した命令流を生成する複数のハードウェアスレッドと、
入力された割り込み要求信号が、前記複数のハードウェアスレッドのうち１つ又は複数と関連付けられているか否かを判定し、関連付けられている場合、当該割り込み要求を関連付けられたハードウェアスレッドに割り当てる割り込みコントローラと、を備えたものである。
【０００７】
また、本発明に係るマルチスレッドプロセッサの割り込み処理方法の一態様は、
複数のハードウェアスレッドを有するマルチスレッドプロセッサにおける割り込み処理方法であって、
入力された割り込み要求信号が、前記複数のハードウェアスレッドのうち１つ又は複数と関連付けられているか否かを判定し、
関連付けられている場合、当該割り込み要求を関連付けられたハードウェアスレッドに割り当てるものである。
【０００８】
本発明に係るマルチスレッドプロセッサ及びその割り込み処理方法によれば、割り込み処理を当該割り込み処理と関連付けられたハードウェアスレッドにより処理し、高い処理能力と高い信頼性とを両立させることができる。
【発明の効果】
【０００９】
本発明に係るマルチスレッドプロセッサ及びその割り込み方法によれば、高い処理能力と高い信頼性とを両立させることができる。
【発明を実施するための最良の形態】
【００１０】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。図１に本実施の形態に係るマルチスレッドプロセッサ１を含むプロセッサシステムのブロック図を示す。本実施の形態に係るプロセッサシステムでは、システムバスを介してマルチスレッドプロセッサ１とメモリ２が接続される。なお、図示はしていないが、システムバスには、入出力インタフェースなどの他の回路も接続されるものとする。
【００１１】
まず、本実施の形態に係るマルチスレッドプロセッサ１について説明する。マルチスレッドプロセッサ１は、複数のハードウェアスレッドを備えている。ここで、この複数のハードウェアスレッドは１つのＣＰＵ内において構成されている。ハードウェアスレッドは、スレッドプログラムカウンタ、命令メモリ、汎用レジスタ、及び制御レジスタ（本実施の形態ではパイプライン制御回路１６に内蔵されるものとする）等の回路群により構成される。
【００１２】
ここで、ハードウェアスレッドとは、マルチスレッドプロセッサ１に内蔵されるスレッドプログラムカウンタにより出力される命令フェッチアドレスに従って、命令メモリから読み出される一連の命令群により構成される命令流を生成する系のことを言う。つまり、１つのハードウェアスレッドにより生成される命令流に含まれる命令は、互いに関連性の高い命令である。本実施の形態では、マルチスレッドプロセッサ１が複数のスレッドプログラムカウンタを備えることでその数に応じた数のハードウェアスレッドが実装される。以下では、マルチスレッドプロセッサ１について更に詳細に説明する。
【００１３】
図１に示すようにマルチスレッドプロセッサ１は、演算回路１０、割り込みコントローラ１１、ＰＣ生成回路１２、スレッドプログラムカウンタＴＰＣ０〜ＴＰＣ３、セレクタ１３、１８、命令メモリ１４、命令バッファ１５、パイプライン制御回路１６、命令フェッチコントローラ１７、スレッドスケジューラ１９を有する。
【００１４】
演算回路１０は、セレクタ１８によって選択されたハードウェアスレッドが生成する命令に基づき演算処理を実行する。より具体的には、演算回路１０は、命令デコーダ２１、実行ユニット２２、データレジスタ２３を有する。命令デコーダ２１は受信した命令をデコードして、実行ユニット２２に対して演算制御信号ＳＣを出力する。また、命令デコーダ２１は、命令のデコード結果に基づきデータの格納位置を示すデータレジスタアドレスＲａｄｄの出力を行う。実行ユニット２２は、演算制御信号ＳＣに応じて各種の演算を実行する。なお、実行ユニット２２は、複数の実行ステージを有し、パイプライン処理により演算を行う。
【００１５】
また、実行ユニット２２において実行された演算結果は、その演算結果の種類に応じてＰＣ生成回路１２、メモリ２、データレジスタ２３に送信される。データレジスタ２３は、実行ユニット２２において用いられるデータが格納される。そして、データレジスタ２３は、データレジスタアドレスＲａｄｄにより指定したアドレスのデータを出力する。図１に示す例では、データレジスタ２３は、データレジスタアドレスＲａｄｄに応じてデータａとデータｂとを出力する形態となる。また、データレジスタ２３は、データレジスタアドレスＲａｄｄにより指定されるアドレスに実行ユニット２２が出力する演算結果を格納する。
【００１６】
割り込みコントローラ１１は、割り込み要求信号を受けて、マルチスレッドプロセッサ１内に割り込み処理の実行を指示する割り込み指示信号を出力する。より具体的には、割り込みコントローラ１１は、割り込み要求信号を受信すると、割り込み要因や割り込み処理の優先度等を判定し、当該割り込み要因に関連した処理を行うようにＰＣ生成回路１２及びパイプライン制御回路１６に割り込み処理の実行を指示する。この割り込み要求は、マルチスレッドプロセッサ１が出力するものの他に、マルチスレッドプロセッサ１以外の回路からも出力される。
【００１７】
ＰＣ生成回路１２は、システムバスを介して入力される新たなプログラム命令信号、割り込みコントローラ１１が出力する割り込み指示信号及び実行ユニット２２における処理に基づき出力される分岐指示信号を受けて、プログラムカウント更新値を生成する。そして、ＰＣ生成回路１２は、プログラムカウント更新値をスレッドプログラムカウンタＴＰＣ０〜ＴＰＣ３のいずれかに与える。なお、ＰＣ生成回路１２は、生成したプログラムカウント更新値をいずれのスレッドプログラムカウンタに与えるかを判断する機能も有する。
【００１８】
スレッドプログラムカウンタＴＰＣ０〜ＴＰＣ３は、処理すべき命令が格納される命令メモリ１４のアドレス（このアドレスを命令フェッチアドレスＩＭａｄｄと称す）を生成する。また、スレッドプログラムカウンタＴＰＣ０〜ＴＰＣ３は、ＰＣ生成回路１２からプログラムカウント更新値が与えられた場合は、命令フェッチアドレスＩＭａｄｄをプログラムカウント更新値に応じて更新する。一方、スレッドプログラムカウンタＴＰＣ０〜ＴＰＣ３は、プログラムカウント更新値の入力がない場合は、アドレスを昇順に計算し、連続する次の命令フェッチアドレスを算出する。なお、図１においては、スレッドプログラムカウンタの数を４つとしたが、プログラムスレッドカウンタの数は、マルチスレッドプロセッサの仕様に応じて任意に設定することができる。
【００１９】
セレクタ１３は、命令フェッチコントローラが出力するスレッド指定信号に応じてスレッドプログラムカウンタＴＰＣ０〜ＴＰＣ３のうちいずれか１つを選択し、選択したスレッドプログラムカウンタが出力する命令フェッチアドレスＩＭａｄｄを出力する。なお、図１のセレクタ１３において入力端子に０〜４の数字を付したが、この数字は、ハードウェアスレッドの番号を示すものである。
【００２０】
命令メモリ１４は、複数のハードウェアスレッドにより共用されるメモリ領域である。命令メモリ１４は、マルチスレッドプロセッサ１において実行される演算で用いられる各種命令が格納される。そして、命令メモリ１４は、セレクタ１３を介して入力される命令フェッチアドレスＩＭａｄｄにより指定された命令を出力する。このとき、命令メモリ１４は、セレクタ１３がスレッドプログラムカウンタＴＰＣ０〜ＴＰＣ３のいずれが出力した命令フェッチアドレスＩＭａｄｄであるかを判別し、判別結果に応じて命令の出力先を振り分ける。
【００２１】
本実施の形態では、命令バッファ１５は、スレッドプログラムカウンタＴＰＣ０〜ＴＰＣ３に対応した命令バッファ領域ＢＵＦ０〜ＢＵＦ３を有する。そこで、命令メモリ１４は、命令フェッチアドレスＩＭａｄｄの出力元に応じて命令バッファ領域ＢＵＦ０〜ＢＵＦ３のいずれかに読み出された命令を振り分ける。なお、命令メモリ１４は、メモリ２に含まれる所定のメモリ領域であっても良い。また、命令バッファ領域ＢＵＦ０〜ＢＵＦ３は、ＦＩＦＯ（First In First Out）形式のバッファ回路である。また、命令バッファ領域ＢＵＦ０〜ＢＵＦ３は、１つのバッファ内において領域分割されたものでも良く、分離された領域に形成されたものであっても良い。
【００２２】
パイプライン制御回路１６は、命令バッファ１５の先頭に格納された命令と実行ユニット２２において実行されている命令とをモニタする。そして、パイプライン制御回路１６は、割り込みコントローラ１１から割り込み指示信号が入力された場合には、割り込み処理に関係するハードウェアスレッドに属する命令を廃棄する指示を命令バッファ１５及び実行ユニット２２に対して行う。
【００２３】
命令フェッチコントローラ１７は、命令バッファ１５に格納されている命令の個数に応じていずれのハードウェアスレッドに属する命令をフェッチすべきかを判断し、その判断結果に基づきスレッド指定信号を出力する。例えば、命令フェッチコントローラ１７は、命令バッファ領域ＢＵＦ０に格納される命令キューの数が他の命令バッファ領域に格納される命令キューの数よりも少なければ、０番のハードウェアスレッドに属する命令をフェッチすべきと判断し、０番のハードウェアスレッドを示すスレッド指定信号を出力する。これにより、セレクタ１３は、スレッドプログラムカウンタＴＰＣ０を選択する。なお、命令フェッチコントローラ１７は、ラウンドロビン方式による手順で選択するハードウェアスレッドを決定しても良い。
【００２４】
セレクタ１８は、第１のセレクタとして機能するセレクタである。セレクタ１８は、スレッドスケジューラ１９が出力するスレッド選択信号ＴＳＥＬに応じて命令バッファ領域ＢＵＦ０〜ＢＵＦ３のいずれか１つを選択し、選択した命令バッファ領域から読み出した命令を演算回路１０に出力する。つまり、セレクタ１８は、スレッド選択信号ＴＳＥＬに応じて複数のハードウェアスレッドから１つのハードウェアスレッドを選択し、選択したハードウェアスレッドが出力する命令を演算回路１０に出力する。なお、セレクタ１８においても、入力端子に０〜４の数字を付したが、この数字は、ハードウェアスレッドの番号を示すものである。
【００２５】
スレッドスケジューラ１９は、予め設定されたスケジュールに従って、複数のハードウェアスレッドのうち次の実行サイクルにおいて実行される１つのハードウェアスレッドを指定するスレッド選択信号ＴＳＥＬを出力する。つまり、スレッドスケジューラ１９は、複数のハードウェアスレッドのどのような順序で処理するかをスケジュールにより管理し、そのスケジュールに沿った順序でハードウェアスレッドにより生成される命令が実行されるようにスレッド選択信号ＴＳＥＬを出力する。なお、スレッドスケジューラ１９は、マスク信号ＭＳＫが入力された場合、マスク信号ＭＳＫが示すハードウェアスレッドを選択することを回避する。なお、本実施の形態に係るマルチスレッドプロセッサ１では、このスケジュールをマルチスレッドプロセッサ１の起動の直後に実行される管理プログラムにより設定する。
【００２６】
次に、図２を用いて、割り込みコントローラ１１、ＰＣ生成回路１２及びパイプライン制御回路１６の詳細について説明する。図２に示すように、割り込みコントローラ１１はプライオリティ判定部１１１及びスレッド判定部１１２を備えている。ここで、スレッド判定部１１２はスレッドバインドレジスタ１１３及びセレクタ１１４を備えている。また、パイプライン制御回路１６は、上述のように、システムレジスタ１６１を備えている。さらに、システムレジスタ１６１は、割り込み許可レジスタ１６１ａを備えている。
【００２７】
プライオリティ判定部１１１は、複数の割り込み要求信号が時間的に重複して入力された場合に、割り込み要求信号の優先度を判定し、優先度の高い割り込み要求信号を優先して出力する。ここで、本実施の形態における割り込み要求信号はｎチャネルすなわちｎ個の割り込み要因に対応したものである。
【００２８】
スレッド判定部１１２は、割り込み要求のチャネル情報ＣＨに基づいて、当該割り込み要求を処理すべきスレッドを判定する。上述の通り、スレッド判定部１１２は、スレッドバインドレジスタ１１３及びセレクタ１１４を備えている。スレッドバインドレジスタ１１３には、割り込み要求のチャネル毎に、当該割り込み要求を処理すべきすなわち当該割り込み要求に関連付けられたハードウェアスレッド番号が書き込まれている。図２では、チャネル毎のレジスタが、「ＩＮＴ＿ＣＴＲ＿１」〜「ＩＮＴ＿ＣＴＲ＿ｎ」で示されている。このチャネル毎のレジスタ「ＩＮＴ＿ＣＴＲ＿１」〜「ＩＮＴ＿ＣＴＲ＿ｎ」は、それぞれセレクタ１１４に接続されている。セレクタ１１４は、割り込み要求信号のチャネル情報ＣＨに基づいて、当該割り込み要求を処理すべきハードウェアスレッド情報ＨＷＴを、ＰＣ生成回路１２及びパイプライン制御回路１６へ出力する。
【００２９】
ここで、図３を用いて、本実施の形態に係るスレッドバインドレジスタ１１３におけるチャネル毎のレジスタの定義について説明する。図３に示すように、チャネル毎のレジスタ（図２の「ＩＮＴ＿ＣＴＲ＿１」〜「ＩＮＴ＿ＣＴＲ＿ｎ」のいずれか１つに対応）には、バインドフラグとハードウェアスレッド番号とが書き込まれている。バインドフラグは、当該チャネルの割り込み要求と書き込まれたハードウェアスレッド番号とが関連付けられたものか否かを示している。具体的には、バインドフラグが１の場合関連付け有り、０の場合関連付けなしなどとすればよい。ハードウェアスレッド番号には、本実施の形態ではハードウェアスレッド番号０〜３のいずれか１つが書き込まれている。ここで、関連付けが有れば、書き込まれたハードウェアスレッド番号がハードウェアスレッド情報ＨＷＴとして出力される。この場合、ＰＣ生成回路１２は、指定されたスレッドプログラムカウンタＴＰＣのプログラムカウント更新値を生成する。一方、関連付けが無ければ、その旨のハードウェアスレッド情報ＨＷＴが出力される。この場合、ＰＣ生成回路１２は、スレッドプログラムカウンタＴＰＣ０〜ＴＰＣ３のいずれかのプログラムカウント更新値を生成する。
【００３０】
次に、図２を用いて、動作について説明する。割り込みコントローラ１１に入力された割り込み要求信号ＲＥＱは、プライオリティ判定部１１１を介して、ＰＣ生成回路１２及びパイプライン制御回路１６へ入力される。また、割り込み要求信号に基づくチャネル情報ＣＨがスレッド判定部１１２へ入力される。このチャネル情報ＣＨはスレッド判定部１１２内のセレクタ１１４へ入力されると共に、ＰＣ生成回路１２及びパイプライン制御回路１６へ出力される。そして、上述の通り、セレクタ１１４は、割り込み要求信号のチャネル情報ＣＨに基づいて、当該割り込み要求を処理すべきハードウェアスレッドの情報ＨＷＴを、ＰＣ生成回路１２及びパイプライン制御回路１６へ出力する。なお、図１において割り込みコントローラ１１が出力する割り込み指示信号には、上記割り込み要求信号ＲＥＱ、チャネル情報ＣＨ、ハードウェアスレッド情報ＨＷＴの３つが含まれる。
【００３１】
これら３つの信号が入力されると、ＰＣ生成回路１２は、パイプライン制御回路１６のシステムレジスタ１６１内の割り込み許可レジスタ１６１ａを参照する。そして、割り込み許可フラグを取得した後、割り込み要求信号ＲＥＱ、チャネル情報ＣＨ、ハードウェアスレッド情報ＨＷＴに基づいて、スレッドプログラムカウンタＴＰＣ０〜ＴＰＣ３のいずれかのプログラムカウント更新値を生成し、割り込み処理を開始する。
【００３２】
次に、図４のフローチャートを用いて、本実施の形態に係る割り込み処理の手順について説明する。まず、割り込みコントローラ１１に割り込み要求信号が入力されると、スレッド判定部１１２が、スレッドバインドレジスタ１１２のうち当該チャネルのレジスタに格納された値を参照する（ＳＴ１）。
【００３３】
次に、スレッド判定部１１２は、当該割り込み要求が所定のハードウェアスレッドに関連付けられたものすなわちバインドされたものであるか否か判定する（ＳＴ２）。当該割り込み要求が所定のハードウェアスレッドに関連付けられている場合（ＳＴ２ＹＥＳ）、ＰＣ生成回路１２は、該当ハードウェアスレッドの割り込み許可フラグを取得する（ＳＴ３）。次に、割り込み可能であれば（ＳＴ４ＹＥＳ）、ＰＣ生成回路１２は、プログラムカウント更新値を出力し、割り込み処理を実行する（ＳＴ５）。これにより、割り込み処理が完了する。一方、割り込み不可能であれば（ＳＴ４ＮＯ）、ＰＣ生成回路１２は、割り込み処理を保留し（ＳＴ６）、再度割り込み許可フラグを取得する（ＳＴ３）。
【００３４】
一方、当該割り込み要求が所定のハードウェアスレッドに関連付けられていない場合（ＳＴ２ＮＯ）、当該割り込み要求は、いずれのハードウェアスレッドにより処理されても良い。そのため、割込み要求を受けた際に動作していたハードウェアスレッドの割込み許可フラグを取得する。（ＳＴ７）。次に、割り込み可能であれば（ＳＴ８ＹＥＳ）、ＰＣ生成回路１２は、プログラムカウント更新値を出力し、割り込み処理を実行する（ＳＴ９）。これにより、割り込み処理が完了する。一方、割り込み不可能であれば（ＳＴ８ＮＯ）、割り込み処理を保留し（ＳＴ１０）、再度割り込み許可フラグを取得する（ＳＴ７）。
【００３５】
次に、図５及び６を用いて、本発明の効果について説明する。まず、図６は比較例に係る割り込み処理を説明するための図である。ここでは、図６に一例として示すように、ハードウェアスレッド０、ハードウェアスレッド１、ハードウェアスレッド２、ハードウェアスレッド３のＣＰＵ占有時間のスケジュールが、全体の５０％、３５％、１０％、５％であるとする。ここで、点線で示したタイミングで割り込み処理が発生し、全体の２０％が割り込み処理に用いられた場合を考える。各ハードウェアスレッドにおける斜線部が割り込み処理時間である。比較例の場合、いずれのハードウェアスレッドでも、均等に２０％ずつＣＰＵ実効占有時間が減少する。具体的には、ハードウェアスレッド０、ハードウェアスレッド１、ハードウェアスレッド２、ハードウェアスレッド３のＣＰＵ実効占有時間は、それぞれ４０％、２８％、８％、４％となる。
【００３６】
このように、比較例では、厳密な時間管理が不要な割り込み要求が、厳密な時間管理が必要な処理を実行する所定のハードウェアスレッドに割り当てられ、厳密な時間管理が必要な他の処理に致命的な悪影響を及ぼし、システム全体としての信頼性に劣るおそれがある。また、割り込み情報とハードウェアスレッドとが関連付けられていないため、例えば厳密な時間管理が必要な割り込み要求を、厳密な時間管理が必要な処理を実行する所定のハードウェアスレッドに割り当てることができず、システム全体としての信頼性に劣るおそれがある。
【００３７】
図５は、実施の形態１に係る割り込み処理を説明するための図である。図５では、ハードウェアスレッド１に関連付けられた割り込み要求を処理する様子が示されている。この場合、ハードウェアスレッド１において全体の２０％のＣＰＵ実効占有時間が減少する。具体的には、ハードウェアスレッド０、ハードウェアスレッド１、ハードウェアスレッド２、ハードウェアスレッド３のＣＰＵ実効占有時間は、それぞれ５０％、１５％、１０％、５％となる。
【００３８】
このように、本実施の形態では、割り込み情報とハードウェアスレッドとが関連付けられているため、例えば厳密な時間管理が必要な割り込み要求を、厳密な時間管理が必要な処理を実行する所定のハードウェアスレッドに割り当てることができ、システム全体としての信頼性を確保することができる。また、厳密な時間管理が不要な割り込み要求が、厳密な時間管理が必要な処理を実行する所定のハードウェアスレッドに割り当てられることもない。また、割り込み処理における各ハードウェアスレッドの独立性が高まり、システム設計も容易になる。さらに、重要度は低いが頻度が高い割り込みに対し、専用のハードウェアスレッドを割り当てることにより、システム全体のパフォーマンスを下げずに対処することもできる。
【００３９】
実施の形態２
次に、図７を用いて、実施の形態２について説明する。図７は、実施の形態２におけるチャネル毎のレジスタ（図２の「ＩＮＴ＿ＣＴＲ＿１」〜「ＩＮＴ＿ＣＴＲ＿ｎ」のいずれか１つに対応）の定義である。すなわち、実施の形態１における図３に相当するものである。その他の構成は同様であるため、説明を省略する。実施の形態２では、図７に示すように、４つのハードウェアスレッド０〜３毎にフラグが設定されている。
【００４０】
本実施の形態２では、１つの割り込み要求を複数のハードウェアスレッドと関連付けることができる。例えば、あるチャネルの割り込み要求に対し、ハードウェアスレッド０及び１のフラグが０、ハードウェアスレッド２及び３のフラグが１の場合、この割り込みはハードウェアスレッド２及び３のいずれか一方あるいは両方により処理される。また、あるチャネルの割り込み要求に対し、特定のハードウェアスレッド以外の全ハードウェアスレッドにより処理することなどが可能となる。なお、全てのハードウェアスレッドのフラグが１の場合、任意のハードウェアスレッドにより処理可能となり、実施の形態１におけるバインドフラグが０の場合と同様の処理となる。
【００４１】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。また、以上の説明では、説明を明確にするため、記載及び図面が、適宜、簡略化されている。
【図面の簡単な説明】
【００４２】
【図１】実施の形態１に係るマルチスレッドプロセッサのブロック図である。
【図２】実施の形態１に係る割り込みコントローラの詳細なブロック図である。
【図３】実施の形態１に係る１つのチャネルに対応するスレッドバインドレジスタの構成を示す模式図である。
【図４】実施の形態１に係る割り込み処理の手順を示すフローチャートである。
【図５】実施の形態１に係る割り込み処理を説明するための図である。
【図６】比較例に係る割り込み処理を説明するための図である。
【図７】実施の形態２に係る１つのチャネルに対応するスレッドバインドレジスタの構成を示す模式図である。
【符号の説明】
【００４３】
１    マルチスレッドプロセッサ
２    メモリ
１０    演算回路
１１    割り込みコントローラ
１２    ＰＣ生成回路
１３、１８、１１４    セレクタ
１４    命令メモリ
１５    命令バッファ
１６    パイプライン制御回路
１７    命令フェッチコントローラ
１９    スレッドスケジューラ
２１    命令デコーダ
２２    実行ユニット
２３    データレジスタ
１１１    プライオリティ判定部
１１２    スレッド判定部
１１３    スレッドバインドレジスタ
１６１    システムレジスタ
１６１ａ    割り込み許可レジスタ
ＴＰＣ０〜ＴＣＰ３    スレッドプログラムカウンタ
【図１】
0005173714.tif 000002
【図２】
0005173714.tif 000003
【図３】
0005173714.tif 000004
【図４】
0005173714.tif 000005
【図５】
0005173714.tif 000006
【図６】
0005173714.tif 000007
【図７】
0005173714.tif 000008