(57)【要約】【課題】それぞれ独立の仮想アドレス空間を用いて個別のOSが動作する複数のシステムを、１つのシステムに統合する場合に、各OSにおけるデバイスドライバ等を、仮想アドレスを変更せずに利用する。【解決手段】それぞれ独立の仮想アドレス空間で動作可能な複数のＣＰＵと、各ＣＰＵによって、処理対象データのアドレスを仮想アドレスによって指定される処理を実行する専用処理回路モジュールと専用ＭＭＵを備えて構成する。専用ＭＭＵは、実行すべき処理の指定を行ったＣＰＵを識別するＣＰＵＩＤを格納するＴＬＢを備える。専用処理回路モジュールは、指定を行ったＣＰＵのＣＰＵＩＤとそれに伴って指定された処理対象データのアドレスを、専用ＭＭＵに対して出力する。専用ＭＭＵは、入力されたＣＰＵＩＤとＴＬＢに格納されるＣＰＵＩＤとの比較結果に基づいて、入力された処理対象データの仮想アドレスを対応する物理アドレスに変換する。【選択図】図１
2014119787.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ独立の仮想アドレス空間で動作可能な複数のＣＰＵと、前記複数のＣＰＵのそれぞれによって、処理すべきデータの格納元アドレス及び／又は処理されたデータの格納先アドレスを仮想アドレスによって指定される処理を実行可能な専用処理回路モジュールと、前記専用処理回路モジュールに接続されたメモリ管理ユニットを備え、
前記メモリ管理ユニットは、前記指定を行ったＣＰＵを識別するＣＰＵ識別子を格納可能な変換ルックアサイドバッファを含み、
前記専用処理回路モジュールは、前記指定を行ったＣＰＵを識別するＣＰＵ識別子と前記格納元アドレス及び／又は前記格納先アドレスを、前記メモリ管理ユニットに対して出力可能に構成され、
前記メモリ管理ユニットは、入力されたＣＰＵ識別子と前記変換ルックアサイドバッファに格納されるＣＰＵ識別子との比較結果に基づいて、入力された前記格納元アドレス及び／又は前記格納先アドレスを対応する物理アドレスに変換可能に構成される、プロセッサ。
【請求項２】
請求項１において、前記変換ルックアサイドバッファは、さらに比較モードを格納可能であり、前記専用処理回路モジュールは、さらに比較モードを前記メモリ管理ユニットに対して出力可能に構成され、
前記メモリ管理ユニットは、前記専用処理回路モジュールから入力された比較モードと前記変換ルックアサイドバッファに格納される比較モードとの比較結果に基づく比較方法により、入力されたＣＰＵ識別子と前記変換ルックアサイドバッファに格納されるＣＰＵ識別子とを比較可能に構成される、プロセッサ。
【請求項３】
請求項２において、前記変換ルックアサイドバッファは、さらにアドレス空間識別子を格納可能であり、前記専用処理回路モジュールは、さらにアドレス空間識別子を前記メモリ管理ユニットに対して出力可能に構成され、
前記メモリ管理ユニットは、ＣＰＵ識別子の前記比較結果と、入力されたアドレス空間識別子と前記変換ルックアサイドバッファに格納されるアドレス空間識別子との比較結果とに基づいて、入力された前記格納元アドレス及び／又は前記格納先アドレスを対応する物理アドレスに変換可能に構成される、プロセッサ。
【請求項４】
請求項３において、前記変換ルックアサイドバッファは、さらに仮想化識別子を格納可能であり、前記専用処理回路モジュールは、さらに仮想化識別子を前記メモリ管理ユニットに対して出力可能に構成され、
前記メモリ管理ユニットは、ＣＰＵ識別子の前記比較結果とアドレス空間識別子の前記比較結果と、入力された仮想化識別子と前記変換ルックアサイドバッファに格納される仮想化識別子との比較結果とに基づいて、入力された前記格納元アドレス及び／又は前記格納先アドレスを対応する物理アドレスに変換可能に構成される、プロセッサ。
【請求項５】
請求項１において、前記専用処理回路モジュールは、並列動作可能な複数のチャネルを備え、前記ＣＰＵは、前記複数のチャネルのそれぞれに対して、個別の前記処理を指定可能に構成される、プロセッサ。
【請求項６】
請求項５において、前記専用処理回路モジュールは、制御レジスタとバス調停部を備え、
前記制御レジスタは、前記複数のチャネルのそれぞれに対応し、対応するチャネルに対して前記ＣＰＵ識別子と前記格納元アドレスと前記格納先アドレスとを格納可能であり、
前記複数のチャネルのそれぞれは、前記制御レジスタによって指定される、前記ＣＰＵ識別子と前記格納元アドレスと前記格納先アドレスとを前記バス調停部に出力可能であり、
前記バス調停部は、前記複数のチャネルから出力された、前記ＣＰＵ識別子と前記格納元アドレスと前記格納先アドレスとを調停して、前記メモリ管理ユニットに出力可能に構成される、プロセッサ。
【請求項７】
請求項１において、前記専用処理回路モジュールは、前記ＣＰＵによって個別に処理を指定され並列動作可能な複数のチャネルと制御レジスタとバス調停部とを備え、前記制御レジスタは、前記複数のチャネルのそれぞれに対応し、対応するチャネルに対して前記ＣＰＵ識別子と前記格納元アドレスと前記格納先アドレスと比較モードとアドレス空間識別子とを格納可能であり、前記複数のチャネルのそれぞれは、前記制御レジスタによって指定される、前記ＣＰＵ識別子と前記格納元アドレスと前記格納先アドレスと前記比較モードと前記アドレス空間識別子とを前記バス調停部に出力可能であり、前記バス調停部は、前記複数のチャネルから出力された、前記ＣＰＵ識別子と前記格納元アドレスと前記格納先アドレスと前記比較モードと前記アドレス空間識別子とを調停して、前記メモリ管理ユニットに出力可能に構成され、
前記変換ルックアサイドバッファは、仮想ページ番号と対応する物理ページ番号とを格納可能であり、比較モードとアドレス空間識別子とをさらに格納可能であり、
前記メモリ管理ユニットは、前記専用処理回路モジュールから入力された比較モードと前記変換ルックアサイドバッファに格納される比較モードとの比較結果に基づく比較方法により、入力されたＣＰＵ識別子と前記変換ルックアサイドバッファに格納される前記ＣＰＵ識別子とを比較し、さらに、入力されたアドレス空間識別子と前記変換ルックアサイドバッファに格納されるアドレス空間識別子とを比較し、ＣＰＵ識別子の前記比較結果とアドレス空間識別子の前記比較結果に基づいて、前記変換ルックアサイドバッファに格納される前記仮想ページ番号と前記物理ページ番号を用いて、入力された前記格納元アドレス及び／又は前記格納先アドレスを対応する物理アドレスに変換可能に構成される、プロセッサ。
【請求項８】
請求項１において、前記制御レジスタは、前記複数のチャネルのそれぞれに対応し、対応するチャネルに対してさらに仮想化識別子を格納可能であり、前記複数のチャネルのそれぞれは、前記制御レジスタによって指定される、前記仮想化識別子をさらに前記バス調停部に出力可能であり、前記バス調停部は、さらに、前記複数のチャネルから出力された前記仮想化識別子を調停して、前記メモリ管理ユニットに出力可能に構成され、
前記変換ルックアサイドバッファは、仮想化識別子をさらに格納可能であり、
前記メモリ管理ユニットは、さらに、前記専用処理回路モジュールから入力された仮想化識別子と前記変換ルックアサイドバッファに格納される仮想化識別子とを比較し、ＣＰＵ識別子の前記比較結果とアドレス空間識別子の前記比較結果と仮想化識別子の前記比較結果に基づいて、前記変換ルックアサイドバッファに格納される前記仮想ページ番号と前記物理ページ番号を用いて、入力された前記格納元アドレス及び／又は前記格納先アドレスを対応する物理アドレスに変換可能に構成される、プロセッサ。
【請求項９】
第１仮想アドレス空間で記述され前記第１仮想アドレス空間内の命令及び／又はデータに対するアクセスを含むプログラムを実行する第１ＣＰＵと、前記第１ＣＰＵに接続され、前記第１ＣＰＵが出力する前記第１仮想アドレス空間内の仮想アドレスを物理アドレスとのアドレス変換を実行可能な、第１メモリ管理ユニットと、
第２仮想アドレス空間で記述され前記第２仮想アドレス空間内の命令及び／又はデータに対するアクセスを含むプログラムを実行する第２ＣＰＵと、前記第２ＣＰＵに接続され、前記第２ＣＰＵが出力する前記第２仮想アドレス空間内の仮想アドレスを物理アドレスとのアドレス変換を実行可能な、第２メモリ管理ユニットと、
専用処理回路モジュールと、前記専用処理回路モジュールに接続され仮想アドレスと物理アドレスとのアドレス変換を実行可能な、専用メモリ管理ユニットとを備え、
前記第１ＣＰＵは、前記専用処理回路モジュールに対して、処理すべきデータの格納元アドレス及び／又は処理されたデータの格納先アドレスを、前記第１仮想アドレス空間内の仮想アドレスによって指定した第１処理を指定可能であり、
前記第２ＣＰＵは、前記専用処理回路モジュールに対して、処理すべきデータの格納元アドレス及び／又は処理されたデータの格納先アドレスを、前記第２仮想アドレス空間内の仮想アドレスによって指定した第２処理を指定可能であり、
前記専用処理回路モジュールは、前記第１処理または前記第２処理を指定したＣＰＵを識別するＣＰＵ識別子を記憶し、前記第１処理をまたは前記第２処理を実行する際に、前記ＣＰＵ識別子と前記格納元アドレス及び／又は前記格納先アドレスを前記専用メモリ管理ユニットに出力可能に構成され、
前記専用メモリ管理ユニットは、前記ＣＰＵ識別子と、仮想ページ番号と、前記仮想ページ番号に対応する物理ページ番号とを対応付けた複数のエントリを格納可能な変換ルックアサイドバッファを含み、
前記専用メモリ管理ユニットは、前記変換ルックアサイドバッファに格納される複数のエントリの中から、前記専用処理回路モジュールから出力された前記ＣＰＵ識別子と一致するＣＰＵ識別子を有し、前記格納元アドレス及び／又は前記格納先アドレスを含む仮想ページ番号を有するエントリを検索し、前記格納元アドレス及び／又は前記格納先アドレスを物理アドレスに変換可能に構成される、プロセッサ。
【請求項１０】
請求項９において、第２仮想アドレス空間で記述され前記第２仮想アドレス空間内の命令及び／又はデータに対するアクセスを含むプログラムを実行する第３ＣＰＵと、前記第３ＣＰＵに接続され、前記第３ＣＰＵが出力する前記第２仮想アドレス空間内の仮想アドレスを物理アドレスとのアドレス変換を実行可能な、第３メモリ管理ユニットをさらに備え、
前記第３ＣＰＵは、前記専用処理回路モジュールに対して、処理すべきデータの格納元アドレス及び／又は処理されたデータの格納先アドレスを、前記第２仮想アドレス空間内の仮想アドレスによって指定した第３処理を指定可能であり、
前記専用処理回路モジュールは、前記第１処理をまたは前記第２処理または前記第３処理を指定したＣＰＵを識別するＣＰＵ識別子を記憶し、前記第１処理をまたは前記第２処理または前記第３処理を実行する際に、前記ＣＰＵ識別子と前記格納元アドレス及び／又は前記格納先アドレスを前記専用メモリ管理ユニットに出力可能に構成され、
前記専用メモリ管理ユニットは、前記変換ルックアサイドバッファに格納される前記複数のエントリのそれぞれに、さらに比較モードを格納可能であり、
前記専用メモリ管理ユニットは、前記変換ルックアサイドバッファに格納される複数のエントリの中から、前記比較モードに基づいて、前記専用処理回路モジュールから出力された前記ＣＰＵ識別子が前記第１ＣＰＵのときは一致するＣＰＵ識別子を有するエントリを検索し、前記専用処理回路モジュールから出力された前記ＣＰＵ識別子が前記第２ＣＰＵまたは前記第３ＣＰＵのときはいずれかに一致するＣＰＵ識別子を有するエントリを検索して、前記格納元アドレス及び／又は前記格納先アドレスを物理アドレスに変換する、プロセッサ。
【請求項１１】
請求項１０において、前記第１ＣＰＵと前記第２ＣＰＵと前記第３ＣＰＵのそれぞれは、処理中のソフトウェアに基づいて、前記専用処理回路モジュールに対して、さらにアドレス空間識別子を指定可能であり、
前記専用処理回路モジュールは、前記第１処理をまたは前記第２処理または前記第３処理の指定に伴って指定された前記アドレス空間識別子を記憶し、前記第１処理をまたは前記第２処理または前記第３処理を実行する際に、さらに前記アドレス空間識別子を前記専用メモリ管理ユニットに出力可能に構成され、
前記専用メモリ管理ユニットは、前記変換ルックアサイドバッファに格納される前記複数のエントリのそれぞれに、さらにアドレス空間識別子を格納可能であり、
前記専用メモリ管理ユニットは、前記変換ルックアサイドバッファに格納される複数のエントリの中から、さらに前記専用メモリ管理ユニットから出力される前記アドレス空間識別子と一致するエントリを用いて、前記格納元アドレス及び／又は前記格納先アドレスを物理アドレスに変換する、プロセッサ。
【請求項１２】
請求項１１において、前記第１ＣＰＵと前記第２ＣＰＵと前記第３ＣＰＵのそれぞれは、処理中のソフトウェアに基づいて、前記専用処理回路モジュールに対して、さらに仮想化識別子を指定可能であり、
前記専用処理回路モジュールは、前記第１処理をまたは前記第２処理または前記第３処理の指定に伴って指定された前記仮想化識別子を記憶し、前記第１処理をまたは前記第２処理または前記第３処理を実行する際に、さらに前記仮想化識別子を前記専用メモリ管理ユニットに出力可能に構成され、
前記専用メモリ管理ユニットは、前記変換ルックアサイドバッファに格納される前記複数のエントリのそれぞれに、さらに仮想化識別子を格納可能であり、
前記専用メモリ管理ユニットは、前記変換ルックアサイドバッファに格納される複数のエントリの中から、さらに前記専用メモリ管理ユニットから出力される前記仮想化識別子と一致するエントリを用いて、前記格納元アドレス及び／又は前記格納先アドレスを物理アドレスに変換する、プロセッサ。
【請求項１３】
請求項９において、前記第１ＣＰＵ、前記第２ＣＰＵまたは前記第３ＣＰＵを含む複数のＣＰＵを備え、前記専用処理回路モジュールは、並列動作可能な複数のチャネルを備え、前記複数のＣＰＵは、前記第１処理、前記第２処理または前記第３処理を含む複数の処理のうちの１の処理を、前記複数のチャネルのうちの１つのチャネルに対して、指定可能に構成される、プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、専用処理回路モジュールを搭載したマルチプロセッサシステムに関し、特に複数の独立した仮想アドレス空間を利用するシステムに好適に利用できるものである。
【背景技術】
【０００２】
携帯電話機や携帯型ナビゲーション装置、業務用携帯端末といった小型の情報機器の高性能化、多機能化に伴い、システムの中核を担うCPU（Central Processing Unit）を内蔵した大規模集積回路LSI（Large Scale Integrated circuit）への各種機能の統合が進んでいる。例えば単純な画像や音声の圧縮や伸張といった動作ばかりでなく、高次の機能を実現する動作までもが、単一の大規模集積回路に複数個搭載されるようになってきている。高次の機能を実現する動作とは、例えば、動画や音声の録画・録音や、リアルタイムで配信される映像や音声の視聴といった機能であり、従来であればそれ自体がCPUとメモリ、入出力を持ち、ソフトウェアとしてはオペレーティングシステム（OS: Operating System）を用いて構成されていた機能である。
【０００３】
特許文献１には、DMA（Direct Memory Access）転送用アドレス変換器を備えたプロセッサシステムである。DMAコントローラのアドレス出力はDMA転送用アドレス変換器を経由してアドレスバスに接続されており、DMA転送用アドレス変換器の内部に仮想アドレスから物理アドレスへの変換情報を設定しておくことにより、DMAコントローラが仮想アドレスを用いて転送できるようにしている。これにより、物理アドレス上では不連続となる複数の断片化されたメモリ領域を仮想アドレス上では連続領域として扱うことが可能となり、メモリ利用の効率化や、DMA転送をメモリ領域の断片ごとに起動する場合に対する処理負荷の低減による性能向上が可能となっている。
【０００４】
特許文献２には、複数のプロセッサを含むシステムにおいて、システム全体で共通に使用するアドレス変換テーブルを使ってアドレス変換を行った上で、DMA転送を起動することにより、プロセッサのアドレス空間に依存しないDMA転送を実現するシステムが開示されている。
【０００５】
特許文献３には、OSによる処理内容を大きく変更することなく仮想アドレス空間を利用した安全なアクセス制御を可能とするデータ処理装置が開示されている。仮想アドレスを物理アドレスに変換するために処理を行うメモリ管理部が、CPUによって設定された条件に従って変換処理を開始したときには、そのときの仮想アドレスと物理アドレスとの対応関係を変更する処理を抑止する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平５−１２０２０５号公報
【特許文献２】特開２００７−８７１７７号公報
【特許文献３】特開２０１２−８８８９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１、２及び３について本発明者が検討した結果、以下のような新たな課題があることがわかった。
【０００８】
上述のように単一の大規模集積回路に統合された各機能部分においては、製品の開発期間を短縮するため、独立したシステムとして構成されていた頃に開発されたソフトウェアの流用が可能であることが期待される。しかし、統合対象となる各機能部分のソフトウェアが、しばしば異なるオペレーティングシステム（OS）を採用しているか、あるいは同一のOSであっても異なる構成をとっている場合がある。そのため、それぞれの仮想アドレスと物理アドレスの対応関係の間に不一致が生じ、処理性能の低下やソフトウェア開発工数の増加、保護機能が部分的に利用できなくなることによるソフトウェア的な安全性の低下が発生する問題を惹き起こすことがある。例えば、データ転送に使用するＤＭＡＣ（Direct Memory Access Controller）やグラフィックス、画像処理回路などの専用処理回路モジュールを、各機能部分が使用していたOSにおけるデバイスドライバやミドルウェアは、そのまま仮想アドレスを変更せずに利用できるとは限らない。
【０００９】
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
一実施の形態によれば、下記の通りである。
【００１１】
すなわち、一実施の形態に係るプロセッサは、それぞれ独立の仮想アドレス空間で動作可能な複数のＣＰＵと、前記複数のＣＰＵのそれぞれによって、処理すべきデータの格納元アドレス及び／又は処理されたデータの格納先アドレスを仮想アドレスによって指定される処理を実行可能な専用処理回路モジュールと、前記専用処理回路モジュールに接続された専用メモリ管理ユニットを備える。専用メモリ管理ユニットは、専用処理回路モジュールに実行すべき処理の指定を行ったＣＰＵを識別するＣＰＵ識別子を格納可能な変換ルックアサイドバッファを備える。
【００１２】
専用処理回路モジュールは、前記指定を行ったＣＰＵを識別するＣＰＵ識別子とそれに伴って指定された格納元アドレス及び／又は格納先アドレスを、専用メモリ管理ユニットに対して出力可能に構成される。
【００１３】
専用メモリ管理ユニットは、入力されたＣＰＵ識別子と前記変換ルックアサイドバッファに格納されるＣＰＵ識別子との比較結果に基づいて、入力された格納元アドレス及び／又は格納先アドレスを対応する物理アドレスに変換可能に構成される。
【発明の効果】
【００１４】
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
【００１５】
すなわち、それぞれ独立の仮想アドレス空間を用いて個別のOSが動作する複数の機能部分を有する１または複数のシステムを、複数のＣＰＵを備えた１つのマルチプロセッサシステムに統合する場合であっても、各機能部分が使用していたOSにおけるデバイスドライバやミドルウェアを、そのまま仮想アドレスを変更せずに利用することができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、実施形態１のプロセッサの構成を表すブロック図である。
【図２】図２は、実施形態２のプロセッサの構成を表すブロック図である。
【図３】図３は、専用処理回路モジュールの構成例を表すブロック図である。
【図４】図４は、ＣＰＵ側のＭＭＵが備えるＴＬＢの構成例を表す説明図である。
【図５】図５は、専用処理回路モジュール側のＭＭＵが備えるＴＬＢの構成例を表す説明図である。
【図６】図６は、専用処理回路モジュールが備える制御レジスタの構成例を表す説明図である。
【図７】図７は、専用処理回路モジュール側のＭＭＵが備えるＴＬＢに仮想化識別子（ＶＩＤを）を追加した構成例を表す説明図である。
【図８】図８は、専用処理回路モジュールが備える制御レジスタ仮想化識別子（ＶＩＤを）を追加した構成例を表す説明図である。
【図９】図９は、実施形態２のプロセッサを用いた応用システムの一構成例を表すブロック図である。
【発明を実施するための形態】
【００１７】
１．実施の形態の概要
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１８】
〔１〕＜ＣＰＵ識別子（ＣＰＵＩＤ）を格納する専用処理モジュール用ＭＭＵ＞
複数のＣＰＵ（２＿０、２＿１、２＿２）と、専用処理回路モジュール（５）と、前記専用処理回路モジュールに接続されたメモリ管理ユニット（６）を備える、プロセッサ（１）であって以下のように構成される。
【００１９】
前記複数のＣＰＵは、それぞれ独立の仮想アドレス空間で動作可能である。前記専用処理回路モジュールは、前記複数のＣＰＵのそれぞれによって、処理すべきデータの格納元アドレス及び／又は処理されたデータの格納先アドレスを仮想アドレスによって指定される処理を実行可能である。
【００２０】
前記メモリ管理ユニットは、前記指定を行ったＣＰＵを識別するＣＰＵ識別子を格納可能な変換ルックアサイドバッファ（７）を含む。
【００２１】
前記専用処理回路モジュールは、前記指定を行ったＣＰＵを識別するＣＰＵ識別子（ＣＰＵＩＤ）と前記格納元アドレス及び／又は前記格納先アドレスを、前記メモリ管理ユニットに対して出力可能に構成される。
【００２２】
前記メモリ管理ユニットは、入力されたＣＰＵ識別子と前記変換ルックアサイドバッファに格納されるＣＰＵ識別子との比較結果に基づいて、入力された前記格納元アドレス及び／又は前記格納先アドレスを対応する物理アドレスに変換可能に構成される。
【００２３】
これにより、それぞれ独立の仮想アドレス空間を用いて個別のOSが動作する複数の機能部分を有する１または複数のシステムを、複数のＣＰＵを備えた１つのマルチプロセッサシステムに統合する場合であっても、各機能部分が使用していたOSにおけるデバイスドライバやミドルウェアを、そのまま仮想アドレスを変更せずに利用することができる。
【００２４】
〔２〕＜ＣＰＵＩＤ＋比較モード（ＣＭ）＞
項１において、前記変換ルックアサイドバッファは、さらに比較モード（ＣＭ）を格納可能であり、前記専用処理回路モジュールは、さらに比較モードを前記メモリ管理ユニットに対して出力可能に構成される。
【００２５】
前記メモリ管理ユニットは、前記専用処理回路モジュールはから入力された比較モードと前記変換ルックアサイドバッファに格納される比較モードとの比較結果に基づく比較方法により、入力されたＣＰＵ識別子と前記変換ルックアサイドバッファに格納されるＣＰＵ識別子とを比較可能に構成される。
【００２６】
これにより、複数のＣＰＵが同一の仮想アドレス空間を使用する場合にも、メモリ管理ユニットは効率よく、仮想アドレスから物理アドレスへの変換を実行することができる。
【００２７】
〔３〕＜ＣＰＵＩＤ＋ＣＭ＋アドレス空間識別子（ＡＳＩＤ）＞
項２において、前記変換ルックアサイドバッファは、さらにアドレス空間識別子（ＡＳＩＤ）を格納可能であり、前記専用処理回路モジュールは、さらにアドレス空間識別子を前記メモリ管理ユニットに対して出力可能に構成される。
【００２８】
前記メモリ管理ユニットは、ＣＰＵ識別子の前記比較結果と、入力されたアドレス空間識別子と前記変換ルックアサイドバッファに格納されるアドレス空間識別子との比較結果とに基づいて、入力された前記格納元アドレス及び／又は前記格納先アドレスを対応する物理アドレスに変換可能に構成される。
【００２９】
これにより、複数のＣＰＵのそれぞれがさらに多重化された仮想アドレス空間を使用する場合にも、メモリ管理ユニットは効率よく、仮想アドレスから物理アドレスへの変換を実行することができる。
【００３０】
〔４〕＜ＣＰＵＩＤ＋ＣＭ＋ＡＳＩＤ＋仮想化識別子（ＶＩＤ）＞
項３において、前記変換ルックアサイドバッファは、さらに仮想化識別子（ＶＩＤ）を格納可能であり、前記専用処理回路モジュールは、さらに仮想化識別子を前記メモリ管理ユニットに対して出力可能に構成される。
【００３１】
前記メモリ管理ユニットは、ＣＰＵ識別子の前記比較結果とアドレス空間識別子の前記比較結果と、入力された仮想化識別子と前記変換ルックアサイドバッファに格納される仮想化識別子との比較結果とに基づいて、入力された前記格納元アドレス及び／又は前記格納先アドレスを対応する物理アドレスに変換可能に構成される。
【００３２】
これにより、単一のＣＰＵ、あるいは一部又は全部のＣＰＵを組み合わせて構成されるドメインの上で、仮想化によって複数のOSを動作させるシステムにおいても、メモリ管理ユニットは効率よく、仮想アドレスから物理アドレスへの変換を実行することができる。
【００３３】
〔５〕＜複数のチャネル＞
項１から項４までのいずれか１項において、前記専用処理回路モジュールは、並列動作可能な複数のチャネル（２０＿０、２０＿１、２０＿２）を備え、前記ＣＰＵは、前記複数のチャネルのそれぞれに対して、個別の前記処理を指定可能に構成される。
【００３４】
これにより、専用処理回路モジュールが複数のチャネルを備える場合にも、メモリ管理ユニットは効率よく、仮想アドレスから物理アドレスへの変換を実行することができる。
【００３５】
〔６〕＜専用処理回路モジュールの制御レジスタとバス調停・ＩＤ付加＞
項５において、前記専用処理回路モジュールは、制御レジスタ（２１）とバス調停部（２７＿０、２７＿１、２７＿２）を備える。
【００３６】
前記制御レジスタは、前記複数のチャネルのそれぞれに対応し、対応するチャネルに対して前記ＣＰＵ識別子と前記格納元アドレスと前記格納先アドレスとを格納可能である。
【００３７】
前記複数のチャネルのそれぞれは、前記制御レジスタによって指定される、前記ＣＰＵ識別子と前記格納元アドレスと前記格納先アドレスとを前記バス調停部に出力可能である。
【００３８】
前記バス調停部は、前記複数のチャネルから出力された、前記ＣＰＵ識別子と前記格納元アドレスと前記格納先アドレスとを調停して、前記メモリ管理ユニットに出力可能に構成される。
【００３９】
これにより、専用処理回路モジュールが複数のチャネルを備え、それらが並列動作する場合にも、専用処理回路モジュールは正しく仮想アドレスなどの情報をメモリ管理ユニットに出力することができ、メモリ管理ユニットは、仮想アドレスから物理アドレスへの変換を実行することができる。
【００４０】
〔７〕＜ＣＰＵＩＤ，ＣＭ，ＡＳＩＤ，ＶＰＮ，ＰＰＮ＞
項１において、前記専用処理回路モジュールは、前記ＣＰＵによって個別に処理を指定され並列動作可能な複数のチャネル（２０＿０、２０＿１、２０＿２）と制御レジスタ（２１）とバス調停部（２７＿０、２７＿１、２７＿２）とを備える。前記制御レジスタは、前記複数のチャネルのそれぞれに対応し、対応するチャネルに対して前記ＣＰＵ識別子（ＣＰＵＩＤ）と前記格納元アドレスと前記格納先アドレスと比較モード（ＣＭ）とアドレス空間識別子（ＡＳＩＤ）とを格納可能である。前記複数のチャネルのそれぞれは、前記制御レジスタによって指定される、前記ＣＰＵ識別子と前記格納元アドレスと前記格納先アドレスと前記比較モードと前記アドレス空間識別子とを前記バス調停部に出力可能である。前記バス調停部は、前記複数のチャネルから出力された、前記ＣＰＵ識別子と前記格納元アドレスと前記格納先アドレスと前記比較モードと前記アドレス空間識別子とを調停して、前記メモリ管理ユニットに出力可能に構成される。
【００４１】
前記変換ルックアサイドバッファは、比較モードとアドレス空間識別子とをさらに格納可能である。
【００４２】
前記メモリ管理ユニットは、前記専用処理回路モジュールから入力された比較モードと前記変換ルックアサイドバッファに格納される比較モードとの比較結果に基づく比較方法により、入力されたＣＰＵ識別子と前記変換ルックアサイドバッファに格納される前記ＣＰＵ識別子とを比較する。さらに、入力されたアドレス空間識別子と前記変換ルックアサイドバッファに格納されるアドレス空間識別子とを比較する。ＣＰＵ識別子の前記比較結果とアドレス空間識別子の前記比較結果に基づいて、前記変換ルックアサイドバッファに格納される前記仮想ページ番号と前記物理ページ番号を用いて、入力された前記格納元アドレス及び／又は前記格納先アドレスを対応する物理アドレスに変換可能に構成される。
【００４３】
これにより、それぞれ独立の仮想アドレス空間を用いて個別のOSが動作する複数の機能部分を有する１または複数のシステムを、複数のＣＰＵを備えた１つのマルチプロセッサシステムに統合する場合であっても、各機能部分が使用していたOSにおけるデバイスドライバやミドルウェアを、そのまま仮想アドレスを変更せずに利用することができる。複数のＣＰＵが同一の仮想アドレス空間を使用し、複数のＣＰＵのそれぞれがさらに多重化された仮想アドレス空間を使用する場合にも、メモリ管理ユニットは効率よく、仮想アドレスから物理アドレスへの変換を実行することができる。また、専用処理回路モジュールが複数のチャネルを備え、それらが並列動作する場合にも、専用処理回路モジュールは正しく仮想アドレスなどの情報をメモリ管理ユニットに出力することができ、メモリ管理ユニットは、仮想アドレスから物理アドレスへの変換を実行することができる。
【００４４】
〔８〕＜ＶＩＤ，ＣＰＵＩＤ，ＣＭ，ＡＳＩＤ，ＶＰＮ，ＰＰＮ＞
項１において、前記制御レジスタは、前記複数のチャネルのそれぞれに対応し、対応するチャネルに対してさらに仮想化識別子（ＶＩＤ）を格納可能である。前記複数のチャネルのそれぞれは、前記制御レジスタによって指定される、前記仮想化識別子をさらに前記バス調停部に出力可能である。前記バス調停部は、さらに、前記複数のチャネルから出力された前記仮想化識別子を調停して、前記メモリ管理ユニットに出力可能に構成される。
【００４５】
前記変換ルックアサイドバッファは、仮想化識別子（ＶＩＤ）をさらに格納可能である。
【００４６】
前記メモリ管理ユニットは、さらに、前記専用処理回路モジュールから入力された仮想化識別子と前記変換ルックアサイドバッファに格納される仮想化識別子とを比較する。ＣＰＵ識別子の前記比較結果とアドレス空間識別子の前記比較結果と仮想化識別子の前記比較結果に基づいて、前記変換ルックアサイドバッファに格納される前記仮想ページ番号と前記物理ページ番号を用いて、入力された前記格納元アドレス及び／又は前記格納先アドレスを対応する物理アドレスに変換可能に構成される。
【００４７】
これにより、それぞれ独立の仮想アドレス空間を用いて個別のOSが動作する複数の機能部分を有する１または複数のシステムを、複数のＣＰＵを備えた１つのマルチプロセッサシステムに統合する場合であっても、各機能部分が使用していたOSにおけるデバイスドライバやミドルウェアを、そのまま仮想アドレスを変更せずに利用することができる。複数のＣＰＵが同一の仮想アドレス空間を使用し、複数のＣＰＵのそれぞれがさらに多重化された仮想アドレス空間を使用する場合にも、メモリ管理ユニットは効率よく、仮想アドレスから物理アドレスへの変換を実行することができる。また、専用処理回路モジュールが複数のチャネルを備え、それらが並列動作する場合にも、専用処理回路モジュールは正しく仮想アドレスなどの情報をメモリ管理ユニットに出力することができ、メモリ管理ユニットは、仮想アドレスから物理アドレスへの変換を実行することができる。さらにまた、単一のＣＰＵ、あるいは一部又は全部のＣＰＵを組み合わせて構成されるドメインの上で、仮想化によって複数のOSを動作させるシステムにおいても、専用処理回路モジュールは正しく仮想アドレスなどの情報をメモリ管理ユニットに出力することができ、メモリ管理ユニットは、仮想アドレスから物理アドレスへの変換を実行することができる。
【００４８】
〔９〕＜仮想アドレス空間で動作するアクセラレータ＋ＭＭＵ＞
代表的な実施の形態に係るプロセッサ（１）は、以下のように構成される。
【００４９】
第１仮想アドレス空間で記述され前記第１仮想アドレス空間内の命令及び／又はデータに対するアクセスを含むプログラムを実行する第１ＣＰＵ（３＿０）と、前記第１ＣＰＵに接続され、前記第１ＣＰＵが出力する前記第１仮想アドレス空間内の仮想アドレスを物理アドレスとのアドレス変換を実行可能な、第１メモリ管理ユニット（４＿０）とを備える。
【００５０】
第２仮想アドレス空間で記述され前記第２仮想アドレス空間内の命令及び／又はデータに対するアクセスを含むプログラムを実行する第２ＣＰＵ（３＿１）と、前記第２ＣＰＵに接続され、前記第２ＣＰＵが出力する前記第２仮想アドレス空間内の仮想アドレスを物理アドレスとのアドレス変換を実行可能な、第２メモリ管理ユニット（４＿１）とを備える。
【００５１】
専用処理回路モジュール（５）と、前記専用処理回路モジュールに接続され仮想アドレスと物理アドレスとのアドレス変換を実行可能な、専用メモリ管理ユニット（６）とを備える。
【００５２】
前記第１ＣＰＵは、前記専用処理回路モジュールに対して、処理すべきデータの格納元アドレス及び／又は処理されたデータの格納先アドレスを、前記第１仮想アドレス空間内の仮想アドレスによって指定した第１処理を指定可能である。
【００５３】
前記第２ＣＰＵは、前記専用処理回路モジュールに対して、処理すべきデータの格納元アドレス及び／又は処理されたデータの格納先アドレスを、前記第２仮想アドレス空間内の仮想アドレスによって指定した第２処理を指定可能である。
【００５４】
前記専用処理回路モジュールは、前記第１処理または前記第２処理を指定したＣＰＵを識別するＣＰＵ識別子（ＣＰＵＩＤ）を記憶し、前記第１処理をまたは前記第２処理を実行する際に、前記ＣＰＵ識別子と前記格納元アドレス及び／又は前記格納先アドレスを前記専用メモリ管理ユニットに出力可能に構成される。
【００５５】
前記専用メモリ管理ユニットは、前記ＣＰＵ識別子と、仮想ページ番号と、前記仮想ページ番号に対応する物理ページ番号とを対応付けた複数のエントリを格納可能な変換ルックアサイドバッファ（７）を含む。前記専用メモリ管理ユニットは、前記変換ルックアサイドバッファに格納される複数のエントリの中から、前記専用処理回路モジュールから出力された前記ＣＰＵ識別子と一致するＣＰＵ識別子を有し、前記格納元アドレス及び／又は前記格納先アドレスを含む仮想ページ番号を有するエントリを検索する。前記専用メモリ管理ユニットは、その検索結果に基づいて、前記格納元アドレス及び／又は前記格納先アドレスを物理アドレスに変換可能に構成される。
【００５６】
これにより、それぞれ独立の仮想アドレス空間を用いて個別のOSが動作する複数の機能部分を有する１または複数のシステムを、複数のＣＰＵを備えた１つのマルチプロセッサシステムに統合する場合であっても、各機能部分が使用していたOSにおけるデバイスドライバやミドルウェアを、そのまま仮想アドレスを変更せずに利用することができる。
【００５７】
〔１０〕＜ＣＰＵＩＤ＋比較モード（ＣＭ）＞
項９において、第２仮想アドレス空間で記述され前記第２仮想アドレス空間内の命令及び／又はデータに対するアクセスを含むプログラムを実行する第３ＣＰＵ（３＿２）と、前記第３ＣＰＵに接続され、前記第３ＣＰＵが出力する前記第２仮想アドレス空間内の仮想アドレスを物理アドレスとのアドレス変換を実行可能な、第３メモリ管理ユニット（４＿２）をさらに備える。
【００５８】
前記第３ＣＰＵは、前記専用処理回路モジュールに対して、処理すべきデータの格納元アドレス及び／又は処理されたデータの格納先アドレスを、前記第２仮想アドレス空間内の仮想アドレスによって指定した第３処理を指定可能である。
【００５９】
前記専用処理回路モジュールは、前記第１処理をまたは前記第２処理または前記第３処理を指定したＣＰＵを識別するＣＰＵ識別子（ＣＰＵＩＤ）を記憶し、前記第１処理をまたは前記第２処理または前記第３処理を実行する際に、前記ＣＰＵ識別子と前記格納元アドレス及び／又は前記格納先アドレスを前記専用メモリ管理ユニットに出力可能に構成される。
【００６０】
前記専用メモリ管理ユニットは、前記変換ルックアサイドバッファに格納される前記複数のエントリのそれぞれに、さらに比較モード（ＣＭ）を格納可能である。
【００６１】
前記専用メモリ管理ユニットは、前記変換ルックアサイドバッファに格納される複数のエントリの中から、前記比較モードに基づいて、前記専用処理回路モジュールから出力された前記ＣＰＵ識別子が前記第１ＣＰＵのときは一致するＣＰＵ識別子を有するエントリを検索する。前記専用処理回路モジュールから出力された前記ＣＰＵ識別子が前記第２ＣＰＵまたは前記第３ＣＰＵのときはいずれかに一致するＣＰＵ識別子を有するエントリを検索する。前記専用メモリ管理ユニットは、前記検索結果に基づいて、前記格納元アドレス及び／又は前記格納先アドレスを物理アドレスに変換する。
【００６２】
これにより、複数のＣＰＵが同一の仮想アドレス空間を使用する場合にも、専用メモリ管理ユニットは効率よく、仮想アドレスから物理アドレスへの変換を実行することができる。
【００６３】
〔１１〕＜ＣＰＵＩＤ＋ＣＭ＋アドレス空間識別子（ＡＳＩＤ）＞
項１０において、前記第１ＣＰＵと前記第２ＣＰＵと前記第３ＣＰＵのそれぞれは、処理中のソフトウェアに基づいて、前記専用処理回路モジュールに対して、さらにアドレス空間識別子（ＡＳＩＤ）を指定可能である。
【００６４】
前記専用処理回路モジュールは、前記第１処理をまたは前記第２処理または前記第３処理の指定に伴って指定された前記アドレス空間識別子を記憶し、前記第１処理をまたは前記第２処理または前記第３処理を実行する際に、さらに前記アドレス空間識別子を前記専用メモリ管理ユニットに出力可能に構成される。
【００６５】
前記専用メモリ管理ユニットは、前記変換ルックアサイドバッファに格納される前記複数のエントリのそれぞれに、さらにアドレス空間識別子を格納可能である。
【００６６】
前記専用メモリ管理ユニットは、前記変換ルックアサイドバッファに格納される複数のエントリの中から、さらに前記専用メモリ管理ユニットから出力される前記アドレス空間識別子と一致するエントリを用いて、前記格納元アドレス及び／又は前記格納先アドレスを物理アドレスに変換する。
【００６７】
これにより、複数のＣＰＵのそれぞれがさらに多重化された仮想アドレス空間を使用する場合にも、専用メモリ管理ユニットは効率よく、仮想アドレスから物理アドレスへの変換を実行することができる。
【００６８】
〔１２〕＜ＣＰＵＩＤ＋ＣＭ＋ＡＳＩＤ＋仮想化識別子（ＶＩＤ）＞
項１１において、前記第１ＣＰＵと前記第２ＣＰＵと前記第３ＣＰＵのそれぞれは、処理中のソフトウェアに基づいて、前記専用処理回路モジュールに対して、さらに仮想化識別子（ＶＩＤ）を指定可能である。
【００６９】
前記専用処理回路モジュールは、前記第１処理をまたは前記第２処理または前記第３処理の指定に伴って指定された前記仮想化識別子を記憶し、前記第１処理をまたは前記第２処理または前記第３処理を実行する際に、さらに前記仮想化識別子を前記専用メモリ管理ユニットに出力可能に構成される。
【００７０】
前記専用メモリ管理ユニットは、前記変換ルックアサイドバッファに格納される前記複数のエントリのそれぞれに、さらに仮想化識別子（ＶＩＤ）を格納可能である。
【００７１】
前記専用メモリ管理ユニットは、前記変換ルックアサイドバッファに格納される複数のエントリの中から、さらに前記専用メモリ管理ユニットから出力される前記仮想化識別子と一致するエントリを用いて、前記格納元アドレス及び／又は前記格納先アドレスを物理アドレスに変換する。
【００７２】
これにより、単一のＣＰＵ、あるいは一部又は全部のＣＰＵを組み合わせて構成されるドメインの上で、仮想化によって複数のOSを動作させるシステムにおいても、専用メモリ管理ユニットは効率よく、仮想アドレスから物理アドレスへの変換を実行することができる。
【００７３】
〔１３〕＜複数のチャネル＞
項９から項１２までのいずれか１項において、前記第１ＣＰＵ、前記第２ＣＰＵまたは前記第３ＣＰＵを含む複数のＣＰＵを備え、前記専用処理回路モジュールは、並列動作可能な複数のチャネル（２０＿０、２０＿１、２０＿２）を備える。前記複数のＣＰＵは、前記第１処理、前記第２処理または前記第３処理を含む複数の処理のうちの１の処理を、前記複数のチャネルのうちの１つのチャネルに対して、指定可能に構成される。
【００７４】
これにより、専用処理回路モジュールが複数のチャネルを備える場合にも、専用メモリ管理ユニットは効率よく、仮想アドレスから物理アドレスへの変換を実行することができる。
【００７５】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００７６】
〔実施形態１〕＜CPUIDを格納可能なTLBを備えるA-MMU＞
図１は、実施形態１のプロセッサの構成を表すブロック図である。実施形態１のプロセッサは、複数のＣＰＵ２＿０〜２＿１と、専用処理回路モジュール５と、専用処理回路モジュール５に接続されたメモリ管理ユニット（ＡＭＭＵ）６を備え、以下のように構成される。
【００７７】
複数のＣＰＵ２＿０〜２＿１は、それぞれ独立の仮想アドレス空間で動作可能である。例えばそれぞれ独立のOSを動作させることができる。そのために、プロセッサエレメント３＿０〜３＿１とそれぞれに接続されたメモリ管理ユニット（ＭＭＵ０，ＭＭＵ１）４＿０〜４＿１を備える。ＣＰＵ２＿０〜２＿１は、それぞれ、ＣＰＵバスｃａ／ｃｄに接続されている。ここで、プロセッサエレメントとメモリ管理ユニットを含む全体をＣＰＵと呼んでいるが、プロセッサエレメントをＣＰＵと呼び、メモリ管理ユニットを含む全体をプロセッサユニットなどの他の呼び方をしてもよい。また、プロセッサエレメント３＿０〜３＿１は、命令コードを読込み、解釈し、実行する、如何なるアーキテクチャのプロセッサであってよく、プロセッサエレメント３＿０とプロセッサエレメント３＿１は、同じアーキテクチャであるか異なるアーキテクチャであるかを問わない。
【００７８】
専用処理回路モジュール５は、複数のＣＰＵ２＿０〜２＿１のそれぞれによって、処理すべきデータの格納元アドレス及び／又は処理されたデータの格納先アドレスを仮想アドレスによって指定される処理を実行可能である。例えば、指定された格納元アドレスからデータを読み出して特殊な演算処理を施し、その結果を指定された格納先アドレスに書き込む、アクセラレータであってよく、単純にデータ転送のみを行う、ＤＭＡ転送制御部であってもよい。メモリ管理ユニット６は、前記指定を行ったＣＰＵを識別するＣＰＵ識別子（ＣＰＵＩＤ）を格納可能な変換ルックアサイドバッファ（ＴＬＢ）７を含む。
【００７９】
専用処理回路モジュール５とメモリ管理ユニット６は、アクセラレータバスａａ／ａｄを介して接続されている。専用処理回路モジュール５は、アクセラレータアドレスバスａａにアドレスを出力することにより、プロセッサ１の内部または外部のメモリにアクセスして、データの読み書きを行うことができる。専用処理回路モジュール５とメモリ管理ユニット６には、アクセラレータバスａａ／ａｄ以外に、図示されないバス制御信号線が接続されている。専用処理回路モジュール５は、格納元アドレス及び／又は格納先アドレスを、メモリ管理ユニット６に対してアクセラレータアドレスバスａａに出力する。専用処理回路モジュール５は、さらに、前記指定を行ったＣＰＵを識別するＣＰＵ識別子（ＣＰＵＩＤ）を、メモリ管理ユニット６に対して出力する。
【００８０】
メモリ管理ユニット６は、専用処理回路モジュール５から入力されたＣＰＵ識別子（ＣＰＵＩＤ）とＴＬＢ７に格納されるＣＰＵ識別子（ＣＰＵＩＤ）との比較結果に基づいて、入力された前記格納元アドレス及び／又は前記格納先アドレスを対応する物理アドレスに変換する。
【００８１】
複数のＣＰＵ２＿０〜２＿１は、それぞれ独立の仮想アドレス空間で動作しているので、専用処理回路モジュール５に対して処理を指示するとき、処理すべきデータの格納元アドレス及び／又は処理されたデータの格納先アドレスは、それぞれの動作する仮想アドレス空間における仮想アドレスによって指定する。それぞれの仮想アドレス空間は独立しているので、同じ仮想アドレスであっても、同じ物理アドレスに対応付けられるとは限らない。そこで、専用処理回路モジュール５が仮想アドレスをアクセラレータアドレスバスａａに出力してデータアクセスを要求したとき、そのデータアクセスを要求した処理が、どのＣＰＵによって指示された処理を実行するために必要かを、前記指定を行ったＣＰＵのＣＰＵＩＤを出力することによって、メモリ管理ユニット６に対して伝達する。
【００８２】
メモリ管理ユニット６は、ＣＰＵ識別子（ＣＰＵＩＤ）を格納可能な変換ルックアサイドバッファ（ＴＬＢ）７を含む。より具体的には、本実施形態に係るＴＬＢ７には、公知のＴＬＢと同様に、各エントリに仮想ページ番号（ＶＰＮ）と物理ページ番号（ＰＰＮ）を格納可能なフィールドが設けられており、さらに、ＣＰＵ識別子（ＣＰＵＩＤ）を格納可能なフィールドが追加されている。これにより、各エントリに格納されている仮想ページ番号と物理ページ番号の対が、複数のＣＰＵが動作する独立の仮想アドレス空間のうちのどの仮想アドレス空間における仮想ページ番号と物理ページ番号の対であるかを、識別することができる。例えば、処理の指定を行ったＣＰＵのＣＰＵＩＤと一致するＣＰＵＩＤのエントリを使って、仮想アドレスから物理アドレスへの変換を行うことにより、処理の指定を行ったＣＰＵの動作する仮想アドレスがそのまま変更されずに、専用処理回路モジュール５に指定されていても、メモリ管理ユニット６には正しいアドレス変換を実行することができる。ＣＰＵＩＤは、処理に伴って指定されたデータの格納元アドレス／格納先アドレスが、どの仮想アドレス空間のものであるかを特定するための代表的な指標である。ＣＰＵが仮想化されている場合には、仮想ＣＰＵを識別するＣＰＵＩＤを用いれば、仮想ＣＰＵごとに独立の仮想アドレス空間で動作するシステムにも適用することができる。
【００８３】
これにより、それぞれ独立の仮想アドレス空間を用いて個別のOSが動作する複数の機能部分を有する１または複数のシステムを、複数のＣＰＵを備えた１つのマルチプロセッサシステムに統合する場合であっても、各機能部分が使用していたOSにおけるデバイスドライバやミドルウェアを、そのまま仮想アドレスを変更せずに利用することができる。
【００８４】
〔実施形態２〕＜A-MMUのTLBにCPUID, CM, ASIDを格納＞
さらに詳細な実施形態について説明する。
【００８５】
図２は、実施形態２のプロセッサの構成を表すブロック図である。
【００８６】
本実施形態２のプロセッサ１は、ソフトウェアの実行の主体となるＣＰＵ０（２＿０）からＣＰＵ２（２＿２）までのＣＰＵコアとスヌープコントローラ（ＳＮＣ）９を含んで構成される。各ＣＰＵコア２＿０〜２＿２は、プロセッサエレメント（ＰＥ０〜ＰＥ２）３＿０〜３＿２、命令キャッシュ（ＩＣ０〜ＩＣ２）１０＿０〜１０＿２、データキャッシュ（ＤＣ０〜ＤＣ２）１１＿０〜１１＿２、メモリ管理ユニット（ＭＭＵ）４＿０〜４＿２を個別に含み、アドレスバスｃａとデータバスｃｄによって構成されるＣＰＵバスに接続されている。ＳＮＣ９は、各ＣＰＵコア２＿０〜２＿２の命令キャッシュ１０＿０〜１０＿２とデータキャッシュ１１＿０〜１１＿２を管理し、例えば、キャッシュコヒーレンシ制御などを行う。プロセッサ１は、各ＣＰＵコア２＿０〜２＿２のソフトウェアによる制御により音声や画像の圧縮などの特定処理を行い、一般にアクセラレータとも呼ばれる専用処理回路モジュール５と、専用処理回路モジュール５が出力する仮想アドレスを物理アドレスに変換する、アクセラレータ用ＭＭＵ（ＡＭＭＵ）６を含んで構成される。専用処理回路モジュール５とＡＭＭＵ６は、アドレスバスａａとデータバスａｄによって構成されるアクセラレータバスを介して互いに接続され、さらに、専用処理回路モジュール５からＡＭＭＵ６に対して、ＣＰＵ識別子（ＣＰＵＩＤ）、比較モード（ＣＭ）、アドレス空間識別子（ＡＳＩＤ）が出力される。プロセッサ１は、さらに、割り込みコントローラ（ＩＮＴＣ）１２と外部バスコントローラ（ＢＳＣ）１３とタイマユニット（ＴＩＭＥＲ）１４とを含んで構成される。ＩＮＴＣ１２は、専用処理回路モジュール５とＴＩＭＥＲ１４及び外部からの割り込み要求入力ｉｎｔ＿ｅｘｔなどの割り込み要求の調停を行い、各ＣＰＵコア２＿０〜２＿２に割り込み処理の要求を行う割り込み信号ｉｎｔ０，ｉｎｔ１，ｉｎｔ２を出力する。外部バスコントローラ（ＢＳＣ）１３は、ＲＡＭ１７／ＲＯＭ１６や外付けの周辺回路１５を接続するための外部バスｅａ／ｅｄとのインターフェース回路である。タイマユニット（ＴＩＭＥＲ）１４は、プロセッサ１の周辺回路モジュールの一つであり、一定間隔で割り込み要求を発生する。ＡＭＭＵ６とＩＮＴＣ１２とＢＳＣ１３とＴＩＭＥＲ１４は、互いにアドレスバスｉａとデータバスｉｄで構成される内部周辺バスで接続されている。さらに、オンチップのＲＡＭ／ＲＯＭや他の周辺回路モジュールが接続されても良い。プロセッサ１は、さらに、高速のＣＰＵバスｃａ／ｃｄと中低速の内部周辺バスｉａ／ｉｄを接続し、アクセス要求とデータの受け渡しをするバスブリッジ８を備える。
【００８７】
図３は、専用処理回路モジュールの構成例を表すブロック図である。
【００８８】
専用処理回路モジュール５は、複数のチャネルを備えると好適である。複数のＣＰＵがそれぞれ独立の仮想アドレス空間で動作しているとき、それぞれから指示された処理を並列に実行することができるからである。図３に示す専用処理回路モジュール５は、４個のチャネル２０＿０〜２０＿３と制御レジスタ２１と全体制御部２２とを含んで構成される。各チャネル２０＿０〜２０＿３は、データ処理部２３＿０〜２３＿３、チャネル制御部２４＿０〜２４＿３、リード要求生成部２５＿０〜２５＿３、ライト要求生成部２６＿０〜２６＿３、及び、バス調停・ＩＤ付加部２７＿０〜２７＿３を備える。制御レジスタ２１には、ＣＰＵコア２＿０〜２＿２の指示による、処理すべきデータの格納元アドレス及び／又は処理されたデータの格納先アドレスを仮想アドレス及び処理の内容などが格納される。制御レジスタ２１には、処理の指示を行ったＣＰＵのＣＰＵＩＤも合わせて格納される。さらに、比較モードＣＭとアドレス空間識別子（ＡＳＩＤ）も合わせて格納されるとより好適である。制御レジスタ２１は、アクセラレータバスａａ／ａｄに接続されている。全体制御部２２は、制御レジスタ２１に格納される設定データに基づいて、チャネル制御部２４＿０〜２４＿３を介して各チャネル２０＿０〜２０＿３の動作を制御する。各チャネル２０＿０〜２０＿３で発生する割り込み要因を調停して、アクセラレータ割り込みｉｎｔ＿ａをＩＮＴＣ１２に対して出力する。各チャネルそれぞれは、チャネル制御部２４の制御により、リード要求生成部２５がリード要求ｒｒｅｑを発行してリードデータｒｄａｔａをデータ処理部２３に読み込み、ライト要求生成部２６がライト要求ｗｒｅｑを発行してライトデータｗｄａｔａを出力する。バス調停・ＩＤ付加部２７＿０〜２７＿３は各チャネル２０＿０〜２０＿３からのリード要求ｒｒｅｑとライト要求ｗｒｅｑを調停し、アクセラレータバスａａ／ａｄとのインターフェースを行う。ここで、バス調停・ＩＤ付加部２７＿０〜２７＿３は、アドレスとデータに加えて、ＣＰＵＩＤ、さらに、制御レジスタ２１がＣＭとＡＳＩＤも格納するように構成されていればＣＭとＡＳＩＤも出力する。制御レジスタ２１は、専用処理回路モジュール５全体に１個まとめて設ける実施形態について説明したが、各チャネル２０＿０〜２０＿３の、例えばチャネル制御部２４＿０〜２４＿３に分散して設けても良い。
【００８９】
図４は、ＣＰＵ側のＭＭＵが備えるＴＬＢの構成例を表す説明図であり、図５は、専用処理回路モジュール側のＡＭＭＵが備えるＴＬＢの構成例を表す説明図である。ＣＰＵ側のＭＭＵ及びＴＬＢは、公知のＭＭＵ、ＴＬＢと同様の構成を採ることができる。ＣＰＵ側のＭＭＵが備えるＴＬＢは、複数のエントリとページテーブルエントリアドレス指定レジスタＴＴＢＲを含んで構成される。各エントリは、外部のページテーブルから必要なエントリをキャッシングして保持している。各エントリは、アドレス空間識別子（ＡＳＩＤ）、仮想ページ番号（ＶＰＮ）、物理ページ番号（ＰＰＮ）、及びその他の各種制御情報（Ｍ，ＰＲ，ＳＺ，Ｄ，Ｖなど）を格納可能なメモリテーブルである。外部のページテーブルには当該ＣＰＵが動作する仮想アドレス空間全体の仮想アドレスと物理アドレスが対応付けて格納されている。仮想アドレス空間が多重化されている場合には、外部のページテーブルにはさらに、アドレス空間識別子（ＡＳＩＤ）も対応付けられて格納されている。仮想アドレスと物理アドレスは、1KB〜4KBあるいは1MBなどのページごとに、仮想ページ番号（ＶＰＮ）と物理ページ番号（ＰＰＮ）によって対応付けられている。仮想アドレスを物理アドレスに変換するためには、例えば仮想ページ番号（ＶＰＮ）に合致する上位ビットを、対応する物理ページ番号（ＰＰＮ）に変換し、物理アドレスの下位ビットは仮想アドレスの下位ビットをそのまま変更せずに結合する。変換に当たってアドレス空間識別子（ＡＳＩＤ）も参照すれば、ＡＳＩＤ毎に独立したＶＰＮとＰＰＮの対応関係を持たせることもできる。ページテーブルエントリアドレス指定レジスタＴＴＢＲには、ページテーブルが格納されているアドレスＴＴＢＡが格納される。アドレス変換に当たって、変換対象の仮想アドレスが入力されると、同一のＡＳＩＤとＶＰＮを持つエントリが検索される。ヒットすれば上述のアドレス変換が行われるが、同一のＡＳＩＤとＶＰＮを持つエントリが発見できないときは、ＴＬＢミスと呼ばれ、ＴＴＢＲを参照して外部のページテーブルから必要とするエントリをＴＢＬに読み込んだ後に、上述のアドレス変換が行われる。
【００９０】
図５に示される、専用処理回路モジュール５側のＡＭＭＵ６が備えるＴＬＢ７は、各エントリにさらにＣＰＵ識別子（ＣＰＵＩＤ）と比較モード（ＣＭ）を格納するフィールドを備え、４個のページテーブルエントリアドレス指定レジスタＴＴＢＲ０〜ＴＴＢＲ３を備える。ページテーブルエントリアドレス指定レジスタＴＴＢＲ０〜ＴＴＢＲ３はそれぞれ、専用処理回路モジュール５のチャネル２０＿０〜２０＿３に対応して設けられており、ページテーブルが格納されているアドレスＴＴＢＡの他に、ＣＰＵＩＤとＣＭとＡＳＩＤを格納するフィールドを備えている。ＡＭＭＵ６のアドレス変換動作については後述する。
【００９１】
図６は、専用処理回路モジュールが備える制御レジスタの構成例を表す説明図である。制御レジスタ２１は、各チャネル２０＿０〜２０＿３に対応する４組のレジスタ、コマンドレジスタＣＲ０〜ＣＲ３、ステータスレジスタＳＲ０〜ＳＲ３、ソースアドレスレジスタＳＡＲ０〜ＳＡＲ３、デスティネーションアドレスレジスタＤＡＲ０〜ＤＡＲ３、及び識別子格納レジスタＩＤＲ０〜ＩＤＲ３によって構成される。各レジスタは３２ビットで構成される例を示すが、ビット数は適宜変更するこができる。また、ＡＭＭＵ６を経由してＣＰＵコア２＿０〜２＿２によってアクセス可能である。それに代えて、例えば、物理アドレスを割り付けて内部周辺バスｉａ／ｉｄに接続することにより、ＣＰＵコア２＿０〜２＿２によってアクセス可能に構成することもできる。
【００９２】
コマンドレジスタＣＲのそれぞれは、対応するチャネル２０のデータ処理部２３で実行する処理の内容が指定されるコマンドを格納する。処理の開始、中断、強制終了などの制御コマンドを格納することができるように、構成することもできる。ステータスレジスタＳＲのそれぞれは、対応するチャネル２０のデータ処理部２３で実行する処理の進捗状況を格納する。処理の完了や処理中のエラーの発生状況などを格納できるように構成される。ソースアドレスレジスタＳＡＲのそれぞれは、対応するチャネル２０のデータ処理部２３で実行する処理に必要なデータの格納元のアドレスを格納する。デスティネーションアドレスレジスタＤＡＲのそれぞれは、対応するチャネル２０のデータ処理部２３で実行する処理の結果、出力されるべきデータの格納先のアドレスを格納する。ソースアドレスレジスタＳＡＲとデスティネーションアドレスレジスタＤＡＲには、それぞれを指定するＣＰＵコア２が、動作している仮想アドレス空間内の仮想アドレスがそのまま書き込まれる。各ＣＰＵコア２＿０〜２＿２で動作するソフトウェアにおいて、専用処理回路モジュール５を起動するためのデバイスドライバやミドルウェアを書き換えることなく、それらの指定する仮想アドレスをそのままＳＡＲとＤＡＲに書き込む。識別子格納レジスタＩＤＲのそれぞれは、対応するチャネル２０のデータ処理部２３で処理を実行するように指示を与えたＣＰＵのＣＰＵＩＤ、比較モード（ＣＭ）、及びその時のアドレス空間識別子（ＡＳＩＤ）を格納する。比較モード（ＣＭ）は、複数のＣＰＵのＣＰＵＩＤを同一視させるために利用することができる。例えば、複数のＣＰＵが同一の仮想アドレス空間で動作している場合に、それらのＣＰＵを同一視することにより、複数のＣＰＵのうち１個のＣＰＵが行った処理の指定が、他のＣＰＵと共有される。
【００９３】
実施形態２のプロセッサ１の動作について説明する。各ＣＰＵコア２＿０〜２＿２は、メモリ管理ユニット（ＭＭＵ０〜ＭＭＵ２）４＿０〜４＿２を経由して専用処理回路モジュール５や割り込みコントローラ（ＩＮＴＣ）１２、外部バスコントローラ（ＢＳＣ）１３、タイマユニット（ＴＩＭＥＲ）１４に内蔵されている制御用レジスタをアクセスすることにより、これらの制御を行う。また、更にＢＳＣ１３を経由してプロセッサ１に接続されたＲＯＭ１６、ＲＡＭ１７や外付けの周辺回路１５の制御レジスタをアクセスすることにより、ソフトウェアの実行に必要な命令の読み出しやデータの入出力を行う。
【００９４】
各ＣＰＵコア２＿０〜２＿２とバスブリッジ８はＣＰＵバスｃａ／ｃｄによって接続されており、各ＣＰＵコア２＿０〜２＿２はソフトウェアが生成する仮想アドレスを、その内蔵するＭＭＵ４＿０〜４＿２により物理アドレスに変換してＣＰＵバスｃａ／ｃｄ上にアクセス要求を送出することでアクセスを行う。ＣＰＵバスｃａ／ｃｄ上では、各ＣＰＵコア２＿０〜２＿２がアクセス要求の発生元であり、バスブリッジ８がこれらの要求を受理する。
【００９５】
バスブリッジ８とＡＭＭＵ６、ＩＮＴＣ１２、ＢＳＣ１３、ＴＩＭＥＲ１４は内部周辺バスｉａ／ｉｄによって接続されており、ＡＭＭＵ６は内部周辺バスｉａ／ｉｄ上に物理アドレスを出力してアクセスを行う。また、内部周辺バスｉａ／ｉｄ上ではバスブリッジ８とＡＭＭＵ６がアクセス要求の発生元であり、専用処理回路モジュール５、ＩＮＴＣ１２、ＢＳＣ１３、ＴＩＭＥＲ１４のいずれかがこれらの要求を受理する。また、専用処理回路モジュール５やＡＭＭＵ６のレジスタ等の内部リソースに各ＣＰＵコア２＿０〜２＿２からアクセスする場合は、ＡＭＭＵ６がアクセス要求の受理も行なう。専用処理回路モジュール５とＡＭＭＵ６はアクセラレータバスａａ／ａｄによって接続されており、専用処理回路モジュール５がメモリへのアクセスを行なう場合は専用処理回路モジュール５がアクセス要求を生成し、ＡＭＭＵ６がこれを受理する。また、各ＣＰＵコア２＿０〜２＿２から専用処理回路モジュール５のレジスタ等をアクセスする場合は、ＡＭＭＵ６がアクセス要求を生成し、専用処理回路モジュール５がこれを受理する。
【００９６】
各ＣＰＵコア２＿０〜２＿２に内蔵されるメモリ管理ユニット（ＭＭＵ０〜ＭＭＵ２）４＿０〜４＿２は、ＣＰＵで実行されるソフトウェアによって生成された仮想アドレスよるアクセス要求を、内部のＴＬＢを検索して指定された仮想アドレスに対応する物理アドレスを求め、ＣＰＵバスｃａ／ｃｄに対しては、この物理アドレスによるアクセス要求を生成する。
【００９７】
メモリ管理ユニット５は、専用処理回路モジュール５から入力されたＣＰＵ識別子（ＣＰＵＩＤ）とＴＬＢ７に格納されるＣＰＵ識別子（ＣＰＵＩＤ）との比較結果に基づいて、入力された前記格納元アドレス及び／又は前記格納先アドレスを対応する物理アドレスに変換する。
【００９８】
複数のＣＰＵ２＿０〜２＿２は、それぞれ独立の仮想アドレス空間で動作しているので、専用処理回路モジュール５に対して処理を指示するとき、処理すべきデータの格納元アドレス及び／又は処理されたデータの格納先アドレスはそれぞれの動作する仮想アドレス空間における仮想アドレスによって指定する。より具体的には、ＣＰＵ２＿０〜２＿２は、専用処理回路モジュール５内のチャネル２０＿０〜２０＿３のうち、処理を実行させたいチャネル２０を選んで、それ対応する制御レジスタに処理内容を示すデータを書き込む。仮にＣＰＵ２＿０がチャネル２０＿０に処理を指示する場合、ＳＡＲ０に処理すべきデータの格納元アドレスを、ＤＡＲ０に処理されたデータの格納先アドレスを、ＣＲ０に処理内容を表すコマンドを書き込む。合わせてOSなどにより、ＩＤＲ０にＣＭとＣＰＵＩＤとＡＳＩＤが書き込まれる。ＣＰＵＩＤはハードウェアによってバスを監視することによって特定し、ＩＤＲに書き込むこともできる。
【００９９】
チャネル２０＿０では、チャネル制御部２４の制御により、リード要求生成部２５＿０がリード要求ｒｒｅｑを発行し、バス調停・ＩＤ付加部２７＿０がＳＡＲ０に基づいて処理すべきデータの格納元アドレスを指定して、リードデータｒｄａｔａをデータ処理部２３に読み込む。処理が完了したときには、ライト要求生成部２６がライト要求ｗｒｅｑを発行し、バス調停・ＩＤ付加部２７＿０がＤＡＲ０に基づいて処理されたデータの格納先アドレスを指定して、ライトデータｗｄａｔａを出力する。バス調停・ＩＤ付加部２７＿０〜２７＿３は各チャネル２０＿０〜２０＿３からのリード要求ｒｒｅｑとライト要求ｗｒｅｑを調停し、アクセラレータバスａａ／ａｄとのインターフェースを行う。ここで、バス調停・ＩＤ付加部２７＿０〜２７＿３は、アドレスとデータに加えて、ＣＰＵＩＤ、ＣＭ、及びＡＳＩＤをＡＭＭＵ６に出力する。
【０１００】
ＡＭＭＵ６は、アクセラレータアドレスバスａａで指定される仮想アドレスを、ＴＬＢ７を用いて物理アドレスに変換し、内部周辺アドレスバスｉａに出力する。アクセラレータアドレスバスａａで指定される仮想アドレスが、複数のＣＰＵコア２＿０〜２＿２が動作するどの仮想アドレス空間における仮想アドレスかによって、変換すべき物理アドレスが異なる。ＡＭＭＵ６は、入力されたＣＰＵＩＤ、ＣＭ、及びＡＳＩＤを、ＴＬＢ７の各エントリと比較し、同じＣＰＵＩＤ、ＣＭ、及びＡＳＩＤのエントリのうち、指定された仮想アドレスの変換に適するエントリを検索する。このとき、ＣＭによってはＣＰＵＩＤが異なっていても一致すると判断してエントリを選択することができる。複数のＣＰＵが同じ仮想アドレス空間で動作する場合に有用である。変換に適するエントリにヒットしないときは、ＴＬＢミスとして、ＴＴＢＲ０に格納されるＴＴＢＡに基づいて、外部のページテーブルを参照し、適するエントリをＴＢＬ７に読み込む。適するエントリでは、変換対象の仮想アドレスと仮想ページ番号ＶＰＮが一致するので、これを物理ページ番号ＰＰＮに変換することによって、対応する物理アドレスに変換する。ＣＰＵＩＤが基本的に一致するので、適切な仮想アドレス空間における仮想アドレスから対応する物理アドレスへの変換となる。
【０１０１】
これにより、それぞれ独立の仮想アドレス空間を用いて個別のOSが動作する複数の機能部分を有する１または複数のシステムを、複数のＣＰＵを備えた１つのマルチプロセッサシステムに統合する場合であっても、各機能部分が使用していたOSにおけるデバイスドライバやミドルウェアを、そのまま仮想アドレスを変更せずに利用することができる。各ＣＰＵコア２＿０〜２＿２は、それぞれが動作するどの仮想アドレス空間における仮想アドレスをそのまま使って、処理すべきデータの格納元アドレスをＳＡＲに、また、処理されたデータの格納先アドレスをＤＡＲに、指定すれば足りるからである。さらに比較モードＣＭを参照してアドレス変換を行うことにより、複数のＣＰＵが同一の仮想アドレス空間を使用している場合にも、効率よくアドレス変換を行うことができる。さらにまたアドレス空間識別子ＡＳＩＤを参照してアドレス変換を行うことにより、複数のＣＰＵのそれぞれがさらに多重化された仮想アドレス空間を使用する場合にも、適切にアドレス変換を行うことができる。また、専用処理回路モジュール５が複数のチャネルを備え、それらが並列動作する場合にも、制御レジスタ６を各チャネルごとに設けることにより、専用処理回路モジュール５は正しく仮想アドレスなどの情報をメモリ管理ユニット６に出力することができ、メモリ管理ユニット６は、それぞれに適したアドレス変換を行うことができる。
【０１０２】
〔実施形態３〕＜応用システム（自動車用情報機器）＞
図９は、実施形態２のプロセッサを用いた応用システムの一構成例を表すブロック図である。安全運転支援機能とテレビ電話機能の双方を搭載した自動車用情報機器に応用した例である。実施形態２のプロセッサと同様のマイクロプロセッサ１の外部バスｅａ／ｅｄに、周辺回路１５としてのコンパニオンチップ１５＿１と、ＲＯＭ１６としてのフラッシュメモリ（登録商標）１６＿１と、ＳＤＲＡＭ１７＿１が接続されている。コンパニオンチップ１５＿１には、安全運転支援のための外部監視カメラ３０と、テレビ電話のための車内カメラ３１と、無線モジュール３２と、マイク３３＿１及びスピーカ３３＿２と、テレビ電話と各種の操作のためのユーザインターフェースに使用する表示用パネル３４と、操作パネル３５が接続されている。フラッシュメモリ１６＿１はプログラム格納用であり、ＳＤＲＡＭ１７＿１は処理用ワークエリアとして使用される。
【０１０３】
なお、実施形態で使用するコンパニオンチップ１５＿１は、外部監視カメラ３０と車内カメラ３１から入力される画像を、直接ＳＤＲＡＭ１７＿１上の予め設定された領域に格納すると共に、別に設定された領域上のメモリの内容をフレームバッファとして読み出し、表示用パネル３４の信号形式で出力する。また、マイク３３＿１から入力されたアナログ信号をA/D変換してＳＤＲＡＭ１７＿１上の予め設定された領域に書き込み、更に別に設定された領域のデータをPCM音声データとしてD/A変換し、スピーカ３３＿２に出力する。また、コンパニオンチップ１５＿１の各動作は、別途コンパニオンチップ１５＿１に内蔵された制御用のレジスタをマイクロプロセッサ１から読み書きすることによって制御可能である。
【０１０４】
本実施形態では、安全運転支援機能とテレビ電話機能ではその要求される信頼性の水準が異なるため、安全運転支援機能には信頼性とリアルタイム性の高いOS（以降RTOSと表記）を使用し、ＣＰＵ２＿０を固定的に割り当てて使用する。また、テレビ電話機能向けには、付加価値となる各種の追加機能を容易に実装できるように汎用のOSを使用し、ＣＰＵ２＿１とＣＰＵ２＿２を動的に個別のスレッドに割り当てて使用する対照型マルチプロセッシング（SMP; Symmetric Multi-Processing）としている。
【０１０５】
本実施形態の自動車用情報機器では、エンジンキーの操作により電源が投入されるとマイクロプロセッサ１はパワーオンリセット状態となり、内部のレジスタやステートマシンが初期状態に設定されると共に、まずＣＰＵ２＿０がリセットベクタのアドレスから命令フェッチを開始する。各ＣＰＵ２＿０〜２＿２ではリセット直後はＭＭＵ４＿０〜４＿２は無効となっており、リセットベクタの仮想アドレスは、同一の値の物理アドレスとしてＣＰＵバスｃａ／ｃｄに出力される。なお、この時点では、ＣＰＵ２＿１とＣＰＵ２＿２は停止状態のままであり、ＣＰＵ２＿０からバスブリッジ８内の制御レジスタに所定の値の書き込みが行なわれるまで停止状態を保つ。バスブリッジ８は、この命令フェッチに伴うアクセス要求を内蔵周辺バスｉａ／ｉｄに伝達する。内蔵周辺バスｉａ／ｉｄの上ではこのリセットベクタのアドレスは外部バスコントローラＢＳＣ１３に割り当てられており、外部バスコントローラＢＳＣ１３はこの要求に応答すると共に、外部バスｅａ／ｅｄを駆動してフラッシュメモリ１６＿１から最初に実行する命令の命令コードの読み出しを行う。ここで読み出された命令コードは、外部バスコントローラＢＳＣ１３から内蔵周辺バスｉａ／ｉｄ、バスブリッジ８、ＣＰＵバスｃａ／ｃｄを順に通過してＣＰＵ２＿０に返される。
【０１０６】
リセット直後にＣＰＵ２＿０で実行されるプログラムはIPL（Initial Program Loader）と呼ばれる。IPLは、主としてシステムの稼動に必要な設定を行なった後、ＣＰＵ２＿０で実行されるRTOSと安全運転支援機能用プログラム、ＣＰＵ２＿１とＣＰＵ２＿２を使用したSMP上で実行される汎用OSとテレビ電話用プログラムをＳＤＲＡＭ１７＿１上の所定の領域に配置する。続いて前述のバスブリッジ８内の制御レジスタを使用してＣＰＵ２＿１を起動し、汎用OSの起動プログラムを開始させる。
【０１０７】
IPLは最後にRTOSの実行開始アドレスに分岐し、ＣＰＵ２＿０の処理をRTOSに切り替える。RTOSは事前に構成された仮想アドレス空間のアドレスマップに従ってＭＭＵ４＿０を設定し、自らの動作に必要な仮想アドレス空間を構成する。ＭＭＵ４＿０の設定後、ＭＭＵ４＿０を有効にすることによって、仮想アドレス空間上で所定のサイズごとに必要な属性（キャッシュの有効・無効やライトバッファの有効・無効など）を適用可能となる。例えばＳＤＲＡＭ１７＿１上のプログラム本体はキャッシュ有効、ライトバッファ有効、外部バス上のコンパニオンチップへのレジスタアクセスはキャッシュ無効、ライトバッファ有効といった効率的な利用が可能となる。なお、RTOSにおいてはリアルタイム性が重要視されることから、仮想アドレス空間は多重化せずに全てのプログラム（タスク）において同一の仮想アドレス空間を共有すると共に、ＭＭＵ４＿０の設定においてＴＬＢミスの発生による処理の遅延を軽減するため、1MB程度の大きなサイズのページが使用される。RTOSはＣＰＵ２＿０でＭＭＵ４＿０を有効にした後、安全運転支援用プログラムを起動する。
【０１０８】
一方、ＣＰＵ２＿０のIPLによって起動されたＣＰＵ２＿１は、汎用OSの起動用プログラムを実行する。汎用OSでは、プログラムの開発効率の向上と、多様なプログラムを同時に実行させた場合の安全性の観点から、仮想アドレス空間を特権空間とユーザ空間に分離する。特権空間は、主にOS自体がスケジューリングやAPI（Application Program Interface）の処理、リソースの管理のために使用し、ユーザ空間は、一般のアプリケーションプログラム（以降アプリケーションと表記）の実行に使用する。仮想アドレス空間を特権空間とユーザ空間に分離した上で、ユーザ空間の側についてはプログラムが異なっても仮想アドレスの使用方法が同一となるように、アドレス空間の多重化を行なっている。また、動的な仮想アドレス空間の管理をプログラム実行用メモリの管理と合わせて行なうため、ページサイズは4kB程度の小さなサイズが使用される。
【０１０９】
汎用OSの起動では、まずＣＰＵ２＿１のみを使用して特権空間の側の仮想アドレス空間を設定してＭＭＵ４＿１を有効にした後、ＳＮＣ９を設定してＣＰＵ２＿１とＣＰＵ２＿２のキャッシュコヒーレンシ制御を有効にし、続いて前述のバスブリッジ８内の制御レジスタを使用してＣＰＵ２＿２を起動する。なお、この汎用OS上ではＣＰＵ２＿１がマスタＣＰＵ、ＣＰＵ２＿２がスレーブＣＰＵであり、ＣＰＵ２＿２はマスタＣＰＵであるＣＰＵ２＿１から、スレーブＣＰＵ専用の初期化処理を実行するように設定される。ＣＰＵ２＿２は起動する前述の初期化処理を実行した後、ＣＰＵ２＿１のスケジューリングによるＣＰＵ２＿２へのプログラムスレッド（以降スレッドと表記）の割り当てが行なわれるまで待機状態となる。
【０１１０】
汎用OS上では、ＣＰＵ２＿１とＣＰＵ２＿２で必要な初期化が終了すると、汎用OSの構成時に設定した情報に従ってアプリケーションプログラムを起動する。最終的にテレビ電話機能のアプリケーションが起動されて必要な初期化を終了すると、操作パネル３５によるユーザの操作又は所定の方法による通話やメール着信に対する待機状態となる。
【０１１１】
RTOS上で動作する安全運転支援用プログラムでは、車外監視用カメラ３０からの入力画像を専用回路モジュール５を用いてリアルタイムに画像処理し、画像からの各種特徴情報の抽出を行う。また、車外監視用カメラ３０からの画像を人間が認識しやすい形状に変形し、表示パネル３４上に表示する。前述の特徴情報はＣＰＵ２＿０のソフトウェアによって処理され、各種の道路標識や、歩行者や他の車両、建造物の自車への衝突の危険があると判定した場合に、表示パネル３４上のカメラ画像の該当位置に注意や警告を表示する。
【０１１２】
汎用OS上で動作するテレビ電話機能のアプリケーションでは、高速の携帯電話回線や広域の無線LAN接続などの利用可能な無線接続を使用して、車両間、あるいは車両と一般家庭の間などの高画質、高音質のテレビ電話機能を実現する。テレビ電話の動作は、車内のテレビ電話用カメラ３１からの入力画像をリアルタイムで圧縮して、同様に圧縮したマイク３３＿１からの音声データと共に所定の形式でパケット化、無線モジュール３２を経由して所定の通信相手に送信する。また、同時に無線モジュールで受信したパケットから圧縮された画像データを取り出して復元し、同様に取り出した音声データと同期させた上で、それぞれ表示パネルとスピーカ３３＿２に出力する。この際、画像の圧縮と、圧縮された画像の復元に専用処理回路モジュール５を使用する。
【０１１３】
専用処理回路モジュール５は、RTOS側と汎用OS側の双方から使用される。この専用処理回路モジュール５のためのデバイスドライバは、RTOS側も汎用OS側もその処理対象アドレスの指定に仮想アドレスを使用するが、前述のように仮想アドレスが同一であっても汎用OSの側ではアプリケーションごとに仮想アドレス空間を多重化しているため、同一の仮想アドレスが異なる物理アドレスに割り当てられている可能性（A）がある。また、RTOS側で使用している仮想アドレスと汎用OS上のアプリケーションで同一の仮想アドレスが異なる物理アドレスに割り当てられている可能性（B）も存在する。また、これらとは逆に、汎用OSのアプリケーション相互（C）や、RTOS側と汎用OS側のアプリケーションの間（D）で画像データが共有されるようなケースでは、異なる仮想アドレスが同一の物理アドレスに割り当てられる可能性もある。
【０１１４】
上記の（A）と（C）の可能性に対処するため、マイクロプロセッサ１では、図３に示す専用処理回路モジュール５において、バス調停・ＩＤ付加部２７＿０〜２７＿３を設ける。バス調停・ＩＤ付加部２７＿０〜２７＿３により、各チャネル２０＿０〜２０＿３内部でのアクセス要求を調停してアクセラレータバスａａ／ａｄに出力する際に、図６の制御レジスタ２１におけるＩＤＲ０〜ＩＤＲ３のＣＭ、ＣＰＵＩＤ、ＡＳＩＤの各ビットフィールドの値をアクセラレータバスａａ／ａｄ上にアドレスと共に出力する。また、ＴＬＢ７においてはアドレスの他に、ＣＭビットに設定された比較モードの条件によって、ＡＳＩＤやＣＰＵＩＤの条件を適切に加味した形での仮想アドレスから物理アドレスへの変換が可能となる。
【０１１５】
上記は具体的には、以下の手順によって可能となる。
【０１１６】
まず、RTOS上の安全運転支援プログラムは自らが使用する専用回路モジュール５のチャネル２０＿０について、「ＣＰＵＩＤ＝０」を判定条件に加えるように事前にＣＭビットを設定する。この際にＣＰＵ２＿０のＣＰＵＩＤは０とし、ＡＳＩＤは無効であるが、仮に０とした上でＩＤＲ０に書き込む。また、図５のＡＭＭＵ６のページテーブルエントリアドレス指定レジスタＴＴＢＲ０には、前記と同じＣＰＵＩＤ、ＣＭ、ＡＳＩＤと合わせてRTOSが使用しているＳＤＲＡＭ１７＿１上のページテーブルのアドレスを設定する。
【０１１７】
次に、汎用OSでのテレビ電話アプリケーションは、自らが使用する専用回路モジュール５のチャネル２０＿１とチャネル２０＿２について、「(ＣＰＵＩＤ＝１or ＣＰＵＩＤ＝２) and ＡＳＩＤの一致」を比較モードとしてＣＭビットに設定し、ＡＳＩＤについては汎用OSがテレビ電話アプリケーションに割り当てたプロセスの固有IDを設定する。また、同様の設定をＴＴＢＲ１に対しても行なうが、この場合のＴＴＢＡは汎用OSがテレビ電話アプリケーションの仮想アドレス空間のために割り当てたアプリケーション固有のページテーブルのアドレスとなる。
【０１１８】
RTOS上の安全運転支援プログラムの処理で専用処理回路モジュール５のチャネル２０＿０が動作する際、アクセラレータバスａａ／ａｄ上には仮想アドレスと合わせて、「ＣＰＵＩＤ＝０」を比較条件とすることを意味するＣＰＵＩＤ、ＣＭ、ＡＳＩＤの値が出力される。ＡＭＭＵ６は、最初にチャネル２０＿０からのアクセス要求を受け取ると、この時点ではＴＢＬ７上に有効なエントリが存在しないため、ＴＴＢＲ０からＴＴＢＲ３のＣＭをチェックしてＣＰＵＩＤとＡＳＩＤの比較条件を求め、アクセス要求に付与されているＣＭに基づいたＣＰＵＩＤとＡＳＩＤの比較条件と照らし合わせて、該当するＴＴＢＲ０からＴＴＢＲ３までのレジスタを選択する。今回はＴＴＢＲ０がこれに合致するため、RTOSが使用するページテーブルからエントリが読み込まれ、ＡＭＭＵ６の内部のＴＬＢ７に登録されてアドレス変換が行なわれる。以降、ページミスが発生すれば同様にＴＬＢ７にページテーブルからエントリが読み込まれ、ページヒットの場合は既に登録済みのエントリを利用してアドレス変換が行なわれる。
【０１１９】
次に、汎用OS側のテレビ電話アプリケーションの動作によってチャネル２０＿１又はチャネル２０＿２が動作する場合、「(ＣＰＵＩＤ＝１or ＣＰＵＩＤ＝２) and ＡＳＩＤの一致」を比較条件とすることを意味するＣＰＵＩＤ、ＣＭ、ＡＳＩＤの値が出力される。ＡＭＭＵ６は、最初にチャネル２０＿１又はチャネル２０＿２からのアクセス要求を受け取ると、前記のチャネル２０＿０の場合と同様に、条件に該当するレジスタをＴＴＢＲ０からＴＴＢＲ３の中から選択する。今回はＴＴＢＲ１がこれに合致するため、汎用OSがテレビ電話アプリケーションのために割り当てたページテーブルからエントリが読み込まれ、ＡＭＭＵ６の内部のＴＬＢ７に登録されてアドレス変換が行なわれる。
【０１２０】
RTOS上の安全運転支援プログラムと汎用OS側のテレビ電話アプリケーションが同時に動作した場合、それぞれのアクセス要求では、仮に仮想アドレスが同じであったとしても、ＣＭとＣＰＵＩＤ、ＡＳＩＤを使用することで、アドレス変換に使用するページテーブルを正しく特定することが可能である。このため、本実施形態の自動車用情報装置においてはRTOS上の安全運転支援プログラムと汎用OS上のテレビ電話アプリケーションの双方で仮想アドレスを用いた専用処理回路モジュール５の動作が可能である。また、汎用OSの側に更に別のアプリケーションを追加して専用処理回路モジュール５のチャネル３０＿３を使用した場合でも、３者はそれぞれの仮想アドレス空間での専用処理回路モジュール５の利用が可能である。これにより、専用処理回路モジュール５を使用する際のソフトウェアによるアドレス変換が不要となり、ソフトウェア処理負荷の低減による機器の省電力化や、ハードウェアの低コスト化、あるいは同一のハードウェアであれば更なる機能、性能の向上を図ることが可能となる。
【０１２１】
なお、本実施形態に示したように、ＣＰＵ２＿０など特定のＣＰＵがRTOSで使用することが決まっている場合は、RTOSの使用に合わせたＣＰＵコアに置き換えることにより、設計の合理化が可能である。異なるＣＰＵコアを使用した場合はTLBエントリの互換性がなくなるため、ＡＭＭＵ７には異なる形式のページテーブルを読み替える回路を搭載することにより、このような場合でも適用可能となる。
【０１２２】
〔実施形態４〕＜仮想化ＩＤを追加＞
単一のＣＰＵ、あるいは一部又は全部のＣＰＵを組み合わせて構成されるドメインの上で、仮想化によって複数のOSを動作させるシステムにおいて、各OS上のアプリケーションにおける仮想アドレス空間上での専用処理回路モジュール５のアクセラレータとしての利用を可能とする実施形態について説明する。上記の新たな課題は、専用処理回路モジュール５に備えられる制御レジスタ２１と、ＡＭＭＵ６に備えられるＴＬＢ７の各エントリとＴＴＢＲに、仮想化識別子（ＶＩＤ）を追加することにより、解決することができる。
【０１２３】
図７は、専用処理回路モジュール側のＭＭＵが備えるＴＬＢに仮想化識別子（ＶＩＤを）を追加した構成例を表す説明図である。図５に示した実施形態２のＡＭＭＵ６が備えるＴＬＢ７に対してさらに、各エントリに仮想化識別子（ＶＩＤ）を追加したものである。ＡＭＭＵ６のＴＴＢＲ０〜ＴＴＢＲ３にもそれぞれ、仮想化識別子（ＶＩＤ）を格納するフィールドを追加する。
【０１２４】
図８は、専用処理回路モジュールが備える制御レジスタに仮想化識別子（ＶＩＤ）を追加した構成例を表す説明図である。図６に示した実施形態２の専用処理回路モジュール５が備える制御レジスタ２１に対してさらに、各チャネル２０＿０〜２０＿３に対応して、ＩＤＲ０〜ＩＤＲ３のそれぞれに、仮想化識別子（ＶＩＤ）を格納するフィールドを追加したものである。
【０１２５】
さらに、比較モードＣＭの機能も、ＡＭＭＵ６でのＴＬＢ７の検索の際に、ＶＩＤとＣＰＵＩＤ、ＡＳＩＤの３種類のどの条件を、単独、あるいは複数個を組み合わせて使用することができるように拡張する。ＣＭのビット数は、必要に応じて増やすとともに、検索に使用する一致判定回路もこれに対応させて変更する。
【０１２６】
また、必要に応じて各ＣＰＵ２０＿０〜２０＿２には仮想化支援機能を搭載する。つまり、通常の2種類の特権レベル（ユーザー状態、システム状態）のほかに、さらにもうひとつ上の特権レベルとして仮想化支援ソフトウェアであるハイパーバイザのための専用の実行状態（ハイパーバイザ状態）を持ち、ソフトウェアの特定の動作をハードウェア的に検出し、自動的にハイパーバイザ状態に処理を切り替えることが可能なようにする。
【０１２７】
この構成のマイクロプロセッサ１において、例えばＣＰＵ２０＿１及びＣＰＵ２０＿２の上で仮想化された2個のOSが動作し、その上で更に各2個のアプリケーションが動作するものとする。２個のOSは、同じ種類でも異なる種類でもよく、これらを仮にOSa、OSbとする。アプリケーションは、仮にOSaで動くものをAPa1とAPa2、OSbで動くものをAPb1とAPb2とする。APa1/APa2/APb1/APb2の4種類のアプリケーションが専用処理回路モジュール５の機能を使用する場合、ＣＰＵ２０＿１及びＣＰＵ２０＿２においては、その4種類のアプリケーションが、それぞれ無関係に割り当てられた、排他されていない仮想アドレス空間で専用処理回路モジュール５を使おうとする。OSaとOSbのそれぞれには、仮想化識別子（ＶＩＤ）の列が存在しない構造のＡＭＭＵ６を搭載するシステムを想定した専用処理回路モジュール５（アクセラレータ）用のデバイスドライバが搭載されている。ハイパーバイザではこれらのデバイスドライバによるＡＭＭＵ６のＴＬＢ７やＴＴＢＲ０〜ＴＴＢＲ３、メモリ上のページテーブル領域の書き換えを捕捉してハイパーバイザに処理を移すようにしておく。これにより、ハイパーバイザでは上記の4個のアプリケーションの処理を、ハイパーバイザが管理する現在実行中の仮想マシンのIDと、各OSが管理していてデバイスドライバによって設定されたASIDによって全て識別可能となる。これを用いることで、各OSのドライバの代わりにハイパーバイザのドライバがＡＭＭＵ６のＴＬＢ７や、そのＴＬＢ７がＴＴＢＲ０〜ＴＴＢＲ３を使用して参照するメモリ上のページテーブル領域について、ＶＩＤを付加した形式でアクセスすることが可能となり、専用処理回路モジュール５はＡＭＭＵ６を経由することで、それらの仮想アドレスを正しく区別して処理を行うことが可能となる。
【０１２８】
なお、上記の例においてもＣＰＵ２＿０での別のOSの稼働と、さらにＣＰＵ２＿０で動作するOS上のアプリケーションからの専用処理回路モジュール５（アクセラレータ）の利用も想定可能である。その場合には、専用処理回路モジュール５（アクセラレータ）のチャネル数よりもアプリケーションのチャネル要求数の合計の方が多くなるため、ハイパーバイザを用いて専用処理回路モジュール５（アクセラレータ）のチャネル自体を仮想化すると良い。例えば、リアルタイム性が必要なＣＰＵ２＿０のアプリケーションには常に専用処理回路モジュール５（アクセラレータ）のチャネル２０＿０を割り当てるが、チャネル２０＿１〜２０＿３についてはハイパーバイザを用いてそれぞれの仮想マシンに動的に割り当てるようにする。この際、ＡＭＭＵ６のアドレス変換におけるＴＬＢ７の一致判定には、ＶＩＤとＣＰＵＩＤ、ＡＳＩＤの全てが同時に組み合わせて使用される。
【０１２９】
これにより、単一のＣＰＵ、あるいは一部又は全部のＣＰＵを組み合わせて構成されるドメインの上で、仮想化によって複数のOSを動作させるシステムにおいても、メモリ管理ユニットは効率よく、仮想アドレスから物理アドレスへの変換を実行することができる。
【０１３０】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０１３１】
例えば、ＣＰＵの数は２個または３個の場合の実施形態を例示して説明したが、その数に限定されるものではない。また、ＣＰＵは命令コードを読込み、解釈して実行することができる、如何なるアーキテクチャのプロセッサであってもよい。
【符号の説明】
【０１３２】
１  プロセッサ
２  ＣＰＵ
３  プロセッサエレメント
４  メモリ管理ユニット（ＭＭＵ）
５  専用処理回路モジュール
６  専用メモリ管理ユニット（ＡＭＭＵ）
７  転送ルックアヘッドバッファ（ＴＬＢ）
８  バスブリッジ
９  スヌープコントローラ（ＳＮＣ）
１０  命令キャッシュ
１１  データキャッシュ
１２  割り込みコントローラ（ＩＮＴＣ）
１３  バス制御部（ＢＳＣ）
１４  タイマ（ＴＩＭＥＲ）
１５  周辺回路
１６  ＲＯＭ
１７  ＲＡＭ
２０  チャネル
２１  制御レジスタ
２２  全体制御部
２３  データ処理部
２４  チャネル制御部
２５  リード要求生成部
２６  ライト要求生成部
２７  バス調停・ＩＤ付加部
３０  外部監視カメラ
３１  車内カメラ
３２  無線モジュール
３３＿１  マイク
３３＿２  スピーカ
３４  表示パネル
３５  操作パネル
ｃａ／ｃｄ  ＣＰＵバス（アドレスバス／データバス）
ａａ／ａｄ  アクセラレータバス（アドレスバス／データバス）
ｉａ／ｉｄ  内部周辺バス（アドレスバス／データバス）
ｅａ／ｅｄ  外部バス（アドレスバス／データバス）
ＴＴＢＲ  ページテーブルエントリアドレス指定レジスタ
ＣＰＵＩＤ  ＣＰＵ識別子
ＣＭ  比較モード
ＡＳＩＤ  アドレス空間識別子
ＶＰＮ  仮想ページ番号
ＰＰＮ  物理ページ番号
【図１】
2014119787.tif 000003
【図２】
2014119787.tif 000004
【図３】
2014119787.tif 000005
【図４】
2014119787.tif 000006
【図５】
2014119787.tif 000007
【図６】
2014119787.tif 000008
【図７】
2014119787.tif 000009
【図８】
2014119787.tif 000010
【図９】
2014119787.tif 000011