JP3817073B2 - メモリアクセス処理装置、メモリアクセス処理システム、および記録媒体 - Google Patents
メモリアクセス処理装置、メモリアクセス処理システム、および記録媒体 Download PDFInfo
- Publication number
- JP3817073B2 JP3817073B2 JP21234898A JP21234898A JP3817073B2 JP 3817073 B2 JP3817073 B2 JP 3817073B2 JP 21234898 A JP21234898 A JP 21234898A JP 21234898 A JP21234898 A JP 21234898A JP 3817073 B2 JP3817073 B2 JP 3817073B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- memory access
- vector register
- data
- vector
- 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
Images
Description
本発明は、隣接するメモリアクセス命令についてベクトル計算機上で高速実行する命令を生成するメモリアクセス処理装置、メモリアクセス処理システム、および記録媒体に関するものである。
【0002】
【従来の技術】
一般に科学技術計算において、メモリアクセスの性能はプログラムの処理速度を決定する重要な1つの要因である。ベクトル計算機では、メモリ上に配置されているデータをベクトルレジスタ上にロード(メモリアクセス)してそのベクトルレジスタを介して、高速な演算を実現している。このため、メモリ上のデータをいかに効率良くレジスタ上に持ってくるか、データをいかにレジスタ上に保持しつづけられるかが性能の鍵となる。
【0003】
例えば以下のように2つの隣接するメモリアクセスが存在するFORTRANプログラムを例にとる。
データをメモリからベクトルレジスタ上にロードする場合に、上記プログラム中の▲1▼、▲2▼の部分で、アクセス要素位置が1要素づれているときでも、図7に示すように、2つのベクトルアクセス命令でそれぞれ個別にベクトルレジスタ上にロードしていた。
【0004】
【発明が解決しようとする課題】
このため、図7の▲1▼のアクセス(メモリからベクトルレジスタへのデータのロード)と、▲2▼のアクセスとがメモリ上のほとんど同じ同一箇所をアクセスしているにもかかわらず、個別にそれぞれメモリをアクセスしてベクトルレジスタ上にロードする必要があり、メモリアクセスという非常に遅い処理が重複した部分でも必要となり、全体の処理速度を大幅に低下させてしまうという問題があった。
【0005】
本発明は、これらの問題を解決するため、ベクトル計算機において、隣接するメモリアクセス命令が存在するときに重複したメモリアクセスを削減して実行性能の向上を図ることを目的としている。
【0006】
【課題を解決するための手段】
図1を参照して課題を解決するための手段を説明する。
図1において、ソースプログラム1は、コンパイル対象のソースプログラムであって、ここでは、隣接するメモリアクセス命令をベクトル計算機上で高速実行させる対象のソースプログラムである。
【0007】
コンパイラ2は、ソースプログラム1を解析してベクトル化および最適化を行い、実行可能形式のオブジェクト10を自動生成するものであって、ここでは、最適化手段6などから構成されるものである。
【0008】
最適化手段6は、各種最適化を行うものであって、ここでは、隣接するメモリアクセス命令をベクトル計算機上で高速実行させるようにするものであり、隣接アクセス認識手段7およびスライド命令利用手段8などから構成されるものである。
【0009】
隣接アクセス認識手段7は、隣接するアクセス命令を検出するものである。
スライド命令利用手段8は、隣接するアクセス命令について、メモリから第1のベクトルレジスタにデータをロードした後、スライドして第2のベクトルレジスタに格納し、第1のベクトルレジスタと第2のベクトルレジスタとを演算処理などさせるものである。
【0010】
次に、動作を説明する。
隣接アクセス認識手段7がソースプログラム1を解析した情報をもとに隣接するメモリアクセス命令を検出し、スライド命令利用手段8が検出された隣接するメモリアクセス命令について両者に必要なデータを含むメモリアクセス命令に変換し、変換した命令によってメモリから読み出されてロードされた第1のベクトルレジスタのデータを、スライドさせて第2のベクトルレジスタに格納させる命令を生成し、第1のベクトルレジスタと第2のベクトルレジスタとの演算を行う命令を生成するようにしている。
【0011】
また、隣接するメモリアクセス命令の要素数が1回のベクトル演算処理で実行し得る最大要素数の整数倍以外のときに、隣接アクセス認識手段7がソースプログラム1を解析した情報をもとに隣接するメモリアクセス命令を検出し、スライド命令利用手段8が検出された隣接するメモリアクセス命令について両者に必要なデータを含むメモリアクセス命令に変換し、変換した命令によってメモリから読み出されてロードされた第1のベクトルレジスタのデータを、スライドさせて第2のベクトルレジスタに格納させる命令を生成し、第2のベクトルレジスタ中の処理不要な要素にマスクする命令を生成し、更に、マスク命令で真(有意)となった要素について第1のベクトルレジスタと第2のベクトルレジスタとの演算を行う命令を生成するようにしている。
【0012】
また、隣接するメモリアクセス命令の要素数が1回のベクトル演算処理で実行し得る最大要素数の整数倍のときに、隣接アクセス認識手段7がソースプログラム1を解析した情報をもとに隣接するメモリアクセス命令を検出し、スライド命令利用手段8が隣接するメモリアクセス命令中の1つの命令によってメモリから読み出されてロードされた第1のベクトルレジスタのデータを、スライドさせて第2のベクトルレジスタに格納させる命令を生成し、第1のベクトルレジスタと第2のベクトルレジスタとの有意な部分の演算を行う命令を生成し、更に、演算の実行されなかった要素についてメモリから読み出してレジスタにそれぞれロードする命令を生成し、ロードしたレジスタの間の演算を行う命令を生成するようにしている。
【0013】
これらの際に、隣接するメモリアクセス命令が同じ配列であるときに、上述した処理を行うようにしている。
従って、ベクトル計算機において、隣接するメモリアクセス命令が存在するときに重複したメモリアクセスを削減して実行性能の向上を図ることが可能となる。
【0014】
【発明の実施の形態】
次に、図1から図6を用いて本発明の実施の形態および動作を順次詳細に説明する。
【0015】
図1は、本発明のシステム構成図を示す。
図1において、ソースプログラム1は、ベクトル計算機上で動作させるようにコンパイルする対象のソースプログラム(例えばFORTRANプログラム)である。
【0016】
コンパイラ2は、ソースプログラム1を入力としてベクトル計算機上で動作する実行可能形式のオブジェクト10を自動生成するものであって、プログラム入力手段3、ソース解析手段4、ベクトル化手段5、最適化手段6、コード生成手段9から構成されるものである。
【0017】
プログラム入力手段3は、ソースプログラム1を取り込むものである。
ソース解析手段4は、取り込んだソースプログラム1を形態素解析および構文解析などを行い、処理を行い易い中間言語に変換するものである。尚、ソース解析以降は、実際にはこの中間言語をもとにベクトル化、最適化などを行うが、説明を簡単にするためにソースプログラム1をもとにベクトル化、最適化などを行うとして以下説明する。
【0018】
ベクトル化手段5は、ソースプログラム1のベクトル化を行い、ベクトル計算機上でベクトルレジスタを利用して高速並列実行可能なプログラムに変換するものである。
【0019】
最適化手段6は、ベクトル化された後に最適化を行うものであって、ここでは、隣接アクセス認識手段7、およびスライド命令利用手段8などから構成されるものである。
【0020】
隣接アクセス認識手段7は、隣接するアクセス命令を検出するものである。
スライド命令利用手段8は、隣接するアクセス命令について、メモリから第1のベクトルレジスタにデータをロードした後、スライドして第2のベクトルレジスタに格納し、第1のベクトルレジスタと第2のベクトルレジスタとを演算処理などさせるものである(図2を用いて後述する)。
【0021】
コード生成手段9は、最適化後に、実行可能形式のオブジェクト10を生成するものである。
オブジェクト10は、ベクトル計算機上で実行可能なプログラムである。
【0022】
次に、図2のフローチャートの順序に従い、図1の構成の動作を詳細に説明する。
図2は、本発明の動作説明フローチャートを示す。
【0023】
図2において、S1は、プログラムを入力する。これは、図1のプログラム入力手段3がソースプログラム1を外部記憶装置などから取り込む。
S2は、ソースプログラムを解析する。これは、図1のソース解析手段4が、S1で取り込んだソースプログラム1を形態素解析および構文解析を行い、解析結果情報を生成する。
【0024】
S3は、ベクトル化を行う。これは、S2で解析した情報をもとに、ベクトル計算機上のベクトルレジスタを利用して高速並列実行可能なように、プログラムのベクトル化を行う。
【0025】
S4は、同じ配列か判別する。これは、S3でベクトル化したメモリアクセス命令の要素が同じ配列か判別、例えば後述する図3の(a)のプログラム中のb(i)とb(i+1)とが同じ配列か判別する。YESの場合には、S5に進む。NOの場合には、本発明に係るS5以降の処理ができないので、S10に進む。
【0026】
S5は、隣接アクセスしているか判別する。これは、S4で同じ配列と判明したメモリアクセス命令が隣接アクセスしているか判別する。YESの場合には、S6に進む。NOの場合には、本発明に係るS6以降の処理ができないので、S10に進む。
【0027】
S6は、ベクトル長増加方式/ベクトル長削減方式の選択処理を行う。これは、隣接するメモリアクセス命令でアクセスする要素数が1回の並列処理で実行可能な要素数、あるいはその整数倍でないか判別する。
【0028】
S7は、ベクトル長増加方式か判別する。これは、S6で隣接するメモリアクセス命令でアクセスする要素数が1回の並列処理で実行可能な要素数、あるいはその整数倍でないベクトル長増加方式(図3)か判別する。YESの場合には、S8でベクトル長増加方式(図3)の処理を行い、S10に進む。一方、NOの場合には、S9でベクトル長削減方式(図4)の処理を行い、S10に進む。
【0029】
S8は、S7のYESでベクトル長増加方式と判明したので、
(1)ベクトル長を+1する
(2)b(i+1)に対するload命令(ロード命令)をvslid命令(スライド命令)に置換する
(3)ベクトル長を増加させたことによって、端点OFFのためのマスク生成する
(4)vslid命令と、そのvslid命令の対象となるメモリアクセス(vload)以外のループ内の命令にマスク処理を施す
を実行する(図3を用いて後述する)。
【0030】
S9は、S7のNOでベクトル長削減方式と判明したので、
(1)ベクトル長を変更せずに、b(i+1)に対するload命令をvslid命令に置換する
(2)ベクトル長を−1する
(3)ループ内の最後の要素に対する演算について、スカラ演算を実行する(図4を用いて後述する)。
【0031】
S10は、コードを生成する。
以上によって、ソースプログラム1を入力とし、隣接するアクセス命令の対象となる要素の配列が同じ場合(S4のYES、S5のYESの場合)、要素数が1回のベクトル並列演算処理で実行できる最大要素数に等しいあるいはその整数倍に等しくないときにベクトル長増加方式を選択し、一方、等しいときにベクトル長削減方式を選択し、これらベクトル長増加方式/ベクトル長削減方式の処理後にコード生成を行い、オブジェクト10を自動生成することにより、隣接するメモリアクセス命令について重複したメモリアクセスを削減し、ベクトル計算機上で高速実行可能なオブジェクトを生成することが可能となる。
【0032】
図3は、本発明の説明図(その1)を示す。これは、既述した図2のS8のベクトル長増加方式の場合の具体例の説明図であって、隣接するアクセス命令の対象となる要素の配列が同じ場合のものである。
【0033】
図3の(a)は、ソースプログラム(FOTRANプログラム)の例を示す。ここでは、図示の下記の演算を行う。
図3の(b)は、オブジェクトの例を示す。これは、図3の(a)のソースプログラムを、図2のフローチャート中のS8で本発明に係るベクトル長増加方式に従って生成したオブジェクトのイメージを示す。ここで、図中の▲1▼から▲6▼について、図3の(c)の▲1▼から▲6▼で順次詳細に説明する。
【0034】
図3の(c)において、▲1▼は、ベクトル長が1τで処理できる要素数(例えば16要素数)で割り切れなかったので、ベクトル長増加方式が選択され、v1v1の値を11に変更する(要素数10に+1して11に変更する)。
【0035】
▲2▼は、図3の(b)の▲2▼の命令vload vr1,b(1:11)によって、bの要素(1〜11)を、vr1にロードする。これは、メモリ上の要素1から要素11のデータ(ここでは、1.0)をベクトルレジスタvr1に図示のようにロードする。
【0036】
▲3▼は、図3の(b)の▲3▼の命令vslid vr2,1,vr1によって、ベクトルレジスタvr1にロードされた要素を、ベクトルレジスタvr2に例えば1要素スライドして格納する。ここで、ベクトルレジスタvr2の内容は、b(2〜11)の要素であり、(?)は未定義領域である。
【0037】
▲4▼は、図3の(b)の▲4▼の命令vgsm 11,mr4によって、ベクトルレジスタvr2の末尾要素(?)は処理してはならないため、マスク情報を生成する。
▲5▼は、図3の(b)の▲5▼vadd vr3,vr1,vr2,mr4によって、マスクレジスタmr4の真となったマスク要素分の演算(ベクトルレジスタvr1とベクトルレジスタvr2の内容を加算してその加算結果をベクトルレジスタvr3に格納する演算)を行う。この結果、図示のようにベクトルレジスタvr3には、2.0という値が格納される。
【0038】
▲6▼は、図3の(b)の▲5▼vstore vr3,a(1,10),mr4によって、マスクレジスタmr4の真となったマスク要素分のベクトルレジスタvr3のデータがメモリ上のa(1,10)にストアされる。
【0039】
以上によって、図3の(a)のソースプログラム1中の隣接するメモリアクセス命令でアクセスする要素数が1τで処理できる要素数あるいはその整数倍に等しくない場合にベクトル長増加方式として、▲1▼から▲6▼の命令列を自動生成することにより、重複したメモリアクセスを無くし(スライド命令によって重複した部分のデータをベクトルレジスタ間でスライドして他のベクトルレジスタに格納し)、隣接したメモリアクセス命令をベクトル計算機上で高速並列実行させることが可能となる。
【0040】
図4は、本発明の説明図(その2)を示す。これは、既述した図2のS9のベクトル長削減方式の場合の具体例の説明図であって、隣接するアクセス命令の対象となる要素の配列が同じ場合のものである。
【0041】
図4の(a)は、ソースプログラム(FOTRANプログラム)の例を示す。ここでは、図示の下記の演算を行う。
図4の(b)は、オブジェクトの例を示す。これは、図4の(a)のソースプログラムを、図2のフローチャート中のS9で本発明に係るベクトル長削減方式に従って生成したオブジェクトのイメージを示す。ここで、図中の▲1▼から▲9▼、〇10について、図4の(c)の▲1▼から▲9▼、〇10で順次詳細に説明する。
【0042】
図4の(c)において、▲1▼は、ベクトル長が1τで処理できる要素数(例えば16要素数)で割り切れたので、ベクトル長削減方式が選択され、v1v1の値を10とする(要素数10のままとする)。
【0043】
▲2▼は、図4の(b)の▲2▼の命令vload vr1,b(1:10)によって、bの要素(1〜10)を、vr1にロードする。これは、メモリ上の要素1から要素10のデータ(ここでは、1.0)をベクトルレジスタvr1に図示のようにロードする。
【0044】
▲3▼は、図4の(b)の▲3▼の命令vslid vr2,1,vr1によって、ベクトルレジスタvr1にロードされた要素を、ベクトルレジスタvr2に例えば1要素スライドして格納する。ここで、ベクトルレジスタvr2の末尾要素(?)は格納されていない。
【0045】
▲4▼は、図4の(b)の▲4▼の命令v1v1 9によって、ベクトル長を−1し、9とする。
▲5▼は、図4の(b)の▲5▼の命令vadd vr3,vr1,vr2によって、ベクトルレジスタvr1とベクトルレジスタvr2の内容を加算してその加算結果をベクトルレジスタvr3に格納する演算を行う。この結果、図示のようにベクトルレジスタvr3には、9要素分の加算結果、2.0という値が格納される。
【0046】
▲6▼は、図4の(b)の▲6▼vstore vr3,a(1,9)によって、ベクトルレジスタvr3のデータがメモリ上のa(1,9)にストアされる。
▲7▼は、図4の(b)の▲7▼load r1,b(10)によって、ベクトルレジスタvr1の10要素目の演算が不足しているのでその演算に対しては、スカラ命令で演算する。ここでは、b(10)要素をメモリからレジスタ(スカラレジスタ)にロードする。
【0047】
▲8▼は、図4の(b)の▲8▼load r2,b(11)によって、ベクトルレジスタvr1の11要素目の演算が不足しているのでその演算に対しては、スカラ命令で演算する。ここでは、b(11)要素をメモリからレジスタ(スカラレジスタ)にロードする。
【0048】
▲9▼は、図4の(b)の▲9▼add r3,r1,r2によって、レジスタr1とレジスタr2の内容を加算してその加算結果をレジスタr3に格納する演算を行う。この結果、図示のようにレジスタr3には、10要素目と11要素目の加算結果、2.0という値が格納される。
【0049】
〇10は、図4の(b)の〇10 store r3,a(10)によって、レジスタr3のデータをメモリのa(10)にストアする。
以上によって、図4の(a)のソースプログラム1中の隣接するメモリアクセス命令でアクセスする要素数が1τで処理できる要素数あるいはその整数倍に等しい場合にベクトル長削減方式として、▲1▼から▲9▼、〇10の命令列を自動生成することにより、重複したメモリアクセスを無くし(スライド命令によって重複した部分のデータをベクトルレジスタ間でスライドして他のベクトルレジスタに格納し)、隣接したメモリアクセス命令をベクトル計算機上で高速並列実行させることが可能となる。特に、ベクトル長削減方式では、隣接するメモリアクセス命令が1回で処理する要素数が1τで処理できる要素数の整数倍のときに適用し、ベクトル演算よりも、スカラ演算の方が高速実行できるのでこの特質を有効に利用し、より高速実行可能な命令列を自動生成したものである。
【0050】
図5は、本発明の説明図(その3)を示す。これは、既述した図3のベクトル長増加方式および図4のベクトル長削減方式のメリットおよびデメリットを表にまとめたものであって、図示の下記の通りである。
【0051】
したがって、これらメリット/デメリットを考慮して最適なベクトル長増加方式あるいはベクトル長削減方式を選択使用すればよい。例えば既述したように、ベクトルレジスタを使用して1τで並列処理できる要素数(例えば16)に等しいときはベクトル削減方式を採用し、マスク生成を不用とし、スカラ演算補充(図4の▲7▼〜▲9▼、〇10)を行い、高速化を図る。一方、等しくないときにベクトル長増加方式を採用し、スカラ演算補充を不用とし、マスク生成(図3の▲4▼)を行い、高速化を図る。尚、ベクトルレジスタを使用して1τで並列処理できる要素数(例えば16)に等しいか等しくないかで、ベクトル長削減方式あるいはベクトル長増加方式のいずれかを選択したが、他の基準によっていずれかを選択するようにしてもよい。
【0052】
図6は、本発明のハードウェアブロック図を示す。これは、既述した図1から図5によって生成したオブジェクト10を、ベクトル計算機上で実行するときに必要な本発明に係るハードウェアのブロック図である。
【0053】
図6において、CPU21は、オブジェクト10を読み込んで各種処理を行うものである。ここでは、CPU21は、オブジェクト10を解析して既述したベクトル命令を検出したときに図示のベクトル命令をベクトルプロセッサ(コプロセッサ)22に通知したり、既述したスカラレジスタ命令を検出したときに図示のスカラレジスタ読み出しデータを通知したり、スカラレジスタ書き込みデータを通知したりなどする。
【0054】
ベクトルプロセッサ22は、ベクトル命令に従い処理を行うものであって、CPU21との間でデータの授受を行うCPUインタフェース手段23、受信したベクトル命令を解析して該当制御を指示する命令制御手段24、命令制御手段24からの指示に従い演算する演算手段25、VR/MR(ベクトルレジスタなどのレジスタ)26、主記憶アクセス手段27、VCR(ベクトルコントロール手段)28などから構成されるものである。
【0055】
主記憶29は、各種データなどを格納するメモリである。
ここで、CPU21がオブジェクトを読み込んで解析し、ベクトル命令と判明したときにベクトルプロセッサ22に当該ベクトル命令を通知し、通知を受けたベクトルプロセッサ22の命令制御手段24がこのベクトル命令を解析して指示を行い、この指示に従い演算手段25がVR/MR26上のデータの演算を行い、その結果を格納したり、CPU21に通知したりなどし、一連の処理を実行する。
【0056】
【発明の効果】
以上説明したように、本発明によれば、ソースプログラム1中の隣接するメモリアクセス命令についてベクトル計算機上で動作するスライド命令によって重複した部分のデータをベクトルレジスタ間でスライドして他のベクトルレジスタに格納する命令を自動生成したオブジェクト10を出力する構成を採用しているため、隣接するメモリアクセス命令が存在するときに重複したメモリアクセスを削減してベクトル計算機の実行性能の向上を図ることが可能となる。また、隣接するメモリアクセス命令が1τで処理できる要素数の整数倍と一致したときにベクトル長削減方式を選択し、不一致のときにベクトル長増加方式を選択することで、並列処理する要素数に最適な方式を自動選択し、より高速化を図ることが可能となる。
【図面の簡単な説明】
【図1】本発明のシステム構成図である。
【図2】本発明の動作説明フローチャートである。
【図3】本発明の説明図(その1)である。
【図4】本発明の説明図(その2)である。
【図5】本発明の説明図(その3)である。
【図6】本発明のハードウェアブロック図である。
【図7】従来技術の説明図である。
【符号の説明】
1:ソースプログラム
2:コンパイラ
3:プログラム入力手段
4:ソース解析手段
5:ベクトル化手段
6:最適化手段
7:隣接アクセス認識手段
8:スライド命令利用手段
9:コード生成手段
10:オブジェクト
Claims (10)
- ベクトルレジスタにデータをロードする場合に、隣接するアクセス要素位置のデータのアクセスを行なう2つのメモリアクセス命令についてベクトル計算機上で高速実行する命令を生成するメモリアクセス処理装置において、
ソースプログラムを解析してベクトルレジスタにデータをロードする場合に、隣接するアクセス要素位置のデータのアクセスを行なう2つのメモリアクセス命令を検出する検出手段と、
上記検出手段により検出された2つのメモリアクセス命令について両者に必要なデータを含むメモリアクセス命令に変換する手段と、
上記変換した命令によってメモリから読み出されてロードされた第1のベクトルレジスタのデータを、スライドさせて第2のベクトルレジスタに格納させる命令を生成する手段と、
上記第1のベクトルレジスタと上記第2のベクトルレジスタとの演算を行なう命令を生成する手段と
を備えたことを特徴とするメモリアクセス処理装置。 - ベクトルレジスタにデータをロードする場合に、隣接するアクセス要素位置のデータのアクセスを行なう2つのメモリアクセス命令についてベクトル計算機上で高速実行する命令を生成するメモリアクセス処理装置において、
ソースプログラムを解析してベクトルレジスタにデータをロードする場合に、隣接するアクセス要素位置のデータのアクセスを行なう2つのメモリアクセス命令を検出する検出手段と、
上記検出手段により検出された2つのメモリアクセス命令について両者に必要なデータを含むメモリアクセス命令に変換する手段と、
上記変換した命令によってメモリから読み出されてロードされた第1のベクトルレジスタのデータを、スライドさせて第2のベクトルレジスタに格納させる命令を生成する手段と、
上記第2のベクトルレジスタ中の処理不要な要素にマスクする命令を生成する手段と、
上記マスク命令で真(有意)となった要素について上記第1のベクトルレジスタと上記第2のベクトルレジスタとの演算を行なう命令を生成する手段と
を備えたことを特徴とするメモリアクセス処理装置。 - ベクトルレジスタにデータをロードする場合に、隣接するアクセス要素位置のデータのアクセスを行なう2つのメモリアクセス命令についてベクトル計算機上で高速実行する命令を生成するメモリアクセス処理装置において、
ソースプログラムを解析してベクトルレジスタにデータをロードする場合に、隣接するアクセス要素位置のデータのアクセスを行なう2つのメモリアクセス命令を検出する検出手段と、
上記検出手段により検出された2つのメモリアクセス命令のうち、一方の命令によってメモリから読み出されてロードされた第1のベクトルレジスタのデータを、スライドさせて第2のベクトルレジスタに格納させる命令を生成する手段と、
上記第1のベクトルレジスタと上記第2のベクトルレジスタとの末尾要素以外の部分の演算を行なう命令を生成する手段と、
上記演算の実行されなかった要素についてメモリから読み出してレジスタにそれぞれロードする命令を生成する手段と、
上記ロードしたレジスタの間の演算を行なう命令を生成する手段と
を備えたことを特徴とするメモリアクセス処理装置。 - 上記検出手段により検出された2つのメモリアクセス命令が同じ配列であることを特徴 とする請求項1から請求項3のいずれかに記載のメモリアクセス処理装置。
- 上記検出手段により検出された2つのメモリアクセス命令の要素数が1回のベクトル演算処理で実行し得る最大要素数の整数倍以外のときに請求項1記載のメモリアクセス処理装置もしくは請求項2記載のメモリアクセス処理装置による処理を行なうことを特徴とするメモリアクセス処理システム。
- 上記検出手段により検出された2つのメモリアクセス命令の要素数が1回のベクトル演算処理で実行し得る最大要素数の整数倍のときに請求項3記載のメモリアクセス処理装置による処理を行なうことを特徴とするメモリアクセスシステム。
- 上記検出手段により検出された2つのメモリアクセス命令が同じ配列であることを特徴とする請求項5あるいは請求項6記載のメモリアクセス処理システム。
- コンピュータを、
ソースプログラムを解析してベクトルレジスタにデータをロードする場合に、隣接するアクセス要素位置のデータのアクセスを行なう2つのメモリアクセス命令を検出する検出手段と、
上記検出手段により検出された2つのメモリアクセス命令について両者に必要なデータを含むメモリアクセス命令に変換する手段と、
上記変換した命令によってメモリから読み出されてロードされた第1のベクトルレジスタのデータを、スライドさせて第2のベクトルレジスタに格納させる命令を生成する手段と、
上記第1のベクトルレジスタと上記第2のベクトルレジスタとの演算を行なう命令を生成する手段と
して機能させるプログラムを記録したコンピュータ読取可能な記録媒体。 - コンピュータを、
ソースプログラムを解析してベクトルレジスタにデータをロードする場合に、隣接するアクセス要素位置のデータのアクセスを行なう2つのメモリアクセス命令を検出する検出手段と、
上記検出手段により検出された2つのメモリアクセス命令について両者に必要なデータを含むメモリアクセス命令に変換する手段と、
上記変換した命令によってメモリから読み出されてロードされた第1のベクトルレジスタのデータを、スライドさせて第2のベクトルレジスタに格納させる命令を生成する手段と、
上記第2のベクトルレジスタ中の処理不要な要素にマスクする命令を生成する手段と、
上記マスク命令で真(有意)となった要素について上記第1のベクトルレジスタと上記第2のベクトルレジスタとの演算を行なう命令を生成する手段と
して機能させるプログラムを記録したコンピュータ読取可能な記録媒体。 - コンピュータを、
ソースプログラムを解析してベクトルレジスタにデータをロードする場合に、隣接するアクセス要素位置のデータのアクセスを行なう2つのメモリアクセス命令を検出する検出手段と、
上記検出手段により検出された2つのメモリアクセス命令のうち、一方の命令によってメモリから読み出されてロードされた第1のベクトルレジスタのデータを、スライドさせて第2のベクトルレジスタに格納させる命令を生成する手段と、
上記第1のベクトルレジスタと上記第2のベクトルレジスタとの末尾要素以外の部分の演算を行なう命令を生成する手段と、
上記演算の実行されなかった要素についてメモリから読み出してレジスタにそれぞれロードする命令を生成する手段と、
上記ロードしたレジスタの間の演算を行なう命令を生成する手段と
して機能させるプログラムを記録したコンピュータ読取可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP21234898A JP3817073B2 (ja) | 1998-07-28 | 1998-07-28 | メモリアクセス処理装置、メモリアクセス処理システム、および記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP21234898A JP3817073B2 (ja) | 1998-07-28 | 1998-07-28 | メモリアクセス処理装置、メモリアクセス処理システム、および記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000048009A JP2000048009A (ja) | 2000-02-18 |
JP3817073B2 true JP3817073B2 (ja) | 2006-08-30 |
Family
ID=16621059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP21234898A Expired - Fee Related JP3817073B2 (ja) | 1998-07-28 | 1998-07-28 | メモリアクセス処理装置、メモリアクセス処理システム、および記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3817073B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11829754B2 (en) | 2018-12-07 | 2023-11-28 | Nec Corporation | Compile device, compile method, and non-transitory computer readable medium for increasing a speed of a program |
JP7088276B1 (ja) * | 2020-12-14 | 2022-06-21 | 日本電気株式会社 | コンパイル装置、コンパイル方法、及びコンパイルプログラム |
-
1998
- 1998-07-28 JP JP21234898A patent/JP3817073B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000048009A (ja) | 2000-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6113650A (en) | Compiler for optimization in generating instruction sequence and compiling method | |
JP3707727B2 (ja) | プログラムの最適化方法及びこれを用いたコンパイラ | |
US5598561A (en) | Optimizing compiler which generates multiple instruction streams to be executed in parallel | |
US6367071B1 (en) | Compiler optimization techniques for exploiting a zero overhead loop mechanism | |
US20040003381A1 (en) | Compiler program and compilation processing method | |
US7418575B2 (en) | Long instruction word processing with instruction extensions | |
US9182960B2 (en) | Loop distribution detection program and loop distribution detection method | |
JP3817073B2 (ja) | メモリアクセス処理装置、メモリアクセス処理システム、および記録媒体 | |
US6279152B1 (en) | Apparatus and method for high-speed memory access | |
JP2001125792A (ja) | 最適化促進装置 | |
JP2002014868A (ja) | メモリ参照動作検出機構を有するマイクロプロセッサおよびコンパイル方法 | |
JP3887097B2 (ja) | コンパイル方法,コンパイル装置および、コンパイル用プログラムを記憶したコンピュータ読み取り可能な記憶媒体 | |
JP6790646B2 (ja) | コンパイル装置、コンパイル方法、および、コンパイルプログラム | |
JP3196625B2 (ja) | 並列化コンパイル方式 | |
JP3771682B2 (ja) | ベクトル処理装置 | |
WO2020066375A1 (ja) | 情報処理装置、情報処理方法、プログラム | |
JPH10177566A (ja) | メモリアクセスの高速化処理装置および記録媒体 | |
JPH04307624A (ja) | ループ最適化方法及び装置 | |
Lescrenier et al. | Large-scale unconstrained optimization on the FPS 164 and Cray X-MP vector processors | |
JP4788902B2 (ja) | コンパイル最適化方法およびコンパイラ | |
Liu et al. | A New Algorithm to Exploit Superword Level Parallelism | |
Huang et al. | The SPNT test: A new technology for run-time speculative parallelization of loops | |
JP3734658B2 (ja) | コンパイラ装置およびコンパイラプログラムを記録したコンピュータ読取可能な記録媒体 | |
JP5549861B2 (ja) | 分散メモリ型マルチプロセッサシステム及び分散メモリ型マルチプロセッサシステムの通信抑制方法 | |
Kao et al. | Run-time parallelization for loops |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060126 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060207 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060408 |
|
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: 20060516 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060609 |
|
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: 20100616 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110616 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120616 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120616 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130616 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140616 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |