(57)【要約】データプロセッサ（２００）は、プロセッサコア（３００）、プロセッサコア（２１０）に結合されたインターフェース（２１０）、および、コプロセッサ（５００）を含む。コプロセッサ（５００）は、インターフェースを介してプロセッサコア（３００）に結合されており、第１のリストメモリ（５２２）を含む。所定の命令に応答して、プロセッサコア（３００）は、インターフェース（２１０）を介してコプロセッサ（５００）にオペランドを提供する。コプロセッサ（５００）は第１のリストメモリ（５２２）にオペランドを格納し、第１のリストメモリからの複数の値を使用して所定の命令に対応するオペレーションを実行し、結果を供給する。
2008530689.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサコア（３００）と、
前記プロセッサコア（３００）に結合されたインターフェース（２１０）と、
前記インターフェース（２１０）を介して前記プロセッサコア（３００）に結合され、第１リストメモリ（５２２）を有するコプロセッサ（５００）とを備え、
前記プロセッサコア（３００）は、所定の命令（４００）に応答して、前記インターフェース（２１０）を介して前記コプロセッサ（３００）にオペランドを供給し、
前記コプロセッサ（５００）は前記第1リストメモリ（５２２）に前記オペランドを格納し、前記所定の命令（４００）に対応するオペレーションを前記第１のリストメモリ（５２２）からの複数の値を使用して実行し、結果を供給する、データプロセッサ（２００）。
【請求項２】
前記コプロセッサ（５００）はさらに第２リストメモリ（５２４）を含み、さらに、前記第２リストメモリ（５２４）からの複数の値を使用して前記所定の命令に対応する前記オペレーションを実行し、前記結果を供給する、請求項１記載のデータプロセッサ（２００）。
【請求項３】
前記第1リストメモリ（５２２）からの前記複数の値はサンプルデータ値を含み、前記第2リストメモリ（５２４）からの前記複数の値は複数のフィルタ係数を含み、かつ、前記所定の命令に対応する前記オペレーションは、有限インパルス応答（ＦＩＲ）フィルタ出力演算を含む、請求項２記載のデータプロセッサ（２００）。
【請求項４】
前記コプロセッサ（５００）は第１のマルチプライアキュムレート（ＭＡＣ）ユニット（５２４）を含む、請求項１記載のデータプロセッサ（２００）。
【請求項５】
前記コプロセッサ（５００）はさらに第２ＭＡＣユニット（５４４）を含み、前記第１ＭＡＣユニット（５４２）および第２ＭＡＣユニット（５４４）の各々は選択可能な飽和モードを有する、請求項４記載のデータプロセッサ（２００）。
【請求項６】
プロセッサコア（３００）と、
前記プロセッサコア（３００）に結合されたインターフェース（２１０）と、
前記インターフェース（２１０）に結合されたコプロセッサ（５００）とを備え、
前記プロセッサコア（３００）は、第１の所定の命令に応答して、命令およびオペランド値を前記インターフェース（２１０）を介して前記コプロセッサ（５００）に供給し、
前記コプロセッサ（５００）は前記第１の所定の命令に従って第１の所定のオペレーションを開始し、
前記コプロセッサ（５００）は、第２の所定の命令に応答して、前記第1の所定のオペレーションが完了すると、前記結果を前記インターフェース（２１０）に送る、データプロセッサ（２００）。
【請求項７】
前記第１の所定の命令は、有限インパルス応答（ＦＩＲ）フィルタ開始命令を含み、前記第２の所定の命令はＦＩＲフィルタ停止命令を含む、請求項６記載のデータプロセッサ（２００）。
【請求項８】
前記ＦＩＲフィルタ開始命令に応答して、前記プロセッサコア（３００）は命令の実行を継続し、かつ、前記ＦＩＲフィルタ停止命令に応答して、前記プロセッサコア（３００）は、前記コプロセッサ（５００）が前記所定のオペレーションが完了したという信号を送るまでは、更なる命令の処理を停止する、請求項７記載のデータプロセッサ（２００）。
【請求項９】
第１の命令に応答して、中央処理装置（３００）のレジスタにオペランドをロードするステップと、
第２命令（４００）に応答して、前記レジスタから前記オペランドをインターフェース（２１０）に供給するステップと、
前記第２命令（４００）に応答して、前記インターフェース（２１０）に結合されたコプロセッサ（５００）の第１リストメモリ（５２２）に前記オペランドを格納するステップと、
前記コプロセッサ（５００）において、前記第１リストメモリ（５２２）からの複数の値を使用して、前記第２命令に対応する所定のオペレーションを実行し、結果を供給するステップとを含む、
データ処理システム（２００）を効率的に動作させる方法。
【請求項１０】
前記所定のオペレーションを実行するステップは、前記コプロセッサ（５００）の前記第１リストメモリ（５２２）からの前記複数の値と、第２リストメモリ（５２４）からの複数の値を使用して、前記所定のオペレーションを実行するステップをさらに含む、請求項９記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
概して、本発明はデータプロセッサに関し、より詳細には、デジタル信号処理機能を実行できるデータプロセッサに関する。
【背景技術】
【０００２】
この数十年にわたる集積回路製造技術の進歩により、マイクロプロセッサベースのコンピュータシステムは、大きなウェアハウスからデスクトップへと移行し、現在は、携帯用情報端末（ＰＤＡ）、携帯電話、スマートフォン、ビデオゲームおよびこれらに類するものなどの携帯端末へと移行している。これまでのコンピュータシステムは３つの主要構成要素で定義された。それらは、中央処理装置（ＣＰＵ）、メモリ、入力／出力周辺装置である。しかし、ＣＰＵ、および、メモリやいくつかの入力／出力回路でさえも現在は単一の集積回路に組み込まれている。これらの非常に複雑な装置は多くの場合システムオンチップつまりＳＯＣと呼ばれるが、このような装置は、多数の有益な機能を供給しつつも携帯端末の原価を引き下げている。
【０００３】
同時に、処理タスクの形式も変化している。以前のマイクロプロセッサは整数演算命令および論理演算命令を整数データ型およびブールデータ型で実行した。これらのオペレーションは依然として必要とされているが、より特殊な処理もまた特定の装置に対して有益である。特殊な処理の一例としては、浮動小数点演算が挙げられる。浮動小数点演算は、複雑なグラフィックスなどの数学的指向オペレーションにおいて有益である。しかし、整数データ型およびブールデータ型を処理するように設計された汎用マイクロプロセッサで浮動小数点演算を実行するには、複雑なソフトウェアルーチンが必要であり、また、処理は相対的に遅い。この需要を満たすために、マイクロプロセッサの設計者たちは、浮動小数点コプロセッサを開発した。コプロセッサとは、処理タスクの一部を別のプロセッサ（通常はシステムのＣＰＵ）からオフロードするために特定のタスクを行うよう特別に設計されたデータプロセッサである。浮動小数点演算コプロセッサ、例えば、８０２８７浮動小数点演算コプロセッサは、カリフォルニア州サンタクララのインテル社によって最初に製造されたものであり、このコプロセッサは１９８０年代のデスクトップコンピュータシステムに共通のものであった。浮動小数点コプロセッサは、複雑な浮動小数点計算を特殊用途の回路を用いて効率的に処理することで、コンピュータシステムの性能を高めた。
【０００４】
また、携帯端末は特殊な処理タスクを必要とする。例えば、音声信号は、デジタルシグナルプロセッサ（ＤＳＰ）を使用して、周波数領域で処理されることが多い。したがって、携帯端末の汎用データプロセッサにＤＳＰを追加することは当然のことであるように思える。
【０００５】
さらに、構成要素の数を減らし、また原価を引き下げるために、これらの携帯端末において高度な集積ＳＯＣを使用することが望ましい。これまでは、ＳＯＣの汎用ＣＰＵをＤＳＰコプロセッサと一体化することは困難であった。ＳＯＣの設計理念においては、回路ブロックを再利用できるように、この回路ブロックがモジュール式であることが求められる。通常ＣＰＵは“コア”として設計され、コンピュータを使った設計（ＣＡＤ）技術を使用して高水準記述からでさえも統合できる。しかし、コプロセッサはＣＰＵの命令パイプラインとの複雑な一体化を要求し、ＤＳＰコプロセッサに適応するために、CPUの設計を変更するとそのモジュール性が破壊されてしまう。
【０００６】
このような困難性から、ある設計では、ＣＰＵと並行して、別の汎用ＤＳＰを使用している。このようなＤＳＰは、固有のメモリにアクセスし、固有の命令セットと固有のオペレーティングシステムとを有するとともに、固有の開発ツールセットを要求することから、ＣＰＵと類似している。しかし、このような特徴は、携帯端末の原価を増大させる。さらに、ＣＰＵとＤＳＰとは共有メモリを使用して通信を行い、加えて、この２つの装置間でオペランドと結果とを転送する際に相当量のオーバーヘッドがあった。よって、特殊用途のＤＳＰ処理における利点は、余分な複雑性と原価によってその一部が相殺された。
【０００７】
このような困難性をＳＯＣ設計のモジュールプロセッサコアを使用して克服するために、メーカー側は、近年、オプションのコプロセッサを備えたシステムにおいて使用する付加的な“フック”を備えたプロセッサコアを設計している。例えば、カリフォルニア州マウンテンビューのＭＩＰＳテクノロジー社より入手可能な４ＫＥＳ（商標）RISCマイクロプロセッサコアは、命令およびデータをＣＰＵコアとコプロセッサとの間に送ることができるよう、特殊なコプロセッサ命令のセットと特殊用途のインターフェースとを備えている。よって、ＣＰＵコアがこれらの特定のコプロセッサ命令のうちの１つをデコードすると、適切なオペランドをレジスタファイルから引き出し、引き出したオペランドを命令とともに、特定のインターフェース越しにコプロセッサに送る。コプロセッサが命令を実行している間、ＣＰＵコアのパイプラインは停止する。コプロセッサが命令の結果を返すと、ＣＰＵコアはこの結果をレジスタファイルに記憶し、パイプラインにおいて命令の処理を継続する。
【０００８】
携帯型の電子端末やこれに類するものに有益な、小型で低電力のＳＯＣを供給するために、このＲＩＳＣマイクロプロセッサコアの新たな機能を利用したデータプロセッサが求められている。
【発明の開示】
【０００９】
よって、本発明の一形態として、プロセッサコア、このプロセッサコアに結合されたインターフェース、およびコプロセッサを含むデータプロセッサを供給する。コプロセッサはインターフェースを介してプロセッサコアに結合されており、また、第１リストメモリを含む。所定の命令に応答して、プロセッサコアはインターフェースを介してコプロセッサにオペランドを送る。コプロセッサはこのオペランドを第１リストメモリに記録し、第１リストメモリからの複数の値を利用して所定の命令に対応するオペレーションを実行し、結果を供給する。
【００１０】
別の形態において、本発明は、命令を実行する中央処理装置を含んだデータプロセッサにおいて使用するためのコプロセッサを供給する。このコプロセッサは、制御ロジック、第１リストメモリ、および、演算回路を含む。この制御ロジックはインターフェースを介して中央処理装置に結合されるように、また、インターフェースを越えて命令とオペランドとを受信するように構成されている。第１メモリは、オペランドを含む複数の値を格納する。演算回路は第１リストメモリに結合されている。所定の命令に応答して、制御ロジックは、第１リストメモリからの複数の値を利用して、演算回路に所定の命令に対応するオペレーションを実行させ、結果を供給する。
【００１１】
さらに別の形態において、本発明は、プロセッサコア、プロセッサコアに結合されたインターフェース、およびインターフェースに結合されたコプロセッサを含む、データプロセッサを供給する。第１の所定の命令に応答して、プロセッサコアは命令とオペランド値とをインターフェースを介してコプロセッサに送り、コプロセッサは、第１の所定の命令に従って第１の所定のオペレーションを開始する。第２の所定の命令に応答して、コプロセッサは、第１の所定のオペレーションが終了すると、その結果をインターフェースに送る。
【００１２】
さらにまた別の形態において、本発明は、中央処理装置、複数のオペランド格納用の、中央処理装置に結合されたメモリ、中央処理装置に結合されたインターフェース、およびインターフェースに結合されたコプロセッサを含むデータ処理システムを提供する。コプロセッサは第１リストメモリを含む。所定の命令に応答して、中央処理装置はインターフェースを介してオペランドをコプロセッサに送る。コプロセッサは第１リストメモリにこのオペランドを格納し、第１リストメモリからの複数の値を利用して所定の命令に対応するオペレーションを実行し、結果を供給する。
【００１３】
さらに別の形態では、本発明はデータ処理システムを効率的に動作させる方法を提供する。第１命令に応答して、中央処理装置のレジスタにオペランドがロードされる。このオペランドは、第２命令に応答して、レジスタからインターフェースに送られる。第２命令に応答して、このオペランドはコプロセッサの第１リストメモリに格納される。第２命令に対応する所定のオペレーションが、第１リストメモリからの複数の値を利用して、コプロセッサで実行され、結果を供給する。
【００１４】
本発明は添付の図面を参照することで当業者により理解され、これにより多くの特徴や利点が明らかになるであろう。図面において、同じ参照符号は同様の、あるいは同一のアイテムを示す。
【発明を実施するための最良の形態】
【００１５】
図１は、従来技術で周知のデータ処理システム１００のブロック図である。データ処理システム１００は、システム１００の中央処理装置（ＣＰＵ）を形成する、縮小命令セットコンピュータ（ＲＩＳＣ）マイクロプロセッサ１０２を含む。ＲＩＳＣマイクロプロセッサ１０２は、ランダムアクセスメモリ（ＲＡＭ）１０４の形式で高速の揮発性メモリに結合され、また、マスク読み出し専用メモリ（ＲＯＭ）形式、フラッシュ電気的消去可能プログラムＲＯＭ（“フラッシュ”）形式などの低速の不揮発性メモリ（ＮＶＭ）１０６に接続される。さらに、システム１００は、ＲＩＳＣマイクロプロセッサ１０２に直接的に、あるいは、入力／出力アダプタを介して接続された入力／出力装置を含む。（図１に図示せず）
【００１６】
システム１００は、ＰＤＡ、携帯電話、携帯用ビデオゲームシステムおよびこれらに類するものなどの携帯端末に求められる特殊な処理を実行するために、汎用デジタルシグナルプロセッサ（ＤＳＰ）１１０を含む。このＤＳＰは、固有のＲＡＭ１１２とＮＶＭ１１４とをデータとを有し、それぞれデータとプログラムとを格納する。ＲＩＳＣマイクロプロセッサ１０２とＤＳＰ１１０との間でタスクと結果とを送るために、システム１００は共有メモリ１０８を備えている。
【００１７】
コンピュータシステム１００を低価格の携帯装置に用いる場合にはいくつかの欠陥がある。まず、ＲＩＳＣマイクロプロセッサ１０２とＤＳＰ１１０とは別々のチップであり、これによりシステム費用が増大する。次に、各プロセッサにはそれぞれ別のメモリが必要であり、これにより、チップ数が増え、この結果、システム費用が増大する。第３に、各プロセッサはそれぞれの命令セットを有しているので、各プロセッサにはそれぞれ別々のアセンブラ、コンパイラ、および開発ツールが必要であり、この結果、複雑さが増し、市場に出すまでに残された時間が短くなる。
【００１８】
図２は、本発明によるデータ処理システム２００のブロック図を示す。
データ処理システム２００は、ＲＩＳＣプロセッサコア３００、ＲＡＭ２０５とＮＶＭ２０６を含むメモリ２０４、インターフェース２１０、および特殊なＤＳＰリストコプロセッサ５００を含む。これまでのように、ＮＭＶ２０６はマスクＲＯＭ、フラッシュＥＥＰＲＯＭの形式をとることができる。例示の実施形態では、ＲＩＳＣプロセッサコア３００、インターフェース２１０、およびＤＳＰリストコプロセッサ５００は、単一の集積回路に組み込まれている。図１のＲＩＳＣプロセッサコア１０２とは違って、ＲＩＳＣプロセッサコア３００はコプロセッサを含む他のシステム構成要素と一体化するように構成されている。従って、ＲＩＳＣプロセッサコア３００は、ユーザにより定義されたコプロセッサ命令を認識し、これらの特定の命令をインターフェース２１０を介してコプロセッサに供給する特殊機能を備えている。例示の実施形態では、ＲＩＳＣプロセッサコア３００はカリフォルニア州マウンテンビューのＭＩＰＳテクノロジー社より入手可能な４ＫＥＳ（商標）プロセッサコアファミリーと互換性があるが、同様の機能性を有する等価のプロセッサコアと置き換えることもできる。
【００１９】
インターフェース２１０は、ＲＩＳＣプロセッサコア３００とＤＳＰリストコプロセッサ５００との間のインタラクションポイントである。これらのプロセッサ間にデータを転送し、インターフェースを制御する信号線を介してインタラクションが実現される。関連のある信号線を以下に記述しているが、これらの信号線は単に例示的なものである点に留意されたい。“ＩＮＳＴＲＵＣＴＩＯＮ”とラベル付けされた一連の３２の信号線２１２は、ＲＩＳＣプロセッサコア２０２の命令セットの１以上の命令に対応する。４ＫＥＳ（商標）コアの場合、予約されたいくつかの命令については、コプロセッサとの間の処理専用にされている。このような命令は、ユーザ定義インターフェース（ＵＤＩ）命令と呼ばれ、命令をＵＤＩ命令と認識する命令フィールド部分、および、これとは別の、実行されるオペレーション形式を特定する命令フィールド部分とを有する。ＲＩＳＣプロセッサコア３００は、このＩＮＳＴＲＵＣＴＩＯＮフィールドを使用し、最小限で、ＤＳＰリストコプロセッサ５００に運ばれるＵＤＩ命令の形式を示す。よって、このＩＮＳＴＲＵＣＴＩＯＮフィールドはＲＩＳＣコプロセッサコア命令と同一であってもよいが、命令を特定するだけの十分な数があれば、含まれるビット数はより少なくてもよい。さらに、このＩＮＳＴＲＵＣＴＩＯＮフィールドは、ＲＩＳＣプロセッサコア３００によって認識される命令とは違ったやりかたで命令をエンコードしてもよい。
【００２０】
インターフェース２１０は、“ｒｓ”とラベル付けされた第１オペランドを実行するために、３２本の信号線の第１セットを使用し、“ｒｔ”とラベル付けされた第２オペランドを実行するために３２本の信号線の第２セットを使用して、オペランドを２つまでＤＳＰリストコプロセッサ５００に転送する。あるＵＤＩ命令には、これら信号線のセットの一方あるいは両方とも必要とされない。
【００２１】
インターフェース２１０は、“ｒｄ”とラベル付けされた３２ビットの結果オペランドを転送する一連の信号線２１８を含み、これにより、ＤＳＰリストコプロセッサ５００はＩＮＳＴＲＵＣＴＩＯＮの結果をＲＩＳＣプロセッサコア３００に返す。
【００２２】
さらに、インターフェース２１０は、インターフェース２１０のオペレーションを制御するいくつかの制御信号を実行する“コントロール”２２０とラベル付けされた制御バスを含む。
【００２３】
ＲＩＳＣプロセッサコア３００とＤＳＰリストコプロセッサ５００とは、ＳＯＣにおいて、他の入力／出力装置と一体化される（図２に図示せず）。ＲＩＳＣプロセッサコア３００は、ＵＤＩのアベイラビリティ(availability)のおかげで、そのパイプラインを変形せずにＤＳＰリストコプロセッサ５００とインターフェース接続できる。
【００２４】
システム２００は、ＤＳＰリストコプロセッサ５００専用の付加的メモリや、ＲＩＳＣプロセッサコア３００とＤＳＰリストコプロセッサ５００との間の通信メモリのいずれも必要とせずに、単一のメモリシステム２０４だけを含む。オペランドフローは以下のように生じる。まず、ＲＩＳＣプロセッサコア３００は、ムーブ命令に応答して、データをその汎用レジスタの１つに移動させる。データはメモリ２０４に存在しているものか、入力／出力装置（図２に図示せず）から受信済のものであってもよい。次に、ＲＩＳＣプロセッサコア３００は、データをＤＳＰリストコプロセッサ５００に移動させるＵＤＩ命令を実行する。ＤＳＰリストコプロセッサ５００は、別々のメモリアクセスを必要とせずに様々なタイプのＤＳＰタスクを実行することができるように、それぞれのリストメモリを含む。加えて、多くのＤＳＰルーチンのそのシーケンシャルな性質により、ＤＳＰリストコプロセッサ５００は、命令を受信すると値の維持とアップデートとを同時に行う。これにより、ＲＩＳＣプロセッサコア３００による介入およびオーバーヘッドが最小限に抑えられるとともに、さらなる処理機能がフリーアップ(free up)される。ＤＳＰリストコプロセッサ５００はこの結果をｒｄ信号線２１８越しに返し、ＲＩＳＣプロセッサコア３００はこの結果をＵＤＩ命令により定義されるｒｄフィールドによって識別されるレジスタ２５に記録する。
【００２５】
追加のメモリ構造なしで効率的なＤＳＰ処理を実現するために、ＤＳＰリストコプロセッサ５００は、多くのＤＳＰと関連する命令から要求されたデータ値のリストを記録する内部リストメモリ(internal list memory)を含む。特定のＵＤＩ命令に遭遇したときに、ＤＳＰリストコプロセッサ５００はこのリストメモリに新たなオペランド値を記録し、その値と、リストメモリにすでに存在する他の値を使用してその命令を実行する。しかし、その他の実装形態では、実際に転送された値を現在の演算のために使用せずに、後で使用するために記憶だけが行われてもよい。
【００２６】
実際にはＤＳＰリストコプロセッサ５００により実装されないが、この技術をその他の特殊用途の計算に使用することもできる。例えば、あるデータ通信タスクは、巡回冗長検査（ＣＲＣ）方式で、フレームチェックシーケンスの計算を要求する。ＣＲＣ多項式にはいくつかの周知なものがあるが、これらはすべて多項式を一連のデータサンプルに適用して数字を得るものである。実行中のＣＲＣが計算されるデータサンプルの履歴を記録するためにこのリストメモリを使用してもよい。加えて、特定のＣＲＣ生成多項式は、他の命令を通じて前もってプログラムされるか、予め決められたのもであってもよい。同様に、ＤＳＰリストコプロセッサ５００は、汎用多項式評価の一環として、リストメモリを効率的に使用するように変更してもよい。
【００２７】
図３に、図２のＲＩＳＣプロセッサコア３００のブロック図を示す。図３は、本発明を理解するうえで重要なＲＩＳＣプロセッサコア３００の詳細を示しており、他の従来の特徴は省略している。ＲＩＳＣプロセッサコア３００は汎用レジスタファイル３０２を含む。汎用レジスタファイル３０２は、３２のレジスタを含み、各々は３２ビット長であり、連番で“ｒ０”、“ｒ１”、“ｒ２”などから“ｒ３１”までラベル付けされている。加えて、ＲＩＳＣプロセッサコア３００は機器構成レジスタ(configuration register)３０４を含む。この機器構成レジスタは、ユーザ定義のインターフェースオペレーションをイネーブルにする、あるいはディセーブルにするために使用される“ＵＤＩ”とラベル付けされたビット３０６を有している。ＵＤＩビット３０６およびレジスタファイル３０２中のレジスタは、エグゼキューションユニット(execution unit)３０８にアクセス可能である。このエグゼキューションユニットはソフトウェアプログラムによる命令体系の命令を実行する。
【００２８】
命令の１クラスとして、ＵＤＩ命令群が挙げられる。ＵＤＩ命令の受信に応答して、ＵＤＩ命令がＵＤＩビット３０６によってイネーブルにされているときは、エグゼキューション（実行）ユニット３０８は、命令と所要のレジスタ値とをオペランドとして示すフィールドをＵＤＩインターフェースコントローラ３１０に送信する。次に、ＵＤＩインターフェースコントローラ３１０は、ＵＤＩインターフェース２１０を越えて、ＲＩＳＣプロセッサコア３００とＤＳＰリストコプロセッサ５００との間の値の交換を制御する。
【００２９】
ＵＤＩビット３０６によりイネーブルにされているときは、エグゼキューションユニット３０８は、図４に示すようにＵＤＩ命令をデコードし実行する。図４に、図３のＲＩＳＣプロセッサコア３００によって使用されるコプロセッサ命令４００のフォーマットを示す。命令４００は３２ビット命令であり、様々なビット長の７つのフィールド４０２、４０４、４０６、３０８、４１０、４１２、および４１４を備える。ビット３−０は“ＳＥＴ  ＣＯＤＥ”フィールドとして周知のフィールド４０２を含む。このＳＥＴ  ＣＯＤＥフィールドは、主要なＵＤＩ  ＩＮＳＴＲＵＣＴＩＯＮタイプを特定する。このＵＤＩ命令には、ＡＬＵオペレーション、ＭＡＣオペレーション、リストオペレーション（以下に更なる詳細を説明する）、ムーブトゥー（ＭＯＶＥ  ＴＯ）オペレーションとムーブフロム（ＭＯＶＥ  ＦＲＯＭ）オペレーション、および、拡張ＡＬＵオペレーションを含む。
【００３０】
ビット５および４は“ＢＬＯＣＫ”フィールドとして周知のフィールド４０４を含む。ＢＬＯＣＫフィールド４０４はＤＳＰリストコプロセッサ５００に対して常に０１に設定されている。
【００３１】
ビット１０−６は“ＳＵＢＳＥＴ  ＣＯＤＥ”フィールドとして周知のフィールド４０６を含む。ＳＵＢＳＥＴ  ＣＯＤＥフィールド４０６はＤＳＰリストコプロセッサ５００によって認識される特定のオペレーションコード（オペコード）を定義する。また、ＳＥＴ  ＣＯＤＥフィールド４０２の値に基づいて異なる意味を有する。
【００３２】
ほとんどのＳＥＴ  ＣＯＤＥ値に対する命令は、ＤＳＰリストコプレセッサ５００に従来のデータ処理オペレーションを実行させる。しかし、ＤＳＰリストコプロセッサ５００は、リストオペレーションとして周知の特定の一連のオペレーションを実行することができ、これにより、多くのＤＳＰオペレーションのシーケンス性をうまく利用することができる。したがって、ＳＥＴ  ＣＯＤＥフィールド４０２がリストオペレーションを示すときに、ＳＵＢＳＥＴ  ＣＯＤＥフィールド４０６は表１に示すようなエンコーディングを有する。
【表１】
2008530689.tif 000003
【００３３】
表２に、リスト命令中にＤＳＰリストコプロセッサ５００とＲＩＳＣプロセッサコア３００との間で転送されるオペランドを示す。
【表２】
2008530689.tif 000004
“ｘ”はドントケアを示し、“マルチプル”は、サイクル数がＸメモリ５２４および／あるいはＹメモリ５２２のリスト（つまり、長さ）中の要素の数に応じて決まることを示す。
【００３４】
ビット３１−３６は命令タイプフィールド４１４を形成する。このフィールドは、いわゆる“ＳＰＥＣＩＡＬ  ２”命令フォーマットを示すようにバイナリ値“０１１１００”を有しており、ＢＬＯＣＫフィールドも同様に値０１を有する場合に、命令がＤＳＰリストコプロセッサ５００に向けられたＵＤＩ命令であることを示す。
【００３５】
残りのビットフィールドはオペランドレジスタ指示子を含む。各々は５ビット長であり、３２ビットの汎用レジスタの１つを選択する。ビット２５−２１は、“ｒｓ”とラベル付けされた、第１のソースオペランド識別子フィールド４１２を含む。ビット２０−１６は、“ｒｔ”とラベル付けされた、第２のソースオペランド識別子フィールド４１０を含む。ビット１５−１１は、“ｒｄ”とラベル付けされた、指示オペランド識別子フィールド４０８を含む。これらのフィールドの使用の有無は命令のタイプに応じて決まる。
【００３６】
図５に、図２のＤＳＰリストコプロセッサ５００のブロック図である。ＤＳＰリストコプロセッサ５００は一般的に、制御および順序付けロジック(control and sequencing logic)５１０、リストメモリ５２０、および論理演算ユニット（ＡＬＵ）５３０を含む。制御および順序付けロジック５１０はＵＤＩインターフェース２１０を管理し、ＩＮＳＴＲＵＣＴＩＯＮフィールドにより示される命令をデコードする。さらに、このロジックは、リストメモリ５２０中にポインタを維持する。これらのポインタは、“Ｙ”メモリ５２２と“Ｘ”メモリ５２４のそれぞれに対して、ヘッドポインタとテールポインタとを含む。よって、制御および順序付けロジック５１０は“ＹＨ”とラベル付けされたＹヘッドポインタ、“ＹＴ”とラベル付けされたＹテールポインタ、“ＸＨ”とラベル付けされたＸヘッドポインタ、および、“ＸＴ”とラベル付けされたＸテールポインタを出力する。以下に詳述するように、ヘッドポインタとテールポインタとは値のシーケンシャルリストの開始アドレスと終了アドレスとを定義する。さらに、制御および順序付けロジック５１０は、“ＡＤＤＲＥＳＳＳＡ”とラベル付けされたＹメモリ５２２のリスト中にインデックスを付けるためのアドレス、“ＡＤＤＲＥＳＳＳＢ”とラベル付けされたＸメモリ５２４のリスト中にインデックスを付けるためのアドレス、“ＤＡＴＡＹ”とラベル付けされた、Ｙメモリに記録されるデータ値、および、“ＤＡＴＡＸ”とラベル付けされた、Ｘメモリに記録されるデータ値を出力する。
【００３７】
リストメモリ５２０は、Ｙメモリ５２２とＸメモリ５２４の両方を含み、各々は１６ビット値を格納する。１つの特定の有益なＤＳＰオペレーション、有限インパルス応答（ＦＩＲ）フィルタ計算を実行するために、Ｘメモリ５２４中の値はフィルタの係数に対応し、Ｙメモリ５２２中の値はデータサンプルに対応する。
【００３８】
ＡＬＵ５３０は、レジスタ５２３と５３４、マルチプレクサ（ＭＵＸ）５４０、マルチプライアキュムレート(multiply-and-accumulate)（ＭＡＣ）ユニット５４２、５４４、およびフィックスアップ（ＦＩＸ−ＵＰ）ロジック５４６を含む。レジスタ５３２はＹメモリ５２２の出力に接続されていて“Ａ”部および“Ｂ”部を有し、Ｙメモリ５２２から出力される１６ビットワードデータの上位および下位バイトをそれぞれ格納する。同様に、レジスタ５３４はＸメモリ５２４の出力に接続されており、“Ｃ”部および“Ｄ”部を有し、Ｘメモリ５２４から出力されるデータの１６ビットワードの上位および下位バイトをそれぞれ格納する。ＭＵＸ５４０はＡ、Ｂ、Ｃ、およびＤレジスタの出力に接続された入力と、４つの出力とを有する。ＭＵＸ５４０は完全４×４ＭＵＸであり、パック算術演算を実行する際に有効である。これについては以下に詳述する。ＭＡＣ５４２は、ＭＵＸ５４０の第１および第２出力端子に接続された第１および第２入力端子と、４０ビットの出力端子とを有する。ＭＡＣ５４４は、ＭＵＸ５４０の第３および第４出力端子に接続された第１および第２入力端子と、４０ビットの出力端子とを有する。以下に詳述するように、ＭＡＣ５４２と５４４とはそれぞれ、選択可能な飽和モードを有しており、２つの周知の信号処理に対する異なる飽和条件（different saturation assumption）に対応する。
【００３９】
ＡＬＵ５３０は、フィックスアップロジック５４６回路を含む。この回路は、ＭＡＣ５４２の出力端子に接続された第１の入力端子、ＭＡＣ５４４の出力端子に接続された第２の入力端子、および、ｒｄ値を供給するためにインターフェース２１０に接続された出力端子を有する。より詳細には、フィックスアップロジック５４６は、“ＡＣＣ０”とラベル付けされた下位の１６ビット部５４８と、“ＡＣＣ１”とラベル付けされた上位の１６ビット部５５０とを有するアキュムレータを含む。アキュムレータ部５４８および５５０は、別々の部位として図示されている。その理由は、これらの部位はパックオペレーションを実行したときに別々の結果を格納することになるからである。
しかし、フル３２ビット演算を実行したときに、その結果の下位部分はアキュムレータ５４８に格納され、上位部分はアキュムレータ５５０に格納されることになる。フィックスアップ回路５４６は、命令によって定義されるように、規格化、スケーリング、ラウンディング、および飽和を行う。
【００４０】
図４および図５を併せて考察すると、データ処理システム２００は、効率的な信号処理ルーチンの一環として使用することができる様々なコプロセッサ命令を実行することが明らかであろう。第１の命令は、いわゆるドット積（dot product）タイプの命令である。ドット積命令は、第１リスト中の値の各々を第２リスト中の対応する値で掛け、その積を合計する。よって、例えば、ＤＳＰリストコプロセッサ５００は、ＲＩＳＣプロセッサコア３００に対する混乱(disruption)を最小限に抑えた状態でＦＩＲフィルタ計算を効率的に実行することができる。ＲＩＳＣプロセッサコア３００上で実行中のコードは、ＭＴＹＨ＿ＲＥＡＬ３２命令などの、新たなデータサンプルをＹメモリ５２２中に保持しているリストに送る命令を実行し、ドット積オペレーションを開始する。まず、ＤＳＰリストコプロセッサ５００は、ヘッドポインタＹＨをインクリメント(increment)し、そこにデータサンプルを格納するとともに、テールポインタＹＨをインクリメントし、最も古いデータサンプルを取り除くことによって、リストにデータサンプルを追加する。次に、アドレスポインタＡＤＤＲＥＳＳＳＢとＡＤＤＲＥＳＳＳＡとを用いて、Ｘメモリ５２４から係数とデータメモリ５２２から対応するデータサンプルとをそれぞれ読み出し、これらをレジスタ５３２と５３４とにそれぞれ格納する。ＭＵＸ５４０はオペランドをＭＡＣユニット５４２および５４４のうちの１つに送る。ここで乗算が行われる。このシーケンスは、残りの係数とリスト中のデータ値を通して、ＬＥＮＧＴＨに到達するまで継続して行われる。次に、この結果はフィックスアップロジック５４６に送られ、適切なラウンディングと飽和が行われる。ＤＳＰリストコプロセッサ５００にリストメモリを保持することで、データプロセッサ２００は、外部メモリアクセスをほとんど必要としないやり方で、ＲＩＳＣプロセッサコア３００とＤＳＰリストコプロセッサ５００とを容易に一体化することができる。さらに、追加される新たなオペランドのリストへの送信と、新たな演算の計算の開始とを同時に始めることができる。
【００４１】
システム２００の重要な特徴として、ＤＳＰリストコプロセッサ５００がドット積演算を開始するために、ＭＴＹＨ＿ＲＥＡＬ３２などの１つのＩＮＳＴＲＵＣＴＩＯＮに応答可能な点、および、その結果を引き出し、結果を汎用レジスタに格納するために、ＭＦＸＨ１などの別のＩＮＳＴＲＵＣＴＩＯＮに応答可能な点が挙げられる。よって、ソフトウェアコンパイラは、ＤＳＰリストコプロセッサ５００が長いドット積演算を実行する間に、ＲＩＳＣマイクロプロセッサコア３００に有益な作業を継続して行わせることができる。パイプラインをストールさせるためにＩＮＳＴＲＵＣＴＩＯＮ（ＭＴＹＨ_ＲＥＡＬ３２）の開始は許可されず、一方で、ＩＮＳＴＲＵＣＴＩＯＮ（ＭＦＸＨ１）を終了させることはその結果がまだ準備できていなければパイプラインをストールさせてしまう。よって、効率的なコンパイラでは、コプロセッサレイテンシに関連づけられる無駄なサイクルを回避すべく、この両方の命令を使用することができる。
【００４２】
別の重要なフィーチャとして、ＤＳＰリストコプロセッサ５００は、２つの別々のＭＡＣを含むことが挙げられる。各々のＭＡＣは、別々のラウンディングと飽和条件に対応するよう選択可能である。そのうちの１つに３２ビット飽和モードがあり、これはＥＴＳＩ（欧州電気通信標準化機構）演算として周知である。３２ビットの飽和モードでは、ＤＳＰリストコプロセッサ５００は結果の一部を３２ビットに飽和する。別のモードに、４０ビット飽和モードがある。４０ビットの飽和モードにおいては、ＤＳＰリストコプロセッサ５００は結果の一部を４０ビットのアキュムレータに蓄積し、計算が終わると最終の合計を３２ビットに飽和する。これらの２つの技術は時折異なる結果をもたらすことがある。また、ＤＳＰリストコプロセッサ５００はこれらの２つのアルゴリズムの各々に対するビットの正確性を保持する。さらに、他の実施形態では、ＤＳＰリストコプロセッサ５００の更なる選択可能ラウンディングモードと飽和モードをサポートすることができる。これらの選択可能モードは、グラフィックス変換、画像処理、および暗号文などのアプリケーションに有用な、必ずしも線形とは限らない、広範な数学的表現をサポートすることができる。
【００４３】
さらに別の重要な特徴として、いわゆる、シリアルＭＡＣモードがある。多くのＤＳＰアルゴリズムにおいて、１つのＭＡＣ命令の直後に別のＭＡＣ命令が行われる。そのような状況では、ＭＡＣの結果を３２ビットに飽和するのは望ましなく、むしろ、第１のＭＡＣ３０命令の飽和されていない４０ビットの結果を、第２のＭＡＣ命令の飽和されていない４０ビットの結果と組み合わせることが望ましい。ＤＳＰリストコプロセッサ５００は、デュアルマルチプライアキュムレート（ＤＭＡＣ）命令を用いて、この種類のオペレーションを効率的に供給する。フィックスアップロジック５４６は、結果を３２ビットに飽和する前に、ＭＡＣユニット５４２と５４４からの２つの４０ビットの結果を組み合わせる。
【００４４】
２つのＭＡＣを備えることで、ＤＳＰリストコプロセッサ５００は効率的にパック演算を実行することができる。例えば、オペランドを、２つの１６ビットのオペランドか４つの８ビットのオペランドのどちらか一方として処理することができる。この２つのＭＡＣにより、２つの独立した乗算を同時に進行することができる。
【００４５】
さらに、ＤＳＰリストコプロセッサ５００は、命令のフルコンポーネントを含む。これには、特定のリストおよびパック演算オペレーションにも有益な、標準のＡＬＵおよびオペランド移動命令を含む。リストの長さを設定するために、ムーブトゥーレングスレジスタ（ＭＴＬ）命令を使用して、ｒｄ信号線上の値をインターナルＬＥＮＴＧＨレジスタに移動させることができる。
【００４６】
よって、本文に説明するデータプロセッサは、効率的な信号処理を実行する。データプロセッサは周知のデータプロセッサを越える多くの利点を供給する。第１に、本文のデータプロセッサは、単一の大きなメモリプールのメモリ管理、大きな一連の汎用レジスタ、汎用命令、ＲＩＳＣのハーバードアーキテクチャ、および、制御フローを含む、汎用ＲＩＳＣプロセッサの機能を利用する。
【００４７】
第２に、ＤＳＰオペレーション用の専用回路を有した特殊用途のコプロセッサを含むことで、データプロセッサは、より効率的にＤＳＰ機能を実行しつつ、一方では消費電力を低くする。
【００４８】
第３に、特定のエンジンのフェッチ、ストア、コンフリクト、例外などを必要としないことで、ＤＳＰリストコプロセッサはＲＩＳＣパイプラインを混乱させない。
【００４９】
第４に、サイズの違う２つの異なるＭＡＣユニットを提供することで、データプロセッサは、ＥＴＳＩ標準演算あるいはＡＭＤスタイルの演算の使用有無に関わらず、ＤＳＰアルゴリズムのビットの正確性（bit accuracy）をプログラマーに維持させることができる。
【００５０】
第５に、データプロセッサは、ＲＩＳＣプロセッサコアのために存在する、非常に進んだコンパイラ技術を利用し、アセンブリやＣ言語コードとしてラインに含まれ得る低レベルおよび高レベルのマクロを供給する。
【００５１】
第６に、ＤＳＰリストコプロセッサは、ＤＳＰオペレーションで頻繁に使用されるオペランドを格納するための相対的に小さなローカルリストメモリを含む。データプロセッサは、相対的に高い電力費でメインメモリから一旦これらのオペランドをフェッチし、その後、これらのオペランドを相対的に低電力費でＤＳＰリストコプロセッサ内において繰り返し使うことができる。
【００５２】
第７に、レングシーＤＳＰオペレーションに開始命令と終了命令の双方を利用できるようにすることで、データプロセッサは、ＣＰＵのパイプラインに、ＤＳＰリストコプロセッサのパイプラインと並行して動作を継続させることができ、結果がまだ利用できなければ、ＣＰＵのパイプラインだけを後でストールさせる。
【００５３】
第８に、ＤＳＰリストコプロセッサはスケーラブルなＡＬＵを有する。例示の実施形態では、ＤＳＰリストコプロセッサは２つのＭＡＣ装置を含むが、ＭＡＣ装置数は１つだけに減らしてもよいし、異なる設計上のトレードオフを満たすような数、例えば４つ、まで増やしてもよい。
【００５４】
第９に、データプロセッサは、ＦＩＲフィルタおよび畳み込みなどのＤＳＰオペレーションに特に効率的な、リストベースのメモリアーキテクチャを使用する。このアーキテクチャにより、インターナル（内部）リストメモリが実質的に再利用され、メインメモリから新たなデータをロードする必要性を減らされ、これが電力の節約と処理の効率性につながる。
【００５５】
第１０に、ＤＳＰリストコプロセッサは、異なるオペランド長とフォーマットとをサポートし、これにより効率的にＤＳＰ計算を行うことができる。したがって、例えば、ＤＳＰリストコプロセッサは、単一ドット積、２つの並行なドット積あるいは単一の複雑なドット積を計算することができる。
【００５６】
第１１に、データプロセッサは都合よくパック演算をサポートする。したがって、データプロセッサは既存の３２ビットのレジスタインターフェースをうまく利用し、ＤＳＰリストコプロセッサが２つの１６ビットサイズのＤＳＰ変数（２つの実数か１つの複素数のいずれか）をＤＳＰリストコプロセッサのリストメモリに同時にロードできるようにする。
【００５７】
第１２に、データプロセッサのアーキテクチャは、リストメモリの構成を通じてコンテキストスイッチング(context switching)を簡単にサポートする。したがって、このアーキテクチャは、コンテキストスイッチングに関連付けられた通常のオーバーヘッドを回避すべく、ハードウェアにおいてマルチプルコンテキストをサポートするよう拡張可能である。
【００５８】
第１３に、データプロセッサはさらに、ＤＳＰリストコプロセッサによって実行可能な、リッチ(rich)な一連の命令を提供することで、処理時間と電力消費の点から、ＲＩＳＣプロセッサコアの全体のパフォーマンスを最適化し、有益な機能を実行する。このような機能の例において、特定の範囲内にアドレスをラッピングし、ＤＳＰリストコプロセッサ内のリストにロードされた入力アレイから自己相関アレイを求める。当業者にとっては、多くのその他の有益な機能が、上述の命令セットから明らかであろう。
【００５９】
これまでの詳細な記述では、少なくとも１つの実施形態が示されているが、当然、膨大な数の変形が存在する。さらに、当然、例示の実施形態は単なる例にすぎず、本発明の範囲、適用性、あるいは構成を何ら限定するものではない。むしろ、これまでの詳細な記述は例示的実施形態を実装するために好都合なロードマップを当業者たちに与えることになるであろう。添付の特許請求の範囲に記載した本発明の範囲およびその法律上の均等物から逸脱することなく、構成要素の機能および配置を様々に変更することが出来る点に留意されたい。
【図面の簡単な説明】
【００６０】
【図１】従来技術で周知のデータ処理システムのブロック図。
【図２】本発明によるデータ処理システムのブロック図。
【図３】図２のＲＩＳＣプロセッサコアのブロック図。
【図４】図３のＲＩＳＣプロセッサコアにより使用されるコプロセッサ命令フォーマットのブロック図。
【図５】図２のＤＳＰリストコプロセッサのブロック図。
【図１】
2008530689.tif 000005
【図２】
2008530689.tif 000006
【図３】
2008530689.tif 000007
【図４】
2008530689.tif 000008
【図５】
2008530689.tif 000009
【手続補正書】
【提出日】平成18年12月13日(2006.12.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサコア（３００）と、
前記プロセッサコア（３００）に結合されたインターフェース（２１０）と、
前記インターフェース（２１０）を介して前記プロセッサコア（３００）に結合され、第１リストメモリ（５２２）を有するコプロセッサ（５００）とを備え、
前記プロセッサコア（３００）は、第１の所定の命令（４００）に応答して、前記インターフェース（２１０）を介して前記コプロセッサ（３００）にオペランドを供給し、
前記コプロセッサ（５００）は前記第１リストメモリ（５２２）に前記オペランドを格納し、前記所定の命令（４００）に対応するオペレーションを前記第１のリストメモリ（５２２）からの複数の値を使用して実行し、結果を供給する、データプロセッサ（２００）。
【請求項２】
前記コプロセッサ（５００）はさらに第２リストメモリ（５２４）を含み、さらに、前記第２リストメモリ（５２４）からの複数の値を使用して前記第１の所定の命令に対応する前記オペレーションを実行し、前記結果を供給する、請求項１記載のデータプロセッサ（２００）。
【請求項３】
前記第１リストメモリ（５２２）からの前記複数の値はサンプルデータ値を含み、前記第２リストメモリ（５２４）からの前記複数の値は複数のフィルタ係数を含み、かつ、前記第１の所定の命令に対応する前記オペレーションは、有限インパルス応答（ＦＩＲ）フィルタ出力演算を含む、請求項２記載のデータプロセッサ（２００）。
【請求項４】
前記コプロセッサ（５００）は第１のマルチプライアキュムレート（ＭＡＣ）ユニット（５２４）を含む、請求項１記載のデータプロセッサ（２００）。
【請求項５】
前記コプロセッサ（５００）はさらに第２ＭＡＣユニット（５４４）を含み、前記第１ＭＡＣユニット（５４２）および第２ＭＡＣユニット（５４４）の各々は選択可能な飽和モードを有する、請求項４記載のデータプロセッサ（２００）。
【請求項６】
前記コプロセッサ（５００）は、第２の所定の命令に応答して、前記第１の所定のオペレーションが完了すると、前記結果を前記インターフェース（２１０）に送る、請求項１記載のデータプロセッサ（２００）。
【請求項７】
前記第１の所定の命令は、有限インパルス応答（ＦＩＲ）フィルタ開始命令を含み、前記第２の所定の命令はＦＩＲフィルタ停止命令を含む、請求項６記載のデータプロセッサ。
【請求項８】
前記ＦＩＲフィルタ開始命令に応答して、前記プロセッサコア（３００）は命令の実行を継続し、かつ、前記ＦＩＲフィルタ停止命令に応答して、前記プロセッサコア（３００）は、前記コプロセッサ（５００）が前記所定のオペレーションが完了したという信号を送るまでは、更なる命令の処理を停止する、請求項７記載のデータプロセッサ（２００）。
【請求項９】
第１の命令に応答して、中央処理装置（３００）のレジスタにオペランドをロードするステップと、
第２命令（４００）に応答して、前記レジスタから前記オペランドをインターフェース（２１０）に供給するステップと、
前記第２命令（４００）に応答して、前記インターフェース（２１０）に結合されたコプロセッサ（５００）の第１リストメモリ（５２２）に前記オペランドを格納するステップと、
前記コプロセッサ（５００）において、前記第１リストメモリ（５２２）からの複数の値を使用して、前記第２命令に対応する所定のオペレーションを実行し、結果を供給するステップとを含む、
データ処理システム（２００）を効率的に動作させる方法。
【請求項１０】
前記所定のオペレーションを実行するステップは、前記コプロセッサ（５００）の前記第１リストメモリ（５２２）からの前記複数の値と、第２リストメモリ（５２４）からの複数の値を使用して、前記所定のオペレーションを実行するステップをさらに含む、請求項９記載の方法。
【国際調査報告】
2008530689.tif 000010
2008530689.tif 000011
2008530689.tif 000012