JP5459402B2 - マルチコアプロセッサシステム、制御プログラム、および制御方法 - Google Patents
マルチコアプロセッサシステム、制御プログラム、および制御方法 Download PDFInfo
- Publication number
- JP5459402B2 JP5459402B2 JP2012521216A JP2012521216A JP5459402B2 JP 5459402 B2 JP5459402 B2 JP 5459402B2 JP 2012521216 A JP2012521216 A JP 2012521216A JP 2012521216 A JP2012521216 A JP 2012521216A JP 5459402 B2 JP5459402 B2 JP 5459402B2
- Authority
- JP
- Japan
- Prior art keywords
- software
- control program
- core
- execution control
- cores
- 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
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Description
本発明は、マルチコアプロセッサへのソフトウェアの割り当てを制御するマルチコアプロセッサシステム、制御プログラム、および制御方法に関する。
従来、マルチコアプロセッサシステムにおいて、ソフトウェアの実行形式には大きく2つの形式がある。1つはカーネルをマスタCPU(Central Processing Unit)で動作させ、スレーブCPUで動作させない方式(「シングルカーネルマルチコア方式」と称する。)である。シングルカーネルマルチコア方式では、マスタCPUがRPC(Remote Procedure Call)によりスレーブCPU上で処理対象となる関数を呼び出し、マスタCPUがスレーブCPUに該処理対象となる関数を実行させる。
もう1つはカーネルを各CPUで動作させ、マルチコアプロセッサ全体でマルチスレッドを実現する方式(「マルチカーネルマルチコア方式」と称する。)である。
また、マルチコアプロセッサシステムにおいて動作効率を上げるために、プロセスによって割り当てるCPUを定義する技術が知られている(たとえば、下記特許文献1を参照。)。また、バッチ処理を割り当てるCPUをあらかじめ決定させておくことにより、マルチコアプロセッサシステムにおいて動作効率を上げる技術が知られている。(たとえば、下記特許文献2を参照。)。
また、マルチコアプロセッサシステムやシングルコアプロセッサシステムにおいて、プロセスの実行中には通常モードとし、プロセスを実行していないときには低消費電力モードに切り替えることにより、低消費電力化を図る技術が知られている(たとえば、下記特許文献3を参照。)。
近年では、たとえば、シングルコアプロセッサシステムからマルチコアプロセッサシステムに移行するに当たり、シングルコアプロセッサシステムで開発された開発資産をどのように有効利用していくかが問題となっている。ソフトウェアがシングルコアプロセッサシステムを用いて開発されたシンプルな構造であると、該ソフトウェアでは複雑な制御ができないため、マルチコアプロセッサシステムでマルチスレッドで動作させようとするとソフトウェアにチューニングが必要となる。チューニングが必要であるということは、ソフトウェアの継承性を崩さなければならないという問題点があった。
また、シングルカーネルマルチコア方式では、関数呼び出しのタイミングでスレーブCPUにおいて並列実行することにより、マルチコアの並列性を生かすこととなる。よって、該シングルカーネルマルチコア方式では、シングルコアプロセッサシステムからマルチコアプロセッサシステムに移行するに当たり、ソフトウェアの構造を変更する必要がほとんどない。しかしながら、ソフトウェアの並列性は限られているため、100%の並列化実行は困難であり、マルチコアプロセッサシステム全体の利用効率は下がってしまう問題点があった。
一方、マルチカーネルマルチコア方式では、すべてのCPUでマルチスレッドが実行可能となるため、複数のソフトウェアを複数のCPU、複数のスレッドで動作させることが可能である。よって、マルチカーネルマルチコア方式では、システムの利用効率は上昇する。しかしながら、各CPUでOSを動作させる環境では実行制約が多いため、既存の開発資産を存分に活用することが困難である。すなわち、多くのソフトウェアにおいてマルチカーネルマルチコア方式に対応するソフトウェアを再度開発する必要性があるという問題点があった。
本発明は、上述した従来技術による問題点を解消するため、どのシステム構成で開発されたかに関わらず対象ソフトを変更することなく使用することができるマルチコアプロセッサシステム、制御プログラム、および制御方法を提供することを目的とする。
本実施形態の一観点によれば、対象ソフトウェアの起動指示を検出する検出手段と、前記対象ソフトウェアが共通プログラムを利用するソフトウェアであるか否かを前記検出手段により検出された起動指示に基づいて判断する判断手段と、前記共通プログラムを利用してソフトウェアを実行させる第1の実行制御プログラムが動作するコアと前記共通プログラムを利用せずにソフトウェアを実行させる第2の実行制御プログラムが動作するコアとを有するマルチコアプロセッサから前記判断手段による判断結果に基づいて前記対象ソフトウェアを割り当てるコアを特定する特定手段と、前記特定手段により特定されたコアに前記対象ソフトウェアの実行指示を通知する通知手段と、を備えるマルチコアプロセッサシステムを提供する。
本マルチコアプロセッサシステム、制御プログラム、および制御方法によれば、どのシステム構成で開発されたかに関わらず対象ソフトを変更することなく使用することができるという効果を奏する。
以下にマルチコアプロセッサシステム、制御プログラム、および制御方法の好適な実施の形態を詳細に説明する。なお、本実施の形態のマルチコアプロセッサシステムにおいて、マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。
本実施の形態では、各ソフトウェアは利用者によりA型のソフトウェアとB型のソフトウェアとC型のソフトウェアとのいずれかに分類される。
A型のソフトウェアとは、シングルコアプロセッサシステムで動作が保証されているソフトウェアであり、カーネル上で動作するソフトウェアである。カーネル上で動作するソフトウェアとは、具体的には、たとえば、カーネルが有するライブラリ(共通プログラム)を利用して動作することを示している。
B型のソフトウェアとは、マルチコアプロセッサシステムのマルチカーネルマルチコア方式で動作が保証されているソフトウェアであり、カーネル上で動作するソフトウェアである。B型のソフトウェアは複数のプロセスを有し、各プロセスはカーネル上で動作することにより、OSの並列拡張が利用され効率よく動作するソフトウェアである。
また、たとえば、A型のソフトウェアのソースコードはそのままで、開発者が該A型のソフトウェアをリコンパイルすることでコンパイラの機能によってB型のソフトウェアに拡張することができる。これにより、B型のソフトウェアでは、マルチコアプロセッサシステムの各CPUのOS上のライブラリ(共通プログラム)など並列拡張されたライブラリ(共通プログラム)にリンクすることが可能となる。B型のソフトウェアとしては、たとえば、高速ブラウザとUI(User Interface)が挙げられる。
C型のソフトウェアとは、シングルカーネルマルチコアプロセッサシステムに対して、チューニングされたソフトウェアである。すなわち、ソースコードレベルでマルチコア対応がなされ、B型のソフトウェアのように並列拡張されたライブラリをリンクするのではなく、C型のソフトウェアのソースコードが並列化されている。たとえば、C型のソフトウェアとして高速通信対応パケット処理ライブラリが挙げられる。
(マルチコアプロセッサシステムのハードウェア)
図1は、マルチコアプロセッサシステムのハードウェアを示すブロック図である。図1において、マルチコアプロセッサシステム100は、マスタCPU101(Central Processing Unit)とスレーブCPU102〜スレーブCPU104と共有メモリ105とを有している。各部は、バス106を介して接続されている。
図1は、マルチコアプロセッサシステムのハードウェアを示すブロック図である。図1において、マルチコアプロセッサシステム100は、マスタCPU101(Central Processing Unit)とスレーブCPU102〜スレーブCPU104と共有メモリ105とを有している。各部は、バス106を介して接続されている。
ここで、マスタCPU101とスレーブCPU102〜スレーブCPU104では、たとえば、それぞれコアとレジスタとキャッシュとを有している。マスタCPU101はマスタOS111を実行し、マルチコアプロセッサシステム100の全体の制御を司る。マスタOS111は、ソフトウェアの各プロセスをどのCPUに割り当てるかを制御する制御プログラムを有し、マスタCPU101でのプロセスの切り替えを制御する機能を有している。
スレーブCPU102〜スレーブCPU104は、たとえば、それぞれカーネルとExecutorとマイクロカーネルとを実行している。各マイクロカーネルは関数の実行指示を受け付けた場合、Executorに関数の実行指示を渡し、プロセスの起動指示を受け付けた場合、カーネルをスリープ状態から起こしてカーネルにプロセスを起動させる。
共有メモリ105は、たとえば、マルチコアプロセッサに共有されるメモリである。共有メモリ105は、たとえば、ブートプログラムとアプリケーションソフトウェアとプロセステーブル142とタグ情報141を有している。共有メモリ105は、具体的には、たとえば、ROM(Read Only Memory)と、RAM(Random Access Memory)と、フラッシュROMなどを有している。
たとえば、フラッシュROMがブートプログラムを記憶し、ROMがアプリケーションソフトウェアを記憶し、RAMがマスタCPU101とスレーブCPU102〜スレーブCPU104のワークエリアとして使用される。共有メモリ105に記憶されているプログラムは、各CPUにロードされることで、コーディングされている処理を該各CPUに実行させることとなる。
プロセステーブル142とは、ソフトウェアのプロセスや関数がどのCPUに割り当てられているか、各CPUがどのソフトウェアのプロセスや関数を実行中であるかを示す情報である。
図2は、タグ情報141の一例を示す説明図である。タグ情報141はソフトウェア名の項目201とソフトタイプの項目202と必要CPU数の項目203とを有している。ソフトウェア名の項目201にはソフトウェア名が保持され、ソフトタイプの項目202にはソフトウェアがA型のソフトウェアであるかB型のソフトウェアであるかC型のソフトウェアであるかを判別可能な情報が保持されている。ソフトタイプの項目202にはA型のソフトウェアであればAが保持され、B型のソフトウェアであればBが保持され、C型のソフトウェアであればCが保持されている。必要CPU数の項目203にはソフトタイプがC型のソフトウェアの場合において実行に必要なCPU数が保持されている。
(マルチコアプロセッサシステム100)
図3は、マルチコアプロセッサシステム100を示すブロック図である。マスタOS111は、検出部301と、判断部302と、特定部303と、通知部304と、を有している。マスタOS111はマスタCPU101にロードされることで実行されるため、各部はマスタCPU101に実行されることとなる。
図3は、マルチコアプロセッサシステム100を示すブロック図である。マスタOS111は、検出部301と、判断部302と、特定部303と、通知部304と、を有している。マスタOS111はマスタCPU101にロードされることで実行されるため、各部はマスタCPU101に実行されることとなる。
検出部301は、対象ソフトウェアの起動指示を検出する。
判断部302は、対象ソフトウェアが共通プログラムを利用するソフトウェアであるか否かを検出部301により検出された起動指示に基づいて判断する。
マルチコアプロセッサは、共通プログラムを利用してソフトウェアを実行させる第1の実行制御プログラムが動作する第1のCPUと共通プログラムを利用せずにソフトウェアを実行させる第2の実行制御プログラムが動作する第2のCPUとを有する。特定部303は、該マルチコアプロセッサから判断部302による判断結果に基づいて対象ソフトウェアを割り当てるCPUを特定する。ここで、第1の実行制御プログラムはマスタOS111とカーネル121からカーネル123であり、第2の実行制御プログラムはExecutor131からExecutor133である。
特定部303は、判断部302により対象ソフトウェアが共通プログラムを利用するソフトウェアであると判断された場合、マルチコアプロセッサから第1の実行制御プログラムが動作する第1のCPUを特定する。
特定部303は、判断部302により対象ソフトウェアが共通プログラムを利用しないソフトウェアであると判断された場合、マルチコアプロセッサから第2の実行制御プログラムが動作する第2のCPUを特定する。
通知部304は、特定部303により特定されたCPUに対象ソフトウェアの実行指示を通知する。
また、マルチコアプロセッサが第1の実行制御プログラムと第2の実行制御プログラムとを選択的に動作させる第3のCPUを有する。本実施の形態ではスレーブCPU102〜スレーブCPU104が第3のCPUである。
ここで、スレーブCPU102〜スレーブCPU104のそれぞれで動作するマイクロカーネル112〜マイクロカーネル114について説明する。マイクロカーネル112は受付部305と切り替え部306とを有している。マイクロカーネル113は受付部307と切り替え部308とを有している。マイクロカーネル114は受付部309と切り替え部310とを有している。
受付部305と受付部307と受付部309とは、対象ソフトウェアの実行指示を受け付ける。
切り替え部306は、第1の実行制御プログラムと第2の実行制御プログラムと、受付部305により受け付けた対象ソフトウェアの実行指示に応じて選択的に切り替える。
切り替え部308は、第1の実行制御プログラムと第2の実行制御プログラムと、受付部307により受け付けた対象ソフトウェアの実行指示に応じて選択的に切り替える。
切り替え部310は、第1の実行制御プログラムと第2の実行制御プログラムと、受付部309により受け付けた対象ソフトウェアの実行指示に応じて選択的に切り替える。
本実施の形態では、スレーブCPU102は第1の実行制御プログラムであるカーネル121と第2の実行制御プログラムであるExecutor131とをマイクロカーネル112により選択的に動作させる。スレーブCPU103はカーネル122とExecutor132とをマイクロカーネル113により選択的に動作させる。スレーブCPU104はカーネル123とExecutor133とをマイクロカーネル114により選択的に動作させる。
また、特定部303は、判断部302により対象ソフトウェアが共通プログラムを利用するソフトウェアであると判断された場合、マルチコアプロセッサから第1の実行制御プログラムが動作する第1のCPUまたは第3のCPUを特定する。
また、特定部303は、判断部302により対象ソフトウェアが共通プログラムを利用しないソフトウェアであると判断された場合、マルチコアプロセッサから第2の実行制御プログラムが動作する第2のCPUまたは第3のCPUを特定する。
以上を踏まえて、図を用いて詳細な例を説明する。
図4は、A型のソフトウェアがマスタCPU101に割り当てられる例を示す説明図である。まず、マスタOS111がAPP1Aの割り当て指示を受け付けると、マスタOS111がAPP1Aのアプリケーションタイプをタグ情報141に基づいて判断する。APP1AはA型のソフトウェアである。
マスタOS111が、カーネル動作中またはExecutorが実行中でないCPUを特定する。低負荷なCPUをプロセステーブル142に基づいて特定する。ここでは、たとえば、全CPUが特定されるため、マスタOS111がAPP1AをマスタCPU101に割り当てる。そして、マスタOS111がAPP1Aを実行する。
図5は、A型のソフトウェアがスレーブCPU102に割り当てられる例を示す説明図である。マスタOS111がAPP2Aの割り当て指示を受け付けると、マスタOS111がAPP2Aのアプリケーションタイプをタグ情報141に基づいて判断する。APP2AはA型のソフトウェアである。
つぎに、マスタOS111が低負荷なCPUであるスレーブCPU102にAPP2Aの起動指示を通知する。マスタOS111がカーネル動作中またはExecutorが実行中でないCPUを特定する。そして、マスタOS111が特定したCPUにAPP2Aを割り当てる。ここでは、マスタOS111がスレーブCPU102へAPP2Aの実行指示を通知する。
そして、マイクロカーネル112がAPP2Aの実行指示を受け付けると、マイクロカーネル112がカーネル121をスリープ状態から復帰させる。すなわち、マイクロカーネル112がExecutor131動作からカーネル121動作に切り替える。そして、マイクロカーネル112がカーネル121にAPP2Aを割り当て、カーネル121がAPP2Aを実行する。
図6は、B型のソフトウェアがスレーブCPU102とスレーブCPU103に割り当てられる例を示す説明図である。マスタOS111がAPP1Bの割り当て指示を受け付けると、マスタOS111がAPP1Bのアプリケーションタイプをタグ情報141に基づいて判断する。APP1BはB型のソフトウェアである。APP1Bは、たとえば、APP1B−P1とAPP1B−P2との2つのプロセスにより構成されている。
つぎに、マスタOS111がマスタCPU101およびスレーブCPU102〜スレーブCPU104からカーネル動作または何も割り当てられていないCPUを特定する。ここでは、全CPUが特定される。マスタOS111はスレーブCPU102にAPP1B−P1の実行指示を通知する。そして、マイクロカーネル112がAPP1B−P1の実行指示を受け付けると、マイクロカーネル112がカーネル121にAPP1B−P1を割り当て、カーネル121がAPP1B−P1を実行する。
つぎに、マスタOS111はスレーブCPU103にAPP1B−P2の実行指示を通知する。そして、マイクロカーネル113がAPP1B−P2の実行指示を受け付けると、マイクロカーネル113がカーネル122をスリープ状態から復帰させる。マイクロカーネル113がカーネル122にAPP1B−P2を割り当てると、カーネル122がAPP1B−P2を実行する。
図7は、スレーブCPUに割り当てられたB型のソフトウェアのプロセスがマイグレーションされる例を示す説明図である。つぎに、マスタOS111がAPP1Cの起動指示を受け付けると、マスタOS111がAPP1Cのアプリケーションタイプをタグ情報141に基づいて判断する。APP1CはC型のソフトウェアである
つぎに、マスタOS111がマスタCPU101およびスレーブCPU102〜スレーブCPU104からExecutor動作またはスリープ状態のCPUを特定する。ここでは、スレーブCPU104が特定される。マスタOS111はタグ情報141からAPP1Cの実行に必要なCPU数を取得する。そして、マスタOS111は、APP1Cの実行に必要なCPU数と特定したCPU数とを比較することにより、APP1Cの実行に必要なCPU数をアサインできるか否かを判断する。ここでは、APP1Cの実行に必要なCPU数がアサインできないと判断される。
つぎに、マスタOS111がスレーブCPU102〜スレーブCPU104からカーネル動作のCPUを特定する。ここで、スレーブCPU102とスレーブCPU103が特定される。たとえば、マスタOS111が、特定した2つのCPUのうち低負荷であるスレーブCPU103を選択する。マスタOS111がスレーブCPU103上でA型のソフトウェアまたはB型のソフトウェアが動作しているか否かをプロセステーブル142に基づいて判断する。
スレーブCPU103はB型のソフトウェアであるAPP1BのうちのAPP1B−P2を実行している。マスタOS111がAPP1B−P2をカーネル動作のCPUへマイグレートする。カーネル動作のCPUは、マスタCPU101とスレーブCPU102であるが、ここでは、APP1B−P2はマスタCPU101へマイグレードされる。
ここで、マイグレートとは、マイグレート元のCPUのキャッシュを共有メモリ105に書き出して、マイグレートする対象プロセスのコンテキストテーブルのポインタをマイグレート先のCPUにプロセッサ間通信で通知する。
図8は、C型のソフトウェアがスレーブCPU103とスレーブCPU104に割り当てられる例を示す説明図である。マスタOS111がスレーブCPU103へAPP1Cの実行指示を通知する。スレーブCPU103はAPP1Cの実行指示を受け付けると、マイクロカーネル113がカーネル122動作からExecutor132動作に切り替える。そして、Executor132がAPP1Cを呼び出して実行する。
具体的には、C型のソフトウェアであるAPP1Cの実行指示は、たとえば、APP1Cの割り込み指示である。スレーブCPU103のマイクロカーネル113が割り込み指示を受け付けると、Executor132が割り込みハンドラのように直ちにAPP1Cを呼び出して実行する。
また、APP1CがRPCによって関数(図中Remote Func)をスレーブCPU104で呼び出す。マイクロカーネル114がExecutor133を動作させ、該APP1CからのRPCによる関数をExecutor133が呼び出して実行する。また、関数の実行結果が呼び出し元の関数(ここでは、スレーブCPU103で実行中のAPP1C)に通知され、該関数が終了する。該関数の実行が終了すると、マイクロカーネル114がスレーブCPU104をスリープ状態とする。なお、スリープ状態とは、割り込み指示(関数の実行指示)のみを受け付けている状態である。
(マルチコアプロセッサシステム100の起動時に関する制御処理手順)
図9は、マルチコアプロセッサシステム100の起動時に関する制御処理手順を示すフローチャートである。まず、マスタCPU101がマスタOS111を起動する(ステップS901)。マスタOS111が起動されると、各スレーブCPUが、マイクロカーネルを起動し(ステップS902)、カーネルを起動して該カーネルをスリープ状態とする(ステップS903)。
図9は、マルチコアプロセッサシステム100の起動時に関する制御処理手順を示すフローチャートである。まず、マスタCPU101がマスタOS111を起動する(ステップS901)。マスタOS111が起動されると、各スレーブCPUが、マイクロカーネルを起動し(ステップS902)、カーネルを起動して該カーネルをスリープ状態とする(ステップS903)。
つぎに、各スレーブCPUが、Executorを起動する(ステップS904)。そして、マスタCPU101は処理を待ち受ける(ステップS905)。処理を待ち受けるとはソフトウェアの起動指示を受け付けることを示す。図を用いてマスタCPU101がソフトウェアの起動指示を受け付けた場合のマルチコアプロセッサシステム100の制御処理手順について説明する。
(マルチコアプロセッサシステム100の制御処理手順)
図10〜図12は、マルチコアプロセッサシステム100の制御処理手順を示すフローチャートである。まず、マスタCPU101が、ソフトウェアの起動指示を受け付けたか否かを判断し(ステップS1001)、ソフトウェアの起動指示を受け付けていないと判断した場合(ステップS1001:No)、ステップS1001へ戻る。マスタCPU101が、ソフトウェアの起動指示を受け付けたと判断した場合(ステップS1001:Yes)、起動指示を受け付けた対象ソフトウェアのソフトタイプをタグ情報141に基づいて判断する(ステップS1002)。
図10〜図12は、マルチコアプロセッサシステム100の制御処理手順を示すフローチャートである。まず、マスタCPU101が、ソフトウェアの起動指示を受け付けたか否かを判断し(ステップS1001)、ソフトウェアの起動指示を受け付けていないと判断した場合(ステップS1001:No)、ステップS1001へ戻る。マスタCPU101が、ソフトウェアの起動指示を受け付けたと判断した場合(ステップS1001:Yes)、起動指示を受け付けた対象ソフトウェアのソフトタイプをタグ情報141に基づいて判断する(ステップS1002)。
マスタCPU101が、起動指示を受け付けた対象ソフトウェアのソフトタイプがA型のソフトウェアであると判断された場合(ステップS1002:A型)、カーネル動作またはスリープ状態のCPUを特定する(ステップS1003)。そして、マスタCPU101が、対象ソフトウェアをスレーブCPUへ割り当てるか否かを判断する(ステップS1004)。
つぎに、マスタCPU101が、対象ソフトウェアをスレーブCPUへ割り当てないと判断した場合(ステップS1004:No)、対象ソフトウェアのプロセスを実行し(ステップS1005)、ステップS1001へ戻る。マスタCPU101が、対象ソフトウェアをスレーブCPUへ割り当てると判断した場合(ステップS1004:Yes)、対象ソフトウェアのプロセスの実行指示を割り当てるスレーブCPUへ通知し(ステップS1006)、ステップS1001へ戻る。
割り当てるスレーブCPUが、対象ソフトウェアのプロセスの実行指示を受け付けると、カーネル動作にスイッチし(ステップS1007)、対象ソフトウェアのプロセスを実行する(ステップS1008)。
つぎに、マスタCPU101が、起動指示を受け付けた対象ソフトウェアのソフトタイプがB型のソフトウェアであると判断された場合(ステップS1002:B型)、カーネル動作またはスリープ状態のCPUを特定する(ステップS1009)。なお、マスタCPU101はカーネル動作のCPUまたはスリープ状態のCPU(いずれのプロセスおよび関数も割り当てられていないCPU)を特定するとともに、対象ソフトウェアのプロセスを割り当てるCPUを決定することとする。
つぎに、マスタCPU101が、対象ソフトウェアのプロセスのうち、未選択のプロセスがあるか否かを判断する(ステップS1010)。マスタCPU101が、未選択のプロセスがあると判断した場合(ステップS1010:Yes)、未選択のプロセスから任意のプロセスを選択する(ステップS1011)。そして、マスタCPU101が、該選択したプロセスがスレーブCPUへ割り当てられるか否かを判断する(ステップS1012)。マスタCPU101が、該選択したプロセスがスレーブCPUへ割り当てられないと判断した場合(ステップS1012:No)、選択したプロセスを実行する(ステップS1013)。
マスタCPU101が、該選択したプロセスがスレーブCPUへ割り当てられると判断した場合(ステップS1012:Yes)、割り当てるスレーブCPUへ選択したプロセスの実行指示を通知し(ステップS1014)、ステップS1010へ戻る。
割り当てるスレーブCPUが、割り当てるスレーブCPUへ選択したプロセスの実行指示を受け付けると、カーネル動作にスイッチする(ステップS1015)。そして、割り当てるスレーブCPUが、実行指示を受け付けたプロセスを実行し(ステップS1016)、OS間連携機構を起動する(ステップS1017)。
ステップS1008またはステップS1017のつぎに、割り当てるスレーブCPUが、プロセスが割り当てられているか否かを判断する(ステップS1018)。割り当てるスレーブCPUが、プロセスが割り当てられていると判断した場合(ステップS1018:Yes)、ステップS1018に戻る。割り当てるスレーブCPUが、プロセスが割り当てられていないと判断した場合(ステップS1018:No)、Executor動作にスイッチし(ステップS1019)、カーネルをスリープ状態に設定する(ステップS1020)。
また、ステップS1010において、マスタCPU101が、未選択のプロセスがないと判断した場合(ステップS1010:No)、ステップS1001へ戻る。
つぎに、マスタCPU101が、起動指示を受け付けた対象ソフトウェアのソフトタイプがC型のソフトウェアであると判断された場合(ステップS1002:C型)、Executor動作またはスリープ状態のスレーブCPUを特定する(ステップS1021)。ここで、スリープ状態のスレーブCPUとはいずれのプロセスもいずれの関数も割り当てられていないスレーブCPUである。マスタCPU101が、対象ソフトウェアの必要CPU数分のスレーブCPUを特定したか否かを判断する(ステップS1022)。
マスタCPU101が、対象ソフトウェアの必要CPU数分のスレーブCPUが特定したと判断していない場合(ステップS1022:No)、不足CPU数=必要CPU数−特定したCPU数とする(ステップS1023)。つぎに、マスタCPU101が、スレーブCPUのうち、カーネル動作のCPUを特定し(ステップS1024)、特定したCPUのうち、負荷の軽いCPUから順に不足CPU数分のCPUを選択する(ステップS1025)。
つぎに、マスタCPU101が、選択した各CPUでA型のソフトウェアまたはB型のソフトウェアが運用中であるか否かを判断する(ステップS1026)。マスタCPU101が、選択した各CPUでA型のソフトウェアまたはB型のソフトウェアが運用中であると判断した場合(ステップS1026:Yes)、ステップS1027へ移行する。
マスタCPU101が、選択した各CPUで運用中のA型のソフトウェアまたはB型のソフトウェアを選択されなかったカーネル動作CPUまたはマスタCPU101へマイグレートし(ステップS1027)、ステップS1028へ移行する。ステップS1026において、マスタCPU101が、選択した各CPUでA型のソフトウェアまたはB型のソフトウェアが運用中でないと判断した場合(ステップS1026:No)、ステップS1028へ移行する。
ステップS1022:No、ステップS1026:No、またはステップS1027のつぎに、割り当てるスレーブCPUがExecutor動作にスイッチする(ステップS1028)。そして、アプリマスタを割り当てるスレーブCPU(第1のCPU)が、対象ソフトウェアのアプリマスタを起動し(ステップS1029)、RPCを受け付けるスレーブCPUへRPCを発行する(ステップS1030)。アプリマスタとは、対象ソフトウェアのマスタ関数である。
第1のCPUは、アプリマスタの実行を終了するとマスタCPU101へ実行結果をリターンし(ステップS1031)、スリープ状態となる(ステップS1032)。
一方、第1のCPUからRPCを受け付けるスレーブCPU(第2のCPU)が、スリープ状態(ステップS1033)からRPCを受け付けてリモートコール関数を起動する(ステップS1034)。そして、第2のCPUが、関数の実行を終了すると、実行結果を第1のCPUへリターンし(ステップS1035)、ステップS1033へ戻る。
以上説明したように、マルチコアプロセッサシステム、制御プログラム、および制御方法によれば、対象ソフトウェアが共通プログラムを利用するソフトウェアか否かに基づいて該対象ソフトウェアを割り当てるCPUを特定する。これにより、シングルコアプロセッサシステムまたはどのマルチコアプロセッサシステムに対応して開発されたアプリケーションであるかに関係なくアプリケーションを実行させることができる。
また、対象ソフトウェアが共通プログラムを利用するソフトウェアであれば、共通プログラムを利用する第1の実行制御プログラムが動作するCPUを特定する。これにより、OS上で動作するソフトウェアを変更することなく実行させることができる。
また、対象ソフトウェアが共通プログラムを利用しないソフトウェアであれば、共通プログラムを利用しない第2の実行制御プログラムが動作するCPUを特定する。これにより、OS上で動作しないソフトウェアを変更することなく実行させることができる。
また、共通プログラムを利用する第1の実行制御プログラムと共通プログラムを利用しない第2の実行制御プログラムとを選択的に切り替えるCPUを有する。これにより、ソフトウェアがどのようなシステムで開発されたかによって、該ソフトウェアを効率よく実行させることができる。
100 マルチコアプロセッサシステム
111 マスタOS
121,122,123 カーネル
131,132,133 Executor
112,113,114 マイクロカーネル
301 検出部
302 判断部
303 特定部
304 通知部
305,307,309 受付部
306,308,310 切り替え部
111 マスタOS
121,122,123 カーネル
131,132,133 Executor
112,113,114 マイクロカーネル
301 検出部
302 判断部
303 特定部
304 通知部
305,307,309 受付部
306,308,310 切り替え部
Claims (5)
- 複数のコアと、
ソフトウェアごとに、カーネルが有するライブラリである共通プログラムを利用するソフトウェアであるか否かを示す情報と、前記ソフトウェアの実行に要するコアの数と、を記憶する記憶部と、
を有し、
前記複数のコアのうちの一のコアが、
対象ソフトウェアの起動指示を検出し、
前記対象ソフトウェアが、前記共通プログラムを利用するソフトウェアであるか否かを検出した起動指示と前記記憶部に記憶された前記情報とに基づいて判断し、
前記対象ソフトウェアが前記共通プログラムを利用しないソフトウェアであると判断した場合において、前記共通プログラムを利用してソフトウェアを実行させる第1の実行制御プログラムが動作する第1のコアと、前記共通プログラムを利用せずにソフトウェアを実行させる第2の実行制御プログラムが動作する第2のコアと、前記第1の実行制御プログラムと前記第2の実行制御プログラムとを選択的に動作させる第3のコアと、を有する前記複数のコアから、前記第2の実行制御プログラムが動作するコアを前記記憶部に記憶された前記対象ソフトウェアの実行に要するコアの数分特定し、前記第2の実行制御プログラムが動作するコアを前記コアの数分特定できなかった場合、前記第1の実行制御プログラムを動作させる前記第3のコアによって実行されるソフトウェアを前記第1のコアによって実行されるように移行し、移行後の前記第3のコアに前記第2の実行制御プログラムを動作させることにより、前記コアの数分だけ前記第2の実行制御プログラムが動作するコアを特定し、
特定したコアに前記対象ソフトウェアの実行指示を通知する、
処理を実行することを特徴とするマルチコアプロセッサシステム。 - 前記特定する処理では、
前記対象ソフトウェアが前記共通プログラムを利用するソフトウェアであると判断した場合、前記複数のコアから前記第1の実行制御プログラムが動作する前記第1のコアを特定することを特徴とする請求項1に記載のマルチコアプロセッサシステム。 - 前記特定する処理では、
前記対象ソフトウェアが前記共通プログラムを利用するソフトウェアであると判断した場合、前記複数のコアから前記第1の実行制御プログラムが動作する前記第3のコアを特定することを特徴とする請求項1に記載のマルチコアプロセッサシステム。 - ソフトウェアごとにカーネルが有するライブラリである共通プログラムを利用するソフトウェアであるか否かを示す情報と、前記ソフトウェアごとに前記ソフトウェアの実行に要するコアの数と、を記憶する記憶部にアクセス可能な複数のコアのうちの一のコアに、
対象ソフトウェアの起動指示を検出し、
前記対象ソフトウェアが、前記共通プログラムを利用するソフトウェアであるか否かを検出した起動指示と前記記憶部に記憶された前記情報とに基づいて判断し、
前記対象ソフトウェアが前記共通プログラムを利用しないソフトウェアであると判断した場合において、前記共通プログラムを利用してソフトウェアを実行させる第1の実行制御プログラムが動作する第1のコアと、前記共通プログラムを利用せずにソフトウェアを実行させる第2の実行制御プログラムが動作する第2のコアと、前記第1の実行制御プログラムと前記第2の実行制御プログラムとを選択的に動作させる第3のコアと、を有する前記複数のコアから、前記第2の実行制御プログラムが動作するコアを前記記憶部に記憶された前記対象ソフトウェアの実行に要するコアの数分特定し、前記第2の実行制御プログラムが動作するコアを前記コアの数分特定できなかった場合、前記第1の実行制御プログラムを動作させる前記第3のコアによって実行されるソフトウェアを前記第1のコアによって実行されるように移行し、移行後の前記第3のコアに前記第2の実行制御プログラムを動作させることにより、前記コアの数分だけ前記第2の実行制御プログラムが動作するコアを特定し、
特定したコアに前記対象ソフトウェアの実行指示を通知する、
処理を実行させることを特徴とする制御プログラム。 - ソフトウェアごとにカーネルが有するライブラリである共通プログラムを利用するソフトウェアであるか否かを示す情報と、前記ソフトウェアごとに前記ソフトウェアの実行に要するコアの数と、を記憶する記憶部にアクセス可能な複数のコアのうちの一のコアが、
対象ソフトウェアの起動指示を検出し、
前記対象ソフトウェアが、前記共通プログラムを利用するソフトウェアであるか否かを検出した起動指示と前記記憶部に記憶された前記情報とに基づいて判断し、
前記対象ソフトウェアが前記共通プログラムを利用しないソフトウェアであると判断した場合において、前記共通プログラムを利用してソフトウェアを実行させる第1の実行制御プログラムが動作する第1のコアと、前記共通プログラムを利用せずにソフトウェアを実行させる第2の実行制御プログラムが動作する第2のコアと、前記第1の実行制御プログラムと前記第2の実行制御プログラムとを選択的に動作させる第3のコアと、を有する前記複数のコアから、前記第2の実行制御プログラムが動作するコアを前記記憶部に記憶された前記対象ソフトウェアの実行に要するコアの数分特定し、前記第2の実行制御プログラムが動作するコアを前記コアの数分特定できなかった場合、前記第1の実行制御プログラムを動作させる前記第3のコアによって実行されるソフトウェアを前記第1のコアによって実行されるように移行し、移行後の前記第3のコアに前記第2の実行制御プログラムを動作させることにより、前記コアの数分だけ前記第2の実行制御プログラムが動作するコアを特定し、
特定したコアに前記対象ソフトウェアの実行指示を通知する、
処理を実行することを特徴とする制御方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2010/060651 WO2011161783A1 (ja) | 2010-06-23 | 2010-06-23 | マルチコアプロセッサシステム、制御プログラム、および制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2011161783A1 JPWO2011161783A1 (ja) | 2013-08-19 |
JP5459402B2 true JP5459402B2 (ja) | 2014-04-02 |
Family
ID=45370996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012521216A Expired - Fee Related JP5459402B2 (ja) | 2010-06-23 | 2010-06-23 | マルチコアプロセッサシステム、制御プログラム、および制御方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP5459402B2 (ja) |
WO (1) | WO2011161783A1 (ja) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008009865A (ja) * | 2006-06-30 | 2008-01-17 | Yokogawa Electric Corp | 分散コンピュータシステム |
JP2009211643A (ja) * | 2008-03-06 | 2009-09-17 | Denso Corp | ナビゲーション装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007108804A (ja) * | 2004-01-27 | 2007-04-26 | Matsushita Electric Ind Co Ltd | アプリケーション起動調停システム |
JP4825120B2 (ja) * | 2006-12-07 | 2011-11-30 | 株式会社日立製作所 | サービス管理システム、サービス管理装置およびサービス管理方法 |
JP5245711B2 (ja) * | 2008-10-17 | 2013-07-24 | 日本電気株式会社 | 分散データ処理システム、分散データ処理方法および分散データ処理用プログラム |
-
2010
- 2010-06-23 JP JP2012521216A patent/JP5459402B2/ja not_active Expired - Fee Related
- 2010-06-23 WO PCT/JP2010/060651 patent/WO2011161783A1/ja active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008009865A (ja) * | 2006-06-30 | 2008-01-17 | Yokogawa Electric Corp | 分散コンピュータシステム |
JP2009211643A (ja) * | 2008-03-06 | 2009-09-17 | Denso Corp | ナビゲーション装置 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2011161783A1 (ja) | 2013-08-19 |
WO2011161783A1 (ja) | 2011-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9417935B2 (en) | Many-core process scheduling to maximize cache usage | |
US20080046689A1 (en) | Method and apparatus for cooperative multithreading | |
US9858116B2 (en) | Functional unit for supporting multithreading, processor comprising the same, and operating method thereof | |
US10318297B2 (en) | Method and apparatus for operating a self-timed parallelized multi-core processor | |
JP5673672B2 (ja) | マルチコアプロセッサシステム、制御プログラム、および制御方法 | |
US9244734B2 (en) | Mechanism of supporting sub-communicator collectives with o(64) counters as opposed to one counter for each sub-communicator | |
US20150150019A1 (en) | Scheduling computing tasks for multi-processor systems | |
CN111538535B (zh) | 一种cpu指令处理方法、控制器和中央处理单元 | |
JP2014085839A (ja) | 並列実行機構及びその動作方法 | |
US9678791B2 (en) | Shared resources in a docked mobile environment | |
US7617494B2 (en) | Process for running programs with selectable instruction length processors and corresponding processor system | |
JP4420055B2 (ja) | マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法 | |
JP5459402B2 (ja) | マルチコアプロセッサシステム、制御プログラム、および制御方法 | |
JP5678347B2 (ja) | Itシステムの構成方法、そのコンピュータプログラムおよびitシステム | |
US9619277B2 (en) | Computer with plurality of processors sharing process queue, and process dispatch processing method | |
US9396044B2 (en) | Memory efficient thread-level speculation | |
Francis et al. | Implementation of parallel clustering algorithms using Join and Fork model | |
EP1378825B1 (en) | A method for executing programs on selectable-instruction-length processors and corresponding processor system | |
CN118245187A (zh) | 线程调度方法及装置、电子设备及存储介质 | |
US20170068542A1 (en) | Processor and store instruction conversion method | |
JP2021117577A (ja) | 情報処理装置、情報処理方法およびプログラム | |
JP2014038656A (ja) | マルチプロセッサシステム、制御プログラム、および制御方法 | |
JP5195997B2 (ja) | カーネルソースコード最適化方法、カーネルソースコード最適化装置及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130827 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131028 |
|
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: 20131217 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131230 |
|
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 |