(57)【要約】【課題】分岐命令に関するデータエントリを貯蔵する分岐ターゲットバッファとその使用方法を提供する。【解決手段】分岐ターゲットバッファは、分岐ターゲットバッファ内にあるワードラインと関連したワードラインゲーティング回路に応じてデータエントリに対するアクセスを条件的にイネーブルする。ワードラインゲーティング回路は、命令に関連した分岐ヒストリデータから誘導されたワードラインゲーティング値を貯蔵する。また、分岐予測ユニットと、分岐ターゲットバッファと結合されたプロセッサについて、分岐ターゲットバッファを動作するための方法と共に提供する。これにより、電力消費を減らし、分岐命令処理速度を高くし、全体的な複雑性を減らすプロセッサの実現と動作を可能にする。【選択図】図２
2006031697.tif 000002
【特許請求の範囲】
【請求項１】
分岐ターゲットバッファメモリアレイであって、
ワードライン、および
前記ワードラインと連関されたワードラインゲーティング回路を含み、
前記ワードラインゲーティング回路は、ワードラインゲーティング値を貯蔵するメモリ回路を含むことを特徴とするメモリアレイ。
【請求項２】
前記メモリアレイは、前記ワードラインに関連されたデータエントリを貯蔵するように設けられることを特徴とする請求項１に記載のメモリアレイ。
【請求項３】
前記ワードラインゲーティング回路は、ゲーティングロジック回路をさらに含むことを特徴とする請求項２に記載のメモリアレイ。
【請求項４】
前記ゲーティングロジック回路は、前記ワードラインに印加されるワードライン電圧及び前記ワードラインゲーティング値に応答して前記データエントリに対するアクセス動作を活性化することを特徴とする請求項３に記載のメモリアレイ。
【請求項５】
前記ゲーティングロジック回路は、書き取り信号に応答することを特徴とする請求項４に記載のメモリアレイ。
【請求項６】
前記アクセス動作は、前記ワードラインに印加される読み取り動作であることを特徴とする請求項４に記載のメモリアレイ。
【請求項７】
前記アクセス動作は、前記ワードラインに印加される書き取り動作であることを特徴とする請求項５に記載のメモリアレイ。
【請求項８】
前記メモリアレイは、不揮発性メモリセルアレイを含むことを特徴とする請求項１に記載のメモリアレイ。
【請求項９】
前記メモリアレイは、ＳＲＡＭアレイであることを特徴とする請求項８に記載のメモリアレイ。
【請求項１０】
前記メモリ回路は、１−ビットＳＲＡＭセルであることを特徴とする請求項９に記載のメモリアレイ。
【請求項１１】
前記データエントリは、分岐ターゲットタグと分岐アドレスとを含むことを特徴とする請求項２に記載のメモリアレイ。
【請求項１２】
前記メモリ回路は、前記ワードラインゲーティング値を貯蔵する１−ビットＳＲＡＭセルを含み、
前記ゲーティングロジック回路は、前記書き取り信号及び前記ワードラインゲーティング値が入力されて第１のロジック出力を発生する第１のロジックゲート、および
前記第１のロジック出力及び前記ワードライン電圧が入力されて第２のロジック信号を発生する第２のロジックゲート、を含むことを特徴とする請求項５に記載のメモリアレイ。
【請求項１３】
前記ワードラインは、前記ワードライン電圧が入力される選択ワードライン部分と、対応するゲートワードライン部分と、を含むことを特徴とする請求項５に記載のメモリアレイ。
【請求項１４】
前記選択ワードライン部分と前記ゲートワードライン部分とは、電気的に前記ワードラインゲーティング回路を介して連結されることを特徴とする請求項１３に記載のメモリアレイ。
【請求項１５】
前記ワードラインは、前記ワードライン電圧が入力される選択ワードライン部分と対応するゲートワードライン部分とを含むことを特徴とする請求項１２に記載のメモリアレイ。
【請求項１６】
前記選択ワードライン部分と前記ゲートワードライン部分とは、電気的に前記ワードラインゲーティング回路を介して連結され、
前記第２のロジック信号は、前記ゲートワードライン部分に印加されたワードライン電圧を含むことを特徴とする請求項１５に記載のメモリアレイ。
【請求項１７】
書き取り動作に応答してデータエントリを貯蔵し、読み取り動作に応答して前記データエントリを出力する分岐ターゲットバッファメモリアレイであって、
前記書き取り動作期間に前記データエントリに対するアクセスをイネーブルし、
前記ワードラインゲーティング回路に貯蔵されたワードラインゲーティング値に応答して前記読み取り動作期間に前記データエントリに対するアクセスを条件的にイネーブルするワードラインゲーティング回路を含むことを特徴とするメモリアレイ。
【請求項１８】
前記ワードラインゲーティング回路は、
前記ワードラインゲーティング値を貯蔵するためのメモリ回路と、
書き取り信号と前記ワードラインゲーティング値を入力に受け入れ、前記書き取り動作期間に前記データエントリに対するアクセスをイネーブルし、前記ワードラインゲーティング値によるポジティブ指示時、前記読み取り動作期間に前記データエントリに対するアクセスを条件的にイネーブルするゲーティングロジック回路とを含むことを特徴とする請求項１７に記載のメモリアレイ。
【請求項１９】
前記ゲーティングロジック回路は、入力にワードライン電圧が入力され、
前記ワードラインゲーティング値と前記ワードライン電圧とによるポジティブ指示時、前記読み取り動作期間に前記データエントリに対するアクセスを条件的にイネーブルすることを特徴とする請求項１８に記載のメモリアレイ。
【請求項２０】
前記メモリアレイは、揮発性メモリセルのアレイから構成されることを特徴とする請求項１９に記載のメモリアレイ。
【請求項２１】
前記メモリアレイは、ＳＲＡＭアレイであり、前記メモリ回路は１−ビットＳＲＡＭセルであることを特徴とする請求項２０に記載のメモリアレイ。
【請求項２２】
分岐ターゲットバッファであって、
前記分岐ターゲットバッファは、メモリアレイとデコーダとを含み、
前記メモリアレイは、ゲートワードラインを備え、前記ゲートワードラインのそれぞれは、
選択ワードライン部分、
ワードラインゲーティング値を貯蔵するためのメモリ回路を含むワードラインゲーティング回路；および
ゲートワードライン部分を含み、
前記デコーダは、命令部分を受け入れ、前記命令部分に応答して前記ゲートワードラインのうちで一つを選択するように設けられることを特徴とする分岐ターゲットバッファ。
【請求項２３】
前記デコーダは、前記デコーダによって選択されたゲートワードラインの選択ワードライン部分にワードライン電圧を印加するように設けられることを特徴とする請求項２２に記載の分岐ターゲットバッファ。
【請求項２４】
前記ワードラインゲーティング回路は、前記ワードライン電圧と前記ワードラインゲーティング値とを入力に受け入れるゲーティングロジック回路をさらに含むことを特徴とする請求項２３に記載の分岐ターゲットバッファ。
【請求項２５】
前記ワードラインゲーティング回路は、前記ワードライン電圧と前記ワードラインゲーティング値とに応答して前記デコーダによって選択されたゲートワードラインのゲートワードライン部分に対する接近動作を条件的にイネーブルするように設けられることを特徴とする請求項２４に記載の分岐ターゲットバッファ。
【請求項２６】
前記アクセス動作は、読み取り動作であることを特徴とする請求項２５に記載の分岐ターゲットバッファ。
【請求項２７】
前記ワードラインゲーティング回路は、書き取り信号を入力に受け入れるように設けられ、
前記アクセス動作は、書き取り動作であることを特徴とする請求項２５に記載の分岐ターゲットバッファ。
【請求項２８】
前記メモリアレイは、ＳＲＡＭアレイ、１−ビットＳＲＡＭセルを含むメモリ回路、
および前記ゲーティングロジック回路を含み、
前記ゲーティングロジック回路は、
前記書き取り信号と前記ワードラインゲーティング値とを入力に受け入れて第１のロジック信号を出力するＯＲゲートと、
前記ワードライン電圧と前記第１のロジック信号とを入力に受け入れて第２のロジック信号を出力するＡＮＤゲートとを含むことを特徴とする請求項２６に記載の分岐ターゲットバッファ。
【請求項２９】
前記第２のロジック信号は、前記デコーダによって選択された前記ゲートワードラインの前記ゲートワードライン部分に印加されるワードライン電圧であることを特徴とする請求項２８に記載の分岐ターゲットバッファ。
【請求項３０】
前記デコーダによって選択された前記ゲートワードラインからデータエントリが入力されるように採用されたセンスアンプをさらに含むことを特徴とする請求項２２に記載の分岐ターゲットバッファ。
【請求項３１】
前記センスアンプは、ワードラインゲーティング値を前記ワードラインと連関されたそれぞれのメモリ回路に伝達するための回路を含むことを特徴とする請求項３０に記載の分岐ターゲットバッファ。
【請求項３２】
前記メモリアレイは、ＳＲＡＭアレイを含み、
前記メモリ回路は、ワードラインゲーティング値を受け入れるための１−ビットＳＲＡＭセルを含むことを特徴とする請求項３１に記載の分岐ターゲットバッファ。
【請求項３３】
前記ワードラインゲーティング回路は、
前記書き取り信号と前記１−ビットＳＲＡＭセルから前記ワードラインゲーティング値とを入力に受け入れて第１のロジック信号を出力するＯＲゲート、および
前記ワードライン電圧と前記第１のロジック信号とを入力に受け入れて第２のロジック信号を出力するＡＮＤゲートを含むことを特徴とする請求項３２に記載の分岐ターゲットバッファ。
【請求項３４】
分岐予測ユニットであって、
分岐ヒストリデータを貯蔵するための分岐ヒストリユニットと、
命令アドレスが入力され、予測されたアドレスを提供し、前記分岐ヒストリデータをアップデートするための分岐予測ロジックと、
前記命令アドレスが入力される分岐ターゲットバッファとを含み、
前記分岐ターゲットバッファは、ゲートワードラインを含むメモリアレイを含み、それぞれのゲートワードラインはデータエントリを貯蔵し、そして分岐ヒストリデータから誘導されたワードラインゲーティング値を貯蔵するメモリ回路を含むワードラインゲーティング回路、を含むことを特徴とする分岐予測ユニット。
【請求項３５】
前記分岐予測ロジックは、前記分岐ターゲットバッファに書き取り信号を提供することを特徴とする請求項３４に記載の分岐予測ユニット。
【請求項３６】
前記分岐ヒストリユニットは、分岐する実行ヒストリによって命令のための分岐ヒストリデータを計算するステートマシンを含むことを特徴とする請求項３５に記載の分岐予測ユニット。
【請求項３７】
前記分岐ヒストリユニットは、分岐ヒストリデータを貯蔵する分岐ヒストリテーブルを含み、前記ステートマシンは、２ビットアップ／ダウンサチュレーションカウンタを含むことを特徴とする請求項３６に記載の分岐予測ユニット。
【請求項３８】
前記メモリアレイは、ＳＲＡＭアレイを含み、前記メモリ回路は１−ビットＳＲＡＭセルを含み、前記ワードラインゲーティング値は、前記分岐ヒストリデータから誘導された単一データビットを含むことを特徴とする請求項３４に記載の分岐予測ユニット。
【請求項３９】
前記分岐ターゲットバッファは、
前記命令アドレスを受け、命令アドレスに応答してゲートワードラインを選択するデコーダと、
選択されたゲートワードラインからデータエントリが入力されるように設けられ、ゲートワードラインに連関されたそれぞれのワードラインゲーティング回路にワードラインゲーティング値を伝達するための回路を備えたセンスアンプとをさらに含むことを特徴とする請求項３８に記載の分岐予測ユニット。
【請求項４０】
分岐予測ユニットであって、
分岐ヒストリデータを貯蔵するための分岐ヒストリユニットと、
複数のゲートワードラインを含む、それぞれのゲートワードラインは対応するワードラインゲーティング回路の動作によってアクセスされる分岐ターゲットバッファとを含み、
前記分岐ターゲットバッファは、前記分岐ターゲットバッファで受けた命令部分と前記分岐ヒストリデータから誘導されたワードラインゲーティング値とに応答してデータエントリを出力するように設けられることを特徴とする分岐予測ユニット。
【請求項４１】
前記命令部分が入力され、前記分岐ターゲットバッファによって出力された前記データエントリに応答して予測されたアドレスを提供するための分岐予測ロジックをさらに含むことを特徴とする請求項４０に記載の分岐予測ユニット。
【請求項４２】
前記分岐予測ロジックは、書き取り信号を前記分岐ターゲットバッファに提供するように設けられることを特徴とする請求項４１に記載の分岐予測ユニット。
【請求項４３】
前記分岐ヒストリユニットは、前記分岐ヒストリデータを貯蔵する分岐ヒストリテーブルを含むことを特徴とする請求項４１に記載の分岐予測ユニット。
【請求項４４】
前記メモリアレイは、ＳＲＡＭアレイを含み、前記メモリ回路は、１−ビットＳＲＡＭセルを含み、前記ワードラインゲーティング値は、前記分岐ヒストリデータから誘導された単一データビットを含むことを特徴とする請求項４３に記載の分岐予測ユニット。
【請求項４５】
プロセッサであって、
命令が入力され、対応する命令アドレスを提供する命令フェッチユニットと、
前記命令アドレスが入力され、前記命令フェッチユニットに予測されたアドレスを提供する分岐予測ユニットと、
前記命令が入力され、デコードされた命令を提供し、前記デコードされた命令の実行に応答してアップデートされたアドレスを提供する命令デコーダ／実効ユニットとを含み、
前記分岐予測ユニットは、
分岐ヒストリデータを貯蔵するための分岐ヒストリユニットと、
前記命令アドレスと前記アップデートされたアドレスが入力され、前記予測されたアドレスを提供し、前記分岐ヒストリデータをアップデートするための分岐予測ロジックと、
前記命令アドレスが入力され、データエントリを出力するための分岐ターゲットバッファとを含み、
前記分岐ターゲットバッファは、ゲートワードラインを含むメモリアレイを含み、それぞれのゲートワードラインは対応するワードラインゲーティング回路に連結され、ワードラインゲーティング回路は、前記分岐ヒストリデータから誘導されたワードラインゲーティング値を貯蔵するメモリ回路を含むことを特徴とするプロセッサ。
【請求項４６】
前記デコーダ／実行ユニットは、複数の実行パスを含み、それぞれの実行パスはデコーダと実行ユニットとを含むことを特徴とする請求項４５に記載のプロセッサ。
【請求項４７】
前記プロセッサは、スーパースカラープロセッサであることを特徴とする請求項４６に記載のプロセッサ。
【請求項４８】
前記プロセッサは、ベクタプロセッサ又は単一−命令−多重−データプロセッサであることを特徴とする請求項４７に記載のプロセッサ。
【請求項４９】
前記分岐予測ロジックは、前記分岐ターゲットバッファに書き取り信号を提供することを特徴とする請求項４５に記載のプロセッサ。
【請求項５０】
前記分岐ヒストリユニットは、分岐する実行ヒストリによって命令のための分岐ヒストリデータを計算するステートマシンを含むことを特徴とする請求項４９に記載のプロセッサ。
【請求項５１】
前記分岐ヒストリユニットは、前記分岐ヒストリデータを貯蔵する分岐ヒストリテーブルを含むことを特徴とする請求項５０に記載のプロセッサ。
【請求項５２】
前記メモリアレイは、ＳＲＡＭアレイを含み、前記メモリ回路は、１−ビットＳＲＡＭセルを含み、前記ワードラインゲーティング値は、前記分岐ヒストリデータから誘導された単一データビットを含むことを特徴とする請求項４５に記載のプロセッサ。
【請求項５３】
前記分岐ターゲットバッファは、
前記命令アドレスが入力され、前記命令アドレスに応答してゲートワードラインを選択するデコーダと、
前記選択されたゲートワードラインから前記データエントリが入力され、ゲートワードラインに連関されたそれぞれのワードラインゲーティング回路にワードラインゲーティング値を伝達するための回路を備えたセンスアンプと、をさらに含むことを特徴とする請求項５２に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分岐予測ユニット（ｂｒａｎｃｈ  ｐｒｅｄｉｃｔｉｏｎ  ｕｎｉｔ）を有するプロセッサに係り、より詳細には、分岐予測ユニット内の分岐ターゲットバッファに関する。本発明は、パイプライン構造を有したプロセスに好適に使用される。ここで、パイプラインは、単一構造及びスーパースカラーパイプライン構造全てを含む。
【背景技術】
【０００２】
草創期のコンピュータは、命令のシーケンスにおいて、次命令を開始する前に一つの命令を終えるように設計されている。数十年間、主とした構造的発展に草創期のこうした設計は、その性能が広く発展している。パイプライン及びスーパースカラー構造はこうした発展の良い例である。
【０００３】
プロセス性能は、またキャッシュを使用することによって、さらに発展している。キャッシュは、しばしば使用する情報を貯蔵するか、或いは提供することに使用されるメモリ構成要素である。ここで、“情報”は広くデータと命令とを全て含む。キャッシュは、従来のメモリアクセス動作に多くの周期を必要とするのとは違って、単一クロック周期内で情報を提供する。所謂、分岐ターゲットバッファ（ＢＴＢ）はプロセッサキャッシュの一種である。
【０００４】
分岐ターゲットバッファの有用性は、パイプライン構造下で容易に理解される。“パイプライニング（又はｓｐｅｃｕｌａｔｉｖｅ  ｅｘｅｃｕｔｉｏｎ）は、一般に動作接近（ｏｐｅｒａｔｉｎｇ  ａｐｐｒｏａｃｈ）に関係する用語である。この動作接近で、命令のシーケンスは、一連の機能的段階又はプロセッシング段階を使用して処理される。それぞれのプロセッシング段階は、普通単一クロック周期内でそれを構成する動作を遂行する。
【０００５】
次命令を開始する前に各命令を完遂するノン−パイプラインプロセッサとは違って、パイプラインプロセスは、相異なるプロセッシング段階にある多くの命令を同時に処理する。パイプライン段階は、設計者によって任意的に設計され得るが、一般に命令フェッチ段階（ｉｎｓｔｒｕｃｔｉｏｎ  ｆｅｔｃｈｉｎｇ  ｓｔａｇｅ）と、命令デコーディング段階（ｉｎｓｔｒｕｃｔｉｏｎ  ｄｅｃｏｄｉｎｇ  ｓｔａｇｅ）と、命令実行段階（ｉｎｓｔｒｕｃｔｉｏｎ  ｅｘｅｃｕｔｉｏｎ  ｓｔａｇｅ）と、実行分析段階（ｅｘｅｃｕｔｉｏｎ  ｒｅｓｏｌｕｔｉｏｎ  ｓｔａｇｅ）と、を含む。
【０００６】
命令フェッチ段階は、命令が貯蔵された場所（例えば、メインシステムメモリ或いは命令キュー）で命令を検索する。フェッチされた命令は、命令デコーディング段階に移動する。命令デコーディング段階では、命令アドレス及び／又は命令オペランド（ｉｎｓｔｒｕｃｔｉｏｎ  ｏｐｅｒａｎｄ）を決定する。命令は、命令デコーディング段階から命令実行段階に移動する。命令実行段階では、命令によって指示された一つ或いはさらに多数の動作を実行する。実行分析段階（ｅｘｅｃｕｔｉｏｎ  ｒｅｓｏｌｕｔｉｏｎ  ｓｔａｇｅ）は、一般に命令の実行によって発生した結果（例えば、結果データ）を後程使用するため一つ或いはその以上のレジスタ或いはメモリに書き戻すこと（ｗｒｉｔｉｎｇ−ｂａｃｋ）を含む。
【０００７】
命令は、規定された周期間に一つのパイプライン段階から次段階に超えて行く。一番目周期間に、命令フェッチ段階は、貯蔵装置（ｓｔｏｒｇｅ）から一番目命令をフェッチし、デコーディングのため関連されたハードウェアレジスタ内にそれを整列する。二番目周期間に、命令フェッチ段階は、二番目命令を貯蔵装置からフェッチし、それを整列する。この際、命令デコーディング段階は、一番目命令をデコーディングする。三番目周期間に、一番目命令は実行段階で実行動作（例えば、ロジック的、数学的、アドレッシング、或いはインデキシング演算）を開始する。この際、命令デコーディング段階は、二番目命令をデコーディングし、命令フェッチ段階は三番目命令をフェッチする。パイプラインは実行分析を通じて続き、こうした方法にプロセッサの全体動作速度は、ノン−パイプライン構造に比べてずっと向上される。
【０００８】
スーパースカラー（ｓｕｐｅｒｓｃａｌａｒ）構造で、二つ或いはその以上の命令は、同時に処理されるか、実行される。すなわち、スーパースカラーシステムは、並列に複数の命令を同時に独立的に実行できる二つ又はそのよりさらに多い実行（或いはデコーダ／実行）パスを有している。スカラーシステムは、命令が命令のパイプラインシーケンスから現れるか、なければノン−パイプライン方法に実行されたか間に周期当たりただの一つの命令のみ実行する。多い命令を同時に実行することはプロセスの性能をさらに向上させる。
【０００９】
パイプライニングは、実行される命令のシーケンスが非常に線形的であるか予測できるだけ、演算において、明白な利点を提供する。不幸にも大多数の場合、命令シーケンスは、ノン−シーケンシャル実行パス（ｎｏｎ−ｓｅｑｕｅｎｔｉａｌ  ｅｘｅｃｕｔｉｏｎ  ｐａｔｈｓ）を導入できる数多い命令を含んでいる。所謂“分岐命令”（ｂｒａｎｃｈ  ｉｎｓｔｒｕｃｔｉｏｎｓ）（例えば、ジャンプ、リターン、条件分岐命令などを含む）はパイプラインプロセスで分岐予測の効果的な形態が充足されなければ、重要な性能上の欠陥を有する。予測することができない（誤り予測された）分岐命令がプロセス内で現在パイプラインされた命令のシーケンスから離脱を惹起して性能欠陥を起こす。これが発生すれば、命令の現在パイプラインシーケンスは捨てるか、或いは除去（ｆｌｕｓｈ）されなければならなく、命令の新しいシーケンスがパイプライン内にロードされなければならない。パイプライン除去（ｐｉｐｅｌｉｎｅ  ｆｌｕｓｈｅｓ）は多いクロック周期を浪費し、一般にプロセスの実行を遅くする。
【００１０】
分岐命令と関連された実行性能とを向上させる一つの方法は、分岐命令の結果を予測し、予測された命令を分岐命令後にパイプラインに即時挿入する方法である。もしこうした分岐予測メカニズムがプロセスで成功的に実現されれば、パイプライン除去と関連した性能欠陥は、単に分岐命令結果が不正確に予測されるときのみ起こる。多幸にも、従来の技術と分析とによれば、分岐命令の結果は殆ど８０％に至る高水準の確実性を有し正確に予測されている。
【００１１】
その結果、従来の分岐予測メカニズムの幾つの形態が発達されている。分岐予測メカニズムの一つの形態は、分岐ターゲットバッファを用いて多数のデータエントリ（ｄａｔａ  ｅｎｔｒｉｅｓ）を貯蔵することである。それぞれのデータエントリは、分岐命令と関連している。分岐ターゲットバッファは、所謂、多数の“分岐アドレスタグ”を貯蔵する。それぞれの分岐アドレスタグは、対応する分岐命令のため分類されるインデックスとして作用する。分岐アドレスタグに追加して、それぞれの分岐ターゲットバッファエントリは、ターゲットアドレス（ｔａｒｇｅｔ  ａｄｄｒｅｓｓ）、命令演算コード（ｉｎｓｔｒｕｃｔｉｏｎ  ｏｐｃｏｄｅ）、分岐ヒストリ情報、そして可能な他のデータをさらに含む。分岐ターゲットバッファを用いるプロセスで分岐予測メカニズムは、パイプランに入るそれぞれの命令をモニタリングする。普通、命令アドレスはモニタリングされ、命令アドレスは、分岐ターゲットバッファ内のエントリと合わせられ、この際命令は分岐命令に認識される。関連された分岐ヒストリ情報から分岐予測メカニズムは分岐が容易に成されるか、ないかを決定する。分岐ヒストリ情報は典型的に分岐ターゲットバッファ内でインデックスされたそれぞれの分岐命令をモニタし、貯蔵されたデータを分岐が進行する動作で起こることであるか、ないかと関連された分岐ヒストリ情報に限定するステートマシン（ｓｔａｔｅ  ｍａｃｈｉｎｅ）によって決定される。
【００１２】
分岐ヒストリ情報が分岐命令が起こることを知らせる場合に、一つ或いはそれ以上予測された命令がパイプラインに挿入される。伝統的に、それぞれの分岐ターゲットバッファデータエントリは、演算コード（ｏｐｃｏｄｅ）を含む。演算コードは、分岐ヒストリ情報と関連して評価される分岐命令と関連される。この分岐命令は、分岐予測メカニズムからの適した指示に応じてこうした演算コードは、パイプラインに直ちに挿入される。また、それぞれの分岐ターゲットバッファデータエントリは、評価されている分岐命令と連関された“ターゲットアドレス”を含んでいる。再び、分岐予測メカニズムから適した指示に応じて、このターゲットアドレスは、“予測されたアドレス”として分岐予測ユニットによって出力され、命令シーケンスで次命令をフェッチすることに使用される。
【００１３】
分岐命令とそれの連続的な命令の処理は、命令の実行段階で分岐命令が実行されるときまで幾周期間パイプラインを通じて進行される。分岐予測の正確度が分かることは直ちにこの時である。もし分岐命令の結果が正確に予測されれば、分岐ターゲットアドレスは、パイプラインを通じて既に移動されており、プロセス実行は停止なしで継続される。しかし、もし分岐命令の結果が不正確に予測されれば、パイプラインは除去され、正確な命令や命令シーケンスがパイプラインに挿入される。複数の命令シーケンスを処理する二つ又はそれ以上のパイプラインを有するスーパースカラープロセスでは、誤まった分岐予測によって発生する性能欠陥がずっと大きい。なぜならば、大部分の場合、命令の数が少なくとも二度除去されなければならないためである。
【００１４】
図１は、分岐予測ロジック２及び関連ハードウェアに連結された分岐ターゲットバッファ１を示している。分岐ターゲットバッファ１は、アドレスデコーダ３と、メモリアレイ４と、センスアンプ５と、を含む。アドレスデコーダ３は、命令フェッチユニットから命令アドレスが入力され、デコーディングされた命令アドレスと連関するワードラインを選択する。選択されたワードラインにはワードライン電圧が印加される。
【００１５】
メモリアレイ４は、多数のメモリセルから構成されており、それぞれのメモリセルは、少なくとも一つのデータビットを貯蔵する。それぞれ多数のデータビットを含むデータエントリは、都合のいいように、整列した状態で貯蔵され、それにより特定のワードラインの選択は、原則として対応するデータエントリにアクセスする。データエントリは、少なくとも、分岐アドレスタグを限定する一つのデータ領域と、ターゲットアドレスを限定する他のデータ領域とを含む。ワードラインが選択されたデータエントリは、通常、メモリアレイ４からセンスアンプ５を介して出力される。
【００１６】
センスアンプ５から、分岐アドレスタグは、命令アドレスが入力されるタグ比較レジスタ６に伝達される。センスアンプ５からのターゲットアドレスは、マルチプレクサ７に伝達される。この際、分岐されない命令シーケンスに関連したアドレスも共に伝達される。例えば、３２ビット命令ワードプロセッサの場合プログラムカウンターＰＣ値＋４である。命令キュー(ＰＣ  ＭＵＸ８)に対する伝達のためマルチプレクサの二つ入力のうち一つはロジックゲート９の操作によって選択される。ロジックゲート９には、タグ比較レジスタ６からの結果と分岐予測ロジック２からのテイクン／ノットテイクン(ｔａｋｅｎ／ｎｏｔ  ｔａｋｅｎ)指示が入力される。
【００１７】
従来の分岐ターゲットバッファには、欠点が多い。まず第一に、図１に示す構造にあるように、分岐ターゲットバッファのメモリアレイは、命令の結果に関係なく全ての分岐命令によってアクセスされる。分岐ターゲットバッファのアクセスは、通常、アドレスデコーダによって選択されたワードラインに対して読み取り動作を実行することと関連する。それぞれの読み取り動作は電源から電力を引き込み、選択されたワードラインと関連のある複数のメモリセルに電力を提供し、このメモリセルからデータを出力する。
【００１８】
電力浪費を減らすため、従来技術による分岐ターゲットバッファは、イネーブルラインをメモリアレイ設計内に集積している。こうした例は、[特許文献１]に開示されている。前述した[特許文献１]によれば、分岐ターゲットバッファは、読み取り動作中にメモリアレイと関連のあるワードラインドライバをイネーブルするか、或いはディスエーブルする、イネーブルラインを含んでいる。ワードラインドライバは、特定の命令が受け入れられそうにないか、それとも受け入れられそうかを予測する、テイクン（ｔａｋｅｎ）状態又はノットテイクン（ｎｏｔ−ｔａｋｅｎ）状態に基づいてイネーブルされるか、ディスエーブルされる。例えば、特定の命令に対するテイクン／ノットテイクン（ｔａｋｅｎ／ｎｏｔ−ｔａｋｅｎ）状態が“ｓｔｒｏｎｇｌｙ  ｎｏｔ  ｔａｋｅｎ”状態を示せば、イネーブルラインは、非活性（ｉｎａｃｔｉｖｅ）レベルに移行し、メモリアレイワードラインドライバはディスエーブルされる。
【００１９】
不幸にも、分岐ターゲットバッファアクセス動作中に電力を減らすという従来の方法には、高い経費がかかる。すなわち、イネーブル信号を発生する分岐予測メカニズムは、命令を“プリ−デコーダ”するため時間と資源を必要とし、分岐ヒストリデータとテイクン／ノットテイクン（ｔａｋｅｎ／ｎｏｔ−ｔａｋｅｎ）状態を決定し、必要に応じてイネーブル信号のレベルを変える。
【００２０】
命令実行率と命令パイプラインの深さ（ｄｅｐｔｈ）が増すにつれ、分岐予測の正確度と速度は、次第に重要になってくる。こうした重要性を認識し、従来のプロセッサの多くは、拡張されたプリ・デコーディング方法を採用している。それにより、命令はすべて評価され、分岐命令は識別される。そして、分岐ヒストリ情報は、検索されるか、もしくは分岐命令と関連して動的に計算され、その結果、currently評価され、プレ・デコードされる。いうまでもなく、分岐命令行動を予測するこうした方法は、相当な時間がかかり、大量の情報資源の追加が必要である。命令シーケンスの処理での付加的な遅延と複雑性は、分岐予測メカニズムにおいて好ましくない。しかしながら、これはまさに、従来の方法の多くが提供していることである。
【００２１】
電力消費問題によって、相当な分岐予測メカニズムの設計が、さらに複雑になっている。最近のプロセッサは、電力消耗について厳しい制限を置いている。ハンドセットやＰＤＡのようなラップトップコンピュータ、移動機器は、最小の電力を消費するプロセッサを搭載した装置の例である。
【００２２】
前述したように、分岐ターゲットバッファは、潜在的に多数のデータエントリを貯蔵するキャッシュタイプのメモリである。従って、分岐ターゲットバッファは、そのコア部分にメモリアレイ、好ましくは揮発性メモリアレイを有する。こうしたメモリアレイ、および、特に、数多いデータエントリを貯蔵できるように十分に大きくしたメモリアレイは、電力消費が多い。分岐予測メカニズムによる分岐ターゲットバッファのアクセスは、分岐ターゲットバッファメモリアレイに対する読み取り動作を暗示する。分岐ターゲットバッファに対するアクセス動作は増加している。そして幾つかの見積りでは、従来のプロセッサに分岐ターゲットバッファメモリアレイに対する読み取り動作が全体電力消費の１０％以上をも占めると示唆している。
【００２３】
分岐予測メカニズムの実現に対するより良い方法が要求されている。分岐命令に対する長い実時間評価及び／又は分岐ヒストリ情報に対する動的な検索及び計算を要する従来の方法は、あまりに複雑で遅い。また、従来の方法によれば、絶え間なくしかし必然的に分岐ターゲットバッファメモリアレイにアクセスするので、電力浪費が多い。
【特許文献１】米国特許ＵＳ５，７４０，４１７
【発明の開示】
【発明が解決しようとする課題】
【００２４】
本発明の技術課題は、スーパースカラープロセッサに容易に適用されることができる分岐ターゲットバッファと使用方法を提供するところにある。スーパースカラープロセッサのデコーダ／実行ユニットは、複数の実行パスを含み、それぞれの実行パスはデコーダと実行ユニットを含む。例として、プロセッサはベクタルプロセッサ又は単一−命令−多重−データ（ＳＩＭＤ）プロセッサである。
【課題を解決するための手段】
【００２５】
前述した他の技術的課題を達成するための本発明の一実施形態による分岐ターゲットバッファメモリアレイは、ワードラインと、ワードラインと関連したワードラインゲーティング回路と、を含む。ワードラインゲーティング回路は、ワードラインゲーティング値を貯蔵するメモリ回路を含む。
【００２６】
メモリアレイは、ワードラインに関連されたデータエントリを貯蔵するように設けられる。ワードラインゲーティング回路は、ゲーティングロジック回路をさらに含む。ゲーティングロジック回路は、ワードラインに印加されるワードライン電圧及びワードラインゲーティング値に応じてデータエントリに対するアクセス動作をイネーブルする。アクセス動作は、ワードラインに印加される読み取り動作又はワードラインに印加される書き取り動作である。
【００２７】
メモリアレイは、揮発性メモリセルアレイから構成される。例えば、メモリアレイは、ＳＲＡＭアレイであり、メモリ回路は、１−ビットＳＲＡＭセルである。
【００２８】
ゲーティングロジック回路は、書き取り信号及びワードラインゲーティング値が入力されて第１のロジック出力を発生する第１のロジックゲートと、第１のロジック出力及びワードライン電圧が入力されて第２のロジック信号を発生する第２のロジックゲートと、を含む。
【００２９】
本発明に従う分岐ターゲットバッファメモリアレイは、書き取り動作に応じてデータエントリを貯蔵し、読み取り動作に応じてデータエントリを出力する。分岐ターゲットバッファメモリアレイは、書き取り動作中にデータエントリに対するアクセスをイネーブルするワードラインゲーティング回路と、そしてワードラインゲーティング回路に貯蔵されたワードラインゲーティング値に応答して読み取り動作中にデータエントリに対するアクセスを条件的にイネーブルするワードラインゲーティング回路と、を含む。ワードラインゲーティング回路は、ワードラインゲーティング値を貯蔵するためのメモリ回路と、書き取り信号とワードラインゲーティング値を入力する際に受け入れる、書き取り動作中にデータエントリに対するアクセスをイネーブルする、そしてワードラインゲーティング値によるポジティブ指示（ｐｏｓｉｔｉｖｅ  ｉｎｄｉｃａｔｉｏｎ）時読み取り動作中にデータエントリに対するアクセスを条件的にイネーブルするゲーティングロジック回路と、を含む。
【００３０】
本発明に従う分岐ターゲットバッファは、メモリアレイとデコーダとを含む。メモリアレイは、ゲートワードラインを備える。ゲートワードラインのそれぞれは、選択ワードライン部分と、ワードラインゲーティング値を貯蔵するためのメモリ回路を含むワードラインゲーティング回路と、ゲートワードライン部分と、を含む。デコーダは、命令部分を受け入れ、命令部分に応じてゲートワードラインのうちで一つを選択するように採用されたことを特徴とする。分岐ターゲットバッファは、デコーダによって選択されたゲートワードラインからデータエントリが入力されるように設けられたセンスアンプをさらに含む。
【００３１】
センスアンプは、ワードラインゲーティング値をワードラインと関連したそれぞれのメモリ回路に伝達するための回路及び／又は書き取り信号をゲートワードラインと関連したそれぞれのワードラインゲーティング回路に伝達するための回路を含む。
【００３２】
本発明に従う分岐予測ユニットは、分岐ヒストリデータを貯蔵するための分岐ヒストリユニットと、命令アドレスが入力され、予測されたアドレスを提供し、分岐ヒストリデータをアップデートするための分岐予測ロジックと、命令アドレスが入力される分岐ターゲットバッファと、を含む。分岐ターゲットバッファは、ゲートワードラインを含むメモリアレイを含む、それぞれのゲートワードラインはデータエントリを貯蔵する、そして分岐ヒストリデータから誘導されたワードラインゲーティング値を貯蔵するメモリ回路を備えたワードラインゲーティング回路を含む。
【００３３】
分岐ヒストリユニットは、分岐する実行ヒストリによって命令のための分岐ヒストリデータを計算するステートマシンを含む。
【００３４】
本発明による分岐予測ユニットは、分岐ヒストリデータを貯蔵するための分岐ヒストリユニットと、複数のゲートワードラインを含む、分岐ターゲットバッファと、を含み、それぞれのゲートワードラインは対応するワードラインゲーティング回路の動作によってアクセスされる。分岐ターゲットバッファは、分岐ターゲットバッファで受けた命令部分と分岐ヒストリデータから誘導されたワードラインゲーティング値に応じてデータエントリを出力するように採用される。
【００３５】
本発明によるプロセッサは、命令が入力され、対応する命令アドレスを提供する命令フェッチユニットと、命令アドレスが入力され、命令フェッチユニットに予測されたアドレスを提供する分岐予測ユニットと、命令が入力され、デコードされた命令を提供し、デコードされた命令の実行に応答してアップデートされたアドレスを提供する命令デコーダ／実行ユニットと、を含む。
【００３６】
分岐予測ユニットは、分岐ヒストリデータを貯蔵するための分岐ヒストリユニットと、命令アドレスとアップデートされたアドレスが入力され、予測されたアドレスを提供し、分岐ヒストリデータをアップデートするための分岐予測ロジックと、命令アドレスが入力され、データエントリを出力するための分岐ターゲットバッファと、を含む。分岐ターゲットバッファは、ゲートワードラインを含むメモリアレイを含み、それぞれのゲートワードラインは対応するワードラインゲーティング回路に連結され、ワードラインゲーティング回路は、分岐ヒストリデータから誘導されたワードラインゲーティング値を貯蔵するメモリ回路を含む。
【発明の効果】
【００３７】
本発明は、電力消費を減らし、分岐命令処理速度を高く、全体的な複雑度を減らすプロセッサの実現と作動を可能とする分岐ターゲットバッファを提供する。プロセッサによる電力消費は、分岐ターゲットバッファに対する読み取り動作を、条件に応じて遂行しないようにすることによって減る。これと関連して、プロセッサ内での分岐命令処理は、既存の分岐ヒストリ情報を検索するか、計算に必要な動作によって惹起された遅延なく遂行される。そして、このプロセッサは構成要素分岐予測ユニットで減少された複雑度に対する利点を有する。
【発明を実施するための最良の形態】
【００３８】
以下、添付した図面を参照して本発明の好適な実施形態を詳細に説明する。こうした実施形態は例として提示される。本発明の実際範囲は、後述する特許請求の範囲によって決定される。
【００３９】
“プロセッサ”という用語は、幅広く命令シーケンスに対して実行するか、或いは応答することができるディジタルロジック装置又はシステムを含む。この用語は、中央処理ユニット（ＣＰＵｓ）マイクロプロセッサと、ディジタル信号プロセッサ（ＤＳＰｓ）と、減少された命令集合コンピュータ（ＲＩＳＣ）プロセッサと、ベクタプロセッサと、シングル−命令−多重−データ（ＳＩＭＤ）プロセッサと、を含む。
【００４０】
パイプラインプロセッサは、特に、本発明の指示に応じて設計された分岐予測ユニットの結合に適する。したがって、多重パイプラインプロセッサは、本発明によって提供される色々な長所だけではなく、本発明の実施形態を例として詳述する。図２は、第１の実施形態によるパイプラインプロセッサのブロック図を示す。
【００４１】
プロセッサ１０は、多くある従来のデータ移動技術のうちいずれか一つを使用してバス１４を経由してメインメモリ１２とデータを通信する。メモリ１２は、一つ或いはそれ以上のソフトウェアプログラムや命令のシーケンスを含むルーチンを貯蔵すると仮定する。メモリ１２は、さらに命令のシーケンスに関連したデータを貯蔵すると仮定する。このデータは、プロセッサによって使用される入力データ及びプロセッサ１０によってメモリ１２内に貯蔵された結果データを含んでいる。命令は、プロセッサからのアドレスに応じてメモリ１２からプロセッサ１０に戻る。アドレス指示は、多い形態を取るようになってよい。しかしながら、プログラムカウンターＰＣはよく知られた技術のうち一つであり、プロセッサ１０からメモリ１２にメモリ内にアドレスをフェッチするため次命令を貯蔵するように指示する。
【００４２】
前述したように、メモリから検索される次命令を指示する簡単なプロセッサは、一つ或いはその以上の命令が一つの条件下で次アドレス又は他の条件下で他の次アドレスを指定できる分岐命令であるとき非常に複雑になる。特に、パイプラインプロセッサの場合がそうである。
【００４３】
再び、図２を参照すると、パイプラインプロセッサ１０は、一般にメモリ１２から命令ＩＲを受け入れ、メモリ１２に予測されたアドレスを提供する命令フェッチユニット１３を含む。命令フェッチユニット１３は、命令デコーダユニット１５に命令を下す。命令デコーダユニット１５は、命令をデコーディングし、一般に実行ユニット１７に命令の演算コード部分を提供する。実行ユニット１７から、受けたデコードされた命令（或いは命令部分）は、実行ユニット内に一つ或いはその以上の動作を開始する。こうした動作は、典型的にメモリ１２やシステム内のさらに他の位置に書き戻される（ｗｒｉｔｔｅｎ−ｂａｃｋ）結果データを発生する。
【００４４】
命令デコーダ１５に命令を提供することに加えて、命令フェッチユニット１３は、分岐予測ユニット１９に命令部分を提供する。この命令部分は、一般に命令アドレスを含むが、他の情報も含む。分岐予測ユニット１９はまた実行ユニット１７から“次アドレス”指示を受けとる。すなわち、命令の実行によって、命令のシーケンスで実行される次命令は、実際的に知られる（すなわち、分岐命令の条件は決定される）。従って、次アドレス指示は、分岐予測ユニット１９にフィードバックされる。この情報を用いて、分岐予測ユニット１９は、以前に予測された次命令が実際に正しい次命令であるかを決定する。実行ユニット１７からの次アドレス指示は、典型的に命令アドレスである。
【００４５】
実行ユニット１７からの次アドレス指示が、以前に予測された命令アドレスとよく合うと（例えば、“ＨＩＴ”条件）、プロセッサは命令のパイプラインシーケンスに応じて進行を続ける。しかしながら、もし次アドレス指示が以前に予測された命令アドレスと違う場合（例えば、“ＭＩＳＳ”条件）、プロセッサは、パイプラインを除去し、次アドレス指示によって指示された命令をロード（ｌｏａｄ）する。
【００４６】
前に予測された命令アドレスと次アドレス指示との比較は、分岐予測ユニット１９内で実行されることが好ましい。幾つかの追加的な説明において後述するように、分岐予測ユニット１９はまた、命令フェッチユニット１３に予測されたアドレスを提供するパイプラインプロセッサ１０内で提供される。
【００４７】
好適な実施形態についてのより詳しい説明を続ける前に、本発明はまた、スーパースカラープロセッサに特によく適するということを詳細に説明されなければならない。非常に簡単なスーパースカラープロセッサは、図３に示されている。ここで、メモリ１２は、バス１４を経由してスーパースカラープロセッサに命令及び／又はデータを再び与える。分岐予測ユニット３９と命令フェッチユニット３３は、一般に前述したように動作する。但し、命令フェッチユニット３３は、多重実行パス３４，３５，３６に命令を提供する。これに類似して、それぞれの実行パス３４，３５，３６は分岐予測ユニット３９に次アドレス指示を提供する。
【００４８】
スーパースカラープロセッサの例では、三つの実行パスを示している。しかしながら、この数字は殆ど典型的であり、任意に選択された数に過ぎない。さらに、それぞれの実行パスは、共同命令フェッチユニットから命令を受け入れるように組み合わされたデコーダ／実行ユニットによって特徴づけられる。
【００４９】
プロセッサの典型的な段階に関連したハードウェアと機能上の境界は、全体的に、設計者によるルーチンデザイン設計選択の問題である。例えば、デコーディングと実行関数は、ハードウェア（例えばＩＣ）の断片的な部分であるが、多重に複雑なＩＣで容易に実行することができる。デコーディング及び／又は実行はハードウェア、ソフトウェア、ファームウェア、或いはこうした三つの一般的なプラットホーム形態の組み合わせで実行することができる。同様に本実施形態における命令フェッチユニット、命令デコーダユニット、および／又は分岐予測ユニットの間のハードウェア及び機能上の境界が説明されている。
【００５０】
結合されたプロセッサのタイプと関係なく、本発明は、好ましくは、分岐予測ロジックの幾つかの形態を含む分岐予測ユニット、命令を分岐することに関連したデータエントリを貯蔵するための幾つかのメカニズム、そして分岐ヒストリデータ貯蔵及び／又は計算のための幾つかの形態を提供する。図４は、図２に示された分岐予測ユニット１９をより詳細に説明するためのブロック図である。
【００５１】
図４で分岐予測ロジック２０は、命令フェッチユニット１３に予測されたアドレスを提供する。分岐予測ロジック２０は、命令フェッチユニット１３から命令アドレスを受け、一般に分岐ターゲットバッファ２２及び分岐ヒストリユニット２４と情報を交換する。こうした三つの機能ブロックは、説明のために選択されている。本発明は、ハードウェアという観点では構成要素の特定なグループ化に制限されない。例えば、本発明の実際的な実施において、分岐ヒストリユニット２４に関連したデータ貯蔵機能性は、分岐ターゲットバッファ２２に関連したメモリアレイ、或いは分岐予測ロジック２０に関連したメモリ装置内で組み合わせてよい。同様に、分岐ヒストリユニット２４と関連した計算機能性は、分岐予測ロジック２０によって提供されたハードウェア、或いはソフトウェア資源を用いて実施することができる。
【００５２】
より詳細には、分岐予測ロジック２０は、命令部分、通常は命令アドレス（例えば、現在のプログラムカウンターＰＣ値）を、命令フェッチユニット１３から受信し、その後に、プロセッサは、命令と関連しているターゲットアドレスに分岐するか、或いは命令のシーケンスで次命令を実行するか予測する。“予測”という用語は一般に、理論的或いは計算的である出力のことをいう。これは、受け取った命令アドレスに関連し、好ましくは、入力された命令アドレスに関連した分岐ヒストリ情報に関連した分岐予測ロジックによって作られる。従って、分岐予測ロジック２０は、ロジック構造、計算回路、データレジスタ、比較回路、及び／又は類似ハードウェア資源、そしてハードウェア資源を駆動するための内蔵制御ソフトウェア（ｅｍｂｅｄｄｅｄ  ｃｏｎｔｒｏｌｌｅｒ  ｓｏｆｔｗａｒｅ）の多い具体的組み合わせから構成される。
【００５３】
今まで言及してきたように、分岐予測ユニット２０は、分岐ターゲットバッファ２２に書き取り信号を提供する。書き取り信号は、分岐ターゲットバッファ２２内で書き取り動作を制御する。“読み取り”と“書き取り”というのは、一般にＳＲＡＭやＤＲＡＭのような普通メモリ装置の動作に使用される用語である。
【００５４】
ターゲットアドレスに分岐するための分岐予測ロジック２０の決定を“テイクン（Ｔａｋｅｎ）”条件であると限定する。分岐しない分岐予測ロジック２０の決定を“ノットテイクン（Ｎｏｔ−Ｔａｋｅｎ）条件であると限定する。分岐予測ユニット２０は、入力された命令アドレスによって指示された命令と関連した分岐ヒストリデータの状態に応じてｔａｋｅｎ或いはｎｏｔ−ｔａｋｅｎの条件を予測する。
【００５５】
分岐ヒストリユニット２４は、計算、貯蔵及び／又は分岐予測ロジック２０に分岐ヒストリデータを提供する役割を果たす。分岐ヒストリデータは、下された命令によるｔａｋｅｎとｎｏｔ  ｔａｋｅｎとの間の予測に関連した有用なあらゆるデータである。分岐命令がｔａｋｅｎになるか、ならないかを示すデータの計算に他の方法を提案する多くの従来のアルゴリズム及び類似方法が提示されている。本発明は、アルゴリズムや方法が命令行動を分岐する正確な予測を提供する限り、こうした類似方法のうちいずれを使用するにも適している。
【００５６】
ヒストリデータの分岐に対する貯蔵と提供は、分岐ヒストリユニットと関連したメモリ要素によって提供される。分岐ターゲットバッファ内に貯蔵された対応するデータエントリを有するそれぞれの分岐命令は、分岐ヒストリユニット内に貯蔵された分岐ヒストリデータの幾つかの形態を有している。（しかしながら、前述したように、分岐ヒストリデータは、対応するデータエントリに沿って分岐ターゲットバッファ内に貯蔵することができる。）命令のための分岐ヒストリデータは、命令が実際に分岐されるように周波数を決定するために、命令を含む一つ或いはそれ以上のプログラムによって実験的に決定される。そうすると、始めに決定されたこの分岐ヒストリデータは次の基準のため分岐ヒストリユニットに貯蔵される。初期に決定された分岐ヒストリデータは、命令のそれぞれの次の実行によってアップデートされる。このようにして、同時分岐行動は現在存在する分岐ヒストリデータをアップデートすることに用いられる。勿論分岐ヒストリデータは、なんらかの方法で、予め決定される必要はない。しかしながら、実際の命令実行に対応して“ｏｎ−ｔｈｅ−ｆｌｙ”に発生することができる。
【００５７】
いつ決定されようか、どのようにアップデートされようが、分岐ヒストリデータは、容易にステートマシンを用いて決定することができる。要求を充足するステートマシンの複雑性と設計は、ルーチンデザイン選択の問題である。しかしながら、前述したように、本発明は２−ビットアップ／ダウンサチュエーションカウンター分岐ヒストリユニット２４の計算部分として使用する。２ビットアップ／ダウンサチュエーションカウンターの動作と使用は、図５の順序図に説明される。ここで、２ビット分岐ヒストリデータ値は実際に実行する間ｔａｋｅｎ或いはｎｏｔ  ｔａｋｅｎする命令に関連して命令を分岐する実行によって増加されるか、或いは減少される。この分岐ヒストリデータは、命令に対して“ｔａｋｅｎ−ｎｅｓｓ”の特定の度合を示唆する。
【００５８】
例えば、以前のｎｏｎ−ｔａｋｅｎ分岐命令は、“ｓｔｒｏｎｇｌｙ  ｎｏｔ  ｔａｋｅｎ”から“ｗｅａｋｌｙ  ｎｏｔ  ｔａｋｅｎ”状態に移動する。こうした状態変化は、“００”から“０１”まで対応する分岐ヒストリデータ値を増加することによって指示される。前に“ｓｔｒｏｎｇｌｙ  ｔａｋｅｎ”状態を有した命令は、対応する分岐ヒストリデータ値を減少することによって“ｗｅａｋｌｙ  ｔａｋｅｎ”状態に変化される。
【００５９】
好適な実施形態において、二つのビットは、命令がｔａｋｅｎされるかどうかという可能性を応用の大部分が正確に予測するには十分であると思われる。しかしながら、これは全ての応用に当てはまることではない。正確にｔａｋｅｎ／ｎｏｔ−ｔａｋｅｎ決定を行うためには分岐ヒストリデータは、さらに大量のビットを要する。従って、分岐ヒストリデータの特定の識別は、分岐ヒストリ設計を計算するアルゴリズムの選択及び／又は選択されたアルゴリズムを実行するステートマシン限定によるデザイン選択の問題である。
【００６０】
図４に示された分岐ターゲットバッファは、図６を参照してより詳細に説明する。ここで、デコーダ４３は、命令部分、好ましくは、命令アドレスが入力され、デコードされた命令部分によって指示されたワードラインを選択する。従来の分岐ターゲットバッファのように、複数のワードラインのデコーダ４３からメモリアレイ４０に拡張されている。しかしながら、ワードラインの特徴、動作そして実現は、本発明で変わる。“ゲートワードライン”というのは、幾つかの実施形態と関連して使用されるが、これは本発明によって限定されたワードラインである。
【００６１】
メモリアレイ４０は、好ましくは、ＳＲＡＭセルのような揮発性メモリセルのアレイである。しかしながら、メモリの他の形態も使用されることができる。従来の分岐ターゲットバッファメモリアレイのように、本発明のメモリアレイは、好ましくは、複数のデータエントリを貯蔵する。ここで、それぞれのデータエントリは、命令に対応し、好ましくは、分岐アドレスタグとターゲットアドレスとを含む。他の形態のデータは、それぞれのデータエントリと関係している。しかしながら、一般的に言えば、分岐アドレスタグとターゲットアドレスの幾つかの形態が必要となる。
【００６２】
前述したゲートワードラインは、図７に示されている。ゲートワードラインは、一般にワードライン７０とワードラインゲーティング回路６０の組合を含む。図６で説明したように、ワードラインゲーティング回路は、好ましくは、対応するワードラインと一対一関係にある。複数のワードラインゲーティング回路は、好ましくは、メモリアレイ４０内にカラム形態で構成されている。この構造により、従来の書き取り技術を用いるワードラインゲーティング回路に貯蔵されたそれぞれのワードラインゲーティング値を容易にアップデートできる。好適な実施形態で、メモリアレイ４０は、ＳＲＡＭアレイとワードラインゲーティング回路から構成されるが、このワードラインゲーティング回路は、単一ビットＳＲＡＭセルで形成されたメモリ回路から構成されている。
【００６３】
ワードラインゲーティング回路の実際的な構成にもかかわらず、ワードラインゲーティング回路はそれぞれ、ワードラインと関連した命令に対する分岐ヒストリデータから誘導された“ワードラインゲーティング値”を踏まえて対応するワードラインにアクセス可能とするか、或いは不可能とする機能をもつ。すなわち、分岐ターゲットバッファ２２で入力されるそれぞれの分岐命令部分は、デコーダ４３の動作を通じて対応するワードラインを選択する。このワードラインは、分岐アドレスタグと入力される分岐命令部分に関連したターゲットアドレスを含むデータエントリを貯蔵する。デコーダ４３によって選択された対応するワードラインはゲートワードラインである。すなわち、ゲートワードラインは、関連のあるワードラインゲーティング回路の動作を通じてのみアクセス可能である。ワードラインゲーティング回路の動作は、ワードラインゲーティング回路に貯蔵されたワードラインゲーティング値によって制御される。このワードラインゲーティング値は、命令に関連した分岐ヒストリデータから誘導される。
【００６４】
それぞれの命令を分岐することについて、ワードラインゲーティング値は、好ましくは、命令と関連した分岐ヒストリデータから誘導される。代表的な誘導方法は、前述した実施形態で説明されている。多くの異なった方法を、分岐ヒストリデータからワードラインゲーティング値を誘導することに利用してよい。これらの方法は、分岐ヒストリデータの特徴、ワードラインゲーティング値の大きさ、及び／又はワードラインゲーティング回路及びそれを構成するメモリ回路の構造によってさまざまである。
【００６５】
図５について説明したように、２ビット分岐ヒストリデータとそれぞれのワードラインゲーティング回路に関連した単一ビットメモリセルを仮定すると、要求を充足するワードラインゲーティング値は、分岐ヒストリデータの一番重要なビットを用いて簡単に誘導できる。この例として、一番重要なビットに対する“１”のロジック値は、命令について“ｓｔｒｏｎｇｌｙ  ｔａｋｅｎ”であるか、“ｗｅａｋｌｙ  ｔａｋｅｎ”である。一番重要なビットに対するロジック値“０”は、命令について“ｗｅａｋｌｙ  ｎｏｔ−ｔａｋｅｎ”であるか、“ｓｔｒｏｎｇｌｙ  ｎｏｔ−ｔａｋｅｎ”状態である。ワードラインゲーティング回路に関連した単一ビットメモリセルにこのビット値を貯蔵することによって、ｔａｋｅｎ−ｎｅｓｓの命令水準を受容できる程度にまで正確な指示は、ゲートワードラインに対するアクセスを制御することに用いられる。
【００６６】
再び、図７を参照すると、ワードライン７０は、デコーダによって選択され、ワードライン７０にはワードライン電圧が印加される。通常、このような印加されたワードライン電圧は、ワードラインの全体長さにかけて電圧ポテンシャルを増加させる。しかしながら、本発明の場合、選択されたワードラインの長さを通るワードライン電圧の印加は、関連したワードラインゲーティング回路６０によって条件的にイネーブルされる。ワードラインゲーティング回路６０は、好ましくは、メモリ回路６１とゲーティングロジック回路６２とから構成される。
【００６７】
メモリ回路６１のサイズは、貯蔵されたワードライン制御値の大きさによって変わる。前述した説明では、単一ビットが貯蔵される。しかしながら、どのような大きさのワードライン制御値でも貯蔵することができ、ゲートワードラインに対するアクセスを制御することに使用できる。図７で、二つのＰ型トランジスタと四つのＮ型トランジスタを含むＳＲＡＭメモリセルは、ワードラインゲーティング値を貯蔵するメモリ回路に用いられる。
【００６８】
貯蔵されたワードラインゲーティング値のロジック値（“１”或いは“０”）は、ゲーティングロジック回路６２に対する入力として使用される。具体的には、ワードラインゲーティング値は、第１のロジックゲート８２に一つの入力として印加される。第１のロジックゲート８２には、また、分岐予測ロジックから書き取り信号が入力される。第１のロジックゲート８２がＯＲ型ロジックゲートであるので、少なくとも一つの入力が“１”のロジック値を有すれば、その出力は、“１”のロジック値を有する第１のロジック出力になる。第１のロジック出力がワードライン電圧の値によって第２のロジックゲート８０に印加される。第２のロジックゲート８０は、ＡＮＤ型ロジックゲートであるので、入力の全てが“１”であってこそ第２のロジック出力が“１”になる。実施形態で、第２のロジックゲート８０からの第２のロジック出力は、ワードラインゲーティング回路６０の動作“後で”ワードライン７０の部分のためのワードライン電圧としての役目を果たす。
【００６９】
このように、ワードライン７０は、二つの異なる部分を有する。選択ワードライン部分７１は、命令アドレスに応じてデコーダによって選択でき、ゲートワードライン部分７２は、ワードラインゲーティング回路の動作を通じてのみアクセスすることができる。実施形態で、選択ワードライン部分は、デコーダからワードライン電圧が入力されるように設けられる。このワードライン電圧は、ワードライン７０と関連したワードラインゲーティング回路に入力として使用される。ワードラインゲーティング回路６０に貯蔵されたワードラインゲーティング値によって条件的にイネーブルされるこのワードライン電圧は、対応するゲートワードライン部分７２にまで通る。
【００７０】
選択ワードライン部分から、対応するゲートワードライン部分にまで条件的に通過（又は、“ゲーティング”）するワードライン電圧は、好ましくは、ワードラインに印加された読み取り動作にのみ関連する。すなわち、ワードラインゲーティング値は、分岐命令を予測する分岐ヒストリデータが受け入れられることを示する場所であり、選択されたワードラインに印加される読み取り動作はイネーブルされる。しかしながら、ワードラインゲーティング値は、分岐命令を予測する分岐ヒストリデータが受け入れられない場所であり、選択されたワードラインに印加される読み取り動作はイネーブルされない。
【００７１】
こうした条件的な“アクセス動作”の可能性は、メモリアレイ４０に貯蔵されたデータエントリがアップデートされる書き取り動作中には一般的に不要である。従って、ゲートワードラインがデコーダによって選択されるとき、第１のロジックゲートに対する書き取り信号の適用は、ゲートワードラインに対するアクセスを即時許容する。すなわち、書き取り動作は、ワードラインゲーティング値に関係なく進行される。この方法で、条件的な読み取りと非条件的な書き取り動作は最小のハードウェア資源で効率的に促進される。
【００７２】
図６に示す分岐ターゲットバッファはまた、読み取る動作時メモリセルアレイ４０からデータエントリを受け入れるセンスアンプ４５を含む。前述したように、センスアンプ４５は、また、ワードラインゲーティング回路と関連したそれぞれのメモリ回路にワードライン制御値（ＷＬＣＶ）をロードすることに用いられる。
【００７３】
本発明に従う分岐予測ユニットの動作方法は、図８を参照して説明する。複数の分岐命令に対応するデータエントリは、分岐ターゲットバッファのメモリアレイに貯蔵される（１００）。それぞれの命令についての分岐ヒストリデータは、適したアルゴリズムを使用して発展する（１０１）。各命令に対するそれぞれのワードラインゲーティング値（ＷＬＧＶ）は、分岐ヒストリデータから誘導され（１０２）、次に対応するワードラインゲーティング回路のメモリ回路に貯蔵される（１０３）。
【００７４】
データエントリと貯蔵されたワードラインゲーティング値が貯蔵された分岐予測ユニットは、命令アドレスのような命令部分を容易に受け入れる（１０４）。命令部分がデコードされ（１０５）、対応するワードラインが選択される（１０６）。ワードラインが選択されることによって、貯蔵されたワードラインゲーティング値は、条件的にワードラインのゲート部分がアクセスされるかを決定する。“ポジティブ（ｐｏｓｉｔｉｖｅ）”ワードラインゲーティング値指示（例えば、分岐命令がｔａｋｅｎされるようにする指示）は、ワードラインアクセスをイネーブルし（１０８）、対応するデータエントリを出力する（１０９）。“ネガティブ（ｎｅｇａｔｉｖｅ）”ワードラインゲーティング値指示（例えば、分岐命令がｎｏｔ  ｔａｋｅｎされるようにする指示）は、さらに以上のアクセスやメモリアレイ（１１０）による出力を招かない。前述したネガティブ及びポジティブ指示は、一般に、特定の命令についてｔａｋｅｎ／ｎｏｔ  ｔａｋｅｎ状態に対応する。
【００７５】
本発明による分岐予測ユニットは、分岐命令を受け入れ、分岐ターゲットバッファに貯蔵された対応するデータエントリに対するアクセスを条件的にイネーブルすることができる。データエントリは、分岐ターゲットバッファから読み取る。分岐ターゲットバッファでは、対応する分岐ヒストリデータは、データエントリが必要になることを予測する。分岐を“ｔａｋｉｎｇ”する可能性が低い命令は、分岐ターゲットバッファに対する読み取り動作をイネーブルしない。その結果、不要な読み取り動作によって消耗される電力が貯蔵される。
【００７６】
例えば、図９は、ＥＥＭＢＣベンチマークシミュレーションの結果を示している。これは、本発明に従って設計された分岐予測ユニットを使用している。水平軸に沿ったベンチマークルーチンのシリーズに、分岐命令の予測された比率と分岐命令の実際比率との間の比較を示している。この特定なシミュレーションは、分岐予測の約４０％がＮｏｔ−Ｔａｋｅｎ状態と連関されていることを示している。従って、分岐ターゲットバッファメモリアレイ読み取り動作と連関された分岐ターゲットバッファの電力消費は４０％まで減らすことができる。
【００７７】
しかしながら、本発明は、複雑性が増し、動作速度が低下した代わりに、電力保存を提供しない。命令は分岐予測ユニットに入力されると、即時デコーダによって処理される。そしてイネーブルされると、即時対応するデータエントリ出力を発生する。それをプリコードし、命令に対する分岐ヒストリデータを検索するか、或いは計算し、分岐ターゲットバッファメモリアレイに対応する読み取り動作をイネーブル／ディスエーブルする信号を発するために命令を処理するにあたり遅延はない。本発明は分岐ターゲットバッファメモリアレイに対する読み取り動作を条件的に可能とすることにおいて、複雑な追加的回路や機能を要さない。
【００７８】
代わりに、対応するワードラインゲーティング値は、分岐ターゲットバッファでそれぞれ命令処理を待つ。簡単なワードラインゲーティング回路内のワードラインゲーティング値の適用は、入力される命令に対応するデータエントリを貯蔵するワードラインに対するアクセスをイネーブルするか、或いはディスエーブルする。ワードラインゲーティング値は、各命令実行により、ワードラインゲーティング回路内に容易かつ正確にアップデートできる。
【００７９】
一方、本発明の詳細な説明では、具体的な実施形態について説明したが、本発明の範囲から外れない限度内でさまざまな変更ができる。したがって、本発明の範囲は、前述した実施形態に限定して決められるべきではなく、後述する特許請求の範囲だけでなく、この発明の特許請求の範囲と均等なことによって決められるべきである。
【図面の簡単な説明】
【００８０】
【図１】分岐ターゲットバッファと分岐ターゲットバッファメモリアレイからのデータエントリの出力に必要な関連構成要素を示す図面である。
【図２】本発明の実施形態によるプロセッサを示すブロック図である。
【図３】本発明の実施形態によるスーパースカラープロセッサを示すブロック図である。
【図４】図２に示された分岐予測ユニットを示すブロック図である。
【図５】本発明の実施形態による分岐ヒストリユニット内に含むことができるステートマシンの状態を示す状態図である。
【図６】本発明の実施形態による分岐ターゲットバッファメモリアレイを示すブロック図である。
【図７】本発明の実施形態によるゲートワードライン構造を示す回路図である。
【図８】本発明による分岐予測ユニットの動作方法を示す順序図である。
【図９】本発明による分岐予測ユニットについてのベンチマークシミュレーション結果を示す順序図である。
【符号の説明】
【００８１】
１０：プロセッサ
１２：メインメモリ
１３：フェッチユニット
１５：命令デコーダユニット
１７：実行ユニット
１９：予測ユニット
【図１】
2006031697.tif 000003
【図２】
2006031697.tif 000004
【図３】
2006031697.tif 000005
【図４】
2006031697.tif 000006
【図５】
2006031697.tif 000007
【図６】
2006031697.tif 000008
【図７】
2006031697.tif 000009
【図８】
2006031697.tif 000010
【図９】
2006031697.tif 000011