JP6104671B2 - マルチプロセッサシステム、装置、及び方法 - Google Patents

マルチプロセッサシステム、装置、及び方法 Download PDF

Info

Publication number
JP6104671B2
JP6104671B2 JP2013072004A JP2013072004A JP6104671B2 JP 6104671 B2 JP6104671 B2 JP 6104671B2 JP 2013072004 A JP2013072004 A JP 2013072004A JP 2013072004 A JP2013072004 A JP 2013072004A JP 6104671 B2 JP6104671 B2 JP 6104671B2
Authority
JP
Japan
Prior art keywords
memory
memory access
processing elements
access
series
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.)
Active
Application number
JP2013072004A
Other languages
English (en)
Other versions
JP2013218680A (ja
Inventor
エルクト ウィガン
エルクト ウィガン
ポール ティンダル
ポール ティンダル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
u-blox AG
Original Assignee
u-blox AG
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by u-blox AG filed Critical u-blox AG
Publication of JP2013218680A publication Critical patent/JP2013218680A/ja
Application granted granted Critical
Publication of JP6104671B2 publication Critical patent/JP6104671B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • G06F8/4442Reducing the number of cache misses; Data prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Description

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

Claims (14)

  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に記載のハードウェア要素と、
    を備えるマルチプロセッサシステム。
JP2013072004A 2012-03-30 2013-03-29 マルチプロセッサシステム、装置、及び方法 Active JP6104671B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1205737.8 2012-03-30
GB1205737.8A GB2500707B (en) 2012-03-30 2012-03-30 Multiprocessor system, apparatus and methods

Publications (2)

Publication Number Publication Date
JP2013218680A JP2013218680A (ja) 2013-10-24
JP6104671B2 true JP6104671B2 (ja) 2017-03-29

Family

ID=46160075

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013072004A Active JP6104671B2 (ja) 2012-03-30 2013-03-29 マルチプロセッサシステム、装置、及び方法

Country Status (5)

Country Link
US (1) US9600422B2 (ja)
EP (1) EP2645258B1 (ja)
JP (1) JP6104671B2 (ja)
CN (1) CN103593320B (ja)
GB (1) GB2500707B (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2500707B (en) 2012-03-30 2014-09-17 Cognovo Ltd Multiprocessor system, apparatus and methods
US11714676B2 (en) * 2020-01-03 2023-08-01 International Business Machines Corporation Software-directed value profiling with hardware-based guarded storage facility

Family Cites Families (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2457521B1 (fr) * 1979-05-23 1985-12-27 Thomson Csf Systeme multiprocesseur de traitement de signal
US4819152A (en) * 1985-04-05 1989-04-04 Raytheon Company Method and apparatus for addressing a memory by array transformations
EP0551932B1 (en) * 1987-06-05 1998-07-15 Mitsubishi Denki Kabushiki Kaisha Digital signal processor processing multi-point conditional branch operations in a pipeline mode
US5222241A (en) * 1987-06-05 1993-06-22 Mitsubishi Denki Kabushiki Kaisha Digital signal processor having duplex working registers for switching to standby state during interrupt processing
US5206940A (en) * 1987-06-05 1993-04-27 Mitsubishi Denki Kabushiki Kaisha Address control and generating system for digital signal-processor
US5247627A (en) * 1987-06-05 1993-09-21 Mitsubishi Denki Kabushiki Kaisha Digital signal processor with conditional branch decision unit and storage of conditional branch decision results
US5237667A (en) * 1987-06-05 1993-08-17 Mitsubishi Denki Kabushiki Kaisha Digital signal processor system having host processor for writing instructions into internal processor memory
JPH06231007A (ja) * 1993-01-28 1994-08-19 Mitsubishi Electric Corp 計算機の不正アドレス検知回路
US6128720A (en) * 1994-12-29 2000-10-03 International Business Machines Corporation Distributed processing array with component processors performing customized interpretation of instructions
WO1996029652A1 (en) * 1995-03-22 1996-09-26 Ast Research, Inc. Rule-based dram controller
US5784636A (en) * 1996-05-28 1998-07-21 National Semiconductor Corporation Reconfigurable computer architecture for use in signal processing applications
FR2767939B1 (fr) * 1997-09-04 2001-11-02 Bull Sa Procede d'allocation de memoire dans un systeme de traitement de l'information multiprocesseur
US6374286B1 (en) * 1998-04-06 2002-04-16 Rockwell Collins, Inc. Real time processor capable of concurrently running multiple independent JAVA machines
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6769116B1 (en) * 1999-10-21 2004-07-27 Oracle International Corporation Diagnostic technique for debugging memory corruption
US7111307B1 (en) * 1999-11-23 2006-09-19 Microsoft Corporation Method and system for monitoring and verifying software drivers using system resources including memory allocation and access
US7143401B2 (en) * 2000-02-17 2006-11-28 Elbrus International Single-chip multiprocessor with cycle-precise program scheduling of parallel execution
WO2001063434A1 (en) * 2000-02-24 2001-08-30 Bops, Incorporated Methods and apparatus for dual-use coprocessing/debug interface
WO2001063438A1 (en) * 2000-02-24 2001-08-30 Bops Incorporated Methods and apparatus for providing bit-reversal and multicast functions utilizing dma controller
WO2001098898A1 (en) * 2000-06-21 2001-12-27 Bops, Inc. Methods and apparatus for indirect vliw memory allocation
US7028286B2 (en) * 2001-04-13 2006-04-11 Pts Corporation Methods and apparatus for automated generation of abbreviated instruction set and configurable processor architecture
US6912608B2 (en) * 2001-04-27 2005-06-28 Pts Corporation Methods and apparatus for pipelined bus
JP3661614B2 (ja) * 2001-07-12 2005-06-15 日本電気株式会社 キャッシュメモリ制御方法及びマルチプロセッサシステム
GB0125628D0 (en) * 2001-10-25 2001-12-19 Ibm Computer system with watchpoint support
US20030140337A1 (en) * 2001-12-21 2003-07-24 Celoxica Ltd. System, method, and article of manufacture for data transfer reporting for an application
US20030167381A1 (en) * 2002-03-04 2003-09-04 Israel Herscovich System and method for dynamic memory access management
US7669189B1 (en) * 2002-06-26 2010-02-23 Oracle International Corporation Monitoring memory accesses for computer programs
JP2004192052A (ja) * 2002-12-06 2004-07-08 Matsushita Electric Ind Co Ltd ソフトウェア処理方法およびソフトウェア処理システム
US7930484B2 (en) * 2005-02-07 2011-04-19 Advanced Micro Devices, Inc. System for restricted cache access during data transfers and method thereof
US8161461B2 (en) * 2005-03-24 2012-04-17 Hewlett-Packard Development Company, L.P. Systems and methods for evaluating code usage
GB0509738D0 (en) * 2005-05-12 2005-06-22 Cambridge Consultants Processor and interface
US7350034B2 (en) * 2005-06-20 2008-03-25 International Business Machines Corporation Architecture support of best-effort atomic transactions for multiprocessor systems
US7350036B2 (en) * 2005-08-01 2008-03-25 Intel Corporation Technique to perform concurrent updates to a shared data structure
US7779307B1 (en) * 2005-09-28 2010-08-17 Oracle America, Inc. Memory ordering queue tightly coupled with a versioning cache circuit
US7620938B2 (en) * 2005-10-31 2009-11-17 Microsoft Corporation Compressed program recording
US7962923B2 (en) * 2005-12-30 2011-06-14 Level 3 Communications, Llc System and method for generating a lock-free dual queue
US20080034350A1 (en) * 2006-04-05 2008-02-07 Conti Gregory R System and Method for Checking the Integrity of Computer Program Code
US7752605B2 (en) * 2006-04-12 2010-07-06 Microsoft Corporation Precise data-race detection using locksets
US20070250820A1 (en) * 2006-04-20 2007-10-25 Microsoft Corporation Instruction level execution analysis for debugging software
US8316352B2 (en) * 2006-06-09 2012-11-20 Oracle America, Inc. Watchpoints on transactional variables
US8606998B2 (en) * 2006-08-24 2013-12-10 Advanced Micro Devices, Inc. System and method for instruction-based cache allocation policies
DE102006041002B4 (de) * 2006-08-31 2009-01-02 Infineon Technologies Ag Verfahren, um ein Programm an einen Zwischenspeicher anzupassen, und Schaltungsanordnung
US8185874B2 (en) * 2006-11-07 2012-05-22 Microsoft Corporation Automatic and systematic detection of race conditions and atomicity violations
GB0623276D0 (en) * 2006-11-22 2007-01-03 Transitive Ltd Memory consistency protection in a multiprocessor computing system
US7823013B1 (en) * 2007-03-13 2010-10-26 Oracle America, Inc. Hardware data race detection in HPCS codes
US8688920B2 (en) * 2007-05-14 2014-04-01 International Business Machines Corporation Computing system with guest code support of transactional memory
US7814378B2 (en) * 2007-05-18 2010-10-12 Oracle America, Inc. Verification of memory consistency and transactional memory
US8839218B2 (en) * 2007-06-04 2014-09-16 International Business Machines Corporation Diagnosing alias violations in memory access commands in source code
GB2450505A (en) * 2007-06-26 2008-12-31 Symbian Software Ltd Authorised debugging
JP4888272B2 (ja) * 2007-07-30 2012-02-29 富士通セミコンダクター株式会社 ソフトウェアのシミュレーション方法、ソフトウェアのシミュレーションのためのプログラム、及びソフトウェアのシミュレーション装置
US8627030B2 (en) * 2007-11-07 2014-01-07 Intel Corporation Late lock acquire mechanism for hardware lock elision (HLE)
CN101499020B (zh) * 2008-01-28 2011-08-31 财团法人工业技术研究院 具有动态工作管理能力的多处理器界面及其程序加载或卸载方法
US7823019B2 (en) * 2008-05-08 2010-10-26 Arm Limited Debug circuitry
US20100070955A1 (en) * 2008-07-08 2010-03-18 Nec Laboratories America Alias analysis for concurrent software programs
WO2010004474A2 (en) * 2008-07-10 2010-01-14 Rocketic Technologies Ltd Efficient parallel computation of dependency problems
US8266604B2 (en) * 2009-01-26 2012-09-11 Microsoft Corporation Transactional memory compatibility management
US20100318746A1 (en) * 2009-06-12 2010-12-16 Seakr Engineering, Incorporated Memory change track logging
JP5283128B2 (ja) * 2009-12-16 2013-09-04 学校法人早稲田大学 プロセッサによって実行可能なコードの生成方法、記憶領域の管理方法及びコード生成プログラム
US8806446B2 (en) * 2010-03-22 2014-08-12 Analog Devices, Inc. Methods and apparatus for debugging programs in shared memory
US10241894B2 (en) * 2010-06-25 2019-03-26 Microsoft Technology Licensing, Llc Data-scoped dynamic data race detection
US20120011490A1 (en) * 2010-07-09 2012-01-12 Kabushiki Kaisha Toshiba Development system
GB2482141B (en) 2010-07-20 2012-07-18 Cognovo Ltd Digital data processing systems
CN102736974A (zh) * 2011-04-13 2012-10-17 鸿富锦精密工业(深圳)有限公司 程序除错系统及方法
US9329877B2 (en) * 2012-03-18 2016-05-03 Microsoft Technology Licensing, Llc Static verification of parallel program code
GB2500707B (en) 2012-03-30 2014-09-17 Cognovo Ltd Multiprocessor system, apparatus and methods

Also Published As

Publication number Publication date
GB2500707A (en) 2013-10-02
GB201205737D0 (en) 2012-05-16
US20130262806A1 (en) 2013-10-03
EP2645258A1 (en) 2013-10-02
US9600422B2 (en) 2017-03-21
EP2645258B1 (en) 2016-05-18
GB2500707B (en) 2014-09-17
JP2013218680A (ja) 2013-10-24
CN103593320B (zh) 2018-03-09
CN103593320A (zh) 2014-02-19

Similar Documents

Publication Publication Date Title
JP6086230B2 (ja) 中央演算装置、情報処理装置、および仮想コア内レジスタ値取得方法
US8903703B2 (en) Dynamically adjusting speed versus accuracy of computer platform simulation
US8793115B2 (en) Interface converter for unified view of multiple computer system simulations
US20090037888A1 (en) Simulation of program execution to detect problem such as deadlock
BR112018005588B1 (pt) Método de depuração, processador de múltiplos núcleos e dispositivo de depuração
US9454424B2 (en) Methods and apparatus for detecting software inteference
JP2006313521A (ja) プログラマブルデバイスのモデリング方法および装置
JP2014102734A (ja) 性能検証プログラム、性能検証方法及び性能検証装置
JP2008507025A (ja) 集積回路テスト用エミュレーション及びデバッグインターフェイス
CN111367742A (zh) 调试mvp处理器的方法、装置、终端和计算机可读存储介质
JP6104671B2 (ja) マルチプロセッサシステム、装置、及び方法
Lai et al. Fast profiling framework and race detection for heterogeneous system
US8707267B1 (en) Debugging a computer program by interrupting program execution in response to access of unused I/O port
JP5336228B2 (ja) 複数のクロックドメインにおいて決定性を促進するテクニック
Shannon et al. Performance monitoring for multicore embedded computing systems on FPGAs
CN111506395B (zh) 一种混合仿真的全数字虚拟运行环境的实现方法及装置
Murillo et al. Scalable and retargetable debugger architecture for heterogeneous MPSoCs
KR101137034B1 (ko) 계층적 병렬 환경에서의 분산 런타임 진단을 위한 시스템 및 방법
JP2010244376A (ja) ソフトウェア開発装置、及び、ソフトウェア開発装置を用いたデバッグ方法
US8914274B1 (en) Method and system for instruction set simulation with concurrent attachment of multiple debuggers
Fuchs et al. Preliminary Performance Estimations and Benchmark Results for a Software-based Fault-Tolerance Approach aboard Miniaturized Satellite Computers
Girbal et al. BB-RTE: a budget-based runtime engine for mixed and safety critical systems
Jämbäck Evaluation of Real-Time Linux on RISC-V processor architecture
JP2019531542A (ja) 処理回路素子に対するトリガ信号のアサーションを制御する装置及び方法
JP2013045177A (ja) 情報処理装置及びプログラム

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20151126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20151126

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160328

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170118

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170131

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170301

R150 Certificate of patent or registration of utility model

Ref document number: 6104671

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250