(57)【特許請求の範囲】
【請求項１】
デジタル信号処理ファンクションを実行する中央処理装置であって、
複数の命令を記憶するための命令メモリを含み、前記命令メモリがデジタル信号処理ファンクションを実行することを意図される１または複数の命令のシーケンスを記憶し、さらに
前記命令メモリに結合されたファンクションプリプロセッサを含み、前記ファンクションプリプロセッサが、
前記命令メモリ内に記憶された前記１またはそれ以上の命令のシーケンスを調べるための手段と、
前記命令メモリにおける前記命令のシーケンスがデジタル信号処理ファンクションを実行することを意図されるかどうかを決定するための手段と、
デジタル信号処理ファンクションを実行することを意図される、前記命令メモリ内の前記命令のシーケンスを、デジタル信号処理ファンクション識別子に変換するための手段とを含み、前記中央処理装置はさらに、
前記ファンクションプリプロセッサに結合されて前記命令メモリ中の命令を実行するための少なくとも１つの汎用処理コアと、
ファンクションプリプロセッサに結合されてデジタル信号処理ファンクションを実行するための少なくとも１つのデジタル信号処理コアとを含み、前記少なくとも１つのデジタル信号処理コアが前記デジタル信号処理ファンクション識別子を受けかつ前記ファンクションプリプロセッサから受けた前記デジタル信号処理ファンクション識別子に応答して、デジタル信号処理ファンクションを実行する、中央処理装置。
【請求項２】
前記命令メモリが、デジタル信号処理ファンクションを実行しない第１の命令シーケンスを記憶し、かつ前記命令メモリがデジタル信号処理ファンクションを実行する第２の命令シーケンスを記憶し、
前記少なくとも１つの汎用処理コアが前記第１の命令シーケンスを実行し、
前記少なくとも１つのデジタル信号処理コアが前記受取ったデジタル信号処理ファンクション識別子に応答して前記デジタル信号処理ファンクションを実行し、前記デジタル信号処理コアにより実行される前記デジタル信号処理ファンクションが前記第２の命令のシーケンスの実行に実質的に等価である、請求項１に記載の中央処理装置。
【請求項３】
前記少なくとも１つのデジタル信号処理コアが、前記少なくとも１つの汎用処理コアに対しデータおよびタイミング信号を与える、請求項１に記載の中央処理装置。
【請求項４】
前記ファンクションプリプロセッサが、前記命令メモリ内の前記命令シーケンスがデジタル信号処理ファンクションを実行することが意図されていると前記決定手段が決定したことに応答して、デジタル信号処理ファンクション識別子または１またはそれ以上のパラメータを発生する、請求項１に記載の中央処理装置。
【請求項５】
前記少なくとも１つの汎用処理コアがＸ８６ファミリのマイクロプロセッサと互換性がある、請求項１に記載の中央処理装置。
【請求項６】
前記複数の命令がＸ８６オペコードである、請求項５に記載の中央処理装置。
【請求項７】
前記少なくとも１つのデジタル信号処理コアが、畳み込み、相関、高速フーリエ変換および内積からなるグループのうち１または２以上の数学的演算を実行するようになっている、請求項１に記載の中央処理装置。
【請求項８】
前記少なくとも１つの汎用処理コアおよび前記少なくとも１つのデジタル信号処理コアが実質的に並列に動作する、請求項１に記載の中央処理装置。
【請求項９】
中央処理装置（ＣＰＵ）において命令を実行するための方法であって、ＣＰＵが、少なくとも１つの汎用ＣＰＵコアおよび少なくとも１つのデジタル信号処理（ＤＳＰ）コアを含み、前記方法が、
前記中央処理装置が実行する、１またはそれ以上の命令のシーケンスを命令メモリ内に記憶するステップと、
前記命令メモリ内の命令のシーケンスを調べるステップと、
前記命令メモリ内の前記命令のシーケンスがデジタル信号処理ファンクションを実現することを意図されているかどうかを決定するステップと、
デジタル信号処理ファンクションを実行することが意図されている前記命令メモリ内の前記命令のシーケンスをデジタル信号処理ファンクション識別子に変換するステップとを含み、
前記デジタル信号処理コアが前記デジタル信号処理ファンクション識別子を受け、
前記デジタル信号処理コアが前記受取ったデジタル信号処理ファンクション識別子に応答して、デジタル信号処理ファンクションを実行する、方法。
【請求項１０】
前記記憶するステップが、第１のデジタル信号処理ファンクションを実行する前記命令メモリ内の第１の命令のシーケンスを含み、
前記記憶するステップが、デジタル信号処理ファンクションを実現しない前記命令メモリ内の第２の第２の命令のシーケンスを記憶するステップを含み、
前記変換するステップが、前記第１のデジタル信号処理ファンクションを実行することを意図される前記命令メモリ内の前記第１の命令のシーケンスを、第１のデジタル信号処理ファンクション識別子に変換し、
前記実行するステップは、前記第１のデジタル信号処理ファンクション識別子に応答して、前記第１のデジタル信号処理ファンクションを実行する前記デジタル信号処理コアを含み、前記第１のデジタル信号処理ファンクションを実行するステップが、前記第１の命令のシーケンスの実行に実質的に等価であり、かつ
前記汎用中央処理装置が、前記第２の命令のシーケンスを実行する、請求項９に記載の方法。
【請求項１１】
前記デジタル信号処理コアおよび前記汎用中央処理装置コアが実質的に並列に動作する、請求項１０に記載の方法。
【請求項１２】
前記デジタル信号処理コアが、前記汎用中央処理装置コアに対してデータおよびタイミング信号を与える、請求項１０に記載の方法。
【請求項１３】
前記ファンクションプリプロセッサが、前記命令メモリ内の前記命令のシーケンスがデジタル信号処理ファンクションを実行することを意図されるという前記決定に応答して、デジタル信号処理ファンクション識別子および１またはそれ以上のパラメータを発生する請求項９に記載の方法。
【請求項１４】
前記汎用中央処理装置コアがＸ８６ファミリのマイクロプロセッサと互換性がある、請求項９に記載の方法。
【請求項１５】
前記１またはそれ以上の命令のシーケンスがＸ８６オペコードを含む、請求項１４に記載の方法。
【請求項１６】
前記デジタル信号処理コアが、畳み込み、相関、高速フーリエ変換および内積からなるグループのうちの１または２以上の数学的演算を実行する、請求項９に記載の方法。
【発明の詳細な説明】
発明の名称
Ｘ８６・ＤＳＰコアを有しかつＸ８６命令をＤＳＰ命令へマッピングするＤＳＰファンクションデコーダを備える中央処理装置
発明の分野
本発明は、汎用コアおよびＤＳＰコアを備えるコンピュータシステムＣＰＵまたはマイクロプロセッサに関し、同ＣＰＵは、ＤＳＰ型ファンクションを行なうことを意図した汎用オペコードシーケンスを検出して、これらオペコードをＤＳＰコアが実行する対応のＤＳＰマクロに変換するＤＳＰファンクションデコーダを備える。
関連技術の説明
パーソナルコンピュータシステムおよび汎用マイクロプロセッサは、元来特にワードプロセッサおよび表計算等のビジネスアプリケーション用に開発されたものである。しかしながら、コンピュータシステムは、現在数々のリアルタイムのＤＳＰ関連アプリケーションを取扱うために使用されており、それらのアプリケーションには、映像およびオーディオコンポーネントを有するマルチメディアアプリケーション、映像の取込みおよび再生、テレホニーアプリケーション、音声認識および合成ならびに通信アプリケーションなどが含まれる。これらリアルタイムまたはＤＳＰ的アプリケーションは、典型的により高いＣＰＵ浮動小数点性能を必要とする。
そこで生じた１つの問題は、もともとビジネスアプリケーション用に設計されている汎用マイクロプロセッサが、このようなマルチメディアアプリケーションおよび通信アプリケーション等の現代のＤＳＰ関連のアプリケーションのリアルタイムの要件や数学的計算要件にはあまり適していない点である。たとえば、インテル社のＸ８６ファミリのマイクロプロセッサは、整数系の計算およびメモリ管理演算を指向しており、ＤＳＰファンクションに関する性能はあまり高くない。
パーソナルコンピュータシステムが、よりリアルタイムでかつマルチメディアが可能なシステムに発展するにつれて、汎用ＣＰＵは応じて数学的により程度の高いＤＳＰ型ファンクションを実行することが求められるようになった。したがって、コンピュータシステムの多くは、現在、これら複雑な数学的ファンクション専用の１またはそれ以上のデジタル信号プロセッサを備えている。
コンピュータシステムアーキテクチャにおける現在のトレンドの１つは、「ネイティブ信号処理（ＮＳＰ）」へ向けての動きである。ネイティブ信号処理、すなわちＮＳＰは、もともと、ＤＳＰからあるいくつかのファンクションをオフロードしてこれらのファンクションを主または汎用ＣＰＵ内で行なうための戦略としてインテル社が導入したものである。この戦略では、汎用ＣＰＵの性能とクロック速度とが向上すると、これまで専用ＤＳＰが実行していたファンクションの多くを汎用ＣＰＵで実行できると仮定している。したがって、マイクロプロセッサ産業におけるトレンドの１つは、より速度が速くかつより強力な浮動小数点装置などＤＳＰ型能力を強化したＣＰＵ設計を提供する努力である。同産業におけるもう１つのトレンドは、ＤＳＰの製造業者による、高速で作動するのみならず、メモリ管理ファンクション等のＣＰＵ型能力をもエミュレートすることができるＤＳＰの提供である。
デジタル信号プロセッサとはつまるところ、マイクロプロセッサでは通常考えられない速度および効率でファンクションを実行するための特別なハードウェアを備える汎用マイクロプロセッサである。現在のコンピュータシステムアーキテクチャにおいては、ＤＳＰは、コプロセッサとして使用され、かつシステム内の汎用ＣＰＵに関連して動作する。たとえば、現在のコンピュータシステムは、主ＣＰＵとして汎用ＣＰＵを含みかつ専用ＤＳＰを備える１または複数のマルチメディアまたは通信拡張カードを備え得る。ＣＰＵは、ファンクションをデジタル信号プロセッサにオフロードして、システムの効率を高める。
デジタル信号プロセッサは、複雑な数学的アルゴリズムをパイプライン方式で実現するハードウェア乗算器に結合された１または複数の演算論理ユニット（ＡＬＵ）を備える実行装置を含む。その命令セットは、主としてＤＳＰ型命令を含みかつまた非ＤＳＰ機能を有する少数の命令を含む。
ＤＳＰは、さまざまな演算のうち、相関、畳み込み、有限インパルス応答（ＦＩＲ）フィルタ、無限インパルス応答（ＩＩＲ）フィルタ、高速フーリエ変換（ＦＦＴ）、行列計算、および内積等の数学的アルゴリズムに最適化されている。これら数学的アルゴリズムの実現には、一般に組織的な算術／乗法演算の長いシーケンスを含む。これらの演算は、さまざまな機会に決定型コマンドにより割込みを受ける。一般に、ＤＳＰシーケンスは、７０％から９０％までの時間割合で実行される命令の非常に小さな集合の繰返しである。命令のうち残りの１０％から３０％は主としてブール／決定演算（または一般的なデータ処理）である。
汎用ＣＰＵは、実行ユニット、メモリ管理ユニット、および浮動小数点ユニットを他の論理と併せて備える。汎用ＣＰＵのタスクは、コードを実行し、コンピュータメモリ内のデータに対し演算を行なって、計算プラットホームを管理することである。一般に、汎用ＣＰＵアーキテクチャは、基本的にブール／管理／データ操作決定演算を行なうように設計されている。汎用ＣＰＵが実行する命令またはオペコードは、基本的な数学的ファンクションを含む。しかしながら、これら数学的ファンクションは、ＤＳＰ型演算にはあまり適応していない。したがって、汎用ＣＰＵは基本的なＤＳＰファンクションを実行するために多数のオペコードまたは命令を実行しなければならない。
したがって、汎用ＣＰＵを含みかつまたより高い性能でＤＳＰ型ファンクションをも実行するコンピュータシステム・ＣＰＵアーキテクチャが求められる。また、すべての数学的計算を汎用ＣＰＵが行なうことを前提とする既存のソフトウェアアプリケーションについて旧版互換性を有するＣＰＵアーキテクチャが求められる。さらに、既存のソフトウェアアプリケーションについてより高い数学的性能を提供する新たなＣＰＵアーキテクチャも求められている。
パーソナルコンピュータシステムにおいて使用される、一般に普及したマイクロプロセッサの１つにＸ８６ファミリのマイクロプロセッサがある。Ｘ８６ファミリのマイクロプロセッサは、インテル社の８０８８、８０８６、８０１８６、８０２８６、８０３８６、ｉ４８６、ペンティアム、およびＰ６マイクロプロセッサを含む。Ｘ８６ファミリのマイクロプロセッサにはまたアドバンスト・マイクロ・デバイシィズの４４８６およびＫ５プロセッサ、サイリックス社（Syrix）のＭ１プロセッサおよびNextGen社のNextGen５ｘ８６および６ｘ８６プロセッサが含まれる。これらＸ８６ファミリのマイクロプロセッサは、基本的にビジネスアプリケーション用に設計開発されたものである。一般に、Ｘ８６ファミリのマイクロプロセッサの命令セットは、今日のマルチメディアおよび通信アプリケーションに十分な数学的またはＤＳＰ機能性を備えていない。したがって、今日のＸ８６プロセッサより効率的にＤＳＰファンクションを実行し、しかもＸ８６プロセッサ用の新たなオペコードを必要としない新しいＸ８６ＣＰＵアーキテクチャがさらに求められている。
発明の概要
本発明は、Ｘ８６コア等の汎用ＣＰＵコンポーネントを含みかつその上ＤＳＰコアを含むＣＰＵまたはマイクロプロセッサを含む。このＣＰＵは、命令またはオペコード（Ｘ８６オペコード）のシーケンスを調べて、ＤＳＰファンクションが実行されているかどうかを判断するインテリジェントＤＳＰファンクションデコーダまたはプリプロセッサを含む。ＤＳＰファンクションが実行されていると判断すると、ＤＳＰファンクションデコーダは、命令シーケンスを、ＤＳＰコアに与えるＤＳＰマクロ命令またはファンクション識別子に変換またはマッピングする。ＤＳＰコアは１またはそれ以上のＤＳＰ命令を実行して、ＤＳＰマクロまたはファンクション識別子により指示される所望のＤＳＰファンクションを実行する。ＤＳＰコアは、汎用ＣＰＵコアが実行する他の演算と並列でＤＳＰファンクションを実現する。ＤＳＰコアはまたより少ない数の命令を用いかつより少ない数のクロックサイクルでＤＳＰファンクションを実行するので、システムの性能が向上する。
好ましい実施例においては、本発明のＣＰＵは、システムメモリからマイクロプロセッサの命令またはオペコードを受け、これらオペコードをＣＰＵの使用に備えて記憶する命令メモリまたは命令キャッシュを含む。ＣＰＵはまた命令シーケンスプリプロセッサとも呼ばれるＤＳＰファンクションデコーダまたはプリプロセッサを含み、同プリプロセッサは命令キャッシュ内の命令シーケンスを分析し、ＤＳＰ型ファンクションがいつ命令シーケンスにより実現または表わされるかをインテリジェントに判断する。このファンクションプリプロセッサは、ＤＳＰファンクションを実現する命令キャッシュ内の命令シーケンスについて事前にスキャンを行なう。
一実施例においては、ファンクションプロセッサは、ＤＳＰファンクションを実行する命令シーケンスを表わす複数のビットパターンを記憶するパターン認識検出器を含む。同パターン認識検出器は、命令シーケンスを備える各パターンを比較し、パターンの１つが命令シーケンスと実質的に一致するかどうかを判断する。一実施例においては、あるパターンが命令シーケンスに９０％以上一致すれば実質的な一致が発生する。他の実施例においては、ファンクションプリプロセッサは、ＤＳＰファンクションを実行する命令シーケンスを表わす複数のビットパターンエントリを記憶するルックアップテーブルを含む。ファンクションプリプロセッサは、各パターンエントリを命令シーケンスと比較して、エントリのうちの１つが命令シーケンスと正確に一致するかどうかを判断する。他の実施例では、ルックアップテーブルとパターン認識検出器とによる２段階の判断が含まれる。
好ましい実施例においては、ファンクションプリプロセッサは、畳み込み、相関、高速フーリエ変換（ＦＦＴ）、有限インパルス応答（ＦＩＲ）フィルタ、無限インパルス応答（ＩＩＲ）フィルタ、内積および行列操作演算等のＤＳＰ型ファンクションを実行することを意図されるＸ８６命令シーケンスを検出する。
命令キャッシュまたは命令メモリ内の命令がＤＳＰ型ファンクションを実現しない場合には、現在の先行技術のコンピュータシステムでも行なわれているように、命令は、汎用もしくはＸ８６コアまたは１または複数のＸ８６実行ユニットへ与えられる。そこで、Ｘ８６コアは、ＤＳＰファンクションを表わさない汎用Ｘ８６命令を実行する。
ＤＳＰファンクションを実現する、すなわちＤＳＰ型ファンクションを実行することを意図されるＸ８６命令のシーケンスを検出した際には、ファンクションプリプロセッサはこのＸ８６命令のシーケンスをデコードして、同Ｘ８６命令のシーケンスが示すファンクションを表わす単一のマクロまたはファンクション識別子を発生する。ファンクションプリプロセッサは、また、Ｘ８６命令シーケンス中の情報を調べて、ＤＳＰ型ファンクションに使用されているデータ値を表わす０または１以上のパラメータを発生する。ファンクションプリプロセッサは、そこで、ファンクション識別子およびさまざまな必要なパラメータをＤＳＰコアまたは１もしくはそれ以上のＤＳＰ実行ユニットへ与える。
ＤＳＰコアは、マクロまたはファンクション識別子およびそれぞれのパラメータを受け、それらマクロを表示されたＤＳＰファンクションを実現するＤＳＰマイクロコードシーケンスへのインデックスとして使用する。ＤＳＰコアは、また、ＤＳＰファンクションを実行する上でこれらそれぞれのパラメータを使用する。ＤＳＰコアは、これらＤＳＰ型演算に最適化されているので、一般により少ない数の命令およびクロックサイクルで所望のファンクションを実行することができる。
ＤＳＰコアは、汎用ＣＰＵコアと並列で実行する。したがって、Ｘ８６（非ＤＳＰ）オペコードは、データの独立性が存在すると仮定すれば、ＤＳＰファンクションと並列に、汎用ＣＰＵコアまたはＸ８６コアにより実行できる可能性がある。汎用コアおよびＤＳＰコアは相互に結合され、同期化の目的でデータおよびタイミング信号をやり取りする。一実施例においては、キャッシュまたはバッファを汎用コアとＤＳＰコアとの間に設けて、これら２つの装置間の情報の転送を行なう。
こうして、汎用ＣＰＵ部が先行技術のシステムと同様Ｘ８６命令を実行する。しかしながら、ＤＳＰ型ファンクションを実行することを意図されるこれら命令シーケンスについては、ファンクションプリプロセッサがこれらシーケンスをインテリジェントに検出しＤＳＰコアに対して対応のマクロおよびパラメータを与える。こうして、ＤＳＰコアはこれらファンクションを汎用コアからオフロードするので、システムの性能が向上する。ＤＳＰコアは、また、汎用コアと並列に動作するので、性能上さらに利点が提供される。
したがって、本発明は、ＤＳＰ演算を行なうＤＳＰコアを備える汎用ＣＰＵを含む。同ＣＰＵは、命令シーケンスを調べて、ＤＳＰファンクションを行なうシーケンスをＤＳＰコアによる実行のためＤＳＰマクロ命令へ変換またはマッピングする。ＤＳＰコアは、ＤＳＰマクロ命令を使用して、所望のＤＳＰファンクションを実現する。ＤＳＰコアは、より少ない数の命令でかつより少ない数のクロックサイクルでＤＳＰファンクションを実現または実行するので、システムの性能が向上する。本発明のＣＰＵは、こうして、Ｘ８６論理よりも効率的にＤＳＰファンクションを実現し、その一方で新たなＸ８６オペコードを必要としない。本発明のＣＰＵは、また、Ｘ８６のみのＣＰＵ上で作用するコードをも実行するので、既存のソフトウェアとの旧版互換性が提供される。さらに、本発明のＣＰＵ用に作成されたコードは、Ｘ８６のみのＣＰＵ上においても適切に動作する。
【図面の簡単な説明】
以下の好ましい実施例の詳細な説明を以下の図面とともに参照すれば本発明のよりよい理解が得られる。
図１は、本発明による、汎用ＣＰＵコアおよびＤＳＰコアを有するＣＰＵを備えるコンピュータシステムのブロック図である。
図２は、本発明による、汎用ＣＰＵコアおよびＤＳＰコアを含みかつＤＳＰファンクションプリプロセッサを含む図１のＣＰＵのブロック図である。
図３は、本発明の動作を示すフローチャート図である。
図４は、図１のＣＰＵのより詳細なブロック図である。
図５は、図４の命令デコードユニットのブロック図である。
図６は、本発明の一実施例によるファンクションプリプロセッサのブロック図である。
図７は、本発明の一実施例によるパターン認識検出器を含むファンクションプリプロセッサのブロック図である。
図８は、図７のパターン認識検出器の動作を示す図である。
図９は、本発明の一実施例によるルックアップテーブルを含むファンクションプリプロセッサのブロック図である。
図１０は、図９のルックアップテーブルの動作を示す図である。
図１１は、本発明の一実施例によるパターン認識検出器およびルックアップテーブルを含むファンクションプリプロセッサのブロック図である。
好ましい実施例の詳細な説明
コンピュータシステムブロック図
さて、図１には、本発明による中央処理装置（ＣＰＵ）またはマイクロプロセッサ１０２を取入れたコンピュータシステムのブロック図が示される。図１のコンピュータシステムは、例示目的のみのものであり、本発明のＣＰＵ１０２は、さまざまなタイプのコンピュータシステムのいずれにも組込むことができる。
図示のＣＰＵ１０２は、汎用ＣＰＵコア２１２とＤＳＰコア２１４とを含む。以下に説明するとおり、汎用コア２１２は、汎用（非ＤＳＰ）オペコードを実行し、かつＤＳＰコア２１４は、ＤＳＰ型ファンクションを実行する。好ましい実施例においては、汎用ＣＰＵコア２１２はＸ８６コアであり、すなわちＸ８６ファミリのマイクロプロセッサと互換性がある。しかしながら、汎用ＣＰＵコア２１２は、他のタイプのＣＰＵのいずれでもよく、それらＣＰＵには、特に、パワーＰＣファミリ、ＤＥＣアルファおよびサンスパークファミリのプロセッサが含まれる。以下の開示においては、汎用ＣＰＵコア２１２を便宜上Ｘ８６コアと呼ぶことにする。汎用コア２１２は、１または複数の汎用実行ユニットを含み、かつＤＳＰコア２１４は、１または複数のデジタル信号処理実行ユニットを含み得る。
図示のとおり、ＣＰＵ１０２は、ＣＰＵローカルバス１０４を介してホスト／ＰＣＩ／キャッシュブリッジすなわちチップセット１０６に結合される。チップセット１０６は、好ましくはインテル社から入手可能なトリトンチップセットと類似するものである。第２レベルすなわちＬ２キャッシュメモリ（図示せず）を必要に応じてチップセット中のキャッシュコントローラに結合することができる。また、いくつかのプロセッサについては、外部キャッシュはＬ１すなわち第１レベルのキャッシュでよい。ブリッジすなわちチップセット１０６はメモリバス１０８を介して主メモリ１１０に結合する。主メモリ１１０は、所望に応じて、好ましくはＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）またはＥＤＯ（拡張データ出力）メモリまたは他のタイプのメモリである。
チップセット１０６は、割込みシステム、リアルタイムクロック（ＲＴＣ）およびタイマ、直接メモリアクセス（ＤＭＡ）システム、ＲＯＭ／フラッシュメモリ、通信ポート、診断ポート、コマンド／ステータスレジスタ、および不揮発性スタティック・ランダム・アクセス・メモリ（ＮＶＳＲＡＭ）（いずれも図示せず）を含むさまざまな周辺装置を含む。
ホスト／ＰＣＩ／キャッシュブリッジすなわちチップセット１０６は、周辺コンポーネント相互接続（ＰＣＩ）バス１２０にインターフェイスする。好ましい実施例では、ＰＣＩローカルバスを使用するが、ＶＥＳＡ（ビデオ・エレクトロニクス・スタンダーズ・アソシエーション）ＶＬバス等の他のローカルバスを使用してもよい点に留意されたい。さまざまなタイプの装置をＰＣＩバス１２０に接続できる。図１に示す実施例においては、映像／グラフィックスコントローラまたはアダプタ１７０およびネットワークインターフェイスコントローラ１４０をＰＣＩバス１２０に結合する。映像アダプタは、映像モニタ１７２に接続し、かつネットワークインターフェイスコントローラ１４０は、ローカルエリアネットワーク（ＬＡＮ）に結合する。ＳＣＳＩ（スモール・コンピュータ・システムズ・インターフェイス）アダプタ１２２を図示のとおりＰＣＩバス１２０に結合させてもよい。ＳＣＳＩアダプタ１２２は、所望に応じてＣＤＲＯＭドライブおよびテープドライブ等のさまざまなＳＣＳＩ装置１２０に結合し得る。当該技術分野において周知のとおり、さまざまな他の装置をＰＣＩバス１２０に接続することができる。
拡張バスブリッジ論理１５０もＰＣＩバス１２０に結合し得る。拡張バスブリッジ論理１５０は、拡張バス１５２にインターフェイスする。拡張バス１５２は、ＡＴバスとも呼ばれるインダストリ・スタンダード・アーキテクチャ（ＩＳＡ）バス、エクステンディッド・インダストリ・スタンダード・アーキテクチャ（ＥＩＳＡ）バスまたはマイクロ・チャネル・アーキテクチャ（ＭＣＡ）バスを含むさまざまなタイプのいずれでもよい。拡張バスメモリ１５４およびモデム１５６等のさまざまな装置を拡張バス１５２に結合することができる。
ＣＰＵブロック図
ここで、図２には、図１のＣＰＵ１０２におけるあるいくつかのコンポーネントを示す高レベルのブロック図が示される。図示のとおり、ＣＰＵ１０２は、システムメモリ１１０から命令またはオペコードを受ける、命令キャッシュまたは命令メモリ２０２を含む。ファンクションプリプロセッサ２０４は、命令メモリ２０２に結合されて、命令メモリ２０２内の命令シーケンスまたはオペコードシーケンスを調べる。ファンクションプリプロセッサ２０４は、また、Ｘ８６コア２１２およびＤＳＰコア２１４にも結合される。図示のとおり、ファンクションプリプロセッサ２０４は、Ｘ８６コア２１２へ命令またはオペコードを与え、かつまたＤＳＰコア２１４へ情報を与える。
Ｘ８６コア２１２およびＤＳＰコア２１４は、ともに結合され、相互にデータおよびタイミング信号をやり取りする。一実施例においては、ＣＰＵ１０２は、Ｘ８６コア２１２とＤＳＰコア２１４との間をインターフェイスする１以上のバッファ（図示せず）を含んで、Ｘ８６コア２１２とＤＳＰコア２１４との間のデータの伝送を容易にする。
図３  フローチャート
ここで、図３には、本発明の動作を示すフローチャート図が示される。図３のステップの２つまたはそれ以上は同時に動作可能であるが、便宜上本発明の動作をフローチャート形式にしている点に留意されたい。図示のとおり、ステップ３０２において、命令メモリ２０２は複数のＸ８６命令を受けて記憶する。複数のＸ８６命令には、ＤＳＰファンクションを実現する１以上の命令シーケンスが含まれ得る。ステップ３０４において、ファンクションプリプロセッサ２０４は、命令メモリ２０２内のオペコード、すなわち命令シーケンスを分析し、かつステップ３０６においてこれら命令のシーケンスがＤＳＰ型ファンクションを実行するよう設計または意図されているかどうか、すなわちこの命令シーケンスがＤＰＳ型ファンクションを実現するか否かをインテリジェントに判断する。本件の開示においては、ＤＳＰ型ファンクションは特に、以下のファンクションのうち１つまたは複数を含む。すなわち、相関、畳み込み、高速フーリエ変換、有限インパルス応答フィルタ、無限インパルス応答フィルタ、内積、および行列操作である。ファンクションプリプロセッサ２０４の動作は図４に関連する説明の箇所においてより詳しく説明することにする。
命令キャッシュ２０２に記憶された命令すなわちオペコードがＤＳＰ型ファンクションに対応していなければ、これら命令はステップ３０８においてＸ８６コア２１２へ与えられる。こうして、これらの命令またはオペコードは、命令キャッシュ２０２からＸ８６コア２１２に直接与えられて実行されるが、これは先行技術のＸ８６互換性ＣＰＵにおいて行なわれるのと同じである。これらオペコードがＸ８６コア２１２に転送された後、ステップ３１０においてＸ８６コア２１２がこれら命令を実行する。
ファンクションプリプロセッサ２０４は、ステップ３０６においてＤＳＰ型ファンクションに対応するまたはこれを実現する命令シーケンスを検出し、ステップ３１２においてファンクションプリプロセッサ２０４は命令のシーケンスを分析し、実現されているそれぞれのＤＳＰ型ファンクションを決定する。ステップ３１２において、ファンクションプリプロセッサ２０４は、この命令のシーケンスを、ファンクション識別子とも呼ばれるそれぞれのＤＳＰマクロ識別子へマッピングする。ファンクションプリプロセッサ２０４は、また、ステップ３１２においてこのオペコードのシーケンスにおける情報を分析し、ファンクション識別子を実行する上でＤＳＰコアまたはアクセラレータ２１４が使用するための０または１以上のパラメータを発生する。図示のとおり、ステップ３１４において、ファンクションプリプロセッサ２０４は、ファンクション識別子およびパラメータをＤＳＰコア２１４へ与える。
ＤＳＰコア２１４は、ファンクションプリプロセッサ２０４からのファンクション識別子および関連のパラメータを受けて、ステップ３１６でそれぞれのＤＳＰファンクションを実行する。好ましい実施例においては、ＤＳＰコア２１４は、ファンクション識別子をＤＳＰマイクロコードＲＡＭまたはＲＯＭへのインデックスとして使用してＤＳＰ命令またはオペコードのシーケンスを実行する。ＤＳＰ命令によって、ＤＳＰは、所望のＤＳＰ型ファンクションを実行する。ＤＳＰコア２１４もＤＳＰファンクションを実現する上で、それぞれのパラメータを使用する。
上に述べたとおり、Ｘ８６コア２１２およびＤＳＰコア２１４はともに結合されて相互にデータおよびタイミング信号をやり取りする。好ましい実施例においては、Ｘ８６コア２１２およびＤＳＰコア２１４は、実質的に並列に動作する。したがって、Ｘ８６コア２１２がオペコードの１つのシーケンスを実行している間、ＤＳＰアクセラレータ２１４がオペコードのもう１つのシーケンスに対応する１以上のＤＳＰファンクションを実行することも可能である。こうして、ＤＳＰコア２１４はスレーブまたはコプロセッサとしてではなく、独立した実行ユニットまたはパイプラインとして動作する。ＤＳＰコア２１４およびＸ８６コア２１２は、動作の状態を表示しかつまた生成されるデータ出力を与えかつデータのコヒーレンシ／独立性を確保するために、相互にデータおよびタイミング信号をやり取りする。
動作の例
以下に、本発明に従いどのようにＸ８６オペコードの列またはシーケンスがファンクション識別子に変換され、その後ＤＳＰコアまたはアクセラレータ２１４により実行されるかについての例を記載する。以下の記載においては、Ｘ８６オペコードシーケンスは単純内積計算を行ない、この内積は２０の値を含むベクトルで平均化される。
0003662258.tif 000002
示されるとおり、単純内積のためのＸ８６オペコード命令は複数のmove命令とそれに続くＦ・ロードファンクションを含んでおり、このシーケンスが複数回にわたって繰返される。このＸ８６オペコードシーケンスは、Ｘ８６コア２１２により実行され、この内積計算の実行時間は、７０９サイクル（９＋２０×３５）を要すると考えられる。これは、ｉ４８６タイミングの、浮動小数点演算の同時実行、ならびに内積計算に必要とされるすべての命令およびデータのキャッシュヒットを想定している。ファンクションプリプロセッサ２０４は、オペコードのシーケンスを分析して、オペコードが内積計算を行なっていることを検出する。ファンクションプリプロセッサ２０４は、そこで、このＸ８６オペコードのシーケンス全体を単一のマクロまたはファンクション識別子と１または複数のパラメータへ変換する。上に示すＸ８６オペコードシーケンスに基づき創出されるマクロまたはファンクション識別子の例を挙げると以下のようになる。
0003662258.tif 000003
このファンクション識別子および１以上のパラメータは、ＤＳＰコア２１４へ与えられる。ＤＳＰコア２１４はファンクションプリプロセッサ２０４から与えられたマクロを使用して、ＤＳＰファンクションを実行する１以上のＤＳＰオペコードまたは命令をロードする。好ましい実施例においては、ＤＳＰコア２１４は、このマクロをＤＳＰファンクションを実行するために使用される命令を含むＲＯＭへのインデックスとして使用する。この例においては、上記のマクロを受取ったことに応答してＤＳＰコア２１４により実行されるＤＳＰコードまたは命令を以下に示す。
0003662258.tif 000004
この例では、ＤＳＰコア２１４は、２０個の値を含むベクトルにより平均したこの内積を行ない、合計２６サイクルを使用する（６＋２０×１）。これは、典型的なＤＳＰのタイミングを想定しており、すなわちいくつかの命令からなる１サイクル動作と、ゼロオーバーヘッドルーピングと、すべての命令とデータに関するキャッシュヒットとを含むタイミングである。こうして、ＤＳＰコア２１４は、Ｘ８６コア２１２がこのＤＳＰファンクションを実行する場合に比べて２８倍を超える性能の向上をもたらす。
図４  ＣＰＵブロック図
ここで、図４は、本発明によるＣＰＵ１０２の内部コンポーネントを示すより詳細なブロック図である。ＣＰＵ１０２における要素は、本発明の理解には必要ではないので、説明を簡単にするために記載しない。図示のとおり、好ましい実施例においては、ＣＰＵ１０２はバスインターフェイスユニット４４０、命令キャッシュ２０２、データキャッシュ４４４、命令デコードユニット４０２、複数の実行ユニット４４８、ロード・ストアユニット４５０、リオーダバッファ４５２、レジスタファイル４５４およびＤＳＰユニット２１４を含む。
図示のとおり、ＣＰＵ１０２は、ＣＰＵバス１０４に対する通信を行なうための回路系を含むバスインターフェイスユニット４４０を含む。バスインターフェイスユニット４４０は、データキャッシュ４４４および命令キャッシュ２０２にインターフェイスする。命令キャッシュ２０２は、システムメモリ１１０からの命令をプリフェッチして、ＣＰＵ１０２による使用に備えてこれら命令を記憶する。命令デコードユニット４０２は、命令キャッシュ２０２に結合されて、命令キャッシュ２０２からの命令を受ける。命令デコードユニット４０２は、図示のとおりファンクションプリプロセッサ２０４を含む。命令デコードユニット４０２内のファンクションプリプロセッサ２０４は、命令キャッシュ２０２に結合される。命令デコードユニット４０２は、他の論理とともに命令整列ユニットをさらに含む。
命令デコードユニット４０２は、複数の実行ユニット４４８、リオーダバッファ４５２、およびロード・ストアユニット４５０に結合する。これら複数の実行ユニットについてはここではまとめて実行ユニット４４８と呼ぶ。リオーダバッファ４５２、実行ユニット４４８およびロード・ストアユニット４５０は各々実行結果を高速転送するためのフォワーディングバス４５８に結合される。ロード・ストアユニット４５０は、データキャッシュ４４４に結合される。ＤＳＰユニット２１４は、ＤＳＰディスパッチバス４５６を介して命令デコードユニットに直接結合される。なお、１以上のＤＳＰユニット２１４を命令デコードユニット４０２に結合してもよい。
バスインターフェイスユニット４４０は、マイクロプロセッサ１０２と、システムバス１０４に結合された装置との間の通信を行なうよう構成されている。たとえば、命令キャッシュ２０２にない命令フェッチはバスインターフェイスユニット４４０により主メモリ１１０から転送される。同様に、ロード・ストアユニット４５０によるデータ要求で、データキャッシュ４４４にないものは、バスインターフェイスユニット４４０により主メモリ１１０から転送される。さらに、データキャッシュ４４４は、マイクロプロセッサ１０２により変更されたキャッシュラインのデータは捨ててもよい。バスインターフェイスユニット４４０は、変更されたラインを主メモリ１１０に転送する。
命令キャッシュ２０２は、好ましくは命令を記憶するための高速キャッシュメモリである。なお、命令キャッシュ２０２をセット・アソシアティブまたはダイレクト・マップ構成に構成してもよい。命令キャッシュ２０２は、さらに、分岐命令が分岐する（taken）かまたは分岐しないか（not taken）を予測するための分岐予測機構を含んでもよい。「taken」の分岐命令によれば命令フェッチおよび実行は分岐命令のターゲットアドレスに続く。「not taken」の分岐命令によれば命令フェッチおよび実行は同分岐命令に続く命令に続く。命令は、命令キャッシュ２０２からフェッチされ命令デコードユニット４０２に運ばれて、デコードされ実行ユニットへディスパッチされる。命令キャッシュ２０２も、マクロ命を予測し適切な動作をとるためのマクロ予測機構を含み得る。
命令デコードユニット４０２は、命令キャッシュ２０２から受けた命令をデコードし、デコードした命令を実行ユニット４４８、ロード・ストアユニット４５０またはＤＳＰユニット２１４へ与える。命令デコードユニット４０２は、好ましくは１を超える数の実行ユニット４４８へ命令をディスパッチするよう構成される。
命令デコードユニット４０２は、ファンクションプリプロセッサ２０４を含む。本発明によれば、命令デコードユニット４０２内のファンクションプリプロセッサ２０４は、ＤＳＰファンクションに対応するまたはこれを行なう命令キャッシュ２０２内のＸ８６命令シーケンスを検出するよう構成される。このような命令シーケンスが検出されると、ファンクションプリプロセッサ２０４は対応するマクロおよびパラメータを発生し、同対応ＤＳＰマクロおよびパラメータを、ＤＳＰディスパッチバス４５６上をＤＳＰユニット２１４へ伝送する。ＤＳＰユニット２１４は、命令デコードユニット４０２からのＤＳＰファンクションマクロおよびパラメータ情報を受けて、指示されたＤＳＰファンクションを行なう。さらに、ＤＳＰユニット２１４は、好ましくはデータキャッシュ４４４にアクセスしてデータオペランドを求めるように構成されている。データオペランドは、よりアクセスを素早くするためにＤＳＰユニット２１４内のメモリ内に記憶されてもよいし、または必要とされる際にデータキャッシュ４４４から直接アクセスしてもよい。ファンクションプリプロセッサ２０４は、命令キャッシュ２０２へフィードバックを行なって、確実に、マクロ検索のために十分な数の先読みされた命令が得られるようにする。
命令キャッシュ２０２内のＸ８６命令がＤＳＰファンクションを実行することを意図していない場合には、命令デコードユニット４０２は、命令キャッシュ２０２からフェッチした命令をデコードして、実行ユニット４４８および／またはロード・ストアユニット４５０へディスパッチする。命令デコードユニット４０２も、命令により使用されるレジスタオペランドを検出し、リオーダバッファ４５２およびレジスタファイル４５４からこれらのオペランドを要求する。実行ユニット４４８は、当該技術分野で周知の態様でＸ８６命令を実行する。
また、ＤＳＰ２１４がＣＰＵ１０２に含まれていないかまたはソフトウェアによって不能化されている場合、命令デコードユニット４０２は、すべてのＸ８６命令を実行ユニット４４８へディスパッチする。実行ユニット４４８は、先行技術と同様にＸ８６命令を実行する。このようなやり方で、ＤＳＰユニットが不能化されると、ＤＳＰファンクションを実行する命令を含むＸ８６コードが、現在先行技術のＸ８６マイクロプロセッサで行なわれているように、Ｘ８６コアにより実行される。こうして、もしＤＳＰユニット２１４が不能化されると、プログラムは、ＤＳＰ２１４における対応のルーチンの実行に比べて動作の効率は落ちるものの正確に実行する。ＣＰＵ１０２において、ＤＳＰコア２１４が可能化されているか不能化されているか、または存在するかしないかがプログラムの正確な実行に影響を与えることがないという効果がある。
一実施例においては、実行ユニット４４８は、各々マイクロプロセッサ１０２が採用する命令セットを実行するように構成される対称な実行ユニットである。他の実施例においては、実行ユニット４４８は異なる命令サブセットを実行するよう構成された非対称な実行ユニットである。たとえば、実行ユニット４４８は、分岐命令を実行するための分岐実行ユニットと、算術および論理命令を実行するための１以上の算術／論理ユニットと、浮動小数点命令を実行するための１以上の浮動小数点ユニットとを含み得る。命令デコードユニット４０２は、命令を、同命令を実行するよう構成されている実行ユニット４４８またはロード・ストアユニット４５０へディスパッチする。
ロード・ストアユニット４５０は、実行ユニット４４８とデータキャッシュ４４４との間のインターフェイスを提供する。ロードおよび記憶メモリ動作は、ロード・ストアユニット４５０によりデータキャッシュ４４４に対し行なわれる。さらに、ロードおよび記憶メモリ動作間のメモリ依存性が、ロード・ストアユニット４５０により検出されて、対処される。
実行ユニット４４８およびロード・ストアユニット４５０は、そのオペランドがまだ付与されていない命令を記憶するための１以上のリザベーション・ステーションを含み得る。命令が、同リザベーション・ステーションに記憶されているものの中から選ばれて実行されるのは、（１）同命令のオペランドが既に与えられており、かつ、（２）選択されている命令の前の命令がオペランドをまだ受取っていない場合である。なお、個別のリザベーション・ステーションを設ける代わりに、リザベーション・ステーションを一箇所に集中させて備えてもよい。同集中リザベーション・ステーションを命令デコードユニット４０２と、実行ユニット４４８と、ロード・ストアユニット４５０との間に結合する。この様な実施例では、同集中リザベーション・ステーション内で、ディスパッチ機能を行なうことができる。
ＣＰＵ１０２は、好ましくは飛越し実行をサポートし、投機的に実行した命令の実行結果を記憶し、これら結果をプログラム順にレジスタファイル４５４に記憶し、依存性チェックおよびレジスタリネーミングを行ない、かつ予測誤りがあった分岐および例外の回復を図るためのリオーダバッファ４５２を採用する。命令が命令デコードユニット４０２によりデコードされると、レジスタオペランドに対する要求がリオーダバッファ４５２およびレジスタファイル４５４へ伝えられる。これらレジスタオペランド要求に応答して、３つの値のうちの１つが命令を受ける実行ユニット４４８および／またはロード・ストアユニット４５０へ転送されるが、それら３つの値とは、（１）その値が投機的に発生済のものであればリオーダバッファ４５２に記憶された値であり、（２）その値がまだ投機的に発生済のものでなければ、結果を記憶することになるリオーダバッファ４５２内の場所を示すタグであり、また（３）はリオーダバッファ４５２内の命令がいずれもレジスタを変更しない場合には、レジスタファイル４５４内のレジスタに記憶された値である。さらには、リオーダバッファ４５２内に、命令デコードユニット４０２によりデコードされている命令の結果を記憶するために記憶場所が割当てられる。この記録場所はタグにより識別され、同タグは命令を受けるユニットへ伝えられる。なお、１を超える数のリオーダバッファ記憶位置が、特定のレジスタに対応する結果を記憶するために割当てられる場合には、プログラム順に最後の結果に対応する値またはタグが、その特定のレジスタに対するレジスタオペランド要求に応答して伝えられる。
実行ユニット４４８またはロード・ストアユニット４５０が命令を実行する場合、リオーダバッファ４５２によりその命令に割当てられたタグが命令の結果とともに結果バス４５８上を伝えられる。リオーダバッファ４５２は、その結果を指示された記憶場所に記憶する。また、実行ユニット４４８およびロード・ストアユニット４５０は、結果バス４５８上を伝えられたタグを、そこに記憶された命令のオペランドのタグと比較する。一致すると、同一ユニットは結果バス４５８からその結果を取込み、それを対応する命令とともに記憶する。このようにして、命令は動作の対象とされているオペランドを受けることができる。結果を結果バス４５８から取込んで命令が使用することを、「結果フォワーディング」と呼ぶ。
命令の結果がプログラム順にリオーダバッファ４５２によりレジスタファイル４５４内へ記憶される。ある命令の結果を記憶し、その命令をリオーダバッファ４５２から削除することを、その命令を「リタイアさせる」と呼ぶ。命令をプログラム順にリタイアさせることによって、不正確な投機的実行からの回復を行なうことができる。たとえば、ある命令が、そのtaken／not taken予測が不正確な分岐命令の後に続く場合、その命令は不正確に実行される可能性がある。予測誤りがあった分岐命令または例外を生じさせる命令が検出されると、リオーダバッファ４５２は予測誤りがあった分岐命令に続く命令を廃棄する。このように廃棄された命令も、実行ユニット４４８、ロード・ストアユニット４５０および命令デコードユニット４０２から取除かれる。
レジスタファイル４５４は、マイクロプロセッサ１０２が採用するマイクロプロセッサアーキテクチャにより規定される各レジスタ用の記憶場所を含む。たとえば、好ましい実施例においては、ＣＰＵ１０２は、Ｘ８６マイクロプロセッサアーキテクチャを含み、レジスタファイル４５４は、ＥＡＸ、ＥＢＸ、ＥＣＸ，ＥＤＸ、ＥＳＩ、ＥＤＩ、ＥＳＰ、およびＥＢＰレジスタ値を記憶するための場所を含む。
データキャッシュ４４４は、マイクロプロセッサ１０２により操作されるデータを記憶するよう構成された高速キャッシュメモリである。なお、データキャッシュ４４４は、セット・アソシアティブまたはダイレクト・マップ構成に構成してもよい。
図５  命令デコードユニット
ここで、図５は、命令デコードユニット４０２の一実施例を示す図である。命令デコードユニット４０２は、命令整列ユニット４６０、複数のデコーダ回路４６２、およびＤＳＰファンクションプリプロセッサ２０４を含む。命令整列ユニット４６０は、命令キャッシュ２０２からフェッチされる命令を受けるよう結合されかつデコーダ回路４６２への命令を整列させる。
命令整列ユニット２６０は、命令をデコーダ回路４６２へルート決めする。一実施例においては、命令整列ユニット２６０は、命令キャッシュ２０２からフェッチした命令のバイトを待ち行列に入れたバイトキューを含む。命令整列ユニット４６０は、このバイトキューの中から有効な命令を見つけ、見つけた命令をそれぞれのデコーダ回路４６２へディスパッチする。他の実施例においては、命令キャッシュ２０２は、命令バイトが命令キャッシュ２０２内へ記憶される際にこれらをプリデコードするプリデコード回路系を含む。命令の始めおよび終わりを表わす開始および終了バイト情報が発生され命令キャッシュ２０２内に記憶される。プリデコードデータを命令とともに命令整列ユニット４６０へ転送し、命令整列ユニット４６０は、命令をプリデコード情報に従いデコーダ回路４６２へ転送する。
ファンクションプリプロセッサ２０４も、命令キャッシュ２０２に結合され命令キャッシュ２０２内の、ＤＳＰ命令を行なう命令シーケンスを検出する。デコーダ回路４６２およびファンクションプリプロセッサ２０４は、命令整列ユニット４６０からのＸ８６命令を受ける。ファンクションプリプロセッサ２０４は、ＤＳＰバスを介してデコーダユニット４６２の各々へ命令不能化信号を与える。
各デコーダ回路４６２は、命令整列ユニット４６０から受けた命令をデコードして、その命令により操作されるレジスタオペランドおよびその命令を受けるユニットを決定する。その命令を受けるユニットの表示およびその命令自体が複数のディスパッチバス４６８上を実行ユニット４４８およびロード・ストアユニット４５０へ運ばれる。図示しない他のバスが、リオーダバッファ４５２およびレジスタファイル４５４からレジスタオペランドを要求するために使用される。
ファンクションプリプロセッサは命令キャッシュ２０２からのＸ８６命令のストリームまたはシーケンスを分析して、ＤＳＰファンクションが実行されているかどうかを決定する。もし実行されていれば、ファンクションプリプロセッサ２０４は、Ｘ８６命令ストリームをＤＳＰマクロおよび０または１以上のパラメータにマッピングし、かつこの情報を１以上のＤＳＰユニット２１４の１つへ与える。一実施例においては、それぞれの命令シーケンスがデコーダ回路４６２に到達すると、ファンクションプリプロセッサ２０４がデコーダ４６２の各々への不能化信号をアサートして、検出された命令シーケンスに対するデコーダ４６２の動作を不能化する。デコーダ回路４６２がファンクションプリプロセッサ２０４からの不能化信号を検出すると、デコーダ回路４６２は、不能化信号が解除されるまでデコード動作を停止する。ＤＳＰファンクションに対応する命令シーケンスが命令キャッシュ２０２を出た後、ファンクションプリプロセッサ２０４はデコーダ４６２の各々への不能化信号を取除く。言い換えれば、Ｘ８６命令シーケンスの終了を検出すると、ファンクションプリプロセッサ２０４は、デコーダ４６２の各々への不能化信号を取除いて、デコーダは動作を再開する。
デコーダ回路４６２の各々は、命令を受ける１つまたは複数のユニットの表示とともに、ディスパッチバス４６８の１つを介して命令を伝える。一実施例においては、その表示内には、実行ユニット４４８およびロード・ストアユニット４５０の各々に関するビットが含まれる。特定のビットがセットされると、その対応するユニットがその命令を実行する。特定の命令が１を超える数のユニットにより実行される場合には、表示内には１を超える数のビットがセットされ得る。
ファンクションプリプロセッサ
ここで図６に、本発明の一実施例に従うファンクションプリプロセッサ２０４のブロック図を示す。図示のとおり、この実施例においては、ファンクションプリプロセッサ２０４は、命令メモリまたは命令キャッシュ２０２内の命令のシーケンスを調べるまたはスキャンするためのスキャンアヘッド回路５０２を含む。一実施例においては、スキャンアヘッド回路または手段５０２は、スキャンされている命令のそれぞれのシーケンスを含む命令をデコードする際に、命令デコーダ４０２の動作に先立って、命令メモリ２０２内に記憶される命令のシーケンスを調べる。こうして、スキャンアヘッド回路５０２は、それぞれの命令が命令デコーダ４０２へ与えられる前に、命令キャッシュ２０２内の命令シーケンスを先取りする。
ファンクションプリプロセッサ２０４は、命令メモリ２０２内の命令のシーケンスがデジタル信号処理ファンクションを実現するか否かを決定するための命令シーケンス決定回路５０４をさらに含む。この決定については以下にさらに述べるとおり、さまざまな方法で行なうことができる。
ファンクションプリプロセッサ２０４は、命令メモリ２０２内の、デジタル信号処理ファンクションを実現する命令のシーケンスを、デジタル信号処理ファンクション識別子またはマクロ識別子および０または１以上のパラメータへ変換するための、変換／マッピング回路５０６をさらに含む。こうして、命令シーケンス決定回路５０４が、命令メモリ２０２内の命令のシーケンスがＦＦＴファンクションを実現すると判断すると、変換／マッピング回路５０６はこの命令のシーケンスをＦＦＴファンクション識別子および０または１以上のパラメータに変換する。
図７  パターン認識回路
ここで図７を参照して、一実施例において、ファンクションプリプロセッサ２０４は、命令メモリ２０２内の命令のシーケンスがデジタル信号処理ファンクションを実現するか否かを決定するパターン認識回路またはパターン認識デコーダ５１２を含む。パターン認識回路５１２は、デジタル信号処理ファンクションを実現する複数パターンの命令シーケンスを記憶する。パターン認識回路５１２は、ＦＦＴ、内積、行列操作、相関、畳み込み等のＤＳＰファンクションを実行する機械言語命令のオペコードシーケンスに対応するビットパターンを記憶する。
パターン認識検出器５１２は、命令メモリ２０２内に記憶される命令のシーケンスを調べ、かつ同命令のシーケンスを複数の記憶されたパターンと比較する。パターン認識検出器５１２の動作については図８に示す。一実施例において、パターン認識検出器５１２は、パターンの各々を命令シーケンスにおける周期的場所にある命令シーケンスと比較する。またはパターン認識検出器５１２は、パターンの各々を命令シーケンス中の予め規定された場所にある命令シーケンスと比較する。パターン認識検出器５１２は、所望に応じて、パターン比較を行なう装置としてルックアップテーブルを備えてもよい。パターン認識検出器５１２は、命令シーケンス上のマクロ予測を行なって性能を改善する。
パターン認識検出器５１２は、命令メモリ２０２内の命令のシーケンスが、複数の記憶されたパターンのうちの１つと実質的に一致するかを決定する。実質的な一致は、その命令のシーケンスがデジタル信号処理ファンクションを実現することを示す。好ましい実施例においては、命令のシーケンスが９０％を超える割合で記憶されたパターンに一致する際に実質的な一致が生じる。９５％または１００％といった他の一致のしきい値を所望に応じて使用してもよい。一致が発生すると、パターン認識検出器５１２は、命令のシーケンスに一致したＤＳＰファンクションパターンのタイプを決定して、このＤＳＰファンクションのタイプを変換／マッピング回路５０６へ伝える。
図９  ルックアップテーブル
ここで図９を参照して、他の実施例においては、ファンクションプリプロセッサ２０４は、命令メモリ２０２内の命令のシーケンスがデジタル信号処理ファンクションを実現するかどうかを決定するルックアップテーブル５１４を含む。この実施例においては、ルックアップテーブル５１４は、パターン認識検出器５１２に加えてまたはこれに代わるものとして設けられ得る。
ファンクションプリプロセッサ２０４が、ルックアップテーブル５１４のみを含む実施例においては、ルックアップテーブル５１４は、各々が、少なくともデジタル信号処理ファンクションを実現する命令シーケンスのサブセットである、複数のパターンを記憶する。すなわち、この実施例は、ファンクションプリプロセッサ２０４が、ＤＳＰファンクションを実現する命令シーケンスを検出するためのパターン認識検出器５１２の代わりにルックアップテーブル５１４を含むという点を除いて上記の図６の実施例に類似する。さらに、この実施例においては、ルックアップテーブル５１４は、ＤＳＰファンクションを実現する命令のより小さいシーケンスすなわち命令シーケンスのサブセットに対応するより小さいパターンを記憶する。この実施例においては、ルックアップテーブル５１４は、対応する命令シーケンスとの正確な一致を要求する。正確な一致が生じない場合には、命令シーケンスは１またはそれ以上の汎用実行ユニット、すなわち汎用ＣＰＵコアに送られて、実行される。
図１０は、この実施例におけるルックアップテーブル５１４の動作を示す。図示のとおり、命令キャッシュ２０２における命令シーケンスは、一時的に命令ラッチ５４２に記憶される。命令ラッチ５４２の内容は、ルックアップテーブル５１４内のエントリの各々と、要素５４６により比較される。命令ラッチ５４２の内容がルックアップテーブル５１４におけるエントリの１つと正確に一致する場合、このエントリに対応するＤＳＰファンクションまたは命令５４８がＤＳＰ実行ユニット２１４へ与えられる。
図７および図９の上記実施例においては、パターン認識検出器５１２および／またはルックアップテーブル５１４は、決定が比較的確実性を持って行なわれ得る場合にのみ、命令シーケンスがＤＳＰファンクションを実現することを決定するよう構成される。これは、「見逃した」命令シーケンス、すなわちＤＳＰファンクションを実現するが、ＤＳＰファンクションを実現するものとしては検出されなかった命令シーケンスが、ＣＰＵ１０２の動作に影響を与えることがないためであり、これは汎用コアまたは実現ユニットが、この命令シーケンスを実行できるためである。しかしながら、ＤＳＰファンクションを実現しない命令シーケンスであって、ＤＳＰファンクションを実現するシーケンスとして誤って識別される命令シーケンスの方がより問題は大きく、誤動作の原因になる可能性がある。この場合には、パターン認識検出器５１２またはルックアップテーブル５１４は、ＤＳＰファンクションを実現するすべての命令シーケンスを正確に検出し得ないことが予想される。この場合、命令シーケンスは先行技術の場合と同様、汎用実行ユニットの１つへ送られる。
図１１  ルックアップテーブルを備えるパターン認識回路
ここで、図１１を参照して、他の実施例において、ファンクションプリプロセッサ２０４は、ルックアップテーブル５１４とパターン認識検出器５１２の双方を含む。この実施例において、ファンクション検出器２０４は、ルックアップテーブル５１４および認識検出器５１２の各々を使用して、命令メモリ２０２の命令のシーケンスがデジタル信号処理ファンクションを実現するかどうかを決定する。この実施例は、好ましくはＸ８６命令のシーケンスからなる２段階の分析を用いることによって、ルックアップテーブル５１４がまずそのシーケンスがＤＳＰファンクションを実現する可能性があるかどうかを決定し、それからパターン認識検出器５１２が実現されているＤＳＰファンクションのタイプを決定するようになっている。これにかえて、パターン認識検出器５１２がまずそのシーケンスがＤＳＰファンクションを実現する可能性があるかどうかを決定し、その後ルックアップテーブル５１４が実現されているＤＳＰファンクションのタイプを決定してもよい。
この実施例においては、ルックアップテーブル５１４は、アトミックなＤＳＰ命令に対応する小さいパターンを記憶する。たとえば、ルックアップテーブル５１４は、ＤＳＰアーキテクチャにおいて共通の乗算累積加算ファンクションを実現するＸ８６命令のパターンを記憶する。ルックアップテーブル５１４はまたアトミックなＤＳＰ命令を実現する他のパターンを記憶する。パターン認識検出器５１２は、特に、ＦＦＴ、相関および畳み込み等の全ＤＳＰファンクションに対応するパターンを記憶する。
まず、ルックアップテーブル５１４は、各エントリを入来の命令シーケンスと比較し、あるシーケンスについての「ヒット」または一致の数を記憶する。一致の数が予め規定されたしきい値より大きければ、そのシーケンスは複数のＤＳＰ型「命令」を含み、したがってＤＰＳファンクションを実現するものと考えられる。この場合、パターン認識検出器５１２を能動化し、記憶されたパターンの各々と全シーケンスとを比較して、Ｘ８６命令シーケンスにより実現されているＤＳＰファンクションのタイプを決定する。上記のとおり、パターン認識検出器５１２は、命令シーケンスが記憶されたパターンの１つと実質的に一致するかどうかを決定する。
結論
したがって、本発明は、ＤＳＰおよび／または数学的演算の実現を最適化し、その一方で既存のソフトウェアとの旧版互換性を維持する新規なＣＰＵまたはマイクロプロセッサアーキテクチャを含む。
本発明のシステムおよび方法について好ましい実施例に関連して記載してきたが、ここに提示した特定の形式に限定されることなく、逆に添付の請求項により規定される発明の精神および範囲内に合理的に含まれ得るような代替例、変更例および等価物を包含することを意図するものである。
【図１】
0003662258.tif 000005
【図２】
0003662258.tif 000006
【図３】
0003662258.tif 000007
【図４】
0003662258.tif 000008
【図５】
0003662258.tif 000009
【図６】
0003662258.tif 000010
【図７】
0003662258.tif 000011
【図８】
0003662258.tif 000012
【図９】
0003662258.tif 000013
【図１０】
0003662258.tif 000014
【図１１】
0003662258.tif 000015