Computer system and program execution method

A synchronous core processing unit executes the same program as a program executed by another computer for an execution unit at a synchronization timing synchronized with a synchronous core processing unit of the other computer, and migrates the program being executed for which migration is requested according to characteristics of the program to a quasi-synchronous core processing unit. The quasi-synchronous core processing unit executes the program migrated from the synchronous core processing unit, and then migrates the program to the synchronous core processing unit. The synchronous core processing unit outputs, to an output comparison machine, an execution result obtained by executing the program migrated from the quasi-synchronous core processing unit at the synchronization timing.

TECHNICAL FIELD

The present invention relates to a computer system and a program execution method.

BACKGROUND ART

There is a fault tolerant computer as a technique for implementing non-stop operation of a system. The fault tolerant computer runs the same program on plural central processing units (CPUs) by hardware that multiplexes CPUs, a memory, an input and output (I/O) bus, and the like, and collates results. Therefore, even if one CPU fails, the other CPUs can continue processing.

There is a technique for constructing a fault tolerant computer using plural loosely coupled general-purpose computers as a method for achieving the same level of multiplicity as this fault tolerant computer without manufacturing dedicated hardware for multiplexing.

For example, PTL 1 describes a loosely coupled fault tolerant computer. That is, PTL 1 discloses that “plural CPUs are connected by a duplex bus to execute the same task, and execution results (instruction outputs) are collated.”

CITATION LIST

Patent Literature

SUMMARY OF INVENTION

Technical Problem

Incidentally, the loosely coupled fault tolerant computer described in PTL 1 has a mechanism (task synchronization processing) in which specific cores operate synchronously by sharing information on a program to be operated next over a network and waiting for an execution start timing. In this system, in order to increase processing performance per unit time, it is necessary to increase the number of the cores that operate synchronously.

However, in order to increase the number of the cores that operate synchronously, it is necessary to increase computational resources of a communication bandwidth for synchronization, communication hardware, and a device for matching. For example, under a case where in addition to one set of cores performing a synchronization processing, another set of cores performs another synchronization processing, a set of a communication bandwidth for synchronization, communication hardware, and a device for matching is required to be added. Therefore, a system administrator has to consider increasing the hardware or changing a configuration of the system.

The invention has been made in view of such a situation, and an object of the invention is to improve processing performance of a computer system without changing hardware configuration.

Solution to Problem

A computer system according to the invention includes a computer and a comparison machine. The computer includes a synchronous core processing unit and a quasi-synchronous core processing unit whose operation is managed by an operating system, and the synchronous core processing unit and the quasi-synchronous core processing unit are configured to switch a program for a predetermined execution unit and execute a plurality of the programs in parallel. The comparison machine compares execution results of the program executed by a plurality of the computers connected via a network and outputs a comparison result. Information on the program executed by the computer is exchanged between the computer and another computer within a specified time range via the network.

Then, the synchronous core processing unit executes the same program as a program executed by the other computer for the execution unit at a synchronization timing synchronized with a synchronous core processing unit of the other computer, and migrates the program being executed for which migration is requested according to characteristics of the program to the quasi-synchronous core processing unit. The quasi-synchronous core processing unit executes the program migrated from the synchronous core processing unit, and then migrates the program to the synchronous core processing unit. The synchronous core processing unit outputs, to the comparison machine, an execution result obtained by executing the program migrated from the quasi-synchronous core processing unit at the synchronization timing.

Advantageous Effect

According to the invention, the synchronous core processing unit and the quasi-synchronous core processing unit can execute the program in parallel by migrating the program being executed for which the migration is requested according to the characteristics of the program to the quasi-synchronous core processing unit. There is no need of a communication band or new hardware to synchronize and operate the quasi-synchronous core processing units on the plural computers. Therefore, processing performance of the computer system can be improved without changing a hardware configuration of the computers.

Problems, configurations, and effects other than those described above will be clarified by the following description of an embodiment.

DESCRIPTION OF EMBODIMENTS

Hereinafter, an embodiment for implementing the invention will be described with reference to drawings. In the description and drawings, components having substantially the same function or configuration are designated by the same reference numerals, and redundant description will be omitted.

EMBODIMENT

Hereinafter, an example of a task synchronization processing according to the embodiment of the invention will be described with reference toFIGS.1and2.

FIG.1is a system configuration diagram of a computer system10according to the embodiment of the invention.

The computer system10has a configuration in which a computer X201, a computer Y211, a computer Z221, a computer T231, and an output comparison machine251are connected to a network240, and the output comparison machine251and an external device (not shown) are connected with each other via a network260.

The computers X201to T231(an example of plural computers) do not include a shared memory, disk, or the like, and notify each other what is necessary for a synchronization processing of a program. Therefore, the computer system10constitutes a loosely coupled fault tolerant computer that obtains output results from the plural computers. Therefore, in the computer system10, information on a program to be executed by the computer X201is exchanged between the computer X201and the other computers Y211to T231within a specified time range via the network240. That is, the plural computers X201to t231exchange information on the program to be executed with each other. The number of computers included in the computer system10may be two or more, and is not limited to four computers according to the present embodiment.

The computer X201includes a central processing unit (CPU)202, a bus controller (BC)205, a memory206, and a network interface card (NIC)207. Since the computer Y211, the computer Z221, and the computer T231include the same components as the computer X201, a configuration example of the computer X201will be described here.

The CPU202includes a core203and a core204. Then, there is a configuration in which the CPU202, the bus controller205, the memory206, and the NIC207are connected with each other by a bus provided in the computer X201. The number of the CPU202mounted on the computer X201is not limited to one, and the number is not limited as long as the number of cores in the CPU202is two or more.

The CPU202is used as an example of an arithmetic unit that reads a program code of software that implements each function according to the present embodiment from the memory206and executes the software. Variables, parameters, and the like generated during an arithmetic processing of the CPU202are temporarily written in the memory206, and these variables, parameters, and the like are appropriately read by the CPU202. Other arithmetic units such as a micro processing unit (MPU) may be used instead of the CPU202.

Cores203and204running on the CPU202are functional units whose operation is managed by an operating system (not shown inFIG.1), and functions of the cores203and204are implemented by software programs. Although the details will be described later with reference toFIG.2, the core203is used as, for example, a synchronous core processing unit101, and the core204is used as a quasi-synchronous core processing unit108. An execution unit of a program executed in the core203and204is a task (also called a process). In the following description, the program to be executed may be called a task. Depending on characteristics of the program according to the present embodiment, the task to be executed in the core203is migrated to the core204, executed in the core204, and then returned to the core203, and the core203can execute the returned task.

The bus controller205creates a memory space (address) in the memory206and controls data written in the memory206. For example, an execution result of the program executed by the cores203and204is written in the memory206. The bus controller205manages input and output of data of each device in order to avoid data collision by each device in the computer X201.

Examples of the memory206include a read only memory (ROM), a read only memory (RAM), a hard disk drive (HDD), a solid state drive (SSD), a flexible disk, an optical disk, an optical magnetic disk, a CD-ROM, a CD-R, a magnetic tape, a non-volatile memory, and the like. In the memory206, in addition to the OS (operating system) and various parameters, a program for operating the computer X201and a program instructed to be executed by the computer X201are recorded. The memory206permanently records a program, data, and the like required for the CPU202to operate, and is used as an example of a computer-readable non-transient recording medium that stores the program executed by the computer X201.

The NIC207can send and receive various data between devices via a local area network (LAN) connected to a terminal, a dedicated line, or the like.

The computer X201and another computer (at least one of the computers Y211to T231) execute the same program at the same timing. Therefore, the computer X201and the other computer communicate with each other for synchronization data for synchronizing an execution timing of the program. After the program is executed by each computer, an execution result of the program executed by the computer X201and an execution result of the program executed by the other computer are transferred to the output comparison machine251through the network240.

Execution results of the program executed by the computers X201to T231are transmitted to the output comparison machine251through the network240. The output comparison machine251receives the execution results of the program executed by the plural computers X201to T231connected with each other by the network240, compares and collates the execution results, and then outputs a collation result to the external network260.

Meanwhile, the output comparison machine251broadcasts data received from the external network260to each computer. Then, after the same task of each computer receives the same data, the received data is processed.

The output comparison machine251(an example of a comparison machine) includes a CPU252, a bus controller254, a memory255, a NIC256, and a NIC257. The CPU252includes one core253. Then, the CPU252, the bus controller254, the memory255, the NIC256, and the NIC257are connected by a bus provided inside the output comparison machine251.

Operations of the CPU252, the bus controller254, the memory255, and the NICs256and257included in the output comparison machine251are the same as operations of the CPU202, the bus controller205, the memory206, and the NIC207included in the computer X201. The NIC256is connected to the network260and the NIC257is connected to the network240.

The CPU252has a function of comparing execution results of a program obtained by two or more computers. The execution results of the computers are input to the NIC257and written to the memory255through the network240, and then the core253of the CPU252executes a comparison collation program. Then, once a comparison collation result obtained by executing the comparison collation program by the core253is written in the memory255, the comparison collation result is output to the network260through the NIC256. For example, the comparison collation result is displayed on a display device or the like connected to the network260. A user who operates the display device can confirm whether the execution result of each computer is normal or abnormal based on the comparison collation result.

By operating an operating system shown inFIG.2described later, even if two of the four computers fail, the remaining two computers execute the same task, and the output comparison machine251can compare two pieces of output data of the same task performed. Even if three of the four computers fail, the remaining one can continue executing the task. When only one computer executes the task, the output comparison machine251does not perform the comparison of output data.

<Operating System (OS) Configuration Example and Task Execution Method Example>

FIG.2is a configuration example of the operating system running on each computer and a time chart showing an example of a task execution method for the task synchronization processing according to the embodiment of the invention. In the description, the operating system is abbreviated as OS.

InFIG.2, in order to improve readability, configuration examples of an OS100of the computer X201and an OS120of computer Y211will be described. In practice, the computer Z221and the computer T231shown inFIG.1are also connected to the computer X201and the computer Y211. The four computers execute the task synchronization processing and output the execution result to the output comparison machine251.

The OS100of the computer X201and the OS120of the computer Y211include a component that performs the task synchronization processing. The OS100and the OS120are operating systems having a multi-programming function, and manage a program being executed in an execution unit called a task (also called a process) in order to enable execution of plural programs. The OS100and the OS120are for multiprocessor use, and can execute tasks in parallel for each core.

The OS100and the OS120are connected with each other by a synchronization data communication path140, and exchange synchronization data with each other via the synchronization data communication path140. In the present embodiment, a next execution task waiting processing unit104of the OS100and a next execution task waiting processing unit124of the OS120are connected with each other by the synchronization data communication path140. In the description, a task to be executed after a currently executed task is referred to as “next execution task”.

