WO2010109631A1 - 情報処理装置、情報処理方法及び情報処理プログラム - Google Patents

情報処理装置、情報処理方法及び情報処理プログラム Download PDF

Info

Publication number
WO2010109631A1
WO2010109631A1 PCT/JP2009/056126 JP2009056126W WO2010109631A1 WO 2010109631 A1 WO2010109631 A1 WO 2010109631A1 JP 2009056126 W JP2009056126 W JP 2009056126W WO 2010109631 A1 WO2010109631 A1 WO 2010109631A1
Authority
WO
WIPO (PCT)
Prior art keywords
error
address
data
instruction
register
Prior art date
Application number
PCT/JP2009/056126
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/JP2009/056126 priority Critical patent/WO2010109631A1/ja
Publication of WO2010109631A1 publication Critical patent/WO2010109631A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

Definitions

  • the present invention relates to a technique for performing recovery processing from an error when an error occurs during execution of a program.
  • the following techniques have been proposed to perform error recovery processing while avoiding system stoppage. That is, when an error is detected, an error recovery process is performed as an interrupt process, the memory in which the error has occurred is repaired, and the process returns from the interrupt process.
  • the following techniques have also been proposed. That is, the microprogram is stored in a RAM (Random Access Memory) that can be accessed at high speed instead of an external storage device, and the program is loaded from the RAM to the microprogram control memory and executed. When an error occurs in the microprogram control memory, execution of the program is stopped, the program is loaded from the RAM, and data on the memory is restored.
  • RAM Random Access Memory
  • the address of data to be fetched from the second storage unit by the CPU that loads the program from the first storage unit to the second storage unit and executes the instructions is stored in a register.
  • an error in the target data of the instruction fetch or operand fetch from the second storage unit by the CPU is detected.
  • the register address is held. Then, the CPU re-executes the instruction indicated by the address stored in the register.
  • the disclosed system when an error is detected in the fetch by the CPU, re-execution is performed first. Therefore, when a temporary error such as a read error occurs, the normal processing is resumed as it is after re-execution. be able to. On the other hand, even if the error content is not a temporary error, if it is a soft error, it is possible to minimize the return and delay of processing within a range where data inconsistency does not occur. For this reason, it is possible to realize a system that is highly resistant to errors.
  • FIG. 1 is an overall configuration diagram of a system in Embodiment 1.
  • FIG. 6 is a flowchart of operation contents realized by an error processing unit according to the first embodiment.
  • 4 is a functional block diagram of an exception handling program in Embodiment 1.
  • FIG. 6 is a flowchart of processing contents of an exception handling program according to the first embodiment.
  • 6 is a flowchart of processing contents of a subroutine of error determination processing in an error determination unit according to the first embodiment.
  • FIG. 3 is an overall configuration diagram of a system in a second embodiment.
  • 10 is a flowchart of operation contents realized by an error processing unit according to the second embodiment.
  • 10 is a flowchart of processing contents of an exception handling program according to the second embodiment.
  • FIG. 10 is a timing chart of a temporary error occurrence case (at the time of instruction fetch) in the second embodiment.
  • 10 is a timing chart of a temporary error occurrence case (at the time of operand fetch) in the second embodiment.
  • 10 is a timing chart of a soft error occurrence case (at the time of instruction fetch) in the second embodiment.
  • 10 is a timing chart of a soft error occurrence case (at the time of operand fetch) in the second embodiment.
  • 10 is a timing chart of a soft error occurrence case (at the time of operand fetch) in the second embodiment.
  • 10 is a timing chart of a hardware error occurrence case in the second embodiment.
  • FIG. 10 is an overall configuration diagram of a system according to a third embodiment.
  • FIG. 1 shows an overall configuration of a computer system (information processing apparatus) 10 according to the first embodiment.
  • this system includes a CPU (Central Processing Unit) unit 11, a local memory 12, an external memory 13, a boot loader 14, an address hold register (hereinafter referred to as AHR) 15A, an AHR 15E, a parity checker 16, an error process.
  • a unit 17, a multiplexer (hereinafter referred to as MPX) 18, and an error log memory 19 are included.
  • Each component is connected by a bus as shown in FIG.
  • the CPU unit 11 includes an instruction fetch unit, a decode unit, an arithmetic unit, a control unit, various registers, etc., and has a function as a CPU core.
  • a program counter hereinafter referred to as a PC 22 22
  • a return address register 23 in which an execution address is set when returning from an interrupt processing of an exception processing program
  • an operand register 24 The MPX 25 selects and outputs either the address of the instruction set in the PC 22 or the address of the operand set in the operand register 24 according to the execution state of the instruction.
  • the local memory 12 stores a program loaded from the external memory 13 by the CPU. Similarly, when an exception handling program described later is executed, the exception handling program is loaded and stored in the local memory 12.
  • the external memory 13 is an external storage such as a hard disk. In this embodiment, the external memory 13 corresponds to the first storage unit, and the local memory 12 corresponds to the second storage unit.
  • the boot loader 14 includes a program for starting an operating system (hereinafter referred to as OS).
  • the AHR 15A is a register that stores the address of the instruction fetch target data among the constituent elements of the instruction fetched from the local memory 12 by the CPU unit 11.
  • the AHR 15E is a register that stores an address of operand fetch target data.
  • AHR 15A corresponds to the first register
  • AHR 15E corresponds to the second register.
  • the parity checker 16 detects whether or not there is an error in the data fetched by the CPU 11 from the memory and fetched from the instruction and the operand by a parity check.
  • the error processing unit 17 includes a logic circuit, and includes an error detection signal output from the parity checker 16 and an instruction operand identification signal output from the CPU unit 11 (whether the fetch target at the time of the error is an instruction or an operand) And a clock stop (HALT) signal for stopping the clock for storing addresses in the AHR 15A and AHR 15E.
  • the error processing unit 17 uses the address stored in the AHR 15A when the fetch at the time of the error is an instruction fetch, and the address stored in the AHR 15E when the fetch is an operand fetch.
  • An AHR selection signal for causing the MPX 18 to select is output.
  • the error processing unit 17 includes a log counter 20 that counts the number of times an error has occurred, and an error status register 21 that temporarily stores an error content and an error status corresponding to a fetch target. Then, the error processing unit 17 generates an error status as an output to the error log memory 19 based on the error detection signal and the instruction operand identification signal, and temporarily holds the error status in the error status register 21.
  • the error processing unit 17 generates a write signal for writing the error status to the log memory.
  • the address output by the MPX 18 is output to the error log memory 19 as an error occurrence address, and an error status is output to the error log memory 19 in association therewith.
  • the error processing unit 17 outputs a PC set signal that causes the PC 22 to set the address output by the MPX 18 as a control signal to the CPU unit 11.
  • the error processing unit 17 outputs an exception interrupt signal for starting execution of the exception processing program to the CPU unit 11 when a parity error is detected again in the re-execution.
  • the error processing unit 17 outputs a control signal for changing the value of the return address register 23 as a stack to be returned to the PC 22 to the address output by the MPX 18 when the execution of the exception processing program is completed.
  • the error log memory 19 is an SRAM (Static Random Access Memory) having a non-volatile memory and a power backup function, and the error processing unit 17 records an error occurrence address, an error status indicating an error content, and the like.
  • SRAM Static Random Access Memory
  • the CPU unit 11 loads a program stored in the external memory 13 into the local memory 12.
  • the CPU unit 11 executes the instruction at the address set in the PC 22.
  • the CPU unit 11 selects the address stored in the PC 22 or the address stored in the operand register 24 by the MPX 25, requests the data of the address from the local memory 12, fetches the data, and sequentially executes the instructions. To do.
  • the CPU unit 11 controls so that the address at the time of instruction fetch is stored in the AHR 15A and the address at the time of operand fetch is stored in the AHR 15E.
  • the error processing unit 17 When receiving the error detection signal from the parity checker 16, the error processing unit 17 outputs a clock stop signal and holds the addresses stored in the AHR 15A and AHR 15E (S1).
  • the error processing unit 17 outputs an AHR selection signal that causes the MPX 18 to select the AHR 15A, and outputs a PC set signal that causes the CPU unit 11 to set the output address of the MPX 18 in the PC 22.
  • the CPU unit 11 that has received the PC set signal sets the output address of the MPX 18 (address of AHR 15A) in the PC 22 and re-executes from the instruction indicated by the address (S2).
  • the error processing unit 17 When the error detection signal is received again from the parity checker 16 in the re-execution (S3), the error processing unit 17 outputs an exception processing interrupt signal to the CPU unit 11, and the CPU unit executes the exception processing program. Execute. On the other hand, when no parity error has occurred during re-execution (S3) and the instruction operand identification signal received from the CPU unit 11 is an instruction fetch (S4), the error processing unit 17 Perform the process. That is, the log counter 20 is added, the address of the error occurrence address AHR 15A and the error status “1” are output in association with each other to the error log memory 19 (S5), and normal processing is resumed.
  • the error processing unit 17 adds the log counter 20, adds the address of the error occurrence address AHR 15E and the error status “ 2 ”is output in association with the error log memory 19 (S6).
  • the instruction when an error is detected in the data fetched at the time of execution of the program, the instruction is first re-executed instead of immediately stopping the system.
  • a temporary error such as a simple read error
  • the error is often resolved by re-execution.
  • the normal process can be resumed as it is after the re-execution. For this reason, it is not necessary to generate an interrupt process for handling an error, and the return and delay of the process can be minimized.
  • FIG. 3 is a functional block diagram of the exception handling program.
  • the error determination unit 31 determines whether the error content is a soft error or a hard error when a parity error is detected again as a result of the re-execution by the error processing unit 17.
  • the soft error processing unit 32 When it is determined that the error content is a soft error, the soft error processing unit 32 performs a recovery process depending on whether the data in which the error is detected is target data for instruction fetch or target data for operand fetch.
  • the hardware error processing unit 33 stops the execution of the program by the CPU unit 11 and stops or resets the entire system.
  • FIG. 4 shows the processing contents of the exception processing program executed by the CPU unit 11. This processing is executed when an exception processing interrupt signal is output from the error processing unit 17 to the CPU unit 11.
  • the error determination unit 31 calls a subroutine for error determination processing (S11). Then, the error determination unit 31 determines whether the error content is a hard error or a soft error based on the processing result of the error determination process subroutine (S12).
  • the soft error processing unit 32 determines whether the data in which the error is detected is the instruction fetch target data or the operand fetch target data (S13).
  • the soft error processing unit 32 loads the instruction fetch target data indicated by the address stored in the AHR 15A from the external memory 13 when the data in which the error is detected is the target fetch target data. Is overwritten (repaired) (S14). Specifically, a part (base address) for storing information on the top address of the program loaded in the local memory 12 and the top address of the program held in the external memory 13 is used.
  • the soft error processing unit 32 adds the log counter 20 of the error processing unit 17 and outputs the error occurrence address AHR 15A address and the error status “3” in association with each other to the error log memory 19 (S15). Further, the soft error processing unit 32 sets the address stored in the AHR 15A in the return address register 23 set in the PC 22 after the exception processing (S16), and returns from the interrupt processing of the exception processing program. As a result, the CPU unit re-executes the instruction indicated by the address stored in the AHR 15A, and resumes normal program processing from the instruction.
  • the soft error processing unit 32 adds the log counter 20 of the error processing unit 17 and the error status “AHR 15E address and error status“ when the data in which the error is detected is the operand fetch target data. 4 ”is output in association with the error log memory 19 (S17). Further, the soft error processing unit 32 moves the execution to the top address of the program, and re-executes the program including initialization (S18).
  • the hard error processing unit 33 performs the following process.
  • the log counter 20 of the error processing unit 17 is added, and when the data in which the error is detected is the instruction fetch target data, the address of the AHR 15A and the error status “5” are associated and output to the error log memory 19.
  • the data in which the error is detected is the operand fetch target data, the address of the AHR 15E and the error status “5” are associated and output to the error log memory 19 (S19). Then, the hard error processing unit 33 resets or stops the system (S20).
  • the error determination unit 31 writes “1” in all bits of the instruction fetch target data indicated by the address stored in the AHR 15A or the operand fetch target data indicated by the AHR 15E (S21).
  • the error determination unit 31 performs the process for the instruction fetch target data area indicated by the address stored in the AHR 15A. Do.
  • the error determination unit 31 performs processing for each of the data subject to the operand fetch indicated by AHR 15E (hereinafter, the same applies to the entire subroutine). Is). Then, the error determination unit 31 reads the data in the data area where writing has been performed (S22). Further, the error determination unit 31 determines whether or not all of the read data is “1” according to the written value (S23). Then, if all the read data is not “1”, the error determination unit 31 determines the error content as a hard error (S28).
  • the error determination unit 31 now fetches the instruction fetch target data indicated by the address stored in the AHR 15A or the operand fetch indicated by the address stored in the AHR 15E. “0” is written in all the bits of the target data area (S24), and the data in the data area is read (S25). Further, the error determination unit 31 determines whether or not all of the read data is “0” according to the written value (S26). If all the read data is “0”, the error determination unit 31 determines the error content as a soft error (S27). On the other hand, if all the read data is not “0”, the error determination unit 31 determines the error content as a hard error (S28).
  • an error is detected in the data fetched during the execution of the program and the error is not a temporary error, it is a soft error.
  • a hard error is determined.
  • the error is an instruction fetch error
  • the data corresponding to the instruction fetch target data in which the error is detected can be acquired from the external memory 13, and the data is loaded from the external memory 13.
  • the local memory 12 is restored. Then, it is re-executed from the instruction in which the error is detected. Therefore, it is not necessary to stop or reset the system, and the amount of data to be reloaded can be reduced, and the time and load required for error recovery processing can be reduced.
  • the error is an operand fetch error
  • data corresponding to the data of the operand cannot be acquired from the external memory 13.
  • the exception processing program re-executes the program being executed from the top address. For this reason, it is not necessary to stop or reset the system as in the case of instruction fetch, and it is not necessary to load data from an external memory unnecessarily.
  • optimum error handling can be performed within a range in which data inconsistency does not occur depending on the error content and whether the data in which the error is detected is the target data of the instruction fetch or the operand fetch. Made. For this reason, it is possible to reduce the influence on the business or the like due to the recovery processing from the error, and it is possible to realize a system that is strong against the error.
  • the error status according to the error content and whether the data in which the error is detected is the instruction fetch target data or the operand fetch target data is output as an error log in association with the error occurrence address. If such an error log is accumulated, it can be used later for analysis of the cause of a system failure or fault tolerance. Then, by improving the system configuration based on the analysis result, a system that is more resistant to errors can be realized.
  • all programs in the external memory 13 are replaced with the processing of S14 of the soft error processing unit 32 when the data in which the error is detected is the data to be fetched.
  • the local memory 12 may be restored by loading the local memory 12.
  • the processing of S14 is premised on the case where the program loaded in the local memory 12 is completed by one including the subroutine.
  • the address of a program (subroutine, library, etc.) is dynamically determined, so that target data may not be loaded. For this reason, in such an operating environment, the boot loader 14 may be used instead of the process of S14.
  • the boot loader 14 when the program is executed by dynamic linking, when the boot loader 14 is called with the address of the local memory 12 where the error has occurred as an argument, the boot loader 14 corresponds to which program based on the address. Determine whether an error has occurred in the part to be processed. Then, the soft error processing unit 32 reads the program in which the error has occurred from the external memory 13 and overwrites the local memory 12. By doing so, even in a system that supports dynamic linkage, the data in the local memory 12 can be repaired, and an instruction in which an error has been detected can be re-executed to resume normal program processing.
  • the processing of S18 of the soft error processing unit 32 is performed by the program loaded in the local memory 12. It is assumed that it is being executed alone, not as part of a job.
  • the program in which an error is detected corresponds to a process that forms part of a job in which multiple processes operate in cooperation, the entire job can be initialized even if the program is initialized and re-executed. Data inconsistencies can occur.
  • FIG. 6 shows an overall configuration of a computer system 50 according to the second embodiment. This system adopts Harvard architecture and realizes pipeline processing. As shown in FIG.
  • a CPU unit 51 a CPU unit 51, an instruction cache memory 52, a data cache memory 53, a main memory 54, an external memory 55, a boot loader 56, AHR 57A to AHR 57E, a parity checker 58A and a parity checker 58B, and an error processing unit 59 , MPX 60A, MPX 60B and error log memory 61.
  • Each component is connected by a bus as shown in FIG.
  • the CPU unit 51 includes an instruction fetch unit, a decode unit, an arithmetic unit, a control unit, and various registers, and has a function as a CPU core.
  • the PC 64 among the components of the CPU unit 51, the PC 64, the return address register 65, the operand register 66, the address of the instruction set in the PC 64 according to the execution status of the instruction, or the address output from the MPX 60A is shown.
  • the instruction cache memory 52 stores instruction data
  • the data cache memory 53 stores operand data.
  • This system employs a write-through method in which data to be written to the data cache memory 53 is also written to the main memory 54 in real time.
  • the instruction cache memory 52 and the data cache memory 53 correspond to the second storage unit.
  • the main memory 54 stores a program loaded from the external memory 55 by the CPU.
  • the data stored in the main memory 54 is further loaded (copied) into the instruction cache memory 52 and the data cache memory 53 by the CPU.
  • the CPU unit 51 accesses the instruction cache memory 52 and the data cache memory 53, fetches instructions, and performs processing.
  • the main memory 54 corresponds to the first storage unit.
  • AHR 57A to AHR 57D are registers for storing addresses of target data for instruction fetching among data fetched from the local memory 12 by the CPU unit 51.
  • the AHR 57E is a register that stores an address of operand fetch target data.
  • AHR 57A to AHR 57D correspond to the first register
  • AHR 57E corresponds to the second register.
  • the parity checker 58A detects whether or not there is an error in the data fetched from the instruction cache memory 52 by the CPU unit 51 using a parity check.
  • the parity checker 58B detects whether or not the data fetched by the operand from the data cache memory 53 by the CPU unit 51 has an error by a parity check.
  • the error processing unit 59 is configured to include a logic circuit, and receives an error detection signal output from the parity checker 58A and the parity checker 58B and an instruction operand identification signal output from the CPU unit 51, and stores addresses in the AHR 57A to AHR 57E.
  • a clock stop signal for stopping the clock to be output is output.
  • the error processing unit 59 determines that the address stored in the AHR 57A is the target data for the operand fetch when the data in which the error is detected is the target data for the instruction fetch according to the instruction operand identification signal. Outputs an AHR selection signal that causes the MPX 60A to select the address stored in the AHR 57D. Further, in response to the instruction operand identification signal, the error processing unit 59 uses the address stored in the AHR 57A as the operand fetch target data if the data in which the error is detected is the target fetch target data. Outputs an AHR selection signal that causes the MPX 60B to select the address stored in the AHR 57E.
  • the error processing unit 59 includes a log counter 62 that counts the number of error occurrences, and an error status register 63 that temporarily stores an error content and an error status corresponding to a fetch target. Then, the error processing unit 59 generates an error status as an output to the error log memory 61 based on the error detection signal and the instruction operand identification signal, and temporarily holds it in the error status register 63. Further, the error processing unit 59 generates a write signal for writing the error status in the error log memory 61. When this write signal is output, the address output by the MPX 60B is output to the error log memory 61 as an error occurrence address, and an error status is output to the error log memory 61 in association therewith.
  • the error processing unit 59 outputs a PC set signal that causes the PC 64 to set the address output by the MPX 60A as a control signal to the CPU unit 51. Further, the error processing unit 59 outputs an exception interrupt signal for starting the processing of the exception processing program to the CPU unit 51 when a parity error is detected again in the re-execution. Further, the error processing unit 59 outputs a control signal for changing the value of the return address register 65 as a stack to be returned to the PC 64 to the address output by the MPX 60A when the execution of the exception processing program is completed.
  • the boot loader 56 and the error log memory 61 have the same functions as the boot loader 14 and the error log memory 61 in the first embodiment, and thus description thereof is omitted.
  • the program instruction executed in the system of the second embodiment is a load / store instruction, and is assumed to be processed as follows. That is, for each instruction, IF (instruction fetch), RF (instruction decode), EX (instruction execution), MEM (operand fetch), and WB (write back) are performed. Note that the number of registers (four) of AHR 57A to AHR 57D coincides with the number of processing stages (four) from IF to MEM in the instruction processed by this system.
  • a program stored in the external memory 55 is loaded into the main memory 54, and further, instruction data is loaded (copied) into the instruction cache memory 52 and operand data is loaded into the data cache memory 53, respectively.
  • the CPU unit 51 requests the instruction cache memory 52 for the data at the address set in the PC 64 and the data cache memory 53 for the data at the address of the operand register 66 when executing the program instruction.
  • the CPU 51 sequentially executes instructions while fetching data from each of the instruction cache memory 52 and the data cache memory 53.
  • the CPU 51 performs control so that the address fetched from the instruction cache memory 52 and the data cache memory 53 is stored in the AHR 57A and the address fetched in the operand fetch is stored in the AHR 57E. To do. Further, the CPU 51 performs control so that the stored addresses are sequentially moved in the order of AHR 57A, AHR 57B, AHR 57C, and AHR 57D each time the clock advances and the next instruction is fetched. At this time, the value set in the AHR 57D is discarded.
  • the error processing unit 59 When receiving the error detection signal from the parity checker 58A or the parity checker 58B, the error processing unit 59 outputs a clock stop signal and holds the addresses stored in the AHR 57A to AHR 57E (S101). Further, the error processing unit 59 determines whether the fetch at the time of error occurrence is an instruction fetch or an operand fetch (S102).
  • Such a determination can be made based on an instruction operand identification signal received from the CPU unit 51, and can be made based on whether the error detection signal is received from either the parity checker 58A or the parity checker 58B. If the result of the determination is that the fetch at the time of the error is an instruction fetch, the address stored in the AHR 57A is set in the PC 64, and re-executed from the instruction indicated by the address (S103). On the other hand, if the fetch at the time of error occurrence is an operand fetch, the address stored in the AHR 57D is set in the PC 64 and re-executed from the instruction indicated by the address (S104).
  • the error processing unit 59 of the second embodiment when the error content in the instruction fetch is a temporary error, the interrupt processing is not generated and the process is performed. Delay can be minimized.
  • the system according to the second embodiment performs pipeline processing, and executes instructions in the processing stage of IF-RF-EX-MEM-WB as described above. For this reason, when the data in which the error is detected is the target data for the operand fetch (MEM), at the time when the error is detected, the CPU unit 51 has already executed another subsequent instruction in parallel. Yes. For this reason, the address stored in the AHR 57A is an address of an instruction different from the instruction in which the operand fetch has occurred.
  • the fetched address moves in order from AHR 57A to AHR 57D every time a new instruction is fetched. Therefore, the address of the instruction fetch target data in the instruction in which an error has occurred in the operand fetch is the address of the AHR 57D in which the address of the instruction executed three clocks before is stored.
  • the error processing unit 59 when an error occurs in operand fetch, the instruction at the address of the AHR 57D is re-executed. For this reason, even if an error occurs in the operand fetch, the instruction in which the error has occurred can be re-executed from the instruction fetch.
  • the exception handling program in the system of the second embodiment also includes an error determination unit 31, a soft error processing unit 32, and a hard error processing unit 33, as in the first embodiment.
  • the functional block diagram of the exception handling program is the same as that of the first embodiment, its illustration and description are omitted.
  • FIG. 8 shows the processing contents of the exception processing program executed by the CPU unit 51. Only parts different from the processing in the first embodiment will be described.
  • the soft error processing unit 32 performs the process of S201 instead of S14 in the process of the first embodiment shown in FIG. That is, the soft error processing unit 32 loads, from the main memory 54, the instruction fetch target data indicated by the address stored in the AHR 57A in which the address of the earliest instruction fetch target data is stored among the AHR 57A to AHR 57D.
  • the instruction cache memory 52 is repaired (S201). Moreover, it replaces with S16 and performs the process of S202. That is, the soft error processing unit 32 sets the address stored in the AHR 57A in the return address register 65 set in the PC 22 after the exception processing (S202).
  • the soft error processing unit 32 performs the processing in S202 instead of S18 in the processing in the first embodiment shown in FIG. That is, before S17, the operand fetch target data indicated by the address stored in the AHR 57E is loaded from the main memory 54, and the data cache memory 53 is restored (S203). Further, instead of S18, the soft error processing unit 32 stores the address of the target data of the earliest instruction fetch among the AHR 57A to AHR 57D in the return address register 65 set in the PC 64 after the exception processing. The stored address is set and the process returns from the interrupt process of the exception handling program (S204). As a result, the CPU unit re-executes the instruction indicated by the address stored in the AHR 57D, and resumes normal program processing from the instruction.
  • the content of the error determination process subroutine in the error determination unit 31 is the same as that of the first embodiment shown in FIG. 5 except for the following points. That is, in the second embodiment, writing and reading of bits are performed for the instruction cache memory 52 or the data cache memory 53 instead of the local memory 12. According to the processing of such an exception handling program, as in the first embodiment, if an error is detected in the data fetched during the execution of the program and the error is not a temporary error, a soft error or hardware It is determined whether there is an error. In the case of a soft error, if the error is an instruction fetch error, the data corresponding to the target data of the instruction fetch can be acquired from the main memory 54.
  • the data is loaded from the main memory 54 and the instruction cache memory 52 is loaded. Is repaired and re-executed from the instruction where the error occurred. For this reason, it is possible to reduce the return and delay of the process as much as possible, and to reduce the influence on the business by the occurrence of the error.
  • the system of the second embodiment employs the Harvard architecture and is a write-through method, so that the data contents of the data cache memory 53 and the main memory 54 can be synchronized. ing. Therefore, data corresponding to the operand data in which an error has occurred can be acquired from the main memory 54.
  • the data is loaded from the main memory 54, the data cache memory 53 is repaired, and the data is re-executed from the instruction in which the error is detected. Therefore, even in the case of an error in operand fetch target data, the processing can be continued as in the case of instruction fetch.
  • the soft error processing unit 32 in the exception processing program may invalidate the entire instruction cache memory 52 instead of the processing of S201.
  • the reason why the entire instruction cache memory 52 may be invalidated in this way is as follows. In other words, if the entire cache is invalidated, a cache miss occurs when returning from the interrupt processing of the exception processing program, the main memory 54 is reread to the entire cache, and the data in which the parity error has occurred is also repaired. This is because that.
  • the processing of S202 assumes that the write-through method is adopted, but in the case of the write-back method in which data is written to the main memory 54 only when data in the data cache memory 53 needs to be saved.
  • the data in the data cache memory 53 and the main memory 54 are not necessarily synchronized.
  • the soft error processing unit 32 sets the program at the head address instead of the processing of S203 and S204. Execution may be moved and re-executed from program initialization.
  • the soft error processing unit 32 discards all data related to the job and executes the job instead of the processing of S203 and S204. You may cancel.
  • a return code indicating that the job execution has been stopped for the higher-order job may be returned to the higher-order job. In this way, even in an operating environment where the job system is adopted, the processing can be resumed without stopping the system and avoiding data inconsistency.
  • the AHR for storing the instruction fetch address is composed of four AHR 57A to AHR 57D. Has been. However, if the number of AHRs is changed according to the stage at which the operand fetch is performed from the instruction fetch, the instructions executed in the processing stages of other patterns can be similarly handled. Then, as an instruction address to be re-executed when an error occurs in operand fetch, the address may be acquired from the AHR in which the address of the target data for the first instruction fetch is stored.
  • FIG. 9 is a timing chart of a temporary error occurrence case (at the time of instruction fetch).
  • FIG. 9 shows a state in which program instructions are sequentially executed by pipeline processing.
  • FIG. 9 also shows the PC64, AHR 57A, parity error detection signal (output from the parity checker 58A), clock stop signal, PC64 set signal, AHR selection signal, exception processing interrupt signal, error during execution of these instructions.
  • the status, the status of the write signal to the log counter 62 and the error log memory 61 are shown. Note that each timing (Tn) of the clock is shown at the top of FIG.
  • An for example, A1 in the case of the instruction 1).
  • the CPU unit 51 sets the address A1 of the instruction 1 in the PC 64 and fetches the instruction 1 (T1). Further, the CPU unit 51 sets the address A2 of the next instruction 2 in the PC 64 and fetches the instruction 2 (T2). Further, the CPU unit 51 sets the value of the PC 64 in the AHR 57A every time the instruction fetch is completed. At this time, since the value of PC64 is set to AHR57A with a delay of 1 clock (the same applies hereinafter), memory address A1 of instruction 1 is set in AHR57A and memory address A2 of instruction 2 is set in T3. .
  • the parity checker 58A performs a parity check of the target data for the instruction fetch.
  • a parity error is detected in the instruction fetch of the instruction 2 (T2).
  • the parity checker 58A outputs a parity error detection signal to the error processing unit 59, and the error processing unit 59 transmits a clock stop signal for stopping a clock for transmitting an address to each AHR (T3).
  • the value of AHR 57A is held with A2 set.
  • the CPU unit 51 transmits to the error processing unit 59 an instruction operand identification signal indicating that the data in which the error is detected is the data to be fetched.
  • the error processing unit 59 transmits an AHR selection signal for selecting the AHR 57A to the MPX 60A and MPX 60B based on the instruction operand identification signal (since the AHR selection signal normally indicates the selection state of the AHR 57A). In this case, there is no change in the signal).
  • the MPX 60B selects and outputs the value of AHR 57A based on this AHR selection signal.
  • the CPU unit 51 resets the address A2 of the AHR 57A to the PC 64 again, and executes the instruction 2 again (T4). If no parity error is detected in the instruction fetch in this re-execution, the error processing unit 59 stops outputting the clock stop signal (T5).
  • the error processing unit 59 sets “1” as the error status in the error status register 63. Then, the error processing unit 59 outputs a write signal to the error log memory 61, writes the address A2 of the AHR 57A and the error status in the error log memory 61 (T5), and counts up the log counter 62 (T6). ). Further, the CPU section 51 fetches the instruction 3 and subsequent instructions as usual, and resumes normal processing (T5 ⁇ ).
  • FIG. 10 shows a timing chart of a temporary error occurrence case (at the time of operand fetch).
  • FIG. 10 shows a state in which program instructions are sequentially executed by pipeline processing, as in FIG. In addition to FIG. 9, FIG. 10 also shows the states of AHR57D and AHR57E. Further, instead of the parity checker 58A, a parity error signal output by the parity checker 58B is shown. Further, the address of the target data for operand fetch of the nth instruction n is denoted as AnOP (for example, A1OP in the case of instruction 1).
  • AnOP for example, A1OP in the case of instruction 1).
  • the CPU unit 51 sets the address A1 of the instruction 1 in the PC 64 and fetches the instruction 1 (T1). Thereafter, the subsequent instructions are similarly fetched (T2 ⁇ ). In addition, every time the instruction fetch is completed, the CPU unit 51 sets the value of the PC 64 in the AHR 57A and moves the stored addresses in the order of AHR 57A, AHR 57B, AHR 57C, and AHR 57D. At this time, the address of the instruction executed three times before the instruction of the address set in AHR 57A is set in AHR 57D.
  • the parity checker 58B performs a parity check of the data subject to operand fetch.
  • a parity error is detected in the operand fetch of the instruction 2 (T5).
  • the parity checker 58B outputs a parity error detection signal to the error processing unit 59, and the error processing unit 59 transmits a clock stop signal for stopping a clock for transmitting an address to each AHR (T6).
  • A5 is held in AHR57A, A2 in AHR57D, and A2OP in AHR57E.
  • the CPU unit 51 transmits an instruction operand identification signal indicating that the data in which the error has been detected is the operand fetch target data to the error processing unit 59 (T6). Then, based on the signal, the error processing unit 59 transmits an AHR selection signal for selecting the AHR 57D to the MPX 60A and an AHR selection signal for selecting the AHR 57E to the MPX 60B. The MPX 60A selects and outputs the address of the AHR 57D based on this AHR selection signal. Then, the CPU unit 51 resets the address A2 of the AHR 57D to the PC 64 again, and executes the instruction 2 again (T7).
  • the error processing unit 59 stops outputting the clock stop signal (T11). On the other hand, at this time, the error processing unit 59 sets “2” as the error status in the error status register 63. The error processing unit 59 outputs a write signal to the error log memory 61, writes the address A2OP of the AHR 57E and the error status in the error log memory 61 (T11), and counts up the log counter 62 (T12). ). On the other hand, in the CPU 51, instruction fetch after the subsequent instruction 3 is performed by pipeline processing as usual, and normal processing is resumed (T8-).
  • FIG. 11 is a timing chart of a soft error occurrence case (at the time of instruction fetch).
  • FIG. 11 shows a state in which program instructions are sequentially executed by pipeline processing, as in FIG.
  • T1 to T3 in this specific example are the same as those in the case of FIG.
  • the address A2 of the AHR 57A is set again in the PC 64, and the instruction 2 is re-executed (T4).
  • T4 the address A2 of the AHR 57A
  • the instruction 2 is re-executed
  • T4 the address A2 of the AHR 57A
  • the instruction 2 is re-executed
  • T4 the parity error is detected again in the instruction fetch in this re-execution (T4)
  • the parity checker again outputs a parity error detection signal to the error processing unit 59 (T5).
  • the error processing unit 59 outputs an exception processing interrupt signal to the CPU unit 51 (T6).
  • the CPU unit 51 starts interrupt processing of the exception processing program.
  • the soft error processing unit 32 loads the instruction fetch target data indicated by the address A2 of the AHR 57A from the main memory 54 and overwrites the instruction cache memory 52. At this time, the soft error processing unit 32 sets “3” as the error status in the error status register 63. Then, the soft error processing unit 32 writes the address A2 of the AHR 57A and the error status in the error log memory 61, and counts up the log counter 62.
  • the soft error processing unit 32 sets the address A2 of the AHR 57A as the address of the return address register 65 set in the PC 64 after exception processing, and executes a return instruction to return from exception processing ( ⁇ Tn + 3). Then, the CPU unit 51 resumes normal processing from the instruction 2 indicated by A2.
  • FIG. 12 is a timing chart of a soft error occurrence case (at the time of operand fetch). In addition, this case is based on the premise that the program is executed not alone as a part of the job but also in an operating environment in which the write-through method is adopted for writing to the main memory 54.
  • FIG. 12 shows a state in which program instructions are sequentially executed by pipeline processing, as in FIG.
  • T1 to T6 in this specific example are the same as those in FIG. 10, their illustration and description are omitted.
  • the CPU unit 51 resets the address A2 of the AHR 57D to the PC 64 again, and re-executes the instruction 2 (T7).
  • a parity error is detected again in the operand fetch in this re-execution (T10), and the parity checker again outputs a parity error detection signal to the error processing unit 59 (T11).
  • the error processing unit 59 outputs an exception processing interrupt signal to the CPU unit 51 (T12).
  • the CPU unit 51 starts interrupt processing of the exception processing program.
  • the soft error processing unit 32 loads the operand fetch target data indicated by A2OP of the AHR 57E from the main memory 54 and overwrites the data cache memory 53. At this time, the soft error processing unit 32 sets “4” as the error status in the error status register 63. Then, the soft error processing unit 32 writes the address A2OP of the AHR 57E and the error status in the error log memory 61, and counts up the log counter 62.
  • the soft error processing unit 32 sets the address A2 of the AHR 57D as the address of the return address register 65 set in the PC 64 after exception processing, and executes a return instruction to return from exception processing ( ⁇ Tn + 3). Then, the CPU unit 51 resumes normal processing from the instruction 2 indicated by A2.
  • FIG. 13 is a timing chart of a soft error occurrence case (in operand fetch). Further, this specific example is based on the assumption that the program is executed as a process constituting a part of a job, and is realized in an operating environment that employs a write-back method in writing to the main memory 54. .
  • FIG. 13 shows a state in which program instructions are sequentially executed by pipeline processing, as in FIG.
  • T1 to T6 in this specific example are the same as those in FIG.
  • T7 to T12 in this specific example are the same as those in FIG.
  • the CPU unit 51 starts interrupt processing of the exception processing program.
  • the error determination result in the exception handling program is a soft error.
  • the soft error processing unit 32 sets “4” as the error status in the error status register 63.
  • the soft error processing unit 32 writes the address A2OP of the AHR 57E and the error status in the error log memory 61, and counts up the log counter 62.
  • the program since the program is executed as a process constituting a part of the job and adopts the write-back method, all the data of the job being executed is discarded, and the job Stop execution.
  • the soft error processing unit 32 executes a return instruction to return from the exception processing ( ⁇ Tn + 3) and returns a return code indicating that the job execution has been stopped to the upper job. Then, the CPU unit 51 performs normal processing from B1 which is an instruction of a higher-order job.
  • FIG. 14 is a timing chart of a hard error occurrence case.
  • FIG. 14 shows a state in which program instructions are sequentially executed by pipeline processing, as in FIG.
  • T1 and T2 in this specific example are the same as those in FIG.
  • T3 to T6 in this specific example are the same as those in FIG.
  • the CPU unit 51 starts interrupt processing of the exception processing program.
  • the error determination result in the exception handling program is a hard error.
  • the hardware error processing unit 33 sets “5” as the error status in the error status register 63.
  • the hard error processing unit 33 writes the address A2 of the AHR 57A and the error status in the error log memory 61, and counts up the log counter 62.
  • the hardware error processing unit 33 executes a system stop command ( ⁇ Tn + 3).
  • the first and second embodiments have been described on the assumption that no ECC is provided. However, even in a system having an ECC, the same can be applied when a 2-bit error occurs.
  • the function realized by the error processing unit may be realized by executing a program by the CPU unit and controlling each component, like the exception processing program.
  • the program that realizes the functions realized by the error processing unit and the exception handling program is recorded on a computer-readable recording medium such as a magnetic tape, a magnetic disk, a flash memory, a CD-ROM, or a DVD-ROM. If this is done, the program can be distributed to the market. A person who acquires such a recording medium can easily construct a computer system that realizes the above-described error handling by using a general computer system. [Example 3] Next, an embodiment including a failure cause investigation mechanism corresponding to the environment and situation in which an error occurs in the computer system that realizes the above error handling will be described.
  • FIG. 15 shows the overall configuration of the computer system 100 according to the third embodiment.
  • this system includes a CPU unit 101, a pattern generator 102, a local memory 103, a voltage control register 104, a voltage controlled oscillator (VCXO: VoltageVolControlled ⁇ ⁇ ⁇ Xtal Oscillator) 105, and a power source 106.
  • VXO VoltageVolControlled ⁇ ⁇ ⁇ Xtal Oscillator
  • FIG. 15 shows the overall configuration of the computer system 100 according to the third embodiment.
  • this system includes a CPU unit 101, a pattern generator 102, a local memory 103, a voltage control register 104, a voltage controlled oscillator (VCXO: VoltageVolControlled ⁇ ⁇ ⁇ Xtal Oscillator) 105, and a power source 106.
  • VXO VoltageVolControlled ⁇ ⁇ ⁇ Xtal Oscillator
  • the pattern generator 102 is a test pattern generation circuit that controls circuits for performing tests such as a power supply voltage margin test, a timing margin test, and a simultaneous switching noise test.
  • a parity error is detected in a parity checker (not shown) during normal operation, the CPU unit 101 transfers control to these test circuits.
  • the power supply voltage margin test is performed by changing a voltage control signal for the power supply circuit via the voltage control register 104.
  • the voltage control signal is a signal for setting a power supply voltage specific to the IC chip. In this system, this signal is used to generate a voltage fluctuation of 10% or more with respect to the power supply voltage originally required by the system. Thus, a power supply voltage margin test is performed.
  • the timing margin test is performed by inserting a variable delay circuit into the bus connecting the CPU unit 101 and the local memory 103 and performing the test while controlling the delay value by the pattern generator 102.
  • the simultaneous switching noise test can be performed by repeating a pattern in which all “1” or all “0” are set for the address, data, and control signal in the test method of the pattern generator 102.
  • the failure cause investigation mechanism is directly incorporated into a normally operating system. Then, the failure cause investigation mechanism shares and uses resources (particularly MPX and data register) in the CPU that executes the general program in the test for error cause investigation. As a result, it is possible to perform a test in a state closer to the state where the system is actually operating, and it is possible to accurately perform the cause analysis of the failure.

