(57)【特許請求の範囲】
【請求項１】
デバイスにより出力された、当該デバイスとメモリとの間のデータの転送要求において指定された第１の仮想アドレスを記憶する第１の記憶手段と、
前記デバイスを制御するプロセッサにより設定された、前記メモリにおける実アドレスを記憶する第２の記憶手段と、
前記プロセッサにより設定された、前記実アドレスに対応する第２の仮想アドレスを記憶する第３の記憶手段と、
前記第１の仮想アドレスと、前記第２の仮想アドレスとのオフセット部を除いた部分を比較する比較手段と、
比較された前記部分が一致した場合は、前記実アドレスのオフセット部を前記第１の仮想アドレスのオフセット部としたアドレスを用いて、前記データの転送を行い、前記部分が不一致の場合は、前記データの転送を停止する転送制御手段と
を備える転送装置。
【請求項２】
前記転送制御手段は、
前記データの転送を停止した場合、前記プロセッサにより設定された前記第１の仮想アドレスに対応する実アドレスを前記第２の記憶手段が記憶した後、前記データの転送を再開する
ことを特徴とする請求項１に記載の転送装置。
【請求項３】
コンピュータを、
デバイスにより出力された、当該デバイスとメモリとの間のデータの転送要求において指定された第１の仮想アドレスを記憶する第１の記憶手段と、
前記デバイスを制御するプロセッサにより設定された、前記メモリにおける実アドレスを記憶する第２の記憶手段と、
前記プロセッサにより設定された、前記実アドレスに対応する第２の仮想アドレスを記憶する第３の記憶手段と、
前記第１の仮想アドレスと、前記第２の仮想アドレスとのオフセット部を除いた部分を比較する比較手段と、
比較された前記部分が一致した場合は、前記実アドレスのオフセット部を前記第１の仮想アドレスのオフセット部としたアドレスを用いて、前記データの転送を行い、前記部分が不一致の場合は、前記データの転送を停止する転送制御手段
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、転送装置及びプログラムに関する。
【背景技術】
【０００２】
特許文献１には、メモリの一部を連続領域として常駐させ、当該連続領域の実アドレスと仮想アドレスとを一致させることにより、仮想アドレスの実アドレスへの変換を不要とすることが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０４−３０７６４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
メモリとデバイスとの間のデータの受け渡しの方式として、ＣＰＵ（Central Processing Unit）等のプロセッサを介さずにデータの受け渡しを行う、ＤＭＡ（Direct Memory Access）がある。一般に、プロセッサにおいて動作するデバイスドライバは、仮想アドレスと実アドレスとを相互に変換する機能を有するが、デバイスは、アドレスを変換する機能を有しない。このため、ＤＭＡでは、当該プロセッサが仮想アドレスをメモリにおける実アドレスに変換して、デバイスに設定する。デバイスは、設定された実アドレスを用いて、メモリとの間でデータの受け渡しを行う。
本発明の目的は、デバイスが実アドレスを用いて動作しない場合でも、仮想アドレスと実アドレスとを相互に変換するプロセッサを介さずに、当該デバイスと当該メモリとの間でデータの受け渡しを行うための技術を提供することである。
【課題を解決するための手段】
【０００５】
本発明の請求項１に係る転送装置は、デバイスにより出力された、当該デバイスとメモリとの間のデータの転送要求において指定された第１の仮想アドレスを記憶する第１の記憶手段と、前記デバイスを制御するプロセッサにより設定された、前記メモリにおける実アドレスを記憶する第２の記憶手段と、前記プロセッサにより設定された、前記実アドレスに対応する第２の仮想アドレスを記憶する第３の記憶手段と、前記第１の仮想アドレスと、前記第２の仮想アドレスとのオフセット部を除いた部分を比較する比較手段と、比較された前記部分が一致した場合は、前記実アドレスのオフセット部を前記第１の仮想アドレスのオフセット部としたアドレスを用いて、前記データの転送を行い、前記部分が不一致の場合は、前記データの転送を停止する転送制御手段とを備える。
【０００６】
本発明の請求項２に係る転送装置は、請求項１に係る構成において、前記転送制御手段は、前記データの転送を停止した場合、前記プロセッサにより設定された前記第１の仮想アドレスに対応する実アドレスを前記第２の記憶手段が記憶した後、前記データの転送を再開することを特徴とする。
【０００７】
本発明の請求項３に係るプログラムは、コンピュータを、デバイスにより出力された、当該デバイスとメモリとの間のデータの転送要求において指定された第１の仮想アドレスを記憶する第１の記憶手段と、前記デバイスを制御するプロセッサにより設定された、前記メモリにおける実アドレスを記憶する第２の記憶手段と、前記プロセッサにより設定された、前記実アドレスに対応する第２の仮想アドレスを記憶する第３の記憶手段と、
前記第１の仮想アドレスと、前記第２の仮想アドレスとのオフセット部を除いた部分を比較する比較手段と、比較された前記部分が一致した場合は、前記実アドレスのオフセット部を前記第１の仮想アドレスのオフセット部としたアドレスを用いて、前記データの転送を行い、前記部分が不一致の場合は、前記データの転送を停止する転送制御手段として機能させるためのプログラムである。
【発明の効果】
【０００８】
請求項１，３に係る発明によれば、デバイスが実アドレスを用いて動作しない場合でも、仮想アドレスと実アドレスとを相互に変換するプロセッサを介さずに、当該デバイスと当該メモリとの間でデータの受け渡しを行うための技術を提供することができる。
請求項２に係る発明によれば、データの転送を開始した後、転送要求において指定された仮想アドレスのオフセット部以外の部分が変化した場合でも、当該デバイスと当該メモリとの間でデータの受け渡しを行うことができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態に係る情報処理装置及びその一部である転送装置の構成を示す図。
【図２】同実施形態に係るプロセッサ及び転送装置が行うデータの転送に関する処理を示すフローチャート。
【図３】同実施形態に係るプロセッサ及び転送装置が行う図２に続く処理を示すフローチャート。
【図４】同実施形態に係るプロセッサ及び転送装置が行う図３に続く処理を示すフローチャート。
【図５】同実施形態に係るアドレスの管理の一例の説明図。
【図６】同実施形態に係るアドレスの管理の一例の説明図。
【発明を実施するための形態】
【００１０】
以下、本発明の一実施形態について図面を参照しつつ説明する。
図１は、情報処理装置１及びその一部である転送装置１０の構成を示すブロック図である。情報処理装置１は、例えばＡＳＩＣ（Application Specific Integrated Circuit）等のＩＣを用いて構成された、転送装置１０、デバイス２０、メモリ３０、及びプロセッサ４０を備える。転送装置１０は、バスＢ１を介して接続されたデバイス２０と、バスＢ２を介して接続されたメモリ３０との間で、データの転送を行う。バスＢ１及びバスＢ２は、互いに同じ配線で、且つ同じプロトコルに対応している。バスＢ２は、ここではＰＣＩ（Peripheral Components Interconnect）バスである。
なお、情報処理装置１は、例えば用紙等の媒体に画像を形成する画像形成装置やパーソナルコンピュータであるが、これら以外の装置であってもよい。
【００１１】
デバイス２０は、プロセッサ４０の制御の下、メモリ３０にデータを読み書きして処理を行う処理回路（周辺機器）である。デバイス２０は、例えば、ＰＤＬ（Page Description Language）で記述されたデータを解釈して画像データを生成する、レンダリングを行う。デバイス２０が行う処理は、レンダリング以外の画像処理であってもよいし、画像処理以外の処理であってもよい。デバイス２０は、データの転送を要求する転送要求を、バスＢ１を介して転送装置１０に出力する。この転送要求においては、転送するデータの先頭の仮想アドレスと、当該データのサイズを示す転送サイズとが指定されている。
【００１２】
メモリ３０は、例えばメインメモリで、デバイス２０及びプロセッサ４０がアクセスする記憶手段である。メモリ３０は、デバイス２０及びプロセッサ４０が行う処理に使用されるデータを記憶する。メモリ３０は、バスブリッジ５０を介して、バスＢ２と接続されている。バスブリッジ５０には、更にプロセッサ４０が接続されている。
【００１３】
プロセッサ４０は、例えばＣＰＵで、情報処理装置１の各部を制御する制御回路である。プロセッサ４０は、仮想記憶方式を採用したオペレーティングシステムの環境下で動作する。プロセッサ４０は、オペレーティングシステムのカーネルに基づいて、ページング方式により、仮想アドレス空間と実アドレス空間とを相互に変換する機能を有する。例えば、デバイス２０を制御するためのデバイスドライバは、仮想アドレス空間を、ページ単位で実メモリ空間にマップする。ページとは、実メモリを仮想アドレス空間にマップするときの最小単位のことをいう。ページのサイズは、例えば４キロバイトである。このデバイスドライバは、例えば、プロセッサ４０で実行されるアプリケーションプログラムにより指定された、データの先頭の仮想アドレスと転送サイズとに基づいて、デバイス２０にデータの転送の開始を命令する。
なお、実アドレス及び実メモリは、それぞれ物理アドレス及び物理メモリと読み替えられてもよい。
【００１４】
次に、転送装置１０の構成の詳細を説明する。転送装置１０は、デバイスアドレスレジスタ１１、実アドレスレジスタ１２、仮想アドレスレジスタ１３、比較部１４、及び転送制御部１５を備える。
デバイスアドレスレジスタ１１は、本発明の第１の記憶手段の一例で、デバイス２０により出力された転送要求において指定された仮想アドレスを記憶するレジスタである。この仮想アドレスは、転送するデータの先頭のアドレスで、本発明の第１の仮想アドレスの一例である。
【００１５】
実アドレスレジスタ１２は、本発明の第２の記憶手段の一例で、プロセッサ４０により設定された、メモリ３０における実アドレスを記憶するレジスタである。
【００１６】
仮想アドレスレジスタ１３は、本発明の第３の記憶手段の一例で、プロセッサ４０により設定された、実アドレスレジスタ１２に記憶された実アドレスに対応する仮想アドレスを記憶するレジスタである。この仮想アドレスは、本発明の第２の仮想アドレスの一例である。
【００１７】
比較部１４は、本発明の比較手段の一例で、デバイスアドレスレジスタ１１に記憶された仮想アドレスと、仮想アドレスレジスタ１３に記憶された仮想アドレスとのオフセット部を除いた部分を比較する。この比較される部分は、仮想アドレスの上位の複数ビットの値で、本実施形態では、ページを識別するページアドレス部である。オフセット部は、ページング方式の場合、ページ内オフセットとも呼ばれる。
【００１８】
転送制御部１５は、本発明の転送制御手段の一例で、デバイス２０とメモリ３０との間におけるデータの転送に関する制御を行う。転送制御部１５は、比較部１４により比較された部分が一致した場合は、実アドレスレジスタ１２に記憶された実アドレスのオフセット部を、デバイスアドレスレジスタ１１に記憶された仮想アドレスのオフセット部としたアドレス（以下「転送アドレス」という。）を用いて、データの転送を行う。転送制御部１５は、この転送アドレスを先頭アドレスとした転送要求を、バスＢ２に出力する。転送制御部１５は、比較部１４により比較された部分が不一致の場合は、データの転送を停止する。
【００１９】
図２、図３及び図４は、プロセッサ４０及び転送装置１０が行うデータの転送に関する処理の流れを示すフローチャートである。図５及び図６は、転送装置１０のアドレスの管理の一例を説明する図である。図５及び図６において、破線はページの境界を意味し、斜線部はデータの転送が完了した領域を意味する。
データの転送を開始するとき、プロセッサ４０は、転送するデータの先頭の仮想アドレスを取得し、この仮想アドレスを、仮想アドレスレジスタ１３に設定する（ステップＳ１）。仮想アドレスレジスタ１３は、設定された仮想アドレスを記憶する（ステップＳ２）。図５（Ａ）に示すように、ここでは、仮想アドレスレジスタ１３は、仮想アドレスとして「０ｘ００９０００００」を記憶する。この仮想アドレスにおいて、「０ｘ００９００」の部分がページアドレス部で、「０ｘ０００」の部分がオフセット部である。
【００２０】
次に、プロセッサ４０は、オペレーティングシステムのカーネルに基づいて、ステップＳ１で設定した仮想アドレスのマップを行い、更に当該仮想アドレスに対応する実アドレスを取得する（ステップＳ３）。ここでは、プロセッサ４０は、仮想アドレス「０ｘ００９０００００」に対応する実アドレスとして、「０ｘ１２７９２０００」を取得する。
【００２１】
次に、プロセッサ４０は、ステップＳ３で取得した実アドレスを、実アドレスレジスタ１２に設定する（ステップＳ４）。実アドレスレジスタ１２は、設定された実アドレスを記憶する（ステップＳ５）。図５（Ａ）に示すように、ここでは、実アドレスレジスタ１２は、実アドレスとして「０ｘ１２７９２０００」を記憶する。この実アドレスにおいて、「０ｘ１２７９２」の部分がページアドレス部で、「０ｘ０００」の部分がオフセット部である。
【００２２】
次に、プロセッサ４０は、デバイス２０とメモリ３０との間のデータの受け渡しを開始するための設定を行う（ステップＳ６）。この設定は、デバイス２０に実アドレスが設定される従来方式のＤＭＡと同じ設定でよい。この設定は、例えば、デバイス２０に対するデータの転送の開始の命令を含む。
【００２３】
ステップＳ６の設定が行われると、デバイス２０は、転送要求をバスＢ１に出力する。この転送要求において指定された先頭の仮想アドレスは、「０ｘ００９０００００」である。デバイスアドレスレジスタ１１は、当該転送要求において指定された仮想アドレスを記憶する（ステップＳ７）。
【００２４】
次に、比較部１４は、デバイスアドレスレジスタ１１に記憶された仮想アドレスと、仮想アドレスレジスタ１３に記憶された仮想アドレスとのオフセット部を除いた部分を比較する（ステップＳ８）。比較部１４は、比較された部分、即ちページアドレス部が一致するか否かを、転送制御部１５に通知する。
【００２５】
次に、転送制御部１５は、比較された部分が一致するか否かを判定する（ステップＳ９）。ここでは、比較された部分は「０ｘ００９００」で一致する。よって、転送制御部１５は、ステップＳ９で「ＹＥＳ」と判定し、実アドレスレジスタ１２に記憶された実アドレスのオフセット部を、デバイスアドレスレジスタ１１に記憶された仮想アドレスのオフセット部とした転送アドレスを用いて、データの転送を行う（ステップＳ１０）。
【００２６】
ここでは転送制御部１５は、図５（Ｂ）に示すように、実アドレスのページアドレス部「０ｘ１２７９２」と、仮想アドレスのオフセット部「０ｘ０００」とを含む転送アドレスとして「０ｘ１２７９２０００」を指定した転送要求を、バスＢ２に出力する。これにより、デバイス２０とメモリ３０との間で、この転送要求において指定された転送アドレスと転送サイズとに従ったデータの受け渡しが行われる。ステップＳ１０のデータの転送の後、転送制御部１５は、ステップＳ７の処理に戻す。
【００２７】
デバイス２０は、仮想アドレスをカウントアップしながら、転送要求を順次、転送装置１０に出力する。この転送要求が出力される毎に、デバイスアドレスレジスタ１１に記憶された仮想アドレスは更新される。ステップＳ３でマップが行われたページ内でデータの転送が要求される期間において、転送制御部１５は、ステップＳ７→ステップＳ８→ステップＳ９；ＹＥＳ→ステップＳ１０→ステップＳ７→・・・のループ処理を繰り返す。図５（Ｂ）に示すように、転送要求において指定された仮想アドレスが、「０ｘ００９００２００」であったとする。この場合、転送制御部１５は、ステップＳ１０において、実アドレスのページアドレス部「０ｘ１２７９２」と、仮想アドレスのオフセット部「０ｘ２００」とを含む転送アドレスとして「０ｘ１２７９２２００」を指定した転送要求を、バスＢ２に出力する。
【００２８】
その後、転送要求において指定された仮想アドレスのページアドレス部が変化したとする。１ページのデータの転送が完了してページ境界を跨った場合、ページアドレス部が変化する。この変化により、デバイスアドレスレジスタ１１に記憶された仮想アドレスは、図５（Ｃ）に示すように、「０ｘ００９０１０００」となり、ページアドレス部は「０ｘ００９０１」となる。
【００２９】
この変化があると、転送制御部１５は、ステップＳ９で「ＮＯ」と判定し、データの転送を停止する（図３のステップＳ１１）。停止の理由は、転送装置１０が、転送要求において指定された仮想アドレスに対応する実アドレスを、この時点で把握していないためである。次に、転送制御部１５は、バスＢ２を介して、プロセッサ４０に割り込みを上げる（ステップＳ１２）。
【００３０】
割り込みを受け付けると、プロセッサ４０は、デバイスアドレスレジスタ１１から仮想アドレスを取得する（ステップＳ１３）。次に、プロセッサ４０は、オペレーティングシステムのカーネルに基づいて、ステップＳ１３で取得した仮想アドレスのマップを行い、更に当該仮想アドレスに対応する実アドレスを取得する（ステップＳ１４）。ここにおいて、プロセッサ４０は、仮想アドレス「０ｘ００９０１０００」に対応する実アドレスとして、「０ｘ１２４９６０００」を取得する。
【００３１】
次に、プロセッサ４０は、ステップＳ１４で取得した実アドレスを、実アドレスレジスタ１２に設定する（ステップＳ１５）。実アドレスレジスタ１２は、設定された実アドレスを記憶する（ステップＳ１６）。ここでは、実アドレスレジスタ１２は、図６（Ａ）に示すように、「０ｘ１２４９６０００」を記憶する。この実アドレスにおいて、「０ｘ１２４９６」の部分がページアドレス部で、「０ｘ０００」の部分がオフセット部である。
【００３２】
次に、プロセッサ４０は、設定した実アドレスに対応する仮想アドレスを、仮想アドレスレジスタ１３に設定する（ステップＳ１７）。仮想アドレスレジスタ１３は、設定された仮想アドレスを記憶する（ステップＳ１８）。ここでは、仮想アドレスレジスタ１３は、図６（Ａ）に示すように、仮想アドレスとして「０ｘ００９０１０００」を記憶する。
【００３３】
次に、プロセッサ４０は、デバイス２０とメモリ３０との間のデータの受け渡しを開始（即ち再開）するための設定を行う（ステップＳ１９）。この設定は、停止していたデータの転送を再開させるための再開命令を含む。ステップＳ１９の設定が行われると、デバイスアドレスレジスタ１１は、転送要求において指定された仮想アドレスを記憶する（図４のステップＳ２０）。なお、最新の転送要求において指定された仮想アドレスが既に記憶されているから、ここでのステップＳ２０の処理はパスされてよい。
【００３４】
次に、比較部１４は、デバイスアドレスレジスタ１１に記憶された仮想アドレスと、仮想アドレスレジスタ１３に記憶された仮想アドレスとのオフセット部を除いた部分を比較する（ステップＳ２１）。比較部１４は、比較された部分、即ちページアドレス部が一致するか否かを、転送制御部１５に通知する。
【００３５】
次に、転送制御部１５は、比較された部分が一致するか否かを判定する（ステップＳ２２）。ステップＳ１３〜Ｓ１８の処理により、比較された部分は「０ｘ００９０１」で一致する。このため、転送制御部１５は、ステップＳ２２で「ＹＥＳ」と判定し、実アドレスレジスタ１２に記憶された実アドレスのオフセット部を、デバイスアドレスレジスタ１１に記憶された仮想アドレスのオフセット部とした転送アドレスを用いて、データの転送を行う（ステップＳ２３）。
【００３６】
ここでは転送制御部１５は、実アドレスのページアドレス部「０ｘ１２４９６」と、仮想アドレスのオフセット部「０ｘ０００」とを含む転送アドレスとして「０ｘ１２４９６０００」を指定した転送要求を、バスＢ２に出力することにより、データの転送を再開する。ステップＳ２３のデータの転送の後、転送制御部１５は、ステップＳ２０の処理に戻す。
【００３７】
デバイス２０は、仮想アドレスをカウントアップしながら、転送要求を順次、転送装置１０に出力する。この転送要求が出力される毎に、デバイスアドレスレジスタ１１に記憶された仮想アドレスは更新される。ステップＳ１４でマップが行われたページ内でデータの転送が要求される期間において、転送制御部１５は、ステップＳ２０→ステップＳ２１→ステップＳ２２；ＹＥＳ→ステップＳ２３→ステップＳ２０→・・・のループ処理を繰り返し、データの転送を行う。図６（Ｃ）に示すように、デバイス２０が出力した転送要求において指定された仮想アドレスが、「０ｘ００９０１４００」であったとする。この場合、転送制御部１５は、ステップＳ２２において、実アドレスのページアドレス部「０ｘ１２４９６」と、仮想アドレスのオフセット部「０ｘ４００」とを含む転送アドレスとして「０ｘ１２４９６４００」を指定した転送要求を、バスＢ２に出力する。
【００３８】
１ページのデータの転送が完了してページ境界を跨った場合、転送制御部１５は、比較された部分が不一致と判定し（ステップＳ２２；ＮＯ）、データの転送を停止する（ステップＳ２４）。そして、転送制御部１５は、バスＢ２を介して、プロセッサ４０に割り込みを上げる（ステップＳ２５）。以降においても、処理ステップＳ１３〜Ｓ２５と同じ処理ステップが行われることにより、デバイス２０とメモリ３０との間でデータの受け渡しが行われる。
【００３９】
転送要求において指定された仮想アドレスのオフセット部を除いた部分、即ちページアドレス部が変化する原因は、ページ境界を跨ぐことに限られない。例えば、デバイス２０が、転送するデータに含まれるポインタを認識して、仮想アドレスのページアドレス部を切り替えた場合も、メモリ３０とデバイス２０との間のデータの受け渡しが行われる。
【００４０】
以上説明したとおり、転送装置１０は、デバイス２０が実アドレスを用いて動作しない場合でも、プロセッサ４０を介さずに、デバイス２０とメモリ３０との間でのデータの受け渡しを実現させる。デバイス２０が実アドレスを用いた動作をしなくてもよい分だけ、デバイス２０の設計の自由度が高まる。
【００４１】
転送装置１０は、メモリ３０とデバイス２０との間で行われるデータの受け渡しを中継するように配置されればよい。よって、情報処理装置１において、既存の情報処理装置から変更すべき箇所の増大や、装置構成の複雑化が抑制される。また、プロセッサ４０が実行するアプリケーションプログラムで用いられるデータが、デバイス２０とメモリ３０との間で受け渡される場合でも、当該アプリケーションを情報処理装置１で動作させるために修正すべき点は少なくて済む。
メモリ３０において、実アドレスと仮想アドレスとを一致させた連続領域が常駐している必要がない。よって、当該連続領域がデバイス２０によって占有されることによって、情報処理装置１の動作パフォーマンスが低下してしまうこともない。
【００４２】
図２、図３及び図４で説明した処理の順番は、デバイス２０とメモリ３０との間でのデータの受け渡しが可能な範囲内で変更されてもよい。
本発明の第１記憶手段、第２記憶手段及び第３記憶手段は、デバイスアドレスレジスタ１１、実アドレスレジスタ１２、及び仮想アドレスレジスタ１３のような互いに独立した記憶装置によって実現されなくてもよく、例えば、単一の記憶装置によって実現されてもよい。
転送装置１０が実現する機能は、それぞれ、１又は複数のハードウェア回路により実現されてもよいし、コンピュータに同機能を実現させるための１又は複数のプログラムを実行することにより実現されてもよいし、これらの組み合わせにより実現されてもよい。また、このプログラムは、磁気記録媒体（磁気テープ、磁気ディスク（ＨＤＤ、ＦＤ（Flexible Disk））等）、光記録媒体（光ディスク等）、光磁気記録媒体、半導体メモリ等のコンピュータに読み取り可能な記録媒体に記憶した状態で提供されてもよいし、インターネット等の通信回線を介して配信されてもよい。
【符号の説明】
【００４３】
１…情報処理装置、１０…転送装置、１１…デバイスアドレスレジスタ、１２…実アドレスレジスタ、１３…仮想アドレスレジスタ、１４…比較部、１５…転送制御部、２０…デバイス、３０…メモリ、４０…プロセッサ、５０…バスブリッジ、Ｂ１，Ｂ２…バス
【図１】
0006428347.tif 000002
【図２】
0006428347.tif 000003
【図３】
0006428347.tif 000004
【図４】
0006428347.tif 000005
【図５】
0006428347.tif 000006
【図６】
0006428347.tif 000007