(57)【特許請求の範囲】
【請求項１】
パイプライン処理の対象部分を含むソースプログラムの翻訳に際して、
コンピュータを用いて、
前記対象部分の翻訳により生成される命令群についてパイプライン処理で用いられる命令の種別、順序、命令数を示すパイプライン情報を求めるステップと、
命令の種別ごとに時系列に前記パイプライン情報が示す処理手順がわかる画面を表示するステップと、
を実行することを特徴とするパイプライン情報の出力方法。
【請求項２】
パイプライン処理の対象部分を含むソースプログラムの翻訳装置において、
前記対象部分の翻訳により生成される命令群についてパイプライン処理で用いられる命令の種別、順序、命令数を示すパイプライン情報を求める手段と、
命令の種別ごとに時系列に前記パイプライン情報が示す処理手順がわかる画面を表示する出力手段と、
を備えたことを特徴とするパイプライン情報の出力装置。
【請求項３】
パイプライン処理の対象部分を含むソースプログラムに対する翻訳プログラムを格納した記録媒体であって、
当該翻訳プログラムが、前記対象部分の翻訳により生成される命令群についてパイプライン処理で用いられる命令の種別、順序、命令数を示すパイプライン情報を求めて、命令の種別ごとに時系列に前記パイプライン情報が示す処理手順がわかる画面を表示する機能をコンピュータに実現させるためのものである、
ことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パイプライン情報の出力方法などに関し、特にソ−スプログラムをコンバイラやアセンブラで翻訳したときのパイプライン部分についての命令群を出力することにより、利用者が、パイプライン化の状況やパイプライン処理で用いられる各命令の種別などをあらかじめ把握した上でソ−スプログラムのチュ−ニングを行なえるようにしたものである。なお、本明細書では必要に応じて「ソ−スプログラム」を単に「プログラム」と記す。
【０００２】
一般に、プログラムの実行性能を高めるためには、利用者がソ−スプログラムの翻訳内容を確認しながら当該プログラムのチュ−ニング作業をより効率的に行なっていくことが望ましく、本発明はソ−スプログラムのパイプライン処理の対象部分についてもこの要請に応えられるようにしたものである。
【０００３】
【従来の技術】
従来、利用者は、ソ−スプログラム翻訳時の最適化やベクトル化などの状況を示す出力情報を確認した上でハ−ドウェアの特性を考慮しながら、ベクトル演算などのようなパイプライン処理部分を含むソ−スプログラムのチュ−ニングをおこなっていた。
【０００４】
すなわち、チュ−ニングの実行主体の利用者側には、パイプライン処理で用いられる命令の種別・順序や命令数、またパイプライン内での演算数などを示すパイプライン情報が提供されていなかった。
【０００５】
【発明が解決しようとする課題】
このように、従来のプログラムチュ−ニングは、パイプライン情報をその判断材料としていないので、作業効率が悪いという問題点があった。
【０００６】
そこで、本発明では、ソ−スプログラム翻訳時のパイプライン情報を求めて出力し、利用者がこの出力内容を参照できるようにして、プログラムチュ−ニングの効率化を図り、また、オブジェクトプログラムの実行性能を高めることを目的とする。
【０００７】
【課題を解決するための手段】
本発明はこの課題を次のようにして解決する。
パイプライン処理の対象部分を含むソースプログラムの翻訳に際し、コンピュータを用いて、前記対象部分の翻訳により生成される命令群についてパイプライン処理で用いられる命令の種別、順序、命令数を示すパイプライン情報を求め、命令の種別ごとに時系列に前記パイプライン情報が示す処理手順がわかる画面を表示する。
【０００８】
本発明においては、ソ−スプログラム翻訳時のパイプライン処理の命令群に関するパイプライン情報を出力するので、利用者はこの出力内容を参考にしてプログラムチュ−ニングを効率的に実行できる。
【０００９】
本発明は、このような解決手段からなるパイプライン情報の出力方法や出力装置、および、パイプライン情報の出力処理をコンピュ−タに実現させるためのプログラムを格納したコンピュ−タ読み取り可能なプログラム記憶媒体、を対象としている。
【００１０】
【発明の実施の形態】
図１乃至図８を参照して本発明の実施の形態を説明する。
【００１１】
図１はソ−スプログラムと、それに対応のパイプライン情報の画面表示例とを示す説明図であり、１はソ−スプログラム，２はソ−スプログラム１をコンパイルしたときに画面表示されるパイプライン情報を示している。
【００１２】
図２は図１のソ−スプログラムに対するパイプライン処理の概念を示す説明図であり、１１はメモリ，１２はロ−ド／ストアパイプライン（Ｌ／ＳＴパイプライン），１３ベクトルレジスタ，１４は乗算・加算パイプライン（Ｍ＆Ａパイプライン），１５は除算パイプライン，１６は加算パイプラインをそれぞれ示している。
【００１３】
ソ−スプログラム１は、配列ａ，ｂ，ｃ，ｄ，ｅ，ｆについての、
ａ（ｉ）＝（ｂ（ｉ）＋ｃ（ｉ）×ｄ（ｉ））÷ｅ（ｉ）＋ｆ（ｉ）
の計１０２４回のル−プ演算からなっている。
【００１４】
パイプライン情報２は、
・ベクトルロ−ド命令Ｌ，ベクトルストア命令Ｓ（Ｌ／ＳＴパイプライン）
・ベクトル乗算命令Ｍ，ベクトル加算命令Ａ（Ｍ＆Ａパイプライン）
・ベクトル除算命令（ＤＩＶパイプライン）
・ベクトルマスク命令（ＭＡＳＫパイプライン）
からなっている。
【００１５】
パイプライン情報２が示す処理手順は、
（１）  配列ｂをメモリ１１からロ−ド／ストアパイプライン１２経由でベクトルレジスタ１３にロ−ドし、
（２）  配列ｃをメモリ１１からロ−ド／ストアパイプライン１２経由でベクトルレジスタ１３にロ−ドし、
（３）  配列ｄをメモリ１１からロ−ド／ストアパイプライン１２経由でベクトルレジスタ１３にロ−ドし、
（４）  乗算・加算パイプライン１４で、ベクトルレジスタ１３の配列ｃと配列ｄとを乗算し、
（５）  乗算・加算パイプライン１４で、ベクトルレジスタ１３の配列ｂと  （４）の乗算結果とを加算し、
（６）  配列ｅをメモリ１１からロ−ド／ストアパイプライン１２経由でベクトルレジスタ１３にロ−ドし、
（７）  配列ｆをメモリ１１からロ−ド／ストアパイプライン１２経由でベクトルレジスタ１３にロ−ドし、
（８）  除算パイプライン１５で、  （５）の加算結果を配列ｅで除算し、
（９）  加算パイプライン１６で、配列ｆと  （８）の結果とを加算し、
（１０）ベクトルレジスタ１３の配列ａに  （９）の加算結果をストアする、
となっている。
【００１６】
このとき、
・ロ−ド／ストアパイプライン１２への上記（３）  のベクトルロ−ド命令の割り付け
・乗算・加算パイプライン１４への上記（４）  のベクトル乗算命令の割り付け
が同じタイミングで行われる。
【００１７】
また、
・ロ−ド／ストアパイプライン１２への上記（７）  のベクトルロ−ド命令の割り付け
・除算パイプライン１５への上記（８）  のベクトル除算命令の割り付け
・加算パイプライン１６への上記（９）  のベクトル加算命令の割り付け
が同じタイミングで行われる。
【００１８】
もっとも同じタイミングでベクトル命令が割りつけられた各パイプラインに対応のハ−ドウェア（演算回路）は、そこでの処理に必要なデ−タを受け取った上で命令内容を実行するように制御される。
【００１９】
例えば加算パイプライン１６に対応の演算回路は、除算パイプライン１５の出力と、上記（７）  のベクトルロ−ド命令でベクトルレジスタ１３にロ−ドされた配列ｆとを受け取った上で、両者の加算処理を実行する。
【００２０】
図１のパイプライン情報２から利用者が確認できるのは、
・乗算命令と加算命令が個々に存在し、乗算と加算に関する複合命令Ｕが生成されていないこと
・全体の命令数は１０個（ロ−ド命令が５，ストア命令が１，乗算命令が１，加算命令が２，除算命令が１）なのでパイプライン内の演算が少ないこと
などである。
【００２１】
以上の確認内容に基づいて以下のようなチュ−ニング項目を抽出できる。
▲１▼複合命令Ｕを使用するオプションをコマンドプロセッサに指定する。
▲２▼複合命令Ｕを使用する最適化制御行をソ−スプログラムに付加する。
▲３▼ル−プ演算の回数が半分となるソ−スプログラム内容に修正して、パイプライン内の演算数を倍にする。
【００２２】
上記▲１▼および▲２▼のチュ−ニング項目はコンパイラの最適化機能を利用するものである。また、上記▲１▼のチュ−ニング項目はソ−スプログラムの修正を対象とせず、上記▲２▼および▲３▼のチュ−ニング項目はそれぞれソ−スプログラムの修正を対象としている。
【００２３】
図３は、複合命令Ｕを使用する最適化制御行を図１のＤＯル−プに指定したソ−スプログラム３を示している。上記▲２▼のチュ−ニング項目の場合に相当し、最適化制御行は「！ｏｃｌ  ｆｍａｄｄ  」である。
【００２４】
図４は、上記▲１▼や▲２▼のチュ−ニング項目に対処した場合のパイプライン情報４を示している。
【００２５】
図４のパイプライン情報４は、
・ソ−スプログラム１の翻訳時に、ベクトル乗算命令Ｍとベクトル加算命令Ａとの複合命令Ｕを用い、
・その結果、図１のパイプライン情報に比べてベクトル命令数が一つ少ないこと、すなわちベクトル演算処理が全体で１命令分だけ早く終了すること、
を示している。
【００２６】
このとき、
・ロ−ド／ストアパイプライン１２へのベクトルロ−ド命令（配列ｄ）の割り付け
・乗算・加算パイプライン１４への複合命令Ｕの割り付け
が同じタイミングで行われる。
【００２７】
また、
・ロ−ド／ストアパイプライン１２へのベクトルロ−ド命令（配列ｆ）の割り付け
・除算パイプライン１５へのベクトル除算命令の割り付け
・加算パイプライン１６へのベクトル加算命令の割り付け
が同じタイミングで行われる。
【００２８】
パイプライン情報４が示す処理手順は上記（１）  〜（１０）と同様であり、また、複数のベクトル命令が同一のタイミングで割り付けられたパイプライン間の関連動作も図１の場合と同様に制御される。
【００２９】
図５は、図１のＤＯル−プの繰り返し回数を半分にしたソ−スプログラム５とそれに対応のパイプライン情報６の画面表示例とを示している。上記▲３▼のチュ−ニング項目の場合に相当する。
【００３０】
図５のパイプライン情報６が示す処理手順は、
・先ずソ−スプログラム５の前半の式に関する上記（１）  〜（１０）の処理
・次にソ−スプログラム５の後半の式に関する上記（１）  〜（１０）の処理
からなっている。
【００３１】
図５のパイプライン情報６は、図１のそれに比べて、
・ＤＯル−プの繰り返し回数が半分の「５１２」であり、
・ベクトル命令数が２倍の「２０」であること、
を示している。
【００３２】
この上記▲３▼のチュ−ニング項目の場合は、ＤＯル−プの繰り返し回数を減らして１命令当たりの処理時間を短くし、また命令数が増えてパイプライン内の命令スケジュ−リングが促進されることにより、プログラムの実行性能の向上を図っている。
【００３３】
図６は、コンパイラのシステム構成を示す説明図であり、
２１はソ−スプログラム
２２はコンパイラ
２３はソ−スプログラムの入力部
２４は入力されたソ−スプログラムの字句解析，構文解析や意味解析などを実行する解析部
２５はコンピュ−タの内部表現で表した中間言語を生成する中間言語生成部
２６は例えば演算の冗長性をなくすなどして処理効率の向上化を図るための変更を加えるえる最適化部
２７はパイプライン情報の作成機能を持つパイプラインスケジュ−リング部
２８はコ−ド生成部
２９はパイプライン情報の出力機能を有するリスタ部
３０はバッファなどの記憶手段
３１はコンパイラ２２の出力であるオブジェクトプログラム
３２はパイプライン情報の表示手段
をそれぞれ示している。なお、コンパイラ２２に相当の処理部と表示手段３２との距離は任意である。
【００３４】
以上の構成要素の中、
・パイプラインスケジューリング部２７が「前記対象部分の翻訳により生成される命令群についてパイプライン処理で用いられる命令の種別、順序、命令数を示すパイプライン情報を求める手段」に相当し、
・表示手段３２やリスタ部２９が「命令の種別ごとに時系列に前記パイプライン情報が示す処理手順がわかる画面を表示する出力手段」に相当する。
【００３５】
図７は、パイプライン情報の出力手順を示す説明図であり、その内容は次のようになっている。
（Ｓ１）入力部２３は、利用者がパイプライン情報の出力オプションをコマンドプロセッサに指定しているかどうかを判断し、「ＹＥＳ  」の場合は次のステップに進み、「ＮＯ」の場合は出力処理を終了する。
（Ｓ２）パイプラインスケジュ−リング部２７は、入力されたソ−スプログラム２１がベクトル演算を対象としているかどうかを判断し、「ＹＥＳ  」の場合は次のステップに進み、「ＮＯ」の場合は出力処理を終了する。
（Ｓ３）パイプラインスケジュ−リング部２７は、ソ−スプログラム２１のベクトル演算部分についてのプロセッサ情報（例えば解析後の命令の並び）を記憶手段３０に保存して、次のステップに進む。
（Ｓ４）リスタ部２９は、記憶手段３０にプロセッサ情報が保存されているかどうかを判断し、「ＹＥＳ  」の場合は次のステップに進み、「ＮＯ」の場合は出力処理を終了する。
（Ｓ５）リスタ部２９は、記憶手段３０にプロセッサ情報を出力して表示手段３２に画面表示し、出力処理を終了する。
【００３６】
なお、ステップ（Ｓ４）で、記憶手段３０にプロセッサ情報が保存されているかどうかを確認するのは、リスタ部２９の動作内容に基づいている。
【００３７】
例えば、リスタ部２９はコンパイル処理の中断後に再走行する機能を持っており、この再走行の際にパイプライン情報が記憶手段３０に保存されていないときの、当該記憶手段に対するリスタ部２９の処理を効率的に行なうためである。
【００３８】
図８は、コンピュ−タ読み取り可能な記録媒体からプログラムを読み取って実行するコンピュ−タシステムの概要を示す説明図であり、４はコンピュ−タシステム、４１はＣＰＵやディスクドライブ装置などを内蔵した本体部、４２は本体部４１からの指示により画像を表示するディスプレイ、４３は表示画面、４４はコンピュ−タシステム４に種々の情報を入力するためのキ−ボ−ド、４５は表示画面４３の任意の位置を指定するマウス、４６は外部のデ−タベ−ス（ＤＡＳＤなどの回線先メモリ）、４７は外部のデ−タベ−ス４６にアクセスするモデム、４８はＣＤ−ＲＯＭやフロッピ−ディスクなどの可搬型記録媒体をそれぞれ示している。
【００３９】
プログラムを格納する記録媒体としては、
・プログラム提供者側のデ−タベ−ス４６（回線先メモリ）
・可搬型記録媒体４８
・本体部４１側のＲＡＭやハ−ドディスク
などのいずれでもよく、当該プログラムは本体部４１にロ−デイングされてその主メモリ上で実行される。
【００４０】
【発明の効果】
本発明は、このように、ソ−スプログラム翻訳時のパイプライン処理の命令群に関するパイプライン情報を出力しているので、利用者はこの出力内容を参考にしながらプログラムチュ−ニングを効率的に実行でき、また、オブジェクトプログラムの実行性能を高めることができる。
【図面の簡単な説明】
【図１】本発明の、ソ−スプログラムと、それに対応のパイプライン情報の画面表示例とを示す説明図である。
【図２】本発明の、図１のソ−スプログラムに対するパイプライン処理の概念を示す説明図である。
【図３】本発明の、複合命令Ｕを使用する最適化制御行を図１のＤＯル−プに指定したソ−スプログラムを示す説明図である。
【図４】本発明の、▲１▼，▲２▼のチュ−ニング項目に対処した場合のパイプライン情報を示す説明図である。
【図５】本発明の、図１のＤＯル−プの繰り返し回数を半分にしたソ−スプログラムとそれに対応のパイプライン情報の画面表示例とを示す説明図である。
【図６】本発明の、コンパイラのシステム構成を示す説明図である。
【図７】本発明の、パイプライン情報の出力手順を示す説明図である。
【図８】本発明の、コンピュ−タ読み取り可能な記録媒体からプログラムを読み取って実行するコンピュ−タシステムの概要を示す説明図である。
【符号の説明】
１：ソ−スプログラム
２：ソ−スプログラム１のパイプライン情報
３：▲２▼のチュ−ニング項目に対処したソ−スプログラム
４：▲１▼，▲２▼のチュ−ニング項目に対処した場合のパイプライン情報
５：▲３▼のチュ−ニング項目に対処したソ−スプログラム
６：ソ−スプログラム５のパイプライン情報
１１：メモリ
１２：ロ−ド／ストアパイプライン（Ｌ／ＳＴパイプライン）
１３：ベクトルレジスタ
１４：乗算・加算パイプライン（Ｍ＆Ａパイプライン）
１５：除算パイプライン
１６：加算パイプライン
２１：ソ−スプログラム
２２：コンパイラ
２３：ソ−スプログラムの入力部
２４：解析部
２５：中間言語生成部
２６：最適化部
２７：パイプラインスケジュ−リング部
２８：コ−ド生成部
２９：パイプライン情報の出力機能を有するリスタ部
３０：バッファなどの記憶手段
３１：オブジェクトプログラム
３２：表示手段
４：コンピュ−タシステム
４１：ＣＰＵやディスクドライブ装置などを内蔵した本体部
４２：ディスプレイ
４３：表示画面
４４：キ−ボ−ド
４５：マウス
４６：外部のデ−タベ−ス（ＤＡＳＤなどの回線先メモリ）
４７：モデム
４８：ＣＤ−ＲＯＭやフロッピ−ディスクなどの可搬型記録媒体
【図１】
0003619861.tif 000002
【図２】
0003619861.tif 000003
【図３】
0003619861.tif 000004
【図４】
0003619861.tif 000005
【図５】
0003619861.tif 000006
【図６】
0003619861.tif 000007
【図７】
0003619861.tif 000008
【図８】
0003619861.tif 000009