The present embodiment is not limited to two computers, and the computer system10can be constructed multiply using any number of computers. Then, the synchronization data communication path140is used as a path connecting plural computers constructed multiply.

The computers X201and Y211according to the present embodiment can execute a processing of a program (task) executed in a hierarchy higher than the operating system by classifying the processing into a deterministic processing or a nondeterministic processing. The deterministic processing is a processing in which output results are the same as long as input results are the same. The nondeterministic processing is a processing in which output results are not the same even if input results are the same. For example, the nondeterministic processing is a processing in which output results are not the same when a failure occurs for some reason in hardware that executes the task. The nondeterministic processing is also a processing in which output results are not the same when a task being executed receives different parameters for each computer from another task. Due to influence of disturbance and the like, output results obtained by the synchronous core processing unit in the related art executing a nondeterministic processing task are not the same. However, since the synchronous core processing units101and121according to the present embodiment are reliably executed synchronously, output results of a nondeterministic processing are the same.

Therefore, in the computer system10according to the present embodiment, synchronized cores (synchronous core processing units101and121) execute (synchronously execute) a nondeterministic processing, and non-synchronous cores (quasi-synchronous core processing units108and128) execute (quasi-synchronously execute) a deterministic processing. Same execution results can be obtained in the plural cores from both the executed deterministic processing and the nondeterministic processing. Hereinafter, configuration examples and operation examples of the OS100running on the computer X201and the OS120running on the computer Y211according to the present embodiment will be described in order.

<Configuration Example of OS100>

First, a configuration example of the OS100will be described.

The computer X201includes the synchronous core processing unit101and the quasi-synchronous core processing unit108that can switch programs for each task (an example of a predetermined execution unit) managed by the OS100and execute plural programs in parallel.

The synchronous core processing unit101includes an execution task queue102, a next execution task selection processing unit103, the next execution task waiting processing unit104, a task wake-up processing unit105, a core migration processing unit106, and a core migration request reception unit107. In the synchronous core processing unit101, each processing unit performs a processing looping in an order of the next execution task selection processing unit103, the next execution task waiting processing unit104, the task wake-up processing unit105, the next execution task selection processing unit103, . . . . The synchronous core processing unit101executes the core migration processing unit106in preference to the looping processing when there is a core migration request from the task while performing the looping processing of the processing units103to105.

The quasi-synchronous core processing unit108includes an execution task queue109, a next execution task selection processing unit110, a task wake-up processing unit111, a core migration processing unit112, and a core migration request reception unit113. In the quasi-synchronous core processing unit108, each processing unit performs a processing looping in an order of the next execution task selection processing unit110, the task wake-up processing unit111, the next execution task selection processing unit110, . . . . The quasi-synchronous core processing unit108executes the core migration processing unit112in preference to the looping processing when there is a core migration request from the task while performing the looping processing of the processing units110and111.

Therefore, the synchronous core processing unit101executes the same program as a program executed by the computer Y211(the other computer) for each task at a synchronization timing synchronized with the synchronous core processing unit101included in the computer Y211, and migrates the program being executed for which migration is requested according to characteristics of the program to the quasi-synchronous core processing unit108. Next, the quasi-synchronous core processing unit108executes the program migrated from the synchronous core processing unit101, and then migrates the program to the synchronous core processing unit101. Then, the synchronous core processing unit101outputs, to the output comparison machine251, an execution result obtained by executing the program migrated from the quasi-synchronous core processing unit108at the synchronization timing. Here, the program executed by the synchronous core processing unit101at the synchronization timing is characterized by a nondeterministic processing in which unless the nondeterministic processing is executed in synchronization with the computer Y211(the other computer), output results are not the same even if input values are the same. When the nondeterministic processing is executed in synchronization with the computer Y211(the other computer) and the input values are the same, the output results are the same. The program migrated from the synchronous core processing unit101to the quasi-synchronous core processing unit108is characterized by a deterministic processing in which output results are the same if input values are the same.

Plural quasi-synchronous core processing units108may exist depending on the number of cores of the CPU202. For example, plural quasi-synchronous core processing units108may exist with respect to one synchronous core processing unit101, and the plural quasi-synchronous core processing units108may be identified by specific numbers or the like. In this case, the synchronous core processing unit101may migrate a task B for which a core migration request161is made to the quasi-synchronous core processing unit108specified by a number or the like, or to the quasi-synchronous core processing unit108having a relatively low load.

<Operation Example of Synchronous Core Processing Unit101>

Here, a queue included in the synchronous core processing unit101of the OS100and a detailed operation example of each processing unit will be described.

The execution task queue102(an example of a first program management unit) connects a program to the queue for each task and manages tasks waiting to be executed for each priority.FIG.2shows an aspect in which tasks “A” and “B” are connected to the execution task queue102. In the execution task queue102, since an upper task has a higher priority, the task “A” is executed in preference to the task “B”.

The next execution task selection processing unit103(an example of a first selection processing unit) selects a task that is in the same order and is the earliest task waiting to be executed on the computers X201and211among tasks that can be executed in the execution task queue102.

