JP5131269B2 - マルチプロセッシングシステム - Google Patents

マルチプロセッシングシステム Download PDF

Info

Publication number
JP5131269B2
JP5131269B2 JP2009505014A JP2009505014A JP5131269B2 JP 5131269 B2 JP5131269 B2 JP 5131269B2 JP 2009505014 A JP2009505014 A JP 2009505014A JP 2009505014 A JP2009505014 A JP 2009505014A JP 5131269 B2 JP5131269 B2 JP 5131269B2
Authority
JP
Japan
Prior art keywords
task
cpu
slave cpu
memory
task set
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.)
Expired - Fee Related
Application number
JP2009505014A
Other languages
English (en)
Other versions
JPWO2008114415A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2008114415A1 publication Critical patent/JPWO2008114415A1/ja
Application granted granted Critical
Publication of JP5131269B2 publication Critical patent/JP5131269B2/ja
Expired - Fee Related 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/46Multiprogramming arrangements
    • 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/445Program loading or initiating

Description

本発明は、静的ロードによって指定されたタスクを処理するマルチプロセッシングシステムに関する。
従来より、組み込みシステムやシステムLSIにおいて、1つのチップ上に複数のCPUコアやDSPコアを組み込んだシステムが設計されている。これらのシステムをマルチプロセッシングシステムといい、対称型マルチプロセッシング(Symmetric Multi−Processing:SMP)システムと、非対称型マルチプロセッシング(Asymmetrical Multi−Processing:AMP)システムとの2種類に大別される。
(SMPシステム)
図9は、SMPシステムの構成を示すブロック図である。SMPシステム900では、基本的に複数のCPU930(CPU0〜CPU3)が、それぞれ同等なものとして振舞うことができる。したがって、CPU930がタスク910を処理する際には、それぞれ、同じプログラムコードを利用することができる。SMPシステム900のCPU930がおこなう処理は、カーネルプロセスやユーザプロセスなどの区別なく、なおかつ、複数のCPU930を使って同時に実行させることもできる。
また、SMPシステム900は、SMPシステムをサポートするSMP対応OS920が必要となる。さらに、SMPシステム900において共有化されたプログラムコードは、マルチプロセッサであっても利用可能である必要がある。なお、SMPシステム900では、シングルプロセッサのシステムで、割り込み禁止とタスク優先度に依存した排他制御や実行順序制御をおこなうようなプログラムは正常に動作しなくなる可能性がある。
(AMPシステム)
図10〜12は、AMPシステムの構成例1〜3を示すブロック図である。AMPシステムとは、SMPシステムではないマルチプロセッシングシステムであり、OSのカーネルを実行するCPU、ユーザアプリケーションのある機能を実行するCPUというように、各CPUにはそれぞれの役割が決定されている。また、AMPシステムは、図10〜12のように様々な構成例がある。
図10のAMPシステム1000は、複数のCPU1030(CPU0〜CPU3)を備えている。CPU0〜CPU3は、同種であっても異種であってもよく、各CPUに、それぞれ利用するOS1020(OS0〜OS3)が設定されている。また、AMPシステム1000の場合、上述したようにCPU1030ごとに役割が決められているため、処理対象のタスク1010も、CPU0によって処理するタスクA(タスク1〜3)、CPU1によって処理するタスクB(タスク4〜6)というようにCPU1030によって処理するタスク1010が割り振られている。このような場合、各CPU1030は、割り振られたタスクにしかアクセスできない。
また、図11のAMPシステム1100は、複数のCPU1130(CPU0〜CPU3)を備えているが、各CPU1130は同種類のCPUとする。このように、複数のCPU1130が同種であれば、利用するOSは、同一の種類のOS1120を利用することができる。したがって、同一のOS1120を利用して各CPU1130が割り振られたタスク1110を処理する。
また図12のAMPシステム1200は、複数のCPU1230(CPU0〜CPU3)を備えており、CPU0とCPU0は同種のCPUとする。このような場合、同種のCPU0とCPU1とは、共通のOS1220(OS0)を利用してタスク1210の中のタスクAを処理する。その他のCPU1230(CPU2、CPU3)は、それぞれ対応するOS1220を利用して割り振られたタスク1210(タスクB、C)を処理する。
また、マルチプロセッシングシステムの構成方式には、たとえば、メインメモリを複数のCPUによって共有し、クロスバースイッチなどによってメインメモリとCPUとの間を密結合するTCMP(Tightly Coupled Multi Processor)システムや、メインメモリを複数のCPUによって共有しても、共有しなくてもよく、メインメモリとCPUとを疎結合するLCMP(Loosely Coupled Multi Processor)システムがある。
一般的に、組み込みシステムにおいて、ある既存のOSによって開発したソフトウェア資産/プログラム資産があると、新しいシステムに変更した場合であっても、ソフトウェア資産/プログラム資産を利用させたい。したがって、既存のOSによってプログラムをロードする必要がある。特に、新しいシステムがAMPシステムの場合、スレーブCPUで実行するプログラムは既存のプログラムをそのまま既存のOSで動作させたい場合がある。このような場合には、ソフトウェア資産/プログラム資産を利用する際に既存のOSをロードしてプログラムを実行させる。
既存のOSをロードしてプログラムを実行させる際、プログラムを静的にリンクする手法と、動的にリンクする手法とがある。静的にリンクするとは、プログラム作成時、プログラムをモジュールに分割し、コンパイルした後に、オブジェクトファイルを汎用ライブラリと一緒にリンクして実行可能形式のロードモジュール(バイナリ)を作成する手法である。また、動的なロードとは、プログラムの実行開始時、または、実行中にルーチンが呼び出されたときに、初めて他のモジュールやライブラリと結合する手法である(たとえば、下記特許文献1参照。)。
静的にプログラムをロードする場合は、上述のように、スレーブCPUでは、実行する可能性があるすべてのプログラムをロードしておく必要がある。一方、OSがプログラムを動的にロードして、リンクして実行できる仮想記憶をサポートしたOS(Windows(登録商標)やUNIX(登録商標)やLinux等)の場合、プログラムのうち、複数のタスクから共有されるコードは、位置独立コード(PIC)で記載されており、共有ライブラリ(ダイナミックリンクライブラリ)として、実行時に動的にリンクする。
特開2002−99439号公報
しかしながら、上述したAMPシステムやLCMPシステムにおいては、動的にプログラムをロードができない既存のOSを使用するものも多い。動的にプログラムをロードできない場合、スレーブCPUは、あるOS1をロードする際には、OS1を利用して実行させる可能性のあるすべてのプログラム(タスク)をあらかじめメインメモリにロードしておかなければならない。そのために、メインメモリは、他の処理に利用するためのメモリ領域が小さくなってしまう。したがって、プログラムのロードによって各CPUの処理速度の低下を招く恐れがあるという問題があった。
上述のような問題が生じた場合、一般的には、共有ライブラリ、ダイナミックリンクローダ(DLL)といった技術が用いられている。この技術を実現するシステムは、OSが仮想アドレス空間(Virtual Address Space)と実アドレス空間(Real Address Space)との対応をページ単位で管理するMMU(Paged Memory Management Unit)を使用するため、仮想記憶(Virtual Memory)の仕組みを備えている必要があった。
しかしながら、μITRON仕様のOSなどに代表される組み込みプロセッサ用のOSには、仮想記憶(Virtual Memory)の仕組みを備えていないものが多々存在する。μITRON仕様のOSでは、通常、CPU上で実行されるOSと、CPU上で実行される「複数のタスクを構成する関数」は、静的にリンクされている。このため、ロードモジュールは絶対アドレスになっていることが多い。
上述のように、仮想記憶の仕組みを備えていない場合、アプリケーションプログラムは、そのタスク自身が使用する(関数呼び出しをする)すべてのライブラリを静的にリンクしなければならない。アプリケーションプログラムを動的にロードしようとすると、アプリケーションプログラムごとに、そのタスク自身が使用するすべてのライブラリを静的にリンクしなければならない。すなわち、Cライブラリなどの1つのアプリケーションプログラムごとに存在することになる。したがって、複数のアプリケーションプログラムを実行させようとすると、同じライブラリが、アプリケーションプログラムの数だけ、メインメモリ上のアドレス空間に存在しなければならず、メインメモリが多く必要となるという問題があった。
また、新しいOSの上で、すでに開発されているアプリケーションプログラムをDLLに対応させるには、アプリケーションプログラムの変更と、OSの変更が必要になり、個別にプログラムを開発しなければならず、開発コストがかってしまうという問題があった。
本発明は、上記に鑑みてなされたものであって、メモリに負担をかけることなく、タスクに応じてOSを切り替えて、適切にタスクを実行させることを目的とする。
上述した課題を解決し、目的を達成するために、本発明にかかるマルチプロセッシングシステムは、実行指示の対象となった第1タスクと当該第1タスクに対応した第1オペレーションシステム(以下、「OS」という)との組み合わせからなる第1OSタスクセットをメモリに格納する格納部と、前記メモリに格納された前記第1OSタスクセットを参照し、当該第1OSタスクセットを構成するOSをロードし、前記実行指示の対象となった第1タスクを実行するタスク実行部とを備えることを特徴とする。
また、上記発明において、前記マルチプロセッシングシステムは、マスタCPUとスレーブCPUとを備え、前記格納部は前記マスタCPUによって構成され、前記タスク実行部は、前記スレーブCPUによって構成されてもよい。
これらの発明によれば、これから実行するタスクと、実行対象となるタスクを処理するために必要なデータのみがメモリにロードされる。
また、上記発明において、前記マスタCPUは、前記スレーブCPUに実行させる前記第1タスクを変更する場合、前記メモリに格納した前記第1OSタスクセットを、第2タスクと当該第2タスクに対応したOSとを組み合わせた第2OSタスクセットに入れ替えてもよい。
この発明によれば、タスク実行に必要ないデータは、メインメモリから除外される。
また、上記発明において、前記スレーブCPUは、実行する前記第1または前記第2タスクに応じた前記第1または前記第2OSタスクセットを格納した前記メモリの物理アドレスと、前記第1または前記第2OSタスクセットの論理アドレスとの対応をあらわすメモリマップとを作成し、当該メモリマップを参照して前記論理アドレスを前記物理アドレスに変換するアドレス変換部を備え、前記マスタCPUからの前記実行指示に示された前記第1または前記第2OSタスクセットの論理アドレスを、前記アドレス変換部によって物理アドレスに変換して、前記メモリから前記第1または前記第2OSタスクセットを読み出てもよい。
さらに上記発明において、前記マスタCPUは、前記第1または前記第2OSタスクセットの格納場所が変更になると、前記アドレス変換部に、前記メモリマップにおける前記第1または前記第2OSタスクセットの物理アドレスを更新させてもよい。
この発明によれば、タスクの実行に必要な情報を高速にメモリにロードすることができる。
また、上記発明において、前記マスタCPUは、前記スレーブCPUが前記実行指示に応じて指定されたタスクの処理を開始すると、当該タスクのつぎに前記スレーブCPUに処理させるタスクのOSタスクセットを構成するOSをロードしてもよい。
この発明によれば、スレーブCPUが連続してタスクの実行する際の待機時間を短縮させることができる。
また、上記発明のマルチプロセッシングシステムは、AMPシステムもしくはLCMPシステムによって構成されてもよい。
本発明にかかるマルチプロセッシングシステムは、メモリに負担をかけることなく、タスクに応じてOSを切り替えることによって適切にタスクを実行させることができるという効果を奏する。
図1は、本実施の形態にかかるマルチプロセッシングシステムにおけるメインメモリの利用形態を示す説明図である。 図2は、本実施の形態にかかるマルチプロセッシングシステムのハードウェアの構成の一例を示すブロック図である。 図3は、マルチプロセッシングシステムのタスク実行処理の手順を示すフローチャートである。 図4は、マルチプロセッシングシステムのアドレス変換処理を示す説明図である。 図5は、AMPシステムにおけるマスタCPUとスレーブCPUとの構成を比較する説明図である。 図6は、アドレス変換機構の構成を示すブロック図である。 図7は、論理アドレスと物理アドレスの対応の変化例を示すブロック図である。 図8は、OSタスクセットの切り替えタイミングを示すタイミングチャートである。 図9は、SMPシステムの構成例を示すブロック図である。 図10は、AMPシステムの構成例1を示すブロック図である。 図11は、AMPシステムの構成例2を示すブロック図である。 図12は、AMPシステムの構成例3を示すブロック図である。
符号の説明
200 マルチプロセッシングシステム
201 マスタCPU
202 DMAC
203 スレーブCPU
204 RAM
205 割り込みコントローラ
206 リセットコントローラ
以下に添付図面を参照して、この発明にかかるマルチプロセッシングシステムの好適な実施の形態を詳細に説明する。
(メインメモリの利用形態)
まず、本発明にかかるマルチプロセッシングシステムの特徴となるメインメモリの利用形態について説明する。図1は、本実施の形態にかかるマルチプロセッシングシステムにおけるメインメモリの利用形態を示す説明図である。
図1のように、本発明にかかるマルチプロセッシングシステムでは、メインメモリ100にOSタスクセット110をロードする。OSタスクセットとは、スレーブCPUにロードするOSと、このOSによって実行させる複数のプログラムのタスクとの組み合わせである。OSタスクセットは、通常、マルチプロセッシングシステムからアクセス可能な記録媒体のファイルシステム120に格納されている。また、OSタスクセットを構成するOSおよびタスクは、静的にリンクされている。
メインメモリ100に格納されるOSタスクセット130は、タスクの実行時に、マスタCPUなど所定プロセッサからの指示に応じて、ファイルシステム120から読み出される。また、頻繁に実行されるタスクの場合、メインメモリ100の中に該当するOSタスクセットが読み出される。
(マルチプロセッシングシステムのハードウェア構成)
つぎに、上述のようなメインメモリの利用形態を適用させたマルチプロセッシングシステムのハードウェア構成について説明する。図2は、本実施の形態にかかるマルチプロセッシングシステムのハードウェアの構成の一例を示すブロック図である。図2のように、マルチプロセッシングシステム200は、マスタCPU201と、DMAC202と、スレーブCPU203と、RAM204と、割り込みコントローラ205と、リセットコントローラ206とを含んで構成される。
マスタCPU201は、マルチプロセッシングシステム100全体を制御する。また、処理対象となっているタスクをスレーブCPU203に分散して実行させる。DAMC202は、マスタCPU201やスレーブ202を介すことなく、直接RAM204にアクセスしてデータ転送おこなう送受信用メモリ・コントローラである。スレーブCPU203は、マスタCPU201の指示に応じて指定されたタスクを実行する。なお、マスタCPU201およびスレーブCPU203の機能については詳しく後述する。
RAM204は、高速アクセス可能な記録媒体である。また、RAM204は、マルチプロセッシングシステム200のメインメモリとして機能し、マスタCPU201およびスレーブCPU203のワークエリアとして利用される。
割り込みコントローラ205は、マスタCPU201からスレーブCPU203のタスク実行指示に対して、割り込み処理をおこなう。割り込みコントローラ205は、割り込み指示を受け付けると、割り込み指示の優先度やマスク状態から判断してマスタCPU201に割り込み要求信号を発生させる。リセットコントローラ206はリセット指示を受け付けると、対象となったスレーブCPU203の処理をリセットする。
つぎに、マスタCPU201の機能について詳細に説明する。マスタCPU201は、図1に示したようなOSタスクセットを利用してスレーブCPU203にタスクを実行させるため、(1)スレーブCPUの実行開始と実行停止を制御する機能、(2)スレーブCPUで動作するOSタスクセットを退避・復元する機能、(3)スレーブCPUにタスクセットの変更が必要なことを通知する機能の3種類の機能を備えている。
(1)スレーブCPUの実行開始と実行停止を制御する機能とは、具体的には、スレーブCPU203にリセットを印加および解除する処理と、スレーブCPU203の実行を一時停止させる処理と、スレーブCPU203の指定したアドレスに格納されたタスクを実行させる処理を制御する機能である。
また、(2)スレーブCPU203によって実行させるOSタスクセットを退避・復元する機能とは、具体的には、マスタCPU201からアクセスできるメモリ領域とスレーブCPU203がアクセスできるメモリ領域の間におけるデータ転送処理を制御する機能である。たとえば、マスタCPU201からのロード・ストア機能、DMAデータ転送機能、LANなどを介したデータ転送機能が挙げられる。
また、(3)スレーブCPU201にタスクセットの変更を通知する機能とは、具体的には、マスタCPU201とスレーブCPU203間の割り込み要求処理、マスタCPU201とスレーブCPU203間のメッセージ通信処理を制御する機能である。メッセージ通信処理としては、たとえば、マスタCPU201とスレーブCPU203からアクセス可能な共有メモリもしくはマスタCPU201とスレーブCPU203間のメッセージデータの通信や、マスタCPU201とスレーブCPU203上で動作する割り込み処理プログラムの通信が挙げられる。
つぎに、スレーブCPU203の機能について説明する。スレーブCPU203は、マスタCPU201の指示に応じてタスクを実行させるため、(1)実行状態および実行可能状態のプロセス・タスクを知る機能、(2)実行状態および実行可能状態のプロセス・タスクのリストを保持する機能、(3)実行状態および実行可能状態のプロセス・タスクの実行を一時停止・再開する機能、(4)OS起動時に、プロセス・タスクのリストにあるプロセス・タスクを再開もしくは初期起動させる機能の4種類の機能を備えている。
(1)実行状態および実行可能状態のプロセス・タスクを知る機能、具体的には、スレーブCPU203上で動作するプロセス・タスクの管理領域にアクセスし、タスクの状態をリードして把握するための処理をおこなう機能である。
また、(2)実行状態および実行可能状態のプロセス・タスクのリストを保持する機能は、具体的には、実行状態および実行可能状態のプロセス・タスクのリストを作成して、スレーブCPU203からアクセス可能なメモリ上にそのリストを保存処理する機能である。
また、(3)実行状態および実行可能状態のプロセス・タスクの実行を一時停止・再開する機能は、具体的には、プロセス・タスクのリストにある実行状態および実行可能状態のプロセス・タスクを強制待ち状態(SUSPEND)処理や、プロセス・タスクのリストにある強制待ち状態(SUSPEND)にされたプロセス・タスクを再開(Resume)処理する機能である。
また、(4)OS起動時に、プロセス・タスクのリストにあるプロセス・タスクを再開もしくは初期起動させる機能は、具体的には、プロセス・タスクのリストにあるプロセス・タスクを再開するか、初期起動して実行する処理である。
(マルチプロセッシングシステムのタスク実行処理)
つぎに、上述したような機能を備えたマルチプロセッシングシステム100におけるタスク実行処理の手順について説明する。図3は、マルチプロセッシングシステムのタスク実行処理の手順を示すフローチャートである。
図3のように、マルチプロセッシングシステム100の場合、マスタCPU201からの要求をトリガとして、スレーブCPU203がタスク実行処理をおこなう。図3のフローチャートでは、マスタCPU201からOS起動/再開(S301)、タスク再開/ロード要求(S305)、OSタスクセットロード/入れ替え(ステップS309)の3種類のトリガある。したがって、トリガごとのスレーブCPU203の処理手順について説明する。
マスタCPU201からスレーブCPU203へOS起動/再開(S301)が出力された場合、まず、メモリマップ設定または復元をおこない(ステップS302)、対象となるOSが初期化済みか否かを判断する(ステップS303)。ここで、対象となるOSが初期化済みでない場合(ステップS303:No)、OS初期化処理をおこない(ステップS304)、OS実行に移行する(ステップS306)。
一方、ステップS303において、対象となるOSが初期化済みであった場合(ステップS303:Yes)、動的ロード・ドライバの処理に移行する(ステップS308)。動的ロード・ドライバでは、まず、レジスタの復元をおこない(ステップS316)、一時停止タスクを再開する(ステップS317)。
ここで、動的ロード・ドライバ処理について説明する。これから説明する動的ロード・ドライバのステップS311〜S315の処理は、OS実行状態(ステップS306)が、トリガとなる。まず、ステップS306の処理内容から、メインメモリに格納されているOSタスクセットの実行状態および実行可能状態のプロセス・タスクのリストを作成し、保存する(ステップS311)。そして、保存したリストに記載されているタスクの実行を強制待ち状態(SUSPEND)して、OSタスクセットの実行を一時停止する(ステップS312)。
そして、スレーブCPU203は、ステップS312によってOSタスクセットが停止したことを通知するマスタCPU201に通知する(ステップS313)。その後、タスクの一時停止をレジスタに保存し(ステップS314)、必要に応じてスレーブCPU203を停止させ(ステップS315)、処理を終了する。
また、マスタCPU201からスレーブCPU203へ、タスク再開/ロード要求(S305)が出力された場合、ステップS305のタスク再開/ロード要求に応じて、スレーブCPU203は、OSを実行させる(ステップS306)。そして、OSタスクセットに応じて実行されたOSと組み合わせられたタスクを実行する(ステップS307)。なお、スレーブCPU上で対応するプログラムを含むOSタスクセットが実行されていないときには、マスタCPU201からスレーブCPU203へ、OSタスクセットの変更が必要なことを通知する。
また、マスタCPU201からスレーブCPU203へOSタスクセットロード/入れ替えが出力された場合(ステップS309)、OSタスクセットを入れ替えるために、OSタスクセットをファイルシステムからメインメモリにロード、もしくは、マスタCPU201からアクセスできる他のメモリからスレーブCPUからアクセスできるメインメモリ上にロードする(ステップS310)。なお、OSタスクセットの入れ替えがあった場合には、スレーブCPU203がOSタスクセットを読み出す際のメモリマップを変更しておかなければならない。このメモリマップの変更については詳しく後述する。
(マルチプロセッシングシステムのアドレス変換処理)
ここで、プロセッシングシステムのアドレス変換処理について説明する。図4は、マルチプロセッシングシステムのアドレス変換処理を示す説明図である。図4のように、スレーブCPU203には、論理メモリマップ400と、物理メモリマップ410とが格納されている。
論理メモリマップ400は、スレーブCPU203によって与えられたアドレスに一般データ401や、OSタスクセット402の呼び出し時に用いられる論理アドレスが記録されている。一方、物理アドレスマップ410には、アドレスに一般データ411や、複数のOSタスクセット420(OSタスクセット421〜423)が格納されている物理アドレスが記録されている。
スレーブCPU203においてタスクが実行される際には、OSタスクセットは、物理メモリマップ410に記録された物理アドレスで呼び出される。したがって、論理アドレスには、対応する物理アドレスが記録されている。しかしながら、物理アドレスは、格納場所の移動に伴い書き換えられる。したがって、物理アドレスの書き換えは、即座に論理メモリマップ400の各論理アドレスに反映される。このようなアドレス変換機構によって、スレーブCPU203高速なOSタスクセットの入れ替えを実現する。
上述したアドレス変換処理をおこなうには、マスタCPU201、スレーブCPU203にそれぞれ後述のような機能を備える必要がある。まず、マスタCPU201には、スレーブCPU203のメモリマップを制御する機能が必要となる。スレーブCPU203のメモリマップを制御する機能とは、具体的には、スレーブCPU203にメモリマップの変更が必要な旨の通知処理をおこなう機能である。
また、スレーブCPU203には、(1)複数のOSタスクセットを保持し、切り替えるためのアドレス変換機能と、(2)メモリマップを変更する機能とが必要となる。(1)複数のOSタスクセットを保持し切り替えるためのアドレス変換機能とは、具体的には、論理アドレスと物理アドレスとを変換処理する機能である。また、(2)メモリマップを変更する機能とは、論理アドレスと物理アドレスを変換するハードウェア機構の設定を操作してメモリマップを変更する機能である。
つぎに、上述したマルチプロセッシングシステムの各機能を用いて具体的な実施例について説明する。
(実施例1:OSタスクセットを利用したロード)
実施例1では、マルチプロセッシングシステムに上述したOSタスクセットを適用させた場合の動作について説明する。図5は、AMPシステムにおけるマスタCPUとスレーブCPUとの構成を比較する説明図である。
図5において、AMPシステム500は、従来例の構成を示している。一方、AMPシステム510は、本発明にかかるマスタCPUとスレーブCPUとの構成を反映している。AMPシステム500の場合、マスタCPU501、スレーブCPU502それぞれには、静的ロードOSが搭載されている。したがって、スレーブCPU502がタスクを実行する場合には、静的ロードOSと、静的ロード(静的リンク)プログラムとを併せた複数のプログラム503が一緒にメインメモリにロードされる。
一方、AMPシステム510のマスタCPU511には、スレーブCPU動的ロード制御モジュールが追加されている。このスレーブCPU動的ロード制御モジュールによってスレーブCPUの実行制御(実行開始、実行停止)、メモリアドレス変換の制御、スレーブCPUへのアクセスをおこなうことができる。
スレーブCPU動的ロード制御モジュールは、具体的には、スレーブCPU203にタスクを実行させるため、(1)スレーブCPUの実行開始と実行停止を制御する機能、(2)スレーブCPUで動作するOSタスクセットを退避・復元する機能、(3)スレーブCPUにタスクセットの変更が必要なことを通知する機能の3種類の機能を実現する。
また、AMPシステム510のスレーブCPU512には、スレーブCPU動的ロード制御モジュールに応答するための、動的ロードモジュールが追加されている。この動的ロードモジュールによって、スレーブCPU512における実行中のプロセス・タスクの把握、リストの保存、タスクの実行の一時停止や再開、スレーブCPUのメモリマップの変更などをおこなうことができる。
(実施例2:アドレス変換機構)
つぎに、実施例2では、マルチプロセッシングシステムに上述したアドレス変換機構を適用させた場合の具体的な動作について説明する。図6は、アドレス変換機構の構成を示すブロック図である。図6に示したアドレス変換機構は、論理アドレス610と、物理アドレスと、サイズ630と、有効/無効640との4つのレジスタによって構成されている。なお、図6の構成は一例であり、他の構成であってもよい。
実施例2では、スレーブCPUで動作する複数のOSタスクセットを格納できるメモリ領域を確保して、そのメモリ領域にOSタスクセットを配置する。この際に、図6のような構成のアドレス変換機構を利用することによって、高速にOSタスクセットの入れ替えを実現できる。
ここで、アドレス変換機構の各レジスタは、下記のような項目を記録する。
論理アドレス610:LADR0…N(論理アドレスの先頭)
物理アドレス620:PADR0…N(物理アドレスの先頭)
サイズ630 :SIZE0…N(メモリアドレス領域のサイズorアドレスマスクビット)
有効/無効640 :Valid0…N:(データの有効/無効)
OSタスクセット601を管理するには、たとえば、図6のようにOS_SET A(601)の LDAR MにOSタスクセットがあるべき領域の先頭アドレスを設定する。また、PADR MにOSタスクセットが格納されている物理アドレスを設定し、SIZE Mにサイズなどを設定し、Valid Mに1などを設定することでアドレス変換を有効にする。
また、図7は、論理アドレスと物理アドレスの対応の変化例を示すブロック図である。図7のように、Valid M や、PAMR M、SIZE Mを変更することにより、スレーブCPUが実行するOSタスクセットの論理メモリアドレスLADR Mから始まるメモリ領域の内容を、物理メモリアドレス領域のPADR M_oldの内容を高速にPADR M_newの内容に切り替えることができる。
(実施例3:OSタスクセットの切り替え)
実施例3では、上述した実施例1、2のマルチプロセッシングシステムにおいて、タスクを効率的に実行して、処理時間を短縮させるためのOSタスクセットの切り替えの手法について説明する。
図8は、OSタスクセットの切り替えタイミングを示すタイミングチャートである。タイミングチャート810は、通常のOSタスクセットの切り替えタイミングをあらわしている。スレーブCPU203によってOSタスクセットAとOSタスクセットBとを順次実行させる場合、通常、スレーブCPU203においてOSタスクセットAが終了すると、マスタCPU201から、つぎのOSタスクセットBのデータを転送が開始される。
そして、マスタCPU201によるDAMAC202を介したOSタスクセットBのデータ転送が終了すると、この終了に応答してスレーブCPU203によってOSタスクセットBの処理が開始される。すなわち、スレーブCPU203は、OSタスクセットAが終了してからつぎのOSタスクセットBの処理を開始するまでTAは、なにも処理をおこなわない待機状態となっていた。
一方、実施例3を示すタイミングチャート820は、スレーブCPU203によってOSタスクセットAが実行されると、マスタCPU201では、つぎに実行されるOSタスクセットBのデータを転送している。すなわち、スレーブCPU203は、OSタスクセットAが終了し、マスタCPU201からのデータ転送が終了次第、OSタスクセットBの実行に移行できる。したがって、つぎのOSタスクセットBの処理を開始するまでTBは、大きく短縮される。このように、実施例3では、タスクを効率的に実行して、処理時間を短縮させることができる。
以上説明したように、本発明の実施の形態にかかるマルチプロセッシングシステムによれば、所定のOSを利用する場合に、対応するすべてのタスクをマインメモリにロードすることなく、必要なタスクを実行する際に、対応するOSをロードすればよい。したがって、メモリに負担をかけることなく、タスクに応じてOSを切り替えることができる。
以上のように、本発明にかかるマルチプロセッシングシステムは、組み込み型の電機計算機、コンピュータおよびCPUへの適用に有用であり、特に、非対称型マルチプロセッシングシステムに適している。

Claims (6)

  1. マスタCPUと、
    スレーブCPUと、
    タスクと当該タスクに対応したオペレーションシステム(以下、「OS」という)との組み合わせからなるOSタスクセットを複数記憶する記憶部と、
    前記マスタCPUが、前記スレーブCPUの実行指示に応じて、前記記憶部に記憶されている複数のOSタスクセットのうち、前記実行指示の対象となった第1タスクと当該第1タスクに対応した第1OSとの組み合わせからなる第1OSタスクセットを、前記記憶部からメモリに格納する格納部と、
    前記スレーブCPUが、前記メモリに格納された前記第1OSタスクセットを参照し、当該第1OSタスクセットを構成する前記第1OSをロードし、前記第1タスクを実行するタスク実行部と、
    を備えることを特徴とするマルチプロセッシングシステム。
  2. 前記マスタCPUは、前記スレーブCPUに実行させる前記第1タスクを変更する場合、前記メモリに格納した前記第1OSタスクセットを、前記記憶部に記憶されている第2タスクと当該第2タスクに対応した第2OSとを組み合わせた第2OSタスクセットに入れ替えることを特徴とする請求項に記載のマルチプロセッシングシステム。
  3. 前記スレーブCPUは、実行する前記第1または前記第2タスクに応じた前記第1または前記第2OSタスクセットを格納した前記メモリの物理アドレスと、前記第1または前記第2OSタスクセットの論理アドレスとの対応をあらわすメモリマップとを作成し、当該メモリマップを参照して前記論理アドレスを前記物理アドレスに変換するアドレス変換部を備え、
    前記マスタCPUからの前記実行指示に示された前記第1または前記第2OSタスクセットの論理アドレスを、前記アドレス変換部によって物理アドレスに変換して、前記メモリから前記第1または前記第2OSタスクセットを読み出すことを特徴とする請求項に記載のマルチプロセッシングシステム。
  4. 前記マスタCPUは、前記第1または前記第2OSタスクセットの格納場所が変更になると、前記アドレス変換部に、前記メモリマップにおける前記第1または前記第2OSタスクセットの物理アドレスを更新させることを特徴とする請求項に記載のマルチプロセッシングシステム。
  5. 前記マスタCPUは、前記スレーブCPUが前記実行指示に応じて指定されたタスクの処理を開始すると、当該タスクのつぎに前記スレーブCPUに処理させるタスクのOSタスクセットを構成するOSをロードすることを特徴とする請求項1〜4のいずれか一つに記載のマルチプロセッシングシステム。
  6. 前記マルチプロセッシングシステムは、AMP(Asymmetrical Multi−Processing)システムもしくはLCMP(Loosely Coupled Multi Processor)システムによって構成されることを特徴とする請求項1〜のいずれか1つに記載のマルチプロセシングシステム。
JP2009505014A 2007-03-20 2007-03-20 マルチプロセッシングシステム Expired - Fee Related JP5131269B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2007/055670 WO2008114415A1 (ja) 2007-03-20 2007-03-20 マルチプロセッシングシステム

Publications (2)

Publication Number Publication Date
JPWO2008114415A1 JPWO2008114415A1 (ja) 2010-07-01
JP5131269B2 true JP5131269B2 (ja) 2013-01-30

Family

ID=39765536

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009505014A Expired - Fee Related JP5131269B2 (ja) 2007-03-20 2007-03-20 マルチプロセッシングシステム

Country Status (3)

Country Link
US (1) US8732441B2 (ja)
JP (1) JP5131269B2 (ja)
WO (1) WO2008114415A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5776688B2 (ja) * 2010-04-30 2015-09-09 日本電気株式会社 情報処理装置及びタスク切り替え方法
US9116759B2 (en) 2011-02-18 2015-08-25 Ab Initio Technology Llc Restarting data processing systems
US9021299B2 (en) 2011-02-18 2015-04-28 Ab Initio Technology Llc Restarting processes
JP5996110B2 (ja) * 2013-06-07 2016-09-21 三菱電機株式会社 計算機システム及び制御方法
JP6998419B2 (ja) * 2020-04-16 2022-01-18 株式会社三菱Ufj銀行 制御プログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005346358A (ja) * 2004-06-02 2005-12-15 Fujitsu Ltd アドレス変換装置およびアドレス変換方法
JP2006099333A (ja) * 2004-09-29 2006-04-13 Sony Corp 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3654165B2 (ja) 2000-09-21 2005-06-02 日本電気株式会社 コンピュータシステムに適用するライブラリのリンク方法及びそのプログラムを記録した記録媒体

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005346358A (ja) * 2004-06-02 2005-12-15 Fujitsu Ltd アドレス変換装置およびアドレス変換方法
JP2006099333A (ja) * 2004-09-29 2006-04-13 Sony Corp 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム

Also Published As

Publication number Publication date
US20100005275A1 (en) 2010-01-07
WO2008114415A1 (ja) 2008-09-25
US8732441B2 (en) 2014-05-20
JPWO2008114415A1 (ja) 2010-07-01

Similar Documents

Publication Publication Date Title
US10191852B2 (en) Methods and apparatus for locking at least a portion of a shared memory resource
US7590774B2 (en) Method and system for efficient context swapping
JP3845639B2 (ja) マルチスレッド・プロセッサを単一スレッド・モード及び同時マルチスレッド・モードの間で動的に切り替える装置及び方法
US5596759A (en) Method for initializing a multiple processor computer system using a common ROM
CN109983440B (zh) 数据处理
US20120254865A1 (en) Hypervisor replacing method and information processing device
US10671426B2 (en) Data processing
US20090164749A1 (en) Coupled symbiotic operating systems
JP5131269B2 (ja) マルチプロセッシングシステム
JP2006099332A (ja) 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US20210055948A1 (en) Fast thread execution transition
JPH1173365A (ja) データ移動操作を最適化する方法
US20160147660A1 (en) Access extent monitoring for data transfer reduction
US9946665B2 (en) Fetch less instruction processing (FLIP) computer architecture for central processing units (CPU)
CN108845969B (zh) 适用于不完全对称多处理微控制器的操作控制方法及操作系统
JPH0484335A (ja) 仮想計算機制御方式
US20080072009A1 (en) Apparatus and method for handling interrupt disabled section and page pinning apparatus and method
JP2010211506A (ja) 不均一メモリアクセス機構を備えるコンピュータ、コントローラ、及びデータ移動方法
JP3659048B2 (ja) オペレーティングシステム及び計算機
JP3163196B2 (ja) 仮想記憶制御における命令中断情報格納制御方法
JP7196439B2 (ja) 仮想化環境におけるデバイスへのアクセス方法
JPH0567973B2 (ja)
JP3585956B2 (ja) 情報処理装置及びその方法
KR20050049170A (ko) 임베디드 시스템의 비특권 모드에서 인터럽트 처리를 위한장치 및 방법
JPH10334056A (ja) マルチプロセッサ・システム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120417

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120618

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: 20121009

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121022

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151116

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees