(57)【要約】【課題】プロセッサの処理負荷を軽減できるデータ処理装置、データ処理方法、及びデータ処理プログラムを提供する。【解決手段】データ処理装置は、第１記憶装置から第２記憶装置にデータ転送が必要と判断した場合、転送データにおけるデータ転送元の記憶位置、データ転送先の記憶位置、及びデータ転送サイズを指定した転送指示情報を生成する第１生成部と、前記転送指示情報を、所定のデータサイズに分割した分割転送指示情報を生成する第２生成部と、前記分割転送指示情報に基づくデータ転送を指示する転送指示部と、前記データ転送の指示に従って、前記第１記憶装置と前記第２記憶装置の間のデータ転送処理を制御する転送制御部と、を備える。【選択図】図２
2014215897.tif 000002
【特許請求の範囲】
【請求項１】
第１記憶装置から第２記憶装置にデータ転送が必要と判断した場合、転送データにおけるデータ転送元の記憶位置、データ転送先の記憶位置、及びデータ転送サイズを指定した転送指示情報を生成する第１生成部と、
前記転送指示情報を、所定のデータサイズに分割した分割転送指示情報を生成する第２生成部と、
前記分割転送指示情報に基づくデータ転送を指示する転送指示部と、
前記データ転送の指示に従って、前記第１記憶装置と前記第２記憶装置の間のデータ転送処理を制御する転送制御部と、
を備えることを特徴とするデータ処理装置。
【請求項２】
前記第１生成部は、
仮想メモリ空間の仮想ページと主記憶装置である前記第１記憶装置のメモリ空間の実ページとを対応させるページ管理情報に含まれる、前記実ページのデータ更新を表す更新情報に基づき、前記第１記憶装置上のデータ更新を検知した場合に、前記第１記憶装置から前記第２記憶装置にデータ転送が必要と判断することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記第１生成部は、
データが更新された前記実ページに対応する前記ページ管理情報に基づき、前記転送指示情報を生成することを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記第２生成部は、
前記転送指示情報を、前記転送制御部の仕様に従った前記データサイズに分割し、前記分割転送指示情報を生成し、生成した前記分割転送指示情報を前記転送制御部に出力することを特徴とする請求項１に記載のデータ処理装置。
【請求項５】
前記第１生成部は、
プロセッサによるソフトウェアの実行により実現され、
前記第２生成部、前記転送制御部、及び前記転送指示部の少なくとも１つは、
前記プロセッサと異なるハードウェアの実装により実現されることを特徴とする請求項１に記載のデータ処理装置。
【請求項６】
前記第２生成部は、
前記転送制御部から前記分割転送指示情報への参照要求を受け付けると、前記転送制御部から指定されたアドレスに基づき、分割する前記転送指示情報を特定することを特徴とする請求項１に記載のデータ処理装置。
【請求項７】
前記転送指示部は、
前記転送制御部から前記分割転送指示情報への参照要求を行う際に指定するアドレスを、前記転送制御部に設定することを特徴とする請求項１に記載のデータ処理装置。
【請求項８】
前記転送制御部は、
前記分割転送指示情報に含まれる、前記転送データの終端を表す終端情報に基づき、データ転送完了の割り込み信号を、前記転送指示部に発行し、
前記転送指示部は、
前記転送制御部からの前記割り込み信号に基づき、前記転送制御部に対して、割り込み制御を行い、前記第２生成部に対して、前記データ転送が完了した旨を通知することを特徴とする請求項１に記載のデータ処理装置。
【請求項９】
前記第１生成部、前記第２生成部、前記転送制御部、及び前記転送指示部は、
それぞれ異なるハードウェアの実装により実現されることを特徴とする請求項１に記載のデータ処理装置。
【請求項１０】
プロセッサを含むシステムにおいて、
前記プロセッサにより、第１記憶装置から第２記憶装置にデータ転送が必要と判断され生成された、転送データにおけるデータ転送元の記憶位置、データ転送先の記憶位置、及びデータ転送サイズを指定した転送指示情報を、所定のデータサイズに分割した分割転送指示情報を生成する生成部と、
前記分割転送指示情報に基づくデータ転送を指示する転送指示部と、
前記データ転送の指示に従って、前記第１記憶装置と前記第２記憶装置の間のデータ転送処理を制御する転送制御部と、
を備えることを特徴とするシステム。
【請求項１１】
第１記憶装置から第２記憶装置にデータ転送が必要と判断した場合、転送データにおけるデータ転送元の記憶位置、データ転送先の記憶位置、及びデータ転送サイズを指定した転送指示情報を生成する第１生成工程と、
前記転送指示情報を、所定のデータサイズに分割した分割転送指示情報を生成する第２生成工程と、
前記分割転送指示情報に基づくデータ転送を指示する転送指示工程と、
前記データ転送の指示に従って、前記第１記憶装置と前記第２記憶装置の間のデータ転送処理を制御する転送制御工程と、
を含むことを特徴とするデータ処理方法。
【請求項１２】
プロセッサを含むシステムにおいて、
前記プロセッサにより、第１記憶装置から第２記憶装置にデータ転送が必要と判断され生成された、転送データにおけるデータ転送元の記憶位置、データ転送先の記憶位置、及びデータ転送サイズを指定した転送指示情報を、所定のデータサイズに分割した分割転送指示情報を生成する生成工程と、
前記分割転送指示情報に基づくデータ転送を指示する転送指示工程と、
前記データ転送の指示に従って、前記第１記憶装置と前記第２記憶装置の間のデータ転送処理を制御する転送制御工程と、
を含むことを特徴とするデータ処理方法。
【請求項１３】
コンピュータを、
第１記憶装置から第２記憶装置にデータ転送が必要と判断した場合、転送データにおけるデータ転送元の記憶位置、データ転送先の記憶位置、及びデータ転送サイズを指定した転送指示情報を生成する第１生成部と、
前記転送指示情報を、所定のデータサイズに分割した分割転送指示情報を生成する第２生成部と、
前記第１記憶装置と前記第２記憶装置の間のデータ転送処理を制御する転送制御部に対して、前記分割転送指示情報に基づくデータ転送を指示する転送指示部と、
して機能させるためのデータ処理プログラム。
【請求項１４】
プロセッサを含むシステムにおいて、
前記プロセッサと異なるハードウェアを、
前記プロセッサにより、第１記憶装置から第２記憶装置にデータ転送が必要と判断され生成された、転送データにおけるデータ転送元の記憶位置、データ転送先の記憶位置、及びデータ転送サイズを指定した転送指示情報を、所定のデータサイズに分割した分割転送指示情報を生成する生成部と、
前記第１記憶装置と前記第２記憶装置の間のデータ転送処理を制御する転送制御部に対して、前記分割転送指示情報に基づくデータ転送を指示する転送指示部と、
して機能させるためのデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ処理装置、データ処理方法、及びデータ処理プログラムに関するものである。
【背景技術】
【０００２】
従来から、ＤＭＡ（Direct  Memory  Access）コントローラを備えるデータ処理装置が知られている。このような従来のデータ処理装置では、ＤＭＡコントローラにより、ＣＰＵ（Central  Processing  Unit）の代わりに、主記憶装置から不揮発性の記憶装置へ、直接データ転送することができる。これにより、従来のデータ処理装置では、データ転送時間の短縮などが実現できる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−１３５０６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のデータ処理装置では、データが断片化して小さくなっている場合、ＣＰＵが、データ転送のたびに転送指示情報を生成する必要がある。そのため、従来のデータ処理装置では、ＣＰＵに処理負荷がかかってしまう。
【課題を解決するための手段】
【０００５】
実施形態に係るデータ処理装置は、第１記憶装置から第２記憶装置にデータ転送が必要と判断した場合、転送データにおけるデータ転送元の記憶位置、データ転送先の記憶位置、及びデータ転送サイズを指定した転送指示情報を生成する第１生成部と、前記転送指示情報を、所定のデータサイズに分割した分割転送指示情報を生成する第２生成部と、前記分割転送指示情報に基づくデータ転送を指示する転送指示部と、前記データ転送の指示に従って、前記第１記憶装置と前記第２記憶装置の間のデータ転送処理を制御する転送制御部と、を備える。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態に係るデータ処理装置の構成例を示す図。
【図２】第１の実施形態に係るデータ処理の機能構成と動作例を示す図。
【図３】第１の実施形態に係る仮想メモリ空間の例を示す図。
【図４】第１の実施形態に係るページテーブルの例を示す図。
【図５】第１の実施形態に係るデータ処理時の処理手順例を示すフローチャート。
【図６】第１の実施形態に係るデータ転送時の処理手順例を示すシーケンス図。
【発明を実施するための形態】
【０００７】
以下に、添付図面を参照して、データ処理装置、データ処理方法、及びデータ処理プログラムの実施形態を詳細に説明する。
【０００８】
［第１の実施形態］
＜データ処理装置＞
図１は、本実施形態に係るデータ処理装置１００の構成例を示す図である。図１に示すように、本実施形態に係るデータ処理装置１００は、ＣＰＵ１０１、ＲＯＭ（Read  Only  Memory）１０２、ＲＡＭ（Random  Access  Memor）１０３、データ蓄積部１０４、及びＤＭＡコントローラ１０５を備えている。また、本実施形態に係るデータ処理装置１００は、メモリ管理ユニット１０６、転送情報記憶部１０７、生成部１０８、転送設定記憶部１０９、及び転送指示部１１０を備えている。本実施形態に係るデータ処理装置１００は、各ハードウェアがバスＢを介して接続されており、バスＢを介して、データの送受信を行う。なお、図１には、各ハードウェアが１本のバスＢで接続されている例を示したが、例えば、ＰＣＩ（Peripheral  Component  Interconnect）バスのような規格に基づき接続されている。
【０００９】
ＣＰＵ１０１は、装置全体の制御や搭載機能を実現する演算装置である。ＲＯＭ１０２は、プログラムやデータなどが格納されている不揮発性のメモリである。ＲＡＭ１０３は、例えば、ＳＲＡＭ（Static  RAM）やＤＲＡＭ（Dynamic  RAM）などのメモリであり、プログラムやデータが読み出され一時保持される揮発性のメモリ（主記憶装置）である。よって、ＣＰＵ１０１は、例えば、ＲＯＭ１０２から、プログラムやデータをＲＡＭ１０３上に読み出し、処理を実行することで、装置全体の制御や搭載機能を実現する。
【００１０】
データ蓄積部１０４は、例えば、ＨＤＤ（Hard  Disk  Drive）やメモリカードなどの記録メディアであり、アプリケーションプログラムやデータなどを格納する不揮発性の記憶装置である。ＤＭＡコントローラ１０５は、ＲＡＭ１０３とデータ蓄積部１０４の間で行うデータ転送処理を制御する制御装置である。
【００１１】
メモリ管理ユニット１０６は、ＲＡＭ１０３上の記憶領域（以下「メモリ空間」という）と切り離した仮想的な記憶領域（以下「仮想メモリ空間」という）を、アプリケーションプログラムなどに提供するユニットである。メモリ管理ユニット１０６は、仮想ページと実ページを対応付けるページテーブル（ページ管理情報）を用いて、メモリ空間と仮想メモリ空間を管理する。
【００１２】
転送情報記憶部１０７は、データ転送の指示を表す転送指示情報などのデータが保持されている揮発性のメモリである。生成部１０８は、転送指示情報に基づき、ＤＭＡコントローラ１０５の仕様に従って、データ転送時の分割データに対応する分割転送指示情報を生成する生成装置である。
【００１３】
転送設定記憶部１０９は、ＤＭＡコントローラ１０５及びデータ蓄積部１０４へのデータ転送時の設定（以下「データ転送設定」という）や、データ転送時の割り込み制御の処理手順（以下「割り込み処理手順」という）などのデータが保持されている揮発性のメモリである。転送指示部１１０は、データ転送設定や割り込み処理手順に基づき、ＤＭＡコントローラ１０５及びデータ蓄積部１０４に対して、データ転送設定、データ転送の指示、又は割り込み制御などを行う制御装置である。
【００１４】
以上のように、本実施形態に係るデータ処理装置１００は、上記構成により、ＲＡＭ１０３に記憶されたデータをデータ蓄積部１０４に転送し、保存するデータ処理機能を提供することができる。
【００１５】
＜データ処理機能＞
本実施形態に係るデータ処理機能について説明する。本実施形態に係るデータ処理装置１００は、ＣＰＵ１０１と異なる装置（例えば「回路」などのハードウェアロジック）で機能が実現される生成部１０８及び転送指示部１１０を備える。データ処理装置１００は、ＣＰＵ１０１が、ＲＡＭ１０３からデータ蓄積部１０４にデータ転送が必要と判断した場合、転送データにおけるデータ転送元の記憶位置、データ転送先の記憶位置、及びデータ転送サイズなどを指定した転送指示情報を生成する。データ処理装置１００は、生成部１０８が、ＤＭＡコントローラ１０５の仕様に従って、転送指示情報を転送データサイズごとに分割した分割転送指示情報を生成する。データ処理装置１００は、転送指示部１１０が、ＤＭＡコントローラ１０５に対して、分割転送指示情報に基づくデータ転送を指示する。本実施形態に係るデータ処理装置１００は、このようなデータ処理機能を有している。
【００１６】
データ処理には、例えば、データの破損や紛失を防ぐため、ＲＡＭ１０３に記憶されたデータが書き換わるたびに、データをデータ蓄積部１０４に保存するなどがある。
【００１７】
従来のデータ処理装置では、ＣＰＵ１０１が、データごとに分割データサイズや属性情報を含む分割転送指示情報を、データ転送のたびに生成するため、上記のようなデータ転送頻度の高いデータ処理を行う場合、ＣＰＵ１０１に高い処理負荷がかかる。また、従来のデータ処理装置では、データ転送時に、ＤＭＡコントローラ１０５からＣＰＵ１０１に対して、頻繁に割り込み信号が発行されるため、ＣＰＵ１０１に高い処理負荷がかかる。
【００１８】
そこで、本実施形態に係るデータ処理機能では、ＣＰＵ１０１と異なる装置により、ＤＭＡコントローラ１０５に渡す分割転送指示情報の生成や、ＤＭＡコントローラ１０５へのデータ転送の指示などを実現し、データ転送時のＣＰＵ１０１の独立性を高める仕組みとした。
【００１９】
以下に、本実施形態に係るデータ処理機能の構成とその動作について説明する。なお、本実施形態では、ＲＡＭ１０３が、データ転送元の記憶装置（第１記憶装置）に相当し、データ蓄積部１０４が、データ転送先の記憶装置（第２記憶装置）に相当する。また、ＤＭＡコントローラ１０５が、ＲＡＭ１０３とデータ蓄積部１０４の間のデータ転送処理を制御するデータ転送制御部として機能する。
【００２０】
図２は、本実施形態に係るデータ処理の機能構成と動作例を示す図である。本実施形態に係るＣＰＵ１０１は、転送データの転送指示情報１０７Ｄを生成し、生成された転送指示情報１０７Ｄは、転送情報記憶部１０７に記憶される。ＣＰＵ１０１は、ＲＡＭ１０３上のデータが更新された（書き換えられた）ことを受けて、転送指示情報１０７Ｄを生成する。つまり、本実施形態では、ＣＰＵ１０１が、ＲＡＭ１０３上のデータ更新を検知すると、ＲＡＭ１０３からデータ蓄積部１０４にデータ転送が必要と判断する。
【００２１】
ここで、本実施形態に係るＣＰＵ１０１が生成する転送指示情報１０７Ｄについて説明する。図２に示すように、転送指示情報１０７Ｄは、主記憶部先頭アドレス、蓄積部先頭セクタ、及び転送サイズなどの情報項目（フィールド）を有し、各情報項目の項目値が対応付けられ、１つのエントリとして管理される。
【００２２】
主記憶部先頭アドレスは、データ蓄積部１０４に保存する転送データのＲＡＭ１０３上におけるアドレスを表す情報（データ転送元の記憶位置情報）である。蓄積部先頭セクタは、転送データをデータ蓄積部１０４上で保存するセクタの先頭番号を表す情報（データ転送先の記憶位置情報）である。転送サイズは、データ蓄積部１０４で保存する転送データのデータサイズを表す情報（データ転送サイズ情報）である。なお、転送指示情報１０７Ｄの情報項目は、この限りでない。図２に示す情報項目は一例であって、例えば、データ蓄積部１０４のデバイス種別に基づき、新たな情報項目を追加してもよい。新たな情報項目には、例えば、エントリが有効であるか否かを表すビット値（フラグ情報）や、エントリ間におけるデータ転送の実行間隔を表すタイマー値（データ転送間隔情報）などがある。
【００２３】
例えば、図２に示す転送指示情報１０７Ｄでは、ＲＡＭ１０３上のアドレス‘０ｘ８０００１０００’を先頭とする‘０ｘ２０００’［byte］分の転送データが、１番目のエントリとして管理されている例が示されている。また、転送データをデータ蓄積部１０４上で保存する際のセクタの先頭番号は、‘０ｘ８０００’である例が示されている。
【００２４】
このように、本実施形態に係るＣＰＵ１０１は、ＲＡＭ１０３上の連続したデータ単位又はデータ蓄積部１０４上の連続したデータ単位で、主記憶部先頭アドレス、蓄積部先頭セクタ、及び転送サイズなどを含む転送指示情報１０７Ｄを生成する。よって、転送指示情報１０７Ｄは、ＣＰＵ１０１により、断片化しているデータの数だけ生成される。
【００２５】
以下に、本実施形態に係るＣＰＵ１０１による転送指示情報１０７Ｄの生成方法について、詳細に説明する。
【００２６】
一般的に、ＯＳ（Operating  System）は、個々のアプリケーションプログラムに対して独立した記憶領域である仮想メモリ空間を提供する仮想メモリ機能を有している。
【００２７】
仮想メモリ空間は、アプリケーションプログラムに提供するＲＡＭ１０３上のメモリ空間を仮想的に構成することで実現される。仮想メモリ空間には、例えば、アプリケーションプログラムの実行時に必要なデータを、ＲＡＭ１０３上に保持したり、一時的にデータ蓄積部１０４へ退避したりする。
【００２８】
仮想メモリ空間は、所定のサイズ（ページサイズ：例えば‘４０９６’が一般的なサイズ）に分割された仮想ページとして管理される。同様に、ＲＡＭ１０３上のメモリ空間も、仮想ページと同一のサイズである実ページに分割され管理される。メモリ管理ユニット１０６は、仮想ページと実ページを対応させるページテーブルを用いて、ＲＡＭ１０３上のメモリ空間と切り離された仮想メモリ空間を、アプリケーションプログラムに提供している。
【００２９】
そこで、本実施形態に係るＣＰＵ１０１では、仮想メモリ機能が、仮想ページのデータを、実ページからデータ蓄積部１０４にデータ転送を必要とするタイミングで、転送指示情報１０７Ｄを生成する。
【００３０】
図３は、本実施形態に係る仮想メモリ空間９１の例を示す図である。図３に示すように、ＯＳは、当該ＯＳがアプリケーションプログラムに提供する仮想メモリ空間９１ごとに仮想アドレスマップ９２を保持している。仮想アドレスマップ９２は、開始仮想アドレス、終了仮想アドレス、及びオブジェクト内オフセットなどを保持し、チェーン状のテーブルで構成される。仮想アドレスマップ９２は、対応するメモリ／ファイルオブジェクト９３を参照する。
【００３１】
メモリ／ファイルオブジェクト９３は、ストレージ（データ蓄積部１０４）上のセクタ番号のリストなどを保持している。セクタ番号のリストは、該当する仮想アドレスマップ９２が示す仮想メモリ空間９１の領域サイズに一致する長さ分のストレージ上の１つ以上のセクタ番号である。セクタ番号は、本実施形態におけるデータ蓄積部１０４のセクタ番号に相当する。また、メモリ／ファイルオブジェクト９３は、対応するＲＡＭ１０３上の実ページを示す実メモリマップ９４を参照する。実メモリマップ９４は、図中に“ｖｍ＿ｐａｇｅ”と表された実ページを保持している。
【００３２】
図４は、本実施形態に係るページテーブル８１の例を示す図である。図４に示すように、メモリ管理ユニット１０６は、ページテーブル８１を保持している。ページテーブル８１は、仮想メモリ空間９１の先頭から、複数の情報項目がエントリされる。エントリされる情報項目は、仮想アドレスマップ９２と実メモリマップ９４から生成される。生成される情報項目には、ＲＡＭ１０３のアドレスをページサイズで除算した数値で表される実ページ番号や、実ページへのアクセス制御を表すアクセスコントロール情報などがある。また、生成される情報項目には、実ページのデータが更新されたことを表す更新ビット（更新情報）や、実ページへの書き込みを許可するか否かを表す書き込み許可ビット（書き込み許可情報）などがある。生成された情報項目は、１つのエントリとして項目値が対応付けられ、仮想ページごとにページテーブル８１内で管理される。なお、ページテーブル８１の構造や管理方法については、メモリ管理ユニット１０６の仕様による。
【００３３】
本実施形態に係るＣＰＵ１０１は、メモリ管理ユニット１０６が保持するページテーブル８１にアクセスし、更新ビットに基づき、ＲＡＭ１０３上のデータ更新の有無を検知する。具体的にＣＰＵ１０１は、ＯＳによる仮想メモリの制御タイミングに合わせて、以下の処理により、転送指示情報１０７Ｄを生成する。なお、ＯＳによる仮想メモリの制御タイミングには、３０［sec］などの所定時間の経過した場合、実行プロセスが切り替わった場合（コンテキストスイッチが切り替わった場合）、又は特定の割り込みが発生した場合などがある。ＯＳによる仮想メモリの制御タイミングは、ＯＳの仕様による。
【００３４】
まず、本実施形態に係るＣＰＵ１０１は、ページテーブル８１内をスキャンして、更新ビットが‘１’になっているエントリを検索する。ＣＰＵ１０１は、該当するエントリからデータ転送先を決定し、仮想ページのエントリ番号と一致する仮想アドレスマップ９２、メモリ／ファイルオブジェクト９３、及び実メモリマップ９４を検索する。
【００３５】
その結果、本実施形態に係るＣＰＵ１０１は、検索結果に基づき、データが更新された実ページに対応するページテーブル８１から得た値を用いて、以下の計算式（式１）〜（式３）により、転送指示情報１０７Ｄのエントリを生成する。
主記憶部先頭アドレス＝（実ページ番号）×（ページサイズ）  ・・・  （式１）
実ページ番号は、実メモリマップ９４の先頭の実ページ“ｖｍ＿ｐａｇｅ”が保持する実ページ番号を表し、ページサイズは、実ページのサイズ値（例えば４０９６［byte］）を表す。
蓄積部先頭セクタ＝（セクタ番号）  ・・・  （式２）
セクタ番号は、メモリ／ファイルオブジェクト９３のストレージ上のセクタ番号リストの先頭のセクタ番号を表す。
転送サイズ＝（終了仮想アドレス）−（開始仮想アドレス）  ・・・  （式３）
終了仮想アドレスは、仮想アドレスマップの終了仮想アドレスを表し、開始仮想アドレスは、仮想アドレスマップの開始仮想アドレスを表す。
【００３６】
このように、本実施形態に係るＣＰＵ１０１は、ＲＡＭ１０３上のデータ更新の検知を、データ転送の開始トリガとしている。ＣＰＵ１０１は、ＲＡＭ１０３上のデータ更新を検知すると、転送データにおけるデータ転送元の記憶位置、データ転送先の記憶位置、及びデータ転送サイズなどを指定した転送指示情報１０７Ｄを生成する。つまり、本実施形態では、ＣＰＵ１０１が、転送指示情報１０７Ｄを生成する生成部（第１生成部）として機能する。
【００３７】
図２の説明に戻る。生成部１０８（第２生成部）は、転送データの分割転送指示情報１０８Ｄを生成する。生成された分割転送指示情報１０８Ｄは、生成部１０８内部の記憶領域（以下「内部記憶領域」という）に記憶される。生成部１０８は、ＤＭＡコントローラ１０５から、読み出しアドレスで指定された内部記憶領域への参照要求を受け付けると、転送情報記憶部１０７に記憶された転送指示情報１０７Ｄに基づき、分割転送指示情報１０８Ｄを生成する。つまり、生成部１０８は、参照要求された読み出しアドレスに基づき、転送情報記憶部１０７のどの転送指示情報１０７Ｄから分割転送指示情報１０８Ｄを生成するかを決定する。
【００３８】
このとき生成部１０８は、ＤＭＡコントローラ１０５の仕様に従って、転送指示情報１０７Ｄの１つのエントリから、複数の分割転送指示情報１０８Ｄを生成する。つまり、生成部１０８は、ＤＭＡコントローラ１０５の仕様に従ったデータサイズに基づき、転送指示情報１０７Ｄの１つのエントリを分割し、複数の分割転送指示情報１０８Ｄを生成する。なお、転送情報記憶部１０７において、どの転送指示情報１０７Ｄのエントリが選択されているかについては、生成部１０８により決定される。生成部１０８は、セレクタ回路に制御信号を入力することで、転送指示情報１０７Ｄのエントリ選択を制御する。
【００３９】
ここで、本実施形態に係る生成部１０８が生成する分割転送指示情報１０８Ｄについて説明する。図２に示すように、分割転送指示情報１０８Ｄは、主記憶部先頭アドレス、蓄積部先頭セクタ、転送サイズ、及び属性値などの情報項目を有し、各情報項目の項目値が対応付けられて管理される。
【００４０】
主記憶部先頭アドレスは、データ転送元の記憶位置情報である。蓄積部先頭セクタは、データ転送先の記憶位置情報である。転送サイズは、データ転送サイズ情報である。これらの情報項目は、転送指示情報１０７Ｄの情報項目と同じである。これに対して、属性値は、転送指示情報１０７Ｄの１つのエントリに対応する転送データを分割した場合、分割された転送データの終端を表す情報（終端情報）であり、分割転送指示情報１０８Ｄの情報項目である。属性値は、ＤＭＡコントローラ１０５ごとに定義が異なるため、ＤＭＡコントローラ１０５の仕様に応じた値を設定する。
【００４１】
なお、分割転送指示情報１０８Ｄの構造は、この限りでない。図２に示す構造は一例であって、例えば、配列構造やチェーン構造など、ＤＭＡコントローラ１０５のデバイス種別に応じた構造であればよい。
【００４２】
例えば、図２に示す分割転送指示情報１０８Ｄには、転送指示情報１０７Ｄの１番目のエントリから生成した分割転送指示情報１０８Ｄの例が示されている。なお、本実施形態では、転送指示情報１０７Ｄの中で１つのエントリとして管理している‘０ｘ２０００’［byte］分の転送データを、ＤＭＡコントローラ１０５に応じて‘０ｘ１０００’単位で分割した場合の例が示されている。具体的には、ＲＡＭ１０３上のアドレス‘０ｘ８０００１０００’を先頭とする転送データを２つのデータに分割した場合、各分割データに、終端でないことを表す属性値‘０ｘ２１’（非終端フラグ）と、終端であることを表す属性値‘０ｘ２３’（終端フラグ）が設定されている。また、転送データをデータ蓄積部１０４上で保存する際の蓄積部先頭セクタは、‘０ｘ８０００’である例が示されている。
【００４３】
このように、本実施形態に係る生成部１０８は、まず、ＤＭＡコントローラ１０５の仕様に基づき、転送データの分割サイズや転送データの終端を表す属性値などを決定する。その後、生成部１０８は、転送指示情報１０７Ｄの１つのエントリから、参照要求された読み出しアドレス単位で、分割転送指示情報１０８Ｄを生成する。なお、転送データの分割単位や転送データの終端を表す属性値などを決定するＤＭＡコントローラ１０５の仕様は、予め転送情報記憶部１０７に設定し、記憶しておく。これにより、生成部１０８は、転送情報記憶部１０７の設定情報に基づき、転送指示情報１０７Ｄを、ＤＭＡコントローラ１０５の仕様に従ったデータサイズに分割し、分割転送指示情報１０８Ｄを生成する。生成部１０８は、生成した分割転送指示情報１０８Ｄを、参照要求されたＤＭＡコントローラ１０５に、読み出しデータとして出力する。
【００４４】
転送指示部１１０は、データ転送設定、データ転送の指示、又は割り込み制御などを行う。転送指示部１１０は、生成部１０８への参照要求を行う際に指定する読み出しアドレスを設定することで、ＤＭＡコントローラ１０５にデータ転送設定を行う。これにより、転送指示部１１０は、ＤＭＡコントローラ１０５に対して、データ転送を指示する。また、転送指示部１１０は、転送データを保存するセクタの先頭番号を設定することで、データ蓄積部１０４にデータ転送設定を行う。なお、転送指示部１１０は、転送設定記憶部１０９に予め記憶しておいたセクタ番号に基づき、データ転送設定を行う。
【００４５】
転送指示部１１０は、ＤＭＡコントローラ１０５から割り込み信号が入力されると、入力信号に基づく割り込み制御を行う。このとき転送指示部１１０は、転送設定記憶部１０９に予め記憶しておいた割り込み処理手順に従って、割り込み制御を行う。転送指示部１１０は、割り込み制御が完了すると、その旨を生成部１０８に通知する。転送指示部１１０は、例えば、ＤＭＡコントローラ１０５から、データ転送完了の割り込み信号が入力されると、ＤＭＡコントローラ１０５に対して割り込み制御を行い、データ転送が完了したことを生成部１０８に通知する。
【００４６】
これを受けて、生成部１０８は、転送指示情報１０７Ｄの参照先を、完了したデータ転送に対応する分割転送指示情報１０８Ｄの生成時に参照したエントリから次のエントリに移し、転送指示情報１０７Ｄの先頭を更新する。
【００４７】
このように、本実施形態では、データ転送時におけるＣＰＵ１０１の処理が、転送指示情報１０７Ｄの生成処理だけとなる。これにより、本実施形態に係るデータ処理装置１００では、データ転送におけるＣＰＵ１０１の処理が少なく、ＤＭＡコントローラ１０５からの割り込みもないため、ＣＰＵ１０１の処理負荷を軽減することができる。
【００４８】
以上のような本実施形態に係るデータ処理機能は、データ処理装置１００において、上記各機能部が連携動作することで実現される。なお、本実施形態では、上記生成部１０８と上記転送指示部１１０の各機能を、ＣＰＵ１０１と異なる装置により実現する。よって、本実施形態に係るデータ処理機能は、ＣＰＵ１０１によるデータ処理プログラムの実行で実現される転送指示情報生成機能と、それぞれ独立した装置で実現される生成部１０８と転送指示部１１０の各機能とが、連携動作することで実現される。
【００４９】
なお、データ処理プログラムは、実行環境であるデータ処理装置１００（コンピュータ）が備えるＲＯＭ１０２に予め組み込んで提供される。データ処理プログラムは、転送指示情報生成機能の各機能部を含むモジュール構成となっており、ＣＰＵ１０１がＲＯＭ１０２からプログラムを読み出し実行することで、ＲＡＭ１０３上に各機能部が生成される。なお、データ処理プログラムの提供方法は、この限りでない。例えば、データ処理プログラムを、インターネットなどに接続された機器に格納し、ネットワーク経由でダウンロードし、配布する方法であってもよい。また、データ処理装置１００が読み取り可能な記録媒体に、インストール可能な形式又は実行可能な形式のファイルを記録し提供する方法であってもよい。
【００５０】
以下に、データ処理機能の動作（各機能部の連携動作）について、フローチャートとシーケンス図を用いて説明する。
【００５１】
《データ処理時の動作》
図５は、本実施形態に係るデータ処理時の処理手順例を示すフローチャートである。図５に示すように、ＣＰＵ１０１は、ＲＡＭ１０３上のデータ更新を検知すると、転送データの転送指示情報１０７ＤをＲＡＭ１０３上で生成し（ステップＳ１）、生成した転送指示情報１０７Ｄを転送情報記憶部１０７へと書き込む（ステップＳ２）。
【００５２】
次に、転送指示部１１０は、ＤＭＡコントローラ１０５にデータ転送設定を行う際に（実際にデータ転送を開始する指示がソフトウェアから出された際に）、有効な転送指示情報１０７Ｄが１つ以上存在しているか否かを判定する（ステップＳ３）。
【００５３】
その結果、転送指示部１１０は、有効な転送指示情報１０７Ｄが１つ以上存在していると判定した場合（ステップＳ３：ＹＥＳ）、ＤＭＡコントローラ１０５に対して、生成部１０８に参照要求する際の読み出しアドレスなどの各種諸条件を含むデータ転送設定を実行する（ステップＳ４）。これにより、ＤＭＡコントローラ１０５が、データ転送開始時に、生成部１０８に対して、分割転送指示情報１０８Ｄへの参照要求を行った場合には、読み出しアドレスで指定されたアドレスが、分割転送指示情報１０８Ｄの参照開始位置となる。また、転送指示部１１０は、ステップＳ４において、データ蓄積部１０４に転送データを保存するセクタの先頭番号などの各種諸条件を含むデータ転送設定を実行する。なお、転送指示部１１０は、有効な転送指示情報１０７Ｄが１つ以上存在していないと判定した場合（ステップＳ３：ＮＯ）、処理を終了する。
【００５４】
生成部１０８は、ＤＭＡコントローラ１０５から、分割転送指示情報１０８Ｄへの参照要求があったか否かを判定する（ステップＳ５）。
【００５５】
その結果、生成部１０８は、分割転送指示情報１０８Ｄへの参照要求があったと判定した場合（ステップＳ５：ＹＥＳ）、参照要求されたアドレスに対応する分割転送指示情報１０８Ｄを、ＣＰＵ１０１により生成された転送指示情報１０７Ｄに基づき生成する（ステップＳ６）。つまり、生成部１０８は、参照要求された読み出しアドレスに基づき、転送情報記憶部１０７のどの転送指示情報１０７Ｄから分割転送指示情報１０８Ｄを生成するかを決定し、情報を生成する。このとき生成部１０８は、ＤＭＡコントローラ１０５に応じて、転送データの分割サイズや転送データの終端を表す属性値などを決定する。その後、生成部１０８は、転送指示情報１０７Ｄの１つのエントリから、参照要求された読み出しアドレス単位で、分割転送指示情報１０８Ｄを生成する。なお、生成部１０８は、分割転送指示情報１０８Ｄへの参照要求がなかったと判定した場合（ステップＳ５：ＮＯ）、ステップＳ５の処理に移行し、参照要求待ちの状態となる。
【００５６】
次に、生成部１０８は、生成した分割転送指示情報１０８Ｄが、生成元である転送指示情報１０７Ｄのエントリに対応する転送データの終端に到達したか否かを判定する（ステップＳ７）。つまり、生成部１０８は、分割転送指示情報１０８Ｄの生成処理が、該当する転送データの終端まで実行されたか否かを判定する。
【００５７】
その結果、生成部１０８は、生成した分割転送指示情報１０８Ｄが、生成元である転送指示情報１０７Ｄのエントリに対応する転送データの終端に到達したと判定した場合（ステップＳ７：ＹＥＳ）、生成した分割転送指示情報１０８Ｄの属性値に終端フラグの値を設定する（ステップＳ８）。その後、生成部１０８は、生成した分割転送指示情報１０８Ｄを、参照要求したＤＭＡコントローラ１０５にする（ステップＳ９）。これにより、ＤＭＡコントローラ１０５は、参照要求に対して出力された分割転送指示情報１０８Ｄの属性値に基づき、全ての分割転送指示情報１０８Ｄを取得したか否かを判定できる。なお、生成部１０８は、生成した分割転送指示情報１０８Ｄが、生成元である転送指示情報１０７Ｄのエントリに対応する転送データの終端に到達していないと判定した場合（ステップＳ７：ＮＯ）、生成した分割転送指示情報１０８Ｄの属性値に非終端フラグの値を設定し、ステップＳ９の処理を実行する。
【００５８】
転送指示部１１０は、ＤＭＡコントローラ１０５からデータ転送完了の割り込み信号の入力があったか否かを判定する（ステップＳ１０）。ＤＭＡコントローラ１０５は、生成部１０８から出力された分割転送指示情報１０８Ｄに基づき、データ蓄積部１０４にデータ転送を行う。よって、ＤＭＡコントローラ１０５は、分割転送指示情報１０８Ｄの属性値に基づき、全ての分割転送指示情報１０８Ｄを取得したと判定し、データ転送が完了した場合、データ転送完了の割り込み信号を発行する。
【００５９】
その結果、転送指示部１１０は、ＤＭＡコントローラ１０５からデータ転送完了の割り込み信号の入力があったと判定した場合（ステップＳ１０：ＹＥＳ）、ＤＭＡコントローラ１０５に対して割り込み制御を実行する（ステップＳ１１）。
【００６０】
一方、転送指示部１１０は、ＤＭＡコントローラ１０５からデータ転送完了の割り込み信号の入力がなかったと判定した場合（ステップＳ１０：ＮＯ）、ステップＳ５からの処理を再度繰り返す。その間、生成部１０８は、ＤＭＡコントローラ１０５からの参照要求に応じて、分割転送指示情報１０８Ｄを生成する。なお、このとき生成部１０８は、ＤＭＡコントローラ１０５から、前回の処理時に参照要求されたアドレスの次のアドレスに基づく参照要求を受け付ける。
【００６１】
次に、転送指示部１１０は、処理対象の転送指示情報１０７Ｄにおける１エントリ分のデータ転送が完了したか否かを判定する（ステップＳ１２）。このとき転送指示部１１０は、ＤＭＡコントローラ１０５から入力されたデータ転送完了の割り込み信号に基づき、データ転送が完了したか否かを判定する。なお、データ転送完了の割り込み信号には、データ転送が正常に完了したか否かのデータ転送結果を表す情報（以下「データ転送結果情報」という）が含まれる。よって、転送指示部１１０は、データ転送完了の割り込み信号に含まれるデータ転送結果情報に基づき、データ転送が完了したか否かを判定する。
【００６２】
その結果、転送指示部１１０は、処理対象の転送指示情報１０７Ｄにおける１エントリ分のデータ転送が完了したと判定した場合（ステップＳ１２：ＹＥＳ）、生成部１０８に対して、データ転送が完了した旨を通知する。これを受けて、生成部１０８は、処理対象の転送指示情報１０７Ｄにおけるエントリ（参照先）を次のエントリに移し（ステップＳ１３）、転送指示情報１０７Ｄの先頭を更新する。その後、本実施形態に係るデータ処理は、再びステップＳ３の処理に移行し、有効な転送指示情報１０７Ｄが存在する間、データ処理を継続する。
【００６３】
なお、転送指示部１１０は、処理対象の転送指示情報１０７Ｄにおける１エントリ分のデータ転送が完了していないと判定した場合（ステップＳ１２：ＮＯ）、異常処理を実行する（ステップＳ１４）。このとき実行する異常処理には、表示画面へのエラー表示や電子メールなどによるエラー通知などがある。
【００６４】
《データ転送時の動作》
図６は、本実施形態に係るデータ転送時の処理手順例を示すシーケンス図である。図６には、上記データ処理の中で実行されるＤＭＡコントローラ１０５によるデータ転送の動作例が示されている。
【００６５】
図６に示すように、本実施形態に係るデータ転送は、ＣＰＵ１０１が、ＲＡＭ１０３上のデータ更新を検知すると、転送指示情報１０７Ｄを生成し、生成された転送指示情報１０７Ｄが転送情報記憶部１０７に記憶された後に実行される。
【００６６】
本実施形態に係るデータ転送は、主に、図６に示す処理Ａと処理Ｂを有する。処理Ａは、転送指示情報１０７Ｄのエントリ単位で繰り返し実行される。処理Ｂは、処理Ａの中で、分割された転送データ単位で繰り返し実行される。
【００６７】
処理Ａでは、転送指示部１１０が、有効な転送指示情報１０７Ｄの存在を検知すると、データ蓄積部１０４に対して、転送データを保存するセクタの先頭番号を設定し、データ転送設定を行う（ステップＳ２１）。
【００６８】
その後、処理Ａでは、処理Ｂが実行され、転送指示部１１０が、処理対象の転送指示情報１０７Ｄにおける１エントリ分のデータ転送が完了したことを検知すると、生成部１０８に対して、データ転送が完了した旨を通知する（ステップＳ２２）。これを受けて、生成部１０８が、処理対象の転送指示情報１０７Ｄにおけるエントリを次のエントリに移す。
【００６９】
このように、処理Ａは、転送指示部１１０が、有効な転送指示情報１０７Ｄの存在を検知する間、転送指示情報１０７Ｄのエントリ単位で繰り返し実行される。
【００７０】
一方、処理Ｂでは、生成部１０８、転送指示部１１０、及びＤＭＡコントローラ１０５により、次のような処理が実行される。
【００７１】
まず、転送指示部１１０は、ＤＭＡコントローラ１０５に対して、生成部１０８への参照要求を行う際に指定する読み出しアドレスを設定し、データ転送設定を行う（ステップＳ３１）。その後、ＤＭＡコントローラ１０５は、設定された読み出しアドレスに基づき、生成部１０８に対して、分割転送指示情報１０８Ｄの参照要求を行う（ステップＳ３２）。これを受けて、生成部１０８は、転送指示情報１０７Ｄに基づき、参照要求されたアドレスに対応する分割転送指示情報１０８Ｄを生成し、ＤＭＡコントローラ１０５に対して、生成した分割転送指示情報１０８Ｄを出力する（ステップＳ３３）。
【００７２】
その結果、ＤＭＡコントローラ１０５は、ＲＡＭ１０３とデータ蓄積部１０４の間のデータ伝送路に相当するバスＢを制御することで（ステップＳ３４）、分割転送指示情報１０８Ｄに基づく、ＲＡＭ１０３からデータ蓄積部１０４へのデータ転送が実行される。このときＤＭＡコントローラ１０５は、分割転送指示情報１０８Ｄの主記憶部先頭アドレス、転送サイズ、及び蓄積部先頭セクタに基づき、ＲＡＭ１０３からデータ蓄積部１０４へのデータ転送を行う。具体的には、ＲＡＭ１０３上の主記憶部先頭アドレスに位置する転送サイズ分のデータを、データ蓄積部１０４に転送し、蓄積部先頭セクタの位置に書き込む。
【００７３】
ＤＭＡコントローラ１０５は、データ転送が完了すると、転送指示部１１０に対して、データ転送完了の割り込み信号を発行する（ステップＳ３５）。このときＤＭＡコントローラ１０５は、分割転送指示情報１０８Ｄの属性値に基づき、データ転送完了の割り込み信号を発行する。具体的には、属性値が終端フラグの値であった場合、データ転送が完了したと判断し、データ転送完了の割り込み信号を発行する。これを受けて、転送指示部１１０が、ＤＭＡコントローラ１０５に対して、割り込み制御を行う（ステップＳ３６）。
【００７４】
なお、ＤＭＡコントローラ１０５は、分割転送指示情報１０８Ｄの属性値が終端フラグの値でない場合、データ転送完了の割り込み信号を発行しない。これにより、処理Ｂでは、転送指示部１１０により、処理対象の転送指示情報１０７Ｄにおけるエントリで指定された転送サイズ分のデータ転送が完了するまで、ＤＭＡコントローラ１０５へのデータ転送設定が繰り返し行われる。その結果、ＤＭＡコントローラ１０５は、分割した数だけ、データ転送を繰り返す。
【００７５】
このように、本実施形態に係るデータ処理機能では、ＤＭＡコントローラ１０５に渡す分割転送指示情報１０８Ｄの生成や、ＤＭＡコントローラ１０５へのデータ転送の指示などの処理が、ＣＰＵ１０１による転送指示情報１０７Ｄの生成処理と独立して実行される。
【００７６】
＜まとめ＞
以上のように、本実施形態に係るデータ処理装置１００によれば、ＣＰＵ１０１が、ＲＡＭ１０３からデータ蓄積部１０４にデータ転送が必要と判断した場合、転送データにおけるデータ転送元の記憶位置、データ転送先の記憶位置、及びデータ転送サイズなどを指定した転送指示情報１０７Ｄを生成する。データ処理装置１００は、ＣＰＵ１０１と異なる装置で機能が実現される生成部１０８により、ＤＭＡコントローラ１０５の仕様に従って、転送指示情報１０７Ｄを転送データサイズごとに分割した分割転送指示情報１０８Ｄを生成する。データ処理装置１００は、ＣＰＵ１０１と異なる装置で機能が実現される転送指示部１１０により、ＤＭＡコントローラ１０５に対して、分割転送指示情報１０８Ｄに基づくデータ転送を指示する。
【００７７】
これによって、本実施形態に係るデータ処理装置１００は、ＣＰＵ１０１と異なる装置により、ＤＭＡコントローラ１０５に渡す分割転送指示情報１０８Ｄの生成や、ＤＭＡコントローラ１０５へのデータ転送の指示などを実現し、データ転送時のＣＰＵ１０１の独立性を高める仕組みを提供する。その結果、本実施形態に係るデータ処理装置１００では、データ転送におけるＣＰＵ１０１の処理が少なく、ＤＭＡコントローラ１０５からの割り込みもないため、ＣＰＵ１０１の処理負荷を軽減することができる。
【００７８】
なお、上記実施形態では、生成部１０８と転送指示部１１０の各機能を、ＣＰＵ１０１と異なる装置のハードウェアロジック（ハードウェアの実装）により実現する例について説明を行ったが、この限りでない。例えば、生成部１０８と転送指示部１１０の各機能を、プログラム（ソフトウェア）の実行により実現してもよい。なお、プログラムの実行により、生成部１０８と転送指示部１１０の各機能を実現する場合には、ＣＰＵ１０１の処理負荷を軽減することを考慮し、プログラムを設計することが望ましい。
【００７９】
また、上記実施形態では、データ転送の開始トリガ（データ転送の要否の判断基準）を、ＣＰＵ１０１がＲＡＭ１０３上のデータ更新を検知した場合を例に説明を行ったが、この限りでない。例えば、データ転送の開始トリガは、電源オフ時や休止状態移行時など、ＲＡＭ１０３からデータ蓄積部１０４にデータを退避する必要が生じた場合であってもよい。この場合、本実施形態に係るデータ処理装置１００では、ＣＰＵ１０１に処理負荷をかけることなく、定常的にＲＡＭ１０３上のデータをデータ蓄積部１０４に退避できる。そのため、本実施形態に係るデータ処理装置１００では、ハイバネーション処理（データ退避処理）の処理時間を短縮でき、処理の高速化が図れる。
【００８０】
また、上記実施形態では、データ処理装置１００が、転送指示情報１０７Ｄを生成するＣＰＵ１０１を含む構成を例に説明を行ったが、この限りでない。本実施形態に係るデータ処理装置１００は、他の装置が備えるプロセッサが生成した転送指示情報１０７Ｄを参照し、データ処理機能を実現するシステムに含まれる構成であってもよい。
【００８１】
最後に、本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８２】
１００  データ処理装置
１０１  ＣＰＵ
１０３  ＲＡＭ
１０４  データ蓄積部
１０５  ＤＭＡコントローラ
１０７  転送情報記憶部（１０７Ｄ：転送指示情報）
１０８  生成部（１０８Ｄ：分割転送指示情報）
１１０  転送指示部
９１    仮想メモリ空間
９２    仮想アドレスマップ
９４    実メモリマップ
８１    ページテーブル
【図１】
2014215897.tif 000003
【図２】
2014215897.tif 000004
【図３】
2014215897.tif 000005
【図４】
2014215897.tif 000006
【図５】
2014215897.tif 000007
【図６】
2014215897.tif 000008