The next execution task waiting processing unit104(an example of a waiting processing unit) waits for a start of execution of a task that can be executed next to the task selected by the next execution task selection processing unit103with the synchronous core processing unit121included in the computer Y211. Therefore, the next execution task waiting processing unit104exchanges information on the task retrieved from the execution task queue102by the next execution task selection processing unit103with the next execution task waiting processing unit124of the OS120via the synchronization data communication path140. Then, the next execution task waiting processing unit104waits within any timeout period until the same task becomes executable in the same order in synchronization cores of at least two or more computers.

The task wake-up processing unit105(an example of a first program execution unit) wakes up and executes a task selected by the next execution task waiting processing unit104at the synchronization timing. The task executed by the task wake-up processing unit105is a task determined to be executable in the same order in the synchronization cores of at least two or more computers.

The synchronous core processing unit101executes the next execution task selection processing unit103again when the execution of the task woken up by the task wake-up processing unit105ends or is interrupted. The next execution task selection processing unit103selects a task to be executed next from the execution task queue102and executes the task. The next execution task selection processing unit103selects and continues processing a task to be executed next until there are no more tasks connected to the execution task queue102.

The core migration processing unit106(an example of a first migration processing unit) migrates a task for which the core migration request reception unit107receives a migration request to the quasi-synchronous core processing unit108. Here, the core migration processing unit106can instruct a task received by the core migration request reception unit107to migrate to any migration destination (in the present embodiment, the quasi-synchronous core processing unit108) designated by a task that makes the migration request.

In this case, the core migration processing unit106migrates and connects the task received by the core migration request reception unit107to the execution task queue109at any migration destination (quasi-synchronous core processing unit108) specified by the task that makes the migration request based on an instruction content from the core migration request reception unit107. Here, when there are plural quasi-synchronous core processing units that can be selected as the migration destination of the task, the any migration destination specified by the task is, for example, one quasi-synchronous core processing unit selected from the plural quasi-synchronous core processing units.

The core migration request reception unit107(an example of a first migration request reception unit) receives a core migration request from a task being executed. Here, the core migration request reception unit107can receive the migration request from the task at any timing during execution of the task. Then, the core migration request reception unit107conveys a content of the received core migration request to the core migration processing unit106. Then, the core migration request reception unit107executes the core migration processing unit106between a time when the task wake-up processing unit105executes a task and a time when the next execution task selection processing unit103selects a task to be executed next.

<Operation Example of Quasi-Synchronous Core Processing Unit108>

Next, a queue included in the quasi-synchronous core processing unit108and a detailed operation example of each processing unit will be described.

Similar to the execution task queue102of the synchronous core processing unit101, the execution task queue109(an example of a second program management unit) connects a program to the queue for each task and manages tasks waiting to be executed for each priority.FIG.2shows an aspect in which a task “F” is connected to the execution task queue109.

The next execution task selection processing unit110(an example of a second selection processing unit) selects a task that is the earliest task waiting to be executed among tasks that can be executed in the execution task queue109.

The task wake-up processing unit111(an example of a second program execution unit) wakes up and executes the task selected by the next execution task selection processing unit110.

The core migration processing unit112(an example of a second migration processing unit) migrates a task for which the core migration request reception unit113receives a migration request to the synchronous core processing unit101. Here, the core migration processing unit112migrates the task to a migration source of the task. Therefore, based on an instruction content from the core migration request reception unit113, the core migration processing unit112connects an instructed task to the execution task queue102of the instructed synchronous core processing unit101.

Similar to the core migration request reception unit107of the synchronous core processing unit101, the core migration request reception unit113(an example of a second migration request reception unit) receives the migration request from the task being executed by the task wake-up processing unit111. The core migration request reception unit113can receive the migration request from the task at any timing during execution of the task. Then, the core migration request reception unit113conveys a content of the core migration request to the core migration processing unit112. In this case, the core migration request reception unit113can receive the core migration request from the task being executed at any timing. Then, the core migration request reception unit113executes the core migration processing unit112between a time when the task wake-up processing unit111wakes up and executes a task and a time when the next execution task selection processing unit110selects a task to be executed next.

<Configuration Example of OS120>

Next, a configuration example of the OS120will be described. Similar to the computer X201, the computer Y211includes the synchronous core processing unit121and the quasi-synchronous core processing unit128that can switch programs for each task (an example of a predetermined execution unit) managed by the OS120and execute plural programs in parallel.

Similar to the synchronous core processing unit101of the OS100, the synchronous core processing unit121includes an execution task queue122, a next execution task selection processing unit123, the next execution task waiting processing unit124, a task wake-up processing unit125, a core migration processing unit126, and a core migration request reception unit127. Each processing unit performs a processing looping in an order of the next execution task selection processing unit123, the next execution task waiting processing unit124, the task wake-up processing unit125, the next execution task selection processing unit123, . . . . The synchronous core processing unit121executes the core migration processing unit126in preference to the looping processing when there is a core migration request from the task while performing the looping processing of the processing units123to125.

Similar to the quasi-synchronous core processing unit108of the OS100, the quasi-synchronous core processing unit128includes an execution task queue129, a next execution task selection processing unit130, a task wake-up processing unit131, a core migration processing unit132, and a core migration request reception unit133. Each processing unit performs a processing looping in an order of the next execution task selection processing unit130, the task wake-up processing unit131, the next execution task selection processing unit130, . . . . The quasi-synchronous core processing unit128executes the core migration processing unit132in preference to the looping processing when there is a core migration request from the task while performing the looping processing of the processing units130and131.

