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
Application number
JP2001500949A
Other languages
English (en)
Other versions
JP3639557B2 (ja
Inventor
リブカ ブラム,
メニー ヤンニ,
Original Assignee
インフィネオン テクノロジーズ アクチェンゲゼルシャフト
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 インフィネオン テクノロジーズ アクチェンゲゼルシャフト filed Critical インフィネオン テクノロジーズ アクチェンゲゼルシャフト
Publication of JP2003521761A publication Critical patent/JP2003521761A/ja
Application granted granted Critical
Publication of JP3639557B2 publication Critical patent/JP3639557B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction 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

(57)【要約】 動作中のマイクロプロセッサによって、動的な数の内在的なノップ命令を挿入する方法。内在的なノップ命令は、プログラム自体に実際のノップ命令を入れることなしに、マイクロプロセッサによって実行される動作なし命令である。本発明の方法は、適切な数の内在的なノップ命令が、多重サイクル命令が起こるごとに、自動的に計算および実行されることを可能にする。以下、ノップ命令という用語は、プログラマまたは高水準言語コンパイラの直接的な介入なしに自動的に起こるプロセスを示す。適切な数の内在的なノップ命令は、必要な遅延スロットの総数から、IDSI数を減算することによって、自動的にマイクロプロセッサによって計算される。IDSI数は好適にはアセンブラによって判定され、次いでマイクロプロセッサにとって利用可能となる。

Description

【発明の詳細な説明】
【0001】 (発明の分野および背景) 本発明は、種々の数の有用な命令を遅延スロットに挿入する方法に関し、具体
的には、有用な命令が遅延スロットに入れられることを可能にしながら、実質的
には実際のノップ(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つの多重サイクル命令に関連したIDS
I数を判定する工程と、(d)IDSI数をマイクロプロセッサに伝達する工程
と、(e)遅延スロットの総数からIDSI数を、マイクロプロセッサによって
減算することによって、必要数のノップ命令を計算する工程と、(f)マイクロ
プロセッサによって必要数のノップ命令を実行する工程とを含む。以下、高水準
言語コンパイラという用語は、アセンブリプログラミング言語よりハイレベルな
、CまたはC++などのプログラミング言語のためのコンパイラを示す。
【0019】 上述およびその他の目的、局面、利点は、図面を参照しながら、以下の本発明
の好適な実施形態の詳細な説明から、よりよく理解される。
【0020】 (発明の詳細な説明) 本発明は、動作中のマイクロプロセッサによって、動的な数の内在的なノップ
命令を挿入する方法に関する。内在的なノップ命令は、プログラム自体に実際の
ノップ命令を入れることなしに、マイクロプロセッサによって実行される動作な
し命令である。本発明の方法は、適切な数の内在的なノップ命令が、多重サイク
ル命令が起こるごとに、自動的に計算および実行されることを可能にする。以下
、ノップ命令という用語は、プログラマまたは高水準言語コンパイラの直接的な
介入なしに自動的に起こるプロセスを示す。適切な内在的なノップ命令数は、必
要な遅延スロットの総数から、挿入された遅延スロット命令(IDSI)数を減
算することによって、自動的にマイクロプロセッサによって計算される。
【0021】 IDSI数は好適にはアセンブラによってカウントされ、次いでマイクロプロ
セッサにとって利用可能となる。より好適には、この数は、アセンブラによって
コード化された命令内の遅延スロットフィールド内に入れられ、次いでマイクロ
プロセッサによって遅延スロットフィールドから取り出される。それゆえに、本
発明の方法によって、マイクロプロセッサは、追加のメモリリソースを必要とせ
ず、そしてプログラマまたは高水準言語コンパイラに、使用されていない遅延ス
ロットの各々にノップ命令を挿入させることを強制することなしに、自動的に必
要数の内在的なノップ命令を挿入することが可能になる。
【0022】 本発明による、効率的な遅延スロット使用方法の原理および動作は、図面およ
び添付の記載を参照してよりよく理解され得る。これらの図面は、説明の目的の
みに提示され、発明を限定するものではないことが理解されるべきである。
【0023】 ここで図面を参照すると、図3は、本発明による、効率的な遅延スロットを使
用する例示的な方法の模式的ブロック図である。図示されるように、プログラム
の少なくとも一部を表す、例示的な命令シーケンス22は、多重サイクル命令2
4を特徴とする。命令シーケンス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】 好適には、アセンブラは、多重サイクル命令用に挿入された有用な各遅延スロ
ット命令をカウントすることによって、挿入された遅延スロット命令数(IDS
I数)を判定する。
【0029】 ステップ3において、好適には、アセンブラは、IDSI数(使用された遅延
スロット数)をコード化された多重サイクル命令内の遅延スロットフィールド内
に入れる。命令の遅延スロットフィールドは、IDSI数を格納する追加の好適
なフィールドであり、典型的には(必ずしもそうではないが)2〜3ビット長で
ある。
【0030】 ステップ4において、多重サイクル命令のIDSI数は、アセンブラによって
マイクロプロセッサに与えられる。好適には、マイクロプロセッサは、動作中に
、コード化された命令の遅延スロットフィールドを調査することによってIDS
I数を取得し、必要な内在的なノップ命令数(使用されていない遅延スロット数
である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に示される方法による構築された例示的なプログラムの一部
の表示である。
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06F 9/45 G06F 9/30 320A 9/44 322F Fターム(参考) 5B013 AA11 AA12 5B033 AA01 AA02 AA10 AA13 BB00 BC02 BE06 BE07 5B081 AA07 BB03 CC21 CC24

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 複数の命令を実行中に、マイクロプロセッサによって必要数
    のノップ(動作なし)命令を自動的に挿入する方法であって、該複数の命令が少
    なくとも1つの多重サイクル命令を含み、遅延スロットの総数が該少なくとも1
    つの多重サイクル命令に必要であり、該方法が、 (a)該少なくとも1つの多重サイクル命令に関連した、挿入された遅延スロ
    ット命令(IDSI)数を判定する工程と、 (b)該遅延スロットの総数から該IDSI数を、該マイクロプロセッサによ
    って減算することによって、該ノップ命令の必要数を計算する工程と、 (c)該マイクロプロセッサによって該必要数のノップ命令を実行する工程と
    、 を包含する方法。
  2. 【請求項2】 前記少なくとも1つの多重サイクル命令に必要な前記遅延ス
    ロットの総数が、ハードウェア依存型である、請求項1に記載の方法。
  3. 【請求項3】 前記複数の命令を受け取るアセンブラを提供し、該複数の命
    令を前記マイクロプロセッサによる実行のために準備する工程をさらに包含し、
    該アセンブラを提供する工程が工程(a)が実行される前に実行され、工程(a
    )が、 (i)該アセンブラによって前記IDSI数をカウントする工程と、 (ii)該IDSI数を該マイクロプロセッサに伝達する工程と、 をさらに包含する、請求項1に記載の方法。
  4. 【請求項4】 前記IDSI数を前記マイクロプロセッサに伝達する工程が
    、 (I)前記少なくとも1つの多重サイクル命令内に遅延スロットフィールドを
    提供する工程と、 (II)前記アセンブラによって該IDSI数を該遅延スロットフィールドに
    入れる工程と、 (III)該マイクロプロセッサによって該IDSI数を該遅延スロットフィ
    ールドから取り出す工程と、 をさらに包含する、請求項3に記載の方法。
  5. 【請求項5】 複数の命令を実行中に、マイクロプロセッサによって必要数
    のノップ命令を自動的に挿入する方法であって、該複数の命令が、少なくとも1
    つの多重サイクル命令を含み、該方法は、 (a)該複数の命令を受け取るアセンブラを提供する工程と、 (b)該マイクロプロセッサに、該少なくとも1つの多重サイクル命令に必要
    な遅延スロットの総数を提供する工程と、 (c)前記アセンブラによって、該少なくとも1つの多重サイクル命令に関連
    したIDSI数を判定する工程と、 (d)該IDSI数を該マイクロプロセッサに伝達する工程と、 (e)該マイクロプロセッサによって、該遅延スロットの総数から該IDSI
    数を、該マイクロプロセッサによって減算することによって、該ノップ命令の必
    要数を計算する工程と、 (f)該マイクロプロセッサによって該必要数のノップ命令を実行する工程と
    、を包含する方法。
  6. 【請求項6】 前記少なくとも1つの多重サイクル命令に必要な前記遅延ス
    ロットの総数が、ハードウェア依存型である、請求項5に記載の方法。
  7. 【請求項7】工程(a)が、 (i)前記アセンブラによって前記IDSI数をカウントする工程 をさらに包含する、請求項5に記載の方法。
  8. 【請求項8】前記IDSI数を前記マイクロプロセッサに伝達する工程が、 (i)前記少なくとも1つの多重サイクル命令内に遅延スロットフィールドを
    提供する工程と、 (ii)前記アセンブラによって該IDSI数を該遅延スロットフィールドに
    入れる工程と、 (iii)該マイクロプロセッサによって該IDSI数を該遅延スロットフィ
    ールドから取り出す工程と、 をさらに包含する、請求項7に記載の方法。
JP2001500949A 1999-05-26 2000-04-27 マイクロプロセッサ用遅延スロット制御メカニズム Expired - Fee Related JP3639557B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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