JP2006526194A - 超長命令語を用いたマルチプル・レジスター・ロード - Google Patents

超長命令語を用いたマルチプル・レジスター・ロード Download PDF

Info

Publication number
JP2006526194A
JP2006526194A JP2006502207A JP2006502207A JP2006526194A JP 2006526194 A JP2006526194 A JP 2006526194A JP 2006502207 A JP2006502207 A JP 2006502207A JP 2006502207 A JP2006502207 A JP 2006502207A JP 2006526194 A JP2006526194 A JP 2006526194A
Authority
JP
Japan
Prior art keywords
register
instruction
loading
vliw
data
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
JP2006502207A
Other languages
English (en)
Inventor
エイドリアン ジョン アンダーソン
マイケル ジョン ディヴィス
Original Assignee
イマジネイション テクノロジーズ リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by イマジネイション テクノロジーズ リミテッド filed Critical イマジネイション テクノロジーズ リミテッド
Publication of JP2006526194A publication Critical patent/JP2006526194A/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/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
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Abstract

複数のプロセッサ要素(6)からプロセッサ・システムが形成される。処理要素を伴った使用のために、複数のレジスタ(8)が提供され、命令デコーダ(4)は、マルチプル・レジスタ・ロード命令としての少なくとも1つの超長命令語(VLIW)の第1の部分をデコードするために構成される。VLIWの2番目に長い部分は、複数のレジスタの複数の個々のレジスタのローディングをエネーブルするためのデータとしてデコードされる。

Description

本発明は、複数の独立処理要素(independent processing elements)をアドレス指定(address)するために使用されるタイプの超長命令語(VLIW)を用いたマルチプル・レジスタ・ロードを伴うマルチプル・プロセス又はシステムに関連し、特に、大きな数のオペレーションを平行して実行するプロセッサのアレイとともに使用され得るマルチプル・レジスタ・ロード(multiple register loads)に関連する。
プロセッサ・システムにおいて、複数の独立の処理要素(processing elements)、処理得を実行するために処理要素によって要求されるデータ値を格納するためのレジスタ・バンク、メモリからレジスタ・バンク内にデータ値を挿入するためのメモリ・ユニット、及び、処理要素にオペレーション・コードを提供するための命令デコーダ、が一般的に提供される。そのようなシステムは、超長命令語(VLIW)(一般的に、64ビットを超え、いくつかのフィールド内に分割され、独立処理要素を制御する)として知られるものによってアドレス指定される。VLIWは、命令デコーダ(又はVLIWプロセッサ)に提供される。VLIWプロセッサは通常、ロード/ストア・アーキテクチャとして知られるものに基礎を置く。この中において、限定された数のVLIWフィールドが使用されて、アドレス・ユニットを介して、レジスタ・バンク内のプロセッサ・レジスタのローディング/ストアリングを制御する。
例えば、データ・ベクトル又はマトリックスを処理するために、処理要素をセット・アップするときに、これらのオペレーションを、いくつかの反復ループとして実行するために、コードを構造化する(structure)ことが通常の慣習である。これが為されるときに、反復ループの実行が要求されるコードのラインの殆どが、ループ実行が始まる前に、プロセッサ状態を初期化するために用いられる場合がしばしば起こる。これには、種々のレジスタへの、データ値のローディングが含まれる。VLIW内の限定された数のフィールドだけが、プロセッサ・レジスタのローディング/ストアリングのために使用されるので、このタイプの処理を実行するためのプロセッサのセット・アップは、マルチプル命令語(その各々が、小さな数のレジスタのローディングを指定する)を必要とすることになる。もし、より大きな数のレジスタが使用されているならば、このプロセスは複数回反復される必要がある。これを理由として、命令メモリは効率的に使用されず、命令メモリが、所定の機能(function)を実行するために、シリコンのより大きな領域が要求される。これはより高価となり、メモリのサイズが重要なファクターである場合に、特に問題となり得る。
本発明の好ましい実施例は、マルチプル・レジスタ・ロード命令として超長命令語(VLIW)の第1の部分をデコードし、システムと対応付けられたレジスタ・バンク内のマルチプル・レジスタのローディングを可能とするためのデータとしてVLIW命令語の2番目に大きい部分をデコードするように構成された命令デコーダを伴うプロセッサ・システムを提供する。
好ましくは、命令の2番目に大きな部分は、複数の単一ビット・フィールド(そのレジスタのローディングを可能とするために、その命令によってアドレス指定される各レジスタに対して1つづつ)を含む。
好ましくは、命令の2番目に大きな部分は、システム内の各(every)レジスタに対して単一のビット・フィールドを含む。
本発明は、より正確には添付の請求項(これに対して、今、参照が為されるべきである)において規定される。
本発明の好ましい実施例が、添付の図面を参照した例を用いてこれから詳細に説明される。
図1に示されるVLIW命令語は、トータルで96ビットが、13個の不均等であるが固定された長さの命令フィールドに分割されたものを含む。各フィールドは、単一の処理要素を制御するために使用される。処理要素の機能性(functionality)は、残りのビットがデータ(それについてオペレーションが実行されるべき)のためのソース及び行先レジスタを指定するために使用されているような、フィールド内のビットのサブ・セットによって規定される。最初の2つのフィールド(フィールド1及び2)は、処理要素への後続の命令で使用されるレジスタを初期化するために要求されるロード/ストア・タイプのオペレーションを規定するために使用される。
命令フィールド1は、図2に、より詳細に示される。このフィールドは、トータルで20ビットである。最初の6ビットは、オペレーション・コード(opcode)である。これは、このフィールドを最初に、ロード/ストア命令として認識することになる命令デコーダによって実行されるべきオペレーションを規定(define)するために用いられる。命令フィールドの残りの14ビットは、5つの別個の値、すなわち、arg1からarg5として番号付けされた引数(arguments)である。opcode及び引数は、1つのクロック・サイクルでのプロセッサ要素のオペレーション、及び、処理されるべきデータのソース及び行先のために使用されるレジスタを完全に規定する。
本発明の実施例におけるマルチプル・レジスタ・ロードで使用される命令のフォーマットが、図3に示される。この中で、図1のフィールド1〜12は、6ビットのopcode及びarg1からarg3に番号付けされた3つの引数によって置換されている。opcodeは、既知の処理システムでは使用されていない特別の意味を持ち、即時(immediate)引数として提供されたアドレスからのマルチプル・ロードを指定するか、レジスタ内に保持されたアドレスからのマルチプル・ロードを指定するかのいずれかのために使用される。arg1は、メモリ内のデータのフォーマットを指定するために使用される。これは、複合(complex)或いは倍精度フォーマットであり得る。arg2は、opcodeが即時アドレスからのロードを指定する場合の16ビット即時(immediate)アドレスか、opcodeがレジスタ内に保持されたアドレスからのロードを指定する場合のアドレス・レジスタの身元(identity)か、のいずれかを保持する。
arg3は、レジスタ・ロード・マスクである。これは、複数の単一ビット(各々が、ロードされ得るレジスタに対応する)を含むフィールドを備える。もし、ビット・フィールドが、1を含むならば、その位置と対応付けられたレジスタのロードが、エネーブルされる。もし、フィールドが、0を含むならば、ロードが、ディス・エーブルされる。この特定の例において、マシン(machine)は、データ処理要素と対応付けられた36個のレジスタ、及び、アドレシング・ユニットと対応付けられた更なる31個のレジスタを持つ。それ故、arg1のサイズは67ビットである。この命令におけるopcode及び引数のサイズは勿論、アプリケーションに固有のものである。本システムは、プロセッサ要素アレイ及びロードされるべきレジスタ・バンクのサイズに従って、命令をデコードするために構成されうる。
レジスタ内にロードされるべき値を保持するメモリは、好ましくは、1つの増分(unity increment)にリニア(linearly)にアクセスされる。レジスタ・ロード・マークで指定された、各レジスタに対する自動増加が実行される。それ故、一旦初期アドレスが、アクセスされると、システムは、各レジスタ内に交互に(in turn)値をロードしつつ、連続的アドレスを通じて循環(cycle through)する。
好ましくは、いくつかのレジスタがロードされるべきでない場合には、レジスタ・ロードが、到達される(reached)まで、自動増加(autoincrement)は、ディス・エーブルされる。それ故、もし、レジスタのうち28だけがロードされるべきであったならば、28の連続的メモリ位置が、それらの中にロードされるべきデータの格納のために使用されることになろう。
単一のVLIW命令内で指定されるが、マルチプル・レジスタ・ロードの実行は、いくつかのマシン実行サイクルを消費することが理解されるであろう。レジスタ・ロード・マスクによって指定されたように、個々のレジスタ・ロードを満足させるために要求されるマルチプル・メモリ・アクセスを生成するために、プロセッサの命令デコーダ・ユニットはこの命令の順序付けを取り扱う。図3に与えられる例において、フィールド13は依然としてそのプロセッサ要素の制御のために利用可能である(全てのシステムがこれを許容する訳ではないが)。もしマシンが、より少ないレジスタしか包含しないならば、レジスタ・ロード・マスクはより短くなり、マルチプル・ロード・オペレーションを伴って、他のプロセッサ要素を平行に制御するために、より多くのフィールドが利用可能となり得ることになる。
図4は、システム(その中で本発明が実現され得る)のブロック図を示す。これは、VLIW命令メモリ2を含む。これは、命令デコーダ4にカップルされる。命令デコーダは、それにVLIW命令を提供するVLIW命令メモリ4に命令フェッチ信号5を送る。命令デコーダは、プロセッサ要素6にカップルされて、VLIW命令メモリ2から検索されたVLIW命令語からそれらのプロセッサ要素に行先を定められたopcodesを提供する。それは、レジスタ8のバンク(これらは次に、レジスタ8内にロードされうる値を格納するデータ・メモリ10にカップルされる)にもカップルされる。
通常のオペレーションにおいて、命令デコーダ4は、プロセッサ要素6が、図1のフォーマット(すなわち、夫々1つが、それに対して行先が定められた、opcode及びアクセスされるべきレジスタを指定する種々の引数を備える、図2のタイプのフィールドを持つ)を持つ、VLIW命令内で受け取ったopcodesを実行することをひき起こす。
命令デコーダ4が、図3のフォーマットを有するマルチプル・ロード命令を受け取るときに、それは、マルチプル・ロードopcodeとして初期opcodeを認識する。メモリ内のデータのフォーマットは、arg1及びarg2によって識別され、次に、もしopcodeがレジスタ内に保持されたアドレスからのロードを指定し、もしopcodeが即時アドレスからのロード或いはアドレス・レジスタの身元(identity)を指定するならば、16ビット即時(immediate)アドレスを指定する。
もし、命令が即時メモリからロードされるべきものならば、データは最初は、データ・メモリ10で指定された即時アドレスから、レジスタの最初のものの中にロードされる。連続的アクセスは次に、各レジスタに対するそれぞれのビットが、ロードをエネーブルするか否かに従属して、データ・メモリ10の連続的アドレスから値を、レジスタ8内にロードする。
opcode6は、各レジスタが、その中にロードされたデータ・メモリからの同じ値を持たねばならぬことを指定し得るか、或いは、それは、連続的メモリ位置が、使用されるべきことを指定し得る。
VLIW命令語の例を示す。 図1のVLIW命令語の命令フィールド1を詳細に示す。 本発明の実施例で使用される命令語を示す。 本発明を実現するシステムのブロック図を示す。

Claims (7)

  1. 処理要素のアレイ、当該処理要素と共に使用するための複数のレジスタ、及び、マルチプル・レジスタ・ロード命令としての少なくとも1つの超長命令語(VLIW)の第1の部分及び複数のレジスタのうちの複数の個々のレジスタのローディングをエネーブルするためのデータとしてのVLIWの2番目に大きな部分をデコードするために構成された命令デコーダ、を備えるプロセッサ・システム。
  2. VLIW命令の前記2番目に大きい部分が、複数の単一ビットであって、その命令によってアドレス指定された各レジスタに対して当該複数の単一ビットの1つずつが、そのレジスタのローディングをエネーブルする、複数の単一ビットを含む、請求項1に記載のプロセッサ・システム。
  3. 各(every)レジスタに対して単一ビットが存在する、請求項2に記載のプロセッサ・システム。
  4. VLIW命令が、レジスタ内にロードされるべきデータのためのメモリ・アドレスを含む、以上のいずれかの請求項に記載のプロセッサ・システム。
  5. 連続的メモリ・アドレスをアドレス指定し、当該連続的アドレスからデータを、連続的にアドレス指定されたレジスタ内にロードする手段を含む、請求項4に記載のプロセッサ・システム。
  6. 単一ビットが、対応付けられたレジスタのローディングをエネーブルするための第1の値、及び、そのレジスタのローディングをディス・エーブルするための第2の値をとる、請求項2に記載のプロセッサ・システム。
  7. データを、プロセッサ・システム内の処理要素のアレイに対応付けられた複数のレジスタ内にローディングするための方法であって、
    マルチプル・ロード命令としてのVLIW命令の第1の部分を識別し、
    レジスタのローディングをエネーブルするためのデータとしてのVLIW命令の2番目に大きな部分を識別し、そして、
    VLIW命令の第2の部分内のデータに従属して、レジスタをローディングする、
    ステップを含む方法。
JP2006502207A 2003-01-27 2004-01-27 超長命令語を用いたマルチプル・レジスター・ロード Pending JP2006526194A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0301844A GB2397667A (en) 2003-01-27 2003-01-27 Multiple register load using a very long instruction word
PCT/GB2004/000343 WO2004068336A2 (en) 2003-01-27 2004-01-27 Load/store operation to/from multiple registers using a very long instruction word

Publications (1)

Publication Number Publication Date
JP2006526194A true JP2006526194A (ja) 2006-11-16

Family

ID=9951884

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006502207A Pending JP2006526194A (ja) 2003-01-27 2004-01-27 超長命令語を用いたマルチプル・レジスター・ロード

Country Status (5)

Country Link
US (1) US20040148490A1 (ja)
EP (1) EP1590733A2 (ja)
JP (1) JP2006526194A (ja)
GB (1) GB2397667A (ja)
WO (1) WO2004068336A2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7457932B2 (en) * 2005-12-30 2008-11-25 Intel Corporation Load mechanism
GB2523205B (en) * 2014-03-18 2016-03-02 Imagination Tech Ltd Efficient calling of functions on a processor

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2669158B2 (ja) * 1991-01-22 1997-10-27 三菱電機株式会社 データ処理装置
US5416911A (en) * 1993-02-02 1995-05-16 International Business Machines Corporation Performance enhancement for load multiple register instruction
JP2889845B2 (ja) * 1995-09-22 1999-05-10 松下電器産業株式会社 情報処理装置
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
US6212630B1 (en) * 1997-12-10 2001-04-03 Matsushita Electric Industrial Co., Ltd. Microprocessor for overlapping stack frame allocation with saving of subroutine data into stack area
US6324639B1 (en) * 1998-03-30 2001-11-27 Matsushita Electric Industrial Co., Ltd. Instruction converting apparatus using parallel execution code
KR20010052436A (ko) * 1999-03-31 2001-06-25 롤페스 요하네스 게라투스 알베르투스 병렬 데이터 처리
EP1050809A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA Computer instruction dependency
US6397324B1 (en) * 1999-06-18 2002-05-28 Bops, Inc. Accessing tables in memory banks using load and store address generators sharing store read port of compute register file separated from address register file
GB2363869B (en) * 2000-06-20 2004-06-23 Element 14 Inc Register addressing
US6950926B1 (en) * 2001-03-02 2005-09-27 Advanced Micro Devices, Inc. Use of a neutral instruction as a dependency indicator for a set of instructions
JP2002288121A (ja) * 2001-03-26 2002-10-04 Ando Electric Co Ltd データ転送回路および方法

Also Published As

Publication number Publication date
WO2004068336A3 (en) 2007-11-08
GB2397667A (en) 2004-07-28
WO2004068336A2 (en) 2004-08-12
GB0301844D0 (en) 2003-02-26
EP1590733A2 (en) 2005-11-02
US20040148490A1 (en) 2004-07-29

Similar Documents

Publication Publication Date Title
EP3695317B1 (en) Zero latency prefetching in caches
US11397583B2 (en) Conditional execution specification of instructions using conditional extension slots in the same execute packet in a VLIW processor
US20200394038A1 (en) Look up table with data element promotion
US20230325189A1 (en) Forming Constant Extensions in the Same Execute Packet in a VLIW Processor
US6499100B1 (en) Enhanced instruction decoding
US20240028338A1 (en) Histogram operation
KR100971626B1 (ko) 다수의 명령어 세트를 갖는 데이터 처리 장치 내에서의명령어 부호화
GB2024475A (en) Memory access controller
EP1267255A2 (en) Conditional branch execution in a processor with multiple data paths
JP5052713B2 (ja) 条件付き命令を備えるベクトルデータプロセッサ
US20230221955A1 (en) Vector bit transpose
US11314514B2 (en) Vector length querying instruction
US10963252B2 (en) Vector maximum and minimum with indexing
JP2006526194A (ja) 超長命令語を用いたマルチプル・レジスター・ロード
US20200371793A1 (en) Vector store using bit-reversed order
US11900112B2 (en) Vector reverse
JPH06149563A (ja) データ処理装置