(57)【特許請求の範囲】
【請求項１】
プロセッサ装置であって、
複数のプログラムを切り替えながら実行する複数のプロセッサと、
データを保持するレジスタを有し前記複数のプロセッサの命令実行を補完する１つ以上のハードウェア資源と、
前記複数のプログラムのうち前記ハードウェア資源を利用する所定命令を含むプログラム毎に、前記ハードウェア資源内のレジスタデータのコピーである拡張コンテキストデータを記憶するメモリとを備え、
前記複数のプロセッサのそれぞれは、状態レジスタを有し、
各状態レジスタは、前記ハードウェア資源毎に、現在実行中のプログラムの拡張コンテキストデータが当該ハードウェア資源内に保持されているか否かを示す第１状態情報と、前記ハードウェア資源毎に、当該ハードウェア資源内に保持されている拡張コンテキストデータに対応するプロセッサを示す第２状態情報とを保持し、
前記第１状態情報は、前記現在実行中のプログラムにより更新され、
前記第２状態情報は、前記現在実行中のプログラムとは別のプログラムにより更新され、
前記プロセッサ装置は、さらに、
前記ハードウェア資源内に現在実行中のプログラムの拡張コンテキストデータが保持されているか否かを、前記第１状態情報を参照することで判定する第１判定部と、
前記ハードウェア資源内の拡張コンテキストデータが前記所定命令を実行しようとしたプロセッサに属するか否かを、前記第２状態情報を参照することで判定する第２判定部と
を備え、
前記所定命令を実行しようとしたときに、前記ハードウェア資源内に現在実行中のプログラムの拡張コンテキストデータが保持されていると前記第１判定部によって判定され、かつ、前記ハードウェア資源内の拡張コンテキストデータが、前記所定命令を実行しようとしたプロセッサに属すると前記第２判定部によって判定された場合に、前記ハードウェア資源と前記メモリとの間で、拡張コンテキストデータの退避および復帰を行うことなく、前記ハードウェア資源は当該所定命令を実行する
プロセッサ装置。
【請求項２】
前記ハードウェア資源は前記複数のプロセッサが実行できない拡張命令を実行する拡張演算ユニットであり、前記所定の命令は前記拡張命令である
請求項１記載のプロセッサ装置。
【請求項３】
前記第１判定部は、複数のプロセッサのそれぞれに設けられたデータ判定部を含み、
各データ判定部は、当該データ判定部に対応するプロセッサがプログラム中の前記所定命令を実行しようとしたとき、当該データ判定部に対応するプロセッサで現在実行中のプログラムの拡張コンテキストデータが前記ハードウェア資源内に保持されているか否かを、前記第１状態情報を参照することで判定し、
前記第２判定部は、複数のプロセッサのそれぞれに設けられたプロセッサ判定部を含み、
各プロセッサ判定部は、前記ハードウェア資源内の拡張コンテキストデータが前記所定命令を実行しようとしたプロセッサに属するか否かを、前記第２状態情報を参照することで判定する
請求項１記載のプロセッサ装置。
【請求項４】
前記ハードウェア資源内に現在実行中のプログラムの拡張コンテキストデータが保持されていないと前記第１判定部によって判定され、かつ、前記ハードウェア資源内の拡張コンテキストデータが、前記所定命令を実行しようとしたプロセッサに属すると前記第２判定部によって判定された場合に、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータと同じプロセッサに属する拡張コンテキストデータを復帰する第１の転送処理を指示する第１の制御信号と、
前記ハードウェア資源内に現在実行中のプログラムの拡張コンテキストデータが保持されていないと前記第１判定部によって判定され、かつ、前記ハードウェア資源内の拡張コンテキストデータが、前記所定命令を実行しようとしたプロセッサに属さないと前記第２判定部によって判定された場合に、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータとは異なるプロセッサに属する拡張コンテキストデータを復帰する第２の転送処理を指示する第２の制御信号と
を生成する
請求項３記載のプロセッサ装置。
【請求項５】
前記各データ判定部は、対応するプロセッサがプログラム中の前記所定命令を実行しようとしたとき、前記第１状態情報が真か偽かを判定し、偽であると判定したとき第１の制御信号を発生する第１判定回路を含み、
前記各プロセッサ判定部は、対応する前記第１判定回路が真であると判定したとき、対応するプロセッサと前記第２状態情報が示すプロセッサとが一致するか否かを判定し、偽であると判定したとき第２の制御信号を発生する第２判定回路を含み、
前記ハードウェア資源は、前記第２判定回路が一致すると判定したとき、拡張コンテキストデータの退避および復帰を待つことなく、当該所定命令に従って即座に動作する
請求項４記載のプロセッサ装置。
【請求項６】
前記第１の制御信号は、前記第１転送処理を起動する第１の例外割り込み信号であり、
前記第２の制御信号は、前記第２の転送処理を起動する第２の例外割り込み信号である
請求項５記載のプロセッサ装置。
【請求項７】
前記第１の転送処理は、前記第１の例外割り込み信号が発生した場合に前記ハードウェア資源から前記メモリに拡張コンテキストデータを退避し、前記メモリから前記ハードウェア資源に前記所定命令を実行しようとしたプロセッサの拡張コンテキストデータを復帰し、
前記複数のプロセッサは、第１のプロセッサと第２のプロセッサとを含み、
前記第１のプロセッサは第１のオペレーティングシステムを実行することによって複数のプログラムを時分割多重で実行し、
前記第２のプロセッサは第１のオペレーティングシステムとは異なる第２のオペレーティングシステムを実行することによって複数のプログラムを時分割多重で実行し、
前記第１の転送処理は、前記第１のプロセッサ内の前記第１判定回路が前記第１の例外割込み信号を発生したとき、前記第１のオペレーティングシステムによって起動されるか、
または、前記第２のプロセッサ内の前記第１判定回路が前記第１の例外割込み信号を発生したとき、第２のオペレーティングシステムによって起動される
請求項６記載のプロセッサ装置。
【請求項８】
前記複数のプロセッサの少なくとも１つは、前記第１のオペレーティングシステムと前記第２のオペレーティングシステムとを管理する第３のオペレーティングシステムを実行し、
前記第２の転送処理は、何れかの前記第２判定回路が前記第２の例外割込み信号を発生したとき、第３のオペレーティングシステムによって起動される
請求項７記載のプロセッサ装置。
【請求項９】
前記第３オペレーティングシステムは、何れかの前記第２判定回路が前記第２の例外割込み信号を発生したとき、当該ハードウェア資源が他のプロセッサの所定命令を実行中である場合は、当該ハードウェア資源が解放されるのを待ち、当該ハードウェア資源を確保した後に、前記第２の転送処理を起動する
請求項８記載のプロセッサ装置。
【請求項１０】
前記第２の転送処理は、前記ハードウェア資源から前記メモリに前記他のプロセッサに対応する拡張コンテキストデータを退避する動作の開始から、前記メモリから前記ハードウェア資源に前記所定命令を実行しようとしたプロセッサの拡張コンテキストデータを復帰する動作の完了までをアトミックに行われる
請求項８記載のプロセッサ装置。
【請求項１１】
各プロセッサは、さらに、当該プロセッサが停止状態、待ち状態または休眠状態に遷移したとき、当該プロセッサに対応する第２状態情報をクリアするクリア回路を備える
請求項８記載のプロセッサ装置。
【請求項１２】
前記各状態レジスタは、第２状態情報をロックするか否かを示す第３状態情報を保持し、
前記第３オペレーティングシステムは、第３状態情報が第２状態情報をロックすることを示すとき、前記クリア回路による第２状態情報のクリアを禁止する
請求項１１記載のプロセッサ装置。
【請求項１３】
マルチスレッドプロセッサ装置であって、
複数のスレッドを同時に実行することによって、複数のプログラムを切り替える複数の仮想プロセッサを備えるマルチスレッドプロセッサと、
データを保持するレジスタを有し前記複数の仮想プロセッサの命令実行を補完する１つ以上のハードウェア資源と、
前記複数のプログラムのうち前記ハードウェア資源を利用する所定命令を含むプログラム毎に、前記ハードウェア資源内のレジスタデータのコピーである拡張コンテキストデータを記憶するメモリとを備え、
前記複数の仮想プロセッサのそれぞれは、少なくとも１つのスレッドに対応し、
前記マルチスレッドプロセッサは、
スレッドの命令をフェッチおよび解読する複数の命令準備部と、
前記複数の命令準備部により解読された命令であって、１以上のスレッドに対応する１以上の命令を同時に実行する実行部と、
命令準備部毎に設けられた状態レジスタと、
前記命令準備部毎に、現在のスレッドを他のスレッドに入れ替えることによって、前記複数の仮想プロセッサのうち実行中の仮想プロセッサと実行中でない仮想プロセッサとを入れ替える制御部と、
を有し、
前記各状態レジスタは、
前記ハードウェア資源毎に、現在実行中の仮想プロセッサの拡張コンテキストデータが当該ハードウェア資源内に保持されているか否かを示す第１状態情報と、前記ハードウェア資源毎に、当該ハードウェア資源内に保持されている拡張コンテキストデータに対応する仮想プロセッサを示す第２状態情報とを保持し、
前記第１状態情報は、前記現在実行中の仮想プロセッサのプログラムにより更新され、
前記第２状態情報は、前記現在実行中の仮想プロセッサのプログラムとは別のプログラムにより更新され、
前記マルチスレッドプロセッサ装置は、さらに、
前記ハードウェア資源内に現在実行中の仮想プロセッサの拡張コンテキストデータが保持されているか否かを、前記第１状態情報を参照することで判定する第１判定部と、
前記ハードウェア資源内の拡張コンテキストデータが前記所定命令を実行しようとした仮想プロセッサに属するか否かを、前記第２状態情報を参照することで判定する第２判定部と
を備え、
前記ハードウェア資源内に現在実行中の仮想プロセッサの拡張コンテキストデータが保持されていると前記第１判定部によって判定され、かつ、前記ハードウェア資源内の拡張コンテキストデータが、前記所定命令を実行しようとした仮想プロセッサに属すると前記第２判定部によって判定された場合に、前記ハードウェア資源と前記メモリとの間で、拡張コンテキストデータの退避および復帰を行うことなく、前記ハードウェア資源は当該所定命令を実行する
マルチスレッドプロセッサ装置。
【請求項１４】
前記ハードウェア資源内に現在実行中の仮想プロセッサの拡張コンテキストデータが保持されていないと前記第１判定部によって判定され、かつ、前記ハードウェア資源内の拡張コンテキストデータが、前記所定命令を実行しようとした仮想プロセッサに属すると前記第２判定部によって判定された場合に、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータと同じ仮想プロセッサに属する拡張コンテキストデータを復帰する第１の転送処理を起動する第１の制御信号と、
前記ハードウェア資源内に現在実行中の仮想プロセッサの拡張コンテキストデータが保持されていないと前記第１判定部によって判定され、かつ、前記ハードウェア資源内の拡張コンテキストデータが、前記所定命令を実行しようとした仮想プロセッサに属さないと前記第２判定部によって判定された場合に、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータとは異なる仮想プロセッサに属する拡張コンテキストデータを復帰する第２の転送処理を起動する第２の制御信号と
を生成する
請求項１３記載のマルチスレッドプロセッサ装置。
【請求項１５】
前記マルチスレッドプロセッサは、さらに、
スレッドの入れ替えによって実行中の仮想プロセッサが実行中でなくなったときに、スレッドの入れ替えがあった命令準備部内の状態レジスタの第２状態情報をクリアするクリア回路を備える
請求項１４記載のマルチスレッドプロセッサ装置。
【請求項１６】
前記第１判定部は、前記複数の命令準備部のそれぞれに設けられたデータ判定部を含み、
前記各データ判定部は、対応する命令準備部のスレッドが前記所定命令を実行しようとしたとき、前記第１状態情報が真か偽かを判定することによって、現在実行中の仮想プロセッサの拡張コンテキストデータが前記ハードウェア資源内に保持されているか否かを判定し、
前記第２判定部は、前記複数の命令準備部のそれぞれに設けられたプロセッサ判定部を含み、
前記各プロセッサ判定部は、対応する命令準備部内の前記データ判定部が偽であると判定したとき、対応する命令準備部の仮想プロセッサと前記第２状態情報が示す仮想プロセッサとが一致するか否かを判定し、偽であると判定したとき前記第２の制御信号を発生し、
前記マルチスレッドプロセッサは、さらに、
前記プロセッサ判定部からの前記第２の制御信号をもとに第２の例外割り込み信号を生成し、前記第２の例外割込み信号によって起動される第２の例外割り込み処理を、オペレーティングシステムの一部の機能として実行し、
前記オペレーティングシステムは、前記ハードウェア資源の獲得処理と、前記ハードウェア資源の解放を待つ待ち処理を含み、
前記オペレーティングシステムは、
前記第２の例外割り込み信号を発生させた仮想プロセッサの属する命令準備部以外の命令準備部に属する仮想プロセッサおいて当該ハードウェア資源が使用中でない場合に、前記獲得処理として、前記第２の例外割り込み信号を発生させた命令準備部内の状態レジスタに、前記第２の例外割り込み信号を発生させた仮想プロセッサを示す第２状態情報を設定し、
前記第２の例外割り込み信号を発生させた仮想プロセッサの属する命令準備部以外の命令準備部において仮想プロセッサにおいて当該ハードウェア資源が使用中である場合に、前記待ち処理を実行する
請求項１５記載のマルチスレッドプロセッサ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
プロセッサ装置のプログラムを切り替えながら実行する複数のプロセッサを有するプロセッサ装置およびマルチスレッドプロセッサ装置に関し、特にハードウェア資源を複数のプロセッサで共有するプロセッサ装置およびマルチスレッドプロセッサ装置に関する。
【背景技術】
【０００２】
近年のデジタル技術、動画像及び音声の圧縮伸張技術の急速な進展に伴い、デジタルテレビ、デジタルビデオレコーダ（ＤＶＤレコーダ等）、携帯電話、及び映像音声機器（ビデオカメラ等）に搭載されるプロセッサに、さらなる高性能化が求められている。
【０００３】
例えば、高性能化を実現するプロセッサとしてマルチスレッドプロセッサが知られている（例えば、特許文献１参照）。このマルチスレッドプロセッサは、複数のスレッドを同時に実行することにより、処理効率を向上できる。また、マルチスレッドプロセッサは、複数のスレッドの実行において、資源の共有が可能となるので、複数のプロセッサを独立に設ける場合に比べて、プロセッサの面積効率を向上できる。
【０００４】
一方、このようなプロセッサでは、リアルタイム性が要求されない制御関連のホスト処理と、リアルタイム性が要求される動画像の圧縮及び伸張処理等のメディア処理とが行われる。
【０００５】
例えば、特許文献２記載の映像音声処理用集積回路は、ホスト処理を行うマイコンブロックと、メディア処理を行うメディア処理ブロックとをそれぞれ備える。
【０００６】
また、ＦＰＵ（浮動小数点演算装置：Floating Point number processing Unit）のコンテキスト切り替えを必要最小限にする技術としてレイジー・コンテキスト・スイッチ（Lazy context switch）という技術がある。この方法によれば、実行コンテキストで、ＦＰＵ命令を実行することが必要になった時までＦＰＵコンテキストの退避と復帰を遅らせ
て行う。つまり、通常のプロセッサのコンテキストの退避および復帰とは非同期に、ＦＰＵのコンテキスト切り換えを行い、その機会を必要最小限に抑える。
【０００７】
ＦＰＵは多数のレジスタを有すること、時分割多重化されるプログラムにはＦＰＵを使用しないプログラムも存在することから、上記方法は、ＦＰＵコンテキストの退避および復帰のオーバヘッドの低減を図っている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−３０２２６１号公報
【特許文献２】国際公開第２００５／０９６１６８号
【特許文献３】特開２００３−２７１３９９号公報
【特許文献４】特開２００８−１２３０４５号公報
【特許文献５】特開２００４−２４６８６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、マルチプロセッサにおいてＦＰＵ等のハードウェア資源を利用する場合には、次の問題がある。
【００１０】
プロセッサ毎にＦＰＵを備えプロセッサ毎にレイジー・コンテキスト・スイッチを適用する場合には、回路規模が増大する。さらに、プロセッサ間でＦＰＵの稼動率にばらつきが生じ、使用効率を向上できない。
【００１１】
本発明は、複数のプロセッサでＦＰＵ等のハードウェア資源を共有し、使用効率を向上させるプロセッサ装置およびマルチスレッドプロセッサ装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記の課題を解決するために本発明のプロセッサ装置は、複数のプログラムを切り替えながら実行する複数のプロセッサと、データを保持するレジスタを有し前記複数のプロセッサの命令実行を補完する１つ以上のハードウェア資源と、前記複数のプログラムのうち前記ハードウェア資源を利用する所定命令を含むプログラム毎に、前記ハードウェア資源内のレジスタデータのコピーである拡張コンテキストデータを記憶するメモリと、前記ハードウェア資源と前記メモリとの間で、拡張コンテキストデータの退避と復帰とを制御する制御部と、前記ハードウェア資源内に現在実行中のプログラムの拡張コンテキストデータが保持されている可能性があるか否かを判定する第１判定部と、前記ハードウェア資源内の拡張コンテキストデータが前記所定命令を実行しようとしたプロセッサに属するか否かを判定する第２判定部と、を備え、前記可能性があると前記第１判定部によって判定され、かつ、前記ハードウェア資源内の拡張コンテキストデータが、前記所定命令を実行しようとしたプロセッサに属すると前記第２判定部によって判定された場合に、前記制御部が拡張コンテキストデータの退避および復帰を行うことなく、前記ハードウェア資源は当該所定命令を実行する。
【００１３】
この構成によれば、各ハードウェア資源を複数のプロセッサで共有することができる。つまり、どのプロセッサでも各ハードウェア資源を使用することができる。それゆえ、ハードウェア資源の使用効率を向上させることができる。ハードウェア資源をプロセッサ毎に備える必要がないので、必要な処理性能に応じた個数の必要最小限のハードウェア資源を備えればよく、回路規模を削減または最適化することができる。
【００１４】
ここで、前記制御部は、前記第１判定部および前記第２判定部の判定結果に応じて、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータと同じプロセッサに属する拡張コンテキストデータを復帰する第１転送部と、前記第１判定部および前記第２判定部の判定結果に応じて、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータとは異なるプロセッサに属する拡張コンテキストデータを復帰する第２転送部とを備えるようにしてもよい。
【００１５】
ここで、前記ハードウェア資源は前記複数のプロセッサが実行できない拡張命令を実行する拡張演算ユニットであり、前記所定の命令は前記拡張命令であってもよい。
【００１６】
この構成によれば、ＦＰＵやハードウェアアクセラレータ等の拡張演算ユニットを効率よく複数のプロセッサで共有することができ、拡張コンテキストデータの退避および復帰を最小限にすることができる。
【００１７】
ここで、前記第１判定部は、複数のプロセッサのそれぞれに設けられたデータ判定部を含み、各データ判定部は、当該データ判定部に対応するプロセッサがプログラム中の前記所定命令を実行しようとしたとき、当該データ判定部に対応するプロセッサで現在実行中のプログラムの拡張コンテキストデータが前記ハードウェア資源内に保持されている可能性があるか否かを判定し、前記第２判定部は、複数のプロセッサのそれぞれに設けられたプロセッサ判定部を含み、各プロセッサ判定部は、前記ハードウェア資源内の拡張コンテキストデータが前記所定命令を実行しようとしたプロセッサに属するか否かを判定するようにしてもよい。
【００１８】
この構成によれば、データ判定部およびプロセッサ判定部はプロセッサ毎に備えられるので、ハードウェア資源が現在実行中のプログラム（つまり所定命令を発行したプログラム）の拡張コンテキストデータを保持している場合には、他のプロセッサになんら影響を与えることなく、ハードウェア資源を使用することができる。
【００１９】
ここで、前記複数のプロセッサのそれぞれは、状態レジスタを有し、各状態レジスタのデータのコピーは、プログラム毎のコンテキストデータに含まれ、各状態レジスタは、前記ハードウェア資源毎に、現在実行中のプログラムの拡張コンテキストデータが当該ハードウェア資源内に保持されている可能性があるか否かを示す第１状態情報と、前記ハードウェア資源毎に当該ハードウェア資源内に保持されている拡張コンテキストデータに対応するプロセッサを示す第２状態情報とを保持し、前記各データ判定部は、対応するプロセッサがプログラム中の前記所定命令を実行しようとしたとき、前記第１状態情報が真か偽かを判定し、偽であると判定したとき第１の例外割込み信号を発生する第１判定回路を含み、前記各プロセッサ判定部は、対応する前記第１判定回路が真であると判定したとき、対応するプロセッサと前記第２状態情報が示すプロセッサとが一致するか否かを判定し、偽であると判定したとき第２の例外割込み信号を発生する第２判定回路を含み、前記ハードウェア資源は、前記第２判定回路が一致すると判定したとき、拡張コンテキストデータの退避および復帰を待つことなく、当該所定命令に従って即座に動作するとしてもよい。
【００２０】
この構成によれば、データ判定部およびプロセッサ判定部はハードウェア（第１判定回路および第２判定回路）により構成されるので、ハードウェア資源が現在実行中のプログラム（つまり所定命令を発行したプログラム）の拡張コンテキストデータを保持している場合には、他のプロセッサになんら影響を与えることなく、かつ、高速にハードウェア資源を使用することができる。
【００２１】
ここで、前記第１転送部は、プロセッサ毎に設けられた退避復帰部を含み、各退避復帰部は、前記第１の例外割り込み信号が発生した場合に前記ハードウェア資源から前記メモ
リに拡張コンテキストデータを退避し、前記メモリから前記ハードウェア資源に前記所定命令を実行しようとしたプロセッサの拡張コンテキストデータを復帰し、前記複数のプロセッサは、第１のプロセッサと第２のプロセッサとを含み、前記第１のプロセッサは第１のオペレーティングシステムを実行することによって複数のプログラムを時分割多重で実行し、前記第２のプロセッサは第１のオペレーティングシステムとは異なる第２のオペレーティングシステムを実行することによって複数のプログラムを時分割多重で実行し、前記第１のプロセッサ内の前記退避復帰部は、前記第１のプロセッサ内の前記第１判定回路が前記第１の例外割込み信号を発生したとき、前記第１のオペレーティングシステムによって起動され、前記第２のプロセッサ内の前記退避復帰部は、前記第２のプロセッサ内の前記第１判定回路が前記第１の例外割込み信号を発生したとき、第２のオペレーティングシステムによって起動されるようにしてもよい。
【００２２】
この構成によれば、異なるオペレーティングシステム（以下ＯＳと略す）を実行するプロセッサ間でハードウェア資源を共有することができる。プロセッサ内のプログラム間でハードウェア資源の拡張コンテキストデータの切り替えが必要な場合は、他のＯＳに影響を与えることなく、ＯＳ内で効率よく拡張コンテキストデータを切り替えることができる。
【００２３】
ここで、前記複数のプロセッサの少なくとも１つは、前記第１のオペレーティングシステムと前記第２のオペレーティングシステムとを管理する第３のオペレーティングシステムを実行し、前記第２の転送部は、何れかの前記第２判定回路が前記第２の例外割込み信号を発生したとき、第３のオペレーティングシステムによって起動されるようにしてもよい。
【００２４】
この構成によれば、異なるオペレーティングシステム（以下ＯＳと略す）を実行するプロセッサ間でハードウェア資源を共有することができる。異なるＯＳを実行するプロセッサ間でハードウェア資源の拡張コンテキストデータの切り替えが必要な場合は、第３のＯＳの管理の下で、拡張コンテキストデータを切り替える。これにより、どのプロセッサ上のプログラムに対しても拡張コンテキストデータの切り替えが隠蔽されるので、従来のプログラムを容易に流用することができる。
【００２５】
ここで、前記第３オペレーティングシステムは、何れかの前記第２判定回路が前記第２の例外割込み信号を発生したとき、当該ハードウェア資源が他のプロセッサの所定命令を実行中である場合は、当該ハードウェア資源が解放されるのを待ち、当該ハードウェア資源を確保した後に、前記第２の転送部を起動するようにしてもよい。
【００２６】
この構成によれば、異なるＯＳのプロセッサ間で所定の命令が競合した場合（ハードウェア資源の使用が競合した場合）でも、第３のＯＳの管理の下で容易に調停することができる。
【００２７】
ここで、前記第２転送部は、前記ハードウェア資源から前記メモリに前記他のプロセッサに対応する拡張コンテキストデータを退避する動作の開始から、前記メモリから前記ハードウェア資源に前記所定命令を実行しようとしたプロセッサの拡張コンテキストデータを復帰する動作の完了までをアトミックに行うようにしてもよい。
【００２８】
この構成によれば、第２転送部は上記の退避開始から復帰完了までをアトミックに行うので、プログラム毎のコンテキストデータ（特に第１状態情報および第２状態情報）に矛盾を生じさせることなく、他のプロセッサからの干渉を受けることなく、異なるプロセッサ間でハードウェア資源を共有することができる。
【００２９】
ここで、各プロセッサは、さらに、当該プロセッサが停止状態、待ち状態または休眠状態に遷移したとき、当該プロセッサに対応する第２状態情報をクリアするクリア回路を備えるようにしてもよい。
【００３０】
この構成によれば、１つのプロセッサが停止状態、待ち状態または休眠状態に遷移したときに、クリア回路によって当該プロセッサが使用しているハードウェア資源を解放することができ、複数のプロセッサで共有されるハードウェア資源の使用効率を向上させる。
【００３１】
ここで、前記各状態レジスタは、第２状態情報をロックするか否かを示す第３状態情報を保持し、前記第３オペレーティングシステムは、第３状態情報が第２状態情報をロックすることを示すとき、前記クリア回路による第２状態情報のクリアを禁止するようにしてもよい。
【００３２】
この構成によれば、ハードウェア資源を使用するプロセッサが固定的である場合や、ハードウェア資源をあるプロセッサが優先して使用する場合に、プログラマが第３状態情報を「ロック」に設定することにより、ハードウェア資源を当該プロセッサに占有させ続けることができ、無駄な拡張コンテキストデータの退避および復帰を削減することができる。
【００３３】
また、本発明のプロセッサ装置は、複数のスレッドを同時に実行することによって、複数のプログラムを切り替える複数の仮想プロセッサを備えるマルチスレッドプロセッサと、データを保持するレジスタを有し前記複数の仮想プロセッサの命令実行を補完する１つ以上のハードウェア資源と、前記複数のプログラムのうち前記ハードウェア資源を利用する所定命令を含むプログラム毎に、前記ハードウェア資源内のレジスタデータのコピーである拡張コンテキストデータを記憶するメモリと、前記ハードウェア資源と前記メモリとの間で、拡張コンテキストデータの退避と復帰とを制御する制御部と、前記ハードウェア資源内に現在実行中のプログラムの拡張コンテキストデータが保持されている可能性があるか否かを判定する第１判定部と、前記ハードウェア資源内の拡張コンテキストデータが前記所定命令を実行しようとした仮想プロセッサに属するか否かを判定する第２判定部と、を備え、前記可能性があると前記第１判定部によって判定され、かつ、前記ハードウェア資源内の拡張コンテキストデータが、前記所定命令を実行しようとした仮想プロセッサに属すると前記第２判定部によって判定された場合に、前記制御部が拡張コンテキストデータの退避および復帰を行うことなく、前記ハードウェア資源は当該所定命令を実行する構成であってもよい。
【００３４】
この構成によれば、上記と同様の効果がある。
【００３５】
ここで、前記制御部は、前記第１判定部および前記第２判定部の判定結果に応じて、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータと同じ仮想プロセッサに属する拡張コンテキストデータを復帰する第１転送部と、前記第１判定部および前記第２判定部の判定結果に応じて、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータとは異なる仮想プロセッサに属する拡張コンテキストデータを復帰する第２転送部とを備える構成としてもよい。
【００３６】
ここで、前記複数の仮想プロセッサのそれぞれは、少なくとも１つのスレッドに対応し、前記マルチスレッドプロセッサは、スレッドの命令をフェッチおよび解読する複数の命令準備部と、前記複数の命令準備部により解読された命令であって、１以上のスレッドに対応する１以上の命令を同時に実行する実行部と、命令準備部毎に設けられた状態レジスタとを有し、前記制御部は、命令準備部毎に、現在のスレッドを他のスレッドに入れ替えることによって、前記複数の仮想プロセッサのうち実行中の仮想プロセッサと実行中でな
い仮想プロセッサとを入れ替え、各状態レジスタのデータのコピーは、仮想プロセッサ毎のコンテキストデータに含まれ、各状態レジスタは、前記ハードウェア資源毎に、現在実行中の仮想プロセッサの拡張コンテキストデータが当該ハードウェア資源内に保持されている可能性があるか否かを示す第１状態情報と、前記ハードウェア資源毎に当該ハードウェア資源内に保持されている拡張コンテキストデータに対応する仮想プロセッサを示す第２状態情報とを保持し、前記マルチスレッドプロセッサは、さらに、スレッドの入れ替えによって実行中の仮想プロセッサが実行中でなくなったときに、スレッドの入れ替えがあった命令準備部内の状態レジスタの第２状態情報をクリアするクリア回路を備える構成としてもよい。
【００３７】
ここで、前記第１判定部は、前記複数の命令準備部のそれぞれに設けられたデータ判定部を含み、前記各データ判定部は、対応する命令準備部のスレッドが前記所定命令を実行しようとしたとき、前記第１状態情報が真か偽かを判定することによって、現在実行中のプログラムの拡張コンテキストデータが前記ハードウェア資源内に保持されている可能性があるか否かを判定し、前記第２判定部は、前記複数の命令準備部のそれぞれに設けられたプロセッサ判定部を含み、前記各プロセッサ判定部は、対応する命令準備部内の前記データ判定部が偽であると判定したとき、対応する命令準備部の仮想プロセッサと前記第２状態情報が示す仮想プロセッサとが一致するか否かを判定し、偽であると判定したとき第２の例外割込み信号を発生し、前記マルチスレッドプロセッサは、さらに、前記プロセッサ判定部からの第２の例外割込み信号によって起動される第２の例外割り込み処理を、オペレーティングシステムの一部の機能として実行し、前記オペレーティングシステムは、前記ハードウェア資源の獲得処理と、前記ハードウェア資源の解放を待つ待ち処理を含み、前記オペレーティングシステムは、前記第２の例外割り込み信号を発生させた仮想プロセッサの属する命令準備部以外の命令準備部に属する仮想プロセッサにおいて当該ハードウェア資源が使用中でない場合に、前記獲得処理として、前記第２の例外割り込み信号を発生させた命令準備部内の状態レジスタに、真を示す第１状態情報と、前記第２の例外割り込み信号を発生させた仮想プロセッサを示す第２状態情報とを設定し、前記第２の例外割り込み信号を発生させた仮想プロセッサの属する命令準備部以外の命令準備部において仮想プロセッサにおいて当該ハードウェア資源が使用中である場合に、前記待ち処理を実行する構成としてもよい。
【発明の効果】
【００３８】
この構成によれば、ハードウェア資源（例えば、ＦＰＵやハードウェアアクセラレータ等の拡張演算ユニット）を複数のプロセッサで効率良く共有することができる。つまり、どのプロセッサでも各ハードウェア資源を使用することができる。それゆえ、ハードウェア資源の使用効率を向上させることができる。ハードウェア資源をプロセッサ毎に備える必要がないので、必要な処理性能に応じた個数の必要最小限のハードウェア資源を備えればよく、回路規模を削減または最適化することができる。
【図面の簡単な説明】
【００３９】
【図１】図１は、第１の実施の形態におけるプロセッサ装置の構成を示すブロック図である。
【図２】図２は、第１の実施の形態における状態レジスタ部内の第１〜第３状態情報の一例を示す図である。
【図３】図３は、第１の実施の形態におけるプロセッサ装置におけるオペレーティングシステムについての説明図である。
【図４】図４は、第１の実施の形態におけるハードウェア資源切り替え動作を示すフローチャートである。
【図５】図５は、第１の実施の形態における第３のＯＳが管理するデータの一例を示す図である。
【図６】図６は、第１の実施の形態におけるハードウェア資源切り替え動作を示す詳細なフローチャートである。
【図７】図７は、第２の実施の形態に係るプロセッサシステムの構成を示すブロック図である。
【図８】図８は、第２の実施の形態に係るプロセッサブロックの構成を示すブロック図である。
【図９】図９は、第２の実施の形態に係るコンテキストの構成を示す図である。
【図１０】図１０は、第２の実施の形態に係る論理アドレス空間の管理を示す図である。
【図１１】図１１は、第２の実施の形態に係るアドレス管理テーブルの構成を示す図である。
【図１２】図１２は、第２の実施の形態における、論理アドレスの対応関係を示す図である。
【図１３】図１３は、第２の実施の形態に係るエントリ指定レジスタの構成を示す図である。
【図１４】図１４は、第２の実施の形態に係るＴＬＢによるエントリの割り当て処理を示す図である。
【図１５】図１５は、第２の実施の形態に係るＴＬＢによる処理の流れを示すフローチャートである。
【図１６】図１６は、第２の実施の形態に係る物理保護レジスタの構成を示す図である。
【図１７】図１７は、第２の実施の形態において、ＰＶＩＤにより保護される物理アドレス空間を示す図である。
【図１８】図１８は、第２の実施の形態に係る保護違反レジスタの構成を示す図である。
【図１９】図１９は、第２の実施の形態に係るエラーアドレスレジスタの構成を示す図である。
【図２０】図２０は、第２の実施の形態に係るＦＰＵ割り当てレジスタの構成を示す図である。
【図２１】図２１は、第２の実施の形態に係るＦＰＵ割り当て部によるＦＰＵの割り当て処理を示す図である。
【図２２Ａ】図２２Ａは、第２の実施の形態に係るウェイ指定レジスタの構成を示す図である。
【図２２Ｂ】図２２Ｂは、第２の実施の形態に係るウェイ指定レジスタの構成を示す図である。
【図２３】図２３は、第２の実施の形態に係るキャッシュメモリによるウェイの割り当て処理を模式的に示す図である。
【図２４】図２４は、第２の実施の形態に係るキャッシュメモリによる処理の流れを示すフローチャートである。
【図２５】図２５は、第２の実施の形態に係る割り込み制御レジスタの構成を示す図である。
【図２６】図２６は、第２の実施の形態に係るプロセッサシステムにおける、メモリアクセス管理を示す図である。
【図２７】図２７は、第２の実施の形態に係るメモリＩＦブロックによるバスバンド幅の割り当てを示す図である。
【図２８】図２８は、第２の実施の形態に係るプロセッサシステムにおける資源分割処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００４０】
（第１の実施の形態）
本実施形態におけるプロセッサ装置は、複数のプロセッサ間でハードウェア資源を共有するプロセッサ装置であって、ハードウェア資源内のレジスタに現在実行中の何れかのプログラムの拡張コンテキストデータが保持されているか否かを判定する第１判定部と、前記ハードウェア資源内の拡張コンテキストデータが、どのプロセッサに対応するかを判定する第２判定部と、プロセッサ内のプログラム間で拡張コンテキストデータの退避と復帰とを行う第１転送部と、プロセッサ間のプログラム間で拡張コンテキストデータの退避と復帰とを行う第２転送部とを備える。
【００４１】
図１は、本発明の第１の実施の形態におけるプロセッサ装置の構成を示すブロック図である。このプロセッサ装置は、命令準備部２１０、２２０および２３０と、実行パイプライン部２４０と、制御部２５０と、ハードウェア資源２６０および２７０と、メモリ３１０、３２０、３３０とを備える。
【００４２】
命令準備部２１０、２２０、２３０および実行パイプライン部２４０は、マルチスレッドプロセッサを構成する。命令準備部２１０、２２０、２３０はそれぞれ独立にスレッド（プログラム）から命令をフェッチおよび解読し、解読結果を実行パイプライン部２４０に発行する。
【００４３】
実行パイプライン部２４０は、複数の機能ユニット（ＡＬＵ、ロード／ストアユニット、分岐処理ユニット、乗算器、除算器等）を備え、複数の命令解読結果のうち実行可能な命令を、複数の機能ユニットで同時に実行する。１つの命令準備部と実行パイプライン部２４０の組は、実質的に１つのプロセッサとして機能するので、仮想プロセッサまたは論理プロセッサと呼ぶ。つまり、命令準備部２１０、２２０、２３０および実行パイプライン部２４０は、３つの仮想プロセッサ０〜２に相当する。各仮想プロセッサはプログラムを切り替えながら実行する。なお、命令準備部２１０、２２０、２３０および実行パイプライン部２４０の代わりに、独立に動作する複数の物理プロセッサを備えてもよい。以下では、３つの仮想プロセッサ０〜２（論理プロセッサ）と３つの物理プロセッサとを特に区別する必要がない場合は、単にプロセッサ０〜２と呼ぶ。
【００４４】
メモリ３１０、３２０および３３０は３つのプロセッサに対応するアドレス空間を有する。メモリ３１０は、プログラム、プログラムの通常のコンテキストデータ３１１、ハードウェア資源の拡張コンテキストデータ３１２等を記憶する。メモリ３２０および３３０についても同様である。３つのメモリ３１０、３２０および３３０は、物理アドレス空間は１つで、３つの独立した仮想アドレス空間を有する。なお、３つのメモリ３１０、３２０および３３０は３つの独立した物理アドレス空間を有していてもよい。また、コンテキストデータ３１１、３２１および３３１を別のコンテキストデータ専用のメモリに格納しても良い。
【００４５】
命令準備部２１０は、メモリ３１０から命令をフェッチする命令フェッチ部２１１と、フェッチされた命令を解読する命令解読部２１２と、状態レジスタ部２１３と、レジスタ部２１４と、第１判定部２１５と、第２判定部２１６とを備える。
【００４６】
命令準備部２２０は、メモリ３２０から命令をフェッチする命令フェッチ部２２１と、フェッチされた命令を解読する命令解読部２２２と、状態レジスタ部２２３と、レジスタ部２２４と、第１判定部２２５と、第２判定部２２６とを備える。
【００４７】
命令準備部２３０は、メモリ３３０から命令をフェッチする命令フェッチ部２３１と、フェッチされた命令を解読する命令解読部２３２と、状態レジスタ部２３３と、レジスタ部２３４と、第１判定部２３５と、第２判定部２３６とを備える。
【００４８】
状態レジスタ部２１３およびレジスタ部２１４の各データは、実行中のプログラムのコンテキストデータを構成する。状態レジスタ部２２３およびレジスタ部２２４についても同様である。状態レジスタ部２３３およびレジスタ部２３４についても同様である。
【００４９】
制御部２５０は、第１転送部２５１、第２転送部２５２を有し、ハードウェア資源２６０および２７０とメモリ３１０、３２０および３３０との間で、拡張コンテキストデータの退避と復帰とを制御する。
【００５０】
ハードウェア資源２６０、２７０はそれぞれ、データを保持するレジスタ群２６１、２７１を有し、複数のプロセッサを補完する。各ハードウェア資源は、例えば、ＦＰＵ（浮動小数点演算装置：Floating Point number processing Unit）、ハードウェアアクセラレータ、拡張演算ユニットなどでよい。ＦＰＵは、プログラム中の浮動小数点演算命令（以下、ＦＰＵ命令と呼ぶ。）を実行する。ハードウェアアクセラレータは、プロセッサからコマンドを受けて、指定されたデータに対して積和演算、バタフライ演算、ブロックデータの量子化または逆量子化等を高速に実行する。拡張演算ユニットは、プロセッサが直接実行できない拡張命令（乗算命令、除算命令、拡張演算ユニットに専用の命令等）を実行する。
【００５１】
レジスタ群２６１、２７１のそれぞれは、対応するハードウェア資源のコンテキスト（以下、拡張コンテキストデータと呼ぶ。）を保持する。各ハードウェア資源は、複数のプロセッサに共有される。ここで、拡張コンテキストデータは、各プロセッサにおけるプログラムのコンテキストデータの退避および復帰とは非同期に行われる。つまり、プロセッサが、ハードウェア資源を利用する所定命令（上記のＦＰＵ命令、コマンド、拡張命令）を実際に実行し、その拡張コンテキストデータを必要とする時にだけ、退避および復帰される。
【００５２】
メモリ３１０は、複数のプロセッサによって時分割多重化されるプログラムのそれぞれのコンテキストデータ３１１と、複数のプログラムのうちハードウェア資源を利用する所定命令を含むプログラム毎に、前記ハードウェア資源内のレジスタデータのコピーである拡張コンテキストデータ３１２を記憶する。同様にメモリ３２０は、コンテキストデータ３２１、拡張コンテキストデータ３２２を記憶する。メモリ３３０は、コンテキストデータ３３１、拡張コンテキストデータ３３２を記憶する。
【００５３】
第１判定部２１５は、命令準備部２１０に対応するプロセッサがプログラム中の所定命令を実行しようとしたとき、ハードウェア資源内のレジスタに現在実行中のプログラムの拡張コンテキストデータが保持されているか否かを判定する。
【００５４】
第２判定部２１６は、ハードウェア資源内の拡張コンテキストデータが、当該所定命令を実行しようとするプロセッサに属するか否かを判定する。
【００５５】
第１転送部２５１は、第１判定部２１５および第２判定部２１６の判定結果に応じて、ハードウェア資源からメモリ３１０、３２０、３３０の何れかに拡張コンテキストデータを退避し、退避した拡張コンテキストデータと同じプロセッサ（または同じメモリ）に属するコンテキストデータを復帰する。復帰後、ハードウェア資源２６０または２７０は、当該所定命令を実行する。
【００５６】
第２転送部２５２は、第１判定部２１５および第２判定部２１６の判定結果に応じて、ハードウェア資源からメモリ３１０、３２０、３３０の何れかに拡張コンテキストデータを退避し、退避した拡張コンテキストデータとは異なるプロセッサ（または異なるメモリ）に属するコンテキストデータを復帰する。復帰後、ハードウェア資源２６０または２７
０は、当該所定命令を実行する。
【００５７】
ハードウェア資源２６０または２７０は、ハードウェア資源内のレジスタに現在実行中のプログラムの拡張コンテキストデータが保持されていると第１判定部２１５によって判定され、かつ、ハードウェア資源内の拡張コンテキストデータが、当該所定命令を実行しようとするプロセッサに属すると第２判定部２１６によって判定された場合は、拡張コンテキストデータの退避および復帰を待つことなく、当該所定命令を即座に実行する。
【００５８】
以上の構成により、各ハードウェア資源２６０または２７０を複数のプロセッサで共有することができる。つまり、どのプロセッサでも各ハードウェア資源を使用することができる。それゆえ、ハードウェア資源の使用効率を向上させることができる。また、ハードウェア資源をプロセッサ毎に備える必要がないので、必要な処理性能に応じた個数の必要最小限のハードウェア資源を備えればよく、回路規模を削減または最適化することができる。
【００５９】
図２は、本発明の第１の実施の形態における状態レジスタ部内の第１〜第３状態情報の一例を示す図である。
【００６０】
同図は、状態レジスタ部２１３、２２３または２３３の一部を示している。ここでは、状態レジスタ部２１３を代表として説明する。状態レジスタ部２１３は、ＰＳＲ（Processor Status Register）と呼ばれるレジスタと、ＬＰＦＯＳＲ（Logical Processor FPU Operation Status Register）と呼ばれるレジスタとを含む。このうちＰＳＲ（Processor Status Register）は、プログラムのコンテキストデータ３１１に含まれる。ＬＰＦＯＳＲは、プログラムのコンテキストデータ３１１に含まれるか、プログラムのコンテキストデータ３１１に含まれないで別途ＯＳによって管理される。
【００６１】
ＰＳＲは、現在実行中のプログラムの拡張コンテキストデータがハードウェア資源内に保持されている可能性があることを示す第１状態情報としてＦＥ（FPU Enable）ビットを含む。
【００６２】
ＬＰＦＯＳＲは、ハードウェア資源内に保持されている拡張コンテキストデータに対応するプロセッサを示す第２状態情報としてＬＰＦＥ０(Logical Processor FPU Enable 0)、ＬＰＦＥ１ビットを含む。ＬＰＦＥ０、ＬＰＦＥ１ビットは、排他的に何れか１ビットのみ“１”になるか、全て“０”になる。この例では、ＬＰＦＥ０ビットは、プロセッサ０に対応し、ＬＰＦＥ１ビットは、プロセッサ１および２に対応するものとする。ＬＰＦＯＳＲは、さらに、第２状態情報をロックするか否かを示す第３状態情報（ＦＬビット）を含む。
【００６３】
つまり、実行中のプログラムのＰＳＲのＦＥビットが、拡張コンテキストデータがハードウェア資源内に保持されている可能性があることを示していて、更に、そのプログラムを実行中のプロセッサが、ハードウェア資源内に保持されている拡張コンテキストデータに対応していることを、ＬＰＦＥ０または、ＬＰＦＥ１によって示されている場合に、そのプロセッサは、ＬＰＦＥ０または、ＬＰＦＥ１によって示されている、いずれかのハードウェア資源を使用することが可能になる。
【００６４】
第１判定部２１５は、対応するプロセッサがプログラム中の前記所定命令を実行しようとしたとき、前記第１状態情報が真か偽かを判定し、偽であると判定したとき第１の例外割込み信号を発生する第１判定回路（データ判定部）を含む。
【００６５】
第２判定部２１６は、対応する前記第１判定回路が偽であると判定したとき、対応する
プロセッサと前記第２状態情報が示すプロセッサとが一致するか否かを判定し、偽であると判定したとき第２の例外割込み信号を発生する第２判定回路（プロセッサ判定部）を含む。第１および第２判定回路はハードウェアにて構成される。これにより、特に拡張コンテキストデータの入れ替えが不要な場合の処理を高速化する。
【００６６】
図３は、本発明の第１の実施の形態におけるプロセッサ装置におけるオペレーティングシステムについての説明図である。
【００６７】
同図においてプロセッサ０〜２は、図１に示した３つの仮想プロセッサまたは３つの物理プロセッサに対応する。
【００６８】
プロセッサ０は第１のオペレーティングシステム（以下ＯＳと略す。）を実行することによって複数のプログラムを時分割多重で実行する。
【００６９】
プロセッサ１および２は、第１のＯＳとは異なる第２のＯＳを実行することによって複数のプログラムを時分割多重で実行する。第１のＯＳは例えばＬｉｎｕｘ、第２のＯＳは例えばリアルタイムＯＳである。
【００７０】
第１転送部２５１は、プロセッサ毎に設けられた退避復帰部２５１ａ、２５１ｂ、２５１ｃを含む。各退避復帰部は、第１の例外割り込み信号が発生した場合に前記ハードウェア資源から前記メモリに拡張コンテキストデータを退避し、前記メモリから前記ハードウェア資源に前記所定命令を実行しようとしたプロセッサの拡張コンテキストデータを復帰し、プロセッサ０内の前記退避復帰部２５１ａは、プロセッサ０内の第１判定部２１５が第１の例外割込み信号を発生したとき、第１のＯＳによって起動される。
【００７１】
プロセッサ１および２の退避復帰部２５１ｂ、２５１ｃは、プロセッサ１および２の第１判定部２２５、２３５が第１の例外割込み信号を発生したとき、第２のＯＳによって起動される。
【００７２】
プロセッサ０〜２のうちの少なくとも１つは、第１のＯＳと第２のＯＳとを管理する第３のＯＳを実行することによって、第２転送部２５２を制御する。すなわち、第２転送部２５２は、何れかの第２判定部が第２の例外割込み信号を発生したとき、第３のオペレーティングシステムによって起動される。起動された第２転送部２５２は、ハードウェア資源からメモリ３１０、３２０、３３０の何れかに他のプロセッサに属する拡張コンテキストデータを退避する動作の開始から、前記メモリから前記ハードウェア資源に前記所定命令を実行しようとしたプロセッサの拡張コンテキストデータを復帰する動作の完了までをアトミックに行う。これにより、プログラム毎のコンテキストデータ（特に第１状態情報および第２状態情報）に矛盾を生じさせることなく、他のプロセッサからの干渉を受けることなく、異なるプロセッサ間でハードウェア資源を共有することができる。
【００７３】
さらに、第３のＯＳは、クリア部２５３を制御する。クリア部２５３は、プロセッサ毎に備えられたクリア回路の総称である。各クリア回路は、当該クリア回路に対応するプロセッサが停止状態、待ち状態または休眠状態に遷移したとき、当該プロセッサに対応する第２状態情報（ＬＰＦＥ０およびＬＰＦＥ１ビット）をクリアする。これにより、当該プロセッサが使用しているハードウェア資源を解放することができ、複数のプロセッサで共有されるハードウェア資源の使用効率を向上させる。ただし、第３状態情報（ＦＬビット）がセットされている場合（ＦＬ＝１の場合）は、クリア回路の動作は禁止される。これにより、ハードウェア資源を使用するプロセッサが固定的である場合や、ハードウェア資源をあるプロセッサが優先して使用する場合に、プログラマが第３状態情報を「ロック」に設定することにより、ハードウェア資源を当該プロセッサに占有させ続けることができ
、無駄な拡張コンテキストデータの退避および復帰を削減することができる。
【００７４】
図４は、本発明の第１の実施の形態におけるハードウェア資源切り替え動作の概略を示すフローチャート図である。同図では、プロセッサ０〜２のうちの何れか１つのプロセッサにおける動作を示している。ここでは、同図がプロセッサ０の動作を表し、ハードウェア資源がＦＰＵであるものとして説明する。
【００７５】
プロセッサ０がＦＰＵ命令の実行しようとしたとき（ＦＰＵ命令の実行要求をプロセッサ０がハードウェアにより検出したとき）（Ｓ３０）、ＦＰＵレジスタが使用不可能であるか否かを判定する（Ｓ３１）。“ＦＰＵレジスタが使用不可能でない”というのは、ＦＥ＝１、かつＬＰＦＥ０＝１（または、ＬＰＦＥ１＝１）の場合であり、ＦＰＵレジスタには、ＦＰＵ命令の実行要求を出したプロセッサ０のプログラムに属する拡張コンテキストデータが保持されていることを意味する。この判定は、第１判定回路および第２判定回路により、ほぼ遅延時間なく、なされる。この場合、ＬＰＦＥ０または、ＬＰＦＥ１のいずれか１を示している方に対応したＦＰＵによってＦＰＵ命令が即座に実行される（Ｓ３４）。
【００７６】
さらに、“ＦＰＵレジスタが使用不可能である”場合は、ＦＰＵレジスタに他のプロセッサに属する拡張コンテキストデータが保持されているか否かを判定する（Ｓ３２）。この判定は、第１判定回路および第２判定回路によりなされる。
【００７７】
ＦＰＵレジスタに同じプロセッサ０に属する拡張コンテキストデータが保持されているが、現在プロセッサ０で実行中のプログラムの拡張コンテキストデータでない場合は、つまり、そのプロセッサのＰＳＲのＦＥビットは１であるが、ＬＰＦＯＳＲのＬＰＦＥ１かＬＰＦＥ０のいずれかが１の場合は、ＬＰ内コンテキスト切り替えを行う（Ｓ３６）。ＬＰ（Logical Processor）内コンテキスト切り替えは、第１転送部２５１によってなされる。
【００７８】
ＦＰＵレジスタに異なるプロセッサ１または２に属する拡張コンテキストデータが保持されている場合、つまりそのプロセッサのＬＰＦＯＳＲのＬＰＦＥ１もＬＰＦＥ０も０の場合は、ＬＰ間コンテキスト切り替えを行う（Ｓ４１）。ＬＰ（Logical Processor）間コンテキスト切り替えは、第２転送部２５２によってなされる。
【００７９】
ＬＰ内またはＬＰ間コンテキスト切り替えの後、ＦＰＵによってＦＰＵ命令が即座に実行される（Ｓ３４）。
【００８０】
上記のうち、Ｓ３０、Ｓ３１、Ｓ３２はプロセッサ内のハードウェアによって行われる。Ｓ３４はＦＰＵによって実行される。Ｓ３６は第１のＯＳの制御の下で第１転送部２５１によって行われる。Ｓ４１は、第３のＯＳの制御の下で第２転送部２５２によって行われる。
【００８１】
図５は、本発明の第１の実施の形態における第３のＯＳが管理するデータの一例を示す図である。
【００８２】
同図のテーブルＴ１は、プロセッサのＩＤ（ここではＬＰＩＤ）と、使用する予定のハードウェア資源（ここではＦＰＵ０、ＦＰＵ１とする）とを対応付けたテーブルである。テーブルＴ２は、ＦＰＵ番号と、現在ＦＰＵを占有しているプロセッサＩＤ（ＬＰＩＤ）と、ロック属性（ＦＬビット）とを対応付けたテーブルである。第３のＯＳは、テーブルＴ１、Ｔ２をそれぞれ常に最新の状態に更新し、ソフトウェア的にＦＰＵを管理する。
【００８３】
第３のＯＳは、このようなテーブルを参照し、（１）ＦＰＵ０、１と、ＬＰＩＤの対応付け（新たにＬＰに割り当てるべきＦＰＵの選択）、（２）現在のＦＰＵ０、１を使用しているＬＰＩＤ、（３）現在ＦＰＵｎを使用しているＬＰのロック属性の管理を行う。
【００８４】
より具体的には、（１）第３のＯＳは、各ＬＰが、どのＦＰＵｎを使用する予定かを管理（ソフトウェアにより各ＬＰが使用する予定のＦＰＵｎを管理）し、図２に示したＬＰＦＯＳＲ内のＬＰＦＥ０、ＬＰＦＥ１のどのビットをセットするかを決定する。つまり、各ＬＰでどのＦＰＵｎのコンテキストを使用するのかを管理可能である。
【００８５】
（２）第３のＯＳは、現在ＦＰＵ０、１を使用しているＬＰＩＤを管理することにより、現状のＦＰＵ０、１をどのプロセッサが使っていて、今から使おうとしているのかを管理し、ＬＰ間のコンテキスト復帰・退避をアトミック操作として管理する。
【００８６】
（３）第３のＯＳは、ソフトウェアによりＦＰＵｎを使用するＬＰのロック管理をし、ソフトウェアによりＦＰＵｎのロック属性を管理可能である。これによりＦＰＵの占有状態を自ＬＰがロックしたり、他ＬＰから取り外したりすることが可能になる。
【００８７】
図６は、本発明の第１の実施の形態におけるハードウェア資源切り替え動作を示す詳細なフローチャート図である。同図では、プロセッサのハードウェアにより実行されるステップと、第１のＯＳまたは第２のＯＳにより実行されるステップと、第３のＯＳにより実行されるステップとを分けている。同図では、プロセッサ０〜３のうちの何れか１つのプロセッサにおける動作を示している。ここでは、同図がプロセッサ０の動作を表し、ハードウェア資源がＦＰＵであるものとして説明する。
【００８８】
プロセッサ０がＦＰＵ命令を実行しようとしたとき（ＦＰＵ命令の実行要求をプロセッサ０がハードウェアにより検出したとき）（Ｓ３０）、第１判定部２１５は、ＰＳＲ内のＦＥビット（第１の状態情報）が真か偽かを判定することにより、ＦＰＵレジスタが使用不可能であるか否かを判定し（Ｓ３１）、さらに、第２判定部２１６は、ＬＰＦＥ０、１ビット（第２の状態情報）の何れのビットが真であるかを判定する（Ｓ３２）。これにより、ＦＥ＝１、かつＬＯＦＥ０＝１の場合は、ＦＰＵレジスタに、ＦＰＵ命令の実行要求を出したプロセッサ０のプログラムに属する拡張コンテキストデータが保持されていることを意味する。この判定は、第１判定回路および第２判定回路により、ほぼ遅延時間なく、なされる。この場合、ＦＰＵによってＦＰＵ命令が即座に実行される（Ｓ３３）。
【００８９】
また、第１判定部２１５は、ＦＥ＝０である場合（ＦＰＵレジスタが使用不可能である場合）、第１の例外割り込み信号を発生する（Ｓ３４）。これにより、第１のＯＳまたは第２のＯＳ（ここでは第１のＯＳ）に制御が移ることになる。第１のＯＳは、ＦＰＵ（ここではＦＰＵ０とする）を確保するためにＦＥ＝１にセットし（Ｓ３５）、必要に応じてＯＳ内でのＦＰＵのコンテキストの退避復帰を行おうとする。ＦＰＵ０内の拡張コンテキストデータが同じプロセッサに属すると第２判定部２１６が判定した場合は、ＦＰＵ０からメモリ３１０に拡張コンテキストデータを退避し、メモリ３１０からＦＰＵ０に、現在実行中のＦＰＵ命令を実行しようとしたプログラムの拡張コンテキストデータを復帰し、（Ｓ３６）、割り込み処理からリターンする（Ｓ３７）。これにより、ＦＰＵ命令を実行しようとしたプログラムは、何事もなかったかのようにＳ３１（True）、Ｓ３２(True)の判定を経る。これにより、ＦＰＵ０はＦＰＵ命令を実行する。
【００９０】
一方、第１のＯＳは、ＦＥ＝１にセットし（Ｓ３６）、ＦＰＵ０内の拡張コンテキストデータを退避しようとするが、ＦＰＵ０内の拡張コンテキストデータが他のプロセッサに属すると第２判定部２１６が判定した場合は、第２の例外割り込み信号が発生する（Ｓ３８）。これにより、第３のＯＳに制御が遷移する。
【００９１】
第２の例外割り込み信号を受けた第３のＯＳは、ＦＰＵ０の使用権を確保するためにＬＰＦＥ０＝１をセットし、（Ｓ３８ａ）、ＦＰＵ０の使用権を確保できたか否かを判定し（Ｓ３８ｂ）、確保できた場合は、テーブルＴ２を参照して、現にＦＰＵ０を占有しているプロセッサ（ＦＰＵ０−ＬＰＩＤ）と、ＦＰＵ命令を実行しようとしたプロセッサとが同じでないかどうかを判定し（Ｓ４０）、同じでなければ、異なるプロセッサ間のコンテキスト入れ換えを行い（Ｓ４１）、割り込み処理を抜ける（Ｓ４２）。
【００９２】
Ｓ３８ｂにおいてＦＰＵ０を確保できない場合（ＬＰＦＥ０に１を書き込んだにもかかわらず、ＬＰＦＥ０＝０の場合、つまり、他の物理プロセッサによって、ＦＰＵ０が確保されている場合）は、第３のＯＳは、ＦＰＵ０が解放されるまで待ち処理に入る（Ｓ３９）。この待ち処理では、ポーリング、イベント待ち等により、解放されたかどうかをチェックすればよい。
【００９３】
また、Ｓ４０において現にＦＰＵ０を占有しているプロセッサ（ＦＰＵ０−ＬＰＩＤ）と、ＦＰＵ命令を実行しようとしたプロセッサとが同じである場合は、コンテキスト入れ替えの必要がないので、そのまま割り込み処理を抜ける。このケースは、プロセッサ０で実行していたプログラムが、一旦休止状態、停止状態等になった場合に、ＦＥビットがクリアされることによって起こり得る。
【００９４】
上記の処理のうち、第２の例外割り込み信号を受けた第３のＯＳの処理についてさらに詳しく説明する。
【００９５】
図３に示した第３のＯＳは、第２判定部２１６、２２６、２３６からの各第２の例外割込み信号によって起動される第２の例外割り込み処理を、オペレーティングシステムの一部の機能として実行する。第３のＯＳは、第２の例外割り込み処理のサポートのために、前記ハードウェア資源の獲得処理、前記ハードウェア資源の解放待ち処理等を含む。
【００９６】
第３のＯＳは、獲得処理において、第２の例外割り込み信号を発生させた仮想プロセッサの属する命令準備部以外の命令準備部に属する仮想プロセッサおいて当該ハードウェア資源が使用中でない場合（ケース１）に、第２の例外割り込み信号を発生させた命令準備部内の状態レジスタに、真を示す第１状態情報と、前記第２の例外割り込み信号を発生させたプロセッサを示す第２状態情報とを設定する。真を示す第１の状態情報は、現在実行中のプログラムの拡張コンテキストデータがハードウェア資源内に保持されている可能性があることを示す。上記ステップＳ３８ｂにおいて、ＦＰＵ０の使用権を確保できたと判定される場合がこのケース１である。
【００９７】
一方、第３のＯＳは、第２の例外割り込み信号を発生させた仮想プロセッサの属する命令準備部以外の命令準備部において仮想プロセッサにおいて当該ハードウェア資源が使用中である場合（ケース２）に、前記ハードウェア資源の解放を待つ待ち処理を実行する。上記ステップＳ３８ｂにおいてＦＰＵ０の使用権を確保できないと判定され、ステップＳ３９（待ち処理）に入る場合がこのケース２である。
【００９８】
ステップＳ３８ｂにおいてハードウェア資源を獲得する処理は、例えば、第３のＯＳが、資源を排他制御するためのＭＵＴＥＸ等の管理オブジェクトを備え、この管理オブジェクトを利用すればよい。
【００９９】
以上説明してきたように、本実施の形態におけるプロセッサ装置によれば、各ハードウェア資源を複数のプロセッサで共有することができる。つまり、どのプロセッサでも各ハードウェア資源を使用することができる。それゆえ、ハードウェア資源の使用効率を向上
させることができる。ハードウェア資源をプロセッサ毎に備える必要がないので、必要な処理性能に応じた個数の必要最小限のハードウェア資源を備えればよく、回路規模を削減または最適化することができる。ＦＰＵやハードウェアアクセラレータ等の拡張演算ユニットを効率よく複数のプロセッサで共有することができ、拡張コンテキストデータの退避および復帰を最小限にすることができる。
【０１００】
（第２の実施の形態）
本実施の形態では、第１の実施の形態で説明したプロセッサ装置をメディアプロセッサに適用する場合の構成について説明する。
【０１０１】
本実施の形態に係るプロセッサシステムは、資源を共用してホスト処理とメディア処理とを行う単一のプロセッサブロックを備える。プロセッサブロックは、第１の実施の形態のプロセッサ装置と同じ機能を有し、さらに、資源を共用してホスト処理とメディア処理とを行う単一のプロセッサ装置で行う。本発明の実施の形態に係るプロセッサシステムは、ホスト処理のスレッドとメディア処理のスレッドとに、異なるタグ情報を与えるとともに、プロセッサシステムが有する資源を当該タグ情報に対応付けて分割する。これにより、本発明の実施の形態に係るプロセッサシステムは、面積効率を向上できるとともに、性能の保証及び堅牢性を向上できる。
【０１０２】
まず、本発明の実施の形態に係るプロセッサシステムの構成を説明する。
【０１０３】
図７は、第２の実施の形態に係るプロセッサシステム１０の基本構成を示す機能ブロック図である。
【０１０４】
このプロセッサシステム１０は、映像音声ストリームに関する様々な信号処理を行うシステムＬＳＩであり、外部メモリ１５を用いて複数のスレッドを実行する。例えば、プロセッサシステム１０は、デジタルテレビシステム、ＤＶＤレコーダ、デジタルカメラ及び携帯電話機等に搭載される。このプロセッサシステム１０は、プロセッサブロック１１と、ストリームＩ／Ｏブロック１２と、ＡＶＩＯ（Ａｕｄｉｏ  Ｖｉｓｕａｌ  Ｉｎｐｕｔ
Ｏｕｔｐｕｔ）ブロック１３と、メモリＩＦブロック１４とを備える。
【０１０５】
プロセッサブロック１１は、第１の実施の形態で説明したプロセッサ装置と同じである。以下、同じ点は説明を省略して、異なる点を中心に説明する。
【０１０６】
プロセッサブロック１１は、プロセッサシステム１０全体を制御するプロセッサであり、制御バス１６を介してストリームＩ／Ｏブロック１２、ＡＶＩＯブロック１３、及びメモリＩＦブロック１４を制御したり、データバス１７及びメモリＩＦブロック１４を介して外部メモリ１５にアクセスしたりする。また、プロセッサブロック１１は、データバス１７及びメモリＩＦブロック１４を介して外部メモリ１５から圧縮画像音声ストリーム等の画像音声データを読み出し、圧縮又は伸張等のメディア処理を行った後に、再び、データバス１７及びメモリＩＦブロック１４を介して、処理後の画像データや音声データを外部メモリ１５に格納する回路ブロックである。
【０１０７】
つまり、プロセッサブロック１１は、映像音声の出力サイクル（フレームレート等）に依存しない非リアルタイムな汎用（制御関連の）処理であるホスト処理と、映像音声の出力サイクルに依存するリアルタイムな汎用（メディア関連の）処理であるメディア処理とを行う。
【０１０８】
例えば、プロセッサシステム１０をデジタルテレビシステムに搭載する場合、ホスト処理は、当該デジタルテレビシステムの制御を行い、メディア処理は、デジタル映像の伸張
を行う。
【０１０９】
ストリームＩ／Ｏブロック１２は、プロセッサブロック１１による制御の下で、蓄積メディア及びネットワーク等の周辺デバイスから圧縮画像音声ストリーム等のストリームデータを読み込み、データバス１８及びメモリＩＦブロック１４を介して外部メモリ１５に格納したり、その逆方向のストリーム転送をしたりする回路ブロックである。このように、ストリームＩ／Ｏブロック１２は、映像音声の出力サイクルに依存しない非リアルタイムなＩＯ処理を行う。
【０１１０】
ＡＶＩＯブロック１３は、プロセッサブロック１１による制御の下で、データバス１９及びメモリＩＦブロック１４を介して外部メモリ１５から画像データ及び音声データ等を読み出し、各種グラフィック処理等を施した後に、画像信号及び音声信号として外部の表示装置やスピーカ等に出力したり、その逆方向のデータ転送をしたりする回路ブロックである。このように、ＡＶＩＯブロック１３は、映像音声の出力サイクルに依存するリアルタイムなＩＯ処理を行う。
【０１１１】
メモリＩＦブロック１４は、プロセッサブロック１１による制御の下で、プロセッサブロック１１、ストリームＩ／Ｏブロック１２、ＡＶＩＯブロック１３、及びメモリＩＦブロック１４と外部メモリ１５との間で並列にデータ要求が行われるように制御する回路ブロックである。また、メモリＩＦブロック１４は、プロセッサブロック１１からの要求に応じて、プロセッサブロック１１、ストリームＩ／Ｏブロック１２、ＡＶＩＯブロック１３、及びメモリＩＦブロック１４と外部メモリ１５との間の転送帯域を確保するとともに、レイテンシ保証を行う。
【０１１２】
次に、プロセッサブロック１１の詳細な構成を説明する。
【０１１３】
図８は、プロセッサブロック１１の構成を示す機能ブロック図である。
【０１１４】
このプロセッサブロック１１は、実行部１０１と、ＶＭＰＣ（仮想マルチプロセッサ制御部）１０２と、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）１０４と、物理アドレス管理部１０５と、ＦＰＵ（Ｆｌｏａｔｉｎｇ  Ｐｏｉｎｔ  ｎｕｍｂｅｒ  ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：浮動小数点演算装置）１０７と、ＦＰＵ割り当て部１０８と、キャッシュメモリ１０９と、ＢＣＵ１１０と、割り込み制御部１１１とを備える。
【０１１５】
ここで、プロセッサブロック１１は、仮想マルチプロセッサ（ＶＭＰ：Ｖｉｒｔｕａｌ
Ｍｕｌｔｉ  Ｐｒｏｃｅｓｓｏｒ）として機能する。仮想マルチプロセッサとは、一般的に、複数の論理プロセッサ（ＬＰ：Ｌｏｇｉｃａｌ  Ｐｒｏｃｅｓｓｏｒ）の機能を時分割に演じる命令並列プロセッサの一種である。ここで一つのＬＰは、実体的には、物理プロセッサ（ＰＰ：Ｐｈｙｓｉｃａｌ  Ｐｒｏｃｅｓｓｏｒ）のレジスタ群に設定される一つのコンテキストに対応する。各ＬＰに割り当てる時間単位（ＴＳ：Ｔｉｍｅ  Ｓｌｏｔ）の頻度を管理することによって、各ＬＰによって実行されるアプリケーション間の負荷バランスを保つことができる。なお、ＶＭＰの構成及び動作については、その代表的な一例が特開２００３−２７１３９９号公報（特許文献３）に詳しく開示されているので、ここでは詳細な説明を省略する。
【０１１６】
また、プロセッサブロック１１は、マルチスレッドパイプライン型プロセッサ（マルチスレッドプロセッサ）として機能する。マルチスレッドパイプライン型プロセッサは、同時に複数のスレッドを処理し、さらに、実行パイプラインの空きを埋めるように複数のスレッドを処理することにより、処理効率を向上できる。なお、マルチスレッドパイプライ
ン型プロセッサの構成及び動作については、その代表的な一例が特開２００８−１２３０４５号公報（特許文献４）に詳しく開示されているので、ここでは詳細な説明を省略する。
【０１１７】
実行部１０１は、複数のスレッドを同時に実行する。この実行部１０１は、複数の物理プロセッサ１２１と、演算制御部１２２と、演算部１２３とを備える。
【０１１８】
複数の物理プロセッサ１２１は、それぞれ、レジスタを備える。このレジスタそれぞれは、１以上のコンテキスト１２４を保持する。ここで、コンテキスト１２４とは、複数のスレッド（ＬＰ）のそれぞれに対応し、対応するスレッドを実行するために必要な制御情報及びデータ情報等である。各物理プロセッサ１２１は、スレッド（プログラム）中の命令をフェッチおよび解読し、解読結果を演算制御部１２２に発行する。
【０１１９】
演算部１２３は、複数の演算器を備え、同時に複数のスレッドを実行する。
【０１２０】
演算制御部１２２は、マルチスレッドパイプライン型プロセッサにおけるパイプライン制御を行う。具体的には、演算制御部１２２は、実行パイプラインの空きを埋めるように複数のスレッドを、演算部１２３が備える演算器に割り当てたうえで実行させる。
【０１２１】
ＶＭＰＣ１０２は、仮想マルチスレッド処理を制御する。このＶＭＰＣ１０２は、スケジューラ１２６と、コンテキストメモリ１２７と、コンテキスト制御部１２８とを備える。
【０１２２】
スケジューラ１２６は、複数のスレッドの優先度に従い、複数のスレッドの実行順序、及びスレッドを実行するＰＰを決定するスケジューリングを行うハードウェアスケジューラである。具体的には、スケジューラ１２６は、ＬＰをＰＰにアサインする又はアンアサインすることにより、実行部１０１が実行するスレッドを切り替える。
【０１２３】
コンテキストメモリ１２７は、複数のＬＰにそれぞれ対応する複数のコンテキスト１２４を記憶する。なお、このコンテキストメモリ１２７又は複数の物理プロセッサ１２１が備えるレジスタが、本発明の保持手段に相当する。
【０１２４】
コンテキスト制御部１２８は、所謂コンテキストの復帰及び退避を行う。具体的には、コンテキスト制御部１２８は、実行が完了した物理プロセッサ１２１が保持するコンテキスト１２４をコンテキストメモリ１２７に書き込む。また、コンテキスト制御部１２８は、これから実行されるスレッドのコンテキスト１２４をコンテキストメモリ１２７から読み出し、読み出したコンテキスト１２４を当該スレッドに対応するＬＰがアサインされた物理プロセッサ１２１に転送する。
【０１２５】
図９は、一つのコンテキスト１２４の構成を示す図である。なお、図９にはスレッドを実行するために必要な通常の制御情報及び通常のデータ情報等は図示しておらず、新たにコンテキスト１２４に追加された情報のみを示している。
【０１２６】
図９に示すにように、コンテキスト１２４は、ＴＶＩＤ（ＴＬＢアクセス仮想識別子）１４０と、ＰＶＩＤ（物理メモリ保護仮想識別子）１４１と、ＭＶＩＤ（メモリアクセス仮想識別子）１４２とを含む。
【０１２７】
このＴＶＩＤ１４０、ＰＶＩＤ１４１及びＭＶＩＤ１４２は、複数のスレッド（ＬＰ）のそれぞれが、ホスト処理に属するスレッドか、メディア処理に属するスレッドかを示すタグ情報である。
【０１２８】
ＴＶＩＤ１４０は、複数の仮想メモリ保護グループを設定するために用いられる。例えば、ホスト処理のスレッドと、メディア処理のスレッドとにそれぞれ異なるＴＶＩＤ１４０が付与される。実行部１０１は、このＴＶＩＤ１４０を用いて論理アドレス空間のページ管理情報をそれぞれ独立に作成することができる。
【０１２９】
ＰＶＩＤ１４１は、物理メモリ領域のアクセスを制限するために用いられる。
【０１３０】
ＭＶＩＤ１４２は、メモリＩＦブロック１４へのアクセス形態を設定するために用いられる。メモリＩＦブロック１４は、このＭＶＩＤ１４２を用いて、レイテンシ（応答性重視）を優先するか、バスバンド幅（性能保証）を優先するかを決定する。
【０１３１】
図１０は、プロセッサシステム１０における論理アドレス空間の管理を模式的に示す図である。図１０に示すように、プロセッサシステム１０は、ユーザレベル、スーパーバイザーレベル及び仮想モニタレベルの３つの階層により制御される。
【０１３２】
ここでユーザレベルは、スレッド（ＬＰ）ごとの制御を行う階層である。スーパーバイザーレベルは、複数のスレッドの制御を行うオペレーティングシステム（ＯＳ）に対応する階層である。例えば、図１０に示すようにスーパーバイザーレベルには、ホスト処理のＯＳであるＬｉｎｕｘカーネルと、メディア処理のＯＳであるＳｙｓｔｅｍ  Ｍａｎａｇｅｒとが含まれる。
【０１３３】
仮想モニタレベルは、スーパーバイザーレベルの複数のＯＳを制御する階層である。具体的には、仮想モニタレベルのＯＳ（モニタプログラム）により、ＴＶＩＤ１４０を用いた論理アドレス空間の区別が行われる。つまり、プロセッサシステム１０は、複数のＯＳが用いる論理アドレス空間が互いに干渉しないように、論理アドレス空間を管理する。たとえば、各コンテキストのＴＶＩＤ１４０、ＰＶＩＤ１４１やＭＶＩＤ１４２は、この仮想モニタレベルでのみ設定することが出来るようにしている。
【０１３４】
また、仮想モニタレベルのＯＳは、プロセッサシステム１０が有する複数の資源を、ホスト処理に属するスレッドに対応付ける第１資源と、メディア処理に属するスレッドに対応付ける第２資源とに分割する本発明の分離手段である。ここで資源とは、具体的には、外部メモリ１５のメモリ領域（論理アドレス空間及び物理アドレス空間）、キャッシュメモリ１０９のメモリ領域、ＴＬＢ１０４のメモリ領域、及びＦＰＵ１０７である。
【０１３５】
このように、仮想モニタレベルで、資源を分割することにより、設計者は、ホスト処理とメディア処理とが独立したプロセッサにより実行されている場合と同様に、ホスト処理及びメディア処理のＯＳを設計できる。
【０１３６】
ＴＬＢ１０４は、一種のキャッシュメモリであり、論理アドレスと物理アドレスとの対応関係を示すページテーブルの一部であるアドレス変換テーブル１３０を保持する。このＴＬＢ１０４は、アドレス変換テーブル１３０を用いて、論理アドレスと物理アドレス間の変換を行う。
【０１３７】
図１１は、アドレス変換テーブル１３０の構成を示す図である。
【０１３８】
図１１に示すように、アドレス変換テーブル１３０は、複数のエントリ１５０を含む。各エントリ１５０は、論理アドレスを識別するためのＴＬＢタグ部１５１と、当該ＴＬＢタグ部１５１に対応付けられたＴＬＢデータ部１５２とを含む。ＴＬＢタグ部１５１は、ＶＰＮ１５３と、ＴＶＩＤ１４０と、ＰＩＤ１５４とを含む。ＴＬＢデータ部１５２は、
ＰＰＮ１５５と、Ａｔｔｒｉｂｕｔｅ１５６とを含む。
【０１３９】
ＶＰＮ１５３は、ユーザレベルの論理アドレスであり、具体的には、論理アドレス空間のページＮｏである。
【０１４０】
ＰＩＤ１５４は、当該データを用いるプロセスを識別するためのＩＤである。
【０１４１】
ＰＰＮ１５５は、当該ＴＬＢタグ部１５１に対応付けられた物理アドレスであり、具体的には、物理アドレス空間のページＮｏである。
【０１４２】
Ａｔｔｒｉｂｕｔｅ１５６は、当該ＴＬＢタグ部１５１に対応付けられたデータの属性を示す。具体的には、Ａｔｔｒｉｂｕｔｅ１５６は、当該データへのアクセスの可否、当該データをキャッシュメモリ１０９に格納するか格納しないか、当該データが特権を有するか否か等を示す。
【０１４３】
また、ＴＬＢ１０４は、複数のスレッド（ＬＰ）が用いる論理アドレス空間の管理を行う。
【０１４４】
図１２は、プロセッサシステム１０における論理アドレスの対応関係を模式的に示す図である。上述したように、ＴＬＢ１０４は、プロセスごとの論理アドレス（ＶＰＮ１５３）とＰＩＤ１５４とＴＶＩＤ１４０との組に対して、一つの物理アドレス（ＰＰＮ１５５）を対応させる。このように、同じＴＶＩＤをもつＬＰ上のスーパーバイザーレベルでは、プロセスごとの論理アドレス（ＶＰＮ１５３）とＰＩＤ１５４との組に対して一つの物理アドレスを対応付けることで、スーパーバイザーレベルにおいて、各プロセスの論理アドレスを区別したうえで、当該論理アドレスを物理アドレスと対応させることができる。
【０１４５】
ここで、ＴＬＢ１０４の更新時に、更新されるエントリのＴＶＩＤは、更新を行うＬＰに設定されているＴＶＩＤが設定される。
【０１４６】
さらに、ＴＬＢ１０４は、プロセスごとの論理アドレス（ＶＰＮ１５３）とＰＩＤ１５４とにＴＶＩＤ１４０を加えた組に対して、一つの物理アドレス（ＰＰＮ１５５）を対応させる。これにより、ＴＬＢ１０４は、仮想モニタレベルにおいて、ホスト処理とメディア処理とにそれぞれ異なるＴＶＩＤを設定することにより、独立した論理アドレス空間を与えることができる。
【０１４７】
また、このＴＬＢ１０４は、エントリ指定レジスタ１３５を備える。エントリ指定レジスタ１３５は、ＴＶＩＤ１４０に割り当てるエントリ１５０を指定する情報を保持する。
【０１４８】
図１３は、エントリ指定レジスタ１３５に格納されるデータの一例を示す図である。図１３に示すように、エントリ指定レジスタ１３５は、ＴＶＩＤ１４０とエントリ１５０との対応関係を保持する。また、エントリ指定レジスタ１３５は、仮想モニタレベルのＯＳ（モニタプログラム）により設定及び更新される。
【０１４９】
ＴＬＢ１０４は、エントリ指定レジスタ１３５に設定された情報を用いて、ＴＶＩＤ１４０ごとに、使用するエントリ１５０を決定する。具体的には、ＴＬＢ１０４は、ＴＬＢミス（ＬＰから入力された論理アドレス（ＴＬＢタグ部１５１）をアドレス変換テーブル１３０に保持していない）場合、当該ＬＰのＴＶＩＤ１４０に対応するエントリ１５０のデータをリプレースする。
【０１５０】
図１４は、ＴＬＢ１０４でのエントリ１５０の割り当て状態を模式的に示す図である。
【０１５１】
図１４に示すように、複数のエントリ１５０が、複数のＬＰにより共有される。さらに、ＴＬＢ１０４は、ＴＶＩＤ１４０を用いて、同じＴＶＩＤ１４０を有するＬＰ間で、エントリ１５０を共有させる。例えば、ＴＶＩＤ０を有するＬＰ０には、エントリ０〜エントリ２が割り当てられ、ＴＶＩＤ１を有するＬＰ１及びＬＰ２には、エントリ３〜エントリ７が割り当てられる。これにより、ＴＬＢ１０４は、ホスト処理に属するスレッドに対して、エントリ０〜エントリ２を用い、メディア処理に属するスレッドに対してエントリ３〜エントリ７を用いることができる。
【０１５２】
図１５は、ＴＬＢ１０４による処理の流れを示すフローチャートである。
【０１５３】
図１５に示すように、ＬＰからの外部メモリ１５へのアクセスが発生した場合、まず、ＴＬＢ１０４は、アクセス元のＬＰから入力された論理アドレス（ＶＰＮ１５３、ＴＶＩＤ１４０及びＰＩＤ１５４）と同じ論理アドレスを格納しているか否かを判定する（Ｓ１０１）。
【０１５４】
格納していない場合、つまりＴＬＢミスの場合（Ｓ１０１でＹｅｓ）、ＴＬＢ１０４は、アクセス元のＬＰのＴＶＩＤ１４０に割り当てられたエントリ１５０を更新する。言い換えると、ＴＬＢ１０４は、アクセス元のＬＰのＴＶＩＤ１４０と、同一のＴＶＩＤ１４０のエントリ１５０を更新する（Ｓ１０２）。具体的には、ＴＬＢ１０４は、外部メモリ１５等に格納されているページテーブルから、ＴＬＢミスした論理アドレスと物理アドレスとの対応関係を読み出し、読み出した対応関係を、アクセス元のＬＰのＴＶＩＤ１４０に割り当てられたエントリ１５０に格納する。
【０１５５】
次に、ＴＬＢ１０４は、更新した対応関係を用いて、論理アドレスを物理アドレスに変換する（Ｓ１０３）。
【０１５６】
一方、ステップＳ１０１で、ＬＰから入力された論理アドレスと同じ論理アドレスを格納している場合、つまりＴＬＢヒットの場合（Ｓ１０１でＮｏ）、ＴＬＢ１０４は、ＴＬＢヒットした対応関係を用いて、論理アドレスを物理アドレスに変換する（Ｓ１０３）。
【０１５７】
ここで、外部メモリ１５等に格納されているページテーブルは、ＴＶＩＤ１４０毎又はＰＶＩＤ１４１毎に、外部メモリ１５の物理アドレスが割り当てられるように、予め作成されている。このページテーブルは、例えば、スーパーバイザーレベル、又は仮想モニタレベルのＯＳにより作成及び更新される。
【０１５８】
物理アドレス管理部１０５は、ＰＶＩＤ１４１を用いて物理アドレス空間のアクセス保護を行う。この物理アドレス管理部１０５は、複数の物理メモリ保護レジスタ１３１と、保護違反レジスタ１３２と、エラーアドレスレジスタ１３３とを備える。
【０１５９】
各物理メモリ保護レジスタ１３１は、物理アドレス範囲ごとに、当該物理アドレス範囲にアクセス可能なＬＰを示す情報を保持する。
【０１６０】
図１６は、一つの物理メモリ保護レジスタ１３１に保持される情報の構成を示す図である。図１６に示すように、物理メモリ保護レジスタ１３１は、ＢＡＳＥＡＤＤＲ１６１と、ＰＳ１６２と、ＰＮ１６３と、ＰＶＩＤ０ＷＥ〜ＰＶＩＤ３ＷＥ１６４と、ＰＶＩＤ０ＲＥ〜ＰＶＩＤ３ＷＥ１６５とを含む情報を保持する。
【０１６１】
ＢＡＳＥＡＤＤＲ１６１、ＰＳ１６２、及びＰＮ１６３は、物理アドレス範囲を指定する情報である。具体的には、ＢＡＳＥＡＤＤＲ１６１は、指定する物理アドレス範囲の先
頭のアドレスの上位１６ビットである。ＰＳ１６２はページサイズを示す。例えば、ページサイズとして、１ＫＢ、６４ＫＢ、１ＭＢ又は６４ＭＢが設定される。ＰＮ１６３は、ＰＳ１６２に設定されたページサイズでのページ数を示す。
【０１６２】
ＰＶＩＤ０ＷＥ〜ＰＶＩＤ３ＷＥ１６４及びＰＶＩＤ０ＲＥ〜ＰＶＩＤ３ＲＥ１６５は、ＢＡＳＥＡＤＤＲ１６１、ＰＳ１６２及びＰＮ１６３で指定される物理アドレス範囲に、アクセス可能なＬＰのＰＶＩＤ１４１を示す。
【０１６３】
具体的には、ＰＶＩＤ０ＷＥ〜ＰＶＩＤ３ＷＥ１６４は、それぞれＰＶＩＤ１４１ごとに１ビット設けられる。また、ＰＶＩＤ０ＷＥ〜ＰＶＩＤ３ＷＥ１６４は、対応するＰＶＩＤ１４１が付与されたＬＰが、指定された物理アドレス範囲にデータを書き込み可能であるか否かを示す。
【０１６４】
ＰＶＩＤ０ＲＥ〜ＰＶＩＤ３ＲＥ１６５は、それぞれＰＶＩＤ１４１ごとに１ビット設けられる。また、ＰＶＩＤ０ＲＥ〜ＰＶＩＤ３ＲＥ１６５は、対応するＰＶＩＤ１４１が付与されたＬＰが、指定された物理アドレス範囲のデータを読み出し可能であるか否かを示す。
【０１６５】
なお、ここでは、４種類のＰＶＩＤ１４１が複数のＬＰに付与されるとするが、２種類以上のＰＶＩＤ１４１が複数のＬＰに付与されればよい。
【０１６６】
図１７は、ＰＶＩＤ１４１により保護される物理アドレス空間の一例を示す図である。また、ここでは物理アドレス管理部１０５は、４つの物理メモリ保護レジスタ１３１（ＰＭＧ０ＰＲ〜ＰＭＧ３ＰＲ）を備えるとする。また、ＰＶＩＤ０は、Ｌｉｎｕｘ（ホスト処理）のＬＰ群に付与され、ＰＶＩＤ１は、メディア処理のＬＰのうち画像処理のＬＰ群に付与され、ＰＶＩＤ２は、メディア処理のＬＰのうち音声処理のＬＰ群に付与され、ＰＶＩＤ３は、Ｓｙｓｔｅｍ  Ｍａｎａｇｅｒ（メディア処理のＯＳ）のＬＰ群に付与される。
【０１６７】
また、物理アドレス管理部１０５は、ＬＰが、当該ＬＰのＰＶＩＤ１４１で許可されていない物理アドレスにアクセスした場合に例外割り込みを発生するとともに、保護違反レジスタ１３２に、エラーが発生したアクセス情報を書き込み、かつ、エラーアドレスレジスタ１３３に、エラーの要因となったアクセスのアクセス先の物理アドレスを書き込む。
【０１６８】
図１８は、保護違反レジスタ１３２に保持されるアクセス情報の構成を示す図である。図１８に示すように、保護違反レジスタ１３２に保持されるアクセス情報は、ＰＶＥＲＲ１６７と、ＰＶＩＤ１４１とを含む。ＰＶＥＲＲ１６７は、当該エラーが、物理メモリ空間保護違反（ＬＰが、当該ＬＰのＰＶＩＤ１４１で許可されていない物理アドレスにアクセスしたエラー）であるか否を示す。ＰＶＩＤ１４１は、物理メモリ空間保護違反が発生したＰＶＩＤ１４１が設定される。
【０１６９】
図１９は、エラーアドレスレジスタ１３３に保持される情報の構成を示す図である。図１９に示すように、エラーアドレスレジスタ１３３は、エラーの要因となったアクセスのアクセス先の物理アドレス（ＢＥＡ［３１：０］）を保持する。
【０１７０】
以上のように、ＰＶＩＤ１４１を用いて、物理アドレスを保護することにより、システムの堅牢性を向上できる。具体的には、デバッグ時において、エラーが発生した物理アドレスやＰＶＩＤから、設計者は、画像処理及び音声処理のうち、どちらの処理がエラーを起こしているかを容易に判別できる。また、ホスト処理のデバッグ時には、画像処理などが書き込めないアドレスで発生している誤動作について、画像処理の誤動作を疑うことな
くデバッグすることが可能になる。
【０１７１】
ＦＰＵ割り当て部１０８は、複数のＦＰＵ１０７をＬＰに割り当てる。このＦＰＵ割り当て部１０８は、ＦＰＵ割り当てレジスタ１３７を備える。
【０１７２】
図２０は、ＦＰＵ割り当てレジスタ１３７に格納されるデータの一例を示す図である。図２０に示すように、ＦＰＵ割り当てレジスタ１３７に、ＴＶＩＤ１４０ごとにＦＰＵ１０７が対応付けられる。また、ＦＰＵ割り当てレジスタ１３７は、仮想モニタレベルのＯＳ（モニタプログラム）により設定及び更新される。
【０１７３】
図２１は、ＦＰＵ割り当て部１０８によるＦＰＵ１０７の割り当て処理を模式的に示す図である。
【０１７４】
図２１に示すように、複数のＦＰＵ１０７が、複数のＬＰにより共有される。さらに、ＦＰＵ割り当て部１０８は、ＴＶＩＤ１４０を用いて、同じＴＶＩＤ１４０を有するＬＰ間で、ＦＰＵ１０７を共有させる。例えば、ＦＰＵ割り当て部１０８は、ＴＶＩＤ０を有するＬＰ０には、ＦＰＵ０を割り当て、ＴＶＩＤ１を有するＬＰ１及びＬＰ２には、ＦＰＵ１を割り当てる。
【０１７５】
また、ＬＰは、ＦＰＵ割り当て部１０８により割り当てられたＦＰＵ１０７を用いて、スレッドを実行する。
【０１７６】
キャッシュメモリ１０９は、プロセッサブロック１１で使用するデータを一時的に格納するメモリである。また、キャッシュメモリ１０９は、異なるＴＶＩＤ１４０を有するＬＰには、独立した異なるデータ領域（ウェイ１６８）を使用する。このキャッシュメモリ１０９は、ウェイ指定レジスタ１３６を備える。
【０１７７】
図２２Ａ及び図２２Ｂは、ウェイ指定レジスタ１３６に格納されるデータの一例を示す図である。
【０１７８】
図２２Ａに示すように、ウェイ指定レジスタ１３６に、ＴＶＩＤ１４０ごとにウェイ１６８が対応付けられる。また、ウェイ指定レジスタ１３６は、仮想モニタレベルのＯＳ（モニタプログラム）により設定及び更新される。
【０１７９】
なお、図２２Ｂに示すように、ＬＰごとにウェイ１６８を対応付けてもよい。この場合、例えば、コンテキスト１２４内に、当該ＬＰが使用するウェイの情報が含まれ、仮想モニタレベルのＯＳ、又はスーパーバイザーレベルのＯＳは、コンテキスト１２４を参照し、ウェイ指定レジスタ１３６を設定及び更新する。
【０１８０】
図２３は、キャッシュメモリ１０９によるウェイ１６８の割り当て処理を模式的に示す図である。
【０１８１】
図２３に示すように、キャッシュメモリ１０９は、データ格納単位として、複数のウェイ１６８（ｗａｙ０〜ｗａｙ７）を有する。このキャッシュメモリ１０９は、ＴＶＩＤ１４０を用いて、同じＴＶＩＤ１４０を有するＬＰ間で、ウェイ１６８を共有させる。例えば、ＴＶＩＤ０を有するＬＰ０には、ｗａｙ０〜ｗａｙ１が割り当てられ、ＴＶＩＤ１を有するＬＰ１及びＬＰ２には、ｗａｙ２〜ｗａｙ７が割り当てられる。これにより、キャッシュメモリ１０９は、ホスト処理に属するスレッドのデータをｗａｙ０〜ｗａｙ１にキャッシュし、メディア処理に属するスレッドのデータをｗａｙ２〜ｗａｙ７にキャッシュする。
【０１８２】
このように、キャッシュメモリ１０９は、異なるＴＶＩＤ１４０を有するＬＰ間で、キャッシュデータを互いに追い出しあわないようにできる。
【０１８３】
図２４は、キャッシュメモリ１０９による処理の流れを示すフローチャートである。
【０１８４】
図２４に示すように、ＬＰからの外部メモリ１５へのアクセスが発生した場合、まず、キャッシュメモリ１０９は、アクセス元のＬＰから入力されたアドレス（物理アドレス）と同じアドレスを格納しているか否かを判定する（Ｓ１１１）。
【０１８５】
格納していない場合、つまりキャッシュミスの場合（Ｓ１１１でＹｅｓ）、キャッシュメモリ１０９は、ウェイ指定レジスタ１３６で指定されるウェイ１６８に、アクセス元のＬＰから入力されたアドレス及びデータをキャッシュする（Ｓ１１２）。具体的には、リードアクセスの場合、キャッシュメモリ１０９は、外部メモリ１５等からデータを読み出し、読み出したデータを、ウェイ指定レジスタ１３６で指定されるウェイ１６８に格納する。また、ライトアクセスの場合、キャッシュメモリ１０９は、アクセス元のＬＰから入力されたデータを、ウェイ指定レジスタ１３６で指定されるウェイ１６８に格納する。
【０１８６】
一方、ステップＳ１１１で、アクセス元のＬＰから入力されたアドレスと同じアドレスを格納している場合、つまりキャッシュヒットの場合（Ｓ１１１でＮｏ）、キャッシュメモリ１０９は、キャッシュヒットしたデータを、更新（ライトアクセス時）、又はアクセス元のＬＰに出力する（リードアクセス時）（Ｓ１１３）。
【０１８７】
ＢＣＵ１１０は、プロセッサブロック１１と、メモリＩＦブロック１４との間のデータ転送を制御する。
【０１８８】
割り込み制御部１１１は、割り込みの検出、要求及び許可等を行う。この割り込み制御部１１１は、複数の割り込み制御レジスタ１３４を備える。例えば、割り込み制御部１１１は、１２８個の割り込み制御レジスタ１３４を備える。割り込み制御部１１１は、割り込み制御レジスタ１３４を参照し、発生した割り込みの割り込み要因に対応するスレッド（ＬＰ）に割り込みを送る。
【０１８９】
割り込み制御レジスタ１３４には、割り込み要因に対応する割り込み先のスレッドが設定される。
【０１９０】
図２５は、一つの割り込み制御レジスタ１３４の構成を示す図である。図２５に示す割り込み制御レジスタ１３４は、割り込み要因に対応付けられた、システム割り込み１７１（ＳＹＳＩＮＴ）と、ＬＰ識別子１７２（ＬＰＩＤ）と、ＬＰ割り込み１７３（ＬＰＩＮＴ）と、ＨＷイベント１７４（ＨＷＥＶＴ）とを含む。
【０１９１】
システム割り込み１７１は、当該割り込みがシステム割り込み（グローバル割り込み）であるか否かを示す。ＬＰ識別子１７２は、割り込み先のＬＰを示す。ＬＰ割り込み１７３は、当該割り込みがＬＰ割り込み（ローカル割り込み）であるか否かを示す。ＨＷイベント１７４は当該割り込み要因によりハードウェアイベントを発生させるか否かを示す。
【０１９２】
システム割り込みの場合、割り込み制御部１１１は、現在スレッドを実行中のＬＰに割り込みを送る。また、ＬＰ割り込みの場合、割り込み制御部１１１は、ＬＰ識別子１７２で示されるＬＰに対して、割り込みを送る。また、ハードウェアイベントの場合、ＬＰ識別子１７２で示されるＬＰに対してハードウェアイベントを送る。このハードウェアイベントにより、該当ＬＰが起床する。
【０１９３】
また、システム割り込み１７１及びＬＰ識別子１７２は、仮想モニタレベルのＯＳ（モニタプログラム）のみが書き換え可能であり、ＬＰ割り込み１７３及びＨＷイベント１７４は、仮想モニタレベル及びスーパーバイザーレベルのＯＳのみが書き換え可能である。
【０１９４】
次に、プロセッサシステム１０における、メモリアクセス管理について説明する。
【０１９５】
図２６は、プロセッサシステム１０における、メモリアクセス管理の状態を模式的に示す図である。図２６に示すように、プロセッサブロック１１からメモリＩＦブロック１４にＭＶＩＤ１４２が送られる。メモリＩＦブロック１４は、このＭＶＩＤ１４２を用いて、ＭＶＩＤ１４２ごとに、バスバンド幅を割り当てたうえで、アクセス要求元のスレッドのＭＶＩＤ１４２に割り当てたバスバンド幅を用いて、外部メモリ１５にアクセスを行う。
【０１９６】
また、メモリＩＦブロック１４は、バスバンド幅指定レジスタ１３８を備える。
【０１９７】
図２７は、メモリＩＦブロック１４によるバスバンド幅指定レジスタ１３８が保持するデータの一例を示す図である。なお、図２７において、ホスト処理であるＬｉｎｕｘと、メディア処理に含まれる音声処理（Ａｕｄｉｏ）と、メディア処理に含まれる画像処理（Ｖｉｄｅｏ）とにそれぞれ異なるＭＶＩＤ１４２が付与されている。
【０１９８】
図２７に示すように、メモリＩＦブロック１４は、ＭＶＩＤ１４２ごとにバスバンド幅を割り当てる。また、ＭＶＩＤ１４２ごとに優先順位を決定し、当該優先順位に基づき、外部メモリ１５へのアクセスを行う。
【０１９９】
これにより、ＭＶＩＤ１４２ごとに必要なバンド幅が確保されるとともに、要求したアクセスレイテンシが保証される。よって、プロセッサシステム１０は、複数のアプリケーションの性能保証及びリアルタイム性の保証を達成することができる。
【０２００】
また、ＭＶＩＤ１４２を用いてバスバンド幅を分割することにより、メモリＩＦブロック１４とプロセッサブロック１１とが一つのデータバス１７のみを介して接続されている場合でも、複数のデータバスを介してメモリＩＦブロック１４とプロセッサブロック１１とが接続されている場合と同様の制御を行うことができる。つまり、複数のブロックに対してバスを分割する場合と同様の制御を行うことができる。
【０２０１】
なお、複数のブロックからのアクセス要求に対して、バスバンド幅を確保しレイテンシを保証するための技術は、その代表的な一例が特開２００４−２４６８６２号公報（特許文献５）に詳しく開示されているので、ここでは詳細な説明を省略する。
【０２０２】
また、プロセッサシステム１０では、ＴＶＩＤ１４０及び従来のＶＭＰの機能を用いて、メディア処理とホスト処理との処理時間の割合を任意に設定できる。具体的には、例えば、仮想モニタレベルのＯＳにより、各ＴＶＩＤ１４０に対する処理時間の割合（メディア処理とホスト処理との処理時間の割合）が、ＶＭＰＣ１０２が備えるレジスタ（図示せず）に設定される。ＶＭＰＣ１０２は、この設定された処理時間の割合と、各スレッドのＴＶＩＤ１４０とを参照し、当該処理時間の割合が満たされるように、実行部１０１が実行するスレッドを切り替える。
【０２０３】
次に、仮想モニタレベルのＯＳ（モニタプログラム）による、資源分割処理について説明する。
【０２０４】
図２８は、モニタプログラムによる、資源分割処理の流れを示すフローチャートである。
【０２０５】
まず、モニタプログラムは、複数のコンテキスト１２４の、ＴＶＩＤ１４０、ＰＶＩＤ１４１及びＭＶＩＤ１４２を設定することにより、複数のスレッドを複数のグループに分割する（Ｓ１２１、Ｓ１２２及びＳ１２３）。
【０２０６】
次に、モニタプログラムは、エントリ指定レジスタ１３５にＴＶＩＤ１４０とエントリ１５０と対応関係を設定することにより、ＴＬＢ１０４が有する複数のエントリ１５０を、ホスト処理に対応付ける第１エントリと、メディア処理に対応付ける第２エントリとに分割する（Ｓ１２４）。
【０２０７】
このエントリ指定レジスタ１３５に設定された対応関係と、アクセス元のスレッドのＴＶＩＤ１４０とを参照して、ＴＬＢ１０４は、ホスト処理に属するスレッドとメディア処理に属するスレッドとにエントリ１５０を割り当てる。
【０２０８】
また、モニタプログラムは、ウェイ指定レジスタ１３６にＴＶＩＤ１４０（又はＬＰ）とウェイ１６８との対応関係を設定することにより、キャッシュメモリ１０９が有する複数のウェイ１６８を、ホスト処理に対応付ける第１ウェイと、メディア処理に対応付ける第２ウェイとに分割する（Ｓ１２５）。
【０２０９】
このウェイ指定レジスタ１３６に設定された対応関係と、アクセス元のスレッドのＴＶＩＤ１４０とを参照して、ＴＬＢ１０４は、ホスト処理に属するスレッドとメディア処理に属するスレッドとにウェイ１６８を割り当てる。
【０２１０】
また、モニタプログラムは、ＦＰＵ割り当てレジスタ１３７にＴＶＩＤ１４０とＦＰＵ１０７との対応関係を設定することにより、複数のＦＰＵ１０７を、ホスト処理に対応付ける第１ＦＰＵと、メディア処理に対応付ける第２ＦＰＵとに分割する（Ｓ１２６）。
【０２１１】
このＦＰＵ割り当てレジスタ１３７に設定された対応関係と、スレッドのＴＶＩＤ１４０とを参照して、ＦＰＵ割り当て部１０８は、ホスト処理に属するスレッドとメディア処理に属するスレッドとにＦＰＵ１０７を割り当てる。
【０２１２】
また、モニタプログラムは、バスバンド幅指定レジスタ１３８に、ＭＶＩＤ１４２とバスバンド幅との対応関係を設定することにより、外部メモリ１５とメモリＩＦブロック１４との間のバスバンド幅を、ホスト処理に対応付ける第１バスバンド幅と、メディア処理に対応付ける第２バスバンド幅とに分割する（Ｓ１２７）。
【０２１３】
このバスバンド幅指定レジスタ１３８に設定された対応関係と、アクセス元のスレッドのＭＶＩＤ１４２とを参照して、メモリＩＦブロック１４は、ホスト処理に属するスレッドとメディア処理に属するスレッドとにバスバンド幅を割り当てる。
【０２１４】
また、モニタプログラムは、物理アドレスと論理アドレスとの対応関係を示すページテーブルを作成する。この際、モニタプログラムは、ＰＶＩＤ１４１と物理アドレスとの対応関係を設定することにより、外部メモリ１５の物理アドレス空間を、ホスト処理に対応付ける第１物理アドレス範囲と、メディア処理に対応付ける第２物理アドレス範囲とに分割するとともに、第１物理アドレス範囲をホスト処理のスレッドに割り当て、第２物理アドレス範囲をメディア処理のスレッドに割り当てる（Ｓ１２８）。また、モニタプログラムは、ＰＶＩＤ１４１と物理アドレスとの当該対応関係を物理メモリ保護レジスタ１３１に設定することにより、物理アドレスの保護を行う。
【０２１５】
また、モニタプログラムは、割り込み制御レジスタ１３４に、各割り込み要因に対応させて、割り込み先のＬＰ等を設定する（Ｓ１２９）。これにより、モニタプログラムは、ホスト処理とメディア処理とにそれぞれ独立した割り込み制御を行える。
【０２１６】
この割り込み制御レジスタ１３４に設定された対応関係と、割り込み要因とを参照して、割り込み制御部１１１は、当該割り込み要因に対応するスレッドに割り込みを送る。
【０２１７】
なお、モニタプログラムによる、各設定の順序は、図２８に示す順序に限定されるものではない。
【０２１８】
なお、モニタプログラムでページテーブルを作成せずに、ＴＶＩＤ１４０を割り当てられたスーパーバイザーレベルの各ＯＳが、それぞれ割り当てられた、物理アドレスに対応する論理アドレスを決めて、それぞれページテーブルを作成することも可能であり、本発明はこれを限定するものではない。
【０２１９】
以上より、本実施の形態に係るプロセッサシステム１０は、資源を共用してホスト処理とメディア処理とを行う単一のプロセッサブロック１１を備えることにより、面積効率を向上できる。さらに、プロセッサシステム１０は、ホスト処理のスレッドとメディア処理のスレッドとに、異なるタグ情報（ＴＶＩＤ１４０、ＰＶＩＤ１４１及びＭＶＩＤ１４２）を与えるとともに、プロセッサシステム１０が有する資源を当該タグ情報に対応付けて分割する。これによりプロセッサシステム１０は、ホスト処理とメディア処理とにそれぞれ独立した資源を割り当てることができる。よって、ホスト処理とメディア処理との間で資源の競合が生じないので、プロセッサシステム１０は、性能の保障、及び堅牢性を向上できる。
【０２２０】
また、物理アドレス管理部１０５は、ＰＶＩＤ１４１を用いて、各スレッドが指定された物理アドレス範囲以外にアクセスしようとした場合には、割り込みを発生する。これにより、プロセッサシステム１０は、システムの堅牢性を向上できる。
【０２２１】
以上、本実施の形態に係るプロセッサシステム１０について説明したが、本発明は、この実施の形態に限定されるものではない。
【０２２２】
例えば、上記説明では、プロセッサブロック１１がホスト処理とメディア処理との２種類の処理を行う例を述べたが、それ以外の処理を含む３種類以上の処理を行ってもよい。この場合、当該３種類以上の処理にそれぞれ対応する３種類以上のＴＶＩＤ１４０が複数のスレッドに付与される。
【０２２３】
同様に、ＰＶＩＤ１４１及びＭＶＩＤ１４２の種類も上述した数に限定されるものではなく、複数であればよい。
【０２２４】
また、上記説明において、複数のスレッドをグループ分けするためのタグ情報として、ＴＶＩＤ１４０、ＰＶＩＤ１４１及びＭＶＩＤ１４２の３種類を述べたが、プロセッサシステム１０は、一つのタグ情報（例えば、ＴＶＩＤ１４０）のみを用いてもよい。つまり、プロセッサシステム１０は、ＰＶＩＤ１４１及びＭＶＩＤ１４２を用いず、物理アドレスの管理及びバス幅の制御にも、ＴＶＩＤ１４０を用いてもよい。また、プロセッサシステム１０は、２種類のタグ情報を用いてもよいし、４種類以上のタグ情報を用いてもよい。
【０２２５】
また、上記説明では、割り込み制御レジスタ１３４、エントリ指定レジスタ１３５、ウ
ェイ指定レジスタ１３６、ＦＰＵ割り当てレジスタ１３７及びページテーブルは、仮想モニタレベルのＯＳ（モニタプログラム）により設定及び更新されるとしたが、仮想モニタレベルのＯＳの指示により、スーパーバイザーレベルのＯＳが割り込み制御レジスタ１３４、エントリ指定レジスタ１３５、ウェイ指定レジスタ１３６、ＦＰＵ割り当てレジスタ１３７及びページテーブルを設定及び更新してもよい。つまり、仮想モニタレベルのＯＳによりスーパーバイザーレベルＯＳに、当該スーパーバイザーレベルのＯＳに割り当てられた資源が通知され、当該スーパーバイザーレベルのＯＳは、通知された資源を用いるように割り込み制御レジスタ１３４、エントリ指定レジスタ１３５、ウェイ指定レジスタ１３６、ＦＰＵ割り当てレジスタ１３７及びページテーブルを設定及び更新してもよい。
【０２２６】
また、上記実施の形態に係るプロセッサシステム１０に含まれる各処理部は典型的には集積回路であるＬＳＩとして実現される。これらは個別に１チップ化されてもよいし、一部又はすべてを含むように１チップ化されてもよい。
【０２２７】
ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０２２８】
また、集積回路化はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後にプログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、又はＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
【０２２９】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて各処理部の集積化を行ってもよい。バイオ技術の適用等が可能性として考えられる。
【０２３０】
また、本発明の実施の形態に係るプロセッサシステム１０の機能の一部又は全てを、実行部１０１等がプログラムを実行することにより実現してもよい。
【０２３１】
さらに、本発明は上記プログラムであってもよいし、上記プログラムが記録された記録媒体であってもよい。また、上記プログラムは、インターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
【０２３２】
また、上記実施の形態に係るプロセッサシステム１０及びその変形例の機能のうち少なくとも一部を組み合わせてもよい。
【産業上の利用可能性】
【０２３３】
本発明は、プロセッサ装置およびマルチスレッドプロセッサ装置に適用でき、特に、デジタルテレビ、ＤＶＤレコーダ、デジタルカメラおよび携帯電話機等に搭載されるメディア処理用のプロセッサ装置およびマルチスレッドプロセッサ装置に適している。
【符号の説明】
【０２３４】
１０  プロセッサシステム
１１  プロセッサブロック
１２  ストリームＩ／Ｏブロック
１３  ＡＶＩＯブロック
１４  メモリＩＦブロック
１５  外部メモリ
１６  制御バス
１７、１８、１９  データバス
１０１  実行部
１０２  ＶＭＰＣ
１０４  ＴＬＢ
１０５  物理アドレス管理部
１０７  ＦＰＵ
１０８  ＦＰＵ割り当て部
１０９  キャッシュメモリ
１１０  ＢＣＵ
１１１  割り込み制御部
１２１  物理プロセッサ
１２２  演算制御部
１２３  演算部
１２４  コンテキスト
１２６  スケジューラ
１２７  コンテキストメモリ
１２８  コンテキスト制御部
１３０  アドレス変換テーブル
１３１  物理メモリ保護レジスタ
１３２  保護違反レジスタ
１３３  エラーアドレスレジスタ
１３４  割り込み制御レジスタ
１３５  エントリ指定レジスタ
１３６  ウェイ指定レジスタ
１３７  ＦＰＵ割り当てレジスタ
１３８  バスバンド幅指定レジスタ
１５０  エントリ
１５１  ＴＬＢタグ部
１５２  ＴＬＢデータ部
１６８  ウェイ
１７１  システム割り込み
１７２  ＬＰ識別子
１７３  ＬＰ割り込み
１７４  ＨＷイベント
２１０  命令準備部
２１３、２２３、２３３    状態レジスタ部
２１４  レジスタ部
２１５、２２５、２３５    第１判定部
２１６、２２６、２３６    第２判定部
２２０  命令準備部
２３０  命令準備部
２４０  実行パイプライン部
２５０  制御部
２５１  第１転送部
２５１ａ、２５１ｂ、２５１ｃ  退避復帰部
２５２  第２転送部
２５３  クリア部
２６０、２７０  ハードウェア資源
２６１、２７１  レジスタ群
３１０、３２０、３３０    メモリ
３１１  コンテキストデータ
３１２  拡張コンテキストデータ
【図１】
0005433676.tif 000002
【図２】
0005433676.tif 000003
【図３】
0005433676.tif 000004
【図４】
0005433676.tif 000005
【図５】
0005433676.tif 000006
【図６】
0005433676.tif 000007
【図７】
0005433676.tif 000008
【図８】
0005433676.tif 000009
【図９】
0005433676.tif 000010
【図１０】
0005433676.tif 000011
【図１１】
0005433676.tif 000012
【図１２】
0005433676.tif 000013
【図１３】
0005433676.tif 000014
【図１４】
0005433676.tif 000015
【図１５】
0005433676.tif 000016
【図１６】
0005433676.tif 000017
【図１７】
0005433676.tif 000018
【図１８】
0005433676.tif 000019
【図１９】
0005433676.tif 000020
【図２０】
0005433676.tif 000021
【図２１】
0005433676.tif 000022
【図２２Ａ】
0005433676.tif 000023
【図２２Ｂ】
0005433676.tif 000024
【図２３】
0005433676.tif 000025
【図２４】
0005433676.tif 000026
【図２５】
0005433676.tif 000027
【図２６】
0005433676.tif 000028
【図２７】
0005433676.tif 000029
【図２８】
0005433676.tif 000030