JP3954171B2 - コンピュータにおけるスカラ値をベクトルに記入する方法 - Google Patents
コンピュータにおけるスカラ値をベクトルに記入する方法 Download PDFInfo
- Publication number
- JP3954171B2 JP3954171B2 JP27626497A JP27626497A JP3954171B2 JP 3954171 B2 JP3954171 B2 JP 3954171B2 JP 27626497 A JP27626497 A JP 27626497A JP 27626497 A JP27626497 A JP 27626497A JP 3954171 B2 JP3954171 B2 JP 3954171B2
- Authority
- JP
- Japan
- Prior art keywords
- vector
- value
- scalar
- register
- vector value
- 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 - Fee Related
Links
- 239000013598 vector Substances 0.000 title claims description 193
- 238000000034 method Methods 0.000 claims description 19
- 230000006870 function Effects 0.000 claims description 3
- 230000004044 response Effects 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 14
- 239000008186 active pharmaceutical agent Substances 0.000 description 11
- 238000002059 diagnostic imaging Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Description
【発明の属する技術分野】
本発明はコンピュータのベクトル処理の方法、特にスカラ値をコンピュータシステム内に記憶されたベクトルに記入できるコンピュータにおけるスカラ値をベクトルに記入する方法に関する。
【0002】
【従来の技術】
ベクトルデータ処理の技術に関しては、従来より種々開発されている。たとえば、特開平4−127367号公報(以下、第1公報という),特開平3−208169号公報(以下、第2公報という)、特開昭62−281057号公報(以下、第3公報という)によりベクトルデータ処理に関する技術思想が開示されている。
このうち、第1公報の場合では、複数個のベクトルレジスタのうちの第1のベクトルレジスタの各要素は、主記憶装置上のアドレスと複数個のベクトルレジスタの任意の一要素を指定するためのレジストアドレスの他に主記憶装置上のアドレスが要素間で重複していることを示す重複情報を示している。
第2のベクトルレジスタの各要素は主記憶装置上のアドレスを格納しており、第1と第2のベクトルレジスタの各対応要素のうちの主記憶装置上のアドレスを順次読み出しながら比較し、その比較結果が不一致あるいは重複情報が重複するとき、ベクトルレジスタの各要素に対応した複数ビットを有するベクトルマスクレジスタの対応ビットを有効とするようにしたものである。
【0003】
また、第2公報の場合は、主記憶装置からデータを読み出してロードパイプにキューイングし、演算装置でスカラレジスタにロードしたデータと主記憶装置から読み出した各要素との演算を第1演算器で行い、その演算結果をベクトルレジスタに格納する。
次の要素を主記憶装置から順次読み出してベクトルレジスタに格納し、先に格納した演算結果と後に格納した各要素を第2の演算器に供給して所定の演算を行って、再度ベクトルレジスタに格納し、その格納した演算結果を主記憶装置に書き込むようにしたものである。
【0004】
さらに、第3公報の場合は、それぞれベクトルデータを保持する複数のベクトルレジスタを設け、このベクトルレジスタの出力とオペランドが1対1に対応するとともに、固定的に結合されてベクトルをベクトル命令にしたがった演算を行う演算器を設ける。
命令によってマスク情報を一時第2マスクレジスタに格納し、この第2マスクレジスタの出力に第1マスクレジスタを結合し、ベクトル命令にしたがってマスク情報をマスクビット選択回路に供給する。
第1マスクレジスタの出力をマスクビット選択回路により演算オペランドに対応して選択し、ベクトル命令によって第1、第2マスクレジスタ、マスクビット選択回路の動作をマスク制御回で制御し、マスク制御回路を演算器と1対1対応で設けたものである。
【0005】
このようなベクトルデータの処理の応用例として、3次元グラフィック、医学用画像処理(medical imaging) 、および科学的モデリング(scientific modeling) のような応用技術はベクトル上で動作可能なコンピュータを必要とする。
所定のコンピュータにおいて単一要素のベクトルを変化させる過程は、まず記憶部からベクトルを読み出して修正した後、全体のベクトルを記憶部に再び記入することである。
【0006】
図14は、出力がオンチップ(on-chip)バス120を経由してレジスタバンク130に接続される演算論理装置(以下、ALUと称する)を有する従来のマイクロプロセッサ100を示している。レジスタバンク130はバス140、150を介してALU110の入力として接続される。
レジスタ170内に記憶されたベクトル要素160を代替するためには、まずレジスタ170の内容をALU110の入力180として接続されるバス140上に読み出す。
同様に、レジスタ175内に記憶されたスカラ要素165はALU110の入力190として接続されるバス150上に読み出される。
【0007】
また、レジスタ172に記憶されたスカラ要素165がベクトル160内に挿入される位置を示す第2スカラ値167はレジスタバンク130からALU110上に読み出される。
さらに、ALU110はスカラ要素165をベクトル要素160の所定位置にコピーし、修正されたベクトルはオンチップバス120に記入されてレジスタ170に再び記入される。
【0008】
【発明が解決しようとする課題】
ところが、ベクトル処理が3次元グラフィック、医学用画像処理、およびモデリングのような応用技術のためにコンピュータで一般化されるにしたがい、ベクトル要素をより迅速に代替できる技術が要求されている。
しかるに、前述の従来技術においては、3個の演算数(operand) がレジスタバンク130からALU110に読み出されるのに、このレジスタバンク130は2個の出力部だけしか有しないので、レジスタバンク130から3個の演算数のすべてを読み出すためには2個のクロック周期を必要とし、また、ALU110内のベクトル要素を代替するための第3クロック周期、およびベクトルをレジスタ170に再び記入するための第4クロック周期を必要とする欠点があった。
【0009】
このような従来の課題を解決するために、本発明の目的は、記憶部からベクトルを読み出さずにスカラ値をベクトルに記入し得るコンピュータにおけるスカラ値をベクトルに記入する方法を提供しようとする。このとき、前記スカラ値はその幅がベクトルの幅よりも小さい値である。
【0010】
【課題を解決するための手段】
上記目的を達成するために、本発明のコンピュータにおけるスカラ値をベクトルに記入する方法は、前記スカラ値は1個以上のベクトル要素であり、このスカラ値を記憶部に記憶された第1ベクトルに記入するため、スカラ値のコピーされた複数個のコピーを有する第2ベクトルが生成され、この第2ベクトルは記憶部の入力として提供されるが、マスク信号はこの第2ベクトルから第1ベクトルにスカラ値の1個のコピーだけを記入するために用いられ、第1ベクトルの残りは変化せずに残存する。
スカラ値をベクトルに記入する動作のためベクトルが記憶部から読み出されないので、レジスタファイルアクセス(register file access)のための競合が減少する。
【0011】
また、本発明の他のコンピュータにおけるスカラ値をベクトルに記入する方法は、スカラ値を第1ベクトルに記入するため、第1命令の後に第1ベクトルを用いる第2命令がしたがう。
この第2命令は第1ベクトルの新しい値、すなわち、スカラ値によりアップデートされた値が用いられる。
しかし、第2命令を迅速に行うためにはスカラ値が第2ベクトルから記憶部に記入される前に第1ベクトルの元来の値を第2命令で使用するために記憶部から読み出す。
【0012】
スカラ値を第1ベクトルに記入するために第2ベクトルが記憶部の入力部に提供されると、第2ベクトルも第1ベクトルが記憶部から読み出されるとき、第1ベクトルの元の値が印加された回路に提供される。
この回路にはマスク信号も印加される。また、この回路は第2ベクトルおよびマスクを用いて第2ベクトルから記憶部より読み出した第1ベクトルにスカラ値を記入して、第1ベクトルを第2命令に使用し得るようにアップデートさせる。
第2命令は記憶部からの第1ベクトルのアップデートされた値を読み出す必要が無いためより迅速に行い得る。
【0013】
【発明の実施の形態】
以下、本発明に係る実施の形態を図面を用いて詳しく説明する。図面の全般に亘って同様な部分に対しては同一の符号を付する。
【0014】
図1は、本発明に係るスカラ値をベクトルに記入できるベクトルプロセッサの一部を示したものである。ベクトルプロセッサはレジスタファイル200、乗算器(multiplier)210、ALU220、および累算器230を具備する。
レジスタファイル200は32個の32ビットスカラレジスタおよび64個のベクトルレジスタを有する。それら各レジスタ(図示せず)は288ビット入力部202(または204)を通してベクトル値およびスカラ値が記入され、これらのベクトル値およびスカラ値は288ビット出力部206(または208)を通して読み出される。
【0015】
レジスタファイル200内のレジスタは記入アドレス制御部222、224および読み出しアドレス制御部226、228により入出力のために選択され、それら記入アドレス制御部222、224、読み出しアドレス制御部226、228は命令バッファ(IBUF)(図示されず)から信号を受ける。
記入アドレス制御部222はどのレジスタが288ビット入力部202から記入されるかを選択し、記入アドレス制御部224はどのレジスタが288ビット入力部204から記入されるかを選択する。
また、読み出しアドレス制御部226はどのレジスタが288ビット出力部206に読み出されるかを選択し、読み出しアドレス制御部228はどのレジスタが288ビット出力部208に読み出されるかを選択する。
【0016】
さらに、32ビットのバイトイネーブルポート(byte enable port)232が288ビット入力部202(または204)に印加されたデータにマスクを提供するために使用されることにより、288ビット入力部202(または204)に印加されたデータの選択されたビットだけがそれぞれの記入アドレス制御部222(または224)により選択されたレジスタに記入される。
このようなマスクは交互(alternate) のクロック周期として288ビット入力部202、204に提供される。本発明の他の実施の形態においてマスクは交互のクロックの1/ 2周期で288ビット入力部202、204に提供される。
【0017】
バイトイネーブルポート232は複数個のバイトイネーブルソース中いずれのものがこのバイトイネーブルポート232に接続されるかを制御するのに用いられるマルチプレクサ(図示せず)を共有し、マスク生成器330(図2のALU22の詳細構成を示すブロック図参照)の出力部220.2に接続される。
それらバイトイネーブルソースは出力部220.2、ベクトルグロバルマスクレジスタ(vector global mask register) (図示せず)、ベクトルメモリマスク生成器(図示せず)、およびパイプライン制御ロジック(図示せず)を包含する。
しかし、本発明の目的を達成するためバイトイネーブルポート232はマルチプレクサを通してマスク生成器330の出力部220.2に接続されるか、ブランク(すべてが0)マスク(VEC64モードに用いられる)を具備した特殊レジスタに接続される。
【0018】
288ビット出力部206、208はマルチプレクサ(以下、MUXという)回路(AMUX250,BMUX255) の入力にそれぞれ接続され、その出力がロードおよび記憶ユニット(load and store unit) (図示せず)に接続されたMUX290の入力に接続される。
AMUX250とBMUX255はマルチプレックシングの機能の以外にもスカラ値を288ビット出力部206(または208)から読み出されたベクトルに記入する。
【0019】
それらAMUX250、BMUX255はそれぞれベクトルプロセッサのロードならびに記憶ユニット(図示されず)からの288ビットライン(このラインはAMUX250とBMUX255に接続される)に接続された288ビット入力、パイプライン読み出し端制御部(図示されず)に接続されて即値(immediate value) の演算数がパイプライン読み出し端制御部からALU220に提供されるようにする32ビット入力、WBMUX270の出力に接続された288ビット入力、およびALU220の一部としてマスク生成器330(図2に図示)の出力220.2に接続された32ビット入力を具備する。
パイプライン読み出し端制御部は命令バッファ(IBUF、図示されず)で命令デコーダ(図示せず)が適切な信号をデコーディングした後信号を提供するようにする。
【0020】
それらAMUX250、BUMX255の288ビット出力は乗算器210、MUX290、および累算器230の入力にそれぞれ接続される。
AMUX250の出力はMUX242の入力に接続され、MUX240の他の入力の576ビット入力は乗算器210の出力210.1に接続される。MUX242の出力はALU220の一つの入力に接続される。
BMUX255の出力はMUX244の一つの入力に接続され、このMUX244の他の入力はALU220の他の入力に接続された乗算器210の出力210.2に接続された576ビット入力である。
【0021】
MUX242、244はALU220がAMUX250ならびにBMUX255、または乗算器210からデータを受けるようにする。ALU220の288ビット出力はマルチプレクサAccMUX260、WBMUX270、および累算器230の入力に接続される。累算器230の出力はAccMUX260およびWBMUX270の他の入力に接続される。
よって、ALU220で行われる動作の結果は累算器230内に記憶されるか、または連続的な処理およびWBMUX270とAccMUX260を通したレジスタファイル200への再記入のためAMUX250ならびにBMUX255に再び戻る。
WBMUX270の出力はW1MUX240とMUX290の入力となり、AccMUX260の出力はW2MUX245およびMUX290に入力される。
【0022】
図2は、ALU220をより詳しく示したものである。ALU220はALU−1 300、ALU−2 310、およびALU−3 320からなってALU220により行われるロジック演算および算術演算の部分集合を担当する。
特に、ALU−2 310はベクトル記入動作の行われる間ベクトルのどの要素が記入されるかを制御するのに用いられる32ビットのマスク生成を担当するマスク生成器320を包含する。
図1のプロセッサは次の表1に示したデータ形態を認識し、このプロセッサはフローティングポイント(floating point)データ形態のためのIEEE標準754単一フォーマットを認識する。
【0023】
【表1】
【0024】
レジスタファイル200内の32個のスカラレジスタSR0〜SR31のそれぞれは32ビットの長さを有する。図3はこのようなスカラレジスタのためのデータ形態のフォーマットを示したものである。図3の保存されたビットは規定値を有さない。
【0025】
本発明の実施の形態によると、それぞれのスカラレジスタは36ビットの長さを有する。データ形態が半ワードであれば、この半ワードはビット[0:7]およびビット[9:16]に位置し、残りのビットは保存される。データの形態がワードであれば、このワードはビット[0:7]、[9:16]、[18:25]、[27:34]に位置し、残りのビットは保存される。
レジスタファイル200内の64個のベクトルレジスタはそれぞれ32個のレジスタを有する2個のバンクにより構成される。
【0026】
バンク0は始めの32個のレジスタを包含し、バンク1はその次の32個のレジスタを包含する。
2個のバンク中の一つは「現在の」バンクに設定され、残りのバンクは「交替される」バンクに設定される。ベクトル命令は現在のバンク内のレジスタをデフォールト(default) に用いる。
ロード/記憶およびレジスタ移動命令は交替されるバンク内のレジスタをアクセスし得る。ベクトル制御および状態レジスタVCSR内の一つのビットはバンク0とバンク1中いずれのものが現在のバンクであるかを示す。
現在のバンク内のベクトルレジスタはVR0ないしVR31に現れ、交替されるバンク内のレジスタはVRA0ないしVRA31に現れる。
【0027】
選択モードにおいて、バンクは統合されて32個の576ビットベクトルレジスタを提供する。このモードは64バイト9ベクトルモードまたはVEC64モードという。非VEC64モード(non-VEC64 mode)はVECモードという。
VCSR内の一つのビットが動作のモードを指定する。VEC64モードにおいて576ビットレジスタはVR0ないしVR31に現れる。
【0028】
図4は、ベクトルレジスタ内に用いられるデータフォーマットを示したものである。288ビットベクトルのそれぞれは8個の36ビットフィールドに分けられる。36ビットフィールドのそれぞれは4個の9ビットバイト500、4個の8ビットバイト510、2個の16ビット半ワード530、および単一32ビットワード540に扱われる。
データ形態が8ビットバイト510、16ビット半ワード530または32ビットワード540であれば、すべての9番目のビット(ビット520のような)はプロセッサにより保存されたビットとして扱われる。すなわち、ビットが無視される。
【0029】
図5は、マスク生成器330(図2に図示される)により生成された32ビットマスク600内のそれぞれのビットがどのように288ビットベクトル610内に配置されるかを示したものである。
ベクトルがレジスタファイル200に記入されると、マスク600内のそれぞれのビット630はベクトル内の9ビットバイト620に相応する。
マスク内のそれぞれのビットはベクトル610内の該当バイト9が記入されたかを決定する。図5でマスク600のビット2だけが設定されるため、バイト9の番号2、すなわち、ベクトル610のビット16〜26だけが記入される。
【0030】
プロセッサが図13に示した命令VINSRTを行うとき、スカラ値はレジスタファイル200内のベクトルレジスタに記入される。図13において5ビットフィールドVRd(フィールド970)はレジスタファイル200内のベクトルレジスタを示す。
VEC32モードでフィールドVRdは現在のバンク内に288ビットレジスタVR0−VR31中の一つであり、VEC64モードでフィールドビットレジスタVRdは576ビットレジスタVR0−VR31中の一つである。
2ビットフィールドDSは記入されるスカラ値(バイト8、バイト9、1/ 2ワードまたはワード)のデータ形態を規定する。
5ビットフィールドSRaはスカラ値を包含するスカラレジスタを規定し、5ビットフィールドSRb/IM5(フィールド980)はベクトルレジスタ内のどの位置にスカラ値が記入されるかを規定するインデックス(index) を提供する。
【0031】
ビットD、S、Mにしたがい上記フィールドはフィールドSRb/IM5とフィールドIM9(フィールド960)との組合せにより得られる即値(immediate value) または前述したインデックスを包含するスカラレジスタSRbのアドレスを包含する。
ビットD、S、MはフィールドSRb/ IM5が即値であるかまたはスカラレジスタ内の値であるかを規定する。インデックスの5個の最下位ビットは「0」と「31」間の数を規定するのに使用される。
【0032】
命令VINSRTが行われると、フィールドDSはマスク生成器330の第1入力に提供される。インデックスはマスク生成器330の第2入力に提供される。インデックスは即値であるか、またはレジスタSRaから読み出される値である。
マスク生成器330は図5ないし図8に示したように32ビットマスクを生成する。フィールドDSがバイト9データの形態を規定すると、32ビットマスク内でインデックスにより番号の与えられるビットがセットされ(すなわち、論理「1」となり)、残りのビットはリセットされる(すなわち、論理「0」となる)。
【0033】
図5において、インデックスは「2」で、32ビットマスクはビット2の除いたすべての位置で「0」を有する。フィールドDSがバイト(8ビット)のデータ形態を規定すると、マスク生成器の動作はバイト9のデータ形態に対する動作と同様である。
インデックス値が「1」である場合に対し図6を用いて説明する。フィールドDSが半ワードデータ形態(図7に示す)を規定すると、インデックス「0」と「15」間の数である。図7においてインデックスは「1」である。
マスク生成器330は半ワード数の「インデックス」に該当する位置、すなわちこの位置(index* 2 、index * 2+1)(図7のマスク730内のビット2と3)にマスクビットをセットする。残りのマスクビットはリセットされる。
【0034】
フィールドDSがワードデータ形態(図8参照)を規定すると、インデックスは「0」と「7」間の数である。図8でインデックスは1である。
マスク生成器330はワード数の「インデックス」すなわち、ビット(index* 4, index* 4+1, index* 4+2, index* 4+3)(図8のマスク760内のビット「4」〜「7」)に対しマスクビットをセットする。残りのビットはリセットされる。
【0035】
図13に示したVINSRT命令はメモリからベクトルプロセッサにおけるパイプライン読み出し制御部に読み出され、次のように行われる。
しかし、VEC64が使用される場合はパイプライン読み出し端制御部は2個のVINSTR命令を生成し、その一つはバンク0内のベクトルレジスタを目的地レジスタに、他の一つはバンク1上のベクトルレジスタを目的地レジスタにするものである。
また、パイプライン読み出し端制御部は行われる第1命令を認知する第1命令プラグを生成する。
【0036】
〈クロック周期1〉
クロック周期1の間SRaフィールド980は読み出し制御部226、228中の一つに伝達されてSRaレジスタをAMUX250またはBMUX225中の一つに読み出す。
SRb/IM5フィールド990(インデックスフィールド)がレジスタを規定すると、フィールド990は読み出しアドレス制御部226、228中の他の一つに伝達されてSRbをAMUX250またはBUMX255中の他の一つに読み出す。
【0037】
SRb/IM5フィールドが即値であると、この値はパイプライン読み出し端制御部からAMUX250またはBMUX255に伝達される。マルチプレクサ242、244はAMUX250およびBMUX255の出力をそれぞれ選択する。
これら出力中の一つの出力上のインデックスはマスク生成器330に提供され、他の出力上のスカラレジスタのSRa値はALU−3(320)に提供される。
【0038】
〈クロック周期2〉
クロック周期2の間マスク生成器330は、前述のようにインデックスおよびDSフィールドから32ビットマスクを生成する。
VEC64モードにおいてALU220に提供されるインデックスの5個の最下位ビットだけがマスク生成器により32ビットマスクを生成するために使用される(6番目の最下位ビットはマスク生成器330により生成されたマスクがバイトイネーブルポート232、およびAMUX250とBMUX255に印加されることを制御するのに使用される)。
【0039】
ALU−3(320)にはMUX242(または244)からレジスタSRaより読み出されたスカラ値が印加される。
よって、ALU−3(320)は図9ないし図12に示したように複数のスカラ値のコピーを包含するベクトルV2を生成する。
【0040】
図9はDSがバイト9を規定する場合を示したものである。レジスタSRaのビット[8:0]内のバイト9のスカラ値「A」はベクトルV2のビット[8:0]、[15:9]、…、[287:279]内の連続される9ビットフィールドにコピーされる。
【0041】
図10はDSが一つのバイトを規定する場合を示したものである。レジスタSRaの8個の最下位ビット内の値「A」はすべて9ビットフィールド[8:0]、[15:9]、…、[287:279]の8個の最下位ビットにコピーされる。9番目のビットはこの場合「don't care(無視)」である。
【0042】
図11は、DSが半ワードを規定する場合を示したものである。スカラレジスタSRa内の半ワードはビット[7:0]内の値「A」およびビット[15:8]内の値Bを有する。
それらの値はベクトルV2を通してコピーされ、このとき、ベクトルV2のすべての9番目ビットは「don't care」である。ベクトルV2のビット[7:0]にはA値が、ビット[16:9]にはB値が、ビット[25:18]にはA値が、ビット[34:27]にはB値がそれぞれ印加され、このような式にベクトルV2の最後ビットまで進行される。
【0043】
図12は、DSがワードを規定する場合を示したものである。レジスタSRaにおいて、ビット[7:0]はA値を、ビット[15:8]はB値を、ビット[23:16]はC値を、ビット[31:24]はD値をそれぞれ包含する。
レジスタSRa内のワードはレジスタV2を通してコピーされ、レジスタV2のすべての9番目ビットは「don't care」である。
V2のビット[7:0]にA値が、ビット[16:9]にB値が、ビット[25:18]にC値が、ビット[34:27]にD値が、ビット[36:43]にA値がそれぞれ印加され、このようにV2の最後まで進行される。
【0044】
ベクトルV2は累算器230、WBMUX270、およびAccMUX260に接続された出力部220.1に提供される。マスクはバイトイネーブルポート232およびAMUX250とBMUX255の入力に接続された出力部220.2に提供される。
VEC64モードにおいて、インデックスの6番目の最下位ビットはパイプライン読み出し端制御部(図示されず)に印加される。
6番目の最下位ビットが第1命令プラグと合わないと(すなわち、最下位ビットのすべてが「0」であるか「1」でないと)、パイプライン読み出し制御部は出力部220.2に接続されたマルチプレクサを制御してビットのすべてがリセットされた32ビットバッファに接続された入力部を選択するようにする。
すなわち、要素を選択しないマスクはバイトイネーブルポート232、AMUX250、およびBMUX255に印加される。
【0045】
VINSRT(スカラ値がベクトルに記入されたレジスタファイル200内のベクトル)の結果が次の命令に使用されれば、プロセッサは「フォワーディングイネーブルされた(forwarding enabled)」信号を生成する。
この場合、VRdフィールド970が読み出しアドレス制御部226(または228)に提供され、ベクトルレジスタがAMUX250またはBMUX225に読み出される。
VEC64モードにおいて、第2VINSRT命令はパイプライン形態に実行される。すなわち、第2VINSRT命令実行の「周期−1」が第1VINSRT命令実行の「周期−2」と同時的に実行される。
【0046】
〈クロック周期3〉
周期3の間、ベクトルV2はWBMUX270およびWIMUX240、またはAccMUX260およびW2MUX245を通して288ビット入力部202(または204)に伝達される。
VRdフィールド970は記入アドレス制御部222(または224)に提供される。マスクはバイトイネーブルポート232に提供される。マスクにより選択されたV2のバイト9フィールドはVRdレジスタに記入される。
【0047】
特に、セットされるそれぞれのマスクビットiに対しV2のバイト9(すなわち、ビットV2[9i+8:9])はVRdに記入される。VRdレジスタの残りは変化されずに残存する。
VEC64モードにおいて、インデックスの6番目の最下位ビットが第1命令信号と合わないと、マスクのすべては「0」であり、要素はアップデートされない。
【0048】
WBMUX270またはAccMUX260の出力上のベクトルV2および出力220.2上のマスクはAMUX250およびBUMX255に提供される。
【0049】
フォワーディングがイネーブルされると、周期2内のVRdレジスタを読み出すAMUX250またはBMUX255はマスクにより選択されたV2のバイト9フィールドを記入して、VRdレジスタのコピーをVRdコピーにアップデートする。
AMUX250またはBMUX255はAMUXまたはBMUX出力上のVRdレジスタのアップデートされたコピーを次の命令に使用するために提供する。
【0050】
よって、AMUXまたはBMUX出力とファイル200内のVRdレジスタは同様なベクトルを有する。
結果的に、周期3の終わりでレジスタファイル200からVRdレジスタを読み出さずに新しいベクトルをALU200および乗算器210に直ちに利用できる。
したがって、フォワードパシング(forward passing) 動作での追加的な周期が必要とされなくなる。
VEC64モードにおいて、第2VINSRT命令はパイプライン形態に継続実行される。
【0051】
〈クロック周期4〉
VEC64モードにおいて1第2VINSRT命令の「周期−3」は第1VINSRT命令が完了された後に実行される。
したがって、全体的なVEC64のVINSRT命令の実行には4個の周期が必要とされ、パイプライン読み出し制御部により生成されたパイプラインVINSRT命令は3個の周期を必要とする。
【0052】
以上説明した本発明は実施の形態および添付された図面により限定されるものではない。特に、本発明はレジスタファイルポートの個数、特定したデータ形態、データの大きさ、または命令フォーマット、特定したタイミング、または特定したハードウェアにより限定されない。
さらに、多様な実施の形態において、レジスタファイルはそれぞれの記入ポートに対するそれぞれの独立されたバイトイネーブルポートを包含する。プロセッサは一つ以上のALUを包含する。
ALUを追加すると、レジスタファイルが追加ポートを有してもレジスタファイルアクセスに対する競合を増加させ得る。
【0053】
しかし、スカラ値をレジスタファイル内のベクトルレジスタに記入することがベクトルの読み出しを必要としないという事実はレジスタファイルアクセスに対する競合を減少させる。
本発明の技術的思想を外れない範囲内で多様な置換、変形、および変更が特許請求の範囲により規定されたように可能である。
【0054】
【発明の効果】
本発明によると、コンピュータシステムにおいて記憶装置からベクトルを読み出さずにスカラ値をベクトルに記入し得る。このように、スカラ値をベクトルに記入する動作のためにベクトルが記憶部から読み出されないから、レジスタファイルアクセスのための競合が減少する。
【図面の簡単な説明】
【図1】本発明に係るレジスタファイルおよびALUを包含しスカラ値をベクトルに記入できるベクトルプロセッサのブロック図。
【図2】図1のALUを詳しく示したブロック図。
【図3】スカラレジスタに用いられるデータ形態のフォーマットを示した説明図。
【図4】ベクトルレジスタ内のデータ形態を示した説明図。
【図5】図2のマスク生成器により生成された32ビットマスク内の各ビットが使用されたデータ形態にしたがいどのようにベクトルに配置されるかを示す説明図。
【図6】ベクトル内の所定の要素位置および所定のデータ形態のために生成されたマスクを示した説明図。
【図7】ベクトル内の所定の要素位置および所定のデータ形態のために生成されたマスクを示した説明図。
【図8】ベクトル内の所定の要素位置および所定のデータ形態のために生成されたマスクを示した説明図。
【図9】特定スカラ値およびデータの大きさのために図2のALU−3により生成されたベクトル例を示した説明図。
【図10】特定スカラ値およびデータの大きさのために図2のALU−3により生成されたベクトル例を示した説明図。
【図11】特定スカラ値およびデータの大きさのために図2のALU−3により生成されたベクトル例を示した説明図。
【図12】特定スカラ値およびデータの大きさのために図2のALU−3により生成されたベクトル例を示した説明図。
【図13】本発明に係るスカラ値をベクトルに再記入するために図1のプロセッサにより行われるVINSRTのフォーマットを示した説明図。
【図14】従来の演算論理装置を有するマイクロプロセッサの構成を示すブロック図。
【符号の説明】
200 レジスタファイル
210 乗算器
220 ALU
222、224 記入アドレス制御部
226、228 読み出しアドレス制御部
230 累算器
240 W1MUX
245 W2MUX
250 AMUX
255 BMUX
260 AccMUX
270 WBMUX
290 MUX
Claims (13)
- コンピュータシステムを構成するベクトルプロセッサのレジスタファイルを構成するベクトルレジスタ及びスカラレジスタの前記ベクトルレジタに格納された第1ベクトル値の所定位置にスカラ値を記入するコンピュータにおけるスカラ値をベクトル値に記入する方法において、
前記所定位置に記入すべきスカラ値の複数個のコピーを作成し、該複数個のコピーを包含する第2ベクトル値を生成する段階と、
前記所定位置を示す信号を生成する段階と、
前記第2ベクトル値と前記信号とを前記ベクトルレジスタに印加する段階とを包含し、
前記信号は、前記スカラ値のデータタイプの関数であり、
前記信号に応答して前記ベクトルレジスタが前記第2ベクトルに包含される前記複数個のコピーの一部を前記第1ベクトル値内の前記所定位置に記入して更新し、前記第1ベクトル値の残りは変化されずに残存することを特徴とするコンピュータにおけるスカラ値をベクトル値に記入する方法。 - 前記所定位置が前記コンピュータシステムのメモリに記憶された命令により規定され、前記信号を生成する段階が前記メモリから前記命令を読み出す段階を包含することを特徴とする請求項1記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。
- 前記所定位置を規定するデータは、コンピュータシステムの制御部のバッファから読み出されることを特徴とする請求項1記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。
- 前記第2ベクトル値内のスカラ値のコピーの個数は、このスカラ値の大きさに依存することを特徴とする請求項1記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。
- 前記信号を生成する段階および第2ベクトル値を生成する段階が同時的に行われることを特徴とする請求項1記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。
- 前記信号はスカラ値のデータ形態の関数であることを特徴とする請求項1記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。
- 前記第1ベクトル値の所定位置に前記第2ベクトル値の一部を記入した結果として、前記ベクトルレジスタが第1ベクトル値の代わりに第3ベクトルを得、前記コンピュータにおけるスカラ値をベクトルに記入する方法が、
前記第2ベクトル値の一部が第1ベクトル値の所定位置に記入される前に前記ベクトルレジスタから第1回路に第1ベクトル値を読み出す段階と、前記第3ベクトル値のコピーをベクトル処理回路に提供する段階とを包含し、前記第1回路は第2ベクトル値の一部を前記第1ベクトル値のコピー内の所定位置に記入して前記第3ベクトル値のコピーを得、前記ベクトル処理回路には第3ベクトル値が前記ベクトルレジスタから読み出される前に第3ベクトル値のコピーが印加されることを特徴とする請求項1記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。 - 前記第2ベクトル値内のスカラ値の各コピーに対し前記信号は、前記コピーが前記ベクトルレジスタの第1ベクトル値に記入されるかを示す1個以上のビットを包含することを特徴とする請求項1記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。
- 前記信号が前記レジスタファイルの制御部に印加されることを特徴とする請求項8記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。
- 前記第2ベクトル値がコンピュータシステム内に3個以下の入力部を有するALUにより生成されることを特徴とする請求項9記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。
- 前記レジスタファイルが3個以下の出力部を有し、
前記第2ベクトル値を生成する段階が前記レジスタファイルの前記スカラレジスタからスカラ値を読み出す段階を包含し、
前記信号を生成する段階が前記所定位置を示す命令を前記コンピュータシステムのメモリから読み出す段階を包含することを特徴とする請求項1記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。 - 前記スカラ値と所定位置を示すデータが前記ベクトルプロセッサのALUの2個の相異なるポートから同時的に読み出されることを特徴とする請求項11記載のコンピュータにおけるスカラ値をベクトル値に記入する方法。
- ベクトルプロセッサ内のベクトルレジスタに記憶された第1ベクトル値内の所定位置にコンピュータにおけるスカラ値を記入する方法において、
前記所定の位置に記入すべきスカラ値の複数個のコピーを作成し、該複数個のコピーを包含する第2ベクトル値を生成する段階と、
前記第2ベクトル値および前記所定位置を示す信号を前記ベクトルレジスタに印加する段階とを包含し、
前記信号に応答して前記ベクトルレジスタが第3ベクトル値を生成し、この第3ベクトル値は前記所定位置を除いたすべての位置で前記第1ベクトル値と同様な値を有し、前記所定位置で前記第2ベクトル値と同様な値を有することを特徴とするコンピュータにおけるスカラ値をベクトル値に記入する方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/733,906 US6006315A (en) | 1996-10-18 | 1996-10-18 | Computer methods for writing a scalar value to a vector |
US08/733,906 | 1996-10-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10187661A JPH10187661A (ja) | 1998-07-21 |
JP3954171B2 true JP3954171B2 (ja) | 2007-08-08 |
Family
ID=24949593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP27626497A Expired - Fee Related JP3954171B2 (ja) | 1996-10-18 | 1997-10-08 | コンピュータにおけるスカラ値をベクトルに記入する方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6006315A (ja) |
JP (1) | JP3954171B2 (ja) |
KR (1) | KR100227277B1 (ja) |
TW (1) | TW364981B (ja) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282634B1 (en) * | 1998-05-27 | 2001-08-28 | Arm Limited | Apparatus and method for processing data having a mixed vector/scalar register file |
US7529907B2 (en) * | 1998-12-16 | 2009-05-05 | Mips Technologies, Inc. | Method and apparatus for improved computer load and store operations |
US6353439B1 (en) * | 1999-12-06 | 2002-03-05 | Nvidia Corporation | System, method and computer program product for a blending operation in a transform module of a computer graphics pipeline |
US6591361B1 (en) | 1999-12-28 | 2003-07-08 | International Business Machines Corporation | Method and apparatus for converting data into different ordinal types |
US6857061B1 (en) * | 2000-04-07 | 2005-02-15 | Nintendo Co., Ltd. | Method and apparatus for obtaining a scalar value directly from a vector register |
US6701424B1 (en) | 2000-04-07 | 2004-03-02 | Nintendo Co., Ltd. | Method and apparatus for efficient loading and storing of vectors |
US7233998B2 (en) * | 2001-03-22 | 2007-06-19 | Sony Computer Entertainment Inc. | Computer architecture and software cells for broadband networks |
ATE372542T1 (de) * | 2002-05-24 | 2007-09-15 | Nxp Bv | Zugriff zum breiten speicher |
US6986023B2 (en) * | 2002-08-09 | 2006-01-10 | Intel Corporation | Conditional execution of coprocessor instruction based on main processor arithmetic flags |
US7392368B2 (en) * | 2002-08-09 | 2008-06-24 | Marvell International Ltd. | Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements |
WO2004015563A1 (en) * | 2002-08-09 | 2004-02-19 | Intel Corporation | Multimedia coprocessor control mechanism including alignment or broadcast instructions |
US20040215924A1 (en) * | 2003-04-28 | 2004-10-28 | Collard Jean-Francois C. | Analyzing stored data |
JP3855270B2 (ja) * | 2003-05-29 | 2006-12-06 | ソニー株式会社 | アンテナ実装方法 |
TW200625097A (en) * | 2004-11-17 | 2006-07-16 | Sandbridge Technologies Inc | Data file storing multiple date types with controlled data access |
US7516299B2 (en) * | 2005-08-29 | 2009-04-07 | International Business Machines Corporation | Splat copying GPR data to vector register elements by executing lvsr or lvsl and vector subtract instructions |
US7404065B2 (en) * | 2005-12-21 | 2008-07-22 | Intel Corporation | Flow optimization and prediction for VSSE memory operations |
EP2232378A1 (en) * | 2007-12-10 | 2010-09-29 | Sandbridge Technologies, Inc. | Accelerating traceback on a signal processor |
US20100106939A1 (en) * | 2008-10-27 | 2010-04-29 | Daniel Citron | Transferring data from integer to vector registers |
KR20110103256A (ko) * | 2010-03-12 | 2011-09-20 | 삼성전자주식회사 | 다중 입출력 오퍼레이션 지원 프로세서 및 그 방법 |
JP5699554B2 (ja) | 2010-11-11 | 2015-04-15 | 富士通株式会社 | ベクトル処理回路、命令発行制御方法、及びプロセッサシステム |
CN116414459A (zh) | 2011-12-23 | 2023-07-11 | 英特尔公司 | 在不同的粒度水平下对数据值进行广播和掩码的指令执行 |
US9122475B2 (en) * | 2012-09-28 | 2015-09-01 | Intel Corporation | Instruction for shifting bits left with pulling ones into less significant bits |
US10877925B2 (en) * | 2019-03-18 | 2020-12-29 | Micron Technology, Inc. | Vector processor with vector first and multiple lane configuration |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3827031A (en) * | 1973-03-19 | 1974-07-30 | Instr Inc | Element select/replace apparatus for a vector computing system |
JPH0724013B2 (ja) * | 1986-09-10 | 1995-03-15 | 株式会社日立製作所 | ベクトルプロセツサ |
WO1989003091A1 (en) * | 1987-09-25 | 1989-04-06 | Hitachi, Ltd. | Method of sorting vector data and a vector processor adapted thereto |
JP2665111B2 (ja) * | 1992-06-18 | 1997-10-22 | 日本電気株式会社 | ベクトル処理装置 |
US5331554A (en) * | 1992-12-10 | 1994-07-19 | Ricoh Corporation | Method and apparatus for semantic pattern matching for text retrieval |
US5461586A (en) * | 1994-01-31 | 1995-10-24 | Texas Instruments Incorporated | Self-timed redundancy circuit |
-
1996
- 1996-10-18 US US08/733,906 patent/US6006315A/en not_active Expired - Lifetime
-
1997
- 1997-05-02 KR KR1019970016967A patent/KR100227277B1/ko not_active IP Right Cessation
- 1997-09-02 TW TW086112575A patent/TW364981B/zh not_active IP Right Cessation
- 1997-10-08 JP JP27626497A patent/JP3954171B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
KR19980032103A (ko) | 1998-07-25 |
TW364981B (en) | 1999-07-21 |
US6006315A (en) | 1999-12-21 |
JPH10187661A (ja) | 1998-07-21 |
KR100227277B1 (ko) | 1999-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3954171B2 (ja) | コンピュータにおけるスカラ値をベクトルに記入する方法 | |
JP3592230B2 (ja) | データ処理装置 | |
US5832288A (en) | Element-select mechanism for a vector processor | |
JP3101560B2 (ja) | プロセッサ | |
US7434024B2 (en) | SIMD processor with register addressing, buffer stall and methods | |
JP2905446B2 (ja) | データストリング生成方法、コンピュータ動作方法、ピクセル値セット生成方法及びコンピュータ | |
KR100346515B1 (ko) | 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일 | |
EP1570373A1 (en) | Cellular engine for a data processing system | |
CN107851013B (zh) | 数据处理装置和方法 | |
US5119324A (en) | Apparatus and method for performing arithmetic functions in a computer system | |
JPH11272546A (ja) | 可変長レジスタ装置 | |
US20240004663A1 (en) | Processing device with vector transformation execution | |
KR20010072491A (ko) | 산술 논리 유닛 및 스택을 가지는 데이터 프로세서,멀티미디어 장치 및 컴퓨터 프로그램 제품 | |
JP2003196086A (ja) | レジスタウィンドウ方式によるレジスタファイル及びその制御方法 | |
US6405233B1 (en) | Unaligned semaphore adder | |
JP3841820B2 (ja) | マイクロコンピュータ | |
JP2003241960A (ja) | プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法 | |
US20030009652A1 (en) | Data processing system and control method | |
US20080313428A1 (en) | Microprocessor | |
TW388818B (en) | Method and system for single cycle direct execution of floating-point status and control register instructions | |
JP2654451B2 (ja) | データ出力方法 | |
KR20010072490A (ko) | 레지스터 스택을 포함하는 데이터 프로세서, 그 처리방법, 컴퓨터 프로그램 제품 및 멀티미디어 장치 | |
JPH07110769A (ja) | Vliw型計算機 | |
US11036503B2 (en) | Predicate indicator generation for vector processing operations | |
JP3474347B2 (ja) | マイクロコンピュータの命令解読部 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050530 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050607 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20050907 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050916 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051206 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060228 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060530 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060607 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060824 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070403 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070426 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110511 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120511 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130511 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |