(57)【要約】【課題】  本発明は分岐予測器に関するものであって、特に、不要な電力の消耗を減らすことができる低電力分岐予測器に関するものである。【解決手段】  本発明の低電力分岐予測器は現在分岐予測のための第１分岐予測アルゴリズムを実行する第１分岐予測器と現在分岐予測のための第２分岐予測アルゴリズムを実行する第２分岐予測器および第１分岐予測器と第２分岐予測器の動作を制御するための制御信号を生成し、第１分岐予測器または第２分岐予測器の分岐予測の結果を選択して出力する選択予測器を含み、第１分岐予測器と第２分岐予測器は選択予測器による制御信号に従って各々分岐予測アルゴリズムを実行する。【選択図】  図５
2005100403.tif 000002
【特許請求の範囲】
【請求項１】
低電力分岐予測器において、
分岐命令語の結果を予測するために第１分岐予測アルゴリズムを実行する第１分岐予測器と、
前記分岐命令語の結果を予測するために第２分岐予測アルゴリズムを実行する第２分岐予測器と、
前記第１分岐予測器及び前記第２分岐予測器の動作を制御するための制御信号を生成し、前記第１分岐予測器と前記第２分岐予測器のうちの一つの予測結果を選択して出力する選択予測器とを含み、
前記第１分岐予測器と前記第２分岐予測器は前記制御信号に従って各々の前記予測アルゴリズムを実行することを特徴とする低電力分岐予測器。
【請求項２】
前記選択予測器は前記第１分岐予測器及び前記第２分岐予測器より所定のサイクル先行して動作して、前記第１分岐予測器及び前記第２分岐予測器のうちの一つだけを前記分岐命令語に対する分岐予測を実行する分岐予測器で選択することを特徴とする請求項１に記載の低電力分岐予測器。
【請求項３】
前記第１分岐予測器は以前の分岐予測結果を利用して分岐命令に対する分岐予測を実行するローカル予測器であることを特徴とする請求項１に記載の低電力分岐予測器。
【請求項４】
前記第１分岐予測器は各命令語の別に最も最近の分岐の分岐予測結果であるローカルヒストリを貯蔵するローカルヒストリテーブルと、
前記ローカルヒストリテーブルに貯蔵されたローカルヒストリによってインデックスされるローカル予測テーブルと、
外部から入力されるプログラムカウンタによってインデックスされ、前記ローカルヒストリテーブル及び前記ローカル予測テーブルによってアップデートされるローカル予測資源アレイと、
前記選択予測器からの第１制御信号に従って前記第１分岐予測器の動作をイネーブル、またはディセーブルする制御ロジッグとを含むことを特徴とする請求項１に記載の低電力分岐予測器。
【請求項５】
前記ローカルヒストリテーブル及び前記ローカル予測テーブルは分岐予測動作の時には使用されず、分岐予測結果を利用したアップデートにだけ使用されることを特徴とする請求項４に記載の低電力分岐予測器。
【請求項６】
前記第２分岐予測器は前記分岐予測器による以前の分岐予測結果を利用して現在分岐に対する分岐予測を実行するグローバル分岐予測器であることを特徴とする請求項１に記載の低電力分岐予測器。
【請求項７】
前記第２分岐予測器は前記分岐予測器の以前分岐予測結果と外部からのプログラムカウンタとの所定の演算値によってインデックスされ、前記分岐予測器の最近分岐予測結果であるグローバルヒストリを貯蔵するグローバル予測テーブルと、
前記選択予測器からの第２制御信号に従って前記第２分岐予測器の動作をイネーブルするか、ディセーブルする制御ロジッグとを含むことを特徴とする請求項１に記載の低電力分岐予測器。
【請求項８】
前記選択予測器は入力される前記分岐予測器の以前分岐予測結果値を１ビットずつ左にシフトさせるシフトレジスタと、
前記シフトレジスタからの以前分岐予測値によってインデックスされ、予測器選択値を出力する選択予測テーブルと、
前記選択予測テーブルからの予測器選択値に従って前記第１分岐予測器及び前記第２分岐予測器の動作を制御する前記制御信号を生成し、前記分岐予測器の出力を選択する選択信号を生成する予測器選択器と
前記第１分岐予測器及び前記第２分岐予測器に連結され、前記選択信号に従って前記第１及び第２分岐予測器のうちの一つからの分岐予測値を出力するマルチプレクサ回路で構成されることを特徴とする請求項１に記載の低電力分岐予測器。
【請求項９】
低電力分岐予測器の実現方法において、
以前分岐予測結果を利用して複数の分岐予測器のうちの現在分岐命令に対する分岐予測を実行する一つの分岐予測器を選択する予測器選択段階と、
前記予測器選択段階で選択された分岐予測器によって現在分岐命令に対する分岐予測が実行される分岐予測実行段階とを具備することを特徴とする低電力分岐予測器の実現方法。
【請求項１０】
前記予測器選択段階で選択されない分岐予測器はディセーブルされて、分岐予測動作を実行しないことを特徴とする請求項９に記載の低電力分岐予測器の実現方法。
【請求項１１】
分岐予測装置において、
前記分岐予測装置は前記請求項９の方法に符号する分岐予測動作を実行するように構成されることを特徴とする分岐予測装置。
【請求項１２】
分岐予測装置の選択予測器において、
前記分岐予測装置に貯蔵された分岐予測結果を１ビット左にシフトするためのシフトレジスタと、
前記シフトレジスタによってインデックスされて、分岐予測結果を出力する選択予測テーブルと、
前記選択予測テーブルからの予測器選択値に従って第１分岐予測器及び第２分岐予測器の動作を制御する制御信号を生成し、第１及び第２分岐予測器のうちの一つの出力を選択する選択信号を生成する予測器選択器と、
前記第１分岐予測器及び前記第２分岐予測器に連結され、前記選択信号に従って前記第１及び第２分岐予測器のうちの一つからの分岐予測値を出力するマルチプレクサ回路で構成されることを特徴とする選択予測器。
【請求項１３】
分岐予測装置の選択予測器動作方法において、
前記分岐予測装置のシフトレジスタに貯蔵された分岐予測値を左に１ビットシフトする段階と、
予測器選択値を出力するために前記シフトレジスタの値に従って選択器予測テーブルをインデックスする段階と、
前記予測器選択値に従って複数の分岐予測器の動作を制御するための制御信号を生成する段階とを具備することを特徴とする選択予測器動作方法。
【請求項１４】
プログラムの分岐命令結果を予測してコンピュータをイネーブルする命令語を有するコンピュータ装置において、
前記命令語は前記コンピュータが以前分岐予測結果を利用して、複数の分岐予測器のうちの一つの分岐予測器を選択するようにし、前記コンピュータが前記選択された分岐予測器を利用して分岐命令に対する分岐予測を実行するようにすることを特徴とするコンピュータ装置。
【請求項１５】
前記命令語は前記コンピュータをして前記複数の分岐予測器のうちの分岐命令を実行するように、選択されない他の分岐予測器をディセーブルするようにすることを特徴とする請求項１４に記載のコンピュータ装置。
【請求項１６】
分岐予測装置の選択予測器において、
前記選択予測器は前記請求項１３項の方法に符合して動作するように構成されることを特徴とする選択予測器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイクロプロセッサ（Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）の分岐予測器（Ｂｒａｎｃｈ  Ｐｒｅｄｉｃｔｏｒ）に関するものであって、特に、分岐予測の時に消耗される不要な電力を減らすことができる低電力分岐予測器およびその実現方法に関するものである。
【背景技術】
【０００２】
分岐命令文（Ｂｒａｎｃｈ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｔａｔｅｍｅｎｔ）とは、分岐命令文に含まれた所定の条件を満足する場合に、分岐命令文で明示する命令語が実行され、そうではない場合には、分岐命令文の次に提示される命令語が実行されるプログラム命令語の一種であり、代表的な例が条件分岐文（Ｃｏｎｄｉｔｉｏｎａｌ  Ｂｒａｎｃｈ  Ｓｔａｔｅｍｅｎｔ）である。
【０００３】
このような分岐命令文で、次に実行される命令語を決めるために、分岐命令文に含まれた分岐の条件を検索する過程が必要であり、このような検索の過程は、命令語のより速いフェッチ（ｆｅｔｃｈ）を要するパイプライン（Ｐｉｐｅｌｉｎｅ）構造のマイクロプロセッサでシステムの性能を低下させる主な原因になる。
【０００４】
最近では、このような問題を解決するため、分岐命令文の条件検索の結果を予め予測する分岐予測器（Ｂｒａｎｃｈ  Ｐｒｅｄｉｃｔｏｒ）が広く使用されており、このような分岐予測器を通じて獲得された予測の結果を利用して、分岐命令分の次に実行される命令語を予めフェッチしておくことによって、マイクロプロセッサの性能を向上させる。しかし、もし分岐予測が間違う場合に、予めフェッチしておいた命令語（ｉｎｓｔｒｕｃｔｉｏｎ）は全部無効化され、新しい他の命令語をフェッチすべきであるので、不正確な分岐予測はむしろ全体のマイクロプロセッサの性能を低下させる結果をもたらす。したがって、このような分岐予測の正確性を高めるための研究が最近活発に行なわれており、このうちトーナメント分岐予測器（Ｔｏｕｒｎａｍｅｎｔ  Ｂｒａｎｃｈ  Ｐｒｅｄｉｃｔｏｒ）は最も正確な分岐予測器として知られている。
【０００５】
トーナメント分岐予測器に対しては特許文献１および非特許文献１に詳細に記載されている。図１は非特許文献１に記載されている従来の分岐予測器のブロック図である。
【０００６】
図１に示したように、従来の分岐予測器は大きくローカル予測器１００（Ｌｏｃａｌ  Ｐｒｅｄｉｃｔｏｒ）とグローバル予測器１１０（Ｇｌｏｂａｌ  Ｐｒｅｄｉｃｔｏｒ）、グローバルヒストリレジスタ１３０（Ｇｌｏｂａｌ  Ｈｉｓｔｏｒｙ  Ｒｅｇｉｓｔｅｒ）、および選択予測器１２０（Ｃｈｏｉｃｅ  Ｐｒｅｄｉｃｔｏｒ）を含む。
【０００７】
ローカル予測器１００は現在入力される分岐命令語に対する以前の分岐予測結果のヒストリを使用してローカル分岐予測アルゴリズムを実行する。このようなローカル予測器１００は各分岐命令語に対して最近予測結果を示す３ビットの予測ビット（Ｐｒｅｄｉｃｔｉｏｎ  Ｂｉｔ）および予測に使用された回数を示す２ビットのポインタビット（Ｐｏｉｎｔｅｒ  Ｂｉｔ）で構成されてローカル予測結果ＬＰ＿Ｖを出力し、分岐命令語のアドレスＡｄｄｒｅｓｓを示すプログラムカウンタ（Ｐｒｏｇｒａｍ  Ｃｏｕｎｔｅｒ以下、ＰＣ）によってインデックス（ｉｎｄｅｘ）されるローカル予測資源アレイ１０２（Ｌｏｃａｌ  Ｐｒｅｄｉｃｔｉｏｎ  Ｓｏｕｒｃｅ  Ａｒｒａｙ以下、ＬＰＳＡ）と各分岐命令語の最も最近の１０個の分岐に対する予測結果（ｔａｋｅｎまたはｕｎｔａｋｅｎ）のヒストリすなわち、ローカルヒストリを貯蔵し、ＬＰＳＡ１０２と同様に、ＰＣによってインデックスされるローカルヒストリテーブル１０４（Ｌｏｃａｌ  Ｈｉｓｔｏｒｙ  Ｔａｂｌｅ以下、ＬＨＴ）およびＬＨＴ１０４に貯蔵されたローカルヒストリによってインデェックスされるローカル予測テーブル１０６（Ｌｏｃａｌ  Ｐｒｅｄｉｃｔｉｏｎ  Ｔａｂｌｅ以下、ＬＰＴ）を含む。
【０００８】
一方、ＬＰＳＡ１０２は分岐予測の後、ＬＨＴ１０４とＬＰＴ１０６によってアップデートされ、ＬＨＴ１０４とＬＰＴ１０６はただＬＰＳＡ１０２のアップデートにのみ使用され、分岐予測の時には使用されない。
【０００９】
グローバルヒストリレジスタ１３０は分岐予測器による最近分岐予測結果ＰＲＥＤ＿Ｖのヒストリすなわち、グローバルヒストリを貯蔵する。
【００１０】
グローバル予測器１２０はＰＣとグローバルヒストリレジスタ１３０から入力されるグローバルヒストリの排他的論理和１４０（ＸＯＲ：Ｅｘｃｌｕｓｉｖｅ  ＯＲ）によってインデェックスされるグローバル予測テーブル１１２（Ｇｌｏｂａｌ  Ｐｒｅｄｉｃｔｉｏｎ  Ｔａｂｌｅ以下、ＧＰＴ）を利用してグローバル分岐予測アルゴリズムを実行し、グローバル予測結果ＧＰ＿Ｖを出力する。
【００１１】
選択予測器１２０はグローバルヒストリによってインデェックスされて、予測器選択値ＰＳＥＬを出力する選択予測テーブル１２２（Ｃｈｏｉｃｅ  Ｐｒｅｄｉｃｔｉｏｎ  Ｔａｂｌｅ以下、ＣＰＴ）およびマルチプレクサ回路１２４を含んでローカル予測器１００およびグローバル予測器１１０からの予測結果ＬＰ＿Ｖ、ＧＰ＿Ｖのうちの一つを選択して最終分岐予測ＰＲＥＤ＿Ｖに出力する。
【００１２】
一方、ＬＰＴ１０６とＧＰＴ１１２およびＣＰＴ１２２は全部サチュレーションカウンタ（Ｓａｔｕｒａｔｉｏｎ  Ｃｏｕｎｔｅｒ）で実現され、ＬＰＴ１０６とＧＰＴ１１２の各エントリ（ｅｎｔｒｙ）は分岐がとられる（ｔａｋｅｎ）ことで予測される場合、“１”増加し、とられない（ｕｎｔａｋｅｎ）ことで予測される場合“１”減少してアップデートされる。一方、ＣＰＴ１２２のエントリは最終分岐予測のため選択される分岐予測器の種類に従ってアップデートされる。すなわち、ローカル予測器１００の分岐予測値ＬＰ＿Ｖが最終分岐予測値ＰＲＥＤ＿Ｖで選択されたか、グローバル予測器１１０の分岐予測値ＧＰ＿Ｖが最終分岐予測値ＰＲＥＤ＿Ｖで選択されたかに従って増加、または減少することによってアップデートされ、これはプログラマによって任意に定義される。
【００１３】
図２は図１に示した従来の分岐予測器の分岐予測動作をより詳細に説明するための図面である。図２に示した各テーブルのエントリ値は説明の便宜のため任意に設定した値である。もし、図２のように、０であるアドレスの分岐命令語を示すＰＣが外部から入力されれば、ローカル予測器１００ではＰＣ“０”によってＬＰＳＡ１０２の一番目のエントリがインデェックスされ、インデェックスされた一番目のエントリの予測ビット“１１０”のうちの最上位ビット（Ｍｏｓｔ  Ｓｃａｎ  Ｂｉｔ以下、ＭＳＢ）値である“１”がローカル予測器１００の分岐予測値ＬＰ＿Ｖに出力される。そして、グローバルヒストリレジスタ１３０に貯蔵されている１０ビットのグローバルヒストリ“００００００００１１”とＰＣの排他的論理値“００００００００１１”によってＧＰＴ１１２の四番目のエントリがインデェックスされ、インデェックスされたエントリ“０１１”のＭＳＢ値である“０”がグローバル予測器１１０の分岐予測値ＧＰ＿Ｖに出力される。また、ＣＰＴ１２２では、グローバルヒストリ“００００００００１１”によってＣＰＴ１２２の四番目のエントリがインデェックスされ、インデェックスされたエントリ“１００”のＭＳＢ値である“１”が予測器を選択するための予測器選択値ＰＳＥＬでマルチプレクサ回路１２４に入力される。ここで、各予測器の分岐予測値が“１”というのは、分岐がとられることで予測されたことを意味し、分岐予測値が“０”というのは、分岐がとられないことで予測されることを意味する。そして、ＣＰＴ１２２による予測器選択値ＰＳＥＬが“１”であれば、ローカル予測器１００の分岐予測値ＬＰ＿Ｖが最終分岐予測値ＰＲＥＤ＿Ｖで選択され、予測器選択値ＰＳＥＬが“０”であれば、グローバル予測器１１０の分岐予測値ＧＰ＿Ｖが最終分岐予測値ＰＲＥＤ＿Ｖで選択されると仮定すれば、図２では、ＣＰＴ１２２による予測器選択値ＰＳＥＬが“１”であるので、マルチプレクサ１２４により最終分岐予測値ＰＲＥＤ＿Ｖでローカル予測器１００の分岐予測値ＬＰ＿Ｖである“１”が出力され、これは入力されたＰＣに該当する分岐命令語の分岐がとられることで予測されたことを意味する。これによって、マイクロプロセッサは分岐がとられる場合、すなわち、分岐命令文の条件が“真”である場合に実行する命令語をフェッチするようになる。
【００１４】
一方、分岐予測器は、図２のような分岐予測が実行された後、その予測の結果にしたがって各テーブルとレジスタをアップデートして、次の分岐予測に利用し、図３Ａ乃至図３Ｅは図２に示した分岐予測結果によるアップデータの過程を示す図面であって、図面の左側はアップデートの以前のテーブル値を示し、右側は前記のような分岐予測結果に従ってアップデートされた各テーブルの値を示す。ここで、分岐予測に使用された各テーブルのエントリ値は分岐予測結果、分岐がとられたことで予測された場合ＰＲＥＤ＿Ｖ＝“１”、“１”ずつ増加し、とられないことで予測された場合ＰＲＥＤ＿Ｖ＝“０”、“１”ずつ減少する。ただ、ＣＰＴ１２２の場合には最終分岐予測のためローカル予測器１００が選択されれば、“１”増加し、グローバル予測器１１０が選択されれば、“１”減少することで定義する。
【００１５】
図３Ａは図２に示した分岐予測結果値ＰＲＥＤ＿Ｖ＝“１”に従ってローカル予測器１００に含まれたＬＨＴ１０４およびＬＰＴ１０６のアップデート過程を示す。図３ＡのＬＨＴ１０４とＬＰＴ１０６は図２で分岐がとられたことＰＲＥＤ＿Ｖ＝“１”で予測されるので、ＰＣによってインデェックスされるＬＨＴ１０４の一番目のエントリ値“００００００００１０”は左側に一つのビットずつシフトされ、エントリの最下位ビット（Ｌｏｗ  Ｓｃａｎ  Ｂｉｔ以下、ＬＳＢ）に現在の分岐予測結果値“１”が挿入される“０００００００１０１”。そしてＬＨＴ１０６によってインデェックスされたＬＰＴ１０６の三番目のエントリの値“０００”は“１”増加して“００１”になる。一方、図３Ｂのように、ＬＰＳＡ１０２の一番目のエントリのポインタビットは“１”増加し、図３Ａに示したＬＨＴ１０４およびＬＰＴ１０６の値を参照してアップデートされる。本発明では、ＬＰＳＡ１０２の詳細なアップデート過程に対しては説明を省略する。
【００１６】
図３Ｃは分岐予測結果によるグローバルヒストリレジスタ１３０のアップデート過程を示す。図３Ｃに示したように、グローバルヒストリレジスタ１３０の値“００００００００１１”は左側に１ビットずつシフトされ、分岐予測結果値“１”がレジスタ１３０のＬＳＢに挿入される。（“０００００００１１１”）
【００１７】
図３Ｄは分岐予測結果によるＧＰＴ１１２のアップデート過程を示す。現在分岐予測に使用されたＧＰＴ１１２の四番目のエントリ値“０１１”は分岐がとられたことで予測されたので、“１”増加して“１００”になる。
【００１８】
図３Ｅは分岐予測結果によるＣＰＴ１２２のアップデート過程を示す。ＣＰＴ１２２は選択された予測器が何であるかに従ってアップデート値が決められ、ここでは、ローカル予測器１００が選択されたので、先の定義のように、分岐予測に使用されたＣＰＴ１２０の四番目のエントリ値“１００”は“１”増加して“１０１”になる。
【００１９】
以上のような予測とアップデート過程を通じてトーナメント分岐予測器はより正確し、信頼性ある分岐予測を実行する。しかし、図４に示したように、従来のトーナメント分岐予測器では各々の分岐予測器（ローカル予測器、グローバル予測器）によって同時に分岐予測が実行され、選択予測器１２０による分岐予測器の選択も同時になされる。これによって、全体の分岐予測器による不要な電力の消耗が発生し、例えば、図２のように、ローカル予測器１００が最終分岐予測器で選択された場合、結果的にグローバル予測器１１０は選択されない分岐予測のため不要な電力を消耗したことになり、反対に、グローバル予測器１１０が選択された場合には、ローカル予測器１００が不要な電力を消耗したことになる。
【００２０】
一方、現在マイクロプロセッサによる全体の電力の消耗のうち、分岐予測器による電力消耗は１０％以上を占めることで知られている。したがって、分岐予測器による不要な電力の消耗を減らすことは、分岐予測器の正確性を高めるとともにマイクロプロセッサの性能を向上させる重要な要素の一つである。
【特許文献１】米国特許第５，７５８，１４２号
【非特許文献１】Ｓ．ＭｃＦａｒｌｉｎｇ，‘Ｃｏｍｂｉｎｉｎｇ  Ｂａｒａｎｃｈ  Ｐｒｅｄｉｃｔｏｒｓ’，１９９３年６月
【発明の開示】
【発明が解決しようとする課題】
【００２１】
上述のような問題を解決するため、本発明では、分岐予測過程で発生する不要な電力消耗を減少させることができる低電力分岐予測器を提供しようとする。
【課題を解決するための手段】
【００２２】
本発明の低電力分岐予測器は現在分岐予測のための第１分岐予測アルゴリズムを実行する第１分岐予測器と現在分岐予測のための第２分岐予測アルゴリズムを実行する第２分岐予測器および第１分岐予測器と第２分岐予測器の動作を制御するための制御信号を生成し、第１分岐予測器または第２分岐予測器の分岐予測の結果を選択して出力する選択予測器とを含み、第１分岐予測器と第２分岐予測器は選択予測器からの制御信号に従って各々分岐予測アルゴリズムを実行する。
【発明の効果】
【００２３】
本発明の低電力分岐予測器は従来の分岐予測器に比べて分岐予測の正確性には悪影響を及ばなくても、消耗される電力を減少させることができる。すなわち、後述の実験の結果に示したように、従来の分岐予測器に比べて本発明の低電力分岐予測器は大部分のアプリケーションで大略１１〜１９％の電力節減効果を有する。
【発明を実施するための最良の形態】
【００２４】
図５は本発明の低電力分岐予測器の実施の形態を示すブロック図である。図５を参照すると、本発明の低電力分岐予測器は大きくローカル予測器５００、グローバル予測器５１０、グローバルヒストリレジスタ５３０および各予測器５００、５１０の制御のための制御回路を含む選択予測器５２０で構成される。
【００２５】
ローカル予測器５００は現在入力される分岐命令語に該当する以前の分岐予測結果であるローカルヒストリを利用して現在分岐命令に対する結果を予測するローカル分岐予測アルゴリズムを実行し、ＬＰＳＡ５０２、ＬＨＴ５０４、ＬＰＴ５０６および選択予測器５２０からの第１制御信号Ｃｔｒｌ０に従って全体のローカル予測器５００の動作をイネーブルさせるか、ディセーブルさせる制御ロジック５０８を含む。
【００２６】
グローバルヒストリレジスタ５３０は分岐予測器による以前の分岐予測結果であるグローバルヒストリを貯蔵する１０ビットのサイズのレジスタで実現される。
【００２７】
グローバル予測器５１０はグローバルヒストリレジスタ５３０に貯蔵されたグローバルヒストリを利用して現在分岐命令に対する結果を予測するグローバル分岐予測アルゴリズムを実行し、最近分岐の結果を貯蔵するＧＰＴ５１２および選択予測器５２０からの第２制御信号Ｃｔｒｌ１に従って全体のグローバル予測器５１２の動作をイネーブルさせるか、ディセーブルさせる制御ロジック５１４を含む。
【００２８】
選択予測器５２０はグローバルヒストリレジスタ５３０からのグローバルヒストリ値を１ビットずつ左側にシフトさせる１ビットシフトレジスタ５２２と最近予測器選択の結果のヒストリを貯蔵するＣＰＴ５２４およびＣＰＴ５２４の予測結果に従ってローカル予測器５００とグローバル予測器５１０とを制御する制御信号Ｃｔｒｌ０、Ｃｔｒｌ１を生成し、本発明の低電力分岐予測器の出力ＰＲＥＤ＿Ｖを選択するための選択信号ＰＳＥＬを生成する予測器選択器５２６およびマルチプレクサ５２８で構成される。
【００２９】
まず、本発明の低電力分岐予測器は選択予測器５２０がグローバルヒストリレジスタ５３０の値を利用してローカル予測器５００とグローバル予測器５２０より一サイクルを先行して予測器選択過程を実行する。もし、以前のグローバルヒストリレジスタ５３０の値が“０００００００００１”であり、その次の選択された最終分岐予測値が“１”であれば、選択予測器５２０はその次の予測値“１”が選択される前、すなわち、グローバルヒストリレジスタ５３０がアップデートされる前にローカル予測器５００とグローバル予測器５１０より一つのサイクル速く予測器を選択するための動作を始め、動作中に選択されるその次の最終分岐予測値“１”を利用してＣＰＴ５２４のエントリを選択して選択されたエントリのＭＳＢ値を出力する。
【００３０】
図６Ａは本発明の低電力分岐予測器において、選択予測器５２０の予測器選択動作をより詳細に説明するための図面である。図６Ａを参照すると、選択予測器５２０はアップデートされる前のグローバルヒストリレジスタ５３０の値“０００００００００１”をシフトレジスタ５２２を利用して１ビットずつ左側にシフトし、シフトされた９ビットのレジスタ値“００００００００１”によってインデックスされるＣＰＴ５２４の二番目のエントリラインで、以後に入力されるその次の最終分岐予測値“１”に該当するエントリを選択して、選択されたエントリのＭＳＢ値“１”を出力する。そして、予測器選択器５２６はＣＰＴ５２４から出力されるエントリのＭＳＢ値“１”を利用して各予測器５００、５１０を制御するための制御信号Ｃｔｒｌ０、Ｃｔｒｌ１および予測器選択信号ＰＳＥＬを生成する。第１制御信号Ｃｔｒｌ０はローカル予測器５００に入力されてローカル予測器５００の動作をイネーブルさせるか、ディセーブルさせ、第２制御信号Ｃｔｒｌ１はグローバル予測器５１０の動作をイネーブルさせるか、ディセーブルさせる。本発明の低電力分岐予測器ではＣＰＴ５２４の出力が“１”である場合、ローカル予測器５００の出力ＬＰ＿Ｖを全体の分岐予測器の出力ＰＲＥＤ＿Ｖで選択し、“０”である場合、グローバル予測器５１０の出力ＧＰ＿Ｖを全体の分岐予測器の出力ＰＲＥＤ＿Ｖで選択すると定義する。上のような場合ＣＰＴ５２４の出力が“１”であるので、ローカル予測器５００の出力ＬＰ＿Ｖが全体の分岐予測器の出力ＰＲＥＤ＿Ｖで選択される。したがって、予測器選択器５２６はローカル予測器５００をイネーブルさせ、グローバル予測器５１０をディセーブルさせるように制御信号Ｃｔｒｌ０、Ｃｔｒｌ１を生成し、ローカル予測器５００の出力ＬＰ＿Ｖが全体の分岐予測器の出力ＰＲＥＤ＿Ｖになるように、マルチプレクサ回路５２８を制御する予測器選択信号ＰＳＥＬを生成する。
【００３１】
一方、図６Ａに示したＣＰＴ５２４は９ビット値にインデェックスされるので、２９＝５１２個のインデェックスラインを有し、全体のＣＰＴのサイズは２９＊６になる。これはグローバルヒストリレジスタが１０ビットの値を有し、ＣＰＴ５２４はこれを１ビット左側にシフトさせた９ビットの値によりインデェックスされるので、同一のビットのグローバルヒストリレジスタを有する従来のＣＰＴ構成と比較すれば、ＣＰＴの幅は二倍、深さは半分のサイズを有する。
【００３２】
図６Ｂは本発明で、図６Ａのような選択予測器５２０の制御信号Ｃｔｒｌ０、Ｃｔｒｌ１および予測器選択信号ＰＳＥＬによる各予測器の動作を説明するための図面である。図６Ｂで、各予測器５００、５１０は先の言及のように、選択予測器５２０より一つのサイクル遅く動作する。すなわち、グローバルヒストリレジスタ５３０が次の最終分岐予測値“１”によってアップデートされた後、すなわちレジスタ値が“００００００００１１”にアットデートされた後、選択予測器５２０からの制御信号Ｃｔｒｌ０、Ｃｔｒｌ１によって動作する。
【００３３】
図６Ｂを参照すると、本発明のローカル予測器５００はＰＣによってインデェックスされるＬＰＳＡ５０２エントリのＭＳＢ値をローカル予測器５００の分岐予測値ＬＰ＿Ｖに出力し、選択予測器５２０からの第１制御信号Ｃｔｒｌ０によってイネーブルされるか、ディセーブルされる。そして、グローバル予測器５１０はグローバルヒストリレジスタ５３０からの１０ビット値とＰＣの排他的論理和５４０によってインデェックスされるＧＰＴ５１２エントリのＭＳＢ値をグローバル予測器５１０の分岐予測値ＧＰ＿Ｖに出力し、選択予測器からの第２制御信号Ｃｔｒｌ１によってイネーブルされるか、ディセーブルされる。図６Ａで、選択予測器５２０によってローカル予測器５００が現在分岐命令の予測器で選択されるので、グローバル予測器５１０は第２制御信号Ｃｔｒｌ１によってディセーブルされて動作せず、ローカル予測器５００が第１制御信号Ｃｔｒｌ０によってイネーブルされて、現在分岐命令に対する分岐予測動作を実行してＰＣによってインデックスされた一番目のエントリのＭＳＢ値“１”がローカル分岐予測値ＬＰ＿Ｖに出力され、これは選択予測器５２０からの選択信号ＰＳＥＬによってマルチプレクサ５２８の出力すなわち、全体の分岐予測器の最終分岐予測値ＰＲＥＤ＿Ｖに出力される。
【００３４】
以上のような分岐予測過程が実行された後、各テーブルおよびレジスタのアップデートが進行され、アップデート過程は従来の分岐予測器と差がなくて、本発明の説明では省略する。すなわち、アップデートは従来のように、分岐予測に使用されたエントリに対して分岐予測結果に従って分岐がとられたことＰＲＥＤ＿Ｖ＝“１”で予測されれば、“１”ずつ増加し、反対の場合ＰＲＥＤ＿Ｖ＝“０”は、“１”ずつ減少する。
【００３５】
図７は、以上のようは本発明の低電力分岐予測器で分岐予測過程を示す流れ図である。図７に示したように、本発明の低電力分岐予測器は選択予測器５２０を利用してローカル予測器５００およびグローバル予測器５１０より一つのサイクル先行して分岐予測に使用される予測器を予測して選択し、選択された予測器のみをイネーブルさせ、選択されない予測器はディセーブルさせることによって、分岐予測の時に不要な電力の消耗を防止する。
【００３６】
図８は全体の命令語対比分岐命令語の比による本発明の低電力分岐予測器および従来の分岐予測器による電力の消耗を測定した結果を示す図面である。これは普遍的に使用される三星メモリコンパイラを使用して測定し、一般的な条件（２５℃、印加電圧＝１．２０Ｖｏｌｔ）下でなされた。そして、グローバルヒストリからの平均値を基づいてローカル予測器による予測比率を７５％、グローバル予測器による予測比率を２５％に仮定して測定したことである。
【００３７】
図８を参照すると、分岐命令比によって本発明の低電力分岐予測器による電力の消耗８０２が従来の分岐予測器による電力消耗８００に比べて約５〜１９％程度減少したことが分かる。図８で、分岐命令語の比が増加するほど電力消耗の減少は鈍化する。これは、分岐命令語の比が増加すれば、アップデートによる電力の消耗が全体の電力の消耗でさらに多い比率を占め、アップデートの時には本発明の低電力分岐予測器も従来の分岐予測器と同一な電力の消耗を有するためである。
【００３８】
一方、大部分のアプリケーションで全体の命令語対比分岐命令語の比は０〜０．２の間であり、この場合、本発明の低電力分岐予測器による電力の消耗は従来の分岐予測器に比べて１１〜１９％程度減少する。
【００３９】
以上、本発明による低電力分岐予測器を上述の説明および図面を通じて詳細に記述したが、これは例示的なことに過ぎず、本発明の技術的思想を逸脱しない範囲内で多様な応用および変更が可能である。
【図面の簡単な説明】
【００４０】
【図１】非特許文献１に紹介された従来の分岐予測器のブロック図である。
【図２】図１に示した分岐予測器の分岐予測動作をより詳細に説明するための図面である。
【図３Ａ】図２に示した分岐予測の結果によるアップデート過程を示す図面である。
【図３Ｂ】図２に示した分岐予測の結果によるアップデート過程を示す図面である。
【図３Ｃ】図２に示した分岐予測の結果によるアップデート過程を示す図面である。
【図３Ｄ】図２に示した分岐予測の結果によるアップデート過程を示す図面である。
【図３Ｅ】図２に示した分岐予測の結果によるアップデート過程を示す図面である。
【図４】図１に示した従来の分岐予測器での分岐予測過程を示す流れ図である。
【図５】本発明の低電力分岐予測器の実施の形態を示すブロック図である。
【図６Ａ】本発明の低電力分岐予測器で選択予測器の予測器選択動作をより詳細に説明するための図面である。
【図６Ｂ】本発明で図６Ａのような選択予測器の動作による各分岐予測器の動作をより詳細に説明するための図面である。
【図７】本発明の低電力分岐予測器での分岐予測過程を示す流れ図である。
【図８】全体の命令語対比分岐命令語の比による本発明の低電力分岐予測器と従来の分岐予測器の各々の電力消耗を測定した結果を示す図面である。
【符号の説明】
【００４１】
５００    ローカル予測器
５０２    ローカル予測資源アレイ
５０４    ローカルヒストリテーブル
５０６    ローカル予測テーブル
５０８    制御ロジック
５１０    グローバル予測器
５１２    グローバル予測テーブル
５２０    選択予測器
５２２    シフトレジスタ
５２４    選択予測テーブル
５２６    予測器選択器
５３０    グローバルヒストリレジスタ
【図１】
2005100403.tif 000003
【図２】
2005100403.tif 000004
【図３Ａ】
2005100403.tif 000005
【図３Ｂ】
2005100403.tif 000006
【図３Ｃ】
2005100403.tif 000007
【図３Ｄ】
2005100403.tif 000008
【図３Ｅ】
2005100403.tif 000009
【図４】
2005100403.tif 000010
【図５】
2005100403.tif 000011
【図６Ａ】
2005100403.tif 000012
【図６Ｂ】
2005100403.tif 000013
【図７】
2005100403.tif 000014
【図８】
2005100403.tif 000015