(57)【要約】【課題】  並列度が低いＶＬＩＷ型ＤＳＰのために開発されたプログラムを並列度が高いＶＬＩＷ型ＤＳＰの上で実行する場合に，並列度が高いＶＬＩＷ型ＤＳＰの性能を有効に生かして，該プログラムを高速に実行するための技術を提供する。【解決手段】本発明によるＶＬＩＷ型ＤＳＰは，第１〜第ｎプログラムをそれぞれに記憶する第１〜第ｎバンク（２）を備えたプログラムメモリ（１）と，前記第１〜第ｎプログラムに含まれるコードのうち，実行されるべき実行コードが保存されているアドレスをそれぞれに指定する第１〜第ｎアドレスカウンタ（４）と，第１〜第ｎアドレスカウンタ（４）によってそれぞれに指定された前記アドレスに保存されている前記実行コードを，それぞれ第１〜第ｎバンク（２）から受け取り，受け取った前記実行コードを結合して一の再配置化コードを生成するフェッチブロック（５）と，フェッチブロック（５）から前記再配置化コードを受け取り，前記再配置化コードを，一の命令実行サイクルで実行するコード実行回路（６〜１０）とを含む。【選択図】  図１
2005182659.tif 000002
【特許請求の範囲】
【請求項１】
第１〜第ｎプログラムをそれぞれに記憶する第１〜第ｎバンクを備えたプログラムメモリと，
前記第１〜第ｎプログラムに含まれるコードのうち，実行されるべき実行コードが保存されているアドレスをそれぞれに指定する第１〜第ｎアドレスカウンタと，
前記第１〜第ｎアドレスカウンタによってそれぞれに指定された前記アドレスに保存されている前記実行コードを，それぞれ前記第１〜第ｎバンクから受け取り，受け取った前記実行コードを結合して一の再配置化コードを生成するフェッチブロックと，
前記フェッチブロックから前記再配置化コードを受け取り，前記再配置化コードを，一の命令実行サイクルで実行するコード実行回路
とを含む
ＶＬＩＷ型ＤＳＰ。
【請求項２】
請求項１に記載のＶＬＩＷ型ＤＳＰにおいて，
更に，
第１〜第ｎレジスタファイルを備え，
前記フェッチブロックは，前記第１〜第ｎプログラムの前記実行コードに記述されているレジスタが，それぞれ，前記第１〜第ｎレジスタファイルのレジスタに割り当てられるように前記実行コードを書き換え，書き換えられた前記実行コードを結合して前記再配置化コードを生成する
ＶＬＩＷ型ＤＳＰ。
【請求項３】
請求項１又は請求項２に記載のＶＬＩＷ型ＤＳＰにおいて，
更に，
前記第１〜第ｎプログラムのプログラム開始アドレスを格納する第１〜第ｎプログラムカウンタレジスタを備え，
前記第１〜第ｎプログラムカウンタレジスタに記憶されている前記プログラム開始アドレスは，それぞれ，前記第１〜第ｎアドレスカウンタに転送される
ＶＬＩＷ型ＤＳＰ。
【請求項４】
請求項１又は請求項２に記載のＶＬＩＷ型ＤＳＰにおいて，
前記コード実行回路は，
前記フェッチブロックから前記再配置化コードを受け取り，前記再配置化コードから実行要素命令を生成するデコードブロックと，
ディスパッチブロックと，
複数の実行ユニット
とを備え，
前記ディスパッチブロックは，前記実行要素命令に基づいて，複数の実行ユニットのそれぞれに供給される実行制御信号を生成し，
前記複数の実行ユニットは，前記実行制御信号に応答して，前記実行要素命令に対応する動作を行う
ＶＬＩＷ型ＤＳＰ。
【請求項５】
請求項４に記載のＶＬＩＷ型ＤＳＰにおいて，
前記複数の実行ユニットは，
複数の積和演算ユニットと，
複数の算術論理演算ユニット
とを含む
ＶＬＩＷ型ＤＳＰ。
【請求項６】
第１〜第ｎバンクに，第１〜第ｎプログラムをそれぞれに記憶するステップと，
前記第１〜第ｎプログラムに含まれるコードのうち，実行されるべき実行コードが保存されているアドレスをそれぞれに指定するステップと，
指定された前記アドレスに保存されている前記実行コードを，それぞれ前記第１〜第ｎバンクから受け取るステップと，
受け取られた前記実行コードを結合して一の再配置化コードを生成するステップと，
前記再配置化コードを，一の命令実行サイクルで実行するステップ
とを含む
ＶＬＩＷ型ＤＳＰの動作方法。
【請求項７】
前記再配置化コードを生成するステップは，
前記第１〜第ｎプログラムの前記実行コードに記述されているレジスタが，それぞれ，第１〜第ｎレジスタファイルのレジスタに割り当てられるように前記実行コードを書き換えるステップと，
書き換えられた前記実行コードを結合して前記再配置化コードを生成するステップ
とを備えた
ＶＬＩＷ型ＤＳＰの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，ＶＬＩＷ型ＤＳＰ（very long instruction word digital signal processor），及びその動作方法に関し，特に，ＶＬＩＷ型ＤＳＰにおいてバイナリトランスレーションを好適に実現するための技術に関する。
【背景技術】
【０００２】
ＶＬＩＷ型ＤＳＰとは，一のコード（命令語）あたり，複数の要素命令（ロード、ストア、演算、分岐命令など）を含むコードで記述されているプログラムを実行可能なＤＳＰである。ＶＬＳＩ型ＤＳＰは，複数の要素命令を一の命令実行サイクルで実行可能であり，データを高速に処理することができる。ＶＬＩＷ型ＤＳＰの並列度，即ち，一の命令実行サイクルで実行可能な複数の要素命令の数は，増加する傾向にある。
【０００３】
ＶＬＩＷ型ＤＳＰの開発においては，ある特定のＤＳＰ向けに作成されたソフトウェアを，他のＤＳＰの上で実行可能にするバイナリトランスレーションが重要である。あるＤＳＰの次世代のＤＳＰを開発した場合に，開発された次世代のＤＳＰのために新たなソフトウェアを開発することは，コストやＴＡＴ（turn around time）の面から好適でない。次世代のＤＳＰは，古い世代のＤＳＰのソフトウェアを実行可能に構成されていることが好適である。
【０００４】
かかるバイナリトランスレーションは，とりわけ，リアルタイムでマルチタスク的な信号処理を行うことが要求されるデジタルシグナルプロセッサ（ＤＳＰ），例えば，音声データと映像データのデータ処理を同時に行うＤＳＰにおいて重要である。このようなＤＳＰは，実行効率を高めるために，それに用いられるソフトウェアの開発には，高度なプログラミングが要求される。このために，Ｃ言語などの高級言語を用いたプログラミングではなく，ハンドアセンブル（即ち，人手によるアセンブラ言語，又は機械語でのソフトウェア作成）が行われる。しかし，ハンドアセンブルによるソフトウェアの構築は，多くの工数が必要とされるため，ＤＳＰの開発ごとに行われることは好適でない。ハンドアセンブルによってソフトウェアを開発する必要があるＤＳＰは，バイナリトランスレーションに対応していることが特に好適である。
【０００５】
バイナリトランスレーションには，静的バイナリトランスレーション（static dynamic binary translation）と，動的バイナリトランスレーション（dynamic binary translation）とがある。静的バイナリトランスレーションとは，プログラムの実行前に，該プログラムのコードを，該プログラムを実行するＤＳＰに対応したコードに書き換える手法である。一方，動的バイナリトランスレーションとは，プログラムの実行中に，該プログラムに含まれるコードを，該プログラムを実行するＤＳＰに対応したコードに書き換える，即ち，コードの最適化を行う手法である。
【０００６】
特許文献１は，動的バイナリトランスレーション方法を開示している。公知のそのバイナリトランスレーション方法は，複数の命令で資源を共有し，且つ，実行時に資源が競合した際にパイプラインのストール及び競合を回避するための機能を持たないプロセッサに，資源の競合を回避するような動作を行わせるためのバイナリトランスレーション方法である。公知のそのバイナリトランスレーション方法では，動的バイナリトランスレーションを行うプロセッサに，資源の競合が発生したか否かをだけを検出する機能と，資源が発生したことを表す資源競合チェックレジスタとが設けられる。バイナリトランスレーションが行われるときに，ハードウェアの資源の競合の有無のチェックが，実際にコードを実行することによって行われ，これにより，コードの最適化に必要な処理時間が抑制されている。
【特許文献１】特開２００３−１４０９１０号公報
【０００７】
ＤＳＰのバイナリトランスレーションにおける一つの課題は，並列度が低いＶＬＩＷ型ＤＳＰのために開発されたプログラムを並列度が高いＶＬＩＷ型ＤＳＰの上で実行する場合に，並列度が高いＶＬＩＷ型ＤＳＰの性能が充分に発揮できないことである。並列度が低いＶＬＩＷ型ＤＳＰ用に開発されたプログラムは，一のコードに含まれる要素命令の数が少ないため，該プログラムをそのまま並列度が高いＶＬＩＷ型ＤＳＰで実行しても，並列度の向上による処理速度の向上は期待できない。例えば，並列度が低いＶＬＩＷ型ＤＳＰのために開発された２つのプログラムＡ，プログラムＢを，並列度が高いＶＬＩＷ型ＤＳＰで実行する場合を考える。並列度が高い（即ち，一のサイクルで実行可能な複数の要素命令の数が多い）ＶＬＩＷ型ＤＳＰでプログラムＡ及びプログラムＢを実行しても，その実行速度は，プログラムＡ及びプログラムＢの一のコードに含まれる要素命令の数によって制限され，並列度の向上による実行速度の向上は達成されない。
【０００８】
並列度が低いＶＬＩＷ型ＤＳＰのために開発されたプログラムを並列度が高いＶＬＩＷ型ＤＳＰの上で実行する場合に，並列度が高いＶＬＩＷ型ＤＳＰの性能を有効に生かして，該プログラムを高速に実行するためのバイナリトランスレーション技術の提供が望まれる。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の目的は，並列度が低いＶＬＩＷ型ＤＳＰのために開発されたプログラムを並列度が高いＶＬＩＷ型ＤＳＰの上で実行する場合に，並列度が高いＶＬＩＷ型ＤＳＰの性能を有効に生かして，該プログラムを高速に実行するための技術を提供することにある。
【課題を解決するための手段】
【００１０】
以下に、上記の目的を達成するための手段を説明する。その手段に含まれる技術的事項には、［特許請求の範囲］の記載と［発明を実施するための最良の形態］の記載との対応関係を明らかにするために、［発明を実施するための最良の形態］で使用される番号・符号が付加されている。但し、付加された番号・符号は、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１１】
本発明によるＶＬＩＷ型ＤＳＰは，第１〜第ｎプログラムをそれぞれに記憶する第１〜第ｎバンク（２）を備えたプログラムメモリ（１）と，前記第１〜第ｎプログラムに含まれるコードのうち，実行されるべき実行コードが保存されているアドレスをそれぞれに指定する第１〜第ｎアドレスカウンタ（４）と，第１〜第ｎアドレスカウンタ（４）によってそれぞれに指定された前記アドレスに保存されている前記実行コードを，それぞれ第１〜第ｎバンク（２）から受け取り，受け取った前記実行コードを結合して一の再配置化コードを生成するフェッチブロック（５）と，フェッチブロック（５）から前記再配置化コードを受け取り，前記再配置化コードを，一の命令実行サイクルで実行するコード実行回路（６〜１０）とを含む。本発明によるＶＬＩＷ型ＤＳＰは，第１〜第ｎプログラムの前記実行コードを結合して一の再配置化コードを生成し，その再配置化コードを一の命令実行サイクルで実行する。これにより，本発明によるＶＬＩＷ型ＤＳＰは，第１〜第ｎプログラムの並列度が低くとも，それらを並列して実行することができる。かかる構成は，当該ＶＬＩＷ型ＤＳＰが並列度が高いプログラムに対応するように構成されている場合，例えば，デュアルＭＡＣ／ＡＬＵアーキテクチャに従って構成されている場合に，特に有用である。
【００１２】
好適には，当該ＶＬＩＷ型ＤＳＰは，第１〜第ｎレジスタファイル（１１）を備え，且つ，フェッチブロック（５）は，前記第１〜第ｎプログラムの前記実行コードに記述されているレジスタが，それぞれ，前記第１〜第ｎレジスタファイル（１１）のレジスタに割り当てられるように前記実行コードを書き換え，書き換えられた前記実行コードを結合して前記再配置化コードを生成する。これにより，前記第１〜第ｎプログラムのオリジナルの前記実行コードに同一のレジスタ名が含まれていても，それらの実行コードを同時に実行することができる。
【００１３】
当該ＶＬＩＷ型ＤＳＰは，更に，前記第１〜第ｎプログラムのプログラム開始アドレスを格納する第１〜第ｎプログラムカウンタレジスタ（３）を備えることが好適である。この場合，前記第１〜第ｎプログラムカウンタレジスタ（３）に記憶されている前記プログラム開始アドレスは，それぞれ，前記第１〜第ｎアドレスカウンタ（４）に転送される。
【００１４】
当該ＶＬＩＷ型ＤＳＰにおいて，前記コード実行回路（６〜１０）は，デコードブロック（６）と，ディスパッチブロック（７）と，複数の実行ユニット（８，９，１０）とを備えていることがある。この場合，デコードブロック（６）は，前記フェッチブロック（５）から前記再配置化コードを受け取り，前記再配置化コードから実行要素命令を生成する。ディスパッチブロック（７）は，前記実行要素命令に基づいて，複数の実行ユニット（８，９，１０）のそれぞれに供給される実行制御信号を生成する。複数の実行ユニット（８，９，１０）は，前記実行制御信号に応答して，前記実行要素命令に対応する動作を行う。実行ユニット（８，９，１０）としては，例えば，ＭＡＣ（積和演算ユニット），ＡＬＵ（算術／論理演算ユニット），ロード／ストアユニットが挙げられる。
【００１５】
本発明によるＶＬＩＷ型ＤＳＰの動作方法は，
第１〜第ｎバンク（２）に，第１〜第ｎプログラムをそれぞれに記憶するステップと，
前記第１〜第ｎプログラムに含まれるコードのうち，実行されるべき実行コードが保存されているアドレスをそれぞれに指定するステップと，
指定された前記アドレスに保存されている前記実行コードを，それぞれ前記第１〜第ｎバンク（２）から受け取るステップと，
受け取られた前記実行コードを結合して一の再配置化コードを生成するステップと，
前記再配置化コードを，一の命令実行サイクルで実行するステップ
とを含む。
【００１６】
前記再配置化コードを生成するステップは，
前記第１〜第ｎプログラムの前記実行コードに記述されているレジスタが，それぞれ，第１〜第ｎレジスタファイル（１１）のレジスタに割り当てられるように前記実行コードを書き換えるステップと，
書き換えられた前記実行コードを結合して前記再配置化コードを生成するステップ
とを備えていることが好適である。
【発明の効果】
【００１７】
本発明により、並列度が低いＶＬＩＷ型ＤＳＰのために開発されたプログラムを並列度が高いＶＬＩＷ型ＤＳＰの上で実行する場合に，並列度が高いＶＬＩＷ型ＤＳＰの性能を有効に生かして，該プログラムを高速に実行するための技術が提供される。
【発明を実施するための最良の形態】
【００１８】
本発明の実施の一形態におけるＶＬＩＷ型ＤＳＰは，図１に示されているように，複数のバンク２１，２２を備えたプログラムメモリ１と，複数のプログラムカウンタレジスタ（ＰＣレジスタ）３と，複数のアドレスカウンタ４とを備えている。バンク２１，２２は，それぞれに，実行されるべきプログラムを格納する。プログラムは，ＶＬＩＷコードによって記述されている。ＰＣレジスタ３１，３２は，それぞれバンク２１，２２に保存されたプログラムのプログラム開始アドレスを格納する。アドレスカウンタ４１，４２は，それぞれバンク２１，２２に保存されているプログラムの，次に実行されるべきＶＬＩＷコードが格納されているアドレスを指定する。
【００１９】
フェッチブロック５は，次に実行されるべきＶＬＩＷコードを，バンク２１，２２のそれぞれからフェッチする。フェッチブロック５は，一のＶＬＩＷコードあたりの要素命令の数が少ないプログラムのＶＬＩＷコードをフェッチした場合，フェッチしたそれらのＶＬＩＷコードを結合して，ＶＬＩＷコードを新たに生成することができるように設計されている。後に詳細に説明されるように，フェッチブロック５がこのような機能を有していることは，並列度が高くなるように構成されている本実施の形態のＶＬＩＷ型ＤＳＰの性能を充分に発揮するために重要である。
【００２０】
本実施の形態のＶＬＩＷ型ＤＳＰは，更に，デコードブロック６と，ディスパッチブロック７と，ＭＡＣ８と，ＡＬＵ９と，ロード／ストアユニット１０とを備えている。これらは，フェッチブロック５から供給されるＶＬＩＷコードを実行するための回路である。デコードブロック６と，ディスパッチブロック７とは，フェッチブロック５から供給されるＶＬＩＷコードに応じてＭＡＣ８とＡＬＵ９とロード／ストアユニット１０とを制御する。ＭＡＣ８と，ＡＬＵ９と，ロード／ストアユニット１０は，プログラムのＶＬＩＷコードに含まれる要素命令を現実に実行するユニットであり，総称的に実行ユニットと呼ばれる。
【００２１】
ＭＡＣ８と，ＡＬＵ９と，ロード／ストアユニット１０の数は，ＶＬＩＷ型ＤＳＰの並列度に応じて決定される。ＭＡＣ８とＡＬＵ９とロード／ストアユニット１０の数が多いほど，一のコードに含まれ得る要素命令の数が多くなる。本実施の形態では，複数のＭＡＣ８とＡＬＵ９がＶＬＩＷ型ＤＳＰに搭載されることにより，即ち，ＶＬＩＷ型ＤＳＰにデュアルＭＡＣ／ＡＬＵアーキテクチャが採用されることにより，ＶＬＩＷ型ＤＳＰに高い並列度が与えられている。
【００２２】
ＭＡＣ８と，ＡＬＵ９と，ロード／ストアユニット１０は，バス１３を介して，レジスタファイル１１と，データメモリ１２とに接続されている。レジスタファイル１１は，ＭＡＣ８とＡＬＵ９とが演算を行う際に使用されるレジスタの集合体である。データメモリ１２は，ＭＡＣ８及びＡＬＵ９によって演算されるべきデータ及び，演算によって生成されたデータを保存する。
【００２３】
デコードブロック６と，ディスパッチブロック７と，ＭＡＣ８と，ＡＬＵ９と，ロード／ストアユニット１０の機能が以下に詳細に説明される。デコードブロック６は，フェッチブロック５から供給されたＶＬＩＷコードから各実行ユニットが実行すべき実行要素命令を生成し，その実行要素命令をディスパッチブロック７に供給する。ディスパッチブロック７は，その実行要素命令に従って，実行制御信号を適切な実行ユニットに送り，実行ユニットに実行要素命令を実行させる。更にディスパッチブロック７は，コードに分岐命令が存在した場合，分岐命令に示された分岐先アドレスをＰＣレジスタ３に転送する。ＭＡＣ８は，ディスパッチブロック７に送られる実行要素命令のうち，積和演算を実行するためのユニットである。ＡＬＵ９は，ディスパッチブロック７に送られる実行要素命令のうち，加算、減算といった算術演算の命令、及び論理和、論理積といった論理演算の命令，その他の命令を実行するユニットである。ロード／ストアユニット１０は，ＭＡＣ８及びＡＬＵ９から，データメモリ１２にアクセスするために使用される。ロード／ストアユニット１０１〜１０４は，それぞれデータメモリ１２１〜１２４からデータをロードし，ロードしたデータを，それぞれバス１３１〜１３４を通じてＭＡＣ８及びＡＬＵ９に供給する。更に，ロード／ストアユニット１０１〜１０４は，ＭＡＣ８及びＡＬＵ９の演算結果をそれぞれバス１３１〜１３４を介して受け取り，その演算結果をそれぞれデータメモリ１２１〜１２４にストアする。
【００２４】
上述のバンク２と，ＰＣレジスタ３と，アドレスカウンタ４と，レジスタファイル１１とは，本実施の形態のＶＬＩＷ型ＤＳＰが同時に実行しようとするプログラムの数だけ用意される。本実施の形態では，バンク２と，ＰＣレジスタ３と，アドレスカウンタ４と，レジスタファイル１１の数は，いずれも２である。ただし，バンク２と，ＰＣレジスタ３と，アドレスカウンタ４と，レジスタファイル１１の数は，２に限られないことに留意されたい。
【００２５】
以下に述べられるように，本実施の形態の本実施の形態のＶＬＩＷ型ＤＳＰは，一のＶＬＩＷコードあたりの要素命令の数が少ないプログラムを複数本，並列に実行する場合に，これらのプログラムのＶＬＩＷコードを結合してＶＬＩＷコードを生成し，生成されたそのＶＬＩＷコードを実行する。これは，バンク２１，２２のそれぞれからフェッチされた複数のＶＬＩＷコードを一の命令実行サイクルで同時に実行することと等価である。これにより，本実施の形態の本実施の形態のＶＬＩＷ型ＤＳＰは，その並列度の高さを有効に生かすことができる。以下では，並列度の低いＤＳＰのために作成された複数のプログラムが，本実施の形態のＶＬＩＷ型ＤＳＰによって並列に実行される過程が説明される。
【００２６】
まず，ＰＣレジスタ３１，３２に格納されているプログラム開始アドレスが，それぞれ，アドレスカウンタ４１，４２に転送される（ステップＳ０１）。
アドレスカウンタ４１，４２は，それぞれ，バンク２１，２２に記憶されているプログラムの，次に実行されるべきＶＬＩＷコードが記憶されているアドレスを指定する（ステップＳ０２）。
【００２７】
フェッチブロック５は，バンク２１，２２それぞれの指定されたアドレスから，ＶＬＩＷコードを読み出す（ステップＳ０３）。
フェッチブロック５は，読み出したＶＬＩＷコードを再配置して，要素命令の数が多い新たなＶＬＩＷコードを生成し，生成した新たなＶＬＩＷコードをデコードブロック６に転送する（ステップＳ０４）。
【００２８】
新たなＶＬＩＷコードの生成において考慮されるべきことは，バンク２１，２２から読み出された２つのＶＬＩＷコードに，同じレジスタ名が含まれ得ることである。バンク２１，２２に記憶されているプログラムが古い世代のＤＳＰ向けに開発されたものであるときには，それらのプログラムは，多くの場合，（時分割ではなく）並列に同時に実行されることが考慮されていない。このような場合，バンク２１，２２から読み出されたＶＬＩＷコードは，同一のレジスタ名を含む場合がある。読み出された２つのＶＬＩＷコードが同じレジスタ名を含むと，それらを同時に実行することはできない。
【００２９】
そこで，フェッチブロック５は，バンク２１から読み出されたＶＬＩＷコードに記述されているレジスタと，バンク２２から読み出されたＶＬＩＷコードに記述されているレジスタとが，別々のレジスタファイル１１に含まれるレジスタに割り当てられるように，読み出されたＶＬＩＷコードを書き換える。フェッチブロック５は，書き換えられたＶＬＩＷコードを結合して実行されるべき新たなＶＬＩＷコードを生成する。
【００３０】
例えば，新たなＶＬＩＷコードは，下記のようにして生成される；レジスタファイル１１１に含まれる汎用レジスタ及びメモリポインタにそれぞれ”Ｒｎ”及び”ＤＰｎ”というレジスタ名が与えられ，レジスタファイル１１２に含まれる汎用レジスタ及びメモリポインタにそれぞれ”Ｒｎ’”及び”ＤＰｎ’”というレジスタ名が与えられる。ここにおいてｎは，０以上の整数である。メモリポインタは，レジスタの一種であることに留意されたい。ＶＬＩＷコードＡ及びＶＬＩＷコードＢが，いずれも，レジスタ名”Ｒｎ”，”ＤＰｎ”という記述を含んでいる場合，ＶＬＩＷコードＢに記述されているレジスタ名”Ｒｎ”が，それぞれ”Ｒｎ’”に書き換えられ，レジスタ名”ＤＰｎ”が，それぞれ”ＤＰｎ’”に書き換えられ，ＶＬＩＷコードＡと，書き換えられたＶＬＩＷコードＢとが結合されて新たなＶＬＩＷコードが作成される。例えば，バンク２１から読み出されるＶＬＩＷコードＡが，
”Ｒ０＝Ｒ１＊Ｒ３＋Ｒ３，Ｒ８＝＊ＤＰ０，Ｒ９＝＊ＤＰ１”
であり，バンク２２から読み出されるＶＬＩＷコードＢが，
”Ｒ３＝Ｒ２＊Ｒ１＋Ｒ０，＊ＤＰ０＝Ｒ８，＊ＤＰ１＝Ｒ９”
である場合，フェッチブロック５は，下記のＶＬＩＷコード
”Ｒ０＝Ｒ１＊Ｒ３＋Ｒ３，Ｒ８＝＊ＤＰ０，Ｒ９＝＊ＤＰ１，Ｒ３’＝Ｒ２’＊Ｒ１’＋Ｒ０’，＊ＤＰ０’＝Ｒ８’，＊ＤＰ１’＝Ｒ９’”を生成する。これにより，バンク２１から読み出されたＶＬＩＷコードには，レジスタファイル１１１のレジスタが割り当てられ，バンク２２から読み出されたＶＬＩＷコードには，レジスタファイル１１２のレジスタが割り当てられ，これらのＶＬＩＷコードの同時的な実行が可能になる。
【００３１】
デコードブロック６は，フェッチブロック５から受け取ったＶＬＩＷコードを各実行ユニットが実行すべき実行要素命令に分解し，その実行要素命令をディスパッチブロック７に供給する（ステップＳ０５）。
【００３２】
ディスパッチブロック７は，その実行要素命令に応答して，実行制御信号を対応する実行ユニットに送り，実行要素命令に対応する動作を該実行ユニットに実行させる（ステップＳ０６−１）。更にディスパッチブロック７は，実行要素命令が分岐命令を含む場合，分岐命令に示された分岐先アドレスを，対応するＰＣレジスタ３に転送する（ステップＳ０６−２）。
【００３３】
以上の過程により，本実施の形態の本実施の形態のＶＬＩＷ型ＤＳＰは，バンク２にそれぞれに記憶されているプログラムのＶＬＩＷコードを結合して新たなＶＬＩＷコードを生成し，生成されたそのＶＬＩＷコードを一の命令実行サイクルで実行する。これにより，本実施の形態のＶＬＩＷ型ＤＳＰは，並列度が低いＤＳＰ用に作成された複数のプログラムを並列に実行し，その並列度の高さを有効に生かすことができる。
【図面の簡単な説明】
【００３４】
【図１】図１は、本発明による実施の一形態のＶＬＩＷ型ＤＳＰの構成を示すブロック図である。
【符号の説明】
【００３５】
１：プログラムメモリ
２：バンク
３：ＰＣレジスタ
４：アドレスカウンタ
５：フェッチブロック
６：デコードブロック
７：ディスパッチブロック
８：ＭＡＣ
９：ＡＬＵ
１０：ロード／ストアユニット
１１：レジスタファイル
１２：データメモリ
【図１】
2005182659.tif 000003