(58)【調査した分野】(Int.Cl.,DB名)
【背景技術】
【0002】
本出願の出願者らは、GB2482141Aの公開番号で公開され、CN102339223A及びUS2012/0023317A1の公開番号でそれぞれ公開された中国及び米国の同等出願を有する英国特許出願も出願した。GB2482141Aの教示内容の多くは、参照を容易にするために以下で再掲される。
【0003】
システムの記述には、統一モデリング言語(UML)を使用することができる。UMLの一般的用途は、ソフトウェアによって実装されるシステムの記述を提供することである。従来は、アナリストが、ソフトウェアでの実装を提案されたシステムを調査し、そのシステムのUML記述を作成する。次いで、プログラマが、アナリストによって提供されたUML記述をもとに作業し、ソフトウェアを実行する予定の特定のコンピューティングハードウェアアーキテクチャの制約にしたがいながら、システムを実装するソフトウェアを作成する。このような制約の幾つかの例として、コンピューティングハードウェア内のメモリの量や、コンピューティングハードウェア内のプロセッサの数及び処理速度が挙げられる。
【0004】
UMLは、システムを記述するための一連の方法を提供する。このような方法の1つが、アクティビティ図の使用である。アクティビティ図は、アクティビティの観点やアクティビティ間の制御フローの観点からシステムを記述する。制御フローは、ひとそろいのプリミティブによって表され、これらのプリミティブは、ここで、
図1〜6を参照にして説明される。
【0005】
図1は、フォーク(分岐)ノードと呼ばれるアクティビティ図プリミティブを示している。ここで、フォークノード10は、アクティビティ12、14、及び16の間の関係を記述している。フォークノード10は、アクティビティ12の完了時にアクティビティ14及び16が同時に開始されることを示している。
【0006】
図2は、ジョイン(合流)ノードと呼ばれるアクティビティ図プリミティブを示している。ここで、ジョインノード18は、アクティビティ20、22、及び24の間の関係を記述している。ジョインノード18は、アクティビティ20及び22の両方の完了時にアクティビティ24が開始されることを示している。したがって、ジョインノードプリミティブは、或るアクティビティが開始することを複数のその他のアクティビティの終了後に初めて許可するという意味で、同期化の効果を有する。
【0007】
図3は、デシジョン(判断)ノードと呼ばれるアクティビティ図プリミティブを示している。ここで、デシジョンノード26は、アクティビティ28、30、及び32の間の関係を記述している。デシジョンノード26は、アクティビティ28の完了時にアクティビティ30及び32のいずれか1つのみが開始されることを示している。アクティビティ30及び32のいずれが開始されるかは、デシジョンノード26に関連付けられたロジック条件によって判断される。例えば、システムの特定のパラメータが何らかの所定値を上回るか又は下回るかである。
【0008】
図4は、マージ(結合)ノードと呼ばれるアクティビティ図プリミティブを示している。ここで、マージノード34は、アクティビティ36、38、及び40の間の関係を記述
している。マージノード34は、アクティビティ36及び38のいずれか1つが完了したらすぐに開始される。
【0009】
図5は、イニシャル(初期)ノードと呼ばれるアクティビティ図プリミティブを示している。イニシャルノードは、システムの始まりを示している。ここで、イニシャルノード42は、アクティビティ44の実行からシステムが始まることを示している。
【0010】
図6は、ファイナル(最終)ノードと呼ばれるアクティビティ図プリミティブを示している。ファイナルノードは、システムの終わりを示している。ここで、ファイナルノード46は、システムがアクティビティ48の実行後に終わることを示している。
【0011】
これまでのところ、プリミティブがつなぐアクティビティの性質に関して何も語られていない。これらのアクティビティは、ほぼ無限に多様な性質を有する。アクティビティは、多くの場合、それ自身がアクティビティ図によって記述されうるという意味で、複雑である。この文書は、無線通信を行うのに適したマルチプロセッサシステムを論じる。この文脈におけるアクティビティの例は、以下の通りである。
・データを或る場所から別の場所に移すためのダイレクトメモリアクセス(DMA)手続きを行う。
・デジタル時間領域信号に対して高速フーリエ変換(FFT)を実施する。
・2つのデジタル時間領域信号の相互相関を実施する。
・データシーケンスについての巡回冗長チェックサム(CRC)を計算する。
【0012】
図7は、デシジョンノードに関連付けられた信号フローを例示している。この図は、プリミティブの、入力50並びに出力52及び54を示している。並べて示されるのは、3つのプロットである。プロット56は、入力50上を伝わる信号を示しており、プロット58は、出力52上を伝わる信号を示しており、プロット60は、出力54上を伝わる信号を示している。3つの全てのプロットの時間スケールは、62において任意単位で示されている(
図8、9、及び10の時間スケールにおいても同様の取り決めを使用している)。プロット56に示されるように、第2の時間間隔中に、入力50上にイベント信号が到着する。プリミティブは、第3の期間中に、プリミティブに関連付けられたロジック条件の状態によって示されるように出力52及び54の一方にイベント信号を出力することによって応答する。この場合は、ロジック条件の状態は、イベント信号を出力52上に発信させ、出力54上には何も送信されない。
【0013】
図8は、マージノードに関連付けられた信号フローを例示している。図は、プリミティブの、入力64及び66並びに出力68を示している。並べて示されるのは、3つのプロットである。プロット70は、入力64上を伝わる信号を示しており、プロット72は、入力66上を伝わる信号を示しており、プロット74は、出力68上を伝わる信号を示している。プロット70に示されるように、第2の時間間隔中に、入力64上にイベント信号が到着する。プロット72に示されるように、第6の期間中に、入力66上にイベント信号が到着する。プロット74に示されるように、プリミティブは、第3の期間中に、その出力68にイベント信号を出力することによって、自身が受信した第1のイベント信号に応答する。プリミティブは、入力66上に到着する遅い方のイベント信号に応答してその出力68上に更なるイベント信号を送信することはない。
【0014】
図9は、フォークノードに関連付けられた信号フローを例示している。図は、プリミティブの、入力76並びに出力78及び80を示している。並べて示されるのは、3つのプロットである。プロット82は、入力76上を伝わる信号を示しており、プロット84は、出力78上を伝わる信号を示しており、プロット86は、出力80上を伝わる信号を示している。プロット82に示されるように、第2の時間間隔中に、入力76上にイベント
信号が到着する。プリミティブは、第3の期間中に、その出力78及び80の両方にイベント信号を出力することによって応答する。
【0015】
図10は、ジョインノードに関連付けられた信号フローを例示している。図は、プリミティブの、入力88及び90並びに出力92を示している。並べて示されるのは、3つのプロットである。プロット94は、入力88上を伝わる信号を示しており、プロット96は、入力90上を伝わる信号を示しており、プロット98は、出力92上を伝わる信号を示している。プロット94に示されるように、第2の時間間隔中に、入力88上にイベント信号が到着する。プロット96に示されるように、第6の期間中に、入力90上にイベント信号が到着する。プロット98に示されるように、プリミティブは、その入力88及び90のそれぞれがイベント信号を受信した後に初めて応答し、該応答は、第7の期間中における出力92上へのイベント信号の発信である。
【0016】
図7〜10の信号ベースの記述に共通する特徴は、いずれの場合も、特定の数のイベント信号が受信されるまで制御フローをブロックするプリミティブによってUMLアクティビティ図プリミティブが実装可能であることにある。したがって、
図11に示されるようにバリア102、すなわち、(それぞれ異なるソースからくる)適切な数のイベント信号100を受けた後に破られて、1つ以上のイベント信号105の(それぞれの対応する宛先への)発行を引き起こす何らかの命令104の実行をトリガするバリア102として、プリミティブを表すことが可能である。
【0017】
図12は、
図11で与えられた表現の簡易フォーマットを示しており、ここでは、バリアは、ブロック106によって表される。命令は、ブロック108によって表される。命令108の実行をトリガするためにバリア106に達しなければならないイベント信号の数は、ブロック110内の番号によって与えられる。この文書では、これ以降、UMLアクティビティ図プリミティブを表すための
図12に与えられた簡易表記をバリア−カウンタフォーマット(BCF:Barrier-counter format)と称し、命令が実施される前にバリアに達しなければならないイベント信号の数を示す番号をカウントダウン値と称する。なお、もし、カウントダウン値がゼロならば、引き続きイベント信号が受信されても何のアクションも生じないことに留意せよ。
【0018】
図13〜19は、UMLアクティビティ図においてBCFがどのように使用可能であるかを説明している。各UMLプリミティブは、BCF表現にマッピングする(対応付ける)ことができる。このマッピングは、高レベル表現から実装用表現に進むものであり、専用ソフトウェアコンパイラによって一般的に実施可能なタスクである。
【0019】
図13は、BCF要素を使用してUMLフォークプリミティブがどのように実装可能であるかを例示している。通常のUMLアクティビティ図ヴァージョンのプリミティブが図の左側にあり、BCFヴァージョンが図の右側にある。カウントダウン値は1に設定されており、バリア112が1つのイベント信号を受信した時点で命令114が実施される。命令114は、それぞれ異なる宛先に2つのイベント信号が発信されるように定めており、これにより例えば、2つの同時アクティビティがトリガされる。
【0020】
図14は、ジョインプリミティブを実装するためにBCFがどのように使用可能であるかを例示している。通常のUMLアクティビティ図ヴァージョンのプリミティブが図の左側にあり、BCFヴァージョンが図の右側にある。このときは、カウントダウン値は2に設定されており、バリア116が2つのイベント信号を受信した時点で命令118が実施される。命令118は、特定の宛先に1つのイベント信号が発信されるように定めている。
【0021】
図15は、
図14に示すBCFヴァージョンのジョインプリミティブが、特定の条件下でどのように誤動作しうるかを例示している。
図15は、BCFプリミティブの一方の入力120上で2つのイベント信号が受信され、もう一方の入力122上ではイベント信号が受信されない状況を示している。これは、例えば、イベント信号を定期的に送出するタイマに入力120が接続されている場合に生じることがある。このような状況では、BCFプリミティブ124は、ジョインプリミティブがそうすべきでないにもかかわらず、イベント信号を発信する。BCFプリミティブ124は、そのバリアに達するイベント信号が共通の発信元を有するかどうかを区別することができないゆえに誤動作する。
【0022】
図16は、
図15に提示された誤動作のシナリオを回避するために、
図14及び
図15に示されたジョインプリミティブがどのように変更可能であるかを例示している。
図16では、2つの更なるBCFプリミティブ126及び128が追加され、それぞれ、BCFプリミティブ124と、入力120及び122のうちの対応する一方との間に配されている。BCFプリミティブ126及び128が、それぞれカウントダウン値1を与えられている一方で、BCFプリミティブ124のカウントダウン値は、2のままである。この変更を適用されると、BCFプリミティブ124は、入力120及び122のそれぞれからイベント信号を受信した後に初めてイベント信号を発信し、これは、ジョインプリミティブの正しい振る舞いである。
【0023】
図17は、マージプリミティブを実装するためにBCFがどのように使用可能であるかを例示している。通常のUMLアクティビティ図ヴァージョンのプリミティブが図の左側にあり、BCFヴァージョンが図の右側にある。カウントダウン値は1に設定され、バリア132が1つのイベント信号を受信した時点で、プリミティブのどの入力が信号を伝えるかにかかわらず、命令130が実施される。
【0024】
図18は、デシジョンプリミティブを実装するためにBCFがどのように使用可能であるかを例示している。通常のUMLアクティビティ図ヴァージョンのプリミティブが図の左側にあり、BCFヴァージョンが図の右側にある。カウントダウン値は1に設定され、バリア136が1つのイベント信号を受信しただけの時点で命令134が実施される。命令134は、特定の宛先に1つのイベント信号が発信されるように定めており、その宛先は、命令134のなかで指定されるロジック条件の状態によって決定される。
【0025】
図19は、1つのロジック条件を用いて、2つ以上のデシジョンプリミティブインスタンスを制御可能であることを示すものである。
【0026】
図20は、マルチプロセッサコンピュータ138を示している。発明を説明するのに役立つ要素のみが示されており、コンピュータアーキテクチャ設計の分野の当業者ならば、コンピュータ138が実際は、
図20に示されるよりも多くの更なる構成要素及び要素間接続を含むことがわかるであろう。図に示されるように、コンピュータ138は、中央演算処理装置(CPU)140と、幾つかのベクトル信号プロセッサ142と、幾つかのDMAコントローラ144と、割り込みコントローラ146と、タイマ148と、メモリ150と、シーケンサ152とを含む。これらの要素は、互いに通信し合うことができるように、いずれも、バス154につながれている。更に、割り込みコントローラ146は、接続156によってCPU140にもつながれており、該接続を通じてCPUに割り込みを送信することができる。コンピュータ138のアーキテクチャは、例えば、DMAコントローラ144の数、ベクトル信号プロセッサ142の数、及びメモリ150の大きさがいずれも可変であり、更なるタイマが追加されてもよいという点で、スケーラブル(拡張可能)である。
【0027】
CPU140は、コンピュータのオペレーティングシステムを実行する。例えば、CP
U140は、ARM RISCプロセッサである。VSP142は、マルチコアであり、それらのコアは、単一命令複数データ(SIMD)フォーマットを有する超長命令語(VLIW)で動作するように設計されている。メモリ150は、コンピュータが処理するべき命令及びデータを記憶している。DMAコントローラ144は、転送プロセスを行うことによる負担をCPU140にかけずに、例えばVSP142が命令及びデータをメモリ150から読み出したりメモリ150に書き込んだりすることを可能にする。割り込みコントローラ146は、ユーザ入力などの外部イベントが処理される必要があるときにライン156を通じてCPU140に割り込みをかける役割を担っている。タイマ148は、定期的に信号を発信し、コンピュータ138のその他の要素は、タイマからの信号を動作の同期化をもたらすための時間基準として使用する。
【0028】
中央演算処理装置(CPU)140、ベクトル信号プロセッサ142、及びDMAコントローラ144は、いずれも、互いに並列に処理を行う能力を有し、以下ではコンピュータ138の処理要素と称する。この並列性は、VSP142のマルチコア性によって比較的高度に拡張され、それらのコアのVLIW及びSIMDの能力によってなおも更に拡張される。この比較的高度な並列性は、3GPP−LTE(第三世代携帯電話標準化プロジェクト−ロングタームエヴォリューション)規格やCDMA EV−DO(符号分割多重アクセス:エヴォリューション−データ最適化)規格などの計算集約的な無線電気通信モデムのソフトウェアにおける実行のような、集約的なデジタル信号処理アクティビティを行うのに役立つことを意味する。並列性の度合いを拡張するために、コンピュータ138は、バス154につながれた更なる処理要素を含むこともでき、これらは、多くの場合、ビタビ加速器、ターボ復号器、及びRFからベースバンドへのインターフェースのように、特定の信号処理アクティビティを実装するように設計される。
【0029】
シーケンサ152は、
図21に更に詳しく示されている。シーケンサ152は、処理コア158と、シーケンサ命令メモリ159と、包括的に160で示された幾つかのバリア−カウンタ要素(BCE)160と、イベントマッピングブロック161とを含む。
【0030】
BCE160は、それぞれ、包括的に162で示された経路のうちの対応する経路を通じて処理コア158と通信することができる。各BCE160は、包括的に164で示された経路の内の対応する経路を通じてイベントマッパ161と通信することができる。処理コア158及びイベントマッパ161は、それぞれ経路166及び167を通じてバス154につながれている。処理コア158は、その命令を、経路163を通じてシーケンサ命令メモリ159から取り出す。代替の設計では、シーケンサ命令メモリ159は、シーケンサ152の外部にあって、バス154を通じてアクセスされることが可能である。
【0031】
各BCE160は、対応するBCFプリミティブを実装するようにプログラムすることができる。イベントマッパ161は、パス167を通じて処理要素(例えばVSP142又はDMAコントローラ144)から受信されたアクティビティ終了ハードウェア信号をイベント信号に変換して、バス164を通じてBCE160に渡す。イベントマッパ161は、経路165を通じて処理コア158によってプログラムされる。この変換は、特定の処理要素からのアクティビティ終了信号が、UMLアクティビティ図のなかの当該処理要素が完了させたばかりのアクティビティに続くBCFプリミティブを実装する特定の一BCE160に送信されるイベント信号に変換されることを保証する。
【0032】
各BCE160は、同じ構造を有する。これについて、
図22に示される典型的なBCE168を参照にして説明する。典型的なBCE168の基本要素は、カウンタ170並びに2つのレジスタ172及び174である。レジスタ172は、典型的なBCE168が実装するべきBCFプリミティブのカウントダウン値を有している。レジスタ174は、メモリ150内におけるアドレスを有しており、そのアドレスから、処理コア158は
、典型的なBCE168が実装するべきBCFプリミティブの一部を構成する命令をフェッチすることができる。典型的なBCE168がイベント信号を受信するたびに、カウンタ170がデクリメントされる。カウンタ170がゼロに達すると、レジスタ174に含まれるアドレスが処理コア158内のレジスタ(不図示)に取り込まれる。
【0033】
処理コア158は、シーケンサ命令メモリ159のなかのレジスタ174から受信されたアドレスから開始する一連の命令を取り出して実施することによってこのイベントに反応するように設計される。これらの命令によって、処理コア158は、1つ以上の宛先のそれぞれに対して対応する信号を送信する。送信される信号の性質は、宛先の性質に依存する。
・もし、宛先が別のBCE160であるならば、信号は、その別のBCEのカウンタをデクリメントすることを意図されたイベント信号である。UMLアクティビティ図レベルでは、典型的なBCE168によって表されるBCFプリミティブが、(宛先BCEによって実装される)別のBCFプリミティブへのイベント信号を発行する。
・もし、宛先がコンピュータ138の処理要素の1つであるならば、信号は、指定の一連の命令を処理するためのコマンドである。UMLアクティビティ図レベルでは、典型的なBCE168によって表されるBCFプリミティブが、(指定の一連の命令を実施する指定の処理要素によって実施される)アクティビティの実行を引き起こす。
【0034】
これは、
図12に関連して与えられたBCFの定義からの僅かなずれを表している。なぜならば、その定義によると、BCFプリミティブが発行するのは、イベント信号であってコマンドではないからである。しかしながら、BCFはアクティビティ図においてプリミティブを表す代替方法であること、及びアクティビティ図においてアクティビティの開始はイベント信号によってトリガされることを忘れてはならない。これとは対照的に、コンピュータ138では、アクティビティは、処理要素の1つによって実施され、関係する処理要素には、当該アクティビティを実施するために必要な命令をその処理要素に実施させるコマンドが送信されなければならない。
【0035】
まとめると、処理コア158は、(UMLアクティビティ図プリミティブを実装する)BCE160にはイベント信号を、(UMLアクティビティ図アクティビティを実施するための)処理要素にはコマンドを送信する。UMLアクティビティ図プリミティブは、アクティビティから、そのアクティビティの完了を示すイベント信号を受信することができる。これに対応するために、コンピュータ138内の処理要素は、割り当てられたアクティビティの完了時に、対応する一BCE160にイベント信号を送信する。大半の処理要素は、ハードウェアによって生成されたアクティビティ終了信号をイベントマッパ161に送信し、該イベントマッパ161が、イベント信号をBCE160に送信する。
【0036】
シーケンサ152の実際の実装形態では、コンピュータ138内の処理要素ごとに、最少で2つ、最多でもしかすると総数一千に及ぶBCE160がある。
【0037】
特定の背景のなかで特定のUMLアクティビティ図プリミティブを実装するために典型的なBCE168がどのように使用可能であるかの5つの例が、以下で与えられる。
【0038】
第1の例として、典型的なBCE168が、
図1に示されたフォークプリミティブ10を実装するためのものであり、VSP#2がアクティビティ12を、DMAコントローラ#1がアクティビティ14を、CPUがアクティビティ16を実施すると想定する。フォークプリミティブのBCFヴァージョンは、
図13に示されている。したがって、レジスタ172内のカウントダウン値は、1に設定される。アクティビティ12の完了時に、VSP#2は、典型的なBCE168にイベント信号を送信し、カウンタは、ゼロにデクリメントされる。これにより、処理コア158に、レジスタ174内のアドレスによって指
定される一連の命令を実施させる。この一連の命令は、DMAコントローラ#1に対してアクティビティ14を開始するためのコマンド信号を送信し、割り込みコントローラ146に対してCPU140がアクティビティ16を開始することを要求するための別のコマンド信号を送信する。
【0039】
第2の例として、典型的なBCE168が、
図2に示されたジョインプリミティブ18を実装するためのものであり、
図14に示される簡易ヴァージョンのBCFジョインプリミティブの使用が適切であると想定する。また、DMAコントローラ#1がアクティビティ20を、CPU140がアクティビティ22を、VSP#2がアクティビティ24を実施すると想定する。したがって、ジョインプリミティブを実装するために、レジスタ172に記憶されている値は2である。CPU140がアクティビティ22を完了させる前に、DMAコントローラ#1がアクティビティ20を完了させると想定する。この状況では、DMAコントローラ#1は、典型的なBCE168にイベント信号を送信し、カウンタ170を1にデクリメントさせる。幾らか後に、CPU140がアクティビティ22を完了させ、典型的なBCE168にイベント信号を送信すると想定する。これにより、カウンタがゼロにデクリメントされ、処理コア158はレジスタ174内のアドレスによって指定された一連の命令を実施する。この一連の命令により、アクティビティ24を開始するためのコマンド信号がVSP#2に送信される。
【0040】
第3の例として、典型的なBCE168が、
図3に示されたデシジョンプリミティブ26を実装するためのものであり、VSP#2がアクティビティ28を、DMAコントローラ#1がアクティビティ30を、DMAコントローラ#2がアクティビティ32を実施すると想定する。デシジョンプリミティブのBCFヴァージョンは、
図18に示されている。したがって、デシジョンプリミティブを実装するために、レジスタ172に記憶されている値は1であり、レジスタ174に記憶されているアドレスは、処理コア158が一連の命令の始まりを見つけることができるメモリ150内の場所である。それら一連の命令によって、デシジョンプリミティブに関連付けられたロジック条件が評価され、該ロジック条件の状態にしたがって、アクティビティ30を開始させるためにDMAコントローラ#1に又はアクティビティ32を開始させるためにDMAコントローラ#2に、いずれか正しい方にコマンド信号が送信される。VSP#2は、アクティビティ28を完了するときに、典型的なBCE168にイベント信号を送信し、カウンタ170をゼロにデクリメントさせる。これにより、処理コア158がトリガされて、レジスタ174内のアドレスによって指定される一連の命令を実施し、その結果として、関連付けられたロジック条件の状態に応じてアクティビティ30又は32を開始する。
【0041】
第4の例として、典型的なBCE168が、
図4に示されたマージプリミティブ34を実装するためのものであり、VSP#1がアクティビティ36を、CPU140がアクティビティ38を、VSP#2がアクティビティ40を実施すると想定する。マージプリミティブのBCFヴァージョンは、
図17に示されている。したがって、レジスタ172内のカウントダウン値は、1に設定される。次に、VSP#1がアクティビティ36を完了させ、典型的なBCE168にイベント信号を送信するとする。このイベント信号の到着により、カウンタ170がゼロにデクリメントされ、これにより処理コア158がトリガされて、レジスタ174内のアドレスによって指定される一連の命令を実施する。この一連の命令により、VSP#2に対してコマンド信号を送信し、アクティビティ40を開始させる。その後は、アクティビティ38がいつ完了するか又はアクティビティ38が完了するかどうかは問題でなくなる。
【0042】
第5の例として、典型的なBCE168が、
図23に示されたフォークプリミティブ176を実装するためのものであり、VSP#2がアクティビティ178を、DMAコントローラ#1がアクティビティ180を、別のBCEが、最終的にアクティビティ184又
はアクティビティ186のいずれかを開始させるデシジョンプリミティブを実装すると想定する。フォークプリミティブのBCFヴァージョンは、
図13に示されている。したがって、レジスタ172内のカウントダウン値は、1に設定される。VSP#2が、アクティビティ178の完了時に、典型的なBCE168にイベント信号を送信すると、カウンタがゼロにデクリメントされて、これにより処理コア158がトリガされて、レジスタ174内のアドレスによって指定される一連の命令を実施する。これら一連の命令により、DMAコントローラ#1に対してアクティビティ180を開始させるためのコマンド信号が送信され、デシジョンプリミティブ182を実装する別のBCEに対してコマンド信号ではなくイベント信号が送信される。
【0043】
このように、BCEの振る舞いは、そのカウントダウン値と、BCEのカウンタがゼロにデクリメントされたときにトリガされる命令シーケンスとによって定められることが明らかである。BCEのカウントダウン値とその命令シーケンスとの組み合わせは、これ以降、BCEの「構成」と称する。BCEの構成は、UMLアクティビティ図内の特定の場所における特定のプリミティブの役割を全うするように設定することができる。
【0044】
UMLアクティビティ図への従来のアプローチでは、先ず、アナリストが、ソフトウェアで実装するために提案されたシステムを調査し、そのシステムを記述するUMLアクティビティ図を作成する必要がある。次いで、プログラマが、アナリストによって提供されたUML記述をもとに作業し、ソフトウェアを実行する予定の特定のコンピューティングハードウェアアーキテクチャの制約にしたがいながら、システムを実装するソフトウェアを作成する必要がある。ところが、シーケンサ152を使用することにより、UMLアクティビティ図から直接、アクティビティ図を実装するソフトウェアを作成することが可能となる。これは、UMLアクティビティ図のなかの各アクティビティにソフトウェアコードブロックを提供し、UMLアクティビティ図の各プリミティブを、適切な構成を与えられたBCEによって実装される対応するBCEプリミティブに変換することによって達成される。
【0045】
UMLアクティビティ図は、通常は、XMI(XML(拡張マークアップ言語)メタデータ交換)フォーマットで作成される。
図24は、シーケンサ152によって実行可能でありXMIフォーマットUMLアクティビティ図で記述されるシステムを実装するためのソフトウェアパッケージを自動的に作成するソフトウェアツールを説明したフローチャートである。ツールは、例えば、VSP142の数、DMAコントローラ144の数、メモリ150の大きさ、各種要素の処理速度、各種要素の電力消費などの、コンピュータ138のアーキテクチャに関する知識を与えられる。ツールは、また、ソフトウェアブロックのライブラリも提供され、これらのブロックは、それぞれ、XMI UMLアクティビティ図のアクティビティの1つを実施するために処理要素の1つによって実行されるためのものである。ツールは、また、ソフトウェアブロックがそれらに対応する処理要素上での実行にどれだけの時間がかかるかを示す表示も提供される。
【0046】
ステップS1では、XMIフォーマットUMLアクティビティ図が提供される。ステップS2では、ツールは、XMIフォーマットUMLアクティビティ図内のプリミティブを識別する。ステップS3では、ツールは、それが識別したプリミティブ用の個々のBCE構成を作成する。ステップS4では、ツールは、アクティビティ図の各アクティビティについてライブラリを検索し、そのアクティビティを実施するために処理要素の1つによって実行可能なソフトウェアブロックを識別する。導出されたひとそろいのBCE構成及び選択されたひとそろいのソフトウェアブロックは、コンピュータ138の電力消費について指定されたあらゆる制約と、XMI UMLアクティビティ図によって表されるシステムの一部を実施するためにコンピュータが費やす時間の長さとを考慮に入れることによってツールがたどり着くものである。ステップS5では、ツールは、BCE構成及び識別さ
れたソフトウェアブロックを、XMIフォーマットUMLアクティビティ図によって記述されるシステムを実装するためにシーケンサ152によって実行可能なソフトウェアパッケージとして送る。
【0047】
シーケンサ152は、ステップS3において決定された構成にしたがってBCEを構成し、BCEが必要に応じて処理要素に対してステップS4で識別されたソフトウェアブロックを実行するように命じるようにすることで、XMI UMLアクティビティ図によって記述されるシステムをソフトウェアにより実装することができる。
【0048】
ソフトウェアツールは、もし必要であれば、以下の特徴のうちの1つ以上も含めることによって強化することができる。
・ツールは、対象アーキテクチャの処理要素が対象システムのアクティビティ以外の追加プロセスを実行可能であるかどうかを評価してもよい。ツールは、処理要素が現UMLアクティビティ図用の「スレッド」を実行する能力のみを有するのではなく、更なるUMLアクティビティ図を実装するソフトウェアに対応する1つ以上の追加スレッドも実行する能力を有すると判断することもある。その場合は、ソフトウェアツールを、処理要素上での複数のスレッドのスケジューリングを再編成するに構成し、仮想化方式を実装するように構成してもよい。
・ツールは、作成されたソフトウェア内にアクティビティの開始地点及び終了地点にブレークポイントを含めるように構成することができる。すると、これらのブレークポイントは、アクティビティ図のグラフィカルユーザインターフェース(GUI)表示で示すことができ、そして、ソフトウェアのパフォーマンスをアクティビティ図のレベルで評価できる。
【0049】
マルチプロセッサシステ設計の分野の当業者にならば、発明の範囲から逸脱することなく上述の技術に対して様々な変更が可能であることが明らかであろう。例えば、BCE160は、処理コア158を通じてコードの実行をトリガするためにプログラム可能な値からゼロにカウントダウンするものとして説明された。代替の実装形態では、しかしながら、BCE160は、コード実行をトリガするために何らかのプログラム可能な値に達するまでゼロからカウントアップするように構成することもできる。
【0050】
並列に動作可能な処理要素グループの動作を指示するシーケンサ152の概念は、様々に異なる目的を意図されたコンピュータに使用することができる。例えば、この概念は、3GPP LTE規格やCDMA EV−DO規格などをもとにしたソフトウェア無線通信モデムでの実装を意図されたコンピュータに使用することができる。
【0051】
現代の携帯電話端末は、ほぼ例外なく、幾つかのモードで動作することを求められる。例えば、GSM及び3Gの両方のスペクトルを割り当てられ、第三世代携帯電話標準化プロジェクト(3GPP)によって定められた標準規格群にしたがってネットワークを動作させるオペレータは、優れたスペクトル効率を得ることによって動作費用を最小限に抑えるために受信可能エリアでは電話端末が3Gインフラを使用することを好むが、3Gネットワークの受信が不可能であったり混雑していたりするエリアでは(通話中も「アイドルモード」にあるときもいずれも)電話端末がシームレスにGSMで動作することを好む。一部の市場では、ユーザは、2つのネットワークの顧客であることが一般的であり、両方のネットワークに同時に「常駐」し、したがって通話の受信及び発信又はデータの送信及び受信をいずれのネットワークでも行える「二重モード」電話端末を必要とする。このような電話端末は、基本的に非同期な2つのインターフェース上で動作しなければならない。最後の例は、最新の「スマートフォン」であり、セルラ方式の無線インターフェース(それ自体が恐らくは二重モード3G/GSMであろう)も使用しつつ、IEEEによって定められたWiFi規格を使用して無線LANで同時に通信する能力も有する。費用及び
電力消費を抑えるためには、無線電話端末で使用されるハードウェアの量を最小限に抑えることが望まれ、したがって、SDRの実装形態では、複数の非同期な規格に対して共通の処理プラットフォームを使用することが好まれる。このような能力が提供されたら、今度は、例えば、販売された後、異なる規格が使用されている地域にユーザがローミングしたときに新しいソフトウェアをダウンロードすることによって製造後にデバイスを更新可能であること、及びこれをデバイス内でシームレスに実行可能であることも望まれる。
【0052】
したがって、相互作用を考慮する必要がない異なるプロトコルを、共通の処理プラットフォーム上の独立したソフトウェアインスタンスを使用して処理する場合に、これらのプロトコルを非同期動作させることが望ましい。