WO2015068382A1 - 情報処理装置、情報処理方法、記録媒体、計算処理装置、計算処理方法 - Google Patents

情報処理装置、情報処理方法、記録媒体、計算処理装置、計算処理方法 Download PDF

Info

Publication number
WO2015068382A1
WO2015068382A1 PCT/JP2014/005561 JP2014005561W WO2015068382A1 WO 2015068382 A1 WO2015068382 A1 WO 2015068382A1 JP 2014005561 W JP2014005561 W JP 2014005561W WO 2015068382 A1 WO2015068382 A1 WO 2015068382A1
Authority
WO
WIPO (PCT)
Prior art keywords
calculation
core
processing
exception
control
Prior art date
Application number
PCT/JP2014/005561
Other languages
English (en)
French (fr)
Inventor
青山 俊一
照之 今井
康雄 石井
Original Assignee
日本電気株式会社
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 日本電気株式会社 filed Critical 日本電気株式会社
Priority to KR1020167014916A priority Critical patent/KR101783164B1/ko
Priority to EP14860668.4A priority patent/EP3067796A4/en
Priority to US15/035,065 priority patent/US10241829B2/en
Priority to CN201480061338.6A priority patent/CN105723340B/zh
Publication of WO2015068382A1 publication Critical patent/WO2015068382A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/481Exception handling

