JP2003108387A - ソフトウエア・パイプライニング処理方法及びソフトウエア・パイプライニング処理装置 - Google Patents

ソフトウエア・パイプライニング処理方法及びソフトウエア・パイプライニング処理装置

Info

Publication number
JP2003108387A
JP2003108387A JP2001298386A JP2001298386A JP2003108387A JP 2003108387 A JP2003108387 A JP 2003108387A JP 2001298386 A JP2001298386 A JP 2001298386A JP 2001298386 A JP2001298386 A JP 2001298386A JP 2003108387 A JP2003108387 A JP 2003108387A
Authority
JP
Japan
Prior art keywords
instruction
loop
execution
instructions
software
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
JP2001298386A
Other languages
English (en)
Inventor
Hideki Yasukawa
英樹 安川
Yukio Watanabe
幸男 渡辺
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2001298386A priority Critical patent/JP2003108387A/ja
Publication of JP2003108387A publication Critical patent/JP2003108387A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 従来よりもコード効率、スループットに優
れ、プロローグとエピローグにおける実行・非実行の判
断も確実にできるソフトウエア・パイプライニング処理
方法及びソフトウエア・パイプライニング処理装置を提
供することを目的とする。 【解決手段】 複数の行を対象としたループ部を有し前
記複数の行の少なくともいずれかが複数の命令を有する
プログラムを圧縮するに際して、前記複数の命令を有す
る前記行の少なくともいずれかを命令単位に分割して再
配列することにより、従来の行単位の圧縮よりもコード
効率およびスループットを改善することができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ソフトウエア・パ
イプライニング処理方法及びソフトウエア・パイプライ
ニング処理装置に関し、特に、論理演算や情報処理など
を実行するマイクロプロセッサなどの装置において従来
よりも大幅に圧縮したプログラミングが可能なソフトウ
エア・パイプライニング処理方法及びソフトウエア・パ
イプライニング処理装置に関する。
【0002】
【従来の技術】「ソフトウェア・パイプライニング(Sof
tware Pipelining)」とは、コード効率の悪いループ
(反復)プログラムを圧縮するためのプログラミング技
術であり、多少のハードウェアのサポートを受けること
により、ループのコード効率とスループットを改善する
ことができる。
【0003】論理演算や情報処理などを行うマイクロプ
ロセッサなどの装置には、与えられたソフトウエアに応
じた所定の演算処理を行うためのコンパイラが内蔵され
ている。そして、コンパイラがソフトウエアにおける命
令の依存関係を検出して、プロセッサが並列に実行しう
る命令コードを生成することは、特にループ処理におい
て大きな効果を発揮する。このようなループ処理の性能
を向上させる代表的なソフトウェア技術が、「ソフトウ
ェア・パイプライニング」である。
【0004】図7は、ソフトウエア・パイプライニング
を説明するための概念図である。
【0005】例えば、図7(a)に例示したように、1
回のループ処理の中で3つの命令コードが実行されると
した場合、ソフトウェア的にはこれを仮想的な3ステー
ジ・パイプラインと見なす。すべての命令が1クロック
で実行されると仮定すると、通常ではループ1回当たり
3クロック、4回ループの場合は、3クロック×4回=
12クロックが費やされる。
【0006】これに対して、ソフトウェア・パイプライ
ニングでは、ハードウェア(例えば、プロセッサ)の並
列処理機能を利用して、図7(b)に例示したように、
前のループが完了する前に、次のループが開始されるよ
うに命令コードが並べられる。各ループの間に依存関係
が無い場合は、前ループの最初の命令が第1ステージか
ら第2ステージへ移る時に、次ループの最初の命令コー
ドが送られるようにコードを配置することができる。
【0007】このように並列処理を利用することによ
り、ソフトウエアのコード効率やスループットを改善す
ることができ、効率的な処理が実現される。
【0008】一方、図7(b)に表した具体例の場合、
3〜4クロック目はすべてのステージがフル稼働してい
るが、ループ開始直後の1〜2クロック目では仮想パイ
プラインが徐々に命令コードで埋められはじめ、ループ
終了直前の5〜6クロック目では、逆に命令コードが排
出されている部分がある。
【0009】ソフトウェア・パイプライニングでは、こ
のように仮想パイプラインがフル稼働する期間(kerne
l:カーネル)の前の期間と後の期間とが存在する。本
願明細書においては、このカーネルより前の期間を特に
「プロローグ(Prologue)」、カーネルより後の期間を
「エピローグ(Epilogue)」と称する。
【発明が解決しようとする課題】しかしながら、従来の
ソフトウエア・パイプライニングは、インストラクショ
ン長の問題から行単位でのパイプライン化を行うため、
コード効率、スループットの両面において、依然として
無駄があった。
【0010】また、ソフトウェアパイプライニングで
は、プロローグにおけるn回のループ(n=世代数)
と、エピローグにおけるn回のループにおいては、実行
してはいけないインストラクションが必ず存在するた
め、これらを識別して的確に対処するための対策が必要
となる。
【0011】本発明は、かかる課題の認識に基づいてな
されたものであり、その目的は、従来よりもコード効
率、スループットに優れ、プロローグとエピローグにお
ける実行・非実行の判断も確実にできるソフトウエア・
パイプライニング処理方法及びソフトウエア・パイプラ
イニング処理装置を提供することにある。
【0012】
【課題を解決するための手段】上記目的を達成するた
め、本発明のソフトウエア・パイプライニング処理方法
は、複数の行を対象としたループ部を有し前記複数の行
の少なくともいずれかが複数の命令を有するプログラム
を圧縮するに際して、前記複数の命令を有する前記行の
少なくともいずれかを命令単位に分割して再配列するこ
とを特徴とする。
【0013】上記構成によれば、命令単位で圧縮するの
で、従来の行単位の圧縮よりもコード効率およびスルー
プットを改善することができる。
【0014】ここで、前記複数の命令を有する行の少な
くともいずれかが有する複数の命令は、圧縮後のプログ
ラムにおいてそれぞれ別の行に配置されるものとすれ
ば、「nop」命令などの無効命令を排除し、効率を最大
限とすることが可能となる。
【0015】またここで、圧縮後のプログラムを実行す
る際のプロローグ及びエピローグにおけるそれぞれの命
令の実行あるいは非実行を識別するためのパラメータを
付与することにより、命令単位で圧縮されたプログラム
をデータ・ハザードを生じさせることなく円滑に実行さ
せることができる。
【0016】またここで、前記命令の非実行をレジスタ
の禁止領域として指定することにより、ハードウエアに
対する指定を確実且つ容易に行うことができる。
【0017】一方、本発明のソフトウエア・パイプライ
ニング処理装置は、ソフトウエア・パイプライニング処
理により圧縮されたプログラムを実行する際にプロロー
グ及びエピローグにおけるそれぞれの命令の実行あるい
は非実行を判定する判定手段を備えたことを特徴とす
る。
【0018】上記構成によれば、実行あるいは非実行を
ハードウエアにおいて的確に判定することにより、ソフ
トウエア・パイプライニング処理を円滑に実行すること
ができる。
【0019】またここで、複数の行を対象としたループ
部を有し前記複数の行の少なくともいずれかが複数の命
令を有するプログラムを圧縮するソフトウエア圧縮手段
をさらに備え、前記ソフトウエア圧縮手段は、前記複数
の命令を有する前記行の少なくともいずれかを命令単位
に分割して再配列することを特徴とするものとすれば、
命令単位で圧縮するので、従来の行単位の圧縮よりもコ
ード効率およびスループットを改善することができる。
【0020】またここで、前記判定手段は、前記命令の
非実行をレジスタの禁止領域として指定するものとすれ
ば、ハードウエア的に確実且つ容易な指定が可能とな
る。
【0021】またさらに、前記判定手段は、ループ処理
の回数と、プロローグあるいはエピローグであることを
表すパラメータと、前記禁止領域となりうるレジスタの
番号と、を入力し、レジスタの番号と、そのレジスタに
関する命令の実行あるいは非実行を指示する信号と、を
出力するものとすれば、確実な判定が可能となる。
【0022】
【発明の実施の形態】以下、実際のプログラムを参照し
つつ、本発明のソフトウエア・パイプライニング処理が
どのように実行されるかを具体的に説明する。
【0023】図1は、本発明におけるソフトウエア・パ
イプライニング処理方法を説明するためのループプログ
ラムの一例を表す命令リストである。すなわち、同図に
は、パイプライニング処理前後のプログラムが表されて
いる。
【0024】また、図2は、比較例として、同様のルー
ププログラムを行単位のソフトウエア・パイプライニン
グにより圧縮した場合のプログラムを表す命令リストで
ある。
【0025】図1及び図2に例示したプログラムは、レ
ジスタに格納されたデータに対する演算、格納処理を繰
り返し行うものであり、ここで使用されている命令の意
味は以下の如くである。
【0026】addi :直値とレジスタの内容を足してレ
ジスタに保存する。 addi r1,r1,3 ..... (r1の中身の数値) + 3 をr1の中
身の数値とする。
【0027】add :指定されたレジスタの内容同士を
足してレジスタに保存する。 add r1,r1,r3 ..... (r1の中身の数値) + (r3の中身の
数値) をr1の中身の数値とする。
【0028】ld :指定されたメモリアドレスからデー
タを取ってきてレジスタに保存する。 ld r3,0(r1) ..... (r1の中身の数値) + 0 した数がメ
モリアドレスになるので、このアドレスの数値をメモリ
からloadし、r3の中身の数値とする。
【0029】st :指定されたレジスタの内容を指定さ
れたメモリアドレスへデータを格納する。 st r3,0(r2) ..... (r2の中身の数値) + 0 したメモリ
アドレスに対して、r3の中身の数値をstoreする。
【0030】mov :レジスタからレジスタへデータをコ
ピーする。 mov r11,r8 ..... r8の中身の数値をr11へコピーす
る。
【0031】nop :処理しない(non-operation)。
【0032】図1及び図2の左側にそれぞれ例示した圧
縮前の元プログラムにおいては、1行目の命令「addi r
1,r1,3 ld r3,0(r1)」から17行目の命令「Loop:add
i r2,r2,1 st r3,0(r2)」までの17行の命令を10
0回繰り返すループが組まれている。
【0033】ここで、随所に無効命令である「nop」が
設けられているのは、データ・ハザード(data hazard
s)などの障害を防ぐためである。すなわち、ある命令
の入力が直前の命令の結果に依存しているように場合
に、直前の命令がハードウエアによって確実に実行され
るまでの間、待機する必要がある。このために、各命令
の後に無効命令「nop」を適宜挿入して動作タイミング
を整合させている。
【0034】しかし、このようなループプログラムの場
合、実行命令の前後に複数の nop命令を挿入する必要が
あるため、必然的にコード効率が低下する。圧縮前の元
プログラムにおいては、総命令数34に対して実行命令
の数は8であり、残りの26は無効命令(nop)であ
る。つまり、コード効率は、8/34すなわち23.5
%と低い。また、スループットすなわち1ループあたり
の命令行数も17行である。
【0035】これに対して、まず、比較例として図2に
表したように行単位でソフトウエア・パイプライニング
処理を行った場合について説明する。
【0036】行単位でパイプライニング処理を行う場合
には、元プログラムの行の内容は実質的に崩さずに、レ
ジスタを切り替えすることによりプログラムを圧縮す
る。すなわち、図2に例示したパイプライニング処理の
場合、元プログラムが第1レジスタ乃至第5レジスタま
でを用いているのに対して、圧縮プログラムでは、さら
に第6乃至第11レジスタを用いることにより並列処理
を実行している。
【0037】具体的にその内容を見ると、圧縮後のプロ
グラムの第1〜第4行目は、元プログラムと同一であ
る。
【0038】その次に、元プログラムの第12行目の命
令文「add r3,r3,r5 nop」に対応する命令を、圧縮後
の第5行目に命令「add r6,r6,r8 nop」と変形して配
置している。これは、レジスタr3、r5に関する命令
は、それぞれ第1行目、第3行目において発行されてお
り、ハードウエアの処理速度を考慮すると、第5行目に
おいて同一のレジスタr3、r5に関する命令を発行し
た場合に、データ・ハザードが生ずる虞があるからであ
る。このため、レジスタをr6及びr8に切り替えて同
様の演算処理を実行させる。
【0039】その次に、無効命令「nop」を2回発行す
る。
【0040】しかる後に、圧縮後のプログラムの第7行
目において、元プログラムの第7行目の命令文「add r
3,r3,r4 nop」が配置される。元プログラムを見れば分
かるように、この段階においては、レジスタr3、r4
に関するハードウエアの実行処理が確実に終了してお
り、データ・ハザードが生ずることはないからである。
【0041】その後、、無効命令「nop」を4回発行す
る。
【0042】次に、元プログラムの第17行目を、圧縮
後のプログラムの第10行に移行している。但し、ここ
で、第5行目の命令においてレジスタを切り替えたこと
に対応し、st命令の実行パラメータを「st r3, 0(r2)」
から「st r6, 0(r2)」に修正している。つまり、レジス
タr3をレジスタr6に切り替えている。
【0043】しかる後に、圧縮後のプログラムの第11
行目においては、move命令「mov r6,r3 mov r8,r5」が
発行されている。これは、次のループに備えて、演算済
みのデータを別のレジスタに待避させるために、move命
令を発行してレジスタの切り替え処理を実行する必要が
あるからである。
【0044】以上、図2に関して説明したように、行単
位でソフトウエア・パイプライニング処理を実行した場
合には、無効命令「nop」を大幅に削減することはでき
ない。また、元プログラムのループボディ(loop bod
y)が17行であったのに対して、処理後のループボデ
ィを11行までにしか圧縮することができない。つま
り、プログラムのスループットは17から11に改善さ
れるに留まる。
【0045】また、コード効率、すなわち総命令数に対
する実行命令(無効命令でない命令)数の割合も、2
3.5%(8/34)から36.4%(8/22)への
改善に留まる。
【0046】またさらに、この比較例においては、行単
位のソフトウエア・パイプライニング処理を行ったため
に、元プログラムには無かった「mov」命令が2つ発生
してしまっている。
【0047】また一方、別の見方をすると、このプログ
ラム自体は、そもそも、「ld」→「add」→「add」→
「st」の4命令で一連の処理が行われている。従って、
この観点からは、スループット(すなわち、1つの結果
データがストア(store)されるまでのサイクル数)
を、「4」に近づけることが理想である。
【0048】そこで本発明においては、「行単位」での
ソフトウェア・パイプライニングではなく、「命令単
位」のソフトウェア・パイプライニングを行う。こうす
ることにより、コード効率やスループットのさらなる改
善が可能となる。
【0049】圧縮後のプログラム(図1)を見ると、ま
ず第1行目の命令文「addi r1,r1,3ld r3,0(r1)」は元
プログラムと同一である。
【0050】次に、第2行目において、元プログラムの
「nop」の代わりに第17行目の「addi r2,r2,1」をま
ず実行させ、続けて元プログラムの2行目と同様の「ld
r4,1(r1)」を実行させる。
【0051】次に、第3行目において命令文「add r3
[1],r3[1],r4[1] ld r5,2(r1)」を発行する。これは、
元プログラム第7行目の命令「add r3,r3,r4」と第3行
目の命令「ld r4,1(r1)」にそれぞれ対応する。
【0052】但し、レジスタr3及びr4に関しては、
第1行目と第2行目で演算処理を実行させている。従っ
て、これら直後に第3行目の命令を実行させるとデータ
・ハザードが生ずる虞がある。このため、1回目のルー
プではこの命令を実行させず、2回目のループにおいて
実行させる。
【0053】そして、この命令に付与されたカギ括弧
([ ])つきのパラメータが、実行・非実行を判定す
るためのパラメータである。すなわち、カギ括弧のパラ
メータは、ループの繰り返し数(世代数)を表し、1回
目のループの世代数は「0」、2回目のループの世代数
は「1」となる。
【0054】例えば、パラメータ[2]が付されている
場合には、プロローグにおいて、その命令は1回目及び
2回目のループにおいては実行せず、3回目のループに
おいて始めて実行される。
【0055】つまり、このカギ括弧つきのパラメータ
が、圧縮後のプログラムのプロローグ及びエピローグに
おける、実行・非実行を判定するためのパラメータとな
る。
【0056】第3行目の命令文の場合、命令「add r3
[1],r3[1],r4[1]」は、2回目のルーだにおいて実行さ
れることとなる。次に、圧縮後のプログラムの第4行目
において、命令文「add r3[2],r3[2],r5[2] st r3[4],0
(r2)」が配置される。これらの命令は、元プログラム第
12行目の「add r3,r3,r5」と第17行目の「st r3,0
(r2)」に対応する。但し、データ・ハザードを防ぐた
め、カギ括弧付きのパラメータで実行されるべきループ
世代を指定してレジスタ・ローテーションを実行してい
る。
【0057】図1に例示したように命令単位で元プログ
ラムを圧縮すれば、無効命令「nop」を完全に排除し、
コード効率100%、スループット4を達成することが
できる。
【0058】図3は、図1に表した圧縮後のコードが実
際に実行される様子を表した説明図である。
【0059】同図に表したように、1回目のループにお
いては、カギ括弧のパラメータが付された命令は実行さ
れない。そして、2回目のループにおいては、パラメー
タ「[1]」が付されている命令が実行され、3回目のル
ープにおいては、パラメータ「[2]」が付されている命
令も実行される。そして、5回目のループにおいて第4
行目の命令「st r3[4],0(r2)」も実行されると、プロロ
ーグが終了する。
【0060】一般的にいうと、最初のn回(本具体例で
はn=4)のループの間は、実行されるべきでないイン
ストラクション(命令)が必ず存在する。これがプロロ
ーグに対応する。また同様に、ループの終わりにもエピ
ローグが存在する。
【0061】また、図1のプログラムの場合、各ループ
において、ループラベルの行に到達すると、レジスタロ
ーテーションが行われる。
【0062】図4は、レジスタローテーションを説明す
るための概念図である。本具体例では、プログラム中の
r3[1]〜r5[1]が2回目のループにおいて論理
レジスタ番号r6〜r8に割り当てられ、以下、r3
[2]〜r5[2]は論理番号r9〜r11に割り当て
られ・・・の如くシフトされるので、レジスタローテー
ションの際に物理レジスタ番号は図4に表したように
「ずれて」いくことになる。従って、ループの世代に応
じて、使用するレジスタと、使用してはいけないレジス
タが変わることとなる。
【0063】図4に表した「禁止領域」が、それぞれの
ループ中で使用してはいけないレジスタの範囲である。
本発明においては、この禁止領域をハードウエアにより
判定する。
【0064】図5は、この禁止領域を検出するためのス
テートマシンを表す模式図である。
【0065】すなわち、この状態遷移図においては、プ
ロローグ状態(Prologue)、反復状態(Repeat)、エピ
ローグ状態(Epologue)、及び非反復状態(NonRpeat)
の4種類の状態が設定されている。
【0066】プロローグ状態(Prologue)においては、
「Loop&PRO!=0」すなわち、ループの中にあり且つパラ
メータ「PRO」がゼロでない場合には、「PRO--」すなわ
ちパラメータ「PRO」が1だけマイナスされて、プロロ
ーグ状態に戻る。一方、「Loop&PRO==0」すなわち、ル
ープの中にあり且つパラメータ「PRO」がゼロとなった
場合には、パラメータ「REP」を1だけマイナスし、反
復状態に遷移する。
【0067】次に、反復状態(Repeat)においては、
「Loop&REP!=0」すなわち、ループの中にあり且つパラ
メータ「REP」がゼロでない場合には、「REP--」すなわ
ちパラメータ「REP」を1だけマイナスして、反復状態
に戻る。一方、「Loop&REP==0」すなわち、ループの中
にあり且つパラメータ「REP」がゼロとなった場合に
は、パラメータ「EPI」を1だけマイナスしてエピロー
グ状態に遷移する。
【0068】また一方、反復状態(Repeat)において、
「Loop&REP==0&EPI==0」すなわち、ループの中にあり且
つパラメータ「REP」がゼロとなり且つパラメータ「EP
I」もゼロとなった場合には、非反復状態(Non Rpeat)
に遷移する。
【0069】また、エピローグ状態(Epilogue)におい
ては、「Loop&EPI!=0」すなわち、ループの中にあり且
つパラメータ「EPI」がゼロでない場合には、「EPI--」
すなわちパラメータ「EPI」を1だけマイナスして、エ
ピローグ状態に戻る。一方、「Loop&EPI==0」すなわ
ち、ループの中にあり且つパラメータ「EPI」がゼロと
なった場合には、非反復状態に遷移する。
【0070】一方、非反復状態(Non Repeat)において
は、「Rpeat&PRO!=0」すなわち、リピート状態にあり且
つパラメータ「PRO」がゼロでない場合には、「PRO--」
すなわちパラメータ「PRO」を1だけマイナスして、プ
ロローグ状態に遷移する。一方、「Repeat&PRO==0」す
なわち、リピート状態にあり且つパラメータ「PRO」が
ゼロとなった場合には、「PEP--」すなわちパラメータ
「REP」を1だけマイナスして、反復状態に遷移する。
【0071】図5に表したステートマシンにおいては、
プロローグ状態とエピローグ状態にあることが、実際の
ループプログラムにおけるプロローグ、エピローグ中で
あることに対応している。
【0072】そして、プロローグ状態またはエピローグ
状態にある時には、図4に表したように各レジスタが禁
止領域にあるかどうかを判定する。
【0073】図6は、このような判定を行う回路構成の
具体例を表す模式図である。すなわち、この具体例の場
合、圧縮後のプログラムのループに入る手前で「setl
p」命令を置くことを仮定している。「setlp」命令は、
ループの手前であらかじめループ情報として、5個のパ
ラメータ「ROT,FROM,TO,PRO,EPI」を与える命令であ
り、この情報によって図4に表したような論理レジスタ
番号に対する物理レジスタ番号の「割り当て」が決定さ
れる。
【0074】具体的には、パラメータ「ROT」は繰り返
しループ数、パラメータ「FROM」は禁止領域となりうる
レジスタの論理番号の最小値、パラメータ「TO」は禁止
領域となりうるレジスタの論理番号の最大値、パラメー
タ「PRO」はプロローグのループ数、パラメータ「EPI」
はエピローグのループ数をそれぞれ表す。
【0075】ちなみに図4は、「setlp」命令として、
「setlp 3,3,11,2,2」を与えた場合のレジスタローテー
ションを例示したものである。
【0076】そして、図6に例示した回路構成において
は、「setlp」命令として5個のパラメータ「ROT,FROM,
TO,PRO,EPI」を入力し、遷移状態図に表した4つの状
態、すなわちプロローグ状態(Prologue)、反復状態
(Repeat)、エピローグ状態(Epologue)、及び非反復
状態(NonRpeat)と、ループ状態(Loop)及びリピート
状態(Repeat)のいずれにあるかを入力する。
【0077】そして、入力されたこれらパラメータ及び
状態に応じて、レジスタ番号(Resistro No.)とそれに
対応する非実行(invalidate)信号とを発生する。この
ようにすれば、入力されたパラメータと状態とを判定し
て、非実行(invalidate)であるレジスタをターゲット
(target)に持つ命令は、結果の反映が無視されること
になる。
【0078】その結果として、本発明における命令単位
のソフトウエア・パイプライニングを実行する際に、プ
ロローグ及びエピローグにおける命令の実行・非実行を
確実に判断して適正なループ処理を行うことができるよ
うになる。
【0079】以上、具体例を参照しつつ本発明の実施の
形態について説明した。しかし、本発明は、これらの具
体例に限定されるものではない。
【0080】例えば、図1に例示したプログラムはひと
つの具体例に過ぎず、この他にも種々の命令を用いた多
種多様なプログラムについても本発明を同様に適用して
同様の効果を得ることができる。
【0081】また、図6に例示した回路構成について
も、非実行を判定するためのひとつの具体例に過ぎず、
同様の判定動作が可能なあらゆる構成は本発明の範囲に
包含される。
【0082】
【発明の効果】以上詳述したように、本発明によれば、
命令単位でソフトウエア・パイプライニング処理を行う
ことにより、コード効率、スループットを大幅に改善す
ることが可能となる。
【0083】またさらに、本発明によれば、このように
圧縮されたプログラムのプロローグ及びエピローグにお
いて各インストラクションの実行・非実行をハードウエ
アにより確実に判定することにより、的確に実行させる
ことができる。
【0084】高周波のマイクロプロセッサ設計では、イ
ンターロック機構がクリティカルパスとなって周波数を
抑制する可能性がある。このため、プログラム中のイン
ストラクションのレイテンシをソフトウェアであらかじ
め読み切ることでハードウエアのロック機構を除くとい
うアーキテクチャが有力となる可能性がある。このよう
なプロセッサでは無効命令「nop」の頻度が特に高いた
め、ソフトウェア・パイプライニングを基本とした圧縮
技術の導入は不可欠であり、コード効率、スループット
の高い本発明は非常に有効となる点で産業上のメリット
は多大である。
【図面の簡単な説明】
【図1】本発明におけるソフトウエア・パイプライニン
グ処理方法を説明するためのループプログラムの一例を
表す命令リストである。
【図2】比較例として、図1と同様のループプログラム
を行単位のソフトウエア・パイプライニングにより圧縮
した場合のプログラムを表す命令リストである。
【図3】図1に表した圧縮後のコードが実際に実行され
る様子を表した説明図である。
【図4】レジスタローテーションを説明するための概念
図である。
【図5】レジスタの禁止領域を検出するためのステート
マシンを表す模式図である。
【図6】レジスタの禁止領域の判定を行う回路構成の具
体例を表す模式図である。
【図7】ソフトウエア・パイプライニングを説明するた
めの概念図である。
【符号の説明】
Prologue プロローグ状態 Pepeat 反復状態 Epilogue エピローグ状態 NonRepeat 非反復状態
───────────────────────────────────────────────────── フロントページの続き (72)発明者 渡辺 幸男 神奈川県川崎市幸区小向東芝町1番地 株 式会社東芝マイクロエレクトロニクスセン ター内 Fターム(参考) 5B013 BB07 5B081 CC24 CC32

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】複数の行を対象としたループ部を有し前記
    複数の行の少なくともいずれかが複数の命令を有するプ
    ログラムを圧縮するに際して、前記複数の命令を有する
    前記行の少なくともいずれかを命令単位に分割して再配
    列することを特徴とするソフトウエア・パイプライニン
    グ処理方法。
  2. 【請求項2】前記複数の命令を有する行の少なくともい
    ずれかが有する複数の命令は、圧縮後のプログラムにお
    いてそれぞれ別の行に配置されることを特徴とする請求
    項1記載のソフトウエア・パイプライニング処理方法。
  3. 【請求項3】圧縮後のプログラムを実行する際のプロロ
    ーグ及びエピローグにおけるそれぞれの命令の実行ある
    いは非実行を識別するためのパラメータを付与すること
    を特徴とする請求項1または2に記載のソフトウエア・
    パイプライニング処理方法。
  4. 【請求項4】前記命令の非実行をレジスタの禁止領域と
    して指定することを特徴とする請求項3記載のソフトウ
    エア・パイプライニング処理方法。
  5. 【請求項5】ソフトウエア・パイプライニング処理によ
    り圧縮されたプログラムを実行する際にプロローグ及び
    エピローグにおけるそれぞれの命令の実行あるいは非実
    行を判定する判定手段を備えたことを特徴とするソフト
    ウエア・パイプライニング処理装置。
  6. 【請求項6】複数の行を対象としたループ部を有し前記
    複数の行の少なくともいずれかが複数の命令を有するプ
    ログラムを圧縮するソフトウエア圧縮手段をさらに備
    え、 前記ソフトウエア圧縮手段は、前記複数の命令を有する
    前記行の少なくともいずれかを命令単位に分割して再配
    列することを特徴とする請求項5記載のソフトウエア・
    パイプライニング処理装置。
  7. 【請求項7】前記判定手段は、前記命令の非実行をレジ
    スタの禁止領域として指定することを特徴とする請求項
    6または7に記載のソフトウエア・パイプライニング処
    理装置。
  8. 【請求項8】前記判定手段は、ループ処理の回数と、プ
    ロローグあるいはエピローグであることを表すパラメー
    タと、前記禁止領域となりうるレジスタの番号と、を入
    力し、レジスタの番号と、そのレジスタに関する命令の
    実行あるいは非実行を指示する信号と、を出力すること
    を特徴とする請求項7記載のソフトウエア・パイプライ
    ニング処理装置。
