(57)【特許請求の範囲】
【請求項１】
プログラマブルな乗算及び累算数理プロセッサと、
デジタル信号プロセッサへの入力信号を処理する入力プロセッサと、
前記デジタル信号プロセッサからの出力信号を処理する出力プロセッサと、
前記数理プロセッサ、前記入力プロセッサ、及び前記出力プロセッサを制御すると共に、前記数理プロセッサ、前記入力プロセッサ、及び前記出力プロセッサに対するタイミングを提供するマスタプロセッサと、
前記プロセッサの各々によって選択的にアクセス可能な、前記プロセッサの各々からのデータを記憶する記憶装置と
を備え、前記プロセッサの各々は、他のプロセッサとは異なる命令セットを有していることを特徴とするデジタル信号プロセッサ。
【請求項２】
中間計算結果を記憶するランダムアクセスメモリプロセッサを更に備えることを特徴とする請求項１に記載のデジタル信号プロセッサ。
【請求項３】
前記複数のプロセッサの各々を前記記憶装置に結合するバスを含むことを特徴とする請求項２に記載のデジタル信号プロセッサ。
【請求項４】
前記入力プロセッサ及び前記出力プロセッサが、数理演算も実行することを特徴とする請求項１に記載のデジタル信号プロセッサ。
【請求項５】
前記複数のプロセッサは、前記記憶装置を介して互いに通信することを特徴とする請求項１に記載のデジタル信号プロセッサ。
【請求項６】
前記複数のプロセッサの各々は、非常に長い命令語（ＶＬＩＷ）を使用することを特徴とする請求項１に記載のデジタル信号プロセッサ。
【請求項７】
前記マスタプロセッサは、前記入力プロセッサが所与の動作を完了するのを待つことを特徴とする請求項１に記載のデジタル信号プロセッサ。
【請求項８】
前記複数のプロセッサの各々は、それ自体にランダムアクセスメモリを含むことを特徴とする請求項１に記載のデジタル信号プロセッサ。
【請求項９】
前記記憶装置は、複数のレジスタを含み、前記レジスタは、新たなデータが第１のレジスタに書き込まれている時に、前記第１のレジスタから第２のレジスタに自動的に現存のデータを転送することを特徴とする請求項１に記載のデジタル信号プロセッサ。
【請求項１０】
前記入力プロセッサは、データの自動転送を行うことを特徴とする請求項９に記載のデジタル信号プロセッサ。
【請求項１１】
前記数理プロセッサは、前記データを１つのレジスタから他の１つのレジスタへ転送させることを特徴とする請求項９に記載のデジタル信号プロセッサ。
【請求項１２】
パイプライン方式の数理プロセッサを含むことを特徴とする請求項１に記載のデジタル信号プロセッサ。
【請求項１３】
前記数理プロセッサは、マルチサイクル数理プロセッサであり、２以上のクロックサイクルにわたって拡張された数理動作を実行することを特徴とする請求項１に記載のデジタル信号プロセッサ。
【請求項１４】
第１のプロセッサを使用してデジタル信号プロセッサへの入力信号を処理するステップと、
第２のプロセッサを使用して前記信号デジタル信号プロセッサからの出力信号を処理するステップと、
乗算及び累算演算のために第３のプロセッサを使用するステップと、
第４のプロセッサを使用して、前記第１、第２、及び第３のプロセッサを制御するステップと、
前記プロセッサの各々が、記憶装置にデータを記憶し、かつ、前記プロセッサの別の１つによって前記記憶装置に記憶された前記データに選択的にアクセスすることを可能とするステップと、
前記第４のプロセッサからのタイミングをその他のプロセッサの各々に対して提供するステップと
を含む、デジタル信号処理方法であって、前記プロセッサの各々がその他のプロセッサとは異なる命令セットを有している、方法。
【請求項１５】
新たなデータが第１のレジスタに書き込まれている時に、前記第１のレジスタから前記記憶装置の第２のレジスタへ自動的に転送するステップを含むことを特徴とする請求項１４に記載のデジタル信号処理方法。
【請求項１６】
前記第１のプロセッサによる動作に応答して前記データを自動的に転送するステップを含むことを特徴とする請求項１５に記載のデジタル信号処理方法。
【請求項１７】
前記第３のプロセッサによる動作に応答して前記データを自動的に転送するステップを含むことを特徴とする請求項１５に記載のデジタル信号処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にデジタル信号処理に関し、具体的態様では、デジタル信号プロセッサのためのアーキテクチャに関する。
【０００２】
【従来の技術】
［背景］
デジタル信号プロセッサは、一般に、離散的順序の数として測定された情報を変更又は解析する。デジタル信号プロセッサは、例として、テレビジョン，マルチメディア，オーディオ，デジタル信号処理，及び電話通信のような広範な信号処理用途に使用される。これらの用途の大部分は、通常は信号を乗算及び加算する、ある量の数理処理を含んでいる。
【０００３】
多数のデジタル信号プロセッサは、多くのベンダーから購入可能である。一般的に、これらのプロセッサの各々は、それがある一定の能力を有するという意味においては確定（固定）されている。ユーザは、ユーザの必要性と予算に最も良く合うプロセッサを入手しようとする。しかしながら、デジタル信号プロセッサの全体のアーキテクチャを変更するユーザの能力は、比較的限られている。このように、これらの製品は、確定されかつ不変のセットの能力を有するユニットとしてパッケージされる。
【０００４】
【発明が解決しようとする課題】
多くの場合、解決されるべき特定の問題に特に適応される複雑な機能を実行するデジタル信号プロセッサを作成する能力を備えることが望ましい。このように、デジタル信号プロセッサのハードウエアとソフトウエアが特定の機能に適応されるのが望ましい。しかしながら、このようなデジタル信号プロセッサは、比較的限られた市場で流通している。シリコンプロセシングに傾注された場合、比較的特定のニーズを満足するように設計されたデジタル信号プロセッサを提供することが実行できないかもれない。しかしながら、このようなデバイスが強く望まれている。必要なこれらの機能のみが提供されるので、生じた支出に対して最大の性能が提供される。更に、不当にコストを上昇することなく、最も高い性能を生じるこれらの機能が提供され得る。
【０００５】
このように、スケーラブルでしかも種々の構成において広範な独自のアプリケーションを実行するために適応できるデジタル信号プロセッサが必要である。
【０００６】
【課題を解決するための手段】
［概要］
一態様によれば、デジタル信号プロセッサは、数理（数式）プロセッサ，入力プロセッサ，及び出力プロセッサを含む。入力プロセッサは、デジタル信号プロセッサへの入力信号を処理する。出力プロセッサは、デジタル信号プロセッサからの出力信号を処理する。マスタプロセッサは、数理プロセッサ，入力プロセッサ，及び出力プロセッサを制御する。マスタプロセッサは、その他のプロセッサ数理プロセッサ，入力プロセッサ，及び出力プロセッサに対するタイミングを提供する。記憶装置は、プロセッサの各々によって選択的にアクセス可能である。
【０００７】
他の態様は、添付された詳細な説明及び請求項で述べられている。
【０００８】
【発明の実施形態】
［詳細な説明］
デジタル信号プロセッサ１０は、複数のマイクロプロセッサ１４，１８,２０，２４，２６を含み、それらの各々は、それら自体の命令セットを有している。個々のプロセッサは、互いに直接通信する必要はないが、代わりに、レジスタ１６の一部である汎用目的レジスタ（ＧＰＲ）３２と関連する記憶レジスタを介して通信を行い得るようになっている。従って、プロセッサの１つによって実行される動作の結果は、他のプロセッサによるアクセスのためにＧＰＲ３２に記憶される。
【０００９】
プロセッサの各々は、それ自体のコードセットで別々にプログラムされ得る。本発明の一実施形態において、各プロセッサに対する命令セットは、そのプロセッサに対する特定の機能を作動するための論理を提供して、サブプロセッサ機能を実行する別個のハードウエア論理の必要性を回避できる。
【００１０】
マスタープログラマブルコントローラ（ＭＰＣ）１８は、他のプロセッサに対するタイミングを提供し、命令実行コントローラのように動作する。所与のプロセッサにおける所与の命令を実行する時間を知り、ＭＰＣ１８は、所与のプロセッサからの応答を待つ。実際に、ＭＰＣ１８は、サイクル毎ベースでＭＰＣ１８が他のプロセッサを助けて動作させる命令セットを有する。一般的に、１つの命令は、サイクル毎に実行される。
【００１１】
プロセッサの各々は、独立してプログラムされることが可能であるが、命令セットは、１つのプロセッサに対する命令セットが他のプロセッサにおける使用のために変更され得るように、十分に類似していてよい。これによって、各プロセッサをプログラムするための時間が減少され得る。
【００１２】
プログラマブル入力プロセッサ（ＰＩＰ）１４は、先入れ先出し（ＦＩＦＯ）レジスタ１２のような受信バッファから入力を受信する。ＰＩＰ１４は、本発明の幾つかの実施形態において、入力信号の精度変更やスケーリングを提供する。ＰＩＰ１４は、入力信号が利用可能である時にそれが入力データ処理を行いかつ他の時間に数理演算を行うことが可能であるので、有利である。ＭＰＣ１８は、ＰＩＰ１４が所与の動作を完了するまで待つことができるので、入力データは、システム１０と同期される必要がない。このように、実際上、ＭＰＣ１８は、種々の非同期サブプロセッサユニットに対して同期を提供する。
【００１３】
プログラマブル出力プロセッサ（ＰＯＰ）２０は、先入れ先出し（ＦＩＦＯ）レジスタのような送信バッファ２２へ出力を提供する。出力データが送信バッファ２２への送信のために利用されない時に、ＰＯＰ２０は、数理演算を行うことができる。
【００１４】
プログラマブルランダムアクセスメモリ（ＲＡＭ）プロセッサ（ＰＲＰ）２４は、基本的にデータを記憶しかつ検索する。キャッシュのような形態で中間結果を記憶することは、特に有利である。これは、二次元画像処理において特に適用可能である。
【００１５】
本発明の幾つかの実施形態では、通常の長さの語を使用できるが、他の実施形態では、いわゆる非常に長い命令語（ＶＬＩＷ）を使用してもよい。実際上、論理が命令に含まれ、かつ、種々のサブプロセッサを統合するための結合論理が不要であるので、ＶＬＩＷは有利である。
【００１６】
各命令がデータから独立した所定の実行時間を有しても良いので、ＭＰＣ１８は、サイクル毎ベースで種々のプロセッサ動作を制御可能である。プロセッサの各々は、他のプロセッサの全てと並列で動作可能である。このように、実際上、図１に示されるアーキテクチャは、並列プロセッサであるが、このアーキテクチャは、その動作が一般的な循環機能ベースで大きくブレークダウンされるようになっている。
【００１７】
多くの数理プロセッサは、特定のアプリケーションでの特定のニーズに基づいてユニット２６内に設けられ得る。図示された実施形態において、一対の同一の加算及び減算プログラマブル数理プロセッサ（ＰＭＰ）２８ａ，２８ｂは、一対の乗算及び累算（ＭＡＣ）プログラマブル数理プロセッサ（ＰＭＰ）３０ａ，３０ｂと結合される。しかしながら、図示のＰＭＰ２８ａ，２８ｂの何れか又は全てに加えて或いはそれらの代わりに、種々の他の数理プロセッサがデジタル信号プロセッサ１０へプラグされ得る。
【００１８】
プロセッサ１４，１８，２０，２４，２８，３０の各々は、本発明の一実施形態においては、プログラムマブルであり、それ自体のランダムアクセスメモリを含み、ランダムアクセスメモリの内容を命令にデコードされる。プログラマブルプロセッサの制御は、ＭＰＣ１８によって達成される。所与の命令がプログラマブルプロセッサの何れかによって実行される時に、ＭＰＣ１８は制御を行う。
【００１９】
このように、ＭＰＣ１８は、命令の実行時間を制御し、クロックサイクルアクティブである命令の唯一のプロバイダである。残りのプログラマブルプロセッサは、同時に実行する。
【００２０】
レジスタモジュール１６は、データを記憶しプログラマブルプロセッサによるデータのアクセスを可能とするための汎用目的レジスタを含んでいる。プログラマブルランダムアクセスメモリプロセッサ２４，プログラマブル入力プロセッサ１４，及びプログラマブル出力プロセッサ２０を含むことは、数理演算と並列に非常にフレキシブルな入力，出力，及びデータ操作／記憶動作が発生することを可能とする。
【００２１】
ＭＰＣ１８
ＭＰＣ１８は、ＭＰＣ１８に対するスレーブプロセッサとして考えられ得るプロセッサ１４，２０，２４，２８，３０を制御する。このため、ＭＰＣ１８は、図２に示されているように、命令メモリ４０と命令デコード３８を含んでいる。ＭＰＣ１８は、スレーブプロセッサが命令を実行できる時を決定し、かつスレーブプロセッサは、外部データバス１９からのデータ読出しやそれへの書込みデータが完了すると通信する。ＭＰＣ１８は、また、サイクル依存又は命令依存信号を発生するために応答する。このような信号の例は、割込み、データタグ等を含む。
【００２２】
本発明の幾つかの実施形態において、ＭＰＣ１８は、スレーブプロセッサタイミングと関連する唯一のプロセッサであってもよい。また、ＭＰＣ１８は、制御信号を測定する能力を有することができ、これらの測定された信号の状態に基づいてスレーブプロセッサに全体的に影響を及ぼすことができる。また、ＭＰＣ１８は、プロセッサが所与の命令を実行する時を制御できる。このモジュールは、クロックサイクル精度であり、かつＶＬＩＷを使用する実施形態の並列動作を制御するために使用できる。ＭＰＣ１８は、その他のプロセッサの各々に対する命令イネーブルを含んでいる。これらの命令イネーブルは、スレーブプロセッサがその次の命令を処理する時を制御するために使用される。ヌル動作は、特定のクロックサイクルの間にイネーブルを発しないことにより実行される。
【００２３】
ＭＰＣ１８は、本発明の一実施形態において以下の命令をデコードし得る。
ＥＮＡＢＬＥ    ：  全てのスレーブプロセッサの独立制御イネーブルのための命令
ＲＥＳＥＴ＿ＰＣ：  各スレーブプロセッサの命令メモリ毎にプログラムカウンタをリセットするための命令
ＷＡＩＴＯＮＸ  ：  ＭＰＣとその全てのスレーブプロセッサの全てをＰＩＰ及びＰＯＰからの外部データに同期するために使用される命令
ＲＥＰＥＡＴ＿Ｎ：  命令が二つのタイプの繰り返しブランチを提供する。ＲＥＰＥＡＴ Ｎ回数又はＲＥＰＥＡＴフォーエバー
ＪＵＭＰ＿ＩＦ  ：  命令はジャンプ条件命令である。
ＪＵＭＰＮ      ：  命令が３タイプのジャンプブランチを提供する。ＪＵＭＰ Ｎ回数，ＪＵＭＰフォーエバー，及び機能呼出のためのＪＵＭＰ ＲＥＴＵＲＮ。
ＲＥＴＵＲＮ    ：  命令は、プログラムカウンタをリセットしてジャンプリターン命令＋１へ戻す。これは、ファンクションコール（関数呼び出し）に使用される。
【００２４】
本発明の一実施形態において、命令デコードは、以下の表（括弧内に示される命令毎のビット数を含む）を使用して実施されることが可能である。
【００２５】
【表１】
0004391053.tif 000002
【００２６】
上記命令デコード表において、ＵＳＲ−ＤＥＦは、スペア出力を提供し、その一例は、割込みである。これらの出力が登録され、かつ１つのセットは、同じ命令でリセットされるまで設定されたままである。ＴＡＧは、送信ＦＩＦＯレジスタ２２に対するタグを発生するために使用される。これらのタグは、サイクルデータのようなアイテムに対して使用されることが可能である。サイクルデータの例は、画像処理アプリケーションにおけるＲＧＢ画素である。これらの出力は、登録されかつ一旦設定されると、同じ命令によってリセットされるまで設定されたままである。
【００２７】
ＰＩＰ，ＰＯＰ，ＰＲＰ，ＰＭＰ０−３は、１に設定されると、各スレーブプロセッサ毎に命令の実行を可能とするビットである。ＩＴＹＰＥは、上記命令デコード表で定義される命令のタイプである。ＲＭＰＣ，ＲＰＩＰ，ＲＰＯＰ，ＲＰＲＰ，ＲＰＭＰ０−３は、１に設定されると、夫々のプロセッサに対する対応するプログラムカウンタをリセットするビットである。プログラムカウンタは、各プロセッサによって実行されるべき命令の現在の位置の追跡を維持するために使用される。
【００２８】
ＷＡＩＴ＿ＰＯＰとＷＡＩＴ＿ＰＩＰは、対応するＰＯＰ又はＰＩＰスレーブプロセッサから１が検出されるまで、ＭＰＣ１８を待機させる。この機能は、動作されるべき１ブロックのデータをトリガーするか１ブロックのデータを送出するために使用されることが可能である。ＲＥＰＥＡＴ＿Ｎは、最後の命令をＮ＋１回繰返させる値である。０は、一回繰返すことに等しく、１は二回繰返すことに等しく、以下これと同様の関係である。ＲＥＰＥＡＴ＿Ｎは、最大値に等しい時に、ＲＥＰＥＡＴフォーエバーが発生する。最大値は、フィールド（例えば、ＲＥＰＥＡＴ＿Ｎ（５）が「１１１１１」又は３１デシマル）で使用されることができる最大値として定義される。繰り返し命令は、実行するクロックサイクルを必要としない。
【００２９】
ＪＵＭＰ＿ＩＦ命令は、以下の形態で動作する。第１のステップで、ＪＵＭＰ＿ＩＦ命令の第１のエンカウンタ（出会い）は、比較器を作動状態とする。第２のステップにおいて、前のステップと同一のＪＵＭＰ＿ＩＦ命令の第２のエンカウンタは、この比較器が第１のステップにおいて作動状態とされたので、タッグの整合を検出するとアドレスへジャンプさせる。ジャンプの後に、ＪＵＭＰ＿ＩＦが不作動状態とされる。第３のステップにおいて、第１のステップにおけるのとは異なるタグを有するＪＵＭＰ＿ＩＦ命令の何れかのエンカウンタは、比較器を変更してＪＵＭＰ＿ＩＦ命令を再装備する。
【００３０】
ＩＮＳＴ＿ＡＤＤＲは、命令アドレスへのジャンプである。このジャンプ命令は、一般には一サイクルを取る。ＪＵＭＰ＿ＣＮＴは、ＩＮＳＴ＿ＡＤＤＲへのジャンプの回数である。例えば、０は、一回のジャンプに等しく、１は、二回のジャンプに等しく、以下これと同様である。ＪＵＭＰ＿ＣＮＴが最大値である場合、ＪＵＭＰフォーエバーが発生し得る。ＪＵＭＰ＿ＣＮＴが最大値−１に等しい場合、ＪＵＭＰ＿ＲＥＴＵＲＮが発生し得る。
【００３１】
ＳＴＯＰ＿ＥＮは、１へ設定されると、リセットまで或いはそのユニットがオフからオンにされるまで、ＭＰＣ１８を停止するビットである。オフ状態からオン状態へ変化すると、ＭＰＣ１８は、第１の命令へリセットされ得る。ＳＴＯＰ＿ＤＥＢＵＧは、ＭＰＣ１８がオフ状態からオン状態へのトグルが発生するまで停止することを指示する。この時点で、動作は、次の命令で再開する。このモードはデバッグのために使用され得る。全てのプロセッサが停止され、次に、レジスタ３２又はプロセッサＲＡＭの全ての内容が読み出される。
【００３２】
ＭＰＣ１８は、スレーブ動作を制御するための単一中央マスタプロセッサを提供する。これによって、種々のプロセッサを作るために使用される異なる処理テクノロジーに亘ってより容易な可搬性を提供できる。異なるスループットでタイミングに対処するためにスレーブプロセッサが追加，除去，変更，或いは再設計されると、マスタプロセッサプログラムのみが変更され得る。これによって、デジタル信号プロセッサ１０全体を完全に再設計する必要性が回避される。マスター制御プロセッサに対するマシンコードを発生する命令アセンブラーによって、この処理が比較的高速でかつ容易となる。サイクル精度又はプログラム依存信号の生成は、ＭＰＣ１８によって簡単に達成され得る。スレーブプロセッサが除去或いは追加されて、異なる性能を有するカスタムデジタル信号プロセッサを簡単に作ることが可能となる。
【００３３】
ＰＩＰ１４
図３に示されるように、ＰＩＰ１４は、命令メモリ４６，命令デコーダ４４，及び数理ケーパビリィティ４８を含んでいる。本発明の一実施形態において、ＰＩＰ１４は、入力データ並びに内部データに対して加算，減算，及び左シフト機能を実行することが可能である。ＭＰＣ１８は、ＰＩＰ１４によって命令の実行を制御する。ＰＩＰ１４は、入力データ読込みが完了すると信号をＭＰＣ１８に送る。ＰＩＰ１４は、自己時限式数理モジュールを使用して命令と数理機能を実行する。
【００３４】
ＰＩＰ１４は、受信ＦＩＦＯレジスタ１２からの入力データをＧＰＲ１２へ送信できる。ＰＩＰ１４は、入力又は内部データを左シフトすることによって、全符号付１６ビットオフセット及びスケールアップする能力を有する。また、ＰＩＰ１４は、データで何を行うべきかを決定するための他のエンティティによって使用され得るオーバーフロー及びアンダーフローエラーフラグを有する。内部データで動作する時に、ＰＩＰ１４は、何れかのＧＰＲ３２レジスタからのデータを読み出す又は書き込む。このモードは、クロックサイクル精度である。
【００３５】
入力ＦＩＦＯレジスタ１２からのデータで動作する時、ＰＩＰ１４は、何れかのＧＰＲ３２レジスタにデータを書き込む。ＰＩＰ１４は、ビジー／有効プロトコルを有する受信ＦＩＦＯレジスタ１２とインターフェースする。命令を実行した信号は、受信ＦＩＦＯレジスタ１２命令が完了されると、常に、ＭＰＣ１８へ送出される。
【００３６】
ＰＩＰ１４は、ＧＰＲ３２中のレジスタチェーンをセットアップできる。例えば、チェーンモードにおいて、レジスタ０に書き込まれるデータは、レジスタ０中のデータを破壊しない。代わりに、レジスタ０からのデータは、レジスタ１に自動的に書き込まれ、レジスタ１からのデータは、レジスタ２へ自動的に書き込まれ、チェーンの終わり（ＥＯＣ）に達するまで続く。このように、ＰＩＰ１４がレジスタ０に書いているので、ここではレジスタ０はチェーンの開始（ＳＯＣ）として定義される。これは、全て１クロックサイクルで発生し、一次元及び二次元の両方で高速スライディングフィルタ動作を可能とする。
【００３７】
グローバルＥＯＣビットが一に設定されると、ＧＰＲ３２へのあらゆる書き込みは、有効なＳＯＣを定義し得る。グローバルＥＯＣが０に設定されると、ＧＰＲ３２へのＰＩＰ１４書き込みのみが有効ＳＯＣとして定義される。グローバルＥＯＣモードは、無限インパルス応答（ＩＩＲ）フィルタアプリケーションで使用され得る。
【００３８】
ＰＩＰ１４は、本発明の実施形態において、以下の命令タイプをデコードすることができる。
ＲＸＦＩＦＯ    ：  外部ソースからのデータを得るために使用される命令。
ＩＮＴＥＲＮＡＬ：  外部又は内部ソースからのデータの経路指定のために使用される命令。
ＯＦＦＳＥＴ    ：  入力データのオフセットを追加することができる命令。
ＳＨＩＦＬＥＦＴ：  命令は、入力データビットを左シフトすることが可能である。
ＥＯＣ          ：  チェーンの終わりが検出される所を告げるためにグローバルチェーニングに対して使用される命令。
ＲＥＰＥＡＴ Ｎ ： 命令は、二つのタイプの繰り返しブランチ，ＲＥＰＥＡＴ  Ｎ回，又はＲＥＰＥＡＴフォーエバーを提供する。
ＪＵＭＰ＿ＩＦ  ：  命令は、ジャンプ条件命令である。
ＪＵＭＰ＿Ｎ    ：  命令は、三つのタイプのジャンプブランチ，ＪＵＭＰ   Ｎ回，ＪＵＭＰフォーエバー，及びファンクションコールのためのＪＵＭＰ ＲＥＴＵＲＮを提供する。
ＲＥＴＵＲＮ    ：  命令は、プログラムカウンタをリセットしてジャンプリターン命令＋１へ戻す。
【００３９】
以下の命令デコード表が、本発明の一実施形態において、使用され得る。
【００４０】
【表２】
0004391053.tif 000003
【００４１】
ＱＵＡＮＴＹは、入力データソースから取り出された語の数を制御するカウンタである。０に設定されると、一語が取り出され、１に設定されると、二語が取り出され、以下これと同様である。取り出される全数が完了すると、ＰＩＰ１４は、命令が実行されたことを示す信号をＭＰＣ１８に送る。この命令は、次の命令がイネーブルにされるまで、維持される。
【００４２】
ＤＥＳＴは、ＧＰＲへの宛先アドレスである。ＩＴＹＰＥは、命令デコード表において定義される命令のタイプである。ＳＵＢＥＮは、１に等しく設定されると、以下のような減算をイネーブルするビットである。ＤＥＳＴ＝ＳＯＵＲＣＥ＿Ａ−ＳＯＵＲＣＥ＿Ｂ。０に設定されると、ＳＵＢＥＮは、以下のように加算をイネーブルする。ＤＥＳＴ＝ＳＯＵＲＣＥ＿Ａ＋ＳＯＵＲＣＥ＿Ｂである。ＳＯＵＲＣＥ＿Ａは、加算器／減算器へのＡ入力のアドレスである。ＳＯＵＲＣＥ＿Ｂは、加算器／減算器へのＢ入力のアドレスである。
【００４３】
ＯＦＦＳＥＴは、以下のように入力データへ加算される符号付フォーマットにおける量である。ＤＥＳＴ−ＧＲＰ＝入力データ＋オフセットである。値が負の場合、減算が発生する。ＳＨＩＦＴ＿Ｌは、入力データに対して実行される左シフトの量である。デコーディングは、以下の通りである。００００は、左シフト無しを意味し、０００１は、一回左シフトを意味し、………１０００−１１１１は、八回左シフトを意味する。
【００４４】
ＧＬＯＢＡＬ＿ＥＯＣは、１に設定されると、グローバルＥＯＣモードをイネーブルするビットである。このモードにおいて、ＧＰＲ０レジスタへ書き込むプロセッサは、ＳＯＣと考えられる。このモードが非アクティブである時、ＧＰＲへのＰＩＰ１４の書き込みのみがＳＯＣを定義する。ＥＯＣは、ＧＰＲに対するチェーンアドレスの終わりである。ＳＯＣは、それがＧＰＲをアドレスする場合、常にＤＥＳＴ＿ＧＰＲ又はＤＥＳＴとして定義される。ＥＯＣが００００００である場合、ＧＰＲのチェーンニングは生じない。ＥＯＣがＳＯＣ以下である場合、チェーンニングは生じない。ＥＯＣがＳＯＣを越える場合、レジスタのチェーンニングが生じる。
【００４５】
ＲＥＰＥＡＴ＿Ｎ，ＪＵＭＰ＿ＣＮＴ，ＩＮＳＴ＿ＡＤＤＲ，及びＲＥＴＵＲＮは、全てＭＰＣ１８のための定義である。
【００４６】
ＰＩＰ１４の使用を通して、データは、プログラマブル様式において、ワーキングレジスタから転送され得る。データ入力と他のスレーブ動作は、互いに対して独立して生じ得る。ＰＩＰ１４は、データに対して準備されていない宛先へのデータの書き込みを許容する。データ転送を実行していない間、ＰＩＰ１４は、内部数理演算を実行するために使用されることが可能である。
【００４７】
ＰＯＰ２０
ＰＯＰ２０は、図４に示されるように、命令メモリ５４，命令デコード５２，及び数理ユニット５６を有する。ＰＯＰ２０は、本発明の一実施形態においては、加算，減算，右シフト，セーリング，フロアリング，絶対値，及び丸め関数（ラウンドファンクション）を内部データに対して実行できる。また、ＰＯＰ２０は、オーバーフローとアンダーフローフラグを有する。ＭＰＣ１８は、ＰＯＰ２０による命令の実行を制御する。出力データ書き込みが完了すると、ＰＯＰ２０は、ＭＰＣ１８へ信号を送信する。ＰＯＰ２０は、自己時限式数理モジュールを使用して命令と数理機能を実行する。
【００４８】
ＰＯＰ２０は、動作の送信データモードの間、ＧＰＲ１６レジスタの何れかから送信バッファ２２へデータを送信する責務を負う。内部モードの間、ＰＯＰ２０は、ＧＰＲ１６レジスタのいずれかからのデータの送受信を行う。ＰＯＰが送信ＦＩＦＯレジスタ２２へのデータを送信していない時に、この動作の内部モードが発生する。
【００４９】
内部モードの動作は、クロックサイクル精度であり得るが、送信データモードの動作は、クロックサイクル精度でなくてもよい。送信ＦＩＦＯレジスタ２２への転送は、レジスタ２２がフルであるかもしれないので、クロックサイクル精度である必要はない。しかしながら、ＰＯＰ２０は、実行されるべき命令が終了されると、ＭＰＣ１８へ信号が送信される。
【００５０】
本発明の一実施形態において、ＰＯＰ２０は、１６ビット符号付加算，減算，丸め（ラウンディング）を含む右シフト動作，最大値クランピング，最小値クランピング，及び絶対値決定を実行し得る。右シフト動作は、最下位ビットへ丸めることもある。例えば、１６ビットが右に８ビットシフトされると、丸めが下位８ビットへ発生し、上位８ビットへ影響を及ぼす。その丸めが元の１６ビット符号付データのオーバーフローやアンダーフローを引き起こす場合には、丸めが発生しない。データへの動作の順序は、以下の通りである。加算／減算，丸め／シフト，最大クランプ／最小クランプ，絶対値の順序である。
【００５１】
構成レジスタは、絶対値機能，最小しきい値，及び最大しきい値をイネーブルする。二つの１６ビット構成レジスタは、符号付最大及び最小しきい値を記憶する。これらの構成レジスタは、ファームウエアによって又は命令によって変更され得る。
【００５２】
本発明の一実施形態において、ＰＯＰ２０は、以下の命令タイプを使用することが可能である。
ＴＸＦＩＦＯ    ：  外部ソースへデータを送信するために使用される命令。
ＩＮＴＥＲＮＡＬ：  データの経路指定のために使用される命令。
ＯＦＦＳＥＴ    ：  入力データへオフセットを追加するための命令。
ＳＨＩＦＴ ＲＩＧＨＴ：  出力データビットを右にシフトするために使用される命令。
ＭＡＸ          ：  許容最大データをクランプするための命令。
ＭＩＮ          ：  許容最小データをクランプするための命令。
ＲＥＰＥＡＴ＿Ｎ：  上記されたように、二つのタイプの繰り返しブランチに対する命令。
ＪＵＭＰ＿ＩＦ  ：  条件ジャンプに対する命令。
ＪＵＭＰ＿Ｎ    ：  三つのタイプのジャンプブランチに対する命令。
ＲＥＴＵＲＮ    ：  プログラムカウンタをリセットする命令。
【００５３】
以下の例は、本発明の一実施形態において、命令デコードを示す。
【００５４】
【表３】
0004391053.tif 000004
【００５５】
ＱＵＡＮＴＹは、ＰＩＰ１４に関連して定義されるようなカウンタである。ＳＯＵＲＣＥ＿ＧＰＲは、ＧＰＲ１６への開始アドレスである。量Ｎのデータは、始めＳＯＵＲＣＥ＿ＧＰＲアドレスから取り出され、量Ｎの送信ＦＩＦＯレジスタ２２への送信が完了されるまで、自動的に増分される。その結果、一列のＮデータは、１つの命令で送信され得る。
【００５６】
ＩＴＹＰＥは、上述の命令デコード表において定義された命令タイプである。ＯＦＦＳＥＴ，ＳＵＢＥＮ，ＳＯＵＲＣＥ＿Ａ，及びＳＯＵＲＣＥ＿Ｂは、ＰＩＰ１４に関連して先に述べられたのと同じ定義を有する。ＳＨＩＦＴ＿Ｒは、入力データへの８回までの右シフトが実行される右シフトの量である。デコーディングは、以下の通りである。００００は右シフト無し、０００１は一回の右シフト、１０００から１１１１は、８回の右シフトである。また、右シフトとの結果としてＰＲＰ２４によって、落ちるビットの丸めが実行される。
【００５７】
ＣＬＡＭＰ＿ＭＡＸは、最大１６符号付値出力であり、ＣＬＡＭＰ＿ＭＩＮは、最小１６ビット符号付出力である。ＲＥＰＥＡＴ＿Ｎ，ＩＮＳＴ＿ＡＤＤＲ，ＲＥＴＵＲＮ，及びＪＵＭＰ＿ＣＮＴは、ＰＩＰ１４に関連して定義された通りである。ＡＢＳ＿ＥＮは、１に設定されると、クランプ機能の後で最終出力に実行されるべき絶対値機能をイネーブルするビットである。
【００５８】
ＰＯＰ２０によって、データは、プログラマブル様式で、ワーキングレジスタから転送され得る。データ出力と他のスレーブ動作とは、互いから独立して発生し得る。また、ＰＯＰ２０は、データがそのデータに対して準備されていない宛先に書き込まれることが可能である。データ転送を実行していない時に、ＰＯＰ２０は、内部数理機能を実行するために使用され得る。
【００５９】
レジスタ１６
レジスタ１６は、同時に多くのプロセッサから発生できる独立の読込みと書き込み動作と共にチェーニング及びグローバルチェーニングモードを可能とするように構成されるバスインターフェース３４とＮ個の汎用目的レジスタ３２を含んでいる。ＧＰＲ３２は、その他のプロセッサの内の何れかから及びそれへの独立のデータ転送を可能とする。ＧＰＲ３２は、何れかのプロセッサモジュールによって書き込まれることが可能な各プロセッサ毎にレジスタを含んでいる。二つのプロセッサモジュールが同じレジスタへ書き込もうとすると、エラーフラグが設定される。
【００６０】
チェーニングモードにおいて、ＧＰＲ３２は、１つのレジスタの出力を他の１つのレジスタの出力にチェーニング（chaining）するように構成され得る。ＰＩＰ１４からレジスタ０へ書き込まれるデータは、レジスタ０のデータを破壊しないが、代わりに、レジスタ０からのデータは、自動的にレジスタ１へ書き込まれ、レジスタ１のデータは、自動的にレジスタ２へ書き込まれ、プログラマブルＥＯＣに到達するまで１クロックサイクルで続く。このように、図５に示されるように、データが参照番号５８で示されるＧＰＲ０に書き込まれると、そのデータは、自動的に参照番号６０で示されるＧＰＲ１へ転送され、以下これと同様である。
【００６１】
ＳＯＣは、ＰＩＰ１４が書き込んでいる現在のＧＰＲ位置として定義される。これによって、一次元及び二次元の両方において、高速有限インパルス応答（ＦＩＲ）フィルタ動作並びに高速スライディングフィルタ動作を可能とする。一例として、ＳＯＣが６に設定されると、この例において、ＰＩＰ１４からのＧＰＲ６への書き込みは、チェーニングを生成しない。ＰＩＰ１４のみがＳＯＣを定義することを可能とすることは、レジスタからレジスタへの移動命令を使用することなく、最新のセットに動作されている間に、次のセットのデータの取り出しを順次可能とする。競合が生じると、プロセッサによって何れかのＧＰＲへの任意の書き込みは、前のレジスタから優先権をチェーニング権に引き渡す。
【００６２】
図６に示されるグローバルデータチェーニングの使用は、ＩＩＲフィルタを実行している時に、データがより効率的に処理され得る。グローバルデータチェーニングは、内部数値モジュールにＳＯＣを形成させるものとして定義される。これによって、ＰＩＰ１４のみがデータチェーンを形成できるのとは異なり、演算されたデータがＳＯＣを発生できる。グローバルチェーニングモードにおいて、ＰＩＰ１４は、ＳＯＣを定義できない。グローバルチェーニングモードがアクティブである場合、ＰＩＰ１４を除く任意のプロセッサからＧＰＲへの任意の書き込みは、有効ＳＯＣを定義できる。ＩＩＲフィルタ処理を実行している時に、ＳＯＣは、チェーンへの挿入前に、入力データへの動作が可能であるので、他のプロセッサによって定義されることができる。競合が発生すると、プロセッサによるＧＰＲへの任意の書き込みは、前のレジスタから優先権をチェーニング権に引き渡す。
【００６３】
図１３を参照すると、ＭＰＣ１８と関連して記憶され得るチェーニングコード１０６は、グローバルチェーニングがダイヤモンド１０７で指示されるように選択されたか否かを決定することによって、始まる。グローバルチェーニングが選択されると、ダイヤモンド１０８で示されるように、ＰＩＰ１４が汎用目的レジスタ０へ書き込みをしたかどうかのチェックがなされる。もし書き込がなされたならば、ＧＰＲ０が新たな語へ設定されて、チェーニングが指示されない。ＰＩＰがＧＰＲ０へ書き込まなかった場合には、ダイヤモンド１１２でのチェックによって、レジスタＧＰＲ０への他のプロセッサ書き込みがあるか否かが決定される。もし書き込みがあるならば、ＳＯＣが０に設定され、ＥＯＣがＳＯＣより大きなプログラマブル値へ設定される。ブロック１１４に示されるように、ＧＰＲ０が新たな語に等しく設定され、ＧＰＲ１がＧＰＲ０に等しく設定され、ＧＰＲ２がＧＰＲ１へ等しく設定され、ＧＰＲ（ＥＯＣ）がＧＰＲ（ＥＯＣ−１）に等しく設定される。ＧＰＲ（ＥＯＣ）がＧＰＲ０に等しい場合、チェーニングが発生する。ＧＰＲへの書き込みが常に生じる。
【００６４】
グローバルチェーニングが選択されなかった場合、ダイヤモンド１１６でのチェックによって、ＰＩＰ１４がＧＰＲレジスタＸ（ＧＰＲ（Ｘ））への書き込みが行われたか否かが決定される。もし否ならば、ダイヤモンド１２０でのチェックによって、レジスタＸへの他の書き込みがあるか否かが決定される。もしイエスならば、ブロック１２２で指示されているように、レジスタＸは新たな語へ等しく設定されて、チェーニングが発生しない。
【００６５】
ＰＩＰがレジスタＧＰＲ（Ｘ）へ書き込まれた時には、ブロック１１８で指示されるように、ＳＯＣがＧＰＲ（Ｘ）に等しく設定される。ＥＯＣがＳＯＣ以上のプログラマブル値のへ等しく設定される。ＧＰＲ（Ｘ）が新たな語に等しく設定され、レジスタＧＰＲ（Ｘ＋１）がＧＰＲ（Ｘ）へ等しく設定され、ＧＰＲ（Ｘ＋２）がＧＰＲ（Ｘ＋１）に等しく設定され、ＧＰＲ（ＥＯＣ）がレジスタＧＰＲ（ＥＯＣ−１）に等しく設定される。レジスタＧＰＲ（ＥＯＣ）がレジスタＧＰＲ（Ｘ）以下に設定されると、チェーニングが発生しないが、ＧＰＲ（Ｘ）への書き込みが常に発生する。
【００６６】
１つのレジスタから他の１つのレジスタへのシフトは、１クロックサイクルで発生し得る。例えば、本発明の一実施形態において、レジスタ１からレジスタ０へのシフト、レジスタ２からレジスタ１へのシフト及びレジスタ３からレジスタ２へのシフト等の全てが１クロックサイクルで発生し得る。
【００６７】
チェーニングとグローバルチェーニングモードの使用によって、プロセッサの何れにおいても独立したデータ処理が発生可能となる。更に、大量のレジスタからレジスタへの命令を必要とすることなく、より高速のＩＩＲフィルタ，ＦＩＲフィルタ，スライディングＮ次元フィルタ，及びベクトル積が得られる。
【００６８】
ＰＲＰ２４
ＰＲＰ２４は、図７に示されるように、多数のランダムアクセスメモリ（ＲＡＭ）モジュール７４を含んでいる。モジュール７４の数は、ＰＲＰ２４を使用するサブプロセッサの数と等しい。このように、Ｎ個のＲＡＭ７４は、命令ＲＡＭ７６に結合される命令デコードユニット７２へ結合される。Ｎ個のＲＡＭ７４は、命令メモリ７６に含まれる命令に基づいて読み出し及び書き込みをプログラム可能である。各ＲＡＭ７４は、互いから独立して読出し及び書き込みを行うことが可能である。
【００６９】
本発明の一実施形態においては、ＰＲＰ２４によって、Ｎ個の１６ビットデータブロックの内部記憶が可能となる。ＰＲＰ２４は、データが再帰的に使用される場合やデータフローが性能に関してあまりに制限的である場合において、フィルタ動作のために使用されることが可能である。一例は、フィルタ処理が８列及び次に８行に実行される場合において、二次元離散コサイン変換（ＤＣＴ）を実行することである。他の例では、ジグザグ動作と量子化が同時に発生するように、量子化表とメモリの直接記憶である。
【００７０】
ＰＲＰ２４は、任意のＧＰＲ１６レジスタからの読出し又はそれへの書き込みが可能である。ＰＲＰ２４は、Ｎ個の別々のメモリ７４を含んでいるので、Ｎ回の読出し又は書き込み又はそれらのミックスが同時に発生し得る。ファームウエアは、Ｎ個のＲＡＭメモリ７４の全て得の直接アクセスを有する。
【００７１】
ＰＲＰ２６は、本発明の一実施形態において、以下の命令タイプをデコードすることができる。ＲＤ／ＷＲは、複数のＲＡＭ７４の独立した読出し／書込み制御を行う命令である。ＪＵＭＰＮは、上述のように、三つのタイプのジャンプブランチを提供する命令であり、同様にＲＥＴＵＲＮは、他のプロセッサに関連して先に述べられているように動作する。
【００７２】
本発明の一実施形態の一例として、以下の命令コード表がＰＲＰ２４に対して提供される。
【００７３】
【表４】
0004391053.tif 000005
【００７４】
上記命令デコード表において、Ｂ＿ＥＮは、１に設定されると、ＲＡＭ Ｂに対する読出し又は書込みをイネーブルするビットである。０に等しく設定されると、ＲＡＭ Ｂからの読出しや、それへの書込みを不能にする。Ｂ＿ＷＲＥＮは、１に設定されると、Ｂ＿ＥＮが１ならば、ＲＡＭ Ｂへの書込みを行わせるビットである。ビットＢ＿ＷＲＥＮが０に設定されると、Ｂ＿ＥＮが１に設定されるならば、ＲＡＭ Ｂに対する読込みを可能とする。
【００７５】
Ｂ＿ＡＤＤＲは、ＲＡＭ読込みに対する宛先のアドレスとＲＡＭ書込みに対するソースのアドレスである。Ｂ＿ＲＡＭＡＤＤＲは、読出し又は書込みに対するＲＡＭアドレスである。同様に、Ａ＿ＥＮは、１に等しく設定されると、ＲＡＭ Ａからの読込み又は書込みを可能とし、かつ０に等しく設定されると、ＲＡＭ Ａからの読込み又は書込みを不能とするビットである。Ａ＿ＷＲＥＮ、Ａ＿ＡＤＤＲ及びＡ＿ＲＡＭＡＤＤＲは、ＲＡＭ Ａに適用することを除き、Ｂ＿ＷＲＥＮ、Ｂ＿ＡＤＤＲ又はＢ＿ＲＡＭＡＤＤＲと同じである。
【００７６】
ＩＴＹＰＥは、二つの最下位ビットビットを使用して定義される命令タイプである。ＪＵＭＰ＿ＣＮＴ、ＩＮＳＴ＿ＡＤＤＲ及びＲＥＴＵＲＮは、他のプロセッサに関連して先に記述されたのと同じである。
【００７７】
ＰＲＰ２４は、外部デバイスからのデータや係数の読出しを行うこと無しに、データ処理に利用できるように、係数とデータがローカルＲＡＭにセーブされることを可能とする。これによって、信号処理中の入力／出力性能低下を減少することができる。
【００７８】
多数の係数を記憶するためにＲＡＭを使用することによって、レジスタを使用するよりも小さな領域を使用することになる。全てのＲＡＭ読出しと書込みは、本発明の一実施形態において、命令によって制御され、かつ他のスレーブプロセッサ動作から独立して動作可能である。これによって、より高速の信号処理が可能となる。
【００７９】
ＰＭＰ（複数）２８，３０
ＰＭＰ２８は、図８に示されるように、命令デコードユニット８０，加算器／減算器８４，及び命令ＲＡＭ８２を含んでいる。ＰＭＰ２８は、二つの入力の加算又は減算を実行し、その結果をＧＰＲ３２へ送信する。ソース及び宛先は、命令によって定義される。プロセッサは、自己時限式数理モジュールを使用して、命令を実行する。
【００８０】
本発明の一実施形態において、ＰＭＰ２８によって支援される主機能は、二つの符号付１６ビット数を加算又は減算して、１６ビット符号付結果を出力することである。また、ＰＭＰ２８は、オーバーフロー及びアンダーフローフラグを有する。ＰＭＰ２８は、ＧＰＲ３２の何れかからのデータを受信することができ
かつ、ＧＰＲ３２レジスタへのデータを提供することができる。
【００８１】
本発明の一実施形態において、ＰＭＰ２８は、以下のタイプの命令の何れかをデコードする。加算／減算命令は、加算器／減算器への二つの入力の出所及びその結果の宛先の制御、並びに、プロセッサが加算モード或いは減算モードにあるかどうかの制御を行う。ＲＥＰＥＡＴ Ｎ、ＪＵＭＰ Ｎ及びＲＥＴＵＲＮ命令のタイプは、先に記述された通りである。
【００８２】
ＰＭＰ２８に対する命令デコードのセットの一例として、以下の表が提供される。
【００８３】
【表５】
0004391053.tif 000006
【００８４】
ＳＵＢＥＮ，ＳＯＵＲＣＥ＿Ａ，ＳＯＵＲＣＥ＿Ｂ，ＩＴＹＰＥ，ＲＥＰＥＡＴ＿Ｎ，ＪＵＭＰ＿ＣＮＴ，ＩＮＳＴ＿ＡＤＤＲ，及びＲＥＴＵＲＮは、例えば、ＰＩＰ１４に関連して、全て前に記述されている。
【００８５】
ＰＭＰ２８の使用によって、加算及び減算動作を互いから独立して発生可能となる。ＰＭＰ２８は、設計上完全にモジュラーであるので、デジタル信号プロセッサ１０全体のスケーラビリティが可能となる。
【００８６】
ＰＭＰ３０は、図９に示されるように、それ自体の命令メモリ９０、命令デコード８８及び数理モジュール９２を備える乗算と累算（ＭＡＣ）プロセッサである。このプロセッサは、乗算と累算演算を実行し、その演算の結果をＧＰＲ３２レジスタへ送信する。ソースと宛先は、その命令によって定義される。プロセッサは、自己時限式数理モジュールを使用して命令を実行できる。
【００８７】
ＰＭＰ３０の主支援機能は、二つの符号化１６ビット数を乗算して３２ビット結果を生成することである。その結果は、先の３２ビット結果から加算されて乗算と累算（ＭＡＣ）機能を形成する。アキュムレータサイズは、内部拡張精度動作を可能とする３２＋Ｎビットである。アキュムレータの結果は、１６ビットに丸められ、１６ビット右にシフトされて符号付１６ビット結果を生成する。また、ＰＭＰ３０は、オーバーフローとアンダーフローフラグを有する。ＰＭＰ３０は、何れかのＧＰＲ３２からデータを受領できかつデータを任意のＧＰＲ３２へ提供する。
【００８８】
ＰＭＰ３０は、本発明の一実施形態において、以下のタイプの命令をデコードする。ＭＡＣ命令は、乗算累算スレーブプロセッサへの入力の出所と結果の宛先、並びにクリアービットの制御を行う。ＲＥＰＥＡＴ Ｎ、ＪＵＭＰ Ｎ及びＲＥＴＵＲＮは、上述された通りである。
【００８９】
上記命令のタイプの実行の一例は、以下の命令デコード表で述べられている。
【００９０】
【表６】
0004391053.tif 000007
【００９１】
上記表で、ＣＬＲは、０に設定されると、３２＋Ｎビットアキュムレータのフィードバックループを０にするビットである。このビットは、１セットの累算計算の開始時に表明されてアキュムレータを初期化する。このビットがＮ個のマルチサイクルに対して１に等しく設定されると、ＭＡＣは、乗算器として動作する。ＤＥＳＴは、ソースと宛先メモリマップによって定義される累算の宛先アドレスである。ＳＯＵＲＣＥ＿Ａは、乗算器へのＡ入力のアドレスであり、ＳＯＵＲＣＥ＿Ｂは、乗算器へのＢ入力のアドレスである。
【００９２】
ＩＴＹＰＥ，ＲＥＰＥＡＴ＿Ｎ，ＪＵＭＰ＿ＣＮＴ，ＩＮＳＴ＿ＡＤＤＲ，及びＲＥＴＵＲＮは、前記された通りである。
【００９３】
ＰＭＰ３０は、乗算又は乗算と累算動作とを他のプロセッサから独立して行うことが可能である。プロセッサは、完全にモジュラーであり、デジタル信号プロセッサ１０のスケーラリビティを可能とする。
【００９４】
データパスインターフェース
図１０を参照して、デジタル信号プロセッサ１０で使用されるデータパスインターフェース方法によって、命令デコードに影響を及ぼすことなく、自己時限式単一サイクル又はマルチサイクル数理プロセッサが相互交換されることが可能となる。これによって、異なる処理テクノロジーに対するプロセッサ１０のより大きな可搬性が可能となる。また、インターフェースによって、数理プロセッサタイミング遅延にのみ依存する自己時限式命令の実行が可能となる。
【００９５】
算術要素９４（ＰＭＰ２８や３０）への全てのデータ入力は、一時記憶された出力であり、他のデータ値が存在するまで安定する。有効入力信号（ＩＮ＿ＶＡＬＩＤ）は、新たなデータが供給されると、提供される。新たなデータは、算術要素９４からのビジー信号が表明される場合に、提供されるに過ぎない。
【００９６】
図１１に示されるパイプライン要素９６において、ビジー信号は、データが連続的に算術要素９６へ送出されるので、常にローであり得る。遅延要素１００は、１クロックサイクルに限り、算術要素の動作を遅延するために使用されることが可能である。例えば、数理プロセッサは、間にある遅延要素１００でユニット１０２と１０４へ分割され得る。同様に、入力有効信号（ＯＵＴ＿ＶＡＬＩＤ）は、１サイクルだけ遅延され、１サイクルだけ出力有効信号（ＯＵＴ＿ＶＡＬＩＤ）を遅延する。同様に、データの宛先を告げるデータ方向付け信号（ＩＮ＿ＤＥＳＴ＿ＡＤＤＲ）が遅延され得る。
【００９７】
図１２に示されるマルチサイクル算術要素９８において、ビジー信号は、新たなデータを算術要素９８へ送られないように保持するために使用され得る。算術演算の結果に対する宛先アドレス及びモード変更信号が算術要素９８へ提供されて、新たなデータが存在するまで、算術要素９８の安定化を助ける。
【００９８】
算術要素９８は、内部遅延を提供してマルチサイクル動作が発生するように、算術のラテンシーを整合する。動作は、２つ又はそれより多くのクロックサイクルにわたって拡張される。また、入力データ有効（ＩＮ＿ＶＡＬＩＤ）と入力宛先（ＩＮ＿ＤＥＳＴ＿ＡＤＤＲ）信号は、必要なサイクル数（Ｎ）だけ遅延され得る。エラーフラグ信号は、算術要素９８によって提供され一時記憶される。入力データを識別する入力データ有効信号及び算術要素９８へのモード又は制御信号は、算術要素９８へ送信される新たなデータに対して表明される。
【００９９】
これらのインターフェース方法によって、デジタル信号プロセッサが異なる処理テクノロジーを超越することを可能とする。幾つかの場合、新たな機能のために必要な唯一の再設計は、数理モジュールを再設計することであり得る。命令デコード論理中に設定される命令は、異なる算術要素タイミング変化を調節するために変更されることが必要ない。これによって、異なる処理テクノロジー変化を許容するより可搬性設計が可能となる。
【０１００】
パイプラインによる処理、或いは、マルチサイクルの処理の使用を介して、異なる数理プロセッサは、交換のための時間の長い短いに拘わらず、全体のプロセッサへ追加可能である。このように、より遅い数理プロセッサがより早い数理プロセッサに置き換えられる場合には、パイプラインの又はマルチサイクルのアーキテクチャは、この追加の遅延時間を補償するために利用されることが可能である。逆に、新たな数理プロセッサは、それが置き換えられるプロセッサよりも速い場合には、そのより速い数理プロセッサは、以下で述べられる場合を除いて、変更無しに使用されることが可能である。
【０１０１】
各場合において、ＭＰＣ１８は、新たな数理プロセッサのより遅い又はより速いタイミングへ調整するために再コンパイルされる。新たなタイミングがより長いかより短いかに拘わらず、必要とされることの全ては、ＭＰＣ１８を再コンパイルすることである。次に、ＭＰＣ１８は、新たなタイミングで動作する。このように、このシステムは、異なる処理テクノロジーに関して実行されかつそのシステムが初めに設計されたプロセッサよりも早いか遅いかである新たなプロセッサへ容易かつ迅速に適合させることが可能である。
【０１０２】
本発明は、限られた数の実施形態に関して記述されたが、当業者は、それらの実施形態から多くの修正及び変更を理解するであろう。添付の請求の範囲は、本発明の真の精神と範囲内において、全てのそのような修正及び変更をカバーしている。
【図面の簡単な説明】
【図１】  本発明の一実施形態のブロック図である。
【図２】  図１に示されるマスタープログラムコントローラの一実施形態のブロック図である。
【図３】  図１に示されるプログラマブル入力プロセッサの一実施形態のブロック図である。
【図４】  図１に示されるプログラマブル出力プロセッサの一実施形態のブロック図である。
【図５】  図１に示される汎用目的レジスタに関連して使用されるチェーニングプロセスを示す図である。
【図６】  図１に示される汎用目的レジスタに関連して使用されるチェーニングプロセスを示す図である。
【図７】  本発明の一実施形態によるプログラマブルＲＡＭの１つの実施例を示すブロック図である。
【図８】  加算及び減算を実行する本発明の一実施形態に係る図１のプログラマブル数理プロセッサのブロック図である。
【図９】  乗算及び累算演算を実行する本発明の一実施形態に係る図１のプログラマブル数理プロセッサのブロック図である。
【図１０】  本発明の実施形態に関連して利用され得るデータパスインターフェース方法を示す図である。
【図１１】  本発明の実施形態に関連して利用され得るデータパスインターフェース方法を示す図である。
【図１２】  本発明の実施形態に関連して利用され得るデータパスインターフェース方法を示す図である。
【図１３】  本発明の一実施形態のフローチャートである。
【図１】
0004391053.tif 000008
【図２】
0004391053.tif 000009
【図３】
0004391053.tif 000010
【図４】
0004391053.tif 000011
【図５】
0004391053.tif 000012
【図６】
0004391053.tif 000013
【図７】
0004391053.tif 000014
【図８】
0004391053.tif 000015
【図９】
0004391053.tif 000016
【図１０】
0004391053.tif 000017
【図１１】
0004391053.tif 000018
【図１２】
0004391053.tif 000019
【図１３】
0004391053.tif 000020