JP2008507039A - プログラム可能なプロセッサのアーキテクチャ - Google Patents

プログラム可能なプロセッサのアーキテクチャ Download PDF

Info

Publication number
JP2008507039A
JP2008507039A JP2007521614A JP2007521614A JP2008507039A JP 2008507039 A JP2008507039 A JP 2008507039A JP 2007521614 A JP2007521614 A JP 2007521614A JP 2007521614 A JP2007521614 A JP 2007521614A JP 2008507039 A JP2008507039 A JP 2008507039A
Authority
JP
Japan
Prior art keywords
block
processor
heterogeneous
high performance
expandable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007521614A
Other languages
English (en)
Inventor
ランチャンドラン アミト,
レイド ハウザー ジュニア ジョン,
Original Assignee
スリープラスワン テクノロジー, インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by スリープラスワン テクノロジー, インコーポレイテッド filed Critical スリープラスワン テクノロジー, インコーポレイテッド
Publication of JP2008507039A publication Critical patent/JP2008507039A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7864Architectures of general purpose stored program computers comprising a single central processing unit with memory on more than one IC chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Advance Control (AREA)
  • Microcomputers (AREA)

Abstract

本発明の一実施形態は、Wビットを平行して処理することが可能な少なくとも1つのWタイプのサブプロセッサ(74、76)(Wは整数値である)と、Nビットを平行して処理することが可能な少なくとも1つのNタイプのサブプロセッサ(78、80)(NはWより1/2倍小さい整数値である)とを有する、異種の、高性能で拡張可能なプロセッサを含む。前記プロセッサは、前記少なくとも1つのWタイプのサブプロセッサと少なくとも1つのNタイプのサブプロセッサを接続する共有バス、および前記少なくとも1つのWタイプのサブプロセッサと前記少なくとも1つのNタイプのサブプロセッサに接続されて共有されるメモリ(312)を備え、前記Wタイプのサブプロセッサは、高速動作を可能にするアプリケーションの実行に対応するようメモリを再配置する。

Description