Therefore, the synchronous core processing unit121executes the same program for each task at a synchronization timing synchronized with the synchronous core processing unit101included in the computer X201, and migrates the program being executed for which migration is requested according to characteristics of the program to the quasi-synchronous core processing unit128. Next, the quasi-synchronous core processing unit128executes the program migrated from the synchronous core processing unit121, and then migrates the program to the synchronous core processing unit121. Then, the synchronous core processing unit121outputs, to the output comparison machine251, an execution result obtained by executing the program migrated from the quasi-synchronous core processing unit128.

Plural quasi-synchronous core processing units128may exist depending on the number of cores of the CPU212. For example, plural quasi-synchronous core processing units128may exist with respect to one synchronous core processing unit121, and the plural quasi-synchronous core processing units128may be identified by specific numbers or the like. In this case, the synchronous core processing unit121may migrate the task B for which a core migration request162is made to the quasi-synchronous core processing unit128specified by a number or the like, or to the quasi-synchronous core processing unit128having a relatively low load.

The synchronous core processing unit121and the quasi-synchronous core processing unit128running on the OS120of the computer Y211have the same components as the synchronous core processing unit101and the quasi-synchronous core processing unit108running on the OS100of the computer X201, respectively.

<Operation Example of Synchronous Core Processing Unit121>

Here, a queue included in the synchronous core processing unit121of the OS120and a detailed operation example of each processing unit will be described.

The execution task queue122(an example of the first program management unit) connects a program to the queue for each task and manages tasks waiting to be executed for each priority.FIG.2shows an aspect in which the tasks “A” and “B” are connected to the execution task queue122. In the execution task queue122, since an upper task has a higher priority, the task “A” is executed in preference to the task “B”.

The next execution task selection processing unit123(an example of the first selection processing unit) selects a task that is in the same order and is the earliest tasks waiting to be executed on the computers X201and211among tasks that can be executed in the execution task queue122.

The next execution task waiting processing unit124(an example of the waiting processing unit) waits for a start of execution of a task that can be executed next to the task selected by the next execution task selection processing unit123with the synchronous core processing unit101included in the computer X201. Therefore, the next execution task waiting processing unit124exchanges information on the task retrieved from the execution task queue122by the next execution task selection processing unit123with the next execution task waiting processing unit104of the OS100via the synchronization data communication path140. Then, the next execution task waiting processing unit124waits within any timeout period until the same task becomes executable in the same order in synchronization cores of at least two or more computers.

The task wake-up processing unit125(an example of the first program execution unit) wakes up and executes a task selected by the next execution task selection processing unit123at the synchronization timing. The task executed by the task wake-up processing unit125is a task determined to be executable in the same order in the synchronization cores of at least two or more computers.

The synchronous core processing unit121executes the next execution task selection processing unit123again when the execution of the task woken up by the task wake-up processing unit125ends or is interrupted. The next execution task selection processing unit123selects a task to be executed next from the execution task queue122and executes the task. The next execution task selection processing unit123selects and continues processing a task to be executed next until there are no more tasks connected to the execution task queue122.

The core migration processing unit126(an example of the first migration processing unit) migrates a task for which the core migration request reception unit127receives a migration request to the quasi-synchronous core processing unit128. Here, the core migration processing unit126can instruct a task received by the core migration request reception unit127to migrate to any migration destination designated by a task that makes the migration request. In this case, the core migration processing unit126migrates and connects the task received by the core migration request reception unit127to the execution task queue129at any migration destination (quasi-synchronous core processing unit128in the present embodiment) specified by the task that makes the migration request based on an instruction content from the core migration request reception unit127.

The core migration request reception unit127(an example of the first migration request reception unit) receives a core migration request from a task being executed. Here, the core migration request reception unit127can receive the migration request from the task at any timing during execution of the task. Then, the core migration request reception unit127conveys a content of the received core migration request to the core migration processing unit126. In this case, the core migration request reception unit127can receive the core migration request from the task being executed at any timing during execution of the task. Then, the core migration request reception unit127executes the core migration processing unit126between a time when the task wake-up processing unit125wakes up and executes a task and a time when the next execution task selection processing unit123selects a task to be executed next.

<Operation Example of Quasi-Synchronous Core Processing Unit128>

Next, a queue included in the quasi-synchronous core processing unit128and a detailed operation example of each processing unit will be described.

Similar to the execution task queue122of the synchronous core processing unit121, the execution task queue129(an example of the second program management unit) connects a program to the queue for each task and manages tasks waiting to be executed for each priority.FIG.2shows an aspect in which the task “F” is connected to the execution task queue129.

The next execution task selection processing unit130(an example of the second selection processing unit) selects a task that is the earliest task waiting to be executed among tasks that can be executed in the execution task queue129.

The task wake-up processing unit131wakes up and executes the task selected by the next execution task selection processing unit130.

The core migration processing unit132(an example of the second migration processing unit) migrates a task for which the core migration request reception unit133receives a migration request to the synchronous core processing unit121. Here, the core migration processing unit132migrates the task to a migration source of the task. Therefore, based on an instruction content from the core migration request reception unit133, the core migration processing unit132connects an instructed task to the execution task queue122of the instructed synchronous core processing unit121.

Similar to the core migration request reception unit127of the synchronous core processing unit121, the core migration request reception unit133(an example of the second migration request reception unit) receives the migration request from the task being executed by the task wake-up processing unit131. The core migration request reception unit133can receive the migration request from the task at any timing during execution of the task. Then, the core migration request reception unit133conveys a content of the core migration request to the core migration processing unit132. Then, the core migration request reception unit133executes the core migration processing unit132between a time when the task wake-up processing unit131wakes up and executes a task and a time when the next execution task selection processing unit130selects a task to be executed next.

Here, a content of each processing will be described with reference to a time chart shown on a lower side ofFIG.2for a specific example of a processing in which tasks being executed by the synchronous core processing units101and121are moved to the quasi-synchronous core processing units108and128at any timing, and after the processing is continued, returned to the synchronous core processing units101and121at any timing to continue the processing.

A time chart150of the quasi-synchronous core processing unit108of the computer X201and a time chart151of the synchronous core processing unit101of the computer X201are shown in an order from a left side of the time chart. A time chart152of the synchronous core processing unit121of the computer Y211and a time chart153of the quasi-synchronous core processing unit128of the computer Y211are shown.

The next execution task waiting processing unit104of the computer X201and the next execution task waiting processing unit124of the computer Y211wait for a next execution task via the synchronization data communication path140(task synchronization). This aspect is shown in each processing of the following task synchronization timings180to185. This aspect is abbreviated as “task synchronization” in the description and drawings.

Task synchronization180indicates that the computer X201and the computer Y211complete waiting for the task A as a next execution task.

Task synchronization181indicates that the computer X201and the computer Y211complete waiting for the task B as a next execution task.

Task synchronization182indicates that the computer X201and the computer Y211complete waiting for a task C as a next execution task.

Task synchronization183indicates that the computer X201and the computer Y211complete waiting for a task D as a next execution task.

Task synchronization184indicates that the computer X201and the computer Y211complete waiting for the task B as a next execution task.

Task synchronization185indicates that the computer X201and the computer Y211complete waiting for a task E as a next execution task.

The task F and a task G executed by the quasi-synchronous core processing unit108of the computer X201and tasks H, I, J, and K executed by the quasi-synchronous core processing unit128of the computer Y211are not targets of the synchronous processing. The output comparison machine251does not compare and collate execution results of these tasks.

In this case, the time chart151of the synchronous core processing unit101of the computer X201shows examples of execution start timings and execution end timings of the tasks A to E, and the time chart150of the quasi-synchronous core processing unit108shows examples of execution start timings and execution end timings of the tasks B, F, and G. Furthermore, the time charts150and151show examples of the core migration requests160and161respectively.

In the OS100of the computer X201, the task B is executed between the tasks F and G executed in the quasi-synchronous core processing unit108. Here, a migration processing of the task B in the OS100will be described.

A quasi-synchronous core event T1X170of the computer X201indicates a timing at which the quasi-synchronous core processing unit108starts a deterministic processing of the task B that is migrated from the synchronous core processing unit101to the quasi-synchronous core processing unit108on the computer X201.

A quasi-synchronous core event T2X171of the computer X201indicates a timing at which the deterministic processing of the task B on the computer X201is finished and a migration request of the task B from the quasi-synchronous core processing unit108to the synchronous core processing unit101is executed.

A quasi-synchronous core event T3X172of the computer X201indicates a timing at which the synchronous core processing unit101starts a nondeterministic processing of the task B that is migrated from the quasi-synchronous core processing unit108to the synchronous core processing unit101on the computer X201.

As shown in the time chart151, execution of the task B is started after execution of the task A is ended in the synchronous core processing unit101.

The core migration request161indicates a core migration request executed at any timing from the task B being executed by the synchronous core processing unit101of the computer X201. According to this core migration request, the task B is migrated from the synchronous core processing unit101to the quasi-synchronous core processing unit108. An output result of the task B executed by the synchronous core processing unit101is not input to the task B migrated to the quasi-synchronous core processing unit108.

As shown in the time chart150, after execution of the task F is ended in the quasi-synchronous core processing unit108, a deterministic processing of the task B migrated from the synchronous core processing unit101is started.

The core migration request160indicates a core migration request executed at any timing from the task B being executed by the quasi-synchronous core processing unit108of the computer X201. According to this core migration request, the task B is migrated from the quasi-synchronous core processing unit108to the synchronous core processing unit101.

Then, as shown in the time chart151, after execution of the tasks C and D is ended in the synchronous core processing unit101, a nondeterministic processing of the task B migrated from the quasi-synchronous core processing unit108is started.

The time chart152of the synchronous core processing unit121of the computer X201of the computer Y211shows examples of the execution start timings and the execution end timings of the tasks A to E, and the time chart153of the quasi-synchronous core processing unit128shows examples of the execution start timings and the execution end timings of the tasks B, and H to K. Furthermore, the time charts152and153show examples of the core migration requests162and163respectively.

In the OS120of the computer Y211, the task B is executed between the tasks I and J executed in the quasi-synchronous core processing unit128. Here, a migration processing of the task B in the OS120will be described.

A quasi-synchronous core event T1Y173of the computer Y211indicates a timing at which the quasi-synchronous core processing unit128starts a deterministic processing of the task B that is migrated from the synchronous core processing unit121to the quasi-synchronous core processing unit128on the computer Y211.

A quasi-synchronous core event T2Y174of the computer Y211indicates a timing at which the deterministic processing of the task B on the computer Y211is finished and a migration request of the task B from the quasi-synchronous core processing unit128to the synchronous core processing unit121is executed.