Definitions

  • the present invention relates to an information processing apparatus, an information processing method, a recording medium, a calculation processing apparatus, and a calculation processing method.
  • the present invention relates to a calculation processing method.
  • a NUMA (Non-Uniform Memory Access) type parallel computer in which a plurality of nodes each consisting of a processor and memory pair are connected by an interconnect is known.
  • the NUMA type parallel computer is a system in which the access cost to the local memory of the same node as the processor and the access cost to the remote memory of another node are non-uniform.
  • a parallel computer As an example of such a parallel computer, a plurality of clusters including one or more processors and a main memory used by the one or more processors are provided, and are resident in a real memory in a part of a virtual space of the process.
  • a parallel computer provided with a communication area is known. This parallel computer can reduce the overhead of inter-process data communication (Patent Document 1).
  • Patent Document 2 a computer system that includes a control node and an operation node and can be set to execute only a remote process in the operation node is known (Patent Document 2).
  • data that is not used by application programs may be stored in the cache due to memory access that occurs when OS processing such as a kernel process operates.
  • OS processing such as a kernel process operates.
  • cache pollution a problem called cache pollution in which data used in the application program is evicted from the cache may occur.
  • accelerator type computers it is also conceivable to use an accelerator type computer as a method to alleviate such problems.
  • the OS does not operate on an accelerator type computer.
  • accelerator type computers do not have API (Application Programming Interface) (for example, POSIX (Portable Operating System UNIX (registered trademark)) API, which is followed by widely used programming languages (such as C language). System control cannot be performed.
  • API Application Programming Interface
  • POSIX Portable Operating System UNIX (registered trademark) API
  • C language widely used programming languages
  • System control cannot be performed.
  • accelerator-type computers need to be developed in a dedicated language, making it difficult to use past programming assets.
  • virtualization using a virtual machine may be considered. For example, by introducing a virtual machine that emulates a commodity architecture to a computer having an architecture different from that of the commodity, development of an OS or a device driver can be made unnecessary. In general, a virtual machine is usually simpler than an OS. Therefore, it is considered that the development cost can be reduced by introducing a virtual machine.
  • a virtual machine is usually simpler than an OS. Therefore, it is considered that the development cost can be reduced by introducing a virtual machine.
  • overhead occurs due to emulation by the virtual machine.
  • virtualization using a virtual machine cannot solve the above-described problems of OS jitter and cache contamination.
  • an object of the present invention is to provide an information processing apparatus that solves the problems described above, that is, the problem that OS jitter and cache contamination occur in a parallel computer, and the problem of loss of versatility and high development costs. There is to do.
  • an information processing apparatus provides: A control core in which an operating system is incorporated, and at least one calculation core controlled by the control core and performing predetermined calculation processing,
  • the control core includes a calculation core control unit that instructs the calculation core that is stopped to instruct the calculation core to start the calculation process,
  • the calculation core includes calculation processing control means for controlling the calculation core so as to start the calculation processing in response to an instruction to start the calculation processing from the calculation core control means, and during execution of the calculation processing.
  • an exception detection unit that detects a preset exception process that has occurred and stops execution of the calculation process in which the exception process has occurred.
  • a computer-readable recording medium is A computer including an information processing apparatus including a control core in which an operating system is incorporated and at least one calculation core controlled by the control core and performing predetermined calculation processing, A calculation core control process that instructs the calculation core to stop the calculation core to start the calculation process; A calculation processing control process for controlling the calculation core to start the calculation process in response to an instruction to start the calculation process; A program that detects a preset exception process that occurs during execution of the calculation process and executes an exception detection process that stops execution of the calculation process in which the exception process has occurred is recorded.
  • an information processing method includes: In response to an instruction to start the calculation process from the control core, the calculation core starts the predetermined calculation process, When a preset exception process occurs during execution of the calculation process by the calculation core, the calculation core detects the exception process and stops the calculation process in which the exception process has occurred.
  • calculation processing apparatus which is the other form of this invention, A calculation processing device that performs predetermined calculation processing under the control of an external device, A calculation processing control means for controlling the calculation processing device so as to start the calculation processing in response to an instruction to start the calculation processing from an external device, and a preset exception processing generated during the execution of the calculation processing And exception detection means for stopping the execution of the calculation process in which the exception process has occurred.
  • a computer-readable storage medium is A calculation process control process for controlling the calculation processing apparatus to start the calculation process in response to an instruction to start the calculation process from an external apparatus, and a preset exception process that occurs during the execution of the calculation process And a program for executing an exception detection process for stopping the execution of the calculation process in which the exception process has occurred.
  • a calculation processing method includes: In response to an instruction to start calculation processing from an external device, the predetermined calculation processing is started, When a preset exception process occurs during execution of the calculation process, the exception process is detected, and the calculation process in which the exception process has occurred is stopped.
  • the present invention which is configured as described above, can provide an inexpensive and versatile information processing apparatus while solving the problems of OS jitter and cache contamination.
  • FIG. 1 is a block diagram showing a configuration of a parallel computer 1 assumed in the present embodiment.
  • FIG. 2 is a block diagram showing the configuration of the parallel computer 1 in the present embodiment.
  • FIG. 3 is a block diagram illustrating a configuration of the calculation core 611 included in the calculation node 6.
  • FIG. 4 is a functional block diagram showing the configuration of the proxy process 511.
  • FIG. 5 is a table showing an example of data stored in association with the process correspondence table 522.
  • FIG. 6 is a table showing an example of data stored in the calculation process DB 521.
  • FIG. 7 is a flowchart showing how necessary operations are performed from the start to the end of the calculation process in the first embodiment.
  • 8 to 13 are flowcharts showing operations required from the start to the end of the calculation process.
  • NUMA is a node in which a plurality of nodes each consisting of a pair of a memory and a processor exist and are connected by an interconnect.
  • the parallel computer 1 in the present embodiment is used in the field of HPC (High Performance Computing), for example.
  • the parallel computer 1 in this embodiment includes a node 2 and a node 3.
  • the node 2 includes a CPU (Central Processing Unit) 21, a memory 22, and a data transfer circuit 23.
  • the node 3 includes a CPU 31, a memory 32, and a data transfer circuit 33. Further, the node 2 and the node 3 are communicably connected via an inter-node communication device 4 (including a part of the data transfer circuit).
  • an inter-node communication device 4 including a part of the data transfer circuit.
  • both the node 2 and the node 3 included in the parallel computer 1 include the CPU (21, 31), the memory (22, 32), and the data transfer circuit (23, 33). Configured. Further, the configurations of the node 2 and the node 3 are the same. Therefore, the configuration of the node 2 will be described below.
  • the parallel computer 1 in the present embodiment may be configured to include two or more nodes.
  • Each node may adopt a different architecture such as x86 and ARM (registered trademark).
  • the CPU 21 includes a single or multiple processor cores.
  • the CPU 21 includes a plurality of processor cores 211, 212,..., 21m (m is a natural number) (hereinafter referred to as the processor core 211 unless otherwise distinguished).
  • Each processor core 211 has a communication path to the memory 22 and the data transfer circuit 23. That is, each of the plurality of processor cores 211 included in the CPU 21 is configured to be able to communicate with the memory 22 and the data transfer circuit 23.
  • the memory 22 stores data, programs to be executed, and the like.
  • the memory 22 is shared by a plurality of processor cores 211 (processor cores of the same node) included in the CPU 21.
  • the memory 22 in the present embodiment is configured by a semiconductor memory such as a RAM (Random Access Memory), for example.
  • the data transfer circuit 23 is configured to have two functions, a DMA (Direct Memory Access) engine function 231 and a CPU communication function 232.
  • the DMA engine function 231 is a function for accessing the memory 22 without using the CPU 21.
  • the CPU communication function 232 is a function for accessing a resource such as a register on the CPU 21. That is, the data transfer circuit 23 has a function of accessing the memory 22 without using the CPU 21 and a function of accessing resources such as a register on the CPU 21.
  • the CPU communication function 232 may be configured such that resources such as registers on the CPU 21 are allocated to the memory space and accessed from the DMA engine function 231.
  • the node 3 has the same configuration as the node 2. That is, the node 3 includes a CPU 31, a memory 32, and a data transfer circuit 33.
  • the CPU 31 includes a plurality of processor cores 311, 312,..., 31 m (hereinafter referred to as a processor core 311 unless otherwise specified).
  • the data transfer circuit 33 includes a DMA engine function 331 and a CPU communication function 332. The details of each component have already been described using the node 2 and will be omitted.
  • the inter-node communication device 4 can be realized by, for example, an interconnect having a DMA function such as PCI (Peripheral Components Interconnect) Express, Infiniband, or an RDMA (Remote DMA) function and a transmission path.
  • DMA Peripheral Components Interconnect
  • PCI Peripheral Components Interconnect Express
  • Infiniband Infiniband
  • RDMA Remote DMA
  • the parallel computer 1 in the present embodiment includes one control node and one or more calculation nodes.
  • the control node has an OS function, but the calculation node does not have an OS function.
  • the control node has a function of deploying a plurality of processes on the calculation node and executing the calculation processing at the same time as a normal OS performs.
  • the process developed on the calculation node by the control node is referred to as a calculation process.
  • the calculation process is generated when the application program operating on the calculation node is started, and is discarded when the execution is completed.
  • the parallel computer 1 is constructed with the node 2 shown in FIG. 1 as the control node 5 and the node 3 as the calculation node 6 will be described in detail with reference to FIG.
  • the processor core 311 on the calculation node 6 is referred to as a calculation core.
  • the calculation node 6 is a node on which the OS does not operate (no OS is incorporated).
  • the parallel computer 1 according to the present embodiment is configured to be able to adopt a calculation model realized by a general computer on a calculation node 6 where the OS does not operate.
  • the computing node 6 implements an alternative function of a service provided by a general OS by transmitting / receiving data to / from the control node 5 via the inter-node communication device 4.
  • the calculation node 6 (corresponding to the node 3 in FIG. 1) in the present embodiment includes the CPU 31, the memory 32, and the data transfer circuit 33 (see FIG. 1).
  • the CPU 31 includes a plurality of processor cores 311.
  • the calculation node 6 includes a plurality of calculation cores 611, 612,..., 61 m (hereinafter referred to as calculation core 611 unless otherwise distinguished).
  • each of the plurality of calculation cores 611 shown in FIG. 2 is the same as each of the plurality of processor cores 311 shown in FIG. 1 (as described above, the processor cores on the calculation node 6 are 311 is called a calculation core 611). That is, the CPU 31 included in the calculation node 6 includes a plurality of calculation cores 611. Each of the plurality of calculation cores 611 is configured to be able to communicate with the memory 32 and the data transfer circuit 33. As described above, the processor core 311 may be singular. That is, the calculation core 611 may be singular. The detailed configuration of the calculation core 611 will be described later.
  • the memory 32 is shared by the calculation cores 611 on the same calculation node 6.
  • the memory 32 on the calculation node 6 is configured to store a plurality of data related to the calculation process as shown in FIG.
  • data related to the calculation process stored in the memory 32 is referred to as process images 321, 322,..., 32n (n is a natural number) (hereinafter referred to as process image 321 unless otherwise distinguished). Call.
  • Each process image 321 has communication buffer areas 3211, 3221,..., 32n1 (hereinafter referred to as a communication buffer area 3211 unless otherwise specified) for reading and writing data of a calculation process from the control node 5. included. Further, the architecture state of the computing core 611 that operates the process image 321 is referred to as a context 611A, 612B,..., 61mC (hereinafter referred to as a context 611A unless otherwise distinguished).
  • the total number of process images 321 that can be stored in the memory 32 can take an arbitrary value as long as the total capacity does not exceed the capacity of the physical memory. Therefore, the number of calculation cores 611 and the number of process images 321 stored in the memory 32 do not necessarily match.
  • each calculation core 611 stores one calculation process context 611A. Then, each calculation core 611 performs a calculation process using the process image 321 stored on the memory 32 associated with the stored context 611A.
  • the context 611A that cannot be stored in the calculation core 611 cannot be executed at that time. In that case, it is possible to make it appear that the total number of the calculation cores 611 is virtually increased by replacing the context 611A stored in the calculation core 611. Details of the context 611A replacement method (context switch) will be described later.
  • the data transfer circuit 33 is not particularly different from the function described in the configuration of the node 2. Therefore, detailed description is omitted.
  • the calculation core 611 includes a general-purpose register group 6111, a control register group 6112 (calculation processing control unit), an exception detection unit 6113 (exception detection unit), and an exception notification unit 6114 (exception detection unit). And a register group access unit 6115 (a part of the data transfer circuit).
  • the calculation core 611 is configured to be able to communicate with the inter-node communication device 4 via the data transfer circuit 33. Further, the calculation core 611 is configured to be able to communicate with the memory 32.
  • the general-purpose register group 6111 has the same configuration as a general processor such as x86 or ARM. That is, the general-purpose register group 6111 includes a program counter (PC: Program Counter), a general-purpose register (GPR: General-Purpose Register) that stores the operation result, and the like.
  • PC Program Counter
  • GPR General-Purpose Register
  • the control register group 6112 is a register for controlling execution of instructions by the calculation core 611.
  • the control node 5 instructs the control register group 6112 through the data transfer circuits 23 and 33 and the inter-node communication device 4 to start execution of the instruction or to stop execution of the instruction. Send “Stop Execution”.
  • the calculation core 611 starts calculation processing according to the contents of the general-purpose register group 6111. Specifically, when the control register group 6112 receives an instruction to “start execution”, the calculation core 611 fetches an instruction stored in the memory 32 according to the value of the program counter stored in the general-purpose register group 6111. Then, the calculation core 611 decodes and executes the fetched instruction. Thereafter, the calculation core 611 updates the contents of the general-purpose register group 6111 and the memory 32 in accordance with the execution of the instruction. Such a state in which an instruction is executed by the calculation core 611 (a calculation process is being performed) is referred to as an “instruction execution state”.
  • the control node 5 transmits “stop execution” to the control register group 6112. Then, the calculation core 611 stops executing a new instruction. As a result, the calculation core 611 stops executing the instruction. Such a state in which “execution stopped” is transmitted and no instruction is in progress on the calculation core 611 is referred to as an “instruction execution stopped state”. Once the state transitions to the “instruction execution stop state”, the calculation core 611 does not execute a new instruction (calculation process) until the control node 5 issues a “start execution” instruction again.
  • control register group 6112 is configured such that the state of the calculation core 611 (instruction execution state or instruction execution stop state) can be referred to from the control node 5.
  • the control register group 6112 (calculation core 611) does not have a function to be referred to, the calculation core 611 notifies the control node 5 of the state of the calculation core 611 by sending exception information described later. It may be configured so that
  • the exception detection unit 6113 is a part that detects an exception that has occurred when an exception occurs during execution of an instruction by the control register group 6112. Specifically, the exception detection unit 6113 transmits an instruction to “stop execution” to the control register group 6112 when any exception is detected during execution of the instruction. At the same time (or before and after), the exception detection unit 6113 requests an exception notification to the exception notification unit 6114 (notifies the occurrence of an exception). A request for exception notification to the exception notification unit 6114 by the exception detection unit 6113 is performed, for example, when the exception detection unit 6113 transmits exception detection information to the exception notification unit 6114.
  • the exception detected by the exception detection unit 6113 indicates an operation exception such as a division by zero exception. Also, for example, it refers to memory access exceptions such as memory access boundary violations, and exceptions mounted on general processors such as software traps for calling system calls. When such an exception occurs during execution of an instruction, the exception detection unit 6113 detects the generated exception.
  • the exception notification unit 6114 notifies the control node 5 that the calculation core 611 has been stopped. Specifically, the exception notification unit 6114 notifies the control node 5 of “stop of execution” to the control node 5 via the inter-node communication device 4 based on the exception detection information received from the exception detection unit 6113. To do.
  • the exception notification means performed by the exception notification unit 6114 may be implemented in any way as long as it can notify the control node 5 of the occurrence of the exception.
  • the exception notification unit 6114 for example, there is a method of using an interrupt function of the inter-node communication device 4 such as PCI Express MSI (Message Signaled Interrupts) / MSI-X (MSI Extended). Further, for example, a method of performing DMA writing to a memory area reserved in advance (memory 22 provided in the control node 5) may be used.
  • control node 5 When such a method of notifying the occurrence of an exception to the control node 5 by DMA writing to the memory 22 is adopted, the control node 5 (the computation node management process described later) notifies the exception from the computation node 6. The presence or absence of this is monitored by a method such as polling.
  • the exception notification unit 6114 can be configured so as to be able to suppress notification of occurrence of an exception to the control node 5 by setting from the control node 5 side.
  • the control node 5 can directly monitor the execution state of the control register group 6112 (polling or the like). 5 may be configured.
  • the register group access unit 6115 reads from and writes to each register of the general-purpose register group 6111 and the control register group 6112 based on the instruction transmitted from the control node 5.
  • the general-purpose register group 6111 and the control register group 6112 transmit / receive data to / from the control node 5 via the register group access unit 6115, the data transfer circuit 33, and the inter-node communication device 4.
  • the register group access unit 6115 can be configured not to permit reading and writing to the general-purpose register group 6111 of the calculation core 611 in the “instruction execution state”.
  • the register group access unit 6115 can be configured so that the register group access unit 6115 performs reading and writing to the general-purpose register group 6111 only to the calculation core 611 in the “instruction execution stopped state”. In this case, the operation at the time of accessing the general-purpose register group 6111 by the register group access unit 6115 with respect to the calculation core 611 in the “instruction execution state” becomes undefined (for example, ignored).
  • the control node 5 has the same configuration as a normal stand-alone computer system that employs an OS. As described above, the control node 5 is configured to be able to provide the OS function service to the computation node 6.
  • control node OS 50 the OS installed on the control node 5 is referred to as a control node OS 50.
  • control node OS 50 for example, a commodity OS used in a general computer represented by Linux (registered trademark), Windows (registered trademark), or the like can be used.
  • control node 5 (corresponding to the node 2 in FIG. 1) in the present embodiment includes the CPU 21 (control core, exception processing proxy unit, calculation core control unit), memory 22, and data transfer circuit 23. (Refer to FIG. 1).
  • the CPU 21 includes a plurality of processor cores 211.
  • control node OS 50 operates on the control node 5. Therefore, unlike the calculation node 6, the control node 5 can virtualize the hardware (processor core 211, memory 22) using the system management function of the OS. Accordingly, the process configuration on the control node 5 will be described below with reference to FIG.
  • the control node 5 calculates, on the control node OS 50, a plurality of proxy processes 511, 512,..., 51n (hereinafter referred to as a proxy process 511 unless otherwise specified) (corresponding to an exception processing proxy unit),
  • the node management process 52 (corresponding to a calculation core control unit) is expanded. Further, the management node management process 52 includes a calculation process DB (DataBase) 521 and a process correspondence table 522.
  • the proxy process 511 is a process generated corresponding to each of the calculation processes developed on the calculation node 6. That is, the proxy process 511 is generated in a one-to-one correspondence with each of the plurality of process images 321 stored in the memory 32 on the calculation node 6. Therefore, the number of proxy processes 511 deployed on the control node 5 is the same as the number of process images 321 stored in the memory 32 of the calculation node 6.
  • the proxy process 511 receives a request to the OS transmitted by the calculation process on the corresponding calculation node 6 via the inter-node communication device 4. Then, the proxy process 511 performs necessary processing as an alternative to the OS that should exist on the computation node 6. In other words, the proxy process 511 is used to process a system call instead of the calculation node 6 that does not have an OS when it becomes necessary to call a system call while executing an instruction on the calculation core 611. The proxy process 511 is used when starting a calculation process, as will be described later.
  • the proxy process 511 has an argument writing area 5111 and a data buffer area 5112 as shown in FIG. As for the data buffer area 5112, the proxy process 511 may be configured to secure the area as necessary.
  • Argument writing area 5111 is an area for writing a system call number and an argument.
  • the argument writing area 5111 is an area in which the reference destination data of the pointer is written when the pointer is in the argument of the system call.
  • a general ABI Application Binary Interface
  • the OS is not incorporated in the calculation core 611 of this embodiment. Therefore, in the system of this embodiment, the system call number and the argument are written in the argument writing area 5111 in the proxy process 511.
  • the data buffer area 5112 is an area used when a buffer is transferred from the calculation core 611 to the proxy process 511, for example, when it is determined from the content of the system call that the buffer needs to be transferred. Buffer transfer is required, for example, with a write system call.
  • the proxy process 511 is a process used when it becomes necessary to call a system call in the calculation core 611.
  • the two areas of the argument write area 5111 and the data buffer area 5112 are areas used before and after generating a software exception in order to exchange data necessary for calling a system call in the calculation core 611. It is.
  • the two areas of the argument write area 5111 and the data buffer area 5112 are substituted so that the calculation core 611 is notified before each area becomes necessary (or when it becomes necessary).
  • Process 511 is configured. Therefore, the calculation core 611 can write appropriate data in each area when it becomes necessary to request a system call while executing an instruction. Then, after writing necessary data in each area, the calculation core 611 generates a software exception. With this configuration, the calculation core 611 can cause the control node 5 to process a system call.
  • the calculation node management process 52 is a process generated for the calculation node 6.
  • the calculation node management process 52 manages hardware resources such as the calculation core 611 (processor core 311) and the memory 32 on the calculation node 6.
  • the management node management process 52 also mediates access from the proxy process 511 to the calculation core 611 for some resources.
  • the calculation node management process 52 assigns the calculation cores 611 that execute the calculation processes.
  • the management node management process 52 performs memory management on the calculation node 6 and the like. In this manner, the management node management process 52 performs an operation that requires arbitration between processes.
  • the calculation node management process 52 includes hardware resources such as a calculation core 611 and a memory 32 on the calculation node 6, virtualized resources such as a calculation process and a proxy process, To manage the association.
  • the calculation node management process 52 in the present embodiment associates the proxy process 511 and the calculation core 611 and stores them in the process correspondence table 522 for management.
  • An example of data stored in association with the process correspondence table 522 is shown in FIG.
  • “calculation process ID” and “allocated calculation core number” are stored in association with each other.
  • the “calculation process ID” is an ID assigned to each proxy process 511 (calculation process), and is used to identify the proxy process 511 and the calculation process.
  • the “assigned calculation core number” is a number assigned to the calculation core 611 in order to identify the calculation core 611 that is executing the calculation process indicated by the “calculation process ID”. In this way, by associating the proxy process 511 (calculation process) with the calculation core 611 that is executing the calculation process, the calculation node management process 52 has a hardware resource, a virtualized resource, Can be linked and managed.
  • calculation node management process 52 stores the calculation process information on the calculation node 6 in the calculation process DB 521 for management.
  • FIG. 6 is a diagram illustrating an example of a database generated by the calculation process saving information stored in the general-purpose register group 6111 on the calculation core 611 to the control node 5 side.
  • the calculation process DB 521 includes information on the calculation process such as a calculation process ID, a process state, a proxy process ID, and each register (register A, register B, register C,%) Included in the general-purpose register group. As an item.
  • the calculation process DB 521 also includes information such as an allocated memory area, for example.
  • information indicating the state of the calculation process such as that the calculation process is operable and the operation of the calculation process is stored is stored is stored.
  • the column of each register item stores the value of each register (register A, register B, register C).
  • One row of the table in the database stored in the calculation process DB 521 corresponds to the context of one calculation process.
  • the above is the process configuration deployed on the control node 5.
  • a plurality of calculation node management processes 52 are generated for each calculation node.
  • the calculation process can access its own process image 321, its own context 611A, and the argument writing area 5111 into which its proxy process 511 has written data.
  • the proxy process 511 can access the resources accessible by the corresponding calculation process and all the resources accessible as processes on the control node 5. That is, the proxy process 511 can access the process image 321 and the context 611A.
  • a resource accessible as a process on the control node 5 for example, a file of a file system existing on the control node 5 is applicable.
  • the calculation node management process 52 can access all resources on the calculation node 6, the calculation process DB 521, and the process correspondence table 522. Further, the calculation node management process 52 can notify all proxy processes 511 of the occurrence of an exception caused by the calculation process.
  • all the resources on the calculation node 6 are all of the memory 32 on the calculation node 6, the general-purpose register group 6111 of all the calculation cores 611 on the calculation node 6, and the control register group 6112. . Since all the memories 32 on the calculation node 6 can be accessed, the calculation node management process 52 has an access right to the process image 321 of all the calculation processes.
  • calculation node management process 52 can access the calculation process DB 521 as described above. Therefore, the management node management process 52 has an access right to the context 611A of all the calculation processes.
  • the computing node management process 52 does not necessarily need to be able to access the resources of the proxy process 511, for example, the memory area and context of the proxy process 511.
  • the above is the configuration of the parallel computer 1 in the present embodiment. By configuring in this way, it is possible to configure an inexpensive and versatile parallel computer while solving the problems of OS jitter and cache contamination.
  • FIG. 7 is a flowchart showing how necessary operations are performed from the start to the end of the calculation process developed in the parallel computer 1 having the above-described configuration. As shown in FIG. 7, the following operations are required to develop a calculation process on the parallel computer 1 (start the calculation process and end the calculation process). 1. Start of calculation process (start of program) 2. Stop execution of calculation process (stop program) 3. Exception handling that occurred in the calculation process (exception handling) 4). Processing when a calculation process requires an OS service (system call) 5. Changing assignment of calculation process to calculation core (context switch) 6). End of the calculation process (end of program).
  • calculation core 611 continues to execute the program (instruction, calculation processing) until the program being executed is terminated or stopped by any of the above operations.
  • the OS on the calculation node 6 is eliminated, and a service on the assumption of the presence of an OS such as POSIX API is provided on the calculation node 6. I can do it. That is, by realizing the above operation, it is possible to cover the operation of a process in a general OS environment. Details of each of the above operations will be described below.
  • FIG. 8 is a flowchart showing an example of an operation when program execution is started on the computation node 6.
  • control node OS 50 operating on the control node 5 generates a proxy process 511 (step S001).
  • the proxy process 511 passes the argument writing area 5111 of the proxy process 511 to the management process 52 for computing nodes. Then, the proxy process 511 requests the calculation node management process 52 to generate a calculation process for executing the program (step S002).
  • step S003 the calculation node management process 52 requested to generate the calculation process generates a calculation process.
  • the calculation node management process 52 creates a new context 611A.
  • the management node management process 52 generates a process image 321 related to the calculation process in the memory 32 of the calculation node 6.
  • the management node management process 52 adds the generated context 611A associated with the proxy process 511 to the calculation process DB 521.
  • the calculation node management process 52 associates the added context 611A of the calculation process DB 521 with the argument write area 5111 passed from the proxy process 511, and the contents of the argument write area 5111 are associated with the context 611A. Add to.
  • the calculation node management process 52 generates a calculation process.
  • the management node management process 52 returns a handle for accessing the generated calculation process to the proxy process 511.
  • a handle there are an ID given by the calculation node management process 52, a process ID, a file descriptor, and the like.
  • a region where the process image 321 is mapped by mmap or a pointer to the mapped region may be included.
  • the proxy process 511 writes the program to be operated on the computation node 6 and data used for executing the program in the process image 321 of the memory 32 provided in the computation node 6 (step S004).
  • the proxy process 511 reads a program to be executed by the calculation core 611. For example, when a program to be executed by the calculation process is stored in a file, the program is read by calling a read system call of the control node OS 50.
  • the proxy process 511 places a program to be executed by the calculation core 611 at a location specified by the program in the process image 321 on the memory 32 using the handle passed from the calculation node management process 52. For example, if the handle includes an area where the process image 321 is memory mapped, the proxy process 511 issues a memory store directly to the location specified in the program. For example, when the handle is an ID, a process ID, a file descriptor, or the like given by the calculation node management process 52, the proxy process 511 calculates the position on the process image 321 and the contents to be written to the calculation node. To the management process 52. Then, the proxy process 511 requests the computing node management process 52 to write to the process image 321.
  • the proxy process 511 sets an initial value as a register value in the context 611A stored in the calculation process DB 521.
  • the proxy process 511 requests the execution start of the calculation program (step S005). Specifically, the proxy process 511 changes the calculation process to an executable state using the handle acquired from the calculation node process 52. By changing the calculation process to the executable state in this way, when there is a calculation core 611 that is not used (not in the instruction execution state) in the calculation node 6, execution of the program is started by the calculation core 611. Details of this operation will be described later (see step S055).
  • FIG. 9 is a flowchart illustrating an example of an operation when the calculation core 611 corresponding to the proxy process 511 is stopped from the control node 5 side.
  • the calculation node management process 52 refers to the process correspondence table 522 and associates the “calculation process ID” with the “calculation process ID” indicating the calculation process associated with the process image 321 to be stopped.
  • the assigned “assigned calculation core number” is acquired.
  • step S014 when the calculation node management process 52 cannot find the “assigned calculation core number” associated with the “calculation process ID”, it does not perform the operations of step S012 and step S013.
  • the context state of the calculation process DB 521 is updated.
  • step S011 when the calculation core 611 is assigned to the calculation process (YES in step S011), the calculation node management process 52 sends the control register group 6112 to the control register group 6112 via the register group access unit 6115.
  • the stop of the calculation core 611 is instructed (step S012). That is, when the calculation core 611 is assigned to the calculation process, the calculation node management process 52 instructs the control register group 6112 to “stop execution”.
  • calculation node management process 52 checks the operation state of the calculation core 611 with respect to the control register group 6112 via the register group access unit 6115 (step S013).
  • calculation node management The process 52 confirms the operation state of the calculation core 611 again after a predetermined time has elapsed.
  • the calculation node management process 52 determines that the calculation core number (assigned calculation core number) is stopped. ) Including the process correspondence table 522 is updated. Further, the management node management process 52 updates the state of the context 611A in the calculation process DB 521 including the calculation process ID associated with the assigned calculation core number (step S014).
  • FIG. 10 is a flowchart illustrating an example of an operation when an exception occurs during execution of a program (instruction, calculation process) in the calculation core 611.
  • step S021 it is assumed that an exception occurs during execution of a program by the calculation core 611 (step S021). Note that the definition of the exception has already been described when the configuration of the parallel computer 1 is described, and will be omitted.
  • the exception detection unit 6113 detects the generated exception. Then, the exception detection unit 6113 instructs the control register group 6112 to “stop execution” (step S022).
  • the exception detection unit 6113 notifies the exception notification unit 6114 of the occurrence of the exception.
  • the exception notification unit 6114 that has received the notification of the occurrence of the exception from the exception detection unit 6113 notifies the calculation node management process 52 in the control node 5 of the occurrence of the exception (step S023).
  • the exception notification unit 6114 may be realized by any method.
  • FIG. 11 is a flowchart showing an example of an operation when processing a system call called by the calculation node 6.
  • the process image 321 calls a system call while operating on the calculation core 611, in general ABI (Application Binary Interface), the system call number and the general-purpose register or stack on the processor core 311 (calculation core 611) are stored. Write arguments.
  • the OS is not incorporated in the calculation core 611 of this embodiment. Therefore, it becomes necessary to perform an operation described later.
  • the calculation process of the present embodiment writes the system call number and the argument in the argument write area 5111 in the proxy process 511 (step S031).
  • the proxy process 511 in which the system call number and the argument are written determines whether or not there is a pointer in the argument of the system call to be called (step S032). If there is no pointer in the argument (NO in step S032), step S033 and step S034 described later are skipped, and the processing of step S035 described later is performed by the calculation core 611. On the other hand, if there is a pointer in the argument (YES in step S032), proxy process 511 continues to determine whether the size of the data referred to by the pointer is smaller than the size of argument write area 5111.
  • the proxy process 511 may refer to the value of an argument that specifies the size when determining the size of the data to be referred to. Alternatively, the proxy process 511 may use an argument type for size determination (step S033).
  • step S034 described later is skipped, and the calculation core 611 performs the process of step S035 described later.
  • proxy process 511 writes the reference reference data of the pointer in argument write area 5111 (step S034). ).
  • the calculation core 611 generates a system call exception (step S035).
  • system call exceptions are handled in the same node (in the calculation node 6).
  • the calculation node 6 notifies the control node 5 by a method such as interruption. Since the details of the exception generation process have already been described, a description thereof will be omitted.
  • the calculation node management process 52 that has received the notification of the occurrence of the exception refers to the process correspondence table 522 and obtains the calculation process ID from the number of the calculation core 611 that is the source of the exception.
  • the calculation node management process 52 refers to the calculation process DB 521 to obtain the proxy process 511 stored corresponding to the number of the calculation core 611 that is the exception generation source. Subsequent processing is performed mainly by the proxy process 511.
  • the proxy process 511 analyzes the argument written in its own argument write area 5111 and checks whether or not it is necessary to transfer the buffer in order to execute the system call (step S036).
  • proxy process 511 When proxy process 511 confirms that buffer transfer is necessary (YES in step S036), proxy process 511 secures data buffer area 5112 in proxy process 511 (step S037). Then, the proxy process 511 instructs the data transfer circuit 33 (DMA engine function 331) to transfer the contents of the buffer of the process image 321 corresponding to the proxy process 511 to the data buffer area 5112 of the proxy process 511. . Thereby, the contents of the buffer are transferred from the calculation node 6 to the control node 5 (step S038). Such transfer of the contents of the buffer from the calculation node 6 to the control node 5 is required by, for example, a write system call.
  • the proxy process 511 makes a system call to the control node OS 50. (Execute a function) (step S039).
  • the proxy process 511 determines whether it is necessary to transfer the contents of the buffer in the proxy process 511 to the communication buffer area 3211 of the process image 321 corresponding to the proxy process 511. (Step S040).
  • the proxy process 511 instructs the data transfer circuit 33 (DMA engine 331) to transfer the buffer (step S041).
  • DMA engine 331 The transfer of the buffer from the control node 5 to the calculation node 6 is required by, for example, a read system call.
  • the calculation node management process 52 sets the return value of the system call. Write to the general-purpose register group 6111 (step S042). Note that the return value of the system call to the general-purpose register group 6111 by the calculation node management process 52 is written via the register group access 6115 in the calculation core 611. In general ABI, the return value of the system call is written in a general-purpose register in the same node. However, in the parallel computer 1, the return value of the system call is written from the control node 5 to the general-purpose register group 6111 of the calculation node 6.
  • step S043 Since the operation when the calculation core 611 starts executing the program has already been described, a description thereof will be omitted.
  • FIG. 12 is a flowchart illustrating an example of an operation when context switching is performed when there are more calculation processes than the number of calculation cores 611.
  • the calculation node management process 52 in the control node 5 selects the calculation core 611 to be stopped (step S051).
  • the selection of the calculation core 611 to be stopped by the calculation node management process 52 is performed, for example, every time a predetermined time elapses.
  • An arbitrary method may be adopted as a method for selecting the computation core 611 to be stopped by the computation node management process 52.
  • step S052 the calculation node management process 52 stops the calculation core 611 selected in step S051 (step S052). Since the operation when stopping the calculation core 611 has already been described, the description thereof is omitted.
  • the calculation node management process 52 accesses the general-purpose register group 6111 using the register group access unit 6115 in the stopped calculation core 611. Then, the management node management process 52 raises the context 611A from the general-purpose register group 6111 and stores the raised context 611A in the calculation process DB 521 (step S053).
  • the management process 52 for the computing node can copy the process image 321 to the control node 5. In this way, by copying the process image 321 to the control node 5, it is possible to create checkpoint data for each process.
  • the management process for calculation node 52 updates the process correspondence table 522 based on the calculation process ID that operates next in the calculation core 611 (step S054).
  • the calculation process ID that operates next in the calculation core 611 is selected according to an existing scheduling algorithm.
  • the calculation node management process 52 only needs to be configured so that the calculation process ID can be selected by some method.
  • the management process for calculation node 52 refers to the calculation process DB 521 based on the calculation process ID that operates next in the calculation core 611, and obtains the register value (context) of the calculation process ID that operates next in the calculation core 611. . Then, the calculation node management process 52 stores the acquired register value in the context 611A of the general-purpose register group 6111 included in the calculation core 611 via the register group access unit 6115 (step S055).
  • checkpoint data in the next calculation process operating in the calculation core 611 it can be restored to the process image 321 at the time of checkpoint acquisition by transferring to the calculation node at this timing.
  • the computation node management process 52 starts executing the context-switched computation core (step S056).
  • FIG. 13 is a flowchart showing an example of the operation when the program being executed on the computation node 6 is terminated.
  • the calculation core 611 When the program being executed on the calculation core 611 has ended, the calculation core 611 first notifies the proxy process 511 of an exception that ends the calculation process (step S061). Examples of exceptions that terminate the calculation process include an exit system call and a memory access system exception. Note that the description of the occurrence of the exception has been already described and will be omitted.
  • the proxy process 511 that has received the exception notification notifies the calculation node management process 52 of the end of the calculation process (step S062).
  • the calculation node management process 52 notified of the end of the calculation process searches the process correspondence table 522 and releases the resources used by the calculation process (step S063). This ends the calculation process.
  • the management node management process 52 first deletes the context 611A stored in the calculation process DB 521 associated with the proxy process 511 to be terminated. In addition, the management node management process 52 releases the process image 321 corresponding to the proxy process 511 ending from the memory 32. If the context 611A corresponding to the proxy process 511 to be terminated is operating in any of the calculation cores 611 in the calculation node 6, the calculation node management process 52 releases the calculation core 611. Can be configured. In this case, when the calculation core 611 is released, the calculation node management process 52 may be configured to context-switch the context of the calculation core 611 to be released to another context.
  • the proxy process 511 ends (step S064).
  • step S062, step S063, and step S064 may not be performed in this order.
  • the proxy process 511 may be terminated when the termination system call is received in step S061.
  • the calculation process end is notified to the calculation node management process 52.
  • the calculation node management process 52 that has received the notification of the completion of the calculation process releases the resources of the calculation process to be ended and ends the calculation process.
  • the parallel computer 1 can adopt a calculation model realized by a general computer on the calculation node 6 where the OS does not operate.
  • the parallel computer 1 including one control node 5 and a plurality of calculation nodes 6 has been described.
  • the parallel computer 1 may include a plurality of node groups including, for example, one control node 5 and a plurality of calculation nodes 6. That is, the number of control nodes 5 is not necessarily limited to 1.
  • the parallel computer 1 includes the control node 5 in which the OS is incorporated and the computation node 6 in which the OS is not incorporated.
  • a proxy process 511 and a calculation node management process 52 are deployed on the control node 5.
  • the calculation node 6 includes a general-purpose register group 6111 and a control register group 6112.
  • the control node 5 can manage the operation of the calculation node 6. That is, the parallel computer 1 can employ a calculation model realized by a general computer on the calculation node 6 where the OS does not operate. As a result, the parallel computer 1 can solve the problems of OS jitter and cache contamination due to the OS operating on the computation node 6.
  • control node 5 can perform control of an I / O device that requires privilege on behalf of the user.
  • control node 5 adopts a commodity hardware configuration, it is not necessary to write a dedicated device driver for the calculation node 6. In other words, the problems of loss of versatility and rising development costs can be solved.
  • the calculation core 611 in this embodiment includes an exception detection unit 6113 and an exception notification unit 6114.
  • the exception process can be detected and notified to the control core 6 including the OS.
  • the control node 5 can provide an OS function such as a system call to the calculation node, for example. That is, it is possible to adopt a calculation model realized by a general computer on the calculation node 6 where the OS does not operate.
  • FIG. 14 is a block diagram showing a configuration of the information processing apparatus 7 in the present embodiment.
  • this embodiment includes a control unit (control node) having an OS function and a calculation unit (calculation node) having no OS function. Therefore, if the OS function area and the OS function area do not exist, this embodiment can be implemented without necessarily using the parallel computer 1 described in the first embodiment. .
  • the information processing apparatus 7 including two areas, that is, an area that is under the control of the OS and an area that is not under the control of the OS will be described.
  • the information processing apparatus 7 in the present embodiment is realized by, for example, a semiconductor integrated circuit including the above two areas.
  • the information processing apparatus 7 includes an OS operation control unit 8 that is an area that is under the control of the OS and an OS non-operation calculation unit that is an area that is not under the control of the OS. 9.
  • the information processing apparatus 7 according to the present embodiment employs a calculation model realized by a general computer on the OS non-operation calculation unit 9 in which the OS does not operate (not under OS control).
  • An operation control unit 8 and an OS non-operation calculation unit 9 are configured.
  • an OS that is operated by the OS operation control unit 8 is referred to as a control unit OS 80.
  • the control unit OS 80 for example, a commodity OS such as Linux or Windows can be used.
  • the OS operation control unit 8 and the OS non-operation calculation unit 9 are connected so as to communicate with each other.
  • the OS operation control unit 8 includes a storage device (such as a memory) (not shown) and an arithmetic device (such as a CPU).
  • the OS operation control unit 8 is an area placed under the control of the control unit OS 80. Therefore, the OS operation control unit 8 can virtualize the hardware (storage device, arithmetic device) under the control. Therefore, in the following, a process for development on the OS operation control unit 8 will be described. Note that these processes can be realized by an arithmetic device under the control of the OS operation control unit 8 reading and executing a program stored in a storage device under the control of the OS operation control unit 8.
  • the control unit OS 80 develops a proxy process 81 and an OS non-operation calculation unit management process 82.
  • the OS non-operation calculation unit management process 82 includes a calculation process DB 83 and a process correspondence table 84.
  • the configuration of the proxy process 81 is the same as that of the first embodiment.
  • the OS non-operating calculation unit management process 82 corresponds to the calculation node management process in the first embodiment. Therefore, detailed description of each component is omitted.
  • the OS non-operation calculation unit 9 includes a calculation core 91 and a memory 92. Further, the OS non-operation calculation unit 9 includes a data transfer circuit (not shown).
  • the configuration of the calculation core 91 is the same as that of the first embodiment.
  • the configurations of the memory 92 and the data transfer circuit are the same as those in the first embodiment. Therefore, the details of each configuration are omitted.
  • the information processing apparatus 7 in this embodiment is configured in this way. With such a configuration, the information processing apparatus 7 performs the same operation as in the first embodiment. Since the operation of the information processing apparatus 7 is the same as that of the first embodiment, a description thereof will be omitted.
  • the information processing apparatus 7 in this embodiment includes the OS operation control unit 8 that is under the control of the OS and the OS non-operation calculation unit 9 that is not under the control of the OS. Further, on the OS operation control unit 8, a proxy process 81 and an OS non-operation calculation unit management process 82 are deployed. Further, the OS non-operation calculation unit 9 includes a calculation core 91. Therefore, the OS non-operation calculation unit 9 can execute the calculation process in the same manner as the OS is provided. That is, the information processing apparatus 7 can solve the problems of OS jitter and cache contamination caused by the OS operating on the OS non-operation calculator 9.
  • the OS operation control unit 8 can perform the control of the I / O device requiring the privilege on behalf of the OS non-operation calculation unit 9.
  • the OS operation control unit 8 adopts a commodity hardware configuration, it is not necessary to write a dedicated device driver for the OS non-operation calculation unit 9. In other words, the problems of loss of versatility and rising development costs can be solved.
  • FIG. 15 is a block diagram showing an outline of the configuration of the information processing apparatus 70 in the present embodiment.
  • the information processing apparatus 70 in the present embodiment includes a control core 71 and a calculation core 72.
  • the control core 71 includes a calculation core control unit 711.
  • the calculation core 72 includes a calculation processing control unit 721 and an exception detection unit 722.
  • control core 71 is an arithmetic unit in which an operating system (OS) is incorporated.
  • calculation core 72 is an arithmetic unit that performs a predetermined calculation process by being controlled by the control core 71. Specifically, an operating system is not incorporated in the calculation core 72.
  • the calculation core control unit 711 is a part that instructs the stopped calculation core 72 to start calculation processing performed by the calculation core. As will be described later, when the calculation core controller 711 instructs the stopped calculation core 72 to start the calculation process, the stopped calculation core 72 starts the calculation process.
  • the calculation processing control unit 721 is a part that controls the calculation core 72 so that a calculation processing start instruction is issued in response to a calculation processing start instruction from the calculation core control unit 711.
  • the exception detection unit 722 is a part that detects a preset exception process that occurs during execution of a calculation process and stops the execution of the calculation process in which the exception process has occurred. Examples of exception processing set in advance include operation exceptions, memory access system exceptions, and exceptions mounted on general processors.
  • calculation core 72 that has once stopped executing the calculation process does not start a new calculation process and continues to stop until receiving an instruction to start another calculation process from the calculation core control unit 711 of the control core 71.
  • the information processing apparatus 70 includes the control core 71 in which the OS is incorporated and the calculation core 72.
  • the control core 71 includes a calculation core control unit 711
  • the calculation core 72 includes a calculation processing control unit 721.
  • the calculation core 72 can perform a predetermined calculation process by being controlled by the control core 71. That is, the information processing apparatus 70 can perform predetermined calculation processing on the calculation core 72 where the OS does not operate. As a result, the information processing apparatus 70 can solve the problems of OS jitter and cache contamination caused by the OS operating on the calculation core 72.
  • control core 71 can perform control of an I / O device that requires a privilege on behalf of the user.
  • control core 71 adopts a commodity hardware configuration, there is no need to write a dedicated device driver for the calculation core 72. In other words, the problems of loss of versatility and rising development costs can be solved.
  • the calculation core 72 in this embodiment includes an exception detection unit 722.
  • the calculation core 72 can detect an exception process that occurs during the execution of the calculation process, and can stop the execution of the calculation process in which the exception process has occurred.
  • the information processing apparatus 70 can perform predetermined calculation processing more completely on the information processing apparatus 70 in which the OS does not operate.
  • a program according to another embodiment of the present invention is a program for causing an information processing apparatus to realize the following processes (a) to (c).
  • the information processing apparatus includes a control core in which an operating system is incorporated, and at least one calculation core that is controlled by the control core and performs predetermined calculation processing.
  • a process for instructing a stopped calculation core to start a calculation process performed by the calculation core (B) a process of controlling the calculation core so as to start the calculation process in response to an instruction to start the calculation process; (C) A process of detecting a preset exception process that occurs during execution of a calculation process and stopping the execution of the calculation process in which the exception process has occurred.
  • the calculation core starts predetermined calculation processing in response to an instruction to start calculation processing from the control core. Then, when a preset exception process occurs during execution of the calculation process by the calculation core, the calculation core detects the exception process and stops the calculation process in which the exception process has occurred. Is the method.
  • FIG. 16 is a block diagram showing an outline of the configuration of the calculation processing apparatus 10 in the present embodiment.
  • the calculation processing device 10 is a device that performs predetermined calculation processing under the control of an external device. That is, the calculation processing apparatus 10 does not incorporate an OS. As shown in FIG. 16, the calculation processing device 10 in this embodiment includes a calculation processing control unit 101 and an exception detection unit 102.
  • the calculation processing control unit 101 is a part that controls the calculation processing device to start the calculation processing in response to an instruction to start the calculation processing from an external device.
  • the exception detection unit 102 is a part that detects a preset exception process that occurs during the execution of the calculation process. Examples of exception processing set in advance include operation exceptions, memory access system exceptions, and exceptions mounted on general processors.
  • the calculation processing device 10 is configured to stop the execution of the calculation processing in which the exception processing occurs when the exception detection unit 102 detects the exception processing. Note that the calculation processing apparatus 10 that has stopped executing the calculation process does not start the calculation process and continues to stop until receiving an instruction to start the calculation process again from the external device.
  • the calculation processing device 10 in the present embodiment is a device that starts the calculation processing in response to an instruction to start the calculation processing from the external device. Further, the calculation processing apparatus 10 includes a calculation processing control unit 101. With such a configuration, the calculation processing apparatus 10 can perform a predetermined calculation process under the control of an external apparatus even though it does not include an OS. As a result, the calculation processing apparatus 10 can solve the problems of OS jitter and cache contamination caused by the OS operating on the calculation processing apparatus 10.
  • the calculation processing device 10 in the present embodiment includes an exception detection unit 102.
  • the calculation processing apparatus 10 can detect an exception process that occurs during execution of the calculation process, and can stop the execution of the calculation process in which the exception process has occurred. That is, the calculation processing device 10 can perform predetermined calculation processing more completely on the calculation processing device 10 in which the OS does not operate.
  • the above-described calculation processing device can be realized by incorporating a predetermined program into the calculation processing device.
  • the program according to another embodiment of the present invention includes a process for controlling the calculation processing device to start the calculation processing in response to an instruction to start the calculation processing from the external device. And a process for detecting a preset exception process that occurs during the execution of the calculation process.
  • the program is a program having a function of stopping execution of a calculation process in which an exception process occurs when the exception process is detected.
  • the calculation processing method executed by the operation of the above-described calculation processing apparatus starts predetermined calculation processing in response to an instruction to start calculation processing from an external device, and is preset during execution of the calculation processing.
  • This is a calculation processing method in which when the exception processing occurs, the exception processing is detected and the calculation processing in which the exception processing has occurred is stopped.
  • the control core includes a calculation core control unit that instructs the calculation core that is stopped to instruct the calculation core to start the calculation process
  • the calculation core includes calculation processing control means for controlling the calculation core so as to start the calculation processing in response to an instruction to start the calculation processing from the calculation core control means, and during execution of the calculation processing.
  • An exception detection means for detecting the exception processing that has been set in advance and stopping the calculation processing in which the exception processing has occurred, Information processing device.
  • the information processing apparatus includes a control core in which an operating system is incorporated, and at least one calculation core that is controlled by the control core and performs predetermined calculation processing. Further, the control core includes a calculation core control means. Further, the calculation core includes calculation processing control means. With this configuration, it is possible to perform a predetermined calculation process on a calculation core where the OS does not operate. As a result, the information processing apparatus can solve the problems of OS jitter and cache contamination caused by the OS operating on a calculation core that performs calculation processing.
  • the calculation core includes the exception detection means.
  • the calculation core can detect an exception process that occurs during the execution of the calculation process, and can stop the execution of the calculation process in which the exception process has occurred.
  • the information processing apparatus can perform predetermined calculation processing more completely on the information processing apparatus in which the OS does not operate.
  • (Appendix 2) An information processing apparatus according to attachment 1, wherein The calculation core control means instructs the calculation core to start the calculation process according to the exception process detected by the exception detection means, The calculation processing control means controls the calculation core to start the calculation processing when receiving an instruction to start the calculation processing from the calculation core control means.
  • Information processing device An information processing apparatus according to attachment 1, wherein The calculation core control means instructs the calculation core to start the calculation process according to the exception process detected by the exception detection means, The calculation processing control means controls the calculation core to start the calculation processing when receiving an instruction to start the calculation processing from the calculation core control means.
  • control core of the information processing apparatus is configured to instruct the calculation core to start the calculation process according to the exception process detected by the exception detection unit.
  • the information processing apparatus can perform predetermined calculation processing more completely on the information processing apparatus in which the OS does not operate.
  • Appendix 3 An information processing apparatus according to appendix 2, wherein The exception detection means notifies the control core that the exception detection means has detected the exception processing, The calculation core control means instructs the calculation core to start the calculation process according to the exception process indicated by the notification received from the exception detection means. Information processing device.
  • the calculation core is configured to notify the control core when an exception is detected.
  • the information processing apparatus can perform predetermined calculation processing more completely on the information processing apparatus in which the OS does not operate.
  • the calculation core includes data transfer means for transferring data necessary for processing the exception processing detected by the exception detection means to the control core,
  • the control core includes exception processing proxy means for processing the exception processing on behalf of the calculation core using the data transferred by the data transfer means.
  • the calculation core includes data transfer means, and the control core includes exception handling proxy means.
  • the control core can handle exception processing on behalf of the calculation core.
  • system call processing can be performed by the control core on behalf of the calculation core.
  • appendix 5 An information processing apparatus according to appendix 4, wherein The data transfer means, when the exception processing generated in the calculation core is a system call, transfers data necessary for the processing of the system call to a buffer area included in the exception processing proxy means of the control core. Information processing device.
  • the calculation core control means is configured to be able to instruct the calculation core to stop the calculation processing performed by the calculation core, and to the calculation core that is stopping the calculation processing. Is configured to be able to instruct to change the content of the calculation process to be processed by the calculation core,
  • the calculation processing control means controls the calculation core to stop the calculation processing being executed in response to an instruction to stop the calculation processing from the calculation core control means, and from the calculation core control means Changing the content of the calculation process to be processed by the calculation core in response to an instruction to change the content of the calculation process; Information processing device.
  • control core is configured to be able to issue an instruction to stop the calculation process and an instruction to change the calculation process to the calculation core. Further, the calculation core can stop and change the calculation process in accordance with an instruction from the control core. As a result, the information processing apparatus can perform a context switch, for example.
  • Appendix 7 An information processing apparatus according to appendix 6, wherein When the number of the calculation processes performed by the calculation core is larger than the number of the calculation cores, The calculation core control means selects the calculation core that is executing the calculation processing based on a predetermined criterion at a predetermined time, and stops the calculation processing by the selected calculation core. To change the content of the calculation process to be processed by the calculation core that stopped the calculation process, Information processing device.
  • a computer including an information processing apparatus including a control core in which an operating system is incorporated and at least one calculation core controlled by the control core and performing predetermined calculation processing, A calculation core control process that instructs the calculation core to stop the calculation core to start the calculation process; A calculation processing control process for controlling the calculation core to start the calculation process in response to an instruction to start the calculation process; A computer-readable recording for recording a program that detects a preset exception process that occurs during execution of the calculation process and that executes an exception detection process that stops execution of the calculation process in which the exception process has occurred Medium.
  • Appendix 8-1 The recording medium according to appendix 8, wherein The calculation core control process includes a process of instructing the calculation core to start the calculation process according to the exception process detected by the exception detection process. recoding media.
  • appendix 9 The recording medium according to appendix 8, wherein The exception detection process includes a process of notifying the control core that the exception process has been detected. recoding media.
  • Appendix 10 The recording medium according to appendix 9, wherein A data transfer process for transferring data necessary for processing the detected exception process to the control core; A program for causing the computer to further execute an exception processing proxy process that processes the exception process on behalf of the calculation core using the transferred data; recoding media.
  • Appendix 10-1 The recording medium according to appendix 10, wherein The data transfer process includes a process of transferring data necessary for the process of the system call to a buffer area included in the control core when the exception process generated in the calculation core is a system call. recoding media.
  • the calculation core control process instructs the calculation core to stop the calculation process performed by the calculation core and sets the calculation core to be processed by the calculation core.
  • the calculation process control process includes a process of stopping the calculation process being executed in response to an instruction to stop the calculation process by the calculation core control process, and an instruction to change the content of the calculation process by the calculation core control process And changing the content of the calculation process to be processed by the calculation core according to recoding media.
  • the calculation core control process selects the calculation core that is executing the calculation process based on a predetermined criterion at a predetermined time, and stops the calculation process by the selected calculation core. Including a process of changing the content of the calculation process to be processed by the calculation core, recoding media.
  • the calculation core In response to an instruction to start the calculation process from the control core, the calculation core starts the predetermined calculation process, The calculation core detects the exception processing when a preset exception processing occurs during execution of the calculation processing by the calculation core, and stops the calculation processing in which the exception processing has occurred. Information processing method.
  • a calculation processing device that performs predetermined calculation processing under the control of an external device, A calculation processing control means for controlling the calculation processing device so as to start the calculation processing in response to an instruction to start the calculation processing from an external device, and a preset exception processing generated during the execution of the calculation processing And an exception detection means for stopping the execution of the calculation processing in which the exception processing has occurred, Calculation processing device.
  • Appendix 18 The calculation processing device according to appendix 16 or 17, Data transfer means for transferring data necessary for processing the exception processing detected by the exception detection means to the external device; Calculation processing device.
  • the calculation processing device according to any one of supplementary notes 16 to 18,
  • the calculation processing control means controls the calculation processing device to stop the calculation processing being executed in response to an instruction to stop the calculation processing from the external device, and the calculation processing from the external device. Changing the content of the calculation processing to be processed by the calculation processing device in accordance with an instruction to change the content of Calculation processing device.
  • a calculation process control process for controlling the calculation processing apparatus to start the calculation process in response to an instruction to start the calculation process from an external apparatus, and a preset exception process that occurs during the execution of the calculation process
  • a computer-readable storage medium storing a program for executing an exception detection process for stopping execution of the calculation process in which the exception process has occurred.
  • Appendix 21 The storage medium according to appendix 20, wherein The exception detection process includes a process of notifying an external device that the exception process has been detected. Storage medium.
  • Appendix 22 The storage medium according to appendix 20 or 21, wherein Recording a program for causing the calculation processing device to further execute a data transfer processing for transferring data necessary for processing the detected exception processing to the external device; Storage medium.
  • the storage medium according to any one of appendices 20 to 22,
  • the calculation process control process is a process of stopping the calculation process being executed in response to an instruction to stop the calculation process from the external apparatus, and an instruction to change the content of the calculation process from the external apparatus. And changing the content of the calculation process to be processed by the calculation core. Storage medium.
  • the programs described in the above embodiments and supplementary notes are stored in a storage device or recorded on a computer-readable recording medium.
  • the recording medium is a portable medium such as a flexible disk, an optical disk, a magneto-optical disk, and a semiconductor memory.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)