(関連出願の引用)
本発明は、2004年7月13日に出願され、「Quasi−Adiabatic Programmable or COOL Processors Architecture」と題された、米国仮特許出願第60/598,691号の利益、および、2004年8月2日に出願され、「Quasi−Adiabatic Programmable Processor Architecture」と題された、米国仮特許出願第60/598,417号の利益を主張する。
(本発明の分野)
本発明は、一般に、プロセッサの分野に関し、特に、通信およびマルチメディアのアプリケーションにおいて用いられる低消費電力、高性能、小ダイ面積(low die area)、ならびに、柔軟性および拡張性を有するプロセッサに関する。
(従来技術の説明)
セルフォンまたはモバイルフォン、デジタルカメラ、iPod、および携帯情報端末(PDA)などの消費者機器の人気の到来により、これらの機器を使用する通信についての多くの新規格が、この業界によって広く導入されてきた。これらの規格のいくつかには、H264、MPEG4、UWB、Bluetooth、2G/2.5G/3G/4G、GPS、MP3およびSecurityが挙げられる。しかしながら、異なる機器の間の通信を定める異なる規格を使用することは、とてつもない開発努力が必要であるという新たな問題が発生している。前述の問題の理由の1つは、現在市販されているプロセッサまたはサブプロセッサは、あらゆるデジタル素子によって容易にはプログラム可能でなく、さまざまな強制規格に適合していないということが挙げられる。家庭用電化製品の保証における新しい傾向としてこの問題が大きくなることは時間の問題であり、ましてや今後この業界により導入される規格はなおさらのことである。
プロセッサの新たな、あるいは現在の要求の1つは、低消費電力、さらには、複数のアプリケーションを処理するのに十分なコードの実行をもたらす能力である。現在の電力消費は、アプリケーション当たりおよそ数百ミリワット未満であるが、多数のアプリケーションを実行するためには、数百ミリワット未満にすることが目標である。プロセッサの別の要求は、低コストである。消費者製品においてプロセッサは幅広く利用されているため、プロセッサは費用をかけずに製造されなければならない。そうでなければ、最も一般的な家庭用電化製品におけるプロセッサの使用は、実利的ではない。
現在のプロセッサの問題の具体例を挙げると、いくつかの消費者製品において使用されるRISCに関連する問題、その他の消費者製品において使用されるマイクロプロセッサに関連する問題、さらにその他の消費者製品において使用されるデジタル信号処理プロセッサ(DSP)に関連する問題、さらにその他消費者製品において使用される特定用途向け集積回路(ASIC)に関連する問題、既知のプロセッサのいくつかに関連する問題が挙げられ、それぞれが独特の問題を示しており、以下に簡潔に説明される。これらの問題は、それぞれを使用する利点とともに、その不利点を説明する「欠点」の部分およびその利点を説明する「長所」の部分について、以下で説明される。
(A.RISC/スーパースケーラプロセッサ)
RISCおよびスーパースケーラプロセッサは、あらゆる汎用目的のコンピューティングに最も広く受け入れられるアーキテクチャのソリューションである。それらは、一般のソリューションのコンテクストにおいて特定の特殊な問題を解決するために、アプリケーション特有のアクセラレータを用いて強化されることが多い。
例:ARMシリーズ、ARCシリーズ、ストロングARMシリーズ、およびMIPSシリーズ。
長所:
・ 業界に広く受け入れられることによって、ツールチェーンがより成熟し、ソフトウェアの選択が幅広くなった。
・ 強固なプログラミングモデルが、Cのような高級言語からバイナリを生成するために使用される、極めて効率的な自動コードジェネレータによってもたらされた。
・ このカテゴリーにおけるプロセッサは、極めて優れた汎用目的のソリューションである。
・ ムーアの法則を性能向上のために効率的に使用することができる。
欠点:
・ アーキテクチャの汎用目的の性質は、価格、電力、性能の改善に関して、アプリケーションのセットまたはサブセットの一般/特定の特性を活用しない。
・ 提供される計算の量に対して、中程度から大量の電力を消費する。
・ 性能の向上は、いくつかのマルチメディアおよび通信のアルゴリズムに悪影響を与えるパイプラインレイテンシを代償にして主に達成される。
・ 一般的アルゴリズムに対する、より効率的な自動コード生成のための、複雑なハードウェアスケジューラ、高度な制御機構、および大幅に削減された制限により、このカテゴリーのソリューションの面積効率が低下した。
(B.超長命令語(VLIW)およびDSPs)
VLIWアーキテクチャは、デジタル信号処理スペースにおける極めて一般的なソリューションを生み出すために、RISCおよびスーパースケーラプロセッサのアーキテチャに見られる非効率性のいくつかを解消した。並列性が大幅に増加した。スケジューリングの負担が、面積を確保するためにハードウェアからソフトウェアに移行された。
例:TI 64xx、TI 55xx、StarCore SC140、ADI SHARCシリーズ。
長所:
・ ソリューションを信号処理スペースに制限することによって、RISCおよびスーパースケーラのアーキテクチャと比べて、3Pが改善された。
・ VLIWアーキテクチャは、RISCおよびスーパースケーラのアーキテクチャに比べ、より高いレベルの並列性を提供する。
・ 効率的なツールチェーンが急速に作成され、業界での幅広い受け入れが急速に広がった。
・ 自動コード生成およびプログラマビリティは、信号処理用に設計された多くのプロセッサがこのカテゴリーにあてはまるため、大幅な改善を示している。
欠点:
・ 問題解決能力は、デジタル信号処理スペースにまで低下するが、VLIWマシンのような一般的なソリューションが効率的な3Pを有するには広すぎる。
・ 制御は、多くのマルチメディアおよび通信のアプリケーションにおける、特に、基本制御コードに対し、高価であり、なおかつ、電力を消費する。
・ いくつかの電力および面積に関する非効率な技術が、自動コード生成を容易にするために使用された。ソフトウェアコミュニティによるこれらの技術への強い依存性は、この非効率性を世代から世代へと持ち越している。
・ VLIWアーキテクチャは、シリアルコードを処理するにはあまり適切ではない。
(C.再構成可能コンピューティング)
過去10年間にわたる業界および学界におけるさまざまな努力は、価格、電力、および性能の特性のようなASICを使用して柔軟性のあるソリューションを構築することに集中していた。その多くは、業界においてほとんど成果がなくても、現行法および成熟した法(matured law)ならびに設計パラダイムに挑戦した。その試みのほとんどは、アーキテクチャのような粗いFPGAに基づいてソリューションを生み出すことを目指していた。
長所:
・ 特定のアプリケーションに制限され、そのアプリケーションの範囲内で必要とされる柔軟性を提供するいくつかの設計は、価格、電力、性能の競争力があることが判明した。
・ 研究によると、制限されているが柔軟性のあるそのようなソリューションを、多くのアプリケーションのホットスポットに対処するように生み出すことが可能であることが示された。
短所:
・ このスペースにおけるいくつかの設計は、効率的かつ容易なプログラミングソリューションを提供しなかったので、DSPのプログラミングに精通しているコミュニティに広く受け入れられなかった。
・ Cのような高級言語からの自動コード生成は、その設計の多くにとって、実質的に不可能または極めて非効率的であった。
・ 3Pの利点は、1種類の相互接続および1レベルの粒度を使用して異種アプリケーションを統合しようと試みる場合に、失われた。提供された並列性の利用レベルが、大幅に犠牲になった。
・ 再構成オーバーヘッドは、ほとんどの設計に対する3Pにおいて重要であった。
・ 多くの場合において、外部インターフェースは、専用の再構成可能構造が業界標準のシステム設計手法に適合しなかったため、複雑であった。
・ 再構成生可能なマシンは単一プロセッサであり、基本制御の処理に対してさえ、タイトに集積されたRISCに大きく依存する。
(D.プロセッサのアレイ)
いくつかの最近の取り組みは、再構成可能なシステムを、異種アプリケーションを処理するのにより適切にすることに集中させられている。1つまたは1セットのアプリケーションに対して最適化された複数のプロセッサを接続し、この方向におけるソリューションは、プロセッサのアレイ構造を作成する。
長所:
・ 効率的な構造を使用して共に接続される場合に、異なるセットのアプリケーションに対して最適化された異なるプロセッサは、幅広い問題を解決するのに役立つことができる。
・ 一様なスケーリングモデルは、性能要件が増加する場合に、ナンバープロセッサが共に接続されることを可能にする。
・ 複雑なアルゴリズムは、効率的に分割されることができる。
短所:
・ 性能要求は十分に満たされ得るが、電力および価格の非効率性が高すぎる。
・ プログラミングモデルはプロセッサにごとに異なる。これはアプリケーション開発者の仕事をさらに困難にする。
・ 多数のプロセッサの一様なスケーリングは、極めて費用がかかり、なおかつ、電力を消費するリソースである。これは、全体のシステムの性能に悪影響を及ぼし得るいくつかの非決定論を表示するために示された。
・ システムレベルでのプログラミングモデルは、いかなる共有メモリリソースも備えないので、通信データ、コード、および、制御情報の複雑性を被る。共有メモリが、一様に拡張可能ではないためである。
・ 異なるタイプのプロセッサを異種のネットワークに接続するのに必要な拡張性および反復性のグルーロジック(glue logic)は、面積の非効率を増大させ、消費電量を増加させ、レイテンシを増加させる。
前述を踏まえて、1つまたは複数のマルチメディアアプリケーションを同時に実行することを可能にするために、低電力、安価、効率的、高性能、柔軟にプログラム可能、なおかつ、異種であるプロセッサが必要とされる。
簡潔に説明すると、本発明の一実施形態は、Wビット以上のビットを並列的に処理することが可能な少なくとも1つのWタイプのサブプロセッサであって、Wは整数値であるサブプロセッサと、Nビットを並列的に処理することが可能な少なくとも1つのNタイプのサブプロセッサであって、NはWより小さい整数値であるサブプロセッサとを備える、異種の、高性能で、拡張可能なプロセッサを含む。前記プロセッサは、前記少なくとも1つのWタイプのサブプロセッサと少なくとも1つのNタイプのサブプロセッサとを接続する共有バスと、前記少なくとも1つのWタイプのサブプロセッサと前記少なくとも1つのNタイプのサブプロセッサに接続されて共有されるメモリとをさらに備え、前記Wタイプのサブプロセッサは、メモリを出入りするバイトを再配置し、アプリケーションの実行に対応することにより、高速動作を可能にする。
まず図1を参照すると、本発明の実施形態を含むデジタル製品12に関するアプリケーション10が示される。図1は、市販されているものに関連する、本発明の実施形態を含む製品の利点のうちの、必ずしも全てではないが、そのいくつかに関する図を読み手に提供することを意図している。
したがって、製品12は、現代の携帯電話装置14、デジタルカメラ装置16、デジタル録音または音楽装置18、およびPDA装置20により実行される必要のあるアプリケーションの全てを組み込むことにおいて、コンバージェンス製品である。製品12は、装置14〜20の機能のうちの1つまたは複数の機能を同時に実行することができるが、低電力消費である。
製品12は通常、電池式であるため、装置14〜20によって実行されるアプリケーションのうちの複数のアプリケーション実行する場合でさえ、ほとんど電力を消費しない。また製品12は、H264、MPEG4、UWB、Bluetooth、2G/2.5G/3G/4G、GPS、MP3、およびSecurityを含むがそれだけに限定されない複数のアプリケーションに適合して動作を達成するために、コードを実行することもできる。
図2は、本発明の実施形態にしたがう、メモリコントローラおよびダイレクトメモリアクセス(DMA)回路24に接続される、異種の、高性能で、拡張可能なプロセッサ22を備える典型的な集積回路20を示す。また図2において、プロセッサ22は、汎用バス30を介してインターフェース回路26に接続され、汎用バス31を介してインターフェース回路28に接続され、バス30を介し、バス31を介して汎用プロセッサ32とさらに接続されることを示す。回路20は、回路10の残りの回路によって利用されるクロック、同様に利用されるリセット信号、および同様に電力を管理するための回路を生成するために、クロックリセットおよび電源管理34を含むようにさらに示される。回路20には、Joint Test Action Group(JTAG)回路36がさらに含まれる。JTAGはチップを検査するための規格として使用される。
バス30に接続されて示されるインターフェース回路26およびバス31に接続されて示されるインターフェース回路28は、当業者にとっては通常既知である現行のプロセッサにより使用されるブロック40〜66を備える。
異種のマルチプロセッサであるプロセッサ22は、共有データメモリ70、共有データメモリ72、CoolWサブプロセッサ(またはブロック)74、CoolWサブプロセッサ(またはブロック)76、CoolNサブプロセッサ(またはブロック)78、および、CoolNサブプロセッサ(またはブロック)80を含むように示される。ブロック74〜80の各々は、命令メモリと関連し、例えば、CoolWブロック74は命令メモリ82と関連し、CoolWブロック76は命令メモリ84に関連し、CoolNブロック78は命令メモリ86に関連し、CoolNブロック80は命令メモリ88に関連する。同様に、ブロック74〜80の各々は、制御ブロックに関連する。ブロック74は制御ブロック90に関連し、ブロック76は制御ブロック92に関連し、ブロック78は制御ブロック94に関連し、ブロック80は制御回路96に関連する。ブロック74および76は、16、24、32および64ビットの動作またはアプリケーションに対して通常効率的に動作するように設計され、一方、ブロック78および80は、1、4、または8ビットの動作またはアプリケーションに対して通常効率的に動作するように設計される。
ブロック74〜80は、本質的にサブプロセッサであり、CoolWブロック74および76はワイド(またはW)タイプのブロックで、一方、CoolNブロック78および80はナロー(またはN)タイプのブロックである。ワイドおよびナローは、サブプロセッサ内で処理または転送される並列ビットの相対数を参照し、プロセッサ22に異種特性を付与する。さらに、回路24は、サブプロセッサのうちの1つすなわち、ブロック74〜80のうちの1つと直接接続され、接続されるサブプロセッサを介して低レイテンシパスをもたらす。図2において、回路24は、ブロック76に直接接続されて示されるが、ブロック74、78、または80のいずれに接続されてもよい。優先順位の高いエージェントまたはタスクは、回路24に直接接続されるブロックに割り当てられ得る。
4つのブロック74〜80が示されているが、その他の数のブロックが利用されてもよい。しかしながら、追加のブロックを利用することによってダイスペースが増加し、製造原価が高くなることが留意されるべきである。
多大な処理能力を必要とする複雑なアプリケーションは、回路20に散布(scatter)されず、むしろ、特定のサブプロセッサまたはブロックに集められ、またはブロック内に限定されており、素線(金属)または経路長さを排除または少なくとも削減し、素線の電気容量を減らすことによって、本質的に電力消費を改善する。さらに、利用が増えてアクティビティが減少すると、低電力消費に寄与することになる。
回路20は、マルチメディアおよび通信のアプリケーションのために擬似断熱のプログラム可能な(Quasi−Adiabatic Programmable)サブプロセッサを提供する、シリコンオンチップ(またはSoC)の例であって、前述のとおり、WタイプとNタイプの2種類のサブプロセッサが提供される。Wタイプつまりワイドタイプのプロセッサは、16、24、32、および64ビットの処理を必要とするアプリケーションにおいて、高出力、高価、高性能の効率のために設計される。Nタイプつまりナロータイプのプロセッサは、8、4、および1ビットの処理を必要とするアプリケーションにおいて高効率のために設計される。これらのビット数が本発明の実施形態において、図面および説明によって使用されるが、その他のビット数が容易に用いられ得る。
アプリケーションが異なると、異なる性能または処理能力が必要になるため、アプリケーションが異なると、異なるタイプのブロックまたはサブプロセッサによって実行される。例えば、通常DSPsによって実行されるアプリケーションは、通常発生するDSPカーネルを特徴的に備えるため、通常、図2のブロック74または76などのWタイプのサブプロセッサによって処理される。このようなアプリケーションは、高速フーリエ変換(FFT)または逆高速フーリエ変換(IFFT)、適応有限インパルス応答(FIR)フィルタ、離散コサイン変換(DCT)または逆離散コサイン変換(IDCT)、リアル/コンプレックスFIRフィルタ、HRフィルタ、抵抗コンデンサのルートレイズコサイン(RRC)フィルタ、カラースペースコンバータ、3Dバイリニアテクスチャマッピング、グローシェーディング、Golay相関、バイリニア補間、メジアン/行/列フィルタ、アルファブレンディング、高次サーフェステセレーション(Higher―Order Surface Tessellation)、バーテックスシェード(トランス/ライト)、トライアングルセットアップ、フルスクリーンアンチエイリアスおよび量子化が含まれるが、それだけに限定されない。
その他の通常発生するDSPカーネルは、ブロック78および80などのNタイプのサブプロセッサによって実行されることが可能であり、可変長コーデック、ビタビコーデック、ターボコーデック、周期的冗長検査、Walshコードジェネレータ、インタリーバ/デインタリーバ、LFSR、スクランブラ、デスプレッダ、コンボリューションエンコーダ、リードソロモンコーデック、スクランブルコードジェネレータ、およびパンクチュアリング/デパンクチュアリングを含むが、それだけに限定されない。
WタイプとNタイプの両方のサブプロセッサは、RISC、再構成、スーパースケーラ、VLIW、およびマルチプロセッサのアプローチなどの既存のアーキテクチャのアプローチと比べ、利用が増加しても高性能を維持しつつ、ネットアクティビティおよびその結果として生じる遷移ごとのエネルギーを低く維持することが可能である。プロセッサ22のサブプロセッサのアーキテクチャは、結果として最適な処理ソリューションをもたらすダイサイズを縮小し、「擬似断熱(Quasi−Adiabatic)」または「COOL」アーキテクチャと呼ばれる新規のアーキテクチャを含む。これにしたがうプログラム可能なプロセッサは、擬似断熱プログラム可能(Quasi−Adiabatic Programmable)またはCOOLプロセッサと呼ばれる。
擬似断熱プログラム可能(Quasi−Adiabatic Programmable)またはCOOLプロセッサは、上に説明されたとおり、アプリケーションの有限サブセットと適合させるために、データパス、制御、メモリ、および機能ユニット粒度を最適化する。これが達成される方法は、以下に提示されるプロセッサ22の異なるユニットまたはブロックまたは回路および相互動作に関する図面の説明および提示によって明白である。
「擬似断熱プログラム可能」または異種の相互接続および機能ユニットの並列アプリケーション(COOL;Concurrent Applications of HeterOgeneous intercOnnect and functionaL unit)プロセッサ。熱力学の観点から見ると、断熱プロセッサは、熱を無駄にせず、全ての使用されるエネルギーを有効な仕事を実行することに変換する。既存の標準プロセッサの非断熱の性質、回路設計、および論理セルのライブラリーデザイン技術のために、断熱プロセッサを製造することは、今までは可能でなかった。しかしながら、実行し得る、異なる可能性のあるプロセッサのアーキテクチャの中でいくつかは断熱に近い。本発明のさまざまな実施形態は、従来の技術のアーキテクチャと比べ、著しく断熱に近いがそれでもなおプログラム可能であるプロセッサのアーキテクチャの種類を示す。それらは、「擬似断熱プログラム可能プロセッサ」と呼ばれる。
集積回路20は、プロセッサ22内のリソースによってサポートされ得るできるだけ多くのアプリケーションが、共にまたは並列的に実行されることを可能にし、そのアプリケーションの数は、現行のプロセッサによって対応される数をはるかに超える。集積回路20によって同時または平行して実行されることが可能なアプリケーションの例は、受信された映画をデコードしながらワイヤレス機器からアプリケーションをダウンロードし、映画は同時にダウンロードとデコードされることが可能であることを含むが、それだけに限定されない。集積回路20が対応するアプリケーションの数に比べ、小さいダイサイズまたはシリコン領域を有する集積回路20で同時にアプリケーションを実行することを達成することにより、図1の多種機器に必要であるコストよりも、集積回路を製造するコストが大幅に削減される。加えて、プロセッサ22は、マルチメディアの複雑なアプリケーションなどの多数の機能を実行するために、単一のプログラム可能なフレームワークをユーザーに提供する。この業界に採用される将来的な規格に対応するために、集積回路20、つまりプロセッサ22の能力は重要な価値を有し、この業界は現在の規格のものよりもさらに複雑になることが予想される。
ブロック74〜80の各々は、プログラムの1つだけのシーケンス(またはストリーム)を所定の時間に実行することができる。プログラムのシーケンスは、特定のアプリケーションと関連する機能によって決まる。例えば、FFTはシーケンスの種類である。しかしながら、シーケンスが異なる場合でも相互に依存する場合がある。例えば、FFTプログラムは、完了すると、その結果をメモリ70に保存し、次のシーケンスは、保存された結果を使用し得る。このように情報を共有する、またはこのように相互に依存する異なるシーケンスは、「ストリームフロー」と呼ばれる。
図2において、メモリ70および72は、それぞれ8ブロックの16キロバイトのメモリを備えるが、その他の実施形態において異なるサイズのメモリは使用されてもよい。
命令メモリ82、84、86、および88は、ブロック74〜80による実行のために、命令を保存するためにそれぞれ使用される。
図3は、本発明の実施形態にしたがう、プロセッサ20のさらなる詳細を示す。図3において、プロセッサ20はサブプロセッサ74〜80を含むように示され、それぞれのサブプロセッサによって処理される命令を保存するために、命令キャッシュ302〜308をそれぞれ含む。プロセッサ20は、図3に示されるように接続される、アービトレーションブロック310、データメモリ312、汎用入力/出力(GPIO)ブロック314、共有SoCバスブロック316、DMAとの高周波(RF)インターフェースブロック318、DMAコントローラブロック320、およびメモリコントローラブロック322を含むようにさらに示される。データメモリ312は、図3に示されるさまざまな構造/ブロックの動作およびデータトラフィックを指示するアービトレーションブロック310の指示のもと、サブプロセッサおよびその他のブロックによって利用されるデータ情報の保存の役割を果たす。ブロック314は、プロセッサ22に出入りする入力および出力トラフィックを調整し、ブロック320はバス316を介してプロセッサ22によって実行されるDMA動作を制御し、ブロック322はバス316を介してメモリ312に対して動作を制御し、ブロック318はDMA動作を処理するための回路を含み、信号324を介して接続されるRF信号を受信および/送信することができる。
任意で、共有レジスタ326および328は、2種類のサブプロセッサ間での直接通信をもたらす。例えば、図3において、レジスタ326はブロック74と78に接続され、これらのブロックによって共有されるべき情報を保存し、実行を迅速に処理するために複数のサブプロセッサを利用するアプリケーションの実行を容易にする。同様に、レジスタ328は、レジスタ326と同一の機能でブロック80と76に接続されて示される。
図4は、本発明の実施形態にしたがい、ブロック74または76などのWタイプブロックのうちの1つの中に備えられるブロックまたは構造のハイレベルブロック図を示す。例として、ブロック74が図4において使用される。図4において、およびこの明細書全体において、機能ユニットまたはマクロブロックは、加算器、乗算器、レジスタ、およびマルチプレクサなどの構成要素間で、具体的な相互接続構造とともに提示される。これらのマクロブロックは、「マクロ機能ユニット」または「MFU」と呼ばれる。MFUsは、マルチメディアおよび通信のアプリケーションの有限セットにおいて1つまたは複数の通常発生する動作のうちの効率的なプログラム可能なサブセットを示す。マクロ機能ユニットにおける高効率は、対象のアプリケーションに見られる原子動作(atomic operation)のクリティカルなグループを、さらに優れた性能および電力性能を示す派生動作(derived operation)のセットに置換えたことによってもたらされる。場合によって、通常発生する動作は、ハードウェアを効率的に再利用するために、独特な方法で組み合わされられてきた。
図4において、ブロック74は、図4に示されるように共に接続される、ロード/ストアMFUブロック402、スカラー算術論理演算ユニット(ALU)および乗累算(ACC)MFUsブロック406、ベクトルxMFUブロック404、ベクトルALUおよび乗累算ACC MFUブロック408、およびローカルメモリ410を備えるように示される。ブロック402はメモリアドレスを生成し、メモリアドレスバス412にメモリアドレスを接続する。メモリデータは、メモリデータバス414に接続され、ブロック404とブロック406に双方向で接続される。ベクトル保存マスクは、ベクトル保存マスクバス416に接続され、ブロック404によって生成される。各ブロックのさらなる詳細は、後に続く図面に関して提示および説明される。その提示および説明の前に、ブロック74の一般的な機能およびブロックのいくつかを以下のとおり説明する。
ブロック406および408は、データの実際の計算の大部分を実行する。ロード/ストアMFUブロック402は、メモリ312およびメモリ410に出入りするアクセスのためにアドレスを計算する。ベクトルX MFUブロック404は、ベクトルデータをメモリ312およびブロック408の間の途中に再配置する。ベクトルX MFUブロック404は、ベクトルをメモリ312に保存するために、ベクトル保存マスクを生成するためにも使用される。ブロック406は、所定の時間に1つのデータを動作するのみであるが、ブロック404および408は、ベクトルの形式でデータ上を動作する。ブロック402はメモリアクセスにアドレスを提供する。計算によっては、ブロック402によって実行されるものもあるが、本質的にはオーバーヘッドの計算である。
機械命令エンコード(必要に応じ)は、MFUブロック間のデータを移動する動作の他に、さまざまなMFUブロックのための動作を区別する。単一の命令におけるすべての動作は平行して実行される。ベクトルX MFUブロック404は、命令において別々にエンコードされた動作の制御のもと、ベクトルデータの再配置およびベクトル保存マスクの生成をもたらす。ローカルメモリ410は、命令毎にブロック74の外部の情報にわざわざアクセスすることを回避するために、局所的に情報を保存するために使用される。バス412は、メモリアドレスが提供されるメモリ312に接続される。
ブロック402は、バス424を介してブロック44に接続されて示され、ブロック402は、バス426を介してブロック406に接続されるようにさらに示され、ブロック402は、バス428を介してブロック410に接続されてさらに示される。ブロック404、408、および410は、ベクトルバス420を介して相互に接続されて示され、ブロック406、404、408、および410は、スカラーバス422を介して相互に接続されて示される。バスは通常、素線の集まりであり、各素線は信号に接続し、その素線は相互に平行であるゆえ、平行して信号を接続することができる。バス内の素線の数はバイナリビット数を規定し、バスの特性としての役割を果たす。図4において、ベクトルバス420は、スカラーバス422よりも広い、すなわち、バス420はバス422に比べ、平行してより多くの信号を接続可能であるより多くのビットまたは素線を含む。バス420とバス422のビット数の割合の例は4倍であり、例えば、バス422が32ビットである場合、バス420は32ビットの4倍の128ビットである。
ブロック404は、バス416に接続されるベクトル保存マスクも提供する。
メモリデータは、計算動作のためにブロック402からブロック406に接続されるが、ベクトルデータがまずブロック404に提供される。ブロック404は、計算ユニット、すなわちブロック408において必要とされるものに適合させるために、メモリにおけるデータを整理する能力を提供することにより、性能が大幅に向上するということを留意することが重要である。
図5は、本発明の実施形態にしたがい、ブロック402に含まれる回路ブロックのブロック図を示す。ブロック402は、図5に示されるように共に接続される、アドレスブロック502、サーキュラバッファレジスタブロック504、アドレスジェネレータブロック508、アドレスジェネレータブロック506、マルチプレクサ(mux)510、およびmux512を含む。
ブロック502は、図4に示されるブロック402のその他のブロックと接続され、アドレスを保管する。ブロック504は、サーキュラバッファレンジをサーキュラバッファレジスタ(ブロック504)のうちの1つに保存する役割を果たす。ブロック506および508は、プログラムによって要求される場合にサーキュラバッファレンジ内で包括(wrap)するために、アドレス計算をもたらす。ブロック504に向かっている矢印は、それらのレジスタがロードされることを可能にする。すなわち、ブロック506は、ブロック504によって生成されるアドレス、またはブロック406から受信されるアドレス、さらにブロック502から生成されるアドレスを修正する役割を果たし、一方、ブロック508は、ブロック502および/またはブロック406さらにブロック504から受信されるアドレスを修正する役割を果たす。
ブロック402のアドレスレジスタおよびブロック404のサーキュラバッファレジスタは、入力をブロック506および508のアドレスジェネレータに提供する。ブロック402のアドレスレジスタの場合、それらの入力は前に保存されたアドレスであり、一方、ブロック404のサーキュラバッファレジスタについては、それらの入力はサーキュラバッファに関する情報である。
ブロック506および508は、アドレスを改変する役割を果たす。すなわち、ブロック506は、ブロック504によって生成されるアドレス、またはブロック406から受信されるアドレス、さらにブロック502から生成されるアドレスを改変する役割を果たし、一方、ブロック508は、ブロック502および/またはブロック406、さらにブロック504から受信されるアドレスを修正する役割を果たす。ブロック506の出力は、次に、mux512への入力として提供され、そのmux512は、ブロック502によって生成されるアドレスを入力として受信もする。mux512は、次に、その入力のうちの1つを選択し、図4に示されるブロック74のその他のブロックによる受信のために、選択されたものをバス520に接続する。同様に、ブロック508の出力は、mux510への入力として提供され、そのmux510は、ブロック502によって生成されるアドレスを入力として受信もする。mux510は、次に、その入力のうちの1つを選択し、図4に示されるブロック74のメモリによる受信のために、選択されたものをバス522に接続する。
このようにして、ロード/ストアMFUは、並列的に2つのアドレスを生成することができる。アドレスは、アドレスレジスタと、スカラーALU MFUからの定数または値のどちらかを組み合わせることによって計算される。計算されたアドレスは、任意でサーキュラバッファの範囲内で包括され得る。計算されたアドレスは、主に、メモリにアクセスする際に使用されるが、アドレスレジスタまたはサーキュラバッファレジスタに割り当てられ、またはその他のMFUの入力として使用され得る。
図6は、マクロ機能ユニット、特にブロック402、404、406、および408に転送するレジスタファイルのために用いられる一般構造をさらに詳細に示す。図6において、複数のレジスタ602、複数のmux604、クロスバー606、レジスタブロック608、複数の中継レジスタ610、複数の機能ユニット612、および複数のmux614が、本発明の実施形態にしたがって示される。レジスタ602は、mux604に接続されて示され、mux604は、順に、クロスバー606に接続されて示される。クロスバー606は、レジスタ610に接続されて示され、レジスタ610は、順に、機能ユニット612に接続され、機能ユニット612は、mux614に接続されて示される。通常、muxの機能は、muxに提供される入力の中から選択することと、選択された入力を生成することである。クロスバー606の出力は、図4のその他のブロックに提供もされる。ユニット、mux、および/またはレジスタの特定の数が図6において示されるが、これらの構造のその他の数が用いられてもよい。
図6の構造は、図6に示されるように共に接続される。mux604は、図4のその他のブロックからの追加の入力で、少なくとも2つのそのような入力、ならびにmuxes614の出力を受信するように示される。
図6のレジスタおよびフィードバックパス(接続されている)は、面積、エネルギー、および性能のトレードオフを最適化するためにユニークな組織を提供する。この組織は、以下の3つの主な特性を有する。
・ アセンブリ言語にビジブルであって数個以上のレジスタを有するレジスタファイルは、次の2つのサブセットに分割される。数個のレジスタは完全なアクセシビリティで実行され、一方、その他のレジスタはより制限されたアクセシビリティで実行される。最初の4つのレジスタ(0から3番)は、ほとんどの場合、完全なアクセシビリティに対応する。このレジスタファイルを伴う機械動作について、完全にアクセス可能なレジスタのうちのいずれもが、動作のソースおよびディスティネーションとして同時に選択され得る。対照的に、制限されたアクセシビリティを有するレジスタは、その間に少数の読み出しおよび書き込みポートのみを共有する。制限されたアクセシビリティを有するレジスタにおいて、レジスタが共有する最大2つの読み出しおよび書き込みポートおよび1つの書き込みポートが存在する。この配置は、セットにおけるほとんどのレジスタについて、1つまたは2つ以上の読み出し/書き込みポートを必要とすることがないので、多数の読み出し/書き込みポートを有するレジスタファイルの利点のほとんどを提供する。
・ 各機能ユニットの入力に「中継レジスタ」が存在する。機能ユニットがクロックサイクルで使用される前に、その入力の中継レジスタが、前のクロックサイクルの終わりに適切な入力値でセットされなければならない。同時に使用できない機能ユニットは、同一の中継レジスタを共有するためにまとめられ、レジスタの総数を減らすことができる。同一の中継レジスタを共有する機能ユニットがクロックサイクルで必要とされない場合、レジスタの前の値が保持され、これにより、そのサイクルについてのその機能ユニットにおける遷移電力消費を削減する。
・ 機能ユニット間での転送は、2段階で実施される。第1段階で、完全にアクセス可能なレジスタの次の値は、制限されたアクセシビリティを有するレジスタに書き込むための値または複数の値があればそれと共に、マルチプレクサを介して選択される。第2段階において、完全にアクセス可能なレジスタの次の値、および制限されたアクセシビリティを有するレジスタの読み出しポートからの値は、クロックサイクルの終わりに中継レジスタに書き込まれる値を選択するクロスバーに共に送り込まれる(そして、次のクロックサイクルでの機能ユニットのために)。この組織は、1つでなく多重の段階を経ることから遅れを増加させる恐れがあるが、サイズに大幅に影響を与えるクロスバーへの入力の数を最小化する。
制限されたアクセシビリティを有するレジスタの書き込みおよび読み出しポートの間で、転送が実施される場合、または実施されない場合がある。転送がここで実施されない場合、さらに追加のレイテンシのサイクルが、これらのレジスタのうちの1つを書き込む動作とその後のそれを読み込む動作との間で当然発生する。
図7は、本発明の実施形態にしたがい、ハイレベルブロック図式において、ブロック408のさらなる詳細を示す。図7において、ベクトルレジスタブロック702は、N ALUsブロック704、ベクトル要素シフタブロック706,ベクトル要素セレクタブロック708、2NおよびNビットコンバータブロック710、N ALUsブロック712および2N乗算器ブロック714に接続されて示される。図7において、ブロック408は、N加算器ブロック718、Nシフタブロック720、ベクトルの和ブロック722、N3入力加算器ブロック724、2NおよびNビットコンバータ726、mux723およびmux732に接続されるベクトルレジスタブロック716を含むようにさらに示される。図7のブロックおよびmuxesは、図7に示されように共に接続される。ブロック702は、図4のその他のブロックに接続され、ブロック704〜714にさらに接続される。ブロック716は、ブロック406から、ならびに、mux732、ブロック710およびブロック714の他にブロック724の出力からの入力を受信するように示される。ブロック702は、mux704に接続されて示され、mux704は、ブロック712および726にさらに接続される。一般的に、図7の回路またはブロックは、Mは整数のビット数であるNの数のMビット値などの、ベクトルタイプの値で並列的に動作する。
mux732は、ブロック718および720によって生成される出力を、入力として受信し、mux730は、ブロック704および706によって生成される入力を受信し、ブロック702によって受信される出力をさらに生成する。ブロック708および722の出力は、ブロック406に提供される。本明細書で使用されるNは、整数値であり、例えば、N ALUはN個のALU回路である。
ブロック702〜714およびmux730は、一般的に乗累算(MAC)機能を実行し、一方、ブロック716〜726およびmux732はALU機能を実行するが、そのMACおよびALU機能が並列的に実行されるビット数は、一般的に、ブロック406によって処理されるビット数よりもN倍多い。ブロック704および712はセグメント可能、すなわち、それらは加算演算を選択的にセグメントすることができる。例えば、N個の32ビットの加算演算を実行可能であることに加え、平行してN個の32ビットが処理される場合、各ALUブロックは、2N個の16ビットの加算演算または4N個の8ビットの加算演算を実行することができる。ブロック714は、図11のブロック1110と同じように機能し、それについて簡潔に説明する。ブロック710および726は、N個の32ビット値をN個の40ビット値、または2N個の16ビット値を2N個の40ビット値に変換する働きをする。一例において、32ビット値は40ビット値に変換され、別の例において、16ビット値は40ビット値に変換され、このようにしてビット変換能力を提供する。
ブロック706はベクトル値、すなわちN個のMビット値を、整数値によって左右にシフトさせる。ベクトルシフトの例を以下のベクトルで挙げる。
<a0、a1、a2、a3、a4、a5、a6、a7>
この場合、8つの値であり、
<a1、a2、a3、a4、a5、a6、a7、0>
または、
<0、0、0、a0、a1、a2、a3、a4>
にベクトルを戻す。
これらの動作は通常、乗算または除算として解釈されない。ブロック708は、ベクトル値の単一の要素を選択することを可能にし、例えば、特定のバイト(8ビット)は、ベクトル値から選択され得る。
ブロック720はブロック706と同じように機能し、ブロック726はブロック710と同じように機能する。ブロック712および726の出力は、mux704を介して選択的にブロック702に提供され、ブロック706および704の出力は、mux730を介して選択的にブロック702に提供される。さらに、ブロック720および718の出力は、mux732を介してブロック716に選択的に提供される。
ブロック722は、ベクトルベースで加算動作を実行し、一方、ブロック408のその他のブロックは、要素ベースで動作する。すなわち、ブロック722は、単一のベクトルの全ての要素を加算し、要素ベースで動作するブロックは、異なるベクトルの選択された対応する1つまたは複数の要素に演算を実行する。
ブロック710および726は、それぞれ、Nまたは2Nからの変換を選択的に可能にする。図8にさらに示されるように、ブロック804の出力は、ブロック802の入力へフィードバックされる。
図8は、本発明の実施形態にしたがい、ブロック図式において、ブロック404のさらなる詳細を示す。図8において、ブロック404は、図8に示されるように共に接続される、マスク制御レジスタブロック802、マスクジェネレータブロック804、マスクレジスタブロック806、ベクトルレジスタブロック808、およびベクトルバイトマスク置換ブロック810を含むように示される。
ブロック802は、図4のその他のブロックからの入力を受信し、ブロック806に接続されて示されるブロック804への入力を生成するように示される。ブロック806は、ブロック801に接続されて示され、図4のその他のブロックの他に、メモリ312にもさらに接続される。ブロック808は、メモリ312および図4のその他のブロックに接続されて示される。ブロック810は、ブロック806および808からの入力を受信するように接続されて示される。
一例において、ブロック404は、ブロック408と同一のNについて、N32ビットのベクトルレジスタのレジスタファイルであるブロック808を有する。ブロック404のブロック806は、サイズがN4ビットのマスクレジスタを含む。マスクレジスタの各ビットは、ベクトルレジスタの1バイトに一致する。N32ビットベクトルが外部の共有メモリに保存される場合、N4ビットマスクは、どのベクトルのバイトが実際にメモリに書き込まれるかを示すために提供される(ゼロメモリバイトに一致するメモリバイトは変わらない。)マスクジェネレータ機能は、マスク制御レジスタの設定に基づいて、4Nビットマスクを計算する。
ブロック404は、4Nバイトを選択するために、2つのベクトルレジスタの8Nバイトを置換することができる。一般的な場合において、特定の置換は、第3のベクトルレジスタの値によって制御される。特定の「既にコード化された」置換は、制御ベクトルの使用を必要としない。これらは、2つの入力ベクトルレジスタの左右にある全てのファンネルシフト(funnel shift)を備える。2つのベクトルレジスタの8Nバイトが置換されると同時に、2つのマスクレジスタの8Nビットが、マスク値とベクトル値の間で同一のビットとバイトの一致を保持するために、同じように置換され得る。
図8のブロックは、ベクトル値ベースで動作する。ブロック810は、上に説明されたように、ベクトル値の再配置を可能にする。これは、図9および10を参照してさらに説明される置換を使用して実行される。ブロック810は、どの置換が予測されるかという情報を提供する。同様に、ブロック804および806からの置換されたマスクは、置換されたマスクのどれが提供されるかを示す。一般的に、保存される各バイトに1マスクビットが存在する。
図8のブロック802、804、806、および810は、実行を行なう特定のアプリケーションに適合させるためにメモリにおけるアドレスを再配置する能力をもたらす。従来技術において、再配置は通常、自動的に実行されるが、本発明の実施形態において、プログラマーは、プログラムまたはコードに従って、プログラムで所望の再配置を実行することができる。これは、プログラマーの必要に応じて、ほとんど無限に近い再配置の組を可能にし、それは従来技術が全く提供できないことである。つまり、再配置する能力は、既定であり、再配置の可能性の既定の組を含む。したがって、実行されるプログラムに従ってマスクを生成することは、メモリにおけるアドレスの再配置に関して、さらなる柔軟性を提供する。
SIMDは、単一命令、多重データ(Single Instruction、Multiple Data)の頭字語であり、MIMDは、多重命令、多重データ(Multiple Instruction、Multiple Data)の頭字語である。これらは、当業者に既知であるコンピュータアーキテクチャおよびプログラミングにおける標準用語である。
図9および図10は、ブロック<数字>の置換回路のさらなる詳細を示し、<数字>は、「ベクトルバイト+マスク置換」ボックスの数である。ブロック404は、図9および10に示されるように、置換される結果ベクトルを生成するために、2つのベクトルの置換を実行する機能ユニットを有する。置換を実行するために使用される回路は、それぞれがNユニットである入力ベクトルAおよびBを例として挙げ、Nユニットの出力ベクトルZも生成する一般的な方法で説明されることが可能で、ユニットは任意であるが一定のビット数であり、Nは2の累乗である必要がある。KをNの対数の底2とする。置換回路は、図に示されるように、一定の種類のNのスイッチボックスを備えるK+1段階を有する。「タイプA」、「タイプB」、および「タイプC」と呼ばれる3種類のスイッチボックスが全体に存在する。スイッチボックスタイプAは、第1段階でのみ使用され、スイッチボックスタイプCは、最終段階でのみ使用され、中間における全ての段階は、スイッチボックスのタイプBを用いる。各タイプのスイッチボックスによって対応される接続は別々に示される。隣接する段階の各ペアのスイッチボックスの間に、ディスタンス1の交換から始まり、ディスタンスN/2の交換まで機能するバタフライ交換が存在する。スイッチボックスの設定は、置換回路への第3の入力である「制御ベクトル」によって全て決定される。タイプAおよびタイプCのスイッチボックスのそれぞれの設定は、単一のビットのみを特定する必要があり、それぞれのタイプBの設定は、2つのビットを正確に特定する必要があり、完全な制御ベクトルは、2Nビットを必要とする。制御ベクトルは、実行される置換命令から全体に示され、またはある方法においては、プログラムによって部分または全体に提供され得る。
図11は、本発明の実施形態にしたがい、ブロック図形式において、ブロック406の構成要素のさらなる詳細を示す。図11において、レジスタブロック1102は、ALUブロック1104、ビットコンバータブロック1106、ALUブロック1108、および乗算器ブロック1110に接続されて示される。ブロック406は、レジスタブロック1112、シフタブロック1114、加算器ブロック1116、およびビットコンバータブロック1118を含むようにさらに示される。Muxes1122、1120、および1124も、図11に示される。muxおよびブロックは、図11に示されるように、共に接続される。
ブロック1102は、図4のメモリ312およびその他のブロックに接続されて示され、mux1122およびmux1120からの入力を受信する。シフタブロック1114は、mux1122の入力のうちの1つを提供し、ブロック1104は、その他の入力を提供する。mux1120は、ブロック1118および1108からその入力を受信する。ブロック1114は、ブロック1102に接続されてさらに示され、mux1124は、ブロック1112および1102から入力を受信し、ブロック1114への出力を生成するように示される。
ブロック1112は、ブロック1112への入力として提供される出力を生成するブロック1116に接続されて示される。ブロック1118は、ブロック1112およびブロック1106に接続されて示され、1110はブロック1112に接続されて示される。
ブロック1102、1104、1106、1108、および1110、ならびにmux1122は、ALU機能を実行し、ブロック1112〜1118およびmux1124は、乗累算(MAC)機能を実行する。
ブロック1104および1108はALUであり、その機能を実行し、それらの出力は、mux1122および1120を介して、ブロック1102への入力(またはフィードバック)として選択的に提供される。クロックサイクル毎に、2つのALU演算が実行され得る。ブロック1110は乗算機能を実行し、ブロック1102より多くのビット数を処理することができるブロック1112に提供される出力を生成する。例えば、ブロック1102が32ビット能力を有する場合、ブロック1112は40ビット能力を有する。ブロック1112はアキュムレータレジスタ、つまり、入力を累積して加算する役割をする。
ブロック1106は、Nビット値を、Xは整数値であるN+Xに変換する。例えば、32ビット値は40ビット値に変換されることができる。ブロック1114は、値を既定のビット数でシフトし、mux1122を介してその結果をブロック1102へパスする。
ブロック1118は、40ビットを32ビットにするなど、より大きいビット数をより小さいビット数に変換する。ブロックはブロック408に接続される。ブロック406は、ブロック1102からの値で2つのALUを並行して実行することができる。第1のALU演算の代わりに、Nビットのシフト演算が実行され、またはNビット値からXビット値への変換がブロック1112に保存され得る。第2のALU演算の代わりに、乗算がブロック1110およびブロック1112のレジスタのうちの1つに保存された結果によって実行され得る。
ブロック406は、40ビットのシフト、40ビットの加算/減算、および40ビット値から32ビット値への変換を並列的に実行することが可能であり、スカラーALU MMFUの32ビットレジスタのうちの1つに保存される。
ブロック78などのNタイプのサブプロセッサのうちの1つのさらなる詳細は、後に続く図面を参照して説明される。Wタイプのサブプロセッサに関する図4のブロック406およびブロック404は、ブロック78などのNタイプのサブプロセッサに共通する。
図12は、本発明の実施形態にしたがい、ブロック78の詳細のハイレベルブロック図を示す。図12において、ブロック78は、データパスユニット(DPU)ブロック1202、メモリブロックへのパス1204、ならびに制御装置、シーケンサ、およびデータアドレスジェネレータ(DAG)ブロック1206を含むように示される。ブロック1204および1206は、Wタイプのサブプロセッサのブロックと共通して見られる。ブロック1206は一般的に、ブロック402と機能的に同じである。
図13は、本発明の実施形態にしたがい、ハイレベルブロック図式において、ブロック78のさらなる詳細を示す。図78において、ストアユニットブロック1302は、Xユニットブロック1304に接続されて示され、順に、Xユニットブロック1304は、ロードユニットブロック1306に接続されて示される。ブロック1304は、一般的に、ブロック404と機能的に同じなので、さらなる詳細は上に説明される。
ブロック1306は、マクロ機能ブロック1340にさらに接続されて示され、順に、マクロ機能バス1310を介して、ブロック1302に接続されて示される。ブロック1302は、ストアバッファ1314、ストアバッファ1312、およびバスインターコネクトブロック1308を含むように示される。ブロック1302は、メモリ312などのメモリに提供される出力を生成するので、ブロック1314を介して適宜接続される。ブロック1304は入力を受信するように示され、メモリ312などのメモリに接続される。ブロック1306は、ロードバッファ1320、ロードバッファ1318、およびブロック1340に接続されるバスインターコネクトブロック1316を含むように示される。
ブロック1340は、ガロアフィールドMACブロック1322、特別のALUブロック1324、結合器ブロック1326、メモリ1328、パンクチュアリング/デパンクチュアリングブロック1330、インタリーバブロック1332、およびビタビブロック1334を含むように示され、それぞれがバス1310に接続されるように示される。ブロック1322〜1332は、ブロック1316からの入力を受信し、ブロック1316に接続されるようにそれぞれ示される。ブロック1334は、ブロック1332からの入力を受信し、そのブロックでデータを受信および生成するために接続される。
データの流れは上述のとおりで、データまたは情報は、フロック1306からおよびブロック1306を介して、ブロック1340に流れ、次にブロック1302、そしてメモリに流れ出る。このようにして、パイプラインの影響が導入され、パイプラインの方法で多数の動作が重複し、同時に処理される。例えば、情報は、ブロック1306によってロードされ、一方で、情報はブロック1302によってメモリに保存される。データは、ブロック1304によってメモリから受信された後に、ブロック1306のブロック1320および1328に保存され、その後、ブロック1340に提供され、ブロック1340によって処理されるその詳細は、以下に続く図面を参照して簡潔に説明される。
ブロック1340による処理の完了後、処理されたデータは、バス1310を介してブロック1302に提供され、メモリに受信されるように接続されるまで、データが保存されるブロック1312および1314に保存される。ブロック1314、1312、1318、および1320のバッファは、既定の幅、またはビット数を並行して有する。一例において、これらのバッファの各々は256ビット幅であるが、その他のビット数が用いられてもよい。
ブロック1340によって処理された可能性のある値またはデータは、再利用のために、ブロック1302からブロック1306に移動され得る。さらに、データは、メモリからブロック1304によって受信され、次に、処理のためにブロック1306に移動され得る。ブロック1340の各々のさらなる詳細が、ここに提示される。ブロック1314および1312は、ダブルバッファリングの効果をもたらし、パイプライン動作に共通して発生する「失速(stalling)」を削減することに役立てられ、ブロック1318および1320も同様のことが言える。失速は、ブロック1302および1306のメモリからの同時のアクセスによってもたらされる。別の実施形態において、ブロック1314および1312は、1つのブロックであってもよく、ブロック1318および1320は、1つのブロックであってもよい。
レイテンシは動作に関連し得、または、パイプラインの影響が存在し得る。レイテンシは、ブロック1340に関するブロックの各々によってもたらされ得る。
図14は、本発明の実施形態にしたがう、ブロック1322のさらなる詳細を示す。図14において、ガロアフィールドブロック1402は、XOR/Clr回路1404に接続されて示され、順に、アキュムレータレジスタブロック1406に接続されて示される。ブロック1402は、ガロアフィールド出力信号1408を生成するように示され、ガロアフィールド出力信号1408は、ガロアフィールドmux1410への入力としての役割を果たし、ガロアフィールドmux1410は、ブロック1406の出力によって生成され、アキュムレータレジスタブロック出力信号1412と呼ばれるさらに別の入力を受信する。信号1408および1412は、図13の1310のバスに接続されるガロアフィールドMAC出力信号1416を選択的に生成するために、mux1410への入力としての役割を果たす。mux1410への別の入力としての役割を果たす選択信号1414は、信号1416の生成のために、信号1408および1412のうちの1つを選択する働きをする。したがって、事実上ガロアフィールド演算の結果であるブロック1402の出力は、ブロック1322の出力として提供され、またはガロアフィールドMAC演算の結果は、ブロック1322の出力として提供される。
ブロック1406の出力は、その別の入力として回路1404に接続されて示される。ブロック1404の出力はブロック1406に提供され、その接続はガロアフィールドMAC演算のMAC部分を達成する。ブロック1404は、ガロアフィールドMAC演算で通常使用されるXOR乗算演算を効果的に実行する。
ブロック1402は、Xorツリーブロック1424に接続されて示される、レジスタブロック1420およびレジスタブロック1422を含むように示される。ブロック1420は、レジスタブロック1426、ガロアフィールド乗算反復1の1428、レジスタブロック1430、ガロアフィールド乗算反復1の1432、レジスタブロック1434、およびレジスタブロック1436を含むようにさらに示される。図14に図示されないが、ブロック1434および1436などの追加の数のレジスタブロックは、ブロック1434と1436の間に連続して備えられ、接続される。
ブロック1424は、ブロック1426に接続されて示され、順に、ブロック1426はブロック1428に接続されて示され、順に、ブロック1428はブロック1430に接続されて示され、順に、ブロック1430は、ブロック1432に接続されて示され、順に、ブロック1432は、ブロック1434に接続されて示され、ブロック1434は、ブロック1436またはブロック1434とブロック1436との間に位置する1つまたは複数のレジスタブロックに接続される。
図14において、ブロック1420および1422は、ブロック1306から入力を受信し、別の実施様態においては、1つのブロックに結合されてもよい。ブロック1402は一般的に、当業者にとって既知であるガロアフィールド処理を実行し、図14の残りのブロックはMAC演算の実行をもたらす。ブロック1426、1430、1434、および1436は、ガロアツリーの異なる反復としての役割を果たし、最悪の場合のシナリオにおいて、反復の数は8つのレジスタブロックを必要とする8であることが発見された。MAC演算の乗算部分は、一般的に、回路1404によって実行されるXOR動作によって実行され、ブロック1406は、アキュムレータ機能としての役割を果たす。回路1404は、ブロック1402によって実行されるガロアフィールドの演算の最終の反復、図14の場合、ブロック1436からの入力を受信する。
動作において、ブロック1322は、8ビット値などのNビット値またはデータを演算し、別のNビット値に基づいて元々の値の8wayをシフトすることによって、同一のものに基づいてNビット値またはデータを生成する。Nビット値は、次に、その結果が減少定数を有するNビットに減らされるまで、ブロック1404によってXORされ、ブロック1406の値などのNビットアキュムレータレジスタの内容に選択的に加えられる。「クリア」動作もブロック1406によって実行され得る。ガロアフィールドのMAC演算、つまりブロック1322を用いるアプリケーションの例は、循回冗長コード(CRC)演算、畳み込みエンコーダ演算、スクランブルコードジェネレータ演算、およびその他のものが含まれるが、それだけに限定されない。
図15は、本発明の実施形態にしたがい、ハイレベルブロック図式において、ブロック1324に含まれる回路のさらなる詳細を示す。図15において、mux1504および1502は、それぞれ、Aレジスタブロック1508およびBレジスタブロック1506に接続されて示される。ブロック1508は、Aと呼ばれる値を保存し、ブロック1502は、Bと呼ばれる値を保存し、そこでAおよびBの値は、ブロック1324によって演算されるデータである。AおよびBの値は、それぞれNビット幅である。
ブロック1508および1506は、条件付きレジスタブロック1512への入力を生成するように示され、加算/減算/Abs/差分/条件付き加算−減算/乗算(AGU)ブロック1510への入力を生成するように接続されてさらに示され、順に、ブロック1510は、出力レジスタブロック1514への入力を生成する。ブロック1514は、mux1516に接続されて示され、順に、mux1516は、加算器1518に接続されて示される。加算器1518は、アキュムレータレジスタブロック1520に接続されて示され、その出力は、加算器1518の別の入力としての役割を果たすように示される。ブロック1520の別の出力は、mux1522への入力としての役割を果たすように示され、mux1522は、ブロック1514の出力としての別の入力として受信する。mux1522は、バス1310へ接続される出力1530を生成する。mux1504および1502への入力いくつかは、ブロック1316から受信される。
mux1504および1502の各々は、4つの入力を受信するように示される。mux1504の入力のうちの1つ、dpは、ブロック1306からmux1502の入力、dpとして受信される。mux1504の別の入力は、ブロック1514の出力の一連の最下位ビットからもたらされ、mux1502の入力のうちの1つも同様である。mux1504の別の入力は、ブロック1514の同一の出力の最上位ビットからもたらされる。しかし、mux1504の別の入力は、値が「0」である。mux1502の入力のうちの1つは値が「1」であり、入力のうちの別のものは値が「−1」である。「0」、「1」、および「−1」の値は、これらの値がさまざまな動作において繰り返し利用されているため、この値の存在がシステム性能を向上させるという点において、ブロック1324によって実行される動作を迅速に処理する目的で提供される。性能を向上させるために利用される、複数のブロック1510が存在してもよいことが留意されるべきである。ブロック1324は、実行される多数の動作が、単一のクロックサイクルで実行されることを可能にするために、図15において示されるように組織される。
動作において、ブロック1510および1512は、ブロック1508および1506によってそれぞれ提供されるAおよびBの値で動作する。mux1516への2つのその他の入力は、後に簡潔に説明されるブロック1520内のリダクション動作ブロック(図15に図示せず)によって生成される。これら2つの入力は、ここでは「隣接アキュムレータレジスタ」および「リダクションアキュムレータレジスタ」と呼ばれ、各々は2N幅である。
ブロック1512は、デスプレッド動作における使用のために、ブロック1510によって実行される、条件付き加算または条件付き減算演算を可能にする2N幅レジスタである。ブロック1512は、実質的に、ブロック1510による使用のために、AおよびBの値を改変する。
mux1522は、実質的に、信号1530を介してブロック1302に選択的に提供されるように、および、mux1522へのさらに別の入力として提供される選択信号によって決定されるように、ブロック1514によって保存された後、ブロック1510の出力を可能にする。そうでないと、ブロック1510の結果は、蓄積加算動作を行い、その最終結果は、ブロック1302に提供される前に、ブロック1518および1520を介して、ブロック1520に保存される。
ブロック1324は、以下の動作に対応する1つまたは複数のALUsを備えるNレイヤーALUである。
− 2つのNビット値が、その和分または差分を生成するために動作されるN加算/減算動作
− 2つの入力値のNビットのXOR
− 2つのNビット入力値の最大/最小動作
− 2つのNビット入力値の最大動作であって、その結果は、次のように計算される:max(a、b)+定数(メモリまたはあらかじめ組み込まれるルックアップテーブルから)
− 条件付き加算−減算:一般的にブロック1512の使用によりもたらされるこの機能は、条件付きで、入力コードによって決まるNビット値のストリームを加算または減算する。入力コードは、制御レジスタにあらかじめロードされる。入力コードにおける「1」は、減算動作をもたらし、「0」は加算動作をもたらす。出力は、16ビットのアキュムレータレジスタで使用可能である。この機能に対応しているその他の特別ALUからの「収集」動作のためのサポートも存在する。
− 条件付きの加算−減算動作と同一のアキュムレータを使用するSAD
− N×N乗算。
ブロック1510は、各ブロック1510が少なくとも128ビットを読み込むことができる、つまり、2つのブロックは、メモリにコンテンションが存在しない場合、少なくとも256ビットのデータをクロックサイクル毎に読み込むことができる、Wタイプのサブプロセッサに共通している。
図16は、本発明の実施形態にしたがい、ブロック1520内に含まれるリダクション回路ブロック1602のブロック図を示す。図16において、M段階のアキュムレータレジスタ回路、アキュムレータレジスタブロック1610に示されるアキュムレータレジスタ回路の各々の詳細が示される。例えば、アキュムレータレジスタ回路ブロック1602は、図16に示されるように接続されるブロック4つの1610を含む。同様に、アキュムレータレジスタ回路ブロック1604〜1608の各々は、ブロック1610のような4段階のアキュムレータレジスタ回路を含む。ブロック1602〜1608のうちの各々内での各段階の出力または結果は、次の段階への入力として使用され、蓄積を達成するために加算される。ブロック1602〜1608は、4段階またはブロック1610のような4ブロックを含むように示されるが、その他の数のブロックまたは段階が使用されてもよい。
ブロック1602〜1608の各々の結果は、その他のブロックに使用可能になる。例えば、ブロック1602の結果は、ブロック1604への入力としての役割を果たし、ブロック1604の結果または出力は、ブロック1608内の最終のアキュムレータレジスタブロックへの入力としての役割を果たし、ブロック1606の結果または出力は、ブロック1608への入力としての役割を果たす。ブロックの結果は、前方向および同時に段階の蓄積に提供されるため、4段階のアキュムレータレジスタブロックが用いられる場合、7サイクルのみがリダクション動作を実行するのに必要とされる。
ブロック16は、アキュムレータに接続されるmuxから構成される。muxは、アキュムレータに提供されるために、2つの入力のうちの1つを選択する2:1のmuxである。ブロック1610のmuxの2つの入力のうちの1つは、ブロック1514の出力によって提供され、その他の入力は、前の段階のアキュムレータレジスタブロックの結果である。このように、図16のリダクション機能は、データに対するそのマニピュレーションにおいて、柔軟性がある。段階の直前の出力からの入力の各々は、mux1516への隣接アキュムレータシーケンスを生成する「隣接(neighbor)」信号1616と呼ばれる。段階内のいくつかの出力は、mux1516へのリダクションアキュムレータsegを生成し、「リダクション」信号1618と呼ばれる。ブロック1608の最終のアキュムレータブロックの出力は、mux1530に接続される出力1620を生成する。図16のリダクション回路は、リダクション動作を実行し、電力消費を節約するために、最小のクロックサイクルをもたらす。
図17は、本発明の実施形態にしたがい、ハイレベルブロック図式において、ブロック1326に含まれる回路のさらなる詳細を示す。図17において、ブロック1326は、ブロック1306から受信されるデータ入力をシフトするために、シフタ1702〜1712を含むように示される。一実施形態において、入力1700は128ビットであるが、その他のビット数が用いられてもよい。シフタ1702〜1712の各々の出力は、レジスタバンクブロック1714に接続されて示される。シフタ1702〜1712は、入力1700のビットの異なる結合を生成する。
ブロック1714は、シフタ1702〜1712の出力の結合を生成するために使用されるレジスタ1716から1746を含む複数のレジスタを備える。例えば、シフタ1702〜1712の出力の各々の最低8ビットは、選択的にどの最低8ビットが最終的に生成されるべきかを選択するために、muxを経由するように生成され得る。したがって、ブロック1714のレジスタの各々は、シフトされたビットの「好位置(interesting position)」で、任意に選択されることができる。好位置は、シフタ1702〜1712の各々の出力によって決定される。ブロック1714の出力は、バス1310に提供される。
したがって、本発明の実施形態において、ブロック1326は、4つの20ビットおよび2つの24ビット入力レジスタを備える。それは、8つの16ビットレジスタを含み、入力レジスタからの32、16、8、および4ビットのビットの組合せがランダムに生成および保存される。ブロック1326は、次の3つのモードで使用され得る。出力生成のために2つの特定の20ビットレジスタを使用する。2)出力生成のために4つの20ビットレジスタを使用する。または、3)出力生成のために7つ全てのレジスタを使用する。シフタ1702〜1712は、入力レジスタを含むが、当業者には、シフタの構造と機能は既知であるため、図示されない。
ブロック1326の結合機能を実行するために必要なハードウェアあるいはブロックまたは回路の数を減らすために、32ビットの出力レジスタにおける各ビットは、第1モードで、最下位8ビットから2つの20ビットのレジスタに、第2モードで、4つの最下位ビットを4つの20ビットのレジスタに、第3モードで、2つの最下位ビットを4つの20ビットのレジスタに、4つの最下位ビットを24ビットのレジスタに、満たすことができる。入力レジスタからのランダム結合は、2ステップの処理である。第1のステップは、「好(interesting)」ビットを最下位位置にシフトすることを伴い、その最下位位置から出力レジスタへの無作為に満たすことが、そのモードで可能であり得る。本明細書において図17に関連して使用される例において、ブロック1326は、好ビットを最下位位置にするために、入力レジスタでのシフト動作でパイプラインされる場合に、サイクル毎に16の結合されたビットを生成することができる。出力のいくつかの結合は、多数のクロックサイクルを必要とし得る。
メモリ1326は、一般的なランダムアクセスメモリであるため、さらなる詳細は説明されない。しかし、メモリのサイズが、Nタイプのサブプロセッサが使用されるアプリケーションに基づくということだけを言えば、十分である。
図18は、本発明の実施形態において、ハイレベルブロック図式において、ブロック1330に含まれる回路のさらなる詳細を示す。図18において、1ワードレジスタ1802は、8ビット位置を含むように示され、各ビット位置1804は、ビット選択回路1806によって改変されることが可能である。その改変は、「0」の挿入、「1」の挿入、ビットの反転に相当する、またはビットを全く改変しない、「NOP」つまり動作無し(no−operation)に相当する、ビットのNOTing、を含むがそれだけに限定されない。1ワードレジスタは繰り返される、すなわち、ワードレジスタ1810〜1820は、それぞれ、ワードをレジスタ1802として保存および改変する。したがって、16ビットワードおよび8ワードの例において、八つの16ビットワードの改変は、同一のことを実行するためには多数のサイクルを必要とする従来のDSPsと違って、1クロックサイクルにおいて実行される。ワードの各ビットの改変またはパンクチュアリング/デパンクチュアリングは、図18に示されるように、相互およびレジスタ1802に接続されるmux1824およびフリップフロップ1826によって制御される。レジスタ1810〜1822も、その他のmuxおよびフリップフロップ回路に同様に接続される。モード選択ビットは、muxの4つの入力のうちのどれが選択されるかを選択し、それは命令コードから生成される。mux1824へのインプット1828のうちの2つも命令コードからもたらされるが、mux入力のその他の2つはメモリからもたらされ、図18に示されるように、そのうちの1つは他方の反転版であり得る。
ブロック1330の回路への入力は、ブロック1332から生成され、ブロック1332は、ここで簡潔に説明すると、完全インタリーブ、部分的インタリーブ、または非インタリーブのNビットワードをブロック1330に生成する。一例において、動作は256ビットワードにあり、その場合、ブロック1330は、所定の時間に16ビットで動作する。プリフェッチされた制御ワードは、16ビットワード内のどのビットが反転されるべきかを決定するために使用される。選択的に、「0」または「1」の値が、反転する他に、特定のビット位置に入力される。
図19は、本発明の実施形態にしたがい、ハイレベルブロック図式において、ブロック1332に備えられる回路のさらなる詳細を示す。図19において、メモリアレイ1902は、バス1316を介して入力装置から入力104、およびバス1316を介してリードイネーブル入力1906を受信する、さらにブロック1302に提供される出力装置信号1910を生成するために、制御行−列アドレス生成ブロック1908から入力をさらに受信するように示される。一例において、ブロック1902は、128×16ビットから構成されるメモリアレイを含む。データは、行ベースまたは列ベースで、ブロック1902から書き出しまたは読み込まれることができる。読み込まれ得るのはブロック1902のメモリアレイの行であり、読み込まれ得るのは、ブロック1902のメモリアレイの列である。さらに、データは、行ベースで書き込まれることが可能であるが、列ベースで読み込まれることも可能であり、逆も可能である。
図20は、本発明の実施形態にしたがい、ハイレベルブロック図式において、ブロック1334に備えられる回路のさらなる詳細を示す。図20において、ブランチメトリックユニット2002は、ブロック1332からの入力を受信するように示され、加算/比較/選択ブロックに接続されて示され、加算/比較/選択ブロックは、サバイバ(survivor)メモリブロック2012に接続されて示され、順に、サバイバメモリブロック2012は、mux2020に接続されて示され、mux2020は、バス1310に接続される出力2022を生成する。mux2020は、mux2016から入力を受信するアキュムレータ2018の出力から、別の入力を受信するようにさらに示される。任意で、mux2016への入力を生成するために、絶対差の和(SAD)ブロック2008およびデスプレッダ(デスプレッドするために)ブロック2010が使用される。ブロック2008および2010が存在しない場合、mux2016、ブロック2018、およびmux2020が使用され得る。ローカルメモリ2006は、ブロック2004に接続されて示される。ブロック2002は、ビタビコード/デコードに精通する者には既知であるブランチメトリック計算を実行する。ビタビコード/デコードに精通する者に既知であるサバイバパスも、ブロック2012に保存される。
ブロック1334は、ターボデコーダ、SADおよびデスプレッド機能を実行することができる。一例において、32〜256の加算−比較−選択動作は、ローカルメモリ2006によって生成される16ビットブランチおよびパスメトリック値で、ブロック2004によって、平行して実行されることができる。一例において、ローカルメモリ2006のサイズは、1キロビットおよび16キロビットである。
ブロック1334に備えられる複数のブロック2004が存在してもよく、その各々は、8ビット符号付き加算器を備えてもよい。さらに、各々は、ウィニング(winning)パスおよび決定ビットを戻す比較および選択ブロックを備えてもよい。加算−比較−選択動作は、ウィニングパスおよび決定ビットをもたらす。ウィニングパスは、トレリスを伝えるために、「マルチキャスト」相互接続計画を使用する隣接するブロック2004と共有されることができる。ウィニングブランチおよびパスメトリック値を有する決定ビットは、バックトラックのために保存される。
ブロック2008は、4つの8ビットのALUsを使用し、一例において、サイクル毎に計算可能な4つの絶対差を使用する。リダクションツリーは、絶対差を16ビットのアキュムレータに蓄積するために、ブロック2004に組み込まれる。マルチキャストネットワークは、これらの値をさらにリダクションするために送信するように使用されることができる。総数128の8ビット(64の16ビット)ブロック2008が、クロックサイクル毎に可能である。しかしながら、オーバーヘッドの全てを考慮することにより少数にすることが、効率的利用であると考えられる。
ALUは、特別ALUブロックが実行し、上に説明されたような同一の条件付き加算−減算機能を実行する。デスプレッドが必要な制御ビットは、それがレジスタにフェッチおよび保存される場所から、ローカルメモリにロードされなければならない。結果は、リダクション動作のためにその他のブロック2004に転送可能な場所から、16ビットのアキュムレータに蓄積される。デスプレッドによって、一例において、単一サイクルで128の条件付き加算−減算を同時に実行することが可能である。このユニットにおける遷移毎のエネルギーは、デスプレッドおよびSAD以外のいくつかの一般的な機能のために機能する特別ALUに使用されるものよりも高い。指より少ない数、または低い動き検出率のためには、特別ALUはより電力効率の良い選択である。
図21は、本発明の実施形態にしたがう、プロセッサ22を使用してフローおよびツールをプログラミングする例を示す。図22は、本発明の実施形態の拡張性の例を示す。例えば、図22において、バス2204を使用して相互接続されるように示される、クラスタ2202またはWタイプおよびNタイプのサブプロセッサが存在する。各クラスタ2202は、2つまたは4つのサブプロセッサを備える。バス2204は、一例において、標準のSoCバスである。階層的設計方法論を保持することによって、相互接続性が対処される。
プロセッサ20をスケーリングすることにより、各クラスタ用の別々のバスを有する4つのサブプロセッサのクラスタをもたらし、あるいは、4つのサブプロセッサは、単一のメモリを共有し得る。プロセッサに関する拡張性は、一般的に、プロセッサの数を増加、またはプロセッサの周波数または速度を増加させることによってもたらされてきた。しかしながら、複雑なアプリケーションは、従来行なわれてきたもの以上のスケーリングを必要とする。本発明において、WタイプおよびNタイプのサブプロセッサは、処理を形成する4つのそのようなサブプロセッサが単一のアプリケーションを処理することができるように修正される。
したがって、プロセッサ22は、Cコードからのコンパイルに直接基づいて、RISCおよびスーパースケーラプロセッサよりも効率的な、対象のアプリケーションに見られる制御およびシーケンシャルDSPコードを実行する能力が備えられる。同時に、プロセッサ22は、レガシーおよびライトアプリケーションのために、RISCおよびスーパースケーラプロセッサに使用される自動コード生成技術を利用するように設計される。さらに、プロセッサ22は、アプリケーションマッピングおよび開発のために、Simulinkのような、成熟した業界基準のソフトウェアツールで機能する。ムーアの法則が、プロセッサ22の性能を向上させるために利用されることができる。プロセッサ22は、非常に平行性のある機械であるだけでなく、異種マルチプロセッサでもある。要求事項の多いマルチメディアおよび通信のアプリケーションに対処するために、平行性のある異種のマルチプロセッサが必要とされていることが、業界と学界の両方において証明された事実である。プロセッサ22、電力および面積の非効率的な技術を使用しないで、VLIWに使用される多くの自動コード生成技術の利用を可能にする。プロセッサ22は、Cからの制御コードのコンパイルに基づき、繰り返しパターンを利用するように最適化される。このことは制御電力を大幅に減少させ、コンパイルされたシリアルコードを効率的に実行することを可能にする。さらに、プロセッサ22のプログラミングモデルは、Simulinkのようなプログラマーに精通するツールを使用して、DSPプログラマーの大きなコミュニティを適合させるように設計される。その開発フローは、制御およびシーケンシャルDSPコードの効率的なCコンパイル手段を提供する。また、極めて効率的な通信およびマルチメディアのカーネルのライブラリの広範囲のセットが提供される。例として、FFT、IDCT、RRC、ビタビ、VLC、2D/3Dグラフィック、ターボコード、およびデスクランブラのパラメータ化されたライブラリが挙げられる。
プロセッサ22におけるデータパス設計は、注目されかつ非常に有利なアプリケーションの混合を効率的に対処するために、さまざまな粒度の機能ユニットを接続するさまざまな相互接続構造を成功裏に統一する。
プロセッサ22の拡張性は、標準のSoCバスに基づいて、ブロック内の最隣接接続を有する単一ブロック(時分割)で、全てのアプリケーションを適合させるように設計される。多数のブロックが、そのブロック間での専用のコミュニケーション無しで、多数のアプリケーションを処理するために使用可能であるため、非効率性が大幅に減少し、システムレベルの非決定論の全てが削減される。
図23は、本発明の拡張性の利点のいくつかを示すチャートを示す。
本発明は特定の実施形態に関して説明されたが、その代替および改変が、当業者にとっては明白であることが理解される。したがって、以下の請求の範囲は、本発明の真の精神および範囲内にあるそのような代替および改変の全ての範囲をカバーするように解釈されることが意図される。
図1は、本発明の実施形態を含むデジタル製品12に関するアプリケーション10が示される。 図2iは、本発明の実施形態にしたがう、メモリコントローラおよびダイレクトメモリアクセス(DMA)回路24に接続される、異種の、高性能で、拡張可能なプロセッサ22を備える、典型的な集積回路20を示す。 図2iiは、本発明の実施形態にしたがう、メモリコントローラおよびダイレクトメモリアクセス(DMA)回路24に接続される、異種の、高性能で、拡張可能なプロセッサ22を備える、典型的な集積回路20を示す。 図3は、本発明の実施形態にしたがう、プロセッサ20のさらなる詳細を示す。 図4は、本発明の実施形態にしたがう、ブロック74または76などのWタイプのブロックのうちの1つの中に備えられるブロックまたは構造のハイレベルブロック図を示す。 図5は、本発明の実施形態にしたがう、ブロック402に備えられる回路ブロックのブロック図を示す。 図6は、マクロ機能ユニット内、特にブロック402、404、406、および408に転送するレジスタファイルのために用いられる一般構造をさらに詳細に示す。 図7は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック408のさらなる詳細を示す。 図8は、本発明の実施形態にしたがう、ブロック図形式において、ブロック404のさらなる詳細を示す。 図9iは、特に、置換の実行に関するブロック404のさらなる詳細を示す。 図9iiは、特に、置換の実行に関するブロック404のさらなる詳細を示す。 図10は、特に、置換の実行に関するブロック404のさらなる詳細を示す。 図11は、本発明の実施形態にしたがう、ブロック図形式において、ブロック406の構成要素のさらなる詳細を示す。 図12は、本発明の実施形態にしたがう、ブロック78の詳細のハイレベルブロック図を示す。 図13は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック78のさらなる詳細を示す。 図14は、本発明の実施形態にしたがう、ブロック1322のさらなる詳細を示す。 図15は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック1324に備えられる回路のさらなる詳細を示す。 図16iは、本発明の実施形態にしたがう、ブロック1520内に備えられるリダクション回路ブロック1602のブロック図を示す。 図16iiは、本発明の実施形態にしたがう、ブロック1520内に備えられるリダクション回路ブロック1602のブロック図を示す。 図17は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック1326に備えられる回路のさらなる詳細を示す。 図18は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック1330に備えられる回路のさらなる詳細を示す。 図19は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック1332に備えられる回路のさらなる詳細を示す。 図20は、本発明の実施形態にしたがう、ハイレベルブロック図形式において、ブロック1334に備えられる回路のさらなる詳細を示す。 図21iは、本発明の実施形態にしたがう、プロセッサ22を使用してフローおよびツールをプログラミングする例を示す。 図21iiは、本発明の実施形態にしたがう、プロセッサ22を使用してフローおよびツールをプログラミングする例を示す。 図21iiiは、本発明の実施形態にしたがう、プロセッサ22を使用してフローおよびツールをプログラミングする例を示す。 図21ivは、本発明の実施形態にしたがう、プロセッサ22を使用してフローおよびツールをプログラミングする例を示す。 図21vは、本発明の実施形態にしたがう、プロセッサ22を使用してフローおよびツールをプログラミングする例を示す。 図21viは、本発明の実施形態にしたがう、プロセッサ22を使用してフローおよびツールをプログラミングする例を示す。 図22は、本発明の実施形態の拡張性の例を示す。 図23iは、本発明の拡張性の利点のいくつかを示すチャートを示す。 図23iiは、本発明の拡張性の利点のいくつかを示すチャートを示す。

Claims (20)

  1. 異種の、高性能で、拡張可能なプロセッサであって、
    Wビット以上を並列的に処理することが可能な少なくとも1つのWタイプのサブプロセッサであって、Wは整数値である、サブプロセッサと、
    Nビットを並列的に処理することが可能な少なくとも1つのNタイプのサブプロセッサであって、Nは整数値でありWより小さい、サブプロセッサと、
    該少なくとも1つのWタイプのサブプロセッサと少なくとも1つのNタイプのサブプロセッサとを接続する共有バスと、
    該少なくとも1つのWタイプのサブプロセッサと該少なくとも1つのNタイプのサブプロセッサとに接続されて共有されるメモリと
    を備え、該Wタイプのサブプロセッサは、メモリを出入りするバイトを再配置し、アプリケーションの実行に対応することにより、高速動作を可能にする、プロセッサ。
  2. 前記プロセッサは、拡張可能である、請求項1に記載の異種の、高性能で、拡張可能なプロセッサ。
  3. 少なくとも1つのWタイプのサブプロセッサのうちの2つと、前記少なくとも1つのNタイプのサブプロセッサのうちの2つである、請求項1に記載の異種の、高性能で、拡張可能なプロセッサ。
  4. 前記少なくとも1つのWタイプのサブプロセッサと前記少なくともNタイプのサブプロセッサは、マルチメディアアプリケーションに対するプログラムを実行する、請求項2に記載の異種の、高性能で、拡張可能なプロセッサ。
  5. 前記少なくとも1つのWタイプのサブプロセッサのうちの各々は、複数のマクロ機能ユニットを含む、請求項4に記載の異種の、高性能で、拡張可能なプロセッサ。
  6. 前記複数のマクロ機能ユニットは、該複数のマクロ機能ユニットのその他による使用のためのメモリアドレスを生成するために、ロードストアブロックを含む、請求項5に記載の異種の、高性能で、拡張可能なプロセッサ。
  7. 前記複数のマクロ機能ユニットは、前記ロードストアブロックに接続されたスカラー算術論理ユニット(ALU)および乗加算ブロックを含み、該スカラー算術論理ユニットおよび該乗加算ブロックは、該ロードストアブロックから受信されるデータに対し、スカラー算術論理演算および乗算演算を実行する、請求項6に記載の異種で、高性能で、拡張可能なプロセッサ。
  8. 前記複数のマクロ機能ユニットは、ベクトルXブロックを含み、該ベクトルXブロックは、前記ロードストアブロック、前記スカラーALU、および、複数の乗加算ブロックに接続され、該ロードストアブロックからのデータに対してベクトル演算を実行し、該ベクトルXブロックは、ベクトルデータを生成する、請求項7に記載の異種の、高性能で、拡張可能なプロセッサ。
  9. 前記複数のマクロ機能ユニットは、ベクトルALUおよび乗加算ブロックを含み、該ベクトルALUおよび該乗加算ブロックは、前記スカラーALUおよび乗加算ブロックおよび前記ベクトルXブロックに接続され、該ベクトルXブロックから受信されるベクトルデータに対し、ベクトルALU演算および乗加算演算を実行する、請求項8に記載の異種の、高性能で、拡張可能なプロセッサ。
  10. 前記少なくとも1つのNタイプのサブプロセッサは、ストアユニットブロックと、マクロ機能ブロックと、ロードユニットブロックとを含み、該マクロ機能ブロックは、ロードユニットブロックに接続され、該マクロ機能ブロックを該ストアブロックに接続するためのマクロ機能バスにさらに接続される、請求項2に記載の異種の、高性能で、拡張可能なプロセッサ。
  11. 前記少なくとも1つのNタイプのサブプロセッサは、複数のWタイプのサブプロセッサのうちの少なくとも1つによって共有される、データパスユニット(DPU)ブロックと、制御装置と、シーケンサと、データアドレスジェネレータ(DAG)ブロックとを含む、請求項10に記載の異種の、高性能で、拡張可能なプロセッサ。
  12. 前記マクロ機能ブロックは、ガロアフィールドの乗加算(MAC)ブロックを含み、該ガロアフィールドの乗加算ブロックは、前記マクロ機能バスと前記ロードユニットブロック1306とに接続され、ガロアフィールドの演算を実行する、請求項10に記載の異種の、高性能で、拡張可能なプロセッサ。
  13. 前記マクロ機能ブロックは、特別ALUを含み、該特別ALUは、前記ロードユニットブロックと前記ロードユニットブロックとに接続され、特別なALU演算を実行する、請求項12に記載の異種の、高性能で、拡張可能なプロセッサ。
  14. 前記マクロ機能ブロックは、パンクチュアリング/デパンクチュアリングブロックを含み、該パンクチュアリ/デパンクチュアリブロックは、前記ロードユニットブロックと前記ロードユニットブロックとに接続され、パンクチュアリング/デパンクチュアリング演算を実行する、請求項13に記載の異種の、高性能で、拡張可能なプロセッサ。
  15. 前記マクロ機能ブロックは、インタリーバブロックを含み、該インタリーバブロックは、前記ロードユニットブロックと前記ロードユニットブロックとに接続され、インタリーバ演算を実行する、請求項14に記載の異種の、高性能で、拡張可能なプロセッサ。
  16. 前記マクロ機能ブロックは、ビタビブロックを含み、該ビタビブロックは、前記ストアユニットブロックと前記インタリーバブロックとに接続され、ビタビ演算を実行する、請求項15に記載の異種の、高性能で、拡張可能なプロセッサ。
  17. 前記マクロ機能ブロックは、結合器ブロックを含み、該結合器ブロックは、前記ロードユニットブロックと前記ロードユニットブロックとに接続され、結合演算を実行する、請求項16に記載の異種の、高性能で、拡張可能なプロセッサ。
  18. 前記少なくとも1つのNタイプのサブプロセッサは、前記ストアユニットブロックと前記ロードユニットブロックとの間に接続されたXユニットブロックを含む、請求項16に記載の異種の、高性能で、拡張可能なプロセッサ。
  19. 前記少なくとも1つのWタイプのサブプロセッサと前記少なくとも1つのNタイプのサブプロセッサとの間の直接通信のために、該少なくとも1つのWタイプのサブプロセッサと該少なくとも1つのNタイプのサブプロセッサとの間に接続された、共有レジスタを含む、請求項16に記載の異種の、高性能で、拡張可能なプロセッサ。
  20. 異種の、高性能で、拡張可能なプロセッサを備える、情報を処理する方法であって、
    Wビットを並列的に処理することが可能な少なくとも1つのWタイプのサブプロセッサを使用して、データを処理することであって、Wは整数値である、ことと、
    Nビットを並列的に処理することが可能な少なくとも1つのNタイプのサブプロセッサを使用して、データを同時に処理することであって、NはWより1/2倍小さい整数値である、ことと、
    低電力消費とプログラマビリティの容易さとを維持する一方で、マルチメディアアプリケーションの高速実行をもたらすことと
    を含む、方法。
JP2007521614A 2004-07-13 2005-07-12 プログラム可能なプロセッサのアーキテクチャ Pending JP2008507039A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US58769104P 2004-07-13 2004-07-13
US59841704P 2004-08-02 2004-08-02
PCT/US2005/024867 WO2006017339A2 (en) 2004-07-13 2005-07-12 Programmable processor system with two types of sub-processors to execute multimedia applications

Publications (1)

Publication Number Publication Date
JP2008507039A true JP2008507039A (ja) 2008-03-06

Family

ID=35839807

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007521614A Pending JP2008507039A (ja) 2004-07-13 2005-07-12 プログラム可能なプロセッサのアーキテクチャ

Country Status (5)

Country Link
EP (1) EP1779256A4 (ja)
JP (1) JP2008507039A (ja)
KR (1) KR20070055487A (ja)
CA (1) CA2572954A1 (ja)
WO (1) WO2006017339A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011096254A (ja) * 2009-10-30 2011-05-12 Arm Ltd 乗累算演算を実行するための装置および方法
JP2016526220A (ja) * 2013-05-24 2016-09-01 コーヒレント・ロジックス・インコーポレーテッド プログラム可能な最適化を有するメモリネットワークプロセッサ

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7856246B2 (en) 2007-03-21 2010-12-21 Nokia Corporation Multi-cell data processor
JP6102528B2 (ja) 2013-06-03 2017-03-29 富士通株式会社 信号処理装置及び信号処理方法
KR102235803B1 (ko) * 2017-03-31 2021-04-06 삼성전자주식회사 반도체 장치

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08328849A (ja) * 1995-05-17 1996-12-13 Sgs Thomson Microelectron Ltd コンピュータ及びコンピュータ動作方法
US5878085A (en) * 1997-08-15 1999-03-02 Sicom, Inc. Trellis coded modulation communications using pilot bits to resolve phase ambiguities
WO1999010226A2 (en) * 1997-08-22 1999-03-04 Jens Korsgaard Fluid swivel for oil production vessels and tanker vessels
JP2000004265A (ja) * 1998-06-12 2000-01-07 Nippon Hoso Kyokai <Nhk> デジタル送信装置および受信装置
JP2001060979A (ja) * 1999-07-09 2001-03-06 Lsi Logic Corp デジタル信号のマルチレベル符号化方法及び装置
US20040078411A1 (en) * 2002-10-22 2004-04-22 Joshua Porten Galois field arithmetic unit for use within a processor

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6331856B1 (en) * 1995-11-22 2001-12-18 Nintendo Co., Ltd. Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing
US5909559A (en) * 1997-04-04 1999-06-01 Texas Instruments Incorporated Bus bridge device including data bus of first width for a first processor, memory controller, arbiter circuit and second processor having a different second data width
US6539467B1 (en) * 1999-11-15 2003-03-25 Texas Instruments Incorporated Microprocessor with non-aligned memory access

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08328849A (ja) * 1995-05-17 1996-12-13 Sgs Thomson Microelectron Ltd コンピュータ及びコンピュータ動作方法
US5878085A (en) * 1997-08-15 1999-03-02 Sicom, Inc. Trellis coded modulation communications using pilot bits to resolve phase ambiguities
WO1999010226A2 (en) * 1997-08-22 1999-03-04 Jens Korsgaard Fluid swivel for oil production vessels and tanker vessels
JP2000004265A (ja) * 1998-06-12 2000-01-07 Nippon Hoso Kyokai <Nhk> デジタル送信装置および受信装置
JP2001060979A (ja) * 1999-07-09 2001-03-06 Lsi Logic Corp デジタル信号のマルチレベル符号化方法及び装置
US20040078411A1 (en) * 2002-10-22 2004-04-22 Joshua Porten Galois field arithmetic unit for use within a processor

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011096254A (ja) * 2009-10-30 2011-05-12 Arm Ltd 乗累算演算を実行するための装置および方法
JP2016526220A (ja) * 2013-05-24 2016-09-01 コーヒレント・ロジックス・インコーポレーテッド プログラム可能な最適化を有するメモリネットワークプロセッサ
JP2021192257A (ja) * 2013-05-24 2021-12-16 コーヒレント・ロジックス・インコーポレーテッド プログラム可能な最適化を有するメモリネットワークプロセッサ
US11544072B2 (en) 2013-05-24 2023-01-03 Coherent Logix, Inc. Memory-network processor with programmable optimizations
JP7264955B2 (ja) 2013-05-24 2023-04-25 コーヒレント・ロジックス・インコーポレーテッド プログラム可能な最適化を有するメモリネットワークプロセッサ
US11900124B2 (en) 2013-05-24 2024-02-13 Coherent Logix, Incorporated Memory-network processor with programmable optimizations

