WO2007081002A1 - データ処理システムおよびデータ処理方法 - Google Patents

データ処理システムおよびデータ処理方法 Download PDF

Info

Publication number
WO2007081002A1
WO2007081002A1 PCT/JP2007/050412 JP2007050412W WO2007081002A1 WO 2007081002 A1 WO2007081002 A1 WO 2007081002A1 JP 2007050412 W JP2007050412 W JP 2007050412W WO 2007081002 A1 WO2007081002 A1 WO 2007081002A1
Authority
WO
WIPO (PCT)
Prior art keywords
processing
unit
data processing
spu
assigned
Prior art date
Application number
PCT/JP2007/050412
Other languages
English (en)
French (fr)
Inventor
Yasuhiko Yokote
Hirotoshi Maegawa
Noriyuki Murata
Original Assignee
Sony Computer Entertainment Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Computer Entertainment Inc. filed Critical Sony Computer Entertainment Inc.
Priority to US12/089,315 priority Critical patent/US9311156B2/en
Priority to EP07706746.0A priority patent/EP1993038B1/en
Priority to CN2007800013955A priority patent/CN101356503B/zh
Publication of WO2007081002A1 publication Critical patent/WO2007081002A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Definitions

  • the present invention relates to a technology for executing a computer program by distributing processing among a plurality of computing resources.
  • the present invention has been made in view of such problems, and its main object is to provide a technique for easily creating a computer program for distributing processing to various computing resources on a network. To provide.
  • One aspect of the present invention relates to a data processing system that causes a plurality of control units connected to each other via a communication line to distribute processing and execute a computer program.
  • data processing is divided into a plurality of unit processes with reference to script code in which the content of the data processing is described, and each unit process is allocated to a plurality of control units.
  • the control unit includes a main control unit that controls the control unit as a whole, and a plurality of sub control units that execute processing assigned by the main control unit.
  • the main control unit assigns a part of the unit processing to the sub control unit, and each sub control unit executes the assigned processing.
  • a process of decomposing data processing into unit processing with reference to script code and further assigning unit processing may be executed by any control unit. Or, an apparatus for performing such processing may be separately provided.
  • the script code may be written as a document file structured by tags like XML, or may be written by a script language such as Perl or JavaScript (Java is a registered trademark).
  • the communication line may be a communication network such as the Internet or a LAN, or may be a data transmission / reception path such as a bus connecting a plurality of control units.
  • Another aspect of the present invention relates to a data processing system in which processing is distributed to a plurality of execution subjects to execute a computer program.
  • This system breaks down data processing into a plurality of unit processes with reference to script code in which the contents of data processing are described, and assigns each unit process to a plurality of execution subjects. Then, each execution entity executes the assigned processing.
  • a plurality of execution subjects may be processors contained in one MPU.
  • the unit process extracted from the script and code may be assigned to a plurality of execution subjects in a single MPU.
  • unit processing may be distributed to more execution subjects included in a plurality of MPUs.
  • FIG. 1 schematically shows a configuration of a resource management system.
  • FIG. 2 is a diagram illustrating the hardware configuration of a user terminal.
  • FIG. 3 is a schematic diagram for explaining an execution method of an application program in a resource management system.
  • FIG. 4 is a conceptual diagram showing a hierarchical structure of distributed processing in the present embodiment.
  • FIG. 5 is a schematic diagram for explaining how processing described in application code is distributed to a plurality of processing subjects.
  • FIG. 6 is a schematic diagram for explaining an interface for linking processing among element programs.
  • FIG. 7 is a diagram showing an example of an element program.
  • FIG. 8 A diagram showing the continuation of the element program shown in FIG.
  • FIG. 9 is a diagram showing interface code.
  • Fig. 10 is a schematic view showing simulation of fish movement by computer graphics.
  • FIG. 11 is a time chart for illustrating linkage of processing between SPUs.
  • FIG. 12 (a) is a diagram showing an example of a program used in this simulation.
  • FIG. 12 (b) is a diagram showing the continuation of the program shown in FIG. 12 (a).
  • processors of other computers connected to the computer which are not only processors within a single computer are also used.
  • FIG. 1 schematically shows the configuration of a resource management system 10.
  • the resource management system 10 is configured by various computers such as the Internet 14, the LAN 12, and the user terminal 16.
  • Each user terminal 16 is connected directly to the Internet 14 or via a LAN 12 such as a home network or a corporate network. May be connected to the Internet 14.
  • a network server 20 for managing and controlling the use and provision of resources by the user terminal 16.
  • the LAN 12 may be connected to a local server 18 such as a home server for controlling the use of resources by user terminals 16 connected in the LAN 12.
  • Each user terminal 16 may use resources in the LAN 12 or may use resources between the user terminals 16 via the Internet 14.
  • the user terminal 16 may use the resources of the local server 18.
  • hardware resources are shared among a plurality of user terminals 16 and local servers 18 via the Internet 14 or LAN 12 and processing is performed independently by achieving distributed processing using such resources in a complementary manner. The overall processing capacity is improved rather than
  • One user terminal 16 is equipped with one micro processing unit (MPU: Micro Process Unit), and another user terminal 16 is equipped with two MPUs. Also, the local server 18 has a power of four MPUs.
  • MPUs incorporated in various computers function as control units, and share data processing as a whole little by little.
  • FIG. 2 exemplifies the hardware configuration of the user terminal 16.
  • the user terminal 16 includes a micro processing unit (MPU) 22, a graphics processing unit (GPU) 40, a main memory 42, an auxiliary storage device (HDD) 44, and a network control unit 46, which are connected via a cain bus 38. Be done.
  • the network control unit 46 transmits / receives data to / from another user terminal 16 via the LAN 12 or the Internet 14.
  • the MPU 22 is an asymmetric multiprocessor unit, and one main processing unit
  • the PU 24 and SPU are included.
  • the PU and SPU are connected to one another via the internal bus 36 of the MPU 22.
  • the PU 24 is a unit as a main control device that controls the SS and each SPU 30, and includes a processor 26 and a local memory 28.
  • the local memory 28 is, for example, a cache memory.
  • the SPU 30 is a unit as a sub-control device that performs product-sum calculations and the like, and includes a processor 32 and a local memory 34.
  • the program and data read from the main memory 42 are written to the local memory 34 and the processor 32 is executed.
  • the SPU 30 executes processing such as image processing and data conversion processing under the control of the PU 24.
  • the power with which any SPU 30 executes processing, the processing content, and the scheduled execution time are managed by the PU 24.
  • a function as S is mainly executed by the PU 24.
  • a part of the function is delegated to each SPU 30.
  • each SPU 30 implements very basic functions such as memory access, interrupts, and inter-process communication.
  • the PU 24 performs control centering on the allocation of processing to each SPU 30, and the SPU 30 is a program execution subject.
  • the OS is activated in the MPU 22
  • the execution thread is also activated in each SPU 30, and each SPU 30 waits for the PU 24 power processing to be abused.
  • the SPU 30 loads a necessary program (hereinafter referred to as "element program") from the main memory 42 or the like into the local memory 34 and starts the processing.
  • element program a necessary program
  • robot A and robot B respectively simulate walking.
  • the PU 24 instructs the SPU 30a in the standby state to execute the walking process of the robot A.
  • the element program for the walking process of the robot is prepared in the main memory 42 in an executable form.
  • the SPU 30a loads this element program into the local memory 34 and starts processing.
  • the PU 24 instructs another SPU 30 b to execute the walking process of the robot B.
  • the SPU 30b loads a predetermined element program into the low-power memory 34 and starts processing.
  • the element program executed by the SPU 30a and the element program executed by the SPU 30b can be executed in parallel in time, the respective element programs will be executed simultaneously by each SPU 30.
  • the SPU 30 stops the execution of the element program after 3 minutes and returns to the standby state again.
  • the PU 24 can allocate another process to this SPU 30.
  • FIG. 3 shows execution of an application program in the resource management system 10 It is a schematic diagram for demonstrating a method.
  • the processing content to be executed by the resource management system 10 is described in an XML file.
  • application code such a description that indicates the execution content of an application program is called "application code”.
  • the application code may be written in a predetermined tag set of XML or may be written in another scripting language.
  • a predetermined user terminal 16 is provided with a program (hereinafter, referred to as “main program”) for interpreting such application code in an interpreter format.
  • the MPU 22 of the user terminal 16 executes the main program, interprets the given application code, and decomposes the process shown in the application code into a plurality of processes.
  • the application code shown in FIG. 3 has two processes: “cl” and “name”, “component” and “name”, “c2” and “name”, and “c2” and “name”. Including the
  • the main program assigns each process to the MPU 22 of the user terminal 16a and the MPU 22 of the user terminal 16b.
  • the process is harmed IJ assigned MPU 22 acquires a program indicating the specific process content of the “component” process.
  • Such a program may be prepared in advance in the HDD 44 of each user terminal 16 or may be downloaded from a predetermined server apparatus via the Internet 14.
  • the MPU 22 assigned processing by the main program Recognize the specific content of the assigned process.
  • a program executed by the MPU 22 will be referred to as a “unit program”.
  • the MPU 22 checks whether the unit program for the “component” processing thus acquired can be further divided. For example, if this unit program is a multi-threaded program, the PU 24 may allocate processing of each thread to the SPU 30.
  • the SPU 30 acquires an element program for executing the assigned processing, and executes the harmful IJ assigned processing according to the instruction from the PU 24. For example, if "componet” is a process that means “robot's walking process", then this process also calculates "robot's walking path calculation process" or "robot's hand movement". It may be possible to break it down into smaller processing units, as in The PU 24 harmonizes the processing thus subdivided to the SPU 30.
  • the PU 24 may delegate part of the execution of the unit program to the PU 24 of another MPU 22 as long as only the SPU 30 under control.
  • the processing contents described in the original application code are sequentially subdivided, and the processing entities are also distributed to the plurality of MPUs 22 and, consequently, the plurality of SPUs 30.
  • processing as defined in application code as "component” may not necessarily correspond to the unit program.
  • “component” processing itself defined by tags in application code may correspond to an element program that is supposed to be executed in SPU 30.
  • application code is described as a combination of processing (size) that can be processed by SPU 30, it is
  • FIG. 4 is a conceptual diagram showing a hierarchical structure of distributed processing in the present embodiment.
  • Models is a calculation model that is the basis for creating application code.
  • processing units that can be used by many applications are defined, such as componet>.
  • the creator of the application code will design the processing as a whole while giving necessary parameters as attribute values etc. according to the functions and rules provided by “Models”.
  • various unit programs prepared in advance are Therefore, since the application code is automatically decomposed and distributed, the creator of the application code can describe the processing contents with little awareness of which MPU 22 and which SPU 30 will be the main processing agent of the created application code.
  • the part shown as "overall control” is a layer corresponding to the application itself. That is, this layer is the layer that defines the processing content, and the layer that is actually responsible for the processing is the layer indicated as “partial control”.
  • the execution power of application code defined in the "overall control” layer The MPUs 22 and the SPUs 30 shown in the "partial control” layer.
  • FIG. 5 is a schematic diagram for explaining how processing described in application code is distributed to a plurality of processing subjects.
  • processing A is dispatched to a certain MPU 22a by the main program.
  • the PU 24a of the MPU 22a loads a unit program for executing the process A into the main memory 42 of the MPU 22a.
  • this unit program is a program that executes three processes of process Al, process A2 and process A3 in parallel.
  • the PU 24a distributes these three processes to the SPU 30 under control. It is assumed that each of the processing A2 and the processing A3 can be processed by one SPU 30. Here, the PU 24a harms the SPU 30 under control of the processing A2 and the processing A3. The SPU 30 executes an element program corresponding to the assigned processing.
  • the processing A1 is assumed to be processing realized by parallel execution of two types of processing, processing Al_l and processing Al_2.
  • the PU 24a may distribute the processing A1 to the SP U30 under control, but may transfer it to another MPU 22b.
  • the PU 24b of the MPU 22b loads a program for executing the process A1 into the main memory 42.
  • the PU 24b may receive this program from the MPU 22a or may obtain it from another device.
  • the PU 24b harms the processing A1-1 and the processing A1-2 to the SPU 30 under control.
  • FIG. 6 is a schematic diagram for describing an interface for linking processing among element programs. Processing described as application code is broken down into multiple unit programs. The PU 24 of the MPU 22 further assigns an element program constituting this unit program to each of the SPUs 30 ij.
  • the component programs executed by each SPU 30 can exchange data with each other.
  • component program of the SPU 30a is condition-controlled according to the processing state of the component program executed by the SPU 30b.
  • the element program of the SPU 30a needs to inquire the processing state of the element program of SPU3 Ob. Therefore, component programs provide an interface for external access to their processing as a method.
  • This interface can be divided into "private open interface” and "full public interface".
  • the SPUs 30 belonging to the same MPU 22 basically execute the processing respectively assigned to them as separate threads in the same process space.
  • the "restricted open interface” is an interface that assumes inter-thread communication between such element programs.
  • the SPUs 30 belonging to different MPUs 22 belong to different process spaces.
  • the "full public interface” is an interface that assumes interprocess communication between such component programs. A plurality of component programs can be linked and operated via such an interface.
  • communication is performed by message passing in the form of method call.
  • the processing can also be assigned to the SPUs 30 belonging to other MPUs 22 by transmitting a request in the same XML format as the completely public interface.
  • FIG. 7 is a diagram showing an example of an element program.
  • the “MyModulel” class is a class instantiated in an SPU 30 and is a class that inherits from the “SpuModule” class.
  • the "SpuModule” class is a class that provides basic functions to be provided as element programs.
  • the "MyModulel” class is an element program to be executed by the SPU 30.
  • the method "methodl” whose access right is specified as "PUBLIC” is a limited public interface.
  • the method “method2” designated as "PROTECTED” as the access right is a completely public interface.
  • the method 2 function of the MyModulel class executes processing while using the interface of an element program executed in another SPU 30.
  • the method2 function first gets a proxy object of class MyModule2.
  • This MyModule2 class is a class instantiated by another SPU 30 belonging to the same MPU 22.
  • classes that are inherited from the SpuModule class generate proxy code to access their own objects upon instantiation. This proxy code is held in the main memory 42, and the execution of this proxy code is controlled by the PU 24.
  • the PU 24 centrally manages what kind of element program is being executed by the SPU 30 under control. Therefore, the method2 function of the MyModulel class can obtain a proxy object for accessing the MyModule2 class through the getModuleProxy function provided by the execution program on the PU 24.
  • the proxy object obtained in this way can be mediated by m2proxy so that the method2 function can call methods such as asyncmet hod, syncmethod and delayedmethod provided by the MyModule2 class.
  • asyncmethod is an asynchronous type call
  • syncmethod is a synchronous type call
  • delayedme thod is a call for delayed evaluation.
  • FIG. 8 is a diagram showing the continuation of the element program shown in FIG.
  • the method 3 function obtains the proxy object progproxy for accessing the unit program MyProgram.
  • the PU 24 notifies other MPUs 22 of the fully public interface which can be accessed by other MPUs 22.
  • the MPU 22 exchanges information related to such a fully public interface with one another.
  • Information on the completely public interface may be centrally managed by a predetermined user terminal 16 or may be managed in such a manner that the user terminals 16 exchange information.
  • the MPU 22a executing the process A converts the unit program corresponding to the process A into an executable format
  • the fully public interface of each element program included in the unit program The information is notified to the other MPU 22.
  • the method3 function of MyModulel class can obtain a proxy object for accessing another unit program called MyProgram by querying PU 24 that manages itself. Ru.
  • methods such as asyncmethod, which is the fully public interface of MyProgram, can be called.
  • method3 executes the executeScript function, specifying an XML file named "ScriptA" and a script name.
  • the XML file "ScriptA” describes the logic for executing a predetermined process.
  • Such an XML file is called "interface code".
  • the typical process executed among multiple component programs can be made compact by integrating the interface code as interface code.
  • the interface code may be centrally managed by a predetermined user terminal 16 as in the case of the information on the fully public interface, or may be managed in such a manner that the user terminals 16 exchange information. .
  • FIG. 9 shows interface code
  • methodl which is a fully public interface of a unit program called MyProgram
  • method2 is instructed to execute without an argument.
  • the ⁇ concurrent> tag indicates that these functions can be executed concurrently.
  • method3 and method4 are instructed by the sequence> tag to execute method4 after execution of method3 is performed. Execution of the executeScript function in Fig. 8 executes the processing described in this interface code, and as a result, the processing of other component programs can be controlled from SpuModu lei.
  • Interface code or application code is described by a predetermined tag set defined by Models in FIG.
  • FIG. 10 is a schematic view showing simulation of movement of fish by computer graphics.
  • a simulation is assumed in which seven fish from fish 52a to 52 g swim according to a predetermined pattern.
  • Tank 50 Box A to Box D Up to 4 boxes are processed separately.
  • the SPU 30a calculates the movement of the fish in box A.
  • SPU 30 b is responsible for box B
  • SPU 30 c is for box C
  • SPU 30 d is responsible for box D.
  • the SPU 30 e moves the light source 54 outside the water tank 50. When the fish 52 is illuminated by the light source 54, the movement is assumed to change.
  • FIG. 11 is a time chart for illustrating linkage of processing among the SPUs 30.
  • the SPU 30c will calculate the movement of the fish 52 taking into consideration the influence of the light source.
  • FIG. 12 (a) and FIG. 12 (b) show an example of a program used in this simulation.
  • initial placement processing part A enclosed by a dashed dotted line frame
  • simulation execution processing part B enclosed by a dashed dotted line frame
  • the ⁇ Sequence> tag is a tag indicating that the following processing, that is, the initial placement processing A and the simulation execution processing B are performed sequentially.
  • simulation processing for each of the boxes A to D and the light source 54 in FIG. 10 is assigned to the SPUs 30a to 30e, and the assigned simulation The initialization for executing the process is performed in parallel.
  • the Concurrent> tag shown in the figure is a tag indicating that the processes shown in Aa to Al are to be executed in parallel.
  • each SPU 30 is given various values necessary for simulation execution, such as a program ID for simulating a box simulated by itself and a box adjacent thereto.
  • the simulation module B1 of light source movement is executed on the SPU 30e, and the simulation modules Ba to Bd in each box are concurrently executed on each SPU 30a to 30d based on the result of the light source simulation. Repeat as instructed by the Loop> tag.
  • the contents are analyzed by a predetermined routine of the main program and disassembled into each module, and each module is assigned to the usable SPU 30.
  • the main program is a program executed on any of the MPUs 22. If the number of program modules to be executed in parallel is greater than the number of available SPUs 30, the SPUs 30 may be used in a time division manner. Also, the main program may distribute program modules to each SPU 30 with reference to the degree of coupling between the SPUs 30 or the priority of the program modules.
  • processing content described in a structured document file such as XML is distributed by a plurality of PUs 24, and processing is allocated to a large number of SPUs 30. . Therefore, it is possible to provide a suitable scheme for distributing processing to a plurality of computational resources while reducing the burden of creating application code.
  • the processing may be distributed to each MPU 22 when multiple MPUs 22 can be used, and each processing may be time-division processed when only one MPU 22 can be used.
  • Each PU 24 cooperates in processing decomposition into unit programs and element programs, registration of the interface of each program, assignment of each program, execution control, registration / execution search of each program execution subject, etc. . For this reason, the PUs 24 of each MPU 22 cooperate to execute processing distribution, and the SPUs 30 under their control cooperate to execute actual processing.
  • the functions of the processing decomposition unit and the distribution unit described in the claims are realized by a predetermined routine of a main program executed on any of the MPUs 22.
  • the MPU 22 for providing the functions of the processing disassembly unit and the distribution unit may be any MPU 22 mounted on a device included in the resource management system 10, but it is a dedicated device for executing the main program. It may be mounted on
  • the present invention is applicable to distributed processing computing.

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)

