(57)【特許請求の範囲】
【請求項１】
１マシンサイクルに複数の実行フェーズが設けられ、回路規模が比較的小さい小規模なＤＳＰ装置において、
処理データを格納する第１のＲＡＭと、
この第１のＲＡＭのアドレスを指定するデータを格納する第２のＲＡＭを備えたことを特徴とするＤＳＰ装置。
【請求項２】
１マシンサイクルに複数の実行フェーズが設けられ、回路規模が比較的小さい小規模なＤＳＰ装置において、
処理データを格納する第１のＲＡＭと、
この第１のＲＡＭのアドレスを指定するデータを格納する第２のＲＡＭを備え、
上記第２のＲＡＭは、複数のバンク領域に分割され、おのおののバンク領域単位にアクセスされることを特徴とするＤＳＰ装置。
【請求項３】
１マシンサイクルに複数の実行フェーズが設けられ、回路規模が比較的小さい小規模なＤＳＰ装置において、
処理データを格納する第１のＲＡＭと、
この第１のＲＡＭのアドレスを指定するデータを格納する第２のＲＡＭを備え、
１つの命令語に少なくとも２つの上記第２のＲＡＭのアドレスを指定するパラメータを設定し、１マシンサイクル中に、上記パラメータで指定された第２のＲＡＭのアドレスによって指定される上記第１のＲＡＭのアドレスに対するデータ転送処理を、少なくとも２回実行可能な命令実行ユニットを備えたことを特徴とするＤＳＰ装置。
【請求項４】
１マシンサイクルに複数の実行フェーズが設けられ、回路規模が比較的小さい小規模なＤＳＰ装置において、
処理データを格納する第１のＲＡＭと、
この第１のＲＡＭのアドレスを指定するデータを格納する第２のＲＡＭを備え、
１つの命令語に少なくとも２つの上記第２のＲＡＭのアドレスを指定するパラメータを設定し、１マシンサイクル中に、上記パラメータで指定された第２のＲＡＭのアドレスによって指定される上記第１のＲＡＭのアドレスに対するデータ転送処理を、少なくとも２回実行可能な命令実行ユニットを備え、
上記第２のＲＡＭは、複数のバンク領域に分割され、おのおののバンク領域単位にアクセスされることを特徴とするＤＳＰ装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、１マシンサイクルに複数の実行フェーズが設けられ、回路規模が比較的小さい小規模なＤＳＰ装置に関する。
【０００２】
【従来の技術】
一般に、ＤＳＰ装置（デジタル信号処理装置（Ｄｉｇｉｔａｌ  ＳｉｇｎａｌＰｒｏｃｅｓｓｏｒ））は、算術演算、論理演算、および、ビット操作などの比較的単純なデータ処理命令を、装置の処理単位である１マシンサイクルで実行完了可能であり、これにより、デジタルフィルタ演算処理などのデータ処理を高速に実行することができる。
【０００３】
また、取り扱えるデータのワード長が１６ビット程度で、定義されている命令数が６０個程度で、かつ、内蔵しているデータＲＡＭ（ランダム・アクセス・メモリ）が２５６ワード程度の、回路規模が比較的小さい小規模なＤＳＰ装置でも、並列乗算器などを内蔵することで、高速なデータ処理を実現できるようにしている。
【０００４】
【発明が解決しようとする課題】
一方、従来、小規模なＤＳＰ装置では、１つの命令語のビット数が比較的少ないため（例えば、１６ビット）、命令語中に含めることができるデータ指定情報は、たかだか１つである。
【０００５】
このため、かかる小規模なＤＳＰ装置では、１マシンサイクル中に指定できるデータアドレスが１つであるため、１マシンサイクル中で１回のデータ転送処理のみが可能である。
【０００６】
したがって、例えば、加算処理など、引数として２つのデータが必要な演算処理では、第１引数を算術論理演算ユニットに転送する命令、第２引数を算術論理演算ユニットに転送するとともに加算演算を実行する命令、加算結果を指定されたアドレスに保存するためのデータ転送命令の３つの命令を実行するために、３つのマシンサイクルを必要とし、そのために、演算時間が長くなるという事態を生じていた。
【０００７】
本発明は、かかる実情に鑑みてなされたものであり、演算時間を短縮できるＤＳＰ装置を提供することを目的としている。
【０００８】
【課題を解決するための手段】
本発明は、１マシンサイクルに複数の実行フェーズが設けられ、回路規模が比較的小さい小規模なＤＳＰ装置において、１マシンサイクルに設定されている複数の実行フェーズにおいて、少なくとも２つのデータ転送処理を実行可能な命令実行ユニットを備えたものである。
【０００９】
また、１マシンサイクルに複数の実行フェーズが設けられ、回路規模が比較的小さい小規模なＤＳＰ装置において、処理データを格納する第１のＲＡＭと、この第１のＲＡＭのアドレスを指定するデータを格納する第２のＲＡＭを備えたものである。
【００１０】
また、１マシンサイクルに複数の実行フェーズが設けられ、回路規模が比較的小さい小規模なＤＳＰ装置において、処理データを格納する第１のＲＡＭと、この第１のＲＡＭのアドレスを指定するデータを格納する第２のＲＡＭを備え、上記第２のＲＡＭは、複数のバンク領域に分割され、おのおののバンク領域単位にアクセスされるものである。
【００１１】
また、１マシンサイクルに複数の実行フェーズが設けられ、回路規模が比較的小さい小規模なＤＳＰ装置において、処理データを格納する第１のＲＡＭと、この第１のＲＡＭのアドレスを指定するデータを格納する第２のＲＡＭを備え、１つの命令語に少なくとも２つの上記第２のＲＡＭのアドレスを指定するパラメータを設定し、１マシンサイクル中に、上記パラメータで指定された第２のＲＡＭのアドレスによって指定される上記第１のＲＡＭのアドレスに対するデータ転送処理を、少なくとも２回実行可能な命令実行ユニットを備えたものである。
【００１２】
また、１マシンサイクルに複数の実行フェーズが設けられ、回路規模が比較的小さい小規模なＤＳＰ装置において、処理データを格納する第１のＲＡＭと、この第１のＲＡＭのアドレスを指定するデータを格納する第２のＲＡＭを備え、１つの命令語に少なくとも２つの上記第２のＲＡＭのアドレスを指定するパラメータを設定し、１マシンサイクル中に、上記パラメータで指定された第２のＲＡＭのアドレスによって指定される上記第１のＲＡＭのアドレスに対するデータ転送処理を、少なくとも２回実行可能な命令実行ユニットを備え、上記第２のＲＡＭは、複数のバンク領域に分割され、おのおののバンク領域単位にアクセスされるものである。
【００１３】
【作用】
したがって、１マシンサイクルで２つのデータ転送処理を実行できるので、例えば、加算処理などの処理に必要なデータを揃えるために必要なマシンサイクル数が減少し、それにより、演算速度を高速化することができる。
【００１４】
また、処理データを格納した第１のＲＡＭのアドレスを指定するデータを保存する第２のＲＡＭを設け、この第２のＲＡＭの２つのアドレスを指定するパラメータを、命令語中に定義したので、１マシンサイクルで２つのデータ転送処理を実行でき、例えば、加算処理などの処理に必要なデータを揃えるために必要なマシンサイクル数が減少し、それにより、演算速度を高速化することができる。
【００１５】
また、処理データを格納した第１のＲＡＭのアドレスを指定するデータを保存する第２のＲＡＭを設け、この第２のＲＡＭを複数のバンク領域に分割して、バンク領域単位にアクセス可能にしたので、この第２のＲＡＭの２つのアドレスを指定するパラメータを、命令語中に定義することができ、その結果、１マシンサイクルで２つのデータ転送処理を実行でき、例えば、加算処理などの処理に必要なデータを揃えるために必要なマシンサイクル数が減少し、それにより、演算速度を高速化することができる。
【００１６】
【実施例】
以下、添付図面を参照しながら、本発明の実施例を詳細に説明する。
【００１７】
図１は、本発明の一実施例にかかるＤＳＰ装置を示している。
【００１８】
同図において、このＤＳＰ装置は、内部バスのバス幅が１６ビットの小規模回路構成のものであり、その内部は、大きく分けて、プログラムの実行を制御するためのプログラム実行制御ユニットＰＥＵと、加算処理、減算処理、ビット単位の論理演算処理、シフトやローテイトなどのビット操作処理、および、乗算処理などを実行する演算実行ユニットＩＥＵから構成されている。
【００１９】
プログラム実行制御ユニットＰＥＵにおいて、制御部１は、命令コードのデコードなどのＤＳＰ装置の内部動作の制御、外部装置との間における種々のデータのやりとり、クロック信号の入力／生成などの処理を実行するものであり、バッファ２は、このＤＳＰ装置の実行アドレスデータなどを外部に出力するためのものである。
【００２０】
プログラムＲＯＭ（リード・オンリ・メモリ）３は、このＤＳＰ装置が実行する処理プログラムを構成するプログラムデータなどをワード（１６ビット）単位に記憶するためのものであり、このプログラムＲＯＭ３から出力されるプログラムデータは、プログラムバス４に出力されている。
【００２１】
マルチプレクサ５は、プログラムバス４を介して加えられているアドレスデータ、または、スタック６から読み出されたアドレスデータのいずれか一方を選択するものであり、その選択した出力は、プログラムカウンタ７に加えられている。
【００２２】
プログラムカウンタ７は、このＤＳＰ装置のプログラムの実行アドレスを出力するものであり、その出力データは、バッファ２、プログラムＲＯＭ３、および、スタック６に加えられている。
【００２３】
スタック６は、例えば、割込み発生時、割込み処理を実行したとき、その割込み処理後に復帰する処理を実行するためのアドレスデータなどを退避するためのものであり、このスタック６から読み出されたデータは、マルチプレクサ５の一方の入力端に加えられている。また、制御部１には、プログラムバス４を介して、種々のデータが加えられている。
【００２４】
演算実行ユニットＩＥＵにおいて、データバス１０は、この演算実行ユニットＩＥＵを構成する各要素間におけるデータのやりとりを行うとともに、プログラム実行制御ユニットＰＥＵとの間でデータをやりとりするためのものである。
【００２５】
アドレスレジスタ１１は、プログラムバス４を介して出力される８ビットの直接アドレスデータを保持するためのものであり、その出力データは、マルチプレクサ１２の一方の入力端に加えられている。
【００２６】
バンクレジスタ１３は、データバス１０を介して出力されるバンクアドレスデータを保持するものであり、その出力データは、ＲＡＭ（ランダム・アクセス・メモリ）１４のアドレス入力端（バンクアドレス入力端）に加えられている。
【００２７】
アドレスセレクタ１５は、データバス１０を介して同時に出力される複数（２あるいは３）のレジスタアドレスデータを保持するとともに、そのレジスタアドレスデータの１つを選択するものであり、その出力データは、ＲＡＭ１４のアドレス入力端（レジスタアドレス入力端）に加えられている。
【００２８】
ＲＡＭ１４は、バンクレジスタ１３から出力されているバンクアドレスデータで規定されたバンク領域（後述）のうち、アドレスセレクタ１５から出力されているレジスタアドレスデータで示される１６ビットのワード（レジスタ）領域を選択し、その選択したワード領域にデータを入出力するものであり、その入出力データは、双方向スリーステートバッファ１６を介してデータバス１０との間でやりとりされるとともに、マルチプレクサ１７の一方の入力端に加えられ、また、その下位８ビットが８ビットの算術論理演算ユニット１８の一方の入力端に加えられている。
【００２９】
双方向スリーステートバッファ１６は、データバス１０からＲＡＭ１４に対してデータが出力されるときにイネーブル状態に設定され、それ以外の期間では、ハイインピーダンス状態に設定される。この双方向スリーステートバッファ１６がイネーブル状態に設定されると、ＲＡＭ１４のデータ入出力端がデータバス１０に接続されて、双方向にデータのやりとりが可能となる。また、双方向スリーステートバッファ１６がハイインピーダンス状態に設定されると、ＲＡＭ１４のデータ入出力端がデータバス１０から切り離される状態になり、ＲＡＭ１４の出力データがデータバス１０にあらわれることがない。
【００３０】
ステップレジスタ１９は、データバス１０を介して出力される８ビットのアドレスステップ値を保持するものであり、その出力データは、算術論理演算ユニット１８の他方の入力端に加えられている。
【００３１】
算術論理演算ユニット１８は、ＲＡＭ１４から出力されるデータに、ステップレジスタ１９から出力されるアドレスステップ値を加算または減算するものであり、その演算結果は、間接アドレスレジスタ２０に加えられている。
【００３２】
間接アドレスレジスタ２０は、算術論理演算ユニット１８から出力されるデータを保持するものであり、その出力データは、間接アドレスデータとして、マルチプレクサ１２の他方の入力端に加えられている。
【００３３】
マルチプレクサ１２は、その一方の入力端に加えられている直接アドレスデータ、または、他方の入力端に加えられている間接アドレスデータのうちいずれか一方を選択するものであり、その選択出力は、アドレスデータとしてＲＡＭ２１のアドレス入力端に加えられている。
【００３４】
ＲＡＭ２１は、１ワード１６ビット構成で、ワード単位にデータを書き込み／読み出し可能なものであり、アドレス入力端に加えられるアドレスデータにより指定されたワード領域に、データの書き込みまたはデータの読出を行う。ＲＡＭ２１のデータ入出力端は、データバス１０に接続されている。
【００３５】
シフタ２２は、データバス１０を介して出力されるデータを保持するとともに、その保持データを０〜１６のうち任意ビット数シフト操作するためのバレルシフタであり、その３２ビットの出力データは、マルチプレクサ２３の一方の入力端に加えられている。
【００３６】
マルチプレクサ１７の他方の入力端には、データバス１０から出力される１６ビットのデータが加えられている。マルチプレクサ１７は、ＲＡＭ１４から出力されるデータ、または、データバス１０から出力されるデータのいずれか一方を選択するものであり、その選択出力は、乗算器２４の一方の入力端に加えられている。
【００３７】
乗算器２４は、データバス１０から加えられる１６ビットのデータと、マルチプレクサ１７から加えられる１６ビットのデータの乗算を、このＤＳＰ装置の１マシンサイクル期間で実行する並列乗算器であり、その３２ビットの出力データは、マルチプレクサ２３の他方の入力端に加えられている。また、乗算器２４は、入力する２つの１６ビットデータをラッチするラッチを備えている。
【００３８】
マルチプレクサ２３は、シフタ２２から加えられるデータ、または、乗算器２４から加えられるデータのいずれか一方を選択するものであり、その選択出力は、３２ビットの算術論理演算ユニット２５の一方の入力端に加えられている。
【００３９】
算術論理演算ユニット２５は、２つの入力端に加えられるデータについて、加算、減算、および、論理演算などの算術論理演算処理を適用するものであり、その出力データは、３２ビットのアキュムレータ２６に加えられている。
【００４０】
アキュムレータ２６は、算術論理演算ユニット２５の出力データを蓄積するものであり、その出力データは、算術論理演算ユニット２５の他方の入力端に加えられるとともに、シフタ２７に加えられている。また、アキュムレータ２６の出力データをデータバス１０に出力するときには、１６ビット単位に行われる。すなわち、アキュムレータ２６の出力データは、その上位１６ビット、または、下位１６ビットが、データバス１０に出力される。
【００４１】
また、マルチプレクサ２８は、プログラムバス４またはデータバス１０のいずれか一方を選択して、外部接続データ入出力端に接続するものである。
【００４２】
図２（ａ）は、ＲＡＭ１４の記憶領域の領域分割の一例を示している。
【００４３】
ＲＡＭ１４の記憶領域は、複数のバンク領域に分割されており、おのおののバンク領域は、上述したバンクアドレスにより規定される上位アドレスで示される所定ワード数のアドレス空間を占有する。
【００４４】
例えば、バンクアドレスが４ビットで、１つのバンク領域が１６ワードの領域を占める場合（同図（ｂ）参照）、それぞれのアドレス範囲が００〜０Ｆｈ（ｈは１６進数をあらわす。以下同じ）、１０〜１Ｆｈ、２０〜２Ｆｈ、３０〜３Ｆｈ、４０〜４Ｆｈ、５０〜５Ｆｈ、６０〜６Ｆｈ、７０〜７Ｆｈ、８０〜８Ｆｈ、９０〜９Ｆｈ、Ａ０〜ＡＦｈ、Ｂ０〜ＢＦｈ、Ｃ０〜ＣＦｈ、Ｄ０〜ＤＦｈ、Ｅ０〜ＥＦｈ、Ｆ０〜ＦＦｈの１６個のバンク領域が形成される。
【００４５】
ただし、ＲＡＭ１４のワード幅が１６ビットであるので、ＲＡＭ１４には１６ビットであらわされる定数などのデータを保存することができるが、ＲＡＭ２１のアドレスデータを保存する場合、このアドレスデータのビット幅が８ビットなので、アドレスデータは、下位８ビットに保存される。
【００４６】
さて、本実施例のＤＳＰ装置は、１つの命令語が１６ビットからなり、そのデータ形式の一例を図３（ａ），（ｂ），（ｃ），（ｄ）に示す。
【００４７】
同図（ａ）の第１データ形式の命令語は、第１６ビット〜第１１ビットが命令コードに割り当てられ、第１０ビットおよび第９ビットがアドレスモードコードに割り当てられ、第８ビット〜第５ビットが第１レジスタアドレスデータに割り当てられ、第４ビット〜第１ビットが第２レジスタアドレスデータに割り当てられている。
【００４８】
同図（ｂ）の第２データ形式の命令語は、第１６ビット〜第１１ビットが命令コードに割り当てられ、第１０ビットおよび第９ビットがアドレスモードコードに割り当てられ、第８ビット〜第１ビットが直接アドレスデータに割り当てられている。
【００４９】
同図（ｃ）の第３データ形式の命令語は、第１６ビット〜第１３ビットが命令コードに割り当てられ、第１２ビット〜第９ビットが第１レジスタアドレスデータに割り当てられ、第８ビット〜第５ビットが第２レジスタアドレスデータに割り当てられ、第４ビット〜第１ビットが第３レジスタアドレスデータに割り当てられている。
【００５０】
同図（ｄ）の第４データ形式の命令語は、第１６ビット〜第９ビットが命令コードに割り当てられ、第８ビット〜第１ビットがイミディエイト値（即値）に割り当てられている。
【００５１】
ここで、アドレスモードは、直接アドレスデータがＲＡＭ２１の直接アドレスデータであることを示す第１アドレスモード（ＭＤ＝００；第２データ形式に適用）、直接アドレスデータがＲＡＭ１４の直接アドレスデータ（バンクアドレスデータとレジスタアドレスデータを連結したもの）であることを示す第２アドレスモード（ＭＤ＝０１；第２データ形式に適用）、第１レジスタアドレスデータおよび第２レジスタアドレスデータがそれぞれＲＡＭ２１のレジスタアドレスデータであることを示す第３アドレスモード（ＭＤ＝１０；第１データ形式に適用）、第１レジスタアドレスデータがＲＡＭ１４のレジスタアドレスであることを示し、第２レジスタアドレスデータがＲＡＭ２１の直接アドレスデータ（下位４ビット）であることを示す第４アドレスモード（ＭＤ＝１１；第１データ形式に適用）の４種類が規定されている。
【００５２】
このようにして、本実施例では、第１データ形式の命令語の場合、命令語のオペランドとして２つの間接アドレスデータを含めることができるので、１つのマシンサイクルにおいて、データの加減算処理と、処理結果の保存のためのデータ転送を行うことができる。
【００５３】
例えば、拡張加算演算を行う命令語（ＡＤＤＡ）を、図４に示すように、第１データ形式の命令語として定義する。
【００５４】
この命令語ＡＤＤＡでは、第２レジスタアドレスデータＢで示される間接アドレスデータで参照されるＲＡＭ２１のアドレスに保存されているデータ［Ｂ］を読み出し、そのデータ［Ｂ］とアキュムレータ２６の内容を加算し、その加算結果を、第１レジスタアドレスデータＡで示される間接アドレスデータで参照されるＲＡＭ２１のアドレスＡのデータ［Ａ］として保存する。ここで、表記［ｘ］は、アドレスｘに保存されているデータをあらわす。
【００５５】
また、本実施例では、ＤＳＰ装置の１マシンサイクルは、連続する４つの動作フェーズφ１，φ２，φ３，φ４からなり、おのおのの動作フェーズφ１，φ２，φ３，φ４の１つを使って、加減算処理およびデータ転送の処理が完結する。この場合、命令語ＡＤＤＡは、図５（ａ）〜（ｄ）に示したようなタイミングで実行される。
【００５６】
まず、動作フェーズφ１では、アドレスセレクタ１５により、１６ビットの命令語ＡＤＤＡから第２レジスタアドレスデータＢが抽出されてその内容が出力され、これにより、そのときのバンクレジスタ１３で指定されるバンク領域において、第２レジスタアドレスデータＢで参照される領域に保存された間接アドレスデータＢが読み出され、この間接アドレスデータＢは、算術論理演算ユニット１８を介し、間接アドレスレジスタ２０に保持される。この間接アドレスレジスタ２０から出力される間接アドレスデータＢは、マルチプレクサ１２を介してＲＡＭ２１に出力される。これにより、ＲＡＭ２１からは、間接アドレスデータＢで参照される領域に保存された１６ビットデータであるデータ［Ｂ］がデータバス１０に出力され、このデータバス１０に出力されたデータ［Ｂ］は、シフタ２２に保存される。
【００５７】
次の動作フェーズφ２では、シフタ２２に保存されているデータ（データ［Ｂ］）は、マルチプレクサ２３を介して算術論理演算ユニット２５の一方の入力端に加えられ、これにより、算術論理演算ユニット２５は、マルチプレクサ２３を介して加えられるシフタ２２からの出力データと、アキュムレータ２６の出力データを加算し、その加算結果を出力する。この加算結果は、アキュムレータ２６に保存される。
【００５８】
そして、次の動作フェーズφ３では、アキュムレータ２６の下位１６ビットのデータがデータバス１０に出力される。それとともに、アドレスセレクタ１５により、１６ビットの命令語ＡＤＤＡから第１レジスタアドレスデータＡが抽出されてその内容が出力され、これにより、そのときのバンクレジスタ１３で指定されるバンク領域において、第１レジスタアドレスデータＡで参照される領域に保存された間接アドレスデータＡが読み出され、この間接アドレスデータＡは、算術論理演算ユニット１８を介し、間接アドレスレジスタ２０に保持される。この間接アドレスレジスタ２０から出力される間接アドレスデータＡは、マルチプレクサ１２を介してＲＡＭ２１に出力される。これにより、ＲＡＭ２１において、間接アドレスデータＡで参照される領域に、データバス１０に出力されているデータ（加算結果）が保存される。
【００５９】
このようにして、この命令語ＡＤＤＡでは、１回の加算処理と、加算結果の保存処理を、１つのマシンサイクル中に実行することができる。
【００６０】
なお、この命令語ＡＤＤＡで参照する領域、および、バンクレジスタ１３には、あらかじめ演算対象のデータおよびバンクアドレスデータがセットされている。
【００６１】
この命令語ＡＤＤＡを利用した加算演算（Ｄ１＝Ｄ２＋Ｄ３）は、例えば、次のリスト（Ｉ）で示したプログラムで実現できる。
【００６２】
ＬＡＣ      Ｄ２
ＡＤＤＡ    Ｄ１，Ｄ３                          （リスト（Ｉ））
【００６３】
ここで、命令語ＬＡＣは、直接アドレスＤ２のデータ［Ｄ２］をアキュムレータに保存する処理をあらわす第２データ形式の命令語である。なお、このリスト（Ｉ）では、変数名とアドレスをあらわす識別子（Ｄ１，Ｄ２，Ｄ３）を同じ内容で表記している。
【００６４】
このリスト（Ｉ）の実行例を図６（ａ）〜（ｄ）に示す。
【００６５】
まず、最初のマシンサイクルで最初のプログラムステップの処理が実行され、次のマシンサイクルで２つ目のプログラムステップの処理が実行される。
【００６６】
すなわち、最初のマシンサイクルの動作フェーズφ１では、アドレスレジスタ１１に保持されている直接アドレスデータＤ２が、マルチプレクサ１２を介してＲＡＭ２１に出力される。これにより、ＲＡＭ２１からは、直接アドレスデータＤ２で参照される領域に保存された１６ビットデータであるデータ［Ｄ２］がデータバス１０に出力され、このデータバス１０に出力されたデータ［Ｄ２］は、シフタ２２に保存される。
【００６７】
次の動作フェーズφ２では、シフタ２２に保存されているデータ（データ［Ｄ２］）は、マルチプレクサ２３を介して算術論理演算ユニット２５の一方の入力端に加えられ、これにより、算術論理演算ユニット２５は、マルチプレクサ２３を介して加えられるシフタ２２からの出力データをアキュムレータ２６に出力して、保存する。
【００６８】
次のマシンサイクルの、動作フェーズφ１では、アドレスセレクタ１５により、１６ビットの命令語ＡＤＤＡから第２レジスタアドレスデータＤ３が抽出されてその内容が出力され、これにより、そのときのバンクレジスタ１３で指定されるバンク領域において、第２レジスタアドレスデータＤ３で参照される領域に保存された間接アドレスデータＤ３が読み出され、この間接アドレスデータＤ３は、算術論理演算ユニット１８を介し、間接アドレスレジスタ２３に保持される。この間接アドレスレジスタ２３から出力される間接アドレスデータＤ３は、マルチプレクサ１２を介してＲＡＭ２１に出力される。これにより、ＲＡＭ２１からは、間接アドレスデータＤ３で参照される領域に保存された１６ビットデータであるデータ［Ｄ３］がデータバス１０に出力され、このデータバス１０に出力されたデータ［Ｄ３］は、シフタ２２に保存される。
【００６９】
次の動作フェーズφ２では、シフタ２２に保存されているデータ（データ［Ｄ３］）は、マルチプレクサ２３を介して算術論理演算ユニット２５の一方の入力端に加えられ、これにより、算術論理演算ユニット２５は、マルチプレクサ２３を介して加えられるシフタ２２からの出力データと、アキュムレータ２６の出力データ（データＤ２）を加算し、その加算結果を出力する。この加算結果は、アキュムレータ２６に保存される。
【００７０】
そして、次の動作フェーズφ３では、アキュムレータ２６の下位１６ビットのデータがデータバス１０に出力される。それとともに、アドレスセレクタ１５により、１６ビットの命令語ＡＤＤＡから第１レジスタアドレスデータＤ１が抽出されてその内容が出力され、これにより、そのときのバンクレジスタ１３で指定されるバンク領域において、第１レジスタアドレスデータＤ１で参照される領域に保存された間接アドレスデータＤ１が読み出され、この間接アドレスデータＤ１は、算術論理演算ユニット１８を介し、間接アドレスレジスタ２３に保持される。この間接アドレスレジスタ２３から出力される間接アドレスデータＤ１は、マルチプレクサ１２を介してＲＡＭ２１に出力される。これにより、ＲＡＭ２１において、間接アドレスデータＤ１で参照される領域に、データバス１０に出力されているデータ（加算結果）が保存される。
【００７１】
このようにして、１つの算術式であらわされる加算演算が、２マシンサイクルで実行される。従来、かかる演算処理は、３マシンサイクル要したので、本実施例では、１マシンサイクルだけ短縮できたことになる。
【００７２】
以上のようにして、本実施例では、１つの算術式であらわされる加算演算の実行時間を、従来装置に比べて２／３に短縮することができる。一般に、かかる加算演算は、ＤＳＰ装置が適用されるデータ処理分野においては頻繁にあらわれるので、本実施例では、従来装置に比べて、大幅に演算時間を短縮することができる。
【００７３】
ところで、ＤＳＰ装置が適用されるデータ処理分野では、例えば、次の式のような累積演算が多用される。
【００７４】
Ａｃｃ＝Σ（Ａ×Ｂ＋Ｃ）
【００７５】
ここで、Ａｃｃは、累積値をあらわし、また、変数Ｂは、定数である場合が多い。
【００７６】
本実施例では、このような累積演算処理を構成する演算処理を、図７に示したような、第３データ形式の１つの命令語ＳＧＭで実現することができる。
【００７７】
この命令語ＳＧＭの実行例を図８（ａ）〜（ｋ）に示す。
【００７８】
この場合、命令語ＳＧＭの処理の準備として、この命令語ＳＧＭの１つ前の処理ステップで、間接アドレスデータＡをＲＡＭ１４から出力させておく。
【００７９】
この状態で、最初のマシンサイクル（以下、１マシンサイクル目という）の動作フェーズφ１では、ＲＡＭ１４から出力された間接アドレスデータＡが算術論理演算ユニット１８を介して間接アドレスレジスタ２３に保持され、この間接アドレスレジスタ２３から出力される間接アドレスデータＡは、マルチプレクサ１２を介してＲＡＭ２１に出力され、これにより、ＲＡＭ２１からは、間接アドレスデータＡで参照される領域に書き込まれているデータ［Ａ］が読み出され、このデータ［Ａ］は、データバス１０を介し、乗算器２４の一方の入力端にラッチされる。
【００８０】
一方、この動作フェーズφ１では、アドレスセレクタ１５により第２レジスタアドレスデータＢが抽出されてその内容が出力され、これにより、そのときのバンクレジスタ１３で指定されるバンク領域において、第２レジスタアドレスデータＢで参照される領域に保存された定数データ［Ｂ］が読み出され、この定数データ［Ｂ］はマルチプレクサ１７を介して乗算器２４の他方の入力端にラッチされる。ここで、この状態では、双方向スリーステートバッファ１６がハイインピーダンスに設定されるので、ＲＡＭ１４の出力データは、データバス１０には出力されない。
【００８１】
このようにして、乗算器２４には、動作フェーズφ１において、２つのデータ［Ａ］とデータ［Ｂ］がそろうので、乗算器２４は、乗算動作を開始し、その乗算結果（［Ａ］×［Ｂ］）は、次のマシンサイクル（以下、２マシンサイクル目という）の動作フェーズφ１において、乗算器２４より出力され、マルチプレクサ２３を介して算術論理演算ユニット２５の一方の入力端に加えられ、算術論理演算ユニット２５は、次の動作フェーズφ２において、乗算結果（Ｄ（＝［Ａ］×［Ｂ］））をアキュムレータ２６に保存する。
【００８２】
また、この動作フェーズφ２では、アドレスセレクタ１５により第３レジスタアドレスデータＣが抽出されてその内容が出力され、これにより、そのときのバンクレジスタ１３で指定されるバンク領域において、第３レジスタアドレスデータＣで参照される領域に保存された間接アドレスデータＣが読み出され、この間接アドレスデータＣは、算術論理演算ユニット１８を介し、間接アドレスレジスタ２３に保持される。この間接アドレスレジスタ２３から出力される間接アドレスデータＣは、マルチプレクサ１２を介してＲＡＭ２１に出力される。これにより、ＲＡＭ２１からは、間接アドレスデータＣで参照される領域に書き込まれているデータ［Ｃ］がデータバス１０に出力され、このデータバス１０に出力されたデータ［Ｃ］は、シフタ２２に保存される。
【００８３】
そして、次の動作フェーズφ３では、シフタ２２に保存されているデータ（データ［Ｃ］）は、マルチプレクサ１２を介して算術論理演算ユニット２５の一方の入力端に加えられ、これにより、算術論理演算ユニット２５は、マルチプレクサ２３を介して加えられるシフタ２２からの出力データ（Ｄ）と、アキュムレータ２６の出力データ（データ［Ｃ］）を加算し、その加算結果（Ｄ＋［Ｃ］）を出力する。この加算結果（Ｅ（＝Ｄ＋［Ｃ］））は、アキュムレータ２６に保存される。
【００８４】
このようにして、１つの命令語ＳＧＭを実行すると、２つのマシンサイクルで、１つの累積演算を実現できる。
【００８５】
さて、実際の累積演算では、１つの項ではなく、多数の項を累積演算する。この場合、プログラムリストは、例えば、次のようになる。
【００８６】
ＳＧＭ  Ａ，Ｂ，Ｃ                                                ＳＧＭ  Ａ，Ｂ，Ｃ                                                ・・・      （繰り返し）
ＳＧＭ  Ａ，Ｂ，Ｃ                            （リスト（ＩＩ））
【００８７】
このリスト（ＩＩ）のプログラムを実行したときの３マシンサイクル目までの処理の例を図９（ａ）〜（ｋ）に示す。
【００８８】
この場合、上述したように、命令語ＳＧＭの処理の準備として、この命令語ＳＧＭの１つ前の処理ステップで、間接アドレスデータＡをＲＡＭ１４から出力させておく。
【００８９】
この状態で、１マシンサイクル目の動作フェーズφ１では、ＲＡＭ１４から出力された間接アドレスデータＡが、算術論理演算ユニット１８を介して間接アドレスレジスタ２３に保持され、この間接アドレスレジスタ２３から出力される間接アドレスデータＡは、マルチプレクサ１２を介してＲＡＭ２１に出力され、これにより、ＲＡＭ２１からは、間接アドレスデータＡで参照される領域に書き込まれているデータ［Ａ］が読み出され、このデータ［Ａ］は、データバス１０を介し、乗算器２４の一方の入力端にラッチされる。
【００９０】
一方、この動作フェーズφ１では、アドレスセレクタ１５により第２レジスタアドレスデータＢが抽出されてその内容が出力され、これにより、そのときのバンクレジスタ１３で指定されるバンク領域において、第２レジスタアドレスデータＢで参照される領域に保存された定数データ［Ｂ］が読み出され、この定数データ［Ｂ］は、マルチプレクサ１７を介して乗算器２４の他方の入力端にラッチされる。
【００９１】
このようにして、乗算器２４には、動作フェーズφ１において、２つのデータ［Ａ］とデータ［Ｂ］がそろうので、乗算器２４は乗算動作を開始する。その乗算結果（［Ａ］×［Ｂ］）は、２マシンサイクル目の動作フェーズφ１において、乗算器２４より出力され、マルチプレクサ２３を介して算術論理演算ユニット２５の一方の入力端に加えられ、算術論理演算ユニット２５は、２マシンサイクル目の動作フェーズφ２において、乗算結果（Ｄ）をアキュムレータ２６に保存する。
【００９２】
また、この２マシンサイクル目の動作フェーズφ２では、アドレスセレクタ１５により第３レジスタアドレスデータＣが抽出されてその内容が出力され、これにより、そのときのバンクレジスタ１３で指定されるバンク領域において、第３レジスタアドレスデータＣで参照される領域に保存された間接アドレスデータＣが読み出され、この間接アドレスデータＣは、算術論理演算ユニット１８を介し、間接アドレスレジスタ２３に保持される。この間接アドレスレジスタ２３から出力される間接アドレスデータＣは、マルチプレクサ１２を介してＲＡＭ２１に出力される。これにより、ＲＡＭ２１からは、間接アドレスデータＣで参照される領域に書き込まれているデータ［Ｃ］がデータバス１０に出力され、このデータバス１０に出力されたデータ［Ｃ］は、シフタ２２に保存される。
【００９３】
そして、２マシンサイクル目の動作フェーズφ３では、シフタ２２に保存されているデータ（データ［Ｃ］）は、マルチプレクサ２３を介して算術論理演算ユニット２５の一方の入力端に加えられ、これにより、算術論理演算ユニット２５は、マルチプレクサ２３を介して加えられるシフタ２２からの出力データ（Ｄ）と、アキュムレータ２６の出力データ（データ［Ｃ］）を加算し、その加算結果（Ｄ＋［Ｃ］）を出力する。この加算結果（Ｅ（＝Ｄ＋［Ｃ］））は、アキュムレータ２６に保存される。
【００９４】
一方、１マシンサイクル目の動作フェーズφ４では、アドレスセレクタ１５により第１レジスタアドレスデータＡが抽出されてその内容が出力され、これにより、そのときのバンクレジスタ１３で指定されるバンク領域において、第１レジスタアドレスデータＡで参照される領域に保存された間接アドレスデータＡが読み出され、この間接アドレスデータＡは、算術論理演算ユニット１８によりステップレジスタ１９から出力されるアドレスステップ値が加えられて値Ａ’に更新され、間接アドレスレジスタ２３に出力される。
【００９５】
この間接アドレスレジスタ２３から出力される間接アドレスデータＡ’は、２マシンサイクル目の動作フェーズφ１で、マルチプレクサ１２を介してＲＡＭ２１に出力され、これにより、ＲＡＭ２１からは、間接アドレスデータＡ’で参照される領域に書き込まれているデータ［Ａ’］が読み出され、このデータ［Ａ’］は、データバス１０を介し、乗算器２４の一方の入力端にラッチされる。
【００９６】
また、この２マシンサイクル目の動作フェーズφ１では、アドレスセレクタ１５により第２レジスタアドレスデータＢが抽出されてその内容が出力され、これにより、そのときのバンクレジスタ１３で指定されるバンク領域において、第２レジスタアドレスデータＢで参照される領域に保存された定数データ［Ｂ］が読み出され、この定数データ［Ｂ］は、マルチプレクサ１７を介して乗算器２４の他方の入力端にラッチされる。
【００９７】
このようにして、乗算器２４には、２マシンサイクル目の動作フェーズφ１において、２つのデータ［Ａ’］とデータ［Ｂ］がそろうので、乗算器２４は乗算動作を開始し、その乗算結果（［Ａ’］×［Ｂ］）は、３マシンサイクル目の動作フェーズφ１において、乗算器２４より出力され、その乗算結果は、マルチプレクサ２３を介して算術論理演算ユニット２５の一方の入力端に加えられる。それにより、３マシンサイクル目の動作フェーズφ２では、算術論理演算ユニット２５は、この乗算結果（［Ａ’］×［Ｂ］）とアキュムレータ２６に保存されているデータＥが加算され、その加算結果（Ｅ＋Ｄ’（＝（［Ａ’］×［Ｂ］））がアキュムレータ２６に保存される。
【００９８】
また、この３マシンサイクル目の動作フェーズφ２では、アドレスセレクタ１５により第３レジスタアドレスデータＣが抽出されてその内容が出力され、これにより、そのときのバンクレジスタ１３で指定されるバンク領域において、第３レジスタアドレスデータＣで参照される領域に保存された間接アドレスデータＣ’が読み出され、この間接アドレスデータＣは、算術論理演算ユニット１８によりステップレジスタ１９から出力されるアドレスステップ値が加えられてその値が更新され、その更新後の値Ｃ’は、間接アドレスレジスタ２３に保持される。この間接アドレスレジスタ２３から出力される間接アドレスデータＣ’は、マルチプレクサ１２を介してＲＡＭ２１に出力される。これにより、ＲＡＭ２１からは、間接アドレスデータＣ’で参照される領域に書き込まれているデータ［Ｃ’］がデータバス１０に出力され、このデータバス１０に出力されたデータ［Ｃ’］は、シフタ２２に保存される。
【００９９】
そして、３マシンサイクル目の動作フェーズφ３では、シフタ２２に保存されているデータ（データ［Ｃ’］）は、マルチプレクサ２３を介して算術論理演算ユニット２５の一方の入力端に加えられ、これにより、算術論理演算ユニット２５は、マルチプレクサ２３を介して加えられるシフタ２２からの出力データ（［Ｃ’］）と、アキュムレータ２６の出力データ（Ｅ＋Ｄ’）を加算し、その加算結果（Ｅ＋Ｄ’＋［Ｃ’］）を出力する。この加算結果（Ｅ＋Ｅ’（＝Ｄ’＋［Ｃ’］））は、アキュムレータ２６に保存される。
【０１００】
一方、３マシンサイクル目の動作フェーズφ４では、アドレスセレクタ１５により第１レジスタアドレスデータＡが抽出されてその内容が出力され、これにより、そのときのバンクレジスタ１３で指定されるバンク領域において、第１レジスタアドレスデータＡで参照される領域に保存された間接アドレスデータＡが読み出され、この間接アドレスデータＡは、算術論理演算ユニット１８によりステップレジスタ１９から出力されるアドレスステップ値が２回加えられて値Ａ”に更新され、間接アドレスレジスタ２３に出力される。
【０１０１】
そして、これ以降は、上述した動作が繰り返し実行され、リスト（ＩＩ）に示したプログラムが実行される。
【０１０２】
このようにして、多数項の累積演算を実行するとき、乗算処理と加算処理が平行して実行されるので、累積演算全体に要する時間を大幅に短縮することができ、かかる演算処理を高速に実行することができる。
【０１０３】
ところで、上述した実施例では、ＲＡＭ２１のデータを参照する間接アドレスを保存するＲＡＭ１４を複数のバンク領域に分割し、おのおののバンク領域は、同一のレジスタアドレスにより参照することができるので、ＲＡＭ２１に保存しているデータについて、異なる演算処理を適用することが可能である。
【０１０４】
例えば、１つのバンク領域には、あるフィルタ演算を実行するためのアルゴリズムに対応した並びに間接アドレスデータを保存し、他のバンク領域には、他のフィルタ演算を実行するためのアルゴリズムに対応した並びに間接アドレスデータを保存すると、実行プログラムで同じ処理を実行したときに、異なるフィルタ演算を実行することができるので、実行プログラムのステップ数を低減することができる。
【０１０５】
また、特定の割込み処理の退避領域として、特定のバンク領域を使用することもできる。この場合には、割込み発生時の実行環境を復元するためのデータを退避する処理を、バンクレジスタ１３のデータ書き換えだけで実行できるので、割込み処理に対する応答性が向上し、実時間処理の効率が良好になる。
【０１０６】
また、この実行環境の切換えは、割込み発生時以外にも適用できるので、このＤＳＰ装置が実行するデータ処理や制御処理の効率を大幅に向上することが期待できる。すなわち、この場合、バンクアドレスをＲＡＭ２１のアドレスを指定するためのポインタとして用いることができる。
【０１０７】
なお、本発明は、上述した実施例のＤＳＰ装置の構成に限らず、他の構成を備えたＤＳＰ装置についても同様にして適用することができる。
【０１０８】
【発明の効果】
以上説明したように、本発明によれば、１マシンサイクルで２つのデータ転送処理を実行できるので、例えば、加算処理などの処理に必要なデータを揃えるために必要なマシンサイクル数が減少し、それにより、演算速度を高速化することができるという効果を得る。
【０１０９】
また、処理データを格納した第１のＲＡＭのアドレスを指定するデータを保存する第２のＲＡＭを設け、この第２のＲＡＭの２つのアドレスを指定するパラメータを、命令語中に定義したので、１マシンサイクルで２つのデータ転送処理を実行でき、例えば、加算処理などの処理に必要なデータを揃えるために必要なマシンサイクル数が減少し、それにより、演算速度を高速化することができるという効果も得る。
【０１１０】
また、処理データを格納した第１のＲＡＭのアドレスを指定するデータを保存する第２のＲＡＭを設け、この第２のＲＡＭを複数のバンク領域に分割して、バンク領域単位にアクセス可能にしたので、この第２のＲＡＭの２つのアドレスを指定するパラメータを、命令語中に定義することができ、その結果、１マシンサイクルで２つのデータ転送処理を実行でき、例えば、加算処理などの処理に必要なデータを揃えるために必要なマシンサイクル数が減少し、それにより、演算速度を高速化することができるという効果も得る。
【図面の簡単な説明】
【図１】本発明の一実施例にかかるＤＳＰ装置を示したブロック図。
【図２】ＲＡＭ１４の記憶領域の分割（バンク分割）の一例を示した概略図。
【図３】命令語の一例を示した概略図。
【図４】命令語ＡＤＤＡの一例を示した概略図。
【図５】ＡＤＤＡの処理のタイミングについて説明するためのタイミングチャート図。
【図６】加算演算処理のタイミングを説明するためのタイミングチャート図。
【図７】命令語ＳＧＭの一例を示した我意略図
【図８】１つのＳＧＭの処理のタイミングについて説明するためのタイミングチャート図。
【図９】複数個のＳＧＭを連続して実行するときの処理について説明するためのタイミングチャート。
【符号の説明】
１  制御部
３  プログラムＲＯＭ（リード・オンリ・メモリ）
７  プログラムカウンタ
１１  直接アドレスレジスタ
１３  バンクレジスタ
１４，２１  ＲＡＭ（ランダム・アクセス・メモリ）
１５  アドレスセレクタ
１８，２５  算術論理演算ユニット
２０  間接アドレスレジスタ
２４  乗算器
２６  アキュムレータ
【図１】
0003753442.tif 000002
【図２】
0003753442.tif 000003
【図３】
0003753442.tif 000004
【図４】
0003753442.tif 000005
【図５】
0003753442.tif 000006
【図６】
0003753442.tif 000007
【図７】
0003753442.tif 000008
【図８】
0003753442.tif 000009
【図９】
0003753442.tif 000010