JP3818965B2 - ソフトウェアおよびハードウェアのループ圧縮を有するfifo書込み/lifo読取り追跡バッファ - Google Patents

ソフトウェアおよびハードウェアのループ圧縮を有するfifo書込み/lifo読取り追跡バッファ Download PDF

Info

Publication number
JP3818965B2
JP3818965B2 JP2002530994A JP2002530994A JP3818965B2 JP 3818965 B2 JP3818965 B2 JP 3818965B2 JP 2002530994 A JP2002530994 A JP 2002530994A JP 2002530994 A JP2002530994 A JP 2002530994A JP 3818965 B2 JP3818965 B2 JP 3818965B2
Authority
JP
Japan
Prior art keywords
address
register
pair
stored
termination
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.)
Expired - Fee Related
Application number
JP2002530994A
Other languages
English (en)
Other versions
JP2004510248A (ja
Inventor
シン,ラヴィ,ピー
ロス,チャールズ,ピー
オーバカンプ,グレゴリー,エー
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.)
Analog Devices Inc
Original Assignee
Analog Devices Inc
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 Analog Devices Inc filed Critical Analog Devices Inc
Publication of JP2004510248A publication Critical patent/JP2004510248A/ja
Application granted granted Critical
Publication of JP3818965B2 publication Critical patent/JP3818965B2/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 or look ahead
    • 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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 or look ahead
    • G06F9/3802Instruction prefetching
    • 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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 or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)

Description

【0001】
【従来の技術】
本発明は、パイプライン方式のプロセッサに関し、さらに詳しくは、パイプライン方式のプロセッサで使用するための追跡バッファに関する。
【0002】
【発明の背景】
デジタル信号処理は、デジタル形式の信号表現、および数値演算を用いた当該信号表現の変換または処理に関連する。デジタル信号処理は、ワイヤレス通信、ネットワーキング、マルチメディア等の分野における今日の多くの先端技術製品に広く用いられる技術である。デジタル信号処理技術が普及した理由の1つは、低価格でパワフルなデジタル信号プロセッサ(DSP)が開発され、これが、これらの製品を安く効率的に生産するための信頼できる演算能力を提供したことである。最初のDSPが開発されて以来、DSPのアーキテクチャや設計は、ビデオ伝送順序のような複雑なリアルタイム処理でさえ行なうことができる段階にまで発展した。
【0003】
DSPは、デジタル・ビデオ、イメージング、オーディオのような様々なマルチメディア・アプリケーションにしばしば用いられる。DSPは、かかるマルチメディア・ファイルを作成して開くためのデジタル信号を操作することができる。
【0004】
MPEG−1(Motion Picture Expert Group)、MPEG−2、MPEG−4およびH.263は、デジタル・ビデオ圧縮標準規格およびファイル形式である。これらの標準規格は、個々のフレーム全体を格納する代わりに、主としてあるビデオ・フレームから他のフレームへの変化を格納することにより、デジタル・ビデオ信号の高い圧縮率を達成する。ビデオ情報は、多くの異なる技術を用いて、さらに圧縮することができる。
【0005】
DSPは、圧縮している間に、ビデオ情報に対して様々な動作を実行するために用いられる。これらの動作は、動き探索および空間補間アルゴリズムを含む。第1の目的は、隣接したフレーム内のブロック間の歪みを測定することである。これらの動作は演算が集中的であるので、高度なデータ処理能力が要求される。
【0006】
標準規格のMPEGファミリーは、マルチメディア・アプリケーションおよびファイルの帯域幅を拡大する要求と歩調を合わせて発展している。標準規格の各新バージョンは、MPEG準拠のビデオ処理装置内で使用されるDSPにさらに大きな処理要求を出すより複雑なアルゴリズムを提供する。
【0007】
ビデオ処理装置の製造者は、MPEGおよびH.263標準規格に従ってビデオ符号化のためにカスタマイズされた特定用途向け集積回路(ASIC)に依存することが多い。しかしながら、ASICは設計が複雑で、生産コストが高く、それらのアプリケーションにおいて汎用DSPよりも柔軟性がない。
【0008】
【実施例の詳細な説明】
本発明のこれらおよび他の特徴および利点は、次の詳細な記述を読み、かつ、添付図面を参照することによって、さらに明らかになるであろう。
【0009】
図1は、実施例に従った、追跡バッファ102を含むモバイル・ビデオ装置100を示す。モバイル・ビデオ装置100は、アンテナ105から、あるいは、デジタル・ビデオ・ディスク(DVD)やメモリ・カードのようなデジタル・ビデオ記憶媒体120から受信した、符号化されたビデオ信号により生成されたビデオ画像を表示する携帯装置である。プロセッサ110は、プロセッサの動作のために命令およびデータを格納するキャッシュ・メモリ115と通信する。プロセッサ110は、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、スレーブDSPを制御するマイクロプロセッサ、またはハイブリッド・マイクロプロセッサ/DSPアーキテクチャを備えたプロセッサでもよい。本アプリケーションにおいては、プロセッサ110は、以下DSP110と呼ぶ。
【0010】
DSP110は、符号化されたビデオ信号によって、例えば、アナログ対デジタル変換、復調、フィルタリング、データ回復、符号解読等を含む様々な動作を行なう。DSP110は、標準規格のMPEGファミリーおよびH.263標準規格のような種々のデジタル・ビデオ圧縮標準規格の1つによって圧縮したデジタル・ビデオ信号を解読する。そして、解読されたビデオ信号は、ディスプレイ125上にビデオ画像を生成するために、ディスプレイ・ドライバ130に入力される。
【0011】
携帯装置は、一般的に電源による制約を受ける。さらに、ビデオ解読動作は演算が集中的である。従って、そのような装置内で使用されるプロセッサとしては、比較的高速で低電力の装置が好都合である。
【0012】
DSP110は、巧妙なパイプライン方式のロード/格納アーキテクチャを有する。パイプライン方式を用いることによって、DSPの性能は、パイプライン方式でないDSPに比べて増強される。第1命令を取り出して第1命令を実行し、次に第2命令を取り出す代わりに、パイプライン方式のDSP110では、第1命令の実行と同時に第2の命令を取り出すので、これによって命令処理能力が改善する。さらに、パイプライン方式のDSPのクロック・サイクルは、パイプライン方式でないDSPより短く、そこで命令が同じクロック・サイクル内で取り出されて実行される。
【0013】
このようなDSP110は、ビデオ・カムコーダ、電話会議、PCビデオ・カード、および高品位テレビ(HDTV)に使用することができる。さらに、DSP110は、モバイル電話方式、音声認識、および他のアプリケーション内で使用される音声処理のようなデジタル信号処理を利用する他の技術と関連して使用できる。
【0014】
図2は、1つの実施例に従って、DSP110を含む信号処理システム200のブロック図を示す。1またはそれ以上のアナログ信号が、例えばアンテナ105のような外部ソースによって、シグナル・コンディショナ202に提供される。シグナル・コンディショナ202は、アナログ信号によって一定の前処理機能を実行するために配置される。典型的な前処理機能は、いくつかのアナログ信号を共に混合し、濾波し、増幅するなどの段階を含む。
【0015】
アナログ−デジタル変換器(ADC)204は、上記のように、シグナル・コンディショナ202から前処理されたアナログ信号を受信するために結合され、前処理されたアナログ信号をサンプルから構成されるデジタル信号に変換する。サンプルは、シグナル・コンディショナ202によって受信されたアナログ信号の性質によって決定されるサンプリング率によって得られる。DSP110は、ADC204の出力でデジタル信号を受信するために結合される。DSP110は、受信デジタル信号によって望ましい信号変換を実行し、1またはそれ以上の出力デジタル信号を生成する。デジタル−アナログ変換器(DAC)206は、DSP110から出力デジタル信号を受信するために結合される。DAC206は、出力デジタル信号を出力アナログ信号に変換する。そして、出力アナログ信号は、他のシグナル・コンディショナ208に伝達される。シグナル・コンディショナ208は、出力アナログ信号によって後処理機能を実行する。典型的な後処理機能は、上記の前処理機能に類似する。これらの装置の適切なアレンジメントであれば、どのようなものでもDSP110を用いた信号処理システム200への結合が可能である。
【0016】
図3では、別の実施例による信号処理システム300が示される。本実施例において、デジタル受信機302は、1またはそれ以上のデジタル信号を受信し、かつ、DSP110に受信デジタル信号を伝達するために配置される。図2に示される実施例のように、DSP110は、受信デジタル信号によって望ましい信号変換を実行し、1またはそれ以上の出力デジタル信号を生成する。デジタル信号送信機304は、出力デジタル信号を受信するために結合される。1つの典型的なアプリケーションにおいて、信号処理システム300はデジタル・オーディオ装置であり、そこでデジタル受信機302が、DSP110へ、デジタル記憶装置120上に格納されたデータのデジタル表示の信号を伝える。次に、DSP110は、デジタル信号を処理し、結果としての出力デジタル信号をデジタル送信機304に伝達する。そして、デジタル送信機304によってディスプレイ・出力デジタル信号の値がドライバ130に送信され、ディスプレイ125上にビデオ画像を生成する。
【0017】
図4に図示されたパイプラインは8つのステージを含み、それは、命令取り出し402−403、デコード404、アドレス演算405、実行406−408、および書き戻し409のステージを含む。命令iがあるクロック・サイクルで取り出され、そして、例えばi+1、i+2のような新たな命令を取り出すと同時に、次のクロック・サイクルでパイプライン上で動作され、実行される。
【0018】
パイプライン方式は、プロセッサの性能に、追加の協調問題やハザードをもたらすことがある。プログラム・フローにおけるジャンプは、パイプライン内に空スロットまたは「バブル」を生成する。条件付き分岐を生じたり、例外や中断を発生する状態は、命令の連続的な流れを変更する。それらが発生した後は、新しい命令は、連続的なプログラム流れの外で取り出され、パイプライン内の残りの命令を無関係にする。データ・フォワーディング、動的分岐予測、パイプライン内の命令アドレスと有効なビットを関連付けるといった方法が、これらの複雑さに対処するために用いられることがある。
【0019】
追跡バッファは、プロセッサのプログラム・カウンタ(プログラム・フロー)情報を格納する。追跡バッファはデバッグ用ツールとして使用され、プログラムが実行中にたどった経路を再現する。プログラムを実行するとき、一定の命令が予期しないイベントを生成することがある。このような予期しないイベントは、プログラム・フロー内に中断を発生させる。かかるイベントは、例えば、結果に基づいた動的な分岐、またはシステム内の他の装置により誘発された割込みを含む。これらのイベントは、コードを静的に分析することから予測するのは難しい。追跡バッファ内の実行された命令(追跡データ)のログは、コードの実行時のどの時点において望ましくないイベントが生じたのか、および何がその誘因となったのかを決定するために使用される。
【0020】
追跡バッファ150(図1)は、書込みバス152によってDSP110に接続される。追跡バッファ150は、一連の相互接続されたレジスタ内に取り込まれた命令のアドレスを格納する。格納されたアドレスは、追跡バッファ150から読取りバス156上の追跡メモリ154へ読み取られる。追跡メモリ154は、DSPの内部にあっても外部にあってもよい。
【0021】
図5は、実施例に従った追跡バッファ150の構造を図示する。追跡バッファ150は、tbuf.0からtbuf.31で示され、かつ各々が入力マルチプレクサ(MUX)505と関連する一連の32個の32ビットの追跡バッファ・レジスタ内に、32ビットの命令アドレスを格納する。実施例によれば、追跡バッファ150は、64ビットの書込みバス152および32ビットの読取りバス156を有する(図1)。
【0022】
コード内の他の位置へプログラム・カウンタ(PC)をジャンプさせる、取得分岐または割込みのようなイベントが発生しない限り、プログラム・コードは連続して実行される。このようなジャンプ・イベント間のコードは連続しているので、プログラム・フローは、ジャンプ・イベントの記録から復元することができる。追跡バッファとその動作速度に必要なメモリを削減するために、追跡バッファは、例えば分岐命令、例外、割込み、および分岐アドレスのような、プログラムにジャンプや中断を発生させる命令のアドレスのみを格納する。
【0023】
分岐は、プログラム・フロー内でよく発生するジャンプ・イベントである。それぞれ分岐は、分岐アドレスおよび分岐アドレスという1対のアドレスによって識別される。分岐アドレスは、分岐した命令セット内の第1命令のアドレスであり、また、分岐アドレスは、プログラム・フローに中断を発生させた命令、または最後の完全な命令のうちのいずれかのアドレスである。
【0024】
追跡バッファ150は、書込み動作において先入れ先出し方式(FIFO)レジスタとして動作する。分岐のための分岐アドレスおよび分岐アドレスは、64ビットの書込みバス152上に64ビットのワードで書き込まれるのと同時に追跡バッファに書き込まれる。分岐アドレスは、pc.comと表示されtbuf.0に接続されたレジスタ510内に格納され、また、分岐アドレスは、pc.holdと表示されtbuf.1に接続されたレジスタ51に書き込まれる。pc.comレジスタ510内の分岐アドレスがtbuf.0に書き込まれた場合、tbuf.0に現在格納された分岐アドレスは、書込みパス514がある場合には、これをたどってtbuf.2へシフトされる。同様に、pc.holdレジスタ512内の分岐アドレスがtbuf.1に書き込まれた場合、tbuf.1に現在格納された分岐アドレスは、書込みパス516がある場合には、これをたどってtbuf.3へシフトされる。これに続く書込み動作において、tbuf.0内の分岐アドレスはtbuf.2へシフトされ、そしてtbuf.2の内の分岐アドレスはtbuf.4へシフトされる。同様に、tbuf.1内の分岐アドレスがtbuf.3へ、そしてtbuf.3内の分岐アドレスがtbuf.5へシフトされる。同様のシフトは他の追跡バッファ・レジスタ内でも生じ、すなわち、追跡バッファ・レジスタ内の各命令アドレスが、それぞれの書込みサイクルで2レジスタ下流へシフトされる。
【0025】
追跡バッファは、読取り動作のための後入れ先出し方式(LIFO)レジスタとして動作する。読取りバス156が32ビット幅のときは、32ビットの分岐アドレスおよび分岐アドレスは、一対としてではなく、個別に読み取られる。tbuf.0内のアドレスが読み取られるとき、tbuf.1内のアドレスは、読取りパス520に沿って左(上流)のtbuf.0へシフトされる。同様に、もう一方のレジスタ内のアドレスも、1レジスタの上流へシフトされる。同様のシフトは他の追跡バッファ・レジスタ内でも生じ、すなわち、追跡バッファ・レジスタ内の各命令アドレスが、それぞれの読取りサイクルで1レジスタ上流へシフトされる。
【0026】
追跡バッファ150が満杯のとき、つまり、tbuf.30およびtbuf.31が満杯のとき、追跡バッファは、追跡バッファに完全な例外を引き起こす。その例外は、追跡バッファ例外となる例外を決定し、かつ追跡バッファ150の内容を追跡メモリ154内に全部移すために読取り動作を開始する、例外ハンドラへ送信される。追跡バッファ150が追跡情報の喪失を防ぐために読み取られている間に、例外ハンドラもプログラム・フローを停止させる。追跡バッファは、メモリ・マップ読み取り(MMR)動作中に読み取られ、そこで、tbuf.0から読み取られた各アドレスが、追跡バッファ150のコンテンツに特別に割り当てられたメモリのエリア内に格納される。
【0027】
他の実施例によれば、追跡バッファ150が満杯のとき、追跡バッファは追跡バッファに完全な例外を引き起こさなくてもよい。むしろ、FIFOレジスタとして動作する追跡バッファ150は、追跡バッファの末端でアドレスを落とす、つまり、そのアドレスがtbuf.30およびtbuf.31の外へシフトする。
【0028】
さらに追跡バッファ資源を保存し、その結果、追跡バッファ150が動作する能力水準および速度を改善するために、構造が追跡コードの圧縮のために提供される。プログラム・フローは、急速に追跡バッファを充填することができるソフトウェアおよびハードウェアのループを含み、読出し動作の頻度、よって追跡収集の遅い特性を増加させる。nサイクル・ループにある間、格納されている分岐/分岐アドレスの対がn回繰り返され、その結果、プログラム・フローについての重要な情報を提供しないことがある。従って、繰り返される分岐/分岐アドレスの対を圧縮することが望ましい。
【0029】
追跡バッファ150によってレベル1圧縮およびレベル2圧縮を実施することができるが、そこでは、レベル1圧縮が任意のループによって引き起こされ、また、レベル2圧縮が入れ子にされた内部のループを含むループによって引き起こされる。図6は、レベル1およびレベル2圧縮を含む、動作600について説明するフロー・チャートを図示する。以下の記述は、動作600を実行する1つの実施例にすぎない。他の実施例では、状態が異なる順にスキップされ、また実行されることがある。
【0030】
新しい分岐が与えられたとき、分岐/分岐アドレスの対は、pc.comおよびpc.holdレジスタにそれぞれ格納され、動作600が状態602に復帰する。pc.comおよびpc.holdレジスタ内のアドレス対が新しいアドレス対である場合、状態604で、それが、tbuf.0およびtbuf.1内に格納されたアドレス対とレベル1コンパレータ550を用いて比較される。
【0031】
実施例によれば、命令アドレスは16ビットの境界を持つ。それゆえ、命令アドレスの最下位ビット(LSB)が0であれば、有用な情報を提供しない。従って、命令アドレスのLSBは、新しいアドレス対と、tbuf.0とtbuf.1内に包含される格納されたアドレス対との間の比較において考慮されない。
【0032】
実施例によれば、tbuf.0内の分岐アドレスのLSBは、レベル1圧縮を示すために使用される。アドレス対が一致する場合、tbuf.0およびtbuf.1内に格納されたアドレス対は、状態606で、典型的には0であるtbuf.0内の分岐アドレスのLSBを1にセットすることによって圧縮される。この場合、新しいアドレス対は追跡バッファへ書き込まれない。
【0033】
状態608でレベル2圧縮が可能でないと決定され、かつ新しいアドレス対と格納されたアドレス対とが一致しない場合、状態610で新しいアドレス対がtbuf.0およびtbuf.1へ書き込まれる。
【0034】
状態608でレベル2圧縮が可能であり、かつ新しいアドレス対と格納されたアドレス対とが一致しない場合、pc.comおよびpc.holdのレジスタ内の新しいアドレス対は、状態612で、レベル2コンパレータ552によってtbuf.2およびtbuf.3に格納されたアドレス対と比較される。新しいアドレス対とtbuf.2およびtbuf.3に格納されたアドレス対とが一致する場合、tbuf.3内の分岐アドレスのLSBは、状態614で1にセットされる。この場合、新しいアドレス対は追跡バッファに書き込まれない。
【0035】
新しいアドレス対とtbuf.2およびtbuf.3に格納されたアドレス対とが一致しない場合、状態610で新しいアドレス対が追跡バッファに書き込まれる。
【0036】
例1(表1)は典型的なレベル1圧縮動作を示す。
【0037】
【表1】
Figure 0003818965
例1におけるプログラム・フローは、ループが終了するまで、命令アドレス0x2002(分岐アドレス)での命令I2へ、命令アドレス0x200a(分岐アドレス)で分岐を行う回帰ループを含む。一旦ループが終了すると、PCは命令アドレス0x200cで命令I5へのループから離脱する。
【0038】
ループの第1反復の後、tbuf.0は命令アドレス0x2002(分岐アドレス)を含み、tbuf.1は命令アドレス0x200a(分岐アドレス)を含む。ループの第2反復において、レベル1コンパレータ550は、アドレスのLSBを無視して、新しい分岐/分岐アドレス対(0x2002,0x200a)を、tbuf.0およびtbuf.1(0x2002,0x200a)内に格納されたアドレス対と比較する。新しいアドレス対と格納されたアドレス対とが一致するとき、新しいアドレス対はtbuf.0およびtbuf.1へ書き込まれず、tbuf.0内の分岐アドレスのLSBが1にセットされる。分岐アドレスのLSBをセットすることにより、その値が0x2002から0x2003へ変化する。
【0039】
ループの第3反復において、レベル1コンパレータ550は、アドレスのLSBを無視して、新しいアドレス対(0x2002,0x200a)を、tbuf.0およびtbuf.1(0x2003,0x200a)内に格納されたアドレス対と比較する。アドレス対が一致するとき、pc.comおよびpc.holdレジスタ内の新しいアドレス対はtbuf.0およびtbuf.1に書き込まれず、tbuf.0およびtbuf.1内のアドレス対が残存する(0x2003,0x200a)。
【0040】
例2(表2)は典型的なレベル2圧縮動作を示す。
【0041】
【表2】
Figure 0003818965
例2におけるプログラム・フローは、命令アドレス0x2000での命令I1への、命令アドレス0x2010での分岐を含む回帰外部ループ、および、命令アドレス0x2002での命令I2への、命令アドレス0x2008での分岐を含む内部ループを含む。
【0042】
内部ループの第1反復の後、tbuf.0は命令アドレス0x2002(分岐アドレス)を含み、tbuf.1は命令アドレス0x200a(分岐アドレス)を含む。内部ループの第2反復において、例1に関して上述したように、レベル1圧縮が生じ、tbuf.0、すなわち0x2002内の分岐アドレスが0x2003にセットされる。
【0043】
一旦内部ループが終了すると、命令アドレス0x2010で分岐命令に遭遇して命令I1に回帰するまで、PCは命令アドレス0x200aにおける命令14へのループから離脱する。外部ループの第1反復において、外部ループの分岐アドレス、すなわち0x2000がtbuf.0に書込まれ、外部のループの分岐アドレス、すなわち0x2010がtbuf.1に書込まれ、そして、tbuf.0およびtbuf.1内のアドレス対(0x2003,0x2008)がtbuf.2およびtbuf.3へシフトされる。内部ループが外部ループの第2反復において遭遇する2度目で、レベル2圧縮が生じる。レベル1コンパレータ550が、状態604で、新しいアドレス対を、tbuf.0およびtbuf.1(0x2000,0x2010)内に格納されたアドレス対と比較する(図6)。これらが一致しないとき、レベル2コンパレータ552が、状態612で、LSBを無視して、新しいアドレス対(0x2002,0x2008)を、tbuf.2およびtbuf.3(0x2003,0x2008)に格納されたアドレス対と比較する。これらのアドレス対が一致するとき、新しいアドレス対はtbuf.0およびtbuf.1へ書き込まれない。レベル2圧縮は、tbuf.3内の分岐アドレスのLSBを0から1にセットし、格納された命令アドレス値を0x2008から0x2009へ変更することによって示される。
【0044】
外部ループの第2反復において、レベル1圧縮が外部ループ上で生じる。レベル1コンパレータ550は、アドレスのLSBを無視して、新しいアドレス対(0x2000,0x2010)を、tbuf.0およびtbuf.1(0x2000,0x2010)に格納されたアドレス対と比較する。新しいアドレス対と格納されたアドレス対とが一致するとき、新しいアドレス対はtbuf.0およびtbuf.1に書き込まれず、tbuf.0内の目標アドレスのLSBが0から1にセットされ、格納された命令アドレス値を0x2000から0x2001へ変更する。
【0045】
DSP110が、パワー・ダウン後にリスタートされるとき、すなわちパワー・オン・リセットの場合、追跡バッファ150は、DSP110がシャット・ダウンされる前に実行されていたプログラム・フローから残存する無効の命令アドレスを含む。実施例によれば、追跡バッファ中の各命令アドレスは、関連する1ビットの有効ビットを有する。有効ビットは、追跡バッファ150内の命令アドレスが現在のプログラム・フローに対して有効か無効かを、それぞれHIGHまたはLOWの値を用いて示す。命令アドレスが無効の場合、それは読取り動作中に追跡メモリ154へ書き込まれない。
【0046】
図7は、追跡バッファ150内の命令アドレスに関連した有効なビットを追跡する有効ビット・バッファ700を図示する。有効ビット・バッファ700は、追跡バッファ150の構造とパラレルな構造を有し、vbuf.0からvbuf.31で示され、それぞれが入力MUX705と関連する、32の1ビット・フリップ・フロップ(FF)を含む。各有効ビット・バッファのための入力MUX705は、リセット・ゲート710を含む。パワー・オン・リセット時に、各有効ビット・バッファFF内の有効ビットは、追跡バッファ150内の対応する命令アドレスが無効であることを示すために0にセットされる。
【0047】
有効ビット・バッファの動作も、追跡バッファの動作とパラレルである。書込み動作時に、pc.comレジスタ510内の分岐アドレスに応答する有効ビットは、FF712からvbuf.0へ転送され、pc.holdレジスタ512内の分岐アドレスに応答する有効ビットは、FF713からvbuf.1へ転送される。追跡バッファ150のように、有効ビットは、書込み動作時に書込みパス714に沿って2つのFFにシフトされ、読取り動作時に読取りパス716に沿って1つのFFにシフトされる。vbuf.0から読み取られた各有効ビットについて、LOW値を有する1ビットの有効ビットが有効ビット生成器720によってvbuf.31に書き込まれ、vbuf.30へシフトされた有効ビットが置き換えられる。
【0048】
多様な実施例に従った追跡バッファは、プログラム・フローのすべての変化を捕える間に、正確な例外を効果的に生成する。さらに、追跡バッファのFIFO/LIFOの構成は、FIFOのみ、またはLIFOのみに必要とされる構成よりも、少ない多重化構成ですむので、それによって、チップ上の追跡バッファ150のためのスペースおよび所要電力が低減する。
【0049】
多くの発明の実施例が記述された。しかしながら、多様な変更が、発明の精神および範囲から逸脱することなく可能であることが理解されるであろう。例えば、32ビット、例えば16ビットまたは64ビット以外の幅を有する命令アドレスは、適切に縮小された追跡バッファ・レジスタおよび読み書きバスを有する追跡バッファを使用して追跡することができる。従って、他の実施例も請求項の範囲内である。
【図面の簡単な説明】
【図1】 実施例に従ったプロセッサを利用するモバイル・ビデオ装置のブロック図である。
【図2】 実施例に従った信号処理システムのブロック図である。
【図3】 実施例に従った他の信号処理システムのブロック図である。
【図4】 実施例に従った、図1中のプロセッサの典型的なパイプライン・ステージを図示する。
【図5】 実施例に従った追跡バッファのブロック図である。
【図6】 実施例に従った図5の追跡バッファのための圧縮動作を示すフロー・チャートである。
【図7】 実施例に従った図5の追跡バッファのための有効ビット・バッファのブロック図である。

