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