JP2005527035A - 幅の広いメモリへのアクセス - Google Patents

幅の広いメモリへのアクセス Download PDF

Info

Publication number
JP2005527035A
JP2005527035A JP2004507986A JP2004507986A JP2005527035A JP 2005527035 A JP2005527035 A JP 2005527035A JP 2004507986 A JP2004507986 A JP 2004507986A JP 2004507986 A JP2004507986 A JP 2004507986A JP 2005527035 A JP2005527035 A JP 2005527035A
Authority
JP
Japan
Prior art keywords
data
register
memory
processing system
port
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004507986A
Other languages
English (en)
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of JP2005527035A publication Critical patent/JP2005527035A/ja
Pending 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/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
    • 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/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]

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)
  • Complex Calculations (AREA)
  • Saccharide Compounds (AREA)
  • Static Random-Access Memory (AREA)
  • Advance Control (AREA)
  • Image Input (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)

Abstract

処理システムは、プロセッサと、物理メモリ内のデータにアクセスするための単一の大きさのメモリポート(505)を有する上記物理メモリ(500)とを有する。上記プロセッサは、少なくとも第1のデータサイズおよびそれよりも小さな第2のデータサイズのデータに対して演算を行うように配列されている。上記第1のデータサイズは、メモリポートの大きさと同等かまたはそれよりも小さい。上記処理システムは、上記メモリポート(505)に接続された上記第1のデータサイズの少なくとも1つのデータレジスタ(514)と、データレジスタ(525)および上記プロセッサに接続されて第2のサイズのデータ要素へのアクセスを可能とする上記第2のデータサイズの少なくとも1つのデータポート(525)とを備える。

Description

