JPH0142019B2 - - Google Patents
Info
- Publication number
- JPH0142019B2 JPH0142019B2 JP5548183A JP5548183A JPH0142019B2 JP H0142019 B2 JPH0142019 B2 JP H0142019B2 JP 5548183 A JP5548183 A JP 5548183A JP 5548183 A JP5548183 A JP 5548183A JP H0142019 B2 JPH0142019 B2 JP H0142019B2
- Authority
- JP
- Japan
- Prior art keywords
- mask
- vector
- instruction
- processing
- statement
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Description
【発明の詳細な説明】
〔発明の技術分野〕
本発明は、複数の並列演算部を備えてベクトル
命令を処理するベクトル処理プロセツサに係り、
条件付命令の実行に際し、各エレメントに対して
命令を実行するか否かを示す情報として与えられ
たマスク情報のベクトル長単位のオンの数を基
に、マスク付命令で実行するか、データのベクト
ル長短縮処理をして実行するか、或いはスキツプ
するかを選択するようにした条件付命令の実行時
命令選択方式に関するものである。
命令を処理するベクトル処理プロセツサに係り、
条件付命令の実行に際し、各エレメントに対して
命令を実行するか否かを示す情報として与えられ
たマスク情報のベクトル長単位のオンの数を基
に、マスク付命令で実行するか、データのベクト
ル長短縮処理をして実行するか、或いはスキツプ
するかを選択するようにした条件付命令の実行時
命令選択方式に関するものである。
第1図はベクトル処理プロセツサを有する処理
システムの1例を示す図、第2図はベクトル命令
に対応した処理を概念的に説明する図、第3図は
ベクトル処理プロセツサに対して、与えられたソ
ース・プログラムから目的プログラムを生成して
供給するコンパイラの構成例を示す図、第4図は
ソース・プログラムを中間テキストに移してゆく
態様を説明する図、第5図はソース・プログラム
をベクトル化してゆく態様を説明する図、第6図
ないし第8図はIF文を含むソース・プログラム
に対して文マスクやパス・マスクを用意して並列
実行可能な形にしてゆく態様を説明する図であ
る。
システムの1例を示す図、第2図はベクトル命令
に対応した処理を概念的に説明する図、第3図は
ベクトル処理プロセツサに対して、与えられたソ
ース・プログラムから目的プログラムを生成して
供給するコンパイラの構成例を示す図、第4図は
ソース・プログラムを中間テキストに移してゆく
態様を説明する図、第5図はソース・プログラム
をベクトル化してゆく態様を説明する図、第6図
ないし第8図はIF文を含むソース・プログラム
に対して文マスクやパス・マスクを用意して並列
実行可能な形にしてゆく態様を説明する図であ
る。
例えば、第1図Aに示す如く、ベクトルAに属
するエレメントa1,a2,……とベクトルBに属す
るエレメントb1,b2,……との各エレメント相互
を加算して、エレメントc1,c2,……をもつベク
トルCを生成するような、ベクトル命令を実行す
るベクトル処理プロセツサが存在している。第1
図A図示の場合、第i番目のエレメント相互の加
算を行なうか否かをマスク・エレメントm1,
m2,……にて指示するようにされており、第1
図Bに一般化して示す如き処理が行なわれる。
するエレメントa1,a2,……とベクトルBに属す
るエレメントb1,b2,……との各エレメント相互
を加算して、エレメントc1,c2,……をもつベク
トルCを生成するような、ベクトル命令を実行す
るベクトル処理プロセツサが存在している。第1
図A図示の場合、第i番目のエレメント相互の加
算を行なうか否かをマスク・エレメントm1,
m2,……にて指示するようにされており、第1
図Bに一般化して示す如き処理が行なわれる。
上記の如き処理を行なうベクトル処理プロセツ
サを有するデータ処理システムは、一実施例とし
て第2図図示の如きシステム構成をもつている。
図中の符号1は主記憶装置、2はメモリ制御装
置、3はベクトル処理プロセツサ、4はチヤネ
ル・プロセツサ、5は大記憶装置、6はスカラ処
理回路部、7はベクトル処理回路部、8−0、8
−1、…は夫々浮動小数点データ・レジスタ、9
−0、9−1、…は夫々複数個のデータ(エレメ
ント・データ)を格納し得るベクトル・レジス
タ、10−0、10−1、…は夫々複数個のマス
ク・データ(マスク・エレメント・データ)を格
納し得るマスク・レジスタ、11はベクトル長レ
ジスタであつて各ベクトル・レジスタに格納され
るエレメントの個数情報がセツトされるもの、1
2−0、12−1は夫々メモリ・アクセス・パイ
プライン、13は加減算パイプライン、14は乗
算処理パイプライン、15は除算処理パイプライ
ン、16はマスク処理パイプラインを表わしてい
る。
サを有するデータ処理システムは、一実施例とし
て第2図図示の如きシステム構成をもつている。
図中の符号1は主記憶装置、2はメモリ制御装
置、3はベクトル処理プロセツサ、4はチヤネ
ル・プロセツサ、5は大記憶装置、6はスカラ処
理回路部、7はベクトル処理回路部、8−0、8
−1、…は夫々浮動小数点データ・レジスタ、9
−0、9−1、…は夫々複数個のデータ(エレメ
ント・データ)を格納し得るベクトル・レジス
タ、10−0、10−1、…は夫々複数個のマス
ク・データ(マスク・エレメント・データ)を格
納し得るマスク・レジスタ、11はベクトル長レ
ジスタであつて各ベクトル・レジスタに格納され
るエレメントの個数情報がセツトされるもの、1
2−0、12−1は夫々メモリ・アクセス・パイ
プライン、13は加減算パイプライン、14は乗
算処理パイプライン、15は除算処理パイプライ
ン、16はマスク処理パイプラインを表わしてい
る。
上記の如きベクトル処理プロセツサが処理を実
行するに当つて、当該プロセツサが実行するに適
した形に、与えられたソース・プログラムをコン
パイルし目的プロセツサを生成することが行なわ
れる。当該コンパイルを行なうコンパイラの構成
を示したのが第3図である。
行するに当つて、当該プロセツサが実行するに適
した形に、与えられたソース・プログラムをコン
パイルし目的プロセツサを生成することが行なわ
れる。当該コンパイルを行なうコンパイラの構成
を示したのが第3図である。
第3図において、17は大記憶装置に格納され
ているソース・プログラム、18はコンパイラ、
19はコンパイルされて大記憶装置上に格納され
る目的プログラム、20はソース解釈部、21は
記憶域割付け部、22はベクトル化部、23は中
間テキスト最適化部、24はレジスタ使用決定
部、25は目的プログラム出力部を表わしてい
る。
ているソース・プログラム、18はコンパイラ、
19はコンパイルされて大記憶装置上に格納され
る目的プログラム、20はソース解釈部、21は
記憶域割付け部、22はベクトル化部、23は中
間テキスト最適化部、24はレジスタ使用決定
部、25は目的プログラム出力部を表わしてい
る。
コンパイラ18は、大記憶装置からソース・プ
ログラム17を取込んで、所望の目的プログラム
19を生成する。このとき図示の各部は次のよう
な処理を行う。
ログラム17を取込んで、所望の目的プログラム
19を生成する。このとき図示の各部は次のよう
な処理を行う。
即ち、ソース解釈部20はソース・プログラム
17を大記憶装置から取込み、文解釈を行つて中
間テキストに展開する。例えばソース・プログラ
ムが第4図図示左側の如き場合に図示右側に示す
如き中間テキストに展開する。記憶域割付け部2
1はプログラム内に出現する各種データに対応し
て記憶域内番地を割当てる。ベクトル化部22
は、プログラム中のループ構造を検出し、並列実
行可能部分を認識し、第5図図示の如く中間テキ
スト変更を行う。中間テキスト最適化部23は、
中間テキストのレベルで、第2図図示の如きベク
トル処理プロセツサを有効に利用するための最適
化を施す。レジスタ使用決定部24は、中間テキ
ストに現われたデータに対して、ベクトル処理プ
ロセツサ上の資源(レジスタ)を割当てる。そし
て目的プログラム出力部25は機械命令語を大記
憶装置へ出力しかつ命令語レベルでの最適化を行
う。
17を大記憶装置から取込み、文解釈を行つて中
間テキストに展開する。例えばソース・プログラ
ムが第4図図示左側の如き場合に図示右側に示す
如き中間テキストに展開する。記憶域割付け部2
1はプログラム内に出現する各種データに対応し
て記憶域内番地を割当てる。ベクトル化部22
は、プログラム中のループ構造を検出し、並列実
行可能部分を認識し、第5図図示の如く中間テキ
スト変更を行う。中間テキスト最適化部23は、
中間テキストのレベルで、第2図図示の如きベク
トル処理プロセツサを有効に利用するための最適
化を施す。レジスタ使用決定部24は、中間テキ
ストに現われたデータに対して、ベクトル処理プ
ロセツサ上の資源(レジスタ)を割当てる。そし
て目的プログラム出力部25は機械命令語を大記
憶装置へ出力しかつ命令語レベルでの最適化を行
う。
ベクトル処理プロセツサを稼動させるためのコ
ンパイラは第3図図示の如き構成をもつており、
ループ構成内にIF文をもたないプログラムにつ
いては第5図に概念的に示した如く並列実行可能
な形にして処理してゆくことが可能である。しか
し第6図に示す如きソース・プログラムが与えら
れると、当該ループ構成の中に「IF(A(I).GT.
B(I))GO TO 50」などのIF文が存在することか
ら、従来このようなループ構成については一般に
は並列実行可能な状態にないものとして処理され
ていた。しかし、当該プログラムの場合、IF文
の飛び先がループ内に止まつており、プログラム
中の個々の文について個々の処理に当つて当該文
を実行するか否かを文マスクmiにて指示する手
法を採用することによつて並列実行可能となるこ
とが判つた。その文マスクmiを与えるコンパイ
ラ処理方式は、既に本願と同一の出願人により先
行発明(特願昭57−31198号)として提案されて
いる。以下にその概要を第6図ないし第8図を参
照しつつ説明する。
ンパイラは第3図図示の如き構成をもつており、
ループ構成内にIF文をもたないプログラムにつ
いては第5図に概念的に示した如く並列実行可能
な形にして処理してゆくことが可能である。しか
し第6図に示す如きソース・プログラムが与えら
れると、当該ループ構成の中に「IF(A(I).GT.
B(I))GO TO 50」などのIF文が存在することか
ら、従来このようなループ構成については一般に
は並列実行可能な状態にないものとして処理され
ていた。しかし、当該プログラムの場合、IF文
の飛び先がループ内に止まつており、プログラム
中の個々の文について個々の処理に当つて当該文
を実行するか否かを文マスクmiにて指示する手
法を採用することによつて並列実行可能となるこ
とが判つた。その文マスクmiを与えるコンパイ
ラ処理方式は、既に本願と同一の出願人により先
行発明(特願昭57−31198号)として提案されて
いる。以下にその概要を第6図ないし第8図を参
照しつつ説明する。
第6図図示のプログラムは、概略次の如き処理
を指示している。即ち、Iの値が「1」から
「N」になるまで繰返して文10ないし文70を実行
することを指示し、その間に文20によつて或るI
の値のときA(I)がB(I)よりも大となるならば文50
に飛び、また文40によつて或るIの値のときB(I)
がYよりも大となるならば文60に飛ぶことを指示
している。上記文マスクは、例えば文30に対応し
て「A(I).GT.B(I)」なる条件以外のとき、当該
文30を実行するよう指示すれば、IF文が第8図図
示の如く消減する形となる。
を指示している。即ち、Iの値が「1」から
「N」になるまで繰返して文10ないし文70を実行
することを指示し、その間に文20によつて或るI
の値のときA(I)がB(I)よりも大となるならば文50
に飛び、また文40によつて或るIの値のときB(I)
がYよりも大となるならば文60に飛ぶことを指示
している。上記文マスクは、例えば文30に対応し
て「A(I).GT.B(I)」なる条件以外のとき、当該
文30を実行するよう指示すれば、IF文が第8図図
示の如く消減する形となる。
第7図は、第6図図示のプログラムを構成する
各文10ないし文70に対して、どのような文マスク
m10ないしm70を与えるかを説明する説明図を示
している。
各文10ないし文70に対して、どのような文マスク
m10ないしm70を与えるかを説明する説明図を示
している。
文10の場合にはIの値の如何に拘らず、すべて
のIについて実行する必要がある。このことから
文マスクm10としてφ(空)となる。文20の場合も
m20としてφとなる。文20から文50へ飛ぶルート
は文20の条件「A(I).GT.B(I)」のときにとられ
るもので、当該パスに対してバス・マスクP20,50
として P20,50=A(I).GT.B(I) が与えられ、一方同様にパス・マスクP20,30とし
て P20,30=20,50 が与えられる。この結果から文30に対応する文マ
スクm30は m30=20,50 となる。
のIについて実行する必要がある。このことから
文マスクm10としてφ(空)となる。文20の場合も
m20としてφとなる。文20から文50へ飛ぶルート
は文20の条件「A(I).GT.B(I)」のときにとられ
るもので、当該パスに対してバス・マスクP20,50
として P20,50=A(I).GT.B(I) が与えられ、一方同様にパス・マスクP20,30とし
て P20,30=20,50 が与えられる。この結果から文30に対応する文マ
スクm30は m30=20,50 となる。
文40についての文マスクm40はm30と同じもの
となる。同じようにして、パス・マスクP40,60や
P40,50が図示の如く与えられ、文マスクm50は、
パス・マスクP20,50とP40,50との論理和をとつた
ものとなる。そして文マスクm60,m70はφとな
る。
となる。同じようにして、パス・マスクP40,60や
P40,50が図示の如く与えられ、文マスクm50は、
パス・マスクP20,50とP40,50との論理和をとつた
ものとなる。そして文マスクm60,m70はφとな
る。
このような文マスクmiを与えると、第6図図
示のプログラムは、第8図図示プログラムの如
く、IF文が存在しない形となつて、並列実行可
能な形となる。なお、第8図において、「:」を
付して示した所の「:M2」、「:M5」は対応する
文についての文マスクであると考えてよい。
示のプログラムは、第8図図示プログラムの如
く、IF文が存在しない形となつて、並列実行可
能な形となる。なお、第8図において、「:」を
付して示した所の「:M2」、「:M5」は対応する
文についての文マスクであると考えてよい。
このように一般には、(i)IF文を含むループ内
の各文に対応して文マスクを例えばi番目の文に
対して文マスクmiとして与え、かつ(ii)当該第i
番目の文がIF文でない場合に第(i+1)番目
の文に向うパスに対しパス・マスクPi,i+1と
し値miを与え、(iii)当該第i番目の文がIF文であ
る場合に当該IF文の条件をCiとするとき条件成
立によつて飛ぶ所の飛び先の第k番目の文へのパ
スに対してパス・マスクPikとして mi・AND.Ci を与え、(iv)当該第i番目の文がIF文である場合
に当該IF文の条件Ciの条件不成立によつて飛ぶ
所の飛び先の第k番目の文へのパスに対してパ
ス・マスクRikとして mi・AND・ を与え、()上記文マスクmiを与えるに当つ
て、上記パス・マスクを調べて第i番目の文へ至
るパスに対応するパス・マスクPliについての論
理和をとる、即ち mi= U l Pli(l≠i) で与えるようにし、IF文を含んでいる場合でも
並列実行可能な範囲を増大せしめるようにコンパ
イルする。
の各文に対応して文マスクを例えばi番目の文に
対して文マスクmiとして与え、かつ(ii)当該第i
番目の文がIF文でない場合に第(i+1)番目
の文に向うパスに対しパス・マスクPi,i+1と
し値miを与え、(iii)当該第i番目の文がIF文であ
る場合に当該IF文の条件をCiとするとき条件成
立によつて飛ぶ所の飛び先の第k番目の文へのパ
スに対してパス・マスクPikとして mi・AND.Ci を与え、(iv)当該第i番目の文がIF文である場合
に当該IF文の条件Ciの条件不成立によつて飛ぶ
所の飛び先の第k番目の文へのパスに対してパ
ス・マスクRikとして mi・AND・ を与え、()上記文マスクmiを与えるに当つ
て、上記パス・マスクを調べて第i番目の文へ至
るパスに対応するパス・マスクPliについての論
理和をとる、即ち mi= U l Pli(l≠i) で与えるようにし、IF文を含んでいる場合でも
並列実行可能な範囲を増大せしめるようにコンパ
イルする。
このようなマスク情報による条件付命令の実行
は、マスクの状態がどうであれ、ペクトル長分の
時間がかかつてしまう。ところが、マスクのオン
の数が非常に少ない命令、或いは全てのオフのマ
スクを持つ命令がある程度は現われるため、その
分の実行時間に無駄が生じるという問題がある。
は、マスクの状態がどうであれ、ペクトル長分の
時間がかかつてしまう。ところが、マスクのオン
の数が非常に少ない命令、或いは全てのオフのマ
スクを持つ命令がある程度は現われるため、その
分の実行時間に無駄が生じるという問題がある。
本発明は、上記の考察に基づくものであつて、
マスクのオンの数を認識することによりオンの数
が少ない命令の実行時間を短縮することができる
条件付命令の実行時選択方式を提供することを目
的とするものである。
マスクのオンの数を認識することによりオンの数
が少ない命令の実行時間を短縮することができる
条件付命令の実行時選択方式を提供することを目
的とするものである。
条件付命令の実行時選択方式は、複数の並列演
算部を備えてベクトル命令を処理するベクトル処
理プロセツサを有するデータ処理システムにおい
て、上記ベクトル処理プロセツサは、条件付命令
の実行に際し、各エレメントに対して命令を実行
するか否かを示すマスク情報とベクトル長単位で
マスクのオンの数とがセツトされると、上記マス
クのオンの数を調べ、マスクのオンの数が0であ
ることを条件に当該命令の実行をスキツプし、マ
スクのオンの数が所定の閾値より小さいことを条
件にベクトル長短縮処理命令を使つてマスクがオ
ンの部分のみを取出して新しいベクトル・データ
を作つてベクトル演算を行い、しかる後当該ベク
トル演算の結果をマスクがオンの部分に取り込む
ようにし、マスクのオンの数が所定の閾値より大
きいことを条件にマスク付命令を使つてマスクが
オンの要素の演算を行うように構成されたことを
特徴とするものである。
算部を備えてベクトル命令を処理するベクトル処
理プロセツサを有するデータ処理システムにおい
て、上記ベクトル処理プロセツサは、条件付命令
の実行に際し、各エレメントに対して命令を実行
するか否かを示すマスク情報とベクトル長単位で
マスクのオンの数とがセツトされると、上記マス
クのオンの数を調べ、マスクのオンの数が0であ
ることを条件に当該命令の実行をスキツプし、マ
スクのオンの数が所定の閾値より小さいことを条
件にベクトル長短縮処理命令を使つてマスクがオ
ンの部分のみを取出して新しいベクトル・データ
を作つてベクトル演算を行い、しかる後当該ベク
トル演算の結果をマスクがオンの部分に取り込む
ようにし、マスクのオンの数が所定の閾値より大
きいことを条件にマスク付命令を使つてマスクが
オンの要素の演算を行うように構成されたことを
特徴とするものである。
以下、本発明の実施例を図面を参照しつつ説明
する。
する。
第9図は本発明の1実施例構成を示す図、第1
0図は本発明に使用される条件付命令の実行方式
を説明する図、第11図は第10図に示す条件付
命令の実行方式に対応するベクトル・テキストを
示す図、第12図は本発明が適用されるマスク・
レジスタの設定例を示す図、第13図は本発明に
よる命令実行時の処理の流れを説明する図であ
る。図において、26は命令バツフア・レジス
タ、27はデコーダ、28はマスク・レジスタ
(MR;Mask Register)、29は一致回路、30
は比較回路、31は閾値設定部
(THRESHOLD)、32と33はインバータ、3
4はブランチ処理部、35はマスク処理への分岐
処理部、36は圧縮/拡散処理への分岐処理部を
示す。
0図は本発明に使用される条件付命令の実行方式
を説明する図、第11図は第10図に示す条件付
命令の実行方式に対応するベクトル・テキストを
示す図、第12図は本発明が適用されるマスク・
レジスタの設定例を示す図、第13図は本発明に
よる命令実行時の処理の流れを説明する図であ
る。図において、26は命令バツフア・レジス
タ、27はデコーダ、28はマスク・レジスタ
(MR;Mask Register)、29は一致回路、30
は比較回路、31は閾値設定部
(THRESHOLD)、32と33はインバータ、3
4はブランチ処理部、35はマスク処理への分岐
処理部、36は圧縮/拡散処理への分岐処理部を
示す。
第9図において、マスク・レジスタ28は、ベ
クトル長毎のマスク情報と共にマスクのオンの数
を示す情報(MSR;Mask Status Register)が
書き込まれるものであり、命令バツフア・レジス
タ26に格納された命令をデコーダ27によりデ
コードされたマスク定義命令に基づいてセツトさ
れる。一致回路29は、デコーダ27からの実行
命令に従つて、マスク・レジスタ28のMSRの
内容が0か否かを調べるものであり、0(Yes)
の場合にはブランチ処理部34を作動させ、0で
ない場合にはインバータ32を通して比較回路3
0を動作させる。ブランチ処理部34は、命令の
実行は行わないスキツプ処理を行うものである。
即ち、ここでは、条件付命令の実行時に、MSR
の内容が0(全てオフのマスクを持つ命令)の場
合には命令の実行は行わないようにするものであ
る。比較回路30は、マスク・レジスタ28の
MSRの内容が閾値以上であるかを調べるもので
あり、MSRの内容が閾値以上である場合にはマ
スク処理への分岐処理部35を動作させ、そうで
ない場合には圧縮/拡散処理への分岐処理部36
を動作させる。マスク処理への分岐処理部35
は、マスク付演算方式を採用した処理を行うよう
にするものであり、圧縮/拡散処理への分岐処理
部36は、圧縮/拡散方式を採用した処理を行う
ようにするものである。次にこれらの方式につい
て説明する。
クトル長毎のマスク情報と共にマスクのオンの数
を示す情報(MSR;Mask Status Register)が
書き込まれるものであり、命令バツフア・レジス
タ26に格納された命令をデコーダ27によりデ
コードされたマスク定義命令に基づいてセツトさ
れる。一致回路29は、デコーダ27からの実行
命令に従つて、マスク・レジスタ28のMSRの
内容が0か否かを調べるものであり、0(Yes)
の場合にはブランチ処理部34を作動させ、0で
ない場合にはインバータ32を通して比較回路3
0を動作させる。ブランチ処理部34は、命令の
実行は行わないスキツプ処理を行うものである。
即ち、ここでは、条件付命令の実行時に、MSR
の内容が0(全てオフのマスクを持つ命令)の場
合には命令の実行は行わないようにするものであ
る。比較回路30は、マスク・レジスタ28の
MSRの内容が閾値以上であるかを調べるもので
あり、MSRの内容が閾値以上である場合にはマ
スク処理への分岐処理部35を動作させ、そうで
ない場合には圧縮/拡散処理への分岐処理部36
を動作させる。マスク処理への分岐処理部35
は、マスク付演算方式を採用した処理を行うよう
にするものであり、圧縮/拡散処理への分岐処理
部36は、圧縮/拡散方式を採用した処理を行う
ようにするものである。次にこれらの方式につい
て説明する。
ベクトル処理プロセツサには、マスク付ベクト
ル演算の他に、IF文のような条件文を処理する
のに適した命令として、ベクトル長短縮処理命令
がある。本発明はこのベクトル長短縮処理命令を
使つて実現するものであるが、以下では代表して
その1つ圧縮/拡散命令を使つた例で説明する。
マスク付命令(条件付命令)では、例えば、 VT1←VT2 OP VT3;mt (mtは条件を示すマスク情報) とある場合に、mtの内容(オン又はオフ)によ
つて、その要素の演算を実行するかしないかを決
定する。しかし実行しない要素に対しても実行し
た時と同じ時間がかかる。一方、圧縮/拡散命令
では、例えば、 VT2′comp ←―――― VT2:mt VT3′comp ←―――― VT3:mt VT1′←――――VT2′ OP VT3′ VT1exp ←――― VT1′:mt comp ←―――― はベクトル・データの圧縮 exp ←――― はベクトル・データの拡散 を示す。
ル演算の他に、IF文のような条件文を処理する
のに適した命令として、ベクトル長短縮処理命令
がある。本発明はこのベクトル長短縮処理命令を
使つて実現するものであるが、以下では代表して
その1つ圧縮/拡散命令を使つた例で説明する。
マスク付命令(条件付命令)では、例えば、 VT1←VT2 OP VT3;mt (mtは条件を示すマスク情報) とある場合に、mtの内容(オン又はオフ)によ
つて、その要素の演算を実行するかしないかを決
定する。しかし実行しない要素に対しても実行し
た時と同じ時間がかかる。一方、圧縮/拡散命令
では、例えば、 VT2′comp ←―――― VT2:mt VT3′comp ←―――― VT3:mt VT1′←――――VT2′ OP VT3′ VT1exp ←――― VT1′:mt comp ←―――― はベクトル・データの圧縮 exp ←――― はベクトル・データの拡散 を示す。
とある場合に、圧縮は、mtの内容がオンの部分
のみを取り出して新しいベクトル・データ(VT
2′,VT3′)をつくり、拡散は、mtの内容がオ
ンの部分にVT1′の内容を取り込むものである。
このときの演算は、mtのオンの数をベクトル長
として実行できる。条件付の演算、例えば、 Ai+Bi:mi:i=1,2、……8 についての操作の様子を示したのが第10図であ
る。第10図において、Aがマスク付命令を使つ
たマスク付演算方式について示したものであり、
Bが圧縮/拡散命令を使つた圧縮/拡散方式につ
いて示したものである。これらの2方式を比較す
ると、圧縮/拡散方式は、前後の圧縮及び拡散処
理が補助操作として必要になり、その分の時間が
かかるものの、演算そのものの実行はオンの数
(true率又は真率)に応じた時間でよいため、
true率が小さい時には効果がある。他方マスク付
演算方式は、演算時間はベクトル長分かかるが、
補助操作がないのでtrue率が高い場合に有効であ
る。これらの方式を採用するベクトル・テキスト
の例を示したのが第11図である。第11図にお
いて、Aがマスク付演算方式の場合の例を示した
ものであり、Bが圧縮/拡散方式の場合の例を示
したものである。
のみを取り出して新しいベクトル・データ(VT
2′,VT3′)をつくり、拡散は、mtの内容がオ
ンの部分にVT1′の内容を取り込むものである。
このときの演算は、mtのオンの数をベクトル長
として実行できる。条件付の演算、例えば、 Ai+Bi:mi:i=1,2、……8 についての操作の様子を示したのが第10図であ
る。第10図において、Aがマスク付命令を使つ
たマスク付演算方式について示したものであり、
Bが圧縮/拡散命令を使つた圧縮/拡散方式につ
いて示したものである。これらの2方式を比較す
ると、圧縮/拡散方式は、前後の圧縮及び拡散処
理が補助操作として必要になり、その分の時間が
かかるものの、演算そのものの実行はオンの数
(true率又は真率)に応じた時間でよいため、
true率が小さい時には効果がある。他方マスク付
演算方式は、演算時間はベクトル長分かかるが、
補助操作がないのでtrue率が高い場合に有効であ
る。これらの方式を採用するベクトル・テキスト
の例を示したのが第11図である。第11図にお
いて、Aがマスク付演算方式の場合の例を示した
ものであり、Bが圧縮/拡散方式の場合の例を示
したものである。
本発明が適用されるマスク・レジスタの設定例
を示したのが第12図である。第12図におい
て、マスク・レジスタMR0ないしMR3は、ベ
クトル長6の場合の例を示し、マスクのオンの数
を示す情報MSR0ないしMSR3を持つている。
例えば、マスク・レジスタMR1の場合にはマス
ク付命令を使つて実行され、マスク・レジスタ
MR2の場合にはMSR2内容が0であるからス
キツプされ、マスク・レジスタMR3の場合に
は、MSR3の内容がベクトル長6に比べて非常
に小さいので圧縮/拡散命令を使つて実行され
る。
を示したのが第12図である。第12図におい
て、マスク・レジスタMR0ないしMR3は、ベ
クトル長6の場合の例を示し、マスクのオンの数
を示す情報MSR0ないしMSR3を持つている。
例えば、マスク・レジスタMR1の場合にはマス
ク付命令を使つて実行され、マスク・レジスタ
MR2の場合にはMSR2内容が0であるからス
キツプされ、マスク・レジスタMR3の場合に
は、MSR3の内容がベクトル長6に比べて非常
に小さいので圧縮/拡散命令を使つて実行され
る。
次に条件付命令の実行時の処理の流れを第13
図を参照しつつ説明する。
図を参照しつつ説明する。
マスク・レジスタ(MR、MSR)への情報
をセツトする。次にの処理を行う。
をセツトする。次にの処理を行う。
MSR=0かどうかを調べる。
Yesの場合には実行をスキツプして処理終了
としNoの場合にはの処理を行う。
としNoの場合にはの処理を行う。
閾値をベクトル長*γ(γ<1)とすると、
MSRの内容が閾値より大きいか否かを調べる。
MSRの内容が閾値より大きいか否かを調べる。
Yes(真率が高い)の場合にはの処理を行
い、No(真率が低い)場合にはの処理を行
う。
い、No(真率が低い)場合にはの処理を行
う。
マスク付命令を使つて実行する。
圧縮/拡散命令を使つてデータの圧縮、拡散
をして実行する。
をして実行する。
なお、先に述べたように、によればベクトル
長に比例する実行時間を要するが、によれば真
率に比例した実行時間にα(圧縮、拡散の補助操
作に必要な時間)を加えた時間を要する。
長に比例する実行時間を要するが、によれば真
率に比例した実行時間にα(圧縮、拡散の補助操
作に必要な時間)を加えた時間を要する。
また、では、MSRへマスク・レジスタMR
中のオンのビツト数が入るが、これをマスク・レ
ジスタMRへの設定と同時に設定できないハード
ウエアの場合には、その後にマスク・レジスタ
MRのオンのビツト数を数える命令を出して、ソ
フトウエアによる代行処理を行つてもよい。
中のオンのビツト数が入るが、これをマスク・レ
ジスタMRへの設定と同時に設定できないハード
ウエアの場合には、その後にマスク・レジスタ
MRのオンのビツト数を数える命令を出して、ソ
フトウエアによる代行処理を行つてもよい。
以上の説明から明らかなように、本発明によれ
ば、真率の低い命令及び全てのマスクがオフの命
令について実行時間を短縮することができ、デー
タ処理システムの処理効率の向上を計ることがで
きる。
ば、真率の低い命令及び全てのマスクがオフの命
令について実行時間を短縮することができ、デー
タ処理システムの処理効率の向上を計ることがで
きる。
第1図はベクトル処理プロセツサを有する処理
システムの1例を示す図、第2図はペクトル命令
に対応した処理を概念的に説明する図、第3図は
ベクトル処理プロセツサに対して、与えられたソ
ース・プログラムから目的プログラムを生成して
供給するコンパイラの構成例を示す図、第4図は
ソース・プログラムを中間テキストに移してゆく
態様を説明する図、第5図はソース・プログラム
をベクトル化してゆく態様を説明する図、第6図
ないし第8図はIF文を含むソース・プログラム
に対して文マスクやパス・マスクを用意して並列
実行可能な形にしてゆく態様を説明する図、第9
図は本発明の1実施例構成を示す図、第10図は
本発明に使用される条件付命令の実行方式を説明
する図、第11図は第10図に示す条件付命令の
実行方式に対応するベクトル・テキストを示す
図、第12図は本発明が適用されるマスク・レジ
スタの設定例を示す図、第13図は本発明による
命令実行時の処理の流れを説明する図である。 1……主記憶装置、2……メモリ制御装置、3
……ベクトル処理プロセツサ、4……チヤネル・
プロセツサ、5……大記憶装置、6……スカラ処
理回路部、7……ベクトル処理回路部、8−0な
いし8−n……浮動小数点データ・レジスタ、9
−0ないし9−n……ベクトル・レジスタ、10
−0ないし10−n……マスク・レジスタ、11
……ベクトル長レジスタ、12−0と12−1…
…メモリ・アクセス・パイプライン、13……加
減算パイプライン、14……乗算処理パイプライ
ン、15……除算処理パイプライン、16……マ
スク処理パイプライン、17……ソース・プログ
ラム、18……コンパイラ、19……目的プログ
ラム、20……ソース解釈部、21……記憶域割
付け部、22……ベクトル化部、23……中間テ
キスト最適化部、24……レジスタ使用決定部、
25……目的プログラム出力部、26……命令バ
ツフア・レジスタ、27……デコーダ、28……
マスク・レジスタ(MR:Mask Register)、2
9……一致回路、30……比較回路、31……閾
値設定部(THRESHOLD)、32と33……イ
ンバータ、34……ブランチ処理部、35……マ
スク処理への分岐処理部、36……圧縮/拡散処
理への分岐処理部。
システムの1例を示す図、第2図はペクトル命令
に対応した処理を概念的に説明する図、第3図は
ベクトル処理プロセツサに対して、与えられたソ
ース・プログラムから目的プログラムを生成して
供給するコンパイラの構成例を示す図、第4図は
ソース・プログラムを中間テキストに移してゆく
態様を説明する図、第5図はソース・プログラム
をベクトル化してゆく態様を説明する図、第6図
ないし第8図はIF文を含むソース・プログラム
に対して文マスクやパス・マスクを用意して並列
実行可能な形にしてゆく態様を説明する図、第9
図は本発明の1実施例構成を示す図、第10図は
本発明に使用される条件付命令の実行方式を説明
する図、第11図は第10図に示す条件付命令の
実行方式に対応するベクトル・テキストを示す
図、第12図は本発明が適用されるマスク・レジ
スタの設定例を示す図、第13図は本発明による
命令実行時の処理の流れを説明する図である。 1……主記憶装置、2……メモリ制御装置、3
……ベクトル処理プロセツサ、4……チヤネル・
プロセツサ、5……大記憶装置、6……スカラ処
理回路部、7……ベクトル処理回路部、8−0な
いし8−n……浮動小数点データ・レジスタ、9
−0ないし9−n……ベクトル・レジスタ、10
−0ないし10−n……マスク・レジスタ、11
……ベクトル長レジスタ、12−0と12−1…
…メモリ・アクセス・パイプライン、13……加
減算パイプライン、14……乗算処理パイプライ
ン、15……除算処理パイプライン、16……マ
スク処理パイプライン、17……ソース・プログ
ラム、18……コンパイラ、19……目的プログ
ラム、20……ソース解釈部、21……記憶域割
付け部、22……ベクトル化部、23……中間テ
キスト最適化部、24……レジスタ使用決定部、
25……目的プログラム出力部、26……命令バ
ツフア・レジスタ、27……デコーダ、28……
マスク・レジスタ(MR:Mask Register)、2
9……一致回路、30……比較回路、31……閾
値設定部(THRESHOLD)、32と33……イ
ンバータ、34……ブランチ処理部、35……マ
スク処理への分岐処理部、36……圧縮/拡散処
理への分岐処理部。
Claims (1)
- 1 複数の並列演算部を備えてベクトル命令を処
理するベクトル処理プロセツサを有するデータ処
理プロセツサにおいて、上記ベクトル処理プロセ
ツサは、条件付命令の実行に際し、各エレメトに
対して命令を実行するか否かを示すマスク情報と
ベクトル長単位でマスクのオンの数とがセツトさ
れると、上記マスクのオンの数を調べ、マスクの
オンの数が0であることを条件に当該命令の実行
をスキツプし、マスクのオンの数が所定の閾値よ
り小さいことを条件にベクトル長短縮処理命令を
使つてマスクがオンの部分のみを取出して新しい
ベクトル・データを作つてベクトル演算を行い、
しかる後当該ベクトル演算の結果をマスクがオン
の部分に取り込むようにし、マスクのオンの数が
所定の閾値より大きいことを条件にマスク付命令
を使つてマスクがオンの要素の演算を行うように
構成されたことを特徴とする条件付命令の実行時
命令選択方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5548183A JPS59180668A (ja) | 1983-03-31 | 1983-03-31 | 条件付命令の実行時命令選択方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5548183A JPS59180668A (ja) | 1983-03-31 | 1983-03-31 | 条件付命令の実行時命令選択方式 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS59180668A JPS59180668A (ja) | 1984-10-13 |
| JPH0142019B2 true JPH0142019B2 (ja) | 1989-09-08 |
Family
ID=12999807
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP5548183A Granted JPS59180668A (ja) | 1983-03-31 | 1983-03-31 | 条件付命令の実行時命令選択方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS59180668A (ja) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9652284B2 (en) * | 2013-10-01 | 2017-05-16 | Qualcomm Incorporated | GPU divergence barrier |
-
1983
- 1983-03-31 JP JP5548183A patent/JPS59180668A/ja active Granted
Also Published As
| Publication number | Publication date |
|---|---|
| JPS59180668A (ja) | 1984-10-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP0515016B1 (en) | Instruction scheduler for a computer | |
| US5051896A (en) | Apparatus and method for nullifying delayed slot instructions in a pipelined computer system | |
| CA1256216A (en) | Program switching with vector registers | |
| US5761514A (en) | Register allocation method and apparatus for truncating runaway lifetimes of program variables in a computer system | |
| KR100616722B1 (ko) | 수퍼스칼라프로세서내의파이프라인명령디스패치유닛 | |
| US6851045B2 (en) | Microprocessor having delayed instructions with variable delay times for executing branch instructions | |
| US7181730B2 (en) | Methods and apparatus for indirect VLIW memory allocation | |
| US5790826A (en) | Reduced register-dependency checking for paired-instruction dispatch in a superscalar processor with partial register writes | |
| US6061367A (en) | Processor with pipelining structure and method for high-speed calculation with pipelining processors | |
| EP0742517B1 (en) | A program translating apparatus and a processor which achieve high-speed execution of subroutine branch instructions | |
| US6871343B1 (en) | Central processing apparatus and a compile method | |
| US11416261B2 (en) | Group load register of a graph streaming processor | |
| US11481223B2 (en) | Reducing operations of sum-of-multiply-accumulate (SOMAC) instructions | |
| EP0140299A2 (en) | Vector mask control system | |
| JPH0142019B2 (ja) | ||
| US6079011A (en) | Apparatus for executing a load instruction or exchange instruction in parallel with other instructions in a dual pipelined processor | |
| JPS623336A (ja) | 条件付きブランチ方式 | |
| JPH0346863B2 (ja) | ||
| JPS6319906B2 (ja) | ||
| Hill | A hardware mechanism for supporting range checks | |
| JP2556148B2 (ja) | ベクトルレジスタ割付け方式 | |
| JPS6321946B2 (ja) | ||
| JPH046020B2 (ja) | ||
| JPS6319908B2 (ja) | ||
| JPH037989B2 (ja) |