プロセッサ装置のプログラムを切り替えながら実行する複数のプロセッサを有するプロセッサ装置およびマルチスレッドプロセッサ装置に関し、特にハードウェア資源を複数のプロセッサで共有するプロセッサ装置およびマルチスレッドプロセッサ装置に関する。
近年のデジタル技術、動画像及び音声の圧縮伸張技術の急速な進展に伴い、デジタルテレビ、デジタルビデオレコーダ(DVDレコーダ等)、携帯電話、及び映像音声機器(ビデオカメラ等)に搭載されるプロセッサに、さらなる高性能化が求められている。
例えば、高性能化を実現するプロセッサとしてマルチスレッドプロセッサが知られている(例えば、特許文献1参照)。このマルチスレッドプロセッサは、複数のスレッドを同時に実行することにより、処理効率を向上できる。また、マルチスレッドプロセッサは、複数のスレッドの実行において、資源の共有が可能となるので、複数のプロセッサを独立に設ける場合に比べて、プロセッサの面積効率を向上できる。
一方、このようなプロセッサでは、リアルタイム性が要求されない制御関連のホスト処理と、リアルタイム性が要求される動画像の圧縮及び伸張処理等のメディア処理とが行われる。
例えば、特許文献2記載の映像音声処理用集積回路は、ホスト処理を行うマイコンブロックと、メディア処理を行うメディア処理ブロックとをそれぞれ備える。
また、FPU(浮動小数点演算装置:Floating Point number processing Unit)のコンテキスト切り替えを必要最小限にする技術としてレイジー・コンテキスト・スイッチ(Lazy context switch)という技術がある。この方法によれば、実行コンテキストで、FPU命令を実行することが必要になった時までFPUコンテキストの退避と復帰を遅らせて行う。つまり、通常のプロセッサのコンテキストの退避および復帰とは非同期に、FPUのコンテキスト切り換えを行い、その機会を必要最小限に抑える。
FPUは多数のレジスタを有すること、時分割多重化されるプログラムにはFPUを使用しないプログラムも存在することから、上記方法は、FPUコンテキストの退避および復帰のオーバヘッドの低減を図っている。
特開2006−302261号公報
国際公開第2005/096168号
特開2003−271399号公報
特開2008−123045号公報
特開2004−246862号公報
しかしながら、マルチプロセッサにおいてFPU等のハードウェア資源を利用する場合には、次の問題がある。
プロセッサ毎にFPUを備えプロセッサ毎にレイジー・コンテキスト・スイッチを適用する場合には、回路規模が増大する。さらに、プロセッサ間でFPUの稼動率にばらつきが生じ、使用効率を向上できない。
本発明は、複数のプロセッサでFPU等のハードウェア資源を共有し、使用効率を向上させるプロセッサ装置およびマルチスレッドプロセッサ装置を提供することを目的とする。
上記の課題を解決するために本発明のプロセッサ装置は、複数のプログラムを切り替えながら実行する複数のプロセッサと、データを保持するレジスタを有し前記複数のプロセッサの命令実行を補完する1つ以上のハードウェア資源と、前記複数のプログラムのうち前記ハードウェア資源を利用する所定命令を含むプログラム毎に、前記ハードウェア資源内のレジスタデータのコピーである拡張コンテキストデータを記憶するメモリと、前記ハードウェア資源と前記メモリとの間で、拡張コンテキストデータの退避と復帰とを制御する制御部と、前記ハードウェア資源内に現在実行中のプログラムの拡張コンテキストデータが保持されている可能性があるか否かを判定する第1判定部と、前記ハードウェア資源内の拡張コンテキストデータが前記所定命令を実行しようとしたプロセッサに属するか否かを判定する第2判定部と、を備え、前記可能性があると前記第1判定部によって判定され、かつ、前記ハードウェア資源内の拡張コンテキストデータが、前記所定命令を実行しようとしたプロセッサに属すると前記第2判定部によって判定された場合に、前記制御部が拡張コンテキストデータの退避および復帰を行うことなく、前記ハードウェア資源は当該所定命令を実行する。
この構成によれば、各ハードウェア資源を複数のプロセッサで共有することができる。つまり、どのプロセッサでも各ハードウェア資源を使用することができる。それゆえ、ハードウェア資源の使用効率を向上させることができる。ハードウェア資源をプロセッサ毎に備える必要がないので、必要な処理性能に応じた個数の必要最小限のハードウェア資源を備えればよく、回路規模を削減または最適化することができる。
ここで、前記制御部は、前記第1判定部および前記第2判定部の判定結果に応じて、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータと同じプロセッサに属するコンテキストデータを復帰する第1転送部と、前記第1判定部および前記第2判定部の判定結果に応じて、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータとは異なるプロセッサに属する拡張コンテキストデータを復帰する第2転送部とを備えるようにしてもよい。
ここで、前記ハードウェア資源は前記複数のプロセッサが実行できない拡張命令を実行する拡張演算ユニットであり、前記所定の命令は前記拡張命令であってもよい。
この構成によれば、FPUやハードウェアアクセラレータ等の拡張演算ユニットを効率よく複数のプロセッサで共有することができ、拡張コンテキストデータの退避および復帰を最小限にすることができる。
ここで、前記第1判定部は、複数のプロセッサのそれぞれに設けられたデータ判定部を含み、各データ判定部は、当該データ判定部に対応するプロセッサがプログラム中の前記所定命令を実行しようとしたとき、当該データ判定部に対応するプロセッサで現在実行中のプログラムの拡張コンテキストデータが前記ハードウェア資源内に保持されている可能性があるか否かを判定し、前記第2判定部は、複数のプロセッサのそれぞれに設けられたプロセッサ判定部を含み、各プロセッサ判定部は、前記ハードウェア資源内の拡張コンテキストデータが前記所定命令を実行しようとしたプロセッサに属するか否かを判定するようにしてもよい。
この構成によれば、データ判定部およびプロセッサ判定部はプロセッサ毎に備えられるので、ハードウェア資源が現在実行中のプログラム(つまり所定命令を発行したプログラム)の拡張コンテキストデータを保持している場合には、他のプロセッサになんら影響を与えることなく、ハードウェア資源を使用することができる。
ここで、前記複数のプロセッサのそれぞれは、状態レジスタを有し、各状態レジスタのデータのコピーは、プログラム毎のコンテキストデータに含まれ、各状態レジスタは、前記ハードウェア資源毎に、現在実行中のプログラムの拡張コンテキストデータが当該ハードウェア資源内に保持されている可能性があるか否かを示す第1状態情報と、前記ハードウェア資源毎に当該ハードウェア資源内に保持されている拡張コンテキストデータに対応するプロセッサを示す第2状態情報とを保持し、前記各データ判定部は、対応するプロセッサがプログラム中の前記所定命令を実行しようとしたとき、前記第1状態情報が真か偽かを判定し、偽であると判定したとき第1の例外割込み信号を発生する第1判定回路を含み、前記各プロセッサ判定部は、対応する前記第1判定回路が偽であると判定したとき、対応するプロセッサと前記第2状態情報が示すプロセッサとが一致するか否かを判定し、偽であると判定したとき第2の例外割込み信号を発生する第2判定回路を含み、前記ハードウェア資源は、前記第2判定回路が一致すると判定したとき、拡張コンテキストデータの退避および復帰を待つことなく、当該所定命令に従って即座に動作するとしてもよい。
この構成によれば、データ判定部およびプロセッサ判定部はハードウェア(第1判定回路および第2判定回路)により構成されるので、ハードウェア資源が現在実行中のプログラム(つまり所定命令を発行したプログラム)の拡張コンテキストデータを保持している場合には、他のプロセッサになんら影響を与えることなく、かつ、高速にハードウェア資源を使用することができる。
ここで、前記第1転送部は、プロセッサ毎に設けられた退避復帰部を含み、各退避復帰部は、前記第1の例外割り込み信号が発生した場合に前記ハードウェア資源から前記メモリに拡張コンテキストデータを退避し、前記メモリから前記ハードウェア資源に前記所定命令を実行しようとしたプロセッサの拡張コンテキストデータを復帰し、前記複数のプロセッサは、第1のプロセッサと第2のプロセッサとを含み、前記第1のプロセッサは第1のオペレーティングシステムを実行することによって複数のプログラムを時分割多重で実行し、前記第2のプロセッサは第1のオペレーティングシステムとは異なる第2のオペレーティングシステムを実行することによって複数のプログラムを時分割多重で実行し、前記第1のプロセッサ内の前記退避復帰部は、前記第1のプロセッサ内の前記第1判定回路が前記第1の例外割込み信号を発生したとき、前記第1のオペレーティングシステムによって起動され、前記第2のプロセッサ内の前記退避復帰部は、前記第2のプロセッサ内の前記第1判定回路が前記第1の例外割込み信号を発生したとき、第2のオペレーティングシステムによって起動されるようにしてもよい。
この構成によれば、異なるオペレーティングシステム(以下OSと略す)を実行するプロセッサ間でハードウェア資源を共有することができる。プロセッサ内のプログラム間でハードウェア資源の拡張コンテキストデータの切り替えが必要な場合は、他のOSに影響を与えることなく、OS内で効率よく拡張コンテキストデータを切り替えることができる。
ここで、前記複数のプロセッサの少なくとも1つは、前記第1のオペレーティングシステムと前記第2のオペレーティングシステムとを管理する第3のオペレーティングシステムを実行し、前記第2の転送部は、何れかの前記第2判定回路が前記第2の例外割込み信号を発生したとき、第3のオペレーティングシステムによって起動されるようにしてもよい。
この構成によれば、異なるオペレーティングシステム(以下OSと略す)を実行するプロセッサ間でハードウェア資源を共有することができる。異なるOSを実行するプロセッサ間でハードウェア資源の拡張コンテキストデータの切り替えが必要な場合は、第3のOSの管理の下で、拡張コンテキストデータを切り替える。これにより、どのプロセッサ上のプログラムに対しても拡張コンテキストデータの切り替えが隠蔽されるので、従来のプログラムを容易に流用することができる。
ここで、前記第3オペレーティングシステムは、何れかの前記第2判定回路が前記第2の例外割込み信号を発生したとき、当該ハードウェア資源が他のプロセッサの所定命令を実行中である場合は、当該ハードウェア資源が解放されるのを待ち、当該ハードウェア資源を確保した後に、前記第2の転送部を起動するようにしてもよい。
この構成によれば、異なるOSのプロセッサ間で所定の命令が競合した場合(ハードウェア資源の使用が競合した場合)でも、第3のOSの管理の下で容易に調停することができる。
ここで、前記第2転送部は、前記ハードウェア資源から前記メモリに前記他のプロセッサに対応する拡張コンテキストデータを退避する動作の開始から、前記メモリから前記ハードウェア資源に前記所定命令を実行しようとしたプロセッサの拡張コンテキストデータを復帰する動作の改良までをアトミックに行うようにしてもよい。
この構成によれば、第2転送部は上記の退避開始から復帰完了までをアトミックに行うので、プログラム毎のコンテキストデータ(特に第1状態情報および第2状態情報)に矛盾を生じさせることなく、他のプロセッサからの干渉を受けることなく、異なるプロセッサ間でハードウェア資源を共有することができる。
ここで、各プロセッサは、さらに、当該プロセッサが停止状態、待ち状態または休眠状態に遷移したとき、当該プロセッサに対応する第2状態情報をクリアするクリア回路を備えるようにしてもよい。
この構成によれば、1つのプロセッサが停止状態、待ち状態または休眠状態に遷移したときに、クリア回路によって当該プロセッサが使用しているハードウェア資源を解放することができ、複数のプロセッサで共有されるハードウェア資源の使用効率を向上させる。
ここで、前記各状態レジスタは、第2状態情報をロックするか否かを示す第3状態情報を保持し、前記第3オペレーティングシステムは、第3状態情報が第2状態情報をロックすることを示すとき、前記クリア回路による第2状態情報のクリアを禁止するようにしてもよい。
この構成によれば、ハードウェア資源を使用するプロセッサが固定的である場合や、ハードウェア資源をあるプロセッサが優先して使用する場合に、プログラマが第3状態情報を「ロック」に設定することにより、ハードウェア資源を当該プロセッサに占有させ続けることができ、無駄な拡張コンテキストデータの退避および復帰を削減することができる。
また、本発明のプロセッサ装置は、複数のスレッドを同時に実行することによって、複数のプログラムを切り替える複数の仮想プロセッサを備えるマルチスレッドプロセッサと、データを保持するレジスタを有し前記複数の仮想プロセッサの命令実行を補完する1つ以上のハードウェア資源と、前記複数のプログラムのうち前記ハードウェア資源を利用する所定命令を含むプログラム毎に、前記ハードウェア資源内のレジスタデータのコピーである拡張コンテキストデータを記憶するメモリと、前記ハードウェア資源と前記メモリとの間で、拡張コンテキストデータの退避と復帰とを制御する制御部と、前記ハードウェア資源内に現在実行中のプログラムの拡張コンテキストデータが保持されている可能性があるか否かを判定する第1判定部と、前記ハードウェア資源内の拡張コンテキストデータが前記所定命令を実行しようとしたプロセッサに属するか否かを判定する第2判定部と、を備え、前記可能性があると前記第1判定部によって判定され、かつ、前記ハードウェア資源内の拡張コンテキストデータが、前記所定命令を実行しようとしたプロセッサに属すると前記第2判定部によって判定された場合に、前記制御部が拡張コンテキストデータの退避および復帰を行うことなく、前記ハードウェア資源は当該所定命令を実行する構成であってもよい。
この構成によれば、上記と同様の効果がある。
ここで、前記制御部は、前記第1判定部および前記第2判定部の判定結果に応じて、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータと同じプロセッサに属するコンテキストデータを復帰する第1転送部と、前記第1判定部および前記第2判定部の判定結果に応じて、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータとは異なるプロセッサに属する拡張コンテキストデータを復帰する第2転送部とを備える構成としてもよい。
ここで、前記複数の仮想プロセッサのそれぞれは、少なくとも1つのスレッドに対応し、前記マルチスレッドプロセッサは、スレッドの命令をフェッチおよび解読する複数の命令準備部と、前記複数の命令準備部により解読された命令であって、1以上のスレッドに対応する1以上の命令を同時に実行する実行部と、命令準備部毎に設けられた状態レジスタとを有し、前記制御部は、命令準備部毎に、現在のスレッドを他のスレッドに入れ替えることによって、前記複数の仮想プロセッサのうち実行中の仮想プロセッサと実行中でない仮想プロセッサとを入れ替え、各状態レジスタのデータのコピーは、仮想プロセッサ毎のコンテキストデータに含まれ、各状態レジスタは、前記ハードウェア資源毎に、現在実行中の仮想プロセッサの拡張コンテキストデータが当該ハードウェア資源内に保持されている可能性があるか否かを示す第1状態情報と、前記ハードウェア資源毎に当該ハードウェア資源内に保持されている拡張コンテキストデータに対応する仮想プロセッサを示す第2状態情報とを保持し、前記マルチスレッドプロセッサは、さらに、スレッドの入れ替えによって実行中の仮想プロセッサが実行中でなくなったときに、スレッドの入れ替えがあった命令準備部内の状態レジスタの第2状態情報をクリアするクリア回路を備える構成としてもよい。
ここで、前記第1判定部は、前記複数の命令準備部のそれぞれに設けられたデータ判定部を含み、前記各データ判定部は、対応する命令準備部のスレッドが前記所定命令を実行しようとしたとき、前記第1状態情報が真か偽かを判定することによって、現在実行中のプログラムの拡張コンテキストデータが前記ハードウェア資源内に保持されている可能性があるか否かを判定し、前記第2判定部は、前記複数の命令準備部のそれぞれに設けられたプロセッサ判定部を含み、前記各プロセッサ判定部は、対応する命令準備部内の前記データ判定部が偽であると判定したとき、対応する命令準備部の仮想プロセッサと前記第2状態情報が示す仮想プロセッサとが一致するか否かを判定し、偽であると判定したとき第2の例外割込み信号を発生し、前記マルチスレッドプロセッサは、さらに、前記プロセッサ判定部からの第2の例外割込み信号によって起動される第2の例外割り込み処理を、オペレーティングシステムの一部の機能として実行し、前記オペレーティングシステムは、前記ハードウェア資源の獲得処理と、前記ハードウェア資源の解放を待つ待ち処理を含み、前記オペレーティングシステムは、前記第2の例外割り込み信号を発生させた仮想プロセッサの属する命令準備部以外の命令準備部に属する仮想プロセッサにおいて当該ハードウェア資源が使用中でない場合に、前記獲得処理として、前記第2の例外割り込み信号を発生させた命令準備部内の状態レジスタに、真を示す第1状態情報と、前記第2の例外割り込み信号を発生させた仮想プロセッサを示す第2状態情報とを設定し、前記第2の例外割り込み信号を発生させた仮想プロセッサの属する命令準備部以外の命令準備部において仮想プロセッサにおいて当該ハードウェア資源が使用中である場合に、前記待ち処理を実行する構成としてもよい。
この構成によれば、ハードウェア資源(例えば、FPUやハードウェアアクセラレータ等の拡張演算ユニット)を複数のプロセッサで効率良く共有することができる。つまり、どのプロセッサでも各ハードウェア資源を使用することができる。それゆえ、ハードウェア資源の使用効率を向上させることができる。ハードウェア資源をプロセッサ毎に備える必要がないので、必要な処理性能に応じた個数の必要最小限のハードウェア資源を備えればよく、回路規模を削減または最適化することができる。
図1は、第1の実施の形態におけるプロセッサ装置の構成を示すブロック図である。
図2は、第1の実施の形態における状態レジスタ部内の第1〜第3状態情報の一例を示す図である。
図3は、第1の実施の形態におけるプロセッサ装置におけるオペレーティングシステムについての説明図である。
図4は、第1の実施の形態におけるハードウェア資源切り替え動作を示すフローチャートである。
図5は、第1の実施の形態における第3のOSが管理するデータの一例を示す図である。
図6は、第1の実施の形態におけるハードウェア資源切り替え動作を示す詳細なフローチャートである。
図7は、第2の実施の形態に係るプロセッサシステムの構成を示すブロック図である。
図8は、第2の実施の形態に係るプロセッサブロックの構成を示すブロック図である。
図9は、第2の実施の形態に係るコンテキストの構成を示す図である。
図10は、第2の実施の形態に係る論理アドレス空間の管理を示す図である。
図11は、第2の実施の形態に係るアドレス管理テーブルの構成を示す図である。
図12は、第2の実施の形態における、論理アドレスの対応関係を示す図である。
図13は、第2の実施の形態に係るエントリ指定レジスタの構成を示す図である。
図14は、第2の実施の形態に係るTLBによるエントリの割り当て処理を示す図である。
図15は、第2の実施の形態に係るTLBによる処理の流れを示すフローチャートである。
図16は、第2の実施の形態に係る物理保護レジスタの構成を示す図である。
図17は、第2の実施の形態において、PVIDにより保護される物理アドレス空間を示す図である。
図18は、第2の実施の形態に係る保護違反レジスタの構成を示す図である。
図19は、第2の実施の形態に係るエラーアドレスレジスタの構成を示す図である。
図20は、第2の実施の形態に係るFPU割り当てレジスタの構成を示す図である。
図21は、第2の実施の形態に係るFPU割り当て部によるFPUの割り当て処理を示す図である。
図22Aは、第2の実施の形態に係るウェイ指定レジスタの構成を示す図である。
図22Bは、第2の実施の形態に係るウェイ指定レジスタの構成を示す図である。
図23は、第2の実施の形態に係るキャッシュメモリによるウェイの割り当て処理を模式的に示す図である。
図24は、第2の実施の形態に係るキャッシュメモリによる処理の流れを示すフローチャートである。
図25は、第2の実施の形態に係る割り込み制御レジスタの構成を示す図である。
図26は、第2の実施の形態に係るプロセッサシステムにおける、メモリアクセス管理を示す図である。
図27は、第2の実施の形態に係るメモリIFブロックによるバスバンド幅の割り当てを示す図である。
図28は、第2の実施の形態に係るプロセッサシステムにおける資源分割処理の流れを示すフローチャートである。
(第1の実施の形態)
本実施形態におけるプロセッサ装置は、複数のプロセッサ間でハードウェア資源を共有するプロセッサ装置であって、ハードウェア資源内のレジスタに現在実行中の何れかのプログラムの拡張コンテキストデータが保持されているか否かを判定する第1判定部と、前記ハードウェア資源内の拡張コンテキストデータが、どのプロセッサに対応するかを判定する第2判定部と、プロセッサ内のプログラム間で拡張コンテキストデータの退避と復帰とを行う第1転送部と、プロセッサ間のプログラム間で拡張コンテキストデータの退避と復帰とを行う第2転送部とを備える。
図1は、本発明の第1の実施の形態におけるプロセッサ装置の構成を示すブロック図である。このプロセッサ装置は、命令準備部210、220および230と、実行パイプライン部240と、制御部250と、ハードウェア資源260および270と、メモリ310、320、330とを備える。
命令準備部210、220、230および実行パイプライン部240は、マルチスレッドプロセッサを構成する。命令準備部210、220、230はそれぞれ独立にスレッド(プログラム)から命令をフェッチおよび解読し、解読結果を実行パイプライン部240に発行する。
実行パイプライン部240は、複数の機能ユニット(ALU、ロード/ストアユニット、分岐処理ユニット、乗算器、除算器等)を備え、複数の命令解読結果のうち実行可能な命令を、複数の機能ユニットで同時に実行する。1つの命令準備部と実行パイプライン部240の組は、実質的に1つのプロセッサとして機能するので、仮想プロセッサまたは論理プロセッサと呼ぶ。つまり、命令準備部210、220、230および実行パイプライン部240は、3つの仮想プロセッサ0〜2に相当する。各仮想プロセッサはプログラムを切り替えながら実行する。なお、命令準備部210、220、230および実行パイプライン部240の代わりに、独立に動作する複数の物理プロセッサを備えてもよい。以下では、3つの仮想プロセッサ0〜2(論理プロセッサ)と3つの物理プロセッサとを特に区別する必要がない場合は、単にプロセッサ0〜2と呼ぶ。
メモリ310、320および330は3つのプロセッサに対応するアドレス空間を有する。メモリ310は、プログラム、プログラムの通常のコンテキストデータ311、ハードウェア資源の拡張コンテキストデータ312等を記憶する。メモリ320および330についても同様である。3つのメモリ310、320および330は、物理アドレス空間は1つで、3つの独立した仮想アドレス空間を有する。なお、3つのメモリ310、320および330は3つの独立した物理アドレス空間を有していてもよい。また、コンテキストデータ311、321および331を別のコンテキストデータ専用のメモリに格納しても良い。
命令準備部210は、メモリ310から命令をフェッチする命令フェッチ部211と、フェッチされた命令を解読する命令解読部212と、状態レジスタ部213と、レジスタ部214と、第1判定部215と、第2判定部216とを備える。
命令準備部220は、メモリ320から命令をフェッチする命令フェッチ部221と、フェッチされた命令を解読する命令解読部222と、状態レジスタ部223と、レジスタ部224と、第1判定部225と、第2判定部226とを備える。
命令準備部230は、メモリ330から命令をフェッチする命令フェッチ部231と、フェッチされた命令を解読する命令解読部232と、状態レジスタ部233と、レジスタ部234と、第1判定部235と、第2判定部236とを備える。
状態レジスタ部213およびレジスタ部214の各データは、実行中のプログラムのコンテキストデータを構成する。状態レジスタ部223およびレジスタ部224についても同様である。状態レジスタ部233およびレジスタ部234についても同様である。
制御部250は、第1転送部251、第2転送部252を有し、ハードウェア資源260および270とメモリ310、320および330との間で、拡張コンテキストデータの退避と復帰とを制御する。
ハードウェア資源260、270はそれぞれ、データを保持するレジスタ群261、271を有し、複数のプロセッサを補完する。各ハードウェア資源は、例えば、FPU(浮動小数点演算装置:Floating Point number processing Unit)、ハードウェアアクセラレータ、拡張演算ユニットなどでよい。FPUは、プログラム中の浮動小数点演算命令(以下、FPU命令と呼ぶ。)を実行する。ハードウェアアクセラレータは、プロセッサからコマンドを受けて、指定されたデータに対して積和演算、バタフライ演算、ブロックデータの量子化または逆量子化等を高速に実行する。拡張演算ユニットは、プロセッサが直接実行できない拡張命令(乗算命令、除算命令、拡張演算ユニットに専用の命令等)を実行する。
レジスタ群261、271のそれぞれは、対応するハードウェア資源のコンテキスト(以下、拡張コンテキストデータと呼ぶ。)を保持する。各ハードウェア資源は、複数のプロセッサに共有される。ここで、拡張コンテキストデータは、各プロセッサにおけるプログラムのコンテキストデータの退避および復帰とは非同期に行われる。つまり、プロセッサが、ハードウェア資源を利用する所定命令(上記のFPU命令、コマンド、拡張命令)を実際に実行し、その拡張コンテキストデータを必要とする時にだけ、退避および復帰される。
メモリ310は、複数のプロセッサによって時分割多重化されるプログラムのそれぞれのコンテキストデータ311と、複数のプログラムのうちハードウェア資源を利用する所定命令を含むプログラム毎に、前記ハードウェア資源内のレジスタデータのコピーである拡張コンテキストデータ312を記憶する。同様にメモリ320は、コンテキストデータ321、拡張コンテキストデータ322を記憶する。メモリ330は、コンテキストデータ331、拡張コンテキストデータ332を記憶する。
第1判定部215は、命令準備部210に対応するプロセッサがプログラム中の所定命令を実行しようとしたとき、ハードウェア資源内のレジスタに現在実行中のプログラムの拡張コンテキストデータが保持されているか否かを判定する。
第2判定部216は、ハードウェア資源内の拡張コンテキストデータが、当該所定命令を実行しようとするプロセッサに属するか否かを判定する。
第1転送部251は、第1判定部215および第2判定部216の判定結果に応じて、ハードウェア資源からメモリ310、320、330の何れかに拡張コンテキストデータを退避し、退避した拡張コンテキストデータと同じプロセッサ(または同じメモリ)に属するコンテキストデータを復帰する。復帰後、ハードウェア資源260または270は、当該所定命令を実行する。
第2転送部252は、第1判定部215および第2判定部216の判定結果に応じて、ハードウェア資源からメモリ310、320、330の何れかに拡張コンテキストデータを退避し、退避した拡張コンテキストデータとは異なるプロセッサ(または異なるメモリ)に属するコンテキストデータを復帰する。復帰後、ハードウェア資源260または270は、当該所定命令を実行する。
ハードウェア資源260または270は、ハードウェア資源内のレジスタに現在実行中のプログラムの拡張コンテキストデータが保持されていると第1判定部215によって判定され、かつ、ハードウェア資源内の拡張コンテキストデータが、当該所定命令を実行しようとするプロセッサに属すると第2判定部216によって判定された場合は、拡張コンテキストデータの退避および復帰を待つことなく、当該所定命令を即座に実行する。
以上の構成により、各ハードウェア資源260または270を複数のプロセッサで共有することができる。つまり、どのプロセッサでも各ハードウェア資源を使用することができる。それゆえ、ハードウェア資源の使用効率を向上させることができる。また、ハードウェア資源をプロセッサ毎に備える必要がないので、必要な処理性能に応じた個数の必要最小限のハードウェア資源を備えればよく、回路規模を削減または最適化することができる。
図2は、本発明の第1の実施の形態における状態レジスタ部内の第1〜第3状態情報の一例を示す図である。
同図は、状態レジスタ部213、223または233の一部を示している。ここでは、状態レジスタ部213を代表として説明する。状態レジスタ部213は、PSR(Processor Status Register)と呼ばれるレジスタと、LPFOSR(Logical Processor FPU Operation Status Register)と呼ばれるレジスタとを含む。このうちPSR(Processor Status Register)は、プログラムのコンテキストデータ311に含まれる。LPFOSRは、プログラムのコンテキストデータ311に含まれるか、プログラムのコンテキストデータ311に含まれないで別途OSによって管理される。
PSRは、現在実行中のプログラムの拡張コンテキストデータがハードウェア資源内に保持されている可能性があることを示す第1状態情報としてFE(FPU Enable)ビットを含む。
LPFOSRは、ハードウェア資源内に保持されている拡張コンテキストデータに対応するプロセッサを示す第2状態情報としてLPFE0(Logical Processor FPU Enable 0)、LPFE1ビットを含む。LPFE0、LPFE1ビットは、排他的に何れか1ビットのみ”1”になるか、全て”0”になる。この例では、LPFE0ビットは、プロセッサ0に対応し、LPFE1ビットは、プロセッサ1および2に対応するものとする。LPFOSRは、さらに、第2状態情報をロックするか否かを示す第3状態情報(FLビット)を含む。
つまり、実行中のプログラムのPSRのFEビットが、拡張コンテキストデータがハードウェア資源内に保持されている可能性があることを示していて、更に、そのプログラムを実行中のプロセッサが、ハードウェア資源内に保持されている拡張コンテキストデータに対応していることを、LPFE0または、LPFE1によって示されている場合に、そのプロセッサは、LPFE0または、LPFE1によって示されている、いずれかのハードウェア資源を使用することが可能になる。
第1判定部215は、対応するプロセッサがプログラム中の前記所定命令を実行しようとしたとき、前記第1状態情報が真か偽かを判定し、偽であると判定したとき第1の例外割込み信号を発生する第1判定回路(データ判定部)を含む。
第2判定部216は、対応する前記第1判定回路が偽であると判定したとき、対応するプロセッサと前記第2状態情報が示すプロセッサとが一致するか否かを判定し、偽であると判定したとき第2の例外割込み信号を発生する第2判定回路(プロセッサ判定部)を含む。第1および第2判定回路はハードウェアにて構成される。これにより、特に拡張コンテキストデータの入れ替えが不要な場合の処理を高速化する。
図3は、本発明の第1の実施の形態におけるプロセッサ装置におけるオペレーティングシステムについての説明図である。
同図においてプロセッサ0〜2は、図1に示した3つの仮想プロセッサまたは3つの物理プロセッサに対応する。
プロセッサ0は第1のオペレーティングシステム(以下OSと略す。)を実行することによって複数のプログラムを時分割多重で実行する。
プロセッサ1および2は、第1のOSとは異なる第2のOSを実行することによって複数のプログラムを時分割多重で実行する。第1のOSは例えばLinux、第2のOSは例えばリアルタイムOSである。
第1転送部251は、プロセッサ毎に設けられた退避復帰部251a、251b、251cを含む。各退避復帰部は、第1の例外割り込み信号が発生した場合に前記ハードウェア資源から前記メモリに拡張コンテキストデータを退避し、前記メモリから前記ハードウェア資源に前記所定命令を実行しようとしたプロセッサの拡張コンテキストデータを復帰し、プロセッサ0内の前記退避復帰部251aは、プロセッサ0内の第1判定部215が第1の例外割込み信号を発生したとき、第1のOSによって起動される。
プロセッサ1および2の退避復帰部251b、251cは、プロセッサ1および2の第1判定部225、235が第1の例外割込み信号を発生したとき、第2のOSによって起動される。
プロセッサ0〜2のうちの少なくとも1つは、第1のOSと第2のOSとを管理する第3のOSを実行することによって、第2転送部252を制御する。すなわち、第2転送部252は、何れかの第2判定部が第2の例外割込み信号を発生したとき、第3のオペレーティングシステムによって起動される。起動された第2転送部252は、ハードウェア資源からメモリ310、320、330の何れかに他のプロセッサに属する拡張コンテキストデータを退避する動作の開始から、前記メモリから前記ハードウェア資源に前記所定命令を実行しようとしたプロセッサの拡張コンテキストデータを復帰する動作の完了までをアトミックに行う。これにより、プログラム毎のコンテキストデータ(特に第1状態情報および第2状態情報)に矛盾を生じさせることなく、他のプロセッサからの干渉を受けることなく、異なるプロセッサ間でハードウェア資源を共有することができる。
さらに、第3のOSは、クリア部253を制御する。クリア部253は、プロセッサ毎に備えられたクリア回路の総称である。各クリア回路は、当該クリア回路に対応するプロセッサが停止状態、待ち状態または休眠状態に遷移したとき、当該プロセッサに対応する第2状態情報(LPFE0およびLPFE1ビット)をクリアする。これにより、当該プロセッサが使用しているハードウェア資源を解放することができ、複数のプロセッサで共有されるハードウェア資源の使用効率を向上させる。ただし、第3状態情報(FLビット)がセットされている場合(FL=1の場合)は、クリア回路の動作は禁止される。これにより、ハードウェア資源を使用するプロセッサが固定的である場合や、ハードウェア資源をあるプロセッサが優先して使用する場合に、プログラマが第3状態情報を「ロック」に設定することにより、ハードウェア資源を当該プロセッサに占有させ続けることができ、無駄な拡張コンテキストデータの退避および復帰を削減することができる。
図4は、本発明の第1の実施の形態におけるハードウェア資源切り替え動作の概略を示すフローチャート図である。同図では、プロセッサ0〜2のうちの何れか1つのプロセッサにおける動作を示している。ここでは、同図がプロセッサ0の動作を表し、ハードウェア資源がFPUであるものとして説明する。
プロセッサ0がFPU命令の実行しようとしたとき(FPU命令の実行要求をプロセッサ0がハードウェアにより検出したとき)(S30)、FPUレジスタが使用不可能であるか否かを判定する(S31)。”FPUレジスタが使用不可能でない”というのは、FE=1、かつLPFE0=1(または、LPFE1=1)の場合であり、FPUレジスタには、FPU命令の実行要求を出したプロセッサ0のプログラムに属する拡張コンテキストデータが保持されていることを意味する。この判定は、第1判定回路および第2判定回路により、ほぼ遅延時間なく、なされる。この場合、LPFE0または、LPFE1のいずれか1を示している方に対応したFPUによってFPU命令が即座に実行される(S34)。
さらに、”FPUレジスタが使用不可能である”場合は、FPUレジスタに他のプロセッサに属する拡張コンテキストデータが保持されているか否かを判定する(S32)。この判定は、第1判定回路および第2判定回路によりなされる。
FPUレジスタに同じプロセッサ0に属する拡張コンテキストデータが保持されているが、現在プロセッサ0で実行中のプログラムの拡張コンテキストデータでない場合は、つまり、そのプロセッサのPSRのFEビットは1であるが、LPFOSRのLPFE1かLPFE0のいずれかが1の場合は、LP内コンテキスト切り替えを行う(S36)。LP(Logical Processor)内コンテキスト切り替えは、第1転送部251によってなされる。
FPUレジスタに異なるプロセッサ1または2に属する拡張コンテキストデータが保持されている場合、つまりそのプロセッサのLPFOSRのLPFE1もLPFE0も0の場合は、LP間コンテキスト切り替えを行う(S41)。LP(Logical Processor)間コンテキスト切り替えは、第2転送部252によってなされる。
LP内またはLP間コンテキスト切り替えの後、FPUによってFPU命令が即座に実行される(S34)。
上記のうち、S30、S31、S32はプロセッサ内のハードウェアによって行われる。S34はFPUによって実行される。S36は第1のOSの制御の下で第1転送部251によって行われる。S41は、第1のOSの制御の下で第2転送部252によって行われる。
図5は、本発明の第1の実施の形態における第3のOSが管理するデータの一例を示す図である。
同図のテーブルT1は、プロセッサのID(ここではLPID)と、使用する予定のハードウェア資源(ここではFPU0、FPU1とする)とを対応付けたテーブルである。テーブルT2は、FPU番号と、現在FPUを占有しているプロセッサID(LPID)と、ロック属性(FLビット)とを対応付けたテーブルである。第3のOSは、テーブルT1、T2をそれぞれ常に最新の状態に更新し、ソフトウェア的にFPUを管理する。
第3のOSは、このようなテーブルを参照し、(1)FPU0、1と、LPIDの対応付け(新たにLPに割り当てるべきFPUの選択)、(2)現在のFPU0、1を使用しているLPID、(3)現在FPUnを使用しているLPのロック属性の管理を行う。
より具体的には、(1)第3のOSは、各LPが、どのFPUnを使用する予定かを管理(ソフトウェアにより各LPが使用する予定のFPUnを管理)し、図2に示したLPFOSR内のLPFE0、LPFE1のどのビットをセットするかを決定する。つまり、各LPでどのFPUnのコンテキストを使用するのかを管理可能である。
(2)第3のOSは、現在FPU0、1を使用しているLPIDを管理することにより、現状のFPU0、1をどのプロセッサが使っていて、今から使おうとしているのかを管理し、LP間のコンテキスト復帰・退避をアトミック操作として管理する。
(3)第3のOSは、ソフトウェアによりFPUnを使用するLPのロック管理をし、ソフトウェアによりFPUnのロック属性を管理可能である。これによりFPUの占有状態を自LPがロックしたり、他LPから取り外したりすることが可能になる。
図6は、本発明の第1の実施の形態におけるハードウェア資源切り替え動作を示す詳細なフローチャート図である。同図では、プロセッサのハードウェアにより実行されるステップと、第1のOSまたは第2のOSにより実行されるステップと、第3のOSにより実行されるステップとを分けている。同図では、プロセッサ0〜3のうちの何れか1つのプロセッサにおける動作を示している。ここでは、同図がプロセッサ0の動作を表し、ハードウェア資源がFPUであるものとして説明する。
プロセッサ0がFPU命令を実行しようとしたとき(FPU命令の実行要求をプロセッサ0がハードウェアにより検出したとき)(S30)、第1判定部215は、PSR内のFEビット(第1の状態情報)が真か偽かを判定することにより、FPUレジスタが使用不可能であるか否かを判定し(S31)、さらに、第2判定部216は、LPFE0、1ビット(第2の状態情報)の何れのビットが真であるかを判定する(S32)。これにより、FE=1、かつLOFE0=1の場合は、FPUレジスタに、FPU命令の実行要求を出したプロセッサ0のプログラムに属する拡張コンテキストデータが保持されていることを意味する。この判定は、第1判定回路および第2判定回路により、ほぼ遅延時間なく、なされる。この場合、FPUによってFPU命令が即座に実行される(S33)。
また、第1判定部215は、FE=0である場合(FPUレジスタが使用不可能である場合)、第1の例外割り込み信号を発生する(S34)。これにより、第1のOSまたは第2のOS(ここでは第1のOS)に制御が移ることになる。第1のOSは、FPU(ここではFPU0とする)を確保するためにFE=1にセットし(S35)、必要に応じてOS内でのFPUのコンテキストの退避復帰を行おうとする。FPU0内の拡張コンテキストデータが同じプロセッサに属すると第2判定部216が判定した場合は、FPU0からメモリ310に拡張コンテキストデータを退避し、メモリ310からFPU0に、現在実行中のFPU命令を実行しようとしたプログラムの拡張コンテキストデータを復帰し、(S36)、割り込み処理からリターンする(S37)。これにより、FPU命令を実行しようとしたプログラムは、何事もなかったかのようにS31(True)、S32(True)の判定を経る。これにより、FPU0はFPU命令を実行する。
一方、第1のOSは、FE=1にセットし(S36)、FPU0内の拡張コンテキストデータを退避しようとするが、FPU0内の拡張コンテキストデータが他のプロセッサに属すると第2判定部216が判定した場合は、第2の例外割り込み信号が発生する(S38)。これにより、第3のOSに制御が遷移する。
第2の例外割り込み信号を受けた第3のOSは、FPU0の使用権を確保するためにLPFE0=1をセットし、(S38a)、FPU0の使用権を確保できたか否かを判定し(S38b)、確保できた場合は、テーブルT2を参照して、現にFPU0を占有しているプロセッサ(FPU0−LPID)と、FPU命令を実行しようとしたプロセッサとが同じでないかどうかを判定し(S40)、同じでなければ、異なるプロセッサ間のコンテキスト入れ換えを行い(S41)、割り込み処理を抜ける(S42)。
S38bにおいてFPU0を確保できない場合(LPFE0に1を書き込んだにもかかわらず、LPFE0=0の場合、つまり、他の物理プロセッサによって、FPU0が確保されている場合)は、第3のOSは、FPU0が解放されるまで待ち処理に入る(S39)。この待ち処理では、ポーリング、イベント待ち等により、解放されたかどうかをチェックすればよい。
また、S40において現にFPU0を占有しているプロセッサ(FPU0−LPID)と、FPU命令を実行しようとしたプロセッサとが同じである場合は、コンテキスト入れ替えの必要がないので、そのまま割り込み処理を抜ける。このケースは、プロセッサ0で実行していたプログラムが、一旦休止状態、停止状態等になった場合に、FEビットがクリアされることによって起こり得る。
上記の処理のうち、第2の例外割り込み信号を受けた第3のOSの処理についてさらに詳しく説明する。
図3に示した第3のOSは、第2判定部216、226、236からの各第2の例外割込み信号によって起動される第2の例外割り込み処理を、オペレーティングシステムの一部の機能として実行する。第3のOSは、第2の例外割り込み処理のサポートのために、前記ハードウェア資源の獲得処理、前記ハードウェア資源の解放待ち処理等を含む。
第3のOSは、獲得処理において、第2の例外割り込み信号を発生させた仮想プロセッサの属する命令準備部以外の命令準備部に属する仮想プロセッサおいて当該ハードウェア資源が使用中でない場合(ケース1)に、第2の例外割り込み信号を発生させた命令準備部内の状態レジスタに、真を示す第1状態情報と、前記第2の例外割り込み信号を発生させたプロセッサを示す第2状態情報とを設定する。真を示す第1の状態情報は、現在実行中のプログラムの拡張コンテキストデータがハードウェア資源内に保持されている可能性があることを示す。上記ステップS38bにおいて、FPU0の使用権を確保できたと判定される場合がこのケース1である。
一方、第3のOSは、第2の例外割り込み信号を発生させた仮想プロセッサの属する命令準備部以外の命令準備部において仮想プロセッサにおいて当該ハードウェア資源が使用中である場合(ケース2)に、前記ハードウェア資源の解放を待つ待ち処理を実行する。上記ステップS38bにおいてFPU0の使用権を確保できないと判定され、ステップS39(待ち処理)に入る場合がこのケース2である。
ステップS38bにおいてハードウェア資源を獲得する処理は、例えば、第3のOSが、資源を排他制御するためのMUTEX等の管理オブジェクトを備え、この管理オブジェクトを利用すればよい。
以上説明してきたように、本実施の形態におけるプロセッサ装置によれば、各ハードウェア資源を複数のプロセッサで共有することができる。つまり、どのプロセッサでも各ハードウェア資源を使用することができる。それゆえ、ハードウェア資源の使用効率を向上させることができる。ハードウェア資源をプロセッサ毎に備える必要がないので、必要な処理性能に応じた個数の必要最小限のハードウェア資源を備えればよく、回路規模を削減または最適化することができる。FPUやハードウェアアクセラレータ等の拡張演算ユニットを効率よく複数のプロセッサで共有することができ、拡張コンテキストデータの退避および復帰を最小限にすることができる。
(第2の実施の形態)
本実施の形態では、第1の実施の形態で説明したプロセッサ装置をメディアプロセッサに適用する場合の構成について説明する。
本実施の形態に係るプロセッサシステムは、資源を共用してホスト処理とメディア処理とを行う単一のプロセッサブロックを備える。プロセッサブロックは、第1の実施の形態のプロセッサ装置と同じ機能を有し、さらに、資源を共用してホスト処理とメディア処理とを行う単一のプロセッサ装置で行う。本発明の実施の形態に係るプロセッサシステムは、ホスト処理のスレッドとメディア処理のスレッドとに、異なるタグ情報を与えるとともに、プロセッサシステムが有する資源を当該タグ情報に対応付けて分割する。これにより、本発明の実施の形態に係るプロセッサシステムは、面積効率を向上できるとともに、性能の保証及び堅牢性を向上できる。
まず、本発明の実施の形態に係るプロセッサシステムの構成を説明する。
図7は、第2の実施の形態に係るプロセッサシステム10の基本構成を示す機能ブロック図である。
このプロセッサシステム10は、映像音声ストリームに関する様々な信号処理を行うシステムLSIであり、外部メモリ15を用いて複数のスレッドを実行する。例えば、プロセッサシステム10は、デジタルテレビシステム、DVDレコーダ、デジタルカメラ及び携帯電話機等に搭載される。このプロセッサシステム10は、プロセッサブロック11と、ストリームI/Oブロック12と、AVIO(Audio Visual Input Output)ブロック13と、メモリIFブロック14とを備える。
プロセッサブロック11は、第1の実施の形態で説明したプロセッサ装置と同じである。以下、同じ点は説明を省略して、異なる点を中心に説明する。
プロセッサブロック11は、プロセッサシステム10全体を制御するプロセッサであり、制御バス16を介してストリームI/Oブロック12、AVIOブロック13、及びメモリIFブロック14を制御したり、データバス17及びメモリIFブロック14を介して外部メモリ15にアクセスしたりする。また、プロセッサブロック11は、データバス17及びメモリIFブロック14を介して外部メモリ15から圧縮画像音声ストリーム等の画像音声データを読み出し、圧縮又は伸張等のメディア処理を行った後に、再び、データバス17及びメモリIFブロック14を介して、処理後の画像データや音声データを外部メモリ15に格納する回路ブロックである。
つまり、プロセッサブロック11は、映像音声の出力サイクル(フレームレート等)に依存しない非リアルタイムな汎用(制御関連の)処理であるホスト処理と、映像音声の出力サイクルに依存するリアルタイムな汎用(メディア関連の)処理であるメディア処理とを行う。
例えば、プロセッサシステム10をデジタルテレビシステムに搭載する場合、ホスト処理は、当該デジタルテレビシステムの制御を行い、メディア処理は、デジタル映像の伸張を行う。
ストリームI/Oブロック12は、プロセッサブロック11による制御の下で、蓄積メディア及びネットワーク等の周辺デバイスから圧縮画像音声ストリーム等のストリームデータを読み込み、データバス18及びメモリIFブロック14を介して外部メモリ15に格納したり、その逆方向のストリーム転送をしたりする回路ブロックである。このように、ストリームI/Oブロック12は、映像音声の出力サイクルに依存しない非リアルタイムなIO処理を行う。
AVIOブロック13は、プロセッサブロック11による制御の下で、データバス19及びメモリIFブロック14を介して外部メモリ15から画像データ及び音声データ等を読み出し、各種グラフィック処理等を施した後に、画像信号及び音声信号として外部の表示装置やスピーカ等に出力したり、その逆方向のデータ転送をしたりする回路ブロックである。このように、AVIOブロック13は、映像音声の出力サイクルに依存するリアルタイムなIO処理を行う。
メモリIFブロック14は、プロセッサブロック11による制御の下で、プロセッサブロック11、ストリームI/Oブロック12、AVIOブロック13、及びメモリIFブロック14と外部メモリ15との間で並列にデータ要求が行われるように制御する回路ブロックである。また、メモリIFブロック14は、プロセッサブロック11からの要求に応じて、プロセッサブロック11、ストリームI/Oブロック12、AVIOブロック13、及びメモリIFブロック14と外部メモリ15との間の転送帯域を確保するとともに、レイテンシ保証を行う。
次に、プロセッサブロック11の詳細な構成を説明する。
図8は、プロセッサブロック11の構成を示す機能ブロック図である。
このプロセッサブロック11は、実行部101と、VMPC(仮想マルチプロセッサ制御部)102と、TLB(Translation Lookaside Buffer)104と、物理アドレス管理部105と、FPU(Floating Point number processing Unit:浮動小数点演算装置)107と、FPU割り当て部108と、キャッシュメモリ109と、BCU110と、割り込み制御部111とを備える。
ここで、プロセッサブロック11は、仮想マルチプロセッサ(VMP:Virtual Multi Processor)として機能する。仮想マルチプロセッサとは、一般的に、複数の論理プロセッサ(LP:Logical Processor)の機能を時分割に演じる命令並列プロセッサの一種である。ここで一つのLPは、実体的には、物理プロセッサ(PP:Physical Processor)のレジスタ群に設定される一つのコンテキストに対応する。各LPに割り当てる時間単位(TS:Time Slot)の頻度を管理することによって、各LPによって実行されるアプリケーション間の負荷バランスを保つことができる。なお、VMPの構成及び動作については、その代表的な一例が特開2003−271399号公報(特許文献3)に詳しく開示されているので、ここでは詳細な説明を省略する。
また、プロセッサブロック11は、マルチスレッドパイプライン型プロセッサ(マルチスレッドプロセッサ)として機能する。マルチスレッドパイプライン型プロセッサは、同時に複数のスレッドを処理し、さらに、実行パイプラインの空きを埋めるように複数のスレッドを処理することにより、処理効率を向上できる。なお、マルチスレッドパイプライン型プロセッサの構成及び動作については、その代表的な一例が特開2008−123045号公報(特許文献4)に詳しく開示されているので、ここでは詳細な説明を省略する。
実行部101は、複数のスレッドを同時に実行する。この実行部101は、複数の物理プロセッサ121と、演算制御部122と、演算部123とを備える。
複数の物理プロセッサ121は、それぞれ、レジスタを備える。このレジスタそれぞれは、1以上のコンテキスト124を保持する。ここで、コンテキスト124とは、複数のスレッド(LP)のそれぞれに対応し、対応するスレッドを実行するために必要な制御情報及びデータ情報等である。各物理プロセッサ121は、スレッド(プログラム)中の命令をフェッチおよび解読し、解読結果を演算制御部122に発行する。
演算部123は、複数の演算器を備え、同時に複数のスレッドを実行する。
演算制御部122は、マルチスレッドパイプライン型プロセッサにおけるパイプライン制御を行う。具体的には、演算制御部122は、実行パイプラインの空きを埋めるように複数のスレッドを、演算部123が備える演算器に割り当てたうえで実行させる。
VMPC102は、仮想マルチスレッド処理を制御する。このVMPC102は、スケジューラ126と、コンテキストメモリ127と、コンテキスト制御部128とを備える。
スケジューラ126は、複数のスレッドの優先度に従い、複数のスレッドの実行順序、及びスレッドを実行するPPを決定するスケジューリングを行うハードウェアスケジューラである。具体的には、スケジューラ126は、LPをPPにアサインする又はアンアサインすることにより、実行部101が実行するスレッドを切り替える。
コンテキストメモリ127は、複数のLPにそれぞれ対応する複数のコンテキスト124を記憶する。なお、このコンテキストメモリ127又は複数の物理プロセッサ121が備えるレジスタが、本発明の保持手段に相当する。
コンテキスト制御部128は、所謂コンテキストの復帰及び退避を行う。具体的には、コンテキスト制御部128は、実行が完了した物理プロセッサ121が保持するコンテキスト124をコンテキストメモリ127に書き込む。また、コンテキスト制御部128は、これから実行されるスレッドのコンテキスト124をコンテキストメモリ127から読み出し、読み出したコンテキスト124を当該スレッドに対応するLPがアサインされた物理プロセッサ121に転送する。
図9は、一つのコンテキスト124の構成を示す図である。なお、図9にはスレッドを実行するために必要な通常の制御情報及び通常のデータ情報等は図示しておらず、新たにコンテキスト124に追加された情報のみを示している。
図9に示すにように、コンテキスト124は、TVID(TLBアクセス仮想識別子)140と、PVID(物理メモリ保護仮想識別子)141と、MVID(メモリアクセス仮想識別子)142とを含む。
このTVID140、PVID141及びMVID142は、複数のスレッド(LP)のそれぞれが、ホスト処理に属するスレッドか、メディア処理に属するスレッドかを示すタグ情報である。
TVID140は、複数の仮想メモリ保護グループを設定するために用いられる。例えば、ホスト処理のスレッドと、メディア処理のスレッドとにそれぞれ異なるTVID140が付与される。実行部101は、このTVID140を用いて論理アドレス空間のページ管理情報をそれぞれ独立に作成することができる。
PVID141は、物理メモリ領域のアクセスを制限するために用いられる。
MVID142は、メモリIFブロック14へのアクセス形態を設定するために用いられる。メモリIFブロック14は、このMVID142を用いて、レイテンシ(応答性重視)を優先するか、バスバンド幅(性能保証)を優先するかを決定する。
図10は、プロセッサシステム10における論理アドレス空間の管理を模式的に示す図である。図10に示すように、プロセッサシステム10は、ユーザレベル、スーパーバイザーレベル及び仮想モニタレベルの3つの階層により制御される。
ここでユーザレベルは、スレッド(LP)ごとの制御を行う階層である。スーパーバイザーレベルは、複数のスレッドの制御を行うオペレーティングシステム(OS)に対応する階層である。例えば、図10に示すようにスーパーバイザーレベルには、ホスト処理のOSであるLinuxカーネルと、メディア処理のOSであるSystem Managerとが含まれる。
仮想モニタレベルは、スーパーバイザーレベルの複数のOSを制御する階層である。具体的には、仮想モニタレベルのOS(モニタプログラム)により、TVID140を用いた論理アドレス空間の区別が行われる。つまり、プロセッサシステム10は、複数のOSが用いる論理アドレス空間が互いに干渉しないように、論理アドレス空間を管理する。たとえば、各コンテキストのTVID140、PVID141やMVID142は、この仮想モニタレベルでのみ設定することが出来るようにしている。
また、仮想モニタレベルのOSは、プロセッサシステム10が有する複数の資源を、ホスト処理に属するスレッドに対応付ける第1資源と、メディア処理に属するスレッドに対応付ける第2資源とに分割する本発明の分離手段である。ここで資源とは、具体的には、外部メモリ15のメモリ領域(論理アドレス空間及び物理アドレス空間)、キャッシュメモリ109のメモリ領域、TLB104のメモリ領域、及びFPU107である。
このように、仮想モニタレベルで、資源を分割することにより、設計者は、ホスト処理とメディア処理とが独立したプロセッサにより実行されている場合と同様に、ホスト処理及びメディア処理のOSを設計できる。
TLB104は、一種のキャッシュメモリであり、論理アドレスと物理アドレスとの対応関係を示すページテーブルの一部であるアドレス変換テーブル130を保持する。このTLB104は、アドレス変換テーブル130を用いて、論理アドレスと物理アドレス間の変換を行う。
図11は、アドレス変換テーブル130の構成を示す図である。
図11に示すように、アドレス変換テーブル130は、複数のエントリ150を含む。各エントリ150は、論理アドレスを識別するためのTLBタグ部151と、当該TLBタグ部151に対応付けられたTLBデータ部152とを含む。TLBタグ部151は、VPN153と、TVID140と、PID154とを含む。TLBデータ部152は、PPN155と、Attribute156とを含む。
VPN153は、ユーザレベルの論理アドレスであり、具体的には、論理アドレス空間のページNoである。
PID154は、当該データを用いるプロセスを識別するためのIDである。
PPN155は、当該TLBタグ部151に対応付けられた物理アドレスであり、具体的には、物理アドレス空間のページNoである。
Attribute156は、当該TLBタグ部151に対応付けられたデータの属性を示す。具体的には、Attribute156は、当該データへのアクセスの可否、当該データをキャッシュメモリ109に格納するか格納しないか、当該データが特権を有するか否か等を示す。
また、TLB104は、複数のスレッド(LP)が用いる論理アドレス空間の管理を行う。
図12は、プロセッサシステム10における論理アドレスの対応関係を模式的に示す図である。上述したように、TLB104は、プロセスごとの論理アドレス(VPN153)とPID154とTVID140との組に対して、一つの物理アドレス(PPN155)を対応させる。このように、同じTVIDをもつLP上のスーパーバイザーレベルでは、プロセスごとの論理アドレス(VPN153)とPID154との組に対して一つの物理アドレスを対応付けることで、スーパーバイザーレベルにおいて、各プロセスの論理アドレスを区別したうえで、当該論理アドレスを物理アドレスと対応させることができる。
ここで、TLB104の更新時に、更新されるエントリのTVIDは、更新を行うLPに設定されているTVIDが設定される。
さらに、TLB104は、プロセスごとの論理アドレス(VPN153)とPID154とにTVID140を加えた組に対して、一つの物理アドレス(PPN155)を対応させる。これにより、TLB104は、仮想モニタレベルにおいて、ホスト処理とメディア処理とにそれぞれ異なるTVIDを設定することにより、独立した論理アドレス空間を与えることができる。
また、このTLB104は、エントリ指定レジスタ135を備える。エントリ指定レジスタ135は、TVID140に割り当てるエントリ150を指定する情報を保持する。
図13は、エントリ指定レジスタ135に格納されるデータの一例を示す図である。図13に示すように、エントリ指定レジスタ135は、TVID140とエントリ150との対応関係を保持する。また、エントリ指定レジスタ135は、仮想モニタレベルのOS(モニタプログラム)により設定及び更新される。
TLB104は、エントリ指定レジスタ135に設定された情報を用いて、TVID140ごとに、使用するエントリ150を決定する。具体的には、TLB104は、TLBミス(LPから入力された論理アドレス(TLBタグ部151)をアドレス変換テーブル130に保持していない)場合、当該LPのTVID140に対応するエントリ150のデータをリプレースする。
図14は、TLB104でのエントリ150の割り当て状態を模式的に示す図である。
図14に示すように、複数のエントリ150が、複数のLPにより共有される。さらに、TLB104は、TVID140を用いて、同じTVID140を有するLP間で、エントリ150を共有させる。例えば、TVID0を有するLP0には、エントリ0〜エントリ2が割り当てられ、TVID1を有するLP1及びLP2には、エントリ3〜エントリ7が割り当てられる。これにより、TLB104は、ホスト処理に属するスレッドに対して、エントリ0〜エントリ2を用い、メディア処理に属するスレッドに対してエントリ3〜エントリ7を用いることができる。
図15は、TLB104による処理の流れを示すフローチャートである。
図15に示すように、LPからの外部メモリ15へのアクセスが発生した場合、まず、TLB104は、アクセス元のLPから入力された論理アドレス(VPN153、TVID140及びPID154)と同じ論理アドレスを格納しているか否かを判定する(S101)。
格納していない場合、つまりTLBミスの場合(S101でYes)、TLB104は、アクセス元のLPのTVID140に割り当てられたエントリ150を更新する。言い換えると、TLB104は、アクセス元のLPのTVID140と、同一のTVID140のエントリ150を更新する(S102)。具体的には、TLB104は、外部メモリ15等に格納されているページテーブルから、TLBミスした論理アドレスと物理アドレスとの対応関係を読み出し、読み出した対応関係を、アクセス元のLPのTVID140に割り当てられたエントリ150に格納する。
次に、TLB104は、更新した対応関係を用いて、論理アドレスを物理アドレスに変換する(S103)。
一方、ステップS101で、LPから入力された論理アドレスと同じ論理アドレスを格納している場合、つまりTLBヒットの場合(S101でNo)、TLB104は、TLBヒットした対応関係を用いて、論理アドレスを物理アドレスに変換する(S103)。
ここで、外部メモリ15等に格納されているページテーブルは、TVID140毎又はPVID141毎に、外部メモリ15の物理アドレスが割り当てられるように、予め作成されている。このページテーブルは、例えば、スーパーバイザーレベル、又は仮想モニタレベルのOSにより作成及び更新される。
物理アドレス管理部105は、PVID141を用いて物理アドレス空間のアクセス保護を行う。この物理アドレス管理部105は、複数の物理メモリ保護レジスタ131と、保護違反レジスタ132と、エラーアドレスレジスタ133とを備える。
各物理メモリ保護レジスタ131は、物理アドレス範囲ごとに、当該物理アドレス範囲にアクセス可能なLPを示す情報を保持する。
図16は、一つの物理メモリ保護レジスタ131に保持される情報の構成を示す図である。図16に示すように、物理メモリ保護レジスタ131は、BASEADDR161と、PS162と、PN163と、PVID0WE〜PVID3WE164と、PVID0RE〜PVID3WE165とを含む情報を保持する。
BASEADDR161、PS162、及びPN163は、物理アドレス範囲を指定する情報である。具体的には、BASEADDR161は、指定する物理アドレス範囲の先頭のアドレスの上位16ビットである。PS162はページサイズを示す。例えば、ページサイズとして、1KB、64KB、1MB又は64MBが設定される。PN163は、PS162に設定されたページサイズでのページ数を示す。
PVID0WE〜PVID3WE164及びPVID0RE〜PVID3RE165は、BASEADDR161、PS162及びPN163で指定される物理アドレス範囲に、アクセス可能なLPのPVID141を示す。
具体的には、PVID0WE〜PVID3WE164は、それぞれPVID141ごとに1ビット設けられる。また、PVID0WE〜PVID3WE164は、対応するPVID141が付与されたLPが、指定された物理アドレス範囲にデータを書き込み可能であるか否かを示す。
PVID0RE〜PVID3RE165は、それぞれPVID141ごとに1ビット設けられる。また、PVID0RE〜PVID3RE165は、対応するPVID141が付与されたLPが、指定された物理アドレス範囲のデータを読み出し可能であるか否かを示す。
なお、ここでは、4種類のPVID141が複数のLPに付与されるとするが、2種類以上のPVID141が複数のLPに付与されればよい。
図17は、PVID141により保護される物理アドレス空間の一例を示す図である。また、ここでは物理アドレス管理部105は、4つの物理メモリ保護レジスタ131(PMG0PR〜PMG3PR)を備えるとする。また、PVID0は、Linux(ホスト処理)のLP群に付与され、PVID1は、メディア処理のLPのうち画像処理のLP群に付与され、PVID2は、メディア処理のLPのうち音声処理のLP群に付与され、PVID3は、System Manager(メディア処理のOS)のLP群に付与される。
また、物理アドレス管理部105は、LPが、当該LPのPVID141で許可されていない物理アドレスにアクセスした場合に例外割り込みを発生するとともに、保護違反レジスタ132に、エラーが発生したアクセス情報を書き込み、かつ、エラーアドレスレジスタ133に、エラーの要因となったアクセスのアクセス先の物理アドレスを書き込む。
図18は、保護違反レジスタ132に保持されるアクセス情報の構成を示す図である。図18に示すように、保護違反レジスタ132に保持されるアクセス情報は、PVERR167と、PVID141とを含む。PVERR167は、当該エラーが、物理メモリ空間保護違反(LPが、当該LPのPVID141で許可されていない物理アドレスにアクセスしたエラー)であるか否を示す。PVID141は、物理メモリ空間保護違反が発生したPVID141が設定される。
図19は、エラーアドレスレジスタ133に保持される情報の構成を示す図である。図16に示すように、エラーアドレスレジスタ133は、エラーの要因となったアクセスのアクセス先の物理アドレス(BEA[31:0])を保持する。
以上のように、PVID141を用いて、物理アドレスを保護することにより、システムの堅牢性を向上できる。具体的には、デバッグ時において、エラーが発生した物理アドレスやPVIDから、設計者は、画像処理及び音声処理のうち、どちらの処理がエラーを起こしているかを容易に判別できる。また、ホスト処理のデバッグ時には、画像処理などが書き込めないアドレスで発生している誤動作について、画像処理の誤動作を疑うことなくデバッグすることが可能になる。
FPU割り当て部108は、複数のFPU107をLPに割り当てる。このFPU割り当て部108は、FPU割り当てレジスタ137を備える。
図20は、FPU割り当てレジスタ137に格納されるデータの一例を示す図である。図20に示すように、FPU割り当てレジスタ137に、TVID140ごとにFPU107が対応付けられる。また、FPU割り当てレジスタ137は、仮想モニタレベルのOS(モニタプログラム)により設定及び更新される。
図21は、FPU割り当て部108によるFPU107の割り当て処理を模式的に示す図である。
図21に示すように、複数のFPU107が、複数のLPにより共有される。さらに、FPU割り当て部108は、TVID140を用いて、同じTVID140を有するLP間で、FPU107を共有させる。例えば、FPU割り当て部108は、TVID0を有するLP0には、FPU0を割り当て、TVID1を有するLP1及びLP2には、FPU1を割り当てる。
また、LPは、FPU割り当て部108により割り当てられたFPU107を用いて、スレッドを実行する。
キャッシュメモリ109は、プロセッサブロック11で使用するデータを一時的に格納するメモリである。また、キャッシュメモリ109は、異なるTVID140を有するLPには、独立した異なるデータ領域(ウェイ168)を使用する。このキャッシュメモリ109は、ウェイ指定レジスタ136を備える。
図22A及び図22Bは、ウェイ指定レジスタ136に格納されるデータの一例を示す図である。
図22Aに示すように、ウェイ指定レジスタ136に、TVID140ごとにウェイ168が対応付けられる。また、ウェイ指定レジスタ136は、仮想モニタレベルのOS(モニタプログラム)により設定及び更新される。
なお、図22Bに示すように、LPごとにウェイ168を対応付けてもよい。この場合、例えば、コンテキスト124内に、当該LPが使用するウェイの情報が含まれ、仮想モニタレベルのOS、又はスーパーバイザーレベルのOSは、コンテキスト124を参照し、ウェイ指定レジスタ136を設定及び更新する。
図23は、キャッシュメモリ109によるウェイ168の割り当て処理を模式的に示す図である。
図23に示すように、キャッシュメモリ109は、データ格納単位として、複数のウェイ168(way0〜way7)を有する。このキャッシュメモリ109は、TVID140を用いて、同じTVID140を有するLP間で、ウェイ168を共有させる。例えば、TVID0を有するLP0には、way0〜way1が割り当てられ、TVID1を有するLP1及びLP2には、way2〜way7が割り当てられる。これにより、キャッシュメモリ109は、ホスト処理に属するスレッドのデータをway0〜way1にキャッシュし、メディア処理に属するスレッドのデータをway2〜way7にキャッシュする。
このように、キャッシュメモリ109は、異なるTVID140を有するLP間で、キャッシュデータを互いに追い出しあわないようにできる。
図24は、キャッシュメモリ109による処理の流れを示すフローチャートである。
図24に示すように、LPからの外部メモリ15へのアクセスが発生した場合、まず、キャッシュメモリ109は、アクセス元のLPから入力されたアドレス(物理アドレス)と同じアドレスを格納しているか否かを判定する(S111)。
格納していない場合、つまりキャッシュミスの場合(S111でYes)、キャッシュメモリ109は、ウェイ指定レジスタ136で指定されるウェイ168に、アクセス元のLPから入力されたアドレス及びデータをキャッシュする(S112)。具体的には、リードアクセスの場合、キャッシュメモリ109は、外部メモリ15等からデータを読み出し、読み出したデータを、ウェイ指定レジスタ136で指定されるウェイ168に格納する。また、ライトアクセスの場合、キャッシュメモリ109は、アクセス元のLPから入力されたデータを、ウェイ指定レジスタ136で指定されるウェイ168に格納する。
一方、ステップS111で、アクセス元のLPから入力されたアドレスと同じアドレスを格納している場合、つまりキャッシュヒットの場合(S111でNo)、キャッシュメモリ109は、キャッシュヒットしたデータを、更新(ライトアクセス時)、又はアクセス元のLPに出力する(リードアクセス時)(S113)。
BCU110は、プロセッサブロック11と、メモリIFブロック14との間のデータ転送を制御する。
割り込み制御部111は、割り込みの検出、要求及び許可等を行う。この割り込み制御部111は、複数の割り込み制御レジスタ134を備える。例えば、割り込み制御部111は、128個の割り込み制御レジスタ134を備える。割り込み制御部111は、割り込み制御レジスタ134を参照し、発生した割り込みの割り込み要因に対応するスレッド(LP)に割り込みを送る。
割り込み制御レジスタ134には、割り込み要因に対応する割り込み先のスレッドが設定される。
図25は、一つの割り込み制御レジスタ134の構成を示す図である。図25に示す割り込み制御レジスタ134は、割り込み要因に対応付けられた、システム割り込み171(SYSINT)と、LP識別子172(LPID)と、LP割り込み173(LPINT)と、HWイベント174(HWEVT)とを含む。
システム割り込み171は、当該割り込みがシステム割り込み(グローバル割り込み)であるか否かを示す。LP識別子172は、割り込み先のLPを示す。LP割り込み173は、当該割り込みがLP割り込み(ローカル割り込み)であるか否かを示す。HWイベント174は当該割り込み要因によりハードウェアイベントを発生させるか否かを示す。
システム割り込みの場合、割り込み制御部111は、現在スレッドを実行中のLPに割り込みを送る。また、LP割り込みの場合、割り込み制御部111は、LP識別子172で示されるLPに対して、割り込みを送る。また、ハードウェアイベントの場合、LP識別子172で示されるLPに対してハードウェアイベントを送る。このハードウェアイベントにより、該当LPが起床する。
また、システム割り込み171及びLP識別子172は、仮想モニタレベルのOS(モニタプログラム)のみが書き換え可能であり、LP割り込み173及びHWイベント174は、仮想モニタレベル及びスーパーバイザーレベルのOSのみが書き換え可能である。
次に、プロセッサシステム10における、メモリアクセス管理について説明する。
図26は、プロセッサシステム10における、メモリアクセス管理の状態を模式的に示す図である。図26に示すように、プロセッサブロック11からメモリIFブロック14にMVID142が送られる。メモリIFブロック14は、このMVID142を用いて、MVID142ごとに、バスバンド幅を割り当てたうえで、アクセス要求元のスレッドのMVID142に割り当てたバスバンド幅を用いて、外部メモリ15にアクセスを行う。
また、メモリIFブロック14は、バスバンド幅指定レジスタ138を備える。
図27は、メモリIFブロック14によるバスバンド幅指定レジスタ138が保持するデータの一例を示す図である。なお、図27において、ホスト処理であるLinuxと、メディア処理に含まれる音声処理(Audio)と、メディア処理に含まれる画像処理(Video)とにそれぞれ異なるMVID142が付与されている。
図27に示すように、メモリIFブロック14は、MVID142ごとにバスバンド幅を割り当てる。また、MVID142ごとに優先順位を決定し、当該優先順位に基づき、外部メモリ15へのアクセスを行う。
これにより、MVID142ごとに必要なバンド幅が確保されるとともに、要求したアクセスレイテンシが保証される。よって、プロセッサシステム10は、複数のアプリケーションの性能保証及びリアルタイム性の保証を達成することができる。
また、MVID142を用いてバスバンド幅を分割することにより、メモリIFブロック14とプロセッサブロック11とが一つのデータバス17のみを介して接続されている場合でも、複数のデータバスを介してメモリIFブロック14とプロセッサブロック11とが接続されている場合と同様の制御を行うことができる。つまり、複数のブロックに対してバスを分割する場合と同様の制御を行うことができる。
なお、複数のブロックからのアクセス要求に対して、バスバンド幅を確保しレイテンシを保証するための技術は、その代表的な一例が特開2004−246862号公報(特許文献5)に詳しく開示されているので、ここでは詳細な説明を省略する。
また、プロセッサシステム10では、TVID140及び従来のVMPの機能を用いて、メディア処理とホスト処理との処理時間の割合を任意に設定できる。具体的には、例えば、仮想モニタレベルのOSにより、各TVID140に対する処理時間の割合(メディア処理とホスト処理との処理時間の割合)が、VMPC102が備えるレジスタ(図示せず)に設定される。VMPC102は、この設定された処理時間の割合と、各スレッドのTVID140とを参照し、当該処理時間の割合が満たされるように、実行部101が実行するスレッドを切り替える。
次に、仮想モニタレベルのOS(モニタプログラム)による、資源分割処理について説明する。
図28は、モニタプログラムによる、資源分割処理の流れを示すフローチャートである。
まず、モニタプログラムは、複数のコンテキスト124の、TVID140、PVID141及びMVID142を設定することにより、複数のスレッドを複数のグループに分割する(S121、S122及びS123)。
次に、モニタプログラムは、エントリ指定レジスタ135にTVID140とエントリ150と対応関係を設定することにより、TLB104が有する複数のエントリ150を、ホスト処理に対応付ける第1エントリと、メディア処理に対応付ける第2エントリとに分割する(S124)。
このエントリ指定レジスタ135に設定された対応関係と、アクセス元のスレッドのTVID140とを参照して、TLB104は、ホスト処理に属するスレッドとメディア処理に属するスレッドとにエントリ150を割り当てる。
また、モニタプログラムは、ウェイ指定レジスタ136にTVID140(又はLP)とウェイ168との対応関係を設定することにより、キャッシュメモリ109が有する複数のウェイ168を、ホスト処理に対応付ける第1ウェイと、メディア処理に対応付ける第2ウェイとに分割する(S125)。
このウェイ指定レジスタ136に設定された対応関係と、アクセス元のスレッドのTVID140とを参照して、TLB104は、ホスト処理に属するスレッドとメディア処理に属するスレッドとにウェイ168を割り当てる。
また、モニタプログラムは、FPU割り当てレジスタ137にTVID140とFPU107との対応関係を設定することにより、複数のFPU107を、ホスト処理に対応付ける第1FPUと、メディア処理に対応付ける第2FPUとに分割する(S126)。
このFPU割り当てレジスタ137に設定された対応関係と、スレッドのTVID140とを参照して、FPU割り当て部108は、ホスト処理に属するスレッドとメディア処理に属するスレッドとにFPU107を割り当てる。
また、モニタプログラムは、バスバンド幅指定レジスタ138に、MVID142とバスバンド幅との対応関係を設定することにより、外部メモリ15とメモリIFブロック14との間のバスバンド幅を、ホスト処理に対応付ける第1バスバンド幅と、メディア処理に対応付ける第2バスバンド幅とに分割する(S127)。
このバスバンド幅指定レジスタ138に設定された対応関係と、アクセス元のスレッドのMVID142とを参照して、メモリIFブロック14は、ホスト処理に属するスレッドとメディア処理に属するスレッドとにバスバンド幅を割り当てる。
また、モニタプログラムは、物理アドレスと論理アドレスとの対応関係を示すページテーブルを作成する。この際、モニタプログラムは、PVID141と物理アドレスとの対応関係を設定することにより、外部メモリ15の物理アドレス空間を、ホスト処理に対応付ける第1物理アドレス範囲と、メディア処理に対応付ける第2物理アドレス範囲とに分割するとともに、第1物理アドレス範囲をホスト処理のスレッドに割り当て、第2物理アドレス範囲をメディア処理のスレッドに割り当てる(S128)。また、モニタプログラムは、PVID141と物理アドレスとの当該対応関係を物理メモリ保護レジスタ131に設定することにより、物理アドレスの保護を行う。
また、モニタプログラムは、割り込み制御レジスタ134に、各割り込み要因に対応させて、割り込み先のLP等を設定する(S129)。これにより、モニタプログラムは、ホスト処理とメディア処理とにそれぞれ独立した割り込み制御を行える。
この割り込み制御レジスタ134に設定された対応関係と、割り込み要因とを参照して、割り込み制御部111は、当該割り込み要因に対応するスレッドに割り込みを送る。
なお、モニタプログラムによる、各設定の順序は、図28に示す順序に限定されるものではない。
なお、モニタプログラムでページテーブルを作成せずに、TVID140を割り当てられたスーパーバイザーレベルの各OSが、それぞれ割り当てられた、物理アドレスに対応する論理アドレスを決めて、それぞれページテーブルを作成することも可能であり、本発明はこれを限定するものではない。
以上より、本実施の形態に係るプロセッサシステム10は、資源を共用してホスト処理とメディア処理とを行う単一のプロセッサブロック11を備えることにより、面積効率を向上できる。さらに、プロセッサシステム10は、ホスト処理のスレッドとメディア処理のスレッドとに、異なるタグ情報(TVID140、PVID141及びMVID142)を与えるとともに、プロセッサシステム10が有する資源を当該タグ情報に対応付けて分割する。これによりプロセッサシステム10は、ホスト処理とメディア処理とにそれぞれ独立した資源を割り当てることができる。よって、ホスト処理とメディア処理との間で資源の競合が生じないので、プロセッサシステム10は、性能の保障、及び堅牢性を向上できる。
また、物理アドレス管理部105は、PVID141を用いて、各スレッドが指定された物理アドレス範囲以外にアクセスしようとした場合には、割り込みを発生する。これにより、プロセッサシステム10は、システムの堅牢性を向上できる。
以上、本実施の形態に係るプロセッサシステム10について説明したが、本発明は、この実施の形態に限定されるものではない。
例えば、上記説明では、プロセッサブロック11がホスト処理とメディア処理との2種類の処理を行う例を述べたが、それ以外の処理を含む3種類以上の処理を行ってもよい。この場合、当該3種類以上の処理にそれぞれ対応する3種類以上のTVID140が複数のスレッドに付与される。
同様に、PVID141及びMVID142の種類も上述した数に限定されるものではなく、複数であればよい。
また、上記説明において、複数のスレッドをグループ分けするためのタグ情報として、TVID140、PVID141及びMVID142の3種類を述べたが、プロセッサシステム10は、一つのタグ情報(例えば、TVID140)のみを用いてもよい。つまり、プロセッサシステム10は、PVID141及びMVID142を用いず、物理アドレスの管理及びバス幅の制御にも、TVID140を用いてもよい。また、プロセッサシステム10は、2種類のタグ情報を用いてもよいし、4種類以上のタグ情報を用いてもよい。
また、上記説明では、割り込み制御レジスタ134、エントリ指定レジスタ135、ウェイ指定レジスタ136、FPU割り当てレジスタ137及びページテーブルは、仮想モニタレベルのOS(モニタプログラム)により設定及び更新されるとしたが、仮想モニタレベルのOSの指示により、スーパーバイザーレベルのOSが割り込み制御レジスタ134、エントリ指定レジスタ135、ウェイ指定レジスタ136、FPU割り当てレジスタ137及びページテーブルを設定及び更新してもよい。つまり、仮想モニタレベルのOSによりスーパーバイザーレベルOSに、当該スーパーバイザーレベルのOSに割り当てられた資源が通知され、当該スーパーバイザーレベルのOSは、通知された資源を用いるように割り込み制御レジスタ134、エントリ指定レジスタ135、ウェイ指定レジスタ136、FPU割り当てレジスタ137及びページテーブルを設定及び更新してもよい。
また、上記実施の形態に係るプロセッサシステム10に含まれる各処理部は典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されてもよいし、一部又はすべてを含むように1チップ化されてもよい。
ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後にプログラムすることが可能なFPGA(Field Programmable Gate Array)、又はLSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて各処理部の集積化を行ってもよい。バイオ技術の適用等が可能性として考えられる。
また、本発明の実施の形態に係るプロセッサシステム10の機能の一部又は全てを、実行部101等がプログラムを実行することにより実現してもよい。
さらに、本発明は上記プログラムであってもよいし、上記プログラムが記録された記録媒体であってもよい。また、上記プログラムは、インターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
また、上記実施の形態に係るプロセッサシステム10及びその変形例の機能のうち少なくとも一部を組み合わせてもよい。
本発明は、プロセッサ装置およびマルチスレッドプロセッサ装置に適用でき、特に、デジタルテレビ、DVDレコーダ、デジタルカメラおよび携帯電話機等に搭載されるメディア処理用のプロセッサ装置およびマルチスレッドプロセッサ装置に適している。
10 プロセッサシステム
11 プロセッサブロック
12 ストリームI/Oブロック
13 AVIOブロック
14 メモリIFブロック
15 外部メモリ
16 制御バス
17、18、19 データバス
101 実行部
102 VMPC
104 TLB
105 物理アドレス管理部
107 FPU
108 FPU割り当て部
109 キャッシュメモリ
110 BCU
111 割り込み制御部
121 物理プロセッサ
122 演算制御部
123 演算部
124 コンテキスト
126 スケジューラ
127 コンテキストメモリ
128 コンテキスト制御部
130 アドレス変換テーブル
131 物理メモリ保護レジスタ
132 保護違反レジスタ
133 エラーアドレスレジスタ
134 割り込み制御レジスタ
135 エントリ指定レジスタ
136 ウェイ指定レジスタ
137 FPU割り当てレジスタ
138 バスバンド幅指定レジスタ
150 エントリ
151 TLBタグ部
152 TLBデータ部
168 ウェイ
171 システム割り込み
172 LP識別子
173 LP割り込み
174 HWイベント
210 命令準備部
213、223、233 状態レジスタ部
214 レジスタ部
215、225、235 第1判定部
216、226、236 第2判定部
220 命令準備部
230 命令準備部
240 実行パイプライン部
250 制御部
251 第1転送部
251a、251b、251c 退避復帰部
252 第2転送部
253 クリア部
260、270 ハードウェア資源
261、271 レジスタ群
310、320、330 メモリ
311 コンテキストデータ
312 拡張コンテキストデータ
プロセッサ装置のプログラムを切り替えながら実行する複数のプロセッサを有するプロセッサ装置およびマルチスレッドプロセッサ装置に関し、特にハードウェア資源を複数のプロセッサで共有するプロセッサ装置およびマルチスレッドプロセッサ装置に関する。
近年のデジタル技術、動画像及び音声の圧縮伸張技術の急速な進展に伴い、デジタルテレビ、デジタルビデオレコーダ(DVDレコーダ等)、携帯電話、及び映像音声機器(ビデオカメラ等)に搭載されるプロセッサに、さらなる高性能化が求められている。
例えば、高性能化を実現するプロセッサとしてマルチスレッドプロセッサが知られている(例えば、特許文献1参照)。このマルチスレッドプロセッサは、複数のスレッドを同時に実行することにより、処理効率を向上できる。また、マルチスレッドプロセッサは、複数のスレッドの実行において、資源の共有が可能となるので、複数のプロセッサを独立に設ける場合に比べて、プロセッサの面積効率を向上できる。
一方、このようなプロセッサでは、リアルタイム性が要求されない制御関連のホスト処理と、リアルタイム性が要求される動画像の圧縮及び伸張処理等のメディア処理とが行われる。
例えば、特許文献2記載の映像音声処理用集積回路は、ホスト処理を行うマイコンブロックと、メディア処理を行うメディア処理ブロックとをそれぞれ備える。
また、FPU(浮動小数点演算装置:Floating Point number processing Unit)のコンテキスト切り替えを必要最小限にする技術としてレイジー・コンテキスト・スイッチ(Lazy context switch)という技術がある。この方法によれば、実行コンテキストで、FPU命令を実行することが必要になった時までFPUコンテキストの退避と復帰を遅らせ
て行う。つまり、通常のプロセッサのコンテキストの退避および復帰とは非同期に、FPUのコンテキスト切り換えを行い、その機会を必要最小限に抑える。
FPUは多数のレジスタを有すること、時分割多重化されるプログラムにはFPUを使用しないプログラムも存在することから、上記方法は、FPUコンテキストの退避および復帰のオーバヘッドの低減を図っている。
特開2006−302261号公報
国際公開第2005/096168号
特開2003−271399号公報
特開2008−123045号公報
特開2004−246862号公報
しかしながら、マルチプロセッサにおいてFPU等のハードウェア資源を利用する場合には、次の問題がある。
プロセッサ毎にFPUを備えプロセッサ毎にレイジー・コンテキスト・スイッチを適用する場合には、回路規模が増大する。さらに、プロセッサ間でFPUの稼動率にばらつきが生じ、使用効率を向上できない。
本発明は、複数のプロセッサでFPU等のハードウェア資源を共有し、使用効率を向上させるプロセッサ装置およびマルチスレッドプロセッサ装置を提供することを目的とする。
上記の課題を解決するために本発明のプロセッサ装置は、複数のプログラムを切り替えながら実行する複数のプロセッサと、データを保持するレジスタを有し前記複数のプロセッサの命令実行を補完する1つ以上のハードウェア資源と、前記複数のプログラムのうち前記ハードウェア資源を利用する所定命令を含むプログラム毎に、前記ハードウェア資源内のレジスタデータのコピーである拡張コンテキストデータを記憶するメモリと、前記ハードウェア資源と前記メモリとの間で、拡張コンテキストデータの退避と復帰とを制御する制御部と、前記ハードウェア資源内に現在実行中のプログラムの拡張コンテキストデータが保持されている可能性があるか否かを判定する第1判定部と、前記ハードウェア資源内の拡張コンテキストデータが前記所定命令を実行しようとしたプロセッサに属するか否かを判定する第2判定部と、を備え、前記可能性があると前記第1判定部によって判定され、かつ、前記ハードウェア資源内の拡張コンテキストデータが、前記所定命令を実行しようとしたプロセッサに属すると前記第2判定部によって判定された場合に、前記制御部が拡張コンテキストデータの退避および復帰を行うことなく、前記ハードウェア資源は当該所定命令を実行する。
この構成によれば、各ハードウェア資源を複数のプロセッサで共有することができる。つまり、どのプロセッサでも各ハードウェア資源を使用することができる。それゆえ、ハードウェア資源の使用効率を向上させることができる。ハードウェア資源をプロセッサ毎に備える必要がないので、必要な処理性能に応じた個数の必要最小限のハードウェア資源を備えればよく、回路規模を削減または最適化することができる。
ここで、前記制御部は、前記第1判定部および前記第2判定部の判定結果に応じて、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータと同じプロセッサに属する拡張コンテキストデータを復帰する第1転送部と、前記第1判定部および前記第2判定部の判定結果に応じて、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータとは異なるプロセッサに属する拡張コンテキストデータを復帰する第2転送部とを備えるようにしてもよい。
ここで、前記ハードウェア資源は前記複数のプロセッサが実行できない拡張命令を実行する拡張演算ユニットであり、前記所定の命令は前記拡張命令であってもよい。
この構成によれば、FPUやハードウェアアクセラレータ等の拡張演算ユニットを効率よく複数のプロセッサで共有することができ、拡張コンテキストデータの退避および復帰を最小限にすることができる。
ここで、前記第1判定部は、複数のプロセッサのそれぞれに設けられたデータ判定部を含み、各データ判定部は、当該データ判定部に対応するプロセッサがプログラム中の前記所定命令を実行しようとしたとき、当該データ判定部に対応するプロセッサで現在実行中のプログラムの拡張コンテキストデータが前記ハードウェア資源内に保持されている可能性があるか否かを判定し、前記第2判定部は、複数のプロセッサのそれぞれに設けられたプロセッサ判定部を含み、各プロセッサ判定部は、前記ハードウェア資源内の拡張コンテキストデータが前記所定命令を実行しようとしたプロセッサに属するか否かを判定するようにしてもよい。
この構成によれば、データ判定部およびプロセッサ判定部はプロセッサ毎に備えられるので、ハードウェア資源が現在実行中のプログラム(つまり所定命令を発行したプログラム)の拡張コンテキストデータを保持している場合には、他のプロセッサになんら影響を与えることなく、ハードウェア資源を使用することができる。
ここで、前記複数のプロセッサのそれぞれは、状態レジスタを有し、各状態レジスタのデータのコピーは、プログラム毎のコンテキストデータに含まれ、各状態レジスタは、前記ハードウェア資源毎に、現在実行中のプログラムの拡張コンテキストデータが当該ハードウェア資源内に保持されている可能性があるか否かを示す第1状態情報と、前記ハードウェア資源毎に当該ハードウェア資源内に保持されている拡張コンテキストデータに対応するプロセッサを示す第2状態情報とを保持し、前記各データ判定部は、対応するプロセッサがプログラム中の前記所定命令を実行しようとしたとき、前記第1状態情報が真か偽かを判定し、偽であると判定したとき第1の例外割込み信号を発生する第1判定回路を含み、前記各プロセッサ判定部は、対応する前記第1判定回路が真であると判定したとき、対応するプロセッサと前記第2状態情報が示すプロセッサとが一致するか否かを判定し、偽であると判定したとき第2の例外割込み信号を発生する第2判定回路を含み、前記ハードウェア資源は、前記第2判定回路が一致すると判定したとき、拡張コンテキストデータの退避および復帰を待つことなく、当該所定命令に従って即座に動作するとしてもよい。
この構成によれば、データ判定部およびプロセッサ判定部はハードウェア(第1判定回路および第2判定回路)により構成されるので、ハードウェア資源が現在実行中のプログラム(つまり所定命令を発行したプログラム)の拡張コンテキストデータを保持している場合には、他のプロセッサになんら影響を与えることなく、かつ、高速にハードウェア資源を使用することができる。
ここで、前記第1転送部は、プロセッサ毎に設けられた退避復帰部を含み、各退避復帰部は、前記第1の例外割り込み信号が発生した場合に前記ハードウェア資源から前記メモ
リに拡張コンテキストデータを退避し、前記メモリから前記ハードウェア資源に前記所定命令を実行しようとしたプロセッサの拡張コンテキストデータを復帰し、前記複数のプロセッサは、第1のプロセッサと第2のプロセッサとを含み、前記第1のプロセッサは第1のオペレーティングシステムを実行することによって複数のプログラムを時分割多重で実行し、前記第2のプロセッサは第1のオペレーティングシステムとは異なる第2のオペレーティングシステムを実行することによって複数のプログラムを時分割多重で実行し、前記第1のプロセッサ内の前記退避復帰部は、前記第1のプロセッサ内の前記第1判定回路が前記第1の例外割込み信号を発生したとき、前記第1のオペレーティングシステムによって起動され、前記第2のプロセッサ内の前記退避復帰部は、前記第2のプロセッサ内の前記第1判定回路が前記第1の例外割込み信号を発生したとき、第2のオペレーティングシステムによって起動されるようにしてもよい。
この構成によれば、異なるオペレーティングシステム(以下OSと略す)を実行するプロセッサ間でハードウェア資源を共有することができる。プロセッサ内のプログラム間でハードウェア資源の拡張コンテキストデータの切り替えが必要な場合は、他のOSに影響を与えることなく、OS内で効率よく拡張コンテキストデータを切り替えることができる。
ここで、前記複数のプロセッサの少なくとも1つは、前記第1のオペレーティングシステムと前記第2のオペレーティングシステムとを管理する第3のオペレーティングシステムを実行し、前記第2の転送部は、何れかの前記第2判定回路が前記第2の例外割込み信号を発生したとき、第3のオペレーティングシステムによって起動されるようにしてもよい。
この構成によれば、異なるオペレーティングシステム(以下OSと略す)を実行するプロセッサ間でハードウェア資源を共有することができる。異なるOSを実行するプロセッサ間でハードウェア資源の拡張コンテキストデータの切り替えが必要な場合は、第3のOSの管理の下で、拡張コンテキストデータを切り替える。これにより、どのプロセッサ上のプログラムに対しても拡張コンテキストデータの切り替えが隠蔽されるので、従来のプログラムを容易に流用することができる。
ここで、前記第3オペレーティングシステムは、何れかの前記第2判定回路が前記第2の例外割込み信号を発生したとき、当該ハードウェア資源が他のプロセッサの所定命令を実行中である場合は、当該ハードウェア資源が解放されるのを待ち、当該ハードウェア資源を確保した後に、前記第2の転送部を起動するようにしてもよい。
この構成によれば、異なるOSのプロセッサ間で所定の命令が競合した場合(ハードウェア資源の使用が競合した場合)でも、第3のOSの管理の下で容易に調停することができる。
ここで、前記第2転送部は、前記ハードウェア資源から前記メモリに前記他のプロセッサに対応する拡張コンテキストデータを退避する動作の開始から、前記メモリから前記ハードウェア資源に前記所定命令を実行しようとしたプロセッサの拡張コンテキストデータを復帰する動作の完了までをアトミックに行うようにしてもよい。
この構成によれば、第2転送部は上記の退避開始から復帰完了までをアトミックに行うので、プログラム毎のコンテキストデータ(特に第1状態情報および第2状態情報)に矛盾を生じさせることなく、他のプロセッサからの干渉を受けることなく、異なるプロセッサ間でハードウェア資源を共有することができる。
ここで、各プロセッサは、さらに、当該プロセッサが停止状態、待ち状態または休眠状態に遷移したとき、当該プロセッサに対応する第2状態情報をクリアするクリア回路を備えるようにしてもよい。
この構成によれば、1つのプロセッサが停止状態、待ち状態または休眠状態に遷移したときに、クリア回路によって当該プロセッサが使用しているハードウェア資源を解放することができ、複数のプロセッサで共有されるハードウェア資源の使用効率を向上させる。
ここで、前記各状態レジスタは、第2状態情報をロックするか否かを示す第3状態情報を保持し、前記第3オペレーティングシステムは、第3状態情報が第2状態情報をロックすることを示すとき、前記クリア回路による第2状態情報のクリアを禁止するようにしてもよい。
この構成によれば、ハードウェア資源を使用するプロセッサが固定的である場合や、ハードウェア資源をあるプロセッサが優先して使用する場合に、プログラマが第3状態情報を「ロック」に設定することにより、ハードウェア資源を当該プロセッサに占有させ続けることができ、無駄な拡張コンテキストデータの退避および復帰を削減することができる。
また、本発明のプロセッサ装置は、複数のスレッドを同時に実行することによって、複数のプログラムを切り替える複数の仮想プロセッサを備えるマルチスレッドプロセッサと、データを保持するレジスタを有し前記複数の仮想プロセッサの命令実行を補完する1つ以上のハードウェア資源と、前記複数のプログラムのうち前記ハードウェア資源を利用する所定命令を含むプログラム毎に、前記ハードウェア資源内のレジスタデータのコピーである拡張コンテキストデータを記憶するメモリと、前記ハードウェア資源と前記メモリとの間で、拡張コンテキストデータの退避と復帰とを制御する制御部と、前記ハードウェア資源内に現在実行中のプログラムの拡張コンテキストデータが保持されている可能性があるか否かを判定する第1判定部と、前記ハードウェア資源内の拡張コンテキストデータが前記所定命令を実行しようとした仮想プロセッサに属するか否かを判定する第2判定部と、を備え、前記可能性があると前記第1判定部によって判定され、かつ、前記ハードウェア資源内の拡張コンテキストデータが、前記所定命令を実行しようとした仮想プロセッサに属すると前記第2判定部によって判定された場合に、前記制御部が拡張コンテキストデータの退避および復帰を行うことなく、前記ハードウェア資源は当該所定命令を実行する構成であってもよい。
この構成によれば、上記と同様の効果がある。
ここで、前記制御部は、前記第1判定部および前記第2判定部の判定結果に応じて、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータと同じ仮想プロセッサに属する拡張コンテキストデータを復帰する第1転送部と、前記第1判定部および前記第2判定部の判定結果に応じて、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータとは異なる仮想プロセッサに属する拡張コンテキストデータを復帰する第2転送部とを備える構成としてもよい。
ここで、前記複数の仮想プロセッサのそれぞれは、少なくとも1つのスレッドに対応し、前記マルチスレッドプロセッサは、スレッドの命令をフェッチおよび解読する複数の命令準備部と、前記複数の命令準備部により解読された命令であって、1以上のスレッドに対応する1以上の命令を同時に実行する実行部と、命令準備部毎に設けられた状態レジスタとを有し、前記制御部は、命令準備部毎に、現在のスレッドを他のスレッドに入れ替えることによって、前記複数の仮想プロセッサのうち実行中の仮想プロセッサと実行中でな
い仮想プロセッサとを入れ替え、各状態レジスタのデータのコピーは、仮想プロセッサ毎のコンテキストデータに含まれ、各状態レジスタは、前記ハードウェア資源毎に、現在実行中の仮想プロセッサの拡張コンテキストデータが当該ハードウェア資源内に保持されている可能性があるか否かを示す第1状態情報と、前記ハードウェア資源毎に当該ハードウェア資源内に保持されている拡張コンテキストデータに対応する仮想プロセッサを示す第2状態情報とを保持し、前記マルチスレッドプロセッサは、さらに、スレッドの入れ替えによって実行中の仮想プロセッサが実行中でなくなったときに、スレッドの入れ替えがあった命令準備部内の状態レジスタの第2状態情報をクリアするクリア回路を備える構成としてもよい。
ここで、前記第1判定部は、前記複数の命令準備部のそれぞれに設けられたデータ判定部を含み、前記各データ判定部は、対応する命令準備部のスレッドが前記所定命令を実行しようとしたとき、前記第1状態情報が真か偽かを判定することによって、現在実行中のプログラムの拡張コンテキストデータが前記ハードウェア資源内に保持されている可能性があるか否かを判定し、前記第2判定部は、前記複数の命令準備部のそれぞれに設けられたプロセッサ判定部を含み、前記各プロセッサ判定部は、対応する命令準備部内の前記データ判定部が偽であると判定したとき、対応する命令準備部の仮想プロセッサと前記第2状態情報が示す仮想プロセッサとが一致するか否かを判定し、偽であると判定したとき第2の例外割込み信号を発生し、前記マルチスレッドプロセッサは、さらに、前記プロセッサ判定部からの第2の例外割込み信号によって起動される第2の例外割り込み処理を、オペレーティングシステムの一部の機能として実行し、前記オペレーティングシステムは、前記ハードウェア資源の獲得処理と、前記ハードウェア資源の解放を待つ待ち処理を含み、前記オペレーティングシステムは、前記第2の例外割り込み信号を発生させた仮想プロセッサの属する命令準備部以外の命令準備部に属する仮想プロセッサにおいて当該ハードウェア資源が使用中でない場合に、前記獲得処理として、前記第2の例外割り込み信号を発生させた命令準備部内の状態レジスタに、真を示す第1状態情報と、前記第2の例外割り込み信号を発生させた仮想プロセッサを示す第2状態情報とを設定し、前記第2の例外割り込み信号を発生させた仮想プロセッサの属する命令準備部以外の命令準備部において仮想プロセッサにおいて当該ハードウェア資源が使用中である場合に、前記待ち処理を実行する構成としてもよい。
この構成によれば、ハードウェア資源(例えば、FPUやハードウェアアクセラレータ等の拡張演算ユニット)を複数のプロセッサで効率良く共有することができる。つまり、どのプロセッサでも各ハードウェア資源を使用することができる。それゆえ、ハードウェア資源の使用効率を向上させることができる。ハードウェア資源をプロセッサ毎に備える必要がないので、必要な処理性能に応じた個数の必要最小限のハードウェア資源を備えればよく、回路規模を削減または最適化することができる。
図1は、第1の実施の形態におけるプロセッサ装置の構成を示すブロック図である。
図2は、第1の実施の形態における状態レジスタ部内の第1〜第3状態情報の一例を示す図である。
図3は、第1の実施の形態におけるプロセッサ装置におけるオペレーティングシステムについての説明図である。
図4は、第1の実施の形態におけるハードウェア資源切り替え動作を示すフローチャートである。
図5は、第1の実施の形態における第3のOSが管理するデータの一例を示す図である。
図6は、第1の実施の形態におけるハードウェア資源切り替え動作を示す詳細なフローチャートである。
図7は、第2の実施の形態に係るプロセッサシステムの構成を示すブロック図である。
図8は、第2の実施の形態に係るプロセッサブロックの構成を示すブロック図である。
図9は、第2の実施の形態に係るコンテキストの構成を示す図である。
図10は、第2の実施の形態に係る論理アドレス空間の管理を示す図である。
図11は、第2の実施の形態に係るアドレス管理テーブルの構成を示す図である。
図12は、第2の実施の形態における、論理アドレスの対応関係を示す図である。
図13は、第2の実施の形態に係るエントリ指定レジスタの構成を示す図である。
図14は、第2の実施の形態に係るTLBによるエントリの割り当て処理を示す図である。
図15は、第2の実施の形態に係るTLBによる処理の流れを示すフローチャートである。
図16は、第2の実施の形態に係る物理保護レジスタの構成を示す図である。
図17は、第2の実施の形態において、PVIDにより保護される物理アドレス空間を示す図である。
図18は、第2の実施の形態に係る保護違反レジスタの構成を示す図である。
図19は、第2の実施の形態に係るエラーアドレスレジスタの構成を示す図である。
図20は、第2の実施の形態に係るFPU割り当てレジスタの構成を示す図である。
図21は、第2の実施の形態に係るFPU割り当て部によるFPUの割り当て処理を示す図である。
図22Aは、第2の実施の形態に係るウェイ指定レジスタの構成を示す図である。
図22Bは、第2の実施の形態に係るウェイ指定レジスタの構成を示す図である。
図23は、第2の実施の形態に係るキャッシュメモリによるウェイの割り当て処理を模式的に示す図である。
図24は、第2の実施の形態に係るキャッシュメモリによる処理の流れを示すフローチャートである。
図25は、第2の実施の形態に係る割り込み制御レジスタの構成を示す図である。
図26は、第2の実施の形態に係るプロセッサシステムにおける、メモリアクセス管理を示す図である。
図27は、第2の実施の形態に係るメモリIFブロックによるバスバンド幅の割り当てを示す図である。
図28は、第2の実施の形態に係るプロセッサシステムにおける資源分割処理の流れを示すフローチャートである。
(第1の実施の形態)
本実施形態におけるプロセッサ装置は、複数のプロセッサ間でハードウェア資源を共有するプロセッサ装置であって、ハードウェア資源内のレジスタに現在実行中の何れかのプログラムの拡張コンテキストデータが保持されているか否かを判定する第1判定部と、前記ハードウェア資源内の拡張コンテキストデータが、どのプロセッサに対応するかを判定する第2判定部と、プロセッサ内のプログラム間で拡張コンテキストデータの退避と復帰とを行う第1転送部と、プロセッサ間のプログラム間で拡張コンテキストデータの退避と復帰とを行う第2転送部とを備える。
図1は、本発明の第1の実施の形態におけるプロセッサ装置の構成を示すブロック図である。このプロセッサ装置は、命令準備部210、220および230と、実行パイプライン部240と、制御部250と、ハードウェア資源260および270と、メモリ310、320、330とを備える。
命令準備部210、220、230および実行パイプライン部240は、マルチスレッドプロセッサを構成する。命令準備部210、220、230はそれぞれ独立にスレッド(プログラム)から命令をフェッチおよび解読し、解読結果を実行パイプライン部240に発行する。
実行パイプライン部240は、複数の機能ユニット(ALU、ロード/ストアユニット、分岐処理ユニット、乗算器、除算器等)を備え、複数の命令解読結果のうち実行可能な命令を、複数の機能ユニットで同時に実行する。1つの命令準備部と実行パイプライン部240の組は、実質的に1つのプロセッサとして機能するので、仮想プロセッサまたは論理プロセッサと呼ぶ。つまり、命令準備部210、220、230および実行パイプライン部240は、3つの仮想プロセッサ0〜2に相当する。各仮想プロセッサはプログラムを切り替えながら実行する。なお、命令準備部210、220、230および実行パイプライン部240の代わりに、独立に動作する複数の物理プロセッサを備えてもよい。以下では、3つの仮想プロセッサ0〜2(論理プロセッサ)と3つの物理プロセッサとを特に区別する必要がない場合は、単にプロセッサ0〜2と呼ぶ。
メモリ310、320および330は3つのプロセッサに対応するアドレス空間を有する。メモリ310は、プログラム、プログラムの通常のコンテキストデータ311、ハードウェア資源の拡張コンテキストデータ312等を記憶する。メモリ320および330についても同様である。3つのメモリ310、320および330は、物理アドレス空間は1つで、3つの独立した仮想アドレス空間を有する。なお、3つのメモリ310、320および330は3つの独立した物理アドレス空間を有していてもよい。また、コンテキストデータ311、321および331を別のコンテキストデータ専用のメモリに格納しても良い。
命令準備部210は、メモリ310から命令をフェッチする命令フェッチ部211と、フェッチされた命令を解読する命令解読部212と、状態レジスタ部213と、レジスタ部214と、第1判定部215と、第2判定部216とを備える。
命令準備部220は、メモリ320から命令をフェッチする命令フェッチ部221と、フェッチされた命令を解読する命令解読部222と、状態レジスタ部223と、レジスタ部224と、第1判定部225と、第2判定部226とを備える。
命令準備部230は、メモリ330から命令をフェッチする命令フェッチ部231と、フェッチされた命令を解読する命令解読部232と、状態レジスタ部233と、レジスタ部234と、第1判定部235と、第2判定部236とを備える。
状態レジスタ部213およびレジスタ部214の各データは、実行中のプログラムのコンテキストデータを構成する。状態レジスタ部223およびレジスタ部224についても同様である。状態レジスタ部233およびレジスタ部234についても同様である。
制御部250は、第1転送部251、第2転送部252を有し、ハードウェア資源260および270とメモリ310、320および330との間で、拡張コンテキストデータの退避と復帰とを制御する。
ハードウェア資源260、270はそれぞれ、データを保持するレジスタ群261、271を有し、複数のプロセッサを補完する。各ハードウェア資源は、例えば、FPU(浮動小数点演算装置:Floating Point number processing Unit)、ハードウェアアクセラレータ、拡張演算ユニットなどでよい。FPUは、プログラム中の浮動小数点演算命令(以下、FPU命令と呼ぶ。)を実行する。ハードウェアアクセラレータは、プロセッサからコマンドを受けて、指定されたデータに対して積和演算、バタフライ演算、ブロックデータの量子化または逆量子化等を高速に実行する。拡張演算ユニットは、プロセッサが直接実行できない拡張命令(乗算命令、除算命令、拡張演算ユニットに専用の命令等)を実行する。
レジスタ群261、271のそれぞれは、対応するハードウェア資源のコンテキスト(以下、拡張コンテキストデータと呼ぶ。)を保持する。各ハードウェア資源は、複数のプロセッサに共有される。ここで、拡張コンテキストデータは、各プロセッサにおけるプログラムのコンテキストデータの退避および復帰とは非同期に行われる。つまり、プロセッサが、ハードウェア資源を利用する所定命令(上記のFPU命令、コマンド、拡張命令)を実際に実行し、その拡張コンテキストデータを必要とする時にだけ、退避および復帰される。
メモリ310は、複数のプロセッサによって時分割多重化されるプログラムのそれぞれのコンテキストデータ311と、複数のプログラムのうちハードウェア資源を利用する所定命令を含むプログラム毎に、前記ハードウェア資源内のレジスタデータのコピーである拡張コンテキストデータ312を記憶する。同様にメモリ320は、コンテキストデータ321、拡張コンテキストデータ322を記憶する。メモリ330は、コンテキストデータ331、拡張コンテキストデータ332を記憶する。
第1判定部215は、命令準備部210に対応するプロセッサがプログラム中の所定命令を実行しようとしたとき、ハードウェア資源内のレジスタに現在実行中のプログラムの拡張コンテキストデータが保持されているか否かを判定する。
第2判定部216は、ハードウェア資源内の拡張コンテキストデータが、当該所定命令を実行しようとするプロセッサに属するか否かを判定する。
第1転送部251は、第1判定部215および第2判定部216の判定結果に応じて、ハードウェア資源からメモリ310、320、330の何れかに拡張コンテキストデータを退避し、退避した拡張コンテキストデータと同じプロセッサ(または同じメモリ)に属するコンテキストデータを復帰する。復帰後、ハードウェア資源260または270は、当該所定命令を実行する。
第2転送部252は、第1判定部215および第2判定部216の判定結果に応じて、ハードウェア資源からメモリ310、320、330の何れかに拡張コンテキストデータを退避し、退避した拡張コンテキストデータとは異なるプロセッサ(または異なるメモリ)に属するコンテキストデータを復帰する。復帰後、ハードウェア資源260または27
0は、当該所定命令を実行する。
ハードウェア資源260または270は、ハードウェア資源内のレジスタに現在実行中のプログラムの拡張コンテキストデータが保持されていると第1判定部215によって判定され、かつ、ハードウェア資源内の拡張コンテキストデータが、当該所定命令を実行しようとするプロセッサに属すると第2判定部216によって判定された場合は、拡張コンテキストデータの退避および復帰を待つことなく、当該所定命令を即座に実行する。
以上の構成により、各ハードウェア資源260または270を複数のプロセッサで共有することができる。つまり、どのプロセッサでも各ハードウェア資源を使用することができる。それゆえ、ハードウェア資源の使用効率を向上させることができる。また、ハードウェア資源をプロセッサ毎に備える必要がないので、必要な処理性能に応じた個数の必要最小限のハードウェア資源を備えればよく、回路規模を削減または最適化することができる。
図2は、本発明の第1の実施の形態における状態レジスタ部内の第1〜第3状態情報の一例を示す図である。
同図は、状態レジスタ部213、223または233の一部を示している。ここでは、状態レジスタ部213を代表として説明する。状態レジスタ部213は、PSR(Processor Status Register)と呼ばれるレジスタと、LPFOSR(Logical Processor FPU Operation Status Register)と呼ばれるレジスタとを含む。このうちPSR(Processor Status Register)は、プログラムのコンテキストデータ311に含まれる。LPFOSRは、プログラムのコンテキストデータ311に含まれるか、プログラムのコンテキストデータ311に含まれないで別途OSによって管理される。
PSRは、現在実行中のプログラムの拡張コンテキストデータがハードウェア資源内に保持されている可能性があることを示す第1状態情報としてFE(FPU Enable)ビットを含む。
LPFOSRは、ハードウェア資源内に保持されている拡張コンテキストデータに対応するプロセッサを示す第2状態情報としてLPFE0(Logical Processor FPU Enable 0)、LPFE1ビットを含む。LPFE0、LPFE1ビットは、排他的に何れか1ビットのみ“1”になるか、全て“0”になる。この例では、LPFE0ビットは、プロセッサ0に対応し、LPFE1ビットは、プロセッサ1および2に対応するものとする。LPFOSRは、さらに、第2状態情報をロックするか否かを示す第3状態情報(FLビット)を含む。
つまり、実行中のプログラムのPSRのFEビットが、拡張コンテキストデータがハードウェア資源内に保持されている可能性があることを示していて、更に、そのプログラムを実行中のプロセッサが、ハードウェア資源内に保持されている拡張コンテキストデータに対応していることを、LPFE0または、LPFE1によって示されている場合に、そのプロセッサは、LPFE0または、LPFE1によって示されている、いずれかのハードウェア資源を使用することが可能になる。
第1判定部215は、対応するプロセッサがプログラム中の前記所定命令を実行しようとしたとき、前記第1状態情報が真か偽かを判定し、偽であると判定したとき第1の例外割込み信号を発生する第1判定回路(データ判定部)を含む。
第2判定部216は、対応する前記第1判定回路が偽であると判定したとき、対応する
プロセッサと前記第2状態情報が示すプロセッサとが一致するか否かを判定し、偽であると判定したとき第2の例外割込み信号を発生する第2判定回路(プロセッサ判定部)を含む。第1および第2判定回路はハードウェアにて構成される。これにより、特に拡張コンテキストデータの入れ替えが不要な場合の処理を高速化する。
図3は、本発明の第1の実施の形態におけるプロセッサ装置におけるオペレーティングシステムについての説明図である。
同図においてプロセッサ0〜2は、図1に示した3つの仮想プロセッサまたは3つの物理プロセッサに対応する。
プロセッサ0は第1のオペレーティングシステム(以下OSと略す。)を実行することによって複数のプログラムを時分割多重で実行する。
プロセッサ1および2は、第1のOSとは異なる第2のOSを実行することによって複数のプログラムを時分割多重で実行する。第1のOSは例えばLinux、第2のOSは例えばリアルタイムOSである。
第1転送部251は、プロセッサ毎に設けられた退避復帰部251a、251b、251cを含む。各退避復帰部は、第1の例外割り込み信号が発生した場合に前記ハードウェア資源から前記メモリに拡張コンテキストデータを退避し、前記メモリから前記ハードウェア資源に前記所定命令を実行しようとしたプロセッサの拡張コンテキストデータを復帰し、プロセッサ0内の前記退避復帰部251aは、プロセッサ0内の第1判定部215が第1の例外割込み信号を発生したとき、第1のOSによって起動される。
プロセッサ1および2の退避復帰部251b、251cは、プロセッサ1および2の第1判定部225、235が第1の例外割込み信号を発生したとき、第2のOSによって起動される。
プロセッサ0〜2のうちの少なくとも1つは、第1のOSと第2のOSとを管理する第3のOSを実行することによって、第2転送部252を制御する。すなわち、第2転送部252は、何れかの第2判定部が第2の例外割込み信号を発生したとき、第3のオペレーティングシステムによって起動される。起動された第2転送部252は、ハードウェア資源からメモリ310、320、330の何れかに他のプロセッサに属する拡張コンテキストデータを退避する動作の開始から、前記メモリから前記ハードウェア資源に前記所定命令を実行しようとしたプロセッサの拡張コンテキストデータを復帰する動作の完了までをアトミックに行う。これにより、プログラム毎のコンテキストデータ(特に第1状態情報および第2状態情報)に矛盾を生じさせることなく、他のプロセッサからの干渉を受けることなく、異なるプロセッサ間でハードウェア資源を共有することができる。
さらに、第3のOSは、クリア部253を制御する。クリア部253は、プロセッサ毎に備えられたクリア回路の総称である。各クリア回路は、当該クリア回路に対応するプロセッサが停止状態、待ち状態または休眠状態に遷移したとき、当該プロセッサに対応する第2状態情報(LPFE0およびLPFE1ビット)をクリアする。これにより、当該プロセッサが使用しているハードウェア資源を解放することができ、複数のプロセッサで共有されるハードウェア資源の使用効率を向上させる。ただし、第3状態情報(FLビット)がセットされている場合(FL=1の場合)は、クリア回路の動作は禁止される。これにより、ハードウェア資源を使用するプロセッサが固定的である場合や、ハードウェア資源をあるプロセッサが優先して使用する場合に、プログラマが第3状態情報を「ロック」に設定することにより、ハードウェア資源を当該プロセッサに占有させ続けることができ
、無駄な拡張コンテキストデータの退避および復帰を削減することができる。
図4は、本発明の第1の実施の形態におけるハードウェア資源切り替え動作の概略を示すフローチャート図である。同図では、プロセッサ0〜2のうちの何れか1つのプロセッサにおける動作を示している。ここでは、同図がプロセッサ0の動作を表し、ハードウェア資源がFPUであるものとして説明する。
プロセッサ0がFPU命令の実行しようとしたとき(FPU命令の実行要求をプロセッサ0がハードウェアにより検出したとき)(S30)、FPUレジスタが使用不可能であるか否かを判定する(S31)。“FPUレジスタが使用不可能でない”というのは、FE=1、かつLPFE0=1(または、LPFE1=1)の場合であり、FPUレジスタには、FPU命令の実行要求を出したプロセッサ0のプログラムに属する拡張コンテキストデータが保持されていることを意味する。この判定は、第1判定回路および第2判定回路により、ほぼ遅延時間なく、なされる。この場合、LPFE0または、LPFE1のいずれか1を示している方に対応したFPUによってFPU命令が即座に実行される(S34)。
さらに、“FPUレジスタが使用不可能である”場合は、FPUレジスタに他のプロセッサに属する拡張コンテキストデータが保持されているか否かを判定する(S32)。この判定は、第1判定回路および第2判定回路によりなされる。
FPUレジスタに同じプロセッサ0に属する拡張コンテキストデータが保持されているが、現在プロセッサ0で実行中のプログラムの拡張コンテキストデータでない場合は、つまり、そのプロセッサのPSRのFEビットは1であるが、LPFOSRのLPFE1かLPFE0のいずれかが1の場合は、LP内コンテキスト切り替えを行う(S36)。LP(Logical Processor)内コンテキスト切り替えは、第1転送部251によってなされる。
FPUレジスタに異なるプロセッサ1または2に属する拡張コンテキストデータが保持されている場合、つまりそのプロセッサのLPFOSRのLPFE1もLPFE0も0の場合は、LP間コンテキスト切り替えを行う(S41)。LP(Logical Processor)間コンテキスト切り替えは、第2転送部252によってなされる。
LP内またはLP間コンテキスト切り替えの後、FPUによってFPU命令が即座に実行される(S34)。
上記のうち、S30、S31、S32はプロセッサ内のハードウェアによって行われる。S34はFPUによって実行される。S36は第1のOSの制御の下で第1転送部251によって行われる。S41は、第3のOSの制御の下で第2転送部252によって行われる。
図5は、本発明の第1の実施の形態における第3のOSが管理するデータの一例を示す図である。
同図のテーブルT1は、プロセッサのID(ここではLPID)と、使用する予定のハードウェア資源(ここではFPU0、FPU1とする)とを対応付けたテーブルである。テーブルT2は、FPU番号と、現在FPUを占有しているプロセッサID(LPID)と、ロック属性(FLビット)とを対応付けたテーブルである。第3のOSは、テーブルT1、T2をそれぞれ常に最新の状態に更新し、ソフトウェア的にFPUを管理する。
第3のOSは、このようなテーブルを参照し、(1)FPU0、1と、LPIDの対応付け(新たにLPに割り当てるべきFPUの選択)、(2)現在のFPU0、1を使用しているLPID、(3)現在FPUnを使用しているLPのロック属性の管理を行う。
より具体的には、(1)第3のOSは、各LPが、どのFPUnを使用する予定かを管理(ソフトウェアにより各LPが使用する予定のFPUnを管理)し、図2に示したLPFOSR内のLPFE0、LPFE1のどのビットをセットするかを決定する。つまり、各LPでどのFPUnのコンテキストを使用するのかを管理可能である。
(2)第3のOSは、現在FPU0、1を使用しているLPIDを管理することにより、現状のFPU0、1をどのプロセッサが使っていて、今から使おうとしているのかを管理し、LP間のコンテキスト復帰・退避をアトミック操作として管理する。
(3)第3のOSは、ソフトウェアによりFPUnを使用するLPのロック管理をし、ソフトウェアによりFPUnのロック属性を管理可能である。これによりFPUの占有状態を自LPがロックしたり、他LPから取り外したりすることが可能になる。
図6は、本発明の第1の実施の形態におけるハードウェア資源切り替え動作を示す詳細なフローチャート図である。同図では、プロセッサのハードウェアにより実行されるステップと、第1のOSまたは第2のOSにより実行されるステップと、第3のOSにより実行されるステップとを分けている。同図では、プロセッサ0〜3のうちの何れか1つのプロセッサにおける動作を示している。ここでは、同図がプロセッサ0の動作を表し、ハードウェア資源がFPUであるものとして説明する。
プロセッサ0がFPU命令を実行しようとしたとき(FPU命令の実行要求をプロセッサ0がハードウェアにより検出したとき)(S30)、第1判定部215は、PSR内のFEビット(第1の状態情報)が真か偽かを判定することにより、FPUレジスタが使用不可能であるか否かを判定し(S31)、さらに、第2判定部216は、LPFE0、1ビット(第2の状態情報)の何れのビットが真であるかを判定する(S32)。これにより、FE=1、かつLOFE0=1の場合は、FPUレジスタに、FPU命令の実行要求を出したプロセッサ0のプログラムに属する拡張コンテキストデータが保持されていることを意味する。この判定は、第1判定回路および第2判定回路により、ほぼ遅延時間なく、なされる。この場合、FPUによってFPU命令が即座に実行される(S33)。
また、第1判定部215は、FE=0である場合(FPUレジスタが使用不可能である場合)、第1の例外割り込み信号を発生する(S34)。これにより、第1のOSまたは第2のOS(ここでは第1のOS)に制御が移ることになる。第1のOSは、FPU(ここではFPU0とする)を確保するためにFE=1にセットし(S35)、必要に応じてOS内でのFPUのコンテキストの退避復帰を行おうとする。FPU0内の拡張コンテキストデータが同じプロセッサに属すると第2判定部216が判定した場合は、FPU0からメモリ310に拡張コンテキストデータを退避し、メモリ310からFPU0に、現在実行中のFPU命令を実行しようとしたプログラムの拡張コンテキストデータを復帰し、(S36)、割り込み処理からリターンする(S37)。これにより、FPU命令を実行しようとしたプログラムは、何事もなかったかのようにS31(True)、S32(True)の判定を経る。これにより、FPU0はFPU命令を実行する。
一方、第1のOSは、FE=1にセットし(S36)、FPU0内の拡張コンテキストデータを退避しようとするが、FPU0内の拡張コンテキストデータが他のプロセッサに属すると第2判定部216が判定した場合は、第2の例外割り込み信号が発生する(S38)。これにより、第3のOSに制御が遷移する。
第2の例外割り込み信号を受けた第3のOSは、FPU0の使用権を確保するためにLPFE0=1をセットし、(S38a)、FPU0の使用権を確保できたか否かを判定し(S38b)、確保できた場合は、テーブルT2を参照して、現にFPU0を占有しているプロセッサ(FPU0−LPID)と、FPU命令を実行しようとしたプロセッサとが同じでないかどうかを判定し(S40)、同じでなければ、異なるプロセッサ間のコンテキスト入れ換えを行い(S41)、割り込み処理を抜ける(S42)。
S38bにおいてFPU0を確保できない場合(LPFE0に1を書き込んだにもかかわらず、LPFE0=0の場合、つまり、他の物理プロセッサによって、FPU0が確保されている場合)は、第3のOSは、FPU0が解放されるまで待ち処理に入る(S39)。この待ち処理では、ポーリング、イベント待ち等により、解放されたかどうかをチェックすればよい。
また、S40において現にFPU0を占有しているプロセッサ(FPU0−LPID)と、FPU命令を実行しようとしたプロセッサとが同じである場合は、コンテキスト入れ替えの必要がないので、そのまま割り込み処理を抜ける。このケースは、プロセッサ0で実行していたプログラムが、一旦休止状態、停止状態等になった場合に、FEビットがクリアされることによって起こり得る。
上記の処理のうち、第2の例外割り込み信号を受けた第3のOSの処理についてさらに詳しく説明する。
図3に示した第3のOSは、第2判定部216、226、236からの各第2の例外割込み信号によって起動される第2の例外割り込み処理を、オペレーティングシステムの一部の機能として実行する。第3のOSは、第2の例外割り込み処理のサポートのために、前記ハードウェア資源の獲得処理、前記ハードウェア資源の解放待ち処理等を含む。
第3のOSは、獲得処理において、第2の例外割り込み信号を発生させた仮想プロセッサの属する命令準備部以外の命令準備部に属する仮想プロセッサおいて当該ハードウェア資源が使用中でない場合(ケース1)に、第2の例外割り込み信号を発生させた命令準備部内の状態レジスタに、真を示す第1状態情報と、前記第2の例外割り込み信号を発生させたプロセッサを示す第2状態情報とを設定する。真を示す第1の状態情報は、現在実行中のプログラムの拡張コンテキストデータがハードウェア資源内に保持されている可能性があることを示す。上記ステップS38bにおいて、FPU0の使用権を確保できたと判定される場合がこのケース1である。
一方、第3のOSは、第2の例外割り込み信号を発生させた仮想プロセッサの属する命令準備部以外の命令準備部において仮想プロセッサにおいて当該ハードウェア資源が使用中である場合(ケース2)に、前記ハードウェア資源の解放を待つ待ち処理を実行する。上記ステップS38bにおいてFPU0の使用権を確保できないと判定され、ステップS39(待ち処理)に入る場合がこのケース2である。
ステップS38bにおいてハードウェア資源を獲得する処理は、例えば、第3のOSが、資源を排他制御するためのMUTEX等の管理オブジェクトを備え、この管理オブジェクトを利用すればよい。
以上説明してきたように、本実施の形態におけるプロセッサ装置によれば、各ハードウェア資源を複数のプロセッサで共有することができる。つまり、どのプロセッサでも各ハードウェア資源を使用することができる。それゆえ、ハードウェア資源の使用効率を向上
させることができる。ハードウェア資源をプロセッサ毎に備える必要がないので、必要な処理性能に応じた個数の必要最小限のハードウェア資源を備えればよく、回路規模を削減または最適化することができる。FPUやハードウェアアクセラレータ等の拡張演算ユニットを効率よく複数のプロセッサで共有することができ、拡張コンテキストデータの退避および復帰を最小限にすることができる。
(第2の実施の形態)
本実施の形態では、第1の実施の形態で説明したプロセッサ装置をメディアプロセッサに適用する場合の構成について説明する。
本実施の形態に係るプロセッサシステムは、資源を共用してホスト処理とメディア処理とを行う単一のプロセッサブロックを備える。プロセッサブロックは、第1の実施の形態のプロセッサ装置と同じ機能を有し、さらに、資源を共用してホスト処理とメディア処理とを行う単一のプロセッサ装置で行う。本発明の実施の形態に係るプロセッサシステムは、ホスト処理のスレッドとメディア処理のスレッドとに、異なるタグ情報を与えるとともに、プロセッサシステムが有する資源を当該タグ情報に対応付けて分割する。これにより、本発明の実施の形態に係るプロセッサシステムは、面積効率を向上できるとともに、性能の保証及び堅牢性を向上できる。
まず、本発明の実施の形態に係るプロセッサシステムの構成を説明する。
図7は、第2の実施の形態に係るプロセッサシステム10の基本構成を示す機能ブロック図である。
このプロセッサシステム10は、映像音声ストリームに関する様々な信号処理を行うシステムLSIであり、外部メモリ15を用いて複数のスレッドを実行する。例えば、プロセッサシステム10は、デジタルテレビシステム、DVDレコーダ、デジタルカメラ及び携帯電話機等に搭載される。このプロセッサシステム10は、プロセッサブロック11と、ストリームI/Oブロック12と、AVIO(Audio Visual Input
Output)ブロック13と、メモリIFブロック14とを備える。
プロセッサブロック11は、第1の実施の形態で説明したプロセッサ装置と同じである。以下、同じ点は説明を省略して、異なる点を中心に説明する。
プロセッサブロック11は、プロセッサシステム10全体を制御するプロセッサであり、制御バス16を介してストリームI/Oブロック12、AVIOブロック13、及びメモリIFブロック14を制御したり、データバス17及びメモリIFブロック14を介して外部メモリ15にアクセスしたりする。また、プロセッサブロック11は、データバス17及びメモリIFブロック14を介して外部メモリ15から圧縮画像音声ストリーム等の画像音声データを読み出し、圧縮又は伸張等のメディア処理を行った後に、再び、データバス17及びメモリIFブロック14を介して、処理後の画像データや音声データを外部メモリ15に格納する回路ブロックである。
つまり、プロセッサブロック11は、映像音声の出力サイクル(フレームレート等)に依存しない非リアルタイムな汎用(制御関連の)処理であるホスト処理と、映像音声の出力サイクルに依存するリアルタイムな汎用(メディア関連の)処理であるメディア処理とを行う。
例えば、プロセッサシステム10をデジタルテレビシステムに搭載する場合、ホスト処理は、当該デジタルテレビシステムの制御を行い、メディア処理は、デジタル映像の伸張
を行う。
ストリームI/Oブロック12は、プロセッサブロック11による制御の下で、蓄積メディア及びネットワーク等の周辺デバイスから圧縮画像音声ストリーム等のストリームデータを読み込み、データバス18及びメモリIFブロック14を介して外部メモリ15に格納したり、その逆方向のストリーム転送をしたりする回路ブロックである。このように、ストリームI/Oブロック12は、映像音声の出力サイクルに依存しない非リアルタイムなIO処理を行う。
AVIOブロック13は、プロセッサブロック11による制御の下で、データバス19及びメモリIFブロック14を介して外部メモリ15から画像データ及び音声データ等を読み出し、各種グラフィック処理等を施した後に、画像信号及び音声信号として外部の表示装置やスピーカ等に出力したり、その逆方向のデータ転送をしたりする回路ブロックである。このように、AVIOブロック13は、映像音声の出力サイクルに依存するリアルタイムなIO処理を行う。
メモリIFブロック14は、プロセッサブロック11による制御の下で、プロセッサブロック11、ストリームI/Oブロック12、AVIOブロック13、及びメモリIFブロック14と外部メモリ15との間で並列にデータ要求が行われるように制御する回路ブロックである。また、メモリIFブロック14は、プロセッサブロック11からの要求に応じて、プロセッサブロック11、ストリームI/Oブロック12、AVIOブロック13、及びメモリIFブロック14と外部メモリ15との間の転送帯域を確保するとともに、レイテンシ保証を行う。
次に、プロセッサブロック11の詳細な構成を説明する。
図8は、プロセッサブロック11の構成を示す機能ブロック図である。
このプロセッサブロック11は、実行部101と、VMPC(仮想マルチプロセッサ制御部)102と、TLB(Translation Lookaside Buffer)104と、物理アドレス管理部105と、FPU(Floating Point number processing Unit:浮動小数点演算装置)107と、FPU割り当て部108と、キャッシュメモリ109と、BCU110と、割り込み制御部111とを備える。
ここで、プロセッサブロック11は、仮想マルチプロセッサ(VMP:Virtual
Multi Processor)として機能する。仮想マルチプロセッサとは、一般的に、複数の論理プロセッサ(LP:Logical Processor)の機能を時分割に演じる命令並列プロセッサの一種である。ここで一つのLPは、実体的には、物理プロセッサ(PP:Physical Processor)のレジスタ群に設定される一つのコンテキストに対応する。各LPに割り当てる時間単位(TS:Time Slot)の頻度を管理することによって、各LPによって実行されるアプリケーション間の負荷バランスを保つことができる。なお、VMPの構成及び動作については、その代表的な一例が特開2003−271399号公報(特許文献3)に詳しく開示されているので、ここでは詳細な説明を省略する。
また、プロセッサブロック11は、マルチスレッドパイプライン型プロセッサ(マルチスレッドプロセッサ)として機能する。マルチスレッドパイプライン型プロセッサは、同時に複数のスレッドを処理し、さらに、実行パイプラインの空きを埋めるように複数のスレッドを処理することにより、処理効率を向上できる。なお、マルチスレッドパイプライ
ン型プロセッサの構成及び動作については、その代表的な一例が特開2008−123045号公報(特許文献4)に詳しく開示されているので、ここでは詳細な説明を省略する。
実行部101は、複数のスレッドを同時に実行する。この実行部101は、複数の物理プロセッサ121と、演算制御部122と、演算部123とを備える。
複数の物理プロセッサ121は、それぞれ、レジスタを備える。このレジスタそれぞれは、1以上のコンテキスト124を保持する。ここで、コンテキスト124とは、複数のスレッド(LP)のそれぞれに対応し、対応するスレッドを実行するために必要な制御情報及びデータ情報等である。各物理プロセッサ121は、スレッド(プログラム)中の命令をフェッチおよび解読し、解読結果を演算制御部122に発行する。
演算部123は、複数の演算器を備え、同時に複数のスレッドを実行する。
演算制御部122は、マルチスレッドパイプライン型プロセッサにおけるパイプライン制御を行う。具体的には、演算制御部122は、実行パイプラインの空きを埋めるように複数のスレッドを、演算部123が備える演算器に割り当てたうえで実行させる。
VMPC102は、仮想マルチスレッド処理を制御する。このVMPC102は、スケジューラ126と、コンテキストメモリ127と、コンテキスト制御部128とを備える。
スケジューラ126は、複数のスレッドの優先度に従い、複数のスレッドの実行順序、及びスレッドを実行するPPを決定するスケジューリングを行うハードウェアスケジューラである。具体的には、スケジューラ126は、LPをPPにアサインする又はアンアサインすることにより、実行部101が実行するスレッドを切り替える。
コンテキストメモリ127は、複数のLPにそれぞれ対応する複数のコンテキスト124を記憶する。なお、このコンテキストメモリ127又は複数の物理プロセッサ121が備えるレジスタが、本発明の保持手段に相当する。
コンテキスト制御部128は、所謂コンテキストの復帰及び退避を行う。具体的には、コンテキスト制御部128は、実行が完了した物理プロセッサ121が保持するコンテキスト124をコンテキストメモリ127に書き込む。また、コンテキスト制御部128は、これから実行されるスレッドのコンテキスト124をコンテキストメモリ127から読み出し、読み出したコンテキスト124を当該スレッドに対応するLPがアサインされた物理プロセッサ121に転送する。
図9は、一つのコンテキスト124の構成を示す図である。なお、図9にはスレッドを実行するために必要な通常の制御情報及び通常のデータ情報等は図示しておらず、新たにコンテキスト124に追加された情報のみを示している。
図9に示すにように、コンテキスト124は、TVID(TLBアクセス仮想識別子)140と、PVID(物理メモリ保護仮想識別子)141と、MVID(メモリアクセス仮想識別子)142とを含む。
このTVID140、PVID141及びMVID142は、複数のスレッド(LP)のそれぞれが、ホスト処理に属するスレッドか、メディア処理に属するスレッドかを示すタグ情報である。
TVID140は、複数の仮想メモリ保護グループを設定するために用いられる。例えば、ホスト処理のスレッドと、メディア処理のスレッドとにそれぞれ異なるTVID140が付与される。実行部101は、このTVID140を用いて論理アドレス空間のページ管理情報をそれぞれ独立に作成することができる。
PVID141は、物理メモリ領域のアクセスを制限するために用いられる。
MVID142は、メモリIFブロック14へのアクセス形態を設定するために用いられる。メモリIFブロック14は、このMVID142を用いて、レイテンシ(応答性重視)を優先するか、バスバンド幅(性能保証)を優先するかを決定する。
図10は、プロセッサシステム10における論理アドレス空間の管理を模式的に示す図である。図10に示すように、プロセッサシステム10は、ユーザレベル、スーパーバイザーレベル及び仮想モニタレベルの3つの階層により制御される。
ここでユーザレベルは、スレッド(LP)ごとの制御を行う階層である。スーパーバイザーレベルは、複数のスレッドの制御を行うオペレーティングシステム(OS)に対応する階層である。例えば、図10に示すようにスーパーバイザーレベルには、ホスト処理のOSであるLinuxカーネルと、メディア処理のOSであるSystem Managerとが含まれる。
仮想モニタレベルは、スーパーバイザーレベルの複数のOSを制御する階層である。具体的には、仮想モニタレベルのOS(モニタプログラム)により、TVID140を用いた論理アドレス空間の区別が行われる。つまり、プロセッサシステム10は、複数のOSが用いる論理アドレス空間が互いに干渉しないように、論理アドレス空間を管理する。たとえば、各コンテキストのTVID140、PVID141やMVID142は、この仮想モニタレベルでのみ設定することが出来るようにしている。
また、仮想モニタレベルのOSは、プロセッサシステム10が有する複数の資源を、ホスト処理に属するスレッドに対応付ける第1資源と、メディア処理に属するスレッドに対応付ける第2資源とに分割する本発明の分離手段である。ここで資源とは、具体的には、外部メモリ15のメモリ領域(論理アドレス空間及び物理アドレス空間)、キャッシュメモリ109のメモリ領域、TLB104のメモリ領域、及びFPU107である。
このように、仮想モニタレベルで、資源を分割することにより、設計者は、ホスト処理とメディア処理とが独立したプロセッサにより実行されている場合と同様に、ホスト処理及びメディア処理のOSを設計できる。
TLB104は、一種のキャッシュメモリであり、論理アドレスと物理アドレスとの対応関係を示すページテーブルの一部であるアドレス変換テーブル130を保持する。このTLB104は、アドレス変換テーブル130を用いて、論理アドレスと物理アドレス間の変換を行う。
図11は、アドレス変換テーブル130の構成を示す図である。
図11に示すように、アドレス変換テーブル130は、複数のエントリ150を含む。各エントリ150は、論理アドレスを識別するためのTLBタグ部151と、当該TLBタグ部151に対応付けられたTLBデータ部152とを含む。TLBタグ部151は、VPN153と、TVID140と、PID154とを含む。TLBデータ部152は、
PPN155と、Attribute156とを含む。
VPN153は、ユーザレベルの論理アドレスであり、具体的には、論理アドレス空間のページNoである。
PID154は、当該データを用いるプロセスを識別するためのIDである。
PPN155は、当該TLBタグ部151に対応付けられた物理アドレスであり、具体的には、物理アドレス空間のページNoである。
Attribute156は、当該TLBタグ部151に対応付けられたデータの属性を示す。具体的には、Attribute156は、当該データへのアクセスの可否、当該データをキャッシュメモリ109に格納するか格納しないか、当該データが特権を有するか否か等を示す。
また、TLB104は、複数のスレッド(LP)が用いる論理アドレス空間の管理を行う。
図12は、プロセッサシステム10における論理アドレスの対応関係を模式的に示す図である。上述したように、TLB104は、プロセスごとの論理アドレス(VPN153)とPID154とTVID140との組に対して、一つの物理アドレス(PPN155)を対応させる。このように、同じTVIDをもつLP上のスーパーバイザーレベルでは、プロセスごとの論理アドレス(VPN153)とPID154との組に対して一つの物理アドレスを対応付けることで、スーパーバイザーレベルにおいて、各プロセスの論理アドレスを区別したうえで、当該論理アドレスを物理アドレスと対応させることができる。
ここで、TLB104の更新時に、更新されるエントリのTVIDは、更新を行うLPに設定されているTVIDが設定される。
さらに、TLB104は、プロセスごとの論理アドレス(VPN153)とPID154とにTVID140を加えた組に対して、一つの物理アドレス(PPN155)を対応させる。これにより、TLB104は、仮想モニタレベルにおいて、ホスト処理とメディア処理とにそれぞれ異なるTVIDを設定することにより、独立した論理アドレス空間を与えることができる。
また、このTLB104は、エントリ指定レジスタ135を備える。エントリ指定レジスタ135は、TVID140に割り当てるエントリ150を指定する情報を保持する。
図13は、エントリ指定レジスタ135に格納されるデータの一例を示す図である。図13に示すように、エントリ指定レジスタ135は、TVID140とエントリ150との対応関係を保持する。また、エントリ指定レジスタ135は、仮想モニタレベルのOS(モニタプログラム)により設定及び更新される。
TLB104は、エントリ指定レジスタ135に設定された情報を用いて、TVID140ごとに、使用するエントリ150を決定する。具体的には、TLB104は、TLBミス(LPから入力された論理アドレス(TLBタグ部151)をアドレス変換テーブル130に保持していない)場合、当該LPのTVID140に対応するエントリ150のデータをリプレースする。
図14は、TLB104でのエントリ150の割り当て状態を模式的に示す図である。
図14に示すように、複数のエントリ150が、複数のLPにより共有される。さらに、TLB104は、TVID140を用いて、同じTVID140を有するLP間で、エントリ150を共有させる。例えば、TVID0を有するLP0には、エントリ0〜エントリ2が割り当てられ、TVID1を有するLP1及びLP2には、エントリ3〜エントリ7が割り当てられる。これにより、TLB104は、ホスト処理に属するスレッドに対して、エントリ0〜エントリ2を用い、メディア処理に属するスレッドに対してエントリ3〜エントリ7を用いることができる。
図15は、TLB104による処理の流れを示すフローチャートである。
図15に示すように、LPからの外部メモリ15へのアクセスが発生した場合、まず、TLB104は、アクセス元のLPから入力された論理アドレス(VPN153、TVID140及びPID154)と同じ論理アドレスを格納しているか否かを判定する(S101)。
格納していない場合、つまりTLBミスの場合(S101でYes)、TLB104は、アクセス元のLPのTVID140に割り当てられたエントリ150を更新する。言い換えると、TLB104は、アクセス元のLPのTVID140と、同一のTVID140のエントリ150を更新する(S102)。具体的には、TLB104は、外部メモリ15等に格納されているページテーブルから、TLBミスした論理アドレスと物理アドレスとの対応関係を読み出し、読み出した対応関係を、アクセス元のLPのTVID140に割り当てられたエントリ150に格納する。
次に、TLB104は、更新した対応関係を用いて、論理アドレスを物理アドレスに変換する(S103)。
一方、ステップS101で、LPから入力された論理アドレスと同じ論理アドレスを格納している場合、つまりTLBヒットの場合(S101でNo)、TLB104は、TLBヒットした対応関係を用いて、論理アドレスを物理アドレスに変換する(S103)。
ここで、外部メモリ15等に格納されているページテーブルは、TVID140毎又はPVID141毎に、外部メモリ15の物理アドレスが割り当てられるように、予め作成されている。このページテーブルは、例えば、スーパーバイザーレベル、又は仮想モニタレベルのOSにより作成及び更新される。
物理アドレス管理部105は、PVID141を用いて物理アドレス空間のアクセス保護を行う。この物理アドレス管理部105は、複数の物理メモリ保護レジスタ131と、保護違反レジスタ132と、エラーアドレスレジスタ133とを備える。
各物理メモリ保護レジスタ131は、物理アドレス範囲ごとに、当該物理アドレス範囲にアクセス可能なLPを示す情報を保持する。
図16は、一つの物理メモリ保護レジスタ131に保持される情報の構成を示す図である。図16に示すように、物理メモリ保護レジスタ131は、BASEADDR161と、PS162と、PN163と、PVID0WE〜PVID3WE164と、PVID0RE〜PVID3WE165とを含む情報を保持する。
BASEADDR161、PS162、及びPN163は、物理アドレス範囲を指定する情報である。具体的には、BASEADDR161は、指定する物理アドレス範囲の先
頭のアドレスの上位16ビットである。PS162はページサイズを示す。例えば、ページサイズとして、1KB、64KB、1MB又は64MBが設定される。PN163は、PS162に設定されたページサイズでのページ数を示す。
PVID0WE〜PVID3WE164及びPVID0RE〜PVID3RE165は、BASEADDR161、PS162及びPN163で指定される物理アドレス範囲に、アクセス可能なLPのPVID141を示す。
具体的には、PVID0WE〜PVID3WE164は、それぞれPVID141ごとに1ビット設けられる。また、PVID0WE〜PVID3WE164は、対応するPVID141が付与されたLPが、指定された物理アドレス範囲にデータを書き込み可能であるか否かを示す。
PVID0RE〜PVID3RE165は、それぞれPVID141ごとに1ビット設けられる。また、PVID0RE〜PVID3RE165は、対応するPVID141が付与されたLPが、指定された物理アドレス範囲のデータを読み出し可能であるか否かを示す。
なお、ここでは、4種類のPVID141が複数のLPに付与されるとするが、2種類以上のPVID141が複数のLPに付与されればよい。
図17は、PVID141により保護される物理アドレス空間の一例を示す図である。また、ここでは物理アドレス管理部105は、4つの物理メモリ保護レジスタ131(PMG0PR〜PMG3PR)を備えるとする。また、PVID0は、Linux(ホスト処理)のLP群に付与され、PVID1は、メディア処理のLPのうち画像処理のLP群に付与され、PVID2は、メディア処理のLPのうち音声処理のLP群に付与され、PVID3は、System Manager(メディア処理のOS)のLP群に付与される。
また、物理アドレス管理部105は、LPが、当該LPのPVID141で許可されていない物理アドレスにアクセスした場合に例外割り込みを発生するとともに、保護違反レジスタ132に、エラーが発生したアクセス情報を書き込み、かつ、エラーアドレスレジスタ133に、エラーの要因となったアクセスのアクセス先の物理アドレスを書き込む。
図18は、保護違反レジスタ132に保持されるアクセス情報の構成を示す図である。図18に示すように、保護違反レジスタ132に保持されるアクセス情報は、PVERR167と、PVID141とを含む。PVERR167は、当該エラーが、物理メモリ空間保護違反(LPが、当該LPのPVID141で許可されていない物理アドレスにアクセスしたエラー)であるか否を示す。PVID141は、物理メモリ空間保護違反が発生したPVID141が設定される。
図19は、エラーアドレスレジスタ133に保持される情報の構成を示す図である。図19に示すように、エラーアドレスレジスタ133は、エラーの要因となったアクセスのアクセス先の物理アドレス(BEA[31:0])を保持する。
以上のように、PVID141を用いて、物理アドレスを保護することにより、システムの堅牢性を向上できる。具体的には、デバッグ時において、エラーが発生した物理アドレスやPVIDから、設計者は、画像処理及び音声処理のうち、どちらの処理がエラーを起こしているかを容易に判別できる。また、ホスト処理のデバッグ時には、画像処理などが書き込めないアドレスで発生している誤動作について、画像処理の誤動作を疑うことな
くデバッグすることが可能になる。
FPU割り当て部108は、複数のFPU107をLPに割り当てる。このFPU割り当て部108は、FPU割り当てレジスタ137を備える。
図20は、FPU割り当てレジスタ137に格納されるデータの一例を示す図である。図20に示すように、FPU割り当てレジスタ137に、TVID140ごとにFPU107が対応付けられる。また、FPU割り当てレジスタ137は、仮想モニタレベルのOS(モニタプログラム)により設定及び更新される。
図21は、FPU割り当て部108によるFPU107の割り当て処理を模式的に示す図である。
図21に示すように、複数のFPU107が、複数のLPにより共有される。さらに、FPU割り当て部108は、TVID140を用いて、同じTVID140を有するLP間で、FPU107を共有させる。例えば、FPU割り当て部108は、TVID0を有するLP0には、FPU0を割り当て、TVID1を有するLP1及びLP2には、FPU1を割り当てる。
また、LPは、FPU割り当て部108により割り当てられたFPU107を用いて、スレッドを実行する。
キャッシュメモリ109は、プロセッサブロック11で使用するデータを一時的に格納するメモリである。また、キャッシュメモリ109は、異なるTVID140を有するLPには、独立した異なるデータ領域(ウェイ168)を使用する。このキャッシュメモリ109は、ウェイ指定レジスタ136を備える。
図22A及び図22Bは、ウェイ指定レジスタ136に格納されるデータの一例を示す図である。
図22Aに示すように、ウェイ指定レジスタ136に、TVID140ごとにウェイ168が対応付けられる。また、ウェイ指定レジスタ136は、仮想モニタレベルのOS(モニタプログラム)により設定及び更新される。
なお、図22Bに示すように、LPごとにウェイ168を対応付けてもよい。この場合、例えば、コンテキスト124内に、当該LPが使用するウェイの情報が含まれ、仮想モニタレベルのOS、又はスーパーバイザーレベルのOSは、コンテキスト124を参照し、ウェイ指定レジスタ136を設定及び更新する。
図23は、キャッシュメモリ109によるウェイ168の割り当て処理を模式的に示す図である。
図23に示すように、キャッシュメモリ109は、データ格納単位として、複数のウェイ168(way0〜way7)を有する。このキャッシュメモリ109は、TVID140を用いて、同じTVID140を有するLP間で、ウェイ168を共有させる。例えば、TVID0を有するLP0には、way0〜way1が割り当てられ、TVID1を有するLP1及びLP2には、way2〜way7が割り当てられる。これにより、キャッシュメモリ109は、ホスト処理に属するスレッドのデータをway0〜way1にキャッシュし、メディア処理に属するスレッドのデータをway2〜way7にキャッシュする。
このように、キャッシュメモリ109は、異なるTVID140を有するLP間で、キャッシュデータを互いに追い出しあわないようにできる。
図24は、キャッシュメモリ109による処理の流れを示すフローチャートである。
図24に示すように、LPからの外部メモリ15へのアクセスが発生した場合、まず、キャッシュメモリ109は、アクセス元のLPから入力されたアドレス(物理アドレス)と同じアドレスを格納しているか否かを判定する(S111)。
格納していない場合、つまりキャッシュミスの場合(S111でYes)、キャッシュメモリ109は、ウェイ指定レジスタ136で指定されるウェイ168に、アクセス元のLPから入力されたアドレス及びデータをキャッシュする(S112)。具体的には、リードアクセスの場合、キャッシュメモリ109は、外部メモリ15等からデータを読み出し、読み出したデータを、ウェイ指定レジスタ136で指定されるウェイ168に格納する。また、ライトアクセスの場合、キャッシュメモリ109は、アクセス元のLPから入力されたデータを、ウェイ指定レジスタ136で指定されるウェイ168に格納する。
一方、ステップS111で、アクセス元のLPから入力されたアドレスと同じアドレスを格納している場合、つまりキャッシュヒットの場合(S111でNo)、キャッシュメモリ109は、キャッシュヒットしたデータを、更新(ライトアクセス時)、又はアクセス元のLPに出力する(リードアクセス時)(S113)。
BCU110は、プロセッサブロック11と、メモリIFブロック14との間のデータ転送を制御する。
割り込み制御部111は、割り込みの検出、要求及び許可等を行う。この割り込み制御部111は、複数の割り込み制御レジスタ134を備える。例えば、割り込み制御部111は、128個の割り込み制御レジスタ134を備える。割り込み制御部111は、割り込み制御レジスタ134を参照し、発生した割り込みの割り込み要因に対応するスレッド(LP)に割り込みを送る。
割り込み制御レジスタ134には、割り込み要因に対応する割り込み先のスレッドが設定される。
図25は、一つの割り込み制御レジスタ134の構成を示す図である。図25に示す割り込み制御レジスタ134は、割り込み要因に対応付けられた、システム割り込み171(SYSINT)と、LP識別子172(LPID)と、LP割り込み173(LPINT)と、HWイベント174(HWEVT)とを含む。
システム割り込み171は、当該割り込みがシステム割り込み(グローバル割り込み)であるか否かを示す。LP識別子172は、割り込み先のLPを示す。LP割り込み173は、当該割り込みがLP割り込み(ローカル割り込み)であるか否かを示す。HWイベント174は当該割り込み要因によりハードウェアイベントを発生させるか否かを示す。
システム割り込みの場合、割り込み制御部111は、現在スレッドを実行中のLPに割り込みを送る。また、LP割り込みの場合、割り込み制御部111は、LP識別子172で示されるLPに対して、割り込みを送る。また、ハードウェアイベントの場合、LP識別子172で示されるLPに対してハードウェアイベントを送る。このハードウェアイベントにより、該当LPが起床する。
また、システム割り込み171及びLP識別子172は、仮想モニタレベルのOS(モニタプログラム)のみが書き換え可能であり、LP割り込み173及びHWイベント174は、仮想モニタレベル及びスーパーバイザーレベルのOSのみが書き換え可能である。
次に、プロセッサシステム10における、メモリアクセス管理について説明する。
図26は、プロセッサシステム10における、メモリアクセス管理の状態を模式的に示す図である。図26に示すように、プロセッサブロック11からメモリIFブロック14にMVID142が送られる。メモリIFブロック14は、このMVID142を用いて、MVID142ごとに、バスバンド幅を割り当てたうえで、アクセス要求元のスレッドのMVID142に割り当てたバスバンド幅を用いて、外部メモリ15にアクセスを行う。
また、メモリIFブロック14は、バスバンド幅指定レジスタ138を備える。
図27は、メモリIFブロック14によるバスバンド幅指定レジスタ138が保持するデータの一例を示す図である。なお、図27において、ホスト処理であるLinuxと、メディア処理に含まれる音声処理(Audio)と、メディア処理に含まれる画像処理(Video)とにそれぞれ異なるMVID142が付与されている。
図27に示すように、メモリIFブロック14は、MVID142ごとにバスバンド幅を割り当てる。また、MVID142ごとに優先順位を決定し、当該優先順位に基づき、外部メモリ15へのアクセスを行う。
これにより、MVID142ごとに必要なバンド幅が確保されるとともに、要求したアクセスレイテンシが保証される。よって、プロセッサシステム10は、複数のアプリケーションの性能保証及びリアルタイム性の保証を達成することができる。
また、MVID142を用いてバスバンド幅を分割することにより、メモリIFブロック14とプロセッサブロック11とが一つのデータバス17のみを介して接続されている場合でも、複数のデータバスを介してメモリIFブロック14とプロセッサブロック11とが接続されている場合と同様の制御を行うことができる。つまり、複数のブロックに対してバスを分割する場合と同様の制御を行うことができる。
なお、複数のブロックからのアクセス要求に対して、バスバンド幅を確保しレイテンシを保証するための技術は、その代表的な一例が特開2004−246862号公報(特許文献5)に詳しく開示されているので、ここでは詳細な説明を省略する。
また、プロセッサシステム10では、TVID140及び従来のVMPの機能を用いて、メディア処理とホスト処理との処理時間の割合を任意に設定できる。具体的には、例えば、仮想モニタレベルのOSにより、各TVID140に対する処理時間の割合(メディア処理とホスト処理との処理時間の割合)が、VMPC102が備えるレジスタ(図示せず)に設定される。VMPC102は、この設定された処理時間の割合と、各スレッドのTVID140とを参照し、当該処理時間の割合が満たされるように、実行部101が実行するスレッドを切り替える。
次に、仮想モニタレベルのOS(モニタプログラム)による、資源分割処理について説明する。
図28は、モニタプログラムによる、資源分割処理の流れを示すフローチャートである。
まず、モニタプログラムは、複数のコンテキスト124の、TVID140、PVID141及びMVID142を設定することにより、複数のスレッドを複数のグループに分割する(S121、S122及びS123)。
次に、モニタプログラムは、エントリ指定レジスタ135にTVID140とエントリ150と対応関係を設定することにより、TLB104が有する複数のエントリ150を、ホスト処理に対応付ける第1エントリと、メディア処理に対応付ける第2エントリとに分割する(S124)。
このエントリ指定レジスタ135に設定された対応関係と、アクセス元のスレッドのTVID140とを参照して、TLB104は、ホスト処理に属するスレッドとメディア処理に属するスレッドとにエントリ150を割り当てる。
また、モニタプログラムは、ウェイ指定レジスタ136にTVID140(又はLP)とウェイ168との対応関係を設定することにより、キャッシュメモリ109が有する複数のウェイ168を、ホスト処理に対応付ける第1ウェイと、メディア処理に対応付ける第2ウェイとに分割する(S125)。
このウェイ指定レジスタ136に設定された対応関係と、アクセス元のスレッドのTVID140とを参照して、TLB104は、ホスト処理に属するスレッドとメディア処理に属するスレッドとにウェイ168を割り当てる。
また、モニタプログラムは、FPU割り当てレジスタ137にTVID140とFPU107との対応関係を設定することにより、複数のFPU107を、ホスト処理に対応付ける第1FPUと、メディア処理に対応付ける第2FPUとに分割する(S126)。
このFPU割り当てレジスタ137に設定された対応関係と、スレッドのTVID140とを参照して、FPU割り当て部108は、ホスト処理に属するスレッドとメディア処理に属するスレッドとにFPU107を割り当てる。
また、モニタプログラムは、バスバンド幅指定レジスタ138に、MVID142とバスバンド幅との対応関係を設定することにより、外部メモリ15とメモリIFブロック14との間のバスバンド幅を、ホスト処理に対応付ける第1バスバンド幅と、メディア処理に対応付ける第2バスバンド幅とに分割する(S127)。
このバスバンド幅指定レジスタ138に設定された対応関係と、アクセス元のスレッドのMVID142とを参照して、メモリIFブロック14は、ホスト処理に属するスレッドとメディア処理に属するスレッドとにバスバンド幅を割り当てる。
また、モニタプログラムは、物理アドレスと論理アドレスとの対応関係を示すページテーブルを作成する。この際、モニタプログラムは、PVID141と物理アドレスとの対応関係を設定することにより、外部メモリ15の物理アドレス空間を、ホスト処理に対応付ける第1物理アドレス範囲と、メディア処理に対応付ける第2物理アドレス範囲とに分割するとともに、第1物理アドレス範囲をホスト処理のスレッドに割り当て、第2物理アドレス範囲をメディア処理のスレッドに割り当てる(S128)。また、モニタプログラムは、PVID141と物理アドレスとの当該対応関係を物理メモリ保護レジスタ131に設定することにより、物理アドレスの保護を行う。
また、モニタプログラムは、割り込み制御レジスタ134に、各割り込み要因に対応させて、割り込み先のLP等を設定する(S129)。これにより、モニタプログラムは、ホスト処理とメディア処理とにそれぞれ独立した割り込み制御を行える。
この割り込み制御レジスタ134に設定された対応関係と、割り込み要因とを参照して、割り込み制御部111は、当該割り込み要因に対応するスレッドに割り込みを送る。
なお、モニタプログラムによる、各設定の順序は、図28に示す順序に限定されるものではない。
なお、モニタプログラムでページテーブルを作成せずに、TVID140を割り当てられたスーパーバイザーレベルの各OSが、それぞれ割り当てられた、物理アドレスに対応する論理アドレスを決めて、それぞれページテーブルを作成することも可能であり、本発明はこれを限定するものではない。
以上より、本実施の形態に係るプロセッサシステム10は、資源を共用してホスト処理とメディア処理とを行う単一のプロセッサブロック11を備えることにより、面積効率を向上できる。さらに、プロセッサシステム10は、ホスト処理のスレッドとメディア処理のスレッドとに、異なるタグ情報(TVID140、PVID141及びMVID142)を与えるとともに、プロセッサシステム10が有する資源を当該タグ情報に対応付けて分割する。これによりプロセッサシステム10は、ホスト処理とメディア処理とにそれぞれ独立した資源を割り当てることができる。よって、ホスト処理とメディア処理との間で資源の競合が生じないので、プロセッサシステム10は、性能の保障、及び堅牢性を向上できる。
また、物理アドレス管理部105は、PVID141を用いて、各スレッドが指定された物理アドレス範囲以外にアクセスしようとした場合には、割り込みを発生する。これにより、プロセッサシステム10は、システムの堅牢性を向上できる。
以上、本実施の形態に係るプロセッサシステム10について説明したが、本発明は、この実施の形態に限定されるものではない。
例えば、上記説明では、プロセッサブロック11がホスト処理とメディア処理との2種類の処理を行う例を述べたが、それ以外の処理を含む3種類以上の処理を行ってもよい。この場合、当該3種類以上の処理にそれぞれ対応する3種類以上のTVID140が複数のスレッドに付与される。
同様に、PVID141及びMVID142の種類も上述した数に限定されるものではなく、複数であればよい。
また、上記説明において、複数のスレッドをグループ分けするためのタグ情報として、TVID140、PVID141及びMVID142の3種類を述べたが、プロセッサシステム10は、一つのタグ情報(例えば、TVID140)のみを用いてもよい。つまり、プロセッサシステム10は、PVID141及びMVID142を用いず、物理アドレスの管理及びバス幅の制御にも、TVID140を用いてもよい。また、プロセッサシステム10は、2種類のタグ情報を用いてもよいし、4種類以上のタグ情報を用いてもよい。
また、上記説明では、割り込み制御レジスタ134、エントリ指定レジスタ135、ウ
ェイ指定レジスタ136、FPU割り当てレジスタ137及びページテーブルは、仮想モニタレベルのOS(モニタプログラム)により設定及び更新されるとしたが、仮想モニタレベルのOSの指示により、スーパーバイザーレベルのOSが割り込み制御レジスタ134、エントリ指定レジスタ135、ウェイ指定レジスタ136、FPU割り当てレジスタ137及びページテーブルを設定及び更新してもよい。つまり、仮想モニタレベルのOSによりスーパーバイザーレベルOSに、当該スーパーバイザーレベルのOSに割り当てられた資源が通知され、当該スーパーバイザーレベルのOSは、通知された資源を用いるように割り込み制御レジスタ134、エントリ指定レジスタ135、ウェイ指定レジスタ136、FPU割り当てレジスタ137及びページテーブルを設定及び更新してもよい。
また、上記実施の形態に係るプロセッサシステム10に含まれる各処理部は典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されてもよいし、一部又はすべてを含むように1チップ化されてもよい。
ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後にプログラムすることが可能なFPGA(Field Programmable Gate Array)、又はLSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて各処理部の集積化を行ってもよい。バイオ技術の適用等が可能性として考えられる。
また、本発明の実施の形態に係るプロセッサシステム10の機能の一部又は全てを、実行部101等がプログラムを実行することにより実現してもよい。
さらに、本発明は上記プログラムであってもよいし、上記プログラムが記録された記録媒体であってもよい。また、上記プログラムは、インターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
また、上記実施の形態に係るプロセッサシステム10及びその変形例の機能のうち少なくとも一部を組み合わせてもよい。
本発明は、プロセッサ装置およびマルチスレッドプロセッサ装置に適用でき、特に、デジタルテレビ、DVDレコーダ、デジタルカメラおよび携帯電話機等に搭載されるメディア処理用のプロセッサ装置およびマルチスレッドプロセッサ装置に適している。
10 プロセッサシステム
11 プロセッサブロック
12 ストリームI/Oブロック
13 AVIOブロック
14 メモリIFブロック
15 外部メモリ
16 制御バス
17、18、19 データバス
101 実行部
102 VMPC
104 TLB
105 物理アドレス管理部
107 FPU
108 FPU割り当て部
109 キャッシュメモリ
110 BCU
111 割り込み制御部
121 物理プロセッサ
122 演算制御部
123 演算部
124 コンテキスト
126 スケジューラ
127 コンテキストメモリ
128 コンテキスト制御部
130 アドレス変換テーブル
131 物理メモリ保護レジスタ
132 保護違反レジスタ
133 エラーアドレスレジスタ
134 割り込み制御レジスタ
135 エントリ指定レジスタ
136 ウェイ指定レジスタ
137 FPU割り当てレジスタ
138 バスバンド幅指定レジスタ
150 エントリ
151 TLBタグ部
152 TLBデータ部
168 ウェイ
171 システム割り込み
172 LP識別子
173 LP割り込み
174 HWイベント
210 命令準備部
213、223、233 状態レジスタ部
214 レジスタ部
215、225、235 第1判定部
216、226、236 第2判定部
220 命令準備部
230 命令準備部
240 実行パイプライン部
250 制御部
251 第1転送部
251a、251b、251c 退避復帰部
252 第2転送部
253 クリア部
260、270 ハードウェア資源
261、271 レジスタ群
310、320、330 メモリ
311 コンテキストデータ
312 拡張コンテキストデータ