Claims (22)

  1. 追跡動作中にフェッチされた命令アドレスを入力および出力するための第1終端レジスタ、第2終端レジスタ、および、前記第1終端レジスタと前記第2終端レジスタとの間に接続された複数の中間レジスタを含む複数の内部接続されたレジスタと、
    前記複数の内部接続されたレジスタにおける書込み動作時に、前記複数の内部接続されたレジスタの1つに存在する命令アドレスを前記第2終端レジスタの方へ2つのレジスタだけシフトするために配置された電気的伝導性リード線の集合からなる書込みパスと、
    前記複数の内部接続されたレジスタにおける読取り動作時に、前記複数の内部接続されたレジスタの1つに存在する命令アドレスを前記第1終端レジスタの方へ1つのレジスタだけシフトするために配置された電気的伝導性リード線の集合からなる読取りパスと、
    第1保持レジスタと、
    第2保持レジスタと、
    前記第1保持レジスタ内のループに対応する新しい分岐先アドレスを、前記第1終端レジスタ内に格納された分岐先アドレスと比較する第1コンパレータと、
    前記第2保持レジスタ内のループに対応する新しい分岐元アドレスを、第1隣接レジスタ内に格納された分岐元アドレスと比較する第2コンパレータであって、前記第1隣接レジスタは前記読取りパスで前記第1終端レジスタに接続されている、第2コンパレータと、
    前記格納された分岐先アドレスと一致する前記新しい分岐先アドレス、および、前記格納された分岐元アドレスと一致する前記新しい分岐元アドレスに応答して、前記第1コンパレータおよび前記第2コンパレータによって実行された比較の結果に基づいて、圧縮指示を生成する圧縮指示回路と、
    から構成されることを特徴とする追跡バッファ回路。
  2. 前記追跡バッファ回路は、前記書込み動作時において先入れ先出し(FIFO)レジスタとして、前記読取り動作時において後入れ先出し(LIFO)レジスタとして動作することを特徴とする請求項1記載の回路。
  3. 前記命令アドレスは、32ビットのワードからなることを特徴とする請求項1記載の回路。
  4. 前記第1および第2終端レジスタの各々および前記複数の内部接続されたレジスタは、32ビットのレジスタからなることを特徴とする請求項3記載の回路。
  5. 前記複数の内部接続されたレジスタは、32個のレジスタを含むことを特徴とする請求項4記載の回路。
  6. 前記書込み動作時に、前記第1終端レジスタおよび隣接レジスタに64ビットのアドレス対を書込むための64ビットの書込みバスと、
    前記読取り動作時に、前記第1終端レジスタから32ビットの命令アドレスを読取るための32ビットの読取りバスと、
    をさらに含むことを特徴とする請求項4記載の回路。
  7. 前記圧縮指示回路は、前記格納された分岐先アドレスに一致する前記新しい分岐先アドレスおよび前記格納された分岐元アドレスに一致する前記新しい分岐元アドレスに応答して、前記第1コンパレータおよび前記第2コンパレータによって実行された比較の結果に基づいて、前記格納された分岐先アドレスの最下位ビットを設定することを特徴とする請求項1記載の回路。
  8. 前記複数のレジスタ中の第2隣接レジスタであって、前記第2隣接レジスタは前記読取りパスで前記第1隣接レジスタに接続される、第2隣接レジスタと、
    前記複数のレジスタ中の第3隣接レジスタであって、前記第3隣接レジスタは前記読取りパスで前記第2隣接レジスタに接続される、第3隣接レジスタと、
    前記第1保持レジスタ内の前記新しい分岐先アドレスを、前記第2隣接レジスタ内の第2の格納された分岐先アドレスと比較する第3コンパレータと、
    前記第2保持レジスタ内の前記新しい分岐元アドレスを、前記第3隣接レジスタ内の第2の格納された分岐元アドレスと比較する第4コンパレータと、
    から構成され、
    前記圧縮指示回路は、前記第2隣接レジスタ内の前記第2の格納された分岐先アドレスに一致する前記新しい分岐先アドレスおよび前記第3隣接レジスタ内の前記第2の格納された分岐元アドレスに一致する新しい分岐元アドレスに応答して、前記第3コンパレータおよび前記第4コンパレータによって実行された比較の結果に基づいて、圧縮指示を生成することを特徴とする請求項1記載の回路。
  9. 前記圧縮指示回路は、前記第2隣接レジスタ内の前記格納された分岐先アドレスに一致する前記新しい分岐先アドレスおよび前記第3隣接レジスタ内の前記格納された分岐元アドレスに一致する前記新しい分岐元アドレスに応答して前記第3隣接レジスタ内の前記格納された分岐元アドレスの最下位ビットを設定することを特徴とする請求項8記載の回路。
  10. 有効ビットを有効ビット・バッファから入力および出力するための第1終端フリップフロップと、
    第2終端フリップフロップと、
    前記第1終端フリップフロップと前記第2終端フリップフロップとの間に接続された複数の内部接続されたフリップフロップと、
    書込み動作時に、前記複数の内部接続されたフリップフロップの1つに存在する有効ビットを2つのフリップフロップだけ下流のフリップフロップにシフトさせるために配置された電気的伝導性リード線の集合からなる書込みパスと、
    読取り動作時に、前記有効ビットを1つのフリップフロップだけ上流のフリップフロップにシフトさせるために配置された電気的伝導性リード線の集合からなる読取りパスと、
    から構成される有効ビット・バッファをさらに含むことを特徴とする請求項1記載の回路。
  11. パイプライン方式のデジタル信号プロセッサと、
    前記パイプライン方式のデジタル信号プロセッサに接続された追跡バッファ回路を含む装置において、前記追跡バッファ回路は、
    追跡動作中に前記パイプライン方式のデジタル信号プロセッサによってフェッチされた命令アドレスを入力および出力するための第1終端レジスタ、第2終端レジスタ、および、前記第1終端レジスタと前記第2終端レジスタとの間に接続される複数の中間レジスタを含む複数の内部接続されたレジスタと、
    前記複数の内部接続されたレジスタにおける書込み動作時に、前記複数の内部接続されたレジスタの1つに存在する命令アドレスを前記第2終端レジスタの方へ2つのレジスタだけシフトするために配置された電気的伝導性リード線の集合からなる書込みパスと、
    前記複数の内部接続されたレジスタにおける読取り動作時に、前記命令アドレスを前記第1終端レジスタの方へ1つのレジスタだけシフトするために配置された電気的伝導性リード線の集合からなる読取りパスと、
    を含むことを特徴とする装置。
  12. 前記追跡バッファ回路は、前記書込み動作時において先入れ先出し(FIFO)レジスタとして、前記読取り動作時において後入れ先出し(LIFO)レジスタとして動作することを特徴とする請求項11記載の装置。
  13. 前記命令アドレスは、32ビットのワードからなることを特徴とする請求項11記載の装置。
  14. 前記第1および第2終端レジスタの各々および前記複数の内部接続されたレジスタは、32ビットのレジスタからなることを特徴とする請求項13記載の装置。
  15. 前記書込み動作時に、前記第1終端レジスタおよび隣接レジスタに64ビットのアドレス対を書込むための64ビットの書込みバスと、
    前記読取り動作時に、前記第1終端レジスタから32ビットの命令アドレスを読取るための32ビットの読取りバスと、
    をさらに含むことを特徴とする請求項14記載の装置。
  16. データ・プロセッサおよび追跡バッファを含む機械で実行される方法であって、
    前記データ・プロセッサによってフェッチされた命令を前記追跡バッファに格納する段階を含む追跡動作を実行する段階であって、前記追跡バッファは、前記データ・プロセッサによってフェッチされた命令アドレスを入力および出力するための第1終端レジスタ、第2終端レジスタ、前記第1終端レジスタと前記第2終端レジスタとの間に接続される複数の中間レジスタ、書込み動作時に、命令アドレスを前記第2終端レジスタの方へ2つのレジスタだけシフトするために配置された電気的伝導性リード線の集合からなる書込みパス、および、読取り動作時に、前記命令アドレスを前記第1終端レジスタの方へ1つのレジスタだけシフトするために配置された電気的伝導性リード線の集合からなる読取りパスを含み、前記格納する段階は、前記追跡バッファ内のループに対応するアドレス対を格納する段階を含む、追跡動作を実行する段階と、
    前記追跡バッファによって圧縮動作を実行する段階であって、
    コンパレータによって前記格納されたアドレス対を新しいアドレス対と比較する段階であって、前記新しいアドレス対は前記データ・プロセッサから前記追跡バッファによって受信される、段階、および
    前記格納されたアドレス対に一致する前記新しいアドレス対に応答して、前記コンパレータによって実行された比較の結果に基づいて、前記格納されたアドレス対のアドレスに最下位ビットを設定する段階、
    を含む、圧縮動作を実行する段階と、
    から構成されることを特徴とする方法。
  17. 前記格納されたアドレス対に一致する前記新しいアドレス対に応答して、前記コンパレータによって実行された比較の結果に基づいて、前記新しいアドレス対を前記追跡バッファから放棄する段階をさらに含むことを特徴とする請求項16記載の方法。
  18. 前記追跡バッファ中の第1のレジスタ対に格納されたアドレス対を格納する段階と、
    前記コンパレータによって前記新しいアドレス対を前記格納されたアドレス対と比較する段階と、
    をさらに含むことを特徴とする請求項16記載の方法。
  19. 前記新しいアドレス対が前記格納された対と一致しないことに応答して、前記コンパレータによって実行された比較の結果に基づいて、前記新しいアドレス対を前記追跡バッファ中の前記第1のレジスタ対に書込む段階をさらに含むことを特徴とする請求項18記載の方法。
  20. 前記追跡バッファ中の第2コンパレータによって、前記新しいアドレス対を前記追跡バッファにおける第2のレジスタ対中の第2の格納されたアドレス対と比較する段階であって、前記第2のレジスタ対は前記第1のレジスタ対に隣接する、段階と、
    前記第2の格納されたアドレス対に一致する前記新しいアドレス対に応答して、前記第2コンパレータによって実行された比較の結果に基づいて、前記第2の格納されたアドレス対中のアドレスの最下位ビットを設定する段階と、
    前記第2の格納されたアドレス対に一致しない前記新しいアドレス対に応答して、前記第2コンパレータによって実行された比較の結果に基づいて、前記第1のレジスタ対に前記新しいアドレス対を書込む段階と、
    をさらに含むことを特徴とする請求項18記載の方法。
  21. 前記第2の格納されたアドレス対に一致する新しいアドレス対に応答して、前記第2コンパレータによって実行された比較の結果に基づいて、前記新しいアドレス対を放棄する段階をさらに含むことを特徴とする請求項20記載の方法。
  22. 前記第2のアドレス対中の前記アドレスは、分岐元アドレスを含むことを特徴とする請求項20記載の方法。
JP2002530994A 2000-09-29 2001-09-26 ソフトウェアおよびハードウェアのループ圧縮を有するfifo書込み/lifo読取り追跡バッファ Expired - Fee Related JP3818965B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/675,569 US7155570B1 (en) 2000-09-29 2000-09-29 FIFO write/LIFO read trace buffer with software and hardware loop compression
PCT/US2001/042367 WO2002027483A2 (en) 2000-09-29 2001-09-26 Trace buffer for loop compression

Publications (2)

Publication Number Publication Date
JP2004510248A JP2004510248A (ja) 2004-04-02
JP3818965B2 true JP3818965B2 (ja) 2006-09-06

Family

ID=24711058

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002530994A Expired - Fee Related JP3818965B2 (ja) 2000-09-29 2001-09-26 ソフトウェアおよびハードウェアのループ圧縮を有するfifo書込み/lifo読取り追跡バッファ

Country Status (6)

Country Link
US (1) US7155570B1 (ja)
JP (1) JP3818965B2 (ja)
KR (1) KR100509009B1 (ja)
CN (1) CN100346293C (ja)
TW (1) TWI249129B (ja)
WO (1) WO2002027483A2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE0403128D0 (sv) * 2004-12-22 2004-12-22 Xelerated Ab A method for a processor, and a processor
FR2882832A1 (fr) * 2005-03-04 2006-09-08 St Microelectronics Sa Dispositif de generation de suivi de branchement pour microprocesseur et microprocesseur dote d'un tel dispositif
US7475231B2 (en) * 2005-11-14 2009-01-06 Texas Instruments Incorporated Loop detection and capture in the instruction queue
KR100847727B1 (ko) 2007-01-22 2008-07-23 삼성전자주식회사 실시간 패킷 수신을 위한 장치 및 방법
US8473946B2 (en) 2008-07-03 2013-06-25 Vmware, Inc. Efficient recording and replaying of non-deterministic instructions in a virtual machine and CPU therefor
US9524227B2 (en) 2014-07-09 2016-12-20 Intel Corporation Apparatuses and methods for generating a suppressed address trace
US10175912B1 (en) 2017-07-05 2019-01-08 Google Llc Hardware double buffering using a special purpose computational unit

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS50120529A (ja) 1974-03-08 1975-09-20
US3975717A (en) 1974-09-09 1976-08-17 Burroughs Corporation Charge coupled device stack memory organization and refresh method
JPS58103047A (ja) 1981-12-16 1983-06-18 Hitachi Ltd 命令トレ−ス装置
US5161217A (en) 1986-10-14 1992-11-03 Bull Hn Information Systems Inc. Buffered address stack register with parallel input registers and overflow protection
JPH0272440A (ja) 1988-09-07 1990-03-12 Nec Corp プログラム実行ステップ観測方式
JPH0748183B2 (ja) 1989-09-28 1995-05-24 横河電機株式会社 トレース回路
JPH05134848A (ja) * 1991-03-06 1993-06-01 Fujitsu Ltd 中央処理装置のデータシフト回路
JPH05100900A (ja) 1991-10-09 1993-04-23 Nec Corp 情報処理装置
JPH05324396A (ja) 1992-05-19 1993-12-07 Fujitsu Ltd プログラム走行履歴記録方式
US6094729A (en) * 1997-04-08 2000-07-25 Advanced Micro Devices, Inc. Debug interface including a compact trace record storage
US6460119B1 (en) * 1997-12-29 2002-10-01 Intel Corporation Snoop blocking for cache coherency
JPH11306044A (ja) 1998-04-22 1999-11-05 Hitachi Ltd データプロセッサ
EP1039386A1 (en) 1999-03-19 2000-09-27 Motorola, Inc. Computer system with trace unit, and method therefor

