(57)【要約】ある実施例においてパイプライン方式のデジタル信号プロセッサ（ＤＳＰ）で使用するための追跡バッファ回路は、読込み動作において先入れ先出し（ＦＩＦＯ）レジスタとして、かつ動作する書込み動作において後入れ先出し（ＬＩＦＯ）レジスタとして動作する一連の相互に連結したレジスタを含む。書込み動作で、分岐目標／分岐源アドレス対が追跡バッファ・レジスタの第１の対へ書き込まれ、各レジスタの内容が２レジスタ下流へシフトされる。読込み動作で、１つの命令アドレスがトップのレジスタから読まれ、各レジスタの内容が１レジスタ上流にシフトされる。追跡バッファはまた、プログラム・フロー内にハードウェアおよびソフトウェア・ループの圧縮を可能にする構造を含む。有効なビットは、追跡バッファ内の各命令アドレスに割り当てられ、追跡バッファの構造とパラレルな構造を有する有効ビット・バッファが、有効ビットを追跡するために提供される。
2004510248.tif 000002
【特許請求の範囲】
【請求項１】
命令アドレスを入力および出力するための第１終了レジスタ、第２終了レジスタ、および前記第１終了レジスタと前記第２終了レジスタとの間に接続される複数の中間レジスタを含む複数の相互接続レジスタと、
書込み動作時に、前記複数の相互接続レジスタにおける１つのレジスタ中の命令アドレスを前記第２終了レジスタの方へ２つのレジスタだけシフトする書込みパスと、
から構成されることを特徴とする追跡バッファ回路。
【請求項２】
読取り動作時に、前記命令アドレスを前記第１終了レジスタの方へ１つのレジスタだけシフトする読取りパスをさらに含むことを特徴とする請求項１記載の回路。
【請求項３】
前記追跡バッファは、前記書込み動作時において先入れ先出し（ＦＩＦＯ）レジスタとして、前記読取り動作時において後入れ先出し（ＬＩＦＯ）レジスタとして動作することを特徴とする請求項１記載の回路。
【請求項４】
前記命令アドレスは、３２ビットのワードからなることを特徴とする請求項１記載の回路。
【請求項５】
前記第１および第２終了レジスタの各々および前記複数の相互接続レジスタは、３２ビットのレジスタからなることを特徴とする請求項４記載の回路。
【請求項６】
前記複数の相互接続レジスタは、３２のレジスタを含むことを特徴とする請求項５記載の回路。
【請求項７】
前記書込み動作時に、前記第１終了レジスタおよび隣接したレジスタに６４ビットのアドレス対を書込むための６４ビットの書込みバスと、
前記読取り動作時に、前記第１終了レジスタから３２ビットの命令アドレスを読取るための３２ビットの読取りバスと、
をさらに含むことを特徴とする請求項５記載の回路。
【請求項８】
第１保持レジスタと、
第２保持レジスタと、
前記第１保持レジスタ中の新しい分岐目標アドレスを、前記第１終了レジスタ中に格納された分岐目標アドレスと比較する第１コンパレータと、
前記第２保持レジスタ中の新しい分岐源アドレスを、第１隣接レジスタ中に格納された分岐源アドレスと比較する第２コンパレータであって、前記第１隣接レジスタは読取りパス上の前記第１終了レジスタである、第２コンパレータと、
前記格納された分岐目標アドレスに一致する前記新しい分岐目標アドレスおよび前記格納された分岐源アドレスに一致する前記新しい分岐源アドレスに応答して圧縮インディケータを生成する圧縮指示回路と、
を含むことを特徴とする請求項１記載の回路。
【請求項９】
前記圧縮指示回路は、前記格納された分岐目標アドレスに一致する前記新しい分岐目標アドレスおよび前記格納された分岐源アドレスに一致する前記新しい分岐源アドレスに応答して前記格納された分岐目標アドレスの最下位ビットを設定するために動作することを特徴とする請求項８記載の回路。
【請求項１０】
前記複数のレジスタ中の第２隣接レジスタであって、前記第２隣接レジスタは前記読取りパス上の前記第１隣接レジスタに接続される、第２隣接レジスタと、
前記複数のレジスタ中の第３隣接レジスタであって、前記第３隣接レジスタは前記読取りパス上の前記第２隣接レジスタに接続される、第２隣接レジスタと、
前記第１保持レジスタ中の新しい分岐目標アドレスを、前記第２隣接レジスタ中に格納された分岐目標アドレスと比較する第３コンパレータと、
前記第２保持レジスタ中の新しい分岐源アドレスを、前記第３隣接レジスタ中に格納された分岐源アドレスと比較する第４コンパレータと、から構成され、
前記圧縮指示回路は、前記第２隣接レジスタ中の前記格納された分岐目標アドレスに一致する前記新しい分岐目標アドレスおよび前記第３隣接レジスタ中の前記格納された分岐源アドレスに一致する新しい分岐源アドレスに応答して圧縮インディケータを生成するために動作することを特徴とする請求項８記載の回路。
【請求項１１】
前記圧縮指示回路は、前記第２隣接レジスタ中の前記格納された分岐目標アドレスに一致する前記新しい分岐目標アドレスおよび前記第３隣接レジスタ中の前記格納された分岐源アドレスに一致する前記新しい分岐源アドレスに応答して前記第３隣接レジスタ中の前記格納された分岐源アドレスの最下位ビットを設定するために動作することを特徴とする請求項１０記載の回路。
【請求項１２】
有効ビットを有効ビット・バッファから入力および出力するための第１終了フリップフロップと、
第２終了フリップフロップと、
前記第１終了フリップフロップと前記第２終了フリップフロップとの間に接続される複数の相互接続フリップフロップと、
書込み動作時に、前記複数の相互接続フリップフロップにおける１つのフリップフロップ中の有効ビットを２つのフリップフロップだけ下流のフリップフロップにシフトさせる書込みパスと、
読取り動作時に、前記有効ビットを１つのフリップフロップだけ上流のフリップフロップにシフトさせる読取りパスと、
から構成される有効ビット・バッファをさらに含むことを特徴とする請求項１記載の回路。
【請求項１３】
パイプライン方式のプロセッサにおいて、
前記パイプライン方式のプロセッサに結合された追跡バッファ回路であって、前記追跡バッファ回路は、
命令アドレスを入力および出力するための第１終了レジスタ、第２終了レジスタ、および前記第１終了レジスタと前記第２終了レジスタとの間に接続される複数の中間レジスタを含む複数の相互接続レジスタと、
書込み動作時に、前記複数の相互接続レジスタにおける１つのレジスタ中の命令アドレスを前記第２終了レジスタの方へ２つのレジスタだけシフトする書込みパスと、
読取り動作時に、前記命令アドレスを前記第１終了レジスタの方へ１つのレジスタだけシフトする読取りパスと、
から構成されることを特徴とするプロセッサ。
【請求項１４】
前記追跡バッファは、前記書込み動作時において先入れ先出し（ＦＩＦＯ）レジスタとして、前記読取り動作時において後入れ先出し（ＬＩＦＯ）レジスタとして動作することを特徴とする請求項１３記載の回路。
【請求項１５】
前記命令アドレスは、３２ビットのワードからなることを特徴とする請求項１３記載の回路。
【請求項１６】
前記第１および第２終了レジスタの各々および前記複数の相互接続レジスタは、３２ビットのレジスタからなることを特徴とする請求項１５記載の回路。
【請求項１７】
前記書込み動作時に、前記第１終了レジスタおよび隣接したレジスタに６４ビットのアドレス対を書込むための６４ビットの書込みバスと、
前記読取り動作時に、前記第１終了レジスタから３２ビットの命令アドレスを読取るための３２ビットの読取りバスと、
をさらに含むことを特徴とする請求項１６記載の回路。
【請求項１８】
格納されたアドレス対に一致する新しいアドレス対に応答して格納されたアドレス対に分岐目標アドレスの最下位ビットを設定する段階、
からなることを特徴とする圧縮のための方法。
【請求項１９】
前記格納されたアドレス対に一致する前記新しいアドレス対に応答して前記新しいアドレス対を無視する段階をさらに含むことを特徴とする請求項１８記載の方法。
【請求項２０】
第１のレジスタ対に格納されたアドレス対を格納する段階と、
前記新しいアドレス対を前記格納されたアドレス対と比較する段階と、
をさらに含むことを特徴とする請求項１８記載の方法。
【請求項２１】
前記新しいアドレス対が前記格納された対と一致しないことに応答して前記新しいアドレス対を前記第１のレジスタ対に書込む段階をさらに含むことを特徴とする請求項２０記載の方法。
【請求項２２】
前記新しいアドレス対を前記第１のレジスタ対に隣接する第２のレジスタ対中の第２の格納されたアドレス対と比較する段階と、
前記第２の格納されたアドレス対に一致する前記新しいアドレス対に応答して前記第２の格納されたアドレス対中の分岐源アドレスの最下位ビットを設定する段階と、
前記第２の格納されたアドレス対に一致しない前記新しいアドレス対に応答して前記第１のレジスタ対に前記新しいアドレス対を書込む段階と、
をさらに含むことを特徴とする請求項２０記載の方法。
【請求項２３】
前記第２の格納されたアドレス対に一致する新しいアドレス対に応答して前記新しいアドレス対を無視する段階をさらに含むことを特徴とする請求項２２記載の方法。
【請求項２４】
プロセッサによって実行される命令を追跡する方法において、
２ｎ−ビット・アドレス対を先入れ先出し動作で書込む段階と、
ｎ−ビット・アドレスを後入れ先出し動作で読取る段階と、
によって構成されることを特徴とする方法。
【請求項２５】
ｎは、３２であることを特徴とする請求項２４記載の方法。
【請求項２６】
アドレス対は、分岐目標アドレスおよび分岐源アドレスを含むことを特徴とする請求項２４記載の方法。
【請求項２７】
追跡バッファで使用するために、機械読取り可能な媒体上に存在する命令を含む装置において、前記命令によって装置は、
格納されたアドレス対に一致する新しいアドレス対に応答して格納されたアドレス対中の分岐目標アドレスの最下位ビットを設定する、
ことを特徴とする装置。
【請求項２８】
前記命令によって前記装置は、
前記格納されたアドレス対に一致する前記新しいアドレス対に応答して前記新しいアドレス対を無視する、
ことを特徴とする請求項２７記載の装置。
【請求項２９】
前記命令によって前記装置は、
第１のレジスタ対に格納された前記アドレス対を格納し、
新しいアドレス対を前記第１のレジスタ対に格納されたアドレス対と比較する、
ことを特徴とする請求項２７記載の装置。
【請求項３０】
前記命令によって前記装置は、
前記新しいアドレス対が前記格納された対と一致しないことに応答して前記新しいアドレス対を前記第１のレジスタ対に書込むことを特徴とする請求項２９記載の方法。
【請求項３１】
前記命令によって前記装置は、
前記新しいアドレス対を前記第１のレジスタ対に隣接する第２のレジスタ対中の第２の格納されたアドレス対と比較し、
前記第２の格納されたアドレス対に一致する前記新しいアドレス対に応答して前記第２の格納されたアドレス対中の分岐源アドレスの最下位ビットを設定し、
前記第２の格納されたアドレス対に一致しない前記新しいアドレス対に応答して前記第１のレジスタ対に前記新しいアドレス対を書込む、
ことを特徴とする請求項２９記載の装置。
【請求項３２】
前記命令によって前記装置は、
前記第２の格納されたアドレス対に一致する前記新しいアドレス対に応答して前記新しいアドレス対を無視する、
ことを特徴とする請求項３１記載の装置。
【発明の詳細な説明】
【０００１】
【従来の技術】
本発明は、パイプライン方式のプロセッサに関し、さらに詳しくは、パイプライン方式のプロセッサで使用するための追跡バッファに関する。
【０００２】
【発明の背景】
デジタル信号処理は、デジタル形式の信号表現、および数値演算を用いた当該信号表現の変換または処理に関連する。デジタル信号処理は、ワイヤレス通信、ネットワーキング、マルチメディア等の分野における今日の多くの先端技術製品に広く用いられる技術である。デジタル信号処理技術が普及した理由の１つは、低価格でパワフルなデジタル信号プロセッサ（ＤＳＰ）が開発され、これが、これらの製品を安く効率的に生産するための信頼できる演算能力を提供したことである。最初のＤＳＰが開発されて以来、ＤＳＰのアーキテクチャや設計は、ビデオ伝送順序のような複雑なリアルタイム処理でさえ行なうことができる段階にまで発展した。
【０００３】
ＤＳＰは、デジタル・ビデオ、イメージング、オーディオのような様々なマルチメディア・アプリケーションにしばしば用いられる。ＤＳＰは、かかるマルチメディア・ファイルを作成して開くためのデジタル信号を操作することができる。
【０００４】
ＭＰＥＧ−１（Ｍｏｔｉｏｎ Ｐｉｃｔｕｒｅ Ｅｘｐｅｒｔ Ｇｒｏｕｐ）、ＭＰＥＧ−２、ＭＰＥＧ−４およびＨ．２６３は、デジタル・ビデオ圧縮標準規格およびファイル形式である。これらの標準規格は、個々のフレーム全体を格納する代わりに、主としてあるビデオ・フレームから他のフレームへの変化を格納することにより、デジタル・ビデオ信号の高い圧縮率を達成する。ビデオ情報は、多くの異なる技術を用いて、さらに圧縮することができる。
【０００５】
ＤＳＰは、圧縮している間に、ビデオ情報に対して様々な動作を実行するために用いられる。これらの動作は、動き探索および空間補間アルゴリズムを含む。第１の目的は、隣接したフレーム内のブロック間の歪みを測定することである。これらの動作は演算が集中的であるので、高度なデータ処理能力が要求される。
【０００６】
標準規格のＭＰＥＧファミリーは、マルチメディア・アプリケーションおよびファイルの帯域幅を拡大する要求と歩調を合わせて発展している。標準規格の各新バージョンは、ＭＰＥＧ準拠のビデオ処理装置内で使用されるＤＳＰにさらに大きな処理要求を出すより複雑なアルゴリズムを提供する。
【０００７】
ビデオ処理装置の製造者は、ＭＰＥＧおよびＨ．２６３標準規格に従ってビデオ符号化のためにカスタマイズされた特定用途向け集積回路（ＡＳＩＣ）に依存することが多い。しかしながら、ＡＳＩＣは設計が複雑で、生産コストが高く、それらのアプリケーションにおいて汎用ＤＳＰよりも柔軟性がない。
【０００８】
【実施例の詳細な説明】
本発明のこれらおよび他の特徴および利点は、次の詳細な記述を読み、かつ、添付図面を参照することによって、さらに明らかになるであろう。
【０００９】
図１は、実施例に従った、追跡バッファ１０２を含むモバイル・ビデオ装置１００を示す。モバイル・ビデオ装置１００は、アンテナ１０５から、あるいは、デジタル・ビデオ・ディスク（ＤＶＤ）やメモリ・カードのようなデジタル・ビデオ記憶媒体１２０から受信した、符号化されたビデオ信号により生成されたビデオ画像を表示する携帯装置である。プロセッサ１１０は、プロセッサの動作のために命令およびデータを格納するキャッシュ・メモリ１１５と通信する。プロセッサ１１０は、マイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、スレーブＤＳＰを制御するマイクロプロセッサ、またはハイブリッド・マイクロプロセッサ／ＤＳＰアーキテクチャを備えたプロセッサでもよい。本アプリケーションにおいては、プロセッサ１１０は、以下ＤＳＰ１１０と呼ぶ。
【００１０】
ＤＳＰ１１０は、符号化されたビデオ信号によって、例えば、アナログ対デジタル変換、復調、フィルタリング、データ回復、符号解読等を含む様々な動作を行なう。ＤＳＰ１１０は、標準規格のＭＰＥＧファミリーおよびＨ．２６３標準規格のような種々のデジタル・ビデオ圧縮標準規格の１つによって圧縮したデジタル・ビデオ信号を解読する。そして、解読されたビデオ信号は、ディスプレイ１２５上にビデオ画像を生成するために、ディスプレイ・ドライバ１３０に入力される。
【００１１】
携帯装置は、一般的に電源による制約を受ける。さらに、ビデオ解読動作は演算が集中的である。従って、そのような装置内で使用されるプロセッサとしては、比較的高速で低電力の装置が好都合である。
【００１２】
ＤＳＰ１１０は、巧妙なパイプライン方式のロード／格納アーキテクチャを有する。パイプライン方式を用いることによって、ＤＳＰの性能は、パイプライン方式でないＤＳＰに比べて増強される。第１命令を取り出して第１命令を実行し、次に第２命令を取り出す代わりに、パイプライン方式のＤＳＰ１１０では、第１命令の実行と同時に第２の命令を取り出すので、これによって命令処理能力が改善する。さらに、パイプライン方式のＤＳＰのクロック・サイクルは、パイプライン方式でないＤＳＰより短く、そこで命令が同じクロック・サイクル内で取り出されて実行される。
【００１３】
このようなＤＳＰ１１０は、ビデオ・カムコーダ、電話会議、ＰＣビデオ・カード、および高品位テレビ（ＨＤＴＶ）に使用することができる。さらに、ＤＳＰ１１０は、モバイル電話方式、音声認識、および他のアプリケーション内で使用される音声処理のようなデジタル信号処理を利用する他の技術と関連して使用できる。
【００１４】
図２は、１つの実施例に従って、ＤＳＰ１１０を含む信号処理システム２００のブロック図を示す。１またはそれ以上のアナログ信号が、例えばアンテナ１０５のような外部ソースによって、シグナル・コンディショナ２０２に提供される。シグナル・コンディショナ２０２は、アナログ信号によって一定の前処理機能を実行するために配置される。典型的な前処理機能は、いくつかのアナログ信号を共に混合し、濾波し、増幅するなどの段階を含む。
【００１５】
アナログ−デジタル変換器（ＡＤＣ）２０４は、上記のように、シグナル・コンディショナ２０２から前処理されたアナログ信号を受信するために結合され、前処理されたアナログ信号をサンプルから構成されるデジタル信号に変換する。サンプルは、シグナル・コンディショナ２０２によって受信されたアナログ信号の性質によって決定されるサンプリング率によって得られる。ＤＳＰ１１０は、ＡＤＣ２０４の出力でデジタル信号を受信するために結合される。ＤＳＰ１１０は、受信デジタル信号によって望ましい信号変換を実行し、１またはそれ以上の出力デジタル信号を生成する。デジタル−アナログ変換器（ＤＡＣ）２０６は、ＤＳＰ１１０から出力デジタル信号を受信するために結合される。ＤＡＣ２０６は、出力デジタル信号を出力アナログ信号に変換する。そして、出力アナログ信号は、他のシグナル・コンディショナ２０８に伝達される。シグナル・コンディショナ２０８は、出力アナログ信号によって後処理機能を実行する。典型的な後処理機能は、上記の前処理機能に類似する。これらの装置の適切なアレンジメントであれば、どのようなものでもＤＳＰ１１０を用いた信号処理システム２００への結合が可能である。
【００１６】
図３では、別の実施例による信号処理システム３００が示される。本実施例において、デジタル受信機３０２は、１またはそれ以上のデジタル信号を受信し、かつ、ＤＳＰ１１０に受信デジタル信号を伝達するために配置される。図２に示される実施例のように、ＤＳＰ１１０は、受信デジタル信号によって望ましい信号変換を実行し、１またはそれ以上の出力デジタル信号を生成する。デジタル信号送信機３０４は、出力デジタル信号を受信するために結合される。１つの典型的なアプリケーションにおいて、信号処理システム３００はデジタル・オーディオ装置であり、そこでデジタル受信機３０２が、ＤＳＰ１１０へ、デジタル記憶装置１２０上に格納されたデータのデジタル表示の信号を伝える。次に、ＤＳＰ１１０は、デジタル信号を処理し、結果としての出力デジタル信号をデジタル送信機３０４に伝達する。そして、デジタル送信機３０４によってディスプレイ・出力デジタル信号の値がドライバ１３０に送信され、ディスプレイ１２５上にビデオ画像を生成する。
【００１７】
図４に図示されたパイプラインは８つのステージを含み、それは、命令取り出し４０２−４０３、デコード４０４、アドレス演算４０５、実行４０６−４０８、および書き戻し４０９のステージを含む。命令ｉがあるクロック・サイクルで取り出され、そして、例えばｉ＋１、ｉ＋２のような新たな命令を取り出すと同時に、次のクロック・サイクルでパイプライン上で動作され、実行される。
【００１８】
パイプライン方式は、プロセッサの性能に、追加の協調問題やハザードをもたらすことがある。プログラム・フローにおけるジャンプは、パイプライン内に空スロットまたは「バブル」を生成する。条件付き分岐を生じたり、例外や中断を発生する状態は、命令の連続的な流れを変更する。それらが発生した後は、新しい命令は、連続的なプログラム流れの外で取り出され、パイプライン内の残りの命令を無関係にする。データ・フォワーディング、動的分岐予測、パイプライン内の命令アドレスと有効なビットを関連付けるといった方法が、これらの複雑さに対処するために用いられることがある。
【００１９】
追跡バッファは、プロセッサのプログラム・カウンタ（プログラム・フロー）情報を格納する。追跡バッファはデバッグ用ツールとして使用され、プログラムが実行中にたどった経路を再現する。プログラムを実行するとき、一定の命令が予期しないイベントを生成することがある。このような予期しないイベントは、プログラム・フロー内に中断を発生させる。かかるイベントは、例えば、結果に基づいた動的な分岐、またはシステム内の他の装置により誘発された割込みを含む。これらのイベントは、コードを静的に分析することから予測するのは難しい。追跡バッファ内の実行された命令（追跡データ）のログは、コードの実行時のどの時点において望ましくないイベントが生じたのか、および何がその誘因となったのかを決定するために使用される。
【００２０】
追跡バッファ１５０（図１）は、書込みバス１５２によってＤＳＰ１１０に接続される。追跡バッファ１５０は、一連の相互接続されたレジスタ内に取り込まれた命令のアドレスを格納する。格納されたアドレスは、追跡バッファ１５０から読取りバス１５６上の追跡メモリ１５４へ読み取られる。追跡メモリ１５４は、ＤＳＰの内部にあっても外部にあってもよい。
【００２１】
図５は、実施例に従った追跡バッファ１５０の構造を図示する。追跡バッファ１５０は、ｔｂｕｆ．０からｔｂｕｆ．３１で示され、かつ各々が入力マルチプレクサ（ＭＵＸ）５０５と関連する一連の３２個の３２ビットの追跡バッファ・レジスタ内に、３２ビットの命令アドレスを格納する。実施例によれば、追跡バッファ１５０は、６４ビットの書込みバス１５２および３２ビットの読取りバス１５６を有する（図１）。
【００２２】
コード内の他の位置へプログラム・カウンタ（ＰＣ）をジャンプさせる、取得分岐または割込みのようなイベントが発生しない限り、プログラム・コードは連続して実行される。このようなジャンプ・イベント間のコードは連続しているので、プログラム・フローは、ジャンプ・イベントの記録から復元することができる。追跡バッファとその動作速度に必要なメモリを削減するために、追跡バッファは、例えば分岐命令、例外、割込み、および分岐目標アドレスのような、プログラムにジャンプや中断を発生させる命令のアドレスのみを格納する。
【００２３】
分岐は、プログラム・フロー内でよく発生するジャンプ・イベントである。それぞれ分岐は、分岐目標アドレスおよび分岐源アドレスという１対のアドレスによって識別される。分岐目標アドレスは、分岐した命令セット内の第１命令のアドレスであり、また、分岐源アドレスは、プログラム・フローに中断を発生させた命令、または最後の完全な命令のうちのいずれかのアドレスである。
【００２４】
追跡バッファ１５０は、書込み動作において先入れ先出し方式（ＦＩＦＯ）レジスタとして動作する。分岐のための分岐目標アドレスおよび分岐源アドレスは、６４ビットの書込みバス１５２上に６４ビット言語で書き込まれるのと同時に追跡バッファに書き込まれる。分岐目標アドレスは、ｐｃ．ｃｏｍと表示されｔｂｕｆ．０に接続されたレジスタ５１０内に格納され、また、分岐源アドレスは、ｐｃ．ｈｏｌｄと表示されｔｂｕｆ．１に接続されたたレジスタ５１０に書き込まれる。ｐｃ．ｃｏｍレジスタ５１０内の分岐目標アドレスがｔｂｕｆ．０に書き込まれた場合、ｔｂｕｆ．０に現在格納された分岐目標アドレスは、書込みパス５１４がある場合には、これをたどってｔｂｕｆ．２へシフトされる。同様に、ｐｃ．ｈｏｌｄレジスタ５１２内の分岐源アドレスがｔｂｕｆ．１に書き込まれた場合、ｔｂｕｆ．１に現在格納された分岐源アドレスは、書込みパス５１６がある場合には、これをたどってｔｂｕｆ．３へシフトされる。これに続く書込み動作において、ｔｂｕｆ．０内の分岐目標アドレスはｔｂｕｆ．２へシフトされ、そしてｔｂｕｆ．２の内の分岐目標アドレスはｔｂｕｆ．４へシフトされる。同様に、ｔｂｕｆ．１内の分岐源アドレスがｔｂｕｆ．３へ、そしてｔｂｕｆ．３内の分岐源アドレスがｔｂｕｆ．５へシフトされる。同様のシフトは他の追跡バッファ・レジスタ内でも生じ、すなわち、追跡バッファ・レジスタ内の各命令アドレスが、それぞれの書込みサイクルで２レジスタ下流へシフトされる。
【００２５】
追跡バッファは、読取り動作のための後入れ先出し方式（ＬＩＦＯ）レジスタとして動作する。読取りバス１５６が３２ビット幅のときは、３２ビットの分岐目標アドレスおよび分岐源アドレスは、一対としてではなく、個別に読み取られる。ｔｂｕｆ．０内のアドレスが読み取られるとき、ｔｂｕｆ．１内のアドレスは、読取りパス５２０に沿って左（上流）のｔｂｕｆ．０へシフトされる。同様に、もう一方のレジスタ内のアドレスも、１レジスタの上流へシフトされる。同様のシフトは他の追跡バッファ・レジスタ内でも生じ、すなわち、追跡バッファ・レジスタ内の各命令アドレスが、それぞれの読取りサイクルで１レジスタ上流へシフトされる。
【００２６】
追跡バッファ１５０が満杯のとき、つまり、ｔｂｕｆ．３０およびｔｂｕｆ．３１が満杯のとき、追跡バッファは、追跡バッファに完全な例外を引き起こす。その例外は、追跡バッファ例外となる例外を決定し、かつ追跡バッファ１５０の内容を追跡メモリ１５４内に全部移すために読取り動作を開始する、例外ハンドラへ送信される。追跡バッファ１５０が追跡情報の喪失を防ぐために読み取られている間に、例外ハンドラもプログラム・フローを停止させる。追跡バッファは、メモリ・マップ読み取り（ＭＭＲ）動作中に読み取られ、そこで、ｔｂｕｆ．０から読み取られた各アドレスが、追跡バッファ１５０のコンテンツに特別に割り当てられたメモリのエリア内に格納される。
【００２７】
他の実施例によれば、追跡バッファ１５０が満杯のとき、追跡バッファは追跡バッファに完全な例外を引き起こさなくてもよい。むしろ、ＦＩＦＯレジスタとして動作する追跡バッファ１５０は、追跡バッファの末端でアドレスを落とす、つまり、そのアドレスがｔｂｕｆ．３０およびｔｂｕｆ．３１の外へシフトする。
【００２８】
さらに追跡バッファ資源を保存し、その結果、追跡バッファ１５０が動作する能力水準および速度を改善するために、構造が追跡コードの圧縮のために提供される。プログラム・フローは、急速に追跡バッファを充填することができるソフトウェアおよびハードウェアのループを含み、読出し動作の頻度、よって追跡収集の遅い特性を増加させる。ｎサイクル・ループにある間、格納されている分岐目標／分岐源アドレスの対がｎ回繰り返され、その結果、プログラム・フローについての重要な情報を提供しないことがある。従って、繰り返される分岐目標／分岐源アドレスの対を圧縮することが望ましい。
【００２９】
追跡バッファ１５０によってレベル１圧縮およびレベル２圧縮を実施することができるが、そこでは、レベル１圧縮が任意のループによって引き起こされ、また、レベル２圧縮が入れ子にされた内部のループを含むループによって引き起こされる。図６は、レベル１およびレベル２圧縮を含む、動作６００について説明するフロー・チャートを図示する。以下の記述は、動作６００を実行する１つの実施例にすぎない。他の実施例では、状態が異なる順にスキップされ、また実行されることがある。
【００３０】
新しい分岐目標が与えられたとき、分岐目標／分岐源アドレスの対は、ｐｃ．ｃｏｍおよびｐｃ．ｈｏｌｄレジスタにそれぞれ格納され、動作６００が状態６０２に復帰する。ｐｃ．ｃｏｍおよびｐｃ．ｈｏｌｄレジスタ内のアドレス対が新しいアドレス対である場合、状態６０４で、それが、ｔｂｕｆ．０およびｔｂｕｆ．１内に格納されたアドレス対とレベル１コンパレータ５５０を用いて比較される。
【００３１】
実施例によれば、命令アドレスは１６ビットの境界を持つ。それゆえ、命令アドレスの最下位ビット（ＬＳＢ）が０であれば、有用な情報を提供しない。従って、命令アドレスのＬＳＢは、新しいアドレス対と、ｔｂｕｆ．０とｔｂｕｆ．１内に包含される格納されたアドレス対との間の比較において考慮されない。
【００３２】
実施例によれば、ｔｂｕｆ．０内の分岐目標アドレスのＬＳＢは、レベル１圧縮を示すために使用される。アドレス対が一致する場合、ｔｂｕｆ．０およびｔｂｕｆ．１内に格納されたアドレス対は、状態６０６で、典型的には０であるｔｂｕｆ．０内の分岐目標アドレスのＬＳＢを１にセットすることによって圧縮される。この場合、新しいアドレス対は追跡バッファへ書き込まれない。
【００３３】
状態６０８でレベル２圧縮が可能でないと決定され、かつ新しいアドレス対と格納されたアドレス対とが一致しない場合、状態６１０で新しいアドレス対がｔｂｕｆ．０およびｔｂｕｆ．１へ書き込まれる。
【００３４】
状態６０８でレベル２圧縮が可能であり、かつ新しいアドレス対と格納されたアドレス対とが一致しない場合、ｐｃ．ｃｏｍおよびｐｃ．ｈｏｌｄのレジスタ内の新しいアドレス対は、状態６１２で、レベル２コンパレータ５５２によってｔｂｕｆ．２およびｔｂｕｆ．３に格納されたアドレス対と比較される。新しいアドレス対とｔｂｕｆ．２およびｔｂｕｆ．３に格納されたアドレス対とが一致する場合、ｔｂｕｆ．３内の分岐源アドレスのＬＳＢは、状態６１４で１にセットされる。この場合、新しいアドレス対は追跡バッファに書き込まれない。
【００３５】
新しいアドレス対とｔｂｕｆ．２およびｔｂｕｆ．３に格納されたアドレス対とが一致しない場合、状態６１０で新しいアドレス対が追跡バッファに書き込まれる。
【００３６】
例１（表１）は典型的なレベル１圧縮動作を示す。
【００３７】
【表１】
2004510248.tif 000003
例１におけるプログラム・フローは、ループが終了するまで、命令アドレス０ｘ２００２（分岐目標アドレス）での命令Ｉ２へ、命令アドレス０ｘ２００ａ（分岐源アドレス）で分岐を行う回帰ループを含む。一旦ループが終了すると、ＰＣは命令アドレス０ｘ２００ｃで命令Ｉ５へのループから離脱する。
【００３８】
ループの第１反復の後、ｔｂｕｆ．０は命令アドレス０ｘ２００２（分岐目標アドレス）を含み、ｔｂｕｆ．１は命令アドレス０ｘ２００ａ（分岐源アドレス）を含む。ループの第２反復において、レベル１コンパレータ５５０は、アドレスのＬＳＢを無視して、新しい分岐目標／分岐源アドレス対（０ｘ２００２，０ｘ２００ａ）を、ｔｂｕｆ．０およびｔｂｕｆ．１（０ｘ２００２，０ｘ２００ａ）内に格納されたアドレス対と比較する。新しいアドレス対と格納されたアドレス対とが一致するとき、新しいアドレス対はｔｂｕｆ．０およびｔｂｕｆ．１へ書き込まれず、ｔｂｕｆ．０内の分岐目標アドレスのＬＳＢが１にセットされる。分岐目標アドレスのＬＳＢをセットすることにより、その値が０ｘ２００２から０ｘ２００３へ変化する。
【００３９】
ループの第３反復において、レベル１コンパレータ５５０は、アドレスのＬＳＢを無視して、新しいアドレス対（０ｘ２００２，０ｘ２００ａ）を、ｔｂｕｆ．０およびｔｂｕｆ．１（０ｘ２００３，０ｘ２００ａ）内に格納されたアドレス対と比較する。アドレス対が一致するとき、ｐｃ．ｃｏｍおよびｐｃ．ｈｏｌｄレジスタ内の新しいアドレス対はｔｂｕｆ．０およびｔｂｕｆ．１に書き込まれず、ｔｂｕｆ．０およびｔｂｕｆ．１内のアドレス対が残存する（０ｘ２００３，０ｘ２００ａ）。
【００４０】
例２（表２）は典型的なレベル２圧縮動作を示す。
【００４１】
【表２】
2004510248.tif 000004
例２におけるプログラム・フローは、命令アドレス０ｘ２０００での命令Ｉ１への、命令アドレス０ｘ２０１０での分岐を含む回帰外部ループ、および、命令アドレス０ｘ２００２での命令Ｉ２への、命令アドレス０ｘ２００８での分岐を含む内部ループを含む。
【００４２】
内部ループの第１反復の後、ｔｂｕｆ．０は命令アドレス０ｘ２００２（分岐目標アドレス）を含み、ｔｂｕｆ．１は命令アドレス０ｘ２００ａ（分岐源アドレス）を含む。内部ループの第２反復において、例１に関して上述したように、レベル１圧縮が生じ、ｔｂｕｆ．０、すなわち０ｘ２００２内の分岐目標アドレスが０ｘ２００３にセットされる。
【００４３】
一旦内部ループが終了すると、命令アドレス０ｘ２０１０で分岐命令に遭遇して命令Ｉ１に回帰するまで、ＰＣは命令アドレス０ｘ２００ａにおける命令１４へのループから離脱する。外部ループの第１反復において、外部ループの分岐目標アドレス、すなわち０ｘ２０００がｔｂｕｆ．０に書込まれ、外部のループの分岐源アドレス、すなわち０ｘ２０１０がｔｂｕｆ．１に書込まれ、そして、ｔｂｕｆ．０およびｔｂｕｆ．１内のアドレス対（０ｘ２００３，０ｘ２００８）がｔｂｕｆ．２およびｔｂｕｆ．３へシフトされる。内部ループが外部ループの第２反復において遭遇する２度目で、レベル２圧縮が生じる。レベル１コンパレータ５５０が、状態６０４で、新しいアドレス対を、ｔｂｕｆ．０およびｔｂｕｆ．１（０ｘ２０００，０ｘ２０１０）内に格納されたアドレス対と比較する（図６）。これらが一致しないとき、レベル２コンパレータ５５２が、状態６１２で、ＬＳＢを無視して、新しいアドレス対（０ｘ２００２，０ｘ２００８）を、ｔｂｕｆ．２およびｔｂｕｆ．３（０ｘ２００３，０ｘ２００８）に格納されたアドレス対と比較する。これらのアドレス対が一致するとき、新しいアドレス対はｔｂｕｆ．０およびｔｂｕｆ．１へ書き込まれない。レベル２圧縮は、ｔｂｕｆ．３内の分岐源アドレスのＬＳＢを０から１にセットし、格納された命令アドレス値を０ｘ２００８から０ｘ２００９へ変更することによって示される。
【００４４】
外部ループの第２反復において、レベル１圧縮が外部ループ上で生じる。レベル１コンパレータ５５０は、アドレスのＬＳＢを無視して、新しいアドレス対（０ｘ２０００，０ｘ２０１０）を、ｔｂｕｆ．０およびｔｂｕｆ．１（０ｘ２０００，０ｘ２０１０）に格納されたアドレス対と比較する。新しいアドレス対と格納されたアドレス対とが一致するとき、新しいアドレス対はｔｂｕｆ．０およびｔｂｕｆ．１に書き込まれず、ｔｂｕｆ．０内の目標アドレスのＬＳＢが０から１にセットされ、格納された命令アドレス値を０ｘ２０００から０ｘ２００１へ変更する。
【００４５】
ＤＳＰ１１０が、パワー・ダウン後にリスタートされるとき、すなわちパワー・オン・リセットの場合、追跡バッファ１５０は、ＤＳＰ１１０がシャット・ダウンされる前に実行されていたプログラム・フローから残存する無効の命令アドレスを含む。実施例によれば、追跡バッファ中の各命令アドレスは、関連する１ビットの有効ビットを有する。有効ビットは、追跡バッファ１５０内の命令アドレスが現在のプログラム・フローに対して有効か無効かを、それぞれＨＩＧＨまたはＬＯＷの値を用いて示す。命令アドレスが無効の場合、それは読取り動作中に追跡メモリ１５４へ書き込まれない。
【００４６】
図７は、追跡バッファ１５０内の命令アドレスに関連した有効なビットを追跡する有効ビット・バッファ７００を図示する。有効ビット・バッファ７００は、追跡バッファ１５０の構造とパラレルな構造を有し、ｖｂｕｆ．０からｖｂｕｆ．３１で示され、それぞれが入力ＭＵＸ７０５と関連する、３２の１ビット・フリップ・フロップ（ＦＦ）を含む。各有効ビット・バッファのための入力ＭＵＸ７０５は、リセット・ゲート７１０を含む。パワー・オン・リセット時に、各有効ビット・バッファＦＦ内の有効ビットは、追跡バッファ１５０内の対応する命令アドレスが無効であることを示すために０にセットされる。
【００４７】
有効ビット・バッファの動作も、追跡バッファの動作とパラレルである。書込み動作時に、ｐｃ．ｃｏｍレジスタ５１０内の分岐目標アドレスに応答する有効ビットは、ＦＦ７１２からｖｂｕｆ．０へ転送され、ｐｃ．ｈｏｌｄレジスタ５１２内の分岐源アドレスに応答する有効ビットは、ＦＦ７１３からｖｂｕｆ．１へ転送される。追跡バッファ１５０のように、有効ビットは、書込み動作時に書込みパス７１４に沿って２つのＦＦにシフトされ、読取り動作時に読取りパス７１６に沿って１つのＦＦにシフトされる。ｖｂｕｆ．０から読み取られた各有効ビットについて、ＬＯＷ値を有する１ビットの有効ビットが有効ビット生成器７２０によってｖｂｕｆ．３１に書き込まれ、ｖｂｕｆ．３０へシフトされた有効ビットが置き換えられる。
【００４８】
多様な実施例に従った追跡バッファは、プログラム・フローのすべての変化を捕える間に、正確な例外を効果的に生成する。さらに、追跡バッファのＦＩＦＯ／ＬＩＦＯの構成は、ＦＩＦＯのみ、またはＬＩＦＯのみに必要とされる構成よりも、少ない多重化構成ですむので、それによって、チップ上の追跡バッファ１５０のためのスペースおよび所要電力が低減する。
【００４９】
多くの発明の実施例が記述された。しかしながら、多様な変更が、発明の精神および範囲から逸脱することなく可能であることが理解されるであろう。例えば、３２ビット、例えば１６ビットまたは６４ビット以外の幅を有する命令アドレスは、適切に縮小された追跡バッファ・レジスタおよび読み書きバスを有する追跡バッファを使用して追跡することができる。従って、他の実施例も請求項の範囲内である。
【図面の簡単な説明】
【図１】実施例に従ったプロセッサを利用するモバイル・ビデオ装置のブロック図である。
【図２】実施例に従った信号処理システムのブロック図である。
【図３】実施例に従った他の信号処理システムのブロック図である。
【図４】実施例に従った、図１中のプロセッサの典型的なパイプライン・ステージを図示する。
【図５】実施例に従った追跡バッファのブロック図である。
【図６】実施例に従った図５の追跡バッファのための圧縮動作を示すフロー・チャートである。
【図７】実施例に従った図５の追跡バッファのための有効ビット・バッファのブロック図である。
【図１】
2004510248.tif 000005
【図２】
2004510248.tif 000006
【図３】
2004510248.tif 000007
【図４】
2004510248.tif 000008
【図５】
2004510248.tif 000009
【図６】
2004510248.tif 000010
【図７】
2004510248.tif 000011
【国際公開パンフレット】
2004510248.tif 000012
2004510248.tif 000013
2004510248.tif 000014
2004510248.tif 000015
2004510248.tif 000016
2004510248.tif 000017
2004510248.tif 000018
2004510248.tif 000019
2004510248.tif 000020
2004510248.tif 000021
2004510248.tif 000022
2004510248.tif 000023
2004510248.tif 000024
2004510248.tif 000025
2004510248.tif 000026
2004510248.tif 000027
2004510248.tif 000028
2004510248.tif 000029
2004510248.tif 000030
2004510248.tif 000031
2004510248.tif 000032
2004510248.tif 000033
2004510248.tif 000034
2004510248.tif 000035
2004510248.tif 000036
2004510248.tif 000037
2004510248.tif 000038
2004510248.tif 000039
2004510248.tif 000040
2004510248.tif 000041
2004510248.tif 000042
2004510248.tif 000043
2004510248.tif 000044
2004510248.tif 000045
2004510248.tif 000046
2004510248.tif 000047
2004510248.tif 000048
2004510248.tif 000049
2004510248.tif 000050
2004510248.tif 000051
【国際公開パンフレット（コレクトバージョン）】
2004510248.tif 000052
【国際調査報告】
2004510248.tif 000053
2004510248.tif 000054
2004510248.tif 000055
2004510248.tif 000056