JP2004145454A - 情報処理装置及び情報処理方法 - Google Patents

情報処理装置及び情報処理方法 Download PDF

Info

Publication number
JP2004145454A
JP2004145454A JP2002307184A JP2002307184A JP2004145454A JP 2004145454 A JP2004145454 A JP 2004145454A JP 2002307184 A JP2002307184 A JP 2002307184A JP 2002307184 A JP2002307184 A JP 2002307184A JP 2004145454 A JP2004145454 A JP 2004145454A
Authority
JP
Japan
Prior art keywords
instruction
branch
prefetch
stage
information processing
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
JP2002307184A
Other languages
English (en)
Other versions
JP3683248B2 (ja
Inventor
Toshiaki Saruwatari
猿渡 俊明
Seiji Suetake
末武 清次
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2002307184A priority Critical patent/JP3683248B2/ja
Priority to US10/686,638 priority patent/US20040172518A1/en
Priority to EP03256630A priority patent/EP1413953A3/en
Publication of JP2004145454A publication Critical patent/JP2004145454A/ja
Application granted granted Critical
Publication of JP3683248B2 publication Critical patent/JP3683248B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Abstract

【課題】大規模な回路を使用せず、簡単な論理回路で分岐命令実行時のペナルティを無くす手法を提供することを課題とする。
【解決手段】命令長の2倍以上の幅で命令を取り込み、プリフェッチした命令を蓄えておくプリフェッチバッファ(103)と、プリフェッチバッファに蓄えられた命令をデコードするためのデコーダ(105)と、デコードされた命令を実行するための演算器(107)とを有する情報処理装置が提供される。命令要求制御回路(104)は、分岐命令をデコードした時点で分岐先命令をプリフェッチ要求し、それ以外の時はシーケンシャルに命令のプリフェッチ要求を行う。プリフェッチ制御回路(104)は、分岐命令により分岐した場合に分岐先命令をプリフェッチバッファに取り込み、分岐しなかった場合は無視する。
【選択図】    図1

Description

【0001】
【発明の属する技術分野】
本発明は、情報処理技術に関し、特にパイプライン処理により命令フェッチ、命令デコード及び実行を行う情報処理技術に関する。
【0002】
【従来の技術】
パイプライン処理により命令フェッチ、命令デコード及び実行を行う情報処理装置では、分岐命令を実行すると共に次の命令をデコードしなければならないので、実際に分岐した場合にはパイプラインに空きスロットが発生し、ペナルティとなってしまう。この問題を解決するために遅延分岐、分岐予測、デュアルフェッチなどの方法が取られている。
【0003】
下記の特許文献1の情報処理装置は、分岐命令のシーケンシャル側とターゲット側の命令系列の両方をフェッチする命令フェッチ部と、命令フェッチ部からのフェッチ要求に応答してキャッシュメモリまたはメインメモリから命令をフェッチするキャッシュ制御部と、メインメモリへのアクセスを行うメモリバスアクセス部と、フェッチした命令を保持する命令バッファと、命令バッファに格納される分岐命令の分岐予測を分岐命令の実行に先行して行う分岐予測部とを有する。キャッシュ制御部は、分岐命令の分岐方向が未確定の場合に、分岐予測部からの分岐予測方向に応じて、キャッシュミス後のメインメモリへのメモリバスアクセスが制限される。キャッシュメモリを有するマイクロプロセッサにおいて、外部メインメモリへのアクセスに制限を加えて、メインメモリへのアクセス効率を高める。
【0004】
【特許文献1】
特開2001−154845号公報
【0005】
【発明が解決しようとする課題】
上記の遅延分岐は、遅延分岐命令が現れた場合にはそれに続く命令(遅延スロット)の後に分岐先に分岐するものである。遅延分岐では、遅延スロットに入れる命令が無い場合はペナルティが残る問題があり、又、遅延スロットへ挿入できる命令は通常1命令であるため、命令フェッチに2サイクルかかるようなパイプライン構造では、ペナルティが発生する。
【0006】
上記の分岐予測は、デコードにより分岐予測を行ってプリフェッチするものである。分岐予測では、予測が外れた場合には同じくペナルティが発生する。そのため、予測のヒット率を向上させなければならないが、そのための機構は複雑かつ大規模になる。
【0007】
上記のデュアルフェッチは、分岐しない場合及び分岐する場合のための2ポート用意するものである。デュアルフェッチでは、プリフェッチバッファを用意し、その内容をプリデコードし、分岐命令であれば、分岐先命令とシーケンシャル側の命令の両方の命令をフェッチするが、フェッチ用のバスが2本必要になり、大規模で複雑なものになる。
【0008】
さらに、分岐予測で予測に失敗した場合やデュアルフェッチの場合にキャッシュミスした場合には、外部のメインメモリへ無駄なアクセスが発生するためペナルティが大きくなる。
【0009】
本発明の目的は、大規模な回路を使用せず、簡単な論理回路で分岐命令実行時のペナルティを無くす手法を提供することである。
【0010】
【課題を解決するための手段】
本発明の一観点によれば、命令長の2倍以上の幅で命令を取り込み、プリフェッチした命令を蓄えておくプリフェッチバッファと、プリフェッチバッファに蓄えられた命令をデコードするためのデコーダと、デコードされた命令を実行するための演算器とを有する情報処理装置が提供される。命令要求制御回路は、分岐命令をデコードした時点で分岐先命令をプリフェッチ要求し、それ以外の時はシーケンシャルに命令のプリフェッチ要求を行う。プリフェッチ制御回路は、分岐命令により分岐した場合に分岐先命令をプリフェッチバッファに取り込み、分岐しなかった場合は無視する。
【0011】
分岐命令をデコードした時点で分岐先命令をプリフェッチ要求し、それ以外の時はシーケンシャルに命令のプリフェッチ要求を行うことにより、分岐しない場合と分岐する場合のどちらの命令も用意することが可能となる。また、大規模な予測回路等を使用せず分岐成立/不成立に関わらず分岐ペナルティを無くすことが可能となる。
【0012】
【発明の実施の形態】
図2は、本発明の実施形態の処理対象であるコンピュータプログラム(命令群)a〜vの例を示す。各命令a〜vは、それぞれ命令長が16ビットである。アドレスの1つの番地には、1バイト(8ビット)が記憶可能である。例えば、200番地〜210番地のアドレスには命令a〜fが記憶され、400番地〜406番地のアドレスには命令s〜vが記憶される。400番地には、「label0」のラベルが付与されている。このプログラムを実行すると、まず命令aを実行する。命令aでは、例えばレジスタr0とr2の値を比較する。次に、命令bを実行する。命令bは、上記の比較の結果、レジスタr0とr2が同じであれば「label0」(400番地)に分岐させ、同じでなければ分岐せずにシーケンシャルに命令を実行させるための命令である。このような命令bが分岐命令である。分岐命令は、条件分岐命令及び/又は無条件分岐命令を含む。条件分岐命令は、命令bのように比較結果等の条件に応じて分岐させる命令である。無条件分岐命令は、CALL命令又はJUMP命令のように無条件に分岐させる命令である。
【0013】
分岐命令bは、特に遅延分岐命令(例えば「:D」で表す)である。遅延分岐命令について説明する。条件分岐命令は、条件に合致すれば分岐先に分岐し、条件に合致しなければ分岐しない。遅延分岐命令bは、分岐しない場合には命令bの後に命令c、d、e及びfをシーケンシャルに実行し、分岐する場合には命令bの後に命令c、s、t、u、vを順次実行する。すなわち、遅延分岐命令bの後の命令cは、分岐の有無にかかわらずに必ず実行し、その後に分岐することになる。遅延分岐命令bの後の命令cを、遅延スロット命令と呼ぶ。
【0014】
図1は、本発明の実施形態による情報処理装置の構成図である。この情報処理装置は、命令(アドレス)要求ステージ(以下、IAステージという)131、命令取り込み(フェッチ)ステージ(以下、IFステージ)132、命令デコードステージ(以下、IDステージという)133、実行ステージ(以下、EXステージという)134、レジスタ書き込みステージ(以下、WBステージという)135の5ステージのパイプライン処理を行う。命令ビット長が16ビットの場合を例に説明する。
【0015】
CPU(中央演算処理装置)101は、命令キャッシュメモリ(以下、命令キャッシュという)102を介してメインメモリ121と接続される。以下、具体的に説明する。メインメモリ121は、例えばSDRAMであり、32ビット幅のバス122を介して外部バス120に接続される。命令キャッシュ102は、32ビット幅のバス117を介して外部バス120に接続される。CPU101は、32ビット幅の命令用バス112を介して命令キャッシュ102に接続される。命令キャッシュ102は、頻繁に使用する命令(プログラム)の一部を予めメインメモリ121から読み込み記憶し、逆に使用されないものから追い出していく。CPU101が要求する命令が命令キャッシュ102上にある場合をキャッシュヒットという。キャッシュヒットした場合には、CPU101は命令キャッシュ102から命令を受け取ることができる。それに対し、CPU101が要求する命令が命令キャッシュ102上にない場合をキャッシュミスという。キャッシュミスの場合は、命令キャッシュ102がバスアクセス信号116によりメインメモリ121に命令の読み出し要求を行う。CPU101は、命令キャッシュ102を介してメインメモリ121から命令を読み出すことができる。バス112の転送速度は、外部バス120の転送速度に比べて極めて速い。したがって、キャッシュヒットした場合には、キャッシュミスした場合に比べ、命令読み出し速度が極めて速い。また、命令(プログラム)がシーケンシャルに読み出される可能性が高いことからキャッシュヒット率が高くなるので、命令キャッシュ102を設けることにより、CPU101の命令読み出し速度が全体的に速くなる。
【0016】
CPU101は、命令キュー(プリフェッチバッファ)103、命令フェッチ制御部104、命令デコーダ105、分岐ユニット106、演算器107、ロード及びストア部108、及びレジスタ109を有する。命令キュー103は、例えば16ビット長の命令を最大4個記憶可能であり、32ビット幅のバス112を介して命令キャッシュ102に接続され、16ビット幅のバス115を介して命令デコーダ105に接続される。すなわち、命令キュー103は、命令キャッシュ102からの命令を32ビット単位で書き込み、16ビット単位の命令を読み出して命令デコーダ105に出力する。命令フェッチ制御部104は、命令キャッシュ102に対してキャッシュアクセス制御信号110を入出力し、命令キュー103の入出力を制御する。命令デコーダ105は、命令キュー103に蓄えられた命令を1命令単位でデコードする。演算器107は、命令デコーダ105がデコードした命令を1命令単位で実行(演算)する。レジスタ109には、演算器107の実行結果が書き込まれる。ロード及びストア部108は、命令デコーダ105がデコーダした命令がロード又はストアであるときに、レジスタ109及びメインメモリ121間でロード又はストアを行う。
【0017】
命令フェッチ動作は、CPU101の状態に従い、命令フェッチ制御部104が命令キャッシュ102に命令要求を行い(IAステージ131)、次のサイクルで命令キュー103に取り込む(IFステージ132)ことで行う。ただし、本実施形態では、命令キュー103に後続命令を蓄えることにより分岐ペナルティを減らすことを特徴とするため、命令長の2倍である32ビット単位(2命令)で命令フェッチ動作を行う。次に、命令キュー103の最初の命令を命令デコーダ105でデコードし(IDステージ133)、次のサイクルで命令により指示された動作を行い(EXステージ134)、レジスタ109への書き戻し(WBステージ135)を行うことで一つの命令を完了する。CPU101は、これらの動作をパイプラインで行うことを特徴とする。
【0018】
命令デコーダ105は、命令デコーダ105がデコードした命令が分岐命令であるとき、分岐命令デコード通知信号113を命令フェッチ制御部104及び分岐ユニット106に出力する。命令フェッチ制御部104は、分岐命令デコード通知信号113を入力(分岐命令をデコード)した時点で分岐先命令をプリフェッチ要求し、それ以外の時はシーケンシャルに命令のプリフェッチ要求を行う。具体的には、命令フェッチ制御部104は、キャッシュアクセス制御信号110を命令キャッシュ102に出力することによりプリフェッチ要求する。プリフェット要求により、命令キャッシュ102から命令キュー103に命令がプリフェッチされる。
【0019】
このように分岐命令を実行する前のデコードの段階で分岐先命令のプリフェッチ要求を行う。この後、分岐命令を実行した段階で、分岐の有無が決定する。すなわち、演算器107の演算により分岐命令の直前の命令が実行され、実行結果がレジスタ109に書き込まれる。このレジスタ109内の実行結果119は、分岐ユニット106に入力される。演算器107の演算により分岐命令が実行され、分岐条件が成立したかを示す情報が例えばレジスタ109内に設けられたフラグを介して分岐ユニット106に入力される。分岐ユニット106は、分岐命令デコード通知信号113及び分岐命令実行結果119に応じて、分岐命令実行通知信号114を命令フェッチ制御部104に出力する。すなわち、分岐命令の実行結果に応じて、分岐命令実行通知信号114を用いて分岐するか否かを通知する。命令フェッチ制御部104は、分岐する場合には上記でプリフェッチ要求した分岐先命令を命令キュー102にプリフェッチし、分岐しない場合には上記でプリフェッチ要求した分岐先命令のプリフェッチを行わずに無視し、シーケンシャルの命令のプリフェッチ、デコード及び実行を行うと共に、アクセスキャンセル信号111を命令キャッシュ102に出力する。命令キャッシュ102は、既に上記の分岐先のプリフェッチ要求を受けており、キャッシュミスした場合にはメインメモリ121にアクセスしようとしている。命令キャッシュ102は、アクセスキャンセル信号111を入力すると、メインメモリ121へのアクセスをキャンセルする。これにより、不要なメインメモリ121へのアクセスをなくし、性能低下を防止できる。
【0020】
なお、実行結果119は、説明の簡単のために、レジスタ109から分岐ユニット106に入力されるように示したが、実際にはバイパス回路を用いることによりEXステージ134の実行完了を待たずに、実行結果119を分岐ユニット106に入力することができる。
【0021】
図3は、参考のために、単純に1命令ずつ処理を行う通常の情報処理装置の動作を示すタイミングチャートである。図2のプログラムの処理を行う場合を例に説明する。キャッシュアクセスアドレスIA1は、分岐しない場合に命令要求するアドレスを示す。キャッシュアクセスデータIF1は、分岐しない場合に命令キャッシュ112が命令キュー103に出力するデータである。キャッシュアクセスアドレスIA2は、分岐する場合に命令要求するアドレスを示す。キャッシュアクセスデータIF2は、分岐する場合に命令キャッシュ112が命令キュー103に出力するデータである。
【0022】
サイクルCY1では、命令aをIAステージ131で命令要求する。この際、キャッシュアクセスアドレスIA1及びIA2は命令aのアドレスである。
【0023】
次に、サイクルCY2では、命令aをIFステージ132でフェッチし、遅延分岐命令(条件分岐命令)bをIAステージ131で命令要求する。この際、キャッシュアクセスアドレスIA1及びIA2は命令bのアドレスであり、キャッシュアクセスデータIF1及びIF2は命令aである。
【0024】
次に、サイクルCY3では、命令aをIDステージ133でデコードし、遅延分岐命令bをIFステージ132でフェッチし、命令c(遅延スロット)をIAステージ131で命令要求する。この際、キャッシュアクセスアドレスIA1及びIA2は命令cのアドレスであり、キャッシュアクセスデータIF1及びIF2は命令bである。
【0025】
次に、サイクルCY4では、命令aをEXステージ134で実行し、遅延分岐命令bをIDステージ133でデコードし、命令cをIFステージ132でフェッチし、命令dをIAステージ131で命令要求する。この際、キャッシュアクセスアドレスIA1及びIA2は命令dのアドレスであり、キャッシュアクセスデータIF1及びIF2は命令cである。
【0026】
上記の遅延分岐命令bのデコード後のEXステージ134で、分岐の有無が決定し、分岐の有無に応じてサイクルCY5以降の処理が異なる。まず、分岐しない場合を説明する。
【0027】
サイクルCY5では、命令aをWBステージ135でレジスタ書き込みし、遅延分岐命令bをEXステージ134で実行し、命令cをIDステージ133でデコードし、命令dをIFステージ132でフェッチし、命令eをIAステージ131で命令要求する。この際、キャッシュアクセスアドレスIA1は命令eのアドレスであり、キャッシュアクセスデータIF1は命令dである。
【0028】
次に、サイクルCY6では、遅延分岐命令bをWBステージ135でレジスタ書き込みし、命令cをEXステージ134で実行し、命令dをIDステージ133でデコードし、命令eをIFステージ132でフェッチし、命令fをIAステージ131で命令要求する。この際、キャッシュアクセスアドレスIA1は命令fのアドレスであり、キャッシュアクセスデータIF1は命令eである。
【0029】
以下、サイクルCY7以降も同様の処理を行う。以上のように、分岐しない場合には、命令aからシーケンシャルに処理を行えばよく、空スロットはできず、効率的なパイプライン処理を行うことができる。
【0030】
次に、分岐する場合を説明する。サイクルCY5において、分岐する場合には、上記のサイクルCY4で命令要求した命令dをキャンセルする。その結果、サイクルCY4のIAステージ131は空スロットになり、無駄な処理になる。サイクルCY5では、命令aをWBステージ135でレジスタ書き込みし、遅延分岐命令bをEXステージ134で実行し、命令cをIDステージ133でデコードし、IFステージ132は空スロットになり、分岐先命令sをIAステージ131で命令要求する。この際、キャッシュアクセスアドレスIA2は命令sのアドレスであり、キャッシュアクセスデータIF2は命令dである。
【0031】
次に、サイクルCY6では、遅延分岐命令bをWBステージ135でレジスタ書き込みし、命令cをEXステージ134で実行し、IDステージ133は空スロットになり、分岐先命令sをIFステージ132でフェッチし、命令tをIAステージ131で命令要求する。この際、キャッシュアクセスアドレスIA1は命令tのアドレスであり、キャッシュアクセスデータIF1は命令sである。
【0032】
次に、サイクルCY7では、命令cをWBステージ135でレジスタ書き込みし、EXステージ134は空スロットになり、分岐先命令sをIDステージ133でデコードし、命令tをIFステージ132でフェッチし、命令uをIAステージ131で命令要求する。この際、キャッシュアクセスアドレスIA1は命令uのアドレスであり、キャッシュアクセスデータIF1は命令tである。
【0033】
以下、サイクルCY8以降も同様の処理を行う。以上のように、分岐する場合には、ハッチで示した空スロットdが生じ、効率的なパイプライン処理を行うことができない。分岐命令bのEXステージ134まで分岐するかどうかの条件判定が出来ないため、後続に分岐先命令をフェッチするのかそのままシーケンシャルの命令をフェッチするのかを、判定までウェイトしてペナルティを発生させることになる。分岐する場合は、命令cまでは分岐しない場合と同様の動作となるが、遅延分岐命令bのEXステージ134で分岐が成立することがわかり、ここではじめて分岐先命令sの命令要求を出すことになる。そのため、先に命令要求を出していた命令dは、キャンセルし、結果としてパイプライン上に空きスロットが発生することになる。また、分岐予測を行った場合でも予測が外れた場合は、ペナルティが発生する。
【0034】
図4は、図1の本発明の実施形態による情報処理装置において分岐条件が成立し分岐する場合の動作を示すタイミングチャートである。図2のプログラムの処理を行う場合を例に説明する。キャッシュアクセスアドレスIA1は、命令要求するアドレスを示す。キャッシュアクセスデータIF1は、命令キャッシュ112がキャッシュヒットして命令キュー103に出力するデータである。
【0035】
まず、サイクルCY1では、2つの命令a及びbをIAステージ131で命令要求する。命令bは、遅延分岐命令である。IAステージ131では、32ビットの2命令単位で命令要求を行うことができる。この際、キャッシュアクセスアドレスIA1は命令a及びbのアドレスである。
【0036】
次に、サイクルCY2では、2つの命令a及びbをIFステージ132でフェッチし、2つの命令c及びdをIAステージ131で命令要求する。IFステージ132では、32ビットの2命令単位でフェッチを行うことができる。このフェッチ動作により、命令キュー103には命令a及びbが格納される。この際、キャッシュアクセスアドレスIA1は命令c及びdのアドレスであり、キャッシュアクセスデータIF1は命令a及びbである。
【0037】
次に、サイクルCY3では、1つの命令aをIDステージ133でデコードし、2つの命令c及びdをIFステージ132でフェッチする。IDステージ133では、16ビットの1命令単位でデコードを行う。命令c及びdがフェッチのために入力され、命令aがデコードのために出力されるので、命令キュー103には命令b,c,dが格納される。この際、キャッシュアクセスデータIF1は命令c及びdである。この例では、命令キュー103が最大4命令格納可能としているので、このサイクルでは命令要求を行わない。
【0038】
次に、サイクルCY4では、命令aをEXステージ134で実行し、命令bをIDステージ133でデコードし、2つの分岐先命令s及びtをIAステージ131で命令要求する。EXステージ134では、16ビットの1命令単位で実行を行う。命令キャッシュ103には、命令c及びdが格納される。この際、キャッシュアクセスアドレスIA1は分岐先命令s及びtのアドレスである。
【0039】
このサイクルCY4において、命令デコーダ105は、分岐命令bをデコードすることにより、命令デコード通知信号113を出力する。命令フェッチ制御部104は、命令デコード通知信号113を受けて、分岐先命令s及びtの命令要求を行う。ここでは、命令キュー103の状態とは無関係に要求を行う。
【0040】
次に、サイクルCY5では、命令aをWBステージ135でレジスタ書き込みし、遅延分岐命令bをEXステージ134で実行し、命令cをIDステージ133でデコードし、分岐先命令s及びtをIFステージ132でフェッチし、命令u及びvをIAステージ131で命令要求する。命令c(遅延スロット)は、前が遅延分岐命令bであるために分岐したときにもIDステージ発行する。分岐命令bの実行により分岐条件の成立が決定し、命令u及びvの命令要求を行う。WBステージ135では、16ビットの1命令単位でレジスタ書き込みを行う。命令キャッシュ103には、命令s及びtが格納される。この際、キャッシュアクセスアドレスIA1は命令u及びvのアドレスであり、キャッシュアクセスデータIF1は命令s及びtである。
【0041】
このサイクルCY5において、分岐ユニット106は、分岐命令bの実行により分岐条件が成立し、分岐するための分岐命令実行通知信号114を出力する。命令フェッチ制御部104は、制御信号118により、命令キュー103内の命令dを削除する。
【0042】
次に、サイクルCY6では、遅延分岐命令bをWBステージ135でレジスタ書き込みし、命令cをEXステージ134で実行し、分岐先命令sをIDステージ133でデコードし、命令u及びu及びvをIFステージでフェッチする。命令キャッシュ103には、命令t、u及びvが格納される。この際、キャッシュアクセスデータIF1は命令u及びvである。
【0043】
以下、サイクルCY7以降も同様の処理を行う。以上のように、分岐する場合には、ハッチで示した空スロットdを分岐先命令sのスロットで埋め、効率的なパイプライン処理を行うことができ、ペナルティが生じない。
【0044】
本実施形態では、命令用バス112の幅をバス115の幅(命令長)の倍にすることにより命令供給のバンド幅を増やし、その余裕のできたバンド幅を利用して、分岐時のペナルティを減らしている。命令用バス112は、バス115の幅(命令長)の2倍以上であればよい。
【0045】
以上のように、サイクルCY5では、遅延条件分岐命令bの条件がEXステージで確定する。ここで分岐する場合、分岐ユニット106からの分岐命令実行通知信号114を使用し、命令フェッチ制御部104に分岐することを通知する。命令フェッチ制御部104は、その通知を受けて命令キュー103に以前までのデータdを消去し、前のサイクルCY4で要求した命令s及びtを取り込むことを指示する。従って、命令キュー103の状態は分岐先命令sとその後続命令tが存在することとなる。また、命令フェッチ制御部104は、分岐先の後続命令u及びvの命令要求を行う。上記のような命令フェッチ動作を行うことにより、サイクルCY6で分岐先命令sをIDステージに発行できることとなり、分岐する場合にペナルティサイクルが発生しない。
【0046】
図5は、図1の本発明の実施形態による情報処理装置において分岐条件が成立せず分岐しない場合の動作を示すタイミングチャートである。図2のプログラムの処理を行う場合を例に説明する。キャッシュアクセスアドレスIA1は、命令要求するアドレスを示す。キャッシュアクセスデータIF1は、命令キャッシュ112がキャッシュヒットして命令キュー103に出力するデータである。
【0047】
サイクルCY1〜CY4の動作は、図4の動作と同じであるため、説明を省略する。以下、サイクルCY5以降の説明を行う。
【0048】
サイクルCY5では、命令aをWBステージ135でレジスタ書き込みし、遅延分岐命令bをEXステージ134で実行し、命令c(遅延スロット)をIDステージ133でデコードし、2つの命令e及びfをIAステージ131で命令要求する。命令cは、前が遅延分岐命令bであるために分岐したときにもIDステージ発行する。分岐命令bの実行により分岐条件の不成立が決定し、分岐先命令s及びtのフェッチを行わず、命令e及びfの命令要求を行う。命令キャッシュ103には、命令dが格納される。この際、キャッシュアクセスアドレスIA1は命令e及びfのアドレスである。
【0049】
このサイクルCY5において、分岐ユニット106は、分岐命令bの実行により分岐条件が成立せず、分岐しないことを示す通知信号114を出力する。命令フェッチ制御部104は、キャッシュアクセス制御信号118により、命令キャッシュ102に命令e及びfの命令要求を行う。
【0050】
次に、サイクルCY6では、遅延分岐命令bをWBステージ135でレジスタ書き込みし、命令cをEXステージ134で実行し、命令dをIDステージ133でデコードし、命令e及びfをIFステージ132でフェッチする。命令キャッシュ103には、命令e及びfが格納される。この際、キャッシュアクセスデータIF1は命令e及びfである。
【0051】
以下、サイクルCY7以降も同様の処理を行う。以上のように、分岐しない場合には、分岐先命令sの命令要求を行った後、ハッチで示すフェッチ以降の処理を行わずに、シーケンシャルの命令dのデコード等を行うので、効率的なパイプライン処理を行うことができ、ペナルティが生じない。サイクルCY5で分岐命令bの条件が成立せず、分岐しない場合は、分岐ユニット106からの分岐命令実行通知信号114を使用して命令フェッチ制御部104に分岐命令で分岐しないことを通知する。それを受けて、命令フェッチ制御部104は、命令キュー103に分岐先命令の取り込みキャンセルを指示し、命令キュー103に存在する命令dの後続命令e及びfの要求を出す。
【0052】
このようなフェッチ動作を行うことにより、サイクルCY6では、遅延スロットcの次の命令dをIDステージに発行することが可能となり、さらにその後続命令e及びfのフェッチがそのサイクルCY6でできるため、分岐しない場合にもペナルティが発生しない。
【0053】
さらに、サイクルCY5で命令フェッチ制御部104からアクセスキャンセル信号111をアサートすることにより、分岐先命令s及びtの要求に対してキャッシュミスし、外部のメインメモリ121へアクセスすることを抑止することを可能とする。具体的には、命令キャッシュ102は、アクセスキャンセル信号111を入力すると、キャッシュミスした場合に、バスリクエスト116をアサートせずに、メインメモリ121へのアクセスを行わない。これにより、不要なバスアクセスを防止し、性能の低下を防ぐことができる。
【0054】
本実施形態によれば、命令長の2倍以上の幅で命令を取り込み、プリフェッチした命令を蓄えておくプリフェッチバッファ103と、プリフェッチバッファに蓄えられた命令をデコードするためのデコーダ105と、デコードされた命令を実行するための演算器107とを有する情報処理装置が提供される。命令フェッチ制御部104は、分岐命令をデコードした時点で分岐先命令をプリフェッチ要求し、それ以外の時はシーケンシャルに命令のプリフェッチ要求を行う。また、命令フェッチ制御部104は、分岐命令により分岐した場合に分岐先命令をプリフェッチバッファ103に取り込み、分岐しなかった場合は無視する。
【0055】
分岐命令をデコードした時点で分岐先命令をプリフェッチ要求し、それ以外の時はシーケンシャルに命令のプリフェッチ要求を行うことにより、分岐しない場合と分岐する場合のどちらの命令も用意することが可能となる。また、大規模な予測回路等を使用せずに分岐成立/不成立に関わらず分岐ペナルティを無くすことが可能となる。また、分岐命令実行時、分岐しなかった場合にそれを知らせる信号114を用意し、命令キャッシュ102又はメモリコントローラに通知することにより、キャッシュミスによるメインメモリ121への不要なアクセスを防止できる。大規模な予測回路等を使用せず単純な論理回路で、分岐命令の成立/不成立にかかわらずに分岐ペナルティを無くすことが可能となり、不要な外部バス120へのアクセスも行わずに済む。
【0056】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【0057】
【発明の効果】
以上説明したように、分岐命令をデコードした時点で分岐先命令をプリフェッチ要求し、それ以外の時はシーケンシャルに命令のプリフェッチ要求を行うことにより、分岐しない場合と分岐する場合のどちらの命令も用意することが可能となる。また、大規模な予測回路等を使用せず分岐成立/不成立に関わらず分岐ペナルティを無くすことが可能となる。
【図面の簡単な説明】
【図1】本発明の実施形態による情報処理装置の構成図である。
【図2】本発明の実施形態の処理対象であるコンピュータプログラム(命令群)の例を示す図である。
【図3】単純に1命令ずつ処理を行う通常の情報処理装置の動作を示すタイミングチャートである。
【図4】本発明の実施形態による情報処理装置において分岐条件が成立し分岐する場合の動作を示すタイミングチャートである。
【図5】本発明の実施形態による情報処理装置において分岐条件が成立せず分岐しない場合の動作を示すタイミングチャートである。
【符号の説明】
101 CPU
102 命令キャッシュ
103 命令キュー
104 命令フェッチ制御部
105 命令デコーダ
106 分岐ユニット
107 演算器
108 ロード及びストア部
109 レジスタ
121 メインメモリ
131 IAステージ
132 IFステージ
133 IDステージ
134 EXステージ
135 WBステージ

Claims (10)

  1. 命令長の2倍以上の幅で命令を取り込み、プリフェッチした命令を蓄えておくプリフェッチバッファと、
    前記プリフェッチバッファに蓄えられた命令をデコードするためのデコーダと、
    前記デコードされた命令を実行するための演算器と、
    分岐命令をデコードした時点で分岐先命令をプリフェッチ要求し、それ以外の時はシーケンシャルに命令のプリフェッチ要求を行う命令要求制御回路と、
    分岐命令により分岐した場合に分岐先命令を前記プリフェッチバッファに取り込み、分岐しなかった場合は無視するプリフェッチ制御回路と
    を有する情報処理装置。
  2. 前記プリフェッチバッファは、命令キャッシュメモリを介してメインメモリから命令を取り込む請求項1記載の情報処理装置。
  3. 前記プリフェッチ制御回路は、分岐が不成立の場合に分岐先の命令のプリフェッチ要求を取り消す制御信号を前記命令キャッシュメモリに出力することにより、キャッシュミスによるメモリメモリへのアクセスを禁止する請求項2記載の情報処理装置。
  4. 前記プリフェッチバッファは、命令キャッシュメモリから命令長の2倍の幅で命令を取り込み、命令長の幅で前記デコーダに命令を出力する請求項2記載の情報処理装置。
  5. 前記プリフェッチバッファは、最大4命令を蓄えることができる請求項4記載の情報処理装置。
  6. 前記デコーダ及び前記演算器は、1命令単位で処理する請求項1記載の情報処理装置。
  7. 前記命令要求制御回路及び前記プリフェッチ制御回路は、遅延分岐命令が現れた場合にはそれに続く命令の後に分岐先に分岐するものとして処理する請求項1記載の情報処理装置。
  8. 前記分岐命令は、条件分岐命令及び/又は無条件分岐命令を含む請求項1記載の情報処理装置。
  9. さらに、前記演算器の実行結果を書き込むためのレジスタを有する請求項1記載の情報処理装置。
  10. 命令長の2倍以上の幅で命令を取り込みプリフェッチした命令を蓄えておく第1のプリフェッチステップと、
    前記プリフェッチした命令をデコードするデコードステップと、
    前記デコードされた命令を実行するための実行ステップと、
    分岐命令をデコードした時点で分岐先命令をプリフェッチ要求し、それ以外の時はシーケンシャルに命令のプリフェッチ要求を行う命令要求ステップと、
    分岐命令により分岐した場合に分岐先命令をプリフェッチし、分岐しなかった場合は無視する第2のプリフェッチステップと
    を有する情報処理方法。
JP2002307184A 2002-10-22 2002-10-22 情報処理装置及び情報処理方法 Expired - Fee Related JP3683248B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2002307184A JP3683248B2 (ja) 2002-10-22 2002-10-22 情報処理装置及び情報処理方法
US10/686,638 US20040172518A1 (en) 2002-10-22 2003-10-17 Information processing unit and information processing method
EP03256630A EP1413953A3 (en) 2002-10-22 2003-10-21 Instruction prefetch method and apparatus for conditional branch instructions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002307184A JP3683248B2 (ja) 2002-10-22 2002-10-22 情報処理装置及び情報処理方法

Publications (2)

Publication Number Publication Date
JP2004145454A true JP2004145454A (ja) 2004-05-20
JP3683248B2 JP3683248B2 (ja) 2005-08-17

Family

ID=32064309

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002307184A Expired - Fee Related JP3683248B2 (ja) 2002-10-22 2002-10-22 情報処理装置及び情報処理方法

Country Status (3)

Country Link
US (1) US20040172518A1 (ja)
EP (1) EP1413953A3 (ja)
JP (1) JP3683248B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008065718A (ja) * 2006-09-09 2008-03-21 Yamaha Corp デジタル信号処理装置
JP2016507836A (ja) * 2013-01-21 2016-03-10 クアルコム,インコーポレイテッド ループのデータプリフェッチ要求をキャンセルするための方法および装置

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7493447B2 (en) * 2006-05-03 2009-02-17 Nuvoton Technology Corporation System and method for caching sequential programs
JP2008071061A (ja) * 2006-09-13 2008-03-27 Fujitsu Ltd 情報処理装置
JP4680876B2 (ja) * 2006-12-11 2011-05-11 ルネサスエレクトロニクス株式会社 情報処理装置及び命令フェッチ制御方法
JP4354001B1 (ja) 2008-07-03 2009-10-28 Necエレクトロニクス株式会社 メモリ制御回路および集積回路
CN103513958B (zh) 2012-06-27 2017-01-25 上海芯豪微电子有限公司 高性能指令缓存系统和方法
US20160246602A1 (en) * 2015-02-19 2016-08-25 Arizona Board Of Regents On Behalf Of Arizona State University Path selection based acceleration of conditionals in coarse grain reconfigurable arrays (cgras)
US20160283243A1 (en) * 2015-03-28 2016-09-29 Yong-Kyu Jung Branch look-ahead instruction disassembling, assembling, and delivering system apparatus and method for microprocessor system
CN106649143B (zh) * 2015-10-29 2020-06-26 阿里巴巴集团控股有限公司 一种访问缓存的方法、装置及电子设备
US10296463B2 (en) * 2016-01-07 2019-05-21 Samsung Electronics Co., Ltd. Instruction prefetcher dynamically controlled by readily available prefetcher accuracy
CN111399913B (zh) * 2020-06-05 2020-09-01 浙江大学 一种基于预取的处理器加速取指方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4722050A (en) * 1986-03-27 1988-01-26 Hewlett-Packard Company Method and apparatus for facilitating instruction processing of a digital computer
JP2816248B2 (ja) * 1989-11-08 1998-10-27 株式会社日立製作所 データプロセッサ
JP2834292B2 (ja) * 1990-08-15 1998-12-09 株式会社日立製作所 データ・プロセッサ
US5544342A (en) * 1993-06-30 1996-08-06 International Business Machines Corporation System and method for prefetching information in a processing system
US5764946A (en) * 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US6195735B1 (en) * 1996-12-31 2001-02-27 Texas Instruments Incorporated Prefetch circuity for prefetching variable size data

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008065718A (ja) * 2006-09-09 2008-03-21 Yamaha Corp デジタル信号処理装置
JP2016507836A (ja) * 2013-01-21 2016-03-10 クアルコム,インコーポレイテッド ループのデータプリフェッチ要求をキャンセルするための方法および装置

Also Published As

Publication number Publication date
US20040172518A1 (en) 2004-09-02
JP3683248B2 (ja) 2005-08-17
EP1413953A3 (en) 2006-06-14
EP1413953A2 (en) 2004-04-28

Similar Documents

Publication Publication Date Title
JP5889986B2 (ja) 実行された命令の結果を選択的にコミットするためのシステムおよび方法
JP5425627B2 (ja) 明示的サブルーチンコールの分岐予測動作をエミュレートするための方法および装置
US7444501B2 (en) Methods and apparatus for recognizing a subroutine call
JP2009053861A (ja) プログラム実行制御装置
JP3683248B2 (ja) 情報処理装置及び情報処理方法
US7877578B2 (en) Processing apparatus for storing branch history information in predecode instruction cache
JP2009524167A (ja) オペランドの早期の条件付き選択
JP4243271B2 (ja) データ処理装置およびデータ処理方法
US6983359B2 (en) Processor and method for pre-fetching out-of-order instructions
US20080065870A1 (en) Information processing apparatus
CN112395000B (zh) 一种数据预加载方法和指令处理装置
JP7409208B2 (ja) 演算処理装置
JP5209390B2 (ja) 情報処理装置及び命令フェッチ制御方法
WO2013121516A1 (ja) データ処理装置
JP3721002B2 (ja) メモリ要求を形成するために並列に生成される複数の取出アドレスのうちの1つを選択する、プロセッサおよび命令取出方法
JP3602801B2 (ja) メモリデータアクセス構造およびその方法
JP3147884B2 (ja) 記憶装置及び情報処理装置
JP2503223B2 (ja) 先行制御方式
JP4049490B2 (ja) 情報処理装置
CN113568663A (zh) 代码预取指令
JP2000099328A (ja) プロセッサ及びその実行制御方法
JPH027128A (ja) 情報処理装置
JP2004110248A (ja) データ処理装置
JPH08286914A (ja) メモリ制御装置
JPH09311787A (ja) データ処理装置

Legal Events

Date Code Title Description
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: 20050517

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050524

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees