WO2010064312A1 - 記憶装置および故障診断方法 - Google Patents
記憶装置および故障診断方法 Download PDFInfo
- Publication number
- WO2010064312A1 WO2010064312A1 PCT/JP2008/072029 JP2008072029W WO2010064312A1 WO 2010064312 A1 WO2010064312 A1 WO 2010064312A1 JP 2008072029 W JP2008072029 W JP 2008072029W WO 2010064312 A1 WO2010064312 A1 WO 2010064312A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- bit
- input data
- address
- inversion
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/56—External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/56—External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
- G11C29/56008—Error analysis, representation of errors
Definitions
- the present invention relates to a storage device and a failure diagnosis method, and more particularly to a storage device in which data is written and read in a predetermined order and a failure diagnosis method for such a storage device.
- LSI Large Scale Integration
- POST Power-on-Self-Test
- LSIs have a first-in first-out (FIFO) type storage device.
- FIFO first-in first-out
- the data input first is output first.
- FIFO buffer circuit that performs input / output control by first-in first-out
- the FIFO protects the data for each address by adding an error correcting code (ECC) generated by hardware.
- ECC error correcting code
- the FIFO is made using flip-flops or RAM (Random Access Memory).
- the FIFO is used in various parts in the LSI such as a packet transmission queue and a reception queue, and a temporary recording of control information.
- a FIFO operation test is also performed.
- FIFO failure diagnosis is performed by inputting predetermined data into the LSI in accordance with a test program for a mass production test or a POST test.
- the FIFO failure detection method is performed by both “test program expected value mismatch” and “ECC error detection”.
- Faults detected by executing a test on the FIFO include a “fixed fault” and a “delay fault”.
- Fixed failure refers to a state in which a bit value with FIFO is a fixed value of “0” or “1” due to a short circuit of the wiring. For example, even if “1” is written for a bit that has a fixed failure in the “0” value, the bit value remains “0”.
- a delay fault is a failure in reading because the read delay from the FIFO is not within the operating frequency of the LSI.
- the test program in order to detect a delay fault, includes a test pattern in which the data value of the previous address is different from the data value of the next address, and the value changes from “0” to “1”. It is necessary to have been. JP-A-1-309154 JP-A-5-165734 JP 2006-208077 A
- each field constituting the header format has a meaning such as an address and a type in the header format written to the FIFO. Therefore, it is necessary to create a test program by recognizing how fields such as address and type are written in the FIFO.
- the ECC part it is necessary to create a test program by knowing the ECC generation formula. In other words, in order to improve the diagnosis rate, it is necessary to create a test program so as to obtain a desired test pattern after familiarizing complicated hardware logic circuits.
- the diagnostic rate can be improved as much as possible by creating a test program with a random long pattern without understanding the hardware logic circuit.
- a data recording method for writing and reading data in a predetermined order includes a LIFO (Last In, First Out) method in addition to the FIFO method.
- the LIFO method is an input / output method (last-in first-out method) for reading data from newly stored data in order.
- a buffer circuit so-called stack
- LIFO a buffer circuit that inputs and outputs data by the LIFO method
- the present invention has been made in view of the above points, and provides a storage device and a failure diagnosis method capable of performing failure diagnosis with a high diagnosis rate without depending on the contents of an input test pattern. Objective.
- the provided storage device holds written data and reads the held data.
- the storage device includes a storage unit, a write address counter, an input data inversion unit, an input data selection unit, a read address counter, an output data inversion unit, and an output data selection unit.
- the storage unit has a plurality of entry areas. Among the plurality of entry areas, the storage unit writes data based on a bit included in a write address that specifies an entry area to be written, and reads that specifies an entry area to be read. Data is read based on the bits included in the address.
- the write address counter outputs a write address to the storage unit.
- the input data inverting unit inverts input data to the storage unit and outputs inverted input data.
- the input data selection unit selects input data or inverted input data based on the bit included in the write address, and writes the selected data in the storage unit based on the bit included in the write address.
- the read address counter outputs a read address to the storage unit.
- the output data inverting unit inverts the output data from the storage unit and outputs inverted output data.
- the output data selection unit reads the output data from the storage unit based on the bit included in the read address, and selects and outputs the output data or the inverted output data based on the bit included in the read address.
- the provided storage device holds written data and reads the held data.
- the storage device includes a storage unit, a control address counter, an inversion control counter, an input data inversion unit, an input data selection unit, an output data inversion unit, and an output data selection unit.
- the storage unit has a plurality of entry areas, and performs data writing or data reading based on a control address that designates an entry area to be written or read from among the plurality of entry areas.
- the control address counter outputs the control address to the storage unit.
- the inversion control counter performs counting when the control address output from the control address counter changes from 0 to a negative value, and outputs the counted inversion control counter value.
- the input data inverting unit inverts input data to the storage unit and outputs inverted input data.
- the input data selection unit selects input data or inverted input data based on the bit included in the control address and the inverted control counter value, and selects the storage unit based on the bit included in the control address and the inverted control counter value. Write the data.
- the output data inverting unit inverts the output data from the storage unit and outputs inverted output data.
- the output data selection unit reads the output data from the storage unit based on the control address, and selects and outputs the output data or the inverted output data based on the bit included in the control address and the inverted control counter value. .
- a failure diagnosis method for a storage device having a plurality of entry areas as described below is provided.
- the output data in the entry area indicated by the read address is read and output, If it is necessary to invert the output data, the end point indicated by the read address Reading the output data of the re-regions, and outputs the inverted output data obtained by inverting the read-out output data.
- a failure diagnosis method for a storage device having a plurality of entry areas as described below is provided.
- the provided fault diagnosis method based on an inversion control counter value obtained by counting the number of times that the control address output from the control address counter makes a negative transition from 0, and a bit included in the write address indicated by the control address counter, If it is necessary to invert the input data and the output data, and if the input data does not need to be inverted, the input data is written to the entry area indicated by the write address, and if the input data needs to be inverted
- the inverted input data obtained by inverting the input data is written to the entry area indicated by the write address, and if the output data is not inverted, the output data of the entry area indicated by the read address is read and output. If the output data needs to be inverted, it is indicated by the read address. Reading the output data of the entry area, and outputs the inverted output data obtained by inverting the read-out output data.
- FIG. 1 It is a figure which shows the outline
- FIG. 1 is a diagram showing an outline of a technique applied to the embodiment.
- FIG. 1 shows a data input / output circuit for a storage device.
- the storage device includes a storage unit 1, a write address counter 2, an input data inversion unit 3, an input data selection unit 4, a read address counter 5, an output data inversion unit 6, and an output data selection unit 7.
- Storage unit 1 has a plurality of entry areas 1a and 1b. In the example of FIG. 1, it is assumed that the storage unit 1 has only two entry areas 1a and 1b for easy understanding of the processing. Addresses are assigned to the entry areas 1a and 1b. In the example of FIG. 1, the address of the entry area 1a is “0”, and the address of the entry area 1b is “1”.
- the storage unit 1 writes data based on a bit included in a write address that designates an entry area to be written out of the plurality of entry areas 1a and 1b.
- the storage unit 1 reads data based on a bit included in a read address that specifies an entry area to be read.
- the write address counter 2 outputs the write address to the storage unit 1.
- the write address counter 2 has 2 bits more bits than the number of bits (1 bit in the example of FIG. 1) necessary for designating the addresses of all of the plurality of entry areas 1a and 1b in the storage unit 1. ing.
- the extra 2 bits are control bits for performing inversion control of the input data 8.
- the input data inverting unit 3 inverts the input data 8 to the storage unit 1 and outputs inverted input data.
- To invert the input data 8 is to change the value of each bit constituting the input data 8 to an opposite value. That is, the value “0” is changed to “1”, and the value “1” is changed to “0”.
- the input data selection unit 4 selects input data or inverted input data based on the bits included in the write address. Then, the input data selection unit 4 writes the selected data in the storage unit 1 based on the bits included in the write address.
- Read address counter 5 outputs the read address to the storage unit 1.
- the read address counter 5 has 2 bits more bits than the number of bits (1 bit in the example of FIG. 1) necessary for designating the addresses of all the entry areas 1a and 1b in the storage unit 1. ing.
- the extra 2 bits are control bits for performing inversion control of output data.
- the output data inverting unit 6 inverts the output data from the storage unit 1 and outputs inverted output data.
- the output data selection unit 7 reads the output data from the storage unit 1 based on the bits included in the read address, and selects and reads the output data or the inverted output data based on the bits included in the read address. Output as data 9.
- the data input of the test pattern 8a prepared in advance is repeated four times.
- the test pattern 8 a has a data amount corresponding to the storage capacity of the storage unit 1.
- the test pattern 8a is input for each data having a data length corresponding to the storage capacity of each of the entry areas 1a and 1b.
- the storage capacity of the entry areas 1a and 1b is 8 bits (1 byte). Accordingly, a 2-byte test pattern 8a is input as input data 8 byte by byte.
- the initial value of the write address counter 2 is “000”. Each time the input data 8 is written to the storage unit 1, the value of the write address counter 2 is counted up. When the write address counter 2 is counted up, the value of the least significant bit alternately repeats “0” and “1”. The least significant bit of the write address counter 2 indicates the address of the entry area to which data is to be written. Accordingly, the entry area 1a at the address “0” and the entry area 1b at the address “1” are alternately subjected to data writing.
- the data to be written in the entry area to be written is selected by the input data selection unit 4.
- the input data selection unit 4 can recognize what number of inputs of the test pattern 8 a is made by the upper 2 bits of the write address counter 2. That is, if the upper 2 bits are “00”, the first round. “01” is the second round, “10” is the third round, and “11” is the fourth round. Therefore, the input data selection unit 4 generates four combinations of non-inverted and inverted data to be selected between the first to fourth rounds for a set of two entry areas whose reading order is continuous. To do.
- the write address value determined to select the inverted input data and the inverted input data are indicated by a thick frame.
- the input data selection unit 4 selects both non-inverted input data.
- the input data selection unit 4 selects inverted input data.
- the input data selection unit 4 selects non-inverted input data for the entry area 1a and selects inverted input data for the entry area 1b.
- the input data selection unit 4 selects inverted input data for the entry area 1a and non-inverted input data for the entry area 1b.
- the written data is sequentially read from the entry areas 1a and 1b in the storage unit 1.
- the entry area to be read is specified by a bit output from the read address counter 5.
- the initial value of the read address counter 5 is “000”, and is incremented each time data is read from the storage unit 1.
- the value of the least significant bit alternately repeats “0” and “1”.
- the least significant bit of the read address counter 5 indicates the address of the entry area from which data is to be read. Accordingly, the entry area 1a at the address “0” and the entry area 1b at the address “1” are alternately subjected to data reading.
- the output data from the entry area to be read is input to the output data selection unit 7 as it is, and the data inverted by the output data inversion unit 6 is input to the output data selection unit 7. Then, the data to be output as the read data 9 is selected by the output data selection unit 7.
- the output data selection unit 7 can recognize the number of cycles of the test pattern 8 a based on the upper 2 bits of the read address counter 5. That is, if the upper 2 bits are “00”, the first round, “01” is the second round, “10” is the third round, and “11” is the fourth round. Therefore, the output data selection unit 7 has a combination of non-inverted and inverted data to be selected between the first to fourth rounds for the set of two entry areas in which the reading order is continuous. Output data or inverted output data is selected to be the same. In other words, if the output data is non-inverted input data, the output data selection unit 7 selects non-inverted output data. If the output data is inverted input data, the output data selection unit 7 selects inverted output data.
- the read data 9 output from the output data selection unit 7 has the same content as the input test pattern 8a unless the storage unit 1 has a fixed fault or a delay fault.
- the read data for four cycles includes a value different from the test pattern 8a, it can be understood that a fixed fault or a delay fault has occurred.
- the test pattern 8a may be input up to the second round. At this time, while the test pattern 8a is input twice, the most significant bit of the write address counter 2 remains "0". Then, when only the fixed fault is detected, the write address counter 2 is 1 more than the bit width (1 bit in the example of FIG. 1) necessary for expressing the addresses of the entry areas 1a and 1b in the storage unit 1. It is only necessary to have extra bits (control bits). That is, the most significant bit of the write address counter 2 shown in FIG.
- the input data selection unit 4 determines whether to write the data value to be written in the entry areas 1a and 1b by inversion or not to invert by the control bit of the write address counter 2.
- the read address counter 5 is a bit (control bit) that is one bit more than the bit width (1 bit in the example of FIG. 1) necessary to express the addresses of the entry areas 1a and 1b in the storage unit 1.
- the output data selection unit 7 determines whether to read out the data read from the entry areas 1a and 1b by inversion or not by the control bit of the read address counter 5.
- the input of the test pattern 8a is repeated twice.
- “0” and “1” are always written and read once for all the bits in the storage unit 1. That is, “1” is written to the bit where “0” is written the first time. Similarly, “0” is written to the bit where “1” is written the first time. Thereby, it is possible to detect both the fixed fault fixed to “0” and the fixed fault fixed to “1”.
- the test pattern 8a only needs to have a data amount equal to the storage capacity of the storage unit 1, and the content may be an arbitrary value.
- the circuit of the memory device shown in FIG. 1 can be assembled with a relatively simple logic circuit. Therefore, even if the memory device having the circuit configuration shown in FIG. 1 is incorporated into an LSI in the mass production stage, there is no concern that the die size of the LSI will increase. Therefore, the embodiment will be described in detail by taking the case where the storage device shown in FIG. 1 is mounted on an LSI mounted on a server as an example.
- a storage device having the configuration shown in FIG. 1 is used as a queue control buffer.
- a circuit that performs queue control includes a FIFO that stores data protected by ECC, and reads data in order from the previously stored data. If data protected by such ECC is stored in the FIFO, it is possible to detect the presence or absence of a fixed failure or a delay failure by an ECC check at the time of reading. Therefore, in the first embodiment, it is assumed that a FIFO having a diagnostic circuit based on ECC check is incorporated in an LSI mounted on a server, and a failure diagnosis of the FIFO is performed.
- FIG. 2 is a configuration diagram of the server according to the present embodiment.
- the server 100 is required to have high reliability. In order to increase the reliability of the server 100, it is important to reduce the probability that a system failure will occur due to a failure during system operation. For this reason, it is desirable to reliably start the system by removing a faulty part by diagnosis such as POST before the server 100 is operated.
- the server 100 includes a plurality of system boards (SB) 110,..., 110n, a plurality of IO boards (IOB) 120,..., 120n, one service processor board (SVPB) 130, and one backplane board (BP) 140.
- SB system boards
- IOB IO boards
- SVPB service processor board
- BP backplane board
- Each of the system boards 110,..., 110n and each of the IO boards 120,..., 120n are connected to the backplane board 140 by a system bus (system bus) and a maintenance bus (M-bus).
- the service processor board 130 is connected to the backplane board 140 by a maintenance bus.
- the system buses are connected and the maintenance buses are connected.
- the system buses connect the system boards and the IO boards.
- the system boards 110,..., 110n and the IO boards 120,..., 120n are connected to the service processor board 130 by the maintenance bus.
- the system boards 110,..., 110n perform arithmetic processing related to services to be provided by the server 100.
- a CPU Central Processing Unit
- DRAM Dynamic Random Access Memory
- the IO boards 120,..., 120n perform high-speed communication with other servers.
- a LAN controller on one IO board accesses a DRAM on any system board, a packet is transmitted on the system bus from the accessing IO board.
- the transmitted packet is input to the accessed system board via the backplane board 140.
- the maintenance bus connects the service processor on the service processor board 130 and each LSI on another board.
- the service processor performs initial setting and status monitoring of the LSI via the maintenance bus. Further, the service processor notifies the server management terminal 200 of the state of the server via a management LAN (Local Area Network).
- a management LAN Local Area Network
- the test program for FIFO diagnosis in the mass production test is transferred from the server management terminal 200 to the server 100 via the management LAN, for example. Then, after initialization of the LSI or the like by the service processor, the test program is stored in the DRAM on the system board. Then, the test program is executed by the CPU on the system board.
- FIG. 3 is a diagram showing the configuration of the system board.
- the system board 110 includes a plurality of CPUs 111 and 112, a plurality of DRAMs 113 and 114, a single memory controller (MC) 115, and a single ROM (Read Only Memory) 116.
- the plurality of CPUs 111 and 112, the plurality of DRAMs 113 and 114, and the ROM 116 are connected to the memory controller 115.
- the CPUs 111 and 112 execute data processing according to instructions described in the program.
- the DRAMs 113 and 114 temporarily store programs to be executed by the CPUs 111 and 112, data necessary for execution, execution results, and the like.
- the memory controller 115 is connected to other system boards and IO boards via the system bus.
- the memory controller 115 performs access control based on packets transmitted from the CPUs 111 and 112. For example, the memory controller 115 accesses one of the DRAMs 113 and 114 in the system board 110, a DRAM in another system board, a LAN controller and a storage interface in the IO board based on a packet transmitted from the CPUs 111 and 112. To do.
- the memory controller 115 is connected to the service processor board 130 via a maintenance bus.
- the ROM 116 stores a test program necessary for POST and a program necessary for device initialization processing.
- the CPUs 111 and 112 read a program stored in the ROM 116 via the memory controller 115 and execute a test program.
- FIG. 4 is a diagram showing the configuration of the IO board.
- the IO board 120 includes one IO controller (IOC) 121, a LAN controller 122, and a storage interface 123.
- the IO controller 121 is connected to each of the LAN controller 122 and the storage interface 123 via individual IO buses.
- the IO controller 121 is connected to other system boards and IO boards via a system bus. Further, the IO controller 121 is connected to the service processor board 130 via a maintenance bus.
- the LAN controller 122 is a computer network controller having a transfer rate of gigabit order. For example, the LAN controller 122 performs communication conforming to a standard called Gigabit Ethernet (registered trademark).
- the LAN controller 122 has a LAN port 125. By connecting a LAN cable connected to another device to the LAN port 125, data communication between the connection destination device and the server 100 becomes possible.
- the HDD 124 is connected to the storage interface 123.
- the storage interface 123 is a communication interface with the HDD 124.
- the storage interface 123 performs communication conforming to the SAS (Serial Attach / SCSI (Small Computer System Interface)) standard.
- FIG. 5 is a diagram showing the configuration of the service processor board.
- the service processor board 130 has one service processor (SVP) 131 and one DRAM 132.
- the service processor 131 of the service processor board 130 is a CPU provided for managing the server 100.
- the service processor 131 is connected to the memory controller of the system board and the IO controller of the IO board by a maintenance bus.
- the service processor 131 is connected to the management LAN port 133.
- a LAN cable connected to the server management terminal 200 is connected to the management LAN port 133.
- a packet input from the server management terminal 200 is input to the service processor 131 via the management LAN port 133.
- the packet generated by the service processor 131 is transmitted to the server management terminal 200 via the management LAN port 133.
- a chip having functions such as a CPU and a controller in each board shown in FIGS. 3 to 5 includes a FIFO.
- the IO controller 121 is provided with a FIFO in an input / output unit with a system bus or an IO bus.
- FIG. 6 is a diagram showing the internal configuration of the IO controller.
- the IO controller 121 is an LSI mounted on the IO board 120.
- the IO controller 121 has protocol conversion as its main function.
- the IO controller 121 has one system bus interface (I / F) 121a, two IO bus interfaces (I / F) 121b and 121c, and one maintenance bus interface (I / F) 121d.
- the system bus interface 121a is connected to a memory controller on the system board and an IO controller on another IO board via the backplane board 140.
- the IO bus interface 121b is connected to the storage interface 123.
- the IO bus interface 121c is connected to the LAN controller 122.
- the maintenance bus interface 121d is connected to the service processor 131 on the service processor board 130 via the backplane board 140.
- a transmission FIFO 121e is connected to the system bus interface 121a.
- the transmission FIFO 121e is used as a transmission buffer for data transmitted via the system bus interface 121a.
- a reception FIFO 121f is connected to the system bus interface 121a.
- the reception FIFO 121f is used as a reception buffer for data received via the system bus interface 121a.
- a transmission FIFO 121g is connected to the IO bus interface 121b.
- the transmission FIFO 121g is used as a transmission buffer for data to be transmitted via the IO bus interface 121b.
- a reception FIFO 121h is connected to the IO bus interface 121b.
- the reception FIFO 121h is used as a reception buffer for data received via the IO bus interface 121b.
- a transmission FIFO 121i is connected to the IO bus interface 121c.
- the transmission FIFO 121i is used as a transmission buffer for data transmitted via the IO bus interface 121c.
- a reception FIFO 121j is connected to the IO bus interface 121c.
- the reception FIFO 121j is used as a reception buffer for data received via the IO bus interface 121c.
- the protocol conversion unit 121k converts the format of the packet input from the system bus interface 121a into the IO bus packet format according to each protocol. Similarly, the protocol conversion unit 121k converts the format of a packet input from the IO bus interfaces 121b and 121c into a system bus format according to each protocol.
- the routing control unit 121m performs routing of packets transmitted from the system bus or the IO bus.
- a maintenance bus I / F is connected to the three transmission FIFOs 121e, 121g, and 121i.
- the service processor 131 mounted on the service processor board 130 accesses the transmission FIFOs 121e, 121g, and 121i via the maintenance bus and performs initial settings such as a reverse control flag. Further, the service processor 131 performs state monitoring such as detection of ECC of the transmission FIFOs 121e, 121g, and 121i in the IO controller 121 and a signal (UE / CE) instructing to increment the address counter via the maintenance bus.
- the IO controller 121 notifies the service processor 131 of an error occurrence via the maintenance bus when a failure is detected.
- the service processor 131 performs error processing according to the error content, and notifies the server management terminal 200 of the error occurrence via the management LAN.
- FIG. 7 is a diagram showing an input / output circuit to the FIFO.
- the example of FIG. 7 is an input / output for diagnosing a transmission FIFO 121i to the IO bus interface 121c connected to the LAN controller 122 among the FIFOs in the LSI functioning as the IO controller 121 mounted on the IO board 120. .
- the bit width of one unit storage area of the transmission FIFO 121i is 72 bits.
- One unit storage area in the transmission FIFO 121i has 64-bit data and 8-bit ECC.
- the depth of the transmission FIFO 121i is 256.
- the depth of the transmission FIFO 121i is the number of entry areas (unit storage areas for storing data) included in the transmission FIFO 121i. That is, the transmission FIFO 121i can store 256 pieces of data with ECC. 256 addresses can be expressed by 8 bits.
- the write address counter 121n and the read address counter 121o are composed of 10 bits. That is, the address of the transmission FIFO 121i can be expressed by 8 bits, but the write address counter 121n and the read address counter 121o have a bit number that is 2 bits more than that.
- the address counter is composed of one bit more than the FIFO address size.
- the MSB (Most Significant Bit) of the address counter is used for detecting overflow and underflow.
- the 0th bit corresponds to the LSB (Least Significant Bit) of the address counter conventionally used.
- the eighth bit corresponds to a bit (MSB of a conventional address counter) conventionally used for detecting overflow and underflow.
- the ninth bit is a bit specially added as an inversion control flag.
- the inversion control flag is a 1-bit flag whose initial value is “0”.
- the value of the inversion control flag is inverted at the time of counting up after the values of the 8th to 0th bits of the address counter are all “1”.
- a 1-bit inversion control flag is only added compared to an address counter that has conventionally prepared bits for detecting overflow and underflow.
- the value of 8 bits from the 0th bit to the 7th bit indicates the address of the transmission FIFO 121i.
- the value of the write address counter 121n is output when data is stored in the transmission FIFO 121i.
- values from the 0th bit to the 7th bit are input to the transmission FIFO 121i as a write address.
- the values of the 0th bit, the 8th bit, and the 9th bit are input to the inversion control circuit 121q.
- the write address counter 121n When the data is stored in the transmission FIFO 121i, the write address counter 121n counts up the numerical value indicated by 10 bits by one. As a result, an address indicating the entry area of the transmission FIFO 121i in which the next data is to be stored is set in the write address counter 121n.
- the inversion control circuit 121q outputs to the selector 121s an inversion instruction signal indicating the necessity of inversion of the data with ECC in accordance with the three bit values input from the write address counter 121n.
- the inversion suppression flag is input to the inversion control circuit 121q from the inversion suppression flag holding circuit 121x.
- a 1-bit inversion inhibition flag is set by the service processor 131 in the inversion inhibition flag holding circuit 121x.
- the inversion suppression flag is information indicating that the inversion of data with ECC is forcibly suppressed.
- a valid value for example, “1”
- the inversion control circuit 121q selects an inversion instruction signal indicating inversion unnecessary regardless of the bit value input from the write address counter 121n. To 121s. Details of the relationship between the input and the output in the inversion control circuit 121q will be described later (see FIG. 8).
- the value of the read address counter 121o is output when data is read from the transmission FIFO 121i.
- values from the 0th bit to the 7th bit are input to the transmission FIFO 121i as a read address.
- the values of the 0th bit, the 8th bit, and the 9th bit are input to the inversion control circuit 121r.
- the read address counter 121o increments the numerical value indicated by 10 bits by 1. As a result, an address indicating the entry area of the transmission FIFO 121i from which data is to be read next is set in the read address counter 121o.
- the inversion control circuit 121r outputs, to the selector 121u, an inversion instruction signal indicating whether it is necessary to invert the data with ECC in accordance with the three bit values input from the read address counter 121o.
- the inversion suppression flag is input from the inversion suppression flag holding circuit 121x to the inversion control circuit 121r (the connection line between the inversion suppression flag holding circuit 121x and the inversion control circuit 121r is omitted in FIG. 7).
- the inversion suppression flag is information indicating that the inversion of data with ECC is forcibly suppressed.
- the inversion control circuit 121r selects an inversion instruction signal indicating that no inversion is required regardless of the bit value input from the read address counter 121o. To 121u. Details of the relationship between the input and the output in the inversion control circuit 121r will be described later (see FIG. 8).
- 64-bit write data (write_data [63: 0]) to be written in the transmission FIFO 121i is input to the ECC generation circuit 121p.
- the ECC generation circuit 121p generates an ECC of the input write data.
- 64-bit write data is input and an 8-bit ECC is generated.
- the ECC generation circuit 121p outputs data with ECC (write_data [63: 0] + write_ecc [7: 0]) composed of write data and ECC of the write data.
- the data with ECC output from the ECC generation circuit 121p is input to the selector 121s and the inversion control circuit 121t.
- the inversion control circuit 121t inverts the values of all the bits constituting the input data with ECC. That is, the inversion control circuit 121t changes the bit having the value “0” to “1” and changes the bit having the value “1” to “0”.
- the data with ECC in which the bit value is inverted by the inversion control circuit 121t (data with inverted ECC) is input to the selector 121s.
- the selector 121s selects one of the data with ECC and the data with inverted ECC based on the inversion instruction signal input from the inversion control circuit 121q, and outputs the selected data to the transmission FIFO 121i. Specifically, if the inversion instruction signal indicates that inversion is not required, the selector 121s outputs the data with ECC that is not inverted to the transmission FIFO 121i. If the inversion instruction signal indicates that the inversion is required, the selector 121s outputs the inverted ECC-added data to the transmission FIFO 121i.
- the transmission FIFO 121i stores the data input from the selector 121s in the entry area indicated by the 8-bit address value input from the write address counter 121n.
- the transmission FIFO 121i outputs data (output data) in the entry area indicated by the 8-bit address value input from the read address counter 121o.
- the output data output from the transmission FIFO 121i is input to the selector 121u and the inversion control circuit 121v.
- the inversion control circuit 121v inverts the values of all the bits constituting the input output data. That is, the inversion control circuit 121v changes the bit having the value “0” to “1” and changes the bit having the value “1” to “0”.
- the output data is data with inverted ECC, it is returned to the data with ECC before being inverted.
- Data whose bit value is inverted by the inversion control circuit 121v (inverted output data) is input to the selector 121u.
- the selector 121u selects either output data or inverted output data based on the inversion instruction signal input from the inversion control circuit 121v, and outputs the selected data to the ECC check / correction circuit 121w. Specifically, if the inversion instruction signal indicates that inversion is not required, the selector 121u outputs output data that has not been inverted to the ECC check / correction circuit 121w. If the inversion instruction signal indicates that the inversion is required, the selector 121u outputs the inverted output data to the ECC check / correction circuit 121w.
- the output data output from the selector 121u or the inverted output data is 72-bit data (read_data [63: 0] + read_ecc [7: 0]).
- the first 64 bits are read data, and the next 8 bits are the ECC of the read data.
- the ECC check / correction circuit 121w performs ECC check of the read data input from the selector 121u using ECC. If an error is detected by the ECC check, the ECC check / correction circuit 121w performs ECC error notification or error correction. Specifically, first, the ECC check / correction circuit 121w generates an ECC of read data. Then, the ECC check / correction circuit 121w collates the generated ECC with the ECC received from the selector 121u. The ECC check / correction circuit 121w determines that there is no error if the ECCs match, and outputs the input read data (read_data [63: 0]).
- the ECC check / correction circuit 121w corrects and outputs the read data when the ECCs do not match and the detected ECC error is CE (Correctable Error).
- the ECC check / correction circuit 121w outputs an ECC error.
- the ECC error output from the ECC check / correction circuit 121w is notified to the service processor 131 of the service processor board 130 via the maintenance bus.
- FIG. 8 is a diagram illustrating input / output of the inversion control circuit.
- Inversion control circuits 121q and 121r receive the inversion suppression flag and the values of the ninth bit, eighth bit, and zeroth bit of the address, respectively.
- an inversion instruction signal indicating the necessity of inversion is output from the inversion control circuits 121q and 121r.
- inversion suppression flag If the value of the inversion suppression flag is “1”, an inversion necessity signal indicating non-inversion is always output. If the value of the inversion suppression flag is “0”, inversion and non-inversion are determined according to the values of the 9th bit, 8th bit, and 0th bit of the address.
- the inversion control signals 121q and 121r output an inversion necessity signal indicating non-inversion regardless of the value of the zeroth bit. If the ninth bit is “0” and the eighth bit is “1”, the inversion control signals 121q and 121r output an inversion necessity signal indicating inversion regardless of the value of the zeroth bit.
- the inversion control circuit 121q, 121r outputs an inversion necessity signal indicating non-inversion.
- the inversion necessity signals indicating inversion are output from the inversion control circuits 121q and 121r.
- the inversion control circuit 121q, 121r outputs an inversion necessity signal indicating inversion.
- the inversion control circuit 121q, 121r outputs an inversion necessity signal indicating non-inversion.
- the data pattern to be written in the FIFO is generated by the test program, but the content of the data pattern may be a random value.
- the data pattern corresponding to the total data amount of the FIFO is repeatedly input to the FIFO four times with the same contents.
- the CPUs in the system boards 110,..., 110n execute processing according to the test program.
- a packet having a predetermined content is output from the system board 110,..., 110n to the IO board 120,.
- FIG. 9 is a diagram illustrating an example of a test pattern for FIFO diagnosis.
- FIG. 9 shows a test pattern in the case of detecting a failure of the transmission FIFO 121i shown in FIG.
- “Packet0” to “Packet127” are test patterns.
- test data for a transmission command unit of a packet to be transmitted via the transmission FIFO 121i is defined in the test program.
- the test pattern shown in FIG. 9 is transmitted via the transmission FIFO 121i.
- the test program is executed by the CPU 111 on the system board 110.
- this test program sets the transmission FIFO 121i in the LSI functioning as the IO controller 121 on the IO board 120 as a diagnosis target. Therefore, the packet transmission command described in the test program is a kind of access command from the CPU 111 to the LAN controller 122.
- write_data [63: 0] 8-byte write data (write_data [63: 0]) depending on the content of the test program is written. If the transmission FIFO 121i is not faulty, the written value is read as read data (read_data [63: 0]).
- the inversion control of the value at the time of writing to and reading from the transmission FIFO 121i is controlled by address [9], address [8] and address [0].
- the control method is as shown in FIG. Note that the inversion control is the same between data writing and data reading.
- test pattern of 256 which is the depth of the FIFO
- the same test pattern is used four times in order to increase the diagnosis rate.
- the data amount of the test pattern matches the depth of the transmission FIFO 121i (the storage capacity of the transmission FIFO 121i).
- the depth (number of entries) of the transmission FIFO 121i is 256.
- the transmission FIFO 121i stores both the header portion and the data portion of a packet generated from one packet transmission command.
- the total capacity of the header portion and the data portion of one packet is 16 bytes.
- the storage capacity of the transmission FIFO 121i used for writing one packet is two entries (depth 2). Therefore, data can be written to all areas of the transmission FIFO 121i by transmitting 128 packets.
- the test program includes a transmission command for repeatedly transmitting 128 packets transmitted from the IO controller 121 to the LAN controller 122 four times. Therefore, when the CPU of the system board executes the test program, the IO controller 121 performs a total of 128 ⁇ 4 packet transmissions.
- the write address for writing the packet in the leading packet transmission command to the transmission FIFO 121i is “000h” (hexadecimal notation). Thereafter, the write address counter 121n is incremented each time the first half and the second half of the packet are sequentially written. The write address of the entry area where the last data of the 128th packet is written is “0FFh”. The packet transmission processing so far is the first round of test pattern writing.
- the write address is “000h” to “0FFh”.
- the ninth bit and the eighth bit of the write address during this period are always “0”. Therefore, in the first round test pattern writing, all the write data is written in the transmission FIFO 121i in a non-inverted manner.
- the output data written in the transmission FIFO 121i is read non-inverted and output as read data.
- the head of the second half of the packet is read at the time of reading.
- a bit is read out with “0”
- the first bit of the first half and the first bit of the second half of the first packet in the test pattern are both “0”, a delay fault cannot be detected.
- the write address for writing the packet in the first packet transmission command to the transmission FIFO 121i is “100h”. Thereafter, the write address counter 121n is incremented each time the first half and the second half of the packet are sequentially written. The write address of the entry area where the last data of the 128th packet is written is “1FFh”. The packet transmission process during this period is the second round of test pattern writing.
- the write address is “100h” to “1FFh”. During this period, the ninth bit of the write address is always “0”, and the eighth bit is always “1”. Therefore, in the second round test pattern writing, all write data values are inverted and written to the transmission FIFO 121i. Then, the output data written in the transmission FIFO 121i is output as read data with the value of the read data inverted.
- the fixed failure of polarity that could not be detected in the first round can be detected by writing and reading the test pattern in the second round. For example, if “1” is written to the bit having a fixed fault fixed to “1” in the first round, “0” is written to the bit in the second round. Then, the fixed failure of the corresponding bit cannot be detected in the first round, but can be detected in the second round. As a result, the diagnosis of the fixed fault with the polarity (fixed “0” and “1”) for all the bits of the transmission FIFO 121i is completed by writing the test patterns in the first and second cycles.
- a delay fault due to a bit arrangement different from the first round can be detected by writing and reading the test pattern of the second round. For example, when the first bit of the first half of the first packet in the test pattern is “0” and the first bit of the second half is “1”, the value is written as it is in the first round, but in the second round The value is inverted. Then, “1” is written in the first bit of the first half of the first packet, and “0” is written in the first bit of the second half. As a result, at the time of reading, if the first bit of the latter half is read as “1”, it can be determined that a delay failure of the corresponding bit.
- the write address for writing the packet in the first packet transmission command to the transmission FIFO 121i is “200h”. Thereafter, the write address counter 121n is incremented each time the first half and the second half of the packet are sequentially written. The write address of the entry area where the last data of the 128th packet is written is “2FFh”. The packet transmission process during this period is the third round of test pattern writing.
- the write address is “200h” to “2FFh”. During this period, the ninth bit of the write address is always “1”, and the eighth bit is always “0”. Therefore, in the test pattern write in the third round, if the value of the 0th bit (LSB) is “0”, it is written in the transmission FIFO 121i in a non-inverted manner. If the value of the 0th bit (LSB) is “1”, it is inverted and written to the transmission FIFO 121i. If the value of the 0th bit (LSB) is “0”, the output data written in the transmission FIFO 121i becomes read data while the output data read from the transmission FIFO 121i remains non-inverted. If the value of the 0th bit (LSB) is “1”, the value of the output data read from the transmission FIFO 121i is inverted and output as read data.
- a delay fault due to a bit arrangement different from the first and second rounds can be detected.
- the first bit of the first half of the first packet (write address “000h”) in the test pattern is “0” and the first bit of the second half (write address “001h”) is “0”.
- “0” is written in the first bit of each data storage area.
- “1” is written in the first bit of each data storage area.
- the value “0” is written as it is in the first bit of the first half of the first packet, but the value “1” is written in the first bit of the second half.
- the first bit of the latter half is read as “0”, it can be determined that a delay failure of the corresponding bit.
- the write address for writing the packet in the first packet transmission command to the transmission FIFO 121i is “300h”. Thereafter, the write address counter 121n is incremented each time the first half and the second half of the packet are sequentially written. The write address of the entry area in which the last data of the 128th packet is written is “3FFh”. The packet transmission process during this period is the fourth round of test pattern writing.
- the write address is “300h” to “3FFh”. During this time, the ninth bit of the write address is always “1”, and the eighth bit is always “1”. Therefore, in the test pattern write in the fourth round, if the value of the 0th bit (LSB) is “0”, it is inverted and written to the transmission FIFO 121i. If the value of the 0th bit (LSB) is “1”, it is written in the transmission FIFO 121i in a non-inverted manner. If the value of the 0th bit (LSB) is “0”, the output data read from the transmission FIFO 121i is inverted and output as read data. If the value of the 0th bit (LSB) is “1”, the value of the output data read from the transmission FIFO 121i is output as read data as it is.
- the test pattern having the data amount corresponding to the depth of the transmission FIFO 121i is repeated four times and transmitted through the transmission FIFO 121i, so that it is possible to diagnose whether the transmission FIFO 121i has a fixed failure or a delay failure.
- the diagnosis rate does not depend on the contents (data pattern) of 128 packet transmission commands in the test pattern. If a fixed fault or a delay fault is detected in the test pattern, an ECC error is notified from the ECC check / correction circuit 121w.
- FIG. 10 is a flowchart showing a procedure of packet transmission processing based on the test program. In the following, the process illustrated in FIG. 10 will be described in order of step number. In the following description, it is assumed that the CPU 111 of the system board 110 executes a test program for inspecting the transmission FIFO 121i.
- the CPU 111 sets an initial value “4” in the variable i.
- the variable i indicates the remaining number of repetitions of the test pattern corresponding to the FIFO depth.
- the CPU 111 sets a value indicating the number of packet transmissions for the depth of the transmission FIFO 121i in the variable j. Specifically, the depth (fifo_length) of the transmission FIFO 121i and the number of entry areas (request_length) of the transmission FIFO 121i used in the packet are given as constants in the test program.
- the CPU 111 executes one packet transmission command. Specifically, the CPU 111 generates a packet destined for a network device on the network connected to the LAN port 125 of the IO board 120. Then, CPU 111 executes the packet transmission command. Then, the packet is transferred from the system board 110 to the IO board 120 via the system bus.
- a transmission packet is input via the system bus interface 121a and stored in the reception FIFO 121f. Thereafter, the data format of the transmission packet is converted by the protocol conversion unit 121k so as to match the communication protocol of the IO bus.
- a transmission destination of the transmission packet whose data format has been converted is determined by the routing control unit 121m and stored in the transmission FIFO 121i.
- the transmission packet stored in the transmission FIFO 121i is output to the LAN controller 122 via the IO bus interface 121c.
- Step S14 The CPU 111 decrements the variable j (a process of subtracting 1).
- Step S15 The CPU 111 determines whether the variable j is 0 or not. If the variable j is 1 or more, the process proceeds to step S13 and packet transmission is continued. If the variable j is 0, the packet transmission process for one time with the test pattern prepared in advance is terminated, and the process proceeds to step S16.
- Step S16 The CPU 111 decrements the variable i.
- Step S17 The CPU 111 determines whether the variable i is 0 or not. If the variable i is 1 or more, the process proceeds to step S12, and the transmission of the packet with the test pattern prepared in advance is resumed. If the variable i is 0, since the test pattern has been transmitted four times, the packet transmission process ends, and the process proceeds to step S18.
- Step S18 The CPU 111 checks that all packets have been transmitted normally. Specifically, if the ECC error notification is not output from the ECC check / correction circuit 121w during the execution of the processes of steps S12 to S17, the CPU 111 can determine that all packets have been transmitted normally. If an ECC error notification is output, it can be recognized that there is a possibility of a fixed failure or a delay failure in the transmission FIFO 121i.
- FIG. 11 is a diagram illustrating a diagnosis example of a fixed fault and a delay fault.
- FIG. 11 shows a diagnosis method for the mth bit (m is a natural number) (diagnostic target bit 12) in the entry area of the FIFO address “n” (n is a natural number).
- diagnosis target bit 12 in the entry area of the FIFO address “n”
- the LSB (0th bit) of the address “n ⁇ 1” is “0”.
- the diagnosis target bit 12 In the first round of the test pattern, “0” is written in the immediately preceding bit 11 and “0” is written in the diagnosis target bit 12.
- the values written in the diagnosis target bit 12 and the immediately preceding bit 11 in the first round are values (non-inverted values) defined in the test pattern.
- a fixed fault in which the diagnosis target bit 12 is fixed to “1” can be detected. In other words, although “0” is written to the diagnosis target bit 12, an ECC error is generated by reading “1”.
- the third round of the test pattern “0” is written in the immediately preceding bit 11 and “1” is written in the diagnosis target bit 12.
- the LSB of the address “n ⁇ 1” of the entry area to which the immediately previous bit 11 belongs is “0”.
- the value written in the immediately preceding bit 11 in the third round is a value (non-inverted value) defined in the test pattern.
- the LSB of the address “n” of the entry area to which the diagnosis target bit 12 belongs is “1”.
- the value written in the diagnosis target bit 12 in the third round is a value obtained by inverting the value defined in the test pattern.
- the delay fault “0 ⁇ 1” of the diagnosis target bit 12 can be detected. In other words, if there is a delay failure of the diagnostic target bit 12 when the immediately preceding bit 11 is “0”, it is read out as “0” even though “1” is written in the diagnostic target bit 12, and an ECC error occurs. To do.
- the fourth round of the test pattern “1” is written in the immediately preceding bit 11 and “0” is written in the diagnosis target bit 12.
- the value written in the previous bit 11 in the third round is a value obtained by inverting the value defined in the test pattern.
- the LSB of the address “n” of the entry area to which the diagnosis target bit 12 belongs is “1”.
- the value written in the diagnosis target bit 12 in the fourth round is a value (non-inverted value) defined in the test pattern.
- the delay fault “1 ⁇ 0” of the diagnosis target bit 12 can be detected. In other words, if there is a delay fault of the diagnosis target bit 12 when the immediately preceding bit 11 is “0”, it is read out as “0” even though “1” is written in the diagnosis target bit 12, and an ECC error occurs. To do.
- the failure diagnosis process is described focusing on the diagnosis target bit 12, but actually, the same diagnosis is performed on all bits in the FIFO.
- the IO controller 121 detects an ECC error in the transmission FIFO 121i, it notifies the service processor 131 via the maintenance bus.
- the service processor 131 performs error processing according to error contents and detection timing. For example, when an ECC UE is detected during POST executed at the time of system startup, the service processor 131 starts up the system except for the failed LSI.
- an inversion suppression flag is provided to invalidate the FIFO diagnosis function.
- the inversion suppression flag is controlled from the service processor 131 via the maintenance bus.
- the FIFO fault diagnosis technique is applied to the LIFO.
- the LIFO is a storage circuit that sequentially reads data stored after being protected by ECC. Such a last-in first-out buffer is used for stack control.
- FIG. 12 is a diagram showing an LIFO input / output circuit.
- the data width of the LIFO 21 is 72 bits.
- the LIFO 21 stores 64-bit data and 8-bit ECC.
- the depth of the LIFO 21 is 256. Therefore, the address space of the LIFO 21 can be expressed by an 8-bit address.
- the address counter 22 is used for both writing and reading.
- the address counter 22 is composed of 9 bits.
- the address of the LIFO 21 is designated by the values of the seventh bit to the zeroth bit of the address counter 22. When the value of the address counter 22 is “1FFh” (hexadecimal notation), it indicates that the LIFO 21 is empty. When the value of the address counter 22 is “0FFh”, it indicates that the LIFO 21 is full.
- the initial value of the address counter 22 is “1FFh”. This indicates that the LIFO 21 is empty. When data is stored in all storage areas in the LIFO 21 (full state), the value of the address counter 22 is “0FFh”.
- the address counter 22 is incremented by “+1” immediately before writing, and data is written to the address of the LIFO 21 after the increment.
- the address counter 22 is decremented by “ ⁇ 1” at the time of reading.
- the values of the seventh bit to the zeroth bit are input as the write / read address of the LIFO 21.
- the value of the 0th bit of the address counter 22 is input to the inversion control circuit 24. Further, when the value of the address counter 22 is decremented from “000h” and changed to “1FFh”, the timing of the change is notified to the inversion control counter 23. This change in address indicates the timing when the LIFO 21 becomes empty.
- the inversion control counter 23 is composed of 2 bits.
- the inversion control counter 23 is incremented by “+1” at the timing when the LIFO 21 becomes empty. That is, when the signal indicating that the address counter 22 has changed from “000h” to “1FFh” is input, the inversion control counter 23 is incremented.
- the timing at which the address counter 22 changes from “000h” to “1FFh” is the timing at which the address transitions from “0” to negative.
- the value of the inversion control counter 23 is input to the inversion control circuit 24.
- the inversion control circuit 24 outputs, to the selector 27, an inversion instruction signal indicating the necessity of inversion of data with ECC in accordance with the value of the 0th bit input from the address counter 22 and the value of the inversion control counter 23.
- the inversion suppression flag is input from the inversion suppression flag holding circuit 31 to the inversion control circuit 24.
- a 1-bit inversion inhibition flag is set by the service processor 131.
- the inversion suppression flag is information indicating that the inversion of data with ECC is forcibly suppressed.
- the inversion control circuit 24 When a valid value (for example, “1”) is set in the inversion suppression flag, the inversion control circuit 24 indicates an inversion instruction indicating that no inversion is required regardless of the values input from the address counter 22 and the inversion control counter 23. The signal is output to the selector 27. Details of the relationship between the input and output in the inversion control circuit 24 will be described later (see FIG. 13).
- 64-bit write data (write_data [63: 0]) to be written to the LIFO 21 is input to the ECC generation circuit 25.
- the ECC generation circuit 25 generates an ECC of the input write data. In this example, 64-bit write data is input and an 8-bit ECC is generated.
- the ECC generation circuit 25 outputs data with ECC (write_data [63: 0] + write_ecc [7: 0]) composed of write data and the ECC of the write data.
- the data with ECC output from the ECC generation circuit 25 is input to the selector 27 and the inversion control circuit 26.
- the inversion control circuit 26 inverts the values of all the bits constituting the input data with ECC. That is, the inversion control circuit 26 changes the bit having the value “0” to “1” and changes the bit having the value “1” to “0”.
- Data with ECC whose bit value is inverted by the inversion control circuit 26 (data with inverted ECC) is input to the selector 27.
- the selector 27 selects either the data with ECC or the data with inverted ECC based on the inversion instruction signal input from the inversion control circuit 24, and outputs the selected data to the LIFO 21. Specifically, if the inversion instruction signal indicates that inversion is not required, the selector 27 outputs the data with ECC that is not inverted to the LIFO 21. If the inversion instruction signal indicates that the inversion is required, the selector 27 outputs the inverted data with ECC to the LIFO 21.
- the LIFO 21 stores the data input from the selector 27 in the entry area indicated by the 8-bit address value input from the address counter 22.
- the LIFO 21 outputs entry area data (output data) indicated by the 8-bit address value input from the address counter 22.
- the output data output from the LIFO 21 is input to the selector 29 and the inversion control circuit 28.
- the inversion control circuit 28 inverts the values of all the bits constituting the input output data. That is, the inversion control circuit 28 changes the bit having the value “0” to “1” and changes the bit having the value “1” to “0”. As a result, when the output data is data with inverted ECC, it is returned to the data with ECC before being inverted. Data in which the bit value is inverted by the inversion control circuit 28 (inverted output data) is input to the selector 29.
- the selector 29 selects either the output data or the inverted output data based on the inversion instruction signal input from the inversion control circuit 24 and outputs the selected data to the ECC check / correction circuit 30. Specifically, if the inversion instruction signal indicates that inversion is not required, the selector 29 outputs output data that is not inverted to the ECC check / correction circuit 30. If the inversion instruction signal indicates that the inversion is required, the selector 29 outputs the inverted output data to the ECC check / correction circuit 30.
- the output data or inverted output data output from the selector 29 is 72-bit data (read_data [63: 0] + read_ecc [7: 0]).
- the first 64 bits are read data, and the next 8 bits are the ECC of the read data.
- the ECC check / correction circuit 30 performs an ECC check on the read data input from the selector 29. If an error is detected by the ECC check, the ECC check / correction circuit 30 performs ECC error notification or error correction. Specifically, the ECC check / correction circuit 30 first generates an ECC of read data. Then, the ECC check / correction circuit 30 collates the generated ECC with the ECC received from the selector 29. If the ECC matches, the ECC check / correction circuit 30 determines that there is no error and outputs the input read data (read_data [63: 0]). The ECC check / correction circuit 30 corrects and outputs the read data when the ECC does not match and the detected ECC error is CE (Correctable Error).
- CE Correctable Error
- the ECC check / correction circuit 30 When the detected ECC error is UE (Uncorrectable Error), the ECC check / correction circuit 30 outputs an ECC error.
- the ECC error output from the ECC check / correction circuit 30 is notified to the service processor 131 of the service processor board 130 via the maintenance bus.
- FIG. 13 is a diagram illustrating input / output of the inversion control circuit according to the second embodiment.
- the data inversion control at the time of writing and reading of the LIFO 21 is controlled based on the value of the inversion control counter 23, and the inversion control at the time of writing and at the time of reading is the same.
- the inversion control circuit 24 receives the inversion suppression flag, the inversion control counter, and the value of the 0th bit (LSB) of the address. Then, in accordance with the input value, an inversion instruction signal indicating the necessity of inversion is output from the inversion control circuit 24.
- inversion suppression flag If the value of the inversion suppression flag is “1”, an inversion necessity signal indicating non-inversion is always output. If the value of the inversion suppression flag is “0”, inversion or non-inversion is determined according to the values of the inversion control counter and the 0th bit.
- the inversion control circuit 24 If the value of the inversion control counter 23 is “00b” (binary notation), the inversion control circuit 24 outputs an inversion necessity signal indicating non-inversion regardless of the value of the 0th bit. If the value of the inversion control counter 23 is “01b”, the inversion control circuit 24 outputs an inversion necessity signal indicating inversion regardless of the value of the 0th bit.
- the inversion control circuit 24 If the value of the inversion control counter 23 is “10b” and the 0th bit is “0”, the inversion control circuit 24 outputs an inversion necessity signal indicating non-inversion. If the value of the inversion control counter 23 is “10b” and the 0th bit is “1”, the inversion control circuit 24 outputs an inversion necessity signal indicating inversion. If the value of the inversion control counter 23 is “11b” and the 0th bit is “0”, the inversion control circuit 24 outputs an inversion necessity signal indicating inversion. If the value of the inversion control counter 23 is “11b” and the 0th bit is “1”, the inversion control circuit 24 outputs an inversion necessity signal indicating non-inversion.
- the data pattern to be written to the LIFO 21 is generated by the test program, but the content of the data pattern may be a random value. However, for the data pattern, writing and reading of the data pattern corresponding to the total data amount of the LIFO 21 to the LIFO 21 are repeated four times.
- the test program repeats writing and reading a test pattern having a data amount corresponding to the depth 256 of the LIFO 21 four times. To increase the diagnosis rate, the same test pattern is used four times.
- the LIFO 21 becomes empty and the value of the inversion control counter 23 is counted up.
- data input / output to / from the LIFO 21 is performed under an inversion control counter value different from the previous one.
- the failure diagnosis of the fixed failure and the delay failure with respect to the LIFO 21 is completed.
- the ECC check / correction circuit 30 notifies the service processor 131 in the service processor board 130 of the ECC error.
- an inversion suppression flag is provided to invalidate the diagnostic function.
- the inversion suppression flag is controlled from the service processor 131 via the maintenance bus.
- the storage device performs data input / output in a predetermined order, not only the FIFO used for queue control but also the failure diagnosis with a high diagnosis rate of the LIFO used for stack control is possible.
- the inversion control counter 23 needs only 1 bit. In this case, the writing and reading of the test pattern may be repeated twice.
- a failure with a high detection rate can be achieved without depending on the contents of the test pattern. Diagnosis is possible. Since it is not necessary to care about the contents of the test pattern, it is easy to create a test program. Further, since the input / output of the test pattern prepared in advance is repeated, the content of the test program can be simplified. That is, the test program can be created with a small number of man-hours. Further, by improving the diagnosis rate, it is possible to detect a FIFO or LIFO failure before the operation of the apparatus. Further, the FIFO and LIFO auxiliary logic circuits mounted in the LSI in order to improve the diagnosis rate can be small.
- the processing function based on the above test program can be realized by a computer.
- a test program describing the processing contents to be executed when a failure of the storage device is detected is provided.
- the test program describing the processing contents can be recorded on a computer-readable recording medium.
- the computer-readable recording medium include a magnetic recording device, an optical disk, a magneto-optical recording medium, and a semiconductor memory.
- the magnetic recording device include a hard disk device (HDD), a flexible disk (FD), and a magnetic tape.
- Optical discs include DVD (Digital Versatile Disc), DVD-RAM, CD-ROM (Compact Disc Read Only Memory), CD-R (Recordable) / RW (ReWritable), and the like.
- Magneto-optical recording media include MO (Magneto-Optical disc).
- a portable recording medium such as a DVD or CD-ROM in which the test program is recorded is sold. It is also possible to store a test program in a storage device of a server computer and transfer the test program from the server computer to another computer via a network.
- the computer that executes the test program stores, for example, the test program recorded on the portable recording medium or the test program transferred from the server computer in its own storage device. Then, the test computer reads the test program from its own storage device and executes processing according to the test program. The computer can also read the test program directly from the portable recording medium and execute processing according to the test program. Further, each time the test program is transferred from the server computer, the computer can sequentially execute processing according to the received test program.
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
入力されるテストパターンの内容に依存せずに高い診断率の故障診断を行うことができるようにする。 書き込みアドレスカウンタ(2)は書き込みアドレスを記憶部(1)に対して出力する。入力データ反転部(3)は、記憶部(1)への入力データ(8)を反転して、反転入力データを出力する。入力データ選択部(4)は、書き込みアドレスに含まれるビットに基づいて、入力データ又は反転入力データを選択し、記憶部(1)に選択したデータの書き込みを行う。読み出しアドレスカウンタ(5)は、読み出しアドレスを記憶部(1)に対して出力する。出力データ反転部(6)は、記憶部(1)からの出力データを反転して、反転出力データを出力する。出力データ選択部(7)は、読み出しアドレスに含まれるビットに基づいて、読み出しアドレスに含まれるビットに基づいて、出力データ又は反転出力データを選択して読み出しデータ(9)として出力する。
Description
本発明は記憶装置および故障診断方法に関し、特に所定の順番でのデータの書き込みおよび読み出しが行われる記憶装置およびそのような記憶装置の故障診断方法に関する。
LSI(Large Scale Integration)を設計、製造する場合、製品化されるまでに各種の試験が行われる。例えば、LSIをコンピュータなどの装置に搭載して行う試験として、量産試験とPOST(Power On Self Test)試験がある。これらの試験はLSIを搭載した試験装置でテストプログラムを実行することによって、正常動作しているかどうかが診断される。
ところで、多くのLSIはFIFO(First-In First-Out)方式の記憶装置を有している。FIFO方式の記憶装置では、先に入力されたデータが先に出力される。以下、このような先入れ先出しにより入出力制御を行うバッファ回路を「FIFO」と呼ぶ。
FIFOはハードウェアで生成するエラー訂正符号(ECC:Error Correcting Code)を付与することで、アドレス毎のデータが保護されている。FIFOはフリップフロップもしくはRAM(Random Access Memory)を用いて作られている。FIFOはパケットの送信キューや受信キューに使用されたり、制御情報の一時的な記録に使用されたりするなど、LSI内部の様々な部分で使用される。
このようなFIFOを有するLSIの試験では、FIFOの動作試験も行われる。例えば、量産試験やPOST試験のテストプログラムに従ってLSIに所定のデータを入力することにより、FIFOの故障診断が行われる。FIFO故障検出方法は「テストプログラムの期待値不一致」と「ECCエラー検出」の両方によって行われる。
FIFOに対する試験の実行によって検出される故障には、「固定故障」と「遅延(Delay)故障」とがある。固定故障とはFIFOのあるビット値が、配線のショートなどの原因で「0」もくしは「1」の固定値になっている状態を指す。例えば、「0」値に固定故障しているビットに対して「1」を書き込んだとしても、そのビット値は「0」のままである。「0」と「1」の両方の固定故障を検出するためには、テストプログラム内にそのビットに対して「0」と「1」をそれぞれ書き込むテストパターンが含まれている必要がある。遅延故障とはFIFOからの読み出し遅延がLSIの動作周波数内に収まっていないため、読み出しに失敗することである。例えば、遅延故障を検出するためには、前のアドレスのデータ値と次のアドレスのデータ値が異なっており、値が「0」から「1」のように変化するテストパターンがテストプログラムに含まれている必要がある。
特開平1-309154号公報
特開平5-165734号公報
特開2006-208077号公報
しかし、任意のテストパターンをFIFOに書き込むのが困難な場合がある。例えば、FIFOにパケットのヘッダとデータとの両方を書き込む場合、データ部分についてはテストプログラムで任意の値を書き込むことが可能である。他方、ヘッダ部分についてはFIFOに書き込むヘッダフォーマット上、ヘッダフォーマットを構成する各フィールドには、アドレス、タイプなどの意味がある。そこで、アドレス、タイプなどのフィールドがどのようにFIFOに書き込まれるかを認識してテストプログラムを作成する必要がある。また、ECC部分については、ECC生成式を知ってテストプログラムを作成する必要がある。つまり、診断率を向上させるには、複雑なハードウェア論理回路を熟知した上で、所望のテストパターンとなるようにテストプログラムを作成する必要がある。
なお、ハードウェア論理回路の理解をしないで、ランダムな長いパターンのテストプログラムを作成することでできるだけ診断率を向上させることもできる。ただし、量産段階の各LSIに対して長いパターンのテストプログラムを実行させることは、LSIの生産効率の低下を招き、現実的ではない。そのため、複雑なハードウェア論理回路を理解した上でのFIFO用のテストパターンの生成が困難な場合や、ランダムな長いパターンによるFIFOの診断が困難な場合、高い診断率を得ることを諦めるしかなかった。
このように、「固定故障」や「遅延故障」を検出するためのFIFO診断率はテストプログラムで生成するテストパターンに依存するにも拘わらず、テストプログラムによってFIFOにライトするデータを直接作成できない場合が存在する。その結果、高い診断率を得るのが困難となっていた。
なお、所定の順番でのデータの書き込みおよび読み出しを行うデータ記録方式には、FIFO方式以外にLIFO(Last In, First Out)方式がある。LIFO方式は、新しく格納したデータから順に読み出す入出力方式(後入れ先出し方式)である。以下、LIFO方式でデータの入出力を行うバッファ回路(いわゆるスタック)をLIFOと呼ぶ。LIFOにおいてもFIFOと同様に、任意のテストパターンを書き込むのが困難なことにより、高い診断率を得ることができないという問題がある。
本発明はこのような点に鑑みてなされたものであり、入力されるテストパターンの内容に依存せずに高い診断率の故障診断を行うことができる記憶装置および故障診断方法を提供することを目的とする。
上記課題を解決するために、以下のような記憶装置が提供される。
提供される記憶装置は、書き込まれたデータを保持するとともに、保持したデータの読み出しを行うものである。この記憶装置は、記憶部、書き込みアドレスカウンタ、入力データ反転部、入力データ選択部、読み出しアドレスカウンタ、出力データ反転部、および出力データ選択部を有する。
提供される記憶装置は、書き込まれたデータを保持するとともに、保持したデータの読み出しを行うものである。この記憶装置は、記憶部、書き込みアドレスカウンタ、入力データ反転部、入力データ選択部、読み出しアドレスカウンタ、出力データ反転部、および出力データ選択部を有する。
記憶部は、複数のエントリ領域を有し、複数のエントリ領域のうち、書き込みを行うエントリ領域を指定する書き込みアドレスに含まれるビットに基づいてデータを書き込むとともに、読み出しを行うエントリ領域を指定する読み出しアドレスに含まれるビットに基づいてデータを読み出す。書き込みアドレスカウンタは、書き込みアドレスを、記憶部に対して出力する。入力データ反転部は、記憶部への入力データを反転して、反転入力データを出力する。入力データ選択部は、書き込みアドレスに含まれるビットに基づいて、入力データ又は反転入力データを選択し、書き込みアドレスに含まれるビットに基づいて、記憶部に選択したデータの書き込みを行う。読み出しアドレスカウンタは、読み出しアドレスを、記憶部に対して出力する。出力データ反転部は、記憶部からの出力データを反転して、反転出力データを出力する。出力データ選択部は、読み出しアドレスに含まれるビットに基づいて、記憶部から出力データの読み出しを行うとともに、読み出しアドレスに含まれるビットに基づいて、出力データ又は反転出力データを選択して出力する。
また、上記課題を解決するために、以下のような記憶装置が提供される。
提供される記憶装置は、書き込まれたデータを保持するとともに、保持したデータの読み出しを行うものである。この記憶装置は、記憶部、制御アドレスカウンタ、反転制御カウンタ、入力データ反転部、入力データ選択部、出力データ反転部、および出力データ選択部を有する。
提供される記憶装置は、書き込まれたデータを保持するとともに、保持したデータの読み出しを行うものである。この記憶装置は、記憶部、制御アドレスカウンタ、反転制御カウンタ、入力データ反転部、入力データ選択部、出力データ反転部、および出力データ選択部を有する。
記憶部は、複数のエントリ領域を有し、複数のエントリ領域のうち、書き込み又は読み出しを行うエントリ領域を指定する制御アドレスに基づいてデータの書き込み又はデータの読み出しを行う。制御アドレスカウンタは、制御アドレスを、記憶部に対して出力する。反転制御カウンタは、制御アドレスカウンタが出力する制御アドレスが、0から負の値になる場合に計数を行うとともに、計数した反転制御カウンタ値を出力する。入力データ反転部は、記憶部への入力データを反転して、反転入力データを出力する。入力データ選択部は、制御アドレスに含まれるビットと反転制御カウンタ値に基づいて、入力データ又は反転入力データを選択し、制御アドレスに含まれるビットと反転制御カウンタ値に基づいて、記憶部に選択したデータの書き込みを行う。出力データ反転部は、記憶部からの出力データを反転して、反転出力データを出力する。出力データ選択部は、制御アドレスに基づいて、記憶部から出力データの読み出しを行うとともに、制御アドレスに含まれるビットと反転制御カウンタ値に基づいて、出力データ又は反転出力データを選択して出力する。
また、上記課題を解決するために、以下のような複数のエントリ領域を有する記憶装置の故障診断方法が提供される。
提供される故障診断方法では、書き込みアドレスカウンタで示される書き込みアドレスに含まれるビットに基づいて、入力データの反転の要否を判断し、前記入力データの反転が不要であれば、前記入力データを前記書き込みアドレスで示されるエントリ領域に書き込み、前記入力データの反転が必要であれば、前記入力データを反転した反転入力データを、前記書き込みアドレスで示されるエントリ領域に書き込み、読み出しアドレスカウンタで示される読み出しアドレスに含まれるビットに基づいて、出力データの反転の要否を判断し、前記出力データの反転が不要であれば、前記読み出しアドレスで示されるエントリ領域の出力データを読み出して出力し、前記出力データの反転が必要であれば、前記読み出しアドレスで示されるエントリ領域の出力データを読み出し、読み出した出力データを反転した反転出力データを出力する。
提供される故障診断方法では、書き込みアドレスカウンタで示される書き込みアドレスに含まれるビットに基づいて、入力データの反転の要否を判断し、前記入力データの反転が不要であれば、前記入力データを前記書き込みアドレスで示されるエントリ領域に書き込み、前記入力データの反転が必要であれば、前記入力データを反転した反転入力データを、前記書き込みアドレスで示されるエントリ領域に書き込み、読み出しアドレスカウンタで示される読み出しアドレスに含まれるビットに基づいて、出力データの反転の要否を判断し、前記出力データの反転が不要であれば、前記読み出しアドレスで示されるエントリ領域の出力データを読み出して出力し、前記出力データの反転が必要であれば、前記読み出しアドレスで示されるエントリ領域の出力データを読み出し、読み出した出力データを反転した反転出力データを出力する。
また、上記課題を解決するために、以下のような複数のエントリ領域を有する記憶装置の故障診断方法が提供される。
提供される故障診断方法では、制御アドレスカウンタが出力する制御アドレスが0から負に遷移した回数を計数した反転制御カウンタ値と、前記制御アドレスカウンタで示される書き込みアドレスに含まれるビットに基づいて、入力データおよび出力データの反転の要否を判断し、前記入力データの反転が不要であれば、前記入力データを前記書き込みアドレスで示されるエントリ領域に書き込み、前記入力データの反転が必要であれば、前記入力データを反転した反転入力データを、前記書き込みアドレスで示されるエントリ領域に書き込み、前記出力データの反転が不要であれば、前記読み出しアドレスで示されるエントリ領域の出力データを読み出して出力し、前記出力データの反転が必要であれば、前記読み出しアドレスで示されるエントリ領域の出力データを読み出し、読み出した出力データを反転した反転出力データを出力する。
提供される故障診断方法では、制御アドレスカウンタが出力する制御アドレスが0から負に遷移した回数を計数した反転制御カウンタ値と、前記制御アドレスカウンタで示される書き込みアドレスに含まれるビットに基づいて、入力データおよび出力データの反転の要否を判断し、前記入力データの反転が不要であれば、前記入力データを前記書き込みアドレスで示されるエントリ領域に書き込み、前記入力データの反転が必要であれば、前記入力データを反転した反転入力データを、前記書き込みアドレスで示されるエントリ領域に書き込み、前記出力データの反転が不要であれば、前記読み出しアドレスで示されるエントリ領域の出力データを読み出して出力し、前記出力データの反転が必要であれば、前記読み出しアドレスで示されるエントリ領域の出力データを読み出し、読み出した出力データを反転した反転出力データを出力する。
上記の記憶装置および故障診断方法により、入力データの内容に依存せずに高い診断率の故障診断を行うことができ、テストプログラムの作成が容易となる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
以下、本実施の形態を図面を参照して説明する。
図1は、実施の形態に適用する技術の概要を示す図である。図1には、記憶装置に対するデータ入出力回路を示している。この記憶装置は、記憶部1、書き込みアドレスカウンタ2、入力データ反転部3、入力データ選択部4、読み出しアドレスカウンタ5、出力データ反転部6、および出力データ選択部7を有する。
図1は、実施の形態に適用する技術の概要を示す図である。図1には、記憶装置に対するデータ入出力回路を示している。この記憶装置は、記憶部1、書き込みアドレスカウンタ2、入力データ反転部3、入力データ選択部4、読み出しアドレスカウンタ5、出力データ反転部6、および出力データ選択部7を有する。
記憶部1は、複数のエントリ領域1a,1bをする。図1の例では、処理を分かりやすくするために、記憶部1には2つのエントリ領域1a,1bのみがあるものとしている。各エントリ領域1a,1bには、アドレスが割り振られている。なお、図1の例ではエントリ領域1aのアドレスが「0」、エントリ領域1bのアドレスが「1」である。記憶部1は、複数のエントリ領域1a,1bのうち、書き込みを行うエントリ領域を指定する書き込みアドレスに含まれるビットに基づいてデータを書き込む。また、記憶部1は、読み出しを行うエントリ領域を指定する読み出しアドレスに含まれるビットに基づいてデータを読み出す。
書き込みアドレスカウンタ2は書き込みアドレスを記憶部1に対して出力する。図1の例では、書き込みアドレスカウンタ2の最下位ビットの値のみが記憶部1に対して出力される。すなわち、書き込みアドレスカウンタ2は、記憶部1内の複数のエントリ領域1a,1bすべてのアドレスを指定するのに必要なビット数(図1の例では1ビット)よりも2ビット多いビットを有している。この余分な2ビットは、入力データ8の反転制御を行うための制御ビットである。
入力データ反転部3は、記憶部1への入力データ8を反転して、反転入力データを出力する。入力データ8を反転するとは、入力データ8を構成する各ビットの値を逆の値に変更することである。すなわち、値が「0」のビットは値が「1」に変更され、値が「1」のビットは値が「0」に変更される。
入力データ選択部4は、書き込みアドレスに含まれるビットに基づいて、入力データ又は反転入力データを選択する。そして、入力データ選択部4は、書き込みアドレスに含まれるビットに基づいて、記憶部1に選択したデータの書き込みを行う。
読み出しアドレスカウンタ5は、読み出しアドレスを記憶部1に対して出力する。図1の例では、読み出しアドレスカウンタ5の最下位ビットの値のみが記憶部1に対して出力される。すなわち、読み出しアドレスカウンタ5は、記憶部1内の複数のエントリ領域1a,1bすべてのアドレスを指定するのに必要なビット数(図1の例では1ビット)よりも2ビット多いビットを有している。この余分な2ビットは、出力データの反転制御を行うための制御ビットである。
出力データ反転部6は、記憶部1からの出力データを反転して、反転出力データを出力する。
出力データ選択部7は、読み出しアドレスに含まれるビットに基づいて、記憶部1から出力データの読み出しを行うとともに、読み出しアドレスに含まれるビットに基づいて、出力データ又は反転出力データを選択して読み出しデータ9として出力する。
出力データ選択部7は、読み出しアドレスに含まれるビットに基づいて、記憶部1から出力データの読み出しを行うとともに、読み出しアドレスに含まれるビットに基づいて、出力データ又は反転出力データを選択して読み出しデータ9として出力する。
このような入出力回路を有する記憶装置において、記憶部1内のエントリ領域1a,1bの故障診断を行う場合、予め用意したテストパターン8aのデータ入力が4回繰り返される。テストパターン8aは、記憶部1の記憶容量に相当するデータ量である。
テストパターン8aは、エントリ領域1a,1bそれぞれの記憶容量に応じたデータ長のデータごとに入力される。図1の例ではエントリ領域1a,1bの記憶容量は8ビット(1バイト)である。従って、2バイトのテストパターン8aが1バイトずつ入力データ8として入力される。
書き込みアドレスカウンタ2の初期値は「000」である。入力データ8が記憶部1に書き込まれると、その都度、書き込みアドレスカウンタ2の値がカウントアップされる。書き込みアドレスカウンタ2がカウントアップされると、最下位ビットの値は「0」と「1」とを交互に繰り返す。この書き込みアドレスカウンタ2の最下位ビットは、データ書き込み対象となるエントリ領域のアドレスを示している。従って、アドレス「0」のエントリ領域1aとアドレス「1」のエントリ領域1bとが交互にデータ書き込みの対象となる。
データ書き込みの対象となるエントリ領域に書き込むデータは、入力データ選択部4で選択される。入力データ選択部4は、書き込みアドレスカウンタ2の上位2ビットによって、テストパターン8aの何巡目の入力なのかを認識できる。すなわち、上位2ビットが「00」であれば1巡目。「01」であれば2巡目、「10」であれば3巡目、「11」であれば4巡目である。そこで、入力データ選択部4は、読み出し順が連続する2つのエントリ領域の組みについて、1巡目から4巡目まで間に選択するデータの非反転、反転の組み合わせが4通り生成されるようにする。
図1では、反転入力データを選択するものと判断される書き込みアドレス値と、反転入力データとを太枠で示している。
エントリ領域1aとエントリ領域1bとに書き込むデータの選択において、1巡目では、入力データ選択部4は共に非反転の入力データを選択する。2巡目では、入力データ選択部4は共に反転入力データを選択する。3巡目では、入力データ選択部4は、エントリ領域1aには非反転の入力データを選択し、エントリ領域1bには反転入力データを選択する。4巡目では、入力データ選択部4は、エントリ領域1aには反転入力データを選択し、エントリ領域1bには非反転の入力データを選択する。
エントリ領域1aとエントリ領域1bとに書き込むデータの選択において、1巡目では、入力データ選択部4は共に非反転の入力データを選択する。2巡目では、入力データ選択部4は共に反転入力データを選択する。3巡目では、入力データ選択部4は、エントリ領域1aには非反転の入力データを選択し、エントリ領域1bには反転入力データを選択する。4巡目では、入力データ選択部4は、エントリ領域1aには反転入力データを選択し、エントリ領域1bには非反転の入力データを選択する。
テストパターン8aが入力されるのと並行して、記憶部1内のエントリ領域1a,1bからは、書き込まれたデータの読み出しが順次行われる。読み出し対象のエントリ領域は、読み出しアドレスカウンタ5の出力するビットで指定される。
読み出しアドレスカウンタ5の初期値は「000」であり、記憶部1からデータが読み出されると、その都度カウントアップされる。読み出しアドレスカウンタ5がカウントアップされると、最下位ビットの値は「0」と「1」とを交互に繰り返す。この読み出しアドレスカウンタ5の最下位ビットは、データ読み出し対象となるエントリ領域のアドレスを示している。従って、アドレス「0」のエントリ領域1aとアドレス「1」のエントリ領域1bとが交互にデータ読み出し対象となる。
読み出し対象とされたエントリ領域からの出力データは、そのまま出力データ選択部7に入力されると共に、出力データ反転部6で反転されたデータが出力データ選択部7に入力される。そして、読み出しデータ9として出力すべきデータが出力データ選択部7で選択される。
出力データ選択部7は、読み出しアドレスカウンタ5の上位2ビットによって、テストパターン8aの何巡目に書き込まれたデータなのかを認識できる。すなわち、上位2ビットが、「00」であれば1巡目、「01」であれば2巡目、「10」であれば3巡目、「11」であれば4巡目である。そこで、出力データ選択部7は、読み出し順が連続する2つのエントリ領域の組みについて、1巡目から4巡目まで間の選択するデータの非反転、反転の組み合わせが、入力データ選択部4と同じになるように出力データ又は反転出力データを選択する。すなわち、出力データが非反転で書き込まれた入力データであれば、出力データ選択部7は、非反転の出力データを選択する。また、出力データが反転入力データであれば、出力データ選択部7は、反転出力データを選択する。
これにより、出力データ選択部7から出力される読み出しデータ9は、記憶部1に固定故障や遅延故障がなければ、入力されたテストパターン8aと同じ内容となる。換言すると、4巡分の読み出しデータにおいてテストパターン8aと異なる値が含まれていれば、固定故障又は遅延故障が発生していることが分かる。
固定故障を検出するために、各エントリ領域1a,1b内のすべてのビットに、「0」と「1」とのそれぞれが書き込まれる。図1の例では、2巡目では、1巡目と同一テストパターン8aを反転させたデータをエントリ領域1a,1bに書き込んでいる。従って、1巡目と2巡目とのデータの書き込み、および読み出しによって、記憶部1内のすべてのビットの固定故障を検出可能である。
遅延故障を検出するために、連続して読み出される2つのエントリ領域1a,1bの対応する位置のビット(例えば、各エントリ領域の第0ビット)を並べたとき、「0」から「1」への遷移と、「1」から「0」への遷移とを発生させている。該当ビットの値が遷移するとき、遅延故障があれば後から読み出されるデータで誤りが検出される。
図1の例では、1巡目から4巡目において、連続して読み出されるエントリ領域の非反転、反転の組み合わせパターンが4通り生成される。すると、エントリ領域1a,1bのデータ読み出し時には、すべてのビットについて、「0から0で値が変化しない」、「1から1で値が変化しない」、「0から1に値が変化する」と「1から0に値が変化する」の4種類の読み出しが存在する。このようなパターンが発生することは、テストパターン8aの内容には関係がない。その結果、4巡のうちに必ず1回ずつ、「0」から「1」への遷移と「1」から「0」への遷移とが発生する。従って、記憶部1内のすべてのビットについて遅延故障の検出が可能である。
ところで、記憶部1の固定故障の検出のみが目的の場合、テストパターン8aの入力は、2巡目まででよい。このとき、テストパターン8aの入力を2巡させる間、書き込みアドレスカウンタ2の最上位ビットは「0」のままである。すると、固定故障の検出のみを行う場合、書き込みアドレスカウンタ2は、記憶部1内のエントリ領域1a,1bのアドレスを表現するのに必要なビット幅(図1の例では1ビット)よりも1ビットだけ余分なビット(制御ビット)を有していればよい。すなわち、図1に示した書き込みアドレスカウンタ2の最上位ビットは不要となる。
この場合、入力データ選択部4は、書き込みアドレスカウンタ2の制御ビットにより、エントリ領域1a,1bに書き込むデータ値を反転して書き込むか反転しないで書き込むかを決定する。読み出しアドレスカウンタ5も同様に、記憶部1内のエントリ領域1a,1bのアドレスを表現するのに必要なビット幅(図1の例では1ビット)よりも1ビットだけ余分なビット(制御ビット)を有する。そして、出力データ選択部7は、読み出しアドレスカウンタ5の制御ビットにより、エントリ領域1a,1bから読み出すデータを反転して読み出すか反転しないで読み出すかを決定する。
1ビットの構成の制御ビットで記憶部1の固定故障を検出する場合、テストパターン8aの入力が2回繰り返される。これにより、記憶部1内のすべてのビットに対して、必ず「0」と「1」との1回ずつの書き込みと読み出しが行われる。つまり、1回目に「0」が書き込まれたビットには、2回目には「1」が書き込まれる。同様に1回目に「1」が書き込まれたビットには、2回目には「0」が書き込まれる。それにより、「0」に固定された固定故障と「1」に固定された固定故障との両方を検出することが可能となる。テストパターン8aは、記憶部1の記憶容量と等しいデータ量であればよく、内容は任意の値でよい。
また、図1に示した記憶装置の回路は、比較的簡単な論理回路で組むことができる。そのため、量産段階のLSIに対して図1に示す回路構成の記憶装置を組み込んだとしても、LSIのダイサイズが大型化してしまう心配はない。そこで、図1に示した記憶装置を、サーバに実装されたLSIに搭載した場合を例に採り、実施の形態を詳細に説明する。
[第1の実施の形態]
第1の実施の形態は、図1に示した構成を有する記憶装置を、キュー制御用のバッファに使用するものである。キュー制御を行う回路には、ECCで保護されたデータを格納し、先に格納したデータから順に読み出しを行うFIFOがある。このようなECCで保護されたデータをFIFOに格納すれば、読み出し時のECCチェックによって固定故障又は遅延故障の有無を検出できる。そこで、第1の実施の形態では、サーバに実装されたLSIにECCチェックによる診断回路を有するFIFOが組み込まれており、そのFIFOの故障診断を行うものとする。
第1の実施の形態は、図1に示した構成を有する記憶装置を、キュー制御用のバッファに使用するものである。キュー制御を行う回路には、ECCで保護されたデータを格納し、先に格納したデータから順に読み出しを行うFIFOがある。このようなECCで保護されたデータをFIFOに格納すれば、読み出し時のECCチェックによって固定故障又は遅延故障の有無を検出できる。そこで、第1の実施の形態では、サーバに実装されたLSIにECCチェックによる診断回路を有するFIFOが組み込まれており、そのFIFOの故障診断を行うものとする。
図2は、本実施の形態に係るサーバの構成図である。サーバ100は高い信頼性が要求される。サーバ100の信頼性を高めるには、システム動作中の故障によりシステムダウンが発生する確率を低くすることが重要である。そのため、サーバ100運用前のPOSTなどの診断により、確実に故障部品を除いてシステムを起動させることが望まれる。
サーバ100は複数のシステムボード(SB)110,・・・,110n、複数のIOボード(IOB)120,・・・,120n、1つのサービスプロセッサボード(SVPB)130、および1つのバックプレーンボード(BP)140を有している。各システムボード110,・・・,110n、および各IOボード120,・・・,120nは、システムバス(system bus)とメンテナンスバス(M-bus)とによってバックプレーンボード140に接続されている。サービスプロセッサボード130は、メンテナンスバスによってバックプレーンボード140に接続されている。
バックプレーンボード140内でシステムバス間が接続されていると共に、メンテナンスバス間が接続されている。これにより、システムバスによってシステムボード間、IOボード間が接続される。また、メンテナンスバスによって、各システムボード110,・・・,110n、および各IOボード120,・・・,120nが、サービスプロセッサボード130に接続される。
システムボード110,・・・,110nは、サーバ100で提供すべきサービスに係る演算処理を行う。1つのシステムボード上のCPU(Central Processing Unit)が他のシステムボードのDRAM(Dynamic Random Access Memory)にアクセスする場合は、アクセスする側のシステムボードからシステムバス上にパケットが送信される。送信されたパケットはバックプレーンボード140経由で、アクセスされる側のシステムボードに入力される。
IOボード120,・・・,120nは、他のサーバなどとの高速通信を行う。1つのIOボード上のLANコントローラがいずれかのシステムボード上のDRAMにアクセスする場合は、アクセスする側のIOボードからシステムバス上にパケットが送信される。送信されたパケットはバックプレーンボード140経由で、アクセスされる側のシステムボードに入力される。
メンテナンスバスは、サービスプロセッサボード130上のサービスプロセッサと、他のボード上の各LSIとを接続している。サービスプロセッサはメンテナンスバス経由でLSIの初期設定や状態監視を行う。また、サービスプロセッサは、サーバの状態を管理用LAN(Local Area Network)経由でサーバ管理用端末200に通知する。
量産試験におけるFIFO診断のためのテストプログラムは、例えば、サーバ管理用端末200から管理用LAN経由でサーバ100に転送される。そして、サービスプロセッサによるLSIなどの初期化後にテストプログラムがシステムボード上のDRAMに格納される。そして、システムボード上のCPUによってテストプログラムが実行される。
次に、システムボード110の内部構成について説明する。
図3は、システムボードの構成を示す図である。システムボード110は、複数のCPU111,112、複数のDRAM113,114、1個のメモリコントローラ(MC)115、および1個のROM(Read Only Memory)116を有している。複数のCPU111,112と複数のDRAM113,114とROM116とは、メモリコントローラ115に接続されている。
図3は、システムボードの構成を示す図である。システムボード110は、複数のCPU111,112、複数のDRAM113,114、1個のメモリコントローラ(MC)115、および1個のROM(Read Only Memory)116を有している。複数のCPU111,112と複数のDRAM113,114とROM116とは、メモリコントローラ115に接続されている。
CPU111,112は、プログラムに記述された命令に従ってデータ処理を実行する。DRAM113,114は、CPU111,112に実行させるプログラム、実行に必要なデータ、実行結果などを一時的に格納する。
メモリコントローラ115は、システムバスを介して他のシステムボード、およびIOボードに接続されている。メモリコントローラ115は、CPU111,112から送信されるパケットに基づいて、アクセス制御を行う。例えば、メモリコントローラ115は、CPU111,112から送信されるパケットに基づいて、システムボード110内のDRAM113,114、他のシステムボード内のDRAM、IOボード内のLANコントローラやストレージインタフェースのいずれかにアクセスする。また、メモリコントローラ115は、メンテナンスバスを介してサービスプロセッサボード130に接続されている。例えば、ROM116にはPOSTに必要なテストプログラムや装置初期化処理に必要なプログラムが格納されている。CPU111,112はメモリコントローラ115を経由してROM116に格納されているプログラムを読み出し、テストプログラムを実行する。
次に、IOボードの内部構成について説明する。
図4は、IOボードの構成を示す図である。IOボード120は、1個のIOコントローラ(IOC)121、LANコントローラ122、およびストレージインタフェース123を有する。IOコントローラ121は、LANコントローラ122、ストレージインタフェース123それぞれと、個別のIOバスで接続されている。また、IOコントローラ121は、システムバスで他のシステムボード、IOボードに接続される。さらに、IOコントローラ121は、メンテナンスバスでサービスプロセッサボード130に接続される。
図4は、IOボードの構成を示す図である。IOボード120は、1個のIOコントローラ(IOC)121、LANコントローラ122、およびストレージインタフェース123を有する。IOコントローラ121は、LANコントローラ122、ストレージインタフェース123それぞれと、個別のIOバスで接続されている。また、IOコントローラ121は、システムバスで他のシステムボード、IOボードに接続される。さらに、IOコントローラ121は、メンテナンスバスでサービスプロセッサボード130に接続される。
LANコントローラ122は、ギガビットオーダの転送速度を有するコンピュータネットワーク用のコントローラである。例えば、LANコントローラ122は、ギガビットイーサネット(登録商標)と呼ばれる規格に準じた通信を行う。LANコントローラ122は、LANポート125を有している。他の装置に接続されたLANケーブルをLANポート125に接続することで、接続先の装置とサーバ100との間のデータ通信が可能となる。
ストレージインタフェース123には、HDD124が接続されている。ストレージインタフェース123は、HDD124との間の通信インタフェースである。例えば、ストレージインタフェース123は、SAS(シリアル・アタッチ・SCSI(Small Computer System Interface))の規格に沿った通信を行う。
次に、サービスプロセッサボード130の内部構成について説明する。
図5は、サービスプロセッサボードの構成を示す図である。サービスプロセッサボード130は、1個のサービスプロセッサ(SVP)131と1個のDRAM132を有している。サービスプロセッサボード130のサービスプロセッサ131は、サーバ100の管理用に設けられたCPUである。サービスプロセッサ131はメンテナンスバスでシステムボードのメモリコントローラやIOボードのIOコントローラに接続される。また、サービスプロセッサ131は、管理用LANポート133に接続されている。管理用LANポート133には、サーバ管理用端末200に繋がったLANケーブルが接続される。そして、サーバ管理用端末200から入力されるパケットが、管理用LANポート133を介してサービスプロセッサ131に入力される。また、サービスプロセッサ131で生成したパケットが管理用LANポート133を介してサーバ管理用端末200に送信される。
図5は、サービスプロセッサボードの構成を示す図である。サービスプロセッサボード130は、1個のサービスプロセッサ(SVP)131と1個のDRAM132を有している。サービスプロセッサボード130のサービスプロセッサ131は、サーバ100の管理用に設けられたCPUである。サービスプロセッサ131はメンテナンスバスでシステムボードのメモリコントローラやIOボードのIOコントローラに接続される。また、サービスプロセッサ131は、管理用LANポート133に接続されている。管理用LANポート133には、サーバ管理用端末200に繋がったLANケーブルが接続される。そして、サーバ管理用端末200から入力されるパケットが、管理用LANポート133を介してサービスプロセッサ131に入力される。また、サービスプロセッサ131で生成したパケットが管理用LANポート133を介してサーバ管理用端末200に送信される。
図3~図5に示した各ボード内のCPUやコントローラといった機能を有するチップには、FIFOが含まれている。例えばIOコントローラ121には、システムバスやIOバスとの入出力部にFIFOが設けられている。
図6は、IOコントローラの内部構成を示す図である。IOコントローラ121はIOボード120に搭載されるLSIである。IOコントローラ121は、プロトコル変換を主な機能とする。
IOコントローラ121は、1つのシステムバスインタフェース(I/F)121a、2つのIOバスインタフェース(I/F)121b,121c、および1つのメンテナンスバスインタフェース(I/F)121dを有する。
システムバスインタフェース121aは、バックプレーンボード140を経由してシステムボード上のメモリコントローラや、他のIOボード上のIOコントローラに接続される。IOバスインタフェース121bは、ストレージインタフェース123に接続されている。また、IOバスインタフェース121cは、LANコントローラ122に接続されている。メンテナンスバスインタフェース121dは、バックプレーンボード140を経由してサービスプロセッサボード130上のサービスプロセッサ131に接続される。
システムバスインタフェース121aには、送信FIFO121eが接続されている。送信FIFO121eは、システムバスインタフェース121aを介して送信するデータの送信バッファとして使用される。また、システムバスインタフェース121aには、受信FIFO121fが接続されている。受信FIFO121fは、システムバスインタフェース121aを介して受信するデータの受信バッファとして使用される。
IOバスインタフェース121bには送信FIFO121gが接続されている。送信FIFO121gは、IOバスインタフェース121bを介して送信するデータの送信バッファとして使用される。また、IOバスインタフェース121bには、受信FIFO121hが接続されている。受信FIFO121hは、IOバスインタフェース121bを介して受信するデータの受信バッファとして使用される。
IOバスインタフェース121cには送信FIFO121iが接続されている。送信FIFO121iは、IOバスインタフェース121cを介して送信するデータの送信バッファとして使用される。また、IOバスインタフェース121cには、受信FIFO121jが接続されている。受信FIFO121jは、IOバスインタフェース121cを介して受信するデータの受信バッファとして使用される。
プロトコル変換部121kは、システムバスインタフェース121aから入力されたパケットのフォーマットを、IOバス用のパケットのフォーマットへ、それぞれのプロトコルに従って変換する。同様に、プロトコル変換部121kは、IOバスインタフェース121b,121cから入力されたパケットのフォーマットを、システムバス用のフォーマットへ、それぞれのプロトコルに従って変換する。
ルーティング制御部121mは、システムバス又はIOバスから送信されたパケットのルーティングを行う。
また、3つの送信FIFO121e,121g,121iは、メンテナンスバスI/Fが接続されている。サービスプロセッサボード130に搭載されているサービスプロセッサ131はメンテナンスバス経由で送信FIFO121e,121g,121iにアクセスし、反転制御フラグなどの初期設定を行う。また、サービスプロセッサ131は、メンテナンスバス経由でIOコントローラ121内の送信FIFO121e,121g,121iのECCや、アドレスカウンタのカウントアップを指示する信号(UE/CE)の検出などの状態監視を行う。IOコントローラ121は故障検出時にメンテナンスバス経由でサービスプロセッサ131にエラー発生を通知する。サービスプロセッサ131は、エラー内容に応じてエラー処理を行い、エラー発生を管理用LAN経由でサーバ管理用端末200に通知する。
また、3つの送信FIFO121e,121g,121iは、メンテナンスバスI/Fが接続されている。サービスプロセッサボード130に搭載されているサービスプロセッサ131はメンテナンスバス経由で送信FIFO121e,121g,121iにアクセスし、反転制御フラグなどの初期設定を行う。また、サービスプロセッサ131は、メンテナンスバス経由でIOコントローラ121内の送信FIFO121e,121g,121iのECCや、アドレスカウンタのカウントアップを指示する信号(UE/CE)の検出などの状態監視を行う。IOコントローラ121は故障検出時にメンテナンスバス経由でサービスプロセッサ131にエラー発生を通知する。サービスプロセッサ131は、エラー内容に応じてエラー処理を行い、エラー発生を管理用LAN経由でサーバ管理用端末200に通知する。
次に、FIFOの入出力について詳細に説明する。
図7は、FIFOへの入出力回路を示す図である。図7の例は、IOボード120に搭載されたIOコントローラ121として機能するLSI内のFIFOのうち、LANコントローラ122に接続されるIOバスインタフェース121cへの送信FIFO121iを診断するための入出力である。
図7は、FIFOへの入出力回路を示す図である。図7の例は、IOボード120に搭載されたIOコントローラ121として機能するLSI内のFIFOのうち、LANコントローラ122に接続されるIOバスインタフェース121cへの送信FIFO121iを診断するための入出力である。
送信FIFO121iの1つの単位格納領域のビット幅は72ビットである。送信FIFO121i内の1つの単位格納領域は、64ビットのデータと8ビットのECCを有する。送信FIFO121iの深さは256である。ここで、送信FIFO121iの深さとは、送信FIFO121iに含まれるエントリ領域(データを格納するための単位記憶領域)の数である。すなわち、送信FIFO121iは、256個のECC付きデータを格納できる。256個分のアドレスは、8ビットで表現可能である。
ライトアドレスカウンタ121nとリードアドレスカウンタ121oとは、10ビットで構成される。すなわち、送信FIFO121iのアドレスは8ビットで表現できるが、ライトアドレスカウンタ121nとリードアドレスカウンタ121oとは、それよりも2ビット多いビット数を有している。
なお、従来、アドレスカウンタはFIFOのアドレスサイズよりも1ビット多いビットで構成されていた。そして、アドレスカウンタのMSB(Most Significant Bit)は、オーバフロー、アンダーフロー検出のために使用されていた。本実施の形態では、ライトアドレスカウンタ121nとリードアドレスカウンタ121oとを構成するビットのうち、第0ビットが従来から使用されているアドレスカウンタのLSB(Least Significant Bit)に対応する。また、第8ビットが、従来からオーバフロー、アンダーフロー検出に使用されているビット(従来のアドレスカウンタのMSB)に相当する。
ライトアドレスカウンタ121nとリードアドレスカウンタ121oとを構成するビットのうち、第9ビットは、反転制御フラグとして特別に追加されたビットである。反転制御フラグは初期値が「0」の1ビットフラグである。反転制御フラグは、アドレスカウンタの第8ビットから第0ビットの値がすべて「1」になった後のカウントアップ時に値が反転される。つまり、従来からオーバフローやアンダーフローの検出のためのビットが用意されたアドレスカウンタと比べると、さらに1ビット反転制御フラグが追加されただけとなる。
また、ライトアドレスカウンタ121nとリードアドレスカウンタ121oとを構成するビットのうち、第0ビットから第7ビットまでの8ビット分の値は、送信FIFO121iのアドレスを示している。
ライトアドレスカウンタ121nの値は、送信FIFO121iにデータを格納する際に出力される。ライトアドレスカウンタ121nを構成するビットのうち第0ビットから第7ビットまでの値が、送信FIFO121iに対してライトアドレスとして入力される。また、ライトアドレスカウンタ121nを構成するビットのうち、第0ビット、第8ビット、および第9ビットの値が、反転制御回路121qに入力される。
ライトアドレスカウンタ121nは、送信FIFO121iにデータが格納されると、10ビットで示される数値を1だけカウントアップする。これにより、次のデータを格納すべき送信FIFO121iのエントリ領域を示すアドレスがライトアドレスカウンタ121nに設定される。
反転制御回路121qは、ライトアドレスカウンタ121nから入力された3つのビット値に応じて、ECC付きデータの反転の要否を示す反転指示信号をセレクタ121sに対して出力する。なお、反転制御回路121qには、反転抑止フラグ保持回路121xから反転抑止フラグが入力されている。反転抑止フラグ保持回路121xには、サービスプロセッサ131によって1ビットの反転抑止フラグが設定される。反転抑止フラグは、ECC付きデータの反転を強制的に抑止することを意味する情報である。反転抑止フラグに有効な値(例えば「1」)が設定されていた場合、反転制御回路121qは、ライトアドレスカウンタ121nから入力されたビット値とは無関係に、反転不要を示す反転指示信号をセレクタ121sに出力する。反転制御回路121qにおける入力と出力との関係の詳細は後述する(図8参照)。
リードアドレスカウンタ121oの値は、送信FIFO121iからデータを読み出す際に出力される。リードアドレスカウンタ121oを構成するビットのうち第0ビットから第7ビットまでの値が、送信FIFO121iに対してリードアドレスとして入力される。また、リードアドレスカウンタ121oを構成するビットのうち、第0ビット、第8ビット、および第9ビットの値が、反転制御回路121rに入力される。
リードアドレスカウンタ121oは、送信FIFO121iからデータが読み出されると、10ビットで示される数値を1だけカウントアップする。これにより、次にデータを読み出すべき送信FIFO121iのエントリ領域を示すアドレスがリードアドレスカウンタ121oに設定される。
反転制御回路121rは、リードアドレスカウンタ121oから入力された3つのビット値に応じて、ECC付きデータの反転の要否を示す反転指示信号をセレクタ121uに対して出力する。なお、反転制御回路121rには、反転抑止フラグ保持回路121xから反転抑止フラグが入力されている(図7中、反転抑止フラグ保持回路121xと反転制御回路121rとの接続線は省略している)。反転抑止フラグは、ECC付きデータの反転を強制的に抑止することを意味する情報である。反転抑止フラグに有効な値(例えば「1」)が設定されていた場合、反転制御回路121rは、リードアドレスカウンタ121oから入力されたビット値とは無関係に、反転不要を示す反転指示信号をセレクタ121uに出力する。反転制御回路121rにおける入力と出力との関係の詳細は後述する(図8参照)。
送信FIFO121iに書き込むべき64ビットのライトデータ(write_data[63:0])は、ECC生成回路121pに入力される。ECC生成回路121pは、入力されたライトデータのECCを生成する。この例では、64ビットのライトデータが入力され、8ビットのECCが生成されている。ECC生成回路121pからは、ライトデータと、そのライトデータのECCとで構成されるECC付きデータ(write_data[63:0] + write_ecc[7:0])が出力される。
ECC生成回路121pから出力されたECC付きデータは、セレクタ121sと反転制御回路121tとに入力される。反転制御回路121tは、入力されたECC付きデータを構成するすべてのビットの値を反転する。すなわち、反転制御回路121tは、値が「0」のビットを「1」に変更し、値が「1」のビットを「0」に変更する。反転制御回路121tでビットの値が反転されたECC付きデータ(反転済ECC付きデータ)は、セレクタ121sに入力される。
セレクタ121sは、反転制御回路121qから入力された反転指示信号に基づいて、ECC付きデータと反転済ECC付きデータとのいずれか一方を選択し、送信FIFO121iに出力する。具体的には、反転指示信号が反転不要を示していれば、セレクタ121sは反転されていないECC付きデータを送信FIFO121iに出力する。また、反転指示信号が反転要を示していれば、セレクタ121sは反転済ECC付きデータを送信FIFO121iに出力する。
送信FIFO121iは、ライトアドレスカウンタ121nから入力された8ビットのアドレス値で示されるエントリ領域に、セレクタ121sから入力されたデータを格納する。また、送信FIFO121iは、リードアドレスカウンタ121oから入力された8ビットのアドレス値で示されるエントリ領域のデータ(出力データ)を出力する。
送信FIFO121iから出力された出力データは、セレクタ121uと反転制御回路121vとに入力される。反転制御回路121vは、入力された出力データを構成するすべてのビットの値を反転する。すなわち、反転制御回路121vは、値が「0」のビットを「1」に変更し、値が「1」のビットを「0」に変更する。これにより、出力データが反転済ECC付きデータであった場合、反転される前のECC付きデータに戻される。反転制御回路121vでビットの値が反転されたデータ(反転済出力データ)は、セレクタ121uに入力される。
セレクタ121uは、反転制御回路121vから入力された反転指示信号に基づいて、出力データと反転済出力データとのいずれか一方を選択し、ECCチェック/訂正回路121wに出力する。具体的には、反転指示信号が反転不要を示していれば、セレクタ121uは反転されていない出力データをECCチェック/訂正回路121wに出力する。また、反転指示信号が反転要を示していれば、セレクタ121uは反転済出力データをECCチェック/訂正回路121wに出力する。
セレクタ121uから出力される出力データ、又は反転済出力データは、72ビットのデータ(read_data[63:0] + read_ecc[7:0])である。先頭の64ビットがリードデータであり、続く8ビットがリードデータのECCである。
ECCチェック/訂正回路121wは、ECCを用いてセレクタ121uから入力されたリードデータのECCチェックを行う。ECCチェックでエラーが検出されれば、ECCチェック/訂正回路121wは、ECCエラー通知又はエラー訂正を行う。具体的には、まずECCチェック/訂正回路121wはリードデータのECCを生成する。そして、ECCチェック/訂正回路121wは、生成しECCと、セレクタ121uから受信したECCとを照合する。ECCチェック/訂正回路121wは、ECCが一致すればエラー無しと判断し、入力されたリードデータ(read_data[63:0])を出力する。また、ECCチェック/訂正回路121wは、ECCが不一致の場合、検出したECCエラーがCE(Correctable Error)の場合、リードデータを訂正し出力する。検出したECCエラーがUE(Uncorrectable Error)の場合、ECCチェック/訂正回路121wはECCエラーを出力する。ECCチェック/訂正回路121wから出力されるECCエラーは、メンテナンスバスを介してサービスプロセッサボード130のサービスプロセッサ131に通知される。
次に、反転制御回路121q,121rにおける入力と出力との関係について説明する。
図8は、反転制御回路の入出力を示す図である。反転制御回路121q,121rには、反転抑止フラグ、アドレスの第9ビット、第8ビット、および第0ビットそれぞれの値が入力される。そして入力された値に応じて、反転制御回路121q,121rから反転要否を示す反転指示信号が出力される。
図8は、反転制御回路の入出力を示す図である。反転制御回路121q,121rには、反転抑止フラグ、アドレスの第9ビット、第8ビット、および第0ビットそれぞれの値が入力される。そして入力された値に応じて、反転制御回路121q,121rから反転要否を示す反転指示信号が出力される。
反転抑止フラグの値が「1」であれば、常に非反転を示す反転要否信号が出力される。反転抑止フラグの値が「0」であれば、アドレスの第9ビット、第8ビット、および第0ビットそれぞれの値に応じて反転、非反転が決定される。
第9ビットが「0」、第8ビットが「0」であれば、反転制御回路121q,121rからは、第0ビットの値とは無関係に非反転を示す反転要否信号が出力される。第9ビットが「0」、第8ビットが「1」であれば、反転制御回路121q,121rからは、第0ビットの値とは無関係に反転を示す反転要否信号が出力される。
第9ビットが「1」、第8ビットが「0」、第0ビットが「0」であれば、反転制御回路121q,121rからは、非反転を示す反転要否信号が出力される。第9ビットが「1」、第8ビットが「0」、第0ビットが「1」であれば、反転制御回路121q,121rからは、反転を示す反転要否信号が出力される。第9ビットが「1」、第8ビットが「1」、第0ビットが「0」であれば、反転制御回路121q,121rからは、反転を示す反転要否信号が出力される。第9ビットが「1」、第8ビットが「1」、第0ビットが「1」であれば、反転制御回路121q,121rからは、非反転を示す反転要否信号が出力される。
以上のような構成のFIFOおよびその入出力回路により、固定故障および遅延故障の検出が可能となる。その場合、FIFOに書き込むデータパターンについてはテストプログラムによって生成されるが、そのデータパターンの内容はランダムな値でもよい。ただし、データパターンは、FIFOの全データ量に相当するデータパターンを、同一内容のまま4回繰り返しFIFOへ入力する。
サーバ100においてテストプログラムが実行されると、システムボード110,・・・,110n内のCPUがテストプログラムに沿った処理を実行する。その処理の過程で、システムボード110,・・・,110nからIOボード120,・・・,120nに対して所定の内容のパケットが出力される。
図9は、FIFO診断用テストパターンの例を示す図である。図9には、図7に示した送信FIFO121iの故障検出を行う場合のテストパターンが示されている。図9中の「Packet0」から「Packet127」までがテストパターンである。
この例では、テストプログラムにおいて、送信FIFO121iを経由して送信するパケットの送信命令単位のテストデータが定義されているものとする。テストプログラムに基づいてテストデータを送信するための送信パケットが出力されることで、図9に示したテストパターンが送信FIFO121iを経由して送信される。
テストプログラムはシステムボード110上のCPU111で実行される。また、このテストプログラムは、IOボード120上のIOコントローラ121として機能するLSI内の送信FIFO121iを診断対象とする。そのため、テストプログラムに記述されているパケット送信命令は、CPU111からLANコントローラ122へのアクセス命令の一種である。
送信FIFO121iには、テストプログラムの内容に依存する8バイトのライトデータ(write_data[63:0])の書き込みが行われる。送信FIFO121iが故障していなければ、書き込んだ値がリードデータ(read_data[63:0])として読み出される。
送信FIFO121iへの書き込み、読み出し時の値の反転制御はaddress[9]、address[8]とaddress[0]によって制御される。制御方法は、図8に示したとおりである。なお、データ書き込み時とデータ読み出し時との反転制御は同じである。
テストプログラムでは、FIFOの深さである256となるテストパターンを4回繰り返すように記述されている。繰り返すテストパターンは、診断率を高くするために4回とも同じ内容のものが利用される。また、テストパターンのデータ量は送信FIFO121iの深さ(送信FIFO121iの記憶容量)と一致する。
送信FIFO121iの深さ(エントリ数)は256である。また、図9の例では、送信FIFO121iには1個のパケット送信命令から生成されるパケットのヘッダ部分とデータ部分とのを両方が格納される。この例では、1つのパケットのヘッダ部分とデータ部分との合計容量は16バイトであるものとする。この場合、1つのパケットの書き込みに使用される送信FIFO121iの記憶容量は、エントリ2つ分(深さ2)である。そのため、128個のパケットを送信することで、送信FIFO121iの全ての領域にデータ書き込みを行うことができる。
テストプログラムには、IOコントローラ121からLANコントローラ122へ送信する128個のパケットを、4回繰り返して送信する送信命令が含まれる。従って、システムボードのCPUがテストプログラムを実行することで、IOコントローラ121では、全体で128×4回のパケット送信が行われることとなる。
1巡目のパケット送信では、先頭のパケット送信命令におけるパケットを送信FIFO121iに書き込むためのライトアドレスは「000h」(16進数表記)である。その後、順次パケットの前半部分、後半部分それぞれが書き込まれるごとに、ライトアドレスカウンタ121nがカウントアップされる。128個目のパケットの最後のデータが書き込まれたエントリ領域のライトアドレスは「0FFh」である。ここまでのパケット送信処理が、テストパターン書き込みの1巡目の処理である。
1巡目のテストパターン書き込みでは、ライトアドレスは「000h」~「0FFh」である。この間のライトアドレスの第9ビットと第8ビットとは、常に「0」である。そのため、1巡目のテストパターン書き込みでは、すべてのライトデータが非反転で送信FIFO121iに書き込まれる。そして、送信FIFO121iに書き込まれた出力データは、非反転で読み出され、リードデータとして出力される。1巡目のテストパターンの書き込み、読み出しにより、テストパターンの内容に依存した固定故障と遅延故障とが検出される。
例えば「1」に固定された固定故障を有するビットに「0」の書き込み行われていれば、そのビットの固定故障が検出できる。ただし、該当ビットに「1」の書き込みが行われた場合、1巡目においては固定故障の検出はできない。
また、例えばテストパターンにおける先頭のパケットの前半部分の先頭ビットが「0」であり、先頭のパケットの後半部分の先頭ビットが「1」であったとき、読み出し時に、該当パケットの後半部分の先頭ビットが「0」で読み出されると、該当ビットの遅延故障であると判断できる。ただし、テストパターンにおける先頭のパケットの前半部分の先頭ビットと後半部分の先頭ビットとが共に「0」であると、遅延故障は検出できない。
2巡目のパケット送信では、先頭のパケット送信命令におけるパケットを送信FIFO121iに書き込むためのライトアドレスは「100h」である。その後、順次パケットの前半部分、後半部分それぞれが書き込まれるごとに、ライトアドレスカウンタ121nがカウントアップされる。128個目のパケットの最後のデータが書き込まれたエントリ領域のライトアドレスは「1FFh」である。この間のパケット送信処理が、テストパターン書き込みの2巡目の処理である。
2巡目のテストパターン書き込みでは、ライトアドレスは「100h」~「1FFh」である。この間のライトアドレスの第9ビットは常に「0」であり、第8ビットは常に「1」である。そのため、2巡目のテストパターン書き込みでは、すべてのライトデータの値が反転して送信FIFO121iに書き込まれる。そして、送信FIFO121iに書き込まれた出力データは、読み出されたデータの値が反転され、リードデータとして出力される。
2巡目のテストパターンの書き込み、読み出しにより、1巡目で検出できなかった極性の固定故障が検出できる。例えば、「1」に固定された固定故障を有するビットに1巡目に「1」の書き込みが行われていれば、そのビットに対して2巡目には「0」が書き込まれる。そうすると、該当ビットの固定故障は、1巡目には検出できないが2巡目には検出できる。その結果、1巡目と2巡目とのテストパターンの書き込みにより、送信FIFO121iのすべてのビットに対する両極性(「0」固定と「1」固定)での固定故障の診断が完了する。
また、2巡目のテストパターンの書き込み、読み出しにより、1巡目とは異なるビット配列による遅延故障が検出できる。例えばテストパターンにおける先頭のパケットの前半部分の先頭ビットが「0」であり、後半部分の先頭ビットが「1」であったとき、1巡目にはそのままの値が書き込まれるが、2巡目には値が反転される。すると、先頭のパケットの前半部分の先頭ビットには「1」が書き込まれ、後半部分の先頭ビットには「0」が書き込まれる。その結果、読み出し時に、後半部分の先頭ビットが「1」で読み出されると、該当ビットの遅延故障であると判断できる。
3巡目のパケット送信では、先頭のパケット送信命令におけるパケットを送信FIFO121iに書き込むためのライトアドレスは「200h」である。その後、順次パケットの前半部分、後半部分それぞれが書き込まれるごとに、ライトアドレスカウンタ121nがカウントアップされる。128個目のパケットの最後のデータが書き込まれたエントリ領域のライトアドレスは「2FFh」である。この間のパケット送信処理が、テストパターン書き込みの3巡目の処理である。
3巡目のテストパターン書き込みでは、ライトアドレスは「200h」~「2FFh」である。この間のライトアドレスの第9ビットは常に「1」であり、第8ビットは常に「0」である。そのため、3巡目のテストパターン書き込みでは、第0ビット(LSB)の値が「0」であれば非反転で送信FIFO121iに書き込まれる。また、第0ビット(LSB)の値が「1」であれば反転して送信FIFO121iに書き込まれる。送信FIFO121iに書き込まれた出力データは、第0ビット(LSB)の値が「0」であれば送信FIFO121iから読み出された出力データが非反転のままリードデータとなる。また、第0ビット(LSB)の値が「1」であれば、送信FIFO121iから読み出された出力データの値が反転され、リードデータとして出力される。
3巡目のテストパターンの書き込み、読み出しにより、1巡目、2巡目とは異なるビット配列による遅延故障が検出できる。例えばテストパターンにおける先頭のパケット(ライトアドレス「000h」)の前半部分の先頭ビットが「0」であり、後半部分(ライトアドレス「001h」)の先頭ビットが「0」であった場合を想定する。この場合、1巡目では、それぞれのデータ格納領域の先頭ビットには共に「0」が書き込まれる。1巡目では、それぞれのデータ格納領域の先頭ビットには共に「1」が書き込まれる。このように、遅延故障の判断対象となるビット列に同じ値が書き込まれていると、遅延故障を検出できない。一方、3巡目には、先頭のパケットの前半部分の先頭ビットはそのまま「0」の値が書き込まれるが、後半部分の先頭ビットには「1」の値が書き込まれる。その結果、読み出し時に、後半部分の先頭のビットが「0」で読み出されると、該当ビットの遅延故障であると判断できる。
4巡目のパケット送信では、先頭のパケット送信命令におけるパケットを送信FIFO121iに書き込むためのライトアドレスは「300h」である。その後、順次パケットの前半部分、後半部分それぞれが書き込まれるごとに、ライトアドレスカウンタ121nがカウントアップされる。128個目のパケットの最後のデータが書き込まれたエントリ領域のライトアドレスは「3FFh」である。この間のパケット送信処理が、テストパターン書き込みの4巡目の処理である。
4巡目のテストパターン書き込みでは、ライトアドレスは「300h」~「3FFh」である。この間のライトアドレスの第9ビットは常に「1」であり、第8ビットは常に「1」である。そのため、4巡目のテストパターン書き込みでは、第0ビット(LSB)の値が「0」であれば反転して送信FIFO121iに書き込まれる。また、第0ビット(LSB)の値が「1」であれば非反転で送信FIFO121iに書き込まれる。送信FIFO121iに書き込まれた出力データは、第0ビット(LSB)の値が「0」であれば送信FIFO121iから読み出された出力データが反転され、リードデータとして出力される。また、第0ビット(LSB)の値が「1」であれば、送信FIFO121iから読み出された出力データの値がそのままリードデータとして出力される。
4巡目のテストパターンの書き込み、読み出しにより、1巡目~3巡目とは異なるビット配列による遅延故障が検出できる。例えばテストパターンにおける先頭パケット(ライトアドレス「000h」)の前半部分の先頭ビットが「0」であり、後半部分(ライトアドレス「001h」)の先頭ビットが「0」であった場合を想定する。この場合、3巡目には、先頭パケットの前半部分の先頭ビットはそのまま「0」の値が書き込まれ、後半部分の先頭ビットには「1」の値が書き込まれる。同様の場合、4巡目には、先頭パケットの前半部分の先頭ビットは「1」の値が書き込まれ、後半部分の先頭ビットにはそのまま「0」の値が書き込まれる。その結果、読み出し時に、後半部分の先頭ビットが「1」で読み出されると、該当ビットの遅延故障であると判断できる。
このように、送信FIFO121iの深さに応じたデータ量のテストパターンを4回繰り返して送信FIFO121iを介して送信することで、送信FIFO121iの固定故障および遅延故障の有無が診断できる。この際、診断率は、テストパターン内の128個のパケット送信命令の内容(データパターン)に依存しない。もし、テストパターン中に固定故障や遅延故障が検出された場合は、ECCチェック/訂正回路121wよりECCエラーが通知されることとなる。
次に、図9に示したようなテストパターンとなるパケットの送信処理を行うテストプログラムで示される処理手順について説明する。
図10は、テストプログラムに基づくパケット送信処理の手順を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。なお、以下の説明では、システムボード110のCPU111が送信FIFO121iを検査するためのテストプログラムを実行するものとする。
図10は、テストプログラムに基づくパケット送信処理の手順を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。なお、以下の説明では、システムボード110のCPU111が送信FIFO121iを検査するためのテストプログラムを実行するものとする。
[ステップS11]CPU111は、変数iに初期値「4」を設定する。変数iは、FIFOの深さ分のテストパターンの残りの繰り返し回数を示している。
[ステップS12]CPU111は、変数jに、送信FIFO121iの深さ分のパケットの送信回数を示す値を設定する。具体的には、テストプログラム内で送信FIFO121iの深さ(fifo_length)とパケットで使用する送信FIFO121iのエントリ領域の数(request_length)とが定数として与えられている。CPU111では、送信FIFO121iの深さをパケットが使用するエントリ領域の数で除算し、その商を変数jの初期値として設定する(j = fifo_length / request_length)。
[ステップS12]CPU111は、変数jに、送信FIFO121iの深さ分のパケットの送信回数を示す値を設定する。具体的には、テストプログラム内で送信FIFO121iの深さ(fifo_length)とパケットで使用する送信FIFO121iのエントリ領域の数(request_length)とが定数として与えられている。CPU111では、送信FIFO121iの深さをパケットが使用するエントリ領域の数で除算し、その商を変数jの初期値として設定する(j = fifo_length / request_length)。
本実施の形態では、送信FIFO121iの深さは256である(エントリ領域が256個存在する)。また、1つのパケットを格納するのに、エントリ領域を2つ分使用する。すると、従って、変数jには、初期値として「128(=256/2)」が設定される。
[ステップS13]CPU111は、1個のパケット送信命令を実行する。具体的には、CPU111は、IOボード120のLANポート125に接続されたネットワーク上のネットワーク機器を宛先としたパケットを生成する。そして、CPU111は、そのパケットの送信命令を実行する。すると、そのパケットは、システムバスを介して、システムボード110からIOボード120に転送される。
IOコントローラ121では、システムバスインタフェース121aを介して、送信パケットが入力され、受信FIFO121fに格納される。その後、送信パケットはプロトコル変換部121kによってIOバスの通信プロトコルに合うようにデータフォーマットが変換される。データフォーマットが変換された送信パケットは、ルーティング制御部121mによって転送先が判断され、送信FIFO121iに格納される。送信FIFO121iに格納された送信パケットは、IOバスインタフェース121cを介してLANコントローラ122に出力される。
このような手順でパケットがIOコントローラ121からLANコントローラ122に送信されることにより、送信FIFO121iに対してパケットのデータ長分のデータの書き込み、および読み出しが行われる。
[ステップS14]CPU111は、変数jをデクリメント(1を減じる処理)する。
[ステップS15]CPU111は、変数jが0か否かを判断する。変数jが1以上であれば、処理がステップS13に進められ、パケットの送信が継続される。変数jが0であれば、予め用意されたテストパターンでの1回分のパケット送信処理が終了し、処理がステップS16に進められる。
[ステップS15]CPU111は、変数jが0か否かを判断する。変数jが1以上であれば、処理がステップS13に進められ、パケットの送信が継続される。変数jが0であれば、予め用意されたテストパターンでの1回分のパケット送信処理が終了し、処理がステップS16に進められる。
[ステップS16]CPU111は、変数iをデクリメントする。
[ステップS17]CPU111は、変数iが0か否かを判断する。変数iが1以上であれば、処理がステップS12に進められ、予め用意されたテストパターンでのパケットの送信が再開される。変数iが0であれば、テストパターンを4回分送信完了しているためパケット送信処理が終了し、処理がステップS18に進められる。
[ステップS17]CPU111は、変数iが0か否かを判断する。変数iが1以上であれば、処理がステップS12に進められ、予め用意されたテストパターンでのパケットの送信が再開される。変数iが0であれば、テストパターンを4回分送信完了しているためパケット送信処理が終了し、処理がステップS18に進められる。
[ステップS18]CPU111は、すべてのパケットが正常に送信されたことをチェックする。具体的には、CPU111は、ステップS12~S17の処理の実行過程においてECCチェック/訂正回路121wからECCエラー通知が出力されなければ、すべてのパケットが正常に送信されたと判断できる。もしECCエラー通知が出力された場合、送信FIFO121iに固定故障又は遅延故障の可能性があることが認識できる。
次に、固定故障と遅延故障との診断例について説明する。
図11は、固定故障、遅延故障の診断例を示す図である。図11では、FIFOのアドレス「n」(nは自然数)のエントリ領域におけるm番目(mは自然数)のビット(診断対象ビット12)についての診断方法を示す。アドレス「n」のエントリ領域の診断対象ビット12の遅延故障を検出するには、アドレス「n-1」のエントリ領域のm番目のビット(直前ビット11)にも着目する。なお、アドレス「n-1」のLSB(第0ビット)は「0」であるものとする。
図11は、固定故障、遅延故障の診断例を示す図である。図11では、FIFOのアドレス「n」(nは自然数)のエントリ領域におけるm番目(mは自然数)のビット(診断対象ビット12)についての診断方法を示す。アドレス「n」のエントリ領域の診断対象ビット12の遅延故障を検出するには、アドレス「n-1」のエントリ領域のm番目のビット(直前ビット11)にも着目する。なお、アドレス「n-1」のLSB(第0ビット)は「0」であるものとする。
テストパターンの1巡目では、直前ビット11に「0」、診断対象ビット12に「0」が書き込まれる。1巡目で診断対象ビット12、直前ビット11それぞれに書き込まれる値は、テストパターンに定義された値(非反転の値)である。1巡目では、診断対象ビット12が「1」に固定される固定故障が検出できる。すなわち、診断対象ビット12に対して「0」を書き込んだにも拘わらず「1」で読み出されることでECCエラーが発生する。
テストパターンの2巡目では、直前ビット11に「1」、診断対象ビット12に「1」が書き込まれる。2巡目で診断対象ビット12、直前ビット11それぞれに書き込まれる値は、テストパターンに定義された値を反転させた値である。2巡目では、診断対象ビット12が「0」に固定される固定故障が検出できる。すなわち、診断対象ビット12に対して「1」を書き込んだにも拘わらず「0」で読み出されることでECCエラーが発生する。
テストパターンの3巡目では、直前ビット11に「0」、診断対象ビット12に「1」が書き込まれる。直前ビット11が属するエントリ領域のアドレス「n-1」のLSBは「0」である。すると、3巡目で直前ビット11に書き込まれる値は、テストパターンに定義された値(非反転の値)である。一方、診断対象ビット12が属するエントリ領域のアドレス「n」のLSBは「1」である。すると、3巡目で診断対象ビット12に書き込まれる値は、テストパターンに定義された値を反転させた値である。3巡目では、診断対象ビット12の「0→1」の遅延故障が検出できる。すなわち、直前ビット11が「0」であるとき診断対象ビット12の遅延故障があると、診断対象ビット12に「1」を書き込んだにも拘わらず「0」で読み出され、ECCエラーが発生する。
テストパターンの4巡目では、直前ビット11に「1」、診断対象ビット12に「0」が書き込まれる。3巡目で直前ビット11に書き込まれる値は、テストパターンに定義された値を反転させた値である。一方、診断対象ビット12が属するエントリ領域のアドレス「n」のLSBは「1」である。すると、4巡目で診断対象ビット12に書き込まれる値は、テストパターンに定義された値(非反転の値)である。4巡目では、診断対象ビット12の「1→0」の遅延故障が検出できる。すなわち、直前ビット11が「0」であるとき診断対象ビット12の遅延故障があると、診断対象ビット12に「1」を書き込んだにも拘わらず「0」で読み出され、ECCエラーが発生する。
なお、図11に示した例では、テストパターンにおいて直前ビット11と診断対象ビット12との値が同一であるため、3巡目と4巡目とで遅延故障が検出できる。テストパターンにおいて直前ビット11と診断対象ビット12との値とが異なる値の場合、1巡目と2巡目とで遅延故障が検出できる。従って、テストパターンにおいて直前ビット11と診断対象ビット12とに設定する値がどのような値であっても、少なくともテストパターンの書き込み、読み出しを4巡させることで、確実に診断対象ビット12の遅延故障が検出可能となる。
また、図11では、診断対象ビット12に着目して故障診断処理を説明しているが、実際には、FIFO内のすべてのビットに対して同様の診断が行われる。
IOコントローラ121は送信FIFO121iでECCエラーを検出した場合は、メンテナンスバスを経由してサービスプロセッサ131に通知する。サービスプロセッサ131はエラー内容や検出タイミングに応じてエラー処理を行う。例えば、システム起動時に実行されるPOST中にECCのUEを検出した場合、サービスプロセッサ131は故障LSIを除いてシステム起動を行う。
IOコントローラ121は送信FIFO121iでECCエラーを検出した場合は、メンテナンスバスを経由してサービスプロセッサ131に通知する。サービスプロセッサ131はエラー内容や検出タイミングに応じてエラー処理を行う。例えば、システム起動時に実行されるPOST中にECCのUEを検出した場合、サービスプロセッサ131は故障LSIを除いてシステム起動を行う。
さらに、本実施の形態では、FIFO診断機能を無効にするために反転抑止フラグを有している。反転抑止フラグはサービスプロセッサ131からメンテナンスバス経由で制御さる。反転抑止フラグ=1の場合は反転制御機能が無効となる。サービスプロセッサ131はFIFO診断テストプログラムが実行される前に、反転抑止フラグ=0に設定する。FIFOにパケットが蓄えられている状態で反転抑止フラグの設定を変更すると、同じFIFOアドレスのライト/リード反転制御が異なってしまい、ECCエラーを誤検出する。そのため、サービスプロセッサ131は反転抑止フラグ設定を、IOボード120の電源投入後、FIFOにパケットが格納される前に行う。
[第2の実施の形態]
第2の実施の形態は、FIFOの故障診断技術をLIFOに応用したものである。LIFOは、ECCで保護された後に格納したデータから順に読み出しを行う記憶回路である。このような後入れ先出しバッファは、スタック制御に利用される。
第2の実施の形態は、FIFOの故障診断技術をLIFOに応用したものである。LIFOは、ECCで保護された後に格納したデータから順に読み出しを行う記憶回路である。このような後入れ先出しバッファは、スタック制御に利用される。
なお、第2の実施の形態では、図2に示したサーバ100のシステムボード110,・・・,110nやIOボード120,・・・,120nに実装されたLSI内のLIFOの故障診断を行うものとする。
図12は、LIFOの入出力回路を示す図である。図12の例では、LIFO21のデータ幅は72ビットである。LIFO21には、64ビットのデータと8ビットのECCが格納される。LIFO21の深さは256である。従って、LIFO21のアドレス空間は、8ビットのアドレスで表現可能である。
アドレスカウンタ22は、ライト/リード共通で使用される。アドレスカウンタ22は、9ビットで構成される。アドレスカウンタ22の第7ビット~第0ビットの値でLIFO21のアドレスが指定される。アドレスカウンタ22の値が「1FFh」(16進数表記)の場合はLIFO21が空であることを示す。また、アドレスカウンタ22の値が「0FFh」の場合は、LIFO21がフルであることを示す。
アドレスカウンタ22の初期値は「1FFh」である。これはLIFO21が空であることを示している。LIFO21内のすべての記憶領域にデータが格納されているとき(フルの状態)、アドレスカウンタ22の値は「0FFh」である。
アドレスカウンタ22は書き込み直前に「+1」インクリメントされ、インクリメント後のLIFO21のアドレスにデータが書き込まれる。また、アドレスカウンタ22は、読み出し時に「-1」デクリメントされる。アドレスカウンタ22の値は、第7ビットから第0ビットの値がLIFO21のライト/リード用アドレスとして入力される。また、アドレスカウンタ22の第0ビットの値が反転制御回路24に入力される。さらに、アドレスカウンタ22の値が「000h」からデクリメントされ「1FFh」に変化した場合、その変化のタイミングが反転制御カウンタ23に通知される。このアドレスの変化は、LIFO21が空になったタイミングを示している。
反転制御カウンタ23は、2ビットで構成される。反転制御カウンタ23はLIFO21が空になるタイミングで「+1」インクリメントされる。つまり、アドレスカウンタ22から「000h」から「1FFh」に変化した旨の信号が入力されると、反転制御カウンタ23のインクリメントが行われる。アドレスカウンタ22から「000h」から「1FFh」に変化するタイミングとは、アドレスが「0」から負に遷移するタイミングである。反転制御カウンタ23の値は、反転制御回路24に入力される。
反転制御回路24は、アドレスカウンタ22から入力された第0ビットの値と、反転制御カウンタ23の値に応じて、ECC付きデータの反転の要否を示す反転指示信号をセレクタ27に対して出力する。なお、反転制御回路24には、反転抑止フラグ保持回路31から反転抑止フラグが入力されている。反転抑止フラグ保持回路31には、サービスプロセッサ131によって1ビットの反転抑止フラグが設定される。反転抑止フラグは、ECC付きデータの反転を強制的に抑止することを意味する情報である。反転抑止フラグに有効な値(例えば「1」)が設定されていた場合、反転制御回路24は、アドレスカウンタ22や反転制御カウンタ23から入力された値とは無関係に、反転不要を示す反転指示信号をセレクタ27に出力する。反転制御回路24における入力と出力との関係の詳細は後述する(図13参照)。
LIFO21に書き込むべき64ビットのライトデータ(write_data[63:0])は、ECC生成回路25に入力される。ECC生成回路25は、入力されたライトデータのECCを生成する。この例では、64ビットのライトデータが入力され、8ビットのECCが生成されている。ECC生成回路25からは、ライトデータと、そのライトデータのECCとで構成されるECC付きデータ(write_data[63:0] + write_ecc[7:0])が出力される。
ECC生成回路25から出力されたECC付きデータは、セレクタ27と反転制御回路26とに入力される。反転制御回路26は、入力されたECC付きデータを構成するすべてのビットの値を反転する。すなわち、反転制御回路26は、値が「0」のビットを「1」に変更し、値が「1」のビットを「0」に変更する。反転制御回路26でビットの値が反転されたECC付きデータ(反転済ECC付きデータ)は、セレクタ27に入力される。
セレクタ27は、反転制御回路24から入力された反転指示信号に基づいて、ECC付きデータと反転済ECC付きデータとのいずれか一方を選択し、LIFO21に出力する。具体的には、反転指示信号が反転不要を示していれば、セレクタ27は反転されていないECC付きデータをLIFO21に出力する。また、反転指示信号が反転要を示していれば、セレクタ27は反転済ECC付きデータをLIFO21に出力する。
LIFO21は、アドレスカウンタ22から入力された8ビットのアドレス値で示されるエントリ領域に、セレクタ27から入力されたデータを格納する。また、LIFO21は、アドレスカウンタ22から入力された8ビットのアドレス値で示されるエントリ領域のデータ(出力データ)を出力する。
LIFO21から出力された出力データは、セレクタ29と反転制御回路28とに入力される。反転制御回路28は、入力された出力データを構成するすべてのビットの値を反転する。すなわち、反転制御回路28は、値が「0」のビットを「1」に変更し、値が「1」のビットを「0」に変更する。これにより、出力データが反転済ECC付きデータであった場合、反転される前のECC付きデータに戻される。反転制御回路28でビットの値が反転されたデータ(反転済出力データ)は、セレクタ29に入力される。
セレクタ29は、反転制御回路24から入力された反転指示信号に基づいて、出力データと反転済出力データとのいずれか一方を選択し、ECCチェック/訂正回路30に出力する。具体的には、反転指示信号が反転不要を示していれば、セレクタ29は反転されていない出力データをECCチェック/訂正回路30に出力する。また、反転指示信号が反転要を示していれば、セレクタ29は反転済出力データをECCチェック/訂正回路30に出力する。
セレクタ29から出力される出力データ又は反転済出力データは、72ビットのデータ(read_data[63:0] + read_ecc[7:0])である。先頭の64ビットがリードデータであり、続く8ビットがリードデータのECCである。
ECCチェック/訂正回路30は、セレクタ29から入力されたリードデータのECCチェックを行う。ECCチェックでエラーが検出されれば、ECCチェック/訂正回路30は、ECCエラー通知又はエラー訂正を行う。具体的には、まずECCチェック/訂正回路30はリードデータのECCを生成する。そして、ECCチェック/訂正回路30は、生成したECCと、セレクタ29から受信したECCとを照合する。ECCチェック/訂正回路30は、ECCが一致すればエラーなしと判断し、入力されたリードデータ(read_data[63:0])を出力する。また、ECCチェック/訂正回路30は、ECCが不一致の場合、検出したECCエラーがCE(Correctable Error)の場合、リードデータを訂正し出力する。検出したECCエラーがUE(Uncorrectable Error)の場合、ECCチェック/訂正回路30はECCエラーを出力する。ECCチェック/訂正回路30から出力されるECCエラーは、メンテナンスバスを介してサービスプロセッサボード130のサービスプロセッサ131に通知される。
次に、反転制御回路24における入力と出力との関係について説明する。
図13は、第2の実施の形態における反転制御回路の入出力を示す図である。なお、LIFO21の書き込み、読み出し時のデータ反転制御は、反転制御カウンタ23の値に基づいて制御されており、ライト時とリード時との反転制御は同じである。
図13は、第2の実施の形態における反転制御回路の入出力を示す図である。なお、LIFO21の書き込み、読み出し時のデータ反転制御は、反転制御カウンタ23の値に基づいて制御されており、ライト時とリード時との反転制御は同じである。
反転制御回路24には、反転抑止フラグ、反転制御カウンタ、アドレスの第0ビット(LSB)の値が入力される。そして入力された値に応じて、反転制御回路24から反転要否を示す反転指示信号が出力される。
反転抑止フラグの値が「1」であれば、常に非反転を示す反転要否信号が出力される。反転抑止フラグの値が「0」であれば、反転制御カウンタ、および第0ビットそれぞれの値に応じて反転、非反転が決定される。
反転制御カウンタ23の値が「00b」(2進数表記)であれば、反転制御回路24からは、第0ビットの値とは無関係に非反転を示す反転要否信号が出力される。反転制御カウンタ23の値が「01b」であれば、反転制御回路24からは、第0ビットの値とは無関係に反転を示す反転要否信号が出力される。
反転制御カウンタ23の値が「10b」、第0ビットが「0」であれば、反転制御回路24からは、非反転を示す反転要否信号が出力される。反転制御カウンタ23の値が「10b」、第0ビットが「1」であれば、反転制御回路24からは、反転を示す反転要否信号が出力される。反転制御カウンタ23の値が「11b」、第0ビットが「0」であれば、反転制御回路24からは、反転を示す反転要否信号が出力される。反転制御カウンタ23の値が「11b」、第0ビットが「1」であれば、反転制御回路24からは、非反転を示す反転要否信号が出力される。
以上のような構成のLIFO21およびその入出力回路により、固定故障および遅延故障の検出が可能となる。その場合、LIFO21に書き込むデータパターンについてはテストプログラムによって生成されるが、そのデータパターンの内容はランダムな値でよい。ただし、データパターンは、LIFO21の全データ量に相当するデータパターンのLIFO21への書き込みおよび読み出しを、4回繰り返し行う。
LIFO21にはテストプログラムの内容に依存するライトデータ[63:0]が書き込まれる。LIFO21が故障していなければ、その値がリードデータ[63:0]として読み出される。
テストプログラムはLIFO21の深さ256に相当するデータ量のテストパターンを書き込みと読み出しとを4回繰り返す。診断率を高くするために、4回とも同じテストパターンが利用される。
例えば、システムボード110のCPU111がLIFOの故障診断用のテストプログラムを実行している場合、まず、CPU111からの制御により、深さ256分のデータの書き込みがLIFO21に対して行われる。次に、CPU111からの制御により、LIFO21から書き込んだデータがすべて読み出される。すべてのデータが読み出された時点で、テストパターンの1周期分の入出力が終了する。
すべてのデータが読み出されると、LIFO21が空となり、反転制御カウンタ23の値がカウントアップされる。その結果、次のテストパターンの入出力では、前回とは異なる反転制御カウンタ値の下でLIFO21へのデータ入出力が行われることとなる。そして、深さ256分のデータの書き込みと読み出しを4回繰り返すと、LIFO21に対する固定故障と遅延故障との故障診断が完了する。テストパターンの入出力中に固定故障や遅延故障が検出された場合は、ECCチェック/訂正回路30によりECCエラーがサービスプロセッサボード130内のサービスプロセッサ131に通知される。
また、LIFO21の診断機能においても、診断機能を無効にするために反転抑止フラグが設けられている。反転抑止フラグはサービスプロセッサ131からメンテナンスバス経由で制御さる。反転抑止フラグ=1の場合は反転制御機能が無効となる。サービスプロセッサ131はLIFO診断テストプログラムが実行される前に、反転抑止フラグ=0に設定する。LIFO21にデータが蓄えられている状態で反転抑止フラグの設定を変更すると、同じLIFO21アドレスのライト/リード反転制御が異なってしまい、ECCエラーを誤検出する。そのため、サービスプロセッサ131は反転抑止フラグ設定を、LIFO21が実装されたボードの電源投入後、LIFO21にデータが格納される前に行う。
このように、所定の順番でデータの入出力が行われる記憶装置であれば、キュー制御に用いられるFIFOに限らず、スタック制御に用いられるLIFOの高い診断率の故障診断も可能となる。
なお、LIFOの故障診断において、固定故障のみを検出するのであれば、反転制御カウンタ23は、1ビットのみでよい。この場合、テストパターンの書き込みおよび読み出しは2回繰り返せばよい。
以上、第1、第2の実施の形態で示したように、LSI内部に図7又は図12に示した回路を実装することにより、テストパターンの内容に依存せずに、高い検出率の故障診断が可能となる。テストパターンの内容を気にする必要がないことから、テストプログラムの作成が容易となる。また、予め用意したテストパターンの入出力を繰り返すだけなので、テストプログラムの内容も単純で済む。すなわち、テストプログラムを少ない工数で作成することができる。また、診断率を向上させることで、装置運用前にFIFOやLIFOの故障を検出できる。また、診断率を向上させるためにLSI内部に実装するFIFOやLIFOの補助論理回路が小さくて済む。
なお、上記のテストプログラムに基づく処理機能は、コンピュータによって実現することができる。その場合、記憶装置の故障検出時に実行すべき処理内容を記述したテストプログラムが提供される。そのテストプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したテストプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD-RAM、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disc)などがある。
テストプログラムを流通させる場合には、例えば、そのテストプログラムが記録されたDVD、CD-ROMなどの可搬型記録媒体が販売される。また、テストプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのテストプログラムを転送することもできる。
テストプログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたテストプログラムもしくはサーバコンピュータから転送されたテストプログラムを、自己の記憶装置に格納する。そして、テストコンピュータは、自己の記憶装置からテストプログラムを読み取り、テストプログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接テストプログラムを読み取り、そのテストプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからテストプログラムが転送されるごとに、逐次、受け取ったテストプログラムに従った処理を実行することもできる。
なお、開示の記憶装置および故障診断方法は、上述の実施の形態にのみ限定されるものではなく、開示の記憶装置および故障診断方法の要旨を逸脱しない範囲内において種々の変更を加えることができる。
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
1 記憶部
1a,1b エントリ領域
2 書き込みアドレスカウンタ
3 入力データ反転部
4 入力データ選択部
5 読み出しアドレスカウンタ
6 出力データ反転部
7 出力データ選択部
8 入力データ
8a テストパターン
9 読み出しデータ
1a,1b エントリ領域
2 書き込みアドレスカウンタ
3 入力データ反転部
4 入力データ選択部
5 読み出しアドレスカウンタ
6 出力データ反転部
7 出力データ選択部
8 入力データ
8a テストパターン
9 読み出しデータ
Claims (17)
- 書き込まれたデータを保持するとともに、前記保持したデータの読み出しを行う記憶装置において、
複数のエントリ領域を有し、前記複数のエントリ領域のうち、書き込みを行うエントリ領域を指定する書き込みアドレスに含まれるビットに基づいてデータを書き込むとともに、読み出しを行うエントリ領域を指定する読み出しアドレスに含まれるビットに基づいてデータを読み出す記憶部と、
前記書き込みアドレスを、前記記憶部に対して出力する書き込みアドレスカウンタと、
前記記憶部への入力データを反転して、反転入力データを出力する入力データ反転部と、
前記書き込みアドレスに含まれるビットに基づいて、前記入力データ又は前記反転入力データを選択し、前記書き込みアドレスに含まれるビットに基づいて、前記記憶部に前記選択したデータの書き込みを行う入力データ選択部と、
前記読み出しアドレスを、前記記憶部に対して出力する読み出しアドレスカウンタと、
前記記憶部からの出力データを反転して、反転出力データを出力する出力データ反転部と、
前記読み出しアドレスに含まれるビットに基づいて、前記記憶部から前記出力データの読み出しを行うとともに、前記読み出しアドレスに含まれるビットに基づいて、前記出力データ又は前記反転出力データを選択して出力する出力データ選択部と、
を有することを特徴とする記憶装置。 - 前記記憶装置はさらに、
前記入力データに基づいて、入力データエラー訂正符号を生成し、前記入力データに付加するエラー訂正符号生成回路と、
前記出力データに含まれる出力データエラー訂正符号に基づいて、前記出力データのエラー検出又はエラー訂正を行うエラー訂正回路と、
を有することを特徴とする請求の範囲第1項記載の記憶装置。 - 前記記憶装置はさらに、
反転抑止フラグを保持する反転抑止フラグ保持部を有し、
前記入力データ選択部は、前記反転抑止フラグに基づいて、前記反転入力データの選択を抑止し、
前記出力データ選択部は、前記反転抑止フラグに基づいて、前記反転出力データの選択を抑止することを特徴とする請求の範囲第1項記載の記憶装置。 - 前記記憶装置は、先入れ先出しバッファを構成し、
前記入力データ選択部は、前記書き込みアドレスのうちの上位2ビットと最下位ビットに基づいて、前記入力データ又は前記反転入力データを選択し、
前記出力データ選択部は、前記読み出しアドレスを構成するビットのうちの上位2ビットと最下位ビットに基づいて、前記出力データ又は前記反転出力データを選択することを特徴とする請求の範囲第1項記載の記憶装置。 - 前記入力データ選択部は、前記書き込みアドレスの上位2ビットの値が0、0の場合には前記入力データを選択し、前記書き込みアドレスの上位2ビットの値が0、1の場合には前記反転入力データを選択し、前記書き込みアドレスの上位2ビットの値が1、0、最下位ビットの値が0であれば前記入力データを選択し、前記書き込みアドレスの上位2ビットの値が1、0、最下位ビットの値が1の場合には前記反転入力データを選択し、前記書き込みアドレスの上位2ビットの値が1、1、最下位ビットの値が0の場合には前記反転入力データを選択し、前記書き込みアドレスの上位2ビットの値が1、1、最下位ビットの値が1の場合には前記入力データを選択し、
前記出力データ選択部は、前記読み出しアドレスを構成するビットの上位2ビットの値が0、0の場合には前記出力データを選択し、前記読み出しアドレスを構成するビットの上位2ビットの値が0、1の場合には前記反転出力データを選択し、前記読み出しアドレスを構成するビットの上位2ビットの値が1、0、最下位ビットの値が0であれば前記出力データを選択し、前記読み出しアドレスを構成するビットの上位2ビットの値が1、0、最下位ビットの値が1の場合には前記反転出力データを選択し、前記読み出しアドレスを構成するビットの上位2ビットの値が1、1、最下位ビットの値が0の場合には前記反転出力データを選択し、前記読み出しアドレスを構成するビットの上位2ビットの値が1、1、最下位ビットの値が1の場合には前記出力データを選択することを特徴とする請求の範囲第4項記載の記憶装置。 - 前記書き込みアドレスカウンタは、前記複数のエントリ領域すべてのアドレスを指定するのに必要なビット数よりも2ビット多いビットを有しており、上位2ビット以外の他のビット列を前記書き込みアドレスとして前記記憶部に対して出力し、
前記読み出しアドレスカウンタは、前記複数のエントリ領域すべてのアドレスを指定するのに必要なビット数よりも2ビット多いビットを有しており、上位2ビット以外の他のビット列を前記読み出しアドレスとして前記記憶部に対して出力することを特徴とする請求の範囲第4項記載の記憶装置。 - 書き込まれたデータを保持するとともに、前記保持したデータの読み出しを行う記憶装置において、
複数のエントリ領域を有し、前記複数のエントリ領域のうち、書き込み又は読み出しを行うエントリ領域を指定する制御アドレスに基づいてデータの書き込み又はデータの読み出しを行う記憶部と、
前記制御アドレスを、前記記憶部に対して出力する制御アドレスカウンタと、
前記制御アドレスカウンタが出力する前記制御アドレスが、0から負の値になる場合に計数を行うとともに、前記計数した反転制御カウンタ値を出力する反転制御カウンタと、
前記記憶部への入力データを反転して、反転入力データを出力する入力データ反転部と、
前記制御アドレスに含まれるビットと前記反転制御カウンタ値に基づいて、前記入力データ又は前記反転入力データを選択し、前記制御アドレスに含まれるビットと前記反転制御カウンタ値に基づいて、前記記憶部に前記選択したデータの書き込みを行う入力データ選択部と、
前記記憶部からの出力データを反転して、反転出力データを出力する出力データ反転部と、
前記制御アドレスに基づいて、前記記憶部から出力データの読み出しを行うとともに、前記制御アドレスに含まれるビットと前記反転制御カウンタ値に基づいて、前記出力データ又は前記反転出力データを選択して出力する出力データ選択部を有することを特徴とする記憶装置。 - 前記記憶装置はさらに、
前記入力データに基づいて、入力データエラー訂正符号を生成し、前記入力データに付加するエラー訂正符号生成回路と、
前記出力データに含まれる出力データエラー訂正符号に基づいて、前記出力データのエラー検出又はエラー訂正を行うエラー訂正回路を有することを特徴とする請求の範囲第7項記載の記憶装置。 - 前記記憶装置はさらに、
反転抑止フラグを保持する反転抑止フラグ保持部を有し、
前記入力データ選択部は、前記反転抑止フラグに基づいて、前記反転入力データの選択を抑止するとともに、
前記出力データ選択部は、前記反転抑止フラグに基づいて、前記反転出力データの選択を抑止することを特徴とする請求の範囲第7項記載の記憶装置。 - 前記記憶装置は、後入れ先出しバッファを構成し、
前記入力データ選択部は、前記制御アドレスの最下位ビットと前記反転制御カウンタ値に基づいて、前記入力データ又は前記反転入力データを選択し、
前記出力データ選択部は、前記制御アドレスの最下位ビットと前記反転制御カウンタ値に基づいて、前記出力データ又は前記反転出力データを選択することを特徴とする請求の範囲第7項記載の記憶装置。 - 前記入力データ選択部は、前記反転制御カウンタの下位2ビットの値が0、0の場合には前記入力データを選択し、前記反転制御カウンタの下位2ビットの値が0、1の場合には前記反転入力データを選択し、前記反転制御カウンタの下位2ビットの値が1、0、前記制御アドレスの最下位ビットの値が0であれば前記入力データを選択し、前記反転制御カウンタの下位2ビットの値が1、0、前記制御アドレスの最下位ビットの値が1の場合には前記反転入力データを選択し、前記反転制御カウンタの下位2ビットの値が1、1、前記制御アドレスの最下位ビットの値が0の場合には前記反転入力データを選択し、前記反転制御カウンタの下位2ビットの値が1、1、前記制御アドレスの最下位ビットの値が1の場合には前記入力データを選択することを特徴とする請求の範囲第10項記載の記憶装置。
- 複数のエントリ領域を有する記憶装置の故障診断方法において、
書き込みアドレスカウンタで示される書き込みアドレスに含まれるビットに基づいて、入力データの反転の要否を判断し、
前記入力データの反転が不要であれば、前記入力データを前記書き込みアドレスで示されるエントリ領域に書き込み、
前記入力データの反転が必要であれば、前記入力データを反転した反転入力データを、前記書き込みアドレスで示されるエントリ領域に書き込み、
読み出しアドレスカウンタで示される読み出しアドレスに含まれるビットに基づいて、出力データの反転の要否を判断し、
前記出力データの反転が不要であれば、前記読み出しアドレスで示されるエントリ領域の出力データを読み出して出力し、
前記出力データの反転が必要であれば、前記読み出しアドレスで示されるエントリ領域の出力データを読み出し、読み出した出力データを反転した反転出力データを出力する、
ことを特徴とする故障診断方法。 - 前記書き込みアドレスカウンタは、前記複数のエントリ領域すべてのアドレスを指定するのに必要なビット数の書き込みアドレスビットと、前記書き込みアドレスビットの上位に設けられた1つの制御ビットとを有しており、前記制御ビットに基づいて前記入力データの反転の要否を判断し、
前記読み出しアドレスカウンタは、前記複数のエントリ領域すべてのアドレスを指定するのに必要なビット数の読み出しアドレスビットと、前記読み出しアドレスビットの上位に設けられた1つの制御ビットとを有しており、前記制御ビットに基づいて前記出力データの反転の要否を判断することを特徴とする請求の範囲第12項記載の故障診断方法。 - 前記書き込みアドレスカウンタは、前記複数のエントリ領域すべてのアドレスを指定するのに必要なビット数の書き込みアドレスビットと、前記書き込みアドレスビットの上位に設けられた2つの制御ビットとを有しており、前記制御ビットと前記書き込みアドレスビットの最下位ビットとに基づいて前記入力データの反転の要否を判断し、
前記読み出しアドレスカウンタは、前記複数のエントリ領域すべてのアドレスを指定するのに必要なビット数の読み出しアドレスビットと、前記読み出しアドレスビットの上位に設けられた2つの制御ビットとを有しており、前記制御ビットと前記読み出しアドレスビットの最下位ビットとに基づいて前記出力データの反転の要否を判断することを特徴とする請求の範囲第12項記載の故障診断方法。 - 複数のエントリ領域を有する記憶装置の故障診断方法において、
制御アドレスカウンタが出力する制御アドレスが0から負に遷移した回数を計数した反転制御カウンタ値と、前記制御アドレスカウンタで示される書き込みアドレスに含まれるビットに基づいて、入力データおよび出力データの反転の要否を判断し、
前記入力データの反転が不要であれば、前記入力データを前記書き込みアドレスで示されるエントリ領域に書き込み、
前記入力データの反転が必要であれば、前記入力データを反転した反転入力データを、前記書き込みアドレスで示されるエントリ領域に書き込み、
前記出力データの反転が不要であれば、前記読み出しアドレスで示されるエントリ領域の出力データを読み出して出力し、
前記出力データの反転が必要であれば、前記読み出しアドレスで示されるエントリ領域の出力データを読み出し、読み出した出力データを反転した反転出力データを出力する、
ことを特徴とする故障診断方法。 - 前記制御アドレスカウンタは、前記複数のエントリ領域すべてのアドレスを指定するのに必要なビット数のアドレスビットと、前記複数エントリ領域が空であることを示す制御ビットとを有しており、前記反転制御カウンタが保持する値に基づいて前記入力データおよび前記出力データの反転の要否を判断することを特徴とする請求の範囲第15項記載の故障診断方法。
- 前記制御アドレスカウンタは、前記複数のエントリ領域すべてのアドレスを指定するのに必要なビット数のアドレスビットと、前記複数エントリ領域が空であることを示す制御ビットとを有しており、前記反転制御カウンタが保持する値と前記アドレスビットの最下位ビットとに基づいて前記入力データおよび前記出力データの反転の要否を判断することを特徴とする請求の範囲第15項記載の故障診断方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010541173A JP5278441B2 (ja) | 2008-12-04 | 2008-12-04 | 記憶装置および故障診断方法 |
PCT/JP2008/072029 WO2010064312A1 (ja) | 2008-12-04 | 2008-12-04 | 記憶装置および故障診断方法 |
US13/067,445 US8719659B2 (en) | 2008-12-04 | 2011-06-01 | Storage apparatus and fault diagnosis method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2008/072029 WO2010064312A1 (ja) | 2008-12-04 | 2008-12-04 | 記憶装置および故障診断方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/067,445 Continuation US8719659B2 (en) | 2008-12-04 | 2011-06-01 | Storage apparatus and fault diagnosis method |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2010064312A1 true WO2010064312A1 (ja) | 2010-06-10 |
Family
ID=42232977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2008/072029 WO2010064312A1 (ja) | 2008-12-04 | 2008-12-04 | 記憶装置および故障診断方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8719659B2 (ja) |
JP (1) | JP5278441B2 (ja) |
WO (1) | WO2010064312A1 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012133746A (ja) * | 2010-12-20 | 2012-07-12 | Lsi Corp | メモリ・バックアップ中のデータ操作 |
JP2012247319A (ja) * | 2011-05-27 | 2012-12-13 | Advantest Corp | 試験装置および試験方法 |
WO2014054272A1 (ja) * | 2012-10-03 | 2014-04-10 | 日本電気株式会社 | 無線伝送装置及び無線伝送システム |
US9484116B1 (en) | 2015-08-17 | 2016-11-01 | Advantest Corporation | Test system |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5303325B2 (ja) * | 2009-03-18 | 2013-10-02 | ルネサスエレクトロニクス株式会社 | データ処理装置 |
JP5600963B2 (ja) * | 2010-02-22 | 2014-10-08 | 富士通株式会社 | 不揮発性記憶装置、及びデータ初期化方法 |
US20110246857A1 (en) * | 2010-04-02 | 2011-10-06 | Samsung Electronics Co., Ltd. | Memory system and method |
KR20130086887A (ko) * | 2012-01-26 | 2013-08-05 | 삼성전자주식회사 | 메모리 버퍼, 이를 포함하는 장치들 및 이의 데이터 처리 방법 |
JP2014013635A (ja) * | 2012-07-04 | 2014-01-23 | Sony Corp | 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法 |
US9665973B2 (en) * | 2012-11-20 | 2017-05-30 | Intel Corporation | Depth buffering |
KR102168096B1 (ko) * | 2013-03-15 | 2020-10-20 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 데이터 쓰기 방법 |
US10625752B2 (en) * | 2017-12-12 | 2020-04-21 | Qualcomm Incorporated | System and method for online functional testing for error-correcting code function |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05101698A (ja) * | 1991-10-03 | 1993-04-23 | Nec Ic Microcomput Syst Ltd | 半導体メモリ |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS592057B2 (ja) * | 1979-02-07 | 1984-01-17 | 株式会社日立製作所 | エラ−訂正・検出方式 |
JPH01309154A (ja) | 1988-06-07 | 1989-12-13 | Mitsubishi Electric Corp | 半導体集積回路 |
JPH05165734A (ja) | 1991-12-13 | 1993-07-02 | Nec Commun Syst Ltd | 主記憶装置の固定障害診断装置 |
JP3070025B2 (ja) * | 1992-02-04 | 2000-07-24 | 富士通株式会社 | 半導体記憶装置 |
JPH05298194A (ja) * | 1992-04-17 | 1993-11-12 | Ando Electric Co Ltd | データ入出力端子が複数組のメモリicの検査回路 |
JPH0863905A (ja) * | 1994-08-18 | 1996-03-08 | Hitachi Ltd | 記録再生装置、ディジタル信号処理装置およびエラー訂正方法 |
JP3272903B2 (ja) * | 1995-03-16 | 2002-04-08 | 株式会社東芝 | 誤り訂正検出回路と半導体記憶装置 |
JP2002042493A (ja) * | 2000-07-19 | 2002-02-08 | Mitsubishi Electric Corp | メモリテスト回路 |
JP3570388B2 (ja) * | 2001-04-17 | 2004-09-29 | 日本電気株式会社 | メモリ診断装置及び診断方法 |
US7043679B1 (en) * | 2002-06-27 | 2006-05-09 | Advanced Micro Devices, Inc. | Piggybacking of ECC corrections behind loads |
US7272773B2 (en) * | 2003-04-17 | 2007-09-18 | International Business Machines Corporation | Cache directory array recovery mechanism to support special ECC stuck bit matrix |
JP4742553B2 (ja) * | 2004-09-22 | 2011-08-10 | ソニー株式会社 | 記憶装置 |
JP2006208077A (ja) | 2005-01-26 | 2006-08-10 | Yamaha Corp | 半導体集積回路およびその検査方法 |
JP4936746B2 (ja) * | 2006-03-08 | 2012-05-23 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
JP4889343B2 (ja) * | 2006-03-31 | 2012-03-07 | パナソニック株式会社 | 半導体記憶装置 |
-
2008
- 2008-12-04 WO PCT/JP2008/072029 patent/WO2010064312A1/ja active Application Filing
- 2008-12-04 JP JP2010541173A patent/JP5278441B2/ja not_active Expired - Fee Related
-
2011
- 2011-06-01 US US13/067,445 patent/US8719659B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05101698A (ja) * | 1991-10-03 | 1993-04-23 | Nec Ic Microcomput Syst Ltd | 半導体メモリ |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012133746A (ja) * | 2010-12-20 | 2012-07-12 | Lsi Corp | メモリ・バックアップ中のデータ操作 |
JP2012247319A (ja) * | 2011-05-27 | 2012-12-13 | Advantest Corp | 試験装置および試験方法 |
KR101355140B1 (ko) * | 2011-05-27 | 2014-01-27 | 가부시키가이샤 어드밴티스트 | 시험 장치 및 시험 방법 |
US8718123B2 (en) | 2011-05-27 | 2014-05-06 | Advantest Corporation | Test apparatus and test method |
WO2014054272A1 (ja) * | 2012-10-03 | 2014-04-10 | 日本電気株式会社 | 無線伝送装置及び無線伝送システム |
US9484116B1 (en) | 2015-08-17 | 2016-11-01 | Advantest Corporation | Test system |
KR20170021187A (ko) | 2015-08-17 | 2017-02-27 | 가부시키가이샤 어드밴티스트 | 테스트 시스템, 시험 장치 |
Also Published As
Publication number | Publication date |
---|---|
US8719659B2 (en) | 2014-05-06 |
US20110239090A1 (en) | 2011-09-29 |
JPWO2010064312A1 (ja) | 2012-05-10 |
JP5278441B2 (ja) | 2013-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5278441B2 (ja) | 記憶装置および故障診断方法 | |
CN101615145B (zh) | 一种提高存储器数据缓存可靠性的方法和装置 | |
US7725805B2 (en) | Method and information apparatus for improving data reliability | |
CN101123485B (zh) | iSCSI报文处理方法和装置、错误恢复方法和装置 | |
US20210382692A1 (en) | Processing-in-memory (pim) devices and methods of testing the pim devices | |
JP5401846B2 (ja) | データ転送装置、情報処理装置、データ転送方法 | |
JP2009065547A (ja) | 半導体集積回路装置及びその半導体集積回路装置を備えるストレージ装置 | |
TWI566096B (zh) | 資料儲存系統與其相關方法 | |
US9110796B2 (en) | Apparatus and circuitry for memory-based collection and verification of data integrity information | |
JP5316502B2 (ja) | I/oブリッジ装置、応答通知方法、及びプログラム | |
US20040257931A1 (en) | Recording device and recording method | |
US7383492B2 (en) | First-in/first-out (FIFO) information protection and error detection method and apparatus | |
CN114127700A (zh) | 用于处理分组网络内的刷新请求的装置和方法 | |
JP7521837B1 (ja) | 処理システム、処理方法、およびプログラム | |
CN100357898C (zh) | 一种链表运行时错误检测的方法 | |
US20220050139A1 (en) | System, apparatus and method for communicating debug messages on a sideband of a serial link according to a debug type messaging protocol | |
CN112558979B (zh) | 实现不同层面之间数据交互的方法 | |
EP1570356B1 (fr) | Dispositif de surveillance a memoire tampon optimisee | |
JP2007199754A (ja) | データ蓄積装置及びログデータの保存方法 | |
JPH05341920A (ja) | パラレルディスク装置 | |
TWI242156B (en) | Recording method for improving interrupted interference | |
CN117707427A (zh) | 日志写入方法、装置、电子设备及可读介质 | |
JP2018195260A (ja) | 情報処理装置、プロセッサおよびメモリ送信情報記憶方法 | |
JP2020071729A (ja) | 処理フレームワーク連携装置、処理フレームワーク連携方法および処理フレームワーク連携プログラム | |
JP2004280333A (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: 08878572 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2010541173 Country of ref document: JP |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 08878572 Country of ref document: EP Kind code of ref document: A1 |