JP4196333B2 - 並列処理システム及び並列処理プログラム - Google Patents
並列処理システム及び並列処理プログラム Download PDFInfo
- Publication number
- JP4196333B2 JP4196333B2 JP2003149859A JP2003149859A JP4196333B2 JP 4196333 B2 JP4196333 B2 JP 4196333B2 JP 2003149859 A JP2003149859 A JP 2003149859A JP 2003149859 A JP2003149859 A JP 2003149859A JP 4196333 B2 JP4196333 B2 JP 4196333B2
- Authority
- JP
- Japan
- Prior art keywords
- processor
- request
- parallel processing
- power management
- processors
- 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
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
- G06F1/3228—Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B07—SEPARATING SOLIDS FROM SOLIDS; SORTING
- B07B—SEPARATING SOLIDS FROM SOLIDS BY SIEVING, SCREENING, SIFTING OR BY USING GAS CURRENTS; SEPARATING BY OTHER DRY METHODS APPLICABLE TO BULK MATERIAL, e.g. LOOSE ARTICLES FIT TO BE HANDLED LIKE BULK MATERIAL
- B07B4/00—Separating solids from solids by subjecting their mixture to gas currents
- B07B4/02—Separating solids from solids by subjecting their mixture to gas currents while the mixtures fall
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B07—SEPARATING SOLIDS FROM SOLIDS; SORTING
- B07B—SEPARATING SOLIDS FROM SOLIDS BY SIEVING, SCREENING, SIFTING OR BY USING GAS CURRENTS; SEPARATING BY OTHER DRY METHODS APPLICABLE TO BULK MATERIAL, e.g. LOOSE ARTICLES FIT TO BE HANDLED LIKE BULK MATERIAL
- B07B1/00—Sieving, screening, sifting, or sorting solid materials using networks, gratings, grids, or the like
- B07B1/28—Moving screens not otherwise provided for, e.g. swinging, reciprocating, rocking, tilting or wobbling screens
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B07—SEPARATING SOLIDS FROM SOLIDS; SORTING
- B07B—SEPARATING SOLIDS FROM SOLIDS BY SIEVING, SCREENING, SIFTING OR BY USING GAS CURRENTS; SEPARATING BY OTHER DRY METHODS APPLICABLE TO BULK MATERIAL, e.g. LOOSE ARTICLES FIT TO BE HANDLED LIKE BULK MATERIAL
- B07B1/00—Sieving, screening, sifting, or sorting solid materials using networks, gratings, grids, or the like
- B07B1/42—Drive mechanisms, regulating or controlling devices, or balancing devices, specially adapted for screens
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/324—Power saving characterised by the action undertaken by lowering clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3246—Power saving characterised by the action undertaken by software initiated power-off
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3296—Power saving characterised by the action undertaken by lowering the supply or operating voltage
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Multi Processors (AREA)
- Power Sources (AREA)
Description
【発明の属する技術分野】
本発明は、マルチプロセッサによる並列処理システムにおける電源管理システムに関し、特に、マルチプロセッサ上でシングルプロセッサ向けOS及び既存のアプリケーションを動作させ、アプリケーションに対してマルチプロセッサによる並列処理を実現するシングルプロセッサ向けOSによる並列処理システムにおける電源管理システムに関する。
【0002】
【従来の技術】
携帯電話及び携帯PCを含む携帯端末等のデータ処理装置においては、基本的にシングルプロセッサ上でシングルプロセッサ向けオペレーティングシステム(以下、シングルプロセッサ向けOS)及びシングルプロセッサ向けのアプリケーション(以下、単にアプリケーションと称する)を実行させているのが現状である。
【0003】
このような状況において、マルチプロセッサベースで上記アプリケーションそのままを使用したい場合には、上記シングルプロセッサ向けOSの代わりにマルチプロセッサ向けOS上でアプリケーションを実行させる必要がある。
【0004】
上記のようなマルチプロセッサシステム上でマルチプロセッサ向けOSとアプリケーションの実行を制御するシステムとしては、例えば、特開平3−257652号公報、特開平3−113563号公報に開示される従来技術がある。
【0005】
特開平3−257652号公報(特許文献1)では、複数のプロセッサエレメントからなるマルチプロセッサシステムにおける各プロセッサエレメント間の割り込み制御方法を開示する。
【0006】
特開平3−113563号公報(特許文献2)では、マルチプロセッサシステムにおける複数のプロセッサに割り当てるプロセスのスケジューリング方法を開示する。
【0007】
また、特開2003−058515号公報(特許文献3)では、複数のプロセッサエレメントで個別のプロセスを実行するための方法を開示している。
【0008】
【特許文献1】
特開平3−257652号公報
【特許文献2】
特開平3−113563号公報
【特許文献3】
特開2003−058515号公報
【特許文献4】
米国特許第5142684号明細書
【0009】
【発明が解決しようとする課題】
しかし、従来のように、マルチプロセッサ向けOS上で既存のアプリケーションを動作させる場合、アプリケーションは複数のプロセッサのうちの一つしか使用しないにもかかわらず、マルチプロセッサ向けOSがマルチプロセッサ向けのサービスを行ったり、他のアプリケーションが動作していないのに他のプロセッサとの排他処理を続行するために、その余分な処理がオーバヘッドになってしまい、また上記アプリケーションをマルチプロセッサ用に改造するにも、改造に非常に手間とコストがかかるという問題点があった。
【0010】
特に、携帯電話及び携帯PCを含む携帯端末等の小型データ処理装置においてマルチプロセッサによる並列処理システムを実現する場合、マルチプロセッサ向けOSの処理のオーバヘッド、アプリケーションの改造が大きな障害となる。
【0011】
このような状況において、アプリケーションがそのまま既存のシングルプロセッサ向けOS上で利用されている場合には、既存のアプリケーションをそのままマルチプロセッサ上で動作させることのできる並列処理システムの実現が望まれている。
【0012】
さらに、携帯電話及び携帯PCを含む携帯端末等の小型データ処理装置においてマルチプロセッサによる並列処理システムを実現する場合、消費電力を極力少なくするために電源管理を行うことが必須となる。
【0013】
従来のマルチプロセッサ向けOSの並列処理システムにおける電源管理にあっては、各プロセッサに機能的に対称な電源管理のための手段を設けて電源管理を行っているため、各プロセッサの電源状態を全プロセッサ間で把握しつつ管理する必要がある。このため、ある特定のプロセッサを起動し又は停止するなどの電源状態の変更を行う場合は、システム全体として一貫性を保持するために、プロセッサ間で排他的な制御を行うことが必要となり、制御が非常に複雑になる。
【0014】
マルチプロセッサの各プロセッサ上でシングルプロセッサ向けOSを動作させるようなシステムにおいて、マルチプロセッサ向けOSによる並列処理システムの複雑な電源管理を適用することは、シングルプロセッサ向けOSそのものを大幅に改造する必要があり手間とコストがかかってしまうと共に、非常に複雑な制御がネックとなってマルチプロセッサによる並列処理を行う意義も失われてしまう。
【0015】
また、マルチプロセッサにおける電源管理を行う従来記述としては、例えば米国特許第5142684号明細書(特許文献4)に記載される技術がある。この特許文献4における電源管理では、処理スピードの異なる2種類のプロセッサを有し、実行する処理に応じてプロセッサを選択し、かつ選択したプロセッサに必要な電源を制御して供給するものである。この特許文献4による技術では、能力の異なる2種類のプロセッサの電源制御を行うものであり、専用のハードウェアが必要であると共に、マルチプロセッサの各プロセッサ上でシングルプロセッサ向けOSを動作させるようなシステムを考慮していない。
【0016】
本発明の目的は、マルチプロセッサ上でシングルプロセッサ向けOSと既存のアプリケーションをそれらに改造を加えることなく動作させ、その既存のアプリケーションに対してマルチプロセッサによる並列処理を実現できるようにしたシングルプロセッサ向けOSによる並列処理システム上で、プロセッサの電源管理を簡単な制御で実現することを可能とする電源管理システム及び電源管理プログラムを提供することにある。
【0017】
上記目的を達成するため本発明の並列処理システムは、複数のプロセッサにおいてOS及びアプリケーションを動作させ、前記アプリケーションに対して前記複数のプロセッサによる並列処理を実現する並列処理システムにおいて、前記複数のプロセッサを論理的に、第1のプロセッサ群と第2のプロセッサ群の二つに分け、前記第1のプロセッサ群のプロセッサに属し、かつ、前記第1のプロセッサ群のプロセッサのOSとは機能的に独立に設けられ、前記第2のプロセッサ群のプロセッサに対して前記第1のプロセッサ群のプロセッサ上で動作する前記アプリケーション内で並列化が可能な処理単位に関する要求を前記第1のプロセッサ群のプロセッサ上のOSに代理して発行する並列処理手段と、前記第1のプロセッサ群には、前記複数のプロセッサのうちいずれかのプロセッサの電源状態に関わる処理の要求を、前記いずれかのプロセッサから受信し、前記要求に基づいて前記要求されたプロセッサの電源状態に関わる処理を実行する電源管理手段を有することを特徴とする。
【0018】
請求項2の本発明による並列処理システムは、前記第1のプロセッサ群のプロセッサに属する並列処理手段が、前記第2のプロセッサ群の少なくとも一のプロセッサに対して、前記第1のプロセッサ群の処理単位に関する要求を発し、前記第2のプロセッサ群のプロセッサに対して前記要求に基づいて前記処理単位を新たな処理単位として実行させることを特徴とする。
【0019】
請求項3の本発明による並列処理システムは、複数のプロセッサにおいてOS及びアプリケーションを動作させ、前記アプリケーションに対して前記複数のプロセッサによる並列処理を実現する並列処理システムにおいて、前記複数のプロセッサを論理的に、第1のプロセッサ群と第2のプロセッサ群の二つに分け、前記第1のプロセッサ群のプロセッサに属し、かつ、前記第1のプロセッサ群のプロセッサのOSとは機能的に独立に設けられ、前記第2のプロセッサ群のプロセッサに対して前記第1のプロセッサ群のプロセッサの処理単位に関する要求を前記第1のプロセッサ群のプロセッサ上のOSに代理して発行する並列処理手段とを有し、前記第1のプロセッサ群に、各プロセッサの電源管理に関し、前記第2のプロセッサ群のプロセッサの電源状態を管理する機能と、前記OSに対して電源状態の変更要求を行う機能を有する主電源管理手段を備え、前記第2のプロセッサ群に、前記起動又は停止のために必要な処理を行なう機能、他のプロセッサの起動又は停止を前記主電源管理手段に要求する機能を有する副電源管理手段を備えることを特徴とする。
【0020】
請求項4の本発明による並列処理システムは、前記プロセッサの起動又は停止の要求が、boot要求又はhalt要求であることを特徴とする。
【0021】
請求項5の本発明による並列処理システムは、前記第1のプロセッサ群の前記OSに、前記OSのデバイスとして搭載され、前記第2のプロセッサ群のプロセッサの電源状態を管理すると共に、前記OSに予め備えられているデバイス管理のための所定の要求を、電源管理のための要求として利用し電源状態の変更要求を行う主電源管理手段を設け、前記第2のプロセッサ群の前記OSに、前記起動又は停止のために必要な処理を行なうと共に、起動時に前記主電源管理手段に対して起動メッセージを送信する機能を有する副電源管理手段を備えることを特徴とする。
【0022】
請求項6の本発明による並列処理システムは、前記主電源管理手段を、第2のプロセッサ群の各プロセッサに対応させて複数設けることを特徴とする。
【0023】
請求項7の本発明による並列処理システムは、デバイス管理のための所定の要求であるprobe又はremove要求を、前記プロセッサの起動又は停止要求として読み替えることを特徴とする。
【0024】
請求項8の本発明による並列処理システムは、前記第1のプロセッサ群のプロセッサ及び前記第2のプロセッサ群のプロセッサ上の処理単位間における、同期的な処理及びデータ受け渡しを可能とするプロセス間通信手段を、前記第1のプロセッサ群のプロセッサ及び前記第2のプロセッサ群のプロセッサに備え、前記プロセス間通信手段によって、前記主電源管理手段と前記副電源管理手段間における、電源管理のための同期的な処理を行うことを特徴とする。
【0025】
請求項9の本発明による並列処理システムは、前記主電源管理手段及び前記副電源管理手段をモジュール化して組み込むことを特徴とする。
【0026】
請求項10の本発明による並列処理システムは、前記起動又は停止の要求がなされた前記プロセッサが、起動途上状態又は停止途上状態である場合に、前記途上状態が確定するまで前記要求を待合せることを特徴とする。
【0027】
請求項11の本発明による並列処理システムは、前記起動又は停止の要求がなされた前記プロセッサが、起動途上状態又は停止途上状態である場合に、前記要求を無視することを特徴とする。
【0028】
請求項12の本発明による並列処理システムは、前記プロセッサの起動要求において、要求を受けた前記主電源管理手段が、要求されたプロセッサを起動すると共に、起動されたプロセッサの前記副電源管理手段からの起動完了の通知を受理することにより、前記起動されたプロセッサの電源状態を起動状態に変更することを特徴とする。
【0029】
請求項13の本発明による並列処理システムは、前記プロセッサの停止要求において、要求を受けた前記主電源管理手段が、要求されたプロセッサの前記副電源管理手段に対して、停止に必要な処理を要求し、前記プロセッサからの処理完了の通知を受理することにより、前記要求されたプロセッサを停止させ、前記起動されたプロセッサの電源状態を停止状態に変更することを特徴とする。
【0030】
請求項14の本発明による並列処理システムは、全てのプロセッサの停止要求において、要求を受けた前記主電源管理手段が、他のプロセッサの前記副電源管理手段に対して、停止に必要な処理を要求し、前記他のプロセッサからの処理完了の通知を受理することにより、前記他のプロセッサを停止させ、その後、前記OSのデバイスを制御して自身プロセッサを停止させることを特徴とする。
【0031】
請求項15の本発明による並列処理システムは、プロセッサの起動又は停止に加えて、プロセッサの休止又は復帰の要求を受け付け、前記OSのデバイスを制御することにより、要求されたプロセッサの休止又は復帰を行うと共に、前記休止又は復帰の要求を受けたプロセッサが、前記第1のプロセッサ群からの通知に基づいて前記休止又は復帰のために必要な処理を行うことを特徴とする。
【0032】
請求項16の本発明による並列処理システムは、プロセッサの起動又は停止に加えて、プロセッサの電源電圧又はクロック周波数の変更要求を受け付け、前記OSのデバイスを制御することにより、要求されたプロセッサの電源電圧又はクロック周波数の変更を行うと共に、前記電源電圧又はクロック周波数の変更を受けたプロセッサが、前記第1のプロセッサ群からの通知に基づいて前記電源電圧又はクロック周波数の変更のために必要な処理を行うことを特徴とする。
【0033】
請求項17の本発明は、複数のプロセッサの並列実行を行うシステム上でOS及びアプリケーションを動作させ、前記アプリケーションを前記複数のプロセッサにより並列処理を実現する並列処理プログラムであって、前記複数のプロセッサを論理的に、第1のプロセッサ群と第2のプロセッサ群の少なくとも二つに分け、前記第1のプロセッサ群のプロセッサに、前記第1のプロセッサ群のプロセッサのOSとは機能的に独立して、前記第2のプロセッサ群のプロセッサに対して前記第1のプロセッサ群のプロセッサ上で動作する前記アプリケーション内で並列化が可能な処理単位に関する要求を前記第1のプロセッサ群のプロセッサ上のOSに代理して発行する機能を実現させ、前記第1のプロセッサ群に、前記複数のプロセッサのうちいずれかのプロセッサの電源状態に関わる処理の要求を、前記いずれかのプロセッサから受信し、前記要求に基づいて前記要求されたプロセッサの電源状態に関わる処理を実行する機能を実現させることを特徴とする。
【0034】
請求項18の本発明の並列処理プログラムは、複数のプロセッサの並列実行を行うシステム上でOS及びアプリケーションを動作させ、前記アプリケーションを前記複数のプロセッサにより並列処理を実現する並列処理プログラムであって、前記複数のプロセッサを論理的に、第1のプロセッサ群と第2のプロセッサ群の少なくとも二つに分け、前記第1のプロセッサ群のプロセッサに、前記第1のプロセッサ群のプロセッサのOSとは機能的に独立して、前記第2のプロセッサ群のプロセッサに対して前記第1のプロセッサ群のプロセッサ上で動作する前記アプリケーション内で並列化が可能な処理単位に関する要求を前記第1のプロセッサ群のプロセッサ上のOSに代理して発行する機能と、前記第1のプロセッサ群に、各プロセッサの電源管理に関し、前記第2のプロセッサ群のプロセッサの電源状態を管理する機能と、前記OSに対して電源状態の変更要求を行う機能を有する主電源管理プログラムを備え、前記第2のプロセッサ群に、前記起動又は停止のために必要な処理を行なう機能、他のプロセッサの起動又は停止を前記主電源管理プログラムに要求する機能を有する副電源管理プログラムを備えることを特徴とする。
させることを特徴とする。
【0035】
請求項19の本発明の並列処理プログラムは、前記プロセッサの起動又は停止の要求が、boot要求又はhalt要求であることを特徴とする。
【0036】
請求項20の本発明の並列処理プログラムは、前記第1のプロセッサ群の前記OSに、前記OSのデバイスとして搭載され、前記第2のプロセッサ群のプロセッサのプロセッサの電源状態を管理すると共に、前記OSに予め備えられているデバイス管理のための所定の要求を、電源管理のための要求として利用し電源状態の変更要求を行う主電源管理プログラムを設け、前記第2のプロセッサ群の前記OSに、前記起動又は停止のために必要な処理を行なうと共に、起動時に前記主電源管理プログラムに対して起動メッセージを送信する機能を有する副電源管理プログラムを備えることを特徴とする。
【0037】
請求項21の本発明の並列処理プログラムは、デバイス管理のための所定の要求であるprobe又はremove要求を、前記プロセッサの起動又は停止要求として読み替えることを特徴とする。
【0038】
請求項22の本発明の並列処理プログラムは、前記第1のプロセッサ群のプロセッサ及び前記第2のプロセッサ群のプロセッサ上の処理単位間における、同期的な処理及びデータ受け渡しを可能とするプロセス間通信手段を、前記第1のプロセッサ群のプロセッサ及び前記第2のプロセッサ群のプロセッサに備え、前記プロセス間通信手段によって、前記主電源管理プログラムと前記副電源管理プログラム間における、電源管理のための同期的な処理を行うことを特徴とする。
【0039】
請求項23の本発明の並列処理プログラムは、前記主電源管理プログラム及び前記副電源管理プログラムをモジュール化して組み込むことを特徴とする。
【0040】
請求項24の本発明の並列処理プログラムは、前記起動又は停止の要求がなされた前記プロセッサが、起動途上状態又は停止途上状態である場合に、前記途上状態が確定するまで前記要求を待合せることを特徴とする。
【0041】
請求項25の本発明の並列処理プログラムは、前記起動又は停止の要求がなされた前記プロセッサが、起動途上状態又は停止途上状態である場合に、前記要求を無視することを特徴とする。
【0042】
請求項26の本発明の並列処理プログラムは、前記プロセッサの起動要求において、要求を受けた前記主電源管理プログラムが、要求されたプロセッサを起動すると共に、起動されたプロセッサの前記副電源管理プログラムからの起動完了の通知を受理することにより、前記起動されたプロセッサの電源状態を起動状態に変更することを特徴とする。
【0043】
請求項27の本発明の並列処理プログラムは、前記プロセッサの停止要求において、要求を受けた前記主電源管理プログラムが、要求されたプロセッサの前記副電源管理プログラムに対して、停止に必要な処理を要求し、前記プロセッサからの処理完了の通知を受理することにより、前記要求されたプロセッサを停止させ、前記起動されたプロセッサの電源状態を停止状態に変更することを特徴とする。
【0044】
請求項28の本発明の並列処理プログラムは、全てのプロセッサの停止要求において、要求を受けた前記主電源管理プログラムが、他のプロセッサの前記副電源管理プログラムに対して、停止に必要な処理を要求し、前記他のプロセッサからの処理完了の通知を受理することにより、前記他のプロセッサを停止させ、その後、前記OSのデバイスを制御して自身プロセッサを停止させることを特徴とする。
【0045】
請求項29の本発明の並列処理プログラムは、プロセッサの起動又は停止に加えて、プロセッサの休止又は復帰の要求を受け付け、前記OSのデバイスを制御することにより、要求されたプロセッサの休止又は復帰を行うと共に、前記休止又は復帰の要求を受けたプロセッサが、前記第1のプロセッサ群からの通知に基づいて前記休止又は復帰のために必要な処理を行うことを特徴とする。
【0046】
請求項30の本発明の並列処理プログラムは、プロセッサの起動又は停止に加えて、プロセッサの電源電圧又はクロック周波数の変更要求を受け付け、前記OSのデバイスを制御することにより、要求されたプロセッサの電源電圧又はクロック周波数の変更を行うと共に、前記電源電圧又はクロック周波数の変更を受けたプロセッサが、前記第1のプロセッサ群からの通知に基づいて前記電源電圧又はクロック周波数の変更のために必要な処理を行うことを特徴とする。
【0047】
【発明の実施の形態】
まず、本発明の電源管理システムを適用する並列処理システムについて説明する。以下で説明する並列処理システムでは、従来のシングルプロセッサ向けOSに対して改造を加えることなく、複数のプロセッサへの処理を依頼する機構や複数のプロセッサへのOSサービスの提供におけるクリティカルセクションの保護機構を付加することにより、マルチプロセッサ上での並列処理を実行する。
【0048】
図1は第1例としての並列処理システムの構成を示すブロック図である。
【0049】
図1に示すように、第1例の並列処理システムは、システムバス91で接続される複数のプロセッサ(CPU)P0〜Pn(nは1以上の整数)からなるマルチプロセッサを、論理的に第1プロセッサ側10と第2プロセッサ側20の二組に分け、第1プロセッサ側10のプロセッサP0上で動作するシングルプロセッサ向けOS30を実装し、かつ第1プロセッサ側10のプロセッサP0及び第2プロセッサ側20のプロセッサP1〜Pnのそれぞれに、並列処理を行うための並列処理手段40P0〜40Pn及びOSサービスを処理するためのOSサービス手段50P0〜50Pnを実装して構成される。また、システムバス91には、各プロセッサP0〜Pnが共有する共有メモリとしての主記憶装置92及びディスク装置等の外部記憶装置93が接続される。
【0050】
なお、上記マルチプロセッサには、同一種類のプロセッサを複数備える構成だけでなく、DSPやセキュリティエンジン等の異種の処理装置を複数備える構成も含む。
【0051】
また、第1プロセッサ側10と第2プロセッサ側20間で、制御信号やデータのやり取りを行うための制御処理中継手段60が独自に設けられ、かつ第1プロセッサ側10には、シングルプロセッサ向けOS30が第2プロセッサ側20で実行されるタスクと通信するための代理手段70が設けられている。
【0052】
上記第1プロセッサ側10のプロセッサは、必ずしも単一である必要はなく複数のプロセッサからなっていてもよい。例えば、第1プロセッサ側10を2つのプロセッサとし、それぞれに異なるシングルプロセッサ向けOSを実装するような構成とすることも可能である。
【0053】
また、第1プロセッサ側10のプロセッサで起動されるシングルプロセッサ向けOS30としては、既存のOSが利用される。例えば、リアルタイムOSやUNIX(R) OSがそのまま利用される。
【0054】
本明細書で使用するタスクとは、UNIX(R) OSにおけるプロセスやスレッド、リアルタイムOSにおけるタスク等の並列処理を行うための処理単位を意味している。
【0055】
本並列処理システムにおいては、第1プロセッサ側10のシングルプロセッサ向けOS上でアプリケーションが動作し、そのアプリケーションの処理単位のうち、並列化を行えないタスク(逐次タスク)を第1プロセッサ側10のプロセッサP0で処理し、アプリケーション内で並列化を行えるタスクを第2プロセッサ側20において新たなタスクとして生成して並列処理をさせる。
【0056】
並列処理手段40P0及び並列処理手段40P1〜40Pnは、タスクの生成、起動、停止、終了、削除、及びその他のタスクに関する制御を行う機能を有する。ここでは、第1プロセッサ側10の並列処理手段40P0から第2プロセッサ側20の各プロセッサP1〜Pnの並列処理手段40P1〜40Pnに対して、制御処理中継手段60を介してタスクの生成、起動、停止、終了、削除等の処理を行う。また、シグナル通知については、並列処理手段40P0と並列処理手段40P1〜40Pnの双方向から処理される。
【0057】
OSサービス手段50P0及びOSサービス手段50P1〜50Pnは、外部機器への各種のアクセスと制御を行うためのインタフェース、タスクどうしが共有するリソースへの各種アクセスと制御を行うためのインタフェースとして機能を有する。
【0058】
制御処理中継手段60は、第1プロセッサ側10と第2プロセッサ側20間で、制御信号やデータのやり取りを行うための手段であり、複数のプロセッサで並列処理される複数のタスク間の制御に使用される。
【0059】
代理手段70は、第2プロセッサ側20で実行されるタスク(一部あるいは全部)に対応付けられ、第2プロセッサ側20のタスクとシングルプロセッサ向けOS30間におけるシグナル通知(タスクを制御するための各種制御信号の通知)のために実装されている。
【0060】
以下、上記のように構成される第1例の並列処理システムの動作について、図面を参照して詳しく説明する。
【0061】
ここでは、第1プロセッサ側10のシングルプロセッサ向けOS上でアプリケーションが動作し、そのアプリケーションの処理単位のうち、第1プロセッサ側10のプロセッサP0で処理する処理単位を逐次タスクSTとし、アプリケーション内で並列化を行えるタスクであって、第2プロセッサ側20に対してタスクPT−1〜PT−nとして並列処理をさせる処理単位を並列化タスクPTとする。
【0062】
まず、並列処理手段40P0、40P1〜40Pnによる並列処理起動の動作について、図2と図3を用いて説明する。
【0063】
(1)第1プロセッサ側10の並列化タスクPTを、第2プロセッサ側20のタスクPT−1〜PT−nの何れかとして起動させる場合、並列処理手段40P0に対して、第2プロセッサ側20で起動させる処理単位としてのタスクPT−1〜PT−nの何れかの生成を要求する。
【0064】
並列処理手段40P0、並列処理手段40P1〜40Pnからの要求(command)としては、例えば、以下のようなものがある。create(タスクの生成)、delete(タスクの削除)、activate(タスクの起動)、terminate(タスクの終了)、signal(シグナル要求)等がある。このうち、create(タスクの生成)、delete(タスクの削除)、activate(タスクの起動)、terminate(タスクの終了)については、第1プロセッサ側10から第2プロセッサ側20へ送られる要求であり、signal(シグナル要求)は、第1プロセッサ側10と第2プロセッサ側20間で双方向から送られる。
【0065】
この要求は、図3に示すようなメッセージによって行われる。すなわち、要求する内容(この場合は、タスク生成)を示す要求内容201、タスクを処理させる第2プロセッサ側20のプロセッサP1〜Pnを指定するプロセッサ番号202、新たに生成するタスクPT−1〜PT−nを示すタスク番号、タスク生成を要求する並列化タスクPTを示す元タスク番号からなるメッセージを並列処理手段40P0に対して送信することで、タスク生成の要求を行う。なお、タスク生成以外の要求についても、図3に示すメッセージに従った要求が送られる。
【0066】
(2)これに対して、並列処理手段40P0は、生成するタスクPT−1〜PT−nに対応する代理手段70を起動する。この代理手段70は、第1プロセッサ側10と第2プロセッサ側20でタスクの管理内容を共有しないようにするため、かつ排他処理を第1プロセッサ側10で完結させるために起動される。この時、代理手段70にはタスクPT−1〜PT−nのタスク番号が保持される。
【0067】
(3)さらに、並列処理手段40P0は、上述したタスク番号及び要求内容(第2プロセッサ側20のプロセッサP1〜Pnへのタスク生成)といったタスク生成に必要なデータと、「並列処理」を指定する通信理由情報とを制御処理中継手段60に設定する。
【0068】
これにより、制御処理中継手段60に対して、後述する主記憶装置92(共有メモリ)への通信内容の設定とプロセッサ間割り込みのための処理が行われる。
【0069】
ここで、通信理由情報とは、制御処理中継手段60に渡したデータの受け取り先(取得先)を示すものであり、上記の場合、指定されたプロセッサP1〜Pnの並列処理手段40P1〜40Pnによって、制御処理中継手段60に設定されたデータが取得されることになる。
【0070】
(4)第2プロセッサ側20の指定されたプロセッサP1〜Pn上の並列処理手段40P1〜40Pnは、制御処理中継手段60から通信理由情報が「並列処理」の要求内容(タスク制御に必要なデータ)を取得する。
【0071】
(5)そして、並列処理手段40P1〜40Pnは、取得した要求内容に基づいてプロセッサP1〜Pn上でタスクPT−1〜PT−nを生成・起動する。
【0072】
以上により、第1プロセッサ側10のシングルプロセッサ向けOS上で動作するアプリケーションの処理単位である並列化タスクPTの処理単位をを、第2プロセッサ側20上にタスクPT−1〜PT−nとして並列処理をさせることが可能となる。
【0073】
なお、上記の動作においては、並列処理手段40P1〜40Pnは、取得した要求内容に基づいてプロセッサP1〜Pn上でタスクPT−1〜PT−nを生成して起動する場合について述べたが、第1プロセッサ側10の並列化タスクPTを、予め第2プロセッサ側20のタスクPT−1〜PT−nの何れかとして生成しておき、並列処理手段40P1〜40Pnが、取得した要求内容に基づいてプロセッサP1〜Pn上でタスクPT−1〜PT−nを起動するようにすることもできる。
【0074】
次に、OSサービス手段50P0、50P1〜50PnによるOSサービス処理動作について説明する。
【0075】
OSサービス手段50P0、50P1〜50Pnは、第2プロセッサ側20のプロセッサP1〜Pn上に生成したタスクPT−1〜PT−nからの要求に基づいて、シングルプロセッサ向けOS30によるサービスである、外部機器への各種アクセスと制御、他のタスクと共用するリソースへの各種アクセスと制御に関するサービスを提供するための機能を有する。シングルプロセッサ向けOS30によるサービスには、通常のOSが提供するシステムコールやAPIに相当するものが主な対象となる。
【0076】
第2プロセッサ側20のプロセッサP1〜Pn上のタスクPT−1〜PT−nからのファイルアクセス(例えば、外部記憶装置93上のファイルに対する各種の処理)要求に対するOSサービス手段50P0、50P1〜50Pnの動作を図4を参照して説明する。
【0077】
ここで、ファイルアクセスには、open(ファイルのオープン)、close(ファイルのクローズ)、read(ファイルの読み出し)、write(ファイルの書き込み)、seek(ファイル書き込み位置の移動)、remove(ファイルの削除)、rename(ファイルの名称変更)等の処理が含まれる。
【0078】
(1)第2プロセッサ側20のタスクPT−1〜PT−nにおいてファイルアクセス処理の必要が発生すると、タスクPT−1〜PT−nが、第2プロセッサ側20のOSサービス手段50P1〜50Pnに対してファイルアクセスのためのサービスを要求する。このファイルアクセスのサービス要求においては、例えば、OSサービス手段50P1〜50Pnのファイルへの書き込み処理として定義されたwrite関数やファイルの読み出し処理として定義されたread関数等が呼び出される。
【0079】
ここで、OSサービス手段50P1〜50Pnは、第1プロセッサ側10の処理(シングルプロセッサ向けOS30によるファイルアクセス処理)に必要なデータを設定する。ここで、必要なデータには、要求内容(例えば、write request)、アクセスするファイルの記述子(file descriptor)、文字列へのポインタ、文字列の長さ、タスク番号等の情報が含まれる。
【0080】
(2)OSサービス手段50P1〜50Pnは、通信理由情報を「OSサービス」として、要求内容を含む必要なデータを制御処理中継手段60に対して設定することで、第1プロセッサ側10に対してファイルアクセス要求を発行する。
【0081】
その後、ファイルアクセスのサービス要求を行ったタスクPT−1〜PT−nは、待ち状態となり、対応するプロセッサP1〜Pnにおいては並列処理手段40P1〜40Pnにより他のタスクへ処理が切り替わる(タスクのswitch:スイッチ)。
【0082】
(3)第1プロセッサ側10のOSサービス手段50P0は、制御処理中継手段60から「OSサービス」という通信理由情報の上記ファイルアクセス要求を取得する。
【0083】
(4)第1プロセッサ側10のOSサービス手段50P0は、取得した要求内容に従ってシングルプロセッサ向けOS30に対してファイルアクセスを要求する。
【0084】
(5)これにより、シングルプロセッサ向けOS30は、要求に基づいて外部記憶装置93等に対するファイルアクセス(writeやread等)を行う。このファイルアクセス処理は、シングルプロセッサ向けOS30が本来備えているファイルアクセスサービスをそのまま利用して実行される。
【0085】
(6)要求されたファイルアクセス処理が終了すると、シングルプロセッサ向けOS30は、第1プロセッサ側10のOSサービス手段50P0にファイルアクセス要求に対する戻り値を返し、処理を戻す。
【0086】
(7)さらに、OSサービス手段50P0は、その戻り値とファイルアクセス要求を行ったタスクPT−1〜PT−nのタスク番号を含むデータである通信内容を、「OSサービス」を通信理由情報として制御処理中継手段60に設定することにより、第2プロセッサ側20のプロセッサP1〜Pnに対してファイルアクセスの完了を通知する。
【0087】
(8)対応するプロセッサP1〜PnのOSサービス手段50P1〜50Pnは、制御処理中継手段60から上記設定された戻り値と完了通知を受け取る。
【0088】
(9)そして、第2プロセッサ側20のOSサービス手段50P1〜50Pnは、並列処理手段40P1〜40Pnに対してファイルアクセス要求を行ったタスクPT−1〜PT−nを起動するように依頼する。
【0089】
これにより、待ち状態となっていたタスクPT−1〜PT−nに処理が切り替わる。
【0090】
(10)並列処理手段40P1〜40Pnから起動されたタスクPT−1〜PT−nは、OSサービス手段50P1〜50Pnからファイルアクセスの戻り値を受け取り、処理を継続する。
【0091】
以上により、第2プロセッサ側20に個別にファイルアクセスのための処理手段を設けることなく、第2プロセッサ側20におけるタスクPT−1〜PT−nはシングルプロセッサ向けOS30のサービスをそのまま利用してファイルアクセスが可能となる。また、これにより、ファイルアクセスのための排他処理については、第1プロセッサ側10で完結するため、マルチプロセッサ向けOS上でアプリケーションを動作させる場合のような排他処理によるオーバヘッドが発生することなく並列処理を実現できる。
【0092】
なお、第2プロセッサ側20のプロセッサP1〜Pn上のタスクPT−1〜PT−nが、例えば外部記憶装置93上のリードオンリー(read only)のデータをファイルアクセスする場合には、上記のようにOSサービス手段50P1〜50Pnによる処理を経ることなく、各プロセッサP1〜Pnから外部記憶装置93に直接アクセスするようにしてもよい。
【0093】
ここで、第1プロセッサ側10のプロセッサP0上の逐次タスクSTからのファイルアクセス要求については、OSサービス手段によることなく直接シングルプロセッサ向けOS30によって処理がなされる。以下、図5を参照して説明する。
【0094】
(1)プロセッサP0上の逐次タスクSTは、シングルプロセッサ向けOS30に対してファイルアクセスを要求する。
【0095】
(2)これにより、シングルプロセッサ向けOS30は、要求に基づいて外部記憶装置93等に対するファイルアクセス(writeやread等)を行う。このファイルアクセス処理は、シングルプロセッサ向けOS30が本来備えているファイルアクセスサービスをそのまま利用して実行される。
【0096】
(3)ファイルアクセス処理が終了すると、シングルプロセッサ向けOS30は、逐次タスクSTに対してファイルアクセス要求に対する戻り値を返し、処理を戻す。
【0097】
逐次タスクSTからのOSサービス要求に対しては排他制御等の必要がないので、余計なオーバヘッドが発生しない。
【0098】
制御処理中継手段60による処理動作について、図6及び図7を参照して説明する。
【0099】
まず、制御処理中継手段60の構成を図6に示す。図示のように、制御処理中継手段60は、各プロセッサP0〜Pnに対応した割り込み制御装置61P0〜61Pnと、各プロセッサP0〜Pnに対応した通信領域62P0〜62Pnとを備えて構成される。ここで、通信領域62P0〜62Pnは、主記憶装置92内に確保される。
【0100】
さらに、割り込み装置61P0〜61Pnは、他のプロセッサに対して割り込みを指示する割込指示部61a、割り込みの指示により割り込みがあった旨の情報を保持する割込状態保持部61b、割り込みをクリアする割込取消部61cにより構成される。
【0101】
また、通信領域62P0〜62Pnは、通信元のプロセッサからの通信理由情報を保持する通信理由保持領域62a、通信するための通信データを保持する通信データ保持領域62b、通信を確保するために通信領域に対してロックをかけるための排他制御領域62cにより構成される。
【0102】
ここで、通信データ持領域62bには、通信する通信データ(要求内容を含む必要データ)が格納される主記憶装置92へのポインタが格納されることになる。
【0103】
第1プロセッサ側10の並列処理手段40P0から第2プロセッサ側20のプロセッサP1への通信処理を例にとり、図7を参照してその動作を説明する。
【0104】
(1)並列処理手段40P0は、プロセッサP1用の通信領域62P1の排他制御領域62cにロックをかける。具体的には、排他制御領域62cに格納されるlock変数をロック状態とすることにより、当該プロセッサP1用の通信領域62P1が他のプロセッサで使用されるのを排する。
【0105】
他のプロセッサによって既にロックされている場合には、ロックが解除されるのを待つ。
【0106】
(2)通信領域62P1のロックが取得できた場合、並列処理手段40P0は、通信理由情報と通信データ(要求内容を含む必要データ)を、通信領域62P1の通信理由保持領域62aと通信データ保持領域62bのそれぞれに格納する。
【0107】
格納される通信理由情報としては、上述したようにタスク生成のための通信処理であれば、「並列処理」を示す情報(例えば、並列処理に対応して予め定められている数値等のデータ)が格納される。
【0108】
(3)並列処理手段40P0は、自身の割込制御装置61P0の割込指示部61aに対して、プロセッサP1への割り込みを指示する。
【0109】
(4)割込制御装置61P0の割込指示部61aは、プロセッサP1に対応する割込制御装置61P1の割込状態保持部61bに、割り込みを示す情報をセットする。これにより、プロセッサP1が割り込み状態となる。
【0110】
(5)プロセッサP1の並列処理手段40P1は、制御処理中継手段60の割込制御装置61P1の割込状態保持部61bの状態より、割り込みがセットされたことを判別する。
【0111】
(6)プロセッサP1の並列処理手段40P1は、制御処理中継手段60の自身の割込状態保持部61bの割り込み情報をクリアすることにより、自身の割り込み状態を解除する。
【0112】
(7)プロセッサP1の並列処理手段40P1は、さらに、制御処理中継手段60の自身の通信領域62P1の通信理由保持領域62aと通信データ保持領域62bから、通信理由情報と通信データ(要求内容を含む必要データ)をそれぞれ取得する。
【0113】
(8)プロセッサP1の並列処理手段40P1は、次の通信を受理できるようになった後、自身の通信領域62P1の排他制御領域62cのロックを解除する。具体的には、排他制御領域62cに格納されるlock変数をアンロック状態とすることにより、当該プロセッサP1用の通信領域62P1が他のプロセッサから使用できるように解放する。
【0114】
以上のように、制御処理中継手段60を用いることにより、第1プロセッサ側10と第2プロセッサ側20間で、制御信号やデータのやり取りが実現される。
【0115】
また、代理手段70によるシグナル通知処理動作について、図8を参照して説明する。
【0116】
代理手段70は、シングルプロセッサ向けOS30が第2プロセッサ側20に生成したタスクPT−1〜PT−nとシグナル(制御信号)による通信を行うための機能を有する。この代理手段70には、対応するタスクPT−1〜PT−nのタスク番号が保持されている。
【0117】
なお、複数のタスクPT−1〜PT−nに一対一に代理手段70を関連付けてもよいし、一つの代理手段70に複数のタスクPT−1〜PT−nを関連付けてもよい。
【0118】
(1)第1プロセッサ側10の逐次タスクSTが、シングルプロセッサ向けOS30に対してシグナル通知のサービスを要求する。このシグナル通知によって通信されるシグナルは、シングルプロセッサ向けOS30が本来有するサービス機能により、第2プロセッサ側20の各プロセッサP1〜Pn上で起動されているタスクPT−1〜PT−nを制御するための制御信号である。
【0119】
(2)シングルプロセッサ向けOS30は、シグナルを対応する代理手段70に通知する。
【0120】
(3)代理手段70は、通知されたシグナルを制御処理中継手段60を通じて、自身に対応する第2プロセッサ側20のタスクPT−1の存在するプロセッサP1〜Pnへ通知する。ここで、通信理由情報としては、「並列処理」が設定される。
【0121】
(4)制御処理中継手段60への通信理由情報が「並列処理」であることから、第2プロセッサ側20の対応するプロセッサの並列処理手段40P1〜40Pnは、制御処理中継手段60からシグナル通知要求を取得する。
【0122】
(5)シグナル通知要求を取得した並列処理手段40P1〜40Pnは、対応するタスクPT−1〜PTnに対してシグナル(制御信号)を通知する。
【0123】
以上により、代理手段70が第2プロセッサ側20のプロセッサP0〜Pn上のタスクPT−1〜PT−nとタスク番号によって関連付けられているので、第1プロセッサ側10ではタスクPT−1〜PT−nに対してシングルプロセッサ向けOS30によるシグナル通知のサービスを実行することが可能となる。
【0124】
最後に、第2プロセッサ側20におけるタスク相互の連携動作について、図9と図10を参照して説明する。
【0125】
タスク間の連携を取るための並列処理手段40P1〜40Pnの構成を図9に示す。図示のように、並列処理手段40P1〜40Pnは、相互排他手段41P1〜41Pnを備えている。
【0126】
また、タスクの連携を取るため、主記憶装置92内には、排他制御領域43とタスク管理内容保持領域44を有する。
【0127】
(1)プロセッサP1上のタスクPT−1は、自身の並列処理手段40P1に対して所望の並列処理を要求する。
【0128】
(2)プロセッサP1の並列処理手段40P1は、相互排他手段41P1に並列処理に用いる資源の確保のためにロック取得を要求する。
【0129】
(3)相互排他手段41P1は、主記憶装置92の排他制御領域43を用いてロックを取得する。
【0130】
(4)相互排他手段41P1は、並列処理手段40P1に対してロック取得ができた旨を通知する。
【0131】
(5)並列処理手段40P1は、タスク管理内容保持領域44にプロセッサP1上の並列処理を要求したタスクPT−1の管理内容(要求内容、タスク番号その他の必要なデータ)を保持する。
【0132】
(6)並列処理手段40P1は、優先度の低いタスクを実行している他のプロセッサP2〜Pnへ割り込みをかける。ここでは、プロセッサPnへの割り込みがかけられたものとする。
【0133】
(7)並列処理手段40P1は、相互排他手段41P1に対して上記確保したロックの解除を要求する。
【0134】
(8)相互排他手段41P1は、主記憶装置92の排他制御領域43のロックを解除する。
【0135】
(9)相互排他手段41P1は、並列処理手段40P1に対してロックの解除完了を通知する。
【0136】
(10)並列処理手段40P1は、タスクPT−1に処理を戻す。
【0137】
(11)プロセッサPnの並列処理手段40Pnは、相互排他手段41Pnに対して並列処理に用いる資源の確保のためのロック取得を要求する。
【0138】
(12)相互排他手段41Pnは、主記憶装置92の排他制御領域43を用いてロックを取得する。
【0139】
(13)相互排他手段41Pnは、並列処理手段40Pnに対してロックの取得完了を通知する。
【0140】
(14)並列処理手段40Pnは、タスク管理内容保持領域44内に格納されているタスク管理内容を取得する。
【0141】
(15)並列処理手段40Pnは、タスク管理内容に基づいて新たなタスクを生成起動する。
【0142】
(16)並列処理手段40Pnは、相互排他手段41Pnに対して上記確保したロックの解除を要求する。
【0143】
(17)相互排他手段41Pnは、主記憶装置92の排他制御領域43のロックを解除する。
【0144】
(18)相互排他手段41Pnは、並列処理手段40Pnに対してロックの解除完了を通知する。
【0145】
以上のタスク連携動作により、あるプロセッサP1〜Pnで起動しているタスクPT−1〜PT−nが、自身の処理単位を他のプロセッサに対して並列処理させることが可能となる。
【0146】
上記のように構成される並列処理システムにおける適用例としては、例えばマルチプロセッサの携帯端末において、アプリケーションを動作させる場合を説明する。
【0147】
ここで、アプリケーションが携帯端末上で映像(動画)と音声を同時に再生する機能を有し、そのうち音声出力処理を逐次タスクAとして、映像出力処理を並列化タスクBとして第1プロセッサ側10のプロセッサP0上で動作させる場合を想定して、図11を参照して説明する。
【0148】
並列化タスクBは、上述した並列処理手段によって、第2プロセッサ側20のプロセッサP1〜Pnの何れかにタスクCとして生成され起動される。
【0149】
生成されたタスクCは、OSサービス手段のファイルアクセス処理によって映像の画面出力を実行する。
【0150】
また、逐次タスクAによる音声出力は、シングルタスクOS30のサービスによって音声の出力が実行される。
【0151】
音声と映像の同期を定期的に取る場合には、上述した代理手段70によるシグナル通知動作によって逐次タスクAとタスクC間のシグナル通知を行うことで同期をとる。
【0152】
また、タスクCにおいて、映像に編集を加える処理を実行する場合には、その編集処理をタスク連携処理によって他のプロセッサ上にタスクDとして生成起動する。
【0153】
タスクCによる映像出力処理が終了した場合には、タスクCからファイルアクセス動作によってシングルプロセッサ向けOSに終了通知を行う。
【0154】
本並列処理システムにおいては、並列処理手段40P0〜40Pn、OSサービス手段50P0〜50Pn、制御処理中継手段60及び代理手段70については、モジュールとして実装することにより、シングルプロセッサ向けOS30及びプロセッサP0上で実行されるアプリケーションに改造を加えることなく、マルチプロセッサのシステム構成上で、シングルプロセッサ向けOS30及びアプリケーションをオーバヘッドなく動作させることができると共に、マルチプロセッサによる並列処理の恩恵を受けることが可能となる。
【0155】
次に、本発明を適用する第2例の並列処理システムについて、図12以下を参照して説明する。図12は、この第2例の形態による並列処理システムの構成を示すブロック図であり、図1と共通の構成要素については同じ符号を用いている。図12に示す第2例では、第1例における並列処理手段40P0〜40Pnを、それぞれ並列処理通信手段400P0〜400Pnと制御代理手段500P0〜500Pnとで構成した場合を示している。
【0156】
図12に示すように、本例の並列処理システムにおいて、システムバス91で接続される複数のプロセッサ(CPU)P0〜Pn(nは1以上の整数)からなるマルチプロセッサを、論理的に第1プロセッサ側100と第2プロセッサ側200の二組に分けて構成している点については、第1例と同様である。
【0157】
この第2例においては、第1プロセッサ側100のプロセッサP0及び第2プロセッサ200のプロセッサ(CPU)P0〜Pnの各プロセッサ上で動作するシングルプロセッサ向けOS300P0〜300Pnを実装している。
【0158】
また、第1プロセッサ側100のプロセッサP0及び第2プロセッサ側200のプロセッサP1〜Pnのそれぞれに、並列処理を行うための並列処理通信手段400P0〜400Pnと制御代理手段500P0〜500Pnを実装して構成される。また、システムバス91には、各プロセッサP0〜Pnが共有する共有メモリとしての主記憶装置92及びディスク装置等の外部記憶装置93が接続されている。
【0159】
また、第1プロセッサ側100と第2プロセッサ側200間で、制御信号やデータのやり取りを行うための制御処理中継手段600が独自に設けられている。
【0160】
なお、この第2例では、第1例で示した第1プロセッサ側100のシングルプロセッサ向けOS300P0が第2プロセッサ側200で実行されるプロセスと通信するための代理手段70については、第1例と全く同じ機能を実行するため、便宜上省略している。
【0161】
また、第1例では、第2プロセッサ側20のプロセッサP1〜Pn上のタスクからのファイルアクセス要求に対してタスクのswitch(スイッチ)がなされることを説明したが、本例においても、第2プロセッサ側200からのファイルアクセスが可能であり、ファイルアクセス要求を行なった第2プロセッサ側200のプロセスPP−1〜PPnは、第2プロセッサ側200のシングルプロセッサ向けOS300P1〜300Pnによってプロセスのswitch(スイッチ)が行なわれる。
【0162】
上記各プロセッサP0〜Pnに実装されるシングルプロセッサ向けOS300P0〜300Pnについては、リアルタイムOSのようなメモリ保護機能を実現する仮想記憶機構を持たないOSだけではなく、既存のOSであるLinuxやWindows(R)等といった仮想記憶機構を備えるOSも用いることが可能であり、各プロセッサP0〜Pnの全て、もしくは一部においてメモリ保護機構の実現が可能である点で第1例と相違する。
【0163】
なお、シングルプロセッサ向けOS300P0〜300Pnは、全部が同じ種類のOSである必要はなく、互いに異なる種類のOSであってもよい。
【0164】
この例では、並列処理を行うための処理単位であるタスクが互いのプロセッサ間でメモリ保護されており、その意味で第1例のタスクと区別するためにプロセスと称することとする。
【0165】
本例による並列処理システムにおいては、第1プロセッサ側100のシングルプロセッサ向けOS300P0上で動作するアアプリケーションの処理単位のうち、並列化を行えないプロセス(逐次プロセスSP)を第1プロセッサ側100のプロセッサP0で処理し、アプリケーション内で並列化を行えるタスクを第2プロセッサ側200において新たなプロセスPP−1〜PP−nとして生成し並列処理をさせる。
【0166】
並列処理通信手段400P0及び並列処理通信手段400P1〜400Pnは、プロセスとシングルプロセッサ向けOSOS300P0〜300Pnとの間で、プロセスの生成、起動、停止、終了、削除、及びその他のプロセスに関する制御情報の受け渡しを行う機能を有する。
【0167】
ここで、第1プロセッサ側100と第2プロセッサ側200間においては、制御処理中継手段600を介してタスクの生成、起動、停止、終了、削除等に関する制御情報やデータをやり取りする。
【0168】
また、制御代理手段500P0及び制御代理手段500P1〜500Pnは、シングルプロセッサ向けOSOS300P0〜300Pnからプロセスへの処理要求を入手してプロセスを起動する機能を有する。
【0169】
制御処理中継手段600は、第1プロセッサ側10と第2プロセッサ側20間で、制御信号やデータのやり取りを行うための手段であり、複数のプロセッサで並列処理される複数のプロセス間の制御に使用される。
【0170】
以下、上記のように構成される第2例の並列処理システムの動作について、図面を参照して詳しく説明する。
【0171】
ここでは、第1プロセッサ側100のシングルプロセッサ向けOS300P0上でアプリケーションが動作し、そのアプリケーションの処理単位のうち、第1プロセッサ側100のプロセッサP0で処理する処理単位を逐次プロセスSPとし、アプリケーション内で並列化を行えるプロセスであって、第2プロセッサ側200に対してタスクPP−1〜PP−nとして並列処理をさせる処理単位を並列化プロセスPPとする。
【0172】
この第2例の並列処理システムにおいては、あるプロセス(タスク)を起動した後に、呼び出し側のプロセス(タスク)である並列化プロセスPPが、起動したプロセスPP−1〜PP−nの終了を待ち合わせる並列処理の同期起動と、呼び出し側のプロセス(タスク)である並列化プロセスPPが、起動したプロセスPP−1〜PP−nの終了を待ち合わせなくとよい並列処理の非同期起動とが可能である。
【0173】
まず、プロセスの並列処理の同期起動の動作について、図13を参照して説明する。
【0174】
ここでは、第1プロセッサ側100の並列化プロセスPPが、第2プロセッサ側200のプロセッサPk(1≦k≦n)において、第2プロセッサ側200で起動させる処理単位であるプロセスPP−kとして予め生成されているものとする。
【0175】
(1)第2プロセッサ側200のプロセッサPk(1≦k≦n)上のプロセスPP−kが、並列処理通信手段400Pkに対して、自プロセスに属する処理の情報を登録する。これにより、プロセスPP−kは待機状態となっている。
【0176】
(2)並列処理通信手段400Pkは、シングルプロセッサ向けOS300Pk経由で主記憶装置92(共有メモリ)上に必要なデータをアクセスする要求を行う。
【0177】
(3)これにより、プロセスPP−kに属する処理の情報が主記憶装置92(共有メモリ)に格納される。
【0178】
(4)プロセッサP0上のプロセスPPは、並列処理通信手段400P0に対して同期的な処理を依頼する。その後、プロセスPPは待機状態となる。
【0179】
(5)依頼を受けた並列処理通信手段400P0は、シングルプロセッサ向けOS300P0経由で主記憶装置92(共有メモリ)上のデータに対するアクセス要求を行う。
【0180】
(6)シングルプロセッサ向けOS300P0により主記憶装置92(共有メモリ)がアクセスされる。
【0181】
(7)並列処理通信手段400P0は、主記憶装置92(共有メモリ)からプロセスPP−kに属する処理の情報を取得する。これにより、プロセスPP−kを実行するプロセッサ番号とプロセス番号が取得される。
【0182】
(8)並列処理通信手段400P0は、シングルプロセッサ向けOS300P0経由で主記憶装置92(共有メモリ)から取得した情報に基づいて通信依頼を要求する。
【0183】
(9)シングルプロセッサ向けOS300P0により、通信に必要な情報が制御処理中継手段600に設定される。
【0184】
(10)これにより、制御処理中継手段600からプロセッサPkのシングルプロセッサ向けOS300Pkに対して処理要求が送信される。
【0185】
(11)プロセッサPkの制御代理手段500Pkは、シングルプロセッサ向けOS300Pk経由で送信された処理要求を入手する。
【0186】
(12)そして、制御代理手段500Pkは、入手した処理要求によりプロセスPP−kを起動する。
【0187】
(13)これにより、待機状態にあったプロセスPP−kは処理を実行する。
【0188】
(14)処理が終了後、プロセスPP−kは、その旨の情報を並列処理通信手段400Pkに通知する。
【0189】
(15)通知を受けた並列処理通信手段400Pkは、シングルプロセッサ向けOS300Pk経由で通知された情報に基づいて通信依頼を要求する。
【0190】
(16)シングルプロセッサ向けOS300Pkにより、通信に必要な情報が制御処理中継手段600に設定される。
【0191】
(17)これにより、制御処理中継手段600からプロセッサP0のシングルプロセッサ向けOS300P0に対して処理要求が送信される。
【0192】
(18)プロセッサP0の制御代理手段500P0は、シングルプロセッサ向けOS300P0経由で送信された処理要求を入手する。
【0193】
(19)そして、制御代理手段500P0は、入手した処理要求によりプロセスPPを起動する。
【0194】
以上により、第1プロセッサ側100のプロセッサP0上のプロセスPPと第2プロセッサ側200のプロセッサPP−kとの間での同期的な処理が実現される。
【0195】
次に、プロセスの並列処理の非同期起動の動作について、図14を参照して説明する。
【0196】
ここでも、第1プロセッサ側100の並列化プロセスPPが、第2プロセッサ側200のプロセッサPk(1≦k≦n)において、第2プロセッサ側200で起動させる処理単位であるプロセスPP−kとして予め生成されているものとする。
【0197】
(1)処理を行っていた第2プロセッサ側200のプロセッサPk(1≦k≦n)上のプロセスPP−kが、並列処理通信手段400Pkに対して、自プロセスに属する処理の情報を登録する。これにより、プロセスPP−kは待機状態となる。
【0198】
(2)並列処理通信手段400Pkは、シングルプロセッサ向けOS300Pk経由で主記憶装置92(共有メモリ)上に必要なデータをアクセスする要求を行う。
【0199】
(3)これにより、プロセスPP−kに属する処理の情報が主記憶装置92(共有メモリ)に格納される。
【0200】
(4)プロセッサP0上のプロセスPPは、並列処理通信手段400P0に対して非同期的な処理を依頼する。この場合、プロセスPPは待機状態となることなくその後も処理を継続する。
【0201】
(5)依頼を受けた並列処理通信手段400P0は、シングルプロセッサ向けOS300P0経由で主記憶装置92(共有メモリ)上のデータに対するアクセス要求を行う。
【0202】
(6)シングルプロセッサ向けOS300P0により主記憶装置92(共有メモリ)がアクセスされる。
【0203】
(7)並列処理通信手段400P0は、主記憶装置92(共有メモリ)からプロセスPP−kに属する処理の情報を取得する。これにより、プロセスPP−kを実行するプロセッサ番号とプロセス番号が取得される。
【0204】
(8)並列処理通信手段400P0は、シングルプロセッサ向けOS300P0経由で主記憶装置92(共有メモリ)から取得した情報に基づいて通信依頼を要求する。
【0205】
(9)シングルプロセッサ向けOS300P0により、通信に必要な情報が制御処理中継手段600に設定される。
【0206】
(10)これにより、制御処理中継手段600からプロセッサPkのシングルプロセッサ向けOS300Pkに対して処理要求が送信される。
【0207】
(11)プロセッサPkの制御代理手段500Pkは、シングルプロセッサ向けOS300Pk経由で送信された処理要求を入手する。
【0208】
(12)そして、制御代理手段500Pkは、入手した処理要求によりプロセスPP−kを起動する。
【0209】
(13)これにより、待機状態にあったプロセスPP−kは処理を実行する。
【0210】
以上により、第1プロセッサ側100のプロセッサP0上のプロセスPPと第2プロセッサ側200のプロセッサPP−kとの間での非同期的な処理が実現される。
【0211】
さらに、第2例の並列処理システムにおける制御処理中継手段600による処理動作について、図15及び図16を参照して説明する。
【0212】
まず、制御処理中継手段600の構成を図15に示す。図示のように、制御処理中継手段600は、各プロセッサP0〜Pnに対応した割り込み制御装置601P0〜601Pnと、各プロセッサP0〜Pnに対応した通信領域602P0〜602Pnとを備えて構成される。ここで、通信領域602P0〜602Pnは、主記憶装置92内に確保される。
【0213】
上記割り込み制御装置601P0〜601Pnについては、図6に示した第1例の制御処理中継手段60の構成と同様であり、割込指示部601a、割込状態保持部601b、割込取消部601cにより構成される。
【0214】
また、通信領域602P0〜602Pnについても、図6に示した第1例と基本的に同じ構成であり、図6の通信理由保持領域62aと通信データ保持領域62bとを組み合わせた通信キュー602aと、排他制御領域602cにより構成される。
【0215】
第1プロセッサ側100の並列処理通信手段400P0から第2プロセッサ側20のプロセッサPnへの通信処理を例にとり、図16を参照してその動作を説明する。
【0216】
(1)並列処理通信手段400P0は、プロセッサP1用の通信領域602Pnの排他制御領域602bにロックをかける。具体的には、排他制御領域602bに格納されるlock変数をロック状態とすることにより、当該プロセッサPn用の通信領域602Pnが他のプロセッサで使用されるのを排する。
【0217】
(2)並列処理通信手段400P0は、通信理由情報と通信データ(要求内容を含む必要データ)を、通信領域602Pnの通信キュー602aに格納する。
【0218】
格納される通信理由情報としては、上述したようにプロセスの生成起動のための通信処理であれば、「プロセス起動」を示す情報(例えば、並列処理に対応して予め定められている数値等のデータ)が格納される。
【0219】
(3)(1)の時点で通信領域602Pnの通信キュー602aが空であった場合、並列処理通信手段400P0は、自身の割込制御装置601P0の割込指示部601aに対して、プロセッサPnへの割り込みを指示する。
【0220】
(4)プロセッサP0の並列処理通信手段400P0は、プロセッサPn用の通信領域602Pnの排他制御領域602bをアンロック状態とする。(1)の時点で通信領域602Pnの通信キュー602aが空でない場合には、割り込みの必要がないので、ここで処理を終了する。
【0221】
(5)割込制御装置601P0の割込指示部601aは、プロセッサPnに対応する割込制御装置601Pnの割込状態保持部601bに、割り込みを示す情報をセットする。これにより、プロセッサPnが割り込み状態となる。
【0222】
(6)プロセッサPnのシングルプロセッサ向けOS300Pnは、プロセッサPn用の割込制御装置601Pnの割込状態保持部601bの状態より、割り込みを受理する。
【0223】
(7)プロセッサPnのシングルプロセッサ向けOS300Pnは、割込制御装置601Pnの割込取消部601cによって自身の割込状態保持部601bの割り込み情報をクリアすることにより、自身の割り込み状態を解除する。
【0224】
(8)プロセッサPnのシングルプロセッサ向けOS300Pnは、自身の制御代理手段500Pnを起動する。
【0225】
(9)プロセッサPnの制御代理手段500Pnは、自身の通信領域602Pnの排他制御領域602bにロックをセットする。
【0226】
(10)プロセッサPnの制御代理手段500Pnは、さらに、自身の通信領域602Pnの通信キュー602aから、通信理由情報と通信データをそれぞれ削除する。
【0227】
(11)プロセッサPnの制御代理手段500Pnが、プロセッサPn用の通信領域602Pnの排他制御領域602bをアンロックとする。これにより、当該プロセッサPn用の通信領域602Pnが他のプロセッサから使用できるようになる。
【0228】
以上のように、制御処理中継手段600を用いることにより、第1プロセッサ側100と第2プロセッサ側200間で、制御信号やデータのやり取りが実現される。
【0229】
次に、本発明を適用する第3例による並列処理システムについて、図17以下を参照して説明する。図17は、この第3例の並列処理システムの構成を示すブロック図であり、図13と共通の構成要素については同じ符号を用いている。
【0230】
上記説明した第2例における同期的な処理では、プロセス相互において、一方のプロセスが他方のプロセスによって主記憶装置92上のデータが更新されたかどうかのチェックを繰り返す必要があり、その繰り返しの分だけ余計な処理が発生していたが、本例では、そのような余計な処理を必要としない高性能なプロセス間の同期とデータ受け渡しを可能にするものである。
【0231】
図17に示すように、第3例の並列処理システムにおいては、第2例と同様に、システムバス91で接続される複数のプロセッサ(CPU)P0〜Pn(nは1以上の整数)からなるマルチプロセッサを、論理的に第1プロセッサ側100と第2プロセッサ側200の二組に分けて構成し、第1プロセッサ側100のプロセッサP0及び第2プロセッサ200のプロセッサ(CPU)P0〜Pnの各プロセッサ上で動作するシングルプロセッサ向けOS300P0〜300Pnを実装している。
【0232】
この第3例では、第2例において、第1プロセッサ側100のプロセッサP0及び第2プロセッサ側200のプロセッサP1〜Pnの並列処理を行うための並列処理通信手段400P0〜400Pnと制御代理手段500P0〜500Pnに加えて、第1プロセッサ側100のプロセッサP0及び第2プロセッサ側200のプロセッサP1〜Pn上で実行される各プロセス間での通信を実現するためのプロセス間通信手段1000P0〜1000Pnを新たに備えた点を特徴としている。
【0233】
すなわち、本例では、これまでマルチプロセッサ向けOSに実装されていたプロセス間通信の機能を、マルチプロセッサ上でシングルプロセッサ向けOS及びアプリケーションを動作させるシングルプロセッサ向けOSによる並列処理システム上で実現するものであり、ユーザレベルによるプロセス間通信機能の実装を可能にしている。
【0234】
なお、この例でも、第1例で示した第1プロセッサ側100のシングルプロセッサ向けOS300P0が第2プロセッサ側200で実行されるプロセスと通信するための代理手段70については、第1例と全く同じ機能を実行するため、便宜上省略している。
【0235】
上記プロセス間通信手段1000P0〜1000Pn以外の構成要素に関する構成及び動作については、上述した第2例と全く同じであるので、以下では、プロセス間通信手段1000P0〜1000Pnについてのみ説明することとする。
【0236】
上記プロセス間通信手段1000P0〜1000Pnは、セマフォ(semaphore)やメッセージキュー等の方式を用いることにより、プロセッサP1〜Pn上で実行される各プロセス間での通信を実現するものである。
【0237】
ここでは、プロセス間通信手段1000P0〜1000Pnがセマフォ方式を用いてプロセス間通信を行なう場合について説明する。
【0238】
図18に示すように、第2プロセッサ側200のプロセッサPmとプロセッサPn上でそれぞれプロセスPP−mとプロセスPP−nが実行されている場合において、プロセスPP−mとプロセスPP−nがプロセス間通信手段1000Pmと1000Pnによるセマフォ方式を用いて通信を行う場合について説明する。
【0239】
セマフォ方式とは、複数のプロセスが同時実行されるマルチタスクOSにおいて、複数プロセス間で通信して同期をとるための方式であり、セマフォは一種の共有フラグ(カウンタ)で、同期をとるプロセス同士がこのカウンタに注目し、カウンタの変化に応じて処理を行なうようにすることで通信(同期)を実現する。
【0240】
まず、図18において、プロセッサPm上のプロセスPP−mが主記憶装置92のセマフォ情報領域(共有フラグ)をup又はdownする場合の動作を説明する。ここで、セマフォupは、セマフォ情報領域のカウンタ値をインクリメントし、セマフォdownは、セマフォ情報領域のカウンタ値をデクリメントする。セマフォdownできない場合、当該プロセスはスリープして待ち状態となり、セマフォupによってウェイクアップされる。
【0241】
(1)プロセッサPm上のプロセスPP−mがセマフォ(セマフォカウンタ)をup又はdownする場合、プロセス間通信手段1000Pmにその旨を要求する。
【0242】
(2)要求を受けたプロセス間通信手段1000Pmは、主記憶装置92に確保されているセマフォ番号で区別される共有フラグとしてのセマフォ情報領域#N(このセマフォ情報領域は、システムによって予め決定される数だけ確保される)にアクセスすることにより、セマフォをup又はdownできることが判明する。
【0243】
次に、図19において、プロセッサPm上のプロセスPP−mがセマフォ(セマフォフラグ)をdownする場合の動作を説明する。
【0244】
(1)プロセッサPm上のプロセスPP−mがセマフォ(セマフォフラグ)をdownしようとプロセス間通信手段1000Pmに要求する。
【0245】
(2)要求を受けたプロセス間通信手段1000Pmは、主記憶装置92に確保されているセマフォ情報領域#Nにアクセスする。ここでは、セマフォ情報領域#Nには、セマフォのカウンタ値として初期値「0」が設定されており、downしようとしてもdownできないように予め定められている。よって、セマフォをdownできないことが判明する。
【0246】
(3)プロセス間通信手段1000Pmは、シングルプロセッサ向けOS300Pmに対しシステムコールを用いて上記プロセスPP−mをスリープさせるように要求する。
【0247】
(4)シングルプロセッサ向けOS300Pmはシステムコールを用いてプロセスPP−mをスリープさせ、ランキューから外す。
【0248】
すなわち、上記の場合、プロセスPP−mはセマフォをdownできないのでスリープする。
【0249】
さらに、図20において、上記のようにプロセスPP−mがスリープした状態で、同じプロセッサPm上のプロセスPP−m1がセマフォをupする場合の動作を説明する。
【0250】
(1)プロセスPP−m1がセマフォのupをプロセス間通信手段1000Pmに要求する。
【0251】
(2)プロセス間通信手段1000Pmは、主記憶装置92に確保されているセマフォ情報領域#Nにアクセスすることにより、セマフォ待ちのプロセスPP−mが存在することが判明する。
【0252】
(3)さらに、プロセス間通信手段1000Pmは、制御処理中継手段600に対してメッセージ(制御メッセージ)を送信することで、プロセスPP−mのウェイクアップを要求する。
【0253】
(4)制御代理手段500Pmが、制御処理中継手段600からメッセージを受信する。この制御処理中継手段600によるメッセージの中継は、図15、図16で説明した動作に基づいて行われる。
【0254】
(5)制御代理手段500Pmは、メッセージからセマフォ待ちのプロセスのウェイクアップ要求であると判断し、シングルプロセッサ向けOS300Pmに対しシステムコールを用いて待ち状態の上記プロセスPP−mをウェイクアップさせるよう要求する。
【0255】
(6)シングルプロセッサ向けOS300Pmは、システムコールを用いて要求されたプロセスPP−mをウェイクアップし、ランキューへつなぐ。この場合、ウェイクアップされたプロセスPP−mは再度セマフォをdownしようと試みる。
【0256】
なお、上記処理(3)、(4)における制御処理中継手段600による制御メッセージの中継を利用することなく、シングルプロセッサ向けOS300Pmの通信機能を用いて、プロセス間通信手段1000Pmから制御代理手段500Pmに対して直接プロセスPP−mのウェイクアップを要求するようにすれば、処理(3)、(4)が簡略されて高速化が可能である。
【0257】
図21において、上記のようにプロセッサPm上のプロセスPP−mがスリープした状態で、他のプロセッサPn上のプロセスPP−nがセマフォをupする場合の動作を説明する。
【0258】
(1)プロセッサPn上のプロセスPP−nがセマフォのupを自プロセッサPnのプロセス間通信手段1000Pnに要求する。
【0259】
(2)プロセス間通信手段1000Pnは、主記憶装置92に確保されているセマフォ情報領域#Nにアクセスすることにより、セマフォ待ちのプロセスPP−mが存在することが判明する。
【0260】
(3)さらに、プロセス間通信手段1000Pnは、制御処理中継手段600に対してメッセージ(制御メッセージ)を送信することで、プロセスPP−mのウェイクアップを要求する。
【0261】
(4)次いで、プロセッサPmの制御代理手段500Pmが、制御処理中継手段600からメッセージを受信する。この制御処理中継手段600によるメッセージの中継は、図15、図16で説明した動作に基づいて行われる。
【0262】
(5)制御代理手段500Pmは、メッセージからセマフォ待ちのプロセスのウェイクアップ要求であると判断し、シングルプロセッサ向けOS300Pmに対しシステムコールを用いて待ち状態の上記プロセスPP−mをウェイクアップさせるよう要求する。
【0263】
(6)シングルプロセッサ向けOS300Pmは、システムコールを用いて要求されたプロセスPP−mをウェイクアップし、ランキューへつなぐ。この場合、ウェイクアップされたプロセスPP−mは再度セマフォをdownしようと試みる。
【0264】
次に、図22に示すように、第2プロセッサ側200のプロセッサPmとプロセッサPn上でそれぞれプロセスPP−mとプロセスPP−nが実行されている場合において、プロセスPP−mとプロセスPP−nがプロセス間通信手段1000Pmと1000Pnによるメッセージキュー方式を用いて通信を行う場合について説明する。
【0265】
メッセージキュー方式とは、複数のプロセス間で通信を行なう方法であって、名前の通り「キュー」を作成して、そこに情報としてのメッセージ(プロセス相互でやり取りされる処理データ)を格納していく方式である。メッセージキュー方式では、受け取り側のプロセスはそのメッセージを任意の順番で受け取ることができる。また、メッセージを何れかのプロセスが受け取るとそのメッセージはキューから消える。
【0266】
図22において、プロセッサPm上のプロセスPP−mがメッセージキュー方式によってメッセージを受信する場合の動作を説明する。ここでは、取得すべきメッセージが主記憶装置92に確保されているキュー番号で区別されるキュー情報領域#N(このキュー情報領域は、システムによって予め決定される数だけ確保される)に存在する場合である。
【0267】
(1)プロセッサPm上のプロセスPP−mがメッセージの受信をするためにプロセス間通信手段1000Pmにその旨を要求する。
【0268】
(2)要求を受けたプロセス間通信手段1000Pmは、主記憶装置92に確保されているキュー情報領域#Nをアクセスし、メッセージを受信する。
【0269】
(3)そして、プロセス間通信手段1000Pmは、受信したメッセージを要求元のプロセスPP−mにコピーする。この時点で当該メッセージは主記憶装置92に確保されているキュー情報領域#Nから消去される。
【0270】
次に、図23において、プロセッサPm上のプロセスPP−mがメッセージキュー方式によってメッセージを受信する場合の第2の動作を説明する。ここでは、取得すべきメッセージが主記憶装置92に確保されているキュー情報領域#Nに存在しない場合である。
【0271】
(1)プロセッサPm上のプロセスPP−mがメッセージの受信をするためにプロセス間通信手段1000Pmにその旨を要求する。
【0272】
(2)要求を受けたプロセス間通信手段1000Pmは、主記憶装置92に確保されているキュー情報領域#Nにアクセスする。この場合、取得すべきメッセージがに確保されているキュー情報領域#Nに存在せず、メッセージを受信できないことが判明する。
【0273】
(3)プロセス間通信手段1000Pmは、シングルプロセッサ向けOS300Pmに対しシステムコールを用いて上記プロセスPP−mをスリープさせるように要求する。
【0274】
(4)シングルプロセッサ向けOS300Pmはシステムコールを用いてプロセスPP−mをスリープさせ、ランキューから外す。
【0275】
すなわち、上記の場合、プロセスPP−mはメッセージを受信できないのでスリープする。
【0276】
図24において、プロセッサPm上のプロセスPP−mがメッセージキュー方式によってメッセージを送信する場合の動作を説明する。ここでは、送信しようとするメッセージ待ちのプロセスが存在せず、主記憶装置92に確保されているキュー情報領域#Nへのメッセージの送信のみを行なう場合である。
【0277】
(1)プロセッサPm上のプロセスPP−mがメッセージの送信するためにプロセス間通信手段1000Pmにその旨を要求する。
【0278】
(2)要求を受けたプロセス間通信手段1000Pmは、主記憶装置92に確保されているキュー情報領域#Nにアクセスし、プロセスPP−mからのメッセージを格納する。
【0279】
さらに、図25において、プロセッサPm上のプロセスがメッセージキュー方式によってメッセージを送信する場合の動作を説明する。ここでは、送信しようとするメッセージ待ちのプロセスが存在する場合である。すなわち、図23の例のように、プロセスPP−mがメッセージを受信できずにスリープしている状態でプロセスPP−m1からメッセージが送信される場合である。
【0280】
(1)プロセスPP−m1がメッセージの送信をプロセス間通信手段1000Pmに要求する。
【0281】
(2)プロセス間通信手段1000Pmは、主記憶装置92に確保されているキュー情報領域#Nにアクセスし、プロセスPP−m1からのメッセージを格納する。ここで、メッセージ待ちのプロセスPP−mが存在することが判明する。
【0282】
(3)さらに、プロセス間通信手段1000Pmは、制御処理中継手段600に対して制御メッセージを送信することで、プロセスPP−mのウェイクアップを要求する。
【0283】
(4)制御代理手段500Pmが、制御処理中継手段600から制御メッセージを受信する。
【0284】
(5)制御代理手段500Pmは、制御メッセージからメッセージ待ちのプロセスのウェイクアップ要求であると判断し、シングルプロセッサ向けOS300Pmに対しシステムコールを用いて待ち状態の上記プロセスPP−mをウェイクアップさせるよう要求する。
【0285】
(6)シングルプロセッサ向けOS300Pmは、システムコールを用いて要求されたプロセスPP−mをウェイクアップし、ランキューへつなぐ。
【0286】
この場合、ウェイクアップされたプロセスPP−mは再度メッセージの受信を試みる。これにより、プロセスPP−m1からのメッセージがプロセスPP−mで受信される。
【0287】
なお、上記処理(3)、(4)における制御処理中継手段600による制御メッセージの中継を利用することなく、シングルプロセッサ向けOS300Pmの通信機能を用いて、プロセス間通信手段1000Pmから制御代理手段500Pmに対して直接プロセスPP−mのウェイクアップを要求するようにすれば、処理(3)、(4)が簡略されて高速化が可能である。
【0288】
図26において、図23に示すようにプロセッサPm上のプロセスPP−mがスリープしてメッセージ待ちの状態で、他のプロセッサPn上のプロセスPP−nがメッセージを送信する場合の動作を説明する。
【0289】
(1)プロセッサPn上のプロセスPP−nがメッセージの送信を自プロセッサPnのプロセス間通信手段1000Pnに要求する。
【0290】
(2)プロセス間通信手段1000Pnは、主記憶装置92に確保されているキュー情報領域#Nにアクセスし、プロセスPP−nからのメッセージを格納する。ここで、メッセージ待ちのプロセスPP−mが存在することが判明する。
【0291】
(3)さらに、プロセス間通信手段1000Pnは、制御処理中継手段600に対して制御メッセージを送信することで、プロセスPP−mのウェイクアップを要求する。
【0292】
(4)次いで、プロセッサPmの制御代理手段500Pmが、制御処理中継手段600から制御メッセージを受信する。
【0293】
(5)制御代理手段500Pmは、制御メッセージからメッセージ待ちのプロセスのウェイクアップ要求であると判断し、シングルプロセッサ向けOS300Pmに対しシステムコールを用いて待ち状態の上記プロセスPP−mをウェイクアップさせるよう要求する。
【0294】
(6)シングルプロセッサ向けOS300Pmは、システムコールを用いて要求されたプロセスPP−mをウェイクアップし、ランキューへつなぐ。
【0295】
この場合、ウェイクアップされたプロセスPP−mは再度メッセージの受信を試みる。これにより、プロセスPP−nからのメッセージがプロセスPP−mで受信され、異なるプロセッサ相互でプロセス間の通信が実行される。
【0296】
本例の並列処理システムによれば、上記のようにプロセス間通信手段1000P0〜Pnによって、セマフォ方式又はメッセージキュー方式を用いた同一プロセッサ内又は異なるプロセッサ間のプロセス通信(同期又はメッセージの送受)を行うことにより、プロセス切り替えなどのプロセス制御やデータのやり取りを行うことが可能となる。
【0297】
シングルプロセッサ向けOSによるプロセス間通信は、同一プロセッサ内のプロセス間に限られ、異なるプロセッサ間でのプロセス通信は処理の重いネットワーク等を利用して行う必要があったが、ネットワーク通信に比べて処理の高速な制御処理中継手段600とプロセス間通信手段1000P0〜Pnによるセマフォ方式又はメッセージキュー方式を用いることで、シングルプロセッサ向けOSを実装するマルチプロセッサシステムにおいても、処理の早いプロセス間通信が実現できる。
【0298】
同一プロセッサ内のプロセス間通信に関しては、シングルプロセッサ向けOSによるプロセスのスリープからウェイクアップに要する処理性能とほぼ同等の性能が得られる。
【0299】
また、マルチプロセッサ向けOSと異なり、プロセッサ毎に異なるシングルプロセッサ向けOSを実装していてもプロセッサ相互でのプロセス間通信が可能となる利点がある。
【0300】
次に、上記プロセス間通信手段1000P0〜1000Pnによるセマフォ方式及びメッセージキュー方式を用いたプロセス間通信の具体例について、図27を参照して説明する。
【0301】
図27において、プロセッサP0上でプロセスPP−0が、プロセッサPj上でプロセスPP−jが、プロセッサPk上でプロセスPP−kがそれぞれ実行されている。ここでは、プロセスPP−0がブラウザ、プロセスPP−jがjavaアプレット、プロセスPP−kがMPEG4アプリケーションとして動作し、図28に示すように、プロセスPP−0によるブラウザ1100に埋め込まれたウィンドウ内で、プロセスPP−jによるjavaアプレットのコンテンツ1200と、プロセスPP−kによるMPEG4映像コンテンツ1300とが同期して表示される。
【0302】
この例では、第1プロセッサ側100のシングルプロセッサ向けOS300P0上で動作するアアプリケーションの処理単位のうち、プロセスPP−0をプロセッサP0上で動作させ、アプリケーション内で並列化を行えるプロセスであるプロセスPP−jとプロセスPP−kを第2プロセッサ側200のプロセッサPjとプロセッサPkにおいて並列処理する場合である。
【0303】
図27において、javaアプレット(プロセスPP−j)とMPEG4アプリケーション(プロセスPP−k)は起動されると、共にブラウザ(プロセスPP−0)からのjavaアプリデータ及びMPEG4映像データの受信を待つ(ステップS101、S201)。
【0304】
ここで、プロセッサP0のプロセスPP−0からプロセス間通信手段1000P0によるメッセージ送信を利用して、javaアプリデータ及びMPEG4映像データがメッセージとして送信され、javaアプレット(プロセスPP−j)及びMPEG4アプリケーション(プロセスPP−k)で受信される。
【0305】
これにより、javaアプレット(プロセスPP−j)による動作が開始され(ステップS102)、MPEG4アプリケーション(プロセスPP−k)によるデコード処理が開始される(ステップS202)。
【0306】
この例では、javaアプレット(プロセスPP−j)による動作の方がMPEG4アプリケーション(プロセスPP−k)によるデコード処理より早く終了することが予め分かっており、javaアプレット(プロセスPP−j)は動作終了後に、MPEG4アプリケーション(プロセスPP−k)の処理完了を待つように、セマフォのカウンタの初期値を「0」に設定し、早く終了したjavaアプレット(プロセスPP−j)がセマフォdownできないようになっている。また、MPEG4アプリケーション(プロセスPP−k)は処理終了後にセマフォupするように定義されている。
【0307】
javaアプレット(プロセスPP−j)は、セマフォdownしようとするが(ステップS103)、カウンタの初期値が「0」であるためにdownできずにスリープされ、セマフォ待ちの状態となる。
【0308】
MPEG4アプリケーション(プロセスPP−k)が処理が終了すると(ステップS203)、セマフォupを要求する(ステップS204)。これにより、セマフォ待ちのjavaアプレット(プロセスPP−j)がウェイクアップされ、セマフォdownが可能となる。
【0309】
以上の動作を、フレーム毎に繰り返すことにより、プロセスPP−0によるブラウザ1100に埋め込まれたウィンドウ内で、プロセスPP−jによるjavaアプレットのコンテンツ1200と、プロセスPP−kによるMPEG4映像コンテンツ1300とが同期して表示される。
【0310】
次に、本発明の第4例の並列処理システムについて、図29以下を参照して説明する。図29は、この第4例の並列処理システムの構成を示すブロック図であり、図13と共通の構成要素については同じ符号を用いている。
【0311】
図29に示すように、第4例の並列処理システムにおいては、システムバス91で接続される複数のプロセッサ(CPU)P1〜Pn(nは2以上の整数)からなるマルチプロセッサを構成しており、プロセッサP1〜Pnの各プロセッサ上で動作するシングルプロセッサ向けOS300P1〜300Pnを実装している。
【0312】
すなわち、マルチプロセッサを、論理的に第1プロセッサ側と第2プロセッサ側の二組に分ける構成をとっていない点が、第1例から第3例と相違する。
【0313】
この第4例では、上記第3例と同様に、プロセッサP1〜Pnの並列処理を行うための並列処理通信手段400P1〜400Pnと制御代理手段500P1〜500Pnに加えて、プロセッサP1〜Pn上で実行される各プロセス間での通信を実現するためのプロセス間通信手段1000P1〜1000Pnを備えている。
【0314】
一方、第1例のようなOSサービス手段50P1〜50Pnや、第1例から第3例のような並列処理通信手段400P1〜400Pnを備えることなく、各プロセッサP1〜Pn上のプロセス制御が可能である。また、各プロセッサP1〜Pn上のシングルプロセッサ向けOS300P1〜300Pnについては、同じOSである必要はなく互いに異なっていてもよい。
【0315】
すなわち、本例でも、これまでマルチプロセッサ向けOSに実装されていたプロセス間通信の機能を、マルチプロセッサ上でシングルプロセッサ向けOS及びアプリケーションを動作させるシングルプロセッサ向けOSによる並列処理システム上で実現するものであり、ユーザレベルによるプロセス間通信機能の実装を可能にしている。
【0316】
この各プロセッサP1〜プロセッサPn内における各プロセスの実行については、他のプロセッサとの排他制御を必要とすることなく行われる。
【0317】
個々のプロセッサP1〜プロセッサPn内におけるプロセス間通信及びプロセッサ相互におけるプロセス間通信については、第3例で説明したように、プロセス間通信手段1000P1〜1000Pnによるセマフォ方式及びメッセージキュー方式を用いて行われ、プロセス相互の同期処理及びデータの受け渡しが実行される。
【0318】
上記並列処理システムに適用される本発明の電源管理システムについて図30を参照して説明する。ここでは、第3例として示した並列処理システムに対して本発明の電源管理システムを適用した第1の実施の形態について説明する。
【0319】
第1の実施の形態による電源管理システムは、図17に示した並列処理システムのプロセッサP0に、主電源管理手段2000mを備え、プロセッサP1〜Pnに、それぞれ副電源管理手段2000sを備えて構成されている。さらに、各プロセッサP0〜Pnの電源のON、OFFを行うための電源管理デバイス3000Aと、シングルプロセッサ向けOS300P0〜Pnから割り込み制御をするための割り込みデバイス3000Bが備えられる。この電源管理デバイス3000Aと割り込みデバイス3000Bは、シングルプロセッサ向けOSに備えられるドライバによって制御可能なデバイスである。
【0320】
主電源管理手段2000mは、並列処理システムを構成する各プロセッサの電源管理に関し、他のプロセッサP1〜Pnの電源状態をソフトウェア的に管理する機能と、電源状態の変更要求を行う機能の2つの機能を有する。
【0321】
主電源管理手段2000mの電源の管理機能では、他のプロセッサP1〜Pnについて起動、停止、起動途上(起動開始から起動状態が安定するまでの状態)、停止途上(停止開始から停止状態が安定するまでの状態)の4つの状態の何れの状態にあるかを管理する。起動時に主電源管理手段2000mは、何れのプロセッサP1〜Pnが起動しており、副電源管理手段が動作しているかをチェックする。
【0322】
主電源管理手段2000mの電源状態の変更要求では、他のプロセッサP1〜Pnの一部又は全てについてのboot要求(電源をオンにしてシステムを起動するための処理)やhalt要求(システムを停止し、電源を切れる状態に遷移するための処理)、全てのプロセッサのhalt要求を行なう。
【0323】
副電源管理手段2000sは、自身のプロセッセのhalt処理を行なう機能、起動時に主電源管理手段2000mに対して起動メッセージを送信する機能、他のプロセッサのboot又はhaltを主電源管理手段2000mに要求する機能を有する。以下では、システムを停止し電源を切れる状態に遷移するための処理としてのhalt処理について説明するが、halt処理以外にシャットダウン処理やサスペンド処理を行う場合においても同様に適用することができる。
【0324】
まず、プロセッサP0上のプロセスが他のプロセッサPnをbootする場合の動作について図31を参照して説明する。
【0325】
(1)プロセッサP0上のプロセスが主電源管理手段2000mに対してプロセッサPnのboot要求を行う。このboot要求においては、bootの対象となるプロセッサであるプロセッサPnを指定する。
【0326】
(2)起動時の状態確認において、プロセッサPnが停止状態であれば、主電源管理手段2000mは、シングルプロセッサ向けOS300P0を経由してOSの電源管理デバイス3000Aをアクセスすることにより、プロセッサPnの電源をONする。そして、プロセッサPnの状態を起動途上状態に変更する。
【0327】
(3)プロセッサPnの電源がONされると、そのシングルプロセッサ向けOS300Pnが起動し、副電源管理手段2000sも起動する。
【0328】
(4)次いで、プロセッサPnの副電源管理手段2000sが、自身のプロセス間通信手段1000Pnに対してbootした旨を表すboot完了メッセージを送信する。
【0329】
(5)プロセッサPn上のプロセス間通信手段1000Pnは、制御処理中継手段600を経由して、プロセッサP0上のプロセス間通信手段1000P0へ上記boot完了メッセージを中継する。
【0330】
(6)プロセッサP0の主電源管理手段2000mは、プロセス間通信手段1000P0からboot完了メッセージを受理することにより、プロセッサPnの状態を起動状態に変更する。
【0331】
なお、プロセッサPnが停止状態ではなく、停止途上状態の場合、処理(6)で停止状態に遷移するまで処理を待ち、停止状態となった時点で処理(2)から処理を再実行する。
【0332】
また、処理(6)の後に、boot要求を行ったプロセッサP0のプロセスに対して、bootが完了した旨の通知を行うことも可能である。例えば、上記の例において、プロセッサPnのbootが完了するまで、プロセッサP0のプロセスによる処理が待ち状態となるような場合には、bootが完了した旨の通知を行うことでプロセッサP0のプロセスによる処理を再開することができる。
【0333】
また、プロセッサPnが起動状態又は起動途上状態である場合には、boot要求を無視する。
【0334】
以上により、プロセッサP0上のプロセスがプロセッサPnをbootする処理が終了する。
【0335】
次に、プロセッサP0上のプロセスが他のプロセッサPnをhaltする場合の動作について図32を参照して説明する。
【0336】
(1)プロセッサP0上のプロセスが主電源管理手段2000mに対してプロセッサPnのhalt処理を要求する。
【0337】
(2)起動時の状態確認において、プロセッサPnが起動状態であれば、主電源管理手段2000mは、プロセス間通信手段1000P0へhalt要求メッセージを送信する。また、プロセッサPnの状態を停止途上状態に変更する。
【0338】
(3)プロセッサP0のプロセス間通信手段1000P0は、制御処理中継手段600を経由して、プロセッサPn上のプロセス間通信手段1000Pnへ上記halt要求メッセージを中継する。
【0339】
(4)プロセッサPnの副電源管理手段2000sは、プロセス間通信手段1000Pnから上記halt要求メッセージを受理する。
【0340】
(5)次いで、プロセッサPn上の副電源管理手段2000sは、halt要求と判断し、halt処理をシングルプロセッサ向けOS300Pnへ通知する。
【0341】
(6)通知を受けたシングルプロセッサ向けOS300Pnは、halt処理の完了後に、OSの割り込みデバイス3000Bによる割り込みを使用してプロセッサP0へ処理の完了を通知する。
【0342】
(7)プロセッサP0上のシングルプロセッサ向けOS300P0の電源管理デバイス3000A用のデバイスドライバが当該割り込みを受理し、主電源管理手段2000mへ通知する。
【0343】
(8)通知を受けた主電源管理手段2000mは、シングルプロセッサ向けOS300P0の電源管理デバイス3000Aを経由してプロセッサPnの電源をOFFし、プロセッサPnの状態を停止状態に変更する。
【0344】
ここで、halt要求時にプロセッサPnが起動状態ではなく、起動途上状態の場合、処理(8)で起動状態に遷移するまで処理を待ち、起動状態となった時点で処理(2)から処理を再実行する。
【0345】
また、プロセッサPnが停止状態又は停止途上状態である場合には、halt要求を無視する。
【0346】
以上により、プロセッサP0上のプロセスがプロセッサPnをhaltする処理が終了する。
【0347】
以上の説明では、プロセッサP0のプロセスから他の一のプロセッサPnのboot処理とhalt処理を行う場合について説明したが、全ての他のプロセッサP1〜Pnまたは一部(複数)の他のプロセッサのboot要求又はhalt要求に基づいて上記boot処理及びhalt処理を各プロセッサ毎に並列に実行することが可能である。
【0348】
なお、上記説明において、プロセッサP0のプロセスからプロセッサPnのboot要求及びhalt要求を行う場合を説明したが、他のプロセッサ上のプロセスからboot要求及びhalt要求をプロセッサP0の主電源管理手段2000mに対して送信することも可能である。この場合のboot要求及びhalt要求の送信は、プロセス間通信手段1000P1〜1000Pnによって行う。
【0349】
また、処理(8)の後に、halt要求を行ったプロセッサP0のプロセスに対して、haltが完了した旨の通知を行うことも可能である。例えば、上記の例において、プロセッサPnのhaltが完了するまで、プロセッサP0のプロセスによる処理が待ち状態となるような場合には、haltが完了した旨の通知を行うことでプロセッサP0のプロセスによる処理を再開することができる。
【0350】
以下、第1のプロセッサP0を含む全てのプロセッサP0〜Pnのhaltを行う場合の動作について図33を参照して説明する。
【0351】
(1)プロセッサP0上のプロセスが主電源管理手段2000mに対して全てのプロセッサのhaltを要求する。
【0352】
(2)起動時の状態確認において、起動状態のプロセッサがあれば、主電源管理手段2000mは、プロセス間通信手段1000P0へ当該起動状態のプロセッサ(対象のプロセッサ)のhalt要求メッセージを送信する。また、当該プロセッサの状態を停止途上状態に変更する。
【0353】
(3)プロセッサP0の主電源管理手段2000mは、シングルプロセッサ向けOS300P0へhalt処理を依頼し、対象のプロセッサのhalt完了を待つ。
【0354】
(4)プロセッサP0のプロセス間通信手段1000P0は、制御処理中継手段600を経由して、対象のプロセッサ上のプロセス間通信手段へ上記halt要求メッセージを中継する。
【0355】
(5)対象のプロセッサの副電源管理手段2000sは、プロセス間通信手段から上記halt要求メッセージを受理する。
【0356】
(6)次いで、対象のプロセッサ上の副電源管理手段2000sは、halt要求と判断し、halt処理をシングルプロセッサ向けOSへ通知する。
【0357】
(7)通知を受けたシングルプロセッサ向けOSは、halt処理の完了後に、OSの割り込みデバイス3000Bによる割り込みを使用してプロセッサP0へ処理の完了を通知する。
【0358】
(8)プロセッサP0上のシングルプロセッサ向けOS300P0の電源管理デバイス3000A用のデバイスドライバが当該割り込みを受理し、割り込み元のプロセッサのhalt処理の完了を認識する。
【0359】
(9)そして、シングルプロセッサ向けOS300P0の電源管理デバイス3000Aを経由して対象のプロセッサの電源をOFFする。
【0360】
(10)全プロセッサからの全halt処理の完了を電源管理デバイス3000A用のデバイスドライバが認識すると、当該電源管理デバイス3000Aを経由してプロセッサP0の電源をOFFする。
【0361】
ここで、halt要求時にプロセッサが起動状態ではなく、起動途上状態の場合、起動状態に遷移するまで処理を待ち、起動状態となった時点で処理(2)から処理を再実行する。
【0362】
また、プロセッサが停止状態又は停止途上状態である場合には、halt要求を無視する。
図34は、第1プロセッサP0と他のプロセッサP1、P2の3つのプロセッサで構成される並列処理システムに第1実施の形態による電源管理システムを適用した場合における電源制御の状態遷移を示している。
【0363】
なお、上記ではhalt要求とboot要求に基づいてプロセッサの電源をOFF又はONする場合を説明したが、電源のOFFとONの代わりに、suspend(サスペンド:プロセッサの休止)とresume(レジューム:プロセッサの復帰)を行うようにしてもよい。
【0364】
また、全プロセッサのhalt要求時以外においては、以上のようにsuspend(サスペンド:プロセッサの休止)とresume(レジューム:プロセッサの復帰)を行い、全プロセッサのhalt要求時に電源のOFFを行うようにすることもできる。
【0365】
第1の実施の形態による電源管理システムとして、上記のようにboot、halt要求に基づいて、電源管理デバイス3000Aによりプロセッサの電源のONとOFFを行う場合を説明したが、各プロセッサの電源電圧やクロック周波数の変更要求を、上述したboot要求又はhalt要求に対する処理と同様の処理によって実行することも可能である。例えば、プロセッサの電源電圧を0ボルトから任意のボルトに変更する要求の場合にboot要求として処理し、電源電圧を任意のボルトから0ボルトに変更する要求の場合にhalt要求として処理することができる。
【0366】
次に、並列処理システムに適用される電源管理システムの第2の実施の形態について、図35を参照して説明する。
【0367】
本実施の形態による電源管理システムにおける主電源管理手段については、第1の実施の形態のように、独自のプロセスとして主電源管理手段2000mを備えるのではなく、第1のプロセッサP0のシングルプロセッサ向けOS300P0に備えれている電源管理機能を有効に活用して各プロセッサの電源状態を管理するデバイスドライバとして各プロセッサに対応した主電源管理手段2000m0〜2000mnを設けている。
【0368】
これらの主電源管理手段2000m0〜2000mnは、シングルプロセッサ向けOS300P0のデバイスドライバとして搭載され、シングルプロセッサ向けOS300P0に予め備えられているデバイス管理のための所定のコマンド(要求)を、電源管理のためのコマンド(要求)として読み替えて利用することにより、電源状態の変更要求を行うものである、
例えば、シングルプロセッサ向けOS300P0に予め備えられているデバイス管理のための所定のコマンドである「probe」、「remove」、のコマンドを、それぞれプロセッサの起動と停止を行うためのコマンドとして利用する。
【0369】
副電源管理手段については、他のプロセッサP1〜Pnのシングルプロセッサ向けOSP1〜Pnに備えられているカーネルK1〜Knのサブシステムとして実現されており、上記プロセッサP0に設けられた主電源管理手段2000m1〜2000mnに対応した副電源管理手段2000s1〜2000snがそれぞれプロセッサP1〜Pnに備えられている。これら副電源管理手段2000s1〜2000snは、対応する主電源管理手段2000m0〜2000mnからの要求コマンドに従って電源状態変更のための処理を行う。
【0370】
次いで、第2の実施の形態による電源管理システムの動作について説明する。
【0371】
まず、プロセッサP0上のプロセスからプロセッサPnを起動する場合の動作を図36を参照して説明する。
【0372】
(1)プロセッサP0上のプロセスがシングルプロセッサ向けOS300P0のカーネルK0経由でデバイスとしてのプロセッサPnのprobeを要求する。
【0373】
(2)カーネルK0は、プロセッサPnに対応する主電源管理手段2000mnのprobe関数を呼び出す。
【0374】
(3)主電源管理手段2000mnは、電源管理デバイス3000Aをアクセスすることにより、プロセッサPnの電源をONにする。ここで、主電源管理手段2000mnは、デバイスの状態(プロセッサPnの状態)を起動中に変更する。
【0375】
(4)そして、主電源管理手段2000mnは、probe関数の処理を終え、カーネルK0に対して処理を戻す。
【0376】
(5)プロセッサPnの電源ONによりプロセッサPn上のカーネルKnと副電源管理手段2000snが起動する。
【0377】
(6)カーネルKnはデバイスである副電源管理手段2000snの初期化関数を呼び出す。
【0378】
(7)副電源管理手段2000snは、初期化関数によって割り込みデバイス3000Bへアクセスし、プロセッサP0に対して起動完了を通知する。
【0379】
(8)主電源管理手段2000mnは、割り込みを受理し、デバイスの状態(プロセッサPnの状態)を起動に変更する。
【0380】
上記の動作において、プロセッサPnの起動時間が早い場合には、主電源管理手段2000mnが、すぐに処理(4)を行わずに、処理(5)から処理(8)の完了を待ってから処理(4)を行うことも可能である。また、プロセッサPnの状態が起動途上であれば当該要求を無視し、停止途上であれば処理を中断し、状態が停止に変更された時点で処理を再開する。
【0381】
以上の説明では、プロセッサP0のプロセスから他の一のプロセッサPnのprobe処理とremove処理を行う場合について説明したが、全ての他のプロセッサP1〜Pnまたは一部(複数)の他のプロセッサのboot要求又はhalt要求に基づいて上記boot処理及びhalt処理を各プロセッサ毎に並列に実行することが可能である。
【0382】
さらに、上記説明では、probe要求によってプロセッサを起動する場合を説明したが、例えばresume要求によって休止状態のプロセッサを復帰させる場合も「probe」を「resume」に変更することにより上記と同様の処理で達成することができる。
【0383】
次に、プロセッサP0上のプロセスからプロセッサPnを停止する場合の動作を図37を参照して説明する。
【0384】
(1)プロセッサP0上のプロセスがシングルプロセッサ向けOS300P0のカーネルK0経由でデバイスとしてのプロセッサPnのremoveを要求する。
【0385】
(2)カーネルK0は、プロセッサPnに対応する主電源管理手段2000mnのremove関数を呼び出す。
【0386】
(3)主電源管理手段2000mnは、制御処理中継手段600にremove要求を送信する。ここで、主電源管理手段2000mnは、デバイスの状態(プロセッサPnの状態)を停止中に変更する。
【0387】
(4)そして、主電源管理手段2000mnは、remove関数の処理を終え、カーネルK0に対して処理を戻す。
【0388】
(5)プロセッサPnの副電源管理手段2000snが、制御処理中継手段600からremove要求を受理する。
【0389】
(6)デバイスである副電源管理手段2000snは、remove要求に必要な処理を行い、割り込みデバイス3000Bにアクセスし、プロセッサP0に対して停止完了を通知する。
【0390】
(7)主電源管理手段2000mnは、割り込みを受理し、デバイスの状態(プロセッサPnの状態)を停止に変更すると共に、電源管理デバイス3000AにアクセスしてプロセッサPnの電源をOFFする。
【0391】
上記の動作において、プロセッサPnの停止時間が早い場合には、主電源管理手段2000mnが、すぐに処理(4)を行わずに、処理(5)から処理(7)の完了を待ってから処理(4)を行うことも可能である。
【0392】
上記説明では、remove要求によってプロセッサを停止する場合を説明したが、例えばsuspend要求によって起動状態のプロセッサを休止させる場合も「remove」を「suspend」に変更することにより上記と同様の処理で達成することができる。
【0393】
以上の説明では、プロセッサP0のプロセスから他の一のプロセッサPnのprobe処理とremove処理を行う場合について説明したが、全ての他のプロセッサP1〜Pnまたは一部(複数)の他のプロセッサのprobe要求又はremove要求に基づいて上記probe処理及びremove処理を各プロセッサ毎に並列に実行することが可能である。
【0394】
さらに、プロセッサP0自身を停止する場合の動作について図38を参照して説明する。
【0395】
(1)プロセッサP0上のプロセスがカーネルK0経由でデバイスとしてのプロセッサP0のremoveを要求する。
【0396】
(2)カーネルK0は、主電源管理手段2000m0のremove関数を呼び出す。
【0397】
(3)主電源管理手段2000m0は、他の主電源管理手段が全てremove処理を終了して停止状態になっていることを確認し(対応するプロセッサP1〜Pnの電源がOFFになっていることの確認)、デバイスの状態(プロセッサP0の状態)を停止中に変更して、removeに必要な処理を行う。
【0398】
(4)主電源管理手段2000m0は、デバイスの状態(プロセッサP0の状態)を停止に変更して、電源管理デバイス3000AへアクセスしプロセッサP0の電源をOFFする。
【0399】
なお、probe要求及びremove要求時に、対象のプロセッサが状態途上にある場合には、それらの要求を全て受理せずに無視するようにすることもできるし、また、probe要求及びremove要求を待ち状態とし、プロセッサの電源状態が確定した後にそれらの要求を処理するようにしてもよい。
【0400】
全プロセッサのremove要求に対しては、プロセッサP1〜Pnに対して図37によるremove処理を行うと共に、プロセッサP0に対しては図38による処理を行う。
【0401】
第2の実施の形態による電源管理システムとしては、上記のようにprobe、remove、suspend、resume要求以外に、scale要求を使用して各プロセッサの電源電圧やクロック周波数の変更を行うようにしてもよい。
【0402】
なお、上記説明した第1の実施の形態及び第2の実施の形態は、第3例の並列処理システム以外に同様に適用することができる。第1例及び第2の例の並列処理システムに対して本発明の第1の実施の形態及び第2の実施の形態による電源管理システムを適用する場合には、プロセス間での通信を実現するためのプロセス間通信手段1000P0〜1000Pnを各プロセッサに備えることで同様に実現することが可能である。
【0403】
なお、上記各実施の形態の並列処理システムは、並列処理手段、OSサービス手段、制御処理中継手段、代理手段、プロセス間通信手段の各機能を有する並列処理プログラムによって実現することができ、電源管理システムについても、主電源管理手段及び副電源管理手段の機能を有する電源管理プログラムによって実現できる。これらのプログラムは、磁気ディスク、半導体メモリその他の記録媒体に格納され、その記録媒体からコンピュータ処理装置にロードされ、コンピュータ処理装置の動作を制御することにより、上述した各機能を実現する。
【0404】
以上好ましい実施の形態及び実施例をあげて本発明を説明したが、本発明は必ずしも上記実施の形態及び実施例に限定されるものではなく、その技術的思想の範囲内において様々に変形して実施することができる。
【0405】
【発明の効果】
以上説明したように本発明によれば、マルチプロセッサ上でシングルプロセッサ向けOSと既存のアプリケーションをそれらに改造を加えることなく動作させ、その既存のアプリケーションに対してマルチプロセッサによる並列処理を実現できるようにしたシングルプロセッサ向けOSによる並列処理システムにおいて、マルチプロセッサ向けOSによる並列処理システムのような複雑な制御を必要とすることなく、またOSの大幅な改造も行うことなく、簡単な制御で電源管理を行うことが可能となる。
【図面の簡単な説明】
【図1】 本発明を適用する第1例の並列処理システムの構成を示すブロック図である。
【図2】 第1例の並列処理システムの並列処理手段による並列処理起動の動作を説明するための図である。
【図3】 並列処理システムの並列処理手段による並列処理起動における要求を行うためのメッセージの構成を示す図である。
【図4】 第1例の並列処理システムにおける第2プロセッサ側のタスクからのファイルアクセス要求に対するOSサービス手段の動作を説明する図である。
【図5】 第1プロセッサ側の逐次タスクからのファイルアクセス要求に対する動作を説明する図である。
【図6】 第1例の並列処理システムにおける制御処理中継手段の内部構成を示すブロック図である。
【図7】 第1例の並列処理システムにおける制御処理中継手段の処理動作を説明する図である。
【図8】 第1例の並列処理システムにおける代理手段によるシグナル通知処理動作を説明する図である。
【図9】 第1例の並列処理システムにおける第2プロセッサ側におけるタスク相互の連携動作を実現するための構成を示すブロック図である。
【図10】 第1例の並列処理システムにおける第2プロセッサ側におけるタスク相互の連携動作を説明する図である。
【図11】 並列処理システムにおける適用例としてのマルチプロセッサの携帯端末においてアプリケーションを動作させる場合の例を説明する図である。
【図12】 本発明を適用する第2例の並列処理システムの構成を示すブロック図である。
【図13】 第2例の並列処理システムにおけるプロセスの同期的な並列処理起動の動作を説明するための図である。
【図14】 第2例の並列処理システムにおけるプロセスの非同期的な並列処理起動の動作を説明するための図である。
【図15】 第2例の並列処理システムにおける制御処理中継手段の内部構成を示すブロック図である。
【図16】 第2例の並列処理システムにおける制御処理中継手段の処理動作を説明する図である。
【図17】 本発明を適用する第3例の並列処理システムの構成を示すブロック図である。
【図18】 第3例の並列処理システムにおいて、プロセッサ内のプロセスがプロセス間通信手段によるセマフォ方式を用いてセマフォup又はdownを行う場合の動作を説明するための図である。
【図19】 第3例の並列処理システムにおいて、プロセッサ内のプロセスがプロセス間通信手段によるセマフォ方式を用いてセマフォdownを行う場合の動作を説明するための図である。
【図20】 第3例の並列処理システムにおいて、同一プロセッサ内のプロセス間でプロセス間通信手段によるセマフォ方式を用いてセマフォupを行う場合の動作を説明するための図である。
【図21】 第3例の並列処理システムにおいて、異なるプロセッサ相互のプロセス間でプロセス間通信手段によるセマフォ方式を用いてセマフォupを行う場合の動作を説明するための図である。
【図22】 第3例の並列処理システムにおいて、プロセッサ内のプロセスがプロセス間通信手段によるメッセージキュー方式を用いてメッセージの受信を行う場合の動作を説明するための図である。
【図23】 第3例の並列処理システムにおいて、プロセッサ内のプロセスがプロセス間通信手段によるメッセージキュー方式を用いてメッセージの受信を行う場合の動作を説明するための図である。
【図24】 第3例の並列処理システムにおいて、プロセッサ内のプロセスがプロセス間通信手段によるメッセージキュー方式を用いてメッセージの送信を行う場合の動作を説明するための図である。
【図25】 第3例の並列処理システムにおいて、同一プロセッサ内のプロセス間でプロセス間通信手段によるメッセージキュー方式を用いてメッセージの送受信を行う場合の動作を説明するための図である。
【図26】 第3例の並列処理システムにおいて、異なるプロセッサ相互のプロセス間でプロセス間通信手段によるメッセージキュー方式を用いてメッセージの送受信を行う場合の動作を説明するための図である。
【図27】 第3例の並列処理システムにおいて、セマフォ方式及びメッセージキュー方式を用いたプロセス間通信の具体例を説明するための図である。
【図28】 図27の具体例におけるブラウザ画面の表示内容を説明する図である。
【図29】 本発明を適用する第4例の並列処理システムの構成を示すブロック図である。
【図30】 本発明の第1の実施の形態による並列処理システムの電源管理システムの構成を示すブロック図である。
【図31】 本発明の第1の実施の形態におけるプロセッサをbootする場合の動作を説明するための図である。
【図32】 本発明の第1の実施の形態におけるプロセッサをhaltする場合の動作を説明するための図である。
【図33】 本発明の第1の実施の形態における全てのプロセッサのhaltを行う場合の動作を説明するための図である。
【図34】 3つのプロセッサで構成される並列処理システムに第1実施の形態による電源管理システムを適用した場合における電源制御の状態遷移を示す図である。
【図35】 本発明の第2の実施の形態による並列処理システムの電源管理システムの構成を示すブロック図である。
【図36】 本発明の第2の実施の形態におけるプロセッサを起動する場合の動作を説明するための図である。
【図37】 本発明の第2の実施の形態におけるプロセッサを停止する場合の動作を説明するための図である。
【図38】 本発明の第2の実施の形態におけるプロセッサ自身が停止する場合の動作を説明するための図である。
【符号の説明】
10、100:第1プロセッサ側
20、200:第2プロセッサ側
30、300P0、300P1〜300Pn:シングルプロセッサ向けOS
40P0〜40Pn:並列処理手段
400P0〜400Pn:並列処理通信手段
50P0〜50Pn:OSサービス手段
500P0〜500Pn:制御代理手段
60、600:制御処理中継手段
61P0〜61Pn、601P0〜601Pn:割込制御装置
61a、601a:割込指示部
61b、601b:割込状態保持部
61c、601c:割込取消部
62P0〜62Pn、602P0〜602Pn:通信領域
62a:通信理由保持領域
62b:通信データ保持領域
62c、602b:排他制御領域
602a:通信キュー
70:代理手段
91:システムバス
92:主記憶装置
93:外部記憶装置
1000P0〜1000Pn:プロセス間通信手段
ST:逐次タスク
PT:並列化タスク
PT−1〜PT−n:タスク
41P1〜41Pn:相互排他手段
43 排他制御領域
44:タスク管理内容保持領域
SP:逐次プロセス
PP:並列化プロセス
PP−1〜PP−n:プロセス
2000m:主電源管理手段
2000s:副電源管理手段
2000m0〜2000mn:主電源管理手段
2000s1〜2000sn:副電源管理手段
3000A:電源管理デバイス
3000B:割り込みデバイス
K0〜Kn:カーネル
Claims (31)
- 複数のプロセッサにおいてOS及びアプリケーションを動作させ、前記アプリケーションに対して前記複数のプロセッサによる並列処理を実現する並列処理システムにおいて、
前記複数のプロセッサを論理的に、第1のプロセッサ群と第2のプロセッサ群の二つに分け、
前記第1のプロセッサ群のプロセッサに属し、かつ、前記第1のプロセッサ群のプロセッサのOSとは機能的に独立に設けられ、前記第2のプロセッサ群のプロセッサに対して前記第1のプロセッサ群のプロセッサ上で動作する前記アプリケーション内で並列化が可能な処理単位に関する要求を前記第1のプロセッサ群のプロセッサ上のOSに代理して発行する並列処理手段と、
前記第1のプロセッサ群には、前記複数のプロセッサのうちいずれかのプロセッサの電源状態に関わる処理の要求を、前記いずれかのプロセッサから受信し、前記要求に基づいて前記要求されたプロセッサの電源状態に関わる処理を実行する電源管理手段を有することを特徴とする並列処理システム。 - 前記第1のプロセッサ群のプロセッサに属する並列処理手段が、前記第2のプロセッサ群の少なくとも一のプロセッサに対して、前記第1のプロセッサ群の処理単位に関する要求を発し、前記第2のプロセッサ群のプロセッサに対して前記要求に基づいて前記処理単位を新たな処理単位として実行させることを特徴とする請求項1に記載の並列処理システム。
- 複数のプロセッサにおいてOS及びアプリケーションを動作させ、前記アプリケーションに対して前記複数のプロセッサによる並列処理を実現する並列処理システムにおいて、
前記複数のプロセッサを論理的に、第1のプロセッサ群と第2のプロセッサ群の二つに分け、
前記第1のプロセッサ群のプロセッサに属し、かつ、前記第1のプロセッサ群のプロセッサのOSとは機能的に独立に設けられ、前記第2のプロセッサ群のプロセッサに対して前記第1のプロセッサ群のプロセッサの処理単位に関する要求を前記第1のプロセッサ群のプロセッサ上のOSに代理して発行する並列処理手段とを有し、
前記第1のプロセッサ群に、各プロセッサの電源管理に関し、前記第2のプロセッサ群のプロセッサの電源状態を管理する機能と、前記OSに対して電源状態の変更要求を行う機能を有する主電源管理手段を備え、
前記第2のプロセッサ群に、前記起動又は停止のために必要な処理を行なう機能、他のプロセッサの起動又は停止を前記主電源管理手段に要求する機能を有する副電源管理手段を備えることを特徴とする並列処理システム。 - 前記プロセッサの起動又は停止の要求が、boot要求又はhalt要求であることを特徴とする請求項3に記載の並列処理システム。
- 前記第1のプロセッサ群の前記OSに、前記OSのデバイスとして搭載され、前記第2のプロセッサ群のプロセッサの電源状態を管理すると共に、前記OSに予め備えられているデバイス管理のための所定の要求を、電源管理のための要求として利用し電源状態の変更要求を行う主電源管理手段を設け、
前記第2のプロセッサ群の前記OSに、前記起動又は停止のために必要な処理を行なうと共に、起動時に前記主電源管理手段に対して起動メッセージを送信する機能を有する副電源管理手段を備えることを特徴とする請求項1又は請求項2に記載並列処理システム。 - 前記主電源管理手段を、第2のプロセッサ群の各プロセッサに対応させて複数設けることを特徴とする請求項5に記載の並列処理システム。
- デバイス管理のための所定の要求であるprobe又はremove要求を、前記プロセッサの起動又は停止要求として読み替えることを特徴とする請求項5又は請求項6に記載の並列処理システム。
- 前記第1のプロセッサ群のプロセッサ及び前記第2のプロセッサ群のプロセッサ上の処理単位間における、同期的な処理及びデータ受け渡しを可能とするプロセス間通信手段を、前記第1のプロセッサ群のプロセッサ及び前記第2のプロセッサ群のプロセッサに備え、
前記プロセス間通信手段によって、前記主電源管理手段と前記副電源管理手段間における、電源管理のための同期的な処理を行うことを特徴とする請求項3から請求項7の何れか1項に記載の並列処理システム。 - 前記主電源管理手段及び前記副電源管理手段をモジュール化して組み込むことを特徴とする請求項3又は請求項4に記載の並列処理システム。
- 前記起動又は停止の要求がなされた前記プロセッサが、起動途上状態又は停止途上状態である場合に、前記途上状態が確定するまで前記要求を待合せることを特徴とする請求項3から請求項9の何れか1項に記載の並列処理システム。
- 前記起動又は停止の要求がなされた前記プロセッサが、起動途上状態又は停止途上状態である場合に、前記要求を無視することを特徴とする請求項3から請求項9の何れか1項に記載の並列処理システム。
- 前記プロセッサの起動要求において、要求を受けた前記主電源管理手段が、要求されたプロセッサを起動すると共に、
起動されたプロセッサの前記副電源管理手段からの起動完了の通知を受理することにより、前記起動されたプロセッサの電源状態を起動状態に変更することを特徴とする請求項3から請求項11の何れか1項に記載の並列処理システム。 - 前記プロセッサの停止要求において、要求を受けた前記主電源管理手段が、要求されたプロセッサの前記副電源管理手段に対して、停止に必要な処理を要求し、
前記プロセッサからの処理完了の通知を受理することにより、前記要求されたプロセッサを停止させ、前記起動されたプロセッサの電源状態を停止状態に変更することを特徴とする請求項3から請求項12の何れか1項に記載の並列処理システム。 - 全てのプロセッサの停止要求において、要求を受けた前記主電源管理手段が、他のプロセッサの前記副電源管理手段に対して、停止に必要な処理を要求し、前記他のプロセッサからの処理完了の通知を受理することにより、前記他のプロセッサを停止させ、その後、前記OSのデバイスを制御して自身プロセッサを停止させることを特徴とする請求項3から請求項13の何れか1項に記載の並列処理システム。
- プロセッサの起動又は停止に加えて、プロセッサの休止又は復帰の要求を受け付け、前記OSのデバイスを制御することにより、要求されたプロセッサの休止又は復帰を行うと共に、
前記休止又は復帰の要求を受けたプロセッサが、前記第1のプロセッサ群からの通知に基づいて前記休止又は復帰のために必要な処理を行うことを特徴とする請求項3から請求項14の何れか1項に記載の並列処理システム。 - プロセッサの起動又は停止に加えて、プロセッサの電源電圧又はクロック周波数の変更要求を受け付け、前記OSのデバイスを制御することにより、要求されたプロセッサの電源電圧又はクロック周波数の変更を行うと共に、
前記電源電圧又はクロック周波数の変更を受けたプロセッサが、前記第1のプロセッサ群からの通知に基づいて前記電源電圧又はクロック周波数の変更のために必要な処理を行うことを特徴とする請求項3から請求項15の何れか1項に記載の並列処理システム。 - 複数のプロセッサの並列実行を行うシステム上でOS及びアプリケーションを動作させ、前記アプリケーションを前記複数のプロセッサにより並列処理を実現する並列処理プログラムであって、
前記複数のプロセッサを論理的に、第1のプロセッサ群と第2のプロセッサ群の少なくとも二つに分け、
前記第1のプロセッサ群のプロセッサに、
前記第1のプロセッサ群のプロセッサのOSとは機能的に独立して、前記第2のプロセッサ群のプロセッサに対して前記第1のプロセッサ群のプロセッサ上で動作する前記アプリケーション内で並列化が可能な処理単位に関する要求を前記第1のプロセッサ群のプロセッサ上のOSに代理して発行する機能を実現させ、
前記第1のプロセッサ群に、前記複数のプロセッサのうちいずれかのプロセッサの電源状態に関わる処理の要求を、前記いずれかのプロセッサから受信し、前記要求に基づいて前記要求されたプロセッサの電源状態に関わる処理を実行する機能を実現させることを特徴とする並列処理プログラム。 - 複数のプロセッサの並列実行を行うシステム上でOS及びアプリケーションを動作させ、前記アプリケーションを前記複数のプロセッサにより並列処理を実現する並列処理プログラムであって、
前記複数のプロセッサを論理的に、第1のプロセッサ群と第2のプロセッサ群の少なくとも二つに分け、
前記第1のプロセッサ群のプロセッサに、
前記第1のプロセッサ群のプロセッサのOSとは機能的に独立して、前記第2のプロセッサ群のプロセッサに対して前記第1のプロセッサ群のプロセッサ上で動作する前記アプリケーション内で並列化が可能な処理単位に関する要求を前記第1のプロセッサ群のプロセッサ上のOSに代理して発行する機能と、
前記第1のプロセッサ群に、各プロセッサの電源管理に関し、前記第2のプロセッサ群のプロセッサの電源状態を管理する機能と、前記OSに対して電源状態の変更要求を行う機能を有する主電源管理プログラムを備え、
前記第2のプロセッサ群に、前記起動又は停止のために必要な処理を行なう機能、他のプロセッサの起動又は停止を前記主電源管理プログラムに要求する機能を有する副電源管理プログラムを備えることを特徴とする並列処理プログラム。 - 前記プロセッサの起動又は停止の要求が、boot要求又はhalt要求であることを特徴とする請求項18に記載の並列処理プログラム。
- 前記第1のプロセッサ群の前記OSに、前記OSのデバイスとして搭載され、前記第2のプロセッサ群のプロセッサのプロセッサの電源状態を管理すると共に、前記OSに予め備えられているデバイス管理のための所定の要求を、電源管理のための要求として利用し電源状態の変更要求を行う主電源管理プログラムを設け、
前記第2のプロセッサ群の前記OSに、前記起動又は停止のために必要な処理を行なうと共に、起動時に前記主電源管理プログラムに対して起動メッセージを送信する機能を有する副電源管理プログラムを備えることを特徴とする請求項17に記載の並列処理プログラム。 - デバイス管理のための所定の要求であるprobe又はremove要求を、前記プロセッサの起動又は停止要求として読み替えることを特徴とする請求項20に記載の並列処理プログラム。
- 前記第1のプロセッサ群のプロセッサ及び前記第2のプロセッサ群のプロセッサ上の処理単位間における、同期的な処理及びデータ受け渡しを可能とするプロセス間通信手段を、前記第1のプロセッサ群のプロセッサ及び前記第2のプロセッサ群のプロセッサに備え、
前記プロセス間通信手段によって、前記主電源管理プログラムと前記副電源管理プログラム間における、電源管理のための同期的な処理を行うことを特徴とする請求項18から請求項21の何れか1項に記載の並列処理プログラム。 - 前記主電源管理プログラム及び前記副電源管理プログラムをモジュール化して組み込むことを特徴とする請求項18又は請求項19に記載の並列処理プログラム。
- 前記起動又は停止の要求がなされた前記プロセッサが、起動途上状態又は停止途上状態である場合に、前記途上状態が確定するまで前記要求を待合せることを特徴とする請求項18から請求項23の何れか1項に記載の並列処理プログラム。
- 前記起動又は停止の要求がなされた前記プロセッサが、起動途上状態又は停止途上状態である場合に、前記要求を無視することを特徴とする請求項18から請求項23の何れか1項に記載の並列処理プログラム。
- 前記プロセッサの起動要求において、要求を受けた前記主電源管理プログラムが、要求されたプロセッサを起動すると共に、
起動されたプロセッサの前記副電源管理プログラムからの起動完了の通知を受理することにより、前記起動されたプロセッサの電源状態を起動状態に変更することを特徴とする請求項18から請求項25の何れか1項に記載の並列処理プログラム。 - 前記プロセッサの停止要求において、要求を受けた前記主電源管理プログラムが、要求されたプロセッサの前記副電源管理プログラムに対して、停止に必要な処理を要求し、
前記プロセッサからの処理完了の通知を受理することにより、前記要求されたプロセッサを停止させ、前記起動されたプロセッサの電源状態を停止状態に変更することを特徴とする請求項18から請求項26の何れか1項に記載の並列処理プログラム。 - 全てのプロセッサの停止要求において、要求を受けた前記主電源管理プログラムが、他のプロセッサの前記副電源管理プログラムに対して、停止に必要な処理を要求し、前記他のプロセッサからの処理完了の通知を受理することにより、前記他のプロセッサを停止させ、その後、前記OSのデバイスを制御して自身プロセッサを停止させることを特徴とする請求項18から請求項27の何れか1項に記載の並列処理プログラム。
- プロセッサの起動又は停止に加えて、プロセッサの休止又は復帰の要求を受け付け、前記OSのデバイスを制御することにより、要求されたプロセッサの休止又は復帰を行うと共に、
前記休止又は復帰の要求を受けたプロセッサが、前記第1のプロセッサ群からの通知に基づいて前記休止又は復帰のために必要な処理を行うことを特徴とする請求項18から請求項28の何れか1項に記載の並列処理プログラム。 - プロセッサの起動又は停止に加えて、プロセッサの電源電圧又はクロック周波数の変更要求を受け付け、前記OSのデバイスを制御することにより、要求されたプロセッサの電源電圧又はクロック周波数の変更を行うと共に、
前記電源電圧又はクロック周波数の変更を受けたプロセッサが、前記第1のプロセッサ群からの通知に基づいて前記電源電圧又はクロック周波数の変更のために必要な処理を行うことを特徴とする請求項18から請求項29の何れか1項に記載の並列処理プログラム。 - 前記OSがシングルプロセッサ向けOSであることを特徴とする請求項1から請求項16の何れか1項に記載の並列処理システム。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003149859A JP4196333B2 (ja) | 2003-05-27 | 2003-05-27 | 並列処理システム及び並列処理プログラム |
KR1020040037473A KR100708952B1 (ko) | 2003-05-27 | 2004-05-25 | 병렬 처리 시스템, 병렬 처리 프로그램을 기록하는 컴퓨터 판독가능한 기록 매체 및 병렬 처리 방법 |
US10/853,656 US7325148B2 (en) | 2003-05-27 | 2004-05-26 | Power supply management system in parallel processing system by OS for single processors and power supply management program therefor |
GB0411814A GB2402519B (en) | 2003-05-27 | 2004-05-26 | Power supply management system and related program therefor |
CNB2004100476211A CN100485583C (zh) | 2003-05-27 | 2004-05-27 | 并行处理系统中的电源管理系统及电源管理程序 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003149859A JP4196333B2 (ja) | 2003-05-27 | 2003-05-27 | 並列処理システム及び並列処理プログラム |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2004355153A JP2004355153A (ja) | 2004-12-16 |
JP2004355153A5 JP2004355153A5 (ja) | 2006-03-23 |
JP4196333B2 true JP4196333B2 (ja) | 2008-12-17 |
Family
ID=32677674
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003149859A Expired - Fee Related JP4196333B2 (ja) | 2003-05-27 | 2003-05-27 | 並列処理システム及び並列処理プログラム |
Country Status (5)
Country | Link |
---|---|
US (1) | US7325148B2 (ja) |
JP (1) | JP4196333B2 (ja) |
KR (1) | KR100708952B1 (ja) |
CN (1) | CN100485583C (ja) |
GB (1) | GB2402519B (ja) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4051703B2 (ja) * | 2003-03-31 | 2008-02-27 | 日本電気株式会社 | シングルプロセッサ向けosによる並列処理システム、並列処理プログラム |
JP4062441B2 (ja) * | 2003-07-18 | 2008-03-19 | 日本電気株式会社 | 並列処理システム及び並列処理プログラム |
US7398403B2 (en) * | 2004-07-01 | 2008-07-08 | Matsushita Electric Industrial Co., Ltd. | Multiprocessor control apparatus, control method thereof, and integrated circuit |
US8020141B2 (en) | 2004-12-06 | 2011-09-13 | Microsoft Corporation | Operating-system process construction |
US8849968B2 (en) | 2005-06-20 | 2014-09-30 | Microsoft Corporation | Secure and stable hosting of third-party extensions to web services |
US20060294401A1 (en) * | 2005-06-24 | 2006-12-28 | Dell Products L.P. | Power management of multiple processors |
US8074231B2 (en) | 2005-10-26 | 2011-12-06 | Microsoft Corporation | Configuration of isolated extensions and device drivers |
US7778822B2 (en) * | 2006-05-19 | 2010-08-17 | Sony Ericsson Mobile Communications Ab | Allocating audio processing among a plurality of processing units with a global synchronization pulse |
US7739528B2 (en) * | 2006-06-09 | 2010-06-15 | Broadcom Corporation | Method for managing and controlling the low power modes for an integrated circuit device |
US8032898B2 (en) * | 2006-06-30 | 2011-10-04 | Microsoft Corporation | Kernel interface with categorized kernel objects |
JP4748057B2 (ja) * | 2006-12-28 | 2011-08-17 | ソニー株式会社 | 情報処理装置、起動方法、およびプログラム |
US20080244507A1 (en) * | 2007-03-30 | 2008-10-02 | Microsoft Corporation | Homogeneous Programming For Heterogeneous Multiprocessor Systems |
US8789063B2 (en) | 2007-03-30 | 2014-07-22 | Microsoft Corporation | Master and subordinate operating system kernels for heterogeneous multiprocessor systems |
US8086885B2 (en) * | 2007-12-14 | 2011-12-27 | Nokia Corporation | Runtime control of system performance |
US8171321B2 (en) * | 2007-12-26 | 2012-05-01 | Intel Corporation | Method and apparatus for cost and power efficient, scalable operating system independent services |
US7984317B2 (en) * | 2008-03-24 | 2011-07-19 | Apple Inc. | Hardware-based power management of functional blocks |
JP2009266178A (ja) * | 2008-04-30 | 2009-11-12 | Fujitsu Ltd | 中継装置および中継システム |
JP4934642B2 (ja) * | 2008-06-11 | 2012-05-16 | 株式会社日立製作所 | 計算機システム |
JP4868012B2 (ja) * | 2009-03-09 | 2012-02-01 | 日本電気株式会社 | コンピュータシステム、コンピュータシステムの制御方法、及びプログラム |
JP2011086061A (ja) * | 2009-10-14 | 2011-04-28 | Mitsubishi Electric Corp | 並列信号処理装置 |
US9501705B2 (en) | 2009-12-15 | 2016-11-22 | Micron Technology, Inc. | Methods and apparatuses for reducing power consumption in a pattern recognition processor |
KR101155202B1 (ko) | 2009-12-24 | 2012-06-13 | 포항공과대학교 산학협력단 | 멀티 코어 프로세서의 전력 관리 방법, 멀티 코어 프로세서의 전력 관리 방법이 기록된 기록매체 및 이를 실행하는 멀티 코어 프로세서 시스템 |
JP2011170709A (ja) * | 2010-02-19 | 2011-09-01 | Ricoh Co Ltd | ネットワーク制御装置、画像形成装置、画像形成システム、省エネ制御方法、及び省エネ制御プログラム |
WO2012060816A1 (en) * | 2010-11-01 | 2012-05-10 | Hewlett-Packard Development Company, L.P. | Multi-processor computer systems and methods |
US8862905B2 (en) * | 2011-02-17 | 2014-10-14 | Oracle International Corporation | Collecting and analysing telemetry data to dynamically cap power and temperature of a computer system by specifying virtual duty cycles for processes executing on a processor |
JPWO2012120654A1 (ja) * | 2011-03-08 | 2014-07-07 | 富士通株式会社 | タスクスケジューリング方法およびマルチコアシステム |
US8972763B2 (en) * | 2011-12-05 | 2015-03-03 | Intel Corporation | Method, apparatus, and system for energy efficiency and energy conservation including determining an optimal power state of the apparatus based on residency time of non-core domains in a power saving state |
KR101655137B1 (ko) * | 2012-02-04 | 2016-09-07 | 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 | 칩 멀티프로세서에서 코어-수준 동적 전압과 주파수 스케일링 |
WO2013117225A1 (en) * | 2012-02-09 | 2013-08-15 | Telefonaktiebolaget L M Ericsson (Publ) | Distributed mechanism for minimizing resource consumption |
JP6380261B2 (ja) | 2015-06-29 | 2018-08-29 | 京セラドキュメントソリューションズ株式会社 | 電子機器および給電制御プログラム |
CN110312995B (zh) * | 2017-04-19 | 2022-12-16 | Oppo广东移动通信有限公司 | 应用程序加速启动方法、装置及终端 |
US10528118B2 (en) * | 2017-04-21 | 2020-01-07 | Intel Corporation | Dynamically power on/off register files during execution |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2570852B1 (fr) * | 1984-09-21 | 1989-12-15 | Trace | Reseau d'ordinateurs pilotes |
JPH0778785B2 (ja) * | 1986-03-29 | 1995-08-23 | 株式会社東芝 | プロセッサ選択方法 |
US5142684A (en) | 1989-06-23 | 1992-08-25 | Hand Held Products, Inc. | Power conservation in microprocessor controlled devices |
JP2769367B2 (ja) | 1989-09-28 | 1998-06-25 | 株式会社日立製作所 | マルチプロセッサスケジューリング方法 |
JP2831083B2 (ja) | 1990-03-08 | 1998-12-02 | 株式会社日立製作所 | マルチプロセッサシステムおよび割り込み制御装置 |
JPH07219913A (ja) * | 1994-01-28 | 1995-08-18 | Fujitsu Ltd | マルチプロセッサシステムの制御方法及び装置 |
KR100326156B1 (ko) * | 1995-04-13 | 2002-06-29 | 윤종용 | 듀얼프로세서간인터페이스장치 |
US5940785A (en) * | 1996-04-29 | 1999-08-17 | International Business Machines Corporation | Performance-temperature optimization by cooperatively varying the voltage and frequency of a circuit |
JPH1027043A (ja) | 1996-07-09 | 1998-01-27 | I S A:Kk | ネットワーク機能を有する起動停止制御装置 |
US5790817A (en) * | 1996-09-25 | 1998-08-04 | Advanced Micro Devices, Inc. | Configurable digital wireless and wired communications system architecture for implementing baseband functionality |
KR19980027320A (ko) * | 1996-10-15 | 1998-07-15 | 김광호 | 멀티 프로세서 컴퓨터 시스템 |
US6192391B1 (en) * | 1997-05-30 | 2001-02-20 | Nec Corporation | Process stop method and apparatus for a distributed memory multi-processor system |
KR100258080B1 (ko) * | 1997-12-17 | 2000-06-01 | 이계철 | 입출력 동작 비교에 의한 이중화 제어장치 |
JPH11202988A (ja) | 1998-01-13 | 1999-07-30 | Hitachi Ltd | システム消費電力制御方法 |
US6141762A (en) * | 1998-08-03 | 2000-10-31 | Nicol; Christopher J. | Power reduction in a multiprocessor digital signal processor based on processor load |
JP2001109729A (ja) * | 1999-10-12 | 2001-04-20 | Nec Corp | マルチプロセッサシステムにおける消費電力制御装置および方法 |
JP2002099433A (ja) | 2000-09-22 | 2002-04-05 | Sony Corp | 演算処理システム及び演算処理制御方法、タスク管理システム及びタスク管理方法、並びに記憶媒体 |
US6993571B2 (en) * | 2001-08-16 | 2006-01-31 | International Business Machines Corporation | Power conservation in a server cluster |
JP2003058515A (ja) | 2001-08-21 | 2003-02-28 | Nippon Telegr & Teleph Corp <Ntt> | プロセッサ間コマンド処理装置、疎結合マルチプロセッサ装置およびコマンド処理方法 |
US7065641B2 (en) * | 2002-06-13 | 2006-06-20 | Intel Corporation | Weighted processor selection apparatus and method for use in multiprocessor systems |
-
2003
- 2003-05-27 JP JP2003149859A patent/JP4196333B2/ja not_active Expired - Fee Related
-
2004
- 2004-05-25 KR KR1020040037473A patent/KR100708952B1/ko not_active IP Right Cessation
- 2004-05-26 US US10/853,656 patent/US7325148B2/en active Active
- 2004-05-26 GB GB0411814A patent/GB2402519B/en not_active Expired - Fee Related
- 2004-05-27 CN CNB2004100476211A patent/CN100485583C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
GB2402519B (en) | 2006-04-26 |
CN1573656A (zh) | 2005-02-02 |
US20040268171A1 (en) | 2004-12-30 |
US7325148B2 (en) | 2008-01-29 |
CN100485583C (zh) | 2009-05-06 |
GB0411814D0 (en) | 2004-06-30 |
GB2402519A (en) | 2004-12-08 |
KR20040102335A (ko) | 2004-12-04 |
JP2004355153A (ja) | 2004-12-16 |
KR100708952B1 (ko) | 2007-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4196333B2 (ja) | 並列処理システム及び並列処理プログラム | |
JP4051703B2 (ja) | シングルプロセッサ向けosによる並列処理システム、並列処理プログラム | |
JP4062441B2 (ja) | 並列処理システム及び並列処理プログラム | |
US8443377B2 (en) | Parallel processing system running an OS for single processors and method thereof | |
EP2169514B1 (en) | Methods and systems to perform a computer task in a reduced power consumption state | |
KR101551321B1 (ko) | 휴대용 컴퓨팅 디바이스에서 요청들을 스케쥴링하기 위한 방법 및 시스템 | |
JP2000330806A (ja) | 計算機システム | |
JP3250729B2 (ja) | プログラム実行装置及びそのプロセス移動方法並びにプロセス移動制御プログラムを格納した記憶媒体 | |
US20110265093A1 (en) | Computer System and Program Product | |
JP2013516711A (ja) | 電子デバイスにおける電力を制御するシステムおよび方法 | |
JP2769118B2 (ja) | 並列処理における資源割振り同期化方法およびシステム | |
JP2003162515A (ja) | クラスタシステム | |
JP3969308B2 (ja) | シングルプロセッサ向けosによる並列処理システム | |
US8799903B1 (en) | Systems and methods for exchanging runtime functionalities between software stacks | |
WO2023206693A1 (zh) | 系统休眠方法及装置、系统唤醒方法及装置 | |
WO2003034657A2 (en) | Scheme for dynamic process network reconfiguration | |
JPS603027A (ja) | コンピユ−タ処理システムにおける資源管理方式 | |
GB2434008A (en) | Inter-processor communication in a parallel processing system running an OS for single processors | |
JPH0654488B2 (ja) | プロセツサ | |
JP2001092681A (ja) | ディスク共有システムおよびディスクデータ共有方法 | |
JP2000235553A (ja) | マルチプロセッサシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041115 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060208 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080129 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080219 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080421 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080619 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080818 |
|
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: 20080905 |
|
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: 20080918 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111010 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4196333 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121010 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131010 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |