JP3639557B2 - マイクロプロセッサ用遅延スロット制御メカニズム - Google Patents
マイクロプロセッサ用遅延スロット制御メカニズム Download PDFInfo
- Publication number
- JP3639557B2 JP3639557B2 JP2001500949A JP2001500949A JP3639557B2 JP 3639557 B2 JP3639557 B2 JP 3639557B2 JP 2001500949 A JP2001500949 A JP 2001500949A JP 2001500949 A JP2001500949 A JP 2001500949A JP 3639557 B2 JP3639557 B2 JP 3639557B2
- Authority
- JP
- Japan
- Prior art keywords
- instructions
- instruction
- microprocessor
- delay
- idsi
- 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
- 230000007246 mechanism Effects 0.000 title description 2
- 238000000034 method Methods 0.000 claims description 61
- 230000001419 dependent effect Effects 0.000 claims description 4
- 230000008901 benefit Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
Images
Classifications
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Description
(発明の分野および背景)
本発明は、種々の数の有用な命令を遅延スロットに挿入する方法に関し、具体的には、有用な命令が遅延スロットに入れられることを可能にしながら、実質的には実際のノップ(nop)(動作なし)命令をプログラム自体に入れることなしに、多重サイクル命令を実行するために、自動的且つ様々に遅延スロットに挿入されるべき追加のノップ命令数を判定する方法に関する。本発明の方法は、フェッチ動作数が減少するため、消費電力を節約すると共に、プログラムを格納するのに必要なメモリ内の空間の量を減らす。これらの利点は、依然遅延スロットが使用されることを可能にしながら達成される。
【0002】
マイクロプロセッサは、約25年前に導入されて、多くの異なるタイプの技術において急速に増加してきた。リアルタイムのマイクロプロセッサ技術の進歩は、特に通信産業においては、携帯電話、留守番電話およびオーディオシステムなどの高度なデバイスの大量生産を後押ししてきた。開発および生産のコストを下げながら、技術の性能を上げるために、これらのデバイスの生産のより効率的な方法が、継続的に追求されている。
【0003】
マイクロプロセッサは、人間のプログラマまたはコードジェネレータによって書かれるプログラムコードから得られる機械コード命令を実行する。現代のマイクロプロセッサの命令のほとんどは、シングルクロックサイクル内で実行される。しかしながら、いくつかの命令は、実行するために1より多いクロックサイクルを必要とし、多重サイクル命令と呼ばれる。典型的な多重サイクル命令は、条件付きブランチ命令、およびその他のプログラムフロー命令を含む。多重サイクル命令が効力を発する前に経過するクロックサイクルが浪費される。これらのクロックサイクルは、遅延スロットと呼ばれる。
【0004】
図1は、多重サイクル命令14に必要な3つの空のサイクル12を挿入することによって浪費される時間を示す、従来技術のプログラムの命令シーケンス10を示す。各空のサイクル12は、シングルサイクル命令16を実行するという結果をもたらさず、多重サイクル命令14の実行を可能にするためにのみ挿入される。明らかに、命令シーケンス10は、多重サイクル命令14の実行を可能にする、相対的に非能率的な方法を表す。
【0005】
マイクロプロセッサのパイプラインアーキテクチャは、より高い効率のためにより多い命令を平行して実行するように開発された。パイプライン化されたマイクロプロセッサは、いくつかの命令を同時に実行することが可能であるため、マイクロプロセッサが空のタイムスロット中にアイドル状態になるということがない。多重サイクル命令の実行に必要な、以前には浪費されていた時間を使用するために、他の命令が人間のプログラマによって遅延スロットに挿入され得る。マイクロプロセッサは、遅延スロット中にこれらの遅延スロット命令を個々にフェッチし、これらの命令をパイプにロードし、次いで命令を同時に実行する。これらの挿入された命令は通常、遅延スロットが元々生成された多重サイクル命令に関係しない。代わりに、これらの命令は、制御という仕事、続く命令のロードの登録など、その他のタスクを実行する。
【0006】
図2は、従来技術によるパイプライン化されたアーキテクチャを有するマイクロプロセッサによって実行されるように書き換えられた、図1のプログラムを示す。ここで、プログラムの命令シーケンス18は、多重サイクル命令14用の遅延スロット中に、サイクル4、5、6において実行される3つの命令20を特徴とする。それゆえ、図2のプログラムは、図1のプログラムに比べ、より効率的に実行される。
【0007】
しかしながら、現在パイプライン化されているマイクロプロセッサアーキテクチャは、多数の弱点を有している。例えば、有用な命令が遅延スロットに挿入されない場合には、時間とプログラムを保持するメモリ空間の双方が、多重サイクル命令によって浪費される。すべてではなく一部の遅延スロットのみが有用な命令によって満たされる場合には、現在使用されていない遅延スロットがノップ(動作なし)命令をロードされる必要がある。ノップ命令は、メモリ空間を必要とするが、いかなる有用な機能をも実行しない。このようなノップ命令が頻繁に必要とされるため、遅延スロットの問題は単に減少するのみであり、解決はされない。それゆえ、追加のメモリ空間の必要性と浪費される時間量との間のバランスという問題がある。
【0008】
浪費される時間とメモリ空間の問題に加えて、プログラマの必要性もまた考慮されなければならない。プログラマは、性能を最適化するために、できるだけ多くの遅延スロットを有用な命令で満たすべきであるが、有用な命令を見つけることが簡単であることはほとんどない。有用な命令をすべての遅延スロットに挿入するプロセスは、時間がかかるものであり、文書化および維持することが困難である。プログラマは、多くの時間を、有用な命令を探して遅延スロットに入れることに費やす。さらに、Cコンパイラなどの高水準言語コンパイラもまた、遅延スロットを有用な命令で満たそうと試みる必要がある。最適化アルゴリズムをもってしても、このようなコンパイラは、しばしばすべての遅延スロットを使用することができず、それゆえにプログラムを格納するために必要な追加の空間を浪費している。
【0009】
プログラムフロー命令は、このような多重サイクル命令の1例であって、典型的な通信用途において、平均、18シングルサイクル命令ごとに、1プログラムフロー命令の割合で起こる。この割合は、平均的なプログラムフロー命令が、以下の式1によって、3つの必要なノップ命令を生成することを知りながら、予測される浪費されるメモリ量を計算するために使用され得る。
【0010】
【数1】
式1は、例えば、サイズが18Kbであるプログラムが、他のタイプの多重サイクル命令によって浪費されるメモリを含まずに、3Kbのメモリを浪費していることを示す。このようなメモリの浪費は、生産コストを増加させるとともに、関連のデバイスの動作の効率を下げる。それゆえ、多重サイクル命令は、時間およびプログラムメモリを浪費すること、および遅延スロットを命令に使用しようとする際に、プログラマによって要求される時間量を増やすことを含め、3股の問題をもたらす。
【0011】
多重サイクル命令が起こる相対的に高い割合は、パイプライン化されたマイクロプロセッサアーキテクチャの欠点を強調させる。現在、多重サイクル命令を処理する2つの異なる方法が、従来技術において利用可能である。第1の方法は、いかなる遅延スロットをも使用せず、それゆえに時間を浪費するがメモリを節約することを含む。これはマイクロプロセッサが、プログラムにノップ命令を明示的に含ませることなしに、ノップ命令を実行し得るからである。第2の方法は、実際の命令またはノップ命令を挿入することにより、すべての遅延スロットが使用されることを必要とする。ノップ命令が挿入される場合には、必要とされるメモリ空間が増加する。しかしながら、実際の命令が効率的に挿入される場合、プログラムを実行するのに必要な時間量が減少する。
【0012】
第1の従来技術の方法は、プログラムの実行に高度な性能(時間に関して)が必要とされない場合に、選択される。プログラムの実行の性能、そしてそれゆえにプログラムが実行されるのに必要な時間量ではなく、メモリの節約とプログラマによるプログラミングの容易さが優先される。第2の従来技術の方法は、効率的に実行される必要がある、高度な性能のアプリケーション向けに設計される。したがって、プログラムの急速で効率的な実行に興味のあるプログラマは、有用な命令をすべての遅延スロットに挿入する必要がある。このタスクは、長ったらしく退屈なタスクであるが、高い実行効率を得る可能性がある。したがって、このタスクは、すべての遅延スロットが使用される場合には、プログラムを実行するのに必要な時間量を減少させ得、すべての遅延スロットが有用に使用されるわけではない場合には、プログラムを格納するのに必要なメモリ量が増大するという不利益を生じさせ得る。遅延スロットのすべてを使用することに失敗した場合、ノップ命令が残りの使用されていない遅延スロットのすべてに挿入されることになる。それゆえ、多重サイクル命令を処理する従来技術の方法のうち、3つすべての利点、すなわちスピード、メモリの経済的且つ効率的な使用、およびプログラミングの容易さを提供するものはない。
【0013】
それ故に、人間のプログラマまたは高水準言語コンパイラによって、有用な命令のみを明示的に遅延スロットに挿入させることで、遅延スロットをより効率的に処理する方法であって、同時に、性能を改善し、開発時間およびコストを下げ、このような有用な命令を保持する追加のメモリ空間の必要性とプログラム実行中にこのような内在的なノップ命令によって浪費される時間量との最適なバランスを提供する方法が必要とされ、それを有することが有用である。これらの方法を用いて、内在的なノップ命令が、マイクロプロセッサの動作中に実質的に自動のプロセスに残っている遅延スロット数を補完するために挿入され、かつマイクロプロセッサに関連付けられたメモリ空間がより効果的に使用される。
【0014】
(発明の要旨)
本発明は、動作中のマイクロプロセッサによって、動的な数の内在的なノップ命令を挿入する方法に関する。内在的なノップ命令は、プログラム自体に実際のノップ命令を入れることなしに、マイクロプロセッサによって実行される動作なし命令である。本発明の方法は、適切な数の内在的なノップ命令が、多重サイクル命令が起こるごとに、自動的に計算および実行されることを可能にする。以下、ノップ命令という用語は、プログラマまたはコードジェネレータの直接的な介入なしに起こるプロセスを自動的に示す。適切な内在的なノップ命令数は、必要な遅延スロットの総数から、挿入された遅延スロット命令(IDSI)数を減算することによって、自動的にマイクロプロセッサによって計算される。
【0015】
本発明の方法は、プログラムを格納するのに必要なメモリ内の空間量を減少させると共に、フェッチ動作数が減少するために、消費電力を節約するという利点を有する。さらに、本発明は、このような有用な命令を保持する追加のメモリ空間の必要性と、プログラム実行中に浪費される時間量との最適なバランス、およびノップ命令の挿入と、人間のプログラマが有用な遅延スロット命令を挿入するのに必要な追加の時間とのバランスを提供する。挿入された遅延スロット命令数は、好適にはアセンブラによってカウントされ、次いでマイクロプロセッサにとって利用可能となる。より好適には、この数は、アセンブラによってコード化された命令内の遅延スロットフィールド内に入れられ、次いでマイクロプロセッサによって遅延スロットフィールドから取り出される。それゆえに、本発明の方法によって、マイクロプロセッサは、図1の従来技術とは対照的に、追加のメモリリソースを必要とせず、そしてプログラマまたは高水準言語コンパイラなどのコードジェネレータに、使用されていない遅延スロットの各々にノップ命令を挿入させることを強制することなしに、自動的に必要数の内在的なノップ命令を挿入し、多重サイクル命令が効力を発するのに必要なサイクルを満たすことが可能になる。多重サイクル命令用に挿入された遅延スロット命令(IDSI)は、内在的か内在的でないかに関わらず、ノップ命令ではないという点で有用な命令である。
【0016】
本発明によると、複数の命令を実行中に、マイクロプロセッサによって必要数のノップ(動作なし)命令を自動的に挿入する方法が提供される。複数の命令は、少なくとも1つの多重サイクル命令を含み、遅延スロットの総数が、少なくとも1つの多重サイクル命令に必要である。本方法は、(a)少なくとも1つの多重サイクル命令に関連した、挿入された遅延スロット命令(IDSI)数を判定する工程と、(b)遅延スロットの総数からIDSI数を、マイクロプロセッサによって減算することによって、必要数のノップ命令を計算する工程と、(c)マイクロプロセッサによって必要数のノップ命令を実行する工程とを含む。
【0017】
好適には、少なくとも1つの多重サイクル命令に必要な遅延スロットの総数は、ハードウェア依存型である。また好適には、本方法は、複数の命令を受け取るアセンブラを提供し、複数の命令をマイクロプロセッサによる実行のために準備する工程をさらに含み、アセンブラを提供する工程が工程(a)が実行される前に実行され、工程(a)は、(i)アセンブラによってIDSI数をカウントする工程と、(ii)IDSI数をマイクロプロセッサに伝達する工程とをさらに含む。より好適には、IDSI数をマイクロプロセッサに伝達する伝達する工程が、(I)少なくとも1つの多重サイクル命令内に遅延スロットフィールドを提供する工程と、(II)アセンブラによってIDSI数を遅延スロットフィールドに入れる工程と、(III)マイクロプロセッサによってIDSI数を遅延スロットフィールドから取り出す工程とをさらに含む。
【0018】
本発明の別の実施形態によると、複数の命令を実行中に、マイクロプロセッサによって、必要数のノップ命令を自動的に挿入する方法が提供される。複数の命令は、少なくとも1つの多重サイクル命令を含み、本方法は、(a)複数の命令を受け取るアセンブラを提供する工程と、(b)マイクロプロセッサに、少なくとも1つの多重サイクル命令に必要な遅延スロットの総数を提供する工程と、(c)アセンブラによって、少なくとも1つの多重サイクル命令に関連したIDSI数を判定する工程と、(d)IDSI数をマイクロプロセッサに伝達する工程と、(e)遅延スロットの総数からIDSI数を、マイクロプロセッサによって減算することによって、必要数のノップ命令を計算する工程と、(f)マイクロプロセッサによって必要数のノップ命令を実行する工程とを含む。以下、高水準言語コンパイラという用語は、アセンブリプログラミング言語よりハイレベルな、CまたはC++などのプログラミング言語のためのコンパイラを示す。
【0019】
上述およびその他の目的、局面、利点は、図面を参照しながら、以下の本発明の好適な実施形態の詳細な説明から、よりよく理解される。
【0020】
(発明の詳細な説明)
本発明は、動作中のマイクロプロセッサによって、動的な数の内在的なノップ命令を挿入する方法に関する。内在的なノップ命令は、プログラム自体に実際のノップ命令を入れることなしに、マイクロプロセッサによって実行される動作なし命令である。本発明の方法は、適切な数の内在的なノップ命令が、多重サイクル命令が起こるごとに、自動的に計算および実行されることを可能にする。以下、ノップ命令という用語は、プログラマまたは高水準言語コンパイラの直接的な介入なしに自動的に起こるプロセスを示す。適切な内在的なノップ命令数は、必要な遅延スロットの総数から、挿入された遅延スロット命令(IDSI)数を減算することによって、自動的にマイクロプロセッサによって計算される。
【0021】
IDSI数は好適にはアセンブラによってカウントされ、次いでマイクロプロセッサにとって利用可能となる。より好適には、この数は、アセンブラによってコード化された命令内の遅延スロットフィールド内に入れられ、次いでマイクロプロセッサによって遅延スロットフィールドから取り出される。それゆえに、本発明の方法によって、マイクロプロセッサは、追加のメモリリソースを必要とせず、そしてプログラマまたは高水準言語コンパイラに、使用されていない遅延スロットの各々にノップ命令を挿入させることを強制することなしに、自動的に必要数の内在的なノップ命令を挿入することが可能になる。
【0022】
本発明による、効率的な遅延スロット使用方法の原理および動作は、図面および添付の記載を参照してよりよく理解され得る。これらの図面は、説明の目的のみに提示され、発明を限定するものではないことが理解されるべきである。
【0023】
ここで図面を参照すると、図3は、本発明による、効率的な遅延スロットを使用する例示的な方法の模式的ブロック図である。図示されるように、プログラムの少なくとも一部を表す、例示的な命令シーケンス22は、多重サイクル命令24を特徴とする。命令シーケンス22は、多重サイクル命令24の遅延スロット中に実行されるただ1つの挿入された遅延スロット命令(IDSI)26を特徴とする。残りの遅延スロットは、動的な数の内在的なノップ命令で満たされる。内在的なノップ命令は、プログラム内に入れられないノップ命令であり、ゆえに、使用されていない遅延スロットは、ノップ命令をメモリ内に挿入することを必要としない。内在的なノップ命令数は、使用されていない遅延スロット数と同等になるように様々に変化する。それ故に、人間のプログラマまたは高水準言語コンパイラは、IDSIまたはノップ命令ですべての遅延スロットを満たすように強制されない。
【0024】
動的な数の内在的なノップ命令を挿入する利点は、所望するだけ多くの有用な遅延スロット命令のみを挿入し、それにより、浪費されるサイクルを最小化させる一方、プログラムに必要なメモリ量を減少させる能力を含む。その上、人間のプログラマは、より速やかに且つ効率的に命令をプログラム且つデバッグすることが可能である。なぜならば、有用な遅延スロット命令は遅延スロットの一部しか使用せず、それにより特定の製品を開発するために必要な開発時間量および人時間量が減少するからである。
【0025】
対照的に、このような多重サイクル命令を実行する現在利用可能な従来技術の方法は、著しく効率が劣る。例えば、図4は、従来技術による模式的ブロック図であり、図3の命令を示しているが、本発明の方法を実施してはいない。図示されるように、例示的命令シーケンス28は、再度多重サイクル命令24および1つの遅延スロット命令26を特徴とする。しかしながら、従来技術の方法は、多重サイクル命令24のための遅延スロットの所定の数を満たすために、2つのノップ命令30の挿入を必要とし、それゆえに2つの遅延スロットを浪費する。そのため、明らかに図4の従来技術の方法は、本発明の方法ほど効率がよくない。
【0026】
図5Aは、マイクロプロセッサによる動作のための、本発明の方法の1例を説明するフローチャートである。マイクロプロセッサが多重サイクル命令を実行するには、マイクロプロセッサは、遅延スロットごとに遅延スロット命令またはノップ命令を挿入する必要がある。本発明において、ノップ命令は様々に決定された数の内在的なノップ命令であって、図5Aに示される方法によって決定される。
【0027】
簡単に言えば、多重サイクル命令に必要な遅延スロット(TDS)の総数が、ステップ1に示されるように、マイクロプロセッサにとって利用可能である。必要な遅延スロットの総数は、ハードウェア依存型である。ステップ2において、アセンブラは、多重サイクル命令用に挿入された遅延スロット命令(IDSI)数を判定する。これらは、内在的か内在的でないかに関わらず、ノップ命令ではないという点で有用な命令である。内在的なノップ命令の目的は、多重サイクル命令実行中に、IDSIに使用されない時間を満たすことである。
【0028】
好適には、アセンブラは、多重サイクル命令用に挿入された有用な各遅延スロット命令をカウントすることによって、挿入された遅延スロット命令数(IDSI数)を判定する。
【0029】
ステップ3において、好適には、アセンブラは、IDSI数(使用された遅延スロット数)をコード化された多重サイクル命令内の遅延スロットフィールド内に入れる。命令の遅延スロットフィールドは、IDSI数を格納する追加の好適なフィールドであり、典型的には(必ずしもそうではないが)2〜3ビット長である。
【0030】
ステップ4において、多重サイクル命令のIDSI数は、アセンブラによってマイクロプロセッサに与えられる。好適には、マイクロプロセッサは、動作中に、コード化された命令の遅延スロットフィールドを調査することによってIDSI数を取得し、必要な内在的なノップ命令数(使用されていない遅延スロット数であるUUDS数)を計算する。
【0031】
ステップ5において、マイクロプロセッサは、式2:
UUDS=TDS−IDSI
に示されるように、TDS数(必要な遅延スロットの総数)からIDSI数(挿入された遅延スロット命令数)を減算することによってUUDS数を計算する。
【0032】
ステップ6において、マイクロプロセッサは、多重サイクル命令の実行中に、必要数の内在的なノップ命令を挿入する。
【0033】
図5Aの方法を動作する1例は、図5Bを参照して記載される。図5Bは、メインプログラム34およびルーチン36を備えたプログラム32の一部を示す。複数のシングルスロット命令38もまた示される。routine_nameという名前を有するルーチン36(第2のプログラム)を引き起こす、コール命令40が示されている。ルーチン36の動作は、リターン命令42によって終了する。例えば、分岐する前に現在の環境を格納するコール命令40は、コール命令40が効力を発する前に4つのクロックサイクルを必要とする。1つのクロックサイクルが、コール命令40のコードに必要であり、3つのクロックサイクルが3つの遅延スロットに必要である。メインプログラム34が制御を再開する前に、環境を回復する必要があるリターン命令42は、例えば6つのクロックサイクルを必要とする。1つのクロックサイクルが、リターン命令42のコードに必要であり、5つのクロックサイクルが5つの遅延スロットに必要である。それゆえに、コール命令40およびリターン命令42の双方が、多重サイクル命令である。
【0034】
コール命令40およびリターン命令42の動作に必要な内在的なノップ命令数を計算するには、マイクロプロセッサは、多重サイクル命令が起こるごとに遅延スロットに挿入されてきた遅延スロット命令数を知る必要がある。図5Aに関して記載されるように、マイクロプロセッサは、コード化された命令の遅延スロットフィールドからこの数を取り出す。
【0035】
この例において、1つの有用な遅延スロット命令(IDSI)44は、プログラマによって、3つの必要な遅延スロットのうちの、コール命令40用に挿入されている。2つの有用な遅延スロット命令44は、5つの必要な遅延スロットのうちのリターン命令42用に挿入されている。
【0036】
コンパイルするプログラム32のプロセス中において、アセンブラはコール命令40用に挿入された遅延スロット命令44の数をカウントする。これはこの例においては番号1である。したがって、アセンブラは、番号1をコール命令40の遅延スロットフィールドにロードする。この情報は、実行中にマイクロプロセッサとの通信のためにメモリにロードされる。3つの遅延スロットが必要であるため、マイクロプロセッサは、図5Aに関して記載されるように、2つの内在的なノップ命令を実行する。
【0037】
同様に、アセンブラはまた、リターン命令42用に挿入された遅延スロット命令44の数をカウントする。これはこの例においては番号2である。したがって、アセンブラは、番号2をリターン命令42の遅延スロットフィールドにロードする。5つの遅延スロットが必要であるため、マイクロプロセッサは、ここでも図5Aに関して記載されるように、3つの内在的なノップ命令を実行する。
【0038】
それゆえに、本発明の遅延スロット制御メカニズムの方法は、以下の利点を有する。第1に、本発明の方法は、プログラムの性能とプログラムに必要なメモリ空間量をトレードオフする。代わりに、本発明は、このような有用な命令を保持する追加のメモリ空間の必要性と、プログラム動作中に浪費される時間量との最適なバランス、およびノップ命令の挿入と、人間のプログラマが有用な遅延スロット命令を挿入するのに必要な追加の時間とのバランスを提供する。
【0039】
第2に、本発明の方法は、人間のプログラマ、高水準言語コンパイラまたはその他の自動機械語コードプログラミングツールが、有用な遅延スロット命令を含まない遅延スロットごとに、ノップ命令を挿入する必要性の不利益を避け、それによりプログラマは、プログラムに必要なだけ、有用な遅延スロット命令を挿入し得る。それゆえに、IDSIですべての遅延スロットを満たさない不利益を避けることと、同時にIDSIに利用可能な遅延スロットの少なくとも一部を使用する利益を受けることとのバランスが維持される。
【0040】
上記の記載は例としてのみ与えられ、多くの別の実施形態が本発明の精神および範囲内で可能であることが理解される。
【図面の簡単な説明】
【図1】 図1は、遅延スロットなしに、多重サイクル命令を処理する第1の例示的な従来技術の方法の模式的ブロック図である。
【図2】 図2は、遅延スロットなしに、多重サイクル命令を処理する第2の例示的な従来技術の方法の模式的ブロック図である。
【図3】 図3は、本発明による、効率的な遅延スロット使用の例示的な方法の模式的ブロック図である。
【図4】 図4は、図2に示されるアーキテクチャに類似のアーキテクチャを介して、すべての遅延スロットを使用せずに、図3の命令を実行する、効率が劣る従来技術の方法の模式的ブロック図である。
【図5A】 図5Aは、本発明による、ノップ遅延スロットを挿入する例示的な方法のフローチャートである。
【図5B】 図5Bは、図5Aに示される方法による構築された例示的なプログラムの一部の表示である。
Claims (8)
- 複数の命令を実行中に、マイクロプロセッサによって必要数のノップ(動作なし)命令を自動的に挿入する方法であって、該複数の命令が少なくとも1つの多重サイクル命令を含み、遅延スロットの総数が該少なくとも1つの多重サイクル命令に必要であり、該方法が、
(a)該少なくとも1つの多重サイクル命令に関連した、挿入された遅延スロット命令(IDSI)数を判定する工程と、
(b)該遅延スロットの総数から該IDSI数を減算することによって、該マイクロプロセッサによって該ノップ命令の必要数を計算する工程と、
(c)該マイクロプロセッサによって該必要数のノップ命令を実行する工程と
を包含する方法。 - 前記少なくとも1つの多重サイクル命令に必要な前記遅延スロットの総数が、ハードウェア依存である、請求項1に記載の方法。
- 前記複数の命令を受け取るアセンブラを提供し、該複数の命令を前記マイクロプロセッサによる実行のために準備する工程をさらに包含し、該アセンブラを提供する工程が工程(a)が実行される前に実行され、工程(a)が、
(i)該アセンブラによって前記IDSI数をカウントする工程と、
(ii)該IDSI数を該マイクロプロセッサに伝達する工程と
をさらに包含する、請求項1に記載の方法。 - 前記IDSI数を前記マイクロプロセッサに伝達する工程が、
(I)前記少なくとも1つの多重サイクル命令内に遅延スロットフィールドを提供する工程と、
(II)前記アセンブラによって該IDSI数を該遅延スロットフィールドに入れる工程と、
(III)該マイクロプロセッサによって該IDSI数を該遅延スロットフィールドから取り出す工程と
をさらに包含する、請求項3に記載の方法。 - 複数の命令を実行中に、マイクロプロセッサによって必要数のノップ命令を自動的に挿入する方法であって、該複数の命令が、少なくとも1つの多重サイクル命令を含み、該方法は、
(a)該複数の命令を受け取るアセンブラを提供する工程と、
(b)該マイクロプロセッサに、該少なくとも1つの多重サイクル命令に必要な遅延スロットの総数を提供する工程と、
(c)前記アセンブラによって、該少なくとも1つの多重サイクル命令に関連したIDSI数を判定する工程と、
(d)該IDSI数を該マイクロプロセッサに伝達する工程と、
(e)該遅延スロットの総数から該IDSI数を減算することによって、該マイクロプロセッサによって該ノップ命令の必要数を計算する工程と、
(f)該マイクロプロセッサによって該必要数のノップ命令を実行する工程と
を包含する方法。 - 前記少なくとも1つの多重サイクル命令に必要な前記遅延スロットの総数が、ハードウェア依存である、請求項5に記載の方法。
- 工程(a)が、
(i)前記アセンブラによって前記IDSI数をカウントする工程
をさらに包含する、請求項5に記載の方法。 - 前記IDSI数を前記マイクロプロセッサに伝達する工程が、
(i)前記少なくとも1つの多重サイクル命令内に遅延スロットフィールドを提供する工程と、
(ii)前記アセンブラによって該IDSI数を該遅延スロットフィールドに入れる工程と、
(iii)該マイクロプロセッサによって該IDSI数を該遅延スロットフィールドから取り出す工程と
をさらに包含する、請求項7に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/318,631 US6275929B1 (en) | 1999-05-26 | 1999-05-26 | Delay-slot control mechanism for microprocessors |
US09/318,631 | 1999-05-26 | ||
PCT/EP2000/003833 WO2000073896A1 (en) | 1999-05-26 | 2000-04-27 | Delay-slot control mechanism for microprocessors |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003521761A JP2003521761A (ja) | 2003-07-15 |
JP3639557B2 true JP3639557B2 (ja) | 2005-04-20 |
Family
ID=23238969
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001500949A Expired - Fee Related JP3639557B2 (ja) | 1999-05-26 | 2000-04-27 | マイクロプロセッサ用遅延スロット制御メカニズム |
Country Status (6)
Country | Link |
---|---|
US (1) | US6275929B1 (ja) |
EP (1) | EP1190308A1 (ja) |
JP (1) | JP3639557B2 (ja) |
KR (1) | KR100479281B1 (ja) |
CN (1) | CN1153131C (ja) |
WO (1) | WO2000073896A1 (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL131839A (en) * | 1998-09-10 | 2004-12-15 | Dsp Group Ltd | Method for reducing code size using programmable delay slots |
US6883166B1 (en) * | 2000-11-21 | 2005-04-19 | Hewlett-Packard Development Company, L.P. | Method and apparatus for performing correctness checks opportunistically |
US6880072B1 (en) * | 2001-05-08 | 2005-04-12 | Lsi Logic Corporation | Pipelined processor and method using a profile register storing the return from exception address of an executed instruction supplied by an exception program counter chain for code profiling |
JP3738842B2 (ja) * | 2002-06-04 | 2006-01-25 | 富士通株式会社 | 遅延分岐機能を備えた情報処理装置 |
US20050071830A1 (en) * | 2003-09-30 | 2005-03-31 | Starcore, Llc | Method and system for processing a sequence of instructions |
JP2005149297A (ja) * | 2003-11-18 | 2005-06-09 | Renesas Technology Corp | プロセッサおよびそのアセンブラ |
US7310741B2 (en) * | 2004-08-17 | 2007-12-18 | Hewlett-Packard Development Company, L.P. | Phase adjusted delay loop executed by determining a number of NOPs based on a modulus value |
US7318478B2 (en) * | 2005-06-01 | 2008-01-15 | Tiw Corporation | Downhole ball circulation tool |
US7434625B2 (en) * | 2005-06-01 | 2008-10-14 | Tiw Corporation | Downhole flapper circulation tool |
JP4680876B2 (ja) * | 2006-12-11 | 2011-05-11 | ルネサスエレクトロニクス株式会社 | 情報処理装置及び命令フェッチ制御方法 |
KR100867269B1 (ko) | 2007-02-22 | 2008-11-06 | 삼성전자주식회사 | 프로세서의 추론적 로드 명령 실행 방법 및 상기 방법을채용한 프로세서 |
KR100875836B1 (ko) | 2007-03-23 | 2008-12-24 | 삼성전자주식회사 | 병렬 처리 vliw 컴퓨터를 위한 인스트럭션 명령어 압축장치 및 그 방법 |
CN101425053B (zh) * | 2007-11-02 | 2010-08-18 | 北京中电华大电子设计有限责任公司 | 一种cpu周期寄存器的实现方法 |
CN101866281B (zh) * | 2010-06-13 | 2013-05-22 | 清华大学 | 一种多周期指令执行方法和装置 |
US20140180848A1 (en) * | 2012-12-20 | 2014-06-26 | Wal-Mart Stores, Inc. | Estimating Point Of Sale Wait Times |
GB2501582B (en) * | 2013-02-11 | 2014-12-24 | Imagination Tech Ltd | Speculative load issue |
KR20180031266A (ko) * | 2016-09-19 | 2018-03-28 | 삼성전자주식회사 | 전자 장치, vliw 프로세서 및 그 제어 방법들 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3499252B2 (ja) * | 1993-03-19 | 2004-02-23 | 株式会社ルネサステクノロジ | コンパイル装置及びデータ処理装置 |
JP3532975B2 (ja) * | 1993-09-27 | 2004-05-31 | 株式会社ルネサステクノロジ | マイクロコンピュータおよびそれを用いて命令を実行する方法 |
US5724566A (en) * | 1994-01-11 | 1998-03-03 | Texas Instruments Incorporated | Pipelined data processing including interrupts |
WO1998006042A1 (en) * | 1996-08-07 | 1998-02-12 | Sun Microsystems, Inc. | Wide instruction unpack method and apparatus |
US5958044A (en) * | 1997-01-24 | 1999-09-28 | Texas Instruments Incorporated | Multicycle NOP |
US5964867A (en) * | 1997-11-26 | 1999-10-12 | Digital Equipment Corporation | Method for inserting memory prefetch operations based on measured latencies in a program optimizer |
-
1999
- 1999-05-26 US US09/318,631 patent/US6275929B1/en not_active Expired - Lifetime
-
2000
- 2000-04-27 EP EP00929452A patent/EP1190308A1/en not_active Withdrawn
- 2000-04-27 JP JP2001500949A patent/JP3639557B2/ja not_active Expired - Fee Related
- 2000-04-27 CN CNB00813118XA patent/CN1153131C/zh not_active Expired - Fee Related
- 2000-04-27 WO PCT/EP2000/003833 patent/WO2000073896A1/en not_active Application Discontinuation
- 2000-04-27 KR KR10-2001-7014996A patent/KR100479281B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
EP1190308A1 (en) | 2002-03-27 |
US6275929B1 (en) | 2001-08-14 |
CN1153131C (zh) | 2004-06-09 |
WO2000073896A1 (en) | 2000-12-07 |
JP2003521761A (ja) | 2003-07-15 |
KR100479281B1 (ko) | 2005-03-29 |
KR20020003882A (ko) | 2002-01-15 |
CN1382274A (zh) | 2002-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3639557B2 (ja) | マイクロプロセッサ用遅延スロット制御メカニズム | |
KR102228501B1 (ko) | 컴파일러 방법 | |
US9170781B2 (en) | Method and system for generating object code to facilitate predictive memory retrieval | |
US8615747B2 (en) | Method and apparatus for dynamic code optimization | |
US8527969B2 (en) | Systems, methods, and computer programs for dynamic binary translation in an interpreter | |
US8893104B2 (en) | Method and apparatus for register spill minimization | |
JPH08502612A (ja) | データ処理システムおよびオペレーティング・システム | |
JP2000222220A (ja) | 動的コンパイル時期決定方法、バイトコード実行モード選択方法、及びコンピュータ | |
CA2376327C (en) | Executing native code in place of non-native code | |
US20040143825A1 (en) | Dynamic compiler apparatus and method that stores and uses persistent execution statistics | |
US8276128B2 (en) | Systems, methods, and computer programs for dynamic binary translation in a master control program interpreter | |
US7228527B1 (en) | Method and system for structuring a procedure | |
WO2021098257A1 (zh) | 一种基于异构计算平台的业务处理方法 | |
JP2005011349A (ja) | 電子システムおよびガーベジコレクション方法 | |
US11893368B2 (en) | Removing branching paths from a computer program | |
WO2022166480A1 (zh) | 任务调度方法、装置及系统 | |
CN110515729B (zh) | 基于图形处理器的图计算节点向量负载平衡方法及装置 | |
US20040158825A1 (en) | Cache controller computer system and method for program recompilation | |
CN115242563A (zh) | 一种网络通信方法、计算设备及可读存储介质 | |
CN112346835A (zh) | 一种基于协程的调度处理方法及系统 | |
EP2605134B1 (en) | Systems, methods, and computer programs for dynamic binary translation in an interpreter | |
US11928470B1 (en) | Advancing a program counter to a start of a subsequent cache line based on a straddling group indicator in a current cache line | |
CN116301874A (zh) | 代码编译方法、电子设备及存储介质 | |
CN114638351A (zh) | 一种处理方法、npu及电子设备 | |
CN116303226A (zh) | 粗粒度可重构阵列数据流处理器的高效执行方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040528 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20040830 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20040921 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041129 |
|
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: 20041222 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050114 |
|
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: 20080121 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090121 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100121 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100121 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110121 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120121 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120121 Year of fee payment: 7 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120121 Year of fee payment: 7 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130121 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140121 Year of fee payment: 9 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees | ||
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |