(57)【要約】【課題】  コンテキストスイッチに使用されるコンテキスト格納部のハードウェア構成が小型化でき、しかもコンテキストスイッチが短時間でできる演算処理装置を提供する。【解決手段】  スレッドの実行に使用されるレジスタファイルｒｆ0〜ｒｆ3と、レジスタファイルｒｆ0〜ｒｆ3に記憶されていたコンテキストを格納するコンテキストキャッシュ１０５と、レジスタファイルｒｆ0〜ｒｆ3とキャッシュ領域とを相互に接続するコンテキスト用バス２００とを備え、レジスタファイルｒｆ0〜ｒｆ3のいずれかに対してコンテキストスイッチの要求が発生した場合、コンテキスト用バス２００は、コンテキストキャッシュ１０５に記憶されているコンテキストをレジスタファイルｒｆ0〜ｒｆ3に送り、レジスタファイルｒｆ0〜ｒｆ3に記憶されているコンテキストをコンテキストキャッシュ１０５のキャッシュ領域に送る。【選択図】  図２
2006139496.tif 000002
【特許請求の範囲】
【請求項１】
複数の命令流を並列に取り扱うマルチスレッド方式の演算処理装置であって、
前記命令流を構成するスレッドあるいはタスクの実行に使用されるレジスタと、
前記レジスタに記憶されていたコンテキストを格納するキャッシュ領域を備えたコンテキストキャッシュと、
前記レジスタと前記キャッシュ領域とを相互に接続するコンテキスト用接続手段と、を備え、
前記レジスタにコンテキストスイッチの要求が発生した場合、前記コンテキスト用接続手段は、前記コンテキストキャッシュに記憶されているコンテキストを前記レジスタに送り、前記レジスタに記憶されているコンテキストを前記コンテキストキャッシュのキャッシュ領域に送ることを特徴とする演算処理装置。
【請求項２】
前記コンテキスト用接続手段は、演算処理装置の動作の最小単位内に前記コンテキストキャッシュに記憶されているコンテキストを前記レジスタに送り、前記レジスタに記憶されているコンテキストを前記コンテキストキャッシュのキャッシュ領域に送ることを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記コンテキストキャッシュがキャッシュ領域を複数備え、複数のキャッシュ領域のうちの少なくとも１つを、前記レジスタに対する割り込み処理からの復帰時にコンテキストを記憶しない状態にすることを特徴とする請求項１または２に記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の命令流を並列に扱うことが可能なマルチスレッド方式の演算処理装置に関する。
【背景技術】
【０００２】
プロセッサには、一度に扱える命令流が１つのシングルスレッドプロセッサと、複数の命令流を同時に扱うことが可能なマルチスレッドプロセッサとがある。マルチスレッドプロセッサは、一度に複数のスレッドあるいはタスク（本明細書では以下、スレッドとする。）を同時に扱うためのハードウエア・リソースを備える。
このようなプロセッサでは、実行するスレッドの切り換えが起こることがある。このようなスレッドの切り換えに伴って、レジスタファイルにおける入れ替えが起こり、これをコンテキストスイッチいう。
【０００３】
コンテキストスイッチを行うため、従来のマルチスレッドのプロセッサには、コンテキストを退避させるコンテキストキャッシュを備えるものが多くある。このような従来技術としては、例えば、特許文献１に記載された発明がある。
特許文献１に記載された発明は、コンテキスト格納部と実行可能コンテキスト格納部とを備え、実行される演算に応じてレジスタファイルのコンテキストを入れ替え、レジスタファイル等のハードウェアが小型でありながらより多くの命令流を取り扱うことが可能なプロセッサを提供している。なお、特許文献１に記載された発明において、コンテキスト格納部はレジスタファイルから退避されたコンテキストを格納する構成である。また、実行可能コンテキスト格納部は、レジスタファイルに復帰可能なコンテキストを格納する構成である。
【特許文献１】特開２００３−２４１９７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記した従来技術では、レジスタファイルから退避されてきたコンテキストを格納する構成が複数あって、ハードウェア構成を充分小型化できるものとは言い難い。また、いったん退避されたコンテキストをレジスタファイルに復帰するにあたっては、コンテキストを実行可能コンテキスト格納部に移す必要がある。このため、コンテキストスイッチ時のコンテキストの待避、復帰に費やされる時間短縮にもより改善の余地がある。
【０００５】
本発明は、このような点に鑑みてなされたものであり、コンテキストスイッチに使用されるコンテキスト格納部のハードウェア構成がより小型化でき、しかもコンテキストスイッチがより短時間でできる演算処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
以上の課題を解決するため、請求項１に記載の演算処理装置は、複数の命令流を並列に取り扱うマルチスレッド方式の演算処理装置であって、前記命令流を構成するスレッドあるいはタスクの実行に使用されるレジスタと、前記レジスタに記憶されていたコンテキストを格納するキャッシュ領域を備えたコンテキストキャッシュと、前記レジスタと前記キャッシュ領域とを相互に接続するコンテキスト用接続手段と、を備え、前記レジスタにコンテキストスイッチの要求が発生した場合、前記コンテキスト用接続手段は、前記コンテキストキャッシュに記憶されているコンテキストを前記レジスタに送り、前記レジスタに記憶されているコンテキストを前記コンテキストキャッシュのキャッシュ領域に送ることを特徴とする。
【０００７】
このような発明によれば、命令流を構成するスレッドあるいはタスクに対してコンテキストスイッチの要求が発生した場合、コンテキスト用接続手段が、コンテキストキャッシュに記憶されているコンテキストをレジスタに送り、レジスタに記憶されているコンテキストをレジスタに記憶されていたコンテキストを格納するコンテキストキャッシュのキャッシュ領域に送ることができる。このため、１回のコンテキスト要求という命令でコンテキストスイッチが可能になり、コンテキストスイッチにかかる時間を短縮することができる。また、いったん退避されたコンテキストをレジスタファイルに復帰するにあたって必要なコンテキストを退避させておく構成を最小限にし、コンテキストスイッチに使用されるコンテキスト格納部のハードウェア構成がより小型化できる演算処理装置を提供することができる。
【０００８】
請求項２に記載の演算処理装置は、前記コンテキスト用接続手段が、演算処理装置の動作の最小単位内に前記コンテキストキャッシュに記憶されているコンテキストを前記レジスタに送り、前記レジスタに記憶されているコンテキストを前記コンテキストキャッシュのキャッシュ領域に送ることを特徴とする。
このような発明によれば、プロセッサが１クロックの動作でコンテキストスイッチを実行でき、コンテキストスイッチにかかる時間をより短縮することができる。
【０００９】
請求項３に記載の演算処理装置は、前記コンテキストキャッシュがキャッシュ領域を複数備え、複数のキャッシュ領域のうちの少なくとも１つを、割り込み処理からの復帰時にコンテキストを記憶しない状態にすることを特徴とする。
このような発明によれば、割り込み処理からの復帰時にコンテキストを記憶しない状態になるキャッシュ領域を設けることによって本発明の演算処理装置を割り込み処理にも対応させることができる。
【発明を実施するための最良の形態】
【００１０】
以下、図を参照して本発明に係る演算処理装置の一実施の形態を説明する。なお、本実施形態では、以降、この演算処理装置をプロセッサと記すものとする。
図１は、本発明の一実施形態のプロセッサを説明するための図である。図１に示したプロセッサは、複数の命令流を並列に取り扱うマルチスレッド方式のプロセッサであって、プロセッサ本体１と、このプロセッサ本体１がアクセス可能な外部メモリ１１９及びメインメモリ１１７を備えている。また、プロセッサ本体１は、命令流を構成するスレッドあるいはタスクの実行に使用されるレジスタと、レジスタに記憶されていたコンテキストを格納するキャッシュ領域を備えたコンテキストキャッシュとを備えている。
【００１１】
本実施形態のプロセッサのレジスタは、命令列（スレッド）の実行に用いるレジスタ群１１３であり、複数の独立したレジスタファイルの階層構造でなる。各レジスタファイルは、各々汎用レジスタ部と、特殊レジスタ部とで構成されている。レジスタファイルの各々において、汎用レジスタ部は演算実行部１１５によって実行された演算に係るデータを格納するレジスタである。また、特殊レジスタ群は、プログラムの処理の段階や状況を示すプログラムカウンタやステイタスレジスタを含んでいる。
【００１２】
また、図１に示したコンテキスト処理装置は、実行中のスレッドのコンテキストを退避するためのコンテキストキャッシュ１０５を備えている。コンテキストキャッシュ１０５は、後述するように、コンテキストを記憶するキャッシュ領域を複数備えている。また、各キャッシュ領域は、複数のレジスタで構成されている。また、図１のコンテキスト処理装置は、プロセッサ本体１と外部メモリ１１９との間でのロード／ストア命令によるアクセスに用いるバス１２１を備えている。
【００１３】
さらに、プロセッサ本体１は、メインメモリ１１７に格納されている命令の読み出し（フェッチ）を行い後段の装置に転送するフェッチ部１０１、フェッチ部１０１でフェッチされた命令を解読するデコード部１０３、レジスタ群１１３を使い、デコードされた命令にしたがって演算を実行する演算実行部１１５、演算結果をレジスタ群１１３や外部メモリ１１９に書き戻すライトバック部１０７、以上の構成を統括的に制御する制御部１０９を備えている。
【００１４】
なお、本実施形態のコンテキストとは、スレッドの処理が中断された際にレジスタ群１１３に記憶されている情報、即ち汎用レジスタ部に記憶されている情報（演算中のデータ等）および特殊レジスタ部に記憶されている情報（プログラムカウンタ、ステイタスレジスタの内容等）をいうものとする。このようなコンテキストによれば、スレッドを中断時の状態から再開することができる。
【００１５】
図２は、レジスタ群１１３と、コンテキストキャッシュ１０５とをより詳細に説明するための図である。図２では、レジスタ群１１３を構成するレジスタファイルをレジスタファイルｒｆ0、ｒｆ1、ｒｆ2、ｒｆ3とする。本実施形態のプロセッサ本体１は、このような複数のレジスタファイルｒｆ0〜ｒｆ3を備え、このレジスタファイルｒｆ0〜ｒｆ3をタスクあるいはスレッドそれぞれの実行に用いている。そして、レジスタファイルｒｆ0〜ｒｆ3に記憶されたコンテキストをコンテキストキャッシュ１０５に退避しつつ、複数のタスクあるいはスレッドを並列的に処理している。
【００１６】
各スレッドは、レジスタファイルｒｆ0〜ｒｆ3を使用して演算命令を実行する。レジスタファイルｒｆ0〜ｒｆ3を使用するスレッドが切り替わることに伴ってレジスタファイルに現在記憶されているコンテキストを退避させ、代わりのコンテキストを読み込む動作を、本明細書ではコンテキストスイッチという。
また、本実施形態のプロセッサでは、コンテキストスイッチの処理の他、割り込み処理が行われる。割り込み処理は、実行中の命令を中断するという点でコンテキストスイッチをも含む場合もあるが、本実施形態では、コンテキストスイッチがコンテキストを退避させると共に代わりのコンテキストをレジスタファイルに読み込むのに対し、コンテキストを退避させるのみである点で両者を区別するものとする。
【００１７】
また、コンテキストキャッシュ１０５は、図２に示すように、複数のキャッシュ領域を有している。図中では各キャッシュ領域に１０５ａ〜１０５ｄの符号を付して示す。本実施形態のコンテキストキャッシュのキャッシュ領域のうち、キャッシュ領域１０５ｄは空き領域であって、割り込み処理専用に用いられる。割り込み処理専用のキャッシュ領域１０５ｄは、割り込み処理からの復帰時にコンテキストを記憶しない状態にされる。
【００１８】
また、本実施形態のプロセッサは、レジスタファイルｒｆ0〜ｒｆ3とコンテキストキャッシュの各キャッシュ領域とを相互に接続するコンテキスト用バス２００を備えている。コンテキスト用バス２００は、レジスタファイルｒｆ0〜ｒｆ3のいずれをもキャッシュ領域１０５ａ〜１０５ｄのいずれにもダイレクトに接続し、コンテキストを送ることができる。
【００１９】
このため、コンテキスト用バス２００は、レジスタファイルｒｆ0〜ｒｆ3を用いて実行されているスレッドのいずれかにコンテキストスイッチの要求が発生した場合、コンテキストキャッシュ１０５のキャッシュ領域に記憶されているコンテキストをレジスタｒｆ0〜ｒｆ3に送り、レジスタｒｆ0〜ｒｆ3に記憶されているコンテキストをコンテキストキャッシュ１０５のキャッシュ領域に送り、退避させることができる。
【００２０】
また、本実施形態のコンテキスト用バス２００は、プロセッサの動作の最小単位である１サイクルでコンテキストキャッシュ１０５に記憶されているコンテキストをレジスタファイルｒｆ0〜ｒｆ3のいずれかに送り、レジスタファイルｒｆ0〜ｒｆ3のいずれかに記憶されているコンテキストをコンテキストキャッシュ１０５のキャッシュ領域に送る。このような動作を実現するためのコンテキスト用バスの一例を次に説明する。
【００２１】
図３は、コンテキスト用バスの具体例を説明するための図である。コンテキストキャッシュ１０５に対してＯＳスレッドがコンテキストスイッチの要求をした場合、コンテキストキャッシュ１０５には、コンテキストスイッチの対象となるスレッドを特定するＩＤ情報（スレッドＩＤ）が送られてくる。
一方、コンテキストキャッシュ１０５にあっては、キャッシュ領域１０５ａ〜１０５ｄのうち、割り込み専用としたキャッシュ領域１０５ｄを除くキャッシュ領域１０５ａ〜１０５ｃの全てにコンテキストが記憶されている。コンテキストの各々には、コンテキストにも互いを識別するためのスレッドＩＤが付されている。なお、各コンテキストに付されたスレッドＩＤによれば、各コンテキストが得られた命令を実行したスレッドを特定することができる。
【００２２】
コンテキストキャッシュ１０５が備えるスレッドＩＤ比較・制御回路３０１は、コンテキストスイッチを実行したスレッドから送られてきたスレッドＩＤと各コンテキストに付されたスレッドＩＤとを比較する。そして、送られてきたスレッドＩＤと一致するスレッドＩＤが付されたコンテキストを、コンテキスト用バス２００によってレジスタ群１１３に送り出す。なお、送り出されたコンテキストの格納先となるレジスタファイルは、コンテキストスイッチを実行したスレッドが用いるレジスタファイルである。コンテキストは、コンテキストスイッチを実行したスレッドが用いるレジスタファイルに読み込まれ、記憶される。
【００２３】
また、レジスタ群１１３にあっては、同時にコンテキストスイッチの対象となるレジスタファイルがコンテキスト用バス２００によってコンテキストキャッシュに送り出される。そして、コンテキストスイッチの対象となったコンテキストが格納されていたキャッシュ領域に読み込まれ、格納される。本実施形態では、以上の処理をプロセッサの動作の最小単位である１サイクルで実行するものとする。
【００２４】
図４ないし図９は、本実施形態のプロセッサの動作を説明するための図である。図４は、本実施形態のプロセッサのコンテキストスイッチ及び割り込み処理の順序を示す図であり、図５〜図９は、図４に示した手順にしたがってプロセッサが動作した場合のコンテキストの移動を示した図である。なお、図４中に、各手順が実行されたときのコンテキストの状態を示す図の番号を記す。
【００２５】
また、図４に記したスレッド０とスレッド4は、レジスタファイルｒｆ0を使用する。スレッド１は、レジスタファイルｒｆ1を使用し、スレッド２とスレッド５はレジスタファイルｒｆ2を使用する。スレッド３はレジスタファイルｒｆ3を使用するが、このスレッド3を実行するハードウェアでは、割り込み処理も実行する。
本実施形態では、プロセッサを初期化する処理において、予めレジスタファイルｒｆ0〜レジスタファイルｒｆ3のいずれかを用いて、実行され得るスレッドのコンテキストをコンテキストキャッシュ１０５のキャッシュ領域１０５ｄを除くキャッシュ領域に保持させておく。このような状態を、図５に示す。なお、図５に示した例では、レジスタファイルｒｆ0〜レジスタファイルｒｆ3にもコンテキストが記憶されている。このコンテキストは、初期化の後でスレッドを実行した結果生じた演算の結果である。
【００２６】
なお、プロセッサの初期化にあたってレジスタファイルｒｆ0〜レジスタファイルｒｆ3のいずれかを用いて、実行され得るスレッドのコンテキストをコンテキストキャッシュ１０５に退避させる処理は、ＯＳスレッドの命令によって行われる。このような命令を、本実施形態では、退避命令というものとする。
次に、スレッド０は、コンテキストスイッチを実行する。この際、図６に示すように、レジスタファイルｒｆ0にあったコンテキストがキャッシュ領域１０５ｃに退避され、代わってキャッシュ領域１０５ｃにあったスレッド４のコンテキストがレジスタファイルｒｆ0に１サイクルで読み込まれる。
【００２７】
次に、スレッド２が、コンテキストスイッチを実行する。この際、図７に示すように、レジスタファイルｒｆ2にあったコンテキストがキャッシュ領域１０５ａに退避され、代わってキャッシュ領域１０５ａにあったスレッド５のコンテキストがレジスタファイルｒｆ2に１サイクルで読み込まれる。
次に、スレッド３の実行中に外部割り込みが発生し、スレッド３の実行を中断する。この際、図８に示すように、レジスタファイルｒｆ3にあったコンテキストがキャッシュ領域１０５ｄに１サイクルで退避される。レジスタファイルｒｆ3を用いて、割り込み処理が実行される。処理が終了すると、図９に示すように、キャッシュ領域１０５ｄに退避されていたスレッド３のコンテキストがレジスタファイルｒｆ3にロードされる。割り込み処理からの復帰後、キャッシュ領域１０５ｄはコンテキストを格納しない空き領域となって次の割り込み処理に備える。
【００２８】
以上述べた本実施形態のプロセッサによれば、１回のコンテキスト要求という命令でコンテキストスイッチが可能になり、コンテキストスイッチにかかる時間を短縮することができる。さらに、コンテキストスイッチをプロセッサの１クロックで実行することができるので、コンテキストスイッチにかかる時間を最小の動作時間にすることができる。
また、いったん退避されたコンテキストをレジスタファイルに復帰するにあたって必要なコンテキストを退避させておく構成を最小限にし、コンテキストスイッチに使用されるコンテキスト格納部のハードウェア構成がより小型化できる演算処理装置を提供することができる。
【図面の簡単な説明】
【００２９】
【図１】本発明の一実施形態のプロセッサを説明するための図である。
【図２】図１に示したレジスタ群とコンテキストキャッシュとをより詳細に説明するための図である。
【図３】図２に示したコンテキスト用バスの具体例を説明するための図である。
【図４】本発明の一実施形態のプロセッサのコンテキストスイッチ及び割り込み処理の順序を示す図である。
【図５】図４に示した手順にしたがってプロセッサが動作した場合のコンテキストの移動を示した図のうち初期の状態を示す図である。
【図６】４に示した手順にしたがってプロセッサが動作した場合のコンテキストの移動を示した図のうちコンテキストスイッチがなされた状態を示す図である。
【図７】４に示した手順にしたがってプロセッサが動作した場合のコンテキストの移動を示した図のうちコンテキストスイッチがなされた状態を示す他の図である。
【図８】４に示した手順にしたがってプロセッサが動作した場合のコンテキストの移動を示した図のうち割り込み処理がなされた状態を示す図である。
【図９】図８に示した割り込み処理の状態から処理が復帰した状態を示す図である。
【符号の説明】
【００３０】
１  プロセッサ本体、１０１  フェッチ部、１０３  デコード部 １０５  コンテキストキャッシュ、１０５ａ〜１０５ｄ  キャッシュ領域 １０７  ライトバック部、１０９  制御部、１１３  レジスタ群 １１５  演算実行部、１１７  メインメモリ、１１９  外部メモリ １２１  バス、２００  コンテキスト用バス  ３０１  比較・制御回路
【図１】
2006139496.tif 000003
【図２】
2006139496.tif 000004
【図３】
2006139496.tif 000005
【図４】
2006139496.tif 000006
【図５】
2006139496.tif 000007
【図６】
2006139496.tif 000008
【図７】
2006139496.tif 000009
【図８】
2006139496.tif 000010
【図９】
2006139496.tif 000011