(57)【特許請求の範囲】
【請求項１】
アプリケーションプログラムを実行するデータ処理装置であって、
論理回路をプログラムにより形成可能なプログラマブルロジックデバイスと、
前記プログラマブルロジックデバイス用の複数のプログラムデータを記憶する記憶手段と、
複数の逐次実行される複数のタスクからなるタスクウィンドウの切替えタイミングを検出する検出手段と、
前記検出手段が前記切替えタイミングを検出したとき、切替え後のタスクウィンドウに含まれるタスクに対応するプログラムデータを、前記記憶手段に記憶された複数のプログラムデータから選択する選択手段と、
前記選択手段が選択したプログラムデータを用いて前記プログラマブルロジックデバイスを更新するよう指示する指示手段と、
前記指示手段による指示を受付け、当該指示に係るプログラムデータを用いて、前記プログラマブルロジックデバイスをプログラムするプログラミング手段と
を備えることを特徴とするデータ処理装置。
【請求項２】
前記データ処理装置は、さらに、
データ退避領域を有する退避記憶手段と、
プログラミング手段によるプログラミングの前に、プログラマブルロジックデバイス内の記憶素子のデータを退避記憶手段に退避させる退避手段と、
プログラミング手段によるプログラミングの後に、当該プログラムデータに関する退避データを退避領域からプログラマブルロジックデバイスに復元する復元手段と
を備えることを特徴とする請求項１記載のデータ処理装置。
【請求項３】
アプリケーションプログラムを実行するデータ処理装置であって、
論理回路をプログラムにより形成可能なプログラマブルロジックデバイスと、
前記プログラマブルロジックデバイス用の複数のプログラムデータを記憶する記憶手段と、
ＣＰＵのタスク切替えタイミングを検出する検出手段と、
前記検出手段が前記切替えタイミングを検出したとき、切替え後に逐次実行される複数のタスクに対応する複数のプログラムデータを選択する選択手段と、
前記選択手段が選択したプログラムデータを用いて前記プログラマブルロジックデバイスを更新するよう指示する指示手段と、
前記指示手段による指示を受付け、当該指示に係るプログラムデータを用いて、前記プログラマブルロジックデバイスをプログラムするプログラミング手段と
を備えることを特徴とするデータ処理装置。
【請求項４】
前記データ処理装置は、さらに、
前記記憶手段に記憶されたプログラムデータの使用状況を示すテーブル手段を備え、
前記選択手段は、前記テーブル手段が示す使用状況に応じて複数のプログラムデータを選択すること
を特徴とする請求項３記載のデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ、デジタルＡＶ機器、デジタル通信装置などを構成するデータ処理装置に関する。
【０００２】
【従来の技術】
近年、パーソナルコンピュータ、デジタルＡＶ機器、デジタル通信装置などのように、静止画、動画、音声などを含むマルチメディアデータを扱う種々のデータ処理装置が増加している。
従来のデータ処理装置ではシステム全体の処理を加速させるため、ＣＰＵで処理していた特定の機能の一部をＡＳＩＣ（Aplication Specific Integrated circuit）などの専用ハードウェアで実行していた。特定の機能というのは、画像処理（グラフィックスデータの描画、動画像のデコード／エンコードなど）や信号処理（モデム機能、通信機能など）であり、大量の演算処理を必要とする。
【０００３】
従来のデータ処理装置がグラフィックス処理を加速する例を用いて説明する。図１２は従来のデータ処理装置のブロック図を示す。同図において、１０１はＣＰＵ、１０２はメモリ、１０３はアクセラレータ、１０４は出力装置、１０５は入力装置である。
メモリ１０２は、ＣＰＵ１０１で実行するアプリケーションを格納している。このアプリケーションは、二次元（以下２Ｄ）あるいは三次元（以下３Ｄ）グラフィックス処理用であるものとする。また、その処理内容は、キーボードやマウスなどの入力装置１０５から入力される情報によって変化するものとする。例えばゲーム機のコントローラ入力によって表示内容が異なるなどの状況があてはまる。処理の結果はコンピュータディスプレイなどの出力装置１０４を通して表示される。
【０００４】
アクセラレータ１０３は、２Ｄあるいは３Ｄグラフィックス処理に特化したパイプラインや並列処理機構あるいはＤＭＡ(Direct Memory Access)機構を備える。
このように構成されたデータ処理装置において、ＣＰＵ１０１は、２Ｄあるいは３Ｄグラフィックス処理の一部をアクセラレータ１０３に任せて処理を加速させる。
【０００５】
一般に、２Ｄあるいは３Ｄグラフィックス処理がバイト単位の処理の繰り返しとメモリ処理で占められ、ＣＰＵ１０１にとってはバイト単位の処理の非効率さとメモリ処理の期間演算不能になることから高速化が難しい。また、ＣＰＵ１０１とアクセラレータ１０３とが同時に処理すれば機能分担によりシステム全体が効率よく機能する。
また、アクセラレータとして特化される機能は、上記の２Ｄあるいは３Ｄグラフィックス処理のほか、ＭＰＥＧデコード・エンコードや、ディジタル信号処理を要する通信機能など種々のものがある。
以上のように従来のデータ処理装置は、専用機能に特化したアクセラレータを備えることにより、特定処理の加速を図っていた。
【０００６】
【発明が解決しようとする課題】
ところで、上記従来技術の構成では、アクセラレータがサポートする特定の処理しか加速されないので、マルチメディアデータ全般に対応して加速することができないという問題があった。
【０００７】
さらに、マルチメディアデータが浸透しつつある今日、マルチメディアデータの種類に応じて画像の圧縮／伸長、音声処理、グラフィックス処理、通信など様々な機能要求が増えてきている。これらの全部を加速するには、各々に別個のアクセラレータが必要になり、機能要求が増えるにつれハードウェア規模およびコストが増えることになる。
【０００８】
本発明は上記問題点に鑑み、あらゆる機能要求に対応しかつ低コスト化を図ったデータ処理装置を提供することを目的とする。
【０００９】
【発明を解決するための手段】
上記課題を解決するため本発明のデータ処理装置は、アプリケーションプログラムを実行するデータ処理装置であって、論理回路をプログラムにより形成可能なプログラマブルロジックデバイスと、プログラマブルロジックデバイス用の複数のプログラムデータを記憶する記憶手段と、プログラムデータを用いてプログラマブルロジックデバイスをプログラムするプログラミング手段と、前記アプリケーションプログラムの実行内容に応じて、プログラマブルロジックデバイスを更新するようプログラミング手段を制御する制御手段とを備えている。
【００１０】
また、前記データ処理装置は、さらにデータ退避領域を有する退避記憶手段と、プログラミング手段によるプログラミングの前に、プログラマブルロジックデバイス内の記憶素子のデータを退避記憶手段に退避させる退避手段と、プログラミング手段によるプログラミングの後に、当該プログラムデータに関する退避データを退避領域からプログラマブルロジックデバイスに復元する復元手段とを備えて構成してもよい。
前記制御手段は、ＣＰＵのタスク切替えタイミングを検出する検出手段と、検出されたとき、切り替え後のタスクに対応するプログラムデータを選択する選択手段と、選択されたプログラムデータによりプログラマブルロジックデバイスを更新するようプログラミング手段に指示する指示手段とを備える構成としてもよい。
【００１１】
【発明の実施の形態】
＜実施の形態１＞
図１は、本発明の第１の実施形態におけるデータ処理装置のハードウェア構成を示すブロック図である。
【００１２】
このデータ処理装置は、ＣＰＵ１、メモリ２、プログラマブルロジックデバイス（以下ＰＬＤと略す）３、出力装置４、入力装置５、変更部６からなり、ＰＬＤ３を動的にプログラミングすることにより、ＰＬＤ３を動的にプログラミングすることにより３Ｄグラフィックス描画やＭＰＥＧデコードなど各種のマルチメディアデータ処理を加速するように構成されている。
ＰＬＤ３は、内部の論理回路を外部から与えられるプログラム情報に従って形成可能なプログラマブルロジックデバイスである。具体的には、ＰＬＤ３は、内部にプログラム情報にしたがって配線可能な極めて多数の論理素子（ゲート）及び記憶素子（フリップフロップ、レジスタ、メモリ）と、与えられたプログラム情報によりそれらを配線するプログラミング回路とを有する。ＰＬＤ３の一例としては、米国アルテラ社のFLEX 10KB ファミリ（ゲート数:10000〜250000）などを用いることができる。これ以外のＰＬＤでも動的にプログラミング可能なデバイスであればよい。
【００１３】
ＣＰＵ１は、メモリ２に記憶されたＯＳ（Operating System）プログラム及びアプリケーションプログラムを実行することに加えて、特定のプログラムを実行することにより、変更部６を通してＰＬＤ３を動的に変更（プログラミング）する。ここで特定のプログラムとは、タスクの切替え動作に合わせて、切替後のタスクの処理内容に応じてＰＬＤ３を変更するためのプログラムである。このプログラムは、タスクの１つとしてもよいが、本実施形態ではＯＳの一部として実行されるものとする。
例えば複数のアプリケーションを実行する場合、ＣＰＵ１は、ＯＳの下でアプリケーションをタスクとして時分割に切り替えて実行する。その際、ＣＰＵ１は、上記特定のプログラムを実行することにより、タスクの切替えに併せてタスク毎に個別の処理を加速させるため、変更部６を通してＰＬＤ３を変更する。これにより、各タスクは、その処理内容に応じてＰＬＤ３により加速されることになる。
【００１４】
メモリ２は、ＯＳプログラム及びアプリケーションプログラムの他に、上記の特定プログラムと、ＰＬＤ３に対する複数のプログラム情報と、プログラム情報テーブルとを記憶する。図２はメモリ２の記憶内容の具体例を示すメモリマップである。
同図に示すようにメモリ２は、ＯＳ領域、タスクＡ領域、タスクＢ領域、プログラム情報領域を有する。
【００１５】
ＯＳ領域は、ＯＳプログラムとタスク管理テーブルとを格納し、さらにＯＳデータエリアとからなる。
タスクＡ領域は、タスクＡ（３Ｄグラフィックス処理用のアプリケーション）用の領域であり、タスクＡ（プログラム本体とワークエリアを含む）を格納する領域２１と、タスクＡに関するＰＬＤ３内部データを退避するためのＰＬＤ退避領域２２と、タスクＡに関するＣＰＵ１内部のデータを退避するためのＣＰＵ退避領域２３とを有する。タスクＢ領域も、タスクＡ領域と同様であるが、ＭＰＥＧデコード処理用のアプリケーションである点が異なる。
【００１６】
プログラム情報領域は、ＰＬＤ３用のプログラム情報Ａ（３Ｄグラフィックス処理用）と、プログラム情報Ｂ（ＭＰＥＧデコード用）と、タスクとプログラム情報との対応関係を示すプログラム情報テーブルとを格納する。
図３は、プログラム情報テーブルの具体例を示す図である。同図に示すように、プログラム情報テーブルは、タスクと、タスクが必要とするプログラム情報の種別とを対応させて記憶している。
【００１７】
図４は、ＣＰＵ１によるＰＬＤ３の変更処理を示すフローチャートである。同図は、ＣＰＵ１が上記の特定プログラムがＯＳの一部として実行される処理を示している。同図では、タスクＡ（３Ｄグラフィックス処理用）とタスクＢ（ＭＰＥＧデコード処理用）との２つのタスクが交互に切り替えられながら処理される場合を示している。
同図のようにＣＰＵ１は、一番最初に又はタスクＢの次に実行されるタスクＡ（３Ｄグラフィックス処理）用の論理回路を形成するようにＰＬＤ３を変更（プログラミング）する（ステップ４１）。その後ＯＳによりタスクＢへのタスク切替えがあれば（ステップ４２：YES）、ＭＰＥＧデコード処理用の論理回路を形成するようにＰＬＤ３を変更（プログラミング）する（ステップ４３）。さらにＯＳにより３Ｄグラフィックスタスクへのタスク切替えがあれば（ステップ４４：YES）、ＭＰＥＧデコード処理用の論理回路を形成するようにＰＬＤ３を変更（プログラミング）する（ステップ４１）。
【００１８】
このようにしてＣＰＵ１は、上記特定プログラムによりタスク切替えに際してＰＬＤ３を動的にプログラムミングする。
図５は、図４のステップ４１に示した３Ｄグラフィックス処理への変更処理をより詳細に示すフローチャートである。
【００１９】
図５において、ＣＰＵ１は、タスクＢ（ＭＰＥＧデコード）からタスクＡ（３Ｄグラフィックス処理）へのタスク切替えの直前に、ＰＬＤ３のＭＰＥＧデコード処理を停止し、ＣＰＵ１内部のレジスタ情報を読み出してメモリ２上のＣＰＵ退避領域２６に退避する（ステップ５１）。さらに、ＰＬＤ３の内部情報（レジスタデータ、メモリデータなど記憶素子の記憶内容）をメモリ２上のＰＬＤ退避領域２５に退避する（ステップ５２）。これにより、停止したＭＰＥＧデコード処理に関するＣＰＵ１のレジスタ情報及びＰＬＤ３の内部情報が、図２に示したタスクＢ領域に格納される。
さらに、ＣＰＵ１は図３に示したプログラム情報テーブルを参照して、３Ｄグラフィックス用のプログラム情報がプログラム情報＃１であることを特定して、そのプログラム情報＃１を読み出して変更部６に供給する。これを受けて変更部６は、タスクＡ（３Ｄグラフィックス）用の論理回路を形成するようＰＬＤ３を変更（プログラミング）する（ステップ５３）。これにより、ＰＬＤ３は新たに３Ｄグラフィックス用の論理回路を形成する。
【００２０】
次いで、ＣＰＵ１は、メモリ２のＣＰＵ退避領域２３から３Ｄグラフィックス処理用に退避されていたレジスタ情報を読み出して、そのレジスタ情報をＣＰＵ１に復帰させ（ステップ５４）、さらに、メモリ２のＰＬＤ退避領域２２から３Ｄグラフィックス処理用に退避されていた内部情報を読み出して、その内部情報をＰＬＤ３に復帰させ（ステップ５５）、ＰＬＤ３の処理を再開（イネーブル）させる。これによりＰＬＤ３は、前回のタスク実行時に退避していた情報を復帰させ、再開することになる。
図６は、図４のステップ４３に示したＭＰＥＧデコード処理への変更処理をより詳細に示すフローチャートである。
【００２１】
図６において、ＣＰＵ１は、タスクＡ（３Ｄグラフィックス処理）からタスクＢ（ＭＰＥＧデコード）へのタスク切替えの直前に、ＰＬＤ３の３Ｄグラフィックス処理を停止し、ＣＰＵ１内部のレジスタ情報を読み出してメモリ２上のＣＰＵ退避領域２３に退避する（ステップ６１）。さらに、ＰＬＤ３の内部情報をメモリ２上のＰＬＤ退避領域２２に退避する（ステップ６２）。これにより、停止した３Ｄグラフィックス処理に関するＣＰＵ１のレジスタ情報及びＰＬＤ３の内部情報が、図２に示したタスクＡ領域に格納される。
さらに、ＣＰＵ１は図３に示したプログラム情報テーブルを参照して、ＭＰＥＧ用のプログラム情報がプログラム情報＃２であることを特定して、そのプログラム情報＃２を読み出して変更部６に供給する。これを受けて変更部６は、タスクＢ（ＭＰＥＧデコード）用の論理回路を形成するようＰＬＤ３を変更（プログラミング）する（ステップ６３）。これにより、ＰＬＤ３はＭＰＥＧデコード用の論理回路を形成する。
【００２２】
次いで、ＣＰＵ１は、メモリ２のＣＰＵ退避領域２６からＭＰＥＧデコードに退避されていたレジスタ情報を読み出して、そのレジスタ情報をＣＰＵ１に復帰させ（ステップ６４）、さらに、メモリ２のＰＬＤ退避領域２５からＭＰＥＧデコード処理用に退避されていた内部情報を読み出して、その内部情報をＰＬＤ３に復帰させ（ステップ６５）、ＰＬＤ３の処理を再開する。これによりＰＬＤ３は、前回のタスク実行時に退避していた情報が復帰され、ＭＰＥＧデコード処理を再開することになる。
以上のように構成された本発明の第１実施形態におけるデータ処理装置について、その動作を説明する。
【００２３】
まず、本データ処理装置においてタスクＢ（ＭＰＥＧデコード処理）からタスクＢ（３Ｄグラフィックス処理）にタスク切替えが生じた場合の動作を説明する。図７（ａ）は、図５に示したＭＰＥＧデコード処理から３Ｄグラフィックス処理への変更動作を説明する図である。
同図（ａ）中の破線ａ１、ａ２に示すように、ＣＰＵ１は、タスクＢからタスクＡへのタスク切替えの直前に、ＰＬＤ３のＭＰＥＧデコード処理を停止し、ＣＰＵ１内部のレジスタ情報、ＰＬＤ３の内部情報をそれぞれＣＰＵ退避領域２６、ＰＬＤ退避領域２５に退避する。
【００２４】
次に、ＣＰＵ１は、３Ｄグラフィックス用のプログラム情報＃１を読み出して変更部６を通して、タスクＡ（３Ｄグラフィックス）用の論理回路を形成するようＰＬＤ３を変更（プログラミング）する。
らに、同図（ａ）中の破線ａ３、ａ４に示すように、ＣＰＵ１は、メモリ２のＣＰＵ退避領域２３のレジスタ情報、ＰＬＤ退避領域２２の内部情報を、それぞれＣＰＵ１、ＰＬＤ３に復帰させる。ＰＬＤ３の処理を再開（イネーブル）させる。これによりＰＬＤ３は、前回のタスク実行時に退避していた情報を復帰させ、再開することになる。
【００２５】
ＣＰＵ１自身のタスクＢへの切替え後は、同図（ｂ）に示すように、ＰＬＤ３は３Ｄグラフィックス処理用の論理回路を形成するので、ＣＰＵ１によるタスクＡの処理と協動して３Ｄグラフィックス処理を行う。
図８は、ＰＬＤ３がＣＰＵ１と協動して３Ｄグラフィックス処理を行う具体例を示す説明図である。
【００２６】
同図において、３１はビデオＲＡＭ（フレームメモリ）に格納された３Ｄグラフィックスの描画画像を示す。３２はメモリ２のタスクＡのワークメモリに作成される３Ｄグラフィックス画像の頂点の座標テーブルを示す。３３は、外部（例えば図外の磁気ディスク装置）から与えられる３Ｄグラフィックス画像のデータベースを示す。
この場合ＣＰＵ１とＰＬＤ３は、次のように機能分担する。すなわちＣＰＵ１は、外部からの描画すべき３Ｄグラフィックスデータを決定し、それを外部装置からタスクＡのワークメモリ（３Ｄグラフィックス画像のデータベース３３）に読みだし、さらに、３Ｄグラフィックスデータベースから３Ｄグラフィックス画像の各頂点の座標を算出して座標テーブルを作成し、各頂点で定まる多角形の塗り潰しをＰＬＤ３に指示する。
【００２７】
ＰＬＤ３は、ＣＰＵ１から塗り潰し指示を受けて座標テーブルを参照して、個々の多角形を塗り潰す描画処理を行う。この描画処理は、いわゆるラスター変換やスキャンコンバージョン（座標データから表示データへ変換）、テクスチャー処理、ポリゴンの描画処理などである。描画処理では、大量の繰り返し演算を必要とするため、ＰＬＤ３に形成された論理回路による加速の効果が大きい。
さらに、図７（ｂ）は、図６に示したＭＰＥＧデコード処理から３Ｄグラフィックス処理への変更動作を示す説明図である。同図（ａ）と同様に、ＣＰＵ１は、タスク切替えに際して、破線ｃ１、ｃ２に示すように３Ｄグラフィックス処理用のレジスタ情報、内部情報の退避を行った後、ＭＰＥＧデコード処理用のプログラム情報＃２を用いて変更部６を通してＰＬＤ３をプログラミングし、破線ｃ３、ｃ４に示すようにＭＰＥＧデコード処理用のレジスタ情報、内部情報を復帰させる。
【００２８】
その後タスクＢに切り替えられた後、ＣＰＵ１とＰＬＤ３は協動してＭＰＥＧデコード処理を実行する。この場合の機能分担については、ＭＰＥＧデコード処理に含まれる可変長符号の復号処理、逆離散余弦変換、逆量子化、動き補償処理のうち、定型的反復的な演算を要する逆離散余弦変換、逆量子化、動き補償処理又はその一部をＰＬＤ３が分担することが望ましい。これらの機能分担は、ＰＬＤ３のゲート数及び処理能力と、ＣＰＵ１の処理能力に応じて決定される。
以下ＭＥＰＧデコードが実行され、タスク切替えにより上記タスクＡ、Ｂが交互に繰り返される。タスクのバランスはアプリケーションに重みを指定してやることで、任意の比率のタスク切り替えが可能である。これはＯＳのタスク管理能力に依存する。
【００２９】
以上のようにＰＬＤ３はタイムシェアリングを行いながら汎用のアクセラレータとして使用されるため、プログラマブルでかつ高速かつ効率的なデータ処理が可能となる。
なお、上記実施形態において、特定プログラムによるＯＳの一部の機能としてＣＰＵ１が、タスク切替えに際してＰＬＤ３の動作を停止し、プログラミング後に再開させていたが、アプリケーション（タスクＡ、Ｂ）が停止と再開をさせるようにしてもよい。これは、ＣＰＵ１（タスク）とＰＬＤ３とはマスターとスレーブという協動関係にあるので、タスクによりＰＬＤ３の動作を停止／再開させることは容易に実現可能である。
【００３０】
＜実施の形態２＞
本実施形態におけるデータ処理装置のハードウェア構成は、第１実施形態の図１と同じであるので説明を省略する。以下、ＣＰＵ１が特定のプログラムを実行することにより実現されるＰＬＤ３の動的な変更処理について、第１実施形態と同じ点は説明を省略し、異なる点を中心に説明する。
異なる点は、第１実施形態におけるデータ処理装置がタスクを切替える毎にＰＬＤ３を変更していたことに対して、本実施形態のデータ転送装置は、逐次実行される複数のタスクをタスクウィンドウとして扱い、タスクウィンドウの切替える毎に、当該複数のタスクに対応するプログラム情報を用いてＰＬＤ３を変更するように構成している点である。さらに、本実施例では、ＣＰＵ１は、ＰＬＤ３をプログラムする際に、複数の別個のプログラム情報により形成される論理回路を併存させるように変更部６を通してプログラミングする点が異なっている。そのため、メモリ２に記憶されている上記特定プログラムの内容及びプログラム情報テーブルが異なっている。
【００３１】
以下、タスクウィンドウの具体例を用いて、本実施形態の特定プログラムにより実現されるＣＰＵ１の機能について説明する。
メモリ２は、ＯＳプログラム及びアプリケーションプログラムの他に、上記の特定プログラムと、ＰＬＤ３に対する複数のプログラム情報と、タスクウィンドウとプログラム情報の対応関係を示したプログラム情報テーブルとを記憶する。
図９はメモリ２の記憶内容の具体例を示すメモリマップである。
【００３２】
同図に示すようにメモリ２は、ＯＳ領域、タスクウィンドウ＃１〜＃３、プログラム情報領域を有する。タスクウィンドウは、ＰＬＤ３の変更なしで実行可能なタスクをグループ化したものである。
同図において、タスクＡ、Ｄ、Ｇ、Ｈは、それぞれ３Ｄグラフィックス処理の一部を分担して実行する。これに伴い各タスクに対応するプログラム情報ａ〜ｄが設けられている。以下、分担する各処理を３Ｄ＃１〜＃４と呼ぶ。
【００３３】
また、タスクＢ、Ｃ、Ｅ、Ｆは、ＭＰＥＧデコード処理の一部を分担して実行する。これに伴い各タスクに対応するプログラム情報ｅ〜ｈが設けられている。以下、分担する各処理をＭＰＥＧ＃１〜＃４と呼ぶ。
タスクウィンドウ＃１は、タスクＡ、Ｂ、Ｃの各領域からなる。各タスク領域は、タスクのプログラム本体（ワークエリアを含む）と、退避領域とからなる。退避領域は、第１実施形態のＰＬＤ退避領域とＣＰＵ退避領域とからなり、本実施例ではそれらの総称としている。タスクウィンドウ＃１におけるタスクＡ、Ｂ、Ｃは、それぞれ３Ｄ＃１、ＭＰＥＧ＃２、ＭＰＥＧ＃３を実行する。
【００３４】
同様にタスクウィンドウ＃２は、タスクＤ、Ｅ、Ｆの各領域からなる。タスクＤ、Ｅ、Ｆは、それぞれ３Ｄ＃２、ＭＰＥＧ＃１、ＭＰＥＧ＃４を実行する。
タスクウィンドウ＃３は、タスクＧ、Ｈの各領域からなる。タスクＧ、Ｈは、それぞれ３Ｄ＃３、３Ｄ＃４を実行する。
【００３５】
プログラム情報領域は、ＰＬＤ３がタスクＡ〜Ｈと協動して動作するためのプログラム情報ａ〜ｈを記憶している。
図１０は、本実施例におけるプログラム情報テーブルの具体例を示す図である。同図に示すように、プログラム情報テーブルは、タスクウィンドウと、タスクウィンドウ内のタスクが必要とするプログラム情報の種別とを対応させて記憶している。
【００３６】
ＣＰＵ１は、第１実施形態においてタスクの切替える毎にＰＬＤ３を変更していたことに対して、本実施形態では、タスクウィンドウの切替え毎にＰＬＤ３を変更するとして扱い、タスクウィンドウの切替える毎にＰＬＤ３を変更する点が異なっている。この動作は、図４に示したフローチャートにおいてステップ４２の代わりに、タスクウィンドウの切替えを判断するステップを設けた構成となる点が異なる。ステップ４４についても同様である。
さらに、図５、６に示したタスク及びＰＬＤ３のプログラミングについては、ＣＰＵ１は、ＣＰＵ１のレジスタ情報及びＰＬＤ３の内部情報の退避と復帰（ステップ５１、５２、５４、５５、６１、６２、６４、６５）を、タスクウィンドウ内の複数のタスクについて行う点が異なる。さらにＣＰＵ１は、ステップ５３、６３において、プログラム情報テーブルに指定されている個々のプログラム情報の全てをＰＬＤ３にプログラムする必要があるので、ＣＰＵ１は、当該個々のプログラム情報を編集して新たな１つのプログラム情報にしてから変更部６を通して変更する。
【００３７】
例えば、図１０によればタスクウィンドウ＃１に対応するのは、プログラム情報ａ、ｆ、ｇの３つであり、他のタスクウィンドウからタスクウィンドウ＃１への切替えに際してプログラム情報ａ、ｆ、ｇを編集して新たなプログラム情報にする。具体的には、ＣＰＵ１は、定められた記述言語により論理記述されている個々のプログラム情報をサブモジュールとして、サブモジュール全部を論理合成することにより新たなメインモジュールを作成する。この後、ＣＰＵ１は作成されたメインモジュールを１つのプログラム情報として変更部６を通してＰＬＤ３をプログラミングする。
上記の構成により、本実施形態のデータ処理装置は、タスクウィンドウ単位でＰＬＤ３が変更されることになる。その結果、タスク単位でＰＬＤ３が変更されるよりも、その変更時間を短縮することができる。
【００３８】
＜第３実施形態＞
本実施形態におけるデータ処理装置のハードウェア構成は、第１、第２実施形態の図１と同じであるので説明を省略する。以下、ＣＰＵ１が特定のプログラムを実行することにより実現されるＰＬＤ３の動的な変更処理について、第２実施形態と同じ点は説明を省略し、異なる点を中心に説明する。図９に示したメモリマップは、本実施例においても同じであるものとする。
【００３９】
異なる点は、本実施形態におけるデータ処理装置は、第２実施形態においてＰＬＤ３がタスクウィンドウの切替え毎に変更されていたのに対して、タスクの切替え毎に今後実行される複数のタスクに必要とされる複数のプログラム情報を用いて変更するように構成されている。そのため、メモリ２は、プログラム情報テーブルの代わりに、プログラム情報の使用状況を表すキャッシュテーブルが作成される。
より詳しくいうと、ＣＰＵ１は、タスク切替えに際して、後に実行すべき複数のタスクを判定し、キャッシュテーブルを参照してそれらのタスクに必要なプログラム情報を選択し、それらのプログラム情報を上述したように論理合成して１つのプログラム情報を作成し、変更部６を通してＰＬＤ３をプログラミングする。
【００４０】
図１１にキャッシュテーブルの一例を示す。同図において、「プログラム情報種別」の欄は、図９に示したプログラム情報ａ〜ｈの種別を表す。「時刻」欄は、最後にＣＰＵ１により選択された時刻（従って最後にプログラミングされたときに選択された時刻）を表す。「サイズ」欄は、プログラム情報によりプログラムされたＰＬＤ３が占有されるサイズ（回路規模）を示す。サイズは、ゲート数や回路規模の割合でもよい。本実施例では説明の便宜上各プログラム情報がＰＬＤ３の３０％を占有するものとする。「状態」欄は、現在ＰＬＤ３に論理回路が形成されている（ｏｎ）か否か（ｏｆｆ）を表す。
ＣＰＵ１は、例えばこれから実行されるタスクを順に判定し、それらに対応するプログラム情報のサイズの合計が１００％（あるいは所定のしきい値）を越えない範囲内で、選択候補とする。その際、ＣＰＵ１は、状態がｏｎ（現在ＰＬＤ３に論理回路が形成されている）のプログラム情報については、ＬＲＵ（Least Recently Used）方式を用いて選択候補を決める。こうして選択候補となったプログラム情報を最終的に選択する。
【００４１】
選択されたプログラム情報は、タスク切替えに際してＰＬＤ３にプログラミングされる。タスクの変更及びプログラミングの動作については、第２実施例と同様である。このとき、ＣＰＵ１は、上記キャッシュテーブルを更新する。
以上のように本実施形態によれば、タスク切替毎に、複数のプログラム情報を選択してＰＬＤ３を変更するので、タスクの生成、消滅が頻繁に生じる場合であっても、また、タスクスケジューリング（実行順序）が動的に変化する場合であっても、それぞれのタスク切替えに追従して適切なプログラム情報をＰＬＤ３にプログラムすることができる。
【００４２】
その結果、ＣＰＵのキャッシュ動作と同じようにＰＬＤ３の加速機能の使用効率が高くなり、プログラマブルでかつ高速かつ効率的なデータ処理が可能となる。
なお、上記実施形態では、タスクの変化に応じてＰＬＤ３の論理回路が動的に変更されるが、タスクの中すなわちアプリケーションからＰＬＤ３のプログラムを変更するようにしてもよい。この場合、タスクの切り替えタイミングに関係なくアプリケーションから任意のタイミングでＰＬＤ３をプログラムすることになる。この結果、ＰＬＤ３へのプログラムは静的なスケジューリングで実施される。従って、アプリケーションの処理の進行に従って、処理も加速されるので効率的である。また複数のアプリケーションが混在する場合、実施の形態３と４の動的スケジューリングと組み合わせれば効果を増す。
【００４３】
また、上記各実施形態において、ＣＰＵ１と変更部６とは、ＰＬＤ３に組み込むようにしてもよい。この場合、図１からＣＰＵ１と変更部６を削った構成となる。この場合、ＰＬＤ３は初期化時において、ＣＰＵ１と同等の論理回路を形成するためのプログラム情報と、変更部６と同等の論理回路を形成するためのプログラム情報とを取り込んでプログラミングする初期化部を備えるように構成すればよい。この結果、簡単な構成で上記実施形態と同様に本発明をじっしすることができる。また、ＣＰＵ１と変更部６の機能もプログラム情報が進化する度に機能向上する。
さらに、上記第２、第３実施形態では、ＣＰＵ１が複数の個別プログラム情報を論理合成して新たな１つのプログラム情報を作成する例を示したが、ＰＬＤ３自身が部分的にプログラム可能な構成であれば、論理合成しなくても個別プログラム情報を用いてプログラミングするようにしてもよい。
【００４４】
また、上記各実施形態では、1個のＰＬＤを用いる例を示したが、複数のＰＬＤを用いる構成としてもよい。
【発明の効果】
【００４５】
本発明のデータ処理装置は、アプリケーションプログラムを実行するデータ処理装置であって、論理回路をプログラムにより形成可能なプログラマブルロジックデバイスと、プログラマブルロジックデバイス用の複数のプログラムデータを記憶する記憶手段と、プログラムデータを用いてプログラマブルロジックデバイスをプログラムするプログラミング手段と、前記アプリケーションプログラムの実行内容に応じて、プログラマブルロジックデバイスを更新するようプログラミング手段を制御する制御手段とを備えている。
この構成によれば、汎用でかつ柔軟にデジタル処理全般に対応することができ、その結果、高速化と低コスト化を図ることができる。またプログラマブルロジックデバイスを用いているので、その交換で性能の向上が可能となるという有利な効果が得られる。
【００４６】
また、前記データ処理装置は、さらにデータ退避領域を有する退避記憶手段と、プログラミング手段によるプログラミングの前に、プログラマブルロジックデバイス内の記憶素子のデータを退避記憶手段に退避させる退避手段と、プログラミング手段によるプログラミングの後に、当該プログラムデータに関する退避データを退避領域からプログラマブルロジックデバイスに復元する復元手段とを備えている。
この構成によれば、上記効果に加えて、処理の途中であっても、他のプログラムデータを用いて論理回路変更することができる。
【００４７】
さらに前記制御手段は、ＣＰＵのタスク切替えタイミングを検出する検出手段と、検出されたとき、切り替え後のタスクに対応するプログラムデータを選択する選択手段と、選択されたプログラムデータによりプログラマブルロジックデバイスを更新するようプログラミング手段に指示する指示手段と備えている。
この構成によれば、上記効果に加えて、タスクという単位毎に、タスクと協動して実行するようプログラマブルロジックデバイスの論理回路を動的に変更することができる。
【００４８】
また、前記制御手段は、複数の逐次実行される複数のタスクからなるタスクウィンドウの切替えタイミングを検出する検出手段と、検出されたとき、切り替え後のタスクウィンドウに含まれるタスクに対応するプログラムデータを選択する選択手段と、選択されたプログラムデータによりプログラマブルロジックデバイスを更新するようプログラミング手段に指示する指示手段とを備えている。
この構成によれば、タスクウィンドウの切替え毎に、プログラマブルロジックデバイスを更新するので、更新のために発生する時間を少なくすることができる。また、前記制御手段は、ＣＰＵのタスク切替えタイミングを検出する検出手段と、検出されたとき、切り替え後に逐次実行される複数のタスクに対応する複数のプログラムデータを選択する選択手段と、選択された複数のプログラムデータによりプログラマブルロジックデバイスを更新するようプログラミング手段に指示する指示手段とを備えている。
【００４９】
この構成によれば、タスク切替毎に、複数のプログラムデータが選択されてプログラマブルロジックデバイスが変更されるので、タスクの生成、消滅が頻繁に生じる場合であっても、また、タスクスケジューリング（実行順序）が動的に変化する場合であっても、それぞれのタスク切替えに際して適切なプログラム情報をＰＬＤ３にプログラムすることができる。
前記制御手段は、さらに、記憶手段に記憶されたプログラムデータの使用状況を示すテーブル手段を備え、前記選択手段は、テーブル手段が示す使用状況に応じて複数のプログラムデータを選択するよう構成される。
【００５０】
この構成によれば、タスク切替えに際して今後使用されるプログラム情報を効率良くＰＬＤ３にプログラムすることができる。
また、前記記憶手段は、プログラマブルロジックデバイスにプロセッサとしても論理回路を形成するための特定のプログラムデータを記憶し、前記プログラム手段は、さらに、前記特定のプログラムデータを用いてプログラマブルロジックデバイスをプログラムするよう構成されている。
【００５１】
この構成によれば、ハードウェア構成を簡単にすることができる。
【図面の簡単な説明】
【図１】本発明の実施例におけるデータ処理装置の構成を示すブロック図である。
【図２】メモリ２の記憶内容の具体例を示すメモリマップである。
【図３】プログラム情報テーブルの具体例を示す図である。
【図４】ＣＰＵ１によるＰＬＤ３の変更処理を示すフローチャートである。
【図５】３Ｄグラフィックス処理への変更処理をより詳細に示すフローチャートである。
【図６】ＭＰＥＧデコード処理への変更処理をより詳細に示すフローチャートである。
【図７】ＭＰＥＧデコード処理と３Ｄグラフィックス処理との変更動作を説明図である。
【図８】ＰＬＤ３がＣＰＵ１と協動して３Ｄグラフィックス処理を行う具体例を示す説明図である。
【図９】メモリ２の記憶内容の具体例を示すメモリマップである。
【図１０】プログラム情報テーブルの具体例を示す図である。
【図１１】キャッシュテーブルの一例を示す。
【図１２】従来のデータ処理装置のブロック図を示す。
【符号の説明】
１    ＣＰＵ
２    メモリ
３    ＰＬＤ
４    出力装置
５    入力装置
６    変更部
【図１】
0003878307.tif 000002
【図２】
0003878307.tif 000003
【図３】
0003878307.tif 000004
【図４】
0003878307.tif 000005
【図５】
0003878307.tif 000006
【図６】
0003878307.tif 000007
【図７】
0003878307.tif 000008
【図８】
0003878307.tif 000009
【図９】
0003878307.tif 000010
【図１０】
0003878307.tif 000011
【図１１】
0003878307.tif 000012
【図１２】
0003878307.tif 000013