(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6104671
(24)【登録日】2017年3月10日
(45)【発行日】2017年3月29日
(54)【発明の名称】マルチプロセッサシステム、装置、及び方法
(51)【国際特許分類】
G06F 11/07 20060101AFI20170316BHJP
【FI】
G06F11/07 181
G06F11/07 140J
G06F11/07 140T
【請求項の数】14
【外国語出願】
【全頁数】10
(21)【出願番号】特願2013-72004(P2013-72004)
(22)【出願日】2013年3月29日
(65)【公開番号】特開2013-218680(P2013-218680A)
(43)【公開日】2013年10月24日
【審査請求日】2016年3月28日
(31)【優先権主張番号】1205737.8
(32)【優先日】2012年3月30日
(33)【優先権主張国】GB
(73)【特許権者】
【識別番号】510145967
【氏名又は名称】ウー−ブロックス アクチェンゲゼルシャフト
(74)【代理人】
【識別番号】100100549
【弁理士】
【氏名又は名称】川口 嘉之
(74)【代理人】
【識別番号】100123098
【弁理士】
【氏名又は名称】今堀 克彦
(72)【発明者】
【氏名】ウィガン エルクト
(72)【発明者】
【氏名】ティンダル ポール
【審査官】
多胡 滋
(56)【参考文献】
【文献】
特開平06−231007(JP,A)
【文献】
米国特許出願公開第2012/0023317(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/07
(57)【特許請求の範囲】
【請求項1】
複数の処理要素と、前記処理要素のそれぞれがアクセス可能なメモリと、前記複数の処理要素によって実行される一連のコードを生成するように構成されたシーケンサとを含むシステムにおける方法であって、
前記一連のコードの実行中に、当該一連のコードをさらに実行する場合に適用すべきメモリアクセスルールを示す複数の信号を受信するステップと、
前記場合において、前記複数の処理要素によるメモリアクセスに対して前記メモリアクセスルールを適用するステップと、
処理要素によるメモリアクセスが前記ルールの1つ以上に違反しているときに、警告信号を生成するステップと、
を含む方法。
【請求項2】
前記複数の信号は、1つ以上のメモリアドレスと、当該1つ以上のメモリアドレスにおいて予期されるデータ内容とを示す1つ以上の信号を含む、
請求項1に記載の方法。
【請求項3】
前記複数の信号は、特定のメモリアドレスと、前記特定のメモリアドレスにアクセスすることが予期される処理要素とを示す1つ以上の信号を含む、
請求項1又は2に記載の方法。
【請求項4】
前記警告信号の生成の際に、前記1つ以上のルール違反の結果に対処するための処理を行うステップ、
をさらに含む、請求項1から3のいずれか1項に記載の方法。
【請求項5】
前記処理は、
前記一連のコードの一部又は全部の実行の中断、
前記違反前のメモリアクセスのトレースデータの出力、
例外対処ルーチンのトリガ、
の1つ以上を含む、
請求項4に記載の方法。
【請求項6】
処理要素によるメモリアクセスが、当該処理要素によるアクセスが制限されているメモリアドレスを指定している場合に、違反が発生したとみなす、
請求項1から5のいずれか1項に記載の方法。
【請求項7】
メモリアクセスが、読み出し専用メモリアドレスへの書き込み動作を指定している場合に、違反が発生したとみなす、
請求項1から6のいずれか1項に記載の方法。
【請求項8】
メモリアクセスが、前記メモリアクセスルールの1つに指定された値と異なるデータ値を指定している場合に、違反が発生したとみなす、
請求項1から7のいずれか1項に記載の方法。
【請求項9】
前記メモリに接続された1つ以上のバス上のメモリアクセスを検出するステップ
をさらに含む、請求項1から8のいずれか1項に記載の方法。
【請求項10】
前記複数の信号は、前記シーケンサから受信される、
請求項1から9のいずれか1項に記載の方法。
【請求項11】
前記複数の信号は、前記一連のコードの実行の進行に伴って前記メモリアクセスルールを動的にアップデートする、
請求項10に記載の方法。
【請求項12】
デバッグを目的として提供されるトレースデータ取得回路上で実施される、
請求項1から11のいずれか1項に記載の方法。
【請求項13】
マルチプロセッサシステムにおいて使用されるハードウェア要素であって、
請求項1から12のいずれか1項に記載の方法を実施するように構成された、
ハードウェア要素。
【請求項14】
複数の処理要素と、
前記処理要素のそれぞれがアクセス可能であるメモリと、
前記複数の処理要素によって実行される一連のコードを生成するように構成されたシーケンサと、
請求項13に記載のハードウェア要素と、
を備えるマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マルチプロセッサシステムにおける方法及び装置に関するものである。
【背景技術】
【0002】
本出願人による先の出願(GB2482141A)は、計算がハードリアルタイム制約を満たさなければならないような、複数のプロセッサ又は処理要素を伴うシステムにおけるタスクの実行を制御するシステム及び方法を記載している。これは、無線物理層の設計を記述するために例えば統一モデリング言語(UML)のようなアプリケーションモデリングの使用について記載している。
【0003】
上記の出願には、シーケンスプロセッサ、すなわちUMLのプリミティブを実装する命令セットを有するプログラム可能プロセッサで構成される装置が記載されている。シーケンスプロセッサは、UMLに定められた一連の動作を表わすコードによってプログラム可能であり、様々な処理要素における動作をトリガするための制御信号を生成する。タスクの完了を示す処理要素からの信号は、更に、その後のタスクの実行を制御するために、制御プリミティブとともに使用される。上記システムは、また、システムクロックによって生成されるタイムイベントをトリガ信号として利用することも許容しており、これによりハードリアルタイム制約をシステムに適用することができる。上記記載の装置及びシステムの利点は、複数のプロセッサにおけるタスク実行が、非常に効果的に制御可能であること、及び更に、UMLに定められた一連のタスクが、シーケンスプロセッサの動作を制御するために自動的にマイクロコードにコンパイル可能であることである。
【0004】
このように、モデリングツールは専用のハードウェアシーケンスプロセッサをターゲットとするモデルからコードを生成する。このハードウェアシーケンスプロセッサは、プロセッサ上で実行されるタスク(及び実際は専用ハードウェアブロック上で動作するタスク/機能)がそれらのデッドラインや制御依存性及びデータ依存性を満たすことを保証する。
【0005】
マルチプロセッサシステムでは、メモリへのアクセスは、多くの処理要素が種々のタイミングでメモリにアクセス可能であるので複雑である。もしメモリが、(サイズを最小にするために)頻繁に再利用もされるならば、システムのデバッグ及び検証は、極めて困難である。
【0006】
また、使用中にロードおよびアップデートされるソフトウェア中で定義された複数の無線インタフェースモードをサポートする必要がある将来の携帯電話機において必要とされるモデムでは、ソフトウェアによるメモリアクセスに予期せぬ相互作用があり動作不具合を招くことがあり、システムは、この不具合を自動的に回復する必要がある。
【0007】
したがって、開発/デバッグ段階および通常動作のいずれでもマルチプロセッサシステムにおけるメモリアクセスの問題を識別及び管理することができるシステムが望まれている。
【発明の概要】
【0008】
本発明の第1の態様にしたがうと、添付の特許請求の範囲に示されるような、マルチプロセッサシステムにおけるメモリアクセスを監視する方法が提供される。
【0009】
本発明の更なる態様にしたがうと、第1の態様にしたがった方法を実行するように構成
されたハードウェア要素(メモリウォッチユニットとも称する)と、そのようなハードウェア要素、複数の処理要素、各処理要素がアクセス可能であるメモリ、及び複数の処理要素によって実行される一連のコードを生成するように構成されたシーケンサを含むマルチプロセッサシステムとが開示される。
【図面の簡単な説明】
【0010】
本発明の更なる理解のために、そして本発明がどのように実行に移されるかを更に明瞭に示すために、例として、以下の図面が参照される。
【0011】
【
図1】本発明の実施形態にしたがったマルチプロセッサシステムを示した概略図である。
【
図2】
図1に示されたシステム用のコードを生成するプロセスフローを示した概略図である。
【発明を実施するための形態】
【0012】
図1は、本発明の実施形態にしたがったマルチプロセッサシステム10を示した概略図である。
【0013】
システム10は、複数の処理要素1〜n 12を含む(ここで、nは2以上の正の整数である)。例示の実施形態は、3つの処理要素12を示しているが、システム10は、2つの処理要素しか含まなくてもよい。
【0014】
処理要素12は、任意のプロセッサや専用プロセッサを含むことができる。例えば、複数の処理要素12は、データアレイ中の各要素に対する行列−ベクトル算術演算を同一プロセッササイクル内で実行する能力を有するベクトル信号プロセッサ、ダイレクトメモリアクセスやターボ復号などの単一種類の動作専用のハードウェアブロック、中央演算処理装置(CPU)、又はその他の様々なタイプの処理ブロックの1つのうちの、1つ以上を含むことができる。
【0015】
システム10は、更に、システムクロックを提供するタイマ14と、制御プロセッサ15と、シーケンスプロセッサ16とを含む。処理要素12、タイマ14、制御プロセッサ15、及びシーケンスプロセッサ16は、全て、システムバスすなわち相互接続18を介して相互に接続されている。
【0016】
シーケンスプロセッサ16は、UMLのプリミティブを実装する命令セットを有するプログラム可能プロセッサである。シーケンスプロセッサ16は、UMLに定められた一連の動作を表わすコードによってプログラム可能であり、様々な処理要素12における動作をトリガするための信号(アクション呼び出し(Action Invocation)とも称する)を生
成する。タスク完了を示す処理要素からの信号(アクション通知(Action Indication)
とも称する)は、更に、その後のタスクの実行を制御するために、制御プリミティブとともに使用される。このように、UMLに定められた一連のタスクは、シーケンスプロセッサ16の動作を制御するために自動的にマイクロコードにコンパイル可能である。このマイクロコードは、処理要素12における動作をトリガするためのアクション呼び出し(AI)を生成する。
【0017】
各AIは、以下のいずれかまたは全てを含むメッセージである。(1)必要とされる処理要素のタイプ、メモリ要求、所要電力若しくは電流要求などの、アクションを実行するために必要とされるリソースの定義。(2)必要とされる処理要素がプリエンプト可能であるかどうかの指示。(3)処理要素をプログラムするためのコード(必要であれば)へのポインタ。(4)入力データバッファ及び出力データバッファへのポインタ。(5)デ
ータ依存性がある場合にアクションを実施するために必要とされる最小および最大の実行サイクル数に関するデータ。(6)アクションの優先度の定義。(7)最早開始時間または最遅終了時間の定義(すなわち、アクションがそれより前に始まってはならない時間や、そのときまでに完了されなければならないという時間)。(8)アクションの完了の際に制御が返される先となるべき一連の動作内における位置の定義。
【0018】
処理要素12及びシーケンスプロセッサ16のそれぞれがアクセス可能であるメモリ20が提供される。メモリ20は、オンチップメモリ、オフチップメモリ、又はそれら2つの組み合わせであってよい。メモリ20は、1つのバンクとして提供することができるが、より一般的には、システム10周辺の様々な場所に配置された複数のバンクを含むことが予期される。メモリ20は、メモリバス21を通じて、又はメモリアドレスバスやメモリデータバスや1つ以上の制御ラインなどの複数のバスを通じてシステム10のその他の要素に接続することができる。
【0019】
本発明の実施形態にしたがうと、システムは、更に、メモリウォッチユニット22を含む。メモリウォッチユニット22は、専用のハードウェア要素であり、メモリ20と同じ相互接続又はバス21に接続される。これは、
図1に例示された実施形態におけるような専用のメモリバスでもよいし、より汎用のシステム相互接続18であってよい。メモリウォッチユニット22は、したがって、処理要素12及び/又はシーケンスプロセッサ16によってなされる各メモリアクセスを監視することができる。メモリウォッチユニット22の動作の更なる詳細は、以下で提供される。
【0020】
図2は、上述されたマルチプロセッサシステム10などのようなマルチプロセッサシステムのモデルを設計プロセスにおいて作成する技術を示した概略図である。このようなシステムの一具体例は、GB2482141Aに記載されるような、モデム物理層のソフトウェアインスタンス化である。このモデルは、設計上の様々な関心事(concerns)(例えば電力、パフォーマンス、エリアなど)を表現及び可視化することを可能にし、また、マルチプロセッサシステムを制御するためのコードが生成される前にこのモデルの解析を行うことを可能にする。これらの設計上の関心事(及びその他)は互いに独立したものではないが、設計者にとっての複雑性を少なからず軽減するために、これらを表現及び可視化する際には分離することが有用である。プロセスの解析段階では、関心事を相互に結び付け、あわせて解析することができる。このステージでは、コード生成段階に影響を及ぼすことができるように、ポリシーを定めることができる。
【0021】
メモリ101に関する関心事や制約、又はその他の関心事102は、(UML又はその他の任意の適切なモデリング言語を使用して表現されうる)モデル103に表現される。GB2482141Aに記載されるように、モデル103の主目的は、システムの複数の処理要素によって実行されるタスク間の依存性を表現することである。
【0022】
モデルに記述された振る舞いを使用して、メモリ使用状況(memory usage)が生成される(104)。メモリ使用状況は、モデル内にバッファを作成しそれらのバッファをプロセッサ上で実行されるタスクに付して、制御フロー及びデータフローを作成することによってモデル化することができる。システム内のどこからメモリが割り当て可能であるかやそのアラインメントタイプなどの、メモリの属性を記述するための更なる注釈をモデルに付けることができる。また、バッファの予想寿命を記述するための注釈をバッファに付け、コード実行の進行に伴ってメモリがその他の用途のためにリサイクルできるようにすることも可能だと考えられる。モデルは、したがって、メモリ割り当て、メモリアドレス、データフロー(すなわち、どのプロセスがいつ何にアクセスしているか)、及びメモリ寿命などの、全ての重要な様相に関する知識を有する。
【0023】
メモリ使用状況は、可視化ツールを通じて表示することができ(105)、これは、メモリが使用時にどのようにレイアウトされるかを設計者に対して提示するための視覚的な補助となる。
【0024】
異なる様相間の相互作用に関する「相互関心事(cross-concerns)」の解析(106)及びシステムの最適化を可能にするために、ポリシー107を適用することができる。ポリシーは、例えば、可能な限りアクセスを1つのメモリバンクに制限し、その他のバンクをオフに切り替え可能にするというものであってよい。この例のポリシーは、電力の節約を優先している。この場合、開発ツールは、1つのメモリサブシステムを使用されていないと推測し、そのサブシステムをオフにするためのコードを生成することができる。別の例では、ポリシーは、アクセス速度を優先して、オフチップメモリに優先してオンチップメモリを使用するためのコードを生成することができる。更に別の例では、ポリシーは、パフォーマンスを優先して、したがって、複数の処理要素がメモリサブシステムに並列にアクセスできるように、幾つかのメモリサブシステムにわたってメモリの割り当てが分散される。しかしながら、本発明は、いかなる特定のポリシーにも限定されない。
【0025】
次いで、ステップ106で行われた解析に基づいて、システム内の様々なプロセッサ用のコードが生成される(108)。コード生成段階中、メモリは、静的に割り当ててもよいし(すなわち、割り当てが設計時になされるように管理する)、動的に割り当ててもよい(すなわち、(ターゲットとされるオペレーティングシステムによって提供される)メモリ割り当てAPIにアクセスするためのコードが生成される)、あるいは、静的割り当てと動的割り当てとを組み合わせてもよい。一実施形態では、制御プロセッサ15は、オペレーティングシステムと、そしてメモリ割り当てAPIとも通信するが、その他の実施形態では、どの処理要素12も、メモリ割り当てAPIと直接的に通信することができる。
【0026】
生成されるコードは、シーケンスプロセッサ16用のターゲットコード109と、メモリウォッチリスト110とを含む。ターゲットコードは、シーケンスプロセッサ16による制御下で複数の処理要素によって行われるプログラム又はアクションリストを含む。
【0027】
シーケンスプロセッサ16及びその他のシステム要素のためのコードがひとたび生成されて実行されると、与えられたメモリ20領域が関連のない異なるプロセスに割り当てられるという予期せぬ振る舞いが発生する恐れがある。これは、プログラマによる間違いのためであるか、シーケンスプロセッサ16が、非関連で恐らくは非同期のプロトコルからのコードを実行するためだと考えられる。このような振る舞いは、追跡するのが非常に難しく、特に、それが開発段階ではなくその後製品が実用展開されるときに発生する場合に顕著だと考えられる。
【0028】
シーケンスプロセッサ16は、こうして、
図2に概略を示されたフローで生成されるプログラム又はアクションリストを提供され、そこから、処理要素12に送信されるべき上述のアクション呼び出しが生成される。やはり
図2のフローを通じて生成されるのは、メモリウォッチリスト110であり、これは、システム動作の様々な時点におけるメモリアドレス、メモリデータ内容、及びメモリ制御信号(例えば読み出し信号又は書き込み信号)のセットを含む。このメモリウォッチリストは、メモリウォッチユニット22をプログラムするために、メモリ20へのアクセスに関する1つ以上のルールとともに、シーケンスプロセッサ16によって使用される。
【0029】
このように、シーケンスプロセッサ16は、プログラム実行の進行に伴って、複数の信号を提供してメモリウォッチユニット22を動的にプログラムする。例えば、処理要素によるタスクの完了の際に、新しいルールを定めたり古いルールを変更したりすることがで
きる。これらの信号は、メモリアドレスと、メモリ位置のデータ内容と、処理要素12を制御する一連のコードの実行中の様々な時点で発生することが予期されたり発生すべきなかったりするメモリ制御信号とを含むことができる。
【0030】
メモリウォッチユニット22は、バス21(多岐にわたるバス及び/又は実際はその他の相互接続であるかもしれない)を通じてメモリ20につながれ、そうして、処理要素によってなされるメモリアクセスを検出することやメモリウォッチリスト110に指定されたルールを適用することができる。もし、1つ以上のルールが違反されたならば、後述されるように、警告信号を生成することができる。
【0031】
例えば、1つのメモリアドレス又は1つのメモリアドレスグループへのアクセスを制限するルールを適用するようにプログラムすることができる。したがって、メモリウォッチユニット22は、メモリアクセスにおいて指定されたアドレスを検出し、もし、そのアドレスが制限アドレスリストのなかのアドレスに一致するならば、そのメモリアクセスを、ルールに違反するものとしてフラグ付けする。アドレスの1つ又は2つ以上の最上位ビットのみを解析することによって、1つのアドレスグループ内の任意のアドレスへのアクセスを検出することができる。更に、アドレスは、特定のタイプの処理要素によるアクセスのみに制限することも可能である。したがって、もし、メモリアクセスが、そのアドレスへのアクセスが許可された第1のタイプの処理要素から生じたものであれば、そのメモリアクセスは許可され、もし、そのメモリアクセスが、そのアドレスへのアクセスが禁止された第2のタイプの処理要素から生じたものであれば、そのメモリアクセスはルールに違反するものと見なすことができる。
【0032】
別の実施形態では、特定のアドレスへのメモリアクセスが、もしそれが特定のタイプである場合に制限されるような、ルールを適用することができる。例えば、メモリ制御ラインは、アクセスが読み出し動作であるか又は書き込み動作であるかを示すことができる。特定のアドレスは、読み出し専用として指定されてよく、したがって、それらのアドレスへの書き込み動作はメモリアクセスルールに違反するものと見なすことができる。
【0033】
更なる実施形態では、メモリウォッチユニット22は、メモリアクセスに指定されたメモリ場所におけるデータを監視することによって、ルールを実装することができる。例えば、ルールは、特定のメモリアドレスにおけるデータが特定の値をとることを指定することができる。この値は、システムが正しく機能するために必要とされる制御値、又はシステムが正しく機能しているかどうかをテストする(メモリを上書きする不正プログラムを防ぐ技術)ために使用される任意の値であってよい。もし、メモリアクセスが、メモリアドレスに異なる値を書き込んだりメモリアドレスから異なる値を読み出したりする場合は、ルールが違反されたと見なすことができる。
【0034】
これらのルールを実装するために、メモリウォッチユニット22は、データ、アドレス、発信元の処理要素、及び/又はメモリアクセスタイプを、メモリウォッチリスト110に指定されたルールを違反すると考えられるこれらのパラメータの値と比較するための、複数の比較器を含むことができる。メモリウォッチユニット22は、論理的に組み合わされて複雑なトリガを与えることができる1つ以上のバンクの比較器を含むことができる。
【0035】
メモリウォッチユニット22は、メモリアクセスがルールの1つを違反したことを見つけた(例えば制限アドレスに一致するメモリアクセスを比較器が検出した)場合に、システム10において様々な形で使用することができる警告信号(メモリ違反トリガとも呼ばれる)を生成することができる。
【0036】
例えば、警告信号は、ブレークポイントモジュールに適用されてよく、該モジュールは
、システム「デバッグ」段階中にソフトウェア実行を「停止(break)」して、外部シス
テムにトレースデータを出力することで、プログラマが問題を見つけることを可能にする。更なる実施形態では、警告信号を、割り込みコントローラに送って、(制御プロセッサに送られるであろう)システム割り込みを生成してもよいし、シーケンスプロセッサ16に送って例外処理ルーチンをトリガしてメモリ違反に対応してもよい。
【0037】
本発明の実施形態にしたがうと、メモリウォッチユニット22は、開発中のデバッグを目的として提供される既存のトレース(追跡)モジュールの形で実装することができる。すなわち、例えばARM Limitedによるプロセッサおよびバス技術に基づくものなどの、多くの埋め込みシステムでは、トレースモジュール(Trace Module)と呼ばれるIPブロックがあることが多い。ARM技術では、これは、「システムトレースモジュール」(STM)あるいは「拡張トレースモジュール」(ETM)であるかもしれない。これらのIPブロックは、通常、外部デバッガによってプログラム可能な比較器のセットを有しており、一連の条件と比較してシステムブレークポイントを発生させる(すなわち、ソフトウェア実行を中断して、ブレークポイントに至ったトレースデータをプログラムが検査可能とする)。通常、トレースモジュールは、IEEE 1149.1規格テストアクセスポートおよびバウンダリスキャンアーキテクチャに則ったJTAGポートを通じて外部デバッグシステムからプログラムされる。最新の埋め込みシステム設計の重要な様相は、このようなトレースハードウェアが当然のものとして組み込まれる一方で、プログラムされた制御下ではそれがオフにされることによって電力消費が最小限に抑えられることである。すなわち、トレースハードウェアは、JTAGポート上の信号を通じて有効にされ、このポートを通じてARM D−Stream JTAGインターフェースモジュールやDS5トレース・デバッグソフトウェアなどの付属の監視システムにトレース情報を通信する。開発が完了したら、ハードウェアはオフにされる。
【0038】
本発明の実施形態にしたがうと、この既存のトレース回路は、システム10自体によって内部からアクセス可能であるように適応させることができる。例えば、トレース回路の入力及び出力をシステム相互接続18に送ることができ、これにより、その回路を、通常使用されているJTAGポートへアクセス可能とするのに加えて、シーケンスプロセッサ16に対してアクセス可能とする。このようにして、トレース回路は、シーケンスプロセッサ16によって、又はメモリウォッチリスト110に定められたルールを実現するように適応されたその他の任意のハードウェア要素によってプログラムすることができる。トレース回路は、こうして、メモリウォッチユニット22に必要とされる機能を実施するように適応させることができ、本発明の機能性は、システム10に必要とされるハードウェアの量の増加を基本的に伴うことなく提供することができる。
【0039】
本発明の実施形態は、したがって、メモリアクセスに関する一連のルールが作成されてハードウェア要素のなかで実現されるマルチプロセッサシステムにおける方法及び装置を提供する。これらのルールは、複数の処理要素によって実施されるタスクの完了に続いて、例えば、それらの処理要素を制御するために使用されるシーケンスプロセッサ(又はシーケンサ)16によって動的にアップデートすることができる。
【0040】
当業者ならば、添付の特許請求の範囲に定められる発明の範囲から逸脱することなく上述の実施形態に対して様々な変更及び置き換えが可能であることがわかる。