Abstract

 OSジッタやキャッシュ汚染が生じるという問題、及び、汎用性の喪失、開発費の高騰という問題、を解決する。情報処理装置は、オペレーティングシステムが組み込まれた制御コアと、制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備える。制御コアは、停止している計算コアに対して当該計算コアが行う計算処理の開始を指示する計算コア制御部を備える。計算コアは、計算コア制御部からの計算処理の開始の指示に応じて計算処理の開始を行うように当該計算コアを制御する計算処理制御部と、計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した計算処理の実行を停止する例外検出部と、を備える。

Description

情報処理装置、情報処理方法、記録媒体、計算処理装置、計算処理方法
 本発明は、情報処理装置、情報処理方法、記録媒体、計算処理装置、計算処理方法に係り、特に、複数のプロセッサを備え並列計算を行う情報処理装置、情報処理方法、プログラム、計算処理装置、計算処理方法に関する。
 プロセッサとメモリの対からなる複数のノードをインターコネクトで接続した、NUMA(Non-Uniform Memory Access)型の並列計算機が知られている。NUMA型の並列計算機は、プロセッサと同一ノードのローカルメモリに対するアクセスコストと、他ノードのリモートメモリに対するアクセスコストと、が不均一になるシステムである。
 このような並列計算機の一例として、1台以上のプロセッサと、該1台以上のプロセッサにより使用される主メモリと、からなる複数のクラスタを備え、プロセスの仮想空間の一部に実メモリに常駐する通信領域を設けた並列計算機が知られている。この並列計算機は、プロセス間データ通信のオーバーヘッドを削減することが出来る(特許文献1)。
 また、制御用ノードと演算用ノードとを備え、演算用ノードにリモートプロセスのみを実行するように設定することが出来る計算機システムが知られている(特許文献2)。
特開平06-019856号公報 特開2008-165318号公報
 一般に、このような並列計算機では、OS(Operating System)等のシステム制御プログラムからの干渉(タイマ割り込み等)に起因する割り込み処理が発生する。この結果、各ノードのアプリケーションの実行速度にばらつきが出ることがある。したがって、他プロセッサとの同期待ちが必要となり、並行プログラムの実行速度が低下するOSジッタ問題と呼ばれる問題が発生することがある。
 また、カーネルプロセス等のOS処理が動作した時に発生したメモリアクセスにより、キャッシュにアプリケーションプログラムで利用されないデータが格納されることがある。その結果、アプリケーションプログラムで利用されるデータがキャッシュから追い出されるキャッシュ汚染と呼ばれる問題が発生することがある。
 このような問題を解決する手法としては、例えば、SMP(Symmetric Multiple Processor)計算機におけるロックの制約によるシステムコールを実行するプロセッサの限定、マイクロカーネルによる分散OS、などがある。しかしながら、これらOS機能の他のノードへの権限移譲(オフロード)という方法では、接続されるI/O(Input/Output)デバイス毎に専用のデバイスドライバを開発する必要が生じる。その結果、多様なデバイスのサポートをすることが困難になっていた。
 また、このような問題を緩和する方法として、アクセラレータ型の計算機を採用することも考えられる。しかしながら、アクセラレータ型の計算機ではOSが動作しない。そのため、アクセラレータ型の計算機では、広く普及しているプログラミング言語(C言語など)が従うAPI(Application Programming Interface)(例えば、POSIX(Portable Operating System Interface for UNIX(登録商標)) API)がなく、基本的なシステム制御を行うことができない。そのため、アクセラレータ型の計算機においては、専用言語での開発が必要となっており、過去のプログラミング資産の活用を困難なものにしていた。また、プログラミング資産の最適化などにも困難を伴う場合があった。
 ここで、OS開発コストを低減するための技術としては、仮想機械による仮想化も考えられる。例えば、コモディティとは異なるアーキテクチャの計算機に対して、コモディティのアーキテクチャをエミュレートする仮想機械を導入することで、OSやデバイスドライバの開発を不要とすることが出来る。一般に、仮想機械は通常OSよりも単純である。そのため、仮想機械を導入することで開発コストを低減することが出来ると考えられる。しかしながら、仮想機械による仮想化を行うと、仮想機械によるエミュレーションのためにオーバーヘッドが発生してしまう。また、仮想機械による仮想化では、上述したOSジッタやキャッシュの汚染という問題を解決することは出来ない。
 このように、並列計算機にはOSジッタやキャッシュ汚染の問題が生じており、それを解決しようとすると、汎用性を失ったり開発費が高騰したりするなどの問題が生じていた。
 そこで、本発明の目的は、上述した課題である、並列計算機にはOSジッタやキャッシュ汚染が生じるという問題、及び、汎用性の喪失、開発費の高騰という問題、を解決する情報処理装置を提供することにある。
 かかる目的を達成するため本発明の一形態である情報処理装置は、
 オペレーティングシステムが組み込まれた制御コアと、前記制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備え、
 前記制御コアは、停止している前記計算コアに対して当該計算コアが行う前記計算処理の開始を指示する計算コア制御手段を備え、
 前記計算コアは、前記計算コア制御手段からの前記計算処理の開始の指示に応じて前記計算処理の開始を行うように当該計算コアを制御する計算処理制御手段と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した前記計算処理の実行を停止する例外検出手段と、を備えている。
 また、本発明の他の形態であるコンピュータで読み取り可能な記録媒体は、
 オペレーティングシステムが組み込まれた制御コアと、前記制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備えた情報処理装置を備えたコンピュータに、
 停止している前記計算コアに対して当該計算コアが行う前記計算処理の開始を指示する計算コア制御処理と、
 前記計算処理の開始の指示に応じて前記計算処理の開始を行うように前記計算コアを制御する計算処理制御処理と、
 前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した計算処理の実行を停止する例外検出処理と、を実行させるプログラムを記録する。
 また、本発明の他の形態である情報処理方法は、
 制御コアからの計算処理の開始の指示に応じて計算コアが所定の前記計算処理を開始し、
 前記計算コアは、前記計算コアによる前記計算処理の実行中に予め設定された例外処理が発生した場合には、当該例外処理を検出し、当該例外処理が発生した前記計算処理を停止する。
 また、本発明の他の形態である計算処理装置は、
 外部装置からの制御により所定の計算処理を行う計算処理装置であって、
 外部装置からの計算処理の開始の指示に応じて前記計算処理の開始を行うように前記計算処理装置を制御する計算処理制御手段と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した前記計算処理の実行を停止する例外検出手段と、を備える。
 また、本発明の他の形態であるコンピュータ読み取り可能な記憶媒体は、
 外部装置からの計算処理の開始の指示に応じて前記計算処理の開始を行うように前記計算処理装置を制御する計算処理制御処理と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した前記計算処理の実行を停止する例外検出処理と、を実行させるプログラムを記憶する。
 また、本発明の他の形態である計算処理方法は、
外部装置からの計算処理の開始の指示に応じて所定の前記計算処理を開始し、
 前記計算処理の実行中に予め設定された例外処理が発生した場合には、当該例外処理を検出し、当該例外処理が発生した前記計算処理を停止する。
 本発明は、以上のように構成されることにより、OSジッタやキャッシュ汚染の問題を解決しつつ安価で汎用性のある情報処理装置を提供することが出来る。
第1の実施形態が想定する並列計算機の構成を示すブロック図である。 第1の実施形態における並列計算機の構成を示すブロック図である。 図2で示す計算ノードが備える計算コアの構成を示すブロック図である。 図2で示す代理プロセスの構成を示す機能ブロック図である。 第1の実施形態におけるプロセス対応表に対応づけて格納するデータの一例を示す表である。 第1の実施形態における計算プロセスDBに格納するデータの一例を示す表である。 第1の実施形態において、計算プロセスが開始してから終了するまでに、必要となる動作がどのように作用するかを示したフローチャートである。 計算プロセスの開始時の動作を示すフローチャートである。 計算プロセスの実行を停止させるときの動作を示すフローチャートである。 計算プロセス上で発生した例外を処理する際の動作を示すフローチャートである。 計算プロセスがOSサービスを必要とする場合の動作を示すフローチャートである。 計算プロセスの計算コアへの割り当ての変更を行う際の動作を示すフローチャートである 計算プロセスを終了させる際の動作を示すフローチャートである。 第2の実施形態における情報処理装置の構成を示すブロック図である。 第3の実施形態における情報処理装置の構成の概略を示すブロック図である。 図4の実施形態における計算処理装置の構成の概略を示すブロック図である。
 <実施形態1>
 本発明の第1の実施形態を、図1乃至図13を用いて説明する。図1は、本実施形態が想定する並列計算機1の構成を示すブロック図である。図2は、本実施形態における並列計算機1の構成を示すブロック図である。図3は、計算ノード6が備える計算コア611の構成を示すブロック図である。図4は、代理プロセス511の構成を示す機能ブロック図である。図5は、プロセス対応表522に対応づけて格納するデータの一例を示す表である。図6は、計算プロセスDB521に格納するデータの一例を示す表である。図7は、第1の実施形態において、計算プロセスが開始してから終了するまでに、必要となる動作がどのように作用するかを示したフローチャートである。図8乃至13は、計算プロセスが開始してから終了するまでに必要となる動作を示すフローチャートである。
 (構成)
 本発明の第1の実施形態では、NUMA型のメモリを持つ並列計算機1について説明する。NUMAとは、メモリとプロセッサとの対からなるノードが複数存在し、それらをインターコネクトで接続したものである。本実施形態における並列計算機1は、例えば、HPC(High Performance Computing)分野において利用される。
 まず、本実施の形態に係る並列計算機1の基本的な構成について図1を用いて説明する。図1に示すように、本実施形態における並列計算機1は、ノード2と、ノード3とを備えている。ノード2は、CPU(Central Processing Unit)21と、メモリ22と、データ転送回路23と、を備えている。ノード3は、CPU31と、メモリ32と、データ転送回路33と、を備えている。また、ノード2とノード3との間は、ノード間通信デバイス4(データ転送回路の一部を含む)を介して通信可能に接続されている。
 このように、本実施形態における並列計算機1が備えるノード2とノード3とは共に、CPU(21、31)と、メモリ(22、32)と、データ転送回路(23、33)と、を備えて構成されている。また、ノード2とノード3とが備える各構成は、同様のものとなる。そのため、以下においては、ノード2の構成について説明する。
 なお、本実施形態においては、並列計算機1が備えるノードの数が2つの場合について説明する。しかしながら、本実施形態における並列計算機1は、2つ以上の複数のノードを備えて構成してもよい。また、各ノードは、x86とARM(登録商標)等のように、異なるアーキテクチャを採用してもよい。
 CPU21は、単数、または、複数のプロセッサコアを備えて構成されている。本実施形態においては、CPU21は、プロセッサコア211、212、…、21m(mは自然数)の複数のプロセッサコアを備えている(以下、特に区別しない場合は、プロセッサコア211とする)。また、それぞれのプロセッサコア211は、メモリ22と、データ転送回路23と、に対する通信経路を備えている。つまり、CPU21が備える複数のプロセッサコア211のそれぞれは、メモリ22、データ転送回路23、と通信可能に構成されている。
 メモリ22は、データや実行するプログラムなどを記憶する。メモリ22は、CPU21が備える複数のプロセッサコア211(同一ノードのプロセッサコア)が共有する。本実施形態におけるメモリ22は、例えば、RAM(Random Access Memory)などの半導体メモリにより構成される。
 データ転送回路23は、DMA(Direct Memory Access)エンジン機能231と、対CPU通信機能232と、の2つの機能を備えて構成されている。DMAエンジン機能231は、CPU21を介さずにメモリ22に対してアクセスする機能である。対CPU通信機能232は、CPU21上のレジスタなどの資源に対してアクセスする機能である。つまり、データ転送回路23は、CPU21を介さずにメモリ22に対してアクセスする機能と、CPU21上のレジスタなどの資源に対してアクセスする機能と、を備えている。なお、対CPU通信機能232は、CPU21上のレジスタ等の資源をメモリ空間に割り当てて、DMAエンジン機能231からアクセスするように構成してもよい。
 以上が、本実施形態における並列計算機1が備えるノード2の構成である。上述したように、ノード3もノード2と同様の構成を備えている。つまり、ノード3は、CPU31と、メモリ32と、データ転送回路33と、を備えている。また、CPU31は複数のプロセッサコア311、312、…、31m(以下、特に区別しない場合は、プロセッサコア311とする)を備えている。そして、データ転送回路33は、DMAエンジン機能331と対CPU通信機能332とを備えている。なお、各構成の詳細については、ノード2を用いて既に説明したため省略する。
 また、ノード2とノード3とは、上述したように、ノード間通信デバイス4を介して通信可能に接続されている。ノード間通信デバイス4は、例えば、PCI(Peripheral Components Interconnect) Express、InfinibandなどのDMA機能、もしくは、RDMA(Remote DMA)機能を持つインターコネクトと伝送路とによって実現することが出来る。
 本実施形態においては、このような並列計算機1が備える複数のノードのうち、1つのノードを制御ノードと呼び、残りのノード(制御ノード以外のノード)を計算ノードと呼び区別する。つまり、本実施形態における並列計算機1は、1つの制御ノードと1つ以上の計算ノードとから構成される。また、本実施形態における並列計算機1は、制御ノードがOS機能を持つ一方で、計算ノードはOS機能を持たない。
 従って、制御ノードは、通常のOSが行うように、計算ノード上に複数のプロセスを展開して、同時に計算処理の実行を行う機能を備えている。以下において、制御ノードにより計算ノード上に展開されたプロセスを計算プロセスと呼ぶ。後述するように、計算プロセスは、計算ノード上で動作するアプリケーションプログラムの開始などに伴い生成され、その実行の終了に伴って破棄される。
 以下、図1で示すノード2を制御ノード5とし、ノード3を計算ノード6として並列計算機1を構築した場合について、図2を用いて詳細に説明する。また、以降の説明では、計算ノード6上のプロセッサコア311を計算コアと呼ぶ。
 まず、計算ノード6の構成について説明する。計算ノード6は、上述したように、OSが動作しない(OSが組み込まれていない)ノードである。後述するように、本実施形態における並列計算機1は、OSが動作しない計算ノード6上で一般の計算機が実現する計算モデルを採用することが出来るように構成されている。つまり、計算ノード6は、ノード間通信デバイス4を介して制御ノード5とデータの送受信を行うことで、一般のOSが提供するサービスの代替機能を実現する。
 本実施形態における計算ノード6(図1のノード3に相当する)は、上述したように、CPU31と、メモリ32と、データ転送回路33と、を備えて構成されている(図1参照)。また、CPU31は、複数のプロセッサコア311を備えて構成されている。計算ノード6は、図2で示すように、複数の計算コア611、612、…、61m(以下、特に区別しない場合においては、計算コア611とする)を備えている。
 ここで、既に説明したように、図2で示す複数の計算コア611のそれぞれは、図1で示す複数のプロセッサコア311のそれぞれと同一である(上述したように、計算ノード6上のプロセッサコア311を計算コア611と呼ぶ)。つまり、計算ノード6が備えるCPU31は、複数の計算コア611を備えて構成されている。また、複数の計算コア611はそれぞれ、メモリ32、データ転送回路33、と通信可能に構成されている。なお、上述したように、プロセッサコア311は、単数であってもよい。つまり、計算コア611は、単数であってもよい。計算コア611の詳細な構成については後述する。
 メモリ32は、上述したように、同一の計算ノード6上の計算コア611が共有している。また、計算ノード6上のメモリ32は、図2で示すように、計算プロセスに関連するデータを複数格納することが出来るように構成されている。以下において、このメモリ32上に格納される計算プロセスに関連するデータを、プロセスイメージ321、322、…、32n(nは自然数)(以下、特に区別しない場合においては、プロセスイメージ321とする)と呼ぶ。
 各プロセスイメージ321には、それぞれ、制御ノード5から計算プロセスのデータを読み書きするための通信バッファ領域3211、3221、…、32n1(以下、特に区別しない場合においては、通信バッファ領域3211とする)が含まれる。また、プロセスイメージ321を操作する計算コア611のアーキテクチャ状態をコンテキスト611A、612B、…、61mC(以下、特に区別しない場合においては、コンテキスト611Aとする)と呼ぶ。
 ここで、メモリ32に格納可能なプロセスイメージ321の総数は、その総容量が物理メモリの容量を超えない範囲で任意の値をとることが出来るとする。そのため、計算コア611の数と、メモリ32が記憶するプロセスイメージ321の数とは、必ずしも一致しなくてもよい。
 また、上述したように、計算ノード6上では、OSが動作しない。そのため、計算ノード6上では、OSのシステム管理機能を用いたハードウェア(計算コア611、メモリ32)の仮想化を行うことは出来ない。従って、各計算コア611にはそれぞれ、1つの計算プロセスのコンテキスト611Aが格納される。そして、各計算コア611は、格納されたコンテキスト611Aに対応付けられたメモリ32上に格納されたプロセスイメージ321を用いて、計算プロセスの処理を行う。
 なお、プロセスイメージ321の総数が計算コア611の総数よりも多い場合には、計算コア611に格納できなかったコンテキスト611Aは、その時点では実行できない。その場合には、計算コア611に格納するコンテキスト611Aを入れ替えることで仮想的に計算コア611の総数を増やしたように見せかけることが出来る。このようなコンテキスト611Aの入れ替え方法(コンテキストスイッチ)の詳細については、後述する。
 データ転送回路33は、ノード2の構成で説明した機能と特に変わりはない。そのため、詳細な説明については省略する。
 以上が、計算ノード6の構成についての詳細な説明である。ここで、計算コア611の構成について図3を用いて詳細に説明する。
 計算コア611は、図3で示すように、汎用レジスタ群6111と、制御レジスタ群6112(計算処理制御部)と、例外検出部6113(例外検出部)と、例外通知部6114(例外検出部)と、レジスタ群アクセス部6115(データ転送回路の一部)と、を備えて構成されている。また、計算コア611は、データ転送回路33を介してノード間通信デバイス4と通信可能に構成されている。さらに、計算コア611は、メモリ32と、通信可能に構成されている。
 汎用レジスタ群6111は、x86やARMなどの一般的なプロセッサと同様の構成を備えている。つまり、汎用レジスタ群6111は、プログラムカウンタ(PC:Program Counter)や演算結果を格納する汎用レジスタ(GPR:General-Purpose Register)などから構成される。
 そのため、汎用レジスタ群6111が有する各レジスタが記憶するデータは、計算コア611での命令(計算処理、プログラム)の実行に伴い書き換えられることになる。また、計算コア611がロード命令やストア命令(書き込み、読み出しなど)を実行することで、汎用レジスタ群6111が有する汎用レジスタとメモリ32との間でデータの転送が行われる。
 制御レジスタ群6112は、計算コア611による命令の実行を制御するためのレジスタである。制御ノード5は、データ転送回路23、33及びノード間通信デバイス4を介して、制御レジスタ群6112に対して、命令の実行を指示する「実行の開始」、又は、命令の実行の停止を指示する「実行の停止」、を送信する。
 例えば、制御ノード5が制御レジスタ群6112に対して「実行の開始」を送信したとする。すると、計算コア611は、汎用レジスタ群6111の内容に従って計算処理を開始する。具体的には、制御レジスタ群6112が「実行の開始」の指示を受信すると、計算コア611は、汎用レジスタ群6111が記憶するプログラムカウンタの値に従い、メモリ32が記憶する命令をフェッチする。そして、計算コア611は、フェッチした命令をデコードして実行する。その後、計算コア611は、命令の実行に応じて、汎用レジスタ群6111、メモリ32の内容を更新する。このような計算コア611により命令が実行されている(計算処理が行われている)状態を、「命令実行状態」と呼ぶ。
 また、例えば、制御ノード5が制御レジスタ群6112に対して「実行の停止」を送信したとする。すると、計算コア611は新規の命令実行を停止する。その結果、計算コア611は、命令の実行を停止する。このような、「実行の停止」が送信された状態で計算コア611上に仕掛中の命令がない状態を、「命令実行停止状態」と呼ぶ。なお、一旦「命令実行停止状態」に遷移すると、計算コア611は、制御ノード5から再度の「実行の開始」指示があるまで、新規の命令実行(計算処理)は行わない。
 また、制御レジスタ群6112は、計算コア611の状態(命令実行状態又は命令実行停止状態)が、制御ノード5から参照出来るように構成される。または、制御レジスタ群6112(計算コア611)に参照される機能がない場合などには、計算コア611は、後述する例外情報の送出によって計算コア611の状態を制御ノード5に対して通知することが出来るように、構成されてもよい。
 例外検出部6113は、制御レジスタ群6112による命令の実行中に何らかの例外が発生した場合に、当該発生した例外を検出する部分である。具体的には、例外検出部6113は、命令の実行中に何らかの例外を検出した場合、制御レジスタ群6112に対して「実行の停止」の指示を送信する。同時に(又はその前後に)、例外検出部6113は、例外通知部6114に対して例外通知を依頼する(例外の発生を通知する)。例外検出部6113による例外通知部6114に対する例外通知の依頼は、例えば、例外検出部6113が例外通知部6114に対して、例外検出情報を送信することで行う。
 ここで、例外検出部6113が検出する例外とは、例えば、ゼロ除算例外などの演算例外のことを指す。また、例えば、メモリアクセス境界違反などのメモリアクセス系例外や、システムコール呼び出しのためのソフトウェアトラップなどの一般のプロセッサに搭載される例外などのことを指す。例外検出部6113は、命令の実行中にこのような例外が発生した場合に、当該発生した例外を検出する。
 例外通知部6114は、制御ノード5に対して計算コア611の実行停止を通知する。具体的には、例外通知部6114は、例外検出部6113から受信した例外検出情報に基づき、ノード間通信デバイス4を介して制御ノード5に対して、計算コア611の「実行の停止」を通知する。
 例外通知部6114により行われる例外の発生の通知の手段は、例外の発生を制御ノード5に通知することが出来れば、その実装方法は問わない。例外通知部6114の実装方法としては、例えば、PCI ExpressのMSI(Message Signaled Interrupts)/MSI-X(MSIExtended)のような、ノード間通信デバイス4が持つ割込み機能を用いるという方法がある。また、例えば、事前に予約したメモリ領域(制御ノード5が備えるメモリ22)へのDMA書き込みを行うという方法を用いることも考えられる。このようなメモリ22へのDMA書き込みにより例外の発生を制御ノード5に通知する方法をとる場合には、制御ノード5(上の後述する計算ノード管理プロセス)は、計算ノード6からの例外の通知の有無をポーリング等の方式で監視する。
 なお、例外通知部6114は、制御ノード5側から設定することで、制御ノード5への例外発生の通知を抑止することが出来るように構成することが出来る。また、このように例外通知部6114が例外発生の通知を抑止した場合に備えて、制御ノード5が直接、制御レジスタ群6112の実行状態を監視(ポーリングなど)することが出来るように、制御ノード5を構成してもよい。
 レジスタ群アクセス部6115は、制御ノード5から送信された指示に基づいて、汎用レジスタ群6111、制御レジスタ群6112の各レジスタに対して読み出しや書き込みを行う。汎用レジスタ群6111および制御レジスタ群6112は、レジスタ群アクセス部6115、データ転送回路33、ノード間通信デバイス4を介して制御ノード5とデータの送受信を行う。
 なお、レジスタ群アクセス部6115は、「命令実行状態」の計算コア611の汎用レジスタ群6111への読み出し、書き込みは許可しないように構成することができる。つまり、レジスタ群アクセス部6115による汎用レジスタ群6111への読み出し、書き込みは、「命令実行停止状態」の計算コア611に対してのみ行われるように、レジスタ群アクセス部6115を構成することが出来る。この場合、「命令実行状態」の計算コア611に対しての、レジスタ群アクセス部6115による汎用レジスタ群6111へのアクセス時の動作は、不定となる(例えば、無視する)。
 以上が、計算コア611の構成についての詳細な説明である。次に、制御ノード5の構成について詳細に説明する。
 制御ノード5は、OSを採用する通常のスタンドアローン型の計算機システムと同じ構成をしている。上述したように、制御ノード5は、計算ノード6に対してOS機能のサービスを提供することが出来るように構成されている。
 なお、以降の説明においては、制御ノード5上に搭載されるOSを制御ノード用OS50と呼ぶ。制御ノード用OS50としては、例えば、Linux(登録商標)やWindows(登録商標)などに代表される、一般的な計算機に用いられるコモディティのOSを用いることが出来る。
 本実施形態における制御ノード5(図1のノード2に相当する)は、上述したように、CPU21(制御コア、例外処理代理部、計算コア制御部)と、メモリ22と、データ転送回路23と、を備えて構成されている(図1参照)。また、CPU21は、複数のプロセッサコア211を備えて構成されている。
 上述したように、制御ノード5上では、制御ノード用OS50が動作する。そのため、計算ノード6とは異なり、制御ノード5は、OSのシステム管理機能を用いてハードウェア(プロセッサコア211、メモリ22)の仮想化を行うことが出来る。従って、以下においては、制御ノード5上のプロセスの構成に関して図2を用いて説明する。
 制御ノード5は、制御ノード用OS50の上に、複数の代理プロセス511、512、…、51n(以下、特に区別しない場合は代理プロセス511とする)(例外処理代理部に相当する)と、計算ノード用管理プロセス52(計算コア制御部に相当する)と、を展開する。また、計算ノード用管理プロセス52は、計算プロセスDB(DataBase)521と、プロセス対応表522と、を有している。
 なお、これらのプロセスは、制御ノード5のCPU21が、メモリ22が記憶するプログラムを読み取って実行することで実現することが出来る。
 代理プロセス511は、計算ノード6上に展開された計算プロセスの1つ1つに対応して生成されるプロセスである。つまり、代理プロセス511は、計算ノード6上のメモリ32が記憶する複数のプロセスイメージ321に対してそれぞれ、1対1で対応する形で生成される。従って、制御ノード5上に展開される代理プロセス511の数と、計算ノード6のメモリ32が記憶するプロセスイメージ321の数と、は同数になる。
 本実施形態において、代理プロセス511は、対応する計算ノード6上の計算プロセスが送信するOSへの要求を、ノード間通信デバイス4を介して受け付ける。そして、代理プロセス511は、計算ノード6上に存在するべきOSの代替として、必要な処理を行う。つまり、代理プロセス511は、計算コア611上で命令を実行中にシステムコールを呼び出す必要が生じた際に、OSを持たない計算ノード6の代わりに、システムコールの処理を行うために用いられる。また、代理プロセス511は、後述するように、計算プロセスを開始する際などに用いられる。
 代理プロセス511は、図4で示すように、引数書き込み領域5111と、データバッファ領域5112と、を有している。なお、データバッファ領域5112に関しては、当該領域を必要に応じて確保するように、代理プロセス511を構成してもよい。
 引数書き込み領域5111は、システムコール番号と引数とを書き込むための領域である。また、引数書き込み領域5111は、システムコールの引数にポインタがある時に、当該ポインタの参照先データが書き込まれる領域である。このようなシステムコールを呼び出す際、一般的なABI(Application Binary Interface)では、プロセッサコア311(計算コア611)上の汎用レジスタやスタックにシステムコールの番号と引数とを書き込む。しかしながら、本実施形態の計算コア611には、OSが組み込まれていない。そこで、本実施形態のシステムでは、代理プロセス511内の引数書き込み領域5111に、システムコールの番号と引数とを書き込む。
 データバッファ領域5112は、例えば、システムコールの内容からバッファの転送が必要であると判断される場合に、計算コア611から代理プロセス511へバッファを転送する際に用いる領域である。バッファの転送は、例えば、writeシステムコールで必要となる。
 このように、代理プロセス511は、計算コア611でシステムコールを呼び出す必要が生じた際に用いるプロセスである。また、引数書き込み領域5111と、データバッファ領域5112と、の2つの領域は、計算コア611でシステムコールを呼び出す際に必要なデータの受け渡しを行うために、ソフトウェア例外を発生させる前後で利用する領域である。ここで、引数書き込み領域5111と、データバッファ領域5112と、の2つの領域は、それぞれの領域が必要となる前に(又は、必要となった際に)、計算コア611へ通知するように代理プロセス511を構成する。そのため、計算コア611は、命令を実行している最中にシステムコールを要求する必要が生じた場合には、適切なデータを各領域に書き込むことが可能である。そして、必要なデータを各領域に書き込んだ後に、計算コア611は、ソフトウェア例外を発生させる。このように構成することで、計算コア611は、制御ノード5にシステムコールの処理をさせることが可能となる。
 計算ノード用管理プロセス52は、計算ノード6に対して生成されるプロセスである。計算ノード用管理プロセス52は、計算ノード6上の計算コア611(プロセッサコア311)、メモリ32、などのハードウェア資源の管理を行う。また、計算ノード用管理プロセス52は、一部のリソースに対する、代理プロセス511から計算コア611へのアクセスの仲介なども実施する。
 具体的には、例えば、計算ノード用管理プロセス52は、計算ノード6上で実行する計算プロセスの総数が計算コア611の総数を上回る場合に、計算プロセスを実行する計算コア611の割り当てを行う。また、計算ノード用管理プロセス52は、計算ノード6上のメモリ管理などを行う。このように、計算ノード用管理プロセス52は、プロセス間の調停が必要な操作を行う。
 このような操作を実現するために、計算ノード用管理プロセス52は、計算ノード6上の計算コア611、メモリ32などのハードウェア資源と、計算プロセス、代理プロセスなどの仮想化された資源と、の紐づけを行って管理する。
 具体的には、本実施形態における計算ノード用管理プロセス52は、代理プロセス511と、計算コア611と、を対応づけて、プロセス対応表522に格納して管理する。ここで、プロセス対応表522に対応づけて格納するデータの一例を、図5で示す。
 図5で示すように、本実施形態におけるプロセス対応表522には、「計算プロセスID」と、「割り当てられた計算コア番号」と、が対応付けて記憶されている。ここで、「計算プロセスID」とは、代理プロセス511(計算プロセス)毎に割り当てられるIDであり、代理プロセス511や計算プロセスを識別するために用いられるものである。また、「割り当てられた計算コア番号」とは、「計算プロセスID」が示す計算プロセスを実行中の計算コア611を識別するために、計算コア611に割り当てる番号である。このように、代理プロセス511(計算プロセス)と、計算プロセスを実行中の計算コア611と、を紐づけることで、計算ノード用管理プロセス52は、ハードウェア資源と、仮想化された資源と、を紐づけて管理することが出来るようになる。なお、計算プロセスが計算コア611に割り当てられていない場合(計算プロセスを実行中の計算コア611がない場合)には、当該「計算プロセスID」に対応付けられた「割り当てられた計算コア番号」には、計算コア番号が記載されない(図5では「なし」と記載)。
 また、計算ノード用管理プロセス52は、計算ノード6上の計算プロセスの情報を、計算プロセスDB521に格納して管理する。
 計算プロセスDB521に格納されているデータの一例を、図6に示す。図6は、計算プロセスが、計算コア611上の汎用レジスタ群6111に格納する情報を制御ノード5側に退避させることで生成したデータベースの一例を示す図である。
 図6に示すように、計算プロセスDB521は、計算プロセスID、プロセス状態、代理プロセスID、汎用レジスタ群が有する各レジスタ(レジスタA、レジスタB、レジスタC…)、などの、計算プロセス上の情報を項目として有している。また、計算プロセスDB521は、例えば、割り当て済みのメモリ領域などの情報も含む。ここで、プロセス状態の項目の列には、計算プロセスが動作可能である、計算プロセスの動作が終了した、などの計算プロセスの状態を示す情報が格納されている。また、各レジスタの項目の列には、各レジスタ(レジスタA、レジスタB、レジスタC…)の値が格納されている。計算プロセスDB521が格納するデータベースにおける表の一行が、1つの計算プロセスのコンテキストに対応する。
 以上が、制御ノード5上に展開されるプロセスの構成である。なお、計算ノードが複数ある場合には、それぞれの計算ノードに対して、複数の計算ノード管理プロセス52が生成される。
 ここで、本実施形態における並列計算機1において、各プロセスがアクセス可能な資源を列挙しておく。
 まず、計算プロセスは、自身のプロセスイメージ321と、自身のコンテキスト611Aと、自身の代理プロセス511がデータを書き込んだ引数書き込み領域5111と、にアクセス可能である。
 また、代理プロセス511は、対応する計算プロセスがアクセスできる資源と、制御ノード5上のプロセスとしてアクセス可能なすべての資源と、に対してアクセス可能である。つまり、代理プロセス511は、プロセスイメージ321と、コンテキスト611Aと、にアクセスすることができる。制御ノード5上のプロセスとしてアクセス可能な資源としては、例えば、制御ノード5上に存在するファイルシステムのファイルが該当する。
 また、計算ノード用管理プロセス52は、計算ノード6上の全ての資源と、計算プロセスDB521と、プロセス対応表522と、にアクセス可能である。また、計算ノード用管理プロセス52は、全ての代理プロセス511に対して、計算プロセスによる例外発生を通知可能である。
 ここで、計算ノード6上の全ての資源とは、計算ノード6上のメモリ32の全てと、計算ノード6上の全ての計算コア611の汎用レジスタ群6111と、制御レジスタ群6112と、である。計算ノード6上のメモリ32の全てにアクセスすることが出来ることから、計算ノード用管理プロセス52は、全ての計算プロセスのプロセスイメージ321に対するアクセス権を持つことになる。
 また、計算ノード用管理プロセス52は、上述したように、計算プロセスDB521にアクセスすることが出来る。そのため、計算ノード用管理プロセス52は、全ての計算プロセスのコンテキスト611Aに対するアクセス権を持つことになる。
 なお、計算ノード用管理プロセス52は、代理プロセス511が持つ資源、例えば、代理プロセス511のメモリ領域やコンテキストには、アクセス可能である必要は必ずしもない。
 以上が、本実施形態における並列計算機1の構成である。このように、構成することで、OSジッタやキャッシュ汚染の問題を解決しつつ安価で汎用性のある並列計算機を構成することが出来る。
 次に、本実施形態における並列計算機1の動作を、図7から図13を用いて説明する。
 (動作)
 図7は、上述した構成の並列計算機1で展開される計算プロセスが開始してから終了するまでに、必要となる動作がどのように作用するかを示したフローチャートである。図7で示すように、並列計算機1上で計算プロセスを展開する(計算プロセスを開始して計算プロセスを終了する)には、以下の動作が必要となる。
1.計算プロセスの開始(プログラムの開始)
2.計算プロセスの実行停止(プログラムの停止)
3.計算プロセス上で発生した例外処理(例外処理)
4.計算プロセスがOSのサービスを必要とする場合の処理(システムコール)
5.計算プロセスの計算コアへの割り当ての変更(コンテキストスイッチ)
6.計算プロセスの終了(プログラムの終了)。
 なお、一旦計算プロセスの実行が始まると、実行中のプログラムが終了するか、上記いずれかの動作で停止するまでは、計算コア611はプログラム(命令、計算処理)を実行し続ける。
 上述した構成の並列計算機1で上記動作を実現することで、計算ノード6上のOSを排除した上で、計算ノード6上に、POSIX APIなどのOSの存在を前提にしたサービスを提供することが出来る。つまり、上記動作を実現することで、一般的なOSのある環境におけるプロセスの動作を網羅することが出来る。以下、上記各動作の詳細について説明する。
 まず、1.計算プロセスの開始(プログラムの開始)時の並列計算機1の動作について、図8を用いて説明する。図8は、計算ノード6上でプログラムの実行が開始される際の動作の一例を示すフローチャートである。
 まず、制御ノード5上で動作する制御ノード用OS50が、代理プロセス511を生成する(ステップS001)。
 次に、代理プロセス511は、代理プロセス511が有する引数書き込み領域5111を計算ノード用管理プロセス52に渡す。そして、代理プロセス511は、計算ノード用管理プロセス52に対して、プログラムを実行する計算プロセスの生成を要求する(ステップS002)。
 続いて、計算プロセスの生成を要求された計算ノード用管理プロセス52は、計算プロセスを生成する(ステップS003)。
 具体的には、計算ノード用管理プロセス52は、新しいコンテキスト611Aを生成する。また、計算ノード用管理プロセス52は、計算ノード6のメモリ32に、計算プロセスに関連するプロセスイメージ321を生成する。そして、計算ノード用管理プロセス52は、計算プロセスDB521に、代理プロセス511に対応付けられた、上記生成したコンテキスト611Aを追加する。また、計算ノード用管理プロセス52は、計算プロセスDB521の、上記追加したコンテキスト611Aと、代理プロセス511から渡された引数書き込み領域5111とを対応付け、該引数書き込み領域5111の内容を、該コンテキスト611Aに追加する。以上のようにして、計算ノード用管理プロセス52は、計算プロセスを生成する。
 そして、計算ノード用管理プロセス52は、生成した計算プロセスにアクセスするためのハンドルを、代理プロセス511に返す。ハンドルの一例としては、計算ノード用管理プロセス52が付与するIDや、プロセスID,ファイルディスクリプタなどがある。ハンドルの一部として、プロセスイメージ321をmmapによりマップした領域、または、マップした領域へのポインタが含まれてもよい。
 その後、代理プロセス511は、計算ノード6上で動作させるプログラムと、プログラムの実行に使用するデータと、を計算ノード6が備えるメモリ32のプロセスイメージ321に書き込む(ステップS004)。
 具体的には、まず、代理プロセス511は、計算コア611に実行させるプログラムを読み込む。プログラムの読み込みは、例えば、計算プロセスに実行させるプログラムがファイルに格納されている場合には、制御ノード用OS50のreadシステムコールを呼び出すことで行われる。
 続いて、代理プロセス511は、計算ノード用管理プロセス52から渡されたハンドルを用いて、計算コア611に実行させるプログラムを、メモリ32上のプロセスイメージ321におけるプログラムにより指定された場所に配置する。例えば、ハンドルが、プロセスイメージ321がメモリマップされた領域を含んでいる場合には、代理プロセス511はプログラムに指定された位置に対して直接メモリストアを発行する。また、例えば、ハンドルが、計算ノード用管理プロセス52が付与したIDやプロセスIDやファイルディスクリプタなどである場合には、代理プロセス511は、プロセスイメージ321上の位置と、書き込む内容と、を計算ノード用管理プロセス52に渡す。そして、代理プロセス511は、計算ノード用管理プロセス52に対して、プロセスイメージ321への書き込みを要求する。
 また、代理プロセス511は、計算プロセスDB521に格納されたコンテキスト611A中のレジスタ値として、初期値をセットする。
 その後、代理プロセス511は、計算プログラムの実行開始を要求する(ステップS005)。具体的には、代理プロセス511は、計算ノード用プロセス52から取得したハンドルを用いて、計算プロセスを実行可能状態に変更する。このように計算プロセスを実行可能状態に変更することで、計算ノード6に使用していない(命令実行状態でない)計算コア611がある場合に、その計算コア611によりプログラムの実行が開始される。なお、この動作の詳細は後述する(ステップS055参照)。
 以上が、1.計算プロセスの開始(プログラムの開始)時の並列計算機1の動作である。次に、2.計算プロセスの実行停止(プログラムの停止)を行う際の並列計算機1の動作について、図9を用いて説明する。図9は、代理プロセス511に対応する計算コア611を制御ノード5の側から停止させる際の動作の一例を示すフローチャートである。
 まず、計算ノード用管理プロセス52は、プロセス対応表522を参照し、停止対象のプロセスイメージ321に関連付けられた計算プロセスを示す「計算プロセスID」を用いて、該「計算プロセスID」に対応付けられた「割り当てられた計算コア番号」を取得する。
 ここで、計算プロセスに計算コア611が割り当てられていない場合(ステップS011にてNO)には、計算ノード用管理プロセス52は、以下で説明するステップS012と、ステップS013と、を飛ばして、計算プロセスDB521のコンテキストの状態を更新する(ステップS014)。つまり、計算ノード用管理プロセス52は、「計算プロセスID」に対応付けられた「割り当てられた計算コア番号」を発見できなかった場合には、ステップS012と、ステップS013と、の動作を行わずに、計算プロセスDB521のコンテキストの状態を更新する。
 一方、計算プロセスに計算コア611が割り当てられている場合(ステップS011にてYES)には、計算ノード用管理プロセス52は、計算コア611のレジスタ群アクセス部6115を介して制御レジスタ群6112に対して、計算コア611の停止を指示する(ステップS012)。つまり、計算プロセスに計算コア611が割り当てられている場合には、計算ノード用管理プロセス52は、制御レジスタ群6112に対して「実行の停止」を指示する。
 その後、計算ノード用管理プロセス52は、レジスタ群アクセス部6115を介して制御レジスタ群6112に対して、計算コア611の動作状態を確認する(ステップS013)。ここで、計算コア611が命令実行停止状態にあることを確認できなかった場合、すなわち計算コア611が未だ命令実行状態にある場合(ステップS013にて「計算コア動作中」)、計算ノード用管理プロセス52は、予め定められた一定の時間が経過した後、再度計算コア611の動作状態を確認する。
 一方、計算コア611が命令実行停止状態にあることを確認できた場合(ステップS013にて「計算コア停止」)、計算ノード用管理プロセス52は、停止した計算コア番号(割り当てられた計算コア番号)を含む、プロセス対応表522の行を更新する。また、計算ノード用管理プロセス52は、上記割り当てられた計算コア番号に対応付けられた計算プロセスIDを含む、計算プロセスDB521のコンテキスト611Aの状態を更新する(ステップS014)。
 以上が、2.計算プロセスの実行停止(プログラムの停止)を行う際の並列計算機1の動作である。次に、3.計算プロセス上で発生した例外処理(例外処理)を行う際の並列計算機1の動作について、図10を用いて説明する。図10は、計算コア611でプログラム(命令、計算処理)を実行中に例外が発生した場合の、当該例外を処理する際の動作の一例を示すフローチャートである。
 まず、計算コア611にてプログラムを実行中に、例外が発生したとする(ステップS021)。なお、例外の定義については、既に並列計算機1の構成を説明する際に説明済みであるため、省略する。
 すると、例外検出部6113が当該発生した例外を検出する。そして、例外検出部6113は、制御レジスタ群6112に対して「実行の停止」の指示を行う(ステップS022)。
 続いて、例外検出部6113は、例外通知部6114に対して例外の発生を通知する。そして、例外検出部6113から例外の発生の通知を受けた例外通知部6114は、制御ノード5内の計算ノード用管理プロセス52へ、例外の発生の通知を行う(ステップS023)。ここで、例外通知部6114により行われる例外の発生の通知の手段は、上述した通り、様々な方法がある。例えば、ノード間通信デバイス4の持つI/O例外機能による通知、DMA機能を利用した制御ノード5への書き込み、制御ノード5から計算ノード6のレジスタ監視、などの方法がある。どの方法によって例外通知部6114を実現してもよい。
 以上が、3.計算プロセス上で発生した例外処理(例外処理)を行う際の並列計算機1の動作である。次に、4.計算プロセスがOSのサービスを必要とする場合の処理(システムコール)を行う際の並列計算機1の動作について、図11を用いて説明する。図11は、計算ノード6で呼び出されたシステムコールの処理を行う際の動作の一例を示すフローチャートである。
 なお、プロセスイメージ321が計算コア611で動作中にシステムコールを呼び出す場合、一般的なABI(Application Binary Interface)では、プロセッサコア311(計算コア611)上の汎用レジスタやスタックにシステムコールの番号と引数とを書き込む。しかしながら、本実施形態の計算コア611には、OSが組み込まれていない。そのため、後述する動作を行う必要が出てくる。
 まず、本実施の形態の計算プロセスは、代理プロセス511内の引数書き込み領域5111にシステムコール番号と、引数と、を書き込む(ステップS031)。
 次に、システムコール番号と、引数と、を書き込まれた代理プロセス511は、呼び出したいシステムコールの引数にポインタがあるか否かの判定を行う(ステップS032)。引数にポインタがない場合(ステップS032にてNO)には、後述するステップS033とステップS034とを飛ばして、計算コア611によって、後述するステップS035の処理が行われる。一方、引数にポインタがある場合(ステップS032にてYES)は、代理プロセス511は引き続き、そのポインタの参照するデータのサイズが引数書き込み領域5111のサイズよりも小さいか否かの判定を行う。代理プロセス511は、参照するデータのサイズの判定の際に、サイズを指定する引数の値を参照してもよい。または、代理プロセス511は、サイズの判定に引数の型を用いてもよい(ステップS033)。
 そして、ポインタの参照するデータのサイズが引数書き込み領域5111のサイズ以上の場合(ステップS033にてNO)には、後述するステップS034を飛ばして、計算コア611が後述するステップS035の処理を行う。一方、ポインタの参照先の型が引数書き込み領域5111のサイズよりも小さい場合(ステップS033にてYES)には、代理プロセス511は、引数書き込み領域5111にそのポインタの参照先データを書き込む(ステップS034)。
 その後、計算コア611が、システムコールの例外を発生させる(ステップS035)。一般的には、システムコールの例外は、同一のノード内(計算ノード6内)で処理される。しかしながら、本実施形態における並列計算機1の場合は、上述したように、計算ノード6から制御ノード5へ、例えば、割り込みなどの方法で通知される。例外発生処理の詳細については既に説明したため、省略する。
 例外発生処理が起きると、上述したように、例外の発生が制御ノード5の計算ノード用管理プロセス52へ通知される。そこで、例外の発生の通知を受け取った計算ノード用管理プロセス52は、プロセス対応表522を参照して、例外発生元の計算コア611の番号から、計算プロセスIDを得る。つまり、計算ノード用管理プロセス52は、計算プロセスDB521を参照することで、例外発生元の計算コア611の番号と対応して記憶されている代理プロセス511を得る。以降の処理は、代理プロセス511が主体となって動作を進める。
 まず、代理プロセス511は、自身の引数書き込み領域5111に書き込まれた引数を解析して、システムコールを実施するためにバッファの転送が必要か否か確認する(ステップS036)。
 代理プロセス511がバッファの転送が必要であると確認した場合(ステップS036にてYES)、代理プロセス511は、代理プロセス511内にデータバッファ領域5112を確保する(ステップS037)。そして、代理プロセス511は、該代理プロセス511に対応するプロセスイメージ321のバッファの内容を、代理プロセス511のデータバッファ領域5112へ転送するように、データ転送回路33(DMAエンジン機能331)へ命令する。これにより、計算ノード6から制御ノード5へバッファの内容が転送される(ステップS038)。このような計算ノード6から制御ノード5へのバッファの内容の転送は、例えば、writeシステムコールで必要になる。
 そして、上記DMA転送が終わった後、又は、代理プロセス511がバッファの転送は不要であると確認した場合(ステップS036にてNO)に、代理プロセス511は、制御ノード用OS50に対してシステムコールを呼び出す(関数を実行する)(ステップS039)。
 システムコールを呼び出した後、代理プロセス511は、代理プロセス511内のバッファの内容を、該代理プロセス511に対応するプロセスイメージ321の通信バッファ領域3211に転送する必要があるか否かの判定を行う(ステップS040)。
 バッファを転送する必要がある場合(ステップS040にてYES)、代理プロセス511は、データ転送回路33(DMAエンジン331)へ命令して、バッファの転送を行う(ステップS041)。この制御ノード5から計算ノード6へのバッファの転送は、例えば、readシステムコールで必要になる。
 そして、上記バッファ転送が終わると、又は、代理プロセス511がバッファの転送は不要であると判定した場合(ステップS040にてNO)には、計算ノード用管理プロセス52は、システムコールの返り値を汎用レジスタ群6111へ書き込む(ステップS042)。なお、計算ノード用管理プロセス52による汎用レジスタ群6111へのシステムコールの返り値の書き込みは、計算コア611内のレジスタ群アクセス6115を介して行われる。一般的なABIでは同一ノード内の汎用レジスタにシステムコールの返り値は書き込まれる。しかしながら、並列計算機1においては、制御ノード5から計算ノード6の汎用レジスタ群6111に対して、システムコールの返り値が書き込まれる。
 その後、計算コア611は、プログラムの実行を再開する(ステップS043)。なお、計算コア611がプログラムの実行を開始する際の動作は、既に説明したため省略する。
 以上が、4.計算プロセスがOSのサービスを必要とする場合の処理(システムコール)を行う際の並列計算機1の動作である。次に、5.計算プロセスの計算コアへの割り当ての変更(コンテキストスイッチ)を行う際の並列計算機1の動作について、図12を用いて説明する。図12は、計算コア611の数よりも計算プロセスが多い場合に行われる、コンテキストスイッチを行う際の動作の一例を示すフローチャートである。
 まず、制御ノード5内の計算ノード用管理プロセス52は、停止することになる計算コア611を選定する(ステップS051)。このような計算ノード用管理プロセス52による停止する計算コア611の選定は、例えば、予め定められた一定時間が経過する毎に行われる。計算ノード用管理プロセス52による停止する計算コア611の選定方法は、任意の方法を採用してもよい。
 次に、計算ノード用管理プロセス52は、上記ステップS051で選定した計算コア611を停止させる(ステップS052)。なお、計算コア611を停止させる際の動作については、既に説明したため省略する。
 続いて、計算ノード用管理プロセス52は、停止した計算コア611内のレジスタ群アクセス部6115を用いて、汎用レジスタ群6111にアクセスする。そして、計算ノード用管理プロセス52は、汎用レジスタ群6111からコンテキスト611Aを引き上げ、当該引き上げたコンテキスト611Aを計算プロセスDB521に記憶する(ステップS053)。
 ここで、上記動作を行う際に、計算ノード用管理プロセス52は、プロセスイメージ321を制御ノード5に複製することが出来る。このようにプロセスイメージ321を制御ノード5に複製することで、プロセス単位のチェックポイントデータを作成することが可能である。
 次に、計算ノード用管理プロセス52は、次に計算コア611で動作する計算プロセスIDを基に、プロセス対応表522の更新を行う(ステップS054)。ここで、本実施形態においては、次に計算コア611で動作する計算プロセスIDは、既存のスケジューリングアルゴリズムに従って選出されるとする。しかしながら、計算ノード用管理プロセス52は、何らかの方法で計算プロセスIDを選出することが出来るように構成されていればよい。
 その後、計算ノード用管理プロセス52は、次に計算コア611で動作する計算プロセスIDを基に計算プロセスDB521を参照し、次に計算コア611で動作する計算プロセスIDのレジスタ値(コンテキスト)を得る。そして、計算ノード用管理プロセス52は、取得したレジスタ値を、計算コア611が備える汎用レジスタ群6111のコンテキスト611Aに、レジスタ群アクセス部6115を介して保存する(ステップS055)。
 なお、次に計算コア611で動作する計算プロセスにチェックポイントデータがある場合には、このタイミングで計算ノードへ転送することで、チェックポイント取得時のプロセスイメージ321に復元することが可能である。
 そして、コンテキスト611Aが復元された後、計算ノード用管理プロセス52は、コンテキストスイッチした計算コアの実行を開始する(ステップS056)。
 以上が、5.計算プロセスの計算コアへの割り当ての変更(コンテキストスイッチ)を行う際の並列計算機1の動作である。次に、6.計算プロセスの終了(プログラムの終了)を行う際の並列計算機1の動作について、図13を用いて説明する。図13は、計算ノード6上で実行中のプログラムを終了する際の動作の一例を示すフローチャートである。
 計算コア611上で実行中のプログラムが終了した場合、計算コア611は、まず、計算プロセスを終了させる例外を代理プロセス511に通知する(ステップS061)。計算プロセスを終了させる例外としては、例えば、exitシステムコールやメモリアクセス系例外などがある。なお、例外の発生についての説明は、既に説明したため省略する。
 次に、例外の通知を受信した代理プロセス511は、計算ノード用管理プロセス52に対して、計算プロセスの終了を通知する(ステップS062)。
 そして、計算プロセスの終了を通知された計算ノード用管理プロセス52は、プロセス対応表522を検索して、計算プロセスが使用していた資源を解放する(ステップS063)。これにより、計算プロセスは終了する。
 具体的には、計算ノード用管理プロセス52は、まず、終了する代理プロセス511に関連付けられた、計算プロセスDB521に格納されたコンテキスト611Aを削除する。また、計算ノード用管理プロセス52は、メモリ32から終了する代理プロセス511に対応するプロセスイメージ321を解放する。なお、終了する代理プロセス511に対応するコンテキスト611Aが計算ノード6にあるいずれかの計算コア611で動作中である場合には、計算ノード用管理プロセス52は、当該計算コア611を解放するように構成することが出来る。この場合には、計算コア611を解放する際に、当該解放する計算コア611のコンテキストを他のコンテキストにコンテキストスイッチするように、計算ノード用管理プロセス52を構成してもよい。
 そして、計算プロセスの終了後、代理プロセス511は終了する(ステップS064)。
 なお、上記ステップS062、ステップS063、ステップS064は、この順番通りに行われなくてもよい。例えば、ステップS061による終了システムコールの受信によって代理プロセス511が終了するように構成してもよい。この場合には、例えば、制御ノード用OS50の機能による代理プロセス511が持っていたハンドルの解放処理によって、計算ノード用管理プロセス52に対して計算プロセスの終了の通知が行われる。そして、計算プロセスの終了の通知を受信した計算ノード用管理プロセス52が、終了する計算プロセスの資源の解放と計算プロセスの終了とを行う。
 以上が、並列計算機1によって行われる動作の流れである。このような動作により、並列計算機1は、OSが動作しない計算ノード6上で一般の計算機が実現する計算モデルを採用することが出来る。
 なお、本実施形態では、1つの制御ノード5と、複数の計算ノード6と、からなる並列計算機1について説明した。しかしながら、並列計算機1は、例えば、1つの制御ノード5と、複数の計算ノード6と、から構成されるノード群を複数備えていてもよい。つまり、必ずしも制御ノード5の数は1に限定されない。
 このように、本実施形態における並列計算機1は、OSが組み込まれた制御ノード5と、OSが組み込まれていない計算ノード6と、を備えている。また、制御ノード5上には代理プロセス511と計算ノード用管理プロセス52とが展開されている。さらに、計算ノード6は、汎用レジスタ群6111と制御レジスタ群6112とを備えている。このような構成により、制御ノード5は、計算ノード6の動作を管理することが出来るようになる。つまり、並列計算機1は、OSが動作しない計算ノード6上で一般の計算機が実現する計算モデルを採用することが可能となる。その結果、並列計算機1は、計算ノード6上でOSが動作することによるOSジッタやキャッシュ汚染の問題を解決することが出来る。
 また、上記構成にすることで、特権が必要なI/Oデバイスの制御を、制御ノード5が代理で実施することが出来るようになる。その結果、制御ノード5がコモディティのハードウェア構成を採用していれば、計算ノード6のために専用のデバイスドライバを記述する必要がなくなる。つまり、汎用性の喪失や、開発費の高騰という問題を解決することが出来る。
 また、本実施形態における計算コア611は、例外検出部6113と、例外通知部6114と、を備えている。このように構成することで、計算コア611による命令の実行中に例外処理が発生した場合に、当該例外処理を検出してOSを備える制御コア6へ通知することが出来るようになる。その結果、計算ノード6は、例外処理が発生した計算処理の実行を停止することが出来るようになる。また、制御ノード5は、例えば、システムコールなどのOS機能を計算ノードに提供することが出来るようになる。つまり、OSが動作しない計算ノード6上で一般の計算機が実現する計算モデルを採用することが可能となる。
 <実施形態2>
 次に、本発明の第2の実施形態について、図14を用いて説明する。図14は、本実施形態における情報処理装置7の構成を示すブロック図である。
 第1の実施形態において説明したように、本実施形態は、OS機能を備える制御部(制御ノード)と、OS機能を備えない計算部(計算ノード)と、を備えている。そのため、OS機能が動作する領域と、OS機能が動作しない領域と、を備えていれば、必ずしも第1の実施形態で説明した並列計算機1によらなくても、本実施形態は実施可能である。
 そこで、本実施形態においては、OSの支配下に置かれる領域と、OSの支配下に置かれない領域と、の2つの領域を備える情報処理装置7について説明する。本実施形態における情報処理装置7は、例えば、上記2つの領域を備える半導体集積回路などにより実現される。
 図14で示すように、本実施形態における情報処理装置7は、OSの支配下に置かれる領域であるOS稼動制御部8と、OSの支配下に置かれない領域であるOS非稼動計算部9と、を備えて構成されている。そして、本実施形態における情報処理装置7は、OSが動作しない(OSの支配下にない)OS非稼動計算部9上で一般の計算機が実現する計算モデルを採用することが出来るように、OS稼動制御部8とOS非稼動計算部9とを構成する。なお、以下において、OS稼動制御部8で稼動するOSを、制御部用OS80とする。制御部用OS80としては、例えば、LinuxやWindowsなどのコモディティのOSを用いることが出来る。また、OS稼動制御部8とOS非稼動計算部9とは、互いに通信可能なように接続されている。
 まず、OS稼動制御部8の構成について説明する。OS稼動制御部8は、図示しない記憶装置(メモリなど)と、演算装置(CPUなど)と、を備えて構成されている。ここで、上述したように、OS稼動制御部8は、制御部用OS80の支配下に置かれる領域である。そのため、OS稼動制御部8では、その支配下にあるハードウェア(記憶装置、演算装置)の仮想化を行うことが可能となる。従って、以下においては、OS稼動制御部8上で展開するプロセスについて説明する。なお、これらのプロセスは、OS稼動制御部8の支配下にある演算装置が、OS稼動制御部8の支配下にある記憶装置が記憶するプログラムを読み取って実行することで実現することが出来る。
 図14で示すように、OS稼動制御部8上において、制御部用OS80は、代理プロセス81と、OS非稼動計算部用管理プロセス82と、を展開する。また、OS非稼動計算部用管理プロセス82は、計算プロセスDB83と、プロセス対応表84と、を有している。ここで、代理プロセス81の構成は、第1の実施形態と同様である。また、OS非稼動計算部用管理プロセス82は、第1の実施形態における計算ノード用管理プロセスに相当する。そのため、各構成の詳細な説明については省略する。
 以上が、OS稼動制御部8の構成である。次に、OS非稼動計算部9の構成について説明する。
 図14で示すように、OS非稼動計算部9は、計算コア91と、メモリ92と、を備えて構成されている。また、OS非稼動計算部9は、図示しないデータ転送回路を備えている。ここで、計算コア91の構成は、第1の実施形態と同様である。また、メモリ92、データ転送回路、の構成も、第1の実施形態と同様である。そのため、各構成の詳細については、省略する。
 本実施形態における情報処理装置7は、このように構成されている。このような構成により、情報処理装置7は、第1の実施形態と同様の動作を行う。情報処理装置7の動作は、第1の実施形態と同様のため省略する。
 このように、本実施形態における情報処理装置7は、OSの支配下にあるOS稼動制御部8と、OSの支配下にないOS非稼動計算部9と、を備えている。また、OS稼動制御部8上には代理プロセス81とOS非稼動計算部用管理プロセス82とが展開されている。さらに、OS非稼動計算部9は、計算コア91を備えている。そのため、OS非稼動計算部9は、OSを備えているのと同様に計算処理を実行することが出来る。つまり、情報処理装置7は、OS非稼動計算部9上でOSが動作することによるOSジッタやキャッシュ汚染の問題を解決することが出来る。
 また、上記構成にすることで、特権が必要なI/Oデバイスの制御を、OS稼動制御部8がOS非稼動計算部9の代理で実施することが出来るようになる。その結果、OS稼動制御部8がコモディティのハードウェア構成を採用していれば、OS非稼動計算部9のために専用のデバイスドライバを記述する必要がなくなる。つまり、汎用性の喪失や、開発費の高騰という問題を解決することが出来る。
 <実施形態3>
 次に、本発明の第3の実施形態について、図15を用いて説明する。図15は、本実施形態における情報処理装置70の構成の概略を示すブロック図である。
 図15で示すように、本実施形態における情報処理装置70は、制御コア71と、計算コア72と、を備えて構成されている。また、制御コア71は、計算コア制御部711を備えている。そして、計算コア72は、計算処理制御部721と、例外検出部722と、を備えている。
 なお、制御コア71は、オペレーティングシステム(OS)が組み込まれた演算部である。一方、計算コア72は、制御コア71にて制御されることにより所定の計算処理を行う演算部である。具体的には、計算コア72には、オペレーティングシステムが組み込まれていない。
 計算コア制御部711は、停止している計算コア72に対して当該計算コアが行う計算処理の開始を指示する部分である。後述するように、計算コア制御部711が停止している計算コア72に対して計算処理の開始を指示することで、当該停止している計算コア72は、計算処理を開始する。
 計算処理制御部721は、計算コア制御部711からの計算処理の開始の指示に応じて計算処理の開始の指示を行うように、計算コア72を制御する部分である。また、例外検出部722は、計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した前記計算処理の実行を停止する部分である。予め設定された例外処理としては、例えば、演算例外、メモリアクセス系例外、一般のプロセッサに搭載される例外、などが該当する。
 なお、一度計算処理の実行を停止した計算コア72は、制御コア71の計算コア制御部711から再度の計算処理の開始の指示を受けるまで、新たな計算処理は開始せず停止し続ける。
 このように、本実施形態における情報処理装置70は、OSが組み込まれた制御コア71と、計算コア72と、を備えている。また、制御コア71は計算コア制御部711を備え、計算コア72は計算処理制御部721を備えている。このような構成により、計算コア72は、制御コア71から制御されることにより所定の計算処理を行うことが出来る。つまり、情報処理装置70は、OSが動作しない計算コア72上で所定の計算処理を行うことが可能となる。その結果、情報処理装置70は、計算コア72上でOSが動作することによるOSジッタやキャッシュ汚染の問題を解決することが出来る。
 また、上記構成にすることで、特権が必要なI/Oデバイスの制御を、制御コア71が代理で実施することが出来るようになる。その結果、制御コア71がコモディティのハードウェア構成を採用していれば、計算コア72のために専用のデバイスドライバを記述する必要がなくなる。つまり、汎用性の喪失や、開発費の高騰という問題を解決することが出来る。
 また、本実施形態における計算コア72は、例外検出部722を備えている。このように構成することで、計算コア72は、計算処理の実行中に発生した例外処理を検出し、当該例外処理が発生した計算処理の実行を停止することが出来るようになる。その結果、情報処理装置70は、OSが動作しない情報処理装置70上で所定の計算処理をより完全に行うことが可能となる。
 なお、上述した情報処理装置は、当該情報処理装置に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、情報処理装置に以下の(a)~(c)の処理を実現させるためのプログラムである。ここで、情報処理装置は、オペレーティングシステムが組み込まれた制御コア、制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備えている。
