JP4624098B2 - プロセッサのアドレス発生ユニット - Google Patents

プロセッサのアドレス発生ユニット Download PDF

Info

Publication number
JP4624098B2
JP4624098B2 JP2004507987A JP2004507987A JP4624098B2 JP 4624098 B2 JP4624098 B2 JP 4624098B2 JP 2004507987 A JP2004507987 A JP 2004507987A JP 2004507987 A JP2004507987 A JP 2004507987A JP 4624098 B2 JP4624098 B2 JP 4624098B2
Authority
JP
Japan
Prior art keywords
memory
processor
registers
address
vector
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 - Lifetime
Application number
JP2004507987A
Other languages
English (en)
Other versions
JP2005527036A (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 JP2005527036A publication Critical patent/JP2005527036A/ja
Application granted granted Critical
Publication of JP4624098B2 publication Critical patent/JP4624098B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction

Landscapes

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

Description

本発明はプロセッサのアドレス発生ユニットに関する。
信号処理において、アルゴリズムの多くは、一般に多数の反復回数を有し、比較的少ない命令により構成され、および/または、一連の画素ブロックのような比較的少ないデータで動作するループを使用する。処理速度を向上させるため、DSPはいわゆるアドレス発生ユニット(AGU)を具備している。これらのユニットは現在のアドレスから次のアドレスを発生する。一部のユニットは複数のアドレッシングモードをサポートする。ユニットは、アドレッシングモードに応じて、多数のレジスタを使用してアドレスを計算する。データアドレスを発生するアドレス発生ユニット(アドレス計算ユニット(ACU)と称されることがある)、ならびに、命令アドレスを発生するアドレス発生ユニット(ループ制御ユニットと称されることがある)は公知である。
国際特許公開第01/04765号パンフレットは、信号処理用のVLIWプロセッサを開示している。このプロセッサは4個の同一の処理エレメントを含み、各処理エレメントは多数の機能ユニットを備える。各処理エレメントは、機能ユニットとしてアドレス発生ユニット(AGU)を含む。AGUは、直接アドレッシング、ベースプラスオフセットアドレッシング、間接/インデックスアドレッシング、ベースプラスインデックスアドレッシング、循環インデックスアドレッシング、および、処理エレメント相対アドレッシングの7通りのアドレッシングモードをサポートする。これらのアドレッシングモードのそれぞれについて、レジスタがアドレスを計算するため使用される。アドレッシングモード、次のアドレスを計算するアルゴリズム、アルゴリズムによって使用されるレジスタ、および、例示的なハードウェア実施形態に関する詳細については、国際特許公開第01/04765号パンフレットを参照のこと。VLIW命令は、処理エレメント毎に命令スロットを含む。アドレッシングモードは命令の一部として指示される。レジスタは、プロセッサのコンテキストの一部であり、コンテキストの一部であるその他のレジスタと同じようにロード、セーブ、および、リストアが可能である。VLIWプロセッサは、VLIWを記憶する幅の広いメモリと組み合わせて使用される。各メモリラインは1個のVLIW命令を格納する。メモリは、フェッチされた命令毎にアクセスされ、多数の実行ユニットの実行を並列式に制御するためデコードロジックへそのまま供給される。
公知のVLIWプロセッサの処理エレメントは、単一命令複数データストリーム(SIMD)プロセッサであり、ベクトルプロセッサとしても知られている。VLIWベクトルプロセッサは、非常に高い信号処理性能を有する可能性がある。第3世代移動通信規格用のソフトウェアモデムのように、このような性能を必要とする信号処理タスクは、一般に、ベクトル化可能な多数のサブタスクにより構成される。ベクトル処理はこのようなサブタスクを比較的高速に完了させる。このコンテキストにおける「完了」は、また、データのブロックが処理され、処理が後の時点で新しいデータブロックに対して(一般に一定サイクルで)再開される状況を含んでいる。結果として、サブタスク間の切り替えは比較的頻繁に生ずる。コンテキスト切り替えは、現在停止されているタスクのため使用されている一つ以上のACUの現在レジスタがセーブされ、新たに起動されたタスクまたは再起動されたタスクのためにセーブされていたレジスタが、関連したACUの当該レジスタ内にロードされることを要求する。ACU毎に、たとえば、4個のレジスタが関連し得る。従って、1個のACUに対し、このコンテキストの切り替えは、全部で8個のレジスタのセーブ/ロードを含む。
本発明の目的は、高性能タスクにより良く適合し、特に、移動通信システム用の信号処理に関するプロセッサアーキテクチャを提供することである。他の目的は、ベクトルプロセッサ用のそのようなアーキテクチャを提供することである。
この目的に対処するために、プロセッサは、アドレスの制御下で物理メモリにアクセスするメモリポートと、
前記メモリに格納された命令を実行し、および/または、前記メモリに格納されたデータを処理する少なくとも一つの処理ユニットと、
前記メモリへのアクセスを制御するアドレスを発生するアドレス発生ユニット(以下、AGUという)であって、前記AGUがアドレス発生メカニズムの制御下で前記アドレスを発生可能にする複数のN個のレジスタと関連付けられたAGUと、
2<=k<=Nが成り立つとき、1オペレーションによってトリガーされ、前記N個のレジスタのうちのk個のレジスタをセーブ/ロードするために動作するメモリユニットであって、前記k個のレジスタを、前記メモリポートを介して前記メモリへ書き込まれる1メモリワードに連結する連結部、および、前記メモリポートを介して前記メモリから読み出されたワードを前記k個のレジスタに分離するスプリッタを含むメモリユニットと、を備えている。
本発明者は、このプロセッサの性能が向上すると、AGUのレジスタの設定に掛かる時間が次第にボトルネックとなることを認識した。従来のプロセッサアーキテクチャでは、1メモリサイクルで、たった1つのレジスタしかセーブまたはリストアすることができず、その結果、AGUを現在のデータで初期化(設定)するのに多大な時間を費やして待機していた。これを克服するために、AGUレジスタのいくつかまたは総てをセーブまたはリストアするためのコンテキスト切り替え命令またはコンテキスト明示命令のような1つのオペレーションによって、少なくとも2つのレジスタがトリガーされセーブされ得る。この目的のために、プロセッサのメモリユニットは、複数のAGUレジスタを1つのメモリワードにマッピングするための連結部およびスプリッタを含む。本発明に従ったAGUおよびメモリユニットは、原理的には、DSPのような任意のプロセッサで使用され得る。有利なことに、AGUおよびメモリユニットは、ベクトルプロセッサで用いられる。これまで、ベクトルプロセッサは、信号処理には広く使用されてはいなかった。これは、部分的には、従来のベクタプロセッサアーキテクチャが“アムダールの法則”として知られているものの影響のために100%ベクトル化しないアプリケーションには効果的でない、という事実に基づく。この法則は、ベクトル化された(f)となり得る(1−f+f/P)−1に等しいコードのフラクションの関数として、P処理要素(P processing elements)を有するベクトルプロセッサでのベクトル化によって得られた全体の高速化を述べている。これは、コードの50%がベクトル化されると、(32という理論上の最大高速化の代わりに)2未満という全体の高速化が実現されることを意味する。これは、残りの50%のコードはベクトル化されないからであり、従って、この部分のコードに対しては高速化が実現されない。コードの90%がベクトル化されたとしても、高速化は、依然として8の因数未満である。消費者による電子機器、特に、移動通信機器の使用では、もし、大幅な高速化が実現されたとしたならば、ベクトルプロセッサの付加的なコストは正当化され得るであろう。本発明に従ったAGUおよびメモリユニットは、データおよび/または命令ループの処理、並びに、ジャンプおよびコンテキストスイッチの効果的な取り扱いに対する最適なサポートを提供することによってアムダールの法則を打開するのに役立つ。
従属請求項2に記載されたように、前記メモリユニットは、前記メモリの1回の読み出し/書き込みサイクルでセーブ/ロードを実行するため動作する。このように、AGUの設定は高速に生じ得る。好ましくは、従属請求項3に記載されているように、総てのAGUレジスタは、1回のオペレーションでセーブ/ロードされる。
従属請求項4に記載されているように、プロセッサは、レジスタのいくつかのセットを有し、各セットは、AGUにアドレスを生成させることができる。向上した性能で、プロセッサは、並列により多くのタスクを実行することができ、従って、1セットのレジスタよりも多くのレジスタを用いることによって利益を得ることができる。データまたは命令ループの効果的な処理のために、ループごとに1セットのレジスタを用いてもよい。複数のセットの設定を高速化するために、1セットよりも多くのレジスタが、レジスタのいくつかのセットを1つのメモリワードに連結することによって、1回のオペレーションでセーブされ得る。従属請求項5に記載されているように、プロセッサは、いくつかのAGUを有してよい。各AGUは、独自のレジスタのセットを備えている。異なるAGUは、機能的に同じでよい(よって、同数のレジスタを有する)。もし、このように所望されるならば、異なるAGUは、異なるアドレス計算方法を割り当てられてもよく、その結果、異なる個数のレジスタを有してもよい。好ましくは、少なくとも2つのAGUの総てのレジスタは、1つのメモリワードを用いて、1回のオペレーションでセーブ/ロードされ得る。代替的に、従属請求項6に記載されているように、AGUは、1セットより多くのレジスタを付随してもよい。レジスタの各セットは、アドレスの生成を可能にする。この場合、AGUは、新しいアドレス計算を実行するために、1セットのレジスタに選択的に接続され得る。好ましくは、少なくとも2つのセットのレジスタの総てのレジスタは、1メモリワードでセーブされ得る。
従属請求項8に記載されているように、有利なことには、設定されるのに必要なレジスタのセットが選択され得る。このように、AGUおよび/またはレジスタのセットは、タスクに最適に分割される。この場合、そのタスクに関連するコンテキストスイッチに応答して、関連するAGUおよび/またはレジスタのセットは、簡単に選択され、並びに、再設定が達成される。選択を簡単にするために、AGUおよび/またはレジスタのセットは、別個に選択することができるように複数のグループに分けてもよい。さらに、このグループは、自由にタスクに分割され得る。再構成は、1回で少なくとも1つのグループに生じる。
従属請求項9に規定されているように、メモリワードの幅は、プロセッサが動作可能な最小ワードの倍数である。レジスタは、プロセッサワード境界上のメモリ内に格納されている。このように、AGUレジスタを設定するのに追加の命令を必要とすることなく、レジスタ値を簡単に変更することができる。
従属請求項8に規定されているように、好ましくは、プロセッサ(例えば、このプロセッサは、SIMD/ベクトルプロセッサである)は、複数のM個のデータ要素を並列に処理することができ、メモリは、1メモリワードで総てのM個のデータ要素を格納することができるように幅広い。このように、AGUの多くのレジスタは1回のオペレーションでセーブ/ロードされ得る。
本発明のこれらのおよび他の形態は、以下に記載された実施形態に関連して説明され、明らかにされる。
アドレス発生ユニット(AGU)およびメモリユニットは、好ましくは、信号処理のために最適化されたプロセッサで使用される。このようなプロセッサは、DSPまたはその他の適当なプロセッサ/マイクロコントローラでよい。以下の説明では、非常にパワフルなスカラ/ベクトルプロセッサのユニットの使用を記述する。このようなプロセッサは、スタンドアロンでも、他のプロセッサと組み合わせても使用される。図1は、スカラ/ベクトルプロセッサが使用される好ましい一構造を表す。この構造において、三つの主要部分がバス110によって接続されている。これらの三つのコンポーネントを接続するバス110は、たとえば、AMBA高速バス(AHB)のような任意の適切なバスでよい。主要部分は、機能ユニットおよびローカルデータメモリ(図1ではベクトルメモリと呼ばれる)を含むプログラマブルスカラ/ベクトルプロセッサ120と、小規模のオンチッププログラムおよびデータメモリを含むマイクロコントローラまたはDSPサブシステム130と、インタフェースブロック140と、を備える。
スカラ/ベクトルプロセッサ120は、主に通常の「重い(heavy/duty)」処理、特に、インナループ(inner-loops)の処理のため使用される。スカラ/ベクトルプロセッサは、ベクトル処理機能を含む。したがって、スカラ/ベクトルプロセッサは、実行すべきコードのベクトル化可能な部分を大規模並列化する。あらゆる信号処理の圧倒的多数はスカラ/ベクトルプロセッサのベクトルセクションで実行される。同一命令を実行する、たとえば、32個の同一処理エレメントのアレイを用いると、大規模並列性が提供される。32ワードの幅の広いメモリインタフェースと組み合わせることにより、低コストかつ妥当な電力消費で前例のないプログラマブル(programmable)性能レベルがもたらされる。しかし、多くのアルゴリズムは正しい形式の十分なデータ並列性を示さないので、この並列性を完全に利用することは常に可能であるとは限らない。アムダールの法則によれば、コードの直接ベクトル化可能な部分のベクトル化後、多くの時間が残りのコードに費やされる。残りのコードは、
アドレス関連命令(たとえば、循環バッファ内のポインタのインクリメント、モジュローアドレッシングの使用)
規則的なスカラ演算(すなわち、ベクトルプロセッサの主ループに対応するスカラ演算)
ルーピング
変則的なスカラ演算
の4通りのカテゴリに分類できる。
これらのカテゴリのそれぞれのコードの一部分は、実行されるアルゴリズムへの依存度が高い。たとえば、(P−SCH検索のため使用される)Golay相関器は、多数のアドレス関連命令を必要とするが、Rakeのような他のアルゴリズムの場合には状況が異なる。アドレス関連命令およびルーピングの性能は、本発明によるAGU/メモリユニットを使用することにより最適化することができる。規則的なスカラ演算スキャンの動作は、一つのプロセッサでスカラ処理とベクトル処理を緊密に統合することによって最適化可能である。本発明者による第3世代モデムに関連したあらゆるアルゴリズムの研究によって、変則的なスカラ演算の一部は非常に制限されることがわかった。この特性は、スカラ/ベクトルプロセッサ120とマイクロコントローラまたはDSP130との間のタスクの分離を可能にし、別個のマイクロコントローラまたはDSP130が変則的なタスクを実行し、好ましくは、スカラ/ベクトルプロセッサを同様に制御する。この好ましい構成において、スカラ/ベクトルプロセッサ120は、プログラマブルなコプロセッサ(以下では、コベクトルプロセッサ、すなわち、CVPのように称される)として機能する。スカラ/ベクトルプロセッサ120とマイクロコントローラ130との間のインタフェースは、(たとえば、共有メモリを介した)通信と、(たとえば、共有メモリおよび状態信号を介した)同期を取り扱う。このインタフェースは、好ましくは、メモリマップ型である。
インタフェースブロック140は、プロセッサがシステムの残りの部分と相互作用できるようにする。好適な実施形態において、スカラ/ベクトルプロセッサは、第2世代/第3世代移動ネットワーク用のソフトウェアモデム(トランシーバ)として使用される。このようなソフトウェアモデム機能に対し、インタフェースブロック140は、マイクロコントローラ130の制御下で、メインタスクとして制御およびデータワードをベクトルメモリ、たとえば、DMAへ通過させるためのフロントエンドとして専用ハードウェアを含んでよい。ベクトルメモリのデータは、次に、スカラ/ベクトルプロセッサによって処理される。
スカラ/ベクトルプロセッサ120はバス110のスレーブでもよく、一方、マイクロコントローラ130およびインタフェースブロック140(DMAユニットを含んでもよい)はマスタとして機能してもよい。CVPとのあらゆる通信は、プログラム、データ、または、制御の何れであるとしても、好ましくは、メモリマップされる。メモリは、オフチップDRAMでもよく、このDRAMはまた、スカラ/ベクトルプロセッサによってインターリーブ(デインターリーブ)メモリとして使用されてもよい。
本明細書中、「アドレス計算ユニット」すなわちACUという表現が主として使用される。説明の目的のため、この表現は、「アドレス発生ユニット」すなわちAGUと同じであると考えられる。本明細書の記述はデータアドレスを計算するためこのようなユニットを使用することに焦点を当てている。当業者は、命令アドレス(ループ制御)を計算するためにも同じ機能を使用することができるであろう。
図2は、本発明によるプロセッサの主要な構造を示す。プロセッサはパイプライン方式ベクトル処理セクション210を含む。ベクトルセクションの演算をサポートするため、スカラ/ベクトルプロセッサは、ベクトルセクションと並列に動作するように構成されたスカラ処理セクション220を含む。好ましくは、スカラ処理セクションもパイプライン方式である。ベクトルセクションの演算をサポートするため、ベクトルセクションの少なくとも一つの機能ユニットは、スカラセクションの対応部分の機能をも提供する。たとえば、シフト機能ユニットのベクトルセクションはベクトルを機能的にシフトし、スカラ成分はシフト機能ユニットのスカラセクションによって供給される(あるいはスカラセクションへ供給される)。このようにして、シフト機能ユニットはベクトルセクションとスカラセクションの両方を対象とする。したがって、少なくともいくつかの機能ユニットは、ベクトルセクションだけでなく、スカラセクションを有し、ベクトルセクションおよびスカラセクションはスカラデータを交換することにより協働する。機能ユニットのベクトルセクションは実際の処理能力(raw processing power)を与え、対応したスカラセクション(すなわち、同じ機能ユニットのスカラセクション)は、スカラデータを供給および/または使用することによりベクトルセクションの演算をサポートする。ベクトルセクションのベクトルデータはベクトルパイプラインを介して供給される。
図2の好適な実施形態において、スカラ/ベクトルプロセッサは以下の7個の専門機能ユニットを含む。
命令分配ユニット(IDU250):IDUは、プログラムメモリ252を含み、連続的なVLIW命令を読出し、各命令の7個のセグメントを7個の機能ユニットへ分配する。好ましくは、IDUは、ゼロオーバーヘッドループの最大で3重のネストレベルをサポートするループユニットを含む。好適な実施形態において、IDUは、分岐、ジャンプ、または、割り込みをサポートしない。初期プログラムカウンタは、以下で詳述される割当ディスクリプタからロードされる。
ベクトルメモリユニット(VMU260):VMUは(図2に示されない)ベクトルメモリを含む。各命令中に、VMUは、ベクトルメモリからラインまたはベクトルを送信し、或いは、ラインをベクトルメモリ内へ受信することが可能である。同じ命令は、さらに、スカラ送信演算および/または受信演算を特定してよい。VMUは、外界、すなわち、外部バス110に接続された唯一の機能ユニットである。
コード発生ユニット(CGU262):CGUは有限領域演算(finite-field arithmetic)に特化される。たとえば、CGUは、CDMAコードチップのベクトルを、チャネル符号化およびCRCのような関連した関数と共に発生するために使用することができる。
ALU−MACユニット(AMU264):AMUは、通常の整数および固定小数点演算に特化される。AMUは、演算が多数のベクトルの要素に関して実行されるベクトル間演算をサポートする。好適な一実施形態において、AMUは、また、演算が1ベクトル内の要素に関して実行される、ある種のベクトル内演算を行う。
シャッフルユニット(SFU266):SFUは特定されたシャッフルパターンに従ってベクトルの要素を再配置することができる。
左シフトユニット(SLU268):SLUは、ワード、ダブルワード、クワッドワードのような単位でベクトルの要素を左へシフト可能である。生成されたスカラはそのスカラセクションへ与えられる。発生したSLUベクトル演算のタイプに依存して、使用されるスカラは、ゼロであるか、または、そのスカラセクションから選ばれる。
右シフトユニット(SRU270):SRUはSLUに類似しているが、右へシフトする。その上、SRUは、AMU上のベクトル内演算からの連続した結果を統合する能力を有する。
以下の表は、すべての機能ユニットが機能ベクトルセクション210を具備し、一部の機能ユニットが制御セクション230またはスカラセクション220を具備しないことを示す。
Figure 0004624098
本発明によるスカラ/ベクトルプロセッサは以下の二つの主要な方式で命令レベル並列化を適用する。
ベクトル処理:単一命令が(スカラ)データのベクトルに作用する。このアプローチは、単一命令ストリーム、複数データストリーム、すなわち、SIMDとしても知られている。
各機能ユニットがベクトルに作用する複数機能ユニットの並列処理:これは、VLIW命令レベルの並列化の(制限された)形式と考えることができる。
これらの二つの命令レベル並列化の形式は独立であり、これらの効果は累積的である。
(FU間通信)
機能ユニット(FU)は並列に動作する。各FUはベクトルデータを送受信する能力を備えている。多数のFUはまたスカラデータを送受信する能力を備えている。
Figure 0004624098
すべての機能ユニット(FU)は並列に動作する。命令のセグメントを受信したとき、機能ユニットは、ベクトルデータと、該当する場合にはスカラデータの両方のデータを入力し、処理し、出力する。FU間の通信は、厳密にスカラセクションの間、または、ベクトルセクションの間の通信である(FU間通信)。すなわち、IDUを除くすべてのFUのベクトルセクションはパイプラインによって接続される。好適な一実施形態において、このパイプラインは命令に基づいて設定可能である。このため、好ましくは、FUは、原理的に各ベクトルセクションが各サイクル中に他の何れのベクトルセクションからでもベクトルを受信可能にさせる相互連結ネットワークによって相互接続される。この特徴は、特に、FU(IDUを除く)の任意のパイプラインの作成を可能にする。ベクトルパスに寄与する6個の機能ユニットは、各クロックサイクル中に並列に、ベクトルを出力しベクトルを他のユニットへ送信することが可能である。これらの機能ユニットは他のユニットからベクトルを受信することも可能である。ネットワークはほぼ全体に接続される。意味のないリンクだけが省かれる。AMUは2個のベクトルを同時に受信可能である。図2に示されるように、ネットワークは、好ましくは、(円によって示される)単一ソースとして一つのネットワークパスに接続されている各FUによって形成される。各FUは、他のすべてのパスに(三角形によって示される)単一シンクとして接続される。FUのためのVLIW命令のセクションは、そのFUがどのパスからのベクトルを使用するかを示す。このようにして、パイプラインは命令に基づいて設定可能である。各パスは、たとえば、256本の並列ワイヤを使用してベクトル全部を転送可能である。同様に、FUのスカラセクションの少なくとも一部は別個のパイプラインによって接続される。好ましくは、このパイプラインも命令に基づいて設定可能である。FUのスカラセクションの間の相互接続ネットワークは、少なくとも一つのFUとの間ではスカラを送受信できないという意味で不完全である。したがって、より少数のパイプライン順序付けしか特定できない。スカラパイプラインとベクトルパイプラインは独立に設定可能である。たとえば、関連したVLIWセクションにおいて指定することにより、スカラパイプラインとベクトルパイプラインの両方は機能ユニットによって読み出しされる。
異なる機能ユニットの制御セクションの間に接続は特定されない。これらの制御ユニットは、IDUからVLIW命令のセグメントを受信し、それらの固有の状態を更新し、それぞれのスカラセクションおよびベクトルセクションを制御する。
(FU内通信)
FU内には、セクション間に緊密な相互作用(FU内通信)が存在する。この相互作用はFUの動作の不可欠な部分である。その例には、生成されたスカラがFUの対応したスカラセクションへ供給され、使用されるスカラがFUの対応したスカラセクションから取り出されるSLUおよびSRUが含まれる。
命令は代表的には単一サイクルで実行される。ベクトルメモリにおける混雑によって例外が生じ、ストールサイクルとなって現れる。
(データ幅)
好適な一実施形態において、スカラ/ベクトルプロセッサは、図3に示されるように複数のデータ幅およびデータタイプをサポートする。メモリアドレッシングの基本単位はワードであり、シングルワードとも呼ばれる。好ましくは、データ幅は、シングルワード(W)、ダブルワード(DWすなわち2W=16ビット)、または、クワッドワード(QWすなわち4W=32ビット)である。ワードのサイズは、W=8ビットである。好ましくは、スカラには、(シングル)ワードと、ダブルワードと、クワッドワードの三つのサイズの形式がある。ベクトルは、Pクワッドワードの固定サイズを有する。ベクトルは、好ましくは、
サイズがクワッドワードであるP個の要素
サイズがダブルワードであるP=2P個の要素
サイズが(シングル)ワードであるP=2P=4P個の要素
のうちのいずれか一つの形式で構成可能である。
ベクトル要素のインデックス範囲は[0...4PQ−1]である。したがって、ダブルワードは偶数インデックスをもち、クワッドワードのインデックスは4の倍数である。図3には、データサイズの概要が示される。このアーキテクチャはPに関して完全に拡大縮小可能であり、P≧1である任意のベクトルサイズに対して定義される。しかし、殆どの状況において、Pとして2のべき乗を選択する方が好ましい。好適な一実施形態において、Pは8であり、データパス幅およびメモリ幅は32ワードであることを示す。
(命令)
CVP命令は制御命令またはVLIW命令である。制御命令は、たとえば、ゼロオーバーヘッドループ初期化である。分岐、ジャンプまたはサブルーチンは存在しない。VLIW命令はセグメントに分割され、各命令セグメントは対応した機能ユニットによって実行されるべき演算を特定する。セグメントは、さらに、ベクトルセクションと(もし存在するならば)スカラセクションの部分に細分される。セグメントは、また、両方の部分のために、データ(ベクトルセクションのための一つ以上のベクトルおよびスカラセクションのための一つ以上のスカラ)を受信するため使用するネットワーク部分に関する情報を含む。
(スカラ/ベクトルプロセッサの状態)
CVPの状態はその機能ユニットの状態と組み合わされる。好適な実施形態において、CVPの状態は、
ベクトルメモリ(VMUの一部)と、
プログラムメモリ(IDUの一部)と、
ベクトルレジスタ(すべての機能ユニット)と、
スカラレジスタ(殆どの機能ユニット)と、
プログラムカウンタを含む制御レジスタと、
アドレスオフセットレジスタと、
を備えている。
プログラマから見えるレジスタに加え、現実のCVPには、代表的に、パイプライン化およびキャッシュ化のための補助レジスタ(ベクトル、スカラおよび制御)が含まれる。これらは、CVP命令セットアーキテクチャの一部ではない。
一部の(ベクトル、スカラおよび制御)レジスタは、いわゆる、コンフィギュレーションレジスタである。コンフィギュレーションレジスタの内容はベクトルメモリだけからロード可能であり、コンフィギュレーションレジスタの値を変更するその他の方法はない。コンフィギュレーションレジスタは、機能ユニットのコンフィギュレーションをサポートし、代表的には、機能パラメータを定義する。これらの「準固定」機能パラメータをコンフィギュレーションレジスタに格納することにより、命令幅とメモリトラフィックの両方がかなり低減される。
CVP状態の成分の概要は以下の表に記載される。
Figure 0004624098
プログラマから見えるすべてのレジスタはベクトルメモリからロード可能である。コンフィギュレーションレジスタを除くすべてのレジスタはベクトルメモリにセーブ可能である。期間の最後にCVPレジスタをセーブし、後の時点でCVPレジスタをリストアすることにより、CVPは、あたかも他の期間が途中で実行されていないかのように、特定のタスクを継続することができる。これらのセーブ動作およびリストア動作は、随意的であり、不完全でもよく、明示的にプログラムされなければならない。
(メモリユニットおよびAGU)
図4はメモリユニット(VMU400)のブロック図である。以下の好適な実施形態において、メモリユニットは、ベクトル全体を格納することができる幅のある物理メモリと組み合わせてベクトルプロセッサで使用される。同じ考え方が、従来型のDSPのようなスカラプロセッサにも適用できることは明らかであろう。VMUはベクトルメモリ410を収容し制御し、ベクトルメモリ410は他の機能ユニットに巨大なデータ帯域幅を提供する。物理ベクトルメモリ410は、好ましくは、シングルポートSRAMに基づく。幅がPs*Wである内蔵式SRAMは一般には利用されていないので、物理メモリは、並列に配置された幅の広いランダムアクセスメモリ(RAM)の一つ以上のバンクにより形成する場合がある。
VMU400は、自動アドレス発生をサポートする少なくとも一つのアドレス計算ユニット(ACU)420を含む。図2の全体的なアーキテクチャを参照すると、ACUはVMU260の制御セクション230に位置するものと考えられる。ACUが物理的にVMU内に位置せず、VMUに接続されても構わないことは明らかであろう。好ましくは、ACUは、従来型のDSPと同様のアドレッシングモード(アドレス発生アルゴリズム)をサポートする。ACUは、プロセッサの主データパスを用いることなく、1命令当たりに1回以上のアドレス計算を実行する。たとえば、スカラのアドレスは、各スカラ読み出しアクセス後に、ポストインクリメントされる。これにより、アドレス計算がデータに関する算術演算と並列に実行できるようになり、プロセッサの性能が向上する。サポートされるアドレッシングモードのセットに応じて、このようなACUは多数のレジスタにアクセスすることが必要である。たとえば、相対アドレッシング、すなわち、いわゆるベースアドレスに相対的なアドレッシングは、
ベースレジスタbaseと、
オフセットレジスタoffsに格納されたベースアドレスに対するオフセットと、
インクリメントレジスタincrに格納された値を用いたオフセットのプリインクリメント/ポストインクリメントと、
境界レジスタboundに記憶されたアドレスに関するモジュロアドレッシングと、
を必要とする。
このアドレッシングモードのセットを用いて、次のようにサポートすることができる。オフセットレジスタをoffsと仮定する。アドレスbase+offsにおける各メモリアクセス(読み出しまたは書き込み)の後、レジスタoffsは、offs:=(offs+incr) モジュロ bound に従って更新される。したがって、offsは(各アクセス後に)頻繁に変化し、一方、base、incr、および、boundに格納された値は低頻度でしか変化しない。代表的に、これらの3個のレジスタは、プログラムループよりも前に初期化される。レジスタセットの初期化は、「ACUのコンフィギュレーション」の欄でも説明されている。過度に長い命令を回避し、できる限りアドレス計算に関して別個の命令を回避するために、VMUの制御セクションは、好ましくは、多数のアドレス計算ユニットを含む。各アドレス計算ユニット(ACU)は、(アドレス)レジスタセット、および、アドレス計算(インクリメント)演算と関連付けられている。ACUとレジスタセットとの間の関連性は、固定(ハードウェア組み込み)でも、設定可能でもよく、必要であれば命令レベルで設定可能でもよい。
ベクトルメモリは2本のラインを含み、スカラまたはベクトルアドレスは、L+log4Pビットを必要とする。たとえば、P=8およびL=12とすると、これは17ビットを表す。ACUのレジスタはアドレスと同じサイズを有してよい。必要に応じて、一部のレジスタがこれより小さくてもよい。たとえば、インクリメントは、比較的小さいステップ、たとえば、8ビットに限定される。好ましくは、すべてのレジスタは等しいサイズである。好適な一実施形態は以下の表に示され、ここで、ACUレジスタセットは4個のアドレスレジスタを収容する。
Figure 0004624098
好ましいアドレス範囲およびタイプ(符号付き/符号無し)も表に示されている。この構成において、各ACUレジスタは24ビットである。以下で詳述されるように、ACUレジスタはメモリ410へストアされメモリ410からロードされ得る。レジスタがメモリにストアされているときにレジスタの変更を簡単化するために、レジスタ幅は、メモリにアクセスする基本ユニット、すなわち、8−ビットワード境界と揃うように選択される。したがって、例示的なメモリサイズとして十分である17ビットの代わりに、24ビットレジスタが使用される。ある種のアドレス計算の場合、3個未満のレジスタで足りることは明らかであろう。したがって、レジスタの一つ以上のセットをこのような計算だけのために使用し、レジスタを節約することが可能である。
好適な実施形態において、VMUは8セットのACUレジスタを含む。これにより、機能ユニットのベクトルセクションとスカラセクションとについて異なるアドレス計算が可能になる。また、一つのアルゴリズムにおいて、各データストリームが固有のポインタを有する多重データストリーム(したがって、ポインタを計算し更新するためのアドレス計算)が十分にサポートされる。従来、ACUレジスタの個別のセットの設定は、1セット当たり数クロックサイクルを必要とした。したがって、ACUレジスタの設定のための所要時間がボトルネックになる可能性がある。このような設定による遅延を解決するため、1セットのACUレジスタに属する少なくとも2個のレジスタが単一オペレーションで設定され得る。これは、これらのすべてのACUレジスタを、ベクトルのような単一メモリワードにマッピングし、ベクトルメモリからACUメモリまでの専用ロードおよびストア命令を使用することにより実現可能である。好ましくは、1セットのACUレジスタの関連したレジスタセット全体を好ましくは1クロックサイクルの単一オペレーションで設定することができる。メモリ幅が許容するならば、有利的には、2セット以上のACUレジスタを1オペレーションで設定することできる。本例において、4個のレジスタからなるセットは424=96ビットを必要とする。上述のように、好ましくは、ベクトルは256ビット幅である。この場合、ACU設定速度は、複数のセットのレジスタを一つのメモリライン(ベクトル)にマッピングすることによりさらに加速される。この実施形態において、ACUレジスタの2つのセットは、1つのベクトルにマッピングされる。これは、図5にも示されている。ベクトルは番号500によって示され、クワッドワード境界が示されている。2セットのACUレジスタ510および520が示されている。本例において、ACUレジスタは24ビットであるので、ベクトルの標準的なデータサイズのうちの一つと一致しない。ベクトルメモリを介して個々のACUレジスタへ容易にアクセス可能にするために、ACUレジスタをメモリとの間でロード/セーブする特別な命令は、個別のACUレジスタがワード境界に基づいて揃えられることを確実にする(本例では、24ビットレジスタはクワッドワード境界で揃えられる)。当業者は、ACUレジスタのサイズおよびベクトルサイズに応じて最適なマッピングを定義可能である。たとえば、16ビットのACUレジスタと256ビットのベクトルを使用すると、4セットのACUレジスタを1個のベクトルにマッピングすることが可能になる。命令には、ストア/ロードされるACUレジスタセット数を指定することが必要である。別個、または、組み合わされた命令が、単一のACUレジスタセット、または、ACUレジスタセットのグループをロードするために使用されてもよい。ロード/ストアの対象であるACUレジスタセットのグループは固定されてもよい。たとえば、そのセットが番号0〜7によって識別されるならば、グループ番号がセットの最上位2ビットである4個の固定グループが形成される。この場合、必要に応じて、グループは、たとえば、ロード/ストア命令で2セット以上を指定できるようにすることによって動的に形成してもよい。
図6は、ACU620に常に接続された4個のACUレジスタからなるレジスタセット610を表す。パス630および632によって、レジスタのデータがACUへ供給される。ACUは、出力640に計算されたアドレスを供給し、出力642に更新されたレジスタのデータを供給する。独立した8セットのACUレジスタを備えた好適な実施形態において、これは、8回繰り返される(図示されてはない)。図7は代替的な配置を表す。この配置には、710〜717の番号が付された8セットのACUレジスタが示されている。様々な個数のACUが使用されている。本例では、720、721および722の番号が付けられた3個のACUが使用されている。ACUは、レジスタセットのうちの一つに動的に接続される。この場合、必要に応じて、完全な相互接続部730が設けられ、ACUのそれぞれをレジスタの何れか一つのセットに接続することができる。勿論、相互接続部730は完全でなくてもよい(たとえば、ACUは3または4セットだけに接続されていてもよい)。この相互接続部740は、更新されたレジスタ値が希望のセットへ確実に戻されるようにする。相互接続部740は相互接続部730を反映する。
以下、好ましいVMUおよびACUを詳細に説明する。この記載では、各ACUが或るACUレジスタセットに固定して関連付けられる場合を考える。VMUは、制御セクション、スカラセクションおよびベクトルセクションに分割可能である。これらのセクションは、入力、出力、状態、次の状態関数、および、出力関数の5個の要素からなるムーアマシンモデルに従ってモデル化される。ムーアマシンの状態は、利用可能なメモリおよび/またはレジスタによって決定される。機能ユニット毎に、すべての許容された遷移を規定するテーブルが与えられ、テーブルは対応したガード条件(guards)を含む。ガード条件は、遷移を発生させるためには真であることを必要とする条件である。遷移は、ムーアマシンの次の状態関数および出力関数を決定する。テーブル中、角括弧はベクトル内の要素を選択するため使用される。たとえば、v[p]はベクトルvの要素pを表す。
ベクトルメモリユニットは、単一VMU命令において最大で、次の4個の同時の「サブオペレーション」をサポート可能である。
ベクトル送信、または、VMロケーションとの間のライン送受信(ベクトルサブオペレーション)と、
VMロケーションからのスカラ送信(スカラ送信サブオペレーション)と、
VMロケーションへのスカラ受信(スカラ受信サブオペレーション)と、
アドレス計算ユニットの状態/出力変更(ACUサブオペレーション)。
これらの4個の同時の命令のそれぞれのパラメータは、すべて、以下のVMCコマンド(VMU_cmd)に与えられ、ベクトルサブオペレーションは、vopc、aid_v、およびainc_vによって特定され、スカラ送信サブオペレーションは、sopc、aid_s、およびainc_s、sizeによって特定され、3番目のスカラ受信サブオペレーションは、srcv、aid_r、およびainc_rによって特定され、ACUサブオペレーションは、aopc、aid_a、およびimm_addrによって特定される。4番目のオペレーションは、ACUのうちの一つを直接的に制御するが、他の三つのオペレーションは、以下で詳述されるように、副作用としてACUを制御する。
Figure 0004624098
VMU命令は、サブオペレーションの数とアドレスシーケンスの連続性とに応じて、可変クロックサイクル数をとる。
VMU入力/出力は次の通りである。
Figure 0004624098
Figure 0004624098
さらに、外部バスに接続されるべき二つのスカラポート(1送信、1受信)がある。これらのメモリアクセスのCVP命令との同期はマイクロコントローラ130の役目である。
VMUベクトルセクションは物理ベクトルメモリ410を収容する。
Figure 0004624098
(ベクトルサブオペレーション)
ベクトルサブオペレーションはスカラメモリにアクセスできないことに注意する必要がある。したがって、最上位アドレスビットはベクトルサブオペレーションに関して無視される。VMUのベクトルセクションは、命令のVOPCフィールドにエンコードされた7種類のサブオペレーション、すなわち、ベクトル送信(SENDV)、ライン送信(SENDL)、および、5個のライン受信サブオペレーション(RCVL_CGU, RCVL_AMU, RCVL_SFU, RCVL_SLU,および RCVL_SRU)をサポートする。7個のサブオペレーションは同時には実行できない。1個のサブオペレーションだけが一度に指定され得る。受信のソースである機能ユニットは、対応したライン受信サブオペレーションに明示的にエンコードされる。各サブオペレーションの読み出しアドレスまたは書き込みアドレスは、対応したアドレス計算ユニットによって指定される。AINC_Vフィールドはすべてのベクトルサブオペレーションの間で共用される。AINC_VフィールドはAID_VフィールドにエンコードされたACUへ通過する。このようにして、指定されたACUは、ベクトルサブオペレーションの副作用として制御される。AINC_Vフィールドは、影響されたアドレス計算ユニットがポストインクリメント演算を実行すべきかどうかを指定する。
Figure 0004624098
尚、オペレーションは、宛先(またはソース)を伴うロード(またはストア)動作としてではなく、送信(または受信)動作としてキャスティングされる。ロード(またはストア)動作は他の機能ユニットにおけるオペレーションによって指定される。ライン送信は、同じアドレスを用いたベクトル送信と機能的に等価的である。ライン送信サブオペレーションは、典型的に、機能ユニットを設定するため、または、種々のレジスタのタスクの状態をリストアするために使用される。ライン送信のための特殊なモードを導入することにより、連続的なベクトル送信(ベクトルストリーミング)のアクセス時間は、キャッシュの効率的な使用によって最適化可能である。
VMUのスカラ送信サブオペレーションは命令のSOPCフィールドにエンコードされる。スカラ送信サブオペレーションは、唯一のサブオペレーション、すなわち、スカラ送信(SEND)をサポートする。読み出しアドレスは、AID_Sフィールド内でアドレス計算ユニットによって指定される。命令のAINC_Sフィールドは、このアドレス計算ユニットがポストインクリメント演算を実行すべきかどうかを指定する。このようにして、第2のACUは間接的に制御可能である(第1のACUはベクトルサブオペレーションによって制御される)。スカラサブオペレーションのオペランドサイズ(WORD、DWORDまたはQWORD)は命令のSIZEフィールドによって決定される。
Figure 0004624098
VMUのスカラ受信サブオペレーションは命令のSRCVフィールドにエンコードされる。SRCVの値がNONEであるならば、スカラ受信は実行されない。さもなければ、命令のSRCVフィールドは、どの機能ユニットがスカラ受信のソースとして使用されるかを決定する。書き込みアドレスはAID_Rフィールドで指定されたアドレス計算ユニットによって指定される。このようにして、第3のACUは間接的に制御可能である。命令のAINC_Rフィールドは、このアドレス計算ユニットがポストインクリメント演算を実行すべきかどうかを指定する。スカラ受信サブオペレーションのオペランドサイズ(WORD、DWORDまたはQWORD)はソーススカラのサイズによって決定される。
Figure 0004624098
送信および受信サブオペレーションは、一方のVMロケーションから別のVMロケーションへのスカラ移動オペレーションに組み込むことができる。各アクセスのアドレスは対応したアドレス計算ユニットによって指定される。
上述のように、このようにしてACUのそれぞれは、ベクトル、スカラ送信およびスカラ受信のVMUサブオペレーションの何れかに固定的に割り当てられることができる。このように、3個のACUが各命令で動作させられ得る。衝突を回避するため、各ACUがこれらのVMUサブオペレーションのうちの一つだけのために使用されるように、すなわち、AID_V≠AID_S≠AID_Rと制限される。当業者は、必要に応じて4個以上のACUをサポートするため、または、ACUとACUレジスタセットとの間でその他のコンフィギュレーションをサポートするために命令および基礎となるハードウェアを調整することができる。たとえば、レジスタセットがACUに固定的に割り当てられていない場合、命令は使用されるセットの識別情報も伝達する。
ACUサブオペレーションは、VMU制御セクションによって与えられ、VMU命令のAOPCフィールドにエンコードされる。ACUサブオペレーションは、ACUの出力を直接アドレス値(IMM)にセットするために1個のサブオペレーションをサポートし、直接アドレスをACUレジスタのうちの一つへロードするため4個のサブオペレーション(LDBASE,LDOFFS,LDINCR,LDBOUND)をサポートする。直接アドレッシングの目的は、規則的なアドレッシングを回避し、命令から直接的にアドレスを「素早く」取り出すことである。この直接アドレッシングは、特に、シングルワードをロードするため有効である。対応した直接アドレスはIMM_ADDRフィールドでエンコードされる。AID_Aフィールドは、AOPCサブオペレーションによって影響されるACUを指定し、VMU命令からのAOPCフィールドおよびIMM_ADDRフィールドはこの特定のACUへ直接伝達され、他のすべてのACUのAOPCフィールドにはノーオペレーション(NOP)がセットされる。
アドレス計算ユニット(ACU)は、単一ACUオペレーション中に二つの「サブオペレーション」、すなわち、ポストインクリメントサブオペレーションと、直接アドレス操作サブオペレーションをサポートすることができる。
Figure 0004624098
ポストインクリメントサブオペレーションは命令のAINCフィールドにエンコードされる。ポストインクリメントサブオペレーションは唯一のサブオペレーション、すなわち、ポストインクリメント(INC)だけをサポートする。このサブオペレーションは、過剰な明示的アドレス計算命令を回避するため使用される。
Figure 0004624098
直接アドレス操作サブオペレーションは命令のAOPCフィールドにエンコードされる。このサブオペレーションは、直接アドレス(IMM)を出力するための1個のサブオペレーションと、直接アドレスをACUレジスタ(LDBASE, LDOFFS, LDINCR, LDBOUND)のうちの一つへロードするため4個のサブオペレーションをサポートする。直接アドレスは命令のIMM_ADDRフィールドにエンコードされる。
Figure 0004624098
ACUの入力/出力は以下の通りである。
Figure 0004624098
Figure 0004624098
好適な実施形態において、ベクトルはメモリ内でベクトル境界と揃える必要がない。したがって、P個のワードにより構成されたベクトルは任意のメモリアドレスを取り得る。メモリラインは同じサイズをもつが、そのスタートアドレスは、定義上、Pの倍数である。(ラインアクセスに関して、アドレスの最下位のlogPビットは無視される。)ベクトルの任意の配列(代表的に、最小ワード境界に基づく配列)を可能にすることによって、メモリは、空のロケーションが減少するので、より有効に利用可能である。スカラ/ベクトルプロセッサが個々のベクトルを読み出し/書き込みすることを可能にさせ、一方、ベクトルが物理メモリの二つの連続したラインに格納される手段を採用してもよい。好ましくは、スカラデータはベクトルデータをストアするため使用されたメモリと同じメモリに格納される。このようなシステムにおいて、スカラは、スカラに対応するベクトルと混合可能である。費用効率およびメモリアクセス時間の最適化のために、メモリは、好ましくは、ベクトルライン全体の読み出しおよび書き込みだけを許可する。したがって、論理的に、物理メモリはラインにより構成され、各ラインはベクトルのサイズからなる。スカラの読み出しおよび書き込みをサポートするため、付加的なハードウェア(ラインキャッシュ430と、ライン内のスカラ選択のための補助手段440)が、スカラ形式でベクトル幅の物理メモリをアクセスするため使用される。
尚、以上の実施形態は本発明を限定するのではなく例示するものであり、当業者は請求項に記載された事項の権利範囲を逸脱することなく多くの代替的な実施形態を設計可能であることに注意すべきである。請求項において、括弧内に記載された参照符号は請求項を限定する事項として解釈されるべきでない。「備える(comprising)」、「含む(including)」のような用語は、請求項に列挙されていないその他の要素若しくはステップが存在することを排除しない。
本発明に従ったスカラ/ベクトルプロセッサが使用され得る好ましい一構造を表す。 本発明によるスカラ/ベクトルプロセッサの主要な構造を示す。 複数のデータ幅およびデータタイプのサポートを示す。 ベクタメモリユニットのブロック図。 1つのベクタレジスタへの2セットのACUレジスタのマッピングを示す。 ACUとACUレジスタセットとの間の固定された関係を示す。 ACUとACUレジスタセットとの間の設定可能な関係を示す。

Claims (11)

  1. アドレスの制御下で物理メモリにアクセスするメモリポートと、
    前記メモリに格納された命令を実行する、および/または、前記メモリに格納されたデータを処理する少なくとも一つの処理ユニットと、
    前記メモリへのアクセスを制御するアドレスを発生する少なくとも一つのアドレス発生ユニットであって、複数のN個のレジスタからなる少なくとも第1のレジスタセットと関連付けられ、前記レジスタセットによってアドレス発生メカニズムの制御下で前記アドレスを発生することができるアドレス発生ユニットと、
    2<=k<=Nが成り立つとき、1オペレーションによってトリガーされ、アドレス発生に用いられる前記N個のレジスタのうちのk個のレジスタをセーブ/ロードするために動作するメモリユニットであって、前記k個のレジスタを、前記メモリポートを介して前記メモリへ書き込まれる1メモリワードに連結する連結部、および、前記メモリポートを介して前記メモリから読み出されたワードを前記k個のレジスタに分離するスプリッタを備えたメモリユニットと、
    を含んだプロセッサであって、
    当該プロセッサは、1プロセッサワードの最小サイズを有するオペランドを処理するために動作し、
    前記メモリワードが、前記プロセッサワードのサイズの倍数の幅を有し、
    当該プロセッサによるレジスタの直接変更ができるようにするために、前記連結部が、前記レジスタを、前記プロセッサワードに対応する前記メモリの境界に、マッピングするように動作する、
    ことを特徴とするプロセッサ。
  2. 前記メモリユニットが前記メモリの1回の書き込み/読み出しサイクルで前記セーブ/ロードを実行するために動作することを特徴とする請求項1に記載のプロセッサ。
  3. k=Nであることを特徴とする請求項1に記載のプロセッサ。
  4. アドレス発生ユニットがアドレス発生メカニズムの制御下でアドレスを発生可能とする複数のレジスタからなる少なくとも一つの他のレジスタセットを含み、
    前記連結部が、前記他のレジスタセットのうちの少なくとも一つの他のレジスタを、前記メモリポートを介して前記メモリへ書き込まれる前記1メモリワードに連結し、前記スプリッタが、前記メモリポートを介して前記メモリから読み出されたワードを、前記第1のレジスタセットのうちのそれぞれの前記k個のレジスタと、前記少なくとも一つの他のレジスタセットのうちの少なくとも一つの他のレジスタとに分離するために動作することを特徴とする請求項1から請求項3のいずれかに記載のプロセッサ。
  5. 少なくとも二つのアドレス発生ユニットを含み、各アドレス発生ユニットが前記メモリへのアクセスを制御するアドレスを発生し、前記アドレス発生ユニットのそれぞれが複数のレジスタからなる前記レジスタセットのうちの対応した一つのレジスタセットに関連付けられていることを特徴とする請求項4に記載のプロセッサ。
  6. 前記アドレス発生ユニットが少なくとも二つのレジスタセットに選択的に接続可能であり、それぞれのレジスタセットが前記アドレス発生ユニットにアドレス発生メカニズムの制御下で対応したアドレスを発生させることを可能とすることを特徴とする請求項4に記載のプロセッサ。
  7. 前記連結部が、少なくとも二つのレジスタセットのうちのすべてのそれぞれの関連付けられたレジスタを、前記メモリポートを介して前記メモリへ書き込まれる1メモリワードに連結するために動作し、前記スプリッタが前記メモリポートを介して前記メモリから読み出されたワードを、前記少なくとも二つのレジスタセットのうちのすべての前記それぞれの関連付けられたレジスタに分離するために動作することを特徴とする請求項3または請求項4に記載のプロセッサ。
  8. 前記プロセッサは、各前記レジスタを1オペレーションでセーブまたは格納する必要がある個々のレジスタセットを選択可能であり、
    前記メモリユニットは、前記選択されたレジスタセットに対する1メモリワードに連結するため、あるいは、当該メモリワードから分離するために動作することを特徴とする請求項4または請求項5に記載のプロセッサ。
  9. 複数のM個のデータ要素を並列に処理するように動作し、
    前記物理メモリが前記M個のデータ要素を格納するための幅を有することを特徴とする請求項1に記載のプロセッサ。
  10. 前記個々のレジスタは、前記メモリの標準的なデータサイズに対応したワード境界に基づいて、さらに揃えられている、ことを特徴とする請求項1に記載のプロセッサ。
  11. 前記標準的なデータサイズは、シングルワード、ダブルワード、又は、クワッドワードのいずれか1つである、ことを特徴とする請求項10に記載のプロセッサ。
JP2004507987A 2002-05-24 2003-05-07 プロセッサのアドレス発生ユニット Expired - Lifetime JP4624098B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP02077034 2002-05-24
EP02078619 2002-09-04
PCT/IB2003/001892 WO2003100600A2 (en) 2002-05-24 2003-05-07 An address generation unit for a processor

Publications (2)

Publication Number Publication Date
JP2005527036A JP2005527036A (ja) 2005-09-08
JP4624098B2 true JP4624098B2 (ja) 2011-02-02

Family

ID=29585703

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004507987A Expired - Lifetime JP4624098B2 (ja) 2002-05-24 2003-05-07 プロセッサのアドレス発生ユニット

Country Status (7)

Country Link
US (1) US7383419B2 (ja)
EP (1) EP1512069B1 (ja)
JP (1) JP4624098B2 (ja)
CN (1) CN1666174B (ja)
AU (1) AU2003222412A1 (ja)
TW (1) TW200404205A (ja)
WO (1) WO2003100600A2 (ja)

Families Citing this family (20)

* 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
US20060277318A1 (en) * 2004-07-09 2006-12-07 Luc Julia System and method for extending communications with a device network
US8738693B2 (en) * 2004-07-09 2014-05-27 Qualcomm Incorporated System and method for managing distribution of media files
US8195744B2 (en) * 2004-07-09 2012-06-05 Orb Networks, Inc. File sharing system for use with a network
US8787164B2 (en) * 2004-07-09 2014-07-22 Qualcomm Incorporated Media delivery system and method for transporting media to desired target devices
US8819140B2 (en) 2004-07-09 2014-08-26 Qualcomm Incorporated System and method for enabling the establishment and use of a personal network
US7937484B2 (en) * 2004-07-09 2011-05-03 Orb Networks, Inc. System and method for remotely controlling network resources
US9077766B2 (en) * 2004-07-09 2015-07-07 Qualcomm Incorporated System and method for combining memory resources for use on a personal network
EP1873627B1 (en) * 2006-06-28 2009-05-27 STMicroelectronics S.r.l. A clustered SIMD processor architecture
US8973072B2 (en) * 2006-10-19 2015-03-03 Qualcomm Connected Experiences, Inc. System and method for programmatic link generation with media delivery
US20100141668A1 (en) * 2006-10-26 2010-06-10 Nxp, B.V. Address calculation unit
US7725745B2 (en) * 2006-12-19 2010-05-25 Intel Corporation Power aware software pipelining for hardware accelerators
EP1936493A1 (en) * 2006-12-22 2008-06-25 Telefonaktiebolaget LM Ericsson (publ) Data-processing unit
US7882325B2 (en) * 2007-12-21 2011-02-01 Intel Corporation Method and apparatus for a double width load using a single width load port
US9390539B2 (en) * 2009-11-04 2016-07-12 Intel Corporation Performing parallel shading operations
US8892853B2 (en) 2010-06-10 2014-11-18 Mobileye Technologies Limited Hardware to support looping code in an image processing system
EP2395472B1 (en) * 2010-06-11 2019-05-01 Mobileye Vision Technologies Ltd. Image processing system and address generator therefor
CN104025039B (zh) 2011-12-22 2018-05-08 英特尔公司 打包数据操作掩码串接处理器、方法、系统及指令
US9256480B2 (en) 2012-07-25 2016-02-09 Mobileye Vision Technologies Ltd. Computer architecture with a hardware accumulator reset
CN112540793A (zh) * 2020-12-18 2021-03-23 清华大学 支持多访存模式的可重构处理单元阵列及控制方法、装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5913054A (en) * 1996-12-16 1999-06-15 International Business Machines Corporation Method and system for processing a multiple-register instruction that permit multiple data words to be written in a single processor cycle
US6041387A (en) * 1997-09-12 2000-03-21 Siemens Aktiengesellschaft Apparatus for read/write-access to registers having register file architecture in a central processing unit
US6260137B1 (en) * 1997-09-12 2001-07-10 Siemens Aktiengesellschaft Data processing unit with digital signal processing capabilities
US6356994B1 (en) 1998-07-09 2002-03-12 Bops, Incorporated Methods and apparatus for instruction addressing in indirect VLIW processors
US6363470B1 (en) * 1998-10-06 2002-03-26 Texas Instruments Incorporated Circular buffer management
US6349380B1 (en) * 1999-03-12 2002-02-19 Intel Corporation Linear address extension and mapping to physical memory using 4 and 8 byte page table entries in a 32-bit microprocessor
DE19948100A1 (de) * 1999-10-06 2001-04-12 Infineon Technologies Ag Prozessorsystem

Also Published As

Publication number Publication date
EP1512069A2 (en) 2005-03-09
US20060010255A1 (en) 2006-01-12
US7383419B2 (en) 2008-06-03
CN1666174A (zh) 2005-09-07
TW200404205A (en) 2004-03-16
CN1666174B (zh) 2010-05-05
WO2003100600A2 (en) 2003-12-04
AU2003222412A1 (en) 2003-12-12
JP2005527036A (ja) 2005-09-08
WO2003100600A3 (en) 2004-08-19
EP1512069B1 (en) 2020-12-09

Similar Documents

Publication Publication Date Title
JP4624098B2 (ja) プロセッサのアドレス発生ユニット
JP4339245B2 (ja) スカラー/ベクトルプロセッサ
US8181003B2 (en) Instruction set design, control and communication in programmable microprocessor cores and the like
US7430631B2 (en) Access to a wide memory
KR19980069855A (ko) 넓은 데이터 폭의 프로세서에서 다기능 데이타 정렬기
JP2001256105A (ja) 非整列循環アドレス指定を用いるマイクロプロセッサ
JPH11212786A (ja) レジスタベースデータ処理のためのデータパスおよび方法
US20240028338A1 (en) Histogram operation
CN108139911B (zh) 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格
WO2019133258A1 (en) Look up table with data element promotion
WO2004004191A2 (en) Digital signal processor with cascaded simd organization
US20240004663A1 (en) Processing device with vector transformation execution
JP2003501773A (ja) 算術論理演算装置およびスタックを備えたデータプロセッサ
US20230221955A1 (en) Vector bit transpose
US20200371793A1 (en) Vector store using bit-reversed order
WO2011105408A1 (ja) Simdプロセッサ
Van Berkel et al. Address generation unit for a processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060508

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20080612

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090622

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090626

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090928

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091005

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091019

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100528

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100830

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100901

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100906

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: 20101005

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: 20101102

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4624098

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20131112

Year of fee payment: 3

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

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

EXPY Cancellation because of completion of term