JP2009508180A - マイクロプロセッサにおける効率的なサブプログラムリターン - Google Patents

マイクロプロセッサにおける効率的なサブプログラムリターン Download PDF

Info

Publication number
JP2009508180A
JP2009508180A JP2008515743A JP2008515743A JP2009508180A JP 2009508180 A JP2009508180 A JP 2009508180A JP 2008515743 A JP2008515743 A JP 2008515743A JP 2008515743 A JP2008515743 A JP 2008515743A JP 2009508180 A JP2009508180 A JP 2009508180A
Authority
JP
Japan
Prior art keywords
return
processor
storage medium
readable storage
instruction
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.)
Abandoned
Application number
JP2008515743A
Other languages
English (en)
Inventor
レノ,エリック・コー
ストローム,オイビン
ルント,モルテン・ドゥベルベー
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.)
Atmel Corp
Original Assignee
Atmel 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 Atmel Corp filed Critical Atmel Corp
Publication of JP2009508180A publication Critical patent/JP2009508180A/ja
Abandoned legal-status Critical Current

Links

Images

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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/394Routing
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)
  • Microcomputers (AREA)

Abstract

サブルーチンリターン演算を行なうための方法および媒体である。テスト演算(88、90)は、リターン演算(98)において他の演算(92、94)と並行して行なわれる。これらのテスト演算(88、90)およびリターン演算(96、98)は、単一の命令(86)に応答して行なわれる。

Description

この発明は、マイクロプロセッサにおけるサブプログラムリターン演算に関する。
発明の背景
プログラムは、ある特定のタスクを行なうサブルーチンを特徴として備えることが多い。タスクが行なわれた後で、プログラムフローはサブルーチンからメインプログラムに戻る。サブルーチンリターンを行なうための1つの一般的なメカニズムは、リターンアドレスレジスタの内容を条件付きでまたは無条件でプログラムカウンタに移動させてからプログラム実行を継続するということを伴う。また、ブール値を表わし得るリテラル定数を用いてリターン値レジスタが更新されてもよい。サブプログラムリターンへの別のアプローチは、リターンアドレスをスタックからプログラムカウンタに「ポップ」し、そこからプログラム実行を継続することである。この演算はまた、スプールアウトされたあらゆるレジスタファイル内容をスタックからレジスタファイルにポップしてもよい。
サブルーチンリターンを行なうためのこれらの方法は、実行するのに数サイクルを要する。図1において、典型的なパイプライン化されたCPUにおいて伝統的なリターン(「RET」)命令が実行される場合、その命令を実行するために5つのサイクル10が必要とされる。図2において、典型的なパイプライン化されたCPUは、プログラムカウンタ(「PC」)42と命令メモリ44とを含む。CPUは、異なるパイプライン段を隔てる4つの異なるパイプラインレジスタ46、52、56および60を有する。(レジスタ46と52との間の)命令デコード段は、現在の命令をデコードして制御信号を生成するための制御/デコード部(「CU」)48と、レジスタファイル50との双方を含む。(レジスタ52と56との間の)実行段は、算術演算論理装置(「ALU」)54を含む。(レジスタ56と60との間の)メモリ段は、データメモリ58を含む。図1を引続き参照すると、サイクル1の最中、命令フェッチ(「IF」)段12で、RET命令がフェッチされる(ブロック22)。サイクル2において、命令デコード(「ID」)段14で、正しい制御信号が生成され、レジスタファイルからリターンアドレスレジスタが読出される(ブロック24)。サイクル3において、実行(「EX」)段16で、リターンアドレスレジスタ内容が算術演算論理装置(「ALU」)を介して変更なしで書込まれる(ブロック26)。サイクル4の最中、メモリ(「MEM」)段で、リターンアドレスレジスタ内容がデータメモリを介して書込まれる。最後に、サイクル5において、書戻し(「WB」)20段で、リターンアドレスレジスタ内容がプログラムカウンタ(「PC」)に書込まれ、パイプラインがフラッシュされる(ブロック30)。パイプラインが一旦フラッシュされると、リターンアドレスにおける命令がプログラムメモリから読出されるまで、パイプラインは命令をまったく含まない。したがって、パイプラインフラッシュプロセスにおいて数クロックサイクルが浪費される。
同様の問題が、メモリ内のスタックからリターンアドレスレジスタをポップするリターン命令(「RETMEM」)について存在する。図3に示すように、サイクル1において、IF段で、RETMEM命令がフェッチされる(ブロック32)。サイクル2の最中、ID段で、正しい制御信号が生成される。サイクル3において、EX段の最中、データメモリへの制御信号がALUを介してルーティングされる(ブロック36)。サイクル4において、MEM段で、データメモリからリターンアドレスが読出される(ブロック38)。最後に、サイクル5において、WB段で、メモリから読出されたリターンアドレスがP
Cに書込まれ、パイプラインがフラッシュされる(ブロック40)。図1で説明したリターン命令と同様に、パイプラインフラッシュ後に数サイクルが浪費される。
より効率的なサブルーチンリターン演算を提供することが有利であろう。
発明の概要
例示的な一実施例では、リターン演算を必要とし、リターン値レジスタの内容に基づいて状態フラグをセットする命令がフェッチされる。状態フラグは、リターン命令を処理するために必要とされる少なくとも1つの他の演算と並行してセットされる。状態フラグは、i)リターンアドレスレジスタの内容がプログラムカウンタに移動されること、または、ii)リターンアドレスがスタックからプログラムカウンタにポップされることのうちの一方が起こる前にセットされる。別の実施例では、プロセッサ読取り可能な記憶媒体が、プロセッサに、このサブルーチンリターン演算を行なわせる。
この発明のさらに別の例示的な実施例では、サブルーチンリターン演算は、リターンアドレスをプログラムカウンタに置く。リターン値レジスタに対してテスト演算が実行され、テスト演算は、リターン演算を処理するために必要とされる少なくとも1つの他の演算と並行して行なわれる。プログラムフローはターゲットアドレスに変更される。上述のステップの各々は、単一の命令に応答して行なわれる。一実施例では、プロセッサ読取り可能な記憶媒体は、プロセッサにこのサブルーチンリターン演算を行なわせる命令を格納する。
発明の詳細な説明
サブルーチンリターン演算の最中、リターン値レジスタのテストに従って(プロセッサの状態レジスタにおいて)状態フラグが更新される、より効率的なサブルーチンリターン演算が提供される。(先行技術では、テスト演算、たとえばリターン値レジスタのテストは、別個の命令に応答して行なわれる。)一実施例では、状態フラグは、条件付きリターン命令などの単一の命令、およびリターン演算を取り入れた単一の命令を実行する演算と並行してセットされる。命令はプロセッサ読取り可能媒体に格納され、この媒体は、電子回路、半導体記憶装置、ROM、フラッシュメモリ、フロッピー(登録商標)ディスケット、コンパクトディスク、光ディスクなどのような、情報を格納または転送可能なあらゆる媒体を含む。
これらの命令は既存のハードウェアによって実行され得る。図4において、これらの命令を実行するための例示的なCPUは、PC62と命令メモリ64とを含む。CPUは、異なる段を隔てる4つのパイプラインレジスタ(IF/ID66、ID/EX70、EX/MEM74、およびMEM/WB78)を含む。レジスタ66と70との間のID段は、現在の命令をデコードして正しい制御信号を生成するための制御/デコード部68を含む。ID段はまた、レジスタファイル132も含む。レジスタ70と74との間のEX段は、ALU72とフラグレジスタ84とを含む。レジスタ74と78との間のMEM段は、データメモリ76を含む。アドレスが(レジスタ78の後の)WB段に到達すると、パイプラインはフラッシュされ、フェッチアドレスがPC62に書込まれる。マルチプレクサ118は、どのアドレスがレジスタファイルまたはプログラムカウンタに書込まれるかを判断する(これについては以下により詳細に説明する)。他の実施例では、プロセッサはデータ転送などの異なる特徴を有していてもよく、上述のように、図4で説明されたCPUは例示的なものであり、ここに説明する、より効率的なサブルーチンリターン演算を実行可能な唯一のプロセッサではない。
この発明の一実施例では、当該より効率的なサブルーチンリターン演算を用いた命令の実行中、テスト演算は他の演算と並行して行なわれる。一実施例では、図5に示すように、リターン(「return_with_test」)命令が実行される場合、サイクル1の最中、IF段で、return_with_test命令がフェッチされる(ブロック86)。サイクル2において、return_with_testはID段に入り、正しい制御信号が生成され、レジスタファイルからリターンアドレスレジスタが読出される(ブロック88)。サイクル3において、return_with_testはID段にもう1サイクル保持される(一実施例では、これは、デコード段において、命令を2つの「マイクロ演算」に分割することによって行なわれてもよく、一方のマイクロ演算はテスト演算を行ない、他方のマイクロ演算はリターン演算を行なう)。この2回目のサイクルにおいて、レジスタファイルからリターン値レジスタが読出され、ALUにテスト演算を行なうよう命令する制御信号が生成される(ブロック90)。サイクル3において、EX段で、リターンアドレス内容がALUを介して変更なしで書込まれる(ブロック92)。サイクル4の最中、EX段で、ALUは、値レジスタのテストに対応するフラグをセットする(ブロック94)。(この実施例では、状態フラグは、リターン値レジスタの内容とゼロとの比較に従ってセットされる。この実施例で用いられる状態フラグは、オーバフロー(「V」)、負の値(「N」)、ゼロ結果(「Z」)、および算術または論理演算の後の繰上がり(「C」)を示す。他の実施例では異なる状態フラグが用いられてもよく、および/または、他の実施例では状態フラグは異なるようにセットされてもよい。)サイクル4の最中、MEM段で、リターンアドレスレジスタ内容がデータメモリを介して書込まれる(ブロック96)。サイクル5の最中、WB段で、リターンアドレスレジスタ内容がPCに書込まれ、パイプラインがフラッシュされる(ブロック98)。パイプラインフラッシュのために使用されなかったであろうサイクルを使用して、テスト演算が行なわれている。
別の実施例では、メモリ内のスタックからリターンアドレスレジスタをポップするリターン命令(「pop_with_test」)の実行中に、テスト演算が行なわれてもよい。図6において、サイクル1において、IF段で、pop_with_test命令がフェッチされる(ブロック100)。サイクル2の最中、ID段で、正しい制御信号が生成される(ブロック102)。サイクル3において、pop_with_testはIDにもう1サイクル保持される(一実施例では、命令はID段において2つのマイクロ演算(サブルーチンリターン演算およびテスト演算)にデコードされる)。レジスタファイルからリターン値レジスタが読出され、ALUにテスト演算を行なうよう命令する制御信号が生成される(ブロック104)。サイクル3において、EX段で、データメモリへの制御信号がALUを介してルーティングされる(ブロック106)。サイクル4において、EX段で、ALUは、リターン値レジスタのテストに対応するフラグをセットする(ブロック108)。同じサイクルの最中、MEM段で、データメモリからリターンアドレスが読出される(ブロック110)。サイクル5において、WB段で、メモリから読出されたリターンアドレスがPCに書込まれ、パイプラインがフラッシュされる(ブロック112)。
この発明の他の実施例は、上述の実施例と異なっていてもよい。これらの実施例は、命令を実行するために、より少ない、または追加のクロックサイクルを必要としてもよい。他の実施例は、命令を実行するために、異なるハードウェアを必要としてもよい。さらに他の実施例は、異なるサブプログラムリターン演算および命令に取入れられてもよい。
図5および図6は、「return_with_test」命令および「pop_with_test」命令の例示的な実施例をそれぞれ示す。「return_with_test」命令では、「リターン」は、リターン値レジスタにおける値のテストとともに行なわれる。「テスト」は、特定されたレジスタをテストし、それに応じて条件コードフラグをセットする。「pop_with_test」命令は、リターン値レジスタにおける値のテストとともに、「ポップ」(スタックからのワードをある特定のレジスタまたはプログラムカウンタにロードすること;PCへのポップはパイプ
ラインをフラッシュし、スタックからロードされたアドレスからの命令のフェッチを開始する)を行なう。
制御/デコード部からさまざまな信号が必要とされる。図4に戻り、一実施例において必要とされる信号を以下に挙げる。
pcmux_sel 114−プログラムカウンタが順次プログラムアドレスを用いて更新されるか、またはリターン命令によって与えられるアドレスを用いて更新されるかを選択するために使用されるセレクタ信号。
wbmux_sel 116−どのアドレスをレジスタファイルにまたはプログラムカウンタに書込むべきかを判断するために書戻し段によって使用されるセレクタ信号。信号が論理「0」である場合、アドレスはEX/MEMパイプライン段からのALU結果から生じる。信号が論理「1」である場合、アドレスはデータメモリから生じる。
as_ctrl 120−ALU内の加算器がレジスタファイルからのオペランドに対して減算を行なうか、または加算を行なうかを選択するために使用される制御信号。
zeromux_sel 122−ALUへの入力オペランドBを強制的に整数値ゼロにするために使用される信号。
readreg1 124−オペランド1についてのレジスタファイルレジスタ番号。
readreg2 126−オペランド2についてのレジスタファイルレジスタ。
loadflag 128−状態レジスタがフラグ設定を更新できるようにする制御信号。
writeaddr 130−結果が書戻されるレジスタについてのレジスタファイルレジスタ番号。
以下の表は、RET命令のサイクルにおける制御/デコード部からの例示的な出力を示している。この表において識別されたレジスタを以下に挙げる。
R12−リターン値レジスタ。テスト演算はこのレジスタに対して行なわれる。
LR−リンクレジスタ。サブプログラムが完了した後で戻るべきアドレスを保持する。LRはまた、リターンアドレスレジスタ(RAR)とも呼ばれてもよい。
PC−プログラムカウンタ。現在実行中の命令のアドレスを保持する。
以下の表は、return_with_test命令のサイクルにおける制御/デコード部からの例示的な出力を示している。
Figure 2009508180
以下の表は、pop_with_test命令のサイクルにおける制御/デコード部からの例示的な出力を示している。
Figure 2009508180
「return_with_test」命令および「pop_with_test」命令は、他の命令の一部として実行可能である。たとえば、「return_with_test」命令は、ある特定の条件が真である場合にサブルーチンからのリターンがあるという条件付きリターン命令の一部として実行可能である。値はリターンレジスタに移動され、リターン値がテストされ、フラグがセットされる。この命令のある特定の例は、ATMEL AVR32命令セットにおける「ret{cond4}」命令である。以下の疑似コードはret{cond4}命令を説明している(SPはスタックポインタレジスタである)。
演算:
Figure 2009508180
シンタックス:
Figure 2009508180
オペランド:
Figure 2009508180
状態フラグ:
演算CP R12,0の結果、フラグがセットされる。
Figure 2009508180
以下の表は、上に用いられた簡略記憶記号の一部、および以下の「多数のレジスタをロードする」命令についての疑似コードを説明している。
Figure 2009508180
演算CP R12,0は、比較または演算を伴わない減算演算である。この特定の場合、演算結果=R12−0である。
「return_with_test」演算が採用され得る別の命令は、AVR32命令セットからの「多数のレジスタをロードする」命令である。この命令は、レジスタポインタによって指示された連続するワードを、命令で特定されたレジスタにロードする。PCはロード可能であり、ロードされたターゲットアドレスへのジャンプをもたらす。PCがロードされる場合、R12におけるリターン値がテストされ、フラグが更新される。リターン値は−1、0または1に随意にセットされてもよい。以下の疑似コードはこの命令を説明している(SPはスタックポインタである)。
Figure 2009508180
シンタックス:
Figure 2009508180
オペランド:
Figure 2009508180
状態フラグ:
フラグは、Reglist16[PC]==1である場合のみ更新される。
それらは、演算CP R12,0の結果、セットされる。
Figure 2009508180
「pop_with_test」演算を採用する同様の命令が採用されてもよく、その場合、SPによって指示されたワードは、命令で特定されたレジスタにロードされる。
「pop_with_test」演算が採用され得る命令は、AVR32命令セットからの「多数のレジスタをスタックからポップする」(「POPM」)命令である。この命令は、SPによって指示された連続するワードを、命令で特定されたレジスタにロードする。
サブルーチンリターン演算が異なる命令にどのように採用され得るかを示す特定の例が上述されてきたが、他の実施例はサブルーチン演算を異なる命令に取入れてもよい。
このより効率的なサブルーチンリターン演算の一利点は、コードサイズの減少である。なぜなら、テスト演算がリターン演算によって暗黙的に行なわれ得るため、明示的な「テストリターンレジスタ」命令が削除可能だからである。別の利点は、リターンレジスタテストが、プログラムが戻る先の命令のフェッチングと並行して行なわれるために、実行時間が短くなることである。
上述の命令および演算は、RISCマシンおよびCISCマシンの双方において採用され得る。
この発明を特定の例示的な実施例について説明してきたが、変形およびこれらの実施例への追加がこの発明の原理から逸脱することなくなされ得ることを、当業者であれば認識するであろう。たとえば、リターン演算は実行されるためにより多いまたはより少ないサ
イクルを必要としてもよく、または、リターン演算は異なる命令の一部であってもよく、もしくは、リターン演算を実行するプロセッサは異なるアーキテクチャを有していてもよい。別の実施例では、リターン演算が1サイクルで完了され得るよう(すなわち、単一の命令に応答して行なわれる2つのマイクロ演算が1サイクルで完了されるよう)、より多くのハードウェアが追加されてもよい。
先行技術においてリターン命令がどのように実行されるかを示す図である。 先行技術におけるパイプライン化されたCPUのブロック図である。 先行技術においてメモリ内のスタックからリターンアドレスレジスタをポップするリターン命令がどのように実行されるかを示す図である。 この発明の例示的な一実施例におけるパイプライン化されたCPUのブロック図である。 この発明の一実施例におけるリターン命令の例示的な実行を示す図である。 この発明の一実施例において実行される、メモリ内のスタックからリターンアドレスレジスタをポップするリターン命令の例示的な実行を示す図である。

Claims (27)

  1. サブルーチンリターン演算を行なうための方法であって、前記方法は、
    a)前記リターン演算を必要とする命令をフェッチするステップと、
    b)前記リターン演算を処理するために必要とされる少なくとも1つの他の演算と並行して、リターン値レジスタの内容に基づいて状態フラグをセットするステップとを備え、前記状態フラグは、
    i)リターンアドレスレジスタの内容がプログラムカウンタに移動されること、または、
    ii)リターンアドレスがスタックから前記プログラムカウンタにポップされること
    のうちの一方が起こる前にセットされる、方法。
  2. リターン条件が満たされているとテスト演算が判断したときのみ、前記リターンアドレスレジスタの前記内容が前記プログラムカウンタに移動されるか、またはリターンアドレスが前記スタックから前記プログラムカウンタにポップされる、請求項1に記載の方法。
  3. 前記リターン演算は、前記リターン演算を行なうための一方のマイクロ演算と、テスト演算を行なうための他方のマイクロ演算という2つのマイクロ演算に分割される、請求項1に記載の方法。
  4. 前記状態フラグは、マイクロプロセッサの算術演算論理装置を介してリターンアドレスレジスタの内容を書込むことと並行してセットされる、請求項1に記載の方法。
  5. 前記状態フラグは、制御信号をマイクロプロセッサのデータメモリに、前記マイクロプロセッサの算術演算論理装置を介してルーティングすることと並行してセットされる、請求項1に記載の方法。
  6. ステップa)およびステップb)は、単一の命令に応答して行なわれる、請求項1に記載の方法。
  7. プロセッサにより実行されると、前記プロセッサにサブルーチンリターン演算を行なうための方法を行なわせる命令を格納したプロセッサ読取り可能な記憶媒体であって、前記方法は、
    a)前記リターン演算を必要とする命令をフェッチするステップと、
    b)前記リターン命令を処理するために必要とされる少なくとも1つの他の演算と並行して、リターン値レジスタの内容に基づいて状態フラグをセットするステップとを備え、前記状態フラグは、
    i)リターンアドレスレジスタの内容がプログラムカウンタに移動されること、または、
    ii)リターンアドレスがスタックから前記プログラムカウンタにポップされること
    のうちの一方が起こる前にセットされる、プロセッサ読取り可能な記憶媒体。
  8. リターン条件が満たされているとテスト演算が判断したときのみ、前記リターンアドレスレジスタの前記内容が前記プログラムカウンタに移動されるか、またはリターンアドレスが前記スタックから前記プログラムカウンタにポップされる、請求項7に記載のプロセッサ読取り可能な記憶媒体。
  9. 前記リターン演算は、前記リターン演算を行なうための一方のマイクロ演算と、テスト演算を行なうための他方のマイクロ演算という2つのマイクロ演算に分割される、請求項7に記載のプロセッサ読取り可能な記憶媒体。
  10. 前記状態フラグは、マイクロプロセッサの算術演算論理装置を介してリターンアドレスレジスタの内容を書込むことと並行してセットされる、請求項7に記載のプロセッサ読取り可能な記憶媒体。
  11. 前記状態フラグは、制御信号をマイクロプロセッサのデータメモリに、前記マイクロプロセッサの算術演算論理装置を介してルーティングすることと並行してセットされる、請求項7に記載のプロセッサ読取り可能な記憶媒体。
  12. 前記方法は、前記リターンアドレスレジスタの前記内容または前記リターンアドレスが前記プログラムカウンタに書込まれる前にパイプラインをフラッシュするステップをさらに備える、請求項7に記載のプロセッサ読取り可能な記憶媒体。
  13. ステップa)およびステップb)は、単一の命令に応答して行なわれる、請求項7に記載のプロセッサ読取り可能な記憶媒体。
  14. サブルーチンリターン演算を行なうための方法であって、
    a)リターンアドレスをプログラムカウンタに置くステップと、
    b)リターン値レジスタに対してテスト演算を実行するステップとを備え、前記テスト演算は、リターン演算を処理するために必要とされる少なくとも1つの他の演算と並行して行なわれ、前記方法はさらに、
    c)プログラムのフローをターゲットアドレスに変更するステップと、
    d)単一の命令に応答してステップa)、ステップb)およびステップc)を行なうステップとを備える、方法。
  15. 前記プログラムのフローを変更する前記ステップは、リターン条件が満たされていると前記テスト演算が判断したときのみ行なわれる、請求項14に記載の方法。
  16. 前記サブルーチンリターン演算は、命令デコード段にもう1サイクル保持される、請求項14に記載の方法。
  17. 前記テスト演算のための状態フラグは、マイクロプロセッサの算術演算論理装置を介してリターンアドレスレジスタの内容を書込むことと並行してセットされる、請求項14に記載の方法。
  18. 前記テスト演算のための状態フラグは、マイクロプロセッサの算術演算論理装置の下流に位置する前記マイクロプロセッサのデータメモリに制御信号をルーティングすることと並行してセットされる、請求項14に記載の方法。
  19. 多数のレジスタをロードするステップをさらに備える、請求項14に記載の方法。
  20. リターン値レジスタにおいてリターン値をセットするステップをさらに備える、請求項14に記載の方法。
  21. プロセッサにより実行されると、前記プロセッサにサブルーチンリターン演算を行なうための方法を行なわせる命令を格納したプロセッサ読取り可能な記憶媒体であって、前記方法は、
    a)リターンアドレスをプログラムカウンタに置くステップと、
    b)リターン値レジスタに対してテスト演算を実行するステップとを備え、前記テスト演算は、リターン演算を処理するために必要とされる少なくとも1つの他の演算と並行し
    て行なわれ、前記方法はさらに、
    c)プログラムのフローをターゲットアドレスに変更するステップと、
    d)単一の命令に応答してステップa)、ステップb)およびステップc)を行なうステップとを備える、プロセッサ読取り可能な記憶媒体。
  22. 前記プログラムのフローを変更する前記ステップは、リターン条件が満たされていると前記テスト演算が判断したときのみ行なわれる、請求項21に記載のプロセッサ読取り可能な記憶媒体。
  23. 前記リターン演算は、命令デコード段にもう1サイクル保持される、請求項21に記載のプロセッサ読取り可能な記憶媒体。
  24. 前記テスト演算のための状態フラグは、マイクロプロセッサの算術演算論理装置を介してリターンアドレスレジスタの内容を書込むことと並行してセットされる、請求項21に記載のプロセッサ読取り可能な記憶媒体。
  25. 前記テスト演算のための状態フラグは、マイクロプロセッサの算術演算論理装置の下流に位置する前記マイクロプロセッサのデータメモリに制御信号をルーティングすることと並行してセットされる、請求項21に記載のプロセッサ読取り可能な記憶媒体。
  26. 前記方法は、多数のレジスタをロードするステップをさらに備える、請求項23に記載のプロセッサ読取り可能な記憶媒体。
  27. 前記方法は、リターン値レジスタにおいてリターン値をセットするステップをさらに備える、請求項23に記載のプロセッサ読取り可能な記憶媒体。