(a)停止している計算コアに対して当該計算コアが行う計算処理の開始を指示する処理、
(b)計算処理の開始の指示に応じて計算処理の開始を行うように計算コアを制御する処理、
(c)計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した計算処理の実行を停止する処理。
 また、上述した情報処理装置が動作することにより実行される情報処理方法は、制御コアからの計算処理の開始の指示に応じて計算コアが所定の計算処理を開始する。そして、計算コアは、計算コアによる計算処理の実行中に予め設定された例外処理が発生した場合には、当該例外処理を検出し、当該例外処理が発生した計算処理を停止する、という情報処理方法である。
 上述した構成を有する、プログラム、又は、情報処理方法、の発明であっても、上記情報処理装置と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
 <実施形態4>
 次に、本発明の第4の実施形態について、図16を用いて説明する。図16は、本実施形態における計算処理装置10の構成の概略を示すブロック図である。
 計算処理装置10は、外部装置からの制御により所定の計算処理を行う装置である。つまり、計算処理装置10には、OSは組み込まれていない。図16で示すように、本実施形態における計算処理装置10は、計算処理制御部101と、例外検出部102と、を備えている。
 計算処理制御部101は、外部装置からの計算処理の開始の指示に応じて計算処理の開始を行うように当該計算処理装置を制御する部分である。また、例外検出部102は、計算処理の実行中に発生した予め設定された例外処理を検出する部分である。予め設定された例外処理としては、例えば、演算例外、メモリアクセス系例外、一般のプロセッサに搭載される例外、などが該当する。
 そして、計算処理装置10は、例外検出部102が例外処理を検出した場合に、当該例外処理が発生した計算処理の実行を停止するように構成する。なお、一度計算処理の実行を停止した計算処理装置10は、外部装置から再度の計算処理の開始の指示を受けるまで、計算処理は開始せず停止し続ける。
 このように、本実施形態における計算処理装置10は、外部装置からの計算処理の開始の指示に応じて計算処理の開始を行う装置である。また、計算処理装置10は、計算処理制御部101を備えている。このような構成により、計算処理装置10は、OSを備えていないにもかかわらず、外部装置からの制御により所定の計算処理を行うことが出来る。その結果、計算処理装置10は、計算処理装置10上でOSが動作することによるOSジッタやキャッシュ汚染の問題を解決することが出来る。
 また、本実施形態における計算処理装置10は、例外検出部102を備えている。このように構成することで、計算処理装置10は、計算処理の実行中に発生した例外処理を検出し、当該例外処理が発生した計算処理の実行を停止することが出来るようになる。つまり、計算処理装置10は、OSが動作しない計算処理装置10上で所定の計算処理をより完全に行うことが可能となる。
 なお、上述した計算処理装置は、当該計算処理装置に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、計算処理装置に、外部装置からの計算処理の開始の指示に応じて計算処理の開始を行うように計算処理装置を制御する処理と、計算処理の実行中に発生した予め設定された例外処理を検出する処理と、を実現させる。そして、上記プログラムは例外処理を検出した場合は、当該例外処理が発生した計算処理の実行を停止する機能を有する、プログラムである。
 また、上述した計算処理装置が動作することにより実行される計算処理方法は、外部装置からの計算処理の開始の指示に応じて所定の計算処理を開始し、計算処理の実行中に予め設定された例外処理が発生した場合には、当該例外処理を検出し、当該例外処理が発生した計算処理を停止する、という計算処理方法である。
 上述した構成を有する、プログラム、又は、情報処理方法、の発明であっても、上記情報処理装置と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
 <付記>
 上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における情報処理装置などの概略を説明する。但し、本発明は、以下の構成に限定されない。
 (付記1)
 オペレーティングシステムが組み込まれた制御コアと、前記制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備え、
 前記制御コアは、停止している前記計算コアに対して当該計算コアが行う前記計算処理の開始を指示する計算コア制御手段を備え、
 前記計算コアは、前記計算コア制御手段からの前記計算処理の開始の指示に応じて前記計算処理の開始を行うように当該計算コアを制御する計算処理制御手段と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した前記計算処理を停止する例外検出手段と、を備えた、
 情報処理装置。
 この構成によると、情報処理装置が、オペレーティングシステムが組み込まれた制御コアと、制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備えている。また、制御コアは計算コア制御手段を備えている。さらに、計算コアは、計算処理制御手段を備えている。このような構成により、OSが動作しない計算コア上で所定の計算処理を行うことが可能となる。その結果、情報処理装置は、計算処理を行う計算コア上でOSが動作することによるOSジッタやキャッシュ汚染の問題を解決することが出来る。
 また、この構成によると、計算コアが、例外検出手段を備えている。このように構成することで、計算コアは、計算処理の実行中に発生した例外処理を検出し、当該例外処理が発生した計算処理の実行を停止することが出来るようになる。その結果、情報処理装置は、OSが動作しない情報処理装置上で所定の計算処理をより完全に行うことが可能となる。
 (付記2)
 付記1に記載の情報処理装置であって、
 前記計算コア制御手段は、前記例外検出手段が検出した前記例外処理に応じて前記計算コアに対して前記計算処理の開始を指示し、
 前記計算処理制御手段は、前記計算コア制御手段から前記計算処理の開始の指示を受けた場合に、当該計算処理を開始するように前記計算コアを制御する、
 情報処理装置。
 この構成によると、情報処理装置の制御コアは、例外検出部が検出した例外処理に応じて計算コアに対して計算処理の開始を指示するように構成される。これにより、情報処理装置は、OSが動作しない情報処理装置上で所定の計算処理をより完全に行うことが可能となる。
 (付記3)
 付記2に記載の情報処理装置であって、
 前記例外検出手段は、該例外検出手段が前記例外処理を検出した旨を前記制御コアに通知し、
 前記計算コア制御手段は、前記例外検出手段から受けた通知が示す前記例外処理に応じて前記計算コアに対して前記計算処理の開始の指示をする、
 情報処理装置。
 この構成によると、計算コアは、例外を検出した場合に制御コアに通知するように構成される。これにより、情報処理装置は、OSが動作しない情報処理装置上で所定の計算処理をより完全に行うことが可能となる。
 (付記4)
 付記1乃至3いずれか1項に記載の情報処理装置であって、
 前記計算コアは、前記例外検出手段によって検出された前記例外処理を処理する際に必要なデータを前記制御コアに転送するデータ転送手段を備え、
 前記制御コアは、前記データ転送手段によって転送された前記データを用いて前記計算コアを代理して前記例外処理を処理する例外処理代理手段を備える
 情報処理装置。
 この構成によると、計算コアがデータ転送手段を備え、制御コアが例外処理代理手段を備えている。このような構成により、計算コアに代理して制御コアが例外処理を処理することが出来るようになる。その結果、例えばシステムコールの処理を、計算コアに代理して制御コアで行うことが出来るようになる。
 (付記5)
 付記4に記載の情報処理装置であって、
 前記データ転送手段は、前記計算コアにて発生した前記例外処理がシステムコールである場合、当該システムコールの処理に必要なデータを前記制御コアの前記例外処理代理手段が有するバッファ領域に転送する、
 情報処理装置。
 (付記6)
 付記1乃至5のいずれか1項に記載の情報処理装置であって、
 前記計算コア制御手段は、前記計算コアに対して当該計算コアが行う前記計算処理の停止を指示することが可能であるように構成されるとともに、前記計算処理を停止中の前記計算コアに対して当該計算コアによる処理の対象となる前記計算処理の内容を変更する指示を行うことが可能であるように構成され、
 前記計算処理制御手段は、前記計算コア制御手段からの前記計算処理の停止の指示に応じて実行中の前記計算処理の停止を行うように前記計算コアを制御し、前記計算コア制御手段からの前記計算処理の内容の変更の指示に応じて前記計算コアによる処理の対象となる前記計算処理の内容を変更する、
 情報処理装置。
 この構成によると、制御コアは計算コアに対して、計算処理の停止の指示と計算処理の変更の指示とを行うことが出来るように構成される。また、計算コアは、制御コアからの指示に応じて計算処理の停止と変更を行うことが出来るようになる。その結果、情報処理装置は、例えば、コンテキストスイッチを行うことが出来るようになる。
 (付記7)
 付記6に記載の情報処理装置であって、
 前記計算コアが行う前記計算処理の数が前記計算コアの数よりも多い場合、
 前記計算コア制御手段は、予め定められた時間毎に、予め定められた基準に基づいて前記計算処理を実行中の前記計算コアを選択し、当該選択した計算コアによる前記計算処理を停止するように指示し、当該計算処理を停止した計算コアによる処理の対象となる前記計算処理の内容を変更する、
 情報処理装置。
 (付記8)
 オペレーティングシステムが組み込まれた制御コアと、前記制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備えた情報処理装置を備えたコンピュータに、
 停止している前記計算コアに対して当該計算コアが行う前記計算処理の開始を指示する計算コア制御処理と、
 前記計算処理の開始の指示に応じて前記計算処理の開始を行うように前記計算コアを制御する計算処理制御処理と、
 前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した計算処理の実行を停止する例外検出処理と、を実行させるプログラムを記録するコンピュータで読み取り可能な記録媒体。
 (付記8-1)
 付記8に記載の記録媒体であって、
 前記計算コア制御処理は、前記例外検出処理によって検出された前記例外処理に応じて、前記計算コアに対して前記計算処理の開始を指示する処理を含む、
 記録媒体。
 (付記9)
 付記8に記載の記録媒体であって、
 前記例外検出処理は、前記例外処理を検出した旨を前記制御コアに通知する処理を含む、
 記録媒体。
 (付記10)
 付記9に記載の記録媒体であって、
 前記検出された前記例外処理を処理する際に必要なデータを前記制御コアに転送するデータ転送処理と、
 前記転送された前記データを用いて前記計算コアを代理して前記例外処理を処理する例外処理代理処理と、を前記コンピュータに更に実行させるプログラムを記録する、
 記録媒体。
 (付記10-1)
 付記10に記載の記録媒体であって、
 前記データ転送処理は、前記計算コアにて発生した例外処理がシステムコールである場合、当該システムコールの処理に必要なデータを前記制御コアが備えるバッファ領域に転送する処理を含む、
 記録媒体。
 (付記11)
 付記8乃至10のいずれか1項に記載の記録媒体であって、
 前記計算コア制御処理は、前記計算コアに対して当該計算コアが行う前記計算処理の停止を指示するとともに、前記計算処理を停止中の前記計算コアに対して、当該計算コアによる処理の対象となる前記計算処理の内容を変更する処理を含み、
 前記計算処理制御処理は、前記計算コア制御処理による前記計算処理の停止の指示に応じて実行中の前記計算処理を停止する処理と、前記計算コア制御処理による前記計算処理の内容の変更の指示に応じて前記計算コアによる処理の対象となる前記計算処理の内容を変更する処理と、を含む、
 記録媒体。
 (付記11-1)
 付記11に記載の記録媒体であって、
 前記計算コアが行う計算処理の数が当該計算コアの数よりも多い場合、
 前記計算コア制御処理は、予め定められた時間毎に、予め定められた基準に基づいて前記計算処理を実行中の前記計算コアを選択し、当該選択した計算コアによる前記計算処理を停止するように指示し、当該計算コアによる処理の対象となる前記計算処理の内容を変更する処理を含む、
 記録媒体。
 (付記12)
 制御コアからの計算処理の開始の指示に応じて計算コアが所定の前記計算処理を開始し、
 前記計算コアは、前記計算コアによる前記計算処理の実行中に予め設定された例外処理が発生した場合には、当該例外処理を検出し、当該例外処理が発生した前記計算処理を停止する、
 情報処理方法。
 (付記13)
 付記12に記載の情報処理方法であって、
 前記計算コアは、前記例外処理を検出した場合、当該例外処理を検出した旨を前記制御コアに通知する、
 情報処理方法。
 (付記14)
 付記13に記載の情報処理方法であって、
 前記計算コアは、前記例外処理を処理する際に必要なデータを前記制御コアに転送し、 前記制御コアは、転送された前記データを用いて前記計算コアを代理して前記例外処理を処理する、
 情報処理方法。
 (付記15)
 付記12乃至14のいずれか1項に記載の情報処理方法であって、
 前記制御コアは、前記計算処理を停止中の前記計算コアに対して、当該計算コアによる処理の対象となる前記計算処理の内容の変更を指示し、
 前記計算コアは、前記計算処理の内容の変更の指示に応じて前記計算コアによる処理の対象となる前記計算処理の内容を変更する、
 情報処理方法。
 (付記15-1)
 付記15に記載の情報処理方法であって、
 前記計算コアが行う計算処理の数が当該計算コアの数よりも多い場合、
 予め定められた時間毎に、予め定められた基準により前記計算処理を実行中の前記計算コアを選択し、当該選択した計算コアによる前記計算処理を停止させ、当該計算処理を停止した計算コアによる処理の対象となる前記計算処理の内容を変更する、
 情報処理方法。
 (付記16)
 外部装置からの制御により所定の計算処理を行う計算処理装置であって、
 外部装置からの計算処理の開始の指示に応じて前記計算処理の開始を行うように前記計算処理装置を制御する計算処理制御手段と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した前記計算処理の実行を停止する例外検出手段と、を備えた、
 計算処理装置。
 (付記17)
 付記16に記載の計算処理装置であって、
 前記例外検出手段は、該例外検出手段が前記例外処理を検出した旨を前記外部装置に通知する、
 計算処理装置。
 (付記18)
 付記16又は17に記載の計算処理装置であって、
 前記例外検出手段によって検出された前記例外処理を処理する際に必要なデータを前記外部装置へ転送するデータ転送手段を備える、
 計算処理装置。
 (付記19)
 付記16乃至18いずれか1項に記載の計算処理装置であって、
 前記計算処理制御手段は、前記外部装置からの前記計算処理の停止の指示に応じて実行中の前記計算処理の停止を行うように前記計算処理装置を制御し、前記外部装置からの前記計算処理の内容の変更の指示に応じて前記計算処理装置による処理の対象となる前記計算処理の内容を変更する、
 計算処理装置。
 (付記20)
 計算処理装置に、
 外部装置からの計算処理の開始の指示に応じて前記計算処理の開始を行うように前記計算処理装置を制御する計算処理制御処理と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した前記計算処理の実行を停止する例外検出処理と、を実行させるプログラムを記憶するコンピュータ読み取り可能な記憶媒体。
 (付記21)
 付記20に記載の記憶媒体であって、
 前記例外検出処理は、前記例外処理を検出した旨を外部装置へ通知する処理を含む、
 記憶媒体。
 (付記22)
 付記20又は21に記載の記憶媒体であって、
 前記検出された当該例外処理を処理する際に必要なデータを前記外部装置に転送するデータ転送処理を、前記計算処理装置に更に実行させるプログラムを記録する、
 記憶媒体。
 (付記23)
 付記20乃至22いずれか1項に記載の記憶媒体であって、
 前記計算処理制御処理は、前記外部装置からの前記計算処理の停止の指示に応じて実行中の前記計算処理を停止する処理と、前記外部装置からの前記計算処理の内容の変更の指示に応じて前記計算コアによる処理の対象となる前記計算処理の内容を変更する処理と、を含む、
 記憶媒体。
 (付記24)
 外部装置からの計算処理の開始の指示に応じて所定の前記計算処理を開始し、
 前記計算処理の実行中に予め設定された例外処理が発生した場合には、当該例外処理を検出し、当該例外処理が発生した前記計算処理を停止する、
 計算処理方法。
 (付記25)
 付記24に記載の計算処理方法であって、
 前記例外処理を検出した場合、当該例外処理を検出した旨を前記外部装置に通知する、 計算処理方法。
 (付記26)
 付記25に記載の計算処理方法であって、
 前記例外処理を検出した場合、当該例外処理を処理する際に必要なデータを前記制御コアに転送する、
 計算処理方法。
 なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されている。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
 以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
 この出願は、2013年11月8日に出願された日本出願特願2013-232197を基礎とする優先権を主張し、その開示の全てをここに取り込む。
