JP2005516301A - 命令実行方法 - Google Patents

命令実行方法 Download PDF

Info

Publication number
JP2005516301A
JP2005516301A JP2003564729A JP2003564729A JP2005516301A JP 2005516301 A JP2005516301 A JP 2005516301A JP 2003564729 A JP2003564729 A JP 2003564729A JP 2003564729 A JP2003564729 A JP 2003564729A JP 2005516301 A JP2005516301 A JP 2005516301A
Authority
JP
Japan
Prior art keywords
instruction
program
block
instructions
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2003564729A
Other languages
English (en)
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 JP2005516301A publication Critical patent/JP2005516301A/ja
Pending 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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
    • 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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】 この発明は、プロセッサにおける命令実行方法に関し、この方法においては、一方で、プログラム制御ユニットが、このユニットに実装したプログラムカウンタのプログラムカウンタの状態を用いて、プログラムメモリのその時点で実行すべき命令をアドレス指定し、他方で、このプログラム制御ユニットが、このアドレス指定した命令を読み出して、復号し、そして実行に移しており、この発明の課題は、命令ブロックの高速命令実行によって、EPICプロセッサ技術を拡張し、それによって通常のサブルーチンコールを実行することなく、命令の実行を加速することである。
【解決手段】 この課題は、一定数の順番に実行すべき命令を提供し、そのため命令実行後の戻りアドレスが決まっているブロック命令の形態において、ジャンプ命令が発生した場合に、プログラム制御ユニットが、その時点のプログラムカウンタの状態の保存と、一連の命令の命令数の保存とを更に実行することによって解決される。そうすることによって、この命令ブロックの最後の命令を実行した後に、保存していたプログラムカウンタの状態から、プログラムカウンタの計数プロセスが再び続行される。

Description

この発明は、プロセッサにおける命令実行方法に関し、この方法においては、一方で、プログラム制御ユニットが、プログラムカウンタの計数モードとステップ幅を設定するとともに、その他にジャンプ命令が発生した場合に、このカウンタがそのアドレスから計数モードを続行するジャンプアドレスを保存する形で、プログラム制御ユニットが、このユニットに実装したプログラムカウンタのプログラムカウンタの状態を用いて、プログラムメモリのその時点で実行すべき命令をアドレス指定し、他方で、プログラム制御ユニットが、このアドレス指定した命令を読み出して、復号し、そして実行に移すものである。
これまで半導体製造業者は、プロセッサの性能向上に対する要求には、クロック周波数、処理幅および複雑さを向上させることによって応えることができた。この開発方向には、物理的な限界がある。
そこで、プログラム実行プロセスにおける並列処理の認識と利用による更なる性能向上が期待されている。
非特許文献1には、これに関する新しい開発方向に対する包括的な記述がある。
ここでは、並列処理とは、一つのプロセッサ内における、互いに独立したプロセスの並行的に実行可能な演算および計算を意味するものとする。
このプロセッサの開発方向は、命令レベル並列化(ILP:Instruction-Level Parallelism )という呼称でも知られている。ILPは、プロセッサとコンパイラ技術を組み合わせることにより実現され、それは、RISCライクな演算を並列的に実行することにより、実行速度を向上させるものである。
ILPベースのシステムは、一方では、逐次処理のプロセッサに対して実現された従来の高水準プログラム言語を、他方では、含まれている並列処理を自動的に識別するためのコンパイラ技術とハードウェアを使用している。しかし、プログラム技術を利用していることにより、ILPベースのシステムは、基本的にプログラム分岐を並列処理できないということを考慮しなければならない。
従来の技術では、スーパースカラープロセッサが知られている。ここでは、逐次的な命令フロー用のILPプロセッサが実現されている。この場合、プログラムは、使用可能な並列処理に関する情報を全く持っていない。ハードウェアによって、それを検出しなければならない。このことは、そのようなプロセッサは、絶えず増大するハードウェアの複雑さを必要とし、その際プロセッサの性能における要求が増大するに従い、この複雑さは、より高い比率で増大するという理由となっている。
更に、従来の技術では、超長命令語(VLIW)プロセッサが知られている。この場合、プログラムは、存在する並列処理に関する情報を有する。このプロセッサ技術に関しては、プログラム分岐の先取り命令実行(vorausschauende Befehlsabarbeitung)、分岐予測および投機的命令実行を適用できないという状況が欠点である。
それに対して、明示的並列命令コンピューティング(EPIC)プロセッサ技術は、更に発展したものとして、前述した両方の開発方向の利点を兼ね備えている。この場合、複雑さの重点が、ハードウェアから、コンパイラに、すなわちソフトウェアに移っている。
そこで、EPICプログラムは、ILPの他に、更にどのような条件において、所定のステートメントを実行すべきであるかをプロセッサに伝えている。プロセッサは、すべての命令を実行するが、追加条件を満足する結果だけを引き継いでいる(述語付き命令)。
この技術においても、命令の決まったブロックの命令実行は、命令負担のかかるサブルーチンによってのみ実現可能であるという欠点が残されたままである。また、この場合、戻りアドレスが確実に決まるように、プログラム分岐の分岐予測を最適に構成することは不可能である。
この欠点は、特にそのような命令ブロックが、プログラムに頻繁に現れる場合に、目立った性能の劣化を起こす。
まさにプログラム制御の遅延スロットにおいて処理される命令を能率的に実行するような考慮も行われていない。
従来の技術において周知の、プログラム分岐を能率的に処理するためのソフトウェアにもとづく方法は、ステートメントを「インライン」で実行できるようにプログラムすることにより、呼び出されるサブルーチンへのジャンプと戻りを低減するものである。しかし、これは、関数呼出しも行われるプログラム領域内に、サブルーチン(UP)を完全にコピーすることを前提としている。この場合、このように、プログラムにおいて、UPを繰り返し発生させることは、メモリスペースの高負荷になるという欠点を孕んでいる。
"Computer Architecture a quantitative Approach" von John L. Hennessy, David A. Patterson (ISDN 1-55860-329-8)
そのため、この発明の課題は、通常のサブルーチンコールに優る、命令ブロックの高速命令実行性能を持つように、EPICプロセッサ技術を拡張することである。
この発明にもとづく、この課題の解決法は、ハードウェア面において、プロセッサ内に追加のブロック命令を実装するものと規定しており、その結果プログラム分岐時には、一定数の順番に実行すべき命令が提供され、そのため命令実行後の戻りアドレスが決まっており、そしてプログラム分岐が発生した場合に、プログラム制御ユニットが、サブルーチンの代わりに、この実装されたブロック命令を選択的に呼び出し、その際その時点のプログラムカウンタの状態の保存と一連の命令の命令数の保存とが行われるものである。
この命令ブロックの最後の命令を実行した後に、再び保存していたプログラムカウンタの状態を元に、プログラムカウンタの計数プロセスを続行する。
この発明にもとづく、この課題の解決法の別の実施形態は、演算装置の条件付き命令(述語付き命令)として、この追加のブロック命令を実行するものと規定しており、その際命令語には、どのような条件の元で、命令ブロックの保存された数の命令を実行するのかという情報を含んでいる。
このようにして、特別なブロック命令を条件付き命令として実行することも実現されている。
この発明にもとづく、この課題のEPICプロセッサ技術に適合した形の有利な解決法では、条件付きブロック命令によって操作されるプログラム分岐の際に、実行フェーズの関係する遅延スロットの最後において、条件照会の結果が評価されるまで、二つのパスが、暫定的な実行フェーズにおいて実行されるものと規定されている。
この場合、この条件を満たさない代替パスが却下された後に、直ちに、他方のパスのその時点で有効となった実行フェーズの進捗した位置から、命令の実行を続行する。
命令は、主にそれぞれ複数の装置タイミング期間においてのみ、読み出されて、復号され、そして実行されるので、遅延スロットは、そのような処理中にある各命令に対して、それぞれプログラム制御分野における実行チャネルとして機能するものである。それらは、各命令の実行フェーズ後に、ようやく終了されることとなる。
そのため、次の命令が読み出し可能となる前に、先行する命令の実行フェーズを無条件に履行し終える必要がないということによって、命令処理時間を低減している。
しかし、このことは、遅延スロットにおいて処理中にある命令を、幾つかの装置タイミングに対してオーバーラップして実行させるという結果となる。
この発明にもとづくブロック命令の利用に対して、すべての遅延スロットが終了した状態でもある、可能な最も早い時点にジャンプからの戻りを設定する形で、事前に決まっている正確に知られた戻り時点での遅延スロット処理を回避することによっても、このブロックに属する命令を実行した後において、時間的な利点が生じる。このような有利な時間的な制御は、サブルーチンを実行する場合には不可能である。
この発明にもとづく、この課題の解決法の別の有利な実施形態では、第一のブロック命令の実行フェーズ時に、第二のブロック命令が発生した場合、第一の命令ブロックにおいて、所要の分岐を行うものと規定している。
中断された第一の命令ブロックのその時々の処理状態と、第二のブロック命令の終了からの戻りのために保存する最終アドレスとは、プログラム制御用のローカルスタックに保存される。
この解決法は、実行するブロック命令が、組み込み型としても実行されるものと規定している。こうすることによって、ブロック命令毎に、先行して中断された命令ブロックの処理状態のアドレスと、別の命令ブロックの実行する命令の命令数により明らかとなる戻りアドレスとを、ローカルスタックに保存して、戻る際に、そこから再び読み出すことを保証することができる。このローカルスタックは、プログラム制御部にある。
この発明にもとづく、この課題の解決法のコンパイラに適合した形の実施形態においては、その時々の命令ブロックに統合されている命令のアドレスが、コンパイラによって読み出し可能な特別のアドレス領域に保存されるものと規定している。
以下において、実施例にもとづき、この発明をより詳しく説明する。付属の図面は、命令実行時におけるプロセスを含む演算装置の模式図を示している。
図面において、プログラムメモリ1内に、プログラム命令がプログラムの順番に置かれているのが明らかに分かる。プログラム制御ユニット10内に含まれるプログラムカウンタ5は、プログラムメモリ1の一つの命令語をアドレス指定し、この命令語は、それに続いて復号されて、ジャンプ命令として識別されている。
そこで、その読み出されたジャンプアドレスは、ジャンプアドレスメモリ3に保存される。更に、このジャンプアドレスを用いて、第一の命令ブロック2がアドレス指定される。その他に、プログラム制御ユニット10は、このジャンプ命令をブロック命令として識別している。このことは、その時点のプログラムカウンタの状態メモリ4に、このプログラムカウンタの状態が保存される結果となる。
更に、同様に、ブロック命令の命令数が、命令数メモリ6に保存される。こうすることにより、プログラム制御ユニット10は、命令ブロックの実行後の戻りアドレスを算出、設定することができる。
図面には、第一の命令ブロック2において、別のブロック命令が含まれているのが描かれている。
通常のジャンプアドレス処理に応じて、この命令により、対応するジャンプアドレスがジャンプアドレスメモリ3に保存され、第二の命令ブロック11が、このようにしてアドレス指定される。
この命令は、ブロック命令として識別されているので、そこで、また第一の命令ブロック2の処理状態が、ローカルスタックの処理状態メモリ9に、第二の命令ブロック11の命令数が、ローカルスタックの命令数メモリ8に保存される。
第二の命令ブロック11の最後の命令が実行された後に、ローカルスタックの命令数メモリ8の設定内容に対応して、算出された戻りアドレスにジャンプして、第一の命令ブロック2における命令実行を、その最後まで続行することができる。
この場合、プログラム制御ユニット10は、保存した戻りアドレスによりプログラムメモリ1における中断されたプログラムの処理状態を示している、その時点のプログラムカウンタの状態メモリ4の内容をプログラムカウンタにロードすることを行い、プログラムメモリ1の実行しようとしていた命令に戻る。
このようにして、プログラムメモリ1において、中断された位置から、再びプログラムを続行することができる。
命令実行時におけるプロセスを含む演算装置の模式図
符号の説明
0 演算装置
1 プログラムメモリ
2 第一の命令ブロック
3 ジャンプアドレスメモリ
4 その時点のプログラムカウンタの状態メモリ
5 プログラムカウンタ
6 命令数メモリ
7 遅延スロット(実行フェーズ)
8 ローカルスタックの命令数メモリ
9 ローカルスタックの処理状態メモリ
10 プログラム制御ユニット
11 第二の命令ブロック
12 プログラム制御用のローカルスタック

Claims (5)

  1. 一方では、プログラム制御ユニットは、このユニット内に実装したプログラムカウンタのプログラムカウンタの状態を用いて、プログラムメモリのその時点で実行すべき命令をアドレス指定し、その際プログラム制御ユニットは、プログラムカウンタの計数モードとステップ幅を設定するとともに、その他に、ジャンプアドレスを保存しており、ジャンプ命令が出現した場合に、このプログラムカウンタが、このジャンプアドレスから、その計数モードを続行し、他方では、このプログラム制御ユニットが、このアドレス指定された命令を読み出して、復号し、そして実行に移す、プロセッサにおける命令実行方法において、
    ハードウェアにもとづき、追加のブロック命令が、プロセッサ内に実装されており、その結果プログラム分岐時には、一定数の順番に実行すべき命令が提供されて、そのため命令実行後の戻りアドレスが決まっており、そしてプログラム分岐が発生した場合、プログラム制御ユニット(10)が、サブルーチンに代わって、この実装されたブロック命令を選択的に呼び出し、その際その時点のプログラムカウンタの状態の保存と、一連の命令の命令数の保存とが更に行われることと、この命令ブロックの最後の命令が実行された後に、再び保存されていたプログラムカウンタの状態で、プログラムカウンタ(5)の計数プロセスを続行することを特徴とする方法。
  2. 当該の追加のブロック命令が、演算装置(0)によって、条件付き命令(述語付き命令)として実行され、その際その命令語に、どのような条件の元で、命令ブロックの保存していた数の命令を実行するのかという情報を含んでいることを特徴とする請求項1に記載の方法。
  3. 条件付きブロック命令により操作されるプログラム分岐の際に、実行フェーズでの、それに対応する遅延スロット(7)の最後において、条件照会の結果が評価可能となるまで、二つのパスが、暫定的な処理フェーズにおいて実行され、その際この条件を満たさない代替パスを却下した後に、直ちに、他方のパスのその時点で有効となった実行フェーズの進捗した位置から、この命令の実行を続行することを特徴とする請求項1または2に記載の方法。
  4. 第一の命令ブロック(2)の第一のブロック命令の実行フェーズ時において第二のブロック命令が発生した場合に、ジャンプ命令処理に加えて、この中断された命令ブロック(2)のその時々の処理状態と、第二の命令ブロック(11)からの戻りのために保存すべき最終アドレスとをプログラム制御用のローカルスタック(12)に保存し、この最終アドレスは、ジャンプアドレスと第二のブロック命令の命令数とから求められるものであることを特徴とする請求項1から3までのいずれか一つに記載の方法。
  5. その時々の命令ブロックに統合されている命令のアドレスが、コンパイラから読み出し可能な特別なアドレス領域に置かれていることを特徴とする請求項1から4までのいずれか一つに記載の方法。