Abstract

 外部メモリ13からローカルメモリ12へとプログラムをロードして命令を実行するCPU11によるローカルメモリ12からの命令フェッチの対象データのアドレスを、AHR15Aに格納する。また、パリティチェッカ16において、ローカルメモリ12からの命令フェッチ又はオペランドフェッチの対象データにエラーが検出されると、AHR15Aに格納されたアドレスで示される命令を再実行する。その結果、再度エラーが検出されたときには、エラー内容がソフトエラーかハードエラーかを判定し、エラー内容がソフトエラーであり、かつ、命令フェッチの対象データでエラーが検出されたときには、AHR15Aに格納されたアドレスで示される命令フェッチの対象データを外部メモリ13からロードしてローカルメモリ12のデータを修復し、命令を再実行する。これにより、パリティエラーが生じたときに、エラー内容に応じた最小限のエラー対処が実現される。

Description

情報処理装置、情報処理方法及び情報処理プログラム
 本発明は、プログラムの実行時にエラーが発生したときに、エラーからの復旧処理を行う技術に関する。
 一般に、コンピュータのCPU(Central Processing Unit)におけるプログラム実行時においては、キャッシュやメモリからフェッチしたデータのエラーチェックが行われる。そして、エラーチェックにおいては、様々な要因により、フェッチしたデータにエラーが検出されることがある。かかるエラーが検出されたとき、従来では、処理の続行が不可能であるとして、処理中のデータを全て破棄し、システムを停止させていた。なお、ECC(Error Correction Code)を採用する一部のシステムでは、データの修正を行うこと自体は可能だが、必要とする冗長ビットが多く、その機構が複雑かつ高コストであった。
 そして、上述のようにシステムを停止させると、システム障害による業務等への影響が大きい。このため、システムの停止を回避しつつエラー復旧処理を行うべく、次のような技術が提案されている。即ち、エラーが検出された場合に、割込み処理としてエラー復旧処理を行い、エラーが発生したメモリを修復した上で、割込み処理から復帰させる。また、次のような技術も提案されている。即ち、マイクロプログラムを、外部記憶装置ではなく、高速にアクセスすることが可能なRAM(Random Access Memory)に格納しておき、RAMからマイクロプログラム制御メモリにプログラムをロードして実行する。そして、マイクロプログラム制御メモリにエラーが生じた時には、プログラムの実行を停止し、RAMから当該プログラムをロードして、メモリ上のデータ修復を行う。
 ここで、メモリからフェッチしたデータにおいて検出されるエラー内容には、様々な種類がある。例えば、メモリ自体がハードエラーを起こしている場合がある。また、メモリがα線や宇宙線の照射を受けることによりメモリ上のデータに1ビットの誤りが発生するソフトエラーもある。さらに、一時的なエラー、例えば、メモリからのフェッチ時に発生するノイズに起因するビット反転等があり、かかるエラーが生じる場合、メモリ上のデータ自体が破壊されているわけではない。このため、メモリを修復するまでもなく、当該命令の再実行をするだけで、正常なデータを読出すことができることが多い。
