JPH07271764A - 計算機プロセッサ及びシステム - Google Patents

計算機プロセッサ及びシステム

Info

Publication number
JPH07271764A
JPH07271764A JP6316800A JP31680094A JPH07271764A JP H07271764 A JPH07271764 A JP H07271764A JP 6316800 A JP6316800 A JP 6316800A JP 31680094 A JP31680094 A JP 31680094A JP H07271764 A JPH07271764 A JP H07271764A
Authority
JP
Japan
Prior art keywords
vector
matrix
processing unit
data
vectors
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
JP6316800A
Other languages
English (en)
Inventor
Ramesh Chandra Argarwal
ラメシュ・チャンドラ・アーガーワル
Randall Dean Groves
ランダル・ディーン・グローブス
Fred Gehrung Gustavson
フレッド・ゲールング・ガスタブソン
Mark Alan Johnson
マーク・アラン・ジョンソン
Brett Olsson
ブレット・オルッソン
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 JPH07271764A publication Critical patent/JPH07271764A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus

Abstract

(57)【要約】 【目的】本発明は改良された計算機システムを提供す
る。 【構成】高速度数値計算を可能にするマトリクス処理装
置が開示される。その処理装置は複数個の処理エレメン
トから形成されたベクトル処理装置である。I番目の処
理装置はN個のレジスタのセットを有し、それらレジス
タには、N個のデータ・ベクトルのうちのI番目のエレ
メント又はワードが記憶される。各処理エレメントは、
N個のレジスタのセットにおけるN個のエレメントに関
する演算オペレーションを遂行できる演算装置を有す
る。各データ・ベクトルはK個のエレメントを有する。
従って、K個の処理エレメントが存在する。マトリクス
処理装置のベクトル・オペレーションは2つ以上のベク
トルすべてに関して同じオペレーションを同時に遂行す
る。先行のベクトル・オペレーションの後の1機械サイ
クル内で後続のベクトル・オペレーションが遂行可能で
ある。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、概して云えば、データ
処理システムの分野に関するものであり、詳しく云え
ば、本発明は、複数個のプロセッサにおいて数値集中計
算(numericallyintensive computing) するためのデー
タ処理システムに関するものである。更に詳しく云え
ば、本発明は、N個のプロセッサがN個のエレメント・
ベクトル上で縮小命令セットの命令を同時に実行する多
重プロセッサ・システムに関するものである。
【0002】
【従来の技術】コンピュータにおける計算力は成長して
きたし、急速に成長し続けている。この増大した計算力
は、新たな方法でコンピュータを使用するための新たな
機会をその計算力のユーザに与えており、従って、コン
ピュータ・パワーを増大させるための更なる要求を生み
出しいる。増大した計算力が特に有用である1つの領域
は、数値集中計算の領域である。数値集中計算は、大量
のデータに関する限られたオペレーション・セットの計
算に関連している。数値集中計算の技法は、イメージ処
理、信号処理、人工知能、或いは気象力学又は流体力学
のコンピュータ・シミュレーションのような幅広い分野
の適用業務において使用される。これらの適用業務にお
ける数値集中計算の技法が直面する共通の問題は、各適
用業務と関連した大量のデータに関して必要な有限の数
の関数を、可能な限りの最小の時間で計算することであ
る。
【0003】初期の従来技術のコンピュータ・システム
は、中央処理装置(CPU),メモリ、及び入出力(I
/O)コントローラより成るものであった。CPUは、
データ又は命令をメモリに転送するように或いはそれら
をメモリから取り出すようにI/Oコントローラに命令
するプログラム、及び種々の命令セットに従ってデータ
を処理するプログラムを実行してした。データを処理す
ることは、CPUが遂行すべき特殊な命令をデコードす
るようなオペレーション、その特殊な命令を実行するよ
うなオペレーション、及びその結果をメモリに戻すよう
なオペレーションを含んでいた。CPUは、それがプロ
グラムにおける命令のリストからの命令を一時に1つず
つ処理するという点では複雑ではなかった。しかし、こ
のタイプのCPUは、それが一時に1つの命令しか処理
しなかったので遅かった。その遅い処理時間に応答し
て、従来技術のシステムは、プロセッサをパイプライン
化することを導入した。
【0004】パイプライン化したプロセッサでは、異な
る命令に対して、CPUの種々の独立した機能が一時に
生じる。例えば、1つの命令に対するデータを取り出す
ためのメモリに対するプロセッサの命令は、プロセッサ
が他の命令のオペレーション・コードをデコードしてい
る時に生じようとしているかもしれない。パイプライン
化することは、何れの個々の命令の実行もスピード・ア
ップするものではないが、それは、前の命令が処理を完
了してしまう前に後続の命令がCPUにおける処理を開
始するため、一連の命令の処理をスピード・アップして
いる。パイプライン化に加えて、従来技術は、限定され
た命令セットが数値的問題に対して反復的に使用される
ことも認識してした。その結果、従来技術は、それら限
定された命令セットを素早く実行するために、CPU内
に特殊プロセッサの機能的ブロックを導入した。例え
ば、いくつかのCPUは、加算、乗算、又はブランチだ
けを遂行するための機能的ブロックを含んでいた。これ
ら機能的ブロックは、メインCPUよりもずっと速くこ
れらの限定された機能を実行したし、これは数値的関数
を処理する速度も増加させた。
【0005】パイプライン化又は限定された命令のため
の別個の機能ユニット、或いはそれらの両方を組み込ん
だ従来技術のプロセッサでは、単一の命令ストリームが
単一のデータ・ストリーム上で動作していた。即ち、各
命令は、定義されたデータに関して一時に1つの計算を
行うように動作してした。そのようなプロセッサは、単
一命令・単一データ処理の略称であるSISDと呼ばれ
る。SISDタイプのプロセッサの問題は、プログラム
のセグメントが多数の多様なエレメントに適用されるこ
とをそのプログラムが必要とする場合、そのプログラム
は、順次に何回もそのセグメントを循環しなければなら
ないことである。これは、多くのタイプの数値的問題に
対する状況であった。そして、このようなタイプの問題
に関するプロセッサ速度の増加を援助するために、SI
MD(単一命令・多重データ処理)タイプのプロセッサ
が開発された。
【0006】SIMDプロセッサ・ユニットは、同じ機
能的能力を持った複数個の処理エレメントより成り、そ
してそれら処理エレメントは、それぞれ、各処理エレメ
ントが別個のデータ・ストリームに関して動作する時、
一時に1つの命令基づいて動作する。代表的なSIMD
プロセッサ・ユニットは、3つの主要な素子、即ち、処
理エレメントのアレイ、経路指定ネットワーク、及びコ
ントローラを含む。対照的に、本発明によるプロセッサ
は経路指定ネットワークを使用せず、その結果、低コス
トのプロセッサが得られ、メイン・メモリ及び処理エレ
メントに及びそれらからデータを移動させるための時間
の減少が得られる。経路指定ネットワークは、任意の1
つの処理エレメントからの結果を、それを必要とするそ
のアレイ内の他の任意の処理エレメントにコミュニケー
トする。コントローラは、そのSIMDプロセッサ・ユ
ニットが一部分となるメインCPUからの命令及びデー
タに応答して、その処理エレメントのアレイ及び経路指
定ネットワークのオペレーションを制御する。
【0007】マルチプロセッサSIMDタイプのシステ
ムによる問題は、コンピュータ・メモリ・システムから
データを十分に速い速度で得るためのマルチプロセッサ
・アレイの能力と多数のプロセッサの使用を最適化する
ためのメインCPUの能力とによって、システム・パフ
ォーマンスが制限されるということである。とりわけ、
メイン・メモリからのデータをアレイにおける各プロセ
ッサに供給するメモリ・システムを構築することは、非
常に高いメモリ帯域幅(BW)を必要とし、従って、余
りにも高価であり、或いは殆どのアプリケーションにと
って非実用的である。更に、個々の各プロセッサがその
アレイにおける他のプロセッサと直接にコミュニケート
する経路指定ネットワークは、そのプロセッサのアレイ
の全体的なパフォーマンスを下げる。その従来技術は、
限られた成功でもってこれらの問題を解決しようとし
た。更に詳しく言えば、その従来技術は、プロセッサ・
アレイにおけるそれら複数個のプロセッサをマトリクス
状に接続し、それらプロセッサがそれらのいくつかの最
も近接したプロセッサとだけコミュニケートするように
した。
【0008】この配列は、最も近接したプロセッサがコ
ミュニケートする能力を増大させ、従って、命令がそれ
ら最も近接したプロセッサ相互間だけのコミュニケーシ
ョンを必要とする時にはそれらプロセッサの全体的なパ
フォーマンスを増大させる。しかし、殆どの命令は無作
為なプロセッサ相互間のコミュニケーションを必要とす
るものであり、最も近接したプロセッサを介した無作為
なプロセッサへの経路指定コミュニケーションは、その
プロセッサ・アレイの全体的なパフォーマンスを減少さ
せる。その結果、プロセッサの近接プロセッサ接続は、
実行される命令の数及びタイプによっては、実際に、マ
ルチプロセッサ・アレイのパフォーマンスを減少させ
る。各プロセッサが多数の他のプロセッサに直接に接続
しているハイパーキューブ・タイプの配列に複数のプロ
セッサが接続させる時、それらプロセッサ相互間のコミ
ュニケーションの速度は増加する。このタイプの配列に
よって、直接に相互接続されてないプロセッサ相互間の
コミュニケーションを必要とすることが少なくなり、そ
のプロセッサ・アレイのパフォーマンスが増加するであ
ろう。しかし、プロセッサ・アレイ・パフォーマンスの
増加は、依然として、そのプロセッサ・アレイと関連し
たメモリ帯域幅によって制限される。プロセッサ・アレ
イは、データを個々のプロセッサに配送し得る速さで命
令を実行することはできる。ハイパーキューブ配列は、
そのようなメモリ・システムをそのハイパーキューブ配
列と結合して実施することが多くのコンピュータ・シス
テムにおいて非実用的であるような高いメモリ帯域幅を
必要とする。
【0009】最近の高パフォーマンスのコンピュータに
とって、パフォーマンスは主としてその機械のサイクル
・タイムによって制限される。全体的なパフォーマンス
を増加させるために、しばしば、並列化が使用される。
多数のプロセッサと共に共用メモリの並列システムを構
築することが非常に困難であることはわかっている。最
近、いくつもの分散型メモリ並列システムが構築されて
いる。Intel Paragon、Cray T3−
D、IBM SP1はこのクラスの機械の例である。一
般には、多数のプロセッサでもって分散型メモリ・シス
テムを最適に利用すること及びそれのソフトウエアを書
くことは更に困難である。これらの機械は、しばしば、
通信障害によって遅滞させられる。又、殆どのシステム
・コンポーネントの複製及び通信ネットワークの付加的
コスト及びオーバヘッドのために、これらの高度な並列
機械の価格性能比は、基礎的なユニプロセッサに対する
価格性能比ほど有利なものではないことが多い。
【0010】本発明によるコンピュータ・システムにお
ける2つの主要な考察点は、命令の実行の制御とメモリ
管理である。制御の考察点及びオペレーティング・シス
テムの観点から云えば、それは、単一の命令ストリーム
しか実行されない場合、又はメモリの1つのイメージし
か維持されない場合、大変望ましい。換言すれば、オペ
レーティング・システムの観点から云えば、その機械が
単一のCPUの機械のようにみえることが望ましい。本
発明は、「単一の命令ストリーム及びメモリ・マップ」
モデルの傘の下で同時に動作しながら、或クラスのNI
C(数値集中計算)問題に関して非常に高いパフォーマ
ンスを得るシステム構成を定義するためのものである。
【0011】最近の高パフォーマンス・コンピュータに
とって、パフォーマンスは、メモリ・システムから得ら
れる帯域幅によっても制限される。更に、本発明は、或
クラスの数値集中計算の問題に対するメモリ帯域幅の要
件を少なくするために、上記のシステム構造で働くアル
ゴリズム構造を提供する。
【0012】問題の数値的強度を数値化する1つの簡単
な測定法は、浮動小数点演算(フロップス)の合計数を
カウントすること、及びその計算に関連したデータ・ポ
イントの合計数(又は、必要なメモリ・スペースの量)
によってそれを除することである。この比率を「浮動小
数点演算対データ比」と呼ぶことにする。要するに、こ
の比をFDRと表すことにする。FDRはその問題に対
して全体として計算可能であり、その問題によって包含
される副次問題に対しても計算可能である。一般的に
は、副次問題に対するFDRは、その問題全体に対する
FDRよりもかなり小さい。初歩的なスカラ演算レベル
では、FDRは1よりも小さいであろう。殆どのNIC
問題に対して、当初の問題を適当にブロック化(アルゴ
リズム的に)して、種々なレベルのメモリ階層に適合し
た副次問題にすることによって、FDRはかなり改良可
能である。
【0013】一般的には、より大きなメモリ・スペース
が所与のレベルにおいて利用可能にされる場合、より高
い値のFDRが達成可能である。階層メモリ・システム
では、所与のレベルのメモリにおけるメモリ帯域幅(B
W)の要件は、そのステージにおけるFDR比に逆比例
する。最高のレベル(最大のメモリ・サイズ)では、帯
域幅要件は最も小さく、そしてより低い(及びより小さ
い)メモリのレベルに進むにつれて、帯域幅要件は次第
に増大する。その正確な数は、その問題、使用されるア
ルゴリズム、及び利用可能な計算資源の量に依存するで
あろう。一般的には、計算資源が高くなるほど、帯域幅
要件も高くなると言える。以下では、メモリの帯域幅要
件を大きく増大させることなく、大量の計算資源が最適
に利用可能であるというアルゴリズム的な制限のない例
を示す。一般には、アルゴリズムは種々なレベルのメモ
リ及びそれらの関連した帯域幅を最適に利用するように
適合可能である。
【0014】
【発明が解決しようとする課題】本発明の目的は、改良
された計算機システムを提供することにある。
【0015】本発明のもう1つの目的は、数値集中計算
の問題に対する改良された計算機システムを提供するこ
とにある。
【0016】本発明の更にもう1つの問題は、多数のプ
ロセッサを持った改良された計算機システムを提供する
ことにある。
【0017】本発明の更にもう1つの目的は、制限され
た数の命令をより速く実行するための改良された計算機
システムを提供することにある。
【0018】本発明の更にもう1つの目的は、計算機シ
ステムのメモリ帯域幅を大きく増大させることなく、制
限された数の命令をより速く実行するための改良された
計算機システムを提供することにある。
【0019】本発明の更にもう1つの目的は、制限され
た数の命令をより速く実行するための改良された廉価の
計算機システムを提供することにある。
【0020】
【課題を解決するための手段】本発明の幅広く見た場合
の視点は、計算機システムのスループットを大幅に増大
させるためにデータ・ワード対のグループに関するオペ
レーションを同時に遂行する並列プロセッサを持った計
算機システムである。
【0021】本発明の幅広く見た場合のもう1つの視点
は、先行のベクトル・オペレーションの1サイクル・タ
イム内で後続のベクトル・オペレーションを遂行する計
算機システムである。
【0022】本発明の更に特殊な視点は、プロセッサ・
サイクル・タイムを持った計算機プロセッサである。計
算機プロセッサは、K個の処理エレメント(但し、K>
1)を有する。それらK個のエレメントの各々は、N個
のレジスタのセット(但し、N>1)及び演算装置を有
する。それらレジスタの各々のI番目のエレメントは、
ベクトル長KのI番目のベクトル・レジスタに対する記
憶ロケーションを与える。その計算機プロセッサは、N
個のベクトルのうちの少なくとも1つにおける又はそれ
らの間のベクトル演算オペレーションを所定のサイクル
・タイムで遂行するための手段及びN個のベクトルのう
ちの1つにおけるオペレーションの結果を記憶するため
の手段を有する。この場合、ベクトル演算オペレーショ
ンは、N個のベクトルのうちの少なくとも1つについ
て、K個のエレメントすべてに対するK個の演算装置に
よって実質的に同時に遂行される。その計算機プロセッ
サは、所定のサイクル・タイム後の次のサイクルタイム
においてもう1つのベクトル・オペレーションを遂行す
るための手段を有する。
【0023】
【実施例】メモリ帯域幅(BW)の問題を処理した後、
次の問題は、その機械の所与のサイクル・タイムに対し
て大量の計算を行い得るような計算機そのものの編成で
ある。パフォーマンスの1つの測定法は、1サイクル当
たりの浮動小数点演算(FPC)である。IBM S/
390のような伝統的なスカラ・アーキテクチャに対し
ては、1つの浮動小数点演算を発生するためにいくつか
のサイクルが必要とされる。先ず、オペランドをレジス
タ(又は、浮動小数点装置)にフェッチする必要があ
り、これにパイプライン化した演算が続き、しかる後、
その結果がメイン・メモリに戻されて記憶される。その
ようなシステムに対するFPCは、典型的には、わずか
な端数である。IBM RS/6000のような機械は
多数の機能的ユニットを有し、その各々は調整された態
様で1つの指定された機能を行い、その結果、理想的な
環境下では1サイクル当たり2又はそれ以上の浮動小数
点演算を生じる。ベクトル機械も、長いベクトルにおけ
るパイプライン待ち時間を隠蔽することによって同様の
結果を得る。
【0024】伝統的なベクトル・アーキテクチャでは、
同じオペレーションが、独立したオペランドのセットに
関して遂行される。独立したオペランドの数はベクトル
長と呼ばれる。現在のベクトル機械では、これらオペラ
ンドは、パイプライン化した演算装置によって逐次に処
理される。或機械では、スループット(FPC)を増加
させるために、演算パイプと呼ばれる多数の演算装置が
設けられる。一般的には、多くのパイプが加えられる
と、メモリ帯域幅もそれに従って増加する。
【0025】本発明は、オペランドの各セット(そのベ
クトルの各エレメント)が独立した演算装置によって処
理されるシステム構造である。その場合、利用可能な演
算装置の数はベクトル長に等しい。S/390の用語で
は、それはベクトル・セクション・サイズ(VSS又は
K)と呼ばれる。ベクトル実行のために必要なサイクル
の数はパイプライン長に等しくなるであろう。1つのパ
イプでは、加算のようなオペレーションは、典型的に
は、2又はそれ以上のステップに分割される。その場
合、各ステップは1機械サイクルで行われる。パイプラ
イン長の遅れは、そのパイプへの入力とそのオペレーシ
ョンの最終結果を伴うパイプの出力との間の機械サイク
ルにおける遅れである。しかし、演算装置のパイプライ
ンの性質のために、適当な命令スケジューリングによっ
て、各サイクルで「ベクトル・オペランド」のセットを
送りそして「ベクトル結果」得ることが可能でなければ
ならない。これは、SIMD(単一命令・多重データ処
理)並列処理の1つの形式である。しかし、それは、米
国のThinking Machine社のCM−20
0、CM−5等のような伝統的なSIMD機械とは非常
に異なっている。そのようなアーキテクチャにとって、
得ることのできる1サイクル当たりの最大の浮動小数点
演算は2*VSS(乗算・加算オペレーションが2浮動
小数点演算としてカウントされる)である。更に、その
パフォーマンスのレベルはパラメータVSS又はKによ
ってパラメータ化される。理論的には、これは達成可能
な最良のパフォーマンスである。個のレベルのパフォー
マンスを実際に得ることは、データを送ること及び演算
装置からの結果を非常に高い速度で記憶することを必要
とする。これを次に説明する。
【0026】伝統的なベクトル・アーキテクチャでは、
オペランドを一組のベクトル・レジスタ又はメモリから
得ることができる。RISCスカラ・アーキテクチャで
は、すべてのオペランドが、先ず、一組のスカラ・レジ
スタにロードされる。演算装置は、すべてのオペランド
をレジスタから取得し、すべての結果をレジスタに戻し
て記憶する。これは、演算装置に対するメモリへの又は
メモリからの2ステップ・データ・パスである。本発明
の好適な実施例では、処理エレメントはRISCベクト
ル・アーキテクチャを使用する。そのアーキテクチャで
は、すべての演算装置がベクトル・レジスタとだけ対話
し(それらのオペランドをベクトル・レジスタのみから
取得し、それらの結果をベクトル・レジスタのみに記憶
し)、一方、ベクトル・レジスタはメモリ・システムと
対話する。
【0027】RISCアーキテクチャは、1990年1
月発行の「IBM Journal of Research and Developmen
t」第34巻、第1号の記事に記載されている。これは
他のレベルの減結合を直接に提案している。演算装置
は、その演算装置と同じインデックス番号を持ったベク
トル・レジスタのエレメントだけに対話する必要があ
る。便宜上、演算装置に0からK−1までの番号を付す
ることにする。N(もう1つのパラメータ)個のベクト
ル・レジスタがあるものと仮定する。その場合、演算装
置は、N個のスカラ・レジスタとだけ対話する必要があ
る。最良の方法では、これらのレジスタ及び演算装置は
同じチップ上にあるものと考えられる。演算装置とレジ
スタとのこの組合せを処理エレメント(PE)と呼ぶこ
とにする(エレメントの合計数=N*K)。N個のベク
トル・レジスタがK個のPE上に分配される。このK個
のPEの集合体は、NICA(数値集中計算アクセレレ
ータ)と呼ばれる。データがNICAレジスタにある場
合、それは1サイクル当たり2*K浮動小数点演算のピ
ーク・パフォーマンスを得ることができる。
【0028】図1は、本発明に従ってマトリクス装置
(MXU)(或いは、ベクトル・プロセッサ)を使用し
たコンピュータ・システムの1つの実施例を示す。この
コンピュータ・システムでは、中央処理装置(CPU)
45及びMXU50が、記憶制御装置(SCU)25及
びキャッシュ・バッファ・メモリ(L2キャッシュ)3
5を介してメイン・メモリ(メモリ・システム)10に
接続される。CPU45は、MXU命令バス43、MX
Uアドレス及びカウント・バス42、及びMXU記憶リ
クエストIDバス41を介してMXU50に接続され
る。SCU25は、メモリ・アドレス・バス15によっ
てメイン・メモリ10に接続され、アドレス・バス47
によってCPU45に接続される。L2キャッシュ35
は、メモリ・データ・バス20によってメイン・メモリ
10に接続される。更に、そのL2キャッシュ35は、
CPUデータ・バス37によってCPU45に接続さ
れ、MXUデータ・バス39によってMXU50に接続
される。CPU45は、ブランチ装置(BRU)57、
浮動小数点装置(FPU)48、固定小数点装置(FX
U)49、レベル1命令キャッシュ装置(IU)46、
及びレベル1データ・キャッシュ装置(DU)44より
成る汎用プロセッサである。そのIU46及びDU44
は任意選択のものであり、単にパフォーマンス上の理由
で使用されるだけである。
【0029】BRU57は、CPU45及びMXU50
に対するコントロール・フロー(次に実行されるべき命
令を決定する)を与える。BRU57は、実行されるべ
き次の命令のメモリ・ロケーションのアドレスを発生す
る。その命令がIU46に存在する(それが最近アクセ
スされた)場合、その命令はIU46からフェッチされ
る。その命令がIU46に存在しない場合、BRU57
はそのロケーションに対するリクエストを発生し、L2
キャッシュ・アドレス・バス47を介してSCU25に
そのリクエストを送る。SCU25は、L2キャッシュ
35の内容のディレクトリを持っている。そのリクエス
トされたメモリ・ロケーションがL2キャッシュ35に
存在する場合、SCU25は、L2キャッシュ35にお
けるそのロケーションをアクセスするに必要なコントロ
ールを発生し、L2コントロール・バス26を介してそ
のL2キャッシュにアクセス・コントロールを送る。L
2キャッシュ35はそのアクセスを遂行し、CPUデー
タ・バス37を介してCPU45にそのロケーションの
内容を送る。リクエストされたアドレスがL2キャッシ
ュ35に存在しない場合、SCU25はメモリ・アクセ
ス・リクエストを発生し、メモリ・アドレス・バス15
を介してメモリ・システム10にそのリクエストを送
る。メモリ・システム10はそのリクエストされたロケ
ーションをアクセスし、メモリ・データ・バス20を介
してL2キャッシュ35にそのリクエストされたロケー
ションの内容を戻す。L2キャッシュ35は、CPUデ
ータ・バス37を介してCPU45にそのリクエストさ
れたメモリ・ロケーションの内容を戻す。IU46は、
そのリクエストされたメモリ・ロケーションの内容を受
け取ると、ディスパッチ及び実行のための命令をBRU
57に送る。
【0030】BRU57は実行されるべき次の命令を調
べ、その命令を適当な実行装置にディスパッチする。ブ
ランチ命令は、BRU57によって実行される。スカラ
浮動小数点命令は、FPU48によって実行される。ベ
クトル命令は、MXU50によって実行される。メモリ
・アクセス命令は、FXU48及び関連の実行装置によ
り共同して実行される。その場合、FXU48はロード
命令又はストア命令のアドレスを発生し、DU44に
(FXU及びFPUメモリ・アクセスのために)又はS
CU25に(MXUメモリ・アクセスのために)リクエ
ストを送る。ベクトル命令は、BRU57によって、M
XU命令バス41を介してMXU50にディスパッチさ
れる。ベクトル・メモリ・アクセス命令は、MXU50
及びFXU49の両方にディスパッチされる。
【0031】上述のように、ベクトル・メモリ・アクセ
ス命令は、FXU49及びMXU50によって共同して
実行される。FXU49は、メモリ・アクセスのアドレ
スを計算し、メモリ・リクエストをDU44に送る。D
U44は、リクエストされたロケーションがL1データ
・キャッシュに存在しないことを確認するためにキャッ
シュ・ディレクトリ・ルックアップを行う。そのメモリ
・ロケーションが存在する場合、そのロケーションは、
先ず、L2キャッシュ35にフラッシュ・アウトされて
それをMXUメモリ・アクセスにとって明白なものにす
る。そこで、DU44はメモリ・アクセス・リクエスト
をSCU25に送る。命令メモリ・アクセスと同様に、
SCU25は、そのリクエストされたメモリ・ロケーシ
ョンがL2キャッシュ35に存在するかどうかを決定す
るためにL2キャッシュ・ディレクトリを調べる。その
ロケーションがL2キャッシュ35に存在しない場合、
メモリ・システム10におけるそのメモリ・ロケーショ
ンがリクエストされ、その内容がメモリ・データ・バス
20を介して戻され、L2キャッシュ35に置かれる。
【0032】MXUロード命令に対しては、そのリクエ
ストされたメモリ・ロケーションの内容が、MXUデー
タ・バス39を介してMXU50に戻される。SCU2
5は、ロード・データが、MXU−L2キャッシュ・コ
ントロール・バス54を使用してMXUデータ・バス3
9上に得られることを、MXU50に知らせる。MXU
ストア命令に対しては、SCU25及びL2キャッシュ
35は、そのストア命令のデータがMXU50によって
MXUデータ・バス39上に存在するまで待つ。その時
点で、そのデータはL2キャッシュ35におけるそのア
ドレスされたメモリ・ロケーションに置かれる。マトリ
クス制御装置(MXCU)51は、ストア・データがM
XU−L2キャッシュ・コントロール・バス54を使用
してMXUデータ・バス39上に得られることをSCU
25に知らせる。
【0033】MXU命令バス41を介してディスパッチ
されるベクトル命令に対して、マトリクス制御装置(M
XCU)51は実行されるべき命令を受け取り、そして
その後の実行のためにその命令を命令待ち行列に置く。
すべての必要な制御情報が受け取られる時、(メモリ・
アクセス命令が、FXU49からのデータ位置合わせ及
びエレメント・カウントのために下位アドレス・ビット
を使用し)MXCU51において命令の実行が始まる。
エレメント・カウントはマトリクス・カウント・レジス
タ(MCR)53に保持され、ベクトル・メモリ・アク
セス命令によってロード又は記憶されるべきエレメント
の数を指定する。そこから、MXCU51は適当なコマ
ンド(元の命令のフォーマット化バージョン)及び処理
エレメント・マスク(命令を実行する場合に、どのMX
PEが参加すべきかを識別する)を設定し、MXPEコ
マンド・バス70を介してマトリクス処理エレメントの
アレイ(MXPE1−MXPEK)にそのコマンド(又
は、一連のコマンド)をディスパッチして実行させる。
【0034】ベクトル・ロード命令に対しては、MXC
U51は、L2キャッシュ35からMXUデータ・バス
39を介して当該データを受け取り、そのデータを適当
な目標MXPEデータ・バスへ経路指定してその目標M
XPEに送る。ベクトル・ストア命令に対しては、MX
CU51は、ソースMXPEからそれぞれのMXPEデ
ータ・バスを介して当該記憶データを受け取り、その記
憶データを適当に位置合わせするように経路指定し、そ
してMXUデータ・バス39を介してL2キャッシュ3
5にそのデータを送る。ベクトル演算命令に対しては、
MXCU51は、MXPEからMXPE状態バス72を
介して結果状態(表示を除く)を受け取る。この状態
は、マトリクス状態及び制御レジスタ(MXSCR)5
2において捕捉され、マスク可能例外条件が存在する場
合に、MXU状態バス42を介してBRU57に割り込
み要求の形で送られる。
【0035】MXPEはすべて、MXPEコマンド・バ
ス70を介してコマンドを受け取る。MXCUは、各コ
マンドに従ってマスクを施し、どのMXPEが命令の実
行に参加すべきかを識別する。MXPEのサブセット
は、MXPEの数よりも少ないエレメント・カウントの
ような多数のファクタ、位置合わせされてないメモリ・
アクセスによって選択可能である。即ち、プログラム
は、MXSCU52の開始及び終了範囲フィールドにお
いてサブセットを明瞭に指定する。マスク・オフされた
MXPEはその命令を廃棄する。マスク・オフされてな
いMXPEは実行のための命令を受け取り、待ち行列に
入れる。ベクトル・ロード命令に対しては、選択された
MXPEに対するロード・データが、ロード・コマンド
によって、それぞれのMXPEデータ・バスを介して受
け取られる。そこで、選択されたMXPEはロード・デ
ータを目標レジスタにロードする。ベクトル・ストア命
令に対しては、選択された各MXPEはソース・レジス
タをアクセスし、それのMXPEデータ・バスを介して
そのデータを与える。ベクトル演算命令に対しては、選
択された各MXPEはそのリクエストされた演算機能を
SIMD態様で遂行し、ソース・オペランドをマトリク
ス・レジスタ(MXR)から取得し、そしてその結果を
目標MXRの中に置く。演算オペレーションに対する状
態は、選択されたMXPEのマトリクス条件レジスタの
各々の中に置き、そしてその生じた例外事項の概略がM
XPE状態バス72を介してMXCU51に送られる。
【0036】図5は、MXCU51の編成の更に詳細な
図を示す。MXCU51は、3つの主要なコンポーネン
ト、即ち、命令制御装置(ICU)570、ロード・デ
ータ装置(LDU)560、及びストア・データ装置
(SDU)550より成る。ICU570は、命令待ち
行列装置571、コマンド発生装置572、及びコマン
ド・ディスパッチ装置573より成る。命令待ち行列装
置571は、命令に対するすべての前提制御情報を受け
取ってしまうような時間まで、CPU45からディスパ
ッチされるMXU命令をバッファするために使用され
る。そのような前提データの例は、如何に多くのメモリ
・アクセスがCPU45によって設定されようとしてい
るかをMXU50に表示するロード命令及びストア命令
のためのエレメント・カウントである。一旦、すべての
必要な前提データが収集されてしまうと、その命令はコ
マンド発生装置572に進む。コマンド発生装置572
は当該命令及び関連の制御情報を評価し、そしてMXP
Eにディスパッチされるべきその指定された機能を適切
に且つ正しく実行する適当なコマンドを設定する。その
ような設定は、MXSCR52の開始及び終了範囲設定
に基づくMXPEマスクの生成、又はメモリ・アクセス
情報のアドレス位置合わせ及びエレメント・カウントを
含む。何れの特別のレジスタ・アドレシング・モードも
このステージにおいて実施可能である。コマンド・ディ
スパッチ装置573はMXU50の現在の状態を評価
し、次のコマンドがMXPEにディスパッチ可能である
かどうかを決定する。レジスタ従属性が可能となる場合
の順序外ディスパッチのようなパフォーマンス強化技法
がこのステージにおいて使用可能である。
【0037】LDU560は、ロード命令の実行準備が
できる前に到達したMXUロード・データをデータ・バ
ッファ504に与える。ここでは、ロード・データの順
序外復帰をサポートするようなパフォーマンス強化技法
がサポート可能である。そこで、LDU560は、任意
のアービトラリMXPEデータ・バス・ポートへのロー
ド・データの経路指定をサポートすることを意図したマ
ルチプレクサのネットワーク、即ち、ルータ508を提
供する。SDU550は、任意のアービトラリMXPE
データ・バス・ポートからのストア・データの経路指定
をサポートすることを意図したマルチプレクサのネット
ワーク、即ち、ルータ534を提供する。MXPEデー
タ・バス74、76、78、及び80を停止することな
くMXUデータ・バス39のビジー期間を考慮するため
にストア・データ・バッファ502が設けられる。
【0038】本発明によれば、MXU50は現在得られ
るベクトル・プロセッサに比べていくつかの明瞭な利点
を与える。この利点を更に容易に理解するために、図2
は現在得られるベクトル処理装置の概略図を示し、図3
は本発明によるマトリクス処理装置の概略図を示す。図
2及び図3の比較及び以下の説明は、それらの相違及び
本発明の利点を指摘することになろう。
【0039】図2は、計算機システム、即ち、メイン・
メモリ及び中央処理装置202からデータ及び制御線2
04を介してデータ及び命令を受け取るベクトル処理装
置200の概略図を示す。ベクトル処理装置200は、
少なくとも1つの演算装置(AU)206を含んでい
る。その演算装置206は、加算、乗算、及び論理的オ
ペレーション等のようなオペレーションを遂行できる。
ベクトル処理装置200は複数個のベクトル・レジスタ
R1乃至RNを有する。但し、Nは1よりも大きい。従
って、そのシステムはN個のベクトル・レジスタを有す
る。これらレジスタのうちの4つが、図2において、レ
ジスタ208、210、212、及び214として示さ
れる。各レジスタR1乃至RNはワードW1乃至WKを
含んでいる。但し、Kは1よりも大きく、各ワードは1
ビットよりも大きいデータを有する。従って、各レジス
タはK個のワードを含んでいる。Nは、典型的には、8
乃至32個のレジスタ数である。データ又は命令はデー
タ線204、216、218、220及び222によっ
て計算機システム202から転送される。各ワードは、
各レジスタが長さKのベクトルを形成するようにK個の
ワードのデータで満たされるまで、ワード・ロケーショ
ンW1乃至WKに逐次に転送される。
【0040】例えば、レジスタ208をレジスタ210
に加算しそしてその値をレジスタ212に置くようなコ
マンドがAU206によって実行される。各対応するレ
ジスタ・ロケーションのワードが逐次に加算され、そし
てその結果が図3における対応したワード・ロケーショ
ンに置かれる。例えば、レジスタR1のワード・ロケー
ションW1、即ち、ワード・ロケーションW1R1、に
おけるワードがデータ・バス224及び226を介して
AU206に転送される。レジスタR2のワード・ロケ
ーションW1、即ち、ワード・ロケーションW1R2、
におけるワードは、データ・バス228及び230を介
してAU206に転送される。W1R1+W1R2のオ
ペレーションがAU206において遂行され、その結果
は、データ線231及び232を介してレジスタR3の
ワード・ロケーションW1、即ち、ワード・ロケーショ
ンW1R3、に転送される。次のオペレーションは、W
2R1におけるワードをAU206に転送すること及び
W2R2におけるワードをAU206に転送することで
あり、AU206はW2R1+W2R2のオペレーショ
ンを遂行してその結果をワード・ロケーションW2R3
に入れる。ワード・ロケーションW1乃至ワード・ロケ
ーションWKまで、各レジスタR1,R2におけるワー
ド・ロケーションから逐次転送が行われる。従って、メ
イン・メモリ及び中央処理装置202は、2つ以上の転
送オペレーション及び2つ以上の演算オペレーションが
一時に行われるように、2つ以上の演算装置AUを持つ
ものであってもよい。
【0041】典型的には、一般に使用されるマトリクス
・ベクトル処理装置は、精々4つの演算装置AUを持つ
ものであり、それは、一時に4つのオペレーションを行
うことができることを意味する。1つのベクトル・オペ
レーションは、レジスタR1におけるような1つのベク
トルとレジスタR2におけるベクトルとの、加算、乗算
又は論理的比較のような演算結合、及びR3のような他
のベクトルへのその結果の転送である。そのようなベク
トル命令又はオペレーションに対する機械サイクルの数
は、そのような一般に得られるベクトル・プロセッサに
対する5乃至10機械サイクルとベクトル長Kを演算装
置AUの数により除したものとの和である、1つのベク
トル命令に対する始動サイクルに等しい。その演算装置
は、この分野では、演算パイプとも呼ばれる。そのよう
なベクトル・プロセッサにおけるベクトル・オペレーシ
ョンのための最小のサイクル・タイムは、パイプの数が
ベクトル長に等しい時、即ち、W1乃至WKのような各
ワード・ロケーションがそれと関連付けられたパイプ又
は演算装置を持つ時、である。そのような場合、1ベク
トル命令当たりのサイクル・タイムは、1つのベクトル
・オペレーションに対して、5乃至10機械サイクル+
1である始動時間に等しい。1ベクトル命令当たりの最
大のサイクル数は、パイプの数が1に等しい時に生じ、
その場合、1ベクトル命令当たりのサイクル数は、5乃
至10機械サイクル+ベクトル長Kである始動サイクル
に等しい。
【0042】図2に概略的に示される現在利用可能なベ
クトル処理装置は、計算機システム202及びベクトル
処理装置200の間のデータ帯域幅が不十分で、K個の
演算装置(AU)206の能力を利用するに十分な程速
くデータ又は命令を供給できないため、K個の演算装置
206を持つことができない。
【0043】拡張帯域幅のメモリは、ベクトル・オペレ
ーション相互間で5乃至10サイクルの最少時間を得る
ためには、K個の演算装置206を利用する必要があろ
う。Qが1つの演算装置206に対する帯域幅である場
合、K個の演算装置206に対する帯域幅はK*Qでな
ければならない。そのような拡張帯域幅のメモリは、大
きく増加した複雑性と、それによるコストとを必要とす
る。反対に、本発明によるプロセッサは、拡張帯域幅を
必要とせずにベクトル・オペレーション相互間で1サイ
クル・タイムを得るものであり、Qの帯域幅でもってこ
れを得ることができる。
【0044】1つのベクトルの負の逆元又は絶対値、2
つのベクトルの加算又は乗算、又はこれらの演算オペレ
ーションの組合せのようなベクトル・オペレーション
が、少なくとも1つ(代表的には、2つ又は3つ)のベ
クトルにおいて遂行される。ベクトル・オペレーション
は、2つのベクトルを乗算しそして第3のベクトルを加
算するオペレーション(1つのベクトル・オペレーショ
ンで行われる)のような3つ以上のベクトルに関するも
のであってもよい。
【0045】本発明によるベクトル処理装置、又はマト
リクス処理装置300が図3に300として概略的に示
される。処理装置300は、計算機システム302から
データ及び制御線304を介してデータ及び命令を受け
取る。N個のベクトルに対応したN個のレジスタR1乃
至RNがあり、Kのベクトル長に対してこれらレジスタ
の各々におけるK個のワードW1乃至WKがある。レジ
スタR1乃至RNの各々における第1ワード・ロケーシ
ョンW1はすべて、303として示された処理エレメン
ト1(PE1)に含まれている。処理エレメント303
は演算装置1(AU1)305を含む。同様に、レジス
タR1乃至RNの各々における第2ワードW2は、30
6として指定された処理エレメントPE2に含まれる。
処理エレメント306は、308として示された演算装
置AU2を含む。同様に、それらベクトルの各々におけ
る各ワードエレメントWI(但し、IはKまでである)
は、それ自身の演算装置を含む処理エレメント内に含ま
れる。各ワード・エレメントWIは、Mビット・ワード
に対するMビットのデータを記憶するためのM個のロケ
ーションを有するレジスタに含まれる。各々がK個のワ
ードを有するN個のベクトルは、K*Nワード・マトリ
クスを形成する。従って、ここでは、図3のプロセッサ
はマトリクス・プロセッサと呼ばれる。
【0046】図1に戻ると、マトリクス装置50は、マ
トリクス制御装置MXCU51及びK個の処理エレメン
トMXPE1乃至MXPEKを含む。これらマトリクス
処理エレメントのうちの6つは数字60、61、62、
63、64、及び65によって識別される。マトリクス
制御装置MXCU51のエレメント52は、コマンド・
バス70及び複数個のデータ制御バス68を介してマト
リクス・エレメントMXPE1乃至MXPEKの各々に
接続される。コマンド・バス70は、マトリクス制御装
置52から処理エレメントMXPE1乃至MXPEKの
各々にコマンドを搬送する。図1では、データ制御バス
68は、エレメント74、76、78、及び80として
示される。図1に示されるように、データ制御バス68
のうちのいくつかは、2つ以上のマトリクス処理エレメ
ントMXPEの間で共用可能である。例えば、データ制
御バス80は、データ制御線81及び82によって示さ
れるように、それぞれ、マトリクス処理エレメントMX
PE1及びMXPE5の間で共用される。ベクトル・レ
ジスタ402は、図3における単一の処理エレメント3
03のレジスタ、例えば、ワード・ロケーションW1R
1乃至W1RNに対応する。
【0047】図5は、図1のマトリクス制御装置(MX
CU)51の概略図を示す。命令は、MXU50から命
令バス41を介して制御装置570により受け取られ
る。それは、命令のタイプに基づいて、データをストア
・データ・バッファ502に記憶すべきか、又はロード
・データ・バッファ504に記憶すべきかというそれを
扱う方法を決定する。データは、CPUデータ・バス3
9を介してMXU50に及びMXU50から転送され
る。CPUデータ・バス39を介して到着するデータは
マルチプレクサ501に入る。そのマルチプレクサは、
CPU45から情報を受け取る時、バス506を介して
ロード・データ・バッファ504にそのデータを経路指
定する。ロード・データ・バッファ504におけるデー
タは、スイッチ、即ち、ルータ508によって、図1の
データ制御バス68に対応したデータ・パス510、5
12、514、及び516に分けられる。各データ・パ
ス510、512、514、及び516は、それぞれ、
マルチプレクサ518、520、522、及び524に
通じ、そしてそれらマルチプレクサから、データがデー
タ・バス74、76、78、及び80に転送される。デ
ータ・バス74、76、78、及び80におけるそのデ
ータは、マトリクス処理エレメントMXPE1乃至MX
PEKに転送される。
【0048】一方、データがマトリクス処理エレメント
MXPE1乃至MXPEKから転送される時、そのデー
タはデータ・バス74、76、78、及び80を介し
て、それぞれ、マルチプレクサ518、520、52
2、及び524に転送され、そしてそこから、それぞ
れ、データ線526、528、530、及び532を介
してスイッチ、即ち、ルータ534に送られる。データ
は、そのスイッチ534からストア・データ・バッファ
502に転送され、更に、データ線535、マルチプレ
クサ501、及びデータ・バス39を介して図1のCP
U45に転送される。マルチプレクサ501は、1つの
双方向入力、即ち、データ・バス39と、2つの単方向
データ線535及び506を有する。
【0049】図4は、図1のMXU50におけるMXP
Eの1つの概略図を更に詳細に示す。データ・バス40
1は、図1のデータ・バス74、76、78、又は80
のうちの任意のものでよい。NICAがそのシステムの
残りのもの(メモリ)と対話する方法を以下で説明す
る。本発明によるマトリクス装置の1つの主要な目的
は、メモリ帯域幅(BW)要件を減少させることであ
る。これは、NICAレジスタにロードされたデータの
有意味な再使用によって達成可能である。従って、NI
CAとメモリとの間の帯域幅(BW)に関する設計ポイ
ントは、1サイクル当たりのベクトル・ロード/ストア
(Kオペレーション)よりもかなり少なくなければなら
ない。ベクトル・ロード/ストアは、多数のサイクルに
おいて1回の割合でしか起こらないものと予測される。
【0050】この仮定の場合、NICAとシステムとの
間のデータ転送を2つの要素に分割することができる。
第1の要素は、システムとNICAロード・ストア/バ
ッファ(LSB)400との間の非同期転送である。第
2の要素は、LSB400とNICAベクトル・レジス
タ402との間の同期(SIMD)転送である。ちょう
どベクトル・レジスタのように、LSB400も、MX
U50におけるすべてのMXPEに分布している。LS
B400における1つのMXPE当たりの与えられたロ
ケーションの数がもう1つの設計パラメータである。ベ
クトル・ロードに対して、システムは、メモリにおける
オペランドのアドレスを計算し、それらをフェッチし、
そして宛先MXPEのインデックスをもって到着データ
をタグし、それらをバス上に(高い帯域幅に対しては、
各バスがMXPEのサブセットにだけ接続されて成る複
数のバスが使用可能である)置く。宛先MXPEは到着
データをラッチし、それをLSB400の指定されたロ
ケーションに置く。すべてのMXPEがそれらのデータ
を受け取った時、MXPE制御装置404は、LSB4
00からその指定されたベクトル・レジスタへのデータ
のSIMD転送を開始する。ベクトル・ストアは同様
に、しかし、逆に作用する。データ再使用のために、ベ
クトル・ロード/ストアは滅多にないことであり、NI
CAはレジスタにおけるデータに関してレジスタ・ツー
・レジスタ(RR)ベクトル演算を行い続けるものと考
えられる。
【0051】次のものは拡張の例示リストである。これ
らの思想のいくつか又はすべてがNICAにおいて利用
可能である。即ち、 ○「スカラ・レジスタ」のセットは、別個のスカラ・レ
ジスタ・バスを介してすべてのMXPEに対して利用可
能にされる。バスはスカラ・レジスタのプールから送ら
れ、すべてのMXPEは各MXPE上の別個の「スカラ
・ポート」を介してそれに接続される。このバスは、す
べてのPEの演算装置にスカラ定数を与えるために使用
可能である。このパスは、ベクトル・レジスタにおける
定数の速いローディングのためにも使用可能である。 ○多数のPEが単一のチップ/モジュール上に製作可能
である。これは、すべてのバスに対するI/OピンがP
E間で共用可能であるという利点を有する。 ○M個の1ビット・ベクトル・マスク又は条件レジスタ
のセットを設けることが可能である。これらは、再び、
各PEがM個の1ビット・マスク又は条件レジスタのセ
ットを有する場合、すべてのPEに分配される。これら
のレジスタは、比較によって、又は演算オペレーション
の条件コードによってセット可能である。それらは、P
Eとそのシステムとの間のデータ移動を実施するために
並びにPE内での条件付き演算及びデータ移動を実施す
るために使用可能である。これらのビット自体は、シス
テムとNICAとの間で双方向に転送可能である。ベク
トル条件レジスタとシステムとの間のビット転送のため
に、別個のKビット幅の並列バスが使用可能である。各
PEは個の並列バスのうちの1ビットを得る。これらの
マスクがNICAとシステムとの間のデータ転送を制御
するために使用される場合、制御装置にとってこのバス
が利用可能であることは、その転送のための制御データ
の速い先回り処理を助けるであろう。マスク・ベクトル
は1ビットのブール演算によっても操作可能である。 ○パック/アンパック・オペレーションを行うと(例え
ば、2つの短精度オペランドを1つの長精度オペランド
としてパックする)、短精度データはバス上を更に効率
的に転送可能である。これは、利用可能なメモリ及びバ
ス帯域幅の効率的な利用を助ける。 ○SIMDベクトル命令に参加するMXPEの範囲は、
アクティブナMXPEの開始及び終了インデックスを指
定する「ベクトル範囲設定」命令によって制御可能であ
る。この範囲内であっても、対応するMXPEにおける
指定されたマスク・ビット(M個のマスク・ビットの1
つ)が「1」である場合しか目標は更新されない。
【0052】NICAがNIC問題を解決する場合に適
用可能であるためには、2つの主要な必要条件、即ち、
ベクトル化及びデータ再使用、がある。最も伝統的なベ
クトル・オペレーションは、NICAにおいてSIMD
態様で実施可能である。しかし、いくつかの例外があ
る。1つのベクトルにおける相異なるエレメントの間の
相互作用を必要とするベクトル・オペレーションをSI
MD態様で行うことはできない。そのような命令の重要
な例はベクトル累算(乗算累算は累算と同じである)で
ある。累算では、ベクトルのサム・リダクション(su
m reduction)が行われる。演算パイプライ
ンのため、ベクトル・マシン上でも、これはあまり効率
的ではない。非常に長いベクトルを累算する場合、その
ベクトルの8つ毎のエレメントがアキュムレータの1つ
において累算される。オペレーションのこのフェーズは
十分なベクトル速度で完了する。これに続いて、「部分
和の合計」オペレーションが生じる。それはスカラ・モ
ードで行われる。累算(又は、乗算累算)は、部分和の
数がKに等しくされた場合、NICA上でも実施可能で
ある。次に、非常に長いベクトルに対しては、殆どの計
算が高パフォーマンスのSIMD態様で行われるであろ
う。最後の「部分和の合計」位相だけがスカラ計算で行
われるであろう。乗算累算オペレーションを回避するた
めに、しばしば、殆どのアルゴリズムが再公式化可能で
あり、そしてその代わりに、乗算加算オペレーションが
使用可能である。
【0053】SIMD計算を施すことが可能でないもう
1つのオペレーションは、ベクトルの最小及び最大を見
つけることである。ここで、再び、問題サイズをKまで
縮小するためにSIMDベクトル比較が使用可能であ
る。従って、その作業の殆どが高パフォーマンスSIM
Dモードで遂行可能である。
【0054】前述のように、ベクトル化はNICAを使
用する場合の前提である。殆どのNICAアプリケーシ
ョンが内部ループ・レベル又は外部ループ・レベルでベ
クトル化する。NICAが非常に効果的であるために
は、ベクトル・レジスタに与えられたデータの有意味な
再使用が必要である。再使用は、浮動小数点演算対デー
タ比(FDR)に関連する。当初の問題を或レベルでブ
ロック化することによって、多くの問題に対して、FD
Rは大いに改良可能である。1つの有用な技法は外部ル
ープ・ベクトル化である。その場合、内部ループ又はこ
れらのサブブロックがNICAレジスタに適合する。そ
こで、外部ループがKのブロック・サイズでもってブロ
ック化され、そしてすべての内部ループ計算が1つのP
Eにおいて生じる時、外部ループの各インデックスが別
個のPEにおいて実行される。これは、外部ループ・ベ
クトル化/並列化の非常に一般的な形式である。多くの
並列化コンパイラが、この技法を使用して多くの並列プ
ロセッサに跨って計算を分配する。ベクトル化し得ない
多くの問題が、しばしば、並列化可能である。例えば、
地震の計算では、複雑な三重対角等式の多重システムを
解く場合に、大量の計算が行われる。これらは、パフォ
ーマンスにおける非常に大きな利得をもって、NICA
において実施可能である。大量の地震の計算はトレース
・ベース化され、しばしば、それらトレースに跨って並
列化可能である。
【0055】FORTRAN−90と呼ばれるFORT
RANの拡張が定義されている。それは、アレイ演算を
行う機能を提供する。FORTRAN−90で書かれた
プログラムはNICAにとって容易にコンパイル可能で
ある。
【0056】LAPACKは、線形代数計算を行うため
の公知のソフトウエアである。それは、LINPACK
及びEISPACKパッケージに取って代わるものであ
り、それらを大いに拡張するものである。それは、殆ど
の現在利用可能なコンピュータにおける非常に高いパフ
ォーマンスのために書かれている。それの高いパフォー
マンスのために、線形代数サブルーチン及びNAGのよ
うな他の商業計算ソフトウエア・パッケージの殆どのユ
ーザが、LAPACKに移行している。LAPACKプ
ロジェクトの背後にある重要な思想は、殆どの計算がB
LAS−3で行われない場合、高パフォーマンスを得る
ことはできないということである。BLAS−3は、N
2 のオーダのデータ・ポイントで、N3 のオーダの計算
を行う線形代数カーネルのセットである。LAPACK
コードは移植可能であり、コンピュータ製造者によって
提供された調整された(特殊機械用に)BLAS−3カ
ーネルを利用する。この思想及びソフトウエア・パッケ
ージは、共用メモリ並列プロセッサ及びMIMD機械ま
で更に拡張される。BLAS−3ルーチンの調整された
セットがNICA用に開発されることが期待される。そ
こで、LAPACKサブルーチン・コールを持ったユー
ザ・コードは、ユーザ部分において如何なる努力も払う
ことなく、NICAからパフォーマンス・ブーストを自
動的に得るであろう。
【0057】一方、BLAC−3ルーチンは、DGEM
M(更新を伴うマトリクス・マトリクス乗算)において
その計算の殆どを行う。DGEMMにおいて行われない
計算は、それが三角マトリクスにおいて行われることを
除けば同じである。以下では、NICAにおいて非常に
効率的にDGEMMを実施できる方法を示す。
【0058】DGEMMは次の計算、即ち、 C<--C+A*B を行う。
【0059】サイズがK*PであるCというブロックが
一時に計算されるように、Cに関する何らかの外部レベ
ル・ブロッキングがあるものと仮定する。但し、PはN
よりも小さく、NICAにおいて利用可能なベクトル・
レジスタの数である。その場合、Cマトリクスのこのブ
ロックはNICAレジスタに適合する。AはサイズK*
Lのものであると仮定する。但し、Lはその問題の中間
の大きさである。そこで、上記の計算は、Cマトリクス
に関するランクL更新を行うことになる。これは、L個
のステップで行うことができる。各ランクI更新のため
には、Aマトリクス(K個のエレメント)の1つの列と
Bマトリクス(P個のエレメント)の1つの行が必要で
ある。これらK+P個のエレメントがNICAに与えら
れ、2*P*K浮動小数点演算を生成するために使用さ
れる。この問題に対する浮動小数点演算対データの比
は、2/(1/K+1/P)である。K及びPの両方とも
大きい場合、これは非常に計算集中的な問題となる。N
ICAとシステムとの間のメモリ帯域幅は、2*K*P
浮動小数点演算を行いながら(K+P)データ転送をサ
ポートするに十分な大きさでなければならない。2*K
浮動小数点演算が1サイクルで行い得るものであると仮
定すると、1サイクル当たり少なくとも(1+K/P)
個のエレメントのデータ転送速度を必要とする。これ
は、Cマトリクスの初期ローディング及び最終ストアリ
ングを考慮していない。Lが大きい場合、この余分なオ
ーバヘッドは小さくなる。
【0060】1次元及び多次元FET、多重シーケンス
の回旋/相関、地震の処理における3次元移行等のよう
な多くの他の重要な計算カーネルが知られている。これ
らアプリケーションはすべて、NICAから大きなパフ
ォーマンス利得を得ることができる。一般的な稠密、正
定値の対称、複体対称、帯域(VSSのオーダの、又は
更に長い帯域幅を持つ)、スカイライン等のような種々
な種類の式を解くことは、すべて、ピークに近いパフォ
ーマンスでもってNICA上で実施可能である。汎用稠
密システムの等式(サイズ1000又はそれ以上)を解
くLINPACK TPPベンチマークも、ピーク・パ
フォーマンスに近くなるであろう。これは非常に重要な
超高速計算ベンチマークであり、スーパコンピュータ
は、しばしば、この基準で比較される。
【0061】大規模な科学計算におけるもう1つの傾向
は、非常に大きな疎システムの等式に向いている。これ
らの問題を解くために、しばしば、直接方法が使用され
る。直接疎方法は疎BLAS−3(現在の標準的活動は
これらBLASを定義する用に進んでいる)によって公
式化可能である。一方、疎BLAS−3は、NICAに
対してブロック化可能である。疎マトリクスは、抽出さ
れたブロックが全く稠密に見えるような方法で行及び列
のセットがそのマトリクスから抽出されるように再配列
可能である。疎マトリクス全体は、これらブロック及び
他の構造体(対角線の帯域のような)のセットの線形合
計として表される。これらは稠密ブロックとしてNIC
Aベクトル・レジスタに転送され、何回も使用可能であ
る。
【0062】高パフォーマンスのグラフィックスも高い
FDRを持つ傾向があり、ベクトル化可能である。これ
らのアプリケーションもNICAから利益を得ることが
できる。
【0063】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0064】(1)プロセッサ・サイクル・タイムを有
する計算機プロセッサにして、K個の処理エレメント
(但し、K>1)にして、前記K個の処理エレメントの
各々はN個のレジスタのセット(但し、N>1)及び演
算装置を含み、前記レジスタの各々のI番目のエレメン
トはベクトル長KのI番目のベクトルのための記憶ロケ
ーションを提供し(但し、1≦I≦N)、それによっ
て、N個のベクトルを提供するものと、前記N個のベク
トルの少なくとも1つの間でベクトル・オペレーション
を所定のサイクル・タイムで遂行し、前記ベクトル・オ
ペレーションの結果を前記N個のベクトルの1つに記憶
するための手段にして、前記ベクトル・オペレーション
が前記N個のベクトルの少なくとも1つにおけるK個の
エレメントすべてに対して実質的に同時に前記K個の演
算装置によって遂行されるものと、前記所定のサイクル
・タイム後の次のサイクルタイムにおいて他のベクトル
・オペレーションを遂行するための手段と、を含む計算
機プロセッサ。 (2)前記N個のレジスタのセットにおける各レジスタ
はM個のビット記憶ロケーション(但し、M>0)を有
することを特徴とする上記(1)に記載の計算機プロセ
ッサ。 (3)前記ベクトル・オペレーションを遂行するための
手段である第1演算装置及び前記他のベクトル・オペレ
ーションを遂行するための手段である第2演算装置は同
じ演算装置であることを特徴とする上記(1) に記載
の計算機プロセッサ。 (4)マトリクス制御装置を含むことを特徴とする上記
(1)に記載の計算機プロセッサ。 (5)前記マトリクス制御装置を前記K個の処理エレメ
ントに接続するコマンド・バスを含むことを特徴とする
上記(4)に記載の計算機プロセッサ。 (6)前記マトリクス制御装置を前記K個の処理エレメ
ントに接続する少なくとも1つのデータ・バスを含むこ
とを特徴とする上記(4)又は(5)に記載の計算機プ
ロセッサ。 (7)前記少なくとも1つのデータ・バスは前記K個の
処理エレメントのうちの2個以上の処理エレメントによ
って共用されることを特徴とする上記(5)に記載の計
算機プロセッサ。 (8)サイクル・タイムを有する計算機プロセッサにし
て、マトリクス制御装置と、前記サイクル・タイムのう
ちの先行のベクトル・オペレーションの1サイクルにお
いて後続のベクトル・オペレーションを遂行するための
手段と、を含む計算機プロセッサ。 (9)前記手段はベクトル演算オペレーションを遂行す
ることを特徴とする上記(8)に記載の計算機プロセッ
サ。 (10)前記マトリクス制御装置を前記K個の処理エレ
メントに接続するコマンド・バスと、前記マトリクス制
御装置を前記K個の処理エレメントに接続する少なくと
も1つのデータ・バスと、を含むことを特徴とする上記
(8)に記載の計算機プロセッサ。 (11)サイクル・タイムを有する計算機システムにし
て、メイン・メモリと、キャッシュ・メモリと、記憶制
御装置と、中央処理装置と、マトリクス処理装置と、前
記中央処理装置から前記マトリクス処理装置に命令を転
送するためのマトリクス命令バスと、前記キャッシュ・
メモリから前記マトリクス処理装置にデータを転送する
ための中央処理装置データ・バスと、前記中央処理装置
は前記記憶制御装置と前記キャッシュ・メモリとを介し
て前記メイン・メモリに接続する手段と、前記マトリク
ス制御装置は前記キャッシュ・メモリを介して前記メイ
ン・メモリに接続する手段と、前記記憶制御装置はメモ
リ・アドレス・バスによって前記メイン・メモリに接続
する手段と、前記記憶制御装置は第1データ・バスによ
って前記中央処理装置に接続する手段と、前記キャッシ
ュ・メモリは第2データ・バスによって前記マトリクス
処理装置に接続する手段と、前記マトリクス処理装置は
前記サイクル・タイムのうちの先行のベクトル・オペレ
ーションの1サイクルにおいて後続のベクトル・オペレ
ーションを遂行するための手段を含むことと、K個の処
理エレメント(但し、K>1)にして、前記K個の処理
エレメントの各々はN個のレジスタのセット(但し、N
>1)及び演算装置を含み、前記レジスタの各々のI番
目のエレメントはベクトル長KのI番目のベクトルのた
めの記憶ロケーションを提供し(但し、1≦I≦N)、
それによって、N個のベクトルを提供するものと、前記
N個のベクトルの少なくとも1つの間でベクトル・オペ
レーションを所定のサイクル・タイムで遂行し、前記ベ
クトル・オペレーションの結果を前記N個のベクトルの
1つに記憶するための手段にして、前記ベクトル・オペ
レーションが前記N個のベクトルの少なくとも1つにお
けるK個のエレメントすべてに対して実質的に同時に前
記K個の演算装置によって遂行されるものと、前記所定
のサイクル・タイム後の次のサイクルタイムにおいて他
のベクトル・オペレーションを遂行するための手段と、
を含む計算機システム。 (12)サイクル・タイムを有する計算機システムにし
て、メイン・メモリと、キャッシュ・メモリと、記憶制
御装置と、中央処理装置と、マトリクス処理装置と、前
記中央処理装置から前記マトリクス処理装置に命令を転
送するためのマトリクス命令バスと、前記キャッシュ・
メモリから前記マトリクス処理装置にデータを転送する
ための中央処理装置データ・バスと、を含み、前記中央
処理装置は前記記憶制御装置と前記キャッシュ・メモリ
とを介して前記メイン・メモリに接続する手段と、前記
マトリクス制御装置は前記キャッシュ・メモリを介して
前記メイン・メモリに接続する手段と、前記記憶制御装
置はメモリ・アドレス・バスによって前記メイン・メモ
リに接続する手段と、前記記憶制御装置は第1データ・
バスによって前記中央処理装置に接続する手段と、前記
キャッシュ・メモリは第2データ・バスによって前記マ
トリクス処理装置に接続する手段と、前記マトリクス処
理装置は、K個の処理エレメント(但し、K>1)にし
て、前記K個の処理エレメントの各々はN個のレジスタ
のセット(但し、N>1)及び演算装置を含み、前記レ
ジスタの各々のI番目のエレメントはベクトル長KのI
番目のベクトルのための記憶ロケーションを提供し(但
し、1≦I≦N)、それによって、N個のベクトルを提
供するものと、前記N個のベクトルの少なくとも1つの
間でベクトル・オペレーションを所定のサイクル・タイ
ムで遂行し、前記ベクトル・オペレーションの結果を前
記N個のベクトルの1つに記憶するための手段にして、
前記ベクトル・オペレーションが前記N個のベクトルの
少なくとも1つにおけるK個のエレメントすべてに対し
て実質的に同時に前記K個の演算装置によって遂行され
るものと、前記所定のサイクル・タイム後の次のサイク
ルタイムにおいて他のベクトル・オペレーションを遂行
するための手段と、を含むことを、特徴とする計算機シ
ステム。 (13)マトリクス制御装置と、前記マトリクス制御装
置を前記K個の処理エレメントに接続するためのコマン
ド・バスと、前記マトリクス制御装置を前記K個の処理
エレメントに接続するための少なくとも1つのデータ・
バスと、を含むことを特徴とする上記(12)に記載の
計算機システム。 (14)サイクル・タイムを有する計算機システムにし
て、メイン・メモリと、中央処理装置と、マトリクス処
理装置と、前記中央処理装置から前記マトリクス処理装
置に命令を転送するためのマトリクス命令バスと、前記
メイン・メモリから前記マトリクス処理装置にデータを
転送するための中央処理装置データ・バスと、前記中央
処理装置は第1データ・バスによって前記メイン・メモ
リに接続する手段と、前記マトリクス制御装置は第2デ
ータ・バスによって前記メイン・メモリに接続する手段
と、前記記憶制御装置はメモリ・アドレス・バスによっ
て前記メイン・メモリに接続する手段と、前記マトリク
ス処理装置は前記サイクル・タイムのうちの先行のベク
トル・オペレーションの1サイクルにおいて後続のベク
トル・オペレーションを遂行するための手段を含むこと
と、K個の処理エレメント(但し、K>1)にして、前
記K個の処理エレメントの各々はN個のレジスタのセッ
ト(但し、N>1)及び演算装置を含み、前記レジスタ
の各々のI番目のエレメントはベクトル長KのI番目の
ベクトルのための記憶ロケーションを提供し(但し、1
≦I≦N)、それによって、N個のベクトルを提供する
ものと、前記N個のベクトルの少なくとも1つの間でベ
クトル・オペレーションを所定のサイクル・タイムで遂
行し、前記ベクトル・オペレーションの結果を前記N個
のベクトルの1つに記憶するための手段にして、前記ベ
クトル・オペレーションが前記N個のベクトルの少なく
とも1つにおけるK個のエレメントすべてに対して実質
的に同時に前記K個の演算装置によって遂行されるもの
と、前記所定のサイクル・タイム後の次のサイクルタイ
ムにおいて他のベクトル・オペレーションを遂行するた
めの手段と、を含む計算機システム。
【0065】
【発明の効果】本発明により、計算機システムのメモリ
帯域幅を大きく増大させることなく、制限された数の命
令をより速く実行することが可能となる。
【図面の簡単な説明】
【図1】本発明の実施例に従って構成されたデータ処理
システムのブロック図を示す。
【図2】一般に利用可能なベクトル・プロセッサの概略
図を示す。
【図3】本発明によるベクトル・プロセッサの概略図で
ある。
【図4】図3のベクトル・プロセッサの処理エレメント
MXPEの1つの詳細なブロック図である。
【図5】図3のベクトル・プロセッサのマトリクス制御
装置MXUの詳細なブロック図である。
フロントページの続き (72)発明者 ランダル・ディーン・グローブス アメリカ合衆国テキサス州、オースティ ン、ミドルビィー・ドライブ 9002 (72)発明者 フレッド・ゲールング・ガスタブソン アメリカ合衆国ニューヨーク州、ブリアク リフ・マノア、サウス・スティト・ロード 70 (72)発明者 マーク・アラン・ジョンソン アメリカ合衆国テキサス州、オースティ ン、タレイラン・ドライブ 10105 (72)発明者 ブレット・オルッソン アメリカ合衆国テキサス州、ラウンド・ロ ック、シンコタニュー・ウェイ 1800

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】プロセッサ・サイクル・タイムを有する計
    算機プロセッサにして、 K個の処理エレメント(但し、K>1)にして、前記K
    個の処理エレメントの各々はN個のレジスタのセット
    (但し、N>1)及び演算装置を含み、前記レジスタの
    各々のI番目のエレメントはベクトル長KのI番目のベ
    クトルのための記憶ロケーションを提供し(但し、1≦
    I≦N)、それによって、N個のベクトルを提供するも
    のと、 前記N個のベクトルの少なくとも1つの間でベクトル・
    オペレーションを所定のサイクル・タイムで遂行し、前
    記ベクトル・オペレーションの結果を前記N個のベクト
    ルの1つに記憶するための手段にして、前記ベクトル・
    オペレーションが前記N個のベクトルの少なくとも1つ
    におけるK個のエレメントすべてに対して実質的に同時
    に前記K個の演算装置によって遂行されるものと、 前記所定のサイクル・タイム後の次のサイクルタイムに
    おいて他のベクトル・オペレーションを遂行するための
    手段と、 を含む計算機プロセッサ。
  2. 【請求項2】前記N個のレジスタのセットにおける各レ
    ジスタはM個のビット記憶ロケーション(但し、M>
    0)を有することを特徴とする請求項1に記載の計算機
    プロセッサ。
  3. 【請求項3】前記ベクトル・オペレーションを遂行する
    ための手段である第1演算装置及び前記他のベクトル・
    オペレーションを遂行するための手段である第2演算装
    置は同じ演算装置であることを特徴とする請求項1に記
    載の計算機プロセッサ。
  4. 【請求項4】マトリクス制御装置を含むことを特徴とす
    る請求項1に記載の計算機プロセッサ。
  5. 【請求項5】前記マトリクス制御装置を前記K個の処理
    エレメントに接続するコマンド・バスを含むことを特徴
    とする請求項4に記載の計算機プロセッサ。
  6. 【請求項6】前記マトリクス制御装置を前記K個の処理
    エレメントに接続する少なくとも1つのデータ・バスを
    含むことを特徴とする請求項4又は5に記載の計算機プ
    ロセッサ。
  7. 【請求項7】前記少なくとも1つのデータ・バスは前記
    K個の処理エレメントのうちの2個以上の処理エレメン
    トによって共用されることを特徴とする請求項5に記載
    の計算機プロセッサ。
  8. 【請求項8】サイクル・タイムを有する計算機プロセッ
    サにして、 マトリクス制御装置と、 前記サイクル・タイムのうちの先行のベクトル・オペレ
    ーションの1サイクルにおいて後続のベクトル・オペレ
    ーションを遂行するための手段と、 を含む計算機プロセッサ。
  9. 【請求項9】前記手段はベクトル演算オペレーションを
    遂行することを特徴とする請求項8に記載の計算機プロ
    セッサ。
  10. 【請求項10】前記マトリクス制御装置を前記K個の処
    理エレメントに接続するコマンド・バスと、 前記マトリクス制御装置を前記K個の処理エレメントに
    接続する少なくとも1つのデータ・バスと、 を含むことを特徴とする請求項8に記載の計算機プロセ
    ッサ。
  11. 【請求項11】サイクル・タイムを有する計算機システ
    ムにして、 メイン・メモリと、 キャッシュ・メモリと、 記憶制御装置と、 中央処理装置と、 マトリクス処理装置と、 前記中央処理装置から前記マトリクス処理装置に命令を
    転送するためのマトリクス命令バスと、 前記キャッシュ・メモリから前記マトリクス処理装置に
    データを転送するための中央処理装置データ・バスと、 前記中央処理装置は前記記憶制御装置と前記キャッシュ
    ・メモリとを介して前記メイン・メモリに接続する手段
    と、 前記マトリクス制御装置は前記キャッシュ・メモリを介
    して前記メイン・メモリに接続する手段と、 前記記憶制御装置はメモリ・アドレス・バスによって前
    記メイン・メモリに接続する手段と、 前記記憶制御装置は第1データ・バスによって前記中央
    処理装置に接続する手段と、 前記キャッシュ・メモリは第2データ・バスによって前
    記マトリクス処理装置に接続する手段と、 前記マトリクス処理装置は前記サイクル・タイムのうち
    の先行のベクトル・オペレーションの1サイクルにおい
    て後続のベクトル・オペレーションを遂行するための手
    段を含むことと、 K個の処理エレメント(但し、K>1)にして、前記K
    個の処理エレメントの各々はN個のレジスタのセット
    (但し、N>1)及び演算装置を含み、前記レジスタの
    各々のI番目のエレメントはベクトル長KのI番目のベ
    クトルのための記憶ロケーションを提供し(但し、1≦
    I≦N)、それによって、N個のベクトルを提供するも
    のと、 前記N個のベクトルの少なくとも1つの間でベクトル・
    オペレーションを所定のサイクル・タイムで遂行し、前
    記ベクトル・オペレーションの結果を前記N個のベクト
    ルの1つに記憶するための手段にして、前記ベクトル・
    オペレーションが前記N個のベクトルの少なくとも1つ
    におけるK個のエレメントすべてに対して実質的に同時
    に前記K個の演算装置によって遂行されるものと、 前記所定のサイクル・タイム後の次のサイクルタイムに
    おいて他のベクトル・オペレーションを遂行するための
    手段と、 を含む計算機システム。
  12. 【請求項12】サイクル・タイムを有する計算機システ
    ムにして、 メイン・メモリと、 キャッシュ・メモリと、 記憶制御装置と、 中央処理装置と、 マトリクス処理装置と、 前記中央処理装置から前記マトリクス処理装置に命令を
    転送するためのマトリクス命令バスと、 前記キャッシュ・メモリから前記マトリクス処理装置に
    データを転送するための中央処理装置データ・バスと、 を含み、 前記中央処理装置は前記記憶制御装置と前記キャッシュ
    ・メモリとを介して前記メイン・メモリに接続する手段
    と、 前記マトリクス制御装置は前記キャッシュ・メモリを介
    して前記メイン・メモリに接続する手段と、 前記記憶制御装置はメモリ・アドレス・バスによって前
    記メイン・メモリに接続する手段と、 前記記憶制御装置は第1データ・バスによって前記中央
    処理装置に接続する手段と、 前記キャッシュ・メモリは第2データ・バスによって前
    記マトリクス処理装置に接続する手段と、 前記マトリクス処理装置は、 K個の処理エレメント(但し、K>1)にして、前記K
    個の処理エレメントの各々はN個のレジスタのセット
    (但し、N>1)及び演算装置を含み、前記レジスタの
    各々のI番目のエレメントはベクトル長KのI番目のベ
    クトルのための記憶ロケーションを提供し(但し、1≦
    I≦N)、それによって、N個のベクトルを提供するも
    のと、 前記N個のベクトルの少なくとも1つの間でベクトル・
    オペレーションを所定のサイクル・タイムで遂行し、前
    記ベクトル・オペレーションの結果を前記N個のベクト
    ルの1つに記憶するための手段にして、前記ベクトル・
    オペレーションが前記N個のベクトルの少なくとも1つ
    におけるK個のエレメントすべてに対して実質的に同時
    に前記K個の演算装置によって遂行されるものと、 前記所定のサイクル・タイム後の次のサイクルタイムに
    おいて他のベクトル・オペレーションを遂行するための
    手段と、 を含むことを、 特徴とする計算機システム。
  13. 【請求項13】マトリクス制御装置と、 前記マトリクス制御装置を前記K個の処理エレメントに
    接続するためのコマンド・バスと、 前記マトリクス制御装置を前記K個の処理エレメントに
    接続するための少なくとも1つのデータ・バスと、 を含むことを特徴とする請求項12に記載の計算機シス
    テム。
  14. 【請求項14】サイクル・タイムを有する計算機システ
    ムにして、 メイン・メモリと、 中央処理装置と、 マトリクス処理装置と、 前記中央処理装置から前記マトリクス処理装置に命令を
    転送するためのマトリクス命令バスと、 前記メイン・メモリから前記マトリクス処理装置にデー
    タを転送するための中央処理装置データ・バスと、 前記中央処理装置は第1データ・バスによって前記メイ
    ン・メモリに接続する手段と、 前記マトリクス制御装置は第2データ・バスによって前
    記メイン・メモリに接続する手段と、 前記記憶制御装置はメモリ・アドレス・バスによって前
    記メイン・メモリに接続する手段と、 前記マトリクス処理装置は前記サイクル・タイムのうち
    の先行のベクトル・オペレーションの1サイクルにおい
    て後続のベクトル・オペレーションを遂行するための手
    段を含むことと、 K個の処理エレメント(但し、K>1)にして、前記K
    個の処理エレメントの各々はN個のレジスタのセット
    (但し、N>1)及び演算装置を含み、前記レジスタの
    各々のI番目のエレメントはベクトル長KのI番目のベ
    クトルのための記憶ロケーションを提供し(但し、1≦
    I≦N)、それによって、N個のベクトルを提供するも
    のと、 前記N個のベクトルの少なくとも1つの間でベクトル・
    オペレーションを所定のサイクル・タイムで遂行し、前
    記ベクトル・オペレーションの結果を前記N個のベクト
    ルの1つに記憶するための手段にして、前記ベクトル・
    オペレーションが前記N個のベクトルの少なくとも1つ
    におけるK個のエレメントすべてに対して実質的に同時
    に前記K個の演算装置によって遂行されるものと、 前記所定のサイクル・タイム後の次のサイクルタイムに
    おいて他のベクトル・オペレーションを遂行するための
    手段と、 を含む計算機システム。
JP6316800A 1994-03-24 1994-12-20 計算機プロセッサ及びシステム Pending JPH07271764A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US217533 1988-07-11
US21753394A 1994-03-24 1994-03-24

Publications (1)

Publication Number Publication Date
JPH07271764A true JPH07271764A (ja) 1995-10-20

Family

ID=22811461

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6316800A Pending JPH07271764A (ja) 1994-03-24 1994-12-20 計算機プロセッサ及びシステム

Country Status (3)

Country Link
US (1) US5825677A (ja)
EP (1) EP0675450A3 (ja)
JP (1) JPH07271764A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7386703B2 (en) 2003-11-18 2008-06-10 International Business Machines Corporation Two dimensional addressing of a matrix-vector register array
JP2016157479A (ja) * 2016-05-02 2016-09-01 インテル・コーポレーション ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6295599B1 (en) * 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5953241A (en) * 1995-08-16 1999-09-14 Microunity Engeering Systems, Inc. Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
US5742840A (en) 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
EP0945992A1 (en) * 1998-03-27 1999-09-29 TTP Communications Limited CDMA array processor
US7100026B2 (en) * 2001-05-30 2006-08-29 The Massachusetts Institute Of Technology System and method for performing efficient conditional vector operations for data parallel architectures involving both input and conditional vector values
US6269435B1 (en) * 1998-09-14 2001-07-31 The Board Of Trustees Of The Leland Stanford Junior University System and method for implementing conditional vector operations in which an input vector containing multiple operands to be used in conditional operations is divided into two or more output vectors based on a condition vector
US6336183B1 (en) * 1999-02-26 2002-01-01 International Business Machines Corporation System and method for executing store instructions
US6901422B1 (en) 2001-03-21 2005-05-31 Apple Computer, Inc. Matrix multiplication in a vector processing system
US20030145030A1 (en) * 2002-01-31 2003-07-31 Sheaffer Gad S. Multiply-accumulate accelerator with data re-use
US7469266B2 (en) 2003-09-29 2008-12-23 International Business Machines Corporation Method and structure for producing high performance linear algebra routines using register block data format routines
US20050071405A1 (en) * 2003-09-29 2005-03-31 International Business Machines Corporation Method and structure for producing high performance linear algebra routines using level 3 prefetching for kernel routines
US7487195B2 (en) * 2003-09-29 2009-02-03 International Business Machines Corporation Method and structure for producing high performance linear algebra routines using composite blocking based on L1 cache size
US7475101B2 (en) 2003-09-29 2009-01-06 International Business Machines Corporation Method and structure for producing high performance linear algebra routines using streaming
US7571435B2 (en) * 2003-09-29 2009-08-04 International Business Machines Corporation Method and structure for producing high performance linear algebra routines using preloading of floating point registers
US7386582B2 (en) * 2003-09-29 2008-06-10 International Business Machines Corporation Method and structure for producing high performance linear algebra routines using a hybrid full-packed storage format
US7490120B2 (en) * 2003-09-29 2009-02-10 International Business Machines Corporation Method and structure for producing high performance linear algebra routines using a selectable one of six possible level 3 L1 kernel routines
US20060161612A1 (en) * 2005-01-14 2006-07-20 International Business Machines Corporation Method and structure for a generalized cache-register file interface with data restructuring methods for multiple cache levels and hardware pre-fetching
US20060168401A1 (en) * 2005-01-26 2006-07-27 International Business Machines Corporation Method and structure for high-performance linear algebra in the presence of limited outstanding miss slots
KR101270925B1 (ko) * 2005-05-20 2013-06-07 소니 주식회사 신호 처리 장치
US9513905B2 (en) * 2008-03-28 2016-12-06 Intel Corporation Vector instructions to enable efficient synchronization and parallel reduction operations
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
SE1151231A1 (sv) * 2011-12-20 2013-05-07 Mediatek Sweden Ab Digital signalprocessor och basbandskommunikationsanordning
SE537552C2 (sv) * 2011-12-21 2015-06-09 Mediatek Sweden Ab Digital signalprocessor
US8856420B2 (en) * 2011-12-27 2014-10-07 Intel Corporation Multi-protocol I/O interconnect flow control
CN104956322B (zh) * 2013-03-05 2019-03-01 英特尔公司 分析向量化的潜在效益
US9477477B2 (en) * 2014-01-22 2016-10-25 Nvidia Corporation System, method, and computer program product for executing casting-arithmetic instructions
US10996959B2 (en) * 2015-01-08 2021-05-04 Technion Research And Development Foundation Ltd. Hybrid processor
US10489063B2 (en) * 2016-12-19 2019-11-26 Intel Corporation Memory-to-memory instructions to accelerate sparse-matrix by dense-vector and sparse-vector by dense-vector multiplication
US10261786B2 (en) * 2017-03-09 2019-04-16 Google Llc Vector processing unit
US11922292B2 (en) 2020-01-27 2024-03-05 Google Llc Shared scratchpad memory with parallel load-store
US11921559B2 (en) * 2021-05-03 2024-03-05 Groq, Inc. Power grid distribution for tensor streaming processors

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61208570A (ja) * 1985-03-13 1986-09-16 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション ベクトル・プロセツサ

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58114274A (ja) * 1981-12-28 1983-07-07 Hitachi Ltd デ−タ処理装置
JPS58134357A (ja) * 1982-02-03 1983-08-10 Hitachi Ltd ベクトルプロセッサ
JPH0652530B2 (ja) * 1982-10-25 1994-07-06 株式会社日立製作所 ベクトル・プロセッサ
JPS59111569A (ja) * 1982-12-17 1984-06-27 Hitachi Ltd ベクトル処理装置
US4594682A (en) * 1982-12-22 1986-06-10 Ibm Corporation Vector processing
JPS6027984A (ja) * 1983-07-27 1985-02-13 Hitachi Ltd デ−タ処理装置
JPS6057467A (ja) * 1983-09-09 1985-04-03 Nec Corp ベクトルデ−タ処理装置
JPS6077265A (ja) * 1983-10-05 1985-05-01 Hitachi Ltd ベクトル処理装置
US5010477A (en) * 1986-10-17 1991-04-23 Hitachi, Ltd. Method and apparatus for transferring vector data between parallel processing system with registers & logic for inter-processor data communication independents of processing operations
JPH04336378A (ja) * 1991-05-14 1992-11-24 Nec Corp 情報処理装置
US5274818A (en) * 1992-02-03 1993-12-28 Thinking Machines Corporation System and method for compiling a fine-grained array based source program onto a course-grained hardware

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61208570A (ja) * 1985-03-13 1986-09-16 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション ベクトル・プロセツサ

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7386703B2 (en) 2003-11-18 2008-06-10 International Business Machines Corporation Two dimensional addressing of a matrix-vector register array
US7496731B2 (en) 2003-11-18 2009-02-24 International Business Machines Corporation Two dimensional addressing of a matrix-vector register array
US7949853B2 (en) 2003-11-18 2011-05-24 International Business Machines Corporation Two dimensional addressing of a matrix-vector register array
JP2016157479A (ja) * 2016-05-02 2016-09-01 インテル・コーポレーション ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック

Also Published As

Publication number Publication date
US5825677A (en) 1998-10-20
EP0675450A2 (en) 1995-10-04
EP0675450A3 (en) 1995-11-15

Similar Documents

Publication Publication Date Title
JPH07271764A (ja) 計算機プロセッサ及びシステム
US5887183A (en) Method and system in a data processing system for loading and storing vectors in a plurality of modes
US9015354B2 (en) Efficient complex multiplication and fast fourier transform (FFT) implementation on the ManArray architecture
US5513366A (en) Method and system for dynamically reconfiguring a register file in a vector processor
US5758176A (en) Method and system for providing a single-instruction, multiple-data execution unit for performing single-instruction, multiple-data operations within a superscalar data processing system
EP0726532B1 (en) Array processor communication architecture with broadcast instructions
US7100026B2 (en) System and method for performing efficient conditional vector operations for data parallel architectures involving both input and conditional vector values
JP2966085B2 (ja) 後入れ先出しスタックを備えるマイクロプロセッサ、マイクロプロセッサシステム、及び後入れ先出しスタックの動作方法
US5680338A (en) Method and system for vector processing utilizing selected vector elements
JPH0635877A (ja) アレイ・プロセッサ
Hwang et al. Vector computer architecture and processing techniques
Norrie Supercomputers for superproblems: An architectural introduction
Hong et al. A hybrid approach for efficient dataflow computing
EP0199757B1 (en) Instruction flow computer
US20030172248A1 (en) Synergetic computing system
JP2003167726A (ja) コプロセッサ装置およびデータ転送を容易にするための方法
Lines The Vortex: A superscalar asynchronous processor
JP2781742B2 (ja) 並列計算機
Pechanek et al. An introduction to an array memory processor for application specific acceleration
Schneck Supercomputers
Napolitano Jr A computer architecture for dynamic finite element analysis
Schönauer et al. Could user-friendly supercomputers be designed?
JPH0635878A (ja) 単一命令複数データ/複数命令複数データ・プロセッサ・アレイ用コントローラ
JP2625628B2 (ja) 浮動小数点コンピュータ・システム
Payne et al. MPU: a N-tuple matching processor