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