JP2008515743A 2005-06-10 2006-05-25 マイクロプロセッサにおける効率的なサブプログラムリターン Abandoned JP2009508180A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/149,611 US20060282821A1 (en) 2005-06-10 2005-06-10 Efficient subprogram return in microprocessors
PCT/US2006/020427 WO2006135549A2 (en) 2005-06-10 2006-05-25 Efficient subprogram return in microprocessors

Publications (1)

Publication Number Publication Date
JP2009508180A true JP2009508180A (ja) 2009-02-26

Family

ID=37525517

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008515743A Abandoned JP2009508180A (ja) 2005-06-10 2006-05-25 マイクロプロセッサにおける効率的なサブプログラムリターン

Country Status (7)

Country Link
US (2) US20060282821A1 (ja)
EP (1) EP1891519B1 (ja)
JP (1) JP2009508180A (ja)
KR (1) KR20080014062A (ja)
CN (1) CN101194228B (ja)
TW (1) TW200709043A (ja)
WO (1) WO2006135549A2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060282821A1 (en) * 2005-06-10 2006-12-14 Renno Erik K Efficient subprogram return in microprocessors
CN100442226C (zh) * 2007-07-02 2008-12-10 美的集团有限公司 微波炉返回键的设定方法
US10802990B2 (en) * 2008-10-06 2020-10-13 International Business Machines Corporation Hardware based mandatory access control
CN101551749B (zh) * 2009-05-11 2012-08-22 中国科学院计算技术研究所 随机测试程序生成方法和系统以及设计验证方法
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
WO2012103253A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Multilevel conversion table cache for translating guest instructions to native instructions
WO2014151691A1 (en) * 2013-03-15 2014-09-25 Soft Machines, Inc. Method and apparatus for guest return address stack emulation supporting speculation
WO2014151652A1 (en) 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0185215B1 (en) * 1984-11-21 1993-09-22 Harris Corporation Forth-like language microprocessor
US4814976C1 (en) * 1986-12-23 2002-06-04 Mips Tech Inc Risc computer with unaligned reference handling and method for the same
US4926355A (en) * 1987-07-02 1990-05-15 General Datacomm, Inc. Digital signal processor architecture with an ALU and a serial processing section operating in parallel
US4891754A (en) * 1987-07-02 1990-01-02 General Datacomm Inc. Microinstruction sequencer for instructing arithmetic, logical and data move operations in a conditional manner
US5193205A (en) * 1988-03-01 1993-03-09 Mitsubishi Denki Kabushiki Kaisha Pipeline processor, with return address stack storing only pre-return processed address for judging validity and correction of unprocessed address
JP2796590B2 (ja) * 1991-08-07 1998-09-10 三菱電機株式会社 メモリ装置及びそれを使用したデータ処理装置
US5386563A (en) * 1992-10-13 1995-01-31 Advanced Risc Machines Limited Register substitution during exception processing
JP3499252B2 (ja) * 1993-03-19 2004-02-23 株式会社ルネサステクノロジ コンパイル装置及びデータ処理装置
US5925125A (en) * 1993-06-24 1999-07-20 International Business Machines Corporation Apparatus and method for pre-verifying a computer instruction set to prevent the initiation of the execution of undefined instructions
GB2281986B (en) * 1993-09-15 1997-08-06 Advanced Risc Mach Ltd Data processing reset
JP3543181B2 (ja) * 1994-11-09 2004-07-14 株式会社ルネサステクノロジ データ処理装置
US5701493A (en) * 1995-08-03 1997-12-23 Advanced Risc Machines Limited Exception handling method and apparatus in data processing systems
DE69629495T2 (de) * 1995-10-06 2004-06-09 Advanced Micro Devices, Inc., Sunnyvale Vereinheitlichter multifunktions-operationsverteiler für die ungeordnete befehlsexekution in einem superskalaren prozessor
US5926642A (en) * 1995-10-06 1999-07-20 Advanced Micro Devices, Inc. RISC86 instruction set
US5778208A (en) * 1995-12-18 1998-07-07 International Business Machines Corporation Flexible pipeline for interlock removal
US5884089A (en) * 1997-10-14 1999-03-16 Motorola, Inc. Method for calculating an L1 norm and parallel computer processor
US6434584B1 (en) * 1998-06-04 2002-08-13 Texas Instruments Incorporated Flexible accumulator register file for use in high performance microprocessors
US7472259B2 (en) * 2000-12-06 2008-12-30 Analog Devices, Inc. Multi-cycle instructions
US6954849B2 (en) * 2002-02-21 2005-10-11 Intel Corporation Method and system to use and maintain a return buffer
US7051190B2 (en) * 2002-06-25 2006-05-23 Intel Corporation Intra-instruction fusion
CN1266595C (zh) * 2002-06-28 2006-07-26 联想(北京)有限公司 一种嵌入式操作系统半开放自动升级的方法
US7571258B2 (en) * 2002-12-12 2009-08-04 Adaptec, Inc. Method and apparatus for a pipeline architecture
US20060282821A1 (en) 2005-06-10 2006-12-14 Renno Erik K Efficient subprogram return in microprocessors

Also Published As

Publication number Publication date
US8555041B2 (en) 2013-10-08
TW200709043A (en) 2007-03-01
WO2006135549A2 (en) 2006-12-21
EP1891519B1 (en) 2016-12-07
EP1891519A2 (en) 2008-02-27
KR20080014062A (ko) 2008-02-13
US20100250904A1 (en) 2010-09-30
EP1891519A4 (en) 2010-05-19
CN101194228A (zh) 2008-06-04
WO2006135549A8 (en) 2008-01-10
WO2006135549A3 (en) 2007-08-16
CN101194228B (zh) 2011-10-19
US20060282821A1 (en) 2006-12-14

Similar Documents

Publication Publication Date Title
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
KR100900364B1 (ko) 인스트럭션 실행 디바이스, 인스트럭션 실행 방법 및 컴퓨터 판독가능 메모리 매체
JP2009508180A (ja) マイクロプロセッサにおける効率的なサブプログラムリターン
JP2010532063A (ja) 条件命令を無条件命令および選択命令へと拡張する方法およびシステム
KR20090061644A (ko) 명시적 서브루틴 호출의 브랜치 예측 동작을 에뮬레이트하기 위한 방법 및 장치
EP1886216A2 (en) Controlling out of order execution pipelines using skew parameters
JP2006313422A (ja) 演算処理装置及びデータ転送処理の実行方法
US6725359B2 (en) Address stage logic for generating speculative address operand interim results of preceding instruction by arithmetic operations and configuring
KR101183270B1 (ko) 오퍼랜드 의존성으로 인한 기능 정지를 감소시키는 방법 및데이터 프로세서
JP2010271818A (ja) 命令融合演算装置および命令融合演算方法
WO2002008893A1 (en) A microprocessor having an instruction format containing explicit timing information
US9710269B2 (en) Early conditional selection of an operand
US20070079076A1 (en) Data processing apparatus and data processing method for performing pipeline processing based on RISC architecture
JP4607958B2 (ja) プロセッサおよびプログラム変換装置
KR20070108936A (ko) 조건부 명령어가 실행되지 않을 경우 소스 오퍼랜드를대기하는 것을 중지하는 방법
JP3599499B2 (ja) 中央処理装置
US7020769B2 (en) Method and system for processing a loop of instructions
TWI428822B (zh) 微處理器及其相關方法
JP2008299729A (ja) プロセッサ
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
US9135006B1 (en) Early execution of conditional branch instruction with pc operand at which point target is fetched
US20050071830A1 (en) Method and system for processing a sequence of instructions
JP2503223B2 (ja) 先行制御方式
JP2005149297A (ja) プロセッサおよびそのアセンブラ
JP2005134987A (ja) パイプライン演算処理装置

Legal Events

Date Code Title Description
A625 Written request for application examination (by other person)

Free format text: JAPANESE INTERMEDIATE CODE: A625

Effective date: 20090525

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20090528

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090528

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090605

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090528

A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20100427