特開平6-332736号公報 特開平7-219794号公報 特開平2-148343号公報
 しかし、上述のような従来技術では、エラーが発生したときに、エラー内容に関わらず同様の対処を行っていた。このため、本来であればより迅速にエラーから復旧できるようなエラー内容であっても、そのエラー内容に応じた適切な対処がなされていなかった。
 以上のような問題点に鑑み、命令の実行においてフェッチされたデータにエラーが生じたときに、エラー内容を判定し、エラー内容に応じた最小限のエラー対処を行うようにすることで、エラー発生時における迅速な復旧を可能にすることを目的とする。
 開示のシステムにおいては、第1記憶部から第2記憶部へとプログラムをロードして命令を実行するCPUによる、第2記憶部からの命令フェッチの対象データのアドレスを、レジスタに格納する。また、CPUによる第2記憶部からの命令フェッチ又はオペランドフェッチの対象データのエラーを検出する。さらに、第2記憶部からの命令フェッチ又はオペランドフェッチの対象データにおいてエラーが検出されると、レジスタのアドレスをホールドする。そして、当該レジスタに格納されたアドレスで示される命令をCPUに再実行させる。
 また、CPUにおいて命令が再実行された結果、第2記憶部からの命令フェッチ又はオペランドフェッチの対象データで再度エラーが検出されたときに、エラー内容がソフトエラー又はハードエラーのいずれであるかを判定する。さらに、エラー内容がソフトエラーと判定され、かつ、エラーが検出されたデータが命令フェッチの対象データであったとき、次の処理を行う。即ち、少なくともレジスタに格納されたアドレスで示される命令フェッチの対象データを第1記憶部からロードして第2記憶部のデータを修復し、当該アドレスで示される命令をCPUにさらに再実行させる。
 開示のシステムによれば、CPUによるフェッチにおいてエラーが検出されたときに、まず再実行を行うため、読込みエラーのような一時的なエラーの発生時には、再実行に続けてそのまま通常処理に復帰させることができる。一方、エラー内容が一時的なエラーでない場合でも、ソフトエラーであれば、データ矛盾が生じない範囲内において、処理の戻りや遅延を最小限に留めることができる。このため、エラーに対する耐性の強いシステムを実現することができる。
実施例1におけるシステムの全体構成図である。 実施例1におけるエラー処理部により実現される動作内容のフローチャートである。 実施例1における例外処理プログラムの機能ブロック図である。 実施例1における例外処理プログラムの処理内容のフローチャートである。 実施例1におけるエラー判定部におけるエラー判定処理のサブルーチンの処理内容のフローチャートである。 実施例2におけるシステムの全体構成図である。 実施例2におけるエラー処理部により実現される動作内容のフローチャートである。 実施例2における例外処理プログラムの処理内容のフローチャートである。 実施例2における一時的なエラー発生ケース(命令フェッチ時)のタイミングチャートである。 実施例2における一時的なエラー発生ケース(オペランドフェッチ時)のタイミングチャートである。 実施例2におけるソフトエラー発生ケース(命令フェッチ時)のタイミングチャートである。 実施例2におけるソフトエラー発生ケース(オペランドフェッチ時)のタイミングチャートである。 実施例2におけるソフトエラー発生ケース(オペランドフェッチ時)のタイミングチャートである。 実施例2におけるハードエラー発生ケースのタイミングチャートである。 実施例3におけるシステムの全体構成図である。
符号の説明
  10 コンピュータシステム
  11 CPU部
  12 ローカルメモリ
  13 外部メモリ
  14 ブートローダ
  15A AHR
  15B AHR
  16 パリティチェッカ
  17 エラー処理部
  18 MPX
  19 エラーログメモリ
  20 ログカウンタ
  21 エラーステータスレジスタ
  22 PC
  23 復帰アドレスレジスタ
  24 オペランドレジスタ
  25 MPX
  31 エラー判定部
  32 ソフトエラー処理部
  33 ハードエラー処理部
  50 コンピュータシステム
  51 CPU部
  52 命令キャッシュメモリ
  53 データキャッシュメモリ
  54 メインメモリ
  55 外部メモリ
  56 ブートローダ
  57A AHR
  57B AHR
  57C AHR
  57D AHR
  57E AHR
  58A パリティチェッカ
  58B パリティチェッカ
  59 エラー処理部
  60A MPX
  60B MPX
  61 エラーログメモリ
  62 ログカウンタ
  63 エラーステータスレジスタ
  64 PC
  65 復帰アドレスレジスタ
  66 オペランドレジスタ
  67A MPX
  67B MPX
  100 コンピュータシステム
  101 CPU部
  102 パターンジェネレータ
  103 ローカルメモリ
  104 電圧制御レジスタ
  105 電圧制御発振器
  106 電源
  107 PC
  108 オペランドレジスタ
  109 MPX
  110 データレジスタ
[実施例1]
 図1は、実施例1におけるコンピュータシステム(情報処理装置)10の全体構成を示す。本システムは、図1に示すように、CPU(Central Processing Unit)部11、ローカルメモリ12、外部メモリ13、ブートローダ14、アドレスホールドレジスタ(以下、AHRという)15A、AHR15E、パリティチェッカ16、エラー処理部17、マルチプレクサ(以下、MPXという)18及びエラーログメモリ19を含む。そして、各構成要素は、図1に示すようにバスで接続されている。
 CPU部11は、命令フェッチユニット、デコードユニット、演算ユニット、コントロールユニット、各種レジスタ等を含み、CPUコアとしての機能を持つ。図1では特に、CPU部11の構成要素のうち、プログラムカウンタ(以下、PCという)22、例外処理プログラムの割込処理から復帰するときにおける実行アドレスが設定される復帰アドレスレジスタ23、オペランドレジスタ24、及び命令の実行状況に応じてPC22にセットされた命令のアドレス又はオペランドレジスタ24にセットされたオペランドのアドレスのいずれかを選択して出力するMPX25を図示している。
 ローカルメモリ12には、CPUにより外部メモリ13からロードされたプログラムが格納される。後述する例外処理プログラムが実行されるときも同様に、当該ローカルメモリ12に対して例外処理プログラムがロードされ、格納される。一方、外部メモリ13は、ハードディスク等の外部ストレージである。なお、本実施例では、外部メモリ13が第1記憶部に相当し、ローカルメモリ12が第2記憶部に相当する。
 ブートローダ14は、オペレーティングシステム(以下、OSという)を起動するためのプログラムを含む。
 AHR15Aは、CPU部11がローカルメモリ12からフェッチする命令の構成要素うち、命令フェッチの対象データのアドレスを格納するレジスタである。一方、AHR15Eは、オペランドフェッチの対象データのアドレスを格納するレジスタである。なお、AHR15Aが第1レジスタ、AHR15Eが第2レジスタに相当する。
 パリティチェッカ16は、CPU部11がメモリから命令フェッチ及びオペランドフェッチしたデータにエラーがあるか否かをパリティチェックにより検出する。
 エラー処理部17は、論理回路を含んで構成され、パリティチェッカ16が出力するエラー検出信号、及びCPU部11が出力する命令オペランド識別信号(エラー発生時のフェッチ対象が命令又はオペランドのいずれであったかを識別する信号)を入力として、AHR15A及びAHR15Eへアドレスを格納するためのクロックを停止させるクロック停止(HALT)信号を出力する。また、エラー処理部17は、命令オペランド識別信号に応じて、エラー発生時のフェッチが命令フェッチであった場合はAHR15Aに格納されたアドレスを、オペランドフェッチであった場合はAHR15Eに格納されたアドレスをMPX18に選択させるAHR選択信号を出力する。さらに、エラー処理部17は、エラー発生回数をカウントするログカウンタ20及びエラー内容及びフェッチ対象に応じたエラーステータスを一時的に格納するエラーステータスレジスタ21を含む。そして、エラー処理部17は、エラー検出信号及び命令オペランド識別信号に基づいて、エラーログメモリ19への出力としてのエラーステータスを生成し、エラーステータスレジスタ21に一時的に保持する。また、エラー処理部17は、エラーステータスをログメモリに書き込む書込信号を生成する。この書込信号が出力されると、MPX18の出力するアドレスが、エラー発生アドレスとしてエラーログメモリ19へ出力されるとともに、これに関連付けて、エラーステータスがエラーログメモリ19に出力される。また、エラー処理部17は、CPU部11への制御信号として、MPX18の出力するアドレスをPC22にセットさせるPCセット信号を出力する。さらに、エラー処理部17は、再実行において再度パリティエラーが検出されたときに、例外処理プログラムの実行を開始させる例外割込み信号をCPU部11に対して出力する。また、エラー処理部17は、例外処理プログラムの実行終了時にPC22に戻されるべきスタックとしての復帰アドレスレジスタ23の値をMPX18の出力するアドレスに変更させる制御信号をCPU部11に対して出力する。
 エラーログメモリ19は、不揮発性メモリや電源バックアップ機能を備えたSRAM(Static Random Access Memory)であり、エラー処理部17により、エラー発生アドレス、及びエラー内容を示すエラーステータス等が記録される。
 ここで、実施例1のシステムにおいて一般プログラムが実行されるときの通常時の動作について説明する。まず、CPU部11は、外部メモリ13に格納されたプログラムをローカルメモリ12にロードする。そして、CPU部11は、PC22にセットされたアドレスの命令を実行する。このとき、CPU部11は、PC22に格納されたアドレスまたはオペランドレジスタ24に格納されたアドレスをMPX25により選択しつつ当該アドレスのデータをローカルメモリ12に要求し、データをフェッチして順次命令を実行する。また、このとき、CPU部11は、命令フェッチ時のアドレスがAHR15Aに、オペランドフェッチ時のアドレスがAHR15Eに夫々格納されるように制御する。
 次に、エラー処理部17により実現される動作内容について、図2を用いて説明する。
 エラー処理部17は、パリティチェッカ16からエラー検出信号を受信すると、クロック停止信号を出力し、AHR15A及びAHR15Eに格納されたアドレスをホールドする(S1)。そして、エラー処理部17は、MPX18に対してAHR15Aを選択させるAHR選択信号を出力する一方、CPU部11に対してMPX18の出力アドレスをPC22にセットさせるPCセット信号を出力する。一方、PCセット信号を受信したCPU部11は、MPX18の出力アドレス(AHR15Aのアドレス)をPC22にセットし、当該アドレスで示される命令から再実行する(S2)。ここで、再実行においてパリティチェッカ16から再度エラー検出信号を受信したときには(S3)、エラー処理部17は、CPU部11に対して例外処理割込み信号を出力し、CPU部では、例外処理プログラムを実行する。一方、再実行においてパリティエラーが発生しなかったときであって(S3)、CPU部11から受信した命令オペランド識別信号が命令フェッチであった場合には(S4)、エラー処理部17は、次の処理を行う。即ち、ログカウンタ20を加算し、エラー発生アドレスであるAHR15Aのアドレス及びエラーステータス「1」を関連付けてエラーログメモリ19に出力し(S5)、通常処理を再開する。また、CPU部11から受信した命令オペランド識別信号がオペランドフェッチであった場合には(S4)、エラー処理部17は、ログカウンタ20を加算し、エラー発生アドレスであるAHR15Eのアドレス及びエラーステータス「2」を関連付けてエラーログメモリ19に出力する(S6)。
 かかるエラー処理部17において実現される動作によれば、プログラムの実行時にフェッチしたデータにおいてエラーが検出された場合に、システムを直ちに停止させるのではなく、まず、当該命令を再実行する。このとき、単なる読込みエラーのような一時的なエラーの場合には、再実行すればエラーが解消されることが多い。そして、上記動作によれば、かかる一時的なエラーの場合には、再実行においてエラーが検出されなければ、再実行に続けてそのまま通常処理に復帰させることができる。このため、エラー対処のための割込み処理を発生させる必要がなく、処理の戻りや遅延を最小限に抑えることができる。
 次に、上記エラー処理部17による再実行においてパリティチェッカ16から再度エラー検出信号を受信したときに、割込み処理として実行される例外処理プログラムについて説明する。図3は、例外処理プログラムの機能ブロック図である。
 エラー判定部31は、エラー処理部17による再実行の結果、再度パリティエラーが検出されたときに、エラー内容がソフトエラー又はハードエラーのいずれであるかを判定する。
 ソフトエラー処理部32は、エラー内容がソフトエラーと判定されたときに、当該エラーが検出されたデータが命令フェッチの対象データかオペランドフェッチの対象データかに応じて、復旧処理を行う。
 ハードエラー処理部33は、エラー内容がハードエラーと判定されたときに、CPU部11によるプログラムの実行を中止させ、システム全体を停止又はリセットさせる。
 図4は、CPU部11で実行される例外処理プログラムの処理内容を示す。当該処理は、上記エラー処理部17から、例外処理割込み信号がCPU部11に対して出力されたときに実行される。
 エラー判定部31は、エラー判定処理のサブルーチンをコールする(S11)。そして、エラー判定部31は、エラー判定処理のサブルーチンの処理結果に基づいて、エラー内容がハードエラーかソフトエラーかを判定する(S12)。
 エラー判定処理による判定結果がソフトエラーであったときに、ソフトエラー処理部32は、エラーが検出されたデータが命令フェッチの対象データかオペランドフェッチの対象データかを判定する(S13)。
 そして、ソフトエラー処理部32は、エラーが検出されたデータが命令フェッチの対象データであるときには、AHR15Aに格納されたアドレスで示される命令フェッチの対象データを外部メモリ13からロードし、ローカルメモリ12を上書き(修復)する(S14)。具体的には、ローカルメモリ12にロードされるプログラムの先頭アドレスと外部メモリ13に保持されているプログラムの先頭アドレスの情報を記憶させておく部分(ベースアドレス)を用いる。そして、このベースアドレスとAHR15Aに格納されたアドレスから、外部メモリ13に保持された、エラーアドレスに相当するアドレス(AHR15Aのアドレス+ベースアドレス)のデータをロードし、ローカルメモリ12に上書きする(以下同様)。また、ソフトエラー処理部32は、エラー処理部17のログカウンタ20を加算するとともに、エラー発生アドレスであるAHR15Aのアドレス及びエラーステータス「3」を関連付けてエラーログメモリ19に出力する(S15)。さらに、ソフトエラー処理部32は、例外処理後にPC22にセットされる復帰アドレスレジスタ23に、AHR15Aに格納されているアドレスをセットし(S16)、当該例外処理プログラムの割込み処理から復帰させる。その結果、CPU部では、AHR15Aに格納されているアドレスで示される命令を再実行し、当該命令から通常のプログラム処理を再開することとなる。
 また、ソフトエラー処理部32は、エラーが検出されたデータがオペランドフェッチの対象データであるときには、エラー処理部17のログカウンタ20を加算するとともに、エラー発生アドレスであるAHR15Eのアドレス及びエラーステータス「4」を関連付けてエラーログメモリ19に出力する(S17)。さらに、ソフトエラー処理部32は、プログラムの先頭アドレスに実行を移動させ、プログラムの初期化を含め再実行する(S18)。
 一方、エラー判定処理による判定結果がハードエラーであったときには、ハードエラー処理部33が、次の処理を行う。エラー処理部17のログカウンタ20を加算するとともに、エラーが検出されたデータが命令フェッチの対象データのときにはAHR15Aのアドレス及びエラーステータス「5」を関連付けてエラーログメモリ19に出力する。一方、エラーが検出されたデータがオペランドフェッチの対象データであるときには、AHR15Eのアドレス及びエラーステータス「5」を関連付けてエラーログメモリ19に出力する(S19)。そして、ハードエラー処理部33は、システムをリセット又は停止させる(S20)。
 次に、エラー判定部31におけるエラー判定処理のサブルーチンの処理内容について、図5を用いて説明する。
 まず、エラー判定部31は、AHR15Aに格納されたアドレスで示される命令フェッチの対象データまたはAHR15Eで示されるオペランドフェッチの対象データの領域の全てのビットに、「1」を書き込む(S21)。ここで、エラー判定部31は、エラーが検出されたエラーが検出されたデータが命令フェッチの対象データのときには、AHR15Aに格納されたアドレスで示される命令フェッチの対象データの領域を対象として処理を行う。一方、エラー判定部31は、エラーが検出されたデータがオペランドフェッチの対象データのときには、AHR15Eで示されるオペランドフェッチの対象データの領域を、夫々対象として処理を行う(以下、このサブルーチン全体において同様である)。そして、エラー判定部31は、書き込みを行ったデータ領域のデータを読み出す(S22)。さらに、エラー判定部31は、読み出したデータが、書き込んだ値どおりに全て「1」であるか否かを判定する(S23)。そして、エラー判定部31は、読み出したデータが全て「1」でなければ、エラー内容をハードエラーとして判定する(S28)。一方、エラー判定部31は、読み出したデータが全て「1」であれば、今度はAHR15Aに格納されたアドレスで示される命令フェッチの対象データの領域またはAHR15Eに格納されたアドレスで示されるオペランドフェッチの対象データの領域の全てのビットに「0」を書き込み(S24)、当該データ領域のデータを読み出す(S25)。さらに、エラー判定部31は、読み出したデータが、書き込んだ値どおりに全て「0」であるか否かを判定する(S26)。そして、エラー判定部31は、読み出したデータが全て「0」であれば、エラー内容をソフトエラーとして判定する(S27)。一方、エラー判定部31は、読み出したデータが全て「0」でなければ、エラー内容をハードエラーとして判定する(S28)。
 かかる例外処理プログラム(エラー判定処理のサブルーチン含む)の処理によれば、プログラムの実行時にフェッチしたデータにおいてエラーが検出された場合であって、当該エラーが一時的なエラーでない場合に、ソフトエラーかハードエラーかが判定される。そして、ソフトエラーの場合、命令フェッチにおけるエラーであれば、エラーが検出された命令フェッチの対象データに相当するデータが外部メモリ13から取得可能であるため、当該データが外部メモリ13からロードされてローカルメモリ12が修復される。そして、エラーが検出された命令から再実行される。このため、システムの停止やリセットを行う必要がなく、また、ロードし直すデータ量も少なくて済み、エラー復旧処理に要する時間や負荷を少なくすることができる。一方、オペランドフェッチにおけるエラーであれば、外部メモリ13から当該オペランドのデータに相当するデータを取得することはできない。しかし、この場合、ローカルメモリ12にロードされた命令のデータは正常であるため、上記例外処理プログラムでは、実行中のプログラムを先頭アドレスから再実行させる。このため、命令フェッチの場合と同様にシステムの停止やリセットを行う必要がなく、また、不必要に外部メモリからデータをロードする必要もない。
 このように、本システムによれば、エラー内容、及びエラーが検出されたデータが命令フェッチの対象データかオペランドフェッチの対象データかに応じ、データ矛盾が生じない範囲内において夫々最適なエラー対処がなされる。このため、エラーからの復旧処理による業務等への影響を少なくすることができ、エラーに対して耐性の強いシステムを実現することができる。
 また、エラー内容、及びエラーが検出されたデータが命令フェッチの対象データかオペランドフェッチの対象データかに応じたエラーステータスが、エラー発生アドレスと関連付けてエラーログとして出力される。かかるエラーログが蓄積されれば、後にシステムの障害原因や障害耐性の解析などに役立てることができる。そして、その解析結果に基づいてシステム構成を改良することにより、さらにエラーに対して耐性の強いシステムが実現され得る。
 なお、上記例外処理プログラムの処理のうち、エラーが検出されたデータが命令フェッチの対象データであったときにおける、ソフトエラー処理部32のS14の処理の代わりに、外部メモリ13にあるプログラム全てをローカルメモリ12にロードしてローカルメモリ12を修復するようにしてもよい。
 また、上記S14の処理は、ローカルメモリ12にロードされているプログラムがサブルーチンも含めて1つで完結している場合を前提としている。これに対し、動的リンケージをサポートしているシステムの場合には、プログラム(サブルーチンやライブラリ等)のアドレスが動的に決定されるため、目的とするデータをロードできない可能性がある。このため、かかる動作環境においては、上記S14の処理の代わりに、ブートローダ14を用いて対処してもよい。具体的には、プログラムが動的リンクにより実行されている場合には、エラーの発生したローカルメモリ12のアドレスを引数としてブートローダ14をコールすると、ブートローダ14において、当該アドレスに基づき、どのプログラムに相当する部分でエラーが発生したかを判断する。そして、ソフトエラー処理部32は、エラーが発生したプログラムを外部メモリ13から読み込み、ローカルメモリ12に上書きする。こうすることで、動的リンケージをサポートしているシステムにおいても、ローカルメモリ12のデータを修復し、エラーが検出された命令を再実行して通常のプログラム処理を再開することができる。
 さらに、上記例外処理プログラムの処理のうち、エラーが検出されたデータがオペランドフェッチの対象データであったときにおける、ソフトエラー処理部32のS18の処理は、ローカルメモリ12にロードされているプログラムがジョブの一部としてではなく単独で実行されている場合を前提としている。これに対し、エラーが検出されたプログラムが、複数のプロセスが連携して動作するジョブの一部を構成するプロセスに相当する場合には、当該プログラムを初期化して再実行してもジョブ全体としてのデータ矛盾が生じ得る。このため、ソフトエラー処理部32では、上記S18の処理の代わりに、当該ジョブに関連するデータを全て破棄してジョブの実行を中止し、さらに上位のジョブがある場合には、当該上位のジョブに対してジョブの実行を中止したことを示すリターンコードを返すようにしてもよい。こうすることで、ジョブシステムが採用されている動作環境においても、システムの停止を行わず、且つデータ矛盾を回避しつつ、処理を再開させることができる。
[実施例2]
 図6は、実施例2におけるコンピュータシステム50の全体構成を示す。本システムでは、ハーバードアーキテクチャを採用しており、パイプライン処理を実現する。そして、図1に示すように、CPU部51、命令キャッシュメモリ52、データキャッシュメモリ53、メインメモリ54、外部メモリ55、ブートローダ56、AHR57A~AHR57E、パリティチェッカ58A及びパリティチェッカ58B、エラー処理部59、MPX60A、MPX60B及びエラーログメモリ61を含む。そして、各構成要素は、図6に示すようにバスで接続されている。
 CPU部51は、命令フェッチユニット、デコードユニット、演算ユニット、コントロールユニット、各種レジスタを含み、CPUコアとしての機能を持つ。そして、図6では特に、CPU部51の構成要素のうち、PC64、復帰アドレスレジスタ65、オペランドレジスタ66、命令の実行状況に応じてPC64にセットされた命令のアドレス又はMPX60Aから出力されたアドレスを選択して命令キャッシュメモリ52に出力するMPX67A、及び命令の実行状況に応じてオペランドレジスタ66にセットされたオペランドのアドレス又はMPX60Aから出力されたアドレスのいずれかを選択してデータキャッシュメモリ53に出力するMPX67Bを図示している。
 命令キャッシュメモリ52には、命令のデータが格納され、データキャッシュメモリ53にはオペランドのデータが格納される。なお、本システムでは、データキャッシュメモリ53へ書き込むデータをリアルタイムにメインメモリ54へも書き込むライトスルー方式を採用する。なお、本実施例では、命令キャッシュメモリ52及びデータキャッシュメモリ53が第2記憶部に相当する。
 メインメモリ54には、CPUにより外部メモリ55からロードされたプログラムが格納される。ハーバードアーキテクチャを採用する本システムにおいては、メインメモリ54に格納されたデータが、CPUにより命令キャッシュメモリ52及びデータキャッシュメモリ53にさらにロード(コピー)される。そして、CPU部51は、命令キャッシュメモリ52及びデータキャッシュメモリ53に対してアクセスし、命令をフェッチして処理を行う。なお、本実施例では、メインメモリ54が第1記憶部に相当する。
 AHR57A~AHR57Dは、CPU部51がローカルメモリ12からフェッチしたデータのうち、命令フェッチの対象データのアドレスを格納するレジスタである。一方、AHR57Eは、オペランドフェッチの対象データのアドレスを格納するレジスタである。なお、本実施例では、AHR57A~AHR57Dが第1レジスタに相当し、AHR57Eが第2レジスタに相当する。
 パリティチェッカ58Aは、CPU部51が命令キャッシュメモリ52から命令フェッチしたデータにエラーがあるか否かをパリティチェックにより検出する。一方、パリティチェッカ58Bは、CPU部51がデータキャッシュメモリ53からオペランドフェッチしたデータにエラーがあるか否かをパリティチェックにより検出する。
 エラー処理部59は、論理回路を含んで構成され、パリティチェッカ58A及びパリティチェッカ58Bが出力するエラー検出信号、及びCPU部51が出力する命令オペランド識別信号を入力として、AHR57A~AHR57Eへアドレスを格納するためのクロックを停止させるクロック停止信号を出力する。また、エラー処理部59は、命令オペランド識別信号に応じて、エラーが検出されたデータが命令フェッチの対象データであった場合はAHR57Aに格納されたアドレスを、オペランドフェッチの対象データであった場合はAHR57Dに格納されたアドレスをMPX60Aに選択させるAHR選択信号を出力する。さらに、エラー処理部59は、命令オペランド識別信号に応じて、エラーが検出されたデータが命令フェッチの対象データであった場合はAHR57Aに格納されたアドレスを、オペランドフェッチの対象データであった場合はAHR57Eに格納されたアドレスをMPX60Bに選択させるAHR選択信号を出力する。また、エラー処理部59は、エラー発生回数をカウントするログカウンタ62及びエラー内容及びフェッチ対象に応じたエラーステータスを一時的に格納するエラーステータスレジスタ63を含む。そして、エラー処理部59は、エラー検出信号及び命令オペランド識別信号に基づいて、エラーログメモリ61への出力としてのエラーステータスを生成し、エラーステータスレジスタ63に一時的に保持する。また、エラー処理部59は、エラーステータスをエラーログメモリ61に書き込む書込信号を生成する。この書込信号が出力されると、MPX60Bの出力するアドレスが、エラー発生アドレスとしてエラーログメモリ61へ出力されるとともに、これに関連付けて、エラーステータスがエラーログメモリ61に出力される。また、エラー処理部59は、CPU部51への制御信号として、MPX60Aの出力するアドレスをPC64にセットさせるPCセット信号を出力する。さらに、エラー処理部59は、再実行において再度パリティエラーが検出されたときに、例外処理プログラムの処理を開始させる例外割込み信号をCPU部51に対して出力する。また、エラー処理部59は、例外処理プログラムの実行終了時にPC64に戻されるべきスタックとしての復帰アドレスレジスタ65の値をMPX60Aの出力するアドレスに変更させる制御信号をCPU部51に対して出力する。
 なお、ブートローダ56及びエラーログメモリ61については、夫々実施例1におけるブートローダ14及びエラーログメモリ61と同様の機能を有するため、説明を省略する。
 そして、当該実施例2のシステムにおいて実行されるプログラムの命令は、ロード/ストア命令であり、次のように処理されることを前提とする。即ち、各命令について、IF(命令フェッチ)、RF(命令デコード)、EX(命令実行)、MEM(オペランドフェッチ)及びWB(ライトバック)がなされる。なお、AHR57A~AHR57Dのレジスタの数(4つ)は、本システムで処理する命令における、IFからMEMまでの処理ステージ数(4つ)と一致している。
 ここで、実施例2のシステムにおいて一般プログラムが実行されるときの通常時の動作について説明する。まず、外部メモリ55に格納されたプログラムがメインメモリ54にロードされ、さらに、命令のデータは命令キャッシュメモリ52に、オペランドのデータはデータキャッシュメモリ53に夫々ロード(コピー)される。また、CPU部51では、プログラムの命令実行時には、PC64にセットされたアドレスのデータを命令キャッシュメモリ52に要求する一方、オペランドレジスタ66のアドレスのデータをデータキャッシュメモリ53に要求する。そして、CPU部51では、命令キャッシュメモリ52及びデータキャッシュメモリ53の夫々からデータをフェッチしつつ順次命令を実行する。また、このとき、CPU部51では、命令キャッシュメモリ52及びデータキャッシュメモリ53に要求するアドレスのうち、命令フェッチ時のアドレスがAHR57Aに、オペランドフェッチ時のアドレスがAHR57Eに夫々格納されるように制御する。また、CPU部51では、クロックが進行し、次の命令をフェッチするごとに、AHR57A、AHR57B、AHR57C、AHR57Dの順に、格納されたアドレスを順次移動させるように制御する。なお、このとき、AHR57Dにセットされていた値は破棄されることとなる。
 次に、エラー処理部59により実現される動作内容について、図7を用いて説明する。なお、実施例1における処理と相違する部分についてのみ説明する。
 実施例2における動作では、図2に示す実施例1の動作におけるS1~S2に代えて、S101~S104の動作が実現される。
 エラー処理部59は、パリティチェッカ58A又はパリティチェッカ58Bからエラー検出信号を受信すると、クロック停止信号を出力し、AHR57A~AHR57Eに格納されたアドレスをホールドする(S101)。また、エラー処理部59は、エラー発生時のフェッチが命令フェッチかオペランドフェッチかを判定する(S102)。なお、かかる判定は、CPU部51から受信する命令オペランド識別信号によっても可能であり、また、パリティチェッカ58A又はパリティチェッカ58Bのいずれからエラー検出信号を受信したかによっても可能である。そして、当該判定の結果、エラー発生時のフェッチが命令フェッチであったときには、AHR57Aに格納されているアドレスをPC64にセットし、当該アドレスで示される命令から再実行する(S103)。一方、エラー発生時のフェッチがオペランドフェッチであったときには、AHR57Dに格納されているアドレスをPC64にセットし、当該アドレスで示される命令から再実行する(S104)。
 かかる実施例2のエラー処理部59により実現される動作内容によれば、実施例1と同様に、命令フェッチにおけるエラー内容が一時的なエラーの場合に、割込み処理を発生させることなく、処理の遅延を最小限に抑えることができる。
 ここで、実施例2のシステムはパイプライン処理を行い、上述のように、IF-RF-EX-MEM-WBの処理ステージで命令を実行している。このため、エラーが検出されたデータがオペランドフェッチ(MEM)の対象データであった場合、エラーが検出された時点では、CPU部51では、既に、後続する別の命令を並行して実行している。このため、AHR57Aに格納されたアドレスは、オペランドフェッチが発生した命令とは異なる命令のアドレスとなっている。しかし、実施例2のシステムでは、フェッチされたアドレスが、新たな命令をフェッチするごとにAHR57AからAHR57Dへと順に移動する。このため、オペランドフェッチでエラーが発生した命令における命令フェッチの対象データのアドレスは、3クロック前に実行された命令のアドレスが格納されているAHR57Dのアドレスとなる。そして、上記エラー処理部59の動作では、オペランドフェッチにおけるエラー発生時には、AHR57Dのアドレスの命令を再実行している。このため、オペランドフェッチにおいてエラーが発生しても、エラーが発生した命令を命令フェッチから再実行することが可能となっている。
 次に、例外処理プログラムについて説明する。なお、当該実施例2のシステムにおける例外処理プログラムも、実施例1と同様に、エラー判定部31、ソフトエラー処理部32及びハードエラー処理部33を含んで構成される。ここで、例外処理プログラムの機能ブロック図は、実施例1と同様であるため、図示及び説明を省略する。
 図8は、CPU部51で実行される例外処理プログラムの処理内容を示す。なお、実施例1における処理と相違する部分についてのみ説明する。
 実施例2における処理では、ソフトエラー処理部32は、図4に示す実施例1の処理におけるS14に代えて、S201の処理を行う。即ち、ソフトエラー処理部32は、AHR57A~AHR57Dのうち、最先の命令フェッチの対象データのアドレスが格納されたAHR57Aに格納されたアドレスで示される命令フェッチの対象データをメインメモリ54からロードし、命令キャッシュメモリ52を修復する(S201)。また、S16に代えて、S202の処理を行う。即ち、ソフトエラー処理部32は、例外処理後にPC22にセットされる復帰アドレスレジスタ65に、AHR57Aに格納されているアドレスをセットする(S202)。
 また、実施例2における処理では、ソフトエラー処理部32は、図4に示す実施例1の処理におけるS18に代えて、S202の処理を行う。即ち、S17の前に、AHR57Eに格納されたアドレスで示されるオペランドフェッチの対象データをメインメモリ54からロードし、データキャッシュメモリ53を修復する(S203)。また、S18の代わりに、ソフトエラー処理部32は、例外処理後にPC64にセットされる復帰アドレスレジスタ65に、AHR57A~AHR57Dのうち、最先の命令フェッチの対象データのアドレスが格納されたAHR57Dに格納されているアドレスをセットし、当該例外処理プログラムの割込み処理から復帰させる(S204)。その結果、CPU部では、AHR57Dに格納されているアドレスで示される命令を再実行し、当該命令から通常のプログラム処理を再開することとなる。
 なお、実施例2のシステムにおける、エラー判定部31におけるエラー判定処理のサブルーチンの処理内容は、図5に示す実施例1の処理と次の点を除いて同様である。即ち、実施例2では、ローカルメモリ12の代わりに命令キャッシュメモリ52又はデータキャッシュメモリ53を対象としてビットの書込み及び読出しを行う。
 かかる例外処理プログラムの処理によれば、実施例1と同様に、プログラムの実行時にフェッチしたデータにおいてエラーが検出された場合であって、当該エラーが一時的なエラーでない場合に、ソフトエラーかハードエラーかが判定される。そして、ソフトエラーの場合、命令フェッチにおけるエラーであれば、メインメモリ54から当該命令フェッチの対象データに相当するデータが取得可能であるため、当該データがメインメモリ54からロードされて命令キャッシュメモリ52が修復され、エラーが発生した命令から再実行される。このため、処理の戻りや遅延を可能な限り少なくし、エラー発生による業務等への影響を少なくすることができる。
 一方、オペランドフェッチの対象データにおけるエラーであっても、実施例2のシステムではハーバードアーキテクチャを採用し、かつ、ライトスルー方式であるため、データキャッシュメモリ53及びメインメモリ54のデータ内容に同期がとれている。このため、メインメモリ54からエラーが発生したオペランドのデータに相当するデータが取得可能である。そして、本システムでは、当該データがメインメモリ54からロードされてデータキャッシュメモリ53が修復され、エラーが検出された命令から再実行される。したがって、オペランドフェッチの対象データにおけるエラーであっても、命令フェッチのときと同様に処理を続行することができる。
 このように、本システムによれば、ハーバードアーキテクチャを採用したシステムにおいても、エラー内容、及びエラーが検出されたデータが命令フェッチの対象データかオペランドフェッチの対象データかに応じ、データ矛盾が生じない範囲内において夫々最適なエラー対処がなされる。
 なお、例外処理プログラムにおけるソフトエラー処理部32では、上記S201の処理の代わりに、命令キャッシュメモリ52全体を無効化してもよい。なお、このように命令キャッシュメモリ52全体を無効化してもよい理由は次の通りである。即ち、キャッシュ全体を無効化すると、例外処理プログラムの割込処理から復帰したときにキャッシュミスヒットが生じ、メインメモリ54からキャッシュ全体へと再読込みが行われ、パリティエラーが発生したデータも修復されるからである。
 また、上記S202の処理は、ライトスルー方式が採用されていることを想定しているが、データキャッシュメモリ53のデータを退避させる必要が生じた時にのみメインメモリ54に書き込むライトバック方式の場合には、データキャッシュメモリ53及びメインメモリ54のデータの同期が必ずしもとれていない。このため、メインメモリ54にロードされているプログラムがサブルーチンも含めて1つで完結している場合には、ソフトエラー処理部32では、上記S203及びS204の処理の代わりに、プログラムの先頭アドレスに実行を移動させ、プログラムの初期化から再実行してもよい。また、複数のプロセスが連携するジョブが実行されている場合においては、ソフトエラー処理部32では、上記S203及びS204の処理の代わりに、当該ジョブに関連するデータを全て破棄してジョブの実行を中止してもよい。そして、さらに上位のジョブがある場合には、当該上位のジョブに対して、当該上位のジョブに対してジョブの実行を中止したことを示すリターンコードを返すようにしてもよい。こうすることで、ジョブシステムが採用されている動作環境においても、システムの停止を行わず、且つデータ矛盾を回避しつつ、処理を再開させることができる。
 さらに、上記実施例2では、IF-RF-EX-MEM-WBの処理ステージで実行されるロードストア命令を対象としているため、命令フェッチのアドレスを格納するAHRがAHR57A~AHR57Dの4つで構成されている。しかし、オペランドフェッチが命令フェッチから何番目のステージで行われるかに応じて、AHRの数を変更すれば、他のパターンの処理ステージで実行される命令にも同様に対応することができる。そして、オペランドフェッチでエラーが発生したときに再実行させる命令のアドレスとして、最先の命令フェッチの対象データのアドレスが格納されたAHRからアドレスを取得するようにすればよい。
 以下、実施例2の本システムにおけるエラー対処内容について、エラー内容及びフェッチ対象に応じた具体例を用いて説明する。
 図9は、一時的なエラー発生ケース(命令フェッチ時)のタイミングチャートである。
 図9には、プログラムの命令がパイプライン処理により順次実行される状態が示されている。また、図9には、これらの命令の実行時における、PC64、AHR57A、パリティエラー検出信号(パリティチェッカ58Aからの出力)、クロック停止信号、PC64セット信号、AHR選択信号、例外処理割込み信号、エラーステータス、ログカウンタ62及びエラーログメモリ61への書込信号の状態が示されている。なお、図9の最上部には、クロックの各タイミング(Tn)が示されている。また、図9において、n番目の命令nを実行するときに読み出すアドレスはAn(例えば命令1の場合はA1)と表記する。
 CPU部51では、PC64に命令1のアドレスA1をセットし、命令1の命令フェッチを行う(T1)。さらに、CPU部51では、PC64に次の命令2のアドレスA2をセットし、命令2をフェッチする(T2)。また、CPU部51では、命令フェッチが完了するごとに、PC64の値を、AHR57Aにセットする。このとき、AHR57Aには、PC64の値が1クロック遅れで設定されるため(以下同様)、AHR57Aには、T2において命令1のメモリアドレスA1が、T3において命令2のメモリアドレスA2がセットされる。
 一方、パリティチェッカ58Aでは、命令フェッチの対象データのパリティチェックを行う。当該具体例では、命令2の命令フェッチにおいて、パリティエラーが検出されるものとする(T2)。このとき、パリティチェッカ58Aは、エラー処理部59にパリティエラー検出信号を出力し、エラー処理部59では、各AHRへアドレスを伝送するためのクロックを停止させるクロック停止信号を発信する(T3)。これにより、AHR57Aの値は、A2がセットされた状態でホールドされる。また、このとき、CPU部51は、エラーが検出されたデータが命令フェッチの対象データであったことを示す命令オペランド識別信号をエラー処理部59に対して送信する。そして、エラー処理部59は、当該命令オペランド識別信号に基づいて、AHR57Aを選択させるAHR選択信号をMPX60A及びMPX60Bに対して送信する(なお、AHR選択信号は通常AHR57Aの選択状態を示しているため、この場合には信号に変化はない)。MPX60Bでは、このAHR選択信号に基づき、AHR57Aの値を選択して出力する。そして、CPU部51では、AHR57AのアドレスA2を再度PC64にセットし直し、命令2の再実行を行う(T4)。この再実行における命令フェッチにおいてパリティエラーが検出されない場合、エラー処理部59は、クロック停止信号の出力を中止する(T5)。一方、このときエラー処理部59は、エラーステータスレジスタ63に、エラーステータスとして「1」を設定している。そして、エラー処理部59は、エラーログメモリ61への書込信号を出力し、AHR57AのアドレスA2及び当該エラーステータスをエラーログメモリ61に書き込み(T5)、ログカウンタ62のカウントアップを行う(T6)。また、CPU部51では、通常どおり後続する命令3以降の命令フェッチを行い、通常処理を再開させる(T5~)。
 図10は、一時的なエラー発生ケース(オペランドフェッチ時)のタイミングチャートを示す。図10には、図9と同様に、プログラムの命令がパイプライン処理により順次実行される状態が示されている。また、図10では、図9に加え、AHR57D及びAHR57Eの状態についても示す。また、パリティチェッカ58Aの代わりに、パリティチェッカ58Bにより出力されるパリティエラー信号を示す。さらに、n番目の命令nのオペランドフェッチの対象データのアドレスはAnOP(例えば命令1の場合はA1OP)と表記する。
 CPU部51では、PC64に命令1のアドレスA1をセットするとともに、命令1の命令フェッチを行う(T1)。以降、同様に、後続する命令をフェッチする(T2~)。また、CPU部51では、命令フェッチが完了するごとに、PC64の値を、AHR57Aにセットするとともに、AHR57A、AHR57B、AHR57C、AHR57Dの順に、格納されたアドレスを移動させる。このとき、AHR57Dには、AHR57Aにセットされたアドレスの命令の3つ前に実行された命令のアドレスがセットされることとなる。
 一方、パリティチェッカ58Bでは、オペランドフェッチの対象データのパリティチェックを行う。当該具体例では、命令2のオペランドフェッチにおいて、パリティエラーが検出されるものとする(T5)。このとき、パリティチェッカ58Bは、エラー処理部59にパリティエラー検出信号を出力し、エラー処理部59では、各AHRへアドレスを伝送するためのクロックを停止させるクロック停止信号を発信する(T6)。これにより、AHR57AにはA5が、AHR57DにはA2が、AHR57EにはA2OPがセットされた状態でホールドされる。また、このとき、CPU部51は、エラーが検出されたデータがオペランドフェッチの対象データであったことを示す命令オペランド識別信号をエラー処理部59に対して送信する(T6)。そして、エラー処理部59は、当該信号に基づいて、AHR57Dを選択させるAHR選択信号をMPX60Aに、AHR57Eを選択させるAHR選択信号をMPX60Bに対して夫々送信する。MPX60Aでは、このAHR選択信号に基づき、AHR57Dのアドレスを選択して出力する。そして、CPU部51では、AHR57DのアドレスA2を再度PC64にセットし直し、命令2の再実行を行う(T7)。この再実行におけるオペランドフェッチにおいてパリティエラーが検出されない場合、エラー処理部59は、クロック停止信号の出力を中止する(T11)。一方、このときエラー処理部59は、エラーステータスレジスタ63に、エラーステータスとして「2」を設定している。そして、エラー処理部59は、エラーログメモリ61への書込信号を出力し、AHR57EのアドレスA2OP及び当該エラーステータスをエラーログメモリ61に書き込み(T11)、ログカウンタ62のカウントアップを行う(T12)。一方、CPU部51では、通常どおり後続する命令3以降の命令フェッチをパイプライン処理により行い、通常処理を再開させる(T8~)。
 図11は、ソフトエラー発生ケース(命令フェッチ時)のタイミングチャートである。
 図11には、図9と同様に、プログラムの命令がパイプライン処理により順次実行される状態が示されている。また、本具体例におけるT1~T3は、図9のケースと同一であるため説明を省略する。
 CPU部51では、AHR57AのアドレスA2を再度PC64にセットし直し、命令2の再実行を行う(T4)。本ケースでは、この再実行における命令フェッチにおいて再度パリティエラーが検出され(T4)、パリティチェッカは、エラー処理部59にパリティエラー検出信号を再度出力する(T5)。すると、エラー処理部59は、例外処理割込み信号をCPU部51に対して出力する(T6)。その結果、CPU部51では、例外処理プログラムの割込み処理を開始する。
 本ケースでは、例外処理プログラムにおけるエラー判定結果がソフトエラーである場合を想定する。この場合、ソフトエラー処理部32では、AHR57AのアドレスA2で示される命令フェッチの対象データをメインメモリ54からロードし、命令キャッシュメモリ52を上書きする。また、このとき、ソフトエラー処理部32は、エラーステータスレジスタ63に、エラーステータスとして「3」を設定している。そして、ソフトエラー処理部32は、AHR57AのアドレスA2及び当該エラーステータスをエラーログメモリ61に書き込み、ログカウンタ62のカウントアップを行う。さらに、ソフトエラー処理部32は、例外処理後にPC64にセットされる復帰アドレスレジスタ65のアドレスとして、AHR57AのアドレスA2をセットし、リターン命令を実行して例外処理から復帰させる(~Tn+3)。そして、CPU部51では、A2で示される命令2から通常処理を再開することとなる。
 図12は、ソフトエラー発生ケース(オペランドフェッチ時)のタイミングチャートである。また、本ケースは、プログラムがジョブの一部ではなく単独で実行されており、かつ、メインメモリ54への書き込みにおいてライトスルー方式を採用した動作環境であることを前提とする。
 図12には、図9と同様に、プログラムの命令がパイプライン処理により順次実行される状態が示されている。また、本具体例におけるT1~T6は、図10と同一であるため、図示及び説明を省略する。
 CPU部51では、AHR57DのアドレスA2を再度PC64にセットし直し、命令2の再実行を行う(T7)。本具体例では、この再実行におけるオペランドフェッチにおいて再度パリティエラーが検出され(T10)、パリティチェッカは、エラー処理部59にパリティエラー検出信号を再度出力する(T11)。すると、エラー処理部59は、例外処理割込み信号をCPU部51に対して出力する(T12)。その結果、CPU部51では、例外処理プログラムの割込み処理を開始する。
 本ケースでは、例外処理プログラムにおけるエラー判定結果がソフトエラーである場合を想定する。この場合、ソフトエラー処理部32では、AHR57EのA2OPで示されるオペランドフェッチの対象データをメインメモリ54からロードし、データキャッシュメモリ53を上書きする。また、このとき、ソフトエラー処理部32は、エラーステータスレジスタ63に、エラーステータスとして「4」を設定している。そして、ソフトエラー処理部32は、AHR57EのアドレスA2OP及び当該エラーステータスをエラーログメモリ61に書き込み、ログカウンタ62のカウントアップを行う。さらに、ソフトエラー処理部32は、例外処理後にPC64にセットされる復帰アドレスレジスタ65のアドレスとして、AHR57DのアドレスA2をセットし、リターン命令を実行して例外処理から復帰させる(~Tn+3)。そして、CPU部51では、A2で示される命令2から通常処理を再開することとなる。
 図13は、ソフトエラー発生ケース(オペランドフェッチ時)のタイミングチャートである。また、本具体例は、プログラムがジョブの一部を構成するプロセスとして実行されており、かつ、メインメモリ54への書き込みにおいてライトバック方式を採用した動作環境で実現されていることを前提とする。
 図13には、図9と同様に、プログラムの命令がパイプライン処理により順次実行される状態が示されている。また、本具体例におけるT1~T6は、図10と同一であるため、図示を省略する。さらに、本具体例におけるT7~T12は、図12と同一であるため、説明を省略する。
 エラー処理部59により例外処理割込み信号が出力されると、CPU部51では、例外処理プログラムの割込み処理を開始する。
 本ケースでは、例外処理プログラムにおけるエラー判定結果がソフトエラーである場合を想定する。この場合、ソフトエラー処理部32では、エラーステータスレジスタ63に、エラーステータスとして「4」を設定している。そして、ソフトエラー処理部32は、AHR57EのアドレスA2OP及び当該エラーステータスをエラーログメモリ61に書き込み、ログカウンタ62のカウントアップを行う。ここで、本具体例では、プログラムがジョブの一部を構成するプロセスとして実行されており、また、ライトバック方式を採用しているため、実行中のジョブのデータを全て破棄し、当該ジョブの実行を中止する。そして、ソフトエラー処理部32は、リターン命令を実行して例外処理から復帰させるとともに(~Tn+3)、上位のジョブに対して、ジョブの実行を中止したリターンコードを返す。そして、CPU部51では、上位のジョブの命令であるB1から通常処理を行うこととなる。
 図14は、ハードエラー発生ケースのタイミングチャートである。
 図14には、図9と同様に、プログラムの命令がパイプライン処理により順次実行される状態が示されている。また、本具体例におけるT1及びT2は、図9と同一であるため、図示を省略する。さらに、本具体例におけるT3~T6は、図11と同一であるため、説明を省略する。
 エラー処理部59により例外処理割込み信号が出力されると、CPU部51では、例外処理プログラムの割込み処理を開始する。
 本具体例では、例外処理プログラムにおけるエラー判定結果がハードエラーである場合を想定する。このとき、ハードエラー処理部33では、エラーステータスレジスタ63に、エラーステータスとして「5」を設定している。そして、ハードエラー処理部33は、AHR57AのアドレスA2及び当該エラーステータスをエラーログメモリ61に書き込み、ログカウンタ62のカウントアップを行う。そして、ハードエラー処理部33では、システムの停止命令を実行する(~Tn+3)。
 なお、上記図14では命令フェッチ時においてハードエラーが発生した場合について説明したが、オペランドフェッチ時においてハードエラーが発生した場合には、エラーログメモリ61に、AHR57Eに格納されたアドレスを書き込むこととなる。
 以上説明した実施例1及び実施例2では、エラー検出方法としてパリティチェックを用いているが、他のエラー検出方法を採用してもよい。
 また、実施例1及び実施例2では、ECCを持たないことを前提として説明をしたが、ECCを持ったシステムにおいても、2ビットエラーが発生した場合には同様に適用することができる。
 さらに、エラー処理部で実現される機能を、例外処理プログラムと同様に、CPU部でプログラムを実行し、各構成要素を制御することにより実現してもよい。また、エラー処理部で実現される機能や例外処理プログラムの機能を実現するプログラムを、例えば、磁気テープ、磁気ディスク、フラッシュメモリ、CD-ROM、DVD-ROM等のコンピュータ読取可能な記録媒体に記録しておけば、プログラムを市場に流通させることができる。そして、かかる記録媒体を取得した者は、一般的なコンピュータシステムを利用して、上述のエラー対処を実現するコンピュータシステムを容易に構築することができる。