本発明は、処理システムに関する。
UMTS−FDD、UMTS−TDD、IS2000およびTD−SCDMA等の第3世代無線通信規格では、非常に高い周波数で演算を行う。UMTS等の第3世代移動通信規格のモデム(トランシーバ)は、GSMのおよそ100倍以上のデジタル信号処理能力を必要とする。異なる規格に対応することを可能とし且つ新たな規格に柔軟に適応することを可能とするために、プログラム可能なアーキテクチャを用いてこのような規格に対するトランシーバを実現することが望まれている。性能を向上させる方法として、メモリの1つのラインに複数のデータ要素(スカラ)を記憶させ、一度に二つ以上のデータ要素に対して演算を行う方法が知られている。このようなシステムは、例えばSIMD(単一命令、複数データ)またはMIMD(複数命令、複数データ)として知られている。ベクトルプロセッサはSIMDプロセッサの一例である。通常、幅の広いメモリは、メモリの少なくとも1つのラインの単位に対する読み出しおよび書き込みアクセスを可能とするポートを1つ有している。この例においては、メモリはベクトルを記憶するための線幅を有しており、1つ以上のベクトルを一度に読み出すことまたは書き込むことができる。ベクトルよりも小さな単位にアクセスするためには特に何も設けられていない。メモリを最適に使用するためには、効率良くメモリラインの全幅を有するデータ要素よりも小さなデータ要素にもアクセスすることが可能であることが望ましい。従来、このようなより小さなユニットをその一部が使用されていないメモリのラインに格納することができたが、記憶装置のコストを増大させていた。または、より小さなユニットを連鎖状に1つのラインに格納してもよいが、その場合にはライン全体の読み出しまたは書き込みを行う必要があり、さらなる処理命令およびサイクルで、メモリライン全体に対して所望のより小さなユニットを抽出または挿入する必要がある。このために性能が低下する。これらの問題は、メモリの幅がより小さなユニットの大きさを大きく越えた場合には一層重大なものとなる。例えば、音声認識の音声特徴ベクトルの成分を記憶するデータ要素の幅は通常、8から16ビットである。電話通信の場合、コード化/変調されたデータ要素は通常8ビット(または、複素数値では2×8ビット)である。この大きさを増す必要はない。さらに新しい電話通信システムまたはさらに高い音声認識性能に対しては、処理の速度を向上させることが望まれる。より幅の広いメモリを用いて処理速度を上げる場合、特別な手段を講じなければ、データを記憶するために必要とされるメモリの量が増大するか、または上述のようにある種のメモリアクセスの速度が落ちる可能性がある。
本発明の目的は、より小さなデータ要素に対しても幅の広いメモリへの高速メモリアクセスを提供することができるプロセッサアーキテクチャを提供することである。
この目的を達成するため、プロセッサと、物理メモリ内のデータにアクセスするための単一の大きさのメモリポートを有する前記物理メモリとを有する処理システムにおいて、前記プロセッサは、少なくとも第1のデータサイズおよびそれよりも小さな第2のデータサイズのデータに対して演算を行うように配列され、前記第1のデータサイズは、メモリポートの大きさと同等かまたはそれよりも小さく、前記処理システムは、前記メモリポートに接続された前記第1のデータサイズの少なくとも1つのデータレジスタと、前記データレジスタおよび前記プロセッサに接続されて第2のサイズのデータ要素へのアクセスを可能とする前記第2のデータサイズの少なくとも1つのデータポートとを備える。
このようにして、1つのワードサイズを有する従来のメモリを使用することができる。これによってメモリのコストが抑えられる。通常、メモリのワードサイズはプロセッサの最も大きなワードサイズに対応している。より小さなデータ要素にアクセスする場合は、中間レジスタが使用される。さらなるポートが付加され、レジスタ内のより小さなデータ要素へのアクセスを可能にしている。中間レジスタの使用は完全にトランスペアレントにすることができる。プロセッサコアおよびプログラマにとっては、メモリが大きさの異なるポートを有しているように見える。このようにして、より大きなデータ要素の一部であるより小さなデータ要素へアクセスするために、大きなデータ要素の選択および/またはシフト等の命令の費用を付加することなく小さなデータ要素に高速でアクセスすることができる。
従属請求項2に記載されているように、メモリポートの大きさは、前記第2のデータサイズの少なくとも2倍である。このようにして、レジスタは少なくとも2つの小さなデータ要素を記憶することができる。特に、小さなデータ要素が順次アクセスされる場合は、物理メモリへの1度のアクセスによって、少なくとも2つの連続したより小さなデータ要素への高速のアクセスが可能となる。これによって物理メモリへのアクセスで損失される時間が削減される。
従属請求項3に記載されているように、読み出しデータポートに対しては、読み出しアドレスの制御の下でデータレジスタから前記第2のデータサイズのデータ要素を選択して抽出するマルチプレクサが使用される。例えば、読み出しアドレスの最上位部分を使用してデータ要素が既にレジスタ内にあるかを確認することができ(さもなければ、この部分を用いて物理メモリからデータ要素を検索する)、最下位部分を用いてレジスタ内のデータ要素を選択することができる。
従属請求項4に記載されているように、書き込みデータポートに対しては、書き込みアドレスの制御の下でデータレジスタ内の選択可能な記憶場所で前記第2のデータサイズのデータ要素を挿入するデマルチプレクサが使用される。読み出しポートに関して説明した場合と同様に選択を行うことができる。
従属請求項5に記載されているように、前記処理システムは、前記プロセッサに接続された前記第2のデータサイズの複数のデータポートと、前記各データポートに対して、前記各データポートおよび前記物理メモリのポートに接続された関連したそれぞれのデータレジスタとを備えることができる。このようにして、データへアクセスする平均時間をさらに短縮することができる。例えば、アルゴリズムが2つの連続データストリームを処理する場合、各ストリームは前記レジスタおよびデータポートのいずれかを用いるようにしてもよい。その場合、各ストリームは、前記物理メモリへの1回のアクセスのみを利用して少なくとも2つの連続データ要素にアクセスすることができる。
従属請求項6に記載されているように、前記メモリ内および/または2つ以上のレジスタ内のデータの「コピー」を含むレジスタによって引き起こされる可能性のある整合性の競合に対するチェックが行われる。このシステムはレジスタ内のデータを更新された状態に維持することが可能であるため、小さなデータ要素の更新によって必ずしも物理メモリへの書き込み動作が行われるわけではない。さらに、更新された小さなデータ要素をレジスタから直接読み出すことも可能であるため、メモリへのアクセス時間もさらに節約される。書き込みデータポート(またそのため、書き込みアクセスを可能とする関連するレジスタ)に対しては、前記プロセッサは前記レジスタに格納されているデータに関する情報をさらなる整合性レジスタに格納する。このデータを用いて、(物理メモリまたはレジスタの1つから)読み出し中のデータが変更された(が、メモリまたは読み出しレジスタに対してまだ更新されていない可能性のある)データにアクセスしているかを確認する。識別情報は物理メモリ内のワードにアクセスするための物理アドレスであり、前記ワードはメモリポートの幅を有していることが好ましい。このようにして、物理メモリへの直接のアクセスがレジスタに格納されたデータと競合している可能性がないかを確認することが容易となる。
従属請求項8に記載されているように、可干渉性チェッカは、整合性の競合の可能性の検出に応じて補正ステップを行う競合解消装置を含む。このようにして、プログラマはプログラムの設計中にこのような手段を講ずる必要から開放される。従属請求項9に記載されているように、補正ステップを行う1つの方法としては、読み出しアクセスに対して無効とするようにデータレジスタにマークを付け、データレジスタへの読み出しアクセスに応答してメモリからデータレジスタの内容を再ロードする。
または、従属請求項10に記載されているように、可干渉性チェッカは各データレジスタ内に格納されたデータを識別する情報を格納するための可干渉性レジスタをデータレジスタ毎に含み、コレクタは、データレジスタの1つへの書き込みアクセスおよび/または物理メモリへの書き込みアクセスに応答して、データレジスタまたはメモリに書き込まれた内容を他のすべてのデータレジスタ、および/または識別情報に従って同一のデータを記憶しているメモリの記憶場所へコピーすることによって補正ステップを行うように配列されている。この実施の形態においては、更新されたデータは、可干渉性レジスタに基づいて同一のデータを記憶するすべてのレジスタにコピーされる。物理メモリへの直接のアクセスが許可されない場合、データは物理メモリへコピーされない。大きなデータ要素に対する物理メモリへの直接のアクセスは中間レジスタを介しても行われ、その場合、レジスタへの書き込みによってメモリへの書き込みアクセスを自動的に必要とすることはない。
従属請求項11に記載されているように、データレジスタの少なくとも1つ(以下「読み出しレジスタ」)は読み出しデータポートに接続され、前記データレジスタの少なくとも1つ(以下「書き込みレジスタ」)は書き込みデータポートに接続され、前記プロセッサは、書き込みレジスタから読み出しデータポートへデータを選択可能に供給するバイパス経路を備え、可干渉性チェッカは、関連するデータレジスタに格納されたデータを識別する情報を記憶するための可干渉性レジスタをデータレジスタ毎に含み、競合解消装置は、読み出しレジスタが前記識別情報に基づいて同一のデータ要素を記憶している場合は、書き込みレジスタへのデータの書き込みに応答して、読み出しレジスタへの連続的な読み出しアクセスを行うバイパス経路を作動させることによって補正ステップを行うように配列されている。バイパスを用いることによって、同一の内容を有する書き込みレジスタが更新されるとすぐに読み出しレジスタが再ロードされる必要はない。その代わり、データは更新された書き込みレジスタから直接読み出される。このようにして、物理メモリへのアクセスは少なく抑えられる。書き込みレジスタにアクセスする際に遅延が発生する場合もある。
物理メモリは費用効率の良い単一ポート型のSRAMに基づいていることが好ましい。費用効率の良い幅の広い物理メモリを得るため、1つのメモリワードに多くの小さなデータ要素を格納できるように、平行に配列された複数のRAMの列によって形成された物理メモリを使用することが好ましい。メモリはプロセッサの中に埋め込むことが好ましい。
上述のアーキテクチャをスカラ/ベクトルプロセッサに有利に用いることができ、ベクトルセクションは第1のデータサイズのベクトルに対して演算を行い、スカラセクションは第2のデータサイズのスカラに対して演算を行い、第1のデータ幅は第2のデータ幅の少なくとも2倍である。このような配列において、同一のメモリをベクトルおよびスカラを格納するために使用することができる。それにより、ベクトルの要素に対してスカラ演算を行うことも容易になる。
本発明のこれらおよび他の態様は、以下に説明される実施の形態を参照することで明らかとなるであろう。
信号処理に対して最適化されたプロセッサにおいて、アドレス発生ユニット(AGU)およびメモリユニットを使用することが好ましい。このようなプロセッサは、DSPまたはどのような他の適切なプロセッサ/マイクロコントローラであってもよい。説明の残りでは、これらのユニットを高性能のスカラ/ベクトルプロセッサに使用した場合について記載する。このようなプロセッサを、独立してまたは他のプロセッサと組み合わせて使用してもよい。図1は、スカラ/ベクトルプロセッサを使用してもよい好ましい構成を示している。この構成において、3つの主要な構成要素がバス110を介して接続されている。これら3つの構成要素を接続しているバス110は、例えばAMBA高速バス(AHB)等のどのような適切なバスであってもよい。これらの主要な構成要素は、
機能ユニットおよびローカルデータメモリ(図1ではベクトルメモリと呼ぶ)を備えるプログラム可能なスカラ/ベクトルプロセッサ120と、
限定されたオンチッププログラムおよびデータメモリを含むマイクロコントローラまたはDSPサブシステム130と、
インタフェースブロック140と、である。
スカラ/ベクトルプロセッサ120は、通常の重い/負荷処理、特に内側ループの処理に主に使用される。スカラ/ベクトルプロセッサはベクトル処理機能性を含む。従って、実行されるコードのベクトル化可能な部分に大規模な並列性が与えられる。すべての信号処理の大部分は、スカラ/ベクトルプロセッサのベクトルセクションによって実行される。同一の命令を実行する例えば32個の同一の処理要素のアレイを用いると、大規模な並列性が与えられる。これを32ワードの幅の広いメモリインタフェースと組み合わせると、低コストで消費電力の抑えられた前例のないプログラム可能な性能レベルとなる。しかし、多くのアルゴリズムは正しい形式の十分なデータ並列性を示さないため、この並列性を完全に利用することは必ずしも実現可能なことではない。アムダールの法則によると、コードの直接ベクトル化可能な部分をベクトル化した後は、ほとんどの時間が残りのコードに費やされる。残りのコードは以下の4つのカテゴリに分けることができる。
アドレス関連の命令(例えば、ポインタを環状バッファにインクリメントすること、モジュロアドレス指定の利用すること)
通常のスカラ演算(即ち、ベクトルプロセッサのメインループに対応するスカラ演算
ルーピング
変則的なスカラ演算
これらの各カテゴリのコードの割合は実行されるアルゴリズムに大きく依存する。例えば、(P−SCH検索に使用される)Golay相関器は多くのアドレス関連命令を必要とするが、これはRake等の他のアルゴリズムには当てはまらない。本発明によるAGU/メモリユニットを用いることによって、アドレス関連命令およびルーピングの性能を最適化することができる。スカラおよびベクトル処理を1つのプロセッサに緊密に統合することによって通常のスカラ演算の動作を最適化することができる。本発明者らによる第3世代モデムに関連したすべてのアルゴリズムの研究によって、変則的なスカラ演算の割合は非常に限定されていることが明らかとなった。この特性によって、スカラ/ベクトルプロセッサ120とマイクロコントローラまたはDSP130との間のタスクを分離することが可能となり、別個のマイクロコントローラまたはDSP130は変則的なタスクを行い、好ましくはスカラ/ベクトルプロセッサの制御も行う。この好ましい構成において、スカラ/ベクトルプロセッサ120は、プログラム可能なコプロセッサ(後にCVP、コベクトルプロセッサとも呼ばれる)としての機能を果たす。スカラ/ベクトルプロセッサ120とマイクロコントローラ130との間のインタフェースは(例えば、共有メモリによる)通信および(例えば、共有メモリおよびステータス信号による)同期化を処理する。このインタフェースに対してはメモリマッピングを行うことが好ましい。
インタフェースブロック140は、プロセッサがシステムの残りの部分と相互に作用することを可能とする。好ましい実施の形態においては、スカラ/ベクトルプロセッサは第2世代/第3世代の携帯ネットワークのためのソフトウェアモデム(トランシーバ)として使用される。このようなソフトウェアモデム機能のために、インタフェースブロック140は、マイクロコントローラ130の制御の下で、例えばDMA等のベクトルメモリに制御およびデータワードを送ることを主なタスクとして、フロントエンドとしての専用ハードウェアを含んでもよい。その場合、ベクトルメモリ内のデータはスカラ/ベクトルプロセッサによって処理される。
スカラ/ベクトルプロセッサ120はバス110のスレーブであってよく、マイクロコントローラ130および(DMAユニットを含んでもよい)インタフェースブロック140はマスタとしての機能を果たしてもよい。プログラム、データまたは制御であれCVPとのすべての通信に対してメモリマッピングを行うことが好ましい。メモリはオフチップDRAMであってよく、このDRAMはスカラ/ベクトルプロセッサによって(デインターリーブ)インターリーブメモリとして用いられてもよい。
本明細書においては、「アドレス計算ユニット」またはACUという語句が主に使用される。便宜上、これを「アドレス発生ユニット」またはAGUと同一のものと見なす。本明細書では、このようなユニットをデータアドレスの計算に使用することに焦点を当てる。当業者は、同一の機能性を命令アドレス(「ループ制御」)の計算に使用することもできるであろう。
図2は、本発明によるプロセッサの主構造を示している。このプロセッサはパイプライン型ベクトル処理セクション210を備える。このベクトルセクションの動作に対応するため、スカラ/ベクトルプロセッサは、ベクトルセクションと並列して動作するように配列されたスカラ処理セクション220を備える。このスカラ処理セクションもパイプライン型であることが好ましい。ベクトルセクションの動作に対応するため、ベクトルセクションの少なくとも1つの機能ユニットもスカラセクションの対応する部分の機能性を提供する。例えば、シフト機能ユニットのベクトルセクションは機能的にベクトルをシフトしてもよく、スカラ成分がシフト機能ユニットのスカラセクションによって供給される(またはそれに供給される)。そのため、シフト機能ユニットはベクトルおよびスカラセクションの両方をカバーする。従って、少なくともいくつかの機能ユニットはベクトルセクションを有しているだけでなくスカラセクションも有しており、ベクトルセクションおよびスカラセクションはスカラデータを交換することによって協働する。機能ユニットのベクトルセクションは未加工の処理電力を供給し、対応するスカラセクション(即ち、同一の機能ユニットのスカラセクション)は、スカラデータを供給および/または消費することによってベクトルセクションの動作をサポートする。ベクトルセクションに対するベクトルデータはベクトルパイプラインを介して供給される。
図2の好ましい実施の形態において、スカラ/ベクトルプロセッサは以下の7つの特殊化された機能ユニットを備える。
命令配信ユニット(IDU250)。IDUはプログラムメモリ252を含み、連続VLIW命令を読み出して各命令の7つの部分を7つの機能ユニットへ配信する。これは、ゼロオーバーヘッドルーピングの3つの入れ子にされたレベルまでをサポートするループユニットを含むことが好ましい。好ましい実施の形態において、ブランチ、ジャンプおよび割込みはサポートしない。イニシャルプログラムカウンタが以下により詳細に説明される割当記述子からロードされる。
ベクトルメモリユニット(VMU260)。VMUはベクトルメモリ(図2には示さず)を含む。各命令の間、ラインまたはベクトルをベクトルメモリから送信するかベクトルメモリ内に受信することができる。さらに、同一の命令によってスカラ送信動作および/または受信動作を指定するようにしてもよい。VMUは外界、即ち外部バス110に接続された唯一の機能ユニットである。
コード発生ユニット(CGU262)。CGUは有限フィールド算術を専門とする。例えば、CDMAコードチップ、およびチャンネルコーディングおよびCRC等の関連する機能のベクトルを発生させるためにCGUを使用することができる。
ALU−MACユニット(AMU264)。AMUは通常の整数および固定小数点演算を専門とする。これはベクトル間演算をサポートし、複数のベクトルに対して要素の観点から演算が行われる。好ましい実施の形態において、AMUもいくつかのベクトル内演算を行い、要素に対して単一のベクトル内で演算が行われる。
シャッフルユニット(SFU266)。SFUは指定されたシャッフルパターンに基づいてベクトルの要素を再配列する。
左シフトユニット(SLU268)。SLUは、ベクトルの要素を1ワード、2ワードまたは4ワード等の単位で左に移動させることができる。発生したスカラはそのスカラセクションに与えられる。発行されたSLUベクトル演算の種類によって、消費されたスカラはゼロとなるか、またはそのスカラセクションから取られる。
右シフトユニット(SRU270)。SRUはSLUと同様であるが、右にシフトする。さらに、これはAMU上でのベクトル内演算からの連続的な結果を融合させる能力を有する。
以下の表は、すべてのFUは機能ベクトルセクション210を有し、いくつかは制御セクション230またはスカラセクション220を有していないことを示している。
Figure 2005527035
本発明によるスカラ/ベクトルプロセッサは以下の2つの主要な方法で命令レベル並列性を適用する。
ベクトル処理の場合、単一の命令によって(スカラ)データのベクトルに対して演算を行う。この方法は、単一命令ストリーム、複数データストリームまたはSIMDとしても知られている。複数の機能ユニットの並列処理の場合、各々がベクトルを演算する。これを、VLIW命令レベル並列性の(限定された)形式と見ることができる。
これら2つの命令レベル並列性の形態は独立したものであり、その効果は累積することに留意されたい。
FU間通信
機能ユニット(FU)は並列して動作する。各FUは、ベクトルデータの受信および送信が可能である。多くのFUはスカラデータの受信および送信も可能である。
Figure 2005527035
すべての機能ユニットは並列して動作する。命令の機能ユニットのセグメントを受信すると、機能ユニットはベクトルデータ、および適用可能であればスカラデータの両方を入力、処理および出力する。FUの間では、通信は厳密にスカラセクション間またはベクトルセクション間とされる(FU間通信)。即ち、IDUを除くすべてのFUのベクトルセクションはパイプラインによって接続されている。好ましい実施の形態において、このパイプラインは命令に基づいて構成可能である。この目的のため、FUは相互接続ネットワークによって相互接続され、原則として、各ベクトルが各サイクルの間に他のベクトルセクションのいずれかからベクトルを受信することを可能とする。この特徴によって、特に(IDUを除く)FUの任意のパイプラインの作成が可能となる。ベクトル経路に貢献する機能ユニットのうちの6つはベクトルを出力して、それを各クロックサイクルの間に平行して他のユニットへ送信することができる。これらは他のユニットからベクトルを受信することもできる。ネットワークはほぼ完全に接続されている。意味のない他のリンクは省略されている。AMUは2つのベクトルを同時に受信することができる。図2に示されているように、ネットワークは、1つのネットワーク経路へ単一のソース(ディスクとして示されている)として接続されている各FUによって形成されることが好ましい。これは、(三角で示される)信号シンクとして他のすべての経路に接続されている。FUに対するVLIW命令のセクションは、どの経路からベクトルを消費すべきかを示す。このようにして、命令に基づいてパイプラインを構成することができる。各経路は、例えば256本の平行な配線を用いて完全なベクトルを転送することができる。同様に、FUのスカラセクションの少なくともいくつかは別個のパイプラインによって接続されている。このパイプラインも命令に基づいて構成可能であることが好ましい。FUのスカラセクション間の相互接続ネットワークは、スカラを少なくとも1つのFUのスカラセクションへ送信またはそれから受信することができないという意味において部分的なものとすることができる。従って、より少ないパイプラインの順序付けを指定することができる。スカラおよびベクトルパイプラインを独立して構成することができる。例えば、機能ユニットによって読み出されるスカラパイプラインおよびベクトルパイプラインの両方を関連するVLIWセクションにおいて示すことによってである。
異なる機能ユニットの制御セクションの間で指定される接続性はない。これらの制御セクションはIDUからVLIW命令のセグメントを受信し、自身の状態を更新し、それらの各スカラおよびベクトルセクションを制御する。
FU内通信
FU内では、これらのセクションの間で密接な相互作用(FU内通信)がある。相互作用は、FUの動作の一体的な部分である。例としてはSLUおよびSRUであり、発生したおよび/または消費されたスカラはFUの対応するスカラセクションへ供給されるか、またはそれから取られる。
命令は通常単一のサイクルで実行される。例外はベクトルメモリでの混雑によって引き起こされ、ストールサイクルとして現れる。
データ幅
好ましい実施の形態において、スカラ/ベクトルプロセッサは図3に示されるような複数のデータ幅およびデータタイプに対応する。メモリアドレス指定の基本単位は単一のワードとも呼ばれるワードである。データ幅は、単一のワード(W)、2ワード(DW、または2W=16ビット)、または4ワード(QW、または4W=32ビット)とすることが好ましい。ワードの大きさはW=8ビットである。スカラは、(単一の)ワード、2ワードまたは4ワードの3つのサイズとすることが好ましい。ベクトルはP4ワードワードの固定された大きさである。これは、好ましくは以下の3つのフォーマットのいずれかで構成されることが可能である。
4ワードの大きさのP要素
2ワードの大きさのP=2P要素
(単一)ワードの大きさのP=2P=4P要素
ベクトル要素指標付け範囲は[0...4P−1]である。従って、2ワードは偶数の指標を有し、4ワードの指標は4の倍数である。図3はデータサイズの概要を示している。このアーキテクチャはPでは完全に測定可能であり、どのようなベクトルの大きさP≧1に対しても定義される。しかし、ほとんどの場合、Pには2の累乗を選択することが好ましい。好ましい実施の形態において、Pは8であり、データ経路幅および32ワードのメモリ幅を示している。
命令
CVP命令は制御命令またはVLIW命令のいずれかである。制御命令は、例えばゼロオーバーヘッドループ初期化であってよい。ブランチ、ジャンプまたはサブルーチンはない。VLIW命令はセグメントに区切られ、各命令セグメントは対応する機能ユニットによって行われる演算を指定する。セグメントはさらに一部がベクトルセクション、および(存在する場合は)スカラセクションに対して細分される。セグメントは両方の部分に対して、どのネットワーク部を用いてデータ(ベクトルセクションに対する一つ以上のベクトルおよびスカラセクションに対する一つ以上のスカラ)を受信するかに関する情報も含む。
スカラ/ベクトルプロセッサの状態
CVPの状態はその機能ユニットの組み合わされた状態である。好ましい実施の形態において、これは
ベクトルメモリ(VMUの一部)と、
プログラムメモリ(IDUの一部)と、
ベクトルレジスタ(すべての機能ユニット)と、
スカラレジスタ(ほとんどの機能ユニット)と、
プログラムカウンタを含む制御レジスタおよびアドレスオフセットレジスタと、を備える。
プログラマに見えるレジスタに加えて、CVPの実現は通常、パイプラインおよびキャッシュためのさらなるレジスタ(ベクトル、スカラおよび制御)を含む。これらは、CVP命令設定アーキテクチャの一部ではない。
(ベクトル、スカラおよび制御)レジスタのいくつかはいわゆる構成レジスタである。構成レジスタの内容はベクトルメモリからのみロードすることができ、その値を変更する他の方法はない。構成レジスタは機能ユニットの構成に対応し、通常は機能パラメータを定義する。構成レジスタにこれらの「半一定」の機能パラメータを格納することによって、命令幅およびメモリトラヒックの両方が大幅に減少する。
CVP状態の成分の概要は以下の表に示されている。
Figure 2005527035
プログラマに見えるすべてのレジスタはベクトルメモリからロードすることができる。構成レジスタを除くすべてのレジスタをベクトルメモリ内に残すことができる。割当の最後にCVPレジスタを残しておき、それらを後に復元することによって、その間に他の割当は行われなかったかのようにCVPは特定のタスクを継続することができる。これらの保存および復元作業は任意のものであり、部分的であってよく、明示的にプログラムされなければならない。
メモリユニット
図4は、本発明によるメモリ配列が使用されているメモリユニット(VMU400)のブロック図である。以下に説明する好ましい実施の形態において、メモリユニットは、ベクトル全体を記憶することができる幅を有する物理メモリとの組み合わせにおいてベクトルプロセッサ内で使用される。尚、同一の概念を従来のDSP等のスカラプロセッサに適用してもよい。VMUは、他の機能ユニットに対して非常に大きなデータ帯域幅を提供するベクトルメモリ410を含み且つ制御する。物理ベクトルメモリ410は単一ポート型のSRAMに基づいていることが好ましい。P×W幅の埋め込みSRAMは一般的に入手できるものではないため、物理メモリは平行に配列された1つ以上の列の幅の広いランダムアクセスメモリ(RAM)によって形成するようにしてもよい。スカラデータはベクトルデータを記憶するために使用されるメモリと同一のメモリに格納されることが好ましい。このようなシステムにおいては、スカラをそれらが対応するベクトルと混合させることができる。費用効率およびメモリへの最適なアクセス時間のために、メモリは完全なベクトル線の読み出しおよび書き込みのみを許容することが好ましい。従って、論理的には、物理メモリはそれぞれがベクトルの大きさの線からなっている。スカラの読み出しおよび書き込みに対応するため、さらなるハードウェア(ラインキャッシュ430および線内でスカラを選択するサポート440)を用いてスカラのようにベクトル幅の物理メモリへアクセスする。
図5は、この配列のさらなる詳細を示している。全幅ポート505(この例においては、ベクトルの幅を有する)を1つ有する物理メモリ500が示されている。図において、読み出しポートのみが示されている。当業者はデータの書き込みのための同様の配列を容易に決定することができるであろう。この配列は、物理メモリポート505として同一の幅の少なくとも1つのレジスタを含む。4つのレジスタ510、512、514、516が示されている。すべてのレジスタはデータを受信する読み出しポート505に選択可能に接続することができる。図において、1つのレジスタ514はより小さなデータ要素、この例においてはスカラの読み出し専用とされている。より小さなデータ要素のうちの少なくとも2つがこのレジスタに適応することが好ましい。データレジスタ514は処理ユニット(より一般的にはデータシンク)に接続された読み出しポート525と関連している。マルチプレクサ520はレジスタ514と連結してこのレジスタから関連するスカラデータを選択することが好ましい。アドレスの最下位ビットによって指定されるように(例えば、32個の8ビットワードを有する256ビットのベクトルを用いて、スカラを5つの最下位ビットによって示す)、レジスタ内のスカラの数によってマルチプレクサを制御するようにしてもよい。マルチプレクサについては知られており、さらなる説明は行わない。レジスタは、データ(全幅)を受信する物理メモリの読み出しポート505に接続されている。一般的に、それぞれがベクトル幅レジスタに接続されたNrスカラ読み出しポートがある。これは別個のレジスタまたは同一のものであってもよい。これらのレジスタは図4のキャッシュ430の一部である。マルチプレクサはスカラ選択ブロック440の一部である。図示されていないが同様にして、キャッシュ430にはNwベクトル幅レジスタを有するNwスカラ書き込みポートが存在することが可能である。各スカラ書き込みポートには、キャッシュ430内の対応するレジスタがNw入力のベクトル幅デマルチプレクサに接続されて、どのキャッシュラインを物理メモリに書き戻すかを選択する。1つのVMU命令によって複数のキャッシュラインを書き戻することが要求される場合、これは順次行われ、すべての書き込みが完了するまで他のすべての機能ユニットを停止する。同一の命令で異なる書き込みポートへアクセスする場合、物理メモリの同一の線にアクセスすることは許容されない。連続的なスカラアクセスにおける空間的局所性(例えば、1つの処理ループに属する連続スカラは物理メモリ410に実質的に順次格納される)を仮定すると、これらのレジスタに対してロードする/格納するための物理メモリ410へのアクセス周波数は、これらのレジスタへのスカラアクセス周波数を大きく下回る場合がある。
好ましい実施の形態において、ベクトルをメモリ内でベクトル境界に揃える必要はない。従って、Pワードからなるベクトルは任意のメモリアドレスを有してもよい。メモリラインは同一の大きさを有しているが、その開始アドレスは当然、Pの倍数である。(ラインアクセスの場合、アドレスの最下位logPビットは無視される。)ベクトルの任意の配置(通常は最も小さなワード境界での配置)を許容することによって、空き場所がより少ない状態でメモリをよりよく使用することができる。スカラ/ベクトルプロセッサが個々のベクトルの読み出し/書き込みを行うことを可能とする対策は取られているが、ベクトルを物理メモリの2つの連続する線に格納してもよい。この目的のため、アライメントユニットをベクトル送信動作に使用する。アライメントユニットは図4のブロック440に示されている。図5にはさらに詳細に示されている、アライメントユニット530は、いずれも要求されたベクトルによる長さの線を含む2つのラインキャッシュ510および512に(即ち、2つのベクトル幅レジスタに)接続されている。連続的するベクトルにアクセスする場合、他の線がこれらのラインキャッシュのいずれかにまだ存在しているので、1つの新たな線のみを物理メモリから取り出さなければならない。要求されたベクトルを形成する2つのキャッシュラインの一部はマルチプレクサ530からなるネットワークと組み合わされた後、ベクトル幅パイプラインレジスタに格納される。パイプラインレジスタはベクトル読み出しポート535を介してデータを受信する。パイプラインレジスタから、値がVMU同時通信バス上で伝送される。
また、図5は、さらなるベクトル幅レジスタ516、およびメモリから線の直接読み出しを可能にする関連するベクトル幅読み出しポート540を示しており、この場合レジスタはキャッシュとしての働きをする。
ベクトルメモリの周囲でのキャッシングはプログラマから隠されていることが好ましい。単一ポート型SRAMを有するマルチポートベクトルメモリをエミュレートするためにキャッシュを使用しているにもかかわらず、プログラマはこの場合コヒーレントベクトルメモリを仮定することができる。各レジスタは物理メモリに可能な限り同一のデータのコピーを含むことができるので、プログラマが可干渉性を守らなければならない代わりに可干渉性が自動的に維持される。この目的のため、アドレス競合、即ちラインアドレスに発生したレジスタへの書き込みを行い、同一の線が他のレジスタの一つにも格納されることに対するチェックを行う。このようなチェックの場合、レジスタに格納された線のラインアドレス(アドレスの最上位の部分)をレジスタごとに格納することで十分である。競合の可能性が検出された場合、補正措置が取られる。例えば、同一の線を有するレジスタに書き込み動作が行われるとすぐに、読み出しレジスタに対して無効をマークする。(書き込みレジスタがメモリにはじめて書き戻された後)物理メモリから再度読み出されなければ、レジスタをそれ以上使用することはできない。または、書き込みレジスタに書き込みが行われた後に、書き込みレジスタの内容を同一の線を有するすべての読み出しレジスタにコピーするようにしてもよい。第3の可能性としては、読み出しおよび書き込みポートの間でレジスタを共有することである。この後者の方法はさらなるベクトル幅マルチプレクサを必要とし、コストが増加するが、性能上の利点がある。実際、バイパスが作成されるので、読み出しポートに接続された読み出しレジスタにバイパスが設置され、データが読み出しポートを通って書き込みレジスタから実際に読み出される。これらすべての補正措置は、まとめて「可干渉性チェッカ」と呼ばれる機能性を用いて行われる。どこにデータが(整合性の問題の可能性がある)コピーされた形で記憶されている可能性があるかを決定するために可干渉性レジスタが用いられ、この可干渉性レジスタは、この可干渉性レジスタが関連するデータレジスタに記憶された内容に関する情報を記憶するものである。可干渉性レジスタは、対応するデータレジスタに格納されたデータの物理アドレスを記憶することが好ましい。同一の可干渉性チェックおよび対策をスカラへのアクセスに対してだけでなく、書き込みポートに関係するレジスタにベクトルが(部分的に)記憶されるベクトル読み出しに対しても取ることができる。物理メモリ510への1回のアクセスによって、物理メモリへのライン読み出しまたは書き込みが単一のクロックサイクルで行われる。
ベクトルメモリユニットは、単一のVMU命令で以下の4つの同時のサブオペレーションまで対応することができる。
ベクトルの送信、またはラインの送信、またはVM記憶場所から/VM記憶場所への受信
VM記憶場所からのスカラの送信
VM記憶場所へのスカラの受信
アドレス計算ユニットの状態/出力の変更

VMU_cmd=(vopc,aid_v,ainc_v,sopc,aid_s,ainc_s,size,srcv,aid_r,ainc_r,aopc,aid_a,imm_addr)
Vopc=NOP│SENDL│SENDV│RCVL_CGU│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 2005527035
尚、外部バスに接続されるスカラポートは2つある(一方は送信、他方は受信)。CVP命令とのこれらのメモリアクセスとの同期化は、マイクロコントローラ130のタスクである。
VMUベクトルセクションは、物理ベクトルメモリ510を含む。
Figure 2005527035
ベクトルサブオペレーションではスカラメモリにアクセスすることはできない点に留意されたい。従って、ベクトルサブオペレーションの場合には最上位のアドレスビットは無視される。VMUのベクトルセクションは、命令のVOPCフィールドにエンコードされる7つのサブオペレーション、即ちベクトル送信(SENDV)、ライン送信(SENDL)、および5つのライン受信サブオペレーション(RCVL_CGU、RCVL_AMU、RCVL_SFU、RCVL_SLU、およびRCVL_SRU)に対応する。受信源である機能ユニットは対応するライン受信サブオペレーションに明示的にエンコードされる。各サブオペレーションに対する読み出しアドレスまたは書き込みアドレスは、対応するアドレス計算ユニットによって指定される。AINC_Vフィールドは、すべてのベクトルサブオペレーションの間で共有される。これはAID_VフィールドでエンコードされるACUへ送られる。AINC_Vフィールドは影響を受けたアドレス計算ユニットがインクリメント後の演算を行うべきかを指定する。
Figure 2005527035
演算は、転送先(転送元)を含むロード(または格納)動作としてではなく、送信(または受信)動作として行われる点に留意されたい。後者は、他の機能ユニットでの演算によって指定される。ライン送信は、同一のアドレスを有するベクトル送信と機能的に同等である。ライン送信サブオペレーションは通常、機能ユニットを構成するため、または様々なレジスタでのタスクの状態を復元するために用いられる。ライン送信に対して特殊なモードを導入することによって、連続的なベクトル送信(「ベクトルストリーミング」)のアクセス時間をキャッシュの効率的な使用により最適化することができる。
VMUのスカラサブオペレーションは、命令のSOPCフィールドでエンコードされる。これは1つのサブオペレーション、即ちスカラ送信(SEND)のみに対応する。読み出しアドレスは、AID_Sフィールドで指定されるアドレス計算ユニットによって指定される。命令のAINC_Sフィールドは、このアドレス計算ユニットがインクリメント後の演算を行うべきかを指定する。スカラサブオペレーションのオペランドの大きさ(WORD、DWORDまたはQWORD)は命令のSIZEフィールドによって決定される。
Figure 2005527035
VMUのスカラ受信サブオペレーションは、命令のSRCVフィールドでエンコードされる。その値がNONEである場合、スカラ受信は行われない。さもなければ、命令のSRCVフィールドはスカラの受信源としてどの機能ユニットを使用するかを決定する。書き込みアドレスは、AID_Rフィールドで指定されるアドレス計算ユニットによって指定される。命令のAINC_Rフィールドは、このアドレス計算ユニットがインクリメント後の演算を行うべきかを指定する。スカラ受信サブオペレーションのオペランドの大きさ(WORD、DWORDまたはQWORD)は、ソーススカラの大きさによって決定される。
Figure 2005527035
送信および受信サブオペレーションを、あるVM記憶場所から別のVM記憶場所へスカラ移動演算に統合することができる。各アクセスのアドレスは対応するアドレス計算ユニットによって指定される。
VMU制御セクション550は主に、従来のDSPと同様のアドレス指定モードに対応するアドレス計算ユニット(ACU)またはアドレス発生ユニット(AGU)の組である。このようなユニットは、プロセッサの主要なデータ経路を使用せずに命令ごとに1つ以上のアドレス計算を行う。例えば、スカラのアドレスは各スカラ読み出しアクセスの後にインクリメントすることができる。これによって、データの算術演算と並列してアドレス計算を行うことが可能となり、プロセッサの性能が向上する。サポートされたアドレス指定モードの組によっては、このようなACUはいくつかのレジスタにアクセスする必要がある。例えば、
関連するアドレス指定、即ちいわゆるベースアドレスに関連するアドレス指定はベースレジスタbaseを必要とし、
ベースアドレスに関するオフセットはオフセットレジスタoffsに格納され、
インクリメントレジスタincrに記憶された値によってオフセットを前/後インクリメントし、
バウンドレジスタboundに記憶されたアドレスに関してモジュロアドレス指定を行う。
このアドレス指定モードの組を用いて、次の事をサポートすることができる。オフセットレジスタoffsを仮定する。アドレスbase+offsでの各メモリアクセス(読み出しおよび書き込み)の後、レジスタoffsをoffs:=(offs+incr)モジュロboundに基づいて更新する。従って、offsは(各アクセス後に)頻繁に変化し、base、incrおよびboundに記憶された値はほとんど変化しない。通常、これら3つの後者のレジスタはプログラムループの前に初期化される。ACUの動作についてはここでは詳細に説明しない。
尚、上述の実施の形態は例証であって本発明を限定するものではなく、当業者は添付された請求の範囲から逸脱せずに他の多くの実施の形態を設計することが可能であろう。請求の範囲において、括弧内の参照符号はいずれも請求の範囲を限定するものではない。「備える(comprising)」および「含む(including)」という言葉は、請求の範囲に記載された以外の要素またはステップの存在を排除するものではない。
図1は、本発明によるスカラ/ベクトルプロセッサを使用してもよい好ましい構成を示している。 図2は、本発明によるスカラ/ベクトルプロセッサの主構造を示している。 図3は、サポートされているデータ幅およびデータタイプを示している。 図4は、ベクトルメモリユニットのブロック図を示している。 図5は、中間レジスタおよび2つのポートサイズを使用する場合を示している。

Claims (15)

  1. プロセッサと、物理メモリ内のデータにアクセスするための単一の大きさのメモリポートを有する前記物理メモリとを有する処理システムであって、
    前記プロセッサは、少なくとも第1のデータサイズおよびそれよりも小さな第2のデータサイズのデータに対して演算を行うように配列され、
    前記第1のデータサイズは、メモリポートの大きさと同等かまたはそれよりも小さく、
    前記処理システムは、前記メモリポートに接続された前記第1のデータサイズの少なくとも1つのデータレジスタと、前記データレジスタおよび前記プロセッサに接続されて第2のサイズのデータ要素へのアクセスを可能とする前記第2のデータサイズの少なくとも1つのデータポートとを備える、処理システム。
  2. メモリポートの大きさは、前記第2のデータサイズの少なくとも2倍である、請求項1に記載の処理システム。
  3. 前記データポートは読み出しポートであり、前記処理システムは、読み出しアドレスの制御の下で前記データレジスタから前記第2のデータサイズのデータ要素を選択して抽出するマルチプレクサを備える、請求項2に記載の処理システム。
  4. 前記データポートは書き込みポートであり、前記処理システムは、書き込みアドレスの制御の下で前記データレジスタ内の選択可能な場所で前記第2のデータサイズのデータ要素を挿入するデマルチプレクサを備える、請求項2に記載の処理システム。
  5. 前記処理システムは、前記プロセッサに接続された前記第2のデータサイズの複数のデータポートと、前記各データポートに対して、前記各データポートおよび前記物理メモリのポートに接続された関連したそれぞれのデータレジスタとを備える、請求項1または2に記載の処理システム。
  6. 前記データポートは書き込みポートであり、前記処理システムは、前記データレジスタ内に格納されたデータを識別する情報を格納するための関連した整合性チェッカをデータレジスタ毎に含む可干渉性チェッカを備え、前記可干渉性チェッカは、メモリにアクセスするための読み出しアドレスを前記可干渉性レジスタに格納された識別情報と比較することによって、前記メモリからの読み出し対象となっているデータが前記データレジスタに格納されているデータと一致するかを確認する動作を行うことができる、請求項1に記載の処理システム。
  7. 前記識別情報は物理メモリ内のワードにアクセスするための物理アドレスを含み、前記ワードはメモリポートの幅を有している、請求項6に記載の処理システム。
  8. 前記可干渉性チェッカは、整合性の競合の可能性の検出に応じて補正ステップを行う競合解消装置を含む、請求項6に記載の処理システム。
  9. 前記競合解消装置は、読み出しアクセスに対して無効とするようにデータレジスタにマークを付けることによって補正ステップを行うように配列され、それによってデータレジスタへの読み出しアクセスに応答して前記メモリからデータレジスタの内容が再ロードされる、請求項8に記載の処理システム。
  10. 前記可干渉性チェッカは、各データレジスタ内に格納されたデータを識別する情報を格納するための可干渉性レジスタをデータレジスタ毎に含み、コレクタは、データレジスタの1つへの書き込みアクセスおよび/または物理メモリへの書き込みアクセスに応答して、データレジスタまたはメモリに書き込まれた内容を他のすべてのデータレジスタ、および/または識別情報に従って同一のデータを記憶しているメモリの記憶場所へコピーすることによって補正ステップを行うように配列されている、請求項5、6および8に記載の処理システム。
  11. 前記データレジスタの少なくとも1つ(以下「読み出しレジスタ」)は読み出しデータポートに接続され、前記データレジスタの少なくとも1つ(以下「書き込みレジスタ」)は書き込みデータポートに接続され、前記プロセッサは、前記書き込みレジスタから前記読み出しポートへデータを選択可能に供給するバイパス経路を備え、前記可干渉性チェッカは、関連するデータレジスタに格納されたデータを識別する情報を記憶するための可干渉性レジスタをデータレジスタ毎に含み、前記競合解消装置は、読み出しレジスタが前記識別情報に基づいて同一のデータ要素を記憶している場合は、書き込みレジスタへのデータの書き込みに応答して、読み出しレジスタへの連続的な読み出しアクセスを行うバイパス経路を作動させることによって補正ステップを行うように配列されている、請求項5、6および8に記載の処理システム。
  12. 前記物理メモリは、単一ポート型のSRAMに基づいている、請求項1に記載の処理システム。
  13. 前記物理メモリは、平行に配列された複数のRAMの列によって形成されている、請求項11に記載の処理システム。
  14. 前記プロセッサは、前記第1のデータサイズのベクトルおよび前記第2のデータサイズのスカラに対して演算を行うように配列され、第1のデータ幅は第2のデータ幅の少なくとも2倍である、請求項1に記載の処理システム。
  15. 前記メモリは前記プロセッサの中に埋め込まれる、請求項1に記載の処理システム。
JP2004507986A 2002-05-24 2003-05-07 幅の広いメモリへのアクセス Pending JP2005527035A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP02077034 2002-05-24
EP02078618 2002-09-04
PCT/IB2003/001891 WO2003100599A2 (en) 2002-05-24 2003-05-07 Access to a wide memory

Publications (1)

Publication Number Publication Date
JP2005527035A true JP2005527035A (ja) 2005-09-08

Family

ID=29585702

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004507986A Pending JP2005527035A (ja) 2002-05-24 2003-05-07 幅の広いメモリへのアクセス

Country Status (9)

Country Link
US (1) US7430631B2 (ja)
EP (1) EP1512068B1 (ja)
JP (1) JP2005527035A (ja)
CN (1) CN1656445B (ja)
AT (1) ATE372542T1 (ja)
AU (1) AU2003222411A1 (ja)
DE (1) DE60316151T2 (ja)
TW (1) TWI291096B (ja)
WO (1) WO2003100599A2 (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7725745B2 (en) * 2006-12-19 2010-05-25 Intel Corporation Power aware software pipelining for hardware accelerators
US8489825B2 (en) 2007-04-16 2013-07-16 St-Ericsson Sa Method of storing data, method of loading data and signal processor
US8140771B2 (en) * 2008-02-01 2012-03-20 International Business Machines Corporation Partial cache line storage-modifying operation based upon a hint
US8117401B2 (en) 2008-02-01 2012-02-14 International Business Machines Corporation Interconnect operation indicating acceptability of partial data delivery
US8255635B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Claiming coherency ownership of a partial cache line of data
US8024527B2 (en) * 2008-02-01 2011-09-20 International Business Machines Corporation Partial cache line accesses based on memory access patterns
US8108619B2 (en) * 2008-02-01 2012-01-31 International Business Machines Corporation Cache management for partial cache line operations
US7958309B2 (en) 2008-02-01 2011-06-07 International Business Machines Corporation Dynamic selection of a memory access size
US8250307B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Sourcing differing amounts of prefetch data in response to data prefetch requests
US20090198910A1 (en) * 2008-02-01 2009-08-06 Arimilli Ravi K Data processing system, processor and method that support a touch of a partial cache line of data
US8266381B2 (en) * 2008-02-01 2012-09-11 International Business Machines Corporation Varying an amount of data retrieved from memory based upon an instruction hint
US8035537B2 (en) * 2008-06-13 2011-10-11 Lsi Corporation Methods and apparatus for programmable decoding of a plurality of code types
US7895381B2 (en) * 2009-02-16 2011-02-22 Himax Media Solutions, Inc. Data accessing system
US8117390B2 (en) * 2009-04-15 2012-02-14 International Business Machines Corporation Updating partial cache lines in a data processing system
US8176254B2 (en) * 2009-04-16 2012-05-08 International Business Machines Corporation Specifying an access hint for prefetching limited use data in a cache hierarchy
US8140759B2 (en) * 2009-04-16 2012-03-20 International Business Machines Corporation Specifying an access hint for prefetching partial cache block data in a cache hierarchy
CN101986287B (zh) * 2010-11-25 2012-10-17 中国人民解放军国防科学技术大学 用于向量数据流的重整理缓冲器
US8688957B2 (en) 2010-12-21 2014-04-01 Intel Corporation Mechanism for conflict detection using SIMD
CA2859999A1 (en) * 2011-01-25 2012-08-02 Cognivue Corporation Apparatus and method of vector unit sharing
US10037205B2 (en) * 2011-12-23 2018-07-31 Intel Corporation Instruction and logic to provide vector blend and permute functionality
US9342479B2 (en) 2012-08-23 2016-05-17 Qualcomm Incorporated Systems and methods of data extraction in a vector processor
US9411592B2 (en) 2012-12-29 2016-08-09 Intel Corporation Vector address conflict resolution with vector population count functionality
US9411584B2 (en) 2012-12-29 2016-08-09 Intel Corporation Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality
US9424034B2 (en) * 2013-06-28 2016-08-23 Intel Corporation Multiple register memory access instructions, processors, methods, and systems
CN104679584B (zh) * 2013-11-28 2017-10-24 中国航空工业集团公司第六三一研究所 矢量上下文切换方法
EP3193254A4 (en) * 2014-10-09 2017-10-11 Huawei Technologies Co. Ltd. Asynchronous instruction execution apparatus and method
CN105337995B (zh) * 2015-11-29 2019-06-21 恒宝股份有限公司 一种智能卡快速个人化方法及***

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4949247A (en) * 1988-02-23 1990-08-14 Stellar Computer, Inc. System for transferring multiple vector data elements to and from vector memory in a single operation
US5379393A (en) * 1992-05-14 1995-01-03 The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations Cache memory system for vector processing
US5426754A (en) * 1992-05-26 1995-06-20 International Business Machines Corporation Cross-interrogate method and means for combined scaler and vector processing system
US5537606A (en) * 1995-01-31 1996-07-16 International Business Machines Corporation Scalar pipeline replication for parallel vector element processing
US5689653A (en) * 1995-02-06 1997-11-18 Hewlett-Packard Company Vector memory operations
US6006315A (en) * 1996-10-18 1999-12-21 Samsung Electronics Co., Ltd. Computer methods for writing a scalar value to a vector
US5928350A (en) * 1997-04-11 1999-07-27 Raytheon Company Wide memory architecture vector processor using nxP bits wide memory bus for transferring P n-bit vector operands in one cycle

Also Published As

Publication number Publication date
EP1512068B1 (en) 2007-09-05
DE60316151D1 (de) 2007-10-18
WO2003100599A2 (en) 2003-12-04
US7430631B2 (en) 2008-09-30
US20050240729A1 (en) 2005-10-27
AU2003222411A1 (en) 2003-12-12
EP1512068A2 (en) 2005-03-09
TWI291096B (en) 2007-12-11
CN1656445B (zh) 2010-05-05
AU2003222411A8 (en) 2003-12-12
ATE372542T1 (de) 2007-09-15
WO2003100599A3 (en) 2004-07-22
DE60316151T2 (de) 2009-10-22
TW200407705A (en) 2004-05-16
CN1656445A (zh) 2005-08-17

Similar Documents

Publication Publication Date Title
JP2005527035A (ja) 幅の広いメモリへのアクセス
US20230418764A1 (en) Tracking streaming engine vector predicates to control processor execution
JP4339245B2 (ja) スカラー/ベクトルプロセッサ
US11151033B1 (en) Cache coherency in multiprocessor system
JP2001256105A (ja) 非整列循環アドレス指定を用いるマイクロプロセッサ
US7568086B2 (en) Cache for instruction set architecture using indexes to achieve compression
JP4657455B2 (ja) データプロセッサ
KR100268747B1 (ko) 데이터 처리 장치
EP2372530A1 (en) Data processing method and device
JP4624098B2 (ja) プロセッサのアドレス発生ユニット
US5781763A (en) Independent control of DMA and I/O resources for mixed-endian computing systems
WO2000022508A2 (en) Forwarding paths and operand sharing in a digital signal processor
US5710914A (en) Digital signal processing method and system implementing pipelined read and write operations
US7805590B2 (en) Coprocessor receiving target address to process a function and to send data transfer instructions to main processor for execution to preserve cache coherence
US11900117B2 (en) Mechanism to queue multiple streams to run on streaming engine
JP2004501470A (ja) スキームレジスタを用いたメモリアドレスの生成
WO2004053707A1 (en) Method and apparatus for aligning operands for a processor
US6728741B2 (en) Hardware assist for data block diagonal mirror image transformation
US7925862B2 (en) Coprocessor forwarding load and store instructions with displacement to main processor for cache coherent execution when program counter value falls within predetermined ranges
CN117009287A (zh) 一种于弹性队列存储的动态可重构处理器
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

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

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080317

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080325

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080611

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20080612

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20081209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090303

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090413

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20090501

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110104

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110111