Patent ID: 7617360

Claim:
A disk array apparatus for storing data in a plurality of disk drives comprising: a disk array controller for controlling said disk array apparatus including controlling read and write of data from and to said disk drives, wherein the disk array controller has a central processing unit (CPU) incorporating a plurality of processor cores that cannot be used in a physically separated manner, and each processor core serves as a unit processor, wherein one unit processor manages itself and the other unit processors individually, allocates a different portion of a control program to itself and the other unit processors dynamically so that the operation of each unit processor can be terminated appropriately or not-dynamically to cause each unit processor to operate until the operation of the whole CPU is terminated, and manages the processing load or processing status of the control program on a unit-processor basis, wherein execution of the different portions of the control program is shared among said unit processors, wherein the portions of the control program are dynamically allocated to different unit processors, during execution of the control program, to manage the processing load or processing status of the control program according to predetermined load criteria, wherein the disk array controller having a CPU incorporating a plurality of processor cores that cannot be physically separated from each other further has an internal switch, a nonvolatile memory controller, a volatile memory controller, a controller for controlling transfer between disk array controllers, a parity calculator and a CPU internal cache, wherein the control program comprises a monitor control program module, a system management program module, Redundant Array of Inexpensive Disk Drive (RAID) control program module, an Network Attached Storage (NAS) control program module, a host Input/Output (I/O) control program module, a drive I/O control program module, an initial Multi-Processing Unit (MPU) core allocation management table, an initial threshold management table, a RAID configuration management table, an LU configuration management table, and an NAS volume management table, and wherein the one unit processor monitors the load status of the control program on itself and another unit processors, and if the number of times of exceeding a load threshold of a unit processor exceeds a prescribed number of times, the one unit processor searches for a not-allocated core in the same group as the unit processor and allocates the control program to the found not-allocated core.