Also Published As

Publication number Publication date
WO2002027483A2 (en) 2002-04-04
CN100346293C (zh) 2007-10-31
TWI249129B (en) 2006-02-11
KR100509009B1 (ko) 2005-08-18
WO2002027483A3 (en) 2003-09-25
US7155570B1 (en) 2006-12-26
JP2004510248A (ja) 2004-04-02
CN1541356A (zh) 2004-10-27
KR20030036856A (ko) 2003-05-09

Similar Documents

Publication Publication Date Title
US6754808B1 (en) Valid bit generation and tracking in a pipelined processor
US5880979A (en) System for providing the absolute difference of unsigned values
JP3818965B2 (ja) ソフトウェアおよびハードウェアのループ圧縮を有するfifo書込み/lifo読取り追跡バッファ
US6789184B1 (en) Instruction address generation and tracking in a pipelined processor
CN1219252C (zh) 支持可变长度指令执行的方法和设备
JP3692115B2 (ja) 命令幅に基づく効率的なエミュレーションの実行
US6976151B1 (en) Decoding an instruction portion and forwarding part of the portion to a first destination, re-encoding a different part of the portion and forwarding to a second destination
JP3844465B2 (ja) イベント・ベクトル・テーブルのオーバーライド
JP3704519B2 (ja) 命令解読のための複数のソース
US7069420B1 (en) Decode and dispatch of multi-issue and multiple width instructions
JPH09282000A (ja) データ処理回路
JPH09326707A (ja) 可変長符号復号化演算処理装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050224

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050523

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20051111

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060310

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20060330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060511

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060511

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: 20060608

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060613

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313117

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090623

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090623

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100623

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100623

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110623

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120623

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120623

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130623

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees