JP2003521761A - マイクロプロセッサ用遅延スロット制御メカニズム - Google Patents
マイクロプロセッサ用遅延スロット制御メカニズムInfo
- Publication number
- JP2003521761A JP2003521761A JP2001500949A JP2001500949A JP2003521761A JP 2003521761 A JP2003521761 A JP 2003521761A JP 2001500949 A JP2001500949 A JP 2001500949A JP 2001500949 A JP2001500949 A JP 2001500949A JP 2003521761 A JP2003521761 A JP 2003521761A
- Authority
- JP
- Japan
- Prior art keywords
- instructions
- microprocessor
- instruction
- 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.)
- Granted
Links
- 230000007246 mechanism Effects 0.000 title description 2
- 238000000034 method Methods 0.000 claims abstract description 63
- 230000001419 dependent effect Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 6
- 230000008901 benefit Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 4
- 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
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
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)
Abstract
Description
的には、有用な命令が遅延スロットに入れられることを可能にしながら、実質的
には実際のノップ(nop)(動作なし)命令をプログラム自体に入れることな
しに、多重サイクル命令を実行するために、自動的且つ様々に遅延スロットに挿
入されるべき追加のノップ命令数を判定する方法に関する。本発明の方法は、フ
ェッチ動作数が減少するため、消費電力を節約すると共に、プログラムを格納す
るのに必要なメモリ内の空間の量を減らす。これらの利点は、依然遅延スロット
が使用されることを可能にしながら達成される。
において急速に増加してきた。リアルタイムのマイクロプロセッサ技術の進歩は
、特に通信産業においては、携帯電話、留守番電話およびオーディオシステムな
どの高度なデバイスの大量生産を後押ししてきた。開発および生産のコストを下
げながら、技術の性能を上げるために、これらのデバイスの生産のより効率的な
方法が、継続的に追求されている。
書かれるプログラムコードから得られる機械コード命令を実行する。現代のマイ
クロプロセッサの命令のほとんどは、シングルクロックサイクル内で実行される
。しかしながら、いくつかの命令は、実行するために1より多いクロックサイク
ルを必要とし、多重サイクル命令と呼ばれる。典型的な多重サイクル命令は、条
件付きブランチ命令、およびその他のプログラムフロー命令を含む。多重サイク
ル命令が効力を発する前に経過するクロックサイクルが浪費される。これらのク
ロックサイクルは、遅延スロットと呼ばれる。
とによって浪費される時間を示す、従来技術のプログラムの命令シーケンス10
を示す。各空のサイクル12は、シングルサイクル命令16を実行するという結
果をもたらさず、多重サイクル命令14の実行を可能にするためにのみ挿入され
る。明らかに、命令シーケンス10は、多重サイクル命令14の実行を可能にす
る、相対的に非能率的な方法を表す。
より多い命令を平行して実行するように開発された。パイプライン化されたマイ
クロプロセッサは、いくつかの命令を同時に実行することが可能であるため、マ
イクロプロセッサが空のタイムスロット中にアイドル状態になるということがな
い。多重サイクル命令の実行に必要な、以前には浪費されていた時間を使用する
ために、他の命令が人間のプログラマによって遅延スロットに挿入され得る。マ
イクロプロセッサは、遅延スロット中にこれらの遅延スロット命令を個々にフェ
ッチし、これらの命令をパイプにロードし、次いで命令を同時に実行する。これ
らの挿入された命令は通常、遅延スロットが元々生成された多重サイクル命令に
関係しない。代わりに、これらの命令は、制御という仕事、続く命令のロードの
登録など、その他のタスクを実行する。
ロプロセッサによって実行されるように書き換えられた、図1のプログラムを示
す。ここで、プログラムの命令シーケンス18は、多重サイクル命令14用の遅
延スロット中に、サイクル4、5、6において実行される3つの命令20を特徴
とする。それゆえ、図2のプログラムは、図1のプログラムに比べ、より効率的
に実行される。
チャは、多数の弱点を有している。例えば、有用な命令が遅延スロットに挿入さ
れない場合には、時間とプログラムを保持するメモリ空間の双方が、多重サイク
ル命令によって浪費される。すべてではなく一部の遅延スロットのみが有用な命
令によって満たされる場合には、現在使用されていない遅延スロットがノップ(
動作なし)命令をロードされる必要がある。ノップ命令は、メモリ空間を必要と
するが、いかなる有用な機能をも実行しない。このようなノップ命令が頻繁に必
要とされるため、遅延スロットの問題は単に減少するのみであり、解決はされな
い。それゆえ、追加のメモリ空間の必要性と浪費される時間量との間のバランス
という問題がある。
されなければならない。プログラマは、性能を最適化するために、できるだけ多
くの遅延スロットを有用な命令で満たすべきであるが、有用な命令を見つけるこ
とが簡単であることはほとんどない。有用な命令をすべての遅延スロットに挿入
するプロセスは、時間がかかるものであり、文書化および維持することが困難で
ある。プログラマは、多くの時間を、有用な命令を探して遅延スロットに入れる
ことに費やす。さらに、Cコンパイラなどの高水準言語コンパイラもまた、遅延
スロットを有用な命令で満たそうと試みる必要がある。最適化アルゴリズムをも
ってしても、このようなコンパイラは、しばしばすべての遅延スロットを使用す
ることができず、それゆえにプログラムを格納するために必要な追加の空間を浪
費している。
的な通信用途において、平均、18シングルサイクル命令ごとに、1プログラム
フロー命令の割合で起こる。この割合は、平均的なプログラムフロー命令が、以
下の式1によって、3つの必要なノップ命令を生成することを知りながら、予測
される浪費されるメモリ量を計算するために使用され得る。
イクル命令によって浪費されるメモリを含まずに、3Kbのメモリを浪費してい
ることを示す。このようなメモリの浪費は、生産コストを増加させるとともに、
関連のデバイスの動作の効率を下げる。それゆえ、多重サイクル命令は、時間お
よびプログラムメモリを浪費すること、および遅延スロットを命令に使用しよう
とする際に、プログラマによって要求される時間量を増やすことを含め、3股の
問題をもたらす。
ロプロセッサアーキテクチャの欠点を強調させる。現在、多重サイクル命令を処
理する2つの異なる方法が、従来技術において利用可能である。第1の方法は、
いかなる遅延スロットをも使用せず、それゆえに時間を浪費するがメモリを節約
することを含む。これはマイクロプロセッサが、プログラムにノップ命令を明示
的に含ませることなしに、ノップ命令を実行し得るからである。第2の方法は、
実際の命令またはノップ命令を挿入することにより、すべての遅延スロットが使
用されることを必要とする。ノップ命令が挿入される場合には、必要とされるメ
モリ空間が増加する。しかしながら、実際の命令が効率的に挿入される場合、プ
ログラムを実行するのに必要な時間量が減少する。
必要とされない場合に、選択される。プログラムの実行の性能、そしてそれゆえ
にプログラムが実行されるのに必要な時間量ではなく、メモリの節約とプログラ
マによるプログラミングの容易さが優先される。第2の従来技術の方法は、効率
的に実行される必要がある、高度な性能のアプリケーション向けに設計される。
したがって、プログラムの急速で効率的な実行に興味のあるプログラマは、有用
な命令をすべての遅延スロットに挿入する必要がある。このタスクは、長ったら
しく退屈なタスクであるが、高い実行効率を得る可能性がある。したがって、こ
のタスクは、すべての遅延スロットが使用される場合には、プログラムを実行す
るのに必要な時間量を減少させ得、すべての遅延スロットが有用に使用されるわ
けではない場合には、プログラムを格納するのに必要なメモリ量が増大するとい
う不利益を生じさせ得る。遅延スロットのすべてを使用することに失敗した場合
、ノップ命令が残りの使用されていない遅延スロットのすべてに挿入されること
になる。それゆえ、多重サイクル命令を処理する従来技術の方法のうち、3つす
べての利点、すなわちスピード、メモリの経済的且つ効率的な使用、およびプロ
グラミングの容易さを提供するものはない。
令のみを明示的に遅延スロットに挿入させることで、遅延スロットをより効率的
に処理する方法であって、同時に、性能を改善し、開発時間およびコストを下げ
、このような有用な命令を保持する追加のメモリ空間の必要性とプログラム実行
中にこのような内在的なノップ命令によって浪費される時間量との最適なバラン
スを提供する方法が必要とされ、それを有することが有用である。これらの方法
を用いて、内在的なノップ命令が、マイクロプロセッサの動作中に実質的に自動
のプロセスに残っている遅延スロット数を補完するために挿入され、かつマイク
ロプロセッサに関連付けられたメモリ空間がより効果的に使用される。
命令を挿入する方法に関する。内在的なノップ命令は、プログラム自体に実際の
ノップ命令を入れることなしに、マイクロプロセッサによって実行される動作な
し命令である。本発明の方法は、適切な数の内在的なノップ命令が、多重サイク
ル命令が起こるごとに、自動的に計算および実行されることを可能にする。以下
、ノップ命令という用語は、プログラマまたはコードジェネレータの直接的な介
入なしに起こるプロセスを自動的に示す。適切な内在的なノップ命令数は、必要
な遅延スロットの総数から、挿入された遅延スロット命令(IDSI)数を減算
することによって、自動的にマイクロプロセッサによって計算される。
せると共に、フェッチ動作数が減少するために、消費電力を節約するという利点
を有する。さらに、本発明は、このような有用な命令を保持する追加のメモリ空
間の必要性と、プログラム実行中に浪費される時間量との最適なバランス、およ
びノップ命令の挿入と、人間のプログラマが有用な遅延スロット命令を挿入する
のに必要な追加の時間とのバランスを提供する。挿入された遅延スロット命令数
は、好適にはアセンブラによってカウントされ、次いでマイクロプロセッサにと
って利用可能となる。より好適には、この数は、アセンブラによってコード化さ
れた命令内の遅延スロットフィールド内に入れられ、次いでマイクロプロセッサ
によって遅延スロットフィールドから取り出される。それゆえに、本発明の方法
によって、マイクロプロセッサは、図1の従来技術とは対照的に、追加のメモリ
リソースを必要とせず、そしてプログラマまたは高水準言語コンパイラなどのコ
ードジェネレータに、使用されていない遅延スロットの各々にノップ命令を挿入
させることを強制することなしに、自動的に必要数の内在的なノップ命令を挿入
し、多重サイクル命令が効力を発するのに必要なサイクルを満たすことが可能に
なる。多重サイクル命令用に挿入された遅延スロット命令(IDSI)は、内在
的か内在的でないかに関わらず、ノップ命令ではないという点で有用な命令であ
る。
のノップ(動作なし)命令を自動的に挿入する方法が提供される。複数の命令は
、少なくとも1つの多重サイクル命令を含み、遅延スロットの総数が、少なくと
も1つの多重サイクル命令に必要である。本方法は、(a)少なくとも1つの多
重サイクル命令に関連した、挿入された遅延スロット命令(IDSI)数を判定
する工程と、(b)遅延スロットの総数からIDSI数を、マイクロプロセッサ
によって減算することによって、必要数のノップ命令を計算する工程と、(c)
マイクロプロセッサによって必要数のノップ命令を実行する工程とを含む。
、ハードウェア依存型である。また好適には、本方法は、複数の命令を受け取る
アセンブラを提供し、複数の命令をマイクロプロセッサによる実行のために準備
する工程をさらに含み、アセンブラを提供する工程が工程(a)が実行される前
に実行され、工程(a)は、(i)アセンブラによってIDSI数をカウントす
る工程と、(ii)IDSI数をマイクロプロセッサに伝達する工程とをさらに
含む。より好適には、IDSI数をマイクロプロセッサに伝達する伝達する工程
が、(I)少なくとも1つの多重サイクル命令内に遅延スロットフィールドを提
供する工程と、(II)アセンブラによってIDSI数を遅延スロットフィール
ドに入れる工程と、(III)マイクロプロセッサによってIDSI数を遅延ス
ロットフィールドから取り出す工程とをさらに含む。
によって、必要数のノップ命令を自動的に挿入する方法が提供される。複数の命
令は、少なくとも1つの多重サイクル命令を含み、本方法は、(a)複数の命令
を受け取るアセンブラを提供する工程と、(b)マイクロプロセッサに、少なく
とも1つの多重サイクル命令に必要な遅延スロットの総数を提供する工程と、(
c)アセンブラによって、少なくとも1つの多重サイクル命令に関連したIDS
I数を判定する工程と、(d)IDSI数をマイクロプロセッサに伝達する工程
と、(e)遅延スロットの総数からIDSI数を、マイクロプロセッサによって
減算することによって、必要数のノップ命令を計算する工程と、(f)マイクロ
プロセッサによって必要数のノップ命令を実行する工程とを含む。以下、高水準
言語コンパイラという用語は、アセンブリプログラミング言語よりハイレベルな
、CまたはC++などのプログラミング言語のためのコンパイラを示す。
の好適な実施形態の詳細な説明から、よりよく理解される。
命令を挿入する方法に関する。内在的なノップ命令は、プログラム自体に実際の
ノップ命令を入れることなしに、マイクロプロセッサによって実行される動作な
し命令である。本発明の方法は、適切な数の内在的なノップ命令が、多重サイク
ル命令が起こるごとに、自動的に計算および実行されることを可能にする。以下
、ノップ命令という用語は、プログラマまたは高水準言語コンパイラの直接的な
介入なしに自動的に起こるプロセスを示す。適切な内在的なノップ命令数は、必
要な遅延スロットの総数から、挿入された遅延スロット命令(IDSI)数を減
算することによって、自動的にマイクロプロセッサによって計算される。
セッサにとって利用可能となる。より好適には、この数は、アセンブラによって
コード化された命令内の遅延スロットフィールド内に入れられ、次いでマイクロ
プロセッサによって遅延スロットフィールドから取り出される。それゆえに、本
発明の方法によって、マイクロプロセッサは、追加のメモリリソースを必要とせ
ず、そしてプログラマまたは高水準言語コンパイラに、使用されていない遅延ス
ロットの各々にノップ命令を挿入させることを強制することなしに、自動的に必
要数の内在的なノップ命令を挿入することが可能になる。
び添付の記載を参照してよりよく理解され得る。これらの図面は、説明の目的の
みに提示され、発明を限定するものではないことが理解されるべきである。
用する例示的な方法の模式的ブロック図である。図示されるように、プログラム
の少なくとも一部を表す、例示的な命令シーケンス22は、多重サイクル命令2
4を特徴とする。命令シーケンス22は、多重サイクル命令24の遅延スロット
中に実行されるただ1つの挿入された遅延スロット命令(IDSI)26を特徴
とする。残りの遅延スロットは、動的な数の内在的なノップ命令で満たされる。
内在的なノップ命令は、プログラム内に入れられないノップ命令であり、ゆえに
、使用されていない遅延スロットは、ノップ命令をメモリ内に挿入することを必
要としない。内在的なノップ命令数は、使用されていない遅延スロット数と同等
になるように様々に変化する。それ故に、人間のプログラマまたは高水準言語コ
ンパイラは、IDSIまたはノップ命令ですべての遅延スロットを満たすように
強制されない。
遅延スロット命令のみを挿入し、それにより、浪費されるサイクルを最小化させ
る一方、プログラムに必要なメモリ量を減少させる能力を含む。その上、人間の
プログラマは、より速やかに且つ効率的に命令をプログラム且つデバッグするこ
とが可能である。なぜならば、有用な遅延スロット命令は遅延スロットの一部し
か使用せず、それにより特定の製品を開発するために必要な開発時間量および人
時間量が減少するからである。
方法は、著しく効率が劣る。例えば、図4は、従来技術による模式的ブロック図
であり、図3の命令を示しているが、本発明の方法を実施してはいない。図示さ
れるように、例示的命令シーケンス28は、再度多重サイクル命令24および1
つの遅延スロット命令26を特徴とする。しかしながら、従来技術の方法は、多
重サイクル命令24のための遅延スロットの所定の数を満たすために、2つのノ
ップ命令30の挿入を必要とし、それゆえに2つの遅延スロットを浪費する。そ
のため、明らかに図4の従来技術の方法は、本発明の方法ほど効率がよくない。
明するフローチャートである。マイクロプロセッサが多重サイクル命令を実行す
るには、マイクロプロセッサは、遅延スロットごとに遅延スロット命令またはノ
ップ命令を挿入する必要がある。本発明において、ノップ命令は様々に決定され
た数の内在的なノップ命令であって、図5Aに示される方法によって決定される
。
ステップ1に示されるように、マイクロプロセッサにとって利用可能である。必
要な遅延スロットの総数は、ハードウェア依存型である。ステップ2において、
アセンブラは、多重サイクル命令用に挿入された遅延スロット命令(IDSI)
数を判定する。これらは、内在的か内在的でないかに関わらず、ノップ命令では
ないという点で有用な命令である。内在的なノップ命令の目的は、多重サイクル
命令実行中に、IDSIに使用されない時間を満たすことである。
ット命令をカウントすることによって、挿入された遅延スロット命令数(IDS
I数)を判定する。
スロット数)をコード化された多重サイクル命令内の遅延スロットフィールド内
に入れる。命令の遅延スロットフィールドは、IDSI数を格納する追加の好適
なフィールドであり、典型的には(必ずしもそうではないが)2〜3ビット長で
ある。
マイクロプロセッサに与えられる。好適には、マイクロプロセッサは、動作中に
、コード化された命令の遅延スロットフィールドを調査することによってIDS
I数を取得し、必要な内在的なノップ命令数(使用されていない遅延スロット数
であるUUDS数)を計算する。
入された遅延スロット命令数)を減算することによってUUDS数を計算する。
必要数の内在的なノップ命令を挿入する。
インプログラム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の双方が、多重サイクル命令である
。
を計算するには、マイクロプロセッサは、多重サイクル命令が起こるごとに遅延
スロットに挿入されてきた遅延スロット命令数を知る必要がある。図5Aに関し
て記載されるように、マイクロプロセッサは、コード化された命令の遅延スロッ
トフィールドからこの数を取り出す。
ラマによって、3つの必要な遅延スロットのうちの、コール命令40用に挿入さ
れている。2つの有用な遅延スロット命令44は、5つの必要な遅延スロットの
うちのリターン命令42用に挿入されている。
令40用に挿入された遅延スロット命令44の数をカウントする。これはこの例
においては番号1である。したがって、アセンブラは、番号1をコール命令40
の遅延スロットフィールドにロードする。この情報は、実行中にマイクロプロセ
ッサとの通信のためにメモリにロードされる。3つの遅延スロットが必要である
ため、マイクロプロセッサは、図5Aに関して記載されるように、2つの内在的
なノップ命令を実行する。
令44の数をカウントする。これはこの例においては番号2である。したがって
、アセンブラは、番号2をリターン命令42の遅延スロットフィールドにロード
する。5つの遅延スロットが必要であるため、マイクロプロセッサは、ここでも
図5Aに関して記載されるように、3つの内在的なノップ命令を実行する。
する。第1に、本発明の方法は、プログラムの性能とプログラムに必要なメモリ
空間量をトレードオフする。代わりに、本発明は、このような有用な命令を保持
する追加のメモリ空間の必要性と、プログラム動作中に浪費される時間量との最
適なバランス、およびノップ命令の挿入と、人間のプログラマが有用な遅延スロ
ット命令を挿入するのに必要な追加の時間とのバランスを提供する。
の他の自動機械語コードプログラミングツールが、有用な遅延スロット命令を含
まない遅延スロットごとに、ノップ命令を挿入する必要性の不利益を避け、それ
によりプログラマは、プログラムに必要なだけ、有用な遅延スロット命令を挿入
し得る。それゆえに、IDSIですべての遅延スロットを満たさない不利益を避
けることと、同時にIDSIに利用可能な遅延スロットの少なくとも一部を使用
する利益を受けることとのバランスが維持される。
び範囲内で可能であることが理解される。
来技術の方法の模式的ブロック図である。
来技術の方法の模式的ブロック図である。
ロック図である。
べての遅延スロットを使用せずに、図3の命令を実行する、効率が劣る従来技術
の方法の模式的ブロック図である。
ーチャートである。
の表示である。
Claims (8)
- 【請求項1】 複数の命令を実行中に、マイクロプロセッサによって必要数
のノップ(動作なし)命令を自動的に挿入する方法であって、該複数の命令が少
なくとも1つの多重サイクル命令を含み、遅延スロットの総数が該少なくとも1
つの多重サイクル命令に必要であり、該方法が、 (a)該少なくとも1つの多重サイクル命令に関連した、挿入された遅延スロ
ット命令(IDSI)数を判定する工程と、 (b)該遅延スロットの総数から該IDSI数を、該マイクロプロセッサによ
って減算することによって、該ノップ命令の必要数を計算する工程と、 (c)該マイクロプロセッサによって該必要数のノップ命令を実行する工程と
、 を包含する方法。 - 【請求項2】 前記少なくとも1つの多重サイクル命令に必要な前記遅延ス
ロットの総数が、ハードウェア依存型である、請求項1に記載の方法。 - 【請求項3】 前記複数の命令を受け取るアセンブラを提供し、該複数の命
令を前記マイクロプロセッサによる実行のために準備する工程をさらに包含し、
該アセンブラを提供する工程が工程(a)が実行される前に実行され、工程(a
)が、 (i)該アセンブラによって前記IDSI数をカウントする工程と、 (ii)該IDSI数を該マイクロプロセッサに伝達する工程と、 をさらに包含する、請求項1に記載の方法。 - 【請求項4】 前記IDSI数を前記マイクロプロセッサに伝達する工程が
、 (I)前記少なくとも1つの多重サイクル命令内に遅延スロットフィールドを
提供する工程と、 (II)前記アセンブラによって該IDSI数を該遅延スロットフィールドに
入れる工程と、 (III)該マイクロプロセッサによって該IDSI数を該遅延スロットフィ
ールドから取り出す工程と、 をさらに包含する、請求項3に記載の方法。 - 【請求項5】 複数の命令を実行中に、マイクロプロセッサによって必要数
のノップ命令を自動的に挿入する方法であって、該複数の命令が、少なくとも1
つの多重サイクル命令を含み、該方法は、 (a)該複数の命令を受け取るアセンブラを提供する工程と、 (b)該マイクロプロセッサに、該少なくとも1つの多重サイクル命令に必要
な遅延スロットの総数を提供する工程と、 (c)前記アセンブラによって、該少なくとも1つの多重サイクル命令に関連
したIDSI数を判定する工程と、 (d)該IDSI数を該マイクロプロセッサに伝達する工程と、 (e)該マイクロプロセッサによって、該遅延スロットの総数から該IDSI
数を、該マイクロプロセッサによって減算することによって、該ノップ命令の必
要数を計算する工程と、 (f)該マイクロプロセッサによって該必要数のノップ命令を実行する工程と
、を包含する方法。 - 【請求項6】 前記少なくとも1つの多重サイクル命令に必要な前記遅延ス
ロットの総数が、ハードウェア依存型である、請求項5に記載の方法。 - 【請求項7】工程(a)が、 (i)前記アセンブラによって前記IDSI数をカウントする工程 をさらに包含する、請求項5に記載の方法。
- 【請求項8】前記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 true JP2003521761A (ja) | 2003-07-15 |
JP3639557B2 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 |
US7434625B2 (en) * | 2005-06-01 | 2008-10-14 | Tiw Corporation | Downhole flapper circulation tool |
US7318478B2 (en) * | 2005-06-01 | 2008-01-15 | Tiw Corporation | Downhole ball 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 |
GB2509830B (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 CN CNB00813118XA patent/CN1153131C/zh not_active Expired - Fee Related
- 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 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 |
---|---|
CN1153131C (zh) | 2004-06-09 |
KR20020003882A (ko) | 2002-01-15 |
JP3639557B2 (ja) | 2005-04-20 |
WO2000073896A1 (en) | 2000-12-07 |
KR100479281B1 (ko) | 2005-03-29 |
CN1382274A (zh) | 2002-11-27 |
EP1190308A1 (en) | 2002-03-27 |
US6275929B1 (en) | 2001-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2003521761A (ja) | マイクロプロセッサ用遅延スロット制御メカニズム | |
US5774737A (en) | Variable word length very long instruction word instruction processor with word length register or instruction number register | |
US20080263529A1 (en) | Method and apparatus for dynamic code optimization | |
CN102063286B (zh) | 程序流控制 | |
US20070143582A1 (en) | System and method for grouping execution threads | |
US8527969B2 (en) | Systems, methods, and computer programs for dynamic binary translation in an interpreter | |
US20040015972A1 (en) | Executing native code in place of non-native code | |
US7100154B2 (en) | Dynamic compiler apparatus and method that stores and uses persistent execution statistics | |
US7712091B2 (en) | Method for predicate promotion in a software loop | |
US7234134B2 (en) | System for executing virtual machine instructions | |
JPH0314025A (ja) | 命令実行制御方式 | |
US8276128B2 (en) | Systems, methods, and computer programs for dynamic binary translation in a master control program interpreter | |
CN112947932B (zh) | 对编译过程中的向量化进行优化的方法、装置及电子设备 | |
EP1444571A1 (en) | Hidden job start preparation in an instruction-parallel processor system | |
CN112346835A (zh) | 一种基于协程的调度处理方法及系统 | |
US20030110201A1 (en) | VLIW instruction control | |
US7080204B2 (en) | Cache controller computer system and method for program recompilation | |
Brandner et al. | Embedded JIT compilation with CACAO on YARI | |
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 | |
EP2605134B1 (en) | Systems, methods, and computer programs for dynamic binary translation in an interpreter | |
US20090019159A1 (en) | Transparently externalizing plug-in computation to cluster | |
CN116301874A (zh) | 代码编译方法、电子设备及存储介质 | |
CN118170515A (zh) | 一种处理器任务包调度装置和方法 | |
CN116542334A (zh) | 基于Web浏览器的深度神经网络推理调度方法和装置 | |
CN118132080A (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 |