(57)【要約】      （修正有）【課題】多数の演算装置を含むＶＬＩＷプロセッサの命令長は長く且つ使用効率が低い。【解決手段】ＬＩＷプロセッサは、複数の演算装置から構成される。プロセッサからなる複数の演算装置はグループ分けされ、入力命令語には、各グループの１つの演算装置に対する命令が含まれる。プロセッサからなる複数の演算装置は、プロセッサの望ましい用途に関する制限を特に設けることなくグループ化されているため、プロセッサは信号処理用に最適化される。これは、信号処理用途においては、必ずしも特定の演算装置が同時に動作する必要はないと判断されているからである。このため、上述の複数の演算装置がデバイスの動作に大きな影響を与えることはなく、そのうちの１つの演算装置のみがある特定の時間に動作可能となるようにグループ化することができる。アレイは、この種類のプロセッサを複数相互に接続することで形成されている。【選択図】図２
2006164279.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算装置と、サブ命令を含む命令語をデコードする手段とを備える長命令語プロセッサであって、
前記演算装置は、複数のグループに分けられ、前記複数のグループの各グループは少なくとも１つの演算装置を備え、
１つの命令語は、前記複数のグループの各グループに含まれる前記複数の演算装置のうち、１つの前記演算装置のみに対する１つのサブ命令を含み、
１つの命令語は、所望数の前記複数のグループに含まれる各演算装置に対する各サブ命令を含むことを特徴とするプロセッサ。
【請求項２】
固定幅の命令メモリを備え、命令語長が前記命令語のサブ命令数に依存することを特徴とする請求項１記載のプロセッサ。
【請求項３】
前記命令メモリの固定幅は前記命令メモリの列を定義し、命令語をデコードする前記手段は前記命令メモリの列境界を越える命令語をデコードする手段から構成されることを特徴とする請求項2記載のプロセッサ。
【請求項４】
前記複数のグループの第１のグループは、第１の算術論理演算装置で構成され、
前記複数のグループの第２のグループは、前記プロセッサの受信データ・バスからデータを転送し、前記プロセッサの発信データ・バスにデータを転送するように適合されている通信装置で構成されていることを特徴とする前記請求項のいずれかに記載のプロセッサ。
【請求項５】
前記通信装置は、前記プロセッサの内部レジスタからデータを転送し、前記プロセッサの前記内部レジスタにデータを転送するように適合されていることを特徴とする請求項４記載のプロセッサ。
【請求項６】
前記複数のグループの前記第２のグループは、前記プロセッサの内部メモリからデータを転送し、前記プロセッサの前記内部メモリにデータを転送するように適合されたメモリ・アクセス装置とともに用いられる第２の算術論理演算装置をさらに備えることを特徴とする請求項４記載のプロセッサ。
【請求項７】
演算装置からなる第３のグループをさらに備えることを特徴とする請求項４記載のプロセッサ。
【請求項８】
演算装置からなる前記第３のグループは、分岐演算を実行するように適合された分岐装置で構成されることを特徴とする請求項７記載のプロセッサ。
【請求項９】
演算装置からなる前記第３のグループは、乗算装置で構成されることを特徴とする請求項７または８記載のプロセッサ。
【請求項１０】
演算装置からなる前記第３のグループは、乗算アキュムレータ装置で構成されることを特徴とする請求項７または８記載のプロセッサ。
【請求項１１】
演算装置からなる前記第３のグループは、信号処理を実行する装置で構成されることを特徴とする請求項７〜１０いずれかに記載のプロセッサ。
【請求項１２】
固定幅の命令メモリをさらに備え、
前記複数の演算装置は、第１のグループ及び少なくとも第２のグループに分けられ、
前記第１のグループにのみ含まれる１つの演算装置に対するサブ命令を含む命令語が第１の命令語長を有し、
前記第２のグループに含まれる１つの演算装置に対するサブ命令を含む命令語が前記第１の命令語長よりも長い第２の命令語長を有し、
前記命令メモリは、前記第１の命令語長を有する命令語及び前記第２の命令語長を有する命令語を格納するよう適合されていることを特徴とする請求項１に記載のプロセッサ。
【請求項１３】
複数の通信バスにより相互に接続される複数の長命令語プロセッサのアレイを備えるプロセッサ・アレイであって、
前記長命令語プロセッサの各プロセッサは、
少なくとも算術論理演算装置と、必要に応じて、前記複数の通信バスの１つからデータを転送する、または、前記複数の通信バスの１つへデータを転送するように適合された通信装置とを含む複数の演算装置と、
サブ命令を含む命令語をデコードする手段とを備え、
前記演算装置は複数のグループに分けられ、前記複数のグループの各グループは少なくとも１つの演算装置を備え、前記算術論理演算装置及び通信装置は異なるグループに含まれ、
１つの命令語は、前記複数のグループの各グループに含まれる前記複数の演算装置のうち、１つの前記演算装置のみに対する１つのサブ命令を含み、
１つの命令語は、所望数の前記複数のグループに含まれる各演算装置に対する各サブ命令を含むことを特徴とするプロセッサ・アレイ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ・アーキテクチャに関し、さらに詳しくは、特に信号処理用途に有用なプロセッサ・アーキテクチャに関する。
【背景技術】
【０００２】
現代の高性能な無線通信システムにはデジタル・プロセッサが不可欠である。デジタル・プロセッサを用いることにより、例えば、フィルタリング、均等化、復号化機能などの動作を実行するために、毎秒数兆規模の演算を実行し、仕様を満たす性能を実現することができる。こうした更なる高性能処理への要求に対し、単一のプロセッサ・サイクルで並行処理の可能な複数の演算装置（数値演算装置（ＡＬＵ）、乗算器、アドレス生成器など）を使用することで対応しているため、サイクルごとに実行可能な演算の総数を増加することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
すでに開発されているアーキテクチャ面での手法として、複数の演算装置の並列処理を可能にする長命令語（ＬＩＷ）アーキテクチャがある。この手法では、多数ある演算装置の各演算装置に対する複数の命令を、単一のプロセッサ・サイクルで実行可能な１語の「長命令語」に連結させる。通常、この手法を実行する場合、特定の演算装置が１プロセッサ・サイクルで動作するか否かにかかわらず、長命令語のビット・フィールドを各演算装置に対する命令のために用意するが、極めて長い命令語が生成されるため、動作していない演算装置にとっては冗長な情報が多く含まれることもあり、悪影響をもたらしている。その結果、設計規模が拡大し費用が増える。
【課題を解決するための手段】
【０００４】
本発明は、ＬＩＷプロセッサの代替的な実装に関する。
【０００５】
本発明の好適な実施の形態によると、複数の演算装置から構成されるプロセッサであって、前記プロセッサに含まれる前記複数の演算装置はグループに分けられ、入力命令語は、各グループの１つの演算装置に対する命令を含むことができる。
【０００６】
本発明の他の好適な実施の形態によると、プロセッサの複数の演算装置は、前記プロセッサの望ましい用途に関する制限を特に設けることなくグループ化されているため、前記プロセッサは信号処理用に最適化される。すなわち、信号処理用途において、必ずしも特定の演算装置が同時に動作する必要はないと判断されているからである。
【０００７】
従って、デバイスの操作に重大な影響を与えることなく、前記演算装置のうち１つのみが特定のときに動作可能となるように、前記演算装置をグループ化することができる。
【０００８】
本発明の他の好適な実施の形態によると、相互に接続される複数のプロセッサを備えるアレイであって、各プロセッサは上述のように複数の演算装置を備える。
【発明を実施するための最良の形態】
【０００９】
図１は、ＷＯ０２／５０６２４にて概説されているプロセッサ・アレイのブロック略図である。このアレイは、バスとスイッチとに相互に接続されるアレイ素子２０で構成される。
【００１０】
このアレイ構造は、第１バス対３０を含む。第１バス対３０は、図１で水平に配置され、各対にはそれぞれ、図１で左から右にデータを送信する第１バス３２と右から左にデータを伝達させる第２バス３６とを含む。
【００１１】
このアレイ構造は、第２バス対４０を含む。第２バス対４０は、図１で垂直に配置され、各対にはそれぞれ、図１で上方向にデータを送信する第３バス４２と下方向にデータを送信する第４バス４６とを含む。
【００１２】
図１において、各ダイヤモンド接続５０はスイッチを表し、アレイ素子２０とバス３２及びバス３６とをそれぞれ接続する。このアレイは、さらに第１バス対３０と第２バス対４０との各交点にスイッチ・マトリクス５５を含む。データ・バス、スイッチ、及びスイッチ・マトリクスにより、処理の必要に応じてデータをアレイ素子間で次々に移動させることができる。
【００１３】
本発明の本実施例では、図２にさらに詳細に示すように、少なくともいくつかのアレイ素子２０はプロセッサで構成される。本発明は個々のプロセッサにも適用可能であるが、本発明の図示の実施例では、プロセッサ２０がアレイ素子として特に好適に使用されるよう適合させている。
【００１４】
プロセッサ２０は、６４×６４ビットの命令メモリ６０を有し、この６４×６４ビット命令メモリ６０には、プロセッサの演算を制御するためにメモリにロードされる命令が含まれる。デバイスの動作時に、命令は命令メモリ６０からフェッチされ命令デコーダ６２に送られ、プロセッサのデータ・パスや演算装置の設定を行うためにデコードされる。
【００１５】
図示の本実施例では、プロセッサは６つの演算装置から構成される。第１に利用可能な演算装置は、第１の算術論理演算装置（ＡＬＵ）６４で、多くの算術演算及び論理演算が実行可能である。
【００１６】
第２に利用可能な演算装置は通信装置６６で、入力通信バス６８と出力通信バス７０とに接続され、入力通信バス６８及び出力通信バス７０とデータのやりとりを行うために、「プット（ｐｕｔ）」及び「ゲット（ｇｅｔ）」操作を実行することができ、また、１５×１６ビットのデータ・レジスタ８４とデータのやりとりを行うことができる。レジスタ８４は、データ・バス８５により、演算装置に接続される。
【００１７】
図示の本実施例では、アレイで実行される処理を支援するように、通信装置６６は最適化される。このため、データは、ステージ毎に実行される処理の一部とともに、プロセッサ２０を次々に移動する。
【００１８】
第３に利用可能な演算装置は、結合型メモリ・アクセス装置（ＭＡＵ）／第２のＡＬＵ７２であり、様々な負荷を実行し、バス７４を介して演算結果を、６４×３２ビットのデータ・メモリ７６に格納し、また第１のＡＬＵ６４によって実行されるＡＬＵ演算のサブ・セットを提供する。
【００１９】
第４に利用可能な演算装置は、分岐装置７８で、多数の条件付き及び条件無しの分岐演算を実行する。
【００２０】
第５に利用可能な演算装置は、乗算アキュムレータ（ＭＡＣ）装置８０で、様々なビット幅で、多数の乗算や乗累算を実行する。本発明の他の実施例では、この装置を簡素化された乗算装置に置き換えてもよい。
【００２１】
図示の本実施例では、特定用途向け装置（ＡＳＵ）８２形式である第６の利用可能な演算装置がある。さらに具体的に言うと、ＡＳＵ８２は、ＣＤＭＡ送受信機能を支援するため、複合スプレッド、複合デスプレッドなど、無線信号処理用途として数々の高度に分化された演算を実行するように適合されている。本発明の他の実施例では、この装置を省略してもよい。
【００２２】
従来同様、通常、各実行装置は、１クロック・サイクルで１演算を実行することができる。しかしながら、第１のＡＬＵ６４もまた、基本的な数値演算または論理演算の第１のオペランドにおいてシフト演算を可能とする。このため、この特別な場合では、１つの実行装置において、２つの命令を効率よく同時に実行することができる。
【００２３】
広範な信号処理用途を分析することにより、現在では、必ずしも全ての処理装置が同時に処理可能に実装されるべきとは限らないという結論に至っている。本発明の図示の実施例では、演算装置は３つのグループにまとめられ、それぞれ、ＬＩＷ命令の分離命令により制御される。
【００２４】
特に図示の本実施例では、第１のグループ８６は、第１の演算論理装置（ＡＬＵ）６４のみ含み、第２のグループ８８は、通信装置６６と、結合型メモリ・アクセス装置（ＭＡＵ）／第２のＡＬＵ７２を含み、第３のグループ９０は、分岐装置７８と、乗算アキュムレータ（ＭＡＣ）装置８０と、特定用途向け装置（ＡＳＵ）８２とを含む。
【００２５】
本発明の好ましい実施の形態によると、デバイスは、全３グループ８６、８８、９０のうちのいかなる１つ、２つ、３つのグループも、どの時点においても、動作状態とすることができるように制御されるが、グループ内のわずか１つの実行装置も、どの時点においても動作状態とすることができるように制御されている。さらに、命令フォーマットは、その都度効率よく実行される態様である。
【００２６】
特に、長命令語には、第１グループ８６用の命令ＬＩＷ＃１、第２グループ８８用の命令ＬＩＷ＃２、第３グループ９０用の命令ＬＩＷ＃３を含めることができる。
【００２７】
図３は、長命令語の命令の基本構造を示し、また図４、５、６においても詳細に説明する。
【００２８】
このように、長命令語は最初に短い３ビットのビット列を含む。これは、第１のグループ８６が該当のプロセッサ・サイクルで動作しているかどうかを示している。動作している場合、どのクラスの演算が実行されるのかを示しているので、演算装置及びデータ・パスを設定できる。
【００２９】
図４に示すように、バイト０の最初の３ビットが０００の場合を除いて、第１のグループ８６は、このプロセッサ・サイクルにおいて動作しており、３ビットのビット列は、演算が第１の演算論理装置（ＡＬＵ）６４により実行されることを示している。
【００３０】
最初の３ビットの値が００１−１００の範囲内にある場合は、３つのオペランドを用いて実行されるＡＬＵ演算である。例えば、２つの値を加算してその結果を求める場合、３つのオペランドは、加算される２つの値のレジスタ・アドレス及びその結果が格納されるレジスタ・アドレスである。
【００３１】
最初の３ビットの値が１０１−１１０の範囲内にある場合は、データ・メモリと指定レジスタまたはレジスタ・ペアとの間のロードまたはストア操作を意味する。
【００３２】
最初の３ビットの値が１１１の場合は、２つのオペランドを用いて、１つのオペランドを用いて、または、例えばノー・オペレーション命令など、オペランドを用いずに、実行されるＡＬＵ演算を意味する。
【００３３】
上述のいかなる場合においても、以下にさらに詳しく説明するように、第４ビットは拡張バイトを使用するかどうかを示している。バイト０の残りの４ビットとバイト１の８ビットは、図４に示すように、バイト０の最初の３ビット値に依存し、オペランドまたはオペレーション・コードの値を示す。さらに具体的に言うと、図４では、これらの４ビットがオペランドを意味することを示し、レジスタ８４でのアドレスを定義し、ここから第１のＡＬＵ６４が定義済みの演算を実行するため、各オペランドを取り込む。
【００３４】
バイト０の最初の３ビット値が０００ではなく、かつ、このため第１のグループ８６がプロセッサ・サイクルにおいて動作中の場合は、第４ビットは「１」に設定されているはずである。そして、第２のグループ８８または第３のグループ９０のいずれかが動作中の場合、拡張バイトを使用する必要がある。
【００３５】
バイト０の最初の３ビット値が０００で、第１のグループ８６がプロセッサ・サイクルにおいて動作中でなく、かつ、長命令語のバイト０にさらに短いビット列が含まれる場合、これは、第２のグループ８８及び第３のグループ９０が動作中かどうかを示す。動作中の場合、どのクラスの演算が実行されるのかを示す。
【００３６】
このように、図５に示すように、第２のグループ８８に関連する３ビット列Ｌｃｏｄｅ２と図６に示すように、第２のグループ９０に関連する３ビット列Ｌｃｏｄｅ３とがある。
【００３７】
第２のグループ８８及び第３のグループ９０のいずれか、または両方が動作中の場合、追加バイトＬＩＷ＃２  １０８が必要な情報を提供するため、第２のグループ８８が意図する機能を遂行できるようになり、また、追加バイトＬＩＷ＃３  １１０が必要な情報を提供するため、第３のグループ９０は意図する機能を遂行できるようになる。
【００３８】
バイト０の最初の３ビット値が０００ではなく、ＬＩＷ＃１の命令または「短」メモリ・アクセス操作が行われる場合、拡張バイトを使用して、第２のグループ８８及び第３のグループ９０のいずれか、または両方が動作中かどうかを知る必要がある。動作中の場合、拡張バイトは、Ｌｃｏｄｅ２及びＬｃｏｄｅ３を有し、追加バイトＬＩＷ＃２  １０８及び追加バイトＬＩＷ＃３  １１０が必要な情報を含んでいるため、関係のグループは意図する機能を遂行できるようになる。
【００３９】
拡張バイトもまた、２ビットの拡張オペレーション・コード「ｅｘ  ｏｐ」を有し、ＡＬＵ＃０に対しさらに実行可能な命令を与えることができる。拡張バイトは、１ビット・フラグＳも含む。これが設定されている場合は、フラグＳはＡＬＵ第１オペランドでのシフト・オペレーションがあることを示している。この場合、拡張バイトに続く追加バイトを用いて、このシフトが論理演算か算術演算か、左シフトか右シフトか、及び何ビットシフトするのかを定義する（４ビット値）。
【００４０】
命令セット・アーキテクチャは、短い定数（図示の実施例では４ビット長）及び長い定数（図示の実施例では１６ビット長）の使用に対応している。図４に示すように、オペランドは通常４ビット長で、この４ビットのオペランドのうち１ビットがレジスタ８４の１つを意味するが、代わりに４ビットの定数を示すのに使用することもできる。さらに長い定数を使用する必要がある場合は、オペランド値「１５」を用いて命令デコーダ６２を指し、この場合１６ビットの定数値として長命令語の命令の最後にくる１６ビット・フィールド１１２の値を取り込む。従って、有効な情報はレジスタ・アドレス「１５」（Ｒ１５）には格納されない。このように、Ｒ１５に書き込むことで実行結果が廃棄されることを示す。
【００４１】
従って、符号化された命令語は、バイト境界にまとめられていることがわかる。さらに、図３から図６では、個々のＬＩＷ命令が１バイト長（いずれのグループも動作していない特別な場合及びＬＩＷ＃１、ＬＩＷ＃２、またはＬＩＷ＃３の命令がない場合）から９バイト長の間にあることがわかる。このように、命令デコーダ６２は、単一の６４ビット命令語においては、いかなる命令語長の組合せにも対応することが可能で、連続する６４ビット命令語に含まれるＬＩＷ命令を取り扱うことも可能である。
【００４２】
本発明の一実施例によると、いずれの単一のＬＩＷ命令長も８バイトを超えることはない。しかしながら、本発明の他の実施例によると、この最大長を所望値に設定することができる。上述の制限を設けることにより、上述の命令長より大きくなり対応できないＬＩＷ＃１、ＬＩＷ＃２、及びＬＩＷ＃３の命令の組合せが少数発生する。こうした不正な組合せは、命令デコーダ・ブロック６２にトラップされ、その結果、不正命令フラグの設定が行われる。
【００４３】
プロセッサ・アーキテクチャを支援するコンパイラ及びアセンブラが、コンパイル時に規定外の命令の組合せを実行させないように設定されることが好ましい。
【００４４】
ＬＩＷ命令の配列をさらに制限しなければならない状況がある。これは分岐先を指定する場合である。このアーキテクチャは、プロセッサ・サイクルごとにデコードされる命令に依存するため、分岐先を６４ビットの命令語の最初に配列する必要がある。命令デコーダ６２は、全て０のバイトの命令（「ＬＩＷ＃１なし、ＬＩＷ＃２なし、及びＬＩＷ＃３なし」に等しい）を「新規データ・ライン」と解釈し、６４ビットの命令語をフェッチする。そして、分岐先での命令の６４ビット配列を確実にするため、コンパイラ及びアセンブラは「新規データ・ライン」命令を、命令列の最後、分岐先の直前に使うことができる。
【００４５】
このため、長命令語フォーマットには、長命令語長ＬＩＷｉｎｓｔが演算装置の総数とは無関係であるというプロパティがある。もっと正確に言うと、これは、単一プロセッサ・サイクルで動作可能な演算装置の最大数により決まる。図示の本実施例によると、６つの利用可能な演算装置の中で、最大で３つの演算装置が、単一のＬＩＷ命令／プロセッサ・サイクルで動作可能であり、単一ＬＩＷ命令の最大長は６４ビットに制限されている。
【００４６】
さらに、長命令語長ＬＩＷｉｎｓｔは、所定のサイクルで動作中の演算装置の数に応じて、命令を次々に変更することができる。このため、多くの命令サイクルにおいて、ＬＩＷｉｎｓｔが６４ビット未満となると考えられる。
【００４７】
また、通常は命令語境界へ配列する必要はなく、複数の命令を６４ビット幅の命令メモリ６０に圧縮することができ、かつ、命令は、６４ビット命令語境界を超過して以下の命令語となることがある。
【００４８】
総合すると、上述の要因により結果として、サイクルごとに複数の並列処理を実行する高性能信号処理用途及びさらに複雑な制御機能を実行する低性能信号処理用途の両方において、コンパクトで高性能なオブジェクト・コードとなる。
【００４９】
これにより、ハードウェアの複雑性を著しく低減させ、さらに重要なことに、アーキテクチャを支えるために必要なコンパイラ／アセンブラの複雑性を低減させている。
【図面の簡単な説明】
【００５０】
【図１】本発明の一実施例に係るプロセッサ・アレイのブロック略図である。
【図２】本発明の他の実施例に係る図１に示すプロセッサ・アレイのプロセッサのブロック略図である。
【図３】図２に示すプロセッサで使用される命令語形式の概観である。
【図４】図３に示す命令語の一部の形式をさらに詳細に示す。
【図５】図３に示す命令語の第２の部分の動作を示す。
【図６】図３に示す命令語の第３の部分の動作を示す。
【図１】
2006164279.tif 000003
【図２】
2006164279.tif 000004
【図３】
2006164279.tif 000005
【図４】
2006164279.tif 000006
【図５】
2006164279.tif 000007
【図６】
2006164279.tif 000008
【外国語明細書】
2006164279.tif 000009
2006164279.tif 000010
2006164279.tif 000011
2006164279.tif 000012
2006164279.tif 000013
2006164279.tif 000014
2006164279.tif 000015
2006164279.tif 000016
2006164279.tif 000017
2006164279.tif 000018
2006164279.tif 000019
2006164279.tif 000020
2006164279.tif 000021
2006164279.tif 000022
2006164279.tif 000023
2006164279.tif 000024
2006164279.tif 000025