JP2001298386A 2001-09-27 2001-09-27 ソフトウエア・パイプライニング処理方法及びソフトウエア・パイプライニング処理装置 Pending JP2003108387A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001298386A JP2003108387A (ja) 2001-09-27 2001-09-27 ソフトウエア・パイプライニング処理方法及びソフトウエア・パイプライニング処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001298386A JP2003108387A (ja) 2001-09-27 2001-09-27 ソフトウエア・パイプライニング処理方法及びソフトウエア・パイプライニング処理装置

Publications (1)

Publication Number Publication Date
JP2003108387A true JP2003108387A (ja) 2003-04-11

Family

ID=19119296

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001298386A Pending JP2003108387A (ja) 2001-09-27 2001-09-27 ソフトウエア・パイプライニング処理方法及びソフトウエア・パイプライニング処理装置

Country Status (1)

Country Link
JP (1) JP2003108387A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013200873A (ja) * 2012-03-26 2013-10-03 Samsung Electronics Co Ltd ループのプロローグまたはエピローグの無効演算を処理する装置及び方法
JP2014010832A (ja) * 2012-06-29 2014-01-20 Analog Devices Inc ステージド・ループ命令

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013200873A (ja) * 2012-03-26 2013-10-03 Samsung Electronics Co Ltd ループのプロローグまたはエピローグの無効演算を処理する装置及び方法
KR101910934B1 (ko) * 2012-03-26 2018-12-28 삼성전자 주식회사 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 장치 및 방법
JP2014010832A (ja) * 2012-06-29 2014-01-20 Analog Devices Inc ステージド・ループ命令
CN103530088A (zh) * 2012-06-29 2014-01-22 美国亚德诺半导体公司 分级循环指令

Similar Documents

Publication Publication Date Title
EP1160663B1 (en) Processor for executing software pipelined loops and corresponding method
JP2938426B2 (ja) 順不同ロード命令とストア命令との干渉を検出回復するための方法及び装置
US5303355A (en) Pipelined data processor which conditionally executes a predetermined looping instruction in hardware
JP4841861B2 (ja) 演算処理装置及びデータ転送処理の実行方法
JPH06274352A (ja) コンパイラ、及びデータ処理装置
JPH06214799A (ja) コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置
JP2004171573A (ja) 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ
US20030120882A1 (en) Apparatus and method for exiting from a software pipeline loop procedure in a digital signal processor
US20030120900A1 (en) Apparatus and method for a software pipeline loop procedure in a digital signal processor
US20030120905A1 (en) Apparatus and method for executing a nested loop program with a software pipeline loop procedure in a digital signal processor
JP2003108387A (ja) ソフトウエア・パイプライニング処理方法及びソフトウエア・パイプライニング処理装置
JP5233078B2 (ja) プロセッサ及びその処理方法
KR102379886B1 (ko) 벡터 명령 처리
US7000135B2 (en) Clock control method and information processing device employing the clock control method
JP3182591B2 (ja) マイクロプロセッサ
US20030120899A1 (en) Apparatus and method for processing an interrupt in a software pipeline loop procedure in a digital signal processor
KR19990072645A (ko) 프로그램제어유닛의명령페치장치및방법
US20030182511A1 (en) Apparatus and method for resolving an instruction conflict in a software pipeline nested loop procedure in a digital signal processor
CA2333563C (en) Method and apparatus for distributing commands to a plurality of circuit blocks
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
JP3014682B2 (ja) プログラム制御方法及び装置
US20050216708A1 (en) Processor for performing context switching, a method for performing context switching, a computer program for perform context switching
CN113407240B (zh) 一种C64x+ DSP软件流水循环缓冲机制的模拟方法
EP0933704B1 (en) Data processor with protected non-maskable interrupt
JP3743155B2 (ja) パイプライン制御型計算機

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20040528