(57)【特許請求の範囲】
【請求項１】
デジタル信号プロセッサ（Ｐ１）であって、
ホスト・クロック周波数（ＨＣＬＫ）又はローカル・クロック周波数（ＬＣＬＫ）で動作可能な外部パラレル・ポート（１２６）と、
前記ホスト・クロック周波数（ＨＣＬＫ）と前記ローカル・クロック周波数（ＬＣＬＫ）との間で選択する手段（１２４）と、
前記外部パラレル・ポート（１２６）に結合されており、ローカル・クロック周波数（ＬＣＬＫ）の整数倍であるコア・クロック周波数（ＣＣＬＫ）で動作するコア・プロセッサ（１３２）と、
前記外部パラレル・ポート（１２６）と前記コア・プロセッサ（１３２）との間に結合されておりコマンド信号を受け取り、コア・クロック信号（ＣＣＬＫ）から遅延時間周期だけ後に前記コマンド信号をラッチする再同期回路（１９０）と、
を備えて、
前記ローカル・クロック周波数（ＬＣＬＫ）とホスト・クロック周波数（ＨＣＬＫ）とは非同期であることを特徴とするデジタル信号プロセッサ。
【請求項２】
請求項１記載のデジタル信号プロセッサにおいて、ユーザは前記外部パラレル・ポート（１２６）の動作のために、前記ホスト・クロック周波数（ＨＣＬＫ）および前記ローカル・クロック周波数（ＬＣＬＫ）のいずれかを選択することができることを特徴とするデジタル信号プロセッサ。
【請求項３】
デジタル信号処理システムであって、
各プロセッサ（Ｐｎ）が外部ポート（２８）を介して外部バス・システム（１０４）によって別のプロセッサに接続されている複数のプロセッサ（Ｐ１，Ｐ２．．．．．．．Ｐｎ）であって、各プロセッサ（Ｐｎ）の外部ポート（２８）はローカル・クロック周波数（ＬＣＬＫ）、ホスト・クロック周波数（ＨＣＬＫ）又は前記ローカル・クロック周波数（ＬＣＬＫ）若しくはホスト・クロック周波数（ＨＣＬＫ）の整数倍で動作する、複数のプロセッサ（Ｐ１，Ｐ２．．．．．．．Ｐｎ）と、
前記複数のプロセッサの中の各プロセッサと前記外部バス・システム（１０４）を介して接続されており、前記ホスト・クロック周波数（ＨＣＬＫ）で動作し、前記外部バス・システム（１０４）を介して各プロセッサ（Ｐｎ）にアクセスすることができるホスト（１００）と、
前記プロセッサ（Ｐｎ）の中の１つにホストがアクセスする際には、各プロセッサの外部ポート（２８）のクロック周波数は前記ホスト・クロック周波数（ＨＣＬＫ）で動作するように切り替えるスイッチ（１２４）と、
を備えることを特徴とするデジタル信号処理システム。
【請求項４】
請求項３記載のデジタル信号処理システムにおいて、前記ホスト（１００）と前記プロセッサ（Ｐｎ）の中の少なくとも１つとに前記外部バス・システム（１０４）を介して接続された外部メモリ（１０２）を更に含んでおり、前記メモリ（１０２）は前記ローカルクロック周波数（ＬＣＬＫ）又は前記ホスト・クロック周波数（ＨＣＬＫ）のどちらかで動作し、ホスト・アクセスの際には、前記メモリ（１０２）のクロック周波数は前記ホスト・クロック周波数で動作するようにスイッチ（１０８）で自動的に切り替えられることを特徴とするデジタル信号処理システム。
【請求項５】
請求項３記載のデジタル信号処理システムにおいて、各プロセッサの各外部パラレル・ポート（２８）の動作のクロック周波数はユーザによって制御されることを特徴とするデジタル信号処理システム。
【請求項６】
請求項３記載のデジタル信号処理システムにおいて、各プロセッサの中に配置されておりローカル・クロック（ＬＣＬＫ）とホスト・クロック（ＨＣＬＫ）とを受け取り、前記外部パラレル・ポート（２８）の動作のために一方を選択するスイッチ（１２４）を更に含むことを特徴とするデジタル信号処理システム。
【請求項７】
請求項４記載のデジタル信号処理システムにおいて、前記メモリ（１０２）のクロック周波数はマスタ・プロセッサ（Ｐ３）によってどちらに接続されるべきか制御されることを特徴とするデジタル信号処理システム。
【請求項８】
請求項３記載のデジタル信号処理システムにおいて、各プロセッサ（Ｐｎ）は前記ローカル・クロック周波数（ＬＣＬＫ）の整数倍で動作するコア・プロセッサ（１３２）を含み、前記ローカル・クロック周波数は前記ホスト・クロック周波数（ＨＣＬＫ）と非同期であり、
前記コア・プロセッサ（１３２）と前記外部パラレル・ポート（２８）との間に結合されて、コマンド信号を受け取り、コア・クロック信号（ＣＣＬＫ）から遅延時間周期だけ後に前記コマンド信号をラッチする再同期回路（１９０）を含む、
ことを特徴とするデジタル信号処理システム。
【請求項９】
バス・システム（１０４）を介してホスト（１００）に接続された複数のデジタル信号プロセッサ（ｐ１，Ｐ２……Ｐｎ）の外部ポート（２８）であって、
前記外部ポート（２８）は、ローカル・クロック周波数（ＬＣＬＫ）、ホスト・クロック周波数（ＨＣＬＫ）又は前記ローカル・クロック周波数（ＬＣＬＫ）若しくはホスト・クロック周波数（ＨＣＬＫ）の整数倍で動作し、かつ、
前記プロセッサ（Ｐｎ）の中の１つにホスト（１００）がアクセスする際には、前記外部ポート（２８）の動作を前記ホスト・クロック周波数（ＨＣＬＫ）に自動的にスイッチングするよう構成されている外部ポート。
【請求項１０】
請求項９記載の外部ポートにおいて、
前記複数のデジタル信号プロセッサ（Ｐｎ）のコア・プロセッサ（１３２）は、前記ローカル・クロック周波数（ＬＣＬＫ）の整数倍で動作し、かつ、
前記ローカル・クロック周波数（ＬＣＬＫ）は、前記ホスト・クロック周波数（ＨＣＬＫ）と非同期であることを特徴とする外部ポート。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、デジタル信号プロセッサに関し、更に詳しくは、ユニークな非同期クロッキング方式を有するデジタル信号処理システム及び方法に関する。
【０００２】
【従来の技術】
デジタル信号プロセッサ（ＤＳＰ）は、例えば、高速フーリエ変換、デジタル・フィルタリング、イメージ処理及び音声認識などのデジタル信号処理の応用例のパフォーマンスを最適化するように設計された特定用途向きのコンピュータである。デジタル信号処理の応用例は、リアルタイムでの動作、高い割り込み速度及び集中的な数値計算を特徴とするのが典型的である。更に、デジタル信号処理の応用例は、メモリ・アクセス動作の点で集中的であり大量のデータの入出力を要求する傾向を有する。従って、デジタル信号プロセッサの設計は、汎用コンピュータの場合とは非常に異なるものとなりうる。
【０００３】
典型的なデジタル信号プロセッサは、デジタル信号処理において用いられるオペランドに加えてデジタル信号処理動作の命令を記憶する少なくとも１つのメモリと、このメモリに接続されておりそのような動作を実行するコア・プロセッサとを含む。更に、デジタル信号プロセッサは、典型的には、他のプロセッサ及び／又は外部デバイスとの通信をイネーブルし、他のプロセッサ及び／又は外部デバイスとの間のデータ転送をイネーブルする周辺の入出力（Ｉ／Ｏ）デバイスを含む。コア・プロセッサは、命令に基づきオペランドへのデジタル信号処理動作（すなわち、計算）を実行する何らかのタイプの計算ユニットを含む。多くの異なる計算方式やデータ記憶及び転送方式が、デジタル信号プロセッサの速度、精度、サイズ及びパフォーマンスを最適化するように開発されてきた。
【０００４】
デジタル信号プロセッサは、一般には、１つの入力クロックの受信に基づいて動作する。この１つの入力クロックから、コア・プロセッサがこれに基づいて動作するコア・プロセッサ・クロックと、Ｉ／Ｏデバイスがこれに基づいて動作するＩ／Ｏクロックとが導かれる。入力クロックとＩ／Ｏクロックとが同じ周波数に維持されることは珍しくない。
【０００５】
コア・プロセッサのクロックがこの入力クロックの整数倍であって、コア・プロセッサがＩ／Ｏデバイスとは異なる（典型的にはそれよりも高い）クロック周波数で動作することがあり得る。Ｉ／Ｏデバイスの速度は、それに基づいて当該Ｉ／Ｏデバイスが動作する外部の信号の速度によって制限をうける。これらの外部信号の速度は、外部デバイス及びバスの物理的な制約やキャパシタンス及びインダクタンスによって制限されうる。コア・プロセッサはそのように制限されることはない。従って、コア・プロセッサは、別のより最適なクロック周波数で動作させることが好ましい。
【０００６】
デジタル信号プロセッサによっては、入力クロックに乗算してコア・プロセッサのクロックを得る比率（例えば、Ｘ２、Ｘ２．５、Ｘ３、Ｘ３．５、Ｘ４、・・・）をユーザが選択することを可能にするものがある。これによって、ユーザは、特定のプロセッサにとって最良のコア・プロセッサの周波数をある制限された範囲内で選択することが可能となる。
【０００７】
【発明が解決しようとする課題】
プロセッサの幾何学的外形が縮小するにつれて、内部的な速度経路は向上し、より高速な動作が可能になる。従って、特定のプロセッサにとって、そのプロセッサが動作することができる最適な速度は存在しない。現時点で使用可能なプロセッサにおける制限は、コア・プロセッサ周波数が使用可能な入力クロックとユーザが選択可能なコア・クロック比率とによって制限されるという点である。
【０００８】
デジタル信号処理システムにおいては、一群（すなわち、４つ、６つ又は８つ）のプロセッサが外部バス・システムによって相互接続される場合がある。ホスト・コンピュータはシステム内の各プロセッサにバス・システムを介して接続され、任意のプロセッサにアクセスすることができる。ホスト・コンピュータは、このプロセッサ群の中の各プロセッサの入力クロック周波数（Ｉ／Ｏクロック周波数）とは関係しない（非同期的に関係する）ホスト・クロック周波数で動作する。
【０００９】
ホストがいずれかのプロセッサへのアクセスを望むときには、ホスト・クロックとプロセッサのＩ／Ｏクロックとを同期させなければならず、さもなければ、非同期的なアクセスを可能にしなければならない。同期させるためには、ホストとプロセッサ群の中の各プロセッサとの間に何らかのタイプの外部同期インターフェースが必要となる。あるいは、非同期的なアクセスを提供する場合には、追加的な非同期的なプロセッサＩ／Ｏインターフェースが必要となる。現時点では、ホストを非同期的に動作してプロセッサにアクセスすることを可能にしようとする各アプローチには、複雑で高価な回路が必要となる。更に、これらのアプローチそれぞれはユーザが実現し使用するには困難であり得る。
【００１０】
本発明の一般的な目的は、プロセッサのクロッキング方式を向上させることである。
【００１１】
【課題を解決しようとする課題】
本発明のある実施例は、デジタル信号プロセッサに関する。このデジタル信号プロセッサはローカル・クロックとシステム・クロックとを受け取るが、ローカル・クロック周波数とシステム・クロック周波数とは相互に非同期である可能性がある。コア・プロセッサは、ローカル・クロック周波数の整数倍であるコア・クロック周波数で動作する。コア・プロセッサに結合された外部パラレル・ポートは、システム・クロック周波数又はローカル・クロック周波数で動作可能である。
【００１２】
本発明のある実施例では、デジタル信号プロセッサは、更に、外部パラレル・ポートとコア・プロセッサとの間に結合され入力コマンド信号を受け取り有効なときにはそのコマンド信号にラッチする再同期化回路を含む。
【００１３】
本発明の別の実施例は、デジタル信号処理システムに関する。このシステムは、各プロセッサが外部ポートを介して外部バス・システムによって別のプロセッサに接続されている複数のプロセッサを含む。ホストは、外部バス・システムを介して複数のプロセッサの中の各プロセッサに接続され、ホスト・クロック周波数で動作する。ホストは、外部バス・システムを介して各プロセッサにアクセスすることができる。各プロセッサの外部バスは、ローカル・クロック周波数若しくはホスト・クロック周波数のいずれか、又は、ローカル・クロック周波数若しくはホスト・クロック周波数のいずれかの整数倍で動作する。ホスト・アクセスの際には、各プロセッサの外部ポートのクロック周波数は、ホスト・クロック周波数で動作するように自動的に制御される。
【００１４】
ある実施例では、このシステムは、ホストとプロセッサの中の少なくとも１つとに外部バス・システムを介して接続された外部メモリ・ユニットを更に含む。このメモリもまたローカル・クロック周波数又はホスト・クロック周波数のどちらかで動作する。ホストが１つのプロセッサ又は１つのメモリ・ユニットにアクセスする際には、メモリ・ユニットのクロック周波数もまた、ホスト・クロック周波数で動作するように自動的に制御される。
【００１５】
ある実施例では、各プロセッサの外部ポートの動作のクロック周波数はユーザによって制御される。
【００１６】
ある実施例では、各プロセッサは、ローカル・クロックとホスト・クロックとを受け取り外部パラレル・ポートの動作のために一方を選択するスイッチを更に含む。ある実施例では、このスイッチはマルチプレクサを含む。
【００１７】
ある実施例では、メモリ・ユニットのクロック周波数は、それが接続されているマスタ・プロセッサによって制御される。
【００１８】
このシステムのある実施例では、システムの各プロセッサは、ローカル・クロック周波数の整数倍で動作するコア・プロセッサを含み、ローカル・クロック周波数はホスト・クロック周波数と非同期でありうる。この実施例では、各プロセッサは、コア・プロセッサと外部ポートとの間に結合されており有効なときには受け取ったコマンド信号にラッチする再同期回路を含む。
【００１９】
本発明の別の実施例は、電流信号の処理方法に関する。この方法は、バス・システムを介してホストを複数のデジタル信号プロセッサに接続するステップと、各プロセッサの外部ポートをローカル・クロック周波数、ホスト・クロック周波数又はローカル・クロック周波数若しくはホスト・クロック周波数の整数倍で動作させるステップと、１つのプロセッサのホストによるアクセスの際には各プロセッサの外部ポートの動作をホスト・クロック周波数に自動的にスイッチングするステップと、を含む。
【００２０】
ある実施例では、この方法は、各デジタル信号プロセッサのコア・プロセッサをシステム・クロック周波数と非同期であり得るローカル・クロック周波数の整数倍で動作させるステップを更に含む。
【００２１】
本発明の特徴及び効果は、添付の図面と共に読まれるべき本発明に関する以下の詳細な説明と冒頭の特許請求の範囲とから容易に理解され明らかになる。
【００２２】
【発明の実施の形態】
本発明の１つの実施例は、バス・システムによって相互接続された１群のデジタル信号プロセッサと、バス・システムを介してこれらのプロセッサの中の任意のプロセッサにアクセスすることができるホストとに関する。各プロセッサの周辺部分（periphery）はバス・システムに接続され、ローカル・クロック周波数とホスト・クロック周波数との一方で動作する。ホストはホスト・クロック周波数で動作しており、ホストがプロセッサの１つにアクセスするときには、各プロセッサの周辺部の動作クロック周波数はホスト・クロック周波数に自動的にスイッチングされる。
【００２３】
本発明の別の実施例は、コア・プロセッサを有するデジタル信号プロセッサに関する。コア・プロセッサはプロセッサの周辺部分とは非同期的に動作し得る。特に、外部パラレル・ポートなどのプロセッサの周辺部分は、ローカル・クロック周波数又はホスト・クロック周波数のいずれかで動作し、ユーザはこれら２つの間で選択することができる。デジタル・プロセッサのコア・プロセッサは、ローカル・クロック周波数の整数倍で動作する。ローカル・クロック周波数とホスト・クロック周波数とは独立に発生され相互に非同期でありうる。
【００２４】
図１は、１群のデジタル信号プロセッサＰ１−Ｐ４を含む本発明の実施例を示すブロック図である。示されているシステムは、ホスト１００とメモリ１０２とを更に含んでいる。ホスト１００、メモリ１０２及びプロセッサＰ１−Ｐ４は、バス・システム１０４によって相互に接続されている。ホストは、プロセッサＰ１−Ｐ４のそれぞれ及び外部メモリと通信する外部コンピュータを含みうる。外部メモリ１０２は、同期式ダイナミック・ランダム・アクセス・メモリ（ＳＤＲＡＭ）などのデジタル信号処理システムと動作する任意の適切な外部メモリでありうる。データの、各プロセッサへの書き込み又は各プロセッサからの読み出し、更に、メモリへの書き込み又はメモリからの読み出しが可能である。
【００２５】
好ましくは、外部バスはパイプライン式のバス（pipelined bus）として動作する。換言すると、データは、アドレスが発行されてから１、２又は３サイクル後に到達するが、これは、それぞれが１、２又は３サイクルのパイプライン遅延に対応している。アドレスはすべてのサイクルにおいて発行されうる。好ましくは、すべての信号はクロック信号の立上りエッジでサンプリングされるが、セットアップ時間及びホールド時間の要件を満足しなければならない。
【００２６】
動作の間には、ホスト１００は、バス１０４を介してプロセッサＰ１−Ｐ４又はメモリ１０２の中の任意の１つにアクセスすることができる。ホスト１００は、ホスト・クロック周波数のホスト・クロックＨＣＬＫで動作する。各プロセッサＰ１−Ｐ４は、ホスト・クロックＨＣＬＫとローカル・クロックＬＣＬＫとを受け取る。ある実施例では、後により詳細に説明されるように、ホスト・クロックＨＣＬＫとローカル・クロックＬＣＬＫとは独立に発生され相互に非同期でありうる。
【００２７】
プロセッサの内部要素を外部バス・システム１０４に結合する外部パラレル・ポートなどの各プロセッサの周辺部分ないしプロセッサの一部分は、ローカル・クロックＬＣＬＫの周波数又はホスト・クロックＨＣＬＫの周波数のどちらかで動作し得る。ある実施例では、後に説明されるように、この動作はユーザが選択可能である。同様に、メモリも、ローカル・クロックＬＣＬＫの周波数又はホスト・クロックＨＣＬＫの周波数のどちらかで動作し得る。
【００２８】
この実施例では、複数の直列終端された出力を有するバッファ１１０が、各目的地にホスト・クロックＨＣＬＫ信号を提供する。この実施例では、各目的地は、ホスト１００、各プロセッサＰ１−Ｐ４及びメモリ１０２を含む。同様に、やはり複数の直列終端された出力を有するバッファ１１２が、各目的地にローカル・クロックＬＣＬＫ信号を提供する。この実施例では、各目的地は、ホスト１００、各プロセッサＰ１−Ｐ４及びメモリ１０２を含む。各クロック信号は、バッファから出力され別々のトレースを介して提供される。これらのバッファは、各目的地に同じクロック信号のタイミングが提供されることを保証する。
【００２９】
動作の間には、各プロセッサＰ１−Ｐ４とメモリ１０２との周辺部分はローカル・クロックＬＣＬＫ周波数で動作する可能性がある。ホスト１００がプロセッサＰ１−Ｐ４又はメモリ１０２の中の１つにアクセスするときには、各プロセッサＰ１−Ｐ４の周辺部分の動作クロック周波数はローカル・クロックＬＣＬＫの周波数からホスト・クロックＨＣＬＫの周波数に自動的にスイッチングされる。同時に、メモリの動作クロック周波数もまたローカル・クロックＬＣＬＫの周波数からホスト・クロックＨＣＬＫの周波数に自動的にスイッチングされる。
【００３０】
ある実施例では、ホスト・バス・リクエスト（ＨＢＲ）又はホスト・バス・グラント（ＨＢＧ）制御信号がホストによってアサートされるときにスイッチングが生じる。このような制御信号が各プロセッサに提供されると、各プロセッサ内の内部スイッチ（図示せず）にクロック周波数をローカル・クロックＬＣＬＫからホスト・クロックＨＣＬＫへスイッチングさせる。各プロセッサに対するスイッチ内部は、マルチプレックサ又同様な装置を含む。どのようなクロック信号のスイッチングにも、グリッチの抑制（ｇｌｉｔｃｈ  ｓｕｐｐｒｅｓｓｉｏｎ）がプロセッサに求められる。たとえば、１つのクロックがローになるのを待機し、他方のクロックがローになるまでそのクロック出力をホールドし、その時点で最初のクロックを用いて出力を駆動することによってグリッチの抑制が達成できる。
【００３１】
ある実施例では、外部アナログ・スイッチ１０８がホスト・クロックＨＣＬＫ又はローカル・クロックＬＣＬＫの一方を選択してメモリをクロックする。マスタ・プロセッサＰ３は、適切な時刻においてライン１０６に沿って制御信号を提供し、アナログ・スイッチ１０８にホスト・クロックＨＣＬＫ信号を選択させ、その信号をメモリ１０２に提供する。スイッチ１０８は好ましくは低抵抗のアナログ・スイッチであり、スイッチング遅延は０．２ナノ秒未満に維持される。たとえば、スイッチは低抵抗の電界効果トランジスタである。外部スイッチ１０８に対しては、ローカル・クロックＬＣＬＫからホスト・クロックＨＣＬＫへのスイッチングはグリッチ・フリー（ｇｌｉｔｃｈ−ｆｒｅｅ）である必要はなく、その理由は、スイッチ・オーバーの間はメモリ・アクセスが生じていないからである。
【００３２】
図１に示されたシステムの別の実施例では、図１のスイッチ１０８の代わりに図２に示されている内部マルチプレクサ１２４が設けられる。このシステムは、４つのプロセッサＰ１−Ｐ４、ホスト１００及びメモリ１０２（図１を参照）を含む。図１のシステムと同様に、ホストはホスト・クロックＨＣＬＫ周波数で動作し、各プロセッサＰ１−Ｐ４の周辺部分（Ｉ／Ｏポート）は、ホスト・クロックＨＣＬＫ周波数又はローカル・クロックＬＣＬＫ周波数のどちらかに等しい周辺部分クロックＰＣＬＫ周波数で動作する。メモリ１０２は、ホスト・クロックＨＣＬＫ周波数又はローカル・クロックＬＣＬＫ周波数のどちらかに等しいメモリ・クロックＭＣＬＫ周波数で動作する。
【００３３】
図１の実施例でのように、ホスト・アクセス（メモリ又はプロセッサ）の際には、周辺部分クロックＰＣＬＫとメモリ・クロックＭＣＬＫとはホスト・クロックＨＣＬＫに自動的にスイッチングされる。このスイッチングは、各プロセッサの内部でマルチプレクサ１２４によって実行されうる。マルチプレクサ１２４は、ホスト・バスのアクセス又はグラントの際には自動的にホスト・クロックＨＣＬＫにスイッチングするように制御される。マルチプレクサ１２４の出力は、周辺部分クロックＰＣＬＫ信号とメモリ・クロックＭＣＬＫ信号とを含む。１つのマスタ・プロセッサＰ１−Ｐ４を選択して、メモリ・クロックＭＣＬＫ信号をバス１１６に沿ってメモリ１０２に提供することができる。
【００３４】
図１及び２のシステムに示されている各プロセッサは、図３に示された要素を有するように実現することができる。示されているように、ＤＳＰ１０の主な要素は、計算ブロック１２及び１４と、メモリ１６と、制御ブロック２４と、リンク・ポート・バッファ２６と、外部ポート２８と、ＤＲＡＭコントローラ３０と、命令アライメント・バッファ（ＩＡＢ）３２と、基本命令デコーダ３４とである。計算ブロック１２及び１４と命令アライメント・バッファ３２と基本命令デコーダ３４と制御ブロック２４とが、ＤＳＰ１０の主要な計算及びデータ処理機能を実行するコア・プロセッサを構成する。外部ポート２８は、外部アドレス・バス５８と外部データ・バス６８とを介して外部通信を制御する。外部ポート２８がＤＳＰ１０の周辺部分を構成する。リンク・ポート・バッファ２６が通信ポート３６を介して外部通信を制御する。ＤＳＰ１０は、好ましくは、１つのモノリシック集積回路として構成される。
【００３５】
メモリ１６は、３つの独立で大容量のメモリ・バンク４０、４２及び４４を含む。ある実施例では、各メモリ・バンク４０、４２及び４４は、３２ビットずつの６４Ｋワードの容量を有する。各メモリ・バンク４０、４２及び４４は１２８ビットのデータ・バスを有しうる。３２ビットずつの４までの連続的な整合されたデータ・ワードを、１クロック・サイクルで各メモリ・バンクとの間で転送することができる。
【００３６】
ＤＳＰ１０の要素は、効率的で高速の動作のためにバスによって相互接続されている。各バスは、バイナリ情報のパラレルな転送のために複数のラインを含んでいる。第１のアドレス・バス５０（ＭＡ０）はメモリ・バンク４０（Ｍ０）と制御ブロック２４とを相互接続する。第２のアドレス・バス５２（ＭＡ１）はメモリ・バンク４２（Ｍ１）と制御ブロック２４とを相互接続する。第３のアドレス・バス５４（ＭＡ２）はメモリ・バンク４４（Ｍ０）と制御ブロック２４とを相互接続する。アドレス・バス５０、５２及び５４のそれぞれは１６ビットの幅である。外部アドレス・バス５６（ＭＡＥ）は外部ポート２８と制御ブロック２４とを相互接続する。外部アドレス・バス５６は、外部ポート２８を介して外部アドレス・バス５８に接続されている。外部アドレス・バス５６及び５８のそれぞれは３２ビット幅である。第１のデータ・バス６０（ＭＤ０）は、メモリ・バンク４０と、計算ブロック１２及び１４と、制御ブロック２４と、リンク・ポート・バッファ２６と、ＩＡＢ３２と、外部ポート２８とを相互接続する。第２のデータ・バス６２（ＭＤ１）は、メモリ・バンク４２と、計算ブロック１２及び１４と、制御ブロック２４と、リンク・ポート・バッファ２６と、ＩＡＢ３２と、外部ポート２８とを相互接続する。第３のデータ・バス６４（ＭＤ２）は、メモリ・バンク４４と、計算ブロック１２及び１４と、制御ブロック２４と、リンク・ポート・バッファ２６と、ＩＡＢ３２と、外部ポート２８とを相互接続する。データ・バス６０、６２及び６４は、外部ポート２８を介して外部データ・バス６８に接続される。データ・バス６０、６２及び６４のそれぞれは１２８ビット幅、外部データ・バス６８は６４ビット幅でありうる。
【００３７】
第１のアドレス・バス５０と第１のデータ・バス６０とは、メモリ・バンク４０との間でのデータ転送のためのバスを備えている。第２のアドレス・バス５２と第２のデータ・バス６２とは、メモリ・バンク４２との間でのデータ転送のための第２のバスを備えている。第３のアドレス・バス５４と第３のデータ・バス６４とは、メモリ・バンク４０との間でのデータ転送のための第３のバスを備えている。メモリ・バンク４０、４２及び４４のそれぞれは別個のバスを有しているので、メモリ・バンク４０、４２及び４４へのアクセスは同時に行うことができる。ここで用いられている「データ」とは、バイナリ・ワードを意味し、ＤＳＰ１０の動作と関係する命令又はオペランドのどちらかを表す。典型的な動作モードでは、プログラム命令はメモリ・バンクの１つに記憶され、オペランドは他の２つのメモリ・バンクに記憶される。従って、計算ブロック１２及び１４には、１クロック・サイクルで１つの命令と２つのオペランドとが提供されうる。後に説明されるように、メモリ・バンク４０、４２及び４４のそれぞれは、１クロック・サイクルで複数のデータ・ワードの読み出し及び書き込みが可能であるように構成されている。各メモリ・バンクから１クロックサイクルで複数のデータ・ワードを同時に転送することが、命令キャッシュ又はデータ・キャッシュを必要とすることなく達成される。
【００３８】
制御ブロック２４は、プログラム・シーケンサ７０と、第１の整数ＡＬＵ７２（ＪＡＬＵ）と、第２の整数ＡＬＵ７４（ＫＡＬＵ）と、第１のＤＭＡアドレス発生器７６（ＤＭＡＧＡ）と、第２のＤＭＡアドレス発生器７８（ＤＭＡＧＢ）とを含む。整数ＡＬＵ７２及び７４は、異なる時刻において、整数ＡＬＵ命令を実行しデータ・アドレス発生を実行する。プログラムの実行の間には、プログラム・シーケンサ７０が、命令シーケンスのメモリ位置に従って、アドレス・バス５０、５２、５４及び５６の１つを介して一連の命令アドレスを供給する。典型的には、メモリ・バンク４０、４２及び４４の１つが命令シーケンスの記憶に用いられる。整数ＡＬＵ７２及び７４のそれぞれは、命令によって要求されるオペランドの位置に従って、アドレス・バス５０、５２、５４及び５６の１つを介してデータ・アドレスを供給する。たとえば、命令シーケンスがメモリ・バンク４０に記憶され、要求されたオペランドがメモリ・バンク４２及び４４に記憶されていると仮定する。この場合には、プログラム・シーケンサは、アドレス・バス５０を介して命令アドレスを供給し、以下で説明されるように、アクセスされた命令は命令アライメント・バッファ３２に供給される。整数ＡＬＵ７２及び７４は、たとえば、アドレス・バス５２及び５４それぞれにオペランドのアドレスを出力する。整数ＡＬＵ７２及び７４によって発生されたアドレスに応答して、メモリ・バンク４２及び４４は、データ・バス６２及び６４それぞれを介して計算ブロック１２及び１４のいずれか又は両方にオペランドを供給する。メモリ・バンク４０、４２及び４４は、命令及びオペランドの記憶に関して相互に交換可能である。
【００３９】
プログラム・シーケンサ７０と整数ＡＬＵ７２及び７４とは、外部ポート２８を介して外部メモリ（図示せず）にアクセスすることができる。所望の外部メモリ・アドレスは、アドレス・バス５６上に配置される。外部アドレスは、外部・ポート２８を介して外部アドレス・バス５８に結合される。外部メモリは要求されたワード即ちデータワードを外部データバス６８に供給する。外部データは、外部ポート２８とデータ・バス６０、６２及び６４の１つとを介して計算ブロック１２及び１４の一方又は両方に供給される。ＤＲＡＭコントローラ３０が外部メモリを制御する。
【００４０】
既に述べたように、メモリ・バンク４０、４２及び４４は、それぞれが３２ビットの６４ｋワードの容量を有している。各メモリ・バンクは、１２８ビット幅のデータ・バスに接続されうる。別の実施例では、各データ・バスは６４ビット幅であり、この６４ビットはクロック・フェーズ１及びクロック・フェーズ２のそれぞれで転送され、よって、１２８ビットの有効なバス幅を提供する。各メモリ・バンクにおいて、複数のデータ・ワードへのアクセスは１クロック・サイクルで行うことができる。特に、データへは、３２ビットずつの単一、二重（dual）又は四重（quad）ワードとしてアクセスすることができる。二重又は四重のアクセスのためには、データがメモリにおいて整合されていることが求められる。四重のデータ・アクセスへの典型的な応用例としては、高速フーリエ変換と複素（complex）ＦＩＲフィルタとがある。四重アクセスはまた、二重の正確な動作を補助することになる。好ましくは、命令は四重のワードとしてアクセスされる。しかし、以下で論じられるように、命令がメモリにおいて整合されることは求められない。
【００４１】
四重のワード転送を用いると、それぞれが３２ビットである４つの命令と８つのオペランドとを１クロック・サイクルで計算ブロック１２及び１４に供給することができる。転送されるデータ・ワード数と、これらのデータ・ワードが転送される１つ又は複数の計算ブロックとは、命令の中の制御ビットによって選択される。単一、二重又は四重のワードを、計算ブロック１２へ、計算ブロック１４へ、又はその両方へ転送することができる。二重又は四重のデータ・ワードのアクセスは、複数のオペランドが１クロック・サイクルで計算ブロック１２及び１４まで転送されるのを可能にすることにより、多くのアプリケーションにおいてＤＳＰ１０のパフォーマンスを改善する。各クロック・サイクルにおいて複数の命令にアクセスできることによって、複数の動作が各サイクルで実行されることが可能となり、これは、パフォーマンスを向上させる。オペランドが計算ブロック１２及び１４によって必要とされるよりも高速で供給されることが可能である場合には、ＤＭＡアドレス発生器７６及び７８が用いることができる残されたメモリ・サイクルが存在し、これらの使用されていないサイクルの間に、コア・プロセッサからサイクルを盗むことなく、新たなデータがメモリ・バンク４０、４２及び４４に提供される。最後に、複数のデータ・ワードへのアクセスが可能であることによって、２以上の計算ブロックを用いそれらをオペランドが供給されている状態に維持することが可能となる。単一又は二重のデータ・ワードへのアクセスが可能であることにより、四重のデータ・ワードへのアクセスがなされる構成と比較すると、電力消費を減少させることができる。
【００４２】
図３に示されたプロセッサ１０では、外部ポート２８はプロセッサの周辺部分で構成され、周辺部分クロックＰＣＬＫで動作する。ＤＳＰ１０の残りの成分は、本発明のある実施例では、後で説明されるようにローカル・クロックＬＣＬＫの整数倍であるコア・クロックＣＣＬＫで動作する。
【００４３】
図４は、プロセッサＰ１のいくつかの成分とこれらの成分の動作の基礎となるクロック信号との一部構造的な一部機能的なブロック図である。示されているプロセッサＰ１は、コア・クロックＣＣＬＫ周波数で動作するコア・プロセッサ１３２と、ローカル・クロックＬＣＬＫ周波数若しくはホスト・クロックＨＣＬＫ周波数のどちらか、又はＬＣＬＫ又はＨＣＬＫのどちらかの整数倍で動作する周辺部分１２６とを含む。周辺部分１２６は、図３に示されているように、外部データ・バス６８及び外部アドレス・バス５８と通信する外部ポート２８で構成されうる。
【００４４】
プロセッサ１３２は、ローカル・クロックＬＣＬＫ信号とホスト・クロックＨＣＬＫ信号との両方を入力として受け取る。各入力クロック信号が通過して伝搬遅延を得る遅延較正回路は図４には示されていないが、この回路については、図５を参照して後でより詳細に説明される。図１及び２を参照してすでに述べたように、これらのクロック信号は共にスイッチ１２４に与えられ、周辺部分１２６への周辺部分クロックＰＣＬＫとして一方が選択される。
【００４５】
ローカル・クロックＬＣＬＫ信号は、周波数乗算器１２８にも提供される。周波数乗算器１２８はローカル・クロックＬＣＬＫとユーザによって選択された比率とを乗算して積を出力するのであるが、この積が、ライン１３０を介してコア・プロセッサ１３２に与えられるコア・クロック信号ＣＣＬＫである。周波数乗算器は、例えば、Ｘ２、Ｘ２．５、Ｘ３、Ｘ３．５、Ｘ４の比率を含み、この中の１つがユーザによって選択されコア・クロックＣＣＬＫを生じる。
【００４６】
本発明のこの実施例によって、コア・プロセッサ１３２の動作周波数を周辺部分１２６の動作周波数とは独立に最適化することが可能となる。周辺部分１２６の動作周波数は、この周辺部分が外部パラレル・ポートで構成されている場合には、外部バスによって制限されうる。しかし、このような制限は、コア・プロセッサの速度に影響しない。また、本発明によると、周辺部分の動作周波数をコアの動作周波数とは独立に最適化することが可能となる。
【００４７】
すでに述べたように、ホスト・クロックＨＣＬＫとローカル・クロックＬＣＬＫとは独立に発生され、相互に非同期であり得る。例えば、ホスト・クロックＨＣＬＫは６６ＭＨｚであり、ローカル・クロックＬＣＬＫは１００ＭＨｚであり得る。周辺部分１２６は、ローカル・クロックＬＣＬＫで動作するときには、コア・プロセッサ１３２と同期して動作しているように見える。上述したように、図１及び２を参照すると、ホスト・クロックＨＣＬＫでの動作へのスイッチングは、ホストによるアクセス要求の際に自動的に生じる。コア・クロックＣＣＬＫはローカル・クロックＬＣＬＫと関係し、ローカル・クロックＬＣＬＫはホスト・クロックＨＣＬＫと非同期的に関係しているから、周辺部分１２６は、（ホスト・クロックＨＣＬＫ周波数で動作しているときには）コア・プロセッサ１３２と非同期的に動作しているように見える。このような動作を与えるために、非同期インターフェース（図４には示されていない）が周辺部分１２６とコア・プロセッサ１３２との間に存在する。これについては後でより詳細に説明される。
【００４８】
バスが動作する高速が与えられると、周辺部分クロックＰＣＬＫとメモリ・クロックＭＣＬＫとにおけるスキュは最小化されるはずである。更に、コア・クロックＣＣＬＫにおけるスキュは周波数乗算器において除去されるはずである。本発明のある実施例では、遅延較正ループが用いられて、不所望のスキュを較正して除去する。遅延較正回路への入力はＬＣＬＫ又はＨＣＬＫの入力クロック信号である。乗算器は、２つの間で選択することができる。好ましくは、そして、別の場合には、２つの遅延較正回路を、各入力クロック信号に１つずつ用いることもできる。
【００４９】
本発明のプロセッサと共に用いられる例示的な遅延較正回路が、図５にブロック図形式で示されている。このような遅延較正回路は、ＬＣＬＫ又はＨＣＬＫに対して用いられうる。遅延較正回路によって、プロセッサへの（又は、プロセッサからの）データのラッチが正確にクロック信号の立上りエッジにおいてなされることが保証され、配分ツリー（distribution tree）などのプロセッサ要素を介する信号の伝搬遅延が与えられる。この回路により、ラッチ制御信号が、適切なクロック信号の立上りエッジよりも遅延時間周期だけ前にアサートされる。遅延ロック・ループ（ＤＬＬ）が、入力クロック信号に類似し同相であるがクロック信号の内部入力伝搬遅延を１周期から減算した分だけ遅延している別のクロック信号を提供する。この別のクロックにより、ラッチが、与えられた伝搬遅延を有するクロック信号の立上りエッジにおいて、適切な時刻にデータをラッチ・イン又はラッチ・アウトすることが可能となる。
【００５０】
示されているように、遅延較正回路は、ＤＬＬ１３６と、遅延要素１３８と、遅延要素１４０とを含む。遅延要素１３８はＤＬＬ１３６によって出力された信号にＴ2の遅延を提供し、この遅延Ｔ２はラッチ１５８とドライバ１６０とで構成される出力駆動パッドの出力遅延に対応する。遅延１４０は、Ｔ１の遅延を信号入力に提供し、この遅延Ｔ１は１５４、１５６及び１６６に示されている配分ツリーを通過する信号の伝搬遅延に対応する。
【００５１】
ＤＬＬ１３６は、位相検出器１４２と、制御回路１４４と、インバータ・チェーン１４６とを含む。データがプロセッサの中にラッチされるときに、信号ｐｄにより、ラッチ１６４が信号ｐｄの立上りエッジにおいてデータをラッチ・インすることが可能となる。遅延回路１４０によって出力される信号ｐｄは配分ツリー１６６のそれに対応する遅延Ｔ１を有する。ＤＬＬ１３６によって、ライン１４８上のＤＬＬへの周辺部分のクロックＰＣＬＫ入力がクロック信号ｐｄと同期しておりラッチ１６４がＰＣＬＫの立上りエッジから伝搬遅延を減算したものと同期的にラッチされることが保証される。同様に、ラッチ１５８とドライバ１６０とをイネーブルするものを含む出力駆動パッドに提供された信号は入力クロックの立上りエッジと同期しており、適切な遅延を与える。このように、実際のラッチ制御信号は、入力であっても出力であっても、当初の入力クロック周期から配分ツリー及び／又は出力パッドとは無関係にそれに与えられた適切な遅延を減算した時点よりも１クロック信号周期分だけ後にアサートされる。
【００５２】
図６は、本発明の各プロセッサ内部で用いられる例示的な外部ポート・ブロック２８のブロック図である。記載されているように、外部ポート２８は、相互に非同期であるローカル・クロックＬＣＬＫ又はホスト・クロックＨＣＬＫに等しい周辺部分クロックＰＣＬＫで動作する。外部ポートは、外部データ・バス６８（この実施例では、６４ビット幅）を介してデータを受信及び送信し、アドレス・バス５８（この実施例では、３２ビット幅）を介してアドレスを受信及び送信する。
【００５３】
異なる（マスタ）プロセッサから受け取られたコマンドに基づき、（スレーブ）プロセッサによって、多くの動作を実行することができる。これらの動作は外部ポート・ブロックを介して通信される。これらの動作はスレーブ・プロセッサからのデータの読み出しとマスタ・プロセッサへのデータの書き込みとを含む。多数の異なる読み出し及び書き込み動作が入手可能である。入手可能なこれらの特定の読み出し及び書き込み動作は特に本発明の一部を形成することはないが、本発明によるクロッキング方式を用いることの効果を説明するのに役立つ。
【００５４】
示されているように、外部ポート・ブロックは、入力先入れ先出し（ＦＩＦＯ）バッファ１７０、出力ＦＩＦＯ１７２及び出力バッファ１７４を含む。入力ＦＩＦＯ１７０、出力ＦＩＦＯ０７２及び出力バッファ１７４は、図３を参照して既に説明されたように、マルチプレクサ及びドライバ・ブロック１７６を介して内部データ・バス６０、６２、６４及び５６と通信する。
【００５５】
本発明の外部ポート・ブロックはコア・プロセッサと非同期的に動作し得るので、読み出しであっても書き込みであっても受信されたコマンド信号が有効であり適切な時刻にラッチ・インされることを保証するのに、再同期回路が用いられる。コマンド信号は、クロック信号の立上りエッジにおいてラッチ・インされなければならない。コマンドは、外部ポート・ブロックによって受け取られると、そこでラッチされる。そして、図７に示された再同期ラッチ回路１９０を介して提供される。
【００５６】
例として、書き込み動作及び読み出し動作が、図７を参照しながら次に説明される。書き込み動作の間には、書き込みコマンドがマスタ・プロセッサからスレーブ・プロセッサに提供される。マスタ・プロセッサは、書き込まれるべきデータのアドレスと書き込まれるべき実際のデータとをその出力ＦＩＦＯ１７２にプット（ｐｕｔ）する。書き込まれる側のスレーブ・プロセッサは、マスタ・プロセッサから受け取られたアドレスとデータとをその入力ＦＩＦＯ１７０にプットする。
【００５７】
読み出し動作の間には、読み出しコマンドがマスタ・プロセッサからスレーブ・プロセッサに提供される。マスタ・プロセッサは、（データが読み出されるべき場所からの）アドレスをその出力ＦＩＦＯ１７２にプットする。スレーブ・プロセッサは受け取られたアドレスをその入力ＦＩＦＯ１７０にプットする。データは、いったん読み出されると、スレーブ・プロセッサの出力バッファ１７４にプットされ、スレーブ・プロセッサは出力ＦＩＦＯ１７２をバイパスする。
【００５８】
書き込みコマンド信号などのコマンド信号が受信されると、再同期ラッチ回路１９０が、そのコマンド信号が有効であると認められる前に遅延を生じさせ、そう認められた時点で入力ＦＩＦＯ１７０へのデータの書き込みが実行される。まず最初に、書き込みコマンド信号が、コア・クロックＣＣＬＫ信号の立上りエッジにおいてアービトレーション・ラッチ１９２によってラッチされる。次に、書き込みコマンド信号が、遅延時間周期であるｔだけ後にコア・クロックＣＣＬＫの立上りエッジにおいてラッチ１９４によってラッチされる。ある実施例では、この時間周期ｔは３ナノ秒に等しくすることができる。アービトレーション・ラッチは非常に高速であると考えるべきである。次に、遅延ｔは、コマンド信号が第２のラッチによってラッチされる前に生じ、それによって、コマンド信号は適切な動作が実行されるまで有効であると見なされる。この実施例では、ラッチ１９４の出力がＤフリップフロップ１９６をクロックし、Ｄフリップフロップ１９６がコンパレータ１９８を制御して動作を開始させる。しかし、本発明はそのように限定されるわけではない。
【００５９】
第２のラッチがコマンド信号にいったんラッチすると、動作が実行されうる。この実施例では、書き込みカウンタ２００の内容がコンパレータ１９８によって読み出しカウンタ２０２の内容と比較される。書き込みカウンタ２００は、入力ＦＩＦＯ１７０における位置が書き込みされる度に更新される。同様に、読み出しカウンタ２０２は、ある位置が読み出される度に更新される。書き込みカウンタ２００の内容が読み出しカウンタ２０２の内容と等しいときには、書き込みポインタは読み出しポインタと同じ位置を指し、指された位置が空であることを示している。従って、その位置にデータを書き込むことができる。ここで示され説明されたもの以外の方法を、この目的のために用いることもできる。
【００６０】
示されているように、入力ＦＩＦＯに対しては、書き込みカウンタ２００はホスト・クロックＨＣＬＫによって制御され、読み出しカウンタ２０２はローカル・クロックＬＣＬＫによって制御される。再同期ラッチが入力ＦＩＦＯに結合されているように示されてきたが、同様の回路を出力ＦＩＦＯに対して同じように用いることができる。出力ＦＩＦＯ（図示せず）のためには、書き込みカウンタはコア・クロックＣＣＬＫによって制御され、読み出しカウンタはホスト・クロックＨＣＬＫによって制御される。
【００６１】
以上で本発明の少なくとも１つの実施例を説明したが、この技術分野の当業者にとっては、様々な変更、修正及び改良が容易である。このような変更、修正及び改良は、本発明の精神と範囲とに含まれることが意図されている。従って、以上の説明は単に例示に過ぎず、制約を意図してはいない。本発明は、冒頭の特許請求の範囲及びその均等物とによって定義されたものだけによって画定される。
【図面の簡単な説明】
本発明をよりよく理解するために、添付の図面を参照する。
【図１】  本発明の１つの実施例による１群のプロセッサを含むシステムのブロック図である。
【図２】  図１に示されたシステムの別の実施例のブロック図である。
【図３】  本発明と共に用いることができる例示的なプロセッサの内部要素のブロック図である。
【図４】  いくつかのプロセッサの要素とこれらの要素の動作の基礎となる異なるクロック信号との一部機能的な一部構造的なブロック図である。
【図５】  本発明のプロセッサと共に用いることができる例示的な遅延較正回路のブロック図である。
【図６】  本発明のプロセッサの内部で用いることができる例示的な外部ポート・ブロックのブロック図である。
【図７】  本発明のプロセッサの内部で用いることができる再同期回路の一部機能的な一部構造的なブロック図である。
【図１】
0004303417.tif 000002
【図２】
0004303417.tif 000003
【図３】
0004303417.tif 000004
【図４】
0004303417.tif 000005
【図５】
0004303417.tif 000006
【図６】
0004303417.tif 000007
【図７】
0004303417.tif 000008