A quasi-synchronous core event T3Y175of the computer Y211indicates a timing at which the synchronous core processing unit121starts a nondeterministic processing of the task B that is migrated from the quasi-synchronous core processing unit128to the synchronous core processing unit121on the computer Y211.

As shown in the time chart152in the OS120of the computer Y211, the nondeterministic processing of the task B is started after execution of the task A is ended in the synchronous core processing unit121.

The core migration request162indicates a core migration request executed at any timing from the task B being executed by the synchronous core processing unit121of the computer Y211. According to this core migration request, the task B is migrated from the synchronous core processing unit121to the quasi-synchronous core processing unit128.

As shown in the time chart153, after execution of the task I is ended in the quasi-synchronous core processing unit128, a deterministic processing of the task B migrated from the synchronous core processing unit121is started.

The core migration request163indicates a core migration request executed at any timing from the task B being executed by the quasi-synchronous core processing unit128of the computer Y211. According to this core migration request, the task B is migrated from the quasi-synchronous core processing unit128to the synchronous core processing unit121.

Then, as shown in the time chart152, after execution of the tasks C and D is ended in the synchronous core processing unit101, a nondeterministic processing of the task B migrated from the quasi-synchronous core processing unit128is started.

Based on the migration processing of the task B described above, a processing of each task executed by the computers X201and Y211will be described.

First, the task A whose start timing is determined by the task synchronization180is executed by the task wake-up processing unit105of the synchronization core processing unit101of the computer X201, and is executed by the task wake-up processing unit125of the synchronous core processing unit121of the computer Y211.

When the execution of the task A by the synchronous core processing unit101of the computer X201and the synchronous core processing unit121of the computer Y211is ended or interrupted, the task B is selected by the task synchronization181. Then, the synchronous core processing unit101of the computer X201and the synchronous core processing unit121of the computer Y211start executing the processing of the task B, separately.

While the task B is executed on the computer X201, the task B executes the core migration request161to the quasi-synchronous core processing unit108at a start point of the deterministic processing. The start point is, for example, a parameter defined for each type of processing in a program executed as the task B. At approximately the same time, the task B of the computer Y211executes the core migration request162to the quasi-synchronous core processing unit128.

According to a content of the core migration request161, the core migration request reception unit107that receives the core migration request161from the task B of the computer X201starts the processing of the core migration processing unit106. The core migration processing unit106connects the task B to the execution task queue109of the quasi-synchronous core processing unit108.

Similarly, according to a content of the core migration request162, the core migration request reception unit127that receives the core migration request162from the task B of the computer Y211starts the processing of the core migration processing unit126. The core migration processing unit126connects the task B to the execution task queue129of the quasi-synchronous core processing unit128.

Due to the migration of the task B, the execution of the task B is interrupted in the core migration request161of the computer X201and in the core migration request162of the computer Y211. Therefore, the computers X201and Y211execute the task synchronization182to select a next task, and select the task C as a next execution task. The synchronous core processing unit101of the computer X201and the synchronous core processing unit121of the computer Y211start execution of the task C at approximately the same time.

In the quasi-synchronous core processing unit108of the computer X201, when execution of the task F is ended at the timing of the quasi-synchronous core event T1X170, the next execution task selection processing unit110selects the task B from the execution task queue109, and the task wake-up processing unit111starts executing the task B.

In the quasi-synchronous core processing unit128of the computer Y211, when execution of the task I is ended at the timing of the quasi-synchronous core event T1Y173, the next execution task selection processing unit130selects the task B from the execution task queue129, and the task wake-up processing unit131starts executing the task B.

In this case, when the task B is connected to the execution task queues109and129, the timings of the quasi-synchronous core events T1X170and T1Y173may be different. Therefore, there is no need for the quasi-synchronous core processing units108and128to match the timing between the computer X201and the computer Y211.

Next, in the quasi-synchronous core processing unit108of the computer X201, the task B executes the core migration request160at the timing of the quasi-synchronous core event T2X171. When the core migration request reception unit113of the computer X201receives the core migration request160, the core migration processing unit112connects the task B to the execution task queue102of the synchronous core processing unit101.

On the other hand, in the quasi-synchronous core processing unit128of the computer Y211, the task B executes the core migration request163at the timing of the quasi-synchronous core event T2Y174. When the core migration request reception unit133of the computer Y211receives the core migration request163, the core migration processing unit132connects the task B to the execution task queue122of the synchronous core processing unit121.

In this case, even when the task B is connected to the execution task queues102and122, the timings of the quasi-synchronous core events T2X171and T2Y174may be different. Therefore, there is no need for the quasi-synchronous core processing units108and128to match the timing between the computer X201and the computer Y211.

As shown in the time chart150of the computer X201, the task synchronization183is a timing after the core migration request160of the task B. Therefore, the task B is connected to the execution task queue102after the quasi-synchronous core event T2X171.

However, as shown in the time chart152of the computer Y211, the quasi-synchronous core processing unit128is executing the task B at the timing of the task synchronization183. In this case, since the timing of the core migration request163of the task B is after the task synchronization183, the task B is not yet connected to the execution task queue122at the timing of the task synchronization183.

Therefore, in the task synchronization183, the next execution task selection processing unit103of the computer X201and the next execution task selection processing unit123of the computer Y211determine a task to be executed next not as the task B, but as the task D, which has a next highest priority after the task B. In this case, an allowable range of a time difference between the quasi-synchronous core event T2X171and the quasi-synchronous core event T2Y174can be set as any timeout period.

