(57)【要約】プログラム可能なプロセッサアーキテクチャを実現するために、マイクロプロセッサ技術をスイッチファブリック電気通信技術と組み合わせた新規の信号プロセッサ技法及び装置である。動的な、並列な、及びフレキシブルな態様において、スイッチファブリックを通じて連絡することにより、各特定アプリケーションごとにソフトウェアによって前記プロセッサと、その機能ブロック間の接続とが、設定されて、再構成可能なパイプラインが実現される。前記パイプラインの段の長さと順序とが、時々変動し、及びアプリケーションごとに変動する。ハンドセット、セットトップボックス、及びこれらに類するもののような単一デバイス内の多種多様な信号処理ニーズの激増に、前記新規の信号プロセッサ技法及び装置が、いまだかつてない性能、コスト及び電力節約、及び完全なアプリケーションフレキシビティによって、見事に対処する。
2010541088.tif 000002
【特許請求の範囲】
【請求項１】
再構成可能なパイプライン段を有したプログラム可能な組み込みプロセッサを組み合わせて有する変動するアプリケーションに対してほぼ全てのタイプのソフトウェア計算命令セットを適応させるためのフレキシブルなデータパイプラインアーキテクチャであって、該再構成可能なパイプライン段の順序と長さは、前記プロセッサの、並びに、その機能構成要素間の接続の、対応する設定を確立する変動するアプリケーション命令セットに応答して変動して、該アプリケーションに具体的に適合することからなる、データパイプラインアーキテクチャ。
【請求項２】
動的な、並列な、及びフレキシブルな態様において、スイッチを通じて前記機能構成要素が連絡する、請求項１に記載のデータパイプラインアーキテクチャ。
【請求項３】
前記スイッチが、動作中に各命令セットを介してリアルタイムに設定される、請求項２に記載のデータパイプラインアーキテクチャ。
【請求項４】
ソフトウェアコンパイラによって前記命令セットが生成され、該ソフトウェアコンパイラは、アプリケーションソフトウェア命令を受け取って、それを分析して、コンピュータによるどのタスクが、各アプリケーションにおいて実施されるために必要であるかと、前記プロセッサと、前記機能構成要素間の接続とを如何に設定するかとを決定して、前記プロセッサと前記機能構成要素とを適応させることからなる、請求項３に記載のデータパイプラインアーキテクチャ。
【請求項５】
命令デコードの後に、前記パイプライン段の順序と長さが、時々変動し、及びアプリケーションごとに変動する、請求項４に記載のデータパイプラインアーキテクチャ。
【請求項６】
前記機能構成要素の前記設定は、固定された単一パイプラインデータストリームとは対照的に、フレキシブルな構造を可能にする、請求項５に記載のデータパイプラインアーキテクチャ。
【請求項７】
サイズが変動させられる単一ソフトウェア命令セットと複雑なソフトウェアセットとの両方が、同じパイプラインを共に使用することを効率良く可能にさせられる、請求項４に記載のデータパイプラインアーキテクチャ。
【請求項８】
前記スイッチが、交差接続スイッチマトリクスタイプであり、前記プロセッサの機能構成要素が、加算器及び乗算器の演算実行ユニットと、前記スイッチを通じて動的に及び並列に相互接続可能なメモリユニットとを含むことからなる、請求項４に記載のデータパイプラインアーキテクチャ。
【請求項９】
前記アーキテクチャは、スケーラブルであり、より多くの演算実行ユニットを必要とする計算集中的なアプリケーションは、従って、複雑さがより少ないアプリケーションとなることからなる、請求項８に記載のデータパイプラインアーキテクチャ。
【請求項１０】
前記コンパイラに対する修正が必要とされること無く、及び、開発時間にほとんど影響を及ぼさずに、演算及び／又はメモリユニットの量が、ある特定アプリケーションの設計サイクル中に決定される、請求項９に記載のデータパイプラインアーキテクチャ。
【請求項１１】
前記メモリユニットが、幾つかのバンクに分割され、前記スイッチに接続されており、それにより、メモリアクセス帯域幅が広げられ、複数の演算ユニットを完全に利用させることが可能になることからなる、請求項８に記載のデータパイプラインアーキテクチャ。
【請求項１２】
並列処理を実施して、内部プロセッサ機能構成要素の計算機能を効率良く完全に利用するために、前記プロセッサが設定される、請求項１１に記載のデータパイプラインアーキテクチャ。
【請求項１３】
各アプリケーションごとに必要とされるクロック速度サイクルの総量を低減させることを前記効率性が可能にする、請求項１２に記載のデータパイプラインアーキテクチャ。
【請求項１４】
前記より低いクロック速度が、電力消費を低減させ、及び、２つのパイプライン段の間の論理をより多くすることを可能にして、より少ないパイプライン段をもたらす、請求項１３に記載のデータパイプラインアーキテクチャ。
【請求項１５】
前記より低いクロック速度が、より多くの計算力を提供し、より複雑な計算及びアプリケーションを処理することを可能にする、請求項１３に記載のデータパイプラインアーキテクチャ。
【請求項１６】
前記プロセッサ内部の前記プロセッサ機能構成要素を、固定されたパイプライン段の内部へと置くこととは区別して、前記スイッチが、前記プロセッサ内部の前記プロセッサ機能構成要素を接続する、請求項２に記載のデータパイプラインアーキテクチャ。
【請求項１７】
（１）前記プロセッサの内部構造が時間とともに変動させられ得るため、前記プロセッサは動的に設定可能であり、（２）機能構成要素の数が、特定アプリケーションによってのみ決定されるため、前記プロセッサはスケーラブルであり、及び、（３）前記プロセッサが、多くの様々なアプリケーションに対して適用可能な真のプロセッサであるため、前記プロセッサはプログラム可能であることからなる、請求項２に記載のデータパイプラインアーキテクチャ。
【請求項１８】
再構成可能なパイプライン段を有したプログラム可能な組み込みプロセッサを組み合わせて有する、変動するプログラムアプリケーションに対してソフトウェア計算命令を適応させるためのフレキシブルなデータパイプライン構造であって、該再構成可能なパイプライン段の順序と長さは、変動するプログラムアプリケーション命令に応答して変動し、該プロセッサは、コンパイラからのアプリケーション命令を格納するためのプログラムメモリを含み、命令フェッチ及びデコードユニットが、該プログラムメモリに接続されており、スイッチマトリクスが、複数の演算実行ユニット及びメモリユニットを選択的に相互接続し、及び、該命令デコードユニットによって提供されたスイッチ制御ユニットによって制御され、該スイッチマトリクスが、完全なアクセススイッチングを、２つのユニット間における任意の許容可能な接続に提供し、該スイッチマトリクスは、ＤＭＡに接続されていることからなる、データパイプライン構造。
【請求項１９】
前記演算実行ユニットが、整数乗算器と、整数ＡＬＵと、浮動小数点乗算器と、浮動小数点ＡＬＵとからなるグループから選択される、請求項１８に記載のデータパイプライン構造。
【請求項２０】
前記メモリユニットが、データメモリバンクと、Ｌ２メモリバンクとのうちの１つである、請求項１８に記載のデータパイプライン構造。
【請求項２１】
直接的に前記コンパイラに対して提供されこととなる特別な計算機能を含むＣライブラリが前記プロセッサに提供されており、前記演算実行ユニット動作を設定するために、該コンパイラは、該プログラムを所望のプロセッサ機械コード命令に変換し、該スイッチは、様々な前記実行ユニットを接続するための命令と、前記メモリユニット動作のパラメータを設定するための命令とを制御することからなる、請求項１８に記載のデータパイプライン構造。
【請求項２２】
命令シーケンスと、タスクが必要とされる実行ユニットとに基づいて、前記コンパイラが、各プログラムごとに並列性を活用して、適切な時間シーケンス内における機械命令を生成して、前記実行ユニットと、前記メモリユニットと、前記ＤＭＡと、これらの間の接続とを設定する、請求項２１に記載のデータパイプライン構造。
【請求項２３】
メモリアクセスの開始アドレスと、各アクセス後の自動メモリアドレスインクリメントと、メモリアクセスクロックサイクル頻度とを提供する各メモリユニットに、特別なメモリユニット設定命令が提供される、請求項２１に記載のデータパイプライン構造。
【請求項２４】
前記スイッチマトリクスを通じて提供される１つの命令が、複数のメモリユニットを設定し、アドレスとモード情報とを提供する、請求項２３に記載のデータパイプライン構造。
【請求項２５】
１つの演算実行ユニットの出力から別の演算実行ユニットの入力への接続と、任意のメモリユニットからある実行ユニットの入力への接続と、前記ＤＭＡから任意のメモリユニットへの接続と、前記命令デコーダから任意の実行ユニット、メモリユニット、及び／又はＤＭＡへの接続とを設定するために、前記スイッチ制御ユニットが、スイッチ制御ベクタによって動作させられる、請求項１８に記載のデータパイプライン構造。
【請求項２６】
様々な異なる信号の集中に適応させるように、すなわち、アプリケーション要求を並列に処理するように構成された単一パッケージ内に提供される、請求項１に記載のデータパイプライン構造。
【請求項２７】
プロセッサに提供されるコンピュータソフトウェア計算命令を処理する方法であって、
入力されたユーザソフトウェアアプリケーションをコンパイルし及び分析して、各ソフトウェアアプリケーションごとに実行されるために必要な特定の計算タスクを決定し、
前記プロセッサの、並びに、その特定アプリケーションに必要とされるその機能構成要素間の接続の、アプリケーション設定ごとに、リアルタイムに命令セットを生成し、
スイッチングを通じて前記プロセッサを、可変に設定可能な長さ及び順序の段のデータパイプラインに対して接続し、及び、
動的な、並列な、及びフレキシブルな態様において、前記スイッチングを通じて各アプリケーションごとに設定された前記プロセッサ構成要素間において連絡し、それに応じて、各特定アプリケーションごとに前記パイプライン段の適切な長さと順序とを設定する
ことを含む、方法。
【請求項２８】
前記機能構成要素が、複数の演算実行ユニットと、複数のメモリユニット又はバンクとを含む、請求項２７に記載の方法。
【請求項２９】
前記スイッチングは、異なる時間における様々なアプリケーションアルゴリズムのための様々な構成へと前記実行ユニットと前記メモリユニットとを設定するための、前記実行ユニットと前記メモリユニットとの間における交差接続スイッチングであり、様々な特定ソフトウェアアプリケーションに対応することからなる、請求項２８に記載の方法。
【請求項３０】
プログラム可能なプロセッサアーキテクチャを実現するために、マイクロプロセッサ技術をスイッチファブリック電気通信技術と組み合わせた信号処理の方法であって、
動的な、並列な、及びフレキシブルな態様において、スイッチファブリックを通じて連絡することにより、各特定アプリケーションに対してソフトウェアによって前記プロセッサと、その機能ブロック間の接続とが、設定されて、再構成可能なパイプラインが実現され、
前記パイプラインの段の長さと順序とが、時々変動させられ、及びアプリケーションごとに変動させられ、
該方法が、ハンドセット、及びセットトップボックス、及びこれらに類するもののような単一デバイス内の多種多様な信号処理ニーズの激増に適応させることに対処する
ことからなる、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
分野
本発明は、一般に、リアルタイム信号処理の分野に関し、特に、ハンドセットか又はセットトップボックスか又は単一パッケージか又はそれらに類するもののような単一デバイス内に存在することが望まれるますます多様な異なるデータ通信機能の集中により駆動されている信号処理要求の増加の問題に関する。
【背景技術】
【０００２】
発明の背景
ハンドセット内、セットトップボックス内、及び他の単一デバイスパッケージ内におけるディジタル信号処理（ＤＳＰ）ソフトウェアアルゴリズム計算のための今日のプロセッサは、広範囲の様々な異なるリアルタイム信号処理ニーズと、単一デバイス内の対処されるべき必要とされる制御される処理機能（処理能力）とが集中することに対応する（適応させる）問題に奮闘している。これまで発展してきた技術標準によって構成された単一デバイス内における、ますます多くの機能のそのような集中は、信号処理要求を指数関数的に増加させることとなり、新たな技術課題を生み出すこととなった。このことは、特に、モバイル装置に関して、並びに、ホームネットワーク標準及び他のアプリケーション間における様々なサービスに関して、当てはまる。
【０００３】
新興成長市場内における現在のシステムオンチップ（ＳｏＣ）設計のための既存の技術選択は、上述のＤＳＰ、汎用プロセッサ（ＧＰＰ）、及び特定用途向け集積回路（ＡＳＩＣ）ブロックを含む。しかしながら、残念なことには、これらの各々は、問題を完全に解決することには至っていない。これらのうち、ＤＳＰはプログラム可能であるが、問題を完全に解決することには達していない。ＤＳＰは、様々なアプリケーションについてプログラム可能であり、及び、良好なリアルタイムの性能をＤＳＰの中心のアルゴリズムに対して提供するが、音声及びデータ通信のように、ＤＳＰは、コンテンツの処理能力（処理機能）が限定される。ＧＰＰによって、これもまた、様々なアプリケーションがプログラム可能であるが、ＧＰＰは、貧弱なリアルタイム性能を有し、及び、非常に広範囲な制御処理能力（制御処理機能）のための要件を有する。ＡＳＩＣブロックのアプローチはどうかといえば、これは、処理能力の観点から特定用途のアルゴリズムに対して最適化され得るが、この技法は、非常に制限されたプログラム可能性を有しており、新たなアプリケーション、技術、及び標準について再利用することが通常できない。これら３つの技術的なアプローチを組み合わせるよう試みることは、更に、不可能に近いトレードオフを提供する（例えば、要件を満たすために、単一ＳｏＣ内において、２個のＤＳＰ＋２個のＧＰＰ＋１３個のＡＳＩＣアクセラレータブロックと組み合わせようとしている、例えば、クアルコム３ＧＭＭベースバンドなど）。更に、そのようなアプローチは、多くの実現可能な機能のための専用ハードウェアを必要とし、該専用ハードウェアは、そのような使用モード内において、同時には実行されず、チップ（ダイ）領域を常に占有したままであり、電力を消費する。
【０００４】
「解決法」としての現在の技術での問題は、システムが、これまで以上により複雑になり、融通が利かないものになり、及びコストがかかるものになると、極めて複雑なシステムを結果としてもたらすより専門化されたコアが必要になるという事実にあり、構成要素及びシステムのスケーラビリティが、ずっと差し迫った問題になってきている。新規の機能、アプリケーション、及び標準は、更に、組み込むことがより困難になる。より複雑なシステムは、追加的には、より長い開発サイクルと、より高いコスト／性能・比とを意味する。
【０００５】
本発明は、実に、下記において完全に説明されるように、新規のプログラム可能コアを提供することにより、前記解決策に対処する。現在のプロセッサアーキテクチャの技術は改善提案によって奮闘しているが、現在のプロセッサアーキテクチャが成し遂げることが不可能な、現在の装置アプリケーションの全ての処理ニーズに、該新規プログラム可能コアは、対処することが可能である。
【０００６】
しかしながら、パイプラインプロセッサの出現は、ＣＩＳＣ（複合命令セットコンピュータ）からＲＩＳＣ（縮小命令セットコンピュータ）へと実行速度を極めて増加させた。例えば、５命令の場合には、ＣＩＳＣは、直列にそれらを実行するのに３１サイクルが必要とされる一方で、パイプラインのＲＩＳＣは、３５０％の改善が提供される。パイプライン化された実装のために追加されたハードウェアによってフォローされる、現在の深くパイプライン化されたマルチ課題（イシュー）ＤＳＰアーキテクチャと、機能ユニットとが追加されて、より高速なバス及び高められたクロック速度でのデータフローの並列性が高められる。しかしながら、このことは、複雑さを増加させ、チップ（ダイ）のサイズをより大きくさせ、及びより高い電力を消費させる結果となってしまっている。しかしながら、更に重要なことには、新しく生まれるアプリケーションが、より多くの様々な信号処理アルゴリズムを必要とするので、多くのものは、従来のＤＳＰ技術、すなわち、声、音、画像処理、データ通信、などによって適応（対応）される範囲を超えている。パイプライン化されたアーキテクチャは、ＣＰＵの性能を改善させるが、計算の順序が、パイプライン内に整列した機能ブロックと異なる時には、パイプラインの解決法はその利点を失う。このケースでは、計算が、よりいっそう長くかかる。該パイプラインの解決法は、動作中、非常に効率的であるとは必ずしも限らず、そのいずれかである。例えば、ロード及びストア命令は、数学的（算術的）な計算のために段（ステージ）を決して使用しない。更に、ある特定パイプラインは、全てのアルゴリズムのニーズに機能することが全くできない。すなわち、モバイル装置及び民生用装置内において、爆発的に増える様々なリアルタイム信号処理が、今や望まれているが、現在のＤＳＰ及びＧＰＰ技術によって、そのような新たに生まれる信号処理ニーズに適切に対処することができない。
【０００７】
本発明は、プログラム可能なコアと再設定可能（再構成可能）なパイプラインとによって、突破口の解決法を提供したと考えられる。それらは、固定パイプラインアーキテクチャに基づいて制御プログラムを最適化するために開発したマイクロプロセッサベースの技術の新規組み合わせを通じて、今日の様々なアプリケーションの処理ニーズに見事に対処し、インターネットルータ／スイッチ及び組み込みプロセッサを含む電気通信機器の異なる分野ごとにファブリック技術を切り換える。本発明は、実に、ＣＩＳＣアーキテクチャとＲＩＳＣアーキテクチャとの両方の強みを組み合わせるが、現在の高性能なＤＳＰコアの性能を凌駕し、汎用プロセッサのプログラム可能性及びフレキシビリティを「集中型」世界に提供し、並びに、通信アルゴリズム、マルチメディア処理（オーディオ、ビデオ、画像）、ネットワーキングプロトコル、制御機能、及びこれらに類するものを含む広範囲の様々な処理ニーズに対して非常に適したアーキテクチャを、すなわち、要するにアプリケーションに「とらわれない」アーキテクチャを、「集中型」世界に提供する。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
発明の目的
従って、本発明の主要な目的は、単一装置内において集中する場合を含めて、広範囲の様々な異なるリアルタイム信号処理アプリケーションのソフトウェア計算命令を処理するための新規の及び改善された方法とアーキテクチャ装置又はシステムとを提供することである。該新規の及び改善された方法及びアーキテクチャ装置又はシステムは、先行技術アプローチにおける上述の制限及び／又は不利点のいかなる影響も受けないであろうが、それとは逆に、今日の装置及び拡張するアプリケーションの処理ニーズに対処することを提供する。
【０００９】
更なる目的は、マイクロプロセッサベースの技術の新規組み合わせを通じて、そのような改善を提供することであり、切り換わる電気通信の異なる分野によってファブリック技術を切り換えることである。
【００１０】
更に別の目的は、プログラム可能な組み込みプロセッサと、再設定可能（再構成可能）なパイプライン段との新規組み合わせを提供することであり、プロセッサ機能構成要素を設定（構成）することは、従来の固定された単一パイプラインデータストリームとは区別されて、フレキシブルな及び特定用途に適合したパイプラインを可能にする。
【００１１】
別の目的は、このようなフレキシビリティを、動的な、並列な、及びフレキシブルな態様において、交差接続スイッチファブリックを通じて提供することであり、該スイッチは、動作中に及びリアルタイムに各アプリケーションの命令セットを通じて設定される。
【００１２】
更に別の目的は、このような新規技法を提供することであり、アプリケーションソフトウェアの命令デコードの後に、パイプライン段の長さと、該段（ステージ）の順番とが、時々変動し、及びアプリケーションごとに変動する。
【００１３】
追加的な目的は、このような新規のプログラム可能な組み込みプロセッサと、再設定可能（再構成可能）なパイプラインとを提供することであり、そのアーキテクチャは、スケーラブルであり、内部プロセッサ機能構成要素の計算機能を完全に利用して並列処理を実施するために該プロセッサが設定（構成）される。
【００１４】
他の及び更なる目的が、下記において指摘されることとなり、並びに、添付の特許請求の範囲内においてより完全に詳しく記述される。
【課題を解決するための手段】
【００１５】
概要
しかしながら、その新規の方法体系の態様から要約すれば、本発明は、プロセッサに提供されるコンピュータソフトウェア計算命令を処理する方法を含み、該方法は、
入力されたユーザソフトウェアアプリケーションをコンパイルし及び分析して、各ソフトウェアアプリケーションごとに実行されるために必要な特定の計算タスクを決定し、
前記プロセッサの、並びに、特定アプリケーションに必要とされるその機能構成要素間の接続の、そのアプリケーション設定（構成）ごとに、リアルタイムに命令セットを生成し、
スイッチングを通じて前記プロセッサを、可変に設定可能な長さ及びその段（ステージ）の順序のデータパイプラインに対して接続し、及び、
動的に、並列に、及びフレキシブルな態様において、前記スイッチングを通じて各特定アプリケーションごとに設定（構成）されたプロセッサ構成要素を連絡し、それに応じて、各特定アプリケーションごとに前記パイプライン段の適切な長さと順序とを設定する
ことを含む。
【００１６】
本発明を実施するための装置実施形態については、該装置実現形態は、再設定可能（再構成可能）なパイプライン段を有するプログラム可能な組み込みプロセッサを組み合わせて有する変動するアプリケーションにほぼ全てのタイプのソフトウェア計算命令セットを適応させるためのフレキシブルなデータパイプラインアーキテクチャをもくろむ。該再設定可能（再構成可能）なパイプライン段の順序と長さは、前記プロセッサの、並びに、その機能構成要素間の接続の、対応する設定（コンフィギュレーション）を確立する変動するアプリケーション命令セットに応答して変動して、前記アプリケーションに具体的に適合する。
【００１７】
本発明の新規の組み込みプロセッサアーキテクチャは、前述の、従来のＤＳＰ及びＧＰＰ技法よりも、より強力なスケーラビリティ及びフレキシビリティを可能にし、及び、重要なことには、該新規の組み込みプロセッサアーキテクチャは、アプリケーションにとらわれないものであり、より短いアプリケーション開発サイクルを必要とし、及びより低いコスト／性能・比を必要とする。
【００１８】
好適な及び最適なモードの実施形態は、詳細に後述される。
【００１９】
図面
本発明は、次に、添付図面に関連して説明される。
【図面の簡単な説明】
【００２０】
【図１】2005年にノキアによって公表されたパイタイプの図であり、前述の広範囲な様々なリアルタイムの信号処理アプリケーション要件、並びに、インターネットと共に使用するために単一装置内に必要とされる良好な制御処理機能、すなわち、例示的な「メディア（媒体）、電気通信（テレコム）、民生用電子機器、情報技術、及びエンターテイメント（娯楽）」アプリケーションに対する、ディジタルコンテンツ、サービス、ソフトウェア、及びデバイスを示す図である。
【図２】増加した信号処理要求（図示されたような、「セルラーアクセス」、「ホットスポットアクセス」、「プロキシミティ及びパーソナルエリアアクセス」、及び「ブロードキャスティング・マスメディアテレビ」）を押し進める、これまでの増加した技術標準と組み合わされた単一装置（「集中型デバイス」）内の多くの機能の集中を示す、類似の、ノキアによる説明を要しない（見ればすぐにわかる）図である。
【図３】ユーティリティサービスの提供と、電気通信／ケーブル・ブロードキャスティングと、家庭電化製品アプリケーションとを含む類似の集中型ホームネットワークシステム図であり、ここでもまた、ネットワーク内における非常に様々な技術、様々なホームネットワーク標準、及び様々なサービスに適応させるニーズの明示（デモ）を行っており、これら全てが、信号処理要求を増加させることにつながっている。
【図４】簡略化した形態における、本発明のプログラム可能な組み込みコアプロセッサ・再設定（再構成）可能パイプラインシステム及び方法の好適実施形態の、組み合わされたブロック及び概略回路図である。
【図５】図４のコアプロセッサのプログラミングにおけるステップを示す流れ図である。
【図６】１命令による図４の複数メモリユニットの設定（コンフィギュレーション）の図である。
【図７】図４の詳細なスイッチ制御命令及び制御ユニットのブロック及び概略回路図である。
【図８】３アセンブリ命令の例示的な並列処理についての、図４のシステムにおける、フレキシブルなパイプライン及び並列処理を示す類似の図である。
【図９】本発明のコアコンパイラ動作（図５）を示すチャートを示す図である。
【図１０】本発明のフレキシビティに対処する、ユニバーサル信号処理アプリケーションの図である。
【実施例】
【００２１】
好適実施形態（複数）の説明
まず最初に、図４内に示される本発明の基本的な及び一般的なパイプライン構造及び方法体系図を見てみると、プログラム可能な組み込みプロセッサのためのフレキシブルなデータパイプラインアーキテクチャが、Ｐにおいて概して表されており、再設定（再構成）可能なパイプライン段が、ＰＳにおいて表されている。プログラムメモリ１内に格納されたソフトウェアアプリケーション命令が、２においてフェッチされて、交差接続スイッチマトリクス５のスイッチ制御４を制御するために、３においてデコードされ得る。
【００２２】
本発明のプロセッサＰは、現在のＲＩＳＣプロセッサ内において使用されているものと同じタイプの機能構成要素（演算実行ユニットＥＸ１〜ＥＸｎ（例えば、乗算器か、加算器か、シフタか、又はパイプライン化された乗算器）として、及びＭＵ１〜ＭＵｎにおいてデータメモリバンクのようなメモリユニットとして示されている）を有することができるが、本発明のプログラム可能なプロセッサ内のこれらの構成要素は、ＲＩＳＣプロセッサとは根本的に異なるやり方で互いにやり取りし合う。今日の固定された段のパイプラインＲＩＳＣプロセッサ内において、複数命令が、固定された順序において実行される。その結果として、そのようなプロセッサ内の機能ユニットは、効率良く利用されず、それらは、次第により複雑に且つより高価になる。
【００２３】
類似の機能ユニットをパイプライン内へと並べる代わりに、本発明は、スイッチマトリクス５を用いて、それらを構成するか又は設定するためにそれらを接続することのフレキシビティを、特定ソフトウェアアプリケーション命令セットにおける必要とされる特定タスクに提供する。更に、その交差接続スイッチ５は、一方の側の実行ユニットＥＸ１〜ＥＸｎと、その他の側のメモリブロックＭＵ１〜ＭＵｎとを接続して、様々な時間における、様々なアプリケーションの様々なソフトウェアアルゴリズムに従って、様々な構成へとそれらを設定する。
【００２４】
プログラムメモリ１のプログラミングが、図５内に示されている。図５において、コンパイラ６が、ソースコードプログラムＣ／Ｃ＋＋を、機械コード命令７に変換し、それら機械コード命令７をプログラムメモリ１に提供する。実行ユニットを動作モードへと設定するための伝統的な命令と、様々なハードウェア実行ユニット間の接続を可能にする特別なスイッチ制御命令ＳＣと、メモリユニット動作のためのパラメータを設定するための特別なメモリユニット設定命令ＭＵとを、これら機械コード命令７が含む。コンパイラ６は、特定命令シーケンスとハードウェア利用可能性とに基づき、任意の特定の所与のプログラムについて、並列性を活用する。該コンパイラは、次いで、適切な時間シーケンス内における機械命令を生成し、該機械命令が、ハードウェアユニットＥＸを設定する。ＭＵ及びＤＭＡ（ダイレクトメモリアクセス）及びそれらの間の接続が、図９のチャート内に概説されている。
【００２５】
ＲＩＳＣタイプの動作において、以前に記載したように、全てが同じ固定クロックサイクル内における固定パイプライン段によって命令が実行されるが、本発明の交差接続スイッチ５は、実行ユニットＥＸとメモリブロックＭＵとを接続し、以前に記載したように、それらを、様々な時間において様々なアルゴリズムごとに様々な構成へと設定する。交差接続スイッチ５の接続は、プログラムコンパイル時間中に決定される。コンパイラは、プログラム内の各タスクを分析する。その時点での利用可能なリソースに基づき、それが、該利用可能なリソースを、現在のタスクのためにか、又は命令実行を遅らせるために、設定することを決定する。図内の実行ユニットＥＸとメモリバンクとが、並列に複数タスクを実行することを可能にするネットワーク内へとルーティングされる。或いは、それが、全リソースを、１つの巨大なパイプライン内へと設定する。しかしながら、各実行ユニットＥＸの機能性は、実現するためには、複数のサイクルを要する可能性がある。各ＥＸは、唯一の機能性を有することができ、かなり複雑な機能について構成され得る。これらのことを、固定パイプラインの解決法によって実現することは非常に困難である。一方のＥＸから他方に向けての全てのこのデータは、先行技術のバスを通る代わりに、スイッチを通過し、次いで、メモリか又はどこか別のところへと伝達される。そのことは、必要とされるバス帯域幅を極めて低減させる。
【００２６】
以前に説明したように、シンボルＥＸは、演算ユニット、すなわち、乗算器か、加算器か、シフタか、又はパイプライン乗算器などである。乗算器を、例えば、多くの加算器によって構成することができる。例えば、１６×１６個の乗算器を、１６個の加算器により構成することができる。更に、これら加算器を、パイプライン化することができる。このことは、あるサイクル数の後に、１乗算器を終了させることができることを意味する。例えば、Ａ＋Ｂ＋Ｃ＋Ｃは、通常、４サイクル内において実行されなければならない。乗算器として加算器が使用される場合には、１サイクル内において、４つの加算を実行することができる。従って、ＥＸは、非常にフレキシブルなものとすることができ、ランタイムにおけるオペレーショナルコードによって構成され得る。スイッチ５に接続された複数メモリバンクＭＵは、並列処理にデータを提供する。１つのメモリしか有さず、且つ、各サイクルごとにフェッチされ得る１つのデータしか有していない汎用ＣＰＵ設計とは異なり、各ＥＸは、それ自体のデータを要求することができる。更に、ＥＸユニットは、式を構成することができる。本発明のアプローチによって、ただ１つではない、複数のＥＸは、汎用プロセッサ内か又はＤＳＰ内として処理され得る。このことは、より複雑な問題を解くことにおいて効率性を提供する。
【００２７】
本発明のアーキテクチャは、同時に複数のデータを処理することができ、同様にそれらを書き戻すことができ、常に１リソースしか使用することができずその残りをアイドル状態のままとする従来の汎用プロセッサ及びＤＳＰｓとは異なり、デバイス内部のハードウェアを完全に利用することを、より効率良く可能にさせる。コンパイル時間中に設定（構成）可能であることは、論理設計の複雑さを最小化するだけでなく、より多くのアプリケーションをサポートすることも可能にする。
【００２８】
今までの高まった計算力のニーズに対処するために、今日のパイプラインＤＳＰ及び汎用プロセッサ設計は、２つの共通に用いられるアプローチをとる、すなわち、クロック速度を高めることと、ますます多くのアクセラレータを集積させることである。しかしながら、必要とされることは、より速い命令デコーダではなく、或いは、より速い命令フェッチではない。より多くの計算力が必要とされる時には、本発明は、設計フェーズ中に、より多くの実行ユニットを単に使用し、プロセッサ設計の残りは、変更されないままにしておく。チップ（ダイ）増加が、非常に制限されたものになることとなる。その結果として、現在の段の固定パイプラインアプローチと比較して、より少ない電力消費になることとなり、より小さなチップ（ダイ）サイズとなることとなる。本発明のアーキテクチャは、汎用プロセッサとＤＳＰとの両方をカバーする。
【００２９】
図４に戻ると、３においてデコードされたアプリケーション命令は、スイッチ制御データＳＣを、スイッチマトリクス５のスイッチ制御４に提供し、次いで、該スイッチ制御４が、スイッチング論理に効果を及ぼすための、９において概して示されたスイッチ制御ベクタを提供する。１つのＥＸユニットの出力から別のＥＸユニットの入力へと、任意のＭＵユニットからＥＸ入力へと、ＤＭＡ（ダイレクトメモリアクセス）から任意のＭＵへと、及び命令デコーダ３から任意のＥＸか、ＭＵか、又はＤＭＡへと、各アプリケーションごとの接続を設定するために、ラベル付けられたような該スイッチベクタを、該スイッチ制御が提供する。このことは、図７内においてより詳細に説明されている。図７において、起動後にスイッチ制御ベクタ値をデフォルトにするために、４つのフリップフロップＦＦ１〜ＦＦ４が全て設定される。スイッチ制御命令のための制御信号が、適切なベクタビット（１，５，７）を設定することとなり、９における制御ベクタ論理を設定して、スイッチ制御のための適正なタイムスロットを選択して、ユニットの所望のスイッチ接続のために適切なフリップフロップを作動させて、マトリクス５によってプロセッサを設定（構成）する。そのようなスイッチファブリックのスイッチ制御のためのタイムスロットにおける周知のベクタビット論理選択の、更なる詳細事項を、例えば、我々の以前の米国特許番号第６，９９９，４６４号、６，６８４，３１７号、７，０３９，８５１号、及びその中の引用文献から得ることができる。
【００３０】
もしも望むようであれば、命令デコード３は、図６内において示されているように、複数のプロセッサメモリユニットを、１命令で設定することができる。該メモリユニット設定命令は、所与のメモリユニットについての以下のパラメータを設定する。すなわち、メモリアクセスのための開始アドレスと、各アクセス後の自動メモリアドレスインクリメント（＋１＋２，＋４，など）と、１，２，３，・・・クロックサイクル毎などのメモリアクセス頻度と、を設定する。
【００３１】
詳細な説明が図８の下のリストに挙げられたベクタ積、移動、及びベクタ和（合計）による３アセンブリ命令の並列処理のケースの場合の、乗算器ユニットＭＵＬＴ１及びＭＵＬＴ２及びユニットＡＬＵ１及びＡＬＵ２（算術演算論理ユニット）及びメモリユニットＭＵ１〜ＭＵ４を有した、本発明のフレキシブルな再設定（再構成）可能なパイプライン及び並列な処理機能の一例が、図８内において示されている。ユニットＭＵＬＴ１と、ＭＵ１、ＭＵ２、及びＡＬＵ１との間の設定される接続が、ダッシュ線において示されている一方で、ＡＬＵ１からＭＵ１までの接続が、実線矢印として示されている。ＭＵ３からＡＬＵ２までの設定される接続は、ドット線によって示されており、ＭＵ４とＤＭＡとの間における設定される接続は、ダッシュ−ドット線によって示されている。
【００３２】
図９は、スイッチマトリクス５についての、設定アセンブリ命令を相互に関連付けるマトリクス図である。図５のコアコンパイラ６は、特定アプリケーションのリソース要件と、プロセッサハードウェアユニットの所望の設定を行うためのスイッチマトリクス要件と、各命令の伝搬遅延とを調べる。該コアコンパイラ６は、これらのアセンブリ命令を、３つのタイプの機械命令（ＯＰ、ＳＧ、ＭＵ）に変換する。全てのプロセッサハードウェアユニットを、最良に利用するために割り当てる場合に、該コアコンパイラ６は、該機械命令を組み合わせ、及び再順序付けを行う。最後に、該コアコンパイラ６は、パイプラインＰＳ内へと放出（リリース）する機械命令のタイミングを決定する。
【００３３】
従来の信号処理技法を越えて本発明が提供する更なるアーキテクチャの利点はまた、ＡＬＵ内に中間データを格納することを介したメモリ及びレジスタのアクセスを最小化することと、相互接続バスの負荷を軽減させることと、真の並列処理を可能にさせることによって並列命令実行のボトルネックを解消することと、プロセッサハードウェアリソースがより完全に及び効率良く利用されることを可能にすることと、を含む。更に、大抵の信号処理アルゴリズムに関して、該アーキテクチャは、必要なサイクルの総量を低減させ、同じアプリケーションを、現在の信号処理アーキテクチャよりも、より低いクロック速度で取り扱うことができる。本発明は、電力消費を下げ、より少ないパイプライン段、より少ない論理複雑性、及びより小型のチップ（ダイ）サイズを必要とする。
【００３４】
例えば、ビデオ圧縮において一般に用いられている離散コサイン変換計算のケースを考える。汎用の５段パイプラインプロセッサを用いて、この式を計算するには、２２サイクルがかかる。乗算器の累算を用いるＤＳＰの場合には、１０クロックサイクルがかかる。１つの実行ユニットを用いる本発明のアーキテクチャは、６クロックサイクルがかかり、２つの実行ユニットによって３サイクルと、レイテンシのためにプラスもう１サイクルとがかかり、３つの実行ユニットによって２サイクルと、レイテンシのためにプラス２サイクルとがかかり、実行ユニット数が５つにまで高められた時にはレイテンシの４サイクルと共に１サイクルがかかる。
【００３５】
別の例として、ＲＩＳＣシステム内における典型的なパイプラインは、３命令を必要とする。式がＮ回実行されることを必要とする場合には、典型的なＲＩＳＣシステムによって必要とされるサイクルの総量は、３＊Ｎである一方で、本発明のアプローチでは、Ｎ＋１サイクルしか必要とせず、サイクルの総量における膨大な数が省略される。
【００３６】
要約すると、本発明は、単一デバイス内において複数のプロトコルと複数の機能とをサポートすることを可能にする新規ソフトウェア解決法を提供する。設定可能なハードウェア構造が、それを多くのアプリケーションに適合可能にさせる。複数の実行ユニット及びメモリブロックとが、設定（構成）されて、その式が、設定可能なパイプラインの処理下にさせられ、そのことが、前述のメモリレジスタアクセス速度を最小化させ、及び相互接続バスの負荷を解放させる。複数のメモリバンクが、メモリアクセス帯域幅を広げ、そのことが、真の並列処理を可能にし、必要とされるサイクル総量を著しく低減させる。ハードウェアをより効率良く利用することによって、より低いクロック速度が可能となり、結果としてより低い電力消費をもたらす。該より低いクロック速度はまた、より少ないパイプライン段につながり、従って、チップ（ダイ）サイズと、論理的な複雑さとの両方を低減させる。
【００３７】
今日のコンピュータは、１個の固定ハードウェア（プロセッサ）と共に構築されている。本発明が示唆するのは、１個の動的に設定（構成）可能なハードウェアであり、該ハードウェアは、ハードウェアリソースを利用することにおいてより効率が良いだけでなく、アプリケーションの複数スレッドを並列に処理することも可能にする。
【００３８】
前に説明したように、このアーキテクチャは、データアクセスの頻度（周波数）を低減させることによって、先行技術の信号プロセッサの内部バス上の負荷の一部分を軽減させる。追加的には、メモリが、幾つかのバンクに分割され且つスイッチに接続されているため、そのことが、ある条件下におけるメモリアクセス帯域幅を広げ、複数の演算（算術）ユニットの完全な利用を可能にさせる。これらの特徴（機能）によって、真の並列処理を実施するためにデバイスが構成されることが可能となり、従って、内部機能ブロックの計算機能を完全に利用することが可能になる。
【００３９】
固定されたパイプライン段内へとプロセッサ内部の機能ブロックを置く代わりに、該機能ブロックを接続するためのスイッチ技術を用いる新規プロセッサアーキテクチャ全体が、動的に設定（構成）可能である。何故ならば、その内部構成が、時間と共に変更可能であるからである。機能ブロックの数が、ターゲットアプリケーションによってのみ決定されるため、前に説明したように、該新規プロセッサアーキテクチャは、容易にスケーラブルである。それが真のプロセッサであり、且つ、多くの様々なアプリケーションに対して提供され得ることから、該新規プロセッサアーキテクチャはまた、プログラム可能である。
【００４０】
最後に、信号処理におけるそのフレキシブルな適応性における、本発明の万能性（ユニバーサリティ）と、先行技術の制限を克服すること、それどころか、いまだかつてないコスト及び電力節約を達成することにおけるその成果とを、図によって明示するために、図１０に対して参照がなされる。図１０は、ＡＳＩＤ設計の適応可能性のソフトウェア取扱円弧（円）と、メインストリームＤＳＰ（交差）と、メインストリームＧＰＰ（ドット）と、実線の外円における本発明の適応可能性の円全体とを示す。
【００４１】
更なる修正がまた当業者に生じることとなるであろうが、それらは、添付の特許請求の範囲内において画定されるものとして、本発明の原理及び範囲内に入るように考慮される。
【図１】
2010541088.tif 000003
【図２】
2010541088.tif 000004
【図３】
2010541088.tif 000005
【図４】
2010541088.tif 000006
【図５】
2010541088.tif 000007
【図６】
2010541088.tif 000008
【図７】
2010541088.tif 000009
【図８】
2010541088.tif 000010
【図９】
2010541088.tif 000011
【図１０】
2010541088.tif 000012
【国際調査報告】
2010541088.tif 000013
2010541088.tif 000014
2010541088.tif 000015