(57)【要約】【課題】  コンテキストスイッチがより高速に行えて、しかもハードウェア構成を追加する必要がないコンテキスト処理装置を提供する。【解決手段】  命令の実行に伴うコンテキストを記憶するためのレジスタ群を備えるプロセッサ１と、このプロセッサ１がアクセス可能な外部メモリ１１９とを備えるコンテキスト処理装置に対し、レジスタによって構成され、コンテキストを退避するためのコンテキストキャッシュ１０５と、プロセッサ１による外部メモリ１１９へのアクセスを介さずに、コンテキストキャッシュ１０５と外部メモリ１１９との間でデータを授受させるバス１２１と、を設ける。【選択図】  図１
2006099335.tif 000002
【特許請求の範囲】
【請求項１】
命令の実行に伴うコンテキストを記憶するためのレジスタ群を備えるプロセッサと、該プロセッサがアクセス可能なメモリとを備えるコンテキスト処理装置であって、
レジスタによって構成され、前記コンテキストを退避するためのコンテキストキャッシュ手段と、
前記プロセッサによる前記メモリへのアクセスを介さずに、前記コンテキストキャッシュ手段と前記メモリとの間でデータを授受させるメモリアクセス手段と、
を備えることを特徴とするコンテキスト処理装置。
【請求項２】
前記コンテキストキャッシュ手段は、前記コンテキストを記憶するための複数の記憶領域を備え、新たな前記コンテキストを記憶する際に、該複数の記憶領域において記憶している前記コンテキストをシフトし、該新たなコンテキストを先頭の前記記憶領域に記憶することを特徴とする請求項１記載のコンテキスト処理装置。
【請求項３】
前記コンテキストキャッシュ手段は、新たな前記コンテキストを記憶する場合に、前記複数の記憶領域における末尾の記憶領域に記憶されているコンテキストを、前記メモリアクセス手段によって前記メモリにストアすることを特徴とする請求項２記載のコンテキスト処理装置。
【請求項４】
前記コンテキストキャッシュ手段は、前記プロセッサにおいて前記記憶領域のいずれかに記憶されているコンテキストが復元される場合、該記憶領域に記憶されているコンテキストを前記レジスタ群に出力することを特徴とする請求項２または３記載のコンテキスト処理装置。
【請求項５】
前記プロセッサは、タスクあるいはスレッドそれぞれの処理に用いられる前記レジスタ群を複数備え、該レジスタ群に記憶されたコンテキストを前記コンテキストキャッシュ手段に退避しつつ、複数の前記タスクあるいはスレッドを並列的に処理し、
前記コンテキストキャッシュ手段は、退避の対象となる一つの前記レジスタ群に記憶されたコンテキストを、前記記憶領域の一つに記憶することを特徴とする請求項２から４のいずれか１項に記載のコンテキスト処理装置。
【請求項６】
前記コンテキストキャッシュ手段は、前記プロセッサにおいて実行が予測されるタスクあるいはスレッドに関するコンテキストを、前記メモリアクセス手段を介して前記メモリからロードすることを特徴とする請求項１から５のいずれか１項に記載のコンテキスト処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実行中のプログラムの状態を表すコンテキストを処理するコンテキスト処理装置に関する。
【背景技術】
【０００２】
現在、１つのアプリケーションソフトが処理をスレッドと呼ばれる単位に分割し、並行して実行する方式がある。このような処理の方式は、いわゆるマルチスレッドと呼ばれている。
各スレッドは、多くの場合、記憶容量が小さく、高速なアクセスが可能なレジスタファイルを用いて実行される。このようなマルチスレッド方式のプロセッサにおいて、あるレジスタファイルを用いて実行されているスレッドを、別のスレッドに切り替えることがある。このような場合、レジスタファイルに記憶されているデータ（コンテキスト）をいったん退避し、新たなスレッドに関するデータ（コンテキスト）を、そのレジスタファイルに読み込む必要がある。このような処理は、コンテキストスイッチと呼ばれている。
【０００３】
コンテキストスイッチについての先行技術としては、例えば、特許文献１、特許文献２がある。特許文献１は、プロセッサにレジスタを設け、このレジスタで命令を実行する。そして、コンテキストスイッチの必要が生じた場合、コンテキストをコンテキスト格納部に退避させている。また、特許文献２には、コンテキスト情報を格納するレジスタを複数のコンテキストレジスタバンクで構成することが記載されている。
【特許文献１】特開２００３−２４１９７７
【特許文献２】特開平８−１７１４９４
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、上記したコンテキストをキャッシュしておくコンテキスト格納部には、一般的に比較的容量が小さい記憶装置が用いられる。しかしながら、上記した特許文献１は、コンテキスト格納部が外部メモリにコンテキストを出力する際、プロセッサによるストア命令が必要となる。このため、コンテキスト格納部において格納されていながら復元の要求がなされないコンテキストを外部のメモリに戻す処理が煩雑になるという不具合を生じる。
【０００５】
また、特許文献２では、コンテキストの格納にあたって、複数のコンテキストバンクのいずれかを指定することが必要になる。命令長が短いプロセッサや、とりわけ固定命令長のプロセッサの場合、コンテキストバンクを指定する情報を命令に含めることが困難であるという不具合がある。
さらに、コンテキストバンクを指定してコンテキストを格納する特許文献２は、指定のための回路等が必要になる。このため、特許文献２を適用した装置は、ハードウェア構成が大規模化する可能性がある。
【０００６】
本発明は、上記した点に鑑みてなされたものであり、コンテキストスイッチがより高速、かつ効率的に実行でき、かつハードウェア構成を追加する必要がないコンテキスト処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
以上の課題を解決するため、本発明は、命令の実行に伴うコンテキストを記憶するためのレジスタ群を備えるプロセッサと、該プロセッサがアクセス可能なメモリとを備えるコンテキスト処理装置であって、レジスタによって構成され、前記コンテキストを退避するためのコンテキストキャッシュ手段と、前記プロセッサによる前記メモリへのアクセスを介さずに、前記コンテキストキャッシュ手段と前記メモリとの間でデータを授受させるメモリアクセス手段と、を備えることを特徴とする。
【０００８】
このような発明によれば、コンテキストスイッチが起こったとき、コンテキストキャッシュ手段とメモリとの間でデータ（コンテキスト）を直接授受することができる。このため、コンテキストスイッチを高速、かつ効率的に実行することができるコンテキスト処理装置を提供することができる。
また、本発明のコンテキスト処理装置は、前記コンテキストキャッシュ手段が、前記コンテキストを記憶するための複数の記憶領域を備え、新たな前記コンテキストを記憶する際に、該複数の記憶領域において記憶している前記コンテキストをシフトし、該新たなコンテキストを先頭の前記記憶領域に記憶することを特徴とする。
【０００９】
このような発明によれば、新たなコンテキストを記憶する際、コンテキストの記憶領域を指定する処理を省くことができる。このため、コンテキストスイッチを高速、かつ効率的に実行することができるコンテキスト処理装置を提供することができる。
また、本発明のコンテキスト処理装置は、前記コンテキストキャッシュ手段が、新たな前記コンテキストを記憶する場合に、前記複数の記憶領域における末尾の記憶領域に記憶されているコンテキストを、前記メモリアクセス手段によって前記メモリにストアすることを特徴とする。
【００１０】
このような発明によれば、復元が要請される可能性の低いコンテキストを直接メモリに退避させることが可能になる。このため、コンテキストキャッシュ手段の使用効率が高まり、しかもコンテキスト退避の処理を高速に行うことができる。
また、本発明のコンテキスト処理装置は、前記コンテキストキャッシュ手段が、前記プロセッサにおいて前記記憶領域のいずれかに記憶されているコンテキストが復元される場合、該記憶領域に記憶されているコンテキストを前記レジスタ群に出力することを特徴とする。
【００１１】
このような発明によれば、コンテキストをコンテキストキャッシュ手段にロードしておくことによっていったんメモリに退避されたコンテキストを簡易に復元することができる。
また、本発明のコンテキスト処理装置は、前記プロセッサが、タスクあるいはスレッドそれぞれの処理に用いられる前記レジスタ群を複数備え、該レジスタ群に記憶されたコンテキストを前記コンテキストキャッシュ手段に退避しつつ、複数の前記タスクあるいはスレッドを並列的に処理し、前記コンテキストキャッシュ手段は、退避の対象となる一つの前記レジスタ群に記憶されたコンテキストを、前記記憶領域の一つに記憶することを特徴とする。
【００１２】
このような発明によれば、いわゆるマルチスレッド方式のプロセッサに本発明を適用することができる。マルチスレッド方式は、コンテキストスイッチが起こる可能性の高い方式である。このため、このような構成によれば、本発明よる効果をいっそう高めることができる。
また、本発明のコンテキスト処理装置は、前記コンテキストキャッシュ手段が、前記プロセッサにおいて実行が予測されるタスクあるいはスレッドに関するコンテキストを、前記メモリアクセス手段を介して前記メモリからロードすることを特徴とする。
【００１３】
このような発明によれば、本発明の構成を先読み命令に適用し、本発明よる効果をいっそう高めることができる。
【発明を実施するための最良の形態】
【００１４】
以下、図を参照して本発明に係るコンテキスト処理装置、コンテキスト処理方法の実施の形態を説明する。
図１は、本発明の一実施形態のコンテキスト処理装置を説明するための図である。図１に示したコンテキスト処理装置は、プロセッサ１と、このプロセッサ１がアクセス可能な外部メモリ１１９及びメインメモリ１１７を備えている。また、プロセッサ１は、命令（スレッド）の実行に用いるレジスタ群１１３を備えている。
【００１５】
図２（ａ）、（ｂ）は、レジスタ群１１３をより詳細に説明するための図である。レジスタ群１１３は、図示するように、複数の独立したレジスタファイルｒｆ0、ｒｆ1、ｒｆ2、ｒｆ3の階層構造でなる（図２（ａ））。また、図２（ｂ）に示すように、レジスタファイルｒｆ0〜ｒｆ3は、各々汎用レジスタ部１１３ａと、特殊レジスタ部１１３ｂとで構成されている。
【００１６】
レジスタファイルｒｆ0〜ｒｆ3の各々において、汎用レジスタ部１１３ａは、演算実行部１１５によって実行された演算に係るデータを格納するレジスタである。また、特殊レジスタ群１１３ｂは、プログラムの処理の段階や状況を示すプログラムカウンタやステイタスレジスタを含んでいる。
また、図１に示したコンテキスト処理装置は、実行中のスレッドのコンテキストを退避するためのコンテキストキャッシュ１０５を備えている。コンテキストキャッシュ１０５は、後述するように、複数のキャッシュ領域を備え、各キャッシュ領域は、複数のレジスタで構成されている。さらに、図１のコンテキスト処理装置は、プロセッサ１と外部メモリ１１９との間でのロード／ストア命令によるアクセスに加えて、コンテキストキャッシュ１０５と外部メモリ１１９との間でコンテキストデータを授受させるバス１２１を備えている。
【００１７】
さらに、プロセッサ１は、メインメモリ１１７に格納されている命令の読み出し（フェッチ）を行い後段の装置に転送するフェッチ部１０１、フェッチ部１０１でフェッチされた命令を解読するデコード部１０３、レジスタ群１１３を使い、デコードされた命令にしたがって演算を実行する演算実行部１１５、演算結果をレジスタ群１１３や外部メモリ１１９に書き戻すライトバック部１０７、以上の構成を統括的に制御する制御部１０９を備えている。
【００１８】
レジスタ群１１３を用いて実行されているスレッドを切り換える処理は、一般的にコンテキストスイッチと呼ばれている。
なお、本実施形態のコンテキストとは、スレッドの処理が中断された際にレジスタ群１１３に記憶されている情報、即ち汎用レジスタ部１１３ａに記憶されている情報（演算中のデータ等）および特殊レジスタ部１１３ｂに記憶されている情報（プログラムカウンタ、ステイタスレジスタの内容等）をいうものとする。このようなコンテキストによれば、スレッドを中断時の状態から再開することができる。
【００１９】
本実施形態のプロセッサ１は、複数のレジスタファイルで構成され、このレジスタファイルをタスクあるいはスレッドそれぞれの実行に用いている。そして、レジスタファイルに記憶されたコンテキストをコンテキストキャッシュ１０５に退避しつつ、複数のタスクあるいはスレッドを並列的に処理している。
図３は、本実施形態のコンテキスト処理装置のうち、レジスタ群１１３と、コンテキストキャッシュ１０５とをより詳細に示した図である。レジスタ群１１３は、複数のレジスタファイルでなる。レジスタ群１１３を構成する複数のレジスタファイルの各々を、レジスタファイルｒｆ０、レジスタファイルｒｆ１、レジスタファイルｒｆ２、レジスタファイルｒｆ３として特定する。
【００２０】
一方、コンテキストキャッシュ１０５は、複数のキャッシュ領域２１１、２１３、２１５、２１７を備えている。このようなコンテキストキャッシュ１０５は、コンテキスト退避の対象となる一つのレジスタファイルに記憶されたコンテキストを、複数のキャッシュ領域の一つに記憶する。
また、コンテキストキャッシュ１０５は、コンテキストの記憶の際、複数のキャッシュ領域において記憶しているコンテキストを矢線Ａで示す方向にシフトし、新たなコンテキストを先頭のキャッシュ領域２１１に記憶する。また、新たなコンテキストを記憶する場合、複数のキャッシュ領域における末尾のキャッシュ領域２１７に記憶されているコンテキストを、バス１２１によって外部メモリ１１９にストアする。キャッシュ領域２１７の外部メモリ１１９へのストアは、ＬＲＵ（Least Recently Used）にしたがって行われる。
【００２１】
さらに、コンテキストキャッシュ１０５は、プロセッサ１において実行が予測されるスレッドに関するコンテキストを、バス１２１を介して外部メモリ１１９からロードする。ロードされたコンテキストは、キャッシュ領域のいずれかに記憶され、記憶されているコンテキストが復元される場合、記憶されているコンテキストをいずれかのレジスタファイルに出力する。
【００２２】
以上の構成により、本実施形態のコンテキスト処理装置は、コンテキストの格納位置を指定するための構成がなく、コンテキスト処理装置をより小型、簡易化することに有利である。
さらに、プロセッサ１は、バス１２１とコンテキストを含むデータを授受することに使用されるロード・ストアユニット２０５ａ、２０５ｂを備えている。図３において、ロード・ストアユニット２０５ｂは、コンテキストキャッシュ１０５が外部メモリ１１９とコンテキストを授受することに使用される。なお、ロード・ストアユニット２０５ｂが備えるアドレスインクリメンタ２０７は、コンテキストキャッシュ１０５がコンテキストを外部メモリ１１９に送出する際にメモリのアドレスを指定することに使用される。
【００２３】
また、ロード・ストアユニット２０５ａは、プロセッサ１が外部メモリ１１９とコンテキスト以外のデータを授受することに使用される。
以上述べた構成の動作を、図４ないし図１１を用いて説明する。
図４は、図３に示した構成の動作の手順を示す図であり、図５から図１１は、図４に示した過程におけるコンテキスト処理装置の状態を示す図である。なお、この説明では、ＯＳスレッドが、他のアプリケーションスレッドに対し、コンテキストスイッチを指示したものとする。また、レジスタ群１１３を構成するレジスタファイルｒｆ０〜ｒｆ３の網掛パターンの相違は、各レジスタファイルを用いて実行されている各スレッドの相違を示す。
【００２４】
図５は、割り込みの処理がなされる前のコンテキスト処理装置の状態を示している。このとき、外部メモリ１１９の領域１１９ａにはコンテキストｃ１が記憶されている。また、コンテキストキャッシュ１０５には、コンテキストは格納されていない。
このような状態で、ＯＳスレッドによってコンテキストｃ１の先読み命令が実行されると（Ｓ１）、図６に示すように、外部メモリ１１９にあったコンテキストｃ１が、ロード・ストアユニット２０５ｂを介してコンテキストキャッシュ１０５のキャッシュ領域２１１に読み込まれる。また、実行されているＯＳスレッドが、他のアプリケーションスレッドを切り換えるコンテキストスイッチ命令を実行すると（Ｓ２）、ＯＳスレッドの実行を管理している仕組みから、アプリケーションスレッドの実行を管理している仕組みに対して割り込みが発生する。
【００２５】
割り込みの発生により、アプリケーションスレッド（本実施形態では、レジスタファイルｒｆ１を用いて実行されている処理）のプログラムカウンタ（ＰＣ）やプロセッサ状態レジスタ（ＰＳＲ）の内容が自動的に退避される（Ｓ３）。また、割り込み処理内で退避命令が実行され（Ｓ４）、レジスタファイルｒｆ１を用いて実行されているスレッドのコンテキストがコンテキストキャッシュ１０５に退避される。
【００２６】
図７は、コンテキストキャッシュ１０５のキャッシュ領域２１１に格納されていたコンテキストｃ１が、次のサイクルで後段のキャッシュ領域２１３にシフトした状態を示す。また、図８は、レジスタファイルｒｆ１を用いて実行されていたスレッドのコンテキストｃ２が次のサイクルでコンテキストキャッシュ１０５のキャッシュ領域２１１に格納された状態を示している。
【００２７】
次に、割り込み処理内でコンテキストｃ１の復元命令（レジスタファイルへの読み込み命令）が実行される（Ｓ５）。復元命令により、コンテキストｃ１は、図９に示すように、レジスタファイルｒｆ１に復元される。
以上の動作により、外部メモリ１１９にあったコンテキストｃ１は、レジスタファイルｒｆ１に復帰する。この後、コンテキストスイッチ割り込みの処理から処理を復帰させる復帰命令が実行される（Ｓ６）。以上の処理により、レジスタファイルｒｆ１における処理は、コンテキストｃ１が示す状態から継続して実行可能になる。
【００２８】
また、図９のコンテキストキャッシュ１０５のキャッシュ領域２１１に格納されたコンテキストｃ２は、コンテキストキャッシュ１０５において、新規にコンテキストが退避あるいは先読みされるごとに順次矢線Ａの方向にシフトする。そして、図１０に示すように、キャッシュ領域２１７に達すると、図１１に示すように、次のサイクルで自動的に外部メモリ１１９に退避される。なお、本実施形態では、この退避の際、外部メモリ１１９に対して予め設定されている退避先ベースアドレスをアドレスインクリメンタ２０７でアドレスをインクリメントしている。
【００２９】
以上述べた本実施形態のコンテキスト処理装置は、コンテキストキャッシュと外部メモリとを接続し、制御部によらずコンテキストを外部メモリとの間で授受することができる。このため、コンテキストキャッシュに格納されたコンテキストを外部メモリに速やかに退避し、また、いったん退避されたコンテキストを外部メモリからレジスタファイルに復帰する処理を効率的に行うことができる。
【００３０】
また、本実施形態は、コンテキストキャッシュをシフトレジスタで構成し，常にシフトレジスタの先頭へコンテキストを退避させるようにしたため、コンテキストを格納するにあたって格納アドレスの指定が不要になる。このため、コンテキスト格納の処理が簡易になり、また、アドレス指定のための構成が不要になって回路規模を小型化することに有利となる。
【００３１】
また、格納された後に順次コンテキストがシフトされ、自動的に外部メモリに送出される。このため、自然にＬＲＵアルゴリズムにしたがって、再び実行に用いられる可能性が低いコンテキストを外部メモリへ退避できる。このため、本実施形態は、コンテキストキャッシュを効率的に使用することができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の一実施形態のコンテキスト処理装置を説明するための図である。
【図２】図１に示したレジスタ群の構成をより詳細に説明するための図である。
【図３】図１に示したコンテキスト処理装置の本実施形態特有の構成に係る部分を示した図である。
【図４】本発明の一実施形態のコンテキスト処理装置でなされるコンテキスト処理方法を説明するためのタイミングチャートである。
【図５】図３に示した構成の動作を説明するための図であって、コンテキストスイッチがなされる前のコンテキスト処理装置の状態を示している。
【図６】図３に示した構成の動作を説明するための他の図であって、外部メモリにあったコンテキストがコンテキストキャッシュに読み込まれた状態を示す図である
【図７】図３に示した構成の動作を説明するための他の図であって、コンテキストキャッシュに格納されていたコンテキストが後段のキャッシュ領域にシフトした状態を示す図である。
【図８】図３に示した構成の動作を説明するための他の図であって、レジスタファイルで実行されていた処理のコンテキストがコンテキストキャッシュに格納された状態を示す図である。
【図９】図３に示した構成の動作を説明するための他の図であって、レジスタファイルにコンテキストが復元された状態を示す図である。
【図１０】図３に示した構成の動作を説明するための他の図であって、コンテキストキャッシュの最後尾にコンテキストが格納された状態を示す図である。
【図１１】図３に示した構成の動作を説明するための他の図であって、コンテキストキャッシュの最後尾に格納されたコンテキストが、外部メモリにストアされた状態を示す図である。
【符号の説明】
【００３３】
１  プロセッサ、１０１  フェッチ部、１０３  デコード部、
１０５  コンテキストキャッシュ、１０７  ライトバック部、１０９  制御部
１１３  レジスタ群１１３ａ  汎用レジスタ部、１１３ｂ  特殊レジスタ
１１５  演算実行部、１１７  メインメモリ、１１９  外部メモリ、１１９ａ  領域
１２１  バス、２０５ａ，２０５ｂ  ロード・ストアユニット
２０７  アドレスインクリメンタ、２１１，２１３，２１７  キャッシュ領域
【図１】
2006099335.tif 000003
【図２】
2006099335.tif 000004
【図３】
2006099335.tif 000005
【図４】
2006099335.tif 000006
【図５】
2006099335.tif 000007
【図６】
2006099335.tif 000008
【図７】
2006099335.tif 000009
【図８】
2006099335.tif 000010
【図９】
2006099335.tif 000011
【図１０】
2006099335.tif 000012
【図１１】
2006099335.tif 000013