In this case, since the deterministic processing of the task B is executed by the quasi-synchronous core processing units108and128, timings of the core migration requests160and163may not match. Therefore, the next execution task selection processing unit103of the computer X201classifies tasks waiting to be executed that are connected to the execution task queue102into a task connected to the execution task queue102after being generated by the synchronous core processing unit101or execution of which being interrupted, and a task migrated from the quasi-synchronous core processing unit108, and then selects a task. Then, the next execution task waiting processing unit104sets a time range of waiting for a start of execution of the task migrated from the quasi-synchronous core processing unit108longer than a time range of waiting for a start of execution of the task connected to the execution task queue102after being generated by the synchronous core processing unit101or execution of which being interrupted.

Similarly, the next execution task selection processing unit123of the computer Y211classifies tasks waiting to be executed that are connected to the execution task queue122into a task connected to the execution task queue122after being generated by the synchronous core processing unit121or the execution of which being interrupted, and a task migrated from the quasi-synchronous core processing unit128, and then selects a task. Then, the next execution task waiting processing unit124sets a time range of waiting for a start of execution of the task migrated from the quasi-synchronous core processing unit128longer than a time range of waiting for a start of execution of the task connected to the execution task queue122after being generated by the synchronous core processing unit121or the execution of which being interrupted.

If a time for the task migrated from the quasi-synchronous core processing units108and128to return to the synchronous core processing unit101and121is longer than the set time range, another task having a high priority that is connected to the execution task queues102and122is executed first. For example, the next execution task waiting processing units104and124execute another task first when a timing when the task B makes the core migration request163from the quasi-synchronous core processing unit128exceeds the time range, even if a timing when the task B makes the core migration request160from the quasi-synchronous core processing unit108is within the time range.

Then, after execution of the other task is ended, if each task B that makes the core migration requests160and163can be executed, execution of the task B is started. For example, in the synchronous core processing unit101of the computer X201and the synchronous core processing unit121of the computer Y211, at the timing of the task synchronization184when the execution of the task D is ended or interrupted, the task B is woken up and executed as a next execution task of the synchronous cores of the computers X201and Y211. That is, the quasi-synchronous core events T3X172and T3Y175are executed at approximately the same time.

In the synchronous core processing unit101of the computer X201and the synchronous core processing unit121of the computer Y211, when the execution of the task B is ended, the next execution task is determined as the task E at the timing of the task synchronization165, and the task E is woken up.

Based on the above flow, the nondeterministic processing of the task B is executed by the synchronous core processing units101and121, and after the quasi-synchronous core processing units108and128process only the deterministic processing, the synchronous core processing units101and121process the task again, so that output timings of the execution results can match.

In the computer system10according to the embodiment described above, the synchronous core processing units101and121can execute the same task in the same order among the plural computers X201and Y211. The task being executed by the synchronous core processing units101and121can be migrated to the quasi-synchronous core processing units108and128at any timing to continue to be processed, and can be migrated to the synchronous core processing units101and121again to end the processing.

The OS of each computer classifies the task processing into the deterministic processing or the nondeterministic processing. Then, the nondeterministic processing task is always executed synchronously on the synchronous core processing units101and121, and only the deterministic processing is executed quasi-synchronously on the quasi-synchronous core processing units108and128. In this case, in addition to the synchronous core processing units101and121, the quasi-synchronous core processing units108and128can also execute the task. Therefore, a processing efficiency per unit time of a task that can be executed by all the plural cores of each computer is improved. Therefore, in the computer system10, a processing performance of each computer can be improved without changing a hardware configuration of each computer.

The quasi-synchronous core processing units108and128collectively execute the deterministic processing. For this reason, a task whose nondeterministic processing is being executed synchronously requests migration to another core by itself. By this migration request, a task being synchronously executed by the synchronous core processing units101and121can be migrated to the quasi-synchronous core processing units108and128at the start point of the deterministic processing. At an end point when the quasi-synchronous core processing units108and128end the deterministic processing, the task can be returned to the synchronous core processing units101and121to continue the processing.

As shown inFIG.2, the execution of the task B including the deterministic processing and the nondeterministic processing is performed by the synchronous core processing unit synchronously and by the quasi-synchronous core processing unit quasi-synchronously, so that the execution results of the task B can be output in a matching manner.

There is no need for the quasi-synchronous core processing units108and128to synchronize the synchronization timing with other computers or to share information such as the synchronization data when executing the deterministic processing. Therefore, it is not necessary to construct a new network for synchronizing the quasi-synchronous core processing units108and128. Then, it is possible to implement a task execution method that improves the processing performance of the computer system10as a loosely coupled fault tolerant computer without changing the communication band of the network240on which the synchronization data communication path140is provided and computational resources of the output comparison machine251that performs the collation processing.

The invention is not limited to the above-described embodiment, and it goes without saying that various other application examples and modifications can be obtained as long as the gist of the invention described in the claims is not deviated.

For example, the above-described embodiment describes the configuration of the system in detail and specifically in order to explain the invention in an easy-to-understand manner, and is not necessarily limited to one including all the described configurations. It is also possible to add other configurations to the configuration of the present embodiment, delete a part of the configuration of the present embodiment or replace a part of the configuration of the present embodiment with another configuration.

Control lines or information lines indicate what is considered necessary for description, and not all the control lines or information lines are necessarily shown in a product. In practice, it may be considered that almost all configurations are connected to each other.

REFERENCE SIGN LIST