JP3940269B2 - 演算処理システム、演算処理方法およびそのプログラム格納装置 - Google Patents

演算処理システム、演算処理方法およびそのプログラム格納装置 Download PDF

Info

Publication number
JP3940269B2
JP3940269B2 JP2001051897A JP2001051897A JP3940269B2 JP 3940269 B2 JP3940269 B2 JP 3940269B2 JP 2001051897 A JP2001051897 A JP 2001051897A JP 2001051897 A JP2001051897 A JP 2001051897A JP 3940269 B2 JP3940269 B2 JP 3940269B2
Authority
JP
Japan
Prior art keywords
vector
data
entry
pointer array
address
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
JP2001051897A
Other languages
English (en)
Other versions
JP2001273277A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2001273277A publication Critical patent/JP2001273277A/ja
Application granted granted Critical
Publication of JP3940269B2 publication Critical patent/JP3940269B2/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/8092Array of vector units
    • 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/8076Details on data register 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/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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • 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

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)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、デジタル処理、例えばマルチメディア・プロセッサ、単一命令複数データ(SIMD)プロセッサ、SIMD(ベクトル)処理機能を持つデジタル信号プロセッサ、または同様の装置を使用するがそれらに限定されない処理に関し、さらに詳しくは、デジタル処理で計算の入出力を一時的に格納するために使用されるベクトル・レジスタ・ファイルに関する。
【0002】
【従来の技術】
単一命令複数データ(SIMD)処理は、メディア・データまたはデジタル信号処理アルゴリズムを含む計算に広く受け入れられている強力なアーキテクチャ上の概念である。それは、1次元ベクトルとして配列されたデータ値の1つまたはそれ以上のストリームに対する計算を、単一命令で指定することを可能にする。計算のためのデータは、メモリから、または一般的にベクトルを1次元順次編成で保持するファイルから来るように指定される。ベクトルの要素は、計算のために順次(つまり要素1、2、3...)またはストライド(つまり固定増分)しながらアクセスされる。
【0003】
【発明が解決しようとする課題】
しかし、多くのアルゴリズムは、表探索様アルゴリズムのため、または要素が例えばビット反転など多少のアドレス置換を必要とするため、ベクトル要素への不規則なアクセスを必要とする。一般的に、この種のアクセスは一度に1つずつ要素に行われて、ファイル内で新しいベクトルを形成し、これが次に順次アクセスされる。このやり方で実現しなければならないアルゴリズムの性能は、真のSIMD処理に対して可能であろうと思われるより、ずっと低い。
【0004】
したがって、同一構造でこれらの全ての操作モードが性能を最適化することができるベクトル・レジスタ・アーキテクチャが必要である。
【0005】
【課題を解決するための手段】
本発明による、複数のデータ要素をそれぞれ含むデータ・ベクトルを使用する演算処理のためのシステムおよび方法は、データ・ベクトルのデータ要素を格納するための複数の格納要素を備えたベクトル・データ・ファイルを含む。ポインタ配列は、バスによってベクトル・データ・ファイルに結合される。ポインタ配列は複数のエントリを含み、ここで各エントリはベクトル・データ・ファイル内の少なくとも1つの格納要素を識別する。この少なくとも1つの格納要素は、データ・ベクトルの少なくとも1つのデータ要素を格納し、ここでポインタ配列の少なくとも1つの特定のエントリに対して、この特定のエントリによって識別される少なくとも1つの格納要素は、ベクトル・データ・ファイルの任意の開始アドレスを有する。
【0006】
代替実施形態では、ポインタ配列の任意のエントリに対し、この任意のエントリによって識別される少なくとも1つの格納要素は、ベクトル・データ・ファイルの任意の開始アドレスを含むことができる。ポインタ配列は、ベクトル・データ・ファイル内の少なくとも1つのデータ要素から読み出されるデータに基づいて更新される、少なくとも1つのエントリを含むことができる。ポインタ配列は、ポインタ配列の少なくとも1つのエントリから読み出されるデータを増分することによって生成されるデータに基づいて更新される、少なくとも1つのエントリを含むことができる。ポインタ配列は、ポインタ配列の少なくとも1つのエントリから読み出されるデータに対して増分演算を実行することによって生成されるデータに基づいて更新される、少なくとも1つのエントリを含むことができる。ポインタ配列はさらに、同一論理演算の一部として更新される少なくとも2つのエントリを含むことができる。増分演算は、モジュロ演算およびストライド演算の少なくとも1つを含むことができる。ポインタ配列の各エントリは、ベクトル・データ・ファイル内の少なくとも1つの格納要素の開始アドレスを含むことができる。
【0007】
さらに別の実施形態では、ベクトル・データ・ファイルの格納要素は行と列のマトリックスに論理的に編成することができ、ポインタ配列の各エントリは、ベクトル・データ・ファイル内の少なくとも1つの要素の行と列を表わすアドレスを含むことができる。ベクトル・ファイル・データの格納要素は行と列のマトリックスに論理的に編成することができ、ポインタ配列の各配列は、ベクトル・データ・ファイル内の単一の要素の行と列を表わすアドレスを含むことができる。ポインタ配列の任意のエントリに対し、この任意のエントリによって識別される少なくとも1つの格納要素は、ポインタ配列の別のエントリによって識別される少なくとも1つの格納要素に対して独立していることができる。
【0008】
複数のデータ要素をそれぞれに含むデータ・ベクトルを使用する演算処理のための方法は、データ・ベクトルのデータ要素を格納するための複数の格納要素を含むベクトル・データ・ファイルを提供し、かつ複数のエントリを有するポインタ配列を提供することを含む。各エントリは、データ・ベクトルの少なくとも1つのデータ要素を格納するためのベクトル・データ・ファイル内の少なくとも1つの格納要素を識別し、ポインタ配列内の少なくとも1つの特定のエントリに対し、その特定のエントリによって識別される少なくとも1つの格納要素は、ベクトル・データ・ファイルの任意の開始アドレスを有する。
【0009】
他の方法で、ポインタ配列内の任意のエントリに対し、その任意のエントリによって識別される少なくとも1つの格納要素は、ベクトル・データ・ファイルの任意の開始アドレスを持つことができる。この方法はさらに、ベクトル・データ・ファイル内の少なくとも1つのデータ要素から読み出されるデータに基づいて、ポインタ配列のエントリの少なくとも1つを更新するステップを含むことができる。この方法はまた、ポインタ配列の少なくとも1つのエントリから読み出されるデータを増分することによって生成されるデータから読み出されるデータに基づいて、ポインタ配列のエントリの少なくとも1つを更新するステップを含むこともできる。この方法はまた、ポインタ配列の少なくとも1つのエントリから読み出されるデータに対して増分演算を実行することによって生成されるデータに基づいて、ポインタ配列のエントリの少なくとも1つを更新するステップを含むこともできる。ポインタ配列の少なくとも2つのエントリを、同一論理演算の一部として更新することができる。
【0010】
さらに別の方法では、増分演算はさらに、ポインタ配列の少なくとも1つのエントリから読み出されるデータに対するモジュロ演算およびストライド演算の少なくとも1つを含むことができる。ポインタ配列の各エントリは、ベクトル・データ・ファイルの少なくとも1つの格納要素の開始アドレスを格納することができる。ベクトル・データ・ファイルの格納要素は、行と列のマトリックスに論理的に編成することができ、ポインタ配列の各エントリは、ベクトル・データ・ファイル内の少なくとも1つの要素の行と列を表わすアドレスを格納することができる。ベクトル・ファイル・データの格納要素は、行と列のマトリックスに論理的に編成することができ、ポインタ配列の各配列は、ベクトル・データ・ファイル内の単一要素の行と列を表わすアドレスを格納することができる。ポインタ配列の任意のエントリについて、この任意のエントリによって識別される少なくとも1つの格納要素は、ポインタ配列の他のエントリによって識別される少なくとも1つの格納要素に対して独立していることができる。上記の方法のステップは、複数のデータ要素をそれぞれに含むデータ・ベクトルを使用する演算を処理するためのこれらの方法ステップを実行するために、機械により実行可能な命令のプログラムを具体的に具現化する、機械により読取り可能なプログラム格納装置によって実現することができる。
【0011】
本発明のこれらおよびその他の目的、特徴、および利点は、その例証となる実施形態の以下の詳細な説明を添付の図面と併せて読むことにより、明らかになるであろう。
【0012】
【発明の実施の形態】
本発明は、好ましくは単一命令複数データ(SIMD)処理のために、ベクトル・データを含むためのベクトル・レジスタ・ファイルを提供する。本発明はまた、そこに含まれるベクトルの任意のサブベクトルにアクセスするためのレジスタ・ファイルをも提供する。本発明を、予め定められた数の要素、アドレス線を備えたコンポーネントまたは任意の大きさのコンポーネントを有する、プロセッサ回路に関して説明する。コンポーネントまたはベクトル、アドレスのこれらの大きさ、入力の数、出力の数、要素の数等は例証にすぎず、発明を限定するものと解釈すべきではない。
【0013】
本発明の1つの例証としての実施形態では、総サイズが512の要素に等しいかそれ以下である1つまたはそれ以上のベクトルを保持するために編成され、各アクセスで16ビットの4つの要素が読み取られるか書き込まれる、ベクトル・レジスタ・ファイルを開示する。ベクトルは、数量を表わす要素の線形配列から成るデータ構造である。ベクトル・レジスタ・ファイルへのアクセスのためのアドレスは、一体的であるが別個にアクセスされるポインタ配列に含まれるアドレス・ポインタによって指定される。各ポインタは、各アクセス・サイクルで各アクセス・ポートに読み出すか、または書き込むことができる4つの要素のうちの1つの要素のアドレスを指定する。ポインタ・ファイルは、複数のポインタを含む。各アクセスに対して必要なポインタの数、例えば4は、SIMD処理プログラムを制御する命令に含まれる情報によって選択される。したがって、レジスタ・ファイルは間接アドレス形である。ファイルのベクトル・データ配列部分のアクセス・アドレスを決定するために使用された後、ポインタ配列部分の内容は、例えば増分値(ベクトルの順次アクセスを可能にするため)または読み出されたベクトルの内容(表探索アクセスまたはデータ収集アクセスを可能にするため)により、(命令制御下で)更新することができる。本発明の他の実施形態も、ストライド・アクセス、モジュロ(循環)アクセス、またはその他のアクセス方法のための更新を提供する。本発明のプログラムはアドレス値の計算や、更新された値を使用するためにポインタ・アドレス・ファイルにロードすることができる。
【0014】
図1ないし5に示す要素は、様々な形のハードウェア、ソフトウェア、またはそれらの組合せで実現できることを理解されたい。これらの要素は、プロセッサとメモリと入出力インタフェースとを有する、1つまたはそれ以上の適切にプログラムされた汎用デジタルコンピュータまたは格納装置上のソフトウェアで実現することができる。本発明はまた、ハードウェアで実現することもできる。ハードウェアで実現する場合、アドレス更新を含む計算は、最高パイプライン・レートのパイプライン演算として有利に処理することができる。
【0015】
今から図面を参照して説明する。図面全体を通して、同一または同様の要素は類似の番号で表わす。最初に図1を参照すると、例証としてのプロセッサ100が示されている。プロセッサ100はメディア・プロセッサ、SIMDプロセッサ、またはデジタル信号プロセッサ(DSP)を含むことができ、命令ユニット102に命令を提供する命令メモリ101を含むことが好ましい。命令ユニット102は、例えば命令メモリ101に格納されたプログラムを順序付け、プロセッサ100の他の要素またはコンポーネントに復号された制御を提供する。処理されるデータは、例えば2つの読取りデータ・ポート153および154ならびに2つの書込みデータ・ポート151および152を有するマルチポート・データ・メモリ105に保持される。これらのポートは、データ・アドレス・ユニット106によって提供されるアドレスでアクセスされる。データは、メモリから読取りポート154を介して、ベクトル・レジスタ・ファイル103の書込みポート133に移され、書込みポート132を介してベクトル・レジスタ・ファイル103で使用され、ベクトル演算装置104で使用される。計算の結果は、書込みポート132を介してベクトル・レジスタ・ファイル103に格納される。ベクトル・レジスタ・ファイル103に格納されたファイルは、さらなる計算のために使用するか、または読取りポート131からバス111および書込みポート152を介してデータ・メモリ105に移される。プログラムおよびプロセッサ100のための入力データは、入力110を通して外部メモリまたはI/O装置から提供され、結果は出力バス109を介して外部メモリまたはI/Oに送られる。
【0016】
それぞれの演算装置141ないし144は、読取りポート134および135を介してレジスタ・ファイル103から読み出される2つのサブベクトルのそれぞれの1つの要素に対して演算を行い、それぞれの演算装置141ないし144は、他と同じ演算を行うことができる。結果の4要素のサブベクトルが生成され、これは次いで、書込みポート132を介してレジスタ・ファイル103に書き込まれる。希望するサブベクトルがそれぞれのポート132、134、135でより容易に選択される場合、装置104で行われる計算をより高速に進めることができる。
【0017】
図2を参照して、ベクトル・レジスタ・ファイル103(図1)を今から詳細に説明する。ベクトル・レジスタ・ファイル103は、アクセス・ポート131ないし135(図1)の1つに対する論理を含む。明快にするために、図2のデータ・バス207は、図1で108として示した2つのデータ・バスのうちの1つを表わすことに注意されたい。また、入力ポート210は、図1に示した2つの入力ポート131または132のうちの1つである。ベクトル・アドレス・ポインタ配列202は例証として、例えば、それぞれが9ビットの4つのフィールドで構成される8つの語で構成することができる。ベクトル・アドレス・ポインタ配列202は、語復号器201によって8つの語のうち1つを選択する、プロセッサ100(図1)の命令ユニット102によって生成される3ビット・アドレス(ポインタ選択)によって、アドレス指定される。ベクトル・データはベクトル・データ・ファイル206に含まれ、これは一実施形態では、それぞれ16ビットの512の要素を含む。バス210は、ポインタ語と、データ・メモリ105からのデータ・ファイルまたは演算装置104(図1)からのベクトル演算計算結果とをロードするために使用される。ベクトル・データ・ファイル206から読み出されるデータは4つの連結ベクトル要素R1、R2、R3、R4から成り、これらはベクトル演算装置104で使用するため、またはデータ・メモリ105(図1)に格納するために、読取りデータ・バス207に出力される。ベクトル・データ・ファイル206から読み出される64ビットのうち36ビットは、後述する通りアドレスの更新に使用するために、36のマルチプレクサ205(例えば9つのマルチプレクサの4つのグループとして図示されている)の第1入力にも結合される。
【0018】
ベクトル・データ・ファイル206の読出しまたは書込みオペレーションを構成する4つのベクトル要素(R1〜R4)のそれぞれを選択するために使用されるアドレスは、読取りバス203を介してベクトル・ポインタ配列202から読み出されるベクトル・ポインタ語のフィールドの1つから来る。各フィールドは、ベクトル・データ・ファイル206にアクセスするために使用されるアドレスを形成するために、命令ユニット102(図1)によって生成される適切なイネーブル208との論理積を取る。イネーブルされたアドレスは、同時に4個単位の増分配列204の入力に結合される。増分されたアドレスは、マルチプレクサ205の第2入力に接続される。マルチプレクサ205の第1入力と第2入力の間の選択は、マルチプレクサ制御信号211によって行われる。マルチプレクサ205の出力はアドレス・ポインタ配列202の入力に接続されるので、出力を配列202に書き込むことができる。ポインタ配列202から読み出されるポインタ・データ語は、バス209を介してデータ・メモリ105(図1)に送ることができる。データ配列をアドレス指定するために使用後にアドレス・ポインタ値を増分するこの構成(事後増分)は、増分器配列204を読取りバス203の出力に直接結合し、それらの出力をアドレス・イネーブル・ステージ230に接続することによって、使用前に増分(事前増分)するように変更することができることを、配列論理設計技術の熟練者は理解することができる。
【0019】
ベクトル・データ・ファイル206の要素空間(例えば512語)は細分され、好ましくはソフトウェアによって、実現される特定のアルゴリズムによって必要とされるデータ・ベクトルに割り当てられる。ポインタ配列202に格納されたベクトル・ポインタ・ファイルに入れられた値は、最高8個までのベクトルのそれぞれの開始アドレスを定義する。値は、好ましくはプログラム命令、例えばVPTRLOADを使用して、ポインタ配列202にロードされる。図2に関連して、命令VPTRLOADの実行により、値はバス210にロードされ、ポインタ語のアドレスは語アドレス復号器201の「ポインタ選択」入力にロードされる。バス210に置かれる値は、データ・メモリ105から来るか、あるいは算術または論理計算ユニット104(図1)の結果出力とすることができる。
【0020】
図3を参照すると、3つの小ベクトルを保持しているベクトル・データ・ファイル206の一実施形態の区分化例が示されている。各要素の9ビット・アドレスは、6ビットの行アドレス(64行)と3ビットの列アドレス(8列)で構成される。この例の第1ベクトル303は4つの要素311で構成され、第1要素は行3、列3である。第2要素は行3、列4云々と繰り返される。ベクトル303をアドレス指定するために、ベクトル・ポインタ配列202は、好ましくはソフトウェア・プログラムによって設定される。プログラムで、ポインタ配列の語アドレス「1」は、ベクトル303の4つの要素を指定するように設定されている。ベクトル・アドレス・ポインタ・ファイル202で、36ビットの語アドレス「1」は、図3に示すように初期化された9ビットの4つのフィールド305に分割される。ポインタの各フィールド305の値は例示的に行列値として示されているが、実際には9ビットの二進数(または他のサイズの語)が格納される。例えば、3,3の要素の要素アドレスは、実際には二進数000011011として格納される。第2ベクトル307は、8,1から始まる12の要素を持つ。このベクトルの先頭の4つの要素を図示する値でアドレス指定するために、ポインタ語アドレス「4」が使用されている。第3ベクトル309は3つの要素で構成され、第1要素は場所11,5にあり、その他は図示する通りである。第4要素は無いので、第4ポインタ・フィールドは無指定(a don't care)であるが、0,0に設定されている。
【0021】
図2に例示的に示す実施形態の場合、ベクトル・データ・ファイル206に対する基本オペレーションは、例えば、順次読取り、順次書込み、間接読取り、および間接書込みを含む。間接アクセス・モードは本発明の1つの重要な特徴であり、サブベクトルを形成するためにベクトル・データ・ファイル206内の要素の任意の集合をアドレス指定することを可能にする。これらのサブベクトルは、例えばベクトル値の表探索を行うため、または要素を集めてSIMD処理用のサブベクトルにするために、使用することができる。本発明の他の用途として、例えばベクトルのストリップ・マイニングを含めることができる。ベクトルのストリップ・マイニングは、間接読取りを介してサブベクトルをアセンブルし、結果的に得られるサブベクトルを、その後のプログラム・ステップで例えばフィルタリングのために後で使用するために、データ・メモリ105に書き込む(格納する)ことを含む。
【0022】
ベクトル・レジスタ・ファイル103(図1)に対するオペレーションの任意の論理サイクル中に、次の操作を実行することができる。すなわち、ポインタ配列202に対するオペレーションが指定され(読取りまたは書込みオペレーション)、ポインタ配列に指標(これはアドレス、例えば0から7の間の語アドレスである)が提供され、供給された指標に対応するポインタ配列202の4つのエントリがポインタ配列202から読み取られ、ポインタ配列から読み取られた4つのエントリを使用してベクトル・データ・ファイル206の1組のアドレス(4つを図示する)が生成され(好ましくは、これは図示する1組4つのアドレス・イネーブル信号208によってトリガされる)、供給された組のアドレスに対応するベクトル・データ・ファイル206の要素がベクトル・データ・ファイル206から読み取られ、供給された指標に対応するポインタ配列のエントリの更新を選択的に制御するために制御信号が提供される。これらの制御信号は少なくとも、「はい」または「いいえ」の値を持つ「putaway制御」信号を含み、「はい」に匹敵する場合、マルチプレクサ205のバス250上の出力値を書込みポート251を介してポインタ・アドレス配列202に書き込むように指示する。制御信号はまた、供給される組のアドレス・イネーブル信号208に対応してポインタ・ファイル202から読み出される増分されたアドレスまたはベクトル・データ・レジスタ・ファイル206から読み出されるデータをバス250に結合するかどうかを決定する、マルチプレクサ制御信号211をも含む。
【0023】
再び図2を参照しながら説明すると、ベクトル・アドレス・ポインタ・ファイル202によって供給される組のアドレスに、他のオペレーション(例えば増分演算、ストライド演算または増分モジュロ・アドレス指定オペレーションなど)を実行することができ、マルチプレクサ回路205を使用して、そのようなオペレーションから得られるデータ結果またはベクトル・データ・ファイル206の要素から読み出されるデータを選択的に出力することができる。この場合、供給される指標に対応するポインタ配列202内のエントリの更新は、マルチプレクサ回路205によって選択的に出力されるデータを使用することができる。
【0024】
これらのオペレーションは、ベクトル・レジスタ・ファイル103内のベクトル・データに対するオペレーションを含む命令によってトリガされる。バス210上のデータの源およびバス209および207上のデータの宛先の指定もまた、命令ストリームから導出される。
【0025】
順次ベクトル読取りは、ポインタ配列202内の8つのアドレス語(0〜7)のうちの1つにある開始アドレスから開始される。解説のために、図3に示すベクトル・ファイル206の区分化を使用し、第2ベクトル307の読取りについて記載して、本発明のさらなる特徴および詳細を例証として説明する。
【0026】
図1、2、および3に関連して、オペレーションの第1サイクルは、ポインタ配列202の語アドレス「4」の読取り、4つのアドレス全部のイネーブル、ベクトル・データ・ファイル206の読取り、マルチプレクサ制御211の1の値(例えばマルチプレクサの左のレッグを選択)、およびputaway値の「はい」を指定する。putaway値は、マルチプレクサ205の出力をポインタ・アドレス配列202に書き込むかどうかを指定する命令の1ビットである。putaway値は、バス250上の値を書込みポート251を介してポインタ配列202に書き込むかどうかを決定する制御信号として実現される。この結果、ベクトル・ポインタ語アドレス「4」の最初の9ビットが、ベクトル・データ・ファイル206から読み取られる最初のサブベクトル要素のアドレスとなる。ベクトル・データ・ファイル206の8,1にある要素が読み取られ、バス207のR1に置かれる。同様に、ポインタ語「4」の第2フィールドは、データ・ファイル内の8,2の位置の要素を読み取り、バス207のR2に置くことを指定しており、第3および第4要素についても同様である。読み取られた4つの16ビット・データ値(R1〜R4)はアセンブルされてサブベクトルになり、読取りデータ・バス207を介してデータ・メモリ105またはベクトル演算装置104のいずれかに渡される。同時に、ポインタ語「4」から読み取られる値は、増分器204により(4つの要素が一度に処理されるので、4を加算することによって)次の順次値に増分される。
【0027】
マルチプレクサ制御211は増分された値を選択し、putaway制御は、更新された値をポインタ配列202に戻すことを指定するので、値(8,5)、(8,6)、(8,7)および(8,8)は、マルチプレクサ205を介してポインタ・ファイル語アドレス4に格納される。当業者は、行8、列1を表わす値(二進数001000001)に4(二進数000000100)を加算すると、行8、列5(8,5)を表わす二進数001000101になり、他の3つの値についても同様であることを理解する。
【0028】
次のサイクルのオペレーションの制御値は第1サイクルと同一であるが、更新されたポインタ値を使用してベクトル・データ・ファイル206にアクセスするので、ベクトルの次の4つの要素がアセンブルされ、バス207に送られる。この同じ制御値は、追加サイクル(この例の場合、合計3回)に対して繰り返されて、要素ベクトル(この場合、12要素)が順次読み取られ、バス207上にベクトルが置かれる。
【0029】
ベクトルの順次書込みまたはローディングは、読取りに非常に似ている。再び図3の第2ベクトルを例として使用する。ベクトル・データ・ファイル206内のデータにアクセスする第1サイクルのオペレーションは、ポインタ配列202の語アドレス4の読み出し、4つのアドレス全部のイネーブル208、ベクトル・データ・ファイル206の書込み、マルチプレクサ制御211の値の1(例えば左のレッグを選択)、および「はい」のputaway制御値を指定する。この値の結果、ベクトル・ポインタ語アドレス「4」の最初の9ビットが、データ・ファイル206に書き込まれる最初のサブベクトル要素のアドレスとなる。バス210の最初の16ビットが、ベクトル・データ・ファイル206の8,1の要素に書き込まれる。同様に、ポインタ語アドレス「4」の第2フィールドは、データ・ファイル206の8,2の要素をバス210から2番目の16ビットに書き込むことを指定する。第3および第4要素についても同様である。バス210上の64ビットから取られた4つの16ビット・データ値は今、ベクトル・データ・ファイル206に書き込まれている。同様に、ポインタ語アドレス「4」の値から読み取られる値は、増分器204により(4つの要素が一度に処理されるので、4を加算することによって)次の順次値に増分されている。マルチプレクサ制御211は増分された値を選択し、putaway制御値は、更新された値をポインタ配列202に送り返すことを指定するので、値(8,5)(8,6)(8,7)および(8,8)が、マルチプレクサ205を介してポインタ・ファイル語アドレス「4」に格納される。同じ制御語があと2回繰り返され、バス210上の次の2つの値がデータ・ファイルに格納されて、12要素のベクトルが形成される。
【0030】
間接アドレス指定操作モード(間接読取りおよび間接書込み)は、例証として次のような場合に使用することができる。
1)ベクトル・データ206ファイルにベクトルとして格納されたアドレスのリストを介しての任意のサブベクトル・アクセス。
2)信号標本がポインタ・レジスタ202に置かれた場合のデータ指定アクセス。この場合、各信号値は、フィルタ係数を選択するために多くのアルゴリズムで必要となるベクトル要素にアクセスすることができる。
3)データ収集オペレーションにより、分散したデータを順次SIMD処理可能データに変換する場合。
【0031】
間接コマンドは他のタスクにも使用することができるので、これは網羅的なリストではない。
【0032】
引き続き図2を参照しながら、図4に示した区分例を使用して、間接読取りについて説明しよう。4要素の最初のベクトル403は、ベクトル・データ・ファイル206のアドレス(8,3)、(8,5)、(9,2)、および(9,3)に相当する二進要素値を含む。ベクトル・レジスタ・データ・ファイル206のデータにアクセスする第1サイクルのオペレーションの制御は、ポインタ配列202の語アドレス「1」の読み出し、4つのアドレス全部のイネーブル208、ベクトル・データ・ファイル206の読取り、マルチプレクサ制御値211の0(右のレッグを選択)、および「はい」のputaway値を指定する。この値の結果、ベクトル・データ・ファイル206の場所8,3の16ビットの要素がベクトル・データ・ファイル206から読み取られ、バス207のR1に置かれる。この値の9ビットは、マルチプレクサ205の最初の1つにも結合される。上述した通り、これらの9ビットは、ベクトル・データ・ファイル206内の要素のアドレスに相当する二進値を有する。同様に、他の3つの要素のそれぞれの値の9ビットもマルチプレクサ205に結合される。マルチプレクサ選択制御211は右を選択し、putaway制御は「はい」を指定するので、場所(8,3)、(8,5)、(9,2)、および(9,3)に含まれる値は、ポインタ語アドレス「1」の4つのフィールドに書き込まれる。
【0033】
第2サイクルの制御は、ポインタ配列202の語アドレス「1」の読取り、4つのアドレス208全部のイネーブル、ベクトル・データ・ファイル206の読取り、マルチプレクサ制御値211の0(右のレッグを選択)、および「いいえ」のputaway制御値を指定する。第2サイクルのオペレーションは結果的に、今ポインタ・ファイル語アドレス「1」にあるアドレスの4つの要素がベクトル・データ・ファイル206から読み取られ、バス207に置かれる。これらは、ベクトル・データ・ファイル206における位置がベクトル・データ・ファイル206の場所(8,3)、(8,5)、(9,2)、および(9,3)の低位9ビットの値に相当する4つの要素である。
【0034】
間接書込み(「データ分散」)オペレーションは、同様のシーケンスで制御される。データ分散オペレーションを実行できるためには、各要素アドレス230がベクトル・データ・ファイル206内の任意の16ビット・データ要素への書込みを指定することができるように、64ビットの書込みポート261(図2)を4つの16ビット・ポート(合計して64ビット)に区分化する必要があることに注意されたい。この能力により、要素1のアドレスは、64ビット・バス210の最初の16ビットのベクトル要素R1を、データ・ファイル206のどこに書き込むかを指定し、要素2のアドレスは、64ビット・バス210の2番目の16ビットのベクトル要素R2をデータ・ファイル206のどこに書き込むかを指定し、R3およびR4についても同様に繰り返される。簡略化した実施形態では、ハードウェアのコスト上の理由のため、この能力を省くことができる。記述した実施形態では、ベクトル・レジスタ・データ・ファイル206内のデータにアクセスする第1サイクルのオペレーションの制御は、ポインタ配列202の語アドレス「1」の読取り、4つのアドレス全部のイネーブル208、ベクトル・データ・ファイル206の読取り、マルチプレクサ制御値211の0(右のレッグを選択)、および「はい」のputaway制御値を指定する。これは、指定された4つの要素の値を読取り、この値をポインタ配列語アドレス「1」に書き込む。第2サイクルの制御は、ポインタ配列202の語アドレス「1」の読取り、4つのアドレス全部のイネーブル208、ベクトル・データ・ファイル206の書込みマルチプレクサ制御211値の0(右のレッグを選択)、および「いいえ」のputaway制御値を指定する。これにより、バス210上の4つの要素が取り出され、それらは、第1サイクルで読み取られるアドレスによって指定されるベクトル・データ・ファイル206の4つの要素に入れられる。
【0035】
任意のポインタを使用してデータ・ファイル内の計算の開始点を指定する能力により、フィルタリングおよび畳込みなどの計算のために、1つのベクトルを他のベクトルまたはそれ自身の上で「スライド」させることが、極めて簡単かつ高速になる。
【0036】
当業者は、図2に示したアドレスの生成および使用の論理が、ベクトル・データ・ファイル206のマルチポート・アクセスに対して繰り返すことができることを理解されるであろう。図2の実施形態のマルチポート・オペレーションのための最初の延長は、同時オペレーションが可能なファイル206、つまり1つのポートを読取り専用、もう1つを書込み専用とする2ポート・ファイルの読取りおよび書込みポート(それぞれ262および261)を作ることである。そのような構造により、古いデータが読取りポート262から読み取られ、バス207に置かれ、処理されて、結果がデータ・メモリ105に書き込まれる間に、新しいデータをバス210から書込みポート261を介してベクトル・データ・ファイル206にロードすることができる。これにより、任意のサイズのベクトルを処理装置に間断なく流すことが可能になる。
【0037】
図5を参照すると、他のアドレス指定モード、例えばストライドおよびモジュロ・アドレス指定に備える図2の実施形態の変形例が示されている。他のアドレス指定モードも、適切な論理またはソフトウェアを使用して実現することができる。図2のアドレス増分器204およびマルチプレクサ205は、図5に示すハードウェアに置換することができる。増分器504およびマルチプレクサ505が含まれる。入力は、ポインタ・ファイル(202)から読み取られる要素アドレス508、レジスタ・ファイル206からのベクトル・データを含み、出力は、更新されたアドレス・バス250であり、ポインタ・ファイル202に格納される。ストライド・アクセスの場合、ストライド値が、好ましくはプログラムによって、ストライド・レジスタ501に格納され、上述の順次アクセスについて説明したようにアクセスが進行する。しかし、ストライド値は、固定値4ではなくポインタ・ファイル値に加算(または減算)される。モジュロ(循環)アドレス指定は、例えば、循環バッファの開始アドレスを始点レジスタ503およびポインタ・ファイル202(図2)にロードするプログラムによって行われる。ベクトルの終わりは、終点レジスタ502にロードされる。オペレーションは、ストライド・レジスタ501の値を使用して上述の通りアドレスを増分しながら進行する。各サイクルで、比較イコール回路506は、更新されたアドレスを終点アドレスと比較して、ベクトルの終わりに達したかどうかを検査する。達した場合、マルチプレクサ505は、更新されたアドレスではなく、新しいアドレスとして、始点アドレス・レジスタ503から始点アドレスをポインタ・ファイル202に提供するように調節される。
【0038】
本発明は、従来の技術に比べて多くの利点を提供する。例えば、本発明によって提供される柔軟なアドレス指定のため、データ・メモリ105のアドレス指定が簡素化される。他の利点として次のようなことが挙げられる。複合ループおよび表探索のためのデータのアドレス指定を数個の命令で簡単に指定することができ、本発明はプログラムのサイズを小さくし、したがって命令メモリ101の効率を高める。本発明は、ベクトル・アドレス・ファイル206の各要素が、ベクトル・アドレス・ファイル206内の他の要素の内容とは無関係に、データ配列202内の任意の要素の任意のアドレスを含めることを可能にする。例えば、アドレスがデータ・ファイル内の順次データ要素を言及しなければならないという要求事項が除去され、2つの要素が同一アドレスを持つことができる。本発明によってその他の利点および利益も実現することができる。
【0039】
任意のベクトル・アドレス指定機能を備えたベクトル・レジスタ・ファイルの好適な実施形態(これらは限定ではなく、例証として意図されたものである)を説明したが、当業者は、上述の教示に照らして変更や変形を行うことができることに留意されたい。したがって、請求の範囲で規定する発明の請求および精神の範囲内で、開示した発明の特定の実施形態に変化を加えることができることを理解されたい。このように発明を詳細に、特に特許法によって要求される通りに説明したが、請求しかつ特許証によって保護されることを希望するものは、請求の範囲に記載する。
【0040】
まとめとして、本発明の構成に関して以下の事項を開示する。
【0041】
(1)複数のデータ要素をそれぞれに含むデータ・ベクトルを使用する演算を処理するためのシステムにおいて、
データ・ベクトルのデータ要素を格納するための複数の格納要素を含むベクトル・データ・ファイルと、
バスによって前記ベクトル・データ・ファイルに結合されるポインタ配列であって、複数のエントリを含み、各エントリがベクトル・データ・ファイル内の少なくとも1つの格納要素を識別するようにしたポインタ配列とを含み、
前記データ・ベクトルの少なくとも1つのデータ要素を格納するための少なくとも1つの格納要素であって、前記ポインタ配列の少なくとも1つの特定のエントリに対し、その特定のエントリによって識別される少なくとも1つの格納要素が、前記ベクトル・データ・ファイルの任意の開始アドレスを有する、
システム。
(2)ポインタ配列の任意のエントリに対し、その任意のエントリによって識別される少なくとも1つの格納要素が、ベクトル・データ・ファイルの任意の開始アドレスを含む、上記(1)に記載のシステム。
(3)前記ポインタ配列が、前記ベクトル・データ・ファイル内の少なくとも1つのデータ要素から読み出されるデータに基づいて更新される少なくとも1つのエントリを含む、上記(1)に記載のシステム。
(4)前記ポインタ配列が、前記ポインタ配列の少なくとも1つのエントリから読み出されるデータを増分することによって生成されるデータに基づいて更新される少なくとも1つのエントリを含む、上記(1)に記載のシステム。
(5)前記ポインタ配列が、前記ポインタ配列の少なくとも1つのエントリから読み出されるデータに対し増分演算を実行することによって生成されるデータに基づいて更新される少なくとも1つのエントリを含む、上記(1)に記載のシステム。
(6)前記ポインタ配列が、同一論理演算の一部として更新される少なくとも2つのエントリを含む、上記(5)に記載のシステム。
(7)前記増分演算がモジュロ演算およびストライド演算の少なくとも1つを含む、上記(5)に記載のシステム。
(8)前記ポインタ配列の各エントリが、前記ベクトル・データ・ファイル内の少なくとも1つの格納要素の開始アドレスを含む、上記(1)に記載のシステム。
(9)前記ベクトル・データ・ファイルの格納要素が行と列のマトリックスに論理的に編成され、前記ポインタ配列の各エントリが前記ベクトル・データ・ファイル内の少なくとも1つの要素の行と列を表わすアドレスを含む、上記(1)に記載のシステム。
(10)前記ベクトル・ファイル・データの格納要素が行と列のマトリックスに論理編成され、前記ポインタ配列の各配列がベクトル・データ・ファイル内の単一要素の行と列を表わすアドレスを含む、上記(1)に記載のシステム。
(11)前記ポインタ配列内の任意のエントリに対し、前記任意エントリによって識別される少なくとも1つの格納要素が、前記ポインタ配列の他のエントリによって識別される少なくとも1つの格納要素に対して独立している、上記(1)に記載のシステム。
(12)複数のデータ要素をそれぞれに含むデータ・ベクトルを使用する演算を処理するための方法において、
データ・ベクトルのデータ要素を格納するための複数の格納要素を含むベクトル・データ・ファイルを提供するステップと、
複数のエントリを有するポインタ配列を提供するステップであって、各エントリが前記データ・ベクトルの少なくとも1つのデータ要素を格納するための前記ベクトル・データ・ファイル内の少なくとも1つの格納要素を識別し、前記ポインタ配列内の少なくとも1つの特定のエントリに対し、その特定のエントリによって識別される少なくとも1つの格納要素が前記ベクトル・データ・ファイルの任意の開始アドレスを有するように構成されたステップと
を含む方法。
(13)前記ポインタ配列内の任意のエントリに対し、前記任意のエントリによって識別される少なくとも1つの格納要素が前記ベクトル・データ・ファイルの任意の開始アドレスを有する、上記(12)に記載の方法。
(14)前記ポインタ配列のエントリの少なくとも1つを、前記ベクトル・データ・ファイル内の少なくとも1つのデータ要素から読み出されるデータに基づいて更新するステップ
をさらに含む、上記(12)に記載の方法。
(15)前記ポインタ配列のエントリの少なくとも1つを、前記ポインタ配列の少なくとも1つのエントリから読み出されるデータを増分することによって生成されるデータから読み出されるデータに基づいて更新するステップ
をさらに含む、上記(12)に記載の方法。
(16)前記ポインタ配列のエントリの少なくとも1つを、前記ポインタ配列の少なくとも1つのエントリから読み出されるデータに増分演算を実行することによって生成されるデータに基づいて更新するステップ
をさらに含む、上記(12)に記載の方法。
(17)前記ポインタ配列の少なくとも2つのエントリが同一論理演算の一部として更新される、上記(16)に記載の方法。
(18)前記増分演算が、前記ポインタ配列の少なくとも1つのエントリから読み出されるデータに対するモジュロ演算およびストライド演算の少なくとも1つをさらに含む、上記(16)に記載の方法。
(19)前記ポインタ配列の各エントリが、前記ベクトル・データ・ファイル内の少なくとも1つの格納要素の開始アドレスを格納する、上記(12)に記載の方法。
(20)前記ベクトル・データ・ファイルの格納要素が行と列のマトリックスに論理的に編成され、前記ポインタ配列の各エントリが、前記ベクトル・データ・ファイルの少なくとも1つの要素の行と列を表わすアドレスを格納する、上記(12)に記載の方法。
(21)ベクトル・ファイル・データの格納要素が行と列のマトリックスに論理的に編成され、前記ポインタ配列の各配列が、前記ベクトル・データ・ファイルの単一要素の行と列を表わすアドレスを格納する、上記(12)に記載の方法。
(22)前記ポインタ配列の任意のエントリに対し、前記任意のエントリによって識別される少なくとも1つの格納要素が、前記ポインタ配列の他のエントリによって識別される少なくとも1つの格納要素に対して独立している、上記(12)に記載の方法。
(23)複数のデータ要素をそれぞれに含むデータ・ベクトルを使用する演算を処理するための方法ステップを実行するための、機械により実行可能な命令のプログラムを具体的に具現化する、機械により読取り可能なプログラム格納装置において、前記方法ステップが、
データ・ベクトルのデータ要素を格納するための複数の格納要素を含むベクトル・データ・ファイルを提供するステップと、
複数のエントリを有するポインタ配列を提供するステップであって、各エントリが前記データ・ベクトルの少なくとも1つのデータ要素を格納するための前記ベクトル・データ・ファイル内の少なくとも1つの格納要素を識別し、前記ポインタ配列内の少なくとも1つの特定のエントリに対し、その特定のエントリによって識別される少なくとも1つの格納要素が前記ベクトル・データ・ファイルの任意の開始アドレスを有するように構成されたステップと
を含んでいるプログラム格納装置。
(24)前記ポインタ配列の任意のエントリに対し、前記任意のエントリによって識別される少なくとも1つの格納要素が、ベクトル・データ・ファイル内の任意の開始アドレスを有する、上記(23)に記載のプログラム格納装置。
(25)前記ポインタ配列のエントリの少なくとも1つを、前記ベクトル・データ・ファイルの少なくとも1つのデータ要素から読み出されるデータに基づいて更新するステップ
をさらに含む、上記(23)に記載のプログラム格納装置。
(26)前記ポインタ配列のエントリの少なくとも1つを、前記ポインタ配列の少なくとも1つのエントリから読み出されるデータを増分することによって生成されるデータから読み出されるデータに基づいて更新するステップ
をさらに含む、上記(23)に記載のプログラム格納装置。
(27)前記ポインタ配列のエントリの少なくとも1つを、前記ポインタ配列の少なくとも1つのエントリから読み出されるデータに対して増分演算に実行することによって生成されるデータに基づいて更新するステップ
をさらに含む、上記(23)に記載のプログラム格納装置。
(28)前記ポインタ配列の少なくとも2つのエントリが同一論理演算の一部として更新される、上記(27)に記載のプログラム格納装置。
(29)前記増分演算がさらに、前記ポインタ配列の少なくとも1つのエントリから読み出されるデータに対するモジュロ演算およびストライド演算の少なくとも1つを含む、上記(27)に記載のプログラム格納装置。
(30)前記ポインタ配列の各エントリが、前記ベクトル・データ・ファイル内の少なくとも1つの格納要素の開始アドレスを格納する、上記(23)に記載のプログラム格納装置。
(31)前記ベクトル・データ・ファイルの格納要素が行と列のマトリックスに論理的に編成され、前記ポインタ配列の各エントリが前記ベクトル・データ・ファイル内の少なくとも1つの要素の行と列を表わすアドレスを格納する、上記(23)に記載のプログラム格納装置。
(32)ベクトル・ファイル・データの格納要素が行と列のマトリックスに論理的に編成され、前記ポインタ配列の各配列が、前記ベクトル・データ・ファイル内の単一要素の行と列を表わすアドレスを格納する、上記(23)に記載のプログラム格納装置。
(33)前記ポインタ配列の任意のエントリに対し、前記任意のエントリによって識別される少なくとも1つの格納要素が、前記ポインタ配列の他のエントリによって識別される少なくとも1つの格納要素に対して独立している、上記(23)に記載のプログラム格納装置。
【図面の簡単な説明】
【図1】本発明を使用する単一命令複数データ(SIMD)デジタル信号プロセッサ(DSP)またはメディア・プロセッサを示す略図である。
【図2】本発明による、8つのエントリ・ポインタ・アドレス・ファイルと、512のエントリ・ベクトル・データ・ファイルと、4つの要素から成る1つの任意のサブベクトルへのアクセスとを含む、16ビット要素のベクトル用のベクトル・データ・ファイルの一実施形態を示す略図である。
【図3】本発明による、3つのベクトルを含むデータ・レジスタ区分の例証としての例を示す略図である。
【図4】本発明による、1つのベクトルのためのデータ・レジスタ区分の別の例証としての例を示す略図である。
【図5】本発明による、新しいアドレス・マルチプレクサならびにストライドおよびモジュロ・アドレス指定機能を示す、アドレス増分器の代替的実施形態の略図である。
【符号の説明】
100 プロセッサ
101 命令メモリ
103 ベクトル・レジスタ・ファイル
102 命令ユニット
104 ベクトル演算装置
105 データ・メモリ
151 書込みデータ・ポート
152 書込みデータ・ポート
153 読取りデータ・ポート
154 読取りデータ・ポート

