JP4339245B2 - スカラー/ベクトルプロセッサ - Google Patents

スカラー/ベクトルプロセッサ Download PDF

Info

Publication number
JP4339245B2
JP4339245B2 JP2004507989A JP2004507989A JP4339245B2 JP 4339245 B2 JP4339245 B2 JP 4339245B2 JP 2004507989 A JP2004507989 A JP 2004507989A JP 2004507989 A JP2004507989 A JP 2004507989A JP 4339245 B2 JP4339245 B2 JP 4339245B2
Authority
JP
Japan
Prior art keywords
scalar
vector
unit
instruction
processor
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.)
Expired - Fee Related
Application number
JP2004507989A
Other languages
English (en)
Other versions
JP2005527038A (ja
Inventor
コルネリス、ハー.バン、ベルケル
パトリック、ペー.エー.ミューウィッセン
ヌール、エンヒン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NXP BV
Original Assignee
NXP BV
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 NXP BV filed Critical NXP BV
Publication of JP2005527038A publication Critical patent/JP2005527038A/ja
Application granted granted Critical
Publication of JP4339245B2 publication Critical patent/JP4339245B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8061Details on data memory access
    • 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/3824Operand accessing
    • 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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
    • 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
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Description

本発明は、スカラー/ベクトルプロセッサに関する。
UMTS/FDD、TDD、IS2000、およびTD−SCDMAのような第3世代ワイヤレス通信標準は、非常に高い周波数で動作する。UMTSのような3Gモバイル通信標準用のモデム(トランシーバ)は、GSMよりも100倍以上のデジタル信号処理パワーを必要とする。異なる標準を処理出来且つ新たな標準にフレキシブルに適応出来るために、プログラム可能アーキテクチャを使用してこのような標準用のトランシーバを実施することが望まれる。従来の周波数で動作する従来のDSPテクノロジーを使用することは、必要な性能を提供するために30DSPを必要とする。このようなアプローチは、単一標準のためのトランシーバの従来のハードウエアベースアプローチに比較して、コスト効率的ではないし、且つパワーが効率的でもない。
プロセッサの性能を向上するための公知のアプローチは、ベクトルアーキテクチャを使用することである。ベクトルプロセッサにおいて、ベクトルは、一つよりも多くの、例えば、16個の16ビットエレメントを備える。このプロセッサの機能ユニットは、一つの命令によって起動された、ベクトルの全ての個々のデータ要素で並列に動作する。パイプライン化ベクトルプロセッサを使用して、その性能が、更に向上され得る。
ベクトルプロセッサは、伝統的に、科学的処理のために主に使用されている。原則的には、ベクトルプロセッサは信号処理のためにも使用されることが出来る。しかしながら、従来のベクトルプロセッサアーキテクチャは、「アムダール法則(Amdahl‘s Law)」によって、100%ベクトル化出来ないアプリケーションに対して効率的ではない。この法則は、ベクトル化出来るコードのフラクションの関数(f)として、P個の処理エレメントを有するベクトルプロセッサでベクトル化から得られる全体のスピードアップは、(1−f+f/P)−1に等しい。このことは、コードの50%がベクトル化出来る時、(32の理論的最大スピードアップの代わりに)2未満のスピードアップが実現される。これは、コードの残りの50%がベクトル化されることが出来ないためであり、従って、コードのこの部分のためにスピードアップが達成されない。コードの90%がたとえベクトル化出来るとしても、スピードアップは、まだ8のファクタ未満である。消費者アプリケーション、特にモバイル通信での使用のためには、ベクトルプロセッサの追加のコストは、顕著なスピードアップが達成できる場合に容認され得るに過ぎない。
本発明の目的は、高性能タスク、特に、モバイル通信システム用の信号処理のためにより良好に適するプロセッサアーキテクチャを提供することである。
上記目的を満足するために、スカラー/ベクトルプロセッサは、複数の機能ユニットを含み、これらの機能ユニットの内の少なくとも一つは、少なくとも一つのベクトルに対して動作するベクトル部と少なくとも一つのスカラーに対して動作するスカラー部とを含み、スカラー部によって共に動作する機能ユニットのベクトル部とスカラー部は、機能ユニットのベクトル部によって要求および/または供給される少なくとも一つのスカラーを提供および/または消費するように配置されている。
本願の発明者等は、アムダール法則を突破するために、データの非ベクトル化可能部分が、効率的な方法で処理されなければならないことが必要であることを実現した。非ベクトル化可能部分は、スカラーデータを扱う。これらのスカラーは、しばしば、ベクトル演算によって生成および/または消費される。実施例(Example)は、ベクトルの全ての要素の合計、最大、最初(最後)のベクトル要素の選択である。他の場合、スカラーデータは、ベクトル演算から独立してもよい。このようなスカラーデータを最適に扱うために、プロセッサの少なくとも1個の機能ユニットは、ベクトル部のみならずスカラー部を含む。スカラー部は、機能ユニットのベクトル部によって要求および/または提供されるスカラーを提供および/または消費する。このように、プロセッサのスカラー部分は、ベクトル部分のために要求される或いはそれによって生成されるスカラーを更に準備或いは処理出来、ベクトル部が、ベクトルのストリーム化処理をより良好に続けることを保障する。米国特許第5,659,706号は、別個のスカラープロセッサ部とベクトルプロセッサ部とを有するスカラー/ベクトルプロセッサを記述している。これらのプロセッサ部の各々は、機能ユニット内に配置されている。しかしながら、スカラープロセッサ部の機能ユニットとベクトルプロセッサ部の機能ユニットとの間の密接な協働演算はない。両方の部分が、完全に独立して動作する。
従属の請求項2と3に記述されているように、機能ユニットのベクトル部とスカラー部は、夫々、夫々のパイプラインに配置されている。これは、プロセッサのベクトル部とスカラー部の性能を向上する。
従属の請求項4に記述されているように、これらのパイプラインは、互いから独立して構成され得る。これによって、生のデータ処理のためにベクトルパイプラインの最適構成が可能となり、スカラーパイプラインの他の最適構成が、ベクトル処理のためのスカラーの最適消費/生成のために選択され得る。この構成可能性は、性能を向上すると共にプロセッサのプログラミングを単純化出来る。また、このように、プログラムコードが減少され得る。
従属の請求項5に記述されているように、これらのパイプラインの少なくとも一つは、命令毎に構成可能である。このように、性能は、一層向上され、且つコードは、更に減少される。
従属の請求項6に記述されているように、スカラー/ベクトルプロセッサは、各機能ユニット毎に個別のセグメントを有するVLIW命令を使用して制御される。好ましくは、VLIW命令は、機能ユニットのスカラー部とベクトル部に対する個別の命令を含む。このように、両部は、それらのタスクを最適に実行出来る。
従属の請求項8に記述されているように、これらのパイプラインは、VLIW命令を介して構成され得る。これは、命令毎にパイプラインを構成する効果的方法である。
従属の請求項9に記述されているように、パイプラインは、そのパイプラインに取付けられる機能ユニットと同じく多くのパイプラインパスを含む。これらの機能ユニットの各々は、これらのパスの一つに関連する。例えば、このようなパスは、機能ユニットがベクトル(またはスカラーパイプラインに対してスカラー)を同報するパスである。従属の請求項10に記述されているように、機能ユニットに対する命令は、機能ユニットが消費すべきベクトルがどのベクトルパイプラインパスからか(および/またはその機能ユニットが消費すべきスカラーがどのスカラーパイプラインパスからか)を指示する。或いは、機能ユニットに対する命令は、機能ユニットが生成すべきベクトル出力がどのベクトルパイプラインパス上へか(および/またはその機能ユニットが生成すべきスカラー出力がどのスカラーパイプラインパス上へかを指示し、後続のサイクルの一つでそのパスと関連する機能ユニットは、そのユニットに与えられた命令に依存して生成されたデータを消費する。このように、フルパイプライン構成可能性が達成され得ると共に、パイプライン当り一つのみのパスを指示する合理的レベルでネットワークアドレシングを維持する。パスと機能ユニットとの間の固定関係によって、パスを指示することは、機能ユニットを指示すること同じであることが理解される。
従属の請求項11に記述されているように、シフトユニットは、機能ユニットのスカラー部とベクトル部との協働動作から最適に利益を得る機能ユニットの例である。
本発明の目的を満足するために、処理システムは、スカラープロセッサおよび請求項1に記載のスカラー/ベクトルプロセッサを含み、このスカラー/ベクトルプロセッサは、スカラープロセッサに対するコプロセッサとして配置され、スカラープロセッサは、スカラー/ベクトルプロセッサを制御するように配置され、スカラー/ベクトルプロセッサのスカラー部は、ループ内スカラー処理を実行するように配置され、且つスカラープロセッサは、不定期のループ外スカラー処理を実行するように配置される。スカラー/ベクトルプロセッサを不定期のスカラー演算を処理しないですむようにすることによって、アムダール法則が、重要な部分に対して克服され得る。本発明に従うスカラー/ベクトルプロセッサは、スカラー部とベクトル部の間の緊密な強調が、ベクトル処理が可能な限り続くことを保障するループ内スカラー演算を扱うのに対して最適である。(CMOSテクノロジー、演算の周期等のような)テクノロジーは、コスト効率的システムを与えることによって、両プロセッサに対して最適に選択され得る。
本発明のこれらおよび他の態様は、以下に記述される実施の形態から明らかであると共にそれを参照して説明される。
図1は、本発明に従うスカラー/ベクトルプロセッサが使用可能な好適な構成を示す。この構成において、3個の主コンポーネントが、バス110を介して接続される。これら3個の主コンポーネントを接続するこのバス110は、任意の好適なバスでよく、例えば、AMBA高速バス(AHB)である。これらの主コンポーネントは、
・本発明に従うプログラム可能スカラー/ベクトルプロセッサ120であり、機能ユニットと(図1では、ベクトルメモリと呼ばれる)ローカルデータメモリを備える。
・マイクロコントローラまたはDSPサブシステム130であり、限られたオンチッププログラムとデータメモリを含む。
・インターフェースブロック140である。
スカラー/ベクトルプロセッサ120は、主に、定期的な「ヘビー/デューティ」処理、特にループ内処理のために使用される。スカラー/ベクトルプロセッサは、ベクトル処理機能性を含む。そのように、このスカラー/ベクトルプロセッサは、実行されるべきコードのベクトル化可能部分に対する大規模並列化を提供する。全ての信号処理の非常に多くの部分は、スカラー/ベクトルプロセッサのベクトル部によって実行される。例えば、同じ命令を実行する32個の同じ処理エレメントのアレイの場合、このアレイは、大量の並列化を提供する。32ワード幅メモリインタフェースを組み合わせると、これは、低コストで空前のプログラム可能性能レベルに繋がると共にパワー−消費を緩和する。しかしながら、多くのアルゴリズムが、正しい形態の十分なデータ並列化を示さないので、この並列化を十分に活用することは、常に実現可能ではない。アムダール法則によれば、コードの直接的ベクトル化可能部分のベクトル化の後に、大部分の時間が、残りのコードに費やされる。この残りのコードは、4つのカテゴリーに分割されることが出来る。
・アドレス関連命令(例えば、モジュロアドレス指定を使用して、ポインターをサークルバッファへ増分すること)
・定期的スカラー演算(即ち、ベクトルプロセッサの主ループに対応するスカラー演算)
・ルーピング
・不定期のスカラー演算
これらのカテゴリーの各々に対するコードのフラクションは、実行されるアルゴリズムに大きく依存する。例えば、(P−SCHサーチに使用される)ゴレイ(Golay)相関器は、多数のアドレス関連命令を必要とするが、レーキ(Rake)のような他のアルゴリズムでは、それは適用できない。しかしながら、本発明者等が研究した全てのアルゴリズムの一つの共通の特性は、不定期のスカラー演算の部分は、非常に限られることである。この特性は、スカラー/ベクトルプロセッサ(120)とマイクロコントローラまたはDSP(130)の間でタスクの分離を可能とする。
本発明に従うアーキテクチャは、ベクトル処理と緊密に統合されたスカラー/ベクトルプロセッサ120のスカラー処理機能性を組み込むことによって、最初の3つの問題を克服する。4番目の問題は、不定期タスクを実行する、好ましくは、良好にスカラー/ベクトルプロセッサを制御する別個のマイクロコントローラまたはDSP130を使用することによって、克服され得る。この好適な構成において、スカラー/ベクトルプロセッサ120は、プログラム可能コプロセッサ(後で、CVP、コベクトルプロセッサ(Co−Vector Processor)と呼ばれる事もある)として働く。スカラー/ベクトルプロセッサ(120)とマイクロコントローラ130とのインターフェースは、(例えば、共用メモリを介する)通信と(例えば、共用メモリと状態信号を介する)同期を扱う。このインターフェースは、好ましくは、メモリマッピングされる。
インターフェースブロック140は、プロセッサがシステムの残りの部分と対話することを可能とする。好適な実施の形態において、スカラー/ベクトルプロセッサは、2G/3Gモバイルネットワークに対するソフトウエアモデム(トランシーバ)として使用される。このようなソフトウエアモデム機能に対して、無線を制御しインターフェースすることは、スカラー/ベクトルプロセッサ(制御は、不定期であり、データは、本来直列に通信される)または、マイクロコントローラ130(割込みレートが高過ぎる)によっては簡単に実行されることが出来ない。このようなアプリケーションに対して、マイクロコントローラ130の制御下で、制御およびデータワードをベクトルメモリ、例えばDMAへパスするメインタスクを有するフロントエンドとして専用のハードウエアを使用することが好ましい。次に、ベクトルメモリのデータは、スカラー/ベクトルプロセッサによって処理される。ソフトウエアモデムに対して、スカラー/ベクトルプロセッサによって実行される受信機機能は、フィルタ、レーキ受信機、チャネル予測器、サーチャー、デインターリーバ、アップリンク、ターボデコーダ、ビタビデコーダ、およびデマルチプレクサを含むことが出来る。スカラー/ベクトルプロセッサによって実行される送信機機能は、マルチプレクサ、チャネルデコーダ、インターリーバ、送信機、およびフィルタを含むことが出来る。それ自体、これらの機能は、公知であり、更には述べない。
スカラー/ベクトルプロセッサ120は、バス110に対してスレーブであり、マイクロコントローラ130と(DMAユニットを含んでいても良い)インターフェースブロック140は、マスターとして働く。プログラム、データ或いは制御である、CVPを有する全ての通信は、メモリマッピングされるのが好ましい。メモリは、オフチップDRAMでもよく、このDRAMは、スカラー/ベクトルプロセッサによって(デ)インターリーブメモリとして使用される。
図2は、本発明に従うプロセッサの主構造を示す。このプロセッサは、パイプラインベクトル処理セクション210を含む。図2の好適な実施の形態では、ベクトル部は、以下に詳細に記述される7個の機能ユニットを含む。当業者は、指定のタスクに対して最適な機能ユニットを選択出来る。このベクトル部の動作をサポートするために、スカラー/ベクトルプロセッサは、ベクトル部と並列に動作可能に配置されるスカラー処理セクション220を含む。好ましくは、スカラー/ベクトルプロセッサは、パイプライン化される。ベクトル部の動作をサポートするために、ベクトル部の少なくとも一つの機能ユニットは、スカラー部の対応する部分の機能性を提供する。例えば、シフト機能ユニットのベクトル部は、ベクトルを機能的にシフト出来、そこでは、スカラーコンポーネントは、シフト機能ユニットのスカラー部によって供給される(スカラー部に引き渡される。このように、シフト機能ユニットは、ベクトル部とスカラー部の両方をカバーする。従って、少なくとも幾つかの機能ユニットは、ベクトル部のみならずスカラー部を有し、ベクトル部とスカラー部がスカラーデータの交換によって協働出来る。機能ユニットのベクトル部は、生の処理パワーを提供し、対応するスカラー部(即ち、同じ機能ユニットのスカラー部)は、スカラーデータを供給および/または消費することによってベクトル部の動作をサポートする。ベクトル部に対するベクトルデータは、ベクトルパイプラインを介して供給される。
複数の機能ユニット(FU)は、並列に動作する。各FUは、ベクトルデータを受信および送信出来る。多くのFUは、スカラーデータも受信および送信出来る。FUの一つは、指定のFUであり、命令配信ユニット(IDU250)と呼ばれる。このユニットは、プルグラムメモリ252を含み、命令を順番に配列し、命令セグメントをそれ自体と他のFUに配信するように働く。原則的には、各FUは、3個のセクション、制御230、スカラー220、およびベクトル210を有する。以下に詳細に記述されるように、幾つかのFUの制御部とスカラー部は、空である。
本発明に従うスカラー/ベクトルプロセッサは、二つの主要な方法で命令レベルの並列化を適用する。
1.ベクトル処理、ここでは、単一の命令が(スカラー)データのベクトルに働く。このアプローチは、単一命令ストリーム、複数データストリーム或いはSIMDとして知られている。
2.複数の機能ユニットの並列処理、各ユニットは、ベクトルに働く。これは、VLIW命令レベルの並列化の(限られた)形態として見られる。
命令レベルの並列化のこれら二つの形態は、互いに独立しており、それらの効果は、累積的である。
機能ユニット(FU)(複数)の概要
好適な実施の形態において、CVPは、以下の7個の特殊化機能ユニットを含む。
・命令配信ユニット(IDU250)。このIDUは、プログラムメモリ252を含み、連続するVLIW命令を読み出し、各命令の7個のセグメントを7個の機能ユニットに配信する。このましくは、このIDUは、3個までのゼロオーバーヘッドループの入れ子レベルをサポートするループを含む。好適な実施の形態では、このIDUは、分岐、ジャンプ、または割込みをサポートしない。初期プログラムカウンタは、以下で詳細に述べられるスティント(stint)記述子からロードされる。
・ベクトルメモリユニット(VMU260)。このVMUは、(図2には示されていない)ベクトルメモリを含む。各命令中に、このVMUは、ラインまたはベクトルをベクトルメモリから送信でき、或いは、ラインをベクトルメモリに受信出来る。更に、同じ命令は、スカラー送信演算および/または受信演算を指定出来る。VMUは、外部世界、即ち、外部バス110に接続される唯一の機能ユニットである。
・コード発生ユニット(CGU262).このCGUは、有限体算術に特化される。例えば、CGUは、CDMAコードチップのベクトル、並びにチャネルコーディングおよびCRCのような関連する関数を発生するために使用され得る。
・ALU−MACユニット(AMU264)。このAMUは、正則整数と固定点算術に特化されている。このAMUは、イナーベクトル演算をサポートし、そこでは、算術は、複数のベクトルに対して要素毎に実行される。好適な実施の形態では、AMUは、幾つかのイントラベクトル演算を提供し、そこでは、算術は、単一ベクトル内で要素に対して実行される。
・シャッフルユニット(SFU266)。このSFUは、指定されたシャッフルパターンに従って、ベクトルの要素を再配置出来る。
・左シフトユニット(SLU268)。SLUは、ワード、ダブルワードまたはクワォドワードのような単位によってベクトルの要素を左にシフト出来る。生成されたスカラーは、そのスカラー部に提供される。発行されたSLUベクトル演算のタイプによって、消費されたスカラーは、ゼロであったり、そのスカラー部から取り出される。
・右シフトユニット(SRU270)。このSRUは、SLUと同様であるが、それは、右にシフトする。更に、このSRUは、AMU上のイントラベクトル演算からの累算結果を併合する能力がいる。
以下の表は、全てのFUが機能ベクトル部を有することを示し、そこでは、幾つかが、制御部やスカラー部を持たない。
Figure 0004339245
指定のアプリケーションに対して、他のFUが選択されてもよいことが理解される。好ましくは、基本プロセッサにおいて、AMUとVMUは、IDUと組合されて使用される。パワー消費が、重要である場合、SFUはドロップできる。この理由は、このユニットは、シャッフル動作を助けることが出来るシャッフルユニットよりも多くのパワーを消費するからである。SFUは、特にビタビコーディングにとって有用である。CGUとCGUの指定の形態は、従来のAMU命令、例えば、ガロア体計算およびスクランブル化コードの発生を使用して、生成するのが困難であるコードの計算要求によって選択される。あるアプリケーションでは、FUのより高い平均負荷を得るために、一つまたはそれより多くのAMUを追加することが有利である。また、他の専用FUが、例えば、あるビットレベル計算を実行するために追加されてもよい。
好ましくは、FUの少なくとも一つは、FUの動作がFUに格納されているパラメータによって影響を及ぼされるという意味で構成可能である。好ましくは、このようなパラメータ(「構成データ」)は、ベクトルメモリから読み出される。このような構成は、プロセッサのプログラミングを簡単化し且つコードサイズを減少するのを助ける。
インターFU通信
全ての機能ユニットは、並列に動作する。それらへの命令のセグメントを受信すると、機能ユニットは、データと、ベクトルデータおよびスカラーデータ(適用出来る場合)の両方とを入力、処理および出力する。FU同士間において、通信は、スカラー部同士間およびベクトル部同士間(インターFU通信)では、厳格である。即ち、IDUを除き、全てのFUのベクトル部は、パイプラインで接続される。好適な実施の形態において、このパイプラインは、命令ベースで構成可能である。その結果、好ましくは、FUは、相互接続ネットワークによって相互接続され、原則的には、各ベクトル部が各サイクル中に他のベクトル部の何れかからのベクトルを受信出来る。とりわけ、この特徴によって、(IDUを除く)FUの任意のパイプラインの生成が可能となる。ベクトルパスへ寄与する機能ユニットの6個は、各クロックサイクル中に、ベクトルを出力出来、且つそれを他のユニットに並列に送信出来る。これらのユニットは、他のユニットからベクトルを受信出来る。ネットワークは、略完全に接続される。重要ではないリンクのみが、省略される。ベクトルパスの接続性は、以下に表にされる(!は、接続を示す)。AMUは、同時に二つのベクトルを受信出来ることに留意すべきである。
Figure 0004339245
図2に示されるように、ネットワークは、(ディスクによって指示される)信号ソースとして一つのネットワークパスに接続される各FUによって形成されるのが好ましい。ネットワークは、(三角形によって指示される)信号シンクとして全ての他のパスに接続される。FUに対するVLIW命令のセクションは、どのパスからのベクトルを消費すべきかを指示する。このように、パイプラインは、命令ベースで構成される。各パスは、例えば、256個の並列ワイヤを使用して、フルベクトルを転送出来る。同様に、FUのスカラー部の少なくとも幾つかは、別個のパイプラインによって接続される。このパイプラインもまた、命令ベースで構成され得る。FUのスカラー部同士間の相互接続ネットワークは、スカラーが少なくとも一つのFUのスカラー部へ送信されないまたはそれから受信されないという意味で部分的でもよい。従って、より少ない数のパイプライン順序付けが指定され得る。スカラーおよびベクトルパイプラインは、互いから独立していることが出来る。例えば、関連するVLIWセクションを指示することによって、スカラーパイプラインとベクトルパイプラインの両方が、機能ユニットによって読み出される。データを出力するための固定の関連するパスを有するFUの代わりに、データを受信するための固定の関連するパスを持っても良く、VILW命令は、データが出力されるべきパスを指示することが理解される。
Figure 0004339245
構成可能性の例として、最初のVLIWは、CGUによって生成されたベクトルとVMUによって生成されたものとをANUに消費させる。次の命令は、VMUからのベクトルをSFUに消費させ、且つSFUからのベクトルをAMUに消費させる。3番目の命令は、VMUからのベクトルをAMUに消費させ、且つAMUからのベクトルをSFUに消費させる。
異なる機能ユニットの制御部同士間で指定される接続性はない。これらの制御部は、IDUからVLIW命令のセグメントを受信し、それら自体の状態を更新し、それらの夫々のスカラー部とベクトル部を制御する。
イントラFU通信
FU内には、これらのセクション同士間には強固な相互作用(イントラFU通信)がある。相互作用は、FUの演算の整数部である。例は、SLUとSRUであり、生成および/または消費されたスカラーは、FUの対応するスカラー部へ提供および/またはそれから取り出される。より詳細は、FUの詳細な説明の部分として示される。
命令は、典型的には、単一サイクルで実行される。例外は、ベクトルメモリでの混雑によって引き起こされ、停止サイクルとしてそれら自体を明らかにする。
データ幅とデータタイプ
好適な実施の形態において、スカラー/ベクトルプロセッサは、図3に示されるように、複数のデータ幅とデータタイプをサポートする。メモリアドレス指定の基本単位は、シングルワードとも呼ばれるワードである。好ましくは、データ幅は、シングルワード(W)、ダブルワード(DW)、またはクワォド(QW)ワードである。サイズは、W=8ビットである。ダブルワード(2W=16ビット)は、1対のワードであり、そのアドレスは、常に偶数値である。クワォドワード(4W=32ビット)は、1対のダブルワードであり、クワォドワードアドレスは、4の倍数である。シングルワードの対またはダブルワードは、複素数として使用出来る。ベクトルは、P個のクワォドワードよりなり、それは、2P個のダブルワードおよび4P個のシングルワードに対応する。全ベクトル幅を与えるP=8は、8ビットの好適なワードサイズに対して256ビットである。
好適な実施の形態において、CVPは、以下のデータタイプ:整数と複素整数をサポートする。
1.整数(int)は、三つのサイズ:ワード、ダブルワードおよびクワォドワード、即ち、Nが、W、2Wまたは4Wに等しい時、整数範囲[−2N−12N−1−1]に入る。
2.複素整数タイプ、即ち、図3にint.realとして示される1対の整数(実数、虚数)。複素整数は、2つのサイズ:ダブルワードとクワォドワードに入る。
スカラーは、データタイプ、整数または複素整数のいずれかの値である。従って、スカラーは、三つのサイズ:(シングル)ワード、ダブルワード、およびクワォドワードに入る。ベクトルは、P個のクワォドワードの固定サイズを有する。ベクトルは、三つの以下のフォーマットの内の一つに構造化される。
1.サイズクワォドワードのP個の要素
2.サイズダブルワードのP=2P個の要素
3.サイズ(シングル)ワードのP=2P=4P個の要素
ベクトル要素指標付け範囲は、[0…4P−1]である。従って、ダブルワードは、偶数の指標を有し、クワォドワードの指標は、4の倍数である。図3は、データサイズとデータタイプとの間の関係の概観を示している。アーキテクチャは、Pにおいて十分にスケーラブルであり、任意のベクトルサイズP 1に対して定義される。しかしながら、多くの場合、Pに対して2のべき乗を選択することが好ましい。
好適な実施の形態において、32ワードのデータパス幅とメモリ幅を含む場合、Pは、8である。
関連する数学演算は、データタイプにおけるばらつきを処理するように構成またはプログラムされ得る。例えば、4個の基本的(低精度)マルチプレクサは、2倍精度のマルチプレクサまたは複素マルチプレクサに組み合わせられる。このような技術は、DSPおよび回路設計において周知であり、更には記述しない。
プログラム実行
スティント(stint)は、CVP−プログラム実行と同期の単位である。スティントは、有限シーケンスのCVP命令によって記述される有限で割り込みの無いタスクである。スティント(stint)は、典型的には、連続するアクティブDSPカーネルの時間スライスであり、その記述には2〜3ダースの命令を必要とし、その実行には2〜3百のサイクルを必要とする。
CVPプログラムメモリは、多くのスティントプログラムを含む。どのスティントをどの順序で実行すべきかをマイクロコントローラ130に指定する。このために、マイクロコントローラ130は、いわゆるスティント記述子のリンクリストをベクトルメモリに書き込むことが出来る。各スティント記述子は、対応するオブジェクトコードを参照し、そのスティントが完了すると可能な信号(単数または複数)をサクセッサのstint記述子に発生する。スティント記述子は、3つのフィールドよりなるベクトルメモリ中の構造である。
・プログラムメモリ中のオブジェクトコードのスタートアドレス
・ベクトルメモリ中のサクセッサスティント(実行されるべき次のスティント)のアドレス;サクセッサがない場合はnil
・信号送信記述子
ベクトルメモリ中にスティント記述子を配置する代わりに、スティント記述子は、CVPプログラムメモリに配されても良い。
好適な構成において、スティントの実行は、以下の方法で起動されることが出来る。
1.CVPは、アイドル状態にある。マイクロコントローラ130は、SDののアドレスを指定されたVMアドレスに書き込むことによってスティントの実行を起動することが出来る。この特定のVM位置は、現在アクティブのスティントのアドレスを含み、CVPがアイドルである時のニル(nil)値を含む。
2.スティントが完了すると、CVPプログラムの明確なEOS(end of stint(スティントの終了))によって指摘されるように、サクセッサが現在のSDに指定されると、CVPは、サクセッサスティントを続ける。そのようなサクセッサが存在しないならば、CVPはアイドル状態に戻る。
スティントの状態(アクティブ/完了)は、マイクロコントローラ130によってVMの中の指定された「現在のスティント(current−stint)」位置を検出することによってポーリングされる。スティントが完了すると、CVPは、任意ではあるが、その環境に信号を送ることが出来る。1セットの信号ワイヤ(出力ワイヤ、少なくとも一つ)に対して、それを引き上げる、引き下げる、或いはその状態をトグルすることが指定され得る。これらの信号は、例えば、マイクロコントローラ130とインターフェースブロック140の入力に割り込むように接続されることが出来る。
命令
CVP命令は、制御命令またはVLIW命令である。制御命令は、ゼロ−オーバーラップループ初期化またはスティント終了である。ブランチ、ジャンプまたはサブルーチンはない。VLIW命令は、セグメントに区分され、各命令セグメントは、対応する機能ユニットによって実行されるべき動作(単数または複数)を指定する。セグメントは、ベクトル部および(もしあるなら)スカラー部に対して更に部分に細分割され得る。また、セグメントは、両方の部分に対して、データ(ベクトル部に対する一つまたはそれより多くのベクトルおよびスカラー部に対する一つまたはそれより多くのスカラー)を受信するために使用されるべきネットワーク部分に関する情報を含む。
スカラー/ベクトルプロセッサの状態
CVPの状態は、その機能ユニットの組合された状態である。好適な実施の形態において、CVPは、
・ベクトルメモリ(VMUの部分)
・プログラムメモリ(IDUの部分)
・ベクトルレジスタ(全ての機能ユニット)
・プログラムカウンタを含む制御レジスタ、およびアドレスオフセットレジスタ
プログラマー可視レジスタに加えて、CVP実現は、典型的には、パイプライン化とキャシングのための追加の(ベクトル、スカラーおよび制御)レジスタを含む。これらは、CVP命令セット構成の一部ではない。
(ベクトル、スカラーおよび制御)レジスタのいくつかは、いわゆる構成レジスタ(コンフィギュレーションレジスタ)である。構成レジスタの内容は、ベクトルメモリからロードされるだけである(その値を変化する他の方法はない)。構成レジスタは、機能ユニットの構成をサポートし、典型的には、機能パラメータを定義する。これらの半一定「機能パラメータ」を構成レジスタに格納することによって、命令幅とメモリトラフィックの両方が、大きく減少される。
CVP状態のコンポーネントの概略は、以下の表に示される。
Figure 0004339245
全てのプログラマー可視レジスタは、ベクトルメモリからロードされる。構成レジスタを除く全てのレジスタは、ベクトルメモリにセーブされ得る。スティントの終わりにCVPレジスタをセーブすることによって、およびそれらを後で回復することによって、CVPは、他方であたかも他のスティントが実行されないように、特定のタスクを続ける。これらのセーブおよび回復動作は、任意であり、部分的であっても良く、明確にプログラムされなければならない。
命令レベル実行
スティントのプログラムは、IDU内のプログラムメモリに格納される。IDUは、プログラムカウンタを制御し、現在の命令を読み出し、且つ6個の機能ユニットの命令の6個のセグメントを配分する。典型的には、各クロックサイクル毎に、一つの命令が発行される。そのルールに対する唯一の例外は、複数のベクトルメモリアクセスが一つのサイクルで実現出来ない時に、VMUの停止サイクルによって引き起こされる。メモリの輻輳と関連する停止サイクルは、単一のサイクルに複数のキャッシャミスがある場合に、発生し得る。
データ依存制御はないので、IDUから他の機能ユニットへのトラフィクは、一方向である。これは、CVP命令のパイプライン化の実行を顕著に簡単化する。このパイプライン化は、可能な限りプログラマーから隠される。例えば、一つの命令のソースレジスタは、前の命令のターゲットレジスタであり得る。この唯一の可視パイプライン効果は、ベクトルパスにおける乗算のような「高価な」リソースに関連する。多くの動作は、多数のクロックサイクルの待ち時間を有する。更に、これらのサイクルの幾つかは、多数のクロックサイクルの開始インターバルを有する。(動作がn個のサイクルの開始インターバルを有する時、そのソートの二つの動作は、時間に関して(n−1)個のサイクルだけ分離されなければならない。)
好適な機能ユニットの詳細な記述
CVPの各機能ユニットは、制御、スカラーおよびベクトル部に区分され得る。これらのセクションは、5つの要素:入力、出力、状態、次の状態関数、および出力関数からなるムーア・マシンモデルに従って、モデル化される。
ムーア・マシンの状態は、利用可能なメモリおよび/またはレジスタ(単数または複数)によって決定される。各機能ユニットに対して、対応するガードを含む全ての許可された遷移の表が与えられる。ガードは、遷移の発生に対して真であることが必要な条件である。遷移は、ムーア・マシンの次の状態の関数と出力関数を定義する。実際のデータから遷移表におけるタイプを抽出出来るために、以下の規定が使用される。
・Pは、処理要素の数を示す。データサイズに依存して、Pは、P(WORDデータ要素)、P(DWORDデータ要素)またはP(QWORDデータ要素)へ評価する
・そうでないとの指定が無い限り、C−スタイルシンタックスが使用される。
・矩形括弧は、ベクトル内の要素を選択するように使用される。例えば、v[p]は、ベクトルvの要素pを指す
・複素数値xの真数部と虚数部は、夫々、Re(x)とIm(x)によって示される。
・括弧〈および〉は、複素数対を指すために使用される。例えば、〈re,im〉は、複素数re+j・imを指す
・演算子∀(「for all」)は、演算がベクトル要素の範囲に対して実行されなければならないことを示すのに用いられる。演算子は、順序を全く含まない(即ち、範囲内の全ての要素は、並列に処理され得る)。例えば、∀p:0p<P{v[p]=0}は、ベクトルvの全ての要素は、0にセットされる。範囲(例のp)を指すために使用されるダミー変数は、関数的意味を持たない
・演算子∧(「and」)は、並列に実行され得る演算を分離するために使用される。換言すれば、C−セパレータ「;」と異なり、∧演算子は、演算がシーケンシャルに実行されなければならないということを含まない。
・C:「cond?exp1:exp2」から知られる「if−then−else」演算子は、condが真で、exp2がそうで無い場合に評価される。
命令配信ユニット
図4は、命令配信ユニット(IDU400)のブロック図である。IDUは、以下の機能を含む:
・IDUは、プログラムメモリ410を含む
・IDUは、操作420を他の機能ユニットに配信する
・IDUは、スティント記述子を解釈し、マイクロコントローラ130によって発行されるカーネルの実行を制御する
後者の場合、IDUは、プログラムカウンタ430を維持し、且つ三つの入れ子レベルを含むゼロ−オーバーヘッドルーピンングをサポートする。
命令配信ユニット(IDU)は、5つの命令タイプの一つを出すことが出来る:
1.ノーマルVLIW命令(NORMAL)
2.ゼロ−オーバーヘッド−ループ初期化命令(LOOP)
3.エンドオブスティント(スティントの終了)命令(EOS)
4.サブルーチン呼出命令(CALL)
5.サブルーチンリターン命令(RETURN)
命令=(NORMAL、commands)|(IDU_cmd,paddr, count)
コマンド=(VMU_cmd,CGU_cmd,AMU_cmd,SFU_cmd,SLU_cmd,SRU_cmd)
IDU_cmd=LOOP|EOS|CALL|RETURN
paddr={0,...,65535}
count={1,...,65536}
入/出力は、
Figure 0004339245
IDUベクトル部は、CVPプログラムメモリ410を含む:
Figure 0004339245
(CVPがVMUによって停止されない場合)各サイクル毎に、CVP命令は、プログラムカウンタ(PC430)によってポイントされるプログラムメモリ位置から取り出される。この命令は、以下の5つのタイプの一つであり得る。
1.ノーマルVLIW命令:命令のコマンドフィールドに符号化されたコマンドは、その他の機能ユニットに配信される。
2.IDUループ初期化命令(LOOP):ループ制御レジスタは、命令のPADDRおよびCOUNTフィールドに従って設定される。LOOP命令に従う命令よりなり、PADDRフィールドによって指定される命令を含む)ループボディは、少なくとも一つの命令を含むべきである。1命令のループボディは、「特別ケース」として自動的に認識され、且つR.E.A.L.DSPの繰り返し命令と同様に処理されることに留意すべきである。入れ子ループは、同じエンドアドレスを有することが可能である。物理的に実施されたプログラムメモリの範囲外にあるエンドアドレスに対する動作は、定義されない。追加のアドレスビットが、プログラムメモリの将来の拡張のためにリザーブされる。ループスタートアドレスは、LOOP命令に従う第1の命令のアドレスに自動的に設定される。非動作コマンドが、全ての他の機能ユニットへ配信される
3.スティント命令のIDUエンド(EOS):現在のスティント記述子で指示される場合、一つまたはそれより多くの信号は、スティントの完了を指示するために発生される。次に、次のスティントポインタは、評価される。それがnilである場合、CVPは、アイドルモードに入り、そうでない場合、次のスティントポインタがロードされ、プログラムカウンタ(PC)の初期化後に、対応するスティントの実行が開始する。
4.サブルーチン呼出の最小形態をサポートする、IDUサブルーチン呼出命令(CALL).サブルーチン呼出メカニズムは、入れ子の3つのレベルをサポートし、且つリターンアドレスをセーブするに過ぎない。破壊されてはならないレジスタ内容のセービングは、プログラマーの責任であり、プログラマーは、どの呼出規定(呼者セーブまたは被呼者セーブ)を使用するか選択出来る。PADDRフィールドは、呼び出されるべきサブルーチンの第1の命令のアドレスを含み、従って、プログラムカウンタに直接ロードされ得る。リターンアドレススタックにセーブされたリターンアドレスは、CALL命令に続く命令のアドレスである。
5.IDUサブルーチンリターン命令(RETURN)であり、これは、プログラムカウンタを対応するCALL命令に続く命令に戻す(上記を参照)。
IDU制御部は、CVPプログラムカウンタ(PC)を含む。また、このセクションは、ゼロ−オーバーヘッドルーピングおよびサブルーチン呼出を可能とし、それらは、次の入れ子に対する3つのレベルをサポートする。
Figure 0004339245
ベクトル−メモリユニット
図5Aは、ベクトル−メモリユニット(VMU500)のブロック図を示す。VMUは、ベクトルメモリ510を含むと共にそれを制御し、巨大なデータバンド幅を他の機能ユニットに提供する。物理的ベクトルメモリ510は、単一ポートSRAMに基づくことが好ましい。Ps*W幅である埋め込みSRAMは、一般的に利用出来ないので、物理的メモリが、並列に配置される幅広のランダムアクセスメモリ(RAM)の一つまたはそれより多くのバンクによって形成される。好適な実施の形態では、ベクトルは、メモリにおいて、ベクトル境界で一列に並べられる必要はない。このように、PSワードよりなるベクトルは、任意のメモリアドレスを有することが出来る。メモリラインは、同じサイズを有するが、そのスタートアドレスは、定義によって、Psの倍数である。(ラインアドレスに対して、アドレスの最小自乗logPsは無視される)。ベクトルの任意のアラインメント(典型的には、最小ワード境界のアラインメント)を可能とすることによって、メモリは、空位置をより少なくしてより良く利用されることが出来る。以下でより詳細に述べられるように、スカラー/ベクトルプロセッサが個々のベクトルを読み出し/書き込みを可能とするための対策が採られると共に、ベクトルは、物理的メモリの二つの連続するラインに格納されることが出来る。好ましくは、スカラーデータは、ベクトルデータを格納するために使用されるのと同じメモリに格納される。このようなシステムにおいて、スカラーは、それらに対応するベクトルとインターミックスされる。コスト効率とメモリへの最適アクセス時間のためには、好ましくは、メモリは、全ベクトルラインの読み出しと書き込みを可能とすることに過ぎない。このように、論理的には、物理的メモリは、複数のラインからなり、各ラインは、ベクトルのサイズである。スカラーの読み出しと書き込みをサポートするために、追加のハードウエア(ライン内のスカラー部に対するラインキャッシュ530とサポート540)は、スカラー様式でベクトル幅の物理的メモリにアクセスするために使用される。Nr個のスカラー読み出しポートとNw個のスカラー書き込みポートが利用可能であると仮定するならば、1セットの少なくともNr+Nw個のベクトル幅レジスタが、キャッシュ530に存在する。各スカラー読出しポート毎に、キャッシュの対応するレジスタが、(ベクトル幅の)物理的メモリ510の読み出しポートに接続される。サポートハードウエア540は、レジスタからの関連するスカラーデータを選択するために、デマルチプレクサを含む。デマルチプレクサは、(例えば、32個の8ビットワードを有する256ビットベクトルを使用して、スカラーは、5個の最下位ビットによって指示される)アドレスの最下位ビットによって指定されるように、レジスタのスカラーの番号によって制御され得る。デマルチプレクサは、公知であり、更には記述しない。各スカラー書き込みポート毎に、キャッシュ530の対応するレジスタは、どのキャッシュラインが物理的メモリに書き戻されるかを選択するためにNw個の入力のベクトル幅マルチプレクサに接続される。一つのVMU命令が、書き戻されるべき多数のキャッシュラインを必要とする場合、これは、シーケンシャルに行われ、全ての書き込みが完了するまで、全ての他の機能ユニットを停止する。同じ命令ではなくて異なる書き込みポートへのアクセスは、物理的メモリにおける同じラインへのアクセスを許可されない。連続するスカラーアクセスにおける空間的場所(例えば、一つの処理ループに属する連続するスカラーは、物理的メモリ510に実質的に連続して格納される)を仮定すると、これらのレジスタにロード/格納するために物理的メモリ510へのアクセス頻度は、これらのレジスタへのスカラーのアクセス頻度よりもかなり少ない。ベクトルメモリ周りのキャッシングは、プログラマーから隠されることが好ましい。マルチポートベクトルメモリを単一ポートSRAMに匹敵させるためにキャッシュの使用にも拘らず、プログラマーは、コヒーレントベクトルメモリを想定出来る。各レジスタが物理的メモリ内に潜在的に同じデータのコピーを含むことが出来るので、コヒーレンシーは、プログラマーがガードコヒーレンシーを持たなければならない代わりに、自動的に維持されるべきである。この結果、チェックは、アドレスコンフリクトに対して実行され、即ち、ラインアドレスに対して発生するレジスタへの書き込みを有し、そこでは、同じラインは、また、他のレジスタの一つに格納される。このようなチェックに対して、各レジスタ毎に、レジスタに格納されるラインアドレス(アドレスの最上位部)を格納することで十分である。起こり得るコンフリクトが検出されると、訂正対策が取られる。例えば、同じラインを有するレジスタへの書き込み動作が発生すると、読出しレジスタは、無効であるとマークされる。(書込みレジスタが最初にメモリに書き戻された後)レジスタがメモリから再び読み出されなかったならば、そのレジスタは、更には使用されない。或いは、書込みレジスタの内容は、書込みレジスタへの書込みが発生した後、同じラインを有する全ての読出しレジスタにコピーされ得る。三つ目の可能性は、読出しおよび書込みポート間でレジスタを共有することである。この後者のアプローチは、追加のベクトル幅マルチプレクサを必要とし、コストを増加するが、性能面での利点を提供する。同じコヒーレンシーチェックと対策は、ベクトルが書込みポートに関連するレジスタへ(部分的に)格納されるベクトル読出しに対しても取られる。物理的メモリからのライン読出しやそれへのライン書込みは、物理的メモリ510への単一アクセスによって、単一クロックサイクルで実行される。
物理的メモリは、ライン境界でアクセスされるに過ぎないので、アラインメントユニットが、ベクトル送出動作のために必要である。アラインメントユニットは、二つのラインキャッシュよりなり、要求されたベクトルによってスパンされる両ラインを含む。連続のベクトルがアクセスされると、一方の新たなラインのみが、物理的メモリから取り出されなければならない。理由は、他方のラインは、これらのラインキャッシュの一方にまだ存在するからである。要求されたベクトルを形成する二つのキャッシュされたラインの部分は、マルチプレクサよりなるネットワークを組み合わされ、次に、ベクトル幅パイプラインレジスタに格納される。このパイプラインレジスタから、その値は、VMU同報バス上に送信される。
ベクトルメモリユニットは、単一VMU命令において、四つまでの「サブ動作」をサポート出来る。
1.ベクトルを送出すること、ラインを送出すること、またはVM位置からのライン/VM位置へのラインを受信すること
2.VM位置からスカラーを送出すること
3.VM位置からスカラーを受信すること
4.アドレス消費ユニットの状態/出力を変更すること
VMU_cmd=(vopc,aid_v,aine_v,sopc,aid_s,ainc_s,size,srev,aid_r,aine_r,aopc,aid_a,imm_addr)
vopc=NOP|SENDL|SENDV|RCVL_CGGU|RCVL_AMU|RCVL_SFU|RCVL_SLU|RCVL_SRU
Aid_v={0,...,7}
Ainc_v=NOP|INC
sopc=NOP|SEND
aid_s={0,...,7}
ainc_s=NOP|INC
size=WORD|DWORD|QWORD
srcv=NONE|VMU|AMU|SLU|SRU
aid_r={0,...,7}
ainc_r=NOP|INC
aopc=NOP|IMM|LDBASE|LDOFFS|LDINCR|LDBOUND
aid_a={0,...,7}
imm_addr={0.0,...,524288.31}|{−262144.0,...,262143.31}
VMU命令は、サブ演算の数とアドレスシーケンスの連続性により、可変数のクロックサイクルを取ることが出来る。
VMU入力/出力は、
Figure 0004339245
更に、外部バスに接続されるべき二つのスカラーポート(一方は、送信用、他方は、受信用)がある。CVP命令でのこれらのメモリアクセスの同期は、マイクロコントローラ130のタスクである。
VMUベクトル部は、物理的メモリ510を含む:
Figure 0004339245
ベクトルのサブ演算は、スカラーメモリにアクセス出来ないことに留意すべきである。従って、最上位アドレスビットは、ベクトルサブ演算に対して無視される。VMUのベクトル部は、命令のVOPCフィールドで符号化された7個のサブ演算:ベクトル送信(SENDV)、ライン送信(SENDL)、および5個のライン受信サブ演算(RCVL_CGU、RCVL_AMU、RCVL_SFU、RCVL_SLUおよびRCVL_SRU)をサポートする。受信のソースである機能ユニットは、対応するライン受信サブ演算において明示的に符号化される。各サブ動作に対する読出しアドレスや書込みアドレスは、対応するアドレス演算ユニットに指定される。AINC_Vフィールドは、全てのベクトルサブ演算同士間で共有される。AINC_Vフィールドは、AID_Vフィールドで符号化されたACUへパスされる。AINC_Vフィールドは、影響を及ぼされたアドレス演算ユニットがポスト増分演算を行うべきか否かを指定する。
Figure 0004339245
これらの演算は、送信(または)受信動作として割り当てられるのであって、ディスティネーション(またはソース)を含むロード(または格納)動作としてではない。後者は、他の機能ユニットにおける演算によって指定される。ライン送信は、同じアドレスを有するベクトル送信と機能的に等価である。ライン送信サブ演算は、典型的には、機能ユニットを構成するため或いは種々のレジスタにおけるタスクの状態を復元するために使用される。ライン送信のために特別のモードを導入することによって、連続するベクトル送信(「ベクトルストリーミング2」)のアクセス時間が、キャッシュの効率使用によって最適化され得る。
VMUのスカラーサブ演算は、命令のSOPCフィールドに符号化される。このVMUは、唯一のサブ演算:スカラー送信(SEND)をサポートする。読出しアドレスは、AID_Sフィールドにおいて指定されたアドレス演算ユニットによって指定される。命令のAINC_Sフィールドは、このアドレス演算ユニットがポスト増分演算を実行すべきか否かを指定する。スカラーサブ演算のオペランドサイズ(WORD、DWORD、またはQWORD)は、命令のSIZEフィールドによって決定される。
Figure 0004339245
VMUのスカラー受信サブ演算は、命令のSRCVフィールドに符号化される。その値が、NONEであるならば、スカラー受信は、実行されない。そうで無い場合、命令のSRCVフィールドは、どの機能ユニットがスカラー受信のためのソースとして使用されるかを決定する。書込みアドレスは、AID_Rフィールドにおいて指定されたアドレス演算ユニットによって指定される。命令のAINC_Rは、このアドレス演算ユニットが、ポスト増分演算を実行すべきか否かを指定する。スカラー受信サブ演算のオペランドサイズ(WORD、DWORD、またはQWORD)は、ソーススカラーのサイズによって決定される。
Figure 0004339245
送信と受信のサブ演算は、一つのVM位置から他のVM位置へのスカラー移動演算に組合され得る。各アクセス毎のアドレスは、対応するアドレス演算ユニットによって指定される。
VMU制御部550は、主に、一セットのアドレス演算ユニット(ACL)または従来のDSPにおけるのと同様のアドレス指定モードをサポートするアドレス発生ユニット(AGU)である。このようなユニットは、プロセッサの主データパスを使用することなく、命令に対して一つまたはそれより多くのアドレス演算を実行する。これによって、データに対する算術演算と並行にアドレス演算が起こり得る。サポートされるセットのアドレス指定モードに依存して、このようなACUは、例えば、多数のレジスタへのアクセスを必要とする。
関連アドレス指定、即ち、所謂ベースアドレスに関連するアドレス指定は、ベースレジスタ「base」を必要とする。
・ベースアドレスに関するオフセットは、オフセットレジスタ「offs」に格納される。
増分レジスタ「incr」に格納された値だけオフセットをプレ/ポスト増分する。
・境界レジスタ「bound」に格納されたアドレスに関してモジュロアドレス指定する。
このセットのアドレス指定モードの場合、以下がサポートされる。オフセットレジスタ「offs」を想定する。アドレス「base+pffs」で各メモリアクセス(読出しまたは書き込み)の後に、レジスタ「offs」がoffs:=(offs+incr)モジュロboundに従って更新される。従って、「offs」は、(各アクセス後毎に)しばしば変化するが、「base」、「incr」、および「bound」に格納された値は、めったに変化しない。典型的には、これら3個の後者のレジスタは、プログラムループに先立って、初期化される。残余の部分では、レジスタは、ACUの部分であると仮定される。レジスタの初期化は、「ACUの構成」として記述される。スカラー/ベクトルプロセッサは、複数のACUを含むことが好ましい。好適な実施の形態においては、スカラー/ベクトルプロセッサは、8個のACUを含む。個々のACUの構成のためには、1個のACU当り2〜3クロックサイクル掛かる。このように、ACUの構成に必要な時間は、アムダール法則のますます多くのハードルにかかると、障害となる。このような構成遅延を克服するために、好適な実施の形態において、1個のACUに関連する少なくとも2個のレジスタが単一演算で構成され得る。これは、これらのACUレジスタの全てを単一のベクトルにマッピングし且つベクトルメモリからACUメモリへの専用のロードおよび格納命令を使用することによって実現され得る。ACUの関連するレジスタの全てのセットは、好ましくは一クロックサイクルの単一演算において構成されるのが好ましい。メモリ幅が許すならば、1個より多くのACUが、以下でより詳細に記述されるように、1回の演算で構成できるので有利である。
ベクトルメモリが2本のラインを備えていると仮定すれば、スカラーまたはベクトルアドレスは、L+log4Pビット必要である。例えば、P=8およびL=12とすると、これは、17ビットを意味する。過剰に長い命令を回避し且つ可能な限りアドレス演算に関する個別の命令を回避するために、VMUの制御部は、上述のように、多数のアドレス演算ユニットを保持する。各アドレス演算ユニット(ACU)は、多数のアドレスレジスタと、関連する増分演算を含む。これらのACU520は、とりわけ、サーキュラーバッファをサポートすることを意図する。VMU制御部は、8個のACUを含み、各ACUは、VMUサブ演算のいずれかにフレキシブルに割当てられ得る。制限は、各ACUは、ACUサブ演算、即ち、AID_V≠AID_S≠AID_Rを除いて、VMUサブ演算の一つに対して使用されるに過ぎないことである。
VMU制御部は、VMU命令のAOPCフィールドに符号化された一つのサブ演算をサポートする。VMU制御部は、一つのサブ演算がACUの出力を中間アドレス値(IMM)にセットすることおよび4つのサブ演算が中間アドレス値をACUレジスタ(LDBASE、LDOFFS、LDINCR、およびLDBOUND)の一つにロードすることをサポートする。対応する中間アドレスは、IMM_ADDRフィールドで符号化される。AID_Aフィールドは、AOPCサブ演算によってどのACUが影響を及ぼされるかを指定し、VMU命令のAOPCフィールドとIMM_ADDRフィールドは、直接この特定のACUにパスされ、且つ全ての他のACUのAOPCフィールドは、非演算(NOP)へセットされる。
各ACUは、4個のアドレスレジスタからなることが好ましい:
Figure 0004339245
好適なアドレス範囲とタイプ(符号付/符号無し)は、この表で指定される。この構成において、4個のACUレジスタは、4*24=96ビットを必要とする。先に述べたように、ベクトルは256ビット幅であることが好ましい。このような場合、複数のACUのレジスタを一つのベクトルにマッピングすることによって、ACU構成スピードを更に一層増加することが好ましい。この例では、2セットのACUレジスタが一つのレジスタにマッピングされる。これはまた、図5Bに例示されている。ベクトルは、参照番号580によって指定され、クワォドワード境界が示される。2セットのACUレジスタ590と595もまた示され、それらの各々は、異なるACUに対応する。この例では、ACUレジスタは、24ビットであり、従ってベクトルの標準データサイズの一つとは対応しない。ベクトルメモリを介して容易に個々のACUレジスタにアクセス出来るために、ACUレジスタをメモリにロード/格納するための特別の命令は、個々のACUレジスタがワード境界(本例では、24ビットレジスタがクワォドワード境界に並べられる)に並べられることを保障する。当業者は、ACUレジスタサイズとベクトルサイズに依存して、最適なマッピングを定義出来る。例えば、16個のビットACUレジスタと256ビットベクトルを使用することによって、4セットのACUレジスタを一個のベクトルにマッピングすることが可能となる。命令において、格納/ロードされるべきACUの数が指定される必要がある。分離されたまたは組合された命令は、単一のACUまたは1群のACUのレジスタセットをロードするために使用されることが出来る。
アドレス演算ユニット(ACU)は、単一のACU演算中二つの「サブ演算」をサポートする:
1.ポスト命令サブ演算
2.中間アドレス操作サブ演算
ACU_cmd=(ainc,aopc,imm_addr)
ainc=NOP|INC
aopc=NOP|IMM|LDBASE|LDOFFS|LDINCR|LDBOUND
imm_addr={0.0,...,524288.31}|{−262144.0,...,262143.31}
ポスト増分サブ演算は、命令のAINCフィールドに符号化される。このサブ演算は、唯一つのサブ演算:ポスト増分(InC)をサポートする。このサブ演算は、過剰な明示的アドレス演算命令を回避するために使用される。
Figure 0004339245
中間アドレス操作サブ演算は、命令のAOPCフィールドに符号化される。このサブ演算は、中間アドレス(IMM)を出力するために一つのサブ演算をサポートすると共に中間アドレスをACUレジスタ(LDBASE、LDOFFS、LDINCER、およびLDBOUND)にロードするために4つのサブ演算をサポートする。中間アドレスは、命令のIMM_ADDRフィールドで符号化される。
Figure 0004339245
ACU入力/出力は:
Figure 0004339245
コード発生ユニット
図6は、CGU(コード発生ユニット600)のブロック図である。CGUのタスクは、PDまたはPS長のベクトルにフォーマット化された複素記号のコードシーケンスを発生することである。好適な実施の形態において、このコードシーケンスは、(W−)CDMAのために必要な調整が施され、スクランブル化コードとチャネル化コードの二つのシーケンスの積として構成され得る。このようなアプリケーションのために、CGUは、スクランブル化コード発生器(SCG610)とチャネル化コード発生器(CCG620)を備える。スクランブル化コードは、構成可能発生器によって発生される。チャネル化コード発生器は、ルックアップテーブルで置き換えられても良い。このテーブルは、ベクトルメモリ内に常駐してもよい。CGUは、UMTS−FDDダウンリンクコードをサポートするのみのように、唯限られた機能性を有しても良い。このコード発生ユニット(CGU)は、次の二つのサブ演算をサポートする:
1.スクランブル化コード発生器サブ演算
2.チャネル化コード発生器サブ演算
CGU_cmd=(scram_opc,scram_reg,chan_opc,chan_reg,chan_config)
scram_opc=OFF|NOP|LOAD_CONFIF|LOAD_STATE|SAVE_STATE|LOAD_REGS_X|LOAD_REGS_Y|SAVE_REGS_X|SAVE_REGS_Y|STEP_1|STEP_P_D|STEP_1_X|STEP_P_D_X
scram_reg={cgus0,cgus1}
chan_opc=OFF|NOP|CONFIF|LOAD_STATE|SAVE_STATE|STEP_1|STEP_P_D
chan_reg={cguc0,cguc1}
chan_config=0,..,2log(SFMAX)−1
入力/出力は:
Figure 0004339245
CGUベクトル部は、以下のレジスタ(ファイル)を含む:
Figure 0004339245
CGU命令のSCRAM_OPCフィールドは、以下のSCGベクトルサブ演算の一つを指定する。
・スクランブル化コード発生器をオフにする(CGUS_OFF)
・非演算(CGUS_NOP)
・vmu(CGUS_LOAD_CONFIG)から構成ベクトルをロードする
・構成ベクトル(CGUS_CONFIG)でLFSR XとLFSR Yを構成する
・SCRAM_RGEフィールド(CGUS_LOAD_STATE)で指定された内部レジスタからLFSR XとLFSR Y状態をロードする
・SCRAM_RGEフィールド(CGUS_SAVE_STATE)で指定された内部レジスタにLFSR XとLFSR Y状態をセーブする
・VMU(CGUS_LOAD_REGS_X)から全LFSR X内部レジスタファイルをロードする
・VMU(CGUS_LOAD_REGS_Y)から全LFSR Y内部レジスタファイルをロードする
・VMU(CGUS_SAVE_REGS_X)に全LFSR X内部レジスタファイルをセーブする
・VMU(CGUS_SAVE_REGS_Y)に全LFSR Y内部レジスタファイルをセーブする
・LFSR XとLFSR Yを単一ステップ(CGUS_STEP_1)だけ進める
・LFSR XとLFSR YをP個ステップ(CGUS_STEP_P_D)だけ進める
・LFSR Xを単一ステップ(CGUS_STEP_1_X)だけ進める
・LFSR XをP個のステップ(CGUS_STEP_P_D_X)だけ進める。
CGU命令のCHAN_OPCフィールドは、以下のCCGベクトルサブ演算の一つを指定する:
・チャネル化コード発生器をオフにする(CGUC_OFF)
・非演算(CGUC_NOP)
・CHAN_CONFIGフィールド(CGUC_CONFIG)で指定されたコード番号でチャネル化コード発生器を構成する
・CHAN_REGフィールド(CGUC_LOAD_STATE)で指定された内部レジスタからOVSF状態をロードする
・CHAN_REGフィールド(CGUC_SAVE_STATE)で指定された内部レジスタにOVSF状態をセーブする
・OVSFカウンタを単一ステップ(CGUC_STEP_1)だけ進める
・OVSFカウンタをP個のステップ(CGUS_STEP_P_D)だけ進める。
ALU−MACユニット
図7は、ALU−MACユニット(AMU)のブロック図を示す。このAMUは、AMUが実際の信号演算を含んでおり、且つその他のユニットは、それへオペランドと結果をベクトルフォーマットの形態で転送するだけであるという意味でマシンの心臓部である。また、このAMUは、比較的大きなベクトルレジスタファイル(好ましくは、16個のベクトルレジスタ)を含んでいる。アキュムレータベクトルは、二つの(正規)ベクトルレジスタ+拡張精度ビットを含む所謂拡張ベクトルを必要とする。従って、拡張レジスタファイルと共に、AMUレジスタファイルは、8個のアキュムレータベクトルレジスタをサポートすることが好ましい。好適な実施の形態において、AMUベクトル部は、5個の独立した内部処理ユニットを含む。
・算術と論理タイプのインターベクトル(ベクトル間)演算を処理するALUユニット710:加算(ADD)、減算(SUB)、ビット毎のAND(AND),ビット毎のOR(OR)、ビット毎の排他的OR(XOR)、およびハミング距離計算。
・乗算と乗算累算タイプのインターベクトル演算を処理するMACユニット720:絶対値(MAGN)、乗算(MUL)、および乗算−累算(MAC)
・(相関)イントラ加算ベクトル演算を処理する(C)I−ADDユニット730:イントラ加算(IADD)、ダブル精度結果を有するイントラ加算(IADDD)、およびイントラ加算が続くイントラ加算相関(CIA)
・イントラベクトル最大とイントラベクトル最小演算を処理するI−MAX/MINユニット740:イントラ最大(IMAX)およびイントラ最小(IMIN)および
・整数演算をフレキシブル固定点サポートに提供するために使用されるスケーリングユニット。
アプリケーションによっては、これらのサブユニットの幾つかは必要ないことがあることが理解されるべきである。同様に、他のサブユニットが追加されてもよい。例えば、外部のトランシーバアルゴリズムに対するサポートが追加されると、AMUは、2個の追加の処理ユニットを含むことが好ましい:
・ビタビ加算−比較−選択演算を処理するacsユニット(acs)
・ターボ符号化に必要なαβ∧演算(abl)を処理するablユニット。
どの処理ユニットが使用されるべきかは、AMU命令で明示的に符号化されないが、vopcフィールドから黙示的に引き出される。このことは、引き続くベクトル命令が異なる処理ユニットへ発行される限り、開始間隔は、性能を拘束しない。
ALU−MACユニット(AMU)は、単一AMU演算中4回までの「サブ演算」をサポートする:
1.タイプALU(算術および論理)、MAC(乗算−累算)、(C)I−ADD((相関)イントラ加算)、またはI−MAX/MIN(イントラ最大またはイントラ最小)のベクトル演算を実行する
2.AMUベクトルレジスタファイルへのベクトル値を受信する
3.AMUベクトルレジスタファイルへの第2のベクトル値を受信する
4.AMU同報レジスタ(BCST)へのスカラー値を受信する
AMU_cmd=(vopc,type,src1,src2,src34x,rcv1,dst1,rev2,dst2,src)
vope=NOP|SND|ADD|SUB|ABS|NEG|MAX|MIN|CONJ|MAGN|LADD|DIADD|IMAX|IMIN|CIA|AND|OR|XOR|MUL|MAX|SGNX
type=cvp_int|cvp_dint|cvp_cint|cvp_qint|cvp_cdit
srel={amu0,...,amu15}
src2={amu0,...,amu15}|{best}
src34x=src3∈{amu0,...,amu15}|acc∈{acc0,...,acc7}|1seg∈{1,2,3,...,2logPs}
rcv1=NONE|VMU|CGU|AMU|SFU|SLU|SRU
dst1={amu0,...,amu15}
rev2=NONE|VMU|CGU|AMU|SFU|SLU|SRU
dst2={amu0,...,amu15};dst2≠dst1
srcv=NONE|VMU|SLU|SRU
入力/出力は:
Figure 0004339245
AMUベクトル部は、以下のレジスタファイルを含む:
Figure 0004339245
各アキュムレータレジスタは、図8に示されるように、2個のAMUレジスタ810、820+1個の拡張レジスタ830を必要とする。例えば、レジスタACC3は、レジスタAMU6、AMU7およびEXT3を占有する。拡張レジスタファイルは、アキュムレータ値の拡張精度部分を格納するために使用されるに過ぎないことに留意すべきである。従って、拡張レジスタファイルは、それ自身によってアクセスされることが出来ないし、従って、プログラマーには見えない。
ベクトルサブ演算は、AMU命令のVOPCフィールドに符号化される。
このベクトルサブ演算は、4種類のサブ演算をサポートする。
1.算術および論理タイプのインターベクトル演算:レジスタ値の送信(SND)、加算(ADD)、減算(SUB)、絶対値(ABS)、否定(NEG)、最大(MAX)、最小(MIN)、ビット毎のAND(AND)、ビット毎のOR(OR),ビット毎の排他的OR(XOR)、および符号拡張(SGNX)
2.乗算および乗算累算タイプのインターベクトル演算:大きさ(MAGN)、乗算(MUL)、および乗算−累算(MAC)
3.(相関)イントラ加算ベクトル演算:イントラ加算(IADD)、ダブル精度結果を有するイントラ加算(DIADD)、およびイントラ加算が続くイントラ加算相関(CIA)
4.イントラ最大(IMAX)、およびイントラ最小(IMIN)演算。
使用されるべきデータタイプは、AMU命令のTYPEフィールドに符号化される。SRC1とSRC2フィールドは、夫々、ベクトルサブ演算のソース1およびソース2としてどのレジスタが使用されるべきか示す。SRC2データは、正規レジスタファイルRFAMUの代わりに、スカラー同報レジスタRCSTから来ることに留意すべきである。この場合、同じスカラー値は、各処理エレメントへ送信される。同様に、SRC34xフィールドは、3個のベクトルソースを必要とするサブ演算のための(SRC3として示される)ソース3としてどのレジスタが使用されるべきかを示す。乗算(−累算)サブ演算の場合、SRC34xフィールドは、(ソースとしてとディスティネーションとしての両方で)(ACCとして示される)どのアキュムレータレジスタが使用されるべきかを示す。イントラベクトル演算(IADD、DIADD、IMAX、IMIN、およびCIA)の場合、SRC34xフィールドは、底が2の対数のセグメントサイズ:log(SEG)を含む。最少セグメントサイズは、2(SRC34X=1)。上限は、データサイズ:WORDサイズのオペランドに対してはP、DWORDサイズのオペランドに対してはP(LSEG=4)、およびQWORDサイズのオペランドに対してはP(LSEG=3)に依存する。
Figure 0004339245
イントラベクトル演算の結果は、疎ベクトルであり、そこでは、各セグメントの位置0のみが計算される。ターゲットレジスタのその他の一は、0に設定される。右シフトユニットに関連して、シャッフルユニットは、疎ベクトルの内容を再順序付けするために使用されることが出来る。
Figure 0004339245
大部分のベクトル演算は、以下に示される例外を除いて、全てのデータタイプをサポートする。
・CONJ、MAGN:複素データタイプをサポートするに過ぎない。
・ABS、MAX、MIN、IMAX、IMIN:複素データタイプをサポートしない。
・DIADD&SGNX:クワォドワードサイズのデータタイプをサポートしない。
・CIA:複素単一精度整数タイプをサポートするに過ぎない。
・AND、OR、XOR:非複素整数をサポートするに過ぎない。
・NOP&SND:タイプは無視される。
ベクトルサブ演算に加えて、AMUベクトル部は、任意の機能ユニットから、ローカルレジスタファイル(RFAMU)への二つのベクトル値を受信出来る。受信サブ演算は、RCV1とRCV2フィールドに符号化され、且つ対応するRFAMUディスティネーションレジスタは、DST1とDST2フィールドに夫々符号化される。
Figure 0004339245
AMUスカラー部は、以下のレジスタを含む。
Figure 0004339245
AMUスカラー部は、VMU、SLUまたはSRUからの、同報レジスタ(BCST)へのスカラー値を受信する。対応する受信サブ演算は、SRCVフィールドに符号化される。
Figure 0004339245
全ベクトルを通して複製されたBCSTレジスタの内容は、(正規のAMUレジスタの代わりに)ベクトル演算に対する代わりのSRC2として使用される。
Figure 0004339245
AMU制御部は、1個のレジスタを含む:
Figure 0004339245
シャッフルユニット
図9は、シャッフルユニット900のブロック図を示す。ベクトルシャッフル関数の基本的アイデアは、各(ベクトル)ターゲット要素910毎に、一つの(ベクトル)ソース要素920を指定することである。ソース要素は、専用の構成レジスタ930に指定される。シャッフルは、単一ワード細分性(これはまた、全ての可能なダブルワードとクワァドワードシャッフルパターンを包含することに留意すべきである)で指定される。フルシャッフルは、CMOSクロスバー940によって実施されることが出来る。このコストは、ターゲットの数とソースの数の積に略比例する。4Pワードの実現されたバンド幅は、多くの場合必要ない。従って、好適な実施の形態において、ハーフシャッフルのみがサポートされる。
シャッフルユニット(SFU)は、二つまでの同時発生サブ演算をサポートする。
1.構成またはハーフシャッフルベクトル演算
2.ベクトル受信
SFU_cmd=(vopc,cfg,rcv)
vopc=NOP|CONF|ODD|EVEN|DUPL0|DUPL1
cfg={sfuc0,...,sfuc1}
rev=NONE|VMU|CGU|AMU|SFU|SLU|SRU
入力/出力は:
Figure 0004339245
SFUベクトル部は、以下のレジスタファイルを含む:
Figure 0004339245
注:黙示のシャッフルターゲットレジスタもあるが、これは、プログラマーによって直接的にはアクセス出来ない。種々のタイプのシャッフル演算の結果として自動的に書き込まれる。
SFUは、SFU命令のVOPCフィールドで指定される2種類のベクトルサブ演算をサポートする。
1.シャッフルパターンをRFCFG(CONF)に受信する
2.RFCFGからのパターンに従ってレジスタSFUのベクトルをシャッフルし、その結果を(黙示の)シャッフルターゲットレジスタの影響を及ぼされる部分に格納する。奇数ターゲット要素(ODD)、偶数ターゲット要素(EVEN)をシャッフルすること、或いはソース要素を奇数および偶数ターゲット要素に複製すること(DUPL0およびDUPL1)が可能である。
中間結果が、(黙示の)シャッフルターゲットレジスタに格納されるので、フルシャッフルは、ODDとEVENサブ演算を逐次実行することによって、実行され得る。構成サブ演算(VOPC=CONF)の場合、命令のCFGフィールドは、どの構成レジスタがロードされるべきかを指定する。そうでない場合、それは、どの構成レジスタがシャッフルパターンとして使用されるかを指定する。
Figure 0004339245
ベクトル演算に加えて、SFUは、(ローカルSFUレジスタへの)ベクトル受信演算をサポートし、命令のRCVフィールドに符号化される。ベクトルサブ演算CONFとベクトル受信サブ演算と組み合わせることによって、(VMUから)シャッフルパターンを受信出来ると同時に(任意の他の機能ユニットから)新たなシャッフルソースを受信することが出来る。
Figure 0004339245
注:シフト演算との組合せで、シャッフル演算は、イントラベクトルALU演算の結果として疎ベクトル要素を効率的に再順序付けするために使用されることが出来る。
左シフトユニット
図10は、左シフトユニット(SLU1000)のブロック図を示す。SLUは、スカラーステップによって、即ち、3つのスカラーサイズ(WORD、DWORDまたはQWORD)によって左にシフトされることが出来る二つのベクトルレジスタを保持する。右手側は、0またはローカルスカラー受信レジスタのスカラー値が添えられる。ベクトルは、何れかの機能ユニットから受信またはそれに送信されることが出来る。左シフトユニット(SLU)は、3個までの同時発生サブ演算をサポートする。
1.ベクトル左シフトまたは送信演算
2.ベクトル受信演算
3.スカラー受信演算
SLU−cmd=(vopc,src,size, recv, dst, srcv)
vopc=NOP|SND|SHIFT0|SHIFTS
src={slu0,slu1}
size=WORD|DWORD|QWORD
rcv=NONE|VMU|CGU|AMU|SFU|SLU|SRU
dst={slu0,slu1}
srcv=NONE|VMU|AMU|SLU|SRU
入力/出力は:
Figure 0004339245
左シフトユニット(SLU)のベクトル部は、二つの汎用目的ベクトルレジスタ1010を含む:
Figure 0004339245
命令のVOPCフィールドに符号化されたSLUによってサポートされるベクトル演算は:
・no−op、即ち、現在のベクトルを移動しない(NOP)、
・選択されたソースレジスタの内容を送信、同報する(SND)、
・左にシフトし、0を追加する(SHIFT0)、
・左にシフトし、スカラー受信レジスタからスカラーを追加する(SHIFTS)。
命令のSRCフィールドは、どのSLUレジスタがシフトされるかを決定する。SHIF0演算の場合、命令のSIZEフィールドは、スカラーステップのサイズを決定する。SHIFTS演算の場合、スカラーステップサイズは、スカラー受信レジスタSSLUにおけるスカラーによって決定され、(従って、SIZEフィールドは、無視される)。
Figure 0004339245
ベクトル演算に加えて、SLUは、また、(ローカルSLUレジスタ1010の一つへの)ベクトル受信演算をサポートし、命令のRCVフィールドに符号化される。DSTフィールドは、受信されたベクトルが、どのローカルレジスタに書き込まれるかを指定する。
Figure 0004339245
左シフトユニット(SLU)のスカラー部は、スカラーレジスタ1020を含む:
Figure 0004339245
SLUからシフトされたスカラーは、S_SENDポートを介して全ての機能ユニットへ送信される。更に、SLUは、(スカラー受信レジスタSSLU1020への)スカラー受信演算をサポートし、命令のSRCVフィールドに符号化される。SSLUレジスタのスカラー値は、次のSHIFTSベクトルサブ演算中に右からベクトルにシフトされることが出来る。
Figure 0004339245
右シフトユニット
図11は、右シフトユニット(SRU1100)のブロック図である。SRUは、AMU上のイントラベクトル演算からの疎の結果を併合するために使用される特別の受信モード(IAMU)を除いて、SLUと類似する。右シフトユニット(SRU)は、3つまでの同時発生サブ演算をサポートする。
・ベクトル右シフトまたは送信演算
・ベクトル受信演算
・スカラー受信演算
SRU_cmd=(vopc,src,size,rev,dst,srcv)
vopc=NOP|SND|SHIFT0|SHIFTS
src={sru0,sru1}
size=WORD|DWORD|QWORD
rcv=NONE|VMU|CGU|AMU|IAMU|SFU|SLU|SRU
dst={sru0,sru1}
srcv=NONE|VMU|AMU|SLU|SRU
入力/出力は:
Figure 0004339245
Figure 0004339245
右シフトユニット(SRU)のベクトル部は、二つの汎用目的ベクトルレジスタ1110を含む:
Figure 0004339245
命令のVOPCフィールドに符号化された、SRUによってサポートされるベクトル演算は:
・no−op、即ち、現在のベクトルを移動しない(NOP)、
・選択されたソースレジスタの内容を送信、同報する(SND)、
・右にシフトし、0を追加する(SHIFT0)、
・右にシフトし、スカラー受信レジスタからスカラーを追加する(SHIFTS)。
命令のSRCフィールドは、どのSRUレジスタがシフトされるかを決定する。SHIFT0演算の場合、命令のSIZEフィールドは、スカラーステップのサイズを決定する。SHIFTS演算の場合、スカラーステップサイズは、スカラー受信レジスタSSRUのスカラーによって決定され、(従って、SIZEフィールドは、無視される)。
Figure 0004339245
ベクトル演算に加えて、SRUは、(ローカルSRUレジスタの一つへの)ベクトル受信演算をサポートし、命令のRCVフィールドに符号化される。DSTフィールドは、受信されたベクトルが、どのローカルレジスタへ書き込まれるかを指定する。
Figure 0004339245
左シフトユニット(SRU)のスカラー部は、スカラー受信レジスタ1120を含む:
Figure 0004339245
SRUからシフトされたスカラーは、S_SNDポートを介して全ての機能ユニットに送信される。更に、SRUは、(スカラー受信レジスタSSRU1120への)スカラー受信演算をサポートし、命令のSRCVフィールドに符号化される。SSRUレジスタのスカラー値は、次のSHIFTSベクトルサブ演算中に左からベクトルにシフトされることが出来る。
Figure 0004339245
上述の実施の形態は、本発明を制限するのではなくて例示するものであり、当業者は、添付の請求項の範囲を逸脱することなく多くの代替の実施の形態を設計出来ることに留意すべきである。請求項において、括弧の間に配される参照符号は、請求項を制限するものとして構成されない。用語「comprising(備える、よりなる)」および「including(含む)」は、請求項にリストアップされた要素やステップ以外の存在を排除しない。
本発明に従うスカラー/ベクトルプロセッサが使用可能な好適な構成を示す図。 本発明に従うスカラー/ベクトルプロセッサ主構造を示す図。 サポートされたデータ幅とデータタイプを示す図。 命令分配ユニットのブロック図。 ベクトルメモリユニットのブロック図。 1個のベクトルレジスタに対するACUレジスタのマッピングセットを示す図。 コード発生ユニットのブロック図。 ALU−MACユニットのブロック図。 アキュムレータレジスタの構造を示す図。 シャッフルユニットのブロック図。 シフト左ユニットのブロック図。 シフト右ユニットのブロック図。

Claims (12)

  1. 複数の機能ユニットを含むスカラー/ベクトルプロセッサであって、前記機能ユニットの少なくとも一つは、少なくとも一つのベクトルに対して動作するベクトル部と少なくとも一つのスカラーに対して動作するスカラー部とを含み、前記機能ユニットの前記ベクトル部と前記スカラー部は、前記ベクトル部によって要求および/または供給される少なくとも一つのスカラーを提供および/または消費する前記スカラー部により協働動作し、
    前記少なくとも一つの機能ユニットは、スカラーを受信するスカラー受信レジスタと、ベクトルを受信するベクトル受信レジスタと、前記スカラー受信レジスタ内のスカラーに対して動作するとともに、前記ベクトル受信レジスタ内のベクトルに対して動作する共有処理部と、を有し、
    前記スカラー部は、スカラーを提供および/または消費することにより、前記ベクトル部の動作をサポートするスカラー/ベクトルプロセッサ。
  2. 複数の前記機能ユニットは、夫々ベクトル部を含み、前記ベクトル部は、第1のパイプラインに配置される、請求項1に記載のスカラー/ベクトルプロセッサ。
  3. 複数の前記機能ユニットは、夫々スカラー部を含み、前記スカラー部は、第2のパイプラインに配置される、請求項1に記載のスカラー/ベクトルプロセッサ。
  4. 前記第1と第2のパイプラインは、互いに独立して構成可能である、請求項2および3に記載のスカラー/ベクトルプロセッサ。
  5. 前記パイプラインの少なくとも一方は、プロセッサ命令毎に構成可能である、請求項2、3または4に記載のスカラー/ベクトルプロセッサ。
  6. 前記スカラー/ベクトルプロセッサは、各機能ユニットに対する個別の命令セグメントを含むVLIW命令によって制御される、請求項1に記載のスカラー/ベクトルプロセッサ。
  7. ベクトル部とスカラー部の両方を有する機能ユニットに対する命令セグメントは、そのベクトル部に対するおよびその機能ユニットのスカラー部に対する夫々の命令を含む、請求項6に記載のスカラー/ベクトルプロセッサ。
  8. 前記VLIW命令は、前記第1および/または第2のパイプラインの構成を含む、請求項5および6に記載のスカラー/ベクトルプロセッサ。
  9. 前記第1のパイプラインは、前記第1のパイプラインに取り付けられた各ベクトル部毎に、ベクトルを転送するための各関連するパイプラインパスを含む、および/または前記第2のパイプラインは、前記第2のパイプラインに取り付けられた各スカラー部毎に、スカラーを転送するための各関連するパイプラインパスを含む、請求項7および8に記載のスカラー/ベクトルプロセッサ。
  10. 機能ユニットのベクトル部に対する命令は、ベクトルの転送のために機能ユニットの内の異なる機能ユニットと関連するパイプラインパスを指定することおよび/または機能ユニットのスカラー部に対する命令は、スカラーの転送のために機能ユニットの内の異なる機能ユニットと関連するパイプラインパスを指定する、請求項8および9に記載のスカラー/ベクトルプロセッサ。
  11. 前記機能ユニットの内の少なくとも一つは、シフトユニットであり、前記シフトユニットのベクトル部は、ベクトルを少なくとも一つスカラーを越えるようにシフトするように動作し、且つ前記シフトユニットのスカラー部は、前記ベクトル中へまたはベクトルからシフトされている少なくとも一つのスカラーを前記ベクトル部へ供給しおよび/またはそれから受信するように動作する、請求項1に記載のスカラー/ベクトルプロセッサ。
  12. スカラープロセッサおよび請求項1に記載のスカラー/ベクトルプロセッサを含む処理システムであって、前記スカラー/ベクトルプロセッサは、前記スカラープロセッサに対するコプロセッサとして配置され、前記スカラープロセッサは、前記スカラー/ベクトルプロセッサを制御するように配置され、前記スカラー/ベクトルプロセッサのスカラー部は、ループ内スカラー処理を実行するように配置され、且つスカラープロセッサは、不定期のループ外スカラー処理を実行するように配置される、処理プロセッサ。
JP2004507989A 2002-05-24 2003-05-22 スカラー/ベクトルプロセッサ Expired - Fee Related JP4339245B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP02077034 2002-05-24
PCT/IB2003/002213 WO2003100602A2 (en) 2002-05-24 2003-05-22 A scalar/vector processor

Publications (2)

Publication Number Publication Date
JP2005527038A JP2005527038A (ja) 2005-09-08
JP4339245B2 true JP4339245B2 (ja) 2009-10-07

Family

ID=29558360

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004507989A Expired - Fee Related JP4339245B2 (ja) 2002-05-24 2003-05-22 スカラー/ベクトルプロセッサ

Country Status (7)

Country Link
US (1) US8510534B2 (ja)
EP (1) EP1512100A2 (ja)
JP (1) JP4339245B2 (ja)
CN (1) CN100541425C (ja)
AU (1) AU2003228069A1 (ja)
TW (1) TWI289789B (ja)
WO (1) WO2003100602A2 (ja)

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2409064B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd A data processing apparatus and method for performing in parallel a data processing operation on data elements
US7676647B2 (en) * 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
US20080079712A1 (en) 2006-09-28 2008-04-03 Eric Oliver Mejdrich Dual Independent and Shared Resource Vector Execution Units With Shared Register File
US8423979B2 (en) * 2006-10-12 2013-04-16 International Business Machines Corporation Code generation for complex arithmetic reduction for architectures lacking cross data-path support
US20080141013A1 (en) * 2006-10-25 2008-06-12 On Demand Microelectronics Digital processor with control means for the execution of nested loops
US8169439B2 (en) * 2007-10-23 2012-05-01 International Business Machines Corporation Scalar precision float implementation on the “W” lane of vector unit
US20090150648A1 (en) * 2007-12-06 2009-06-11 Eric Oliver Mejdrich Vector Permute and Vector Register File Write Mask Instruction Variant State Extension for RISC Length Vector Instructions
EP2300911A1 (en) * 2008-05-30 2011-03-30 Nxp B.V. Method for vector processing
US8583904B2 (en) 2008-08-15 2013-11-12 Apple Inc. Processing vectors using wrapping negation instructions in the macroscalar architecture
US8549265B2 (en) 2008-08-15 2013-10-01 Apple Inc. Processing vectors using wrapping shift instructions in the macroscalar architecture
US20110035568A1 (en) * 2008-08-15 2011-02-10 Apple Inc. Select first and select last instructions for processing vectors
US8539205B2 (en) 2008-08-15 2013-09-17 Apple Inc. Processing vectors using wrapping multiply and divide instructions in the macroscalar architecture
US9342304B2 (en) 2008-08-15 2016-05-17 Apple Inc. Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture
US9335997B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture
US8555037B2 (en) 2008-08-15 2013-10-08 Apple Inc. Processing vectors using wrapping minima and maxima instructions in the macroscalar architecture
US8560815B2 (en) 2008-08-15 2013-10-15 Apple Inc. Processing vectors using wrapping boolean instructions in the macroscalar architecture
US20120239910A1 (en) * 2008-08-15 2012-09-20 Apple Inc. Conditional extract instruction for processing vectors
US20110283092A1 (en) * 2008-08-15 2011-11-17 Apple Inc. Getfirst and assignlast instructions for processing vectors
US9335980B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using wrapping propagate instructions in the macroscalar architecture
US8527742B2 (en) 2008-08-15 2013-09-03 Apple Inc. Processing vectors using wrapping add and subtract instructions in the macroscalar architecture
GB2470782B (en) * 2009-06-05 2014-10-22 Advanced Risc Mach Ltd A data processing apparatus and method for handling vector instructions
US8583898B2 (en) * 2009-06-12 2013-11-12 Cray Inc. System and method for managing processor-in-memory (PIM) operations
US8458685B2 (en) * 2009-06-12 2013-06-04 Cray Inc. Vector atomic memory operation vector update system and method
US8458677B2 (en) * 2009-08-20 2013-06-04 International Business Machines Corporation Generating code adapted for interlinking legacy scalar code and extended vector code
US9390539B2 (en) * 2009-11-04 2016-07-12 Intel Corporation Performing parallel shading operations
WO2012052773A1 (en) * 2010-10-21 2012-04-26 Bluwireless Technology Limited Data processing systems
CN101986287B (zh) * 2010-11-25 2012-10-17 中国人民解放军国防科学技术大学 用于向量数据流的重整理缓冲器
US8688957B2 (en) * 2010-12-21 2014-04-01 Intel Corporation Mechanism for conflict detection using SIMD
US9727526B2 (en) * 2011-01-25 2017-08-08 Nxp Usa, Inc. Apparatus and method of vector unit sharing
US9519617B2 (en) * 2011-07-14 2016-12-13 Texas Instruments Incorporated Processor with instruction variable data distribution
WO2013063801A1 (zh) * 2011-11-04 2013-05-10 中兴通讯股份有限公司 一种矢量和标量的混合处理方法及装置
US9665371B2 (en) 2011-11-30 2017-05-30 Intel Corporation Providing vector horizontal compare functionality within a vector register
US10318291B2 (en) 2011-11-30 2019-06-11 Intel Corporation Providing vector horizontal compare functionality within a vector register
US9436469B2 (en) * 2011-12-15 2016-09-06 Intel Corporation Methods to optimize a program loop via vector instructions using a shuffle table and a mask store table
SE536099C2 (sv) * 2011-12-20 2013-05-07 Mediatek Sweden Ab Digital signalprocessor och basbandskommunikationsanordning
US20140207838A1 (en) * 2011-12-22 2014-07-24 Klaus Danne Method, apparatus and system for execution of a vector calculation instruction
WO2013095659A1 (en) 2011-12-23 2013-06-27 Intel Corporation Multi-element instruction with different read and write masks
US9507593B2 (en) 2011-12-23 2016-11-29 Intel Corporation Instruction for element offset calculation in a multi-dimensional array
US10037205B2 (en) * 2011-12-23 2018-07-31 Intel Corporation Instruction and logic to provide vector blend and permute functionality
WO2013101132A1 (en) 2011-12-29 2013-07-04 Intel Corporation Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions
US10157060B2 (en) 2011-12-29 2018-12-18 Intel Corporation Method, device and system for control signaling in a data path module of a data stream processing engine
US9389860B2 (en) 2012-04-02 2016-07-12 Apple Inc. Prediction optimizations for Macroscalar vector partitioning loops
CN103699360B (zh) * 2012-09-27 2016-09-21 北京中科晶上科技有限公司 一种向量处理器及其进行向量数据存取、交互的方法
CN107562444B (zh) 2012-12-26 2020-12-18 英特尔公司 合并相邻的聚集/分散操作
US20140188961A1 (en) * 2012-12-27 2014-07-03 Mikhail Plotnikov Vectorization Of Collapsed Multi-Nested Loops
US9619229B2 (en) 2012-12-27 2017-04-11 Intel Corporation Collapsing of multiple nested loops, methods and instructions
US10223450B1 (en) * 2013-03-14 2019-03-05 Google Llc Data delivery
US9348589B2 (en) 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
US9817663B2 (en) 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
CN103544131B (zh) * 2013-10-12 2017-06-16 深圳市欧克蓝科技有限公司 一种可动态配置矢量处理装置
CN106325811B (zh) * 2014-07-02 2020-02-07 上海兆芯集成电路有限公司 微处理器中的方法
CN104133736A (zh) * 2014-07-29 2014-11-05 江苏宏云技术有限公司 一种矢量crc校验指令的设计方法
US11656874B2 (en) * 2014-10-08 2023-05-23 Nxp Usa, Inc. Asymmetrical processor memory architecture
US9996350B2 (en) 2014-12-27 2018-06-12 Intel Corporation Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array
US11243958B2 (en) 2015-12-31 2022-02-08 Teradata Us, Inc. Implementing contract-based polymorphic and parallelizable SQL user-defined scalar and aggregate functions
US10572263B2 (en) * 2016-03-31 2020-02-25 International Business Machines Corporation Executing a composite VLIW instruction having a scalar atom that indicates an iteration of execution
CN111651203B (zh) * 2016-04-26 2024-05-07 中科寒武纪科技股份有限公司 一种用于执行向量四则运算的装置和方法
US11075806B1 (en) 2016-06-30 2021-07-27 Juniper Networks, Inc. Hierarchical naming scheme for state propagation within network devices
US10887173B2 (en) * 2016-12-21 2021-01-05 Juniper Networks, Inc. Communicating state information in distributed operating systems
US11316775B2 (en) 2016-12-21 2022-04-26 Juniper Networks, Inc. Maintaining coherency in distributed operating systems for network devices
US11316744B2 (en) 2016-12-21 2022-04-26 Juniper Networks, Inc. Organizing execution of distributed operating systems for network devices
KR102343652B1 (ko) * 2017-05-25 2021-12-24 삼성전자주식회사 벡터 프로세서의 서열 정렬 방법
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US20190205131A1 (en) * 2017-12-29 2019-07-04 Intel Corporation Systems, methods, and apparatuses for vector broadcast
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US11579883B2 (en) * 2018-09-14 2023-02-14 Intel Corporation Systems and methods for performing horizontal tile operations
US11397624B2 (en) * 2019-01-22 2022-07-26 Arm Limited Execution of cross-lane operations in data processing systems
US11095742B2 (en) 2019-03-27 2021-08-17 Juniper Networks, Inc. Query proxy for delivery of dynamic system state
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11132198B2 (en) * 2019-08-29 2021-09-28 International Business Machines Corporation Instruction handling for accumulation of register results in a microprocessor
US12061910B2 (en) 2019-12-05 2024-08-13 International Business Machines Corporation Dispatching multiply and accumulate operations based on accumulator register index number
US12086080B2 (en) 2020-09-26 2024-09-10 Intel Corporation Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits
US11467845B2 (en) 2020-10-20 2022-10-11 Micron Technology, Inc. Asynchronous pipeline merging using long vector arbitration
US12106101B2 (en) * 2020-12-23 2024-10-01 Intel Corporation Vector processor supporting linear interpolation on multiple dimensions
US20220342590A1 (en) * 2021-04-27 2022-10-27 Microchip Technology Inc. Method and Apparatus for Gather/Scatter Operations in a Vector Processor
US11561794B2 (en) * 2021-05-26 2023-01-24 International Business Machines Corporation Evicting and restoring information using a single port of a logical register mapper and history buffer in a microprocessor comprising multiple main register file entries mapped to one accumulator register file entry

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4760518A (en) * 1986-02-28 1988-07-26 Scientific Computer Systems Corporation Bi-directional databus system for supporting superposition of vector and scalar operations in a computer
US4987534A (en) * 1986-08-20 1991-01-22 Nec Corporation Processor having synchronized operation between a CPU and a vector processor
JPS63253468A (ja) * 1987-04-10 1988-10-20 Hitachi Ltd ベクトル処理装置
US5261113A (en) * 1988-01-25 1993-11-09 Digital Equipment Corporation Apparatus and method for single operand register array for vector and scalar data processing operations
US5053987A (en) * 1989-11-02 1991-10-01 Zoran Corporation Arithmetic unit in a vector signal processor using pipelined computational blocks
US5197130A (en) 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
JPH04293151A (ja) 1991-03-20 1992-10-16 Fujitsu Ltd 並列データ処理方式
US5742842A (en) * 1992-01-28 1998-04-21 Fujitsu Limited Data processing apparatus for executing a vector operation under control of a master processor
US5426754A (en) 1992-05-26 1995-06-20 International Business Machines Corporation Cross-interrogate method and means for combined scaler and vector processing system
AU4804493A (en) * 1992-08-07 1994-03-03 Thinking Machines Corporation Massively parallel computer including auxiliary vector processor
EP1102163A3 (en) 1999-11-15 2005-06-29 Texas Instruments Incorporated Microprocessor with improved instruction set architecture
JP3607548B2 (ja) 1999-12-27 2005-01-05 エヌイーシーコンピュータテクノ株式会社 ベクトル演算装置
US6839828B2 (en) * 2001-08-14 2005-01-04 International Business Machines Corporation SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode

Also Published As

Publication number Publication date
WO2003100602A2 (en) 2003-12-04
TW200405208A (en) 2004-04-01
EP1512100A2 (en) 2005-03-09
JP2005527038A (ja) 2005-09-08
TWI289789B (en) 2007-11-11
CN100541425C (zh) 2009-09-16
CN1656495A (zh) 2005-08-17
AU2003228069A8 (en) 2003-12-12
AU2003228069A1 (en) 2003-12-12
US8510534B2 (en) 2013-08-13
WO2003100602A3 (en) 2004-11-25
US20050240644A1 (en) 2005-10-27

Similar Documents

Publication Publication Date Title
JP4339245B2 (ja) スカラー/ベクトルプロセッサ
CN109213723B (zh) 一种用于数据流图处理的处理器、方法、设备、及一种非暂时性机器可读介质
US7430631B2 (en) Access to a wide memory
EP1849095B1 (en) Low latency massive parallel data processing device
EP1126368B1 (en) Microprocessor with non-aligned circular addressing
US5752071A (en) Function coprocessor
US20120017066A1 (en) Low latency massive parallel data processing device
EP1102163A2 (en) Microprocessor with improved instruction set architecture
JP2021057004A (ja) 行列演算アクセラレータの命令のための装置、方法、及びシステム
US7383419B2 (en) Address generation unit for a processor
US6728741B2 (en) Hardware assist for data block diagonal mirror image transformation
US6438680B1 (en) Microprocessor
US7793076B1 (en) Digital signals processor having a plurality of independent dedicated processors
KR19980018071A (ko) 멀티미디어 신호 프로세서의 단일 명령 다중 데이터 처리
McGrath et al. A WE-DSP32 based, low-cost, high-performance, synchronous multiprocessor for cyclo-static implementations
Mayer-Lindenberg A modular processor architecture for high-performance computing applications on FPGA
Van Berkel et al. Address generation unit for a processor
Gunberg An integration concept for dynamically reconfigurable functional units for RISC processors

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060522

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20071213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080129

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080430

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080509

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20080612

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080729

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090408

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090518

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090605

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090701

R150 Certificate of patent or registration of utility model

Ref document number: 4339245

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120710

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130710

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees