JP2004500650A - デジタル信号処理の設計、モデル化あるいは実行を行うためのソフトウェア - Google Patents
デジタル信号処理の設計、モデル化あるいは実行を行うためのソフトウェア Download PDFInfo
- Publication number
- JP2004500650A JP2004500650A JP2001554160A JP2001554160A JP2004500650A JP 2004500650 A JP2004500650 A JP 2004500650A JP 2001554160 A JP2001554160 A JP 2001554160A JP 2001554160 A JP2001554160 A JP 2001554160A JP 2004500650 A JP2004500650 A JP 2004500650A
- Authority
- JP
- Japan
- Prior art keywords
- software
- mips
- virtual machine
- cvm
- dsp
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【課題】デジタル信号処理の設計、モデリングまたは実行を行うためのソフトウェアが通信用DSPとして最適化されたバーチャル・マシン層を有する。
【解決手段】上記バーチャル・マシン層によって、低MIPS複素コードが、上記バーチャル・マシン層により示されるAPIを用いて高MIPSプロセスとインターフェースすることが可能となる。本発明によって、専用DSPにではなく、バーチャル・マシンにソフトウェアの書込みを行うことが可能となり、製造のいずれか1つのソースから生じるDSPのアーキテクチャに起因する制約から技術者を切り離すことが可能になる。
【選択図】図4B
【解決手段】上記バーチャル・マシン層によって、低MIPS複素コードが、上記バーチャル・マシン層により示されるAPIを用いて高MIPSプロセスとインターフェースすることが可能となる。本発明によって、専用DSPにではなく、バーチャル・マシンにソフトウェアの書込みを行うことが可能となり、製造のいずれか1つのソースから生じるDSPのアーキテクチャに起因する制約から技術者を切り離すことが可能になる。
【選択図】図4B
Description
【0001】
【発明の属する技術分野】
本発明は、デジタル信号処理の設計、モデル化あるいは実行を行うためのソフトウェアに関する。本発明は、特に、通信用ベースバンド・スタックを用いて機能するデジタル信号プロセッサに関係する。通信用ベースバンド・スタックが通信用デバイスのデジタル信号処理に使用される。
【0002】
【従来の技術】
技術背景:デジタル信号処理(DSP)及びベースバンド・スタック
デジタル信号処理とは、アナログ及び/又はデジタル量のデジタル表現を操作する処理であり、チャネルを介して伝播される有用な情報の伝送または回収を目的とするものである。高速で、高精度の数値計算の利用により、デジタル信号プロセッサによるデジタル信号処理が実行されるが、一般に、これらのデジタル信号プロセッサは高速の、リアルタイムのデータ操作用として最適化された集積回路として形成される。デジタル信号プロセッサは、音声、通信、ビデオなどの多くのデータ収集、処理及び制御環境で使用される。デジタル信号プロセッサは、集積回路に加えて別の方法で実現が可能である。例えば、デジタル信号プロセッサは、マイクロプロセッサ、及び、プログラムされたコンピュータにより実現が可能である。本明細書で用いる用語‘DSP’は、任意のデバイスあるいはシステムもカバーするものであり、デジタル信号処理の実行が可能なソフトウェアまたはハードウェアあるいはこの2つの組合せのいずれでもよい。したがって用語‘DSP’は、1以上のデジタル信号プロセッサ・チップをカバーし、さらに以下のものをカバーするものである。すなわち:FPGA(フィールド・プログラマブル・ゲート・アレイ)やデジタル信号処理を実行するようにプログラムされたASIC、並びに、以上のいずれかの任意のチューリングデハイス類などのような1以上の外部協働用プロセッサと協働する1以上のデジタル信号プロセッサ・チップをカバーするものである。
【0003】
通信セクタでは、DSPでベースバンド・スタックを実行するとき、DSPはベースバンド・スタック用の非常に重要なエレメントとなる。DSPと共にスタックによりデジタル信号処理が実行される。本明細書で使用する用語‘ベースバンド・スタック’とは、1組の処理ステップ(またはこれらのステップを実行する構造)を意味し、これらの処理ステップには以下のステップ、すなわち:ソース符号化、チャネル符号化、変調の各ステップ、あるいはそれらの逆、すなわちソース復号化、チャネル復号化及び復調の各ステップが含まれる。さらに、用語‘ベースバンド・スタック’は、いかなる形のダウンコンバージョンも行わずに、デジタル信号を処理できる構造を含むものとして解釈することが望ましい。ソフトウェア無線装置にはこのようなベースバンド・スタックが含まれることになろう。当業者であれば理解できるように、ソース符号化は、ビットレートを下げるための信号(原信号)圧縮に利用される。チャネル符号化によって、復号器能力の改善を図るための構造化された冗長性が付加され、誤り発生の可能性がある受信信号から情報が取り出される。変調により、伝播対象情報に応じてアナログ波形の変更が行われる。
【0004】
ベースバンド・スタックは、移動電話(GSMスタックやUMTSスタックなど)あるいはデジタル無線受信機(DABスタックなど)の中でのみならずその他の1方向及び2方向デジタル通信用デバイスの中でも使用される。本明細書で使用する用語‘通信’とは、1方向乃至2方向、あるいは、1対1の通信と放送及び1対多の通信と放送のすべての形態をカバーするものである。用語‘設計’と‘モデル化’には、一般に、1以上のエミュレーション処理、資源計算、診断的分析、ハードウェア・サイジング、デバッギング、パフォーマンス評価が含まれる。
【0005】
通信システムの増大する複雑さに起因して、ベースバンド・スタックの開発に対して激しい圧力がかけられている。通信システムの複雑さはほぼ毎日のように増大しつつある。この複雑さには、いくつかの促進要因が存在する:インターネット上のトラフィックは毎年1000%で増加している。このデータ(主として群発性のもの)の多くは、無線キャリアへ移動するが、このようなサービスを提供する利用可能なスペクトルがだんだん少なくなっている。これらの事実は、できるだけ多くのデータを圧搾して最小の使用可能帯域の中へ入れることを目的とするさらに複雑な信号処理アルゴリズムの利用へとつながる。実際、これらのアルゴリズムの複雑さは、ムーアの法則(計算機の能力は18ヶ月ごとに2倍になる)よりも速く増加し続けている。その結果、従来のDSPの能力では不十分になりつつある。したがって、複雑な端末用として、非常に大きな並列処理ロードの処理が可能なASICを形成する必要がある。しかし、実際には問題はここから始まる。なぜならば、使用されるアルゴリズムが信号処理フロントで複雑であるばかりでなく、主として音声トラフィックから主としてインターネット関連トラフィックへの移行により要請されるところの、バースティな、可変QoSでのしばしばの暫定転送用トランスポート・チャネルの利用は、(ハードウェアによるリアルタイム・コードが要求される)層1において、さらに優れた制御プレーン・ソフトウェアを必要とするからである。従来のDSPツールセットでは、この問題を処理する適切なメカニズムが提供されていない。その結果、現在の多くの設計は‘現実の世界’のデータ・アプリケーションの処理をするための調整を行うことができない。
【0006】
しかし、最新の通信システムの高度のMIPS要件は、この話のほんの一部を表すものであるにすぎない。単一のSoC(チップ・オン・システム)内で多数の規格(GSM、IS−136、UMTS、IS−95など)を利用する必要がある場合に別の問題が生じる。複数の規格をサポートするSoCデバイスは、様々な国々の様々なマーケットを効率的に利用しようと努めているデバイスのベンダにとってますます魅力的なものになるであろう。また、次世代UMTS電話は、GSM(すなわち現在の世代)の能力を持つだけでなく、DAB(デジタル無線放送)受信機のような付加機能も持つようになることが予想される。そのため、UMTS、GSM及びDAB用のベースバンド・スタックが必要となる。通信用プロトコルの複雑さのために、現在では、上記問題のすべてに対するソリューションの提供を期待できる企業は1つとして存在しないような状態になっている。しかし、(上記リストした3つの異なるベースバンド・スタックのIPなどの)IPを統合化して、だんだん短くなる時間スケールで単一の統合化されたパッケージの中へ一緒に入れるSoCの構築という深刻な問題が複数のベンダのIPから生じる。複数のベンダのIPの相互接続を可能にする商用システムは現在マーケットには存在しない。層2と層3のソフトウェア(一般的には、ソフトによるリアルタイム・コード)の方が単純である。なぜならば、DSPまたは別の汎用プロセッサの多くのソフトウェアの中の1つの処理としてこのソフトウェアを単純に実行することができるからである。しかし、(ハードによるリアルタイムの、しばしば並列処理が行われる)層1のIPアルゴリズムはさらに困難な問題を提起する。というのは、必要なハードウェアによる加速処理が、層全体のアーキテクチャを左右して、非移植性の、ぜい弱な、ソリューション特有のIPを提供することが多いからである。
【0007】
ベースバンド・スタック開発の現在のモデルにおける欠陥の概観
過去において、ベースバンド・スタックは比較的単純で、求められる高MIPS機能性の量は比較的小さく、マルチ規格の、マルチベンダの統合化が行われてきた。しかし、上述したように、現在では上記の事実はいずれも当てはまらない:すなわち:(a)ハードウェアの使用を必要とする、さらに複雑なアルゴリズム(ターボ復号化、MUD、RAKEなど)が採用される帯域圧縮手段、(b)さらに多くのデータ発生/消滅イベント(birth/death event)と再構成をハードウェア上のアルタイムで処理する必要があるので、パケット・データ・トラフィックの増加が層1制御プレーンの複雑さを増大させる。(c)研究開発から製品化までの期間や、規格の多様化さらには差別化圧力のために、ベンダは、ますます複雑化する機能性(3G、ブルートゥース、802.11など)を単一デバイスとしてレコード時間内で統合化する傾向があるが、これは特定のアプリケーション用SoC(システム・オン・チップ)を形成する層1のIPの使用許諾を必要とする。
【0008】
現在、この問題の適切な解決方法は存在しない。VHDLツールセット・プロバイダ(CadenceやSynopsisなど)は‘ボトムアップ’からこの問題にアプローチしている。プロバイダのツールは機能の個々の高MIPSユニット(ビタビ・アクセラレータなど)の製造については有効であるが、層1フレームワークや制御コードのためのツールや統合化を与えるものではない。DSPのベンダ(TI社、アナログ・デバイシズ(Analog Devices)社など)は、ソフトウェア開発用ツールを確かに供給しているが、これらの会社のリアルタイム・モデルはスタティックで(そのためパケット・データのバースト性にうまく対処していない)、これらの会社のDSPは、DSPの有用性にブレーキとして働くムーアの法則によって制限を受ける。さらに、通信用スタック・ソフトウェアはステート状態マシンとして最適にモデル化されているが、このステート状態マシンにとってCまたはC++(DSPベンダにより通常サポートされている言語である)は適していない代用言語である。
【0009】
ベースバンド・スタック開発の現在のモデルにおける欠陥の詳細な分析
従来、デジタル通信のためのベースバンド・スタック開発は細分化され、高度に専門化されている。例えば、ベースバンド・スタックの中核である信号処理アルゴリズムの初期開発は数学モデリング環境(Matlabなど)で一般に行われるが、その際、従来方式のスプレッドシートプログラムを用いて精巧な評価がなされていたDSPの最終ターゲットに対して見合うように、特定メモリやMIPS(毎秒100万命令)の総量が設定されている。いったん、このモデル化処理が良好に実行されると、コード・モジュールと、スタック用のインフラ・ストラクチャ・ソフトウェアとが書き込まれ、可能な場合には既存ライブラリが適合化される(またおそらくRTOS(リアルタイム・オペレーティング・システム)が書き込まれる)。次いで、任意の必要なハードウェアによる加速処理が、可能な場合にはPLD(プログラマブル論理素子)上にプロトタイプ化される‘リアルタイム’のプロトタイプ・ハードウェア・システム(‘RACK’と呼ばれる場合もある)が構築される。これは、ネットワークとの接続なしでテストされ、コードに対する必要な変更が行われる。いったん満足のゆくものになると、このスタックは固定化され、(オンチップ周辺機器としてハードウェアの加速用モジュールが組み込まれる)最終的ASIC(特定用途向け集積回路)が形成される。この結果つくられたベースバンドDSPまたはDSPコンポーネントが検査され、次いで、出荷される。
【0010】
この‘従来の’アプローチに関していくつかの問題が存在する。これらの問題の中でより重要なものとして以下のことが挙げられる:
* 結果として生じるこれらのスタックにはその構造の中に多くのアーキテクチャの独自性が含まれる傾向があり、そのため別のハードウェアのプラットフォーム(別のメーカー製のDSPなど)への‘移植’処理は時間のかかるものになる。
* また上記スタックは、修正が困難で、ぜい弱なものとなる傾向もあるため、インハウス(in−house)での変更の実施(バグの修正や、規格の中に導入された新しい特性の調整など)と、スタックのわずかな変更を望む他の人々へスタックの使用許諾を効果的に与えることとの双方を困難なものにしている。
* MMI(マン・マシーン・インターフェース)との統合化が貧弱なものになる傾向があり、このことは、一般に、このMMIの機能用の別個のマイクロ・コントローラをターゲットのデバイス内で使用することを意味する。このためチップ個数とチップ・コストとが増加することになる。
* 処理がきわめて低速であり、DAB(デジタル・オーディオ放送)などの著しく複雑なシステム用ベースバンド・プロセッサの形成に最低約1年の経過時間を伴う。
* この処理は、バッファの割り振り、ダウンコンバージョンの管理、デジタル・フィルタの挿入、好適なチャネル・モデルの作成等々を行うための全体的最善の方法を決定する技術当局者(いわゆる‘グル(guru)’)に大きなストレスをかけるものとなっている。以上の点は一般に不利な点である。というのは、これによって、非常に重要なパスとメイン・スタッフへの依存がスタック製造プロジェクトに付加され、製造のタイム・ラインを長引かせることになるからである。この結果得られる製品は、適切な現在の技術のすべてを必ずしも含むとは限らないことが大いに予想される。その理由として、支配的な最善の実施技術のすべてにわたって完全に熟練している個人がいないこと、また、グルあるいはグルのチームが可能な技術革新のすべてを(たとえ彼らがその技術革新について知っていたとしても)スタック製造プロジェクトの中に組み込むだけの時間的余裕が必ずしもあるわけではないということが挙げられる。
* MIPSの手動計算及びメモリ要件への依存、並びに、スタック用のDSPモジュール及びインフラ・ストラクチャ・コードのカスタムメイド的性質は、製品の中に欠陥が生じる大きな確率があることを意味する。
* 1つの関連する問題点として、一般に、‘RACK’が組み立てられるまでは、スタックのリアルタイムでのプロトタイピングは可能ではない点が挙げられる。その点でも、利用可能な視認性の高いデバッガの不足は、最終スタックと資源の‘拘束解除’が不必要に遅滞することでと、ハードウェア製造のタイム・スケールが超過することを意味する。視認性の高いデバッガは、利用可能であれば、非常に有用なものとなるであろう。というのは、C++のような高水準言語で開発されている場合、デバッガは、コードの中にブレイク・ポイントを入れ、そのポイントにおける処理を停止し、メモリ内容をチェックし、単一ステップ命令の効果を調べるために単一ステップを実行する開発用ツールの能力を与えるからである。またその場合、特定の条件が生じたとき、実行を停止させ、デバッガを起動させるトリガーをコードの中に入れることもできる。これらはアプリケーション・ソフトウェアを開発するとき非常に強力なツールとなる。‘ロック・オフ’とは、プロジェクトの1つの段階が完了したとき、開発が次の段階へ進むことができるということを意味する。ハードウェアの開発では、各反復試行が費用や時間のかかる製造を必要とするので、ソフトウェアの場合のように容易に反復試行を行うことはできない。
* 製造中のスタック用の低レベル・モジュールあるいはハードウェアによる加速処理用‘コントローラ’を開発しなければならないため、開発者はターゲット・プロセッサのアセンブリ言語に熟知している必要があり、また、彼らは当該プロセッサ用として与えられる開発用ツールに依存することになる。
* インフラ・ストラクチャ・コードが再使用されないという事実に伴うモジュール性の不足は、次のデジタル放送スタック用としてほとんど同じ作業を再び行う必要があることを意味する。
【0011】
スタック開発へのこのタイプのアプローチから生じる、関連するセットとなる‘戦略的’問題が上記の困難な問題と結びつき、このタイプのアプローチでは、スタックは必然的に特定のハードウェア環境と強く結びつくものとなる。
* スタック・メーカの視点から見ると、選択されたDSPのハードウェア・プラットフォームと接近しすぎる近い関係が存在する。錯誤に起因して、コストのかかる(また時間のかかる)移植処理が必要となるため、このDSPハードウェア・プラットフォームの注意深い選択を行う必要があるだけでなく、開発用ツール、低水準アセンブリ言語、テスト用‘ラック’のハードウェアの開発及び最終的プラットフォームASICの製造がすべてそのアーキテクチャ独自のものとなる。別のハードウェア・プラットフォームでスタックを使用する機会が生じた場合、まずそのスタックを移植しなければならないが、これにはきわめて長い時間がかかり、多重コード・ベースが導入される(また、これによりプラットフォーム固有のバグという大きなリスクが伴うことになる)。コード・ベースとはプロジェクトの基礎を成すソースコードのことである。理想的には、ソフトウェアの開発の際、ソースコードと機能との間の1対1の対応付けが行われることになる。そのため、ある特定の機能を必要とする場合、いくつかのプロジェクトがすべて同じ実施構成を共有することになる。したがって、この実施構成が改善されれば、すべてのプロジェクトがその利益を享受することになる。しかし、起こりがちなこととして、個々のプロジェクトがコードの個々のコピーを持ち、実施構成が(自然界における遺伝子にいくぶん類似して)時間中分岐するということが挙げられる。プロジェクトが、従来方式の開発パラダイムの下で異なるハードウェアを使用する場合、同じコードの使用が不可能となる場合が時として生じることがある。さらに、たとえ同じハードウェア・プラットフォームがグレードアップされた仕様により利用可能になったとしても、コードは依然‘ミニ移植’を受け、それらの付加特性(例えば、より多くのオンボード・メモリや別のMAC(積和演算)ユニットなど)を利用できるようにする必要がある。
* ハードウェア・メーカの視点から見ると、ソフトウェア・スタックとの接近しすぎる近い関係が存在する。ハードウェア・メーカは、(概して)スタック製造ビジネスの専業になることを望まない。それにもかかわらず、このような(そのデバイスを有用な製品に変える)スタックがなければハードウェア・メーカはユニットの販売を行うことはできない。マーケット用として、利用可能な‘ソフトウェア・ベース’という表現は、ハードウェア・メーカの製品がもっと適切に競合の対象とすべきその他の特性(利用可能なMIPS、電力消費量、利用可能なハードウェアのIPなど)を不明瞭にする可能性がある。
* (シンビアン社のような)オペレーティング・システムのプロバイダは、彼らのOSをベースバンド通信スタックとインターフェースすることを非常に重要であると考えている。実際問題として、従来方式のスタックにおけるモノリシックで、電力消費の大きい点や、リアルタイム要件に起因して、このベースバンド通信スタックとのインターフェースは達成が非常に困難となる可能性がある。
【0012】
テキサス・インスツルメント社による「eXpressDSP(eXpressDSP)リアルタイム・ソフトウェア技術」を参考として考えることができる。この製品セットによって、DSP用ソフトウェアの開発時間と統合化時間の削減が可能になる。しかし、この製品セットは従来方式の設計アプローチの欠点を例示するものである。なぜならこのセットは、専用セットとして、テキサス・インスツルメント社製DSPプラットフォームと結びついているからである。「eXpressDSP(eXpressDSP)リアルタイム・ソフトウェア技術」よりも優れた本発明の1つの実施構成のさらに詳細な相違について、以下本発明の詳細に要約する。
【0013】
【発明が解決しようとする課題】
本発明の第1の態様によれば、デジタル信号処理の設計、モデル化、あるいは実行のためのソフトウェアが提供され、該ソフトウェアは、通信用DSP用として最適化されたバーチャル・マシン層を含むものとなる。
【0014】
‘バーチャル・マシン’とは、一般に、本発明に関連するタイプのアプリケーションを実現するための理想的マシンの機能とインターフェースとを定義するものである。このマシンは、一般に、進行中のタスク用として最適化された理想的マシンを使用アプリケーションに対して提示し、実際のハードウェアの不良動作と欠陥とを隠すようにするものである。また、通信処理をモデル化したり、通信処理を表示したりする1以上のステートマシンの管理及び/又は維持を行うことも可能である。その場合‘バーチャル・マシン層’は、現実のマシンをこの理想的マシンのように見えるようにするソフトウェアである。この層は、一般に、すべての現実のマシン・タイプについてそれぞれ異なるものとなる。‘バーチャル・マシン層’とは、一般に、ソフトウェアから成る層を意味し、この層は、何らかのタスクまたは1組のタスク(デジタル信号処理など)を実行する1組の1以上のAPI(アプリケーション・プログラム・インターフェース)を提供し、使用プログラム間で割り当てられ、共有する必要のある非常に重要な資源(メモリやCPUのような資源など)を享有している。
【0015】
好適には、資源を割り当て、共有し、切り替えられるように、バーチャル・マシン層を最適化して、デジタル信号処理を行うために最善となるようにすることが望ましい。これと対照的に、典型的なオペレーティング・システムは、ワード・プロセッサのような一般的ユーザ・インターフェースプログラム用として最適化されている。したがって、例えば、上記ケースの資源切替えアルゴリズムは、一般に、エンドユーザのオペレーティング・システムの時間増分値よりもはるかに小さな時間増分値で機能し、並列処理の制御を行うことを可能とするものでもある。
【0016】
通信用DSP用として最適化されたバーチャル・マシン層では、処理を実行しなければならないハードウェアからのソフトウェア・ベースバンド・スタックの切り離しが図られる。このため、ベースバンド・スタックを非常に移植し易いものにすることが可能となる。それは、基底を成すハードウェアの変化からのこれらのベースバンド・スタックの切り離しがバーチャル・マシン層により可能となることに起因する。また、上記バーチャル・マシン層では(各々が様々な機能を実行する)様々な接続モジュール間でのフロー制御の管理を行うことも可能であり、この管理を同時ベースで行うことも可能である。さらに上記バーチャル・マシン層では、信号処理用の共通データ構造の定義を行うことも可能である。これについて以下さらに詳述する。
【0017】
本発明のソフトウェアは、(ベースバンド・スタック、または、特に、様々なベンダからのいくつかのベースバンド・スタックや、移動電話のような最終製品を含むSoC全体などの)通信用デバイスをモデル化し、開発し、実際にベースバンド処理の実行を可能にする開発環境において利用が可能である。
【0018】
‘バーチャル・マシン層’というコンセプトを通信用DSPの領域に対して適用する利点は、非アナログ分野からの一例を通じてもっとも良く理解することが可能となる。PCソフトウェアの分野では、(システムBIOSの上位に在る)マイクロソフトのウィンドウズTMオペレーティング・システムは、使用中の実際のマシンから、及び、そのマシンと接続されたデバイスの細部からソフトウェア開発者を切り離している。換言すれば、マイクロソフトのウィンドウTMオペレーティング・システムは、コードが実行可能な‘バーチャル・マシン層’を提供している。これが図1に概略的に例示されている。このバーチャル・マシン層に起因して、ワード・プロセッサを使ってものを書いている人が、例えば、彼らのコードを実行するのがデルのマシンかコンパックのマシンかどうかとかということや、ユーザが、(いずれかのプリンタが)接続している場合そのプリンタがどのような種類のものであるかなどということは知る必要はない。さらに、このオペレーティング・システムによって、1組の共有のコンポーネント(ファイル・ダイアログ・ボックス、メモリ割付けメカニズム及びスレッド管理APIのような)機能とサービスとが提供される。‘共通コード’が1回しか書き込まれないため、各アプリケーションが‘共通コード’を何度も再実行しなければならなかった場合に比べて、このような‘共通コード’の厳密性、範囲及び信頼性が大幅に上昇する。さらに、PCハードウェアのメーカーはソフトウェア開発の複雑さから保護され、適切なウィンドウズのAPIから得られるBIOSとドライバを提供するだけで、当該プラットフォーム用の膨大な範囲の既存ソフトウェアの利用が可能となる。図2に例示されているように、各アプリケーションがそれ自身のカスタムGUIコードを内包していることが多かったプレ・ウィンドウズ状況と、現在の状況とを対比することができる。
【0019】
PCウィンドウズの‘バーチャル・マシン層’アプローチのための主要なイネイブラ(enabler)として、多数のアプリケーションにより、同じ基底を成す‘バーチャル・マシン’の機能が広く求められることが挙げられる。もしも、ただ1つのアプリケーションが、プリンタを使用する必要があったり、ただ1つのアプリケーションがマルチスレッドを必要としたりするのであれば、上記サービスがウィンドウズの‘バーチャル・マシン層’の一部であることは効率的であるとは言えないであろう。しかし事実はそうではない。なぜなら、(ウィンドウ、アイコン、マウス、ポインタ、プリンタ、ディスク記憶装置などの)類似のI/O要件と、類似の‘共通コード’要件とを持つ多数のアプリケーションが存在して、それがPC‘バーチャル・マシン層’を‘説得力のある提案’としているからである。
【0020】
しかしながら、本発明に先行して、‘バーチャル・マシン’というコンセプトを通信用DSPの分野に適用することを考えた者はいままで誰一人としていなかった。このコンセプトを適用することにより本発明によって、専用DSPにではなく、バーチャル・マシンにソフトウェアの書込みを行うことが可能となり、製造上のいずれか1つのソースから生じるDSPのアーキテクチャに起因する制約から技術者を切り離すことが可能になる。このDSPからの独立という形は、マイクロソフト社のウィンドウズ・オペレーティング・システムにより提供されているところの、PCの世界でのハードウェアの独立性と同様に潜在的に有用なものである。この独立性は図3と4に概略的に例示されている。図3には、適切に実現された場合、アーキテクチャから見て中立であることが望ましいベースバンド・スタックの部分が、実際にはサブストレート・ハードウェアから適切に切り離されていないような従来方式の状況が示されている。図4は本発明のバーチャル・マシン層(通信用マシン層(CVM)と呼ばれる)がベースバンド・スタックのこれらの部分の切り離しに成功する方法を描く図である。
【0021】
したがって、本発明の様々な実現構成にとっていくつかの主要な利点が存在する。
* DSPのアーキテクチャを介して、様々なメディア・アクセス・ハードウェアへに対してベースバンド・スタックを移植すること(例えば900MHzで作動するGSM電話用スタックを1800MHzで機能するGSM電話へ移植するなど)がずっと高速に行われる。なぜならば、本発明によって、アーキテクチャ固有の、あるいは、スペクトル固有のものではないスタックの設計が可能になるからである。研究開発から製品化までの期間のような非常に重大な利点がさらに一段と重要になる。したがって、スタックは、バーチャル・マシン層が移植される相手先の任意のDSPのアーキテクチャで機能することになる。同様に、バーチャル・マシン層が移植される相手先DSPは、バーチャル・マシン層用として書き込まれたすべてのスタックを実行することになる。
* 高MIPSコンプレックスコード(ビタビ復号器など)の多くは、各DSPのアーキテクチャの場合、何回も書き変えられるのとは対照的に、バーチャル・マシン層の場合には1回しか書き込まれない。このため、このコンプレックスコードの品質と信頼性が、軽い経済的負担で改善可能となる。これは、ベースバンド・スタック自身が以前より少ないコードしか必要とされないであろうこと、及び、どのようなスタック・コードが必要であるにせよベースバンドスタック自体は複雑さの少ないものであろうことを意味し、これによってスタック・コードの信頼性が向上する。
* このバーチャル・マシン層によって、完全にソフトウェアの中で、あるいは、ソフトウェアと、通常使用されているDSPコンポーネントとの混成物を用いるかのいずれかでプロトタイプの形成能力が与えられ、それによって、開発サイクルにおけるアルゴリズムの欠陥と資源要件との早めの特定が可能となる。
【0022】
好適には、バーチャル・マシン層が、様々なコア処理及び/又はコア構造及び/又はコア機能及び/又はフロー制御及び/又は状態管理を用いてプログラムされるか、もしくは、様々なコア処理及び/又はコア構造及び/又はコア機能及び/又はフロー制御及び/又は状態管理へのアクセスを可能にすることが望ましい。バーチャル・マシン層がプログラムされる(あるいはバーチャル・マシン層がアクセスを行うことを可能にする対象としての)コア処理には‘1以上の共通エンジン’が含まれる。これらの‘共通エンジン’は、1以上のベースバンド・スタック機能、すなわち、ソース符号化、チャネル符号化、変調及びそれらの逆(ソース復号化、チャネル復号化及び復調)を実行する。これらの‘共通エンジン’には、高速フーリエ変換(FFT)、(様々な拘束長、ガロア多項式及びパンクチャリング・ベクトルを持つ)ビタビ復号器、リード・ソロモン(Reed Solomon)エンジン、MPEG復号器用離散余弦変換(DCT)、エラー・デコヒーレンス(error decoherence)のための時間及び周波数ビット毎の再オーダリング、複素ベクトル乗算及びオイラー合成が含まれる。さらに広範囲のリストが添付書類1の中に含まれている。これらのパラメータ化された変換の中の1以上が、通信用ベースバンド・スタックにより共通に求められる。上記従属特性は、ほとんどすべての主要なデジタル放送システムの範囲内に見いだされるという本発明による洞察に基づくものである。一例として、GSMとDABとの類似性が挙げられる。例えばGSMとDABの双方においてインターリービングとビタビ復号化が利用される。したがって、共通の数学的基礎に基づく共通性が断言される.
【0023】
さらに、‘コア構造’は各ケースの中に存在してもよい。この‘コア構造’は、(当該シンボルの範囲内に保持されているすべての情報が利用可能か否かにかかわらず、フル・シンボルの処理に関係する)シンボル処理部と、関連情報を保持する当該ビットのみの処理が行われるデータ指向処理部とに復号化チェーンを分割することに関与する。各ケースで、これらの処理用モジュールが、中間の、整合メモリ・バッファの割り当て、共有、配置を行い、処理用モジュール間でイベントを渡し、モジュラ型開発を可能にする枠組みの範囲内の存在であることが非常に望ましい。
【0024】
上記コア機能は、以下の処理のうちの1以上を含む資源割当てとスケジュリング(メモリ割付け、リアルタイムの資源割当て及び同時性管理)に関するものであってもよい。好適には、このソフトウェアは、パフォーマンスと能力の点でDSP設計用ツールよりもずっと優れた、PCのデバグ用ツールにアクセスが可能であることが望ましい。このソフトウェアは、コンフォーマンスクリプト(conformance scripting)に従うものであってもよい。このスクリプトについては以下に定義する。さらに、このソフトウェアは、コンポーネントを用いて機能するものであってもよい。このコンポーネントの中で上記ソフトウェアの機能及び/又は別様にコンポーネントのパフォーマンスのモデル化を可能にするために必要な当該情報だけが上記コンポーネントの知的財産の所有者により供給される。このことによって、(内部の詳細事項、設計、操作のような貴重な営業秘密情報である可能性のある)知的財産の所有者がその情報を隠し、サポートされている機能、APIに必要なパラメータ、タイミングと資源のインタラクション、特性評価のための予想パフォーマンスなどのようなずっと重要性の少ない情報だけを公開することが可能になる。
【0025】
本明細書では、本発明に従うソフトウェアの実施例を通信用マシン層(CVM)と呼ぶ。CVMは、上記に導入した着想を一緒に引き出すので、以下のセクションにおいて要約する。
【0026】
CVMの実現構成についての要約
CVMとは、デジタル信号処理製品開発用プラットフォームと、当該製品を実行するためのランタイム(runtime)との双方を指すものである。CVMは、基本的に、バーチャル・マシン層と関連する複雑さの管理手法をリアルタイム・デジタル信号処理へもたらすものであるが、この信号処理は、(i)(アーキテクチャ独自の方法で実現可能な)高MIPSデジタル信号処理計算をバーチャル・マシン層の一方の側の‘エンジン’の中に配置すること、(ii)アーキテクチャから見て中立な低MIPSコード(様々な低MIPSプロセスを定義する層1コードなど)をもう一方の側に配置することにより実行される。さらに具体的には、CVMは、低MIPS制御プレーンとデータ‘操作及びパラメータ’フローを除くすべての高度の複雑さを、(ビタビ復号化、FFT、相関などの)多量の資源を必要とする処理を実行する高MIPS‘エンジン’から切り離すものである。この切り離しによって、‘アーキテクチャから見て中立な’高い移植性を持つ方法で、複雑な通信用ベースバンド・スタックの構築が可能になる。なぜならば、基底を成すハードウェア上ではなく、CVM上で実行するベースバンド・スタックの設計が可能となるからである。CVMは、これらのスタックの高度の複雑さ、低MIPS制御コードに対して均一なセットのAPIを演出し、多くの様々な種類のスタック用として高MIPSエンジンの再使用を可能にするものである(例えば、GSMとUMTSスタック双方のためのビタビ復号用エンジンの利用が可能となるなど)。
【0027】
デジタル信号処理製品の開発段階中、(最少の数のプロセッサで実行するなどの)最適のアクセス・コストを示す構成を特定することを目的として、デジタル信号処理製品の様々な設計上のMIPS要件の、CVMによるシミュレーションやモデル化の実施が可能である。確定論的関数とは対照的な、少なくとも1つの確率的統計分布関数を利用する資源割当て処理が利用される。様々なDSPチップとFPGAとから成る実現構成のシミュレーションが可能である。高MIPSの速度と並列処理能力との故に、FPGAの中に高MIPS演算処理を配置することが非常に望ましい。
【0028】
実際の処理中、最適の処理を維持するために、CVM内のスケジュラがリアルタイムで知的にタスクの割り当てを行うことが可能である。本明細書ではこのアプローチを‘2段階スケジュリング’と呼ぶ。様々なエンジンの資源要件が、(i)設計時に明示的にモデル化が可能であること、(ii)ランタイム中、知的に利用が可能であること、という理由により、いくつかの様々なベンダからのエンジンを単一製品の中に混ぜることが可能となる。上述したように、これらのエンジンは、層1と直接の接続を行うのではなく、代わりにCVMバーチャル・マシン層の中継を介して制御コードを層1と接続する。さらに、DSPとFPGAとの組合せを利用する非リアルタイム・プロトタイプから実行時プロトタイプへの移行、次いで、カスタムASIC上への効率のよい移行がCVMを用いることにより可能となる。
【0029】
CVMでは以下の3つの主な特長が実現される:
* 同時スケジュリングのためのサポートを備えた、ダイナミック、マルチ・メモリ空間用マルチプロセッサ分散型スケジュラ
* アーキテクチャ固有の実現構成を備えた、デジタル放送及び通信用として共用される高MIPS演算処理用API
* 資源管理及び正常化層(normalization layer)(固有のRTOSを介して供給される)
【0030】
CVMは‘パイプライン’という形で存在することが可能である。‘パイプライン’とは、ある構造または1組の相互作動するハードウェア・デバイスまたはソフトウェア・デバイス、及び、1つのデバイスまたは処理から別のデバイスまたは処理へ情報を渡すルーチンである。DSP環境では、このような複数の情報は‘シンボル’と呼ばれることが多い。パイプラインは、データ・フローアーキテクチャとして、並びに、従来の手続き用コードとして実現が可能であり、このような変形例のすべては本発明の範囲内に属するものである。また、CVMは、ステートマシンとして、または、手続き用コードとして概念化し、実現することも可能であり、再言するが、このような変形例のすべては本発明の範囲内に属するものである。
【0031】
【課題を解決するための手段】
CVMの1つの例には、解釈されたパイプライン・マネージャが含まれ、このパイプライン・マネージャにはCVMコアのランタイムバージョンが組み込まれる。‘解釈された’という用語が意味するものとして、そのパイプラインの仕様が基底を成すマシンコードにまだ翻訳されていず、ベーシック言語のような解釈された言語の場合と全く同じように、プログラムの実行につれて繰り返し再翻訳が行われることが挙げられる。
【0032】
別の例として、CVMコアのラタイムバージョンが組み込まれた、計装化された解釈パイプライン・マネージャ(Instrumented Interpreted Pipeline Manager)がある。この計装化された解釈パイプライン・マネージャは、解釈されたパイプライン・マネージャと同じように機能するが、開発者に役立つメトリックと計測値も生成する。解釈された非計装化(non−instrumented)バージョンもまた開発とデバッギング用として有用であり、コンパイルされ、計装化された(instrumented)バージョンもまた有用である。後者のバージョンは開発とデバッギング用の最適ツールとなる場合もある。
【0033】
CVMの別のバージョンはパイプライン・ビルダ(Pipeline Builder)である。プログラム実行の代わりに、パイプライン・ビルダは、C言語のようなコンピュータ・ソースコードを出力し、このソースコードをコンパイルして、パイプラインの実現構成を形成することができる。この理由のため、パイプライン・ビルダはCVMライブラリを利用できなければならない。パイプライン・ビルダは、コンパイルされた非計装の変形例と考えることもできる。
【0034】
CVM装置は、通信用コンポーネントの特性(非インターフェースの振舞いを含む)の標準化された記述を含むか、この記述に関するものであるようにして、シミュレータがコンポーネントを利用する上でのシステムの資源要件の正確な推定ができるようにする。CVM装置で時間及び同時性制限条件のモデル化を行って、リアルタイムOS上への対応付けを可能にし、並列処理を実行できる可能性を持たせるようにすることも可能である。
【0035】
本発明の別の特性と態様は本明細書の請求項において定義される。添付図面を参照しながら本発明について以下説明する。
【0036】
【発明の実施の形態】
RadioScape社(英国、ロンドン)のCVMの実現構成に関連して本発明を説明する。
【0037】
CVMの概観
CVMとは、デジタル信号処理製品開発用プラットフォームと、当該製品を実行するためのランタイム(runtime)との双方を指すものである。CVMは、基本的に、バーチャル・マシン層と関連する複雑さの管理手法をリアルタイム・デジタル信号処理へもたらすものであるが、この信号処理は、(i)(アーキテクチャ独自の方法で実現可能な)高MIPSデジタル信号処理計算をバーチャル・マシン層の一方の側の‘エンジン’の中に配置すること、(ii)アーキテクチャから見て中立な低MIPSコード(様々な低MIPSプロセスを定義する層1コードなど)をもう一方の側に配置することにより実行される。さらに具体的には、CVMは、低MIPS制御プレーンとデータ‘操作及びパラメータ’フローを除くすべての高度の複雑さを、(ビタビ復号化、FFT、相関などの)多量の資源を必要とする処理を実行する高MIPS‘エンジン’から切り離すものである。この切り離しによって、‘アーキテクチャから見て中立な’高い移植性を持つ方法で、複雑な通信用ベースバンド・スタックの構築が可能になる。なぜならば、基底を成すハードウェア上ではなく、CVM上で実行するベースバンド・スタックの設計が可能となるからである。CVMは、これらのスタックの高度の複雑さ、低MIPS制御コードに対して均一なセットのAPIを演出し、多くの様々な種類のスタック用として高MIPSエンジンの再使用を可能にするものである(例えば、GSMとUMTSスタック双方のためのビタビ復号用エンジンの利用が可能となるなど)。
【0038】
バーチャル・マシン層は、いくつかの様々なベースバンド処理用アルゴリズムに共通の基底を成す高MIPSアルゴリズムをサポートし、これらのアルゴリズムを、高水準の、アーキテクチャから見て中立な、スケジュラ・インターフェースの中を通る、潜在的に高度の複雑さをもつ低MIPS制御フローにアクセス可能にし、このアクセスによって、ランタイム、メモリ、相互接続帯域のうちの1以上に応じて、1組の資源制約包絡面と共に、制御フローによるアルゴリズムの実行指定が可能になる。上記資源制約包絡の内側で起呼音は処理の実行が行われることを望む。
【0039】
デジタル信号処理製品の開発段階中、(最少の数のプロセッサで実行するなどの)最適のアクセス・コストを示す構成を特定することを目的として、デジタル信号処理製品の様々な設計上のMIPS要件の、CVMによるシミュレーションやモデル化の実施が可能である。決定論的関数とは対照的な、少なくとも1つの確率論的統計分布関数(及び/又は統計的測定関数)を利用するモデル化を行うための資源割当て処理が利用される。様々なDSPチップとFPGAとから成る実現構成のシミュレーションが可能である。高MIPSの速度と並列処理能力とに起因して、FPGAの中に高MIPS演算処理を配置することが非常に望ましい。
【0040】
実際の演算処理中、最適の演算処理を維持するために、CVM内のスケジュラがリアルタイムで知的にタスクの割り当てを行うことが可能となる。本明細書ではこのアプローチを‘2段階スケジュリング’と呼ぶ。様々なエンジンの資源要件が、(i)設計時に明示的にモデル化が可能であること、(ii)ランタイム中、知的に利用が可能であること、という理由により、いくつかの様々なベンダからのエンジンを単一製品の中に混ぜることが可能となる。上述したように、これらのエンジンは、層1と直接の接続を行うのではなく、代わりにCVMバーチャル・マシン層の中継を介して制御コードを層1と接続する。さらに、DSPとFPGAとの組合せを利用するPCT非リアルタイム・プロトタイプからランタイムプロトタイプへの移行、次いで、カスタムASIC上への効率のよい移動がCVMを用いることにより可能となる。
【0041】
CVMでは以下の3つの主な特長が実現される:
* 同時スケジュリングのためのサポートを備えた、ダイナミック、マルチ・メモリ空間用マルチプロセッサ分散型スケジュラ
* アーキテクチャ固有の実現構成を備えた、デジタル放送及び通信用として共用される高MIPS演算処理用API
* (固有のRTOSを介して供給される)資源管理及び正常化層(normalization layer)
【0042】
CVMとは設計フロー・ソリューション並びにランタイムである。
CVMは、ランタイムを補う完全な設計フローを提供するものである。このCVMによって、完全に統合化された数学モデルと、(群発性のデータに関する演算処理に必須の)統計的シミュレーション・ツールと、(データ・パスがハードウェアの中へ入るべきか、DSPコア上のソフトウェアの中で実行すべきかを決定するための)序列的分画シミュレーション・ツールが技術者に与えられる。数学モデリング用ツール(Matlab/Simulinkなど)のカスタム・ライブラリの利用によって、CVMは、様々なデータ・パスがどれだけのビット数の幅を持つ必要があるかなどを前もって決定するために、詳細に、かつ、ビットレベルの(bit−exact)精度で、高MIPSエンジンの機能のモデル化を行うことができる。しかしながら、このシステムは、統計的シミュレーションが行われる制御プレーンからXMLコマンドを受け入れることもでき、これにより、データ発生/消滅イベント(birth/death event)と群発性とをモデルのコンテキスト内で取り扱うことができるようになる。さらに、スケジュラの間接インターフェースを介してシミュレーション・エンジンにまでもアクセスが行われるので、実際のハードウェアなどの実現構成に対してプラグ・インコールを行って、シミュレーションの実行速度を上げることが可能となる。
【0043】
また、重要なことは、様々なシステム分画の決定により資源ローディングのシミュレーションの実行が可能なことである。様々な統計的ロードの下で十分にカバーするためには、特定のアルゴリズム‘エンジン’(ビタビ復号器、レイク受信デバイス・エレメント、ブロックFFTの演算処理など)のインスタンスがいくつ必要なのか?データ・パスがバスのような遅延を生じ、及び/又は同時争奪を生じる資源にわたって移動する場合、何が起こるのか?データ・パスがソフトウェアではなくハードウェアの中で実現される場合何が起こるのか?これらの問題の解決のすべては非常に重要であるが、既存のツールセットではこれらの解決はまだ行われていない。さらに、複数のサード・パーティのIPエンジンまたはエンジン(下記を参照)に関して、分画問題の解決を行うとき、これは2重の意味で真である。CVM設計フローによって、これらの種類の設計上の問題解決に対する回答を与えることが可能となることは明らかである。さらに、初期の分画情報は、設計用ツールセットから‘順方向に’転送されてランタイムスケジュラの中に入り、これによって、システムが実際の動的ロードを行っているときに、このランタイムスケジュラが、好適な実行エンジン・インスタンスに向けて要求を導くことが可能となる。
【0044】
‘ボトムアップ’から見ると、このソフトウェアを実質的に2次的重要性をもつものとして扱うことは、もはや販売のための製品開発を行う方法ではない。このようなやり方では単に長い時間がかかりすぎるだけで、あまりにもアーキテクチャ固有の結果が生じ、基底を成す領域の並列状態マシンの性質にとって不都合な‘マッチング’が生じることになる。‘トップ・ダウン’から見ると、CVMが利用するパラダイムにより、はるかにずっと強力で拡張可能なソリューションが得られる。
【0045】
CVMに関する最終ポイントとして、基底を成すエンジンから制御フロー・コードを切り離すことにより、実際の組み込まれたターゲットと矛盾することなく、従来の(PCなどの)プラットフォーム上で多くの開発作業の実行が可能になることが挙げられる。これによって、特定のベンダの最終ターゲットの開発用プラットフォームを利用する場合に比べて設計上ずっと早い方向転換が可能になる。
【0046】
例:CVMとは、3Gシステム用SoCのような、ハードウェアによるリアルタイムの、マルチベンダの、マルチプロトコル環境に対する設計上のソリューションである。
CVMのコア・エレメントの中の1つとして、ハードウェアによるリアルタイムの、マルチベンダの、マルチプロトコル環境における(潜在的に衝突する)サード・パーティのソフトウェア/ハードウェアの資源要件を処理する能力がある。この能力はCVMの主要な利点であり、システム・オン・チップ(SoC)の設計の際、特別な重要性を持つものである。これを理解するために、3G携帯電話マーケット向けのベースバンド・チップの将来のプロバイダが直面する問題点について考えることにする。第1に、層1の必要となる処理の複雑さに起因して、在庫のDSP用として単純にコードを書き込むことはオプションではない。ASICでは、複雑な拡張やターボ復号化などの処理を行うことが求められる。第2に、UMTSは少数の地下鉄の場所に当初導入されるにすぎないため、チップにはGSMのサポートも可能である必要がある。ベースバンド・チップメーカがこれら双方の分野で広範囲の技術を持っていることはありそうもなく、したがって、IPの使用許諾を受ける必要が生じる。この点は、絶えず長引くことになる、研究開発から製品化までの期間という圧力を考慮すると技術会社にとって特に関係の深い事柄である。しかし、一部はハードウェア、一部はソフトウェアから成るIPエンジンの使用許諾を層1の複数のベンダから得ることは1つの現実的な問題を現出することになる。第1に、上記方法での‘互換性対非互換性’(mix and match)IPについての共通の単純な基準は現在存在していない。必要とされること、及び、CVM設計フローが提示することとして、静的及び動的双方のサード・パーティのIPブロックの資源要件を特徴づける1つの方法がある。この方法によって、潜在的に、全く異なるサプライヤからの別のIPエンジンを用いてリアルタイムで当該サード・パーティのIPブロックを同時スケジュール化し、次いで、より高いレベルの層1制御コードとの透過的な接続が可能となる。さらに、CVMの性質として、(ANSICへコンパイルされたSDLなどの)アーキテクチャから見て中立な言語でこれら高レベルの呼構造及び制御プレーン全体の形成が可能であるということが挙げられる。その場合、低いレベルで、高MIPS部分だけがアーキテクチャ独自の形式で直接実現されることになる。
【0047】
上述したように、エンジン内に内包される高MIPS機能は、完全な処理ルーチンを表すものである。これらのエンジンは、ハードウェアまたはソフトウェア、あるいは両者の何らかの組合せで実現可能であるが、このことは高水準の‘起呼’コードという観点から見ると重要な問題ではない。高レベルのIPは、CVMスケジュラ起呼を介して基底を成すエンジンと交信を行い、この起呼により、ハードウェアにおけるリアルタイムの動的資源制約条件の指定が可能になる。次いで、スケジュラは、適切なデータ・パスにこの要求の実行指令を出す。この実行指令にはDSPの関数呼出しや、FPGAまたはASICへのデータの受渡しが含まれる場合もある。重要なことは、このスケジュラが複数のハードウェアのデータ・パスを処理することができるという点である。これらのデータ・パスは様々なアクセス用プロファイルと実行用プロファイル(例えばオンバス・ビタビ復号器、オンチップ・ソフトウェアベースの復号器、及び、外部DMAを介してアクセスされるオフチップ専用ASICなど)を持つことが可能であり、さらに、起呼用の高レベルのコードから完全に独立した適切なユニットに特定の要求を渡すことが可能である。
【0048】
また、このことは、2つの異なる通信スタックがいくつかの共通の高MIPSエンジンを必要とする場合、適切な(プラットフォーム固有の)エンジンの実現構成(この実現構成がハードウェア、ソフトウェアまたはその双方の何らかの組合せのいずれで設計されているかにかかわらず)のベンダが、上記2つの異なる通信スタックのマーケットへ販売を行うことができることを意味し、さらに、単一のSoC上に2つの規格が実装されている場合、双方のスタックが同じアクセラレータを潜在的に共有できることを意味する。加えて、1組の100以上のコア・オペレーションが指定され、これらのコア・オペレーションを考慮に入れると、デジタル放送用プロトコル及び通信用プロトコルの膨大な部分の中で得られる高MIPS機能の80%近くがこのCVMにより提供されることになる。
また、CVMランタイムは基底を成すRTOSにラップアラウンド処理を施し、(スレッド、メモリ、外部アクセスを含む)資源管理のための規格に準拠したインターフェース絡みの高レベルのコードを提示するものである。
【0049】
CVMを用いることにより、通信SoC製品用の統合化された開発用プラットフォームの構築が可能となる。その場合、いくつかのサード・パーティのベンダは、高レベルのアーキテクチャから見て中立なSDLあるいはC++コンポーネントもしくはアーキテクチャに固有の、資源プロファイル化されたエンジン(ハードウェア、ソフトウェア、またはその双方の組合せであってもよい)のいずれかとして、彼らのIPを公開することができる。統合化された設計フローによって、SoCの設計者は、(特定のベンダから選択された)適切なエンジンを含むシステム全体を形成し、CVMの両側またはいずれかの側に自分のIPを付加し、次いで、(アクセラレータと共にいくつかのVHDLで定義されたコアとして)利用可能なハードウェア仕様とソフトウェア・コンポーネントの双方を作成することが可能になる。数学モデリングと、確立論的序列的分画シミュレーションと、プロトコル検定とによって、完全なフローを提供するツールセットを構築し、好適なメカニズムを提供することで、設計の範囲内で‘パッケージ化された’IPライブラリの特徴づけ、公開、列挙及び利用が可能となる。
【0050】
このシステムは、SoCの設計者用の主要ワークベンチになる潜在的可能性を有する。SoCの設計者は、高MIPSエンジンの開発を行うために、層1制御構造(fabric)の中のいずれにも入らず、VHDLツールの中へ入るだけでよくなるからである。
【0051】
CVMにより設計層1内でのSDLの利用が可能となる。
上述したように、ANSI C++または好適にはSDL(このSDLはその後ANSI Cへコンパイルしてもよい)のいずれかを用いて、アーキテクチャから見て中立な方法で低MIPSコードを書き込むことがCVMにより可能となる。SDLとは、層2及び層3スタックを表現するために電気通信業界内で広く使用されている言語であり、状態マシン・フォーマットで最も経済的に表現されるシステムにとって特に好適な言語である。従来の方式で使用するには、SDLは層2(‘ソフトによるリアルタイム’領域の端)より下位で使用するのに適切なものではない。SDLコードは様々なアーキテクチャ間での完全な移植が可能であり、TTCNなどのようなツールを用いて通常の方法でテストを行うことも可能である。開発時のコードとサブストレートの相互接続とから成る様々な部分に(動的資源の天井などのような)システム上の制約を設けることが可能であり、次いで現実の負荷モデルを用いてシミュレーションを行って、ハードウェアとソフトウェアへのデータ・パスの予行分画を行うことが可能となる。重要なことは、CVMスケジュールが、開発プロセスの1回の設計時間部分中に行われたデータ・パス分画決定を認識しているということである。ツールフローは、Matlab及びSimulinkと完全に統合化され、高MIPS機能のビットレベルでのテストが可能となる。層1の範囲内での高レベルの論理フロー用推奨言語としてSDLの使用は偶発的なものではない。SDLは、GSMのような通信スタック層2と3内で広く使用されてきたが、この2つの層の深い溝(chasm)の間をかけ渡してハードウェアによるリアルタイム領域の中へ入ってきたことは従来なかったことである。これと対照的に、CVMでは、SDL制御フローからの並列の、ハードウェアによるリアルタイムの実行指令の呼出しが可能となり、それによってSDLの非常に強力で、かつ、自然な、ステートマシンの表現性を利用して、高水準の層1アルゴリズムの作成が可能になる。これらのアルゴリズムは、低MIPSを有しているにもかかわらず、ほんの2、3の名前を挙げるだけでも、群発性のレート・マッチング、ユーザ・トランスポート・チャネルのデータ発生/消滅イベント(birth/death event)、複数の規格間のハンドオーバ、負荷によるQoSと結びついたグレースフル・デグラデーションのような問題を処理しなければならないので、ますます極度に複雑になっている。リアルタイムの処理用としては設計されていない他の言語(C++やJavaなど)もSDLの代替言語として設計層1での使用が可能である。
【0052】
CVMに対する理論的背景
現在のデジタル通信システムは、チャネルに起因するきわめて厳しい影響に直面する中で信頼性の高い、情報の無線による最善の伝送方法についての、最近の15年かそこらで出現した実質的に共通のコンセンサスに基づいて構築されている。2方向システムは、(例えば、輻輳状態のスペクトル帯域に直面してグレースフル・デグラデーションを生じるCDMAを利用し、いくつかの‘ハードウェアによる’リアルタイム要件を含むような)放送型システムとは多少異なるチャネル要件と変調要件とを持っているが、全体として多くの共通性が存在する。
【0053】
例えば、(1方向の)放送システムの特定のケースでは、復号器と符号器は単に並列の‘プロトコル・スタック’と考えることができよう。ほとんどの放送送信システムは、(ビットレートを落とすために入力信号を圧縮するMPEGのような)ソース符号化から始まり、その後(信号破損にもかかわらず情報を取り出すようにした受信機能力の向上のための構造化された冗長性を付加する畳み込み符号化とリード・ソロモン(Reed−Solomon)符号化のような)チャネル符号化が後続し、その後、(この時点で、複数の副搬送波が(周波数または位相の)角度や振幅の何らかの組合せで修正され、情報が保持される)変調が後続する。次いで、図5の線図を(1つのレベルで)生み出す逆の処理が受信機で実行される。したがって、ほとんどすべての主要なデジタル放送システムの中で1組の共通の処理用エンジンが見いだされ、各ケースで共通の処理構造の適用が可能となる。
【0054】
CVMの実施例は、上記の事実を以下のように利用するものである。すなわち、共通エンジン(または関数やライブラリ)には、1以上のステップ(ソース符号化、チャネル符号化、変調の各ステップ)、あるいはそれらの逆のステップ(ソース復号化、チャネル復号化及び復調の各ステップ)を実行するアルゴリズムが含まれる。これらのアルゴリズムには、例えば、高速フーリエ変換(FFT)、(様々な拘束長、ガロア多項式及びパンクチャリング・ベクトルを備えた)ビタビ復号器、リード・ソロモン(Reed Solomon)エンジン、MPEG復号器用離散余弦変換(DCT)、エラー・デコヒーレンス(error decoherence)のための時間及び周波数ビット毎の再オーダリング、複素ベクトル乗算及びオイラー合成などが含まれる。さらに広範囲のリストが添付書類1の中に含まれている。上記アルゴリズムは高MIPSルーチンであり、したがって、理想的にはアーキテクチャに固有の方法で(アセンブリ・コードまたはハードウェアによる加速処理のいずれかを介して)CVMの中で実現される。上記の事実にかかわらず、共通の高水準APIを通じてCVM内のこれらのアルゴリズムのアクセスすることができる。これらのパラメータ化された変換の各々は、この各変換について設けられる並列的数学モデリング・ブロックが含まれる。
【0055】
この共通構造は、(当該シンボルの範囲内に保持されているすべての情報が利用できるか否かにかかわらず、フル・シンボルの処理に関係する)シンボル処理部と、関連情報を保持する当該ビットのみを処理するデータ指示型処理との復号化チェーンへの分割に関与するものである。各ケースで、これらの処理用モジュールが、中間の整合メモリ・バッファの割り当て、共有、配置を行い、処理用モジュール間でイベントを渡し、モジュラ型開発を可能にする枠組みの範囲内に存在できるようにすることが非常に重要である。この共通構造は、数学モデリング環境の適切な場所に並列化され、グラフ記述言語(GDL)を介して記述される。図6は、CVMで利用されるこの共通ブロック及び共通構造によるアプローチを概略的に描くものである。
【0056】
追加のCCS(同時システムの微積分法)要件と資源割当て問題が存在するという点と、処理用エンジンの必要な‘臨界容量’がわずかに異なるという点とを除いて、2方向システムについても同様の分析を行うこともできる。
【0057】
現在の世代のサード・パーティ・アプリケーションの開発用ツールと、ハードウェア配置用プラットフォーム(DSP及びDSPコア)とが、上述の構造的現実を反映していないこと、及び、(概して)通信ベースバンド・アプリケーションに合わせて仕立てられたハードウェアによる加速処理を行わないこと、また、2段階スケジューリング・アプローチ(下記を参照のこと)も行わないことは興味深いことである。また、現在の組み込まれたオペレーティング・システムでも系統的なあるいは統合化された方法での上記処理やアプローチのサポートは行われていない。
【0058】
しかし、デジタル通信システムの数は急速に増加しつつあり、ベースバンド・スタックの研究開発から製品化までの短い期間内の市場への投入に対する要望が生まれている。以上説明したように、本発明の中核を成す革新的アプローチは、ソフトウェアにより提供された‘バーチャル・マシン層’(CVMの実施例により例示される)を提供し、これらの能力とソフトウェア構造とを具体化することにより、基底を成す共通性とこのようなシステム要件とを利用することである。1つの主要な市販アプリケーションは、(上述したような)SoCなどのハードによるリアルタイムの、マルチベンダの、マルチプロトコル環境に対する設計上のソリューションのようなものである。
【0059】
CVM開発方法論
CVMで用いられる開発方法論は、層化された開発と層化された配置を用いる方法論から出発し、この方法論を利用するものである。これらのコンセプトについて最初に解説する:層化された開発とは、(必要に応じて)数学モデルから、C++またはSDLコードを通じて、ターゲット・アセンブラの実現構成へ進むプロセスを意味する。このプロセスを通じてずっと、当該モジュールの各々は、必要なレベル(例えば、並列的数学モデル、C++実現構成、SIMDモデル及び様々なターゲット言語によるアセンブラの実現構成として畳み込み復号器が存在する)の各々に維持される。
【0060】
層化された配置とは、受信機のスタックが実際に実現されたとき、基底を成すハードウェア及びホストのオペレーティング・システムから可能な限りコードを切り離すためにライブラリを利用することを意味する。したがって、可能な限り多くのコード(高度の複雑さと共に低MIPS要件)が、一般的SDLまたはANSI対応C++(これはその後、ターゲット・プラットフォーム用として単純に再コンパイルされる)として保持される。例えば、単純なI/O、メモリ・バッファの割当てなどのようなプラットフォームに依存する機能を提供するためにライブラリが利用される。(FFT、ビタビ復号器などのような)反復して使用される回数の多いルーチンをアーキテクチャ独自の方法で提供するために別のライブラリが利用される。このアーキテクチャ独自の方法には、好適に設計されたアセンブラル・ルーチンの利用や、特定用途のハードウェアによる加速処理用エンジンに対するコールスルー(callthrough)の利用までも含むこともできる。
【0061】
上記2つのライブラリは、基底を成すハードウェア及びオペレーティング・システムのサブストレートの如何に関らず、移植中修正を行う必要がない‘コア’コードとの共通のAPIとして明白なものである。修正すべき唯一のコード、すなわちライブラリの実現構成の内容は、意味のあるカプセル化と数学モデルから生成される多種多様のテスト・ベクトルから利益を得る。その理由として、スタックの移植を高速に行うことが可能なアーキテクチャ内の接続ポイント(point of articulation)が、上述のアプローチを用いて適切に配置されているということが挙げられる。
【0062】
さらに、開発用プラットフォームとして、上記アプローチには、数学モデルを実行するのではなく、逆に完全なリアルタイム送受信装置を実行する1つのアーキテクチャ(インテルのプラットフォームなど)上で開発を行い、次いで、単純にライブラリのスワップを行い、ターゲットのアーキテクチャで再コンパイルを行うことが可能であるという大きな利点がある。これは、等化器モジュールの同調などを試みる際非常に有用なものとなる。
【0063】
CVMによるアプローチは上記のような作業方法を利用するものである。しかし、これに加えて、すべてのデジタル通信用ベースバンド処理作業にとって有用な主要サービス及び機能と共に、可能な限り多くの共通の機能が分離されて‘バーチャル・マシン’のハードウェアの分離層の中へ入れられる。
【0064】
以下の図7は、上記のことがアーキテクチャのレベルで機能する方法を示すものである。プラットフォームA用とプラットフォームB用の異なるライブラリの実現構成を備えて与えられるスタックを出荷する代わりに、CVMの中に、プラットフォームAとプラットフォームBの各々のための共通の‘ベースバンド・オペレーティング・システム’層が存在し、共通のAPIが与えられる。この共通のAPIの上で(再コンパイルを除いて)変らない状態のままさらに高いレベルのコードの実行が可能となる。
【0065】
さらに、シンボル指向型の処理のためのシンボル・サブスクライバ(symbol subscriber)アーキテクチャやデータ指示型処理のためのパイプライン・アーキテクチャのような、別様の場合、C++コアの範囲内に存在するような機能の多くをこの層の中へ組み込むことが可能である。
【0066】
具体的なCVM開発方法論:2段階スケジュリング
段階I
ベースバンド通信システムを構築する際の1つの重要な側面として、アプリケーションが実行される、ハードウェアとソフトウェアのプラットフォームとの要件の定量化がある。アプリケーションが要求するMIPS(100万命令毎秒)の回数のベースライン計算は比較的簡単であり、単に、1つの処理を実行するための、各コンポーネントの要求条件を計算し、処理回数を乗算し、それらすべてを一緒に加算するだけのものにすぎない。しかし、上記の中には並列要因のような側面は考慮されていない。2×500MIPSのプロセッサは理論的には1000MIPSの処理パワーを転送するとはいえ、別のチップでの処理の完了を待機している場合、アルゴリズムがこのパワーを利用できない場合もある。また、スケジュラの特別の処理要件、及び、考慮すべきデータ転送オーバーヘッドも存在する。2つのプロセッサが同じボード上に存在する場合、データ転送ペナルティはおそらく小さなものであるが、2つのプロセッサが1つの外部バスの中へプラグ・インされた別個の独立のボード上に存在する場合には、データ転送ペナルティはさらに大きなものとなる。バスの競合(2以上のプロセッサが同時にデータの転送を望むこと)によっても能率全体が低下する可能性がある。CVMによって、この種の分散型環境におけるシステムの実現を容易にするいくつかの方法が提供される。
【0067】
最初に、付属説明1に記載されている信号処理用の関数などの個々の計算用コンポーネント要件、及び、付属説明1に記載されている信号処理機能に基づいて組み立てられるさらにアプリケーションに固有のエンジン要件の定量化が可能である。3G移動通信のような環境では、1つのブロックの内を通過するデータ量は時間中変動するため、1回のデータ転送速度で1つのブロックの要件を計算するだけでは十分ではない。その代わりに、プロファイルは潜在的入力ベクトル・サイズの範囲にわたって組み立てられる。
【0068】
CVMによって、一方の端でデータを注入し、もう一方の端で消費するデータ・フロー(パイプライン)のコレクションとしてシステムを定義することが可能となる。これらのパイプラインのエンジンは、入力ベクトル・サイズの関数としてエンジンがどれだけ多くの処理を必要とするかという点から特徴づけられる。MIPSの使用計算の第1のパスとして、このパイプラインに沿う、変動するサイズのエンジンの通過シミュレーションと、入力ブロック・サイズの関数としての上記使用合計の計算とが行われる。これにより、単一のプロセッサにおいて完了まで連続して実行したと仮定した場合のエンジンのMIPS要件の合計が計算される。
【0069】
さらに優れたモデルによってプロセッサを切り離すためにエンジンが割り当てられ、真のパイプライン接続が可能になる。このアーキテクチャに基づくソリューションは、シングルスレッドのソリューションよりもさらに多くのMIPSを必要とすることになるが、いったんパイプラインがロードされると、より短い経過時間でデータ・エンジンを処理できる可能性が生じることになる。Nをプロセッサの数、E(N)をプロセッサの利用効率(1=100%、0=ゼロ)、Mpを単一プロセッサのMIPSの定格、Mを当該MIPS要件の合計とすると、1秒のデータ処理時間Tは、下式で表される:
T=M/(E(N)×N×Mp)
【0070】
上式の目的はNの最小値を見つけることである。但しTは“ゆとりのある(comfortable)”マージンの1未満の数とする。E(N)は、単一のボードの場合1に接近し、(スケジュリングとデータ転送により導入されるオーバーヘッドに起因して)ボード数の増加に伴い低下する。E(N)は、処理用エンジンがボード間でどのように分散されるかによっても変動する(この変動は、変動するデータ転送要件と、不規則な負荷バランスがプロセッサをしばらくの間アイドル状態に放置する可能性とに起因する)。
【0071】
スケジュリング処理と、バスの特性と、エンジンの特性とに関する情報を持っているCVMシミュレータは、様々な数のボードとエンジン構成についてE(N)したがってTの計算を行うことができる。また若干のエンジンの“ダブルアップ(doubling up)”(2以上のボード上で同じ機能を持つこと)の影響を調査することも可能となる。
【0072】
あるタスクのために必要な一続きのエンジンをいったん認知すると、CVMがセットされ、エンジンとボードの構成を介して最適解を探す探索が可能となる。ボードの個々のMp値を出し(N×Mpをこの個々のMpの和で置き換える)、特定のエンジンを特定のボードに結びつけることも可能となる。例えば、ビタビ復号器はDSPよりも高いMIPS定格を持つFPGA上で常に実行する。多数のエンジンについての網羅的探索は実行不可能となるため技術者からの何らかの助けが必要となる。
【0073】
段階II
いったんエンジンとボードの受け入れ可能な構成が得られると、“本気で実行する”スケジュリング処理の段階IIへ進むことができる。段階Iでは、正しいボード上へのエンジンのロードに使用することはできないシステム構成を生成したことになる。メインボードのスケジュラもこの情報を利用することが可能となる。いったんシステムが実行されると、データ・エンジンはスケジュラから、データに対して機能するエンジンへ流れる。ほとんどの時間、このスケジュラは単に、処理を必要とする順にデータを先へ送るにすぎないが、より多くの知能的処理の適用が可能となる場合が生じてくる。同等の優先順位を持つ複数のエンジンが存在する場合、スケジュラは、作業ロードが最少となるようにスケジュリングを行うことにより、すべてのボード上でキュー・サイズのバランスをとることを試みる。2以上のボード上に同じ機能が存在する場合、スケジュラはスケジュリングを行うための最適ボードを再び探索する。同じボード上の2つのエンジン間でエンジンのルート選定を行う際にメインのスケジュラの関与が不要となるように、すべてのボードにはローカルなスケジュラが設けられる。スケジュラは、作業を送るボード選択権がある場合、可能であれば自分のボードを常に選択する。またスケジュラは、ログ・メッセージのルート選定やモニタ用コンソールへの情報のモニタ・バックなどのような緊急性の少ない活動のスケジュリングが可能な場合には、処理時の潜在的小休止状態(lull)を探索することにより、最も緊急を要するエンジンの絶対的緊急性をモニタする必要がある。
【0074】
さらなるCVM開発方法論:UMTSでの実現構成で使用されるようなMIPSカウンタ
上述したように、CVMは、CVMスケジュラによって接続され、制御される複数の分散型エンジンから構成される。これらのエンジンは同じハードウェア上に位置するものであってもよいが、異なるハードウェア(CPU、DSPまたはFPGA)上に位置することも可能である。CVMのUMTSでの実現構成の場合、障害を特定し、エンジン/ブロックの連続化を助けるシステムが開発されている。まずデータ・ブロック用の処理ルートが与えられているものと仮定する。例えば、UMTS規格25.212と25.222、にはTrCH段階でのブロックの多重化方法が提案されている。その場合、BERのような何らかの客観的判断基準に応じてルート間で処理の若干を切り替えてもよい。しかし、必要なエンジンについては認知されている。次いで、データ・サイズとユーザの数という点からエンジンのサイズを決定しなければならない。例えば、ベクトルが長さnで、かつ、エンジンが以下、
for (int i=0, i < n, i++)
{
for (int j=O, j < n, j++)
{
// Do something...
}
}
から構成されている場合、この処理はn2またはO(n2)の次数であるということができる。次に、基本命令((//Do something’)内の‘+’,‘−’,...)の数をカウントすることができる。例えば、FFTによってnLog(n)回の演算処理が行われることになる。次いで、この演算回数に1基本命令当たりのデバイスの実行命令の回数を乗算し、次いで、これをMIPSの回数で除して、タスクの実行にデバイスが要する時間を得ることができる。或いは、単に相対時間を設定してもよい。
【0075】
ユーザの数(K)について同じ処理を繰り返すことができる。例えばMUは2Kのような数になる場合もある。最終的に、各ブロックはビットレートの変更を行ってもよいし、行わなくてもよい。ターボ符号化によってビットレートは3倍だけ増え、CRCの使用により12ビットが加算される。(バスの待ち時間、スケジュラ、並列化/連続化はすべてエンジンと考えることができることに留意されたい)
【0076】
重要な点は当該データ転送速度がわかっているという点である。上記処理により解答が得られる問題として、エンジン(エンジンのMIPS予算など)をどのように配分してその調整を行うようにすることができるかということが挙げられる。
【0077】
トップ・ダウン方式による設計
状態制御とデータ制御とを必要とする場合、処理用チェーンの走査はきわめて複雑となる。この処理手順を用いて、標準的アダプタを介してRSの中にC++ブロックが結びつけられ、Simulinkとの統合化が行われる。基本的に、上記処理の意図は階層の中を移動することである。層を上位へ移動するほど抽象のレベルがだんだん高くなる。その意図は、3つのサービスについて‘ユーザ’が作成するデータのラウンド・トリップを行うことである。UEによって、ある一定のプロパティを持つ物理チャネルを介してBSへのデータの送信が行われる。BSは上記データを受信し、復号化する。この場合、BSは簡単なバックホールを持ち、物理チャネルを介してデータを再転送して元のUEへ戻し、このUEで上記データは入力データと比較される。このシステムによってエンジンの入替えが可能になり、種々のチャネルにおけるBERと時間という点からパフォーマンスの改善が図られる。
【0078】
CVMの特性
CVMは、ベースバンド処理スタックが必要とする種類の機能を提供する最低限のOSと考えることもできる(また、上述したように、これらのスタックはGSMやブルートゥースのような2方向スタックであってもよい)。したがって、CVMは、マイクロソフト社のウィンドウズCEやシンビアン社のEPOCのような、本格的な内蔵型オペレーティング・システムと相補うものである。
【0079】
CVMでは、(特に)下記の機能が提供される:
* FFTフィルタ、FIRフィルタ、IIRフィルタ及びウェーブ・ディジタル・フィルタ、及び、デシメーション、相関、複素乗算などのようなオペレーションをカバーする広範囲のセットのベクトル処理用プリミティブ(さらに多くのプリミティブが付属説明1に完全にリストされている)上記オペレーションは、基底を成すハードウェアで加速処理が利用可能なハードウェアによる加速処理を利用することが望ましく、さらにこれらのオペレーションは、ライブラリの拡張バージョンを並列化する1組のライブラリ呼出しを介してアクセスされることになる。ある意味では、CVMのこの側面は、デジタル通信を行うための理想化されたデジタル信号処理用エンジンのソフトウェアまたはAPIの抽象的な形を表すものである。
* 整列バッファの割当てと、メモリ‘ハンドシェーキング’(ピンポン・バッファ)とのサポート
* 単純な種類のプリエンプティブ・マルチスレッドのオプションを備えた高度スケジュリング管理ハードウェアによるリアルタイム・パフォーマンス(すなわち、ある特定の時点に1つのコードが処理を実行する)がアーキテクチャの主要なコンポーネントとしてサポートされる。プロセス間通信構造(少なくとも共有メモリ)とスレッド同期ファシリティとが提供される。主要な特長として、確率的並列スケジュラがあり、このスケジュラは計算用異種サブストレートの両端にわたるCVMエンジンに対する設計時間の分割の決定を認識するものである。
* シンボル指向型及びデータ指向型処理についての概念の明示的サポート、これは、シンボル・サブスクライバ(symbol subscriber)とパイプライン段階とを構造の中へ付加してモジュラ型の開発を可能にする能力を直接サポートするものである。
* シリアルポート、パラレルポート及び表示制御装置を含む主要なI/O周辺機器のサポート
* 特に、モジュラ型I/OサポートのO/Sの範囲の拡大を可能にする拡張性
* 数学モデルとリアルタイム・プロトタイプとが、ターゲット・サブストレートと相互接続とのパフォーマンスのシミュレーションを高度の正確さで行うことを可能にする特定の実現構成についての特性ライブラリ
* リアルタイム・プロトタイプの製造を可能にするPCバージョン
* ホスト(アプリケーション)のOSとの通信のサポート:この通信はコールバック等々を可能にする双方向通信となる。2進‘グルー’を行うためにコンポーネント相互通信技術(COMなど)を利用してもよい。好適なアプリケーション用OSとしては、例えばEPOC32やウィンドウズCEであってもよい。なぜなら、これらのOSは、より一般的なユーザ・レベルのI/Oと、構造化された記憶管理とを実行するように設計されたOSであるからである。
* 最小の(したがって最終的にはチップ面積の)ROMの利用を保証するために組立てタイム(build time)においてCVMのROM画像を‘削減する(pare down)’能力 これはCVMの最低限の実現構成を利用するものである。
* ステートマシンの機能管理(SDLとの潜在的統合化を含む)
* データ構造のサポート
* (固定小数点や浮動小数点などのような)異なる表現間の変換
【0080】
CVMの目標は、開発段階での多数のアプリケーションを用いて、特定アプリケーションの高速な利用を特定のターゲット上で可能にすることである。従来のOSは、OSがロードされたとき実質的に未知の種々のアプリケーションの実行時サポート用として設計されているが、一般にCVMについては事実はそうではない。さらに、CVMは、‘ホスト’のOSが提供するポータルを介するプレゼンテーション・ストリームのサポートによる処理を除いて、ユーザとのインタラクション処理を必要としない。
【0081】
CVMは、インフラ・ストラクチャ・レベル(シンボル指示型及びデータ指示型処理の開発のための適切なモジュラ型構造など)の中へDABスタックの高レベルのC++コードの中に現在存在するいくつかの特性を組み込んでおり、単なる‘ライブラリ・ラッパ’ではない。
【0082】
CVMというコンセプトは、共通機能の分離と、(重要なことであるが)最新のデジタル放送及び通信規格によって求められる処理構造の分離とが可能であり、系統的に層化された開発環境と結合された適切なソフトウェア分離層を介して、これらの分離のエレガントな達成が可能であるという着想(様々な規格のレビューによってしか達成できないドメイン情報と、実際のスタックの構築処理とに大きく依存する)に基づくものである。
【0083】
CVMの利点
CVMでは、スタックの開発者たちは使用中の特定のハードウェアから切り離される。CVMとは、(シンボル指示型及びデータ指示型パイプライン及びステートマシンなどの)構造と、(メモリ割付け、リアルタイム資源、同時性管理など)機能と、デジタル通信用ベースバンド・スタックにより求められる(FFT、ビタビ、畳み込みなどの)ライブラリとをサポートし、それによって、高水準言語(SDL、ANSIC/C++またはJava)によるコードの1回の書込みと、単なる再コンパイル(必要な場合には、Javaを用いてコードの再コンパイルを行わずに、COMまたはコンポーネントの相互通信技術の何らかの別の形により‘2進レベルの’グルーを行ってモジュールを一緒にリンクすることも可能である)とが可能になるようにして、特定のプラットフォーム上で実行し、それによってCVM層により供給されるハードウェア分離層を介して呼出しを行うようにするものである。
【0084】
CVMを用いるプロトタイピングは非常に高速なものとなり、DSPモジュールの各々は数学モデルにより並列に設けられる。メモリ割付けと分割は、推測作業に依拠するのではなく、(所望のターゲット・ハードウェアによりパラメータ化された)自動化されたツールセットによりサポートされる。いったん処理用チェーンがモデルに対して設定され(この設定は、符号化の代わりにこのグラフィック構成とパラメータ化とによりオプションとして実行される)、作業が首尾よく行われていると、リアルタイムのPCベースのバージョンの実行が可能になる(RadioScape社の汎用ベースバンド・プロセッサ・モジュールを備えたCVMのIntel MMX/SIMDバージョンが用いられる)。(カスタム等化器などの)標準的コードに対する任意の変更をモジュラ型増分方法で統合化することが可能であり、さらに(PCベースの)符号化/テスト/編集サイクルはすべての最新のPC開発用ツールを利用することもでき、非常に高速なものとすることも可能となる。ターゲット・プラットフォームでのハードウェア加速処理の利用がCVMによりカバーされている(これは、デジタル通信のベースバンド処理のための、多くのサイクルを要する所要の特性がCVM APIでのライブラリ呼出しとして提供されるためである)。好適に適合された基底を成すハードウェア・ユニットによって、所望の機能のほとんどのためのターゲットとする加速が与えられることは明らかである。多くのアプリケーションの場合、軽量のプリエンプティブ・マルチスレッドと、CVM自体でのその他の低レベルの機能とをサポートすることにより、何らかの別のRTOSの利用は不要となるが、(ウィンドウズCEやシンビアンのEPOCなどのような)ユーザのOSとのインタラクションは上述のAPIを介してサポートされ、単純になる。
【0085】
このアプローチでは、いったん書き込まれたCVM互換スタックは、特別の作業を伴うことなく、CVM自身が移植されたハードウェアのプラットフォームのいずれへも瞬時に移植可能となる(言うまでもなく、リアルタイムで所望のスタックを実行するための十分な資源(MIPS、メモリ、帯域)がターゲット・マシンに常に存在するものと仮定する)。こののことは、(多くのタイプのハードウェアで使用できる適正なCVMのプラットフォームが市場に浸透すると仮定すると)スタック・ベンダにとって実質的な販売の機会が生じることを表すものである。というのは、これはハードウェアの特殊性からスタック・ベンダの開発を実質的に切り離すものであるからである。また、マルチベンダSoC製品を設計するための特にめざましいビジネス・チャンスも生じる。
【0086】
ハードウェア・ベンダの視点から見ると、CVMの利点として、CVMがいったん所定のプロセッサ用として移植されると、当該プロセッサが、(資源が許せば)CVM APIに対して書き込まれたすべてのスタックを自動的にサポートするということが挙げられる。言うまでもなく、このことによって、ハードウェア・プロバイダはアプリケーション・ビジネスの中へ入ってゆくことが不要になる。彼らはCVMを移植するだけで十分となる。またこのことは、(少なくともデジタル通信マーケット向けの)スタック・ベンダが、その場合、ANSI C/C++またはJavaで純粋にコードを開発することができるので、完全仕様の開発環境とツールセットを形成しサポートする必要性が少なくなることも意味する。CVMというコンセプトは、例えば、自動車用ブレーキ・システムで使用されるPIDコントローラを作るというような、すべてのデジタル信号処理タスクに適用されるというわけではないことに留意されたい。CVMのコンセプトがデジタル通信用ベースバンドの処理用として機能する理由として、上記に説明したように、利用が可能なこのようなシステムの中に共通性を示す広いプールが存在することが挙げられる。しかし、CVMは、別のデジタル信号処理タスクに必要とされるようなすべてのツール、構造あるいは機能を必ずしも提供するものではない。言うまでもなく、共通の機能を示す別のそのような‘島(island)’を特定し、それらの‘島’のニーズをカバーするCVMのイディオム(idiom)の拡張を行うことは潜在的には可能であろう。しかし、本願出願人は本明細書においてベースバンドの側面に焦点を絞っている。なぜなら、ベースバンドの側面が現在非常に求められており、さらに必要な共通性が強く示されているからである。CVMによるアプローチは、ハードウェア・ベンダが、既存のアプリケーション・セットではなく、代わりに、それらのハードウェアの長所(MIPS、ターゲットの加速、メモリ、電力消費量など)に関して自由に競争ができるようにするものである。
【0087】
CVM開発サイクル
実際にCVMを利用してベースバンド・スタックを開発するプロセスについて以下説明する。本明細書の目的として、デバイスが、デジタル無線装置などのような開発中の目標であることが挙げられる。ソフトウェア、ハードウェアあるいはその双方のいずれかであるコンポーネントは上記デバイスの特定可能な或る特定の一部である。‘解釈される’という表現は、実行時に構成を読み込む(おそらくコンパイルされた)コードを意味する。
【0088】
開発サイクルは‘コンポーネント定義言語’から始まる。この言語によって、コンポーネントの完全な外部からの可視属性の特定並びにその振舞いが可能になる。その意図として、メーカーがこの可視属性を書き込むことが可能であること、あるいは(後程見るように)計装化CVMの試運転によりこの可視属性の生成が可能であることが挙げられる。
【0089】
プラグ・インを介して、業界でポピュラーなMatlabやMthematicaのような数学モデリング用ツールに1組のコンポーネント定義言語を読み込むことができる。モデリング用ツールを用いて、デバイスで使用するすべてのコンポーネントの理論上の振舞いが利用され、理解される。
【0090】
上記調査の結果は、開発される別のプラグ・インを介して、‘デバイス定義言語’の中へ転記または出力のいずれかが行われる。ちょうどコンポーネント定義言語がコンポーネントを定義するように、この‘デバイス定義言語’は、構築されているターゲット・デバイスを定義し、さらに、どのコンポーネントが使用されているかというような要素を含むことになる。
【0091】
言い替えれば、デバイス定義言語は、開発中の通信用‘パイプライン’を定義するものである。ほとんどの通信用デバイスは、パイプラインを介して情報を動かし、その途中で変換を実行するプロセスであると考えることができるので、このパイプラインというコンセプトは重要である。このパイプラインは実際には電子的なアセンブリ・ラインであるが、自動車の部品で機能するようなものではなく、一般に‘シンボル’と呼ばれるデータ項目に対して機能するものである。このようにして、無線信号が最終的にオーディオ信号へ変換されることになる。言うまでもなく、‘現実の’デバイスは単純なパイプラインよりも複雑であることが多く、2以上のパイプライン、ブランチまたはループを備えている場合もある。完全なハードウェア・バージョンを組み立てる前に、このCVM開発プロセスによりパイプライン設計のテストを行うことが可能となる。これは開発期間の短縮につながるものとなる。
【0092】
ターゲット・デバイスまたはパイプラインを完全に定義するためにはさらに多くの情報が必要となる。また、本発明のターゲットで利用可能な(CPUの速度などのような)資源についての説明も必要であり、これは‘適合性記述用言語’と相互接続とで定義される。また各コンポーネント(物理的及びソフトウェアの双方のAPI)がどのように使用されるかを知っている必要がある。これはコンポーネントAPI仕様を用いて達成される。
【0093】
これらの3つの資源:デバイス定義言語、適合性記述用言語及びコンポーネントAPI仕様はいくつかの可能なCVMの中の1つの範囲内で使用される。第1のCVMは‘計装化され解釈された’パイプライン・マネージャ(あるいは、好適には、計装化され解釈されたバージョンよりもさらに高速に作動する計装化されコンパイルされたCVMのほうが望ましい)である。このパイプライン・マネージャは、ソフトウェアICEとの或る類似性を有するものである。このマネージャは上記3つの資源を読み出し、パイプラインのエミュレーション(エミュレーションはリアルタイムであってもよい)を行う。したがって、このマネージャはターゲットが無線装置である場合、無線装置として実行する。適合性記述用言語に起因して、このマネージャはターゲット・デバイス上に存在するいずれの障害または資源の限界のシミュレーションをも行うことができ、また、開発とデバッギングとを行うために有用なものである。実行に加えて、計装化され解釈された/または計装化されコンパイルされたパイプライン・マネージャは、各デバイス内コンポーネント定義言語のための診断情報も出力する。この診断情報は重要である。というのは、この情報を今度は開発サイクルの中へフィードバックし、元のコンポーネント定義言語による記述とマージして、その記述の微調整を行うことができるからである。したがって、何らかのハードウェアの組立てを行う前に設計者が実際のパフォーマンスに関する情報を利用することが可能となり、これによって(実質的に)開発の節減が行われる。これによって開発サイクルの内部ループが閉じられる。計装化され解釈された、あるいは、計装化されコンパイルされたパイプライン・マネージャにより、CVMコアの実行時バージョンが組み込まれる。計装化され解釈された、あるいは、計装化されコンパイルされたパイプライン・マネージャのソフトウェア・エレメントをハードウェアのバージョンと交換する(バグが生じたときバグの検出が可能となるように理想的には1回一度)ことが可能である。この交換されたエレメントは別の開発プロセスのための改善となる。この改善は、計算用サブストレートの両端にわたるエンジンの設計時間段階のスケジュリング処理(上記を参照されたい)に対応するものである。
【0094】
第2のCVMは‘解釈されたパイプライン・マネージャ’である。この第2のCVMは計装化されたものではないが、別の点では第1のCVMと同一のものである。この第2のCVMは開発とデバッギング時に利用することができ、また、メーカーが完成製品を製造するために利用することができる。このCVMには、通信用デバイスの書込み時の作業の多くを予め行うという第3の利点がある。このCVMにもやはりCVMコアの実行時バージョンが組み込まれている。
【0095】
第3のCVMは‘パイプライン・ビルダ’である。この第3のCVMはコンパイルされた非計装化変形例と考えることができる。他の2つのCVMのように、この第3のCVMも3つの資源を読み出すが、実行する代わりに、C言語のようなコンピュータ・ソースコードを出力し、このコードをコンパイルしてパイプラインの実現構成の形成が可能となる。この理由のため、パイプライン・ビルダは、CVMライブラリを利用できなければならない。利用できるか否かをチェックすることにより開発サイクルの外側のループが閉じられる。CVM開発サイクルのアプローチ全体が図8と9に概略的に示されている。
【0096】
本明細書の従来技術についてのセクションで、テキサス・インスツルメント社から出ている「eXpressDSP(eXpressDSP)リアルタイム・ソフトウェア技術」の存在が認められた。CVMが有する主要な進歩は当業者には明らかであろう。この進歩の中には以下のことが含まれる:
* eXpressDSPそれ自体はバーチャル・マシン層ではない。
* CVMによって、単にバーチャル・マシンの移植により様々なDSPプラットフォーム間の移植性が可能になる。CVMは(TI社のシステムのように)1つのプラットフォームにのみ結びつけられているものではない。
* CVMには数学モデリングルとの統合化が含まれる。
* CVMによって、DSPベースのツールの能力に劣らないPCベースのツールを利用するスタック開発が可能になる。
* CVMには、PC上での‘リアルタイム’のプロトタイプを形成して、ターゲット環境上へ1つずつモジュールを移動させる能力が含まれる。
* CVMには、標準的コード・セットの実行により資源タイミングを生成し、次いで、この資源タイミングから‘アーキテクチャ記述プロファイル’を生成する能力が含まれる。
* ‘高いサイクル’のルーチンのほとんどは、一般的‘リアルタイムのソフトウェア基盤’の代わりにベースバンド通信エンジンの信号処理要件の方へ方向づけられているCVM‘環境の中に’予め存在するので、CVMによって高水準言語を用いる開発が可能になる。
* またCVMでは、ベースバンドDSPに共通して必要とされる、データの種類と、動的資源と、バッファ管理とが含まれる。
* CVMでは演繹的資源予測と同時性分析とが行われる。
* CVMには単に機能エレメント(API)が含まれるだけではなく、起呼構造(DSPコードがどのように動的に機能するか)並びに(PCベースのプロトタイピングと、最終的エンド・ターゲットを通じての数学モデリング、資源モデリングによる)全体的な開発パラダイムの支援も含まれる。
* CVMによって、所望の場合サード・パーティのRTOSの利用が可能になり、さらに、所望の場合RTOSなしの機能も可能である。
* CVMは2段階スケジュリングを提供する。
* CVMにより、ASICとSoCへ移行する利点が可能になる。
* CVMによって、完全に統合化され、しかも、プラットフォームから独立したランタイムと設計用ツールとが提供される。
―附属説明―
コア処理の例
信号変換と周波数領域分析
* 信号フローグラフ(SFG)離散周波数DFT
* ウィンドウ操作(ハミング、ハニングなど)
デジタル・フィルタリング
* デジタルFIRフィルタ
* インパルス応答
* 周波数応答
* FIR低域デジタル・フィルタ
* 無限インパルス応答デジタル・フィルタ
適応信号処理
* 適応型デジタル・フィルタを含む適応信号処理用コンポーネント
* チャネル識別
* エコー・キャンセレーション
* 音響エコー・キャンセレーション
* 暗騒音抑制
* チャネル等化
* 適応型ライン拡張機能(ALE)
* 以下を含む適応型アルゴリズム:
* 平均2乗誤差の最少化
* FIRフィルタ用適応型アルゴリズム
* 平均2乗誤差
* 最小平均2乗誤差の解
* ウィーナ/ホップ(Wiener−Hopf)解
* 傾度法1
* 傾度法2
* LMSアルゴリズム
* 再帰的最小2乗法
* 適応型IIRフィルタリング
* 勾配IIRフィルタリング技術
* FeintuchのIIR LMS
* 等式誤差LMSアルゴリズム
* 直接モード(DDM)
* サブバンド適応型フィルタ(SAF)構造
マルチレート信号処理
* アップサンプリング&ダウンサンプリング
* 内挿ローパス・フィルタ
* オーバーサンプリングと再構成
* シグマ/デルタ処理アーキテクチャ
* サブバンド処理
* 反復によるMチャネル・フィルタ・バンク
* 変調フィルタ・バンク
* 多相フィルタ・バンク
* QMFフィルタ・バンク
オーディオ信号ソース符号化
* 無損失ハフマン(Huffman)符号化/復号化
* 線形PCM
* 圧伸
* 適応型量子化ツール
* 線形予測符号化
* 長期予測
* デルタ変調(DM)
* 差分パルス符号変調
* 適応型DPCM(ADPCM)LPCボコーダ
* 符号励振線形予測(CELP)
* 代数的CELP(ACELP)
* サブバンド符号化
* 精神聴覚学用ツール
* スペクトル・マスキング
* 時間マスキング
* 精度適応型サブバンド符号化及びビット割当て及びビット・ストリーム・フォーマッティング・ツール
デジタル変調
* XOR長短コード拡散/逆拡散
* 振幅変調
* 直角振幅変調(QAM)
* 直角位相復調
* 複雑な直角位相変調
* 複雑な直角位相復調
* QPSK
* n−PSK
* M−ary振幅偏移キーイング
* π/nQPSK
* ユニポーラRZ及びNRZシグナリング
* 極座標及びバイポーラRZ及びNRZシグナリング
* 以下を含む帯域通過偏移キーイング
* 振幅(ON−OFF)偏移キーイング
* 2進位相偏移キーイング(BPSK)
* 以下を含む周波数偏移キーイング
* BPSK用帯域フィルタリング
* 以下を含むパルス成形
* ナイキスト・パルス成形
* 2乗余弦パルス成形
* 平方根2乗余弦パルス成形
拡散スペクトル・ツール
* 擬似乱数コード生成
* 黄金シーケンス
* カサミ・シーケンス
* 直交拡散符号
* 可変長OC生成
* 直交ウォルシュ・コード
* コード検出
* レイク受信装置実装
* 以下を含むNBI拒絶技術
* 予測フィルタ
* 変換領域におけるNBI拒絶
* 決定フィードバックNBI拒絶
多元接続&検出管理用ツール
* 以下を含むTDMA
* TDMAフレーム
* FDMAと合成されたTDMA
* 以下を含むCDMA
* 直接シーケンス(DS)CDMA
* 電力制御
* ビーム成形用ツール
* 周波数ホッピングCDMA
* マルチユーザ検出(MUD)
* 多元接続干渉抑制
* 非相関性
* 干渉キャンセラ
* 適応型MMSE
* MMSE受信機トレーニング
* 適応型MMSE受信機DDM
移動チャネル
* レイリー・フェージング抑制メカニズム(ガウス、Riceian)
* 以下を含むモデリング及び抑制用ツール:
* タイム・スプレディング
* タイム・スプレディング:コヒーレンス帯域
* タイム・スプレディング:平坦フェージング
* タイム・スプレディング:Freq選択フェージング
* チャネルのタイム変形振舞い
* ドップラ効果
チャネル符号化
* 巡回符号器
* リード・ソロモン(Reed Solomon)符号器
* 畳み込み符号器
* CEパンクチャリング
* インターリービング
* 畳み込み復号器
* ビタビ復号器(ハード及びソフト決定)
* ターボ・コード
* ターボ符号化
* ターボ復号化
等化
* 適応型チャネル等化
* FIR等化器
* 決定フィードバック等化器
* 直接変換ツールキット
* QAMアナログRF/IFアーキテクチャ
* QAM IFダウンコンバージョン・サポート
* 帯域通過シグマ・デルタサポート
* ベースバンド・サポートへの帯域通過シグマ・デルタ
* 帯域通過及びfs/4システム
信号処理ライブラリ関数
このセクションはCVMで利用可能な信号処理関数の若干について説明する。
* ベクトル操作関数
AutoCorrelate 入力ベクトルの通常の、バイアスをかけたあるいはバイアスをかけていない自己相関を推定し、その結果を第2のベクトルに格納する
Conjugate (vector) ベクトルの複素共役を計算し、その結果を対応する当該レジスタ又は別のベクトルに返すことが可能である。
Conjugate (value) 複素数値の共役を返す。
Extended Conjugate 対応する当該レジスタ又は新しいベクトルでベクトルの共役/対称拡張を計算する。
Exp 各エレメントが、入力ベクトル内の対応するエレメントのパワーに対してeであるベクトルを計算する。この結果は対応する当該レジスタ又は別のベクトルに返すことができる。
InverseThreshold 閾値を用いてベクトルの逆エレメントを計算する。この結果は対応する当該レジスタ又は別のベクトルに返すことができる。
Threshold ベクトルで閾値演算処理を実行する。この結果は対応する当該レジスタ又は別のベクトルに返すことができる。
CrossCorrelate 2つのベクトルの相互相関を推定し、第3のベクトルにその結果を格納すする。
DotProduct 2つのベクトルに対してExtendedConjucate演算を適用後、2つのベクトルの点乗積を計算する
ExtendedDotProd 2つの共役シンメトリック拡張ベクトルの点乗積を計算する
downsample 或る信号をダウンサンプルし、概念的に或る整数係数分だけそのサンプリング速度を落とす。第2のベクトルにその結果を返す。
Max ベクトルで最大値を返す。
Mean ベクトルでエレメントの平均値を計算する。
Min ベクトルで最小値を返す。
upsample 或る信号をアップサンプルし、概念的に或る整数係数分だけそのサンプリング速度を上げる。第2のベクトルにその結果を返す。
PowerSpectrum (1) 第2のベクトルで複素ベクトルのパワー・スペクトルを返す
PowerSpectrum (2) 実数成分と虚数成分が2つのベクトルで表される複素ベクトルのパワー・スペクトルを計算する。第3のベクトルにその結果を格納する。
Add 2つのベクトルを加算し、第3のベクトルにその結果を格納する。
Subtract 1つのベクトルを別のベクトルから減じ、第3のベクトルにその結果を格納する。
Multiply 2つのベクトルを乗算し、第3のベクトルにその結果を格納する。
Divide 1つのベクトルを別のベクトルで除し、第3のベクトルにその結果を格納する。
* 複素ベクトル演算
ImaginaryPart 第2のベクトルで複素ベクトルの虚数部分を返す。
RealPart 第2のベクトルで複素ベクトルの実数部分を返す。
Magnitude (1) 複素ベクトルの要素の振幅を計算し、第2のベクトルにその結果を格納する。
Magnitude (2) この第2のバージョンは、個々の実ベクトルで指定された実数成分と虚数成分を持つ複素ベクトルの要素の振幅を計算し、第3のベクトルにその結果を格納する。
Phase (1) 第2のベクトルで複素ベクトルの要素の位相角を返す
Phase (2) それぞれ実ベクトルと、虚ベクトルで指定される実数成分と虚数成分とを持つ複素入力ベクトルの要素の位相角を計算する。この関数は、第3のベクトルに結果として生じる位相角を格納する。
ComplexToPolar 個々の入力ベクトルの実数/虚数(デカルト座標X/Y)の対を極座標形式に変換する。1つのバージョンは、1つのベクトルに各要素の成分の振幅(半径)を格納し、別のベクトルに各要素の位相(角)成分を格納する。
ComplexToPolar 第2のバージョンは、単一ベクトルで(振幅、位相の)対として極座標を返す。
PolarToComplex ベクトルに格納される極形式(振幅、位相)の対を複素ベクトルに変換する。この結果を第2のベクトルで返す。
PolarToComplex 個々のベクトルに格納された極形式の振幅/位相の対を複素ベクトルに変換する。この関数は第3のベクトルにその結果の実数成分を格納し、第4のベクトルに虚数成分を格納する。
PolarToComplex 2つの個々のベクトルに格納された極形式の振幅/位相の対を複素ベクトルに変換する。この関数は、第3のベクトルにその結果の実数成分を格納し、第4のベクトルに虚数成分を格納する。
* サンプル量子化
これらの方法は線形と非線形量子化方式との間での変換を行う。使用ビット数と、使用非線形パラメータとは変更してもよい。
AlawtoLinear A−law符号化サンプルのベクトルを線形サンプルへ変換する。この結果は対応する当該レジスタ又は別のベクトルに返すことができる。
LinearToALaw 線形サンプルベクトルを符号化する。この結果は、A−lawフォーマットを用いて、対応する当該レジスタ又は別のベクトルに返すことができる。
LinearToMuLaw pt−lawを用いてベクトルで線形サンプルを符号化する。この結果は対応する当該レジスタ又は別のベクトルに返すことができる。
MulawTolinear 8ビットkt−lawの符号化されたサンプルのベクトルを線形フォーマットに変換する。この結果は対応する当該レジスタ又は別のベクトルに返すことができる。
* サンプル生成関数
RandomGaussian ガウス分布を用いて疑似ランダム・サンプルのベクトルを計算する。
InitialiseTone 所定の周波数、位相及び振幅を用いて正弦波発生装置を初期化する。
NextTone InitialiseToneを用いて指定された周波数、位相、振幅の正弦波の次のサンプルを生成する。
InitialiseTriangle 所定の周波数、位相及び振幅を用いて三角波発生装置を初期化する。
NextTriangle InitialiseTriangleのパラメータを用いて生成された三角形波の次のサンプルを生成する。
* ウィンドウ関数
bartlettwindow ベクトルにBardentウィンドウ関数を乗算する。その結果は第2のベクトルで返される。
BlackmanWindow ユーザ指定パラメータを用いてベクトルにBlackmanウィンドウ関数を乗算する。その結果は第2のベクトルで返される。
HammingWindow ベクトルにHammingウィンドウ関数を乗算する。その結果は第2のベクトルで返される。
HannWindow ベクトルにHannウィンドウ関数を乗算する。その結果は第2のベクトルで返される。
KaiserWindow ベクトルにKaiserウィンドウ関数を乗算する。その結果は第2のベクトルで返される。
* 畳み込み関数
Convolve 2つのシーケンスの有限、線形畳み込みを実行する。
Convolve2D 2つの2次元信号の有限、線形畳み込みを実行する。
Filter2D Convolveと類似の2次元信号をフィルタする。但し、同じサイズの入出力配列を用いる。
* フーリエ変換関数
これらの方法のバージョンは、複数の異なるデータ格納(固定型、浮動型、整数型)フォーマット用のものが存在する。
DiscreteFT 対応する当該レジスタ又は別のベクトルで離散フーリエ変換を計算する。
InitialiseGoertz Goertzel関数により使用されるデータを初期化する。
ResetGoertz Goertzel関数により使用される内部遅延ラインをリセットする。
GoertzFT(1) 単一信号カウント用の所定の周波数についてDFTを計算する。
GoertzFT(2) 連続する信号カウント・ブロック用の所定の周波数についてDFTを計算する。
FFT (1) 対応する当該レジスタ又は別のベクトルのいずれかでベクトルの複素高速フーリエ変換を計算する。
FFT (2) 対応する当該レジスタ又は別のベクトルのいずれかで2つの共役左右対称信号の順方向高速フーリエ変換を計算する。
FFT (3) 対応する当該レジスタ又は別のベクトルのいずれかで1つの共役左右対称信号の順方向高速フーリエ変換を計算する。
FFT (4) 複素ベクトルの高速フーリエ変換を計算し、その結果を2つの別々の(実数と虚数)ベクトルで返す。
FFT (5) 2つの別々の(実数と虚数)ベクトルとして与えられた複素ベクトルの高速フーリエ変換を計算し、その結果を2つの別々の(実数と虚数)ベクトルで返す。
IFFT (1) 対応する当該レジスタ又は別のベクトルのいずれかでベクトルの逆高速フーリエ変換を計算する。
IFFT (2) 対応する当該レジスタ又は別のベクトルのいずれかで2つの共役左右対称信号の逆高速フーリエ変換を計算する。
IFFT (3) 対応する当該レジスタ又は別のベクトルのいずれかで共役左右対称信号の逆高速フーリエ変換を計算する。
* 有限のインパルス応答フィルタ関数
InitialiseFIR 1セットの;1組の遅延ライン値とタップとを用いて低レベル、単一レート有限インパルス応答フィルタを初期化する。
FIR InitialiseFIRを用いて前に構成された低レベル、有限インパルス応答フィルタを介して単一サンプルをフィルタする。
BlockFIR 低レベル有限インパルス応答フィルタを介してサンプルのブロックをフィルタする。
GetFirDelays 低レベル有限インパルス応答フィルタのための遅延ライン値をゲットする。
GetFIRTaps 低レベル有限インパルス応答フィルタのためのタップ係数をゲットする。
SetFIRDelays 低レベル有限インパルス応答フィルタのための遅延ライン値を変更する。
SetFIRTaps 低レベル有限インパルス応答フィルタのためのタップ係数を変更する。
Initialisemultifir 低レベル・マルチレート有限インパルス応答フィルタを初期化する。
Multifir InitisliseMultiFirを用いて前に構成された低レベル・マルチレート有限インパルス応答フィルタを介して単一サンプルをフィルタする。
BlockMultiFIR InitisliseMultiFIRを用いて前に構成された低レベル・マルチレート有限インパルス応答フィルタを介してサンプル・ブロックをフィルタする。
* 最小乗平均適合化フィルタ関数
InitialiseSALF 最小2乗平均(LMS)アルゴリズムを用いる低レベル単一レート適応型FIRフィルタを初期化する。
InitialiseMALF 最小2乗平均(LMS)アルゴリズムを用いる低レベル・マルチレート適応型FIRフィルタを初期化する。
InitALFDelay 最小2乗平均(LMS)アルゴリズムを用いる低レベル適応型FIRフィルタ用遅延ラインを初期化する。
SALF 最小2乗平均(LMS)アルゴリズムを用いる低レベル単一レート適応型FIRフィルタを介してサンプルをフィルタする。
MALF 最小2乗平均(LMS)アルゴリズムを用いる低レベル・マルチレート適応型FIRフィルタを介してサンプルをフィルタする。
SLF 最小2乗平均(LMS)アルゴリズムを用いる低レベル単一レート適応型FIRフィルタを介してサンプルをフィルタするが、2次信号用としてフィルタの適合は行わない。
MLF 最小2乗平均(LMS)アルゴリズムを用いる低レベル・マルチレート適応型FIRフィルタを介してサンプルをフィルタするが、2次信号用としてフィルタの適合は行わない。
EnginesALF 最小2乗平均(LMS)アルゴリズムを用いる低レベル単一レート適応型FIRフィルタを介してサンプルのブロックをフィルタする。
BlockMALF 最小2乗平均(LMS)アルゴリズムを用いる低レベル・マルチレート適応型FIRフィルタを介してサンプルのブロックをフィルタする。
EnginesLF 最小2乗平均(LMS)アルゴリズムを用いる低レベル単一レート適応型FIRフィルタを介してサンプルのブロックをフィルタするが、2次信号用としてフィルタの適合は行わない。
BlockMLF 最小2乗平均(LMS)アルゴリズムを用いる低レベル・マルチレート適応型FIRフィルタを介してサンプルのブロックをフィルタするが、2次信号用としてフィルタの適合は行わない。
SetALFDelays 低レベル適応型最小2乗平均(LMS)アルゴリズムを用いるFIRフィルタ用として遅延ライン値をセットする。
SetALFLeaks 最小2乗平均(LMS)アルゴリズムを用いる低レベル適応型FIRフィルタ用として漏れ値をセットする。
SetALFSteps 最小2乗平均(LMS)アルゴリズムを用いる低レベル適応型FIRフィルタ用ステップ値をセットする。
SetALFTaps 最小2乗平均(LMS)アルゴリズムを用いる低レベル適応型FIRフィルタ用としてタップ係数をセットする。
GetALFDelays 最小2乗平均(LMS)アルゴリズムを用いる低レベル適応型FIRフィルタ用として遅延ライン値をゲットする。
GetALFLeaks 最小2乗平均(LMS)アルゴリズムを用いる低レベル適応型FIRフィルタ用として漏れ値をゲットする。
GetALFSteps 最小2乗平均(LMS)アルゴリズムを用いる低レベル適応型FIRフィルタ用としてステップ値をゲットする。
GetALFTaps 最小2乗平均(LMS)アルゴリズムを用いる低レベル適応型FIRフィルタ用としてタップ係数をゲットする。
* 無限インパルス応答フィルタ関数
InitialiseIIR 指定されたオーダーの低レベル無限インパルス応答フィルタを初期化する。
InitialiseBiquadIIR 低レベル無限インパルス応答(IIR)フィルタをbiquads(二次オーダーIIRセクション)のカスケード基準信号に初期化する。
InitialiseIIRDelay 低レベル無限インパルス応答(IIR)フィルタ用として遅延ラインを初期化する。
IIR 低レベル無限インパルス応答フィルタを介して単一サンプルをフィルタする。
BlockIIR 低レベル無限のインパルス応答フィルタを介してサンプルのブロックをフィルタする。
* ウェーブレット関数
DecomposeWavelet 信号をウェーブレット連続に分解する。
ReconstructWavelet ウェーブレット分解から信号を再構成する。
* 離散余弦変換関数
DCT 離散余弦変換(DCT)を実行する。
ベクトル・データ変換関数
このセクションで記述したすべての関数は、(様々な整数長、異なる浮動小数点フォーマット及び浮動小数点数の固定小数点表示のような)複数の様々なデータ・フォーマットでの機能が可能である。この信号処理ライブラリには、サポートされているフォーマットのすべての対の間で単一値とベクトルとを変換する方法が含まれる。
【図面の簡単な説明】
【図1】
マイクロソフト社のウィンドウズを利用している場合のハードウェアとアプリケーション・ソフトウェアとの間の関係を示す概略図である。
【図2】
ハードウェアとアプリケーション・ソフトウェアとの間のマイクロソフト社のウィンドウズ以前の関係を示す概略図である。
【図3】
ベースバンド・スタックのアーキテクチャ上仮定的に中立な部分を切り離すことができない従来の方式に起因する障害を示す概略図である。
【図4A】〜
【図4B】
本発明におけるベースバンド・スタックのアーキテクチャから見て中立な部分の切り離しの成功を示す概略図である。
【図5】
ベースバンド通信スタック内の構造を示す概略図である。
【図6】
本発明の実施例での共通のエンジンと構造とを示す概略図である。
【図7】
本発明のCVMと、ハードウェアとスタックとの間の関係を示す概略図である。
【図8】〜
【図9】
本発明を利用する開発サイクルでのステップを示す概略図である。
【用語の説明】
Architecture Neutral Layer 1 Code in SDL SDLで書かれたアーキテクチャから見て中立な層1コード
RadioScape CVM RadioScape社製CVM
Architecture Specific High MIPS Data paths アーキテクチャ独自の高MIPSデータ・パス
Engine エンジン
【図1】
1:アプリケーション・ソフトウェア1
2:アプリケーション・ソフトウェア2
3:ウィンドウズ・バーチャルマシン
4:プリンタ・ドライバ(共有)
5:DOS B/S
6:ハードウェア
【図2】
1:アプリケーション・ソフトウェア1
2:カスタム・プリンタ・ドライバ
3:カスタムGUIコード
4:アプリケーション・ソフトウェア2
5:カスタム・プリンタ・ドライバ
6:カスタムGUIコード
7:DOS B/S
8:ハードウェア
【図3】
1:スタックのアーキテクチャから見て中立な部分(正しく切り離されていない)
2:通信用マシン層
3:アセンブラ・コードされたベクトル関数
4:共通のDSPフロー制御構造
5:ハードウェア加速ドライバ
6:DMA CCS及び資源管理
7:オプションのRTOS
8:ハードウェア2
【図4A】
1:スタックのアーキテクチャから見て中立な部分(ハードウェアから切り離されている)
2:通信用マシン層
3:アセンブラ・コードされたベクトル関数
4:共通のDSPフロー制御構造
5:ハードウェア加速ドライバ
6:DMA CCS及び資源管理
7:オプションのRTOS
8:ハードウェア2
【図4B】
1:SDLで書かれたアーキテクチャから見て中立な層1コード
2:RadioScape社製CVM
3:アーキテクチャ独自の高MIPSデータ・パス
4:エンジン
【図5】
1:コンテンツ生成
2:ソース符号化
3:チャネル符号化
4:変調
5:復調
6:チャネル復号化
7:ソース復号化
8:コンテンツ・プレゼンテーションApp
【図6】
1:I/O
2:AEC
3:FFT
4:Chan Proc
5:Demod
6:MMIコード
7:パイプライン段階
8:シンボル指示型処理
9:データ指示型処理
【図7】
1:スタック境界
2:C++コア・コード
3:CVM A
4:ハードウェア+O/S A
5:スタック境界
6:C++コア・コード
7:CVM B
8:ハードウェア+O/S B
【図8】
1:初期アーキテクチャ仕様書
2:数学モデリング用ツール(Marlab)
3:グラフ記述言語(GDL)
4:PC開発環境(MS Dev.Studio,Tau)
5:アーキテクチャから見て中立な通信スタック(C++/SDL)
6:RadioScapeプラグ・イン拡張
7:RadioScapeライブラリ
8:RadioScapeターゲット内蔵CVM環境
9:RadioScape Intel MMX/SIMD CVM環境
10:プラグ・イン内蔵コンパイラ
11:アーキテクチャ・レポート(MIPS、メモリ、CCS)
12:RadioScapeアーキテクチャ解析ツール
13:RadioScapePC内RFプロトタイピング用PCIボード
14:FPGA/DSP処理用ボード
【図9】
1:CVM開発サイクル
2:モデリング用ツール(Matlab数学など)
3:パイプライン
4:プラグ・イン(RS)
5:TBA
6:手で
7:定義する
8:コンポーネント定義言語
9:コンポーネントAPI
10:コンポーネントの振舞い
11:デバイス定義言語
12:適合性記述用言語
13:コンポーネント“API”仕様
14:計装化
15:解釈された
16:パイプライン・マネージャ
17:実行&ログ
18:実行
19:コンポーネント定義言語
20:ソースコード
21:パイプライン・ビルダ
22:VMライブラリ
23:コンポーネント・ライブラリ
24:コンパイル
25:パイプライン
整理番号 884
【発明の属する技術分野】
本発明は、デジタル信号処理の設計、モデル化あるいは実行を行うためのソフトウェアに関する。本発明は、特に、通信用ベースバンド・スタックを用いて機能するデジタル信号プロセッサに関係する。通信用ベースバンド・スタックが通信用デバイスのデジタル信号処理に使用される。
【0002】
【従来の技術】
技術背景:デジタル信号処理(DSP)及びベースバンド・スタック
デジタル信号処理とは、アナログ及び/又はデジタル量のデジタル表現を操作する処理であり、チャネルを介して伝播される有用な情報の伝送または回収を目的とするものである。高速で、高精度の数値計算の利用により、デジタル信号プロセッサによるデジタル信号処理が実行されるが、一般に、これらのデジタル信号プロセッサは高速の、リアルタイムのデータ操作用として最適化された集積回路として形成される。デジタル信号プロセッサは、音声、通信、ビデオなどの多くのデータ収集、処理及び制御環境で使用される。デジタル信号プロセッサは、集積回路に加えて別の方法で実現が可能である。例えば、デジタル信号プロセッサは、マイクロプロセッサ、及び、プログラムされたコンピュータにより実現が可能である。本明細書で用いる用語‘DSP’は、任意のデバイスあるいはシステムもカバーするものであり、デジタル信号処理の実行が可能なソフトウェアまたはハードウェアあるいはこの2つの組合せのいずれでもよい。したがって用語‘DSP’は、1以上のデジタル信号プロセッサ・チップをカバーし、さらに以下のものをカバーするものである。すなわち:FPGA(フィールド・プログラマブル・ゲート・アレイ)やデジタル信号処理を実行するようにプログラムされたASIC、並びに、以上のいずれかの任意のチューリングデハイス類などのような1以上の外部協働用プロセッサと協働する1以上のデジタル信号プロセッサ・チップをカバーするものである。
【0003】
通信セクタでは、DSPでベースバンド・スタックを実行するとき、DSPはベースバンド・スタック用の非常に重要なエレメントとなる。DSPと共にスタックによりデジタル信号処理が実行される。本明細書で使用する用語‘ベースバンド・スタック’とは、1組の処理ステップ(またはこれらのステップを実行する構造)を意味し、これらの処理ステップには以下のステップ、すなわち:ソース符号化、チャネル符号化、変調の各ステップ、あるいはそれらの逆、すなわちソース復号化、チャネル復号化及び復調の各ステップが含まれる。さらに、用語‘ベースバンド・スタック’は、いかなる形のダウンコンバージョンも行わずに、デジタル信号を処理できる構造を含むものとして解釈することが望ましい。ソフトウェア無線装置にはこのようなベースバンド・スタックが含まれることになろう。当業者であれば理解できるように、ソース符号化は、ビットレートを下げるための信号(原信号)圧縮に利用される。チャネル符号化によって、復号器能力の改善を図るための構造化された冗長性が付加され、誤り発生の可能性がある受信信号から情報が取り出される。変調により、伝播対象情報に応じてアナログ波形の変更が行われる。
【0004】
ベースバンド・スタックは、移動電話(GSMスタックやUMTSスタックなど)あるいはデジタル無線受信機(DABスタックなど)の中でのみならずその他の1方向及び2方向デジタル通信用デバイスの中でも使用される。本明細書で使用する用語‘通信’とは、1方向乃至2方向、あるいは、1対1の通信と放送及び1対多の通信と放送のすべての形態をカバーするものである。用語‘設計’と‘モデル化’には、一般に、1以上のエミュレーション処理、資源計算、診断的分析、ハードウェア・サイジング、デバッギング、パフォーマンス評価が含まれる。
【0005】
通信システムの増大する複雑さに起因して、ベースバンド・スタックの開発に対して激しい圧力がかけられている。通信システムの複雑さはほぼ毎日のように増大しつつある。この複雑さには、いくつかの促進要因が存在する:インターネット上のトラフィックは毎年1000%で増加している。このデータ(主として群発性のもの)の多くは、無線キャリアへ移動するが、このようなサービスを提供する利用可能なスペクトルがだんだん少なくなっている。これらの事実は、できるだけ多くのデータを圧搾して最小の使用可能帯域の中へ入れることを目的とするさらに複雑な信号処理アルゴリズムの利用へとつながる。実際、これらのアルゴリズムの複雑さは、ムーアの法則(計算機の能力は18ヶ月ごとに2倍になる)よりも速く増加し続けている。その結果、従来のDSPの能力では不十分になりつつある。したがって、複雑な端末用として、非常に大きな並列処理ロードの処理が可能なASICを形成する必要がある。しかし、実際には問題はここから始まる。なぜならば、使用されるアルゴリズムが信号処理フロントで複雑であるばかりでなく、主として音声トラフィックから主としてインターネット関連トラフィックへの移行により要請されるところの、バースティな、可変QoSでのしばしばの暫定転送用トランスポート・チャネルの利用は、(ハードウェアによるリアルタイム・コードが要求される)層1において、さらに優れた制御プレーン・ソフトウェアを必要とするからである。従来のDSPツールセットでは、この問題を処理する適切なメカニズムが提供されていない。その結果、現在の多くの設計は‘現実の世界’のデータ・アプリケーションの処理をするための調整を行うことができない。
【0006】
しかし、最新の通信システムの高度のMIPS要件は、この話のほんの一部を表すものであるにすぎない。単一のSoC(チップ・オン・システム)内で多数の規格(GSM、IS−136、UMTS、IS−95など)を利用する必要がある場合に別の問題が生じる。複数の規格をサポートするSoCデバイスは、様々な国々の様々なマーケットを効率的に利用しようと努めているデバイスのベンダにとってますます魅力的なものになるであろう。また、次世代UMTS電話は、GSM(すなわち現在の世代)の能力を持つだけでなく、DAB(デジタル無線放送)受信機のような付加機能も持つようになることが予想される。そのため、UMTS、GSM及びDAB用のベースバンド・スタックが必要となる。通信用プロトコルの複雑さのために、現在では、上記問題のすべてに対するソリューションの提供を期待できる企業は1つとして存在しないような状態になっている。しかし、(上記リストした3つの異なるベースバンド・スタックのIPなどの)IPを統合化して、だんだん短くなる時間スケールで単一の統合化されたパッケージの中へ一緒に入れるSoCの構築という深刻な問題が複数のベンダのIPから生じる。複数のベンダのIPの相互接続を可能にする商用システムは現在マーケットには存在しない。層2と層3のソフトウェア(一般的には、ソフトによるリアルタイム・コード)の方が単純である。なぜならば、DSPまたは別の汎用プロセッサの多くのソフトウェアの中の1つの処理としてこのソフトウェアを単純に実行することができるからである。しかし、(ハードによるリアルタイムの、しばしば並列処理が行われる)層1のIPアルゴリズムはさらに困難な問題を提起する。というのは、必要なハードウェアによる加速処理が、層全体のアーキテクチャを左右して、非移植性の、ぜい弱な、ソリューション特有のIPを提供することが多いからである。
【0007】
ベースバンド・スタック開発の現在のモデルにおける欠陥の概観
過去において、ベースバンド・スタックは比較的単純で、求められる高MIPS機能性の量は比較的小さく、マルチ規格の、マルチベンダの統合化が行われてきた。しかし、上述したように、現在では上記の事実はいずれも当てはまらない:すなわち:(a)ハードウェアの使用を必要とする、さらに複雑なアルゴリズム(ターボ復号化、MUD、RAKEなど)が採用される帯域圧縮手段、(b)さらに多くのデータ発生/消滅イベント(birth/death event)と再構成をハードウェア上のアルタイムで処理する必要があるので、パケット・データ・トラフィックの増加が層1制御プレーンの複雑さを増大させる。(c)研究開発から製品化までの期間や、規格の多様化さらには差別化圧力のために、ベンダは、ますます複雑化する機能性(3G、ブルートゥース、802.11など)を単一デバイスとしてレコード時間内で統合化する傾向があるが、これは特定のアプリケーション用SoC(システム・オン・チップ)を形成する層1のIPの使用許諾を必要とする。
【0008】
現在、この問題の適切な解決方法は存在しない。VHDLツールセット・プロバイダ(CadenceやSynopsisなど)は‘ボトムアップ’からこの問題にアプローチしている。プロバイダのツールは機能の個々の高MIPSユニット(ビタビ・アクセラレータなど)の製造については有効であるが、層1フレームワークや制御コードのためのツールや統合化を与えるものではない。DSPのベンダ(TI社、アナログ・デバイシズ(Analog Devices)社など)は、ソフトウェア開発用ツールを確かに供給しているが、これらの会社のリアルタイム・モデルはスタティックで(そのためパケット・データのバースト性にうまく対処していない)、これらの会社のDSPは、DSPの有用性にブレーキとして働くムーアの法則によって制限を受ける。さらに、通信用スタック・ソフトウェアはステート状態マシンとして最適にモデル化されているが、このステート状態マシンにとってCまたはC++(DSPベンダにより通常サポートされている言語である)は適していない代用言語である。
【0009】
ベースバンド・スタック開発の現在のモデルにおける欠陥の詳細な分析
従来、デジタル通信のためのベースバンド・スタック開発は細分化され、高度に専門化されている。例えば、ベースバンド・スタックの中核である信号処理アルゴリズムの初期開発は数学モデリング環境(Matlabなど)で一般に行われるが、その際、従来方式のスプレッドシートプログラムを用いて精巧な評価がなされていたDSPの最終ターゲットに対して見合うように、特定メモリやMIPS(毎秒100万命令)の総量が設定されている。いったん、このモデル化処理が良好に実行されると、コード・モジュールと、スタック用のインフラ・ストラクチャ・ソフトウェアとが書き込まれ、可能な場合には既存ライブラリが適合化される(またおそらくRTOS(リアルタイム・オペレーティング・システム)が書き込まれる)。次いで、任意の必要なハードウェアによる加速処理が、可能な場合にはPLD(プログラマブル論理素子)上にプロトタイプ化される‘リアルタイム’のプロトタイプ・ハードウェア・システム(‘RACK’と呼ばれる場合もある)が構築される。これは、ネットワークとの接続なしでテストされ、コードに対する必要な変更が行われる。いったん満足のゆくものになると、このスタックは固定化され、(オンチップ周辺機器としてハードウェアの加速用モジュールが組み込まれる)最終的ASIC(特定用途向け集積回路)が形成される。この結果つくられたベースバンドDSPまたはDSPコンポーネントが検査され、次いで、出荷される。
【0010】
この‘従来の’アプローチに関していくつかの問題が存在する。これらの問題の中でより重要なものとして以下のことが挙げられる:
* 結果として生じるこれらのスタックにはその構造の中に多くのアーキテクチャの独自性が含まれる傾向があり、そのため別のハードウェアのプラットフォーム(別のメーカー製のDSPなど)への‘移植’処理は時間のかかるものになる。
* また上記スタックは、修正が困難で、ぜい弱なものとなる傾向もあるため、インハウス(in−house)での変更の実施(バグの修正や、規格の中に導入された新しい特性の調整など)と、スタックのわずかな変更を望む他の人々へスタックの使用許諾を効果的に与えることとの双方を困難なものにしている。
* MMI(マン・マシーン・インターフェース)との統合化が貧弱なものになる傾向があり、このことは、一般に、このMMIの機能用の別個のマイクロ・コントローラをターゲットのデバイス内で使用することを意味する。このためチップ個数とチップ・コストとが増加することになる。
* 処理がきわめて低速であり、DAB(デジタル・オーディオ放送)などの著しく複雑なシステム用ベースバンド・プロセッサの形成に最低約1年の経過時間を伴う。
* この処理は、バッファの割り振り、ダウンコンバージョンの管理、デジタル・フィルタの挿入、好適なチャネル・モデルの作成等々を行うための全体的最善の方法を決定する技術当局者(いわゆる‘グル(guru)’)に大きなストレスをかけるものとなっている。以上の点は一般に不利な点である。というのは、これによって、非常に重要なパスとメイン・スタッフへの依存がスタック製造プロジェクトに付加され、製造のタイム・ラインを長引かせることになるからである。この結果得られる製品は、適切な現在の技術のすべてを必ずしも含むとは限らないことが大いに予想される。その理由として、支配的な最善の実施技術のすべてにわたって完全に熟練している個人がいないこと、また、グルあるいはグルのチームが可能な技術革新のすべてを(たとえ彼らがその技術革新について知っていたとしても)スタック製造プロジェクトの中に組み込むだけの時間的余裕が必ずしもあるわけではないということが挙げられる。
* MIPSの手動計算及びメモリ要件への依存、並びに、スタック用のDSPモジュール及びインフラ・ストラクチャ・コードのカスタムメイド的性質は、製品の中に欠陥が生じる大きな確率があることを意味する。
* 1つの関連する問題点として、一般に、‘RACK’が組み立てられるまでは、スタックのリアルタイムでのプロトタイピングは可能ではない点が挙げられる。その点でも、利用可能な視認性の高いデバッガの不足は、最終スタックと資源の‘拘束解除’が不必要に遅滞することでと、ハードウェア製造のタイム・スケールが超過することを意味する。視認性の高いデバッガは、利用可能であれば、非常に有用なものとなるであろう。というのは、C++のような高水準言語で開発されている場合、デバッガは、コードの中にブレイク・ポイントを入れ、そのポイントにおける処理を停止し、メモリ内容をチェックし、単一ステップ命令の効果を調べるために単一ステップを実行する開発用ツールの能力を与えるからである。またその場合、特定の条件が生じたとき、実行を停止させ、デバッガを起動させるトリガーをコードの中に入れることもできる。これらはアプリケーション・ソフトウェアを開発するとき非常に強力なツールとなる。‘ロック・オフ’とは、プロジェクトの1つの段階が完了したとき、開発が次の段階へ進むことができるということを意味する。ハードウェアの開発では、各反復試行が費用や時間のかかる製造を必要とするので、ソフトウェアの場合のように容易に反復試行を行うことはできない。
* 製造中のスタック用の低レベル・モジュールあるいはハードウェアによる加速処理用‘コントローラ’を開発しなければならないため、開発者はターゲット・プロセッサのアセンブリ言語に熟知している必要があり、また、彼らは当該プロセッサ用として与えられる開発用ツールに依存することになる。
* インフラ・ストラクチャ・コードが再使用されないという事実に伴うモジュール性の不足は、次のデジタル放送スタック用としてほとんど同じ作業を再び行う必要があることを意味する。
【0011】
スタック開発へのこのタイプのアプローチから生じる、関連するセットとなる‘戦略的’問題が上記の困難な問題と結びつき、このタイプのアプローチでは、スタックは必然的に特定のハードウェア環境と強く結びつくものとなる。
* スタック・メーカの視点から見ると、選択されたDSPのハードウェア・プラットフォームと接近しすぎる近い関係が存在する。錯誤に起因して、コストのかかる(また時間のかかる)移植処理が必要となるため、このDSPハードウェア・プラットフォームの注意深い選択を行う必要があるだけでなく、開発用ツール、低水準アセンブリ言語、テスト用‘ラック’のハードウェアの開発及び最終的プラットフォームASICの製造がすべてそのアーキテクチャ独自のものとなる。別のハードウェア・プラットフォームでスタックを使用する機会が生じた場合、まずそのスタックを移植しなければならないが、これにはきわめて長い時間がかかり、多重コード・ベースが導入される(また、これによりプラットフォーム固有のバグという大きなリスクが伴うことになる)。コード・ベースとはプロジェクトの基礎を成すソースコードのことである。理想的には、ソフトウェアの開発の際、ソースコードと機能との間の1対1の対応付けが行われることになる。そのため、ある特定の機能を必要とする場合、いくつかのプロジェクトがすべて同じ実施構成を共有することになる。したがって、この実施構成が改善されれば、すべてのプロジェクトがその利益を享受することになる。しかし、起こりがちなこととして、個々のプロジェクトがコードの個々のコピーを持ち、実施構成が(自然界における遺伝子にいくぶん類似して)時間中分岐するということが挙げられる。プロジェクトが、従来方式の開発パラダイムの下で異なるハードウェアを使用する場合、同じコードの使用が不可能となる場合が時として生じることがある。さらに、たとえ同じハードウェア・プラットフォームがグレードアップされた仕様により利用可能になったとしても、コードは依然‘ミニ移植’を受け、それらの付加特性(例えば、より多くのオンボード・メモリや別のMAC(積和演算)ユニットなど)を利用できるようにする必要がある。
* ハードウェア・メーカの視点から見ると、ソフトウェア・スタックとの接近しすぎる近い関係が存在する。ハードウェア・メーカは、(概して)スタック製造ビジネスの専業になることを望まない。それにもかかわらず、このような(そのデバイスを有用な製品に変える)スタックがなければハードウェア・メーカはユニットの販売を行うことはできない。マーケット用として、利用可能な‘ソフトウェア・ベース’という表現は、ハードウェア・メーカの製品がもっと適切に競合の対象とすべきその他の特性(利用可能なMIPS、電力消費量、利用可能なハードウェアのIPなど)を不明瞭にする可能性がある。
* (シンビアン社のような)オペレーティング・システムのプロバイダは、彼らのOSをベースバンド通信スタックとインターフェースすることを非常に重要であると考えている。実際問題として、従来方式のスタックにおけるモノリシックで、電力消費の大きい点や、リアルタイム要件に起因して、このベースバンド通信スタックとのインターフェースは達成が非常に困難となる可能性がある。
【0012】
テキサス・インスツルメント社による「eXpressDSP(eXpressDSP)リアルタイム・ソフトウェア技術」を参考として考えることができる。この製品セットによって、DSP用ソフトウェアの開発時間と統合化時間の削減が可能になる。しかし、この製品セットは従来方式の設計アプローチの欠点を例示するものである。なぜならこのセットは、専用セットとして、テキサス・インスツルメント社製DSPプラットフォームと結びついているからである。「eXpressDSP(eXpressDSP)リアルタイム・ソフトウェア技術」よりも優れた本発明の1つの実施構成のさらに詳細な相違について、以下本発明の詳細に要約する。
【0013】
【発明が解決しようとする課題】
本発明の第1の態様によれば、デジタル信号処理の設計、モデル化、あるいは実行のためのソフトウェアが提供され、該ソフトウェアは、通信用DSP用として最適化されたバーチャル・マシン層を含むものとなる。
【0014】
‘バーチャル・マシン’とは、一般に、本発明に関連するタイプのアプリケーションを実現するための理想的マシンの機能とインターフェースとを定義するものである。このマシンは、一般に、進行中のタスク用として最適化された理想的マシンを使用アプリケーションに対して提示し、実際のハードウェアの不良動作と欠陥とを隠すようにするものである。また、通信処理をモデル化したり、通信処理を表示したりする1以上のステートマシンの管理及び/又は維持を行うことも可能である。その場合‘バーチャル・マシン層’は、現実のマシンをこの理想的マシンのように見えるようにするソフトウェアである。この層は、一般に、すべての現実のマシン・タイプについてそれぞれ異なるものとなる。‘バーチャル・マシン層’とは、一般に、ソフトウェアから成る層を意味し、この層は、何らかのタスクまたは1組のタスク(デジタル信号処理など)を実行する1組の1以上のAPI(アプリケーション・プログラム・インターフェース)を提供し、使用プログラム間で割り当てられ、共有する必要のある非常に重要な資源(メモリやCPUのような資源など)を享有している。
【0015】
好適には、資源を割り当て、共有し、切り替えられるように、バーチャル・マシン層を最適化して、デジタル信号処理を行うために最善となるようにすることが望ましい。これと対照的に、典型的なオペレーティング・システムは、ワード・プロセッサのような一般的ユーザ・インターフェースプログラム用として最適化されている。したがって、例えば、上記ケースの資源切替えアルゴリズムは、一般に、エンドユーザのオペレーティング・システムの時間増分値よりもはるかに小さな時間増分値で機能し、並列処理の制御を行うことを可能とするものでもある。
【0016】
通信用DSP用として最適化されたバーチャル・マシン層では、処理を実行しなければならないハードウェアからのソフトウェア・ベースバンド・スタックの切り離しが図られる。このため、ベースバンド・スタックを非常に移植し易いものにすることが可能となる。それは、基底を成すハードウェアの変化からのこれらのベースバンド・スタックの切り離しがバーチャル・マシン層により可能となることに起因する。また、上記バーチャル・マシン層では(各々が様々な機能を実行する)様々な接続モジュール間でのフロー制御の管理を行うことも可能であり、この管理を同時ベースで行うことも可能である。さらに上記バーチャル・マシン層では、信号処理用の共通データ構造の定義を行うことも可能である。これについて以下さらに詳述する。
【0017】
本発明のソフトウェアは、(ベースバンド・スタック、または、特に、様々なベンダからのいくつかのベースバンド・スタックや、移動電話のような最終製品を含むSoC全体などの)通信用デバイスをモデル化し、開発し、実際にベースバンド処理の実行を可能にする開発環境において利用が可能である。
【0018】
‘バーチャル・マシン層’というコンセプトを通信用DSPの領域に対して適用する利点は、非アナログ分野からの一例を通じてもっとも良く理解することが可能となる。PCソフトウェアの分野では、(システムBIOSの上位に在る)マイクロソフトのウィンドウズTMオペレーティング・システムは、使用中の実際のマシンから、及び、そのマシンと接続されたデバイスの細部からソフトウェア開発者を切り離している。換言すれば、マイクロソフトのウィンドウTMオペレーティング・システムは、コードが実行可能な‘バーチャル・マシン層’を提供している。これが図1に概略的に例示されている。このバーチャル・マシン層に起因して、ワード・プロセッサを使ってものを書いている人が、例えば、彼らのコードを実行するのがデルのマシンかコンパックのマシンかどうかとかということや、ユーザが、(いずれかのプリンタが)接続している場合そのプリンタがどのような種類のものであるかなどということは知る必要はない。さらに、このオペレーティング・システムによって、1組の共有のコンポーネント(ファイル・ダイアログ・ボックス、メモリ割付けメカニズム及びスレッド管理APIのような)機能とサービスとが提供される。‘共通コード’が1回しか書き込まれないため、各アプリケーションが‘共通コード’を何度も再実行しなければならなかった場合に比べて、このような‘共通コード’の厳密性、範囲及び信頼性が大幅に上昇する。さらに、PCハードウェアのメーカーはソフトウェア開発の複雑さから保護され、適切なウィンドウズのAPIから得られるBIOSとドライバを提供するだけで、当該プラットフォーム用の膨大な範囲の既存ソフトウェアの利用が可能となる。図2に例示されているように、各アプリケーションがそれ自身のカスタムGUIコードを内包していることが多かったプレ・ウィンドウズ状況と、現在の状況とを対比することができる。
【0019】
PCウィンドウズの‘バーチャル・マシン層’アプローチのための主要なイネイブラ(enabler)として、多数のアプリケーションにより、同じ基底を成す‘バーチャル・マシン’の機能が広く求められることが挙げられる。もしも、ただ1つのアプリケーションが、プリンタを使用する必要があったり、ただ1つのアプリケーションがマルチスレッドを必要としたりするのであれば、上記サービスがウィンドウズの‘バーチャル・マシン層’の一部であることは効率的であるとは言えないであろう。しかし事実はそうではない。なぜなら、(ウィンドウ、アイコン、マウス、ポインタ、プリンタ、ディスク記憶装置などの)類似のI/O要件と、類似の‘共通コード’要件とを持つ多数のアプリケーションが存在して、それがPC‘バーチャル・マシン層’を‘説得力のある提案’としているからである。
【0020】
しかしながら、本発明に先行して、‘バーチャル・マシン’というコンセプトを通信用DSPの分野に適用することを考えた者はいままで誰一人としていなかった。このコンセプトを適用することにより本発明によって、専用DSPにではなく、バーチャル・マシンにソフトウェアの書込みを行うことが可能となり、製造上のいずれか1つのソースから生じるDSPのアーキテクチャに起因する制約から技術者を切り離すことが可能になる。このDSPからの独立という形は、マイクロソフト社のウィンドウズ・オペレーティング・システムにより提供されているところの、PCの世界でのハードウェアの独立性と同様に潜在的に有用なものである。この独立性は図3と4に概略的に例示されている。図3には、適切に実現された場合、アーキテクチャから見て中立であることが望ましいベースバンド・スタックの部分が、実際にはサブストレート・ハードウェアから適切に切り離されていないような従来方式の状況が示されている。図4は本発明のバーチャル・マシン層(通信用マシン層(CVM)と呼ばれる)がベースバンド・スタックのこれらの部分の切り離しに成功する方法を描く図である。
【0021】
したがって、本発明の様々な実現構成にとっていくつかの主要な利点が存在する。
* DSPのアーキテクチャを介して、様々なメディア・アクセス・ハードウェアへに対してベースバンド・スタックを移植すること(例えば900MHzで作動するGSM電話用スタックを1800MHzで機能するGSM電話へ移植するなど)がずっと高速に行われる。なぜならば、本発明によって、アーキテクチャ固有の、あるいは、スペクトル固有のものではないスタックの設計が可能になるからである。研究開発から製品化までの期間のような非常に重大な利点がさらに一段と重要になる。したがって、スタックは、バーチャル・マシン層が移植される相手先の任意のDSPのアーキテクチャで機能することになる。同様に、バーチャル・マシン層が移植される相手先DSPは、バーチャル・マシン層用として書き込まれたすべてのスタックを実行することになる。
* 高MIPSコンプレックスコード(ビタビ復号器など)の多くは、各DSPのアーキテクチャの場合、何回も書き変えられるのとは対照的に、バーチャル・マシン層の場合には1回しか書き込まれない。このため、このコンプレックスコードの品質と信頼性が、軽い経済的負担で改善可能となる。これは、ベースバンド・スタック自身が以前より少ないコードしか必要とされないであろうこと、及び、どのようなスタック・コードが必要であるにせよベースバンドスタック自体は複雑さの少ないものであろうことを意味し、これによってスタック・コードの信頼性が向上する。
* このバーチャル・マシン層によって、完全にソフトウェアの中で、あるいは、ソフトウェアと、通常使用されているDSPコンポーネントとの混成物を用いるかのいずれかでプロトタイプの形成能力が与えられ、それによって、開発サイクルにおけるアルゴリズムの欠陥と資源要件との早めの特定が可能となる。
【0022】
好適には、バーチャル・マシン層が、様々なコア処理及び/又はコア構造及び/又はコア機能及び/又はフロー制御及び/又は状態管理を用いてプログラムされるか、もしくは、様々なコア処理及び/又はコア構造及び/又はコア機能及び/又はフロー制御及び/又は状態管理へのアクセスを可能にすることが望ましい。バーチャル・マシン層がプログラムされる(あるいはバーチャル・マシン層がアクセスを行うことを可能にする対象としての)コア処理には‘1以上の共通エンジン’が含まれる。これらの‘共通エンジン’は、1以上のベースバンド・スタック機能、すなわち、ソース符号化、チャネル符号化、変調及びそれらの逆(ソース復号化、チャネル復号化及び復調)を実行する。これらの‘共通エンジン’には、高速フーリエ変換(FFT)、(様々な拘束長、ガロア多項式及びパンクチャリング・ベクトルを持つ)ビタビ復号器、リード・ソロモン(Reed Solomon)エンジン、MPEG復号器用離散余弦変換(DCT)、エラー・デコヒーレンス(error decoherence)のための時間及び周波数ビット毎の再オーダリング、複素ベクトル乗算及びオイラー合成が含まれる。さらに広範囲のリストが添付書類1の中に含まれている。これらのパラメータ化された変換の中の1以上が、通信用ベースバンド・スタックにより共通に求められる。上記従属特性は、ほとんどすべての主要なデジタル放送システムの範囲内に見いだされるという本発明による洞察に基づくものである。一例として、GSMとDABとの類似性が挙げられる。例えばGSMとDABの双方においてインターリービングとビタビ復号化が利用される。したがって、共通の数学的基礎に基づく共通性が断言される.
【0023】
さらに、‘コア構造’は各ケースの中に存在してもよい。この‘コア構造’は、(当該シンボルの範囲内に保持されているすべての情報が利用可能か否かにかかわらず、フル・シンボルの処理に関係する)シンボル処理部と、関連情報を保持する当該ビットのみの処理が行われるデータ指向処理部とに復号化チェーンを分割することに関与する。各ケースで、これらの処理用モジュールが、中間の、整合メモリ・バッファの割り当て、共有、配置を行い、処理用モジュール間でイベントを渡し、モジュラ型開発を可能にする枠組みの範囲内の存在であることが非常に望ましい。
【0024】
上記コア機能は、以下の処理のうちの1以上を含む資源割当てとスケジュリング(メモリ割付け、リアルタイムの資源割当て及び同時性管理)に関するものであってもよい。好適には、このソフトウェアは、パフォーマンスと能力の点でDSP設計用ツールよりもずっと優れた、PCのデバグ用ツールにアクセスが可能であることが望ましい。このソフトウェアは、コンフォーマンスクリプト(conformance scripting)に従うものであってもよい。このスクリプトについては以下に定義する。さらに、このソフトウェアは、コンポーネントを用いて機能するものであってもよい。このコンポーネントの中で上記ソフトウェアの機能及び/又は別様にコンポーネントのパフォーマンスのモデル化を可能にするために必要な当該情報だけが上記コンポーネントの知的財産の所有者により供給される。このことによって、(内部の詳細事項、設計、操作のような貴重な営業秘密情報である可能性のある)知的財産の所有者がその情報を隠し、サポートされている機能、APIに必要なパラメータ、タイミングと資源のインタラクション、特性評価のための予想パフォーマンスなどのようなずっと重要性の少ない情報だけを公開することが可能になる。
【0025】
本明細書では、本発明に従うソフトウェアの実施例を通信用マシン層(CVM)と呼ぶ。CVMは、上記に導入した着想を一緒に引き出すので、以下のセクションにおいて要約する。
【0026】
CVMの実現構成についての要約
CVMとは、デジタル信号処理製品開発用プラットフォームと、当該製品を実行するためのランタイム(runtime)との双方を指すものである。CVMは、基本的に、バーチャル・マシン層と関連する複雑さの管理手法をリアルタイム・デジタル信号処理へもたらすものであるが、この信号処理は、(i)(アーキテクチャ独自の方法で実現可能な)高MIPSデジタル信号処理計算をバーチャル・マシン層の一方の側の‘エンジン’の中に配置すること、(ii)アーキテクチャから見て中立な低MIPSコード(様々な低MIPSプロセスを定義する層1コードなど)をもう一方の側に配置することにより実行される。さらに具体的には、CVMは、低MIPS制御プレーンとデータ‘操作及びパラメータ’フローを除くすべての高度の複雑さを、(ビタビ復号化、FFT、相関などの)多量の資源を必要とする処理を実行する高MIPS‘エンジン’から切り離すものである。この切り離しによって、‘アーキテクチャから見て中立な’高い移植性を持つ方法で、複雑な通信用ベースバンド・スタックの構築が可能になる。なぜならば、基底を成すハードウェア上ではなく、CVM上で実行するベースバンド・スタックの設計が可能となるからである。CVMは、これらのスタックの高度の複雑さ、低MIPS制御コードに対して均一なセットのAPIを演出し、多くの様々な種類のスタック用として高MIPSエンジンの再使用を可能にするものである(例えば、GSMとUMTSスタック双方のためのビタビ復号用エンジンの利用が可能となるなど)。
【0027】
デジタル信号処理製品の開発段階中、(最少の数のプロセッサで実行するなどの)最適のアクセス・コストを示す構成を特定することを目的として、デジタル信号処理製品の様々な設計上のMIPS要件の、CVMによるシミュレーションやモデル化の実施が可能である。確定論的関数とは対照的な、少なくとも1つの確率的統計分布関数を利用する資源割当て処理が利用される。様々なDSPチップとFPGAとから成る実現構成のシミュレーションが可能である。高MIPSの速度と並列処理能力との故に、FPGAの中に高MIPS演算処理を配置することが非常に望ましい。
【0028】
実際の処理中、最適の処理を維持するために、CVM内のスケジュラがリアルタイムで知的にタスクの割り当てを行うことが可能である。本明細書ではこのアプローチを‘2段階スケジュリング’と呼ぶ。様々なエンジンの資源要件が、(i)設計時に明示的にモデル化が可能であること、(ii)ランタイム中、知的に利用が可能であること、という理由により、いくつかの様々なベンダからのエンジンを単一製品の中に混ぜることが可能となる。上述したように、これらのエンジンは、層1と直接の接続を行うのではなく、代わりにCVMバーチャル・マシン層の中継を介して制御コードを層1と接続する。さらに、DSPとFPGAとの組合せを利用する非リアルタイム・プロトタイプから実行時プロトタイプへの移行、次いで、カスタムASIC上への効率のよい移行がCVMを用いることにより可能となる。
【0029】
CVMでは以下の3つの主な特長が実現される:
* 同時スケジュリングのためのサポートを備えた、ダイナミック、マルチ・メモリ空間用マルチプロセッサ分散型スケジュラ
* アーキテクチャ固有の実現構成を備えた、デジタル放送及び通信用として共用される高MIPS演算処理用API
* 資源管理及び正常化層(normalization layer)(固有のRTOSを介して供給される)
【0030】
CVMは‘パイプライン’という形で存在することが可能である。‘パイプライン’とは、ある構造または1組の相互作動するハードウェア・デバイスまたはソフトウェア・デバイス、及び、1つのデバイスまたは処理から別のデバイスまたは処理へ情報を渡すルーチンである。DSP環境では、このような複数の情報は‘シンボル’と呼ばれることが多い。パイプラインは、データ・フローアーキテクチャとして、並びに、従来の手続き用コードとして実現が可能であり、このような変形例のすべては本発明の範囲内に属するものである。また、CVMは、ステートマシンとして、または、手続き用コードとして概念化し、実現することも可能であり、再言するが、このような変形例のすべては本発明の範囲内に属するものである。
【0031】
【課題を解決するための手段】
CVMの1つの例には、解釈されたパイプライン・マネージャが含まれ、このパイプライン・マネージャにはCVMコアのランタイムバージョンが組み込まれる。‘解釈された’という用語が意味するものとして、そのパイプラインの仕様が基底を成すマシンコードにまだ翻訳されていず、ベーシック言語のような解釈された言語の場合と全く同じように、プログラムの実行につれて繰り返し再翻訳が行われることが挙げられる。
【0032】
別の例として、CVMコアのラタイムバージョンが組み込まれた、計装化された解釈パイプライン・マネージャ(Instrumented Interpreted Pipeline Manager)がある。この計装化された解釈パイプライン・マネージャは、解釈されたパイプライン・マネージャと同じように機能するが、開発者に役立つメトリックと計測値も生成する。解釈された非計装化(non−instrumented)バージョンもまた開発とデバッギング用として有用であり、コンパイルされ、計装化された(instrumented)バージョンもまた有用である。後者のバージョンは開発とデバッギング用の最適ツールとなる場合もある。
【0033】
CVMの別のバージョンはパイプライン・ビルダ(Pipeline Builder)である。プログラム実行の代わりに、パイプライン・ビルダは、C言語のようなコンピュータ・ソースコードを出力し、このソースコードをコンパイルして、パイプラインの実現構成を形成することができる。この理由のため、パイプライン・ビルダはCVMライブラリを利用できなければならない。パイプライン・ビルダは、コンパイルされた非計装の変形例と考えることもできる。
【0034】
CVM装置は、通信用コンポーネントの特性(非インターフェースの振舞いを含む)の標準化された記述を含むか、この記述に関するものであるようにして、シミュレータがコンポーネントを利用する上でのシステムの資源要件の正確な推定ができるようにする。CVM装置で時間及び同時性制限条件のモデル化を行って、リアルタイムOS上への対応付けを可能にし、並列処理を実行できる可能性を持たせるようにすることも可能である。
【0035】
本発明の別の特性と態様は本明細書の請求項において定義される。添付図面を参照しながら本発明について以下説明する。
【0036】
【発明の実施の形態】
RadioScape社(英国、ロンドン)のCVMの実現構成に関連して本発明を説明する。
【0037】
CVMの概観
CVMとは、デジタル信号処理製品開発用プラットフォームと、当該製品を実行するためのランタイム(runtime)との双方を指すものである。CVMは、基本的に、バーチャル・マシン層と関連する複雑さの管理手法をリアルタイム・デジタル信号処理へもたらすものであるが、この信号処理は、(i)(アーキテクチャ独自の方法で実現可能な)高MIPSデジタル信号処理計算をバーチャル・マシン層の一方の側の‘エンジン’の中に配置すること、(ii)アーキテクチャから見て中立な低MIPSコード(様々な低MIPSプロセスを定義する層1コードなど)をもう一方の側に配置することにより実行される。さらに具体的には、CVMは、低MIPS制御プレーンとデータ‘操作及びパラメータ’フローを除くすべての高度の複雑さを、(ビタビ復号化、FFT、相関などの)多量の資源を必要とする処理を実行する高MIPS‘エンジン’から切り離すものである。この切り離しによって、‘アーキテクチャから見て中立な’高い移植性を持つ方法で、複雑な通信用ベースバンド・スタックの構築が可能になる。なぜならば、基底を成すハードウェア上ではなく、CVM上で実行するベースバンド・スタックの設計が可能となるからである。CVMは、これらのスタックの高度の複雑さ、低MIPS制御コードに対して均一なセットのAPIを演出し、多くの様々な種類のスタック用として高MIPSエンジンの再使用を可能にするものである(例えば、GSMとUMTSスタック双方のためのビタビ復号用エンジンの利用が可能となるなど)。
【0038】
バーチャル・マシン層は、いくつかの様々なベースバンド処理用アルゴリズムに共通の基底を成す高MIPSアルゴリズムをサポートし、これらのアルゴリズムを、高水準の、アーキテクチャから見て中立な、スケジュラ・インターフェースの中を通る、潜在的に高度の複雑さをもつ低MIPS制御フローにアクセス可能にし、このアクセスによって、ランタイム、メモリ、相互接続帯域のうちの1以上に応じて、1組の資源制約包絡面と共に、制御フローによるアルゴリズムの実行指定が可能になる。上記資源制約包絡の内側で起呼音は処理の実行が行われることを望む。
【0039】
デジタル信号処理製品の開発段階中、(最少の数のプロセッサで実行するなどの)最適のアクセス・コストを示す構成を特定することを目的として、デジタル信号処理製品の様々な設計上のMIPS要件の、CVMによるシミュレーションやモデル化の実施が可能である。決定論的関数とは対照的な、少なくとも1つの確率論的統計分布関数(及び/又は統計的測定関数)を利用するモデル化を行うための資源割当て処理が利用される。様々なDSPチップとFPGAとから成る実現構成のシミュレーションが可能である。高MIPSの速度と並列処理能力とに起因して、FPGAの中に高MIPS演算処理を配置することが非常に望ましい。
【0040】
実際の演算処理中、最適の演算処理を維持するために、CVM内のスケジュラがリアルタイムで知的にタスクの割り当てを行うことが可能となる。本明細書ではこのアプローチを‘2段階スケジュリング’と呼ぶ。様々なエンジンの資源要件が、(i)設計時に明示的にモデル化が可能であること、(ii)ランタイム中、知的に利用が可能であること、という理由により、いくつかの様々なベンダからのエンジンを単一製品の中に混ぜることが可能となる。上述したように、これらのエンジンは、層1と直接の接続を行うのではなく、代わりにCVMバーチャル・マシン層の中継を介して制御コードを層1と接続する。さらに、DSPとFPGAとの組合せを利用するPCT非リアルタイム・プロトタイプからランタイムプロトタイプへの移行、次いで、カスタムASIC上への効率のよい移動がCVMを用いることにより可能となる。
【0041】
CVMでは以下の3つの主な特長が実現される:
* 同時スケジュリングのためのサポートを備えた、ダイナミック、マルチ・メモリ空間用マルチプロセッサ分散型スケジュラ
* アーキテクチャ固有の実現構成を備えた、デジタル放送及び通信用として共用される高MIPS演算処理用API
* (固有のRTOSを介して供給される)資源管理及び正常化層(normalization layer)
【0042】
CVMとは設計フロー・ソリューション並びにランタイムである。
CVMは、ランタイムを補う完全な設計フローを提供するものである。このCVMによって、完全に統合化された数学モデルと、(群発性のデータに関する演算処理に必須の)統計的シミュレーション・ツールと、(データ・パスがハードウェアの中へ入るべきか、DSPコア上のソフトウェアの中で実行すべきかを決定するための)序列的分画シミュレーション・ツールが技術者に与えられる。数学モデリング用ツール(Matlab/Simulinkなど)のカスタム・ライブラリの利用によって、CVMは、様々なデータ・パスがどれだけのビット数の幅を持つ必要があるかなどを前もって決定するために、詳細に、かつ、ビットレベルの(bit−exact)精度で、高MIPSエンジンの機能のモデル化を行うことができる。しかしながら、このシステムは、統計的シミュレーションが行われる制御プレーンからXMLコマンドを受け入れることもでき、これにより、データ発生/消滅イベント(birth/death event)と群発性とをモデルのコンテキスト内で取り扱うことができるようになる。さらに、スケジュラの間接インターフェースを介してシミュレーション・エンジンにまでもアクセスが行われるので、実際のハードウェアなどの実現構成に対してプラグ・インコールを行って、シミュレーションの実行速度を上げることが可能となる。
【0043】
また、重要なことは、様々なシステム分画の決定により資源ローディングのシミュレーションの実行が可能なことである。様々な統計的ロードの下で十分にカバーするためには、特定のアルゴリズム‘エンジン’(ビタビ復号器、レイク受信デバイス・エレメント、ブロックFFTの演算処理など)のインスタンスがいくつ必要なのか?データ・パスがバスのような遅延を生じ、及び/又は同時争奪を生じる資源にわたって移動する場合、何が起こるのか?データ・パスがソフトウェアではなくハードウェアの中で実現される場合何が起こるのか?これらの問題の解決のすべては非常に重要であるが、既存のツールセットではこれらの解決はまだ行われていない。さらに、複数のサード・パーティのIPエンジンまたはエンジン(下記を参照)に関して、分画問題の解決を行うとき、これは2重の意味で真である。CVM設計フローによって、これらの種類の設計上の問題解決に対する回答を与えることが可能となることは明らかである。さらに、初期の分画情報は、設計用ツールセットから‘順方向に’転送されてランタイムスケジュラの中に入り、これによって、システムが実際の動的ロードを行っているときに、このランタイムスケジュラが、好適な実行エンジン・インスタンスに向けて要求を導くことが可能となる。
【0044】
‘ボトムアップ’から見ると、このソフトウェアを実質的に2次的重要性をもつものとして扱うことは、もはや販売のための製品開発を行う方法ではない。このようなやり方では単に長い時間がかかりすぎるだけで、あまりにもアーキテクチャ固有の結果が生じ、基底を成す領域の並列状態マシンの性質にとって不都合な‘マッチング’が生じることになる。‘トップ・ダウン’から見ると、CVMが利用するパラダイムにより、はるかにずっと強力で拡張可能なソリューションが得られる。
【0045】
CVMに関する最終ポイントとして、基底を成すエンジンから制御フロー・コードを切り離すことにより、実際の組み込まれたターゲットと矛盾することなく、従来の(PCなどの)プラットフォーム上で多くの開発作業の実行が可能になることが挙げられる。これによって、特定のベンダの最終ターゲットの開発用プラットフォームを利用する場合に比べて設計上ずっと早い方向転換が可能になる。
【0046】
例:CVMとは、3Gシステム用SoCのような、ハードウェアによるリアルタイムの、マルチベンダの、マルチプロトコル環境に対する設計上のソリューションである。
CVMのコア・エレメントの中の1つとして、ハードウェアによるリアルタイムの、マルチベンダの、マルチプロトコル環境における(潜在的に衝突する)サード・パーティのソフトウェア/ハードウェアの資源要件を処理する能力がある。この能力はCVMの主要な利点であり、システム・オン・チップ(SoC)の設計の際、特別な重要性を持つものである。これを理解するために、3G携帯電話マーケット向けのベースバンド・チップの将来のプロバイダが直面する問題点について考えることにする。第1に、層1の必要となる処理の複雑さに起因して、在庫のDSP用として単純にコードを書き込むことはオプションではない。ASICでは、複雑な拡張やターボ復号化などの処理を行うことが求められる。第2に、UMTSは少数の地下鉄の場所に当初導入されるにすぎないため、チップにはGSMのサポートも可能である必要がある。ベースバンド・チップメーカがこれら双方の分野で広範囲の技術を持っていることはありそうもなく、したがって、IPの使用許諾を受ける必要が生じる。この点は、絶えず長引くことになる、研究開発から製品化までの期間という圧力を考慮すると技術会社にとって特に関係の深い事柄である。しかし、一部はハードウェア、一部はソフトウェアから成るIPエンジンの使用許諾を層1の複数のベンダから得ることは1つの現実的な問題を現出することになる。第1に、上記方法での‘互換性対非互換性’(mix and match)IPについての共通の単純な基準は現在存在していない。必要とされること、及び、CVM設計フローが提示することとして、静的及び動的双方のサード・パーティのIPブロックの資源要件を特徴づける1つの方法がある。この方法によって、潜在的に、全く異なるサプライヤからの別のIPエンジンを用いてリアルタイムで当該サード・パーティのIPブロックを同時スケジュール化し、次いで、より高いレベルの層1制御コードとの透過的な接続が可能となる。さらに、CVMの性質として、(ANSICへコンパイルされたSDLなどの)アーキテクチャから見て中立な言語でこれら高レベルの呼構造及び制御プレーン全体の形成が可能であるということが挙げられる。その場合、低いレベルで、高MIPS部分だけがアーキテクチャ独自の形式で直接実現されることになる。
【0047】
上述したように、エンジン内に内包される高MIPS機能は、完全な処理ルーチンを表すものである。これらのエンジンは、ハードウェアまたはソフトウェア、あるいは両者の何らかの組合せで実現可能であるが、このことは高水準の‘起呼’コードという観点から見ると重要な問題ではない。高レベルのIPは、CVMスケジュラ起呼を介して基底を成すエンジンと交信を行い、この起呼により、ハードウェアにおけるリアルタイムの動的資源制約条件の指定が可能になる。次いで、スケジュラは、適切なデータ・パスにこの要求の実行指令を出す。この実行指令にはDSPの関数呼出しや、FPGAまたはASICへのデータの受渡しが含まれる場合もある。重要なことは、このスケジュラが複数のハードウェアのデータ・パスを処理することができるという点である。これらのデータ・パスは様々なアクセス用プロファイルと実行用プロファイル(例えばオンバス・ビタビ復号器、オンチップ・ソフトウェアベースの復号器、及び、外部DMAを介してアクセスされるオフチップ専用ASICなど)を持つことが可能であり、さらに、起呼用の高レベルのコードから完全に独立した適切なユニットに特定の要求を渡すことが可能である。
【0048】
また、このことは、2つの異なる通信スタックがいくつかの共通の高MIPSエンジンを必要とする場合、適切な(プラットフォーム固有の)エンジンの実現構成(この実現構成がハードウェア、ソフトウェアまたはその双方の何らかの組合せのいずれで設計されているかにかかわらず)のベンダが、上記2つの異なる通信スタックのマーケットへ販売を行うことができることを意味し、さらに、単一のSoC上に2つの規格が実装されている場合、双方のスタックが同じアクセラレータを潜在的に共有できることを意味する。加えて、1組の100以上のコア・オペレーションが指定され、これらのコア・オペレーションを考慮に入れると、デジタル放送用プロトコル及び通信用プロトコルの膨大な部分の中で得られる高MIPS機能の80%近くがこのCVMにより提供されることになる。
また、CVMランタイムは基底を成すRTOSにラップアラウンド処理を施し、(スレッド、メモリ、外部アクセスを含む)資源管理のための規格に準拠したインターフェース絡みの高レベルのコードを提示するものである。
【0049】
CVMを用いることにより、通信SoC製品用の統合化された開発用プラットフォームの構築が可能となる。その場合、いくつかのサード・パーティのベンダは、高レベルのアーキテクチャから見て中立なSDLあるいはC++コンポーネントもしくはアーキテクチャに固有の、資源プロファイル化されたエンジン(ハードウェア、ソフトウェア、またはその双方の組合せであってもよい)のいずれかとして、彼らのIPを公開することができる。統合化された設計フローによって、SoCの設計者は、(特定のベンダから選択された)適切なエンジンを含むシステム全体を形成し、CVMの両側またはいずれかの側に自分のIPを付加し、次いで、(アクセラレータと共にいくつかのVHDLで定義されたコアとして)利用可能なハードウェア仕様とソフトウェア・コンポーネントの双方を作成することが可能になる。数学モデリングと、確立論的序列的分画シミュレーションと、プロトコル検定とによって、完全なフローを提供するツールセットを構築し、好適なメカニズムを提供することで、設計の範囲内で‘パッケージ化された’IPライブラリの特徴づけ、公開、列挙及び利用が可能となる。
【0050】
このシステムは、SoCの設計者用の主要ワークベンチになる潜在的可能性を有する。SoCの設計者は、高MIPSエンジンの開発を行うために、層1制御構造(fabric)の中のいずれにも入らず、VHDLツールの中へ入るだけでよくなるからである。
【0051】
CVMにより設計層1内でのSDLの利用が可能となる。
上述したように、ANSI C++または好適にはSDL(このSDLはその後ANSI Cへコンパイルしてもよい)のいずれかを用いて、アーキテクチャから見て中立な方法で低MIPSコードを書き込むことがCVMにより可能となる。SDLとは、層2及び層3スタックを表現するために電気通信業界内で広く使用されている言語であり、状態マシン・フォーマットで最も経済的に表現されるシステムにとって特に好適な言語である。従来の方式で使用するには、SDLは層2(‘ソフトによるリアルタイム’領域の端)より下位で使用するのに適切なものではない。SDLコードは様々なアーキテクチャ間での完全な移植が可能であり、TTCNなどのようなツールを用いて通常の方法でテストを行うことも可能である。開発時のコードとサブストレートの相互接続とから成る様々な部分に(動的資源の天井などのような)システム上の制約を設けることが可能であり、次いで現実の負荷モデルを用いてシミュレーションを行って、ハードウェアとソフトウェアへのデータ・パスの予行分画を行うことが可能となる。重要なことは、CVMスケジュールが、開発プロセスの1回の設計時間部分中に行われたデータ・パス分画決定を認識しているということである。ツールフローは、Matlab及びSimulinkと完全に統合化され、高MIPS機能のビットレベルでのテストが可能となる。層1の範囲内での高レベルの論理フロー用推奨言語としてSDLの使用は偶発的なものではない。SDLは、GSMのような通信スタック層2と3内で広く使用されてきたが、この2つの層の深い溝(chasm)の間をかけ渡してハードウェアによるリアルタイム領域の中へ入ってきたことは従来なかったことである。これと対照的に、CVMでは、SDL制御フローからの並列の、ハードウェアによるリアルタイムの実行指令の呼出しが可能となり、それによってSDLの非常に強力で、かつ、自然な、ステートマシンの表現性を利用して、高水準の層1アルゴリズムの作成が可能になる。これらのアルゴリズムは、低MIPSを有しているにもかかわらず、ほんの2、3の名前を挙げるだけでも、群発性のレート・マッチング、ユーザ・トランスポート・チャネルのデータ発生/消滅イベント(birth/death event)、複数の規格間のハンドオーバ、負荷によるQoSと結びついたグレースフル・デグラデーションのような問題を処理しなければならないので、ますます極度に複雑になっている。リアルタイムの処理用としては設計されていない他の言語(C++やJavaなど)もSDLの代替言語として設計層1での使用が可能である。
【0052】
CVMに対する理論的背景
現在のデジタル通信システムは、チャネルに起因するきわめて厳しい影響に直面する中で信頼性の高い、情報の無線による最善の伝送方法についての、最近の15年かそこらで出現した実質的に共通のコンセンサスに基づいて構築されている。2方向システムは、(例えば、輻輳状態のスペクトル帯域に直面してグレースフル・デグラデーションを生じるCDMAを利用し、いくつかの‘ハードウェアによる’リアルタイム要件を含むような)放送型システムとは多少異なるチャネル要件と変調要件とを持っているが、全体として多くの共通性が存在する。
【0053】
例えば、(1方向の)放送システムの特定のケースでは、復号器と符号器は単に並列の‘プロトコル・スタック’と考えることができよう。ほとんどの放送送信システムは、(ビットレートを落とすために入力信号を圧縮するMPEGのような)ソース符号化から始まり、その後(信号破損にもかかわらず情報を取り出すようにした受信機能力の向上のための構造化された冗長性を付加する畳み込み符号化とリード・ソロモン(Reed−Solomon)符号化のような)チャネル符号化が後続し、その後、(この時点で、複数の副搬送波が(周波数または位相の)角度や振幅の何らかの組合せで修正され、情報が保持される)変調が後続する。次いで、図5の線図を(1つのレベルで)生み出す逆の処理が受信機で実行される。したがって、ほとんどすべての主要なデジタル放送システムの中で1組の共通の処理用エンジンが見いだされ、各ケースで共通の処理構造の適用が可能となる。
【0054】
CVMの実施例は、上記の事実を以下のように利用するものである。すなわち、共通エンジン(または関数やライブラリ)には、1以上のステップ(ソース符号化、チャネル符号化、変調の各ステップ)、あるいはそれらの逆のステップ(ソース復号化、チャネル復号化及び復調の各ステップ)を実行するアルゴリズムが含まれる。これらのアルゴリズムには、例えば、高速フーリエ変換(FFT)、(様々な拘束長、ガロア多項式及びパンクチャリング・ベクトルを備えた)ビタビ復号器、リード・ソロモン(Reed Solomon)エンジン、MPEG復号器用離散余弦変換(DCT)、エラー・デコヒーレンス(error decoherence)のための時間及び周波数ビット毎の再オーダリング、複素ベクトル乗算及びオイラー合成などが含まれる。さらに広範囲のリストが添付書類1の中に含まれている。上記アルゴリズムは高MIPSルーチンであり、したがって、理想的にはアーキテクチャに固有の方法で(アセンブリ・コードまたはハードウェアによる加速処理のいずれかを介して)CVMの中で実現される。上記の事実にかかわらず、共通の高水準APIを通じてCVM内のこれらのアルゴリズムのアクセスすることができる。これらのパラメータ化された変換の各々は、この各変換について設けられる並列的数学モデリング・ブロックが含まれる。
【0055】
この共通構造は、(当該シンボルの範囲内に保持されているすべての情報が利用できるか否かにかかわらず、フル・シンボルの処理に関係する)シンボル処理部と、関連情報を保持する当該ビットのみを処理するデータ指示型処理との復号化チェーンへの分割に関与するものである。各ケースで、これらの処理用モジュールが、中間の整合メモリ・バッファの割り当て、共有、配置を行い、処理用モジュール間でイベントを渡し、モジュラ型開発を可能にする枠組みの範囲内に存在できるようにすることが非常に重要である。この共通構造は、数学モデリング環境の適切な場所に並列化され、グラフ記述言語(GDL)を介して記述される。図6は、CVMで利用されるこの共通ブロック及び共通構造によるアプローチを概略的に描くものである。
【0056】
追加のCCS(同時システムの微積分法)要件と資源割当て問題が存在するという点と、処理用エンジンの必要な‘臨界容量’がわずかに異なるという点とを除いて、2方向システムについても同様の分析を行うこともできる。
【0057】
現在の世代のサード・パーティ・アプリケーションの開発用ツールと、ハードウェア配置用プラットフォーム(DSP及びDSPコア)とが、上述の構造的現実を反映していないこと、及び、(概して)通信ベースバンド・アプリケーションに合わせて仕立てられたハードウェアによる加速処理を行わないこと、また、2段階スケジューリング・アプローチ(下記を参照のこと)も行わないことは興味深いことである。また、現在の組み込まれたオペレーティング・システムでも系統的なあるいは統合化された方法での上記処理やアプローチのサポートは行われていない。
【0058】
しかし、デジタル通信システムの数は急速に増加しつつあり、ベースバンド・スタックの研究開発から製品化までの短い期間内の市場への投入に対する要望が生まれている。以上説明したように、本発明の中核を成す革新的アプローチは、ソフトウェアにより提供された‘バーチャル・マシン層’(CVMの実施例により例示される)を提供し、これらの能力とソフトウェア構造とを具体化することにより、基底を成す共通性とこのようなシステム要件とを利用することである。1つの主要な市販アプリケーションは、(上述したような)SoCなどのハードによるリアルタイムの、マルチベンダの、マルチプロトコル環境に対する設計上のソリューションのようなものである。
【0059】
CVM開発方法論
CVMで用いられる開発方法論は、層化された開発と層化された配置を用いる方法論から出発し、この方法論を利用するものである。これらのコンセプトについて最初に解説する:層化された開発とは、(必要に応じて)数学モデルから、C++またはSDLコードを通じて、ターゲット・アセンブラの実現構成へ進むプロセスを意味する。このプロセスを通じてずっと、当該モジュールの各々は、必要なレベル(例えば、並列的数学モデル、C++実現構成、SIMDモデル及び様々なターゲット言語によるアセンブラの実現構成として畳み込み復号器が存在する)の各々に維持される。
【0060】
層化された配置とは、受信機のスタックが実際に実現されたとき、基底を成すハードウェア及びホストのオペレーティング・システムから可能な限りコードを切り離すためにライブラリを利用することを意味する。したがって、可能な限り多くのコード(高度の複雑さと共に低MIPS要件)が、一般的SDLまたはANSI対応C++(これはその後、ターゲット・プラットフォーム用として単純に再コンパイルされる)として保持される。例えば、単純なI/O、メモリ・バッファの割当てなどのようなプラットフォームに依存する機能を提供するためにライブラリが利用される。(FFT、ビタビ復号器などのような)反復して使用される回数の多いルーチンをアーキテクチャ独自の方法で提供するために別のライブラリが利用される。このアーキテクチャ独自の方法には、好適に設計されたアセンブラル・ルーチンの利用や、特定用途のハードウェアによる加速処理用エンジンに対するコールスルー(callthrough)の利用までも含むこともできる。
【0061】
上記2つのライブラリは、基底を成すハードウェア及びオペレーティング・システムのサブストレートの如何に関らず、移植中修正を行う必要がない‘コア’コードとの共通のAPIとして明白なものである。修正すべき唯一のコード、すなわちライブラリの実現構成の内容は、意味のあるカプセル化と数学モデルから生成される多種多様のテスト・ベクトルから利益を得る。その理由として、スタックの移植を高速に行うことが可能なアーキテクチャ内の接続ポイント(point of articulation)が、上述のアプローチを用いて適切に配置されているということが挙げられる。
【0062】
さらに、開発用プラットフォームとして、上記アプローチには、数学モデルを実行するのではなく、逆に完全なリアルタイム送受信装置を実行する1つのアーキテクチャ(インテルのプラットフォームなど)上で開発を行い、次いで、単純にライブラリのスワップを行い、ターゲットのアーキテクチャで再コンパイルを行うことが可能であるという大きな利点がある。これは、等化器モジュールの同調などを試みる際非常に有用なものとなる。
【0063】
CVMによるアプローチは上記のような作業方法を利用するものである。しかし、これに加えて、すべてのデジタル通信用ベースバンド処理作業にとって有用な主要サービス及び機能と共に、可能な限り多くの共通の機能が分離されて‘バーチャル・マシン’のハードウェアの分離層の中へ入れられる。
【0064】
以下の図7は、上記のことがアーキテクチャのレベルで機能する方法を示すものである。プラットフォームA用とプラットフォームB用の異なるライブラリの実現構成を備えて与えられるスタックを出荷する代わりに、CVMの中に、プラットフォームAとプラットフォームBの各々のための共通の‘ベースバンド・オペレーティング・システム’層が存在し、共通のAPIが与えられる。この共通のAPIの上で(再コンパイルを除いて)変らない状態のままさらに高いレベルのコードの実行が可能となる。
【0065】
さらに、シンボル指向型の処理のためのシンボル・サブスクライバ(symbol subscriber)アーキテクチャやデータ指示型処理のためのパイプライン・アーキテクチャのような、別様の場合、C++コアの範囲内に存在するような機能の多くをこの層の中へ組み込むことが可能である。
【0066】
具体的なCVM開発方法論:2段階スケジュリング
段階I
ベースバンド通信システムを構築する際の1つの重要な側面として、アプリケーションが実行される、ハードウェアとソフトウェアのプラットフォームとの要件の定量化がある。アプリケーションが要求するMIPS(100万命令毎秒)の回数のベースライン計算は比較的簡単であり、単に、1つの処理を実行するための、各コンポーネントの要求条件を計算し、処理回数を乗算し、それらすべてを一緒に加算するだけのものにすぎない。しかし、上記の中には並列要因のような側面は考慮されていない。2×500MIPSのプロセッサは理論的には1000MIPSの処理パワーを転送するとはいえ、別のチップでの処理の完了を待機している場合、アルゴリズムがこのパワーを利用できない場合もある。また、スケジュラの特別の処理要件、及び、考慮すべきデータ転送オーバーヘッドも存在する。2つのプロセッサが同じボード上に存在する場合、データ転送ペナルティはおそらく小さなものであるが、2つのプロセッサが1つの外部バスの中へプラグ・インされた別個の独立のボード上に存在する場合には、データ転送ペナルティはさらに大きなものとなる。バスの競合(2以上のプロセッサが同時にデータの転送を望むこと)によっても能率全体が低下する可能性がある。CVMによって、この種の分散型環境におけるシステムの実現を容易にするいくつかの方法が提供される。
【0067】
最初に、付属説明1に記載されている信号処理用の関数などの個々の計算用コンポーネント要件、及び、付属説明1に記載されている信号処理機能に基づいて組み立てられるさらにアプリケーションに固有のエンジン要件の定量化が可能である。3G移動通信のような環境では、1つのブロックの内を通過するデータ量は時間中変動するため、1回のデータ転送速度で1つのブロックの要件を計算するだけでは十分ではない。その代わりに、プロファイルは潜在的入力ベクトル・サイズの範囲にわたって組み立てられる。
【0068】
CVMによって、一方の端でデータを注入し、もう一方の端で消費するデータ・フロー(パイプライン)のコレクションとしてシステムを定義することが可能となる。これらのパイプラインのエンジンは、入力ベクトル・サイズの関数としてエンジンがどれだけ多くの処理を必要とするかという点から特徴づけられる。MIPSの使用計算の第1のパスとして、このパイプラインに沿う、変動するサイズのエンジンの通過シミュレーションと、入力ブロック・サイズの関数としての上記使用合計の計算とが行われる。これにより、単一のプロセッサにおいて完了まで連続して実行したと仮定した場合のエンジンのMIPS要件の合計が計算される。
【0069】
さらに優れたモデルによってプロセッサを切り離すためにエンジンが割り当てられ、真のパイプライン接続が可能になる。このアーキテクチャに基づくソリューションは、シングルスレッドのソリューションよりもさらに多くのMIPSを必要とすることになるが、いったんパイプラインがロードされると、より短い経過時間でデータ・エンジンを処理できる可能性が生じることになる。Nをプロセッサの数、E(N)をプロセッサの利用効率(1=100%、0=ゼロ)、Mpを単一プロセッサのMIPSの定格、Mを当該MIPS要件の合計とすると、1秒のデータ処理時間Tは、下式で表される:
T=M/(E(N)×N×Mp)
【0070】
上式の目的はNの最小値を見つけることである。但しTは“ゆとりのある(comfortable)”マージンの1未満の数とする。E(N)は、単一のボードの場合1に接近し、(スケジュリングとデータ転送により導入されるオーバーヘッドに起因して)ボード数の増加に伴い低下する。E(N)は、処理用エンジンがボード間でどのように分散されるかによっても変動する(この変動は、変動するデータ転送要件と、不規則な負荷バランスがプロセッサをしばらくの間アイドル状態に放置する可能性とに起因する)。
【0071】
スケジュリング処理と、バスの特性と、エンジンの特性とに関する情報を持っているCVMシミュレータは、様々な数のボードとエンジン構成についてE(N)したがってTの計算を行うことができる。また若干のエンジンの“ダブルアップ(doubling up)”(2以上のボード上で同じ機能を持つこと)の影響を調査することも可能となる。
【0072】
あるタスクのために必要な一続きのエンジンをいったん認知すると、CVMがセットされ、エンジンとボードの構成を介して最適解を探す探索が可能となる。ボードの個々のMp値を出し(N×Mpをこの個々のMpの和で置き換える)、特定のエンジンを特定のボードに結びつけることも可能となる。例えば、ビタビ復号器はDSPよりも高いMIPS定格を持つFPGA上で常に実行する。多数のエンジンについての網羅的探索は実行不可能となるため技術者からの何らかの助けが必要となる。
【0073】
段階II
いったんエンジンとボードの受け入れ可能な構成が得られると、“本気で実行する”スケジュリング処理の段階IIへ進むことができる。段階Iでは、正しいボード上へのエンジンのロードに使用することはできないシステム構成を生成したことになる。メインボードのスケジュラもこの情報を利用することが可能となる。いったんシステムが実行されると、データ・エンジンはスケジュラから、データに対して機能するエンジンへ流れる。ほとんどの時間、このスケジュラは単に、処理を必要とする順にデータを先へ送るにすぎないが、より多くの知能的処理の適用が可能となる場合が生じてくる。同等の優先順位を持つ複数のエンジンが存在する場合、スケジュラは、作業ロードが最少となるようにスケジュリングを行うことにより、すべてのボード上でキュー・サイズのバランスをとることを試みる。2以上のボード上に同じ機能が存在する場合、スケジュラはスケジュリングを行うための最適ボードを再び探索する。同じボード上の2つのエンジン間でエンジンのルート選定を行う際にメインのスケジュラの関与が不要となるように、すべてのボードにはローカルなスケジュラが設けられる。スケジュラは、作業を送るボード選択権がある場合、可能であれば自分のボードを常に選択する。またスケジュラは、ログ・メッセージのルート選定やモニタ用コンソールへの情報のモニタ・バックなどのような緊急性の少ない活動のスケジュリングが可能な場合には、処理時の潜在的小休止状態(lull)を探索することにより、最も緊急を要するエンジンの絶対的緊急性をモニタする必要がある。
【0074】
さらなるCVM開発方法論:UMTSでの実現構成で使用されるようなMIPSカウンタ
上述したように、CVMは、CVMスケジュラによって接続され、制御される複数の分散型エンジンから構成される。これらのエンジンは同じハードウェア上に位置するものであってもよいが、異なるハードウェア(CPU、DSPまたはFPGA)上に位置することも可能である。CVMのUMTSでの実現構成の場合、障害を特定し、エンジン/ブロックの連続化を助けるシステムが開発されている。まずデータ・ブロック用の処理ルートが与えられているものと仮定する。例えば、UMTS規格25.212と25.222、にはTrCH段階でのブロックの多重化方法が提案されている。その場合、BERのような何らかの客観的判断基準に応じてルート間で処理の若干を切り替えてもよい。しかし、必要なエンジンについては認知されている。次いで、データ・サイズとユーザの数という点からエンジンのサイズを決定しなければならない。例えば、ベクトルが長さnで、かつ、エンジンが以下、
for (int i=0, i < n, i++)
{
for (int j=O, j < n, j++)
{
// Do something...
}
}
から構成されている場合、この処理はn2またはO(n2)の次数であるということができる。次に、基本命令((//Do something’)内の‘+’,‘−’,...)の数をカウントすることができる。例えば、FFTによってnLog(n)回の演算処理が行われることになる。次いで、この演算回数に1基本命令当たりのデバイスの実行命令の回数を乗算し、次いで、これをMIPSの回数で除して、タスクの実行にデバイスが要する時間を得ることができる。或いは、単に相対時間を設定してもよい。
【0075】
ユーザの数(K)について同じ処理を繰り返すことができる。例えばMUは2Kのような数になる場合もある。最終的に、各ブロックはビットレートの変更を行ってもよいし、行わなくてもよい。ターボ符号化によってビットレートは3倍だけ増え、CRCの使用により12ビットが加算される。(バスの待ち時間、スケジュラ、並列化/連続化はすべてエンジンと考えることができることに留意されたい)
【0076】
重要な点は当該データ転送速度がわかっているという点である。上記処理により解答が得られる問題として、エンジン(エンジンのMIPS予算など)をどのように配分してその調整を行うようにすることができるかということが挙げられる。
【0077】
トップ・ダウン方式による設計
状態制御とデータ制御とを必要とする場合、処理用チェーンの走査はきわめて複雑となる。この処理手順を用いて、標準的アダプタを介してRSの中にC++ブロックが結びつけられ、Simulinkとの統合化が行われる。基本的に、上記処理の意図は階層の中を移動することである。層を上位へ移動するほど抽象のレベルがだんだん高くなる。その意図は、3つのサービスについて‘ユーザ’が作成するデータのラウンド・トリップを行うことである。UEによって、ある一定のプロパティを持つ物理チャネルを介してBSへのデータの送信が行われる。BSは上記データを受信し、復号化する。この場合、BSは簡単なバックホールを持ち、物理チャネルを介してデータを再転送して元のUEへ戻し、このUEで上記データは入力データと比較される。このシステムによってエンジンの入替えが可能になり、種々のチャネルにおけるBERと時間という点からパフォーマンスの改善が図られる。
【0078】
CVMの特性
CVMは、ベースバンド処理スタックが必要とする種類の機能を提供する最低限のOSと考えることもできる(また、上述したように、これらのスタックはGSMやブルートゥースのような2方向スタックであってもよい)。したがって、CVMは、マイクロソフト社のウィンドウズCEやシンビアン社のEPOCのような、本格的な内蔵型オペレーティング・システムと相補うものである。
【0079】
CVMでは、(特に)下記の機能が提供される:
* FFTフィルタ、FIRフィルタ、IIRフィルタ及びウェーブ・ディジタル・フィルタ、及び、デシメーション、相関、複素乗算などのようなオペレーションをカバーする広範囲のセットのベクトル処理用プリミティブ(さらに多くのプリミティブが付属説明1に完全にリストされている)上記オペレーションは、基底を成すハードウェアで加速処理が利用可能なハードウェアによる加速処理を利用することが望ましく、さらにこれらのオペレーションは、ライブラリの拡張バージョンを並列化する1組のライブラリ呼出しを介してアクセスされることになる。ある意味では、CVMのこの側面は、デジタル通信を行うための理想化されたデジタル信号処理用エンジンのソフトウェアまたはAPIの抽象的な形を表すものである。
* 整列バッファの割当てと、メモリ‘ハンドシェーキング’(ピンポン・バッファ)とのサポート
* 単純な種類のプリエンプティブ・マルチスレッドのオプションを備えた高度スケジュリング管理ハードウェアによるリアルタイム・パフォーマンス(すなわち、ある特定の時点に1つのコードが処理を実行する)がアーキテクチャの主要なコンポーネントとしてサポートされる。プロセス間通信構造(少なくとも共有メモリ)とスレッド同期ファシリティとが提供される。主要な特長として、確率的並列スケジュラがあり、このスケジュラは計算用異種サブストレートの両端にわたるCVMエンジンに対する設計時間の分割の決定を認識するものである。
* シンボル指向型及びデータ指向型処理についての概念の明示的サポート、これは、シンボル・サブスクライバ(symbol subscriber)とパイプライン段階とを構造の中へ付加してモジュラ型の開発を可能にする能力を直接サポートするものである。
* シリアルポート、パラレルポート及び表示制御装置を含む主要なI/O周辺機器のサポート
* 特に、モジュラ型I/OサポートのO/Sの範囲の拡大を可能にする拡張性
* 数学モデルとリアルタイム・プロトタイプとが、ターゲット・サブストレートと相互接続とのパフォーマンスのシミュレーションを高度の正確さで行うことを可能にする特定の実現構成についての特性ライブラリ
* リアルタイム・プロトタイプの製造を可能にするPCバージョン
* ホスト(アプリケーション)のOSとの通信のサポート:この通信はコールバック等々を可能にする双方向通信となる。2進‘グルー’を行うためにコンポーネント相互通信技術(COMなど)を利用してもよい。好適なアプリケーション用OSとしては、例えばEPOC32やウィンドウズCEであってもよい。なぜなら、これらのOSは、より一般的なユーザ・レベルのI/Oと、構造化された記憶管理とを実行するように設計されたOSであるからである。
* 最小の(したがって最終的にはチップ面積の)ROMの利用を保証するために組立てタイム(build time)においてCVMのROM画像を‘削減する(pare down)’能力 これはCVMの最低限の実現構成を利用するものである。
* ステートマシンの機能管理(SDLとの潜在的統合化を含む)
* データ構造のサポート
* (固定小数点や浮動小数点などのような)異なる表現間の変換
【0080】
CVMの目標は、開発段階での多数のアプリケーションを用いて、特定アプリケーションの高速な利用を特定のターゲット上で可能にすることである。従来のOSは、OSがロードされたとき実質的に未知の種々のアプリケーションの実行時サポート用として設計されているが、一般にCVMについては事実はそうではない。さらに、CVMは、‘ホスト’のOSが提供するポータルを介するプレゼンテーション・ストリームのサポートによる処理を除いて、ユーザとのインタラクション処理を必要としない。
【0081】
CVMは、インフラ・ストラクチャ・レベル(シンボル指示型及びデータ指示型処理の開発のための適切なモジュラ型構造など)の中へDABスタックの高レベルのC++コードの中に現在存在するいくつかの特性を組み込んでおり、単なる‘ライブラリ・ラッパ’ではない。
【0082】
CVMというコンセプトは、共通機能の分離と、(重要なことであるが)最新のデジタル放送及び通信規格によって求められる処理構造の分離とが可能であり、系統的に層化された開発環境と結合された適切なソフトウェア分離層を介して、これらの分離のエレガントな達成が可能であるという着想(様々な規格のレビューによってしか達成できないドメイン情報と、実際のスタックの構築処理とに大きく依存する)に基づくものである。
【0083】
CVMの利点
CVMでは、スタックの開発者たちは使用中の特定のハードウェアから切り離される。CVMとは、(シンボル指示型及びデータ指示型パイプライン及びステートマシンなどの)構造と、(メモリ割付け、リアルタイム資源、同時性管理など)機能と、デジタル通信用ベースバンド・スタックにより求められる(FFT、ビタビ、畳み込みなどの)ライブラリとをサポートし、それによって、高水準言語(SDL、ANSIC/C++またはJava)によるコードの1回の書込みと、単なる再コンパイル(必要な場合には、Javaを用いてコードの再コンパイルを行わずに、COMまたはコンポーネントの相互通信技術の何らかの別の形により‘2進レベルの’グルーを行ってモジュールを一緒にリンクすることも可能である)とが可能になるようにして、特定のプラットフォーム上で実行し、それによってCVM層により供給されるハードウェア分離層を介して呼出しを行うようにするものである。
【0084】
CVMを用いるプロトタイピングは非常に高速なものとなり、DSPモジュールの各々は数学モデルにより並列に設けられる。メモリ割付けと分割は、推測作業に依拠するのではなく、(所望のターゲット・ハードウェアによりパラメータ化された)自動化されたツールセットによりサポートされる。いったん処理用チェーンがモデルに対して設定され(この設定は、符号化の代わりにこのグラフィック構成とパラメータ化とによりオプションとして実行される)、作業が首尾よく行われていると、リアルタイムのPCベースのバージョンの実行が可能になる(RadioScape社の汎用ベースバンド・プロセッサ・モジュールを備えたCVMのIntel MMX/SIMDバージョンが用いられる)。(カスタム等化器などの)標準的コードに対する任意の変更をモジュラ型増分方法で統合化することが可能であり、さらに(PCベースの)符号化/テスト/編集サイクルはすべての最新のPC開発用ツールを利用することもでき、非常に高速なものとすることも可能となる。ターゲット・プラットフォームでのハードウェア加速処理の利用がCVMによりカバーされている(これは、デジタル通信のベースバンド処理のための、多くのサイクルを要する所要の特性がCVM APIでのライブラリ呼出しとして提供されるためである)。好適に適合された基底を成すハードウェア・ユニットによって、所望の機能のほとんどのためのターゲットとする加速が与えられることは明らかである。多くのアプリケーションの場合、軽量のプリエンプティブ・マルチスレッドと、CVM自体でのその他の低レベルの機能とをサポートすることにより、何らかの別のRTOSの利用は不要となるが、(ウィンドウズCEやシンビアンのEPOCなどのような)ユーザのOSとのインタラクションは上述のAPIを介してサポートされ、単純になる。
【0085】
このアプローチでは、いったん書き込まれたCVM互換スタックは、特別の作業を伴うことなく、CVM自身が移植されたハードウェアのプラットフォームのいずれへも瞬時に移植可能となる(言うまでもなく、リアルタイムで所望のスタックを実行するための十分な資源(MIPS、メモリ、帯域)がターゲット・マシンに常に存在するものと仮定する)。こののことは、(多くのタイプのハードウェアで使用できる適正なCVMのプラットフォームが市場に浸透すると仮定すると)スタック・ベンダにとって実質的な販売の機会が生じることを表すものである。というのは、これはハードウェアの特殊性からスタック・ベンダの開発を実質的に切り離すものであるからである。また、マルチベンダSoC製品を設計するための特にめざましいビジネス・チャンスも生じる。
【0086】
ハードウェア・ベンダの視点から見ると、CVMの利点として、CVMがいったん所定のプロセッサ用として移植されると、当該プロセッサが、(資源が許せば)CVM APIに対して書き込まれたすべてのスタックを自動的にサポートするということが挙げられる。言うまでもなく、このことによって、ハードウェア・プロバイダはアプリケーション・ビジネスの中へ入ってゆくことが不要になる。彼らはCVMを移植するだけで十分となる。またこのことは、(少なくともデジタル通信マーケット向けの)スタック・ベンダが、その場合、ANSI C/C++またはJavaで純粋にコードを開発することができるので、完全仕様の開発環境とツールセットを形成しサポートする必要性が少なくなることも意味する。CVMというコンセプトは、例えば、自動車用ブレーキ・システムで使用されるPIDコントローラを作るというような、すべてのデジタル信号処理タスクに適用されるというわけではないことに留意されたい。CVMのコンセプトがデジタル通信用ベースバンドの処理用として機能する理由として、上記に説明したように、利用が可能なこのようなシステムの中に共通性を示す広いプールが存在することが挙げられる。しかし、CVMは、別のデジタル信号処理タスクに必要とされるようなすべてのツール、構造あるいは機能を必ずしも提供するものではない。言うまでもなく、共通の機能を示す別のそのような‘島(island)’を特定し、それらの‘島’のニーズをカバーするCVMのイディオム(idiom)の拡張を行うことは潜在的には可能であろう。しかし、本願出願人は本明細書においてベースバンドの側面に焦点を絞っている。なぜなら、ベースバンドの側面が現在非常に求められており、さらに必要な共通性が強く示されているからである。CVMによるアプローチは、ハードウェア・ベンダが、既存のアプリケーション・セットではなく、代わりに、それらのハードウェアの長所(MIPS、ターゲットの加速、メモリ、電力消費量など)に関して自由に競争ができるようにするものである。
【0087】
CVM開発サイクル
実際にCVMを利用してベースバンド・スタックを開発するプロセスについて以下説明する。本明細書の目的として、デバイスが、デジタル無線装置などのような開発中の目標であることが挙げられる。ソフトウェア、ハードウェアあるいはその双方のいずれかであるコンポーネントは上記デバイスの特定可能な或る特定の一部である。‘解釈される’という表現は、実行時に構成を読み込む(おそらくコンパイルされた)コードを意味する。
【0088】
開発サイクルは‘コンポーネント定義言語’から始まる。この言語によって、コンポーネントの完全な外部からの可視属性の特定並びにその振舞いが可能になる。その意図として、メーカーがこの可視属性を書き込むことが可能であること、あるいは(後程見るように)計装化CVMの試運転によりこの可視属性の生成が可能であることが挙げられる。
【0089】
プラグ・インを介して、業界でポピュラーなMatlabやMthematicaのような数学モデリング用ツールに1組のコンポーネント定義言語を読み込むことができる。モデリング用ツールを用いて、デバイスで使用するすべてのコンポーネントの理論上の振舞いが利用され、理解される。
【0090】
上記調査の結果は、開発される別のプラグ・インを介して、‘デバイス定義言語’の中へ転記または出力のいずれかが行われる。ちょうどコンポーネント定義言語がコンポーネントを定義するように、この‘デバイス定義言語’は、構築されているターゲット・デバイスを定義し、さらに、どのコンポーネントが使用されているかというような要素を含むことになる。
【0091】
言い替えれば、デバイス定義言語は、開発中の通信用‘パイプライン’を定義するものである。ほとんどの通信用デバイスは、パイプラインを介して情報を動かし、その途中で変換を実行するプロセスであると考えることができるので、このパイプラインというコンセプトは重要である。このパイプラインは実際には電子的なアセンブリ・ラインであるが、自動車の部品で機能するようなものではなく、一般に‘シンボル’と呼ばれるデータ項目に対して機能するものである。このようにして、無線信号が最終的にオーディオ信号へ変換されることになる。言うまでもなく、‘現実の’デバイスは単純なパイプラインよりも複雑であることが多く、2以上のパイプライン、ブランチまたはループを備えている場合もある。完全なハードウェア・バージョンを組み立てる前に、このCVM開発プロセスによりパイプライン設計のテストを行うことが可能となる。これは開発期間の短縮につながるものとなる。
【0092】
ターゲット・デバイスまたはパイプラインを完全に定義するためにはさらに多くの情報が必要となる。また、本発明のターゲットで利用可能な(CPUの速度などのような)資源についての説明も必要であり、これは‘適合性記述用言語’と相互接続とで定義される。また各コンポーネント(物理的及びソフトウェアの双方のAPI)がどのように使用されるかを知っている必要がある。これはコンポーネントAPI仕様を用いて達成される。
【0093】
これらの3つの資源:デバイス定義言語、適合性記述用言語及びコンポーネントAPI仕様はいくつかの可能なCVMの中の1つの範囲内で使用される。第1のCVMは‘計装化され解釈された’パイプライン・マネージャ(あるいは、好適には、計装化され解釈されたバージョンよりもさらに高速に作動する計装化されコンパイルされたCVMのほうが望ましい)である。このパイプライン・マネージャは、ソフトウェアICEとの或る類似性を有するものである。このマネージャは上記3つの資源を読み出し、パイプラインのエミュレーション(エミュレーションはリアルタイムであってもよい)を行う。したがって、このマネージャはターゲットが無線装置である場合、無線装置として実行する。適合性記述用言語に起因して、このマネージャはターゲット・デバイス上に存在するいずれの障害または資源の限界のシミュレーションをも行うことができ、また、開発とデバッギングとを行うために有用なものである。実行に加えて、計装化され解釈された/または計装化されコンパイルされたパイプライン・マネージャは、各デバイス内コンポーネント定義言語のための診断情報も出力する。この診断情報は重要である。というのは、この情報を今度は開発サイクルの中へフィードバックし、元のコンポーネント定義言語による記述とマージして、その記述の微調整を行うことができるからである。したがって、何らかのハードウェアの組立てを行う前に設計者が実際のパフォーマンスに関する情報を利用することが可能となり、これによって(実質的に)開発の節減が行われる。これによって開発サイクルの内部ループが閉じられる。計装化され解釈された、あるいは、計装化されコンパイルされたパイプライン・マネージャにより、CVMコアの実行時バージョンが組み込まれる。計装化され解釈された、あるいは、計装化されコンパイルされたパイプライン・マネージャのソフトウェア・エレメントをハードウェアのバージョンと交換する(バグが生じたときバグの検出が可能となるように理想的には1回一度)ことが可能である。この交換されたエレメントは別の開発プロセスのための改善となる。この改善は、計算用サブストレートの両端にわたるエンジンの設計時間段階のスケジュリング処理(上記を参照されたい)に対応するものである。
【0094】
第2のCVMは‘解釈されたパイプライン・マネージャ’である。この第2のCVMは計装化されたものではないが、別の点では第1のCVMと同一のものである。この第2のCVMは開発とデバッギング時に利用することができ、また、メーカーが完成製品を製造するために利用することができる。このCVMには、通信用デバイスの書込み時の作業の多くを予め行うという第3の利点がある。このCVMにもやはりCVMコアの実行時バージョンが組み込まれている。
【0095】
第3のCVMは‘パイプライン・ビルダ’である。この第3のCVMはコンパイルされた非計装化変形例と考えることができる。他の2つのCVMのように、この第3のCVMも3つの資源を読み出すが、実行する代わりに、C言語のようなコンピュータ・ソースコードを出力し、このコードをコンパイルしてパイプラインの実現構成の形成が可能となる。この理由のため、パイプライン・ビルダは、CVMライブラリを利用できなければならない。利用できるか否かをチェックすることにより開発サイクルの外側のループが閉じられる。CVM開発サイクルのアプローチ全体が図8と9に概略的に示されている。
【0096】
本明細書の従来技術についてのセクションで、テキサス・インスツルメント社から出ている「eXpressDSP(eXpressDSP)リアルタイム・ソフトウェア技術」の存在が認められた。CVMが有する主要な進歩は当業者には明らかであろう。この進歩の中には以下のことが含まれる:
* eXpressDSPそれ自体はバーチャル・マシン層ではない。
* CVMによって、単にバーチャル・マシンの移植により様々なDSPプラットフォーム間の移植性が可能になる。CVMは(TI社のシステムのように)1つのプラットフォームにのみ結びつけられているものではない。
* CVMには数学モデリングルとの統合化が含まれる。
* CVMによって、DSPベースのツールの能力に劣らないPCベースのツールを利用するスタック開発が可能になる。
* CVMには、PC上での‘リアルタイム’のプロトタイプを形成して、ターゲット環境上へ1つずつモジュールを移動させる能力が含まれる。
* CVMには、標準的コード・セットの実行により資源タイミングを生成し、次いで、この資源タイミングから‘アーキテクチャ記述プロファイル’を生成する能力が含まれる。
* ‘高いサイクル’のルーチンのほとんどは、一般的‘リアルタイムのソフトウェア基盤’の代わりにベースバンド通信エンジンの信号処理要件の方へ方向づけられているCVM‘環境の中に’予め存在するので、CVMによって高水準言語を用いる開発が可能になる。
* またCVMでは、ベースバンドDSPに共通して必要とされる、データの種類と、動的資源と、バッファ管理とが含まれる。
* CVMでは演繹的資源予測と同時性分析とが行われる。
* CVMには単に機能エレメント(API)が含まれるだけではなく、起呼構造(DSPコードがどのように動的に機能するか)並びに(PCベースのプロトタイピングと、最終的エンド・ターゲットを通じての数学モデリング、資源モデリングによる)全体的な開発パラダイムの支援も含まれる。
* CVMによって、所望の場合サード・パーティのRTOSの利用が可能になり、さらに、所望の場合RTOSなしの機能も可能である。
* CVMは2段階スケジュリングを提供する。
* CVMにより、ASICとSoCへ移行する利点が可能になる。
* CVMによって、完全に統合化され、しかも、プラットフォームから独立したランタイムと設計用ツールとが提供される。
―附属説明―
コア処理の例
信号変換と周波数領域分析
* 信号フローグラフ(SFG)離散周波数DFT
* ウィンドウ操作(ハミング、ハニングなど)
デジタル・フィルタリング
* デジタルFIRフィルタ
* インパルス応答
* 周波数応答
* FIR低域デジタル・フィルタ
* 無限インパルス応答デジタル・フィルタ
適応信号処理
* 適応型デジタル・フィルタを含む適応信号処理用コンポーネント
* チャネル識別
* エコー・キャンセレーション
* 音響エコー・キャンセレーション
* 暗騒音抑制
* チャネル等化
* 適応型ライン拡張機能(ALE)
* 以下を含む適応型アルゴリズム:
* 平均2乗誤差の最少化
* FIRフィルタ用適応型アルゴリズム
* 平均2乗誤差
* 最小平均2乗誤差の解
* ウィーナ/ホップ(Wiener−Hopf)解
* 傾度法1
* 傾度法2
* LMSアルゴリズム
* 再帰的最小2乗法
* 適応型IIRフィルタリング
* 勾配IIRフィルタリング技術
* FeintuchのIIR LMS
* 等式誤差LMSアルゴリズム
* 直接モード(DDM)
* サブバンド適応型フィルタ(SAF)構造
マルチレート信号処理
* アップサンプリング&ダウンサンプリング
* 内挿ローパス・フィルタ
* オーバーサンプリングと再構成
* シグマ/デルタ処理アーキテクチャ
* サブバンド処理
* 反復によるMチャネル・フィルタ・バンク
* 変調フィルタ・バンク
* 多相フィルタ・バンク
* QMFフィルタ・バンク
オーディオ信号ソース符号化
* 無損失ハフマン(Huffman)符号化/復号化
* 線形PCM
* 圧伸
* 適応型量子化ツール
* 線形予測符号化
* 長期予測
* デルタ変調(DM)
* 差分パルス符号変調
* 適応型DPCM(ADPCM)LPCボコーダ
* 符号励振線形予測(CELP)
* 代数的CELP(ACELP)
* サブバンド符号化
* 精神聴覚学用ツール
* スペクトル・マスキング
* 時間マスキング
* 精度適応型サブバンド符号化及びビット割当て及びビット・ストリーム・フォーマッティング・ツール
デジタル変調
* XOR長短コード拡散/逆拡散
* 振幅変調
* 直角振幅変調(QAM)
* 直角位相復調
* 複雑な直角位相変調
* 複雑な直角位相復調
* QPSK
* n−PSK
* M−ary振幅偏移キーイング
* π/nQPSK
* ユニポーラRZ及びNRZシグナリング
* 極座標及びバイポーラRZ及びNRZシグナリング
* 以下を含む帯域通過偏移キーイング
* 振幅(ON−OFF)偏移キーイング
* 2進位相偏移キーイング(BPSK)
* 以下を含む周波数偏移キーイング
* BPSK用帯域フィルタリング
* 以下を含むパルス成形
* ナイキスト・パルス成形
* 2乗余弦パルス成形
* 平方根2乗余弦パルス成形
拡散スペクトル・ツール
* 擬似乱数コード生成
* 黄金シーケンス
* カサミ・シーケンス
* 直交拡散符号
* 可変長OC生成
* 直交ウォルシュ・コード
* コード検出
* レイク受信装置実装
* 以下を含むNBI拒絶技術
* 予測フィルタ
* 変換領域におけるNBI拒絶
* 決定フィードバックNBI拒絶
多元接続&検出管理用ツール
* 以下を含むTDMA
* TDMAフレーム
* FDMAと合成されたTDMA
* 以下を含むCDMA
* 直接シーケンス(DS)CDMA
* 電力制御
* ビーム成形用ツール
* 周波数ホッピングCDMA
* マルチユーザ検出(MUD)
* 多元接続干渉抑制
* 非相関性
* 干渉キャンセラ
* 適応型MMSE
* MMSE受信機トレーニング
* 適応型MMSE受信機DDM
移動チャネル
* レイリー・フェージング抑制メカニズム(ガウス、Riceian)
* 以下を含むモデリング及び抑制用ツール:
* タイム・スプレディング
* タイム・スプレディング:コヒーレンス帯域
* タイム・スプレディング:平坦フェージング
* タイム・スプレディング:Freq選択フェージング
* チャネルのタイム変形振舞い
* ドップラ効果
チャネル符号化
* 巡回符号器
* リード・ソロモン(Reed Solomon)符号器
* 畳み込み符号器
* CEパンクチャリング
* インターリービング
* 畳み込み復号器
* ビタビ復号器(ハード及びソフト決定)
* ターボ・コード
* ターボ符号化
* ターボ復号化
等化
* 適応型チャネル等化
* FIR等化器
* 決定フィードバック等化器
* 直接変換ツールキット
* QAMアナログRF/IFアーキテクチャ
* QAM IFダウンコンバージョン・サポート
* 帯域通過シグマ・デルタサポート
* ベースバンド・サポートへの帯域通過シグマ・デルタ
* 帯域通過及びfs/4システム
信号処理ライブラリ関数
このセクションはCVMで利用可能な信号処理関数の若干について説明する。
* ベクトル操作関数
AutoCorrelate 入力ベクトルの通常の、バイアスをかけたあるいはバイアスをかけていない自己相関を推定し、その結果を第2のベクトルに格納する
Conjugate (vector) ベクトルの複素共役を計算し、その結果を対応する当該レジスタ又は別のベクトルに返すことが可能である。
Conjugate (value) 複素数値の共役を返す。
Extended Conjugate 対応する当該レジスタ又は新しいベクトルでベクトルの共役/対称拡張を計算する。
Exp 各エレメントが、入力ベクトル内の対応するエレメントのパワーに対してeであるベクトルを計算する。この結果は対応する当該レジスタ又は別のベクトルに返すことができる。
InverseThreshold 閾値を用いてベクトルの逆エレメントを計算する。この結果は対応する当該レジスタ又は別のベクトルに返すことができる。
Threshold ベクトルで閾値演算処理を実行する。この結果は対応する当該レジスタ又は別のベクトルに返すことができる。
CrossCorrelate 2つのベクトルの相互相関を推定し、第3のベクトルにその結果を格納すする。
DotProduct 2つのベクトルに対してExtendedConjucate演算を適用後、2つのベクトルの点乗積を計算する
ExtendedDotProd 2つの共役シンメトリック拡張ベクトルの点乗積を計算する
downsample 或る信号をダウンサンプルし、概念的に或る整数係数分だけそのサンプリング速度を落とす。第2のベクトルにその結果を返す。
Max ベクトルで最大値を返す。
Mean ベクトルでエレメントの平均値を計算する。
Min ベクトルで最小値を返す。
upsample 或る信号をアップサンプルし、概念的に或る整数係数分だけそのサンプリング速度を上げる。第2のベクトルにその結果を返す。
PowerSpectrum (1) 第2のベクトルで複素ベクトルのパワー・スペクトルを返す
PowerSpectrum (2) 実数成分と虚数成分が2つのベクトルで表される複素ベクトルのパワー・スペクトルを計算する。第3のベクトルにその結果を格納する。
Add 2つのベクトルを加算し、第3のベクトルにその結果を格納する。
Subtract 1つのベクトルを別のベクトルから減じ、第3のベクトルにその結果を格納する。
Multiply 2つのベクトルを乗算し、第3のベクトルにその結果を格納する。
Divide 1つのベクトルを別のベクトルで除し、第3のベクトルにその結果を格納する。
* 複素ベクトル演算
ImaginaryPart 第2のベクトルで複素ベクトルの虚数部分を返す。
RealPart 第2のベクトルで複素ベクトルの実数部分を返す。
Magnitude (1) 複素ベクトルの要素の振幅を計算し、第2のベクトルにその結果を格納する。
Magnitude (2) この第2のバージョンは、個々の実ベクトルで指定された実数成分と虚数成分を持つ複素ベクトルの要素の振幅を計算し、第3のベクトルにその結果を格納する。
Phase (1) 第2のベクトルで複素ベクトルの要素の位相角を返す
Phase (2) それぞれ実ベクトルと、虚ベクトルで指定される実数成分と虚数成分とを持つ複素入力ベクトルの要素の位相角を計算する。この関数は、第3のベクトルに結果として生じる位相角を格納する。
ComplexToPolar 個々の入力ベクトルの実数/虚数(デカルト座標X/Y)の対を極座標形式に変換する。1つのバージョンは、1つのベクトルに各要素の成分の振幅(半径)を格納し、別のベクトルに各要素の位相(角)成分を格納する。
ComplexToPolar 第2のバージョンは、単一ベクトルで(振幅、位相の)対として極座標を返す。
PolarToComplex ベクトルに格納される極形式(振幅、位相)の対を複素ベクトルに変換する。この結果を第2のベクトルで返す。
PolarToComplex 個々のベクトルに格納された極形式の振幅/位相の対を複素ベクトルに変換する。この関数は第3のベクトルにその結果の実数成分を格納し、第4のベクトルに虚数成分を格納する。
PolarToComplex 2つの個々のベクトルに格納された極形式の振幅/位相の対を複素ベクトルに変換する。この関数は、第3のベクトルにその結果の実数成分を格納し、第4のベクトルに虚数成分を格納する。
* サンプル量子化
これらの方法は線形と非線形量子化方式との間での変換を行う。使用ビット数と、使用非線形パラメータとは変更してもよい。
AlawtoLinear A−law符号化サンプルのベクトルを線形サンプルへ変換する。この結果は対応する当該レジスタ又は別のベクトルに返すことができる。
LinearToALaw 線形サンプルベクトルを符号化する。この結果は、A−lawフォーマットを用いて、対応する当該レジスタ又は別のベクトルに返すことができる。
LinearToMuLaw pt−lawを用いてベクトルで線形サンプルを符号化する。この結果は対応する当該レジスタ又は別のベクトルに返すことができる。
MulawTolinear 8ビットkt−lawの符号化されたサンプルのベクトルを線形フォーマットに変換する。この結果は対応する当該レジスタ又は別のベクトルに返すことができる。
* サンプル生成関数
RandomGaussian ガウス分布を用いて疑似ランダム・サンプルのベクトルを計算する。
InitialiseTone 所定の周波数、位相及び振幅を用いて正弦波発生装置を初期化する。
NextTone InitialiseToneを用いて指定された周波数、位相、振幅の正弦波の次のサンプルを生成する。
InitialiseTriangle 所定の周波数、位相及び振幅を用いて三角波発生装置を初期化する。
NextTriangle InitialiseTriangleのパラメータを用いて生成された三角形波の次のサンプルを生成する。
* ウィンドウ関数
bartlettwindow ベクトルにBardentウィンドウ関数を乗算する。その結果は第2のベクトルで返される。
BlackmanWindow ユーザ指定パラメータを用いてベクトルにBlackmanウィンドウ関数を乗算する。その結果は第2のベクトルで返される。
HammingWindow ベクトルにHammingウィンドウ関数を乗算する。その結果は第2のベクトルで返される。
HannWindow ベクトルにHannウィンドウ関数を乗算する。その結果は第2のベクトルで返される。
KaiserWindow ベクトルにKaiserウィンドウ関数を乗算する。その結果は第2のベクトルで返される。
* 畳み込み関数
Convolve 2つのシーケンスの有限、線形畳み込みを実行する。
Convolve2D 2つの2次元信号の有限、線形畳み込みを実行する。
Filter2D Convolveと類似の2次元信号をフィルタする。但し、同じサイズの入出力配列を用いる。
* フーリエ変換関数
これらの方法のバージョンは、複数の異なるデータ格納(固定型、浮動型、整数型)フォーマット用のものが存在する。
DiscreteFT 対応する当該レジスタ又は別のベクトルで離散フーリエ変換を計算する。
InitialiseGoertz Goertzel関数により使用されるデータを初期化する。
ResetGoertz Goertzel関数により使用される内部遅延ラインをリセットする。
GoertzFT(1) 単一信号カウント用の所定の周波数についてDFTを計算する。
GoertzFT(2) 連続する信号カウント・ブロック用の所定の周波数についてDFTを計算する。
FFT (1) 対応する当該レジスタ又は別のベクトルのいずれかでベクトルの複素高速フーリエ変換を計算する。
FFT (2) 対応する当該レジスタ又は別のベクトルのいずれかで2つの共役左右対称信号の順方向高速フーリエ変換を計算する。
FFT (3) 対応する当該レジスタ又は別のベクトルのいずれかで1つの共役左右対称信号の順方向高速フーリエ変換を計算する。
FFT (4) 複素ベクトルの高速フーリエ変換を計算し、その結果を2つの別々の(実数と虚数)ベクトルで返す。
FFT (5) 2つの別々の(実数と虚数)ベクトルとして与えられた複素ベクトルの高速フーリエ変換を計算し、その結果を2つの別々の(実数と虚数)ベクトルで返す。
IFFT (1) 対応する当該レジスタ又は別のベクトルのいずれかでベクトルの逆高速フーリエ変換を計算する。
IFFT (2) 対応する当該レジスタ又は別のベクトルのいずれかで2つの共役左右対称信号の逆高速フーリエ変換を計算する。
IFFT (3) 対応する当該レジスタ又は別のベクトルのいずれかで共役左右対称信号の逆高速フーリエ変換を計算する。
* 有限のインパルス応答フィルタ関数
InitialiseFIR 1セットの;1組の遅延ライン値とタップとを用いて低レベル、単一レート有限インパルス応答フィルタを初期化する。
FIR InitialiseFIRを用いて前に構成された低レベル、有限インパルス応答フィルタを介して単一サンプルをフィルタする。
BlockFIR 低レベル有限インパルス応答フィルタを介してサンプルのブロックをフィルタする。
GetFirDelays 低レベル有限インパルス応答フィルタのための遅延ライン値をゲットする。
GetFIRTaps 低レベル有限インパルス応答フィルタのためのタップ係数をゲットする。
SetFIRDelays 低レベル有限インパルス応答フィルタのための遅延ライン値を変更する。
SetFIRTaps 低レベル有限インパルス応答フィルタのためのタップ係数を変更する。
Initialisemultifir 低レベル・マルチレート有限インパルス応答フィルタを初期化する。
Multifir InitisliseMultiFirを用いて前に構成された低レベル・マルチレート有限インパルス応答フィルタを介して単一サンプルをフィルタする。
BlockMultiFIR InitisliseMultiFIRを用いて前に構成された低レベル・マルチレート有限インパルス応答フィルタを介してサンプル・ブロックをフィルタする。
* 最小乗平均適合化フィルタ関数
InitialiseSALF 最小2乗平均(LMS)アルゴリズムを用いる低レベル単一レート適応型FIRフィルタを初期化する。
InitialiseMALF 最小2乗平均(LMS)アルゴリズムを用いる低レベル・マルチレート適応型FIRフィルタを初期化する。
InitALFDelay 最小2乗平均(LMS)アルゴリズムを用いる低レベル適応型FIRフィルタ用遅延ラインを初期化する。
SALF 最小2乗平均(LMS)アルゴリズムを用いる低レベル単一レート適応型FIRフィルタを介してサンプルをフィルタする。
MALF 最小2乗平均(LMS)アルゴリズムを用いる低レベル・マルチレート適応型FIRフィルタを介してサンプルをフィルタする。
SLF 最小2乗平均(LMS)アルゴリズムを用いる低レベル単一レート適応型FIRフィルタを介してサンプルをフィルタするが、2次信号用としてフィルタの適合は行わない。
MLF 最小2乗平均(LMS)アルゴリズムを用いる低レベル・マルチレート適応型FIRフィルタを介してサンプルをフィルタするが、2次信号用としてフィルタの適合は行わない。
EnginesALF 最小2乗平均(LMS)アルゴリズムを用いる低レベル単一レート適応型FIRフィルタを介してサンプルのブロックをフィルタする。
BlockMALF 最小2乗平均(LMS)アルゴリズムを用いる低レベル・マルチレート適応型FIRフィルタを介してサンプルのブロックをフィルタする。
EnginesLF 最小2乗平均(LMS)アルゴリズムを用いる低レベル単一レート適応型FIRフィルタを介してサンプルのブロックをフィルタするが、2次信号用としてフィルタの適合は行わない。
BlockMLF 最小2乗平均(LMS)アルゴリズムを用いる低レベル・マルチレート適応型FIRフィルタを介してサンプルのブロックをフィルタするが、2次信号用としてフィルタの適合は行わない。
SetALFDelays 低レベル適応型最小2乗平均(LMS)アルゴリズムを用いるFIRフィルタ用として遅延ライン値をセットする。
SetALFLeaks 最小2乗平均(LMS)アルゴリズムを用いる低レベル適応型FIRフィルタ用として漏れ値をセットする。
SetALFSteps 最小2乗平均(LMS)アルゴリズムを用いる低レベル適応型FIRフィルタ用ステップ値をセットする。
SetALFTaps 最小2乗平均(LMS)アルゴリズムを用いる低レベル適応型FIRフィルタ用としてタップ係数をセットする。
GetALFDelays 最小2乗平均(LMS)アルゴリズムを用いる低レベル適応型FIRフィルタ用として遅延ライン値をゲットする。
GetALFLeaks 最小2乗平均(LMS)アルゴリズムを用いる低レベル適応型FIRフィルタ用として漏れ値をゲットする。
GetALFSteps 最小2乗平均(LMS)アルゴリズムを用いる低レベル適応型FIRフィルタ用としてステップ値をゲットする。
GetALFTaps 最小2乗平均(LMS)アルゴリズムを用いる低レベル適応型FIRフィルタ用としてタップ係数をゲットする。
* 無限インパルス応答フィルタ関数
InitialiseIIR 指定されたオーダーの低レベル無限インパルス応答フィルタを初期化する。
InitialiseBiquadIIR 低レベル無限インパルス応答(IIR)フィルタをbiquads(二次オーダーIIRセクション)のカスケード基準信号に初期化する。
InitialiseIIRDelay 低レベル無限インパルス応答(IIR)フィルタ用として遅延ラインを初期化する。
IIR 低レベル無限インパルス応答フィルタを介して単一サンプルをフィルタする。
BlockIIR 低レベル無限のインパルス応答フィルタを介してサンプルのブロックをフィルタする。
* ウェーブレット関数
DecomposeWavelet 信号をウェーブレット連続に分解する。
ReconstructWavelet ウェーブレット分解から信号を再構成する。
* 離散余弦変換関数
DCT 離散余弦変換(DCT)を実行する。
ベクトル・データ変換関数
このセクションで記述したすべての関数は、(様々な整数長、異なる浮動小数点フォーマット及び浮動小数点数の固定小数点表示のような)複数の様々なデータ・フォーマットでの機能が可能である。この信号処理ライブラリには、サポートされているフォーマットのすべての対の間で単一値とベクトルとを変換する方法が含まれる。
【図面の簡単な説明】
【図1】
マイクロソフト社のウィンドウズを利用している場合のハードウェアとアプリケーション・ソフトウェアとの間の関係を示す概略図である。
【図2】
ハードウェアとアプリケーション・ソフトウェアとの間のマイクロソフト社のウィンドウズ以前の関係を示す概略図である。
【図3】
ベースバンド・スタックのアーキテクチャ上仮定的に中立な部分を切り離すことができない従来の方式に起因する障害を示す概略図である。
【図4A】〜
【図4B】
本発明におけるベースバンド・スタックのアーキテクチャから見て中立な部分の切り離しの成功を示す概略図である。
【図5】
ベースバンド通信スタック内の構造を示す概略図である。
【図6】
本発明の実施例での共通のエンジンと構造とを示す概略図である。
【図7】
本発明のCVMと、ハードウェアとスタックとの間の関係を示す概略図である。
【図8】〜
【図9】
本発明を利用する開発サイクルでのステップを示す概略図である。
【用語の説明】
Architecture Neutral Layer 1 Code in SDL SDLで書かれたアーキテクチャから見て中立な層1コード
RadioScape CVM RadioScape社製CVM
Architecture Specific High MIPS Data paths アーキテクチャ独自の高MIPSデータ・パス
Engine エンジン
【図1】
1:アプリケーション・ソフトウェア1
2:アプリケーション・ソフトウェア2
3:ウィンドウズ・バーチャルマシン
4:プリンタ・ドライバ(共有)
5:DOS B/S
6:ハードウェア
【図2】
1:アプリケーション・ソフトウェア1
2:カスタム・プリンタ・ドライバ
3:カスタムGUIコード
4:アプリケーション・ソフトウェア2
5:カスタム・プリンタ・ドライバ
6:カスタムGUIコード
7:DOS B/S
8:ハードウェア
【図3】
1:スタックのアーキテクチャから見て中立な部分(正しく切り離されていない)
2:通信用マシン層
3:アセンブラ・コードされたベクトル関数
4:共通のDSPフロー制御構造
5:ハードウェア加速ドライバ
6:DMA CCS及び資源管理
7:オプションのRTOS
8:ハードウェア2
【図4A】
1:スタックのアーキテクチャから見て中立な部分(ハードウェアから切り離されている)
2:通信用マシン層
3:アセンブラ・コードされたベクトル関数
4:共通のDSPフロー制御構造
5:ハードウェア加速ドライバ
6:DMA CCS及び資源管理
7:オプションのRTOS
8:ハードウェア2
【図4B】
1:SDLで書かれたアーキテクチャから見て中立な層1コード
2:RadioScape社製CVM
3:アーキテクチャ独自の高MIPSデータ・パス
4:エンジン
【図5】
1:コンテンツ生成
2:ソース符号化
3:チャネル符号化
4:変調
5:復調
6:チャネル復号化
7:ソース復号化
8:コンテンツ・プレゼンテーションApp
【図6】
1:I/O
2:AEC
3:FFT
4:Chan Proc
5:Demod
6:MMIコード
7:パイプライン段階
8:シンボル指示型処理
9:データ指示型処理
【図7】
1:スタック境界
2:C++コア・コード
3:CVM A
4:ハードウェア+O/S A
5:スタック境界
6:C++コア・コード
7:CVM B
8:ハードウェア+O/S B
【図8】
1:初期アーキテクチャ仕様書
2:数学モデリング用ツール(Marlab)
3:グラフ記述言語(GDL)
4:PC開発環境(MS Dev.Studio,Tau)
5:アーキテクチャから見て中立な通信スタック(C++/SDL)
6:RadioScapeプラグ・イン拡張
7:RadioScapeライブラリ
8:RadioScapeターゲット内蔵CVM環境
9:RadioScape Intel MMX/SIMD CVM環境
10:プラグ・イン内蔵コンパイラ
11:アーキテクチャ・レポート(MIPS、メモリ、CCS)
12:RadioScapeアーキテクチャ解析ツール
13:RadioScapePC内RFプロトタイピング用PCIボード
14:FPGA/DSP処理用ボード
【図9】
1:CVM開発サイクル
2:モデリング用ツール(Matlab数学など)
3:パイプライン
4:プラグ・イン(RS)
5:TBA
6:手で
7:定義する
8:コンポーネント定義言語
9:コンポーネントAPI
10:コンポーネントの振舞い
11:デバイス定義言語
12:適合性記述用言語
13:コンポーネント“API”仕様
14:計装化
15:解釈された
16:パイプライン・マネージャ
17:実行&ログ
18:実行
19:コンポーネント定義言語
20:ソースコード
21:パイプライン・ビルダ
22:VMライブラリ
23:コンポーネント・ライブラリ
24:コンパイル
25:パイプライン
整理番号 884
Claims (44)
- デジタル信号処理の設計、モデリングまたは実行を行うためのソフトウェアにおいて、通信用DSPとして最適化されたバーチャル・マシン層を含むことを特徴とするソフトウェア。
- 請求項1に記載のソフトウェアにおいて、上記バーチャル・マシン層により表されるAPIを用いることにより、低MIPSコードが、上記バーチャル・マシン層によって高MIPSプロセスとインターフェースすることを可能にすることを特徴とするソフトウェア。
- 請求項2に記載のソフトウェアにおいて、上記高MIPSプロセスが抽象的なプロセスの実現構成であり、上記MIPSプロセスは、アクセス・コストを最適化するように、ランタイム環境下で組織化されていることを特徴とするソフトウェア。
- 請求項3に記載のソフトウェアであって、上記高MIPSプロセスをエンジンで実行し、(i)上記設計及びモデリング段階と、(ii)上記ランタイムとのいずれかあるいは双方の時間中、最適の資源利用を行うために、異なるエンジン間での処理の同時スケジュリングを行うようにスケジュラをプログラムするソフトウェアにおいて、上記資源割当てが以下の、(a)統計関数を用いる測定と、(b)統計分布関数を用いるモデリングのステップのうちの一方または双方のステップを含むことを特徴とするソフトウェア。
- 請求項4に記載のソフトウェアであって、上記バーチャル・マシン層が、いくつかの異るベースバンド処理用アルゴリズムに共通の基底を成す高MIPSアルゴリズムをサポートし、さらに、スケジュラ・インターフェースを介して、高水準の、アーキテクチャから見て中立な、潜在的に高度の複雑さを持ちながら、しかも低MIPSの制御フローに上記アルゴリズムがアクセスすることを可能にするソフトウェアにおいて、上記スケジュラ・インターフェースは、(i)ランタイム、(ii)メモリ、(iii)起呼発信者が実行命令の実行を望む帯域のいずれかあるいはすべての内側に在る相互接続帯域、のうちの1以上に関連する1組の資源制約包絡線と共に、上記制御フローが実行すべきアルゴリズムを指定することを可能にすることを特徴とするソフトウェア。
- 請求項4に記載のソフトウェアにおいて、設計またはモデリング中、異なるエンジンにわたる高MIPSプロセスのデータ・パスの分画を可能にするのに適合するることを特徴とするソフトウェア。
- 請求項6に記載のソフトウェアにおいて、上記スケジュラが、異なるエンジンにわたって行われる上記データ・パス分画決定をランタイム中に認知していることを特徴とするソフトウェア。
- 請求項2に記載のソフトウェアにおいて、上記低MIPSコードの少なくとも一部が、リアルタイムのオペレーション用として設計されていない言語で表現されることを特徴とするソフトウェア。
- 請求項8に記載のソフトウェアにおいて、上記言語がSDLであることを特徴とするソフトウェア。
- 請求項2に記載のソフトウェアにおいて、アーキテクチャから見て中立な方法で上記低MIPSコードを表すことを可能にすることを特徴とするソフトウェア。
- 請求項2に記載のソフトウェアであって、アーキテクチャから見て中立な低MIPS制御コードを用いてベースバンド・スタックを組み立てることを可能にするソフトウェアにおいて、上記制御コードが、エンジンに設けられたアーキテクチャ固有の高MIPSプロセスにアクセスするために、上記バーチャル・マシン層により指定される、1組のアーキテクチャから見て中立なAPIを使用することを特徴とするソフトウェア。
- 請求項11に記載のソフトウェアにおいて、少なくとも1つの高MIPSエンジンがいくつかの様々な種類のベースバンド・スタックのために資源を供給することを特徴とするソフトウェア。
- 請求項2に記載のソフトウェアにおいて、リアルタイムで別の処理との同時スケジュリングを行うことが可能となるように、様々な処理の静的及び動的資源要件を特徴づけるようにプログラムされることを特徴とするソフトウェア。
- 請求項13に記載のソフトウェアにおいて、完全に統合化された数学モデルと、統計的シミュレーション・ツールと、序列的分画用シミュレーション・ツールとをさらに有することを特徴とするソフトウェア。
- 請求項1乃至14のいずれかのソフトウェアにおいて、チップ上のシステム用の設計プラットフォームまたはモデリング・プラットフォームとして機能することを特徴とするソフトウェア。
- 請求項15に記載のソフトウェアにおいて、各々がいくつかの異なるベンダから得られる知的財産ブロックを、上記ソフトウェアによってモデル化される各ブロックの上記静的及び動的資源要件によって、上記システムにおいてチップ上で組み合わせることができ、それによって、複数のブロックが、リアルタイムで同時スケジュリングを行うことができるようにすることを特徴とするソフトウェア。
- 請求項16に記載のソフトウェアにおいて、上記ブロックが高MIPSの処理を実行することを特徴とするソフトウェア。
- 請求項16に記載のソフトウェアにおいて、上記ブロックが低MIPS制御処理を実行することを特徴とするソフトウェア。
- 請求項1に記載のソフトウェアにおいて、(a)非リアルタイム設計とモデリングのためのPCプロトタイプから、(b)ランタイムのための1以上の外部FPGAを備えた1以上のDSPチップへ、デジタル信号処理が実行されるような上記サブストレートを移行させる過程で利用されることを特徴とするソフトウェア。
- 請求項19に記載のソフトウェアにおいて、上記サブストレートが次にカスタムASICへ移行されることを特徴とするソフトウェア。
- 請求項1に記載のソフトウェアにおいて、上記バーチャル・マシン層が、以下の(a)から(e)を用いてプログラムされること、あるいは、以下の(a)から(e)へのアクセスを可能にすることを特徴とするソフトウェア。
(a)コア処理
(b)コア構造
(c)コア機能
(d)フロー制御
(e)状態管理 - 請求項21に記載のソフトウェアにおいて、上記コア処理が、1以上の以下のステップ、すなわちソース符号化、チャネル符号化、変調、または、それらの逆のステップ、すなわちソース復号化、チャネル復号化及び復調ステップを実行するアルゴリズムを含むことを特徴とするソフトウェア。
- 請求項21に記載のソフトウェアにおいて、上記コア構造が(当該シンボルの範囲内に保持されているすべての情報が利用できるか否かにかかわらず、フル・シンボル処理と関係する)シンボル処理部と、関連情報を保持する当該ビットのみを処理するデータ指向型処理部とを有することを特徴とするソフトウェア。
- 請求項23に記載のソフトウェアにおいて、上記コア構造が、中間の整合メモリ・バッファを割り振り、共有し、配置するように作動可能な処理用モジュールから構成され、さらに、該モジュール間でイベントを渡すようにすることを特徴とするソフトウェア。
- 請求項21に記載のソフトウェアにおいて、上記コア機能が、1以上の以下のステップ、すなわち、メモリ割付け、リアルタイム資源割当て及び同時性管理を含む資源割当てとスケジュリングを含むことを特徴とするソフトウェア。
- 請求項21に記載のソフトウェアにおいて、PC用デバッグ・ツールにアクセスするように作動可能であることを特徴とするソフトウェア。
- 請求項21に記載のソフトウェアにおいて、上記コンポーネントのパフォーマンスを用いる上記ソフトウェアの動作及び/又は上記コンポーネントのパフォーマンスの別様のモデル化を可能にするために必要な当該情報だけが、上記コンポーネント内の知的財産の所有者により供給されるように成されるコンポーネントを用いて機能することが可能であることを特徴とするソフトウェア。
- 請求項21に記載のソフトウェアにおいて、シミュレータ、エミュレータあるいはモデリング用ツールが、通信コンポーネントを用いてシステムの上記資源要件を正確に推定することを可能にする当該通信コンポーネントの(インターフェースの振舞い及び非インターフェースの振舞いを含む)特性に関する標準化された記述を用いて作動可能であることを特徴とするソフトウェア。
- 請求項21に記載のソフトウェアにおいて、時間、CPU、メモリ、相互接続スケジュリング及び同時性制限をモデル化するように作動可能で、リアルタイムOS、非リアルタイムOS、バーチャル・マシンあるいはハードウェア上へのマッピングを可能にすることを特徴とするソフトウェア。
- ソフトウェアまたはハードウェアであって、低MIPS制御機能を与え、バーチャル・マシン層により与えられるAPIを使用するのに適合するソフトウェアまたはハードウェアにおいて、上記バーチャル・マシン層が(i)通信用DSPとして最適化され、(ii)上記請求項1乃至29のいずれかに記載のソフトウェアの一部を形成することを特徴とするソフトウェアまたはハードウェア。
- ソフトウェアまたはハードウェアであって、バーチャル・マシン層のための高MIPSプロセスを行うのに適合するソフトウェアまたはハードウェアにおいて、上記バーチャル・マシン層が(i)通信用DSPとして最適化され、(ii)上記請求項1乃至29のいずれかに記載のソフトウェアの一部を形成することを特徴とするソフトウェアまたはハードウェア。
- バーチャル・マシン層を有するチップ上のシステムにおいて、上記バーチャル・マシン層が(i)通信用DSPとして最適化され、(ii)上記請求項1乃至29のいずれかに記載のソフトウェアの一部を形成することを特徴とするシステム。
- バーチャル・マシン層を有するDSPプロセッサにおいて、上記バーチャル・マシン層が(i)通信用DSPとして最適化され、(ii)上記請求項1乃至29のいずれかに記載のソフトウェアの一部を形成することを特徴とするDSPプロセッサ。
- 請求項1乃至29に確定されるようなソフトウェアを含むことを特徴とする通信用デバイス。
- 上記請求項1乃至29のいずれかに確定されるようなソフトェアを介してDSPと交信する通信用デバイスのためのオペレーティング・システム。
- 上記請求項1乃至29のいずれかに確定されるようなソフトウェアにより、DSP機能の若干あるいはすべてが処理されることを特徴とする信号処理用アプリケーション。
- 上記請求項1乃至29のいずれかに確定されるようなソフトウェアと関連して機能するのに適合するベースバンド・スタック。
- 現実のまたはシミュレーションされるコンポーネントが、データ自体による、パイプラインの管理の決定を可能にするような、いくつかの標準的接続タイプ及び同期方法を用いてパイプラインで一体的にリンクされているベースバンド・スタック。
- 請求項38に記載のベースバンド・スタックにおいて、上記パイプラインが、上記請求項1乃至29のいずれかに確定されるようなソフトウェアを含むことを特徴とするベースバンド・スタック。
- 上記請求項38に記載のベースバンド・スタックにおいて、請求項1乃至29のいずれかに記載されているようなソフトウェアの最低限の実現構成を含むことを特徴とするベースバンド・スタック。
- ベースバンド・スタックをシミュレートするための設計用ツールにおいて、上記パイプラインによって処理されるデータによる、パイプラインの管理の決定を可能にする、いくつかの標準的接続タイプ及び同期方法を用いて、ソフトウェア・コンポーネント及びハードウェア・コンポーネントと一体的にリンクすることが可能であることを特徴とする設計用ツール。
- 請求項41に記載の設計用ツールにおいて、上記スタックが、請求項1乃至29のいずれかに記載のようなソフトウェアを有することを特徴とする設計用ツール。
- 請求項1乃至29のいずれかに確定されるソフトウェアを用いてプログラムされた搬送媒体。
- 請求項1乃至29のいずれかに記載のソフトウェアのステップが行われることを特徴とする通信用デバイスの一部またはすべての設計方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB0001577.6A GB0001577D0 (en) | 2000-01-24 | 2000-01-24 | Software for designing modelling or performing digital signal processing |
PCT/GB2001/000273 WO2001053932A2 (en) | 2000-01-24 | 2001-01-24 | Software for designing, modelling or performing digital signal processing |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004500650A true JP2004500650A (ja) | 2004-01-08 |
Family
ID=9884226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001554160A Withdrawn JP2004500650A (ja) | 2000-01-24 | 2001-01-24 | デジタル信号処理の設計、モデル化あるいは実行を行うためのソフトウェア |
Country Status (5)
Country | Link |
---|---|
US (1) | US20030014611A1 (ja) |
EP (1) | EP1259878A2 (ja) |
JP (1) | JP2004500650A (ja) |
GB (3) | GB0001577D0 (ja) |
WO (1) | WO2001053932A2 (ja) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8010703B2 (en) * | 2000-03-30 | 2011-08-30 | Prashtama Wireless Llc | Data conversion services and associated distributed processing system |
US6691050B2 (en) * | 2001-03-14 | 2004-02-10 | Agilent Technologies, Inc. | Data acquisition instrument architecture with flexible data acquisition, processing and display |
US20030023660A1 (en) * | 2001-06-01 | 2003-01-30 | Bogdan Kosanovic | Real-time embedded resource management system |
JP2003330732A (ja) * | 2002-05-17 | 2003-11-21 | Canon Inc | 画像形成装置、制御方法、制御プログラム |
AU2003242831A1 (en) * | 2002-05-27 | 2003-12-12 | Radioscape Limited | Method of testing components designed to perform real-time, high resource functions |
US20040139411A1 (en) * | 2003-01-13 | 2004-07-15 | Smith Winthrop W. | Heterogenous design process and apparatus for systems employing static design components and programmable gate array sub-array areas |
US8521708B2 (en) * | 2003-01-22 | 2013-08-27 | Siemens Industry, Inc. | System and method for developing and processing building system control solutions |
US8639487B1 (en) * | 2003-03-25 | 2014-01-28 | Cadence Design Systems, Inc. | Method for multiple processor system-on-a-chip hardware and software cogeneration |
US7474638B2 (en) * | 2003-12-15 | 2009-01-06 | Agilent Technologies, Inc. | Method and system for distributed baseband measurements |
EP1596533B1 (de) * | 2004-05-11 | 2007-10-10 | Tektronix International Sales GmbH | Protokolltester zur Durchführung und Verfahren zur Implementierung einer Testaufgabe |
US7158814B2 (en) | 2004-06-10 | 2007-01-02 | Interdigital Technology Corporation | Method and system for utilizing smart antennas establishing a backhaul network |
GB2420908B (en) | 2004-12-03 | 2008-01-23 | Toshiba Res Europ Ltd | Photon source |
GB2440850B (en) * | 2004-12-03 | 2008-08-20 | Toshiba Res Europ Ltd | Method of operating a photon source |
US20060236303A1 (en) * | 2005-03-29 | 2006-10-19 | Wilson Thomas G Jr | Dynamically adjustable simulator, such as an electric circuit simulator |
DE102005025933B3 (de) * | 2005-06-06 | 2006-07-13 | Centrotherm Photovoltaics Gmbh + Co. Kg | Dotiergermisch für die Dotierung von Halbleitern |
US20070025394A1 (en) * | 2005-08-01 | 2007-02-01 | Interdigital Technology Corporation | Layer one control architecture |
JP2007286671A (ja) * | 2006-04-12 | 2007-11-01 | Fujitsu Ltd | ソフトウェア/ハードウェア分割プログラム、および分割方法。 |
US8255890B2 (en) * | 2007-02-14 | 2012-08-28 | The Mathworks, Inc. | Media for performing parallel processing of distributed arrays |
US7975001B1 (en) * | 2007-02-14 | 2011-07-05 | The Mathworks, Inc. | Bi-directional communication in a parallel processing environment |
US8255889B2 (en) * | 2007-02-14 | 2012-08-28 | The Mathworks, Inc. | Method of using parallel processing constructs and dynamically allocating program portions |
US8239844B2 (en) * | 2007-02-14 | 2012-08-07 | The Mathworks, Inc. | Method of using parallel processing constructs and dynamically allocating program portions |
US8250550B2 (en) * | 2007-02-14 | 2012-08-21 | The Mathworks, Inc. | Parallel processing of distributed arrays and optimum data distribution |
US8239845B2 (en) * | 2007-02-14 | 2012-08-07 | The Mathworks, Inc. | Media for using parallel processing constructs |
US8010954B2 (en) | 2007-02-14 | 2011-08-30 | The Mathworks, Inc. | Parallel programming interface to dynamically allocate program portions |
US8239846B2 (en) * | 2007-02-14 | 2012-08-07 | The Mathworks, Inc. | Device for performing parallel processing of distributed arrays |
DE102010039519A1 (de) * | 2010-08-19 | 2012-02-23 | Siemens Aktiengesellschaft | System mit einem Produktivsystem und einem Prototypsystem, sowie ein Verfahren hierzu |
CN102750143B (zh) * | 2012-05-31 | 2015-09-16 | 武汉邮电科学研究院 | 基于matlab com组件调用的dsp开发方法 |
US10783316B2 (en) | 2018-02-26 | 2020-09-22 | Servicenow, Inc. | Bundled scripts for web content delivery |
US10824948B2 (en) * | 2018-09-17 | 2020-11-03 | Servicenow, Inc. | Decision tables and flow engine for building automated flows within a cloud based development platform |
US11502715B2 (en) | 2020-04-29 | 2022-11-15 | Eagle Technology, Llc | Radio frequency (RF) system including programmable processing circuit performing block coding computations and related methods |
US11411593B2 (en) | 2020-04-29 | 2022-08-09 | Eagle Technology, Llc | Radio frequency (RF) system including programmable processing circuit performing butterfly computations and related methods |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5257369A (en) * | 1990-10-22 | 1993-10-26 | Skeen Marion D | Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes |
US5497498A (en) * | 1992-11-05 | 1996-03-05 | Giga Operations Corporation | Video processing module using a second programmable logic device which reconfigures a first programmable logic device for data transformation |
US5432804A (en) * | 1993-11-16 | 1995-07-11 | At&T Corp. | Digital processor and viterbi decoder having shared memory |
ATE257611T1 (de) * | 1995-10-23 | 2004-01-15 | Imec Inter Uni Micro Electr | Entwurfssystem und -verfahren zum kombinierten entwurf von hardware und software |
EP0867820A3 (en) * | 1997-03-14 | 2000-08-16 | Interuniversitair Micro-Elektronica Centrum Vzw | A design environment and a method for generating an implementable description of a digital system |
US5909559A (en) * | 1997-04-04 | 1999-06-01 | Texas Instruments Incorporated | Bus bridge device including data bus of first width for a first processor, memory controller, arbiter circuit and second processor having a different second data width |
-
2000
- 2000-01-24 GB GBGB0001577.6A patent/GB0001577D0/en not_active Ceased
- 2000-12-15 GB GBGB0030698.5A patent/GB0030698D0/en not_active Ceased
-
2001
- 2001-01-24 US US10/182,222 patent/US20030014611A1/en not_active Abandoned
- 2001-01-24 EP EP01942734A patent/EP1259878A2/en not_active Withdrawn
- 2001-01-24 GB GB0101827A patent/GB2367390B/en not_active Expired - Fee Related
- 2001-01-24 JP JP2001554160A patent/JP2004500650A/ja not_active Withdrawn
- 2001-01-24 WO PCT/GB2001/000273 patent/WO2001053932A2/en not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
WO2001053932A2 (en) | 2001-07-26 |
EP1259878A2 (en) | 2002-11-27 |
GB0030698D0 (en) | 2001-01-31 |
WO2001053932A3 (en) | 2002-09-12 |
US20030014611A1 (en) | 2003-01-16 |
GB2367390A (en) | 2002-04-03 |
GB0001577D0 (en) | 2000-03-15 |
GB0101827D0 (en) | 2001-03-07 |
GB2367390B (en) | 2003-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004500650A (ja) | デジタル信号処理の設計、モデル化あるいは実行を行うためのソフトウェア | |
JP2004500652A (ja) | 通信用ベースバンド・スタックの設計、モデル化または組立て方法 | |
JP2003520551A (ja) | デジタル無線基地局 | |
Mitola | Software radio architecture: a mathematical perspective | |
Panesar et al. | Deterministic parallel processing | |
US20050223191A1 (en) | Device comprising a communications stack with a scheduler | |
Oshana | DSP for Embedded and Real-time Systems | |
US20060058976A1 (en) | Method of testing components designed to perform real-time, high resource functions | |
Castrillon et al. | Component-based waveform development: The nucleus tool flow for efficient and portable software defined radio | |
Gerstlauer | Host-compiled simulation of multi-core platforms | |
US20110066416A1 (en) | Method and system for simulation and verification of communication devices | |
Schirner et al. | Result-oriented modeling—A novel technique for fast and accurate TLM | |
Fayez | Designing a software defined radio to run on a heterogeneous processor | |
Chandraiah et al. | Specification and design of a MP3 audio decoder | |
GB2382702A (en) | Software for designing,modelling or performing digitalsignal processing | |
Zitouni et al. | Hardware-Software Codesign for Software Defined Radio: IEEE 802.11 p receiver case study | |
Panesar et al. | Multi-Core System-on-Chip in Real World Products | |
Sirpatil | Software Synthesis of SystemC Models | |
Latif | Continuous Integration for Fast SoC Algorithm Development | |
Musasa Mutombo | Evaluation of embedded processors for next generation asic: Evaluation of open source Risc-V processors and tools ability to perform packet processing operations compared to Arm Cortex M7 processors | |
Forsberg et al. | Customized Processor Design for 5G Data Link Layer Processing | |
Evans | Real-Time Digital Signal Processing Laboratory | |
Vasconcellos | Parallel signal-processing for everyone | |
ZafarUllahh et al. | A Theoretical Evaluation of Commercially Available Tool Chain for Rapid Prototyping of Wireless Communication Systems | |
Kärnhall | Decoding Ogg Vorbis Audio with The C6416 DSP, using a custom made MDCT core on FPGA |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20080401 |