JP2018022524A - マルチプロセッサ組込みシステム上でのアプリケーションの動的再構成 - Google Patents
マルチプロセッサ組込みシステム上でのアプリケーションの動的再構成 Download PDFInfo
- Publication number
- JP2018022524A JP2018022524A JP2017198250A JP2017198250A JP2018022524A JP 2018022524 A JP2018022524 A JP 2018022524A JP 2017198250 A JP2017198250 A JP 2017198250A JP 2017198250 A JP2017198250 A JP 2017198250A JP 2018022524 A JP2018022524 A JP 2018022524A
- Authority
- JP
- Japan
- Prior art keywords
- application
- applications
- swap
- data
- mps
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 80
- 230000008569 process Effects 0.000 claims abstract description 23
- 230000015654 memory Effects 0.000 claims description 188
- 238000004891 communication Methods 0.000 claims description 87
- 239000000872 buffer Substances 0.000 claims description 50
- 238000012545 processing Methods 0.000 claims description 39
- 230000004044 response Effects 0.000 claims description 11
- 238000011144 upstream manufacturing Methods 0.000 claims description 10
- 238000012546 transfer Methods 0.000 claims description 7
- 230000008878 coupling Effects 0.000 claims 3
- 238000010168 coupling process Methods 0.000 claims 3
- 238000005859 coupling reaction Methods 0.000 claims 3
- 239000004744 fabric Substances 0.000 description 24
- 238000004422 calculation algorithm Methods 0.000 description 22
- 230000005540 biological transmission Effects 0.000 description 21
- 230000006870 function Effects 0.000 description 20
- 238000003860 storage Methods 0.000 description 14
- 238000011161 development Methods 0.000 description 9
- 230000018109 developmental process Effects 0.000 description 9
- 230000009471 action Effects 0.000 description 8
- 230000001413 cellular effect Effects 0.000 description 8
- 230000006399 behavior Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 7
- 230000007704 transition Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 238000012795 verification Methods 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000008672 reprogramming Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000005291 magnetic effect Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 208000023368 generalized pustular psoriasis Diseases 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012952 Resampling Methods 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008033 biological extinction Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/482—Application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Multi Processors (AREA)
- Hardware Redundancy (AREA)
Abstract
Description
Michael B.Doerr、William H.Hallidy、David A.Gibson、Craig M.Chaseを発明者とする、発明の名称「Processing System With Interspersed Stall Propagating Processors And Communication Elements」の米国特許第7415594号は、その全体を参照することにより、本明細書においてその全体が完全に論述されているかのように、本明細書に援用されるものとする。
コンピュータシステム:パーソナルコンピュータシステム(PC)、メインフレームコンピュータシステム、ワークステーション、ネットワーク家電、インターネット家電、パーソナルデジタルアシスタント(PDA)、テレビジョンシステム、グリッドコンピューティングシステム若しくはその他のデバイス又はデバイスの組み合わせを含む、様々なタイプの計算又は処理システムのいずれか。一般に、用語「コンピュータシステム」は、メモリ媒体からの命令を実行する少なくとも1つのプロセッサを有するいずれのデバイス(又は複数のデバイスの組み合わせ)を包含するものとして広く定義できる。
図1A〜3Bは、再構成可能なMPSの複数の例を示し、例えばこれらMPSは、本出願に記載の技術に従って動的にアプリケーションをスワップイン及びスワップアウトするよう構成される。各MPSは、あるデバイス内でリアルタイム動作を実施するために動作する組込みシステムの一部であってよい。図1A〜3Bは単なる例であり、他の様々なタイプの組込みシステムのいずれが本出願に記載の方法を使用してよいことに留意されたい。
様々な実施形態では、本出願に記載のアプリケーションスワップ技術を様々な種類のMPSのいずれにおいて利用してよい。MPSはいずれの所望のアーキテクチャを有してよい。図4〜6は、一実施形態によるMPSに関する例示的なアーキテクチャを示す。このMPSアーキテクチャは、米国特許第7415594号において開示されているHyperX(商標)アーキテクチャの例である。このアーキテクチャは、多数のアプリケーションを同時に実行する能力を有する、プログラム可能な、極めて低電力かつ低コストの、多プロセッサ組込みコンピュータシステム(ここでは単一の集積回路チップとして実現される)を実装するために好適なものであり得る。HyperX(商標)アーキテクチャに関する以下の説明は単なる例であり、他の様々なMPSアーキテクチャのいずれを所望に応じて使用してよい。
HyperX(商標)アーキテクチャの一例では、マルチプロセッサアレイはユニットベースのハードウェアファブリック(メッシュ)からなってよく、各ユニットはHyperSliceと呼ばれる。このハードウェアファブリックは、グリッド上にユニットを配設し、隣接するユニットを相互接続することによって形成できる。各HyperSliceユニットは、1つ又は複数のデータメモリ及びルータ(DMR)、並びに1つ又は複数の処理要素(PE)を含んでよい。
DMRのアーキテクチャにより、異なる相互スワップ可能なPEを、システムを特定の用途に対して最適化するためにマルチプロセッサファブリックにおいて使用できる。HyperX(商標)マルチプロセッサシステムは、PE異種のPEによるアレイ又は同種のPEによるアレイを備えてよい。PEは従来のプロセッサであってよく、又はPEはプロセッサの従来の定義に適合していなくてもよい。いくつかの実施形態では、PEは、特定の論理関数のための結線接続されたプロセッサとして機能する論理ゲートの集合であってよく、ここではより高い性能、より小さい面積及び/又はより低い電力のためにプログラム可能性が犠牲となっている。
図4は、処理要素(PE)及びデータメモリルータ(DMR)のネットワークを含むHyperX(商標)システムのある実施形態を示す。PEは矩形のブロックとして図示され、DMRは円として図示されている。DMR間のルーティングパスは点線で図示されている。中実の三角形はオフメッシュ通信を示し、太い実線はDMR間のアクティブなデータ通信を示す。計算タスクはその数値による識別子で示され、これを実行するPE上に位置する。通信に使用されているデータ変数はその名称で示され、これを含むDMR上に位置する。図示した実施形態では、左上のPEはタスクID62のタスクに割り当てられ、このPEに隣接する各DMRを介して他のPE又はメモリと通信でき、上記各DMRは通信パス変数t、w、uで表されている。これもまた図示されているように、この実施形態では、アクティブな通信ルートは、「x」で標識されている隣接するDMRを介して、71(例えば別のタスクID)で表されているPEを、オフメッシュ通信パス又はポートに接続する。
DMRハードウェア構造のある例示的実施形態のブロック図を図6に示す。図示した実施形態では、中央データメモリ(DM)はルータを表す八角形のリングで囲まれている。なお、図示した八角形形状は単なる記号表現であり、実際の形状は異なっていてよく、例えば矩形であってよい。DMRを取り囲むのは、他のDMR及びPEへのデータパスを表す多数の双方向矢印である。これらの双方向データパスは、各端部における実際の双方向トランシーバを用いて実装でき、又は反対方向に配向された単方向パスのペアとして実装できる。
MPSは、多数のソフトウェアアプリケーションを同時に実行する能力を有してよい。図13は、複数のアプリケーションが実行されているMPS300の例を示す。アプリケーションを実行するために、これら複数のアプリケーションからの命令及びデータを、MPSの異なる複数のメモリに分散させてよく、これは、これらメモリに関連するプロセッサによって実行するためである。例えば、これらのアプリケーションのうちの1つに関するプログラム命令及びデータを、MPSのメモリの第1のサブセットに記憶してよい。MPSのプロセッサの第1のサブセットは、メモリの上記第1のサブセットに連結でき、上記アプリケーションに関する上記命令及びデータを実行できる。同様に、これらのアプリケーションのうちの別のものに関するプログラム命令及びデータを、プロセッサの第2のサブセットによって実行するためにメモリの第2のサブセットに記憶してよく、以下同様である。
MPSの動作中、ある所定のアプリケーションは、まずスワップインされ、次に実行され、次に実行を停止され、続いて再びスワップアウトされるための多数のステップを通して遷移してよい。スワップ可能なアプリケーションはこのプロセスを何度も経る場合がある。図22は、アプリケーションをスワップイン及び再びスワップアウトするライフサイクルを示す。親タスクは、ステップのシーケンスを制御する役割を有してよい。所定の条件において、いくつかのステップは僅かに異なる順序で実施される場合があるか、又は一切実施されない場合がある。
図24に示すように、本出願に記載のアプリケーションスワップ技術を実装するために必要なソフトウェアコードを生成するために、MPSにソフトウェアツール401のセットを提供してよい。ツール401は、アプリケーションのソースコードを実行可能なプログラム命令にコンパイルするよう構成されたコンパイラ403、及び1つ又は複数の手順生成モジュール405を含んでよい。手順生成モジュール405は、スワッププロセスを実装するために実行時間中に実行されることになる、実行可能なソフトウェア手順を自動的に生成するよう構成されてよい。例えばこれら手順を実行することにより、アプリケーションの保存された状態をロードする、アプリケーションが使用するデバイスを初期化する等の、アプリケーションスワップに関わる動作を実施できる。これらの手順は、必要に応じてのみ生成されてよい。例えば特定のアプリケーションはその状態を保存又は復元しなくてよく、従ってこれらの動作に対応する手順はこの場合には生成しなくてよい。生成された手順のうちのいくつかはアプリケーションタスクによって、いくつかは(それが存在する場合は)ローダタスクによって、そしていくつかは親タスクによって、実行できる。各手順を実行するタスクは、アクセスされるリソースの近さ、及びMPSの構成に基づいて決定してよい。いくつかの実施形態では、これらの手順の全体的な順序付けは、親タスクによって管理される。
いくつかの実施形態では、MPS上で実行されるアプリケーションは、2つのセットに分類できる。アプリケーションの一方のセットは、ベースシステムと呼ばれる。ベースシステムは、1つ又は複数のスワップ不可能なアプリケーション、例えばMPSの実行中にロードされて実行されている状態であるアプリケーションを含む。もう一方のセットは、動的にスワップイン及びスワップアウトできるスワップ可能なアプリケーションのセットである。MPSが実行中のいずれの時点において、MPS上にあるスワップ可能なアプリケーション及びスワップ不可能なアプリケーションの組み合わせは、互いに干渉することなく動作できる。相互に干渉しないアプリケーションのこのような組を、リーガル構成と呼ぶ。MPS上の所定のレイアウト及び配置を有するスワップ可能なアプリケーションを、アプリケーションインスタンスと呼ぶ。同一のスワップ可能なアプリケーションの異なるレイアウト又は配置は、異なるアプリケーションインスタンスである。というのは同一のスワップコードをこれら両方に対して使用できないためである。例えば、アプリケーションのあるインスタンスは、MPSのある領域に展開され、MPSのメモリ及びPEのあるサブセットを使用してよく、アプリケーションの別のインスタンスは、MPSの別の領域に展開され、MPSのメモリ及びPEの別のサブセットを使用してよい。例えばアプリケーションの命令を正しいメモリにロードすること、上記命令の実行を開始するために正しいPEと通信すること等のために、スワップ可能なコードは各インスタンスに固有のものである必要があってよい。
上述のように、アプリケーションをスワップイン又はスワップアウトするステップは、MPS上で実行されているアプリケーションと1つ若しくは複数の他のアプリケーションとの間(又はアプリケーションと1つ若しくは複数の物理的ポート若しくは周辺デバイスとの間)の通信を連結又は連結解除するステップを含んでよい。通信は、MPSのルーティングファブリックを通して発生してよい。あるアプリケーションをスワップアウトする場合、このアプリケーションの通信の終了を、ルーティングファブリックが使用不可能状態で残されないように注意深く統御する必要があり得る。例えばいくつかの実施形態では、スワップ可能なアプリケーションを、別のアプリケーションにデータのブロックを送信している間に粗雑に終了した場合、既存のルーティングは、システムをリセットするまで容易に再使用できなくなる場合がある。
アイソレータセルは、アプリケーションがスワップイン及びスワップアウトされるタイミングが確実には分からないシステムにおいては特に有用となり得る。アイソレータセルを採用することにより、通信の破壊及び消滅を確実に実施できるようにすることができ、システムを既知の良好な状態に維持できる。
MPX_ready_to_swap(...) ‐このアプリケーションは、その1つ又は複数の外部通信をクリーンアップした後安定状態となり、スワップの準備ができた状態であることを親タスクに通知する;及び
MPX_check_for_stop_request(...) ‐このアプリケーションは、親タスクがこのアプリケーションに計算を停止して安定状態となることを要求したかを検査する。
いくつかの実施形態では、システムコントローラプログラムは、アプリケーションスワップのシステムレベル制御を提供できる。システムコントローラは、MPSの外部のプロセッサ上で実行されてよい。例示的な実装形態では、システムコントローラは外部汎用プロセッサ上で実行され、親タスクにコマンドを通信し、続いて親タスクはこれらのコマンドを実行する。
スワップ可能なシステムの論理及び物理的設計並びに検証が終了したら、この設計を標的のシステム上で実行するために必要なオブジェクト及び情報ファイルを生成してよい。いくつかの実施形態ではこれは、以下のように実施できる。1)ベースシステムを生成及び検証する。2)全てのスワップ可能なアプリケーションを生成及び検証する。3)全てのリーガル構成を生成及び検証する。4)ベースシステムのための、アイソレータセルを含むデータベース及びオブジェクトファイルを生成する。5)各リーガル構成において各一意のアプリケーションインスタンスのための実行可能なスワップ手順を生成する。これを、スワップ可能なオブジェクトファイルが全てのアプリケーションインスタンスに関して生成されるまで、各リーガル構成に関して繰り返してよい。6)アプリケーションのセット全体に関するマスターデータベースを生成する。これにより、システムコントローラ及び親タスクが、実行時間中にこのアプリケーションのセットを管理できるようにすることができる。7)システムコントローラプログラムをGPP上にコンパイルする。
スワップ可能なシステムの実行は、システムコントローラを用いて開始できる。システムコントローラは初めに、親タスク及び(必要な場合は)ローダタスクをロードしてよい。次に親タスクは、以下を完了してよい。1)プリブート初期化を実行して、DDRコントローラ、IOコントローラ等の全てのリソースを初期化する。2)必要な場合、スワップ可能なアプリケーションに関するオブジェクトファイルを1つ又は複数のDRAMに伝送する。3)全てのスワップ不可能なアプリケーション及びアイソレータセルを含むベースシステムをロードする。4)システムコントローラからの命令を待機する。実行時間中、システムコントローラは、親タスクにコマンドを送信することによって実行中のシステムの状態を制御できる。
個々のアプリケーションを、これらが刺激に対して正しく応答することを保証することによる通常の方法で、別個に検証してよい。互いに通信するアプリケーションは、例えば上述の開発ワークフローを用いて、一緒に検証するべきである。全てのリーガル構成の検証は、全システムを検証するための通常のソフトウェア又はハードウェア技術を用いて実施するべきである。
複雑な多アプリケーションスワップ可能システムに関して、多数の異なるデバッグタスクを実施できる。これらのタスクは以下を含んでよい。
1.個々のアプリケーションを、アプリケーション生成及び検証プロセス中に通常通り別個にデバッグできる。
2.上述の手順を用いて、ある独立したアプリケーションに関するスワップ手順をデバッグできる。続いてスワッププロセス全体を、親タスク内及びローダタスク内の全てのコードを含むシミュレーション(又はハードウェアデバッグ)環境において実行及びデバッグできる。
3.全てのアクティブなアプリケーションに関するトップレベル構成テストベンチを画定し、デバッグコマンドを必要に応じて用いることによって、個々の構成のデバッグを進めることができる。安定な構成はデバッグされているため、シミュレータはいずれのアプリケーションスワップステップを実行する必要がなく、ただアプリケーションを実行できる。
4.スワップ可能なシステム全体をデバッグするために、デバッガは、ベースシステム、アイソレータセル、アプリケーションインスタンスを含む完全なプロジェクトをロードできる。デバッグセッション中のあらゆる時点において、シミュレータ(又はハードウェア上でのシステムの実行)は、どのアプリケーションインスタンスがスワップインされるか、又はスワップイン若しくはスワップアウトプロセスの途上であるかを追跡できる。この情報をユーザに表示でき、これによって実行中のアプリケーションはデバッグ可能となり、実行中でないアプリケーションは確認できるもののデバッグ可能ではなくなる。この情報を用いて、システムの統計を収集及び表示することもでき、またシステムレベルのスワップの挙動を表示することもできる。
Claims (15)
- マルチプロセッサシステムにおいてアプリケーションスワップを実施するための方法であって、
前記方法は:
複数のアプリケーションを前記マルチプロセッサシステム上にロードするステップであって、ここで前記マルチプロセッサシステムは、複数のプロセッサと、前記プロセッサ間に散在する複数のメモリとを含み、前記ロードするステップは、関連する前記プロセッサによる実行のために、複数の前記アプリケーションからの命令及びデータを、前記複数のメモリのうちの異なる1つずつに分散させるステップを含む、ステップ;
前記複数のアプリケーションを、前記マルチプロセッサシステム上で実行するステップであって、前記複数のアプリケーションは共に実行され、互いに通信して、リアルタイム動作を実施し、前記リアルタイム動作は、リアルタイムデータを伴う入力又は出力のうちの少なくとも一方を実施し、前記複数のアプリケーションは前記リアルタイムデータを処理し、前記複数のアプリケーションは、第1のアプリケーションと、複数の他のアプリケーションとを含む、ステップ;
前記第1のアプリケーションを第2のアプリケーションとスワップするステップであって、前記第2のアプリケーションは、前記マルチプロセッサシステム上に既にロードされて実行された前記複数のアプリケーションのうちの1つではなく、前記スワップは、前記複数の他のアプリケーションを停止させることなく実施され、前記複数の他のアプリケーションは、前記リアルタイム動作を実施するため及び前記リアルタイムデータを処理するために、前記スワップ中に実行され続ける、ステップ
を含み、
前記スワップ後、前記複数の他のアプリケーションは、前記第2のアプリケーションと共に実行され続け、
前記複数の他のアプリケーションの少なくともサブセットは、前記リアルタイム動作を実施するため及び前記リアルタイムデータを処理するために、前記第2のアプリケーションと通信する、方法。 - 前記スワップの前に、前記第1のアプリケーションは前記複数のプロセッサの第1のサブセット上で実行され、
前記スワップは:
前記複数のプロセッサの前記第1のサブセット上の前記第1のアプリケーションを停止させるステップ;
前記第1のアプリケーションの状態を保存するステップ;及び
前記第2のアプリケーションを、前記複数のプロセッサの前記第1のサブセットと関連するメモリにロードするステップ
を含む、請求項1に記載の方法。 - 前記スワップは更に:
前記第1のアプリケーションと前記他のアプリケーションのうちの1つ又は複数との通信を切断するステップ
を含む、請求項2に記載の方法。 - 1つ又は複数の第1のバッファメモリを、前記複数のプロセッサの前記第1のサブセットと、前記複数のプロセッサの他のサブセットとの間に連結し;
前記第1のアプリケーションの通信を切断するステップは、前記1つ又は複数の第1のバッファメモリを制御して、前記切断するステップを可能とするステップを含む、請求項3に記載の方法。 - 前記スワップは更に:
前記第2のアプリケーションの前記ロード後、前記第2のアプリケーションと前記他のアプリケーションのうちの前記1つ又は複数との通信を連結するステップ
を含む、請求項3に記載の方法。 - 前記スワップは更に:
前記第2のアプリケーションのスワップインの前に、前記複数のプロセッサの前記第1のサブセットを再設定して、前記複数のプロセッサの前記第1のサブセットを既知の状態とするステップ
を含む、請求項3に記載の方法。 - 前記複数の他のアプリケーションは、前記スワップが発生していることに気づかない、請求項1に記載の方法。
- 前記スワップの前に、前記第1のアプリケーションは前記複数のプロセッサの第1のサブセット上で実行され、
前記スワップは:
前記第1のアプリケーションを、前記マルチプロセッサシステムの外部の1つ又は複数の外部リソースから切断するステップ;
前記複数のプロセッサの前記第1のサブセット上の前記第1のアプリケーションを停止させるステップ;
前記第2のアプリケーションを前記複数のプロセッサの前記第1のサブセットと関連するメモリにロードするステップ;及び
前記第2のアプリケーションの前記ロード後、前記第2のアプリケーションを前記外部リソースと連結するステップ
を含む、請求項1に記載の方法。 - 前記マルチプロセッサシステムは、前記複数のプロセッサの少なくともサブセット間に散在する複数のバッファメモリを備え;
前記スワップは、前記スワップ中に、前記第1のアプリケーションへ又は前記第1のアプリケーションからの少なくとも一方において第1のバッファメモリが実施する通信を変更するステップを含む、請求項1に記載の方法。 - 前記第1のアプリケーションは、前記第1のバッファメモリの下流側にあり、
前記変更するステップは、前記第1のバッファメモリが前記スワップ中に送信側アプリケーションからデータを受信するのを中断させるステップを含む、請求項9に記載の方法。 - 前記変更するステップは更に、前記送信側アプリケーションが、前記第1のバッファメモリが前記送信側アプリケーションからデータを受信するのを中断したことに応答してストールするステップを含む、請求項10に記載の方法。
- 前記第1のアプリケーションは、前記第1のバッファメモリの下流側にあり、
前記変更するステップは、前記スワップ中に前記送信側アプリケーションからデータを受信することを継続して、以前に記憶した未送信データを上書きするよう、前記第1のバッファメモリを構成するステップを含む、請求項9に記載の方法。 - 前記第1のアプリケーションは、前記第1のバッファメモリの上流側にあり、
前記変更するステップは、前記第1のバッファメモリが前記スワップ中に受信側アプリケーションにデータを転送するのを中断させるステップを含む、請求項9に記載の方法。 - 前記変更するステップは、前記第1のアプリケーションからの着信データがそれ以上存在しなくなると、前記第1のバッファメモリが前記受信側アプリケーションへのデータ転送を中断するステップを含む、請求項13に記載の方法。
- 前記第1のアプリケーションは、前記第1のバッファメモリの上流側にあり、
前記変更するステップは、前記スワップ中に前記受信側アプリケーションにデータを2回以上繰り返し送信するよう、前記第1のバッファメモリを構成するステップを含む、請求項9に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/896,577 | 2013-05-17 | ||
US13/896,577 US9195575B2 (en) | 2013-05-17 | 2013-05-17 | Dynamic reconfiguration of applications on a multi-processor embedded system |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016513913A Division JP6228294B2 (ja) | 2013-05-17 | 2013-05-21 | マルチプロセッサ組込みシステム上でのアプリケーションの動的再構成 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018233478A Division JP2019057321A (ja) | 2013-05-17 | 2018-12-13 | マルチプロセッサ組込みシステム上でのアプリケーションの動的再構成 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018022524A true JP2018022524A (ja) | 2018-02-08 |
JP6453971B2 JP6453971B2 (ja) | 2019-01-16 |
Family
ID=48576563
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016513913A Active JP6228294B2 (ja) | 2013-05-17 | 2013-05-21 | マルチプロセッサ組込みシステム上でのアプリケーションの動的再構成 |
JP2017198250A Active JP6453971B2 (ja) | 2013-05-17 | 2017-10-12 | マルチプロセッサ組込みシステム上でのアプリケーションの動的再構成 |
JP2018233478A Pending JP2019057321A (ja) | 2013-05-17 | 2018-12-13 | マルチプロセッサ組込みシステム上でのアプリケーションの動的再構成 |
JP2020126852A Active JP7121076B2 (ja) | 2013-05-17 | 2020-07-27 | マルチプロセッサ組込みシステム上でのアプリケーションの動的再構成 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016513913A Active JP6228294B2 (ja) | 2013-05-17 | 2013-05-21 | マルチプロセッサ組込みシステム上でのアプリケーションの動的再構成 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018233478A Pending JP2019057321A (ja) | 2013-05-17 | 2018-12-13 | マルチプロセッサ組込みシステム上でのアプリケーションの動的再構成 |
JP2020126852A Active JP7121076B2 (ja) | 2013-05-17 | 2020-07-27 | マルチプロセッサ組込みシステム上でのアプリケーションの動的再構成 |
Country Status (5)
Country | Link |
---|---|
US (5) | US9195575B2 (ja) |
EP (4) | EP3537295A3 (ja) |
JP (4) | JP6228294B2 (ja) |
CN (2) | CN105359098B (ja) |
WO (1) | WO2014185933A1 (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102165460B1 (ko) * | 2013-11-27 | 2020-10-14 | 삼성전자 주식회사 | 전자 장치 및 전자 장치의 메모리 관리 방법 |
US8990793B1 (en) * | 2013-12-05 | 2015-03-24 | Google Inc. | Updating an operating system |
US9690894B1 (en) * | 2015-11-02 | 2017-06-27 | Altera Corporation | Safety features for high level design |
US9928168B2 (en) | 2016-01-11 | 2018-03-27 | Qualcomm Incorporated | Non-volatile random access system memory with DRAM program caching |
CN105785856B (zh) * | 2016-02-26 | 2018-07-20 | 西安电子科技大学 | 基于弹载应用的程序动态分段加载装置和方法 |
WO2018013651A1 (en) * | 2016-07-12 | 2018-01-18 | Proximal Systems Corporation | Apparatus, system and method for proxy coupling management |
DE102017130552B3 (de) | 2017-12-19 | 2019-03-14 | Beckhoff Automation Gmbh | Verfahren zur Datenverarbeitung und speicherprogrammierbare Steuerung |
CN115833874A (zh) * | 2019-02-04 | 2023-03-21 | 相干逻辑公司 | 用于执行虚拟分段的方法以及有线通信设备 |
GB201904267D0 (en) * | 2019-03-27 | 2019-05-08 | Graphcore Ltd | A networked computer with multiple embedded rings |
US11488650B2 (en) * | 2020-04-06 | 2022-11-01 | Memryx Incorporated | Memory processing unit architecture |
US11165846B2 (en) * | 2019-06-21 | 2021-11-02 | International Business Machines Corporation | Dynamically converting static and dynamic connections in a streaming application |
CN110362362A (zh) * | 2019-07-24 | 2019-10-22 | 北京明略软件系统有限公司 | 任务调度方法及装置、存储介质、电子装置 |
KR102322727B1 (ko) * | 2019-07-29 | 2021-11-05 | 에스케이하이닉스 주식회사 | 데이터 스왑을 위한 메모리 시스템 및 그 동작방법 |
CN110457107B (zh) * | 2019-08-09 | 2021-01-15 | 珠海格力电器股份有限公司 | 组态软件操作指令管理方法、装置和系统 |
CN110569979B (zh) * | 2019-09-09 | 2022-09-06 | 中国科学技术大学 | 面向嘈杂中型量子设备的逻辑-物理比特重映射方法 |
DE102019219464B3 (de) | 2019-12-12 | 2021-05-12 | Volkswagen Aktiengesellschaft | Verfahren zum Betrieb eines selbstfahrenden Fahrzeugs sowie Steuerungssystem zum Durchführen eines solchen Verfahrens |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07311753A (ja) * | 1994-05-11 | 1995-11-28 | Internatl Business Mach Corp <Ibm> | 複数のノード内の制御コードを更新する方法および装置 |
JP2007272895A (ja) * | 2006-03-31 | 2007-10-18 | Technology Properties Ltd | コンピュータプロセッサアレイの操作方法および装置 |
WO2012051577A1 (en) * | 2010-10-15 | 2012-04-19 | Coherent Logix, Incorporated | Disabling communication in a multiprocessor system |
US20130081044A1 (en) * | 2011-09-27 | 2013-03-28 | Mark Henrik Sandstrom | Task Switching and Inter-task Communications for Multi-core Processors |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3052891B2 (ja) * | 1997-05-26 | 2000-06-19 | 日本電気株式会社 | 信号処理システム |
US6952827B1 (en) | 1998-11-13 | 2005-10-04 | Cray Inc. | User program and operating system interface in a multithreaded environment |
US7107329B1 (en) * | 1999-05-21 | 2006-09-12 | Lucent Technologies Inc. | In networks of interconnected router nodes for routing data traffic, a method of and system for imperceptibly upgrading router node software and the like without traffic interruption |
US6678645B1 (en) | 1999-10-28 | 2004-01-13 | Advantest Corp. | Method and apparatus for SoC design validation |
US7089517B2 (en) | 2000-09-29 | 2006-08-08 | Advantest Corp. | Method for design validation of complex IC |
US6708326B1 (en) * | 2000-11-10 | 2004-03-16 | International Business Machines Corporation | Method, system and program product comprising breakpoint handling mechanism for debugging and/or monitoring a computer instruction sequence |
US7047330B2 (en) * | 2001-03-06 | 2006-05-16 | Ati Technologies, Inc. | System for digital stream transmission and method thereof |
US7234144B2 (en) * | 2002-01-04 | 2007-06-19 | Microsoft Corporation | Methods and system for managing computational resources of a coprocessor in a computing system |
US7415594B2 (en) * | 2002-06-26 | 2008-08-19 | Coherent Logix, Incorporated | Processing system with interspersed stall propagating processors and communication elements |
US8140829B2 (en) | 2003-11-20 | 2012-03-20 | International Business Machines Corporation | Multithreaded processor and method for switching threads by swapping instructions between buffers while pausing execution |
US7565653B2 (en) * | 2004-02-20 | 2009-07-21 | Sony Computer Entertainment Inc. | Methods and apparatus for processor task migration in a multi-processor system |
US7853934B2 (en) | 2005-06-23 | 2010-12-14 | Hewlett-Packard Development Company, L.P. | Hot-swapping a dynamic code generator |
US8826228B2 (en) * | 2006-03-27 | 2014-09-02 | Coherent Logix, Incorporated | Programming a multi-processor system |
US8141102B2 (en) * | 2008-09-04 | 2012-03-20 | International Business Machines Corporation | Data processing in a hybrid computing environment |
CN103109279B (zh) * | 2010-06-22 | 2016-08-31 | 富士通株式会社 | 多核处理器系统,控制程序以及控制方法 |
US20130117168A1 (en) * | 2011-11-04 | 2013-05-09 | Mark Henrik Sandstrom | Maximizing Throughput of Multi-user Parallel Data Processing Systems |
TW201235833A (en) * | 2011-02-16 | 2012-09-01 | Ind Tech Res Inst | System and method for multi-core synchronous debugging of a multi-core platform |
US9009678B2 (en) * | 2011-06-28 | 2015-04-14 | International Business Machines Corporation | Software debugging with execution match determinations |
US8924619B2 (en) * | 2013-03-15 | 2014-12-30 | Seagate Technology Llc | Unified message-based communications |
-
2013
- 2013-05-17 US US13/896,577 patent/US9195575B2/en active Active
- 2013-05-21 JP JP2016513913A patent/JP6228294B2/ja active Active
- 2013-05-21 EP EP19158284.0A patent/EP3537295A3/en not_active Ceased
- 2013-05-21 EP EP23156978.1A patent/EP4220399A3/en active Pending
- 2013-05-21 CN CN201380077900.XA patent/CN105359098B/zh active Active
- 2013-05-21 EP EP13726971.8A patent/EP2997469B1/en active Active
- 2013-05-21 CN CN201910513077.1A patent/CN110083440B/zh active Active
- 2013-05-21 EP EP17185840.0A patent/EP3279793B1/en active Active
- 2013-05-21 WO PCT/US2013/041942 patent/WO2014185933A1/en active Application Filing
-
2015
- 2015-10-23 US US14/921,281 patent/US9990227B2/en active Active
-
2017
- 2017-10-12 JP JP2017198250A patent/JP6453971B2/ja active Active
-
2018
- 2018-05-10 US US15/976,021 patent/US11023272B2/en active Active
- 2018-12-13 JP JP2018233478A patent/JP2019057321A/ja active Pending
-
2020
- 2020-07-27 JP JP2020126852A patent/JP7121076B2/ja active Active
-
2021
- 2021-04-29 US US17/243,890 patent/US11726812B2/en active Active
-
2023
- 2023-06-22 US US18/212,888 patent/US20230409380A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07311753A (ja) * | 1994-05-11 | 1995-11-28 | Internatl Business Mach Corp <Ibm> | 複数のノード内の制御コードを更新する方法および装置 |
JP2007272895A (ja) * | 2006-03-31 | 2007-10-18 | Technology Properties Ltd | コンピュータプロセッサアレイの操作方法および装置 |
WO2012051577A1 (en) * | 2010-10-15 | 2012-04-19 | Coherent Logix, Incorporated | Disabling communication in a multiprocessor system |
US20130081044A1 (en) * | 2011-09-27 | 2013-03-28 | Mark Henrik Sandstrom | Task Switching and Inter-task Communications for Multi-core Processors |
Also Published As
Publication number | Publication date |
---|---|
CN105359098A (zh) | 2016-02-24 |
CN105359098B (zh) | 2019-07-02 |
EP3537295A3 (en) | 2019-11-27 |
US9990227B2 (en) | 2018-06-05 |
US20180260240A1 (en) | 2018-09-13 |
US20160041842A1 (en) | 2016-02-11 |
EP4220399A3 (en) | 2023-09-27 |
EP3279793A1 (en) | 2018-02-07 |
CN110083440A (zh) | 2019-08-02 |
EP4220399A2 (en) | 2023-08-02 |
US11023272B2 (en) | 2021-06-01 |
JP2016519378A (ja) | 2016-06-30 |
EP2997469A1 (en) | 2016-03-23 |
JP6228294B2 (ja) | 2017-11-08 |
JP6453971B2 (ja) | 2019-01-16 |
US11726812B2 (en) | 2023-08-15 |
US20210294643A1 (en) | 2021-09-23 |
US20140344527A1 (en) | 2014-11-20 |
JP7121076B2 (ja) | 2022-08-17 |
US20230409380A1 (en) | 2023-12-21 |
WO2014185933A1 (en) | 2014-11-20 |
JP2020184375A (ja) | 2020-11-12 |
JP2019057321A (ja) | 2019-04-11 |
EP3279793B1 (en) | 2019-12-04 |
US9195575B2 (en) | 2015-11-24 |
CN110083440B (zh) | 2023-08-04 |
EP3537295A2 (en) | 2019-09-11 |
EP2997469B1 (en) | 2017-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6453971B2 (ja) | マルチプロセッサ組込みシステム上でのアプリケーションの動的再構成 | |
JP6856612B2 (ja) | 多層相互接続による分散型プロセッサを有する処理システム | |
US9829962B2 (en) | Hardware and software enabled implementation of power profile management instructions in system on chip | |
US7849441B2 (en) | Method for specifying stateful, transaction-oriented systems for flexible mapping to structurally configurable, in-memory processing semiconductor device | |
CN109154924A (zh) | 多个上行链路端口设备 | |
CN105793829A (zh) | 集成组件互连 | |
US10896476B2 (en) | Repository of integration description of hardware intellectual property for NoC construction and SoC integration | |
CN109582998A (zh) | 小巧PCIe端点的根复合体集成端点仿真 | |
US20230409395A1 (en) | Runtime Virtualization of Reconfigurable Data Flow Resources | |
CN112306946B (zh) | 一种多核处理器及其执行复杂计算的方法 | |
US10430215B1 (en) | Method and system to transfer data between hardware emulator and host workstation | |
US20230134744A1 (en) | Execution State Management | |
CN116841731A (zh) | 一种fpga虚拟化资源调度系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180822 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180828 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181010 |
|
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: 20181113 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20181213 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6453971 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
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 |