(57)【特許請求の範囲】
【請求項１】
仮想アドレスを用いてアクセス制御を行う中央処理装置と、
物理アドレスによりアクセスされ、且つ仮想アドレスを用いてアクセス制御を行う回路モジュールと、
前記中央処理装置が出力する仮想アドレス及び前記回路モジュールが出力する仮想アドレスを物理アドレスにアドレス変換するための処理を行うメモリ管理部と、を有するデータ処理装置であって、
前記中央処理装置により前記メモリ管理部を介して設定された条件にしたがって前記回路モジュールが動作を開始する場合に、
前記回路モジュールは、前記中央処理装置による前記条件を設定する所定の命令の実行に応じて動作を開始するとともに、ストール信号をアサートし、
前記中央処理装置は、前記ストール信号がアサートされているとき命令の実行を保留する、データ処理装置。
【請求項２】
前記回路モジュールは、動作を開始するためのスタートビットが設定される制御レジスタを有し、
前記所定の命令は、前記メモリ管理部を介して前記制御レジスタのスタートビットを設定する命令である、請求項１記載のデータ処理装置。
【請求項３】
前記回路モジュールは、前記回路モジュールによる仮想アドレスを用いたアクセス制御に対する前記アドレス変換するための処理時のエラーに起因して、前記ストール信号をネゲートする、請求項２記載のデータ処理装置。
【請求項４】
前記エラーが発生した場合には、前記メモリ管理部は例外処理要求を発行し、前記回路モジュールは前記所定の命令に応じた動作を停止し、
前記中央処理装置は、前記例外処理要求に応じて前記エラーに対する例外処理を実行し、当該例外処理の完了後、前記回路モジュールの動作の再開する処理を実行する、請求項３記載のデータ処理装置。
【請求項５】
前記回路モジュールの動作の再開する処理は、前記所定の命令を再実行する処理である、請求項４記載のデータ処理装置。
【請求項６】
仮想アドレスを用いてアクセス制御を行う中央処理装置と、
物理アドレスによりアクセスされ、且つ仮想アドレスを用いてアクセス制御を行う回路モジュールと、
前記中央処理装置が出力する仮想アドレス及び前記回路モジュールが出力する仮想アドレスを物理アドレスにアドレス変換するための処理を行うメモリ管理部と、を有するデータ処理装置であって、
前記中央処理装置により前記メモリ管理部を介して設定された条件にしたがって前記回路モジュールが動作を開始する場合に、
前記回路モジュールは、前記中央処理装置による前記条件を設定する所定の命令の実行に応じて動作を開始し、
前記メモリ管理部は、前記所定の命令の実行に応じてストール信号をアサートし、
前記中央処理装置は、前記ストール信号がアサートされているとき命令の実行を保留する、データ処理装置。
【請求項７】
前記回路モジュールは、動作を開始するためのスタートビットが設定される制御レジスタを有し、
前記所定の命令は、前記メモリ管理部を介して前記制御レジスタのスタートビットを設定する命令である、請求項６記載のデータ処理装置。
【請求項８】
前記回路モジュールによる仮想アドレスを用いたアクセス制御に対する前記アドレス変換するための処理中にエラーが発生したとき、前記メモリ管理部は前記ストール信号をネゲートするとともに例外処理要求を発行し、
前記回路モジュールは、前記例外処理要求に応じて前記所定の命令に応じた動作を停止し、
前記中央処理装置は、前記例外処理要求に応じて前記エラーに対する例外処理を実行する、請求項７記載のデータ処理装置。
【請求項９】
前記例外処理の完了後、前記中央処理装置は、前記回路モジュールの動作を再開する処理を実行する、請求項８記載のデータ処理装置。
【請求項１０】
前記回路モジュールの動作の再開する処理は、前記所定の命令を再実行する処理である、請求項９記載のデータ処理装置。
【請求項１１】
前記例外処理において前記エラーを解消する処理が完了したら、前記メモリ管理部は、前記回路モジュールの動作を再開する処理を実行する、請求項８記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中央処理装置と周辺回路モジュールを備えるデータ処理装置に関し、特に周辺回路モジュールによる仮想アドレス空間を用いたアクセス制御に対応したデータ処理装置に適用して有効な技術に関する。
【背景技術】
【０００２】
近年、携帯電話機や携帯型ナビゲーション装置、業務用携帯端末等の小型の情報機器の高性能化や多機能化に伴い、これら情報機器のシステムの中核を担う大規模集積回路（ＬＳＩ）は、特定の処理を高速で実行するため、中央処理装置（ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ））とは別に専用処理回路モジュールを内蔵するようになってきている。前記専用処理回路モジュールとしては、例えば、画像データや音声データの圧縮・伸張処理等を実行する専用回路やＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送のためのＤＭＡコントローラ等がある。このような専用処理回路モジュールを内蔵したプロセッサシステムでは、メモリ保護及びメモリ利用の効率化のため、前記専用処理回路モジュールによる仮想アドレスを利用したアクセス制御を可能とするものがある。
【０００３】
前記専用処理回路モジュールによる仮想アドレス空間を利用したアクセス制御の一例として、特許文献１に開示がある。特許文献１のプロセッサシステムは、ＣＰＵと、ＤＭＡ転送のためのＤＭＡコントローラと、ＤＭＡ転送用アドレス変換器とを備え、ＤＭＡコントローラがＤＭＡ転送を行う際には、ＤＭＡ転送用アドレス変換器に予め格納しておいた仮想アドレスと物理アドレスの対応を示すアドレス変換情報を用いてアドレス変換を行う。これにより、プロセッサシステムにおいてＤＭＡコントローラが仮想アドレスを物理アドレスに変換する処理を無くし、ソフトウェアの処理速度の向上を図るものである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平５−１２０２０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前述の情報機器では更に、増大するソフトウェアの開発を効率化するため、複数のプログラムをマルチプロセスで動作させてプロセス毎に仮想空間を割り当て、プロセス間保護機能を備える汎用のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を採用するケースが増加している。しかしながら、このような汎用ＯＳは、前記専用処理回路モジュールの仮想アドレス空間を利用したアクセス制御に対応していない場合が多い。そのため、ＣＰＵに加え前記専用処理回路モジュールを内蔵したＬＳＩを備える情報機器が上記の汎用ＯＳを採用した場合、処理性能の低下やソフトウェア開発工数の増加、部分的に保護機能が働かないことによるソフトウェア的な安全性の低下等の問題が発生する可能性がある。例えば上記特許文献１のプロセッサシステムが前記プロセス毎に仮想空間を割り当てる構造の汎用ＯＳを採用した場合において、ＤＭＡコントローラによるＤＭＡ転送時にＯＳが別のプロセスに係る処理に切り替えると、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）に格納されるアドレス変換情報は、ＤＭＡ転送に係る情報から前記別のプロセスに係る情報に切替えられる。このとき、ＤＭＡコントローラとＣＰＵは並列に処理を行うことができるが、前記プロセッサシステムはＤＭＡ転送用アドレス変換器のアドレス変換情報を動的に更新する手段を有さず、また一般的にＣＰＵに内蔵されるメモリ管理ユニット（ＭＭＵ）とＤＭＡ転送用アドレス変換器が連携もしていないことから、ＭＭＵとＤＭＡ転送用アドレス変換器のアドレス変換情報が不一致となり、ＤＭＡコントローラが利用する仮想アドレス空間に対応する物理アドレス空間に不整合が生じる可能性がある。すなわち、このようなプロセッサシステムでは、ＯＳによって動的に割り当てられたメモリ領域に対しては仮想アドレスを用いたＤＭＡ転送を安全に行うことができない。上記の問題は、例えば、専用処理回路モジュールであるＤＭＡコントローラとＣＰＵがＭＭＵを共有するシステム構成とし、ＯＳがＭＭＵにおいて発生したアドレス変換ミスや保護違反等に対する例外処理をＣＰＵとＤＭＡコントローラを区別して実行できるようにすることで解決することが可能である。ＯＳにこのような処理を実行させるには、ＯＳのプログラムを大きく改変する必要がある。しかしながら、汎用ＯＳの改変は特に難易度が高く、また汎用ＯＳを改変する権利や動作保障の点において大きな困難を伴う。
【０００６】
本発明の目的は、ＯＳによる処理内容を大きく変更することなく、仮想アドレス空間を利用した安全なアクセス制御を可能とするデータ処理装置を提供することにある。
【０００７】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【０００９】
すなわち、データ処理装置は、物理アドレスによってアクセスされ、仮想アドレスを用いてアクセス制御を行う回路モジュールが、仮想アドレスを物理アドレスにアドレス変換するための処理を行うメモリ管理部を介して中央処理装置により設定された条件にしたがって動作を開始した場合、前記中央処理装置によるそのときの仮想アドレス空間と物理アドレス空間の対応を変更する処理を抑止する。
【発明の効果】
【００１０】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１１】
すなわち、データ処理装置は、ＯＳによる処理内容の大きな変更なしに仮想アドレス空間を利用した安全なアクセス制御が可能となる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施の形態１に係るマイクロプロセッサのブロック図である。
【図２】図２は、メモリ管理ユニット１６によるアドレス変換に用いられるＴＬＢ１６１の構成の一例を示す説明図である。
【図３】図３は、ＯＳによるＴＬＢミス例外処理の一例を示すフロー図である。
【図４】図４は、専用処理回路モジュール１１の内部構成の一例を示すブロック図である。
【図５】図５は、専用処理回路モジュール１１に処理を実行させる場合のタイミングチャートの一例である。
【図６】図６は、専用処理回路モジュール１１に処理を実行させる場合のＣＰＵコア部１０と専用処理回路モジュール１１の動作状態を示す説明図である。
【図７】図７は、実施の形態２に係るマイクロプロセッサのブロック図である。
【図８】図８は、実施の形態３に係るマイクロプロセッサのブロック図である。
【図９】図９は、実施の形態４に係るマイクロプロセッサのブロック図である。
【発明を実施するための形態】
【００１３】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１４】
〔１〕（回路モジュールが仮想空間を用いて動作するときＣＰＵはその仮想空間を変更しない（図１、図７、図８））
本発明の代表的な実施の形態に係るデータ処理装置（１、２、３）は、仮想アドレスを用いてアクセス制御を行う中央処理装置（１０）と、物理アドレスによりアクセスされ、且つ仮想アドレスを用いてアクセス制御を行う回路モジュール（１１、３１、４１）と、前記中央処理装置が出力する仮想アドレス及び前記回路モジュールが出力する仮想アドレスを物理アドレスにアドレス変換するための処理を行うメモリ管理部（１６、３６、４６）と、を有するデータ処理装置であって、前記中央処理装置により前記メモリ管理部を介して設定された条件にしたがって前記回路モジュールが動作を開始した場合、前記中央処理装置はそのときの仮想アドレス空間と物理アドレス空間の対応を変更する処理を抑止される。
【００１５】
これによれば、前記回路モジュールが動作している間はその前記回路モジュールが用いる仮想アドレス空間と物理アドレス空間の対応が変更されないから、前記回路モジュールが用いる仮想アドレス空間に対応する物理アドレス空間に不整合が生じることがない。
【００１６】
〔２〕（回路モジュールによるストール信号のアサートによりＣＰＵの処理停止（図１、図５））
項１のデータ処理装置において、前記回路モジュール（１１）は、前記中央処理装置による前記条件を設定する所定の命令の実行に応じて動作を開始するとともに、ストール信号（ｓｔｌｐ）をアサートし、前記中央処理装置は、前記ストール信号がアサートされているとき命令の実行を保留する。
【００１７】
前記ストール信号がアサートされている期間、前記中央処理装置が新たな命令フェッチを行わない。これにより、容易に前記仮想アドレス空間と物理アドレス空間の対応を変更する処理を抑止させることが可能となる。言い換えれば、ＯＳが積極的に関与することなく、前記仮想アドレス空間と物理アドレス空間の対応を変更する処理を抑止させることが可能となる。
【００１８】
〔３〕（スタートレジスタを設定する命令（図１））
項２のデータ処理装置において、前記回路モジュールは、動作を開始するためのスタートビットが設定される制御レジスタ（１１５１）を有し、前記所定の命令は、前記メモリ管理部を介して前記制御レジスタのスタートビットを設定する命令である。
【００１９】
〔４〕（ストール信号のネゲートの条件（図１、図４、図６））
項３のデータ処理装置において、前記回路モジュールは、前記回路モジュールによる仮想アドレスを用いたアクセス制御に対する前記アドレス変換するための処理時のエラーに起因して、前記ストール信号をネゲートする。
【００２０】
これによれば、前記中央処理装置は、命令の実行保留中の状態から解除されて例外処理を実行することが可能となる。
【００２１】
〔５〕（例外処理（図１、図６））
項４のデータ処理装置において、前記エラーが発生した場合には、前記メモリ管理部は例外処理要求（ｅｘｃｐ）を発行し、前記回路モジュールは前記所定の命令に応じた動作を停止し、前記中央処理装置は、前記例外処理要求に応じて前記エラーに対する例外処理を実行し、当該例外処理の完了後、前記回路モジュールの動作の再開する処理を実行する。
【００２２】
これによれば、ＯＳによる例外処理によって、結果として前記回路モジュールの動作におけるエラーが解消され、その動作の再開が可能となる。
【００２３】
〔６〕（ＣＰＵによる命令再実行により処理再開（図１、図４、図６））
項５のデータ処理装置において、前記回路モジュールの動作の再開する処理は、前記所定の命令を再実行する処理である。
【００２４】
これによれば、容易に前記回路モジュールに動作を再開させることができる。
【００２５】
〔７〕（ＭＭＵによるストール信号のアサートによりＣＰＵの処理停止（図７、図８））
項１のデータ処理装置において、前記回路モジュールは、前記中央処理装置による前記条件を設定する所定の命令の実行に応じて動作を開始し、前記メモリ管理部（３６，４６）は、前記所定の命令の実行に応じてストール信号（ｓｔｌｃ２）をアサートし、前記中央処理装置は、前記ストール信号がアサートされているとき命令の実行を保留する。
【００２６】
前記ストール信号がアサートされている期間、前記中央処理装置が新たな命令フェッチを行わない。これにより、容易に前記仮想アドレス空間と物理アドレス空間の対応を変更する処理を抑止させることが可能となる。
【００２７】
〔８〕（スタートレジスタを設定する命令（図２、図７、図８））
項７のデータ処理装置において、前記回路モジュールは、動作を開始するためのスタートビットが設定される制御レジスタを有し、前記所定の命令は、前記メモリ管理部を介して前記制御レジスタのスタートビットを設定する命令である。
【００２８】
これによれば、項３と同様に、前記回路モジュールによる動作中は、前記中央処理装置による前記制御レジスタのスタートビットを設定する処理が実行されている状態としてＯＳに認識させることができる。
【００２９】
〔９〕（例外処理（図７、図８））
項８のデータ処理装置において、前記回路モジュールによる仮想アドレスを用いたアクセス制御に対する前記アドレス変換するための処理中にエラーが発生したとき、前記メモリ管理部は前記ストール信号（ｓｔｌｃ２）をネゲートするとともに例外処理要求を発行し、前記回路モジュールは、前記例外処理要求に応じて前記所定の命令に応じた動作を停止し、前記中央処理装置は、前記例外処理要求に応じて前記エラーに対する例外処理を実行する。
【００３０】
これによれば、前記メモリ管理部が前記ストール信号をネゲートすることで、前記中央処理装置は命令の実行保留中の状態から解除されて例外処理を実行することが可能となる。また、ＯＳによる例外処理によって、結果として前記回路モジュールの動作におけるエラーが解消され、その動作の再開が可能となる。
【００３１】
〔１０〕（回路モジュールの処理再開（図７））
項９のデータ処理装置において、前記例外処理の完了後、前記中央処理装置は、前記回路モジュール（３１）の動作を再開する処理を実行する。
【００３２】
〔１１〕（ＣＰＵによる命令再実行により処理再開（図７））
項１０のデータ処理装置において、前記回路モジュールの動作の再開する処理は、前記所定の命令を再実行する処理である。
【００３３】
〔１２〕（ＭＭＵによる処理再開（処理再開信号ｒｇｍ）（図８））
項９のデータ処理装置において、前記例外処理において前記エラーを解消する処理が完了したら、前記メモリ管理部（４６）は、前記回路モジュール（４１）の動作を再開する処理を実行する。
【００３４】
例えばアドレス変換エラーに対する例外処理において、前記メモリ管理部はＴＬＢのアドレス変換情報の更新が完了したら前記回路モジュールに動作を再開させる。これよれば、例外処理における一連の処理が完了した後に前記回路モジュールに動作を再開させる場合に比べて、より早く前記回路モジュールの処理を再開させることが可能となる。
【００３５】
〔１３〕（第２のＴＬＢ（図９））
本発明の代表的な実施の形態に係るデータ処理装置（４）は、仮想アドレスを用いてアクセス制御を行う中央処理装置（１０）と、物理アドレスによりアクセスされ、且つ仮想アドレスを用いてアクセス制御を行う回路モジュール（１１）と、仮想アドレスを物理アドレスにアドレス変換するための第１アドレス変換対（１６１）を有し、前記第１アドレス変換対を用いてアドレス変換のための処理を行う第１メモリ管理部（５２）と、前記第１アドレス変換対の全部又は一部をエントリとする第２アドレス変換対（５０１）を有し、前記第２アドレス変換対を用いて前記回路モジュールが出力する仮想アドレスを物理アドレスにアドレス変換するための処理を実行する第２メモリ管理部（５０）と、を有するデータ処理装置であって、前記中央処理装置により前記第１メモリ管理部を介して設定された条件にしたがって前記回路モジュールが動作を開始した場合、前記中央処理装置はそのときの仮想アドレス空間と物理アドレス空間の対応を変更する処理を抑止される。
【００３６】
これによれば、項１と同様に、前記回路モジュールが用いる仮想アドレス空間に対応する物理アドレス空間に不整合が生じることがない。また、例えば前記中央処理装置の動作周波数よりも前記回路モジュールの動作周波数が低い場合において、一つのメモリ管理部が前記中央処理装置からのアクセスと前記回路モジュールからのアクセスに対してアクセス制御を行うこととすると、当該メモリ管理部は動作周波数の高い方の周波数に対応できるように設計する必要がある。これにより、当該メモリ管理部は低い動作周波数の前記回路モジュールの動作中であっても高い周波数に対応して設計された消費電力の多い回路を動作させる必要があり、発熱と消費電力の点で不利である。また、前記中央処理装置からのアクセスのみに対応して設計する場合と比較して前記メモリ管理部の回路規模が大きくなり、回路遅延の増大による最大動作周波数の低下が発生することで、性能面でも不利となる。そこで項１３に係るデータ処理装置のように前記第１メモリ管理部と前記回路モジュールからのアクセス制御のための前記第２メモリ管理部との２つのメモリ管理部を備えることで、前記第２メモリ管理部の動作周波数を前記回路モジュールに合わせて最適化すると共に、前記第１メモリ管理部の回路規模の増大を抑えて動作周波数の低下を防ぐことができるから、前記回路モジュールによる処理効率の向上に資する。
【００３７】
〔１４〕（第２ＭＭＵにおけるＴＬＢミス時の第１ＭＭＵによる処理）
項１３のデータ処理装置において、前記第２メモリ管理部は、前記回路モジュールによる仮想アドレスを用いたアクセス制御に対する前記アドレス変換するための処理中にアドレス変換に必要なエントリが見つからなかったとき、前記第１メモリ管理部に対しその旨を通知し、前記第１メモリ管理部は、前記通知に応じて前記第１アドレス変換対を検索し、検索した結果必要なエントリが見つかった場合には当該エントリを前記第２アドレス変換対に登録して前記第２メモリ管理部に対して再度アドレス変換のための処理を実行させ、検索の結果必要なエントリが見つからなかった場合には例外処理要求を発行する。
【００３８】
前記回路モジュールによるアクセスにおけるエラーに対する対応処理を、前記第２メモリ管理部でなく第１メモリ管理部に行わせることで、前記第２メモリ管理部の機能を簡素化し規模を小さくすることができる。
【００３９】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００４０】
≪実施の形態１≫
図１は、本発明の一実施の形態に係るマイクロプロセッサのブロック図である。
【００４１】
同図に示されるマイクロプロセッサ１は、例えば携帯情報端末用のマイクロプロセッサである。マイクロプロセッサ１は、図示されないＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＲＯＭ等の記憶装置、及び外部Ｉ／Ｏと接続されることにより、携帯情報端末の機能を実現する。
【００４２】
マイクロプロセッサ１は、ＯＳやアプリケーションプログラムの実行主体であるＣＰＵコア部１０と、ＣＰＵコア部１０に代わって所定の処理を実行する専用処理回路モジュール１１と、仮想アドレスと物理アドレスの間のアドレス変換とメモリ保護を実行するメモリ管理ユニット（ＭＭＵ）１６と、を有する。ＣＰＵコア部１０、専用処理回路モジュール１１、及びメモリ管理ユニット１６は、ＣＰＵアドレスバス（ｃａ）とＣＰＵデータバス（ｃｄ）から構成されるＣＰＵバス１７によって接続される。また、マイクロプロセッサ１は、その他の機能部として、キャッシュメモリ１５、外部バスコントローラ（ＢＳＣ）１４、タイマユニット（Ｔｉｍｅｒ）１３、及び割り込みコントローラ（ＩＮＴＣ）１２を備える。これらの機能部とメモリ管理ユニット１６及び専用処理回路モジュール１１は、内部アドレスバス（ｉａ）と内部データバス（ｉｄ）から構成される内部バス１８によって夫々接続される。
【００４３】
マイクロプロセッサ１では基本ソフトウェアであるオペレーティングシステム（ＯＳ）が利用される。ＯＳのプログラムはＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等の記憶装置に格納され、ＣＰＵコア部１０によって実行される。ＣＰＵコア部１０は、ＯＳのプログラムを実行することにより、複数のアプリケーションソフトウェアのスケジューリング、メモリ管理、及び外部Ｉ／Ｏの管理等の制御を行う。前記複数のアプリケーションソフトウェアはＯＳにより互いに独立した仮想アドレス空間が割り当てられ、その仮想アドレス空間を夫々用いて動作する。前記複数のアプリケーションソフトウェアは、ＣＰＵコア部１０によって実行されるが、ＣＰＵコア部１０はそのソフトウェアにおける処理の一部を専用処理回路モジュール１１によって実行させる。
【００４４】
ＣＰＵコア部１０及び専用処理回路モジュール１１からのアクセスは仮想アドレスによって行われ、そのアクセスはメモリ管理ユニット１６を経由して行われる。具体的には、ＣＰＵコア部１０と専用処理回路モジュール１１は、仮想アドレスをＣＰＵバス１７に出力することによりアクセス要求を発行する。アクセス要求を受け取ったメモリ管理ユニット１６は、当該アクセス要求に係る仮想アドレスを対応する物理アドレスに変換する。そして、メモリ管理ユニット１６は、当該アクセス要求を物理アドレスを伴って内部バス１８上に出力することにより、専用処理回路モジュール１１、割り込みコントローラ１２、外部バスコントローラ１４、及びタイマユニット１３に対してアクセス要求を伝達する。
【００４５】
以下、マイクロプロセッサ１の各機能部について詳細に説明する。
【００４６】
ＣＰＵコア部１０は、メモリ管理ユニット１６を経由して各機能部の制御用のレジスタをアクセスすることにより、各機能部の制御を行う。例えばＣＰＵコア部１０が、専用処理回路モジュール１１に特定の処理を実行させる命令を実行した場合には、ＣＰＵコア部１０はＣＰＵバス１７上に当該命令で指定された仮想アドレスを出力することによりアクセス要求を行う。当該アクセス要求を受け取ったメモリ管理ユニット１６は当該アクセス要求をアドレス変換した物理アドレスを伴って内部バス１８上に出力する。内部バス１８からアクセス要求を受け取った専用処理モジュール１１は、後述する制御レジスタ１１５１に所定の値が設定される。以上により専用処理回路モジュール１１は処理を開始する。
【００４７】
また、ＣＰＵコア部１０は、外部バスコントローラ１４を経由して外部アドレスバス（ｅａ）と外部データバス（ｅｄ）から構成される外部バス１９に接続されたＲＡＭやＲＯＭ等の周辺回路にアクセスすることにより、ソフトウェアの実行に必要な命令の読み出しや各種データの入出力を行う。更にＣＰＵコア部１０は、前記割り込み信号ｉｎｔに応じて割り込み処理を実行し、メモリ管理ユニット１６からの例外処理要求信号（ｅｘｃｐ）に応じて例外処理を実行する。例外処理の詳細な処理内容については後述する。なお、上記割り込み処理や例外処理は特権モードで実行される。
【００４８】
外部バスコントローラ１４は、内部バス１８に接続されると共に外部バス１９に接続され、外部バス１９を介してマイクロプロセッサ１とＲＡＭやＲＯＭ等の外付けの記憶装置及びその他外部Ｉ／Ｏとの間のデータ転送のための制御を行う。
【００４９】
タイマユニット１３は、一定間隔で割り込みコントローラ１２に対してタイマ割り込みを要求するための信号（ｉｎｔｔ）を出力する。
【００５０】
割り込みコントローラ１２は、専用処理回路モジュール１１からの割り込み要求（ｉｎｔｐ）、タイマユニット１３からの割り込み要求（ｉｎｔｔ）、及び外部装置等からの割り込み要求（ｉｎｔｏ）を入力して調停を行い、ＣＰＵコア部１０に対して割り込み処理の要求のための割り込み信号（ｉｎｔ）を出力する。具体的には、割り込みコントローラ１２は、夫々の割り込み要求（ｉｎｔｐ信号、ｉｎｔｔ信号、ｉｎｔｏ信号）の入力状態と、ＣＰＵコア部１０が割り込み可能であるか否かを示す状態と、受付優先レベルとに基づいて判定し、割り込みの受付条件が満たされた場合にＣＰＵコア部１０に割り込み信号（ｉｎｔ）を出力する。
【００５１】
メモリ管理部１６は、前述したように、ＣＰＵバス１７を介してＣＰＵコア部１０と専用処理回路モジュール１１に接続され、内部バス１８を介して専用処理回路モジュール１１、割り込みコントローラ１２、外部バスコントローラ１４、及びタイマユニット１３に接続される。更にメモリ管理ユニット１６は、キャッシュアドレスバス（ｍａ）とキャッシュデータバス（ｍｄ）から構成されるキャッシュバス２０によってキャッシュメモリ１５と接続される。キャッシュメモリ１５に対するアクセスは仮想アドレスと物理アドレスの双方が対応可能とされる。
【００５２】
メモリ管理ユニット１６は、外部記憶装置（ＲＡＭ等）に格納されるアドレス変換テーブルの情報の一部が格納されるＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）１６１を有し、ページングによる仮想アドレス空間と物理アドレス空間の管理を行う。具体的には、メモリ管理ユニット１６は、ＣＰＵコア部１０又は専用処理回路モジュール１１からＣＰＵバス１７を介して仮想アドレスよるアクセス要求を受け取ると、ＴＬＢ１６１を検索して当該アクセス要求に係る仮想アドレスに対応する物理アドレスに変換する。そして内部バス１８に対して変換された物理アドレスによるアクセス要求を生成する。ＴＬＢ１６１に対応するエントリがない等のエラーが発生した場合は、ＴＬＢミス例外等の例外処理をＣＰＵコア部１０に要求する。アドレス変換の詳細な内容は後述する。
【００５３】
また、メモリ管理ユニット１６は、ＣＰＵコア部１０からのアクセス要求を受け取ったとき、ＣＰＵコア部１０に対してストール信号（ｓｔｌｃ）をアサートする。ストール信号ｓｔｌｃは、アドレス変換の結果を得るのに必要な所定期間アサートされる。これにより、ＣＰＵコア部１０は後続の命令の実行を保留する。具体的には、メモリ管理ユニット１６はＣＰＵコア部１０からメモリ管理ユニット１６にアクセス要求が与えられた後、ストール信号ｓｔｌｃを前記所定期間アサートする。その期間に専用処理回路モジュール１１から後述するストール信号ｓｔｌｐがアサートされた場合には、メモリ管理ユニット１６は、当該ストール信号ｓｔｌｐがネゲートされるまでストール信号ｓｔｌｃをアサートし続ける。一方、専用処理回路モジュール１１によりストール信号ｓｔｌｐがアサートされなかった場合には、メモリ管理ユニット１６は、前記所定期間の経過後ストール信号ｓｔｌｃをネゲートする。ストール信号ｓｔｌｃをアサートするか否かの判断は、メモリ管理ユニット１６が受け取ったアクセス要求に対応する、ＴＬＢ１６１内のエントリに格納されているメモリページ属性情報、仮想アドレス、又は物理アドレス等に基づく条件判定により行われる。なお、何らかの原因でメモリ管理ユニット１６がＣＰＵバス１７上のリード・ライト要求を直ちに受理しなかった場合、結果的にＣＰＵコア部１０や専用処理回路モジュール１１の処理が一時停止する可能性があるが、これはｓｔｌｃ信号を用いた命令の完了と当該命令に係る処理の同期化のための制御とは異なる。
【００５４】
ここで、メモリ管理ユニット１６におけるアドレス変換と例外処理について詳細に説明する。
【００５５】
図２は、メモリ管理ユニット１６によるアドレス変換に用いられるＴＬＢ１６１の構成の一例である。
【００５６】
同図に示されるＴＬＢ１６１はメモリ管理ユニット１６に内蔵され、６４個のエントリを有する。夫々のエントリには、８ｂｉｔのアドレス空間識別子ＡＳＩＤ［７：０］、２２ｂｉｔの仮想ページ番号ＶＰＮ［３１：１０］、有効ビットＶ、１９ｂｉｔの物理ページ番号ＰＰＮ［２８：１０］、２ｂｉｔのページサイズビットＳＺ［１：０］、共有状態ビットＳＨ、キャッシュ使用ビットＣ、２ｂｉｔのアクセス権ビットＰＲ［１：０］、ダーティビットＤ、及びキャッシュライトスルービットＷＴ等の情報が格納される。前記情報の夫々の詳細は以下である。前記アドレス空間識別子ＡＳＩＤは、論理ページをアクセスできるプロセスを示す。前記仮想ページ番号ＶＰＮは、論理アドレスの上位２２ｂｉｔを表す。有効ビットＶは、当該エントリが有効であるか否かを表し、例えば“１”のときは有効、“０”のとき無効を夫々示す。物理ページ番号ＰＰＮは、物理アドレスの上位１９ｂｉｔを表す。ページサイズビットＳＺはページのサイズを表す。共有状態ビットＳＨは、プロセス間でページが共有されているか否かを表し、例えば“０”のとき共有なし、“１”のとき共有を夫々示す。キャッシュ使用ビットＣは、ページがキャッシュメモリ１５からキャッシング可能か否かを表し、例えば“０”のときキャッシング不可能、“１”のときキャッシング可能を夫々示す。アクセス権ビットＰＲは、ＣＰＵコア部１０の各動作モードにおけるアクセス権の有無を表す。例えば“００”は特権モードで読み出しのみ可能、“０１”は特権モードで読み出し／書き込み可能、“１０”は特権／ユーザモードで読み出しのみ可能、“１１”は特権／ユーザモードで読み出し／書き込み可能、であることを示す。ダーティビットＤは、ページに書き込みが行われたか否かを表し、例えば“０”のとき書き込みが行われていないことを示し、“１”のとき書き込みが行われたことを示す。キャッシュライトスルービットＷＴは、キャッシュメモリ１５への書き込みモードを表し、例えば“０”のときコピーバックモード、“１”のときライトスルーモードであることを示す。
【００５７】
メモリ管理ユニット１６によるＴＬＢ１６１を用いたアドレス変換は以下のように行われる。
【００５８】
先ずメモリ管理ユニット１６は、ＣＰＵコア部１０又は専用処理回路モジュール１１からＣＰＵバス１７を介してアクセス要求を受け付けると、ＴＬＢ１６１を参照する。そして、有効ビットＶが“１”である全てのエントリに対してページサイズビットＳＺで指定されるページサイズに対応するビット範囲の仮想ページ番号ＶＰＮとアクセス要求に係る仮想アドレスの上位アドレスとの比較を行う。ここでは、例えばＳＺ［１］＝０及びＳＺ［０］＝１の場合はページサイズが４ｋＢとし、またＣＰＵアドレスバスｃａは３２ｂｉｔのバスであるとしたとき、前記比較の対象は、仮想ページ番号ＶＰＮ〔３１：１２〕とＣＰＵアドレスバスｃａ［３１：１２］である。
【００５９】
次にメモリ管理ユニット１６は、有効ビットＶが“１”であるエントリのうち共有状態ビットＳＨが“０”であるエントリに対しては、前述の仮想ページ番号ＶＰＮとの比較に加えて、メモリ管理ユニット１６の内部レジスタに設定されているアドレス空間識別子ＣＩＤ［７：０］と該当エントリのＡＳＩＤ［７：０］の比較を行う。これらの比較の結果、不一致であった場合は、メモリ管理ユニット１６は内部に備えるＦＶＡ（Ｆａｉｌｅｄ  Ｖｉｒｔｕａｌ  Ａｄｄｒｅｓｓ）レジスタ１６２にエラーの原因となった仮想アドレスを保存すると共に、ＴＬＢミスとしてＣＰＵコア部１０に対して例外処理要求信号（ｅｘｃｐ）を用いてＴＬＢミス例外処理を要求する。一方、一致した場合には、メモリ管理ユニット１６はアクセス権ビットＰＲ［１：０］で指定されたアクセス権を判別する。判別の結果、現在のアクセス要求が許可されない場合は、メモリ管理ユニット１６はＦＶＡレジスタ１６２にエラーの原因となった仮想アドレスを保存すると共に、ｅｘｃｐ信号を用いてページ保護違反例外処理をＣＰＵコア部１０に対して要求する。一方、アクセス権の判別の結果、現在のアクセス要求が許可されるアクセスであった場合には、メモリ管理ユニット１６はダーティビットＤを判別する。その結果、アクセス要求が書き込みの場合でダーティビットＤが“０”のときはｅｘｃｐ信号を用いて初期ページ書き込み例外処理を要求する。一方ダーティビットＤが“１”の場合には、アクセス要求が読み出しであるか書き込みであるかに関わらずアドレス変換可能と判断され、メモリ管理ユニット１６は、受け取ったアクセス要求を変換した物理アドレスを伴って内部バス１８上に出力する。物理アドレスへの生成方法は以下である。例えばＳＺ［１］＝０及びＳＺ［０］＝１の場合、物理ページ番号ＰＰＮ［２８：１２］とＣＰＵアドレスバスｃａの下位アドレス［１１：０］を連結した２９ｂｉｔの物理アドレス［２８：０］が生成される。
【００６０】
なお、アクセス要求に係る仮想アドレスの範囲にキャッシュの使用が指定されている場合（キャッシュ使用ビットＣが“１”の場合）は、メモリ管理ユニット１６は上記の処理を行う前にキャッシュメモリ１５の検索を行う。検索の結果、キャッシュミスが発生したとき、又はキャッシュの動作モードがライトスルーである場合の書き込み発生であるとき、メモリ管理ユニット１６は上記の方法により物理アドレスを生成し、内部バス１８にアクセス要求を出力する。
【００６１】
次に、ＣＰＵコア部１０におけるＴＬＢミス等のエラーに対する例外処理について説明する。
【００６２】
前述のようにメモリ管理ユニット１６によるページングに係る処理中に、ＴＬＢミス、初期ページ書き込み、又はページ保護違反等のエラーが発生し、ソフトウェアによる当該処理への介入が必要になった場合には、メモリ管理ユニット１６は、ＦＶＡレジスタ１６２にエラーの原因となった仮想アドレスを保存すると共に、例外処理要求信号（ｅｘｃｐ）によりＣＰＵコア部１０に対して例外処理を要求する。例外処理要求信号ｅｘｃｐを受け取ったＣＰＵコア部１０は、ＯＳによる制御に移行し、例えばプログラムカウンタ（ＰＣ）、ステータスレジスタ（ＳＲ）の内容等をそれぞれ退避用のレジスタ等に退避させるとともに、メモリ管理ユニット１６のＦＶＡレジスタ１６２を参照してＴＬＢミスを発生させた仮想アドレスとプロセスを特定し、例外処理ルーチンを実行する。以下、ＴＬＢミス例外が発生した場合の例外処理を一例として、ＯＳによる例外処理の流れを説明する。
【００６３】
図３は、ＯＳによるＴＬＢミス例外処理の一例を示すフロー図である。
【００６４】
ＣＰＵコア部１０が、メモリ管理ユニット１６から例外処理要求信号ｅｘｃｐを受け取ると、ＯＳによるＴＬＢミス例外処理が開始される（Ｓ１０１）。ＣＰＵコア部１０は、ＴＬＢミスの原因となった仮想アドレスの情報をメモリ管理ユニット１６の内部のレジスタから読み出し、ＯＳの管理しているページテーブル情報から対応するページエントリを検索する（Ｓ１０２）。ＣＰＵコア部１０は、当該仮想アドレスに対応するページエントリの有無を判断し（Ｓ１０３）、対応するページエントリが見つからなかった場合には、ＣＰＵコア部１０はＴＬＢミス例外処理を中断する（Ｓ１１１）。一方、対応するページエントリが見つかった場合には、ＣＰＵコア部１０は当該ページエントリから仮想ページの属性情報を読み出す（Ｓ１０４）。そして、ＣＰＵコア部１０は、読み出した仮想ページの属性情報に基づいて現在のプロセスに仮想ページへのアクセスが許可されているかを判断する（Ｓ１０５）。アクセスが許可されていない場合には、ＣＰＵコア部１０はＴＬＢミス例外処理を中断する（Ｓ１１１）。一方、アクセスが許可されている場合には、ＣＰＵコア部１０は、当該ページエントリに物理メモリが割り当てられているか否かを判別する（Ｓ１０６）。当該ページエントリに物理メモリが割り当てられている場合には、ＣＰＵコア部１０は、ＴＬＢ１６１に当該ページエントリの情報を登録し、ＴＬＢミスを起こした命令のアドレスから処理を再開させる（Ｓ１０９）。一方、物理メモリが割り当てられていない場合には、割り当てようとする物理メモリをページエントリに登録可能か否かを判別する（Ｓ１０７）。可能でない場合には、ＴＬＢミス例外処理を中断する（Ｓ１１１）。可能な場合には、仮想アドレスに物理アドレスを割り当てて該当するページエントリを更新する（Ｓ１０８）。その後、ＣＰＵコア部１０は当該ページエントリの情報をＴＬＢ１６１に登録し、ＴＬＢミスを起こした命令のアドレスから処理を再開させる（Ｓ１０９）。具体的には例外処理の完了後、ＣＰＵコア部１０は、前記退避用のレジスタ等に退避した内容をプログラムカウンタとステータスレジスタ等に再設定して例外処理から復帰し、エラーを発生させた命令を再実行することにより処理を再開させる。以上の処理により、ＴＬＢミス例外処理が終了する（Ｓ１１０）。
【００６５】
次に、専用処理回路モジュール１１について説明する。
【００６６】
専用処理回路モジュール１１は、ＣＰＵコア部１０に代わって特定の処理を実行する。専用処理回路モジュール１１は、例えばＤＭＡコントローラや、音声データや画像データの圧縮、伸張、暗号処理、画像認識等の処理を実行するアクセラレータである。前述したように、専用処理回路モジュール１１はＣＰＵバス１７と内部バス１８に夫々接続され、内部バス１８から物理アドレスによってアクセスされるとともに、仮想アドレスによってＣＰＵバス１７を介して他の機能部に対してアクセスする。例えば、専用処理回路モジュール１１は、ＣＰＵコア部１０によりメモリ管理ユニット１６を介して内部バス１８経由で動作の制御が行われる。一方、専用処理回路モジュール１１が例えば外部のＲＡＭにアクセスする場合には、ＣＰＵバス１７からメモリ管理ユニット１６を介してＲＡＭにアクセスする。このように専用処理回路モジュール１１からのアクセスに対してもメモリ管理ユニット１６を用いるのは、専用処理回路モジュール１１のアクセス要求に対してもメモリ管理機能やメモリ保護機能を適用するためである。
【００６７】
図４は、専用処理回路モジュール１１の内部構成の一例を示すブロック図である。
【００６８】
同図に示されるように、専用処理回路モジュール１１は、ＣＰＵバス調停部１１１、リード要求生成部１１２、ライト要求生成部１１３、データ処理部１１４、及び制御部１１５を備える。データ処理部１１４は、入力されたデータに対して各種のデータ処理を行う。例えば、専用処理回路モジュール１１が画像処理用のデータ処理装置である場合には、データ処理部１１４は画像データの圧縮等のデータ処理を実行する。
【００６９】
リード要求生成部１１２は、データ処理部１１４に入力するデータをＣＰＵバス１７経由で外部記憶装置（ＲＡＭやＲＯＭ）から読み出すためのリード要求（ｒｒｅｑ）を生成する。ライト要求生成部１１３は、データ処理部によるデータ処理結果に係るデータをＣＰＵバス１７経由で前記外部記憶装置に書き込むためのライト要求（ｗｒｅｑ）を生成する。ＣＰＵバス調停部１１１は、リード要求生成部１１２とライト要求生成部１１３から出力されたリード要求ｒｒｅｑ及びライト要求ｗｒｅｑを調停し、ＣＰＵバス１７へのリード・ライト要求の発行と、当該要求に係るデータ（ｒｄａｔａ、ｗｄａｔａ）の転送を制御する。
【００７０】
制御部１１５は、ＣＰＵバス調停部１１１、リード要求生成部１１２、ライト要求生成部１１３、及びデータ処理部１１４の統括的な制御を行う。制御部１１５は、アクセス要求判定部１１５０、制御レジスタ１１５１、制御信号生成部１１５２、及びストール要求生成部１１５３を備える。
【００７１】
制御レジスタ１１５１は、ＣＰＵコア部１０から与えられる専用処理回路モジュール１１の制御のためのコマンドやステータス、その他各種パラメータが設定されるレジスタである。具体的には、制御レジスタ１１５１は、専用処理回路モジュール１１による動作の可否を示すスタートビットを有し、例えばスタートビットに“１”が設定されると専用処理回路モジュール１１の動作が可能とされ、“０”が設定されると動作停止とされる。制御レジスタ１１１５１は、アクセス要求判定部１１５０及び制御信号生成部１１５２により設定可能とされる。
【００７２】
アクセス要求判定部１１５０は、内部バス１８から与えられたアクセス要求に応じて制御レジスタ１１５１の値を設定する。例えば、ＣＰＵコア部１０からメモリ管理ユニット１６を介して、専用処理回路モジュール１１による処理の開始を指示するアクセス要求が与えられた場合、アクセス要求判定部１１５０は、アクセス要求によって指定された物理アドレスの情報に基づいて制御レジスタ１１５１を選択し、スタートビットに“１”を設定する。更にアクセス要求判定部１１５０は、スタートビットに“１”が設定されているとき、そのことを示す信号（ｍａｔｃｈ）をアサートし、スタートビットに“０”が設定されているとき、ｍａｔｃｈ信号をネゲートする。
【００７３】
制御信号生成部１１５２は、制御レジスタ１１５１の設定値や例外処理要求ｅｘｃｐに基づいて、データ処理部１１４等の各機能部の動作を制御し、必要に応じて割り込み要求（ｉｎｔｐ）を出力する。制御信号生成部１１５２の具体的な動作内容は以下である。例えば、アクセス要求判定部１１５０により制御レジスタ１１５１のスタートビットに“１”が設定されると、制御信号生成部１１５２は、制御レジスタ１１５１に設定されているステータスや各種パラメータの値に応じた処理をデータ処理部１１４に実行させる。その後、データ処理部１１４による所定の処理単位の処理が完了したら、制御信号生成部１１５２は、制御レジスタ１１５１のスタートビットに“０”を設定する。ここで、前記所定の処理単位の処理とは、例えば専用処理回路モジュール１１がＤＭＡコントローラである場合は、データ処理部１１４による１パケット分のデータ転送に係る処理等であり、専用処理回路モジュール１１が画像処理用のデータ処理装置の場合は、データ処理部１１４による１ブロック分の画像データのデータ処理等である。また、メモリ管理ユニット１６から例外処理要求ｅｘｃｐが与えられると、制御信号生成部１１５２はＣＰＵバス調停部１１１を制御してストール信号ｓｔｌｐをネゲートさせるための信号（ｍｉｓｓ）を出力させるとともに、データ処理部１１４を制御して処理を中断させ、制御レジスタ１１５１のスタートビットに“０”を設定する。このとき、制御レジスタ１１５のステータスやパラメータ等の値は、例えばデータ処理部１１４の処理が中断される直前の値が保持される。更に制御信号生成部１１５２は、データ処理部１１４による処理が完了した場合や処理中にエラーが発生した場合には、割り込み要求ｉｎｔｐを出力してＣＰＵコア部１０に対して通知を行う。
【００７４】
ストール要求生成部１１５３は、ｍｉｓｓ信号及びｍａｔｃｈ信号を入力し、ＣＰＵコア部１０の命令実行を中断させるためのストール信号ｓｔｌｐを出力する。ストール信号ｓｔｌｐは、ＣＰＵコア部１０における命令の完了と、当該命令に係る専用処理回路モジュール１１の処理の完了を同期させるための信号である。具体的には、ストール要求生成部１１５３は、アクセス要求判定部１１５０により制御レジスタ１１５１のスタートビットに“１”が設定されてｍａｔｃｈ信号がアサートされたら、ストール信号ｓｔｌｐをアサートする。一方、ストール信号ｓｔｌｐがアサートされているときにＣＰＵバス調停部１１１によってｍｉｓｓ信号がアサートされたら、ストール信号ｓｔｌｐをネゲートする。これによれば、専用処理回路モジュール１１の動作中はＣＰＵコア部１０の新たな命令実行は保留され、専用処理回路モジュール１１の動作中にＴＬＢミス等のエラーが発生したら、ＣＰＵコア部１０の新たな命令実行の保留状態が解除される。
【００７５】
ここで、ＣＰＵコア部１０が専用処理回路モジュール１１を制御して処理を実行させる場合のＣＰＵコア部１０、メモリ管理ユニット１６、及び専用処理回路モジュール１１の動作について、図５及び図６を用いて詳細に説明する。
【００７６】
図５は、ＣＰＵコア部１０が専用処理回路モジュール１１を制御して処理を実行させる場合のタイミングチャートの一例である。同図には、ＣＰＵコア部１０からＣＰＵバス１７上に出力された仮想アドレスと、ストール信号ｓｔｌｃと、メモリ管理ユニット１６から内部バス１８上に出力された物理アドレスと、ストール信号ｓｔｌｐの所定のタイミングに応じた状態が示される。なお、同図ではストール信号ｓｔｌｃ及びｓｔｌｐをアクティブ・ロー（ａｃｔｉｖｅ  ｌｏｗ）の信号として表示している。
【００７７】
先ず、同図の参照符号５０１に示されるタイミングにおいて、例えばＣＰＵコア部１０が外部記憶装置（ＲＡＭ）に対するアクセス要求を発行すると、当該アクセス要求で指定される仮想アドレスＡがＣＰＵバス１７上に出力される。当該アクセス要求を受け取ったメモリ管理ユニット１６は、例えば参照符号５０２に示されるタイミングにおいて、ストール信号ｓｔｌｐをアサートするとともに仮想アドレスＡを物理アドレスＰＡに変換し、物理アドレスＰＡを内部バス１８上に出力することで外部バスコントローラ１４に対してアクセス要求を伝達する。この場合、当該アクセスの対象が専用処理回路モジュール１１ではないため、ストール信号ｓｔｌｐはネゲートされたままとなる。その後ストール信号ｓｔｌｃがアサートされてから一定時間が経過したタイミング５０３において、メモリ管理ユニット１６がストール信号ｓｔｌｃをネゲートする。
【００７８】
次にタイミング５０４において、ＣＰＵコア部１０が専用処理回路モジュール１１に対する新たなアクセス要求を発行すると、当該アクセス要求で指定される仮想アドレスＢがＣＰＵバス１７上に出力される。当該アクセス要求を受け取ったメモリ管理ユニット１６は、タイミング５０５において、ストール信号ｓｔｌｃをアサートするとともに、仮想アドレスＢを物理アドレスＰＢに変換し、物理アドレスＰＢを内部バス１８上に出力することでアクセス要求を伝達する。当該アクセス要求を受け取った専用処理回路モジュール１１は、タイミング５０６においてアクセス要求に係るデータ処理等を実行するとともに、ストール信号ｓｔｌｐをアサートする。メモリ管理ユニット１６は、ストール信号ｓｔｌｐがアサートされたのを受けてストール信号ｓｔｌｃを引き続きアサートする。その後タイミング５０７において、専用処理回路モジュール１１による処理が完了したら、専用処理回路モジュール１１は割り込み要求ｉｎｔｐを出力するとともに、ストール信号ｓｔｌｐをネゲートする。これにより、ＣＰＵコア部１０の命令実行の保留状態が解除され、新たな命令実行が可能な状態となる。
【００７９】
図６は、ＣＰＵコア部１０が専用処理回路モジュール１１を制御して処理を実行させる場合のＣＰＵコア部１０と専用処理回路モジュール１１の動作状態を示す説明図である。
【００８０】
ステップ２０１において、専用処理回路モジュール１１に処理を実行させるため、ＣＰＵコア部１０は専用処理回路モジュール１１における制御レジスタ１１５１を設定する命令を実行する。当該命令の実行により、メモリ管理ユニット１６を介して専用処理回路モジュール１１にアクセス要求が発行される。これを受けた専用処理回路モジュール１１のアクセス要求判定部１１５０は、制御レジスタ１１５１を選択し、スタートビットに“１”を設定する。これにより専用処理回路モジュール１１は動作を開始するとともにストール信号ｓｔｌｐをアサートし、ＣＰＵコア部１０の新たな命令実行が保留される。ステップ２０２において、専用処理回路モジュール１１の動作中にＴＬＢミスが発生するとメモリ管理ユニット１６から例外処理要求ｅｘｃｐが出力される。例外処理要求ｅｘｃｐを受けた専用処理回路モジュール１１の制御信号生成部１１５２は、データ処理部１１４において実行中の処理を中断させ、制御レジスタ１１５１のスタートビットに“０”を設定する。これによりストール信号ｓｔｌｐがネゲートされ、ＣＰＵコア部１０は命令実行の保留状態から解放されてＯＳによる制御に移行し、例外処理を実行する。そして、ステップ２０３において例外処理が完了したら、ＣＰＵコア部１０は例外処理を起こした命令を再実行する。当該命令の再実行により、メモリ管理ユニット１６を介して専用処理回路モジュール１１にアクセス要求が発行され、これを受けた専用処理回路モジュール１１のアクセス要求判定部１１５０は、制御レジスタ１１５１のスタートビットに“１”を設定する。そして、専用処理回路モジュール１１の制御信号生成部１１５２は、中断したときのステータスに基づいてデータ処理部１１４に処理を実行させる。これにより、専用処理回路モジュール１１は中断したところから処理を再開することができる。また、スタートビットに“１”が設定されることにより、アクセス要求判定部１１５０はｍａｔｃｈ信号をアサートし、その結果ストール信号ｓｔｌｐがアサートされる。これによりＣＰＵコア部１０は新たな命令実行を保留する。
【００８１】
再度ＴＬＢミスが発生した場合には、ステップ２０２及びステップ２０３と同様の処理が実行される（Ｓ２０４、Ｓ２０５）。そして、ステップ２０６において、専用処理回路モジュール１１による処理が完了したら、専用処理回路モジュール１１は割り込み要求ｉｎｔｐを出力するとともにスタートビットに“０”を設定する。これにより、割り込みコントローラ１２からＣＰＵコア部１０に対して割り込み信号ｉｎｔが与えられ、ＣＰＵコア部１０は、専用処理回路モジュール１１による処理を実行させるための命令の終了処理を行う。
【００８２】
以上より実施の形態１に係るマイクロプロセッサ１では、専用処理回路モジュール１１が仮想アドレスを用いて動作を行っている場合はストール信号ｓｔｌｃ及びｓｔｌｐがアサートされることにより、ＣＰＵコア部１０は動作を中断し、新たな命令フェッチを行わない。これにより、専用処理回路モジュール１１の動作中に専用処理回路モジュール１１が用いる仮想アドレス空間と物理アドレス空間の対応が変更されないから、専用処理回路モジュール１１が用いる仮想アドレス空間に対応する物理アドレス空間に不整合が生じることがない。また、専用処理回路モジュール１１の動作中に当該動作に起因するＴＬＢミス等のエラーが発生した場合であっても、ＣＰＵコア部１０はエラーを発生させた命令とエラーを発生させた仮想アドレスとを特定することができるから、ＣＰＵコア部１０は当該エラーに係る例外処理を実行し、その例外処理が完了した後にエラーを発生させた命令を再実行することにより、中断した専用処理回路モジュール１１の処理を再開させることができる。以上により、実施の形態１に係るマイクロプロセッサ１によれば、専用処理回路モジュール１１の仮想アドレス空間を用いた処理を安全に行うことができるから、ＯＳを改変する必要はない。
【００８３】
≪実施の形態２≫
実施の形態１に係るマイクロプロセッサ１では、専用処理回路モジュール１１が、専用処理回路モジュール１１の動作中にＣＰＵコア部１０の新たな命令実行を保留させるための機能を備えたが、実施の形態２に係るマイクロプロセッサ２では、メモリ管理ユニット３６がその機能を備える。
【００８４】
図７は、実施の形態２に係るマイクロプロセッサ２のブロック図である。
【００８５】
同図に示されるマイクロプロセッサ２は、例えば携帯情報端末用のマイクロプロセッサである。マイクロプロセッサ２は、図示されないＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＲＯＭ等の記憶装置、及び外部Ｉ／Ｏと接続されることにより、携帯情報端末の機能を実現する。同図に示されるマイクロプロセッサ２の構成要素のうち、実施の形態１に係るマイクロプロセッサ１と同様の構成要素には同一の符号を付して、その詳細な説明を省略する。
【００８６】
図７に示される専用処理回路モジュール３１は、実施の形態１に係る専用処理回路モジュール１１と同様にＣＰＵコア部１０に代わって特定の処理を実行するアクセラレータ等であり、専用処理回路モジュール１１からストール信号ｓｔｌｐを生成するストール要求生成部１１５３を取り除いた構成である。
【００８７】
メモリ管理ユニット３６は、実施の形態１に係るメモリ管理ユニット１６と同様にＴＬＢ１６１及びＦＶＡレジスタ１６２と、その他図示されないアドレス変換に必要な機能部を有する。更にメモリ管理ユニット３６は、ストール要求生成部３６３を有する。ストール要求生成部３６３は、ＣＰＵコア部１０の新たな命令実行を保留するためのストール信号ｓｔｌｃ２を出力する。
【００８８】
ここで、ＣＰＵコア部１０が専用処理回路モジュール３１を制御して処理を実行させる場合のＣＰＵコア部１０、メモリ管理ユニット３６、及び専用処理回路モジュール３１の動作について詳細に説明する。
【００８９】
先ず、専用処理回路モジュール３１に処理を実行させるため、ＣＰＵコア部１０は専用処理回路モジュール３１における制御レジスタ１１５１を設定する命令を実行する。当該命令の実行により、専用処理回路モジュール３１に対するアクセス要求が発行され、当該アクセス要求で指定される仮想アドレスがＣＰＵバス１７上に出力される。当該アクセス要求を受け取ったメモリ管理ユニット３６は、ストール要求生成部３６３によりストール信号ｓｔｌｃ２をアサートするとともに、当該アクセス要求によって指定された仮想アドレスを物理アドレスに変換し、当該アクセス要求に伴って内部バス１８上に出力することでアクセス要求を伝達する。これを受け取った専用処理回路モジュール３１のアクセス要求判定部１１５０が制御レジスタ１１５１を選択して、スタートビットに“１”を設定する。これにより専用処理回路モジュール３１は動作を開始する。メモリ管理ユニット３６におけるストール要求生成部３６３は、アクセス要求を専用処理回路モジュール３１に伝達した後もストール信号ｓｔｌｃ２を引き続きアサートする。これにより、ＣＰＵコア部１０は新たな命令実行を保留する。
【００９０】
専用処理回路モジュール３１のアクセス要求に係るアドレス変換においてＴＬＢミスが発生すると、メモリ管理ユニット３６は例外処理要求ｅｘｃｐを出力するとともに、ストール要求生成部３６３によりストール信号ｓｔｌｃ２をネゲートする。例外処理要求ｅｘｃｐを受け取った専用処理回路モジュール３１の制御信号生成部１１５２は、データ処理部１１４で実行中の処理を中断させて、制御レジスタ１１５１のスタートビットに“０”を設定する。また、ＣＰＵコア部１０はストール信号ｓｔｌｃ２のネゲートにより新たな命令実行の保留状態から解放され、ＯＳによる制御に移行し例外処理を実行する。
【００９１】
例外処理が完了したら、ＣＰＵコア部１０は例外処理を起こした命令を再実行する。当該命令の再実行により、専用処理回路モジュール１１に対するアクセス要求が発行され、上記と同様に、当該アクセス要求を受け取ったメモリ管理ユニット３６は、ストール要求生成部３６３によりストール信号ｓｔｌｃ２をアサートするとともに、当該アクセス要求によって指定された仮想アドレスを物理アドレスに変換し、当該アクセス要求に伴って内部バス１８上に出力することでアクセス要求を専用処理回路モジュール３１に伝達する。これを受けた専用処理回路モジュール３１のアクセス要求判定部１１５０は、制御レジスタ１１５１を選択してスタートビットに“１”を設定する。スタートビットに“１”が設定されると、制御信号生成部１１５２は、データ処理部１１４に対し、先ほど中断したときのステータスに基づいて処理を実行させる。これにより、専用処理回路モジュール３１は中断したところから処理を再開することができる。
【００９２】
専用処理回路モジュール３１による処理が完了したら、専用処理回路モジュール３１の制御信号生成部１１５２は割り込み要求ｉｎｔｐを出力するとともにスタートビットに“０”を設定する。これにより、割り込みコントローラ１２からＣＰＵコア部１０に対して割り込み信号ｉｎｔが与えられ、ＣＰＵコア部１０は、当該割り込み要因の処理に移行する。
【００９３】
以上より実施の形態２に係るマイクロプロセッサ２によれば、前記マイクロプロセッサ１と同様に、専用処理回路モジュールの仮想アドレス空間を用いた処理を安全に行うことができるから、ＯＳを改変する必要はない。
【００９４】
≪実施の形態３≫
実施の形態１に係るマイクロプロセッサ１及び実施の形態２に係るマイクロプロセッサ２では、専用処理回路モジュールからのアクセス要求に係るＴＬＢミスに対する例外処理が完了したら、ＣＰＵコア部１０が命令を再実行することにより専用処理回路モジュールの動作を再開させた。実施の形態３に係るマイクロプロセッサ３では、例外処理によりＴＬＢの情報が更新されたらメモリ管理ユニットが専用処理回路モジュールの動作を再開させる。
【００９５】
図８は、実施の形態３に係るマイクロプロセッサ３のブロック図である。
【００９６】
同図に示されるマイクロプロセッサ３は、例えば携帯情報端末用のマイクロプロセッサである。マイクロプロセッサ３は、図示されないＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＲＯＭ等の記憶装置、及び外部Ｉ／Ｏと接続されることにより、携帯情報端末の機能を実現する。同図に示されるマイクロプロセッサ３の構成要素のうち、マイクロプロセッサ１及び２と同様の構成要素には同一の符号を付して、その詳細な説明を省略する。
【００９７】
図８に示されるメモリ管理ユニット４６は、実施の形態２に係るメモリ管理ユニット３６と同様にＴＬＢ１６１、ＦＶＡレジスタ１６２、及びストール要求生成部３６３と、その他図示されないアドレス変換に必要な機能部を有する。更にメモリ管理ユニット４６は、処理再開信号生成部４６４を有する。処理再開信号生成部４６４は、ＴＬＢミスに応じた例外処理によりＴＬＢ１６１の情報が更新された後に、処理再開信号（ｒｇｍ）を出力する。
【００９８】
専用処理回路モジュール４１は、実施の形態２に係る専用処理回路モジュール３１の機能に加え、処理再開信号ｒｇｍに応じて制御レジスタ１１５１を設定する機能を有する。具体的には、専用処理回路モジュール４１内のアクセス要求判定部１１５０が、処理再開信号ｒｇｍを入力し、当該信号に応じて制御レジスタ１１５のスタートビットに“１”を設定する。
【００９９】
ここで、ＣＰＵコア部１０が専用処理回路モジュール４１を制御して処理を実行させる場合のＣＰＵコア部１０、メモリ管理ユニット４６、及び専用処理回路モジュール４１の動作について詳細に説明する。
【０１００】
先ずＣＰＵコア部１０が専用処理回路モジュール４１における制御レジスタ１１５１を設定する命令を実行し、専用処理回路モジュール４１が動作を開始するまでの動作は、前記マイクロプロセッサ２と同様である。その後、専用処理回路モジュール４１のアクセス要求に係るアドレス変換においてＴＬＢミスが発生したとき、メモリ管理ユニット４６は例外処理要求ｅｘｃｐを出力するとともに、ストール信号ｓｔｌｃ２をネゲートする。例外処理要求ｅｘｃｐを受け取った専用処理回路モジュール４１は、実行中の処理を中断してスタートビットに“０”を設定し、処理を中断する。またＣＰＵコア部１０は、ストール信号ｓｔｌｃ２がネゲートされたことにより新たな命令実行の保留状態から解放され、ＯＳによる制御に移行し例外処理を実行する。例外処理においてＴＬＢ１６１のエントリの情報を更新する処理が完了したら、メモリ管理ユニット４６における処理再開信号生成部４６４は、処理再開信号ｒｇｍを専用処理回路モジュール４１に対して出力する。処理再開信号ｒｇｍを受け取ったメモリ管理ユニット４６のアクセス要求判定部１１５０は、制御レジスタ１１５１のスタートビットに“１”を設定する。これにより、ＣＰＵコア部１０による例外処理におけるすべての処理が完了する前であっても、ＴＬＢ１６１のエントリの更新が行われた段階で専用処理回路モジュール３１は処理を再開することができる。
【０１０１】
メモリ管理ユニット４６は、ＣＰＵコア部１０による例外処理が完了したら、ストール信号ｓｔｌｃ２をアサートする。その後の専用処理回路モジュール３１による処理完了後の動作は、前記マイクロプロセッサ２と同様である。
【０１０２】
以上実施の形態３に係るマイクロプロセッサ３によれば、前記マイクロプロセッサ１及び２と同様に、専用処理回路モジュールの仮想アドレス空間を用いた処理を安全に行うことができるから、ＯＳを改変する必要はない。更にマイクロプロセッサ３によれば、専用処理回路モジュール４１のアクセス要求に対するアドレス変換のＴＬＢミスに係る例外処理において、例外処理におけるすべての処理が完了する前であってもＴＬＢ１６１のエントリの更新が行われた段階で専用処理回路モジュール４１に動作を再開させる。これよれば、例外処理における一連の処理が完了した後に専用処理回路モジュール４１に動作を再開させる場合に比べて、より早く専用処理回路モジュール４１の処理を再開させることができる。
【０１０３】
≪実施の形態４≫
図９は、実施の形態４に係るマイクロプロセッサ４のブロック図である。
【０１０４】
同図に示されるマイクロプロセッサ４は、例えば携帯情報端末用のマイクロプロセッサである。マイクロプロセッサ４は、図示されないＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＲＯＭ等の記憶装置、及び外部Ｉ／Ｏと接続されることにより、携帯情報端末の機能を実現する。同図に示されるマイクロプロセッサ４の構成要素のうち、前記マイクロプロセッサ１と同様の構成要素には同一の符号を付して、その詳細な説明を省略する。
【０１０５】
マイクロプロセッサ４は、専用処理回路モジュール１１のアクセス要求に対するアドレス変換のためのＴＬＢ５０１を備えるメモリ管理ユニット５０を更に有する。メモリ管理ユニット５０は、専用アドレスバスｐａと専用データバスｐｄから構成される専用バス５１を介して専用処理回路モジュール１１と接続され、内部バス１８を介して割り込みコントローラ１２、タイマユニット１３、外部バスコントローラ１４、及び専用処理回路モジュール１１と接続される。ＴＬＢ５０１は、ＴＬＢ１６１に格納されるアドレス変換情報の一部が格納される。
【０１０６】
専用処理回路モジュール１１からのアクセス要求は、専用バス５１を介してメモリ管理ユニット５０に与えられる。当該アクセス要求を受け取ったメモリ管理ユニット５０は、ＴＬＢ５０１を用いてアクセス要求によって指定された仮想アドレスを物理アドレスに変換し、当該アクセス要求を物理アドレスを伴って内部バス１８上に出力することで、専用処理回路モジュール１１からのアクセス要求を伝達する。また、アドレス変換においてエラーが発生した場合には、メモリ管理ユニット５２に対して通知を行う。
【０１０７】
メモリ管理ユニット５２は、ＣＰＵコア部１０からのアクセス要求に対しては、実施の形態１に係るメモリ管理ユニット１６と同様に動作する。メモリ管理ユニット５２は、メモリ管理ユニット５０から専用処理回路モジュール１１からのアクセス要求に係るアドレス変換においてエラーが発生した旨の通知を受け取ると、そのエラーに応じた処理を実行する。具体的には、メモリ管理ユニット５０においてＴＬＢミスが発生した場合には、メモリ管理ユニット５２はＴＬＢ１６１を参照し、当該ＴＬＢミスを発生させた仮想アドレスに対応するエントリを検索する。必要なエントリが見つかった場合には、メモリ管理ユニット５２はＴＬＢ１６１の当該エントリの情報をＴＬＢ５０１に登録し、メモリ管理ユニット５２に処理を再開させる。一方、必要なエントリが見つからなかった場合には、メモリ管理ユニット５２は例外処理要求ｅｘｃｐを発行する。その後のＣＰＵコア部１０と専用処理回路モジュール１１の動作は実施の形態１と同様である。そして、例外処理完了後ＴＬＢ１６１の内容が更新されたら、メモリ管理ユニット５２は必要なエントリを含むアドレス変換情報をＴＬＢ５０１に登録し、ＣＰＵコア部１０は命令を再実行する。その他の処理は実施の形態１と同様である。
【０１０８】
以上より実施の形態４に係るマイクロプロセッサ４によれば、前記マイクロプロセッサ１と同様に、専用処理回路モジュールの仮想アドレス空間を用いた処理を安全に行うことができるから、ＯＳを改変する必要はない。また、マイクロプロセッサ４のように専用処理回路モジュール１１のためのＴＬＢ５０１を備えたメモリ管理ユニット５０とＣＰＵコア部１０からのアクセス制御のためのメモリ管理ユニット５２を分けることで、ＣＰＵコア部１０の動作周波数と専用処理回路モジュール１１の動作周波数が異なる場合に有利な効果がある。例えば、専用処理回路モジュール１１の動作周波数がＣＰＵコア部１０の動作周波数よりも低い場合、マイクロプロセッサ１のメモリ管理ユニット１６のようにＣＰＵコア部１０と専用処理回路モジュール１１の両方のアクセスに対するメモリ管理を行うには、メモリ管理ユニットは動作周波数の高い方の周波数に合わせて設計しなければならない。これは、動作周波数の低い専用処理回路モジュールの動作中でＣＰＵコア部１０が停止している状態においても、ＣＰＵコア部１０に合わせて高い周波数に対応して設計された消費電力の大きなメモリ管理ユニットを使用することにより消費電力を増大させる要因となる。これに対し実施の形態４に係るマイクロプロセッサ４によれば、メモリ管理ユニット５０の動作周波数を専用処理回路モジュール１１に合わせて低くすることができるから、専用処理回路モジュール１１による処理効率の向上に資する。
【０１０９】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０１１０】
例えば、実施の形態４に係るマイクロプロセッサ４において、ＴＬＢ５０１はＴＬＢ１６１のアドレス変換情報の一部を格納する場合を一例として示したが、これに限られず、ＴＬＢ１６１のアドレス変換情報の全部を格納してよい。また実施の形態４に係るマイクロプロセッサ４では、ＣＰＵコア部１０と専用処理回路モジュール１１毎にメモリ管理ユニットを分ける構成をマイクロプロセッサ１に適用する例を示したが、これに限られず、マイクロプロセッサ２及び３にも適用することができる。
【０１１１】
上記マイクロプロセッサ１に適用されるＯＳが、例えば組み込み用のＯＳ等のように多少のカスタマイズが認められている場合には、その認められている範囲内でのＯＳの改造により、専用処理回路モジュールの仮想アドレス空間を用いた処理を安全に行うことが可能となる。例えば、専用処理回路モジュールからのアクセス要求に対するアドレス変換処理においてＴＬＢミスが発生し、その後の例外処理によりＴＬＢのエントリが更新されたとき、ＣＰＵコア部から専用処理回路モジュールに対してＴＬＢのエントリが更新されたことを通知するためには、ＯＳの改造が必要となる。そこで、そのＣＰＵコア部からの通知をする処理の追加がＯＳの改造の認められている範囲内で対応可能であれば、専用処理回路モジュールの仮想アドレス空間を用いた処理を安全に行うことが可能となる。
【符号の説明】
【０１１２】
１、２、３、４  マイクロプロセッサ
１０  ＣＰＵコア部
１１、３１、４１  専用処理回路モジュール
１６、３６、４６、５０、５２  メモリ管理ユニット（ＭＭＵ）
１６１、５０１  ＴＬＢ
１６２  ＦＶＡレジスタ
ｃａ  ＣＰＵアドレスバス
ｃｄ  ＣＰＵデータバス
１７  ＣＰＵバス
ｉａ  内部アドレスバス
ｉｄ  内部データバス
１８  内部バス
ｍａ  キャッシュアドレスバス
ｍｄ  キャッシュデータバス
２０  キャッシュバス
ｅａ  外部アドレスバス
ｅｄ  外部データバス
１９  外部バス
１５  キャッシュメモリ
１４  外部バスコントローラ（ＢＳＣ）
１３  タイマユニット（Ｔｉｍｅｒ）
１２  割り込みコントローラ（ＩＮＴＣ）
ｉｎｔｐ  専用処理回路モジュール１１からの割り込み要求
ｉｎｔｔ  タイマユニット１３からの割り込み要求
ｉｎｔｏ  外部装置等からの割り込み要求
ｉｎｔ  割り込み信号
ｓｔｌｐ、ｓｔｌｃ、ｓｔｌｃ２  ストール信号
ｅｘｃｐ  例外処理要求
１１１  ＣＰＵバス調停部
１１２  リード要求生成部
１１３  ライト要求生成部
１１４  データ処理部
１１５  制御部
１１５０  アクセス要求判定部
１１５１  制御レジスタ
１１５２  制御信号生成部
１１５３  ストール要求生成部
ｒｒｅｑ  リード要求
ｗｒｅｑ  ライト要求
ｒｄａｔａ  リード要求に係るデータ
ｗｄａｔａ  ライト要求に係るデータ
５０１〜５０７  所定のタイミング
３６３  ストール要求生成部
４６４  処理再開信号生成部
ｒｇｍ  処理再開信号
５１  専用バス
ｐａ  専用アドレスバス
ｐｄ  専用データバス
【図１】
0005593195.tif 000002
【図２】
0005593195.tif 000003
【図３】
0005593195.tif 000004
【図４】
0005593195.tif 000005
【図５】
0005593195.tif 000006
【図６】
0005593195.tif 000007
【図７】
0005593195.tif 000008
【図８】
0005593195.tif 000009
【図９】
0005593195.tif 000010