JP2003564729A 2002-02-01 2003-01-17 命令実行方法 Pending JP2005516301A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE10204345A DE10204345A1 (de) 2002-02-01 2002-02-01 Verfahren zur Befehlsbearbeitung
PCT/DE2003/000126 WO2003065204A1 (de) 2002-02-01 2003-01-17 Verfahren zur befehlsbearbeitung

Publications (1)

Publication Number Publication Date
JP2005516301A true JP2005516301A (ja) 2005-06-02

Family

ID=27588306

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003564729A Pending JP2005516301A (ja) 2002-02-01 2003-01-17 命令実行方法

Country Status (5)

Country Link
US (3) US20050246571A1 (ja)
EP (1) EP1470477A1 (ja)
JP (1) JP2005516301A (ja)
DE (1) DE10204345A1 (ja)
WO (1) WO2003065204A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AT500858B8 (de) * 2004-08-17 2007-02-15 Martin Schoeberl Instruction cache für echtzeitsysteme
DE102012218363A1 (de) * 2012-10-09 2014-04-10 Continental Automotive Gmbh Verfahren zur Steuerung eines getrennten Ablaufs von verknüpften Programmblöcken und Steuergerät

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0374419A3 (en) * 1988-12-21 1991-04-10 International Business Machines Corporation Method and apparatus for efficient loop constructs in hardware and microcode
JPH07160585A (ja) * 1993-12-13 1995-06-23 Hitachi Ltd 低電力データ処理装置
US5805863A (en) * 1995-12-27 1998-09-08 Intel Corporation Memory pattern analysis tool for use in optimizing computer program code
US5710913A (en) * 1995-12-29 1998-01-20 Atmel Corporation Method and apparatus for executing nested loops in a digital signal processor
US5898865A (en) * 1997-06-12 1999-04-27 Advanced Micro Devices, Inc. Apparatus and method for predicting an end of loop for string instructions
US20020147969A1 (en) * 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6453407B1 (en) * 1999-02-10 2002-09-17 Infineon Technologies Ag Configurable long instruction word architecture and instruction set

Also Published As

Publication number Publication date
DE10204345A1 (de) 2003-08-14
US20100049949A1 (en) 2010-02-25
EP1470477A1 (de) 2004-10-27
US20090070557A1 (en) 2009-03-12
WO2003065204A1 (de) 2003-08-07
US20050246571A1 (en) 2005-11-03

Similar Documents

Publication Publication Date Title
US10268480B2 (en) Energy-focused compiler-assisted branch prediction
US20160291982A1 (en) Parallelized execution of instruction sequences based on pre-monitoring
US6687812B1 (en) Parallel processing apparatus
EP1886216B1 (en) Controlling out of order execution pipelines using skew parameters
US7454598B2 (en) Controlling out of order execution pipelines issue tagging
JPH08249195A (ja) 命令スレッドを処理するための方法およびシステム
CN109101276B (zh) 在cpu中执行指令的方法
JP2000132390A (ja) プロセッサ及び分岐予測器
US9519479B2 (en) Techniques for increasing vector processing utilization and efficiency through vector lane predication prediction
US20040225870A1 (en) Method and apparatus for reducing wrong path execution in a speculative multi-threaded processor
US20090019431A1 (en) Optimised compilation method during conditional branching
CN111538535A (zh) 一种cpu指令处理方法、控制器和中央处理单元
CN110569067A (zh) 用于多线程处理的方法、装置及系统
JP2005516301A (ja) 命令実行方法
US10437596B2 (en) Processor with a full instruction set decoder and a partial instruction set decoder
EP1499960B1 (en) Multi-issue processor
EP3278212A1 (en) Parallelized execution of instruction sequences based on premonitoring
JP2010257199A (ja) プロセッサ及びプロセッサにおける命令発行の制御方法
US10296350B2 (en) Parallelized execution of instruction sequences
CN1826583A (zh) 时间-固定处理器中零开销的分支和循环
JP3512707B2 (ja) マイクロコンピュータ
WO2022051161A1 (en) Alternate path for branch prediction redirect
JP2001356904A (ja) プロセッサ
Kaeli et al. Data Speculation Yiannakis Sazeides, 1 Pedro Marcuello, 2 James E. Smith, 3 and An-tonio Gonza´ lez2, 4 1University of Cyprus; 2Intel-UPC Barcelona Research Center; 3University of Wisconsin-Madison; 4Universitat Politecnica de
Sazeides et al. Data Speculation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050908

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060609

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060711

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20061011

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20061018

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070717