1 並列計算機
2、3 ノード
21、31 CPU
211、311 プロセッサコア
22、32 メモリ
321 プロセスイメージ
3211 通信バッファ領域
23、33 データ転送回路
231、331 DMAエンジン機能
232、332 対CPU通信機能
4 ノード間通信デバイス
5 制御ノード
511 代理プロセス
5111 引数書き込み領域
5112 データバッファ領域
52 計算ノード用管理プロセス
521 計算プロセスDB
522 プロセス対応表
6 計算ノード
611 計算コア
611A コンテキスト
6111 汎用レジスタ群
6112 制御レジスタ群
6113 例外検出部
6114 例外通知部
6115 レジスタ群アクセス部
7、70 情報処理装置
71 制御コア
711 計算コア制御部
72 計算コア
721 計算処理制御部
722 例外検出部
8 OS稼動制御部
80 制御用OS
81 代理プロセス
82 OS非稼動計算部用管理プロセス
9 OS非稼動計算部
91 計算コア
92 メモリ
10 計算処理装置
101 計算処理制御部
102 例外検出部

Claims (26)

  1.  オペレーティングシステムが組み込まれた制御コアと、前記制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備え、
     前記制御コアは、停止している前記計算コアに対して当該計算コアが行う前記計算処理の開始を指示する計算コア制御手段を備え、
     前記計算コアは、前記計算コア制御手段からの前記計算処理の開始の指示に応じて前記計算処理の開始を行うように当該計算コアを制御する計算処理制御手段と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した前記計算処理を停止する例外検出手段と、を備えた、
     情報処理装置。
  2.  前記計算コア制御手段は、前記例外検出手段が検出した前記例外処理に応じて前記計算コアに対して前記計算処理の開始を指示し、
     前記計算処理制御手段は、前記計算コア制御手段から前記計算処理の開始の指示を受けた場合に、当該計算処理を開始するように前記計算コアを制御する、
     請求項1に記載の情報処理装置。
  3.  前記例外検出手段は、該例外検出手段が前記例外処理を検出した旨を前記制御コアに通知し、
     前記計算コア制御手段は、前記例外検出手段から受けた通知が示す前記例外処理に応じて前記計算コアに対して前記計算処理の開始の指示をする、
     請求項2に記載の情報処理装置。
  4.  前記計算コアは、前記例外検出手段によって検出された前記例外処理を処理する際に必要なデータを前記制御コアに転送するデータ転送手段を備え、
     前記制御コアは、前記データ転送手段によって転送された前記データを用いて前記計算コアを代理して前記例外処理を処理する例外処理代理手段を備える、
     請求項1から3のいずれか1項に記載の情報処理装置。
  5.  前記データ転送手段は、前記計算コアにて発生した前記例外処理がシステムコールである場合、当該システムコールの処理に必要なデータを前記制御コアの前記例外処理代理手段が有するバッファ領域に転送する、
     請求項4に記載の情報処理装置。
  6.  前記計算コア制御手段は、前記計算コアに対して当該計算コアが行う前記計算処理の停止を指示することが可能であるように構成されるとともに、前記計算処理を停止中の前記計算コアに対して当該計算コアによる処理の対象となる前記計算処理の内容を変更する指示を行うことが可能であるように構成され、
     前記計算処理制御手段は、前記計算コア制御手段からの前記計算処理の停止の指示に応じて実行中の前記計算処理の停止を行うように前記計算コアを制御し、前記計算コア制御手段からの前記計算処理の内容の変更の指示に応じて前記計算コアによる処理の対象となる前記計算処理の内容を変更する、
     請求項1から5のいずれか1項に記載の情報処理装置。
  7.  前記計算コアが行う前記計算処理の数が前記計算コアの数よりも多い場合、
     前記計算コア制御手段は、予め定められた時間毎に、予め定められた基準に基づいて前記計算処理を実行中の前記計算コアを選択し、当該選択した計算コアによる前記計算処理を停止するように指示し、当該計算処理を停止した計算コアによる処理の対象となる前記計算処理の内容を変更する、
     請求項6に記載の情報処理装置。
  8.  オペレーティングシステムが組み込まれた制御コアと、前記制御コアにて制御され、所定の計算処理を行う少なくとも一つの計算コアと、を備えた情報処理装置を備えたコンピュータに、
     停止している前記計算コアに対して当該計算コアが行う前記計算処理の開始を指示する計算コア制御処理と、
     前記計算処理の開始の指示に応じて前記計算処理の開始を行うように前記計算コアを制御する計算処理制御処理と、
     前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した計算処理の実行を停止する例外検出処理と、を実行させるプログラムを記録するコンピュータで読み取り可能な記録媒体。
  9.  前記例外検出処理は、前記例外処理を検出した旨を前記制御コアに通知する処理を含む、請求項8に記載の記録媒体。
  10.  前記検出された前記例外処理を処理する際に必要なデータを前記制御コアに転送するデータ転送処理と、
     前記転送された前記データを用いて前記計算コアを代理して前記例外処理を処理する例外処理代理処理と、を前記コンピュータに更に実行させるプログラムを記録する、請求項9に記載の記録媒体。
  11.  前記計算コア制御処理は、前記計算コアに対して当該計算コアが行う前記計算処理の停止を指示するとともに、前記計算処理を停止中の前記計算コアに対して、当該計算コアによる処理の対象となる前記計算処理の内容を変更する処理を含み、
     前記計算処理制御処理は、前記計算コア制御処理による前記計算処理の停止の指示に応じて実行中の前記計算処理を停止する処理と、前記計算コア制御処理による前記計算処理の内容の変更の指示に応じて前記計算コアによる処理の対象となる前記計算処理の内容を変更する処理と、を含む、
     請求項8から10のいずれか1項に記載の記録媒体。
  12.  制御コアからの計算処理の開始の指示に応じて計算コアが所定の前記計算処理を開始し、
     前記計算コアは、前記計算コアによる前記計算処理の実行中に予め設定された例外処理が発生した場合には、当該例外処理を検出し、当該例外処理が発生した前記計算処理を停止する、
     情報処理方法。
  13.  前記計算コアは、前記例外処理を検出した場合、当該例外処理を検出した旨を前記制御コアに通知する、
     請求項12に記載の情報処理方法。
  14.  前記計算コアは、前記例外処理を処理する際に必要なデータを前記制御コアに転送し、 前記制御コアは、転送された前記データを用いて前記計算コアを代理して前記例外処理を処理する、
     請求項13に記載の情報処理方法。
  15.  前記制御コアは、前記計算処理を停止中の前記計算コアに対して、当該計算コアによる処理の対象となる前記計算処理の内容の変更を指示し、
     前記計算コアは、前記計算処理の内容の変更の指示に応じて前記計算コアによる処理の対象となる前記計算処理の内容を変更する、
     請求項12から14のいずれか1項に記載の情報処理方法。
  16.  外部装置からの制御により所定の計算処理を行う計算処理装置であって、
     外部装置からの計算処理の開始の指示に応じて前記計算処理の開始を行うように前記計算処理装置を制御する計算処理制御手段と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した前記計算処理の実行を停止する例外検出手段と、を備えた、
     計算処理装置。
  17.  前記例外検出手段は、該例外検出手段が前記例外処理を検出した旨を前記外部装置に通知する、
     請求項16に記載の計算処理装置。
  18.  前記例外検出手段によって検出された前記例外処理を処理する際に必要なデータを前記外部装置へ転送するデータ転送手段を備える、
     請求項16または17に記載の計算処理装置。
  19.  前記計算処理制御手段は、前記外部装置からの前記計算処理の停止の指示に応じて実行中の前記計算処理の停止を行うように前記計算処理装置を制御し、前記外部装置からの前記計算処理の内容の変更の指示に応じて前記計算処理装置による処理の対象となる前記計算処理の内容を変更する、
     請求項16から18のいずれか1項に記載の計算処理装置。
  20.  計算処理装置に、
     外部装置からの計算処理の開始の指示に応じて前記計算処理の開始を行うように前記計算処理装置を制御する計算処理制御処理と、前記計算処理の実行中に発生した予め設定された例外処理を検出し、当該例外処理が発生した前記計算処理の実行を停止する例外検出処理と、を実行させるプログラムを記憶するコンピュータ読み取り可能な記憶媒体。
  21.  前記例外検出処理は、前記例外処理を検出した旨を外部装置へ通知する処理を含む、
     請求項20に記載の記憶媒体。
  22.  前記検出された当該例外処理を処理する際に必要なデータを前記外部装置に転送するデータ転送処理を、前記計算処理装置に更に実行させるプログラムを記録する、
     請求項20または21に記載の記憶媒体。
  23.  前記計算処理制御処理は、前記外部装置からの前記計算処理の停止の指示に応じて実行中の前記計算処理を停止する処理と、前記外部装置からの前記計算処理の内容の変更の指示に応じて前記計算コアによる処理の対象となる前記計算処理の内容を変更する処理と、を含む、
     請求項20から22のいずれか1項に記載の記憶媒体。
  24.  外部装置からの計算処理の開始の指示に応じて所定の前記計算処理を開始し、
     前記計算処理の実行中に予め設定された例外処理が発生した場合には、当該例外処理を検出し、当該例外処理が発生した前記計算処理を停止する、
     計算処理方法。
  25.  前記例外処理を検出した場合、当該例外処理を検出した旨を前記外部装置に通知する、 請求項24に記載の計算処理方法。
  26.  前記例外処理を検出した場合、当該例外処理を処理する際に必要なデータを前記制御コアに転送する、
     請求項25に記載の計算処理方法。
PCT/JP2014/005561 2013-11-08 2014-11-05 情報処理装置、情報処理方法、記録媒体、計算処理装置、計算処理方法 WO2015068382A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020167014916A KR101783164B1 (ko) 2013-11-08 2014-11-05 정보 처리 장치, 정보 처리 방법, 기록 매체, 계산 처리 장치, 계산 처리 방법
EP14860668.4A EP3067796A4 (en) 2013-11-08 2014-11-05 Information processing device, information processing method, recording medium, calculation processing device, calculation processing method
US15/035,065 US10241829B2 (en) 2013-11-08 2014-11-05 Information processing device, information processing method, recording medium, calculation processing device, calculation processing method
CN201480061338.6A CN105723340B (zh) 2013-11-08 2014-11-05 信息处理设备、信息处理方法、记录介质、计算处理设备、计算处理方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2013-232197 2013-11-08
JP2013232197A JP5867482B2 (ja) 2013-11-08 2013-11-08 情報処理装置、情報処理方法、プログラム、計算処理装置、計算処理方法

Publications (1)

Publication Number Publication Date
WO2015068382A1 true WO2015068382A1 (ja) 2015-05-14

Family

ID=53041177

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/005561 WO2015068382A1 (ja) 2013-11-08 2014-11-05 情報処理装置、情報処理方法、記録媒体、計算処理装置、計算処理方法

Country Status (6)

Country Link
US (1) US10241829B2 (ja)
EP (1) EP3067796A4 (ja)
JP (1) JP5867482B2 (ja)
KR (1) KR101783164B1 (ja)
CN (1) CN105723340B (ja)
WO (1) WO2015068382A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017010556A (ja) * 2015-06-22 2017-01-12 エルエス産電株式会社Lsis Co., Ltd. Plcシステム

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017099184A1 (ja) 2015-12-09 2017-06-15 旭硝子株式会社 硬化性組成物および硬化物
JP6798211B2 (ja) * 2016-09-21 2020-12-09 日本電気株式会社 並列計算機システムおよび管理方法
JP6249119B1 (ja) * 2017-03-15 2017-12-20 日本電気株式会社 制御装置、制御方法、プログラム、情報処理装置
CN111291373B (zh) * 2020-02-03 2022-06-14 思客云(北京)软件技术有限公司 用于分析数据污染传播的方法、设备和计算机可读存储介质
JP7405008B2 (ja) 2020-06-08 2023-12-26 富士通株式会社 情報処理装置、情報処理プログラム、及び、情報処理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0619856A (ja) 1991-09-20 1994-01-28 Hitachi Ltd 並列計算機
JP2000029866A (ja) * 1998-05-14 2000-01-28 Advanced Risc Mach Ltd ベクトル命令の処理の間に生じる例外の処理
JP2008165318A (ja) 2006-12-27 2008-07-17 Hitachi Ltd 計算機システム
JP2013232197A (ja) 2007-09-24 2013-11-14 Apple Inc 電子デバイスに組み込まれた認証システム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200502847A (en) * 2003-07-08 2005-01-16 Benq Corp Control device and method for reducing number of interrupts in a processor
JP5239752B2 (ja) * 2008-10-31 2013-07-17 富士通株式会社 同期メッセージ発行システム、同期メッセージ発行方法および同期メッセージ発行プログラム
US8271990B2 (en) * 2009-02-27 2012-09-18 International Business Machines Corporation Removing operating system jitter-induced slowdown in virtualized environments
US8260996B2 (en) * 2009-04-24 2012-09-04 Empire Technology Development Llc Interrupt optimization for multiprocessors
US8537832B2 (en) * 2010-03-12 2013-09-17 Lsi Corporation Exception detection and thread rescheduling in a multi-core, multi-thread network processor
WO2012014285A1 (ja) * 2010-07-27 2012-02-02 富士通株式会社 割込制御方法、マルチコアプロセッサシステム、および割込制御プログラム
WO2012067903A2 (en) 2010-11-17 2012-05-24 Luvata Appleton Llc Alkaline collector anode
US20140351617A1 (en) * 2013-05-27 2014-11-27 Motorola Mobility Llc Method and Electronic Device for Bringing a Primary Processor Out of Sleep Mode

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0619856A (ja) 1991-09-20 1994-01-28 Hitachi Ltd 並列計算機
JP2000029866A (ja) * 1998-05-14 2000-01-28 Advanced Risc Mach Ltd ベクトル命令の処理の間に生じる例外の処理
JP2008165318A (ja) 2006-12-27 2008-07-17 Hitachi Ltd 計算機システム
JP2013232197A (ja) 2007-09-24 2013-11-14 Apple Inc 電子デバイスに組み込まれた認証システム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
See also references of EP3067796A4 *
TAKUYA NAGATA ET AL.: "SPE Observer: An OS Monitoring System Running on an SPE in Cell /B.E.", IPSJ SIG NOTES, 2011 (HEISEI 23) NENDO ?6? [ DVD -ROM, no. 120, 15 April 2012 (2012-04-15), pages 1 - 8, XP055342772 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017010556A (ja) * 2015-06-22 2017-01-12 エルエス産電株式会社Lsis Co., Ltd. Plcシステム
US10324440B2 (en) 2015-06-22 2019-06-18 Lsis Co., Ltd. Programmable logic controller system

Also Published As

Publication number Publication date
US10241829B2 (en) 2019-03-26
CN105723340B (zh) 2019-12-10
KR20160083916A (ko) 2016-07-12
CN105723340A (zh) 2016-06-29
US20160371113A1 (en) 2016-12-22
KR101783164B1 (ko) 2017-09-28
JP2015094974A (ja) 2015-05-18
JP5867482B2 (ja) 2016-02-24
EP3067796A1 (en) 2016-09-14
EP3067796A4 (en) 2017-07-19

Similar Documents

Publication Publication Date Title
JP5180373B2 (ja) 仮想化環境における割り込みメッセージ終了のレイジー処理
WO2015068382A1 (ja) 情報処理装置、情報処理方法、記録媒体、計算処理装置、計算処理方法
US9760386B2 (en) Accelerator functionality management in a coherent computing system
US9652247B2 (en) Capturing snapshots of offload applications on many-core coprocessors
US8544010B2 (en) Providing notification to speculatively waking up target virtual machine for an I/O event using multiple virtual machines and processors
JP5479802B2 (ja) ハイブリッド・コンピューティング環境におけるデータ処理のための方法、装置、およびプログラム
US8131814B1 (en) Dynamic pinning remote direct memory access
US20180113797A1 (en) Instruction set architecture and software support for register state migration
US9946870B2 (en) Apparatus and method thereof for efficient execution of a guest in a virtualized enviroment
JP6508382B1 (ja) 情報処理装置、情報処理方法、プログラム
KR20170095607A (ko) 컴퓨팅 디바이스, 코프로세서와 비휘발성 메모리 사이의 데이터 이동 방법 및 이를 포함하는 프로그램
US10565135B2 (en) Information processing device, information processing method, main processor core, program, information processing method, and sub processor core
US10545697B1 (en) Reverse order request queueing by para-virtual device drivers
WO2016067496A1 (ja) 情報処理装置
KR20180111737A (ko) 컴퓨팅 디바이스, 코프로세서와 비휘발성 메모리 사이의 데이터 이동 방법 및 이를 포함하는 프로그램
US20230236889A1 (en) Distributed accelerator
van der Grinten et al. Managarm: A Fully Asynchronous Operating System
Wang et al. Implementation of CAPI and Traditional PCIe and Delay of Comparison
CN117311896A (zh) 基于虚拟内核环境的直接内存访问的测试方法及装置
JP2020095446A (ja) 情報処理装置、メモリ初期化制御方法及びプログラム
KR20170124744A (ko) 가상 머신의 입출력 처리 방법

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14860668

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 15035065

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 20167014916

Country of ref document: KR

Kind code of ref document: A

REEP Request for entry into the european phase

Ref document number: 2014860668

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2014860668

Country of ref document: EP