Abstract

 実行環境の多様性まで考慮してタスク配分を制御するアプリケーションプログラムを作成するときの開発負担が大きい。  複数の実行主体としてのSPUに処理を分散させてコンピュータプログラムを実行するためのシステムにおいて、データ処理の内容が記述されたスクリプトコードを参照して、データ処理を複数の単位処理に分解し、複数のSPUに各単位処理を割り当てる。そして、各SPUが割り当てられた処理を実行することにより、全体としてのコンピュータプログラムが実行される。

Description

明 細 書
データ処理システムおよびデータ処理方法
技術分野
[0001] 本発明は、複数の計算資源に処理を分散させてコンピュータプログラムを実行する ための技術、に関する。
背景技術
[0002] コンピュータゲームやウェブ検索ソフトをはじめとするソフトウェアの高機能化は、ハ 一ドウエアに対して大きな処理負荷をかけるようになってきている。このような状況に 対処するためには、演算処理自体の高速化が必要であることはもちろんである力 S、複 数の処理装置間でタスクを好適に分散することも重要である。
発明の開示
発明が解決しょうとする課題
[0003] しかし、一口にタスクを分散させるといっても、システム全体として利用できる計算資 源は多様である。このような実行環境の多様性まで考慮してタスク配分を制御するァ プリケーシヨンプログラムを作成するとすれば、その開発負担は、シングルプロセッサ 上での動作を前提としたアプリケーションプログラムとは比べものにならない。
[0004] 本発明は、このような課題に鑑みてなされたものであり、その主たる目的は、ネットヮ ーク上の多様な計算資源に処理を分散させるコンピュータプログラムを簡易に作成 するための技術、を提供することにある。
課題を解決するための手段
[0005] 本発明のある態様は、通信回線を介して互いに接続された複数の制御ユニットに 処理を分散させてコンピュータプログラムを実行させるデータ処理システムに関する。 このシステムでは、データ処理の内容が記述されたスクリプトコードを参照して、デ ータ処理を複数の単位処理に分解し、複数の制御ユニットに各単位処理を割り当て る。
制御ユニットは、制御ユニットを統括的に制御する主制御装置と、主制御装置によ り割り当てられた処理を実行する複数の副制御装置を含む。 主制御装置は単位処理の一部を副制御装置に割り当て、各副制御装置が割り当 てられた処理を実行する。
[0006] スクリプトコードを参照してデータ処理を単位処理に分解し、更に単位処理を割り当 てる処理は、いずれかの制御ユニットによって実行されてもよレ、。あるいは、このような 処理を実行するための装置が別途設けられてもよレ、。スクリプトコードは、 XMLのよう にタグによって構造化される文書ファイルとして記述されてもょレ、し、 Perlや JavaScript (Javaは登録商標)などのスクリプト言語によって記述されてもよい。
通信回線は、インターネットや LANのような通信ネットワークであってもよレ、が、複 数の制御ユニットを接続するバスのようなデータ送受信経路であってもよい。
[0007] 本発明の別の態様は、複数の実行主体に処理を分散させてコンピュータプログラム を実行させるデータ処理システムに関する。
このシステムは、データ処理の内容が記述されたスクリプトコードを参照して、デー タ処理を複数の単位処理に分解し、複数の実行主体に各単位処理を割り当てる。そ して、各実行主体が割り当てられた処理を実行する。
このシステムにおいて、複数の実行主体は、 1つの MPUに内蔵されるプロセッサで あってもよい。そして、スクリプト一コード力ら抽出された単位処理は、単一の MPU内 の複数の実行主体に割り当てられてもよい。あるいは、複数の MPUに含まれている 更に多くの実行主体に対して、単位処理を分散してもよい。
[0008] なお、本発明を方法、装置、システム、記録媒体、コンピュータプログラムにより表現 したものもまた、本発明の態様として有効である。
発明の効果
[0009] 本発明によれば、ネットワーク上の多様な計算資源を利用する分散処理型コンビュ ータプログラムの作成負担を軽減できる。
図面の簡単な説明
[0010] [図 1]リソースマネジメントシステムの構成を模式的に示す図である。
[図 2]ユーザ端末のハードウェア構成を例示する図である。
[図 3]リソースマネジメントシステムにおけるアプリケーションプログラムの実行方法を 説明するための模式図である。 [図 4]本実施例における分散処理の階層構造を示す概念図である。
[図 5]アプリケーションコードに記述された処理が複数の処理主体に分散されていく 様子を説明するための模式図である。
[図 6]要素プログラム間において処理を連係させるためのインタフェースについて説 明するための模式図である。
[図 7]要素プログラムの一例を示す図である。
[図 8]図 7に示した要素プログラムの続きを示す図である。
[図 9]インタフェースコードを示す図である。
[図 10]コンピュータグラフィックスにより魚の動きをシミュレーションした様子を示す模 式図である。
[図 11]各 SPU間における処理の連係を説明するためのタイムチャートである。
[図 12(a)]本シミュレーションで使用されるプログラム例を示す図である。
[図 12(b)]図 12 (a)に示したプログラムの続きを示す図である。
符号の説明
[0011] 10 リソースマネジメントシステム、 12 LAN、 14 インターネット、 16 ユーザ 端末、 18 ローカルサーバ、 20 ネットワークサーバ、 22 MPU、 24 PU、 26 プロセッサ、 28 ローカルメモリ、 30 SPU、 32 プロセッサ、 34 ロー力 ルメモリ、 36 内部バス、 38 メインバス、 40 GPU、 42 メインメモリ、 44 HDD、 46 ネットワーク制御部、 50 水槽、 52 魚、 54 光源。
発明を実施するための最良の形態
[0012] 本実施例においては、単一コンピュータ内のプロセッサだけでなぐそのコンビユー タと接続された他のコンピュータのプロセッサも利用される。そのために、各コンビュ ータのハードウェア資源をネットワーク上で管理し、分散処理の割り当てやデータ受 け渡しを制御する仕組みを構築する。
[0013] 図 1は、リソースマネジメントシステム 10の構成を模式的に示す。
リソースマネジメントシステム 10は、インターネット 14、 LAN12、ユーザ端末 16など の各種コンピュータにより構成される。各ユーザ端末 16は、インターネット 14に直接 接続されている場合と、ホームネットワークや企業内ネットワークなどの LAN12を経 由してインターネット 14に接続されている場合がある。インターネット 14には、ユーザ 端末 16による資源の利用 ·提供を管理 ·制御するためのネットワークサーバ 20が接 続されている。 LAN 12には、 LAN12内に接続されたユーザ端末 16による資源の利 用'提供を管理'制御するホームサーバなどのローカルサーバ 18が接続されていて もよレ、。各ユーザ端末 16は、 LAN12内における資源を利用してもよいし、インター ネット 14を介してユーザ端末 16間で資源を利用 '提供しあってもよい。また、ユーザ 端末 16は、ローカルサーバ 18の資源を利用してもよレ、。このように、インターネット 14 や LAN12を介して複数のユーザ端末 16やローカルサーバ 18の間でハードウェア 資源を共有し、そうした資源を相補的に利用して分散処理を図ることにより、単独で 処理実行するよりも全体としての処理能力を向上させている。
[0014] あるユーザ端末 16は、 1つのマイクロプロセッシングユニット(MPU : Micro Processi ng Unit)を備え、別のユーザ端末 16は 2つの MPUを備える力もしれなレ、。また、ロー カルサーバ 18は、 4個の MPUを備える力もしれなレ、。本実施例におけるリソースマ ネジメントシステム 10においては、さまざまなコンピュータに内蔵される MPUが制御 ユニットとして機能し、全体としてのデータ処理を少しずつ分担することになる。
[0015] 図 2は、ユーザ端末 16のハードウェア構成を例示する。
ユーザ端末 16は、マイクロプロセッシングユニット(MPU) 22、グラフィックス処理ュ ニット(GPU) 40、メインメモリ 42、補助記憶装置(HDD) 44、ネットワーク制御部 46 を備え、それぞれカ インバス 38を介して接続される。ネットワーク制御部 46は、 LA N12またはインターネット 14を介して他のユーザ端末 16との間でデータを送受信す る。
[0016] MPU22は、非対称型のマルチプロセッサユニットであり、 1つのメイン処理ユニット
(PU) 24と複数のサブ処理ユニット(SPU) 30を有する。 PUや SPUは互いに MPU 22の内部バス 36を介して接続される。 PU24は、〇Sや各 SPU30を制御する主制 御装置としてのユニットであり、プロセッサ 26とローカルメモリ 28を含む。ローカルメモ リ 28は、たとえばキャッシュメモリである。 SPU30は、積和計算などを実行する副制 御装置としてのユニットであり、プロセッサ 32とローカルメモリ 34を含む。メインメモリ 4 2から読み出されたプログラムやデータがローカルメモリ 34に書き込まれてプロセッサ 32により実行される。 SPU30は、 PU24による制御の下で画像処理やデータ変換処 理などの処理を実行する。いずれの SPU30が処理を実行する力、処理内容および 実行予定時間は、 PU24により管理される。
[0017] 〇Sとしての機能は主として PU24によって実行されることになる力 その機能の一 部は各 SPU30に委譲される。たとえば、各 SPU30には、メモリアクセスや割り込み、 プロセス間通信等のごく基本的な機能が実装される。本実施例において、 PU24は、 各 SPU30への処理の割り振りを中心とした制御を行レ、、 SPU30がプログラムの実行 主体となる。 MPU22において OSが起動すると、各 SPU30でも実行スレッドが起動 され、各 SPU30は PU24力 処理を害 ijり当てられるのを待つ。 PU24からなんらかの 処理を指示されたときには、 SPU30はメインメモリ 42等から必要なプログラム(以下、 「要素プログラム」とよぶ)をローカルメモリ 34にロードして、処理を開始することになる
[0018] 一例として、ロボット Aとロボット Bがそれぞれ歩行する様子をシミュレーションする場 合を想定する。 PU24は、待機状態にある SPU30aに対して、ロボット Aの歩行処理 を実行するよう指示する。ロボットの歩行処理のための要素プログラムは、実行形式 にてメインメモリ 42に用意されている。 SPU30aは、この要素プログラムをローカルメ モリ 34にロードして、処理を開始する。一方、 PU24は、別の SPU30bに対して、ロボ ット Bの歩行処理の実行を指示する。 SPU30bも同じく、所定の要素プログラムをロー 力ノレメモリ 34にロードして、処理を開始する。ここで、 SPU30aが実行する要素プログ ラムと SPU30bが実行する要素プログラムが時間的に並行して実行可能であれば、 各 SPU30によってそれぞれの要素プログラムが同時実行されることになる。また、要 素プログラムの処理内容がロボットを 3分間だけ歩行させるものであれば、 SPU30は 3分経過後に要素プログラムの実行を停止させ、再び待機状態に戻る。待機状態に 戻されると、 PU24は別の処理をこの SPU30に割り当てることができる。 PU24、厳密 には、 PU24が実行する〇Sは、支配下にある各 SPU30の実行状態を監視している 。このようにして、 MPU22内における複数の計算資源、すなわち、 SPU30力適宜、 PU24によって割り当てられた処理を実行することになる。
[0019] 図 3は、リソースマネジメントシステム 10におけるアプリケーションプログラムの実行 方法を説明するための模式図である。
本実施例においては、リソースマネジメントシステム 10に実行させたい処理内容は 、 XMLファイルに記述される。以下、アプリケーションプログラムの実行内容を示すこ のような記述のことを「アプリケーションコード」とよぶ。アプリケーションコードは、 XM Lの所定のタグセットにて記述されてもよいし、他のスクリプト言語によって記述されて ちょい。
同図の場合、「cl」とレ、う名前の「component」とレ、う処理と、「c2」とレ、う名前の「comp onentjとレ、う処理を時間的に並行して実行するように記述されてレ、る。く parallel >と レ、うタグは、そのタグの要素として定義されている処理が時間的に並行して実行可能 である旨を示す。同様に、く component >というタグが示す処理がどのような処理内 容を意味する力もあらかじめ定義されている。く component >は、「人型のキャラクタ を歩行させる処理」かもしれないし、単に「音声を出力する処理」かもしれない。アプリ ケーシヨンコードを作成する段階では、タグに対応づけられた基本的な処理を組み合 わせるだけで、全体としての処理を記述できる。また、く parallel >タグのように、その 処理方法を記述することもできる。更に、各処理に要する MPU22や SPU30の数を 指定できてもよい。
[0020] 所定のユーザ端末 16には、このようなアプリケーションコードをインタプリタ形式に て解釈するためのプログラム(以下、「メインプログラム」とよぶ)が用意されている。こ のユーザ端末 16の MPU22は、メインプログラムを実行して、与えられたアプリケー シヨンコードを解釈し、アプリケーションコードに示される処理を複数の処理に分解す る。たとえば、図 3に示すアプリケーションコードは、「cl」とレ、う名前の「component」と レ、う処理と、「c2」とレ、う名前の「component」とレ、う処理の 2つの処理を含んでレ、る。
[0021] これら 2種類の処理は並列実行可能である。メインプログラムは、たとえば、ユーザ 端末 16aの MPU22と、ユーザ端末 16bの MPU22に各処理を害 ijり当てる。処理を 害 IJり当てられた MPU22は、「component」処理の具体的な処理内容を示すプロダラ ムを取得する。このようなプログラムは、各ユーザ端末 16の HDD44にあらかじめ用 意されていてもよいし、インターネット 14を介して、所定のサーバ装置からダウンロー ドしてきてもよい。こうして、メインプログラムによって処理を割り当てられた MPU22は 、割り当てられた処理の具体的内容を認識する。以下、 MPU22が実行するプロダラ ムのことを「単位プログラム」とよぶことにする。
[0022] MPU22は、こうして取得した「component」処理のための単位プログラムを、更に細 分化できるかを検查する。たとえば、この単位プログラムがマルチスレッドプログラム の場合、 PU24は、各スレッドの処理を SPU30に割り振ってもよレ、。 SPU30は、割り 当てられた処理を実行するための要素プログラムを取得し、 PU24からの指示に応じ て、害 IJり当てられた処理を実行する。たとえば、「componet」とレ、う処理が、「ロボットの 歩行処理」を意味するならば、この処理は、更に、「ロボットの歩行経路を計算する処 理」や「ロボットの手の動きを計算する処理」のように、小さな処理単位に分解できるか もしれない。 PU24は、このように細分化された処理を SPU30に害 ijり当てる。 PU24 は、支配下にある SPU30だけでなぐ別の MPU22の PU24に対して単位プロダラ ムの実行の一部を委譲してもよレ、。
このように、もともとのアプリケーションコードに記述されていた処理内容は順次細分 化され、その処理主体も、複数の MPU22、ひいては、複数の SPU30に分散されて レ、くことになる。
なお、アプリケーションコードにぉレ、て定義されてレ、る「component」とレ、う処理は、 必ずしも単位プログラムに対応するものでなくともよい。たとえば、アプリケーションコ ードにおいてタグにより定義される「component」処理自体力 SPU30において実行 されることを前提とした要素プログラムに対応してもよレ、。このように、 SPU30で処理 できるサイズ (粒度)の処理の組合せとして、アプリケーションコードを記述してもよレヽ
[0023] 図 4は、本実施例における分散処理の階層構造を示す概念図である。
ここで「Models」とあるのは、アプリケーションコードを作成するために基本となる計 算モデルである。たとえば、「Models」においては、さきほどのく componet >のように 、多くのアプリケーションで利用可能な処理単位が定義される。アプリケーションコー ドの作成者は、「Models」が提供する機能や規則にしたがって、必要なパラメータを属 性値などで与えながら、全体としての処理をデザインすることになる。あとは、この「Mo delsjにしたがって、あらかじめ用意されているさまざまな単位プログラムが MPU22に よって自動的に分解 '分散されるため、アプリケーションコードの作成者は、作成した アプリケーションコードの処理主体がどの MPU22、更には、どの SPU30となるかを ほとんど意識せずに処理内容を記述できる。
同図において、「全体制御」として示されている部分は、アプリケーションそのものに 対応したレイヤである。すなわち、このレイヤが、処理内容を定義するレイヤであり、 その処理を実際に担うのが「部分制御」として示されているレイヤである。 「全体制御」 レイヤで定義されるアプリケーションコードの実行主体力 「部分制御」レイヤで示さ れる MPU22群、ひいては、 SPU30群となる。
[0024] 図 5は、アプリケーションコードに記述された処理が複数の処理主体に分散されて レ、く様子を説明するための模式図である。
説明を簡単にするため、 XMLファイルには、処理 A、処理 Bおよび処理 Cという 3つ の処理が並行して実行されるようにアプリケーションコードが記述されているものとす る。メインプログラムによって、処理 Aはある MPU22aにディスパッチされる。 MPU2 2aの PU24aは、 MPU22aのメインメモリ 42に処理 Aを実行するための単位プログラ ムをロードする。この単位プログラムは、更に、処理 Al、処理 A2および処理 A3という 3つの処理を並行して実行するプログラムであるとする。
[0025] このとき、 PU24aは、これら 3つの処理を支配下の SPU30に分配する。処理 A2、 処理 A3は、それぞれ 1つの SPU30により処理可能であるとする。ここでは、 PU24a は、処理 A2および処理 A3を支配下の SPU30に害 ijり当てる。 SPU30は、割り当てら れた処理に対応する要素プログラムを実行する。
[0026] 処理 A1は、更に、処理 Al _ l、処理 Al _ 2の 2種類の処理を並列実行することに より実現される処理であるとする。このとき、 PU24aは、処理 A1を、支配下にある SP U30に分配してもよレ、が、別の MPU22bに委譲してもよレ、。 MPU22bの PU24bは 、処理 A1を実行するためのプログラムをメインメモリ 42にロードする。 PU24bは、こ のプログラムを MPU22aから受け取ってもよいし、他の装置から取得してもよレ、。 PU 24bは、処理 A1— 1と処理 A1— 2を、支配下にある SPU30に害 ijり当てる。
[0027] 図 6は、要素プログラム間において処理を連係させるためのインタフェースについて 説明するための模式図である。 アプリケーションコードとして記述された処理は、複数の単位プログラムに分解され る。 MPU22の PU24は、更に、この単位プログラムを構成する要素プログラムを各 S PU30に害 ijり当てる。
[0028] 各 SPU30で実行される要素プログラムは、互いに、データ送受することができる。
たとえば、 SPU30aの要素プログラムは、 SPU30bが実行する要素プログラムの処理 状態に応じて条件制御されるとする。このとき、 SPU30aの要素プログラムは、 SPU3 Obの要素プログラムに対して処理状態を問い合わせる必要がある。そのため、要素 プログラムは、自分の処理に対して外部からアクセスするためのインタフェースをメソ ッドとして提供する。
[0029] このインタフェースは、「限定公開インタフェース」と「完全公開インタフェース」に分 けることができる。互いに同じ MPU22に属する SPU30は、基本的に、同一プロセス 空間において別々のスレッドとしてそれぞれが担当する処理を実行する。 「限定公開 インタフェース」は、このような要素プログラム間におけるスレッド間通信を想定したィ ンタフェースである。一方、互いに別々の MPU22に属する SPU30は、別々のプロ セス空間に属する。 「完全公開インタフェース」は、このような要素プログラム間におけ るプロセス間通信を想定したインタフェースである。このようなインタフェースを介して 、複数の要素プログラムを連係動作させることができる。
限定公開インタフェースの場合、メソッド呼び出しの形式にて、メッセージパッシング により通信を行う。完全公開インタフェースも同様である力 XML形式のリクエストを 送信することにより、他の MPU22に属する SPU30に処理を割り当てることもできる。
[0030] 図 7は、要素プログラムの一例を示す図である。
ここで「MyModulel」クラスは、ある SPU30においてインスタンス化されるクラスであ り、「SpuModule」クラスを継承するクラスである。 「SpuModule」クラスは、要素プログラ ムとして提供すべき基本的な機能を備えるクラスである。この「MyModulel」クラスが、 SPU30において実行対象となる要素プログラムである。アクセス権が「PUBLIC」と指 定されているメソッド「methodl」は、限定公開インタフェースである。一方、アクセス権 として「PROTECTED」と指定されてレ、るメソッド「method2」は、完全公開インタフエ一 スである。 [0031] この MyModulelクラスの method2関数は、別の SPU30において実行されている要 素プログラムのインタフェースを利用しつつ、処理を実行している。 method2関数は、 まず、 MyModule2クラスのプロキシオブジェクトを取得している。この MyModule2クラス は、同じ MPU22に属する別の SPU30によってインスタンス化されるクラスである。 M yModulelクラスや MyModule2クラスのように、 SpuModuleクラス力 継承されてレ、るクラ スは、インスタンス化に際して、自オブジェクトにアクセスするためのプロキシコードを 生成する。このプロキシコードは、メインメモリ 42に保持され、また、このプロキシコー ドの実行は PU24によってコントロールされる。
[0032] PU24は、支配下にある SPU30にて、どのような要素プログラムが実行されている かを統括管理している。したがって、 MyModulelクラスの method2関数は、 PU24上の 実行プログラムが提供する getModuleProxy関数を介して、 MyModule2クラスにァクセ スするためのプロキシオブジェクトを取得できる。こうして取得されたプロキシオブジェ タト m2proxyの仲介により、 method2関数は MyModule2クラスが提供している asyncmet hodや syncmethod、 delayedmethodといったメソッドを呼び出すことができる。ちなみに 、 asyncmethodは非同期型の呼び出し、 syncmethodは同期型の呼び出し、 delayedme thodは、遅延評価のための呼び出しである。
[0033] 図 8は、図 7に示した要素プログラムの続きを示す図である。
method3関数は、 MyProgramという単位プログラムにアクセスするためのプロキシォ ブジェクト progproxyを取得している。たとえば、図 7の methodlのように他の MPU22 力ものアクセスが可能な完全公開インタフェースは、 PU24によって他の MPU22に も通知される。 MPU22は、このような完全公開インタフェースに関する情報を互いに 交換する。完全公開インタフェースに関する情報は、所定のユーザ端末 16が一元的 に管理してもよいし、各ユーザ端末 16が情報を交換しあう形にて管理してもよい。図 5に示した例の場合、処理 Aを実行する MPU22aは、処理 Aに対応する単位プログ ラムを実行形式に変換するときに、その単位プログラムに含まれている各要素プログ ラムの完全公開インタフェース情報を他の MPU22に通知する。したがって、 MyMod ulelクラスの method3関数は、自らを管理する PU24に問い合わせることにより、 MyPr ogramという別の単位プログラムにアクセスするためのプロキシオブジェクトを取得でき る。こうして取得されたプロキシオブジェクト progproxyを介して、 MyProgramの完全公 開インタフェースである asyncmethodといったメソッドを呼び出すことができる。
[0034] 更に、 method3は、「ScriptA」とレ、う名前の XMLファイルを指定して、 executeScript 関数を実行している。この「ScriptA」という XMLファイルには所定の処理を実行する ためのロジックが記述されている。このような XMLファイルのことを、「インタフェースコ ード」とよぶことにする。複数の要素プログラム間で実行される典型的な処理について は、インタフェースコードとしてまとめておくことにより、要素プログラム自体のサイズを コンパクトにできる。インタフェースコードは、完全公開インタフェースに関する情報と 同様に、所定のユーザ端末 16が一元的に管理してもよいし、各ユーザ端末 16が情 報を交換しあう形にて管理してもよレ、。
[0035] 図 9は、インタフェースコードを示す図である。
このインタフェースコードでは、まず、 MyProgramという単位プログラムの完全公開ィ ンタフェースである methodlを、 argumentlおよび argument2という 2つの引数を与えて 実行指示している。また、 method2は引数なしで実行指示されている。 < concurrent >タグにより、これらの関数は同時並行的に実行指示可能であることが示されている 。また、 method3と method4は、く sequence >タグにより、 method3の実行がなされたあ とに method4が実行されるように指示されている。図 8の executeScript関数の実行によ り、このインタフェースコードに記述されている処理が実行され、結果として、 SpuModu leiから他の要素プログラムの処理をコントロールできる。
[0036] インタフェースコードやアプリケーションコードは、図 4の Modelsによって規定される 所定のタグセットによって記述される。
以上をふまえ、複数の MPU22、更には、複数の SPU30に処理を分散させるプロ グラムの例として、水槽の中での魚の動きをシミュレーション計算するアプリケーション を題材として説明する。
[0037] 図 10は、コンピュータグラフィックスによる魚の動きをシミュレーションを示す模式図 である。
水槽 50において、魚 52aから魚 52gまでの 7匹の魚がそれぞれ所定のパターンに したがって泳ぐようなシミュレーションを想定する。水槽 50は、ボックス A〜ボックス D までの 4つのボックスに分けて処理される。 SPU30aは、ボックス Aの中にいる魚の動 きを計算する。同様に、 SPU30bはボックス B、 SPU30cはボックス C、 SPU30dはボ ックス Dを担当する。また、 SPU30eは、水槽 50の外部の光源 54を移動させる。魚 5 2は、光源 54によって照らされと、動きが変化するものとする。
[0038] 図 11は、各 SPU30間における処理の連係を説明するためのタイムチャートである
SPU30a力ら SPU30eまでの 5つの SPU30は、それぞれ与えられた要素プログラ ムを同時並行的に実行する。時刻 t〜時刻 t の期間において、 SPU30aはボック
n n+ 1
ス Aの中における魚 52gの動きを計算する。同様に、 SPU30bはボックス Bにおける 魚 52fや魚 52eの動きを計算する。
[0039] SPU30aによる計算の結果、ボックス Aにいた魚 52gが、ボックス Bに移動したとす る。このとき、時刻 t に、 SPU30aは、 SPU30bが実行している要素プログラムのメ
n+ l
ソッドを介して、魚 52gがボックス Bに移動した旨を通知する。 SPU30bは、時刻
n+ l
〜時刻 t の期間において、新たにボックス Bに入ってきた魚 52gも含めて、ボックス n + 2
B内の魚 52の動きを計算することになる。
[0040] 一方、時亥 ijt〜時刻 t の期間において SPU30eが光源 54を移動させた結果、 S
n n+ l
PU30cが担当するボックス Cの魚の動きに影響が発生するとする。このとき、 SPU30 eが実行する要素プログラムは、 SPU30cが実行する要素プログラムのメソッドを介し て、ボックス Cが照射された旨を通知する。これにより、時刻 t 〜時刻
n+ l n+ 2
までの期間においては、 SPU30cは光源の影響を考慮にいれて、魚 52の動きを計 算することになる。
[0041] 図 12 (a)と図 12 (b)は、本シミュレーションで使用されるプログラム例を示す。本プ ログラム例では、初期配置処理 (一点鎖線枠で囲む A部分)、シミュレーション実行処 理(一点鎖線枠で囲む B部分)を順次実行する。同図における、 < Sequence >タグは 、以下の処理、すなわち、初期配置処理 Aとシミュレーション実行処理 Bがシーケンシ ャルに実行される旨を示すタグである。
初期配置処理 Aでは、図 10中の各ボックス A〜D、光源 54に関するシミュレーショ ン処理が SPU30a〜30eに割り当てられ、各 SPU30上では割り当てられたシミュレ ーシヨンを実行するための初期化が並行して行われる。同図におけるく Concurrent >タグは、 Aa〜Alに示す各処理が並列実行される旨を示すタグである。
本例では、水槽 50の初期配置に相当する破線枠で囲まれたモジュール Aa〜Ad 力 SSPU30a〜30dにそれぞれ割り当てられ、光源 54の初期配置に相当する破線枠 で囲まれたモジュール A1が SPU30eに害 IJり当てられている。なお、初期化の際、各 S PU30には、自己がシミュレーションするボックスと隣接するボックスをシミュレーション するプログラム IDなど、シミュレーション実行に必要な各種値が与えられる。
シミュレーション実行 Bでは、 SPU30e上で光源移動のシミュレーションモジュール B1が実行され、この光源シミュレーション結果に基づいて、各 SPU30a〜30d上で各 ボックス内のシミュレーションモジュール Ba〜Bdが並行実行され、この一連の処理が く Loop >タグの指示により繰り返される。
本プログラム例は、メインプログラムの所定ルーチンによりその内容が解析されて各 モジュールに分解され、各モジュールが使用可能な SPU30に割り当てられることと なる。メインプログラムは、いずれかの MPU22上で実行されるプログラムである。な お、並行実行されるべきプログラムモジュールの個数が使用可能な SPU30の個数よ りも多いときは、 SPU30を時分割で利用すればよい。また、メインプログラムは、 SPU 30同士の結合度またはプログラムモジュールのプライオリティを参照して、プログラム モジュールを各 SPU30に分配してもよレ、。
[0042] このような態様によれば、水槽 50における複数の魚 52の動きを計算するといぅシミ ユレーシヨンが 5つの SPU30の同時並行的な処理によって実現される。このような場 合、簡単なアプリケーションコードにて、複雑な処理を複数の計算資源に簡単に分散 させることができる。
[0043] 以上に示した処理方法によれば、 XML等の構造化文書ファイルに記述された処 理内容が、複数の PU24によって分散され、更に多数の SPU30に処理が割り振られ ていくことになる。そのため、アプリケーションコードの作成負担を軽減しつつも、処理 を複数の計算資源に分散させるための好適なスキームを提供することができる。複数 の MPU22が使えるときには各 MPU22に処理を分散させ、単一の MPU22しか使 えないときには各処理を時分割処理するとしてもよい。 各 PU24は、単位プログラムや要素プログラムへの処理分解、各プログラムのインタ フェースの登録、各プログラムの割り当て、実行制御、各プログラムの実行主体の登 録.検索等を協働して行うことになる。このため、各 MPU22の PU24群が連係して処 理分散を実行し、それぞれの支配下にある SPU30が連係して実際の処理を実行す ることになる。
[0044] 請求項に記載の処理分解部や分配部の機能は、本実施例においては、いずれか の MPU22上で実行されるメインプログラムの所定ルーチンによって実現される。また 、処理分解部や分配部の機能を提供する MPU22は、リソースマネジメントシステム 1 0に含まれる装置に搭載される任意の MPU22であってもよレ、が、メインプログラムを 実行するための専用装置に搭載されもよい。
これら請求項に記載の各構成要件が果たすべき機能は、本実施例において示され た各機能ブロックの単体もしくはそれらの連係によって実現されることも当業者には 理解されるところである。
[0045] 以上、本発明を実施例をもとに説明した。この実施例はあくまで例示であり、それら の各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、ま たそうした変形例も本発明の範囲にあることは当業者に理解されるところである。 産業上の利用可能性
[0046] 本発明は、分散処理コンピューティングに適用可能である。

Claims

請求の範囲
[1] 複数の実行主体に処理を分散させてコンピュータプログラムを実行するためのシス テムであって、
データ処理の内容が記述されたスクリプトコードを参照して、前記データ処理を複 数の単位処理に分解する処理分解部と、
複数の実行主体に各単位処理を割り当てる分配部と、
を備え、
各実行主体が割り当てられた処理を実行することを特徴とするデータ処理システム
[2] 通信回線を介して互いに接続された複数の制御ユニットに処理を分散させてコンビ ユータプログラムを実行するためのシステムであって、
データ処理の内容が記述されたスクリプトコードを参照して、前記データ処理を複 数の単位処理に分解する処理分解部と、
複数の制御ユニットに各単位処理を割り当てる分配部と、
を備え、
制御ユニットは、
制御ユニットを統括的に制御する主制御装置と、
主制御装置により割り当てられた処理を実行する複数の副制御装置と、 を含み、
主制御装置は単位処理の一部を副制御装置に割り当て、各副制御装置が割り当 てられた処理を実行することを特徴とするデータ処理システム。
[3] 主制御装置は、他の主制御装置に対して、前記他の主制御装置の支配下にある 副制御装置への単位処理の一部の割り当てを指示可能であることを特徴とする請求 項 2に記載のデータ処理システム。
[4] 前記スクリプトコードは、所定のタグセットによる構造ィ匕文書ファイルとして記述され ることを特徴とする請求項 2または 3に記載のデータ処理システム。
[5] 副制御装置に割り当てられた処理は、当該処理を外部から制御するためのインタフ エースを主制御装置に通知し、 前記副制御装置とは異なる副制御装置は、主制御装置に通知されたインタフエ一 スを介して前記副制御装置による処理を制御可能であることを特徴とする請求項 2か ら 4のレ、ずれかに記載のデータ処理システム。
[6] 副制御装置に割り当てられた処理を外部から制御するためのインタフェースのうち
、他の制御ユニットからもアクセス可能なインタフェースの一覧を公開インタフェース 情報として保持する公開インタフェース情報保持部、を更に備え、
副制御装置に割り当てられた処理は、前記公開インタフェース情報を参照すること により、別の制御ユニットにおける単位処理を制御可能であることを特徴とする請求 項 5に記載のデータ処理システム。
[7] 前記公開インタフェース情報に登録されているインタフェースを介して 1以上の単位 処理を制御するためのロジックが記述されたインタフェースコードを保持するインタフ エースコード保持部、を更に備え、
副制御装置に割り当てられた処理は、前記インタフェースコードを実行することによ り、別の制御ユニットにおける単位処理を制御可能であることを特徴とする請求項 6に 記載のデータ処理システム。
[8] 通信回線を介して互いに接続された複数の制御ユニットによりコンピュータプロダラ ムを実行するための方法であって、
データ処理の内容が記述されたスクリプトコードを参照して、前記データ処理を複 数の単位処理に分解する処理分解ステップと、
それぞれの単位処理に対応するソフトウェアモジュールを取得するモジュール取得 ステップと、
複数の制御ユニットに各ソフトウェアモジュールを割り当てる割当ステップと、 制御ユニットにて、割り当てられたソフトウェアモジュールにより単位処理を実行する 実行ステップと、
を備えることを特徴とするデータ処理方法。
PCT/JP2007/050412 2006-01-16 2007-01-15 データ処理システムおよびデータ処理方法 WO2007081002A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US12/089,315 US9311156B2 (en) 2006-01-16 2007-01-15 System and method for distributing data processes among resources
EP07706746.0A EP1993038B1 (en) 2006-01-16 2007-01-15 Data processing system and data processing method
CN2007800013955A CN101356503B (zh) 2006-01-16 2007-01-15 数据处理系统和数据处理方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2006-008064 2006-01-16
JP2006008064A JP4402051B2 (ja) 2006-01-16 2006-01-16 データ処理システムおよびデータ処理方法

Publications (1)

Publication Number Publication Date
WO2007081002A1 true WO2007081002A1 (ja) 2007-07-19

Family

ID=38256403

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2007/050412 WO2007081002A1 (ja) 2006-01-16 2007-01-15 データ処理システムおよびデータ処理方法

Country Status (5)

Country Link
US (1) US9311156B2 (ja)
EP (1) EP1993038B1 (ja)
JP (1) JP4402051B2 (ja)
CN (1) CN101356503B (ja)
WO (1) WO2007081002A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8261117B2 (en) * 2008-09-11 2012-09-04 International Business Machines Corporation Virtualization in a multi-core processor (MCP)
US8732716B2 (en) 2008-09-30 2014-05-20 International Business Machines Corporation Virtualization across physical partitions of a multi-core processor (MCP)
JP6078515B2 (ja) * 2014-11-13 2017-02-08 京セラドキュメントソリューションズ株式会社 電子機器およびプログラム
CN108885563B (zh) * 2016-03-22 2021-09-14 三菱电机株式会社 信息处理系统、信息处理装置和信息处理方法
US11226841B2 (en) 2016-03-22 2022-01-18 Mitsubishi Electric Corporation Information processing system, information processing device, and information processing method
US20220197698A1 (en) * 2020-12-23 2022-06-23 Komprise Inc. System and methods for subdividing an unknown list for execution of operations by multiple compute engines

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005242598A (ja) * 2004-02-26 2005-09-08 Sony Corp 情報処理システム及び情報処理方法、並びにコンピュータ・プログラム
JP2005339137A (ja) * 2004-05-26 2005-12-08 Sony Corp 情報処理システム、情報処理装置および方法、記録媒体、並びにプログラム
JP2007050412A (ja) * 2005-08-15 2007-03-01 Japan Steel Works Ltd:The 金型および冷却機構

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3684138D1 (de) * 1986-02-04 1992-04-09 Ibm Verfahren zum abgleichen der aufgaben in einem mehrprozessorsystem.
JPH09218861A (ja) 1996-02-08 1997-08-19 Fuji Xerox Co Ltd スケジューラ
JP2003524808A (ja) * 1998-05-22 2003-08-19 サード フランプトン、エリス、イー.ザ 大域ネットワークコンピュータ
US6775831B1 (en) * 2000-02-11 2004-08-10 Overture Services, Inc. System and method for rapid completion of data processing tasks distributed on a network
US20030018661A1 (en) * 2001-07-19 2003-01-23 Darugar Parand Tony XML smart mapping system and method
US20050188087A1 (en) * 2002-05-28 2005-08-25 Dai Nippon Printing Co., Ltd. Parallel processing system
US7478233B2 (en) * 2002-05-30 2009-01-13 Microsoft Corporation Prevention of software tampering
IL155112A0 (en) 2003-03-27 2003-10-31 Eci Telecom Ltd Technique for network management
CN100483459C (zh) * 2003-04-24 2009-04-29 富士胶片株式会社 分散处理控制装置、系统和方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005242598A (ja) * 2004-02-26 2005-09-08 Sony Corp 情報処理システム及び情報処理方法、並びにコンピュータ・プログラム
JP2005339137A (ja) * 2004-05-26 2005-12-08 Sony Corp 情報処理システム、情報処理装置および方法、記録媒体、並びにプログラム
JP2007050412A (ja) * 2005-08-15 2007-03-01 Japan Steel Works Ltd:The 金型および冷却機構

Also Published As

Publication number Publication date
JP4402051B2 (ja) 2010-01-20
EP1993038B1 (en) 2018-05-16
JP2007188456A (ja) 2007-07-26
CN101356503A (zh) 2009-01-28
US20100131740A1 (en) 2010-05-27
EP1993038A4 (en) 2011-09-28
EP1993038A1 (en) 2008-11-19
US9311156B2 (en) 2016-04-12
CN101356503B (zh) 2013-03-13

Similar Documents

Publication Publication Date Title
Teich et al. Invasive computing: An overview
Rowley et al. SpiNNTools: the execution engine for the SpiNNaker platform
Giorgi et al. Axiom: A scalable, efficient and reconfigurable embedded platform
Alvarez et al. The AXIOM software layers
WO2007081002A1 (ja) データ処理システムおよびデータ処理方法
Montella et al. Enabling android-based devices to high-end gpgpus
Theodoropoulos et al. The AXIOM platform for next-generation cyber physical systems
Giorgi et al. AXIOM: a flexible platform for the smart home
Pavlov et al. Multi-agent systems meet GPU: deploying agent-based architectures on graphics processors
Rossant et al. Playdoh: a lightweight Python library for distributed computing and optimisation
Badia et al. Workflow environments for advanced cyberinfrastructure platforms
Verdicchio et al. Introduction to High-Performance Computing
Grant et al. Networks and MPI for cluster computing
Plauth et al. CloudCL: distributed heterogeneous computing on cloud scale
Dimakopoulos et al. HOMPI: A hybrid programming framework for expressing and deploying task-based parallelism
Plauth et al. CloudCL: single-paradigm distributed heterogeneous computing for cloud infrastructures
Fiaidhi et al. Empowering extreme automation via zero-touch operations and GPU parallelization
Perdomo et al. DEMAC: A Modular Platform for HW-SW Co-Design
Christodoulis et al. An FPGA target for the StarPU heterogeneous runtime system
Rafique et al. Reusable software components for accelerator-based clusters
Kuchen et al. Data parallel skeletons in java
Kabrick et al. DEMAC and CODIR: A whole stack solution for a HW/SW co-design using an MLIR Codelet model dialect
Kobbe Scalable and Distributed Resource Management for Many-Core Systems
Tănase Dynamic scheduler implementation used for load distribution between hardware accelerators (RTL) and software tasks (CPU) in heterogeneous systems
Titov et al. RADICAL-Pilot and PMIx/PRRTE: Executing heterogeneous workloads at large scale on partitioned HPC resources

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200780001395.5

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2007706746

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 12089315

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE