Abstract:
An error processing method processes an error generated on a bus of a CPU, by inputting a bus error that is generated on at least one of an instruction bus and a data bus of the CPU to the CPU by a bus error input part, counting the bus error by a bus error counter part of the CPU, and specifying a region of a memory part that is coupled to the CPU based on a value of the bus error counter part.

Description:
BACKGROUND OF THE INVENTION 
       [0001]    1. Field of the Invention 
         [0002]    The present invention generally relates to error processing methods and information processing apparatuses, and more particularly to an error processing method for processing a bus error that is generated in an instruction bus or a data bus, and an information processing apparatus provided with a CPU or the like having a Harvard architecture. 
         [0003]    2. Description of the Related Art 
         [0004]    For use in vehicles and the like, there are demands to provide a parity check or ECC check function for a memory part in a CPU of a microprocessor. In the conventional CPU, if an error is generated during a bus access, the correct instruction code cannot be supplied to the CPU, and the CPU has to be halted. One method of avoiding such a halting of the CPU is to input an external interrupt to the CPU when the error is generated during the bus access, but according to this method, there is a possibility of executing the instruction code for which the bus error is generated before a jump is made to the interrupt routine. In addition, since the CPU does not always execute the instruction code that makes the bus access, as in the case of the jump instruction, there is a possibility of generating a meaningless interrupt. 
         [0005]    Furthermore, in the case where the CPU has the Harvard architecture in which the instruction bus and the data bus are separate, there is a possibility that, after a bus error is generated on the instruction bus for a certain instruction, a data bus error will be generated for an instruction that is executed before the certain instruction. For this reason, it is necessary to process the data bus error with a priority over the instruction bus error. For example, the FR series Reduced Instruction Set Computer (RISC) microcomputer manufactured by Fujitsu Limited of Japan is one example of the microprocessor provided with the CPU having the Harvard architecture. In such a CPU, if an undefined instruction is generated, an exception handler within an instruction sequencer of an instruction decoder part is started, so as to generate instructions for fetching a start address of an undefined interrupt routine and instructions for saving contents of a Processor Status (PS) register that indicates the CPU status and a Program Counter (PC) register by an Exception Interrupt Trap (EIT) process, and to jump to the interrupt routine. 
         [0006]      FIG. 1  is a system block diagram showing a structure of an important part of a conventional CPU. The conventional CPU shown in  FIG. 1  generally includes a fetch part (F-part)  101 , a decode part (D-part)  102 , an execute part (E-part)  103 , a memory access part (M-part)  104 , and a general-purpose register part  105 . 
         [0007]    The F-part  101  carries out an instruction fetch to acquire the instruction code using an internal instruction bus Ibus. The fetched instruction code is set in an intermediate register Tf, and the address in this state is set in an intermediate register Tia_f. The F-part  101  includes an Ibus access controller  111 . 
         [0008]    The D-part  102  interprets the fetched instruction code, and prepares the data necessary for the operation (or computation) and the operation mode (addition, subtraction, etc.) to be executed by the E-part  103 . More particularly, the operation mode of an operation unit (ALU)  132  within the E-part  103  is decoded from the fetched instruction code, and register values to be used for the operation are set in intermediate registers Ta and Tb. A value to be written is set in an intermediate register Tdd when writing via an internal data bus Dbus. When an internal error caused by an external interrupt, an undefined instruction or the like is generated, an exception handler  122  within an instruction sequencer  121  jumps to an interrupt routine, and thus, the D-part  102  automatically supplies instructions for reading an interrupt vector table and saving contents of the PS register and the PC register of the general-purpose register part  105 . A decoder  123  and a multiplexer  124  are provided within the instruction sequencer  121 . The D-part  102  includes an intermediate register Tdec for latching the operation mode that is decoded by the instruction sequencer  121 , a matrix (or selector)  125 , and a multiplexer  126 . 
         [0009]      FIG. 2  is a flow chart for explaining an operation of the instruction sequencer  121  within the D-part  102  of the conventional CPU. After newly fetching an instruction code, the instruction code is input to the D-part  102  (step S 1 ), and the instruction code is decoded (step S 2 ). If the instruction code is normal as a result of the decoding, the operation mode of the instruction and the contents of the general-purpose register part  105  necessary for the operation are set in the intermediate registers Tdec, Ta, Tb and Tdd, and supplied to the E-part  103  (step S 3 ). Thereafter, in the next cycle, the next instruction is input and the decoding is started. 
         [0010]    If the decoded result is an undefined instruction or an external interrupt, the vector address is acquired from the vector table so as to jump to the routine of the exception interrupt, and the operation mode for computing the jump address and the contents of the general-purpose register part  105  necessary for the operation are supplied to the E-part  103  (step S 4 ). The technique which uses the vector table is often used as a method of jumping to the exception process, because the data of each address within the vector table points to the start address of the corresponding exception process, and the data of each address is also referred to as the vector address. In the next cycle, the operation mode for saving the content of the PS register and the contents of the general-purpose register part  105  necessary for the operation are supplied to the E-part  103  (step S 5 ). Thereafter, the operation mode for saving the content of the PC register and the contents of the general-purpose register part  105  necessary for the operation are supplied to the E-part  103  (step S 6 ). The steps S 4  through S 6  form the EIT process. Thereafter, a check is made to determine the existence of other interrupts or errors (step S 7 ), and the next instruction is decoded if no other interrupt or error exists (No in step S 7 ). On the other hand, the vector address acquisition by the EIT process is repeated if other interrupt or error exists (YES in step S 7 ). 
         [0011]    The E-part  103  receives the operation mode signal and the operation data from the D-part  102 , and carries out the operation. More particularly, the E-part  103  carries out the operation of the instruction, and sets a result obtained by the operation unit  132  in an intermediate register Te. If a register hazard is generated due to the combination of instructions, the E-part  103  uses a register bypass route  131  to directly set the intermediate registers Ta or Tb and Tdd for making input to the E-part  103  from the output of the operation unit  132 . The E-part  103  includes an intermediate register Ted that is set with the output of the intermediate register Tdd within the D-part  102 . 
         [0012]    The M-part  104  receives the data from the E-part  103 , and makes a write or read with respect to the memory part using the internal data bus Dbus. More particularly, the M-part  104  makes a write or read with respect to the memory part, the general-purpose register part  105  (PC, R 0  to R 15 ) or the like for the operation result of the instruction. The M-part  104  includes an intermediate register Tia_m and a Dbus access controller  141 . 
         [0013]    The general-purpose register part  105  forms the internal registers of the CPU, and includes the PC register, the PS register, the operation registers R 0  to R 15 , and a multiplexer  151 . 
         [0014]    In  FIG. 1 , ID denotes an instruction code, IA denotes the address of the instruction code, and iaccess, irdy, IRDY and ISZE respectively denote the access request of the instruction code, the ready output of the instruction code, the ready input of the instruction code, and the size of the instruction code. In addition, DA, DDout and DDin respectively denote the address of the data, the output data, and the input data. Furthermore, daccess, drdy, DRDY and DSIZE respectively denote the access request of the data, the ready output of the data, the ready input of the data, and the size of the data. 
         [0015]    The address of the instruction is stored in the intermediate registers Tia_f→Ria_dec→Tia_e→Tia_m of the parts  101  through  104 . If the operation result is set in the operation register Ri (i=0 to 15) for a certain instruction and the operation register Ri is to be used for the next instruction, the operation result set in the operation register Ri will not reach the D-part  102  in time. For this reason, a route that enables the output of the operation unit  132  to be set in the intermediate register Ta or Tb, that is, the register bypass route  131 , is provided. 
         [0016]    The processes of the instructions are carried out in the order in which the instructions are fetched by the CPU. Each instruction successively transferred to the F-part  101 , the D-part  102 , the E-part  103  and the M-part  104 , every time one clock is input, and the CPU operates according to the instruction. If an instruction I 1  is fetched by the F-part  101  and this instruction I 1  is transferred to the D-part  102  in response to the next clock, the F-part  101  simultaneously fetches an instruction  12  in response to this next clock. Such an operation is repeated, and a pipeline processing of the instructions  11  through  15  is made, as shown in  FIGS. 3 through 8 .  FIG. 3  is a timing chart for explaining the operation of the conventional CPU.  FIG. 4  is a diagram for explaining a state (1) shown in  FIG. 3 ,  FIG. 5  is a diagram for explaining a state (2) shown in  FIG. 3 ,  FIG. 6  is a diagram for explaining a state (3) shown in  FIG. 3 ,  FIG. 7  is a diagram for explaining a state (4) shown in  FIG. 3 , and  FIG. 8  is a diagram for explaining a state (5) shown in  FIG. 3 . In  FIGS. 4 through 8 , nop denotes a “no operation”. 
         [0017]    The conventional CPU does not have a bus error input means. Hence, if an error such as a parity error is generated in the memory part, an instruction that is executable by the CPU cannot be prepared externally, and the CPU halts. In addition, if the CPU fetches the instruction, detects a parity error, and uses an external interrupt to indicate the parity error detection, there is a possibility of executing the instruction for which the bus error is generated. Moreover, even if the CPU fetches the instruction and detects the parity error, when the fetched instruction is not executed due to execution of a jump instruction or the like, a meaningless interrupt will be generated. Furthermore, if the bus error is generated on the instruction bus, the data bus error for the immediately preceding instruction is generated later, and it is necessary to take into consideration the priority order of the processes. 
         [0018]    For example, a Japanese Laid-Open Patent Application No. 6-242977 proposes a 1-chip microprocessor that is constructed to detect the parity error of the address of data. 
         [0019]    Therefore, according to the conventional CPU having the Harvard architecture, there was a problem in that it is difficult to appropriately process a bus error that is generated on an instruction bus or a data bus. 
       SUMMARY OF THE INVENTION 
       [0020]    Accordingly, it is a general object of the present invention to provide a novel and useful error processing method and information processing apparatus, in which the problems described above are suppressed. 
         [0021]    Another and more specific object of the present invention is to provide an error processing method and an information processing apparatus, which can appropriately process a bus error that is generated on an instruction bus or a data bus. 
         [0022]    Still another object of the present invention is to provide an error processing method for processing an error generated on a bus of a CPU, comprising the steps of (a) inputting a bus error that is generated on at least one of an instruction bus and a data bus of the CPU to the CPU by a bus error input part; (b) counting the bus error by a bus error counter part of the CPU; and (c) specifying a region of a memory part that is coupled to the CPU based on a value of the bus error counter part. According to the error processing method of the present invention, it is possible to appropriately process the bus error that is generated on the instruction bus or the data bus. 
         [0023]    A further object of the present invention is to provide an information processing apparatus comprising a CPU; a memory part coupled to the CPU; a bus error input part configured to input, to the CPU, a bus error that is generated on at least one of an instruction bus and a data bus of the CPU; a bus error counter part configured to count the bus error that is generated within the CPU; and a specifying part configured to specify a region of the memory part based on a value of the bus error counter part. According to the information processing apparatus of the present invention, it is possible to appropriately process the bus error that is generated on the instruction bus or the data bus. 
         [0024]    Other objects and further features of the present invention will be apparent from the following detailed description when read in conjunction with the accompanying drawings. 
     
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0025]      FIG. 1  is a system block diagram showing a structure of an important part of a conventional CPU; 
           [0026]      FIG. 2  is a flow chart for explaining an operation of an instruction sequencer within a decode part of the conventional CPU; 
           [0027]      FIG. 3  is a timing chart for explaining an operation of the conventional CPU; 
           [0028]      FIG. 4  is a diagram for explaining a state (1); 
           [0029]      FIG. 5  is a diagram for explaining a state (2); 
           [0030]      FIG. 6  is a diagram for explaining a state (3); 
           [0031]      FIG. 7  is a diagram for explaining a state (4); 
           [0032]      FIG. 8  is a diagram for explaining a state (5); 
           [0033]      FIG. 9  is a system block diagram showing an important part of a microprocessor applied with the present invention; 
           [0034]      FIG. 10  is a system block diagram showing a structure of a memory part; 
           [0035]      FIG. 11  is a diagram showing a relationship of write, read and control signals of the memory part; 
           [0036]      FIG. 12  is a system block diagram showing an important part of a first embodiment of the present invention; 
           [0037]      FIG. 13  is a flow chart for explaining an operation of an instruction sequencer of the first embodiment; 
           [0038]      FIG. 14  is a timing chart for explaining an operation for a case where an error is generated in an instruction bus; 
           [0039]      FIG. 15  is a timing chart for explaining an operation for a case where an error is generated in a data bus; 
           [0040]      FIG. 16  is a timing chart for explaining an operation for a case where an error is generated on the data bus during an EIT process; 
           [0041]      FIG. 17  is a system block diagram showing an important part of a second embodiment of the present invention; 
           [0042]      FIG. 18  is a flow chart for explaining an operation of an instruction sequencer of the second embodiment; 
           [0043]      FIG. 19  is a timing chart for explaining an operation for a case where an error is generated on the instruction bus; and 
           [0044]      FIG. 20  is a timing chart for explaining an operation for a case where an error is generated on the data bus. 
       
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS 
       [0045]    In the present invention, a bus error input part or means is provided with respect to an instruction bus and a data bus of a CPU. In addition, a bus error counter part or means is provided in the CPU, and contents of this bus error counter part or means are output to specify a page of a memory part. For example, the bus error counter part or means is updated when a judgement is made to jump to an exception vector of an undefined instruction if the bus error is generated on the instruction bus or, when the bus error is generated on the data bus. When the bus error is generated on the instruction bus, the process of the undefined instruction may be made after confirming that no bus error is generated on the data bus for an immediately preceding instruction. When the bus error is generated on the data bus, the process of the undefined instruction may be made by prohibiting a general-purpose register part from being set by an instruction subsequent to the undefined instruction. 
         [0046]    In a case where the parity error is generated on the instruction bus when the instruction is fetched, an instruction bus error signal is input to the instruction bus error input part or means. Hence, the CPU in this case can carry out the EIT process at a time when a judgement is made to execute the instruction for which the error is generated, and jump to a routine of an error process. In addition, in a case where the parity error is generated on the data bus, a data error signal is input to the data bus error input part or means. Accordingly, it is possible in this case to cancel the process of the subsequent instruction. Therefore, it is possible to process the priority orders of the error processes for the errors generated on the instruction bus and the data bus by a hardware process, thereby making it unnecessary to take into consideration the error process by a software process. 
         [0047]    A description will be given of embodiments of the error processing method and the information processing apparatus according to the present invention, by referring to  FIG. 9  and the subsequent figures. 
       First Embodiment 
       [0048]      FIG. 9  is a system block diagram showing an important part of a microprocessor applied with the present invention. A microprocessor  1  shown in  FIG. 9  has a CPU  2  and memory parts  3  and  4 . For example, the memory part  3  is formed by a flash memory, and the memory part  4  is formed by a RAM. The CPU  2  and the memory part  3  are connected via an instruction bus  5 , and the CPU  2  and the memory part  4  are connected via a data bus  6 . The instruction bus  5  includes an instruction access size signal line ISIZE, an instruction address line IA, an instruction data line ID, a ready signal line IRDY, an instruction bus error signal line IBERR, and an instruction bus error counter signal line IBER_CNTR. The data bus  6  includes a data access size signal line DSIZE, a data address line DA, a data line DD, a ready signal line DRDY, a data bus error signal line DBERR, and a data bus error counter signal line DBER_CNTR. The instruction bus error signal line IBERR and the data bus error signal line DBERR form the bus error in input part or means described above. 
         [0049]      FIG. 10  is a system block diagram showing a structure of the memory part  3 . The memory part  4  may have the same structure as the memory part  3 . The memory part  3  (or memory part  4 ) has a logic circuit  31 , a page memory part  32 , and a parity checker  33 . For example, the page memory part  32  is made up of page memories  0  to  4 . In  FIG. 10 , AD denotes an address of an instruction or data, R/WX denotes a read signal or a write signal, CS 0 X to CS 3 X denote chip select signals that are output from the logic circuit  31 , IBERR/DBERR denotes an instruction bus error signal or a data bus error signal that is output from the parity checker  33 , and IDout/DDout denotes an instruction output or a data output that is output from the page memory part  32 . The logic circuit  31  generates the chip select signals CS 0 X to CS 3 X based on the error counter signal ER_CNTR, the address AD of the instruction or data, and the read or write signal R/WX. Of course, the number of page memories forming the page memory part  32  is not limited to four. 
         [0050]      FIG. 11  is a diagram showing a relationship of the write, read and control signals, that is, the chip select signals CS 0 X to CS 3 X, of the memory part  3  (or memory part  4 ). In  FIG. 11 , a symbol “O” indicates the active logic level of the control signal, and a symbol “X” indicates the inactive logic level of the control signal. As shown in  FIG. 11 , the instruction or data is written with respect to all of the page memories  0  to  3  of the page memory part  32  during the write. On the other hand, the instruction or data is read from one page memory of the page memory part  32  indicated by the error counter signal ER_CNTR during the read. 
         [0051]      FIG. 12  is a system block diagram showing an important part of a first embodiment of the present invention. The CPU  2  generally includes a fetch part (F-part)  51 , a decode part (D-part)  52 , an execute part (E-part)  53 , a memory access part (M-part)  54 , and a general-purpose register part  55 . 
         [0052]    The F-part  51  carries out an instruction fetch to acquire the instruction code using an internal instruction bus Ibus. The fetched instruction code is set in an intermediate register Tf, and the address in this state is set in an intermediate register Tia_f. The F-part  51  includes an Ibus access controller  511 . 
         [0053]    The D-part  52  interprets the fetched instruction code, and prepares the data necessary for the operation (or computation) and the operation mode (addition, subtraction, etc.) to be executed by the E-part  53 . More particularly, the operation mode of an operation unit (ALU)  532  within the E-part  53  is decoded from the fetched instruction code, and register values to be used for the operation are set in intermediate registers Ta and Tb. A value to be written is set in an intermediate register Tdd when writing via an internal data bus Dbus. When an internal error caused by an external interrupt, an undefined instruction or the like is generated, an exception handler  522  within an instruction sequencer  521  jumps to an interrupt routine, and thus, the D-part  52  automatically supplies instructions for reading an interrupt vector table and saving contents of the PS register and the PC register of The general-purpose register part  55 . A decoder  523  and a multiplexer  524  are provided within the instruction sequencer  521 . The D-part  52  includes an intermediate register Tdec for latching the operation mode that is decoded by the instruction sequencer  521 , a matrix (or selector)  525 , and a multiplexer  526 . 
         [0054]    The M-part  54  receives the data from the E-part  53 , and makes a write or read with respect to the memory part using the internal data bus Dbus. More particularly, the M-part  54  makes a write or read with respect to the memory part, the general-purpose register part  55  (PC, R 0  to R 15 ) or the like for the operation result of the instruction. The M-part  54  includes an intermediate register Tia_m and a Dbus access controller  541 . 
         [0055]    The general-purpose register part  65  forms the internal registers of the CPU  2 , and includes the PC register, the PS register, a BEAR register, a BEDR register, a data bus error counter DBER_CNTR, an instruction bus error counter IBER_CNTR, the operation registers R 0  to R 15 , and a multiplexer  551 . In this embodiment, the PS register stores the instruction bus error IBER and the data bus error DBER, and indicates the generation of the bus error BERR. The BEAR register stores the address at the time when the bus error BERR is generated. The BEDR register stores the data at the time when the bus error BERR is generated. The data bus error counter DBER_CNTR counts the data bus error DBERR, and the instruction bus error counter IBER_CNTR counts the instruction bus error IBERR. The instruction bus error counter IBER_CNTR and the data bus error counter DBER_CNTR form a bus error counter part or means. 
         [0056]    In  FIG. 12 , ID denotes an instruction code, IA denotes the address of the instruction code, iberr denotes the internal instruction bus error output, and IBERR denotes the instruction bus error signal input from the parity checker  33  shown in  FIG. 10 . In addition, iaccess, irdy, IRDY and ISIZE respectively denote the internal access request of the instruction code, the internal ready signal output of the instruction code, the ready signal input of the instruction code from the memory part  3 , and the size of the instruction code output to the memory part  3 . Moreover, DA, DDout and DDin respectively denote the address of the data, the output data and the input data, dberr denotes the internal data bus error signal output, and DBERR denotes the data bus error signal input from the parity checker  33  shown in  FIG. 10 . Furthermore, daccess, drdy, DRDY and DSIZE respectively denote the internal access request of the data, the internal ready signal output of the data, the ready signal input of the data from the memory part  4 , and the size of the data output to the memory part  4 . 
         [0057]    The address of the instruction is successively stored in the intermediate registers Tia_f→Tia_dec→Tia_e→Tia_m of the parts  51  through  54 . If the operation result is set in the operation register Ri (i=0 to 15) for a certain instruction and the operation register Ri is to be used for the next instruction, the operation result set in the operation register Ri will not reach the D-part  52  in time. For this reason, a route that enables the output of the operation unit  532  to be set in the intermediate register Ta or Tb, that is, a register bypass route  531 , is provided. 
         [0058]    The processes of the instructions are carried out in the order in which the instructions are fetched by the CPU  2 . Each instruction successively transferred to the F-part  51 , the D-part  52 , the E-part  53  and the M-part  54 , every time one clock is input, and the CPU  2  operates according to the instruction. If an instruction I 1  is fetched by the F-part  51  and this instruction I 1  is transferred to the D-part  52  in response to the next clock, the F-part  51  simultaneously fetches an instruction  12  in response to this next clock. Such an operation is repeated, and a pipeline processing of the instructions I 1  through I 5  is made. 
         [0059]    In this embodiment, when the instruction bus error IBERR or the data bus error DBERR is generated, a bus error process is carried out to process the bus error without carrying out a retry process (excluding the case where the EIT process is carried out). 
         [0060]    First, a description will be given of a case where the instruction bus error IBERR is generated. In this case, when the instruction bus error IBERR is generated during the instruction fetch, the D-part  52  waits until it is confirmed that the data bus error DBERR is not generated at the immediately preceding instruction, in order to maintain instruction consistency. If no data bus error DBERR is generated at the immediately preceding instruction, the exception handler  522  of this embodiment supplies an instruction for jumping to the undefined exception in the next cycle, and then, the value of the instruction bus error counter IBER_CNTR is counted up. 
         [0061]    Next, a description will be given of a case where the data bus error DBERR is generated. In this case, when the data bus error DBERR is generated in the M-part  54 , values are prevented from being set in the operation registers R 0  to R 15  within the general-purpose register part  55  at the M-stage of the M-part  54 . The setting of the values in the operation registers R 0  to R 15  is prohibited after the instruction for which the data bus error DBERR is generated until the processing of the fetched instruction ends in the M-part  54  by the time the interrupt vector is read. After the data bus error DBERR is generated, the exception handler  522  supplies an instruction of the EIT process in the next cycle. 
         [0062]      FIG. 13  is a flow chart for explaining an operation of the instruction sequencer  521  of this first embodiment. After newly fetching an instruction code, the instruction code is input to the D-part  52  (step S 11 ), and the instruction code is decoded (step S 12 ). If the instruction code is normal as a result of the decoding, the operation mode of the instruction and the contents of the general-purpose register part  55  necessary for the operation are set in the intermediate registers Tdec, Ta, Tb and Tdd, and supplied to the E-part  53  (step S 13 ). Thereafter, in the next cycle, the next instruction is input and the decoding is started. 
         [0063]    If the decoded result is an undefined instruction or an external interrupt, a process according to the bus error or, a process according to the interrupt is carried out. The process advances to a step S 14  if the instruction bus error IBERR is generated. The process advances to a step S 23  or S 26  if the data bus error DBERR is generated. The process advances to a step S 23  if the data bus error DBERR is generated during the vector access or, the data bus error DBERR is generated during the saving of the content of the PS register. On the other hand, the process advances to a step S 26  if the data bus error DBERR is generated during the saving of the content of the PC register. The process advances to a step S 29  if other interrupts are generated. 
         [0064]    The step S 14  decides whether or not the data bus error output dberr is input, and a step S 15  inserts a No OPeration (NOP) if the decision result in the step S 14  is NO. A step S 16  decides whether or not the data bus error output dberr is input, and a step S 17  inserts an NOP if the decision result in the step S 16  is NO. If the decision result in the step S 14  or S 16  is YES, the process returns to the step S 14 . In order to jump to the routine of the exception interrupt, that is, the interrupt routine of the instruction bus error IBERR, a step S 18  acquires the vector address from the vector table, and supplies the operation mode for computing the address and the contents of the general-purpose register part  55  necessary for the operation to the E-part  53 . A step S 19  supplies the operation mode for saving the content of the PS register and the contents of the general-purpose register part  55  necessary for the operation to the E-part  53  in the next cycle. A step S 20  supplies the operation mode for saving the content of the PC register and the contents of the general-purpose register part  55  necessary for the operation to the E-part  53 . The steps S 18  through S 20  form the EIT process Thereafter, a step S 21  decides whether or not the data bus error output dberr is input. If the decision result in the step S 21  is NO, a step S 22  decides whether or not other interrupts or errors exist. If no other interrupt or error exists and the decision resulting the step S 22  is NO, the process returns to the step S 11  to decode the next instruction. If the decision result in the step S 21  or S 22  is YES, the process returns to the step S 14 . 
         [0065]    In order to jump to the routine of the exception interrupt, that is, the interrupt routine of the data bus error DBERR, the step S 23  acquires the vector address from the vector table, and supplies the operation mode for computing the address and the contents of the general-purpose register part  55  necessary for the operation to the E-part  53 . A step S 24  supplies the operation mode for saving the content of the PS register and the contents of the general-purpose register part  55  necessary for the operation to the E-part  53  in the next cycle. A step S 25  supplies the operation mode for saving the content of the PC register and the contents of the general-purpose register part  55  necessary for the operation to the E-part  53 , and the process advances to the step S 21 . The steps S 23  through S 25  form the EIT process. 
         [0066]    In order to jump to the routine of the exception interrupt, that is, the interrupt routine of the data bus error DBERR, the step S 26  acquires the vector address from the vector table, and supplies the operation mode for computing the address and the contents of the general-purpose register part  55  necessary for the operation to the E-part  53 . A step S 27  inserts the NOP in the next cycle. A step S 28  supplies the operation mode for saving the content of the PC register and the contents of the general-purpose register part  55  necessary for the operation to the E-part  53 , and the process advances to the step S 21 . The steps S 26  through S 28  form the EIT process. 
         [0067]    In order to jump to the routine of the other interrupt, the step S 29  acquires the vector address from the vector table, and supplies the operation mode for computing the address and the contents of the general-purpose register part  55  necessary for the operation to the E-part  53 . A step S 30  supplies the operation mode for saving the content of the PS register and the contents of the general-purpose register part  55  necessary for the operation to the E-part  53  in the next cycle. A step S 31  supplies the operation mode for saving the content of the PC register and the contents of the general-purpose register part  55  necessary for the operation to the E-part  53 , and the process advances to the step S 21 . The steps S 29  through S 31  form the EIT process. 
         [0068]    Accordingly, in the case where the instruction code input to the instruction sequencer  521  is normal, the process is carried out similarly to the conventional CPU. However, if the instruction bus error IBERR is generated during the decoding, the NOP is inserted until it is confirmed that no error of the data bus Dbus is generated by the immediately preceding instruction. This confirmation takes 2 cycles at the maximum. Thereafter, the instruction of the EIT process corresponding to the instruction bus error IBERR is input. On the other hand, if the data bus error DBERR is generated during the decoding, the instruction of the EIT process corresponding to the data bus error DBERR is input, and the same operation is carried out when the data bus error DBERR is generated during the EIT process, the data bus error DBERR is generated during the vector access, and the data bus error DBERR is generated during the saving of the content of the PS register. If the data bus error DBERR is generated during the saving of the content of the PC register, the process goes through a sequence route that carries out the retry of the vector access and the saving of the content of the PC register. 
         [0069]      FIG. 14  is a timing chart for explaining an operation for a case where an error is generated on the instruction bus Ibus. In  FIG. 14  and  FIGS. 15 ,  16 ,  19  and  20  which will be described later, F D, E and M respectively indicate the F-part  51 , the D-part  52 , the E-part  53  and the M-part  54  (that is, the processes of the F-stage, the D-stage, the E-stage and the M-stage), ED denotes the EIT process in the D-state, EE denotes the EIT process in the E-stage, and EM denotes the EIT process in the M-stage. In addition, a vertically elongated rectangular mark indicates the process of the register, a square mark formed by four rectangles indicates a process of the decoder, a circular mark with a “+” sign indicates the process of the ALU, nop indicates the No OPeration (NOP, LD indicates a LoaD instruction, and ST indicates a STore instruction. Further, in  FIGS. 14 through 16 , those parts that are the same as those corresponding parts in  FIG. 12  are designated by the same reference numerals. 
         [0070]    As shown in  FIG. 14 , the following processes are carried out in each of the cycles cycle 1  through cycle 9 . 
         [0071]    The cycle cycle 1  is the fetch cycle of the instruction I 1 . This instruction I 1  immediately precedes the instruction for which the instruction bus error IBERR is generated. 
         [0072]    The cycle cycle 2  is the decode cycle of the instruction I 1 , and is also the fetch cycle of the instruction I 2 . The instruction bus error IBERR is input to the CPU  2  during this cycle cycle 2 . 
         [0073]    In the cycle cycle 3 , the instruction bus error iberr, which is an internal signal, is obtained by latching the instruction bus error IBERR, which is an external signal, and input to the instruction sequencer  521 . Hence, the instruction sequencer  521  supplies to the E-part  53  an operation mode signal corresponding to the NOP instruction until it is confirmed that no data bus error DBERR of the immediately preceding instruction I 1  exists. 
         [0074]    In the cycle cycle 4 , the D-part  52  continues to supply the operation mode signal corresponding to the NOP instruction to the E-part  53 . In this state, the access of the data bus Dbus by the instruction I 1  is generated in the M-part  54 , and no data bus error DBERR is generated. Hence, the instruction bus error counter IBER_CNTR is counted up at the start of the cycle cycle 5 , and the memory part  3  (or memory part  4 ) is switched. If the data bus error DBERR is generated in the cycle cycle 4 , the operation for the case where the data bus error is generated is carried out as will be described later in conjunction with  FIG. 15 . 
         [0075]    In the cycle cycle 5 , in order to jump to the routine of the error process of the instruction bus Ibus responsive to the error that is generated during the access cycle of the instruction I 1  with respect to the data bus Dbus, the D-part  52  sets the operation mode for computing the vector address and the contents of the general-purpose register part  55  to the intermediate registers Ta and Tb and supplies the same to the E-part  53 . The contents of the general-purpose register  55  includes TBR which denotes the start address of the vector table, and VectNo which denotes the interrupt number and indicates the address position from the start of the vector table. 
         [0076]    In the cycle cycle 6 , the E-part  53  computes the address where the vector address of the routine of the error process with respect to the instruction bus Ibus exists. At the same time, the D-part  52  sets the operation mode for saving the content of the PS register and the contents of the general-purpose register part  55  in the intermediate registers Ta and Tb by the instruction sequencer  521 , and supplies the same to the E-part  53 . 
         [0077]    In the cycle cycle 7 , the vector address is fetched via the data bus Dbus, and is loaded to the PC register after the cycle cycle 7 . The E-part  53  computes the address where the content of the PS register is to be written, and sets the address in the intermediate register Te. The D-part  52  supplies to the E-part  53  the operation mode for computing the address for saving the value of the PS register (content of the EPC register) with which the error occurred and the contents of the general-purpose register part  55 . 
         [0078]    In the cycle cycle 8 , the value of the PC register that is loaded to the instruction bus Ibus from the vector table is output as the address IA of the instruction bus Ibus, and the instruction is fetched from the address of the routine of the error process with respect to the instruction bus Ibus. With respect to the data bus Dbus, the value of the PS register is written to the memory part  3  (or memory part  4 ), and the value of the operation register R 15  is updated. The E-part  53  computes the address for saving the value of the PC register (content of the EPC register) with which the error occurred. The D-part  52  checks to determine whether or not there is an interrupt or the like that is to be accepted next, and the NOP is inserted if there exists no interrupt or the like that is to be accepted next. On the other hand, if there exists an interrupt or the like that is to be accepted next, the D-part  52  prepares the operation mode for fetching the vector address of the interrupt and the contents of the general-purpose register part  55 . For the sake of convenience,  FIG. 14  shows a state where there exists no interrupt or the like that is to be accepted next. 
         [0079]    In the cycle cycle 9 , the value of the PC register (content of the EPC register) with which the error occurred is saved in the memory part  3  (or memory part  4 ) from the data bus Dbus, and the value of the operation register R 15  is updated. The E-part  53  carries out the NOP. The D-part  52  decodes the instruction of the routine of the error process with respect to the instruction bus Ibus. The normal process with respect to the instruction is carried out after the cycle cycle 9 . 
         [0080]    Therefore, the instruction bus error counter IBER_CNTR is counted up when the instruction bus error IBERR is generated and the data bus error DBERR is not generated for the immediately preceding instruction. If the instruction bus error IBERR is generated when all of the bits are “1” (all “1”s), not all of the bits become “0” (all “0”s), and the CPU  2  outputs a HALT signal and assumes the halt state. The instruction bus error counter IBER_CNTR is reset only when the CPU  2  is reset. 
         [0081]      FIG. 15  is a timing chart for explaining the operation for the case where the error is generated on the data bus Dbus. In  FIG. 15 , a step S 101  executes “LD@Rj, Ri”, a step S 102  cancels the instruction I 1 , and a step S 103  cancels the instruction I 2 . A step S 104  executes “LD@(TBR, VectNo), PC”, a step  5105  executes “ST PS, @-R 15 ”, and a step S 106  executes “ST EPC, @-R 15 ”. A step S 107  executes “NOP 1 ”, and the steps S 104  through S 106  are repeated if the next EIT process exists. A step S 108  executes the instruction of the exception program. TBR denotes the start address of the vector table, and VectNo. denotes the interrupt number and indicates the address position from the start of the vector table. As shown in  FIG. 15 , the following processes are carried out in each of the cycles cycle 1  through cycle 9 . 
         [0082]    The cycle cycle 1  is the fetch cycle of the instruction I 1  for which the data bus error DBERR is generated during the access cycle of the data bus Dbus. This instruction I 1  is an instruction for reading the data from the memory part  3  (or memory part  4 ) via the data bus Dbus. 
         [0083]    In the cycle cycle 2 , the instruction  12  (or instruction I 1 ) is fetched. The D-part  52  decodes the instruction I 1 . 
         [0084]    In the cycle cycle 3 , the E-part  53  computes the address of the instruction I 1 . The D-part  52  decodes the instruction I 2 . The F-part  51  fetches the instruction I 3 . 
         [0085]    In the cycle cycle 4 , the read access of the instruction I 1  is made via the data bus Dbus, but an error is generated, and the data bus error DBERR is input to the CPU  2 . Hence, the read data is not set in the general-purpose register part  55  (Ri). In addition, the setting of the values in the general-purpose register part  55  by the access of the data bus Dbus is prohibited up to the cycle cycle 6 . The E-part  53  executes the instruction I 2 , and the D-part  52  decodes the instruction I 3 . 
         [0086]    In the cycle cycle 5 , the access of the instruction I 2  is made via the data bus Dbus, but the data obtained by the access is not loaded to the general-purpose register part  55 . In other words, the instruction I 2  is cancelled. The data bus error counter DBER_CNTR is counted up responsive to the data bus error DBERR, and the memory part  3  (or memory part  4 ) is switched. The E-part  53  executes the instruction I 3 , and the D-part  52  supplies to the E-part  53  the operation mode for fetching the vector address and the value of the general-purpose register part  5  necessary for the operation mode, based on the data bus error dberr which is an internal signal obtained by latching the data bus error DBERR which is an external signal. In this state, the instruction that is fetched during the cycle cycle 4  is discarded. 
         [0087]    In the cycle cycle 6 , the cycle of the instruction I 3  is executed via the data bus Dbus, but the result thereof is not reflected to the general-purpose register part  55 . The E-part  53  computes the address of the vector. The D-part  52  sets the operation mode for saving the content of the PS register and the contents of the general-purpose register part  55  necessary for the operation mode in the intermediate registers. 
         [0088]    In the cycle cycle 7 , the vector is read from the address of the vector via the data bus Dbus, and the read vector is set in the PC register. The E-part  53  computes the address for saving the content of the PS register. The D-part  52  sets the operation mode for computing the address for saving the value of the PC register with which the error occurred, and the contents of the general-purpose register part  55  for the operation mode, in the intermediate registers. 
         [0089]    In the cycle cycle 8 , the instruction code is fetched by the address set in the PC register via the instruction bus Ibus, and obtains the start address of the routine of the error process. The content of the PS register is written to the memory part  3  (or memory part  4 ) via the data bus Dbus. The E-part  53  computes the address for saving the value of the PC register for which the error occurred. In the D-part  52 , the instruction sequencer  521  carries out the EIT process if the other exception interrupt exists, but inserts the NOP if no other exception interrupt exists. For the sake of convenience,  FIG. 15  shows a case where the NOP is inserted. 
         [0090]    In the cycle cycle 9 , the value of the PC register for which the error occurred is written to the memory part  3  (or memory part  4 ) via the data bus Dbus, and the E-part  53  carries out the NOP. The D-part  53  carries out the decoding of the step S 108 , and the normal process with respect to the instruction is carried out after the cycle cycle 9 . 
         [0091]    Therefore, the data bus error counter DBER_CNTR is counted up when the data bus error DBERR is generated on the data bus Dbus. If the data bus error DBERR is generated when all of the bits are “1” (all “1”s), not all of the bits become “0” (all “0”s), and the CPU  2  outputs a HALT signal and assumes the halt state. The data bus error counter DBER_CNTR is reset only when the CPU  2  is reset. 
         [0092]      FIG. 16  is a timing chart for explaining the operation for the case where an error is generated on the data bus during an EIT process. As shown in  FIG. 16 , the following processes are carried out in each of the cycles cycle 1  through cycle 13 . 
         [0093]    The cycles cycle 1  through cycle 8  correspond to a sequence in which the vector fetch, the saving of the content of the PS register, and the saving of the content of the PC register are carried out due to the data bus error DBERR that is generated during the access cycle of the normal instruction with respect to the data bus Dbus. 
         [0094]    In the cycle cycle 9 , the data bus error DBERR is generated during the access cycle of the data bus Dbus, in the sequence in which the content of the PC register is saved. For this reason, the updating of the register value with respect to the operation register R 15  is prohibited. 
         [0095]    In the cycle cycle 10 , the value of the data bus error counter DBER_CNTR is counted up, and the memory part  3  (or memory part  4 ) is switched. Since there is no other interrupt, no operation (NOP) is carried out on the data bus Dbus. The E-part  53  carries out the operation of the jump (JMP) instruction that has already been read. The D-part  52  does not decode the JMP instruction I 2 , but sets the operation mode and the register value for retrying the vector fetch in the intermediate registers. 
         [0096]    In the cycle cycle 11 , the cycle of the JMP instruction I 1  is executed on the data bus Dbus, but the result of this cycle is not set in the general-purpose register part  55 . The E-part  53  computes the address of the retried address fetch. The D-part  52  checks whether or not other interrupt exists, and inserts the NOP if no other interrupt exists. 
         [0097]    In the cycle cycle 12 , the access of the vector fetch is made on the data bus Dbus, and the result of this cycle is set in the PC register. The E-part  53  carries out the NOP because no other interrupt exists. The D-part  52  sets the operation mode for saving the value of the PC register for which the error occurred and the contents of the general-purpose register part  55  necessary for the operation mode in the intermediate registers. 
         [0098]    In the cycle cycle 13  and the subsequent cycles, the value of the PC register that is read by the vector fetch is loaded, the value of the PC register for which the error occurred is written to the memory part  3  (or memory part  4 ) via the data bus Dbus, and the instructions are successively executed. 
       Second Embodiment 
       [0099]      FIG. 17  is a system block diagram showing an important part of a second embodiment of the present invention. In  FIG. 17 , those parts that are the same as those corresponding parts in  FIG. 12  are designated by the same reference numerals, and a description thereof will be omitted. An undefined code replacing part  512  is provided in an F-part  51 A of a CPU  2 A. This undefined code replacing part  512  may be formed by a selector. 
         [0100]    In this embodiment, if the instruction bus error IBERR or the data bus error DBERR is generated, a retry is carried out, and a bus error process is carried out if the bus error is still generated. 
         [0101]    First, a description will be given of a case where the instruction bus error IBERR is generated. When the instruction bus error IBERR is generated during the instruction fetch, all pipeline stages are re-executed, the retry of the F-stage of the F-part  51  is carried out, and the value of the instruction bus error counter IBER_CNTR is updated. If the instruction bus error IBERR is generated even after the retry is carried out a specified number of times, the exception handler  522  carries out the EIT process of the undefined exception. When the data bus error DBERR is generated for the instruction immediately preceding the instruction for which the instruction bus error IBERR is generated, the process of the undefined exception is cancelled. 
         [0102]    Next, a description will be given of a case where the data bus error DBERR is generated. When the data bus error DBERR is generated in the M-part  54 , values are prevented from being set in the operation registers R 0  to R 15  within the general-purpose register part  55  in the M-stage of the M-part  54 . In addition, all pipeline stages are re-executed, the retry of the M-stage of the M-part  54  is carried out, and the value of the data bus error counter DBER_CNTR is updated. If the data bus error DBERR is generated even after the retry is carried out a specified number of times, the exception handler  522  carries out the EIT process of the undefined exception. In this embodiment, when the data bus error DBERR is generated during a cycle, the exception handler  522  supplies the instruction of the EIT process in this cycle. 
         [0103]    If the data bus error DBERR is generate during the EIT process, the retry of the EIT process is carried out. The generation pattern of this retry may be the same as that of the first embodiment described above. 
         [0104]      FIG. 18  is a flow chart for explaining the operation of the instruction sequencer  521  of this second embodiment. In  FIG. 18 , those steps that are the same as those corresponding steps in  FIG. 13  are designated by the same reference numerals, and a description thereof will be omitted. In  FIG. 18 , if the decoded result is an undefined instruction or, an external (or other) interrupt is accepted, a process according to the bus error or, a process according to the interrupt, is carried out. If the data bus error DBERR is generated, the process advances to the step S 23  or S 26 . If the data bus error DBERR is generated during the vector access or, during saving of the content of the PS register, the process advances to the step S 23 . On the other hand, if the data bus error DBERR is generated during saving of the content of the PC register, the process advances to the step S 26 . If the other interrupt is generated, the process advances to the step S 29 . 
         [0105]    After the step S 25  or S 28  or S 31 , a step S 41  decides whether or not the other interrupt or error exists. If no interrupt nor error exists and the decision result in the step S 41  is NO, the process returns to the step S 11  to decode the next instruction. If the decision result in the step S 41  is YES, the process returns to the process that is carried out when the decision result in the step S 12  is NO. 
         [0106]    Accordingly, in the case where the instruction code input to the instruction sequencer  521  is normal, the process is carried out similarly to the conventional CPU. However, if the instruction bus error IBERR is generated during the decoding, the undefined code replacing part  512  replaces the instruction by the undefined instruction between the F-part  51  and the D-part  52 , instead of copying by the instruction sequencer  521 , and this instruction is not treated by the instruction sequencer  521 . The process for the case where the data bus error DBERR is generated is the same as that of the first embodiment described above. 
         [0107]      FIG. 19  is a timing chart for explaining the operation for the case where the error is generated on the instruction bus Ibus. As shown in  FIG. 19 , the following processes are carried out in each of the cycles cycle 1  through cycle 7 . 
         [0108]    In the cycle cycle 1 , the fetch cycle of the instruction I 1  is started. 
         [0109]    If the fetch cycle of the instruction  12  is started in the cycle cycle 2  but the instruction bus error IBERR is generated, and the value of the instruction bus error counter IBER_CNTR is updated responsive thereto in the cycle cycle 3 , the instruction I 2  is re-fetched from the same address of the memory part  3  (or memory part  4 ). In this state, the decoded information of the instruction I 1  remains stored in the intermediate registers Tdec, Ta, Tb and Tdd of the D-part  52 . 
         [0110]    In the cycle cycle 4 , the instruction code input to the D-part  52  (decoder  523 ) is replaced by the undefined instruction code, because the instruction bus error IBERR is generated when all bits of the instruction bus error counter IBER_CNTR are “1” (all “1”s) during the cycle cycle 3 . Hence, the operation information supplied to the E-part  53  is the operation information set in the intermediate registers for carrying out the vector fetch of the undefined instruction interrupt. 
         [0111]    In the cycle cycle 5 , the cycle of the instruction I 1  is carried out via the data bus Dbus, no data bus error DBERR is generated, and the next instruction is not cancelled. The E-part  53  computes the address for the vector fetch. The D-part  52  sets the operation information for saving the content of the PS register into the intermediate register. 
         [0112]    In the cycle cycle 6 , the vector fetch is carried out via the data bus Dbus, and the data read from the memory part  3  (or memory part  4 ) is set in the PC register. The E-part  53  computes the address for saving the content of the PC register. The D-part  52  sets into the intermediate register the operation information for computing the address for saving the value of the PC register (content of the EPC register) for which the error occurred. 
         [0113]    In the cycle cycle 7  and the subsequent cycles, the value set in the PC register is output as the address value on the instruction bus Ibus, and the instruction at the start of the routine of the error process is fetched. The content of the PS register is saved in the memory part  3  (or memory part  4 ) via the data bus Dbus, and the value of the operation register. R 15  is updated. The E-part  53  computes the address for saving the content of the EPC register. The D-part  52  sets the operation information of the vector fetch of the interrupt into the intermediate register if the other interrupt exists.  FIG. 19  shows a case where no other interrupt exists, and thus, the NOP is inserted. The cycles executed thereafter are the same as those of the pipeline processing of the instructions in the normal or conventional CPU. 
         [0114]      FIG. 20  is a timing chart for explaining the operation for the case where the error is generated on the data bus Dbus. In  FIG. 20 , a step S 201  executes “LD@Rj, Ri”, a step S 202  cancels the instruction I 1 , and a step S 203  cancels the instruction I 2  and executes “LD (TBR, VectNo), PC”. A step S 204  executes “ST PS, @-R 15 ”, and a step S 205  executes “ST EPC, @-R 15 ”. A step S 206  executes “NOP 1 ”, and the steps S 203  through S 205  are repeated if the next EIT process exists. A step S 207  executes the instruction of the exception program. As shown in  FIG. 20 , the following processes are carried out in each of the cycles cycle 1  through cycle 8 . 
         [0115]    In the cycles cycle 1  through cycle 4 , the processes of the LoaD (LD) instruction for which the error is generated on the data bus Dbus, the next instruction I 1  and the instruction I 2  successively carried out by the pipeline processing. It is assumed for the sake of convenience that, in  FIG. 20 , the data bus error DBERR is generated on the data bus Dbus for the LD instruction in the cycle cycle 4 . 
         [0116]    In the cycle cycle 5 , the data bus error counter DBER_CNTR is counted up because the data bus error DBERR is generated in the cycle cycle 4 , and the retry of the cycle of the data bus Dbus is carried out in the cycle cycle 5 . In this state, the results on the instruction bus Ibus, the D-part  52  and the E-part  53  are not loaded to the intermediate registers, and the values are stored as they are. If the data bus error DBERR is generated when all bits of the data bus error counter DBER_CNTR are “1” (all “1”s”), the EIT process of the data bus error DBERR is carried out. The instruction (instruction I 1 ) next to the instruction for which the data bus error DBERR occurred is cancelled by not reflecting the result of the M-stage of the M-part  54  to the operation registers R 0  to R 15  within the general-purpose register part  55 . In addition, the instruction sequencer  521  replaces the next instruction I 2  by the instruction for making the vector fetch in the D-stage  52 , and supplies information for computing the address of the vector address to the E-part  53 . 
         [0117]    In the cycle cycle 6 , the E-part  53  computes the address of the vector address. In addition, the operation information for saving the content of the PS register is set in the intermediate register. 
         [0118]    In the cycle cycle 7 , the vector address is read via the data bus Dbus, and the start address of the routine of the error process with respect to the data bus error DBERR is read and set in the PC register. The E-part  53  computes the address for saving the content of the PS register. The D-part  52  supplies to the E-part  53  the operation information for saving the value of the PC register (content of the EPC register) for which the error occurred. 
         [0119]    In the cycle cycle 8  and the subsequent cycles, the instruction is read from the address of the new value in the PC register, via the instruction bus Ibus. The content of the PS register is saved in the memory part  3  (or memory part  4 ) via the data bus Dbus. The E-part  53  computes the address for saving the content of the EPC register. The operation carried out thereafter is the same as that of the access made by the normal or conventional CPU. 
         [0120]    Therefore, according to each of the embodiments described heretofore, the bus error input part or means or, the bus error signal line, is provided in the CPU. For this reason, even when an error such as the parity error is generated in the memory part, it is possible to carry out an error process and continue the execution of the CPU. In addition, when the CPU fetches an instruction and detects the parity error, the instruction for which the parity error occurred will not be executed. No meaningless exception will be generated even if the CPU fetches the instruction, detects the parity error and does not execute this instruction. Furthermore, even if the bus error is generated on the instruction bus and the data bus error is thereafter generated for the immediately preceding instruction, it is unnecessary to take into consideration the priority order of the processes by software. It is possible to switch the memory parts by the bus error counter part or means immediately after the bus error is generated. 
         [0121]    This application claims the benefit of a Japanese Patent Application No. 2006-269635 filed Sep. 29, 2006, in the Japanese Patent Office, the disclosure of which is hereby incorporated by reference. 
         [0122]    Further, the present invention is not limited to these embodiments, but various variations and modifications may be made without departing from the scope of the present invention.