デジタル信号処理回路は、現代の民生電子装置の至る所に存在する。信号処理回路は、受信、送信、レンダリング、記録などの目的でオーディオ又はビデオ信号ストリームのような実時間又は実時間に近い信号ストリームを受信する及び/又は出力するという点で、通常のコンピュータとは異なる。同じ処理動作が、無期限にこれらのストリームからのデータに対して何度も繰り返して適用される。特定用途向けの装置は、典型的に単にこれらの処理動作を実行するように恒久的にプログラムされる。
実時間又は実時間に近い信号ストリーム処理は必要とされ、これには高い処理能力が必要とされる。米国特許US6,456,628は、デジタル信号プロセッサを持つ複数の回路基板が、高い処理能力を提供するために、どのように並列で利用されうるのかということを開示している。並列プロセッサの処理能力を最大に利用するために、通信のボトルネックは是正される。このため上記米国特許のデジタル信号プロセッサは、共有のバス接続に加えて、デジタル信号プロセッサの選択された対の間での局部(一つのプロセッサから一つのプロセッサへの)通信接続を有する。更に、それぞれのデジタル信号プロセッサは、それ自身の外部I/Oインタフェイスをドーターボードへの共有のバスの外に有する。これは、デジタル信号処理にとって典型的なことである。通常のコンピュータでは、I/Oインタフェイスは通常前記共有のバスを介して接続されるが、デジタル信号処理システムでは、これは、大半の信号ストリームの実時間性を妨害するだろう。
動作時において、それぞれのデジタル信号プロセッサは、典型的に複雑な処理動作のそれぞれ異なる部分を実行するようにプログラムされている。典型的には、フロントエンドデジタル信号プロセッサは、信号サンプルのストリームを入力し、ストリームのそれぞれのサンプルに対して繰り返し第1処理動作を実行するようにプログラムされる。前記フロントエンドデジタル信号プロセッサは、第1処理動作の結果を、局部接続部を介して、次のデジタル信号プロセッサに渡す。該次のデジタル信号プロセッサは、第2処理動作を実行してその結果などを渡すようにプログラムされ、バックエンドデジタルプロセッサが処理された信号サンプルのストリームを出力する。
明らかに、このタイプのマルチプロセッサシステムのコストは、デジタル信号プロセッサボードの数を用途の必要に整合させることにより制御されうる。所与の用途では、プログラムのセットは、異なる信号プロセッサのために書かれ、必要な数のデジタル信号処理ボードがインストールされ、ストリームの入力及び出力は、システムのフロントエンド及びバックエンドを形成する処理ボードの外部I/Oインタフェイスに結合される。
このような信号処理システムの集積化は、直接的にみえる。単に集積回路の回路基板から回路を実現し、集積回路の入力及び出力ピンをシステムのフロントエンド及びバックエンドを形成するデジタル信号プロセッサの外部I/Oインタフェイスに接続すればよい。
しかしながら、設計コストを削減するため、一度このようなタイプの信号処理集積回路が特定の用途のために設計され製品化のための準備をされても、該設計は、関連した用途のための新しいタイプの信号処理集積回路になるように容易に変更できることが望ましい。これがもともとのタイプのプログラムを置き換えることのみに関連する限り、このような再設計は低コストになりうる。しかし、このような集積回路が再プログラムされなければならない場合、この入力及び出力がもともとの用途のために選択されたデジタル信号プロセッサに特定的に接続される場合、非効率性が生じているということが判明した。再プログラムされたアプリケーションは、フロントエンド及びバックエンド機能が特定のデジタル信号プロセッサから移動することができないならば、非効率になりうる。一方、フロントエンド又はバックエンド処理が、信号ストリームのI/O接続をもつプロセッサから移動される場合、フロントエンド及びバックエンドプロセッサへの及びプロセッサからの信号データを移送するためにデジタル信号プロセッサ間の信号のトラフィックを増加させることもまた非効率である。
図1は、概略的に集積信号処理回路を示す。この集積信号処理回路は、命令型デジタル信号プロセッサ10の配列、外部入力11a、外部出力11b、多重化回路12、及び周辺回路14を含む。デジタルプロセッサ10は、自身の最近傍プロセッサに近接相互接続を持つ(デジタル信号のプロセッサ10の2×2行列がそれぞれのデジタル信号プロセッサ10に対する2つの最近傍接続で示されるが、異なる数の近傍の接続部をもち、例えば最近傍のみ又は最近傍及び次の近傍などとなる、異なる大きさにされた行列が利用されることが理解されるだろう。)
外部入力11aは、周辺回路14を介して第1多重化回路12の第1端子に結合される。第1多重化回路12は、デジタル信号プロセッサ10のそれぞれに結合された第2端子を有する。外部出力11bは、周辺回路14を介して第2多重化回路12の第1端子に結合される。第2多重化回路12は、デジタル信号プロセッサ10のそれぞれに結合された第2端子を有する。単一の線が示されているが、実際にはそれぞれの端子は、並列の複数(例えばそれぞれのデータビットに対する複数のデータ接続部、それぞれのアドレスビットに対する複数のアドレス接続部、並びに読込/書込及び/又はイネーブル接続部のような制御接続部)の接続部を含みうると理解されるべきである。
図2は、デジタル信号プロセッサ10のアーキテクチャの例を示す。このアーキテクチャでは、デジタル信号プロセッサ10は、命令処理コア20、読込専用プログラムメモリ22、レジスタファイル24、行列における近傍のデジタル信号プロセッサ(示されていない)に結合する通信ポート25、多重化回路12(示されていない)に結合するIOポート26、及びデータメモリ28を含む[ダブルハーバードアーキテクチャ(double Harvard architecture)を利用する場合には、さらに別の係数メモリ(示されていない)を設けることができる]。IOポート26は、単一の線として示されるが、それぞれが複数の信号導線(例えば、6本のIOアドレス導線及び32本のデータ導線及び制御導線)を表すと理解されるべきである。通信ポート25は、同様に多くの導線を有しうる。命令処理コア20は、プログラムメモリ22に結合された命令フェッチ入力、ポート25,26に結合されたオペランド読込及び書込入力及び出力、並びにデータメモリ28に結合されたデータ読込/書込インタフェイスを有する。
動作において集積回路が起動された場合、信号プロセッサ10は、多重化回路12に制御データを書き込む。多重化回路のそれぞれに対する制御データ値は、デジタル信号プロセッサのプログラムメモリ22からの読込専用データにより決定される。制御データは、周辺回路14を介してデジタル信号プロセッサ10と関連する外部接続11a,bとの間の選択的接続を確立するために、各多重回路12を制御する。
続いて、デジタル信号プロセッサは、信号処理動作を実行するために、自身のプログラムメモリ22からの信号処理命令を実行する。デジタル信号プロセッサ10の第1及び第2の単一のものに対するプログラムは、第1及び第2多重化回路12それぞれに結合されたポートから及びポートへ信号データを読み込む及び書き込む命令も含む。典型的に当該回路は、これらの命令が例えば多重化回路12に接続されたようなIOポートからの読込又は書込特有の命令コードを持つ専用のIO読込及び書込命令となるように、構成されるが、しかし、代わりに該回路は、多重化ポートに対応するレジスタアドレスをもつレジスタ読込命令がIOポートにアクセスしうるように、又は、適切なアドレスが利用される場合にデータメモリ28をアドレス指定するために使用し得る、メモリがマップされた読込及び書込命令が、IOポートにアクセスしうるように、構成され得る。
デジタル信号プロセッサ10は、最近傍の近隣接続部を介しても信号データを通信するので、多重化回路12に直接読込又は書込をしないデジタル信号プロセッサも、外部入力11aでの信号値から計算された中間の信号値を用いて、信号処理動作を実施し、及び外部出力11bにおいて信号値に影響を与えることができる。
図3は、多重化回路12の一実施例を示し、該回路は、接続回路30、変換回路34、及び更新回路38を含む。それぞれの変換回路34は、デジタル信号プロセッサ10(示されていない)のそれぞれ1つのアドレス線及び制御線に結合された入力並びに接続回路30に結合された出力を有する。デジタル信号プロセッサ10(示されていない)のそれぞれ1つのデータ線は、接続回路30に直接結合される。接続回路30は、IO制御出力及び周辺回路14に結合されたデータ入出力(例えば入力あたり32ビット)を有する。接続回路30は、デジタル信号処理回路の選択可能な1つと周辺回路14との間でデータを渡すように構成される。接続回路30は、変換回路34から周辺回路14へも制御データを渡すように構成される。
単一のデータ線及び制御線が、周辺回路14に接続されて示されるが、実際は1つより多い接続が並列で備えられうるということが理解されるだろう。周辺回路14への制御線の数さえ、異なる周辺回路に対して、周辺回路14のタイプに依存して異なりうる。
動作の際、デジタル信号プロセッサ10は、最初にコンフィギュレーションデータを変換回路34に書き込む。それぞれの変換回路34は、デジタル信号プロセッサ10と周辺回路14とのそれぞれの組み合わせに対応する。それぞれの特定の変換回路34に対するコンフィギュレーションデータは、対応するデジタル信号プロセッサからのIO制御信号及び/又はデータが対応する周辺回路14と交換されるべきかどうかを指定する。もしそうであれば、特定の変換回路34に対するコンフィギュレーションデータは、対応するプロセッサ10により自身のIOポート26へ印加される場合、どの1つ又は多くのIOアドレスに、特定の変換回路34が応答すべきなのかを指定する。好ましくは、コンフィギュレーションデータもまた、対応するデジタル信号制御プロセッサ10がそれぞれのアドレスを供給する場合、特定の変換回路34が、対応する周辺回路14に供給しなければならない制御信号を指定する。
例えば、対応するプロセッサ10がそのIOアドレスを提供する場合のみ、特定の変換回路34がIOポート26からデータを渡すように、1つのIOアドレスのみが明確にされ得る。別の例では、いくつかのIOアドレスは、対応する周辺回路14に対する制御信号のそれぞれのセットとのそれぞれ組み合わせで特定され得る。例えば周辺回路14の状態レジスタからIOポート26へデータを供給するあるアドレス及び周辺回路14の信号データレジスタからIOポート26へ信号データを供給する別のアドレスである。
典型的にそれぞれのデジタルプロセッサ10は、周辺回路14のせいぜい1つに対する変換回路34が1つ又はそれより多くのデジタル信号プロセッサ10からのIOアドレスに応答するように、コンフィギュレーションデータを書込、異なるデジタル信号プロセッサ10は、典型的に、異なる周辺回路14に対する変換回路34が異なるデジタル信号プロセッサ10から、1つ又はそれより多くのIOアドレスに応答するように、コンフィギュレーションデータを書き込む。したがって、それぞれの周辺回路14は、デジタル信号プロセッサ10のそれぞれによりアクセスされる。しかしながら一実施例において、前記コンフィギュレーションデータは、複数のデジタル信号プロセッサ10が、それぞれ自身の指定のIOアドレスを用いて、同じ周辺回路14にアクセスするのを許可する。本実施例又は別の実施例では、コンフィギュレーションデータは、デジタル信号プロセッサ10が複数の周辺回路にアクセスすることを許可する。典型的にはこの場合、デジタル信号プロセッサ10は、異なる周辺回路14に対する変換回路34が異なるアドレスに応答するように、コンフィギュレーションデータをセットする。したがって、デジタル信号プロセッサは、異なるIOアドレスを出すことによって、異なる周辺回路をアドレス指定できる。しかしながら一実施例において、同じアドレスがコンフィギュレーションされ得、例えば異なる周辺回路からのデータの組み合わせが読み込まれなければならない。
前記実施例において示されたデジタル信号プロセッサ10は、IOポートのデータ線を介して、コンフィギュレーションデータを供給する。更新回路38は、コンフィギュレーションの更新に関連する特定のIOアドレスが供給されたかどうかを検出し、そうであれば、更新回路38は、変換回路34に、デジタル信号プロセッサ10のIOポート26からのデータで、コンフィギュレーションデータを更新する。例えば、IOポート26からの既定のIOアドレスは、IOポート26からの添付のデータが、コンフィギュレーションデータが格納されるべき1つ又はより多くのIOアドレスを表すことを、通知するよう使用され得る。状況に応じて、別の既定のIOアドレスは、IOポート26からの添付データが事前に指定されたアドレスと関連して格納されるべきコンフィギュレーションデータを表すと、通知するよう使用され得る。
コンフィギュレーションデータを書き込んだ後、信号プロセッサ10は、プログラムメモリ22からの信号処理プログラムの実行を開始する。信号処理プログラムの実行時に、デジタル信号プロセッサ10は、IO命令を実行し、その結果命令のアプリケーションがIOポート26のIOアドレスに依存することになる。IOポートに結合された変換回路34は、IOアドレスが変換回路34に対して構成されたアドレスに適合しているかどうかを検出する。もしIOアドレスが特定の変換回路34に適合するならば、変換回路34は、デジタル信号プロセッサ10と変換回路に対応する周辺回路との間で、データを通過させるように及び/又はコンフィギュレーションデータによりIOアドレスに対して規定された制御信号を通過させるように、接続回路30を制御する。
例えば、コンフィギュレーションされたアドレスに応答して、変換回路34は、接続回路30を介して読込制御データを周辺回路14に供給し、周辺回路14からIOポート26へ読込データを通過させるように接続回路30を制御する。別の例では、コンフィギュレーションされたアドレスに応答して、変換回路34は、接続回路30を介して書込制御データを周辺回路14に供給し、IOポート26から周辺回路14へ書込データを通過させるように接続回路30を制御する。
図4は、接続回路30の制御部の一実施例を示す。本実施例は、複数のORゲートを含み、それぞれが入力44a‐cのセットをもつ。3つのORゲート40は例により示されるが、ORゲートの数が周辺回路14の制御接続の数に依存することは、理解されるべきである。各ORゲートの入力44a‐cは、変換回路34のそれぞれの出力に結合される。ORゲート40の出力は、周辺回路14に結合される。したがって動作時に、周辺回路14は、異なるデジタル信号プロセッサ10に対応する、変換回路34からの出力信号の論理的ORを受信する。本実施例では、変換回路34は、コンフィギュレーションされたアドレスを受信しない場合に論理的ゼロを供給するように構成される。
特筆すべき点は、仲裁が実施されないことである。異なるデジタル信号プロセッサ10のIOポート26における同時IOアドレスによる衝突は、多重化回路12のコンフィギュレーションにより避けられ、該回路は、デジタル信号プロセッサのコンフィギュレーションされたもののみに応答する。結果として、通常の高速論理回路は、準安定状態を被る3状態のドライバ又はアービターなしで、IOポートと周辺回路14との間に利用されうる。アクセスは、1又は既定の数の周期内で実時間振る舞い及びシステムの予測可能性を確かにするよう保証される。
図5は、接続回路のデータ部の一実施例を示す。本実施例は、IOデータのそれぞれのビットに対するN対1のスイッチ42を含み(Nはデジタル信号プロセッサ10の数である)、各スイッチ42の第1側面接続48a‐dは、信号プロセッサ10のそれぞれのもののIOポートに結合される。各スイッチ42の第2側面接続は、周辺回路14に結合される。スイッチ42は、変換回路34からの制御線46を介して制御され、該変換回路は、スイッチ42が周辺回路14への変換回路34に対応するデジタル信号プロセッサ10のデータ線を、接続するかどうかを制御する。動作において、変換回路14は、デジタル信号プロセッサからのIOアドレスがコンフィギュレーションされたアドレスに適合するかどうかに依存して、選択的に制御線を稼動する。
一実施例では、スイッチ42は、2方向のスイッチング素子(示されていない)により実施される。別の実施例では、3状態ドライバが使用され得、これは、もしIOポート26におけるIOアドレスがコンフィギュレーションされたアドレスに適合するならば、読込又は書込制御信号がIOポートから受信されたかどうかに依存して、周辺回路14からデジタル信号プロセッサ10のIOポート26へ、又はその逆に信号を駆動する。通常、仲裁回路は、1つより多くのデジタル信号プロセッサ10が、同じ周辺回路14に同時に書き込むということ、又は1つより多い周辺回路14が、同じ信号プロセッサ10に同時に接続されるということ、を排他的に提供せず、信号プロセッサは横並びで動作し、そのような衝突が起きない、又は起きたとしても、損傷を与える影響のない結果になるようにプログラムされる。
しかし、他の一実施例では、別の読込及び書込線が、IOポート26に備えられ得る。本実施例では、論理回路は、周辺回路への書込信号及びデジタル信号プロセッサ10のIOポート26への読込信号を形成するスイッチの代わりに使用され得る。周辺回路14に対する書込信号は、例えば異なるデジタル信号プロセッサ10からのイネーブルにされたデータの論理的ORとして形成され、イネーブル化は変換回路14により制御される。読込データは、異なる周辺回路14からのイネーブルにされたデータの論理的ORとして形成され得、イネーブル化は変換回路14により制御される。
各変換回路14は、例えば異なるアドレスに対してメモリ位置を持つメモリとして実現され得る。本実施例では、デジタル信号プロセッサ10からのIOアドレスは、メモリにアドレス指定するために使用され、メモリからのデータは、制御データとして接続回路30に印加される。コンフィギュレーション時に、適切な制御データは、デジタル信号プロセッサ10により選択されたアドレスのメモリ位置に格納される。
図6は、変換回路の別の実施例を示す。本実施例は、アドレスレジスタ60、アドレス比較器62、及び制御信号発生回路64を含む。アドレス比較器62は、対応するデジタル信号プロセッサ10のIOポート26からのアドレス入力に結合された第1入力と、アドレスレジスタ60の出力に結合された第2入力とを有する。アドレス比較器62は、制御信号発生回路64に結合された出力を持つ。アドレスレジスタ60は、対応するデジタル信号プロセッサ10のIOポート26のデータ線に結合された入力及び更新回路38の出力に結合されたクロック入力を持つ。2つの比較器‐レジスタ対が示されるが、いかなる数(例えば1、2、3又はより多く)も使用されえることは理解されるべきである。
動作において、アドレスレジスタ60は、デジタル信号プロセッサ10が自身のIOポート26における既定のアドレスを出力する場合、対応するデジタル信号プロセッサ10のIOポート26のデータ線からのデータをラッチする。典型的にデータとは異なるフィールドは、異なるレジスタにラッチされる。例として32ビットデータ語とは異なる6ビットアドレスフィールドからの4アドレスは、アドレスレジスタ60においてラッチされうる。通常の動作時に比較器62は、ラッチされたアドレスを、対応するデジタル信号プロセッサ10のIOポート26から印加されたアドレスと比較する。もし適合が発生するならば、信号は制御信号発生回路64に印加され、該回路は、それに応じて周辺回路14及び/又は接続回路30に対する1つ又はそれより多い制御信号を発生させる。一実施例では、制御信号発生回路64は、信号が特定の入力において比較器から受信された場合、自身の入力のそれぞれのものに対する既定の制御信号を規定し、既定の制御信号を発生させる。別の実施例では、制御信号は更にプログラム可能になり得る。アドレス可能メモリの代わりに比較器を使用することは、追加のクロックサイクルを必要とせずに、より高速な変換が可能であるという利点を持つ。
本発明は特定の実施例を用いて説明されるが、本発明から逸脱することなく多くの変形例が可能であることを理解されるだろう。例えばデジタル信号プロセッサ10の配列は、すべてのデジタル信号プロセッサがそれぞれの周辺回路14に対するすべての多重化回路12に結合されるように示されるが、実際には、特にデジタル信号プロセッサ10の大きな配列が利用されるならば、デジタル信号プロセッサ10の複数のサブセットのみが多重化回路12に結合され得ることが理解されるだろう。例えば、もしデジタル信号プロセッサ10が行及び列の行列にしたがって相互近傍接続を持つならば、1列のデジタル信号プロセッサ10は、多重化回路のみに結合され得る。これは、信号処理プログラムの位置における柔軟性を維持するが、例えば変換回路に対して回路を節約する。どんな数のデジタル信号プロセッサ10も、いかなる可能なトポロジーにおいて使用され、接続され得るということは、理解されるだろう。
別の例として、デジタル信号プロセッサからのコンフィギュレーションデータをプログラムする代わりに、共通の制御プロセッサがコンフィギュレーションデータをプログラムするために利用され得る。マイクロコントローラの中心は、このため前記集積回路に加えられ得、コンフィギュレーションデータを多重化回路12に書き込むプログラムを実施するよう構成され得る。これは、デジタル信号プロセッサ10のプログラムが、コンフィギュレーションについてのいかなる情報も含む必要がないという利点を持つ。しかしながら、それは、マイクロコントローラの追加の接続を必要とし、入力又は出力のタスクの移動に関連するデジタル信号プロセッサ10のプログラムへの変化は、マイクロコントローラのプログラムの変化にも関連する、ということを意味する。別の実施例では、コンフィギュレーションデータは、例えば製造時に多重化回路12それ自身に恒久的にプログラムされる。
本発明は、信号処理の開始前の1度だけのコンフィギュレーションを説明しているが、動的な再コンフィギュレーションがいくつかの用途に対して提供されうることを理解されるべきである。この場合にはいくらか時間間隔をあけて信号ストリームでの第1信号処理動作を実施した後に、スイッチは、第2信号処理動作、例えばユーザコマンドに応答してつくられる。第1と第2との両方の信号処理動作を実行するプログラムは、デジタル信号プロセッサ10において供給されうる。信号処理タスクを異なる信号処理回路に分配することは、異なる動作とは異なり、その結果、信号ストリームは、第1及び第2信号処理動作の場合に異なる点でデジタル信号プロセッサ10の配列へ入る及び/又は配列から去るという場合がありえる。もしそうであれば、デジタル信号プロセッサ10は、又は共通の制御器は、デジタル信号プロセッサ10が第2信号処理動作の実行を開始する前に、好ましくは新たなコンフィギュレーションデータを多重化回路に書き込む。
好ましくは、コンフィギュレーションデータは、IOポート26からのIOアドレスが、(アドレスに応答するように1つの周辺回路のみをコンフィギュレーションすることにより、又は異なる周辺回路14に対して異なるアドレスを用いることによって)同時に単一の周辺回路14への接続となるように構成される。しかしながら、本発明から逸脱することなく、1つより多い周辺回路14を同じアドレスでアドレス指定することが可能にされ得る。このように例えばデータが一度に周辺回路14より多く書かれ得、又は、もし周辺回路14がIOポート26のデータ線の異なるサブセットを駆動するのならば、1つより多い周辺回路14からのデータの組み合わせが読まれ得る。
更に本発明は、例の実施の詳細に制限されないことが理解されるだろう。例えばいくつか又は全てのデジタル信号プロセッサ10は、1つより多いIOポートを持ちえて、この場合IOポートの一部は多重化回路の一部と接続され得、他のIOポートは他の多重化回路に接続され得る。いかなるアドレス及びデータ語幅及びインタフェイスタイプも、IOポートに対して利用され得る。
一連の信号が原則として無限の時間間隔で継続し得る場合に一連の信号値を生成又は消費するように、周辺回路14のいかなるタイプも、それ自身の専用のインタフェイスタイプで利用され得る。例えば、オーディオ入力周辺機器が使用され得、左及び右のチャネルに音声サンプル値を流す。この場合異なるIOアドレスが、左及び右のチャネルデータの読込に対応し得て、同じ制御信号で繰り返された読込は、連続するサンプリング時間点に対するサンプル値を読むために使用される。他の例では、オーディオ出力周辺機器は利用され得、又はビデオ信号入力/出力、又は周辺機器は、DCT変換回路、誤り訂正エンコーダ又はデコーダなどのような専用の処理回路であり得、同じ制御信号とともに繰り返された読込又は書込は、例えば連続的なサンプリング時間点又はイメージ位置に対するサンプル値を読み込むために使用される。それぞれが、制御信号の自身の形態を必要とし得て、これらはすべてIOポート26でそれぞれのアドレスを出すことによってデジタル信号プロセッサ10により発生される。