[実施例3]
 次に、上記エラー対処を実現するコンピュータシステムにおいて、さらに、エラーが発生する環境及び状況に応じた障害原因究明機構を含んだ実施例について説明する。
 図15は、実施例3におけるコンピュータシステム100の全体構成を示す。本システムでは、図15に示すように、CPU部101、パターンジェネレータ102、ローカルメモリ103、電圧制御レジスタ104、電圧制御発振器(VCXO:Voltage Controlled Xtal Oscillator)105及び電源106を含んで構成される。そして、図15では特に、CPU部101の構成要素のうち、PC107と、オペランドレジスタ108と、命令の実行状況に応じてPC107にセットされた命令アドレス又はオペランドレジスタ108にセットされたオペランドアドレスのいずれかを選択して出力するMPX109と、データレジスタ110と、を図示している。なお、図15では、当該エラー原因究明機構及びこれに直接関連する構成要素以外は、図示を省略している。
 上記パターンジェネレータ102は、電源電圧マージン試験、タイミングマージン試験、同時スイッチングノイズ試験等の試験を実施するための回路を制御する試験パターン発生回路である。そして、通常動作時にパリティチェッカ(図示省略)においてパリティエラーを検出すると、CPU部101は、これらの試験回路に制御を移す。
 電源電圧マージン試験では、電圧制御レジスタ104を介し、電源供給回路に対する電圧制御信号を変化させることにより実施する。通常、電圧制御信号はICチップ固有の電源電圧を設定するための信号だが、本システムでは、この信号を利用し、本来システムが必要としている電源電圧に対し、10%以上の電圧変動を発生させることで、電源電圧マージン試験を実施する。
 また、タイミングマージン試験は、CPU部101及びローカルメモリ103を接続するバスに対して可変遅延回路を挿入し、その遅延値をパターンジェネレータ102により制御しながら試験を行うことにより実施する。
 同時スイッチングノイズ試験につては、パターンジェネレータ102の試験方法において、アドレス、データ及び制御信号に対し、全て「1」又は全て「0」を設定するパターンを繰り返すことで実施できる。
 上述のように、上記障害原因究明機構は、通常稼働しているシステムに直接組み込まれる。そして、当該障害原因究明機構は、一般プログラムを実行するCPU内の資源(特に、MPXやデータレジスタ)を、エラー原因究明のための試験において共有して用いる。これにより、実際にシステム稼働がなされている状態により近い状態で試験をすることが可能となり、障害原因解析を的確に行うことができる。

