WO2016031049A1 - 計算機システム及び計算機の制御方法 - Google Patents

計算機システム及び計算機の制御方法 Download PDF

Info

Publication number
WO2016031049A1
WO2016031049A1 PCT/JP2014/072742 JP2014072742W WO2016031049A1 WO 2016031049 A1 WO2016031049 A1 WO 2016031049A1 JP 2014072742 W JP2014072742 W JP 2014072742W WO 2016031049 A1 WO2016031049 A1 WO 2016031049A1
Authority
WO
WIPO (PCT)
Prior art keywords
cache
failure
submodule
fault
occurred
Prior art date
Application number
PCT/JP2014/072742
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 PCT/JP2014/072742 priority Critical patent/WO2016031049A1/ja
Publication of WO2016031049A1 publication Critical patent/WO2016031049A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems

Definitions

  • the present invention relates to a technique in which system software for controlling a computer identifies a submodule in which a failure has occurred in a processor cache memory.
  • the cache includes a plurality of submodules (Ways), and data stored in the cache is protected by ECC (Error-Correcting Code).
  • ECC Error-Correcting Code
  • cache sub-modules should be degenerated at the stage of correctable failures.
  • Patent Document 1 is known as background art in this technical field.
  • Japanese Patent Application Laid-Open No. 2004-133867 discloses a technique for checking whether there is an abnormality in the cache module and invalidating the cache module when an abnormality is detected.
  • Patent Document 2 states that “in a computer system by eliminating in advance potential factors (for example, correctable errors) that develop into a serious failure while suppressing a decrease in processing performance of the cache memory.
  • the degeneration control device first increases, for example, an error counter provided for counting the number of errors for each way, and a predetermined upper limit number determined by the error counter. In the case of exceeding the limit number, the degeneration control device sets the degeneration flag (in the cache tag for the cache line (for example, Way: n, Index: m)) that has generated the error that triggered the upper limit number. “Degenerate information indicating that the cache line is degenerated” is written. ”. Such a technique is employed in high-end CPUs.
  • Non-Patent Document 1 ⁇ 15.3.2 Error-Reporting Register Banks.
  • the technique of Non-Patent Document 1 does not notify which sub-module that constitutes the cache is broken. Therefore, active cache degeneration by system software has been difficult.
  • Non-Patent Document 1 ⁇ 17.15 CACHE QUALITY -OF-SERVICE (QOS) ENFORCEMENT.
  • QOS QUALITY -OF-SERVICE
  • the present invention aims to stably operate a computer while maintaining performance when a sub-module that constitutes a cache fails in a computer equipped with an inexpensive CPU with reduced manufacturing costs. To do.
  • the present invention is a computer system comprising a processor and a memory, wherein the computer is controlled by system software stored in the memory, wherein the processor includes a cache composed of a plurality of submodules, and the sub-module.
  • a QoS control bitmap for setting availability for each module, and a cache failure detection unit for detecting a failure of the cache and transmitting the failure to the system software, wherein the cache failure detection unit includes the cache failure detection unit
  • the cache control unit includes a cache failure processing unit that updates the QoS control bitmap and identifies the submodule in which the failure has occurred.
  • FIG. 3 is a memory map managed by the hypervisor according to the first embodiment of this invention.
  • FIG. It is a figure which shows a 1st Example of this invention and shows an example of the submodule of a cache. It is a figure which shows the 1st Example of this invention and shows an example of a test result table
  • FIG. 9 is a memory map managed by the OS according to the second embodiment of this invention.
  • FIG. It is a flowchart which shows a 2nd Example of this invention and shows an example of the submodule test
  • FIG. 1 is a block diagram showing an example of the configuration of the computer system of the present invention.
  • the physical computer 10 has a plurality of CPUs 70-1 to 70-n, and these CPUs 70-1 to 70-n are connected to the chipset 50 and the memory 90 via the interconnect 51.
  • the CPU 70-1 to 70-n are collectively referred to as the CPU 70.
  • the console 130 provided with an I / O device and an input / output device is connected to the chipset 50 via a PCI express or the like.
  • NIC Network Interface Card
  • HBA Hypervisor Adapter
  • SAN Storage Area Network
  • the CPU 70 accesses the memory 90 via the interconnect 51. Further, the CPU 70 accesses an I / O device such as the NIC 140 or the HBA 150 via the chip set 50 and performs predetermined processing.
  • the memory 90 is loaded with a hypervisor 20 as system software, and is executed by the CPU 70 to allocate the computer resources of the physical computer 10 to a plurality of virtual computers 30-1, 30-2 to 30-n. be able to.
  • the virtual machines 30-1 and 30-2 to 30-n execute OSs 40-1 to 40-n, respectively.
  • the generic name of the virtual machine is represented by reference numeral 30, and the generic name of each OS is represented by reference numeral 40. The same applies to the reference numerals of the other constituent elements. Individual symbols are identified by “ ⁇ n”, and generic names are denoted by symbols without “ ⁇ ”.
  • Each OS 40-1 to 40-n executes applications 60-1 to 60-n and 61-1 to 61-n, respectively.
  • the hypervisor 20 is used as a virtualization unit that allocates computer resources to one or more virtual machines.
  • the present invention is not limited to this, and a VMM (Virtual Machine Monitor) or the like is used. Can do.
  • FIG. 2 is a block diagram showing functions of a main part of the computer system. Next, the main part of the software operating on the physical computer 10 and the hardware elements to be controlled will be described in detail with reference to FIG.
  • the CPU 70 includes an arithmetic unit 79 that executes arithmetic processing such as addition / subtraction / division / division and a cache memory (hereinafter referred to as a cache) 71 that temporarily stores a copy of data and instructions read from the memory 90.
  • the CPU 70 may be configured with a multi-core processor including a plurality of calculation units 79.
  • the cache 71 further includes a cache failure detection unit 75 that detects a failure (for example, an ECC error), and a QoS control bitmap 77 that selectively restricts the use of each submodule 72.
  • the cache failure detection unit 75 includes a failure register 76 that stores information on the detected failure.
  • the cache failure detection unit 75 includes a function of notifying the system software that a failure has occurred in the cache 71, as disclosed in ⁇ 15.3.2 ⁇ Error-Reporting Register Banks of Non-Patent Document 1, for example.
  • the QoS control bitmap 77 is a bitmap for controlling the QoS function of the cache 71 disclosed in ⁇ 17.15 CACHE QUALITY-OF-SERVICEOS (QOS) ENFORCEMENT of Non-Patent Document 1.
  • QOS QUALITY-OF-SERVICEOS
  • the numbers (positions) of the submodules 72-1 to 72-M of the cache 71 are designated, and a value indicating whether or not use is possible is set in the bitmap corresponding to the number.
  • the hypervisor 20 can set whether to use each of the submodules 72-1 to 72-M corresponding to the number of the QoS control bitmap 77 (77-1 to 77-M in FIG. 6). it can.
  • the hypervisor 20 that generates the virtual computer 30 operates as system software.
  • the OS 40 operates.
  • the OS 40 further activates the applications 60 and 61.
  • the hypervisor 20 includes a cache failure processing unit 100 that handles a failure detected in the cache 71 and a UI control unit 300 that controls the console 130.
  • the cache failure processing unit 100 includes a failure notification unit 110 that informs the UI control unit 300 of the occurrence of a cache failure, a cache inspection unit 120 that identifies a submodule in which a failure has occurred, a test result table 500 that stores a test result, It includes a cache fault isolation unit 200 that isolates the submodule 72 in which a fault has occurred.
  • the QoS control bitmap 77 may be composed of a bit mask or a register for selecting the submodule 72 to be accessed.
  • Each function unit of the cache failure processing unit 100 and the UI control unit 300 is loaded into the memory 90 as a program.
  • the CPU 70 operates as a functional unit that provides a predetermined function by processing according to a program of each functional unit.
  • the CPU 70 functions as the cache failure processing unit 100 by performing processing according to the cache failure processing program.
  • the CPU 70 also operates as a function unit that provides each function of a plurality of processes executed by each program.
  • a computer and a computer system are an apparatus and a system including these functional units.
  • Information such as programs and tables for realizing each function of the hypervisor 20 is stored in a storage device 125, a nonvolatile semiconductor memory, a hard disk drive, a storage device such as an SSD (Solid State Drive), or an IC card, an SD card, a DVD, etc. It can be stored on a computer readable non-transitory data storage medium.
  • a storage device 125 a nonvolatile semiconductor memory, a hard disk drive, a storage device such as an SSD (Solid State Drive), or an IC card, an SD card, a DVD, etc. It can be stored on a computer readable non-transitory data storage medium.
  • the outline of the present invention is as follows.
  • the cache failure detection unit 75 sets “1” in the failure flag 761 of the failure register 76, and stores the address corresponding to the cache line where the failure has occurred in the failure address.
  • the cache fault processing unit 100 of the hypervisor 20 detects the fault occurrence of the cache 71 by polling the fault register 76 of each CPU 70 at a predetermined cycle.
  • the cache failure processing unit 100 performs an inspection by the cache inspection unit 120 on the CPU 70 in which the failure of the cache 71 has occurred.
  • the cache checking unit 120 first flushes all the submodules 72-1 to 72-M in the cache 71 for the CPU 70 to be checked. Note that the sub-module 72 to be flushed by the cache checking unit 120 may be only the normal (usable) sub-module 72 in the check result table 500.
  • the cache checking unit 120 accesses an address on the memory 90 corresponding to the failure address 762 of the failure register 76. This access is, for example, reading or writing of data. Note that the cache checking unit 120 may check only the submodule 72 that is normal (usable) in the check result table 500 among the submodules 72-1 to 72-M.
  • the cache checking unit 120 specifies that the submodule 72-i is an abnormal submodule 72. Then, the cache checking unit 120 writes that the specified submodule 72-i is “abnormal” in the check result table 500. When the occurrence of a failure is not notified from the cache failure detection unit 75, the cache checking unit 120 writes that the submodule 72-i is normal.
  • the cache failure isolation unit 200 sets the submodule 72 that is “abnormal” in the inspection result table 500 to be unusable (unusable), and executes the degeneration of the cache 71.
  • the failure notification unit 110 notifies the UI control unit 300 that a failure has occurred in the submodule 72-i of the cache 71 and the inspection has been completed.
  • the UI control unit 300 transmits to the console 130 a notification that a failure has occurred in the submodule 72-i of the cache 71 and the inspection has been completed.
  • FIG. 3 is an example of a map of the memory 90 managed by the hypervisor 20.
  • the hypervisor 20 allocates an area where the hypervisor 20 is arranged on the memory 90 and an area used by the virtual machines 30-1 to 30-n.
  • the hypervisor 20 includes the cache failure processing unit 100 and the UI control unit 300 in its own area.
  • the hypervisor 20 assigns addresses AD0 to AD1 as areas for arranging itself, and arranges each module such as the cache fault processing unit 100. Further, the hypervisor 20 assigns addresses AD2 to AD3 to the virtual machine 30-1, and dynamically assigns addresses AD4 to AD5 to the virtual machine 30-n.
  • Each OS 40 allocates an area in which the virtual machine 30 is arranged and an area used by the application 60.
  • FIG. 4 is a diagram illustrating an example of the submodule 72.
  • the submodule 72 constituting the cache 71 is composed of a plurality of cache lines (1 to n), and each cache line holds a partial copy of data in the memory 90.
  • each cache line holds the memory address to be partially duplicated in the memory address 721. Further, the partially duplicated data is held in the data 722. Note that the memory address 721 and the data 722 are protected by ECC.
  • FIG. 5 is a diagram showing an example of an inspection result table 500 that holds the inspection results of the submodule 72.
  • the inspection result table 500 is information that stores the inspection results of the submodules 72-1 to 72-M constituting the cache 71 of the CPUs 70-1 to 70-n managed by the hypervisor 20.
  • the cache checking unit 120 of the cache failure processing unit 100 checks the submodule 72 and sets the check result table 500.
  • the inspection result table 500 includes one record from the CPU number 501, the submodule number 502, and the inspection result 503.
  • the CPU number 501 is a number (or identifier) that identifies the CPUs 70-1 to 70-n on which the cache 71 is mounted
  • the submodule number 502 is a number that identifies the submodules 72-1 to 72-M in the CPU 70. (Or identifier).
  • the combination of the CPU number 501 and the sub module number 502 identifies the CPU 70 and the sub module 72 in the physical computer 10.
  • the inspection result 503 stores the inspection result by the cache inspection unit 120. Only when the inspection result is abnormal, a value indicating “abnormal” is stored. If the inspection result is normal, a value indicating “normal” is stored.
  • a value indicating “normal” is set in the inspection result 503, but when the inspection result is normal, the value is set in the inspection result 503. Instead, a value may be set in the inspection result 503 only when there is an abnormality.
  • FIG. 6 is a diagram showing an example of a QoS control bitmap 77 that selectively restricts the use of each submodule 72.
  • the QoS control bitmap 77 is composed of availability flags 77-1 to 77-M corresponding to the submodules 72-1 to 72-M.
  • the value of the availability flag 77-1 to 77-M is “0”, it indicates that the corresponding submodule 72 cannot be used. “Unusable” means that the sub-module 72 is allowed to reference / update / flush data (operation to write back the currently held data to the memory 90), but use data (use another memory after flushing). Operation to store address data) is prohibited. On the other hand, if the value of the availability flag 77-1 to 77-M is “1”, the corresponding submodule 72 is usable, and all operations are permitted for the submodule 72.
  • FIG. 7 is a diagram illustrating an example of the failure register 76 that holds information on the failure detected by the cache failure detection unit 75.
  • the failure register 76 includes a failure flag 610 and a failure address 620.
  • the cache failure detection unit 75 of the CPU 70 When the cache failure detection unit 75 of the CPU 70 detects a failure in the cache 71, it writes “1” (failed) in the failure flag 610. Further, the cache failure detection unit 75 stores, in the failure address 620, the memory address (721 in FIG. 4) of the data held in the cache line of the submodule 72 in which the failure is detected.
  • FIG. 8 is a flowchart illustrating an example of processing performed by the cache failure processing unit 100. This process is started at a predetermined timing such as after the hypervisor 20 is activated.
  • the cache failure processing unit 100 reads the value of the failure flag 761 from the failure register 76 of each of the CPUs 70-1 to 70-n at a predetermined cycle (S1000). The cache failure processing unit 100 determines whether or not a failure has occurred in the cache 71 based on whether or not the value of the failure flag 761 is “1” (S1010). If the value of the failure flag 761 is “1”, it is determined that a failure (cache failure) has occurred in the cache 71 and the process proceeds to step 1020. On the other hand, if the value of the failure flag 761 is “0”, the cache failure processing unit 100 determines that the cache 71 is normal and proceeds to step S1090.
  • step S1020 where a cache failure has occurred, failure processing is started.
  • the cache failure processing unit 100 temporarily stops all virtual computers 30 in order to ensure the safety of the computer system (S1020).
  • the cache failure processing unit 100 clears the content by writing “0” in the failure flag 610 of the failure register 76 of the CPU 70 in which the cache failure has occurred. As a result, the cache failure processing unit 100 becomes capable of detecting the next cache failure for the same memory address (S1030).
  • the cache failure processing unit 100 checks all the submodules 72 constituting the cache 71 by the CPU 70 in which the cache failure has occurred (S1040). The inspection of the submodule 72 will be described in detail with reference to FIG.
  • the cache fault processing unit 100 calls the cache fault isolation unit 200 to refer to the inspection result table 500.
  • the cache fault isolation unit 200 changes the setting of the QoS control bitmap 77 so that the CPU 70 in which the cache fault has occurred uses only the normal submodule 72 (S1050). That is, the cache fault isolation unit 200 sets the value of the QoS control bitmap 77 corresponding to the number of the submodule 72 in which the CPU 70 has detected a cache fault to “0” to disable the use.
  • the cache fault isolation unit 200 may be set to use all normal submodules 72 or may limit the use of the submodules 72 in consideration of the QoS of the cache 71 for each program. .
  • the cache failure processing unit 100 notifies the UI control unit 300 that the inspection of the cache 71 has been completed (S1060). Then, the cache failure processing unit 100 restarts all virtual machines 30 (S1070).
  • the cache failure processing unit 100 sleeps for a predetermined time (for example, 1 second) (S1090), returns to step S1000, and reads the value of the failure register 76 again.
  • step S1010 may be performed in the order of the CPUs 70-1 to 70-n. Further, when a cache failure occurs in a plurality of CPUs 70, the processing of steps S1020 to S1080 may be executed for all the CPUs 70 in which the cache failure has occurred.
  • FIG. 9 is a flowchart showing an example of the inspection of the submodule 72. This process is performed by the cache checking unit 120 in step S1040 of FIG.
  • the cache checking unit 120 first executes the cache flush instruction by designating the address stored in the failure address 620 of the failure register 76 of the CPU 70 in which a cache failure has occurred (S1110). That is, the cache checking unit 120 acquires the address on the memory 90 of the data held in the cache line of the submodule 72 in which the failure has occurred, and instructs the CPU 70 to perform a cache flush for the memory address. With this process, it is possible to establish a state in which no submodule 72 holds a partial copy of the address stored in the failure address 620.
  • the cache checking unit 120 sets one of the availability flags 77-1 to 77 -M of the QoS control bitmap 77 as the sub-module 72-i to be inspected, and the availability flag 77-of the sub-module 72.
  • the value of i is set to “1”, and the other availability flag 77 is set to “0”.
  • a state is established in which only the submodule 72-i can be used in the cache 71 to be inspected (S1120).
  • the cache checking unit 120 reads / writes from / to the memory address stored in the failure address 620, and causes the submodule 72-i being checked to hold a partial copy of the memory 90 corresponding to the failure address 620. (S1130).
  • the read / write operation is not limited to one time, and may be repeated a plurality of times.
  • the reading / writing operation may be performed at least one of reading and writing.
  • the cache checking unit 120 reads the failure flag 761 of the failure register 76 after reading / writing to the failure address 620 (S1140). If there is an abnormality in the submodule 72, the cache failure detection unit 75 of the CPU 70 detects a new cache failure by the read / write operation in step S1130.
  • the cache checking unit 120 determines whether or not the value of the failure flag 761 of the failure register 76 is “1” (S1150). If the value of the failure flag 761 is “1”, it is determined that a new cache failure has occurred, and the process proceeds to step S1160. Otherwise, the process proceeds to step S1180.
  • the cache checking unit 120 stores a value indicating “abnormal” in the check result table 500 corresponding to the submodule 72-i (S1160). Then, the cache checking unit 120 sets the failure flag 610 of the failure register 76 of the CPU 70 to “0” and clears it (S1170).
  • the cache checking unit 120 stores a value indicating “normal” in the check result table 500 corresponding to the submodule 72-i (S1180).
  • the cache failure processing unit 100 can identify the abnormal submodule 72 in which the failure has occurred.
  • the cache failure processing unit 100 can record the specified module 72 in the inspection result table 500 and set the failed sub-module 72 to be disabled in the QoS control bitmap 77 to degenerate the cache 71.
  • the CPU 70 in which the failure flag 761 of the failure register 76 is “1” allows only one of the availability flags 77-1 to 77-M of the QoS control bitmap 77 to be usable, and the submodule 72 By sequentially checking ⁇ 1 to 72-M, the cache checking unit 120 of the hypervisor 20 can identify the submodule 72 in which a failure has occurred. Then, by recording the submodule 72 in which the occurrence of the failure is identified in the inspection result table 500 and prohibiting the use in the QoS control bitmap 77, it is possible to avoid the occurrence of the failure again.
  • the cache 71 is configured by the physical computer 10 equipped with the inexpensive CPU 70 with reduced manufacturing cost without using a special circuit for counting the number of errors for each way of the cache as in Patent Document 2. Even if the submodule 72 breaks down, it is possible to stabilize the computer while maintaining performance and continue operation.
  • the cache checking unit 120 checks all submodules 72 when a cache failure occurs.
  • the processing in FIG. 9 is executed at a predetermined timing (for example, at idle or at low load).
  • scrubbing may be performed for the submodule 72 of the cache 71.
  • the scrubbing detects the presence or absence of a failure in the submodule 72 or the cache line that is not used, and if there is a failure, executes a predetermined process (such as the cache failure isolation unit 200).
  • the cache failure detection unit 75 of the CPU 70 can detect the presence / absence of a failure in the used submodule 72 and the cache line. However, the cache failure detection unit 75 cannot detect a failure for the unused submodule 72 and the cache line.
  • the faulty submodule 72 can be identified and recorded in the check result table 500 to be excluded from the cache 71. .
  • FIG. 10 is a flowchart showing an example of processing performed in the cache 71. This process is executed each time the calculation unit 79 issues a command to read / write the memory 90.
  • the cache 71 waits for a request from the calculation unit 79 and starts processing (S1200), and determines whether or not the memory address designated by the calculation unit 79 is held in the cache 71 (S1210). If the designated memory address is held in the cache 71, the process advances to step S1250.
  • the cache 71 refers to the QoS control bitmap 77 and sets the availability flag 77-1 to 77-M to “1” (usable).
  • One sub-module 72 is selected (S1220).
  • the cache 71 executes a flush process for writing back the data 730 stored in the cache line in the selected submodule 72 to the memory 90 (S1230).
  • the cache 71 reads the designated memory address from the memory 90 and stores it in the cache line of the submodule 72 that has been flushed (S1240).
  • the cache 71 calculates and adds an ECC based on the data stored in the cache line.
  • the cache 71 refers to the ECC held by the cache line in the submodule 72 in which the designated memory address is stored (S1250), and whether there is an abnormality in the data held in the cache line based on the ECC. Is determined (S1260). If the data stored in the cache line and the ECC do not match, the cache 71 is determined to be abnormal, and the process proceeds to step S1270. If the data stored in the cache line and the ECC match, the cache 71 is determined to be normal and the process proceeds to step S1280.
  • step S1270 the cache failure detection unit 75 sets “1” (failure present) to the failure flag 761 of the failure register 76. Further, the cache failure detection unit 75 stores the memory address 721 held by the cache line in which the failure is detected in the failure address 620. Further, the cache 71 corrects the cache line information by ECC if possible.
  • the cache 71 operates the cache line storing the designated memory address, and when the data 722 is changed (WRITE), the ECC is further recalculated (S1280).
  • the process returns to step S1200 to wait for the next command.
  • the cache 71 stores the data at the memory address designated by the submodule 72 that can be used in the QoS control bitmap 77 in units of cache lines. Then, the cache 71 detects an abnormality based on the ECC added to the cache line. If there is an abnormality in the cache line, the cache failure detection unit 75 stores information on the detected failure in the failure flag 761 and the failure address 620 of the failure register 76.
  • FIG. 11 is a flowchart illustrating an example of processing performed by the UI control unit 300.
  • the UI control unit 300 starts processing after waiting for a notification from another module (such as the cache failure processing unit 100) (S1400).
  • the UI control unit 300 acquires all abnormal submodules 72 with reference to the inspection result table 500 (S1410). Then, the sub-module 72 (and the CPU 70) in which the abnormality has occurred is displayed on the console 130, the occurrence of degeneration of the cache 71 is notified to the system administrator or the like (S1420), and actions such as component replacement are urged.
  • the cache failure processing unit 100 of the hypervisor 20 detects the abnormality of the submodule 72 by periodically referring to the failure register 76 of each CPU 70.
  • the cache failure processing unit 100 enables only one of the QoS control bitmaps 77 and sequentially inspects the submodules 72-1 to 72-M, so that the hypervisor 20
  • the cache checking unit 120 identifies the submodule 72 in which a failure has occurred.
  • the cache fault isolation unit 200 of the cache fault processing unit 100 can avoid the occurrence of a fault again by setting the specified submodule 72 to be prohibited in the QoS control bitmap 77.
  • the physical computer 10 can be configured using an inexpensive CPU 70 without using a special circuit as in Patent Document 2 of the conventional example, and further, the submodule 72 constituting the cache 71 fails.
  • the physical computer 10 can be stably operated while maintaining the performance using the remaining submodules 72.
  • the submodules 72-1 to 72-M can be inspected while the hypervisor 20 is in operation, and the cache 71 can be degenerated if there is an abnormality. 30 and the reliability of the applications 60 and 61 can be secured.
  • FIG. 12 is an example of a configuration diagram of the physical computer 10 according to the second embodiment.
  • the same components as those of the first embodiment shown in FIG. 1 are denoted by the same reference numerals, and redundant description is omitted.
  • the OS 40 is loaded into the memory 90, and a part of the memory 90 is allocated to the applications 60-1 to 60-n. Applications 60-1 to 60-n are executed on the OS 40.
  • Other configurations are the same as those in the first embodiment.
  • FIG. 13 is a block diagram illustrating an example of a main part of software operating on the physical computer 10 and hardware elements to be controlled. Note that the same reference numerals as those in FIG. 2 of the first embodiment are given, and description of components having the same functions is omitted.
  • the OS 40 that operates the applications 60-1 to 60-n operates as system software.
  • the OS 40 includes a cache failure processing unit 100 that handles failures detected in the cache 71 and a UI control unit 300 that controls the console 130.
  • Other configurations are the same as those in FIG. 2 of the first embodiment.
  • the CPU 70 is different from the first embodiment in that the CPU 70 has a correspondence relationship between the memory address of the memory 90 and the number of the cache line in the submodule 72 in advance.
  • the other points are the same as in the first embodiment.
  • FIG. 14 is a map showing an example of the memory 90 managed by the OS 40.
  • the same reference numerals as those in FIG. 3 of the first embodiment are used, and description of components having the same functions is omitted.
  • the OS 40 allocates an area for arranging itself on the memory 90 and an area used by the application 60. As described above, the OS 40 includes the cache failure processing unit 100 and the UI control unit 300 in its own area.
  • the OS 40 assigns addresses AD0 to AD1 to itself and arranges each module (cache failure processing unit 100, UI control unit 300), and assigns the addresses AD2 to AD3 to the application 60-1.
  • the addresses AD4 to AD5 are dynamically assigned to the application 60-n.
  • FIG. 15 is a flowchart illustrating an example of the inspection of the submodule 72 performed by the cache inspection unit 120 of the cache failure processing unit 100 of the OS 40.
  • the cache failure processing unit 100 of the OS 40 performs the processing of FIGS. 8 and 11 as in the hypervisor 20 of the first embodiment.
  • the sub-modules 72-1 to 72-M are inspected while the cache failure processing unit 100 of the OS 40 temporarily stops all the applications 60-1 to 60-n.
  • the cache checking unit 120 repeats the processing from S1100 to S1180 for each of the submodules 72-1 to 72-M.
  • step S1110 is deleted from the flowchart of FIG. 9 of the first embodiment, and step S1130 is replaced with step S1500.
  • step S1110 is deleted from the flowchart of FIG. 9 of the first embodiment, and step S1130 is replaced with step S1500.
  • step S1110 is deleted from the flowchart of FIG. 9 of the first embodiment, and step S1130 is replaced with step S1500.
  • the other processes are the same as those in FIG.
  • the cache checking unit 120 sets only one availability flag 77-1 to 77-M in the QoS control bitmap 77 and establishes a state in which only the sub-module 72-i to be checked can be used (S1120). .
  • the cache checking unit 120 selects a memory address stored in the same cache line as the address stored in the failure address 620 of the failure register 76 (N> the number of submodules) and executes a read / write operation. (S1500). That is, the cache 71 is read / written a plurality of times for the memory address stored in the failure address 762 of the failure register 76 and the address having an alias relationship with the memory address.
  • the CPU 70 checks the memory address (failure address 762) held by the failure line and the cache line. N memory addresses with the same number can be selected.
  • the cache failure detection unit 75 of the CPU 70 can detect a new cache failure and set the failure flag 761 of the failure register 76 to “1”.
  • the cache checking unit 120 reads the value of the failure flag 761 of the failure register 76 (S1140), and determines whether or not a new cache failure has occurred (S1150).
  • a value indicating “abnormal” is recorded in the inspection result table 500 by the submodule 72 under inspection (S1160), and the failure flag 610 of the failure register 76 is set to “0”. Set and clear (S1170).
  • the cache checking unit 120 records a value indicating “normal” in the checking sub-module 72 in the checking result table 500 (S1180).
  • the sub module 72 in which an abnormality has occurred can be identified even when the computer system is in operation.
  • an abnormality occurs by selecting N memory addresses having the same line number as the memory address held in the cache line of the submodule 72 in which the failure has occurred and performing a read / write operation.
  • the specified submodule 72 can be specified.
  • the cache fault isolation unit 200 sets the specified submodule 72 to unusable in the QoS control bitmap 77. This avoids the occurrence of a failure in the same submodule 72 again.
  • the physical computer 10 can be configured using an inexpensive CPU 70, and even if the submodule 72 constituting the cache 71 fails, the performance is maintained. It becomes possible to operate the physical computer 10 stably.
  • the sub modules 72-1 to 72-M are inspected while the OS 40 is operating, and the cache 71 is degenerated if there is an abnormality. Therefore, the reliability of the application 60 can be ensured.
  • the present invention is not limited to this.
  • the processing of the cache failure processing unit 100 may be started with the interrupt as a trigger.
  • the cache 71 of the present invention can constitute an LLC (Last Level Cache) or L3 (Level 3) cache. Further, the cache 71 of the present invention may be used for an L2 cache or an L1 cache.
  • this invention is not limited to the above-mentioned Example, Various modifications are included.
  • the above-described embodiments are described in detail for easy understanding of the present invention, and are not necessarily limited to those having all the configurations described.
  • a part of the configuration of one embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of one embodiment.
  • any of the additions, deletions, or substitutions of other configurations can be applied to a part of the configuration of each embodiment, either alone or in combination.
  • each of the above-described configurations, functions, processing units, processing means, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit.
  • each of the above-described configurations, functions, and the like may be realized by software by the processor interpreting and executing a program that realizes each function.
  • Information such as programs, tables, and files that realize each function can be stored in a memory, a hard disk, a recording device such as an SSD (Solid State Drive), or a recording medium such as an IC card, an SD card, or a DVD.

Abstract

 プロセッサとメモリとを備えた計算機で、前記メモリに格納したシステムソフトウェアで前記計算機を制御し、前記プロセッサは、複数のサブモジュールから構成されたキャッシュと、前記サブモジュール毎に使用の可否を設定するQoS制御ビットマップと、前記キャッシュの障害を検出して前記システムソフトウェアに伝達するキャッシュ障害検出部と、を含み、前記システムソフトウェアは、前記キャッシュ障害検出部が前記キャッシュの障害を検出すると、前記QoS制御ビットマップを更新して前記障害が発生したサブモジュールを特定するキャッシュ障害処理部を含む。

Description

計算機システム及び計算機の制御方法
 本発明は、計算機を制御するシステムソフトウェアが、プロセッサのキャッシュメモリで障害の発生したサブモジュールを特定する技術に関する。
 近年、CPUの製造プロセスの微細化やCPUに搭載されるキャッシュメモリ(以下、キャッシュとする)容量の増加に伴って、キャッシュの障害が発生し易くなっている。キャッシュは複数のサブモジュール(Way)から成り、キャッシュに格納されるデータはECC(Error-Correcting Code)で保護されている。ECCによって、例えば、1bitの故障(または障害)が発生してもデータを訂正できるので、計算機システムの稼働を継続できる。
 しかし、複数bitが壊れてしまい訂正できなくなったサブモジュールを使い続ければ、計算機システムのダウンを招く。従って、訂正可能な故障の段階でキャッシュのサブモジュールを縮退すべきである。
 本技術分野の背景技術として、特許文献1が知られている。特許文献1には、キャッシュモジュールに異常がないか検査し、異常が検出された場合にはキャッシュモジュールを無効化する技術が公開されている。
 また、特許文献2には、「キャッシュメモリの処理能力性能の低下を抑えつつ、重大な障害に発展する潜在的な要因(例えば、訂正可能なエラーなど)を予め排除することによりコンピュータシステム内の信頼性を維持することを課題とする。この縮退制御装置はまず、例えば、ウェイごとにエラー回数を計数するために備えたエラーカウンタをアップする。そして、エラーカウンタが予め定めた所定の上限回数を超えている場合には、この縮退制御装置は、その上限回数に到達する契機となったエラーを発生させたキャッシュライン(例えば、Way:n,Index:m)について、キャッシュタグに縮退フラグ(キャッシュラインが縮退であることを示す縮退情報)を書き込む。」と記載されている。この様な技術はハイエンドのCPUで採用されている。
 サーバ用途で広く使われているIntel社のx86 CPUは、キャッシュ障害の発生をOSやハイパバイザなどのシステムソフトウェアに知らせる機能を有している(例えば、非特許文献1: §15.3.2 Error-Reporting Register Banks)。しかしながら、非特許文献1の技術では、キャッシュを構成するどのサブモジュールが壊れたのかを通知するものではない。そのため、システムソフトウェアによる能動的なキャッシュの縮退は困難であった。
 キャッシュの制御に関してIntel社は、特定のプログラムがキャッシュを占拠して他のプログラムが遅くなる事態を避ける機能として、キャッシュのQoS機能を定義している(例えば、非特許文献1:§17.15 CACHE QUALITY-OF-SERVICE (QOS) ENFORCEMENT)。本機能では、キャッシュのサブモジュールの番号リストを作成して所定のレジスタにサブモジュールの番号をセットすると、キャッシュミス時に置換されるサブモジュールを制限できる。この機能により、優先度の低いプログラムの実行中に、少数のサブモジュールだけをセットすることで、優先度の高いプログラムのデータがキャッシュから追い出されるのを防ぐことができる。
米国特許第5805606号明細書 国際公開第WO2007/097027号公報
Intel 64 and IA-32 Architecture Software Developer’s Manual February 2014, Volume3B: System Programming Guide, Part 2, §15.3.2 Error-Reporting Register Banks, CHAPTER 15 MACHINE-CHECK ARCHITECTURE (15.3 MACHINE-CHECK MSRS, 15.3.2 Error-Reporting Register Banks)及び§17.15 CACHE QUALITY-OF-SERVICE (QOS) ENFORCEMENT、(CHAPTER 17 DEBUG, BRANCH PROFILE, TSC, AND QUALITY OF SERVICE, 17.15 CACHE QUALITY-OF-SERVICE (QOS) ENFORCEMENT).
 しかしながら、上記特許文献1の技術は、CPUの価格帯によらず実施可能であるが、キャッシュに障害が発生するとキャッシュを全て無効化するため、顕著な性能低下が生じてしまうという問題があった。
 一方、上記特許文献2の技術は、キャッシュに障害が発生した場合でも性能の低下を抑制できるが、キャッシュのウェイごとにエラー回数を計数するエラーカウンタ等の回路を設ける必要があり製造コストが増大する。このため、特許文献2を適用可能なCPUは製造コストの増大が許容されるハイエンドCPUに限定されてしまう、という問題があった。
 以上を踏まえて本発明では、製造コストを抑制した安価なCPUを搭載する計算機で、キャッシュを構成するサブモジュールが故障した場合に、性能を維持しつつ計算機を安定して稼働させることを目的とする。
 本発明は、プロセッサとメモリとを備えた計算機で、前記メモリに格納したシステムソフトウェアで前記計算機を制御する計算機システムであって、前記プロセッサは、複数のサブモジュールから構成されたキャッシュと、前記サブモジュール毎に使用の可否を設定するQoS制御ビットマップと、前記キャッシュの障害を検出して前記システムソフトウェアに伝達するキャッシュ障害検出部と、を含み、前記システムソフトウェアは、前記キャッシュ障害検出部が前記キャッシュの障害を検出すると、前記QoS制御ビットマップを更新して前記障害が発生したサブモジュールを特定するキャッシュ障害処理部を含む。
 本発明によれば、製造コストを抑制した安価なプロセッサを搭載する計算機で、キャッシュを構成するサブモジュールが故障した場合にも、性能を維持しつつ計算機を安定して稼働させることが可能となる。
本発明の第1の実施例を示し、計算機の一例を示すブロック図である。 本発明の第1の実施例を示し、計算機の機能の一例を示すブロック図である。 本発明の第1の実施例を示し、ハイパバイザが管理するメモリマップである。 本発明の第1の実施例を示し、キャッシュのサブモジュールの一例を示す図である。 本発明の第1の実施例を示し、検査結果表の一例を示す図である。 本発明の第1の実施例を示し、QoS制御ビットマップの一例を示す図である。 本発明の第1の実施例を示し、障害レジスタの一例を示す図である。 本発明の第1の実施例を示し、ハイパバイザのキャッシュ障害処理部で行われる処理の一例を示すフローチャートである。 本発明の第1の実施例を示し、ハイパバイザのキャッシュ障害処理部で行われるサブモジュール検査の一例を示すフローチャートである。 本発明の第1の実施例を示し、CPUで行われるキャッシュの処理の一例を示すフローチャートである。 本発明の第1の実施例を示し、ハイパバイザで行われるUI制御部の処理の一例を示すフローチャートである。 本発明の第2の実施例を示し、計算機の一例を示すブロック図である。 本発明の第2の実施例を示し、計算機の機能の一例を示すブロック図である。 本発明の第2の実施例を示し、OSが管理するメモリマップである。 本発明の第2の実施例を示し、キャッシュ障害処理部で行われるサブモジュール検査の一例を示すフローチャートである。
 以下、本発明の実施形態について添付図面を用いて説明する。
 図1は、本発明の計算機システムの構成の一例を示すブロック図である。物理計算機10は、複数のCPU70-1~70-nを有し、これらのCPU70-1~70-nはインターコネクト51を介してチップセット50やメモリ90に接続される。なお、図中CPU70-1~70-nの総称をCPU70で表す。
 チップセット50には、PCIexpress等を介してI/Oデバイスや入出力装置を備えたコンソール130が接続される。I/Oデバイスとしては、LAN(またはネットワーク)141に接続されるNIC(Network Interface Card)140や、SAN(Storage Area Network)151を介してストレージ装置125等に接続されるHBA(Host Bus Adapter)151などで構成される。
 CPU70はインターコネクト51を介してメモリ90にアクセスする。またCPU70はチップセット50を介してNIC140やHBA150等のI/Oデバイスにアクセスして所定の処理を行う。
 メモリ90には、システムソフトウェアとしてのハイパバイザ(Hypervisor)20がロードされ、CPU70によって実行されることで、物理計算機10の計算機資源を複数の仮想計算機30-1、30-2~30-nへ割り当てることができる。なお、各仮想計算機30-1、30-2~30-nではそれぞれOS40-1~40-nが実行される。なお、以下では、仮想計算機の総称を符号30で表し、各OSの総称を符号40で表す。なお、他の構成要素の符号も同様であり、「-n」で個々を識別し、「-」のない符号で総称を示す。
 各OS40-1~40-nは、それぞれアプリケーション60-1~60-n、61-1~61-nを実行する。なお、本実施例では、計算機資源を1以上の仮想計算機に割り当てる仮想化部としてハイパバイザ20を用いる例を示したが、これに限定されるものではなく、VMM(Virtual Machine Monitor)などを用いることができる。
 図2は、計算機システムの要部の機能を示すブロック図である。次に、物理計算機10上で動作するソフトウェアの主要部と、制御対象となるハードウェア要素について、図2を参照しながら詳述する。
 CPU70は、加減乗除などの演算処理を実行する演算部79と、メモリ90から読み込んだデータや命令の複製を一時的に格納するキャッシュメモリ(以下、キャッシュ)71を含む。なお、CPU70は、複数の演算部79を含むマルチコアのプロセッサで構成されてもよい。
 キャッシュ71は、ダイレクトマップ方式(メモリアドレスによってデータ格納位置が一意に定まるシンプルな方式)で動作するサブモジュール72-1~72-Mを複数含み、キャッシュ71全体としてはセットアソシアティブ方式(各メモリアドレスのデータを格納する位置(エイリアス)の候補が複数存在する方式)で機能する。すなわち、M個のサブモジュールをウェイ数=Mで使用するMウェイセットアソシエイティブを採用する例を示す。
 また、キャッシュ71は、障害(例えば、ECCエラー)を検出するキャッシュ障害検出部75と、各サブモジュール72の利用を選択的に制限するQoS制御ビットマップ77を更に含む。キャッシュ障害検出部75は、検出した障害の情報を格納する障害レジスタ76を含む。キャッシュ障害検出部75は、例えば、上記非特許文献1の§15.3.2 Error-Reporting Register Banksで開示されるように、キャッシュ71で障害が発生したことをシステムソフトウェアに通知する機能を含む。
 QoS制御ビットマップ77は、上記非特許文献1の§17.15 CACHE QUALITY-OF-SERVICE (QOS) ENFORCEMENTで開示されるキャッシュ71のQoS機能を制御するビットマップである。キャッシュのQoS制御については上述のように、キャッシュ71のサブモジュール72-1~72-Mの番号(位置)を指定し、当該番号に対応するビットマップに使用の可否を示す値を設定することで、キャッシュミス時にデータが置換されるサブモジュール72-1~72-Mを特定することができる。
 すなわち、ハイパバイザ20は、QoS制御ビットマップ77(図6の77-1~77-M)の番号に対応するサブモジュール72-1~72-Mのそれぞれについて利用するか否かを設定することができる。
 物理計算機10上では、仮想計算機30を生成するハイパバイザ20がシステムソフトウェアとして稼働する。仮想計算機30上では、OS40が稼働する。OS40は更にアプリケーション60、61を稼働させる。
 ハイパバイザ20は、キャッシュ71で検出された障害に対処するキャッシュ障害処理部100と、コンソール130を制御するUI制御部300を含む。キャッシュ障害処理部100は、UI制御部300にキャッシュ障害の発生を知らせる障害通知部110と、障害が起きたサブモジュールを特定するキャッシュ検査部120と、検査結果を保持する検査結果表500と、障害が起きたサブモジュール72を隔離するキャッシュ障害隔離部200を含む。
 なお、QoS制御ビットマップ77は、アクセスするサブモジュール72を選択するビットマスクやレジスタで構成してもよい。
 キャッシュ障害処理部100、UI制御部300の各機能部はプログラムとしてメモリ90にロードされる。CPU70は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、CPU70は、キャッシュ障害処理プログラムに従って処理することでキャッシュ障害処理部100として機能する。他のプログラムについても同様である。さらに、CPU70は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
 ハイパバイザ20の各機能を実現するプログラム、テーブル等の情報は、ストレージ装置125や不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
 <発明の概要>
 本発明の概要は次のとおりである。キャッシュ71に障害が発生するとキャッシュ障害検出部75が障害レジスタ76の障害フラグ761に“1”をセットし、障害が発生したキャッシュラインに対応するアドレスを障害アドレスに格納する。
 ハイパバイザ20のキャッシュ障害処理部100は、所定の周期で各CPU70の障害レジスタ76をポーリングすることでキャッシュ71の障害発生を検出する。キャッシュ障害処理部100は、キャッシュ71の障害が発生したCPU70に対して、キャッシュ検査部120による検査を実施する。キャッシュ検査部120は、検査対象のCPU70について、まず、キャッシュ71の全てのサブモジュール72-1~72-Mをフラッシュする。なお、キャッシュ検査部120が、フラッシュするサブモジュール72は検査結果表500で正常(使用可能)なサブモジュール72だけとしても良い。
 そして、キャッシュ検査部120は、ひとつのサブモジュール72-i(ただし、i=1~M)のみを使用可能となるようにQoS制御ビットマップ77を設定(または更新)する。すなわち、キャッシュ検査部120は、QoS制御ビットマップ77のうち、サブモジュール72-iのみを使用可に設定し、他のサブモジュール72を使用不可に設定する。
 次に、キャッシュ検査部120は、障害レジスタ76の障害アドレス762に対応するメモリ90上のアドレスに対してアクセスする。このアクセスは、例えば、データの読み込むまたは書き込みである。なお、キャッシュ検査部120は、サブモジュール72-1~72-Mのうち、検査結果表500で正常(使用可能)なサブモジュール72についてのみ検査を行うようにしてもよい。
 キャッシュ検査部120は、読み書きした後にキャッシュ障害検出部75が障害を検知すれば、当該サブモジュール72-iが異常のあるサブモジュール72であると特定する。そして、キャッシュ検査部120は、検査結果表500に当該特定されたサブモジュール72-iが“異常”であることを書き込む。なお、キャッシュ障害検出部75から障害の発生が通知されない場合には、キャッシュ検査部120は当該サブモジュール72-iが正常であることを書き込む。
 キャッシュ検査部120は、ひとつのCPU70の全ての(または使用可能な)サブモジュール(i=1~M)について上記検査を順次行って検査結果表500を更新する。
 キャッシュ障害隔離部200は、検査結果表500で“異常”となっているサブモジュール72を使用不可(使用禁止)に設定してキャッシュ71の縮退を実行する。障害通知部110は、キャッシュ71のサブモジュール72-iに障害が発生して検査が完了したことをUI制御部300へ通知する。UI制御部300は、キャッシュ71のサブモジュール72-iに障害が発生して検査が完了した通知をコンソール130へ送信する。
 図3は、ハイパバイザ20が管理するメモリ90のマップの一例である。ハイパバイザ20は、メモリ90上に自身を配置する領域と、仮想計算機30-1~30-nが使用する領域を割り当てる。ハイパバイザ20は、前述のようにキャッシュ障害処理部100、UI制御部300を自身の領域に含む。
 例えば、図3のように、ハイパバイザ20は、自身を配置する領域としてアドレスAD0~AD1を固定的に割り当てて、キャッシュ障害処理部100等の各モジュールを配置する。また、ハイパバイザ20は、仮想計算機30-1にアドレスAD2~AD3を割り当て、仮想計算機30-nにアドレスAD4~AD5を動的に割り当てる。
  各OS40は、各仮想計算機30の領域内で自身を配置する領域と、アプリケーション60が使用する領域を割り当てる。
 <構成要素>
 以下、本発明の計算機システムで用いるサブモジュールやテーブル、レジスタ等の各構成要素について以下に説明する。
 図4は、サブモジュール72の一例を示す図である。キャッシュ71を構成するサブモジュール72は、複数のキャッシュライン(1~n)から構成され、各キャッシュラインはメモリ90のデータの部分的な複製を保持する。
 メモリ90の部分的な複製を管理するために各キャッシュラインは、部分的な複製の対象となるメモリアドレスをメモリアドレス721に保持する。また部分的に複製したデータをデータ722に保持する。なお、メモリアドレス721とデータ722はECCによって保護される。
 図5は、サブモジュール72の検査結果を保持する検査結果表500の一例を示す図である。検査結果表500は、ハイパバイザ20が管理するCPU70-1~70-nのキャッシュ71を構成するサブモジュール72-1~72-Mの検査結果を保持する情報である。後述するように、キャッシュ障害処理部100のキャッシュ検査部120が、サブモジュール72の検査を行って、検査結果表500を設定する。
 検査結果表500は、CPU番号501と、サブモジュール番号502と、検査結果503からひとつのレコードが構成される。CPU番号501はキャッシュ71を搭載するCPU70-1~70-nを特定する番号(またが識別子)であり、サブモジュール番号502は、CPU70内のサブモジュール72-1~72-Mを特定する番号(または識別子)である。
 CPU番号501とサブモジュール番号502の組み合わせが、物理計算機10内でCPU70とサブモジュール72を特定する。検査結果503は、キャッシュ検査部120による検査結果が格納される。検査結果が異常だった場合のみ“異常”を示す値が格納される。検査結果が正常であれば“正常”を示す値が格納される。
 なお、図示の検査結果表500では、キャッシュ検査部120による検査結果が正常の場合には“正常”を示す値を検査結果503に設定したが、正常の場合は検査結果503に値を設定せず、異常の場合にのみ検査結果503に値を設定するようにしても良い。
 図6は、各サブモジュール72の利用を選択的に制限するQoS制御ビットマップ77の一例を示す図である。QoS制御ビットマップ77は、サブモジュール72-1~72-Mに対応する使用可否フラグ77-1~77-Mから構成される。
 使用可否フラグ77-1~77-Mの値が“0”であれば対応するサブモジュール72は使用不可であることを示す。使用不可とは、当該サブモジュール72に対して、データの参照/更新/フラッシュ(現在保持しているデータをメモリ90に書き戻す操作)は許可されるが、データの使用(フラッシュ後に別のメモリアドレスのデータを格納する操作)は禁止される。一方、使用可否フラグ77-1~77-Mの値が“1”であれば対応するサブモジュール72は使用可能であり、当該サブモジュール72に対して全ての操作が許可される。
 図7は、キャッシュ障害検出部75が検出した障害の情報を保持する障害レジスタ76の一例を示す図である。障害レジスタ76は、障害フラグ610と、障害アドレス620を含む。
 CPU70のキャッシュ障害検出部75は、キャッシュ71の障害を検出すると、障害フラグ610に“1”(障害あり)を書き込む。また、キャッシュ障害検出部75は、障害アドレス620に、障害が検出されたサブモジュール72のキャッシュラインが保持していたデータのメモリアドレス(図4の721)を格納する。
 <キャッシュの制御>
 図8は、キャッシュ障害処理部100で行われる処理の一例を示すフローチャートである。この処理はハイパバイザ20が起動した後などの所定のタイミングで開始される。
 キャッシュ障害処理部100は、所定の周期でCPU70-1~70-nの障害レジスタ76から障害フラグ761の値をそれぞれ読み込む(S1000)。キャッシュ障害処理部100は、障害フラグ761の値が“1”であるか否かに基づいて、キャッシュ71に障害が発生したか否かを判定する(S1010)。障害フラグ761の値が“1”であれば、キャッシュ71に障害(キャッシュ障害)が発生したと判定してステップ1020へ進む。一方、障害フラグ761の値が“0”であれば、キャッシュ障害処理部100はキャッシュ71が正常と判定してステップS1090へ進む。
 キャッシュ障害が発生しているステップS1020では、障害処理を開始する。障害処理に於いてキャッシュ障害処理部100は、計算機システムの安全を確保するために全ての仮想計算機30を一時的に停止させる(S1020)。
 続いて、キャッシュ障害処理部100は、キャッシュ障害が発生したCPU70の障害レジスタ76の障害フラグ610に“0”を書き込んで内容をクリアする。これにより、キャッシュ障害処理部100は、同じメモリアドレスに対する次のキャッシュ障害を検出することが可能な状態になる(S1030)。
 続いて、キャッシュ障害処理部100は、キャッシュ障害が発生したCPU70で、キャッシュ71を構成する全てのサブモジュール72について検査を行う(S1040)。サブモジュール72の検査については、図10で詳述する。
 その後、キャッシュ障害処理部100は、キャッシュ障害隔離部200を呼び出して、検査結果表500を参照させる。キャッシュ障害隔離部200は、キャッシュ障害の発生したCPU70が、正常なサブモジュール72だけを使うようにQoS制御ビットマップ77の設定を変更する(S1050)。すなわち、キャッシュ障害隔離部200は、当該CPU70でキャッシュ障害を検出したサブモジュール72の番号に対応するQoS制御ビットマップ77の値を“0”に設定して使用不可とする。この際、キャッシュ障害隔離部200は、正常なサブモジュール72を全て使うように設定しても構わないし、プログラム毎のキャッシュ71のQoSを考慮してサブモジュール72の使用を制限しても構わない。
 次に、キャッシュ障害処理部100は、UI制御部300にキャッシュ71の検査が完了したことを通知する(S1060)。そして、キャッシュ障害処理部100は、全ての仮想計算機30を再開する(S1070)。
 キャッシュ障害処理部100は、一定時間(例えば、1秒)スリープしてから(S1090)、上記ステップS1000に戻って、再度障害レジスタ76の値を読み込む。
 なお、上記ステップS1010の判定は、CPU70-1~70-nの順に行えば良い。また、複数のCPU70でキャッシュ障害が発生した場合には、キャッシュ障害が発生した全てのCPU70について上記ステップS1020~S1080の処理を実行すれば良い。
 図9は、サブモジュール72の検査の一例を示すフローチャートである。この処理は、上記図8のステップS1040でキャッシュ検査部120によって行われる。
 キャッシュ検査部120は、キャッシュ障害が発生したCPU70の各サブモジュール72-i(ただし、i=1~M)について、ステップS1100からS1190の処理を繰り返す。
 キャッシュ検査部120は、まず、キャッシュ障害が発生したCPU70の障害レジスタ76の障害アドレス620に格納されていたアドレスを指定してキャッシュフラッシュ命令を実行する(S1110)。すなわち、障害が発生したサブモジュール72のキャッシュラインが保持していたデータのメモリ90上のアドレスをキャッシュ検査部120が取得し、当該メモリアドレスについてキャッシュフラッシュを当該CPU70に指令する。この処理により、どのサブモジュール72も障害アドレス620に格納されていたアドレスの部分複製を保持していない状態が確立できる。
 続いて、キャッシュ検査部120は、QoS制御ビットマップ77の使用可否フラグ77-1~77-Mのうちのひとつを検査対象のサブモジュール72-iとし、当該サブモジュール72の使用可否フラグ77-iの値を“1”に設定し、他の使用可否フラグ77を“0”に設定する。これにより、検査対象のキャッシュ71でサブモジュール72-iだけが使用可能な状態が確立される(S1120)。なお、本実施例1では、i=1から順にi=Mまで増加させるものとする。
 キャッシュ検査部120は、障害アドレス620に格納されていたメモリアドレスに対して読み書きを実行し、検査中のサブモジュール72-iに、障害アドレス620に対応するメモリ90の部分的な複製を保持させる(S1130)。なお、読み書きの操作は、1回に限定されるものではなく、複数回繰り返してもよい。また、読み書きの操作は、読み出し及び書き込みのうち少なくとも一方を行えば良い。
 次に、キャッシュ検査部120は、障害アドレス620に対する読み書きの実行後、障害レジスタ76の障害フラグ761を読み込む(S1140)。サブモジュール72に異常がある場合は、上記ステップS1130の読み書きの操作によって、CPU70のキャッシュ障害検出部75が新たなキャッシュ障害を検出する。
 次に、キャッシュ検査部120は、障害レジスタ76の障害フラグ761の値が“1”であるか否かを判定する(S1150)。障害フラグ761の値が“1”であれば、新たなキャッシュ障害が発生したと判定してステップS1160に進み、そうでない場合にはステップS1180へ進む。
 キャッシュ71のフラッシュ後に新たなキャッシュ障害が発生していた場合、キャッシュ検査部120は、当該サブモジュール72-iに対応する検査結果表500に、“異常”を示す値を格納する(S1160)。そして、キャッシュ検査部120は、CPU70の障害レジスタ76の障害フラグ610を“0”に設定してクリアする(S1170)。
 一方、キャッシュ障害が発生していない場合、キャッシュ検査部120は、当該サブモジュール72-iに対応する検査結果表500に、“正常”を示す値を格納する(S1180)。
 以上の処理を各サブモジュール72-1~72-Mについて繰り返す(S1190)ことで、キャッシュ障害処理部100は障害が発生した異常なサブモジュール72を特定することができる。キャッシュ障害処理部100は、検査結果表500に特定したモジュール72を記録し、QoS制御ビットマップ77で障害のあるサブモジュール72を使用禁止に設定してキャッシュ71の縮退を行うことができる。
 本発明では、障害レジスタ76の障害フラグ761が“1”となったCPU70で、QoS制御ビットマップ77の使用可否フラグ77-1~77-Mのうちのひとつのみを使用可として、サブモジュール72-1~72-Mを順次検査することで、ハイパバイザ20のキャッシュ検査部120は障害が発生したサブモジュール72を特定することができる。そして、障害の発生を特定したサブモジュール72を検査結果表500に記録して、QoS制御ビットマップ77で使用禁止とすることで、再度障害が発生するのを回避できる。
 これにより、前記特許文献2のようにキャッシュのウェイごとにエラー回数を計数する特別な回路などを用いることなく、製造コストを抑制した安価なCPU70を搭載する物理計算機10で、キャッシュ71を構成するサブモジュール72が故障しても、性能を維持しながら計算機を安定させて稼働を継続させることが可能となる。
 なお、本実施例1では、キャッシュ障害時にキャッシュ検査部120による全サブモジュール72の検査を行う例を示したが、所定のタイミング(例えば、アイドル時や低負荷時)で図9の処理を実行し、キャッシュ71のサブモジュール72についてスクラビングを行うようにしてもよい。
 ここで、スクラビングは、使用されていないサブモジュール72やキャッシュラインについて障害の有無を検出し、障害があれば所定の処理(キャッシュ障害隔離部200など)を実行する。CPU70のキャッシュ障害検出部75は、使用されたサブモジュール72及びキャッシュラインについて障害の有無を検出することができる。しかしながらキャッシュ障害検出部75では、使用されていないサブモジュール72及びキャッシュラインについては障害を検出することができない。
 そこで、図9に示したキャッシュ検査部120を定期的に実行することにより、障害のあるサブモジュール72を特定して、検査結果表500に記録することでキャッシュ71から除外しておくことができる。
 図10は、キャッシュ71で行われる処理の一例を示すフローチャートである。この処理は、演算部79がメモリ90の読み書きを行う命令を行う度に実行される。
 キャッシュ71は、演算部79からの要求を待って処理を開始し(S1200)、演算部79から指定されたメモリアドレスがキャッシュ71に保持されているか否かを判定する(S1210)。指定されたメモリアドレスがキャッシュ71に保持されていればステップS1250へ進む。
 一方、指定されたメモリアドレスがキャッシュ71に保持されていなければ、キャッシュ71は、QoS制御ビットマップ77を参照して使用可否フラグ77-1~77-Mが“1”(使用可)に設定されているサブモジュール72を1つ選択する(S1220)。
 そして、キャッシュ71は、選択したサブモジュール72内のキャッシュラインに格納されていたデータ730をメモリ90に書き戻すフラッシュ処理を実行する(S1230)。次に、キャッシュ71は、指定されたメモリアドレスをメモリ90から読んで、フラッシュが済んだサブモジュール72の当該キャッシュラインに格納する(S1240)。このとき、キャッシュ71はキャッシュラインに格納するデータに基づいてECCを演算して付加する。
 続いてキャッシュ71は、指定されたメモリアドレスが格納されたサブモジュール72内のキャッシュラインが保持しているECCを参照し(S1250)、当該ECCに基づいてキャッシュラインに保持したデータの異常の有無を判定する(S1260)。キャッシュラインに格納されたデータとECCが整合しなければ、キャッシュ71は異常ありと判定しステップS1270へ進む。キャッシュラインに格納されたデータとECCが整合すれば、キャッシュ71は正常と判定しステップS1280へ進む。
 ステップS1270では、キャッシュ障害検出部75が、障害レジスタ76の障害フラグ761に“1”(障害有り)を設定する。また、キャッシュ障害検出部75は、障害アドレス620に障害が検出されたキャッシュラインが保持していたメモリアドレス721を格納する。更に、キャッシュ71は、可能であればキャッシュラインの情報をECCで訂正する。
 その後キャッシュ71は、指定されたメモリアドレスが格納されたキャッシュラインを操作し、データ722の変更があった場合(WRITE)には更にECCを再計算する(S1280)。以上の処理が終了すると、ステップS1200へ戻って次の命令を待ち受ける。
 以上の処理によって、キャッシュ71はQoS制御ビットマップ77で使用可能なサブモジュール72に指定されたメモリアドレスのデータを、キャッシュライン単位で格納する。そして、キャッシュ71は、キャッシュラインに付加されたECCに基づいて異常の検出を行う。キャッシュラインに異常があれば、キャッシュ障害検出部75が、障害レジスタ76の障害フラグ761と障害アドレス620に障害が検出された情報を格納する。
 図11は、UI制御部300で行われる処理の一例を示すフローチャートである。UI制御部300は、他のモジュール(キャッシュ障害処理部100等)からの通知を待って処理を開始する(S1400)。
 UI制御部300は、検査結果表500を参照して異常なサブモジュール72を全て取得する(S1410)。そして、異常が発生したサブモジュール72(及びCPU70)をコンソール130に表示し、キャッシュ71の縮退の発生をシステム管理者等に通知して(S1420)、部品交換などの行動を促す。
 以上のように、本発明の実施例1によれば、ハイパバイザ20のキャッシュ障害処理部100が各CPU70の障害レジスタ76を定期的に参照することで、サブモジュール72の異常を検出する。そして、障害を検知した場合には、キャッシュ障害処理部100は、QoS制御ビットマップ77のうちのひとつのみを使用可として、サブモジュール72-1~72-Mを順次検査することで、ハイパバイザ20のキャッシュ検査部120で障害が発生したサブモジュール72を特定する。そして、キャッシュ障害処理部100のキャッシュ障害隔離部200は、特定されたサブモジュール72をQoS制御ビットマップ77で使用禁止に設定しておくことで、再度障害が発生するのを回避できる。
 これにより、前記従来例の特許文献2のように特別な回路を用いることなく、安価なCPU70を用いて物理計算機10を構成することができ、さらに、キャッシュ71を構成するサブモジュール72が故障しても、残りのサブモジュール72を使用して性能を維持しながら物理計算機10を安定して稼働させることが可能となる。
 また、本発明によれば、ハイパバイザ20を稼働させた状態でサブモジュール72-1~72-Mの検査を行って、異常がある場合にはキャッシュ71の縮退を行うことができるので、仮想計算機30及びアプリケーション60、61の信頼性を確保できる。
 本実施例2では、メモリアドレスとサブモジュール72内のキャッシュラインの番号との対応関係が開示されているCPU70を前提として、システムソフトウェアとして動作するOS40がキャッシュ障害に対処する例を示す。
 図12は、実施例2における物理計算機10の構成図の一例である。前記実施例1の図1と同一の構成要素には同一の符号を付し、重複する説明は省略する。
 メモリ90には、OS40がロードされ、メモリ90の一部をアプリケーション60-1~60-nに割り当てる。OS40上ではアプリケーション60-1~60-nが実行される。その他の構成については前記実施例1と同様である。
 図13は、物理計算機10上で稼働するソフトウェアの主要部と、制御対象となるハードウェア要素の一例を示すブロック図である。なお、前記実施例1の図2と同一の符号を付され、同一の機能を有する構成要素について説明を省略する。
 物理計算機10上では、アプリケーション60-1~60-nを稼働させるOS40がシステムソフトウェアとして稼働する。
 OS40は、キャッシュ71で検出された障害に対処するキャッシュ障害処理部100と、コンソール130を制御するUI制御部300を含む。その他の構成は、前記実施例1の図2と同様である。
 CPU70は、メモリ90のメモリアドレスとサブモジュール72内のキャッシュラインの番号との対応関係を予め有している点が、前記実施例1と異なる。その他の点については、前記実施例1と同様である。
 図14は、OS40が管理するメモリ90の一例を示すマップである。前記実施例1の図3と同一の符号を付され、同一の機能を有する構成要素については説明を省略する。
 OS40は、メモリ90上に自身を配置する領域と、アプリケーション60が使用する領域を割り当てる。OS40は、前述のようにキャッシュ障害処理部100、UI制御部300を自身の領域内に含む。
 例えば図14のように、OS40は、自身にアドレスAD0~AD1を固定的に割り当てて各モジュール(キャッシュ障害処理部100、UI制御部300)を配置し、アプリケーション60-1にアドレスAD2~AD3を、アプリケーション60-nにアドレスAD4~AD5を動的に割り当てる。
 図15は、OS40のキャッシュ障害処理部100のキャッシュ検査部120で行われるサブモジュール72の検査の一例を示すフローチャートである。
 なお、OS40のキャッシュ障害処理部100は、前記実施例1のハイパバイザ20と同様に図8、図11の処理を行う。本実施例2では、OS40のキャッシュ障害処理部100が全てのアプリケーション60-1~60-nを一時的に停止させている間に、サブモジュール72-1~72-Mの検査を行う。
 キャッシュ検査部120は、各サブモジュール72-1~72-Mについて、S1100からS1180の処理を繰り返す。なお、図15の処理は、前記実施例1の図9のフローチャートから、ステップS1110を削除し、ステップS1130をステップS1500に置き換えたものであり、その他の処理は図9と同様である。
 キャッシュ検査部120は、QoS制御ビットマップ77の使用可否フラグ77-1~77-Mを1つだけセットして、検査対象のサブモジュール72-iだけが使用可能な状態を確立させる(S1120)。
 続いてキャッシュ検査部120は、障害レジスタ76の障害アドレス620に格納されていたアドレスと同一キャッシュラインに格納されるメモリアドレスを、N(N>サブモジュール数)箇所選択して読み書きの操作を実行する(S1500)。すなわち、障害レジスタ76の障害アドレス762に格納されていたメモリアドレスと、当該メモリアドレスのエイリアスの関係にあるアドレスについてキャッシュ71の読み書きを複数回行う。
 ここで、CPU70は、メモリアドレスとサブモジュール72内のキャッシュラインとの対応関係が既知であるので、キャッシュ検査部120は、障害ラインが保持していたメモリアドレス(障害アドレス762)と、キャッシュラインの番号が一致するメモリアドレスをN箇所選択することができる。
 前記実施例1のキャッシュフラッシュに代わって、障害アドレス762に格納されていたメモリアドレスとエイリアスの関係にあるアドレスについてサブモジュール72の数を超える複数のアクセス(読み書き)をそれぞれ行うことで、サブモジュール72-iに異常がある場合は、CPU70のキャッシュ障害検出部75が新たなキャッシュ障害を検出して障害レジスタ76の障害フラグ761を“1”に設定することができる。
 キャッシュ検査部120は、障害レジスタ76の障害フラグ761の値を読み込み(S1140)、新たなキャッシュ障害が生じたか否かを判定する(S1150)。
 新たなキャッシュ障害が発生していた場合は、検査結果表500に、検査中のサブモジュール72が“異常”を示す値を記録し(S1160)、障害レジスタ76の障害フラグ610を“0”に設定してクリアする(S1170)。一方、新たなキャッシュ障害がない場合は、キャッシュ検査部120が検査結果表500に、検査中のサブモジュール72が“正常”を示す値を記録(S1180)する。
 以上の処理を各サブモジュール72-1~72-Mについて繰り返すことで、計算機システムが稼働中であっても、異常が発生したサブモジュール72を特定できる。また、本実施例2では、障害が発生したサブモジュール72のキャッシュラインが保持していたメモリアドレスとライン番号が一致するメモリアドレスをN個選択して読み書きの操作を行うことで、異常が発生したサブモジュール72を特定することができる。そして特定されたサブモジュール72は、前記実施例1と同様に、キャッシュ障害隔離部200がQoS制御ビットマップ77で当該サブモジュール72を使用不可に設定する。これにより、再度同じサブモジュール72で障害が発生するのを回避する。
 本実施例2も前記実施例1と同様に、安価なCPU70を用いて物理計算機10を構成することができ、さらに、キャッシュ71を構成するサブモジュール72が故障しても、性能を維持しながら物理計算機10を安定して稼働させることが可能となる。
 また、本実施例2も前記実施例1と同様に、OS40を稼働させた状態でサブモジュール72-1~72-Mの検査を行って、異常がある場合にはキャッシュ71の縮退を行うことができるので、アプリケーション60の信頼性を確保できる。
 なお、上記実施例1、2では、システムソフトウェアが所定の周期で障害レジスタ76を読み込んでキャッシュ71の障害を検出する例を示したが、これに限定されるものではない。例えば、キャッシュ71に障害が発生したときにCPU70がシステムソフトウェアに割り込みをかける場合では、割り込みを契機としてキャッシュ障害処理部100の処理を開始しても良い。
 また、本発明のキャッシュ71は、LLC(Last Level Cache)やL3(Level 3)キャッシュを構成することができる。また、本発明のキャッシュ71をL2キャッシュやL1キャッシュに用いてもよい。
 また、上記実施例1、2では、CPU70で演算処理を行う例を示したが、ヘテロジニアスのプロセッサを採用しても良い。
 なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
 また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。

Claims (10)

  1.  プロセッサとメモリとを備えた計算機で、前記メモリに格納したシステムソフトウェアで前記計算機を制御する計算機システムであって、
     前記プロセッサは、
     複数のサブモジュールから構成されたキャッシュと、
     前記サブモジュール毎に使用の可否を設定するQoS制御ビットマップと、
     前記キャッシュの障害を検出して前記システムソフトウェアに伝達するキャッシュ障害検出部と、を含み、
     前記システムソフトウェアは、
     前記キャッシュ障害検出部が前記キャッシュの障害を検出すると、前記QoS制御ビットマップを更新して前記障害が発生したサブモジュールを特定するキャッシュ障害処理部を含むことを特徴とする計算機システム。
  2.  請求項1に記載の計算機システムであって、
     前記キャッシュ障害検出部は、
     前記キャッシュの障害の有無と、障害検出時に前記キャッシュで保持していたメモリアドレスと、を格納する障害レジスタをさらに含み、
     前記キャッシュ障害処理部は、
     前記キャッシュの障害を検出したときには、前記障害が発生した前記キャッシュのサブモジュールを検査して、障害が発生したサブモジュールを特定するキャッシュ検査部を含み、
     前記キャッシュ検査部は、
     前記複数のサブモジュールのうちの1つを順次選択して前記QoS制御ビットマップを使用可に変更し、他のサブモジュールを使用不可に変更してから、前記メモリアドレスへのアクセスを実行し、前記障害が発生したサブモジュールを特定することを特徴とする計算機システム。
  3.  請求項2に記載の計算機システムであって、
     前記キャッシュ検査部は、
     前記障害レジスタの前記キャッシュの障害の有無をクリアしてから、前記障害レジスタが格納していた前記メモリアドレスで前記キャッシュをフラッシュし、
     前記複数のサブモジュールのうちの1つを順次選択して前記QoS制御ビットマップを使用可に変更し、他のサブモジュールを使用不可に変更してから、前記メモリアドレスへのアクセスを実行し、
     前記障害レジスタを読み込んで、再度キャッシュの障害が有りとなった前記サブモジュールを、前記障害が発生したサブモジュールとして特定することを特徴とする計算機システム。
  4.  請求項2に記載の計算機システムであって、
     前記プロセッサは、
     前記メモリのアドレスと前記サブモジュール内のキャッシュラインの番号との対応関係を予め有し、
     前記キャッシュ検査部は、
     前記障害レジスタの前記キャッシュの障害の有無をクリアしてから、
     前記複数のサブモジュールのうちの1つを順次選択して前記QoS制御ビットマップを使用可に変更し、他のサブモジュールを使用不可に変更してから、前記障害レジスタが格納していた前記メモリアドレスとキャッシュラインの番号が一致する複数のメモリアドレスへのアクセスをそれぞれ実行し、
     前記障害レジスタを読み込んで、再度キャッシュの障害が有りとなった前記サブモジュールを、前記障害が発生したサブモジュールとして特定することを特徴とする計算機システム。
  5.  請求項2に記載の計算機システムであって、
     前記キャッシュ障害処理部は、
     前記キャッシュ検査部が特定した前記障害の発生したサブモジュールに対応する前記QoS制御ビットマップを使用不可に設定するキャッシュ障害隔離部をさらに含むことを特徴とする計算機システム。
  6.  プロセッサとメモリとを備えた計算機で、前記メモリに格納したシステムソフトウェアで前記計算機を制御する計算機の制御方法であって、
     前記プロセッサは、複数のサブモジュールから構成されたキャッシュと、前記サブモジュール毎に使用の可否を設定するQoS制御ビットマップと、を含み、
     前記プロセッサが、前記キャッシュの障害を検出して前記システムソフトウェアに伝達する第1のステップと、
     前記システムソフトウェアが、前記キャッシュの障害を検出すると、前記QoS制御ビットマップを更新して、前記障害が発生したサブモジュールを特定する第2のステップと、
    を含むことを特徴とする計算機の制御方法。
  7.  請求項6に記載の計算機の制御方法であって、
     前記プロセッサは、前記キャッシュの障害の有無と、障害検出時に前記キャッシュで保持していたメモリアドレスと、を格納する障害レジスタをさらに含み、
     前記第2のステップは、
     前記キャッシュの障害を検出したときには、前記障害が発生した前記キャッシュのサブモジュールを検査して、障害が発生したサブモジュールを特定する第3のステップを含み、
     前記第3のステップは、
     前記複数のサブモジュールのうちの1つを順次選択して前記QoS制御ビットマップを使用可に変更し、他のサブモジュールを使用不可に変更するステップと、
     前記メモリアドレスへのアクセスを実行し、前記障害が発生したサブモジュールを特定するステップと、
    を含むことを特徴とする計算機の制御方法。
  8.  請求項7に記載の計算機の制御方法であって、
     前記第3のステップは、
     前記障害レジスタの前記キャッシュの障害の有無をクリアするステップと、
     前記障害レジスタが格納していた前記メモリアドレスで前記キャッシュをフラッシュするステップと、
     前記複数のサブモジュールのうちの1つを順次選択して前記QoS制御ビットマップを使用可に変更し、他のサブモジュールを使用不可に変更するステップと、
     前記メモリアドレスへのアクセスを実行するステップと、
     前記障害レジスタを読み込んで、再度キャッシュの障害が有りとなった前記サブモジュールを、前記障害が発生したサブモジュールとして特定するステップと、
    を含むことを特徴とする計算機の制御方法。
  9.  請求項7に記載の計算機の制御方法であって、
     前記プロセッサは、
     前記メモリのアドレスと前記サブモジュール内のキャッシュラインの番号との対応関係を予め有し、
     前記第3のステップは、
     前記障害レジスタの前記キャッシュの障害の有無をクリアするステップと、
     前記複数のサブモジュールのうちの1つを順次選択して前記QoS制御ビットマップを使用可に変更し、他のサブモジュールを使用不可に変更するステップと、
     前記障害レジスタが格納していた前記メモリアドレスとキャッシュラインの番号が一致する複数のメモリアドレスへのアクセスをそれぞれ実行するステップと、
     前記障害レジスタを読み込んで、再度キャッシュの障害が有りとなった前記サブモジュールを、前記障害が発生したサブモジュールとして特定するステップと、
    を含むことを特徴とする計算機の制御方法。
  10.  請求項7に記載の計算機の制御方法であって、
     前記システムソフトウェアが、前記第3のステップで特定した前記障害が発生したサブモジュールに対応する前記QoS制御ビットマップを使用不可に設定する第4のステップをさらに含むことを特徴とする計算機の制御方法。
PCT/JP2014/072742 2014-08-29 2014-08-29 計算機システム及び計算機の制御方法 WO2016031049A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/072742 WO2016031049A1 (ja) 2014-08-29 2014-08-29 計算機システム及び計算機の制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/072742 WO2016031049A1 (ja) 2014-08-29 2014-08-29 計算機システム及び計算機の制御方法

Publications (1)

Publication Number Publication Date
WO2016031049A1 true WO2016031049A1 (ja) 2016-03-03

Family

ID=55398984

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/072742 WO2016031049A1 (ja) 2014-08-29 2014-08-29 計算機システム及び計算機の制御方法

Country Status (1)

Country Link
WO (1) WO2016031049A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01228036A (ja) * 1988-03-08 1989-09-12 Mitsubishi Electric Corp キャッシュメモリ
JP2004038798A (ja) * 2002-07-05 2004-02-05 Fujitsu Ltd 縮退制御装置及び方法
JP2014081865A (ja) * 2012-10-18 2014-05-08 Nec Computertechno Ltd キャッシュメモリ、キャッシュメモリ障害制御方法および情報処理システム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01228036A (ja) * 1988-03-08 1989-09-12 Mitsubishi Electric Corp キャッシュメモリ
JP2004038798A (ja) * 2002-07-05 2004-02-05 Fujitsu Ltd 縮退制御装置及び方法
JP2014081865A (ja) * 2012-10-18 2014-05-08 Nec Computertechno Ltd キャッシュメモリ、キャッシュメモリ障害制御方法および情報処理システム

Similar Documents

Publication Publication Date Title
US10180866B2 (en) Physical memory fault mitigation in a computing environment
US10459814B2 (en) Drive extent based end of life detection and proactive copying in a mapped RAID (redundant array of independent disks) data storage system
JP5574230B2 (ja) 障害処理方法および計算機
US9619311B2 (en) Error identification and handling in storage area networks
US9535807B2 (en) Recovering from uncorrected memory errors
JP5585844B2 (ja) 仮想計算機の制御方法及び計算機
US7409586B1 (en) System and method for handling a storage resource error condition based on priority information
US8601310B2 (en) Partial memory mirroring and error containment
US8667337B2 (en) Storage apparatus and method of controlling the same
WO2011074284A1 (ja) 仮想計算機の移動方法、仮想計算機システム及びプログラムを格納した記憶媒体
JP5965076B2 (ja) 訂正不能メモリエラー処理方法及びその可読媒体
US10346269B2 (en) Selective mirroring of predictively isolated memory
US20050204199A1 (en) Automatic crash recovery in computer operating systems
WO2022193768A1 (zh) 内存读写指令的执行方法及计算设备
JP5716830B2 (ja) 情報処理装置及び方法、プログラム
US20230342268A1 (en) Uncorrectable Memory Error Recovery For Virtual Machine Hosts
KR20230161375A (ko) 확장 가능한 메모리 오류 처리를 위한 시스템들 및 방법들
US8195981B2 (en) Memory metadata used to handle memory errors without process termination
WO2016031049A1 (ja) 計算機システム及び計算機の制御方法
WO2016056074A1 (ja) 計算機システム及びメモリダンプ方法
US9691503B2 (en) Allocation technique for memory diagnostics
JP5831858B2 (ja) 計算機及びメモリ検査方法
JP5217128B2 (ja) エミュレーション装置及びエミュレーション方法
US20230168962A1 (en) Troubleshooting for a distributed storage system by cluster wide correlation analysis

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: 14900617

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14900617

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP