(57)【要約】【課題】ソフトウェア処理手段とハードウェア処理手段との間で逐次的なデータの遣り取りを実現する。【解決手段】データ処理装置１００は、ソフトウェア処理部１０とハードウェア処理部２０とデータ記憶部３０を備えている。ソフトウェア処理部１０は、処理対象のデータをソフトウェア処理する。ハードウェア処理部２０は、処理対象のデータをハードウェア処理する。データ記憶部３０は、ソフトウェア処理部１０とハードウェア処理部２０との間で遣り取りされるデータを記憶し、記憶したデータをハードウェア処理部１０へ逐次的に出力するＦＩＦＯメモリ３２を備えている。【選択図】図１
2019074896.tif 000002
【特許請求の範囲】
【請求項１】
データをソフトウェア処理するソフトウェア処理手段と、
データをハードウェア処理するハードウェア処理手段と、
前記ソフトウェア処理手段と前記ハードウェア処理手段との間で遣り取りされるデータを記憶し、記憶したデータを前記ハードウェア処理手段へ逐次的に出力する記憶手段と、
を有するデータ処理装置。
【請求項２】
請求項１に記載のデータ処理装置において、
前記記憶手段は、データを記憶するための記憶番地情報を前記ソフトウェア処理手段から受け取らずに、前記ソフトウェア処理手段から得られるデータを記憶する、
ことを特徴とするデータ処理装置。
【請求項３】
請求項１または２に記載のデータ処理装置において、
前記記憶手段は、データを読み出すための記憶番地情報を前記ハードウェア処理手段から受け取らずに、記憶したデータを前記ハードウェア処理手段へ出力する、
ことを特徴とするデータ処理装置。
【請求項４】
請求項１から３のいずれか１項に記載のデータ処理装置において、
前記記憶手段は、前記ソフトウェア処理手段から得られるデータをソフトウェア処理された順に次々に記憶し、記憶したデータを記憶した順に次々に前記ハードウェア処理手段へ出力する、
ことを特徴とするデータ処理装置。
【請求項５】
請求項１から４のいずれか１項に記載のデータ処理装置において、
前記記憶手段は、前記ハードウェア処理手段から得られるデータをハードウェア処理された順に次々に記憶し、記憶したデータを記憶した順に次々に前記ソフトウェア処理手段へ出力する、
ことを特徴とするデータ処理装置。
【請求項６】
請求項１から５のいずれか１項に記載のデータ処理装置において、
前記記憶手段を有効化する制御手段をさらに有し、
前記制御手段により前記記憶手段が有効化されていない場合に、前記ハードウェア処理手段は、前記記憶手段とは異なる外部メモリを介して、前記ソフトウェア処理手段とデータを遣り取りする、
ことを特徴とするデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置に関する。
【背景技術】
【０００２】
従来から、ソフトウェア処理とハードウェア処理が混在するデータ処理を実行する技術が知られている。
【０００３】
例えば、特許文献１には、ソフトウェア処理を実行するプログラマブルプロセッサ４とハードウェア処理を実行するアクセラレータプロセッサ６がメインメモリ１８を共有する構成において、コヒーレンシ制御回路２０とメモリリクエストスイッチング回路２２の調停により、アクセラレータプロセッサ６がメモリリクエストスイッチング回路２２を介してメインメモリ１８に直接的にアクセスできる構成が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第７９２５８３６号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ソフトウェア処理とハードウェア処理が混在するデータ処理において、例えばデータ処理を効率的に行うのであれば、ソフトウェア処理を実行するソフトウェア処理手段とハードウェア処理を実行するハードウェア処理手段との間において、一方の処理手段から他方の処理手段へ逐次的にデータを送ることができる構成が望ましい。
【０００６】
本発明の目的は、ソフトウェア処理手段とハードウェア処理手段との間で逐次的なデータの遣り取りを実現することにある。
【課題を解決するための手段】
【０００７】
請求項１に係る発明は、データをソフトウェア処理するソフトウェア処理手段と、データをハードウェア処理するハードウェア処理手段と、前記ソフトウェア処理手段と前記ハードウェア処理手段との間で遣り取りされるデータを記憶し、記憶したデータを前記ハードウェア処理手段へ逐次的に出力する記憶手段と、を有するデータ処理装置である。
【０００８】
請求項２に係る発明は、請求項１に記載のデータ処理装置において、前記記憶手段は、データを記憶するための記憶番地情報を前記ソフトウェア処理手段から受け取らずに、前記ソフトウェア処理手段から得られるデータを記憶する、ことを特徴とするデータ処理装置である。
【０００９】
請求項３に係る発明は、請求項１または２に記載のデータ処理装置において、前記記憶手段は、データを読み出すための記憶番地情報を前記ハードウェア処理手段から受け取らずに、記憶したデータを前記ハードウェア処理手段へ出力する、ことを特徴とするデータ処理装置である。
【００１０】
請求項４に係る発明は、請求項１から３のいずれか１項に記載のデータ処理装置において、前記記憶手段は、前記ソフトウェア処理手段から得られるデータをソフトウェア処理された順に次々に記憶し、記憶したデータを記憶した順に次々に前記ハードウェア処理手段へ出力する、ことを特徴とするデータ処理装置である。
【００１１】
請求項５に係る発明は、請求項１から４のいずれか１項に記載のデータ処理装置において、前記記憶手段は、前記ハードウェア処理手段から得られるデータをハードウェア処理された順に次々に記憶し、記憶したデータを記憶した順に次々に前記ソフトウェア処理手段へ出力する、ことを特徴とするデータ処理装置である。
【００１２】
請求項６に係る発明は、請求項１から５のいずれか１項に記載のデータ処理装置において、前記記憶手段を有効化する制御手段をさらに有し、前記制御手段により前記記憶手段が有効化されていない場合に、前記ハードウェア処理手段は、前記記憶手段とは異なる外部メモリを介して、前記ソフトウェア処理手段とデータを遣り取りする、ことを特徴とするデータ処理装置である。
【発明の効果】
【００１３】
請求項１に係る発明により、ソフトウェア処理手段とハードウェア処理手段との間で逐次的なデータの遣り取りが実現される。
【００１４】
請求項２に係る発明により、ソフトウェア処理手段から得られるデータを記憶するための記憶番地情報が不要になる。
【００１５】
請求項３に係る発明により、ハードウェア処理手段へ出力するデータを読み出すための記憶番地情報が不要になる。
【００１６】
請求項４に係る発明により、ソフトウェア処理手段から得られるデータがソフトウェア処理された順に次々にハードウェア処理手段へ出力される。
【００１７】
請求項５に係る発明により、ハードウェア処理手段から得られるデータがハードウェア処理された順に次々にソフトウェア処理手段へ出力される。
【００１８】
請求項６に係る発明により、記憶手段が有効化されていない場合に、ハードウェア処理手段とソフトウェア処理手段との間で、外部メモリを介したデータの遣り取りが実現される。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施において好適なデータ処理装置の具体例を示す図である。
【図２】図１のデータ処理装置によるデータ処理の具体例を示す図である。
【図３】図２に示すデータ処理の具体例に対応したフローチャートである。
【図４】データ処理に要する時間の具体例を示す図である。
【発明を実施するための形態】
【００２０】
図１は、本発明の実施において好適なデータ処理装置１００の具体例を示す図である。図１のデータ処理装置１００は、ソフトウェア処理部１０とハードウェア処理部２０とデータ記憶部３０を備えており、さらに図示する他の構成を備えている。
【００２１】
ソフトウェア処理部１０は、処理対象のデータをソフトウェア処理する。図１に示す具体例において、ソフトウェア処理部１０は、２つのＣＰＵ（ＣＰＵ０とＣＰＵ１）と、ＣＰＵ０の１次キャッシュとして機能するローカルキャッシュＬ１０と、ＣＰＵ１の１次キャッシュとして機能するローカルキャッシュＬ１１と、外部キャッシュ選択回路ＣＳを備えている。つまり、図１に示す具体例のソフトウェア処理部１０は、マルチプロセッサの構成を備えている。なお、マルチプロセッサとは異なる構成によりソフトウェア処理部１０が実現されてもよい。
【００２２】
ハードウェア処理部２０は、処理対象のデータをハードウェア処理する。図１に示す具体例において、ハードウェア処理部２０はＦＰＧＡ（Field Programmable Gate Array）で実現されている。なお、ハードウェア処理部２０は、ＦＰＧＡとは異なる他のデバイスを利用して実現されてもよい。例えば、ＤＲＰ（Dynamic Reconfigurable Processor：動的再構成可能プロセッサ）やＰＬＤ（Programmable Logic Device）が利用されてもよいし、ＡＳＩＣ（Application Specific Integrated Circuit）などによりハードウェア処理部２０が実現されてもよい。もちろん、上述したデバイス以外のハードウェアを利用してハードウェア処理部２０が実現されてもよい。
【００２３】
データ記憶部３０は、データ処理（ソフトウェア処理とハードウェア処理）の処理対象となるデータを記憶する。図１に示す具体例において、データ記憶部３０は、キャッシュメモリＬ２とＦＩＦＯメモリ３２を備えている。
【００２４】
キャッシュメモリＬ２は、２つのＣＰＵ（ＣＰＵ０とＣＰＵ１）の２次キャッシュとして機能する。ソフトウェア処理部１０は、スヌープキャッシュコヒーレンシ制御回路１４を介して、２次キャッシュとしてキャッシュメモリＬ２を利用する。
【００２５】
ＦＩＦＯ（Fast In Fast Out）メモリ３２は、ソフトウェア処理部１０とハードウェア処理部２０との間で遣り取りされるデータを記憶する。図１に示す具体例において、ソフトウェア処理部１０は、ＦＩＦＯキャッシュ制御回路１２を介してＦＩＦＯメモリ３２とデータを遣り取りし、ハードウェア処理部２０は、ハードウェアポート２２とＦＩＦＯキャッシュ制御回路１２を介してＦＩＦＯメモリ３２とデータを遣り取りする。
【００２６】
ＦＩＦＯメモリ３２は、先入れ先出し方式で比較的高速にデータの読み書きを実行できる記憶デバイスであり、データの読み書きにおいてアドレス情報（記憶番地情報）の設定が不要な記憶デバイスとして好適な具体例である。なお、ＦＩＦＯメモリ３２とは異なる記憶デバイスを利用して、ソフトウェア処理部１０とハードウェア処理部２０との間で遣り取りされるデータの記憶が実現されてもよい。
【００２７】
なお、図１に示す具体例において、ＤＤＲ（Double Data Rate）メモリ４０は、データ処理装置１００の外部メモリとして機能する。図１のデータ処理装置１００は、例えば、ＤＭＡコントローラ４４を介して、ＤＤＲメモリ４０から得られるデータに対してデータ処理を実行し、処理後のデータをＤＤＲメモリ４０へ出力する。なお、データ処理装置１００は、メモリコントローラ４２を介してＤＤＲメモリ４０とデータの遣り取りを実現してもよい。
【００２８】
図１のデータ処理装置１００を具現化（例えば製品化）する際には、図１に示すデータ処理装置１００が備える構成のうちの少なくとも一部がＩＣ（集積回路）やボード（基板）等にパッケージ化されてもよい。例えば、図１のデータ処理装置１００が備える構成のうちの少なくとも一部が、１個以上のＩＣに纏められてもよいし、１枚以上のボード（基板）に纏められてもよい。
【００２９】
図１のデータ処理装置１００の全体構成は以上のとおりである。次に、図１のデータ処理装置１００により実現されるデータ処理の具体例について説明する。なお、図１に示した構成（符号を付した各部）については、以下の説明において図１の符号を利用する。
【００３０】
図２は、図１のデータ処理装置１００によるデータ処理の具体例を示す図であり、図３は、図２に示すデータ処理の具体例に対応したフローチャートである。図２，図３を利用して、図１のデータ処理装置１００が実行するデータ処理の具体例を説明する。
【００３１】
まず、ＤＤＲメモリ４０からハードウェア処理部２０へデータが転送される（Ｓ１）。データ処理装置１００が処理対象とするデータは、ＤＤＲメモリ４０に記憶されており、例えば、ＤＭＡコントローラ４４の制御により、ＤＤＲメモリ４０に記憶されたデータがハードウェア処理部２０へＤＭＡ（direct memory access）転送される。
【００３２】
処理対象となるデータが転送されると、ハードウェア処理部２０は、処理対象のデータに対してハードウェア処理Ａを実行する（Ｓ２）。例えば、ＤＤＲメモリ４０から得られる処理対象のデータが圧縮データ（圧縮処理されたデータ）であれば、ハードウェア処理Ａとして、圧縮データに対する伸張処理が実行される。もちろん、ハードウェア処理Ａとして、伸張処理以外のハードウェア処理が実行されてもよい。
【００３３】
そして、ハードウェア処理部２０からデータ記憶部３０へ逐次的にデータが転送される（Ｓ３）。例えば、ハードウェア処理部２０によりハードウェア処理Ａを施されたデータが処理された順に次々にデータ記憶部３０へ転送され、データ記憶部３０が備えるＦＩＦＯメモリ３２に次々に記憶される。なお、図２に示す具体例では、ＦＩＦＯメモリ３２がハードウェアアウトプットキャッシュ３２ｏｕｔを備えており、ハードウェア処理部２０から逐次的に転送されるデータがハードウェアアウトプットキャッシュ３２ｏｕｔに次々に記憶される。
【００３４】
さらに、データ記憶部３０からソフトウェア処理部１０へ逐次的にデータが転送される（Ｓ４）。例えば、データ記憶部３０へ記憶されたデータが記憶された順に次々にソフトウェア処理部１０へ転送される。なお、図２に示す具体例では、ＦＩＦＯメモリ３２が備えるハードウェアアウトプットキャッシュ３２ｏｕｔからソフトウェア処理部１０へ次々にデータが転送される。
【００３５】
Ｓ３とＳ４のステップにおいて、ＦＩＦＯメモリ３２は、ハードウェア処理部２０から得られるデータをハードウェア処理Ａが施された順に次々に記憶し、記憶したデータを記憶した順に次々にソフトウェア処理部１０へ出力する。
【００３６】
処理対象となるデータが転送されると、ソフトウェア処理部１０は、処理対象のデータに対してソフトウェア処理を実行する（Ｓ５）。例えば、処理対象のデータが画像データであれば、ソフトウェア処理として、色変換処理等の画像処理が実行される。もちろん、ソフトウェア処理として、画像処理以外のソフトウェア処理が実行されてもよい。
【００３７】
そして、ソフトウェア処理部１０からデータ記憶部３０へ逐次的にデータが転送される（Ｓ６）。例えば、ソフトウェア処理部１０によりソフトウェア処理を施されたデータが処理された順に次々にデータ記憶部３０へ転送され、データ記憶部３０が備えるＦＩＦＯメモリ３２に次々に記憶される。なお、図２に示す具体例では、ＦＩＦＯメモリ３２がハードウェアインプットキャッシュ３２ｉｎを備えており、ソフトウェア処理部１０から逐次的に転送されるデータがハードウェアインプットキャッシュ３２ｉｎに次々に記憶される。
【００３８】
さらに、データ記憶部３０からハードウェア処理部２０へ逐次的にデータが転送される（Ｓ７）。例えば、データ記憶部３０へ記憶されたデータが記憶された順に次々にハードウェア処理部２０へ転送される。なお、図２に示す具体例では、ＦＩＦＯメモリ３２が備えるハードウェアインプットキャッシュ３２ｉｎからハードウェア処理部２０へ次々にデータが転送される。
【００３９】
Ｓ６とＳ７のステップにおいて、ＦＩＦＯメモリ３２は、ソフトウェア処理部１０から得られるデータをソフトウェア処理された順に次々に記憶し、記憶したデータを記憶した順に次々にハードウェア処理部２０へ出力する。
【００４０】
ＦＩＦＯメモリ３２は、データの読み書きにおいてアドレス情報（記憶番地情報）の設定が不要である。したがって、Ｓ６のステップにおいて、ＦＩＦＯメモリ３２は、データを記憶するためのアドレス情報をソフトウェア処理部１０から受け取らずに、ソフトウェア処理部１０から得られるデータを記憶する。また、Ｓ７のステップにおいて、ＦＩＦＯメモリ３２は、データを読み出すためのアドレス情報をハードウェア処理部２０から受け取らずに、記憶したデータをハードウェア処理部２０へ出力する。これにより、先入れ先出し方式で比較的高速にデータの読み書きが実行される。
【００４１】
ソフトウェア処理後のデータが転送されると、ハードウェア処理部２０は、ソフトウェア処理後のデータに対してハードウェア処理Ｂを実行する（Ｓ８）。例えば、Ｓ２のステップにおいて、ハードウェア処理Ａとして伸張処理が実行されていれば、ハードウェア処理Ｂとして圧縮処理が実行される。もちろん、ハードウェア処理Ｂとして、圧縮処理以外のハードウェア処理が実行されてもよい。
【００４２】
なお、ハードウェア処理部２０は、例えば、ハードウェア処理Ｂを実行する前に既にハードウェア処理Ａの処理が終了していれば、ハードウェア処理Ａの処理回路をハードウェア処理Ｂの処理回路に変更してからハードウェア処理Ｂを実行するようにしてもよい。もちろん、ハードウェア処理部２０がハードウェア処理Ａとハードウェア処理Ｂの２つの処理回路を備え、それら２つの処理回路が選択的に利用されてもよい。
【００４３】
そして、ハードウェア処理部２０からＤＤＲメモリ４０へデータ処理後のデータが転送される（Ｓ９）。例えば、ハードウェア処理部２０によりハードウェア処理Ｂを施されたデータが、ＤＭＡコントローラ４４の制御により、ハードウェア処理部２０からＤＤＲメモリ４０に転送され、ＤＤＲメモリ４０に記憶される。
【００４４】
なお、図１に示す具体例において、ＦＩＦＯメモリ３２は、常にアクティブ（有効）な状態ではなく、例えば、ソフトウェア処理部１０が処理対象のデータを逐次的に出力できないような場合には、非アクティブ（無効）な状態とされてもよい。ＦＩＦＯメモリ３２が有効化されておらず、例えば非アクティブ（無効）の場合には、ソフトウェア処理部１０とハードウェア処理部２０との間で、ＤＤＲメモリ４０を介して、データが遣り取りされてもよい。
【００４５】
図４は、データ処理に要する時間の具体例を示す図である。図４（１）には、図１のデータ処理装置１００が図２，図３のデータ処理を実行した場合のデータ処理時間の具体例が図示されている。図２，図３を利用して説明したデータ処理の具体例では、例えば、ハードウェア処理Ａを施されたデータが処理された順に次々にソフトウェア処理され、さらに、ソフトウェア処理を施されたデータが処理された順に次々にハードウェア処理Ｂを施される。
【００４６】
これに対し、図４（２）には、図４（１）と同じデータに対して同じデータ処理（ハードウェア処理Ａ＋ソフトウェア処理＋ハードウェア処理Ｂ）を実行した場合の比較例が図示されている。図４（２）の比較例では、ハードウェア処理Ａが終了してからソフトウェア処理が実行され、ソフトウェア処理が終了してからハードウェア処理Ｂが実行される。
【００４７】
例えば、図１に示すデータ処理装置１００の具体例からＦＩＦＯメモリ３２を取り除いた構成が比較例であり、その比較例において、ソフトウェア処理部１０とハードウェア処理部２０との間でＤＤＲメモリ４０を介してデータを遣り取りしてデータ処理（ハードウェア処理Ａ＋ソフトウェア処理＋ハードウェア処理Ｂ）を実行する場合に、図４（２）に例示する結果が得られる。
【００４８】
図１に示す具体例のデータ処理装置１００は、ＦＩＦＯメモリ３２を備えており、ソフトウェア処理部１０とハードウェア処理部２０との間において、ＦＩＦＯメモリ３２を介して逐次的にデータを遣り取りしている。これにより、ハードウェア処理Ａとソフトウェア処理とハードウェア処理Ｂを並行的に実行するパイプライン処理が実現される。そのため、図４（１）に示す具体例では、図４（２）に示す比較例に比べて、全データ処理時間（ハードウェア処理Ａ＋ソフトウェア処理＋ハードウェア処理Ｂの合計処理時間）が大幅に短縮される。
【００４９】
ハードウェア処理においては、データ処理を逐次的に実行するパイプライン処理が効率のよいことが知られているが、そのためにはデータ入力も逐次的に行う必要がある。ハードウェア処理部２０に入力するデータはソフトウェア処理部１０での処理が行われていて、ＤＤＲメモリ４０に書き込まれている必要がある。ＤＤＲメモリ４０に書き込まれたデータは、ハードウェア処理部２０によって逐次的にデータを読み出すことができるからである。ＦＩＦＯメモリ３２を介さずにソフトウェア処理部１０とハードウェア処理部２０間でデータを遣り取りする場合、ハードウェア処理部２０がデータを読み出す記憶領域にソフトウェア処理部１０がデータを書き込み終了しているかどうかを監視する機構を設けたり、図４（２）に示すように、ソフトウェア処理を終了した結果が全てＤＤＲメモリ４０に書き込み合わるのを待って、ハードウェア処理部２０が逐次的にデータの読み出しを行うことになる。
【００５０】
なお、図４（１）に示す具体例において、ハードウェア処理Ｂの処理時間は、図４（２）の比較例よりも長くなっている。図４（１）に示す具体例では、ソフトウェア処理を実行しつつ逐次的にハードウェア処理Ｂを実行しているため、ハードウェア処理Ｂの処理時間がソフトウェア処理の影響を受けるためである。但し、図４（１）に示す具体例では、ソフトウェア処理と並行してハードウェア処理Ｂが実行され、ソフトウェア処理の終了後に直ちにハードウェア処理Ｂが終了するため、図４（２）に示す比較例よりも全データ処理時間が大幅に短縮される。
【００５１】
以上、本発明の好適な実施形態を説明したが、上述した実施形態は、あらゆる点で単なる例示にすぎず、本発明の範囲を限定するものではない。本発明は、その本質を逸脱しない範囲で各種の変形形態を包含する。
【符号の説明】
【００５２】
１０  ソフトウェア処理部、２０  ハードウェア処理部、３０  データ記憶部、４０  ＤＤＲメモリ、１００  データ処理装置。
【図１】
2019074896.tif 000003
【図２】
2019074896.tif 000004
【図３】
2019074896.tif 000005
【図４】
2019074896.tif 000006