(57)【要約】本発明の一実施形態は、Ｗビットを平行して処理することが可能な少なくとも１つのＷタイプのサブプロセッサ（７４、７６）（Ｗは整数値である）と、Ｎビットを平行して処理することが可能な少なくとも１つのＮタイプのサブプロセッサ（７８、８０）（ＮはＷより１／２倍小さい整数値である）とを有する、異種の、高性能で拡張可能なプロセッサを含む。前記プロセッサは、前記少なくとも１つのＷタイプのサブプロセッサと少なくとも１つのＮタイプのサブプロセッサを接続する共有バス、および前記少なくとも１つのＷタイプのサブプロセッサと前記少なくとも１つのＮタイプのサブプロセッサに接続されて共有されるメモリ（３１２）を備え、前記Ｗタイプのサブプロセッサは、高速動作を可能にするアプリケーションの実行に対応するようメモリを再配置する。
2008507039.tif 000002
【特許請求の範囲】
【請求項１】
異種の、高性能で、拡張可能なプロセッサであって、
Ｗビット以上を並列的に処理することが可能な少なくとも１つのＷタイプのサブプロセッサであって、Ｗは整数値である、サブプロセッサと、
Ｎビットを並列的に処理することが可能な少なくとも１つのＮタイプのサブプロセッサであって、Ｎは整数値でありＷより小さい、サブプロセッサと、
該少なくとも１つのＷタイプのサブプロセッサと少なくとも１つのＮタイプのサブプロセッサとを接続する共有バスと、
該少なくとも１つのＷタイプのサブプロセッサと該少なくとも１つのＮタイプのサブプロセッサとに接続されて共有されるメモリと
を備え、該Ｗタイプのサブプロセッサは、メモリを出入りするバイトを再配置し、アプリケーションの実行に対応することにより、高速動作を可能にする、プロセッサ。
【請求項２】
前記プロセッサは、拡張可能である、請求項１に記載の異種の、高性能で、拡張可能なプロセッサ。
【請求項３】
少なくとも１つのＷタイプのサブプロセッサのうちの２つと、前記少なくとも１つのＮタイプのサブプロセッサのうちの２つである、請求項１に記載の異種の、高性能で、拡張可能なプロセッサ。
【請求項４】
前記少なくとも１つのＷタイプのサブプロセッサと前記少なくともＮタイプのサブプロセッサは、マルチメディアアプリケーションに対するプログラムを実行する、請求項２に記載の異種の、高性能で、拡張可能なプロセッサ。
【請求項５】
前記少なくとも１つのＷタイプのサブプロセッサのうちの各々は、複数のマクロ機能ユニットを含む、請求項４に記載の異種の、高性能で、拡張可能なプロセッサ。
【請求項６】
前記複数のマクロ機能ユニットは、該複数のマクロ機能ユニットのその他による使用のためのメモリアドレスを生成するために、ロードストアブロックを含む、請求項５に記載の異種の、高性能で、拡張可能なプロセッサ。
【請求項７】
前記複数のマクロ機能ユニットは、前記ロードストアブロックに接続されたスカラー算術論理ユニット（ＡＬＵ）および乗加算ブロックを含み、該スカラー算術論理ユニットおよび該乗加算ブロックは、該ロードストアブロックから受信されるデータに対し、スカラー算術論理演算および乗算演算を実行する、請求項６に記載の異種で、高性能で、拡張可能なプロセッサ。
【請求項８】
前記複数のマクロ機能ユニットは、ベクトルＸブロックを含み、該ベクトルＸブロックは、前記ロードストアブロック、前記スカラーＡＬＵ、および、複数の乗加算ブロックに接続され、該ロードストアブロックからのデータに対してベクトル演算を実行し、該ベクトルＸブロックは、ベクトルデータを生成する、請求項７に記載の異種の、高性能で、拡張可能なプロセッサ。
【請求項９】
前記複数のマクロ機能ユニットは、ベクトルＡＬＵおよび乗加算ブロックを含み、該ベクトルＡＬＵおよび該乗加算ブロックは、前記スカラーＡＬＵおよび乗加算ブロックおよび前記ベクトルＸブロックに接続され、該ベクトルＸブロックから受信されるベクトルデータに対し、ベクトルＡＬＵ演算および乗加算演算を実行する、請求項８に記載の異種の、高性能で、拡張可能なプロセッサ。
【請求項１０】
前記少なくとも１つのＮタイプのサブプロセッサは、ストアユニットブロックと、マクロ機能ブロックと、ロードユニットブロックとを含み、該マクロ機能ブロックは、ロードユニットブロックに接続され、該マクロ機能ブロックを該ストアブロックに接続するためのマクロ機能バスにさらに接続される、請求項２に記載の異種の、高性能で、拡張可能なプロセッサ。
【請求項１１】
前記少なくとも１つのＮタイプのサブプロセッサは、複数のＷタイプのサブプロセッサのうちの少なくとも１つによって共有される、データパスユニット（ＤＰＵ）ブロックと、制御装置と、シーケンサと、データアドレスジェネレータ（ＤＡＧ）ブロックとを含む、請求項１０に記載の異種の、高性能で、拡張可能なプロセッサ。
【請求項１２】
前記マクロ機能ブロックは、ガロアフィールドの乗加算（ＭＡＣ）ブロックを含み、該ガロアフィールドの乗加算ブロックは、前記マクロ機能バスと前記ロードユニットブロック１３０６とに接続され、ガロアフィールドの演算を実行する、請求項１０に記載の異種の、高性能で、拡張可能なプロセッサ。
【請求項１３】
前記マクロ機能ブロックは、特別ＡＬＵを含み、該特別ＡＬＵは、前記ロードユニットブロックと前記ロードユニットブロックとに接続され、特別なＡＬＵ演算を実行する、請求項１２に記載の異種の、高性能で、拡張可能なプロセッサ。
【請求項１４】
前記マクロ機能ブロックは、パンクチュアリング／デパンクチュアリングブロックを含み、該パンクチュアリ／デパンクチュアリブロックは、前記ロードユニットブロックと前記ロードユニットブロックとに接続され、パンクチュアリング／デパンクチュアリング演算を実行する、請求項１３に記載の異種の、高性能で、拡張可能なプロセッサ。
【請求項１５】
前記マクロ機能ブロックは、インタリーバブロックを含み、該インタリーバブロックは、前記ロードユニットブロックと前記ロードユニットブロックとに接続され、インタリーバ演算を実行する、請求項１４に記載の異種の、高性能で、拡張可能なプロセッサ。
【請求項１６】
前記マクロ機能ブロックは、ビタビブロックを含み、該ビタビブロックは、前記ストアユニットブロックと前記インタリーバブロックとに接続され、ビタビ演算を実行する、請求項１５に記載の異種の、高性能で、拡張可能なプロセッサ。
【請求項１７】
前記マクロ機能ブロックは、結合器ブロックを含み、該結合器ブロックは、前記ロードユニットブロックと前記ロードユニットブロックとに接続され、結合演算を実行する、請求項１６に記載の異種の、高性能で、拡張可能なプロセッサ。
【請求項１８】
前記少なくとも１つのＮタイプのサブプロセッサは、前記ストアユニットブロックと前記ロードユニットブロックとの間に接続されたＸユニットブロックを含む、請求項１６に記載の異種の、高性能で、拡張可能なプロセッサ。
【請求項１９】
前記少なくとも１つのＷタイプのサブプロセッサと前記少なくとも１つのＮタイプのサブプロセッサとの間の直接通信のために、該少なくとも１つのＷタイプのサブプロセッサと該少なくとも１つのＮタイプのサブプロセッサとの間に接続された、共有レジスタを含む、請求項１６に記載の異種の、高性能で、拡張可能なプロセッサ。
【請求項２０】
異種の、高性能で、拡張可能なプロセッサを備える、情報を処理する方法であって、
Ｗビットを並列的に処理することが可能な少なくとも１つのＷタイプのサブプロセッサを使用して、データを処理することであって、Ｗは整数値である、ことと、
Ｎビットを並列的に処理することが可能な少なくとも１つのＮタイプのサブプロセッサを使用して、データを同時に処理することであって、ＮはＷより１／２倍小さい整数値である、ことと、
低電力消費とプログラマビリティの容易さとを維持する一方で、マルチメディアアプリケーションの高速実行をもたらすことと
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の引用）
本発明は、２００４年７月１３日に出願され、「Ｑｕａｓｉ−Ａｄｉａｂａｔｉｃ  Ｐｒｏｇｒａｍｍａｂｌｅ  ｏｒ  ＣＯＯＬ  Ｐｒｏｃｅｓｓｏｒｓ  Ａｒｃｈｉｔｅｃｔｕｒｅ」と題された、米国仮特許出願第６０／５９８，６９１号の利益、および、２００４年８月２日に出願され、「Ｑｕａｓｉ−Ａｄｉａｂａｔｉｃ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｐｒｏｃｅｓｓｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ」と題された、米国仮特許出願第６０／５９８，４１７号の利益を主張する。
【０００２】
（本発明の分野）
本発明は、一般に、プロセッサの分野に関し、特に、通信およびマルチメディアのアプリケーションにおいて用いられる低消費電力、高性能、小ダイ面積（ｌｏｗ  ｄｉｅ  ａｒｅａ）、ならびに、柔軟性および拡張性を有するプロセッサに関する。
【背景技術】
【０００３】
（従来技術の説明）
セルフォンまたはモバイルフォン、デジタルカメラ、ｉＰｏｄ、および携帯情報端末（ＰＤＡ）などの消費者機器の人気の到来により、これらの機器を使用する通信についての多くの新規格が、この業界によって広く導入されてきた。これらの規格のいくつかには、Ｈ２６４、ＭＰＥＧ４、ＵＷＢ、Ｂｌｕｅｔｏｏｔｈ、２Ｇ／２．５Ｇ／３Ｇ／４Ｇ、ＧＰＳ、ＭＰ３およびＳｅｃｕｒｉｔｙが挙げられる。しかしながら、異なる機器の間の通信を定める異なる規格を使用することは、とてつもない開発努力が必要であるという新たな問題が発生している。前述の問題の理由の１つは、現在市販されているプロセッサまたはサブプロセッサは、あらゆるデジタル素子によって容易にはプログラム可能でなく、さまざまな強制規格に適合していないということが挙げられる。家庭用電化製品の保証における新しい傾向としてこの問題が大きくなることは時間の問題であり、ましてや今後この業界により導入される規格はなおさらのことである。
【０００４】
プロセッサの新たな、あるいは現在の要求の１つは、低消費電力、さらには、複数のアプリケーションを処理するのに十分なコードの実行をもたらす能力である。現在の電力消費は、アプリケーション当たりおよそ数百ミリワット未満であるが、多数のアプリケーションを実行するためには、数百ミリワット未満にすることが目標である。プロセッサの別の要求は、低コストである。消費者製品においてプロセッサは幅広く利用されているため、プロセッサは費用をかけずに製造されなければならない。そうでなければ、最も一般的な家庭用電化製品におけるプロセッサの使用は、実利的ではない。
【０００５】
現在のプロセッサの問題の具体例を挙げると、いくつかの消費者製品において使用されるＲＩＳＣに関連する問題、その他の消費者製品において使用されるマイクロプロセッサに関連する問題、さらにその他の消費者製品において使用されるデジタル信号処理プロセッサ（ＤＳＰ）に関連する問題、さらにその他消費者製品において使用される特定用途向け集積回路（ＡＳＩＣ）に関連する問題、既知のプロセッサのいくつかに関連する問題が挙げられ、それぞれが独特の問題を示しており、以下に簡潔に説明される。これらの問題は、それぞれを使用する利点とともに、その不利点を説明する「欠点」の部分およびその利点を説明する「長所」の部分について、以下で説明される。
【０００６】
（Ａ．ＲＩＳＣ／スーパースケーラプロセッサ）
ＲＩＳＣおよびスーパースケーラプロセッサは、あらゆる汎用目的のコンピューティングに最も広く受け入れられるアーキテクチャのソリューションである。それらは、一般のソリューションのコンテクストにおいて特定の特殊な問題を解決するために、アプリケーション特有のアクセラレータを用いて強化されることが多い。
【０００７】
例：ＡＲＭシリーズ、ＡＲＣシリーズ、ストロングＡＲＭシリーズ、およびＭＩＰＳシリーズ。
【０００８】
長所：
・  業界に広く受け入れられることによって、ツールチェーンがより成熟し、ソフトウェアの選択が幅広くなった。
・  強固なプログラミングモデルが、Ｃのような高級言語からバイナリを生成するために使用される、極めて効率的な自動コードジェネレータによってもたらされた。
・  このカテゴリーにおけるプロセッサは、極めて優れた汎用目的のソリューションである。
・  ムーアの法則を性能向上のために効率的に使用することができる。
【０００９】
欠点：
・  アーキテクチャの汎用目的の性質は、価格、電力、性能の改善に関して、アプリケーションのセットまたはサブセットの一般／特定の特性を活用しない。
・  提供される計算の量に対して、中程度から大量の電力を消費する。
・  性能の向上は、いくつかのマルチメディアおよび通信のアルゴリズムに悪影響を与えるパイプラインレイテンシを代償にして主に達成される。
・  一般的アルゴリズムに対する、より効率的な自動コード生成のための、複雑なハードウェアスケジューラ、高度な制御機構、および大幅に削減された制限により、このカテゴリーのソリューションの面積効率が低下した。
【００１０】
（Ｂ．超長命令語（ＶＬＩＷ）およびＤＳＰｓ）
ＶＬＩＷアーキテクチャは、デジタル信号処理スペースにおける極めて一般的なソリューションを生み出すために、ＲＩＳＣおよびスーパースケーラプロセッサのアーキテチャに見られる非効率性のいくつかを解消した。並列性が大幅に増加した。スケジューリングの負担が、面積を確保するためにハードウェアからソフトウェアに移行された。
例：ＴＩ  ６４ｘｘ、ＴＩ  ５５ｘｘ、ＳｔａｒＣｏｒｅ  ＳＣ１４０、ＡＤＩ  ＳＨＡＲＣシリーズ。
【００１１】
長所：
・  ソリューションを信号処理スペースに制限することによって、ＲＩＳＣおよびスーパースケーラのアーキテクチャと比べて、３Ｐが改善された。
・  ＶＬＩＷアーキテクチャは、ＲＩＳＣおよびスーパースケーラのアーキテクチャに比べ、より高いレベルの並列性を提供する。
・  効率的なツールチェーンが急速に作成され、業界での幅広い受け入れが急速に広がった。
・  自動コード生成およびプログラマビリティは、信号処理用に設計された多くのプロセッサがこのカテゴリーにあてはまるため、大幅な改善を示している。
【００１２】
欠点：
・  問題解決能力は、デジタル信号処理スペースにまで低下するが、ＶＬＩＷマシンのような一般的なソリューションが効率的な３Ｐを有するには広すぎる。
・  制御は、多くのマルチメディアおよび通信のアプリケーションにおける、特に、基本制御コードに対し、高価であり、なおかつ、電力を消費する。
・  いくつかの電力および面積に関する非効率な技術が、自動コード生成を容易にするために使用された。ソフトウェアコミュニティによるこれらの技術への強い依存性は、この非効率性を世代から世代へと持ち越している。
・  ＶＬＩＷアーキテクチャは、シリアルコードを処理するにはあまり適切ではない。
【００１３】
（Ｃ．再構成可能コンピューティング）
過去１０年間にわたる業界および学界におけるさまざまな努力は、価格、電力、および性能の特性のようなＡＳＩＣを使用して柔軟性のあるソリューションを構築することに集中していた。その多くは、業界においてほとんど成果がなくても、現行法および成熟した法（ｍａｔｕｒｅｄ  ｌａｗ）ならびに設計パラダイムに挑戦した。その試みのほとんどは、アーキテクチャのような粗いＦＰＧＡに基づいてソリューションを生み出すことを目指していた。
【００１４】
長所：
・  特定のアプリケーションに制限され、そのアプリケーションの範囲内で必要とされる柔軟性を提供するいくつかの設計は、価格、電力、性能の競争力があることが判明した。
・  研究によると、制限されているが柔軟性のあるそのようなソリューションを、多くのアプリケーションのホットスポットに対処するように生み出すことが可能であることが示された。
【００１５】
短所：
・  このスペースにおけるいくつかの設計は、効率的かつ容易なプログラミングソリューションを提供しなかったので、ＤＳＰのプログラミングに精通しているコミュニティに広く受け入れられなかった。
・  Ｃのような高級言語からの自動コード生成は、その設計の多くにとって、実質的に不可能または極めて非効率的であった。
・  ３Ｐの利点は、１種類の相互接続および１レベルの粒度を使用して異種アプリケーションを統合しようと試みる場合に、失われた。提供された並列性の利用レベルが、大幅に犠牲になった。
・  再構成オーバーヘッドは、ほとんどの設計に対する３Ｐにおいて重要であった。
・  多くの場合において、外部インターフェースは、専用の再構成可能構造が業界標準のシステム設計手法に適合しなかったため、複雑であった。
・  再構成生可能なマシンは単一プロセッサであり、基本制御の処理に対してさえ、タイトに集積されたＲＩＳＣに大きく依存する。
【００１６】
（Ｄ．プロセッサのアレイ）
いくつかの最近の取り組みは、再構成可能なシステムを、異種アプリケーションを処理するのにより適切にすることに集中させられている。１つまたは１セットのアプリケーションに対して最適化された複数のプロセッサを接続し、この方向におけるソリューションは、プロセッサのアレイ構造を作成する。
【００１７】
長所：
・  効率的な構造を使用して共に接続される場合に、異なるセットのアプリケーションに対して最適化された異なるプロセッサは、幅広い問題を解決するのに役立つことができる。
・  一様なスケーリングモデルは、性能要件が増加する場合に、ナンバープロセッサが共に接続されることを可能にする。
・  複雑なアルゴリズムは、効率的に分割されることができる。
【００１８】
短所：
・  性能要求は十分に満たされ得るが、電力および価格の非効率性が高すぎる。
・  プログラミングモデルはプロセッサにごとに異なる。これはアプリケーション開発者の仕事をさらに困難にする。
・  多数のプロセッサの一様なスケーリングは、極めて費用がかかり、なおかつ、電力を消費するリソースである。これは、全体のシステムの性能に悪影響を及ぼし得るいくつかの非決定論を表示するために示された。
・  システムレベルでのプログラミングモデルは、いかなる共有メモリリソースも備えないので、通信データ、コード、および、制御情報の複雑性を被る。共有メモリが、一様に拡張可能ではないためである。
・  異なるタイプのプロセッサを異種のネットワークに接続するのに必要な拡張性および反復性のグルーロジック（ｇｌｕｅ  ｌｏｇｉｃ）は、面積の非効率を増大させ、消費電量を増加させ、レイテンシを増加させる。
【００１９】
前述を踏まえて、１つまたは複数のマルチメディアアプリケーションを同時に実行することを可能にするために、低電力、安価、効率的、高性能、柔軟にプログラム可能、なおかつ、異種であるプロセッサが必要とされる。
【発明の開示】
【課題を解決するための手段】
【００２０】
簡潔に説明すると、本発明の一実施形態は、Ｗビット以上のビットを並列的に処理することが可能な少なくとも１つのＷタイプのサブプロセッサであって、Ｗは整数値であるサブプロセッサと、Ｎビットを並列的に処理することが可能な少なくとも１つのＮタイプのサブプロセッサであって、ＮはＷより小さい整数値であるサブプロセッサとを備える、異種の、高性能で、拡張可能なプロセッサを含む。前記プロセッサは、前記少なくとも１つのＷタイプのサブプロセッサと少なくとも１つのＮタイプのサブプロセッサとを接続する共有バスと、前記少なくとも１つのＷタイプのサブプロセッサと前記少なくとも１つのＮタイプのサブプロセッサに接続されて共有されるメモリとをさらに備え、前記Ｗタイプのサブプロセッサは、メモリを出入りするバイトを再配置し、アプリケーションの実行に対応することにより、高速動作を可能にする。
【発明を実施するための最良の形態】
【００２１】
まず図１を参照すると、本発明の実施形態を含むデジタル製品１２に関するアプリケーション１０が示される。図１は、市販されているものに関連する、本発明の実施形態を含む製品の利点のうちの、必ずしも全てではないが、そのいくつかに関する図を読み手に提供することを意図している。
【００２２】
したがって、製品１２は、現代の携帯電話装置１４、デジタルカメラ装置１６、デジタル録音または音楽装置１８、およびＰＤＡ装置２０により実行される必要のあるアプリケーションの全てを組み込むことにおいて、コンバージェンス製品である。製品１２は、装置１４〜２０の機能のうちの１つまたは複数の機能を同時に実行することができるが、低電力消費である。
【００２３】
製品１２は通常、電池式であるため、装置１４〜２０によって実行されるアプリケーションのうちの複数のアプリケーション実行する場合でさえ、ほとんど電力を消費しない。また製品１２は、Ｈ２６４、ＭＰＥＧ４、ＵＷＢ、Ｂｌｕｅｔｏｏｔｈ、２Ｇ／２．５Ｇ／３Ｇ／４Ｇ、ＧＰＳ、ＭＰ３、およびＳｅｃｕｒｉｔｙを含むがそれだけに限定されない複数のアプリケーションに適合して動作を達成するために、コードを実行することもできる。
【００２４】
図２は、本発明の実施形態にしたがう、メモリコントローラおよびダイレクトメモリアクセス（ＤＭＡ）回路２４に接続される、異種の、高性能で、拡張可能なプロセッサ２２を備える典型的な集積回路２０を示す。また図２において、プロセッサ２２は、汎用バス３０を介してインターフェース回路２６に接続され、汎用バス３１を介してインターフェース回路２８に接続され、バス３０を介し、バス３１を介して汎用プロセッサ３２とさらに接続されることを示す。回路２０は、回路１０の残りの回路によって利用されるクロック、同様に利用されるリセット信号、および同様に電力を管理するための回路を生成するために、クロックリセットおよび電源管理３４を含むようにさらに示される。回路２０には、Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ（ＪＴＡＧ）回路３６がさらに含まれる。ＪＴＡＧはチップを検査するための規格として使用される。
【００２５】
バス３０に接続されて示されるインターフェース回路２６およびバス３１に接続されて示されるインターフェース回路２８は、当業者にとっては通常既知である現行のプロセッサにより使用されるブロック４０〜６６を備える。
【００２６】
異種のマルチプロセッサであるプロセッサ２２は、共有データメモリ７０、共有データメモリ７２、ＣｏｏｌＷサブプロセッサ（またはブロック）７４、ＣｏｏｌＷサブプロセッサ（またはブロック）７６、ＣｏｏｌＮサブプロセッサ（またはブロック）７８、および、ＣｏｏｌＮサブプロセッサ（またはブロック）８０を含むように示される。ブロック７４〜８０の各々は、命令メモリと関連し、例えば、ＣｏｏｌＷブロック７４は命令メモリ８２と関連し、ＣｏｏｌＷブロック７６は命令メモリ８４に関連し、ＣｏｏｌＮブロック７８は命令メモリ８６に関連し、ＣｏｏｌＮブロック８０は命令メモリ８８に関連する。同様に、ブロック７４〜８０の各々は、制御ブロックに関連する。ブロック７４は制御ブロック９０に関連し、ブロック７６は制御ブロック９２に関連し、ブロック７８は制御ブロック９４に関連し、ブロック８０は制御回路９６に関連する。ブロック７４および７６は、１６、２４、３２および６４ビットの動作またはアプリケーションに対して通常効率的に動作するように設計され、一方、ブロック７８および８０は、１、４、または８ビットの動作またはアプリケーションに対して通常効率的に動作するように設計される。
【００２７】
ブロック７４〜８０は、本質的にサブプロセッサであり、ＣｏｏｌＷブロック７４および７６はワイド（またはＷ）タイプのブロックで、一方、ＣｏｏｌＮブロック７８および８０はナロー（またはＮ）タイプのブロックである。ワイドおよびナローは、サブプロセッサ内で処理または転送される並列ビットの相対数を参照し、プロセッサ２２に異種特性を付与する。さらに、回路２４は、サブプロセッサのうちの１つすなわち、ブロック７４〜８０のうちの１つと直接接続され、接続されるサブプロセッサを介して低レイテンシパスをもたらす。図２において、回路２４は、ブロック７６に直接接続されて示されるが、ブロック７４、７８、または８０のいずれに接続されてもよい。優先順位の高いエージェントまたはタスクは、回路２４に直接接続されるブロックに割り当てられ得る。
【００２８】
４つのブロック７４〜８０が示されているが、その他の数のブロックが利用されてもよい。しかしながら、追加のブロックを利用することによってダイスペースが増加し、製造原価が高くなることが留意されるべきである。
【００２９】
多大な処理能力を必要とする複雑なアプリケーションは、回路２０に散布（ｓｃａｔｔｅｒ）されず、むしろ、特定のサブプロセッサまたはブロックに集められ、またはブロック内に限定されており、素線（金属）または経路長さを排除または少なくとも削減し、素線の電気容量を減らすことによって、本質的に電力消費を改善する。さらに、利用が増えてアクティビティが減少すると、低電力消費に寄与することになる。
【００３０】
回路２０は、マルチメディアおよび通信のアプリケーションのために擬似断熱のプログラム可能な（Ｑｕａｓｉ−Ａｄｉａｂａｔｉｃ  Ｐｒｏｇｒａｍｍａｂｌｅ）サブプロセッサを提供する、シリコンオンチップ（またはＳｏＣ）の例であって、前述のとおり、ＷタイプとＮタイプの２種類のサブプロセッサが提供される。Ｗタイプつまりワイドタイプのプロセッサは、１６、２４、３２、および６４ビットの処理を必要とするアプリケーションにおいて、高出力、高価、高性能の効率のために設計される。Ｎタイプつまりナロータイプのプロセッサは、８、４、および１ビットの処理を必要とするアプリケーションにおいて高効率のために設計される。これらのビット数が本発明の実施形態において、図面および説明によって使用されるが、その他のビット数が容易に用いられ得る。
【００３１】
アプリケーションが異なると、異なる性能または処理能力が必要になるため、アプリケーションが異なると、異なるタイプのブロックまたはサブプロセッサによって実行される。例えば、通常ＤＳＰｓによって実行されるアプリケーションは、通常発生するＤＳＰカーネルを特徴的に備えるため、通常、図２のブロック７４または７６などのＷタイプのサブプロセッサによって処理される。このようなアプリケーションは、高速フーリエ変換（ＦＦＴ）または逆高速フーリエ変換（ＩＦＦＴ）、適応有限インパルス応答（ＦＩＲ）フィルタ、離散コサイン変換（ＤＣＴ）または逆離散コサイン変換（ＩＤＣＴ）、リアル／コンプレックスＦＩＲフィルタ、ＨＲフィルタ、抵抗コンデンサのルートレイズコサイン（ＲＲＣ）フィルタ、カラースペースコンバータ、３Ｄバイリニアテクスチャマッピング、グローシェーディング、Ｇｏｌａｙ相関、バイリニア補間、メジアン／行／列フィルタ、アルファブレンディング、高次サーフェステセレーション（Ｈｉｇｈｅｒ―Ｏｒｄｅｒ  Ｓｕｒｆａｃｅ  Ｔｅｓｓｅｌｌａｔｉｏｎ）、バーテックスシェード（トランス／ライト）、トライアングルセットアップ、フルスクリーンアンチエイリアスおよび量子化が含まれるが、それだけに限定されない。
【００３２】
その他の通常発生するＤＳＰカーネルは、ブロック７８および８０などのＮタイプのサブプロセッサによって実行されることが可能であり、可変長コーデック、ビタビコーデック、ターボコーデック、周期的冗長検査、Ｗａｌｓｈコードジェネレータ、インタリーバ／デインタリーバ、ＬＦＳＲ、スクランブラ、デスプレッダ、コンボリューションエンコーダ、リードソロモンコーデック、スクランブルコードジェネレータ、およびパンクチュアリング／デパンクチュアリングを含むが、それだけに限定されない。
【００３３】
ＷタイプとＮタイプの両方のサブプロセッサは、ＲＩＳＣ、再構成、スーパースケーラ、ＶＬＩＷ、およびマルチプロセッサのアプローチなどの既存のアーキテクチャのアプローチと比べ、利用が増加しても高性能を維持しつつ、ネットアクティビティおよびその結果として生じる遷移ごとのエネルギーを低く維持することが可能である。プロセッサ２２のサブプロセッサのアーキテクチャは、結果として最適な処理ソリューションをもたらすダイサイズを縮小し、「擬似断熱（Ｑｕａｓｉ−Ａｄｉａｂａｔｉｃ）」または「ＣＯＯＬ」アーキテクチャと呼ばれる新規のアーキテクチャを含む。これにしたがうプログラム可能なプロセッサは、擬似断熱プログラム可能（Ｑｕａｓｉ−Ａｄｉａｂａｔｉｃ  Ｐｒｏｇｒａｍｍａｂｌｅ）またはＣＯＯＬプロセッサと呼ばれる。
【００３４】
擬似断熱プログラム可能（Ｑｕａｓｉ−Ａｄｉａｂａｔｉｃ  Ｐｒｏｇｒａｍｍａｂｌｅ）またはＣＯＯＬプロセッサは、上に説明されたとおり、アプリケーションの有限サブセットと適合させるために、データパス、制御、メモリ、および機能ユニット粒度を最適化する。これが達成される方法は、以下に提示されるプロセッサ２２の異なるユニットまたはブロックまたは回路および相互動作に関する図面の説明および提示によって明白である。
【００３５】
「擬似断熱プログラム可能」または異種の相互接続および機能ユニットの並列アプリケーション（ＣＯＯＬ；Ｃｏｎｃｕｒｒｅｎｔ  Ａｐｐｌｉｃａｔｉｏｎｓ  ｏｆ  ＨｅｔｅｒＯｇｅｎｅｏｕｓ  ｉｎｔｅｒｃＯｎｎｅｃｔ  ａｎｄ  ｆｕｎｃｔｉｏｎａＬ  ｕｎｉｔ）プロセッサ。熱力学の観点から見ると、断熱プロセッサは、熱を無駄にせず、全ての使用されるエネルギーを有効な仕事を実行することに変換する。既存の標準プロセッサの非断熱の性質、回路設計、および論理セルのライブラリーデザイン技術のために、断熱プロセッサを製造することは、今までは可能でなかった。しかしながら、実行し得る、異なる可能性のあるプロセッサのアーキテクチャの中でいくつかは断熱に近い。本発明のさまざまな実施形態は、従来の技術のアーキテクチャと比べ、著しく断熱に近いがそれでもなおプログラム可能であるプロセッサのアーキテクチャの種類を示す。それらは、「擬似断熱プログラム可能プロセッサ」と呼ばれる。
【００３６】
集積回路２０は、プロセッサ２２内のリソースによってサポートされ得るできるだけ多くのアプリケーションが、共にまたは並列的に実行されることを可能にし、そのアプリケーションの数は、現行のプロセッサによって対応される数をはるかに超える。集積回路２０によって同時または平行して実行されることが可能なアプリケーションの例は、受信された映画をデコードしながらワイヤレス機器からアプリケーションをダウンロードし、映画は同時にダウンロードとデコードされることが可能であることを含むが、それだけに限定されない。集積回路２０が対応するアプリケーションの数に比べ、小さいダイサイズまたはシリコン領域を有する集積回路２０で同時にアプリケーションを実行することを達成することにより、図１の多種機器に必要であるコストよりも、集積回路を製造するコストが大幅に削減される。加えて、プロセッサ２２は、マルチメディアの複雑なアプリケーションなどの多数の機能を実行するために、単一のプログラム可能なフレームワークをユーザーに提供する。この業界に採用される将来的な規格に対応するために、集積回路２０、つまりプロセッサ２２の能力は重要な価値を有し、この業界は現在の規格のものよりもさらに複雑になることが予想される。
【００３７】
ブロック７４〜８０の各々は、プログラムの１つだけのシーケンス（またはストリーム）を所定の時間に実行することができる。プログラムのシーケンスは、特定のアプリケーションと関連する機能によって決まる。例えば、ＦＦＴはシーケンスの種類である。しかしながら、シーケンスが異なる場合でも相互に依存する場合がある。例えば、ＦＦＴプログラムは、完了すると、その結果をメモリ７０に保存し、次のシーケンスは、保存された結果を使用し得る。このように情報を共有する、またはこのように相互に依存する異なるシーケンスは、「ストリームフロー」と呼ばれる。
【００３８】
図２において、メモリ７０および７２は、それぞれ８ブロックの１６キロバイトのメモリを備えるが、その他の実施形態において異なるサイズのメモリは使用されてもよい。
【００３９】
命令メモリ８２、８４、８６、および８８は、ブロック７４〜８０による実行のために、命令を保存するためにそれぞれ使用される。
【００４０】
図３は、本発明の実施形態にしたがう、プロセッサ２０のさらなる詳細を示す。図３において、プロセッサ２０はサブプロセッサ７４〜８０を含むように示され、それぞれのサブプロセッサによって処理される命令を保存するために、命令キャッシュ３０２〜３０８をそれぞれ含む。プロセッサ２０は、図３に示されるように接続される、アービトレーションブロック３１０、データメモリ３１２、汎用入力／出力（ＧＰＩＯ）ブロック３１４、共有ＳｏＣバスブロック３１６、ＤＭＡとの高周波（ＲＦ）インターフェースブロック３１８、ＤＭＡコントローラブロック３２０、およびメモリコントローラブロック３２２を含むようにさらに示される。データメモリ３１２は、図３に示されるさまざまな構造／ブロックの動作およびデータトラフィックを指示するアービトレーションブロック３１０の指示のもと、サブプロセッサおよびその他のブロックによって利用されるデータ情報の保存の役割を果たす。ブロック３１４は、プロセッサ２２に出入りする入力および出力トラフィックを調整し、ブロック３２０はバス３１６を介してプロセッサ２２によって実行されるＤＭＡ動作を制御し、ブロック３２２はバス３１６を介してメモリ３１２に対して動作を制御し、ブロック３１８はＤＭＡ動作を処理するための回路を含み、信号３２４を介して接続されるＲＦ信号を受信および／送信することができる。
【００４１】
任意で、共有レジスタ３２６および３２８は、２種類のサブプロセッサ間での直接通信をもたらす。例えば、図３において、レジスタ３２６はブロック７４と７８に接続され、これらのブロックによって共有されるべき情報を保存し、実行を迅速に処理するために複数のサブプロセッサを利用するアプリケーションの実行を容易にする。同様に、レジスタ３２８は、レジスタ３２６と同一の機能でブロック８０と７６に接続されて示される。
【００４２】
図４は、本発明の実施形態にしたがい、ブロック７４または７６などのＷタイプブロックのうちの１つの中に備えられるブロックまたは構造のハイレベルブロック図を示す。例として、ブロック７４が図４において使用される。図４において、およびこの明細書全体において、機能ユニットまたはマクロブロックは、加算器、乗算器、レジスタ、およびマルチプレクサなどの構成要素間で、具体的な相互接続構造とともに提示される。これらのマクロブロックは、「マクロ機能ユニット」または「ＭＦＵ」と呼ばれる。ＭＦＵｓは、マルチメディアおよび通信のアプリケーションの有限セットにおいて１つまたは複数の通常発生する動作のうちの効率的なプログラム可能なサブセットを示す。マクロ機能ユニットにおける高効率は、対象のアプリケーションに見られる原子動作（ａｔｏｍｉｃ  ｏｐｅｒａｔｉｏｎ）のクリティカルなグループを、さらに優れた性能および電力性能を示す派生動作（ｄｅｒｉｖｅｄ  ｏｐｅｒａｔｉｏｎ）のセットに置換えたことによってもたらされる。場合によって、通常発生する動作は、ハードウェアを効率的に再利用するために、独特な方法で組み合わされられてきた。
【００４３】
図４において、ブロック７４は、図４に示されるように共に接続される、ロード／ストアＭＦＵブロック４０２、スカラー算術論理演算ユニット（ＡＬＵ）および乗累算（ＡＣＣ）ＭＦＵｓブロック４０６、ベクトルｘＭＦＵブロック４０４、ベクトルＡＬＵおよび乗累算ＡＣＣ  ＭＦＵブロック４０８、およびローカルメモリ４１０を備えるように示される。ブロック４０２はメモリアドレスを生成し、メモリアドレスバス４１２にメモリアドレスを接続する。メモリデータは、メモリデータバス４１４に接続され、ブロック４０４とブロック４０６に双方向で接続される。ベクトル保存マスクは、ベクトル保存マスクバス４１６に接続され、ブロック４０４によって生成される。各ブロックのさらなる詳細は、後に続く図面に関して提示および説明される。その提示および説明の前に、ブロック７４の一般的な機能およびブロックのいくつかを以下のとおり説明する。
【００４４】
ブロック４０６および４０８は、データの実際の計算の大部分を実行する。ロード／ストアＭＦＵブロック４０２は、メモリ３１２およびメモリ４１０に出入りするアクセスのためにアドレスを計算する。ベクトルＸ  ＭＦＵブロック４０４は、ベクトルデータをメモリ３１２およびブロック４０８の間の途中に再配置する。ベクトルＸ  ＭＦＵブロック４０４は、ベクトルをメモリ３１２に保存するために、ベクトル保存マスクを生成するためにも使用される。ブロック４０６は、所定の時間に１つのデータを動作するのみであるが、ブロック４０４および４０８は、ベクトルの形式でデータ上を動作する。ブロック４０２はメモリアクセスにアドレスを提供する。計算によっては、ブロック４０２によって実行されるものもあるが、本質的にはオーバーヘッドの計算である。
【００４５】
機械命令エンコード（必要に応じ）は、ＭＦＵブロック間のデータを移動する動作の他に、さまざまなＭＦＵブロックのための動作を区別する。単一の命令におけるすべての動作は平行して実行される。ベクトルＸ  ＭＦＵブロック４０４は、命令において別々にエンコードされた動作の制御のもと、ベクトルデータの再配置およびベクトル保存マスクの生成をもたらす。ローカルメモリ４１０は、命令毎にブロック７４の外部の情報にわざわざアクセスすることを回避するために、局所的に情報を保存するために使用される。バス４１２は、メモリアドレスが提供されるメモリ３１２に接続される。
【００４６】
ブロック４０２は、バス４２４を介してブロック４４に接続されて示され、ブロック４０２は、バス４２６を介してブロック４０６に接続されるようにさらに示され、ブロック４０２は、バス４２８を介してブロック４１０に接続されてさらに示される。ブロック４０４、４０８、および４１０は、ベクトルバス４２０を介して相互に接続されて示され、ブロック４０６、４０４、４０８、および４１０は、スカラーバス４２２を介して相互に接続されて示される。バスは通常、素線の集まりであり、各素線は信号に接続し、その素線は相互に平行であるゆえ、平行して信号を接続することができる。バス内の素線の数はバイナリビット数を規定し、バスの特性としての役割を果たす。図４において、ベクトルバス４２０は、スカラーバス４２２よりも広い、すなわち、バス４２０はバス４２２に比べ、平行してより多くの信号を接続可能であるより多くのビットまたは素線を含む。バス４２０とバス４２２のビット数の割合の例は４倍であり、例えば、バス４２２が３２ビットである場合、バス４２０は３２ビットの４倍の１２８ビットである。
【００４７】
ブロック４０４は、バス４１６に接続されるベクトル保存マスクも提供する。
【００４８】
メモリデータは、計算動作のためにブロック４０２からブロック４０６に接続されるが、ベクトルデータがまずブロック４０４に提供される。ブロック４０４は、計算ユニット、すなわちブロック４０８において必要とされるものに適合させるために、メモリにおけるデータを整理する能力を提供することにより、性能が大幅に向上するということを留意することが重要である。
【００４９】
図５は、本発明の実施形態にしたがい、ブロック４０２に含まれる回路ブロックのブロック図を示す。ブロック４０２は、図５に示されるように共に接続される、アドレスブロック５０２、サーキュラバッファレジスタブロック５０４、アドレスジェネレータブロック５０８、アドレスジェネレータブロック５０６、マルチプレクサ（ｍｕｘ）５１０、およびｍｕｘ５１２を含む。
【００５０】
ブロック５０２は、図４に示されるブロック４０２のその他のブロックと接続され、アドレスを保管する。ブロック５０４は、サーキュラバッファレンジをサーキュラバッファレジスタ（ブロック５０４）のうちの１つに保存する役割を果たす。ブロック５０６および５０８は、プログラムによって要求される場合にサーキュラバッファレンジ内で包括（ｗｒａｐ）するために、アドレス計算をもたらす。ブロック５０４に向かっている矢印は、それらのレジスタがロードされることを可能にする。すなわち、ブロック５０６は、ブロック５０４によって生成されるアドレス、またはブロック４０６から受信されるアドレス、さらにブロック５０２から生成されるアドレスを修正する役割を果たし、一方、ブロック５０８は、ブロック５０２および／またはブロック４０６さらにブロック５０４から受信されるアドレスを修正する役割を果たす。
【００５１】
ブロック４０２のアドレスレジスタおよびブロック４０４のサーキュラバッファレジスタは、入力をブロック５０６および５０８のアドレスジェネレータに提供する。ブロック４０２のアドレスレジスタの場合、それらの入力は前に保存されたアドレスであり、一方、ブロック４０４のサーキュラバッファレジスタについては、それらの入力はサーキュラバッファに関する情報である。
【００５２】
ブロック５０６および５０８は、アドレスを改変する役割を果たす。すなわち、ブロック５０６は、ブロック５０４によって生成されるアドレス、またはブロック４０６から受信されるアドレス、さらにブロック５０２から生成されるアドレスを改変する役割を果たし、一方、ブロック５０８は、ブロック５０２および／またはブロック４０６、さらにブロック５０４から受信されるアドレスを修正する役割を果たす。ブロック５０６の出力は、次に、ｍｕｘ５１２への入力として提供され、そのｍｕｘ５１２は、ブロック５０２によって生成されるアドレスを入力として受信もする。ｍｕｘ５１２は、次に、その入力のうちの１つを選択し、図４に示されるブロック７４のその他のブロックによる受信のために、選択されたものをバス５２０に接続する。同様に、ブロック５０８の出力は、ｍｕｘ５１０への入力として提供され、そのｍｕｘ５１０は、ブロック５０２によって生成されるアドレスを入力として受信もする。ｍｕｘ５１０は、次に、その入力のうちの１つを選択し、図４に示されるブロック７４のメモリによる受信のために、選択されたものをバス５２２に接続する。
【００５３】
このようにして、ロード／ストアＭＦＵは、並列的に２つのアドレスを生成することができる。アドレスは、アドレスレジスタと、スカラーＡＬＵ  ＭＦＵからの定数または値のどちらかを組み合わせることによって計算される。計算されたアドレスは、任意でサーキュラバッファの範囲内で包括され得る。計算されたアドレスは、主に、メモリにアクセスする際に使用されるが、アドレスレジスタまたはサーキュラバッファレジスタに割り当てられ、またはその他のＭＦＵの入力として使用され得る。
【００５４】
図６は、マクロ機能ユニット、特にブロック４０２、４０４、４０６、および４０８に転送するレジスタファイルのために用いられる一般構造をさらに詳細に示す。図６において、複数のレジスタ６０２、複数のｍｕｘ６０４、クロスバー６０６、レジスタブロック６０８、複数の中継レジスタ６１０、複数の機能ユニット６１２、および複数のｍｕｘ６１４が、本発明の実施形態にしたがって示される。レジスタ６０２は、ｍｕｘ６０４に接続されて示され、ｍｕｘ６０４は、順に、クロスバー６０６に接続されて示される。クロスバー６０６は、レジスタ６１０に接続されて示され、レジスタ６１０は、順に、機能ユニット６１２に接続され、機能ユニット６１２は、ｍｕｘ６１４に接続されて示される。通常、ｍｕｘの機能は、ｍｕｘに提供される入力の中から選択することと、選択された入力を生成することである。クロスバー６０６の出力は、図４のその他のブロックに提供もされる。ユニット、ｍｕｘ、および／またはレジスタの特定の数が図６において示されるが、これらの構造のその他の数が用いられてもよい。
【００５５】
図６の構造は、図６に示されるように共に接続される。ｍｕｘ６０４は、図４のその他のブロックからの追加の入力で、少なくとも２つのそのような入力、ならびにｍｕｘｅｓ６１４の出力を受信するように示される。
【００５６】
図６のレジスタおよびフィードバックパス（接続されている）は、面積、エネルギー、および性能のトレードオフを最適化するためにユニークな組織を提供する。この組織は、以下の３つの主な特性を有する。
【００５７】
・  アセンブリ言語にビジブルであって数個以上のレジスタを有するレジスタファイルは、次の２つのサブセットに分割される。数個のレジスタは完全なアクセシビリティで実行され、一方、その他のレジスタはより制限されたアクセシビリティで実行される。最初の４つのレジスタ（０から３番）は、ほとんどの場合、完全なアクセシビリティに対応する。このレジスタファイルを伴う機械動作について、完全にアクセス可能なレジスタのうちのいずれもが、動作のソースおよびディスティネーションとして同時に選択され得る。対照的に、制限されたアクセシビリティを有するレジスタは、その間に少数の読み出しおよび書き込みポートのみを共有する。制限されたアクセシビリティを有するレジスタにおいて、レジスタが共有する最大２つの読み出しおよび書き込みポートおよび１つの書き込みポートが存在する。この配置は、セットにおけるほとんどのレジスタについて、１つまたは２つ以上の読み出し／書き込みポートを必要とすることがないので、多数の読み出し／書き込みポートを有するレジスタファイルの利点のほとんどを提供する。
【００５８】
・  各機能ユニットの入力に「中継レジスタ」が存在する。機能ユニットがクロックサイクルで使用される前に、その入力の中継レジスタが、前のクロックサイクルの終わりに適切な入力値でセットされなければならない。同時に使用できない機能ユニットは、同一の中継レジスタを共有するためにまとめられ、レジスタの総数を減らすことができる。同一の中継レジスタを共有する機能ユニットがクロックサイクルで必要とされない場合、レジスタの前の値が保持され、これにより、そのサイクルについてのその機能ユニットにおける遷移電力消費を削減する。
【００５９】
・  機能ユニット間での転送は、２段階で実施される。第１段階で、完全にアクセス可能なレジスタの次の値は、制限されたアクセシビリティを有するレジスタに書き込むための値または複数の値があればそれと共に、マルチプレクサを介して選択される。第２段階において、完全にアクセス可能なレジスタの次の値、および制限されたアクセシビリティを有するレジスタの読み出しポートからの値は、クロックサイクルの終わりに中継レジスタに書き込まれる値を選択するクロスバーに共に送り込まれる（そして、次のクロックサイクルでの機能ユニットのために）。この組織は、１つでなく多重の段階を経ることから遅れを増加させる恐れがあるが、サイズに大幅に影響を与えるクロスバーへの入力の数を最小化する。
【００６０】
制限されたアクセシビリティを有するレジスタの書き込みおよび読み出しポートの間で、転送が実施される場合、または実施されない場合がある。転送がここで実施されない場合、さらに追加のレイテンシのサイクルが、これらのレジスタのうちの１つを書き込む動作とその後のそれを読み込む動作との間で当然発生する。
【００６１】
図７は、本発明の実施形態にしたがい、ハイレベルブロック図式において、ブロック４０８のさらなる詳細を示す。図７において、ベクトルレジスタブロック７０２は、Ｎ  ＡＬＵｓブロック７０４、ベクトル要素シフタブロック７０６，ベクトル要素セレクタブロック７０８、２ＮおよびＮビットコンバータブロック７１０、Ｎ  ＡＬＵｓブロック７１２および２Ｎ乗算器ブロック７１４に接続されて示される。図７において、ブロック４０８は、Ｎ加算器ブロック７１８、Ｎシフタブロック７２０、ベクトルの和ブロック７２２、Ｎ３入力加算器ブロック７２４、２ＮおよびＮビットコンバータ７２６、ｍｕｘ７２３およびｍｕｘ７３２に接続されるベクトルレジスタブロック７１６を含むようにさらに示される。図７のブロックおよびｍｕｘｅｓは、図７に示されように共に接続される。ブロック７０２は、図４のその他のブロックに接続され、ブロック７０４〜７１４にさらに接続される。ブロック７１６は、ブロック４０６から、ならびに、ｍｕｘ７３２、ブロック７１０およびブロック７１４の他にブロック７２４の出力からの入力を受信するように示される。ブロック７０２は、ｍｕｘ７０４に接続されて示され、ｍｕｘ７０４は、ブロック７１２および７２６にさらに接続される。一般的に、図７の回路またはブロックは、Ｍは整数のビット数であるＮの数のＭビット値などの、ベクトルタイプの値で並列的に動作する。
【００６２】
ｍｕｘ７３２は、ブロック７１８および７２０によって生成される出力を、入力として受信し、ｍｕｘ７３０は、ブロック７０４および７０６によって生成される入力を受信し、ブロック７０２によって受信される出力をさらに生成する。ブロック７０８および７２２の出力は、ブロック４０６に提供される。本明細書で使用されるＮは、整数値であり、例えば、Ｎ  ＡＬＵはＮ個のＡＬＵ回路である。
【００６３】
ブロック７０２〜７１４およびｍｕｘ７３０は、一般的に乗累算（ＭＡＣ）機能を実行し、一方、ブロック７１６〜７２６およびｍｕｘ７３２はＡＬＵ機能を実行するが、そのＭＡＣおよびＡＬＵ機能が並列的に実行されるビット数は、一般的に、ブロック４０６によって処理されるビット数よりもＮ倍多い。ブロック７０４および７１２はセグメント可能、すなわち、それらは加算演算を選択的にセグメントすることができる。例えば、Ｎ個の３２ビットの加算演算を実行可能であることに加え、平行してＮ個の３２ビットが処理される場合、各ＡＬＵブロックは、２Ｎ個の１６ビットの加算演算または４Ｎ個の８ビットの加算演算を実行することができる。ブロック７１４は、図１１のブロック１１１０と同じように機能し、それについて簡潔に説明する。ブロック７１０および７２６は、Ｎ個の３２ビット値をＮ個の４０ビット値、または２Ｎ個の１６ビット値を２Ｎ個の４０ビット値に変換する働きをする。一例において、３２ビット値は４０ビット値に変換され、別の例において、１６ビット値は４０ビット値に変換され、このようにしてビット変換能力を提供する。
【００６４】
ブロック７０６はベクトル値、すなわちＮ個のＭビット値を、整数値によって左右にシフトさせる。ベクトルシフトの例を以下のベクトルで挙げる。
＜ａ０、ａ１、ａ２、ａ３、ａ４、ａ５、ａ６、ａ７＞
この場合、８つの値であり、
＜ａ１、ａ２、ａ３、ａ４、ａ５、ａ６、ａ７、０＞
または、
＜０、０、０、ａ０、ａ１、ａ２、ａ３、ａ４＞
にベクトルを戻す。
【００６５】
これらの動作は通常、乗算または除算として解釈されない。ブロック７０８は、ベクトル値の単一の要素を選択することを可能にし、例えば、特定のバイト（８ビット）は、ベクトル値から選択され得る。
【００６６】
ブロック７２０はブロック７０６と同じように機能し、ブロック７２６はブロック７１０と同じように機能する。ブロック７１２および７２６の出力は、ｍｕｘ７０４を介して選択的にブロック７０２に提供され、ブロック７０６および７０４の出力は、ｍｕｘ７３０を介して選択的にブロック７０２に提供される。さらに、ブロック７２０および７１８の出力は、ｍｕｘ７３２を介してブロック７１６に選択的に提供される。
【００６７】
ブロック７２２は、ベクトルベースで加算動作を実行し、一方、ブロック４０８のその他のブロックは、要素ベースで動作する。すなわち、ブロック７２２は、単一のベクトルの全ての要素を加算し、要素ベースで動作するブロックは、異なるベクトルの選択された対応する１つまたは複数の要素に演算を実行する。
【００６８】
ブロック７１０および７２６は、それぞれ、Ｎまたは２Ｎからの変換を選択的に可能にする。図８にさらに示されるように、ブロック８０４の出力は、ブロック８０２の入力へフィードバックされる。
【００６９】
図８は、本発明の実施形態にしたがい、ブロック図式において、ブロック４０４のさらなる詳細を示す。図８において、ブロック４０４は、図８に示されるように共に接続される、マスク制御レジスタブロック８０２、マスクジェネレータブロック８０４、マスクレジスタブロック８０６、ベクトルレジスタブロック８０８、およびベクトルバイトマスク置換ブロック８１０を含むように示される。
【００７０】
ブロック８０２は、図４のその他のブロックからの入力を受信し、ブロック８０６に接続されて示されるブロック８０４への入力を生成するように示される。ブロック８０６は、ブロック８０１に接続されて示され、図４のその他のブロックの他に、メモリ３１２にもさらに接続される。ブロック８０８は、メモリ３１２および図４のその他のブロックに接続されて示される。ブロック８１０は、ブロック８０６および８０８からの入力を受信するように接続されて示される。
【００７１】
一例において、ブロック４０４は、ブロック４０８と同一のＮについて、Ｎ＊３２ビットのベクトルレジスタのレジスタファイルであるブロック８０８を有する。ブロック４０４のブロック８０６は、サイズがＮ＊４ビットのマスクレジスタを含む。マスクレジスタの各ビットは、ベクトルレジスタの１バイトに一致する。Ｎ＊３２ビットベクトルが外部の共有メモリに保存される場合、Ｎ＊４ビットマスクは、どのベクトルのバイトが実際にメモリに書き込まれるかを示すために提供される（ゼロメモリバイトに一致するメモリバイトは変わらない。）マスクジェネレータ機能は、マスク制御レジスタの設定に基づいて、４＊Ｎビットマスクを計算する。
【００７２】
ブロック４０４は、４＊Ｎバイトを選択するために、２つのベクトルレジスタの８＊Ｎバイトを置換することができる。一般的な場合において、特定の置換は、第３のベクトルレジスタの値によって制御される。特定の「既にコード化された」置換は、制御ベクトルの使用を必要としない。これらは、２つの入力ベクトルレジスタの左右にある全てのファンネルシフト（ｆｕｎｎｅｌ  ｓｈｉｆｔ）を備える。２つのベクトルレジスタの８＊Ｎバイトが置換されると同時に、２つのマスクレジスタの８＊Ｎビットが、マスク値とベクトル値の間で同一のビットとバイトの一致を保持するために、同じように置換され得る。
【００７３】
図８のブロックは、ベクトル値ベースで動作する。ブロック８１０は、上に説明されたように、ベクトル値の再配置を可能にする。これは、図９および１０を参照してさらに説明される置換を使用して実行される。ブロック８１０は、どの置換が予測されるかという情報を提供する。同様に、ブロック８０４および８０６からの置換されたマスクは、置換されたマスクのどれが提供されるかを示す。一般的に、保存される各バイトに１マスクビットが存在する。
【００７４】
図８のブロック８０２、８０４、８０６、および８１０は、実行を行なう特定のアプリケーションに適合させるためにメモリにおけるアドレスを再配置する能力をもたらす。従来技術において、再配置は通常、自動的に実行されるが、本発明の実施形態において、プログラマーは、プログラムまたはコードに従って、プログラムで所望の再配置を実行することができる。これは、プログラマーの必要に応じて、ほとんど無限に近い再配置の組を可能にし、それは従来技術が全く提供できないことである。つまり、再配置する能力は、既定であり、再配置の可能性の既定の組を含む。したがって、実行されるプログラムに従ってマスクを生成することは、メモリにおけるアドレスの再配置に関して、さらなる柔軟性を提供する。
【００７５】
ＳＩＭＤは、単一命令、多重データ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ、Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）の頭字語であり、ＭＩＭＤは、多重命令、多重データ（Ｍｕｌｔｉｐｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ、Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）の頭字語である。これらは、当業者に既知であるコンピュータアーキテクチャおよびプログラミングにおける標準用語である。
【００７６】
図９および図１０は、ブロック＜数字＞の置換回路のさらなる詳細を示し、＜数字＞は、「ベクトルバイト＋マスク置換」ボックスの数である。ブロック４０４は、図９および１０に示されるように、置換される結果ベクトルを生成するために、２つのベクトルの置換を実行する機能ユニットを有する。置換を実行するために使用される回路は、それぞれがＮユニットである入力ベクトルＡおよびＢを例として挙げ、Ｎユニットの出力ベクトルＺも生成する一般的な方法で説明されることが可能で、ユニットは任意であるが一定のビット数であり、Ｎは２の累乗である必要がある。ＫをＮの対数の底２とする。置換回路は、図に示されるように、一定の種類のＮのスイッチボックスを備えるＫ＋１段階を有する。「タイプＡ」、「タイプＢ」、および「タイプＣ」と呼ばれる３種類のスイッチボックスが全体に存在する。スイッチボックスタイプＡは、第１段階でのみ使用され、スイッチボックスタイプＣは、最終段階でのみ使用され、中間における全ての段階は、スイッチボックスのタイプＢを用いる。各タイプのスイッチボックスによって対応される接続は別々に示される。隣接する段階の各ペアのスイッチボックスの間に、ディスタンス１の交換から始まり、ディスタンスＮ／２の交換まで機能するバタフライ交換が存在する。スイッチボックスの設定は、置換回路への第３の入力である「制御ベクトル」によって全て決定される。タイプＡおよびタイプＣのスイッチボックスのそれぞれの設定は、単一のビットのみを特定する必要があり、それぞれのタイプＢの設定は、２つのビットを正確に特定する必要があり、完全な制御ベクトルは、２＊Ｋ＊Ｎビットを必要とする。制御ベクトルは、実行される置換命令から全体に示され、またはある方法においては、プログラムによって部分または全体に提供され得る。
【００７７】
図１１は、本発明の実施形態にしたがい、ブロック図形式において、ブロック４０６の構成要素のさらなる詳細を示す。図１１において、レジスタブロック１１０２は、ＡＬＵブロック１１０４、ビットコンバータブロック１１０６、ＡＬＵブロック１１０８、および乗算器ブロック１１１０に接続されて示される。ブロック４０６は、レジスタブロック１１１２、シフタブロック１１１４、加算器ブロック１１１６、およびビットコンバータブロック１１１８を含むようにさらに示される。Ｍｕｘｅｓ１１２２、１１２０、および１１２４も、図１１に示される。ｍｕｘおよびブロックは、図１１に示されるように、共に接続される。
【００７８】
ブロック１１０２は、図４のメモリ３１２およびその他のブロックに接続されて示され、ｍｕｘ１１２２およびｍｕｘ１１２０からの入力を受信する。シフタブロック１１１４は、ｍｕｘ１１２２の入力のうちの１つを提供し、ブロック１１０４は、その他の入力を提供する。ｍｕｘ１１２０は、ブロック１１１８および１１０８からその入力を受信する。ブロック１１１４は、ブロック１１０２に接続されてさらに示され、ｍｕｘ１１２４は、ブロック１１１２および１１０２から入力を受信し、ブロック１１１４への出力を生成するように示される。
【００７９】
ブロック１１１２は、ブロック１１１２への入力として提供される出力を生成するブロック１１１６に接続されて示される。ブロック１１１８は、ブロック１１１２およびブロック１１０６に接続されて示され、１１１０はブロック１１１２に接続されて示される。
【００８０】
ブロック１１０２、１１０４、１１０６、１１０８、および１１１０、ならびにｍｕｘ１１２２は、ＡＬＵ機能を実行し、ブロック１１１２〜１１１８およびｍｕｘ１１２４は、乗累算（ＭＡＣ）機能を実行する。
【００８１】
ブロック１１０４および１１０８はＡＬＵであり、その機能を実行し、それらの出力は、ｍｕｘ１１２２および１１２０を介して、ブロック１１０２への入力（またはフィードバック）として選択的に提供される。クロックサイクル毎に、２つのＡＬＵ演算が実行され得る。ブロック１１１０は乗算機能を実行し、ブロック１１０２より多くのビット数を処理することができるブロック１１１２に提供される出力を生成する。例えば、ブロック１１０２が３２ビット能力を有する場合、ブロック１１１２は４０ビット能力を有する。ブロック１１１２はアキュムレータレジスタ、つまり、入力を累積して加算する役割をする。
【００８２】
ブロック１１０６は、Ｎビット値を、Ｘは整数値であるＮ＋Ｘに変換する。例えば、３２ビット値は４０ビット値に変換されることができる。ブロック１１１４は、値を既定のビット数でシフトし、ｍｕｘ１１２２を介してその結果をブロック１１０２へパスする。
【００８３】
ブロック１１１８は、４０ビットを３２ビットにするなど、より大きいビット数をより小さいビット数に変換する。ブロックはブロック４０８に接続される。ブロック４０６は、ブロック１１０２からの値で２つのＡＬＵを並行して実行することができる。第１のＡＬＵ演算の代わりに、Ｎビットのシフト演算が実行され、またはＮビット値からＸビット値への変換がブロック１１１２に保存され得る。第２のＡＬＵ演算の代わりに、乗算がブロック１１１０およびブロック１１１２のレジスタのうちの１つに保存された結果によって実行され得る。
【００８４】
ブロック４０６は、４０ビットのシフト、４０ビットの加算／減算、および４０ビット値から３２ビット値への変換を並列的に実行することが可能であり、スカラーＡＬＵ  ＭＭＦＵの３２ビットレジスタのうちの１つに保存される。
【００８５】
ブロック７８などのＮタイプのサブプロセッサのうちの１つのさらなる詳細は、後に続く図面を参照して説明される。Ｗタイプのサブプロセッサに関する図４のブロック４０６およびブロック４０４は、ブロック７８などのＮタイプのサブプロセッサに共通する。
【００８６】
図１２は、本発明の実施形態にしたがい、ブロック７８の詳細のハイレベルブロック図を示す。図１２において、ブロック７８は、データパスユニット（ＤＰＵ）ブロック１２０２、メモリブロックへのパス１２０４、ならびに制御装置、シーケンサ、およびデータアドレスジェネレータ（ＤＡＧ）ブロック１２０６を含むように示される。ブロック１２０４および１２０６は、Ｗタイプのサブプロセッサのブロックと共通して見られる。ブロック１２０６は一般的に、ブロック４０２と機能的に同じである。
【００８７】
図１３は、本発明の実施形態にしたがい、ハイレベルブロック図式において、ブロック７８のさらなる詳細を示す。図７８において、ストアユニットブロック１３０２は、Ｘユニットブロック１３０４に接続されて示され、順に、Ｘユニットブロック１３０４は、ロードユニットブロック１３０６に接続されて示される。ブロック１３０４は、一般的に、ブロック４０４と機能的に同じなので、さらなる詳細は上に説明される。
【００８８】
ブロック１３０６は、マクロ機能ブロック１３４０にさらに接続されて示され、順に、マクロ機能バス１３１０を介して、ブロック１３０２に接続されて示される。ブロック１３０２は、ストアバッファ１３１４、ストアバッファ１３１２、およびバスインターコネクトブロック１３０８を含むように示される。ブロック１３０２は、メモリ３１２などのメモリに提供される出力を生成するので、ブロック１３１４を介して適宜接続される。ブロック１３０４は入力を受信するように示され、メモリ３１２などのメモリに接続される。ブロック１３０６は、ロードバッファ１３２０、ロードバッファ１３１８、およびブロック１３４０に接続されるバスインターコネクトブロック１３１６を含むように示される。
【００８９】
ブロック１３４０は、ガロアフィールドＭＡＣブロック１３２２、特別のＡＬＵブロック１３２４、結合器ブロック１３２６、メモリ１３２８、パンクチュアリング／デパンクチュアリングブロック１３３０、インタリーバブロック１３３２、およびビタビブロック１３３４を含むように示され、それぞれがバス１３１０に接続されるように示される。ブロック１３２２〜１３３２は、ブロック１３１６からの入力を受信し、ブロック１３１６に接続されるようにそれぞれ示される。ブロック１３３４は、ブロック１３３２からの入力を受信し、そのブロックでデータを受信および生成するために接続される。
【００９０】
データの流れは上述のとおりで、データまたは情報は、フロック１３０６からおよびブロック１３０６を介して、ブロック１３４０に流れ、次にブロック１３０２、そしてメモリに流れ出る。このようにして、パイプラインの影響が導入され、パイプラインの方法で多数の動作が重複し、同時に処理される。例えば、情報は、ブロック１３０６によってロードされ、一方で、情報はブロック１３０２によってメモリに保存される。データは、ブロック１３０４によってメモリから受信された後に、ブロック１３０６のブロック１３２０および１３２８に保存され、その後、ブロック１３４０に提供され、ブロック１３４０によって処理されるその詳細は、以下に続く図面を参照して簡潔に説明される。
【００９１】
ブロック１３４０による処理の完了後、処理されたデータは、バス１３１０を介してブロック１３０２に提供され、メモリに受信されるように接続されるまで、データが保存されるブロック１３１２および１３１４に保存される。ブロック１３１４、１３１２、１３１８、および１３２０のバッファは、既定の幅、またはビット数を並行して有する。一例において、これらのバッファの各々は２５６ビット幅であるが、その他のビット数が用いられてもよい。
【００９２】
ブロック１３４０によって処理された可能性のある値またはデータは、再利用のために、ブロック１３０２からブロック１３０６に移動され得る。さらに、データは、メモリからブロック１３０４によって受信され、次に、処理のためにブロック１３０６に移動され得る。ブロック１３４０の各々のさらなる詳細が、ここに提示される。ブロック１３１４および１３１２は、ダブルバッファリングの効果をもたらし、パイプライン動作に共通して発生する「失速（ｓｔａｌｌｉｎｇ）」を削減することに役立てられ、ブロック１３１８および１３２０も同様のことが言える。失速は、ブロック１３０２および１３０６のメモリからの同時のアクセスによってもたらされる。別の実施形態において、ブロック１３１４および１３１２は、１つのブロックであってもよく、ブロック１３１８および１３２０は、１つのブロックであってもよい。
【００９３】
レイテンシは動作に関連し得、または、パイプラインの影響が存在し得る。レイテンシは、ブロック１３４０に関するブロックの各々によってもたらされ得る。
【００９４】
図１４は、本発明の実施形態にしたがう、ブロック１３２２のさらなる詳細を示す。図１４において、ガロアフィールドブロック１４０２は、ＸＯＲ／Ｃｌｒ回路１４０４に接続されて示され、順に、アキュムレータレジスタブロック１４０６に接続されて示される。ブロック１４０２は、ガロアフィールド出力信号１４０８を生成するように示され、ガロアフィールド出力信号１４０８は、ガロアフィールドｍｕｘ１４１０への入力としての役割を果たし、ガロアフィールドｍｕｘ１４１０は、ブロック１４０６の出力によって生成され、アキュムレータレジスタブロック出力信号１４１２と呼ばれるさらに別の入力を受信する。信号１４０８および１４１２は、図１３の１３１０のバスに接続されるガロアフィールドＭＡＣ出力信号１４１６を選択的に生成するために、ｍｕｘ１４１０への入力としての役割を果たす。ｍｕｘ１４１０への別の入力としての役割を果たす選択信号１４１４は、信号１４１６の生成のために、信号１４０８および１４１２のうちの１つを選択する働きをする。したがって、事実上ガロアフィールド演算の結果であるブロック１４０２の出力は、ブロック１３２２の出力として提供され、またはガロアフィールドＭＡＣ演算の結果は、ブロック１３２２の出力として提供される。
【００９５】
ブロック１４０６の出力は、その別の入力として回路１４０４に接続されて示される。ブロック１４０４の出力はブロック１４０６に提供され、その接続はガロアフィールドＭＡＣ演算のＭＡＣ部分を達成する。ブロック１４０４は、ガロアフィールドＭＡＣ演算で通常使用されるＸＯＲ乗算演算を効果的に実行する。
【００９６】
ブロック１４０２は、Ｘｏｒツリーブロック１４２４に接続されて示される、レジスタブロック１４２０およびレジスタブロック１４２２を含むように示される。ブロック１４２０は、レジスタブロック１４２６、ガロアフィールド乗算反復１の１４２８、レジスタブロック１４３０、ガロアフィールド乗算反復１の１４３２、レジスタブロック１４３４、およびレジスタブロック１４３６を含むようにさらに示される。図１４に図示されないが、ブロック１４３４および１４３６などの追加の数のレジスタブロックは、ブロック１４３４と１４３６の間に連続して備えられ、接続される。
【００９７】
ブロック１４２４は、ブロック１４２６に接続されて示され、順に、ブロック１４２６はブロック１４２８に接続されて示され、順に、ブロック１４２８はブロック１４３０に接続されて示され、順に、ブロック１４３０は、ブロック１４３２に接続されて示され、順に、ブロック１４３２は、ブロック１４３４に接続されて示され、ブロック１４３４は、ブロック１４３６またはブロック１４３４とブロック１４３６との間に位置する１つまたは複数のレジスタブロックに接続される。
【００９８】
図１４において、ブロック１４２０および１４２２は、ブロック１３０６から入力を受信し、別の実施様態においては、１つのブロックに結合されてもよい。ブロック１４０２は一般的に、当業者にとって既知であるガロアフィールド処理を実行し、図１４の残りのブロックはＭＡＣ演算の実行をもたらす。ブロック１４２６、１４３０、１４３４、および１４３６は、ガロアツリーの異なる反復としての役割を果たし、最悪の場合のシナリオにおいて、反復の数は８つのレジスタブロックを必要とする８であることが発見された。ＭＡＣ演算の乗算部分は、一般的に、回路１４０４によって実行されるＸＯＲ動作によって実行され、ブロック１４０６は、アキュムレータ機能としての役割を果たす。回路１４０４は、ブロック１４０２によって実行されるガロアフィールドの演算の最終の反復、図１４の場合、ブロック１４３６からの入力を受信する。
【００９９】
動作において、ブロック１３２２は、８ビット値などのＮビット値またはデータを演算し、別のＮビット値に基づいて元々の値の８ｗａｙをシフトすることによって、同一のものに基づいてＮビット値またはデータを生成する。Ｎビット値は、次に、その結果が減少定数を有するＮビットに減らされるまで、ブロック１４０４によってＸＯＲされ、ブロック１４０６の値などのＮビットアキュムレータレジスタの内容に選択的に加えられる。「クリア」動作もブロック１４０６によって実行され得る。ガロアフィールドのＭＡＣ演算、つまりブロック１３２２を用いるアプリケーションの例は、循回冗長コード（ＣＲＣ）演算、畳み込みエンコーダ演算、スクランブルコードジェネレータ演算、およびその他のものが含まれるが、それだけに限定されない。
【０１００】
図１５は、本発明の実施形態にしたがい、ハイレベルブロック図式において、ブロック１３２４に含まれる回路のさらなる詳細を示す。図１５において、ｍｕｘ１５０４および１５０２は、それぞれ、Ａレジスタブロック１５０８およびＢレジスタブロック１５０６に接続されて示される。ブロック１５０８は、Ａと呼ばれる値を保存し、ブロック１５０２は、Ｂと呼ばれる値を保存し、そこでＡおよびＢの値は、ブロック１３２４によって演算されるデータである。ＡおよびＢの値は、それぞれＮビット幅である。
【０１０１】
ブロック１５０８および１５０６は、条件付きレジスタブロック１５１２への入力を生成するように示され、加算／減算／Ａｂｓ／差分／条件付き加算−減算／乗算（ＡＧＵ）ブロック１５１０への入力を生成するように接続されてさらに示され、順に、ブロック１５１０は、出力レジスタブロック１５１４への入力を生成する。ブロック１５１４は、ｍｕｘ１５１６に接続されて示され、順に、ｍｕｘ１５１６は、加算器１５１８に接続されて示される。加算器１５１８は、アキュムレータレジスタブロック１５２０に接続されて示され、その出力は、加算器１５１８の別の入力としての役割を果たすように示される。ブロック１５２０の別の出力は、ｍｕｘ１５２２への入力としての役割を果たすように示され、ｍｕｘ１５２２は、ブロック１５１４の出力としての別の入力として受信する。ｍｕｘ１５２２は、バス１３１０へ接続される出力１５３０を生成する。ｍｕｘ１５０４および１５０２への入力いくつかは、ブロック１３１６から受信される。
【０１０２】
ｍｕｘ１５０４および１５０２の各々は、４つの入力を受信するように示される。ｍｕｘ１５０４の入力のうちの１つ、ｄｐは、ブロック１３０６からｍｕｘ１５０２の入力、ｄｐとして受信される。ｍｕｘ１５０４の別の入力は、ブロック１５１４の出力の一連の最下位ビットからもたらされ、ｍｕｘ１５０２の入力のうちの１つも同様である。ｍｕｘ１５０４の別の入力は、ブロック１５１４の同一の出力の最上位ビットからもたらされる。しかし、ｍｕｘ１５０４の別の入力は、値が「０」である。ｍｕｘ１５０２の入力のうちの１つは値が「１」であり、入力のうちの別のものは値が「−１」である。「０」、「１」、および「−１」の値は、これらの値がさまざまな動作において繰り返し利用されているため、この値の存在がシステム性能を向上させるという点において、ブロック１３２４によって実行される動作を迅速に処理する目的で提供される。性能を向上させるために利用される、複数のブロック１５１０が存在してもよいことが留意されるべきである。ブロック１３２４は、実行される多数の動作が、単一のクロックサイクルで実行されることを可能にするために、図１５において示されるように組織される。
【０１０３】
動作において、ブロック１５１０および１５１２は、ブロック１５０８および１５０６によってそれぞれ提供されるＡおよびＢの値で動作する。ｍｕｘ１５１６への２つのその他の入力は、後に簡潔に説明されるブロック１５２０内のリダクション動作ブロック（図１５に図示せず）によって生成される。これら２つの入力は、ここでは「隣接アキュムレータレジスタ」および「リダクションアキュムレータレジスタ」と呼ばれ、各々は２Ｎ幅である。
【０１０４】
ブロック１５１２は、デスプレッド動作における使用のために、ブロック１５１０によって実行される、条件付き加算または条件付き減算演算を可能にする２Ｎ幅レジスタである。ブロック１５１２は、実質的に、ブロック１５１０による使用のために、ＡおよびＢの値を改変する。
【０１０５】
ｍｕｘ１５２２は、実質的に、信号１５３０を介してブロック１３０２に選択的に提供されるように、および、ｍｕｘ１５２２へのさらに別の入力として提供される選択信号によって決定されるように、ブロック１５１４によって保存された後、ブロック１５１０の出力を可能にする。そうでないと、ブロック１５１０の結果は、蓄積加算動作を行い、その最終結果は、ブロック１３０２に提供される前に、ブロック１５１８および１５２０を介して、ブロック１５２０に保存される。
【０１０６】
ブロック１３２４は、以下の動作に対応する１つまたは複数のＡＬＵｓを備えるＮレイヤーＡＬＵである。
−  ２つのＮビット値が、その和分または差分を生成するために動作されるＮ加算／減算動作
−  ２つの入力値のＮビットのＸＯＲ
−  ２つのＮビット入力値の最大／最小動作
−  ２つのＮビット入力値の最大＊動作であって、その結果は、次のように計算される：ｍａｘ（ａ、ｂ）＋定数（メモリまたはあらかじめ組み込まれるルックアップテーブルから）
−  条件付き加算−減算：一般的にブロック１５１２の使用によりもたらされるこの機能は、条件付きで、入力コードによって決まるＮビット値のストリームを加算または減算する。入力コードは、制御レジスタにあらかじめロードされる。入力コードにおける「１」は、減算動作をもたらし、「０」は加算動作をもたらす。出力は、１６ビットのアキュムレータレジスタで使用可能である。この機能に対応しているその他の特別ＡＬＵからの「収集」動作のためのサポートも存在する。
−  条件付きの加算−減算動作と同一のアキュムレータを使用するＳＡＤ
−  Ｎ×Ｎ乗算。
【０１０７】
ブロック１５１０は、各ブロック１５１０が少なくとも１２８ビットを読み込むことができる、つまり、２つのブロックは、メモリにコンテンションが存在しない場合、少なくとも２５６ビットのデータをクロックサイクル毎に読み込むことができる、Ｗタイプのサブプロセッサに共通している。
【０１０８】
図１６は、本発明の実施形態にしたがい、ブロック１５２０内に含まれるリダクション回路ブロック１６０２のブロック図を示す。図１６において、Ｍ段階のアキュムレータレジスタ回路、アキュムレータレジスタブロック１６１０に示されるアキュムレータレジスタ回路の各々の詳細が示される。例えば、アキュムレータレジスタ回路ブロック１６０２は、図１６に示されるように接続されるブロック４つの１６１０を含む。同様に、アキュムレータレジスタ回路ブロック１６０４〜１６０８の各々は、ブロック１６１０のような４段階のアキュムレータレジスタ回路を含む。ブロック１６０２〜１６０８のうちの各々内での各段階の出力または結果は、次の段階への入力として使用され、蓄積を達成するために加算される。ブロック１６０２〜１６０８は、４段階またはブロック１６１０のような４ブロックを含むように示されるが、その他の数のブロックまたは段階が使用されてもよい。
【０１０９】
ブロック１６０２〜１６０８の各々の結果は、その他のブロックに使用可能になる。例えば、ブロック１６０２の結果は、ブロック１６０４への入力としての役割を果たし、ブロック１６０４の結果または出力は、ブロック１６０８内の最終のアキュムレータレジスタブロックへの入力としての役割を果たし、ブロック１６０６の結果または出力は、ブロック１６０８への入力としての役割を果たす。ブロックの結果は、前方向および同時に段階の蓄積に提供されるため、４段階のアキュムレータレジスタブロックが用いられる場合、７サイクルのみがリダクション動作を実行するのに必要とされる。
【０１１０】
ブロック１６は、アキュムレータに接続されるｍｕｘから構成される。ｍｕｘは、アキュムレータに提供されるために、２つの入力のうちの１つを選択する２：１のｍｕｘである。ブロック１６１０のｍｕｘの２つの入力のうちの１つは、ブロック１５１４の出力によって提供され、その他の入力は、前の段階のアキュムレータレジスタブロックの結果である。このように、図１６のリダクション機能は、データに対するそのマニピュレーションにおいて、柔軟性がある。段階の直前の出力からの入力の各々は、ｍｕｘ１５１６への隣接アキュムレータシーケンスを生成する「隣接（ｎｅｉｇｈｂｏｒ）」信号１６１６と呼ばれる。段階内のいくつかの出力は、ｍｕｘ１５１６へのリダクションアキュムレータｓｅｇを生成し、「リダクション」信号１６１８と呼ばれる。ブロック１６０８の最終のアキュムレータブロックの出力は、ｍｕｘ１５３０に接続される出力１６２０を生成する。図１６のリダクション回路は、リダクション動作を実行し、電力消費を節約するために、最小のクロックサイクルをもたらす。
【０１１１】
図１７は、本発明の実施形態にしたがい、ハイレベルブロック図式において、ブロック１３２６に含まれる回路のさらなる詳細を示す。図１７において、ブロック１３２６は、ブロック１３０６から受信されるデータ入力をシフトするために、シフタ１７０２〜１７１２を含むように示される。一実施形態において、入力１７００は１２８ビットであるが、その他のビット数が用いられてもよい。シフタ１７０２〜１７１２の各々の出力は、レジスタバンクブロック１７１４に接続されて示される。シフタ１７０２〜１７１２は、入力１７００のビットの異なる結合を生成する。
【０１１２】
ブロック１７１４は、シフタ１７０２〜１７１２の出力の結合を生成するために使用されるレジスタ１７１６から１７４６を含む複数のレジスタを備える。例えば、シフタ１７０２〜１７１２の出力の各々の最低８ビットは、選択的にどの最低８ビットが最終的に生成されるべきかを選択するために、ｍｕｘを経由するように生成され得る。したがって、ブロック１７１４のレジスタの各々は、シフトされたビットの「好位置（ｉｎｔｅｒｅｓｔｉｎｇ  ｐｏｓｉｔｉｏｎ）」で、任意に選択されることができる。好位置は、シフタ１７０２〜１７１２の各々の出力によって決定される。ブロック１７１４の出力は、バス１３１０に提供される。
【０１１３】
したがって、本発明の実施形態において、ブロック１３２６は、４つの２０ビットおよび２つの２４ビット入力レジスタを備える。それは、８つの１６ビットレジスタを含み、入力レジスタからの３２、１６、８、および４ビットのビットの組合せがランダムに生成および保存される。ブロック１３２６は、次の３つのモードで使用され得る。出力生成のために２つの特定の２０ビットレジスタを使用する。２）出力生成のために４つの２０ビットレジスタを使用する。または、３）出力生成のために７つ全てのレジスタを使用する。シフタ１７０２〜１７１２は、入力レジスタを含むが、当業者には、シフタの構造と機能は既知であるため、図示されない。
【０１１４】
ブロック１３２６の結合機能を実行するために必要なハードウェアあるいはブロックまたは回路の数を減らすために、３２ビットの出力レジスタにおける各ビットは、第１モードで、最下位８ビットから２つの２０ビットのレジスタに、第２モードで、４つの最下位ビットを４つの２０ビットのレジスタに、第３モードで、２つの最下位ビットを４つの２０ビットのレジスタに、４つの最下位ビットを２４ビットのレジスタに、満たすことができる。入力レジスタからのランダム結合は、２ステップの処理である。第１のステップは、「好（ｉｎｔｅｒｅｓｔｉｎｇ）」ビットを最下位位置にシフトすることを伴い、その最下位位置から出力レジスタへの無作為に満たすことが、そのモードで可能であり得る。本明細書において図１７に関連して使用される例において、ブロック１３２６は、好ビットを最下位位置にするために、入力レジスタでのシフト動作でパイプラインされる場合に、サイクル毎に１６の結合されたビットを生成することができる。出力のいくつかの結合は、多数のクロックサイクルを必要とし得る。
【０１１５】
メモリ１３２６は、一般的なランダムアクセスメモリであるため、さらなる詳細は説明されない。しかし、メモリのサイズが、Ｎタイプのサブプロセッサが使用されるアプリケーションに基づくということだけを言えば、十分である。
【０１１６】
図１８は、本発明の実施形態において、ハイレベルブロック図式において、ブロック１３３０に含まれる回路のさらなる詳細を示す。図１８において、１ワードレジスタ１８０２は、８ビット位置を含むように示され、各ビット位置１８０４は、ビット選択回路１８０６によって改変されることが可能である。その改変は、「０」の挿入、「１」の挿入、ビットの反転に相当する、またはビットを全く改変しない、「ＮＯＰ」つまり動作無し（ｎｏ−ｏｐｅｒａｔｉｏｎ）に相当する、ビットのＮＯＴｉｎｇ、を含むがそれだけに限定されない。１ワードレジスタは繰り返される、すなわち、ワードレジスタ１８１０〜１８２０は、それぞれ、ワードをレジスタ１８０２として保存および改変する。したがって、１６ビットワードおよび８ワードの例において、八つの１６ビットワードの改変は、同一のことを実行するためには多数のサイクルを必要とする従来のＤＳＰｓと違って、１クロックサイクルにおいて実行される。ワードの各ビットの改変またはパンクチュアリング／デパンクチュアリングは、図１８に示されるように、相互およびレジスタ１８０２に接続されるｍｕｘ１８２４およびフリップフロップ１８２６によって制御される。レジスタ１８１０〜１８２２も、その他のｍｕｘおよびフリップフロップ回路に同様に接続される。モード選択ビットは、ｍｕｘの４つの入力のうちのどれが選択されるかを選択し、それは命令コードから生成される。ｍｕｘ１８２４へのインプット１８２８のうちの２つも命令コードからもたらされるが、ｍｕｘ入力のその他の２つはメモリからもたらされ、図１８に示されるように、そのうちの１つは他方の反転版であり得る。
【０１１７】
ブロック１３３０の回路への入力は、ブロック１３３２から生成され、ブロック１３３２は、ここで簡潔に説明すると、完全インタリーブ、部分的インタリーブ、または非インタリーブのＮビットワードをブロック１３３０に生成する。一例において、動作は２５６ビットワードにあり、その場合、ブロック１３３０は、所定の時間に１６ビットで動作する。プリフェッチされた制御ワードは、１６ビットワード内のどのビットが反転されるべきかを決定するために使用される。選択的に、「０」または「１」の値が、反転する他に、特定のビット位置に入力される。
【０１１８】
図１９は、本発明の実施形態にしたがい、ハイレベルブロック図式において、ブロック１３３２に備えられる回路のさらなる詳細を示す。図１９において、メモリアレイ１９０２は、バス１３１６を介して入力装置から入力１０４、およびバス１３１６を介してリードイネーブル入力１９０６を受信する、さらにブロック１３０２に提供される出力装置信号１９１０を生成するために、制御行−列アドレス生成ブロック１９０８から入力をさらに受信するように示される。一例において、ブロック１９０２は、１２８×１６ビットから構成されるメモリアレイを含む。データは、行ベースまたは列ベースで、ブロック１９０２から書き出しまたは読み込まれることができる。読み込まれ得るのはブロック１９０２のメモリアレイの行であり、読み込まれ得るのは、ブロック１９０２のメモリアレイの列である。さらに、データは、行ベースで書き込まれることが可能であるが、列ベースで読み込まれることも可能であり、逆も可能である。
【０１１９】
図２０は、本発明の実施形態にしたがい、ハイレベルブロック図式において、ブロック１３３４に備えられる回路のさらなる詳細を示す。図２０において、ブランチメトリックユニット２００２は、ブロック１３３２からの入力を受信するように示され、加算／比較／選択ブロックに接続されて示され、加算／比較／選択ブロックは、サバイバ（ｓｕｒｖｉｖｏｒ）メモリブロック２０１２に接続されて示され、順に、サバイバメモリブロック２０１２は、ｍｕｘ２０２０に接続されて示され、ｍｕｘ２０２０は、バス１３１０に接続される出力２０２２を生成する。ｍｕｘ２０２０は、ｍｕｘ２０１６から入力を受信するアキュムレータ２０１８の出力から、別の入力を受信するようにさらに示される。任意で、ｍｕｘ２０１６への入力を生成するために、絶対差の和（ＳＡＤ）ブロック２００８およびデスプレッダ（デスプレッドするために）ブロック２０１０が使用される。ブロック２００８および２０１０が存在しない場合、ｍｕｘ２０１６、ブロック２０１８、およびｍｕｘ２０２０が使用され得る。ローカルメモリ２００６は、ブロック２００４に接続されて示される。ブロック２００２は、ビタビコード／デコードに精通する者には既知であるブランチメトリック計算を実行する。ビタビコード／デコードに精通する者に既知であるサバイバパスも、ブロック２０１２に保存される。
【０１２０】
ブロック１３３４は、ターボデコーダ、ＳＡＤおよびデスプレッド機能を実行することができる。一例において、３２〜２５６の加算−比較−選択動作は、ローカルメモリ２００６によって生成される１６ビットブランチおよびパスメトリック値で、ブロック２００４によって、平行して実行されることができる。一例において、ローカルメモリ２００６のサイズは、１キロビットおよび１６キロビットである。
【０１２１】
ブロック１３３４に備えられる複数のブロック２００４が存在してもよく、その各々は、８ビット符号付き加算器を備えてもよい。さらに、各々は、ウィニング（ｗｉｎｎｉｎｇ）パスおよび決定ビットを戻す比較および選択ブロックを備えてもよい。加算−比較−選択動作は、ウィニングパスおよび決定ビットをもたらす。ウィニングパスは、トレリスを伝えるために、「マルチキャスト」相互接続計画を使用する隣接するブロック２００４と共有されることができる。ウィニングブランチおよびパスメトリック値を有する決定ビットは、バックトラックのために保存される。
【０１２２】
ブロック２００８は、４つの８ビットのＡＬＵｓを使用し、一例において、サイクル毎に計算可能な４つの絶対差を使用する。リダクションツリーは、絶対差を１６ビットのアキュムレータに蓄積するために、ブロック２００４に組み込まれる。マルチキャストネットワークは、これらの値をさらにリダクションするために送信するように使用されることができる。総数１２８の８ビット（６４の１６ビット）ブロック２００８が、クロックサイクル毎に可能である。しかしながら、オーバーヘッドの全てを考慮することにより少数にすることが、効率的利用であると考えられる。
【０１２３】
ＡＬＵは、特別ＡＬＵブロックが実行し、上に説明されたような同一の条件付き加算−減算機能を実行する。デスプレッドが必要な制御ビットは、それがレジスタにフェッチおよび保存される場所から、ローカルメモリにロードされなければならない。結果は、リダクション動作のためにその他のブロック２００４に転送可能な場所から、１６ビットのアキュムレータに蓄積される。デスプレッドによって、一例において、単一サイクルで１２８の条件付き加算−減算を同時に実行することが可能である。このユニットにおける遷移毎のエネルギーは、デスプレッドおよびＳＡＤ以外のいくつかの一般的な機能のために機能する特別ＡＬＵに使用されるものよりも高い。指より少ない数、または低い動き検出率のためには、特別ＡＬＵはより電力効率の良い選択である。
【０１２４】
図２１は、本発明の実施形態にしたがう、プロセッサ２２を使用してフローおよびツールをプログラミングする例を示す。図２２は、本発明の実施形態の拡張性の例を示す。例えば、図２２において、バス２２０４を使用して相互接続されるように示される、クラスタ２２０２またはＷタイプおよびＮタイプのサブプロセッサが存在する。各クラスタ２２０２は、２つまたは４つのサブプロセッサを備える。バス２２０４は、一例において、標準のＳｏＣバスである。階層的設計方法論を保持することによって、相互接続性が対処される。
【０１２５】
プロセッサ２０をスケーリングすることにより、各クラスタ用の別々のバスを有する４つのサブプロセッサのクラスタをもたらし、あるいは、４つのサブプロセッサは、単一のメモリを共有し得る。プロセッサに関する拡張性は、一般的に、プロセッサの数を増加、またはプロセッサの周波数または速度を増加させることによってもたらされてきた。しかしながら、複雑なアプリケーションは、従来行なわれてきたもの以上のスケーリングを必要とする。本発明において、ＷタイプおよびＮタイプのサブプロセッサは、処理を形成する４つのそのようなサブプロセッサが単一のアプリケーションを処理することができるように修正される。
【０１２６】
したがって、プロセッサ２２は、Ｃコードからのコンパイルに直接基づいて、ＲＩＳＣおよびスーパースケーラプロセッサよりも効率的な、対象のアプリケーションに見られる制御およびシーケンシャルＤＳＰコードを実行する能力が備えられる。同時に、プロセッサ２２は、レガシーおよびライトアプリケーションのために、ＲＩＳＣおよびスーパースケーラプロセッサに使用される自動コード生成技術を利用するように設計される。さらに、プロセッサ２２は、アプリケーションマッピングおよび開発のために、Ｓｉｍｕｌｉｎｋのような、成熟した業界基準のソフトウェアツールで機能する。ムーアの法則が、プロセッサ２２の性能を向上させるために利用されることができる。プロセッサ２２は、非常に平行性のある機械であるだけでなく、異種マルチプロセッサでもある。要求事項の多いマルチメディアおよび通信のアプリケーションに対処するために、平行性のある異種のマルチプロセッサが必要とされていることが、業界と学界の両方において証明された事実である。プロセッサ２２、電力および面積の非効率的な技術を使用しないで、ＶＬＩＷに使用される多くの自動コード生成技術の利用を可能にする。プロセッサ２２は、Ｃからの制御コードのコンパイルに基づき、繰り返しパターンを利用するように最適化される。このことは制御電力を大幅に減少させ、コンパイルされたシリアルコードを効率的に実行することを可能にする。さらに、プロセッサ２２のプログラミングモデルは、Ｓｉｍｕｌｉｎｋのようなプログラマーに精通するツールを使用して、ＤＳＰプログラマーの大きなコミュニティを適合させるように設計される。その開発フローは、制御およびシーケンシャルＤＳＰコードの効率的なＣコンパイル手段を提供する。また、極めて効率的な通信およびマルチメディアのカーネルのライブラリの広範囲のセットが提供される。例として、ＦＦＴ、ＩＤＣＴ、ＲＲＣ、ビタビ、ＶＬＣ、２Ｄ／３Ｄグラフィック、ターボコード、およびデスクランブラのパラメータ化されたライブラリが挙げられる。
【０１２７】
プロセッサ２２におけるデータパス設計は、注目されかつ非常に有利なアプリケーションの混合を効率的に対処するために、さまざまな粒度の機能ユニットを接続するさまざまな相互接続構造を成功裏に統一する。
【０１２８】
プロセッサ２２の拡張性は、標準のＳｏＣバスに基づいて、ブロック内の最隣接接続を有する単一ブロック（時分割）で、全てのアプリケーションを適合させるように設計される。多数のブロックが、そのブロック間での専用のコミュニケーション無しで、多数のアプリケーションを処理するために使用可能であるため、非効率性が大幅に減少し、システムレベルの非決定論の全てが削減される。
【０１２９】
図２３は、本発明の拡張性の利点のいくつかを示すチャートを示す。
【０１３０】
本発明は特定の実施形態に関して説明されたが、その代替および改変が、当業者にとっては明白であることが理解される。したがって、以下の請求の範囲は、本発明の真の精神および範囲内にあるそのような代替および改変の全ての範囲をカバーするように解釈されることが意図される。
【図面の簡単な説明】
【０１３１】
【図１】図１は、本発明の実施形態を含むデジタル製品１２に関するアプリケーション１０が示される。
【図２ｉ】図２ｉは、本発明の実施形態にしたがう、メモリコントローラおよびダイレクトメモリアクセス（ＤＭＡ）回路２４に接続される、異種の、高性能で、拡張可能なプロセッサ２２を備える、典型的な集積回路２０を示す。
【図２ｉｉ】図２ｉｉは、本発明の実施形態にしたがう、メモリコントローラおよびダイレクトメモリアクセス（ＤＭＡ）回路２４に接続される、異種の、高性能で、拡張可能なプロセッサ２２を備える、典型的な集積回路２０を示す。
【図３】図３は、本発明の実施形態にしたがう、プロセッサ２０のさらなる詳細を示す。
【図４】図４は、本発明の実施形態にしたがう、ブロック７４または７６などのＷタイプのブロックのうちの１つの中に備えられるブロックまたは構造のハイレベルブロック図を示す。
【図５】図５は、本発明の実施形態にしたがう、ブロック４０２に備えられる回路ブロックのブロック図を示す。
【図６】図６は、マクロ機能ユニット内、特にブロック４０２、４０４、４０６、および４０８に転送するレジスタファイルのために用いられる一般構造をさらに詳細に示す。
【図７】図７は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック４０８のさらなる詳細を示す。
【図８】図８は、本発明の実施形態にしたがう、ブロック図形式において、ブロック４０４のさらなる詳細を示す。
【図９ｉ】図９ｉは、特に、置換の実行に関するブロック４０４のさらなる詳細を示す。
【図９ｉｉ】図９ｉｉは、特に、置換の実行に関するブロック４０４のさらなる詳細を示す。
【図１０】図１０は、特に、置換の実行に関するブロック４０４のさらなる詳細を示す。
【図１１】図１１は、本発明の実施形態にしたがう、ブロック図形式において、ブロック４０６の構成要素のさらなる詳細を示す。
【図１２】図１２は、本発明の実施形態にしたがう、ブロック７８の詳細のハイレベルブロック図を示す。
【図１３】図１３は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック７８のさらなる詳細を示す。
【図１４】図１４は、本発明の実施形態にしたがう、ブロック１３２２のさらなる詳細を示す。
【図１５】図１５は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック１３２４に備えられる回路のさらなる詳細を示す。
【図１６ｉ】図１６ｉは、本発明の実施形態にしたがう、ブロック１５２０内に備えられるリダクション回路ブロック１６０２のブロック図を示す。
【図１６ｉｉ】図１６ｉｉは、本発明の実施形態にしたがう、ブロック１５２０内に備えられるリダクション回路ブロック１６０２のブロック図を示す。
【図１７】図１７は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック１３２６に備えられる回路のさらなる詳細を示す。
【図１８】図１８は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック１３３０に備えられる回路のさらなる詳細を示す。
【図１９】図１９は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック１３３２に備えられる回路のさらなる詳細を示す。
【図２０】図２０は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック１３３４に備えられる回路のさらなる詳細を示す。
【図２１ｉ】図２１ｉは、本発明の実施形態にしたがう、プロセッサ２２を使用してフローおよびツールをプログラミングする例を示す。
【図２１ｉｉ】図２１ｉｉは、本発明の実施形態にしたがう、プロセッサ２２を使用してフローおよびツールをプログラミングする例を示す。
【図２１ｉｉｉ】図２１ｉｉｉは、本発明の実施形態にしたがう、プロセッサ２２を使用してフローおよびツールをプログラミングする例を示す。
【図２１ｉｖ】図２１ｉｖは、本発明の実施形態にしたがう、プロセッサ２２を使用してフローおよびツールをプログラミングする例を示す。
【図２１ｖ】図２１ｖは、本発明の実施形態にしたがう、プロセッサ２２を使用してフローおよびツールをプログラミングする例を示す。
【図２１ｖｉ】図２１ｖｉは、本発明の実施形態にしたがう、プロセッサ２２を使用してフローおよびツールをプログラミングする例を示す。
【図２２】図２２は、本発明の実施形態の拡張性の例を示す。
【図２３ｉ】図２３ｉは、本発明の拡張性の利点のいくつかを示すチャートを示す。
【図２３ｉｉ】図２３ｉｉは、本発明の拡張性の利点のいくつかを示すチャートを示す。
【図１】
2008507039.tif 000003
【図２ｉ】
2008507039.tif 000004
【図２ｉｉ】
2008507039.tif 000005
【図３】
2008507039.tif 000006
【図４】
2008507039.tif 000007
【図５】
2008507039.tif 000008
【図６】
2008507039.tif 000009
【図７】
2008507039.tif 000010
【図８】
2008507039.tif 000011
【図９ｉ】
2008507039.tif 000012
【図９ｉｉ】
2008507039.tif 000013
【図１０】
2008507039.tif 000014
【図１１】
2008507039.tif 000015
【図１２】
2008507039.tif 000016
【図１３】
2008507039.tif 000017
【図１４】
2008507039.tif 000018
【図１５】
2008507039.tif 000019
【図１６ｉ】
2008507039.tif 000020
【図１６ｉｉ】
2008507039.tif 000021
【図１７】
2008507039.tif 000022
【図１８】
2008507039.tif 000023
【図１９】
2008507039.tif 000024
【図２０】
2008507039.tif 000025
【図２１ｉ】
2008507039.tif 000026
【図２１ｉｉ】
2008507039.tif 000027
【図２１ｉｉｉ】
2008507039.tif 000028
【図２１ｉｖ】
2008507039.tif 000029
【図２１ｖ】
2008507039.tif 000030
【図２１ｖｉ】
2008507039.tif 000031
【図２２】
2008507039.tif 000032
【図２３ｉ】
2008507039.tif 000033
【図２３ｉｉ】
2008507039.tif 000034
【手続補正書】
【提出日】平成19年3月13日(2007.3.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
異種で高性能で拡張可能なプロセッサであって、
Ｗビット以上を並列に処理することが可能な少なくとも１つのＷタイプのサブプロセッサであって、Ｗは整数値である、サブプロセッサと、
Ｎビットを並列に処理することが可能な少なくとも１つのＮタイプのサブプロセッサであって、Ｎは整数値でありＷより小さい、サブプロセッサと、
該少なくとも１つのＷタイプのサブプロセッサと該少なくとも１つのＮタイプのサブプロセッサとを接続する共有バスと、
該少なくとも１つのＷタイプのサブプロセッサと該少なくとも１つのＮタイプのサブプロセッサとに接続されて共有されるメモリと
を備え、該Ｗタイプのサブプロセッサは、メモリを出入りするバイトを再配置し、アプリケーションの実行に対応することにより、高速動作を可能にする、プロセッサ。
【請求項２】
前記プロセッサは、拡張可能である、請求項１に記載の異種で高性能で拡張可能なプロセッサ。
【請求項３】
少なくとも１つのＷタイプのサブプロセッサのうちの２つと、前記少なくとも１つのＮタイプのサブプロセッサのうちの２つである、請求項１に記載の異種で高性能で拡張可能なプロセッサ。
【請求項４】
前記少なくとも１つのＷタイプのサブプロセッサと前記少なくともＮタイプのサブプロセッサは、マルチメディアアプリケーションに対するプログラムを実行する、請求項２に記載の異種で高性能で拡張可能なプロセッサ。
【請求項５】
前記少なくとも１つのＷタイプのサブプロセッサのうちの各々は、複数のマクロ機能ユニットを含む、請求項４に記載の異種で高性能で拡張可能なプロセッサ。
【請求項６】
前記複数のマクロ機能ユニットは、該複数のマクロ機能ユニットの他のものによる使用のためのメモリアドレスを生成するロードストアブロックを含む、請求項５に記載の異種で高性能で拡張可能なプロセッサ。
【請求項７】
前記複数のマクロ機能ユニットは、前記ロードストアブロックに接続されたスカラー算術論理ユニット（ＡＬＵ）および乗加算ブロックを含み、該スカラー算術論理ユニットおよび該乗加算ブロックは、該ロードストアブロックから受信されるデータに対し、スカラー算術演算および論理演算および乗算演算を実行する、請求項６に記載の異種で高性能で拡張可能なプロセッサ。
【請求項８】
前記複数のマクロ機能ユニットは、ベクトルＸブロックを含み、該ベクトルＸブロックは、前記ロードストアブロックと前記スカラーＡＬＵと複数の乗加算ブロックとに接続され、該ロードストアブロックからのデータに対してベクトル演算を実行し、該ベクトルＸブロックは、ベクトルデータを生成する、請求項７に記載の異種で高性能で拡張可能なプロセッサ。
【請求項９】
前記複数のマクロ機能ユニットは、ベクトルＡＬＵおよび乗加算ブロックを含み、該ベクトルＡＬＵおよび該乗加算ブロックは、前記スカラーＡＬＵおよび乗加算ブロックおよび前記ベクトルＸブロックに接続され、該ベクトルＸブロックから受信されるベクトルデータに対し、ベクトルＡＬＵ演算および乗加算演算を実行する、請求項８に記載の異種で高性能で拡張可能なプロセッサ。
【請求項１０】
前記少なくとも１つのＮタイプのサブプロセッサは、ストアユニットブロックと、マクロ機能ブロックと、ロードユニットブロックとを含み、該マクロ機能ブロックは、ロードユニットブロックに接続され、該マクロ機能ブロックを該ストアブロックに接続するためのマクロ機能バスにさらに接続される、請求項２に記載の異種で高性能で拡張可能なプロセッサ。
【請求項１１】
前記少なくとも１つのＮタイプのサブプロセッサは、複数のＷタイプのサブプロセッサのうちの少なくとも１つによって共有される、データパスユニット（ＤＰＵ）ブロックと、制御装置と、シーケンサと、データアドレスジェネレータ（ＤＡＧ）ブロックとを含む、請求項１０に記載の異種で高性能で拡張可能なプロセッサ。
【請求項１２】
前記マクロ機能ブロックは、ガロアフィールドの乗加算（ＭＡＣ）ブロックを含み、該ガロアフィールドの乗加算ブロックは、前記マクロ機能バスと前記ロードユニットブロック１３０６とに接続され、ガロアフィールドの演算を実行する、請求項１０に記載の異種で高性能で拡張可能なプロセッサ。
【請求項１３】
前記マクロ機能ブロックは、特別ＡＬＵを含み、該特別ＡＬＵは、前記ロードユニットブロックと前記ロードユニットブロックとに接続され、特別なＡＬＵ演算を実行する、請求項１２に記載の異種で高性能で拡張可能なプロセッサ。
【請求項１４】
前記マクロ機能ブロックは、パンクチュアリング／デパンクチュアリングブロックを含み、該パンクチュアリ／デパンクチュアリブロックは、前記ロードユニットブロックと前記ロードユニットブロックとに接続され、パンクチュアリング／デパンクチュアリング演算を実行する、請求項１３に記載の異種で高性能で拡張可能なプロセッサ。
【請求項１５】
前記マクロ機能ブロックは、インタリーバブロックを含み、該インタリーバブロックは、前記ロードユニットブロックと前記ロードユニットブロックとに接続され、インタリーバ演算を実行する、請求項１４に記載の異種で高性能で拡張可能なプロセッサ。
【請求項１６】
前記マクロ機能ブロックは、ビタビブロックを含み、該ビタビブロックは、前記ストアユニットブロックと前記インタリーバブロックとに接続され、ビタビ演算を実行する、請求項１５に記載の異種で高性能で拡張可能なプロセッサ。
【請求項１７】
前記マクロ機能ブロックは、結合器ブロックを含み、該結合器ブロックは、前記ロードユニットブロックと前記ロードユニットブロックとに接続され、結合演算を実行する、請求項１６に記載の異種で高性能で拡張可能なプロセッサ。
【請求項１８】
前記少なくとも１つのＮタイプのサブプロセッサは、前記ストアユニットブロックと前記ロードユニットブロックとの間に接続されたＸユニットブロックを含む、請求項１６に記載の異種で高性能で拡張可能なプロセッサ。
【請求項１９】
前記少なくとも１つのＷタイプのサブプロセッサと前記少なくとも１つのＮタイプのサブプロセッサとの間の直接通信のために、該少なくとも１つのＷタイプのサブプロセッサと該少なくとも１つのＮタイプのサブプロセッサとの間に接続された共有レジスタを含む、請求項１６に記載の異種で高性能で拡張可能なプロセッサ。
【請求項２０】
異種で高性能で拡張可能なプロセッサを備える、情報を処理する方法であって、
Ｗビットを並列に処理することが可能な少なくとも１つのＷタイプのサブプロセッサを使用してデータを処理することであって、Ｗは整数値である、ことと、
同時に、Ｎビットを並列に処理することが可能な少なくとも１つのＮタイプのサブプロセッサを使用してデータを処理することであって、Ｎは整数値であり、Ｗより１／２倍小さい、ことと、
低電力消費とプログラマビリティの容易さとを維持する一方で、マルチメディアアプリケーションの高速実行をもたらすことと
を含む、方法。
【請求項２１】
高性能プロセッサであって、該高性能プロセッサは、
Ｎビットを並列に処理することが可能な少なくとも１つのＮタイプのサブプロセッサであって、Ｎは整数値である、サブプロセッサを備え、該サブプロセッサは、
少なくとも１つの制御ブロックと、
マクロ機能ブロックであって、
ガロアフィールドの乗加算（ＭＡＣ）ブロックと
特別なＡＬＵと、
結合器ブロックと、
インタリーバブロックと、
ビタビブロックと
を有する、マクロ機能ブロックと
を含む、高性能プロセッサ。
【請求項２２】
マクロ機能バスを介して前記マクロ機能ブロックに接続されている第１のストアバッファと第２のストアバッファとを有しているストアユニットブロックをさらに含んでおり、第１のロードバッファと第２のロードバッファとを含んでいるロードユニットブロックをさらに有しており、該第１および第２のストアバッファと、該第１および第２のロードバッファとが、ダブルバッファリングの効果により、該ストアユニットブロックと該ロードユニットブロックとの同時アクセスに起因する「失速」を低減させる、請求項２１に記載の高性能プロセッサ。
【請求項２３】
高性能プロセッサであって、該高性能プロセッサは、
Ｗビットを並列に処理することが可能な少なくとも１つのＷタイプのサブプロセッサであって、Ｗは整数値である、サブプロセッサを備え、該サブプロセッサは、
制御ブロックと、
ロード／ストアマクロ機能ユニット（ＭＦＵ）ブロックと、
スカラー算術論理ユニット（ＡＬＵ）と、
ベクトルデータを再配置するベクトルＸ  ＭＦＵと、
ベクトルＡＬＵと
を含む、高性能プロセッサ。
【請求項２４】
前記ベクトルＸ  ＭＦＵブロックが、ベクトル保存マスクを生成するように動作する、請求項２３に記載の高性能プロセッサ。
【国際調査報告】
2008507039.tif 000035
2008507039.tif 000036