(57)【要約】      （修正有）【課題】外部デバイスを用いた所定の処理を行うためのCPUのオーバーヘッドを低減する。【解決手段】DMA C２３は、外部デバイス４において、入力データの物理アドレスとして設定されたメモリ３の物理アドレスに基づいて、メモリ３からの入力データのデータ転送を行い、かつ出力データの物理アドレスとして設定されたメモリ３の物理アドレスに基づいて、メモリ３への出力データのデータ転送を行う。外部デバイス４は、所定の処理の対象データの仮想アドレスに対応する物理アドレスをMMU１１から取得し、所定の処理の結果データの仮想アドレスに対応する物理アドレスをMMU１１から取得する。外部デバイス４は、取得された対象データの物理アドレスと結果データの物理アドレスとを、それぞれ入力データの物理アドレスと出力データの物理アドレスとして設定する。【選択図】図５
2008102850.tif 000002
【特許請求の範囲】
【請求項１】
中央処理装置と、
バスを介して前記中央処理装置と接続されたメモリと、
前記バスを介して前記中央処理装置と前記メモリとに接続され、所定の処理を実行する外部処理装置と、
前記中央処理装置において実行されるプロセスの仮想アドレスが入力されると、該仮想アドレスに対応する前記メモリの物理アドレスを出力するアドレス変換部と、
前記外部処理装置に設けられ、入力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリからの前記入力データのデータ転送を行い、かつ出力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリへの前記出力データのデータ転送を行う転送部と、
前記所定の処理の対象データの仮想アドレスに対応する物理アドレスを前記アドレス変換部から取得し、前記所定の処理の結果データの仮想アドレスに対応する物理アドレスを前記アドレス変換部から取得する物理アドレス取得部と、
該物理アドレス取得部において取得された前記対象データの物理アドレスと前記結果データの物理アドレスとが、それぞれ、前記データ転送部の前記入力データの物理アドレスと前記出力データの物理アドレスとして設定される設定部と、
を有することを特徴とする情報処理装置。
【請求項２】
前記物理アドレス取得部は、前記アドレス変換部から前記仮想アドレスの仮想ページのページサイズの情報を取得し、
前記設定部には、取得した前記ページサイズの情報が設定され、
前記転送部は、設定された前記ページサイズのページ単位で、前記メモリからの前記入力データの前記データ転送と、前記メモリへの前記出力データの前記データ転送を行うことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記アドレス変換部は、前記物理アドレスの情報とともに、前記仮想アドレスのパーミッションの情報を出力し、
前記物理アドレス取得部は、取得した前記仮想アドレスの前記情報が、アクセスの禁止を示す場合は、前記中央処置装置に割り込み処理を実行させることを特徴とする請求項１又は請求項２に記載の情報処理装置。
【請求項４】
前記アドレス変換部は、前記仮想アドレスと前記物理アドレスの対応テーブルを参照することによって、入力された前記仮想アドレスに対応する前記物理アドレスの情報を出力することを特徴とする請求項１から３のいずれか１つに記載の情報処理装置。
【請求項５】
中央処理装置と、バスを介して前記中央処理装置と接続されたメモリと、前記バスを介して前記中央処理装置と前記メモリとに接続され、所定の処理を実行する外部処理装置と、前記中央処理装置において実行されるプロセスの仮想アドレスが入力されると、該仮想アドレスに対応する前記メモリの物理アドレスを出力するアドレス変換部と、前記外部処理装置に設けられ、入力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリからの前記入力データのデータ転送を行い、かつ出力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリへの前記出力データのデータ転送を行う転送部と、を含む情報処理装置におけるデータ処理方法であって、
前記所定の処理の対象データの仮想アドレスに対応する物理アドレスを前記アドレス変換部から取得し、
前記所定の処理の結果データの仮想アドレスに対応する物理アドレスを前記アドレス変換部から取得し、
取得された前記対象データの物理アドレスと前記結果データの物理アドレスとを、それぞれ、前記入力データの物理アドレスと前記出力データの物理アドレスとして設定し、
前記転送部によって、前記入力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリからの前記入力データのデータ転送を行い、
前記転送部によって、前記出力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリへの前記出力データのデータ転送を行うことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理方法に関し、特に、外部処理装置を利用して所定の処理を行う情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
近年、コンピュータ上で実行されるアプリケーションプログラム等（以下、単にプログラムともいう）の処理内容の複雑化に伴い、中央処理装置（以下、CPUという）で行っていた処理の一部を、他のCPU、専用チップ等の外部処理装置（以下、外部デバイスという）に代替させて実行させるケースが増えてきている。例えば、アプリケーションの処理の中の、特定の処理、例えば画像処理等の処理が、外部デバイスに依頼されるケースである。このようなケースのアプリケーションの場合、プログラマは、次の点に注意を向ける。  
まず、第１に、プログラマは、外部デバイスの処理の対象データが主メモリ上のデータである場合、キャッシュ（cache）と主メモリ間の不一致状態（インコヒーレントな状態）を解消した上で、外部デバイスによる所定の処理が行われるようにする必要がある点に注意する。近年、キャッシュ・スヌープ（cache snoop）の機能の実装が、一般的になりつつあり、キャッシュと主メモリ間のインコヒーレントな状態の解消が特に大きな問題とは言えない状況にあるが、外部デバイスに所定の処理を依頼するためには、このような対応を含めて種々のオーバーヘッドが存在する。
【０００３】
また、各プログラムの実行は、対応するプロセス空間上の仮想アドレスに基づいて、オペレーティングシステム（以下、OSという）によって、管理されるが、その仮想アドレスはCPUのメモリ管理機能により実アドレス、すなわち物理アドレスにマッピングされる。  
よって、第２に、プログラマは、仮想アドレスと物理アドレスとの対応関係と、プロセス空間上の仮想アドレスの管理方法の点に注意する。例えば、処理の対象データが主メモリ上に定義された比較的大きなバッファ領域に格納されている状況を想定する。ここで、このバッファ領域を管理しているのはCPU上で動作するプログラムである。このバッファ領域は、仮想アドレス上連続した領域としてプログラムから参照あるいは更新がされるが、この仮想アドレス上の連続領域は、必ずしも物理アドレス上では連続な領域とは限らない場合がある。
【０００４】
更に、CPUのメモリ管理機能は、仮想アドレスと物理アドレスの対応付けのみならず、その仮想アドレスに対するプログラムのアクセス権限も管理している。しかし、一般に物理アドレスをベースに動作する外部デバイスはCPUのメモリ管理機能とは独立な存在であり、外部デバイスは、CPUのメモリ管理機能が書き込みを禁止しているメモリ領域に対してもデータの書き込みが行うことができてしまう。つまり、プログラマは、CPUのメモリ管理機能は、外部デバイスの動作を抑制できない点にも注意する。
【０００５】
ここでさらに、上記の第２の点について、例を用いて詳述する。例えば、ある外部デバイスが専用のDMAC(direct memory access controller)を有し、その外部デバイスはCPU上で動作するドライバプログラムからの設定に従い、主メモリの指定された領域から対象データのデータ列をDMA(direct memory access)により読み出して所定の処理を施す。そして、外部デバイスは、その所定の処理を施したデータ列或いは何らかの処理の結果データを更にDMAにより主メモリの指定された領域へ出力するとする。この一連の処理過程は一見単純に見えるが、実際にはいくつかの、しかも面倒な手順を踏む必要がある。
【０００６】
まず、処理対象となる一連のデータが物理空間上に不連続に存在する場合は、DMAを行う前に、一連のデータを物理空間上連続である別のバッファ領域へコピーする必要がある。すなわち、コピー処理により、一連のデータを、連続した物理アドレスに存在するようにするためである。このコピー処理は、CPU上で動作するソフトウエアの処理コマンド、例えばmemcpyコマンドに行われる。
【０００７】
その結果、外部デバイスのDMACは、物理空間上連続であるバッファ領域からDMAにより処理対象である対象データを読み出し、その所定の処理の結果データを更にDMAにより予め決まられた物理空間上連続である別のバッファ領域へ出力することができる。
【０００８】
そして、外部デバイスにおける所定の処理の終了は割り込みによりCPUへ通知され、その割り込み要因に応じて、CPUは、外部デバイスによる所定の処理後に行われる後処理を行うプログラムを実行する。その後処理では、物理空間上連続である、上述した別のバッファ領域へ出力された処理の結果データを、プログラムが指定するプロセス空間上の仮想アドレスが指す別のバッファ領域へコピーすることが行われる。このコピー処理も当然CPU上で動作するソフトウエアの処理コマンド、例えばmemcpy、によって実行される。この後処理により、CPU上で動作するプログラムは、外部デバイスの出力結果を利用することができる。
【０００９】
上記の例の場合、外部デバイスの利用に際し、外部デバイスにおける所定の処理の対象データ及び外部デバイスの処理の結果データを、CPU上で動作するソフトウエアによってコピーする処理が存在する。従って、対象データのデータ量や結果データのデータ量に応じたオーバーヘッドが存在し、データ量が多いほどこのオーバーヘッドも確実に増大する。
【００１０】
さらに、上記の例の場合、このオーバーヘッドに加え、専用のDMACを有する外部デバイスによる処理について、メモリ保護上の懸念も存在する。一般に、CPU上で動作するプログラムは、CPUのMMU(memory management unit：メモリ管理ユニット)によって管理されたプロセス空間上の仮想アドレスをベースとして、その実行及びメモリアクセスが制限される。例えば、プログラムが何らかの不具合により暴走した場合においても、プログラムのコードが暴走したプログラムにより破壊されないように、プログラムの書かれたコード領域はMMUにより書き込み禁止の属性をもって管理されている。
【００１１】
しかしながら、直接物理空間を参照あるいは更新する外部デバイスは、MMUの管理とは関係なく主メモリへのメモリアクセスを行うので、外部デバイスに対して誤った設定が行われてしまえば、MMUが保護する領域に対してもデータの出力が可能である。従って、誤った設定がされた場合、保護されるべきコード及びデータが外部デバイスの動作により破壊される危険性がある。
【００１２】
そこで、主メモリ上に配置された特定のデータ及びコードを保護する機構として、MMUの持つ機能として一般的な機構以外の機構が提案されている（例えば、特許文献１参照）。  
その提案に係る機構によれば、特定のメモリ上のアドレスへの書き込み操作は、監視され排除される。あるシステム上で動作するプログラムが予め決められており、その主メモリ上の配置も動的に変更されない状況にあっては、特定のメモリ上のアドレスへの書き込み操作を監視し排除するその提案に係る機構は、有効ではある。しかしながら、近年組み込み環境においても広く浸透しつつあるUNIX系のOSにおいては、実行されるプログラムの配置、生成、消滅は動的に制御されるので、その提案に係る機構をそのようなOSに適用することはできない。ところが、そのようなOSは、MMUの機能を使い、そしてそのMMUの機能をメモリ管理ソフトウエアが補足する形で主メモリ上に配置された特定のデータ及びコードの保護を実現している。すなわち、MMUがCPUに対し物理アドレスを供給するときに、書き込みが禁止されている領域なのか、等の保護情報も合わせて供給する。従って、そのようなOSが搭載されたシステムでは、システム全体の処理性能はともかく、公知の技術と、MMUと、OSのメモリ管理ソフトウエアが、主メモリ上に配置された特定のデータ及びコードを保護する機構として十分に機能しているのである。
【００１３】
また、仮想アドレスをベースとした外部デバイスの処理を実現する機構も、提案されている（例えば、特許文献２参照）。その提案によれば、専用のDMACを有する画像処理デバイスが専用のローカルバスを有し、そのローカルバスと、主メモリ及びCPUが接続されているメインのバスとの間にバス変換器を設け、そのバス変換器には仮想アドレスと物理アドレスを変換するための拡張バス用のMMUが設けられている。
【００１４】
しかし、上述したUNIX系のOSのように、実行されるプログラムの配置、生成、消滅が動的に制御され、しかも、そのOS上で動作するプログラムが、どのような仮想アドレス（正確にはプロセス空間上の仮想アドレス）上に生成され、その仮想アドレスが具体的にはどのような物理アドレスに対応するかを知ることができない場合に、その提案に係る機構において拡張バス用のMMUに、プログラムが自ら使用するメモリ領域の仮想アドレスとそれに対応する物理アドレスを設定することは、一般には難しい。
【００１５】
更に、その提案に係る機構を用いた場合、プログラムが使用するメモリ領域が仮想アドレス上は連続であったとしても、実際の物理アドレス上はMMUの管理単位(一般にページと呼ばれる)においては不連続になっている可能性があるので、外部デバイスの持つDMACが動作する前に、必要な仮想アドレスと物理アドレスとの対応関係を完全に拡張バス用のMMUに設定しておかなければならないといった不都合もある。
【００１６】
以上のように、CPU上で動作するソフトウエアが担っていた処理の一部を外部デバイスが代替して処理するようなプログラムの場合、プロセス空間上の仮想アドレスで指し示される処理対象であるところの一連のデータが、物理空間上は不連続に配置される可能性があり、それらを物理空間上連続な領域にコピーする必要があった。更に、外部デバイスにおける所定の処理の結果出力も、同様に物理空間上連続な領域からプロセス空間上の仮想アドレスの指す領域へコピーする必要があった。CPUのこのようなコピー処理の負荷量は、コピー処理の対象のデータ量に依存するため、このような外部デバイスを利用するためのコピー処理等のオーバーヘッドは、CPUを含むシステム全体の性能の低下に繋がる。そして、例外処理によってプログラムの動作モードを変更するAPI、及び、外部デバイスに対して種々の設定を行うドライバルーチンプログラムは、その外部デバイス専用となるため、新たなソフトウエアとしての開発が必要となるという問題があった。
【特許文献１】特願平10-192130号公報
【特許文献２】特願平07-232740号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
そこで、本発明は、外部デバイスを用いた所定の処理を行うためのCPUのオーバーヘッドを低減する情報処理装置及びその方法を提供することを目的とする。
【課題を解決するための手段】
【００１８】
本発明の一態様によれば、中央処理装置と、バスを介して前記中央処理装置と接続されたメモリと、前記バスを介して前記中央処理装置と前記メモリとに接続され、所定の処理を実行する外部処理装置と、前記中央処理装置において実行されるプロセスの仮想アドレスが入力されると、該仮想アドレスに対応する前記メモリの物理アドレスを出力するアドレス変換部と、前記外部処理装置に設けられ、入力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリからの前記入力データのデータ転送を行い、かつ出力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリへの前記出力データのデータ転送を行う転送部と、前記所定の処理の対象データの仮想アドレスに対応する物理アドレスを前記アドレス変換部から取得し、前記所定の処理の結果データの仮想アドレスに対応する物理アドレスを前記アドレス変換部から取得する物理アドレス取得部と、該物理アドレス取得部において取得された前記対象データの物理アドレスと前記結果データの物理アドレスとが、それぞれ、前記データ転送部の前記入力データの物理アドレスと前記出力データの物理アドレスとして設定される設定部と、を有することを特徴とする情報処理装置を提供することができる。
【００１９】
本発明の一態様によれば、中央処理装置と、バスを介して前記中央処理装置と接続されたメモリと、前記バスを介して前記中央処理装置と前記メモリとに接続され、所定の処理を実行する外部処理装置と、前記中央処理装置において実行されるプロセスの仮想アドレスが入力されると、該仮想アドレスに対応する前記メモリの物理アドレスを出力するアドレス変換部と、前記外部処理装置に設けられ、入力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリからの前記入力データのデータ転送を行い、かつ出力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリへの前記出力データのデータ転送を行う転送部と、を含む情報処理装置におけるデータ処理方法であって、前記所定の処理の対象データの仮想アドレスに対応する物理アドレスを前記アドレス変換部から取得し、前記所定の処理の結果データの仮想アドレスに対応する物理アドレスを前記アドレス変換部から取得し、取得された前記対象データの物理アドレスと前記結果データの物理アドレスとを、それぞれ、前記入力データの物理アドレスと前記出力データの物理アドレスとして設定し、前記転送部によって、前記入力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリからの前記入力データのデータ転送を行い、前記転送部によって、前記出力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリへの前記出力データのデータ転送を行うことを特徴とする情報処理方法を提供することができる。
【発明の効果】
【００２０】
本発明によれば、外部デバイスを用いた所定の処理を行うためのCPUのオーバーヘッドを低減する情報処理装置及びその方法を実現することができる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照して本発明の実施の形態を説明する。  
（装置構成）  
まず図１に基づき、本実施の形態に係わる情報処理装置の構成を説明する。図１は、本実施の形態に係わる情報処理装置の構成を示す構成図である。
【００２２】
図１に示すように、情報処理装置１は、CPU２と、主メモリ３と、外部デバイス４と、割り込みコントローラ５を含んで構成されている。CPU２と、主メモリ３と、外部デバイス４と、割り込みコントローラ５とは、互いに、バス６を介して接続されている。CPU２は、図示しないROMやストレージから読み出したプログラムを主メモリ３に展開して、実行する。CPU２がそのプログラムを実行する際、プロセス空間上の仮想アドレスを指定することによって、実行すべきコード及び処理すべきデータが特定される。そのとき、CPU２は、実行すべきコード及び処理すべきデータに対応する、RAM等のメモリである主メモリ３の物理アドレスを、メモリ・マネジメント・ユニット（以下、MMUという）１１に問い合わせ、その問い合わせに対して得られた物理アドレスに基づいて、そのコードあるいはデータを主メモリ３から読み出して実行あるいは処理することができる。そして、後述するように、CPU２上で実行されている１つ又は複数のプログラムは、その処理の一部或いは全てをCPU２以外の情報処理装置である外部デバイス４に実行させることができる。
【００２３】
MMU１１は、CPU２とバス６に接続され、さらに、MMU１１は、TLB（Translation Look-aside Buffer）１２に接続されている。TLB１２は、仮想アドレスと物理アドレスの対応関係の情報が記憶された対応テーブルを含み、TLB１２には、仮想アドレスと物理アドレスの対応関係の情報と、仮想ページの管理情報が登録されている。  
このTLB１２におけるメモリ管理はあるサイズを持つ「ページ」単位で行われ、TLB１２には、ページ先頭の仮想アドレス(後述するプロセスIDを含む場合がある)とそれに対応する物理アドレスに加え、管理情報が記録されている。管理情報には、仮想ページのページサイズとページ属性の情報が含まれる。さらに、ページ属性の情報には、D-cacheの特性、パーミッションの情報等が含まれる。パーミッションの情報は、プロセスの仮想アドレスあるいは仮想空間の実行権、参照権、改変権等の情報である。実行権は、コードの実行の可否であり、参照権はコードあるいはデータの参照の可否であり、改変権は、コードあるいはデータの変更の可否である。図示しないOSに含まれるメモリマネジャプログラムが、TLB１２内の仮想アドレスと物理アドレスの対応関係のデータの設定、再設定等の管理を行う。
【００２４】
MMU１１は、TLB１２を参照して、CPU２からの物理アドレスの問い合わせに対して物理アドレスと管理情報を供給する。すなわち、MMU１１は、プロセスの仮想アドレスが入力されると、仮想アドレスに対応する主メモリ３の物理アドレスと管理情報を出力するアドレス変換部を構成する。MMU１１は、論理アドレスと物理アドレスの対応情報を、CPU２に供給する。また、問い合わせに係る仮想アドレスのデータがTLB１２に無いときは、CPU２のメモリ管理部であるメモリマネジャプログラムによって、TLB１２の内容の書き換え処理を行う。なお、後述するように、MMU１１は、外部デバイス４からも物理アドレスの問い合わせを受け、物理アドレスと管理情報を供給する。
【００２５】
従って、MMU１１は、物理アドレスの情報とともに、仮想ページの管理情報も、CPU２あるいは外部デバイス４に供給する。
【００２６】
主メモリ３は、CPU２と外部デバイス４がアクセスする記憶装置である。主メモリ３がCPUによってアクセスされるときは、CPU上で動作するプログラムは仮想アドレスを指定するが、その仮想アドレスはMMU１１によって物理アドレスに変換され、その物理アドレスによってコードあるいはデータの位置が指定される。
【００２７】
外部デバイス４は、バスマスタであり、所定の処理を実行する機能を有するCPUを含む装置、ロジック回路等である。外部デバイス４は、入力バッファ２１と、出力バッファ２２と、DMAC２３と、インターフェース（以下、I/Fと略す）２４と、演算器２５とを含んで構成されている。
【００２８】
入力バッファ２１と出力バッファ２２は、バス６とDMAC２３に接続されている。なお、本実施の形態では、入力バッファと出力バッファは個別に設けているが、入力バッファ２１と出力バッファ２２は、１つのバッファでもよく、そのバッファ内に２つの領域が有ればよい。さらに、その１つのバッファの場合、２つの領域でなくても、その１つのバッファは、１つの領域を有して、入力データを処理してから、その同じ１つの領域に、出力データが書き込まれるようにしてもよい。
【００２９】
DMAC２３は、入力データの物理アドレスが設定されると、その物理アドレスに基づいて、バス６を介して主メモリ３からの入力データのデータ転送を行い、出力データの物理アドレスが設定されると、その物理アドレスに基づいて、バス６を介して主メモリ３への出力データのデータ転送を行う。すなわち、DMAC２３は、DMAの処理を実行する転送部を構成する。
【００３０】
また、DMAC２３は、データが設定可能なレジスタを含み、そのレジスタに所定のデータが設定されると、DMAC２３が起動されて、DMAの処理を実行する。DMAC２３は、対象データの物理アドレスと結果データの物理アドレスとが、それぞれ、DMAの入力データの物理アドレスと出力データの物理アドレスとして設定される設定部を構成する。
【００３１】
I/F２４は、複数のレジスタを含み、外部レジスタ４に対する処理内容、対象データの仮想アドレス、処理結果の出力先の仮想アドレス、及びプロセスIDを登録する登録部を構成する。
【００３２】
演算器２５は、その所定の処理を実行する処理部であって、その所定の処理は、例えば、画像処理、暗号化処理等である。すなわち、外部デバイス４は、CPU２が実行するプログラム中の処理の一部、例えば、画像処理、暗号化処理等を実行するための装置である。
【００３３】
演算器２５は、I/F２４に所定のデータが設定されると、その所定の処理を実行する。具体的には、演算器２５は、対象データの仮想アドレスをMMU１１にバス６を介して送信して、MMU１１からその仮想アドレスに対応する物理アドレスと管理情報を取得し、かつ結果データの仮想アドレスをMMU１１にバス６を介して送信して、MMU１１からその仮想アドレスに対応する物理アドレスと管理情報を取得する。すなわち、演算器２５は、DMAC２３に設定する入力データと出力データのそれぞれの物理アドレスと管理情報を、MMU１１から取得する物理アドレス取得部を構成する。
【００３４】
よって、演算器２５は、対象データと結果データのそれぞれの仮想アドレスに対応する物理アドレスをMMU１１に問い合わせて取得し、取得した物理アドレスと管理情報をDMAの処理のためにDMAC２３に設定する。DMAC２３に所定のデータが設定されるとDMAC２３が起動する。DMAC２３は、設定された物理アドレスに基づいて、主メモリ３の指定されたアドレス領域の対象データを読み出す。外部デバイス４の演算器２５は、その読み出されたデータに対して所定の処理を実行する。そして、DMAC２３は、設定された物理アドレスに基づいて、主メモリ３の指定されたアドレス領域に結果データを書き込む。
【００３５】
（全体の処理）  
通常、アプリケーションプログラム等のプログラムを実行する際、CPU２は、実行プログラムの仮想アドレスに対応する物理アドレスをMMU１１に問い合わせてMMU１１から主メモリ３の物理アドレスと管理情報を得て、プログラムを実行する。問い合わせのあった物理アドレスの情報がTLB１２にない場合は、例外すなわち割り込みが発生し、OSの管理の下でメモリマネジャプログラムがTLB１２の内容を更新する処理を行うことによって、CPU２は、内容の更新されたMMU１１から物理アドレスと管理情報を得てそのプログラムを実行することができる。なお、複数のプログラムがCPU２上で実行されていても、各プログラムのプロセス空間は、仮想アドレスにプロセスIDを付加することによって拡張されているので、プログラム間では仮想アドレスは区別されている。  
さらに、CPU２は、実行しているプログラムの中のある処理が外部デバイス４によって処理されるものであるときは、外部デバイス４にその処理を依頼する。
【００３６】
従って、外部デバイス４は、CPU２から指定された主メモリ３の所定の記憶領域３ａにある対象データを入力として所定の処理を実行し、その処理の結果データを、CPU２から指定された主メモリ３の所定の記憶領域３ｂに出力する。
【００３７】
CPU２は、外部デバイス４に所定の処理を依頼した後は、そのプログラムの処理を一旦休止し、他の実行できるプログラムを実行する。外部デバイス４の処理の終了は、割り込み信号により通知され、その通知を受けると、その休止していたプログラムの処理は、再開される。
【００３８】
なお、CPU２が、外部デバイス４に所定の処理を依頼する場合、DMAC２３がデータの入力及び出力をする主メモリ３上の記憶領域は、外部デバイス４に対して指示を行う、CPU２上で動作しているドライバプログラムによって指定される。そのドライバプログラムは、外部デバイス４に対して処理に関する設定、処理の起動、終了の処理を行う。具体的には、そのドライバプログラムは、I/F２４に所定のデータを書き込むことによって、外部デバイス４を動作させることができる。
【００３９】
（外部デバイスにおける処理）  
次に、プログラムが外部デバイス４に対して所定の処理を依頼するときの情報処理装置１の動作について、図２から図５を用いて説明する。図２から図５は、情報処理装置１における外部デバイスの処理の流れを説明するための図である。  
１）プログラムから外部デバイスへの処理の依頼  
CPU２上で動作するプログラムは、外部デバイス４にその所定の処理を依頼するときは、
(a)処理内容（データサイズを含む）、
(b)プロセス空間における対象データの仮想アドレス、
(c) プロセス空間における処理結果の結果データの出力先の仮想アドレス、
(d)そのプログラムのプロセスID（プロセスの識別子）、
の情報をI/F２４に設定、すなわち登録する。I/F２４は、上述したように複数のレジスタを有するので、それらの情報はその複数のレジスタに登録される。図１において、一点鎖線の矢印P1で示すように、CPU２からバス６を介してI/F２４に対して、これらの情報の設定が行われる。
【００４０】
ここで、プロセスIDは、そのプログラムのプロセス空間の識別子である。これらのデータの登録が完了すると、外部デバイス４において後述する処理が実行される。なお、外部デバイス４を利用するプログラムは、外部デバイス４を利用する前に、自己のプロセスIDを、例えば、OSに対して所定のコマンドを送信することによって取得することができる。  
なお、本実施の形態では、入力データのサイズと出力データのサイズは、同じものとして説明するが、異なる場合には、出力データのサイズ指定が必要となったり、或いは実行する処理のアルゴリズムによって出力データのサイズが一意であったりする。
【００４１】
２）外部デバイスにおける対象データの読み出しに関する物理アドレスの取得とDMACの設定  
図２において一点鎖線の矢印P2で示すように、外部デバイス４の演算器２５は、その対象データの仮想アドレスとプログラムのプロセスID(d)の情報をMMU１１へ供給することによって、設定された上記の対象データの仮想アドレス(b)に対応する物理アドレスを、CPU２側のMMU１１に問い合わせる。これは、外部デバイス４が、対象データの配置された物理アドレスと、仮想ページの管理情報（ページサイズ、ページ属性）とを得るためである。MMU１１は、問い合わせのあったプロセス空間上の仮想アドレスに対応する物理アドレスと、仮想ページの管理情報を、TLB１２を参照して読み出して、取得する。なお、対応する物理アドレスは、対象データの、主メモリ３上の先頭の仮想アドレスに対応する物理アドレスである。
【００４２】
そして、図２において一点鎖線の矢印P3で示すように、MMU１１は、取得した物理アドレス、及び、仮想ページの管理情報（ページサイズ、ページ属性を含む）を、外部デバイス４に出力する。ページ属性の情報には、上述したように、仮想ページの読み出しが許されているのか、書き込みが許されているのか、等のパーミッション情報が含まれる。  
そして、図２において一点鎖線の矢印P4で示すように、外部デバイス４の演算器２５は、MMU１１から得た物理アドレス及びページサイズに基づいて、DMAC２３に対して、対象データの読み出しに関する設定を行う。この設定された情報に基づいて、後述するように、DMAC２３は、対象データの読み出しを、ページ単位で行うDMAを実行することができる。
【００４３】
なお、このとき、TLB１２内に問い合わせ対象のデータが存在しない場合は例外処理が発生する。この例外処理により、その時点においてCPU２上で動作していたプログラムはその実行が中断され、OSの持つメモリ管理のためのメモリマネジャプログラムが起動する。この例外処理のときの外部デバイス４とOSとの連携に関しては、後述される。
【００４４】
さらに、外部デバイス４の演算器２５は、取得したページ属性がその仮想ページに対する読み込み禁止を示していた場合、図２において一点鎖線の矢印PI1で示すように、割り込みコントローラ５を介してCPU２に対して割込みによるエラー通知を行う。
【００４５】
３）外部デバイスにおける結果データの出力に関する物理アドレスの取得とDMACの設定  
図３において一点鎖線の矢印P5で示すように、外部デバイス４の演算器２５は、結果データの仮想アドレスとプログラムのプロセスID(d)を供給することによって、設定された上記結果データの出力先の仮想アドレス(c)に対応する物理アドレスを、CPU２側のMMU１１に問い合わせる。これは、外部デバイス４が、結果データの出力先の物理アドレスと、仮想ページの管理情報（ページサイズ、ページ属性）とを得るためである。MMU１１は、問い合わせのあったプロセス空間上の仮想アドレスに対応する物理アドレスと、仮想ページの管理情報（ページサイズ、ページ属性）を、TLB１２を参照して読み出して、取得する。なお、ここにおける対応する物理アドレスは、主メモリ３上の結果データの転送先の先頭の仮想アドレスに対応する物理アドレスである。
【００４６】
そして、図３において一点鎖線の矢印P6で示すように、MMU１１は、取得した物理アドレス、及び、仮想ページの管理情報（ページサイズ、ページ属性）を、外部デバイス４に出力する。ここでも、ページ属性の情報には、仮想ページの読み出しが許されているのか、書き込みが許されているのか、等のパーミッション情報が含まれる。
【００４７】
そして、図３において一点鎖線の矢印P7で示すように、外部デバイス４の演算器２５は、MMU１１から得た物理アドレス及びページサイズに基づいて、DMAC２３に対して、結果データの出力に関する設定を行う。この設定された情報に基づいて、後述するように、DMAC２３は、結果データの出力を、ページ単位で行うDMAを実行することができる。
【００４８】
なお、このときも、TLB１２内に問い合わせ対象のデータが存在しない場合は例外処理が発生する。この例外処理により、その時点においてCPU２上で動作していたプログラムはその実行が中断され、OSの持つメモリ管理のためのメモリマネジャプログラムが起動する。この例外処理のときの外部デバイス４とOSとの連携に関しては、後述される。
【００４９】
さらに、ここでも、外部デバイス４の演算器２５は、取得したページ属性がその仮想ページに対する書き込み禁止を示していた場合、図３において一点鎖線の矢印PI2で示すように、割り込みコントローラ５を介してCPU２に対し割込みによるエラー通知を行う。
【００５０】
４）外部デバイスにおけるDMAの処理と演算器の処理  
外部デバイス４では、DMAC２３は、対象データの入力に関する設定、及び結果データの出力に関する設定がされたことを検知すると、プログラムから依頼された所定の処理が開始される。すなわち、DMAC２３は、DMAにより対象データを主メモリ３の指定された記憶領域３ａから対象データを順次読み出し、読み出した対象データに対して所定の処理を演算器２５により実行し、その結果データを更にDMAC２３はDMAにより主メモリ３の指定されたデータ領域３ｂへ出力する。  
このとき、主メモリ３からの対象データの入力及び主メモリ３への結果データの出力は、それぞれの記憶領域３ａ及び３ｂの先頭からページ単位で行われ、演算器２５は、入力された対象データに対して所定の処理を順次実行し、指定された記憶領域３ｂへ結果データを順次出力する。
【００５１】
まず、対象データの最初の読み出しは、主メモリ３上の記憶領域３ａから、かつ、ページ単位で行われる。すなわち、対象データの最初の読み出しは、記憶領域３ａ内の最初のページ領域３ａ１内の対象データに対してその対象データの先頭アドレスから順次行われる。対象データを読み出しているときに、対象データの読み出しが物理空間上のページ領域３ａ１の最後まで達すると、DMAC２３は、読み出しのDMAの処理と演算器２５の処理を中断して、演算器２５は、DMAC２３への再設定を行う。
【００５２】
具体的には、物理空間上の読み出し処理の終了したページ領域３ａ１の次のページ領域３ａ２内の対象データを読み出すための設定を行うために、演算器２５は、次のページ領域３ａ２に対応する仮想ページの先頭アドレスの物理アドレスを、MMU１１に問い合わせる。外部デバイス４の演算器２５は、MMU１１から受信した物理アドレスと管理情報に基づいて、DMAC２３にDMA処理を実行するための設定を行う。
【００５３】
そして、その設定がされると、演算器２５は、入力された対象データに対する所定の処理を再開する。DMAC２３は、次の対象データの読み出しを、記憶領域３ａの次のページ領域３ａ２内の対象データに対してページの先頭アドレスから順次行う。さらに、対象データを読み出しているときに、対象データの読み出しが物理空間上のページ領域３ａ２の最後まで達すると、DMAC２３は、DMAの処理と演算器２５の処理を中断して、演算器２５は、DMAC２３への再設定を行う。
【００５４】
具体的には、物理空間上の読み出し処理の終了したページ領域３ａ２の次のページ領域３ａ３内の対象データを処理するための設定を行うために、演算器２５は、次のページ領域３ａ３に対応する仮想ページの先頭アドレスの物理アドレスを、MMU１１に問い合わせる。外部デバイス４の演算器２５は、MMU１１から受信した物理アドレスと管理情報に基づいて、DMAC２３にDMA処理を実行するための設定を行う。
【００５５】
そして、その設定がされると、演算器２５は、所定の処理を再開する。DMAC２３は、次の対象データの読み出しを、記憶領域３ａ２の次のページ領域３ａ３内の対象データに対して先頭アドレスから順次行う。
【００５６】
以下、同様にして、対象データの全てに対する所定の処理が終了するまで、DMAC２３によって、上述したようなページ単位で、対象データの読み出しが行われながら、演算器２５による所定の処理が実行される。
【００５７】
一方、結果データの最初の出力は、主メモリ３上の記憶領域３ｂから、かつ、ページ単位で行われる。すなわち、結果データの最初の出力は、演算器２５によって所定の処理がされて得られた結果データに対して、記憶領域３ｂ内の最初のページ領域３ｂ１に位置する出力領域の先頭アドレスから順次行われる。すなわち、結果データの最初の出力は、記憶領域３ｂ内の最初のページ領域３ｂ１内のアドレスから順次行われる。結果データの出力をしているときに、結果データの出力が物理空間上のページ領域３ｂ１の最後まで達すると、DMAC２３は、読み出しと出力のDMAの処理と演算器２５の処理を中断して、演算器２５は、DMAC２３への再設定を行う。
【００５８】
具体的には、物理空間上の出力処理の終了したページ領域３ｂ１の次のページ領域３ｂ２に結果データを出力するための設定を行うために、次のページ領域３ｂ２に対応する仮想ページの先頭アドレスの物理アドレスを、MMU１１に問い合わせる。外部デバイス４の演算器２５は、MMU１１から受信した物理アドレスと管理情報に基づいて、DMAC２３にDMA処理を実行するための再設定を行う。
【００５９】
そして、その設定がされると、読み出しと出力のDMAの処理が再開され、演算器２５は、所定の処理を再開する。DMAC２３は、次の結果データの出力を、記憶領域３ｂ１の次のページ領域３ｂ２の先頭アドレスから順次行う。さらに、結果データを出力しているときに、結果データの出力が物理空間上のページ領域３ｂ２の最後まで達すると、DMAC２３は、読み出しと出力のDMAの処理と演算器２５の処理を中断して、演算器２５は、DMAC２３への再設定を行う。
【００６０】
具体的には、物理空間上の出力処理の終了したページ領域３ｂ２の次のページ領域３ｂ３に結果データを出力するための設定を行うために、次のページ領域３ｂ３の仮想アドレスの先頭アドレスの物理アドレスを、MMU１１に問い合わせる。外部デバイス４の演算器２５は、MMU１１から受信した物理アドレスと管理情報に基づいて、DMAC２３にDMA処理を実行するための再設定を行う。そして、DMAC２３は、次の結果データの出力を、記憶領域３ｂの次のページ領域３ｂ３に結果データを、先頭アドレスから順次出力する。
【００６１】
以下、同様にして、結果データの全ての出力の処理が成されるまで、DMAC２３によって、上述したようなページ単位で、処理結果データの出力が行われる。
【００６２】
なお、物理アドレスのページ境界に達したか否かで、DMAの再設定を行うのは、仮想アドレス上は連続な領域であったとしても、物理空間上は複数の不連続なページにデータが分断されている場合があるからである。
【００６３】
以上のように、外部デバイス４において成されるDMAは、ページ単位で対象データの読み出しが行われ、読み出しがページ境界に達すると、DMAC２３の設定を更新するために、演算器２５のデータ処理は中断される。結果データの出力において、ページ境界が検出されると、対象データの読込のDMAの処理を止め、MMUに出力側の情報を問い合わせ、出力側の再設定を行う。
【００６４】
５）CPUにおける例外処理
上述したように、外部デバイス４からの問い合わせ対象のデータがTLB１２内に存在しない場合は例外が発生する。その例外により、その時点においてCPU２上で動作していたプログラムはその実行が中断され、OSの持つメモリ管理のためのメモリマネジャプログラムが起動する。
【００６５】
その例外処理の内容を説明する前に、まず、MMU１１の構成と、MMU１１の動作について説明する。  
図６は、MMU１１の構成を説明するための、主メモリ３と割り込みコントローラ５を省略した情報処理装置の構成を示す構成図である。図１と比較して、図６は、MMU１１の構成に関わる構成要素をより詳細に示している。図６に示すように、CPU２とMMU１１が、バスI/F１３を介して、それぞれバス６に接続されている。MMU１１は、CPU２とTLB１２にも接続されている。なお、図６では、信号の流れは矢印付きの点線で示されている。各種信号の流れについては後述する。
【００６６】
MMU１１は、TLB検索部３１と、TLB更新部３２と、コマンド処理部３３と、専用メモリ３４とを含んで構成されている。さらに、MMU１１は、２つのスイッチ３５，３６を有している。  
TLB検索部３１は、供給された仮想アドレスに対応する物理アドレスを、TLB１２の内容を検索して取得する回路である。TLB更新部３２は、TLB１２の内容を更新する処理を行う回路である。コマンド処理部３３は、バス６を介して受信したコマンドを処理する回路である。スイッチ３５、３６は、それぞれコマンド処理部３３からの指示信号に基づいて選択先が切り替えられるスイッチである。スイッチ３５は、TLB検索部３１によって検索して得られた情報を、CPU２へ出力するか、あるいは専用メモリ３４に出力するかを切り替えるスイッチである。スイッチ３６は、CPU２からのTLB更新信号を、TLB更新部３２へ出力するか、あるいは専用メモリ３４へ出力するかを切り替えるスイッチである。
【００６７】
コマンド処理部３３が、物理アドレスの照会のコマンドを受信したときは、TLB検索部３１に対して検索信号を出力する。また、コマンド処理部３３は、スイッチ３５に対して、TLB検索部３１の検索結果を専用メモリ３４に出力する状態（図６の状態）に切り替える指示信号を出力する。さらに、コマンド処理部３３は、スイッチ３６に対して、CPU２からのTLB更新信号を専用メモリ３４に出力する状態（図６の状態）に切り替える指示信号を出力する。
【００６８】
通常は、スイッチ３５は、TLB検索部３１の検索結果をCPU２に出力する状態にあり、スイッチ３６は、CPU２からのTLB更新信号をTLB更新部３２に出力する状態にある。
【００６９】
また、CPU２は、TLB書き込み処理のためのレジスタ群４０を有する。レジスタ群４０は、BadVaddrレジスタ４１と、EntryHi_Backレジスタ４２と、PageMASKレジスタ４３と、EntryHiレジスタ４４と、EntryLo0レジスタ４５と、EntryLo1レジスタ４６を含む。各レジスタには、CPU２の制御の下で各種データがストアされる。
【００７０】
ここで、TLB１２に登録あるいは記憶される情報について説明する。TLB１２は、複数の仮想アドレスのそれぞれに対応する複数の物理アドレスの情報を登録するための、複数個のエントリー部を有する。図７は、TLB１２の各エントリー部に登録される情報のフォーマットを示す図である。
【００７１】
TLB１２の各エントリー部に登録される情報は、４つの部分５１，５２，５３，５４から構成される。第１の部分５１は、「０」の２つのデータ列と、その２つのデータ列の間に配置された「MASK」データを含む。「MASK」は、ページのサイズを指定するデータである。  
第２の部分５２は、「VPN2」データと、「G」データと、「０」のデータ列と、「ASID」データを含む。「VPN2」は、仮想ページの先頭アドレスに相当するデータである。「G」データは、グローバルビットであり、プロセスIDに相当する「ASID」データを無効にできるビットデータである。「ASID」データは、プロセスIDに相当するデータである。
【００７２】
第３と第４の部分５３、５４は、「０」のデータと、「PFN」データと、「C」データと、「D」データと、「V」データと、「G」データを含む。「PFN」データは、第３の部分５３では、偶数ページの先頭の物理アドレスを相当するデータである。「PFN」データは、第４の部分５４では、奇数ページの先頭の物理アドレスを相当するデータである。ここでは、１つのエントリー部において、偶数と奇数のページを管理するために、PFN等が２つ存在している。「C」データは、そのページにおけるデータキャッシュの属性を決定するデータである。「D」データは、そのページに対する書き込みを許可するためのビットデータであり、コードのように保護すべきデータが配置されている場合は、「０」に設定され、書き込みが禁止される。「V」データは、そのページを有効にするためのビットデータであり、「０」が設定されると、そのページの設定（PFN、C、D等）は無効となり、参照されない。
【００７３】
上述したレジスタのうち、PageMASKレジスタ４３と、EntryHiレジスタ４４と、EntryLo0レジスタ４５と、EntryLo1レジスタ４６の４つのレジスタは、TLB１２中のエントリー部の情報を更新あるいは読み出すためのインターフェースとなる。
【００７４】
図８は、PageMASKレジスタ４３と、EntryHiレジスタ４４と、EntryLo0レジスタ４５と、EntryLo1レジスタ４６の、それぞれに登録される情報の内容を示す図である。  
PageMASKレジスタ４３には、各エントリー部に登録される情報の中の第１の部分５１の情報が登録される。EntryHiレジスタ４４には、各エントリー部に登録される情報の中の第２の部分５２の情報が登録される。EntryLo0レジスタ４５には、各エントリー部に登録される情報の中の第３の部分５３の情報が登録される。EntryLo1レジスタ４６には、各エントリー部に登録される情報の中の第３の部分５４の情報が登録される。
【００７５】
通常のCPU２からの物理アドレスの問い合わせがあると、TLB検索部３１は、TLB１２の検索を行い、検索して得られた物理アドレスと管理情報をスイッチ３５を介してCPU２へ供給する。
【００７６】
CPU２からの物理アドレスの問い合わせに対してTLB検索部３１がTLB１２を検索した結果、対応する物理アドレスのデータがTLB１２内に無いときは、TLB検索部３１は、TLBリフィルの例外処理を実行させる信号を発生し、OSのメモリマネジャプログラムに、TLB１２の更新を実行させる信号を出力する。CPU２のメモリマネジャプログラムは、例外処理を実行する。例外処理では、CPU２のメモリマネジャプログラムは、TLB１２内に無かった対応する物理アドレスに関する情報をメモリマネージャーが管理する情報より抽出し、TLB更新部３２に対して、その抽出した情報に基づいてTLB１２の更新処理を指示するTLB書き込み信号を出力する。
【００７７】
メモリマネジャプログラムは、PageMASKレジスタ４３と、EntryHiレジスタ４４と、EntryLo0レジスタ４５と、EntryLo1レジスタ４６の４つのレジスタに、TLB１２内に無かった対応する物理アドレスに関する情報を書き込む。これらの４つのレジスタに書き込まれた情報を用いて、TLB更新部３２はTLB１２の内容を更新する。  
TLB１２が更新された結果、CPU２は、要求した物理アドレスの情報を、TLB検索部３１から取得することができる。  
以上のようにして、CPU２は、MMU１１から物理アドレスの情報を得ることができる。
【００７８】
次に、外部デバイス４から物理アドレスの問い合わせがあった場合について説明する。上述したように、MMU１１はCPU２への物理アドレスの提供を行うだけでなく、バス６に接続された外部デバイス４に対しても物理アドレスの提供を行う。なお、以下の説明で、カッコ内に示す符号は、図６中の信号の流れを示す点線の識別符号である。
【００７９】
まず、コマンド処理部３３が、バス６を経由して外部デバイス４から、物理アドレスを要求するコマンドを受け付ける（a11）。コマンド処理部３３は、TLB検索部３１に対して、外部デバイス４から指定されたプロセス空間上の仮想アドレスに該当する情報を検索する信号を出力する（a12）。TLB検索部３１は、TLB１２に対して検索を行う（a13）。TLB検索部３１は、検索結果を得る（a14）。TLB検索部３１は、該当する情報を含むエントリー部が存在した場合、その設定内容を読み出し、MMU１１内の専用メモリ３４へ保持する（a15）。
【００８０】
TLB１２上に該当する情報を含むエントリー部が存在しない場合、TLB検索部３１は、TLBリフィルの例外処理を実行させる信号を発生し、OSのメモリマネジャプログラムに対し、TLB１２の更新処理を実行させる信号を出力する（a16）。このとき、CPUは、EntryHiレジスタ４４の内容を、EntryHi_Backレジスタ４２に退避し（a21）、外部デバイス４から問い合わせを受けた仮想アドレスをBadVaddrレジスタ４１に設定する。さらに、プロセスIDに相当するASIDがEntryHiレジスタ４４に設定される。但し、この処理はCPU２が例外処理中の場合、遅延される。なお、メモリマネジャプログラムは、例外処理が発生すると、TLB書き換えのための情報を生成して出力するが、メモリマネジャプログラムは、例外処理が発生した原因が、プログラムなのか、外部デバイスなのかはわからない。
【００８１】
しかし、スイッチ３６は、専用メモリ３４側に切り替わっているので、OSによるTLB更新処理の結果は、TLB１２へは反映されずに、MMU１１内の専用メモリ３４へ保持される（a17）。すなわち、MMU１１がTLB１２への情報の書き込みをブロックし、その情報をTLB１２ではなく、外部デバイス４へ出力するので、OS自体の変更は必要ない。
【００８２】
そして、OSの例外処理の復帰処理に連動して、退避されていたEntryHiレジスタ４４の内容がEntryHi_Backレジスタ４２からEntryHiレジスタ４４に書き戻される（a22）。
【００８３】
MMU１１は、外部デバイス４から指定されたプロセス空間上の仮想アドレスに該当する物理アドレス（PFNから算出される）、ページサイズ(MASKに該当する)、及びページ属性(上記の例では「D」データに該当する)を、専用メモリ３４から読みだし、問い合わせ元である外部デバイス４に対し出力する（a18）。すなわち、MMU１１は、OSによるTLB１２への書き込み処理をブロックし、ブロックされたデータから物理アドレスの生成とページサイズ及び同ページの管理すなわち属性の情報を抽出し、バス６を経由して外部デバイス４へ通知する。
【００８４】
外部デバイス４は、CPU２側から受信した情報（転送元先頭仮想アドレスに対応する物理アドレス、ページの管理単位（サイズ）、自プロセスにおける同仮想空間のパーミッションを基に、所定の処理において必要なDMA処理を実行する。  
このとき、対象とする仮想ページが「参照禁止（データの出力においては改変禁止）」であった場合、DMAC２３はエラー情報を出力し、DMA処理は行わない。更に外部デバイス４は、発生したエラーを割込みとしてCPU２へ通知する。すなわち、外部デバイス４は、MMU１１からバス６を経由して通知された対象ページの管理情報を基に、DMA処理の可否を判断し、DMA処理不可の場合には割込み処理を用いてCPU２に対しエラーを通知する機能を有する。
【００８５】
また、外部デバイス４は、通知されたページサイズから、所定の処理に必要なデータの転送サイズ分の処理が同ページ内で完了するか否かを判断する。同一ページ内に対象データが収まっている場合には、DMAによる読み出し処理は1回のDMA処理で完了するが、同一ページ内に対象データが収まっていない場合には、DMAによる読み出し処理は複数回に分断される。このとき、外部デバイス４は、一回のDMA処理終了時点で割り込みを発生させずに、再びMMU１１へ、続いて処理すべき領域の仮想アドレスに関する物理アドレス等の情報を問い合わせて前述のように必要とする情報を取得する。つまり、DMA転送が全て終了するまで外部デバイス４とMMU１１間では、プロセス空間上の仮想アドレスと物理アドレスの受け渡しが繰り返される。
【００８６】
以上のように、CPU２と共にバス６に接続された外部デバイス４は、データ入出力のための専用のDMAC２３を有し、さらにI/F２４には、それらデータのアドレスとしてCPU２上のOSによって管理されるプロセス空間における仮想アドレスが指定される。外部デバイス４は、CPU２の機能であるMMU１１を介しCPU２上のOSと協調し、指定されたプロセス空間上の仮想アドレスに対応する物理アドレスを取得して、DMAを行うことができる。さらに、外部デバイス４は、OSがプロセス空間上の仮想アドレスに付与した属性に従ってメモリアクセスを実行する。  
外部デバイス４は、MMU１１からバス６を経由して通知されたページサイズからアクセス可能なデータサイズを算出し、DMA処理を自律的にページ境界で中断し、DMA処理を継続するために更にMMU１１に対しバス６を経由して対象データの仮想アドレスの物理アドレスへの変換要求を出力し、その応答を待って他の仮想アドレスの要求、DMA処理の実行、エラーの検出および割込みの発生を行う。
【００８７】
その結果、本実施の形態によれば、UNIX等の高機能OSにおいて、CPU２外の情報処理装置である外部デバイス４を使用する際に必要となるデータのコピー処理、その外部デバイス専用のワーク領域の確保等の、オーバーヘッドを排除することが可能となる。更に、MMU１１によるメモリ保護の機能を外部デバイス４の動作にも反映することができる。また、既存のプログラムの一部を改変して、外部デバイス４による処理に置き換えるようにする場合においても、プログラムの改変を最小限にとどめることが出来るものである。
【００８８】
以上のように、本実施の形態によれば、外部デバイスを用いた処理を行うためのCPUのオーバーヘッドを低減し、OSの有するメモリ管理機構に協調する情報処理装置及びその方法を実現することができる。
【００８９】
上述したように、従来の技術によれば、プログラムの処理の一部を外部デバイスに代替させる場合において、外部デバイス用に入出力バッファ領域を主メモリ上に獲得し、しかもそれらの領域は物理アドレス上連続である必要があった。更に、対象データを外部デバイス用入力バッファ領域に予めコピーし、外部デバイスの処理終了後に外部デバイス用出力バッファ領域からプログラムが指定したプロセス空間上の領域にコピー等のオーバーヘッドがあった。
【００９０】
しかし、本実施の形態によれば、プログラムの処理の一部を外部デバイスに代替させる場合において、従来のような領域の確保、更にはデータのコピー処理等が必要なく、主メモリの使用効率、情報処理装置全体のパフォーマンスが向上する。  
また、プログラムは、対象データが配置されたプロセス空間上の領域が物理空間上何処に配置され、どのように分断されているかを特定する必要が無い。さらに、プログラムは、外部デバイスの処理のために仮想アドレスを物理アドレスに変換する処理無しに、外部デバイスを利用することが出来るため、外部デバイスによる一部の処理を実現する場合におけるプログラムの改変を極力少ないものに出来る。
【００９１】
また、外部デバイスの有するDMACは、MMUの提供する情報に基いたデータの入出力を実施するため、本実施の形態によれば、アクセス権限の無いメモリ空間からの入力やアクセス権限の無いメモリ空間への出力は抑制され、OSのカーネルと連動したメモリ保護が実現できる。更に、外部デバイスの制御に直接プロセス空間上の仮想アドレスを指定できることから、既存のソフトウエアの一部を外部デバイスによる処理に置き換える場合において、ソフトウエアの改変を最小限にとどめることが出来る。
【００９２】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【００９３】
【図１】本発明の実施の形態に係わる情報処理装置の構成を示す構成図である。
【図２】本発明の実施の形態に係わる情報処理装置における外部デバイスの処理の流れを説明するための図である。
【図３】本発明の実施の形態に係わる情報処理装置における外部デバイスの処理の流れを説明するための図である。
【図４】本発明の実施の形態に係わる情報処理装置における外部デバイスの処理の流れを説明するための図である。
【図５】本発明の実施の形態に係わる情報処理装置における外部デバイスの処理の流れを説明するための図である。
【図６】本発明の実施の形態に係わるMMUの構成を説明するための、主メモリと割り込みコントローラを省略した情報処理装置の構成を示す構成図である。
【図７】本発明の実施の形態に係わるTLBの各エントリー部に登録される情報のフォーマットを示す図である。
【図８】本発明の実施の形態に係わる、PageMASKレジスタ４３と、EntryHiレジスタ４４と、EntryLo0レジスタ４５と、EntryLo1レジスタ４６の、それぞれに登録される情報の内容を示す図である。
【符号の説明】
【００９４】
１  情報処理装置、３  主メモリ、１１  MMU、４０  レジスタ群
【図１】
2008102850.tif 000003
【図２】
2008102850.tif 000004
【図３】
2008102850.tif 000005
【図４】
2008102850.tif 000006
【図５】
2008102850.tif 000007
【図６】
2008102850.tif 000008
【図７】
2008102850.tif 000009
【図８】
2008102850.tif 000010