(57)【要約】【課題】  アーキテクチャがスイッチマトリクスを使ってアレイ要素間で出されるフレキシブルなデータを許可する。これはその装置がアレイを再構築せずに、無線通信ソフトウェアで同時に要求された多くの様々なアルゴリズムを作動させることができるようにすること【解決手段】  第１の方向に走る第１のバスと前記第１の方向とは反対の第２の方向に走る第２のバスとを含む複数のバスペアと、該複数のバスペアのいずれかの第１のバスと第２のバスとの間に接続された複数の要素と、前記複数のバスペアに接続された複数のスイッチマトリクスとを有し、前記複数のスイッチマトリクスのそれぞれは、複隣のうちの第１のバスペアの第１のバスと、第１のバスペアに隣接する第２のバスペアの第２のバスとを選択的に接続するプロセッサアーキテクチャ。【選択図】  図２
2008226275.tif 000002
【特許請求の範囲】
【請求項１】
第１の方向に走る第１のバスと前記第１の方向とは反対の第２の方向に走る第２のバスとを含む複数のバスペアと、
該複数のバスペアのいずれかの第１のバスと第２のバスとの間に接続された複数の要素と、
前記複数のバスペアに接続された複数のスイッチマトリクスとを有し、
前記複数のスイッチマトリクスのそれぞれは、複隣のうちの第１のバスペアの第１のバスと、第１のバスペアに隣接する第２のバスペアの第２のバスとを選択的に接続するプロセッサアーキテクチャ。
【請求項２】
前記プロセッサアーキテクチャは、前記複数のバスペアとは異なる方向の別のバスペアを有し、前記一のスイッチマトリクスは前記第２のバスを前記別のバスペアの２つのバスに選択的に接続する請求項１記載のプロセッサアーキテクチャ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はプロセッサアーキテクチャに関し、特に異なる規格で動作する通信装置のような広範囲の装置で使用可能なものである。
【背景技術】
【０００２】
デジタル通信の分野において、できるだけ多くの機能をアナログ領域からデジタル領域に変えることが行われてきた。そして、これは信頼性の向上、製造の容易さとデジタル回路の性能の向上、ＣＭＯＳ集積回路の価格の低下により進められてきた。今日、アナログ−デジタル及びデジタル−アナログ変換器(ＡＤＣ、ＤＡＣ)はできるだけアンテナに近接するように設置され、ベースバンド処理のみならず今では中間周波数処理(IF)の一部を扱うデジタル処理を行う。
【０００３】
同時に、マイクロプロセッサの能力は非常に向上していて、多くの狭帯域通信システムの処理の大半がソフトウェアにより処理されている。一例として、PCや家庭用電化製品におけるソフトウェアモデムの普及があげられ、十分な処理能力のある汎用プロセッサがすでにシステムに存在していることが一つの理由である。ワイアレス通信の分野において無線通信ソフトウェアの分野での幅広い研究がされており、例えばブロードバンド通信システムの物理層はとても大きな処理能力を必要とし、第三世代(３Ｇ)モバイル通信の真の無線通信ソフトウェアを実装する能力が、今日のＤＳＰプロセッサがそのタスクに専念したとしてもその能力を超えてしまっている。
【０００４】
にもかかわらず、無線通信ソフトウェアの必要性が高まっている時代は今までにない。第二世代(２Ｇ)携帯電話が導入されたとき、それらの運用は特定の国や地域に制限されていた。また、主なマーケットはビジネスユーザであり、ハンドセットに対するプレミアを支配できた。今日、米国の様々な２Ｇ規格や異なる周波数バンドに関わらず、地域的、国際的ローミングが可能になり携帯電話産業は数千万に及ぶ二重、三重のバンドの電話を販売している。数年間の３Ｇモバイルの国際基準を作ろうという試みの後、３つの異なるエアーインタフェースができた。ＧＳＭ（ＵＭＴＳ）を置き換えるためのインタフェースは周波数分割二重(ＦＤＤ)と時間分割二重(ＴＤＤ)オプションの両方を持つ。加えて、特に米国では、３Ｇシステムは多くの２Ｇシステムをサポートすることができなければならない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
多くのＤＳＰプロセッサは３Ｇエアーステイションの計算要求も扱えるように開発されつつあるが、携帯電話の要求にあうことを保障するためには多くのハードウェア周辺機器を使う必要があるものばかりである。この理由として電力とコストとサイズがあげられる。これら３つすべて以下の要素により相互に関係付けられ制御される。
【０００６】
１．メモリの必要性。従来のプロセッサアーキテクチャは処理されているプログラムとデータをストアするメモリが必要である。並列の超長命令語(ＶＬＩＷ)や単命令複数データ(ＳＩＭＤ)アーキテクチャにおいても、すべてのプロセッサがタスク間の中間結果を保持するためのメモリを使って一度に1つのタスクに割り当てられる(例えばフィルタ、ＦＦＴ、ビタビデコーディング)。さらに、速い局所的な命令とデータキャッシュが必要となる。要するに、これは解決法のサイズとコストを増加させ、電力の浪費をさせる。ハードワイヤードなアーキテクチャでは通常、データは１つの機能ブロックから別の機能ブロックに直接転送され、データが通過する各機能ブロックはデータにＤＳＰ機能を施す。これにより、要求されるメモリの量を最小にする。
【０００７】
２．データのバンド幅。ハードワイヤードな解決法において、もし機能ブロックの中に小さなローカルＲＡＭが必要なら、すべてのデータは局所的に保持される。数ダースの小さなＲＡＭを持っているトランシーバもあり、それぞれのＲＡＭごとに要求されたデータのバンド幅は比較的小さいが、すべてのデータのバンド幅は膨大である。同じ機能をプロセッサで動くソフトウェアに実装すると、同じグローバルメモリがすべてのデータに使われ、要求されたデータのバンド幅は膨大なものになる。この問題の解決方法はたいていマルチプロセッサアレイにローカルメモリの導入を必要とするが、むしろ異なるプロセッサでのデータの重複とダイレクトメモリアクセス(ＤＭＡ)を通したプロセッサ間のデータ転送のタスクが増え、結果的にはシリコン領域とコストが増えてしまう。
【０００８】
３．生の処理能力の必要性。今日のＤＳＰプロセッサにおいて、処理のスループットの向上はより小さな製造過程デザインの組合せ、パイプライン化やよりたくさんの実行ユニットの追加によって達成される(例えば演算論理ユニットや乗数アキュムレータ)。製造過程における向上はすべての解決法に開放されていて、従来のＤＳＰプロセッサだけの特別なものではない。その他の２つの方法は、単に性能向上をもたらす外部のハードウェアによるものではなく、制御の複雑さによる必然的な増加によって、どちらも面積と電力が増加し、かなりのオーバーヘッドを伴う。
【課題を解決するための手段】
【０００９】
この発明のプロセッサアーキテクチャはデータフローアーキテクチャとも呼ばれる広範囲の分野に分類されるが、ソフトウェアの要求を扱う上でいくつかの重要な相違点がある。実際、この発明はＤＳＰプロセッサよりもハードワイヤードなアーキテクチャに類似する解決法を提供するもので、サイズや電力によい結果を出す。それはスイッチマトリクスによって接続されたプロセッサとメモリ要素のアレイからなる。
【００１０】
本発明によれば、以下を含むプロセッサアーキテクチャが提供される：
多数の第１のバスペア；それぞれの第１のバスペアはそれぞれ１番目の方向（例えば、左から右）に走る第１のバスとそれぞれ１番目とは反対の２番目の方向（例えば、左から右）に走る第２のバスを含む、
多数の第２のバスペア；それぞれの第２のバスペアはそれぞれ３番目の方向（例えば、上から下）に走る第３のバスとそれぞれ３番目とは反対の４番目の方向（例えば、下から上）に走る第４のバスを含む、
多数のスイッチマトリクス；それぞれのスイッチマトリクスは第１のバスペアと第２のバスペアの交差点に置かれている、
アレイに配置された多数の要素；それぞれの要素はそれぞれ第１のバスか第２のバスからデータを受け取り、それぞれ第１のバスか第２のバスにデータを転送する。
【００１１】
好ましくは、アレイの要素は受け取ったデータで演算する処理要素と受け取ったデータを保存するメモリ要素を含む。
【００１２】
好ましくは、アレイの要素は演算論理ユニットと乗数アキュムレータの両方または一方を含む。
【００１３】
好ましくは、アレイの要素はさらにプロセッサの外部からデータを入力したりプロセッサの外部にデータを転送したりするためのインタフェース要素を含む。
【００１４】
好ましくは、アレイのそれぞれ要素があるの第１のバスペアの第１のバスと隣り合った第１のバスペアの第２のバスの間を接続していて、あるの第１のバスペアの第１のバスからデータを受け取るための第１の入力、第１のバスペアの第１のバスへデータを転送するための第１の出力、隣り合った第１のバスペアの第２のバスからデータを受け取るための第２の入力、隣り合った第１のバスペアの第２のバスへデータを転送するための第２の出力を持っている。
【００１５】
好ましくは、それぞれのスイッチマトリクスが第１のバスペアのバスのデータがその第１のバスペアの他のバスと、それぞれ交差する第２のバスペアのどちらかまたは両方のバスのどちらかまたは両方に移されることを許可し、第２のバスペアのバスのデータがそれぞれ交差する第１のバスペアのどちらかまたは両方のバスに移されることを許可し、その第２のバスペアのほかのバスには移されることは許可しない。
【００１６】
好ましくは、隣り合ったスイッチマトリクスのそれぞれのペア間にある第１のバスペアのそれぞれのバスに接続された多数のアレイ要素（最も好ましいのは、４個）。
【００１７】
この発明の好ましい実施例によるアーキテクチャは、グローバルメモリを持たないことにより、電力消費において大きな利点をもたらす。
【００１８】
アーキテクチャがスイッチマトリクスを使ってアレイ要素間で出されるフレキシブルなデータを許可する。これはその装置がアレイを再構築せずに、無線通信ソフトウェアで同時に要求された多くの様々なアルゴリズムを作動させることができることを意味する。
【００１９】
さらに、データがメモリに書き込まれずに、ひとつのアレイ要素から他のものへ直接渡される。これはメモリ要求がハードワイヤードなアーキテクチャのものと同じくらい低いことを意味する。
【００２０】
さらに、膨大な数の単純なアレイ要素があり、それぞれが限られた数の演算をするので、低い制御オーバーヘッドによりサイズと電力浪費が削減される。
【発明を実施するための最良の形態】
【００２１】
図１にはプロセッサアーキテクチャ１０の構造の一部が示されている。この装置はアレイ要素２０からなっていて、バスやスイッチでつながれている。
【００２２】
このアーキテクチャには図１に水平方向に走るように図示された第１のバスペア３０があり、それぞれのペアはデータを図1の左から右へデータを運ぶ第１のバス３２と右から左へデータを運ぶ第２のバス３６を持つ。
【００２３】
このアーキテクチャには図１に垂直に描いて示された第２のバスペア４０もあり、それぞれのペアは図1の上方向にデータを運ぶ第３のバス４２と下方向にデータを運ぶ第４のバス４６を持つ。
【００２４】
図1において、それぞれのダイアモンド接続部５０はアレイ要素２０をバス３２、３６に接続するスイッチを表している。さらにアレイは第１のバスペア３０、第２のバスペア４０のそれぞれの交差点にスイッチマトリクス５５を持つ。
【００２５】
データバスはここでは６４ビットバスとして表されるが、３２ビットで足りるアプリケーション分野もある。それぞれのアレイ要素は以下のいずれかであるように設計できる：
演算論理ユニット(ＡＬＵ)または乗数アキュムレータ(ＭＡＣ)を持つ実行アレイ要素；
ＲＡＭを持つメモリアレイ要素；
プロセッサと外部装置を接続するインタフェースアレイ要素；又は
少なくとも１つのスイッチマトリクス５５の演算を操作するスイッチ制御アレイ要素。
【００２６】
これらのそれぞれを以下に詳細に説明する。
【００２７】
図２は図１のアーキテクチャの一部を拡大して、６つのアレイ要素２０Ａ〜２０Ｆを示したものである。それぞれのアレイ要素はそれぞれ反対方向にデータを送る２つの６４ビットのバス３２、３６に接続されている。(図１に示されるように)４つのアレイ要素ごとに、水平バスは上向きと下向きの２つの垂直バス４２、４６に結合されている。ビット幅と垂直バス間隔の選択はこのアーキテクチャに欠かせないものではないが、これらの寸法が現在のところ好ましい。
【００２８】
それぞれのスイッチ要素５０は２対１のマルチプレクサで、２つの入力のうちどちらかが出力に現われるように制御可能である。このようにして、アレイ要素からの出力データがバスに転送され、すでにバス上にあるＡＮＤ／ＯＲデータが通過を許可される。
【００２９】
スイッチマトリクス５５はそれぞれの入力のいずれかが出力となる４つの４対１マルチプレクサ５０１、５０２、５０３、５０４を持つ。
【００３０】
マルチプレクサ５０１の入力はバス３２、３６、４２の入力接続部３２ａ、３６ａ、４２ａとグランドにそれぞれ接続され、出力はバス４２に接続される。
【００３１】
マルチプレクサ５０２の入力はバス３２、３６、４６の入力接続部３２ａ、３６ａ、４６ａとグランドにそれぞれ接続され、出力はバス４６に接続される。
【００３２】
マルチプレクサ５０３の入力はバス３２、３６、４２、４６の入力接続部３２ａ、３６ａ、４２ａ、４６ａにそれぞれ接続され、出力はバス３６に接続される。
【００３３】
マルチプレクサ５０４の入力はバス３２、３６、４２、４６の入力接続部３２ａ、３６ａ、４２ａ、４６ａにそれぞれ接続され、出力はバス３２に接続される。
【００３４】
このようにスイッチマトリクス５５において、下向きバス(例えば図２のダイアグラムのトップから入ってきているもの、つまり第４のバス４６)を上向きバス(第３のバス４２)のソースとして使えない時や同様に上向きバス(第３のバス４２)を下向きバス(第４のバス４６)のソースとして使えないときのような例外を除いて、どれかのバスの入力がどれかのバスの出力データのソースとして使われている。
【００３５】
これらの例外は実際には有用でない筋書きを表現している。しかしながら反対に、左のバスを右のバスの潜在的なソースやその逆として持つことは有用である。アレイ要素２０Ｂからアレイ要素２０Ｅにデータをルーティングするときなどが例としてあげられる。
【００３６】
上記のとおり、各マルチプレクサ５０１、５０２の入力の１つはグランドに接続されている。これは、６４バスラインそれぞれに０の値が接続されていることである。これについては、後で更に説明するように、電力削減方法の一部として使われている。
【００３７】
マルチプレクサ５０１、５０２、５０３、５０４はそれそれ２つの制御ラインの信号で制御できる。これは２ビット制御信号がマルチプレクサに入る４つの入力のうちどれが出力として出てくるかを決定しているということである。
【００３８】
図３は図１の左上部分の図であり、左−右バス３２へつながる入力がないとき使われるスイッチマトリクス５６や左−右バス３２や下向きのバス４６へつながる入力がないとき使われるスイッチマトリクス５７の構造を示している。
【００３９】
スイッチマトリクス５６は３つの４対１マルチプレクサ５０５、５０６、５０７を持ち、スイッチマトリクス５７は３つの４対１マルチプレクサ５０８、５０９、５１０を持つ。アレイの中間のスイッチマトリクスに比べて、マルチプレクサ５０５、５０８、５０９への入力バスの数は１つ少なく、それは左から入ってくる入力バスがないためである。同じように、マルチプレクサ５１０への入力として左から入ってくる入力バスがないが、この場合は開放された入力バスは０に接続される。これはマルチプレクサ５０７にも同様だが、この場合はスイッチマトリクスの上部から入ってくる入力バスもないので、このマルチプレクサは入力が３つしかない。
【００４０】
アレイのコーナにおいて、マルチプレクサ５０６で上や左からの入力バスが用意されてないので２つの入力しかない。同様の配置がアレイの左下、右上、右下のコーナでも見られる。
【００４１】
図４は図１の上端部分の図であり、下向きのバス４６への入力接続部がないときに使われるスイッチマトリクス５８を示している。
【００４２】
スイッチマトリクス５８は２つの４対１マルチプレクサ５１１、５１２を持つ。マルチプレクサ５１１、５１２で利用できる入力バスは２つ少ないが、マルチプレクサ５１１の場合は入力バスが０の値に接続されている。同様の構造がアレイの下端のマルチプレクサにも見られる。
【００４３】
データ転送は３つのステージとみなされる。１番目は、アレイ要素がデータを適切な出力にする。
【００４４】
２番目に、適切なスイッチマトリクスのマルチプレクサを必要な接続をするように切り替える。
【００４５】
３番目に、行先要素がデータをロードする。
【００４６】
これらの段階は別々のアレイ要素によって制御されている：つまり、１番目と３番目はそれぞれソースと行先要素によって、２番目は特別なスイッチ制御アレイ要素によって制御される。これらは一定の間隔でアレイに組み込まれていて、それらが制御するスイッチのマルチプレクサに制御ラインで接続されている。それぞれのアレイ要素は直近のマルチプレクサを制御し、この制御は個々の１６ビットフィールド上で別々に行われる。これによりいくつかのアレイ要素が、バスの異なるフィールドを使っている時に、バス上のデータを同時に調達することができる。これは特に、ビタビアルゴリズムの加算−比較−選択(ＡＣＳ)のような機能に有効である。水平バスと垂直バスの交差するノードでの切り替えは、６４ビットバス全体とそれと関連する制御信号によってなされる。
【００４７】
明らかに、ソース、切り替え、ロードの３つ演算はそれぞれ独立して制御されるが、同期化する必要がある。これはすべてのデータ転送演算を、あらかじめプログラムがコンパイルされアレイに割り付けられたときに決められた一連のサイクルに制限してしまうことで達成される。汎用プロセッサにおいては、この制限は煩わしいものだろうが、この発明の多くのアプリケーションに実際に役に立つ。
【００４８】
上記のとおり、さまざまなタイプのアレイ要素があるが、すべて３つの基本的なルールに従う。
【００４９】
第1に、アレイの左右のバスを接続する入力と出力のポートを持っていること。
【００５０】
第２に、接続されたバスの転送のサイクルに同期化されたプログラムを実行すること。実際には、これはたいていそれぞれのアレイ要素が一定のパターンでバスにアクセスするプログラムループを実行しなければいけないということである。この一定パターンは例えば４、８、１６、３２のように２の累乗のクロックサイクルの継続時間を持つ。
【００５１】
第３に、アレイ制御プロトコルとして知られる特別な制御サイクルの間にバスに現れる情報を解釈しなければならない。
【００５２】
これらのルールの結果、通常はすべてのアレイ要素が実行したプログラムはアレイ要素と一緒にローカルメモリに格納される。実際のところ、たいていプログラムは１つのループを持っている。新しい命令とともにアレイ要素を再ロードできるが、これは実行をとめて上で述べられた制御サイクルを使ってアレイ要素にある命令を再ロードしなければならない。アレイ要素には自発的に外部の命令をフェッチする手段がない。
【００５３】
すべてのアレイ要素はデータ駆動型である。つまり、アレイ要素はデータが届いたときだけプログラムの命令を実行できる。
【００５４】
実行アレイ要素には、乗数アキュムレータ(ＭＡＣ)アレイ要素と演算論理ユニット(ＡＬＵ)アレイ要素の２つのタイプがある。これらは目標のアプリケーションにほぼ正確な割合で他のアレイ要素と一緒にアレイに入っている。さいわい、多くのアレイアプリケーションはほぼ同じ割合を要求する。図５は通信用トランシーバに最適な割合で２５６個のアレイ要素を含むアレイの例である。図５のアレイには水平バスは示されておらず、垂直バスの各ペア４０はそれぞれ１本の線で示されている。
【００５５】
ＭＡＣ、ＡＬＵ、メモリ、スイッチ制御アレイ要素のみならず、図５のアレイ例は３つのインタフェースアレイ要素８０、８１、８２を持っている。アレイ要素８０、８１はアナログ部分のデータの入出力に使われており、アレイ要素８２はマイクロプロセッサとのインタフェースである。４つのスイッチ制御アレイ要素８３ａ〜８３ｄはそれぞれアレイの４分の１のスイッチマトリクスを制御する。例えば、スイッチ制御アレイ要素８３ａは図５の８４のような上位４列のアレイ要素を接続した水平バスのスイッチマトリクスを制御する。
【００５６】
図６はスイッチ制御アレイ要素の好ましい実施例を示している。これはコントローラ９４とＲＡＭ９５からなり、ＲＡＭをロードする方法とともに、以下に書かれるアレイ制御プロトコルを使って、ＲＡＭからのデータを順序づける。データはマルチプレクサ９２と６４ビットレジスタ９３を使ってスイッチ制御アレイ要素と接続されたレフトバス３２かライトバス３６のどちらかからＲＡＭにロードされる。
【００５７】
スイッチ制御アレイ要素がイネーブル信号９８によって正常な動作状態にセットされている時は、ＲＡＭ９５のアドレスは最初に０にセットされて最初の１６０ビットのワードが読み出されてレジスタ９６にロードされる。それ以降それぞれのクロックサイクルごとに、ＲＡＭのアドレスは増加されて新しい１６０ビットのワードがレジスタ９６にロードされる。ＲＡＭのアドレスが１２７になると０にリセットされてこの過程が繰り返される。レジスタ９６の出力は(図１、２の)スイッチマトリクス５５のマルチプレクサの入力に直接送られ、これによりすべてのスイッチマトリクスが１２８クロックサイクルの循環パターンで制御される。前述したように、アレイのほとんどの範囲が１２８クロックサイクルよりも少ない継続時間のサイクルパターンでデータを転送しているが、１２８サイクルパターンでこれらを繰り返えすことで適応されている。
【００５８】
ＡＬＵとＭＡＣアレイ要素はアレイに対し同じインタフェースを持っていて、違いは実行ユニットとこれに関連する命令だけである。図７はＡＬＵのアレイ要素を示しており、これらのアレイへのインタフェースを述べるのに使われる。
【００５９】
図７を参照するに、それぞれ４つの１６ビットのサブレジスタ１２１ａ〜１２１ｄ、１２１ｅ〜１２１ｈ、１２１ｉ〜１２１ｌからなる３つの６４ビットレジスタがレフトバス３２かライトバス３６のどちらかにマルチプレクサ１２０を通して接続されており、このようにしてどちらかのバスからそれらにロードされる。命令ストア１２２から取り出され命令デコードユニット１２３でデコードされた命令に応じて、どれか１つの６４ビットレジスタが１クロックサイクルの間にレフトバスかライトバスに接続され、サブレジスタの組合せのどれかがロードされる。例えば、命令により６４ビットのレジスタ１２１ａ〜１２１ｄのうち、１６ビットのサブレジスタ１２１ａと１２１ｄにレフトバス３２のビット３１：０のデータがロードされる。さらに命令はレジスタのデータをＡＬＵで処理させて同じまたは異なるレジスタ１２１に戻し、その後マルチプレクサ１２６とスイッチボックス５１を通してレフトバスかライトバスでこれらのレジスタの内容を有効にする。好ましい実施例において、同じクロックサイクルの間１つの６４ビットレジスタは１つのアレイバスからのデータをロードするのに使われ、他のからのデータはアレイバスに戻され、ＡＬＵ演算はレジスタの内容について実行され、これらのタスクは命令ワードの異なる領域を使って達成される。
【００６０】
図８は図７のスイッチボックス５１の内容である。バスイン(ＢＵＳＩＮ)１３２とバスアウト(ＢＵＳＯＵＴ)１３３はそれぞれレフトバス３６かライトバス３２のセグメントである。制御信号EN[3:0]１３０とSEL[3:0]１３１はどちらも図７の命令デコードブロック１２３から送られてきたものである。これらの信号を使って、バスアウトの１６ビット領域のどれかがバスイン、アレイ要素の出力、または０と等しくされる。
【００６１】
図９も同様に、バス上でデータと結び付けられたＢＤＶＡＬ信号(以下で述べる)は、バスで転送されたりアレイ要素によってセットされたりすることが許可されている。
【００６２】
図１０はメモリアレイ要素の好ましい実施例を示している。これは上記のＡＬＵアレイ要素の同じ特徴をたくさん持っているが、さらにマルチプレクサを通してレジスタ１４０、１４１、１４２に接続されたＲＡＭ１４３を持つ。６４ビットのレジスタ１４０の１６ビットのサブレジスタＲ０〜Ｒ３はＲＡＭへのデータ入力に、６４ビットのレジスタ１４１の１６ビットのサブレジスタＲ４〜Ｒ７はＲＡＭへのアドレス入力に、６４ビットのレジスタ１４２の１６ビットのサブレジスタＲ８〜Ｒ１１はＲＡＭからのデータ出力に使われる。ＡＬＵアレイ要素の場合と同様にアドレスとデータはどちらも命令デコードユニットのもとでＡＬＵを使って処理され、レフトバス３２とライトバス３６からデータをロードする過程もまたまったく同様の方法で実行される。命令ストア１４４にストアされ命令デコードユニット１４５でデコードされた命令はＡＬＵアレイ要素の同等のユニットと比較された追加領域を持つ。この追加領域はＲＡＭからのデータの読み込みや書き込みを制御するのに使われ、これらの演算はアレイアクセスやＡＬＵ命令と同じサイクルで実行される。
【００６３】
図１０を参照するに、ＲＡＭのためのアドレスはメモリアレイ要素で内部のＡＬＵを使って計算され、６４ビットレジスタのサブレジスタにロードされることがわかる。もうひとつの方法として、アドレスは他のアレイ要素からアレイバスに提供されレジスタ１４１に直接ロードされる。
【００６４】
図５のアレイ例において、メモリアレイ要素は実行アレイ要素で作られたすべてのデータを保持し、外部のグローバルメモリはない。しかし、もしアプリケーションが大きな記憶を必要としたら、外部メモリへのアクセスは適切なインタフェースアレイ要素を使って提供される。さらに、アレイ要素が実行するプログラムの命令は一般にメモリアレイ要素には保存されなく、アレイ要素の命令ストアに保存される。命令は以下に述べるアレイ制御プロトコルを使ってアレイ要素の命令ストアのロードされる。
【００６５】
図１１はどのようにアナログ−デジタル変換器(ＡＤＣ)１５３がインタフェースアレイ要素としてプロセッサアーキテクチャに接続されているかを示している。
【００６６】
ＡＤＣは単にデータを取り出すだけなので、ＡＤＣをテストや低電力スタンバイモードに入れるように、コンフィグレーションと制御のためにこのアレイ要素にデータを供給することと、アレイ要素が出力にサンプルリングされたデータを転送する時間を制御することだけが必要である。したがって、アレイ要素１５２は実行アレイ要素やメモリアレイ要素の命令ストアやデコードユニットより単純であるが、それにもかかわらずＡＤＣ１５３に入力アナログ信号１５６をサンプリングしてサンプリングされたデータをレジスタ１５５にロードし、このデータをシーケンスにおいて構造化可能な点においてバス３２かバス３６で有効にさせるようにプログラムすることができる。
【００６７】
インタフェースアレイ要素のその他の一般的な種類はデジタル−アナログ変換器(ＤＡＣ)であり、これはＡＤＣと反対の役割をする重要なインタフェースアレイ要素である。後者はデータをアレイから汎用ホストプロセッサのバスに転送したり、ホストプロセッサからアレイに転送したりする。
【００６８】
この発明によるアレイアーキテクチャの基本的な要素はこれまで述べられてきた。しかし、多くのアーキテクチャの能力は演算の細部によってもたらされ、特にどのように物理層プロトコルで見られる一般的な計算集中型のDPSアルゴリズムに最適化されるかによってもたらされた。携帯情報端末のような電力に装置で使われるアーキテクチャを可能にする電力浪費の最小化に使われる方法とともに、これらのより詳細な説明をする。
【００６９】
多くの制御信号はアレイの６４ビットデータバスで多重送信される。すなわち：
ARRCTL(ARRay ConTroL:アレイ制御)−これはバスのデータがアレイ制御情報であることを意味する。すべてのアレイ要素はこれを解釈し、その結果に従い動作しなければならない。
【００７０】
ＢＤＶＡＡＬ(Bus Data VALid:バスデータ有効)−これはバス上に有効なデータがあることを意味する。これは電力浪費の制御の重要な信号である。
【００７１】
アーキテクチャの主要な目的に、複雑な制御のオーバーヘッドの必要性を排除することでアレイ要素のサイズを小さく保つことがあげられる。アレイ制御プロトコル(Array Control Protocol：ＡＣＰ)は以下のように使われる：
アレイが立ち上げられたら、そのすべてのアレイ要素にプログラムコードをロードする。
【００７２】
アレイ要素をスタート、ストップ、同期化させる。
【００７３】
演算中、新たなプログラムコードをアレイ要素に選択的に再ロードする。
【００７４】
それぞれのアレイ要素はアドレス指定をする固有の識別子(ＵＩＤ)を持ち、ＡＣＰはアレイ間で情報通信するためのアレイ制御ワード(ＡＣＷ’ｓ)を使う。バスのセクションのＡＲＲＣＴＬラインがハイになれば、それはバスのデータがＡＣＷであることを表す。図１２は６４ビットのＡＣＷを示す。
【００７５】
ＡＣＷがアレイ要素の接続されているバスのセクションに乗せられると、たとえ元々低電力モードであったとしてもアレイ要素はワードを調べる。ＡＣＷのアドレス領域がアレイ要素のＵＩＤと一致するかデザインされた広域アドレスと一致すると、アレイ要素はＡＣＷの関数領域を解釈して要求された行動をとる。この発明の現在好ましい実施例では、以下のような関数領域が定義されている。
【００７６】
【表１】
2008226275.tif 000003
ＡＣＷはどのアレイ要素からも作られるが、普通はアレイがマスタコントローラと言われる要素を持ちそのマスタコントローラがＡＣＷを作りだす。アレイ制御プロトコルの主要な機能は装置が起動した時にアレイ要素のプログラムストアをロードすることである。したがって、ホストプロセッサによって提供されたプログラムをロードするホストインタフェースアレイ要素はＡＣＷのソースであることが多い。
【００７７】
多くの命令駆動型のプロセッサと違い、この発明のプロセッサとそれが持つアレイ要素はデータ駆動型である。これは、命令をフェッチした結果としてデータを実行するかわりに、データを受け取った結果としてアレイ要素が命令を実行することである。
【００７８】
一度アレイ要素にプログラムがロードされスタートアレイ制御ワードを使って開始されると、その命令順序を実行し始める。それはデータをロードすることを要求する命令にたどり着くと、バスにデータがなければ(つまり制御信号ＢＤＶＡＬがロウになっていたら)データが利用可能になるまでストップして待っている。止まっている間、それは低電力スリープモードになっている。スリープモードの間、アレイ要素はデータが届いているかチェックするために止められているロード命令の領域によって決められた時間間隔ごとにバスを調べる。
【００７９】
例えば、復調器を考えてみる。ここに書かれているアーキテクチャを使った復調器では、復調器は一般にある程度要求された以上の固定されたレートでサンプリングするにＡＤＣを持っている。復調器のフロントエンドは入力データをリサンプリングする補間器を持っている。これによりデータにＡＤＣサンプルクロックを同期化させるためのアナログVOCは必要なくなったが、リサンプリングされたデータがプロセッサシステムクロックとデータ転送順序に対して不規則になってしまい、要求されたデータと“ギャップ”が生じてしまう。(実際にはＡＤＣインタフェースアレイ要素で実行されるシステムクロックへの同期化によって、ＡＤＣサンプルクロックはプロセッサシステムクロックに同期化する必要はまったくなくなる)。この発明のプロセッサアーキテクチャによって出されたデータを使うと、入ってくるデータに“ギャップ”はあり、データが利用できるようになるまで単に“スリープモードになる”ようにされる。
【００８０】
すべてのデータ転送はプログラムがコンパイルされてプロセッサに割り当てられた時に決められた順序に同期化されているから、アレイ要素は少なくとも同期化された順序の少なくとも１つにスリープしなければならないことに注意しなければならない。
【００８１】
このことは図１３に示されている。このタイミングダイアグラムにおいて、２つのアレイ要素(ＡとＢ)へのすべての転送は４サイクルの順序に同期化されている。連続する転送順序は０から５と名づけられている(ＴＲＡＮＳＦＥＲ  ＳＥＱ)。この順序において、(データバスに見られるように)アレイ要素Ａは４番目のクロックサイクルでＢは２番目のクロックサイクルでデータをロードして、ロードする時点を便宜のため信号ＬＯＡＤＲＥＱＡとＬＯＡＳＲＥＣＢのように示す。信号ＢＤＶＡＬＡとＢＤＶＡＬＢはアレイ要素ＡとＢによってロードされたデータと結び付けられたＢＤＶＡＬ信号である。要求があったのに利用可能なデータがなかったとき、つまりＢＤＶＡＬ信号がロウであったとき、この図のケースではアレイ要素Ａにデータがない順序１とアレイ要素Ｂにデータがない順序４のとき、それぞれのアレイ要素はデータが利用可能になるまでスリープモードに入る。アレイ要素のひとつがデータ利用不可能でも他の演算に影響を与えることはない。
【００８２】
明らかに、アレイ要素が何もデータを受け取らなかったら、対応するギャップが生じ、ギャップがアレイの中で連続的に生じる。しかしながら、アルゴリズムのどの時点でのおよそのギャップの割合もプログラムが書かれた時点でわかり、(例えばデータのブロックが処理される前に累算されたときのようにアルゴリズムでデータが必要になった時点で起こるようになる)ＦＩＦＯを注意して使えば、すべてのアレイは処理過程のフロントエンドで起こるギャップにロックされない。
【００８３】
ある特定のアレイ要素がデータを受け取れなかったとき、アレイ要素の小さなグループがストールするケースもある。例えば、もしアレイ要素がデータをメモリアレイ要素からロードされた係数とかけると、それから、もしデータが届かないと、メモリアレイ要素はデータを送らないようにされなければならない。これはメモリアレイ要素へのデータパスを一掃したりメモリアレイ要素にＢＤＶＡＬ信号をサンプリングさせたりすることで達成される。ＢＤＶＡＬがロウのとき、メモリアレイ要素はスリープモードに入る。
【００８４】
より詳しく説明すると、ＢＤＶＡＬ信号が制御されアレイ要素もそれに応答する方法は以下のようになる。
【００８５】
図7のＡＬＵアレイ要素を考える。ストア命令をアレイ要素が実行するごとに、アレイバスでデータが利用可能になり、ＬＯＣＡＬ_ＶＡＬＩＤとＶＡＬＩＤ_ＥＮＡＢＬＥとＳＥＬＥＣＴ信号(図９の１２８ａ)をセットし、スイッチボックス５２のひとつ1クロックサイクルごとにＢＤＶＡＬ_ＯＵＴ(図９の１２９)に１がセットされる。同じクロックサイクルの間、図８のEN[3:0]１３０とSEL[3:0]１３１がBUSOUT[63:0]に要求された値をセットするためにセットされる。たとえば、もしバスのすべての64ビットにデータが転送されたら、それからすべてのEN[3]〜EN[0]とSEL[3]〜SEL[0]が１にセットされる。しかしながら、データがもしバスの15:0]ビットだけに転送されたら、それからEN[0]とSEL[0]が1にセットされるが、EN[3:1]は０にセットされる。もし他のどのアレイ要素も同じクロックの間にバスセグメントの他のビットにデータを転送していなければ、SEL[3:1]は１にセットされる。さもなければ、それらは０にセットされる。複数アレイ要素が同じバスセグメントを使って同じくロックサイクルでデータを転送している例として、図２を参照して、上記の方法を使って、例えば、すべての６４ビットがアレイ要素２０Ｆに出されることにより、アレイ要素２０Ｃがデータを[63:32]ビットに転送している間に、アレイ要素２０Ｂはデータをバス３６の[31:0]ビットに転送できることがわかる。
【００８６】
クロックサイクルが上で言及されている間に、スイッチ制御アレイ要素はスイッチマトリクス５５(図１、２)マルチプレクサをバスデータと結び付けられたＢＤＶＡＬ信号が行先アレイ要素に出されるように切り替えられる。図７をもう一度参照すると、同じクロックサイクルの間、行先アレイ要素(またはアレイ要素)がマルチプレクサ１２０に要求されたレジスタ１２１の入力のバスを選択させるロード命令を実行して、それはもしＢＤＶＡＬ信号が１ならばクロックサイクルの最後にロードされる。もしＢＤＶＡＬ信号が０ならば、ロードは発生しなく、アレイ要素はロード命令領域の部分として特定されたクロックサイクルの数だけウェイトする。行先アレイ要素がウェイトしている間、アレイ要素でただひとつアクティブな回路は実行制御ブロック１２４で、カウンタに待ち時間をロードしカウントダウンをする。カウントが0になったとき実行制御ユニットはＢＤＶＡＬ信号をもう一度調べて、もしそれが今１だったら、今いる地点から先に実行を進める。実行制御ユニットの回路がその他のアレイ要素に比べてとても小さいので、アレイ要素がウェイトしている間とても小さい電力消費ですむ。
【００８７】
上記のロード命令と同様に、すべてのデータ転送のための行先のアレイ要素はウェイト命令も持っている。この命令は実行制御ユニットにレフトバス３２かライトバス３６のためのＢＤＶＡＬ信号を調べてもし選択されたＢＤＶＡＬ信号が０ならば指定されたクロックサイクルの数だけウェイトさせる。しかしながら、データはロードされない。
【００８８】
上記説明においてアレイの電力浪費削減のための複数の方法が説明されている。次に、これらの方法を詳細に述べる。
【００８９】
アレイでのデータ転送の間の電力浪費を最小限に抑えるために、バスラインとその他の信号を必要以上にチャージしたり放出したりしないことが大切である。これを実現するために、すべてのバスラインの初期状態は０にされており、スイッチ制御アレイ要素は図2のマルチプレクサ５０１と５０２の０入力と図３と４に示されているアレイの端とコーナの付加されたマルチプレクサ入力を通して使われてないすべてのバスセグメントで０の値を選択するようにプログラムされている。
【００９０】
データがバスに転送されるとき、すべての６４ビットが使われるわけではない。したがって上記のように方法が提供されると、バスにデータをロードしているアレイ要素はすべての使われていないビットに０をセットする。もしバスがあらかじめアクティブではなかったら、転送が始まるまではこれらのビットは０のままで、それらの値は変化しない。
【００９１】
図２を参照すると、以下のことがわかる。例えば、データがアレイ要素２０Ｂからアレイ要素２０Ｅに転送されていると仮定した場合、更なる手段が何も設けられていなければ、データはアレイ要素２０Ｅ、過去のアレイ要素２０Ｅやアレイ要素２０Ｆやその先に接続されたライトバス３２にそって伝播され、バス３２のセグメントを不必要に蓄積したり放出したりする。これが起こらないように、データの行先となりうるすべてのアレイ要素はそれらの出力スイッチボックス５１への信号をセットされるようにしてさらにバスにそったデータが０にセットされるようにする(そして０のままでいるようにする)。これは信号EN[3:0](図８の１３０)を０にSEL[3:0](図８の１３１)を１にセットすることで達成される。データがバスにそって先まで伝播されるか書かれたところだけで止まるかを選択するアレイ要素で実行されたロード命令の中に領域が提供され、このように複数アレイ要素(または同じクロックサイクルの間に転送されるバスの異なる領域)に同じデータをロードすることを許可する。
【００９２】
したがって、上記のプロセッサアーキテクチャは要求された機能性を提供するようにプログラミングしなおすことができ、電力浪費と占領されるシリコン領域の点で効率的なものである。
【図面の簡単な説明】
【００９３】
【図１】図１はプロセッサの一部の配置図であり、この発明に基づくアーキテクチャを図解している。
【図２】図２は図１のアーキテクチャの一部を拡大した図である。
【図３】図３は図１のアーキテクチャの別の部分を拡大した図である。
【図４】図４は図１のアーキテクチャの別の部分を拡大した図である。
【図５】図５はこの発明に基づく特徴的なアレイの要素の分布を示す。
【図６】図６は図１のアーキテクチャにおける１番目のアレイ要素を示す。
【図７】図７は図１のアーキテクチャにおける２番目のアレイ要素を示す。
【図８】図８はこの発明によるアレイの図７のアレイ要素における１番目の接続を示す。
【図９】図９はこの発明によるアレイの図７のアレイ要素における２番目の接続を示す。
【図１０】図１０は図１のアーキテクチャにおける３番目のアレイ要素を示す。
【図１１】図１１は図１のアーキテクチャにおける４番目のアレイ要素を示す。
【図１２】図１２はアレイ要素間で転送されるデータの書式を示す。
【図１３】図１３はアレイ要素間のデータの流れを図解したタイミング図である。
【図１】
2008226275.tif 000004
【図２】
2008226275.tif 000005
【図３】
2008226275.tif 000006
【図４】
2008226275.tif 000007
【図５】
2008226275.tif 000008
【図６】
2008226275.tif 000009
【図７】
2008226275.tif 000010
【図８】
2008226275.tif 000011
【図９】
2008226275.tif 000012
【図１０】
2008226275.tif 000013
【図１１】
2008226275.tif 000014
【図１２】
2008226275.tif 000015
【図１３】
2008226275.tif 000016