(57)【要約】【課題】  ＯＳスレッドを介在することなくコンテキストスイッチを行うことが可能な演算処理装置を提供する。【解決手段】  命令流を構成する命令の実行に伴うコンテキストを記憶するための複数のレジスタファイルを含むレジスタ群１１３と、レジスタによって構成され、レジスタファイルに記憶されているコンテキストを退避させるためのコンテキストキャッシュ１００と、レジスタファイルにおけるコンテキストスイッチの発生時、レジスタファイルに読み込まれるべきコンテキストのメモリユニット１０６における格納先にかかる情報を記憶するｎｃｓｐを備え、スレッドの１つが他のスレッドにコンテキストスイッチを要求した場合、要求を受けたスレッドを実行しているハードウェアがｎｃｓｐに記憶されている格納先に係る情報に基づいてコンテキストキャッシュ１００からコンテキストを読み出してレジスタファイルに格納させる。【選択図】  図１
2006139495.tif 000002
【特許請求の範囲】
【請求項１】
スレッドまたはタスクごとに対応付けられたハードウェアリソースを複数備え、複数の命令流を並行して実行する演算処理装置であって、
命令流を構成する命令の実行に伴うコンテキストを記憶するための複数のレジスタを含むレジスタ群と、
レジスタによって構成され、前記レジスタに記憶されているコンテキストを退避させるためのコンテキストキャッシュ手段と、
前記レジスタにおけるコンテキストスイッチの発生時、該レジスタに読み込まれるべきコンテキストを特定するため第１特定情報を記憶する第１特定情報記憶手段と、を備え、
前記ハードウェアリソースの１つで実行されているスレッドが他のハードウェアリソースで実行されているスレッドにコンテキストスイッチを要求した場合、要求を受けたスレッドを実行しているハードウェアリソースが、前記第１特定情報記憶手段に記憶されている第１特定情報に基づいて前記コンテキストキャッシュ手段からコンテキストを前記レジスタに読み込ませることを特徴とする演算処理装置。
【請求項２】
前記レジスタにおけるコンテキストスイッチの発生時、該レジスタから退避すべきコンテキストを特定するための第２特定情報を記憶する第２特定情報記憶手段をさらに備え、
前記ハードウェアリソースの１つで実行されているスレッドが他のハードウェアリソースで実行されているスレッドにコンテキストスイッチを要求した場合、要求を受けたスレッドを実行しているハードウェアリソースは、退避すべきコンテキストを、前記第２特定情報記憶手段に記憶されている第２特定情報と共に前記コンテキストキャッシュ手段に退避することを特徴とする請求項１に記載の演算処理装置。
【請求項３】
外部記憶手段と接続し、前記コンテキストキャッシュ手段に退避されたコンテキストは、第２特定情報に基づいて前記外部記憶手段に書き戻されることを特徴とする請求項１または２に記載の演算処理装置。
【請求項４】
コンテキストスイッチを要求したスレッドを実行しているハードウェアリソースが前記第１特定情報記憶手段に第１特定情報を設定し、要求を受けたスレッドを実行しているハードウェアリソースは、コンテキストスイッチ発生時に前記第２特定情報記憶手段に記憶されている第２特定情報を前記第１特定情報記憶手段に記憶されている情報によって更新することを特徴とする請求項２または３に記載の演算処理装置。
【請求項５】
前記第１特定情報記憶手段に記憶されている第１特定情報、前記第２特定情報記憶手段に記憶されている第２特定情報の少なくとも一方が、前記外部記憶手段のアドレスに対応付けられる情報であることを特徴とする請求項２から４のいずれか１つに記載の演算処理装置。
【請求項６】
第１特定情報および第２特定情報が、前記外部記憶手段におけるコンテキストの書き戻し先のアドレスであることを特徴とする請求項５に記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の命令流を並列に扱うことが可能なマルチスレッド方式の演算処理装置に関する。
【背景技術】
【０００２】
プロセッサでは、複数のタスクやスレッド（スレッド等という。）の間で実行の入れ替えが発生することがある。実行の入れ替えにあっては、入れ替えに先立って先に実行されていたスレッド等の実行を再開するため、このスレッド等の実行に用いられていたレジスタファイルに記憶されているデータ（コンテキスト）を退避させる。
コンテキストの退避がなされたレジスタファイルには入れ替え後に実行されるスレッド等のコンテキストが読み込まれる。そして、入れ替わったスレッド等の実行後、退避されていたコンテキストが再びこのレジスタファイルに復元されて処理再開が可能な状態になる。このような処理は、一般的にコンテキストスイッチといわれている。
【０００３】
ところで、プロセッサには、一度に扱える命令流が１つのシングルスレッドプロセッサと、複数の命令流を同時に扱うことが可能なマルチスレッドプロセッサとがある。このような従来例として、例えば、特許文献１に記載された発明がある。
マルチスレッドプロセッサにおけるコンテキストスイッチは、コンテキストスイッチの指示を出したＯＳスレッドがレジスタファイル内のコンテキストを退避、復元させる場合と、コンテキストスイッチの指示を受けたスレッドを実行しているハードウェアがコンテキストスイッチの指示によって発生する割り込みを受け、その割り込み処理においてコンテキストを退避、復元させる場合とがある。両者を比較した場合、コンテキストスイッチを指示したＯＳスレッドがコンテキストの退避、復元を行った方が指示を受けて割り込み処理内でコンテキストを復元、退避するよりもプロセッサの実行処理能力が低下する。
【０００４】
このような相違を図８、図９を使って説明する。図８は、コンテキストスイッチを指示したＯＳスレッドがコンテキストスイッチを行う処理の手順を説明するための図である。図９は、コンテキストスイッチの指示を受けたスレッドの実行が割り込みによって中断され、割り込み処理内でコンテキストスイッチを行う処理の手順を説明するための図である。図８、図９のいずれにおいても、ＯＳスレッドが実行されており、それと同時に実行されている一般のスレッドがコンテキストスイッチの対象となる。
【０００５】
図８に示すように、コンテキストスイッチを指示したＯＳスレッドが現在実行されているスレッド１のコンテキストの退避、復元を行う場合、ＯＳスレッドがスレッド１を実行しているハードウェアの停止を指示する。そして、このハードウェアの停止を待って現在実行されているスレッド１のコンテキストを退避させる。そして、次に実行されるスレッド２のコンテキストをレジスタファイルに復元し、スレッド２を実行するハードウェアに再開を指示する。
【０００６】
一方、コンテキストスイッチを指示されたスレッド１がＯＳスレッドの操作によらずコンテキストスイッチを行う場合、図９に示すように、ＯＳスレッドがスレッド１にコンテキストスイッチを指示する。指示によって発生する割り込みを受けて割り込み処理内で現在実行されているスレッド１のコンテキストを退避させ、次に実行されるスレッド２のコンテキストを復元する。そして、コンテキストスイッチ割り込みから処理を復帰させる。
【０００７】
ＯＳスレッドが他のスレッドを実行するハードウェアを一時停止させてコンテキストスイッチを行う方法によれば、スレッド１側ではコンテキストスイッチの前後で停止期間が生じる。また、ＯＳスレッド側でもコンテキストの退避，復元を行うことによって実効的な処理の性能が低下する。さらに、スレッド１のコンテキストを退避させ、復元させるためにスレッド等の実行に使用しているレジスタファイルを相互に接続する必要が生じ、特に命令長が短い場合にはレジスタファイルの指定が困難であるという不具合がある。
【０００８】
一方、ＯＳスレッドが他のスレッドを実行しているハードウェアに指示して割り込み処理内でコンテキストスイッチを行わせる方法によれば、コンテキストスイッチを要求されたスレッドを実行しているハードウェアはコンテキストスイッチの前後で停止せず、図８で説明した処理よりも高い処理効率を得ることができる。また、ＯＳスレッドはコンテキストスイッチの指示を出すだけでよく、指示を出した後はＯＳとして処理すべき他の処理を行うことができる。このため、プロセッサの実効的な使用効率を高めることができる。
【特許文献１】特開２００２−１４０２００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
以上述べたように、マルチスレッドプロセッサでは、ＯＳスレッドが他のスレッドのコンテキストを退避，復元するよりもコンテキストスイッチ指示によって発生する割り込み処理によって行う方が高い処理効率を得ることができる。
しかしながら、一般的にプロセッサでは、ＯＳがスレッド等のコンテキスト格納先アドレスを管理している。このため、従来のプロセッサは、存在できるOSスレッドが同時にひとつの場合、OSスレッドを介在することなくコンテキストスイッチを行うことができなかった。
【００１０】
本発明は、このような点に鑑みてなされたものであり、ＯＳスレッドを介在することなくコンテキストスイッチを行うことが可能な演算処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
以上の課題を解決するため、本発明の演算処理装置は、スレッドまたはタスクごとに対応付けられたハードウェアリソースを複数備え、複数の命令流を並行して実行する演算処理装置であって、命令流を構成する命令の実行に伴うコンテキストを記憶するための複数のレジスタを含むレジスタ群と、レジスタによって構成され、前記レジスタに記憶されているコンテキストを退避させるためのコンテキストキャッシュ手段と、前記レジスタにおけるコンテキストスイッチの発生時、該レジスタに読み込まれるべきコンテキストを特定するため第１特定情報を記憶する第１特定情報記憶手段と、を備え、前記ハードウェアリソースの１つで実行されているスレッドが他のハードウェアリソースで実行されているスレッドにコンテキストスイッチを要求した場合、要求を受けてスレッドを実行しているハードウェアリソースが、前記第１特定情報記憶手段に記憶されている第１特定情報に基づいて前記コンテキストキャッシュ手段からコンテキストを前記レジスタに読み込ませることを特徴とする。
【００１２】
この発明によれば、スレッドの１つが他のスレッドにコンテキストスイッチを要求した場合、コンテキストスイッチを要求されたスレッドを実行しているハードウェアが第１特定情報記憶手段に記憶されている第１特定情報に基づいてコンテキストキャッシュ手段からコンテキストをレジスタに読み込むことができる。つまり、コンテキストスイッチを要求したスレッドによらず、要求を受けたスレッドを実行しているハードウェアの側でコンテキストスイッチ時に次に実行されるスレッドに使用されるコンテキストをロードすることができる。
【００１３】
したがって、請求項１に記載の発明は、コンテキストスイッチをＯＳスレッドが要求するものとした場合、ＯＳスレッドを介在することなくコンテキストスイッチを行うことが可能な演算処理装置を提供することができる。
請求項２に記載の発明にかかる演算処理装置は、前記レジスタにおけるコンテキストスイッチの発生時、該レジスタから退避すべきコンテキストを特定するための第２特定情報を記憶する第２特定情報記憶手段をさらに備え、前記ハードウェアリソースの１つで実行されているスレッドが他のハードウェアリソースで実行されているスレッドにコンテキストスイッチを要求した場合、要求を受けたスレッドを実行しているハードウェアリソースは、退避すべきコンテキストを、前記第２特定情報記憶手段に記憶されている第２特定情報と共に前記コンテキストキャッシュ手段に退避することを特徴とする。
【００１４】
この発明によれば、要求を受けたハードウェアスレッドが、第２特定情報に基づいてコンテキストをコンテキストキャッシュ手段に退避させることができる。つまり、コンテキストスイッチを要求したハードウェアスレッドによらず、要求を受けたハードウェアスレッドの側でコンテキストスイッチ時に前の命令の処理に使用されたコンテキストを退避させることができる。
【００１５】
したがって、請求項２に記載の発明は、コンテキストスイッチをＯＳスレッドが要求するものとした場合、ＯＳスレッドを介在することなくコンテキストスイッチを行うことが可能な演算処理装置を提供することができる。
請求項３に記載の発明にかかる演算処理装置は、外部記憶手段と接続し、前記コンテキストキャッシュ手段に退避されたコンテキストは、第２特定情報に基づいて前記外部記憶手段に書き戻されることを特徴とする。
【００１６】
この発明によれば、コンテキストを第２特定情報記憶手段に記憶されている第２特定情報と共にコンテキストキャッシュ手段に退避させることができる。このため、コンテキストキャッシュ手段にアクセスしてコンテキストをメモリに書き戻す場合、この第２特定情報をベースアドレスにして一定のデータ長の間隔でメモリにアクセスし、コンテキストを書き戻すことができる。
【００１７】
請求項４に記載の発明にかかる演算処理装置は、コンテキストスイッチを要求したスレッドを実行しているハードウェアリソースが前記第１特定情報記憶手段に第１特定情報を設定し、要求を受けたスレッドを実行しているハードウェアリソースは、コンテキストスイッチ発生時に前記第２特定情報記憶手段に記憶されている第２特定情報を前記第１特定情報記憶手段に記憶されている情報によって更新することを特徴とする。
【００１８】
この発明によれば、コンテキストスイッチを要求したスレッドが、第１特定情報記憶手段にレジスタに読み込まれるべきコンテキストのコンテキストキャッシュ手段における格納先にかかる情報を設定することができる。このため、コンテキストスイッチの要求を受けたスレッドを実行していたハードウェアの側で次に実行するスレッドのコンテキストを読み込むことができる。
【００１９】
また、この発明によれば、要求を受けたスレッドを実行しているハードウェアが、コンテキストスイッチ発生時に第２特定情報記憶手段に記憶されている情報を格納先記憶手段に記憶されている情報によって更新することができる。このため、次に実行されるスレッドのコンテキストを書き戻す際の書き戻し先を自動的にコンテキストが格納されている先に設定することができる。
【００２０】
請求項５に記載の発明にかかる演算処理装置は、前記第１特定情報記憶手段に記憶されている第１特定情報、前記第２特定情報記憶手段に記憶されている第２特定情報の少なくとも一方が、前記外部記憶手段のアドレスに対応付けられる情報であることを特徴とする。
この発明によれば、コンテキストと外部記憶装置におけるアドレスとを対応付け、コンテキストを外部記憶手段の所定のアドレスからコンテキストキャッシュ手段に読み出す、あるいはコンテキストをコンテキストキャッシュ手段から外部記憶手段の所定のアドレスに書き戻すことができる。
【００２１】
請求項６に記載の発明にかかる演算処理装置は、第１特定情報および第２特定情報が、前記外部記憶手段におけるコンテキストの書き戻し先のアドレスであることを特徴とする。
この発明によれば、コンテキストと外部記憶手段におけるアドレスとを直接対応つけることができ、第１特定情報および第２特定情報と外部記憶手段のアドレスとを対応つけるための構成を省くことができる。
【発明を実施するための最良の形態】
【００２２】
以下、図を参照して本発明に係る演算処理装置及びコンテキストスイッチ方法の実施の形態を説明する。
図１は、本実施形態の演算処理装置（プロセッサという。）の本発明に係る構成を説明するための図である。本実施形態のプロセッサは、複数の命令流を並行して実行するマルチスレッドプロセッサである。
【００２３】
なお、スレッドまたはタスクとは、命令流の処理の単位であって、各スレッドやタスクはａｄｄ等の命令によって構成される。また、ハードウェアリソースとはプログラムカウンタやステータスレジスタ、スタックポインタ、汎用レジスタ等のハードウェア資源をいう。
図１に示した構成は、命令流を構成する命令の実行に伴うコンテキストを記憶するための複数のレジスタを含むレジスタ群１１３と、レジスタによって構成され、レジスタ群１１３のレジスタに記憶されているコンテキストを退避させるためのコンテキストキャッシュ１００と、を備えている。コンテキストキャッシュ１００は、複数のキャッシュ領域１００ａ、１００ｂ、１００ｃ、１００ｄでなる。
【００２４】
レジスタ群１１３は、複数の独立した４つのレジスタファイルｒｆ0、ｒｆ1、ｒｆ2、ｒｆ3を備えている。４つのレジスタファイルｒｆ0〜ｒｆ3は、階層構造を有している。また、各々が図示しない汎用レジスタ部と特殊レジスタ部とで構成されている。
汎用レジスタ部は、スレッドの演算命令の実行に使用されるレジスタであって、実行された演算の結果や演算の経過に係る情報が記憶されている。特殊レジスタは、プログラムの処理の段階や状態を示すプログラムカウンタやステータスレジスタを含んでいる。
【００２５】
さらに、本実施形態のレジスタファイルｒｆ0〜ｒｆ3は、それぞれがｎｃｓｐ（Next Context Stack Pointer）を備えている。ｎｃｓｐは、コンテキストスイッチの発生時、レジスタファイルｒｆ0、ｒｆ1、ｒｆ2、ｒｆ3の各々に読み込まれるコンテキストを特定するための第１特定情報記憶手段として機能する。また、ｎｃｓｐに記憶される情報は、第１特定情報に相当する。本実施形態では、第１特定情報をレジスタファイルｒｆ0〜ｒｆ3に読み込まれるべきコンテキストのメモリユニット１０６における格納先にかかる情報とした。
【００２６】
また、本実施形態のレジスタファイルｒｆ0〜ｒｆ3は、それぞれが、ｃｃｓｐ（Current Context Stack Pointer）を備えている。ｃｃｓｐは、コンテキストスイッチの発生時、レジスタファイルｒｆ0、ｒｆ1、ｒｆ2、ｒｆ3の各々から退避されるべきコンテキストを特定するための第２特定情報記憶手段として機能する。また、ｃｃｓｐに記憶される情報は、第２特定情報に相当する。本実施形態では、第２特定情報をレジスタファイルｒｆ0〜ｒｆ3から退避すべきコンテキストのメモリユニット１０６における書き戻し先にかかる情報とした。
【００２７】
なお、本実施形態では、ｎｃｓｐ、ｃｃｓｐの各々に記憶されている情報を、スレッドＩＤとも記す。本実施形態では、レジスタファイルｒｆ0〜ｒｆ3に読み込まれるべきコンテキストのメモリユニット１０６における格納先アドレスそのものをスレッドＩＤとして使用する。また、レジスタファイルｒｆ0〜ｒｆ3から退避すべきコンテキストのメモリユニット１０６における書き戻し先アドレスそのものをスレッドＩＤとして使用する。
【００２８】
以上述べた構成は、以下のように動作する。すなわち、スレッドの１つが他のスレッドにコンテキストスイッチを要求した場合、コンテキストスイッチの要求を受けたスレッドを実行しているハードウェアは、ｃｃｓｐの内容基づいて、レジスタファイルｒｆ0〜ｒｆ3からコンテキストキャッシュ１００にコンテキストを退避させる。
ｃｃｓｐは、コンテキストスイッチの直前、すなわち現在対応するレジスタファイルに記憶されているコンテキストのメモリユニット１０６における格納先をスレッドＩＤとして記憶している。また、ｎｃｓｐは、コンテキストスイッチの後、ｎｃｓｐに対応するレジスタファイルを用いて実行されるスレッドのコンテキストのメモリユニット１０６における格納先をスレッドＩＤとして記憶している。
【００２９】
要求を受けたスレッドを実行しているハードウェアは、ｎｃｓｐに記憶されている格納先に係る情報に基づいてコンテキストキャッシュ１００からコンテキストを読み出し、レジスタファイルｒｆ0〜ｒｆ3のうちのｎｃｓｐに対応するレジスタファイルに記憶させる。
ｃｃｓｐ、ｎｃｓｐは、いずれもレジスタ群１１３に含まれるレジスタファイルｒｆ0〜ｒｆ3ごとに設けられている。ｃｃｓｐのレジスタファイルとの対応関係をｃｃｓｐ0、ｃｃｓｐ1、ｃｃｓｐ2、ｃｃｓｐ3の添え字で示す。また、ｎｃｓｐのレジスタファイルとの対応関係をｎｃｓｐ0、ｎｃｓｐ1、ｎｃｓｐ2、ｎｃｓｐ3の添え字で示す。
【００３０】
さらに、図１に示した構成は、ｃｃｓｐに記憶されているメモリユニット１０６のアドレスをスレッドＩＤとしてコンテキストキャッシュ１００を検索するキー検索部１０３、コンテキストキャッシュ１００にあるコンテキストが必要に応じて書き戻されるメモリユニット１０６、メモリユニット１０６とコンテキストキャッシュ１００との間でデータアクセスするメモリアクセスユニット１０５を備えている。
【００３１】
メモリアクセスユニット１０５は、アドレスインクリメンタ１０９を備え、予め指定されている先頭アドレスから一定のデータ長ごとに連続してアクセスすることによって簡単なデータアクセスを可能にしている。また、本実施形態のプロセッサは、図示しない命令メモリを備えている。命令メモリは、プロセッサで実行されるスレッドが記憶されているメモリである。プロセッサは、命令メモリに記憶されているスレッドを構成する命令をフェッチしてデコードし、レジスタファイルを使って演算する。
【００３２】
このような本実施形態のプロセッサは、実行中のスレッドのうちの一が他のスレッドにコンテキストスイッチを要求した場合、コンテキストスイッチの要求を受けたスレッドを実行しているハードウェアがレジスタファイルに記憶されているコンテキストをコンテキストキャッシュ１００の格納先に退避させる。
本実施形態では、他のスレッドにコンテキストスイッチを要求するスレッドをＩＴＲＯＮ（商標）等のＯＳとし、このようなスレッドを以降ＯＳスレッドと記す
図２は、以上述べた本実施形態のプロセッサの動作を説明するための図である。図２に示した動作では、プロセッサは、レジスタファイルｒｆ1を使ってスレッド１の演算処理を実行している。このとき、レジスタファイルｒｆ1のｃｃｓｐ１にはレジスタファイルｒｆ1に記憶されているコンテキストの書き戻し先となるメモリユニット１０６のアドレスが記憶されている。
【００３３】
ＯＳスレッドがスレッド１に対してコンテキストスイッチを発生させると、ＯＳスレッドは、コンテキストスイッチ後に実行されるスレッド２のメモリユニット１０６におけるコンテキストの格納先のアドレスをレジスタファイルｒｆ1のｎｃｓｐ１に設定する。このような処理は、コンテキストの格納先がＯＳによって管理されることから可能になる。
次に実行されるスレッド２のコンテキストの格納先アドレスをｎｃｓｐ１に設定した後、ＯＳスレッドは、スレッド１を実行しているハードウェアにコンテキストスイッチを要求する。この要求にしたがって、スレッド１を実行しているハードウェアは、スレッド１の実行を中断する。そして、コンテキストキャッシュ装置１００に中断したスレッドのコンテキストとｃｃｓｐの内容を退避させる。
【００３４】
次に、スレッド１を実行していたハードウェアは、ｎｃｓｐ1に記憶されているアドレスに基づいてコンテキストスイッチ後にレジスタファイルｒｆ１で実行されるスレッド２のコンテキストをレジスタファイルｒｆ１に読み込む。また、ｃｃｓｐ１に記憶されているアドレスを現在ｎｃｓｐ１に記憶されているアドレスによって更新する。この結果、コンテキストスイッチ後にレジスタファイルｒｆ1で実行されるスレッド２のコンテキストの格納先アドレスがｃｃｓｐ１に設定される。
【００３５】
このような処理により、コンテキストスイッチの要求を受けたスレッドを実行していたハードウェアの側で次に実行されるスレッドのコンテキストをコンテキストキャッシュ１００から読み込むことができる。
なお、ｃｃｓｐに保持されているアドレスの更新は、コンテキストスイッチの際に実行される割り込み処理時に自動的に行われる。また、ｎｃｓｐは、コンテキストスイッチが発生したとき、次に実行されるスレッドのコンテキストを格納するアドレスを保持している。ｎｃｓｐに保持されているアドレスの更新は、他に実行されているスレッドによっても可能である。
【００３６】
以上の処理の終了後、レジスタファイルｒｆ１を用いて実行されていたスレッドのコンテキストスイッチが完了し、プロセッサの処理がコンテキストスイッチ処理から復帰する。
次に、以上述べた本実施形態の動作におけるコンテキスト及びｃｃｓｐ、ｎｃｓｐに記憶されるアドレスの更新について説明する。
【００３７】
図３ないし図７は、図１に示した構成においてコンテキストスイッチが発生した場合のコンテキスト及びメモリユニット１０６のアドレスの移動について説明するための図である。なお、図３〜図７のいずれにおいても、図中にａで示した矢線はコンテキストキャッシュ１００のアドレスを示す情報の流れ示し、ｃで示した矢線はコンテキストの流れを示す。また、ｋで示した矢線はコンテキストキャッシュ１００のアドレスを検索するためのスレッドＩＤの流れを示している。
【００３８】
図３は、コンテキストスイッチ発生直前の状態を示している。この状態では、それぞれ異なる４つのスレッドがレジスタファイルｒｆ0〜ｒｆ3を使って実行されている。ただし、レジスタファイルｒｆ0はＯＳスレッドの実行に使用されていて、レジスタファイルｒｆ1〜ｒｆ3は、いずれもＯＳスレッド以外のスレッド（ユーザースレッド）の実行に使用されている。
【００３９】
図３に示した状態にあっては、レジスタファイルｒｆ0、レジスタファイルｒｆ1、レジスタファイルｒｆ2、レジスタファイルｒｆ3のいずれにも異なるスレッドのコンテキストが記憶されている。また、各レジスタファイルのｃｃｓｐにはレジスタファイルに記憶されているコンテキストの書き戻し先アドレスが記憶されている。
図３に示した状態においてコンテキストスイッチが発生し、レジスタファイルｒｆ1に記憶されているコンテキスト（コンテキスト１とする。）とコンテキストキャッシュ１００のキャッシュ領域１００ａに格納されているコンテキスト（コンテキスト２とする。）とを入れ替える場合、ＯＳスレッドは、図４に示すように、コンテキスト２のスレッドＩＤとなるメモリユニット１０６のアドレスをレジスタファイルｒｆ１のｎｃｓｐ１に設定し、さらにコンテキストスイッチを指示する。本実施形態のコンテキストスイッチにおけるＯＳスレッドの動作は以上で終了する。
【００４０】
次に、レジスタファイルｒｆ1を使用して実行されているスレッド１は、図５に示すように、コンテキスト１をｃｃｓｐ１に記憶されているＩＤスレッドと共にコンテキストキャッシュ１００に退避させる。図５の例では、キャッシュ領域１００ａにあったコンテキスト２がキャッシュ領域１００ｂにシフトされた後、コンテキスト１は、コンテキストキャッシュのキャッシュ領域１００ａに退避される。
【００４１】
次に、ｃｃｓｐ１は、図６に示すように、ｎｃｓｐ１に記憶されているＩＤスレッドで更新される。さらに、図７に示すように、コンテキスト２をレジスタファイルｒｆ1に読み込む。
本実施形態のコンテキスト２の読み込みは、キー検索部１０３によるコンテキストの検索によって行われる。すなわち、キー検索部１０３は、ｃｃｓｐ１に記憶されているコンテキスト２のメモリユニット１０６における書き戻し先アドレスをスレッドＩＤとして用い、コンテキストキャッシュ１００を検索する。そして、ＩＤアドレスが一致するコンテキスト２を特定し、レジスタファイルｒｆ１に読み込む。
【００４２】
なお、図５に示したように、本実施形態では、コンテキストキャッシュ１００の内部でコンテキストが矢線Ａの方向にシフトし、当初ｎｃｓｐ１に設定したアドレスにない場合がある。このような場合、スレッド１は、ｎｃｓｐ１に設定されたアドレスに基づいてアドレスを自動的にインクリメントする方法でコンテキストキャッシュ１００にアクセスし、コンテキスト２を読み出す。
【００４３】
また、コンテキストキャッシュ１００に格納されたコンテキストは、必要に応じてメモリユニット１０６に退避される。このとき、本実施形態のプロセッサは、レジスタファイルｒｆ１を使用して実行されているスレッドのコンテキストをｃｃｓｐ１に記憶されている書き戻し先アドレスと共にコンテキストキャッシュ１００に退避させて格納している。このため、コンテキストキャッシュに記憶されている書き戻し先アドレスをベースアドレスにしてメモリユニット１０６に一定のデータ長の間隔でアクセスすることで簡便にコンテキストを読み出し、書き込むことができる。
【００４４】
以上述べたように、本実施形態のプロセッサは、コンテキストスイッチを要求したスレッドによらず、要求を受けたスレッドの側でコンテキストスイッチ割り込み処理時に次に実行されるスレッドのコンテキストをロードすることができる。また、本実施形態のプロセッサは、コンテキストスイッチを要求したスレッドによらず、要求を受けたスレッドの側でコンテキストスイッチ割り込み処理時に先に実行されていたスレッドのコンテキストを退避させることができる。このため、ＯＳスレッドを介在することなくコンテキストスイッチに起因するレジスタファイルの入れ替えを行うことが可能になる。
【００４５】
このような本実施形態のプロセッサは、ＯＳスレッドはコンテキストスイッチを要求するだけでよく、以降、コンテキストスイッチ完了までをコンテキストスイッチ割り込み処理で行うことができる。このため、ＯＳスレッドは、コンテキストスイッチを要求した以降の時間を他の処理に充てることができ、ＯＳのコンテキストにかかる負荷を軽減すると共にコンテキストスイッチ以外の処理に充てられる時間を増やしてプロセッサにおけるＯＳの処理効率を高めることができる。
【００４６】
また、コンテキストスイッチの前後でコンテキストスイッチ要求を受けたスレッドを実行しているハードウェアを停止する時間を短縮することができるので、プロセッサの処理効率をいっそう高めることができる。
【図面の簡単な説明】
【００４７】
【図１】本発明の一実施形態のプロセッサのうち、本発明に係る構成を説明するための図である。
【図２】図１に示した構成の動作を説明するための図である。
【図３】図１に示した構成においてコンテキストスイッチが発生した場合の動作を説明するための図であって、コンテキストスイッチ発生直前の状態を示した図である。
【図４】コンテキストが現在格納されているアドレスをレジスタファイルのｎｃｓｐ１に設定した状態を示す図である。
【図５】コンテキストをｃｃｓｐ１に記憶されているコンテキストキャッシュ１００のアドレスに退避させた状態を示す図である。
【図６】ｎｃｓｐ１に記憶されているアドレスでｃｃｓｐ１の情報が更新された状態を示す図である。
【図７】コンテキストキャッシュにあったコンテキストをレジスタファイルにロードした状態を示す図である。
【図８】コンテキストスイッチを行う処理の手順を説明するための図である。
【図９】コンテキストスイッチの指示を受けたスレッドの実行が割り込みによって中断され、割り込み処理内でコンテキストスイッチを行う処理の手順を説明するための図である。
【符号の説明】
【００４８】
１００  コンテキストキャッシュ、１０３  キー検索部、１０５  メモリアクセスユニット、１０６  メモリユニット、１０９  アドレスインクリメンタ、１１３  レジスタ群
ｒｆ0，ｒｆ1，ｒｆ2，ｒｆ3  レジスタファイル
【図１】
2006139495.tif 000003
【図２】
2006139495.tif 000004
【図３】
2006139495.tif 000005
【図４】
2006139495.tif 000006
【図５】
2006139495.tif 000007
【図６】
2006139495.tif 000008
【図７】
2006139495.tif 000009
【図８】
2006139495.tif 000010
【図９】
2006139495.tif 000011