Claims (20)

  1. 複数のデータ要素をそれぞれに含むデータ・ベクトルを使用する演算をプロセッサによって処理するためのシステムにおいて、
    データ・ベクトルのデータ要素を格納するための複数の格納要素を含むベクトル・データ・ファイルと、
    バスによって前記ベクトル・データ・ファイルに結合されるベクトル・アドレス・ポインタ配列であって、複数のエントリを含み、プロセッサによってアドレス指定されて各エントリがベクトル・データ・ファイル内の少なくとも1つの格納要素を識別するようにした、ベクトル・アドレス・ポインタ配列とを含み、
    前記データ・ベクトルの少なくとも1つのデータ要素を格納するための少なくとも1つの格納要素であって、前記ベクトル・アドレス・ポインタ配列の少なくとも1つの特定のエントリに対し、その特定のエントリによって識別される少なくとも1つの格納要素が、前記ベクトル・データ・ファイルの任意の開始アドレスを有し、
    前記ベクトル・アドレス・ポインタ配列の任意のエントリに対し、その任意のエントリによって識別される少なくとも1つの格納要素が、ベクトル・データ・ファイルの任意の開始アドレスを含む、システム。
  2. 前記ベクトル・アドレス・ポインタ配列が、前記ベクトル・データ・ファイル内の少なくとも1つのデータ要素から読み出されるデータに基づいて更新される少なくとも1つのエントリを含む、請求項1に記載のシステム。
  3. 前記ベクトル・アドレス・ポインタ配列が、前記ベクトル・アドレス・ポインタ配列の少なくとも1つのエントリから読み出されるデータを増分することによって生成されるデータに基づいて更新される少なくとも1つのエントリを含む、請求項1に記載のシステム。
  4. 前記ベクトル・アドレス・ポインタ配列が、前記ベクトル・アドレス・ポインタ配列の少なくとも1つのエントリから読み出されるデータに対し増分演算を実行することによって生成されるデータに基づいて更新される少なくとも1つのエントリを含む、請求項1に記載のシステム。
  5. 前記ベクトル・アドレス・ポインタ配列が、同一論理演算の一部として更新される少なくとも2つのエントリを含む、請求項4に記載のシステム。
  6. 前記増分演算がモジュロ演算およびストライド演算の少なくとも1つを含む、請求項4に記載のシステム。
  7. 前記ベクトル・アドレス・ポインタ配列の各エントリが、前記ベクトル・データ・ファイル内の少なくとも1つの格納要素の開始アドレスを含む、請求項1に記載のシステム。
  8. 前記ベクトル・データ・ファイルの格納要素が行と列のマトリックスに論理的に編成され、前記ベクトル・アドレス・ポインタ配列の各エントリが前記ベクトル・データ・ファイル内の少なくとも1つの要素の行と列を表わすアドレスを含む、請求項1に記載のシステム。
  9. 前記ベクトル・ファイル・データの格納要素が行と列のマトリックスに論理編成され、前記ベクトル・アドレス・ポインタ配列の各配列がベクトル・データ・ファイル内の単一要素の行と列を表わすアドレスを含む、請求項1に記載のシステム。
  10. 前記ベクトル・アドレス・ポインタ配列内の任意のエントリに対し、前記任意エントリによって識別される少なくとも1つの格納要素が、前記ベクトル・アドレス・ポインタ配列の他のエントリによって識別される少なくとも1つの格納要素に対して独立している、請求項1に記載のシステム。
  11. 複数のデータ要素をそれぞれに含むデータ・ベクトルを使用する演算をプロセッサによって処理するための方法において、
    データ・ベクトルのデータ要素を格納するための複数の格納要素を含むベクトル・データ・ファイルを提供するステップと、
    複数のエントリを有するポインタ配列を提供するステップであって、プロセッサによってアドレス指定されて各エントリが前記データ・ベクトルの少なくとも1つのデータ要素を格納するための前記ベクトル・データ・ファイル内の少なくとも1つの格納要素を識別し、前記ベクトル・アドレス・ポインタ配列内の少なくとも1つの特定のエントリに対し、その特定のエントリによって識別される少なくとも1つの格納要素が前記ベクトル・データ・ファイルの任意の開始アドレスを有するように構成されたステップとを含み、
    前記ベクトル・アドレス・ポインタ配列内の任意のエントリに対し、前記任意のエントリによって識別される少なくとも1つの格納要素が前記ベクトル・データ・ファイルの任意の開始アドレスを有する、
    方法。
  12. 前記ベクトル・アドレス・ポインタ配列のエントリの少なくとも1つを、前記ベクトル・データ・ファイル内の少なくとも1つのデータ要素から読み出されるデータに基づいて更新するステップ
    をさらに含む、請求項10に記載の方法。
  13. 前記ベクトル・アドレス・ポインタ配列のエントリの少なくとも1つを、前記ベクトル・アドレス・ポインタ配列の少なくとも1つのエントリから読み出されるデータを増分することによって生成されるデータから読み出されるデータに基づいて更新するステップ
    をさらに含む、請求項10に記載の方法。
  14. 前記ベクトル・アドレス・ポインタ配列のエントリの少なくとも1つを、前記ベクトル・アドレス・ポインタ配列の少なくとも1つのエントリから読み出されるデータに増分演算を実行することによって生成されるデータに基づいて更新するステップ
    をさらに含む、請求項10に記載の方法。
  15. 前記ベクトル・アドレス・ポインタ配列の少なくとも2つのエントリが同一論理演算の一部として更新される、請求項14に記載の方法。
  16. 前記増分演算が、前記ベクトル・アドレス・ポインタ配列の少なくとも1つのエントリから読み出されるデータに対するモジュロ演算およびストライド演算の少なくとも1つをさらに含む、請求項14に記載の方法。
  17. 前記ベクトル・アドレス・ポインタ配列の各エントリが、前記ベクトル・データ・ファイル内の少なくとも1つの格納要素の開始アドレスを格納する、請求項10に記載の方法。
  18. 前記ベクトル・データ・ファイルの格納要素が行と列のマトリックスに論理的に編成され、前記ベクトル・アドレス・ポインタ配列の各エントリが、前記ベクトル・データ・ファイルの少なくとも1つの要素の行と列を表わすアドレスを格納する、請求項10に記載の方法。
  19. ベクトル・ファイル・データの格納要素が行と列のマトリックスに論理的に編成され、前記ベクトル・アドレス・ポインタ配列の各配列が、前記ベクトル・データ・ファイルの単一要素の行と列を表わすアドレスを格納する、請求項10に記載の方法。
  20. 前記ベクトル・アドレス・ポインタ配列の任意のエントリに対し、前記任意のエントリによって識別される少なくとも1つの格納要素が、前記ベクトル・アドレス・ポインタ配列の他のエントリによって識別される少なくとも1つの格納要素に対して独立している、請求項10に記載の方法。
JP2001051897A 2000-02-29 2001-02-27 演算処理システム、演算処理方法およびそのプログラム格納装置 Expired - Fee Related JP3940269B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/514,497 US6665790B1 (en) 2000-02-29 2000-02-29 Vector register file with arbitrary vector addressing
US09/514497 2000-02-29

Publications (2)

Publication Number Publication Date
JP2001273277A JP2001273277A (ja) 2001-10-05
JP3940269B2 true JP3940269B2 (ja) 2007-07-04

Family

ID=24047424

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001051897A Expired - Fee Related JP3940269B2 (ja) 2000-02-29 2001-02-27 演算処理システム、演算処理方法およびそのプログラム格納装置

Country Status (6)

Country Link
US (2) US6665790B1 (ja)
JP (1) JP3940269B2 (ja)
KR (1) KR100447294B1 (ja)
CA (1) CA2337784A1 (ja)
GB (1) GB2365588B (ja)
TW (1) TW484074B (ja)

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6665790B1 (en) * 2000-02-29 2003-12-16 International Business Machines Corporation Vector register file with arbitrary vector addressing
US7010004B2 (en) * 2001-08-03 2006-03-07 Optibase Ltd. Method for multiplexing data for packet networks
US6931400B1 (en) 2001-08-21 2005-08-16 At&T Corp. Method and system for identifying representative trends using sketches
GB2382674B (en) * 2001-10-31 2005-11-16 Alphamosaic Ltd Data access in a processor
US20100274988A1 (en) * 2002-02-04 2010-10-28 Mimar Tibet Flexible vector modes of operation for SIMD processor
US20030221086A1 (en) * 2002-02-13 2003-11-27 Simovich Slobodan A. Configurable stream processor apparatus and methods
DE10206830B4 (de) * 2002-02-18 2004-10-14 Systemonic Ag Verfahren und Anordnung zur Zusammenführung von Daten aus parallelen Datenpfaden
US6915411B2 (en) * 2002-07-18 2005-07-05 International Business Machines Corporation SIMD processor with concurrent operation of vector pointer datapath and vector computation datapath
US7793084B1 (en) 2002-07-22 2010-09-07 Mimar Tibet Efficient handling of vector high-level language conditional constructs in a SIMD processor
US7580482B2 (en) 2003-02-19 2009-08-25 Endres Thomas J Joint, adaptive control of equalization, synchronization, and gain in a digital communications receiver
US7017028B2 (en) * 2003-03-14 2006-03-21 International Business Machines Corporation Apparatus and method for updating pointers for indirect and parallel register access
JP2004302647A (ja) * 2003-03-28 2004-10-28 Seiko Epson Corp ベクトルプロセッサおよびレジスタのアドレス指定方法
US20040236920A1 (en) * 2003-05-20 2004-11-25 Sheaffer Gad S. Methods and apparatus for gathering and scattering data associated with a single-instruction-multiple-data (SIMD) operation
US7313788B2 (en) * 2003-10-29 2007-12-25 International Business Machines Corporation Vectorization in a SIMdD DSP architecture
US7945760B1 (en) * 2004-04-01 2011-05-17 Altera Corporation Methods and apparatus for address translation functions
US7302627B1 (en) * 2004-04-05 2007-11-27 Mimar Tibet Apparatus for efficient LFSR calculation in a SIMD processor
US7873812B1 (en) 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture
US7850400B2 (en) * 2004-11-25 2010-12-14 Freyssinet International (Stup) Stabilized soil structure and facing elements for its construction
US20060149938A1 (en) * 2004-12-29 2006-07-06 Hong Jiang Determining a register file region based at least in part on a value in an index register
TWI277876B (en) * 2005-10-28 2007-04-01 Via Tech Inc Data storage and transfer method
TW200739363A (en) * 2006-04-04 2007-10-16 Nat Univ Chung Cheng Flexible load and storage device for multimedia applications
US8135897B2 (en) 2006-05-16 2012-03-13 St-Ericsson Sa Memory architecture
US7788471B2 (en) * 2006-09-18 2010-08-31 Freescale Semiconductor, Inc. Data processor and methods thereof
US7441099B2 (en) * 2006-10-03 2008-10-21 Hong Kong Applied Science and Technology Research Institute Company Limited Configurable SIMD processor instruction specifying index to LUT storing information for different operation and memory location for each processing unit
FR2918190B1 (fr) * 2007-06-26 2009-09-18 Thales Sa Dispositif d'adressage pour processeur parallele.
US8122229B2 (en) * 2007-09-12 2012-02-21 Convey Computer Dispatch mechanism for dispatching instructions from a host processor to a co-processor
US9710384B2 (en) 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US8561037B2 (en) 2007-08-29 2013-10-15 Convey Computer Compiler for generating an executable comprising instructions for a plurality of different instruction sets
US8156307B2 (en) * 2007-08-20 2012-04-10 Convey Computer Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set
US8095735B2 (en) 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US9015399B2 (en) 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
US10020037B2 (en) * 2007-12-10 2018-07-10 Intel Corporation Capacity register file
US8051226B2 (en) 2008-06-13 2011-11-01 Freescale Semiconductor, Inc. Circular buffer support in a single instruction multiple data (SIMD) data processor
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
US8205066B2 (en) * 2008-10-31 2012-06-19 Convey Computer Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor
US20100115233A1 (en) * 2008-10-31 2010-05-06 Convey Computer Dynamically-selectable vector register partitioning
US8423745B1 (en) 2009-11-16 2013-04-16 Convey Computer Systems and methods for mapping a neighborhood of data to general registers of a processing element
US8635431B2 (en) 2010-12-08 2014-01-21 International Business Machines Corporation Vector gather buffer for multiple address vector loads
KR20120134549A (ko) 2011-06-02 2012-12-12 삼성전자주식회사 Simd 프로세서를 이용한 병렬 연산 처리 장치 및 방법
SE537423C2 (sv) 2011-12-20 2015-04-21 Mediatek Sweden Ab Digital signalprocessor och förfarande för adressering av ett minne i en digital signalprocessor
US20130332701A1 (en) * 2011-12-23 2013-12-12 Jayashankar Bharadwaj Apparatus and method for selecting elements of a vector computation
US10430190B2 (en) 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
US9569211B2 (en) 2012-08-03 2017-02-14 International Business Machines Corporation Predication in a vector processor
US9575755B2 (en) 2012-08-03 2017-02-21 International Business Machines Corporation Vector processing in an active memory device
US9632777B2 (en) 2012-08-03 2017-04-25 International Business Machines Corporation Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry
US9003160B2 (en) 2012-08-03 2015-04-07 International Business Machines Corporation Active buffered memory
US9594724B2 (en) 2012-08-09 2017-03-14 International Business Machines Corporation Vector register file
US9268571B2 (en) * 2012-10-18 2016-02-23 Qualcomm Incorporated Selective coupling of an address line to an element bank of a vector register file
US8972782B2 (en) 2012-11-09 2015-03-03 International Business Machines Corporation Exposed-pipeline processing element with rollback
US9639503B2 (en) * 2013-03-15 2017-05-02 Qualcomm Incorporated Vector indirect element vertical addressing mode with horizontal permute
US10013253B2 (en) * 2014-12-23 2018-07-03 Intel Corporation Method and apparatus for performing a vector bit reversal
US9785437B2 (en) * 2014-12-23 2017-10-10 Intel Corporation Method and apparatus for performing a vector bit reversal and crossing
GB2540940B (en) * 2015-07-31 2018-01-03 Advanced Risc Mach Ltd An apparatus and method for transferring a plurality of data structures between memory and one or more vectors of data elements stored in a register bank
CN111580865B (zh) * 2016-01-20 2024-02-27 中科寒武纪科技股份有限公司 一种向量运算装置及运算方法
US10762164B2 (en) 2016-01-20 2020-09-01 Cambricon Technologies Corporation Limited Vector and matrix computing device
CN111651205B (zh) * 2016-04-26 2023-11-17 中科寒武纪科技股份有限公司 一种用于执行向量内积运算的装置和方法
JP2017228213A (ja) * 2016-06-24 2017-12-28 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10776118B2 (en) * 2016-09-09 2020-09-15 International Business Machines Corporation Index based memory access using single instruction multiple data unit
KR102659495B1 (ko) 2016-12-02 2024-04-22 삼성전자주식회사 벡터 프로세서 및 그 제어 방법
JP6500266B2 (ja) * 2016-12-13 2019-04-17 株式会社アクセル ディジタル信号処理装置
US11042375B2 (en) * 2017-08-01 2021-06-22 Arm Limited Counting elements in data items in a data processing apparatus
US11175915B2 (en) * 2018-10-10 2021-11-16 Micron Technology, Inc. Vector registers implemented in memory
US12112167B2 (en) * 2020-06-27 2024-10-08 Intel Corporation Matrix data scatter and gather between rows and irregularly spaced memory locations
US11782871B2 (en) 2021-04-27 2023-10-10 Microchip Technology Inc. Method and apparatus for desynchronizing execution in a vector processor
DE112022000529T5 (de) * 2021-04-27 2023-11-16 Microchip Technology Inc. Verfahren und vorrichtung für gather/scatter-vorgänge in einem vektorprozessor

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6123275A (ja) 1984-07-11 1986-01-31 Nec Corp ベクトル処理装置
JPS62120574A (ja) 1985-11-20 1987-06-01 Fujitsu Ltd ベクトル処理装置
US4888679A (en) * 1988-01-11 1989-12-19 Digital Equipment Corporation Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements
JP2607689B2 (ja) * 1989-07-10 1997-05-07 株式会社日立製作所 ベクトル処理装置
JPH0444165A (ja) * 1990-06-12 1992-02-13 Nec Corp 対称連立一次方程式の求解方式
US5392443A (en) * 1991-03-19 1995-02-21 Hitachi, Ltd. Vector processor with a memory assigned with skewed addresses adapted for concurrent fetching of a number of vector elements belonging to the same vector data
US5493687A (en) * 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
US5528550A (en) * 1993-05-28 1996-06-18 Texas Instruments Incorporated Apparatus, systems and methods for implementing memory embedded search arithmetic logic unit
US5669013A (en) * 1993-10-05 1997-09-16 Fujitsu Limited System for transferring M elements X times and transferring N elements one time for an array that is X*M+N long responsive to vector type instructions
US5689653A (en) * 1995-02-06 1997-11-18 Hewlett-Packard Company Vector memory operations
US6016395A (en) * 1996-10-18 2000-01-18 Samsung Electronics Co., Ltd. Programming a vector processor and parallel programming of an asymmetric dual multiprocessor comprised of a vector processor and a risc processor
US5933650A (en) * 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6288723B1 (en) * 1998-04-01 2001-09-11 Intel Corporation Method and apparatus for converting data format to a graphics card
US6266759B1 (en) * 1998-12-14 2001-07-24 Cray, Inc. Register scoreboarding to support overlapped execution of vector memory reference instructions in a vector processor
US6308252B1 (en) * 1999-02-04 2001-10-23 Kabushiki Kaisha Toshiba Processor method and apparatus for performing single operand operation and multiple parallel operand operation
US6665790B1 (en) * 2000-02-29 2003-12-16 International Business Machines Corporation Vector register file with arbitrary vector addressing

Also Published As

Publication number Publication date
CA2337784A1 (en) 2001-08-29
US20040103262A1 (en) 2004-05-27
TW484074B (en) 2002-04-21
JP2001273277A (ja) 2001-10-05
GB2365588A (en) 2002-02-20
GB2365588B (en) 2004-08-25
GB0103558D0 (en) 2001-03-28
KR100447294B1 (ko) 2004-09-07
US7467288B2 (en) 2008-12-16
US6665790B1 (en) 2003-12-16
KR20010085614A (ko) 2001-09-07

Similar Documents

Publication Publication Date Title
JP3940269B2 (ja) 演算処理システム、演算処理方法およびそのプログラム格納装置
US7386703B2 (en) Two dimensional addressing of a matrix-vector register array
US5832290A (en) Apparatus, systems and method for improving memory bandwidth utilization in vector processing systems
US7308559B2 (en) Digital signal processor with cascaded SIMD organization
US7017028B2 (en) Apparatus and method for updating pointers for indirect and parallel register access
US7437532B1 (en) Memory mapped register file
US5299321A (en) Parallel processing device to operate with parallel execute instructions
US5748515A (en) Data processing condition code flags
US5881263A (en) Non-instruction base register addressing in a data processing apparatus
US8713284B1 (en) Methods and apparatus for address translation functions
US5881259A (en) Input operand size and hi/low word selection control in data processing systems
JPS619760A (ja) ベクトル処理システム
JP3641031B2 (ja) 命令装置
JP3866513B2 (ja) データストリーミングのためのコンピュータのプロセッサ及び方法
US7441099B2 (en) Configurable SIMD processor instruction specifying index to LUT storing information for different operation and memory location for each processing unit
US7111155B1 (en) Digital signal processor computation core with input operand selection from operand bus for dual operations
EP0227900B1 (en) Three address instruction data processing apparatus
JPH0210467A (ja) ベクトル・レジスタ・フアイル
EP2267896A2 (en) Method for implementing finite impulse response filters
JP2002529847A (ja) ビットfifoを有するディジタル信号プロセッサ
US7107302B1 (en) Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units
US6820189B1 (en) Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation
US20040128475A1 (en) Widely accessible processor register file and method for use
JP3454393B2 (ja) データ処理装置
JPH03273592A (ja) キャッシュメモリ装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050201

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050428

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050509

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050801

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060214

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060512

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060530

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060809

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070330

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110406

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110406

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees