JP5453825B2 - プログラム並列実行システム、マルチコアプロセッサ上のプログラム並列実行方法 - Google Patents

プログラム並列実行システム、マルチコアプロセッサ上のプログラム並列実行方法 Download PDF

Info

Publication number
JP5453825B2
JP5453825B2 JP2009025044A JP2009025044A JP5453825B2 JP 5453825 B2 JP5453825 B2 JP 5453825B2 JP 2009025044 A JP2009025044 A JP 2009025044A JP 2009025044 A JP2009025044 A JP 2009025044A JP 5453825 B2 JP5453825 B2 JP 5453825B2
Authority
JP
Japan
Prior art keywords
task
group
processor cores
program
context
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
JP2009025044A
Other languages
English (en)
Other versions
JP2010182096A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2009025044A priority Critical patent/JP5453825B2/ja
Publication of JP2010182096A publication Critical patent/JP2010182096A/ja
Application granted granted Critical
Publication of JP5453825B2 publication Critical patent/JP5453825B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)

Description

本発明は、複数のプロセッサコアをバスによって相互結合したマルチコアプロセッサを備えるプログラム並列実行システムとマルチコアプロセッサ上のプログラム並列実行方法に関する。
単一の汎用CPUだけでは処理能力が不足する場合に用いられている技術としては、専用のハードウェア機構、例えば動画処理ハードウェア等を追加し、あるいは、DSP(ディジタルシグナルプロセッサ)や3Dグラフィックプロセッサ(GPUとも称される)等の、用途に特化した演算能力を有する特別なプロセッサを導入し、これらを汎用CPUと組み合わせて所望の処理を行わせる手法がある。
例えば、NECエレクトロニクス社による携帯機器用プロセッサMP201は、汎用CPUであるARM9に加え、画像や音声処理用にDSP(K611)、画像処理用にイメージ・プロセッサ及びローテータを備えており、動画再生の中枢処理をDSPで行わせることで所望の動画再生能力を実現できる。
このように汎用CPUに加えて、画像や音声処理用にDSPを備える関連技術が、例えば特許文献1に記載されている。
他方、汎用CPUの能力向上策の一つとして、マルチコア技術の開発が進んでいる。マルチコアプロセッサとは、「コア」と呼ばれる単体CPUを複数個結合したものであり、複数コアを同時に動かす並列処理によって高い処理能力を実現することができる。
マルチコアプロセッサの例として、NECエレクトロニクス社/ARM社によるMPCoreが存在する。MPCoreは、ARM11コアを複数個(例えば4個)バス結合してワンチップに収めている。
汎用CPU上ではシステム内の多種多様な処理を行えるため、OS(オペレーティングシステム)を導入して、その上で多数のタスクを切り替えながら実行する形態をとることが通例である。マルチコアプロセッサでは、SMP(対称型マルチプロセシング)型のOSとして、例えば、Linuxはじめとする各種UNIXや、マイクロソフト社のWindows等が用いられる。
マルチコアプロセッサ上では、アプリケーションをいくつかの部分に分解して複数コアで並列実行させることにより、アプリケーションの高速処理が可能である。例えば、動画再生アプリケーションにおいて、動画デコード処理を複数タスクで構成し、それらのタスクをLinuxやWindows上で実行開始させると、これらのOSが各タスクを各プロセッサコアに配置し、マルチコアを利用した並列処理によって動作再生を高速で行うことができる。
このように複数コアを同時に動かす並列処理によって高い処理能力を実現するマルチコアプロセッサに関する関連技術が、例えば特許文献2に記載されている。
このように、これまでは、単一CPUで処理能力が不足する場合、専用のハードウェア機構あるいは特別なプロセッサを導入して処理させるか、マルチコア上の並列化アプリケーションとして処理させる、という手法が用いられてきた。
特開2008−176699号公報 特開2007−141155号公報
特許文献1に記載の関連技術の問題は、専用ハードウェアや特別なプロセッサを導入するためにコストがかかることである。グラフィクスや動画等の用途に応じたハードウェア機構を自ら開発するとその開発コストがかかり、外部から調達するとライセンスの支払いが生じる。また、近年、システムの多様化に伴って多品種少量生産の傾向にあるが、これらの専用ハードウェアないし特別なプロセッサを含むシステムLSIを開発する場合、その生産量が少ないと、開発コストを回収することが難しい場合がある。
特許文献2に記載の関連技術の問題は、汎用CPUベースのマルチコアでの実行オーバヘッドが高くなることである。汎用CPUは専用ハードウェアや特別なプロセッサに比べて単体性能に劣るため、所望の性能を実現するには複数コアに処理を分担させる並列処理が必要になる。他方、汎用CPUは多種多様なタスクを動かすためにOSを搭載するのが普通であり、各タスクはOSのサービスを介して互いの処理の同期や通信を行う。ここにOS介在によるオーバヘッドが生じ、細かな単位で同期や通信を行おうとするとこのOS介在によるオーバヘッドが無視できず、所望の並列性能を達成できなくなる場合がある。
特許文献2に記載の関連技術の他の問題は、汎用CPUベースのマルチコアでの実行時間予測が難しい点である。前述の通り汎用CPU上には多種多様なタスクが存在し、これらが時分割実行されるため、特定タスクがいつ実行され、どれぐらいの実時間が経過すれば処理完了するのか、予測するのが難しい。これは、一定時間内での処理完了が求められるリアルタイム処理では特に問題になる。
(発明の目的)
本発明の目的は、汎用CPUベースのマルチコアプロセッサ上でオーバヘッドが少なく、かつ実行時間予測のつきやすい並列実行環境を実現できるプログラム並列実行システム、マルチコアプロセッサ上のプログラム並列実行方法を提供することにある。
本発明の他の目的は、専用ハードウェアや特別なプロセッサを導入するコストを抑えつつ、高い演算処理能力を実現できるプログラム並列実行システム、マルチコアプロセッサ上のプログラム並列実行方法を提供することにある。
本発明によるプログラム並列実行システムは、複数のプロセッサコアをバスによって相互結合したマルチコアプロセッサを備えるプログラム並列実行システムあって、複数のプロセッサコアを、オペレーティングシステムを稼動させ、当該オペレーティングシステム上で第1のアプリケーションプログラムを動作させる第1のグループのプロセッサコアと、オペレーティングシステムを稼動させずに、第1のアプリケーションからの要求によって第2のアプリケーションプログラムを動作させる第2のグループのプロセッサコアに分け、第1のグループのプロセッサコアと第2のグループのプロセッサコアの間の通信を行うことにより、第1のアプリケーションプログラムが、第2のアプリケーションプログラムを実行させ、又は第2のアプリケーションプログラムの処理結果を受け取るための制御を行う制御手段を含む。
本発明によるプログラム並列実行方法は、複数のプロセッサコアをバスによって相互結合したマルチコアプロセッサ上のプログラム並列実行方法であって、複数のプロセッサコアの第1のグループのプロセッサコア上で、オペレーティングシステムを稼動させ、当該オペレーティングシステム上で第1のアプリケーションプログラムを動作させ、複数のプロセッサコアの第2のグループのプロセッサコア上で、オペレーティングシステムを稼動させずに、第1のアプリケーションからの要求によって第2のアプリケーションプログラムを動作させ、第1のグループのプロセッサコアと第2のグループのプロセッサコアの間の通信を行うことにより、第1のアプリケーションプログラムから第2のアプリケーションプログラムを実行させ、又は第1のアプリケーションプログラムからで第2のアプリケーションプログラムの処理結果を受け取るための制御を行う。
本発明によれば、汎用CPUベースのマルチコアプロセッサ上でオーバヘッドが少なく、かつ実行時間予測のつきやすい並列実行環境を実現できる。
また、専用ハードウェアや特別なプロセッサを導入するコストを抑えつつ、高い演算処理能力を実現できる。
本発明の第1の実施の形態によるプログラム並列実行システムの全体構成を示すブロック図である。 第1の実施の形態によるプログラム並列実行システムにおける軽量スケジューラの内部構成を示すブロック図である。 第1の実施の形態によるプログラム並列実行システムにおけるOLタスク表の各エントリの構成例を示す図である。 第1の実施の形態によるプログラム並列実行システムにおけるOLリモート制御部の内部構成を示すブロック図である。 第1の実施の形態によるプログラム並列実行システムにおけるOLタスク制御の動作を示すフローチャートである。 第1の実施の形態によるプログラム並列実行システムにおけるOLタスクの時分割多重制御の動作を示すフローチャートである。 第1の実施の形態によるプログラム並列実行システムにおけるOLタスクサービス手段が提供するサービス関数例の一覧を示す図である。 本発明の第2の実施の形態によるプログラム並列実行システムの全体構成を示すブロック図である。 第2の実施の形態によるプログラム並列実行システムにおけるOLリモート制御部の内部構成を示すブロック図である。 第2の実施の形態によるプログラム並列実行システムにおける割り当てコア数増減の動作を示す図である。 第1の実施の形態における軽量スケジューラLSの実施例を示すブロック図である。 第1の実施の形態におけるOLリモート制御部の実施例を示すブロック図である。
次に、本発明の実施の形態について図面を参照して詳細に説明する。
(第1の実施の形態)
図1は、本発明の第1の実施の形態によるプログラム並列実行システムの構成を示すブロック図である。第1の実施の形態によるプログラム並列実行システムは、共有メモリ型のマルチコアプロセッサ上にアプリケーション用OSと軽量スケジューラとを搭載する構成である。
図1を参照すると、第1の実施の形態によるプログラム並列実行システムは、複数のCPUコアを有するマルチコアSoC(SystemOnChip(システムオンチップ);システムLSIとも呼ばれる)10と、それらのCPUコア上で動作するAP OS(アプリケーション用OS)20および軽量スケジューラLS(LightweightScheduler)32と、AP OS20上で動作するアプリケーション(AP)タスク群21およびOL(オフロード)リモート制御部22と、LS32上で動作するOLタスク群31と、これらのソフトウェア動作に使用するメモリ50とを含む。
マルチコアSoC10は、同じ種類の複数個のCPUコア(40、41、・・・、4n)と、これらのCPUコアの間で割り込みをかけるためのコア間割込機構45と、メモリ50を駆動するためのメモリ制御部47とを含み、これらがSoCバス46で互いに接続されている。近年の一般的なプロセッサがそうであるように、各CPUコア内にはL1キャッシュ(1次キャッシュ)が含まれている。なお、図1に示したマルチコアSoCは典型的な構成例を示したものであり、図示した構成要素以外の処理ユニット(DMAコントローラ、グラフィクスプロセッサ、各種I/Oコントローラ等)やローカルメモリを含む構成であっても良い。
マルチコアSoC10が有するCPUコア(40、41、・・・、4n)は、その利用目的によりAP(アプリケーション)処理用とOL(オフロード)処理用の大きく2つの群に分けられる。AP(アプリケーション)処理用のCPUコア上ではAP OS20として、汎用CPU用OS(例えばLinuxはじめとする各種UNIX OS、Windows等)が動作する。APタスク群21を構成する各APタスク210、211は、同じくAP OS20上で実行されるOLリモート制御部22を介してOL処理用のCPUコアの上で動作しているOLタスク群と連係して動作する。
OL処理用のCPUコア上で動作するLS 32は、OLタスクの実行制御に特化した、コンパクトなスケジューラであり、その上では1つ以上のOLタスク(図1ではOLタスク310、311の2つが動作している例を示している)が動作している。このLS32は、単に機能を限定した小型のOSという位置づけではなく、共有メモリ型マルチコアプロセッサであることを活かし、LS32とOLリモート制御部22とにスケジューリング機能を分担させていることが、本実施の形態における特徴の一つである。
OLタスク310、311は、各々が1つ以上のスレッドで構成されるマルチスレッドタスクである。OLタスク310、311は、実行時にLS32に割り当てられるOL処理用のCPUコアの数と同じか、それ未満の数のスレッドが同時に存在するように設計されたアプリケーションプログラムであり、LS32が複数のOLタスク間をギャングスケジューリング方式で時分割切り替えを行いながら実行する。ここで、ギャングスケジューリング方式とは、必要な数の物理コアすべてを一度に確保しタスク切り替えを行う方式である。
なお、AP処理用CPUコアとOL処理用CPUコアについては、各々1つ以上であればよい。
次に、図1における軽量スケジューラLS32の内部構成について、図2を参照して詳しく説明する。
軽量スケジューラLS32は、複数のOLタスクを時分割で切り替えながら実行するための時分割多重化部110と、AP処理用CPUコア側との通信を行う対AP通信部120と、存在するOLタスクを管理するためのOLタスク表160と、現在実行中のOLタスクを示すカレントOLタスク変数150と、現在実行待機中のOLタスクを示すOLタスクキュー140と、OLタスク表操作時の排他制御に用いるOLタスク表ロック変数170とを含んでいる。
時分割多重化部110は、所定の時間が経過したことを通知するタイマ111と、タイマ111からの通知によりOLタスクの切り替えを行う時分割多重化制御部112を備える。また、対AP通信部120は、AP側からの通信を受けるLS側受信部121と、AP側への通信を発するLS側送信部122を備える。
LS32には、時分割多重化制御部112、LS側受信部121、およびOLタスク310、311から呼び出される各種の手段がある。この呼び出される各種の手段としては、これまで実行してきたOLタスクのコンテキストを退避するコンテキスト退避手段131と、これから実行しようとするOLタスクのコンテキストを復活させOLタスクを再開させるコンテキスト復活手段132と、OLタスクキュー140の中から、次に実行しようとするOLタスクを選びだす新コンテキスト選定手段133と、AP側からの指示に基き、OLタスクの開始や終了の制御を行うOLタスク制御手段134と、OLタスク内のスレッド間通信やキャッシュ制御、OLタスクの終了要求を処理するOLタスクサービス手段135とがある。
ここで、OLタスクサービス手段135がOLタスク向けに提供するサービス関数の例を図7に示す。これらはマルチコアSoC10内のCPUコア(40、41、42)が持つ機械命令、たとえば、CPUレジスタが持つ1ワードとメモリ上の1ワードをアトミックに交換するエクスチェンジ命令(XCHG等と表記されることが多い)や、CPUコアに付属のコプロセッサが持つキャッシュ制御命令等を用いることで、容易に実現できるサービス関数である。プログラマはこれらのサービス関数を用いてOLプログラムを開発する。また、必要に応じ、これらのサービス関数をインライン関数として実装することで、実行時オーバヘッドをより少なくすることができる。
OLタスク表160には、1つのOLタスク毎に1つのエントリ(OLタスク表エントリ)が登録される。このOLタスク表エントリは、図3に示すようなフィールドを有する。図3において、OLタスク表エントリが有するフィールドは、OLタスクを互いに一意に識別するための整数値を設定するOLタスクIDフィールド161、そのOLタスクを生成したAPタスクのIDフィールド163及びそのAPタスクが動作しているOSの識別IDを設定するAP OS IDフィールド162、そのOLタスクが動作しているのか止まっているのか等を示す情報を設定するステータスフィールド164、そのOLタスクが使っている全レジスタや特殊レジスタ等を設定するコンテキストフィールド165、そのOLタスクの連続実行時間を規定するタイムスライスフィールド166、そのOLタスクとAPタスクとの間の同期をとるためのセマフォフィールド167、ならびに、そのOLタスクのプログラムメモリ領域や作業メモリ領域に関する情報を保持するメモリ領域情報フィールド168である。
ここで、AP OS IDフィールド162は、図1におけるAP OS20を識別する整数値である。図1の例ではAP OS20はシステム内にただ一つしか存在しないのでこのIDの必要性はないが、マルチコアSoC10が多数のCPUコアを有し、その上で複数のAP OS20が稼動するようになったときに備え、図3のようにAP OS20を識別するIDを登録する。
また、APタスクIDフィールド163は、そのAP OS20内で複数のタスクを識別するためのIDであればよく、通常は当該OSが使用しているタスクIDをそのまま用いる。
対AP通信部120は、後述するAP側の対LS通信部240と対向接続される。
次に、図1においてAP OS20上に位置するOLリモート制御部22の内部構成について、図4を用いて詳しく説明する。
OLリモート制御部22内部には、APタスクがOLタスクの制御するためのインタフェースとなるAPタスク向けインタフェース部230と、OL処理用CPUコア側との通信を行う対LS通信部240が含まれる。
また、APタスク向けインタフェース部230は、APタスクから呼び出されることを想定した、OL処理用CPUコア上でLS32が動作できるように初期設定を行うLS初期化手段231、それによって稼働中のLS32上に新しくオフロード処理のプログラムをロードし実行可能な状態にセットアップするOLプログラムセットアップ手段232、OLプログラムセットアップ手段232でセットアップしたOLプログラムの実行開始させるOLタスク開始手段233、OLタスク開始手段233で開始したOLタスクの終了を待ち合わせるOLタスク終了待ち手段234、OLタスク側の自主的な終了を待たず、強制的に終了させるためのOLタスク強制終了手段235、一旦終了したOLタスクを再ロードせずに初期状態に戻すOLタスク再初期化手段236、ロードしたOLプログラムを破棄してリソースを解放するOLプログラム破棄手段237、の各手段を含む。
対LS通信部240は、それぞれLS側への送信とLS側からの受信を行う、AP側送信部241、AP側受信部242から構成され、それぞれLS側受信部121、LS側送信部122と対向接続される。
(第1の実施の形態の動作の説明)
次に、図5および図6のフロー図を参照して本実施の形態の全体動作について詳細に説明する。
まず、図5を参照して、APタスク(0)210がOLタスク(0)310を実行する一連の動作を例にとって説明する。
最初は、OL処理用CPUコアの上で軽量スケジューラLS32が動作していない状態である。
ここで、APタスク(0)210がOLリモート制御部22内にあるAPタスク向けインタフェース部230のLS初期化手段231を呼び出すと(ステップS101)、LS初期化手段231は、LS32のプログラムをOL処理用CPUコアがアクセス可能なメモリ領域にロードする(ステップS102)と共に、各々のOL処理用CPUコアに対してLS32のプログラムのエントリ番地から実行を開始するよう指示する(ステップS103)。
LS32がエントリ番地から実行を開始すると、LS32は、OL処理用CPUコアのうちの1コアがOLタスク表160、OLタスクキュー140、カレントOLタスク変数150の初期化を行った後(ステップS104)、AP側からの指示待ち状態となる(ステップS105)。OL処理用コアの他のCPUコアは、すみやかにAP側からの指示待ち状態となる。
ここで、APタスク(0)210がOLリモート制御部22内にあるAPタスク向けインタフェース部230のOLプログラムセットアップ手段232を呼び出すと(ステップS106)、OLプログラムセットアップ手段232は、OLタスク表ロック変数170をロックしてOLタスク表160への排他的アクセス権を取得し、OLタスク(0)310をOL処理用CPUコアがアクセス可能なメモリ領域にロードすると共に、OLタスク(0)310の処理用の作業メモリ領域を確保する(ステップS107)。続いて、OLプログラムセットアップ手段232は、OLタスク表160に新たなOLタスク表エントリを作成し、そのOLタスク表エントリの各フィールドを以下のように設定する(ステップS108)。
(A) OLタスクIDフィールド161=OLプログラムセットアップ手段232がOLタスク(0)310に割り当てたユニークな値。
(B) AP OS IDフィールド162=APタスクが動作しているOSの種類を識別する値。
(C) APタスクIDフィールド163=APタスク(0)210のAP OS内でのタスクID。
(D) ステータスフィールド164=初期状態。
(E) メモリ領域情報フィールド168=OLタスク(0)310をロードしたメモリ領域および作業メモリ領域の情報。
続いて、OLプログラムセットアップ手段232は、OLタスク表ロック変数170をアンロックして排他的アクセス権を解放し、OLタスクIDフィールド161の値を戻り値として呼び出し元のAPタスク(0)210に制御を戻す。このOLタスクIDフィールド161の値はAPタスク(0)210内部で保持され、以後のAPタスク向けインタフェース部230内の各手段を呼び出す際に引数として渡される。
次に、APタスク(0)210が設定したOLタスクIDフィールド161の値を引数としてAPタスク向けインタフェース部230のOLタスク開始手段233を呼び出すと(ステップS109)、OLタスク開始手段233は、OLタスク表160から設定したOLタスクIDフィールド161の値に該当するエントリを探し出し、そのエントリ内の次のフィールドを、次のように設定する(ステップS110)。
(A) コンテキストフィールド165=OLタスク(0)310を開始するためのレジスタ値。
特に、プログラムカウンタについてはOLタスク(0)310のエントリ番地とし、もし必要ならスタックポインタやデータポインタとして確保したOLタスク用作業メモリ領域内の適切なアドレス値を与える。
(B) タイムスライスフィールド166=OLタスク(0)310の連続実行時間をタイマ111の動作周期(動作周波数の逆数)で割った値。
この連続実行時間を越えてOLタスクが実行を続けると、時分割多重化制御部112によって一旦処理を中断されることになる。OL処理用CPUコア上で複数のOLタスクが同時に動作する場面では、より優先的に処理したいOLタスクにより長めの連続実行時間を与えることで、それらのOLタスク間に優先度をつけることができる。
(C) セマフォフィールド167=初期値ゼロ。
これらのフィールドを設定後、OLタスク開始手段233は、対LS通信部240のAP側送信部241を通じてOLタスクID値および処理要求種別「OLタスク開始」の情報をLS32側に送る(ステップS111)。AP処理用CPUコアは、ここで呼び出し元のAPタスク(0)210に制御を戻す。
他方、LS32側のLS側受信部121は、AP側送信部241から送信された情報を受け取り、処理要求種別が「OLタスク開始」であることを知り、それに対応した処理として、次の処理を行う。すなわち、OLタスク表160から指定されたOLタスクID値に該当するエントリを探し出し、そのエントリ内のステータスフィールド164を「実行中状態」に設定し、OL処理用の全CPUコア間の同期(バリア同期)をとったうえで、OLタスク表160のエントリ内のコンテキストフィールド165の値をOL処理用の各CPUコアのレジスタに設定してコンテキストを復活させる(ステップS112)。
これにより、以後、AP処理用CPUコアではAPタスク(0)210の後続処理、OL処理用CPUコアではOLタスク(0)310の処理(ステップS113)が、並列して行われる。
次に、APタスク(0)210は、開始したOLタスク(0)310の終了を待ち合わせるため、OLタスク(0)310のOLタスクID値を引数としてAPタスク向けインタフェース部230のOLタスク終了待ち手段234を呼び出す(ステップS114)。そして、OLタスク終了待ち手段234は、OLタスク表160から上記OLタスクID値に該当するエントリを探し出し、そのエントリ内のセマフォフィールド167に対してセマフォDOWN操作(sem_down)を行う(ステップS115)。
他方、OLタスク(0)310側は、その処理結果を、APタスク(0)210とOLタスクとの間で共有されているメモリ50上の領域に格納した後(ステップS116)、LS32のOLタスクサービス手段135に対しOLタスク終了要求を送る(ステップS117)。
すると、LS32のOLタスクサービス手段135は、カレントOLタスク変数150の値からOLタスク表160内のエントリを特定し、そのエントリ内のステータスフィールド164を「終了状態」に設定する。さらに、OLタスクサービス手段135は、OLタスク表160のエントリ内のAP OS IDフィールド162の値を元に当該OLタスク(0)310を起動したAPタスク(0)210が動作しているAP OSを特定し、LS側送信部122を通じてAP OS20に対し、OLタスクID値(OLタスク表160のエントリ内のOLタスクIDフィールド161の値)および処理要求種別「OLタスク終了」の情報を送る(ステップS118、S119)。
すると、対LS通信部240のAP側受信部242がこの情報を受け取り、処理要求種別が「OLタスク終了」であることを知り、それに対応した処理として、次の処理を行う。すなわち、OLタスク表160から指定されたOLタスクID値に該当するエントリを探し出し、そのエントリ内のセマフォフィールド167に対してセマフォUP操作(sem_up)を行う(ステップS120)。
これら2つのセマフォ操作により、APタスク(0)210とOLタスク(0)310とが同期され、APタスク(0)210はセマフォDOWN操作の直後から動作を再開する。APタスク(0)210は、メモリ50上の共有領域からデータを読み出すことで、OLタスク(0)310にオフロードさせた処理の結果を取得する(ステップS121)。
ここで、APタスク(0)210がOLタスクID値を引数としてAPタスク向けインタフェース部230のOLタスク強制終了手段235を呼び出すと、OLタスク強制終了手段235は、次の段階に沿って、実行中のOLタスクを強制的に終了させることを試みる。
第1段階として、通信によってOLタスク強制終了要求をLS32側に伝える。具体的には、OLタスク(0)310のOLタスクID値および処理要求種別「OLタスク強制終了」の情報をAP側送信部241を通じてLS32側に送る。LS32側ではLS側受信部121がこの要求を受け、処理要求種別が「OLタスク強制終了」であることを知り、OLタスク表160およびOLタスクキュー140から当該OLタスク(0)310に相当するエントリを削除する。
もし、OLタスクの暴走等の原因でLS32側が正常に機能しない場合、第2段階として、APタスク向けインタフェース部230のOLタスク強制終了手段235は、OL処理用の各CPUコアに対してリセットをかけることでOLタスクを止める。この場合、OL処理用CPUコアでOLタスク(0)310以外のOLタスクが実行中であると、それらも含めてすべて止められてしまう。従って、第1段階の仕組みでの強制終了を試みるのが優先であって、この第2段階の処置は非常用に限定すべきである。
また、APタスク(0)210がOLタスク(0)310のOLタスクID値を引数としてAPタスク向けインタフェース部230のOLタスク再初期化手段236を呼び出すと、OLタスク再初期化手段236はOLタスク表ロック変数170をロックしてOLタスク表160への排他的アクセス権を得てから、OLタスク表160内の当該OLタスクのエントリを探し出し、そのエントリ内のステータスフィールド164を「初期状態」に設定し、OLタスク表ロック変数170をアンロックする。これにより、当該OLタスク(0)310は初期状態に戻り、以後APタスク(0)210がOLタスク開始手段233を呼び出せば、再び当該OLタスク(0)310を実行することができるようになる。
最後に、APタスク(0)210がOLタスクID値を引数としてAPタスク向けインタフェース部230のOLプログラム破棄手段237を呼び出すと(ステップS122)、OLプログラム破棄手段237はOLタスク表ロック変数170をロックしてOLタスク表160への排他的アクセス権を得てから、OLタスク表160内の当該OLタスクのエントリを探し出す。次に、OLプログラム破棄手段237は、そのOLタスク表エントリ内のメモリ領域情報の値を元に当該OLタスク用に確保したメモリ領域を開放する。さらにOLプログラム破棄手段237は、そのOLタスク表エントリをOLタスク表160から削除し、最後にOLタスク表ロック変数170をアンロックして排他的アクセス権を返上する(ステップS123)。
図5には、APタスク(0)210がOLタスクID値を引数としてAPタスク向けインタフェース部230のOLプログラム破棄手段237を呼び出した場合の動作を示している。
ここで、OLリモート制御部22と軽量スケジューラLS32との間の通信の動作について説明する。
この通信の内部構造は本実施の形態の本質的な特徴ではなく、指定した通信相手CPUコアに2つの固定長整数値を伝え、その相手CPUコア側で事前登録されたハンドラを呼び出すことができれば、任意の通信方式を用いることができる。1つの実現方法として、図1に示したコア間割込機構45とメモリ50上のコア間共有メモリ領域を用い、相手に伝達すべき整数値を共有メモリ領域に格納してからコア間割込機構45によって相手コアに割り込みを発生させ、相手コアの割込みハンドラにて共有メモリ領域に格納された値を読み出し、その値を引数として、事前登録されたハンドラ関数を呼び出す、という仕組みが考えられる。
次に、図6および図2を参照して、OL処理用CPUコア上で複数のOLタスクが存在する場合の時分割多重処理の動作について説明する。ここでは、OLタスク(0)〜(2)の3タスクが存在し、現在OLタスク(0)が実行中である、という事例を用いて説明する。
現在、OLタスク(0)が実行中であるため、時分割多重化部110のタイマ111にはOLタスク(0)のタイムスライス値が初期値として設定されている。所定の時間が経過するとデクリメントしているタイマ111のカウンタがゼロに到達し(ステップS201)、タイマ111がその旨を時分割多重化部110の時分割多重化制御部112に通知する(ステップS202)。
時分割多重化制御部112は、まずコンテキスト退避手段131を呼び出す。コンテキスト退避手段131はカレントOLタスク変数150をチェックする。そして、カレントOLタスク変数150に有効なOLタスクが格納されていれば、これまで各OL処理用CPUコアで実行していたOLタスク(0)のレジスタ等のコンテキスト一式を、OLタスク(0)に対するOLタスク表160のエントリにおけるコンテキストフィールド165に格納する(ステップS203)。
次に、時分割多重化制御部112は、新コンテキスト選定手段133を呼び出し、次に実行すべきOLタスクを決める。選定方法については種々考えられるが、ここでは単純なFIFO方式による方法を説明する。すなわち、新コンテキスト選定手段133は、OLタスクキュー140の先頭にあるOLタスクを次のコンテキストとして選定する(ステップS204)。図6の例ではOLタスク(1)が選定されることになる。新コンテキスト選定手段133は、選定したOLタスク(1)をOLタスクキュー140から取り除き、カレントOLタスク変数150に設定する。
次に、時分割多重化制御部112は、コンテキスト復活手段132を呼び出す。コンテキスト復活手段132は、カレントOLタスク変数150が指し示すOLタスク表160のOLタスク(1)に対するエントリを参照し、その中のタイムスライスフィールド166の値をタイマ111に設定すると共に(ステップS205)、OLタスク表エントリのコンテキストフィールド165の内容に従って各OL処理用コアのレジスタ等を設定する。最後に全OL処理用コア間で同期を取った上で、レジスタコンテキストでの実行を開始する。これにより、OLタスク(1)のコンテキストが再開されることになる(ステップS206)。
その後、上記で設定したタイムスライス分の時間が経過するとタイマ111のカウンタがゼロに到達し(ステップS207)、上述したタイマ111から時分割多重化制御部112への通知(ステップS208)、ならびに時分割多重化制御部112によるコンテキスト切替動作が繰り返される(ステップS209〜S212)。
上記コンテキスト退避手段131にて、カレントOLタスク変数150に有効なOLタスクが格納されていない場合は、退避すべきコンテキストは存在しないものとみなす。その場合、時分割多重化制御部112は、コンテキスト退避処理は行わず、その次の新コンテキスト選定手段133の呼び出しへ進む。
また、上記新コンテキスト選定手段133にて、OLタスクキュー140が空である場合は、新コンテキストは存在しないことから、カレントOLタスク変数150には無効値(NULL等)を設定する。その場合、後続のコンテキスト復活手段132では、タイマ111の設定も新コンテキストの各OL処理用コアレジスタへの設定も行わない。各OL処理用コアはそのまま停止状態に移行し、その後AP処理用コア側からのOLタスク開始等が通知されてくるのを待つことになる。
以上が複数のOLタスクを時分割多重化して制御する動作の説明であり、その具体的なフローの例が図6に示されている。
OL処理用CPUコアは一般には複数存在するが、これらの複数のCPUコアは、APタスク側からのタスク開始指示(OLタスク開始手段233参照)やタイマ111のゼロ到達(タイマ111から時分割多重化手段112への通知参照)を契機として、OLタスク処理からLS処理へ、あるいはLS処理からOLタスク処理へと、全CPUコアが一斉に切り替わる。これはいわゆるギャングスケジューリングであり、OL処理用CPUコアできめ細かい並列処理を有効に行うための本実施の形態の特徴の1つである。
(第1の実施の形態による効果)
次に、上述した第1の実施の形態による効果について説明する。
本実施の形態では、マルチコアSoC10(マルチコアプロセッサ)の複数のCPUコアをAP処理用CPUコアとOL処理用CPUコアの2つのグループに分け、一方のAP処理用CPUコアに一般的なアプリケーション用のAP OS20を動作させ、他方のOL処理用CPUコアに軽量スケジューラLS32を載せることで、CPUコアやキャッシュ機能等のハードウェアリソースを最大限に活用した特定用途のプログラム(OLタスク)を、OS用アプリケーションと同時に走らせることができる。特定用途プログラムであるOLタスクは、ハードウェアリソースを直接アクセスし、かつそれらのハードウェアリソースのOLタスクへの割当時間を指示できるため、実行時のオーバヘッドを少なくでき、実行時間予測が容易になる。これにより、相互に密に連携して動作する複数のスレッドを効率よく実行させることが可能となる。
すなわち、OL処理用CPUコアで動作するOLタスクはAP OS20からの影響を受けず、物理的なCPUコア上での実行に極めて近い形態で動作することになり、オーバヘッドが少なく実行時間を予測しやすい並列実行環境が実現される。
また、本実施の形態では、AP処理用コアとOL処理用コアの分割点を変えることで、AP処理とOL処理の性能比率を任意に変更可能であるため、SoCに対する要求性能の異なるいくつかのシステムに対して、同じ種類のマルチコアSoCを適用することが可能である。これにより、SoC開発コストの低減とシステム開発日程の短縮という効果を実現できる。
すなわち、要求される処理能力に応じて、マルチコアプロセッサ上のCPUコアの割り当てをソフトウェアによって変更可能とすることにより、システム仕様に応じて静的に、CPUコアのリソースを処理要求に割り当てることができる。この結果、スペックの異なる複数種類のシステムLSIで対応していたシステムを一種類のマルチコアシステムLSIで実現すること、あるいは、ある一製品において要求性能の異なる多様な動作モードを一種類のマルチコアシステムLSIで実現できる。これにより、システムLSIの販売可能性を高めることで生産量増加を促し、システムLSIへの開発投資を回収しやすくなる。
(第2の実施の形態)
次に、本発明の第2の実施の形態によるプログラム並列実行システムについて図面を参照して詳細に説明する。
図8および図9を参照すると、第2の実施の形態は、第1の実施の形態に加えて、コアの割り当てを動的に変更するための仕組みを導入したものである。
図8を参照すると、第2の実施の形態においては、AP OS20に、AP OS20が使用するCPUコアを変更するための稼動コア制御部201を備えると共に、AP OS 20自体にCPUのホットプラグ(HotPlug)機能を備えている点が第1の実施の形態と異なっている。
CPUのホットプラグ機能とは、マルチコアプロセッサ内のいくつかのCPUコア上であるOSが稼動している場合に、そのOSを終了あるいは再起動させることなく、そのOSの使用するCPUコア群に新たなCPUコアを追加したり、あるいはそのOSが使用中のCPUコア群から一部のCPUコアを取り除くことができる機能である。例えばLinuxにはCPUホットプラグ機能を有する実装が存在する。
また、図9を参照すると、OLリモート制御部22は、第1の実施の形態に加え、AP OS20と軽量スケジューラLS32が使用するCPUコアの変更指示を行うための動的コンフィギュレーション変更部238を備えている。
第2の実施の形態におけるその他の構成要素については、図1に示した第1の実施の形態と同様であるので、同一の参照符号を付して説明を省略する。
(第2の実施の形態の動作の説明)
図10を参照してCPUコア割り当ての動的変更処理について説明する。
まず、はじめの状態では、図10(A)に示すように全CPUコア(APコア(0)〜(3))を使ってAP OS20が稼動している。ここで、動的コンフィギュレーション変更部238が、2つのCPUコアを使ってLSを稼動させることを決めたとする。
すると、動的コンフィギュレーション変更部238は、AP OS20内の稼動コア制御部201に対し、AP OS20が使用中のCPUコアのうちの2つを開放するよう指示する。
稼動コア制御部201は、CPUホットプラグ機能によりAPコア(2)とAPコア(3)の2つのCPUコアをAP OS20から切り離し、これら2つのCPUコアを停止させる。この状態が図10(B)に示す状態である。
次に、動的コンフィギュレーション変更部238は、OLリモート制御部22が備えるLS初期化手段231を呼び出して、切り離して停止させた2つのCPUコア上で軽量スケジューラLS32が動作するよう、初期化処理を行う。この結果が図10(C)に示された状態である。
このようにして、AP OS20を稼動させたまま、CPUコア2つを使用するLS32を新たに稼動させることができる。
逆に、図10(C)の状態にて、動的コンフィギュレーション変更部238が、LSを停止させて全CPUコアをAP OS20で利用することを決めたとする。
すると、動的コンフィギュレーション変更部238は、まず、必要であればOLリモート制御部22が持つOLタスク強制終了手段235を呼び出した上で、OLリモート制御部22が持つOLプログラム破棄手段237を呼び出してLS32およびその上で動作していたOLタスク等一式を停止、破棄させる。その状態が図10(B)に示す状態である。
次に、動的コンフィギュレーション変更部238は、AP OS20内の稼動コア制御部201に対し、AP OS20が使用中のCPUコア群に、上述の操作で停止させた2つのCPUコアを追加する指示を送る。
稼動コア制御部201は、CPUホットプラグ機能によりこの2つのCPUコア(APコア(2)、APコア(3))を追加し、AP OS20が全CPUコアを使って稼動するように設定する。この結果が図10(A)に示された状態である。
このようにして、AP OS20を稼動させたまま、LS32に割り当てられていたCPUコアの2つをAP OS20側に割り当て直すことができる。
上記説明では、全部で4つのCPUコアを有するマルチコアSoC10にて、初期状態で全4コアをAP OS20に割り当て、次に、そのうち2コアをLS32に割り当て、そして再び全4コアをAP OS20に割り当てる、という例を示した。しかし、この例に限定されるものではなく、任意のn個のCPUコアを有するマルチコアSoC10において、そのうちの1個以上(n−1)個以下のCPUコアをLS32に割り当てる場合にも上記のCPUコア割り当ての動的変更処理をそのまま適用することが可能である。
また、必要がなければ一部のCPUコアをAP処理用にもOL処理用にも割り当てずに停止させておくことで、マルチコアSoC10全体の消費電力を低減することもできる。
(第2の実施の形態の効果)
次に、上述した第2の実施の形態による効果について説明する。
上述した第2の実施に形態によれば、第1の実施の形態による効果に加えて、システムを稼動させたまま、その処理性能要求の動的変化に応じてOL処理用コアを割り当ててOLタスクを走らせ、また、当該処理要求がなくなれば全コアをAP OS用に割り当てることができ、マルチコアプロセッサが有する能力をより柔軟に引き出すことが可能になる。これにより、一つの種類のマルチコアシステムLSIを多様なシステムに適用することが可能になるという効果が実現される。
次に、プログラム並列実行システムの具体的な実施例について図面を参照して説明する。この実施例は、第1の実施の形態におけるLS32とOLリモート制御部22が具体的にどのように構成されるかを示している。
図11は、LS32の実施例を示すブロック図である。点線321で囲まれた部分はマルチコアSoC10内のハードウェアで実現される。すなわち、タイマ111はCPUコアに付随するハードウェアタイマであり、対AP通信部120において通信を行う基盤部分はコア間割込機構45と受け渡すパラメータを保持するメモリ上のパラメータ領域123で実現される。
点線322で囲まれた部分はCPUコア上のソフトウェアとして実現される。時分割多重化制御部112はタイマ割込みハンドラ、LS側受信部121はコア間割込ハンドラを用いて実現される。時分割多重化制御部112が取り扱うコンテキストは、CPUコアの汎用レジスタ一式とステータスフラグである。
点線323で囲まれた部分はメモリ50上のデータ構造や変数として実現される。これらのデータ構造は、表、キュー(FIFO)等、コンピュータ処理においてごく一般的な構造である。OLタスクキュー140についてはAP処理用コア側からはアクセスされないので、OLタスクキュー140をOL処理用コアのローカルメモリ上に配置して、同データ構造に対するメモリアクセス性能を改善することも可能である。
図12はOLリモート制御部22の実施例を示すブロック図である。APタスク向けインタフェース部230内の各手段231〜237はAP処理用コアのソフトウェアとして記述される。これらはライブラリの形態にとりまとめられ、アプリケーションプログラムにリンクされて呼び出される。対LS通信部240は前述の対AP通信部120と同様、その基盤部分はコア間割込機構45と受け渡すパラメータを保持するメモリ上のパラメータ領域123で実現される。
以上好ましい実施の形態と実施例をあげて本発明を説明したが、本発明は必ずしも、上記実施の形態及び実施例に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
本発明は、同じ種類のプロセッサコアを複数有するマルチコアプロセッサを用いた情報処理装置であって、特に、高い演算能力やリアルタイム性を要する処理とそれ以外の汎用処理がシステム内に混在するような装置、例えば、携帯電話、カーナビゲーションシステム、セットトップボックス、ネットワーク制御機器等のシステムソフトウェアに適用できる。また、同じ種類のCPUコアを複数有するマルチコアプロセッサを搭載したパーソナルコンピュータや汎用コンピュータシステムに適用することもできる。
10:マルチコアSoC
20:AP OS
21:APタスク群
22:OLリモート制御部
31:OLタスク群
32:LS(軽量スケジューラ)
40、41、42:CPUコア
45:コア間割込機構
46:SoCバス
47:メモリ制御部
50:メモリ
110:時分割多重化部
111:タイマ
112:時分割多重化制御部
120:対AP通信部
121:LS側受信部
122:LS側送信部
123:パラメータ領域
131:コンテキスト退避手段
132:コンテキスト復活手段
133:新コンテキスト選定手段
134:OLタスク制御手段
135:OLタスクサービス手段
140:OLタスクキュー
150:カレントOLタスク変数
160:OLタスク表
170:OLタスク表ロック変数
201:稼動コア制御部
230:APタスク向けインタフェース部
231:LS初期化手段
232:OLプログラムセットアップ手段
233:OLタスク開始手段
234:OLタスク終了待ち手段
235:OLタスク強制終了手段
236:OLタスク再初期化手段
237:OLプログラム破棄手段
238:動的コンフィギュレーション変更部
240:対LS通信部
241:AP側送信部
242:AP側受信部