Also Published As

Publication number Publication date
WO2006017339A3 (en) 2006-04-06
EP1779256A2 (en) 2007-05-02
EP1779256A4 (en) 2007-11-28
KR20070055487A (ko) 2007-05-30
CA2572954A1 (en) 2006-02-16
WO2006017339A2 (en) 2006-02-16

Similar Documents

Publication Publication Date Title
US7721069B2 (en) Low power, high performance, heterogeneous, scalable processor architecture
EP1849095B1 (en) Low latency massive parallel data processing device
US8510534B2 (en) Scalar/vector processor that includes a functional unit with a vector section and a scalar section
KR100948512B1 (ko) 부동 소수점 연산을 지원하는 부동 소수점 유닛-프로세싱 요소(fpu-pe) 구조 및 그 fpu-pe 구조를 포함한 재구성 어레이 프로세서(rap) 및 그 rap를 포함한 멀티미디어 플랫폼
JP2001256038A (ja) 柔軟な乗算ユニットを有するデータ・プロセッサ
US20130111188A9 (en) Low latency massive parallel data processing device
US20070198901A1 (en) Configurable interface for connecting various chipsets for wireless communication to a programmable (multi-)processor
WO2012108411A1 (ja) 符号化/復号化処理プロセッサ、および無線通信装置
Li et al. Efficient parallel implementation of three‐point viterbi decoding algorithm on CPU, GPU, and FPGA
JP2008507039A (ja) プログラム可能なプロセッサのアーキテクチャ
CN101031904A (zh) 带有两类子处理器以执行多媒体应用的可编程处理器***
US6728741B2 (en) Hardware assist for data block diagonal mirror image transformation
EP1102161A2 (en) Data processor with flexible multiply unit
KR100722428B1 (ko) 리소스 공유 및 파이프 라이닝 구성을 갖는 재구성가능배열구조
Lin et al. A unified processor architecture for RISC & VLIW DSP
US7890566B1 (en) Microprocessor with rounding dot product instruction
WO2006083768A2 (en) Same instruction different operation (sido) computer with short instruction and provision of sending instruction code through data
Lee et al. FleXilicon: a reconfigurable architecture for multimedia and wireless communications
Mayer-Lindenberg A modular processor architecture for high-performance computing applications on FPGA
JP2004102988A (ja) データ処理装置
Sunitha et al. Design and Comparison of Risc Processors Using Different Alu Architectures
Sangireddy et al. On-chip adaptive circuits for fast media processing
Lin et al. A unified RISC/VLIW DSP core for multimedia processing
KAREEM et al. A VLIW Architecture for Executing Scalar/Vector Instructions on Instruction Level Parallelism
versus Cache 21.1 Introd

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080704

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110621

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110725

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111220