Claims (16)

  1.  第1記憶部から第2記憶部へとプログラムをロードして命令を実行するCPUと、
     CPUによる前記第2記憶部からの命令フェッチの対象データの前記第2記憶部におけるアドレスを格納する第1レジスタと、
     CPUによる前記第2記憶部からの命令フェッチ又はオペランドフェッチの対象データのエラーを検出するエラー検出部と、
     前記エラー検出部によりエラーが検出されると、前記第1レジスタのアドレスをホールドし、当該第1レジスタに格納されたアドレスで示される命令をCPUに再実行させる再実行部と、
     前記再実行部によりCPUにおいて命令が再実行された結果、再度エラーが検出されたときに、エラー内容がソフトエラー又はハードエラーのいずれであるかを判定する判定部と、
     前記判定部によりエラー内容がソフトエラーと判定され、かつ、エラーが検出されたデータが命令フェッチの対象データであったとき、少なくとも前記第1レジスタに格納されたアドレスで示される命令フェッチの対象データを前記第1記憶部からロードして前記第2記憶部のデータを修復し、当該アドレスで示される命令をCPUにさらに再実行させるソフトエラー処理部と、
     を含んで構成されたことを特徴とする情報処理装置。
  2.  前記判定部は、前記レジスタに格納されたアドレスで示される第2記憶部の命令フェッチの対象データ又はオペランドフェッチの対象データの領域のビットに全て同一の値を書き込んでから当該領域のデータを読み出したときに、書き込んだ値と同一でないビットが存在すればハードエラーと判定する一方、全てのビットが書き込んだ値と同一であればソフトエラーと判定することを特徴とする請求項1記載の情報処理装置。
  3.  前記ソフトエラー処理部は、前記判定部によりエラー内容がソフトエラーと判定され、かつ、エラーが検出されたデータが命令フェッチの対象データであったとき、エラーが検出されたプログラム全体を前記第1記憶部からロードして前記第2記憶部のデータを修復することを特徴とする請求項1記載の情報処理装置。
  4.  CPUにおいてプログラムが動的リンクにより実行される動作環境において、前記第1レジスタに格納されたアドレスに基づいて、前記第2記憶部にロードされたプログラムの中から、エラーが検出されたプログラムを特定することが可能なブートローダをさらに含み、
     前記ソフトエラー処理部は、前記判定部によりエラー内容がソフトエラーと判定され、かつ、エラーが検出されたデータが命令フェッチの対象データであった場合であって、プログラムが動的リンクにより実行されているときには、前記レジスタに格納されたアドレスを引数として前記ブートローダをコールし、前記ブートローダにより特定されたプログラムを前記第1記憶部からロードして前記第2記憶部のデータを修復することを特徴とする請求項1記載の情報処理装置。
  5.  前記ソフトエラー処理部は、前記判定部によりエラー内容がソフトエラーと判定され、かつ、エラーが検出されたデータがオペランドフェッチの対象データであったとき、エラーが検出されたプログラムの先頭アドレスから当該プログラムをCPUに再実行させることを特徴とする請求項1記載の情報処理装置。
  6.  前記ソフトエラー処理部は、前記判定部によりエラー内容がソフトエラーと判定され、かつ、エラーが検出されたデータがオペランドフェッチの対象データであった場合であって、エラーが検出されたプログラムがジョブの一部を構成するプロセスに相当するときには、当該ジョブの実行を中止し、ジョブを再実行させることを特徴とする請求項1記載の情報処理装置。
  7.  前記ソフトエラー処理部は、前記ジョブの実行を中止したときに、さらに上位のジョブが存在すれば、上位のジョブに対して当該ジョブの実行を中止したリターンコードを返すことを特徴とする請求項6記載の情報処理装置。
  8.  前記判定部によりエラー内容がハードエラーと判定されたときには、CPUによるプログラムの実行を中止させ、システム全体を停止又はリセットするハードエラー処理部をさらに含むことを特徴とする請求項1記載の情報処理装置。
  9.  前記第2記憶部のデータにおけるエラー発生アドレス及びエラー内容を示すエラーステータスを関連付けたエラーログを夫々出力するエラーログ出力部をさらに含むことを特徴とする請求項1記載の情報処理装置。
  10.  前記エラーログ出力部は、エラーが検出されたデータが命令フェッチの対象データであったときに、前記第1レジスタに格納された、エラー検出時における命令フェッチの対象データのアドレスを、前記エラー発生アドレスとして前記エラーログを出力することを特徴とする請求項9記載の情報処理装置。
  11.  CPUによる命令の実行における、前記第2記憶部からのオペランドフェッチの対象データの前記第2記憶部におけるアドレスを格納する第2レジスタをさらに含み、
     前記エラーログ出力部は、エラーが検出されたデータがオペランドフェッチの対象データであったときに、前記第2レジスタに格納された、エラー検出時におけるオペランドフェッチの対象データのアドレスを、前記エラー発生アドレスとして前記エラーログを出力することを特徴とする請求項9記載の情報処理装置。
  12.  前記第1レジスタは、CPUにおいてプログラムがパイプライン処理により実行される動作環境において、パイプライン処理における命令フェッチからオペランドフェッチまでの処理ステージの数だけ存在し、
     CPUは、パイプライン処理により次の命令がフェッチされるごとに、前記第1レジスタに格納された、命令フェッチの対象データの前記第2記憶部におけるアドレスを、次の順番に配置された他の前記第1レジスタに順次移動させ、
     前記再実行部及び前記ソフトエラー処理部は、エラーが検出されたデータが命令フェッチの対象データであったときには、前記第1レジスタのうち最後の命令フェッチの対象データのアドレスが格納された第1レジスタのアドレスで示される命令をCPUに再実行させる一方、エラーが検出されたデータがオペランドフェッチの対象データであったときには、前記第1レジスタのうち、最先の命令フェッチの対象データのアドレスが格納された第1レジスタのアドレスで示される命令をCPUに再実行させることを特徴とする請求項1記載の情報処理装置。
  13.  前記第1記憶部が外部ストレージである一方、前記第2記憶部がローカルメモリであることを特徴とする請求項1記載の情報処理装置。
  14.  前記第1記憶部がメインメモリである一方、前記第2記憶部が命令キャッシュメモリ及びデータキャッシュメモリであって、CPUがライトスルー方式で処理をしている動作環境において、CPUによる命令の実行における、オペランドフェッチの対象データの前記メインメモリにおけるアドレスを格納する第2レジスタをさらに含み、
     前記ソフトエラー処理部は、前記判定部によりエラー内容がソフトエラーと判定され、かつ、エラーが検出されたデータがオペランドフェッチの対象データであったときに、前記第2レジスタに格納されたアドレスで示されるオペランドフェッチの対象データを前記メインメモリからロードして前記データキャッシュメモリのデータを修復し、前記第1レジスタに格納されたアドレスで示される命令をCPUに再実行させることを特徴とする請求項1記載の情報処理装置。
  15.  第1記憶部から第2記憶部へとプログラムをロードして命令を実行するCPUによる、前記第2記憶部からの命令フェッチの対象データの前記第2記憶部におけるアドレスを、第1レジスタに格納する格納手順と、
     CPUによる前記第2記憶部からの命令フェッチ又はオペランドフェッチの対象データのエラーを検出するエラー検出手順と、
     前記エラー検出手順によりエラーが検出されると、前記第1レジスタのアドレスをホールドし、当該第1レジスタに格納されたアドレスで示される命令をCPUに再実行させる再実行手順と、
     前記再実行手順によりCPUにおいて命令が再実行された結果、再度エラーが検出されたときに、エラー内容がソフトエラー又はハードエラーのいずれであるかを判定する判定手順と、
     エラー内容がソフトエラーと判定され、かつ、エラーが検出されたデータが命令フェッチの対象データであったとき、少なくとも前記第1レジスタに格納されたアドレスで示される命令フェッチの対象データを前記第1記憶部からロードして前記第2記憶部のデータを修復し、当該アドレスで示される命令をCPUにさらに再実行させるソフトエラー処理手順と、
     をコンピュータが実行することを特徴とする情報処理方法。
  16.  第1記憶部から第2記憶部へとプログラムをロードして命令を実行するCPUによる、前記第2記憶部からの命令フェッチの対象データの前記第2記憶部におけるアドレスを、第1レジスタに格納する格納機能と、
     CPUによる前記第2記憶部からの命令フェッチ又はオペランドフェッチの対象データのエラーを検出するエラー検出機能と、
     前記エラー検出機能によりエラーが検出されると、前記第1レジスタのアドレスをホールドし、当該第1レジスタに格納されたアドレスで示される命令をCPUに再実行させる再実行機能と、
     前記再実行機能によりCPUにおいて命令が再実行された結果、再度エラーが検出されたときに、エラー内容がソフトエラー又はハードエラーのいずれであるかを判定する判定機能と、
     前記判定機能によりエラー内容がソフトエラーと判定され、かつ、前記エラー検出機能によりエラーが検出されたデータが命令フェッチの対象データであったとき、少なくとも前記第1レジスタに格納されたアドレスで示される命令フェッチの対象データを前記第1記憶部からロードして前記第2記憶部のデータを修復し、当該アドレスで示される命令をCPUにさらに再実行させるソフトエラー処理機能と、
     をコンピュータに実現させることを特徴とする情報処理プログラム。
PCT/JP2009/056126 2009-03-26 2009-03-26 情報処理装置、情報処理方法及び情報処理プログラム WO2010109631A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/056126 WO2010109631A1 (ja) 2009-03-26 2009-03-26 情報処理装置、情報処理方法及び情報処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/056126 WO2010109631A1 (ja) 2009-03-26 2009-03-26 情報処理装置、情報処理方法及び情報処理プログラム

Publications (1)

Publication Number Publication Date
WO2010109631A1 true WO2010109631A1 (ja) 2010-09-30

Family

ID=42780340

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2009/056126 WO2010109631A1 (ja) 2009-03-26 2009-03-26 情報処理装置、情報処理方法及び情報処理プログラム

Country Status (1)

Country Link
WO (1) WO2010109631A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012103826A (ja) * 2010-11-09 2012-05-31 Fujitsu Ltd キャッシュメモリシステム
JP7447755B2 (ja) 2020-09-30 2024-03-12 株式会社明電舎 メモリエラー検出・訂正システム、メモリエラー検出・訂正方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5694600A (en) * 1979-12-27 1981-07-31 Fujitsu Ltd Data error processing system for main storage device
JPH04120642A (ja) * 1990-09-11 1992-04-21 Nec Ibaraki Ltd Ram故障検出方式
JPH0512013A (ja) * 1991-07-01 1993-01-22 Mitsubishi Electric Corp データ処理装置
JP2005234855A (ja) * 2004-02-19 2005-09-02 Yokogawa Electric Corp 情報処理装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5694600A (en) * 1979-12-27 1981-07-31 Fujitsu Ltd Data error processing system for main storage device
JPH04120642A (ja) * 1990-09-11 1992-04-21 Nec Ibaraki Ltd Ram故障検出方式
JPH0512013A (ja) * 1991-07-01 1993-01-22 Mitsubishi Electric Corp データ処理装置
JP2005234855A (ja) * 2004-02-19 2005-09-02 Yokogawa Electric Corp 情報処理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012103826A (ja) * 2010-11-09 2012-05-31 Fujitsu Ltd キャッシュメモリシステム
JP7447755B2 (ja) 2020-09-30 2024-03-12 株式会社明電舎 メモリエラー検出・訂正システム、メモリエラー検出・訂正方法

Similar Documents

Publication Publication Date Title
US8095825B2 (en) Error correction method with instruction level rollback
CA1235816A (en) Error recovery system in a data processor having a control storage
US8468425B2 (en) Register error correction of speculative data in an out-of-order processor
US8650437B2 (en) Computer system and method of protection for the system's marking store
US20230115158A1 (en) Method for detecting and recovery from soft errors in a computing device
KR20070121701A (ko) 서브루틴 복귀 메카니즘 선택
US10817369B2 (en) Apparatus and method for increasing resilience to faults
US9594648B2 (en) Controlling non-redundant execution in a redundant multithreading (RMT) processor
US11625316B2 (en) Checksum generation
US6799285B2 (en) Self-checking multi-threaded processor
US20160065243A1 (en) Radiation hardening architectural extensions for a radiation hardened by design microprocessor
WO2010109631A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
US20090150653A1 (en) Mechanism for soft error detection and recovery in issue queues
US10289332B2 (en) Apparatus and method for increasing resilience to faults
US6125443A (en) Interrupt processing system and method for information processing system of pipeline control type
JP4155052B2 (ja) エミュレータ、エミュレーション方法およびプログラム
US5898867A (en) Hierarchical memory system for microcode and means for correcting errors in the microcode
JP2009230479A (ja) マイクロプロセッサ
JPH08137748A (ja) コピーバックキャッシュを有するコンピュータ及びコピーバックキャッシュ制御方法
JPH0644238B2 (ja) 命令再実行制御方法
JP3988740B2 (ja) 並列処理装置、命令再試行方法、およびプログラム
TWI801622B (zh) 用於處理保護標籤損失的裝置、方法、電腦程式、與儲存媒體
JP2006286135A (ja) 半導体記憶装置及びその読み書き制御方法
JPH04125753A (ja) メモリのオンライン診断方式
JPH07152594A (ja) 制御プロセッサのリトライ制御方式

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

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP