(57)【要約】アドレス予測可能信号の状態に基づいて、アドレス予測を利用するかどうかを選択できるデータシステム。アドレス予測を使用する場合、分岐命令の結果が、命令の決定前に推測される。アドレス予測を使用しない場合、システムは、実行する次のアドレスをフェッチする前に分岐命令が決定されるまで待機する。本願で開示される方法とデータシステムの少なくとも１実施例は、操作の予測モードと非予測モードを使用した時に利用できる異なる設定タイミングを利用する。
2004503865.tif 000002
【特許請求の範囲】
【請求項１】
第１動作モードと第２動作モードを有するデータ処理システム（１００）であって、
第１信号（１３０）を受信する第１入力を有する中央処理装置（１０２）を備え、第１信号の第１状態が第１動作モードを可能にし、第１信号の第２状態が第２動作モードを可能にし、
第１動作モードが分岐予測を利用し、
第２動作モードが分岐予測を実質的に利用しない、データ処理システム（１００）。
【請求項２】
第１動作モードが第１アドレス設定タイミングを結果的に生じ、
第２動作モードが第２アドレス設定タイミングを結果的に生じ、第１アドレス設定タイミングが、第２アドレス設定タイミングより早いアドレス有効時間を可能にする、請求項１に記載のデータ処理システム。
【請求項３】
第１動作モードと第２動作モードを有するデータ処理システムであって、
第１信号（１３０）を受信する第１入力を備え、第１信号の第１状態が第１動作モードを可能にし、第１信号の第２状態が第２動作モードを可能にし、
第１動作モードが第１アドレス設定タイミングを結果的に生じ、
第２動作モードが、第１アドレス設定タイミングより早いアドレス有効時間を可能にする第２アドレス設定タイミングを結果的に生じる、データ処理システム。
【請求項４】
第１アドレス設定タイミングが、分岐予測の第１レベルを利用して実現され、第２アドレス設定タイミングが、分岐予測の第１レベルよりも積極的な分岐予測の第２レベルを利用して実現される、請求項３に記載のデータ処理システム。
【請求項５】
第１動作モードと第２動作モードを有するデータ処理システムにおいて、アドレス設定時間を変更する方法であって、
第１入力信号（１３０）を受信する工程と、
第１入力信号が第１状態を有する場合に、第１動作モードで動作する工程と、第１動作モードが第１アドレス設定タイミングを結果的に生じることと、
第１入力信号が第２状態を有する場合に、第２動作モードで動作する工程と、第２動作モードが、第１アドレス設定タイミングより早いアドレス有効時間を有する第２アドレス設定タイミングを結果的に生じることと
から成る方法。
【発明の詳細な説明】
【０００１】
（発明の分野）
本発明は概略的にはデータ処理システムに関し、より詳細には選択的分岐予測を使用するデータプロセッサに関する。
【０００２】
（関連技術）
分岐予測は、データプロセッサの性能を向上するために使用される１つの技術である。分岐予測技術を使用するデータプロセッサは、その結果がまだ決定されていない分岐命令を受信するたびに「推測」を行い、該推測（または「未決定分岐命令」の予測される結果）に基づいて機能し、次に、「未決定分岐命令」にしたがい、該推測が正しかったかどうかを判断する。かかるデータプロセッサは、分岐が最終的に採用され、非順次目標命令アドレスにジャンプするかどうか、あるいは、分岐が「不成立に終わり」次の順次命令に至るかどうかを予測する。ほとんどの場合、条件付き分岐命令を予測するデータプロセッサは、正確な推測を行い、条件付き分岐命令の結果を決定する前に分岐から目標命令アドレスをフェッチできるため、性能が高まる。しかし、通常、誤った推測に伴う性能上のペナルティがある。分岐命令は、順次命令ストリームフェッチパターンに変化を生じるため、誤ったアドレス推測によって、プロセッササイクルが失われることがある。誤った推測の場合、誤ってフェッチされた命令ストリームが廃棄され、正しい命令ストリームがプロセッサパイプラインに再読み込みされなければならないため、かかるプロセッササイクルが失われる。この形態の分岐予測性能促進（条件付き分岐命令の結果の予測能力と、その結果予測された命令ストリームからあらかじめフェッチする命令の実行の能力）は「分岐アドレス予測」として知られる。
【０００３】
他のプロセッサは、分岐予測技術を採用していない。このようなプロセッサでは、分岐命令は、分岐目標命令がフェッチされる前に決定される。分岐予測を使用するプロセッサと、分岐予測を使用しないプロセッサのいずれを設計するかという決定は、多くの設計上の要因に基いてなされ得るが、通常は、クロックサイクルを節約したいという願望に基いて決定される。場合によっては、推測命令フェッチを使用するプロセッサによって被る分岐予測ペナルティを排除するために、分岐予測を使用しないプロセッサを使用することがより望ましい。
【０００４】
したがって、より広範囲な用途へのプロセッサのスケーラビリティの向上を助け、設計と生産コストを下げることができる、分岐予測システムと非分岐予測システムの両方で使用するための単一のプロセッサに対する需要が存在する。
【０００５】
本発明の目的と、効果と、特長と、特徴、ならびに構造の関連要素の方法、操作、機能と、部品の組み合わせと、製造の経済性は、それらはすべて本明細書の一部をなす添付図面を参照しながら以下の説明と特許請求の範囲を考慮することで明らかとなる。図面において、同様の参照番号は、様々な図を通して対応部品を示す。
【０００６】
当業者であれば、図面中の要素は平易と明瞭さのために描かれており、必ずしも正しい縮尺ではないことを理解する。たとえば、図面中の要素のいくつかの寸法は、本発明の実施例の理解を高めるために、他の要素に対して誇張されている場合がある。
【０００７】
本願にて使用される場合、「分岐アドレス予測」「分岐予測」および「アドレス予測」という用語は一般的にたがいに互換的に使用される。「肯定する」と「否定する」という語は、信号、ステータスビット、または同様の装置を、それぞれ論理的に真かまたは論理的に偽の状態にすることを指す場合に使用される。論理的に真の状態が論理レベル１であるとすると、論理的に偽の状態は論理レベル０となる。また、論理的に真の状態が論理レベル０であるとすると、論理的に偽の状態は論理レベル１となる。
【０００８】
本発明の少なくとも１実施例は、第１動作モードと第２動作モードを有するデータ処理システムを提供する。データ処理システムは、第１信号を受信するための第１入力を有する中央処理装置を備える。第１信号の第１状態は、分岐予測を利用する第１動作モードを可能にし、第１信号の第２状態は、分岐予測を実質的に利用しない第２動作モードを可能にする。別の実施例において、第１動作モードは第１アドレス設定タイミングを結果的に生じ、第２動作モードは第２アドレス設定タイミングを結果的に生じる。第２アドレス設定タイミングは、第１アドレス設定タイミングより早いアドレス有効時間を可能にする。本発明の少なくとも１実施例において、データ処理システムは、順次アドレスと目標アドレスのいずれかを選択する選択回路と、命令フェッチ装置と、付属制御回路とから成る。
【０００９】
本発明の少なくとも１実施例は、アドレス設定時間を変更する方法も提供する。該方法は、第１動作モードと第２動作モードを有するデータ処理システムで使用できる。該方法は第１入力信号を受信することから成る。第１入力信号が第１状態を有していると、システムは第１動作モードで動作し、第１アドレス設定タイミングを結果的に生じる。第１入力信号が第２状態を有していると、システムは第２動作モードで動作し、第１設定タイミングより早いアドレス有効時間を有する第２アドレス設定タイミングを結果的に生じる。
【００１０】
まず図１を参照すると、データ処理システムが図示され、参照番号１００によって包括的に示される。データ処理システム１００は、中央処理装置ＣＰＵ１０２と、バスインターフェース装置ＢＩＵ１０４と、メモリ１０６とから成る。ＣＰＵ１０２は、メモリ１０６とＢＩＵ１０４にアドレス要求を供給し、メモリ１０６とＢＩＵ１０４からデータを受信するよう接続されている。ＣＰＵ１０２は、フェッチ要求などのトランザクション要求（ＴＲＥＱ）信号をメモリ１０６とＢＩＵ１０４に供給するようにも接続されている。さらに、ＣＰＵ１０２は、アドレス予測信号ＡＰＲＥＤ＊１３０を受信するために接続されている。ＣＰＵ１０２は、分岐アドレス予測可能モードまたは分岐アドレス予測無効モードのいずれかで動作できるように構成される。
【００１１】
本発明の１実施例において、データ処理システム１００は、分岐目標アドレスからフェッチするために使用されるクロックサイクル数を減少させるため、分岐アドレス予測を使用することが望ましいシステムの一部として実行される。かかるシステムでは、ＣＰＵ１０２は、分岐条件文の結果を予測することが望ましい。ＣＰＵ１０２が分岐条件文の結果を正しく予測すると、次の所望命令がすでにＣＰＵ１０２に読み込まれ、処理が開始できる。しかし、ＣＰＵ１０２が分岐条件文の結果を誤って予測すると、予測されたデータは破棄され、正しい情報がＣＰＵ１０２に読み込まれなければならず、その結果、誤った分岐予測への処理ペナルティが事実上適用される。別の例において、データ処理システム１００は、分岐予測を使用することが望ましくないシステムで実行されてもよい。かかるシステムは、たとえば、最低アドレス設定時間条件を備えたメモリを含むことがある。かかるメモリは、より低速のメモリほど、情報へアクセスするクロックサイクルを多く必要としないため、かかるシステムで分岐予測技術を使用することで実現される時間の節約は、誤った分岐予測によって被るペナルティを相殺しない。実際、かかるシステムで実行されるデータ処理システム１００は分岐予測を採用しないで、より高速で動作できる。
【００１２】
本発明の少なくとも１実施例において、アドレス予測信号ＡＰＲＥＤ＊１３０は、２つの異なる動作のモード間でＣＰＵ１０２を効果的に切り換える。第１動作モードでは、分岐アドレス予測が使用され、第２動作モードでは、分岐アドレス予測が禁止される。本発明のこの説明において、信号名ＡＰＲＥＤ＊の「＊」は、信号の肯定されるレベルが低いことを示す。すなわち、アクティブ・ローは、分岐アドレス予測が使用可能状態であることを示す。しかし、別の実施例は、本発明の種々の側面を実施するため、いかなるアクティブレベルの信号も利用できる。本発明の１実施例において、アドレス予測制御信号ＡＰＲＥＤ＊１３０は、データ処理システム１００がより大きいシステムに組み込まれたときに、高または低電圧のいずれかに結合される。ただし、１実施例においては、ＣＰＵ１０２の動作モードが、分岐予測を利用するか分岐予測を利用しないかのいずれかに固定され、別の実施例においては、ＣＰＵ１０２のモードが必要に応じて変更できるよう、制御レジスタか他の制御回路によってアドレス予測制御信号ＡＰＲＥＤ＊１３０が供給できることは理解される。
【００１３】
次に図２で、ＣＰＵ１０２の動作をより詳細に説明する。図１の参照番号と同様、類似あるいは同一の図２の参照番号は、同様、類似あるいは同一の特徴または要素を示す。１実施例において、ＣＰＵ１０２は、実行装置２０４と、復号化制御２０６と、命令フェッチ装置２２０と、アドレスマルチプレクサ２２６とを含む。実行装置２０４は、プログラム命令が実行され、条件付き分岐命令条件が評価される、ＣＰＵ１０２の部分である。実行装置２０４は、条件評価命令の結果に基づいて真または偽信号を発するために使用される条件発生器２０２を含む。たとえば、本発明の少なくとも１実施例において、条件評価命令の結果が、特定の条件を満たしていることを示していると、条件発生器２０２が真信号を発する。別の実施例は異なる論理を採用でき、使用される論理スキームに応じて、特定の条件が満たされないことを示す偽信号を発してもよい。条件評価命令の１例は、２個のデータ項目の値が等しいかどうかを決定するため２個のデータ項目の値を比較し、次に、その結果生じる条件（または条件コード）を発する命令である。多数の他の比較タイプと他の条件発生命令が当該技術分野で既知である。条件付き分岐命令は、条件評価命令の特定の値や結果をテストしたり、場合によっては、条件付き分岐命令自体の一部として、テストされる条件を含んだりしてもよい。該テストの結果に基づき、分岐の条件が満たされた場合に、通常の順次命令実行シーケンスが、分岐命令の目標位置に向け直される。
【００１４】
復号化制御２０６は、実行装置２０４による実行の準備のために命令２１２を復号化し、ＢＲＡＮＣＨ　ＤＥＣＯＤＥ２１０とＣＯＮＴＲＯＬ２０８を命令フェッチ装置２２０に送る。命令フェッチ装置２２０は、アドレス制御２１６と、保持レジスタ２４２と、プログラムカウンタ２４４と、命令レジスタ（ＩＲ）２１４と、加算器２４６とを含む。
【００１５】
アドレス制御２１６は、入力として、ＣＯＮＤＩＴＩＯＮ２１８と、ＣＯＮＴＲＯＬ２０８と、ＢＲＡＮＣＨ　ＤＥＣＯＤＥ２１０とＡＰＲＥＤ＊１３０を受信する。これらの入力のそれぞれの状態に基づき、ＡＤＤＲＥＳＳ　ＳＥＬＥＣＴ２２５が真または偽状態に設定される。１実施例において、真状態は、マルチプレクサ２２６がＳＥＱＵＥＮＴＩＡＬ　ＡＤＤＲ２２２をＡＤＤＲ２３２として出力することを表し、一方、偽状態は、ＴＡＲＧＥＴ　ＡＤＤＲ２２４がＡＤＤＲ２３２として出力されることを示す。アドレスマルチプレクサ２２６の出力は保持レジスタ２４２に戻される。１実施例において、保持レジスタ２４２に格納された値は、次に、ＳＥＱＵＥＮＴＩＡＬ　ＡＤＤＲ２２２を生成するため、４だけ増分される。加算器２４６は、分岐命令オペコードの一部から得た、命令レジスタ２１４によって供給されるアドレスオフセットに、プログラムカウンタ２４４に格納された値を加算することで、ＴＡＲＧＥＴ　ＡＤＤＲ２２４を決定する。次に、マルチプレクサ２２６は、ＡＤＤＲ　ＳＥＬＥＣＴ２２５に基づいて、ＳＥＱＵＥＮＴＩＡＬ　ＡＤＤＲ２２２かＴＡＲＧＥＴ　ＡＤＤＲ２２４を選択する。次に、選択されたアドレスがＡＤＤＲ２３２として出力される。
【００１６】
ＤＡＴＡ２３４は、ＣＰＵ１０２によって発せられるトランザクション要求（ＴＲＥＱ）２２８とＡＤＤＲ２３２に対応して、ＣＰＵ１０２によって受信される。ＴＲＥＱ２２８とＡＤＤＲ２３２はＢＩＵ１０４とメモリ１０６に供給される（図１参照）。ＢＩＵ１０４またはメモリ１０６は、ＡＤＤＲ２３２によって示される要求されたメモリアドレスから情報を検索し、次に、その情報をＤＡＴＡ２３４としてＣＰＵ１０２に送る。ＤＡＴＡ２３４は、ＣＰＵ１０２によって実行される命令と、命令によって支配されるいずれかの所要動作を実行する際に使用されるデータとの両方を含むことができる。
【００１７】
ＤＡＴＡ２３４に含まれるＩＮＳＴＲＵＣＴＩＯＮ２１２などのいずれかの命令が命令レジスタ２１４に送られ、命令レジスタ２１４は次に、ＩＮＳＴＲＵＣＴＩＯＮ２１２を復号化制御２０６に送り、そこでＩＮＳＴＲＵＣＴＩＯＮ２１２は実行装置２０４で使用される準備がされる。次に復号化制御２０６は、ＩＮＳＴＲＵＣＴＩＯＮ２１２を実行装置２０４に送り、そこで、ＩＮＳＴＲＵＣＴＩＯＮ２１２によって指定される動作が実行される。ＩＮＳＴＲＵＣＴＩＯＮ２１２が分岐命令を含む場合、復号化制御２０６は分岐命令の復号化を開始し、好ましくはＢＲＡＮＣＨ　ＤＥＣＯＤＥ２１０を真に設定する。分岐復号化２１０は、アドレスマルチプレクサ２２６が、順次アドレス２２２か目標アドレス２２４を選択できるようにするために用いられる入力の１つである。ＤＥＣＯＤＥ　ＣＯＮＴＲＯＬ２０６は、また、ＣＯＮＴＲＯＬ２０８などの他の制御信号をアドレス制御２１６に供給する。
【００１８】
前述したように、条件発生器２０２は、アドレスマルチプレクサ２２６によるＳＥＱＵＥＮＴＩＡＬ　ＡＤＤＲ２２２またはＴＡＲＧＥＴ　ＡＤＤＲ２２４の選択を制御するために使用されるアドレス制御２１６への入力の１つである信号ＣＯＮＤＩＴＩＯＮ２１８を発する。ＣＯＮＤＩＴＩＯＮ２１８は、実行装置２０４によって実行される条件発生命令の結果に対応して発せられる。分岐命令が実行中、ＣＯＮＤＩＴＩＯＮ２１８は、分岐条件評価の結果と、したがって、分岐が採用されたか、不成立に終わり次の順次命令に至ったかどうかを決定する際に使用される。アドレス制御２１６は、分岐命令の結果（条件）の予測に基づいて、ＡＤＤＲ２３２としてＴＡＲＧＥＴ　ＡＤＤＲ２２４を出力するよう、アドレスマルチプレクサ２２６を制御できる。しかし、アドレス予測制御信号ＡＰＲＥＤ＊１３０が、ＣＰＵ１０２に分岐予測動作モードでの動作を禁じるよう構成される場合、アドレス制御２１６は、ＡＤＤＲ２３２として目標アドレスＴＡＲＧＥＴ　ＡＤＤＲ２２４を出力することをアドレスマルチプレクサ２２６に禁じる。かかる場合、アドレス制御２１６の出力は、分岐命令の条件が評価され、フェッチする正しい次の命令の決定が行われるまで保持される。正しい命令は、分岐条件が満たされる場合は分岐宛先での目標命令か、分岐条件が満たされない場合は、分岐命令（からの順番で）の次の命令である。
【００１９】
分岐アドレス予測モードが使用可能（イネーブル）である場合で、予測が誤っていると判断されると、保持レジスタ２４２が予測アドレスを捕捉するのを防止するよう、ＭＩＳＰＲＥＤＩＣＴ２２９が保持レジスタ２４２にアサートされる。これにより、最後の順次アドレスが保持レジスタ２４２に保存され、予測アドレスによって上書きされないため、プロセッサが、誤った予測から復帰できる。誤った予測が生じたと判断されると、プロセッサは、ＡＤＤＲ２３２として駆動されるＳＥＱＵＥＮＴＩＡＬ　ＡＤＤＲ２２２を選択するようＡＤＤＲ　ＳＥＬＥＣＴ２２５にアサートすることで、命令パイプラインを順次命令ストリームで再補充し始めなければならない。
【００２０】
次に図３を参照すると、アドレス制御２１６の真理値表が図示され、参照番号３００で包括的に示される。アドレス制御２１６はアドレス予測可能（イネーブル）モードでもアドレス予測無効（ディセイブル）モードでも動作できることに留意する。列３１０〜３４０は、アドレス予測が可能である場合のアドレス制御２１６の機能を図示し、列３５０〜３８０は、アドレス予測が無効である場合のアドレス制御２１６の機能を図示する。列３５０と３６０は、ＡＰＲＥＤ＊１３０が否定され（アドレス予測無効モードを示す）、ＢＲＡＮＣＨ　ＤＥＣＯＤＥが偽である（分岐命令が受信されなかったことを示す）場合のアドレス制御２１６を示す。これらの両方の場合、ＡＤＤＲ　ＳＥＬＥＣＴ２２５は真で、ＣＯＮＤＩＴＩＯＮ２１８の状態に関わらず、次の順次アドレスが選択されることを示す。列３７０と３８０は、ＡＰＲＥＤ＊１３０が否定され、ＢＲＡＮＣＨ　ＤＥＣＯＤＥが真である（分岐命令が受信されたことを示す）場合のアドレス制御２１６を示す。これらの両方の場合、ＡＤＤＲ　ＳＥＬＥＣＴ２２５の状態はＣＯＮＤＩＴＩＯＮ２１８に依存し、列３８０に図示されるように分岐が採用される場合は偽となり、列３７０に図示されるように分岐が採用されない場合は真となる。ＭＩＳＰＲＥＤＩＣＴ２２９は、アドレス予測が使用されていないため、ＡＰＲＥＤ＊１３０が否定されると、偽のままとなる。しかしながら、ＡＰＲＥＤ＊１３０が否定されたときに、ＭＩＳＰＲＥＤＩＣＴ２２９は、単に無視されるか、無関係のものとして処理されてもよい。
【００２１】
列３１０と３２０は、ＡＰＲＥＤ＊１３０が肯定され（アドレス予測可能モードを示す）、ＢＲＡＮＣＨ　ＤＥＣＯＤＥが偽（分岐命令が受信されなかったことを示す）の場合のアドレス制御２１６を示す。これらの両方の場合、ＡＤＤＲ　ＳＥＬＥＣＴ２２５は、ＣＯＮＤＩＴＩＯＮ２１８の状態に関わらず真（次の順次アドレスが選択されることを示す）となる。さらに、ＭＩＳＰＲＥＤＩＣＴ２２９は、分岐命令が受信されなかったため、列３１０と３２０の両方で偽となる。列３３０と３４０は、ＡＰＲＥＤ＊１３０が肯定され、ＢＲＡＮＣＨ　ＤＥＣＯＤＥが真（分岐命令が受信されたことを示す）の場合のアドレス制御２１６を示す。これらのいずれの場合も、ＡＤＤＲ　ＳＥＬＥＣＴ２２５の状態は、ＣＯＮＤＩＴＩＯＮ２１８の状態がまだ分かっていないため偽となり、予測が行われなければならない。列３３０は、誤った予測が行われた場合にＭＩＳＰＲＥＤＩＣＴ２２９が真となることを示している。
【００２２】
次に図４を参照すると、本発明の１実施例によるタイミング図が図示される。図４は、条件設定命令と条件付き分岐命令を含む命令のシーケンスを実行する間の、プロセッサパイプライン（ＦＥＴＣＨ、ＤＥＣＯＤＥおよびＥＸＥＣＵＴＥ段階）の３つの段階での活動を図示する。プロセッサパイプラインは、それぞれの命令がこれらの３つの段階を順番に通るよう動作する。図４は、条件設定命令がパイプラインの実行段階（ＢＲＡＮＣＨ−１）にある間に、次の順次命令である条件付き分岐命令（ＢＲＡＮＣＨ）がパイプラインの復号化段階にあり、分岐命令の後の命令のために順番にフェッチが生じる（ＢＲＡＮＣＨ＋１）ことを示している。図４とその後の図面において、現在有効ではない（または完了していない）ことを表わすたにめ、信号と活動に格子状のマークを使用する。
【００２３】
図４のタイミング図は、アドレス予測が可能となり、正しい予測が行われ、単一分岐採用バブルがパイプラインに導入される場合のプロセッサタイミングを図示する。プロセッサパイプラインのフェッチ段階中、命令アドレス（ＡＤＤＲとして図示される）が次のアクセスのために駆出され、現在のアクセスのための命令データ（ＤＡＴＡとして図示される）がＣＰＵに読み込まれる。本例と後続例において、「ＢＲＡＮＣＨ（分岐）命令」で示される命令データは、条件付き分岐命令を含むと想定される。分岐命令は、一旦読み込まれると、復号化され、その後に使用される分岐目標アドレスを得るために計算が実行される。
【００２４】
分岐目標アドレス計算が完了すると、プロセッサは、分岐目標アドレス計算（これは予測されるアドレス）によって示されるメモリ位置からの情報のフェッチ要求を送る。該フェッチ要求は、分岐命令復号化が完了しつつあり、分岐条件コードが決定されつつあると同時に生じる。したがって、分岐目標アドレス計算が完了し、分岐目標アドレスがフェッチされている後しばらくたつと、条件コードは、分岐目標アドレスからフェッチするために行われた予測が正しいことを示す。アドレスが有効になった時点で、クロックＫの立下り後すぐ、（Ｔａｖ，ｐｒｅｄ ）が生じることに留意する。図４に図示される場合において、条件コードが決定され、正しい予測が実行された（すなわち分岐目標アドレスフェッチが正しい行動であった）ことを示す。本例で導入された処理の唯一の遅延は、単一分岐採用バブルであり、これは命令実行ストリームの方向を向け直すために、分岐命令から計算された目標アドレスが使用される場合にはいつでも結果的に生じる。本発明の１実施例においては、予測された目標アドレスが条件評価に依存しないが、（加算器２４６による）目標アドレス計算が完了し、アドレスマルチプレクサ２２６によって駆動されると直ちに有効となるため、クロックＫの立下りエッジから有効アドレス出力ＡＤＤＲへの遅延、Ｔａｖ，ｐｒｅｄ が、目標アドレス計算の結果よりも典型的に遅く生じる条件評価の完了時の待機に対して最小限に抑えられる。
【００２５】
次に図５を参照すると、本発明の１実施例による別のタイミング図が図示される。図４の参照番号と同様、類似または同一の図５での参照番号は、同様、類似または同一の特徴または要素を示す。図５に示されるタイミング図は、アドレス予測が可能になり、誤った予測が行われ、その結果サイクル停止になった場合に関する。図５においてアドレス有効タイミングが図４と同じである点に留意する。すなわち、これは条件評価に依存しないが、（加算器２４６による）目標アドレス計算が完了し、アドレスマルチプレクサ２２６によって駆動されると直ちに有効となる。プロセッサパイプラインのフェッチ段階中、命令アドレスと命令データが読み込まれる。復号化段階中、分岐命令が復号化され、分岐目標アドレス計算の結果を使用するために予測が行われる。分岐目標アドレス計算から返送されたアドレスは、次のクロックサイクル（条件設定命令が実行されるのとほぼ同時に）中にフェッチのため利用される。条件コード計算の完了時、分岐が依存する条件コードが決定され、かくして、分岐予測が正しいかどうかが分かる。図５は、分岐目標アドレスからの命令のフェッチにおいて、誤った予測が行われた場合のタイミングを図示する。条件コード評価の完了時、分岐が誤って予測されたと判断され、したがって、次の（正しい）順次命令のアドレスがフェッチされなければならない。該命令は図５において「ＢＲＡＮＣＨ＋２」として示される。プロセッサパイプラインにより、分岐命令から順番ですぐの命令（「ＢＲＡＮＣＨ＋１」）が以前にフェッチされ、同時に、分岐命令自体がパイプラインの復号化段階に入る。分岐目標アドレスからのフェッチにおける誤った予測は、予測された（誤った）アドレスのフェッチにおいて使用されたいかなるクロックサイクルも事実上無駄にする。
【００２６】
分岐目標アドレス計算の結果は、条件生成と、したがって分岐命令の決定前に一般的に利用できるため、分岐アドレス予測モードで動作する場合には、早期アドレス有効タイミングが得られることが、図４と５から分かる。さらに、分岐予測が誤っていると、早期アドレス有効タイミングのペナルティが、後で廃棄される分岐目標アドレスからの無駄なフェッチとなる。
【００２７】
次に図６を参照すると、本発明の１実施例によるタイミング図が説明される。図４と５の参照番号と同様、類似または同一の図６の参照番号は、同様、類似または同一の要素を表す。図６に図示されるタイミング図は、アドレス予測が無効となり（ＡＰＲＥＤ＊１３０が否定される）、分岐命令が受信された場合について扱う。図４と５と同様、フェッチ段階中、命令アドレスと命令データがフェッチされる。次に、分岐命令が復号化され、分岐目標アドレスが計算される。ただし、図４と５に図示されるタイミングとは異なり、分岐目標アドレスは直ちにはフェッチされない。その代わり、条件コード計算が完了し、分岐命令が利用されるかされないかのいずれかに決定され、正しい次のフェッチアドレスが分かった後まで、フェッチされる次のアドレスを選択するためプロセッサが待機する。また、アドレス予測が使用可能である図４と５とは異なり、有効アドレスが利用可能になった後の時間（Ｔａｖ，ｎｏｐｒｅｄ ）が、（Ｔａｖ，ｐｒｅｄ と比較して）クロック立ち下がり時間から、より離れている点にも留意する。正しい次のアドレスの選択は、分岐目標アドレス計算よりも通常遅い条件コード計算の完了の後までは生じない。条件コード計算が完了するまで待機することで、誤ったアドレス予測による誤ったアドレスのフェッチの可能性がなくなる。
【００２８】
次に図７を参照すると、本発明の少なくとも１実施例によるタイミング図が図示される。図４〜６の参照番号と同様、類似または同一の図７の参照番号は、同様、類似または同一の要素または特徴を表す。ここでも、命令データと命令アドレスはフェッチサイクル中に受信され、分岐命令が復号化され、分岐目標計算が実行される。ここでも、分岐目標アドレス計算は、次のメモリアドレスを直ちにフェッチするためには使用されない。その代わり、条件コード計算が完了した後に、フェッチされる正しいメモリアドレス（次の順次メモリ位置か、計算された目標アドレス）が選択される。このようにして、いかなる誤った予測も行われない。図７において、分岐条件が満たされないと、分岐が利用されないと決定し、正しい次のフェッチアドレスが命令「ＢＲＡＮＣＨ＋２」になる。該順次アドレスは、条件コード計算の完了後に駆出される。
【００２９】
したがって、アドレス予測が可能な動作モードと、アドレス予測が無効な動作モードのアドレス設定タイミングの違いは明白である。アドレス予測か可能な状態では、アドレス予測が無効になった場合より早いアドレス有効時間が提供される。すなわちＴａｖ，ｐｒｅｄ は一般的にＴａｖ，ｎｏｐｒｅｄ よりも少ない。メモリアクセスタイミング（有効なデータを返すためにメモリアドレスに必要な時間量）条件は、アドレス予測可能モードでの場合よりも、非アドレス予測モードにおいて、より厳しい。すなわち、アドレス予測禁止モードと組み合わせて使用されるメモリは、メモリ装置へのアドレス入力がクロックサイクルで後で有効になるため、分岐アドレス予測モードで使用されるメモリよりも有効データを速く返送できなければならない。別の実施例は、アドレス予測可能モードでより積極的なアドレス予測形態を実施でき、アドレス予測無効となるモードでより消極的なアドレス予測形態を実施できる。本実施例において、より積極的なアドレス予測形態は、より消極的な形態と比較して、一般的にアドレス有効時間が早くなる。より消極的な形態は、少ない分岐予測を行うか、あるいは実質的にまったく分岐予測を行わず、その結果、アドレス有効時間が遅くなる。したがって、図４〜７を参照して説明した効果は、分岐予測をまとめて単に可能または無効にすることによるのではなく、様々なレベルの分岐予測を可能にすることで得られる。
【００３０】
アドレス予測が使用されない場合、条件付き分岐命令が実行される間に正しい次のアドレスをフェッチするために使用されるクロックサイクル数は、分岐が採用されるかされないかにかかわらず同じであり、アドレス予測可能モードの場合、使用されるクロックサイクル数は、正しい予測が行われたかどうかに基づいて変動することに留意する。
【００３１】
誤った予測に対応するペナルティでメモリアドレスが早めに生成される分岐アドレス予測モードと、アドレス生成が遅延されるが追加命令フェッチは実行されない非予測モードとのいずれでも動作する柔軟性を提供することで、本発明の実施例は、先行技術のデータ処理システムよりも広い適用範囲に適するという効果が許容される。予測精度とメモリアクセス時間との間の折り合いが可能となり、説明したデータ処理システムの動作の最適化が可能となる。
【００３２】
以上の明細書において、本発明を特定の実施例を参照して説明してきた。しかし、当業者であれば、特許請求の範囲に記載される本発明の範囲から逸脱することなく、種々の改変と変更が行えることが理解される。したがって、明細書と図面は、制限的な意味ではなく例証的な意味で解釈され、そのような改変はすべて、本発明の範囲内に含まれるものとする。
【００３３】
利点、その他の効果、問題の解決法を特定の実施例を参照して説明してきた。しかし、利点、効果、問題の解決法、および任意の利点、効果または解決法を生じさせるかまたはより顕著にする要素は、任意のあるいはすべての請求項の重要、必要あるいは不可欠な特徴または要素として解釈されるべきではない。本願で使用される場合、「成る、含む、有する、備える（ｃｏｍｐｒｉｓｅｓ， ｃｏｍｐｒｉｓｉｎｇ ）」という用語あるいはその変形は、一連の要素から成る工程、方法、物品または装置がそのような要素のみを含むのではなく、そのような工程、方法、物品または装置に明白に列挙されないかまたは固有でない他の要素を含むことができるよう、非排他的包含を網羅するものとする。
【図面の簡単な説明】
【図１】本発明の１実施例によるデータ処理システムのブロック図。
【図２】本発明の少なくとも１実施例による、図１に図示される中央処理装置のブロック図。
【図３】本発明の１実施例による、図２のアドレス選択制御のための真理値表。
【図４】本発明の少なくとも１実施例による、アドレス予測が可能とされ、正しい予測が行われた場合のプロセッサタイミングを示すタイミング図。
【図５】本発明の少なくとも１実施例による、アドレス予測が可能とされ、誤った予測が行われた場合のプロセッサタイミングを示すタイミング図。
【図６】本発明の１実施例によるタイミング図で、アドレス予測が無効となり、分岐命令によって示される目標アドレスがフェッチされる場合のプロセッサタイミングを示す。
【図７】本発明の１実施例によるタイミング図で、アドレス予測が無効となり、分岐命令が「不成立に終わり」、次の順次命令がフェッチされる場合を示す。
【図１】
2004503865.tif 000003
【図２】
2004503865.tif 000004
【図４】
2004503865.tif 000005
【図５】
2004503865.tif 000006
【図６】
2004503865.tif 000007
【図７】
2004503865.tif 000008
【国際公開パンフレット】
2004503865.tif 000009
2004503865.tif 000010
2004503865.tif 000011
2004503865.tif 000012
2004503865.tif 000013
2004503865.tif 000014
2004503865.tif 000015
2004503865.tif 000016
2004503865.tif 000017
2004503865.tif 000018
2004503865.tif 000019
2004503865.tif 000020
2004503865.tif 000021
2004503865.tif 000022
2004503865.tif 000023
2004503865.tif 000024
2004503865.tif 000025
2004503865.tif 000026
2004503865.tif 000027
2004503865.tif 000028
2004503865.tif 000029
2004503865.tif 000030
2004503865.tif 000031
【国際調査報告】
2004503865.tif 000032
2004503865.tif 000033
2004503865.tif 000034