JP2006526194A - 超長命令語を用いたマルチプル・レジスター・ロード - Google Patents
超長命令語を用いたマルチプル・レジスター・ロード Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 claims description 5
- 230000001419 dependent effect Effects 0.000 claims 1
- 101100379633 Xenopus laevis arg2-a gene Proteins 0.000 description 5
- 101150088826 arg1 gene Proteins 0.000 description 5
- 101150026173 ARG2 gene Proteins 0.000 description 2
- 101100005166 Hypocrea virens cpa1 gene Proteins 0.000 description 2
- 101100379634 Xenopus laevis arg2-b gene Proteins 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 101100166068 Schizosaccharomyces pombe (strain 972 / ATCC 24843) arg5 gene Proteins 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
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は、各レジスタが、その中にロードされたデータ・メモリからの同じ値を持たねばならぬことを指定し得るか、或いは、それは、連続的メモリ位置が、使用されるべきことを指定し得る。
Claims (7)
- 処理要素のアレイ、当該処理要素と共に使用するための複数のレジスタ、及び、マルチプル・レジスタ・ロード命令としての少なくとも1つの超長命令語(VLIW)の第1の部分及び複数のレジスタのうちの複数の個々のレジスタのローディングをエネーブルするためのデータとしてのVLIWの2番目に大きな部分をデコードするために構成された命令デコーダ、を備えるプロセッサ・システム。
- VLIW命令の前記2番目に大きい部分が、複数の単一ビットであって、その命令によってアドレス指定された各レジスタに対して当該複数の単一ビットの1つずつが、そのレジスタのローディングをエネーブルする、複数の単一ビットを含む、請求項1に記載のプロセッサ・システム。
- 各(every)レジスタに対して単一ビットが存在する、請求項2に記載のプロセッサ・システム。
- VLIW命令が、レジスタ内にロードされるべきデータのためのメモリ・アドレスを含む、以上のいずれかの請求項に記載のプロセッサ・システム。
- 連続的メモリ・アドレスをアドレス指定し、当該連続的アドレスからデータを、連続的にアドレス指定されたレジスタ内にロードする手段を含む、請求項4に記載のプロセッサ・システム。
- 単一ビットが、対応付けられたレジスタのローディングをエネーブルするための第1の値、及び、そのレジスタのローディングをディス・エーブルするための第2の値をとる、請求項2に記載のプロセッサ・システム。
- データを、プロセッサ・システム内の処理要素のアレイに対応付けられた複数のレジスタ内にローディングするための方法であって、
マルチプル・ロード命令としてのVLIW命令の第1の部分を識別し、
レジスタのローディングをエネーブルするためのデータとしてのVLIW命令の2番目に大きな部分を識別し、そして、
VLIW命令の第2の部分内のデータに従属して、レジスタをローディングする、
ステップを含む方法。
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)
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)
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 |
WO2000060457A1 (en) * | 1999-03-31 | 2000-10-12 | Koninklijke Philips Electronics N.V. | Parallel data processing |
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 | データ転送回路および方法 |
-
2003
- 2003-01-27 GB GB0301844A patent/GB2397667A/en not_active Withdrawn
- 2003-03-26 US US10/397,966 patent/US20040148490A1/en not_active Abandoned
-
2004
- 2004-01-27 EP EP04705450A patent/EP1590733A2/en not_active Withdrawn
- 2004-01-27 WO PCT/GB2004/000343 patent/WO2004068336A2/en not_active Application Discontinuation
- 2004-01-27 JP JP2006502207A patent/JP2006526194A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
EP1590733A2 (en) | 2005-11-02 |
WO2004068336A2 (en) | 2004-08-12 |
US20040148490A1 (en) | 2004-07-29 |
GB2397667A (en) | 2004-07-28 |
WO2004068336A3 (en) | 2007-11-08 |
GB0301844D0 (en) | 2003-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
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 | |
US20240176620A1 (en) | Look-up table write | |
US6499100B1 (en) | Enhanced instruction decoding | |
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) | データ処理装置 |