JP2008102850A - 情報処理装置及び情報処理方法 - Google Patents
情報処理装置及び情報処理方法 Download PDFInfo
- Publication number
- JP2008102850A JP2008102850A JP2006286577A JP2006286577A JP2008102850A JP 2008102850 A JP2008102850 A JP 2008102850A JP 2006286577 A JP2006286577 A JP 2006286577A JP 2006286577 A JP2006286577 A JP 2006286577A JP 2008102850 A JP2008102850 A JP 2008102850A
- Authority
- JP
- Japan
- Prior art keywords
- physical address
- data
- address
- memory
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
Abstract
【課題】外部デバイスを用いた所定の処理を行うためのCPUのオーバーヘッドを低減する。
【解決手段】DMA C23は、外部デバイス4において、入力データの物理アドレスとして設定されたメモリ3の物理アドレスに基づいて、メモリ3からの入力データのデータ転送を行い、かつ出力データの物理アドレスとして設定されたメモリ3の物理アドレスに基づいて、メモリ3への出力データのデータ転送を行う。外部デバイス4は、所定の処理の対象データの仮想アドレスに対応する物理アドレスをMMU11から取得し、所定の処理の結果データの仮想アドレスに対応する物理アドレスをMMU11から取得する。外部デバイス4は、取得された対象データの物理アドレスと結果データの物理アドレスとを、それぞれ入力データの物理アドレスと出力データの物理アドレスとして設定する。
【選択図】図5
【解決手段】DMA C23は、外部デバイス4において、入力データの物理アドレスとして設定されたメモリ3の物理アドレスに基づいて、メモリ3からの入力データのデータ転送を行い、かつ出力データの物理アドレスとして設定されたメモリ3の物理アドレスに基づいて、メモリ3への出力データのデータ転送を行う。外部デバイス4は、所定の処理の対象データの仮想アドレスに対応する物理アドレスをMMU11から取得し、所定の処理の結果データの仮想アドレスに対応する物理アドレスをMMU11から取得する。外部デバイス4は、取得された対象データの物理アドレスと結果データの物理アドレスとを、それぞれ入力データの物理アドレスと出力データの物理アドレスとして設定する。
【選択図】図5
Description
本発明は、情報処理装置及び情報処理方法に関し、特に、外部処理装置を利用して所定の処理を行う情報処理装置及び情報処理方法に関する。
近年、コンピュータ上で実行されるアプリケーションプログラム等(以下、単にプログラムともいう)の処理内容の複雑化に伴い、中央処理装置(以下、CPUという)で行っていた処理の一部を、他のCPU、専用チップ等の外部処理装置(以下、外部デバイスという)に代替させて実行させるケースが増えてきている。例えば、アプリケーションの処理の中の、特定の処理、例えば画像処理等の処理が、外部デバイスに依頼されるケースである。このようなケースのアプリケーションの場合、プログラマは、次の点に注意を向ける。
まず、第1に、プログラマは、外部デバイスの処理の対象データが主メモリ上のデータである場合、キャッシュ(cache)と主メモリ間の不一致状態(インコヒーレントな状態)を解消した上で、外部デバイスによる所定の処理が行われるようにする必要がある点に注意する。近年、キャッシュ・スヌープ(cache snoop)の機能の実装が、一般的になりつつあり、キャッシュと主メモリ間のインコヒーレントな状態の解消が特に大きな問題とは言えない状況にあるが、外部デバイスに所定の処理を依頼するためには、このような対応を含めて種々のオーバーヘッドが存在する。
まず、第1に、プログラマは、外部デバイスの処理の対象データが主メモリ上のデータである場合、キャッシュ(cache)と主メモリ間の不一致状態(インコヒーレントな状態)を解消した上で、外部デバイスによる所定の処理が行われるようにする必要がある点に注意する。近年、キャッシュ・スヌープ(cache snoop)の機能の実装が、一般的になりつつあり、キャッシュと主メモリ間のインコヒーレントな状態の解消が特に大きな問題とは言えない状況にあるが、外部デバイスに所定の処理を依頼するためには、このような対応を含めて種々のオーバーヘッドが存在する。
また、各プログラムの実行は、対応するプロセス空間上の仮想アドレスに基づいて、オペレーティングシステム(以下、OSという)によって、管理されるが、その仮想アドレスはCPUのメモリ管理機能により実アドレス、すなわち物理アドレスにマッピングされる。
よって、第2に、プログラマは、仮想アドレスと物理アドレスとの対応関係と、プロセス空間上の仮想アドレスの管理方法の点に注意する。例えば、処理の対象データが主メモリ上に定義された比較的大きなバッファ領域に格納されている状況を想定する。ここで、このバッファ領域を管理しているのはCPU上で動作するプログラムである。このバッファ領域は、仮想アドレス上連続した領域としてプログラムから参照あるいは更新がされるが、この仮想アドレス上の連続領域は、必ずしも物理アドレス上では連続な領域とは限らない場合がある。
よって、第2に、プログラマは、仮想アドレスと物理アドレスとの対応関係と、プロセス空間上の仮想アドレスの管理方法の点に注意する。例えば、処理の対象データが主メモリ上に定義された比較的大きなバッファ領域に格納されている状況を想定する。ここで、このバッファ領域を管理しているのはCPU上で動作するプログラムである。このバッファ領域は、仮想アドレス上連続した領域としてプログラムから参照あるいは更新がされるが、この仮想アドレス上の連続領域は、必ずしも物理アドレス上では連続な領域とは限らない場合がある。
更に、CPUのメモリ管理機能は、仮想アドレスと物理アドレスの対応付けのみならず、その仮想アドレスに対するプログラムのアクセス権限も管理している。しかし、一般に物理アドレスをベースに動作する外部デバイスはCPUのメモリ管理機能とは独立な存在であり、外部デバイスは、CPUのメモリ管理機能が書き込みを禁止しているメモリ領域に対してもデータの書き込みが行うことができてしまう。つまり、プログラマは、CPUのメモリ管理機能は、外部デバイスの動作を抑制できない点にも注意する。
ここでさらに、上記の第2の点について、例を用いて詳述する。例えば、ある外部デバイスが専用の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の持つ機能として一般的な機構以外の機構が提案されている(例えば、特許文献1参照)。
その提案に係る機構によれば、特定のメモリ上のアドレスへの書き込み操作は、監視され排除される。あるシステム上で動作するプログラムが予め決められており、その主メモリ上の配置も動的に変更されない状況にあっては、特定のメモリ上のアドレスへの書き込み操作を監視し排除するその提案に係る機構は、有効ではある。しかしながら、近年組み込み環境においても広く浸透しつつあるUNIX系のOSにおいては、実行されるプログラムの配置、生成、消滅は動的に制御されるので、その提案に係る機構をそのようなOSに適用することはできない。ところが、そのようなOSは、MMUの機能を使い、そしてそのMMUの機能をメモリ管理ソフトウエアが補足する形で主メモリ上に配置された特定のデータ及びコードの保護を実現している。すなわち、MMUがCPUに対し物理アドレスを供給するときに、書き込みが禁止されている領域なのか、等の保護情報も合わせて供給する。従って、そのようなOSが搭載されたシステムでは、システム全体の処理性能はともかく、公知の技術と、MMUと、OSのメモリ管理ソフトウエアが、主メモリ上に配置された特定のデータ及びコードを保護する機構として十分に機能しているのである。
その提案に係る機構によれば、特定のメモリ上のアドレスへの書き込み操作は、監視され排除される。あるシステム上で動作するプログラムが予め決められており、その主メモリ上の配置も動的に変更されない状況にあっては、特定のメモリ上のアドレスへの書き込み操作を監視し排除するその提案に係る機構は、有効ではある。しかしながら、近年組み込み環境においても広く浸透しつつあるUNIX系のOSにおいては、実行されるプログラムの配置、生成、消滅は動的に制御されるので、その提案に係る機構をそのようなOSに適用することはできない。ところが、そのようなOSは、MMUの機能を使い、そしてそのMMUの機能をメモリ管理ソフトウエアが補足する形で主メモリ上に配置された特定のデータ及びコードの保護を実現している。すなわち、MMUがCPUに対し物理アドレスを供給するときに、書き込みが禁止されている領域なのか、等の保護情報も合わせて供給する。従って、そのようなOSが搭載されたシステムでは、システム全体の処理性能はともかく、公知の技術と、MMUと、OSのメモリ管理ソフトウエアが、主メモリ上に配置された特定のデータ及びコードを保護する機構として十分に機能しているのである。
また、仮想アドレスをベースとした外部デバイスの処理を実現する機構も、提案されている(例えば、特許文献2参照)。その提案によれば、専用のDMACを有する画像処理デバイスが専用のローカルバスを有し、そのローカルバスと、主メモリ及びCPUが接続されているメインのバスとの間にバス変換器を設け、そのバス変換器には仮想アドレスと物理アドレスを変換するための拡張バス用のMMUが設けられている。
しかし、上述したUNIX系のOSのように、実行されるプログラムの配置、生成、消滅が動的に制御され、しかも、そのOS上で動作するプログラムが、どのような仮想アドレス(正確にはプロセス空間上の仮想アドレス)上に生成され、その仮想アドレスが具体的にはどのような物理アドレスに対応するかを知ることができない場合に、その提案に係る機構において拡張バス用のMMUに、プログラムが自ら使用するメモリ領域の仮想アドレスとそれに対応する物理アドレスを設定することは、一般には難しい。
更に、その提案に係る機構を用いた場合、プログラムが使用するメモリ領域が仮想アドレス上は連続であったとしても、実際の物理アドレス上はMMUの管理単位(一般にページと呼ばれる)においては不連続になっている可能性があるので、外部デバイスの持つDMACが動作する前に、必要な仮想アドレスと物理アドレスとの対応関係を完全に拡張バス用のMMUに設定しておかなければならないといった不都合もある。
以上のように、CPU上で動作するソフトウエアが担っていた処理の一部を外部デバイスが代替して処理するようなプログラムの場合、プロセス空間上の仮想アドレスで指し示される処理対象であるところの一連のデータが、物理空間上は不連続に配置される可能性があり、それらを物理空間上連続な領域にコピーする必要があった。更に、外部デバイスにおける所定の処理の結果出力も、同様に物理空間上連続な領域からプロセス空間上の仮想アドレスの指す領域へコピーする必要があった。CPUのこのようなコピー処理の負荷量は、コピー処理の対象のデータ量に依存するため、このような外部デバイスを利用するためのコピー処理等のオーバーヘッドは、CPUを含むシステム全体の性能の低下に繋がる。そして、例外処理によってプログラムの動作モードを変更するAPI、及び、外部デバイスに対して種々の設定を行うドライバルーチンプログラムは、その外部デバイス専用となるため、新たなソフトウエアとしての開発が必要となるという問題があった。
特願平10-192130号公報
特願平07-232740号公報
そこで、本発明は、外部デバイスを用いた所定の処理を行うためのCPUのオーバーヘッドを低減する情報処理装置及びその方法を提供することを目的とする。
本発明の一態様によれば、中央処理装置と、バスを介して前記中央処理装置と接続されたメモリと、前記バスを介して前記中央処理装置と前記メモリとに接続され、所定の処理を実行する外部処理装置と、前記中央処理装置において実行されるプロセスの仮想アドレスが入力されると、該仮想アドレスに対応する前記メモリの物理アドレスを出力するアドレス変換部と、前記外部処理装置に設けられ、入力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリからの前記入力データのデータ転送を行い、かつ出力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリへの前記出力データのデータ転送を行う転送部と、前記所定の処理の対象データの仮想アドレスに対応する物理アドレスを前記アドレス変換部から取得し、前記所定の処理の結果データの仮想アドレスに対応する物理アドレスを前記アドレス変換部から取得する物理アドレス取得部と、該物理アドレス取得部において取得された前記対象データの物理アドレスと前記結果データの物理アドレスとが、それぞれ、前記データ転送部の前記入力データの物理アドレスと前記出力データの物理アドレスとして設定される設定部と、を有することを特徴とする情報処理装置を提供することができる。
本発明の一態様によれば、中央処理装置と、バスを介して前記中央処理装置と接続されたメモリと、前記バスを介して前記中央処理装置と前記メモリとに接続され、所定の処理を実行する外部処理装置と、前記中央処理装置において実行されるプロセスの仮想アドレスが入力されると、該仮想アドレスに対応する前記メモリの物理アドレスを出力するアドレス変換部と、前記外部処理装置に設けられ、入力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリからの前記入力データのデータ転送を行い、かつ出力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリへの前記出力データのデータ転送を行う転送部と、を含む情報処理装置におけるデータ処理方法であって、前記所定の処理の対象データの仮想アドレスに対応する物理アドレスを前記アドレス変換部から取得し、前記所定の処理の結果データの仮想アドレスに対応する物理アドレスを前記アドレス変換部から取得し、取得された前記対象データの物理アドレスと前記結果データの物理アドレスとを、それぞれ、前記入力データの物理アドレスと前記出力データの物理アドレスとして設定し、前記転送部によって、前記入力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリからの前記入力データのデータ転送を行い、前記転送部によって、前記出力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリへの前記出力データのデータ転送を行うことを特徴とする情報処理方法を提供することができる。
本発明によれば、外部デバイスを用いた所定の処理を行うためのCPUのオーバーヘッドを低減する情報処理装置及びその方法を実現することができる。
以下、図面を参照して本発明の実施の形態を説明する。
(装置構成)
まず図1に基づき、本実施の形態に係わる情報処理装置の構成を説明する。図1は、本実施の形態に係わる情報処理装置の構成を示す構成図である。
(装置構成)
まず図1に基づき、本実施の形態に係わる情報処理装置の構成を説明する。図1は、本実施の形態に係わる情報処理装置の構成を示す構成図である。
図1に示すように、情報処理装置1は、CPU2と、主メモリ3と、外部デバイス4と、割り込みコントローラ5を含んで構成されている。CPU2と、主メモリ3と、外部デバイス4と、割り込みコントローラ5とは、互いに、バス6を介して接続されている。CPU2は、図示しないROMやストレージから読み出したプログラムを主メモリ3に展開して、実行する。CPU2がそのプログラムを実行する際、プロセス空間上の仮想アドレスを指定することによって、実行すべきコード及び処理すべきデータが特定される。そのとき、CPU2は、実行すべきコード及び処理すべきデータに対応する、RAM等のメモリである主メモリ3の物理アドレスを、メモリ・マネジメント・ユニット(以下、MMUという)11に問い合わせ、その問い合わせに対して得られた物理アドレスに基づいて、そのコードあるいはデータを主メモリ3から読み出して実行あるいは処理することができる。そして、後述するように、CPU2上で実行されている1つ又は複数のプログラムは、その処理の一部或いは全てをCPU2以外の情報処理装置である外部デバイス4に実行させることができる。
MMU11は、CPU2とバス6に接続され、さらに、MMU11は、TLB(Translation Look-aside Buffer)12に接続されている。TLB12は、仮想アドレスと物理アドレスの対応関係の情報が記憶された対応テーブルを含み、TLB12には、仮想アドレスと物理アドレスの対応関係の情報と、仮想ページの管理情報が登録されている。
このTLB12におけるメモリ管理はあるサイズを持つ「ページ」単位で行われ、TLB12には、ページ先頭の仮想アドレス(後述するプロセスIDを含む場合がある)とそれに対応する物理アドレスに加え、管理情報が記録されている。管理情報には、仮想ページのページサイズとページ属性の情報が含まれる。さらに、ページ属性の情報には、D-cacheの特性、パーミッションの情報等が含まれる。パーミッションの情報は、プロセスの仮想アドレスあるいは仮想空間の実行権、参照権、改変権等の情報である。実行権は、コードの実行の可否であり、参照権はコードあるいはデータの参照の可否であり、改変権は、コードあるいはデータの変更の可否である。図示しないOSに含まれるメモリマネジャプログラムが、TLB12内の仮想アドレスと物理アドレスの対応関係のデータの設定、再設定等の管理を行う。
このTLB12におけるメモリ管理はあるサイズを持つ「ページ」単位で行われ、TLB12には、ページ先頭の仮想アドレス(後述するプロセスIDを含む場合がある)とそれに対応する物理アドレスに加え、管理情報が記録されている。管理情報には、仮想ページのページサイズとページ属性の情報が含まれる。さらに、ページ属性の情報には、D-cacheの特性、パーミッションの情報等が含まれる。パーミッションの情報は、プロセスの仮想アドレスあるいは仮想空間の実行権、参照権、改変権等の情報である。実行権は、コードの実行の可否であり、参照権はコードあるいはデータの参照の可否であり、改変権は、コードあるいはデータの変更の可否である。図示しないOSに含まれるメモリマネジャプログラムが、TLB12内の仮想アドレスと物理アドレスの対応関係のデータの設定、再設定等の管理を行う。
MMU11は、TLB12を参照して、CPU2からの物理アドレスの問い合わせに対して物理アドレスと管理情報を供給する。すなわち、MMU11は、プロセスの仮想アドレスが入力されると、仮想アドレスに対応する主メモリ3の物理アドレスと管理情報を出力するアドレス変換部を構成する。MMU11は、論理アドレスと物理アドレスの対応情報を、CPU2に供給する。また、問い合わせに係る仮想アドレスのデータがTLB12に無いときは、CPU2のメモリ管理部であるメモリマネジャプログラムによって、TLB12の内容の書き換え処理を行う。なお、後述するように、MMU11は、外部デバイス4からも物理アドレスの問い合わせを受け、物理アドレスと管理情報を供給する。
従って、MMU11は、物理アドレスの情報とともに、仮想ページの管理情報も、CPU2あるいは外部デバイス4に供給する。
主メモリ3は、CPU2と外部デバイス4がアクセスする記憶装置である。主メモリ3がCPUによってアクセスされるときは、CPU上で動作するプログラムは仮想アドレスを指定するが、その仮想アドレスはMMU11によって物理アドレスに変換され、その物理アドレスによってコードあるいはデータの位置が指定される。
外部デバイス4は、バスマスタであり、所定の処理を実行する機能を有するCPUを含む装置、ロジック回路等である。外部デバイス4は、入力バッファ21と、出力バッファ22と、DMAC23と、インターフェース(以下、I/Fと略す)24と、演算器25とを含んで構成されている。
入力バッファ21と出力バッファ22は、バス6とDMAC23に接続されている。なお、本実施の形態では、入力バッファと出力バッファは個別に設けているが、入力バッファ21と出力バッファ22は、1つのバッファでもよく、そのバッファ内に2つの領域が有ればよい。さらに、その1つのバッファの場合、2つの領域でなくても、その1つのバッファは、1つの領域を有して、入力データを処理してから、その同じ1つの領域に、出力データが書き込まれるようにしてもよい。
DMAC23は、入力データの物理アドレスが設定されると、その物理アドレスに基づいて、バス6を介して主メモリ3からの入力データのデータ転送を行い、出力データの物理アドレスが設定されると、その物理アドレスに基づいて、バス6を介して主メモリ3への出力データのデータ転送を行う。すなわち、DMAC23は、DMAの処理を実行する転送部を構成する。
また、DMAC23は、データが設定可能なレジスタを含み、そのレジスタに所定のデータが設定されると、DMAC23が起動されて、DMAの処理を実行する。DMAC23は、対象データの物理アドレスと結果データの物理アドレスとが、それぞれ、DMAの入力データの物理アドレスと出力データの物理アドレスとして設定される設定部を構成する。
I/F24は、複数のレジスタを含み、外部レジスタ4に対する処理内容、対象データの仮想アドレス、処理結果の出力先の仮想アドレス、及びプロセスIDを登録する登録部を構成する。
演算器25は、その所定の処理を実行する処理部であって、その所定の処理は、例えば、画像処理、暗号化処理等である。すなわち、外部デバイス4は、CPU2が実行するプログラム中の処理の一部、例えば、画像処理、暗号化処理等を実行するための装置である。
演算器25は、I/F24に所定のデータが設定されると、その所定の処理を実行する。具体的には、演算器25は、対象データの仮想アドレスをMMU11にバス6を介して送信して、MMU11からその仮想アドレスに対応する物理アドレスと管理情報を取得し、かつ結果データの仮想アドレスをMMU11にバス6を介して送信して、MMU11からその仮想アドレスに対応する物理アドレスと管理情報を取得する。すなわち、演算器25は、DMAC23に設定する入力データと出力データのそれぞれの物理アドレスと管理情報を、MMU11から取得する物理アドレス取得部を構成する。
よって、演算器25は、対象データと結果データのそれぞれの仮想アドレスに対応する物理アドレスをMMU11に問い合わせて取得し、取得した物理アドレスと管理情報をDMAの処理のためにDMAC23に設定する。DMAC23に所定のデータが設定されるとDMAC23が起動する。DMAC23は、設定された物理アドレスに基づいて、主メモリ3の指定されたアドレス領域の対象データを読み出す。外部デバイス4の演算器25は、その読み出されたデータに対して所定の処理を実行する。そして、DMAC23は、設定された物理アドレスに基づいて、主メモリ3の指定されたアドレス領域に結果データを書き込む。
(全体の処理)
通常、アプリケーションプログラム等のプログラムを実行する際、CPU2は、実行プログラムの仮想アドレスに対応する物理アドレスをMMU11に問い合わせてMMU11から主メモリ3の物理アドレスと管理情報を得て、プログラムを実行する。問い合わせのあった物理アドレスの情報がTLB12にない場合は、例外すなわち割り込みが発生し、OSの管理の下でメモリマネジャプログラムがTLB12の内容を更新する処理を行うことによって、CPU2は、内容の更新されたMMU11から物理アドレスと管理情報を得てそのプログラムを実行することができる。なお、複数のプログラムがCPU2上で実行されていても、各プログラムのプロセス空間は、仮想アドレスにプロセスIDを付加することによって拡張されているので、プログラム間では仮想アドレスは区別されている。
さらに、CPU2は、実行しているプログラムの中のある処理が外部デバイス4によって処理されるものであるときは、外部デバイス4にその処理を依頼する。
通常、アプリケーションプログラム等のプログラムを実行する際、CPU2は、実行プログラムの仮想アドレスに対応する物理アドレスをMMU11に問い合わせてMMU11から主メモリ3の物理アドレスと管理情報を得て、プログラムを実行する。問い合わせのあった物理アドレスの情報がTLB12にない場合は、例外すなわち割り込みが発生し、OSの管理の下でメモリマネジャプログラムがTLB12の内容を更新する処理を行うことによって、CPU2は、内容の更新されたMMU11から物理アドレスと管理情報を得てそのプログラムを実行することができる。なお、複数のプログラムがCPU2上で実行されていても、各プログラムのプロセス空間は、仮想アドレスにプロセスIDを付加することによって拡張されているので、プログラム間では仮想アドレスは区別されている。
さらに、CPU2は、実行しているプログラムの中のある処理が外部デバイス4によって処理されるものであるときは、外部デバイス4にその処理を依頼する。
従って、外部デバイス4は、CPU2から指定された主メモリ3の所定の記憶領域3aにある対象データを入力として所定の処理を実行し、その処理の結果データを、CPU2から指定された主メモリ3の所定の記憶領域3bに出力する。
CPU2は、外部デバイス4に所定の処理を依頼した後は、そのプログラムの処理を一旦休止し、他の実行できるプログラムを実行する。外部デバイス4の処理の終了は、割り込み信号により通知され、その通知を受けると、その休止していたプログラムの処理は、再開される。
なお、CPU2が、外部デバイス4に所定の処理を依頼する場合、DMAC23がデータの入力及び出力をする主メモリ3上の記憶領域は、外部デバイス4に対して指示を行う、CPU2上で動作しているドライバプログラムによって指定される。そのドライバプログラムは、外部デバイス4に対して処理に関する設定、処理の起動、終了の処理を行う。具体的には、そのドライバプログラムは、I/F24に所定のデータを書き込むことによって、外部デバイス4を動作させることができる。
(外部デバイスにおける処理)
次に、プログラムが外部デバイス4に対して所定の処理を依頼するときの情報処理装置1の動作について、図2から図5を用いて説明する。図2から図5は、情報処理装置1における外部デバイスの処理の流れを説明するための図である。
1)プログラムから外部デバイスへの処理の依頼
CPU2上で動作するプログラムは、外部デバイス4にその所定の処理を依頼するときは、
(a)処理内容(データサイズを含む)、
(b)プロセス空間における対象データの仮想アドレス、
(c) プロセス空間における処理結果の結果データの出力先の仮想アドレス、
(d)そのプログラムのプロセスID(プロセスの識別子)、
の情報をI/F24に設定、すなわち登録する。I/F24は、上述したように複数のレジスタを有するので、それらの情報はその複数のレジスタに登録される。図1において、一点鎖線の矢印P1で示すように、CPU2からバス6を介してI/F24に対して、これらの情報の設定が行われる。
次に、プログラムが外部デバイス4に対して所定の処理を依頼するときの情報処理装置1の動作について、図2から図5を用いて説明する。図2から図5は、情報処理装置1における外部デバイスの処理の流れを説明するための図である。
1)プログラムから外部デバイスへの処理の依頼
CPU2上で動作するプログラムは、外部デバイス4にその所定の処理を依頼するときは、
(a)処理内容(データサイズを含む)、
(b)プロセス空間における対象データの仮想アドレス、
(c) プロセス空間における処理結果の結果データの出力先の仮想アドレス、
(d)そのプログラムのプロセスID(プロセスの識別子)、
の情報をI/F24に設定、すなわち登録する。I/F24は、上述したように複数のレジスタを有するので、それらの情報はその複数のレジスタに登録される。図1において、一点鎖線の矢印P1で示すように、CPU2からバス6を介してI/F24に対して、これらの情報の設定が行われる。
ここで、プロセスIDは、そのプログラムのプロセス空間の識別子である。これらのデータの登録が完了すると、外部デバイス4において後述する処理が実行される。なお、外部デバイス4を利用するプログラムは、外部デバイス4を利用する前に、自己のプロセスIDを、例えば、OSに対して所定のコマンドを送信することによって取得することができる。
なお、本実施の形態では、入力データのサイズと出力データのサイズは、同じものとして説明するが、異なる場合には、出力データのサイズ指定が必要となったり、或いは実行する処理のアルゴリズムによって出力データのサイズが一意であったりする。
なお、本実施の形態では、入力データのサイズと出力データのサイズは、同じものとして説明するが、異なる場合には、出力データのサイズ指定が必要となったり、或いは実行する処理のアルゴリズムによって出力データのサイズが一意であったりする。
2)外部デバイスにおける対象データの読み出しに関する物理アドレスの取得とDMACの設定
図2において一点鎖線の矢印P2で示すように、外部デバイス4の演算器25は、その対象データの仮想アドレスとプログラムのプロセスID(d)の情報をMMU11へ供給することによって、設定された上記の対象データの仮想アドレス(b)に対応する物理アドレスを、CPU2側のMMU11に問い合わせる。これは、外部デバイス4が、対象データの配置された物理アドレスと、仮想ページの管理情報(ページサイズ、ページ属性)とを得るためである。MMU11は、問い合わせのあったプロセス空間上の仮想アドレスに対応する物理アドレスと、仮想ページの管理情報を、TLB12を参照して読み出して、取得する。なお、対応する物理アドレスは、対象データの、主メモリ3上の先頭の仮想アドレスに対応する物理アドレスである。
図2において一点鎖線の矢印P2で示すように、外部デバイス4の演算器25は、その対象データの仮想アドレスとプログラムのプロセスID(d)の情報をMMU11へ供給することによって、設定された上記の対象データの仮想アドレス(b)に対応する物理アドレスを、CPU2側のMMU11に問い合わせる。これは、外部デバイス4が、対象データの配置された物理アドレスと、仮想ページの管理情報(ページサイズ、ページ属性)とを得るためである。MMU11は、問い合わせのあったプロセス空間上の仮想アドレスに対応する物理アドレスと、仮想ページの管理情報を、TLB12を参照して読み出して、取得する。なお、対応する物理アドレスは、対象データの、主メモリ3上の先頭の仮想アドレスに対応する物理アドレスである。
そして、図2において一点鎖線の矢印P3で示すように、MMU11は、取得した物理アドレス、及び、仮想ページの管理情報(ページサイズ、ページ属性を含む)を、外部デバイス4に出力する。ページ属性の情報には、上述したように、仮想ページの読み出しが許されているのか、書き込みが許されているのか、等のパーミッション情報が含まれる。
そして、図2において一点鎖線の矢印P4で示すように、外部デバイス4の演算器25は、MMU11から得た物理アドレス及びページサイズに基づいて、DMAC23に対して、対象データの読み出しに関する設定を行う。この設定された情報に基づいて、後述するように、DMAC23は、対象データの読み出しを、ページ単位で行うDMAを実行することができる。
そして、図2において一点鎖線の矢印P4で示すように、外部デバイス4の演算器25は、MMU11から得た物理アドレス及びページサイズに基づいて、DMAC23に対して、対象データの読み出しに関する設定を行う。この設定された情報に基づいて、後述するように、DMAC23は、対象データの読み出しを、ページ単位で行うDMAを実行することができる。
なお、このとき、TLB12内に問い合わせ対象のデータが存在しない場合は例外処理が発生する。この例外処理により、その時点においてCPU2上で動作していたプログラムはその実行が中断され、OSの持つメモリ管理のためのメモリマネジャプログラムが起動する。この例外処理のときの外部デバイス4とOSとの連携に関しては、後述される。
さらに、外部デバイス4の演算器25は、取得したページ属性がその仮想ページに対する読み込み禁止を示していた場合、図2において一点鎖線の矢印PI1で示すように、割り込みコントローラ5を介してCPU2に対して割込みによるエラー通知を行う。
3)外部デバイスにおける結果データの出力に関する物理アドレスの取得とDMACの設定
図3において一点鎖線の矢印P5で示すように、外部デバイス4の演算器25は、結果データの仮想アドレスとプログラムのプロセスID(d)を供給することによって、設定された上記結果データの出力先の仮想アドレス(c)に対応する物理アドレスを、CPU2側のMMU11に問い合わせる。これは、外部デバイス4が、結果データの出力先の物理アドレスと、仮想ページの管理情報(ページサイズ、ページ属性)とを得るためである。MMU11は、問い合わせのあったプロセス空間上の仮想アドレスに対応する物理アドレスと、仮想ページの管理情報(ページサイズ、ページ属性)を、TLB12を参照して読み出して、取得する。なお、ここにおける対応する物理アドレスは、主メモリ3上の結果データの転送先の先頭の仮想アドレスに対応する物理アドレスである。
図3において一点鎖線の矢印P5で示すように、外部デバイス4の演算器25は、結果データの仮想アドレスとプログラムのプロセスID(d)を供給することによって、設定された上記結果データの出力先の仮想アドレス(c)に対応する物理アドレスを、CPU2側のMMU11に問い合わせる。これは、外部デバイス4が、結果データの出力先の物理アドレスと、仮想ページの管理情報(ページサイズ、ページ属性)とを得るためである。MMU11は、問い合わせのあったプロセス空間上の仮想アドレスに対応する物理アドレスと、仮想ページの管理情報(ページサイズ、ページ属性)を、TLB12を参照して読み出して、取得する。なお、ここにおける対応する物理アドレスは、主メモリ3上の結果データの転送先の先頭の仮想アドレスに対応する物理アドレスである。
そして、図3において一点鎖線の矢印P6で示すように、MMU11は、取得した物理アドレス、及び、仮想ページの管理情報(ページサイズ、ページ属性)を、外部デバイス4に出力する。ここでも、ページ属性の情報には、仮想ページの読み出しが許されているのか、書き込みが許されているのか、等のパーミッション情報が含まれる。
そして、図3において一点鎖線の矢印P7で示すように、外部デバイス4の演算器25は、MMU11から得た物理アドレス及びページサイズに基づいて、DMAC23に対して、結果データの出力に関する設定を行う。この設定された情報に基づいて、後述するように、DMAC23は、結果データの出力を、ページ単位で行うDMAを実行することができる。
なお、このときも、TLB12内に問い合わせ対象のデータが存在しない場合は例外処理が発生する。この例外処理により、その時点においてCPU2上で動作していたプログラムはその実行が中断され、OSの持つメモリ管理のためのメモリマネジャプログラムが起動する。この例外処理のときの外部デバイス4とOSとの連携に関しては、後述される。
さらに、ここでも、外部デバイス4の演算器25は、取得したページ属性がその仮想ページに対する書き込み禁止を示していた場合、図3において一点鎖線の矢印PI2で示すように、割り込みコントローラ5を介してCPU2に対し割込みによるエラー通知を行う。
4)外部デバイスにおけるDMAの処理と演算器の処理
外部デバイス4では、DMAC23は、対象データの入力に関する設定、及び結果データの出力に関する設定がされたことを検知すると、プログラムから依頼された所定の処理が開始される。すなわち、DMAC23は、DMAにより対象データを主メモリ3の指定された記憶領域3aから対象データを順次読み出し、読み出した対象データに対して所定の処理を演算器25により実行し、その結果データを更にDMAC23はDMAにより主メモリ3の指定されたデータ領域3bへ出力する。
このとき、主メモリ3からの対象データの入力及び主メモリ3への結果データの出力は、それぞれの記憶領域3a及び3bの先頭からページ単位で行われ、演算器25は、入力された対象データに対して所定の処理を順次実行し、指定された記憶領域3bへ結果データを順次出力する。
外部デバイス4では、DMAC23は、対象データの入力に関する設定、及び結果データの出力に関する設定がされたことを検知すると、プログラムから依頼された所定の処理が開始される。すなわち、DMAC23は、DMAにより対象データを主メモリ3の指定された記憶領域3aから対象データを順次読み出し、読み出した対象データに対して所定の処理を演算器25により実行し、その結果データを更にDMAC23はDMAにより主メモリ3の指定されたデータ領域3bへ出力する。
このとき、主メモリ3からの対象データの入力及び主メモリ3への結果データの出力は、それぞれの記憶領域3a及び3bの先頭からページ単位で行われ、演算器25は、入力された対象データに対して所定の処理を順次実行し、指定された記憶領域3bへ結果データを順次出力する。
まず、対象データの最初の読み出しは、主メモリ3上の記憶領域3aから、かつ、ページ単位で行われる。すなわち、対象データの最初の読み出しは、記憶領域3a内の最初のページ領域3a1内の対象データに対してその対象データの先頭アドレスから順次行われる。対象データを読み出しているときに、対象データの読み出しが物理空間上のページ領域3a1の最後まで達すると、DMAC23は、読み出しのDMAの処理と演算器25の処理を中断して、演算器25は、DMAC23への再設定を行う。
具体的には、物理空間上の読み出し処理の終了したページ領域3a1の次のページ領域3a2内の対象データを読み出すための設定を行うために、演算器25は、次のページ領域3a2に対応する仮想ページの先頭アドレスの物理アドレスを、MMU11に問い合わせる。外部デバイス4の演算器25は、MMU11から受信した物理アドレスと管理情報に基づいて、DMAC23にDMA処理を実行するための設定を行う。
そして、その設定がされると、演算器25は、入力された対象データに対する所定の処理を再開する。DMAC23は、次の対象データの読み出しを、記憶領域3aの次のページ領域3a2内の対象データに対してページの先頭アドレスから順次行う。さらに、対象データを読み出しているときに、対象データの読み出しが物理空間上のページ領域3a2の最後まで達すると、DMAC23は、DMAの処理と演算器25の処理を中断して、演算器25は、DMAC23への再設定を行う。
具体的には、物理空間上の読み出し処理の終了したページ領域3a2の次のページ領域3a3内の対象データを処理するための設定を行うために、演算器25は、次のページ領域3a3に対応する仮想ページの先頭アドレスの物理アドレスを、MMU11に問い合わせる。外部デバイス4の演算器25は、MMU11から受信した物理アドレスと管理情報に基づいて、DMAC23にDMA処理を実行するための設定を行う。
そして、その設定がされると、演算器25は、所定の処理を再開する。DMAC23は、次の対象データの読み出しを、記憶領域3a2の次のページ領域3a3内の対象データに対して先頭アドレスから順次行う。
以下、同様にして、対象データの全てに対する所定の処理が終了するまで、DMAC23によって、上述したようなページ単位で、対象データの読み出しが行われながら、演算器25による所定の処理が実行される。
一方、結果データの最初の出力は、主メモリ3上の記憶領域3bから、かつ、ページ単位で行われる。すなわち、結果データの最初の出力は、演算器25によって所定の処理がされて得られた結果データに対して、記憶領域3b内の最初のページ領域3b1に位置する出力領域の先頭アドレスから順次行われる。すなわち、結果データの最初の出力は、記憶領域3b内の最初のページ領域3b1内のアドレスから順次行われる。結果データの出力をしているときに、結果データの出力が物理空間上のページ領域3b1の最後まで達すると、DMAC23は、読み出しと出力のDMAの処理と演算器25の処理を中断して、演算器25は、DMAC23への再設定を行う。
具体的には、物理空間上の出力処理の終了したページ領域3b1の次のページ領域3b2に結果データを出力するための設定を行うために、次のページ領域3b2に対応する仮想ページの先頭アドレスの物理アドレスを、MMU11に問い合わせる。外部デバイス4の演算器25は、MMU11から受信した物理アドレスと管理情報に基づいて、DMAC23にDMA処理を実行するための再設定を行う。
そして、その設定がされると、読み出しと出力のDMAの処理が再開され、演算器25は、所定の処理を再開する。DMAC23は、次の結果データの出力を、記憶領域3b1の次のページ領域3b2の先頭アドレスから順次行う。さらに、結果データを出力しているときに、結果データの出力が物理空間上のページ領域3b2の最後まで達すると、DMAC23は、読み出しと出力のDMAの処理と演算器25の処理を中断して、演算器25は、DMAC23への再設定を行う。
具体的には、物理空間上の出力処理の終了したページ領域3b2の次のページ領域3b3に結果データを出力するための設定を行うために、次のページ領域3b3の仮想アドレスの先頭アドレスの物理アドレスを、MMU11に問い合わせる。外部デバイス4の演算器25は、MMU11から受信した物理アドレスと管理情報に基づいて、DMAC23にDMA処理を実行するための再設定を行う。そして、DMAC23は、次の結果データの出力を、記憶領域3bの次のページ領域3b3に結果データを、先頭アドレスから順次出力する。
以下、同様にして、結果データの全ての出力の処理が成されるまで、DMAC23によって、上述したようなページ単位で、処理結果データの出力が行われる。
なお、物理アドレスのページ境界に達したか否かで、DMAの再設定を行うのは、仮想アドレス上は連続な領域であったとしても、物理空間上は複数の不連続なページにデータが分断されている場合があるからである。
以上のように、外部デバイス4において成されるDMAは、ページ単位で対象データの読み出しが行われ、読み出しがページ境界に達すると、DMAC23の設定を更新するために、演算器25のデータ処理は中断される。結果データの出力において、ページ境界が検出されると、対象データの読込のDMAの処理を止め、MMUに出力側の情報を問い合わせ、出力側の再設定を行う。
5)CPUにおける例外処理
上述したように、外部デバイス4からの問い合わせ対象のデータがTLB12内に存在しない場合は例外が発生する。その例外により、その時点においてCPU2上で動作していたプログラムはその実行が中断され、OSの持つメモリ管理のためのメモリマネジャプログラムが起動する。
上述したように、外部デバイス4からの問い合わせ対象のデータがTLB12内に存在しない場合は例外が発生する。その例外により、その時点においてCPU2上で動作していたプログラムはその実行が中断され、OSの持つメモリ管理のためのメモリマネジャプログラムが起動する。
その例外処理の内容を説明する前に、まず、MMU11の構成と、MMU11の動作について説明する。
図6は、MMU11の構成を説明するための、主メモリ3と割り込みコントローラ5を省略した情報処理装置の構成を示す構成図である。図1と比較して、図6は、MMU11の構成に関わる構成要素をより詳細に示している。図6に示すように、CPU2とMMU11が、バスI/F13を介して、それぞれバス6に接続されている。MMU11は、CPU2とTLB12にも接続されている。なお、図6では、信号の流れは矢印付きの点線で示されている。各種信号の流れについては後述する。
図6は、MMU11の構成を説明するための、主メモリ3と割り込みコントローラ5を省略した情報処理装置の構成を示す構成図である。図1と比較して、図6は、MMU11の構成に関わる構成要素をより詳細に示している。図6に示すように、CPU2とMMU11が、バスI/F13を介して、それぞれバス6に接続されている。MMU11は、CPU2とTLB12にも接続されている。なお、図6では、信号の流れは矢印付きの点線で示されている。各種信号の流れについては後述する。
MMU11は、TLB検索部31と、TLB更新部32と、コマンド処理部33と、専用メモリ34とを含んで構成されている。さらに、MMU11は、2つのスイッチ35,36を有している。
TLB検索部31は、供給された仮想アドレスに対応する物理アドレスを、TLB12の内容を検索して取得する回路である。TLB更新部32は、TLB12の内容を更新する処理を行う回路である。コマンド処理部33は、バス6を介して受信したコマンドを処理する回路である。スイッチ35、36は、それぞれコマンド処理部33からの指示信号に基づいて選択先が切り替えられるスイッチである。スイッチ35は、TLB検索部31によって検索して得られた情報を、CPU2へ出力するか、あるいは専用メモリ34に出力するかを切り替えるスイッチである。スイッチ36は、CPU2からのTLB更新信号を、TLB更新部32へ出力するか、あるいは専用メモリ34へ出力するかを切り替えるスイッチである。
TLB検索部31は、供給された仮想アドレスに対応する物理アドレスを、TLB12の内容を検索して取得する回路である。TLB更新部32は、TLB12の内容を更新する処理を行う回路である。コマンド処理部33は、バス6を介して受信したコマンドを処理する回路である。スイッチ35、36は、それぞれコマンド処理部33からの指示信号に基づいて選択先が切り替えられるスイッチである。スイッチ35は、TLB検索部31によって検索して得られた情報を、CPU2へ出力するか、あるいは専用メモリ34に出力するかを切り替えるスイッチである。スイッチ36は、CPU2からのTLB更新信号を、TLB更新部32へ出力するか、あるいは専用メモリ34へ出力するかを切り替えるスイッチである。
コマンド処理部33が、物理アドレスの照会のコマンドを受信したときは、TLB検索部31に対して検索信号を出力する。また、コマンド処理部33は、スイッチ35に対して、TLB検索部31の検索結果を専用メモリ34に出力する状態(図6の状態)に切り替える指示信号を出力する。さらに、コマンド処理部33は、スイッチ36に対して、CPU2からのTLB更新信号を専用メモリ34に出力する状態(図6の状態)に切り替える指示信号を出力する。
通常は、スイッチ35は、TLB検索部31の検索結果をCPU2に出力する状態にあり、スイッチ36は、CPU2からのTLB更新信号をTLB更新部32に出力する状態にある。
また、CPU2は、TLB書き込み処理のためのレジスタ群40を有する。レジスタ群40は、BadVaddrレジスタ41と、EntryHi_Backレジスタ42と、PageMASKレジスタ43と、EntryHiレジスタ44と、EntryLo0レジスタ45と、EntryLo1レジスタ46を含む。各レジスタには、CPU2の制御の下で各種データがストアされる。
ここで、TLB12に登録あるいは記憶される情報について説明する。TLB12は、複数の仮想アドレスのそれぞれに対応する複数の物理アドレスの情報を登録するための、複数個のエントリー部を有する。図7は、TLB12の各エントリー部に登録される情報のフォーマットを示す図である。
TLB12の各エントリー部に登録される情報は、4つの部分51,52,53,54から構成される。第1の部分51は、「0」の2つのデータ列と、その2つのデータ列の間に配置された「MASK」データを含む。「MASK」は、ページのサイズを指定するデータである。
第2の部分52は、「VPN2」データと、「G」データと、「0」のデータ列と、「ASID」データを含む。「VPN2」は、仮想ページの先頭アドレスに相当するデータである。「G」データは、グローバルビットであり、プロセスIDに相当する「ASID」データを無効にできるビットデータである。「ASID」データは、プロセスIDに相当するデータである。
第2の部分52は、「VPN2」データと、「G」データと、「0」のデータ列と、「ASID」データを含む。「VPN2」は、仮想ページの先頭アドレスに相当するデータである。「G」データは、グローバルビットであり、プロセスIDに相当する「ASID」データを無効にできるビットデータである。「ASID」データは、プロセスIDに相当するデータである。
第3と第4の部分53、54は、「0」のデータと、「PFN」データと、「C」データと、「D」データと、「V」データと、「G」データを含む。「PFN」データは、第3の部分53では、偶数ページの先頭の物理アドレスを相当するデータである。「PFN」データは、第4の部分54では、奇数ページの先頭の物理アドレスを相当するデータである。ここでは、1つのエントリー部において、偶数と奇数のページを管理するために、PFN等が2つ存在している。「C」データは、そのページにおけるデータキャッシュの属性を決定するデータである。「D」データは、そのページに対する書き込みを許可するためのビットデータであり、コードのように保護すべきデータが配置されている場合は、「0」に設定され、書き込みが禁止される。「V」データは、そのページを有効にするためのビットデータであり、「0」が設定されると、そのページの設定(PFN、C、D等)は無効となり、参照されない。
上述したレジスタのうち、PageMASKレジスタ43と、EntryHiレジスタ44と、EntryLo0レジスタ45と、EntryLo1レジスタ46の4つのレジスタは、TLB12中のエントリー部の情報を更新あるいは読み出すためのインターフェースとなる。
図8は、PageMASKレジスタ43と、EntryHiレジスタ44と、EntryLo0レジスタ45と、EntryLo1レジスタ46の、それぞれに登録される情報の内容を示す図である。
PageMASKレジスタ43には、各エントリー部に登録される情報の中の第1の部分51の情報が登録される。EntryHiレジスタ44には、各エントリー部に登録される情報の中の第2の部分52の情報が登録される。EntryLo0レジスタ45には、各エントリー部に登録される情報の中の第3の部分53の情報が登録される。EntryLo1レジスタ46には、各エントリー部に登録される情報の中の第3の部分54の情報が登録される。
PageMASKレジスタ43には、各エントリー部に登録される情報の中の第1の部分51の情報が登録される。EntryHiレジスタ44には、各エントリー部に登録される情報の中の第2の部分52の情報が登録される。EntryLo0レジスタ45には、各エントリー部に登録される情報の中の第3の部分53の情報が登録される。EntryLo1レジスタ46には、各エントリー部に登録される情報の中の第3の部分54の情報が登録される。
通常のCPU2からの物理アドレスの問い合わせがあると、TLB検索部31は、TLB12の検索を行い、検索して得られた物理アドレスと管理情報をスイッチ35を介してCPU2へ供給する。
CPU2からの物理アドレスの問い合わせに対してTLB検索部31がTLB12を検索した結果、対応する物理アドレスのデータがTLB12内に無いときは、TLB検索部31は、TLBリフィルの例外処理を実行させる信号を発生し、OSのメモリマネジャプログラムに、TLB12の更新を実行させる信号を出力する。CPU2のメモリマネジャプログラムは、例外処理を実行する。例外処理では、CPU2のメモリマネジャプログラムは、TLB12内に無かった対応する物理アドレスに関する情報をメモリマネージャーが管理する情報より抽出し、TLB更新部32に対して、その抽出した情報に基づいてTLB12の更新処理を指示するTLB書き込み信号を出力する。
メモリマネジャプログラムは、PageMASKレジスタ43と、EntryHiレジスタ44と、EntryLo0レジスタ45と、EntryLo1レジスタ46の4つのレジスタに、TLB12内に無かった対応する物理アドレスに関する情報を書き込む。これらの4つのレジスタに書き込まれた情報を用いて、TLB更新部32はTLB12の内容を更新する。
TLB12が更新された結果、CPU2は、要求した物理アドレスの情報を、TLB検索部31から取得することができる。
以上のようにして、CPU2は、MMU11から物理アドレスの情報を得ることができる。
TLB12が更新された結果、CPU2は、要求した物理アドレスの情報を、TLB検索部31から取得することができる。
以上のようにして、CPU2は、MMU11から物理アドレスの情報を得ることができる。
次に、外部デバイス4から物理アドレスの問い合わせがあった場合について説明する。上述したように、MMU11はCPU2への物理アドレスの提供を行うだけでなく、バス6に接続された外部デバイス4に対しても物理アドレスの提供を行う。なお、以下の説明で、カッコ内に示す符号は、図6中の信号の流れを示す点線の識別符号である。
まず、コマンド処理部33が、バス6を経由して外部デバイス4から、物理アドレスを要求するコマンドを受け付ける(a11)。コマンド処理部33は、TLB検索部31に対して、外部デバイス4から指定されたプロセス空間上の仮想アドレスに該当する情報を検索する信号を出力する(a12)。TLB検索部31は、TLB12に対して検索を行う(a13)。TLB検索部31は、検索結果を得る(a14)。TLB検索部31は、該当する情報を含むエントリー部が存在した場合、その設定内容を読み出し、MMU11内の専用メモリ34へ保持する(a15)。
TLB12上に該当する情報を含むエントリー部が存在しない場合、TLB検索部31は、TLBリフィルの例外処理を実行させる信号を発生し、OSのメモリマネジャプログラムに対し、TLB12の更新処理を実行させる信号を出力する(a16)。このとき、CPUは、EntryHiレジスタ44の内容を、EntryHi_Backレジスタ42に退避し(a21)、外部デバイス4から問い合わせを受けた仮想アドレスをBadVaddrレジスタ41に設定する。さらに、プロセスIDに相当するASIDがEntryHiレジスタ44に設定される。但し、この処理はCPU2が例外処理中の場合、遅延される。なお、メモリマネジャプログラムは、例外処理が発生すると、TLB書き換えのための情報を生成して出力するが、メモリマネジャプログラムは、例外処理が発生した原因が、プログラムなのか、外部デバイスなのかはわからない。
しかし、スイッチ36は、専用メモリ34側に切り替わっているので、OSによるTLB更新処理の結果は、TLB12へは反映されずに、MMU11内の専用メモリ34へ保持される(a17)。すなわち、MMU11がTLB12への情報の書き込みをブロックし、その情報をTLB12ではなく、外部デバイス4へ出力するので、OS自体の変更は必要ない。
そして、OSの例外処理の復帰処理に連動して、退避されていたEntryHiレジスタ44の内容がEntryHi_Backレジスタ42からEntryHiレジスタ44に書き戻される(a22)。
MMU11は、外部デバイス4から指定されたプロセス空間上の仮想アドレスに該当する物理アドレス(PFNから算出される)、ページサイズ(MASKに該当する)、及びページ属性(上記の例では「D」データに該当する)を、専用メモリ34から読みだし、問い合わせ元である外部デバイス4に対し出力する(a18)。すなわち、MMU11は、OSによるTLB12への書き込み処理をブロックし、ブロックされたデータから物理アドレスの生成とページサイズ及び同ページの管理すなわち属性の情報を抽出し、バス6を経由して外部デバイス4へ通知する。
外部デバイス4は、CPU2側から受信した情報(転送元先頭仮想アドレスに対応する物理アドレス、ページの管理単位(サイズ)、自プロセスにおける同仮想空間のパーミッションを基に、所定の処理において必要なDMA処理を実行する。
このとき、対象とする仮想ページが「参照禁止(データの出力においては改変禁止)」であった場合、DMAC23はエラー情報を出力し、DMA処理は行わない。更に外部デバイス4は、発生したエラーを割込みとしてCPU2へ通知する。すなわち、外部デバイス4は、MMU11からバス6を経由して通知された対象ページの管理情報を基に、DMA処理の可否を判断し、DMA処理不可の場合には割込み処理を用いてCPU2に対しエラーを通知する機能を有する。
このとき、対象とする仮想ページが「参照禁止(データの出力においては改変禁止)」であった場合、DMAC23はエラー情報を出力し、DMA処理は行わない。更に外部デバイス4は、発生したエラーを割込みとしてCPU2へ通知する。すなわち、外部デバイス4は、MMU11からバス6を経由して通知された対象ページの管理情報を基に、DMA処理の可否を判断し、DMA処理不可の場合には割込み処理を用いてCPU2に対しエラーを通知する機能を有する。
また、外部デバイス4は、通知されたページサイズから、所定の処理に必要なデータの転送サイズ分の処理が同ページ内で完了するか否かを判断する。同一ページ内に対象データが収まっている場合には、DMAによる読み出し処理は1回のDMA処理で完了するが、同一ページ内に対象データが収まっていない場合には、DMAによる読み出し処理は複数回に分断される。このとき、外部デバイス4は、一回のDMA処理終了時点で割り込みを発生させずに、再びMMU11へ、続いて処理すべき領域の仮想アドレスに関する物理アドレス等の情報を問い合わせて前述のように必要とする情報を取得する。つまり、DMA転送が全て終了するまで外部デバイス4とMMU11間では、プロセス空間上の仮想アドレスと物理アドレスの受け渡しが繰り返される。
以上のように、CPU2と共にバス6に接続された外部デバイス4は、データ入出力のための専用のDMAC23を有し、さらにI/F24には、それらデータのアドレスとしてCPU2上のOSによって管理されるプロセス空間における仮想アドレスが指定される。外部デバイス4は、CPU2の機能であるMMU11を介しCPU2上のOSと協調し、指定されたプロセス空間上の仮想アドレスに対応する物理アドレスを取得して、DMAを行うことができる。さらに、外部デバイス4は、OSがプロセス空間上の仮想アドレスに付与した属性に従ってメモリアクセスを実行する。
外部デバイス4は、MMU11からバス6を経由して通知されたページサイズからアクセス可能なデータサイズを算出し、DMA処理を自律的にページ境界で中断し、DMA処理を継続するために更にMMU11に対しバス6を経由して対象データの仮想アドレスの物理アドレスへの変換要求を出力し、その応答を待って他の仮想アドレスの要求、DMA処理の実行、エラーの検出および割込みの発生を行う。
外部デバイス4は、MMU11からバス6を経由して通知されたページサイズからアクセス可能なデータサイズを算出し、DMA処理を自律的にページ境界で中断し、DMA処理を継続するために更にMMU11に対しバス6を経由して対象データの仮想アドレスの物理アドレスへの変換要求を出力し、その応答を待って他の仮想アドレスの要求、DMA処理の実行、エラーの検出および割込みの発生を行う。
その結果、本実施の形態によれば、UNIX等の高機能OSにおいて、CPU2外の情報処理装置である外部デバイス4を使用する際に必要となるデータのコピー処理、その外部デバイス専用のワーク領域の確保等の、オーバーヘッドを排除することが可能となる。更に、MMU11によるメモリ保護の機能を外部デバイス4の動作にも反映することができる。また、既存のプログラムの一部を改変して、外部デバイス4による処理に置き換えるようにする場合においても、プログラムの改変を最小限にとどめることが出来るものである。
以上のように、本実施の形態によれば、外部デバイスを用いた処理を行うためのCPUのオーバーヘッドを低減し、OSの有するメモリ管理機構に協調する情報処理装置及びその方法を実現することができる。
上述したように、従来の技術によれば、プログラムの処理の一部を外部デバイスに代替させる場合において、外部デバイス用に入出力バッファ領域を主メモリ上に獲得し、しかもそれらの領域は物理アドレス上連続である必要があった。更に、対象データを外部デバイス用入力バッファ領域に予めコピーし、外部デバイスの処理終了後に外部デバイス用出力バッファ領域からプログラムが指定したプロセス空間上の領域にコピー等のオーバーヘッドがあった。
しかし、本実施の形態によれば、プログラムの処理の一部を外部デバイスに代替させる場合において、従来のような領域の確保、更にはデータのコピー処理等が必要なく、主メモリの使用効率、情報処理装置全体のパフォーマンスが向上する。
また、プログラムは、対象データが配置されたプロセス空間上の領域が物理空間上何処に配置され、どのように分断されているかを特定する必要が無い。さらに、プログラムは、外部デバイスの処理のために仮想アドレスを物理アドレスに変換する処理無しに、外部デバイスを利用することが出来るため、外部デバイスによる一部の処理を実現する場合におけるプログラムの改変を極力少ないものに出来る。
また、プログラムは、対象データが配置されたプロセス空間上の領域が物理空間上何処に配置され、どのように分断されているかを特定する必要が無い。さらに、プログラムは、外部デバイスの処理のために仮想アドレスを物理アドレスに変換する処理無しに、外部デバイスを利用することが出来るため、外部デバイスによる一部の処理を実現する場合におけるプログラムの改変を極力少ないものに出来る。
また、外部デバイスの有するDMACは、MMUの提供する情報に基いたデータの入出力を実施するため、本実施の形態によれば、アクセス権限の無いメモリ空間からの入力やアクセス権限の無いメモリ空間への出力は抑制され、OSのカーネルと連動したメモリ保護が実現できる。更に、外部デバイスの制御に直接プロセス空間上の仮想アドレスを指定できることから、既存のソフトウエアの一部を外部デバイスによる処理に置き換える場合において、ソフトウエアの改変を最小限にとどめることが出来る。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
1 情報処理装置、3 主メモリ、11 MMU、40 レジスタ群
Claims (5)
- 中央処理装置と、
バスを介して前記中央処理装置と接続されたメモリと、
前記バスを介して前記中央処理装置と前記メモリとに接続され、所定の処理を実行する外部処理装置と、
前記中央処理装置において実行されるプロセスの仮想アドレスが入力されると、該仮想アドレスに対応する前記メモリの物理アドレスを出力するアドレス変換部と、
前記外部処理装置に設けられ、入力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリからの前記入力データのデータ転送を行い、かつ出力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリへの前記出力データのデータ転送を行う転送部と、
前記所定の処理の対象データの仮想アドレスに対応する物理アドレスを前記アドレス変換部から取得し、前記所定の処理の結果データの仮想アドレスに対応する物理アドレスを前記アドレス変換部から取得する物理アドレス取得部と、
該物理アドレス取得部において取得された前記対象データの物理アドレスと前記結果データの物理アドレスとが、それぞれ、前記データ転送部の前記入力データの物理アドレスと前記出力データの物理アドレスとして設定される設定部と、
を有することを特徴とする情報処理装置。 - 前記物理アドレス取得部は、前記アドレス変換部から前記仮想アドレスの仮想ページのページサイズの情報を取得し、
前記設定部には、取得した前記ページサイズの情報が設定され、
前記転送部は、設定された前記ページサイズのページ単位で、前記メモリからの前記入力データの前記データ転送と、前記メモリへの前記出力データの前記データ転送を行うことを特徴とする請求項1に記載の情報処理装置。 - 前記アドレス変換部は、前記物理アドレスの情報とともに、前記仮想アドレスのパーミッションの情報を出力し、
前記物理アドレス取得部は、取得した前記仮想アドレスの前記情報が、アクセスの禁止を示す場合は、前記中央処置装置に割り込み処理を実行させることを特徴とする請求項1又は請求項2に記載の情報処理装置。 - 前記アドレス変換部は、前記仮想アドレスと前記物理アドレスの対応テーブルを参照することによって、入力された前記仮想アドレスに対応する前記物理アドレスの情報を出力することを特徴とする請求項1から3のいずれか1つに記載の情報処理装置。
- 中央処理装置と、バスを介して前記中央処理装置と接続されたメモリと、前記バスを介して前記中央処理装置と前記メモリとに接続され、所定の処理を実行する外部処理装置と、前記中央処理装置において実行されるプロセスの仮想アドレスが入力されると、該仮想アドレスに対応する前記メモリの物理アドレスを出力するアドレス変換部と、前記外部処理装置に設けられ、入力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリからの前記入力データのデータ転送を行い、かつ出力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリへの前記出力データのデータ転送を行う転送部と、を含む情報処理装置におけるデータ処理方法であって、
前記所定の処理の対象データの仮想アドレスに対応する物理アドレスを前記アドレス変換部から取得し、
前記所定の処理の結果データの仮想アドレスに対応する物理アドレスを前記アドレス変換部から取得し、
取得された前記対象データの物理アドレスと前記結果データの物理アドレスとを、それぞれ、前記入力データの物理アドレスと前記出力データの物理アドレスとして設定し、
前記転送部によって、前記入力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリからの前記入力データのデータ転送を行い、
前記転送部によって、前記出力データの物理アドレスとして設定された前記メモリの物理アドレスに基づいて、前記メモリへの前記出力データのデータ転送を行うことを特徴とする情報処理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006286577A JP2008102850A (ja) | 2006-10-20 | 2006-10-20 | 情報処理装置及び情報処理方法 |
US11/873,795 US20080098196A1 (en) | 2006-10-20 | 2007-10-17 | Information processing apparatus and information processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006286577A JP2008102850A (ja) | 2006-10-20 | 2006-10-20 | 情報処理装置及び情報処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008102850A true JP2008102850A (ja) | 2008-05-01 |
Family
ID=39319429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006286577A Pending JP2008102850A (ja) | 2006-10-20 | 2006-10-20 | 情報処理装置及び情報処理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20080098196A1 (ja) |
JP (1) | JP2008102850A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010191818A (ja) * | 2009-02-19 | 2010-09-02 | Canon Inc | 情報処理装置及びその制御方法 |
JP2011048615A (ja) * | 2009-08-27 | 2011-03-10 | Renesas Electronics Corp | データプロセッサ |
JP2012088894A (ja) * | 2010-10-19 | 2012-05-10 | Renesas Electronics Corp | データ処理装置 |
JP2015043235A (ja) * | 2010-05-11 | 2015-03-05 | クアルコム,インコーポレイテッド | データ値を変換して記憶するための命令を用いた代理メモリアクセスエージェントの構成 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5531476B2 (ja) * | 2009-07-15 | 2014-06-25 | 富士ゼロックス株式会社 | 情報処理装置及び情報処理プログラム |
EP2546748A1 (en) * | 2010-03-09 | 2013-01-16 | Fujitsu Limited | Information processing device, information processing method, and program |
JP6380084B2 (ja) * | 2014-12-19 | 2018-08-29 | 富士ゼロックス株式会社 | 情報処理装置及び情報処理プログラム |
US9749319B2 (en) * | 2015-05-20 | 2017-08-29 | Google Inc. | Address validation using signatures |
CN111708717A (zh) * | 2015-06-30 | 2020-09-25 | 华为技术有限公司 | 数据拷贝方法、直接内存访问控制器及计算机系统 |
US11048644B1 (en) * | 2017-12-11 | 2021-06-29 | Amazon Technologies, Inc. | Memory mapping in an access device for non-volatile memory |
CN110795372A (zh) * | 2018-08-03 | 2020-02-14 | 扬智科技股份有限公司 | 数据处理装置及直接存储器访问方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5242031A (en) * | 1975-09-29 | 1977-04-01 | Hitachi Ltd | Information processing unit |
JPS5338937A (en) * | 1976-09-22 | 1978-04-10 | Hitachi Ltd | Address conversion mechanism of electronic computer system |
JPS60132254A (ja) * | 1983-12-20 | 1985-07-15 | Nec Corp | デ−タ処理装置 |
JPS63245743A (ja) * | 1987-04-01 | 1988-10-12 | Fuji Electric Co Ltd | メモリアクセス方式 |
JP2004527044A (ja) * | 2001-03-30 | 2004-09-02 | ミップス テクノロジーズ インコーポレイテッド | コンピュータメモリ保護方式の拡張機構 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5712998A (en) * | 1993-07-13 | 1998-01-27 | Intel Corporation | Fast fully associative translation lookaside buffer with the ability to store and manage information pertaining to at least two different page sizes |
US20050055528A1 (en) * | 2002-12-12 | 2005-03-10 | International Business Machines Corporation | Data processing system having a physically addressed cache of disk memory |
US7752417B2 (en) * | 2006-06-05 | 2010-07-06 | Oracle America, Inc. | Dynamic selection of memory virtualization techniques |
-
2006
- 2006-10-20 JP JP2006286577A patent/JP2008102850A/ja active Pending
-
2007
- 2007-10-17 US US11/873,795 patent/US20080098196A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5242031A (en) * | 1975-09-29 | 1977-04-01 | Hitachi Ltd | Information processing unit |
JPS5338937A (en) * | 1976-09-22 | 1978-04-10 | Hitachi Ltd | Address conversion mechanism of electronic computer system |
JPS60132254A (ja) * | 1983-12-20 | 1985-07-15 | Nec Corp | デ−タ処理装置 |
JPS63245743A (ja) * | 1987-04-01 | 1988-10-12 | Fuji Electric Co Ltd | メモリアクセス方式 |
JP2004527044A (ja) * | 2001-03-30 | 2004-09-02 | ミップス テクノロジーズ インコーポレイテッド | コンピュータメモリ保護方式の拡張機構 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010191818A (ja) * | 2009-02-19 | 2010-09-02 | Canon Inc | 情報処理装置及びその制御方法 |
JP2011048615A (ja) * | 2009-08-27 | 2011-03-10 | Renesas Electronics Corp | データプロセッサ |
US8521920B2 (en) | 2009-08-27 | 2013-08-27 | Renesas Electronics Corporation | Data processor |
JP2015043235A (ja) * | 2010-05-11 | 2015-03-05 | クアルコム,インコーポレイテッド | データ値を変換して記憶するための命令を用いた代理メモリアクセスエージェントの構成 |
JP2012088894A (ja) * | 2010-10-19 | 2012-05-10 | Renesas Electronics Corp | データ処理装置 |
Also Published As
Publication number | Publication date |
---|---|
US20080098196A1 (en) | 2008-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008102850A (ja) | 情報処理装置及び情報処理方法 | |
US11030126B2 (en) | Techniques for managing access to hardware accelerator memory | |
TWI470435B (zh) | 為本地與遠端實體記憶體間之共用虛擬記憶體提供硬體支援 | |
JP3546678B2 (ja) | マルチos構成方法 | |
JP4872001B2 (ja) | メモリ・アクセス安全性管理 | |
JP4519738B2 (ja) | メモリアクセス制御装置 | |
JP5914145B2 (ja) | メモリ保護回路、処理装置、およびメモリ保護方法 | |
JP2004342099A (ja) | アドレスに基づいた処理制約のブロッキング | |
JP2000231549A (ja) | マイクロプロセッサ | |
US20210255942A1 (en) | Method and apparatus for supporting persistence and computing device | |
JPWO2010097925A1 (ja) | 情報処理装置 | |
US6490668B2 (en) | System and method for dynamically moving checksums to different memory locations | |
JP4926009B2 (ja) | 情報処理装置の障害処理システム | |
EP4272081A1 (en) | Migrating pages of memory accessible by input-output devices | |
JP5035227B2 (ja) | 情報処理装置、プログラムの起動制御方法、及び起動制御プログラム | |
JP2015158936A (ja) | データ処理装置 | |
JP4594889B2 (ja) | 複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法、および、複数の処理装置を備えたシステム | |
JP6740719B2 (ja) | 情報処理装置、情報処理方法、およびプログラム | |
CN117063165A (zh) | 迁移由输入-输出设备能够访问的存储器页面 | |
JP4965974B2 (ja) | 半導体集積回路装置 | |
JP2008140124A (ja) | データ処理装置 | |
JP4853620B2 (ja) | マルチプロセッサシステムと初期立ち上げ方法およびプログラム | |
JP2008123333A5 (ja) | ||
JP2001051854A (ja) | 情報管理システム | |
JPH0628303A (ja) | 通信処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090312 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20111006 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111018 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120424 |