Claims (16)

  1. 複数のプロセッサコアをバスによって相互結合したマルチコアプロセッサを備えるプログラム並列実行システムあって、
    前記複数のプロセッサコアが、
    第1のアプリケーションプログラムが動作するオペレーティングシステムと、第2のグループのプロセッサコアの軽量スケジューラと通信を行うOLリモート制御手段とを含む第1のグループのプロセッサコアと、
    前記オペレーティングシステムを稼動させずに、前記OLリモート制御手段からの要求に基づき、第2のアプリケーションプログラムを動作させる軽量スケジューラを含む第2のグループのプロセッサコアとを含み、
    前記OLリモート制御手段が、
    前記第1のアプリケーションプログラムからの要求に基づき、前記軽量スケジューラに対し、前記第2のアプリケーションプログラムの開始又は終了を指示し、
    前記軽量スケジューラが、
    前記OLリモート制御手段からの指示に基づき、前記第2のグループのプロセッサコア上で、複数のタスクから構成される前記第2のアプリケーションプログラムを動作させる手段と、
    実行中の前記タスクのコンテキストを退避させるコンテキスト退避手段と、
    前記コンテキスト退避手段の処理の後に、次に実行すべき前記タスクを選定する新コンテキスト選定手段と、
    前記新コンテキスト選定手段により選定された前記タスクの実行を開始するコンテキスト復活手段と、
    任意のタイミングで、前記コンテキスト退避手段、前記新コンテキスト選定手段、前記コンテキスト復活手段を呼び出すことにより、複数の前記タスクを時分割で切り替えながら実行する時分割多重化制御手段とを含み、
    前記時分割多重化制御手段は、
    前記タスクの連続実行時間に基づき設定されるタイマのカウンタがゼロに到達すると、前記コンテキスト退避手段、前記新コンテキスト選定手段、前記コンテキスト復活手段を呼び出すことにより、前記タスクを切り替える
    ことを特徴とするプログラム並列実行システム。
  2. 前記軽量スケジューラが、
    前記第2のグループのプロセッサコア間の同期、排他制御や前記第2のグループのプロセッサコアに対するキャッシュ制御の少なくとも一の処理を行うOLタスクサービス手段を備える
    ことを特徴とする請求項1に記載のプログラム並列実行システム。
  3. 前記軽量スケジューラが、
    前記第1のアプリケーションプログラム側からの指示に基き、タスクの開始や終了の制御を行うタスク制御手段と、タスク内のスレッド間通信やキャッシュ制御、タスクの終了要求を処理するOLタスクサービス手段を含むことを特徴とする請求項1又は2に記載のプログラム並列実行システム。
  4. 前記OLリモート制御手段が、
    前記第2のグループのプロセッサコア上で前記軽量スケジューラが動作できるように初期設定を行う初期化手段と、
    稼働中の前記軽量スケジューラ上に新しく前記タスクをロードし実行可能な状態にセットアップするセットアップ手段と、
    セットアップしたタスクを実行開始させるタスク開始手段と、
    開始したタスクの終了を待ち合わせるタスク終了待ち手段と、
    前記タスクを強制的に終了させるためのタスク強制終了手段と、
    一旦終了した前記タスクを再ロードせずに初期状態に戻すタスク再初期化手段と、
    ロードしたタスクを破棄してリソースを解放するプログラム破棄手段とを含む
    ことを特徴とする請求項1から請求項の何れかに記載のプログラム並列実行システム。
  5. 前記OLリモート制御手段が、
    前記第1のグループのプロセッサコアの数と第2のグループのプロセッサコアの数のいずれか又は両方をシステム動作中に変化させる動的コンフィギュレーション変更手段を備える
    ことを特徴とする請求項1から請求項の何れかに記載のプログラム並列実行システム。
  6. 前記オペレーティングシステムが稼動するプロセッサコアを動的に追加又は削除する追加削除手段を備え、
    前記OLリモート制御手段が、
    前記第2のグループのプロセッサコアを初期化して前記軽量スケジューラを開始させ、又は終了させる軽量スケジューラ開始終了手段を含む
    ことを特徴とする請求項1から請求項5の何れかに記載のプログラム並列実行システム。
  7. システム動作中に、
    前記追加削除手段が、前記第1のグループのプロセッサコアを構成する一部のプロセッサコアを前記オペレーティングシステムから切り離し、
    前記切り離されたプロセッサコアを第2のグループのプロセッサコアとし、
    前記軽量スケジューラ開始終了手段が、前記第2のグループのプロセッサコア上に前記軽量スケジューラをロードして開始させる
    ことを特徴とする請求項に記載のプログラム並列実行システム。
  8. システム動作中に、
    前記軽量スケジューラ開始終了手段が、前記第2のグループのプロセッサコアを停止させ、
    前記追加削除手段が、停止させたプロセッサコアを前記第1のグループのプロセッサコアに追加する
    ことを特徴とする請求項又は請求項に記載のプログラム並列実行システム。
  9. 複数のプロセッサコアをバスによって相互結合したマルチコアプロセッサを備えるプログラム並列実行システムであって、前記複数のプロセッサコアが、第1のアプリケーションプログラムが動作するオペレーティングシステムと、2のグループのプロセッサコアの軽量スケジューラと通信を行うOLリモート制御手段とを含む第1のグループのプロセッサコアと、前記オペレーティングシステムを稼動させずに、前記OLリモート制御手段からの要求に基づき、第2のアプリケーションプログラムを動作させる軽量スケジューラを含む第2のグループのプロセッサコアとを含むプログラム並列実行システムによるプログラム並列実行方法であって、
    前記OLリモート制御手段が、前記第1のアプリケーションプログラムからの要求に基づき、前記軽量スケジューラに対し、前記第2のアプリケーションプログラムの開始又は終了を指示するステップと、
    前記軽量スケジューラが、前記OLリモート制御手段からの指示に基づき、前記第2のグループのプロセッサコア上で、複数のタスクから構成される前記第2のアプリケーションプログラムを動作させるステップと、
    前記軽量スケジューラが備えるコンテキスト退避手段が、実行中の前記タスクのコンテキストを退避させるコンテキスト退避ステップと、
    前記軽量スケジューラが備える新コンテキスト選定手段が、前記コンテキスト退避手段の処理の後に、次に実行すべき前記タスクを選定する新コンテキスト選定ステップと、
    前記軽量スケジューラが備えるコンテキスト復活手段が、前記新コンテキスト選定手段により選定された前記タスクの実行を開始するコンテキスト復活ステップと、
    前記軽量スケジューラが備える時分割多重化制御手段が、任意のタイミングで、前記コンテキスト退避手段、前記新コンテキスト選定手段、前記コンテキスト復活手段を呼び出すことにより、複数の前記タスクを時分割で切り替えながら実行する時分割多重化制御ステップとを有し、
    前記時分割多重化制御ステップで、
    前記タスクの連続実行時間に基づき設定されるタイマのカウンタがゼロに到達すると、前記コンテキスト退避手段、前記新コンテキスト選定手段、前記コンテキスト復活手段を呼び出すことにより、前記タスクを切り替える
    ことを特徴とするプログラム並列実行方法
  10. 前記軽量スケジューラが備えるOLタスクサービス手段が、前記第2のグループのプロセッサコア間の同期、排他制御や前記第2のグループのプロセッサコアに対するキャッシュ制御の少なくとも一の処理を行うOLタスクサービスステップを有する
    ことを特徴とする請求項に記載のプログラム並列実行方法
  11. 前記軽量スケジューラが備えるタスク制御手段が、前記第1のアプリケーションプログラム側からの指示に基き、タスクの開始や終了の制御を行うタスク制御ステップと、
    前記軽量スケジューラが備えるOLタスクサービス手段が、タスク内のスレッド間通信やキャッシュ制御、タスクの終了要求を処理するOLタスクサービスステップと
    を有することを特徴とする請求項9又は10に記載のプログラム並列実行方法
  12. 前記OLリモート制御手段が備える初期化手段が、前記第2のグループのプロセッサコア上で前記軽量スケジューラが動作できるように初期設定を行う初期化ステップと、
    前記OLリモート制御手段が備えるセットアップ手段が、稼働中の前記軽量スケジューラ上に新しく前記タスクをロードし実行可能な状態にセットアップするセットアップステップと、
    前記OLリモート制御手段が備えるタスク開始手段が、セットアップしたタスクを実行開始させるタスク開始ステップと、
    前記OLリモート制御手段が備えるタスク終了待ち手段が、開始したタスクの終了を待ち合わせるタスク終了待ちステップと、
    前記OLリモート制御手段が備えるタスク強制終了手段が、前記タスクを強制的に終了させるタスク強制終了ステップと、
    前記OLリモート制御手段が備えるタスク再初期化手段が、一旦終了した前記タスクを再ロードせずに初期状態に戻すタスク再初期化ステップと、
    前記OLリモート制御手段が備えるプログラム破棄手段が、ロードしたタスクを破棄してリソースを解放するプログラム破棄ステップと
    を有することを特徴とする請求項から請求項11の何れかに記載のプログラム並列実行方法
  13. 前記OLリモート制御手段が備える動的コンフィギュレーション変更手段が、前記第1のグループのプロセッサコアの数と第2のグループのプロセッサコアの数のいずれか又は両方をシステム動作中に変化させる動的コンフィギュレーション変更ステップを有する
    ことを特徴とする請求項から請求項12の何れかに記載のプログラム並列実行方法
  14. 追加削除手段が、前記オペレーティングシステムが稼動するプロセッサコアを動的に追加又は削除する追加削除ステップと、
    前記OLリモート制御手段が備える軽量スケジューラ開始手段が、前記第2のグループのプロセッサコアを初期化して前記軽量スケジューラを開始させ、又は終了させる軽量スケジューラ開始終了ステップと
    を有する特徴とする請求項から請求項13の何れかに記載のプログラム並列実行方法
  15. システム動作中に、
    前記追加削除ステップで、前記第1のグループのプロセッサコアを構成する一部のプロセッサコアを前記オペレーティングシステムから切り離し、
    前記切り離されたプロセッサコアを第2のグループのプロセッサコアとし、
    前記軽量スケジューラ開始終了ステップで、前記第2のグループのプロセッサコア上に前記軽量スケジューラをロードして開始させる
    ことを特徴とする請求項14に記載のプログラム並列実行方法
  16. システム動作中に、
    前記軽量スケジューラ開始終了ステップで、前記第2のグループのプロセッサコアを停止させ、
    前記追加削除ステップで、停止させたプロセッサコアを前記第1のグループのプロセッサコアに追加する
    ことを特徴とする請求項14又は請求項15に記載のプログラム並列実行方法
JP2009025044A 2009-02-05 2009-02-05 プログラム並列実行システム、マルチコアプロセッサ上のプログラム並列実行方法 Active JP5453825B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009025044A JP5453825B2 (ja) 2009-02-05 2009-02-05 プログラム並列実行システム、マルチコアプロセッサ上のプログラム並列実行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009025044A JP5453825B2 (ja) 2009-02-05 2009-02-05 プログラム並列実行システム、マルチコアプロセッサ上のプログラム並列実行方法

Publications (2)

Publication Number Publication Date
JP2010182096A JP2010182096A (ja) 2010-08-19
JP5453825B2 true JP5453825B2 (ja) 2014-03-26

Family

ID=42763652

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009025044A Active JP5453825B2 (ja) 2009-02-05 2009-02-05 プログラム並列実行システム、マルチコアプロセッサ上のプログラム並列実行方法

Country Status (1)

Country Link
JP (1) JP5453825B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3276489A4 (en) * 2015-03-23 2018-08-01 Nec Corporation Parallel processing system
CN108431775A (zh) * 2015-07-30 2018-08-21 高通股份有限公司 用于高效并行计算的简化的基于任务的运行时的方法

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2357455B1 (en) 2010-01-20 2017-07-12 Mitutoyo Corporation Spherical-form measuring apparatus
WO2011104812A1 (ja) * 2010-02-23 2011-09-01 富士通株式会社 マルチコアプロセッサシステム、割込プログラム、および割込方法
JP2016091076A (ja) * 2014-10-30 2016-05-23 日本電気株式会社 情報処理装置
JP5867630B2 (ja) * 2015-01-05 2016-02-24 富士通株式会社 マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
DE102018212686A1 (de) * 2018-07-30 2020-01-30 Siemens Aktiengesellschaft Verfahren zum Betreiben einer Rechenanlage
JP7322797B2 (ja) * 2020-04-28 2023-08-08 株式会社デンソー リアルタイム演算処理装置
CN114090097A (zh) * 2020-06-30 2022-02-25 中国航发商用航空发动机有限责任公司 发动机控制系统和控制软件启动方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2728601B2 (ja) * 1992-08-06 1998-03-18 富士通株式会社 並列処理の性能評価装置
JP2001034582A (ja) * 1999-05-17 2001-02-09 Matsushita Electric Ind Co Ltd コマンドパケットによってプロセッサを選択する並列処理装置及びそのシステム
JP2001209627A (ja) * 2000-01-27 2001-08-03 Hitachi Ltd 情報処理システム
JP2002007150A (ja) * 2000-06-19 2002-01-11 Hitachi Ltd プロセスのスケジューリング方法および装置およびプロセスのスケジューリングプログラムを記録したコンピュータ読み取り可能な記録媒体
JP3969308B2 (ja) * 2002-03-20 2007-09-05 日本電気株式会社 シングルプロセッサ向けosによる並列処理システム
JP4374221B2 (ja) * 2003-08-29 2009-12-02 パナソニック株式会社 コンピュータシステムおよび記録媒体
JP2007219816A (ja) * 2006-02-16 2007-08-30 Handotai Rikougaku Kenkyu Center:Kk マルチプロセッサシステム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3276489A4 (en) * 2015-03-23 2018-08-01 Nec Corporation Parallel processing system
US10162675B2 (en) 2015-03-23 2018-12-25 Nec Corporation Parallel processing system
CN108431775A (zh) * 2015-07-30 2018-08-21 高通股份有限公司 用于高效并行计算的简化的基于任务的运行时的方法

Also Published As

Publication number Publication date
JP2010182096A (ja) 2010-08-19

Similar Documents

Publication Publication Date Title
JP5453825B2 (ja) プログラム並列実行システム、マルチコアプロセッサ上のプログラム並列実行方法
JP6381734B2 (ja) グラフィックス計算プロセススケジューリング
US8793695B2 (en) Information processing device and information processing method
Cerrato et al. Supporting fine-grained network functions through Intel DPDK
WO2017166777A1 (zh) 一种任务调度方法及装置
JP6228459B2 (ja) システムコール要求の通信の最適化
US20130061220A1 (en) Method for on-demand inter-cloud load provisioning for transient bursts of computing needs
JP6086868B2 (ja) ユーザモードからのグラフィックス処理ディスパッチ
JP2013546097A (ja) グラフィックス処理計算リソースのアクセシビリティ
JP2014504416A (ja) 組み合わせたcpu/gpuアーキテクチャシステムにおけるデバイスの発見およびトポロジーのレポーティング
EP2176773A2 (en) Data packet processing method for a multi core processor
JP2007079789A (ja) 計算機システム及びイベント処理方法
CN102323917B (zh) 一种基于共享内存实现多进程共享gpu的方法
CN103064657A (zh) 单个处理器上实现多应用并行处理的方法及装置
WO2013185571A1 (zh) 多线程虚拟流水线处理器的线程控制和调用方法及其处理器
EP2128759A1 (en) Starting-up control method for operating system and information processing device
CN103744716A (zh) 一种基于当前vcpu调度状态的动态中断均衡映射方法
CN104102548A (zh) 任务资源调度处理方法和系统
CN112491426B (zh) 面向多核dsp的服务组件通信架构及任务调度、数据交互方法
US20140075449A1 (en) Method and Apparatus for Synchronous Processing Based on Multi-Core System
WO2012052775A1 (en) Data processing systems
CN109542832B (zh) 一种无锁机制的异构多核cpu间通信系统及方法
JP2014503898A (ja) 処理装置の同期動作のための方法およびシステム
JP5805783B2 (ja) コンピュータシステムインタラプト処理
CN107426728B (zh) 高性能接入认证处理方法、系统、控制器设备、组网装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130417

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130423

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131002

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20131008

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131120

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131223

R150 Certificate of patent or registration of utility model

Ref document number: 5453825

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150