(57)【要約】      （修正有）【課題】マルチプロセッサシステムにおけるメモリアクセスの問題を識別する。【解決手段】システム１０は、任意のプロセッサや専用プロセッサなどの複数の処理要素１２とシーケンスプロセッサ１６を含む。メモリウォッチユニット２２は、処理要素及び／又はシーケンスプロセッサにおける一連のコードの実行中に、当該一連のコードをさらに実行する場合に適用すべきメモリアクセスルールを示す複数の信号を受信し、メモリアクセスに対して前記メモリアクセスルールを適用し、メモリアクセスが前記ルールの１つ以上に違反しているときに、警告信号を生成する。【選択図】図１
2013218680.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理要素と、前記処理要素のそれぞれがアクセス可能なメモリと、前記複数の処理要素によって実行される一連のコードを生成するように構成されたシーケンサとを含むシステムにおける方法であって、
前記一連のコードの実行中に、当該一連のコードをさらに実行する場合に適用すべきメモリアクセスルールを示す複数の信号を受信するステップと、
前記場合において、前記複数の処理要素によるメモリアクセスに対して前記メモリアクセスルールを適用するステップと、
処理要素によるメモリアクセスが前記ルールの１つ以上に違反しているときに、警告信号を生成するステップと、
を含む方法。
【請求項２】
前記複数の信号は、１つ以上のメモリアドレスと、当該１つ以上のメモリアドレスにおいて予期されるデータ内容とを示す１つ以上の信号を含む、
請求項１に記載の方法。
【請求項３】
前記複数の信号は、特定のメモリアドレスと、前記特定のメモリアドレスにアクセスすることが予期される処理要素とを示す１つ以上の信号を含む、
請求項１又は２に記載の方法。
【請求項４】
前記警告信号の生成の際に、前記１つ以上のルール違反の結果に対処するための処理を行うステップ、
をさらに含む、請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記処理は、
前記一連のコードの一部又は全部の実行の中断、
前記違反前のメモリアクセスのトレースデータの出力、
例外対処ルーチンのトリガ、
の１つ以上を含む、
請求項４に記載の方法。
【請求項６】
処理要素によるメモリアクセスが、当該処理要素によるアクセスが制限されているメモリアドレスを指定している場合に、違反が発生したとみなす、
請求項１から５のいずれか１項に記載の方法。
【請求項７】
メモリアクセスが、読み出し専用メモリアドレスへの書き込み動作を指定している場合に、違反が発生したとみなす、
請求項１から６のいずれか１項に記載の方法。
【請求項８】
メモリアクセスが、前記メモリアクセスルールの１つに指定された値と異なるデータ値を指定している場合に、違反が発生したとみなす、
請求項１から７のいずれか１項に記載の方法。
【請求項９】
前記メモリに接続された１つ以上のバス上のメモリアクセスを検出するステップ
をさらに含む、請求項１から８のいずれか１項に記載の方法。
【請求項１０】
前記複数の信号は、前記シーケンサから受信される、
請求項１から９のいずれか１項に記載の方法。
【請求項１１】
前記複数の信号は、前記一連のコードの実行の進行に伴って前記メモリアクセスルールを動的にアップデートする、
請求項１０に記載の方法。
【請求項１２】
デバッグを目的として提供されるトレースデータ取得回路上で実施される、
請求項１から１１のいずれか１項に記載の方法。
【請求項１３】
マルチプロセッサシステムにおいて使用されるハードウェア要素であって、
請求項１から１２のいずれか１項に記載の方法を実施するように構成された、
ハードウェア要素。
【請求項１４】
複数の処理要素と、
前記処理要素のそれぞれがアクセス可能であるメモリと、
前記複数の処理要素によって実行される一連のコードを生成するように構成されたシーケンサと、
請求項１３に記載のハードウェア要素と、
を備えるマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムにおける方法及び装置に関するものである。
【背景技術】
【０００２】
本出願人による先の出願（ＧＢ２４８２１４１Ａ）は、計算がハードリアルタイム制約を満たさなければならないような、複数のプロセッサ又は処理要素を伴うシステムにおけるタスクの実行を制御するシステム及び方法を記載している。これは、無線物理層の設計を記述するために例えば統一モデリング言語（ＵＭＬ）のようなアプリケーションモデリングの使用について記載している。
【０００３】
上記の出願には、シーケンスプロセッサ、すなわちＵＭＬのプリミティブを実装する命令セットを有するプログラム可能プロセッサで構成される装置が記載されている。シーケンスプロセッサは、ＵＭＬに定められた一連の動作を表わすコードによってプログラム可能であり、様々な処理要素における動作をトリガするための制御信号を生成する。タスクの完了を示す処理要素からの信号は、更に、その後のタスクの実行を制御するために、制御プリミティブとともに使用される。上記システムは、また、システムクロックによって生成されるタイムイベントをトリガ信号として利用することも許容しており、これによりハードリアルタイム制約をシステムに適用することができる。上記記載の装置及びシステムの利点は、複数のプロセッサにおけるタスク実行が、非常に効果的に制御可能であること、及び更に、ＵＭＬに定められた一連のタスクが、シーケンスプロセッサの動作を制御するために自動的にマイクロコードにコンパイル可能であることである。
【０００４】
このように、モデリングツールは専用のハードウェアシーケンスプロセッサをターゲットとするモデルからコードを生成する。このハードウェアシーケンスプロセッサは、プロセッサ上で実行されるタスク（及び実際は専用ハードウェアブロック上で動作するタスク／機能）がそれらのデッドラインや制御依存性及びデータ依存性を満たすことを保証する。
【０００５】
マルチプロセッサシステムでは、メモリへのアクセスは、多くの処理要素が種々のタイミングでメモリにアクセス可能であるので複雑である。もしメモリが、（サイズを最小にするために）頻繁に再利用もされるならば、システムのデバッグ及び検証は、極めて困難である。
【０００６】
また、使用中にロードおよびアップデートされるソフトウェア中で定義された複数の無線インタフェースモードをサポートする必要がある将来の携帯電話機において必要とされるモデムでは、ソフトウェアによるメモリアクセスに予期せぬ相互作用があり動作不具合を招くことがあり、システムは、この不具合を自動的に回復する必要がある。
【０００７】
したがって、開発／デバッグ段階および通常動作のいずれでもマルチプロセッサシステムにおけるメモリアクセスの問題を識別及び管理することができるシステムが望まれている。
【発明の概要】
【０００８】
本発明の第１の態様にしたがうと、添付の特許請求の範囲に示されるような、マルチプロセッサシステムにおけるメモリアクセスを監視する方法が提供される。
【０００９】
本発明の更なる態様にしたがうと、第１の態様にしたがった方法を実行するように構成
されたハードウェア要素（メモリウォッチユニットとも称する）と、そのようなハードウェア要素、複数の処理要素、各処理要素がアクセス可能であるメモリ、及び複数の処理要素によって実行される一連のコードを生成するように構成されたシーケンサを含むマルチプロセッサシステムとが開示される。
【図面の簡単な説明】
【００１０】
本発明の更なる理解のために、そして本発明がどのように実行に移されるかを更に明瞭に示すために、例として、以下の図面が参照される。
【００１１】
【図１】本発明の実施形態にしたがったマルチプロセッサシステムを示した概略図である。
【図２】図１に示されたシステム用のコードを生成するプロセスフローを示した概略図である。
【発明を実施するための形態】
【００１２】
図１は、本発明の実施形態にしたがったマルチプロセッサシステム１０を示した概略図である。
【００１３】
システム１０は、複数の処理要素１〜ｎ  １２を含む（ここで、ｎは２以上の正の整数である）。例示の実施形態は、３つの処理要素１２を示しているが、システム１０は、２つの処理要素しか含まなくてもよい。
【００１４】
処理要素１２は、任意のプロセッサや専用プロセッサを含むことができる。例えば、複数の処理要素１２は、データアレイ中の各要素に対する行列−ベクトル算術演算を同一プロセッササイクル内で実行する能力を有するベクトル信号プロセッサ、ダイレクトメモリアクセスやターボ復号などの単一種類の動作専用のハードウェアブロック、中央演算処理装置（ＣＰＵ）、又はその他の様々なタイプの処理ブロックの１つのうちの、１つ以上を含むことができる。
【００１５】
システム１０は、更に、システムクロックを提供するタイマ１４と、制御プロセッサ１５と、シーケンスプロセッサ１６とを含む。処理要素１２、タイマ１４、制御プロセッサ１５、及びシーケンスプロセッサ１６は、全て、システムバスすなわち相互接続１８を介して相互に接続されている。
【００１６】
シーケンスプロセッサ１６は、ＵＭＬのプリミティブを実装する命令セットを有するプログラム可能プロセッサである。シーケンスプロセッサ１６は、ＵＭＬに定められた一連の動作を表わすコードによってプログラム可能であり、様々な処理要素１２における動作をトリガするための信号（アクション呼び出し（Action Invocation）とも称する）を生
成する。タスク完了を示す処理要素からの信号（アクション通知（Action Indication）
とも称する）は、更に、その後のタスクの実行を制御するために、制御プリミティブとともに使用される。このように、ＵＭＬに定められた一連のタスクは、シーケンスプロセッサ１６の動作を制御するために自動的にマイクロコードにコンパイル可能である。このマイクロコードは、処理要素１２における動作をトリガするためのアクション呼び出し（ＡＩ）を生成する。
【００１７】
各ＡＩは、以下のいずれかまたは全てを含むメッセージである。（１）必要とされる処理要素のタイプ、メモリ要求、所要電力若しくは電流要求などの、アクションを実行するために必要とされるリソースの定義。（２）必要とされる処理要素がプリエンプト可能であるかどうかの指示。（３）処理要素をプログラムするためのコード（必要であれば）へのポインタ。（４）入力データバッファ及び出力データバッファへのポインタ。（５）デ
ータ依存性がある場合にアクションを実施するために必要とされる最小および最大の実行サイクル数に関するデータ。（６）アクションの優先度の定義。（７）最早開始時間または最遅終了時間の定義（すなわち、アクションがそれより前に始まってはならない時間や、そのときまでに完了されなければならないという時間）。（８）アクションの完了の際に制御が返される先となるべき一連の動作内における位置の定義。
【００１８】
処理要素１２及びシーケンスプロセッサ１６のそれぞれがアクセス可能であるメモリ２０が提供される。メモリ２０は、オンチップメモリ、オフチップメモリ、又はそれら２つの組み合わせであってよい。メモリ２０は、１つのバンクとして提供することができるが、より一般的には、システム１０周辺の様々な場所に配置された複数のバンクを含むことが予期される。メモリ２０は、メモリバス２１を通じて、又はメモリアドレスバスやメモリデータバスや１つ以上の制御ラインなどの複数のバスを通じてシステム１０のその他の要素に接続することができる。
【００１９】
本発明の実施形態にしたがうと、システムは、更に、メモリウォッチユニット２２を含む。メモリウォッチユニット２２は、専用のハードウェア要素であり、メモリ２０と同じ相互接続又はバス２１に接続される。これは、図１に例示された実施形態におけるような専用のメモリバスでもよいし、より汎用のシステム相互接続１８であってよい。メモリウォッチユニット２２は、したがって、処理要素１２及び／又はシーケンスプロセッサ１６によってなされる各メモリアクセスを監視することができる。メモリウォッチユニット２２の動作の更なる詳細は、以下で提供される。
【００２０】
図２は、上述されたマルチプロセッサシステム１０などのようなマルチプロセッサシステムのモデルを設計プロセスにおいて作成する技術を示した概略図である。このようなシステムの一具体例は、ＧＢ２４８２１４１Ａに記載されるような、モデム物理層のソフトウェアインスタンス化である。このモデルは、設計上の様々な関心事（concerns）（例えば電力、パフォーマンス、エリアなど）を表現及び可視化することを可能にし、また、マルチプロセッサシステムを制御するためのコードが生成される前にこのモデルの解析を行うことを可能にする。これらの設計上の関心事（及びその他）は互いに独立したものではないが、設計者にとっての複雑性を少なからず軽減するために、これらを表現及び可視化する際には分離することが有用である。プロセスの解析段階では、関心事を相互に結び付け、あわせて解析することができる。このステージでは、コード生成段階に影響を及ぼすことができるように、ポリシーを定めることができる。
【００２１】
メモリ１０１に関する関心事や制約、又はその他の関心事１０２は、（ＵＭＬ又はその他の任意の適切なモデリング言語を使用して表現されうる）モデル１０３に表現される。ＧＢ２４８２１４１Ａに記載されるように、モデル１０３の主目的は、システムの複数の処理要素によって実行されるタスク間の依存性を表現することである。
【００２２】
モデルに記述された振る舞いを使用して、メモリ使用状況（memory usage）が生成される（１０４）。メモリ使用状況は、モデル内にバッファを作成しそれらのバッファをプロセッサ上で実行されるタスクに付して、制御フロー及びデータフローを作成することによってモデル化することができる。システム内のどこからメモリが割り当て可能であるかやそのアラインメントタイプなどの、メモリの属性を記述するための更なる注釈をモデルに付けることができる。また、バッファの予想寿命を記述するための注釈をバッファに付け、コード実行の進行に伴ってメモリがその他の用途のためにリサイクルできるようにすることも可能だと考えられる。モデルは、したがって、メモリ割り当て、メモリアドレス、データフロー（すなわち、どのプロセスがいつ何にアクセスしているか）、及びメモリ寿命などの、全ての重要な様相に関する知識を有する。
【００２３】
メモリ使用状況は、可視化ツールを通じて表示することができ（１０５）、これは、メモリが使用時にどのようにレイアウトされるかを設計者に対して提示するための視覚的な補助となる。
【００２４】
異なる様相間の相互作用に関する「相互関心事（cross-concerns）」の解析（１０６）及びシステムの最適化を可能にするために、ポリシー１０７を適用することができる。ポリシーは、例えば、可能な限りアクセスを１つのメモリバンクに制限し、その他のバンクをオフに切り替え可能にするというものであってよい。この例のポリシーは、電力の節約を優先している。この場合、開発ツールは、１つのメモリサブシステムを使用されていないと推測し、そのサブシステムをオフにするためのコードを生成することができる。別の例では、ポリシーは、アクセス速度を優先して、オフチップメモリに優先してオンチップメモリを使用するためのコードを生成することができる。更に別の例では、ポリシーは、パフォーマンスを優先して、したがって、複数の処理要素がメモリサブシステムに並列にアクセスできるように、幾つかのメモリサブシステムにわたってメモリの割り当てが分散される。しかしながら、本発明は、いかなる特定のポリシーにも限定されない。
【００２５】
次いで、ステップ１０６で行われた解析に基づいて、システム内の様々なプロセッサ用のコードが生成される（１０８）。コード生成段階中、メモリは、静的に割り当ててもよいし（すなわち、割り当てが設計時になされるように管理する）、動的に割り当ててもよい（すなわち、（ターゲットとされるオペレーティングシステムによって提供される）メモリ割り当てＡＰＩにアクセスするためのコードが生成される）、あるいは、静的割り当てと動的割り当てとを組み合わせてもよい。一実施形態では、制御プロセッサ１５は、オペレーティングシステムと、そしてメモリ割り当てＡＰＩとも通信するが、その他の実施形態では、どの処理要素１２も、メモリ割り当てＡＰＩと直接的に通信することができる。
【００２６】
生成されるコードは、シーケンスプロセッサ１６用のターゲットコード１０９と、メモリウォッチリスト１１０とを含む。ターゲットコードは、シーケンスプロセッサ１６による制御下で複数の処理要素によって行われるプログラム又はアクションリストを含む。
【００２７】
シーケンスプロセッサ１６及びその他のシステム要素のためのコードがひとたび生成されて実行されると、与えられたメモリ２０領域が関連のない異なるプロセスに割り当てられるという予期せぬ振る舞いが発生する恐れがある。これは、プログラマによる間違いのためであるか、シーケンスプロセッサ１６が、非関連で恐らくは非同期のプロトコルからのコードを実行するためだと考えられる。このような振る舞いは、追跡するのが非常に難しく、特に、それが開発段階ではなくその後製品が実用展開されるときに発生する場合に顕著だと考えられる。
【００２８】
シーケンスプロセッサ１６は、こうして、図２に概略を示されたフローで生成されるプログラム又はアクションリストを提供され、そこから、処理要素１２に送信されるべき上述のアクション呼び出しが生成される。やはり図２のフローを通じて生成されるのは、メモリウォッチリスト１１０であり、これは、システム動作の様々な時点におけるメモリアドレス、メモリデータ内容、及びメモリ制御信号（例えば読み出し信号又は書き込み信号）のセットを含む。このメモリウォッチリストは、メモリウォッチユニット２２をプログラムするために、メモリ２０へのアクセスに関する１つ以上のルールとともに、シーケンスプロセッサ１６によって使用される。
【００２９】
このように、シーケンスプロセッサ１６は、プログラム実行の進行に伴って、複数の信号を提供してメモリウォッチユニット２２を動的にプログラムする。例えば、処理要素によるタスクの完了の際に、新しいルールを定めたり古いルールを変更したりすることがで
きる。これらの信号は、メモリアドレスと、メモリ位置のデータ内容と、処理要素１２を制御する一連のコードの実行中の様々な時点で発生することが予期されたり発生すべきなかったりするメモリ制御信号とを含むことができる。
【００３０】
メモリウォッチユニット２２は、バス２１（多岐にわたるバス及び／又は実際はその他の相互接続であるかもしれない）を通じてメモリ２０につながれ、そうして、処理要素によってなされるメモリアクセスを検出することやメモリウォッチリスト１１０に指定されたルールを適用することができる。もし、１つ以上のルールが違反されたならば、後述されるように、警告信号を生成することができる。
【００３１】
例えば、１つのメモリアドレス又は１つのメモリアドレスグループへのアクセスを制限するルールを適用するようにプログラムすることができる。したがって、メモリウォッチユニット２２は、メモリアクセスにおいて指定されたアドレスを検出し、もし、そのアドレスが制限アドレスリストのなかのアドレスに一致するならば、そのメモリアクセスを、ルールに違反するものとしてフラグ付けする。アドレスの１つ又は２つ以上の最上位ビットのみを解析することによって、１つのアドレスグループ内の任意のアドレスへのアクセスを検出することができる。更に、アドレスは、特定のタイプの処理要素によるアクセスのみに制限することも可能である。したがって、もし、メモリアクセスが、そのアドレスへのアクセスが許可された第１のタイプの処理要素から生じたものであれば、そのメモリアクセスは許可され、もし、そのメモリアクセスが、そのアドレスへのアクセスが禁止された第２のタイプの処理要素から生じたものであれば、そのメモリアクセスはルールに違反するものと見なすことができる。
【００３２】
別の実施形態では、特定のアドレスへのメモリアクセスが、もしそれが特定のタイプである場合に制限されるような、ルールを適用することができる。例えば、メモリ制御ラインは、アクセスが読み出し動作であるか又は書き込み動作であるかを示すことができる。特定のアドレスは、読み出し専用として指定されてよく、したがって、それらのアドレスへの書き込み動作はメモリアクセスルールに違反するものと見なすことができる。
【００３３】
更なる実施形態では、メモリウォッチユニット２２は、メモリアクセスに指定されたメモリ場所におけるデータを監視することによって、ルールを実装することができる。例えば、ルールは、特定のメモリアドレスにおけるデータが特定の値をとることを指定することができる。この値は、システムが正しく機能するために必要とされる制御値、又はシステムが正しく機能しているかどうかをテストする（メモリを上書きする不正プログラムを防ぐ技術）ために使用される任意の値であってよい。もし、メモリアクセスが、メモリアドレスに異なる値を書き込んだりメモリアドレスから異なる値を読み出したりする場合は、ルールが違反されたと見なすことができる。
【００３４】
これらのルールを実装するために、メモリウォッチユニット２２は、データ、アドレス、発信元の処理要素、及び／又はメモリアクセスタイプを、メモリウォッチリスト１１０に指定されたルールを違反すると考えられるこれらのパラメータの値と比較するための、複数の比較器を含むことができる。メモリウォッチユニット２２は、論理的に組み合わされて複雑なトリガを与えることができる１つ以上のバンクの比較器を含むことができる。
【００３５】
メモリウォッチユニット２２は、メモリアクセスがルールの１つを違反したことを見つけた（例えば制限アドレスに一致するメモリアクセスを比較器が検出した）場合に、システム１０において様々な形で使用することができる警告信号（メモリ違反トリガとも呼ばれる）を生成することができる。
【００３６】
例えば、警告信号は、ブレークポイントモジュールに適用されてよく、該モジュールは
、システム「デバッグ」段階中にソフトウェア実行を「停止（break）」して、外部シス
テムにトレースデータを出力することで、プログラマが問題を見つけることを可能にする。更なる実施形態では、警告信号を、割り込みコントローラに送って、（制御プロセッサに送られるであろう）システム割り込みを生成してもよいし、シーケンスプロセッサ１６に送って例外処理ルーチンをトリガしてメモリ違反に対応してもよい。
【００３７】
本発明の実施形態にしたがうと、メモリウォッチユニット２２は、開発中のデバッグを目的として提供される既存のトレース（追跡）モジュールの形で実装することができる。すなわち、例えばＡＲＭ  Ｌｉｍｉｔｅｄによるプロセッサおよびバス技術に基づくものなどの、多くの埋め込みシステムでは、トレースモジュール（Trace Module）と呼ばれるＩＰブロックがあることが多い。ＡＲＭ技術では、これは、「システムトレースモジュール」（ＳＴＭ）あるいは「拡張トレースモジュール」（ＥＴＭ）であるかもしれない。これらのＩＰブロックは、通常、外部デバッガによってプログラム可能な比較器のセットを有しており、一連の条件と比較してシステムブレークポイントを発生させる（すなわち、ソフトウェア実行を中断して、ブレークポイントに至ったトレースデータをプログラムが検査可能とする）。通常、トレースモジュールは、ＩＥＥＥ  １１４９．１規格テストアクセスポートおよびバウンダリスキャンアーキテクチャに則ったＪＴＡＧポートを通じて外部デバッグシステムからプログラムされる。最新の埋め込みシステム設計の重要な様相は、このようなトレースハードウェアが当然のものとして組み込まれる一方で、プログラムされた制御下ではそれがオフにされることによって電力消費が最小限に抑えられることである。すなわち、トレースハードウェアは、ＪＴＡＧポート上の信号を通じて有効にされ、このポートを通じてＡＲＭ  Ｄ−Ｓｔｒｅａｍ  ＪＴＡＧインターフェースモジュールやＤＳ５トレース・デバッグソフトウェアなどの付属の監視システムにトレース情報を通信する。開発が完了したら、ハードウェアはオフにされる。
【００３８】
本発明の実施形態にしたがうと、この既存のトレース回路は、システム１０自体によって内部からアクセス可能であるように適応させることができる。例えば、トレース回路の入力及び出力をシステム相互接続１８に送ることができ、これにより、その回路を、通常使用されているＪＴＡＧポートへアクセス可能とするのに加えて、シーケンスプロセッサ１６に対してアクセス可能とする。このようにして、トレース回路は、シーケンスプロセッサ１６によって、又はメモリウォッチリスト１１０に定められたルールを実現するように適応されたその他の任意のハードウェア要素によってプログラムすることができる。トレース回路は、こうして、メモリウォッチユニット２２に必要とされる機能を実施するように適応させることができ、本発明の機能性は、システム１０に必要とされるハードウェアの量の増加を基本的に伴うことなく提供することができる。
【００３９】
本発明の実施形態は、したがって、メモリアクセスに関する一連のルールが作成されてハードウェア要素のなかで実現されるマルチプロセッサシステムにおける方法及び装置を提供する。これらのルールは、複数の処理要素によって実施されるタスクの完了に続いて、例えば、それらの処理要素を制御するために使用されるシーケンスプロセッサ（又はシーケンサ）１６によって動的にアップデートすることができる。
【００４０】
当業者ならば、添付の特許請求の範囲に定められる発明の範囲から逸脱することなく上述の実施形態に対して様々な変更及び置き換えが可能であることがわかる。
【図１】
2013218680.tif 000003
【図２】
2013218680.tif 000004
【外国語明細書】
2013218680000001.pdf