JPH0477346B2 - - Google Patents

Info

Publication number
JPH0477346B2
JPH0477346B2 JP25710986A JP25710986A JPH0477346B2 JP H0477346 B2 JPH0477346 B2 JP H0477346B2 JP 25710986 A JP25710986 A JP 25710986A JP 25710986 A JP25710986 A JP 25710986A JP H0477346 B2 JPH0477346 B2 JP H0477346B2
Authority
JP
Japan
Prior art keywords
address
register
index
counter
instruction
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
Application number
JP25710986A
Other languages
English (en)
Other versions
JPS62134763A (ja
Inventor
Jonasan Auabatsuchi Danieru
Chi Chen Teien
Yakobu Pauru Uorufuganku
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 JPS62134763A publication Critical patent/JPS62134763A/ja
Publication of JPH0477346B2 publication Critical patent/JPH0477346B2/ja
Granted legal-status Critical Current

Links

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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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

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)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】
A 産業上の利用分野 本考案は、化学用プロセツサに関する。さらに
詳しくは,化学用プロセツサの操作において有用
なメモリにアクセスするために、アドレス・ベク
トルを発生するためのフレキシブルな装置に関す
る。 B 従来の技術およびその問題点 CDC7600(商標)やクレイ1(商標)等のマシ
ンによつて代表される、超高速科学計算用の「ス
ーパー」コンピユータは、「3アドレス・コード」
と呼ばれる命令を用いる。3アドレス・コード操
作とは、各命令ワードが3アドレスを持つことに
よつて特徴づけられる。3アドレスのうちの2つ
はオペランド用であり、1つは結果用である。通
常、2つのオペランドは、所定のマシン・サイク
ルの間に浮動小数点数演算論理機構に与えられ、
演算論理機構からの結果は、同じサイクルの間に
メモリに記憶し直される。パイプライン化された
システムでは、該サイクルの間に記憶される結果
は、より早期の命令で与えられたオペランドに対
する操作に対応する。 従来の3アドレス・コードを扱うマシンは、ア
ドレス指定機構に制限を加えていた。通常、その
ようなマシンはスカラ・モードまたは高速ベクト
ル・モードで作動する。スカラ・モードでは、ア
ドレスは、各命令サイクルの間にソフトウエアに
よつて独立して生成または付与される。高速ベク
トル・モードでは、発生したアドレスは、マシン
によつて、各サイクル毎にアドレスを1つ増すカ
ウンタによつて、指標づけられる。 このような従来技術におけるアドレス指定能力
は、化学用コンピユターで望まれる多くの操作に
は不十分である。例えば、いわゆる分散・集合ベ
クトル操作(後述する第4A図および第4B図参
照)は、標準的なベクトル・モードのマシンまた
はスカラ・モードのマシンでは極めてわずらわし
いものとなる。さらに、従来のマシンでは、アド
レスの非自明の更新を必要とするベクトルに対す
る、他の簡単な操作は、比較的遅いスカラ・モー
ドで行わなければならない。 C 問題点を解決するための手段 本発明は、従来の3アドレス・コード式「スー
パー」コンピユターに共通する硬直した順序づけ
を克服する化学用コンピユターの、アドレス発生
に用いられるベクトル・レジスタの指標づけをフ
レキシブルに行うアーキテクチヤを提供するもの
である。 一面では、本発明は、連続するサイクルにおい
て、命令ワードに応答し、rビツトのアドレスに
よつてアドレス指定可能なデータ・オブジエクト
を記憶するメモリのために、アドレスを発生させ
るための装置である。該メモリは、少なくとも、
第1のrビツト・アドレス・ポートと関連する出
力レジスタ、第2のrビツト・アドレス・ポート
と関連する出力レジスタおよび第3のrビツト・
アドレス・レジスタと関連する入力レジスタを含
む。該装置は、第1、第2および第3の指標レジ
スタを含み、これらの指標レジスタは、それぞ
れ、rビツト・アドレス・ポートにアドレスとし
て与えるための変更可能な第1、第2および第3
の指標を記憶する。さらに、該装置は、1サイク
ルにおいて、命令ワードの少なくとも一部に応答
し、該サイクルの間に、独立して、第1、第2お
よび第3の指標を増加させるカウンタ手段を含
む。この面において、本装置は、第1、第2およ
び第3の指標レジスタのために、命令ワードから
直接、部分基底アドレスを与える手段も含む。さ
らに、1サイクルにおいて、命令ワードの少なく
とも1部に応答し、該サイクルの間に、独立し
て、第1、第2および第3の指標の少なくとも1
つを更新するために、第1、第2および第3の指
標レジスタの少なくとも1つの任意の指標を与え
る手段が追加される。 3つの独立した指標レジスタを規定し、命令ワ
ードの一部による制御の下、1または0増加する
カウンタを各レジスタに対応させることにより、
典型的な化学用コンピユターによる指標づけが提
供される。さらに、指標レジスタに与えるための
任意の指標を発生させる手段により、非自明の更
新がもたらされる。本発明は、ベクトル・モード
の指標づけと結びつけてアドレスの非自明な更新
を提供することにより、化学用プロセツサまたは
他のベクトル計算を行うプロセツサの能力を飛躍
的に高める。 D 実施例 好ましい実施例 以下、図面を参照しつつ、本発明の好ましい実
施例を説明する。第1図は、本発明に応じた浮動
小数点プロセツサのアーキテクチヤを示してい
る。第2A,2B,3,4A,4B図は、本発明
の応用を示している。第5図は、本実施例用の3
ポートRAMを示している。 第1A,1B,1C図では、本発明の具体例で
ある浮動小数点プロセツサのアーキテクチヤが示
されている。 該アーキテクチヤは、命令レジスタ102に、
連続するサイクルで命令ワードを与えるための順
序づけ手段10を含む。順序づけ手段10は命令
メモリ101のアドレス指定のための順序づけモ
ジユール100を含む。命令メモリ101からの
データは、命令レジスタ102にクロツクされ
る。命令レジスタ102の内容を、プロセツサの
命令ワードと呼ぶ。プロセツサが1つの命令ワー
ドを実行する時間を、1命令サイクルを呼ぶ。 該アーキテクチヤは、固定小数点手段20(第
1B図参照)を含む。該固定小数点手段20は、
1サイクルで命令ワードの一部に応答して、任意
の指標を独立して該サイクルの間に与えるための
ものである。指標の用途は以下で述べる。固定小
数点手段20は、固定小数点数の計算用のマイク
ロプロセツサ103を含む。また指標レジスタと
固定小数点メモリ(Xメモリ)105を含む。固
定小数点アドレス(Xアドレス)・カウンタ10
4も、固定小数点手段20に含まれる。固定小数
点アドレス・カウンタ104は、固定小数点メモ
リ105にアドレスを与える。 本実施例に従う浮動小数点手段30(第1C図
参照)は、浮動小数点メモリ(Fメモリ)106
を含む。Fメモリ106は、3ポートRAMから
成り立つているが、その説明は第5図に譲る。1
命令サイクルの間に、Fメモリ106は、第1の
rビツト・アドレス・ポート(Aアドレス・ポー
ト)107にて与えられるアドレスに記憶されて
いるデータ項目を、関連する出力ポート(A出力
ポート)108に取り出すとともに、第2のrビ
ツト・アドレス・ポート(Bアドレス・ポート)
109に与えられるアドレスに記憶されているデ
ータ項目を、関連する出力ポート(B出力ポー
ト)110に取りだし、さらに、入力ポート(C
入力ポート)111に与えられるデータ項目を、
第3のrビツト・アドレス・ポート(Cアドレ
ス・ポート)112にて与えられるアドレスに記
憶する。 また、浮動小数点手段30は、浮動小数点数演
算論理機構(F−ALU)113を含む。F−
ALU113は、Fメモリ106のA出力ポート
108およびB出力ポート110からのデータを
組み合わせ、結果を得る。該結果は、例えばd命
令サイクルのパイプライン遅れの後、メモリ10
6のC入力ポート111に与えられる。数dは、
演算論理機構113のパイプ深さと呼ばれる。 順序づけ手段10に関連する条件コード・マル
チプレクサ(mux)114は、マイクロプロセ
ツサ103によつて与えられるX条件コード(X
−CC)115と、F−ALU113によつて与え
られるF条件コード(F−CC)116のうちの
1つを選択し、選択したものを順序づけモジユー
ル100へ送る。 Aアドレス・ポート107,Bアドレス・ポー
ト109およびCアドレス・ポート112にアド
レスを与える手段は、Aカウンタ118,Bカウ
ンタ123およびCカウンタ128から成り、こ
れらはそれぞれ第1、第2、第3の指標レジスタ
を含んでいる。本実施例におけるアドレス付与手
段を記述するために、rは自然数で、かつR=2
**r(「**」は「r」がべき指数であることを
示す)とし、Fメモリ106には内部アドレスが
R個あるものとする。したがつて、Fメモリ10
6のアドレスは、rビツト・アドレスで指定する
ことができる。mはrより小さな自然数で、rビ
ツト・アドレスのための部分基底アドレスの長さ
であるとする。 Fメモリ106のAアドレス・ポート107に
与えられるアドレスの下位(r−m)桁117
は、Aカウンタ118の中の指標レジスタの下位
(r−m)ビツトから成る。Fメモリ106のA
アドレス・ポート107に与えられるアドレスの
上位mビツト119は、回路120の出力に由来
する。該回路120は、Aカウンタ118の上位
mビツトと、mビツト幅の部分基底アドレス(基
底(A))121のビツト毎のORを計算する。
ここで、部分基底アドレス121は、命令レジス
タ102からの命令ワードのうちのmビツト幅の
部分として与えられる。 Fメモリ106のBアドレス・ポート109に
与えられるアドレスの下位(r−m)桁122
は、Bカウンタ123の中の指標レジスタの下位
(r−m)ビツトから成る。Fメモリ106のB
アドレス・ポート109に与えられるアドレスの
上位mビツト124は、回路125の出力に由来
する。該回路125は、Bカウンタ123の上位
mビツトと、mビツト幅の部分基底アドレス(基
底(B))126のビツト毎のORを計算する。
ここで、部分基底アドレス126は、命令レジス
タ102からの命令ワードのうちのmビツト幅の
部分として与えられる。 Fメモリ106のCアドレス・ポート112に
与えられるアドレスの下位(r−m)桁127
は、Cカウンタ128の中の指標レジスタの下位
(r−m)ビツトから成る。Fメモリ106のC
アドレス・ポート112に与えられるアドレスの
上位mビツト129は、回路130の出力に由来
する。該回路130は、Cカウンタ128の上位
mビツトと、mビツト幅の部分基底アドレス(基
底(C))131のビツト毎のORを計算する。
ここで、部分基底アドレス131は、命令レジス
タ102からの命令ワードのうちのmビツト幅の
部分として与えられる。 命令メモリ101、順序づけモジユール10
0、マイクロプロセツサ103、固定小数点メモ
リ105,Xアドレス・カウンタ104、浮動小
数点メモリ106,Aカウンタ118,Bカウン
タ123,Cカウンタ128、メイン・メモリお
よび外部入出力機構は、システム・バス134を
経由して通信する。メイン・メモリと外部入出力
機構は、完全を期すために述べたのであり、第1
図には示されていない。 分岐即値命令、固定小数点即値命令および浮動
小数点即値命令の実行用に、命令レジスタ102
からシステム・バス134へ至るデータ経路が設
けられている。これらのデータ経路は、完全を期
すために述べたものであり、第1図には示されて
いない。 命令ワード、すなわち命令レジスタ102の内
容は、いくつかのフイールドに分割される。タイ
プ・フイールド138は、命令タイプを決定し、
それによつて、命令ワードの残りのビツトの意味
が順に決定される。命令タイプには、分岐即値操
作、固定小数点即値命令、浮動小数点即値命令用
のものと、メモリ101,105,106,メイ
ン・メモリ、外部入出力機構の間のデータの移動
用のものとがある。本発明に関連する命令タイプ
は、「計算」命令タイプである。 計算命令タイプでは、タイプ・フイールド13
8の外の命令ワードのビツトは、3つの大きなフ
イールドに再分化されている。1番目は、S命令
(順序づけ命令)フイールド139であり、条件
コード・マルチプレクサ114を制御するととも
に、順序づけモジユール100の操作を決定す
る。 2番目は、X命令(固定小数点命令)フイール
ド140であり、マイクロプロセツサ103、固
定小数点メモリ105,Xアドレス・カウンタ1
04,Aカウンタ118,Bカウンタ123およ
びCカウンタ128を制御する。X命令フイール
ド140は、5つのサブフイールド、つまり、ソ
ース・フイールド141,X操作フイールド14
2、宛先フイールド143、テスト・ビツトXT
145およびカウンタ・フイールド144に分割
される。カウンタ・フイールドには、4つのビツ
トx,a,bおよびcがある。ソース・フイール
ド141による制御の下、Xメモリ105のXデ
ータ・ポート150の内容、またはXアドレス・
カウンタ104の値、またはAカウンタ118の
値、またはBカウンタ123の値、またはCカウ
ンタ128の値は、システム・バス134を経由
してマイクロプロセツサ103にロードされる。
X操作フイールド142による制御の下、マイク
ロプロセツサ103にロードされたデータは、マ
イクロプロセツサ103に内的に記憶されている
データと論理的に組み合わされる。テスト・ビツ
トXT145が0の場合、前記組合わせの結果は
システム・バス134に戻される。そして、宛先
フイールド143による制御の下、前記結果は、
Xメモリ105のデータ・ポート、Xアドレス・
カウンタ104,Aカウンタ118,Bカウンタ
123,Cカウンタ128のうちの1つないし複
数にロードされたり、あるいはどれにもロードさ
れなかつたりする。テスト・ビツトXT145が
1の場合、宛先フイールド143は条件ゴード・
マスクとして解釈される。そして、該条件コー
ド・マスクによつて指定されるテストが前記結果
に適用され、X条件コード115が更新される。 カウンタ・フイールド144のビツトXが1の
場合は、Xアドレス・カウンタ104の中の指標
レジスタが増加される。カウンタ・フイールド1
44のビツトaが1の場合は、Aカウンタ118
の中の指標レジスタが増加される。カウンタ・フ
イールド144のビツトbが1の場合は、Bカウ
ンタ123の中の指標レジスタが増加される。カ
ウンタ・フイールド144のビツトcが1の場合
は、Cカウンタ128の中の指標レジスタが増加
される。カウンタが、宛先フイールド143によ
る制御の下、ロードされ、さらに、カウンタ・フ
イールド144による制御の下、増加される場合
には、ロードの方が増加よりも優先する。 命令サイクルにおいてXメモリ105のXデー
タ・ポート150にロードされるデータは、同命
令サイクルの終わりにおいてXアドレス・カウン
タ104が指示する位置に自動的に記憶される。 命令サイクルiにおいて、Xアドレス・カウン
タ104が変更されると、命令サイクルiの終わ
りにてカウンタが指示するメモリ位置の内容が、
命令サイクル(i+1)の終わりにおいてXデー
タ・ポート150にロードされる。この過程は、
パイプライン化が可能である。 3番目は、F命令(浮動小数点命令)フイール
ド146であり、5つのサブフイールド、つま
り、既に定義した基底A121、基底B126、
基底C131およびF操作フイールド147,
FTテスト・ビツト148を持つ。命令サイクル
の間に、Aカウンタ118,Bカウンタ123お
よびCカウンタ128の中の指標レジスタの値
は、X命令140による制御下で更新される前
に、上述したように、それぞれ回路120,12
5,130によつて、基底A121、基底B12
6、基底C131のフイールドの部分基底アドレ
スと組み合わされる。その結果発生するアドレス
A,B,Cは、それぞれAアドレス・ポート10
7,Bアドレス・ポート109,Cアドレス・ポ
ート112にロードされる。また、F操作フイー
ルド147の内容は、F操作レジスタ149の中
へパイプライン化されている。 次の命令サイクルでは、Aアドレス・ポート1
07により指定されるオペランドが、Fメモリ1
06のAオペランド・ポート108にロードされ
るとともに、Bアドレス・ポート109により指
定されるオペランドが、Bオペランド・ポート1
10にロードされる。同じ命令サイクルの間に、
オペランドは、ポート108,110からF−
ALU113にロードされる。また、同じ命令サ
イクルの間に、F操作レジスタ149の内容がF
−ALU113にロードされる。F−ALU113
の中では、レジスタ149の内容によつて指定さ
れる操作が、オペランドに対して適用される。さ
らにd(パイプライン深さ)命令サイクル後に、
結果は使用可能となり、FTテスト・ビツト14
8による制御の下、記憶またはテストの一方が行
われる。 FTテスト・ビツト148がOの場合は、F−
ALUによつてメモリ106のC入力ポート11
1に与えられるデータは、アドレスCに記憶され
る。FTテスト・ビツト148が1の場合は、C
アドレス112の先頭のmビツトは条件コー
ド・、マスクとして解釈され、このマスクにより
指定されるテストが、この命令サイクルにおい
て、F−ALU113により伝達される結果に対
して適用されるとともに、F条件コード116が
更新される。この過程はパイプライン化が可能で
ある。 1命令サイクルの間に条件コードX−CCI15
およびF−CC116のどれか1つが更新される
と、順序づけモジユール100による命令の選択
(次の命令サイクルの間に、命令レジスタ102
に取り出すためのもの)に影響が表れ得る。 応用例 1 ベクトル操作 パイプライン式浮動小数点プロセツサにおけ
る、ベクトル・レジスタを用いる操作の代表とし
て、2つのベクトルX=(X(O),……,X(N−
1))とY=(Y(O),……,Y(N−1))を、例
えば成分毎に掛け合わせて、つまり、i=O,…
…,N−1についてZ(i):=X(i)*Y(i)
として、第3のベクトルZ=(Z(O),……,Z
(N−1))を得る組合わせを挙げることができ
る。オペランド・ベクトルX,Yは、少なくとも
Nの長さのベクトル・レジスタからロードされ、
結果Zは少なくともNの長さのベクトル・レジス
タに記憶される。 M=2**mとし、L=2**(r−m)とす
る。第2A図に示されるように、Fメモリ106
を、それぞれの長さがLであるM個のベクトル・
レジスタのように使うことができる。i=O,…
…,M−1とすると、i番目のベクトル・レジス
タの機能は、メモリ106のiL,iL+1,……,
(i+1)L−1の位置により営まれる。 i番目のベクトル・レジスタの連続するL個の
アドレスを、以下のようにして、L個の連続する
命令サイクルの間に、例えばFメモリ106のA
アドレス・ポート107にて発生させることがで
きる。まず、X操作フイールド142による制御
の下、マイクロ・プロセツサ103は値Oを発生
し、それをシステム・バス134にのせる。次
に、値Oは、宛先フイールド143による制御の
下、Aカウンタ118の指標レジスタにロードさ
れる。続く命令の間に、カウンタ・フイールド1
44のビツトaによる制御の下、Aカウンタ11
8は指標を(L−1)回増加させる一方、基底A
121のフイールドは、値iを持つ。Aカウンタ
の中の指標レジスタの指標はL=2**(r−
m)より小さいままなので、該指標の先頭のm個
は零である。したがつて、Aアドレス107の先
頭のmビツト119は、基底A121のフイール
ドによつて指定される値と全く一致する。このよ
うにして、発生したAアドレスは、(* 2**
(r−m)+O),……(i*2**(r−m)+L
−1)となる。 表1.1および1.2は、プログラムと第1図に示さ
れるプロセツサ内の様々なレジスタの内容を例示
する。これらは、それぞれ、ベクトルXとYの成
分毎の積を求める。プログラムが実行される際の
ものである。p,g,sはベクトル・レジスタの
ナンバとする。ベクトルX,YはN=6の長さを
持つものとし、ベクトル・レジスタp,gの最初
の6個の位置に記憶されていると仮定する。ま
た、値Oがマイクロプロセツサ103の内部レジ
スタR,Oに記憶されているとする。表1,1の
内容は、ベクトルX、Yの成分毎の積を求め、結
果として生じるベクトルZをベクトル・レジスタ
Sの最初の6個の位置に記憶させるプログラムで
ある。 P=p*L,Q=p*L,S=s*Lとしてい
る。表1、2は、命令1から9をを実行後の、
A,B,Cカウンタ118,123,128の中
の指標レジスタ、A,B,Cアドレス107,1
12,127、オペランド108,110,F操
作レジスタ149および結果111の値を示す。
F−ALU113のパイプ深さd=2を仮定して
いる。 第2B図に示されるように、Fメモリ106を
もつと少ない個数に区分し、もつと長いベクト
ル・レジスタを作ることもできる。例えば、M/
2個のベクトル・レジスタに区分して、それぞれ
の長さを2Lとすることができる。この場合、i
番目のベクトル・レジスタは、i*2L,……,
(i+1)*2L−1の位置を占める。 i番目のベクトル・レジスタの2L個の連続す
るアドレスを、以下のようにして、2L個の連続
する命令サイクルの間に、例えばFメモリ106
のAアドレス・ポート107にて発生させること
ができる。まず、X命令フイールド140による
制御の下、値OはAカウンタ118の指標レジス
タにロードされる。続く命令の間に、カウンタ・
フイールド114のビツトaによる制御の下、A
カウンタ118はその指標レジスタを(2L−1)
回増加させる一方、基底A121のフイールドは
値2iを持つ。2iは偶数なので、基底Aの最下位の
ビツトはOである。指標レジスタの指標はL=2
**(r−m+1)より小さいので、該指標の先
頭の(m−1)個は零である。したがつて、Aア
ドレス107の先頭の(m−1)ビツトは、基底
Aの先頭の(m−1)ビツトと全く一致する、つ
まり、値iを表すとともに、後の(m+1)ビツ
トは、指標を表す。このようにして、発生したA
アドレスは、(i*2**(r−m+1)+O),
……,(i*2**(r−m+1)+2L−1)と
なる。 また、表1,2は、ベクトル操作の進行中(命
令1,2,……)にマイクロプロセツサ103,
Xアドレス・カウンタ104および固定小数点メ
モリ105は休んでおり、ベクトル操作と並行し
て自分自身の計算を行い得ることを示している。 2 一定のストライドを持つアドレス 計算する際に、一定のストライドmだけ異なる
例えばn個のアドレスa,a+m,a+2m,…
…,a+(n−1)mを発生させる必要がしばし
ば生じる。例えば、第3図では、Aはn行m列の
行列であり、行(A(O,O),……A(O,m−
1))i……i(A(n−1,O)),……A(n−
1,m−1)を持つ。Aは、行毎に、Fメモリ1
06のb,b+1,……,b+n*(m−1)レ
ジスタに記憶される。Aの転置行列が行毎に位置
Cから記憶されると仮定する。例えばAの転置行
列の第1行を生成するためには、位置a,a+
m,……,a+(n+1)mからデータを取りだ
して位置c,c+1,……,c+h−1に記憶し
なければならない。 まえのセクシヨンでは、A,B,Cカウンタ1
18,123,128を一定値に初期設定する方
法、カウンタ・フイールド144のビツトを用い
て連続するアドレスc,c+1,……,c+n−
1を発生させる方法および命令ワードからのフイ
ールド121,126,131によつてもたらさ
れる基底アドレスによりカウンタ118,12
3,128の値を修正する方法について述べた。
例えば一定のストライドを持つa,a+m,a+
2mというAアドレス117を発生させるために
は、まずマイクロプロセツサ103にストライド
値mを内的に記憶させるとともに、Aカウンタ1
18を値aに初期設定する。以下の各命令におい
て、Aカウンタ118はmずつ増加されなければ
ならない。これは、ソース・フイールド141で
Aカウンタ118を指定し、(これにより、Aカ
ウンタの指標の現在値は、マイクロプロセツサに
ロードされる)、Aカウンタの現在の指標にmを
加え(マイクロプロセツサ103は、X操作フイ
ールド142による制御の下、これを行う)、宛
先フイールド143でAカウンタ118を指定す
る(これにより、古い指標にmを加えたものが、
Aカウンタの指標レジスタにロードされる)こと
により達成される。 表2.1は(既に第3図を参照して述べたような、
行列Aの第1列を、位置Cから始まる連続した位
置に記憶させるプログラムを示す。表2.2は様々
なレジスタを通して計算の進度を示す。値mが例
えばマイクロプロセツサ103の内部レジスタ
R0に記憶されているとともに、Aカウンタ11
8の指標が値aに初期設定され、かつCカウンタ
128の指標が値cに初期設定されていると仮定
している。さらに、Bカウンタ123が値bに初
期設定されており、かつFメモリ106の位置b
には0が記憶されていると仮定している。したが
つて、位置bから取り出されたBオペランド11
0をAオペランド108に加えると、最初のAオ
ペランド108と同じC結果が得られる。 この例では、、基底フイールド121,126,
131は示されていない。これらは使用できるけ
れども、Oであると仮定している。表2.2には、
パイプ・フイル(pipe fill)およびパイプが一杯
(full,フル)になつた場合の最初の2つの命令
サイクルの間の計算の進度が示されている。 3 集合および分散 第4A,4B図は、それぞれ集合操作、分散操
作を示す。I=(I(0),……,I(n−1))を
指標ベクトルとする。X=(X(0),……,X(N
−1))は、ベクトルIよりながいベクトルとす
る。ベクトルI,XからベクトルZ=(X(I
(0)),……,X(I(n−1))を計算することを
集合操作と呼ぶ。 IとXは上述べの通りとする。Y=(Y(0),
……,Y(n−1))は、ベクトルIと同じ長さの
ベクトルとする。すべてのi=0,……,n−1
について、ベクトルXの要素X(i)をベクトル
Yの要素Y(I(i))と置換することを、分散操
作と呼ぶ。 指標ベクトルIが固定小数点メモリ105にお
いて位置iから記憶されているとともに、ベクト
ルXがFメモリ106において位置Xから記憶さ
れており、ベクトルZが集合操作によつてベクト
ルI,Xから計算され、かつFメモリ106にお
いて、位置Zから記憶されるものと仮定する。 この応用例においては、アドレスX+I(0),
X+I(1),……,X+I(h−1)のセツトを
発生させ、かつAカウンタ118にロードしなけ
ればならない。まず値Xをマイクロプロセツサ1
03に内的に記憶させるとともに、Xアドレス・
カウンタ104を値iに初期設定する。続く命令
において、カウンタ・フイールド144のビツト
Xによる制御の下、Xアドレス・カウンタ104
を増加させる。したがつて、Xアドレス・カウン
タ104は、値i,i+1,i+2,……を引き
受け、その結果、固定小数点メモリ105のXデ
ータ・ポート150にデータI(i),I(i+
1),I(i+2)……が現れる。これらのデータ
は使用可能になると、マイクロプロセツサ103
にロードされ(Xデータ・ポート150がソー
ス・フイールド141にて指定されている),ア
ドレスXに(X操作フイールド142による制御
の下、マイクロプロセツサ103において内的に
加算され、その和はシステム・バス134に乗せ
られ、(宛先フイールド143によつて指定され
る)Aカウンタ118の指標レジスタにロードさ
れる。ベクトルZを記憶するアドレスは連続して
いるが、既に前のセクシヨンにおいて、そのよう
なアドレスの発生のさせ方は示されている。 表3.1および3.2は、集合操作の実行のためのプ
ログラムとレジスタの進度をそれぞれ示す。値x
はマイクロプロセツサ103の内部レジスタR
(0)に記憶され、Xアドレス・カウンタ104
は値iに初期設定され、Cアドレス・カウンタ1
28の指標は値zに初期設定され、Fメモリ10
6の位置bは値0で記憶しており、そして、Bカ
ウンタ123の指標は値bに初期設定されている
と仮定する。 表3.1の命令は、このような状況で集合操作を
開始する。基底フイールド121,126,13
1は示されていないが、値oを持つものと仮定す
る。表3.2は、パイプが一杯になりつつある間お
よびパイプが一杯(フル)になつた場合の最初の
2つの命令サイクルの間の計算の進度が示されて
いる。 分散操作は同様の方法により行われる。分散操
作の場合は、連続するAアドレスが発生されると
ともに、アドレスX+I(0),X+I(1),……
は適当な時にCカウンタにロードされる。 4 指標ベクトルの生成 この応用例では、前の応用例で用いられたベク
トルIのような指標ベクトルの、効率的な発生の
させ方が示されている。 ベクトルX=(X(0),……,X(N−1))が
Fメモリ106にて位置Xから記憶されていると
仮定する。X(I(0)),……,X(I(n−1))
は、ベクトルXの要素であつて、一定値Dよりも
小さいものとする。前記値DはFメモリ106の
位置dに記憶されており、また、指標ベクトルI
=(I(0),……,I(n−1))は計算されて、
固定小数点メモリ105にて位置iから記憶され
るものと仮定する。 初め、値(i−1)がXアドレス・カウンタ1
04に記憶されていると仮定する。また、マイク
ロプロセツサ103の内部レジスタR(0)には
値1が記憶され、かつマイクロプロセツサ103
のアキユムレータ(acc)には、初め、値(−
1)が記憶されていると仮定する。 指標ベクトルIは、次のようにして計算され
る。Aカウンタ118は、カウンタ・フイールド
144のビツトaによる制御の下、アドレスx,
x+1,……を発生させる。Bカウンタ123は
アドレスdを保持する。基底A121、基底B1
26のフイールドは0である。F操作フイールド
147は、Aオペランド108(つまりベクトル
Xの要素X(i)からBオペランド110(つま
り値D)を引くように指定する。テスト・ビツト
FT148は、オン状態にある。基底C131の
フイールドは、F−ALU113による演算結果
が0より小さい場合に、F条件コード116がオ
ンとなるような条件コード・マスクを指定する。
Cカウンタ128の値は0である(もし0でない
と、Cカウンタの頭のビツトが、回路130を経
由してくる条件コード・マスクと干渉する可能性
がある)。 Fコード116の機能として、2つの命令のう
ちの1つが取り出される。例えば、命令コードが
0の場合に、命令aが取り出され、0でない場合
に、命令bが取り出される。どちらの命令でも、
レジスタR(0)の内容は、マイクロプロセツサ
103のアキユムレータに加算される。このよう
にして、アキユムレータの値は、「X(j)<D?」
というテストが、前記命令を取り出す条件コード
を作ることになるような指標jと等しくなる。命
令aでは、他の何もなされない。命令bでは、ア
キユムレータの新しい値がシステム・バス134
に乗せられ、宛先フイールド143による制御の
下、固定小数点メモリ105のXデータ・ポート
150にロードされる。また、命令bでは、カウ
ンタ・フイールド144のビツトXによる制御の
下、Xアドレス・カウンタ104は増加される。
指標jが「X(j)<D」というテストが命令bを
取り出す結果を招くようなk番目の指標であつた
ならば、Xアドレス・カウンタ104は値(i+
k=1)まで増加し、値j=I(k−1)が、固
定小数点メモリ105の位置(i+k−1)に記
憶される。 表4.1,4,2は、上述のようにして、指標ベ
クトルIを発生させて固定小数点メモリ105に
記憶させるプログラムとレジスタの進度をそれぞ
れ示す。X(1),X(2)はDより小さく、かつ
X(0),X(3),X(4)はDより大きいと仮定
する。表4.1では、上述にようにして指標ベクト
ルIの発生を開始する一連の命令が示されてい
る。表4.2では、パイプ・フイルおよびパイプ一
杯になつた場合の最初の2つの命令サイクルの間
の計算の進度が示されている。 F メモリ106の実現 第5図は、Fメモリ106のような3ポート
RAMの、よく知られた実現方法を示す。各位置
は、2つのバンク、つまりAバンク513に1
度、Bバンク514に1度、複写される。Aオペ
ランドを取り出すために、Aアドレス107が、
Aアドレス・マルチプレクサ511を経てAバン
ク513に送られる。Aオペランドは、Aアドレ
ス107によつて指定された位置から取り出さ
れ。Aオペランド・ポート108にロードされ
る。 Bオペランドを取り出すためには、Bアドレス1
09が、Bアドレス・マルチプレクサ512を経
てBバンク514に送られる。Bオペランドは、
Bアドレス109によつて指定された位置から取
り出され、Bオペランド・ポート110にロード
される。 C結果を記憶するために、Cアドレス112
が、Aアドレス・マルチプレクサ511を経てA
バンク513に送られ、かつ、Bアドレス・マル
チプレクサ512を経てBバンク514に送られ
る。C結果ポート111からのデータは、ドライ
バ515を経由してAバンク513のデータ・ポ
ート517に送られる。データは、そこからCア
ドレス112によつて指定される位置に記憶され
る。また、C結果ポート111からのデータは、
ドライバ516を経由してBバンク514のデー
タ・ポート518にも送られる。データは、そこ
からCアドレス112によつて指定される位置に
記憶される。 1命令サイクルの間の2回の読取りと1回の書
込みからなるアドレス操作では、命令サイクルの
前半では読取りが行われ、後半で書込みが行われ
る。 本実施例を実現する構成装置 表5では、複数ポートメモリ106を除き、第
1図に示される浮動小数点プロセツサのモジユー
ルを実現する部品であつて、広く手に入るものが
記載されている。表6では、第5図に示される3
ポートRAMのモジユールを実現する部品が示さ
れている。 結び 以上、開示したものは、3アドレス・コード操
作を効率よく行うのに適用される、浮動小数点プ
ロセツサのための強力なアーキテクチヤである。
実施例とその応用例は、説明用に選ばれたもので
ある。もちろん、本発明の要旨を逸脱しない範囲
で、種々の変形が可能であることは言うまでもな
い。
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】
【表】 E 発明の効果 本発明によれば、3アドレス式コンピユターに
おけるアドレス指定能力が飛躍的に高まり、ベク
トルに対する操作がアドレスの非自明の更新を伴
う場合でも、速いベクトル・モードで行うことが
可能になる。
【図面の簡単な説明】
第1A,1Bおよび1C図は、一緒になつて本
発明の説明図を構成する図、第1D図は第1A乃
至第1C図の並べ方を説明する図、第2A,2B
図は、本発明の一面が教える基底アドレス指定に
よりもたらされるフレキシビリテイを示す図、第
3図は、1応用例として、本発明によるベクト
ル・アドレスの非自明の更新を示す図、第4A,
4B図は、本発明により効率よく行われる集合お
よび分散操作をそれぞれ示す図、第5図は、本発
明と用いられる3ポート・メモリの説明図であ
る。

Claims (1)

  1. 【特許請求の範囲】 1 連続するサイクルにおいて、命令ワードに応
    答し、rビツトのアドレスによつてアドレス指定
    可能なデータ・オブジエクトを記憶するメモリの
    ために、アドレスを発生させるための装置であつ
    て、該メモリが、少なくとも、第1のrビツト・
    アドレス・レジスタと関連する出力レジスタ、第
    2のrビツト・アドレス・レジスタと関連する出
    力レジスタおよび第3のrビツト・アドレス・レ
    ジスタと関連する入力レジスタを有するものであ
    り、 第1のrビツト・アドレス・レジスタにアドレ
    スとして与えるための、変更可能な第1の指標を
    記憶する第1の指標レジスタと、 第2のrビツト・アドレス・レジスタにアドレ
    スとして与えるための、変更可能な第2の指標を
    記憶する第2の指標レジスタと、 第3のrビツト・アドレス・レジスタにアドレ
    スとして与えるための、変更可能な第3の指標を
    記憶する第3の指標レジスタと、 1サイクルにおいて、命令ワードの少なくとも
    一部に応答し、該サイクルの間に、独立して、第
    1、第2および第3の指標レジスタの第1、第
    2、および第3の指標をそれぞれ増加させるカウ
    ンタ手段と、 1サイクルにおいて、命令ワードの少なくとも
    一部に応答し、該サイクルの間に、独立して、第
    1、第2および第3の指標の少なくとも1つを更
    新するために、第1、第2および第3の指標レジ
    スタの少なくとも1つに任意の指標を与える手段
    と から成ることを特徴とする3アドレス・コード
    の指標づけ装置。 2 連続するサイクルにおいて、命令ワードに応
    答し、rビツトのアドレスによつてアドレス指定
    可能なデータ・オブジエクトを記憶するメモリの
    ために、アドレスを発生させる装置であつて、該
    メモリが、少なくとも第1のrビツト・アドレ
    ス・レジスタと関連する出力レジスタ、第2のr
    ビツト・アドレス・レジスタと関連する出力レジ
    スタおよび第3のrビツト・アドレス・レジスタ
    と関連する入力レジスタを有するものであり、 第1のrビツト・アドレス・レジスタにアドレ
    スとして与えるための、変更可能な第1の指標を
    記憶する第1の指標レジスタと、 第2のrビツト・アドレス・レジスタにアドレ
    スとして与えるための、変更可能な第2の指標を
    記憶する第2の指標レジスタと、 第3のrビツト・アドレス・レジスタにアドレ
    スとして与えるための、変更可能な第3の指標を
    記憶する第3の指標レジスタと、 1サイクルにおいて、命令ワードの少なくとも
    一部に応答し、該サイクルの間に、独立して、第
    1、第2および第3の指標レジスタの第1、第2
    および第3の指標をそれぞれ増加させるカウンタ
    手段と、 第1、第2および第3の指標レジスタの少なく
    とも1つと通信して、1サイクルにおいて、それ
    ぞれの指標の上位のm(rより小さい)ビツトを
    命令ワードからのmビツトと組み合わせ、該サイ
    クルの間に、それぞれのrビツト・アドレス・レ
    ジスタに与えるためのアドレスを発生させる手段
    と、 から成ることを特徴とする3アドレス・コードの
    指標づけ装置。
JP25710986A 1985-12-02 1986-10-30 3アドレス・コ−ドの指標づけ装置 Granted JPS62134763A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US80420685A 1985-12-02 1985-12-02
US804206 1985-12-02

Publications (2)

Publication Number Publication Date
JPS62134763A JPS62134763A (ja) 1987-06-17
JPH0477346B2 true JPH0477346B2 (ja) 1992-12-08

Family

ID=25188425

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25710986A Granted JPS62134763A (ja) 1985-12-02 1986-10-30 3アドレス・コ−ドの指標づけ装置

Country Status (3)

Country Link
EP (1) EP0227900B1 (ja)
JP (1) JPS62134763A (ja)
DE (1) DE3688186D1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6429932A (en) * 1987-07-27 1989-01-31 Mitsubishi Electric Corp Address control system for signal processing
JPH01156825A (ja) * 1987-12-15 1989-06-20 Mitsubishi Electric Corp 信号処理用アドレス生成方式
JPH0645962B2 (ja) * 1987-12-04 1994-06-15 ナカ工業株式会社 フロアパネルの支持装置
EP0580109B1 (en) * 1992-07-23 1997-12-10 Rockwell International Corporation Data acces in a RISC digital signal processor
WO1997031310A1 (en) * 1996-02-23 1997-08-28 Advanced Micro Devices, Inc. A microprocessor configured to execute instructions which specify increment of a source operand
GB2352065B (en) 1999-07-14 2004-03-03 Element 14 Ltd A memory access system
WO2001090888A1 (en) * 2000-05-23 2001-11-29 Theis Jean Paul A data processing system having an address generation unit with hardwired multidimensional memory indexing support
US6959378B2 (en) 2000-11-06 2005-10-25 Broadcom Corporation Reconfigurable processing system and method
JP3659252B2 (ja) 2003-03-28 2005-06-15 セイコーエプソン株式会社 ベクトルデータのアドレス参照方法およびベクトルプロセッサ
GB2410097B (en) * 2004-01-13 2006-11-01 Advanced Risc Mach Ltd A data processing apparatus and method for performing data processing operations on floating point data elements

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH077385B2 (ja) * 1983-12-23 1995-01-30 株式会社日立製作所 データ処理装置
US4890220A (en) * 1984-12-12 1989-12-26 Hitachi, Ltd. Vector processing apparatus for incrementing indices of vector operands of different length according to arithmetic operation results
EP0731108A1 (en) * 1995-03-10 1996-09-11 Boehringer Mannheim Gmbh Method of manufacturing a therapeutic agent for the regeneration of oligodendrocytes

Also Published As

Publication number Publication date
EP0227900A2 (en) 1987-07-08
EP0227900B1 (en) 1993-03-31
DE3688186D1 (de) 1993-05-06
JPS62134763A (ja) 1987-06-17
EP0227900A3 (en) 1989-08-16

Similar Documents

Publication Publication Date Title
JP3889069B2 (ja) プログラマブルプロセッサ、前記プログラマブルプロセッサを用いてデジタル信号処理を行なうための方法およびその改良
US4974146A (en) Array processor
US4399507A (en) Instruction address stack in the data memory of an instruction-pipelined processor
US5001662A (en) Method and apparatus for multi-gauge computation
JPH11154114A (ja) 複数データ・フェッチのアーキテクチャを使ってテーブル・ルックアップを実行するためのシステムおよび方法
US6446190B1 (en) Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor
JP2001516916A (ja) デジタル信号処理能力を有するデータ処理装置
US4771380A (en) Virtual vector registers for vector processing system
JP2002509312A (ja) 不整列データ・アクセスを実行するためのデータ整列バッファを有するディジタル信号プロセッサ
JPH1091443A (ja) 情報処理回路、マイクロコンピュータ及び電子機器
US4491908A (en) Microprogrammed control of extended integer and commercial instruction processor instructions through use of a data type field in a central processor unit
JPH0477346B2 (ja)
US4954947A (en) Instruction processor for processing branch instruction at high speed
JPH06103062A (ja) コンピュータ処理装置に利用できるレジスタ数を増大させる装置
US7392276B2 (en) Efficient multiplication sequence for large integer operands wider than the multiplier hardware
JP2002215606A (ja) データ処理装置
JP2000039995A (ja) 高性能マイクロプロセッサで使用するためのフレキシブル累算レジスタファイル
USRE41012E1 (en) Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor
JP3278441B2 (ja) ベクトル処理装置
Seshadri A real-time VLSI architecture for direct kinematics
JP3547316B2 (ja) プロセッサ
US20050188183A1 (en) Digital signal processor having data address generator with speculative register file
EP0226103A2 (en) Address generation for cellular array processors
JP2760808B2 (ja) データ処理装置
TW202349232A (zh) 用於執行外積操作之技術